diff --git a/Cargo.lock b/Cargo.lock index 1e32ab0f..e8eb30ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -36,6 +36,7 @@ dependencies = [ "cfg-if", "getrandom 0.3.4", "once_cell", + "serde", "version_check", "zerocopy", ] @@ -184,6 +185,18 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed51fe0f224d1d4ea768be38c51f9f831dee9d05c163c11fba0b8c44387b1fc3" +[[package]] +name = "arrayref" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + [[package]] name = "async-stream" version = "0.3.6" @@ -410,6 +423,32 @@ dependencies = [ "serde_core", ] +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake3" +version = "1.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d2d5991425dfd0785aed03aedcf0b321d61975c9b5b3689c774a2610ae0b51e" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", + "cpufeatures 0.3.0", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -428,6 +467,16 @@ dependencies = [ "objc2", ] +[[package]] +name = "borsh" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" +dependencies = [ + "bytes", + "cfg_aliases", +] + [[package]] name = "brotli" version = "7.0.0" @@ -581,6 +630,15 @@ dependencies = [ "toml 0.9.12+spec-1.1.0", ] +[[package]] +name = "caseless" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6fd507454086c8edfd769ca6ada439193cdb209c7681712ef6275cccbfe5d8" +dependencies = [ + "unicode-normalization", +] + [[package]] name = "cassowary" version = "0.3.0" @@ -847,6 +905,23 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "comrak" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac0b255932a9cd52fbfd664b67957f9f2e095ae4711cb0e41b4e291edef94c2" +dependencies = [ + "caseless", + "entities", + "finl_unicode", + "jetscii", + "phf 0.13.1", + "phf_codegen 0.13.1", + "rustc-hash", + "smallvec", + "typed-arena", +] + [[package]] name = "console" version = "0.15.11" @@ -872,6 +947,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "constant_time_eq" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + [[package]] name = "convert_case" version = "0.4.0" @@ -1194,6 +1275,20 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "data-encoding" version = "2.10.0" @@ -1464,6 +1559,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "entities" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" + [[package]] name = "enum_dispatch" version = "0.3.13" @@ -1579,12 +1680,29 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "filetime" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" +dependencies = [ + "cfg-if", + "libc", + "libredox", +] + [[package]] name = "find-msvc-tools" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[package]] +name = "finl_unicode" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9844ddc3a6e533d62bba727eb6c28b5d360921d5175e9ff0f1e621a5c590a4d5" + [[package]] name = "flate2" version = "1.1.9" @@ -1691,6 +1809,21 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futf" version = "0.1.5" @@ -1929,6 +2062,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "getopts" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df" +dependencies = [ + "unicode-width 0.2.0", +] + [[package]] name = "getrandom" version = "0.1.16" @@ -1974,11 +2116,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", "rand_core 0.10.0", "wasip2", "wasip3", + "wasm-bindgen", ] [[package]] @@ -2694,6 +2838,26 @@ dependencies = [ "cfb", ] +[[package]] +name = "inotify" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + [[package]] name = "instability" version = "0.3.12" @@ -2707,6 +2871,15 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", +] + [[package]] name = "inventory" version = "0.3.24" @@ -2830,6 +3003,12 @@ dependencies = [ "system-deps", ] +[[package]] +name = "jetscii" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47f142fe24a9c9944451e8349de0a56af5f3e7226dc46f3ed4d4ecc0b85af75e" + [[package]] name = "jni" version = "0.21.1" @@ -2914,6 +3093,12 @@ dependencies = [ "libc", ] +[[package]] +name = "jotdown" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "086b08ec7a274cd60cd575ed3651ba081ee72dec0d39a6210e8adcff9efe3880" + [[package]] name = "js-sys" version = "0.3.94" @@ -2985,6 +3170,73 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "kqueue" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + +[[package]] +name = "kreuzberg" +version = "4.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b87beac20cc41f81170ca6f0ba76bebc9e2581ff4296af4b22ca5be1c32abbad" +dependencies = [ + "ahash", + "async-trait", + "base64 0.22.1", + "bitvec", + "blake3", + "bytes", + "comrak", + "dashmap", + "dirs 6.0.0", + "encoding_rs", + "getrandom 0.4.2", + "hex", + "indexmap 2.13.1", + "infer", + "jotdown", + "libc", + "log", + "memchr", + "memmap2", + "mime_guess", + "num_cpus", + "once_cell", + "parking_lot", + "pastey", + "pkg-config", + "pulldown-cmark", + "rayon", + "regex", + "rmp-serde", + "serde", + "serde_json", + "serde_toon_format", + "serde_yaml_ng", + "simdutf8", + "thiserror 2.0.18", + "tokio", + "toml 1.1.2+spec-1.1.0", + "tracing", + "urlencoding", +] + [[package]] name = "kuchikiki" version = "0.8.8-speedreader" @@ -3071,7 +3323,10 @@ version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ddbf48fd451246b1f8c2610bd3b4ac0cc6e149d89832867093ab69a17194f08" dependencies = [ + "bitflags 2.11.0", "libc", + "plain", + "redox_syscall 0.7.3", ] [[package]] @@ -3273,6 +3528,16 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "mime_guess" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -3412,26 +3677,40 @@ dependencies = [ ] [[package]] -name = "now" -version = "0.1.3" +name = "notify" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d89e9874397a1f0a52fc1f197a8effd9735223cb2390e9dcc83ac6cd02923d0" +checksum = "c533b4c39709f9ba5005d8002048266593c1cfaf3c5f0739d5b8ab0c6c504009" dependencies = [ - "chrono", + "bitflags 2.11.0", + "filetime", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "notify-types", + "walkdir", + "windows-sys 0.52.0", ] [[package]] -name = "sensibleql-tests" -version = "0.1.0" +name = "notify-types" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585d3cb5e12e01aed9e8a1f70d5c6b5e86fe2a6e48fc8cd0b3e0b8df6f6eb174" dependencies = [ - "anyhow", - "base64 0.22.1", - "clap", - "futures", - "octocrab", - "serde", - "sha2", - "tokio", + "instant", +] + +[[package]] +name = "now" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d89e9874397a1f0a52fc1f197a8effd9735223cb2390e9dcc83ac6cd02923d0" +dependencies = [ + "chrono", ] [[package]] @@ -3835,7 +4114,7 @@ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.18", "smallvec", "windows-link 0.2.1", ] @@ -3846,6 +4125,12 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +[[package]] +name = "pastey" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b867cad97c0791bbd3aaa6472142568c6c9e8f71937e98379f584cfb0cf35bec" + [[package]] name = "pathdiff" version = "0.2.3" @@ -4148,6 +4433,12 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "plain" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" + [[package]] name = "planus" version = "0.3.1" @@ -4897,6 +5188,25 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "pulldown-cmark" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c3a14896dfa883796f1cb410461aef38810ea05f2b2c33c5aded3649095fdad" +dependencies = [ + "bitflags 2.11.0", + "getopts", + "memchr", + "pulldown-cmark-escape", + "unicase", +] + +[[package]] +name = "pulldown-cmark-escape" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "007d8adb5ddab6f8e3f491ac63566a7d5002cc7ed73901f72057943fa71ae1ae" + [[package]] name = "quick-error" version = "1.2.3" @@ -4998,6 +5308,12 @@ version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rancor" version = "0.1.1" @@ -5238,6 +5554,15 @@ dependencies = [ "bitflags 2.11.0", ] +[[package]] +name = "redox_syscall" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16" +dependencies = [ + "bitflags 2.11.0", +] + [[package]] name = "redox_users" version = "0.4.6" @@ -5465,6 +5790,25 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "rmp" +version = "0.8.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ba8be72d372b2c9b35542551678538b562e7cf86c3315773cae48dfbfe7790c" +dependencies = [ + "num-traits", +] + +[[package]] +name = "rmp-serde" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72f81bee8c8ef9b577d1681a70ebbc962c232461e397b22c208c43c04b67a155" +dependencies = [ + "rmp", + "serde", +] + [[package]] name = "rustc-demangle" version = "0.1.27" @@ -5938,9 +6282,14 @@ version = "0.1.0" dependencies = [ "bumpalo", "dirs 6.0.0", + "futures-util", + "kreuzberg", + "notify", + "reqwest 0.12.28", "sensibledb-db", "serde", "serde_json", + "sha2", "tauri", "tauri-build", "tauri-plugin-store", @@ -5976,6 +6325,20 @@ dependencies = [ "uuid", ] +[[package]] +name = "sensibleql-tests" +version = "0.1.0" +dependencies = [ + "anyhow", + "base64 0.22.1", + "clap", + "futures", + "octocrab", + "serde", + "sha2", + "tokio", +] + [[package]] name = "serde" version = "1.0.228" @@ -6083,6 +6446,22 @@ dependencies = [ "serde_core", ] +[[package]] +name = "serde_toon_format" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45abc88be1b465c1676fbbe94f866e872d3e9c22b3c10de6e1d90ae76dd45d51" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", + "serde_json", + "smallvec", + "smol_str", + "thiserror 2.0.18", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -6126,6 +6505,19 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "serde_yaml_ng" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4db627b98b36d4203a7b458cf3573730f2bb591b28871d916dfa9efabfd41f" +dependencies = [ + "indexmap 2.13.1", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + [[package]] name = "serial_test" version = "3.4.0" @@ -6351,6 +6743,16 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" +[[package]] +name = "smol_str" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523" +dependencies = [ + "borsh", + "serde_core", +] + [[package]] name = "snafu" version = "0.8.9" @@ -6403,7 +6805,7 @@ dependencies = [ "objc2-foundation", "objc2-quartz-core", "raw-window-handle", - "redox_syscall", + "redox_syscall 0.5.18", "tracing", "wasm-bindgen", "web-sys", @@ -6780,6 +7182,12 @@ dependencies = [ "syn 2.0.117", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "target-lexicon" version = "0.12.16" @@ -7619,6 +8027,12 @@ dependencies = [ "rand 0.9.2", ] +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + [[package]] name = "typeid" version = "1.0.3" @@ -7684,6 +8098,12 @@ dependencies = [ "unic-common", ] +[[package]] +name = "unicase" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" + [[package]] name = "unicode-ident" version = "1.0.24" @@ -7755,6 +8175,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3" +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + [[package]] name = "untrusted" version = "0.9.0" @@ -8936,6 +9362,15 @@ dependencies = [ "x11-dl", ] +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "x11" version = "2.21.0" diff --git a/sensibledb-explorer/Cargo.toml b/sensibledb-explorer/Cargo.toml index 78fe6782..6536a76e 100644 --- a/sensibledb-explorer/Cargo.toml +++ b/sensibledb-explorer/Cargo.toml @@ -18,5 +18,20 @@ uuid = { version = "1", features = ["v6", "fast-rng"] } bumpalo = { version = "3.19.0", features = ["collections", "boxed", "serde"] } dirs = "6" +# Ollama client & HTTP +reqwest = { version = "0.12", features = ["json", "stream"] } + +# Document parsing +kreuzberg = "4" + +# File hashing for change detection +sha2 = "0.10" + +# File watching +notify = "7" + +# Progress streaming +futures-util = "0.3" + [build-dependencies] tauri-build = { version = "2", features = [] } diff --git a/sensibledb-explorer/src/commands/ingestion.rs b/sensibledb-explorer/src/commands/ingestion.rs new file mode 100644 index 00000000..5af51cd8 --- /dev/null +++ b/sensibledb-explorer/src/commands/ingestion.rs @@ -0,0 +1,475 @@ +use crate::ollama::client::{OllamaClient, ChatMessage}; +use crate::AppState; +use sensibledb_db::embedded::error::Error as DbError; +use sensibledb_db::embedded::transaction::WriteTransaction; +use serde::{Deserialize, Serialize}; +use std::sync::PoisonError; + +#[derive(Serialize, Deserialize)] +pub struct IngestionResult { + pub chunk_count: usize, + pub entity_count: usize, + pub document_id: String, +} + +#[derive(Serialize, Deserialize)] +pub struct DocumentChunk { + pub id: String, + pub content: String, + pub metadata: serde_json::Value, +} + +#[derive(Serialize, Deserialize, Clone)] +pub struct ExtractedEntity { + pub subject: String, + pub predicate: String, + pub object: String, +} + +#[tauri::command] +pub async fn ingest_document( + state: tauri::State<'_, AppState>, + file_path: String, + db_name: String, + ollama_url: Option, + embedding_model: Option, +) -> Result { + let content = std::fs::read_to_string(&file_path) + .map_err(|e| format!("Failed to read file: {}", e))?; + + let extension = std::path::Path::new(&file_path) + .extension() + .and_then(|e| e.to_str()) + .unwrap_or("txt"); + + let file_type = match extension { + "md" | "markdown" => "markdown", + "csv" => "csv", + "json" => "json", + _ => "txt", + }; + + let chunks = chunk_text(content, file_type.to_string())?; + let chunk_count = chunks.len(); + + let chunk_texts: Vec = chunks.iter().map(|c| c.content.clone()).collect(); + + let entities = extract_entities_from_chunks( + chunk_texts, + embedding_model, + ollama_url, + ).await?; + + let entity_count = entities.len(); + let document_id = uuid_simple(); + + let dbs = state.databases.lock().map_err(|e: PoisonError<_>| e.to_string())?; + + if let Some(db) = dbs.get(&db_name) { + let mut tx = (**db).write_transaction().map_err(|e: DbError| e.to_string())?; + + let doc_node_id: u128 = 1; + tx.put_node(sensibledb_db::embedded::transaction::Node { + id: doc_node_id, + label: format!("Document:{}", document_id), + }).map_err(|e: DbError| e.to_string())?; + + for (i, chunk) in chunks.iter().enumerate() { + let chunk_id: u128 = (i as u128) + 10; + tx.put_node(sensibledb_db::embedded::transaction::Node { + id: chunk_id, + label: format!("Chunk:{}", chunk.id), + }).map_err(|e: DbError| e.to_string())?; + + tx.put_edge(sensibledb_db::embedded::transaction::Edge { + id: (i as u128) + 100, + label: "HAS_CHUNK".to_string(), + from: doc_node_id, + to: chunk_id, + }).map_err(|e: DbError| e.to_string())?; + } + + for (i, entity) in entities.iter().enumerate() { + let subject_id: u128 = (i as u128) * 3 + 1000; + let object_id: u128 = (i as u128) * 3 + 1001; + let edge_id: u128 = (i as u128) * 3 + 1002; + + tx.put_node(sensibledb_db::embedded::transaction::Node { + id: subject_id, + label: format!("Entity:{}", entity.subject), + }).map_err(|e: DbError| e.to_string())?; + + tx.put_node(sensibledb_db::embedded::transaction::Node { + id: object_id, + label: format!("Entity:{}", entity.object), + }).map_err(|e: DbError| e.to_string())?; + + tx.put_edge(sensibledb_db::embedded::transaction::Edge { + id: edge_id, + label: entity.predicate.clone(), + from: subject_id, + to: object_id, + }).map_err(|e: DbError| e.to_string())?; + + tx.put_edge(sensibledb_db::embedded::transaction::Edge { + id: edge_id + 10000, + label: "RELATES_TO".to_string(), + from: doc_node_id, + to: subject_id, + }).map_err(|e: DbError| e.to_string())?; + } + + tx.commit().map_err(|e: DbError| e.to_string())?; + } + + Ok(IngestionResult { + chunk_count, + entity_count, + document_id, + }) +} + +fn uuid_simple() -> String { + use std::time::{SystemTime, UNIX_EPOCH}; + let now = SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_nanos(); + format!("doc_{:x}", now) +} + +#[tauri::command] +pub fn chunk_text(content: String, file_type: String) -> Result, String> { + match file_type.as_str() { + "csv" => chunk_csv(&content), + "markdown" => chunk_markdown(&content), + "json" => chunk_json(&content), + "txt" => chunk_txt(&content), + _ => chunk_txt(&content), + } +} + +fn chunk_csv(content: &str) -> Result, String> { + let mut chunks = Vec::new(); + let lines: Vec<&str> = content.lines().collect(); + + if lines.is_empty() { + return Ok(chunks); + } + + let headers: Vec<&str> = lines[0].split(',').map(|s| s.trim()).collect(); + + for (i, line) in lines.iter().skip(1).enumerate() { + let values: Vec<&str> = line.split(',').map(|s| s.trim()).collect(); + let mut row_data = serde_json::Map::new(); + + for (j, header) in headers.iter().enumerate() { + let value = values.get(j).unwrap_or(&""); + row_data.insert(header.to_string(), serde_json::Value::String(value.to_string())); + } + + let chunk_id = format!("csv_chunk_{}", i + 1); + let content_str = row_data + .iter() + .map(|(k, v)| format!("{}: {}", k, v)) + .collect::>() + .join(", "); + + chunks.push(DocumentChunk { + id: chunk_id, + content: content_str, + metadata: serde_json::Value::Object(row_data), + }); + } + + Ok(chunks) +} + +fn chunk_markdown(content: &str) -> Result, String> { + let mut chunks = Vec::new(); + let mut current_chunk = String::new(); + let mut chunk_index = 0; + + for line in content.lines() { + if line.starts_with("## ") { + if !current_chunk.is_empty() { + chunk_index += 1; + chunks.push(DocumentChunk { + id: format!("md_chunk_{}", chunk_index), + content: current_chunk.trim().to_string(), + metadata: serde_json::json!({ "type": "markdown_section" }), + }); + } + current_chunk = line.to_string(); + } else { + if !current_chunk.is_empty() || !line.is_empty() { + current_chunk.push_str("\n"); + current_chunk.push_str(line); + } + } + } + + if !current_chunk.is_empty() { + chunk_index += 1; + chunks.push(DocumentChunk { + id: format!("md_chunk_{}", chunk_index), + content: current_chunk.trim().to_string(), + metadata: serde_json::json!({ "type": "markdown_section" }), + }); + } + + if chunks.is_empty() { + chunks.push(DocumentChunk { + id: "md_chunk_1".to_string(), + content: content.trim().to_string(), + metadata: serde_json::json!({ "type": "markdown_section" }), + }); + } + + Ok(chunks) +} + +fn chunk_json(content: &str) -> Result, String> { + let mut chunks = Vec::new(); + + if let Ok(arr) = serde_json::from_str::(content) { + if let serde_json::Value::Array(items) = arr { + for (i, item) in items.iter().enumerate() { + let chunk_id = format!("json_chunk_{}", i + 1); + let content_str = item.to_string(); + let metadata = serde_json::json!({ + "type": "json_object", + "index": i + }); + + chunks.push(DocumentChunk { + id: chunk_id, + content: content_str, + metadata, + }); + } + return Ok(chunks); + } + } + + chunks.push(DocumentChunk { + id: "json_chunk_1".to_string(), + content: content.to_string(), + metadata: serde_json::json!({ "type": "json_object" }), + }); + + Ok(chunks) +} + +fn chunk_txt(content: &str) -> Result, String> { + let mut chunks = Vec::new(); + let paragraphs: Vec<&str> = content.split("\n\n").collect(); + let mut chunk_index = 0; + + for para in paragraphs { + let trimmed = para.trim(); + if !trimmed.is_empty() { + chunk_index += 1; + chunks.push(DocumentChunk { + id: format!("txt_chunk_{}", chunk_index), + content: trimmed.to_string(), + metadata: serde_json::json!({ "type": "text_paragraph" }), + }); + } + } + + if chunks.is_empty() { + chunks.push(DocumentChunk { + id: "txt_chunk_1".to_string(), + content: content.trim().to_string(), + metadata: serde_json::json!({ "type": "text_paragraph" }), + }); + } + + Ok(chunks) +} + +#[tauri::command] +pub async fn extract_entities_from_chunks( + chunks: Vec, + model: Option, + ollama_url: Option, +) -> Result, String> { + let model_name = model.unwrap_or_else(|| "qwen2.5-coder:3b".to_string()); + let client = OllamaClient::new(ollama_url); + + let system_prompt = "Extract entity relationships as triples. Format: subject|predicate|object. One per line. Be concise.".to_string(); + + let mut all_entities = Vec::new(); + + for chunk in chunks { + let user_prompt = format!("Extract triples from:\n{}", chunk); + + let messages = vec![ + ChatMessage { + role: "system".to_string(), + content: system_prompt.clone(), + }, + ChatMessage { + role: "user".to_string(), + content: user_prompt, + }, + ]; + + match client.chat_completion(&model_name, messages).await { + Ok(response_text) => { + for line in response_text.lines() { + let trimmed = line.trim(); + if !trimmed.is_empty() { + let parts: Vec<&str> = trimmed.split('|').collect(); + if parts.len() == 3 { + all_entities.push(ExtractedEntity { + subject: parts[0].trim().to_string(), + predicate: parts[1].trim().to_string(), + object: parts[2].trim().to_string(), + }); + } + } + } + } + Err(e) => { + eprintln!("Failed to extract entities from chunk: {}", e); + } + } + } + + Ok(all_entities) +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_chunk_text_csv_multiple_rows() { + let content = "name,age,city\nAlice,30,NYC\nBob,25,LA\nCharlie,35,Chicago"; + let result = chunk_text(content.to_string(), "csv".to_string()).unwrap(); + assert_eq!(result.len(), 3); + assert!(result[0].content.contains("Alice")); + assert!(result[0].content.contains("30")); + assert!(result[1].content.contains("Bob")); + } + + #[test] + fn test_chunk_text_markdown_with_headings() { + let content = "## Introduction\nThis is the intro text.\n\n## Features\nHere are the features.\n\n## Conclusion\nThat's all."; + let result = chunk_text(content.to_string(), "markdown".to_string()).unwrap(); + assert!(result.len() >= 3); + assert!(result[0].content.contains("## Introduction")); + } + + #[test] + fn test_chunk_text_json_array() { + let content = r#"[{"id":1,"name":"item1"},{"id":2,"name":"item2"},{"id":3,"name":"item3"}]"#; + let result = chunk_text(content.to_string(), "json".to_string()).unwrap(); + assert_eq!(result.len(), 3); + assert!(result[0].content.contains("item1")); + } + + #[test] + fn test_chunk_text_json_object() { + let content = r#"{"name":"test","value":42,"items":["a","b","c"]}"#; + let result = chunk_text(content.to_string(), "json".to_string()).unwrap(); + assert_eq!(result.len(), 1); + assert!(result[0].content.contains("test")); + } + + #[test] + fn test_chunk_text_txt_paragraphs() { + let content = "First paragraph here.\n\nSecond paragraph here.\n\nThird paragraph here."; + let result = chunk_text(content.to_string(), "txt".to_string()).unwrap(); + assert!(result.len() >= 3); + assert!(result[0].content.contains("First")); + } + + #[test] + fn test_chunk_text_empty_content() { + let result = chunk_text("".to_string(), "txt".to_string()).unwrap(); + assert!(result.len() >= 1); + } + + #[test] + fn test_chunk_text_unknown_file_type() { + let content = "Some content with\n\nparagraphs."; + let result = chunk_text(content.to_string(), "bin".to_string()).unwrap(); + assert!(result.len() >= 1); + } + + #[test] + fn test_chunk_csv_with_empty_lines() { + let content = "name,value\nitem1,100\n\nitem2,200\n\nitem3,300"; + let result = chunk_csv(content).unwrap(); + assert_eq!(result.len(), 5); + } + + #[test] + fn test_chunk_markdown_no_headings() { + let content = "This is just plain text without any headings."; + let result = chunk_markdown(content).unwrap(); + assert!(result.len() >= 1); + assert!(result[0].content.contains("plain text")); + } + + #[test] + fn test_chunk_json_invalid_json() { + let content = "not valid json at all"; + let result = chunk_json(content).unwrap(); + assert_eq!(result.len(), 1); + assert!(result[0].content.contains("not valid json")); + } + + #[test] + fn test_uuid_simple_unique_ids() { + let id1 = uuid_simple(); + let id2 = uuid_simple(); + assert_ne!(id1, id2); + assert!(id1.starts_with("doc_")); + assert!(id2.starts_with("doc_")); + } + + #[test] + fn test_extracted_entity_serialization_roundtrip() { + let entity = ExtractedEntity { + subject: "Alice".to_string(), + predicate: "lives in".to_string(), + object: "NYC".to_string(), + }; + let json = serde_json::to_string(&entity).unwrap(); + let parsed: ExtractedEntity = serde_json::from_str(&json).unwrap(); + assert_eq!(parsed.subject, "Alice"); + assert_eq!(parsed.predicate, "lives in"); + assert_eq!(parsed.object, "NYC"); + } + + #[test] + fn test_document_chunk_serialization_roundtrip() { + let chunk = DocumentChunk { + id: "chunk_1".to_string(), + content: "Test content".to_string(), + metadata: serde_json::json!({"type": "test", "index": 0}), + }; + let json = serde_json::to_string(&chunk).unwrap(); + let parsed: DocumentChunk = serde_json::from_str(&json).unwrap(); + assert_eq!(parsed.id, "chunk_1"); + assert_eq!(parsed.content, "Test content"); + } + + #[test] + fn test_ingestion_result_serialization_roundtrip() { + let result = IngestionResult { + chunk_count: 5, + entity_count: 10, + document_id: "doc_abc123".to_string(), + }; + let json = serde_json::to_string(&result).unwrap(); + let parsed: IngestionResult = serde_json::from_str(&json).unwrap(); + assert_eq!(parsed.chunk_count, 5); + assert_eq!(parsed.entity_count, 10); + assert_eq!(parsed.document_id, "doc_abc123"); + } +} diff --git a/sensibledb-explorer/src/commands/mod.rs b/sensibledb-explorer/src/commands/mod.rs index f17eaac0..622ba811 100644 --- a/sensibledb-explorer/src/commands/mod.rs +++ b/sensibledb-explorer/src/commands/mod.rs @@ -1,11 +1,15 @@ pub mod database; pub mod edges; +pub mod ingestion; pub mod nodes; +pub mod ollama; pub mod schema; pub mod sensibleql; pub use database::*; pub use edges::*; +pub use ingestion::*; pub use nodes::*; +pub use ollama::*; pub use schema::*; pub use sensibleql::*; diff --git a/sensibledb-explorer/src/commands/ollama.rs b/sensibledb-explorer/src/commands/ollama.rs new file mode 100644 index 00000000..3bbbd4ae --- /dev/null +++ b/sensibledb-explorer/src/commands/ollama.rs @@ -0,0 +1,178 @@ +use crate::ollama::client::{OllamaClient, ChatMessage}; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize)] +pub struct OllamaStatusResult { + pub available: bool, + pub url: String, + pub version: Option, + pub models: Vec, +} + +#[derive(Serialize, Deserialize)] +pub struct ModelInfo { + pub name: String, + pub size: u64, + pub digest: String, + pub modified_at: String, +} + +#[derive(Serialize, Deserialize)] +pub struct PullProgressResult { + pub status: String, + pub percent: f64, +} + +#[derive(Deserialize)] +pub struct EmbeddingRequest { + pub model: String, + pub texts: Vec, +} + +#[derive(Serialize)] +pub struct EmbeddingResult { + pub embeddings: Vec>, +} + +#[derive(Deserialize)] +pub struct NLToSensibleQLRequest { + pub query: String, + pub schema_info: Option, + pub db_name: String, +} + +#[derive(Serialize)] +pub struct NLToSensibleQLResult { + pub sensibleql: String, + pub explanation: String, +} + +#[tauri::command] +pub async fn ollama_check_status(ollama_url: Option) -> Result { + let client = OllamaClient::new(ollama_url); + let status = client.check_status().await?; + Ok(OllamaStatusResult { + available: status.available, + url: status.url, + version: status.version, + models: status.models.into_iter().map(|m| ModelInfo { + name: m.name, + size: m.size, + digest: m.digest, + modified_at: m.modified_at, + }).collect(), + }) +} + +#[tauri::command] +pub async fn ollama_pull_model(model: String, ollama_url: Option) -> Result, String> { + let client = OllamaClient::new(ollama_url); + let progress: Vec = client.pull_model(&model).await?; + Ok(progress.into_iter().map(|p| { + let percent = match (&p.completed, &p.total) { + (Some(c), Some(t)) if *t > 0 => (*c as f64 / *t as f64) * 100.0, + _ => 0.0, + }; + PullProgressResult { + status: p.status, + percent, + } + }).collect()) +} + +#[tauri::command] +pub async fn generate_embeddings( + request: EmbeddingRequest, + ollama_url: Option, +) -> Result { + let client = OllamaClient::new(ollama_url); + let embeddings = client.generate_embeddings(&request.model, request.texts).await?; + Ok(EmbeddingResult { embeddings }) +} + +#[tauri::command] +pub async fn translate_nl_to_sensibleql( + request: NLToSensibleQLRequest, + model: Option, + ollama_url: Option, +) -> Result { + let model_name = model.unwrap_or_else(|| "qwen2.5-coder:3b".to_string()); + let client = OllamaClient::new(ollama_url); + + let schema_context = request.schema_info + .map(|s| format!("\nDatabase Schema:\n{}", s)) + .unwrap_or_default(); + + let system_prompt = format!( + "You are a SensibleQL expert. SensibleQL is a graph query language similar to Cypher. \ + Convert natural language questions into SensibleQL queries.\n\ + \nSensibleQL Syntax Examples:\n\ + - MATCH (n) RETURN n -- Get all nodes\n\ + - MATCH (n:Person) RETURN n -- Get all Person nodes\n\ + - MATCH (n:Person)-[r]-(m) RETURN n, r, m -- Get Person connections\n\ + - MATCH (n:Person)--(m:Task) RETURN n, m -- Get Person-Task relationships\n\ + - COUNT nodes -- Count all nodes\n\ + - COUNT edges -- Count all edges\n\ + - MATCH (n:Symptom)<-[r]-(m) RETURN n, r, m -- Get what causes a symptom\n\ + \nNode labels use format Type:Name (e.g., Person:Alice, Task:DesignMockups)\n\ + Edge labels are uppercase (e.g., WORKS_AT, TRIGGERED, BLOCKS, OWNS)\n\ + \nReturn ONLY the SensibleQL query, nothing else. If you cannot convert, return the original question.{}", + schema_context + ); + + let messages = vec![ + ChatMessage { + role: "system".to_string(), + content: system_prompt, + }, + ChatMessage { + role: "user".to_string(), + content: format!("Convert this to SensibleQL: {}", request.query), + }, + ]; + + let response: String = client.chat_completion(&model_name, messages).await?; + + let sensibleql = response.trim().to_string(); + + let explanation = generate_explanation(&sensibleql, &request.query); + + Ok(NLToSensibleQLResult { + sensibleql, + explanation, + }) +} + +fn generate_explanation(sensibleql: &str, _query: &str) -> String { + let lower = sensibleql.to_lowercase(); + if lower.starts_with("match") { + if lower.contains("count") { + "Counting matching nodes/edges".to_string() + } else if lower.contains(")-[") || lower.contains("]-(") { + "Finding connected nodes and relationships".to_string() + } else if let Some(label) = extract_label(sensibleql) { + format!("Retrieving all {} nodes", label) + } else { + "Retrieving graph data".to_string() + } + } else if lower.starts_with("count") { + if lower.contains("edge") { + "Counting all edges in the graph".to_string() + } else { + "Counting all nodes in the graph".to_string() + } + } else { + "Executing query".to_string() + } +} + +fn extract_label(query: &str) -> Option { + if let Some(start) = query.find(':') { + let rest = &query[start + 1..]; + let end = rest.find(|c: char| !c.is_alphanumeric() && c != '_').unwrap_or(rest.len()); + if end > 0 { + return Some(rest[..end].to_string()); + } + } + None +} diff --git a/sensibledb-explorer/src/frontend/coverage/base.css b/sensibledb-explorer/src/frontend/coverage/base.css new file mode 100644 index 00000000..f418035b --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/base.css @@ -0,0 +1,224 @@ +body, html { + margin:0; padding: 0; + height: 100%; +} +body { + font-family: Helvetica Neue, Helvetica, Arial; + font-size: 14px; + color:#333; +} +.small { font-size: 12px; } +*, *:after, *:before { + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box; + } +h1 { font-size: 20px; margin: 0;} +h2 { font-size: 14px; } +pre { + font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; + margin: 0; + padding: 0; + -moz-tab-size: 2; + -o-tab-size: 2; + tab-size: 2; +} +a { color:#0074D9; text-decoration:none; } +a:hover { text-decoration:underline; } +.strong { font-weight: bold; } +.space-top1 { padding: 10px 0 0 0; } +.pad2y { padding: 20px 0; } +.pad1y { padding: 10px 0; } +.pad2x { padding: 0 20px; } +.pad2 { padding: 20px; } +.pad1 { padding: 10px; } +.space-left2 { padding-left:55px; } +.space-right2 { padding-right:20px; } +.center { text-align:center; } +.clearfix { display:block; } +.clearfix:after { + content:''; + display:block; + height:0; + clear:both; + visibility:hidden; + } +.fl { float: left; } +@media only screen and (max-width:640px) { + .col3 { width:100%; max-width:100%; } + .hide-mobile { display:none!important; } +} + +.quiet { + color: #7f7f7f; + color: rgba(0,0,0,0.5); +} +.quiet a { opacity: 0.7; } + +.fraction { + font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-size: 10px; + color: #555; + background: #E8E8E8; + padding: 4px 5px; + border-radius: 3px; + vertical-align: middle; +} + +div.path a:link, div.path a:visited { color: #333; } +table.coverage { + border-collapse: collapse; + margin: 10px 0 0 0; + padding: 0; +} + +table.coverage td { + margin: 0; + padding: 0; + vertical-align: top; +} +table.coverage td.line-count { + text-align: right; + padding: 0 5px 0 20px; +} +table.coverage td.line-coverage { + text-align: right; + padding-right: 10px; + min-width:20px; +} + +table.coverage td span.cline-any { + display: inline-block; + padding: 0 5px; + width: 100%; +} +.missing-if-branch { + display: inline-block; + margin-right: 5px; + border-radius: 3px; + position: relative; + padding: 0 4px; + background: #333; + color: yellow; +} + +.skip-if-branch { + display: none; + margin-right: 10px; + position: relative; + padding: 0 4px; + background: #ccc; + color: white; +} +.missing-if-branch .typ, .skip-if-branch .typ { + color: inherit !important; +} +.coverage-summary { + border-collapse: collapse; + width: 100%; +} +.coverage-summary tr { border-bottom: 1px solid #bbb; } +.keyline-all { border: 1px solid #ddd; } +.coverage-summary td, .coverage-summary th { padding: 10px; } +.coverage-summary tbody { border: 1px solid #bbb; } +.coverage-summary td { border-right: 1px solid #bbb; } +.coverage-summary td:last-child { border-right: none; } +.coverage-summary th { + text-align: left; + font-weight: normal; + white-space: nowrap; +} +.coverage-summary th.file { border-right: none !important; } +.coverage-summary th.pct { } +.coverage-summary th.pic, +.coverage-summary th.abs, +.coverage-summary td.pct, +.coverage-summary td.abs { text-align: right; } +.coverage-summary td.file { white-space: nowrap; } +.coverage-summary td.pic { min-width: 120px !important; } +.coverage-summary tfoot td { } + +.coverage-summary .sorter { + height: 10px; + width: 7px; + display: inline-block; + margin-left: 0.5em; + background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; +} +.coverage-summary .sorted .sorter { + background-position: 0 -20px; +} +.coverage-summary .sorted-desc .sorter { + background-position: 0 -10px; +} +.status-line { height: 10px; } +/* yellow */ +.cbranch-no { background: yellow !important; color: #111; } +/* dark red */ +.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } +.low .chart { border:1px solid #C21F39 } +.highlighted, +.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ + background: #C21F39 !important; +} +/* medium red */ +.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +/* light red */ +.low, .cline-no { background:#FCE1E5 } +/* light green */ +.high, .cline-yes { background:rgb(230,245,208) } +/* medium green */ +.cstat-yes { background:rgb(161,215,106) } +/* dark green */ +.status-line.high, .high .cover-fill { background:rgb(77,146,33) } +.high .chart { border:1px solid rgb(77,146,33) } +/* dark yellow (gold) */ +.status-line.medium, .medium .cover-fill { background: #f9cd0b; } +.medium .chart { border:1px solid #f9cd0b; } +/* light yellow */ +.medium { background: #fff4c2; } + +.cstat-skip { background: #ddd; color: #111; } +.fstat-skip { background: #ddd; color: #111 !important; } +.cbranch-skip { background: #ddd !important; color: #111; } + +span.cline-neutral { background: #eaeaea; } + +.coverage-summary td.empty { + opacity: .5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; +} + +.cover-fill, .cover-empty { + display:inline-block; + height: 12px; +} +.chart { + line-height: 0; +} +.cover-empty { + background: white; +} +.cover-full { + border-right: none !important; +} +pre.prettyprint { + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { color: #999 !important; } +.ignore-none { color: #999; font-weight: normal; } + +.wrapper { + min-height: 100%; + height: auto !important; + height: 100%; + margin: 0 auto -48px; +} +.footer, .push { + height: 48px; +} diff --git a/sensibledb-explorer/src/frontend/coverage/block-navigation.js b/sensibledb-explorer/src/frontend/coverage/block-navigation.js new file mode 100644 index 00000000..530d1ed2 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/block-navigation.js @@ -0,0 +1,87 @@ +/* eslint-disable */ +var jumpToCode = (function init() { + // Classes of code we would like to highlight in the file view + var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; + + // Elements to highlight in the file listing view + var fileListingElements = ['td.pct.low']; + + // We don't want to select elements that are direct descendants of another match + var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` + + // Selector that finds elements on the page to which we can jump + var selector = + fileListingElements.join(', ') + + ', ' + + notSelector + + missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` + + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); + + var currentIndex; + + function toggleClass(index) { + missingCoverageElements + .item(currentIndex) + .classList.remove('highlighted'); + missingCoverageElements.item(index).classList.add('highlighted'); + } + + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== 'number' || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; + } + + makeCurrent(nextIndex); + } + + function goToNext() { + var nextIndex = 0; + + if ( + typeof currentIndex === 'number' && + currentIndex < missingCoverageElements.length - 1 + ) { + nextIndex = currentIndex + 1; + } + + makeCurrent(nextIndex); + } + + return function jump(event) { + if ( + document.getElementById('fileSearch') === document.activeElement && + document.activeElement != null + ) { + // if we're currently focused on the search input, we don't want to navigate + return; + } + + switch (event.which) { + case 78: // n + case 74: // j + goToNext(); + break; + case 66: // b + case 75: // k + case 80: // p + goToPrevious(); + break; + } + }; +})(); +window.addEventListener('keydown', jumpToCode); diff --git a/sensibledb-explorer/src/frontend/coverage/clover.xml b/sensibledb-explorer/src/frontend/coverage/clover.xml new file mode 100644 index 00000000..9871a510 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/clover.xml @@ -0,0 +1,1799 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sensibledb-explorer/src/frontend/coverage/coverage-final.json b/sensibledb-explorer/src/frontend/coverage/coverage-final.json new file mode 100644 index 00000000..723a059d --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/coverage-final.json @@ -0,0 +1,25 @@ +{"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/App.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/App.tsx","statementMap":{"0":{"start":{"line":19,"column":19},"end":{"line":31,"column":null}},"1":{"start":{"line":20,"column":2},"end":{"line":30,"column":null}},"2":{"start":{"line":21,"column":18},"end":{"line":21,"column":null}},"3":{"start":{"line":22,"column":4},"end":{"line":22,"column":null}},"4":{"start":{"line":23,"column":18},"end":{"line":23,"column":null}},"5":{"start":{"line":24,"column":4},"end":{"line":24,"column":null}},"6":{"start":{"line":25,"column":19},"end":{"line":25,"column":null}},"7":{"start":{"line":26,"column":4},"end":{"line":26,"column":null}},"8":{"start":{"line":28,"column":19},"end":{"line":28,"column":null}},"9":{"start":{"line":29,"column":4},"end":{"line":29,"column":null}},"10":{"start":{"line":33,"column":6},"end":{"line":172,"column":null}},"11":{"start":{"line":34,"column":2},"end":{"line":52,"column":null}},"12":{"start":{"line":35,"column":4},"end":{"line":44,"column":null}},"13":{"start":{"line":36,"column":18},"end":{"line":36,"column":null}},"14":{"start":{"line":37,"column":6},"end":{"line":37,"column":null}},"15":{"start":{"line":38,"column":6},"end":{"line":42,"column":null}},"16":{"start":{"line":39,"column":24},"end":{"line":39,"column":null}},"17":{"start":{"line":40,"column":8},"end":{"line":40,"column":null}},"18":{"start":{"line":41,"column":8},"end":{"line":41,"column":null}},"19":{"start":{"line":46,"column":4},"end":{"line":51,"column":null}},"20":{"start":{"line":47,"column":6},"end":{"line":50,"column":null}},"21":{"start":{"line":48,"column":26},"end":{"line":48,"column":null}},"22":{"start":{"line":49,"column":8},"end":{"line":49,"column":null}},"23":{"start":{"line":54,"column":2},"end":{"line":88,"column":null}},"24":{"start":{"line":55,"column":20},"end":{"line":84,"column":null}},"25":{"start":{"line":56,"column":6},"end":{"line":56,"column":null}},"26":{"start":{"line":56,"column":91},"end":{"line":56,"column":null}},"27":{"start":{"line":58,"column":6},"end":{"line":83,"column":null}},"28":{"start":{"line":58,"column":25},"end":{"line":58,"column":null}},"29":{"start":{"line":58,"column":45},"end":{"line":83,"column":null}},"30":{"start":{"line":59,"column":30},"end":{"line":59,"column":null}},"31":{"start":{"line":59,"column":51},"end":{"line":83,"column":null}},"32":{"start":{"line":60,"column":30},"end":{"line":60,"column":null}},"33":{"start":{"line":60,"column":50},"end":{"line":83,"column":null}},"34":{"start":{"line":61,"column":30},"end":{"line":61,"column":null}},"35":{"start":{"line":61,"column":52},"end":{"line":83,"column":null}},"36":{"start":{"line":62,"column":30},"end":{"line":62,"column":null}},"37":{"start":{"line":62,"column":51},"end":{"line":83,"column":null}},"38":{"start":{"line":63,"column":30},"end":{"line":63,"column":null}},"39":{"start":{"line":63,"column":51},"end":{"line":83,"column":null}},"40":{"start":{"line":64,"column":30},"end":{"line":64,"column":null}},"41":{"start":{"line":64,"column":52},"end":{"line":83,"column":null}},"42":{"start":{"line":65,"column":30},"end":{"line":65,"column":null}},"43":{"start":{"line":65,"column":56},"end":{"line":83,"column":null}},"44":{"start":{"line":66,"column":30},"end":{"line":66,"column":null}},"45":{"start":{"line":66,"column":52},"end":{"line":83,"column":null}},"46":{"start":{"line":67,"column":30},"end":{"line":67,"column":null}},"47":{"start":{"line":67,"column":52},"end":{"line":83,"column":null}},"48":{"start":{"line":69,"column":8},"end":{"line":70,"column":null}},"49":{"start":{"line":69,"column":28},"end":{"line":69,"column":null}},"50":{"start":{"line":70,"column":13},"end":{"line":70,"column":null}},"51":{"start":{"line":71,"column":6},"end":{"line":83,"column":null}},"52":{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},"53":{"start":{"line":74,"column":8},"end":{"line":74,"column":null}},"54":{"start":{"line":75,"column":6},"end":{"line":83,"column":null}},"55":{"start":{"line":77,"column":8},"end":{"line":77,"column":null}},"56":{"start":{"line":78,"column":8},"end":{"line":78,"column":null}},"57":{"start":{"line":79,"column":6},"end":{"line":83,"column":null}},"58":{"start":{"line":81,"column":8},"end":{"line":81,"column":null}},"59":{"start":{"line":82,"column":8},"end":{"line":82,"column":null}},"60":{"start":{"line":82,"column":24},"end":{"line":82,"column":null}},"61":{"start":{"line":86,"column":4},"end":{"line":86,"column":null}},"62":{"start":{"line":87,"column":4},"end":{"line":87,"column":null}},"63":{"start":{"line":87,"column":17},"end":{"line":87,"column":null}},"64":{"start":{"line":90,"column":2},"end":{"line":169,"column":null}},"65":{"start":{"line":90,"column":2},"end":{"line":90,"column":null}},"66":{"start":{"line":90,"column":2},"end":{"line":109,"column":null}},"67":{"start":{"line":108,"column":20},"end":{"line":108,"column":32}},"68":{"start":{"line":108,"column":32},"end":{"line":108,"column":null}},"69":{"start":{"line":108,"column":32},"end":{"line":109,"column":null}},"70":{"start":{"line":109,"column":46},"end":{"line":109,"column":null}},"71":{"start":{"line":109,"column":46},"end":{"line":118,"column":null}},"72":{"start":{"line":118,"column":16},"end":{"line":121,"column":null}},"73":{"start":{"line":120,"column":20},"end":{"line":120,"column":45}},"74":{"start":{"line":120,"column":45},"end":{"line":121,"column":null}},"75":{"start":{"line":121,"column":35},"end":{"line":121,"column":null}},"76":{"start":{"line":121,"column":45},"end":{"line":124,"column":null}},"77":{"start":{"line":123,"column":20},"end":{"line":123,"column":46}},"78":{"start":{"line":123,"column":46},"end":{"line":124,"column":null}},"79":{"start":{"line":124,"column":35},"end":{"line":124,"column":null}},"80":{"start":{"line":124,"column":46},"end":{"line":127,"column":null}},"81":{"start":{"line":126,"column":20},"end":{"line":126,"column":45}},"82":{"start":{"line":126,"column":45},"end":{"line":127,"column":null}},"83":{"start":{"line":127,"column":35},"end":{"line":127,"column":null}},"84":{"start":{"line":127,"column":45},"end":{"line":130,"column":null}},"85":{"start":{"line":129,"column":20},"end":{"line":129,"column":47}},"86":{"start":{"line":129,"column":47},"end":{"line":130,"column":null}},"87":{"start":{"line":130,"column":35},"end":{"line":130,"column":null}},"88":{"start":{"line":130,"column":47},"end":{"line":133,"column":null}},"89":{"start":{"line":132,"column":20},"end":{"line":132,"column":46}},"90":{"start":{"line":132,"column":46},"end":{"line":133,"column":null}},"91":{"start":{"line":133,"column":35},"end":{"line":133,"column":null}},"92":{"start":{"line":133,"column":45},"end":{"line":136,"column":null}},"93":{"start":{"line":135,"column":20},"end":{"line":135,"column":46}},"94":{"start":{"line":135,"column":46},"end":{"line":136,"column":null}},"95":{"start":{"line":136,"column":35},"end":{"line":136,"column":null}},"96":{"start":{"line":136,"column":45},"end":{"line":139,"column":null}},"97":{"start":{"line":138,"column":20},"end":{"line":138,"column":47}},"98":{"start":{"line":138,"column":47},"end":{"line":139,"column":null}},"99":{"start":{"line":139,"column":35},"end":{"line":139,"column":null}},"100":{"start":{"line":139,"column":50},"end":{"line":142,"column":null}},"101":{"start":{"line":141,"column":20},"end":{"line":141,"column":51}},"102":{"start":{"line":141,"column":51},"end":{"line":142,"column":null}},"103":{"start":{"line":142,"column":35},"end":{"line":142,"column":null}},"104":{"start":{"line":142,"column":53},"end":{"line":145,"column":null}},"105":{"start":{"line":144,"column":20},"end":{"line":144,"column":47}},"106":{"start":{"line":144,"column":47},"end":{"line":145,"column":null}},"107":{"start":{"line":145,"column":35},"end":{"line":145,"column":null}},"108":{"start":{"line":145,"column":50},"end":{"line":148,"column":null}},"109":{"start":{"line":147,"column":20},"end":{"line":147,"column":47}},"110":{"start":{"line":147,"column":47},"end":{"line":148,"column":null}},"111":{"start":{"line":148,"column":35},"end":{"line":148,"column":null}},"112":{"start":{"line":148,"column":50},"end":{"line":152,"column":null}},"113":{"start":{"line":152,"column":26},"end":{"line":162,"column":null}},"114":{"start":{"line":157,"column":18},"end":{"line":157,"column":30}},"115":{"start":{"line":157,"column":30},"end":{"line":162,"column":null}},"116":{"start":{"line":157,"column":30},"end":{"line":157,"column":null}},"117":{"start":{"line":157,"column":30},"end":{"line":158,"column":null}},"118":{"start":{"line":158,"column":46},"end":{"line":158,"column":null}},"119":{"start":{"line":158,"column":46},"end":{"line":160,"column":null}},"120":{"start":{"line":158,"column":46},"end":{"line":160,"column":31}},"121":{"start":{"line":160,"column":31},"end":{"line":160,"column":null}},"122":{"start":{"line":160,"column":31},"end":{"line":162,"column":null}},"123":{"start":{"line":160,"column":31},"end":{"line":162,"column":31}},"124":{"start":{"line":162,"column":31},"end":{"line":162,"column":null}},"125":{"start":{"line":162,"column":31},"end":{"line":164,"column":null}},"126":{"start":{"line":164,"column":18},"end":{"line":164,"column":31}},"127":{"start":{"line":164,"column":31},"end":{"line":164,"column":null}},"128":{"start":{"line":164,"column":31},"end":{"line":169,"column":null}},"129":{"start":{"line":169,"column":17},"end":{"line":169,"column":null}},"130":{"start":{"line":174,"column":19},"end":{"line":174,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":19,"column":19},"end":{"line":19,"column":26}},"loc":{"start":{"line":19,"column":45},"end":{"line":31,"column":null}},"line":19},"1":{"name":"(anonymous_1)","decl":{"start":{"line":29,"column":27},"end":{"line":29,"column":33}},"loc":{"start":{"line":29,"column":33},"end":{"line":29,"column":35}},"line":29},"2":{"name":"(anonymous_2)","decl":{"start":{"line":33,"column":23},"end":{"line":33,"column":29}},"loc":{"start":{"line":33,"column":29},"end":{"line":172,"column":1}},"line":33},"3":{"name":"(anonymous_3)","decl":{"start":{"line":34,"column":10},"end":{"line":34,"column":22}},"loc":{"start":{"line":34,"column":22},"end":{"line":52,"column":3}},"line":34},"4":{"name":"(anonymous_4)","decl":{"start":{"line":47,"column":17},"end":{"line":47,"column":23}},"loc":{"start":{"line":47,"column":23},"end":{"line":50,"column":9}},"line":47},"5":{"name":"(anonymous_5)","decl":{"start":{"line":54,"column":15},"end":{"line":54,"column":21}},"loc":{"start":{"line":54,"column":21},"end":{"line":88,"column":3}},"line":54},"6":{"name":"(anonymous_6)","decl":{"start":{"line":55,"column":20},"end":{"line":55,"column":21}},"loc":{"start":{"line":55,"column":42},"end":{"line":84,"column":null}},"line":55},"7":{"name":"(anonymous_7)","decl":{"start":{"line":87,"column":11},"end":{"line":87,"column":17}},"loc":{"start":{"line":87,"column":17},"end":{"line":87,"column":null}},"line":87},"8":{"name":"(anonymous_8)","decl":{"start":{"line":90,"column":2},"end":{"line":90,"column":null}},"loc":{"start":{"line":90,"column":2},"end":{"line":169,"column":null}},"line":90},"9":{"name":"(anonymous_9)","decl":{"start":{"line":108,"column":16},"end":{"line":108,"column":20}},"loc":{"start":{"line":108,"column":20},"end":{"line":108,"column":null}},"line":108},"10":{"name":"(anonymous_10)","decl":{"start":{"line":108,"column":32},"end":{"line":108,"column":null}},"loc":{"start":{"line":108,"column":32},"end":{"line":109,"column":null}},"line":108},"11":{"name":"(anonymous_11)","decl":{"start":{"line":120,"column":16},"end":{"line":120,"column":20}},"loc":{"start":{"line":120,"column":20},"end":{"line":120,"column":null}},"line":120},"12":{"name":"(anonymous_12)","decl":{"start":{"line":120,"column":45},"end":{"line":120,"column":null}},"loc":{"start":{"line":120,"column":45},"end":{"line":121,"column":null}},"line":120},"13":{"name":"(anonymous_13)","decl":{"start":{"line":121,"column":35},"end":{"line":121,"column":37}},"loc":{"start":{"line":121,"column":35},"end":{"line":121,"column":null}},"line":121},"14":{"name":"(anonymous_14)","decl":{"start":{"line":123,"column":16},"end":{"line":123,"column":20}},"loc":{"start":{"line":123,"column":20},"end":{"line":123,"column":null}},"line":123},"15":{"name":"(anonymous_15)","decl":{"start":{"line":123,"column":46},"end":{"line":123,"column":null}},"loc":{"start":{"line":123,"column":46},"end":{"line":124,"column":null}},"line":123},"16":{"name":"(anonymous_16)","decl":{"start":{"line":124,"column":35},"end":{"line":124,"column":37}},"loc":{"start":{"line":124,"column":35},"end":{"line":124,"column":null}},"line":124},"17":{"name":"(anonymous_17)","decl":{"start":{"line":126,"column":16},"end":{"line":126,"column":20}},"loc":{"start":{"line":126,"column":20},"end":{"line":126,"column":null}},"line":126},"18":{"name":"(anonymous_18)","decl":{"start":{"line":126,"column":45},"end":{"line":126,"column":null}},"loc":{"start":{"line":126,"column":45},"end":{"line":127,"column":null}},"line":126},"19":{"name":"(anonymous_19)","decl":{"start":{"line":127,"column":35},"end":{"line":127,"column":37}},"loc":{"start":{"line":127,"column":35},"end":{"line":127,"column":null}},"line":127},"20":{"name":"(anonymous_20)","decl":{"start":{"line":129,"column":16},"end":{"line":129,"column":20}},"loc":{"start":{"line":129,"column":20},"end":{"line":129,"column":null}},"line":129},"21":{"name":"(anonymous_21)","decl":{"start":{"line":129,"column":47},"end":{"line":129,"column":null}},"loc":{"start":{"line":129,"column":47},"end":{"line":130,"column":null}},"line":129},"22":{"name":"(anonymous_22)","decl":{"start":{"line":130,"column":35},"end":{"line":130,"column":37}},"loc":{"start":{"line":130,"column":35},"end":{"line":130,"column":null}},"line":130},"23":{"name":"(anonymous_23)","decl":{"start":{"line":132,"column":16},"end":{"line":132,"column":20}},"loc":{"start":{"line":132,"column":20},"end":{"line":132,"column":null}},"line":132},"24":{"name":"(anonymous_24)","decl":{"start":{"line":132,"column":46},"end":{"line":132,"column":null}},"loc":{"start":{"line":132,"column":46},"end":{"line":133,"column":null}},"line":132},"25":{"name":"(anonymous_25)","decl":{"start":{"line":133,"column":35},"end":{"line":133,"column":37}},"loc":{"start":{"line":133,"column":35},"end":{"line":133,"column":null}},"line":133},"26":{"name":"(anonymous_26)","decl":{"start":{"line":135,"column":16},"end":{"line":135,"column":20}},"loc":{"start":{"line":135,"column":20},"end":{"line":135,"column":null}},"line":135},"27":{"name":"(anonymous_27)","decl":{"start":{"line":135,"column":46},"end":{"line":135,"column":null}},"loc":{"start":{"line":135,"column":46},"end":{"line":136,"column":null}},"line":135},"28":{"name":"(anonymous_28)","decl":{"start":{"line":136,"column":35},"end":{"line":136,"column":37}},"loc":{"start":{"line":136,"column":35},"end":{"line":136,"column":null}},"line":136},"29":{"name":"(anonymous_29)","decl":{"start":{"line":138,"column":16},"end":{"line":138,"column":20}},"loc":{"start":{"line":138,"column":20},"end":{"line":138,"column":null}},"line":138},"30":{"name":"(anonymous_30)","decl":{"start":{"line":138,"column":47},"end":{"line":138,"column":null}},"loc":{"start":{"line":138,"column":47},"end":{"line":139,"column":null}},"line":138},"31":{"name":"(anonymous_31)","decl":{"start":{"line":139,"column":35},"end":{"line":139,"column":37}},"loc":{"start":{"line":139,"column":35},"end":{"line":139,"column":null}},"line":139},"32":{"name":"(anonymous_32)","decl":{"start":{"line":141,"column":16},"end":{"line":141,"column":20}},"loc":{"start":{"line":141,"column":20},"end":{"line":141,"column":null}},"line":141},"33":{"name":"(anonymous_33)","decl":{"start":{"line":141,"column":51},"end":{"line":141,"column":null}},"loc":{"start":{"line":141,"column":51},"end":{"line":142,"column":null}},"line":141},"34":{"name":"(anonymous_34)","decl":{"start":{"line":142,"column":35},"end":{"line":142,"column":37}},"loc":{"start":{"line":142,"column":35},"end":{"line":142,"column":null}},"line":142},"35":{"name":"(anonymous_35)","decl":{"start":{"line":144,"column":16},"end":{"line":144,"column":20}},"loc":{"start":{"line":144,"column":20},"end":{"line":144,"column":null}},"line":144},"36":{"name":"(anonymous_36)","decl":{"start":{"line":144,"column":47},"end":{"line":144,"column":null}},"loc":{"start":{"line":144,"column":47},"end":{"line":145,"column":null}},"line":144},"37":{"name":"(anonymous_37)","decl":{"start":{"line":145,"column":35},"end":{"line":145,"column":37}},"loc":{"start":{"line":145,"column":35},"end":{"line":145,"column":null}},"line":145},"38":{"name":"(anonymous_38)","decl":{"start":{"line":147,"column":16},"end":{"line":147,"column":20}},"loc":{"start":{"line":147,"column":20},"end":{"line":147,"column":null}},"line":147},"39":{"name":"(anonymous_39)","decl":{"start":{"line":147,"column":47},"end":{"line":147,"column":null}},"loc":{"start":{"line":147,"column":47},"end":{"line":148,"column":null}},"line":147},"40":{"name":"(anonymous_40)","decl":{"start":{"line":148,"column":35},"end":{"line":148,"column":37}},"loc":{"start":{"line":148,"column":35},"end":{"line":148,"column":null}},"line":148},"41":{"name":"(anonymous_41)","decl":{"start":{"line":157,"column":14},"end":{"line":157,"column":18}},"loc":{"start":{"line":157,"column":18},"end":{"line":157,"column":null}},"line":157},"42":{"name":"(anonymous_42)","decl":{"start":{"line":157,"column":30},"end":{"line":157,"column":null}},"loc":{"start":{"line":157,"column":30},"end":{"line":162,"column":null}},"line":157},"43":{"name":"(anonymous_43)","decl":{"start":{"line":158,"column":46},"end":{"line":158,"column":null}},"loc":{"start":{"line":158,"column":46},"end":{"line":160,"column":null}},"line":158},"44":{"name":"(anonymous_44)","decl":{"start":{"line":160,"column":31},"end":{"line":160,"column":null}},"loc":{"start":{"line":160,"column":31},"end":{"line":162,"column":null}},"line":160},"45":{"name":"(anonymous_45)","decl":{"start":{"line":164,"column":14},"end":{"line":164,"column":18}},"loc":{"start":{"line":164,"column":18},"end":{"line":164,"column":null}},"line":164},"46":{"name":"(anonymous_46)","decl":{"start":{"line":164,"column":31},"end":{"line":164,"column":null}},"loc":{"start":{"line":164,"column":31},"end":{"line":164,"column":null}},"line":164}},"branchMap":{"0":{"loc":{"start":{"line":38,"column":6},"end":{"line":42,"column":null}},"type":"if","locations":[{"start":{"line":38,"column":6},"end":{"line":42,"column":null}},{"start":{},"end":{}}],"line":38},"1":{"loc":{"start":{"line":46,"column":4},"end":{"line":51,"column":null}},"type":"if","locations":[{"start":{"line":46,"column":4},"end":{"line":51,"column":null}},{"start":{},"end":{}}],"line":46},"2":{"loc":{"start":{"line":56,"column":6},"end":{"line":56,"column":null}},"type":"if","locations":[{"start":{"line":56,"column":6},"end":{"line":56,"column":null}},{"start":{},"end":{}}],"line":56},"3":{"loc":{"start":{"line":56,"column":10},"end":{"line":56,"column":91}},"type":"binary-expr","locations":[{"start":{"line":56,"column":10},"end":{"line":56,"column":50}},{"start":{"line":56,"column":50},"end":{"line":56,"column":91}}],"line":56},"4":{"loc":{"start":{"line":58,"column":6},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":58,"column":6},"end":{"line":83,"column":null}},{"start":{"line":58,"column":45},"end":{"line":83,"column":null}}],"line":58},"5":{"loc":{"start":{"line":58,"column":45},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":58,"column":45},"end":{"line":83,"column":null}},{"start":{"line":59,"column":51},"end":{"line":83,"column":null}}],"line":58},"6":{"loc":{"start":{"line":59,"column":51},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":59,"column":51},"end":{"line":83,"column":null}},{"start":{"line":60,"column":50},"end":{"line":83,"column":null}}],"line":59},"7":{"loc":{"start":{"line":60,"column":50},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":60,"column":50},"end":{"line":83,"column":null}},{"start":{"line":61,"column":52},"end":{"line":83,"column":null}}],"line":60},"8":{"loc":{"start":{"line":61,"column":52},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":61,"column":52},"end":{"line":83,"column":null}},{"start":{"line":62,"column":51},"end":{"line":83,"column":null}}],"line":61},"9":{"loc":{"start":{"line":62,"column":51},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":62,"column":51},"end":{"line":83,"column":null}},{"start":{"line":63,"column":51},"end":{"line":83,"column":null}}],"line":62},"10":{"loc":{"start":{"line":63,"column":51},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":63,"column":51},"end":{"line":83,"column":null}},{"start":{"line":64,"column":52},"end":{"line":83,"column":null}}],"line":63},"11":{"loc":{"start":{"line":64,"column":52},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":64,"column":52},"end":{"line":83,"column":null}},{"start":{"line":65,"column":56},"end":{"line":83,"column":null}}],"line":64},"12":{"loc":{"start":{"line":65,"column":56},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":65,"column":56},"end":{"line":83,"column":null}},{"start":{"line":66,"column":52},"end":{"line":83,"column":null}}],"line":65},"13":{"loc":{"start":{"line":66,"column":52},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":66,"column":52},"end":{"line":83,"column":null}},{"start":{"line":67,"column":52},"end":{"line":83,"column":null}}],"line":66},"14":{"loc":{"start":{"line":67,"column":52},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":67,"column":52},"end":{"line":83,"column":null}},{"start":{"line":71,"column":6},"end":{"line":83,"column":null}}],"line":67},"15":{"loc":{"start":{"line":69,"column":8},"end":{"line":70,"column":null}},"type":"if","locations":[{"start":{"line":69,"column":8},"end":{"line":70,"column":null}},{"start":{"line":70,"column":13},"end":{"line":70,"column":null}}],"line":69},"16":{"loc":{"start":{"line":71,"column":6},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":71,"column":6},"end":{"line":83,"column":null}},{"start":{"line":75,"column":6},"end":{"line":83,"column":null}}],"line":71},"17":{"loc":{"start":{"line":72,"column":15},"end":{"line":72,"column":62}},"type":"binary-expr","locations":[{"start":{"line":72,"column":15},"end":{"line":72,"column":33}},{"start":{"line":72,"column":33},"end":{"line":72,"column":46}},{"start":{"line":72,"column":46},"end":{"line":72,"column":62}}],"line":72},"18":{"loc":{"start":{"line":75,"column":6},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":75,"column":6},"end":{"line":83,"column":null}},{"start":{"line":79,"column":6},"end":{"line":83,"column":null}}],"line":75},"19":{"loc":{"start":{"line":76,"column":15},"end":{"line":76,"column":43}},"type":"binary-expr","locations":[{"start":{"line":76,"column":15},"end":{"line":76,"column":28}},{"start":{"line":76,"column":28},"end":{"line":76,"column":43}}],"line":76},"20":{"loc":{"start":{"line":79,"column":6},"end":{"line":83,"column":null}},"type":"if","locations":[{"start":{"line":79,"column":6},"end":{"line":83,"column":null}},{"start":{},"end":{}}],"line":79},"21":{"loc":{"start":{"line":80,"column":15},"end":{"line":80,"column":43}},"type":"binary-expr","locations":[{"start":{"line":80,"column":15},"end":{"line":80,"column":28}},{"start":{"line":80,"column":28},"end":{"line":80,"column":43}}],"line":80},"22":{"loc":{"start":{"line":82,"column":8},"end":{"line":82,"column":null}},"type":"if","locations":[{"start":{"line":82,"column":8},"end":{"line":82,"column":null}},{"start":{},"end":{}}],"line":82},"23":{"loc":{"start":{"line":174,"column":19},"end":{"line":174,"column":null}},"type":"if","locations":[{"start":{"line":174,"column":19},"end":{"line":174,"column":null}},{"start":{},"end":{}}],"line":174}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0]},"meta":{"lastBranch":24,"lastFunction":47,"lastStatement":131,"seen":{"s:19:19:31:Infinity":0,"f:19:19:19:26":0,"s:20:2:30:Infinity":1,"s:21:18:21:Infinity":2,"s:22:4:22:Infinity":3,"s:23:18:23:Infinity":4,"s:24:4:24:Infinity":5,"s:25:19:25:Infinity":6,"s:26:4:26:Infinity":7,"s:28:19:28:Infinity":8,"s:29:4:29:Infinity":9,"f:29:27:29:33":1,"s:33:6:172:Infinity":10,"f:33:23:33:29":2,"s:34:2:52:Infinity":11,"f:34:10:34:22":3,"s:35:4:44:Infinity":12,"s:36:18:36:Infinity":13,"s:37:6:37:Infinity":14,"b:38:6:42:Infinity:undefined:undefined:undefined:undefined":0,"s:38:6:42:Infinity":15,"s:39:24:39:Infinity":16,"s:40:8:40:Infinity":17,"s:41:8:41:Infinity":18,"b:46:4:51:Infinity:undefined:undefined:undefined:undefined":1,"s:46:4:51:Infinity":19,"s:47:6:50:Infinity":20,"f:47:17:47:23":4,"s:48:26:48:Infinity":21,"s:49:8:49:Infinity":22,"s:54:2:88:Infinity":23,"f:54:15:54:21":5,"s:55:20:84:Infinity":24,"f:55:20:55:21":6,"b:56:6:56:Infinity:undefined:undefined:undefined:undefined":2,"s:56:6:56:Infinity":25,"b:56:10:56:50:56:50:56:91":3,"s:56:91:56:Infinity":26,"b:58:6:83:Infinity:58:45:83:Infinity":4,"s:58:6:83:Infinity":27,"s:58:25:58:Infinity":28,"b:58:45:83:Infinity:59:51:83:Infinity":5,"s:58:45:83:Infinity":29,"s:59:30:59:Infinity":30,"b:59:51:83:Infinity:60:50:83:Infinity":6,"s:59:51:83:Infinity":31,"s:60:30:60:Infinity":32,"b:60:50:83:Infinity:61:52:83:Infinity":7,"s:60:50:83:Infinity":33,"s:61:30:61:Infinity":34,"b:61:52:83:Infinity:62:51:83:Infinity":8,"s:61:52:83:Infinity":35,"s:62:30:62:Infinity":36,"b:62:51:83:Infinity:63:51:83:Infinity":9,"s:62:51:83:Infinity":37,"s:63:30:63:Infinity":38,"b:63:51:83:Infinity:64:52:83:Infinity":10,"s:63:51:83:Infinity":39,"s:64:30:64:Infinity":40,"b:64:52:83:Infinity:65:56:83:Infinity":11,"s:64:52:83:Infinity":41,"s:65:30:65:Infinity":42,"b:65:56:83:Infinity:66:52:83:Infinity":12,"s:65:56:83:Infinity":43,"s:66:30:66:Infinity":44,"b:66:52:83:Infinity:67:52:83:Infinity":13,"s:66:52:83:Infinity":45,"s:67:30:67:Infinity":46,"b:67:52:83:Infinity:71:6:83:Infinity":14,"s:67:52:83:Infinity":47,"b:69:8:70:Infinity:70:13:70:Infinity":15,"s:69:8:70:Infinity":48,"s:69:28:69:Infinity":49,"s:70:13:70:Infinity":50,"b:71:6:83:Infinity:75:6:83:Infinity":16,"s:71:6:83:Infinity":51,"b:72:15:72:33:72:33:72:46:72:46:72:62":17,"s:73:8:73:Infinity":52,"s:74:8:74:Infinity":53,"b:75:6:83:Infinity:79:6:83:Infinity":18,"s:75:6:83:Infinity":54,"b:76:15:76:28:76:28:76:43":19,"s:77:8:77:Infinity":55,"s:78:8:78:Infinity":56,"b:79:6:83:Infinity:undefined:undefined:undefined:undefined":20,"s:79:6:83:Infinity":57,"b:80:15:80:28:80:28:80:43":21,"s:81:8:81:Infinity":58,"b:82:8:82:Infinity:undefined:undefined:undefined:undefined":22,"s:82:8:82:Infinity":59,"s:82:24:82:Infinity":60,"s:86:4:86:Infinity":61,"s:87:4:87:Infinity":62,"f:87:11:87:17":7,"s:87:17:87:Infinity":63,"s:90:2:169:Infinity":64,"f:90:2:90:Infinity":8,"s:90:2:90:Infinity":65,"s:90:2:109:Infinity":66,"f:108:16:108:20":9,"s:108:20:108:32":67,"f:108:32:108:Infinity":10,"s:108:32:108:Infinity":68,"s:108:32:109:Infinity":69,"s:109:46:109:Infinity":70,"s:109:46:118:Infinity":71,"s:118:16:121:Infinity":72,"f:120:16:120:20":11,"s:120:20:120:45":73,"f:120:45:120:Infinity":12,"s:120:45:121:Infinity":74,"f:121:35:121:37":13,"s:121:35:121:Infinity":75,"s:121:45:124:Infinity":76,"f:123:16:123:20":14,"s:123:20:123:46":77,"f:123:46:123:Infinity":15,"s:123:46:124:Infinity":78,"f:124:35:124:37":16,"s:124:35:124:Infinity":79,"s:124:46:127:Infinity":80,"f:126:16:126:20":17,"s:126:20:126:45":81,"f:126:45:126:Infinity":18,"s:126:45:127:Infinity":82,"f:127:35:127:37":19,"s:127:35:127:Infinity":83,"s:127:45:130:Infinity":84,"f:129:16:129:20":20,"s:129:20:129:47":85,"f:129:47:129:Infinity":21,"s:129:47:130:Infinity":86,"f:130:35:130:37":22,"s:130:35:130:Infinity":87,"s:130:47:133:Infinity":88,"f:132:16:132:20":23,"s:132:20:132:46":89,"f:132:46:132:Infinity":24,"s:132:46:133:Infinity":90,"f:133:35:133:37":25,"s:133:35:133:Infinity":91,"s:133:45:136:Infinity":92,"f:135:16:135:20":26,"s:135:20:135:46":93,"f:135:46:135:Infinity":27,"s:135:46:136:Infinity":94,"f:136:35:136:37":28,"s:136:35:136:Infinity":95,"s:136:45:139:Infinity":96,"f:138:16:138:20":29,"s:138:20:138:47":97,"f:138:47:138:Infinity":30,"s:138:47:139:Infinity":98,"f:139:35:139:37":31,"s:139:35:139:Infinity":99,"s:139:50:142:Infinity":100,"f:141:16:141:20":32,"s:141:20:141:51":101,"f:141:51:141:Infinity":33,"s:141:51:142:Infinity":102,"f:142:35:142:37":34,"s:142:35:142:Infinity":103,"s:142:53:145:Infinity":104,"f:144:16:144:20":35,"s:144:20:144:47":105,"f:144:47:144:Infinity":36,"s:144:47:145:Infinity":106,"f:145:35:145:37":37,"s:145:35:145:Infinity":107,"s:145:50:148:Infinity":108,"f:147:16:147:20":38,"s:147:20:147:47":109,"f:147:47:147:Infinity":39,"s:147:47:148:Infinity":110,"f:148:35:148:37":40,"s:148:35:148:Infinity":111,"s:148:50:152:Infinity":112,"s:152:26:162:Infinity":113,"f:157:14:157:18":41,"s:157:18:157:30":114,"f:157:30:157:Infinity":42,"s:157:30:162:Infinity":115,"s:157:30:157:Infinity":116,"s:157:30:158:Infinity":117,"s:158:46:158:Infinity":118,"f:158:46:158:Infinity":43,"s:158:46:160:Infinity":119,"s:158:46:160:31":120,"s:160:31:160:Infinity":121,"f:160:31:160:Infinity":44,"s:160:31:162:Infinity":122,"s:160:31:162:31":123,"s:162:31:162:Infinity":124,"s:162:31:164:Infinity":125,"f:164:14:164:18":45,"s:164:18:164:31":126,"f:164:31:164:Infinity":46,"s:164:31:164:Infinity":127,"s:164:31:169:Infinity":128,"s:169:17:169:Infinity":129,"b:174:19:174:Infinity:undefined:undefined:undefined:undefined":23,"s:174:19:174:Infinity":130}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/types.ts": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/types.ts","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{},"meta":{"lastBranch":0,"lastFunction":0,"lastStatement":0,"seen":{}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/chat/ChatView.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/chat/ChatView.tsx","statementMap":{"0":{"start":{"line":27,"column":27},"end":{"line":31,"column":null}},"1":{"start":{"line":35,"column":2},"end":{"line":35,"column":null}},"2":{"start":{"line":39,"column":16},"end":{"line":39,"column":null}},"3":{"start":{"line":40,"column":2},"end":{"line":40,"column":null}},"4":{"start":{"line":40,"column":19},"end":{"line":40,"column":null}},"5":{"start":{"line":41,"column":19},"end":{"line":41,"column":null}},"6":{"start":{"line":42,"column":2},"end":{"line":47,"column":null}},"7":{"start":{"line":43,"column":22},"end":{"line":43,"column":null}},"8":{"start":{"line":44,"column":4},"end":{"line":46,"column":null}},"9":{"start":{"line":45,"column":6},"end":{"line":45,"column":null}},"10":{"start":{"line":48,"column":2},"end":{"line":48,"column":null}},"11":{"start":{"line":52,"column":16},"end":{"line":52,"column":null}},"12":{"start":{"line":53,"column":2},"end":{"line":53,"column":null}},"13":{"start":{"line":53,"column":19},"end":{"line":53,"column":null}},"14":{"start":{"line":54,"column":26},"end":{"line":54,"column":null}},"15":{"start":{"line":55,"column":2},"end":{"line":61,"column":null}},"16":{"start":{"line":56,"column":22},"end":{"line":56,"column":null}},"17":{"start":{"line":57,"column":4},"end":{"line":60,"column":null}},"18":{"start":{"line":58,"column":6},"end":{"line":58,"column":null}},"19":{"start":{"line":59,"column":6},"end":{"line":59,"column":null}},"20":{"start":{"line":59,"column":30},"end":{"line":59,"column":null}},"21":{"start":{"line":62,"column":2},"end":{"line":62,"column":null}},"22":{"start":{"line":66,"column":16},"end":{"line":66,"column":null}},"23":{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},"24":{"start":{"line":69,"column":4},"end":{"line":69,"column":null}},"25":{"start":{"line":72,"column":2},"end":{"line":74,"column":null}},"26":{"start":{"line":73,"column":4},"end":{"line":73,"column":null}},"27":{"start":{"line":76,"column":2},"end":{"line":78,"column":null}},"28":{"start":{"line":77,"column":4},"end":{"line":77,"column":null}},"29":{"start":{"line":80,"column":2},"end":{"line":82,"column":null}},"30":{"start":{"line":81,"column":4},"end":{"line":81,"column":null}},"31":{"start":{"line":84,"column":19},"end":{"line":84,"column":null}},"32":{"start":{"line":85,"column":2},"end":{"line":89,"column":null}},"33":{"start":{"line":86,"column":4},"end":{"line":88,"column":null}},"34":{"start":{"line":87,"column":6},"end":{"line":87,"column":null}},"35":{"start":{"line":91,"column":21},"end":{"line":91,"column":null}},"36":{"start":{"line":93,"column":2},"end":{"line":96,"column":null}},"37":{"start":{"line":94,"column":20},"end":{"line":94,"column":null}},"38":{"start":{"line":95,"column":4},"end":{"line":95,"column":null}},"39":{"start":{"line":98,"column":2},"end":{"line":102,"column":null}},"40":{"start":{"line":99,"column":17},"end":{"line":99,"column":null}},"41":{"start":{"line":100,"column":23},"end":{"line":100,"column":null}},"42":{"start":{"line":101,"column":4},"end":{"line":101,"column":null}},"43":{"start":{"line":104,"column":2},"end":{"line":109,"column":null}},"44":{"start":{"line":105,"column":4},"end":{"line":107,"column":null}},"45":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"46":{"start":{"line":108,"column":4},"end":{"line":108,"column":null}},"47":{"start":{"line":111,"column":2},"end":{"line":116,"column":null}},"48":{"start":{"line":112,"column":4},"end":{"line":114,"column":null}},"49":{"start":{"line":113,"column":6},"end":{"line":113,"column":null}},"50":{"start":{"line":115,"column":4},"end":{"line":115,"column":null}},"51":{"start":{"line":118,"column":2},"end":{"line":122,"column":null}},"52":{"start":{"line":119,"column":4},"end":{"line":121,"column":null}},"53":{"start":{"line":120,"column":6},"end":{"line":120,"column":null}},"54":{"start":{"line":124,"column":2},"end":{"line":124,"column":null}},"55":{"start":{"line":132,"column":2},"end":{"line":151,"column":null}},"56":{"start":{"line":133,"column":19},"end":{"line":141,"column":null}},"57":{"start":{"line":143,"column":4},"end":{"line":147,"column":null}},"58":{"start":{"line":149,"column":4},"end":{"line":149,"column":null}},"59":{"start":{"line":150,"column":4},"end":{"line":150,"column":null}},"60":{"start":{"line":155,"column":16},"end":{"line":155,"column":null}},"61":{"start":{"line":156,"column":20},"end":{"line":156,"column":null}},"62":{"start":{"line":158,"column":2},"end":{"line":176,"column":null}},"63":{"start":{"line":159,"column":47},"end":{"line":159,"column":null}},"64":{"start":{"line":160,"column":4},"end":{"line":164,"column":null}},"65":{"start":{"line":161,"column":20},"end":{"line":161,"column":null}},"66":{"start":{"line":162,"column":19},"end":{"line":162,"column":null}},"67":{"start":{"line":163,"column":6},"end":{"line":163,"column":null}},"68":{"start":{"line":166,"column":27},"end":{"line":166,"column":null}},"69":{"start":{"line":166,"column":78},"end":{"line":166,"column":94}},"70":{"start":{"line":168,"column":4},"end":{"line":175,"column":null}},"71":{"start":{"line":178,"column":2},"end":{"line":191,"column":null}},"72":{"start":{"line":179,"column":27},"end":{"line":183,"column":null}},"73":{"start":{"line":179,"column":73},"end":{"line":183,"column":6}},"74":{"start":{"line":185,"column":4},"end":{"line":190,"column":null}},"75":{"start":{"line":193,"column":2},"end":{"line":205,"column":null}},"76":{"start":{"line":194,"column":22},"end":{"line":197,"column":null}},"77":{"start":{"line":194,"column":57},"end":{"line":197,"column":6}},"78":{"start":{"line":199,"column":4},"end":{"line":204,"column":null}},"79":{"start":{"line":207,"column":2},"end":{"line":214,"column":null}},"80":{"start":{"line":208,"column":4},"end":{"line":213,"column":null}},"81":{"start":{"line":216,"column":2},"end":{"line":216,"column":null}},"82":{"start":{"line":220,"column":2},"end":{"line":222,"column":null}},"83":{"start":{"line":221,"column":4},"end":{"line":221,"column":null}},"84":{"start":{"line":223,"column":2},"end":{"line":225,"column":null}},"85":{"start":{"line":224,"column":4},"end":{"line":224,"column":null}},"86":{"start":{"line":226,"column":2},"end":{"line":228,"column":null}},"87":{"start":{"line":227,"column":4},"end":{"line":227,"column":null}},"88":{"start":{"line":229,"column":2},"end":{"line":231,"column":null}},"89":{"start":{"line":230,"column":4},"end":{"line":230,"column":null}},"90":{"start":{"line":232,"column":2},"end":{"line":232,"column":null}},"91":{"start":{"line":235,"column":6},"end":{"line":539,"column":null}},"92":{"start":{"line":236,"column":30},"end":{"line":236,"column":null}},"93":{"start":{"line":237,"column":24},"end":{"line":237,"column":null}},"94":{"start":{"line":238,"column":32},"end":{"line":238,"column":null}},"95":{"start":{"line":239,"column":44},"end":{"line":239,"column":null}},"96":{"start":{"line":240,"column":36},"end":{"line":240,"column":null}},"97":{"start":{"line":243,"column":25},"end":{"line":245,"column":null}},"98":{"start":{"line":244,"column":4},"end":{"line":244,"column":null}},"99":{"start":{"line":247,"column":2},"end":{"line":249,"column":null}},"100":{"start":{"line":248,"column":4},"end":{"line":248,"column":null}},"101":{"start":{"line":251,"column":23},"end":{"line":262,"column":null}},"102":{"start":{"line":252,"column":4},"end":{"line":252,"column":null}},"103":{"start":{"line":252,"column":21},"end":{"line":252,"column":null}},"104":{"start":{"line":253,"column":4},"end":{"line":253,"column":null}},"105":{"start":{"line":254,"column":4},"end":{"line":261,"column":null}},"106":{"start":{"line":255,"column":21},"end":{"line":255,"column":null}},"107":{"start":{"line":256,"column":6},"end":{"line":256,"column":null}},"108":{"start":{"line":258,"column":6},"end":{"line":258,"column":null}},"109":{"start":{"line":260,"column":6},"end":{"line":260,"column":null}},"110":{"start":{"line":264,"column":22},"end":{"line":337,"column":null}},"111":{"start":{"line":265,"column":18},"end":{"line":265,"column":null}},"112":{"start":{"line":266,"column":4},"end":{"line":266,"column":null}},"113":{"start":{"line":266,"column":38},"end":{"line":266,"column":null}},"114":{"start":{"line":268,"column":29},"end":{"line":268,"column":null}},"115":{"start":{"line":269,"column":4},"end":{"line":269,"column":null}},"116":{"start":{"line":269,"column":24},"end":{"line":269,"column":42}},"117":{"start":{"line":270,"column":4},"end":{"line":270,"column":null}},"118":{"start":{"line":272,"column":10},"end":{"line":272,"column":null}},"119":{"start":{"line":273,"column":10},"end":{"line":273,"column":null}},"120":{"start":{"line":275,"column":4},"end":{"line":275,"column":null}},"121":{"start":{"line":277,"column":4},"end":{"line":281,"column":null}},"122":{"start":{"line":278,"column":6},"end":{"line":278,"column":null}},"123":{"start":{"line":280,"column":6},"end":{"line":280,"column":null}},"124":{"start":{"line":283,"column":51},"end":{"line":283,"column":null}},"125":{"start":{"line":285,"column":19},"end":{"line":285,"column":null}},"126":{"start":{"line":287,"column":19},"end":{"line":287,"column":null}},"127":{"start":{"line":288,"column":52},"end":{"line":288,"column":null}},"128":{"start":{"line":290,"column":4},"end":{"line":305,"column":null}},"129":{"start":{"line":291,"column":6},"end":{"line":291,"column":null}},"130":{"start":{"line":293,"column":6},"end":{"line":302,"column":null}},"131":{"start":{"line":294,"column":8},"end":{"line":294,"column":null}},"132":{"start":{"line":296,"column":18},"end":{"line":296,"column":null}},"133":{"start":{"line":297,"column":18},"end":{"line":297,"column":null}},"134":{"start":{"line":298,"column":8},"end":{"line":298,"column":null}},"135":{"start":{"line":299,"column":8},"end":{"line":301,"column":null}},"136":{"start":{"line":300,"column":10},"end":{"line":300,"column":null}},"137":{"start":{"line":300,"column":84},"end":{"line":300,"column":101}},"138":{"start":{"line":304,"column":6},"end":{"line":304,"column":null}},"139":{"start":{"line":307,"column":22},"end":{"line":307,"column":null}},"140":{"start":{"line":309,"column":34},"end":{"line":319,"column":null}},"141":{"start":{"line":320,"column":4},"end":{"line":320,"column":null}},"142":{"start":{"line":320,"column":24},"end":{"line":320,"column":47}},"143":{"start":{"line":322,"column":4},"end":{"line":329,"column":null}},"144":{"start":{"line":331,"column":4},"end":{"line":336,"column":null}},"145":{"start":{"line":334,"column":50},"end":{"line":334,"column":54}},"146":{"start":{"line":335,"column":50},"end":{"line":335,"column":54}},"147":{"start":{"line":339,"column":27},"end":{"line":341,"column":null}},"148":{"start":{"line":340,"column":4},"end":{"line":340,"column":null}},"149":{"start":{"line":343,"column":25},"end":{"line":352,"column":null}},"150":{"start":{"line":344,"column":4},"end":{"line":347,"column":null}},"151":{"start":{"line":345,"column":6},"end":{"line":345,"column":null}},"152":{"start":{"line":346,"column":6},"end":{"line":346,"column":null}},"153":{"start":{"line":348,"column":4},"end":{"line":350,"column":null}},"154":{"start":{"line":349,"column":6},"end":{"line":349,"column":null}},"155":{"start":{"line":351,"column":4},"end":{"line":351,"column":null}},"156":{"start":{"line":354,"column":26},"end":{"line":362,"column":null}},"157":{"start":{"line":355,"column":19},"end":{"line":355,"column":null}},"158":{"start":{"line":356,"column":4},"end":{"line":360,"column":null}},"159":{"start":{"line":357,"column":6},"end":{"line":357,"column":null}},"160":{"start":{"line":359,"column":6},"end":{"line":359,"column":null}},"161":{"start":{"line":361,"column":4},"end":{"line":361,"column":null}},"162":{"start":{"line":364,"column":2},"end":{"line":374,"column":null}},"163":{"start":{"line":365,"column":4},"end":{"line":373,"column":null}},"164":{"start":{"line":366,"column":12},"end":{"line":366,"column":null}},"165":{"start":{"line":367,"column":12},"end":{"line":367,"column":null}},"166":{"start":{"line":368,"column":6},"end":{"line":372,"column":null}},"167":{"start":{"line":376,"column":2},"end":{"line":526,"column":null}},"168":{"start":{"line":376,"column":2},"end":{"line":376,"column":null}},"169":{"start":{"line":376,"column":2},"end":{"line":496,"column":null}},"170":{"start":{"line":379,"column":17},"end":{"line":379,"column":29}},"171":{"start":{"line":380,"column":17},"end":{"line":381,"column":null}},"172":{"start":{"line":380,"column":22},"end":{"line":380,"column":null}},"173":{"start":{"line":380,"column":22},"end":{"line":383,"column":null}},"174":{"start":{"line":383,"column":17},"end":{"line":383,"column":50}},"175":{"start":{"line":383,"column":50},"end":{"line":386,"column":null}},"176":{"start":{"line":386,"column":43},"end":{"line":386,"column":54}},"177":{"start":{"line":386,"column":54},"end":{"line":434,"column":null}},"178":{"start":{"line":388,"column":26},"end":{"line":388,"column":46}},"179":{"start":{"line":389,"column":19},"end":{"line":429,"column":null}},"180":{"start":{"line":389,"column":29},"end":{"line":389,"column":null}},"181":{"start":{"line":389,"column":29},"end":{"line":399,"column":null}},"182":{"start":{"line":391,"column":32},"end":{"line":391,"column":71}},"183":{"start":{"line":391,"column":71},"end":{"line":391,"column":null}},"184":{"start":{"line":391,"column":71},"end":{"line":399,"column":null}},"185":{"start":{"line":393,"column":35},"end":{"line":393,"column":55}},"186":{"start":{"line":394,"column":30},"end":{"line":397,"column":null}},"187":{"start":{"line":394,"column":34},"end":{"line":394,"column":null}},"188":{"start":{"line":394,"column":34},"end":{"line":396,"column":null}},"189":{"start":{"line":396,"column":58},"end":{"line":396,"column":68}},"190":{"start":{"line":396,"column":68},"end":{"line":397,"column":null}},"191":{"start":{"line":397,"column":58},"end":{"line":397,"column":67}},"192":{"start":{"line":397,"column":67},"end":{"line":397,"column":null}},"193":{"start":{"line":399,"column":29},"end":{"line":399,"column":null}},"194":{"start":{"line":399,"column":29},"end":{"line":414,"column":null}},"195":{"start":{"line":404,"column":32},"end":{"line":404,"column":71}},"196":{"start":{"line":404,"column":71},"end":{"line":404,"column":null}},"197":{"start":{"line":404,"column":71},"end":{"line":414,"column":null}},"198":{"start":{"line":406,"column":35},"end":{"line":406,"column":55}},"199":{"start":{"line":407,"column":36},"end":{"line":412,"column":null}},"200":{"start":{"line":407,"column":37},"end":{"line":407,"column":null}},"201":{"start":{"line":407,"column":37},"end":{"line":409,"column":null}},"202":{"start":{"line":409,"column":53},"end":{"line":409,"column":60}},"203":{"start":{"line":409,"column":60},"end":{"line":410,"column":null}},"204":{"start":{"line":410,"column":57},"end":{"line":410,"column":66}},"205":{"start":{"line":410,"column":66},"end":{"line":411,"column":null}},"206":{"start":{"line":411,"column":57},"end":{"line":411,"column":66}},"207":{"start":{"line":411,"column":66},"end":{"line":412,"column":null}},"208":{"start":{"line":412,"column":64},"end":{"line":412,"column":80}},"209":{"start":{"line":412,"column":80},"end":{"line":412,"column":null}},"210":{"start":{"line":414,"column":29},"end":{"line":414,"column":null}},"211":{"start":{"line":414,"column":29},"end":{"line":429,"column":null}},"212":{"start":{"line":419,"column":32},"end":{"line":419,"column":74}},"213":{"start":{"line":419,"column":74},"end":{"line":419,"column":null}},"214":{"start":{"line":419,"column":74},"end":{"line":429,"column":null}},"215":{"start":{"line":421,"column":35},"end":{"line":421,"column":55}},"216":{"start":{"line":422,"column":37},"end":{"line":425,"column":null}},"217":{"start":{"line":422,"column":37},"end":{"line":422,"column":null}},"218":{"start":{"line":422,"column":37},"end":{"line":424,"column":null}},"219":{"start":{"line":424,"column":57},"end":{"line":424,"column":66}},"220":{"start":{"line":424,"column":66},"end":{"line":424,"column":null}},"221":{"start":{"line":425,"column":42},"end":{"line":425,"column":79}},"222":{"start":{"line":425,"column":79},"end":{"line":425,"column":null}},"223":{"start":{"line":429,"column":29},"end":{"line":429,"column":null}},"224":{"start":{"line":434,"column":19},"end":{"line":441,"column":null}},"225":{"start":{"line":437,"column":26},"end":{"line":437,"column":83}},"226":{"start":{"line":437,"column":28},"end":{"line":437,"column":54}},"227":{"start":{"line":437,"column":83},"end":{"line":437,"column":null}},"228":{"start":{"line":437,"column":83},"end":{"line":440,"column":null}},"229":{"start":{"line":440,"column":47},"end":{"line":440,"column":68}},"230":{"start":{"line":440,"column":68},"end":{"line":441,"column":null}},"231":{"start":{"line":441,"column":28},"end":{"line":441,"column":61}},"232":{"start":{"line":441,"column":61},"end":{"line":441,"column":null}},"233":{"start":{"line":441,"column":61},"end":{"line":462,"column":null}},"234":{"start":{"line":446,"column":26},"end":{"line":446,"column":42}},"235":{"start":{"line":446,"column":42},"end":{"line":446,"column":null}},"236":{"start":{"line":446,"column":42},"end":{"line":450,"column":61}},"237":{"start":{"line":450,"column":37},"end":{"line":450,"column":61}},"238":{"start":{"line":450,"column":61},"end":{"line":452,"column":null}},"239":{"start":{"line":452,"column":23},"end":{"line":452,"column":61}},"240":{"start":{"line":452,"column":61},"end":{"line":462,"column":null}},"241":{"start":{"line":454,"column":30},"end":{"line":454,"column":58}},"242":{"start":{"line":454,"column":58},"end":{"line":454,"column":null}},"243":{"start":{"line":454,"column":58},"end":{"line":458,"column":null}},"244":{"start":{"line":456,"column":34},"end":{"line":456,"column":51}},"245":{"start":{"line":456,"column":51},"end":{"line":456,"column":null}},"246":{"start":{"line":456,"column":51},"end":{"line":458,"column":null}},"247":{"start":{"line":458,"column":72},"end":{"line":458,"column":87}},"248":{"start":{"line":458,"column":87},"end":{"line":458,"column":null}},"249":{"start":{"line":458,"column":87},"end":{"line":462,"column":null}},"250":{"start":{"line":462,"column":33},"end":{"line":462,"column":47}},"251":{"start":{"line":462,"column":47},"end":{"line":462,"column":null}},"252":{"start":{"line":462,"column":47},"end":{"line":479,"column":null}},"253":{"start":{"line":469,"column":26},"end":{"line":469,"column":69}},"254":{"start":{"line":469,"column":28},"end":{"line":469,"column":41}},"255":{"start":{"line":469,"column":69},"end":{"line":469,"column":null}},"256":{"start":{"line":469,"column":69},"end":{"line":479,"column":null}},"257":{"start":{"line":471,"column":29},"end":{"line":471,"column":44}},"258":{"start":{"line":472,"column":24},"end":{"line":477,"column":null}},"259":{"start":{"line":472,"column":26},"end":{"line":472,"column":null}},"260":{"start":{"line":472,"column":26},"end":{"line":475,"column":59}},"261":{"start":{"line":475,"column":41},"end":{"line":475,"column":59}},"262":{"start":{"line":475,"column":59},"end":{"line":477,"column":null}},"263":{"start":{"line":477,"column":29},"end":{"line":477,"column":null}},"264":{"start":{"line":479,"column":23},"end":{"line":479,"column":null}},"265":{"start":{"line":479,"column":23},"end":{"line":488,"column":null}},"266":{"start":{"line":484,"column":26},"end":{"line":484,"column":72}},"267":{"start":{"line":484,"column":28},"end":{"line":484,"column":41}},"268":{"start":{"line":484,"column":72},"end":{"line":484,"column":null}},"269":{"start":{"line":484,"column":72},"end":{"line":488,"column":59}},"270":{"start":{"line":488,"column":31},"end":{"line":488,"column":59}},"271":{"start":{"line":488,"column":59},"end":{"line":488,"column":null}},"272":{"start":{"line":488,"column":59},"end":{"line":381,"column":null}},"273":{"start":{"line":381,"column":50},"end":{"line":381,"column":null}},"274":{"start":{"line":496,"column":11},"end":{"line":507,"column":null}},"275":{"start":{"line":496,"column":11},"end":{"line":498,"column":null}},"276":{"start":{"line":496,"column":11},"end":{"line":498,"column":20}},"277":{"start":{"line":498,"column":20},"end":{"line":498,"column":19}},"278":{"start":{"line":498,"column":9},"end":{"line":498,"column":19}},"279":{"start":{"line":508,"column":18},"end":{"line":508,"column":29}},"280":{"start":{"line":508,"column":29},"end":{"line":508,"column":null}},"281":{"start":{"line":508,"column":29},"end":{"line":519,"column":null}},"282":{"start":{"line":512,"column":18},"end":{"line":512,"column":42}},"283":{"start":{"line":512,"column":42},"end":{"line":512,"column":null}},"284":{"start":{"line":512,"column":42},"end":{"line":519,"column":null}},"285":{"start":{"line":515,"column":16},"end":{"line":517,"column":null}},"286":{"start":{"line":515,"column":17},"end":{"line":515,"column":null}},"287":{"start":{"line":515,"column":17},"end":{"line":516,"column":81}},"288":{"start":{"line":516,"column":62},"end":{"line":516,"column":81}},"289":{"start":{"line":516,"column":81},"end":{"line":517,"column":null}},"290":{"start":{"line":517,"column":20},"end":{"line":517,"column":null}},"291":{"start":{"line":519,"column":15},"end":{"line":519,"column":null}},"292":{"start":{"line":519,"column":15},"end":{"line":528,"column":80}},"293":{"start":{"line":528,"column":30},"end":{"line":528,"column":80}},"294":{"start":{"line":528,"column":80},"end":{"line":527,"column":59}},"295":{"start":{"line":527,"column":28},"end":{"line":527,"column":59}},"296":{"start":{"line":527,"column":59},"end":{"line":532,"column":46}},"297":{"start":{"line":532,"column":33},"end":{"line":532,"column":46}},"298":{"start":{"line":532,"column":46},"end":{"line":532,"column":null}},"299":{"start":{"line":532,"column":46},"end":{"line":529,"column":94}},"300":{"start":{"line":530,"column":22},"end":{"line":530,"column":48}},"301":{"start":{"line":532,"column":58},"end":{"line":532,"column":103}},"302":{"start":{"line":532,"column":103},"end":{"line":532,"column":null}},"303":{"start":{"line":532,"column":103},"end":{"line":526,"column":null}},"304":{"start":{"line":532,"column":103},"end":{"line":526,"column":26}},"305":{"start":{"line":526,"column":26},"end":{"line":526,"column":null}},"306":{"start":{"line":541,"column":24},"end":{"line":541,"column":null}}},"fnMap":{"0":{"name":"normalize","decl":{"start":{"line":34,"column":9},"end":{"line":34,"column":19}},"loc":{"start":{"line":34,"column":42},"end":{"line":36,"column":null}},"line":34},"1":{"name":"findEntityType","decl":{"start":{"line":38,"column":9},"end":{"line":38,"column":24}},"loc":{"start":{"line":38,"column":85},"end":{"line":49,"column":null}},"line":38},"2":{"name":"findTwoEntityTypes","decl":{"start":{"line":51,"column":9},"end":{"line":51,"column":28}},"loc":{"start":{"line":51,"column":106},"end":{"line":63,"column":null}},"line":51},"3":{"name":"translateNLtoSensibleQL","decl":{"start":{"line":65,"column":16},"end":{"line":65,"column":40}},"loc":{"start":{"line":65,"column":129},"end":{"line":125,"column":null}},"line":65},"4":{"name":"translateNLtoSensibleQLWithLLM","decl":{"start":{"line":127,"column":15},"end":{"line":127,"column":null}},"loc":{"start":{"line":131,"column":76},"end":{"line":152,"column":null}},"line":131},"5":{"name":"generateStructuredResponse","decl":{"start":{"line":154,"column":9},"end":{"line":154,"column":36}},"loc":{"start":{"line":154,"column":126},"end":{"line":217,"column":null}},"line":154},"6":{"name":"(anonymous_6)","decl":{"start":{"line":166,"column":58},"end":{"line":166,"column":59}},"loc":{"start":{"line":166,"column":78},"end":{"line":166,"column":94}},"line":166},"7":{"name":"(anonymous_7)","decl":{"start":{"line":179,"column":49},"end":{"line":179,"column":50}},"loc":{"start":{"line":179,"column":73},"end":{"line":183,"column":6}},"line":179},"8":{"name":"(anonymous_8)","decl":{"start":{"line":194,"column":44},"end":{"line":194,"column":45}},"loc":{"start":{"line":194,"column":57},"end":{"line":197,"column":6}},"line":194},"9":{"name":"generateFollowUps","decl":{"start":{"line":219,"column":9},"end":{"line":219,"column":27}},"loc":{"start":{"line":219,"column":99},"end":{"line":233,"column":null}},"line":219},"10":{"name":"(anonymous_10)","decl":{"start":{"line":235,"column":28},"end":{"line":235,"column":34}},"loc":{"start":{"line":235,"column":34},"end":{"line":539,"column":1}},"line":235},"11":{"name":"(anonymous_11)","decl":{"start":{"line":243,"column":25},"end":{"line":243,"column":31}},"loc":{"start":{"line":243,"column":31},"end":{"line":245,"column":null}},"line":243},"12":{"name":"(anonymous_12)","decl":{"start":{"line":247,"column":15},"end":{"line":247,"column":21}},"loc":{"start":{"line":247,"column":21},"end":{"line":249,"column":3}},"line":247},"13":{"name":"(anonymous_13)","decl":{"start":{"line":251,"column":23},"end":{"line":251,"column":30}},"loc":{"start":{"line":251,"column":48},"end":{"line":262,"column":null}},"line":251},"14":{"name":"(anonymous_14)","decl":{"start":{"line":264,"column":22},"end":{"line":264,"column":29}},"loc":{"start":{"line":264,"column":47},"end":{"line":337,"column":null}},"line":264},"15":{"name":"(anonymous_15)","decl":{"start":{"line":269,"column":16},"end":{"line":269,"column":24}},"loc":{"start":{"line":269,"column":24},"end":{"line":269,"column":42}},"line":269},"16":{"name":"(anonymous_16)","decl":{"start":{"line":300,"column":69},"end":{"line":300,"column":70}},"loc":{"start":{"line":300,"column":84},"end":{"line":300,"column":101}},"line":300},"17":{"name":"(anonymous_17)","decl":{"start":{"line":320,"column":16},"end":{"line":320,"column":24}},"loc":{"start":{"line":320,"column":24},"end":{"line":320,"column":47}},"line":320},"18":{"name":"(anonymous_18)","decl":{"start":{"line":334,"column":38},"end":{"line":334,"column":39}},"loc":{"start":{"line":334,"column":50},"end":{"line":334,"column":54}},"line":334},"19":{"name":"(anonymous_19)","decl":{"start":{"line":335,"column":38},"end":{"line":335,"column":39}},"loc":{"start":{"line":335,"column":50},"end":{"line":335,"column":54}},"line":335},"20":{"name":"(anonymous_20)","decl":{"start":{"line":339,"column":27},"end":{"line":339,"column":28}},"loc":{"start":{"line":339,"column":51},"end":{"line":341,"column":null}},"line":339},"21":{"name":"(anonymous_21)","decl":{"start":{"line":343,"column":25},"end":{"line":343,"column":26}},"loc":{"start":{"line":343,"column":47},"end":{"line":352,"column":null}},"line":343},"22":{"name":"(anonymous_22)","decl":{"start":{"line":354,"column":26},"end":{"line":354,"column":27}},"loc":{"start":{"line":354,"column":45},"end":{"line":362,"column":null}},"line":354},"23":{"name":"(anonymous_23)","decl":{"start":{"line":364,"column":15},"end":{"line":364,"column":21}},"loc":{"start":{"line":364,"column":21},"end":{"line":374,"column":3}},"line":364},"24":{"name":"(anonymous_24)","decl":{"start":{"line":376,"column":2},"end":{"line":376,"column":null}},"loc":{"start":{"line":376,"column":2},"end":{"line":526,"column":null}},"line":376},"25":{"name":"(anonymous_25)","decl":{"start":{"line":379,"column":13},"end":{"line":379,"column":17}},"loc":{"start":{"line":379,"column":17},"end":{"line":379,"column":null}},"line":379},"26":{"name":"(anonymous_26)","decl":{"start":{"line":380,"column":11},"end":{"line":380,"column":12}},"loc":{"start":{"line":380,"column":17},"end":{"line":381,"column":null}},"line":380},"27":{"name":"(anonymous_27)","decl":{"start":{"line":380,"column":22},"end":{"line":380,"column":null}},"loc":{"start":{"line":380,"column":22},"end":{"line":381,"column":null}},"line":380},"28":{"name":"(anonymous_28)","decl":{"start":{"line":383,"column":50},"end":{"line":383,"column":null}},"loc":{"start":{"line":386,"column":43},"end":{"line":386,"column":54}},"line":386},"29":{"name":"(anonymous_29)","decl":{"start":{"line":388,"column":22},"end":{"line":388,"column":26}},"loc":{"start":{"line":388,"column":26},"end":{"line":388,"column":null}},"line":388},"30":{"name":"(anonymous_30)","decl":{"start":{"line":389,"column":19},"end":{"line":389,"column":29}},"loc":{"start":{"line":389,"column":19},"end":{"line":429,"column":null}},"line":389},"31":{"name":"(anonymous_31)","decl":{"start":{"line":389,"column":29},"end":{"line":389,"column":null}},"loc":{"start":{"line":389,"column":29},"end":{"line":429,"column":null}},"line":389},"32":{"name":"(anonymous_32)","decl":{"start":{"line":391,"column":28},"end":{"line":391,"column":32}},"loc":{"start":{"line":391,"column":32},"end":{"line":391,"column":null}},"line":391},"33":{"name":"(anonymous_33)","decl":{"start":{"line":391,"column":71},"end":{"line":391,"column":null}},"loc":{"start":{"line":391,"column":71},"end":{"line":399,"column":null}},"line":391},"34":{"name":"(anonymous_34)","decl":{"start":{"line":393,"column":31},"end":{"line":393,"column":35}},"loc":{"start":{"line":393,"column":35},"end":{"line":393,"column":null}},"line":393},"35":{"name":"(anonymous_35)","decl":{"start":{"line":394,"column":30},"end":{"line":394,"column":34}},"loc":{"start":{"line":394,"column":30},"end":{"line":397,"column":null}},"line":394},"36":{"name":"(anonymous_36)","decl":{"start":{"line":394,"column":34},"end":{"line":394,"column":null}},"loc":{"start":{"line":394,"column":34},"end":{"line":397,"column":null}},"line":394},"37":{"name":"(anonymous_37)","decl":{"start":{"line":396,"column":68},"end":{"line":396,"column":null}},"loc":{"start":{"line":397,"column":58},"end":{"line":397,"column":67}},"line":397},"38":{"name":"(anonymous_38)","decl":{"start":{"line":404,"column":28},"end":{"line":404,"column":32}},"loc":{"start":{"line":404,"column":32},"end":{"line":404,"column":null}},"line":404},"39":{"name":"(anonymous_39)","decl":{"start":{"line":404,"column":71},"end":{"line":404,"column":null}},"loc":{"start":{"line":404,"column":71},"end":{"line":414,"column":null}},"line":404},"40":{"name":"(anonymous_40)","decl":{"start":{"line":406,"column":31},"end":{"line":406,"column":35}},"loc":{"start":{"line":406,"column":35},"end":{"line":406,"column":null}},"line":406},"41":{"name":"(anonymous_41)","decl":{"start":{"line":407,"column":29},"end":{"line":407,"column":30}},"loc":{"start":{"line":407,"column":36},"end":{"line":412,"column":null}},"line":407},"42":{"name":"(anonymous_42)","decl":{"start":{"line":407,"column":37},"end":{"line":407,"column":null}},"loc":{"start":{"line":407,"column":37},"end":{"line":412,"column":null}},"line":407},"43":{"name":"(anonymous_43)","decl":{"start":{"line":409,"column":60},"end":{"line":409,"column":null}},"loc":{"start":{"line":410,"column":57},"end":{"line":410,"column":66}},"line":410},"44":{"name":"(anonymous_44)","decl":{"start":{"line":410,"column":66},"end":{"line":410,"column":null}},"loc":{"start":{"line":411,"column":57},"end":{"line":411,"column":66}},"line":411},"45":{"name":"(anonymous_45)","decl":{"start":{"line":411,"column":66},"end":{"line":411,"column":null}},"loc":{"start":{"line":412,"column":64},"end":{"line":412,"column":80}},"line":412},"46":{"name":"(anonymous_46)","decl":{"start":{"line":419,"column":28},"end":{"line":419,"column":32}},"loc":{"start":{"line":419,"column":32},"end":{"line":419,"column":null}},"line":419},"47":{"name":"(anonymous_47)","decl":{"start":{"line":419,"column":74},"end":{"line":419,"column":null}},"loc":{"start":{"line":419,"column":74},"end":{"line":429,"column":null}},"line":419},"48":{"name":"(anonymous_48)","decl":{"start":{"line":421,"column":31},"end":{"line":421,"column":35}},"loc":{"start":{"line":421,"column":35},"end":{"line":421,"column":null}},"line":421},"49":{"name":"(anonymous_49)","decl":{"start":{"line":422,"column":29},"end":{"line":422,"column":30}},"loc":{"start":{"line":422,"column":37},"end":{"line":425,"column":null}},"line":422},"50":{"name":"(anonymous_50)","decl":{"start":{"line":422,"column":37},"end":{"line":422,"column":null}},"loc":{"start":{"line":422,"column":37},"end":{"line":424,"column":null}},"line":422},"51":{"name":"(anonymous_51)","decl":{"start":{"line":425,"column":38},"end":{"line":425,"column":42}},"loc":{"start":{"line":425,"column":42},"end":{"line":425,"column":null}},"line":425},"52":{"name":"(anonymous_52)","decl":{"start":{"line":425,"column":79},"end":{"line":425,"column":null}},"loc":{"start":{"line":425,"column":79},"end":{"line":425,"column":null}},"line":425},"53":{"name":"(anonymous_53)","decl":{"start":{"line":437,"column":22},"end":{"line":437,"column":26}},"loc":{"start":{"line":437,"column":26},"end":{"line":437,"column":null}},"line":437},"54":{"name":"(anonymous_54)","decl":{"start":{"line":437,"column":28},"end":{"line":437,"column":32}},"loc":{"start":{"line":437,"column":28},"end":{"line":437,"column":54}},"line":437},"55":{"name":"(anonymous_55)","decl":{"start":{"line":437,"column":83},"end":{"line":437,"column":null}},"loc":{"start":{"line":437,"column":83},"end":{"line":441,"column":null}},"line":437},"56":{"name":"(anonymous_56)","decl":{"start":{"line":440,"column":68},"end":{"line":440,"column":null}},"loc":{"start":{"line":441,"column":28},"end":{"line":441,"column":61}},"line":441},"57":{"name":"(anonymous_57)","decl":{"start":{"line":446,"column":22},"end":{"line":446,"column":26}},"loc":{"start":{"line":446,"column":26},"end":{"line":446,"column":null}},"line":446},"58":{"name":"(anonymous_58)","decl":{"start":{"line":446,"column":42},"end":{"line":446,"column":null}},"loc":{"start":{"line":446,"column":42},"end":{"line":462,"column":null}},"line":446},"59":{"name":"(anonymous_59)","decl":{"start":{"line":450,"column":31},"end":{"line":450,"column":37}},"loc":{"start":{"line":450,"column":37},"end":{"line":450,"column":61}},"line":450},"60":{"name":"(anonymous_60)","decl":{"start":{"line":450,"column":61},"end":{"line":450,"column":null}},"loc":{"start":{"line":452,"column":23},"end":{"line":452,"column":61}},"line":452},"61":{"name":"(anonymous_61)","decl":{"start":{"line":454,"column":26},"end":{"line":454,"column":30}},"loc":{"start":{"line":454,"column":30},"end":{"line":454,"column":null}},"line":454},"62":{"name":"(anonymous_62)","decl":{"start":{"line":454,"column":58},"end":{"line":454,"column":null}},"loc":{"start":{"line":454,"column":58},"end":{"line":462,"column":null}},"line":454},"63":{"name":"(anonymous_63)","decl":{"start":{"line":456,"column":30},"end":{"line":456,"column":34}},"loc":{"start":{"line":456,"column":34},"end":{"line":456,"column":null}},"line":456},"64":{"name":"(anonymous_64)","decl":{"start":{"line":456,"column":51},"end":{"line":456,"column":null}},"loc":{"start":{"line":456,"column":51},"end":{"line":458,"column":null}},"line":456},"65":{"name":"(anonymous_65)","decl":{"start":{"line":458,"column":87},"end":{"line":458,"column":null}},"loc":{"start":{"line":462,"column":33},"end":{"line":462,"column":47}},"line":462},"66":{"name":"(anonymous_66)","decl":{"start":{"line":469,"column":22},"end":{"line":469,"column":26}},"loc":{"start":{"line":469,"column":26},"end":{"line":469,"column":null}},"line":469},"67":{"name":"(anonymous_67)","decl":{"start":{"line":469,"column":28},"end":{"line":469,"column":32}},"loc":{"start":{"line":469,"column":28},"end":{"line":469,"column":41}},"line":469},"68":{"name":"(anonymous_68)","decl":{"start":{"line":469,"column":69},"end":{"line":469,"column":null}},"loc":{"start":{"line":469,"column":69},"end":{"line":479,"column":null}},"line":469},"69":{"name":"(anonymous_69)","decl":{"start":{"line":471,"column":25},"end":{"line":471,"column":29}},"loc":{"start":{"line":471,"column":29},"end":{"line":471,"column":null}},"line":471},"70":{"name":"(anonymous_70)","decl":{"start":{"line":472,"column":24},"end":{"line":472,"column":26}},"loc":{"start":{"line":472,"column":24},"end":{"line":477,"column":null}},"line":472},"71":{"name":"(anonymous_71)","decl":{"start":{"line":472,"column":26},"end":{"line":472,"column":null}},"loc":{"start":{"line":472,"column":26},"end":{"line":477,"column":null}},"line":472},"72":{"name":"(anonymous_72)","decl":{"start":{"line":475,"column":35},"end":{"line":475,"column":41}},"loc":{"start":{"line":475,"column":41},"end":{"line":475,"column":59}},"line":475},"73":{"name":"(anonymous_73)","decl":{"start":{"line":484,"column":22},"end":{"line":484,"column":26}},"loc":{"start":{"line":484,"column":26},"end":{"line":484,"column":null}},"line":484},"74":{"name":"(anonymous_74)","decl":{"start":{"line":484,"column":28},"end":{"line":484,"column":32}},"loc":{"start":{"line":484,"column":28},"end":{"line":484,"column":41}},"line":484},"75":{"name":"(anonymous_75)","decl":{"start":{"line":484,"column":72},"end":{"line":484,"column":null}},"loc":{"start":{"line":484,"column":72},"end":{"line":488,"column":null}},"line":484},"76":{"name":"(anonymous_76)","decl":{"start":{"line":488,"column":31},"end":{"line":488,"column":37}},"loc":{"start":{"line":488,"column":31},"end":{"line":488,"column":59}},"line":488},"77":{"name":"(anonymous_77)","decl":{"start":{"line":488,"column":59},"end":{"line":488,"column":null}},"loc":{"start":{"line":488,"column":59},"end":{"line":381,"column":null}},"line":488},"78":{"name":"(anonymous_78)","decl":{"start":{"line":496,"column":11},"end":{"line":496,"column":null}},"loc":{"start":{"line":496,"column":11},"end":{"line":507,"column":null}},"line":496},"79":{"name":"(anonymous_79)","decl":{"start":{"line":498,"column":20},"end":{"line":498,"column":null}},"loc":{"start":{"line":498,"column":9},"end":{"line":498,"column":19}},"line":498},"80":{"name":"(anonymous_80)","decl":{"start":{"line":512,"column":14},"end":{"line":512,"column":18}},"loc":{"start":{"line":512,"column":18},"end":{"line":512,"column":null}},"line":512},"81":{"name":"(anonymous_81)","decl":{"start":{"line":512,"column":42},"end":{"line":512,"column":null}},"loc":{"start":{"line":512,"column":42},"end":{"line":519,"column":null}},"line":512},"82":{"name":"(anonymous_82)","decl":{"start":{"line":515,"column":16},"end":{"line":515,"column":17}},"loc":{"start":{"line":515,"column":16},"end":{"line":517,"column":null}},"line":515},"83":{"name":"(anonymous_83)","decl":{"start":{"line":515,"column":17},"end":{"line":515,"column":null}},"loc":{"start":{"line":515,"column":17},"end":{"line":517,"column":null}},"line":515},"84":{"name":"(anonymous_84)","decl":{"start":{"line":516,"column":56},"end":{"line":516,"column":62}},"loc":{"start":{"line":516,"column":62},"end":{"line":516,"column":81}},"line":516},"85":{"name":"(anonymous_85)","decl":{"start":{"line":528,"column":24},"end":{"line":528,"column":30}},"loc":{"start":{"line":528,"column":30},"end":{"line":528,"column":80}},"line":528},"86":{"name":"(anonymous_86)","decl":{"start":{"line":527,"column":22},"end":{"line":527,"column":28}},"loc":{"start":{"line":527,"column":28},"end":{"line":527,"column":59}},"line":527},"87":{"name":"(anonymous_87)","decl":{"start":{"line":532,"column":27},"end":{"line":532,"column":33}},"loc":{"start":{"line":532,"column":33},"end":{"line":532,"column":46}},"line":532},"88":{"name":"(anonymous_88)","decl":{"start":{"line":532,"column":46},"end":{"line":532,"column":58}},"loc":{"start":{"line":532,"column":46},"end":{"line":532,"column":null}},"line":532},"89":{"name":"(anonymous_89)","decl":{"start":{"line":532,"column":103},"end":{"line":532,"column":null}},"loc":{"start":{"line":532,"column":103},"end":{"line":526,"column":26}},"line":532}},"branchMap":{"0":{"loc":{"start":{"line":40,"column":2},"end":{"line":40,"column":null}},"type":"if","locations":[{"start":{"line":40,"column":2},"end":{"line":40,"column":null}},{"start":{},"end":{}}],"line":40},"1":{"loc":{"start":{"line":41,"column":24},"end":{"line":41,"column":53}},"type":"binary-expr","locations":[{"start":{"line":41,"column":24},"end":{"line":41,"column":50}},{"start":{"line":41,"column":50},"end":{"line":41,"column":53}}],"line":41},"2":{"loc":{"start":{"line":44,"column":4},"end":{"line":46,"column":null}},"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":46,"column":null}},{"start":{},"end":{}}],"line":44},"3":{"loc":{"start":{"line":44,"column":8},"end":{"line":44,"column":83}},"type":"binary-expr","locations":[{"start":{"line":44,"column":8},"end":{"line":44,"column":37}},{"start":{"line":44,"column":37},"end":{"line":44,"column":83}}],"line":44},"4":{"loc":{"start":{"line":53,"column":2},"end":{"line":53,"column":null}},"type":"if","locations":[{"start":{"line":53,"column":2},"end":{"line":53,"column":null}},{"start":{},"end":{}}],"line":53},"5":{"loc":{"start":{"line":55,"column":21},"end":{"line":55,"column":51}},"type":"binary-expr","locations":[{"start":{"line":55,"column":21},"end":{"line":55,"column":47}},{"start":{"line":55,"column":47},"end":{"line":55,"column":51}}],"line":55},"6":{"loc":{"start":{"line":57,"column":4},"end":{"line":60,"column":null}},"type":"if","locations":[{"start":{"line":57,"column":4},"end":{"line":60,"column":null}},{"start":{},"end":{}}],"line":57},"7":{"loc":{"start":{"line":57,"column":8},"end":{"line":57,"column":83}},"type":"binary-expr","locations":[{"start":{"line":57,"column":8},"end":{"line":57,"column":37}},{"start":{"line":57,"column":37},"end":{"line":57,"column":83}}],"line":57},"8":{"loc":{"start":{"line":59,"column":6},"end":{"line":59,"column":null}},"type":"if","locations":[{"start":{"line":59,"column":6},"end":{"line":59,"column":null}},{"start":{},"end":{}}],"line":59},"9":{"loc":{"start":{"line":62,"column":10},"end":{"line":62,"column":28}},"type":"binary-expr","locations":[{"start":{"line":62,"column":10},"end":{"line":62,"column":22}},{"start":{"line":62,"column":22},"end":{"line":62,"column":28}}],"line":62},"10":{"loc":{"start":{"line":62,"column":28},"end":{"line":62,"column":44}},"type":"binary-expr","locations":[{"start":{"line":62,"column":28},"end":{"line":62,"column":40}},{"start":{"line":62,"column":40},"end":{"line":62,"column":44}}],"line":62},"11":{"loc":{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},"type":"if","locations":[{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},{"start":{},"end":{}}],"line":68},"12":{"loc":{"start":{"line":72,"column":2},"end":{"line":74,"column":null}},"type":"if","locations":[{"start":{"line":72,"column":2},"end":{"line":74,"column":null}},{"start":{},"end":{}}],"line":72},"13":{"loc":{"start":{"line":76,"column":2},"end":{"line":78,"column":null}},"type":"if","locations":[{"start":{"line":76,"column":2},"end":{"line":78,"column":null}},{"start":{},"end":{}}],"line":76},"14":{"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":null}},"type":"if","locations":[{"start":{"line":80,"column":2},"end":{"line":82,"column":null}},{"start":{},"end":{}}],"line":80},"15":{"loc":{"start":{"line":85,"column":2},"end":{"line":89,"column":null}},"type":"if","locations":[{"start":{"line":85,"column":2},"end":{"line":89,"column":null}},{"start":{},"end":{}}],"line":85},"16":{"loc":{"start":{"line":85,"column":6},"end":{"line":85,"column":34}},"type":"binary-expr","locations":[{"start":{"line":85,"column":6},"end":{"line":85,"column":21}},{"start":{"line":85,"column":21},"end":{"line":85,"column":34}}],"line":85},"17":{"loc":{"start":{"line":86,"column":4},"end":{"line":88,"column":null}},"type":"if","locations":[{"start":{"line":86,"column":4},"end":{"line":88,"column":null}},{"start":{},"end":{}}],"line":86},"18":{"loc":{"start":{"line":93,"column":2},"end":{"line":96,"column":null}},"type":"if","locations":[{"start":{"line":93,"column":2},"end":{"line":96,"column":null}},{"start":{},"end":{}}],"line":93},"19":{"loc":{"start":{"line":94,"column":20},"end":{"line":94,"column":null}},"type":"binary-expr","locations":[{"start":{"line":94,"column":20},"end":{"line":94,"column":34}},{"start":{"line":94,"column":34},"end":{"line":94,"column":null}}],"line":94},"20":{"loc":{"start":{"line":98,"column":2},"end":{"line":102,"column":null}},"type":"if","locations":[{"start":{"line":98,"column":2},"end":{"line":102,"column":null}},{"start":{},"end":{}}],"line":98},"21":{"loc":{"start":{"line":99,"column":17},"end":{"line":99,"column":null}},"type":"binary-expr","locations":[{"start":{"line":99,"column":17},"end":{"line":99,"column":31}},{"start":{"line":99,"column":31},"end":{"line":99,"column":null}}],"line":99},"22":{"loc":{"start":{"line":100,"column":23},"end":{"line":100,"column":null}},"type":"cond-expr","locations":[{"start":{"line":100,"column":36},"end":{"line":100,"column":80}},{"start":{"line":100,"column":80},"end":{"line":100,"column":null}}],"line":100},"23":{"loc":{"start":{"line":104,"column":2},"end":{"line":109,"column":null}},"type":"if","locations":[{"start":{"line":104,"column":2},"end":{"line":109,"column":null}},{"start":{},"end":{}}],"line":104},"24":{"loc":{"start":{"line":105,"column":4},"end":{"line":107,"column":null}},"type":"if","locations":[{"start":{"line":105,"column":4},"end":{"line":107,"column":null}},{"start":{},"end":{}}],"line":105},"25":{"loc":{"start":{"line":111,"column":2},"end":{"line":116,"column":null}},"type":"if","locations":[{"start":{"line":111,"column":2},"end":{"line":116,"column":null}},{"start":{},"end":{}}],"line":111},"26":{"loc":{"start":{"line":112,"column":4},"end":{"line":114,"column":null}},"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":114,"column":null}},{"start":{},"end":{}}],"line":112},"27":{"loc":{"start":{"line":118,"column":2},"end":{"line":122,"column":null}},"type":"if","locations":[{"start":{"line":118,"column":2},"end":{"line":122,"column":null}},{"start":{},"end":{}}],"line":118},"28":{"loc":{"start":{"line":119,"column":4},"end":{"line":121,"column":null}},"type":"if","locations":[{"start":{"line":119,"column":4},"end":{"line":121,"column":null}},{"start":{},"end":{}}],"line":119},"29":{"loc":{"start":{"line":136,"column":21},"end":{"line":136,"column":null}},"type":"cond-expr","locations":[{"start":{"line":136,"column":34},"end":{"line":136,"column":63}},{"start":{"line":136,"column":63},"end":{"line":136,"column":null}}],"line":136},"30":{"loc":{"start":{"line":155,"column":16},"end":{"line":155,"column":null}},"type":"binary-expr","locations":[{"start":{"line":155,"column":16},"end":{"line":155,"column":39}},{"start":{"line":155,"column":39},"end":{"line":155,"column":null}}],"line":155},"31":{"loc":{"start":{"line":156,"column":20},"end":{"line":156,"column":null}},"type":"binary-expr","locations":[{"start":{"line":156,"column":20},"end":{"line":156,"column":51}},{"start":{"line":156,"column":51},"end":{"line":156,"column":null}}],"line":156},"32":{"loc":{"start":{"line":158,"column":2},"end":{"line":176,"column":null}},"type":"if","locations":[{"start":{"line":158,"column":2},"end":{"line":176,"column":null}},{"start":{},"end":{}}],"line":158},"33":{"loc":{"start":{"line":158,"column":6},"end":{"line":158,"column":56}},"type":"binary-expr","locations":[{"start":{"line":158,"column":6},"end":{"line":158,"column":34}},{"start":{"line":158,"column":34},"end":{"line":158,"column":56}}],"line":158},"34":{"loc":{"start":{"line":161,"column":20},"end":{"line":161,"column":null}},"type":"binary-expr","locations":[{"start":{"line":161,"column":20},"end":{"line":161,"column":35}},{"start":{"line":161,"column":35},"end":{"line":161,"column":null}}],"line":161},"35":{"loc":{"start":{"line":162,"column":19},"end":{"line":162,"column":null}},"type":"binary-expr","locations":[{"start":{"line":162,"column":19},"end":{"line":162,"column":33}},{"start":{"line":162,"column":33},"end":{"line":162,"column":null}}],"line":162},"36":{"loc":{"start":{"line":163,"column":26},"end":{"line":163,"column":51}},"type":"binary-expr","locations":[{"start":{"line":163,"column":26},"end":{"line":163,"column":46}},{"start":{"line":163,"column":46},"end":{"line":163,"column":51}}],"line":163},"37":{"loc":{"start":{"line":170,"column":44},"end":{"line":170,"column":73}},"type":"cond-expr","locations":[{"start":{"line":170,"column":65},"end":{"line":170,"column":71}},{"start":{"line":170,"column":71},"end":{"line":170,"column":73}}],"line":170},"38":{"loc":{"start":{"line":172,"column":15},"end":{"line":174,"column":null}},"type":"cond-expr","locations":[{"start":{"line":173,"column":10},"end":{"line":173,"column":null}},{"start":{"line":174,"column":10},"end":{"line":174,"column":null}}],"line":172},"39":{"loc":{"start":{"line":173,"column":49},"end":{"line":173,"column":87}},"type":"cond-expr","locations":[{"start":{"line":173,"column":79},"end":{"line":173,"column":85}},{"start":{"line":173,"column":85},"end":{"line":173,"column":87}}],"line":173},"40":{"loc":{"start":{"line":178,"column":2},"end":{"line":191,"column":null}},"type":"if","locations":[{"start":{"line":178,"column":2},"end":{"line":191,"column":null}},{"start":{},"end":{}}],"line":178},"41":{"loc":{"start":{"line":180,"column":12},"end":{"line":180,"column":null}},"type":"binary-expr","locations":[{"start":{"line":180,"column":12},"end":{"line":180,"column":24}},{"start":{"line":180,"column":24},"end":{"line":180,"column":null}}],"line":180},"42":{"loc":{"start":{"line":180,"column":32},"end":{"line":180,"column":46}},"type":"binary-expr","locations":[{"start":{"line":180,"column":32},"end":{"line":180,"column":41}},{"start":{"line":180,"column":41},"end":{"line":180,"column":46}}],"line":180},"43":{"loc":{"start":{"line":181,"column":19},"end":{"line":181,"column":null}},"type":"binary-expr","locations":[{"start":{"line":181,"column":19},"end":{"line":181,"column":37}},{"start":{"line":181,"column":37},"end":{"line":181,"column":60}},{"start":{"line":181,"column":60},"end":{"line":181,"column":null}}],"line":181},"44":{"loc":{"start":{"line":182,"column":12},"end":{"line":182,"column":null}},"type":"binary-expr","locations":[{"start":{"line":182,"column":12},"end":{"line":182,"column":23}},{"start":{"line":182,"column":23},"end":{"line":182,"column":35}},{"start":{"line":182,"column":35},"end":{"line":182,"column":null}}],"line":182},"45":{"loc":{"start":{"line":193,"column":2},"end":{"line":205,"column":null}},"type":"if","locations":[{"start":{"line":193,"column":2},"end":{"line":205,"column":null}},{"start":{},"end":{}}],"line":193},"46":{"loc":{"start":{"line":193,"column":6},"end":{"line":193,"column":93}},"type":"binary-expr","locations":[{"start":{"line":193,"column":6},"end":{"line":193,"column":37}},{"start":{"line":193,"column":37},"end":{"line":193,"column":69}},{"start":{"line":193,"column":69},"end":{"line":193,"column":93}}],"line":193},"47":{"loc":{"start":{"line":195,"column":12},"end":{"line":195,"column":null}},"type":"binary-expr","locations":[{"start":{"line":195,"column":12},"end":{"line":195,"column":24}},{"start":{"line":195,"column":24},"end":{"line":195,"column":null}}],"line":195},"48":{"loc":{"start":{"line":195,"column":32},"end":{"line":195,"column":44}},"type":"binary-expr","locations":[{"start":{"line":195,"column":32},"end":{"line":195,"column":41}},{"start":{"line":195,"column":41},"end":{"line":195,"column":44}}],"line":195},"49":{"loc":{"start":{"line":196,"column":12},"end":{"line":196,"column":null}},"type":"binary-expr","locations":[{"start":{"line":196,"column":12},"end":{"line":196,"column":23}},{"start":{"line":196,"column":23},"end":{"line":196,"column":35}},{"start":{"line":196,"column":35},"end":{"line":196,"column":null}}],"line":196},"50":{"loc":{"start":{"line":201,"column":52},"end":{"line":201,"column":81}},"type":"cond-expr","locations":[{"start":{"line":201,"column":73},"end":{"line":201,"column":79}},{"start":{"line":201,"column":79},"end":{"line":201,"column":81}}],"line":201},"51":{"loc":{"start":{"line":203,"column":15},"end":{"line":203,"column":null}},"type":"cond-expr","locations":[{"start":{"line":203,"column":31},"end":{"line":203,"column":92}},{"start":{"line":203,"column":92},"end":{"line":203,"column":null}}],"line":203},"52":{"loc":{"start":{"line":203,"column":61},"end":{"line":203,"column":87}},"type":"cond-expr","locations":[{"start":{"line":203,"column":79},"end":{"line":203,"column":85}},{"start":{"line":203,"column":85},"end":{"line":203,"column":87}}],"line":203},"53":{"loc":{"start":{"line":207,"column":2},"end":{"line":214,"column":null}},"type":"if","locations":[{"start":{"line":207,"column":2},"end":{"line":214,"column":null}},{"start":{},"end":{}}],"line":207},"54":{"loc":{"start":{"line":210,"column":23},"end":{"line":210,"column":48}},"type":"binary-expr","locations":[{"start":{"line":210,"column":23},"end":{"line":210,"column":39}},{"start":{"line":210,"column":39},"end":{"line":210,"column":48}}],"line":210},"55":{"loc":{"start":{"line":212,"column":15},"end":{"line":212,"column":null}},"type":"cond-expr","locations":[{"start":{"line":212,"column":34},"end":{"line":212,"column":66}},{"start":{"line":212,"column":66},"end":{"line":212,"column":null}}],"line":212},"56":{"loc":{"start":{"line":220,"column":2},"end":{"line":222,"column":null}},"type":"if","locations":[{"start":{"line":220,"column":2},"end":{"line":222,"column":null}},{"start":{},"end":{}}],"line":220},"57":{"loc":{"start":{"line":220,"column":6},"end":{"line":220,"column":56}},"type":"binary-expr","locations":[{"start":{"line":220,"column":6},"end":{"line":220,"column":34}},{"start":{"line":220,"column":34},"end":{"line":220,"column":56}}],"line":220},"58":{"loc":{"start":{"line":223,"column":2},"end":{"line":225,"column":null}},"type":"if","locations":[{"start":{"line":223,"column":2},"end":{"line":225,"column":null}},{"start":{},"end":{}}],"line":223},"59":{"loc":{"start":{"line":223,"column":6},"end":{"line":223,"column":93}},"type":"binary-expr","locations":[{"start":{"line":223,"column":6},"end":{"line":223,"column":37}},{"start":{"line":223,"column":37},"end":{"line":223,"column":69}},{"start":{"line":223,"column":69},"end":{"line":223,"column":93}}],"line":223},"60":{"loc":{"start":{"line":226,"column":2},"end":{"line":228,"column":null}},"type":"if","locations":[{"start":{"line":226,"column":2},"end":{"line":228,"column":null}},{"start":{},"end":{}}],"line":226},"61":{"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":null}},"type":"if","locations":[{"start":{"line":229,"column":2},"end":{"line":231,"column":null}},{"start":{},"end":{}}],"line":229},"62":{"loc":{"start":{"line":252,"column":4},"end":{"line":252,"column":null}},"type":"if","locations":[{"start":{"line":252,"column":4},"end":{"line":252,"column":null}},{"start":{},"end":{}}],"line":252},"63":{"loc":{"start":{"line":265,"column":18},"end":{"line":265,"column":null}},"type":"binary-expr","locations":[{"start":{"line":265,"column":18},"end":{"line":265,"column":26}},{"start":{"line":265,"column":26},"end":{"line":265,"column":null}}],"line":265},"64":{"loc":{"start":{"line":266,"column":4},"end":{"line":266,"column":null}},"type":"if","locations":[{"start":{"line":266,"column":4},"end":{"line":266,"column":null}},{"start":{},"end":{}}],"line":266},"65":{"loc":{"start":{"line":266,"column":8},"end":{"line":266,"column":38}},"type":"binary-expr","locations":[{"start":{"line":266,"column":8},"end":{"line":266,"column":25}},{"start":{"line":266,"column":25},"end":{"line":266,"column":38}}],"line":266},"66":{"loc":{"start":{"line":290,"column":4},"end":{"line":305,"column":null}},"type":"if","locations":[{"start":{"line":290,"column":4},"end":{"line":305,"column":null}},{"start":{"line":303,"column":11},"end":{"line":305,"column":null}}],"line":290},"67":{"loc":{"start":{"line":293,"column":6},"end":{"line":302,"column":null}},"type":"if","locations":[{"start":{"line":293,"column":6},"end":{"line":302,"column":null}},{"start":{"line":295,"column":13},"end":{"line":302,"column":null}}],"line":293},"68":{"loc":{"start":{"line":296,"column":18},"end":{"line":296,"column":null}},"type":"binary-expr","locations":[{"start":{"line":296,"column":18},"end":{"line":296,"column":48}},{"start":{"line":296,"column":48},"end":{"line":296,"column":null}}],"line":296},"69":{"loc":{"start":{"line":297,"column":18},"end":{"line":297,"column":null}},"type":"binary-expr","locations":[{"start":{"line":297,"column":18},"end":{"line":297,"column":48}},{"start":{"line":297,"column":48},"end":{"line":297,"column":null}}],"line":297},"70":{"loc":{"start":{"line":298,"column":39},"end":{"line":298,"column":57}},"type":"cond-expr","locations":[{"start":{"line":298,"column":49},"end":{"line":298,"column":55}},{"start":{"line":298,"column":55},"end":{"line":298,"column":57}}],"line":298},"71":{"loc":{"start":{"line":298,"column":80},"end":{"line":298,"column":98}},"type":"cond-expr","locations":[{"start":{"line":298,"column":90},"end":{"line":298,"column":96}},{"start":{"line":298,"column":96},"end":{"line":298,"column":98}}],"line":298},"72":{"loc":{"start":{"line":299,"column":8},"end":{"line":301,"column":null}},"type":"if","locations":[{"start":{"line":299,"column":8},"end":{"line":301,"column":null}},{"start":{},"end":{}}],"line":299},"73":{"loc":{"start":{"line":299,"column":12},"end":{"line":299,"column":30}},"type":"binary-expr","locations":[{"start":{"line":299,"column":12},"end":{"line":299,"column":21}},{"start":{"line":299,"column":21},"end":{"line":299,"column":30}}],"line":299},"74":{"loc":{"start":{"line":317,"column":22},"end":{"line":317,"column":null}},"type":"binary-expr","locations":[{"start":{"line":317,"column":22},"end":{"line":317,"column":40}},{"start":{"line":317,"column":40},"end":{"line":317,"column":null}}],"line":317},"75":{"loc":{"start":{"line":326,"column":23},"end":{"line":326,"column":null}},"type":"binary-expr","locations":[{"start":{"line":326,"column":23},"end":{"line":326,"column":50}},{"start":{"line":326,"column":50},"end":{"line":326,"column":null}}],"line":326},"76":{"loc":{"start":{"line":327,"column":21},"end":{"line":327,"column":null}},"type":"binary-expr","locations":[{"start":{"line":327,"column":21},"end":{"line":327,"column":52}},{"start":{"line":327,"column":52},"end":{"line":327,"column":null}}],"line":327},"77":{"loc":{"start":{"line":328,"column":21},"end":{"line":328,"column":null}},"type":"binary-expr","locations":[{"start":{"line":328,"column":21},"end":{"line":328,"column":52}},{"start":{"line":328,"column":52},"end":{"line":328,"column":null}}],"line":328},"78":{"loc":{"start":{"line":333,"column":12},"end":{"line":333,"column":null}},"type":"binary-expr","locations":[{"start":{"line":333,"column":12},"end":{"line":333,"column":28}},{"start":{"line":333,"column":28},"end":{"line":333,"column":null}}],"line":333},"79":{"loc":{"start":{"line":334,"column":13},"end":{"line":334,"column":null}},"type":"binary-expr","locations":[{"start":{"line":334,"column":13},"end":{"line":334,"column":59}},{"start":{"line":334,"column":59},"end":{"line":334,"column":null}}],"line":334},"80":{"loc":{"start":{"line":335,"column":13},"end":{"line":335,"column":null}},"type":"binary-expr","locations":[{"start":{"line":335,"column":13},"end":{"line":335,"column":59}},{"start":{"line":335,"column":59},"end":{"line":335,"column":null}}],"line":335},"81":{"loc":{"start":{"line":344,"column":4},"end":{"line":347,"column":null}},"type":"if","locations":[{"start":{"line":344,"column":4},"end":{"line":347,"column":null}},{"start":{},"end":{}}],"line":344},"82":{"loc":{"start":{"line":348,"column":4},"end":{"line":350,"column":null}},"type":"if","locations":[{"start":{"line":348,"column":4},"end":{"line":350,"column":null}},{"start":{},"end":{}}],"line":348},"83":{"loc":{"start":{"line":356,"column":4},"end":{"line":360,"column":null}},"type":"if","locations":[{"start":{"line":356,"column":4},"end":{"line":360,"column":null}},{"start":{"line":358,"column":11},"end":{"line":360,"column":null}}],"line":356},"84":{"loc":{"start":{"line":365,"column":4},"end":{"line":373,"column":null}},"type":"if","locations":[{"start":{"line":365,"column":4},"end":{"line":373,"column":null}},{"start":{},"end":{}}],"line":365},"85":{"loc":{"start":{"line":365,"column":8},"end":{"line":365,"column":47}},"type":"binary-expr","locations":[{"start":{"line":365,"column":8},"end":{"line":365,"column":35}},{"start":{"line":365,"column":30},"end":{"line":365,"column":47}}],"line":365},"86":{"loc":{"start":{"line":383,"column":17},"end":{"line":383,"column":50}},"type":"cond-expr","locations":[{"start":{"line":383,"column":39},"end":{"line":383,"column":46}},{"start":{"line":383,"column":46},"end":{"line":383,"column":50}}],"line":383},"87":{"loc":{"start":{"line":437,"column":26},"end":{"line":437,"column":83}},"type":"binary-expr","locations":[{"start":{"line":437,"column":26},"end":{"line":437,"column":58}},{"start":{"line":437,"column":58},"end":{"line":437,"column":83}}],"line":437},"88":{"loc":{"start":{"line":437,"column":28},"end":{"line":437,"column":54}},"type":"binary-expr","locations":[{"start":{"line":437,"column":28},"end":{"line":437,"column":40}},{"start":{"line":437,"column":40},"end":{"line":437,"column":54}}],"line":437},"89":{"loc":{"start":{"line":452,"column":23},"end":{"line":452,"column":61}},"type":"cond-expr","locations":[{"start":{"line":452,"column":52},"end":{"line":452,"column":58}},{"start":{"line":452,"column":58},"end":{"line":452,"column":61}}],"line":452},"90":{"loc":{"start":{"line":469,"column":26},"end":{"line":469,"column":69}},"type":"binary-expr","locations":[{"start":{"line":469,"column":26},"end":{"line":469,"column":45}},{"start":{"line":469,"column":45},"end":{"line":469,"column":69}}],"line":469},"91":{"loc":{"start":{"line":484,"column":26},"end":{"line":484,"column":72}},"type":"binary-expr","locations":[{"start":{"line":484,"column":26},"end":{"line":484,"column":45}},{"start":{"line":484,"column":45},"end":{"line":484,"column":72}}],"line":484},"92":{"loc":{"start":{"line":498,"column":9},"end":{"line":498,"column":19}},"type":"binary-expr","locations":[{"start":{"line":498,"column":9},"end":{"line":498,"column":19}},{"start":{"line":498,"column":9},"end":{"line":498,"column":19}}],"line":498},"93":{"loc":{"start":{"line":508,"column":29},"end":{"line":508,"column":null}},"type":"cond-expr","locations":[{"start":{"line":508,"column":29},"end":{"line":508,"column":null}},{"start":{"line":508,"column":18},"end":{"line":508,"column":null}}],"line":508},"94":{"loc":{"start":{"line":528,"column":30},"end":{"line":528,"column":80}},"type":"binary-expr","locations":[{"start":{"line":528,"column":30},"end":{"line":528,"column":51}},{"start":{"line":528,"column":51},"end":{"line":528,"column":67}},{"start":{"line":528,"column":67},"end":{"line":528,"column":80}}],"line":528},"95":{"loc":{"start":{"line":532,"column":46},"end":{"line":529,"column":94}},"type":"cond-expr","locations":[{"start":{"line":529,"column":38},"end":{"line":529,"column":65}},{"start":{"line":529,"column":65},"end":{"line":529,"column":94}}],"line":532},"96":{"loc":{"start":{"line":530,"column":22},"end":{"line":530,"column":48}},"type":"binary-expr","locations":[{"start":{"line":530,"column":22},"end":{"line":530,"column":37}},{"start":{"line":530,"column":37},"end":{"line":530,"column":48}}],"line":530},"97":{"loc":{"start":{"line":532,"column":58},"end":{"line":532,"column":103}},"type":"binary-expr","locations":[{"start":{"line":532,"column":58},"end":{"line":532,"column":73}},{"start":{"line":532,"column":73},"end":{"line":532,"column":88}},{"start":{"line":532,"column":88},"end":{"line":532,"column":103}}],"line":532},"98":{"loc":{"start":{"line":532,"column":103},"end":{"line":532,"column":null}},"type":"binary-expr","locations":[{"start":{"line":532,"column":103},"end":{"line":532,"column":null}},{"start":{"line":532,"column":103},"end":{"line":532,"column":null}}],"line":532},"99":{"loc":{"start":{"line":541,"column":24},"end":{"line":541,"column":null}},"type":"if","locations":[{"start":{"line":541,"column":24},"end":{"line":541,"column":null}},{"start":{},"end":{}}],"line":541}},"s":{"0":1,"1":7,"2":1,"3":1,"4":1,"5":0,"6":1,"7":0,"8":0,"9":0,"10":0,"11":1,"12":1,"13":1,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":5,"23":5,"24":2,"25":3,"26":1,"27":2,"28":1,"29":1,"30":0,"31":1,"32":1,"33":0,"34":0,"35":1,"36":1,"37":0,"38":0,"39":1,"40":0,"41":0,"42":0,"43":1,"44":0,"45":0,"46":0,"47":1,"48":0,"49":0,"50":0,"51":1,"52":0,"53":0,"54":1,"55":5,"56":5,"57":5,"58":0,"59":0,"60":3,"61":3,"62":3,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":3,"72":0,"73":0,"74":0,"75":3,"76":0,"77":0,"78":0,"79":3,"80":0,"81":3,"82":5,"83":0,"84":5,"85":0,"86":5,"87":0,"88":5,"89":0,"90":5,"91":1,"92":8,"93":8,"94":8,"95":8,"96":8,"97":8,"98":8,"99":8,"100":8,"101":8,"102":5,"103":0,"104":5,"105":5,"106":5,"107":3,"108":2,"109":5,"110":8,"111":5,"112":5,"113":0,"114":5,"115":5,"116":5,"117":5,"118":5,"119":5,"120":5,"121":5,"122":5,"123":5,"124":5,"125":5,"126":5,"127":5,"128":5,"129":3,"130":3,"131":0,"132":3,"133":3,"134":3,"135":3,"136":1,"137":2,"138":2,"139":5,"140":5,"141":5,"142":5,"143":5,"144":5,"145":2,"146":1,"147":8,"148":1,"149":8,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":8,"157":0,"158":0,"159":0,"160":0,"161":0,"162":8,"163":26,"164":8,"165":8,"166":8,"167":8,"168":8,"169":8,"170":26,"171":18,"172":18,"173":18,"174":18,"175":18,"176":18,"177":18,"178":18,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":18,"225":18,"226":18,"227":1,"228":1,"229":1,"230":1,"231":1,"232":1,"233":18,"234":18,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":18,"253":18,"254":18,"255":5,"256":5,"257":5,"258":15,"259":15,"260":15,"261":0,"262":15,"263":15,"264":5,"265":18,"266":18,"267":18,"268":1,"269":1,"270":0,"271":1,"272":18,"273":18,"274":8,"275":8,"276":18,"277":8,"278":18,"279":8,"280":8,"281":8,"282":26,"283":8,"284":8,"285":32,"286":32,"287":32,"288":1,"289":32,"290":32,"291":8,"292":8,"293":79,"294":8,"295":75,"296":8,"297":0,"298":8,"299":97,"300":97,"301":97,"302":97,"303":8,"304":87,"305":8,"306":1},"f":{"0":7,"1":1,"2":1,"3":5,"4":5,"5":3,"6":0,"7":0,"8":0,"9":5,"10":8,"11":8,"12":8,"13":5,"14":5,"15":5,"16":2,"17":5,"18":2,"19":1,"20":1,"21":0,"22":0,"23":26,"24":8,"25":26,"26":18,"27":36,"28":18,"29":18,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":18,"54":18,"55":2,"56":1,"57":18,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":18,"67":18,"68":5,"69":5,"70":15,"71":15,"72":0,"73":18,"74":18,"75":1,"76":0,"77":18,"78":26,"79":18,"80":26,"81":8,"82":32,"83":32,"84":1,"85":79,"86":75,"87":0,"88":97,"89":87},"b":{"0":[1,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[1,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[1,0],"11":[2,3],"12":[1,2],"13":[1,1],"14":[0,1],"15":[0,1],"16":[1,0],"17":[0,0],"18":[0,1],"19":[0,0],"20":[0,1],"21":[0,0],"22":[0,0],"23":[0,1],"24":[0,0],"25":[0,1],"26":[0,0],"27":[0,1],"28":[0,0],"29":[5,0],"30":[3,0],"31":[3,2],"32":[0,3],"33":[3,3],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,3],"41":[0,0],"42":[0,0],"43":[0,0,0],"44":[0,0,0],"45":[0,3],"46":[3,3,3],"47":[0,0],"48":[0,0],"49":[0,0,0],"50":[0,0],"51":[0,0],"52":[0,0],"53":[0,3],"54":[0,0],"55":[0,0],"56":[0,5],"57":[5,5],"58":[0,5],"59":[5,5,5],"60":[0,5],"61":[0,5],"62":[0,5],"63":[5,4],"64":[0,5],"65":[5,5],"66":[3,2],"67":[0,3],"68":[3,2],"69":[3,2],"70":[3,0],"71":[2,1],"72":[1,2],"73":[3,1],"74":[5,5],"75":[5,0],"76":[5,4],"77":[5,4],"78":[5,2],"79":[5,2],"80":[5,2],"81":[0,0],"82":[0,0],"83":[0,0],"84":[8,18],"85":[26,8],"86":[5,13],"87":[18,3],"88":[18,3],"89":[0,0],"90":[18,5],"91":[18,5],"92":[18,5],"93":[0,8],"94":[79,4,4],"95":[97,0],"96":[97,97],"97":[97,97,92],"98":[291,43],"99":[1,0]},"meta":{"lastBranch":100,"lastFunction":90,"lastStatement":307,"seen":{"s:27:27:31:Infinity":0,"f:34:9:34:19":0,"s:35:2:35:Infinity":1,"f:38:9:38:24":1,"s:39:16:39:Infinity":2,"b:40:2:40:Infinity:undefined:undefined:undefined:undefined":0,"s:40:2:40:Infinity":3,"s:40:19:40:Infinity":4,"s:41:19:41:Infinity":5,"b:41:24:41:50:41:50:41:53":1,"s:42:2:47:Infinity":6,"s:43:22:43:Infinity":7,"b:44:4:46:Infinity:undefined:undefined:undefined:undefined":2,"s:44:4:46:Infinity":8,"b:44:8:44:37:44:37:44:83":3,"s:45:6:45:Infinity":9,"s:48:2:48:Infinity":10,"f:51:9:51:28":2,"s:52:16:52:Infinity":11,"b:53:2:53:Infinity:undefined:undefined:undefined:undefined":4,"s:53:2:53:Infinity":12,"s:53:19:53:Infinity":13,"s:54:26:54:Infinity":14,"s:55:2:61:Infinity":15,"b:55:21:55:47:55:47:55:51":5,"s:56:22:56:Infinity":16,"b:57:4:60:Infinity:undefined:undefined:undefined:undefined":6,"s:57:4:60:Infinity":17,"b:57:8:57:37:57:37:57:83":7,"s:58:6:58:Infinity":18,"b:59:6:59:Infinity:undefined:undefined:undefined:undefined":8,"s:59:6:59:Infinity":19,"s:59:30:59:Infinity":20,"s:62:2:62:Infinity":21,"b:62:10:62:22:62:22:62:28":9,"b:62:28:62:40:62:40:62:44":10,"f:65:16:65:40":3,"s:66:16:66:Infinity":22,"b:68:2:70:Infinity:undefined:undefined:undefined:undefined":11,"s:68:2:70:Infinity":23,"s:69:4:69:Infinity":24,"b:72:2:74:Infinity:undefined:undefined:undefined:undefined":12,"s:72:2:74:Infinity":25,"s:73:4:73:Infinity":26,"b:76:2:78:Infinity:undefined:undefined:undefined:undefined":13,"s:76:2:78:Infinity":27,"s:77:4:77:Infinity":28,"b:80:2:82:Infinity:undefined:undefined:undefined:undefined":14,"s:80:2:82:Infinity":29,"s:81:4:81:Infinity":30,"s:84:19:84:Infinity":31,"b:85:2:89:Infinity:undefined:undefined:undefined:undefined":15,"s:85:2:89:Infinity":32,"b:85:6:85:21:85:21:85:34":16,"b:86:4:88:Infinity:undefined:undefined:undefined:undefined":17,"s:86:4:88:Infinity":33,"s:87:6:87:Infinity":34,"s:91:21:91:Infinity":35,"b:93:2:96:Infinity:undefined:undefined:undefined:undefined":18,"s:93:2:96:Infinity":36,"s:94:20:94:Infinity":37,"b:94:20:94:34:94:34:94:Infinity":19,"s:95:4:95:Infinity":38,"b:98:2:102:Infinity:undefined:undefined:undefined:undefined":20,"s:98:2:102:Infinity":39,"s:99:17:99:Infinity":40,"b:99:17:99:31:99:31:99:Infinity":21,"s:100:23:100:Infinity":41,"b:100:36:100:80:100:80:100:Infinity":22,"s:101:4:101:Infinity":42,"b:104:2:109:Infinity:undefined:undefined:undefined:undefined":23,"s:104:2:109:Infinity":43,"b:105:4:107:Infinity:undefined:undefined:undefined:undefined":24,"s:105:4:107:Infinity":44,"s:106:6:106:Infinity":45,"s:108:4:108:Infinity":46,"b:111:2:116:Infinity:undefined:undefined:undefined:undefined":25,"s:111:2:116:Infinity":47,"b:112:4:114:Infinity:undefined:undefined:undefined:undefined":26,"s:112:4:114:Infinity":48,"s:113:6:113:Infinity":49,"s:115:4:115:Infinity":50,"b:118:2:122:Infinity:undefined:undefined:undefined:undefined":27,"s:118:2:122:Infinity":51,"b:119:4:121:Infinity:undefined:undefined:undefined:undefined":28,"s:119:4:121:Infinity":52,"s:120:6:120:Infinity":53,"s:124:2:124:Infinity":54,"f:127:15:127:Infinity":4,"s:132:2:151:Infinity":55,"s:133:19:141:Infinity":56,"b:136:34:136:63:136:63:136:Infinity":29,"s:143:4:147:Infinity":57,"s:149:4:149:Infinity":58,"s:150:4:150:Infinity":59,"f:154:9:154:36":5,"s:155:16:155:Infinity":60,"b:155:16:155:39:155:39:155:Infinity":30,"s:156:20:156:Infinity":61,"b:156:20:156:51:156:51:156:Infinity":31,"b:158:2:176:Infinity:undefined:undefined:undefined:undefined":32,"s:158:2:176:Infinity":62,"b:158:6:158:34:158:34:158:56":33,"s:159:47:159:Infinity":63,"s:160:4:164:Infinity":64,"s:161:20:161:Infinity":65,"b:161:20:161:35:161:35:161:Infinity":34,"s:162:19:162:Infinity":66,"b:162:19:162:33:162:33:162:Infinity":35,"s:163:6:163:Infinity":67,"b:163:26:163:46:163:46:163:51":36,"s:166:27:166:Infinity":68,"f:166:58:166:59":6,"s:166:78:166:94":69,"s:168:4:175:Infinity":70,"b:170:65:170:71:170:71:170:73":37,"b:173:10:173:Infinity:174:10:174:Infinity":38,"b:173:79:173:85:173:85:173:87":39,"b:178:2:191:Infinity:undefined:undefined:undefined:undefined":40,"s:178:2:191:Infinity":71,"s:179:27:183:Infinity":72,"f:179:49:179:50":7,"s:179:73:183:6":73,"b:180:12:180:24:180:24:180:Infinity":41,"b:180:32:180:41:180:41:180:46":42,"b:181:19:181:37:181:37:181:60:181:60:181:Infinity":43,"b:182:12:182:23:182:23:182:35:182:35:182:Infinity":44,"s:185:4:190:Infinity":74,"b:193:2:205:Infinity:undefined:undefined:undefined:undefined":45,"s:193:2:205:Infinity":75,"b:193:6:193:37:193:37:193:69:193:69:193:93":46,"s:194:22:197:Infinity":76,"f:194:44:194:45":8,"s:194:57:197:6":77,"b:195:12:195:24:195:24:195:Infinity":47,"b:195:32:195:41:195:41:195:44":48,"b:196:12:196:23:196:23:196:35:196:35:196:Infinity":49,"s:199:4:204:Infinity":78,"b:201:73:201:79:201:79:201:81":50,"b:203:31:203:92:203:92:203:Infinity":51,"b:203:79:203:85:203:85:203:87":52,"b:207:2:214:Infinity:undefined:undefined:undefined:undefined":53,"s:207:2:214:Infinity":79,"s:208:4:213:Infinity":80,"b:210:23:210:39:210:39:210:48":54,"b:212:34:212:66:212:66:212:Infinity":55,"s:216:2:216:Infinity":81,"f:219:9:219:27":9,"b:220:2:222:Infinity:undefined:undefined:undefined:undefined":56,"s:220:2:222:Infinity":82,"b:220:6:220:34:220:34:220:56":57,"s:221:4:221:Infinity":83,"b:223:2:225:Infinity:undefined:undefined:undefined:undefined":58,"s:223:2:225:Infinity":84,"b:223:6:223:37:223:37:223:69:223:69:223:93":59,"s:224:4:224:Infinity":85,"b:226:2:228:Infinity:undefined:undefined:undefined:undefined":60,"s:226:2:228:Infinity":86,"s:227:4:227:Infinity":87,"b:229:2:231:Infinity:undefined:undefined:undefined:undefined":61,"s:229:2:231:Infinity":88,"s:230:4:230:Infinity":89,"s:232:2:232:Infinity":90,"s:235:6:539:Infinity":91,"f:235:28:235:34":10,"s:236:30:236:Infinity":92,"s:237:24:237:Infinity":93,"s:238:32:238:Infinity":94,"s:239:44:239:Infinity":95,"s:240:36:240:Infinity":96,"s:243:25:245:Infinity":97,"f:243:25:243:31":11,"s:244:4:244:Infinity":98,"s:247:2:249:Infinity":99,"f:247:15:247:21":12,"s:248:4:248:Infinity":100,"s:251:23:262:Infinity":101,"f:251:23:251:30":13,"b:252:4:252:Infinity:undefined:undefined:undefined:undefined":62,"s:252:4:252:Infinity":102,"s:252:21:252:Infinity":103,"s:253:4:253:Infinity":104,"s:254:4:261:Infinity":105,"s:255:21:255:Infinity":106,"s:256:6:256:Infinity":107,"s:258:6:258:Infinity":108,"s:260:6:260:Infinity":109,"s:264:22:337:Infinity":110,"f:264:22:264:29":14,"s:265:18:265:Infinity":111,"b:265:18:265:26:265:26:265:Infinity":63,"b:266:4:266:Infinity:undefined:undefined:undefined:undefined":64,"s:266:4:266:Infinity":112,"b:266:8:266:25:266:25:266:38":65,"s:266:38:266:Infinity":113,"s:268:29:268:Infinity":114,"s:269:4:269:Infinity":115,"f:269:16:269:24":15,"s:269:24:269:42":116,"s:270:4:270:Infinity":117,"s:272:10:272:Infinity":118,"s:273:10:273:Infinity":119,"s:275:4:275:Infinity":120,"s:277:4:281:Infinity":121,"s:278:6:278:Infinity":122,"s:280:6:280:Infinity":123,"s:283:51:283:Infinity":124,"s:285:19:285:Infinity":125,"s:287:19:287:Infinity":126,"s:288:52:288:Infinity":127,"b:290:4:305:Infinity:303:11:305:Infinity":66,"s:290:4:305:Infinity":128,"s:291:6:291:Infinity":129,"b:293:6:302:Infinity:295:13:302:Infinity":67,"s:293:6:302:Infinity":130,"s:294:8:294:Infinity":131,"s:296:18:296:Infinity":132,"b:296:18:296:48:296:48:296:Infinity":68,"s:297:18:297:Infinity":133,"b:297:18:297:48:297:48:297:Infinity":69,"s:298:8:298:Infinity":134,"b:298:49:298:55:298:55:298:57":70,"b:298:90:298:96:298:96:298:98":71,"b:299:8:301:Infinity:undefined:undefined:undefined:undefined":72,"s:299:8:301:Infinity":135,"b:299:12:299:21:299:21:299:30":73,"s:300:10:300:Infinity":136,"f:300:69:300:70":16,"s:300:84:300:101":137,"s:304:6:304:Infinity":138,"s:307:22:307:Infinity":139,"s:309:34:319:Infinity":140,"b:317:22:317:40:317:40:317:Infinity":74,"s:320:4:320:Infinity":141,"f:320:16:320:24":17,"s:320:24:320:47":142,"s:322:4:329:Infinity":143,"b:326:23:326:50:326:50:326:Infinity":75,"b:327:21:327:52:327:52:327:Infinity":76,"b:328:21:328:52:328:52:328:Infinity":77,"s:331:4:336:Infinity":144,"b:333:12:333:28:333:28:333:Infinity":78,"b:334:13:334:59:334:59:334:Infinity":79,"f:334:38:334:39":18,"s:334:50:334:54":145,"b:335:13:335:59:335:59:335:Infinity":80,"f:335:38:335:39":19,"s:335:50:335:54":146,"s:339:27:341:Infinity":147,"f:339:27:339:28":20,"s:340:4:340:Infinity":148,"s:343:25:352:Infinity":149,"f:343:25:343:26":21,"b:344:4:347:Infinity:undefined:undefined:undefined:undefined":81,"s:344:4:347:Infinity":150,"s:345:6:345:Infinity":151,"s:346:6:346:Infinity":152,"b:348:4:350:Infinity:undefined:undefined:undefined:undefined":82,"s:348:4:350:Infinity":153,"s:349:6:349:Infinity":154,"s:351:4:351:Infinity":155,"s:354:26:362:Infinity":156,"f:354:26:354:27":22,"s:355:19:355:Infinity":157,"b:356:4:360:Infinity:358:11:360:Infinity":83,"s:356:4:360:Infinity":158,"s:357:6:357:Infinity":159,"s:359:6:359:Infinity":160,"s:361:4:361:Infinity":161,"s:364:2:374:Infinity":162,"f:364:15:364:21":23,"b:365:4:373:Infinity:undefined:undefined:undefined:undefined":84,"s:365:4:373:Infinity":163,"b:365:8:365:35:365:30:365:47":85,"s:366:12:366:Infinity":164,"s:367:12:367:Infinity":165,"s:368:6:372:Infinity":166,"s:376:2:526:Infinity":167,"f:376:2:376:Infinity":24,"s:376:2:376:Infinity":168,"s:376:2:496:Infinity":169,"f:379:13:379:17":25,"s:379:17:379:29":170,"f:380:11:380:12":26,"s:380:17:381:Infinity":171,"f:380:22:380:Infinity":27,"s:380:22:380:Infinity":172,"s:380:22:383:Infinity":173,"s:383:17:383:50":174,"b:383:39:383:46:383:46:383:50":86,"s:383:50:386:Infinity":175,"f:383:50:383:Infinity":28,"s:386:43:386:54":176,"s:386:54:434:Infinity":177,"f:388:22:388:26":29,"s:388:26:388:46":178,"f:389:19:389:29":30,"s:389:19:429:Infinity":179,"f:389:29:389:Infinity":31,"s:389:29:389:Infinity":180,"s:389:29:399:Infinity":181,"f:391:28:391:32":32,"s:391:32:391:71":182,"f:391:71:391:Infinity":33,"s:391:71:391:Infinity":183,"s:391:71:399:Infinity":184,"f:393:31:393:35":34,"s:393:35:393:55":185,"f:394:30:394:34":35,"s:394:30:397:Infinity":186,"f:394:34:394:Infinity":36,"s:394:34:394:Infinity":187,"s:394:34:396:Infinity":188,"s:396:58:396:68":189,"s:396:68:397:Infinity":190,"f:396:68:396:Infinity":37,"s:397:58:397:67":191,"s:397:67:397:Infinity":192,"s:399:29:399:Infinity":193,"s:399:29:414:Infinity":194,"f:404:28:404:32":38,"s:404:32:404:71":195,"f:404:71:404:Infinity":39,"s:404:71:404:Infinity":196,"s:404:71:414:Infinity":197,"f:406:31:406:35":40,"s:406:35:406:55":198,"f:407:29:407:30":41,"s:407:36:412:Infinity":199,"f:407:37:407:Infinity":42,"s:407:37:407:Infinity":200,"s:407:37:409:Infinity":201,"s:409:53:409:60":202,"s:409:60:410:Infinity":203,"f:409:60:409:Infinity":43,"s:410:57:410:66":204,"s:410:66:411:Infinity":205,"f:410:66:410:Infinity":44,"s:411:57:411:66":206,"s:411:66:412:Infinity":207,"f:411:66:411:Infinity":45,"s:412:64:412:80":208,"s:412:80:412:Infinity":209,"s:414:29:414:Infinity":210,"s:414:29:429:Infinity":211,"f:419:28:419:32":46,"s:419:32:419:74":212,"f:419:74:419:Infinity":47,"s:419:74:419:Infinity":213,"s:419:74:429:Infinity":214,"f:421:31:421:35":48,"s:421:35:421:55":215,"f:422:29:422:30":49,"s:422:37:425:Infinity":216,"f:422:37:422:Infinity":50,"s:422:37:422:Infinity":217,"s:422:37:424:Infinity":218,"s:424:57:424:66":219,"s:424:66:424:Infinity":220,"f:425:38:425:42":51,"s:425:42:425:79":221,"f:425:79:425:Infinity":52,"s:425:79:425:Infinity":222,"s:429:29:429:Infinity":223,"s:434:19:441:Infinity":224,"f:437:22:437:26":53,"s:437:26:437:83":225,"b:437:26:437:58:437:58:437:83":87,"f:437:28:437:32":54,"s:437:28:437:54":226,"b:437:28:437:40:437:40:437:54":88,"f:437:83:437:Infinity":55,"s:437:83:437:Infinity":227,"s:437:83:440:Infinity":228,"s:440:47:440:68":229,"s:440:68:441:Infinity":230,"f:440:68:440:Infinity":56,"s:441:28:441:61":231,"s:441:61:441:Infinity":232,"s:441:61:462:Infinity":233,"f:446:22:446:26":57,"s:446:26:446:42":234,"f:446:42:446:Infinity":58,"s:446:42:446:Infinity":235,"s:446:42:450:61":236,"f:450:31:450:37":59,"s:450:37:450:61":237,"s:450:61:452:Infinity":238,"f:450:61:450:Infinity":60,"s:452:23:452:61":239,"b:452:52:452:58:452:58:452:61":89,"s:452:61:462:Infinity":240,"f:454:26:454:30":61,"s:454:30:454:58":241,"f:454:58:454:Infinity":62,"s:454:58:454:Infinity":242,"s:454:58:458:Infinity":243,"f:456:30:456:34":63,"s:456:34:456:51":244,"f:456:51:456:Infinity":64,"s:456:51:456:Infinity":245,"s:456:51:458:Infinity":246,"s:458:72:458:87":247,"s:458:87:458:Infinity":248,"s:458:87:462:Infinity":249,"f:458:87:458:Infinity":65,"s:462:33:462:47":250,"s:462:47:462:Infinity":251,"s:462:47:479:Infinity":252,"f:469:22:469:26":66,"s:469:26:469:69":253,"b:469:26:469:45:469:45:469:69":90,"f:469:28:469:32":67,"s:469:28:469:41":254,"f:469:69:469:Infinity":68,"s:469:69:469:Infinity":255,"s:469:69:479:Infinity":256,"f:471:25:471:29":69,"s:471:29:471:44":257,"f:472:24:472:26":70,"s:472:24:477:Infinity":258,"f:472:26:472:Infinity":71,"s:472:26:472:Infinity":259,"s:472:26:475:59":260,"f:475:35:475:41":72,"s:475:41:475:59":261,"s:475:59:477:Infinity":262,"s:477:29:477:Infinity":263,"s:479:23:479:Infinity":264,"s:479:23:488:Infinity":265,"f:484:22:484:26":73,"s:484:26:484:72":266,"b:484:26:484:45:484:45:484:72":91,"f:484:28:484:32":74,"s:484:28:484:41":267,"f:484:72:484:Infinity":75,"s:484:72:484:Infinity":268,"s:484:72:488:59":269,"f:488:31:488:37":76,"s:488:31:488:59":270,"s:488:59:488:Infinity":271,"s:488:59:381:Infinity":272,"f:488:59:488:Infinity":77,"s:381:50:381:Infinity":273,"s:496:11:507:Infinity":274,"f:496:11:496:Infinity":78,"s:496:11:498:Infinity":275,"s:496:11:498:20":276,"s:498:20:498:19":277,"f:498:20:498:Infinity":79,"s:498:9:498:19":278,"b:498:9:498:19:498:9:498:19":92,"s:508:18:508:29":279,"s:508:29:508:Infinity":280,"b:508:29:508:Infinity:508:18:508:Infinity":93,"s:508:29:519:Infinity":281,"f:512:14:512:18":80,"s:512:18:512:42":282,"f:512:42:512:Infinity":81,"s:512:42:512:Infinity":283,"s:512:42:519:Infinity":284,"f:515:16:515:17":82,"s:515:16:517:Infinity":285,"f:515:17:515:Infinity":83,"s:515:17:515:Infinity":286,"s:515:17:516:81":287,"f:516:56:516:62":84,"s:516:62:516:81":288,"s:516:81:517:Infinity":289,"s:517:20:517:Infinity":290,"s:519:15:519:Infinity":291,"s:519:15:528:80":292,"f:528:24:528:30":85,"s:528:30:528:80":293,"b:528:30:528:51:528:51:528:67:528:67:528:80":94,"s:528:80:527:59":294,"f:527:22:527:28":86,"s:527:28:527:59":295,"s:527:59:532:46":296,"f:532:27:532:33":87,"s:532:33:532:46":297,"s:532:46:532:Infinity":298,"f:532:46:532:58":88,"s:532:46:529:94":299,"b:529:38:529:65:529:65:529:94":95,"s:530:22:530:48":300,"b:530:22:530:37:530:37:530:48":96,"s:532:58:532:103":301,"b:532:58:532:73:532:73:532:88:532:88:532:103":97,"s:532:103:532:Infinity":302,"b:532:103:532:Infinity:532:103:532:Infinity":98,"s:532:103:526:Infinity":303,"f:532:103:532:Infinity":89,"s:532:103:526:26":304,"s:526:26:526:Infinity":305,"b:541:24:541:Infinity:undefined:undefined:undefined:undefined":99,"s:541:24:541:Infinity":306}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/database/DatabaseManager.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/database/DatabaseManager.tsx","statementMap":{"0":{"start":{"line":6,"column":47},"end":{"line":9,"column":null}},"1":{"start":{"line":11,"column":40},"end":{"line":14,"column":null}},"2":{"start":{"line":16,"column":6},"end":{"line":108,"column":null}},"3":{"start":{"line":17,"column":22},"end":{"line":17,"column":null}},"4":{"start":{"line":18,"column":22},"end":{"line":18,"column":null}},"5":{"start":{"line":19,"column":34},"end":{"line":19,"column":null}},"6":{"start":{"line":21,"column":21},"end":{"line":28,"column":null}},"7":{"start":{"line":22,"column":18},"end":{"line":22,"column":null}},"8":{"start":{"line":23,"column":4},"end":{"line":23,"column":null}},"9":{"start":{"line":24,"column":18},"end":{"line":24,"column":null}},"10":{"start":{"line":25,"column":4},"end":{"line":25,"column":null}},"11":{"start":{"line":26,"column":19},"end":{"line":26,"column":null}},"12":{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},"13":{"start":{"line":30,"column":23},"end":{"line":40,"column":null}},"14":{"start":{"line":31,"column":4},"end":{"line":39,"column":null}},"15":{"start":{"line":32,"column":6},"end":{"line":32,"column":null}},"16":{"start":{"line":33,"column":18},"end":{"line":33,"column":null}},"17":{"start":{"line":34,"column":6},"end":{"line":34,"column":null}},"18":{"start":{"line":35,"column":6},"end":{"line":35,"column":null}},"19":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"20":{"start":{"line":38,"column":6},"end":{"line":38,"column":null}},"21":{"start":{"line":42,"column":21},"end":{"line":52,"column":null}},"22":{"start":{"line":43,"column":4},"end":{"line":51,"column":null}},"23":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"24":{"start":{"line":45,"column":18},"end":{"line":45,"column":null}},"25":{"start":{"line":46,"column":6},"end":{"line":46,"column":null}},"26":{"start":{"line":47,"column":6},"end":{"line":47,"column":null}},"27":{"start":{"line":48,"column":6},"end":{"line":48,"column":null}},"28":{"start":{"line":50,"column":6},"end":{"line":50,"column":null}},"29":{"start":{"line":54,"column":23},"end":{"line":57,"column":null}},"30":{"start":{"line":55,"column":4},"end":{"line":55,"column":null}},"31":{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},"32":{"start":{"line":59,"column":22},"end":{"line":69,"column":null}},"33":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"34":{"start":{"line":61,"column":16},"end":{"line":61,"column":null}},"35":{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},"36":{"start":{"line":63,"column":4},"end":{"line":68,"column":null}},"37":{"start":{"line":64,"column":6},"end":{"line":64,"column":null}},"38":{"start":{"line":65,"column":6},"end":{"line":65,"column":null}},"39":{"start":{"line":66,"column":6},"end":{"line":66,"column":null}},"40":{"start":{"line":67,"column":6},"end":{"line":67,"column":null}},"41":{"start":{"line":71,"column":2},"end":{"line":98,"column":56}},"42":{"start":{"line":71,"column":2},"end":{"line":71,"column":null}},"43":{"start":{"line":71,"column":2},"end":{"line":73,"column":73}},"44":{"start":{"line":73,"column":45},"end":{"line":73,"column":73}},"45":{"start":{"line":73,"column":73},"end":{"line":74,"column":null}},"46":{"start":{"line":74,"column":19},"end":{"line":74,"column":43}},"47":{"start":{"line":74,"column":43},"end":{"line":98,"column":56}},"48":{"start":{"line":76,"column":16},"end":{"line":76,"column":30}},"49":{"start":{"line":76,"column":30},"end":{"line":98,"column":56}},"50":{"start":{"line":76,"column":30},"end":{"line":76,"column":null}},"51":{"start":{"line":76,"column":30},"end":{"line":88,"column":null}},"52":{"start":{"line":78,"column":19},"end":{"line":78,"column":32}},"53":{"start":{"line":79,"column":14},"end":{"line":82,"column":null}},"54":{"start":{"line":79,"column":16},"end":{"line":79,"column":null}},"55":{"start":{"line":79,"column":16},"end":{"line":84,"column":null}},"56":{"start":{"line":84,"column":39},"end":{"line":84,"column":59}},"57":{"start":{"line":84,"column":59},"end":{"line":85,"column":69}},"58":{"start":{"line":85,"column":53},"end":{"line":85,"column":69}},"59":{"start":{"line":85,"column":69},"end":{"line":85,"column":null}},"60":{"start":{"line":85,"column":74},"end":{"line":86,"column":75}},"61":{"start":{"line":86,"column":60},"end":{"line":86,"column":75}},"62":{"start":{"line":86,"column":75},"end":{"line":86,"column":null}},"63":{"start":{"line":86,"column":97},"end":{"line":82,"column":null}},"64":{"start":{"line":86,"column":97},"end":{"line":81,"column":71}},"65":{"start":{"line":82,"column":23},"end":{"line":82,"column":62}},"66":{"start":{"line":82,"column":62},"end":{"line":82,"column":null}},"67":{"start":{"line":88,"column":13},"end":{"line":88,"column":null}},"68":{"start":{"line":88,"column":13},"end":{"line":94,"column":92}},"69":{"start":{"line":94,"column":62},"end":{"line":94,"column":92}},"70":{"start":{"line":94,"column":92},"end":{"line":98,"column":92}},"71":{"start":{"line":98,"column":62},"end":{"line":98,"column":92}},"72":{"start":{"line":98,"column":92},"end":{"line":101,"column":41}},"73":{"start":{"line":101,"column":41},"end":{"line":102,"column":57}},"74":{"start":{"line":102,"column":57},"end":{"line":94,"column":56}},"75":{"start":{"line":102,"column":57},"end":{"line":94,"column":44}},"76":{"start":{"line":94,"column":44},"end":{"line":98,"column":56}},"77":{"start":{"line":94,"column":44},"end":{"line":98,"column":44}},"78":{"start":{"line":98,"column":44},"end":{"line":98,"column":56}},"79":{"start":{"line":110,"column":31},"end":{"line":110,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":16,"column":35},"end":{"line":16,"column":41}},"loc":{"start":{"line":16,"column":41},"end":{"line":108,"column":1}},"line":16},"1":{"name":"(anonymous_1)","decl":{"start":{"line":21,"column":21},"end":{"line":21,"column":28}},"loc":{"start":{"line":21,"column":47},"end":{"line":28,"column":null}},"line":21},"2":{"name":"(anonymous_2)","decl":{"start":{"line":30,"column":23},"end":{"line":30,"column":35}},"loc":{"start":{"line":30,"column":35},"end":{"line":40,"column":null}},"line":30},"3":{"name":"(anonymous_3)","decl":{"start":{"line":42,"column":21},"end":{"line":42,"column":33}},"loc":{"start":{"line":42,"column":33},"end":{"line":52,"column":null}},"line":42},"4":{"name":"(anonymous_4)","decl":{"start":{"line":54,"column":23},"end":{"line":54,"column":30}},"loc":{"start":{"line":54,"column":45},"end":{"line":57,"column":null}},"line":54},"5":{"name":"(anonymous_5)","decl":{"start":{"line":59,"column":22},"end":{"line":59,"column":29}},"loc":{"start":{"line":59,"column":44},"end":{"line":69,"column":null}},"line":59},"6":{"name":"(anonymous_6)","decl":{"start":{"line":71,"column":2},"end":{"line":71,"column":null}},"loc":{"start":{"line":71,"column":2},"end":{"line":98,"column":56}},"line":71},"7":{"name":"(anonymous_7)","decl":{"start":{"line":73,"column":39},"end":{"line":73,"column":45}},"loc":{"start":{"line":73,"column":45},"end":{"line":73,"column":73}},"line":73},"8":{"name":"(anonymous_8)","decl":{"start":{"line":73,"column":73},"end":{"line":73,"column":null}},"loc":{"start":{"line":74,"column":19},"end":{"line":74,"column":43}},"line":74},"9":{"name":"(anonymous_9)","decl":{"start":{"line":76,"column":12},"end":{"line":76,"column":16}},"loc":{"start":{"line":76,"column":16},"end":{"line":76,"column":null}},"line":76},"10":{"name":"(anonymous_10)","decl":{"start":{"line":76,"column":30},"end":{"line":76,"column":null}},"loc":{"start":{"line":76,"column":30},"end":{"line":98,"column":56}},"line":76},"11":{"name":"(anonymous_11)","decl":{"start":{"line":78,"column":15},"end":{"line":78,"column":19}},"loc":{"start":{"line":78,"column":19},"end":{"line":78,"column":null}},"line":78},"12":{"name":"(anonymous_12)","decl":{"start":{"line":79,"column":14},"end":{"line":79,"column":16}},"loc":{"start":{"line":79,"column":14},"end":{"line":82,"column":null}},"line":79},"13":{"name":"(anonymous_13)","decl":{"start":{"line":79,"column":16},"end":{"line":79,"column":null}},"loc":{"start":{"line":79,"column":16},"end":{"line":82,"column":null}},"line":79},"14":{"name":"(anonymous_14)","decl":{"start":{"line":85,"column":47},"end":{"line":85,"column":53}},"loc":{"start":{"line":85,"column":53},"end":{"line":85,"column":69}},"line":85},"15":{"name":"(anonymous_15)","decl":{"start":{"line":86,"column":54},"end":{"line":86,"column":60}},"loc":{"start":{"line":86,"column":60},"end":{"line":86,"column":75}},"line":86},"16":{"name":"(anonymous_16)","decl":{"start":{"line":86,"column":97},"end":{"line":86,"column":null}},"loc":{"start":{"line":86,"column":97},"end":{"line":82,"column":null}},"line":86},"17":{"name":"(anonymous_17)","decl":{"start":{"line":88,"column":13},"end":{"line":88,"column":null}},"loc":{"start":{"line":88,"column":13},"end":{"line":98,"column":56}},"line":88},"18":{"name":"(anonymous_18)","decl":{"start":{"line":94,"column":56},"end":{"line":94,"column":62}},"loc":{"start":{"line":94,"column":62},"end":{"line":94,"column":92}},"line":94},"19":{"name":"(anonymous_19)","decl":{"start":{"line":98,"column":56},"end":{"line":98,"column":62}},"loc":{"start":{"line":98,"column":62},"end":{"line":98,"column":92}},"line":98},"20":{"name":"(anonymous_20)","decl":{"start":{"line":102,"column":57},"end":{"line":102,"column":null}},"loc":{"start":{"line":102,"column":57},"end":{"line":94,"column":44}},"line":102},"21":{"name":"(anonymous_21)","decl":{"start":{"line":94,"column":44},"end":{"line":94,"column":56}},"loc":{"start":{"line":94,"column":44},"end":{"line":98,"column":44}},"line":94}},"branchMap":{"0":{"loc":{"start":{"line":63,"column":4},"end":{"line":68,"column":null}},"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":68,"column":null}},{"start":{},"end":{}}],"line":63},"1":{"loc":{"start":{"line":74,"column":19},"end":{"line":74,"column":43}},"type":"cond-expr","locations":[{"start":{"line":74,"column":34},"end":{"line":74,"column":40}},{"start":{"line":74,"column":40},"end":{"line":74,"column":43}}],"line":74},"2":{"loc":{"start":{"line":84,"column":39},"end":{"line":84,"column":59}},"type":"binary-expr","locations":[{"start":{"line":84,"column":39},"end":{"line":84,"column":54}},{"start":{"line":84,"column":54},"end":{"line":84,"column":59}}],"line":84},"3":{"loc":{"start":{"line":82,"column":23},"end":{"line":82,"column":62}},"type":"binary-expr","locations":[{"start":{"line":82,"column":23},"end":{"line":82,"column":45}},{"start":{"line":82,"column":45},"end":{"line":82,"column":62}}],"line":82},"4":{"loc":{"start":{"line":82,"column":62},"end":{"line":82,"column":null}},"type":"binary-expr","locations":[{"start":{"line":82,"column":62},"end":{"line":82,"column":null}},{"start":{"line":82,"column":62},"end":{"line":82,"column":null}}],"line":82},"5":{"loc":{"start":{"line":110,"column":31},"end":{"line":110,"column":null}},"type":"if","locations":[{"start":{"line":110,"column":31},"end":{"line":110,"column":null}},{"start":{},"end":{}}],"line":110}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0]},"meta":{"lastBranch":6,"lastFunction":22,"lastStatement":80,"seen":{"s:6:47:9:Infinity":0,"s:11:40:14:Infinity":1,"s:16:6:108:Infinity":2,"f:16:35:16:41":0,"s:17:22:17:Infinity":3,"s:18:22:18:Infinity":4,"s:19:34:19:Infinity":5,"s:21:21:28:Infinity":6,"f:21:21:21:28":1,"s:22:18:22:Infinity":7,"s:23:4:23:Infinity":8,"s:24:18:24:Infinity":9,"s:25:4:25:Infinity":10,"s:26:19:26:Infinity":11,"s:27:4:27:Infinity":12,"s:30:23:40:Infinity":13,"f:30:23:30:35":2,"s:31:4:39:Infinity":14,"s:32:6:32:Infinity":15,"s:33:18:33:Infinity":16,"s:34:6:34:Infinity":17,"s:35:6:35:Infinity":18,"s:36:6:36:Infinity":19,"s:38:6:38:Infinity":20,"s:42:21:52:Infinity":21,"f:42:21:42:33":3,"s:43:4:51:Infinity":22,"s:44:6:44:Infinity":23,"s:45:18:45:Infinity":24,"s:46:6:46:Infinity":25,"s:47:6:47:Infinity":26,"s:48:6:48:Infinity":27,"s:50:6:50:Infinity":28,"s:54:23:57:Infinity":29,"f:54:23:54:30":4,"s:55:4:55:Infinity":30,"s:56:4:56:Infinity":31,"s:59:22:69:Infinity":32,"f:59:22:59:29":5,"s:60:4:60:Infinity":33,"s:61:16:61:Infinity":34,"s:62:4:62:Infinity":35,"b:63:4:68:Infinity:undefined:undefined:undefined:undefined":0,"s:63:4:68:Infinity":36,"s:64:6:64:Infinity":37,"s:65:6:65:Infinity":38,"s:66:6:66:Infinity":39,"s:67:6:67:Infinity":40,"s:71:2:98:56":41,"f:71:2:71:Infinity":6,"s:71:2:71:Infinity":42,"s:71:2:73:73":43,"f:73:39:73:45":7,"s:73:45:73:73":44,"s:73:73:74:Infinity":45,"f:73:73:73:Infinity":8,"s:74:19:74:43":46,"b:74:34:74:40:74:40:74:43":1,"s:74:43:98:56":47,"f:76:12:76:16":9,"s:76:16:76:30":48,"f:76:30:76:Infinity":10,"s:76:30:98:56":49,"s:76:30:76:Infinity":50,"s:76:30:88:Infinity":51,"f:78:15:78:19":11,"s:78:19:78:32":52,"f:79:14:79:16":12,"s:79:14:82:Infinity":53,"f:79:16:79:Infinity":13,"s:79:16:79:Infinity":54,"s:79:16:84:Infinity":55,"s:84:39:84:59":56,"b:84:39:84:54:84:54:84:59":2,"s:84:59:85:69":57,"f:85:47:85:53":14,"s:85:53:85:69":58,"s:85:69:85:Infinity":59,"s:85:74:86:75":60,"f:86:54:86:60":15,"s:86:60:86:75":61,"s:86:75:86:Infinity":62,"s:86:97:82:Infinity":63,"f:86:97:86:Infinity":16,"s:86:97:81:71":64,"s:82:23:82:62":65,"b:82:23:82:45:82:45:82:62":3,"s:82:62:82:Infinity":66,"b:82:62:82:Infinity:82:62:82:Infinity":4,"s:88:13:88:Infinity":67,"f:88:13:88:Infinity":17,"s:88:13:94:92":68,"f:94:56:94:62":18,"s:94:62:94:92":69,"s:94:92:98:92":70,"f:98:56:98:62":19,"s:98:62:98:92":71,"s:98:92:101:41":72,"s:101:41:102:57":73,"s:102:57:94:56":74,"f:102:57:102:Infinity":20,"s:102:57:94:44":75,"s:94:44:98:56":76,"f:94:44:94:56":21,"s:94:44:98:44":77,"s:98:44:98:56":78,"b:110:31:110:Infinity:undefined:undefined:undefined:undefined":5,"s:110:31:110:Infinity":79}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/editor/SensibleQLEditor.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/editor/SensibleQLEditor.tsx","statementMap":{"0":{"start":{"line":16,"column":37},"end":{"line":26,"column":null}},"1":{"start":{"line":29,"column":6},"end":{"line":123,"column":null}},"2":{"start":{"line":31,"column":24},"end":{"line":31,"column":null}},"3":{"start":{"line":32,"column":26},"end":{"line":32,"column":null}},"4":{"start":{"line":33,"column":32},"end":{"line":33,"column":null}},"5":{"start":{"line":36,"column":2},"end":{"line":57,"column":null}},"6":{"start":{"line":37,"column":4},"end":{"line":37,"column":null}},"7":{"start":{"line":37,"column":20},"end":{"line":37,"column":null}},"8":{"start":{"line":38,"column":4},"end":{"line":56,"column":null}},"9":{"start":{"line":49,"column":12},"end":{"line":51,"column":null}},"10":{"start":{"line":50,"column":14},"end":{"line":50,"column":null}},"11":{"start":{"line":59,"column":20},"end":{"line":70,"column":null}},"12":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"13":{"start":{"line":60,"column":33},"end":{"line":60,"column":null}},"14":{"start":{"line":61,"column":4},"end":{"line":61,"column":null}},"15":{"start":{"line":62,"column":4},"end":{"line":69,"column":null}},"16":{"start":{"line":63,"column":18},"end":{"line":63,"column":null}},"17":{"start":{"line":64,"column":6},"end":{"line":64,"column":null}},"18":{"start":{"line":66,"column":6},"end":{"line":66,"column":null}},"19":{"start":{"line":68,"column":6},"end":{"line":68,"column":null}},"20":{"start":{"line":72,"column":21},"end":{"line":80,"column":null}},"21":{"start":{"line":73,"column":4},"end":{"line":77,"column":null}},"22":{"start":{"line":74,"column":6},"end":{"line":76,"column":null}},"23":{"start":{"line":78,"column":4},"end":{"line":78,"column":null}},"24":{"start":{"line":79,"column":4},"end":{"line":79,"column":null}},"25":{"start":{"line":82,"column":2},"end":{"line":86,"column":null}},"26":{"start":{"line":82,"column":2},"end":{"line":82,"column":null}},"27":{"start":{"line":82,"column":2},"end":{"line":86,"column":34}},"28":{"start":{"line":86,"column":34},"end":{"line":87,"column":null}},"29":{"start":{"line":87,"column":11},"end":{"line":87,"column":53}},"30":{"start":{"line":87,"column":53},"end":{"line":103,"column":null}},"31":{"start":{"line":95,"column":14},"end":{"line":98,"column":null}},"32":{"start":{"line":95,"column":20},"end":{"line":95,"column":null}},"33":{"start":{"line":95,"column":20},"end":{"line":99,"column":49}},"34":{"start":{"line":99,"column":31},"end":{"line":99,"column":49}},"35":{"start":{"line":99,"column":49},"end":{"line":101,"column":null}},"36":{"start":{"line":101,"column":17},"end":{"line":101,"column":29}},"37":{"start":{"line":101,"column":29},"end":{"line":98,"column":null}},"38":{"start":{"line":98,"column":37},"end":{"line":98,"column":null}},"39":{"start":{"line":108,"column":16},"end":{"line":108,"column":25}},"40":{"start":{"line":108,"column":25},"end":{"line":108,"column":null}},"41":{"start":{"line":108,"column":25},"end":{"line":119,"column":null}},"42":{"start":{"line":109,"column":16},"end":{"line":109,"column":26}},"43":{"start":{"line":110,"column":10},"end":{"line":113,"column":null}},"44":{"start":{"line":110,"column":11},"end":{"line":110,"column":null}},"45":{"start":{"line":110,"column":11},"end":{"line":114,"column":43}},"46":{"start":{"line":114,"column":17},"end":{"line":114,"column":40}},"47":{"start":{"line":114,"column":40},"end":{"line":114,"column":null}},"48":{"start":{"line":114,"column":43},"end":{"line":114,"column":54}},"49":{"start":{"line":114,"column":54},"end":{"line":117,"column":null}},"50":{"start":{"line":117,"column":18},"end":{"line":117,"column":51}},"51":{"start":{"line":117,"column":51},"end":{"line":113,"column":null}},"52":{"start":{"line":111,"column":57},"end":{"line":111,"column":69}},"53":{"start":{"line":113,"column":27},"end":{"line":113,"column":60}},"54":{"start":{"line":113,"column":60},"end":{"line":113,"column":null}},"55":{"start":{"line":119,"column":9},"end":{"line":86,"column":null}},"56":{"start":{"line":119,"column":9},"end":{"line":86,"column":57}},"57":{"start":{"line":86,"column":57},"end":{"line":86,"column":null}},"58":{"start":{"line":125,"column":32},"end":{"line":125,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":29,"column":36},"end":{"line":29,"column":42}},"loc":{"start":{"line":29,"column":42},"end":{"line":123,"column":1}},"line":29},"1":{"name":"(anonymous_1)","decl":{"start":{"line":36,"column":10},"end":{"line":36,"column":16}},"loc":{"start":{"line":36,"column":16},"end":{"line":57,"column":3}},"line":36},"2":{"name":"(anonymous_2)","decl":{"start":{"line":48,"column":40},"end":{"line":48,"column":51}},"loc":{"start":{"line":48,"column":51},"end":{"line":52,"column":11}},"line":48},"3":{"name":"(anonymous_3)","decl":{"start":{"line":59,"column":20},"end":{"line":59,"column":32}},"loc":{"start":{"line":59,"column":32},"end":{"line":70,"column":null}},"line":59},"4":{"name":"(anonymous_4)","decl":{"start":{"line":72,"column":21},"end":{"line":72,"column":22}},"loc":{"start":{"line":72,"column":46},"end":{"line":80,"column":null}},"line":72},"5":{"name":"(anonymous_5)","decl":{"start":{"line":82,"column":2},"end":{"line":82,"column":null}},"loc":{"start":{"line":82,"column":2},"end":{"line":86,"column":null}},"line":82},"6":{"name":"(anonymous_6)","decl":{"start":{"line":86,"column":34},"end":{"line":86,"column":46}},"loc":{"start":{"line":87,"column":11},"end":{"line":87,"column":53}},"line":87},"7":{"name":"(anonymous_7)","decl":{"start":{"line":95,"column":14},"end":{"line":95,"column":20}},"loc":{"start":{"line":95,"column":14},"end":{"line":98,"column":null}},"line":95},"8":{"name":"(anonymous_8)","decl":{"start":{"line":95,"column":20},"end":{"line":95,"column":null}},"loc":{"start":{"line":95,"column":20},"end":{"line":98,"column":null}},"line":95},"9":{"name":"(anonymous_9)","decl":{"start":{"line":99,"column":25},"end":{"line":99,"column":31}},"loc":{"start":{"line":99,"column":31},"end":{"line":99,"column":49}},"line":99},"10":{"name":"(anonymous_10)","decl":{"start":{"line":99,"column":49},"end":{"line":99,"column":null}},"loc":{"start":{"line":101,"column":17},"end":{"line":101,"column":29}},"line":101},"11":{"name":"(anonymous_11)","decl":{"start":{"line":101,"column":29},"end":{"line":101,"column":null}},"loc":{"start":{"line":101,"column":29},"end":{"line":98,"column":null}},"line":101},"12":{"name":"(anonymous_12)","decl":{"start":{"line":109,"column":12},"end":{"line":109,"column":16}},"loc":{"start":{"line":109,"column":16},"end":{"line":109,"column":null}},"line":109},"13":{"name":"(anonymous_13)","decl":{"start":{"line":110,"column":10},"end":{"line":110,"column":11}},"loc":{"start":{"line":110,"column":10},"end":{"line":113,"column":null}},"line":110},"14":{"name":"(anonymous_14)","decl":{"start":{"line":110,"column":11},"end":{"line":110,"column":null}},"loc":{"start":{"line":110,"column":11},"end":{"line":113,"column":null}},"line":110},"15":{"name":"(anonymous_15)","decl":{"start":{"line":114,"column":40},"end":{"line":114,"column":43}},"loc":{"start":{"line":114,"column":43},"end":{"line":114,"column":54}},"line":114},"16":{"name":"(anonymous_16)","decl":{"start":{"line":114,"column":54},"end":{"line":114,"column":null}},"loc":{"start":{"line":117,"column":18},"end":{"line":117,"column":51}},"line":117},"17":{"name":"(anonymous_17)","decl":{"start":{"line":117,"column":51},"end":{"line":117,"column":null}},"loc":{"start":{"line":117,"column":51},"end":{"line":113,"column":null}},"line":117},"18":{"name":"(anonymous_18)","decl":{"start":{"line":119,"column":9},"end":{"line":119,"column":null}},"loc":{"start":{"line":119,"column":9},"end":{"line":86,"column":57}},"line":119}},"branchMap":{"0":{"loc":{"start":{"line":37,"column":4},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":null}},{"start":{},"end":{}}],"line":37},"1":{"loc":{"start":{"line":49,"column":12},"end":{"line":51,"column":null}},"type":"if","locations":[{"start":{"line":49,"column":12},"end":{"line":51,"column":null}},{"start":{},"end":{}}],"line":49},"2":{"loc":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"type":"if","locations":[{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},{"start":{},"end":{}}],"line":60},"3":{"loc":{"start":{"line":60,"column":8},"end":{"line":60,"column":33}},"type":"binary-expr","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":23}},{"start":{"line":60,"column":23},"end":{"line":60,"column":33}}],"line":60},"4":{"loc":{"start":{"line":73,"column":4},"end":{"line":77,"column":null}},"type":"if","locations":[{"start":{"line":73,"column":4},"end":{"line":77,"column":null}},{"start":{},"end":{}}],"line":73},"5":{"loc":{"start":{"line":87,"column":11},"end":{"line":87,"column":53}},"type":"cond-expr","locations":[{"start":{"line":87,"column":25},"end":{"line":87,"column":40}},{"start":{"line":87,"column":40},"end":{"line":87,"column":53}}],"line":87},"6":{"loc":{"start":{"line":108,"column":25},"end":{"line":108,"column":null}},"type":"cond-expr","locations":[{"start":{"line":108,"column":25},"end":{"line":108,"column":null}},{"start":{"line":108,"column":16},"end":{"line":108,"column":null}}],"line":108},"7":{"loc":{"start":{"line":114,"column":17},"end":{"line":114,"column":40}},"type":"cond-expr","locations":[{"start":{"line":114,"column":31},"end":{"line":114,"column":37}},{"start":{"line":114,"column":37},"end":{"line":114,"column":40}}],"line":114},"8":{"loc":{"start":{"line":113,"column":27},"end":{"line":113,"column":60}},"type":"cond-expr","locations":[{"start":{"line":113,"column":41},"end":{"line":113,"column":53}},{"start":{"line":113,"column":53},"end":{"line":113,"column":60}}],"line":113},"9":{"loc":{"start":{"line":113,"column":60},"end":{"line":113,"column":null}},"type":"binary-expr","locations":[{"start":{"line":113,"column":60},"end":{"line":113,"column":null}},{"start":{"line":113,"column":60},"end":{"line":113,"column":null}}],"line":113},"10":{"loc":{"start":{"line":125,"column":32},"end":{"line":125,"column":null}},"type":"if","locations":[{"start":{"line":125,"column":32},"end":{"line":125,"column":null}},{"start":{},"end":{}}],"line":125}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0]},"meta":{"lastBranch":11,"lastFunction":19,"lastStatement":59,"seen":{"s:16:37:26:Infinity":0,"s:29:6:123:Infinity":1,"f:29:36:29:42":0,"s:31:24:31:Infinity":2,"s:32:26:32:Infinity":3,"s:33:32:33:Infinity":4,"s:36:2:57:Infinity":5,"f:36:10:36:16":1,"b:37:4:37:Infinity:undefined:undefined:undefined:undefined":0,"s:37:4:37:Infinity":6,"s:37:20:37:Infinity":7,"s:38:4:56:Infinity":8,"f:48:40:48:51":2,"b:49:12:51:Infinity:undefined:undefined:undefined:undefined":1,"s:49:12:51:Infinity":9,"s:50:14:50:Infinity":10,"s:59:20:70:Infinity":11,"f:59:20:59:32":3,"b:60:4:60:Infinity:undefined:undefined:undefined:undefined":2,"s:60:4:60:Infinity":12,"b:60:8:60:23:60:23:60:33":3,"s:60:33:60:Infinity":13,"s:61:4:61:Infinity":14,"s:62:4:69:Infinity":15,"s:63:18:63:Infinity":16,"s:64:6:64:Infinity":17,"s:66:6:66:Infinity":18,"s:68:6:68:Infinity":19,"s:72:21:80:Infinity":20,"f:72:21:72:22":4,"b:73:4:77:Infinity:undefined:undefined:undefined:undefined":4,"s:73:4:77:Infinity":21,"s:74:6:76:Infinity":22,"s:78:4:78:Infinity":23,"s:79:4:79:Infinity":24,"s:82:2:86:Infinity":25,"f:82:2:82:Infinity":5,"s:82:2:82:Infinity":26,"s:82:2:86:34":27,"s:86:34:87:Infinity":28,"f:86:34:86:46":6,"s:87:11:87:53":29,"b:87:25:87:40:87:40:87:53":5,"s:87:53:103:Infinity":30,"f:95:14:95:20":7,"s:95:14:98:Infinity":31,"f:95:20:95:Infinity":8,"s:95:20:95:Infinity":32,"s:95:20:99:49":33,"f:99:25:99:31":9,"s:99:31:99:49":34,"s:99:49:101:Infinity":35,"f:99:49:99:Infinity":10,"s:101:17:101:29":36,"s:101:29:98:Infinity":37,"f:101:29:101:Infinity":11,"s:98:37:98:Infinity":38,"s:108:16:108:25":39,"s:108:25:108:Infinity":40,"b:108:25:108:Infinity:108:16:108:Infinity":6,"s:108:25:119:Infinity":41,"f:109:12:109:16":12,"s:109:16:109:26":42,"f:110:10:110:11":13,"s:110:10:113:Infinity":43,"f:110:11:110:Infinity":14,"s:110:11:110:Infinity":44,"s:110:11:114:43":45,"s:114:17:114:40":46,"b:114:31:114:37:114:37:114:40":7,"s:114:40:114:Infinity":47,"f:114:40:114:43":15,"s:114:43:114:54":48,"s:114:54:117:Infinity":49,"f:114:54:114:Infinity":16,"s:117:18:117:51":50,"s:117:51:113:Infinity":51,"f:117:51:117:Infinity":17,"s:111:57:111:69":52,"s:113:27:113:60":53,"b:113:41:113:53:113:53:113:60":8,"s:113:60:113:Infinity":54,"b:113:60:113:Infinity:113:60:113:Infinity":9,"s:119:9:86:Infinity":55,"f:119:9:119:Infinity":18,"s:119:9:86:57":56,"s:86:57:86:Infinity":57,"b:125:32:125:Infinity:undefined:undefined:undefined:undefined":10,"s:125:32:125:Infinity":58}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/entities/EdgeList.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/entities/EdgeList.tsx","statementMap":{"0":{"start":{"line":6,"column":6},"end":{"line":116,"column":null}},"1":{"start":{"line":7,"column":30},"end":{"line":7,"column":null}},"2":{"start":{"line":8,"column":26},"end":{"line":8,"column":null}},"3":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"4":{"start":{"line":10,"column":30},"end":{"line":10,"column":null}},"5":{"start":{"line":11,"column":26},"end":{"line":11,"column":null}},"6":{"start":{"line":12,"column":26},"end":{"line":12,"column":null}},"7":{"start":{"line":14,"column":2},"end":{"line":18,"column":null}},"8":{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},"9":{"start":{"line":16,"column":6},"end":{"line":16,"column":null}},"10":{"start":{"line":20,"column":20},"end":{"line":31,"column":null}},"11":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"12":{"start":{"line":21,"column":21},"end":{"line":21,"column":null}},"13":{"start":{"line":22,"column":4},"end":{"line":22,"column":null}},"14":{"start":{"line":23,"column":4},"end":{"line":30,"column":null}},"15":{"start":{"line":24,"column":19},"end":{"line":24,"column":null}},"16":{"start":{"line":25,"column":6},"end":{"line":25,"column":null}},"17":{"start":{"line":27,"column":6},"end":{"line":27,"column":null}},"18":{"start":{"line":29,"column":6},"end":{"line":29,"column":null}},"19":{"start":{"line":33,"column":23},"end":{"line":47,"column":null}},"20":{"start":{"line":34,"column":4},"end":{"line":34,"column":null}},"21":{"start":{"line":34,"column":21},"end":{"line":34,"column":null}},"22":{"start":{"line":35,"column":4},"end":{"line":46,"column":null}},"23":{"start":{"line":36,"column":17},"end":{"line":36,"column":null}},"24":{"start":{"line":37,"column":6},"end":{"line":37,"column":null}},"25":{"start":{"line":38,"column":6},"end":{"line":38,"column":null}},"26":{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},"27":{"start":{"line":40,"column":6},"end":{"line":40,"column":null}},"28":{"start":{"line":41,"column":6},"end":{"line":41,"column":null}},"29":{"start":{"line":42,"column":6},"end":{"line":42,"column":null}},"30":{"start":{"line":43,"column":6},"end":{"line":43,"column":null}},"31":{"start":{"line":45,"column":6},"end":{"line":45,"column":null}},"32":{"start":{"line":49,"column":23},"end":{"line":59,"column":null}},"33":{"start":{"line":50,"column":4},"end":{"line":50,"column":null}},"34":{"start":{"line":50,"column":21},"end":{"line":50,"column":null}},"35":{"start":{"line":51,"column":4},"end":{"line":58,"column":null}},"36":{"start":{"line":52,"column":6},"end":{"line":52,"column":null}},"37":{"start":{"line":53,"column":6},"end":{"line":53,"column":null}},"38":{"start":{"line":54,"column":6},"end":{"line":54,"column":null}},"39":{"start":{"line":55,"column":6},"end":{"line":55,"column":null}},"40":{"start":{"line":57,"column":6},"end":{"line":57,"column":null}},"41":{"start":{"line":61,"column":23},"end":{"line":70,"column":null}},"42":{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},"43":{"start":{"line":62,"column":21},"end":{"line":62,"column":null}},"44":{"start":{"line":63,"column":4},"end":{"line":63,"column":null}},"45":{"start":{"line":63,"column":39},"end":{"line":63,"column":null}},"46":{"start":{"line":64,"column":4},"end":{"line":69,"column":null}},"47":{"start":{"line":65,"column":6},"end":{"line":65,"column":null}},"48":{"start":{"line":66,"column":6},"end":{"line":66,"column":null}},"49":{"start":{"line":68,"column":6},"end":{"line":68,"column":null}},"50":{"start":{"line":72,"column":2},"end":{"line":112,"column":null}},"51":{"start":{"line":72,"column":2},"end":{"line":72,"column":null}},"52":{"start":{"line":72,"column":2},"end":{"line":75,"column":null}},"53":{"start":{"line":72,"column":2},"end":{"line":75,"column":34}},"54":{"start":{"line":75,"column":34},"end":{"line":76,"column":55}},"55":{"start":{"line":76,"column":31},"end":{"line":76,"column":55}},"56":{"start":{"line":76,"column":55},"end":{"line":83,"column":58}},"57":{"start":{"line":78,"column":16},"end":{"line":78,"column":28}},"58":{"start":{"line":78,"column":28},"end":{"line":78,"column":null}},"59":{"start":{"line":78,"column":28},"end":{"line":80,"column":96}},"60":{"start":{"line":80,"column":64},"end":{"line":80,"column":96}},"61":{"start":{"line":80,"column":96},"end":{"line":81,"column":92}},"62":{"start":{"line":81,"column":61},"end":{"line":81,"column":92}},"63":{"start":{"line":81,"column":92},"end":{"line":82,"column":100}},"64":{"start":{"line":82,"column":66},"end":{"line":82,"column":100}},"65":{"start":{"line":82,"column":100},"end":{"line":83,"column":96}},"66":{"start":{"line":83,"column":64},"end":{"line":83,"column":96}},"67":{"start":{"line":83,"column":96},"end":{"line":85,"column":41}},"68":{"start":{"line":85,"column":41},"end":{"line":86,"column":53}},"69":{"start":{"line":86,"column":35},"end":{"line":86,"column":53}},"70":{"start":{"line":86,"column":53},"end":{"line":80,"column":58}},"71":{"start":{"line":86,"column":53},"end":{"line":80,"column":46}},"72":{"start":{"line":80,"column":46},"end":{"line":81,"column":55}},"73":{"start":{"line":80,"column":46},"end":{"line":81,"column":43}},"74":{"start":{"line":81,"column":43},"end":{"line":82,"column":60}},"75":{"start":{"line":81,"column":43},"end":{"line":82,"column":48}},"76":{"start":{"line":82,"column":48},"end":{"line":83,"column":58}},"77":{"start":{"line":82,"column":48},"end":{"line":83,"column":46}},"78":{"start":{"line":83,"column":46},"end":{"line":83,"column":58}},"79":{"start":{"line":83,"column":46},"end":{"line":112,"column":null}},"80":{"start":{"line":83,"column":46},"end":{"line":112,"column":10}},"81":{"start":{"line":91,"column":22},"end":{"line":92,"column":null}},"82":{"start":{"line":91,"column":26},"end":{"line":91,"column":null}},"83":{"start":{"line":91,"column":26},"end":{"line":110,"column":null}},"84":{"start":{"line":91,"column":26},"end":{"line":93,"column":null}},"85":{"start":{"line":93,"column":13},"end":{"line":93,"column":33}},"86":{"start":{"line":93,"column":33},"end":{"line":107,"column":null}},"87":{"start":{"line":93,"column":13},"end":{"line":107,"column":null}},"88":{"start":{"line":93,"column":13},"end":{"line":93,"column":20}},"89":{"start":{"line":93,"column":13},"end":{"line":95,"column":98}},"90":{"start":{"line":95,"column":67},"end":{"line":95,"column":98}},"91":{"start":{"line":95,"column":98},"end":{"line":95,"column":61}},"92":{"start":{"line":95,"column":98},"end":{"line":95,"column":49}},"93":{"start":{"line":95,"column":49},"end":{"line":95,"column":61}},"94":{"start":{"line":95,"column":49},"end":{"line":96,"column":106}},"95":{"start":{"line":96,"column":72},"end":{"line":96,"column":106}},"96":{"start":{"line":96,"column":106},"end":{"line":96,"column":66}},"97":{"start":{"line":96,"column":106},"end":{"line":96,"column":54}},"98":{"start":{"line":96,"column":54},"end":{"line":96,"column":66}},"99":{"start":{"line":96,"column":54},"end":{"line":97,"column":102}},"100":{"start":{"line":97,"column":70},"end":{"line":97,"column":102}},"101":{"start":{"line":97,"column":102},"end":{"line":97,"column":64}},"102":{"start":{"line":97,"column":102},"end":{"line":97,"column":52}},"103":{"start":{"line":97,"column":52},"end":{"line":97,"column":64}},"104":{"start":{"line":97,"column":52},"end":{"line":98,"column":60}},"105":{"start":{"line":98,"column":39},"end":{"line":98,"column":60}},"106":{"start":{"line":98,"column":60},"end":{"line":98,"column":null}},"107":{"start":{"line":98,"column":60},"end":{"line":99,"column":54}},"108":{"start":{"line":99,"column":39},"end":{"line":99,"column":54}},"109":{"start":{"line":99,"column":54},"end":{"line":99,"column":null}},"110":{"start":{"line":99,"column":54},"end":{"line":103,"column":79}},"111":{"start":{"line":103,"column":52},"end":{"line":103,"column":79}},"112":{"start":{"line":103,"column":79},"end":{"line":103,"column":null}},"113":{"start":{"line":103,"column":82},"end":{"line":103,"column":92}},"114":{"start":{"line":103,"column":92},"end":{"line":103,"column":null}},"115":{"start":{"line":103,"column":92},"end":{"line":104,"column":55}},"116":{"start":{"line":104,"column":41},"end":{"line":104,"column":50}},"117":{"start":{"line":104,"column":50},"end":{"line":104,"column":null}},"118":{"start":{"line":104,"column":55},"end":{"line":104,"column":62}},"119":{"start":{"line":104,"column":62},"end":{"line":104,"column":null}},"120":{"start":{"line":104,"column":62},"end":{"line":106,"column":146}},"121":{"start":{"line":106,"column":43},"end":{"line":106,"column":63}},"122":{"start":{"line":106,"column":63},"end":{"line":106,"column":85}},"123":{"start":{"line":106,"column":85},"end":{"line":106,"column":117}},"124":{"start":{"line":106,"column":117},"end":{"line":106,"column":145}},"125":{"start":{"line":106,"column":146},"end":{"line":107,"column":77}},"126":{"start":{"line":107,"column":56},"end":{"line":107,"column":77}},"127":{"start":{"line":107,"column":77},"end":{"line":107,"column":null}},"128":{"start":{"line":110,"column":13},"end":{"line":92,"column":null}},"129":{"start":{"line":92,"column":89},"end":{"line":92,"column":null}},"130":{"start":{"line":112,"column":10},"end":{"line":112,"column":null}},"131":{"start":{"line":118,"column":24},"end":{"line":118,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":28},"end":{"line":6,"column":34}},"loc":{"start":{"line":6,"column":34},"end":{"line":116,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":14,"column":15},"end":{"line":14,"column":21}},"loc":{"start":{"line":14,"column":21},"end":{"line":18,"column":3}},"line":14},"2":{"name":"(anonymous_2)","decl":{"start":{"line":20,"column":20},"end":{"line":20,"column":32}},"loc":{"start":{"line":20,"column":32},"end":{"line":31,"column":null}},"line":20},"3":{"name":"(anonymous_3)","decl":{"start":{"line":33,"column":23},"end":{"line":33,"column":35}},"loc":{"start":{"line":33,"column":35},"end":{"line":47,"column":null}},"line":33},"4":{"name":"(anonymous_4)","decl":{"start":{"line":49,"column":23},"end":{"line":49,"column":30}},"loc":{"start":{"line":49,"column":45},"end":{"line":59,"column":null}},"line":49},"5":{"name":"(anonymous_5)","decl":{"start":{"line":61,"column":23},"end":{"line":61,"column":30}},"loc":{"start":{"line":61,"column":45},"end":{"line":70,"column":null}},"line":61},"6":{"name":"(anonymous_6)","decl":{"start":{"line":72,"column":2},"end":{"line":72,"column":null}},"loc":{"start":{"line":72,"column":2},"end":{"line":112,"column":null}},"line":72},"7":{"name":"(anonymous_7)","decl":{"start":{"line":76,"column":25},"end":{"line":76,"column":31}},"loc":{"start":{"line":76,"column":31},"end":{"line":76,"column":55}},"line":76},"8":{"name":"(anonymous_8)","decl":{"start":{"line":78,"column":12},"end":{"line":78,"column":16}},"loc":{"start":{"line":78,"column":16},"end":{"line":78,"column":null}},"line":78},"9":{"name":"(anonymous_9)","decl":{"start":{"line":78,"column":28},"end":{"line":78,"column":null}},"loc":{"start":{"line":78,"column":28},"end":{"line":83,"column":58}},"line":78},"10":{"name":"(anonymous_10)","decl":{"start":{"line":80,"column":58},"end":{"line":80,"column":64}},"loc":{"start":{"line":80,"column":64},"end":{"line":80,"column":96}},"line":80},"11":{"name":"(anonymous_11)","decl":{"start":{"line":81,"column":55},"end":{"line":81,"column":61}},"loc":{"start":{"line":81,"column":61},"end":{"line":81,"column":92}},"line":81},"12":{"name":"(anonymous_12)","decl":{"start":{"line":82,"column":60},"end":{"line":82,"column":66}},"loc":{"start":{"line":82,"column":66},"end":{"line":82,"column":100}},"line":82},"13":{"name":"(anonymous_13)","decl":{"start":{"line":83,"column":58},"end":{"line":83,"column":64}},"loc":{"start":{"line":83,"column":64},"end":{"line":83,"column":96}},"line":83},"14":{"name":"(anonymous_14)","decl":{"start":{"line":86,"column":29},"end":{"line":86,"column":35}},"loc":{"start":{"line":86,"column":35},"end":{"line":86,"column":53}},"line":86},"15":{"name":"(anonymous_15)","decl":{"start":{"line":86,"column":53},"end":{"line":86,"column":null}},"loc":{"start":{"line":86,"column":53},"end":{"line":80,"column":46}},"line":86},"16":{"name":"(anonymous_16)","decl":{"start":{"line":80,"column":46},"end":{"line":80,"column":58}},"loc":{"start":{"line":80,"column":46},"end":{"line":81,"column":43}},"line":80},"17":{"name":"(anonymous_17)","decl":{"start":{"line":81,"column":43},"end":{"line":81,"column":55}},"loc":{"start":{"line":81,"column":43},"end":{"line":82,"column":48}},"line":81},"18":{"name":"(anonymous_18)","decl":{"start":{"line":82,"column":48},"end":{"line":82,"column":60}},"loc":{"start":{"line":82,"column":48},"end":{"line":83,"column":46}},"line":82},"19":{"name":"(anonymous_19)","decl":{"start":{"line":83,"column":46},"end":{"line":83,"column":58}},"loc":{"start":{"line":83,"column":46},"end":{"line":112,"column":10}},"line":83},"20":{"name":"(anonymous_20)","decl":{"start":{"line":91,"column":22},"end":{"line":91,"column":26}},"loc":{"start":{"line":91,"column":22},"end":{"line":92,"column":null}},"line":91},"21":{"name":"(anonymous_21)","decl":{"start":{"line":91,"column":26},"end":{"line":91,"column":null}},"loc":{"start":{"line":91,"column":26},"end":{"line":92,"column":null}},"line":91},"22":{"name":"(anonymous_22)","decl":{"start":{"line":93,"column":33},"end":{"line":93,"column":null}},"loc":{"start":{"line":93,"column":13},"end":{"line":107,"column":null}},"line":93},"23":{"name":"(anonymous_23)","decl":{"start":{"line":93,"column":13},"end":{"line":93,"column":20}},"loc":{"start":{"line":93,"column":13},"end":{"line":95,"column":61}},"line":93},"24":{"name":"(anonymous_24)","decl":{"start":{"line":95,"column":61},"end":{"line":95,"column":67}},"loc":{"start":{"line":95,"column":67},"end":{"line":95,"column":98}},"line":95},"25":{"name":"(anonymous_25)","decl":{"start":{"line":95,"column":98},"end":{"line":95,"column":null}},"loc":{"start":{"line":95,"column":98},"end":{"line":95,"column":49}},"line":95},"26":{"name":"(anonymous_26)","decl":{"start":{"line":95,"column":49},"end":{"line":95,"column":61}},"loc":{"start":{"line":95,"column":49},"end":{"line":96,"column":66}},"line":95},"27":{"name":"(anonymous_27)","decl":{"start":{"line":96,"column":66},"end":{"line":96,"column":72}},"loc":{"start":{"line":96,"column":72},"end":{"line":96,"column":106}},"line":96},"28":{"name":"(anonymous_28)","decl":{"start":{"line":96,"column":106},"end":{"line":96,"column":null}},"loc":{"start":{"line":96,"column":106},"end":{"line":96,"column":54}},"line":96},"29":{"name":"(anonymous_29)","decl":{"start":{"line":96,"column":54},"end":{"line":96,"column":66}},"loc":{"start":{"line":96,"column":54},"end":{"line":97,"column":64}},"line":96},"30":{"name":"(anonymous_30)","decl":{"start":{"line":97,"column":64},"end":{"line":97,"column":70}},"loc":{"start":{"line":97,"column":70},"end":{"line":97,"column":102}},"line":97},"31":{"name":"(anonymous_31)","decl":{"start":{"line":97,"column":102},"end":{"line":97,"column":null}},"loc":{"start":{"line":97,"column":102},"end":{"line":97,"column":52}},"line":97},"32":{"name":"(anonymous_32)","decl":{"start":{"line":97,"column":52},"end":{"line":97,"column":64}},"loc":{"start":{"line":97,"column":52},"end":{"line":98,"column":null}},"line":97},"33":{"name":"(anonymous_33)","decl":{"start":{"line":98,"column":33},"end":{"line":98,"column":39}},"loc":{"start":{"line":98,"column":39},"end":{"line":98,"column":60}},"line":98},"34":{"name":"(anonymous_34)","decl":{"start":{"line":98,"column":60},"end":{"line":98,"column":null}},"loc":{"start":{"line":98,"column":60},"end":{"line":99,"column":null}},"line":98},"35":{"name":"(anonymous_35)","decl":{"start":{"line":99,"column":33},"end":{"line":99,"column":39}},"loc":{"start":{"line":99,"column":39},"end":{"line":99,"column":54}},"line":99},"36":{"name":"(anonymous_36)","decl":{"start":{"line":99,"column":54},"end":{"line":99,"column":null}},"loc":{"start":{"line":99,"column":54},"end":{"line":103,"column":null}},"line":99},"37":{"name":"(anonymous_37)","decl":{"start":{"line":103,"column":52},"end":{"line":103,"column":58}},"loc":{"start":{"line":103,"column":52},"end":{"line":103,"column":79}},"line":103},"38":{"name":"(anonymous_38)","decl":{"start":{"line":103,"column":79},"end":{"line":103,"column":82}},"loc":{"start":{"line":103,"column":82},"end":{"line":103,"column":92}},"line":103},"39":{"name":"(anonymous_39)","decl":{"start":{"line":103,"column":92},"end":{"line":103,"column":null}},"loc":{"start":{"line":103,"column":92},"end":{"line":104,"column":null}},"line":103},"40":{"name":"(anonymous_40)","decl":{"start":{"line":104,"column":50},"end":{"line":104,"column":55}},"loc":{"start":{"line":104,"column":55},"end":{"line":104,"column":62}},"line":104},"41":{"name":"(anonymous_41)","decl":{"start":{"line":104,"column":62},"end":{"line":104,"column":null}},"loc":{"start":{"line":104,"column":62},"end":{"line":107,"column":null}},"line":104},"42":{"name":"(anonymous_42)","decl":{"start":{"line":106,"column":35},"end":{"line":106,"column":41}},"loc":{"start":{"line":106,"column":41},"end":{"line":106,"column":146}},"line":106},"43":{"name":"(anonymous_43)","decl":{"start":{"line":107,"column":50},"end":{"line":107,"column":56}},"loc":{"start":{"line":107,"column":56},"end":{"line":107,"column":77}},"line":107},"44":{"name":"(anonymous_44)","decl":{"start":{"line":110,"column":13},"end":{"line":110,"column":null}},"loc":{"start":{"line":110,"column":13},"end":{"line":92,"column":null}},"line":110}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":17,"column":null}},{"start":{},"end":{}}],"line":15},"1":{"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},{"start":{},"end":{}}],"line":21},"2":{"loc":{"start":{"line":34,"column":4},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":null}},{"start":{},"end":{}}],"line":34},"3":{"loc":{"start":{"line":36,"column":17},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":36,"column":28},"end":{"line":36,"column":49}},{"start":{"line":36,"column":49},"end":{"line":36,"column":null}}],"line":36},"4":{"loc":{"start":{"line":50,"column":4},"end":{"line":50,"column":null}},"type":"if","locations":[{"start":{"line":50,"column":4},"end":{"line":50,"column":null}},{"start":{},"end":{}}],"line":50},"5":{"loc":{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},"type":"if","locations":[{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},{"start":{},"end":{}}],"line":62},"6":{"loc":{"start":{"line":63,"column":4},"end":{"line":63,"column":null}},"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":63,"column":null}},{"start":{},"end":{}}],"line":63},"7":{"loc":{"start":{"line":93,"column":13},"end":{"line":107,"column":null}},"type":"cond-expr","locations":[{"start":{"line":93,"column":13},"end":{"line":99,"column":null}},{"start":{"line":99,"column":54},"end":{"line":107,"column":null}}],"line":93},"8":{"loc":{"start":{"line":118,"column":24},"end":{"line":118,"column":null}},"type":"if","locations":[{"start":{"line":118,"column":24},"end":{"line":118,"column":null}},{"start":{},"end":{}}],"line":118}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0]},"meta":{"lastBranch":9,"lastFunction":45,"lastStatement":132,"seen":{"s:6:6:116:Infinity":0,"f:6:28:6:34":0,"s:7:30:7:Infinity":1,"s:8:26:8:Infinity":2,"s:9:24:9:Infinity":3,"s:10:30:10:Infinity":4,"s:11:26:11:Infinity":5,"s:12:26:12:Infinity":6,"s:14:2:18:Infinity":7,"f:14:15:14:21":1,"b:15:4:17:Infinity:undefined:undefined:undefined:undefined":0,"s:15:4:17:Infinity":8,"s:16:6:16:Infinity":9,"s:20:20:31:Infinity":10,"f:20:20:20:32":2,"b:21:4:21:Infinity:undefined:undefined:undefined:undefined":1,"s:21:4:21:Infinity":11,"s:21:21:21:Infinity":12,"s:22:4:22:Infinity":13,"s:23:4:30:Infinity":14,"s:24:19:24:Infinity":15,"s:25:6:25:Infinity":16,"s:27:6:27:Infinity":17,"s:29:6:29:Infinity":18,"s:33:23:47:Infinity":19,"f:33:23:33:35":3,"b:34:4:34:Infinity:undefined:undefined:undefined:undefined":2,"s:34:4:34:Infinity":20,"s:34:21:34:Infinity":21,"s:35:4:46:Infinity":22,"s:36:17:36:Infinity":23,"b:36:28:36:49:36:49:36:Infinity":3,"s:37:6:37:Infinity":24,"s:38:6:38:Infinity":25,"s:39:6:39:Infinity":26,"s:40:6:40:Infinity":27,"s:41:6:41:Infinity":28,"s:42:6:42:Infinity":29,"s:43:6:43:Infinity":30,"s:45:6:45:Infinity":31,"s:49:23:59:Infinity":32,"f:49:23:49:30":4,"b:50:4:50:Infinity:undefined:undefined:undefined:undefined":4,"s:50:4:50:Infinity":33,"s:50:21:50:Infinity":34,"s:51:4:58:Infinity":35,"s:52:6:52:Infinity":36,"s:53:6:53:Infinity":37,"s:54:6:54:Infinity":38,"s:55:6:55:Infinity":39,"s:57:6:57:Infinity":40,"s:61:23:70:Infinity":41,"f:61:23:61:30":5,"b:62:4:62:Infinity:undefined:undefined:undefined:undefined":5,"s:62:4:62:Infinity":42,"s:62:21:62:Infinity":43,"b:63:4:63:Infinity:undefined:undefined:undefined:undefined":6,"s:63:4:63:Infinity":44,"s:63:39:63:Infinity":45,"s:64:4:69:Infinity":46,"s:65:6:65:Infinity":47,"s:66:6:66:Infinity":48,"s:68:6:68:Infinity":49,"s:72:2:112:Infinity":50,"f:72:2:72:Infinity":6,"s:72:2:72:Infinity":51,"s:72:2:75:Infinity":52,"s:72:2:75:34":53,"s:75:34:76:55":54,"f:76:25:76:31":7,"s:76:31:76:55":55,"s:76:55:83:58":56,"f:78:12:78:16":8,"s:78:16:78:28":57,"f:78:28:78:Infinity":9,"s:78:28:78:Infinity":58,"s:78:28:80:96":59,"f:80:58:80:64":10,"s:80:64:80:96":60,"s:80:96:81:92":61,"f:81:55:81:61":11,"s:81:61:81:92":62,"s:81:92:82:100":63,"f:82:60:82:66":12,"s:82:66:82:100":64,"s:82:100:83:96":65,"f:83:58:83:64":13,"s:83:64:83:96":66,"s:83:96:85:41":67,"s:85:41:86:53":68,"f:86:29:86:35":14,"s:86:35:86:53":69,"s:86:53:80:58":70,"f:86:53:86:Infinity":15,"s:86:53:80:46":71,"s:80:46:81:55":72,"f:80:46:80:58":16,"s:80:46:81:43":73,"s:81:43:82:60":74,"f:81:43:81:55":17,"s:81:43:82:48":75,"s:82:48:83:58":76,"f:82:48:82:60":18,"s:82:48:83:46":77,"s:83:46:83:58":78,"s:83:46:112:Infinity":79,"f:83:46:83:58":19,"s:83:46:112:10":80,"f:91:22:91:26":20,"s:91:22:92:Infinity":81,"f:91:26:91:Infinity":21,"s:91:26:91:Infinity":82,"s:91:26:110:Infinity":83,"s:91:26:93:Infinity":84,"s:93:13:93:33":85,"s:93:33:107:Infinity":86,"f:93:33:93:Infinity":22,"s:93:13:107:Infinity":87,"b:93:13:99:Infinity:99:54:107:Infinity":7,"f:93:13:93:20":23,"s:93:13:93:20":88,"s:93:13:95:98":89,"f:95:61:95:67":24,"s:95:67:95:98":90,"s:95:98:95:61":91,"f:95:98:95:Infinity":25,"s:95:98:95:49":92,"s:95:49:95:61":93,"f:95:49:95:61":26,"s:95:49:96:106":94,"f:96:66:96:72":27,"s:96:72:96:106":95,"s:96:106:96:66":96,"f:96:106:96:Infinity":28,"s:96:106:96:54":97,"s:96:54:96:66":98,"f:96:54:96:66":29,"s:96:54:97:102":99,"f:97:64:97:70":30,"s:97:70:97:102":100,"s:97:102:97:64":101,"f:97:102:97:Infinity":31,"s:97:102:97:52":102,"s:97:52:97:64":103,"f:97:52:97:64":32,"s:97:52:98:60":104,"f:98:33:98:39":33,"s:98:39:98:60":105,"s:98:60:98:Infinity":106,"f:98:60:98:Infinity":34,"s:98:60:99:54":107,"f:99:33:99:39":35,"s:99:39:99:54":108,"s:99:54:99:Infinity":109,"f:99:54:99:Infinity":36,"s:99:54:103:79":110,"f:103:52:103:58":37,"s:103:52:103:79":111,"s:103:79:103:Infinity":112,"f:103:79:103:82":38,"s:103:82:103:92":113,"s:103:92:103:Infinity":114,"f:103:92:103:Infinity":39,"s:103:92:104:55":115,"s:104:41:104:50":116,"s:104:50:104:Infinity":117,"f:104:50:104:55":40,"s:104:55:104:62":118,"s:104:62:104:Infinity":119,"f:104:62:104:Infinity":41,"s:104:62:106:146":120,"f:106:35:106:41":42,"s:106:43:106:63":121,"s:106:63:106:85":122,"s:106:85:106:117":123,"s:106:117:106:145":124,"s:106:146:107:77":125,"f:107:50:107:56":43,"s:107:56:107:77":126,"s:107:77:107:Infinity":127,"s:110:13:92:Infinity":128,"f:110:13:110:Infinity":44,"s:92:89:92:Infinity":129,"s:112:10:112:Infinity":130,"b:118:24:118:Infinity:undefined:undefined:undefined:undefined":8,"s:118:24:118:Infinity":131}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/entities/NodeList.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/entities/NodeList.tsx","statementMap":{"0":{"start":{"line":6,"column":6},"end":{"line":108,"column":null}},"1":{"start":{"line":7,"column":30},"end":{"line":7,"column":null}},"2":{"start":{"line":8,"column":26},"end":{"line":8,"column":null}},"3":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"4":{"start":{"line":10,"column":26},"end":{"line":10,"column":null}},"5":{"start":{"line":12,"column":2},"end":{"line":16,"column":null}},"6":{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},"7":{"start":{"line":14,"column":6},"end":{"line":14,"column":null}},"8":{"start":{"line":18,"column":20},"end":{"line":29,"column":null}},"9":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"10":{"start":{"line":19,"column":21},"end":{"line":19,"column":null}},"11":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}},"12":{"start":{"line":21,"column":4},"end":{"line":28,"column":null}},"13":{"start":{"line":22,"column":19},"end":{"line":22,"column":null}},"14":{"start":{"line":23,"column":6},"end":{"line":23,"column":null}},"15":{"start":{"line":25,"column":6},"end":{"line":25,"column":null}},"16":{"start":{"line":27,"column":6},"end":{"line":27,"column":null}},"17":{"start":{"line":31,"column":23},"end":{"line":43,"column":null}},"18":{"start":{"line":32,"column":4},"end":{"line":32,"column":null}},"19":{"start":{"line":32,"column":21},"end":{"line":32,"column":null}},"20":{"start":{"line":33,"column":4},"end":{"line":42,"column":null}},"21":{"start":{"line":34,"column":17},"end":{"line":34,"column":null}},"22":{"start":{"line":35,"column":6},"end":{"line":35,"column":null}},"23":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"24":{"start":{"line":37,"column":6},"end":{"line":37,"column":null}},"25":{"start":{"line":38,"column":6},"end":{"line":38,"column":null}},"26":{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},"27":{"start":{"line":41,"column":6},"end":{"line":41,"column":null}},"28":{"start":{"line":45,"column":23},"end":{"line":55,"column":null}},"29":{"start":{"line":46,"column":4},"end":{"line":46,"column":null}},"30":{"start":{"line":46,"column":21},"end":{"line":46,"column":null}},"31":{"start":{"line":47,"column":4},"end":{"line":54,"column":null}},"32":{"start":{"line":48,"column":6},"end":{"line":48,"column":null}},"33":{"start":{"line":49,"column":6},"end":{"line":49,"column":null}},"34":{"start":{"line":50,"column":6},"end":{"line":50,"column":null}},"35":{"start":{"line":51,"column":6},"end":{"line":51,"column":null}},"36":{"start":{"line":53,"column":6},"end":{"line":53,"column":null}},"37":{"start":{"line":57,"column":23},"end":{"line":66,"column":null}},"38":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"39":{"start":{"line":58,"column":21},"end":{"line":58,"column":null}},"40":{"start":{"line":59,"column":4},"end":{"line":59,"column":null}},"41":{"start":{"line":59,"column":39},"end":{"line":59,"column":null}},"42":{"start":{"line":60,"column":4},"end":{"line":65,"column":null}},"43":{"start":{"line":61,"column":6},"end":{"line":61,"column":null}},"44":{"start":{"line":62,"column":6},"end":{"line":62,"column":null}},"45":{"start":{"line":64,"column":6},"end":{"line":64,"column":null}},"46":{"start":{"line":68,"column":2},"end":{"line":104,"column":null}},"47":{"start":{"line":68,"column":2},"end":{"line":68,"column":null}},"48":{"start":{"line":68,"column":2},"end":{"line":71,"column":null}},"49":{"start":{"line":68,"column":2},"end":{"line":71,"column":34}},"50":{"start":{"line":71,"column":34},"end":{"line":72,"column":55}},"51":{"start":{"line":72,"column":31},"end":{"line":72,"column":55}},"52":{"start":{"line":72,"column":55},"end":{"line":77,"column":55}},"53":{"start":{"line":74,"column":16},"end":{"line":74,"column":28}},"54":{"start":{"line":74,"column":28},"end":{"line":74,"column":null}},"55":{"start":{"line":74,"column":28},"end":{"line":76,"column":96}},"56":{"start":{"line":76,"column":64},"end":{"line":76,"column":96}},"57":{"start":{"line":76,"column":96},"end":{"line":77,"column":92}},"58":{"start":{"line":77,"column":61},"end":{"line":77,"column":92}},"59":{"start":{"line":77,"column":92},"end":{"line":79,"column":41}},"60":{"start":{"line":79,"column":41},"end":{"line":80,"column":53}},"61":{"start":{"line":80,"column":35},"end":{"line":80,"column":53}},"62":{"start":{"line":80,"column":53},"end":{"line":76,"column":58}},"63":{"start":{"line":80,"column":53},"end":{"line":76,"column":46}},"64":{"start":{"line":76,"column":46},"end":{"line":77,"column":55}},"65":{"start":{"line":76,"column":46},"end":{"line":77,"column":43}},"66":{"start":{"line":77,"column":43},"end":{"line":77,"column":55}},"67":{"start":{"line":77,"column":43},"end":{"line":104,"column":null}},"68":{"start":{"line":77,"column":43},"end":{"line":104,"column":10}},"69":{"start":{"line":85,"column":22},"end":{"line":86,"column":null}},"70":{"start":{"line":85,"column":26},"end":{"line":85,"column":null}},"71":{"start":{"line":85,"column":26},"end":{"line":102,"column":null}},"72":{"start":{"line":85,"column":26},"end":{"line":87,"column":null}},"73":{"start":{"line":87,"column":13},"end":{"line":87,"column":33}},"74":{"start":{"line":87,"column":33},"end":{"line":99,"column":null}},"75":{"start":{"line":87,"column":13},"end":{"line":99,"column":null}},"76":{"start":{"line":87,"column":13},"end":{"line":87,"column":20}},"77":{"start":{"line":87,"column":13},"end":{"line":89,"column":98}},"78":{"start":{"line":89,"column":67},"end":{"line":89,"column":98}},"79":{"start":{"line":89,"column":98},"end":{"line":89,"column":61}},"80":{"start":{"line":89,"column":98},"end":{"line":89,"column":49}},"81":{"start":{"line":89,"column":49},"end":{"line":89,"column":61}},"82":{"start":{"line":89,"column":49},"end":{"line":90,"column":60}},"83":{"start":{"line":90,"column":39},"end":{"line":90,"column":60}},"84":{"start":{"line":90,"column":60},"end":{"line":90,"column":null}},"85":{"start":{"line":90,"column":60},"end":{"line":91,"column":54}},"86":{"start":{"line":91,"column":39},"end":{"line":91,"column":54}},"87":{"start":{"line":91,"column":54},"end":{"line":91,"column":null}},"88":{"start":{"line":91,"column":54},"end":{"line":95,"column":79}},"89":{"start":{"line":95,"column":52},"end":{"line":95,"column":79}},"90":{"start":{"line":95,"column":79},"end":{"line":95,"column":null}},"91":{"start":{"line":95,"column":82},"end":{"line":95,"column":92}},"92":{"start":{"line":95,"column":92},"end":{"line":95,"column":null}},"93":{"start":{"line":95,"column":92},"end":{"line":96,"column":null}},"94":{"start":{"line":96,"column":42},"end":{"line":96,"column":49}},"95":{"start":{"line":96,"column":49},"end":{"line":96,"column":null}},"96":{"start":{"line":96,"column":49},"end":{"line":98,"column":86}},"97":{"start":{"line":98,"column":43},"end":{"line":98,"column":63}},"98":{"start":{"line":98,"column":63},"end":{"line":98,"column":85}},"99":{"start":{"line":98,"column":86},"end":{"line":99,"column":77}},"100":{"start":{"line":99,"column":56},"end":{"line":99,"column":77}},"101":{"start":{"line":99,"column":77},"end":{"line":99,"column":null}},"102":{"start":{"line":102,"column":13},"end":{"line":86,"column":null}},"103":{"start":{"line":86,"column":89},"end":{"line":86,"column":null}},"104":{"start":{"line":104,"column":10},"end":{"line":104,"column":null}},"105":{"start":{"line":110,"column":24},"end":{"line":110,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":28},"end":{"line":6,"column":34}},"loc":{"start":{"line":6,"column":34},"end":{"line":108,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":15},"end":{"line":12,"column":21}},"loc":{"start":{"line":12,"column":21},"end":{"line":16,"column":3}},"line":12},"2":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":20},"end":{"line":18,"column":32}},"loc":{"start":{"line":18,"column":32},"end":{"line":29,"column":null}},"line":18},"3":{"name":"(anonymous_3)","decl":{"start":{"line":31,"column":23},"end":{"line":31,"column":35}},"loc":{"start":{"line":31,"column":35},"end":{"line":43,"column":null}},"line":31},"4":{"name":"(anonymous_4)","decl":{"start":{"line":45,"column":23},"end":{"line":45,"column":30}},"loc":{"start":{"line":45,"column":45},"end":{"line":55,"column":null}},"line":45},"5":{"name":"(anonymous_5)","decl":{"start":{"line":57,"column":23},"end":{"line":57,"column":30}},"loc":{"start":{"line":57,"column":45},"end":{"line":66,"column":null}},"line":57},"6":{"name":"(anonymous_6)","decl":{"start":{"line":68,"column":2},"end":{"line":68,"column":null}},"loc":{"start":{"line":68,"column":2},"end":{"line":104,"column":null}},"line":68},"7":{"name":"(anonymous_7)","decl":{"start":{"line":72,"column":25},"end":{"line":72,"column":31}},"loc":{"start":{"line":72,"column":31},"end":{"line":72,"column":55}},"line":72},"8":{"name":"(anonymous_8)","decl":{"start":{"line":74,"column":12},"end":{"line":74,"column":16}},"loc":{"start":{"line":74,"column":16},"end":{"line":74,"column":null}},"line":74},"9":{"name":"(anonymous_9)","decl":{"start":{"line":74,"column":28},"end":{"line":74,"column":null}},"loc":{"start":{"line":74,"column":28},"end":{"line":77,"column":55}},"line":74},"10":{"name":"(anonymous_10)","decl":{"start":{"line":76,"column":58},"end":{"line":76,"column":64}},"loc":{"start":{"line":76,"column":64},"end":{"line":76,"column":96}},"line":76},"11":{"name":"(anonymous_11)","decl":{"start":{"line":77,"column":55},"end":{"line":77,"column":61}},"loc":{"start":{"line":77,"column":61},"end":{"line":77,"column":92}},"line":77},"12":{"name":"(anonymous_12)","decl":{"start":{"line":80,"column":29},"end":{"line":80,"column":35}},"loc":{"start":{"line":80,"column":35},"end":{"line":80,"column":53}},"line":80},"13":{"name":"(anonymous_13)","decl":{"start":{"line":80,"column":53},"end":{"line":80,"column":null}},"loc":{"start":{"line":80,"column":53},"end":{"line":76,"column":46}},"line":80},"14":{"name":"(anonymous_14)","decl":{"start":{"line":76,"column":46},"end":{"line":76,"column":58}},"loc":{"start":{"line":76,"column":46},"end":{"line":77,"column":43}},"line":76},"15":{"name":"(anonymous_15)","decl":{"start":{"line":77,"column":43},"end":{"line":77,"column":55}},"loc":{"start":{"line":77,"column":43},"end":{"line":104,"column":10}},"line":77},"16":{"name":"(anonymous_16)","decl":{"start":{"line":85,"column":22},"end":{"line":85,"column":26}},"loc":{"start":{"line":85,"column":22},"end":{"line":86,"column":null}},"line":85},"17":{"name":"(anonymous_17)","decl":{"start":{"line":85,"column":26},"end":{"line":85,"column":null}},"loc":{"start":{"line":85,"column":26},"end":{"line":86,"column":null}},"line":85},"18":{"name":"(anonymous_18)","decl":{"start":{"line":87,"column":33},"end":{"line":87,"column":null}},"loc":{"start":{"line":87,"column":13},"end":{"line":99,"column":null}},"line":87},"19":{"name":"(anonymous_19)","decl":{"start":{"line":87,"column":13},"end":{"line":87,"column":20}},"loc":{"start":{"line":87,"column":13},"end":{"line":89,"column":61}},"line":87},"20":{"name":"(anonymous_20)","decl":{"start":{"line":89,"column":61},"end":{"line":89,"column":67}},"loc":{"start":{"line":89,"column":67},"end":{"line":89,"column":98}},"line":89},"21":{"name":"(anonymous_21)","decl":{"start":{"line":89,"column":98},"end":{"line":89,"column":null}},"loc":{"start":{"line":89,"column":98},"end":{"line":89,"column":49}},"line":89},"22":{"name":"(anonymous_22)","decl":{"start":{"line":89,"column":49},"end":{"line":89,"column":61}},"loc":{"start":{"line":89,"column":49},"end":{"line":90,"column":null}},"line":89},"23":{"name":"(anonymous_23)","decl":{"start":{"line":90,"column":33},"end":{"line":90,"column":39}},"loc":{"start":{"line":90,"column":39},"end":{"line":90,"column":60}},"line":90},"24":{"name":"(anonymous_24)","decl":{"start":{"line":90,"column":60},"end":{"line":90,"column":null}},"loc":{"start":{"line":90,"column":60},"end":{"line":91,"column":null}},"line":90},"25":{"name":"(anonymous_25)","decl":{"start":{"line":91,"column":33},"end":{"line":91,"column":39}},"loc":{"start":{"line":91,"column":39},"end":{"line":91,"column":54}},"line":91},"26":{"name":"(anonymous_26)","decl":{"start":{"line":91,"column":54},"end":{"line":91,"column":null}},"loc":{"start":{"line":91,"column":54},"end":{"line":95,"column":null}},"line":91},"27":{"name":"(anonymous_27)","decl":{"start":{"line":95,"column":52},"end":{"line":95,"column":58}},"loc":{"start":{"line":95,"column":52},"end":{"line":95,"column":79}},"line":95},"28":{"name":"(anonymous_28)","decl":{"start":{"line":95,"column":79},"end":{"line":95,"column":82}},"loc":{"start":{"line":95,"column":82},"end":{"line":95,"column":92}},"line":95},"29":{"name":"(anonymous_29)","decl":{"start":{"line":95,"column":92},"end":{"line":95,"column":null}},"loc":{"start":{"line":95,"column":92},"end":{"line":96,"column":null}},"line":95},"30":{"name":"(anonymous_30)","decl":{"start":{"line":96,"column":49},"end":{"line":96,"column":null}},"loc":{"start":{"line":96,"column":49},"end":{"line":99,"column":null}},"line":96},"31":{"name":"(anonymous_31)","decl":{"start":{"line":98,"column":35},"end":{"line":98,"column":41}},"loc":{"start":{"line":98,"column":41},"end":{"line":98,"column":86}},"line":98},"32":{"name":"(anonymous_32)","decl":{"start":{"line":99,"column":50},"end":{"line":99,"column":56}},"loc":{"start":{"line":99,"column":56},"end":{"line":99,"column":77}},"line":99},"33":{"name":"(anonymous_33)","decl":{"start":{"line":102,"column":13},"end":{"line":102,"column":null}},"loc":{"start":{"line":102,"column":13},"end":{"line":86,"column":null}},"line":102}},"branchMap":{"0":{"loc":{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":13,"column":4},"end":{"line":15,"column":null}},{"start":{},"end":{}}],"line":13},"1":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},{"start":{},"end":{}}],"line":19},"2":{"loc":{"start":{"line":32,"column":4},"end":{"line":32,"column":null}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":null}},{"start":{},"end":{}}],"line":32},"3":{"loc":{"start":{"line":34,"column":17},"end":{"line":34,"column":null}},"type":"cond-expr","locations":[{"start":{"line":34,"column":28},"end":{"line":34,"column":49}},{"start":{"line":34,"column":49},"end":{"line":34,"column":null}}],"line":34},"4":{"loc":{"start":{"line":46,"column":4},"end":{"line":46,"column":null}},"type":"if","locations":[{"start":{"line":46,"column":4},"end":{"line":46,"column":null}},{"start":{},"end":{}}],"line":46},"5":{"loc":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},{"start":{},"end":{}}],"line":58},"6":{"loc":{"start":{"line":59,"column":4},"end":{"line":59,"column":null}},"type":"if","locations":[{"start":{"line":59,"column":4},"end":{"line":59,"column":null}},{"start":{},"end":{}}],"line":59},"7":{"loc":{"start":{"line":87,"column":13},"end":{"line":99,"column":null}},"type":"cond-expr","locations":[{"start":{"line":87,"column":13},"end":{"line":91,"column":null}},{"start":{"line":91,"column":54},"end":{"line":99,"column":null}}],"line":87},"8":{"loc":{"start":{"line":110,"column":24},"end":{"line":110,"column":null}},"type":"if","locations":[{"start":{"line":110,"column":24},"end":{"line":110,"column":null}},{"start":{},"end":{}}],"line":110}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0]},"meta":{"lastBranch":9,"lastFunction":34,"lastStatement":106,"seen":{"s:6:6:108:Infinity":0,"f:6:28:6:34":0,"s:7:30:7:Infinity":1,"s:8:26:8:Infinity":2,"s:9:24:9:Infinity":3,"s:10:26:10:Infinity":4,"s:12:2:16:Infinity":5,"f:12:15:12:21":1,"b:13:4:15:Infinity:undefined:undefined:undefined:undefined":0,"s:13:4:15:Infinity":6,"s:14:6:14:Infinity":7,"s:18:20:29:Infinity":8,"f:18:20:18:32":2,"b:19:4:19:Infinity:undefined:undefined:undefined:undefined":1,"s:19:4:19:Infinity":9,"s:19:21:19:Infinity":10,"s:20:4:20:Infinity":11,"s:21:4:28:Infinity":12,"s:22:19:22:Infinity":13,"s:23:6:23:Infinity":14,"s:25:6:25:Infinity":15,"s:27:6:27:Infinity":16,"s:31:23:43:Infinity":17,"f:31:23:31:35":3,"b:32:4:32:Infinity:undefined:undefined:undefined:undefined":2,"s:32:4:32:Infinity":18,"s:32:21:32:Infinity":19,"s:33:4:42:Infinity":20,"s:34:17:34:Infinity":21,"b:34:28:34:49:34:49:34:Infinity":3,"s:35:6:35:Infinity":22,"s:36:6:36:Infinity":23,"s:37:6:37:Infinity":24,"s:38:6:38:Infinity":25,"s:39:6:39:Infinity":26,"s:41:6:41:Infinity":27,"s:45:23:55:Infinity":28,"f:45:23:45:30":4,"b:46:4:46:Infinity:undefined:undefined:undefined:undefined":4,"s:46:4:46:Infinity":29,"s:46:21:46:Infinity":30,"s:47:4:54:Infinity":31,"s:48:6:48:Infinity":32,"s:49:6:49:Infinity":33,"s:50:6:50:Infinity":34,"s:51:6:51:Infinity":35,"s:53:6:53:Infinity":36,"s:57:23:66:Infinity":37,"f:57:23:57:30":5,"b:58:4:58:Infinity:undefined:undefined:undefined:undefined":5,"s:58:4:58:Infinity":38,"s:58:21:58:Infinity":39,"b:59:4:59:Infinity:undefined:undefined:undefined:undefined":6,"s:59:4:59:Infinity":40,"s:59:39:59:Infinity":41,"s:60:4:65:Infinity":42,"s:61:6:61:Infinity":43,"s:62:6:62:Infinity":44,"s:64:6:64:Infinity":45,"s:68:2:104:Infinity":46,"f:68:2:68:Infinity":6,"s:68:2:68:Infinity":47,"s:68:2:71:Infinity":48,"s:68:2:71:34":49,"s:71:34:72:55":50,"f:72:25:72:31":7,"s:72:31:72:55":51,"s:72:55:77:55":52,"f:74:12:74:16":8,"s:74:16:74:28":53,"f:74:28:74:Infinity":9,"s:74:28:74:Infinity":54,"s:74:28:76:96":55,"f:76:58:76:64":10,"s:76:64:76:96":56,"s:76:96:77:92":57,"f:77:55:77:61":11,"s:77:61:77:92":58,"s:77:92:79:41":59,"s:79:41:80:53":60,"f:80:29:80:35":12,"s:80:35:80:53":61,"s:80:53:76:58":62,"f:80:53:80:Infinity":13,"s:80:53:76:46":63,"s:76:46:77:55":64,"f:76:46:76:58":14,"s:76:46:77:43":65,"s:77:43:77:55":66,"s:77:43:104:Infinity":67,"f:77:43:77:55":15,"s:77:43:104:10":68,"f:85:22:85:26":16,"s:85:22:86:Infinity":69,"f:85:26:85:Infinity":17,"s:85:26:85:Infinity":70,"s:85:26:102:Infinity":71,"s:85:26:87:Infinity":72,"s:87:13:87:33":73,"s:87:33:99:Infinity":74,"f:87:33:87:Infinity":18,"s:87:13:99:Infinity":75,"b:87:13:91:Infinity:91:54:99:Infinity":7,"f:87:13:87:20":19,"s:87:13:87:20":76,"s:87:13:89:98":77,"f:89:61:89:67":20,"s:89:67:89:98":78,"s:89:98:89:61":79,"f:89:98:89:Infinity":21,"s:89:98:89:49":80,"s:89:49:89:61":81,"f:89:49:89:61":22,"s:89:49:90:60":82,"f:90:33:90:39":23,"s:90:39:90:60":83,"s:90:60:90:Infinity":84,"f:90:60:90:Infinity":24,"s:90:60:91:54":85,"f:91:33:91:39":25,"s:91:39:91:54":86,"s:91:54:91:Infinity":87,"f:91:54:91:Infinity":26,"s:91:54:95:79":88,"f:95:52:95:58":27,"s:95:52:95:79":89,"s:95:79:95:Infinity":90,"f:95:79:95:82":28,"s:95:82:95:92":91,"s:95:92:95:Infinity":92,"f:95:92:95:Infinity":29,"s:95:92:96:Infinity":93,"s:96:42:96:49":94,"s:96:49:96:Infinity":95,"f:96:49:96:Infinity":30,"s:96:49:98:86":96,"f:98:35:98:41":31,"s:98:43:98:63":97,"s:98:63:98:85":98,"s:98:86:99:77":99,"f:99:50:99:56":32,"s:99:56:99:77":100,"s:99:77:99:Infinity":101,"s:102:13:86:Infinity":102,"f:102:13:102:Infinity":33,"s:86:89:86:Infinity":103,"s:104:10:104:Infinity":104,"b:110:24:110:Infinity:undefined:undefined:undefined:undefined":8,"s:110:24:110:Infinity":105}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/graph/GraphView.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/graph/GraphView.tsx","statementMap":{"0":{"start":{"line":19,"column":15},"end":{"line":21,"column":null}},"1":{"start":{"line":24,"column":42},"end":{"line":36,"column":null}},"2":{"start":{"line":38,"column":19},"end":{"line":38,"column":null}},"3":{"start":{"line":39,"column":20},"end":{"line":39,"column":null}},"4":{"start":{"line":41,"column":6},"end":{"line":493,"column":null}},"5":{"start":{"line":42,"column":34},"end":{"line":42,"column":null}},"6":{"start":{"line":43,"column":34},"end":{"line":43,"column":null}},"7":{"start":{"line":44,"column":32},"end":{"line":44,"column":null}},"8":{"start":{"line":45,"column":30},"end":{"line":45,"column":null}},"9":{"start":{"line":46,"column":28},"end":{"line":46,"column":null}},"10":{"start":{"line":47,"column":30},"end":{"line":47,"column":null}},"11":{"start":{"line":48,"column":36},"end":{"line":48,"column":null}},"12":{"start":{"line":49,"column":36},"end":{"line":49,"column":null}},"13":{"start":{"line":50,"column":34},"end":{"line":50,"column":null}},"14":{"start":{"line":51,"column":38},"end":{"line":51,"column":null}},"15":{"start":{"line":52,"column":20},"end":{"line":52,"column":null}},"16":{"start":{"line":55,"column":26},"end":{"line":55,"column":null}},"17":{"start":{"line":57,"column":25},"end":{"line":59,"column":null}},"18":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"19":{"start":{"line":61,"column":27},"end":{"line":63,"column":null}},"20":{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},"21":{"start":{"line":65,"column":31},"end":{"line":79,"column":null}},"22":{"start":{"line":66,"column":10},"end":{"line":66,"column":null}},"23":{"start":{"line":67,"column":4},"end":{"line":73,"column":null}},"24":{"start":{"line":68,"column":6},"end":{"line":72,"column":null}},"25":{"start":{"line":69,"column":8},"end":{"line":71,"column":null}},"26":{"start":{"line":70,"column":10},"end":{"line":70,"column":null}},"27":{"start":{"line":74,"column":18},"end":{"line":74,"column":null}},"28":{"start":{"line":75,"column":4},"end":{"line":77,"column":null}},"29":{"start":{"line":76,"column":6},"end":{"line":76,"column":null}},"30":{"start":{"line":78,"column":4},"end":{"line":78,"column":null}},"31":{"start":{"line":81,"column":29},"end":{"line":83,"column":null}},"32":{"start":{"line":82,"column":4},"end":{"line":82,"column":null}},"33":{"start":{"line":82,"column":32},"end":{"line":82,"column":68}},"34":{"start":{"line":85,"column":29},"end":{"line":148,"column":null}},"35":{"start":{"line":86,"column":4},"end":{"line":86,"column":null}},"36":{"start":{"line":86,"column":27},"end":{"line":86,"column":null}},"37":{"start":{"line":87,"column":4},"end":{"line":87,"column":null}},"38":{"start":{"line":89,"column":16},"end":{"line":89,"column":null}},"39":{"start":{"line":90,"column":21},"end":{"line":90,"column":null}},"40":{"start":{"line":91,"column":18},"end":{"line":91,"column":null}},"41":{"start":{"line":93,"column":17},"end":{"line":145,"column":null}},"42":{"start":{"line":94,"column":6},"end":{"line":97,"column":null}},"43":{"start":{"line":95,"column":8},"end":{"line":95,"column":null}},"44":{"start":{"line":96,"column":8},"end":{"line":96,"column":null}},"45":{"start":{"line":99,"column":18},"end":{"line":99,"column":null}},"46":{"start":{"line":100,"column":23},"end":{"line":100,"column":null}},"47":{"start":{"line":102,"column":6},"end":{"line":115,"column":null}},"48":{"start":{"line":102,"column":19},"end":{"line":102,"column":22}},"49":{"start":{"line":103,"column":8},"end":{"line":103,"column":null}},"50":{"start":{"line":103,"column":51},"end":{"line":103,"column":null}},"51":{"start":{"line":104,"column":8},"end":{"line":114,"column":null}},"52":{"start":{"line":104,"column":21},"end":{"line":104,"column":28}},"53":{"start":{"line":105,"column":10},"end":{"line":105,"column":null}},"54":{"start":{"line":105,"column":53},"end":{"line":105,"column":null}},"55":{"start":{"line":106,"column":21},"end":{"line":106,"column":null}},"56":{"start":{"line":107,"column":21},"end":{"line":107,"column":null}},"57":{"start":{"line":108,"column":23},"end":{"line":108,"column":null}},"58":{"start":{"line":109,"column":25},"end":{"line":109,"column":null}},"59":{"start":{"line":110,"column":10},"end":{"line":110,"column":null}},"60":{"start":{"line":111,"column":10},"end":{"line":111,"column":null}},"61":{"start":{"line":112,"column":10},"end":{"line":112,"column":null}},"62":{"start":{"line":113,"column":10},"end":{"line":113,"column":null}},"63":{"start":{"line":117,"column":6},"end":{"line":134,"column":null}},"64":{"start":{"line":118,"column":18},"end":{"line":118,"column":null}},"65":{"start":{"line":119,"column":18},"end":{"line":119,"column":null}},"66":{"start":{"line":120,"column":8},"end":{"line":133,"column":null}},"67":{"start":{"line":121,"column":21},"end":{"line":121,"column":null}},"68":{"start":{"line":122,"column":21},"end":{"line":122,"column":null}},"69":{"start":{"line":123,"column":23},"end":{"line":123,"column":null}},"70":{"start":{"line":124,"column":16},"end":{"line":124,"column":null}},"71":{"start":{"line":125,"column":10},"end":{"line":128,"column":null}},"72":{"start":{"line":126,"column":12},"end":{"line":126,"column":null}},"73":{"start":{"line":127,"column":12},"end":{"line":127,"column":null}},"74":{"start":{"line":129,"column":10},"end":{"line":132,"column":null}},"75":{"start":{"line":130,"column":12},"end":{"line":130,"column":null}},"76":{"start":{"line":131,"column":12},"end":{"line":131,"column":null}},"77":{"start":{"line":136,"column":6},"end":{"line":140,"column":null}},"78":{"start":{"line":137,"column":8},"end":{"line":137,"column":null}},"79":{"start":{"line":137,"column":49},"end":{"line":137,"column":null}},"80":{"start":{"line":138,"column":8},"end":{"line":138,"column":null}},"81":{"start":{"line":139,"column":8},"end":{"line":139,"column":null}},"82":{"start":{"line":142,"column":6},"end":{"line":142,"column":null}},"83":{"start":{"line":143,"column":6},"end":{"line":143,"column":null}},"84":{"start":{"line":144,"column":6},"end":{"line":144,"column":null}},"85":{"start":{"line":147,"column":4},"end":{"line":147,"column":null}},"86":{"start":{"line":150,"column":2},"end":{"line":212,"column":null}},"87":{"start":{"line":151,"column":4},"end":{"line":155,"column":null}},"88":{"start":{"line":152,"column":6},"end":{"line":152,"column":null}},"89":{"start":{"line":153,"column":6},"end":{"line":153,"column":null}},"90":{"start":{"line":154,"column":6},"end":{"line":154,"column":null}},"91":{"start":{"line":157,"column":10},"end":{"line":157,"column":null}},"92":{"start":{"line":158,"column":10},"end":{"line":158,"column":null}},"93":{"start":{"line":159,"column":4},"end":{"line":163,"column":null}},"94":{"start":{"line":160,"column":6},"end":{"line":160,"column":null}},"95":{"start":{"line":161,"column":6},"end":{"line":161,"column":null}},"96":{"start":{"line":162,"column":6},"end":{"line":162,"column":null}},"97":{"start":{"line":165,"column":20},"end":{"line":165,"column":null}},"98":{"start":{"line":166,"column":16},"end":{"line":166,"column":null}},"99":{"start":{"line":167,"column":17},"end":{"line":167,"column":null}},"100":{"start":{"line":168,"column":18},"end":{"line":168,"column":null}},"101":{"start":{"line":169,"column":19},"end":{"line":169,"column":null}},"102":{"start":{"line":170,"column":15},"end":{"line":170,"column":null}},"103":{"start":{"line":171,"column":15},"end":{"line":171,"column":null}},"104":{"start":{"line":173,"column":22},"end":{"line":173,"column":null}},"105":{"start":{"line":174,"column":22},"end":{"line":174,"column":null}},"106":{"start":{"line":176,"column":4},"end":{"line":193,"column":null}},"107":{"start":{"line":177,"column":19},"end":{"line":177,"column":null}},"108":{"start":{"line":178,"column":6},"end":{"line":180,"column":null}},"109":{"start":{"line":179,"column":8},"end":{"line":179,"column":null}},"110":{"start":{"line":181,"column":21},"end":{"line":181,"column":null}},"111":{"start":{"line":182,"column":16},"end":{"line":182,"column":null}},"112":{"start":{"line":183,"column":6},"end":{"line":192,"column":null}},"113":{"start":{"line":195,"column":4},"end":{"line":200,"column":null}},"114":{"start":{"line":196,"column":18},"end":{"line":196,"column":null}},"115":{"start":{"line":197,"column":18},"end":{"line":197,"column":null}},"116":{"start":{"line":198,"column":6},"end":{"line":198,"column":null}},"117":{"start":{"line":198,"column":15},"end":{"line":198,"column":null}},"118":{"start":{"line":199,"column":6},"end":{"line":199,"column":null}},"119":{"start":{"line":199,"column":15},"end":{"line":199,"column":null}},"120":{"start":{"line":202,"column":4},"end":{"line":204,"column":null}},"121":{"start":{"line":203,"column":6},"end":{"line":203,"column":null}},"122":{"start":{"line":205,"column":4},"end":{"line":205,"column":null}},"123":{"start":{"line":206,"column":4},"end":{"line":206,"column":null}},"124":{"start":{"line":207,"column":4},"end":{"line":207,"column":null}},"125":{"start":{"line":208,"column":4},"end":{"line":208,"column":null}},"126":{"start":{"line":209,"column":4},"end":{"line":209,"column":null}},"127":{"start":{"line":211,"column":4},"end":{"line":211,"column":null}},"128":{"start":{"line":214,"column":2},"end":{"line":218,"column":null}},"129":{"start":{"line":215,"column":4},"end":{"line":217,"column":null}},"130":{"start":{"line":216,"column":6},"end":{"line":216,"column":null}},"131":{"start":{"line":220,"column":22},"end":{"line":226,"column":null}},"132":{"start":{"line":221,"column":4},"end":{"line":221,"column":null}},"133":{"start":{"line":222,"column":14},"end":{"line":222,"column":null}},"134":{"start":{"line":223,"column":18},"end":{"line":223,"column":null}},"135":{"start":{"line":224,"column":17},"end":{"line":224,"column":null}},"136":{"start":{"line":225,"column":4},"end":{"line":225,"column":null}},"137":{"start":{"line":228,"column":26},"end":{"line":233,"column":null}},"138":{"start":{"line":229,"column":4},"end":{"line":232,"column":null}},"139":{"start":{"line":230,"column":6},"end":{"line":230,"column":null}},"140":{"start":{"line":231,"column":6},"end":{"line":231,"column":null}},"141":{"start":{"line":235,"column":26},"end":{"line":248,"column":null}},"142":{"start":{"line":236,"column":21},"end":{"line":236,"column":null}},"143":{"start":{"line":237,"column":4},"end":{"line":247,"column":null}},"144":{"start":{"line":238,"column":16},"end":{"line":238,"column":null}},"145":{"start":{"line":239,"column":18},"end":{"line":239,"column":null}},"146":{"start":{"line":240,"column":19},"end":{"line":240,"column":null}},"147":{"start":{"line":241,"column":12},"end":{"line":241,"column":null}},"148":{"start":{"line":242,"column":12},"end":{"line":242,"column":null}},"149":{"start":{"line":243,"column":6},"end":{"line":243,"column":null}},"150":{"start":{"line":243,"column":28},"end":{"line":243,"column":84}},"151":{"start":{"line":243,"column":42},"end":{"line":243,"column":83}},"152":{"start":{"line":244,"column":4},"end":{"line":247,"column":null}},"153":{"start":{"line":245,"column":17},"end":{"line":245,"column":null}},"154":{"start":{"line":246,"column":6},"end":{"line":246,"column":null}},"155":{"start":{"line":246,"column":28},"end":{"line":246,"column":82}},"156":{"start":{"line":250,"column":24},"end":{"line":253,"column":null}},"157":{"start":{"line":251,"column":4},"end":{"line":251,"column":null}},"158":{"start":{"line":252,"column":4},"end":{"line":252,"column":null}},"159":{"start":{"line":255,"column":30},"end":{"line":259,"column":null}},"160":{"start":{"line":256,"column":4},"end":{"line":256,"column":null}},"161":{"start":{"line":257,"column":4},"end":{"line":257,"column":null}},"162":{"start":{"line":258,"column":4},"end":{"line":258,"column":null}},"163":{"start":{"line":261,"column":26},"end":{"line":263,"column":null}},"164":{"start":{"line":262,"column":4},"end":{"line":262,"column":null}},"165":{"start":{"line":265,"column":29},"end":{"line":268,"column":null}},"166":{"start":{"line":266,"column":4},"end":{"line":266,"column":null}},"167":{"start":{"line":267,"column":4},"end":{"line":267,"column":null}},"168":{"start":{"line":270,"column":28},"end":{"line":298,"column":null}},"169":{"start":{"line":271,"column":18},"end":{"line":271,"column":null}},"170":{"start":{"line":272,"column":4},"end":{"line":272,"column":null}},"171":{"start":{"line":272,"column":49},"end":{"line":272,"column":null}},"172":{"start":{"line":274,"column":4},"end":{"line":274,"column":null}},"173":{"start":{"line":275,"column":4},"end":{"line":297,"column":null}},"174":{"start":{"line":276,"column":21},"end":{"line":276,"column":null}},"175":{"start":{"line":277,"column":6},"end":{"line":287,"column":null}},"176":{"start":{"line":278,"column":8},"end":{"line":281,"column":null}},"177":{"start":{"line":283,"column":8},"end":{"line":286,"column":null}},"178":{"start":{"line":288,"column":6},"end":{"line":288,"column":null}},"179":{"start":{"line":290,"column":6},"end":{"line":293,"column":null}},"180":{"start":{"line":294,"column":6},"end":{"line":294,"column":null}},"181":{"start":{"line":296,"column":6},"end":{"line":296,"column":null}},"182":{"start":{"line":300,"column":19},"end":{"line":300,"column":null}},"183":{"start":{"line":302,"column":2},"end":{"line":453,"column":null}},"184":{"start":{"line":302,"column":2},"end":{"line":302,"column":null}},"185":{"start":{"line":302,"column":2},"end":{"line":313,"column":null}},"186":{"start":{"line":313,"column":35},"end":{"line":312,"column":32}},"187":{"start":{"line":312,"column":32},"end":{"line":311,"column":36}},"188":{"start":{"line":311,"column":36},"end":{"line":310,"column":36}},"189":{"start":{"line":310,"column":36},"end":{"line":309,"column":null}},"190":{"start":{"line":305,"column":13},"end":{"line":305,"column":19}},"191":{"start":{"line":305,"column":19},"end":{"line":305,"column":null}},"192":{"start":{"line":305,"column":19},"end":{"line":370,"column":null}},"193":{"start":{"line":330,"column":11},"end":{"line":370,"column":12}},"194":{"start":{"line":331,"column":27},"end":{"line":331,"column":null}},"195":{"start":{"line":331,"column":50},"end":{"line":331,"column":68}},"196":{"start":{"line":332,"column":27},"end":{"line":332,"column":null}},"197":{"start":{"line":332,"column":50},"end":{"line":332,"column":66}},"198":{"start":{"line":333,"column":12},"end":{"line":333,"column":null}},"199":{"start":{"line":333,"column":36},"end":{"line":333,"column":null}},"200":{"start":{"line":335,"column":30},"end":{"line":335,"column":null}},"201":{"start":{"line":336,"column":31},"end":{"line":336,"column":null}},"202":{"start":{"line":337,"column":32},"end":{"line":337,"column":null}},"203":{"start":{"line":338,"column":32},"end":{"line":338,"column":null}},"204":{"start":{"line":340,"column":12},"end":{"line":350,"column":null}},"205":{"start":{"line":340,"column":12},"end":{"line":340,"column":null}},"206":{"start":{"line":340,"column":12},"end":{"line":344,"column":null}},"207":{"start":{"line":344,"column":36},"end":{"line":344,"column":56}},"208":{"start":{"line":344,"column":56},"end":{"line":343,"column":null}},"209":{"start":{"line":343,"column":36},"end":{"line":343,"column":59}},"210":{"start":{"line":343,"column":59},"end":{"line":351,"column":null}},"211":{"start":{"line":351,"column":37},"end":{"line":352,"column":null}},"212":{"start":{"line":352,"column":43},"end":{"line":358,"column":null}},"213":{"start":{"line":355,"column":51},"end":{"line":355,"column":null}},"214":{"start":{"line":355,"column":51},"end":{"line":365,"column":null}},"215":{"start":{"line":365,"column":21},"end":{"line":365,"column":31}},"216":{"start":{"line":365,"column":31},"end":{"line":358,"column":null}},"217":{"start":{"line":365,"column":31},"end":{"line":357,"column":48}},"218":{"start":{"line":357,"column":48},"end":{"line":358,"column":52}},"219":{"start":{"line":358,"column":52},"end":{"line":358,"column":null}},"220":{"start":{"line":358,"column":52},"end":{"line":350,"column":null}},"221":{"start":{"line":347,"column":22},"end":{"line":347,"column":30}},"222":{"start":{"line":348,"column":22},"end":{"line":348,"column":30}},"223":{"start":{"line":349,"column":22},"end":{"line":349,"column":30}},"224":{"start":{"line":350,"column":22},"end":{"line":350,"column":30}},"225":{"start":{"line":350,"column":30},"end":{"line":350,"column":null}},"226":{"start":{"line":370,"column":12},"end":{"line":420,"column":null}},"227":{"start":{"line":372,"column":11},"end":{"line":420,"column":12}},"228":{"start":{"line":373,"column":31},"end":{"line":373,"column":null}},"229":{"start":{"line":374,"column":30},"end":{"line":374,"column":null}},"230":{"start":{"line":375,"column":31},"end":{"line":375,"column":null}},"231":{"start":{"line":377,"column":12},"end":{"line":404,"column":null}},"232":{"start":{"line":377,"column":12},"end":{"line":377,"column":null}},"233":{"start":{"line":377,"column":12},"end":{"line":384,"column":null}},"234":{"start":{"line":384,"column":36},"end":{"line":384,"column":56}},"235":{"start":{"line":384,"column":56},"end":{"line":383,"column":null}},"236":{"start":{"line":383,"column":36},"end":{"line":383,"column":59}},"237":{"start":{"line":383,"column":59},"end":{"line":382,"column":52}},"238":{"start":{"line":382,"column":31},"end":{"line":382,"column":52}},"239":{"start":{"line":382,"column":52},"end":{"line":381,"column":64}},"240":{"start":{"line":381,"column":36},"end":{"line":381,"column":64}},"241":{"start":{"line":381,"column":64},"end":{"line":379,"column":null}},"242":{"start":{"line":379,"column":99},"end":{"line":397,"column":null}},"243":{"start":{"line":397,"column":64},"end":{"line":401,"column":null}},"244":{"start":{"line":401,"column":52},"end":{"line":401,"column":61}},"245":{"start":{"line":401,"column":61},"end":{"line":406,"column":null}},"246":{"start":{"line":406,"column":25},"end":{"line":406,"column":34}},"247":{"start":{"line":406,"column":34},"end":{"line":409,"column":null}},"248":{"start":{"line":409,"column":50},"end":{"line":409,"column":60}},"249":{"start":{"line":409,"column":60},"end":{"line":413,"column":58}},"250":{"start":{"line":413,"column":25},"end":{"line":413,"column":45}},"251":{"start":{"line":413,"column":45},"end":{"line":413,"column":null}},"252":{"start":{"line":413,"column":58},"end":{"line":413,"column":95}},"253":{"start":{"line":413,"column":95},"end":{"line":404,"column":null}},"254":{"start":{"line":380,"column":27},"end":{"line":380,"column":95}},"255":{"start":{"line":391,"column":38},"end":{"line":391,"column":116}},"256":{"start":{"line":392,"column":36},"end":{"line":396,"column":44}},"257":{"start":{"line":404,"column":40},"end":{"line":404,"column":50}},"258":{"start":{"line":404,"column":50},"end":{"line":404,"column":null}},"259":{"start":{"line":420,"column":12},"end":{"line":424,"column":null}},"260":{"start":{"line":420,"column":12},"end":{"line":422,"column":null}},"261":{"start":{"line":422,"column":11},"end":{"line":422,"column":36}},"262":{"start":{"line":422,"column":36},"end":{"line":422,"column":22}},"263":{"start":{"line":422,"column":11},"end":{"line":422,"column":22}},"264":{"start":{"line":424,"column":11},"end":{"line":435,"column":null}},"265":{"start":{"line":428,"column":16},"end":{"line":428,"column":28}},"266":{"start":{"line":428,"column":28},"end":{"line":428,"column":null}},"267":{"start":{"line":428,"column":28},"end":{"line":435,"column":null}},"268":{"start":{"line":431,"column":16},"end":{"line":431,"column":29}},"269":{"start":{"line":432,"column":17},"end":{"line":432,"column":31}},"270":{"start":{"line":433,"column":20},"end":{"line":433,"column":34}},"271":{"start":{"line":434,"column":30},"end":{"line":434,"column":null}},"272":{"start":{"line":435,"column":21},"end":{"line":435,"column":48}},"273":{"start":{"line":435,"column":48},"end":{"line":435,"column":null}},"274":{"start":{"line":435,"column":48},"end":{"line":441,"column":87}},"275":{"start":{"line":441,"column":31},"end":{"line":441,"column":87}},"276":{"start":{"line":441,"column":50},"end":{"line":441,"column":86}},"277":{"start":{"line":441,"column":87},"end":{"line":442,"column":89}},"278":{"start":{"line":442,"column":31},"end":{"line":442,"column":89}},"279":{"start":{"line":442,"column":50},"end":{"line":442,"column":88}},"280":{"start":{"line":442,"column":89},"end":{"line":443,"column":65}},"281":{"start":{"line":443,"column":31},"end":{"line":443,"column":65}},"282":{"start":{"line":443,"column":65},"end":{"line":455,"column":72}},"283":{"start":{"line":455,"column":32},"end":{"line":455,"column":72}},"284":{"start":{"line":455,"column":72},"end":{"line":454,"column":66}},"285":{"start":{"line":454,"column":30},"end":{"line":454,"column":66}},"286":{"start":{"line":454,"column":66},"end":{"line":461,"column":40}},"287":{"start":{"line":461,"column":40},"end":{"line":464,"column":null}},"288":{"start":{"line":464,"column":15},"end":{"line":464,"column":47}},"289":{"start":{"line":464,"column":47},"end":{"line":480,"column":null}},"290":{"start":{"line":469,"column":22},"end":{"line":469,"column":32}},"291":{"start":{"line":469,"column":32},"end":{"line":480,"column":null}},"292":{"start":{"line":470,"column":23},"end":{"line":470,"column":58}},"293":{"start":{"line":471,"column":18},"end":{"line":478,"column":null}},"294":{"start":{"line":471,"column":23},"end":{"line":471,"column":null}},"295":{"start":{"line":471,"column":23},"end":{"line":476,"column":21}},"296":{"start":{"line":475,"column":22},"end":{"line":475,"column":null}},"297":{"start":{"line":476,"column":21},"end":{"line":478,"column":null}},"298":{"start":{"line":478,"column":39},"end":{"line":478,"column":null}},"299":{"start":{"line":480,"column":17},"end":{"line":484,"column":null}},"300":{"start":{"line":483,"column":22},"end":{"line":483,"column":71}},"301":{"start":{"line":483,"column":71},"end":{"line":483,"column":null}},"302":{"start":{"line":483,"column":71},"end":{"line":484,"column":98}},"303":{"start":{"line":484,"column":61},"end":{"line":484,"column":98}},"304":{"start":{"line":484,"column":98},"end":{"line":484,"column":null}},"305":{"start":{"line":484,"column":98},"end":{"line":462,"column":null}},"306":{"start":{"line":316,"column":22},"end":{"line":316,"column":92}},"307":{"start":{"line":457,"column":24},"end":{"line":457,"column":53}},"308":{"start":{"line":462,"column":24},"end":{"line":462,"column":77}},"309":{"start":{"line":462,"column":77},"end":{"line":462,"column":null}},"310":{"start":{"line":462,"column":77},"end":{"line":453,"column":null}},"311":{"start":{"line":462,"column":77},"end":{"line":453,"column":33}},"312":{"start":{"line":453,"column":33},"end":{"line":453,"column":null}},"313":{"start":{"line":495,"column":25},"end":{"line":495,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":41,"column":29},"end":{"line":41,"column":35}},"loc":{"start":{"line":41,"column":35},"end":{"line":493,"column":1}},"line":41},"1":{"name":"(anonymous_1)","decl":{"start":{"line":57,"column":25},"end":{"line":57,"column":26}},"loc":{"start":{"line":57,"column":51},"end":{"line":59,"column":null}},"line":57},"2":{"name":"(anonymous_2)","decl":{"start":{"line":61,"column":27},"end":{"line":61,"column":28}},"loc":{"start":{"line":61,"column":50},"end":{"line":63,"column":null}},"line":61},"3":{"name":"(anonymous_3)","decl":{"start":{"line":65,"column":31},"end":{"line":65,"column":32}},"loc":{"start":{"line":65,"column":58},"end":{"line":79,"column":null}},"line":65},"4":{"name":"(anonymous_4)","decl":{"start":{"line":81,"column":29},"end":{"line":81,"column":30}},"loc":{"start":{"line":81,"column":78},"end":{"line":83,"column":null}},"line":81},"5":{"name":"(anonymous_5)","decl":{"start":{"line":82,"column":27},"end":{"line":82,"column":32}},"loc":{"start":{"line":82,"column":32},"end":{"line":82,"column":68}},"line":82},"6":{"name":"(anonymous_6)","decl":{"start":{"line":85,"column":29},"end":{"line":85,"column":30}},"loc":{"start":{"line":85,"column":111},"end":{"line":148,"column":null}},"line":85},"7":{"name":"(anonymous_7)","decl":{"start":{"line":93,"column":17},"end":{"line":93,"column":23}},"loc":{"start":{"line":93,"column":23},"end":{"line":145,"column":null}},"line":93},"8":{"name":"(anonymous_8)","decl":{"start":{"line":117,"column":23},"end":{"line":117,"column":31}},"loc":{"start":{"line":117,"column":31},"end":{"line":134,"column":7}},"line":117},"9":{"name":"(anonymous_9)","decl":{"start":{"line":136,"column":18},"end":{"line":136,"column":26}},"loc":{"start":{"line":136,"column":26},"end":{"line":140,"column":7}},"line":136},"10":{"name":"(anonymous_10)","decl":{"start":{"line":150,"column":15},"end":{"line":150,"column":21}},"loc":{"start":{"line":150,"column":21},"end":{"line":212,"column":3}},"line":150},"11":{"name":"(anonymous_11)","decl":{"start":{"line":176,"column":14},"end":{"line":176,"column":15}},"loc":{"start":{"line":176,"column":33},"end":{"line":193,"column":5}},"line":176},"12":{"name":"(anonymous_12)","decl":{"start":{"line":195,"column":14},"end":{"line":195,"column":22}},"loc":{"start":{"line":195,"column":22},"end":{"line":200,"column":5}},"line":195},"13":{"name":"(anonymous_13)","decl":{"start":{"line":214,"column":12},"end":{"line":214,"column":18}},"loc":{"start":{"line":214,"column":18},"end":{"line":218,"column":3}},"line":214},"14":{"name":"(anonymous_14)","decl":{"start":{"line":220,"column":22},"end":{"line":220,"column":23}},"loc":{"start":{"line":220,"column":41},"end":{"line":226,"column":null}},"line":220},"15":{"name":"(anonymous_15)","decl":{"start":{"line":228,"column":26},"end":{"line":228,"column":27}},"loc":{"start":{"line":228,"column":45},"end":{"line":233,"column":null}},"line":228},"16":{"name":"(anonymous_16)","decl":{"start":{"line":235,"column":26},"end":{"line":235,"column":27}},"loc":{"start":{"line":235,"column":45},"end":{"line":248,"column":null}},"line":235},"17":{"name":"(anonymous_17)","decl":{"start":{"line":243,"column":20},"end":{"line":243,"column":28}},"loc":{"start":{"line":243,"column":28},"end":{"line":243,"column":84}},"line":243},"18":{"name":"(anonymous_18)","decl":{"start":{"line":243,"column":37},"end":{"line":243,"column":42}},"loc":{"start":{"line":243,"column":42},"end":{"line":243,"column":83}},"line":243},"19":{"name":"(anonymous_19)","decl":{"start":{"line":246,"column":19},"end":{"line":246,"column":28}},"loc":{"start":{"line":246,"column":28},"end":{"line":246,"column":82}},"line":246},"20":{"name":"(anonymous_20)","decl":{"start":{"line":250,"column":24},"end":{"line":250,"column":30}},"loc":{"start":{"line":250,"column":30},"end":{"line":253,"column":null}},"line":250},"21":{"name":"(anonymous_21)","decl":{"start":{"line":255,"column":30},"end":{"line":255,"column":31}},"loc":{"start":{"line":255,"column":66},"end":{"line":259,"column":null}},"line":255},"22":{"name":"(anonymous_22)","decl":{"start":{"line":261,"column":26},"end":{"line":261,"column":27}},"loc":{"start":{"line":261,"column":47},"end":{"line":263,"column":null}},"line":261},"23":{"name":"(anonymous_23)","decl":{"start":{"line":265,"column":29},"end":{"line":265,"column":30}},"loc":{"start":{"line":265,"column":51},"end":{"line":268,"column":null}},"line":265},"24":{"name":"(anonymous_24)","decl":{"start":{"line":270,"column":28},"end":{"line":270,"column":40}},"loc":{"start":{"line":270,"column":40},"end":{"line":298,"column":null}},"line":270},"25":{"name":"(anonymous_25)","decl":{"start":{"line":300,"column":19},"end":{"line":300,"column":25}},"loc":{"start":{"line":300,"column":19},"end":{"line":300,"column":null}},"line":300},"26":{"name":"(anonymous_26)","decl":{"start":{"line":302,"column":2},"end":{"line":302,"column":null}},"loc":{"start":{"line":302,"column":2},"end":{"line":453,"column":null}},"line":302},"27":{"name":"(anonymous_27)","decl":{"start":{"line":305,"column":19},"end":{"line":305,"column":null}},"loc":{"start":{"line":330,"column":11},"end":{"line":370,"column":12}},"line":330},"28":{"name":"(anonymous_28)","decl":{"start":{"line":330,"column":28},"end":{"line":330,"column":36}},"loc":{"start":{"line":330,"column":36},"end":{"line":370,"column":11}},"line":330},"29":{"name":"(anonymous_29)","decl":{"start":{"line":331,"column":45},"end":{"line":331,"column":50}},"loc":{"start":{"line":331,"column":50},"end":{"line":331,"column":68}},"line":331},"30":{"name":"(anonymous_30)","decl":{"start":{"line":332,"column":45},"end":{"line":332,"column":50}},"loc":{"start":{"line":332,"column":50},"end":{"line":332,"column":66}},"line":332},"31":{"name":"(anonymous_31)","decl":{"start":{"line":340,"column":12},"end":{"line":340,"column":null}},"loc":{"start":{"line":340,"column":12},"end":{"line":350,"column":null}},"line":340},"32":{"name":"(anonymous_32)","decl":{"start":{"line":344,"column":30},"end":{"line":344,"column":36}},"loc":{"start":{"line":344,"column":36},"end":{"line":344,"column":56}},"line":344},"33":{"name":"(anonymous_33)","decl":{"start":{"line":343,"column":30},"end":{"line":343,"column":36}},"loc":{"start":{"line":343,"column":36},"end":{"line":343,"column":59}},"line":343},"34":{"name":"(anonymous_34)","decl":{"start":{"line":355,"column":51},"end":{"line":355,"column":null}},"loc":{"start":{"line":355,"column":51},"end":{"line":358,"column":null}},"line":355},"35":{"name":"(anonymous_35)","decl":{"start":{"line":365,"column":31},"end":{"line":365,"column":null}},"loc":{"start":{"line":365,"column":31},"end":{"line":358,"column":null}},"line":365},"36":{"name":"(anonymous_36)","decl":{"start":{"line":358,"column":52},"end":{"line":358,"column":null}},"loc":{"start":{"line":358,"column":52},"end":{"line":350,"column":null}},"line":358},"37":{"name":"(anonymous_37)","decl":{"start":{"line":370,"column":12},"end":{"line":370,"column":null}},"loc":{"start":{"line":372,"column":11},"end":{"line":420,"column":12}},"line":372},"38":{"name":"(anonymous_38)","decl":{"start":{"line":372,"column":28},"end":{"line":372,"column":29}},"loc":{"start":{"line":372,"column":41},"end":{"line":420,"column":11}},"line":372},"39":{"name":"(anonymous_39)","decl":{"start":{"line":377,"column":12},"end":{"line":377,"column":null}},"loc":{"start":{"line":377,"column":12},"end":{"line":404,"column":null}},"line":377},"40":{"name":"(anonymous_40)","decl":{"start":{"line":384,"column":30},"end":{"line":384,"column":36}},"loc":{"start":{"line":384,"column":36},"end":{"line":384,"column":56}},"line":384},"41":{"name":"(anonymous_41)","decl":{"start":{"line":383,"column":30},"end":{"line":383,"column":36}},"loc":{"start":{"line":383,"column":36},"end":{"line":383,"column":59}},"line":383},"42":{"name":"(anonymous_42)","decl":{"start":{"line":382,"column":25},"end":{"line":382,"column":31}},"loc":{"start":{"line":382,"column":31},"end":{"line":382,"column":52}},"line":382},"43":{"name":"(anonymous_43)","decl":{"start":{"line":381,"column":30},"end":{"line":381,"column":36}},"loc":{"start":{"line":381,"column":36},"end":{"line":381,"column":64}},"line":381},"44":{"name":"(anonymous_44)","decl":{"start":{"line":397,"column":64},"end":{"line":397,"column":null}},"loc":{"start":{"line":401,"column":52},"end":{"line":401,"column":61}},"line":401},"45":{"name":"(anonymous_45)","decl":{"start":{"line":401,"column":61},"end":{"line":401,"column":null}},"loc":{"start":{"line":406,"column":25},"end":{"line":406,"column":34}},"line":406},"46":{"name":"(anonymous_46)","decl":{"start":{"line":406,"column":34},"end":{"line":406,"column":null}},"loc":{"start":{"line":409,"column":50},"end":{"line":409,"column":60}},"line":409},"47":{"name":"(anonymous_47)","decl":{"start":{"line":409,"column":60},"end":{"line":409,"column":null}},"loc":{"start":{"line":413,"column":25},"end":{"line":413,"column":45}},"line":413},"48":{"name":"(anonymous_48)","decl":{"start":{"line":413,"column":45},"end":{"line":413,"column":58}},"loc":{"start":{"line":413,"column":58},"end":{"line":413,"column":95}},"line":413},"49":{"name":"(anonymous_49)","decl":{"start":{"line":413,"column":95},"end":{"line":413,"column":null}},"loc":{"start":{"line":413,"column":95},"end":{"line":404,"column":null}},"line":413},"50":{"name":"(anonymous_50)","decl":{"start":{"line":420,"column":12},"end":{"line":420,"column":null}},"loc":{"start":{"line":420,"column":12},"end":{"line":424,"column":null}},"line":420},"51":{"name":"(anonymous_51)","decl":{"start":{"line":422,"column":36},"end":{"line":422,"column":null}},"loc":{"start":{"line":422,"column":11},"end":{"line":422,"column":22}},"line":422},"52":{"name":"(anonymous_52)","decl":{"start":{"line":428,"column":12},"end":{"line":428,"column":16}},"loc":{"start":{"line":428,"column":16},"end":{"line":428,"column":null}},"line":428},"53":{"name":"(anonymous_53)","decl":{"start":{"line":428,"column":28},"end":{"line":428,"column":null}},"loc":{"start":{"line":428,"column":28},"end":{"line":435,"column":null}},"line":428},"54":{"name":"(anonymous_54)","decl":{"start":{"line":431,"column":12},"end":{"line":431,"column":16}},"loc":{"start":{"line":431,"column":16},"end":{"line":431,"column":null}},"line":431},"55":{"name":"(anonymous_55)","decl":{"start":{"line":432,"column":12},"end":{"line":432,"column":17}},"loc":{"start":{"line":432,"column":17},"end":{"line":432,"column":null}},"line":432},"56":{"name":"(anonymous_56)","decl":{"start":{"line":433,"column":12},"end":{"line":433,"column":20}},"loc":{"start":{"line":433,"column":20},"end":{"line":433,"column":null}},"line":433},"57":{"name":"(anonymous_57)","decl":{"start":{"line":434,"column":24},"end":{"line":434,"column":30}},"loc":{"start":{"line":434,"column":30},"end":{"line":434,"column":null}},"line":434},"58":{"name":"(anonymous_58)","decl":{"start":{"line":435,"column":21},"end":{"line":435,"column":27}},"loc":{"start":{"line":435,"column":21},"end":{"line":435,"column":48}},"line":435},"59":{"name":"(anonymous_59)","decl":{"start":{"line":441,"column":25},"end":{"line":441,"column":31}},"loc":{"start":{"line":441,"column":31},"end":{"line":441,"column":87}},"line":441},"60":{"name":"(anonymous_60)","decl":{"start":{"line":441,"column":44},"end":{"line":441,"column":50}},"loc":{"start":{"line":441,"column":50},"end":{"line":441,"column":86}},"line":441},"61":{"name":"(anonymous_61)","decl":{"start":{"line":442,"column":25},"end":{"line":442,"column":31}},"loc":{"start":{"line":442,"column":31},"end":{"line":442,"column":89}},"line":442},"62":{"name":"(anonymous_62)","decl":{"start":{"line":442,"column":44},"end":{"line":442,"column":50}},"loc":{"start":{"line":442,"column":50},"end":{"line":442,"column":88}},"line":442},"63":{"name":"(anonymous_63)","decl":{"start":{"line":443,"column":25},"end":{"line":443,"column":31}},"loc":{"start":{"line":443,"column":31},"end":{"line":443,"column":65}},"line":443},"64":{"name":"(anonymous_64)","decl":{"start":{"line":455,"column":26},"end":{"line":455,"column":32}},"loc":{"start":{"line":455,"column":32},"end":{"line":455,"column":72}},"line":455},"65":{"name":"(anonymous_65)","decl":{"start":{"line":454,"column":24},"end":{"line":454,"column":30}},"loc":{"start":{"line":454,"column":30},"end":{"line":454,"column":66}},"line":454},"66":{"name":"(anonymous_66)","decl":{"start":{"line":461,"column":40},"end":{"line":461,"column":null}},"loc":{"start":{"line":464,"column":15},"end":{"line":464,"column":47}},"line":464},"67":{"name":"(anonymous_67)","decl":{"start":{"line":469,"column":18},"end":{"line":469,"column":22}},"loc":{"start":{"line":469,"column":22},"end":{"line":469,"column":null}},"line":469},"68":{"name":"(anonymous_68)","decl":{"start":{"line":469,"column":32},"end":{"line":469,"column":null}},"loc":{"start":{"line":469,"column":32},"end":{"line":480,"column":null}},"line":469},"69":{"name":"(anonymous_69)","decl":{"start":{"line":470,"column":19},"end":{"line":470,"column":23}},"loc":{"start":{"line":470,"column":23},"end":{"line":470,"column":null}},"line":470},"70":{"name":"(anonymous_70)","decl":{"start":{"line":471,"column":18},"end":{"line":471,"column":23}},"loc":{"start":{"line":471,"column":18},"end":{"line":478,"column":null}},"line":471},"71":{"name":"(anonymous_71)","decl":{"start":{"line":471,"column":23},"end":{"line":471,"column":null}},"loc":{"start":{"line":471,"column":23},"end":{"line":478,"column":null}},"line":471},"72":{"name":"(anonymous_72)","decl":{"start":{"line":474,"column":29},"end":{"line":474,"column":35}},"loc":{"start":{"line":474,"column":35},"end":{"line":476,"column":21}},"line":474},"73":{"name":"(anonymous_73)","decl":{"start":{"line":483,"column":18},"end":{"line":483,"column":22}},"loc":{"start":{"line":483,"column":22},"end":{"line":483,"column":null}},"line":483},"74":{"name":"(anonymous_74)","decl":{"start":{"line":483,"column":71},"end":{"line":483,"column":null}},"loc":{"start":{"line":483,"column":71},"end":{"line":484,"column":null}},"line":483},"75":{"name":"(anonymous_75)","decl":{"start":{"line":484,"column":55},"end":{"line":484,"column":61}},"loc":{"start":{"line":484,"column":61},"end":{"line":484,"column":98}},"line":484},"76":{"name":"(anonymous_76)","decl":{"start":{"line":484,"column":98},"end":{"line":484,"column":null}},"loc":{"start":{"line":484,"column":98},"end":{"line":462,"column":null}},"line":484},"77":{"name":"(anonymous_77)","decl":{"start":{"line":462,"column":77},"end":{"line":462,"column":null}},"loc":{"start":{"line":462,"column":77},"end":{"line":453,"column":33}},"line":462}},"branchMap":{"0":{"loc":{"start":{"line":58,"column":11},"end":{"line":58,"column":null}},"type":"binary-expr","locations":[{"start":{"line":58,"column":11},"end":{"line":58,"column":30}},{"start":{"line":58,"column":30},"end":{"line":58,"column":null}}],"line":58},"1":{"loc":{"start":{"line":67,"column":4},"end":{"line":73,"column":null}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":73,"column":null}},{"start":{},"end":{}}],"line":67},"2":{"loc":{"start":{"line":69,"column":8},"end":{"line":71,"column":null}},"type":"if","locations":[{"start":{"line":69,"column":8},"end":{"line":71,"column":null}},{"start":{},"end":{}}],"line":69},"3":{"loc":{"start":{"line":75,"column":4},"end":{"line":77,"column":null}},"type":"if","locations":[{"start":{"line":75,"column":4},"end":{"line":77,"column":null}},{"start":{},"end":{}}],"line":75},"4":{"loc":{"start":{"line":82,"column":32},"end":{"line":82,"column":68}},"type":"binary-expr","locations":[{"start":{"line":82,"column":32},"end":{"line":82,"column":53}},{"start":{"line":82,"column":53},"end":{"line":82,"column":68}}],"line":82},"5":{"loc":{"start":{"line":86,"column":4},"end":{"line":86,"column":null}},"type":"if","locations":[{"start":{"line":86,"column":4},"end":{"line":86,"column":null}},{"start":{},"end":{}}],"line":86},"6":{"loc":{"start":{"line":94,"column":6},"end":{"line":97,"column":null}},"type":"if","locations":[{"start":{"line":94,"column":6},"end":{"line":97,"column":null}},{"start":{},"end":{}}],"line":94},"7":{"loc":{"start":{"line":103,"column":8},"end":{"line":103,"column":null}},"type":"if","locations":[{"start":{"line":103,"column":8},"end":{"line":103,"column":null}},{"start":{},"end":{}}],"line":103},"8":{"loc":{"start":{"line":103,"column":12},"end":{"line":103,"column":51}},"type":"binary-expr","locations":[{"start":{"line":103,"column":12},"end":{"line":103,"column":24}},{"start":{"line":103,"column":24},"end":{"line":103,"column":51}}],"line":103},"9":{"loc":{"start":{"line":105,"column":10},"end":{"line":105,"column":null}},"type":"if","locations":[{"start":{"line":105,"column":10},"end":{"line":105,"column":null}},{"start":{},"end":{}}],"line":105},"10":{"loc":{"start":{"line":105,"column":14},"end":{"line":105,"column":53}},"type":"binary-expr","locations":[{"start":{"line":105,"column":14},"end":{"line":105,"column":26}},{"start":{"line":105,"column":26},"end":{"line":105,"column":53}}],"line":105},"11":{"loc":{"start":{"line":108,"column":23},"end":{"line":108,"column":null}},"type":"binary-expr","locations":[{"start":{"line":108,"column":23},"end":{"line":108,"column":55}},{"start":{"line":108,"column":55},"end":{"line":108,"column":null}}],"line":108},"12":{"loc":{"start":{"line":120,"column":8},"end":{"line":133,"column":null}},"type":"if","locations":[{"start":{"line":120,"column":8},"end":{"line":133,"column":null}},{"start":{},"end":{}}],"line":120},"13":{"loc":{"start":{"line":120,"column":12},"end":{"line":120,"column":20}},"type":"binary-expr","locations":[{"start":{"line":120,"column":12},"end":{"line":120,"column":17}},{"start":{"line":120,"column":17},"end":{"line":120,"column":20}}],"line":120},"14":{"loc":{"start":{"line":123,"column":23},"end":{"line":123,"column":null}},"type":"binary-expr","locations":[{"start":{"line":123,"column":23},"end":{"line":123,"column":55}},{"start":{"line":123,"column":55},"end":{"line":123,"column":null}}],"line":123},"15":{"loc":{"start":{"line":125,"column":10},"end":{"line":128,"column":null}},"type":"if","locations":[{"start":{"line":125,"column":10},"end":{"line":128,"column":null}},{"start":{},"end":{}}],"line":125},"16":{"loc":{"start":{"line":125,"column":16},"end":{"line":125,"column":51}},"type":"binary-expr","locations":[{"start":{"line":125,"column":16},"end":{"line":125,"column":28}},{"start":{"line":125,"column":28},"end":{"line":125,"column":51}}],"line":125},"17":{"loc":{"start":{"line":129,"column":10},"end":{"line":132,"column":null}},"type":"if","locations":[{"start":{"line":129,"column":10},"end":{"line":132,"column":null}},{"start":{},"end":{}}],"line":129},"18":{"loc":{"start":{"line":129,"column":16},"end":{"line":129,"column":51}},"type":"binary-expr","locations":[{"start":{"line":129,"column":16},"end":{"line":129,"column":28}},{"start":{"line":129,"column":28},"end":{"line":129,"column":51}}],"line":129},"19":{"loc":{"start":{"line":137,"column":8},"end":{"line":137,"column":null}},"type":"if","locations":[{"start":{"line":137,"column":8},"end":{"line":137,"column":null}},{"start":{},"end":{}}],"line":137},"20":{"loc":{"start":{"line":137,"column":12},"end":{"line":137,"column":49}},"type":"binary-expr","locations":[{"start":{"line":137,"column":12},"end":{"line":137,"column":24}},{"start":{"line":137,"column":24},"end":{"line":137,"column":49}}],"line":137},"21":{"loc":{"start":{"line":151,"column":4},"end":{"line":155,"column":null}},"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":155,"column":null}},{"start":{},"end":{}}],"line":151},"22":{"loc":{"start":{"line":159,"column":4},"end":{"line":163,"column":null}},"type":"if","locations":[{"start":{"line":159,"column":4},"end":{"line":163,"column":null}},{"start":{},"end":{}}],"line":159},"23":{"loc":{"start":{"line":168,"column":18},"end":{"line":168,"column":null}},"type":"binary-expr","locations":[{"start":{"line":168,"column":18},"end":{"line":168,"column":32}},{"start":{"line":168,"column":32},"end":{"line":168,"column":null}}],"line":168},"24":{"loc":{"start":{"line":169,"column":19},"end":{"line":169,"column":null}},"type":"binary-expr","locations":[{"start":{"line":169,"column":19},"end":{"line":169,"column":34}},{"start":{"line":169,"column":34},"end":{"line":169,"column":null}}],"line":169},"25":{"loc":{"start":{"line":178,"column":6},"end":{"line":180,"column":null}},"type":"if","locations":[{"start":{"line":178,"column":6},"end":{"line":180,"column":null}},{"start":{},"end":{}}],"line":178},"26":{"loc":{"start":{"line":198,"column":6},"end":{"line":198,"column":null}},"type":"if","locations":[{"start":{"line":198,"column":6},"end":{"line":198,"column":null}},{"start":{},"end":{}}],"line":198},"27":{"loc":{"start":{"line":199,"column":6},"end":{"line":199,"column":null}},"type":"if","locations":[{"start":{"line":199,"column":6},"end":{"line":199,"column":null}},{"start":{},"end":{}}],"line":199},"28":{"loc":{"start":{"line":202,"column":4},"end":{"line":204,"column":null}},"type":"if","locations":[{"start":{"line":202,"column":4},"end":{"line":204,"column":null}},{"start":{},"end":{}}],"line":202},"29":{"loc":{"start":{"line":215,"column":4},"end":{"line":217,"column":null}},"type":"if","locations":[{"start":{"line":215,"column":4},"end":{"line":217,"column":null}},{"start":{},"end":{}}],"line":215},"30":{"loc":{"start":{"line":223,"column":18},"end":{"line":223,"column":null}},"type":"cond-expr","locations":[{"start":{"line":223,"column":33},"end":{"line":223,"column":39}},{"start":{"line":223,"column":39},"end":{"line":223,"column":null}}],"line":223},"31":{"loc":{"start":{"line":229,"column":4},"end":{"line":232,"column":null}},"type":"if","locations":[{"start":{"line":229,"column":4},"end":{"line":232,"column":null}},{"start":{},"end":{}}],"line":229},"32":{"loc":{"start":{"line":229,"column":8},"end":{"line":229,"column":73}},"type":"binary-expr","locations":[{"start":{"line":229,"column":8},"end":{"line":229,"column":32}},{"start":{"line":229,"column":32},"end":{"line":229,"column":73}}],"line":229},"33":{"loc":{"start":{"line":237,"column":4},"end":{"line":247,"column":null}},"type":"if","locations":[{"start":{"line":237,"column":4},"end":{"line":247,"column":null}},{"start":{"line":244,"column":4},"end":{"line":247,"column":null}}],"line":237},"34":{"loc":{"start":{"line":243,"column":42},"end":{"line":243,"column":83}},"type":"cond-expr","locations":[{"start":{"line":243,"column":65},"end":{"line":243,"column":82}},{"start":{"line":243,"column":82},"end":{"line":243,"column":83}}],"line":243},"35":{"loc":{"start":{"line":244,"column":4},"end":{"line":247,"column":null}},"type":"if","locations":[{"start":{"line":244,"column":4},"end":{"line":247,"column":null}},{"start":{},"end":{}}],"line":244},"36":{"loc":{"start":{"line":272,"column":4},"end":{"line":272,"column":null}},"type":"if","locations":[{"start":{"line":272,"column":4},"end":{"line":272,"column":null}},{"start":{},"end":{}}],"line":272},"37":{"loc":{"start":{"line":272,"column":8},"end":{"line":272,"column":49}},"type":"binary-expr","locations":[{"start":{"line":272,"column":8},"end":{"line":272,"column":18}},{"start":{"line":272,"column":18},"end":{"line":272,"column":33}},{"start":{"line":272,"column":33},"end":{"line":272,"column":49}}],"line":272},"38":{"loc":{"start":{"line":277,"column":6},"end":{"line":287,"column":null}},"type":"if","locations":[{"start":{"line":277,"column":6},"end":{"line":287,"column":null}},{"start":{"line":282,"column":13},"end":{"line":287,"column":null}}],"line":277},"39":{"loc":{"start":{"line":280,"column":49},"end":{"line":280,"column":80}},"type":"binary-expr","locations":[{"start":{"line":280,"column":49},"end":{"line":280,"column":79}},{"start":{"line":280,"column":79},"end":{"line":280,"column":80}}],"line":280},"40":{"loc":{"start":{"line":280,"column":94},"end":{"line":280,"column":125}},"type":"binary-expr","locations":[{"start":{"line":280,"column":94},"end":{"line":280,"column":124}},{"start":{"line":280,"column":124},"end":{"line":280,"column":125}}],"line":280},"41":{"loc":{"start":{"line":305,"column":19},"end":{"line":305,"column":null}},"type":"cond-expr","locations":[{"start":{"line":305,"column":19},"end":{"line":305,"column":null}},{"start":{"line":305,"column":13},"end":{"line":305,"column":null}}],"line":305},"42":{"loc":{"start":{"line":333,"column":12},"end":{"line":333,"column":null}},"type":"if","locations":[{"start":{"line":333,"column":12},"end":{"line":333,"column":null}},{"start":{},"end":{}}],"line":333},"43":{"loc":{"start":{"line":333,"column":16},"end":{"line":333,"column":36}},"type":"binary-expr","locations":[{"start":{"line":333,"column":16},"end":{"line":333,"column":27}},{"start":{"line":333,"column":27},"end":{"line":333,"column":36}}],"line":333},"44":{"loc":{"start":{"line":336,"column":31},"end":{"line":336,"column":null}},"type":"binary-expr","locations":[{"start":{"line":336,"column":31},"end":{"line":336,"column":46}},{"start":{"line":336,"column":46},"end":{"line":336,"column":78}},{"start":{"line":336,"column":78},"end":{"line":336,"column":null}}],"line":336},"45":{"loc":{"start":{"line":337,"column":32},"end":{"line":337,"column":null}},"type":"cond-expr","locations":[{"start":{"line":337,"column":58},"end":{"line":337,"column":62}},{"start":{"line":337,"column":62},"end":{"line":337,"column":null}}],"line":337},"46":{"loc":{"start":{"line":337,"column":32},"end":{"line":337,"column":58}},"type":"binary-expr","locations":[{"start":{"line":337,"column":32},"end":{"line":337,"column":45}},{"start":{"line":337,"column":45},"end":{"line":337,"column":58}}],"line":337},"47":{"loc":{"start":{"line":338,"column":32},"end":{"line":338,"column":null}},"type":"cond-expr","locations":[{"start":{"line":338,"column":45},"end":{"line":338,"column":57}},{"start":{"line":338,"column":57},"end":{"line":338,"column":null}}],"line":338},"48":{"loc":{"start":{"line":338,"column":57},"end":{"line":338,"column":null}},"type":"cond-expr","locations":[{"start":{"line":338,"column":69},"end":{"line":338,"column":81}},{"start":{"line":338,"column":81},"end":{"line":338,"column":null}}],"line":338},"49":{"loc":{"start":{"line":355,"column":28},"end":{"line":355,"column":51}},"type":"binary-expr","locations":[{"start":{"line":355,"column":28},"end":{"line":355,"column":41}},{"start":{"line":355,"column":41},"end":{"line":355,"column":51}}],"line":355},"50":{"loc":{"start":{"line":358,"column":52},"end":{"line":358,"column":null}},"type":"binary-expr","locations":[{"start":{"line":358,"column":52},"end":{"line":358,"column":null}},{"start":{"line":358,"column":52},"end":{"line":358,"column":null}}],"line":358},"51":{"loc":{"start":{"line":350,"column":30},"end":{"line":350,"column":null}},"type":"binary-expr","locations":[{"start":{"line":350,"column":30},"end":{"line":350,"column":null}},{"start":{"line":350,"column":30},"end":{"line":350,"column":null}}],"line":350},"52":{"loc":{"start":{"line":379,"column":37},"end":{"line":379,"column":65}},"type":"cond-expr","locations":[{"start":{"line":379,"column":50},"end":{"line":379,"column":63}},{"start":{"line":379,"column":63},"end":{"line":379,"column":65}}],"line":379},"53":{"loc":{"start":{"line":379,"column":69},"end":{"line":379,"column":97}},"type":"cond-expr","locations":[{"start":{"line":379,"column":82},"end":{"line":379,"column":95}},{"start":{"line":379,"column":95},"end":{"line":379,"column":97}}],"line":379},"54":{"loc":{"start":{"line":397,"column":38},"end":{"line":397,"column":64}},"type":"cond-expr","locations":[{"start":{"line":397,"column":51},"end":{"line":397,"column":59}},{"start":{"line":397,"column":59},"end":{"line":397,"column":64}}],"line":397},"55":{"loc":{"start":{"line":413,"column":58},"end":{"line":413,"column":95}},"type":"cond-expr","locations":[{"start":{"line":413,"column":87},"end":{"line":413,"column":93}},{"start":{"line":413,"column":93},"end":{"line":413,"column":95}}],"line":413},"56":{"loc":{"start":{"line":391,"column":38},"end":{"line":391,"column":116}},"type":"cond-expr","locations":[{"start":{"line":391,"column":51},"end":{"line":391,"column":64}},{"start":{"line":391,"column":64},"end":{"line":391,"column":116}}],"line":391},"57":{"loc":{"start":{"line":391,"column":64},"end":{"line":391,"column":116}},"type":"cond-expr","locations":[{"start":{"line":391,"column":76},"end":{"line":391,"column":101}},{"start":{"line":391,"column":101},"end":{"line":391,"column":116}}],"line":391},"58":{"loc":{"start":{"line":392,"column":36},"end":{"line":396,"column":44}},"type":"cond-expr","locations":[{"start":{"line":393,"column":26},"end":{"line":393,"column":null}},{"start":{"line":394,"column":26},"end":{"line":396,"column":44}}],"line":392},"59":{"loc":{"start":{"line":394,"column":26},"end":{"line":396,"column":44}},"type":"cond-expr","locations":[{"start":{"line":395,"column":26},"end":{"line":395,"column":null}},{"start":{"line":396,"column":26},"end":{"line":396,"column":44}}],"line":394},"60":{"loc":{"start":{"line":404,"column":50},"end":{"line":404,"column":null}},"type":"binary-expr","locations":[{"start":{"line":404,"column":50},"end":{"line":404,"column":null}},{"start":{"line":404,"column":50},"end":{"line":404,"column":null}}],"line":404},"61":{"loc":{"start":{"line":422,"column":11},"end":{"line":422,"column":22}},"type":"binary-expr","locations":[{"start":{"line":422,"column":11},"end":{"line":422,"column":22}},{"start":{"line":422,"column":11},"end":{"line":422,"column":22}}],"line":422},"62":{"loc":{"start":{"line":455,"column":32},"end":{"line":455,"column":72}},"type":"binary-expr","locations":[{"start":{"line":455,"column":32},"end":{"line":455,"column":53}},{"start":{"line":455,"column":53},"end":{"line":455,"column":72}}],"line":455},"63":{"loc":{"start":{"line":464,"column":15},"end":{"line":464,"column":47}},"type":"cond-expr","locations":[{"start":{"line":464,"column":32},"end":{"line":464,"column":40}},{"start":{"line":464,"column":40},"end":{"line":464,"column":47}}],"line":464},"64":{"loc":{"start":{"line":483,"column":24},"end":{"line":483,"column":71}},"type":"binary-expr","locations":[{"start":{"line":483,"column":24},"end":{"line":483,"column":37}},{"start":{"line":483,"column":32},"end":{"line":483,"column":71}}],"line":483},"65":{"loc":{"start":{"line":457,"column":24},"end":{"line":457,"column":53}},"type":"binary-expr","locations":[{"start":{"line":457,"column":24},"end":{"line":457,"column":39}},{"start":{"line":457,"column":39},"end":{"line":457,"column":53}}],"line":457},"66":{"loc":{"start":{"line":462,"column":24},"end":{"line":462,"column":77}},"type":"binary-expr","locations":[{"start":{"line":462,"column":24},"end":{"line":462,"column":39}},{"start":{"line":462,"column":39},"end":{"line":462,"column":57}},{"start":{"line":462,"column":57},"end":{"line":462,"column":77}}],"line":462},"67":{"loc":{"start":{"line":462,"column":77},"end":{"line":462,"column":null}},"type":"binary-expr","locations":[{"start":{"line":462,"column":77},"end":{"line":462,"column":null}},{"start":{"line":462,"column":77},"end":{"line":462,"column":null}}],"line":462},"68":{"loc":{"start":{"line":495,"column":25},"end":{"line":495,"column":null}},"type":"if","locations":[{"start":{"line":495,"column":25},"end":{"line":495,"column":null}},{"start":{},"end":{}}],"line":495}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0,"183":0,"184":0,"185":0,"186":0,"187":0,"188":0,"189":0,"190":0,"191":0,"192":0,"193":0,"194":0,"195":0,"196":0,"197":0,"198":0,"199":0,"200":0,"201":0,"202":0,"203":0,"204":0,"205":0,"206":0,"207":0,"208":0,"209":0,"210":0,"211":0,"212":0,"213":0,"214":0,"215":0,"216":0,"217":0,"218":0,"219":0,"220":0,"221":0,"222":0,"223":0,"224":0,"225":0,"226":0,"227":0,"228":0,"229":0,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":0,"242":0,"243":0,"244":0,"245":0,"246":0,"247":0,"248":0,"249":0,"250":0,"251":0,"252":0,"253":0,"254":0,"255":0,"256":0,"257":0,"258":0,"259":0,"260":0,"261":0,"262":0,"263":0,"264":0,"265":0,"266":0,"267":0,"268":0,"269":0,"270":0,"271":0,"272":0,"273":0,"274":0,"275":0,"276":0,"277":0,"278":0,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":0,"290":0,"291":0,"292":0,"293":0,"294":0,"295":0,"296":0,"297":0,"298":0,"299":0,"300":0,"301":0,"302":0,"303":0,"304":0,"305":0,"306":0,"307":0,"308":0,"309":0,"310":0,"311":0,"312":0,"313":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0],"26":[0,0],"27":[0,0],"28":[0,0],"29":[0,0],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0],"44":[0,0,0],"45":[0,0],"46":[0,0],"47":[0,0],"48":[0,0],"49":[0,0],"50":[0,0],"51":[0,0],"52":[0,0],"53":[0,0],"54":[0,0],"55":[0,0],"56":[0,0],"57":[0,0],"58":[0,0],"59":[0,0],"60":[0,0],"61":[0,0],"62":[0,0],"63":[0,0],"64":[0,0],"65":[0,0],"66":[0,0,0],"67":[0,0],"68":[0,0]},"meta":{"lastBranch":69,"lastFunction":78,"lastStatement":314,"seen":{"s:19:15:21:Infinity":0,"s:24:42:36:Infinity":1,"s:38:19:38:Infinity":2,"s:39:20:39:Infinity":3,"s:41:6:493:Infinity":4,"f:41:29:41:35":0,"s:42:34:42:Infinity":5,"s:43:34:43:Infinity":6,"s:44:32:44:Infinity":7,"s:45:30:45:Infinity":8,"s:46:28:46:Infinity":9,"s:47:30:47:Infinity":10,"s:48:36:48:Infinity":11,"s:49:36:49:Infinity":12,"s:50:34:50:Infinity":13,"s:51:38:51:Infinity":14,"s:52:20:52:Infinity":15,"s:55:26:55:Infinity":16,"s:57:25:59:Infinity":17,"f:57:25:57:26":1,"s:58:4:58:Infinity":18,"b:58:11:58:30:58:30:58:Infinity":0,"s:61:27:63:Infinity":19,"f:61:27:61:28":2,"s:62:4:62:Infinity":20,"s:65:31:79:Infinity":21,"f:65:31:65:32":3,"s:66:10:66:Infinity":22,"b:67:4:73:Infinity:undefined:undefined:undefined:undefined":1,"s:67:4:73:Infinity":23,"s:68:6:72:Infinity":24,"b:69:8:71:Infinity:undefined:undefined:undefined:undefined":2,"s:69:8:71:Infinity":25,"s:70:10:70:Infinity":26,"s:74:18:74:Infinity":27,"b:75:4:77:Infinity:undefined:undefined:undefined:undefined":3,"s:75:4:77:Infinity":28,"s:76:6:76:Infinity":29,"s:78:4:78:Infinity":30,"s:81:29:83:Infinity":31,"f:81:29:81:30":4,"s:82:4:82:Infinity":32,"f:82:27:82:32":5,"s:82:32:82:68":33,"b:82:32:82:53:82:53:82:68":4,"s:85:29:148:Infinity":34,"f:85:29:85:30":6,"b:86:4:86:Infinity:undefined:undefined:undefined:undefined":5,"s:86:4:86:Infinity":35,"s:86:27:86:Infinity":36,"s:87:4:87:Infinity":37,"s:89:16:89:Infinity":38,"s:90:21:90:Infinity":39,"s:91:18:91:Infinity":40,"s:93:17:145:Infinity":41,"f:93:17:93:23":7,"b:94:6:97:Infinity:undefined:undefined:undefined:undefined":6,"s:94:6:97:Infinity":42,"s:95:8:95:Infinity":43,"s:96:8:96:Infinity":44,"s:99:18:99:Infinity":45,"s:100:23:100:Infinity":46,"s:102:6:115:Infinity":47,"s:102:19:102:22":48,"b:103:8:103:Infinity:undefined:undefined:undefined:undefined":7,"s:103:8:103:Infinity":49,"b:103:12:103:24:103:24:103:51":8,"s:103:51:103:Infinity":50,"s:104:8:114:Infinity":51,"s:104:21:104:28":52,"b:105:10:105:Infinity:undefined:undefined:undefined:undefined":9,"s:105:10:105:Infinity":53,"b:105:14:105:26:105:26:105:53":10,"s:105:53:105:Infinity":54,"s:106:21:106:Infinity":55,"s:107:21:107:Infinity":56,"s:108:23:108:Infinity":57,"b:108:23:108:55:108:55:108:Infinity":11,"s:109:25:109:Infinity":58,"s:110:10:110:Infinity":59,"s:111:10:111:Infinity":60,"s:112:10:112:Infinity":61,"s:113:10:113:Infinity":62,"s:117:6:134:Infinity":63,"f:117:23:117:31":8,"s:118:18:118:Infinity":64,"s:119:18:119:Infinity":65,"b:120:8:133:Infinity:undefined:undefined:undefined:undefined":12,"s:120:8:133:Infinity":66,"b:120:12:120:17:120:17:120:20":13,"s:121:21:121:Infinity":67,"s:122:21:122:Infinity":68,"s:123:23:123:Infinity":69,"b:123:23:123:55:123:55:123:Infinity":14,"s:124:16:124:Infinity":70,"b:125:10:128:Infinity:undefined:undefined:undefined:undefined":15,"s:125:10:128:Infinity":71,"b:125:16:125:28:125:28:125:51":16,"s:126:12:126:Infinity":72,"s:127:12:127:Infinity":73,"b:129:10:132:Infinity:undefined:undefined:undefined:undefined":17,"s:129:10:132:Infinity":74,"b:129:16:129:28:129:28:129:51":18,"s:130:12:130:Infinity":75,"s:131:12:131:Infinity":76,"s:136:6:140:Infinity":77,"f:136:18:136:26":9,"b:137:8:137:Infinity:undefined:undefined:undefined:undefined":19,"s:137:8:137:Infinity":78,"b:137:12:137:24:137:24:137:49":20,"s:137:49:137:Infinity":79,"s:138:8:138:Infinity":80,"s:139:8:139:Infinity":81,"s:142:6:142:Infinity":82,"s:143:6:143:Infinity":83,"s:144:6:144:Infinity":84,"s:147:4:147:Infinity":85,"s:150:2:212:Infinity":86,"f:150:15:150:21":10,"b:151:4:155:Infinity:undefined:undefined:undefined:undefined":21,"s:151:4:155:Infinity":87,"s:152:6:152:Infinity":88,"s:153:6:153:Infinity":89,"s:154:6:154:Infinity":90,"s:157:10:157:Infinity":91,"s:158:10:158:Infinity":92,"b:159:4:163:Infinity:undefined:undefined:undefined:undefined":22,"s:159:4:163:Infinity":93,"s:160:6:160:Infinity":94,"s:161:6:161:Infinity":95,"s:162:6:162:Infinity":96,"s:165:20:165:Infinity":97,"s:166:16:166:Infinity":98,"s:167:17:167:Infinity":99,"s:168:18:168:Infinity":100,"b:168:18:168:32:168:32:168:Infinity":23,"s:169:19:169:Infinity":101,"b:169:19:169:34:169:34:169:Infinity":24,"s:170:15:170:Infinity":102,"s:171:15:171:Infinity":103,"s:173:22:173:Infinity":104,"s:174:22:174:Infinity":105,"s:176:4:193:Infinity":106,"f:176:14:176:15":11,"s:177:19:177:Infinity":107,"b:178:6:180:Infinity:undefined:undefined:undefined:undefined":25,"s:178:6:180:Infinity":108,"s:179:8:179:Infinity":109,"s:181:21:181:Infinity":110,"s:182:16:182:Infinity":111,"s:183:6:192:Infinity":112,"s:195:4:200:Infinity":113,"f:195:14:195:22":12,"s:196:18:196:Infinity":114,"s:197:18:197:Infinity":115,"b:198:6:198:Infinity:undefined:undefined:undefined:undefined":26,"s:198:6:198:Infinity":116,"s:198:15:198:Infinity":117,"b:199:6:199:Infinity:undefined:undefined:undefined:undefined":27,"s:199:6:199:Infinity":118,"s:199:15:199:Infinity":119,"b:202:4:204:Infinity:undefined:undefined:undefined:undefined":28,"s:202:4:204:Infinity":120,"s:203:6:203:Infinity":121,"s:205:4:205:Infinity":122,"s:206:4:206:Infinity":123,"s:207:4:207:Infinity":124,"s:208:4:208:Infinity":125,"s:209:4:209:Infinity":126,"s:211:4:211:Infinity":127,"s:214:2:218:Infinity":128,"f:214:12:214:18":13,"b:215:4:217:Infinity:undefined:undefined:undefined:undefined":29,"s:215:4:217:Infinity":129,"s:216:6:216:Infinity":130,"s:220:22:226:Infinity":131,"f:220:22:220:23":14,"s:221:4:221:Infinity":132,"s:222:14:222:Infinity":133,"s:223:18:223:Infinity":134,"b:223:33:223:39:223:39:223:Infinity":30,"s:224:17:224:Infinity":135,"s:225:4:225:Infinity":136,"s:228:26:233:Infinity":137,"f:228:26:228:27":15,"b:229:4:232:Infinity:undefined:undefined:undefined:undefined":31,"s:229:4:232:Infinity":138,"b:229:8:229:32:229:32:229:73":32,"s:230:6:230:Infinity":139,"s:231:6:231:Infinity":140,"s:235:26:248:Infinity":141,"f:235:26:235:27":16,"s:236:21:236:Infinity":142,"b:237:4:247:Infinity:244:4:247:Infinity":33,"s:237:4:247:Infinity":143,"s:238:16:238:Infinity":144,"s:239:18:239:Infinity":145,"s:240:19:240:Infinity":146,"s:241:12:241:Infinity":147,"s:242:12:242:Infinity":148,"s:243:6:243:Infinity":149,"f:243:20:243:28":17,"s:243:28:243:84":150,"f:243:37:243:42":18,"s:243:42:243:83":151,"b:243:65:243:82:243:82:243:83":34,"b:244:4:247:Infinity:undefined:undefined:undefined:undefined":35,"s:244:4:247:Infinity":152,"s:245:17:245:Infinity":153,"s:246:6:246:Infinity":154,"f:246:19:246:28":19,"s:246:28:246:82":155,"s:250:24:253:Infinity":156,"f:250:24:250:30":20,"s:251:4:251:Infinity":157,"s:252:4:252:Infinity":158,"s:255:30:259:Infinity":159,"f:255:30:255:31":21,"s:256:4:256:Infinity":160,"s:257:4:257:Infinity":161,"s:258:4:258:Infinity":162,"s:261:26:263:Infinity":163,"f:261:26:261:27":22,"s:262:4:262:Infinity":164,"s:265:29:268:Infinity":165,"f:265:29:265:30":23,"s:266:4:266:Infinity":166,"s:267:4:267:Infinity":167,"s:270:28:298:Infinity":168,"f:270:28:270:40":24,"s:271:18:271:Infinity":169,"b:272:4:272:Infinity:undefined:undefined:undefined:undefined":36,"s:272:4:272:Infinity":170,"b:272:8:272:18:272:18:272:33:272:33:272:49":37,"s:272:49:272:Infinity":171,"s:274:4:274:Infinity":172,"s:275:4:297:Infinity":173,"s:276:21:276:Infinity":174,"b:277:6:287:Infinity:282:13:287:Infinity":38,"s:277:6:287:Infinity":175,"s:278:8:281:Infinity":176,"b:280:49:280:79:280:79:280:80":39,"b:280:94:280:124:280:124:280:125":40,"s:283:8:286:Infinity":177,"s:288:6:288:Infinity":178,"s:290:6:293:Infinity":179,"s:294:6:294:Infinity":180,"s:296:6:296:Infinity":181,"s:300:19:300:Infinity":182,"f:300:19:300:25":25,"s:302:2:453:Infinity":183,"f:302:2:302:Infinity":26,"s:302:2:302:Infinity":184,"s:302:2:313:Infinity":185,"s:313:35:312:32":186,"s:312:32:311:36":187,"s:311:36:310:36":188,"s:310:36:309:Infinity":189,"s:305:13:305:19":190,"s:305:19:305:Infinity":191,"b:305:19:305:Infinity:305:13:305:Infinity":41,"s:305:19:370:Infinity":192,"f:305:19:305:Infinity":27,"s:330:11:370:12":193,"f:330:28:330:36":28,"s:331:27:331:Infinity":194,"f:331:45:331:50":29,"s:331:50:331:68":195,"s:332:27:332:Infinity":196,"f:332:45:332:50":30,"s:332:50:332:66":197,"b:333:12:333:Infinity:undefined:undefined:undefined:undefined":42,"s:333:12:333:Infinity":198,"b:333:16:333:27:333:27:333:36":43,"s:333:36:333:Infinity":199,"s:335:30:335:Infinity":200,"s:336:31:336:Infinity":201,"b:336:31:336:46:336:46:336:78:336:78:336:Infinity":44,"s:337:32:337:Infinity":202,"b:337:58:337:62:337:62:337:Infinity":45,"b:337:32:337:45:337:45:337:58":46,"s:338:32:338:Infinity":203,"b:338:45:338:57:338:57:338:Infinity":47,"b:338:69:338:81:338:81:338:Infinity":48,"s:340:12:350:Infinity":204,"f:340:12:340:Infinity":31,"s:340:12:340:Infinity":205,"s:340:12:344:Infinity":206,"f:344:30:344:36":32,"s:344:36:344:56":207,"s:344:56:343:Infinity":208,"f:343:30:343:36":33,"s:343:36:343:59":209,"s:343:59:351:Infinity":210,"s:351:37:352:Infinity":211,"s:352:43:358:Infinity":212,"b:355:28:355:41:355:41:355:51":49,"f:355:51:355:Infinity":34,"s:355:51:355:Infinity":213,"s:355:51:365:Infinity":214,"s:365:21:365:31":215,"s:365:31:358:Infinity":216,"f:365:31:365:Infinity":35,"s:365:31:357:48":217,"s:357:48:358:52":218,"s:358:52:358:Infinity":219,"b:358:52:358:Infinity:358:52:358:Infinity":50,"s:358:52:350:Infinity":220,"f:358:52:358:Infinity":36,"s:347:22:347:30":221,"s:348:22:348:30":222,"s:349:22:349:30":223,"s:350:22:350:30":224,"s:350:30:350:Infinity":225,"b:350:30:350:Infinity:350:30:350:Infinity":51,"s:370:12:420:Infinity":226,"f:370:12:370:Infinity":37,"s:372:11:420:12":227,"f:372:28:372:29":38,"s:373:31:373:Infinity":228,"s:374:30:374:Infinity":229,"s:375:31:375:Infinity":230,"s:377:12:404:Infinity":231,"f:377:12:377:Infinity":39,"s:377:12:377:Infinity":232,"s:377:12:384:Infinity":233,"f:384:30:384:36":40,"s:384:36:384:56":234,"s:384:56:383:Infinity":235,"f:383:30:383:36":41,"s:383:36:383:59":236,"s:383:59:382:52":237,"f:382:25:382:31":42,"s:382:31:382:52":238,"s:382:52:381:64":239,"f:381:30:381:36":43,"s:381:36:381:64":240,"s:381:64:379:Infinity":241,"b:379:50:379:63:379:63:379:65":52,"b:379:82:379:95:379:95:379:97":53,"s:379:99:397:Infinity":242,"b:397:51:397:59:397:59:397:64":54,"s:397:64:401:Infinity":243,"f:397:64:397:Infinity":44,"s:401:52:401:61":244,"s:401:61:406:Infinity":245,"f:401:61:401:Infinity":45,"s:406:25:406:34":246,"s:406:34:409:Infinity":247,"f:406:34:406:Infinity":46,"s:409:50:409:60":248,"s:409:60:413:58":249,"f:409:60:409:Infinity":47,"s:413:25:413:45":250,"s:413:45:413:Infinity":251,"f:413:45:413:58":48,"s:413:58:413:95":252,"b:413:87:413:93:413:93:413:95":55,"s:413:95:404:Infinity":253,"f:413:95:413:Infinity":49,"s:380:27:380:95":254,"s:391:38:391:116":255,"b:391:51:391:64:391:64:391:116":56,"b:391:76:391:101:391:101:391:116":57,"s:392:36:396:44":256,"b:393:26:393:Infinity:394:26:396:44":58,"b:395:26:395:Infinity:396:26:396:44":59,"s:404:40:404:50":257,"s:404:50:404:Infinity":258,"b:404:50:404:Infinity:404:50:404:Infinity":60,"s:420:12:424:Infinity":259,"f:420:12:420:Infinity":50,"s:420:12:422:Infinity":260,"s:422:11:422:36":261,"s:422:36:422:22":262,"f:422:36:422:Infinity":51,"s:422:11:422:22":263,"b:422:11:422:22:422:11:422:22":61,"s:424:11:435:Infinity":264,"f:428:12:428:16":52,"s:428:16:428:28":265,"f:428:28:428:Infinity":53,"s:428:28:428:Infinity":266,"s:428:28:435:Infinity":267,"f:431:12:431:16":54,"s:431:16:431:29":268,"f:432:12:432:17":55,"s:432:17:432:31":269,"f:433:12:433:20":56,"s:433:20:433:34":270,"f:434:24:434:30":57,"s:434:30:434:Infinity":271,"f:435:21:435:27":58,"s:435:21:435:48":272,"s:435:48:435:Infinity":273,"s:435:48:441:87":274,"f:441:25:441:31":59,"s:441:31:441:87":275,"f:441:44:441:50":60,"s:441:50:441:86":276,"s:441:87:442:89":277,"f:442:25:442:31":61,"s:442:31:442:89":278,"f:442:44:442:50":62,"s:442:50:442:88":279,"s:442:89:443:65":280,"f:443:25:443:31":63,"s:443:31:443:65":281,"s:443:65:455:72":282,"f:455:26:455:32":64,"s:455:32:455:72":283,"b:455:32:455:53:455:53:455:72":62,"s:455:72:454:66":284,"f:454:24:454:30":65,"s:454:30:454:66":285,"s:454:66:461:40":286,"s:461:40:464:Infinity":287,"f:461:40:461:Infinity":66,"s:464:15:464:47":288,"b:464:32:464:40:464:40:464:47":63,"s:464:47:480:Infinity":289,"f:469:18:469:22":67,"s:469:22:469:32":290,"f:469:32:469:Infinity":68,"s:469:32:480:Infinity":291,"f:470:19:470:23":69,"s:470:23:470:58":292,"f:471:18:471:23":70,"s:471:18:478:Infinity":293,"f:471:23:471:Infinity":71,"s:471:23:471:Infinity":294,"s:471:23:476:21":295,"f:474:29:474:35":72,"s:475:22:475:Infinity":296,"s:476:21:478:Infinity":297,"s:478:39:478:Infinity":298,"s:480:17:484:Infinity":299,"f:483:18:483:22":73,"s:483:22:483:71":300,"b:483:24:483:37:483:32:483:71":64,"f:483:71:483:Infinity":74,"s:483:71:483:Infinity":301,"s:483:71:484:98":302,"f:484:55:484:61":75,"s:484:61:484:98":303,"s:484:98:484:Infinity":304,"s:484:98:462:Infinity":305,"f:484:98:484:Infinity":76,"s:316:22:316:92":306,"s:457:24:457:53":307,"b:457:24:457:39:457:39:457:53":65,"s:462:24:462:77":308,"b:462:24:462:39:462:39:462:57:462:57:462:77":66,"s:462:77:462:Infinity":309,"b:462:77:462:Infinity:462:77:462:Infinity":67,"s:462:77:453:Infinity":310,"f:462:77:462:Infinity":77,"s:462:77:453:33":311,"s:453:33:453:Infinity":312,"b:495:25:495:Infinity:undefined:undefined:undefined:undefined":68,"s:495:25:495:Infinity":313}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/graph/InspectorPanel.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/graph/InspectorPanel.tsx","statementMap":{"0":{"start":{"line":13,"column":42},"end":{"line":25,"column":null}},"1":{"start":{"line":27,"column":6},"end":{"line":118,"column":null}},"2":{"start":{"line":28,"column":8},"end":{"line":32,"column":null}},"3":{"start":{"line":29,"column":4},"end":{"line":31,"column":null}},"4":{"start":{"line":30,"column":13},"end":{"line":30,"column":null}},"5":{"start":{"line":34,"column":8},"end":{"line":34,"column":null}},"6":{"start":{"line":34,"column":43},"end":{"line":34,"column":66}},"7":{"start":{"line":36,"column":8},"end":{"line":48,"column":null}},"8":{"start":{"line":37,"column":4},"end":{"line":47,"column":null}},"9":{"start":{"line":38,"column":26},"end":{"line":38,"column":null}},"10":{"start":{"line":39,"column":28},"end":{"line":39,"column":null}},"11":{"start":{"line":39,"column":55},"end":{"line":39,"column":75}},"12":{"start":{"line":40,"column":6},"end":{"line":46,"column":null}},"13":{"start":{"line":50,"column":8},"end":{"line":53,"column":null}},"14":{"start":{"line":51,"column":18},"end":{"line":51,"column":null}},"15":{"start":{"line":52,"column":4},"end":{"line":52,"column":null}},"16":{"start":{"line":55,"column":8},"end":{"line":57,"column":null}},"17":{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},"18":{"start":{"line":59,"column":2},"end":{"line":114,"column":null}},"19":{"start":{"line":59,"column":2},"end":{"line":59,"column":null}},"20":{"start":{"line":59,"column":2},"end":{"line":63,"column":null}},"21":{"start":{"line":63,"column":48},"end":{"line":64,"column":null}},"22":{"start":{"line":64,"column":48},"end":{"line":65,"column":null}},"23":{"start":{"line":65,"column":42},"end":{"line":65,"column":58}},"24":{"start":{"line":65,"column":58},"end":{"line":67,"column":null}},"25":{"start":{"line":67,"column":62},"end":{"line":75,"column":null}},"26":{"start":{"line":75,"column":40},"end":{"line":75,"column":53}},"27":{"start":{"line":75,"column":53},"end":{"line":79,"column":null}},"28":{"start":{"line":79,"column":48},"end":{"line":83,"column":null}},"29":{"start":{"line":83,"column":55},"end":{"line":107,"column":null}},"30":{"start":{"line":92,"column":14},"end":{"line":92,"column":43}},"31":{"start":{"line":93,"column":18},"end":{"line":93,"column":null}},"32":{"start":{"line":93,"column":18},"end":{"line":107,"column":null}},"33":{"start":{"line":100,"column":21},"end":{"line":100,"column":39}},"34":{"start":{"line":101,"column":16},"end":{"line":105,"column":null}},"35":{"start":{"line":101,"column":18},"end":{"line":101,"column":null}},"36":{"start":{"line":101,"column":18},"end":{"line":103,"column":null}},"37":{"start":{"line":103,"column":48},"end":{"line":103,"column":55}},"38":{"start":{"line":103,"column":55},"end":{"line":104,"column":null}},"39":{"start":{"line":104,"column":49},"end":{"line":104,"column":57}},"40":{"start":{"line":104,"column":57},"end":{"line":105,"column":null}},"41":{"start":{"line":105,"column":57},"end":{"line":105,"column":72}},"42":{"start":{"line":105,"column":72},"end":{"line":105,"column":null}},"43":{"start":{"line":107,"column":15},"end":{"line":107,"column":null}},"44":{"start":{"line":107,"column":15},"end":{"line":113,"column":null}},"45":{"start":{"line":113,"column":61},"end":{"line":114,"column":null}},"46":{"start":{"line":114,"column":19},"end":{"line":114,"column":35}},"47":{"start":{"line":114,"column":35},"end":{"line":114,"column":null}},"48":{"start":{"line":120,"column":30},"end":{"line":120,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":27,"column":56},"end":{"line":27,"column":66}},"loc":{"start":{"line":27,"column":66},"end":{"line":118,"column":1}},"line":27},"1":{"name":"(anonymous_1)","decl":{"start":{"line":28,"column":36},"end":{"line":28,"column":42}},"loc":{"start":{"line":28,"column":42},"end":{"line":32,"column":3}},"line":28},"2":{"name":"(anonymous_2)","decl":{"start":{"line":30,"column":7},"end":{"line":30,"column":13}},"loc":{"start":{"line":30,"column":13},"end":{"line":30,"column":null}},"line":30},"3":{"name":"(anonymous_3)","decl":{"start":{"line":34,"column":37},"end":{"line":34,"column":43}},"loc":{"start":{"line":34,"column":43},"end":{"line":34,"column":66}},"line":34},"4":{"name":"(anonymous_4)","decl":{"start":{"line":36,"column":36},"end":{"line":36,"column":42}},"loc":{"start":{"line":36,"column":42},"end":{"line":48,"column":3}},"line":36},"5":{"name":"(anonymous_5)","decl":{"start":{"line":37,"column":33},"end":{"line":37,"column":42}},"loc":{"start":{"line":37,"column":42},"end":{"line":47,"column":5}},"line":37},"6":{"name":"(anonymous_6)","decl":{"start":{"line":39,"column":49},"end":{"line":39,"column":55}},"loc":{"start":{"line":39,"column":55},"end":{"line":39,"column":75}},"line":39},"7":{"name":"(anonymous_7)","decl":{"start":{"line":50,"column":30},"end":{"line":50,"column":36}},"loc":{"start":{"line":50,"column":36},"end":{"line":53,"column":3}},"line":50},"8":{"name":"(anonymous_8)","decl":{"start":{"line":55,"column":30},"end":{"line":55,"column":36}},"loc":{"start":{"line":55,"column":36},"end":{"line":57,"column":3}},"line":55},"9":{"name":"(anonymous_9)","decl":{"start":{"line":59,"column":2},"end":{"line":59,"column":null}},"loc":{"start":{"line":59,"column":2},"end":{"line":114,"column":null}},"line":59},"10":{"name":"(anonymous_10)","decl":{"start":{"line":64,"column":48},"end":{"line":64,"column":null}},"loc":{"start":{"line":65,"column":42},"end":{"line":65,"column":58}},"line":65},"11":{"name":"(anonymous_11)","decl":{"start":{"line":67,"column":62},"end":{"line":67,"column":null}},"loc":{"start":{"line":75,"column":40},"end":{"line":75,"column":53}},"line":75},"12":{"name":"(anonymous_12)","decl":{"start":{"line":92,"column":10},"end":{"line":92,"column":14}},"loc":{"start":{"line":92,"column":14},"end":{"line":92,"column":null}},"line":92},"13":{"name":"(anonymous_13)","decl":{"start":{"line":93,"column":10},"end":{"line":93,"column":18}},"loc":{"start":{"line":93,"column":18},"end":{"line":93,"column":null}},"line":93},"14":{"name":"(anonymous_14)","decl":{"start":{"line":93,"column":18},"end":{"line":93,"column":null}},"loc":{"start":{"line":93,"column":18},"end":{"line":107,"column":null}},"line":93},"15":{"name":"(anonymous_15)","decl":{"start":{"line":100,"column":17},"end":{"line":100,"column":21}},"loc":{"start":{"line":100,"column":21},"end":{"line":100,"column":null}},"line":100},"16":{"name":"(anonymous_16)","decl":{"start":{"line":101,"column":16},"end":{"line":101,"column":18}},"loc":{"start":{"line":101,"column":16},"end":{"line":105,"column":null}},"line":101},"17":{"name":"(anonymous_17)","decl":{"start":{"line":101,"column":18},"end":{"line":101,"column":null}},"loc":{"start":{"line":101,"column":18},"end":{"line":105,"column":null}},"line":101},"18":{"name":"(anonymous_18)","decl":{"start":{"line":103,"column":55},"end":{"line":103,"column":null}},"loc":{"start":{"line":104,"column":49},"end":{"line":104,"column":57}},"line":104},"19":{"name":"(anonymous_19)","decl":{"start":{"line":104,"column":57},"end":{"line":104,"column":null}},"loc":{"start":{"line":105,"column":57},"end":{"line":105,"column":72}},"line":105},"20":{"name":"(anonymous_20)","decl":{"start":{"line":113,"column":61},"end":{"line":113,"column":null}},"loc":{"start":{"line":114,"column":19},"end":{"line":114,"column":35}},"line":114}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":13},"end":{"line":30,"column":null}},"type":"binary-expr","locations":[{"start":{"line":30,"column":13},"end":{"line":30,"column":41}},{"start":{"line":30,"column":41},"end":{"line":30,"column":null}}],"line":30},"1":{"loc":{"start":{"line":38,"column":26},"end":{"line":38,"column":null}},"type":"cond-expr","locations":[{"start":{"line":38,"column":56},"end":{"line":38,"column":66}},{"start":{"line":38,"column":66},"end":{"line":38,"column":null}}],"line":38},"2":{"loc":{"start":{"line":42,"column":15},"end":{"line":42,"column":null}},"type":"binary-expr","locations":[{"start":{"line":42,"column":15},"end":{"line":42,"column":39}},{"start":{"line":42,"column":39},"end":{"line":42,"column":null}}],"line":42},"3":{"loc":{"start":{"line":43,"column":14},"end":{"line":43,"column":null}},"type":"binary-expr","locations":[{"start":{"line":43,"column":14},"end":{"line":43,"column":37}},{"start":{"line":43,"column":37},"end":{"line":43,"column":null}}],"line":43},"4":{"loc":{"start":{"line":44,"column":14},"end":{"line":44,"column":null}},"type":"binary-expr","locations":[{"start":{"line":44,"column":14},"end":{"line":44,"column":37}},{"start":{"line":44,"column":37},"end":{"line":44,"column":null}}],"line":44},"5":{"loc":{"start":{"line":52,"column":11},"end":{"line":52,"column":null}},"type":"cond-expr","locations":[{"start":{"line":52,"column":30},"end":{"line":52,"column":41}},{"start":{"line":52,"column":41},"end":{"line":52,"column":null}}],"line":52},"6":{"loc":{"start":{"line":56,"column":11},"end":{"line":56,"column":null}},"type":"binary-expr","locations":[{"start":{"line":56,"column":11},"end":{"line":56,"column":36}},{"start":{"line":56,"column":36},"end":{"line":56,"column":null}}],"line":56},"7":{"loc":{"start":{"line":120,"column":30},"end":{"line":120,"column":null}},"type":"if","locations":[{"start":{"line":120,"column":30},"end":{"line":120,"column":null}},{"start":{},"end":{}}],"line":120}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0]},"meta":{"lastBranch":8,"lastFunction":21,"lastStatement":49,"seen":{"s:13:42:25:Infinity":0,"s:27:6:118:Infinity":1,"f:27:56:27:66":0,"s:28:8:32:Infinity":2,"f:28:36:28:42":1,"s:29:4:31:Infinity":3,"f:30:7:30:13":2,"s:30:13:30:Infinity":4,"b:30:13:30:41:30:41:30:Infinity":0,"s:34:8:34:Infinity":5,"f:34:37:34:43":3,"s:34:43:34:66":6,"s:36:8:48:Infinity":7,"f:36:36:36:42":4,"s:37:4:47:Infinity":8,"f:37:33:37:42":5,"s:38:26:38:Infinity":9,"b:38:56:38:66:38:66:38:Infinity":1,"s:39:28:39:Infinity":10,"f:39:49:39:55":6,"s:39:55:39:75":11,"s:40:6:46:Infinity":12,"b:42:15:42:39:42:39:42:Infinity":2,"b:43:14:43:37:43:37:43:Infinity":3,"b:44:14:44:37:44:37:44:Infinity":4,"s:50:8:53:Infinity":13,"f:50:30:50:36":7,"s:51:18:51:Infinity":14,"s:52:4:52:Infinity":15,"b:52:30:52:41:52:41:52:Infinity":5,"s:55:8:57:Infinity":16,"f:55:30:55:36":8,"s:56:4:56:Infinity":17,"b:56:11:56:36:56:36:56:Infinity":6,"s:59:2:114:Infinity":18,"f:59:2:59:Infinity":9,"s:59:2:59:Infinity":19,"s:59:2:63:Infinity":20,"s:63:48:64:Infinity":21,"s:64:48:65:Infinity":22,"f:64:48:64:Infinity":10,"s:65:42:65:58":23,"s:65:58:67:Infinity":24,"s:67:62:75:Infinity":25,"f:67:62:67:Infinity":11,"s:75:40:75:53":26,"s:75:53:79:Infinity":27,"s:79:48:83:Infinity":28,"s:83:55:107:Infinity":29,"f:92:10:92:14":12,"s:92:14:92:43":30,"f:93:10:93:18":13,"s:93:18:93:Infinity":31,"f:93:18:93:Infinity":14,"s:93:18:107:Infinity":32,"f:100:17:100:21":15,"s:100:21:100:39":33,"f:101:16:101:18":16,"s:101:16:105:Infinity":34,"f:101:18:101:Infinity":17,"s:101:18:101:Infinity":35,"s:101:18:103:Infinity":36,"s:103:48:103:55":37,"s:103:55:104:Infinity":38,"f:103:55:103:Infinity":18,"s:104:49:104:57":39,"s:104:57:105:Infinity":40,"f:104:57:104:Infinity":19,"s:105:57:105:72":41,"s:105:72:105:Infinity":42,"s:107:15:107:Infinity":43,"s:107:15:113:Infinity":44,"s:113:61:114:Infinity":45,"f:113:61:113:Infinity":20,"s:114:19:114:35":46,"s:114:35:114:Infinity":47,"b:120:30:120:Infinity:undefined:undefined:undefined:undefined":7,"s:120:30:120:Infinity":48}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/home/HomeView.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/home/HomeView.tsx","statementMap":{"0":{"start":{"line":19,"column":30},"end":{"line":45,"column":null}},"1":{"start":{"line":48,"column":6},"end":{"line":202,"column":null}},"2":{"start":{"line":49,"column":38},"end":{"line":49,"column":null}},"3":{"start":{"line":51,"column":17},"end":{"line":60,"column":null}},"4":{"start":{"line":52,"column":4},"end":{"line":52,"column":null}},"5":{"start":{"line":53,"column":14},"end":{"line":53,"column":null}},"6":{"start":{"line":54,"column":4},"end":{"line":54,"column":null}},"7":{"start":{"line":55,"column":14},"end":{"line":55,"column":null}},"8":{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},"9":{"start":{"line":57,"column":14},"end":{"line":57,"column":null}},"10":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"11":{"start":{"line":59,"column":4},"end":{"line":59,"column":null}},"12":{"start":{"line":62,"column":25},"end":{"line":65,"column":null}},"13":{"start":{"line":63,"column":4},"end":{"line":63,"column":null}},"14":{"start":{"line":64,"column":4},"end":{"line":64,"column":null}},"15":{"start":{"line":67,"column":31},"end":{"line":69,"column":null}},"16":{"start":{"line":68,"column":4},"end":{"line":68,"column":null}},"17":{"start":{"line":72,"column":8},"end":{"line":72,"column":null}},"18":{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},"19":{"start":{"line":74,"column":18},"end":{"line":74,"column":null}},"20":{"start":{"line":76,"column":2},"end":{"line":199,"column":null}},"21":{"start":{"line":76,"column":2},"end":{"line":76,"column":null}},"22":{"start":{"line":76,"column":2},"end":{"line":85,"column":null}},"23":{"start":{"line":85,"column":63},"end":{"line":88,"column":84}},"24":{"start":{"line":88,"column":63},"end":{"line":88,"column":84}},"25":{"start":{"line":88,"column":84},"end":{"line":110,"column":null}},"26":{"start":{"line":95,"column":14},"end":{"line":95,"column":null}},"27":{"start":{"line":95,"column":14},"end":{"line":98,"column":null}},"28":{"start":{"line":98,"column":50},"end":{"line":102,"column":null}},"29":{"start":{"line":102,"column":50},"end":{"line":106,"column":null}},"30":{"start":{"line":102,"column":50},"end":{"line":106,"column":56}},"31":{"start":{"line":106,"column":56},"end":{"line":106,"column":null}},"32":{"start":{"line":110,"column":7},"end":{"line":132,"column":null}},"33":{"start":{"line":127,"column":16},"end":{"line":130,"column":null}},"34":{"start":{"line":127,"column":22},"end":{"line":127,"column":null}},"35":{"start":{"line":127,"column":22},"end":{"line":128,"column":83}},"36":{"start":{"line":128,"column":62},"end":{"line":128,"column":83}},"37":{"start":{"line":128,"column":83},"end":{"line":129,"column":null}},"38":{"start":{"line":129,"column":53},"end":{"line":129,"column":64}},"39":{"start":{"line":129,"column":64},"end":{"line":130,"column":null}},"40":{"start":{"line":130,"column":54},"end":{"line":130,"column":66}},"41":{"start":{"line":130,"column":66},"end":{"line":130,"column":null}},"42":{"start":{"line":132,"column":15},"end":{"line":172,"column":null}},"43":{"start":{"line":145,"column":14},"end":{"line":168,"column":null}},"44":{"start":{"line":145,"column":18},"end":{"line":145,"column":null}},"45":{"start":{"line":145,"column":18},"end":{"line":148,"column":null}},"46":{"start":{"line":148,"column":43},"end":{"line":148,"column":52}},"47":{"start":{"line":148,"column":52},"end":{"line":150,"column":null}},"48":{"start":{"line":150,"column":44},"end":{"line":150,"column":54}},"49":{"start":{"line":150,"column":54},"end":{"line":152,"column":null}},"50":{"start":{"line":152,"column":48},"end":{"line":152,"column":58}},"51":{"start":{"line":152,"column":58},"end":{"line":153,"column":null}},"52":{"start":{"line":153,"column":49},"end":{"line":153,"column":65}},"53":{"start":{"line":153,"column":65},"end":{"line":157,"column":null}},"54":{"start":{"line":157,"column":38},"end":{"line":157,"column":54}},"55":{"start":{"line":157,"column":54},"end":{"line":158,"column":71}},"56":{"start":{"line":158,"column":56},"end":{"line":158,"column":71}},"57":{"start":{"line":158,"column":71},"end":{"line":168,"column":null}},"58":{"start":{"line":163,"column":27},"end":{"line":163,"column":43}},"59":{"start":{"line":164,"column":22},"end":{"line":166,"column":null}},"60":{"start":{"line":164,"column":23},"end":{"line":164,"column":null}},"61":{"start":{"line":164,"column":23},"end":{"line":165,"column":93}},"62":{"start":{"line":165,"column":67},"end":{"line":165,"column":93}},"63":{"start":{"line":165,"column":93},"end":{"line":166,"column":null}},"64":{"start":{"line":166,"column":27},"end":{"line":166,"column":null}},"65":{"start":{"line":168,"column":21},"end":{"line":168,"column":null}},"66":{"start":{"line":172,"column":13},"end":{"line":199,"column":null}},"67":{"start":{"line":199,"column":30},"end":{"line":199,"column":46}},"68":{"start":{"line":199,"column":63},"end":{"line":199,"column":87}},"69":{"start":{"line":199,"column":119},"end":{"line":199,"column":null}},"70":{"start":{"line":204,"column":24},"end":{"line":204,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":48,"column":28},"end":{"line":48,"column":34}},"loc":{"start":{"line":48,"column":34},"end":{"line":202,"column":1}},"line":48},"1":{"name":"(anonymous_1)","decl":{"start":{"line":51,"column":17},"end":{"line":51,"column":24}},"loc":{"start":{"line":51,"column":41},"end":{"line":60,"column":null}},"line":51},"2":{"name":"(anonymous_2)","decl":{"start":{"line":62,"column":25},"end":{"line":62,"column":32}},"loc":{"start":{"line":62,"column":67},"end":{"line":65,"column":null}},"line":62},"3":{"name":"(anonymous_3)","decl":{"start":{"line":67,"column":31},"end":{"line":67,"column":32}},"loc":{"start":{"line":67,"column":51},"end":{"line":69,"column":null}},"line":67},"4":{"name":"(anonymous_4)","decl":{"start":{"line":76,"column":2},"end":{"line":76,"column":null}},"loc":{"start":{"line":76,"column":2},"end":{"line":199,"column":null}},"line":76},"5":{"name":"(anonymous_5)","decl":{"start":{"line":88,"column":57},"end":{"line":88,"column":63}},"loc":{"start":{"line":88,"column":63},"end":{"line":88,"column":84}},"line":88},"6":{"name":"(anonymous_6)","decl":{"start":{"line":95,"column":14},"end":{"line":95,"column":null}},"loc":{"start":{"line":95,"column":14},"end":{"line":106,"column":null}},"line":95},"7":{"name":"(anonymous_7)","decl":{"start":{"line":102,"column":50},"end":{"line":102,"column":null}},"loc":{"start":{"line":102,"column":50},"end":{"line":106,"column":56}},"line":102},"8":{"name":"(anonymous_8)","decl":{"start":{"line":127,"column":16},"end":{"line":127,"column":22}},"loc":{"start":{"line":127,"column":16},"end":{"line":130,"column":null}},"line":127},"9":{"name":"(anonymous_9)","decl":{"start":{"line":127,"column":22},"end":{"line":127,"column":null}},"loc":{"start":{"line":127,"column":22},"end":{"line":130,"column":null}},"line":127},"10":{"name":"(anonymous_10)","decl":{"start":{"line":128,"column":56},"end":{"line":128,"column":62}},"loc":{"start":{"line":128,"column":62},"end":{"line":128,"column":83}},"line":128},"11":{"name":"(anonymous_11)","decl":{"start":{"line":128,"column":83},"end":{"line":128,"column":null}},"loc":{"start":{"line":129,"column":53},"end":{"line":129,"column":64}},"line":129},"12":{"name":"(anonymous_12)","decl":{"start":{"line":129,"column":64},"end":{"line":129,"column":null}},"loc":{"start":{"line":130,"column":54},"end":{"line":130,"column":66}},"line":130},"13":{"name":"(anonymous_13)","decl":{"start":{"line":145,"column":14},"end":{"line":145,"column":18}},"loc":{"start":{"line":145,"column":14},"end":{"line":168,"column":null}},"line":145},"14":{"name":"(anonymous_14)","decl":{"start":{"line":145,"column":18},"end":{"line":145,"column":null}},"loc":{"start":{"line":145,"column":18},"end":{"line":168,"column":null}},"line":145},"15":{"name":"(anonymous_15)","decl":{"start":{"line":148,"column":52},"end":{"line":148,"column":null}},"loc":{"start":{"line":150,"column":44},"end":{"line":150,"column":54}},"line":150},"16":{"name":"(anonymous_16)","decl":{"start":{"line":150,"column":54},"end":{"line":150,"column":null}},"loc":{"start":{"line":152,"column":48},"end":{"line":152,"column":58}},"line":152},"17":{"name":"(anonymous_17)","decl":{"start":{"line":152,"column":58},"end":{"line":152,"column":null}},"loc":{"start":{"line":153,"column":49},"end":{"line":153,"column":65}},"line":153},"18":{"name":"(anonymous_18)","decl":{"start":{"line":153,"column":65},"end":{"line":153,"column":null}},"loc":{"start":{"line":157,"column":38},"end":{"line":157,"column":54}},"line":157},"19":{"name":"(anonymous_19)","decl":{"start":{"line":158,"column":50},"end":{"line":158,"column":56}},"loc":{"start":{"line":158,"column":56},"end":{"line":158,"column":71}},"line":158},"20":{"name":"(anonymous_20)","decl":{"start":{"line":163,"column":23},"end":{"line":163,"column":27}},"loc":{"start":{"line":163,"column":27},"end":{"line":163,"column":null}},"line":163},"21":{"name":"(anonymous_21)","decl":{"start":{"line":164,"column":22},"end":{"line":164,"column":23}},"loc":{"start":{"line":164,"column":22},"end":{"line":166,"column":null}},"line":164},"22":{"name":"(anonymous_22)","decl":{"start":{"line":164,"column":23},"end":{"line":164,"column":null}},"loc":{"start":{"line":164,"column":23},"end":{"line":166,"column":null}},"line":164},"23":{"name":"(anonymous_23)","decl":{"start":{"line":165,"column":61},"end":{"line":165,"column":67}},"loc":{"start":{"line":165,"column":67},"end":{"line":165,"column":93}},"line":165},"24":{"name":"(anonymous_24)","decl":{"start":{"line":199,"column":24},"end":{"line":199,"column":30}},"loc":{"start":{"line":199,"column":30},"end":{"line":199,"column":48}},"line":199},"25":{"name":"(anonymous_25)","decl":{"start":{"line":199,"column":57},"end":{"line":199,"column":63}},"loc":{"start":{"line":199,"column":63},"end":{"line":199,"column":87}},"line":199}},"branchMap":{"0":{"loc":{"start":{"line":95,"column":7},"end":{"line":106,"column":null}},"type":"binary-expr","locations":[{"start":{"line":95,"column":7},"end":{"line":95,"column":14}},{"start":{"line":95,"column":7},"end":{"line":106,"column":null}}],"line":95},"1":{"loc":{"start":{"line":204,"column":24},"end":{"line":204,"column":null}},"type":"if","locations":[{"start":{"line":204,"column":24},"end":{"line":204,"column":null}},{"start":{},"end":{}}],"line":204}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0},"b":{"0":[0,0],"1":[0,0]},"meta":{"lastBranch":2,"lastFunction":26,"lastStatement":71,"seen":{"s:19:30:45:Infinity":0,"s:48:6:202:Infinity":1,"f:48:28:48:34":0,"s:49:38:49:Infinity":2,"s:51:17:60:Infinity":3,"f:51:17:51:24":1,"s:52:4:52:Infinity":4,"s:53:14:53:Infinity":5,"s:54:4:54:Infinity":6,"s:55:14:55:Infinity":7,"s:56:4:56:Infinity":8,"s:57:14:57:Infinity":9,"s:58:4:58:Infinity":10,"s:59:4:59:Infinity":11,"s:62:25:65:Infinity":12,"f:62:25:62:32":2,"s:63:4:63:Infinity":13,"s:64:4:64:Infinity":14,"s:67:31:69:Infinity":15,"f:67:31:67:32":3,"s:68:4:68:Infinity":16,"s:72:8:72:Infinity":17,"s:73:8:73:Infinity":18,"s:74:18:74:Infinity":19,"s:76:2:199:Infinity":20,"f:76:2:76:Infinity":4,"s:76:2:76:Infinity":21,"s:76:2:85:Infinity":22,"s:85:63:88:84":23,"f:88:57:88:63":5,"s:88:63:88:84":24,"s:88:84:110:Infinity":25,"b:95:7:95:14:95:7:106:Infinity":0,"f:95:14:95:Infinity":6,"s:95:14:95:Infinity":26,"s:95:14:98:Infinity":27,"s:98:50:102:Infinity":28,"s:102:50:106:Infinity":29,"f:102:50:102:Infinity":7,"s:102:50:106:56":30,"s:106:56:106:Infinity":31,"s:110:7:132:Infinity":32,"f:127:16:127:22":8,"s:127:16:130:Infinity":33,"f:127:22:127:Infinity":9,"s:127:22:127:Infinity":34,"s:127:22:128:83":35,"f:128:56:128:62":10,"s:128:62:128:83":36,"s:128:83:129:Infinity":37,"f:128:83:128:Infinity":11,"s:129:53:129:64":38,"s:129:64:130:Infinity":39,"f:129:64:129:Infinity":12,"s:130:54:130:66":40,"s:130:66:130:Infinity":41,"s:132:15:172:Infinity":42,"f:145:14:145:18":13,"s:145:14:168:Infinity":43,"f:145:18:145:Infinity":14,"s:145:18:145:Infinity":44,"s:145:18:148:Infinity":45,"s:148:43:148:52":46,"s:148:52:150:Infinity":47,"f:148:52:148:Infinity":15,"s:150:44:150:54":48,"s:150:54:152:Infinity":49,"f:150:54:150:Infinity":16,"s:152:48:152:58":50,"s:152:58:153:Infinity":51,"f:152:58:152:Infinity":17,"s:153:49:153:65":52,"s:153:65:157:Infinity":53,"f:153:65:153:Infinity":18,"s:157:38:157:54":54,"s:157:54:158:71":55,"f:158:50:158:56":19,"s:158:56:158:71":56,"s:158:71:168:Infinity":57,"f:163:23:163:27":20,"s:163:27:163:43":58,"f:164:22:164:23":21,"s:164:22:166:Infinity":59,"f:164:23:164:Infinity":22,"s:164:23:164:Infinity":60,"s:164:23:165:93":61,"f:165:61:165:67":23,"s:165:67:165:93":62,"s:165:93:166:Infinity":63,"s:166:27:166:Infinity":64,"s:168:21:168:Infinity":65,"s:172:13:199:Infinity":66,"f:199:24:199:30":24,"s:199:30:199:46":67,"f:199:57:199:63":25,"s:199:63:199:87":68,"s:199:119:199:Infinity":69,"b:204:24:204:Infinity:undefined:undefined:undefined:undefined":1,"s:204:24:204:Infinity":70}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/onboarding/ConnectionWizard.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/onboarding/ConnectionWizard.tsx","statementMap":{"0":{"start":{"line":17,"column":45},"end":{"line":23,"column":null}},"1":{"start":{"line":44,"column":6},"end":{"line":432,"column":null}},"2":{"start":{"line":45,"column":22},"end":{"line":45,"column":null}},"3":{"start":{"line":46,"column":42},"end":{"line":46,"column":null}},"4":{"start":{"line":47,"column":40},"end":{"line":47,"column":null}},"5":{"start":{"line":48,"column":26},"end":{"line":48,"column":null}},"6":{"start":{"line":49,"column":28},"end":{"line":49,"column":null}},"7":{"start":{"line":50,"column":50},"end":{"line":50,"column":null}},"8":{"start":{"line":51,"column":44},"end":{"line":51,"column":null}},"9":{"start":{"line":52,"column":38},"end":{"line":52,"column":null}},"10":{"start":{"line":53,"column":24},"end":{"line":53,"column":null}},"11":{"start":{"line":54,"column":34},"end":{"line":54,"column":null}},"12":{"start":{"line":56,"column":17},"end":{"line":56,"column":null}},"13":{"start":{"line":56,"column":23},"end":{"line":56,"column":null}},"14":{"start":{"line":57,"column":18},"end":{"line":57,"column":null}},"15":{"start":{"line":57,"column":24},"end":{"line":57,"column":null}},"16":{"start":{"line":59,"column":19},"end":{"line":67,"column":null}},"17":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"18":{"start":{"line":60,"column":43},"end":{"line":60,"column":null}},"19":{"start":{"line":61,"column":4},"end":{"line":61,"column":null}},"20":{"start":{"line":61,"column":85},"end":{"line":61,"column":null}},"21":{"start":{"line":62,"column":4},"end":{"line":64,"column":null}},"22":{"start":{"line":63,"column":6},"end":{"line":63,"column":null}},"23":{"start":{"line":65,"column":4},"end":{"line":65,"column":null}},"24":{"start":{"line":65,"column":18},"end":{"line":65,"column":null}},"25":{"start":{"line":66,"column":4},"end":{"line":66,"column":null}},"26":{"start":{"line":69,"column":19},"end":{"line":71,"column":null}},"27":{"start":{"line":70,"column":4},"end":{"line":70,"column":null}},"28":{"start":{"line":70,"column":20},"end":{"line":70,"column":null}},"29":{"start":{"line":73,"column":26},"end":{"line":88,"column":null}},"30":{"start":{"line":74,"column":18},"end":{"line":74,"column":null}},"31":{"start":{"line":75,"column":36},"end":{"line":86,"column":null}},"32":{"start":{"line":76,"column":18},"end":{"line":76,"column":null}},"33":{"start":{"line":77,"column":21},"end":{"line":77,"column":null}},"34":{"start":{"line":78,"column":6},"end":{"line":85,"column":null}},"35":{"start":{"line":87,"column":4},"end":{"line":87,"column":null}},"36":{"start":{"line":90,"column":25},"end":{"line":94,"column":null}},"37":{"start":{"line":91,"column":4},"end":{"line":91,"column":null}},"38":{"start":{"line":91,"column":22},"end":{"line":91,"column":null}},"39":{"start":{"line":92,"column":4},"end":{"line":92,"column":null}},"40":{"start":{"line":92,"column":29},"end":{"line":92,"column":null}},"41":{"start":{"line":93,"column":4},"end":{"line":93,"column":null}},"42":{"start":{"line":96,"column":27},"end":{"line":101,"column":null}},"43":{"start":{"line":97,"column":18},"end":{"line":97,"column":null}},"44":{"start":{"line":98,"column":4},"end":{"line":100,"column":null}},"45":{"start":{"line":99,"column":6},"end":{"line":99,"column":null}},"46":{"start":{"line":103,"column":25},"end":{"line":106,"column":null}},"47":{"start":{"line":104,"column":4},"end":{"line":104,"column":null}},"48":{"start":{"line":105,"column":4},"end":{"line":105,"column":null}},"49":{"start":{"line":108,"column":26},"end":{"line":110,"column":null}},"50":{"start":{"line":109,"column":4},"end":{"line":109,"column":null}},"51":{"start":{"line":112,"column":21},"end":{"line":118,"column":null}},"52":{"start":{"line":113,"column":4},"end":{"line":113,"column":null}},"53":{"start":{"line":114,"column":4},"end":{"line":114,"column":null}},"54":{"start":{"line":115,"column":4},"end":{"line":117,"column":null}},"55":{"start":{"line":116,"column":6},"end":{"line":116,"column":null}},"56":{"start":{"line":120,"column":21},"end":{"line":123,"column":null}},"57":{"start":{"line":121,"column":18},"end":{"line":121,"column":null}},"58":{"start":{"line":122,"column":4},"end":{"line":122,"column":null}},"59":{"start":{"line":125,"column":25},"end":{"line":134,"column":null}},"60":{"start":{"line":126,"column":16},"end":{"line":126,"column":null}},"61":{"start":{"line":127,"column":4},"end":{"line":133,"column":null}},"62":{"start":{"line":128,"column":18},"end":{"line":128,"column":null}},"63":{"start":{"line":129,"column":19},"end":{"line":129,"column":null}},"64":{"start":{"line":130,"column":17},"end":{"line":130,"column":null}},"65":{"start":{"line":131,"column":18},"end":{"line":131,"column":null}},"66":{"start":{"line":132,"column":15},"end":{"line":132,"column":null}},"67":{"start":{"line":136,"column":26},"end":{"line":143,"column":null}},"68":{"start":{"line":137,"column":4},"end":{"line":142,"column":null}},"69":{"start":{"line":138,"column":21},"end":{"line":138,"column":null}},"70":{"start":{"line":139,"column":6},"end":{"line":139,"column":null}},"71":{"start":{"line":139,"column":28},"end":{"line":139,"column":null}},"72":{"start":{"line":140,"column":6},"end":{"line":140,"column":null}},"73":{"start":{"line":140,"column":29},"end":{"line":140,"column":null}},"74":{"start":{"line":141,"column":6},"end":{"line":141,"column":null}},"75":{"start":{"line":145,"column":26},"end":{"line":226,"column":null}},"76":{"start":{"line":146,"column":4},"end":{"line":146,"column":null}},"77":{"start":{"line":147,"column":4},"end":{"line":147,"column":null}},"78":{"start":{"line":148,"column":4},"end":{"line":148,"column":null}},"79":{"start":{"line":149,"column":4},"end":{"line":149,"column":null}},"80":{"start":{"line":150,"column":4},"end":{"line":150,"column":null}},"81":{"start":{"line":152,"column":23},"end":{"line":157,"column":null}},"82":{"start":{"line":160,"column":17},"end":{"line":160,"column":null}},"83":{"start":{"line":161,"column":18},"end":{"line":161,"column":null}},"84":{"start":{"line":163,"column":4},"end":{"line":225,"column":null}},"85":{"start":{"line":164,"column":6},"end":{"line":164,"column":null}},"86":{"start":{"line":166,"column":6},"end":{"line":209,"column":null}},"87":{"start":{"line":166,"column":19},"end":{"line":166,"column":22}},"88":{"start":{"line":167,"column":8},"end":{"line":167,"column":null}},"89":{"start":{"line":168,"column":8},"end":{"line":168,"column":null}},"90":{"start":{"line":170,"column":8},"end":{"line":206,"column":null}},"91":{"start":{"line":171,"column":10},"end":{"line":205,"column":null}},"92":{"start":{"line":171,"column":29},"end":{"line":171,"column":32}},"93":{"start":{"line":172,"column":25},"end":{"line":172,"column":null}},"94":{"start":{"line":173,"column":29},"end":{"line":173,"column":null}},"95":{"start":{"line":174,"column":28},"end":{"line":174,"column":null}},"96":{"start":{"line":176,"column":32},"end":{"line":179,"column":null}},"97":{"start":{"line":181,"column":34},"end":{"line":181,"column":null}},"98":{"start":{"line":183,"column":12},"end":{"line":183,"column":null}},"99":{"start":{"line":184,"column":12},"end":{"line":184,"column":null}},"100":{"start":{"line":186,"column":32},"end":{"line":192,"column":null}},"101":{"start":{"line":194,"column":12},"end":{"line":194,"column":null}},"102":{"start":{"line":195,"column":12},"end":{"line":195,"column":null}},"103":{"start":{"line":197,"column":12},"end":{"line":201,"column":null}},"104":{"start":{"line":203,"column":12},"end":{"line":203,"column":null}},"105":{"start":{"line":204,"column":12},"end":{"line":204,"column":null}},"106":{"start":{"line":208,"column":8},"end":{"line":208,"column":null}},"107":{"start":{"line":208,"column":33},"end":{"line":208,"column":51}},"108":{"start":{"line":211,"column":6},"end":{"line":211,"column":null}},"109":{"start":{"line":212,"column":6},"end":{"line":212,"column":null}},"110":{"start":{"line":214,"column":6},"end":{"line":214,"column":null}},"111":{"start":{"line":215,"column":12},"end":{"line":215,"column":null}},"112":{"start":{"line":216,"column":6},"end":{"line":218,"column":null}},"113":{"start":{"line":217,"column":8},"end":{"line":217,"column":null}},"114":{"start":{"line":219,"column":6},"end":{"line":219,"column":null}},"115":{"start":{"line":220,"column":6},"end":{"line":220,"column":null}},"116":{"start":{"line":221,"column":6},"end":{"line":221,"column":null}},"117":{"start":{"line":223,"column":6},"end":{"line":223,"column":null}},"118":{"start":{"line":224,"column":6},"end":{"line":224,"column":null}},"119":{"start":{"line":228,"column":22},"end":{"line":238,"column":null}},"120":{"start":{"line":229,"column":4},"end":{"line":229,"column":null}},"121":{"start":{"line":230,"column":4},"end":{"line":230,"column":null}},"122":{"start":{"line":231,"column":4},"end":{"line":231,"column":null}},"123":{"start":{"line":232,"column":4},"end":{"line":232,"column":null}},"124":{"start":{"line":233,"column":4},"end":{"line":233,"column":null}},"125":{"start":{"line":234,"column":4},"end":{"line":234,"column":null}},"126":{"start":{"line":235,"column":4},"end":{"line":235,"column":null}},"127":{"start":{"line":236,"column":4},"end":{"line":236,"column":null}},"128":{"start":{"line":237,"column":4},"end":{"line":237,"column":null}},"129":{"start":{"line":240,"column":2},"end":{"line":407,"column":null}},"130":{"start":{"line":241,"column":14},"end":{"line":241,"column":28}},"131":{"start":{"line":241,"column":28},"end":{"line":241,"column":null}},"132":{"start":{"line":241,"column":28},"end":{"line":243,"column":57}},"133":{"start":{"line":243,"column":57},"end":{"line":247,"column":61}},"134":{"start":{"line":247,"column":61},"end":{"line":262,"column":null}},"135":{"start":{"line":252,"column":16},"end":{"line":253,"column":null}},"136":{"start":{"line":252,"column":17},"end":{"line":252,"column":null}},"137":{"start":{"line":252,"column":17},"end":{"line":254,"column":null}},"138":{"start":{"line":254,"column":57},"end":{"line":256,"column":null}},"139":{"start":{"line":256,"column":40},"end":{"line":257,"column":null}},"140":{"start":{"line":257,"column":43},"end":{"line":258,"column":null}},"141":{"start":{"line":258,"column":41},"end":{"line":259,"column":null}},"142":{"start":{"line":259,"column":41},"end":{"line":253,"column":null}},"143":{"start":{"line":259,"column":41},"end":{"line":253,"column":82}},"144":{"start":{"line":253,"column":82},"end":{"line":253,"column":105}},"145":{"start":{"line":253,"column":105},"end":{"line":253,"column":null}},"146":{"start":{"line":262,"column":15},"end":{"line":268,"column":null}},"147":{"start":{"line":267,"column":22},"end":{"line":267,"column":31}},"148":{"start":{"line":267,"column":31},"end":{"line":267,"column":null}},"149":{"start":{"line":267,"column":31},"end":{"line":268,"column":null}},"150":{"start":{"line":268,"column":46},"end":{"line":268,"column":null}},"151":{"start":{"line":268,"column":46},"end":{"line":286,"column":null}},"152":{"start":{"line":271,"column":22},"end":{"line":271,"column":36}},"153":{"start":{"line":271,"column":36},"end":{"line":271,"column":null}},"154":{"start":{"line":271,"column":36},"end":{"line":286,"column":null}},"155":{"start":{"line":276,"column":22},"end":{"line":279,"column":null}},"156":{"start":{"line":276,"column":28},"end":{"line":276,"column":null}},"157":{"start":{"line":276,"column":28},"end":{"line":280,"column":69}},"158":{"start":{"line":280,"column":39},"end":{"line":280,"column":69}},"159":{"start":{"line":280,"column":69},"end":{"line":282,"column":null}},"160":{"start":{"line":282,"column":51},"end":{"line":282,"column":62}},"161":{"start":{"line":282,"column":62},"end":{"line":283,"column":null}},"162":{"start":{"line":283,"column":52},"end":{"line":283,"column":64}},"163":{"start":{"line":283,"column":64},"end":{"line":284,"column":null}},"164":{"start":{"line":284,"column":51},"end":{"line":284,"column":69}},"165":{"start":{"line":284,"column":69},"end":{"line":279,"column":null}},"166":{"start":{"line":279,"column":79},"end":{"line":279,"column":null}},"167":{"start":{"line":286,"column":21},"end":{"line":286,"column":null}},"168":{"start":{"line":286,"column":21},"end":{"line":345,"column":null}},"169":{"start":{"line":292,"column":22},"end":{"line":292,"column":36}},"170":{"start":{"line":292,"column":36},"end":{"line":292,"column":null}},"171":{"start":{"line":292,"column":36},"end":{"line":332,"column":null}},"172":{"start":{"line":294,"column":26},"end":{"line":294,"column":55}},"173":{"start":{"line":294,"column":55},"end":{"line":332,"column":null}},"174":{"start":{"line":294,"column":55},"end":{"line":294,"column":null}},"175":{"start":{"line":294,"column":55},"end":{"line":301,"column":null}},"176":{"start":{"line":301,"column":38},"end":{"line":300,"column":null}},"177":{"start":{"line":300,"column":48},"end":{"line":299,"column":null}},"178":{"start":{"line":299,"column":46},"end":{"line":308,"column":null}},"179":{"start":{"line":308,"column":96},"end":{"line":298,"column":null}},"180":{"start":{"line":298,"column":58},"end":{"line":298,"column":null}},"181":{"start":{"line":311,"column":28},"end":{"line":311,"column":56}},"182":{"start":{"line":311,"column":56},"end":{"line":311,"column":null}},"183":{"start":{"line":311,"column":56},"end":{"line":322,"column":null}},"184":{"start":{"line":314,"column":31},"end":{"line":314,"column":48}},"185":{"start":{"line":315,"column":32},"end":{"line":320,"column":null}},"186":{"start":{"line":315,"column":35},"end":{"line":315,"column":null}},"187":{"start":{"line":315,"column":35},"end":{"line":318,"column":null}},"188":{"start":{"line":318,"column":53},"end":{"line":318,"column":62}},"189":{"start":{"line":318,"column":62},"end":{"line":319,"column":null}},"190":{"start":{"line":319,"column":54},"end":{"line":319,"column":79}},"191":{"start":{"line":319,"column":79},"end":{"line":320,"column":88}},"192":{"start":{"line":320,"column":71},"end":{"line":320,"column":88}},"193":{"start":{"line":320,"column":88},"end":{"line":320,"column":null}},"194":{"start":{"line":322,"column":25},"end":{"line":322,"column":null}},"195":{"start":{"line":322,"column":25},"end":{"line":333,"column":70}},"196":{"start":{"line":333,"column":38},"end":{"line":333,"column":70}},"197":{"start":{"line":333,"column":70},"end":{"line":332,"column":null}},"198":{"start":{"line":333,"column":70},"end":{"line":332,"column":37}},"199":{"start":{"line":332,"column":37},"end":{"line":332,"column":null}},"200":{"start":{"line":332,"column":37},"end":{"line":345,"column":null}},"201":{"start":{"line":337,"column":26},"end":{"line":337,"column":55}},"202":{"start":{"line":337,"column":55},"end":{"line":337,"column":null}},"203":{"start":{"line":337,"column":55},"end":{"line":342,"column":null}},"204":{"start":{"line":342,"column":23},"end":{"line":342,"column":84}},"205":{"start":{"line":342,"column":49},"end":{"line":342,"column":76}},"206":{"start":{"line":342,"column":84},"end":{"line":345,"column":86}},"207":{"start":{"line":345,"column":61},"end":{"line":345,"column":86}},"208":{"start":{"line":345,"column":86},"end":{"line":345,"column":null}},"209":{"start":{"line":345,"column":86},"end":{"line":369,"column":null}},"210":{"start":{"line":353,"column":22},"end":{"line":353,"column":36}},"211":{"start":{"line":353,"column":36},"end":{"line":353,"column":null}},"212":{"start":{"line":353,"column":36},"end":{"line":369,"column":null}},"213":{"start":{"line":356,"column":25},"end":{"line":356,"column":36}},"214":{"start":{"line":357,"column":20},"end":{"line":366,"column":null}},"215":{"start":{"line":357,"column":24},"end":{"line":357,"column":null}},"216":{"start":{"line":357,"column":24},"end":{"line":361,"column":null}},"217":{"start":{"line":361,"column":52},"end":{"line":361,"column":61}},"218":{"start":{"line":361,"column":61},"end":{"line":364,"column":60}},"219":{"start":{"line":364,"column":29},"end":{"line":364,"column":48}},"220":{"start":{"line":364,"column":48},"end":{"line":364,"column":null}},"221":{"start":{"line":364,"column":60},"end":{"line":364,"column":102}},"222":{"start":{"line":364,"column":84},"end":{"line":364,"column":90}},"223":{"start":{"line":364,"column":102},"end":{"line":365,"column":null}},"224":{"start":{"line":365,"column":29},"end":{"line":365,"column":38}},"225":{"start":{"line":365,"column":38},"end":{"line":366,"column":null}},"226":{"start":{"line":366,"column":45},"end":{"line":366,"column":87}},"227":{"start":{"line":366,"column":69},"end":{"line":366,"column":75}},"228":{"start":{"line":366,"column":87},"end":{"line":366,"column":null}},"229":{"start":{"line":369,"column":19},"end":{"line":369,"column":null}},"230":{"start":{"line":369,"column":19},"end":{"line":397,"column":null}},"231":{"start":{"line":375,"column":22},"end":{"line":375,"column":36}},"232":{"start":{"line":375,"column":36},"end":{"line":375,"column":null}},"233":{"start":{"line":375,"column":36},"end":{"line":377,"column":null}},"234":{"start":{"line":377,"column":26},"end":{"line":377,"column":43}},"235":{"start":{"line":377,"column":43},"end":{"line":377,"column":null}},"236":{"start":{"line":377,"column":43},"end":{"line":397,"column":null}},"237":{"start":{"line":384,"column":26},"end":{"line":384,"column":42}},"238":{"start":{"line":384,"column":42},"end":{"line":397,"column":null}},"239":{"start":{"line":384,"column":42},"end":{"line":384,"column":null}},"240":{"start":{"line":384,"column":42},"end":{"line":387,"column":null}},"241":{"start":{"line":387,"column":87},"end":{"line":387,"column":null}},"242":{"start":{"line":387,"column":87},"end":{"line":389,"column":null}},"243":{"start":{"line":389,"column":47},"end":{"line":389,"column":79}},"244":{"start":{"line":389,"column":79},"end":{"line":389,"column":null}},"245":{"start":{"line":389,"column":79},"end":{"line":397,"column":null}},"246":{"start":{"line":392,"column":24},"end":{"line":393,"column":null}},"247":{"start":{"line":392,"column":25},"end":{"line":392,"column":null}},"248":{"start":{"line":392,"column":25},"end":{"line":394,"column":null}},"249":{"start":{"line":394,"column":52},"end":{"line":394,"column":93}},"250":{"start":{"line":394,"column":93},"end":{"line":395,"column":null}},"251":{"start":{"line":395,"column":28},"end":{"line":393,"column":null}},"252":{"start":{"line":395,"column":28},"end":{"line":393,"column":76}},"253":{"start":{"line":393,"column":76},"end":{"line":393,"column":139}},"254":{"start":{"line":393,"column":139},"end":{"line":393,"column":null}},"255":{"start":{"line":397,"column":23},"end":{"line":397,"column":null}},"256":{"start":{"line":397,"column":23},"end":{"line":407,"column":66}},"257":{"start":{"line":407,"column":66},"end":{"line":422,"column":null}},"258":{"start":{"line":410,"column":22},"end":{"line":410,"column":39}},"259":{"start":{"line":410,"column":39},"end":{"line":422,"column":null}},"260":{"start":{"line":411,"column":24},"end":{"line":411,"column":36}},"261":{"start":{"line":411,"column":36},"end":{"line":411,"column":null}},"262":{"start":{"line":411,"column":36},"end":{"line":412,"column":68}},"263":{"start":{"line":412,"column":68},"end":{"line":412,"column":null}},"264":{"start":{"line":412,"column":68},"end":{"line":412,"column":88}},"265":{"start":{"line":412,"column":88},"end":{"line":412,"column":null}},"266":{"start":{"line":416,"column":24},"end":{"line":416,"column":38}},"267":{"start":{"line":416,"column":38},"end":{"line":416,"column":null}},"268":{"start":{"line":416,"column":38},"end":{"line":417,"column":75}},"269":{"start":{"line":417,"column":75},"end":{"line":417,"column":null}},"270":{"start":{"line":421,"column":24},"end":{"line":421,"column":57}},"271":{"start":{"line":421,"column":26},"end":{"line":421,"column":38}},"272":{"start":{"line":421,"column":57},"end":{"line":421,"column":null}},"273":{"start":{"line":421,"column":57},"end":{"line":422,"column":71}},"274":{"start":{"line":422,"column":71},"end":{"line":422,"column":null}},"275":{"start":{"line":422,"column":71},"end":{"line":407,"column":null}},"276":{"start":{"line":422,"column":71},"end":{"line":407,"column":105}},"277":{"start":{"line":407,"column":105},"end":{"line":407,"column":null}},"278":{"start":{"line":434,"column":32},"end":{"line":434,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":44,"column":60},"end":{"line":44,"column":70}},"loc":{"start":{"line":44,"column":70},"end":{"line":432,"column":1}},"line":44},"1":{"name":"(anonymous_1)","decl":{"start":{"line":56,"column":17},"end":{"line":56,"column":23}},"loc":{"start":{"line":56,"column":23},"end":{"line":56,"column":null}},"line":56},"2":{"name":"(anonymous_2)","decl":{"start":{"line":57,"column":18},"end":{"line":57,"column":24}},"loc":{"start":{"line":57,"column":24},"end":{"line":57,"column":null}},"line":57},"3":{"name":"(anonymous_3)","decl":{"start":{"line":59,"column":19},"end":{"line":59,"column":25}},"loc":{"start":{"line":59,"column":25},"end":{"line":67,"column":null}},"line":59},"4":{"name":"(anonymous_4)","decl":{"start":{"line":69,"column":19},"end":{"line":69,"column":25}},"loc":{"start":{"line":69,"column":25},"end":{"line":71,"column":null}},"line":69},"5":{"name":"(anonymous_5)","decl":{"start":{"line":73,"column":26},"end":{"line":73,"column":32}},"loc":{"start":{"line":73,"column":32},"end":{"line":88,"column":null}},"line":73},"6":{"name":"(anonymous_6)","decl":{"start":{"line":75,"column":47},"end":{"line":75,"column":56}},"loc":{"start":{"line":75,"column":56},"end":{"line":86,"column":5}},"line":75},"7":{"name":"(anonymous_7)","decl":{"start":{"line":90,"column":25},"end":{"line":90,"column":26}},"loc":{"start":{"line":90,"column":52},"end":{"line":94,"column":null}},"line":90},"8":{"name":"(anonymous_8)","decl":{"start":{"line":96,"column":27},"end":{"line":96,"column":28}},"loc":{"start":{"line":96,"column":41},"end":{"line":101,"column":null}},"line":96},"9":{"name":"(anonymous_9)","decl":{"start":{"line":103,"column":25},"end":{"line":103,"column":26}},"loc":{"start":{"line":103,"column":43},"end":{"line":106,"column":null}},"line":103},"10":{"name":"(anonymous_10)","decl":{"start":{"line":108,"column":26},"end":{"line":108,"column":32}},"loc":{"start":{"line":108,"column":32},"end":{"line":110,"column":null}},"line":108},"11":{"name":"(anonymous_11)","decl":{"start":{"line":112,"column":21},"end":{"line":112,"column":22}},"loc":{"start":{"line":112,"column":39},"end":{"line":118,"column":null}},"line":112},"12":{"name":"(anonymous_12)","decl":{"start":{"line":120,"column":21},"end":{"line":120,"column":22}},"loc":{"start":{"line":120,"column":40},"end":{"line":123,"column":null}},"line":120},"13":{"name":"(anonymous_13)","decl":{"start":{"line":125,"column":25},"end":{"line":125,"column":26}},"loc":{"start":{"line":125,"column":55},"end":{"line":134,"column":null}},"line":125},"14":{"name":"(anonymous_14)","decl":{"start":{"line":136,"column":26},"end":{"line":136,"column":27}},"loc":{"start":{"line":136,"column":59},"end":{"line":143,"column":null}},"line":136},"15":{"name":"(anonymous_15)","decl":{"start":{"line":137,"column":23},"end":{"line":137,"column":24}},"loc":{"start":{"line":137,"column":44},"end":{"line":142,"column":5}},"line":137},"16":{"name":"(anonymous_16)","decl":{"start":{"line":139,"column":22},"end":{"line":139,"column":28}},"loc":{"start":{"line":139,"column":28},"end":{"line":139,"column":null}},"line":139},"17":{"name":"(anonymous_17)","decl":{"start":{"line":140,"column":23},"end":{"line":140,"column":29}},"loc":{"start":{"line":140,"column":29},"end":{"line":140,"column":null}},"line":140},"18":{"name":"(anonymous_18)","decl":{"start":{"line":145,"column":26},"end":{"line":145,"column":38}},"loc":{"start":{"line":145,"column":38},"end":{"line":226,"column":null}},"line":145},"19":{"name":"(anonymous_19)","decl":{"start":{"line":208,"column":27},"end":{"line":208,"column":33}},"loc":{"start":{"line":208,"column":33},"end":{"line":208,"column":51}},"line":208},"20":{"name":"(anonymous_20)","decl":{"start":{"line":228,"column":22},"end":{"line":228,"column":28}},"loc":{"start":{"line":228,"column":28},"end":{"line":238,"column":null}},"line":228},"21":{"name":"(anonymous_21)","decl":{"start":{"line":241,"column":10},"end":{"line":241,"column":14}},"loc":{"start":{"line":241,"column":14},"end":{"line":241,"column":null}},"line":241},"22":{"name":"(anonymous_22)","decl":{"start":{"line":241,"column":28},"end":{"line":241,"column":null}},"loc":{"start":{"line":241,"column":28},"end":{"line":407,"column":null}},"line":241},"23":{"name":"(anonymous_23)","decl":{"start":{"line":252,"column":16},"end":{"line":252,"column":17}},"loc":{"start":{"line":252,"column":16},"end":{"line":253,"column":null}},"line":252},"24":{"name":"(anonymous_24)","decl":{"start":{"line":252,"column":17},"end":{"line":252,"column":null}},"loc":{"start":{"line":252,"column":17},"end":{"line":253,"column":null}},"line":252},"25":{"name":"(anonymous_25)","decl":{"start":{"line":259,"column":41},"end":{"line":259,"column":null}},"loc":{"start":{"line":259,"column":41},"end":{"line":253,"column":null}},"line":259},"26":{"name":"(anonymous_26)","decl":{"start":{"line":267,"column":18},"end":{"line":267,"column":22}},"loc":{"start":{"line":267,"column":22},"end":{"line":267,"column":null}},"line":267},"27":{"name":"(anonymous_27)","decl":{"start":{"line":267,"column":31},"end":{"line":267,"column":null}},"loc":{"start":{"line":267,"column":31},"end":{"line":268,"column":null}},"line":267},"28":{"name":"(anonymous_28)","decl":{"start":{"line":271,"column":18},"end":{"line":271,"column":22}},"loc":{"start":{"line":271,"column":22},"end":{"line":271,"column":null}},"line":271},"29":{"name":"(anonymous_29)","decl":{"start":{"line":271,"column":36},"end":{"line":271,"column":null}},"loc":{"start":{"line":271,"column":36},"end":{"line":286,"column":null}},"line":271},"30":{"name":"(anonymous_30)","decl":{"start":{"line":276,"column":22},"end":{"line":276,"column":28}},"loc":{"start":{"line":276,"column":22},"end":{"line":279,"column":null}},"line":276},"31":{"name":"(anonymous_31)","decl":{"start":{"line":276,"column":28},"end":{"line":276,"column":null}},"loc":{"start":{"line":276,"column":28},"end":{"line":279,"column":null}},"line":276},"32":{"name":"(anonymous_32)","decl":{"start":{"line":280,"column":33},"end":{"line":280,"column":39}},"loc":{"start":{"line":280,"column":39},"end":{"line":280,"column":69}},"line":280},"33":{"name":"(anonymous_33)","decl":{"start":{"line":280,"column":69},"end":{"line":280,"column":null}},"loc":{"start":{"line":282,"column":51},"end":{"line":282,"column":62}},"line":282},"34":{"name":"(anonymous_34)","decl":{"start":{"line":282,"column":62},"end":{"line":282,"column":null}},"loc":{"start":{"line":283,"column":52},"end":{"line":283,"column":64}},"line":283},"35":{"name":"(anonymous_35)","decl":{"start":{"line":283,"column":64},"end":{"line":283,"column":null}},"loc":{"start":{"line":284,"column":51},"end":{"line":284,"column":69}},"line":284},"36":{"name":"(anonymous_36)","decl":{"start":{"line":284,"column":69},"end":{"line":284,"column":null}},"loc":{"start":{"line":284,"column":69},"end":{"line":279,"column":null}},"line":284},"37":{"name":"(anonymous_37)","decl":{"start":{"line":292,"column":18},"end":{"line":292,"column":22}},"loc":{"start":{"line":292,"column":22},"end":{"line":292,"column":null}},"line":292},"38":{"name":"(anonymous_38)","decl":{"start":{"line":292,"column":36},"end":{"line":292,"column":null}},"loc":{"start":{"line":292,"column":36},"end":{"line":345,"column":null}},"line":292},"39":{"name":"(anonymous_39)","decl":{"start":{"line":294,"column":22},"end":{"line":294,"column":26}},"loc":{"start":{"line":294,"column":26},"end":{"line":294,"column":null}},"line":294},"40":{"name":"(anonymous_40)","decl":{"start":{"line":294,"column":55},"end":{"line":294,"column":null}},"loc":{"start":{"line":294,"column":55},"end":{"line":332,"column":null}},"line":294},"41":{"name":"(anonymous_41)","decl":{"start":{"line":308,"column":96},"end":{"line":308,"column":null}},"loc":{"start":{"line":308,"column":96},"end":{"line":298,"column":null}},"line":308},"42":{"name":"(anonymous_42)","decl":{"start":{"line":311,"column":24},"end":{"line":311,"column":28}},"loc":{"start":{"line":311,"column":28},"end":{"line":311,"column":null}},"line":311},"43":{"name":"(anonymous_43)","decl":{"start":{"line":311,"column":56},"end":{"line":311,"column":null}},"loc":{"start":{"line":311,"column":56},"end":{"line":322,"column":null}},"line":311},"44":{"name":"(anonymous_44)","decl":{"start":{"line":314,"column":27},"end":{"line":314,"column":31}},"loc":{"start":{"line":314,"column":31},"end":{"line":314,"column":null}},"line":314},"45":{"name":"(anonymous_45)","decl":{"start":{"line":315,"column":25},"end":{"line":315,"column":26}},"loc":{"start":{"line":315,"column":32},"end":{"line":320,"column":null}},"line":315},"46":{"name":"(anonymous_46)","decl":{"start":{"line":315,"column":35},"end":{"line":315,"column":null}},"loc":{"start":{"line":315,"column":35},"end":{"line":320,"column":null}},"line":315},"47":{"name":"(anonymous_47)","decl":{"start":{"line":318,"column":62},"end":{"line":318,"column":null}},"loc":{"start":{"line":319,"column":54},"end":{"line":319,"column":79}},"line":319},"48":{"name":"(anonymous_48)","decl":{"start":{"line":320,"column":65},"end":{"line":320,"column":71}},"loc":{"start":{"line":320,"column":71},"end":{"line":320,"column":88}},"line":320},"49":{"name":"(anonymous_49)","decl":{"start":{"line":322,"column":25},"end":{"line":322,"column":null}},"loc":{"start":{"line":322,"column":25},"end":{"line":332,"column":null}},"line":322},"50":{"name":"(anonymous_50)","decl":{"start":{"line":333,"column":32},"end":{"line":333,"column":38}},"loc":{"start":{"line":333,"column":38},"end":{"line":333,"column":70}},"line":333},"51":{"name":"(anonymous_51)","decl":{"start":{"line":333,"column":70},"end":{"line":333,"column":null}},"loc":{"start":{"line":333,"column":70},"end":{"line":332,"column":37}},"line":333},"52":{"name":"(anonymous_52)","decl":{"start":{"line":337,"column":22},"end":{"line":337,"column":26}},"loc":{"start":{"line":337,"column":26},"end":{"line":337,"column":null}},"line":337},"53":{"name":"(anonymous_53)","decl":{"start":{"line":337,"column":55},"end":{"line":337,"column":null}},"loc":{"start":{"line":337,"column":55},"end":{"line":345,"column":null}},"line":337},"54":{"name":"(anonymous_54)","decl":{"start":{"line":342,"column":43},"end":{"line":342,"column":49}},"loc":{"start":{"line":342,"column":49},"end":{"line":342,"column":76}},"line":342},"55":{"name":"(anonymous_55)","decl":{"start":{"line":345,"column":55},"end":{"line":345,"column":61}},"loc":{"start":{"line":345,"column":61},"end":{"line":345,"column":86}},"line":345},"56":{"name":"(anonymous_56)","decl":{"start":{"line":353,"column":18},"end":{"line":353,"column":22}},"loc":{"start":{"line":353,"column":22},"end":{"line":353,"column":null}},"line":353},"57":{"name":"(anonymous_57)","decl":{"start":{"line":353,"column":36},"end":{"line":353,"column":null}},"loc":{"start":{"line":353,"column":36},"end":{"line":369,"column":null}},"line":353},"58":{"name":"(anonymous_58)","decl":{"start":{"line":356,"column":21},"end":{"line":356,"column":25}},"loc":{"start":{"line":356,"column":25},"end":{"line":356,"column":null}},"line":356},"59":{"name":"(anonymous_59)","decl":{"start":{"line":357,"column":20},"end":{"line":357,"column":24}},"loc":{"start":{"line":357,"column":20},"end":{"line":366,"column":null}},"line":357},"60":{"name":"(anonymous_60)","decl":{"start":{"line":357,"column":24},"end":{"line":357,"column":null}},"loc":{"start":{"line":357,"column":24},"end":{"line":366,"column":null}},"line":357},"61":{"name":"(anonymous_61)","decl":{"start":{"line":361,"column":61},"end":{"line":361,"column":null}},"loc":{"start":{"line":364,"column":29},"end":{"line":364,"column":48}},"line":364},"62":{"name":"(anonymous_62)","decl":{"start":{"line":364,"column":48},"end":{"line":364,"column":60}},"loc":{"start":{"line":364,"column":60},"end":{"line":364,"column":102}},"line":364},"63":{"name":"(anonymous_63)","decl":{"start":{"line":364,"column":78},"end":{"line":364,"column":84}},"loc":{"start":{"line":364,"column":84},"end":{"line":364,"column":90}},"line":364},"64":{"name":"(anonymous_64)","decl":{"start":{"line":364,"column":102},"end":{"line":364,"column":null}},"loc":{"start":{"line":365,"column":29},"end":{"line":365,"column":38}},"line":365},"65":{"name":"(anonymous_65)","decl":{"start":{"line":365,"column":38},"end":{"line":365,"column":null}},"loc":{"start":{"line":366,"column":45},"end":{"line":366,"column":87}},"line":366},"66":{"name":"(anonymous_66)","decl":{"start":{"line":366,"column":63},"end":{"line":366,"column":69}},"loc":{"start":{"line":366,"column":69},"end":{"line":366,"column":75}},"line":366},"67":{"name":"(anonymous_67)","decl":{"start":{"line":375,"column":18},"end":{"line":375,"column":22}},"loc":{"start":{"line":375,"column":22},"end":{"line":375,"column":null}},"line":375},"68":{"name":"(anonymous_68)","decl":{"start":{"line":375,"column":36},"end":{"line":375,"column":null}},"loc":{"start":{"line":375,"column":36},"end":{"line":397,"column":null}},"line":375},"69":{"name":"(anonymous_69)","decl":{"start":{"line":377,"column":22},"end":{"line":377,"column":26}},"loc":{"start":{"line":377,"column":26},"end":{"line":377,"column":null}},"line":377},"70":{"name":"(anonymous_70)","decl":{"start":{"line":377,"column":43},"end":{"line":377,"column":null}},"loc":{"start":{"line":377,"column":43},"end":{"line":377,"column":null}},"line":377},"71":{"name":"(anonymous_71)","decl":{"start":{"line":384,"column":22},"end":{"line":384,"column":26}},"loc":{"start":{"line":384,"column":26},"end":{"line":384,"column":null}},"line":384},"72":{"name":"(anonymous_72)","decl":{"start":{"line":384,"column":42},"end":{"line":384,"column":null}},"loc":{"start":{"line":384,"column":42},"end":{"line":397,"column":null}},"line":384},"73":{"name":"(anonymous_73)","decl":{"start":{"line":387,"column":87},"end":{"line":387,"column":null}},"loc":{"start":{"line":387,"column":87},"end":{"line":389,"column":null}},"line":387},"74":{"name":"(anonymous_74)","decl":{"start":{"line":389,"column":79},"end":{"line":389,"column":null}},"loc":{"start":{"line":389,"column":79},"end":{"line":397,"column":null}},"line":389},"75":{"name":"(anonymous_75)","decl":{"start":{"line":392,"column":24},"end":{"line":392,"column":25}},"loc":{"start":{"line":392,"column":24},"end":{"line":393,"column":null}},"line":392},"76":{"name":"(anonymous_76)","decl":{"start":{"line":392,"column":25},"end":{"line":392,"column":null}},"loc":{"start":{"line":392,"column":25},"end":{"line":393,"column":null}},"line":392},"77":{"name":"(anonymous_77)","decl":{"start":{"line":395,"column":28},"end":{"line":395,"column":null}},"loc":{"start":{"line":395,"column":28},"end":{"line":393,"column":null}},"line":395},"78":{"name":"(anonymous_78)","decl":{"start":{"line":410,"column":18},"end":{"line":410,"column":22}},"loc":{"start":{"line":410,"column":22},"end":{"line":410,"column":null}},"line":410},"79":{"name":"(anonymous_79)","decl":{"start":{"line":410,"column":39},"end":{"line":410,"column":null}},"loc":{"start":{"line":410,"column":39},"end":{"line":422,"column":null}},"line":410},"80":{"name":"(anonymous_80)","decl":{"start":{"line":411,"column":20},"end":{"line":411,"column":24}},"loc":{"start":{"line":411,"column":24},"end":{"line":411,"column":null}},"line":411},"81":{"name":"(anonymous_81)","decl":{"start":{"line":411,"column":36},"end":{"line":411,"column":null}},"loc":{"start":{"line":411,"column":36},"end":{"line":412,"column":null}},"line":411},"82":{"name":"(anonymous_82)","decl":{"start":{"line":412,"column":68},"end":{"line":412,"column":80}},"loc":{"start":{"line":412,"column":68},"end":{"line":412,"column":88}},"line":412},"83":{"name":"(anonymous_83)","decl":{"start":{"line":416,"column":20},"end":{"line":416,"column":24}},"loc":{"start":{"line":416,"column":24},"end":{"line":416,"column":null}},"line":416},"84":{"name":"(anonymous_84)","decl":{"start":{"line":416,"column":38},"end":{"line":416,"column":null}},"loc":{"start":{"line":416,"column":38},"end":{"line":417,"column":null}},"line":416},"85":{"name":"(anonymous_85)","decl":{"start":{"line":421,"column":20},"end":{"line":421,"column":24}},"loc":{"start":{"line":421,"column":24},"end":{"line":421,"column":null}},"line":421},"86":{"name":"(anonymous_86)","decl":{"start":{"line":421,"column":26},"end":{"line":421,"column":31}},"loc":{"start":{"line":421,"column":26},"end":{"line":421,"column":38}},"line":421},"87":{"name":"(anonymous_87)","decl":{"start":{"line":421,"column":57},"end":{"line":421,"column":null}},"loc":{"start":{"line":421,"column":57},"end":{"line":422,"column":null}},"line":421},"88":{"name":"(anonymous_88)","decl":{"start":{"line":422,"column":71},"end":{"line":422,"column":null}},"loc":{"start":{"line":422,"column":71},"end":{"line":407,"column":105}},"line":422}},"branchMap":{"0":{"loc":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"type":"if","locations":[{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},{"start":{},"end":{}}],"line":60},"1":{"loc":{"start":{"line":60,"column":8},"end":{"line":60,"column":43}},"type":"binary-expr","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":24}},{"start":{"line":60,"column":24},"end":{"line":60,"column":43}}],"line":60},"2":{"loc":{"start":{"line":61,"column":4},"end":{"line":61,"column":null}},"type":"if","locations":[{"start":{"line":61,"column":4},"end":{"line":61,"column":null}},{"start":{},"end":{}}],"line":61},"3":{"loc":{"start":{"line":61,"column":8},"end":{"line":61,"column":85}},"type":"binary-expr","locations":[{"start":{"line":61,"column":8},"end":{"line":61,"column":24}},{"start":{"line":61,"column":24},"end":{"line":61,"column":55}},{"start":{"line":61,"column":55},"end":{"line":61,"column":85}}],"line":61},"4":{"loc":{"start":{"line":62,"column":4},"end":{"line":64,"column":null}},"type":"if","locations":[{"start":{"line":62,"column":4},"end":{"line":64,"column":null}},{"start":{},"end":{}}],"line":62},"5":{"loc":{"start":{"line":62,"column":8},"end":{"line":62,"column":53}},"type":"binary-expr","locations":[{"start":{"line":62,"column":8},"end":{"line":62,"column":24}},{"start":{"line":62,"column":24},"end":{"line":62,"column":53}}],"line":62},"6":{"loc":{"start":{"line":65,"column":4},"end":{"line":65,"column":null}},"type":"if","locations":[{"start":{"line":65,"column":4},"end":{"line":65,"column":null}},{"start":{},"end":{}}],"line":65},"7":{"loc":{"start":{"line":70,"column":4},"end":{"line":70,"column":null}},"type":"if","locations":[{"start":{"line":70,"column":4},"end":{"line":70,"column":null}},{"start":{},"end":{}}],"line":70},"8":{"loc":{"start":{"line":81,"column":17},"end":{"line":83,"column":null}},"type":"cond-expr","locations":[{"start":{"line":82,"column":12},"end":{"line":82,"column":null}},{"start":{"line":83,"column":12},"end":{"line":83,"column":null}}],"line":81},"9":{"loc":{"start":{"line":91,"column":4},"end":{"line":91,"column":null}},"type":"if","locations":[{"start":{"line":91,"column":4},"end":{"line":91,"column":null}},{"start":{},"end":{}}],"line":91},"10":{"loc":{"start":{"line":92,"column":4},"end":{"line":92,"column":null}},"type":"if","locations":[{"start":{"line":92,"column":4},"end":{"line":92,"column":null}},{"start":{},"end":{}}],"line":92},"11":{"loc":{"start":{"line":98,"column":4},"end":{"line":100,"column":null}},"type":"if","locations":[{"start":{"line":98,"column":4},"end":{"line":100,"column":null}},{"start":{},"end":{}}],"line":98},"12":{"loc":{"start":{"line":115,"column":4},"end":{"line":117,"column":null}},"type":"if","locations":[{"start":{"line":115,"column":4},"end":{"line":117,"column":null}},{"start":{},"end":{}}],"line":115},"13":{"loc":{"start":{"line":127,"column":4},"end":{"line":133,"column":null}},"type":"switch","locations":[{"start":{"line":128,"column":6},"end":{"line":128,"column":null}},{"start":{"line":129,"column":6},"end":{"line":129,"column":null}},{"start":{"line":130,"column":6},"end":{"line":130,"column":null}},{"start":{"line":131,"column":6},"end":{"line":131,"column":null}},{"start":{"line":132,"column":6},"end":{"line":132,"column":null}}],"line":127},"14":{"loc":{"start":{"line":160,"column":17},"end":{"line":160,"column":null}},"type":"binary-expr","locations":[{"start":{"line":160,"column":17},"end":{"line":160,"column":29}},{"start":{"line":160,"column":29},"end":{"line":160,"column":null}}],"line":160},"15":{"loc":{"start":{"line":170,"column":8},"end":{"line":206,"column":null}},"type":"if","locations":[{"start":{"line":170,"column":8},"end":{"line":206,"column":null}},{"start":{},"end":{}}],"line":170},"16":{"loc":{"start":{"line":216,"column":6},"end":{"line":218,"column":null}},"type":"if","locations":[{"start":{"line":216,"column":6},"end":{"line":218,"column":null}},{"start":{},"end":{}}],"line":216},"17":{"loc":{"start":{"line":256,"column":21},"end":{"line":256,"column":40}},"type":"binary-expr","locations":[{"start":{"line":256,"column":21},"end":{"line":256,"column":32}},{"start":{"line":256,"column":32},"end":{"line":256,"column":40}}],"line":256},"18":{"loc":{"start":{"line":257,"column":21},"end":{"line":257,"column":43}},"type":"binary-expr","locations":[{"start":{"line":257,"column":21},"end":{"line":257,"column":32}},{"start":{"line":257,"column":32},"end":{"line":257,"column":43}}],"line":257},"19":{"loc":{"start":{"line":258,"column":21},"end":{"line":258,"column":41}},"type":"binary-expr","locations":[{"start":{"line":258,"column":21},"end":{"line":258,"column":32}},{"start":{"line":258,"column":32},"end":{"line":258,"column":41}}],"line":258},"20":{"loc":{"start":{"line":259,"column":21},"end":{"line":259,"column":41}},"type":"binary-expr","locations":[{"start":{"line":259,"column":21},"end":{"line":259,"column":32}},{"start":{"line":259,"column":32},"end":{"line":259,"column":41}}],"line":259},"21":{"loc":{"start":{"line":253,"column":105},"end":{"line":253,"column":null}},"type":"binary-expr","locations":[{"start":{"line":253,"column":105},"end":{"line":253,"column":null}},{"start":{"line":253,"column":105},"end":{"line":253,"column":null}}],"line":253},"22":{"loc":{"start":{"line":394,"column":52},"end":{"line":394,"column":93}},"type":"cond-expr","locations":[{"start":{"line":394,"column":84},"end":{"line":394,"column":90}},{"start":{"line":394,"column":90},"end":{"line":394,"column":93}}],"line":394},"23":{"loc":{"start":{"line":393,"column":139},"end":{"line":393,"column":null}},"type":"binary-expr","locations":[{"start":{"line":393,"column":139},"end":{"line":393,"column":null}},{"start":{"line":393,"column":139},"end":{"line":393,"column":null}}],"line":393},"24":{"loc":{"start":{"line":421,"column":24},"end":{"line":421,"column":57}},"type":"binary-expr","locations":[{"start":{"line":421,"column":24},"end":{"line":421,"column":42}},{"start":{"line":421,"column":42},"end":{"line":421,"column":57}}],"line":421},"25":{"loc":{"start":{"line":407,"column":78},"end":{"line":407,"column":105}},"type":"binary-expr","locations":[{"start":{"line":407,"column":78},"end":{"line":407,"column":91}},{"start":{"line":407,"column":91},"end":{"line":407,"column":105}}],"line":407},"26":{"loc":{"start":{"line":434,"column":32},"end":{"line":434,"column":null}},"type":"if","locations":[{"start":{"line":434,"column":32},"end":{"line":434,"column":null}},{"start":{},"end":{}}],"line":434}},"s":{"0":2,"1":2,"2":84,"3":84,"4":84,"5":84,"6":84,"7":84,"8":84,"9":84,"10":84,"11":84,"12":84,"13":56,"14":84,"15":60,"16":84,"17":22,"18":0,"19":22,"20":1,"21":21,"22":8,"23":21,"24":0,"25":21,"26":84,"27":1,"28":1,"29":84,"30":8,"31":8,"32":8,"33":8,"34":8,"35":8,"36":84,"37":16,"38":16,"39":0,"40":0,"41":0,"42":84,"43":8,"44":8,"45":8,"46":84,"47":0,"48":0,"49":84,"50":0,"51":84,"52":0,"53":0,"54":0,"55":0,"56":84,"57":0,"58":0,"59":84,"60":7,"61":7,"62":7,"63":0,"64":0,"65":0,"66":0,"67":84,"68":7,"69":7,"70":7,"71":7,"72":7,"73":0,"74":7,"75":84,"76":7,"77":7,"78":7,"79":7,"80":7,"81":7,"82":7,"83":7,"84":7,"85":7,"86":7,"87":7,"88":14,"89":14,"90":14,"91":7,"92":7,"93":7,"94":7,"95":7,"96":7,"97":5,"98":5,"99":5,"100":5,"101":4,"102":4,"103":4,"104":4,"105":4,"106":11,"107":11,"108":9,"109":9,"110":9,"111":2,"112":2,"113":2,"114":2,"115":2,"116":2,"117":3,"118":3,"119":84,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":84,"130":85,"131":21,"132":21,"133":21,"134":21,"135":84,"136":84,"137":84,"138":84,"139":84,"140":84,"141":84,"142":84,"143":200,"144":200,"145":84,"146":21,"147":23,"148":2,"149":2,"150":2,"151":21,"152":50,"153":22,"154":22,"155":132,"156":132,"157":132,"158":14,"159":132,"160":132,"161":132,"162":132,"163":132,"164":132,"165":216,"166":132,"167":22,"168":21,"169":50,"170":13,"171":13,"172":14,"173":12,"174":12,"175":12,"176":12,"177":12,"178":12,"179":12,"180":12,"181":20,"182":8,"183":8,"184":8,"185":8,"186":8,"187":8,"188":8,"189":8,"190":8,"191":8,"192":0,"193":8,"194":12,"195":12,"196":0,"197":12,"198":12,"199":12,"200":13,"201":14,"202":2,"203":2,"204":2,"205":4,"206":2,"207":1,"208":13,"209":21,"210":50,"211":8,"212":8,"213":8,"214":8,"215":8,"216":8,"217":8,"218":8,"219":8,"220":8,"221":8,"222":24,"223":8,"224":8,"225":8,"226":8,"227":24,"228":8,"229":8,"230":21,"231":50,"232":7,"233":7,"234":9,"235":2,"236":7,"237":9,"238":7,"239":7,"240":17,"241":7,"242":7,"243":17,"244":7,"245":7,"246":35,"247":35,"248":35,"249":120,"250":35,"251":35,"252":120,"253":120,"254":35,"255":7,"256":21,"257":21,"258":30,"259":23,"260":45,"261":21,"262":21,"263":21,"264":35,"265":21,"266":45,"267":8,"268":8,"269":8,"270":23,"271":45,"272":2,"273":2,"274":2,"275":21,"276":59,"277":21,"278":2},"f":{"0":84,"1":56,"2":60,"3":22,"4":1,"5":8,"6":8,"7":16,"8":8,"9":0,"10":0,"11":0,"12":0,"13":7,"14":7,"15":7,"16":7,"17":0,"18":7,"19":11,"20":1,"21":85,"22":21,"23":84,"24":84,"25":200,"26":23,"27":2,"28":50,"29":22,"30":132,"31":132,"32":14,"33":132,"34":132,"35":132,"36":216,"37":50,"38":13,"39":14,"40":24,"41":12,"42":20,"43":8,"44":8,"45":8,"46":16,"47":8,"48":0,"49":12,"50":0,"51":12,"52":14,"53":4,"54":4,"55":1,"56":50,"57":8,"58":8,"59":8,"60":16,"61":8,"62":8,"63":24,"64":8,"65":8,"66":24,"67":50,"68":7,"69":9,"70":2,"71":9,"72":31,"73":24,"74":7,"75":35,"76":155,"77":120,"78":30,"79":23,"80":45,"81":21,"82":35,"83":45,"84":8,"85":23,"86":45,"87":2,"88":59},"b":{"0":[0,22],"1":[22,13],"2":[1,21],"3":[22,9,9],"4":[8,13],"5":[21,8],"6":[0,21],"7":[1,0],"8":[0,8],"9":[16,0],"10":[0,0],"11":[8,0],"12":[0,0],"13":[7,0,0,0,0],"14":[7,7],"15":[7,7],"16":[2,0],"17":[84,21],"18":[84,21],"19":[84,21],"20":[84,21],"21":[400,226],"22":[16,104],"23":[240,93],"24":[23,2],"25":[59,37],"26":[2,0]},"meta":{"lastBranch":27,"lastFunction":89,"lastStatement":279,"seen":{"s:17:45:23:Infinity":0,"s:44:6:432:Infinity":1,"f:44:60:44:70":0,"s:45:22:45:Infinity":2,"s:46:42:46:Infinity":3,"s:47:40:47:Infinity":4,"s:48:26:48:Infinity":5,"s:49:28:49:Infinity":6,"s:50:50:50:Infinity":7,"s:51:44:51:Infinity":8,"s:52:38:52:Infinity":9,"s:53:24:53:Infinity":10,"s:54:34:54:Infinity":11,"s:56:17:56:Infinity":12,"f:56:17:56:23":1,"s:56:23:56:Infinity":13,"s:57:18:57:Infinity":14,"f:57:18:57:24":2,"s:57:24:57:Infinity":15,"s:59:19:67:Infinity":16,"f:59:19:59:25":3,"b:60:4:60:Infinity:undefined:undefined:undefined:undefined":0,"s:60:4:60:Infinity":17,"b:60:8:60:24:60:24:60:43":1,"s:60:43:60:Infinity":18,"b:61:4:61:Infinity:undefined:undefined:undefined:undefined":2,"s:61:4:61:Infinity":19,"b:61:8:61:24:61:24:61:55:61:55:61:85":3,"s:61:85:61:Infinity":20,"b:62:4:64:Infinity:undefined:undefined:undefined:undefined":4,"s:62:4:64:Infinity":21,"b:62:8:62:24:62:24:62:53":5,"s:63:6:63:Infinity":22,"b:65:4:65:Infinity:undefined:undefined:undefined:undefined":6,"s:65:4:65:Infinity":23,"s:65:18:65:Infinity":24,"s:66:4:66:Infinity":25,"s:69:19:71:Infinity":26,"f:69:19:69:25":4,"b:70:4:70:Infinity:undefined:undefined:undefined:undefined":7,"s:70:4:70:Infinity":27,"s:70:20:70:Infinity":28,"s:73:26:88:Infinity":29,"f:73:26:73:32":5,"s:74:18:74:Infinity":30,"s:75:36:86:Infinity":31,"f:75:47:75:56":6,"s:76:18:76:Infinity":32,"s:77:21:77:Infinity":33,"s:78:6:85:Infinity":34,"b:82:12:82:Infinity:83:12:83:Infinity":8,"s:87:4:87:Infinity":35,"s:90:25:94:Infinity":36,"f:90:25:90:26":7,"b:91:4:91:Infinity:undefined:undefined:undefined:undefined":9,"s:91:4:91:Infinity":37,"s:91:22:91:Infinity":38,"b:92:4:92:Infinity:undefined:undefined:undefined:undefined":10,"s:92:4:92:Infinity":39,"s:92:29:92:Infinity":40,"s:93:4:93:Infinity":41,"s:96:27:101:Infinity":42,"f:96:27:96:28":8,"s:97:18:97:Infinity":43,"b:98:4:100:Infinity:undefined:undefined:undefined:undefined":11,"s:98:4:100:Infinity":44,"s:99:6:99:Infinity":45,"s:103:25:106:Infinity":46,"f:103:25:103:26":9,"s:104:4:104:Infinity":47,"s:105:4:105:Infinity":48,"s:108:26:110:Infinity":49,"f:108:26:108:32":10,"s:109:4:109:Infinity":50,"s:112:21:118:Infinity":51,"f:112:21:112:22":11,"s:113:4:113:Infinity":52,"s:114:4:114:Infinity":53,"b:115:4:117:Infinity:undefined:undefined:undefined:undefined":12,"s:115:4:117:Infinity":54,"s:116:6:116:Infinity":55,"s:120:21:123:Infinity":56,"f:120:21:120:22":12,"s:121:18:121:Infinity":57,"s:122:4:122:Infinity":58,"s:125:25:134:Infinity":59,"f:125:25:125:26":13,"s:126:16:126:Infinity":60,"b:128:6:128:Infinity:129:6:129:Infinity:130:6:130:Infinity:131:6:131:Infinity:132:6:132:Infinity":13,"s:127:4:133:Infinity":61,"s:128:18:128:Infinity":62,"s:129:19:129:Infinity":63,"s:130:17:130:Infinity":64,"s:131:18:131:Infinity":65,"s:132:15:132:Infinity":66,"s:136:26:143:Infinity":67,"f:136:26:136:27":14,"s:137:4:142:Infinity":68,"f:137:23:137:24":15,"s:138:21:138:Infinity":69,"s:139:6:139:Infinity":70,"f:139:22:139:28":16,"s:139:28:139:Infinity":71,"s:140:6:140:Infinity":72,"f:140:23:140:29":17,"s:140:29:140:Infinity":73,"s:141:6:141:Infinity":74,"s:145:26:226:Infinity":75,"f:145:26:145:38":18,"s:146:4:146:Infinity":76,"s:147:4:147:Infinity":77,"s:148:4:148:Infinity":78,"s:149:4:149:Infinity":79,"s:150:4:150:Infinity":80,"s:152:23:157:Infinity":81,"s:160:17:160:Infinity":82,"b:160:17:160:29:160:29:160:Infinity":14,"s:161:18:161:Infinity":83,"s:163:4:225:Infinity":84,"s:164:6:164:Infinity":85,"s:166:6:209:Infinity":86,"s:166:19:166:22":87,"s:167:8:167:Infinity":88,"s:168:8:168:Infinity":89,"b:170:8:206:Infinity:undefined:undefined:undefined:undefined":15,"s:170:8:206:Infinity":90,"s:171:10:205:Infinity":91,"s:171:29:171:32":92,"s:172:25:172:Infinity":93,"s:173:29:173:Infinity":94,"s:174:28:174:Infinity":95,"s:176:32:179:Infinity":96,"s:181:34:181:Infinity":97,"s:183:12:183:Infinity":98,"s:184:12:184:Infinity":99,"s:186:32:192:Infinity":100,"s:194:12:194:Infinity":101,"s:195:12:195:Infinity":102,"s:197:12:201:Infinity":103,"s:203:12:203:Infinity":104,"s:204:12:204:Infinity":105,"s:208:8:208:Infinity":106,"f:208:27:208:33":19,"s:208:33:208:51":107,"s:211:6:211:Infinity":108,"s:212:6:212:Infinity":109,"s:214:6:214:Infinity":110,"s:215:12:215:Infinity":111,"b:216:6:218:Infinity:undefined:undefined:undefined:undefined":16,"s:216:6:218:Infinity":112,"s:217:8:217:Infinity":113,"s:219:6:219:Infinity":114,"s:220:6:220:Infinity":115,"s:221:6:221:Infinity":116,"s:223:6:223:Infinity":117,"s:224:6:224:Infinity":118,"s:228:22:238:Infinity":119,"f:228:22:228:28":20,"s:229:4:229:Infinity":120,"s:230:4:230:Infinity":121,"s:231:4:231:Infinity":122,"s:232:4:232:Infinity":123,"s:233:4:233:Infinity":124,"s:234:4:234:Infinity":125,"s:235:4:235:Infinity":126,"s:236:4:236:Infinity":127,"s:237:4:237:Infinity":128,"s:240:2:407:Infinity":129,"f:241:10:241:14":21,"s:241:14:241:28":130,"f:241:28:241:Infinity":22,"s:241:28:241:Infinity":131,"s:241:28:243:57":132,"s:243:57:247:61":133,"s:247:61:262:Infinity":134,"f:252:16:252:17":23,"s:252:16:253:Infinity":135,"f:252:17:252:Infinity":24,"s:252:17:252:Infinity":136,"s:252:17:254:Infinity":137,"s:254:57:256:Infinity":138,"b:256:21:256:32:256:32:256:40":17,"s:256:40:257:Infinity":139,"b:257:21:257:32:257:32:257:43":18,"s:257:43:258:Infinity":140,"b:258:21:258:32:258:32:258:41":19,"s:258:41:259:Infinity":141,"b:259:21:259:32:259:32:259:41":20,"s:259:41:253:Infinity":142,"f:259:41:259:Infinity":25,"s:259:41:253:82":143,"s:253:82:253:105":144,"s:253:105:253:Infinity":145,"b:253:105:253:Infinity:253:105:253:Infinity":21,"s:262:15:268:Infinity":146,"f:267:18:267:22":26,"s:267:22:267:31":147,"f:267:31:267:Infinity":27,"s:267:31:267:Infinity":148,"s:267:31:268:Infinity":149,"s:268:46:268:Infinity":150,"s:268:46:286:Infinity":151,"f:271:18:271:22":28,"s:271:22:271:36":152,"f:271:36:271:Infinity":29,"s:271:36:271:Infinity":153,"s:271:36:286:Infinity":154,"f:276:22:276:28":30,"s:276:22:279:Infinity":155,"f:276:28:276:Infinity":31,"s:276:28:276:Infinity":156,"s:276:28:280:69":157,"f:280:33:280:39":32,"s:280:39:280:69":158,"s:280:69:282:Infinity":159,"f:280:69:280:Infinity":33,"s:282:51:282:62":160,"s:282:62:283:Infinity":161,"f:282:62:282:Infinity":34,"s:283:52:283:64":162,"s:283:64:284:Infinity":163,"f:283:64:283:Infinity":35,"s:284:51:284:69":164,"s:284:69:279:Infinity":165,"f:284:69:284:Infinity":36,"s:279:79:279:Infinity":166,"s:286:21:286:Infinity":167,"s:286:21:345:Infinity":168,"f:292:18:292:22":37,"s:292:22:292:36":169,"f:292:36:292:Infinity":38,"s:292:36:292:Infinity":170,"s:292:36:332:Infinity":171,"f:294:22:294:26":39,"s:294:26:294:55":172,"f:294:55:294:Infinity":40,"s:294:55:332:Infinity":173,"s:294:55:294:Infinity":174,"s:294:55:301:Infinity":175,"s:301:38:300:Infinity":176,"s:300:48:299:Infinity":177,"s:299:46:308:Infinity":178,"s:308:96:298:Infinity":179,"f:308:96:308:Infinity":41,"s:298:58:298:Infinity":180,"f:311:24:311:28":42,"s:311:28:311:56":181,"f:311:56:311:Infinity":43,"s:311:56:311:Infinity":182,"s:311:56:322:Infinity":183,"f:314:27:314:31":44,"s:314:31:314:48":184,"f:315:25:315:26":45,"s:315:32:320:Infinity":185,"f:315:35:315:Infinity":46,"s:315:35:315:Infinity":186,"s:315:35:318:Infinity":187,"s:318:53:318:62":188,"s:318:62:319:Infinity":189,"f:318:62:318:Infinity":47,"s:319:54:319:79":190,"s:319:79:320:88":191,"f:320:65:320:71":48,"s:320:71:320:88":192,"s:320:88:320:Infinity":193,"s:322:25:322:Infinity":194,"f:322:25:322:Infinity":49,"s:322:25:333:70":195,"f:333:32:333:38":50,"s:333:38:333:70":196,"s:333:70:332:Infinity":197,"f:333:70:333:Infinity":51,"s:333:70:332:37":198,"s:332:37:332:Infinity":199,"s:332:37:345:Infinity":200,"f:337:22:337:26":52,"s:337:26:337:55":201,"f:337:55:337:Infinity":53,"s:337:55:337:Infinity":202,"s:337:55:342:Infinity":203,"s:342:23:342:84":204,"f:342:43:342:49":54,"s:342:49:342:76":205,"s:342:84:345:86":206,"f:345:55:345:61":55,"s:345:61:345:86":207,"s:345:86:345:Infinity":208,"s:345:86:369:Infinity":209,"f:353:18:353:22":56,"s:353:22:353:36":210,"f:353:36:353:Infinity":57,"s:353:36:353:Infinity":211,"s:353:36:369:Infinity":212,"f:356:21:356:25":58,"s:356:25:356:36":213,"f:357:20:357:24":59,"s:357:20:366:Infinity":214,"f:357:24:357:Infinity":60,"s:357:24:357:Infinity":215,"s:357:24:361:Infinity":216,"s:361:52:361:61":217,"s:361:61:364:60":218,"f:361:61:361:Infinity":61,"s:364:29:364:48":219,"s:364:48:364:Infinity":220,"f:364:48:364:60":62,"s:364:60:364:102":221,"f:364:78:364:84":63,"s:364:84:364:90":222,"s:364:102:365:Infinity":223,"f:364:102:364:Infinity":64,"s:365:29:365:38":224,"s:365:38:366:Infinity":225,"f:365:38:365:Infinity":65,"s:366:45:366:87":226,"f:366:63:366:69":66,"s:366:69:366:75":227,"s:366:87:366:Infinity":228,"s:369:19:369:Infinity":229,"s:369:19:397:Infinity":230,"f:375:18:375:22":67,"s:375:22:375:36":231,"f:375:36:375:Infinity":68,"s:375:36:375:Infinity":232,"s:375:36:377:Infinity":233,"f:377:22:377:26":69,"s:377:26:377:43":234,"f:377:43:377:Infinity":70,"s:377:43:377:Infinity":235,"s:377:43:397:Infinity":236,"f:384:22:384:26":71,"s:384:26:384:42":237,"f:384:42:384:Infinity":72,"s:384:42:397:Infinity":238,"s:384:42:384:Infinity":239,"s:384:42:387:Infinity":240,"s:387:87:387:Infinity":241,"f:387:87:387:Infinity":73,"s:387:87:389:Infinity":242,"s:389:47:389:79":243,"s:389:79:389:Infinity":244,"f:389:79:389:Infinity":74,"s:389:79:397:Infinity":245,"f:392:24:392:25":75,"s:392:24:393:Infinity":246,"f:392:25:392:Infinity":76,"s:392:25:392:Infinity":247,"s:392:25:394:Infinity":248,"s:394:52:394:93":249,"b:394:84:394:90:394:90:394:93":22,"s:394:93:395:Infinity":250,"s:395:28:393:Infinity":251,"f:395:28:395:Infinity":77,"s:395:28:393:76":252,"s:393:76:393:139":253,"s:393:139:393:Infinity":254,"b:393:139:393:Infinity:393:139:393:Infinity":23,"s:397:23:397:Infinity":255,"s:397:23:407:66":256,"s:407:66:422:Infinity":257,"f:410:18:410:22":78,"s:410:22:410:39":258,"f:410:39:410:Infinity":79,"s:410:39:422:Infinity":259,"f:411:20:411:24":80,"s:411:24:411:36":260,"f:411:36:411:Infinity":81,"s:411:36:411:Infinity":261,"s:411:36:412:68":262,"s:412:68:412:Infinity":263,"f:412:68:412:80":82,"s:412:68:412:88":264,"s:412:88:412:Infinity":265,"f:416:20:416:24":83,"s:416:24:416:38":266,"f:416:38:416:Infinity":84,"s:416:38:416:Infinity":267,"s:416:38:417:75":268,"s:417:75:417:Infinity":269,"f:421:20:421:24":85,"s:421:24:421:57":270,"b:421:24:421:42:421:42:421:57":24,"f:421:26:421:31":86,"s:421:26:421:38":271,"f:421:57:421:Infinity":87,"s:421:57:421:Infinity":272,"s:421:57:422:71":273,"s:422:71:422:Infinity":274,"s:422:71:407:Infinity":275,"f:422:71:422:Infinity":88,"s:422:71:407:105":276,"b:407:78:407:91:407:91:407:105":25,"s:407:105:407:Infinity":277,"b:434:32:434:Infinity:undefined:undefined:undefined:undefined":26,"s:434:32:434:Infinity":278}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/onboarding/GuidedTour.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/onboarding/GuidedTour.tsx","statementMap":{"0":{"start":{"line":5,"column":20},"end":{"line":5,"column":null}},"1":{"start":{"line":14,"column":37},"end":{"line":42,"column":null}},"2":{"start":{"line":23,"column":12},"end":{"line":23,"column":null}},"3":{"start":{"line":29,"column":12},"end":{"line":29,"column":null}},"4":{"start":{"line":35,"column":12},"end":{"line":35,"column":null}},"5":{"start":{"line":41,"column":12},"end":{"line":41,"column":null}},"6":{"start":{"line":46,"column":2},"end":{"line":46,"column":null}},"7":{"start":{"line":50,"column":2},"end":{"line":50,"column":null}},"8":{"start":{"line":54,"column":2},"end":{"line":54,"column":null}},"9":{"start":{"line":55,"column":16},"end":{"line":55,"column":null}},"10":{"start":{"line":56,"column":2},"end":{"line":56,"column":null}},"11":{"start":{"line":63,"column":6},"end":{"line":63,"column":null}},"12":{"start":{"line":65,"column":16},"end":{"line":76,"column":null}},"13":{"start":{"line":66,"column":20},"end":{"line":69,"column":null}},"14":{"start":{"line":67,"column":18},"end":{"line":67,"column":null}},"15":{"start":{"line":68,"column":4},"end":{"line":68,"column":null}},"16":{"start":{"line":71,"column":2},"end":{"line":73,"column":null}},"17":{"start":{"line":72,"column":46},"end":{"line":73,"column":21}},"18":{"start":{"line":79,"column":2},"end":{"line":79,"column":null}},"19":{"start":{"line":87,"column":6},"end":{"line":188,"column":null}},"20":{"start":{"line":88,"column":36},"end":{"line":88,"column":null}},"21":{"start":{"line":89,"column":32},"end":{"line":89,"column":null}},"22":{"start":{"line":91,"column":15},"end":{"line":91,"column":null}},"23":{"start":{"line":91,"column":21},"end":{"line":91,"column":null}},"24":{"start":{"line":92,"column":17},"end":{"line":92,"column":null}},"25":{"start":{"line":92,"column":23},"end":{"line":92,"column":null}},"26":{"start":{"line":93,"column":18},"end":{"line":93,"column":null}},"27":{"start":{"line":93,"column":24},"end":{"line":93,"column":null}},"28":{"start":{"line":95,"column":15},"end":{"line":103,"column":null}},"29":{"start":{"line":96,"column":4},"end":{"line":102,"column":null}},"30":{"start":{"line":97,"column":6},"end":{"line":97,"column":null}},"31":{"start":{"line":99,"column":6},"end":{"line":99,"column":null}},"32":{"start":{"line":100,"column":23},"end":{"line":100,"column":null}},"33":{"start":{"line":101,"column":6},"end":{"line":101,"column":null}},"34":{"start":{"line":101,"column":28},"end":{"line":101,"column":null}},"35":{"start":{"line":105,"column":15},"end":{"line":111,"column":null}},"36":{"start":{"line":106,"column":4},"end":{"line":110,"column":null}},"37":{"start":{"line":107,"column":6},"end":{"line":107,"column":null}},"38":{"start":{"line":108,"column":23},"end":{"line":108,"column":null}},"39":{"start":{"line":109,"column":6},"end":{"line":109,"column":null}},"40":{"start":{"line":109,"column":28},"end":{"line":109,"column":null}},"41":{"start":{"line":113,"column":23},"end":{"line":117,"column":null}},"42":{"start":{"line":114,"column":4},"end":{"line":114,"column":null}},"43":{"start":{"line":115,"column":4},"end":{"line":115,"column":null}},"44":{"start":{"line":116,"column":4},"end":{"line":116,"column":null}},"45":{"start":{"line":119,"column":19},"end":{"line":123,"column":null}},"46":{"start":{"line":120,"column":4},"end":{"line":120,"column":null}},"47":{"start":{"line":121,"column":4},"end":{"line":121,"column":null}},"48":{"start":{"line":122,"column":4},"end":{"line":122,"column":null}},"49":{"start":{"line":125,"column":2},"end":{"line":133,"column":null}},"50":{"start":{"line":126,"column":20},"end":{"line":130,"column":null}},"51":{"start":{"line":127,"column":6},"end":{"line":127,"column":null}},"52":{"start":{"line":128,"column":6},"end":{"line":128,"column":null}},"53":{"start":{"line":129,"column":6},"end":{"line":129,"column":null}},"54":{"start":{"line":131,"column":4},"end":{"line":131,"column":null}},"55":{"start":{"line":132,"column":4},"end":{"line":132,"column":null}},"56":{"start":{"line":132,"column":17},"end":{"line":132,"column":null}},"57":{"start":{"line":135,"column":2},"end":{"line":140,"column":null}},"58":{"start":{"line":136,"column":4},"end":{"line":139,"column":null}},"59":{"start":{"line":137,"column":6},"end":{"line":137,"column":null}},"60":{"start":{"line":138,"column":6},"end":{"line":138,"column":null}},"61":{"start":{"line":142,"column":2},"end":{"line":173,"column":null}},"62":{"start":{"line":143,"column":14},"end":{"line":143,"column":27}},"63":{"start":{"line":143,"column":27},"end":{"line":143,"column":null}},"64":{"start":{"line":143,"column":27},"end":{"line":145,"column":52}},"65":{"start":{"line":145,"column":52},"end":{"line":158,"column":null}},"66":{"start":{"line":150,"column":21},"end":{"line":155,"column":null}},"67":{"start":{"line":150,"column":24},"end":{"line":150,"column":null}},"68":{"start":{"line":150,"column":24},"end":{"line":155,"column":null}},"69":{"start":{"line":150,"column":24},"end":{"line":154,"column":53}},"70":{"start":{"line":154,"column":53},"end":{"line":155,"column":54}},"71":{"start":{"line":155,"column":54},"end":{"line":155,"column":null}},"72":{"start":{"line":158,"column":17},"end":{"line":161,"column":55}},"73":{"start":{"line":161,"column":55},"end":{"line":166,"column":null}},"74":{"start":{"line":166,"column":36},"end":{"line":166,"column":48}},"75":{"start":{"line":166,"column":48},"end":{"line":167,"column":null}},"76":{"start":{"line":167,"column":41},"end":{"line":167,"column":59}},"77":{"start":{"line":167,"column":59},"end":{"line":172,"column":27}},"78":{"start":{"line":172,"column":27},"end":{"line":178,"column":38}},"79":{"start":{"line":178,"column":15},"end":{"line":178,"column":32}},"80":{"start":{"line":178,"column":32},"end":{"line":178,"column":null}},"81":{"start":{"line":178,"column":38},"end":{"line":178,"column":54}},"82":{"start":{"line":178,"column":54},"end":{"line":180,"column":58}},"83":{"start":{"line":180,"column":58},"end":{"line":181,"column":null}},"84":{"start":{"line":181,"column":15},"end":{"line":181,"column":48}},"85":{"start":{"line":181,"column":48},"end":{"line":173,"column":null}},"86":{"start":{"line":181,"column":48},"end":{"line":173,"column":33}},"87":{"start":{"line":173,"column":33},"end":{"line":173,"column":null}},"88":{"start":{"line":190,"column":26},"end":{"line":190,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":23,"column":12},"end":{"line":23,"column":18}},"loc":{"start":{"line":23,"column":12},"end":{"line":23,"column":null}},"line":23},"1":{"name":"(anonymous_1)","decl":{"start":{"line":29,"column":12},"end":{"line":29,"column":18}},"loc":{"start":{"line":29,"column":12},"end":{"line":29,"column":null}},"line":29},"2":{"name":"(anonymous_2)","decl":{"start":{"line":35,"column":12},"end":{"line":35,"column":18}},"loc":{"start":{"line":35,"column":12},"end":{"line":35,"column":null}},"line":35},"3":{"name":"(anonymous_3)","decl":{"start":{"line":41,"column":12},"end":{"line":41,"column":18}},"loc":{"start":{"line":41,"column":12},"end":{"line":41,"column":null}},"line":41},"4":{"name":"isTourCompleted","decl":{"start":{"line":45,"column":16},"end":{"line":45,"column":43}},"loc":{"start":{"line":45,"column":43},"end":{"line":47,"column":null}},"line":45},"5":{"name":"markTourCompleted","decl":{"start":{"line":49,"column":16},"end":{"line":49,"column":42}},"loc":{"start":{"line":49,"column":42},"end":{"line":51,"column":null}},"line":49},"6":{"name":"showTour","decl":{"start":{"line":53,"column":16},"end":{"line":53,"column":33}},"loc":{"start":{"line":53,"column":33},"end":{"line":57,"column":null}},"line":53},"7":{"name":"TourProvider2","decl":{"start":{"line":65,"column":16},"end":{"line":65,"column":28}},"loc":{"start":{"line":65,"column":55},"end":{"line":76,"column":1}},"line":65},"8":{"name":"(anonymous_8)","decl":{"start":{"line":66,"column":20},"end":{"line":66,"column":26}},"loc":{"start":{"line":66,"column":26},"end":{"line":69,"column":null}},"line":66},"9":{"name":"(anonymous_9)","decl":{"start":{"line":72,"column":46},"end":{"line":72,"column":null}},"loc":{"start":{"line":72,"column":46},"end":{"line":73,"column":null}},"line":72},"10":{"name":"useTour","decl":{"start":{"line":78,"column":16},"end":{"line":78,"column":26}},"loc":{"start":{"line":78,"column":26},"end":{"line":80,"column":null}},"line":78},"11":{"name":"(anonymous_11)","decl":{"start":{"line":87,"column":48},"end":{"line":87,"column":58}},"loc":{"start":{"line":87,"column":58},"end":{"line":188,"column":1}},"line":87},"12":{"name":"(anonymous_12)","decl":{"start":{"line":91,"column":15},"end":{"line":91,"column":21}},"loc":{"start":{"line":91,"column":21},"end":{"line":91,"column":null}},"line":91},"13":{"name":"(anonymous_13)","decl":{"start":{"line":92,"column":17},"end":{"line":92,"column":23}},"loc":{"start":{"line":92,"column":23},"end":{"line":92,"column":null}},"line":92},"14":{"name":"(anonymous_14)","decl":{"start":{"line":93,"column":18},"end":{"line":93,"column":24}},"loc":{"start":{"line":93,"column":24},"end":{"line":93,"column":null}},"line":93},"15":{"name":"(anonymous_15)","decl":{"start":{"line":95,"column":15},"end":{"line":95,"column":21}},"loc":{"start":{"line":95,"column":21},"end":{"line":103,"column":null}},"line":95},"16":{"name":"(anonymous_16)","decl":{"start":{"line":105,"column":15},"end":{"line":105,"column":21}},"loc":{"start":{"line":105,"column":21},"end":{"line":111,"column":null}},"line":105},"17":{"name":"(anonymous_17)","decl":{"start":{"line":113,"column":23},"end":{"line":113,"column":29}},"loc":{"start":{"line":113,"column":29},"end":{"line":117,"column":null}},"line":113},"18":{"name":"(anonymous_18)","decl":{"start":{"line":119,"column":19},"end":{"line":119,"column":25}},"loc":{"start":{"line":119,"column":25},"end":{"line":123,"column":null}},"line":119},"19":{"name":"(anonymous_19)","decl":{"start":{"line":125,"column":15},"end":{"line":125,"column":21}},"loc":{"start":{"line":125,"column":21},"end":{"line":133,"column":3}},"line":125},"20":{"name":"(anonymous_20)","decl":{"start":{"line":126,"column":20},"end":{"line":126,"column":26}},"loc":{"start":{"line":126,"column":26},"end":{"line":130,"column":null}},"line":126},"21":{"name":"(anonymous_21)","decl":{"start":{"line":132,"column":11},"end":{"line":132,"column":17}},"loc":{"start":{"line":132,"column":17},"end":{"line":132,"column":null}},"line":132},"22":{"name":"(anonymous_22)","decl":{"start":{"line":135,"column":15},"end":{"line":135,"column":21}},"loc":{"start":{"line":135,"column":21},"end":{"line":140,"column":3}},"line":135},"23":{"name":"(anonymous_23)","decl":{"start":{"line":143,"column":10},"end":{"line":143,"column":14}},"loc":{"start":{"line":143,"column":14},"end":{"line":143,"column":null}},"line":143},"24":{"name":"(anonymous_24)","decl":{"start":{"line":143,"column":27},"end":{"line":143,"column":null}},"loc":{"start":{"line":143,"column":27},"end":{"line":173,"column":null}},"line":143},"25":{"name":"(anonymous_25)","decl":{"start":{"line":150,"column":17},"end":{"line":150,"column":18}},"loc":{"start":{"line":150,"column":21},"end":{"line":155,"column":null}},"line":150},"26":{"name":"(anonymous_26)","decl":{"start":{"line":150,"column":24},"end":{"line":150,"column":null}},"loc":{"start":{"line":150,"column":24},"end":{"line":155,"column":null}},"line":150},"27":{"name":"(anonymous_27)","decl":{"start":{"line":161,"column":55},"end":{"line":161,"column":null}},"loc":{"start":{"line":166,"column":36},"end":{"line":166,"column":48}},"line":166},"28":{"name":"(anonymous_28)","decl":{"start":{"line":166,"column":48},"end":{"line":166,"column":null}},"loc":{"start":{"line":167,"column":41},"end":{"line":167,"column":59}},"line":167},"29":{"name":"(anonymous_29)","decl":{"start":{"line":172,"column":27},"end":{"line":172,"column":null}},"loc":{"start":{"line":178,"column":15},"end":{"line":178,"column":32}},"line":178},"30":{"name":"(anonymous_30)","decl":{"start":{"line":178,"column":32},"end":{"line":178,"column":38}},"loc":{"start":{"line":178,"column":38},"end":{"line":178,"column":54}},"line":178},"31":{"name":"(anonymous_31)","decl":{"start":{"line":180,"column":58},"end":{"line":180,"column":null}},"loc":{"start":{"line":181,"column":15},"end":{"line":181,"column":48}},"line":181},"32":{"name":"(anonymous_32)","decl":{"start":{"line":181,"column":48},"end":{"line":181,"column":null}},"loc":{"start":{"line":181,"column":48},"end":{"line":173,"column":33}},"line":181}},"branchMap":{"0":{"loc":{"start":{"line":88,"column":53},"end":{"line":88,"column":75}},"type":"binary-expr","locations":[{"start":{"line":88,"column":53},"end":{"line":88,"column":74}},{"start":{"line":88,"column":74},"end":{"line":88,"column":75}}],"line":88},"1":{"loc":{"start":{"line":96,"column":4},"end":{"line":102,"column":null}},"type":"if","locations":[{"start":{"line":96,"column":4},"end":{"line":102,"column":null}},{"start":{"line":98,"column":11},"end":{"line":102,"column":null}}],"line":96},"2":{"loc":{"start":{"line":101,"column":6},"end":{"line":101,"column":null}},"type":"if","locations":[{"start":{"line":101,"column":6},"end":{"line":101,"column":null}},{"start":{},"end":{}}],"line":101},"3":{"loc":{"start":{"line":106,"column":4},"end":{"line":110,"column":null}},"type":"if","locations":[{"start":{"line":106,"column":4},"end":{"line":110,"column":null}},{"start":{},"end":{}}],"line":106},"4":{"loc":{"start":{"line":109,"column":6},"end":{"line":109,"column":null}},"type":"if","locations":[{"start":{"line":109,"column":6},"end":{"line":109,"column":null}},{"start":{},"end":{}}],"line":109},"5":{"loc":{"start":{"line":136,"column":4},"end":{"line":139,"column":null}},"type":"if","locations":[{"start":{"line":136,"column":4},"end":{"line":139,"column":null}},{"start":{},"end":{}}],"line":136},"6":{"loc":{"start":{"line":155,"column":54},"end":{"line":155,"column":null}},"type":"binary-expr","locations":[{"start":{"line":155,"column":54},"end":{"line":155,"column":null}},{"start":{"line":155,"column":54},"end":{"line":155,"column":null}}],"line":155},"7":{"loc":{"start":{"line":181,"column":15},"end":{"line":181,"column":48}},"type":"cond-expr","locations":[{"start":{"line":181,"column":26},"end":{"line":181,"column":42}},{"start":{"line":181,"column":42},"end":{"line":181,"column":48}}],"line":181},"8":{"loc":{"start":{"line":190,"column":26},"end":{"line":190,"column":null}},"type":"if","locations":[{"start":{"line":190,"column":26},"end":{"line":190,"column":null}},{"start":{},"end":{}}],"line":190}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0]},"meta":{"lastBranch":9,"lastFunction":33,"lastStatement":89,"seen":{"s:5:20:5:Infinity":0,"s:14:37:42:Infinity":1,"f:23:12:23:18":0,"s:23:12:23:Infinity":2,"f:29:12:29:18":1,"s:29:12:29:Infinity":3,"f:35:12:35:18":2,"s:35:12:35:Infinity":4,"f:41:12:41:18":3,"s:41:12:41:Infinity":5,"f:45:16:45:43":4,"s:46:2:46:Infinity":6,"f:49:16:49:42":5,"s:50:2:50:Infinity":7,"f:53:16:53:33":6,"s:54:2:54:Infinity":8,"s:55:16:55:Infinity":9,"s:56:2:56:Infinity":10,"s:63:6:63:Infinity":11,"s:65:16:76:Infinity":12,"f:65:16:65:28":7,"s:66:20:69:Infinity":13,"f:66:20:66:26":8,"s:67:18:67:Infinity":14,"s:68:4:68:Infinity":15,"s:71:2:73:Infinity":16,"f:72:46:72:Infinity":9,"s:72:46:73:21":17,"f:78:16:78:26":10,"s:79:2:79:Infinity":18,"s:87:6:188:Infinity":19,"f:87:48:87:58":11,"s:88:36:88:Infinity":20,"b:88:53:88:74:88:74:88:75":0,"s:89:32:89:Infinity":21,"s:91:15:91:Infinity":22,"f:91:15:91:21":12,"s:91:21:91:Infinity":23,"s:92:17:92:Infinity":24,"f:92:17:92:23":13,"s:92:23:92:Infinity":25,"s:93:18:93:Infinity":26,"f:93:18:93:24":14,"s:93:24:93:Infinity":27,"s:95:15:103:Infinity":28,"f:95:15:95:21":15,"b:96:4:102:Infinity:98:11:102:Infinity":1,"s:96:4:102:Infinity":29,"s:97:6:97:Infinity":30,"s:99:6:99:Infinity":31,"s:100:23:100:Infinity":32,"b:101:6:101:Infinity:undefined:undefined:undefined:undefined":2,"s:101:6:101:Infinity":33,"s:101:28:101:Infinity":34,"s:105:15:111:Infinity":35,"f:105:15:105:21":16,"b:106:4:110:Infinity:undefined:undefined:undefined:undefined":3,"s:106:4:110:Infinity":36,"s:107:6:107:Infinity":37,"s:108:23:108:Infinity":38,"b:109:6:109:Infinity:undefined:undefined:undefined:undefined":4,"s:109:6:109:Infinity":39,"s:109:28:109:Infinity":40,"s:113:23:117:Infinity":41,"f:113:23:113:29":17,"s:114:4:114:Infinity":42,"s:115:4:115:Infinity":43,"s:116:4:116:Infinity":44,"s:119:19:123:Infinity":45,"f:119:19:119:25":18,"s:120:4:120:Infinity":46,"s:121:4:121:Infinity":47,"s:122:4:122:Infinity":48,"s:125:2:133:Infinity":49,"f:125:15:125:21":19,"s:126:20:130:Infinity":50,"f:126:20:126:26":20,"s:127:6:127:Infinity":51,"s:128:6:128:Infinity":52,"s:129:6:129:Infinity":53,"s:131:4:131:Infinity":54,"s:132:4:132:Infinity":55,"f:132:11:132:17":21,"s:132:17:132:Infinity":56,"s:135:2:140:Infinity":57,"f:135:15:135:21":22,"b:136:4:139:Infinity:undefined:undefined:undefined:undefined":5,"s:136:4:139:Infinity":58,"s:137:6:137:Infinity":59,"s:138:6:138:Infinity":60,"s:142:2:173:Infinity":61,"f:143:10:143:14":23,"s:143:14:143:27":62,"f:143:27:143:Infinity":24,"s:143:27:143:Infinity":63,"s:143:27:145:52":64,"s:145:52:158:Infinity":65,"f:150:17:150:18":25,"s:150:21:155:Infinity":66,"f:150:24:150:Infinity":26,"s:150:24:150:Infinity":67,"s:150:24:155:Infinity":68,"s:150:24:154:53":69,"s:154:53:155:54":70,"s:155:54:155:Infinity":71,"b:155:54:155:Infinity:155:54:155:Infinity":6,"s:158:17:161:55":72,"s:161:55:166:Infinity":73,"f:161:55:161:Infinity":27,"s:166:36:166:48":74,"s:166:48:167:Infinity":75,"f:166:48:166:Infinity":28,"s:167:41:167:59":76,"s:167:59:172:27":77,"s:172:27:178:38":78,"f:172:27:172:Infinity":29,"s:178:15:178:32":79,"s:178:32:178:Infinity":80,"f:178:32:178:38":30,"s:178:38:178:54":81,"s:178:54:180:58":82,"s:180:58:181:Infinity":83,"f:180:58:180:Infinity":31,"s:181:15:181:48":84,"b:181:26:181:42:181:42:181:48":7,"s:181:48:173:Infinity":85,"f:181:48:181:Infinity":32,"s:181:48:173:33":86,"s:173:33:173:Infinity":87,"b:190:26:190:Infinity:undefined:undefined:undefined:undefined":8,"s:190:26:190:Infinity":88}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/report/ReportView.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/report/ReportView.tsx","statementMap":{"0":{"start":{"line":5,"column":6},"end":{"line":275,"column":null}},"1":{"start":{"line":6,"column":26},"end":{"line":6,"column":null}},"2":{"start":{"line":7,"column":36},"end":{"line":7,"column":null}},"3":{"start":{"line":8,"column":36},"end":{"line":8,"column":null}},"4":{"start":{"line":10,"column":8},"end":{"line":10,"column":null}},"5":{"start":{"line":11,"column":8},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":20},"end":{"line":13,"column":null}},"7":{"start":{"line":13,"column":45},"end":{"line":13,"column":66}},"8":{"start":{"line":14,"column":20},"end":{"line":14,"column":null}},"9":{"start":{"line":14,"column":45},"end":{"line":14,"column":52}},"10":{"start":{"line":16,"column":26},"end":{"line":16,"column":null}},"11":{"start":{"line":17,"column":2},"end":{"line":20,"column":null}},"12":{"start":{"line":18,"column":4},"end":{"line":18,"column":null}},"13":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"14":{"start":{"line":21,"column":24},"end":{"line":23,"column":null}},"15":{"start":{"line":22,"column":20},"end":{"line":22,"column":31}},"16":{"start":{"line":25,"column":23},"end":{"line":27,"column":null}},"17":{"start":{"line":26,"column":4},"end":{"line":26,"column":null}},"18":{"start":{"line":26,"column":29},"end":{"line":26,"column":40}},"19":{"start":{"line":29,"column":24},"end":{"line":33,"column":null}},"20":{"start":{"line":30,"column":10},"end":{"line":30,"column":null}},"21":{"start":{"line":30,"column":38},"end":{"line":30,"column":62}},"22":{"start":{"line":31,"column":16},"end":{"line":31,"column":null}},"23":{"start":{"line":32,"column":4},"end":{"line":32,"column":null}},"24":{"start":{"line":35,"column":22},"end":{"line":41,"column":null}},"25":{"start":{"line":36,"column":4},"end":{"line":40,"column":null}},"26":{"start":{"line":37,"column":19},"end":{"line":37,"column":null}},"27":{"start":{"line":38,"column":20},"end":{"line":38,"column":null}},"28":{"start":{"line":39,"column":15},"end":{"line":39,"column":null}},"29":{"start":{"line":43,"column":25},"end":{"line":43,"column":null}},"30":{"start":{"line":43,"column":31},"end":{"line":43,"column":null}},"31":{"start":{"line":45,"column":25},"end":{"line":84,"column":null}},"32":{"start":{"line":46,"column":10},"end":{"line":46,"column":null}},"33":{"start":{"line":47,"column":10},"end":{"line":47,"column":null}},"34":{"start":{"line":49,"column":28},"end":{"line":49,"column":null}},"35":{"start":{"line":50,"column":4},"end":{"line":50,"column":null}},"36":{"start":{"line":51,"column":4},"end":{"line":51,"column":null}},"37":{"start":{"line":52,"column":4},"end":{"line":52,"column":null}},"38":{"start":{"line":53,"column":4},"end":{"line":53,"column":null}},"39":{"start":{"line":54,"column":4},"end":{"line":54,"column":null}},"40":{"start":{"line":55,"column":4},"end":{"line":55,"column":null}},"41":{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},"42":{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},"43":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"44":{"start":{"line":59,"column":4},"end":{"line":59,"column":null}},"45":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"46":{"start":{"line":61,"column":4},"end":{"line":61,"column":null}},"47":{"start":{"line":63,"column":4},"end":{"line":65,"column":null}},"48":{"start":{"line":64,"column":6},"end":{"line":64,"column":null}},"49":{"start":{"line":66,"column":4},"end":{"line":66,"column":null}},"50":{"start":{"line":67,"column":4},"end":{"line":67,"column":null}},"51":{"start":{"line":68,"column":4},"end":{"line":68,"column":null}},"52":{"start":{"line":70,"column":4},"end":{"line":76,"column":null}},"53":{"start":{"line":71,"column":6},"end":{"line":71,"column":null}},"54":{"start":{"line":72,"column":6},"end":{"line":74,"column":null}},"55":{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},"56":{"start":{"line":75,"column":6},"end":{"line":75,"column":null}},"57":{"start":{"line":78,"column":4},"end":{"line":78,"column":null}},"58":{"start":{"line":79,"column":4},"end":{"line":81,"column":null}},"59":{"start":{"line":80,"column":6},"end":{"line":80,"column":null}},"60":{"start":{"line":83,"column":4},"end":{"line":83,"column":null}},"61":{"start":{"line":86,"column":21},"end":{"line":89,"column":null}},"62":{"start":{"line":87,"column":4},"end":{"line":87,"column":null}},"63":{"start":{"line":88,"column":4},"end":{"line":88,"column":null}},"64":{"start":{"line":88,"column":21},"end":{"line":88,"column":44}},"65":{"start":{"line":91,"column":26},"end":{"line":94,"column":null}},"66":{"start":{"line":92,"column":4},"end":{"line":92,"column":null}},"67":{"start":{"line":93,"column":4},"end":{"line":93,"column":null}},"68":{"start":{"line":93,"column":21},"end":{"line":93,"column":44}},"69":{"start":{"line":96,"column":21},"end":{"line":110,"column":null}},"70":{"start":{"line":97,"column":17},"end":{"line":97,"column":null}},"71":{"start":{"line":98,"column":4},"end":{"line":109,"column":null}},"72":{"start":{"line":99,"column":6},"end":{"line":99,"column":null}},"73":{"start":{"line":100,"column":6},"end":{"line":100,"column":null}},"74":{"start":{"line":102,"column":23},"end":{"line":102,"column":null}},"75":{"start":{"line":103,"column":6},"end":{"line":103,"column":null}},"76":{"start":{"line":104,"column":6},"end":{"line":104,"column":null}},"77":{"start":{"line":105,"column":6},"end":{"line":105,"column":null}},"78":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"79":{"start":{"line":107,"column":6},"end":{"line":107,"column":null}},"80":{"start":{"line":108,"column":6},"end":{"line":108,"column":null}},"81":{"start":{"line":112,"column":22},"end":{"line":123,"column":null}},"82":{"start":{"line":113,"column":17},"end":{"line":113,"column":null}},"83":{"start":{"line":114,"column":17},"end":{"line":114,"column":null}},"84":{"start":{"line":115,"column":16},"end":{"line":115,"column":null}},"85":{"start":{"line":116,"column":14},"end":{"line":116,"column":null}},"86":{"start":{"line":117,"column":4},"end":{"line":117,"column":null}},"87":{"start":{"line":118,"column":4},"end":{"line":118,"column":null}},"88":{"start":{"line":119,"column":4},"end":{"line":119,"column":null}},"89":{"start":{"line":120,"column":4},"end":{"line":120,"column":null}},"90":{"start":{"line":121,"column":4},"end":{"line":121,"column":null}},"91":{"start":{"line":122,"column":4},"end":{"line":122,"column":null}},"92":{"start":{"line":125,"column":22},"end":{"line":127,"column":null}},"93":{"start":{"line":126,"column":4},"end":{"line":126,"column":null}},"94":{"start":{"line":129,"column":22},"end":{"line":144,"column":null}},"95":{"start":{"line":130,"column":19},"end":{"line":130,"column":null}},"96":{"start":{"line":131,"column":22},"end":{"line":131,"column":null}},"97":{"start":{"line":132,"column":4},"end":{"line":143,"column":null}},"98":{"start":{"line":133,"column":6},"end":{"line":133,"column":null}},"99":{"start":{"line":134,"column":6},"end":{"line":134,"column":null}},"100":{"start":{"line":136,"column":23},"end":{"line":136,"column":null}},"101":{"start":{"line":137,"column":6},"end":{"line":137,"column":null}},"102":{"start":{"line":138,"column":6},"end":{"line":138,"column":null}},"103":{"start":{"line":139,"column":6},"end":{"line":139,"column":null}},"104":{"start":{"line":140,"column":6},"end":{"line":140,"column":null}},"105":{"start":{"line":141,"column":6},"end":{"line":141,"column":null}},"106":{"start":{"line":142,"column":6},"end":{"line":142,"column":null}},"107":{"start":{"line":146,"column":2},"end":{"line":151,"column":46}},"108":{"start":{"line":146,"column":2},"end":{"line":146,"column":null}},"109":{"start":{"line":146,"column":2},"end":{"line":151,"column":null}},"110":{"start":{"line":151,"column":52},"end":{"line":151,"column":112}},"111":{"start":{"line":151,"column":112},"end":{"line":163,"column":null}},"112":{"start":{"line":151,"column":112},"end":{"line":159,"column":null}},"113":{"start":{"line":151,"column":112},"end":{"line":159,"column":23}},"114":{"start":{"line":159,"column":23},"end":{"line":159,"column":22}},"115":{"start":{"line":159,"column":7},"end":{"line":159,"column":22}},"116":{"start":{"line":163,"column":7},"end":{"line":167,"column":null}},"117":{"start":{"line":167,"column":47},"end":{"line":171,"column":null}},"118":{"start":{"line":171,"column":47},"end":{"line":175,"column":null}},"119":{"start":{"line":175,"column":38},"end":{"line":175,"column":52}},"120":{"start":{"line":175,"column":52},"end":{"line":179,"column":null}},"121":{"start":{"line":179,"column":38},"end":{"line":179,"column":52}},"122":{"start":{"line":179,"column":52},"end":{"line":194,"column":null}},"123":{"start":{"line":179,"column":52},"end":{"line":187,"column":null}},"124":{"start":{"line":187,"column":11},"end":{"line":187,"column":35}},"125":{"start":{"line":187,"column":35},"end":{"line":191,"column":null}},"126":{"start":{"line":187,"column":11},"end":{"line":191,"column":null}},"127":{"start":{"line":187,"column":11},"end":{"line":187,"column":25}},"128":{"start":{"line":187,"column":11},"end":{"line":191,"column":102}},"129":{"start":{"line":191,"column":25},"end":{"line":191,"column":58}},"130":{"start":{"line":191,"column":58},"end":{"line":191,"column":null}},"131":{"start":{"line":191,"column":102},"end":{"line":191,"column":121}},"132":{"start":{"line":191,"column":121},"end":{"line":191,"column":null}},"133":{"start":{"line":194,"column":11},"end":{"line":198,"column":68}},"134":{"start":{"line":198,"column":34},"end":{"line":198,"column":48}},"135":{"start":{"line":198,"column":48},"end":{"line":198,"column":null}},"136":{"start":{"line":198,"column":68},"end":{"line":198,"column":100}},"137":{"start":{"line":198,"column":100},"end":{"line":204,"column":75}},"138":{"start":{"line":204,"column":15},"end":{"line":204,"column":29}},"139":{"start":{"line":204,"column":29},"end":{"line":204,"column":null}},"140":{"start":{"line":204,"column":75},"end":{"line":204,"column":107}},"141":{"start":{"line":204,"column":107},"end":{"line":223,"column":null}},"142":{"start":{"line":204,"column":107},"end":{"line":210,"column":null}},"143":{"start":{"line":210,"column":7},"end":{"line":210,"column":31}},"144":{"start":{"line":210,"column":31},"end":{"line":220,"column":null}},"145":{"start":{"line":210,"column":7},"end":{"line":220,"column":null}},"146":{"start":{"line":210,"column":7},"end":{"line":210,"column":21}},"147":{"start":{"line":214,"column":13},"end":{"line":220,"column":14}},"148":{"start":{"line":214,"column":45},"end":{"line":218,"column":null}},"149":{"start":{"line":214,"column":46},"end":{"line":214,"column":null}},"150":{"start":{"line":214,"column":46},"end":{"line":216,"column":null}},"151":{"start":{"line":216,"column":51},"end":{"line":217,"column":null}},"152":{"start":{"line":217,"column":46},"end":{"line":217,"column":62}},"153":{"start":{"line":217,"column":62},"end":{"line":218,"column":null}},"154":{"start":{"line":218,"column":52},"end":{"line":218,"column":null}},"155":{"start":{"line":220,"column":14},"end":{"line":220,"column":null}},"156":{"start":{"line":223,"column":7},"end":{"line":236,"column":null}},"157":{"start":{"line":228,"column":11},"end":{"line":236,"column":12}},"158":{"start":{"line":228,"column":49},"end":{"line":234,"column":null}},"159":{"start":{"line":228,"column":50},"end":{"line":228,"column":null}},"160":{"start":{"line":228,"column":50},"end":{"line":230,"column":null}},"161":{"start":{"line":230,"column":43},"end":{"line":232,"column":null}},"162":{"start":{"line":232,"column":64},"end":{"line":234,"column":49}},"163":{"start":{"line":234,"column":45},"end":{"line":234,"column":null}},"164":{"start":{"line":234,"column":52},"end":{"line":234,"column":null}},"165":{"start":{"line":236,"column":12},"end":{"line":243,"column":66}},"166":{"start":{"line":243,"column":66},"end":{"line":246,"column":67}},"167":{"start":{"line":246,"column":67},"end":{"line":249,"column":67}},"168":{"start":{"line":249,"column":67},"end":{"line":257,"column":63}},"169":{"start":{"line":257,"column":63},"end":{"line":266,"column":null}},"170":{"start":{"line":257,"column":63},"end":{"line":262,"column":null}},"171":{"start":{"line":257,"column":63},"end":{"line":262,"column":20}},"172":{"start":{"line":262,"column":20},"end":{"line":262,"column":19}},"173":{"start":{"line":262,"column":7},"end":{"line":262,"column":19}},"174":{"start":{"line":266,"column":7},"end":{"line":272,"column":null}},"175":{"start":{"line":266,"column":7},"end":{"line":268,"column":null}},"176":{"start":{"line":266,"column":7},"end":{"line":268,"column":20}},"177":{"start":{"line":268,"column":20},"end":{"line":268,"column":19}},"178":{"start":{"line":268,"column":7},"end":{"line":268,"column":19}},"179":{"start":{"line":272,"column":7},"end":{"line":151,"column":46}},"180":{"start":{"line":272,"column":7},"end":{"line":151,"column":33}},"181":{"start":{"line":151,"column":33},"end":{"line":151,"column":46}},"182":{"start":{"line":277,"column":26},"end":{"line":277,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":30},"end":{"line":5,"column":36}},"loc":{"start":{"line":5,"column":36},"end":{"line":275,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":13,"column":40},"end":{"line":13,"column":45}},"loc":{"start":{"line":13,"column":45},"end":{"line":13,"column":66}},"line":13},"2":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":40},"end":{"line":14,"column":45}},"loc":{"start":{"line":14,"column":45},"end":{"line":14,"column":52}},"line":14},"3":{"name":"(anonymous_3)","decl":{"start":{"line":17,"column":18},"end":{"line":17,"column":23}},"loc":{"start":{"line":17,"column":23},"end":{"line":20,"column":3}},"line":17},"4":{"name":"(anonymous_4)","decl":{"start":{"line":22,"column":10},"end":{"line":22,"column":11}},"loc":{"start":{"line":22,"column":20},"end":{"line":22,"column":31}},"line":22},"5":{"name":"(anonymous_5)","decl":{"start":{"line":25,"column":23},"end":{"line":25,"column":24}},"loc":{"start":{"line":25,"column":39},"end":{"line":27,"column":null}},"line":25},"6":{"name":"(anonymous_6)","decl":{"start":{"line":26,"column":24},"end":{"line":26,"column":29}},"loc":{"start":{"line":26,"column":29},"end":{"line":26,"column":40}},"line":26},"7":{"name":"(anonymous_7)","decl":{"start":{"line":29,"column":50},"end":{"line":29,"column":58}},"loc":{"start":{"line":29,"column":58},"end":{"line":33,"column":3}},"line":29},"8":{"name":"(anonymous_8)","decl":{"start":{"line":30,"column":33},"end":{"line":30,"column":38}},"loc":{"start":{"line":30,"column":38},"end":{"line":30,"column":62}},"line":30},"9":{"name":"(anonymous_9)","decl":{"start":{"line":35,"column":22},"end":{"line":35,"column":28}},"loc":{"start":{"line":35,"column":28},"end":{"line":41,"column":null}},"line":35},"10":{"name":"(anonymous_10)","decl":{"start":{"line":43,"column":25},"end":{"line":43,"column":31}},"loc":{"start":{"line":43,"column":31},"end":{"line":43,"column":null}},"line":43},"11":{"name":"(anonymous_11)","decl":{"start":{"line":45,"column":25},"end":{"line":45,"column":39}},"loc":{"start":{"line":45,"column":39},"end":{"line":84,"column":null}},"line":45},"12":{"name":"(anonymous_12)","decl":{"start":{"line":72,"column":28},"end":{"line":72,"column":29}},"loc":{"start":{"line":72,"column":48},"end":{"line":74,"column":7}},"line":72},"13":{"name":"(anonymous_13)","decl":{"start":{"line":79,"column":26},"end":{"line":79,"column":27}},"loc":{"start":{"line":79,"column":52},"end":{"line":81,"column":5}},"line":79},"14":{"name":"(anonymous_14)","decl":{"start":{"line":86,"column":21},"end":{"line":86,"column":27}},"loc":{"start":{"line":86,"column":27},"end":{"line":89,"column":null}},"line":86},"15":{"name":"(anonymous_15)","decl":{"start":{"line":88,"column":15},"end":{"line":88,"column":21}},"loc":{"start":{"line":88,"column":21},"end":{"line":88,"column":44}},"line":88},"16":{"name":"(anonymous_16)","decl":{"start":{"line":91,"column":26},"end":{"line":91,"column":32}},"loc":{"start":{"line":91,"column":32},"end":{"line":94,"column":null}},"line":91},"17":{"name":"(anonymous_17)","decl":{"start":{"line":93,"column":15},"end":{"line":93,"column":21}},"loc":{"start":{"line":93,"column":21},"end":{"line":93,"column":44}},"line":93},"18":{"name":"(anonymous_18)","decl":{"start":{"line":96,"column":21},"end":{"line":96,"column":33}},"loc":{"start":{"line":96,"column":33},"end":{"line":110,"column":null}},"line":96},"19":{"name":"(anonymous_19)","decl":{"start":{"line":112,"column":22},"end":{"line":112,"column":28}},"loc":{"start":{"line":112,"column":28},"end":{"line":123,"column":null}},"line":112},"20":{"name":"(anonymous_20)","decl":{"start":{"line":125,"column":22},"end":{"line":125,"column":28}},"loc":{"start":{"line":125,"column":28},"end":{"line":127,"column":null}},"line":125},"21":{"name":"(anonymous_21)","decl":{"start":{"line":129,"column":22},"end":{"line":129,"column":34}},"loc":{"start":{"line":129,"column":34},"end":{"line":144,"column":null}},"line":129},"22":{"name":"(anonymous_22)","decl":{"start":{"line":146,"column":2},"end":{"line":146,"column":null}},"loc":{"start":{"line":146,"column":2},"end":{"line":151,"column":46}},"line":146},"23":{"name":"(anonymous_23)","decl":{"start":{"line":151,"column":46},"end":{"line":151,"column":52}},"loc":{"start":{"line":151,"column":52},"end":{"line":151,"column":112}},"line":151},"24":{"name":"(anonymous_24)","decl":{"start":{"line":151,"column":112},"end":{"line":151,"column":null}},"loc":{"start":{"line":151,"column":112},"end":{"line":163,"column":null}},"line":151},"25":{"name":"(anonymous_25)","decl":{"start":{"line":159,"column":23},"end":{"line":159,"column":null}},"loc":{"start":{"line":159,"column":7},"end":{"line":159,"column":22}},"line":159},"26":{"name":"(anonymous_26)","decl":{"start":{"line":171,"column":47},"end":{"line":171,"column":null}},"loc":{"start":{"line":175,"column":38},"end":{"line":175,"column":52}},"line":175},"27":{"name":"(anonymous_27)","decl":{"start":{"line":175,"column":52},"end":{"line":175,"column":null}},"loc":{"start":{"line":179,"column":38},"end":{"line":179,"column":52}},"line":179},"28":{"name":"(anonymous_28)","decl":{"start":{"line":179,"column":52},"end":{"line":179,"column":null}},"loc":{"start":{"line":179,"column":52},"end":{"line":194,"column":null}},"line":179},"29":{"name":"(anonymous_29)","decl":{"start":{"line":187,"column":35},"end":{"line":187,"column":null}},"loc":{"start":{"line":187,"column":11},"end":{"line":191,"column":null}},"line":187},"30":{"name":"(anonymous_30)","decl":{"start":{"line":187,"column":11},"end":{"line":187,"column":25}},"loc":{"start":{"line":187,"column":11},"end":{"line":191,"column":null}},"line":187},"31":{"name":"(anonymous_31)","decl":{"start":{"line":191,"column":58},"end":{"line":191,"column":102}},"loc":{"start":{"line":191,"column":102},"end":{"line":191,"column":121}},"line":191},"32":{"name":"(anonymous_32)","decl":{"start":{"line":194,"column":11},"end":{"line":194,"column":null}},"loc":{"start":{"line":198,"column":34},"end":{"line":198,"column":48}},"line":198},"33":{"name":"(anonymous_33)","decl":{"start":{"line":198,"column":48},"end":{"line":198,"column":68}},"loc":{"start":{"line":198,"column":68},"end":{"line":198,"column":100}},"line":198},"34":{"name":"(anonymous_34)","decl":{"start":{"line":198,"column":100},"end":{"line":198,"column":null}},"loc":{"start":{"line":204,"column":15},"end":{"line":204,"column":29}},"line":204},"35":{"name":"(anonymous_35)","decl":{"start":{"line":204,"column":29},"end":{"line":204,"column":75}},"loc":{"start":{"line":204,"column":75},"end":{"line":204,"column":107}},"line":204},"36":{"name":"(anonymous_36)","decl":{"start":{"line":204,"column":107},"end":{"line":204,"column":null}},"loc":{"start":{"line":204,"column":107},"end":{"line":223,"column":null}},"line":204},"37":{"name":"(anonymous_37)","decl":{"start":{"line":210,"column":31},"end":{"line":210,"column":null}},"loc":{"start":{"line":210,"column":7},"end":{"line":220,"column":null}},"line":210},"38":{"name":"(anonymous_38)","decl":{"start":{"line":210,"column":7},"end":{"line":210,"column":21}},"loc":{"start":{"line":210,"column":7},"end":{"line":220,"column":null}},"line":210},"39":{"name":"(anonymous_39)","decl":{"start":{"line":214,"column":31},"end":{"line":214,"column":32}},"loc":{"start":{"line":214,"column":45},"end":{"line":218,"column":null}},"line":214},"40":{"name":"(anonymous_40)","decl":{"start":{"line":214,"column":46},"end":{"line":214,"column":null}},"loc":{"start":{"line":214,"column":46},"end":{"line":218,"column":null}},"line":214},"41":{"name":"(anonymous_41)","decl":{"start":{"line":216,"column":51},"end":{"line":216,"column":null}},"loc":{"start":{"line":217,"column":46},"end":{"line":217,"column":62}},"line":217},"42":{"name":"(anonymous_42)","decl":{"start":{"line":223,"column":7},"end":{"line":223,"column":null}},"loc":{"start":{"line":228,"column":11},"end":{"line":236,"column":12}},"line":228},"43":{"name":"(anonymous_43)","decl":{"start":{"line":228,"column":29},"end":{"line":228,"column":30}},"loc":{"start":{"line":228,"column":49},"end":{"line":234,"column":null}},"line":228},"44":{"name":"(anonymous_44)","decl":{"start":{"line":228,"column":50},"end":{"line":228,"column":null}},"loc":{"start":{"line":228,"column":50},"end":{"line":234,"column":null}},"line":228},"45":{"name":"(anonymous_45)","decl":{"start":{"line":257,"column":63},"end":{"line":257,"column":null}},"loc":{"start":{"line":257,"column":63},"end":{"line":266,"column":null}},"line":257},"46":{"name":"(anonymous_46)","decl":{"start":{"line":262,"column":20},"end":{"line":262,"column":null}},"loc":{"start":{"line":262,"column":7},"end":{"line":262,"column":19}},"line":262},"47":{"name":"(anonymous_47)","decl":{"start":{"line":266,"column":7},"end":{"line":266,"column":null}},"loc":{"start":{"line":266,"column":7},"end":{"line":272,"column":null}},"line":266},"48":{"name":"(anonymous_48)","decl":{"start":{"line":268,"column":20},"end":{"line":268,"column":null}},"loc":{"start":{"line":268,"column":7},"end":{"line":268,"column":19}},"line":268},"49":{"name":"(anonymous_49)","decl":{"start":{"line":272,"column":7},"end":{"line":272,"column":null}},"loc":{"start":{"line":272,"column":7},"end":{"line":151,"column":33}},"line":272}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":33},"end":{"line":18,"column":69}},"type":"binary-expr","locations":[{"start":{"line":18,"column":33},"end":{"line":18,"column":64}},{"start":{"line":18,"column":64},"end":{"line":18,"column":69}}],"line":18},"1":{"loc":{"start":{"line":19,"column":31},"end":{"line":19,"column":65}},"type":"binary-expr","locations":[{"start":{"line":19,"column":31},"end":{"line":19,"column":60}},{"start":{"line":19,"column":60},"end":{"line":19,"column":65}}],"line":19},"2":{"loc":{"start":{"line":26,"column":4},"end":{"line":26,"column":null}},"type":"binary-expr","locations":[{"start":{"line":26,"column":4},"end":{"line":26,"column":52}},{"start":{"line":26,"column":52},"end":{"line":26,"column":null}}],"line":26},"3":{"loc":{"start":{"line":31,"column":16},"end":{"line":31,"column":null}},"type":"cond-expr","locations":[{"start":{"line":31,"column":32},"end":{"line":31,"column":72}},{"start":{"line":31,"column":72},"end":{"line":31,"column":null}}],"line":31},"4":{"loc":{"start":{"line":36,"column":4},"end":{"line":40,"column":null}},"type":"switch","locations":[{"start":{"line":37,"column":6},"end":{"line":37,"column":null}},{"start":{"line":38,"column":6},"end":{"line":38,"column":null}},{"start":{"line":39,"column":6},"end":{"line":39,"column":null}}],"line":36},"5":{"loc":{"start":{"line":47,"column":10},"end":{"line":47,"column":null}},"type":"binary-expr","locations":[{"start":{"line":47,"column":10},"end":{"line":47,"column":29}},{"start":{"line":47,"column":29},"end":{"line":47,"column":null}}],"line":47},"6":{"loc":{"start":{"line":63,"column":4},"end":{"line":65,"column":null}},"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":65,"column":null}},{"start":{},"end":{}}],"line":63},"7":{"loc":{"start":{"line":70,"column":4},"end":{"line":76,"column":null}},"type":"if","locations":[{"start":{"line":70,"column":4},"end":{"line":76,"column":null}},{"start":{},"end":{}}],"line":70},"8":{"loc":{"start":{"line":159,"column":7},"end":{"line":159,"column":22}},"type":"binary-expr","locations":[{"start":{"line":159,"column":7},"end":{"line":159,"column":22}},{"start":{"line":159,"column":7},"end":{"line":159,"column":22}}],"line":159},"9":{"loc":{"start":{"line":187,"column":11},"end":{"line":191,"column":null}},"type":"binary-expr","locations":[{"start":{"line":187,"column":11},"end":{"line":187,"column":25}},{"start":{"line":187,"column":11},"end":{"line":191,"column":null}}],"line":187},"10":{"loc":{"start":{"line":210,"column":7},"end":{"line":220,"column":null}},"type":"binary-expr","locations":[{"start":{"line":210,"column":7},"end":{"line":210,"column":21}},{"start":{"line":210,"column":7},"end":{"line":220,"column":null}}],"line":210},"11":{"loc":{"start":{"line":262,"column":7},"end":{"line":262,"column":19}},"type":"binary-expr","locations":[{"start":{"line":262,"column":7},"end":{"line":262,"column":19}},{"start":{"line":262,"column":7},"end":{"line":262,"column":19}}],"line":262},"12":{"loc":{"start":{"line":268,"column":7},"end":{"line":268,"column":19}},"type":"binary-expr","locations":[{"start":{"line":268,"column":7},"end":{"line":268,"column":19}},{"start":{"line":268,"column":7},"end":{"line":268,"column":19}}],"line":268},"13":{"loc":{"start":{"line":277,"column":26},"end":{"line":277,"column":null}},"type":"if","locations":[{"start":{"line":277,"column":26},"end":{"line":277,"column":null}},{"start":{},"end":{}}],"line":277}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0,"139":0,"140":0,"141":0,"142":0,"143":0,"144":0,"145":0,"146":0,"147":0,"148":0,"149":0,"150":0,"151":0,"152":0,"153":0,"154":0,"155":0,"156":0,"157":0,"158":0,"159":0,"160":0,"161":0,"162":0,"163":0,"164":0,"165":0,"166":0,"167":0,"168":0,"169":0,"170":0,"171":0,"172":0,"173":0,"174":0,"175":0,"176":0,"177":0,"178":0,"179":0,"180":0,"181":0,"182":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0]},"meta":{"lastBranch":14,"lastFunction":50,"lastStatement":183,"seen":{"s:5:6:275:Infinity":0,"f:5:30:5:36":0,"s:6:26:6:Infinity":1,"s:7:36:7:Infinity":2,"s:8:36:8:Infinity":3,"s:10:8:10:Infinity":4,"s:11:8:11:Infinity":5,"s:13:20:13:Infinity":6,"f:13:40:13:45":1,"s:13:45:13:66":7,"s:14:20:14:Infinity":8,"f:14:40:14:45":2,"s:14:45:14:52":9,"s:16:26:16:Infinity":10,"s:17:2:20:Infinity":11,"f:17:18:17:23":3,"s:18:4:18:Infinity":12,"b:18:33:18:64:18:64:18:69":0,"s:19:4:19:Infinity":13,"b:19:31:19:60:19:60:19:65":1,"s:21:24:23:Infinity":14,"f:22:10:22:11":4,"s:22:20:22:31":15,"s:25:23:27:Infinity":16,"f:25:23:25:24":5,"s:26:4:26:Infinity":17,"b:26:4:26:52:26:52:26:Infinity":2,"f:26:24:26:29":6,"s:26:29:26:40":18,"s:29:24:33:Infinity":19,"f:29:50:29:58":7,"s:30:10:30:Infinity":20,"f:30:33:30:38":8,"s:30:38:30:62":21,"s:31:16:31:Infinity":22,"b:31:32:31:72:31:72:31:Infinity":3,"s:32:4:32:Infinity":23,"s:35:22:41:Infinity":24,"f:35:22:35:28":9,"b:37:6:37:Infinity:38:6:38:Infinity:39:6:39:Infinity":4,"s:36:4:40:Infinity":25,"s:37:19:37:Infinity":26,"s:38:20:38:Infinity":27,"s:39:15:39:Infinity":28,"s:43:25:43:Infinity":29,"f:43:25:43:31":10,"s:43:31:43:Infinity":30,"s:45:25:84:Infinity":31,"f:45:25:45:39":11,"s:46:10:46:Infinity":32,"s:47:10:47:Infinity":33,"b:47:10:47:29:47:29:47:Infinity":5,"s:49:28:49:Infinity":34,"s:50:4:50:Infinity":35,"s:51:4:51:Infinity":36,"s:52:4:52:Infinity":37,"s:53:4:53:Infinity":38,"s:54:4:54:Infinity":39,"s:55:4:55:Infinity":40,"s:56:4:56:Infinity":41,"s:57:4:57:Infinity":42,"s:58:4:58:Infinity":43,"s:59:4:59:Infinity":44,"s:60:4:60:Infinity":45,"s:61:4:61:Infinity":46,"b:63:4:65:Infinity:undefined:undefined:undefined:undefined":6,"s:63:4:65:Infinity":47,"s:64:6:64:Infinity":48,"s:66:4:66:Infinity":49,"s:67:4:67:Infinity":50,"s:68:4:68:Infinity":51,"b:70:4:76:Infinity:undefined:undefined:undefined:undefined":7,"s:70:4:76:Infinity":52,"s:71:6:71:Infinity":53,"s:72:6:74:Infinity":54,"f:72:28:72:29":12,"s:73:8:73:Infinity":55,"s:75:6:75:Infinity":56,"s:78:4:78:Infinity":57,"s:79:4:81:Infinity":58,"f:79:26:79:27":13,"s:80:6:80:Infinity":59,"s:83:4:83:Infinity":60,"s:86:21:89:Infinity":61,"f:86:21:86:27":14,"s:87:4:87:Infinity":62,"s:88:4:88:Infinity":63,"f:88:15:88:21":15,"s:88:21:88:44":64,"s:91:26:94:Infinity":65,"f:91:26:91:32":16,"s:92:4:92:Infinity":66,"s:93:4:93:Infinity":67,"f:93:15:93:21":17,"s:93:21:93:44":68,"s:96:21:110:Infinity":69,"f:96:21:96:33":18,"s:97:17:97:Infinity":70,"s:98:4:109:Infinity":71,"s:99:6:99:Infinity":72,"s:100:6:100:Infinity":73,"s:102:23:102:Infinity":74,"s:103:6:103:Infinity":75,"s:104:6:104:Infinity":76,"s:105:6:105:Infinity":77,"s:106:6:106:Infinity":78,"s:107:6:107:Infinity":79,"s:108:6:108:Infinity":80,"s:112:22:123:Infinity":81,"f:112:22:112:28":19,"s:113:17:113:Infinity":82,"s:114:17:114:Infinity":83,"s:115:16:115:Infinity":84,"s:116:14:116:Infinity":85,"s:117:4:117:Infinity":86,"s:118:4:118:Infinity":87,"s:119:4:119:Infinity":88,"s:120:4:120:Infinity":89,"s:121:4:121:Infinity":90,"s:122:4:122:Infinity":91,"s:125:22:127:Infinity":92,"f:125:22:125:28":20,"s:126:4:126:Infinity":93,"s:129:22:144:Infinity":94,"f:129:22:129:34":21,"s:130:19:130:Infinity":95,"s:131:22:131:Infinity":96,"s:132:4:143:Infinity":97,"s:133:6:133:Infinity":98,"s:134:6:134:Infinity":99,"s:136:23:136:Infinity":100,"s:137:6:137:Infinity":101,"s:138:6:138:Infinity":102,"s:139:6:139:Infinity":103,"s:140:6:140:Infinity":104,"s:141:6:141:Infinity":105,"s:142:6:142:Infinity":106,"s:146:2:151:46":107,"f:146:2:146:Infinity":22,"s:146:2:146:Infinity":108,"s:146:2:151:Infinity":109,"f:151:46:151:52":23,"s:151:52:151:112":110,"s:151:112:163:Infinity":111,"f:151:112:151:Infinity":24,"s:151:112:159:Infinity":112,"s:151:112:159:23":113,"s:159:23:159:22":114,"f:159:23:159:Infinity":25,"s:159:7:159:22":115,"b:159:7:159:22:159:7:159:22":8,"s:163:7:167:Infinity":116,"s:167:47:171:Infinity":117,"s:171:47:175:Infinity":118,"f:171:47:171:Infinity":26,"s:175:38:175:52":119,"s:175:52:179:Infinity":120,"f:175:52:175:Infinity":27,"s:179:38:179:52":121,"s:179:52:194:Infinity":122,"f:179:52:179:Infinity":28,"s:179:52:187:Infinity":123,"s:187:11:187:35":124,"s:187:35:191:Infinity":125,"f:187:35:187:Infinity":29,"s:187:11:191:Infinity":126,"b:187:11:187:25:187:11:191:Infinity":9,"f:187:11:187:25":30,"s:187:11:187:25":127,"s:187:11:191:102":128,"s:191:25:191:58":129,"s:191:58:191:Infinity":130,"f:191:58:191:102":31,"s:191:102:191:121":131,"s:191:121:191:Infinity":132,"s:194:11:198:68":133,"f:194:11:194:Infinity":32,"s:198:34:198:48":134,"s:198:48:198:Infinity":135,"f:198:48:198:68":33,"s:198:68:198:100":136,"s:198:100:204:75":137,"f:198:100:198:Infinity":34,"s:204:15:204:29":138,"s:204:29:204:Infinity":139,"f:204:29:204:75":35,"s:204:75:204:107":140,"s:204:107:223:Infinity":141,"f:204:107:204:Infinity":36,"s:204:107:210:Infinity":142,"s:210:7:210:31":143,"s:210:31:220:Infinity":144,"f:210:31:210:Infinity":37,"s:210:7:220:Infinity":145,"b:210:7:210:21:210:7:220:Infinity":10,"f:210:7:210:21":38,"s:210:7:210:21":146,"s:214:13:220:14":147,"f:214:31:214:32":39,"s:214:45:218:Infinity":148,"f:214:46:214:Infinity":40,"s:214:46:214:Infinity":149,"s:214:46:216:Infinity":150,"s:216:51:217:Infinity":151,"f:216:51:216:Infinity":41,"s:217:46:217:62":152,"s:217:62:218:Infinity":153,"s:218:52:218:Infinity":154,"s:220:14:220:Infinity":155,"s:223:7:236:Infinity":156,"f:223:7:223:Infinity":42,"s:228:11:236:12":157,"f:228:29:228:30":43,"s:228:49:234:Infinity":158,"f:228:50:228:Infinity":44,"s:228:50:228:Infinity":159,"s:228:50:230:Infinity":160,"s:230:43:232:Infinity":161,"s:232:64:234:49":162,"s:234:45:234:Infinity":163,"s:234:52:234:Infinity":164,"s:236:12:243:66":165,"s:243:66:246:67":166,"s:246:67:249:67":167,"s:249:67:257:63":168,"s:257:63:266:Infinity":169,"f:257:63:257:Infinity":45,"s:257:63:262:Infinity":170,"s:257:63:262:20":171,"s:262:20:262:19":172,"f:262:20:262:Infinity":46,"s:262:7:262:19":173,"b:262:7:262:19:262:7:262:19":11,"s:266:7:272:Infinity":174,"f:266:7:266:Infinity":47,"s:266:7:268:Infinity":175,"s:266:7:268:20":176,"s:268:20:268:19":177,"f:268:20:268:Infinity":48,"s:268:7:268:19":178,"b:268:7:268:19:268:7:268:19":12,"s:272:7:151:46":179,"f:272:7:272:Infinity":49,"s:272:7:151:33":180,"s:151:33:151:46":181,"b:277:26:277:Infinity:undefined:undefined:undefined:undefined":13,"s:277:26:277:Infinity":182}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/settings/ModelSettings.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/settings/ModelSettings.tsx","statementMap":{"0":{"start":{"line":24,"column":26},"end":{"line":26,"column":null}},"1":{"start":{"line":30,"column":13},"end":{"line":30,"column":null}},"2":{"start":{"line":31,"column":2},"end":{"line":33,"column":null}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":null}},"4":{"start":{"line":34,"column":13},"end":{"line":34,"column":null}},"5":{"start":{"line":35,"column":2},"end":{"line":37,"column":null}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":null}},"7":{"start":{"line":38,"column":2},"end":{"line":38,"column":null}},"8":{"start":{"line":41,"column":6},"end":{"line":249,"column":null}},"9":{"start":{"line":42,"column":26},"end":{"line":42,"column":null}},"10":{"start":{"line":43,"column":28},"end":{"line":43,"column":null}},"11":{"start":{"line":44,"column":24},"end":{"line":44,"column":null}},"12":{"start":{"line":45,"column":38},"end":{"line":45,"column":null}},"13":{"start":{"line":46,"column":38},"end":{"line":46,"column":null}},"14":{"start":{"line":49,"column":28},"end":{"line":54,"column":null}},"15":{"start":{"line":50,"column":4},"end":{"line":53,"column":null}},"16":{"start":{"line":51,"column":6},"end":{"line":51,"column":null}},"17":{"start":{"line":52,"column":6},"end":{"line":52,"column":null}},"18":{"start":{"line":56,"column":2},"end":{"line":58,"column":null}},"19":{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},"20":{"start":{"line":60,"column":22},"end":{"line":72,"column":null}},"21":{"start":{"line":61,"column":4},"end":{"line":61,"column":null}},"22":{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},"23":{"start":{"line":63,"column":4},"end":{"line":71,"column":null}},"24":{"start":{"line":64,"column":21},"end":{"line":64,"column":null}},"25":{"start":{"line":65,"column":6},"end":{"line":65,"column":null}},"26":{"start":{"line":67,"column":6},"end":{"line":67,"column":null}},"27":{"start":{"line":68,"column":6},"end":{"line":68,"column":null}},"28":{"start":{"line":70,"column":6},"end":{"line":70,"column":null}},"29":{"start":{"line":74,"column":20},"end":{"line":105,"column":null}},"30":{"start":{"line":75,"column":4},"end":{"line":75,"column":null}},"31":{"start":{"line":76,"column":4},"end":{"line":76,"column":null}},"32":{"start":{"line":78,"column":4},"end":{"line":104,"column":null}},"33":{"start":{"line":79,"column":6},"end":{"line":79,"column":null}},"34":{"start":{"line":81,"column":6},"end":{"line":97,"column":null}},"35":{"start":{"line":82,"column":8},"end":{"line":96,"column":null}},"36":{"start":{"line":83,"column":27},"end":{"line":83,"column":null}},"37":{"start":{"line":84,"column":10},"end":{"line":84,"column":null}},"38":{"start":{"line":86,"column":10},"end":{"line":91,"column":null}},"39":{"start":{"line":87,"column":12},"end":{"line":87,"column":null}},"40":{"start":{"line":88,"column":12},"end":{"line":88,"column":null}},"41":{"start":{"line":89,"column":12},"end":{"line":89,"column":null}},"42":{"start":{"line":90,"column":12},"end":{"line":90,"column":null}},"43":{"start":{"line":93,"column":10},"end":{"line":93,"column":null}},"44":{"start":{"line":94,"column":10},"end":{"line":94,"column":null}},"45":{"start":{"line":95,"column":10},"end":{"line":95,"column":null}},"46":{"start":{"line":99,"column":6},"end":{"line":99,"column":null}},"47":{"start":{"line":100,"column":6},"end":{"line":100,"column":null}},"48":{"start":{"line":101,"column":6},"end":{"line":101,"column":null}},"49":{"start":{"line":102,"column":6},"end":{"line":102,"column":null}},"50":{"start":{"line":103,"column":6},"end":{"line":103,"column":null}},"51":{"start":{"line":107,"column":27},"end":{"line":111,"column":null}},"52":{"start":{"line":108,"column":14},"end":{"line":108,"column":null}},"53":{"start":{"line":109,"column":4},"end":{"line":109,"column":null}},"54":{"start":{"line":109,"column":25},"end":{"line":109,"column":null}},"55":{"start":{"line":110,"column":4},"end":{"line":110,"column":null}},"56":{"start":{"line":110,"column":32},"end":{"line":110,"column":84}},"57":{"start":{"line":113,"column":23},"end":{"line":118,"column":null}},"58":{"start":{"line":114,"column":14},"end":{"line":114,"column":null}},"59":{"start":{"line":115,"column":4},"end":{"line":115,"column":null}},"60":{"start":{"line":115,"column":25},"end":{"line":115,"column":null}},"61":{"start":{"line":116,"column":18},"end":{"line":116,"column":null}},"62":{"start":{"line":116,"column":39},"end":{"line":116,"column":91}},"63":{"start":{"line":117,"column":4},"end":{"line":117,"column":null}},"64":{"start":{"line":120,"column":2},"end":{"line":122,"column":null}},"65":{"start":{"line":121,"column":4},"end":{"line":121,"column":null}},"66":{"start":{"line":124,"column":2},"end":{"line":128,"column":null}},"67":{"start":{"line":124,"column":2},"end":{"line":124,"column":null}},"68":{"start":{"line":124,"column":2},"end":{"line":128,"column":56}},"69":{"start":{"line":128,"column":56},"end":{"line":129,"column":null}},"70":{"start":{"line":129,"column":20},"end":{"line":129,"column":31}},"71":{"start":{"line":129,"column":41},"end":{"line":129,"column":null}},"72":{"start":{"line":129,"column":41},"end":{"line":138,"column":null}},"73":{"start":{"line":135,"column":16},"end":{"line":135,"column":25}},"74":{"start":{"line":135,"column":25},"end":{"line":135,"column":null}},"75":{"start":{"line":135,"column":25},"end":{"line":138,"column":null}},"76":{"start":{"line":138,"column":41},"end":{"line":138,"column":null}},"77":{"start":{"line":138,"column":41},"end":{"line":224,"column":null}},"78":{"start":{"line":145,"column":16},"end":{"line":145,"column":26}},"79":{"start":{"line":145,"column":26},"end":{"line":224,"column":null}},"80":{"start":{"line":145,"column":26},"end":{"line":145,"column":null}},"81":{"start":{"line":145,"column":26},"end":{"line":152,"column":null}},"82":{"start":{"line":149,"column":22},"end":{"line":149,"column":43}},"83":{"start":{"line":149,"column":53},"end":{"line":152,"column":null}},"84":{"start":{"line":151,"column":24},"end":{"line":151,"column":43}},"85":{"start":{"line":151,"column":43},"end":{"line":151,"column":null}},"86":{"start":{"line":151,"column":53},"end":{"line":151,"column":70}},"87":{"start":{"line":152,"column":23},"end":{"line":152,"column":36}},"88":{"start":{"line":152,"column":36},"end":{"line":155,"column":null}},"89":{"start":{"line":155,"column":20},"end":{"line":155,"column":42}},"90":{"start":{"line":155,"column":42},"end":{"line":155,"column":null}},"91":{"start":{"line":155,"column":42},"end":{"line":148,"column":null}},"92":{"start":{"line":147,"column":22},"end":{"line":147,"column":93}},"93":{"start":{"line":148,"column":23},"end":{"line":148,"column":89}},"94":{"start":{"line":148,"column":89},"end":{"line":148,"column":null}},"95":{"start":{"line":162,"column":18},"end":{"line":162,"column":39}},"96":{"start":{"line":162,"column":39},"end":{"line":224,"column":null}},"97":{"start":{"line":162,"column":39},"end":{"line":162,"column":null}},"98":{"start":{"line":162,"column":39},"end":{"line":203,"column":null}},"99":{"start":{"line":167,"column":18},"end":{"line":198,"column":null}},"100":{"start":{"line":167,"column":22},"end":{"line":167,"column":null}},"101":{"start":{"line":167,"column":22},"end":{"line":170,"column":null}},"102":{"start":{"line":170,"column":48},"end":{"line":170,"column":57}},"103":{"start":{"line":170,"column":57},"end":{"line":171,"column":null}},"104":{"start":{"line":171,"column":49},"end":{"line":171,"column":59}},"105":{"start":{"line":171,"column":59},"end":{"line":173,"column":null}},"106":{"start":{"line":172,"column":32},"end":{"line":172,"column":61}},"107":{"start":{"line":172,"column":61},"end":{"line":172,"column":null}},"108":{"start":{"line":172,"column":61},"end":{"line":173,"column":null}},"109":{"start":{"line":173,"column":61},"end":{"line":173,"column":101}},"110":{"start":{"line":173,"column":101},"end":{"line":173,"column":null}},"111":{"start":{"line":173,"column":101},"end":{"line":198,"column":null}},"112":{"start":{"line":177,"column":26},"end":{"line":177,"column":56}},"113":{"start":{"line":178,"column":30},"end":{"line":185,"column":null}},"114":{"start":{"line":180,"column":30},"end":{"line":180,"column":59}},"115":{"start":{"line":181,"column":34},"end":{"line":185,"column":null}},"116":{"start":{"line":181,"column":34},"end":{"line":181,"column":null}},"117":{"start":{"line":181,"column":34},"end":{"line":184,"column":65}},"118":{"start":{"line":184,"column":45},"end":{"line":184,"column":65}},"119":{"start":{"line":184,"column":65},"end":{"line":185,"column":null}},"120":{"start":{"line":184,"column":65},"end":{"line":185,"column":63}},"121":{"start":{"line":185,"column":63},"end":{"line":185,"column":null}},"122":{"start":{"line":185,"column":63},"end":{"line":196,"column":null}},"123":{"start":{"line":196,"column":52},"end":{"line":196,"column":90}},"124":{"start":{"line":196,"column":90},"end":{"line":198,"column":null}},"125":{"start":{"line":198,"column":103},"end":{"line":198,"column":null}},"126":{"start":{"line":203,"column":17},"end":{"line":203,"column":null}},"127":{"start":{"line":208,"column":20},"end":{"line":208,"column":69}},"128":{"start":{"line":208,"column":22},"end":{"line":208,"column":38}},"129":{"start":{"line":208,"column":69},"end":{"line":208,"column":null}},"130":{"start":{"line":208,"column":69},"end":{"line":210,"column":null}},"131":{"start":{"line":210,"column":59},"end":{"line":210,"column":82}},"132":{"start":{"line":210,"column":82},"end":{"line":218,"column":null}},"133":{"start":{"line":212,"column":25},"end":{"line":212,"column":43}},"134":{"start":{"line":213,"column":20},"end":{"line":216,"column":null}},"135":{"start":{"line":213,"column":25},"end":{"line":213,"column":null}},"136":{"start":{"line":213,"column":25},"end":{"line":215,"column":null}},"137":{"start":{"line":215,"column":53},"end":{"line":215,"column":63}},"138":{"start":{"line":215,"column":63},"end":{"line":216,"column":null}},"139":{"start":{"line":216,"column":53},"end":{"line":216,"column":75}},"140":{"start":{"line":216,"column":75},"end":{"line":216,"column":null}},"141":{"start":{"line":218,"column":19},"end":{"line":218,"column":null}},"142":{"start":{"line":224,"column":20},"end":{"line":224,"column":72}},"143":{"start":{"line":224,"column":72},"end":{"line":224,"column":null}},"144":{"start":{"line":224,"column":72},"end":{"line":232,"column":null}},"145":{"start":{"line":232,"column":16},"end":{"line":232,"column":52}},"146":{"start":{"line":232,"column":18},"end":{"line":232,"column":39}},"147":{"start":{"line":232,"column":52},"end":{"line":232,"column":null}},"148":{"start":{"line":232,"column":52},"end":{"line":239,"column":null}},"149":{"start":{"line":239,"column":16},"end":{"line":239,"column":53}},"150":{"start":{"line":239,"column":18},"end":{"line":239,"column":39}},"151":{"start":{"line":239,"column":53},"end":{"line":239,"column":null}},"152":{"start":{"line":239,"column":53},"end":{"line":128,"column":null}},"153":{"start":{"line":239,"column":53},"end":{"line":128,"column":77}},"154":{"start":{"line":128,"column":77},"end":{"line":128,"column":null}},"155":{"start":{"line":251,"column":29},"end":{"line":251,"column":null}}},"fnMap":{"0":{"name":"formatSize","decl":{"start":{"line":29,"column":9},"end":{"line":29,"column":20}},"loc":{"start":{"line":29,"column":43},"end":{"line":39,"column":null}},"line":29},"1":{"name":"(anonymous_1)","decl":{"start":{"line":41,"column":33},"end":{"line":41,"column":39}},"loc":{"start":{"line":41,"column":39},"end":{"line":249,"column":1}},"line":41},"2":{"name":"(anonymous_2)","decl":{"start":{"line":49,"column":28},"end":{"line":49,"column":34}},"loc":{"start":{"line":49,"column":34},"end":{"line":54,"column":null}},"line":49},"3":{"name":"(anonymous_3)","decl":{"start":{"line":56,"column":12},"end":{"line":56,"column":18}},"loc":{"start":{"line":56,"column":18},"end":{"line":58,"column":3}},"line":56},"4":{"name":"(anonymous_4)","decl":{"start":{"line":60,"column":22},"end":{"line":60,"column":34}},"loc":{"start":{"line":60,"column":34},"end":{"line":72,"column":null}},"line":60},"5":{"name":"(anonymous_5)","decl":{"start":{"line":74,"column":20},"end":{"line":74,"column":27}},"loc":{"start":{"line":74,"column":45},"end":{"line":105,"column":null}},"line":74},"6":{"name":"(anonymous_6)","decl":{"start":{"line":81,"column":40},"end":{"line":81,"column":52}},"loc":{"start":{"line":81,"column":52},"end":{"line":97,"column":9}},"line":81},"7":{"name":"(anonymous_7)","decl":{"start":{"line":107,"column":27},"end":{"line":107,"column":28}},"loc":{"start":{"line":107,"column":59},"end":{"line":111,"column":null}},"line":107},"8":{"name":"(anonymous_8)","decl":{"start":{"line":110,"column":26},"end":{"line":110,"column":32}},"loc":{"start":{"line":110,"column":32},"end":{"line":110,"column":84}},"line":110},"9":{"name":"(anonymous_9)","decl":{"start":{"line":113,"column":23},"end":{"line":113,"column":24}},"loc":{"start":{"line":113,"column":61},"end":{"line":118,"column":null}},"line":113},"10":{"name":"(anonymous_10)","decl":{"start":{"line":116,"column":33},"end":{"line":116,"column":39}},"loc":{"start":{"line":116,"column":39},"end":{"line":116,"column":91}},"line":116},"11":{"name":"(anonymous_11)","decl":{"start":{"line":120,"column":10},"end":{"line":120,"column":16}},"loc":{"start":{"line":120,"column":16},"end":{"line":122,"column":3}},"line":120},"12":{"name":"(anonymous_12)","decl":{"start":{"line":124,"column":2},"end":{"line":124,"column":null}},"loc":{"start":{"line":124,"column":2},"end":{"line":128,"column":null}},"line":124},"13":{"name":"(anonymous_13)","decl":{"start":{"line":129,"column":16},"end":{"line":129,"column":20}},"loc":{"start":{"line":129,"column":20},"end":{"line":129,"column":33}},"line":129},"14":{"name":"(anonymous_14)","decl":{"start":{"line":129,"column":33},"end":{"line":129,"column":41}},"loc":{"start":{"line":129,"column":41},"end":{"line":129,"column":null}},"line":129},"15":{"name":"(anonymous_15)","decl":{"start":{"line":135,"column":12},"end":{"line":135,"column":16}},"loc":{"start":{"line":135,"column":16},"end":{"line":135,"column":null}},"line":135},"16":{"name":"(anonymous_16)","decl":{"start":{"line":135,"column":25},"end":{"line":135,"column":null}},"loc":{"start":{"line":135,"column":25},"end":{"line":138,"column":null}},"line":135},"17":{"name":"(anonymous_17)","decl":{"start":{"line":145,"column":12},"end":{"line":145,"column":16}},"loc":{"start":{"line":145,"column":16},"end":{"line":145,"column":null}},"line":145},"18":{"name":"(anonymous_18)","decl":{"start":{"line":145,"column":26},"end":{"line":145,"column":null}},"loc":{"start":{"line":145,"column":26},"end":{"line":224,"column":null}},"line":145},"19":{"name":"(anonymous_19)","decl":{"start":{"line":149,"column":18},"end":{"line":149,"column":22}},"loc":{"start":{"line":149,"column":22},"end":{"line":149,"column":45}},"line":149},"20":{"name":"(anonymous_20)","decl":{"start":{"line":149,"column":53},"end":{"line":149,"column":null}},"loc":{"start":{"line":149,"column":53},"end":{"line":152,"column":null}},"line":149},"21":{"name":"(anonymous_21)","decl":{"start":{"line":151,"column":20},"end":{"line":151,"column":24}},"loc":{"start":{"line":151,"column":24},"end":{"line":151,"column":46}},"line":151},"22":{"name":"(anonymous_22)","decl":{"start":{"line":151,"column":43},"end":{"line":151,"column":46}},"loc":{"start":{"line":151,"column":43},"end":{"line":151,"column":null}},"line":151},"23":{"name":"(anonymous_23)","decl":{"start":{"line":151,"column":49},"end":{"line":151,"column":53}},"loc":{"start":{"line":151,"column":53},"end":{"line":151,"column":70}},"line":151},"24":{"name":"(anonymous_24)","decl":{"start":{"line":152,"column":18},"end":{"line":152,"column":23}},"loc":{"start":{"line":152,"column":23},"end":{"line":152,"column":36}},"line":152},"25":{"name":"(anonymous_25)","decl":{"start":{"line":155,"column":16},"end":{"line":155,"column":20}},"loc":{"start":{"line":155,"column":20},"end":{"line":155,"column":null}},"line":155},"26":{"name":"(anonymous_26)","decl":{"start":{"line":155,"column":42},"end":{"line":155,"column":null}},"loc":{"start":{"line":155,"column":42},"end":{"line":155,"column":null}},"line":155},"27":{"name":"(anonymous_27)","decl":{"start":{"line":162,"column":14},"end":{"line":162,"column":18}},"loc":{"start":{"line":162,"column":18},"end":{"line":162,"column":null}},"line":162},"28":{"name":"(anonymous_28)","decl":{"start":{"line":162,"column":39},"end":{"line":162,"column":null}},"loc":{"start":{"line":162,"column":39},"end":{"line":224,"column":null}},"line":162},"29":{"name":"(anonymous_29)","decl":{"start":{"line":167,"column":18},"end":{"line":167,"column":22}},"loc":{"start":{"line":167,"column":18},"end":{"line":198,"column":null}},"line":167},"30":{"name":"(anonymous_30)","decl":{"start":{"line":167,"column":22},"end":{"line":167,"column":null}},"loc":{"start":{"line":167,"column":22},"end":{"line":198,"column":null}},"line":167},"31":{"name":"(anonymous_31)","decl":{"start":{"line":170,"column":57},"end":{"line":170,"column":null}},"loc":{"start":{"line":171,"column":49},"end":{"line":171,"column":59}},"line":171},"32":{"name":"(anonymous_32)","decl":{"start":{"line":172,"column":28},"end":{"line":172,"column":32}},"loc":{"start":{"line":172,"column":32},"end":{"line":172,"column":null}},"line":172},"33":{"name":"(anonymous_33)","decl":{"start":{"line":172,"column":61},"end":{"line":172,"column":null}},"loc":{"start":{"line":172,"column":61},"end":{"line":173,"column":null}},"line":172},"34":{"name":"(anonymous_34)","decl":{"start":{"line":177,"column":22},"end":{"line":177,"column":26}},"loc":{"start":{"line":177,"column":26},"end":{"line":177,"column":null}},"line":177},"35":{"name":"(anonymous_35)","decl":{"start":{"line":178,"column":22},"end":{"line":178,"column":30}},"loc":{"start":{"line":178,"column":30},"end":{"line":185,"column":null}},"line":178},"36":{"name":"(anonymous_36)","decl":{"start":{"line":180,"column":26},"end":{"line":180,"column":30}},"loc":{"start":{"line":180,"column":30},"end":{"line":180,"column":null}},"line":180},"37":{"name":"(anonymous_37)","decl":{"start":{"line":181,"column":26},"end":{"line":181,"column":34}},"loc":{"start":{"line":181,"column":34},"end":{"line":185,"column":null}},"line":181},"38":{"name":"(anonymous_38)","decl":{"start":{"line":181,"column":34},"end":{"line":181,"column":null}},"loc":{"start":{"line":181,"column":34},"end":{"line":185,"column":null}},"line":181},"39":{"name":"(anonymous_39)","decl":{"start":{"line":184,"column":39},"end":{"line":184,"column":45}},"loc":{"start":{"line":184,"column":45},"end":{"line":184,"column":65}},"line":184},"40":{"name":"(anonymous_40)","decl":{"start":{"line":184,"column":65},"end":{"line":184,"column":null}},"loc":{"start":{"line":184,"column":65},"end":{"line":185,"column":63}},"line":184},"41":{"name":"(anonymous_41)","decl":{"start":{"line":185,"column":63},"end":{"line":185,"column":null}},"loc":{"start":{"line":185,"column":63},"end":{"line":185,"column":null}},"line":185},"42":{"name":"(anonymous_42)","decl":{"start":{"line":196,"column":90},"end":{"line":196,"column":null}},"loc":{"start":{"line":196,"column":90},"end":{"line":198,"column":null}},"line":196},"43":{"name":"(anonymous_43)","decl":{"start":{"line":208,"column":16},"end":{"line":208,"column":20}},"loc":{"start":{"line":208,"column":20},"end":{"line":208,"column":null}},"line":208},"44":{"name":"(anonymous_44)","decl":{"start":{"line":208,"column":22},"end":{"line":208,"column":29}},"loc":{"start":{"line":208,"column":22},"end":{"line":208,"column":38}},"line":208},"45":{"name":"(anonymous_45)","decl":{"start":{"line":208,"column":69},"end":{"line":208,"column":null}},"loc":{"start":{"line":208,"column":69},"end":{"line":218,"column":null}},"line":208},"46":{"name":"(anonymous_46)","decl":{"start":{"line":212,"column":21},"end":{"line":212,"column":25}},"loc":{"start":{"line":212,"column":25},"end":{"line":212,"column":null}},"line":212},"47":{"name":"(anonymous_47)","decl":{"start":{"line":213,"column":20},"end":{"line":213,"column":25}},"loc":{"start":{"line":213,"column":20},"end":{"line":216,"column":null}},"line":213},"48":{"name":"(anonymous_48)","decl":{"start":{"line":213,"column":25},"end":{"line":213,"column":null}},"loc":{"start":{"line":213,"column":25},"end":{"line":216,"column":null}},"line":213},"49":{"name":"(anonymous_49)","decl":{"start":{"line":215,"column":63},"end":{"line":215,"column":null}},"loc":{"start":{"line":216,"column":53},"end":{"line":216,"column":75}},"line":216},"50":{"name":"(anonymous_50)","decl":{"start":{"line":224,"column":16},"end":{"line":224,"column":20}},"loc":{"start":{"line":224,"column":20},"end":{"line":224,"column":null}},"line":224},"51":{"name":"(anonymous_51)","decl":{"start":{"line":224,"column":72},"end":{"line":224,"column":null}},"loc":{"start":{"line":224,"column":72},"end":{"line":224,"column":null}},"line":224},"52":{"name":"(anonymous_52)","decl":{"start":{"line":232,"column":12},"end":{"line":232,"column":16}},"loc":{"start":{"line":232,"column":16},"end":{"line":232,"column":null}},"line":232},"53":{"name":"(anonymous_53)","decl":{"start":{"line":232,"column":18},"end":{"line":232,"column":19}},"loc":{"start":{"line":232,"column":18},"end":{"line":232,"column":39}},"line":232},"54":{"name":"(anonymous_54)","decl":{"start":{"line":232,"column":52},"end":{"line":232,"column":null}},"loc":{"start":{"line":232,"column":52},"end":{"line":232,"column":null}},"line":232},"55":{"name":"(anonymous_55)","decl":{"start":{"line":239,"column":12},"end":{"line":239,"column":16}},"loc":{"start":{"line":239,"column":16},"end":{"line":239,"column":null}},"line":239},"56":{"name":"(anonymous_56)","decl":{"start":{"line":239,"column":18},"end":{"line":239,"column":19}},"loc":{"start":{"line":239,"column":18},"end":{"line":239,"column":39}},"line":239},"57":{"name":"(anonymous_57)","decl":{"start":{"line":239,"column":53},"end":{"line":239,"column":null}},"loc":{"start":{"line":239,"column":53},"end":{"line":239,"column":null}},"line":239}},"branchMap":{"0":{"loc":{"start":{"line":31,"column":2},"end":{"line":33,"column":null}},"type":"if","locations":[{"start":{"line":31,"column":2},"end":{"line":33,"column":null}},{"start":{},"end":{}}],"line":31},"1":{"loc":{"start":{"line":35,"column":2},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":2},"end":{"line":37,"column":null}},{"start":{},"end":{}}],"line":35},"2":{"loc":{"start":{"line":50,"column":4},"end":{"line":53,"column":null}},"type":"if","locations":[{"start":{"line":50,"column":4},"end":{"line":53,"column":null}},{"start":{},"end":{}}],"line":50},"3":{"loc":{"start":{"line":86,"column":10},"end":{"line":91,"column":null}},"type":"if","locations":[{"start":{"line":86,"column":10},"end":{"line":91,"column":null}},{"start":{},"end":{}}],"line":86},"4":{"loc":{"start":{"line":86,"column":14},"end":{"line":86,"column":118}},"type":"binary-expr","locations":[{"start":{"line":86,"column":14},"end":{"line":86,"column":41}},{"start":{"line":86,"column":41},"end":{"line":86,"column":80}},{"start":{"line":86,"column":80},"end":{"line":86,"column":118}}],"line":86},"5":{"loc":{"start":{"line":109,"column":4},"end":{"line":109,"column":null}},"type":"if","locations":[{"start":{"line":109,"column":4},"end":{"line":109,"column":null}},{"start":{},"end":{}}],"line":109},"6":{"loc":{"start":{"line":109,"column":8},"end":{"line":109,"column":25}},"type":"binary-expr","locations":[{"start":{"line":109,"column":8},"end":{"line":109,"column":14}},{"start":{"line":109,"column":14},"end":{"line":109,"column":25}}],"line":109},"7":{"loc":{"start":{"line":110,"column":32},"end":{"line":110,"column":84}},"type":"binary-expr","locations":[{"start":{"line":110,"column":32},"end":{"line":110,"column":56}},{"start":{"line":110,"column":56},"end":{"line":110,"column":84}}],"line":110},"8":{"loc":{"start":{"line":115,"column":4},"end":{"line":115,"column":null}},"type":"if","locations":[{"start":{"line":115,"column":4},"end":{"line":115,"column":null}},{"start":{},"end":{}}],"line":115},"9":{"loc":{"start":{"line":115,"column":8},"end":{"line":115,"column":25}},"type":"binary-expr","locations":[{"start":{"line":115,"column":8},"end":{"line":115,"column":14}},{"start":{"line":115,"column":14},"end":{"line":115,"column":25}}],"line":115},"10":{"loc":{"start":{"line":116,"column":39},"end":{"line":116,"column":91}},"type":"binary-expr","locations":[{"start":{"line":116,"column":39},"end":{"line":116,"column":63}},{"start":{"line":116,"column":63},"end":{"line":116,"column":91}}],"line":116},"11":{"loc":{"start":{"line":117,"column":11},"end":{"line":117,"column":null}},"type":"cond-expr","locations":[{"start":{"line":117,"column":19},"end":{"line":117,"column":32}},{"start":{"line":117,"column":32},"end":{"line":117,"column":null}}],"line":117},"12":{"loc":{"start":{"line":147,"column":42},"end":{"line":147,"column":91}},"type":"cond-expr","locations":[{"start":{"line":147,"column":64},"end":{"line":147,"column":78}},{"start":{"line":147,"column":78},"end":{"line":147,"column":91}}],"line":147},"13":{"loc":{"start":{"line":148,"column":38},"end":{"line":148,"column":87}},"type":"cond-expr","locations":[{"start":{"line":148,"column":60},"end":{"line":148,"column":74}},{"start":{"line":148,"column":74},"end":{"line":148,"column":87}}],"line":148},"14":{"loc":{"start":{"line":148,"column":89},"end":{"line":148,"column":null}},"type":"binary-expr","locations":[{"start":{"line":148,"column":89},"end":{"line":148,"column":null}},{"start":{"line":148,"column":89},"end":{"line":148,"column":null}}],"line":148},"15":{"loc":{"start":{"line":173,"column":72},"end":{"line":173,"column":100}},"type":"binary-expr","locations":[{"start":{"line":173,"column":72},"end":{"line":173,"column":99}},{"start":{"line":173,"column":99},"end":{"line":173,"column":100}}],"line":173},"16":{"loc":{"start":{"line":196,"column":52},"end":{"line":196,"column":90}},"type":"binary-expr","locations":[{"start":{"line":196,"column":52},"end":{"line":196,"column":78}},{"start":{"line":196,"column":78},"end":{"line":196,"column":90}}],"line":196},"17":{"loc":{"start":{"line":198,"column":72},"end":{"line":198,"column":100}},"type":"binary-expr","locations":[{"start":{"line":198,"column":72},"end":{"line":198,"column":99}},{"start":{"line":198,"column":99},"end":{"line":198,"column":100}}],"line":198},"18":{"loc":{"start":{"line":208,"column":20},"end":{"line":208,"column":69}},"type":"binary-expr","locations":[{"start":{"line":208,"column":20},"end":{"line":208,"column":42}},{"start":{"line":208,"column":42},"end":{"line":208,"column":69}}],"line":208},"19":{"loc":{"start":{"line":224,"column":22},"end":{"line":224,"column":72}},"type":"binary-expr","locations":[{"start":{"line":224,"column":22},"end":{"line":224,"column":43}},{"start":{"line":224,"column":43},"end":{"line":224,"column":72}}],"line":224},"20":{"loc":{"start":{"line":232,"column":16},"end":{"line":232,"column":52}},"type":"binary-expr","locations":[{"start":{"line":232,"column":16},"end":{"line":232,"column":43}},{"start":{"line":232,"column":43},"end":{"line":232,"column":52}}],"line":232},"21":{"loc":{"start":{"line":232,"column":18},"end":{"line":232,"column":39}},"type":"binary-expr","locations":[{"start":{"line":232,"column":18},"end":{"line":232,"column":30}},{"start":{"line":232,"column":30},"end":{"line":232,"column":39}}],"line":232},"22":{"loc":{"start":{"line":239,"column":16},"end":{"line":239,"column":53}},"type":"binary-expr","locations":[{"start":{"line":239,"column":16},"end":{"line":239,"column":43}},{"start":{"line":239,"column":43},"end":{"line":239,"column":53}}],"line":239},"23":{"loc":{"start":{"line":239,"column":18},"end":{"line":239,"column":39}},"type":"binary-expr","locations":[{"start":{"line":239,"column":18},"end":{"line":239,"column":30}},{"start":{"line":239,"column":30},"end":{"line":239,"column":39}}],"line":239},"24":{"loc":{"start":{"line":251,"column":29},"end":{"line":251,"column":null}},"type":"if","locations":[{"start":{"line":251,"column":29},"end":{"line":251,"column":null}},{"start":{},"end":{}}],"line":251}},"s":{"0":1,"1":13,"2":13,"3":9,"4":4,"5":4,"6":4,"7":0,"8":1,"9":18,"10":18,"11":18,"12":18,"13":18,"14":18,"15":19,"16":4,"17":4,"18":18,"19":18,"20":18,"21":20,"22":20,"23":20,"24":20,"25":17,"26":2,"27":2,"28":19,"29":18,"30":4,"31":4,"32":4,"33":4,"34":4,"35":2,"36":2,"37":2,"38":2,"39":1,"40":1,"41":1,"42":1,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":18,"52":57,"53":57,"54":0,"55":57,"56":30,"57":18,"58":4,"59":4,"60":0,"61":4,"62":5,"63":4,"64":18,"65":18,"66":18,"67":18,"68":18,"69":18,"70":39,"71":19,"72":18,"73":20,"74":2,"75":2,"76":2,"77":18,"78":34,"79":14,"80":14,"81":14,"82":16,"83":12,"84":14,"85":12,"86":14,"87":14,"88":14,"89":16,"90":2,"91":14,"92":16,"93":16,"94":14,"95":16,"96":12,"97":12,"98":12,"99":24,"100":24,"101":24,"102":24,"103":24,"104":24,"105":24,"106":28,"107":4,"108":4,"109":4,"110":4,"111":24,"112":34,"113":25,"114":29,"115":22,"116":22,"117":22,"118":4,"119":22,"120":27,"121":4,"122":4,"123":10,"124":10,"125":24,"126":12,"127":14,"128":14,"129":5,"130":5,"131":5,"132":5,"133":5,"134":9,"135":9,"136":9,"137":9,"138":9,"139":9,"140":9,"141":5,"142":14,"143":9,"144":18,"145":35,"146":53,"147":18,"148":18,"149":35,"150":53,"151":1,"152":18,"153":39,"154":18,"155":1},"f":{"0":13,"1":18,"2":19,"3":18,"4":20,"5":4,"6":2,"7":57,"8":30,"9":4,"10":5,"11":18,"12":18,"13":39,"14":19,"15":20,"16":2,"17":34,"18":28,"19":16,"20":12,"21":14,"22":12,"23":14,"24":14,"25":16,"26":18,"27":16,"28":24,"29":24,"30":48,"31":24,"32":28,"33":8,"34":34,"35":25,"36":29,"37":22,"38":22,"39":4,"40":27,"41":18,"42":10,"43":14,"44":14,"45":10,"46":5,"47":9,"48":18,"49":9,"50":14,"51":9,"52":35,"53":53,"54":18,"55":35,"56":53,"57":40},"b":{"0":[9,4],"1":[4,0],"2":[4,15],"3":[1,1],"4":[2,1,1],"5":[0,57],"6":[57,57],"7":[30,22],"8":[0,4],"9":[4,4],"10":[5,1],"11":[4,0],"12":[14,2],"13":[14,2],"14":[32,28],"15":[4,0],"16":[10,4],"17":[10,8],"18":[14,14],"19":[14,14],"20":[35,19],"21":[53,49],"22":[35,19],"23":[53,49],"24":[1,0]},"meta":{"lastBranch":25,"lastFunction":58,"lastStatement":156,"seen":{"s:24:26:26:Infinity":0,"f:29:9:29:20":0,"s:30:13:30:Infinity":1,"b:31:2:33:Infinity:undefined:undefined:undefined:undefined":0,"s:31:2:33:Infinity":2,"s:32:4:32:Infinity":3,"s:34:13:34:Infinity":4,"b:35:2:37:Infinity:undefined:undefined:undefined:undefined":1,"s:35:2:37:Infinity":5,"s:36:4:36:Infinity":6,"s:38:2:38:Infinity":7,"s:41:6:249:Infinity":8,"f:41:33:41:39":1,"s:42:26:42:Infinity":9,"s:43:28:43:Infinity":10,"s:44:24:44:Infinity":11,"s:45:38:45:Infinity":12,"s:46:38:46:Infinity":13,"s:49:28:54:Infinity":14,"f:49:28:49:34":2,"b:50:4:53:Infinity:undefined:undefined:undefined:undefined":2,"s:50:4:53:Infinity":15,"s:51:6:51:Infinity":16,"s:52:6:52:Infinity":17,"s:56:2:58:Infinity":18,"f:56:12:56:18":3,"s:57:4:57:Infinity":19,"s:60:22:72:Infinity":20,"f:60:22:60:34":4,"s:61:4:61:Infinity":21,"s:62:4:62:Infinity":22,"s:63:4:71:Infinity":23,"s:64:21:64:Infinity":24,"s:65:6:65:Infinity":25,"s:67:6:67:Infinity":26,"s:68:6:68:Infinity":27,"s:70:6:70:Infinity":28,"s:74:20:105:Infinity":29,"f:74:20:74:27":5,"s:75:4:75:Infinity":30,"s:76:4:76:Infinity":31,"s:78:4:104:Infinity":32,"s:79:6:79:Infinity":33,"s:81:6:97:Infinity":34,"f:81:40:81:52":6,"s:82:8:96:Infinity":35,"s:83:27:83:Infinity":36,"s:84:10:84:Infinity":37,"b:86:10:91:Infinity:undefined:undefined:undefined:undefined":3,"s:86:10:91:Infinity":38,"b:86:14:86:41:86:41:86:80:86:80:86:118":4,"s:87:12:87:Infinity":39,"s:88:12:88:Infinity":40,"s:89:12:89:Infinity":41,"s:90:12:90:Infinity":42,"s:93:10:93:Infinity":43,"s:94:10:94:Infinity":44,"s:95:10:95:Infinity":45,"s:99:6:99:Infinity":46,"s:100:6:100:Infinity":47,"s:101:6:101:Infinity":48,"s:102:6:102:Infinity":49,"s:103:6:103:Infinity":50,"s:107:27:111:Infinity":51,"f:107:27:107:28":7,"s:108:14:108:Infinity":52,"b:109:4:109:Infinity:undefined:undefined:undefined:undefined":5,"s:109:4:109:Infinity":53,"b:109:8:109:14:109:14:109:25":6,"s:109:25:109:Infinity":54,"s:110:4:110:Infinity":55,"f:110:26:110:32":8,"s:110:32:110:84":56,"b:110:32:110:56:110:56:110:84":7,"s:113:23:118:Infinity":57,"f:113:23:113:24":9,"s:114:14:114:Infinity":58,"b:115:4:115:Infinity:undefined:undefined:undefined:undefined":8,"s:115:4:115:Infinity":59,"b:115:8:115:14:115:14:115:25":9,"s:115:25:115:Infinity":60,"s:116:18:116:Infinity":61,"f:116:33:116:39":10,"s:116:39:116:91":62,"b:116:39:116:63:116:63:116:91":10,"s:117:4:117:Infinity":63,"b:117:19:117:32:117:32:117:Infinity":11,"s:120:2:122:Infinity":64,"f:120:10:120:16":11,"s:121:4:121:Infinity":65,"s:124:2:128:Infinity":66,"f:124:2:124:Infinity":12,"s:124:2:124:Infinity":67,"s:124:2:128:56":68,"s:128:56:129:Infinity":69,"f:129:16:129:20":13,"s:129:20:129:31":70,"f:129:33:129:41":14,"s:129:41:129:Infinity":71,"s:129:41:138:Infinity":72,"f:135:12:135:16":15,"s:135:16:135:25":73,"f:135:25:135:Infinity":16,"s:135:25:135:Infinity":74,"s:135:25:138:Infinity":75,"s:138:41:138:Infinity":76,"s:138:41:224:Infinity":77,"f:145:12:145:16":17,"s:145:16:145:26":78,"f:145:26:145:Infinity":18,"s:145:26:224:Infinity":79,"s:145:26:145:Infinity":80,"s:145:26:152:Infinity":81,"f:149:18:149:22":19,"s:149:22:149:43":82,"f:149:53:149:Infinity":20,"s:149:53:152:Infinity":83,"f:151:20:151:24":21,"s:151:24:151:43":84,"f:151:43:151:46":22,"s:151:43:151:Infinity":85,"f:151:49:151:53":23,"s:151:53:151:70":86,"f:152:18:152:23":24,"s:152:23:152:36":87,"s:152:36:155:Infinity":88,"f:155:16:155:20":25,"s:155:20:155:42":89,"f:155:42:155:Infinity":26,"s:155:42:155:Infinity":90,"s:155:42:148:Infinity":91,"s:147:22:147:93":92,"b:147:64:147:78:147:78:147:91":12,"s:148:23:148:89":93,"b:148:60:148:74:148:74:148:87":13,"s:148:89:148:Infinity":94,"b:148:89:148:Infinity:148:89:148:Infinity":14,"f:162:14:162:18":27,"s:162:18:162:39":95,"f:162:39:162:Infinity":28,"s:162:39:224:Infinity":96,"s:162:39:162:Infinity":97,"s:162:39:203:Infinity":98,"f:167:18:167:22":29,"s:167:18:198:Infinity":99,"f:167:22:167:Infinity":30,"s:167:22:167:Infinity":100,"s:167:22:170:Infinity":101,"s:170:48:170:57":102,"s:170:57:171:Infinity":103,"f:170:57:170:Infinity":31,"s:171:49:171:59":104,"s:171:59:173:Infinity":105,"f:172:28:172:32":32,"s:172:32:172:61":106,"f:172:61:172:Infinity":33,"s:172:61:172:Infinity":107,"s:172:61:173:Infinity":108,"s:173:61:173:101":109,"b:173:72:173:99:173:99:173:100":15,"s:173:101:173:Infinity":110,"s:173:101:198:Infinity":111,"f:177:22:177:26":34,"s:177:26:177:56":112,"f:178:22:178:30":35,"s:178:30:185:Infinity":113,"f:180:26:180:30":36,"s:180:30:180:59":114,"f:181:26:181:34":37,"s:181:34:185:Infinity":115,"f:181:34:181:Infinity":38,"s:181:34:181:Infinity":116,"s:181:34:184:65":117,"f:184:39:184:45":39,"s:184:45:184:65":118,"s:184:65:185:Infinity":119,"f:184:65:184:Infinity":40,"s:184:65:185:63":120,"s:185:63:185:Infinity":121,"f:185:63:185:Infinity":41,"s:185:63:196:Infinity":122,"s:196:52:196:90":123,"b:196:52:196:78:196:78:196:90":16,"s:196:90:198:Infinity":124,"f:196:90:196:Infinity":42,"b:198:72:198:99:198:99:198:100":17,"s:198:103:198:Infinity":125,"s:203:17:203:Infinity":126,"f:208:16:208:20":43,"s:208:20:208:69":127,"b:208:20:208:42:208:42:208:69":18,"f:208:22:208:29":44,"s:208:22:208:38":128,"f:208:69:208:Infinity":45,"s:208:69:208:Infinity":129,"s:208:69:210:Infinity":130,"s:210:59:210:82":131,"s:210:82:218:Infinity":132,"f:212:21:212:25":46,"s:212:25:212:43":133,"f:213:20:213:25":47,"s:213:20:216:Infinity":134,"f:213:25:213:Infinity":48,"s:213:25:213:Infinity":135,"s:213:25:215:Infinity":136,"s:215:53:215:63":137,"s:215:63:216:Infinity":138,"f:215:63:215:Infinity":49,"s:216:53:216:75":139,"s:216:75:216:Infinity":140,"s:218:19:218:Infinity":141,"f:224:16:224:20":50,"s:224:20:224:72":142,"b:224:22:224:43:224:43:224:72":19,"f:224:72:224:Infinity":51,"s:224:72:224:Infinity":143,"s:224:72:232:Infinity":144,"f:232:12:232:16":52,"s:232:16:232:52":145,"b:232:16:232:43:232:43:232:52":20,"f:232:18:232:19":53,"s:232:18:232:39":146,"b:232:18:232:30:232:30:232:39":21,"f:232:52:232:Infinity":54,"s:232:52:232:Infinity":147,"s:232:52:239:Infinity":148,"f:239:12:239:16":55,"s:239:16:239:53":149,"b:239:16:239:43:239:43:239:53":22,"f:239:18:239:19":56,"s:239:18:239:39":150,"b:239:18:239:30:239:30:239:39":23,"f:239:53:239:Infinity":57,"s:239:53:239:Infinity":151,"s:239:53:128:Infinity":152,"s:239:53:128:77":153,"s:128:77:128:Infinity":154,"b:251:29:251:Infinity:undefined:undefined:undefined:undefined":24,"s:251:29:251:Infinity":155}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/sidebar/SchemaBrowser.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/sidebar/SchemaBrowser.tsx","statementMap":{"0":{"start":{"line":6,"column":6},"end":{"line":66,"column":null}},"1":{"start":{"line":7,"column":2},"end":{"line":11,"column":null}},"2":{"start":{"line":8,"column":4},"end":{"line":10,"column":null}},"3":{"start":{"line":9,"column":6},"end":{"line":9,"column":null}},"4":{"start":{"line":13,"column":21},"end":{"line":21,"column":null}},"5":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},"6":{"start":{"line":14,"column":21},"end":{"line":14,"column":null}},"7":{"start":{"line":15,"column":4},"end":{"line":20,"column":null}},"8":{"start":{"line":16,"column":19},"end":{"line":16,"column":null}},"9":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"10":{"start":{"line":19,"column":6},"end":{"line":19,"column":null}},"11":{"start":{"line":23,"column":2},"end":{"line":62,"column":null}},"12":{"start":{"line":23,"column":2},"end":{"line":23,"column":null}},"13":{"start":{"line":26,"column":16},"end":{"line":26,"column":26}},"14":{"start":{"line":27,"column":10},"end":{"line":57,"column":null}},"15":{"start":{"line":27,"column":11},"end":{"line":27,"column":null}},"16":{"start":{"line":27,"column":11},"end":{"line":30,"column":null}},"17":{"start":{"line":30,"column":32},"end":{"line":30,"column":54}},"18":{"start":{"line":30,"column":54},"end":{"line":37,"column":null}},"19":{"start":{"line":32,"column":17},"end":{"line":37,"column":18}},"20":{"start":{"line":32,"column":38},"end":{"line":35,"column":null}},"21":{"start":{"line":32,"column":43},"end":{"line":32,"column":null}},"22":{"start":{"line":32,"column":43},"end":{"line":34,"column":null}},"23":{"start":{"line":34,"column":51},"end":{"line":35,"column":null}},"24":{"start":{"line":35,"column":47},"end":{"line":35,"column":74}},"25":{"start":{"line":35,"column":74},"end":{"line":35,"column":null}},"26":{"start":{"line":37,"column":18},"end":{"line":41,"column":null}},"27":{"start":{"line":41,"column":32},"end":{"line":41,"column":54}},"28":{"start":{"line":41,"column":54},"end":{"line":48,"column":null}},"29":{"start":{"line":43,"column":17},"end":{"line":48,"column":18}},"30":{"start":{"line":43,"column":38},"end":{"line":46,"column":null}},"31":{"start":{"line":43,"column":43},"end":{"line":43,"column":null}},"32":{"start":{"line":43,"column":43},"end":{"line":45,"column":null}},"33":{"start":{"line":45,"column":51},"end":{"line":46,"column":null}},"34":{"start":{"line":46,"column":47},"end":{"line":46,"column":74}},"35":{"start":{"line":46,"column":74},"end":{"line":46,"column":null}},"36":{"start":{"line":48,"column":18},"end":{"line":53,"column":null}},"37":{"start":{"line":53,"column":42},"end":{"line":53,"column":57}},"38":{"start":{"line":53,"column":57},"end":{"line":57,"column":null}},"39":{"start":{"line":57,"column":42},"end":{"line":57,"column":57}},"40":{"start":{"line":57,"column":57},"end":{"line":57,"column":null}},"41":{"start":{"line":62,"column":9},"end":{"line":62,"column":null}},"42":{"start":{"line":68,"column":29},"end":{"line":68,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":33},"end":{"line":6,"column":39}},"loc":{"start":{"line":6,"column":39},"end":{"line":66,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":15},"end":{"line":7,"column":21}},"loc":{"start":{"line":7,"column":21},"end":{"line":11,"column":3}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":21},"end":{"line":13,"column":33}},"loc":{"start":{"line":13,"column":33},"end":{"line":21,"column":null}},"line":13},"3":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":2},"end":{"line":23,"column":null}},"loc":{"start":{"line":23,"column":2},"end":{"line":62,"column":null}},"line":23},"4":{"name":"(anonymous_4)","decl":{"start":{"line":26,"column":12},"end":{"line":26,"column":16}},"loc":{"start":{"line":26,"column":16},"end":{"line":26,"column":null}},"line":26},"5":{"name":"(anonymous_5)","decl":{"start":{"line":27,"column":10},"end":{"line":27,"column":11}},"loc":{"start":{"line":27,"column":10},"end":{"line":57,"column":null}},"line":27},"6":{"name":"(anonymous_6)","decl":{"start":{"line":27,"column":11},"end":{"line":27,"column":null}},"loc":{"start":{"line":27,"column":11},"end":{"line":57,"column":null}},"line":27},"7":{"name":"(anonymous_7)","decl":{"start":{"line":30,"column":54},"end":{"line":30,"column":null}},"loc":{"start":{"line":32,"column":17},"end":{"line":37,"column":18}},"line":32},"8":{"name":"(anonymous_8)","decl":{"start":{"line":32,"column":38},"end":{"line":32,"column":43}},"loc":{"start":{"line":32,"column":38},"end":{"line":35,"column":null}},"line":32},"9":{"name":"(anonymous_9)","decl":{"start":{"line":32,"column":43},"end":{"line":32,"column":null}},"loc":{"start":{"line":32,"column":43},"end":{"line":35,"column":null}},"line":32},"10":{"name":"(anonymous_10)","decl":{"start":{"line":34,"column":51},"end":{"line":34,"column":null}},"loc":{"start":{"line":35,"column":47},"end":{"line":35,"column":74}},"line":35},"11":{"name":"(anonymous_11)","decl":{"start":{"line":37,"column":18},"end":{"line":37,"column":null}},"loc":{"start":{"line":41,"column":32},"end":{"line":41,"column":54}},"line":41},"12":{"name":"(anonymous_12)","decl":{"start":{"line":41,"column":54},"end":{"line":41,"column":null}},"loc":{"start":{"line":43,"column":17},"end":{"line":48,"column":18}},"line":43},"13":{"name":"(anonymous_13)","decl":{"start":{"line":43,"column":38},"end":{"line":43,"column":43}},"loc":{"start":{"line":43,"column":38},"end":{"line":46,"column":null}},"line":43},"14":{"name":"(anonymous_14)","decl":{"start":{"line":43,"column":43},"end":{"line":43,"column":null}},"loc":{"start":{"line":43,"column":43},"end":{"line":46,"column":null}},"line":43},"15":{"name":"(anonymous_15)","decl":{"start":{"line":45,"column":51},"end":{"line":45,"column":null}},"loc":{"start":{"line":46,"column":47},"end":{"line":46,"column":74}},"line":46},"16":{"name":"(anonymous_16)","decl":{"start":{"line":48,"column":18},"end":{"line":48,"column":null}},"loc":{"start":{"line":53,"column":42},"end":{"line":53,"column":57}},"line":53},"17":{"name":"(anonymous_17)","decl":{"start":{"line":53,"column":57},"end":{"line":53,"column":null}},"loc":{"start":{"line":57,"column":42},"end":{"line":57,"column":57}},"line":57}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":null}},"type":"if","locations":[{"start":{"line":8,"column":4},"end":{"line":10,"column":null}},{"start":{},"end":{}}],"line":8},"1":{"loc":{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},"type":"if","locations":[{"start":{"line":14,"column":4},"end":{"line":14,"column":null}},{"start":{},"end":{}}],"line":14},"2":{"loc":{"start":{"line":35,"column":47},"end":{"line":35,"column":74}},"type":"binary-expr","locations":[{"start":{"line":35,"column":47},"end":{"line":35,"column":73}},{"start":{"line":35,"column":73},"end":{"line":35,"column":74}}],"line":35},"3":{"loc":{"start":{"line":46,"column":47},"end":{"line":46,"column":74}},"type":"binary-expr","locations":[{"start":{"line":46,"column":47},"end":{"line":46,"column":73}},{"start":{"line":46,"column":73},"end":{"line":46,"column":74}}],"line":46},"4":{"loc":{"start":{"line":68,"column":29},"end":{"line":68,"column":null}},"type":"if","locations":[{"start":{"line":68,"column":29},"end":{"line":68,"column":null}},{"start":{},"end":{}}],"line":68}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0]},"meta":{"lastBranch":5,"lastFunction":18,"lastStatement":43,"seen":{"s:6:6:66:Infinity":0,"f:6:33:6:39":0,"s:7:2:11:Infinity":1,"f:7:15:7:21":1,"b:8:4:10:Infinity:undefined:undefined:undefined:undefined":0,"s:8:4:10:Infinity":2,"s:9:6:9:Infinity":3,"s:13:21:21:Infinity":4,"f:13:21:13:33":2,"b:14:4:14:Infinity:undefined:undefined:undefined:undefined":1,"s:14:4:14:Infinity":5,"s:14:21:14:Infinity":6,"s:15:4:20:Infinity":7,"s:16:19:16:Infinity":8,"s:17:6:17:Infinity":9,"s:19:6:19:Infinity":10,"s:23:2:62:Infinity":11,"f:23:2:23:Infinity":3,"s:23:2:23:Infinity":12,"f:26:12:26:16":4,"s:26:16:26:26":13,"f:27:10:27:11":5,"s:27:10:57:Infinity":14,"f:27:11:27:Infinity":6,"s:27:11:27:Infinity":15,"s:27:11:30:Infinity":16,"s:30:32:30:54":17,"s:30:54:37:Infinity":18,"f:30:54:30:Infinity":7,"s:32:17:37:18":19,"f:32:38:32:43":8,"s:32:38:35:Infinity":20,"f:32:43:32:Infinity":9,"s:32:43:32:Infinity":21,"s:32:43:34:Infinity":22,"s:34:51:35:Infinity":23,"f:34:51:34:Infinity":10,"s:35:47:35:74":24,"b:35:47:35:73:35:73:35:74":2,"s:35:74:35:Infinity":25,"s:37:18:41:Infinity":26,"f:37:18:37:Infinity":11,"s:41:32:41:54":27,"s:41:54:48:Infinity":28,"f:41:54:41:Infinity":12,"s:43:17:48:18":29,"f:43:38:43:43":13,"s:43:38:46:Infinity":30,"f:43:43:43:Infinity":14,"s:43:43:43:Infinity":31,"s:43:43:45:Infinity":32,"s:45:51:46:Infinity":33,"f:45:51:45:Infinity":15,"s:46:47:46:74":34,"b:46:47:46:73:46:73:46:74":3,"s:46:74:46:Infinity":35,"s:48:18:53:Infinity":36,"f:48:18:48:Infinity":16,"s:53:42:53:57":37,"s:53:57:57:Infinity":38,"f:53:57:53:Infinity":17,"s:57:42:57:57":39,"s:57:57:57:Infinity":40,"s:62:9:62:Infinity":41,"b:68:29:68:Infinity:undefined:undefined:undefined:undefined":4,"s:68:29:68:Infinity":42}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/sidebar/Sidebar.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/sidebar/Sidebar.tsx","statementMap":{"0":{"start":{"line":15,"column":28},"end":{"line":19,"column":null}},"1":{"start":{"line":22,"column":32},"end":{"line":26,"column":null}},"2":{"start":{"line":29,"column":30},"end":{"line":30,"column":null}},"3":{"start":{"line":33,"column":6},"end":{"line":162,"column":null}},"4":{"start":{"line":34,"column":38},"end":{"line":34,"column":null}},"5":{"start":{"line":36,"column":21},"end":{"line":43,"column":null}},"6":{"start":{"line":37,"column":18},"end":{"line":37,"column":null}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}},"8":{"start":{"line":39,"column":18},"end":{"line":39,"column":null}},"9":{"start":{"line":40,"column":4},"end":{"line":40,"column":null}},"10":{"start":{"line":41,"column":19},"end":{"line":41,"column":null}},"11":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},"12":{"start":{"line":45,"column":25},"end":{"line":47,"column":null}},"13":{"start":{"line":46,"column":4},"end":{"line":46,"column":null}},"14":{"start":{"line":49,"column":24},"end":{"line":52,"column":null}},"15":{"start":{"line":50,"column":4},"end":{"line":50,"column":null}},"16":{"start":{"line":51,"column":4},"end":{"line":51,"column":null}},"17":{"start":{"line":54,"column":2},"end":{"line":159,"column":null}},"18":{"start":{"line":54,"column":2},"end":{"line":54,"column":null}},"19":{"start":{"line":54,"column":2},"end":{"line":70,"column":null}},"20":{"start":{"line":58,"column":12},"end":{"line":62,"column":null}},"21":{"start":{"line":58,"column":16},"end":{"line":58,"column":null}},"22":{"start":{"line":58,"column":16},"end":{"line":61,"column":52}},"23":{"start":{"line":61,"column":29},"end":{"line":61,"column":52}},"24":{"start":{"line":61,"column":52},"end":{"line":64,"column":null}},"25":{"start":{"line":64,"column":38},"end":{"line":64,"column":47}},"26":{"start":{"line":64,"column":47},"end":{"line":65,"column":null}},"27":{"start":{"line":65,"column":39},"end":{"line":65,"column":49}},"28":{"start":{"line":65,"column":49},"end":{"line":67,"column":null}},"29":{"start":{"line":66,"column":24},"end":{"line":66,"column":39}},"30":{"start":{"line":66,"column":39},"end":{"line":66,"column":null}},"31":{"start":{"line":66,"column":39},"end":{"line":67,"column":null}},"32":{"start":{"line":67,"column":44},"end":{"line":67,"column":57}},"33":{"start":{"line":67,"column":57},"end":{"line":67,"column":null}},"34":{"start":{"line":67,"column":57},"end":{"line":62,"column":null}},"35":{"start":{"line":67,"column":57},"end":{"line":60,"column":77}},"36":{"start":{"line":62,"column":21},"end":{"line":62,"column":33}},"37":{"start":{"line":62,"column":33},"end":{"line":62,"column":null}},"38":{"start":{"line":70,"column":11},"end":{"line":91,"column":null}},"39":{"start":{"line":79,"column":12},"end":{"line":83,"column":null}},"40":{"start":{"line":79,"column":16},"end":{"line":79,"column":null}},"41":{"start":{"line":79,"column":16},"end":{"line":82,"column":52}},"42":{"start":{"line":82,"column":29},"end":{"line":82,"column":52}},"43":{"start":{"line":82,"column":52},"end":{"line":85,"column":null}},"44":{"start":{"line":85,"column":38},"end":{"line":85,"column":47}},"45":{"start":{"line":85,"column":47},"end":{"line":86,"column":null}},"46":{"start":{"line":86,"column":39},"end":{"line":86,"column":49}},"47":{"start":{"line":86,"column":49},"end":{"line":88,"column":null}},"48":{"start":{"line":87,"column":24},"end":{"line":87,"column":39}},"49":{"start":{"line":87,"column":39},"end":{"line":87,"column":null}},"50":{"start":{"line":87,"column":39},"end":{"line":88,"column":null}},"51":{"start":{"line":88,"column":44},"end":{"line":88,"column":57}},"52":{"start":{"line":88,"column":57},"end":{"line":88,"column":null}},"53":{"start":{"line":88,"column":57},"end":{"line":83,"column":null}},"54":{"start":{"line":88,"column":57},"end":{"line":81,"column":77}},"55":{"start":{"line":83,"column":21},"end":{"line":83,"column":33}},"56":{"start":{"line":83,"column":33},"end":{"line":83,"column":null}},"57":{"start":{"line":91,"column":11},"end":{"line":112,"column":null}},"58":{"start":{"line":100,"column":12},"end":{"line":104,"column":null}},"59":{"start":{"line":100,"column":16},"end":{"line":100,"column":null}},"60":{"start":{"line":100,"column":16},"end":{"line":103,"column":52}},"61":{"start":{"line":103,"column":29},"end":{"line":103,"column":52}},"62":{"start":{"line":103,"column":52},"end":{"line":106,"column":null}},"63":{"start":{"line":106,"column":38},"end":{"line":106,"column":47}},"64":{"start":{"line":106,"column":47},"end":{"line":107,"column":null}},"65":{"start":{"line":107,"column":39},"end":{"line":107,"column":49}},"66":{"start":{"line":107,"column":49},"end":{"line":109,"column":null}},"67":{"start":{"line":108,"column":24},"end":{"line":108,"column":39}},"68":{"start":{"line":108,"column":39},"end":{"line":108,"column":null}},"69":{"start":{"line":108,"column":39},"end":{"line":109,"column":null}},"70":{"start":{"line":109,"column":44},"end":{"line":109,"column":57}},"71":{"start":{"line":109,"column":57},"end":{"line":109,"column":null}},"72":{"start":{"line":109,"column":57},"end":{"line":104,"column":null}},"73":{"start":{"line":109,"column":57},"end":{"line":102,"column":77}},"74":{"start":{"line":104,"column":21},"end":{"line":104,"column":33}},"75":{"start":{"line":104,"column":33},"end":{"line":104,"column":null}},"76":{"start":{"line":112,"column":11},"end":{"line":133,"column":null}},"77":{"start":{"line":121,"column":12},"end":{"line":125,"column":null}},"78":{"start":{"line":121,"column":16},"end":{"line":121,"column":null}},"79":{"start":{"line":121,"column":16},"end":{"line":124,"column":52}},"80":{"start":{"line":124,"column":29},"end":{"line":124,"column":52}},"81":{"start":{"line":124,"column":52},"end":{"line":127,"column":null}},"82":{"start":{"line":127,"column":38},"end":{"line":127,"column":47}},"83":{"start":{"line":127,"column":47},"end":{"line":128,"column":null}},"84":{"start":{"line":128,"column":39},"end":{"line":128,"column":49}},"85":{"start":{"line":128,"column":49},"end":{"line":130,"column":null}},"86":{"start":{"line":129,"column":24},"end":{"line":129,"column":39}},"87":{"start":{"line":129,"column":39},"end":{"line":129,"column":null}},"88":{"start":{"line":129,"column":39},"end":{"line":130,"column":null}},"89":{"start":{"line":130,"column":44},"end":{"line":130,"column":57}},"90":{"start":{"line":130,"column":57},"end":{"line":130,"column":null}},"91":{"start":{"line":130,"column":57},"end":{"line":125,"column":null}},"92":{"start":{"line":130,"column":57},"end":{"line":123,"column":77}},"93":{"start":{"line":125,"column":21},"end":{"line":125,"column":33}},"94":{"start":{"line":125,"column":33},"end":{"line":125,"column":null}},"95":{"start":{"line":133,"column":11},"end":{"line":141,"column":77}},"96":{"start":{"line":141,"column":56},"end":{"line":141,"column":77}},"97":{"start":{"line":141,"column":77},"end":{"line":155,"column":null}},"98":{"start":{"line":145,"column":17},"end":{"line":145,"column":30}},"99":{"start":{"line":146,"column":12},"end":{"line":148,"column":null}},"100":{"start":{"line":146,"column":14},"end":{"line":146,"column":null}},"101":{"start":{"line":146,"column":14},"end":{"line":149,"column":46}},"102":{"start":{"line":149,"column":29},"end":{"line":149,"column":46}},"103":{"start":{"line":149,"column":46},"end":{"line":150,"column":null}},"104":{"start":{"line":150,"column":158},"end":{"line":152,"column":null}},"105":{"start":{"line":152,"column":113},"end":{"line":153,"column":null}},"106":{"start":{"line":153,"column":39},"end":{"line":148,"column":null}},"107":{"start":{"line":148,"column":69},"end":{"line":148,"column":null}},"108":{"start":{"line":155,"column":11},"end":{"line":159,"column":null}},"109":{"start":{"line":159,"column":30},"end":{"line":159,"column":46}},"110":{"start":{"line":159,"column":63},"end":{"line":159,"column":87}},"111":{"start":{"line":159,"column":107},"end":{"line":159,"column":null}},"112":{"start":{"line":164,"column":23},"end":{"line":164,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":33,"column":27},"end":{"line":33,"column":33}},"loc":{"start":{"line":33,"column":33},"end":{"line":162,"column":1}},"line":33},"1":{"name":"(anonymous_1)","decl":{"start":{"line":36,"column":21},"end":{"line":36,"column":28}},"loc":{"start":{"line":36,"column":47},"end":{"line":43,"column":null}},"line":36},"2":{"name":"(anonymous_2)","decl":{"start":{"line":45,"column":25},"end":{"line":45,"column":26}},"loc":{"start":{"line":45,"column":41},"end":{"line":47,"column":null}},"line":45},"3":{"name":"(anonymous_3)","decl":{"start":{"line":49,"column":24},"end":{"line":49,"column":31}},"loc":{"start":{"line":49,"column":46},"end":{"line":52,"column":null}},"line":49},"4":{"name":"(anonymous_4)","decl":{"start":{"line":54,"column":2},"end":{"line":54,"column":null}},"loc":{"start":{"line":54,"column":2},"end":{"line":159,"column":null}},"line":54},"5":{"name":"(anonymous_5)","decl":{"start":{"line":58,"column":12},"end":{"line":58,"column":16}},"loc":{"start":{"line":58,"column":12},"end":{"line":62,"column":null}},"line":58},"6":{"name":"(anonymous_6)","decl":{"start":{"line":58,"column":16},"end":{"line":58,"column":null}},"loc":{"start":{"line":58,"column":16},"end":{"line":62,"column":null}},"line":58},"7":{"name":"(anonymous_7)","decl":{"start":{"line":61,"column":23},"end":{"line":61,"column":29}},"loc":{"start":{"line":61,"column":29},"end":{"line":61,"column":52}},"line":61},"8":{"name":"(anonymous_8)","decl":{"start":{"line":61,"column":52},"end":{"line":61,"column":null}},"loc":{"start":{"line":64,"column":38},"end":{"line":64,"column":47}},"line":64},"9":{"name":"(anonymous_9)","decl":{"start":{"line":64,"column":47},"end":{"line":64,"column":null}},"loc":{"start":{"line":65,"column":39},"end":{"line":65,"column":49}},"line":65},"10":{"name":"(anonymous_10)","decl":{"start":{"line":66,"column":20},"end":{"line":66,"column":24}},"loc":{"start":{"line":66,"column":24},"end":{"line":66,"column":null}},"line":66},"11":{"name":"(anonymous_11)","decl":{"start":{"line":66,"column":39},"end":{"line":66,"column":null}},"loc":{"start":{"line":66,"column":39},"end":{"line":67,"column":null}},"line":66},"12":{"name":"(anonymous_12)","decl":{"start":{"line":67,"column":57},"end":{"line":67,"column":null}},"loc":{"start":{"line":67,"column":57},"end":{"line":62,"column":null}},"line":67},"13":{"name":"(anonymous_13)","decl":{"start":{"line":79,"column":12},"end":{"line":79,"column":16}},"loc":{"start":{"line":79,"column":12},"end":{"line":83,"column":null}},"line":79},"14":{"name":"(anonymous_14)","decl":{"start":{"line":79,"column":16},"end":{"line":79,"column":null}},"loc":{"start":{"line":79,"column":16},"end":{"line":83,"column":null}},"line":79},"15":{"name":"(anonymous_15)","decl":{"start":{"line":82,"column":23},"end":{"line":82,"column":29}},"loc":{"start":{"line":82,"column":29},"end":{"line":82,"column":52}},"line":82},"16":{"name":"(anonymous_16)","decl":{"start":{"line":82,"column":52},"end":{"line":82,"column":null}},"loc":{"start":{"line":85,"column":38},"end":{"line":85,"column":47}},"line":85},"17":{"name":"(anonymous_17)","decl":{"start":{"line":85,"column":47},"end":{"line":85,"column":null}},"loc":{"start":{"line":86,"column":39},"end":{"line":86,"column":49}},"line":86},"18":{"name":"(anonymous_18)","decl":{"start":{"line":87,"column":20},"end":{"line":87,"column":24}},"loc":{"start":{"line":87,"column":24},"end":{"line":87,"column":null}},"line":87},"19":{"name":"(anonymous_19)","decl":{"start":{"line":87,"column":39},"end":{"line":87,"column":null}},"loc":{"start":{"line":87,"column":39},"end":{"line":88,"column":null}},"line":87},"20":{"name":"(anonymous_20)","decl":{"start":{"line":88,"column":57},"end":{"line":88,"column":null}},"loc":{"start":{"line":88,"column":57},"end":{"line":83,"column":null}},"line":88},"21":{"name":"(anonymous_21)","decl":{"start":{"line":100,"column":12},"end":{"line":100,"column":16}},"loc":{"start":{"line":100,"column":12},"end":{"line":104,"column":null}},"line":100},"22":{"name":"(anonymous_22)","decl":{"start":{"line":100,"column":16},"end":{"line":100,"column":null}},"loc":{"start":{"line":100,"column":16},"end":{"line":104,"column":null}},"line":100},"23":{"name":"(anonymous_23)","decl":{"start":{"line":103,"column":23},"end":{"line":103,"column":29}},"loc":{"start":{"line":103,"column":29},"end":{"line":103,"column":52}},"line":103},"24":{"name":"(anonymous_24)","decl":{"start":{"line":103,"column":52},"end":{"line":103,"column":null}},"loc":{"start":{"line":106,"column":38},"end":{"line":106,"column":47}},"line":106},"25":{"name":"(anonymous_25)","decl":{"start":{"line":106,"column":47},"end":{"line":106,"column":null}},"loc":{"start":{"line":107,"column":39},"end":{"line":107,"column":49}},"line":107},"26":{"name":"(anonymous_26)","decl":{"start":{"line":108,"column":20},"end":{"line":108,"column":24}},"loc":{"start":{"line":108,"column":24},"end":{"line":108,"column":null}},"line":108},"27":{"name":"(anonymous_27)","decl":{"start":{"line":108,"column":39},"end":{"line":108,"column":null}},"loc":{"start":{"line":108,"column":39},"end":{"line":109,"column":null}},"line":108},"28":{"name":"(anonymous_28)","decl":{"start":{"line":109,"column":57},"end":{"line":109,"column":null}},"loc":{"start":{"line":109,"column":57},"end":{"line":104,"column":null}},"line":109},"29":{"name":"(anonymous_29)","decl":{"start":{"line":121,"column":12},"end":{"line":121,"column":16}},"loc":{"start":{"line":121,"column":12},"end":{"line":125,"column":null}},"line":121},"30":{"name":"(anonymous_30)","decl":{"start":{"line":121,"column":16},"end":{"line":121,"column":null}},"loc":{"start":{"line":121,"column":16},"end":{"line":125,"column":null}},"line":121},"31":{"name":"(anonymous_31)","decl":{"start":{"line":124,"column":23},"end":{"line":124,"column":29}},"loc":{"start":{"line":124,"column":29},"end":{"line":124,"column":52}},"line":124},"32":{"name":"(anonymous_32)","decl":{"start":{"line":124,"column":52},"end":{"line":124,"column":null}},"loc":{"start":{"line":127,"column":38},"end":{"line":127,"column":47}},"line":127},"33":{"name":"(anonymous_33)","decl":{"start":{"line":127,"column":47},"end":{"line":127,"column":null}},"loc":{"start":{"line":128,"column":39},"end":{"line":128,"column":49}},"line":128},"34":{"name":"(anonymous_34)","decl":{"start":{"line":129,"column":20},"end":{"line":129,"column":24}},"loc":{"start":{"line":129,"column":24},"end":{"line":129,"column":null}},"line":129},"35":{"name":"(anonymous_35)","decl":{"start":{"line":129,"column":39},"end":{"line":129,"column":null}},"loc":{"start":{"line":129,"column":39},"end":{"line":130,"column":null}},"line":129},"36":{"name":"(anonymous_36)","decl":{"start":{"line":130,"column":57},"end":{"line":130,"column":null}},"loc":{"start":{"line":130,"column":57},"end":{"line":125,"column":null}},"line":130},"37":{"name":"(anonymous_37)","decl":{"start":{"line":141,"column":50},"end":{"line":141,"column":56}},"loc":{"start":{"line":141,"column":56},"end":{"line":141,"column":77}},"line":141},"38":{"name":"(anonymous_38)","decl":{"start":{"line":145,"column":13},"end":{"line":145,"column":17}},"loc":{"start":{"line":145,"column":17},"end":{"line":145,"column":null}},"line":145},"39":{"name":"(anonymous_39)","decl":{"start":{"line":146,"column":12},"end":{"line":146,"column":14}},"loc":{"start":{"line":146,"column":12},"end":{"line":148,"column":null}},"line":146},"40":{"name":"(anonymous_40)","decl":{"start":{"line":146,"column":14},"end":{"line":146,"column":null}},"loc":{"start":{"line":146,"column":14},"end":{"line":148,"column":null}},"line":146},"41":{"name":"(anonymous_41)","decl":{"start":{"line":149,"column":23},"end":{"line":149,"column":29}},"loc":{"start":{"line":149,"column":29},"end":{"line":149,"column":46}},"line":149},"42":{"name":"(anonymous_42)","decl":{"start":{"line":153,"column":39},"end":{"line":153,"column":null}},"loc":{"start":{"line":153,"column":39},"end":{"line":148,"column":null}},"line":153},"43":{"name":"(anonymous_43)","decl":{"start":{"line":159,"column":24},"end":{"line":159,"column":30}},"loc":{"start":{"line":159,"column":30},"end":{"line":159,"column":48}},"line":159},"44":{"name":"(anonymous_44)","decl":{"start":{"line":159,"column":57},"end":{"line":159,"column":63}},"loc":{"start":{"line":159,"column":63},"end":{"line":159,"column":87}},"line":159},"45":{"name":"(anonymous_45)","decl":{"start":{"line":159,"column":99},"end":{"line":159,"column":105}},"loc":{"start":{"line":159,"column":105},"end":{"line":159,"column":107}},"line":159}},"branchMap":{"0":{"loc":{"start":{"line":62,"column":33},"end":{"line":62,"column":null}},"type":"binary-expr","locations":[{"start":{"line":62,"column":33},"end":{"line":62,"column":null}},{"start":{"line":62,"column":33},"end":{"line":62,"column":null}}],"line":62},"1":{"loc":{"start":{"line":83,"column":33},"end":{"line":83,"column":null}},"type":"binary-expr","locations":[{"start":{"line":83,"column":33},"end":{"line":83,"column":null}},{"start":{"line":83,"column":33},"end":{"line":83,"column":null}}],"line":83},"2":{"loc":{"start":{"line":104,"column":33},"end":{"line":104,"column":null}},"type":"binary-expr","locations":[{"start":{"line":104,"column":33},"end":{"line":104,"column":null}},{"start":{"line":104,"column":33},"end":{"line":104,"column":null}}],"line":104},"3":{"loc":{"start":{"line":125,"column":33},"end":{"line":125,"column":null}},"type":"binary-expr","locations":[{"start":{"line":125,"column":33},"end":{"line":125,"column":null}},{"start":{"line":125,"column":33},"end":{"line":125,"column":null}}],"line":125},"4":{"loc":{"start":{"line":150,"column":21},"end":{"line":150,"column":158}},"type":"cond-expr","locations":[{"start":{"line":150,"column":48},"end":{"line":150,"column":83}},{"start":{"line":150,"column":83},"end":{"line":150,"column":158}}],"line":150},"5":{"loc":{"start":{"line":150,"column":83},"end":{"line":150,"column":158}},"type":"cond-expr","locations":[{"start":{"line":150,"column":113},"end":{"line":150,"column":141}},{"start":{"line":150,"column":141},"end":{"line":150,"column":158}}],"line":150},"6":{"loc":{"start":{"line":152,"column":37},"end":{"line":152,"column":113}},"type":"cond-expr","locations":[{"start":{"line":152,"column":64},"end":{"line":152,"column":71}},{"start":{"line":152,"column":71},"end":{"line":152,"column":113}}],"line":152},"7":{"loc":{"start":{"line":152,"column":71},"end":{"line":152,"column":113}},"type":"cond-expr","locations":[{"start":{"line":152,"column":101},"end":{"line":152,"column":108}},{"start":{"line":152,"column":108},"end":{"line":152,"column":113}}],"line":152},"8":{"loc":{"start":{"line":164,"column":23},"end":{"line":164,"column":null}},"type":"if","locations":[{"start":{"line":164,"column":23},"end":{"line":164,"column":null}},{"start":{},"end":{}}],"line":164}},"s":{"0":1,"1":1,"2":1,"3":1,"4":63,"5":63,"6":2,"7":2,"8":2,"9":2,"10":2,"11":2,"12":63,"13":18,"14":63,"15":2,"16":2,"17":63,"18":63,"19":63,"20":252,"21":252,"22":252,"23":8,"24":252,"25":252,"26":252,"27":252,"28":252,"29":252,"30":252,"31":252,"32":252,"33":252,"34":252,"35":320,"36":320,"37":252,"38":63,"39":252,"40":252,"41":252,"42":8,"43":252,"44":252,"45":252,"46":252,"47":252,"48":252,"49":252,"50":252,"51":252,"52":252,"53":252,"54":320,"55":320,"56":252,"57":63,"58":63,"59":63,"60":63,"61":2,"62":63,"63":63,"64":63,"65":63,"66":63,"67":63,"68":63,"69":63,"70":63,"71":63,"72":63,"73":80,"74":80,"75":63,"76":63,"77":63,"78":63,"79":63,"80":0,"81":63,"82":63,"83":63,"84":63,"85":63,"86":63,"87":63,"88":63,"89":63,"90":63,"91":63,"92":80,"93":80,"94":63,"95":63,"96":1,"97":63,"98":63,"99":9,"100":9,"101":9,"102":2,"103":9,"104":9,"105":9,"106":11,"107":9,"108":63,"109":64,"110":0,"111":63,"112":1},"f":{"0":63,"1":2,"2":18,"3":2,"4":63,"5":252,"6":252,"7":8,"8":252,"9":252,"10":252,"11":504,"12":320,"13":252,"14":252,"15":8,"16":252,"17":252,"18":252,"19":504,"20":320,"21":63,"22":63,"23":2,"24":63,"25":63,"26":63,"27":126,"28":80,"29":63,"30":63,"31":0,"32":63,"33":63,"34":63,"35":126,"36":80,"37":1,"38":63,"39":9,"40":9,"41":2,"42":11,"43":64,"44":0,"45":0},"b":{"0":[640,528],"1":[640,512],"2":[160,128],"3":[160,128],"4":[1,8],"5":[1,7],"6":[1,8],"7":[1,7],"8":[1,0]},"meta":{"lastBranch":9,"lastFunction":46,"lastStatement":113,"seen":{"s:15:28:19:Infinity":0,"s:22:32:26:Infinity":1,"s:29:30:30:Infinity":2,"s:33:6:162:Infinity":3,"f:33:27:33:33":0,"s:34:38:34:Infinity":4,"s:36:21:43:Infinity":5,"f:36:21:36:28":1,"s:37:18:37:Infinity":6,"s:38:4:38:Infinity":7,"s:39:18:39:Infinity":8,"s:40:4:40:Infinity":9,"s:41:19:41:Infinity":10,"s:42:4:42:Infinity":11,"s:45:25:47:Infinity":12,"f:45:25:45:26":2,"s:46:4:46:Infinity":13,"s:49:24:52:Infinity":14,"f:49:24:49:31":3,"s:50:4:50:Infinity":15,"s:51:4:51:Infinity":16,"s:54:2:159:Infinity":17,"f:54:2:54:Infinity":4,"s:54:2:54:Infinity":18,"s:54:2:70:Infinity":19,"f:58:12:58:16":5,"s:58:12:62:Infinity":20,"f:58:16:58:Infinity":6,"s:58:16:58:Infinity":21,"s:58:16:61:52":22,"f:61:23:61:29":7,"s:61:29:61:52":23,"s:61:52:64:Infinity":24,"f:61:52:61:Infinity":8,"s:64:38:64:47":25,"s:64:47:65:Infinity":26,"f:64:47:64:Infinity":9,"s:65:39:65:49":27,"s:65:49:67:Infinity":28,"f:66:20:66:24":10,"s:66:24:66:39":29,"f:66:39:66:Infinity":11,"s:66:39:66:Infinity":30,"s:66:39:67:Infinity":31,"s:67:44:67:57":32,"s:67:57:67:Infinity":33,"s:67:57:62:Infinity":34,"f:67:57:67:Infinity":12,"s:67:57:60:77":35,"s:62:21:62:33":36,"s:62:33:62:Infinity":37,"b:62:33:62:Infinity:62:33:62:Infinity":0,"s:70:11:91:Infinity":38,"f:79:12:79:16":13,"s:79:12:83:Infinity":39,"f:79:16:79:Infinity":14,"s:79:16:79:Infinity":40,"s:79:16:82:52":41,"f:82:23:82:29":15,"s:82:29:82:52":42,"s:82:52:85:Infinity":43,"f:82:52:82:Infinity":16,"s:85:38:85:47":44,"s:85:47:86:Infinity":45,"f:85:47:85:Infinity":17,"s:86:39:86:49":46,"s:86:49:88:Infinity":47,"f:87:20:87:24":18,"s:87:24:87:39":48,"f:87:39:87:Infinity":19,"s:87:39:87:Infinity":49,"s:87:39:88:Infinity":50,"s:88:44:88:57":51,"s:88:57:88:Infinity":52,"s:88:57:83:Infinity":53,"f:88:57:88:Infinity":20,"s:88:57:81:77":54,"s:83:21:83:33":55,"s:83:33:83:Infinity":56,"b:83:33:83:Infinity:83:33:83:Infinity":1,"s:91:11:112:Infinity":57,"f:100:12:100:16":21,"s:100:12:104:Infinity":58,"f:100:16:100:Infinity":22,"s:100:16:100:Infinity":59,"s:100:16:103:52":60,"f:103:23:103:29":23,"s:103:29:103:52":61,"s:103:52:106:Infinity":62,"f:103:52:103:Infinity":24,"s:106:38:106:47":63,"s:106:47:107:Infinity":64,"f:106:47:106:Infinity":25,"s:107:39:107:49":65,"s:107:49:109:Infinity":66,"f:108:20:108:24":26,"s:108:24:108:39":67,"f:108:39:108:Infinity":27,"s:108:39:108:Infinity":68,"s:108:39:109:Infinity":69,"s:109:44:109:57":70,"s:109:57:109:Infinity":71,"s:109:57:104:Infinity":72,"f:109:57:109:Infinity":28,"s:109:57:102:77":73,"s:104:21:104:33":74,"s:104:33:104:Infinity":75,"b:104:33:104:Infinity:104:33:104:Infinity":2,"s:112:11:133:Infinity":76,"f:121:12:121:16":29,"s:121:12:125:Infinity":77,"f:121:16:121:Infinity":30,"s:121:16:121:Infinity":78,"s:121:16:124:52":79,"f:124:23:124:29":31,"s:124:29:124:52":80,"s:124:52:127:Infinity":81,"f:124:52:124:Infinity":32,"s:127:38:127:47":82,"s:127:47:128:Infinity":83,"f:127:47:127:Infinity":33,"s:128:39:128:49":84,"s:128:49:130:Infinity":85,"f:129:20:129:24":34,"s:129:24:129:39":86,"f:129:39:129:Infinity":35,"s:129:39:129:Infinity":87,"s:129:39:130:Infinity":88,"s:130:44:130:57":89,"s:130:57:130:Infinity":90,"s:130:57:125:Infinity":91,"f:130:57:130:Infinity":36,"s:130:57:123:77":92,"s:125:21:125:33":93,"s:125:33:125:Infinity":94,"b:125:33:125:Infinity:125:33:125:Infinity":3,"s:133:11:141:77":95,"f:141:50:141:56":37,"s:141:56:141:77":96,"s:141:77:155:Infinity":97,"f:145:13:145:17":38,"s:145:17:145:30":98,"f:146:12:146:14":39,"s:146:12:148:Infinity":99,"f:146:14:146:Infinity":40,"s:146:14:146:Infinity":100,"s:146:14:149:46":101,"f:149:23:149:29":41,"s:149:29:149:46":102,"s:149:46:150:Infinity":103,"b:150:48:150:83:150:83:150:158":4,"b:150:113:150:141:150:141:150:158":5,"s:150:158:152:Infinity":104,"b:152:64:152:71:152:71:152:113":6,"b:152:101:152:108:152:108:152:113":7,"s:152:113:153:Infinity":105,"s:153:39:148:Infinity":106,"f:153:39:153:Infinity":42,"s:148:69:148:Infinity":107,"s:155:11:159:Infinity":108,"f:159:24:159:30":43,"s:159:30:159:46":109,"f:159:57:159:63":44,"s:159:63:159:87":110,"f:159:99:159:105":45,"s:159:107:159:Infinity":111,"b:164:23:164:Infinity:undefined:undefined:undefined:undefined":8,"s:164:23:164:Infinity":112}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/ui/ContextualTooltip.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/ui/ContextualTooltip.tsx","statementMap":{"0":{"start":{"line":11,"column":6},"end":{"line":63,"column":null}},"1":{"start":{"line":12,"column":26},"end":{"line":12,"column":null}},"2":{"start":{"line":13,"column":8},"end":{"line":13,"column":null}},"3":{"start":{"line":15,"column":45},"end":{"line":19,"column":null}},"4":{"start":{"line":21,"column":17},"end":{"line":21,"column":null}},"5":{"start":{"line":21,"column":23},"end":{"line":21,"column":null}},"6":{"start":{"line":23,"column":2},"end":{"line":31,"column":null}},"7":{"start":{"line":23,"column":2},"end":{"line":23,"column":null}},"8":{"start":{"line":23,"column":2},"end":{"line":30,"column":null}},"9":{"start":{"line":30,"column":28},"end":{"line":30,"column":44}},"10":{"start":{"line":30,"column":44},"end":{"line":29,"column":null}},"11":{"start":{"line":29,"column":28},"end":{"line":29,"column":43}},"12":{"start":{"line":29,"column":43},"end":{"line":28,"column":23}},"13":{"start":{"line":28,"column":23},"end":{"line":59,"column":null}},"14":{"start":{"line":35,"column":16},"end":{"line":35,"column":42}},"15":{"start":{"line":36,"column":10},"end":{"line":54,"column":null}},"16":{"start":{"line":36,"column":11},"end":{"line":36,"column":null}},"17":{"start":{"line":36,"column":11},"end":{"line":40,"column":null}},"18":{"start":{"line":40,"column":32},"end":{"line":40,"column":48}},"19":{"start":{"line":40,"column":48},"end":{"line":39,"column":null}},"20":{"start":{"line":39,"column":32},"end":{"line":39,"column":47}},"21":{"start":{"line":39,"column":47},"end":{"line":43,"column":null}},"22":{"start":{"line":43,"column":42},"end":{"line":43,"column":60}},"23":{"start":{"line":43,"column":60},"end":{"line":44,"column":null}},"24":{"start":{"line":44,"column":48},"end":{"line":44,"column":56}},"25":{"start":{"line":44,"column":56},"end":{"line":46,"column":null}},"26":{"start":{"line":46,"column":44},"end":{"line":46,"column":59}},"27":{"start":{"line":46,"column":59},"end":{"line":50,"column":null}},"28":{"start":{"line":47,"column":22},"end":{"line":47,"column":35}},"29":{"start":{"line":47,"column":35},"end":{"line":47,"column":null}},"30":{"start":{"line":47,"column":35},"end":{"line":50,"column":null}},"31":{"start":{"line":50,"column":17},"end":{"line":50,"column":28}},"32":{"start":{"line":50,"column":28},"end":{"line":50,"column":null}},"33":{"start":{"line":50,"column":28},"end":{"line":54,"column":null}},"34":{"start":{"line":53,"column":22},"end":{"line":53,"column":37}},"35":{"start":{"line":53,"column":37},"end":{"line":53,"column":null}},"36":{"start":{"line":53,"column":37},"end":{"line":54,"column":null}},"37":{"start":{"line":54,"column":36},"end":{"line":54,"column":null}},"38":{"start":{"line":59,"column":9},"end":{"line":31,"column":null}},"39":{"start":{"line":59,"column":9},"end":{"line":24,"column":72}},"40":{"start":{"line":24,"column":72},"end":{"line":27,"column":41}},"41":{"start":{"line":31,"column":15},"end":{"line":31,"column":39}},"42":{"start":{"line":31,"column":39},"end":{"line":31,"column":null}},"43":{"start":{"line":65,"column":33},"end":{"line":65,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":11,"column":62},"end":{"line":11,"column":72}},"loc":{"start":{"line":11,"column":72},"end":{"line":63,"column":1}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":21,"column":17},"end":{"line":21,"column":23}},"loc":{"start":{"line":21,"column":23},"end":{"line":21,"column":null}},"line":21},"2":{"name":"(anonymous_2)","decl":{"start":{"line":23,"column":2},"end":{"line":23,"column":null}},"loc":{"start":{"line":23,"column":2},"end":{"line":31,"column":null}},"line":23},"3":{"name":"(anonymous_3)","decl":{"start":{"line":30,"column":22},"end":{"line":30,"column":28}},"loc":{"start":{"line":30,"column":28},"end":{"line":30,"column":44}},"line":30},"4":{"name":"(anonymous_4)","decl":{"start":{"line":29,"column":22},"end":{"line":29,"column":28}},"loc":{"start":{"line":29,"column":28},"end":{"line":29,"column":43}},"line":29},"5":{"name":"(anonymous_5)","decl":{"start":{"line":35,"column":12},"end":{"line":35,"column":16}},"loc":{"start":{"line":35,"column":16},"end":{"line":35,"column":null}},"line":35},"6":{"name":"(anonymous_6)","decl":{"start":{"line":36,"column":10},"end":{"line":36,"column":11}},"loc":{"start":{"line":36,"column":10},"end":{"line":54,"column":null}},"line":36},"7":{"name":"(anonymous_7)","decl":{"start":{"line":36,"column":11},"end":{"line":36,"column":null}},"loc":{"start":{"line":36,"column":11},"end":{"line":54,"column":null}},"line":36},"8":{"name":"(anonymous_8)","decl":{"start":{"line":40,"column":26},"end":{"line":40,"column":32}},"loc":{"start":{"line":40,"column":32},"end":{"line":40,"column":48}},"line":40},"9":{"name":"(anonymous_9)","decl":{"start":{"line":39,"column":26},"end":{"line":39,"column":32}},"loc":{"start":{"line":39,"column":32},"end":{"line":39,"column":47}},"line":39},"10":{"name":"(anonymous_10)","decl":{"start":{"line":39,"column":47},"end":{"line":39,"column":null}},"loc":{"start":{"line":43,"column":42},"end":{"line":43,"column":60}},"line":43},"11":{"name":"(anonymous_11)","decl":{"start":{"line":43,"column":60},"end":{"line":43,"column":null}},"loc":{"start":{"line":44,"column":48},"end":{"line":44,"column":56}},"line":44},"12":{"name":"(anonymous_12)","decl":{"start":{"line":44,"column":56},"end":{"line":44,"column":null}},"loc":{"start":{"line":46,"column":44},"end":{"line":46,"column":59}},"line":46},"13":{"name":"(anonymous_13)","decl":{"start":{"line":47,"column":18},"end":{"line":47,"column":22}},"loc":{"start":{"line":47,"column":22},"end":{"line":47,"column":null}},"line":47},"14":{"name":"(anonymous_14)","decl":{"start":{"line":47,"column":35},"end":{"line":47,"column":null}},"loc":{"start":{"line":47,"column":35},"end":{"line":50,"column":null}},"line":47},"15":{"name":"(anonymous_15)","decl":{"start":{"line":53,"column":18},"end":{"line":53,"column":22}},"loc":{"start":{"line":53,"column":22},"end":{"line":53,"column":null}},"line":53},"16":{"name":"(anonymous_16)","decl":{"start":{"line":53,"column":37},"end":{"line":53,"column":null}},"loc":{"start":{"line":53,"column":37},"end":{"line":54,"column":null}},"line":53},"17":{"name":"(anonymous_17)","decl":{"start":{"line":59,"column":9},"end":{"line":59,"column":null}},"loc":{"start":{"line":59,"column":9},"end":{"line":31,"column":null}},"line":59}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":45},"end":{"line":19,"column":null}},"type":"cond-expr","locations":[{"start":{"line":16,"column":6},"end":{"line":16,"column":null}},{"start":{"line":17,"column":6},"end":{"line":19,"column":null}}],"line":15},"1":{"loc":{"start":{"line":16,"column":31},"end":{"line":16,"column":70}},"type":"binary-expr","locations":[{"start":{"line":16,"column":31},"end":{"line":16,"column":52}},{"start":{"line":16,"column":52},"end":{"line":16,"column":70}}],"line":16},"2":{"loc":{"start":{"line":17,"column":6},"end":{"line":19,"column":null}},"type":"cond-expr","locations":[{"start":{"line":18,"column":8},"end":{"line":18,"column":null}},{"start":{"line":19,"column":8},"end":{"line":19,"column":null}}],"line":17},"3":{"loc":{"start":{"line":35,"column":18},"end":{"line":35,"column":42}},"type":"binary-expr","locations":[{"start":{"line":35,"column":18},"end":{"line":35,"column":30}},{"start":{"line":35,"column":30},"end":{"line":35,"column":42}}],"line":35},"4":{"loc":{"start":{"line":31,"column":39},"end":{"line":31,"column":null}},"type":"binary-expr","locations":[{"start":{"line":31,"column":39},"end":{"line":31,"column":null}},{"start":{"line":31,"column":39},"end":{"line":31,"column":null}}],"line":31},"5":{"loc":{"start":{"line":65,"column":33},"end":{"line":65,"column":null}},"type":"if","locations":[{"start":{"line":65,"column":33},"end":{"line":65,"column":null}},{"start":{},"end":{}}],"line":65}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0]},"meta":{"lastBranch":6,"lastFunction":18,"lastStatement":44,"seen":{"s:11:6:63:Infinity":0,"f:11:62:11:72":0,"s:12:26:12:Infinity":1,"s:13:8:13:Infinity":2,"s:15:45:19:Infinity":3,"b:16:6:16:Infinity:17:6:19:Infinity":0,"b:16:31:16:52:16:52:16:70":1,"b:18:8:18:Infinity:19:8:19:Infinity":2,"s:21:17:21:Infinity":4,"f:21:17:21:23":1,"s:21:23:21:Infinity":5,"s:23:2:31:Infinity":6,"f:23:2:23:Infinity":2,"s:23:2:23:Infinity":7,"s:23:2:30:Infinity":8,"f:30:22:30:28":3,"s:30:28:30:44":9,"s:30:44:29:Infinity":10,"f:29:22:29:28":4,"s:29:28:29:43":11,"s:29:43:28:23":12,"s:28:23:59:Infinity":13,"f:35:12:35:16":5,"s:35:16:35:42":14,"b:35:18:35:30:35:30:35:42":3,"f:36:10:36:11":6,"s:36:10:54:Infinity":15,"f:36:11:36:Infinity":7,"s:36:11:36:Infinity":16,"s:36:11:40:Infinity":17,"f:40:26:40:32":8,"s:40:32:40:48":18,"s:40:48:39:Infinity":19,"f:39:26:39:32":9,"s:39:32:39:47":20,"s:39:47:43:Infinity":21,"f:39:47:39:Infinity":10,"s:43:42:43:60":22,"s:43:60:44:Infinity":23,"f:43:60:43:Infinity":11,"s:44:48:44:56":24,"s:44:56:46:Infinity":25,"f:44:56:44:Infinity":12,"s:46:44:46:59":26,"s:46:59:50:Infinity":27,"f:47:18:47:22":13,"s:47:22:47:35":28,"f:47:35:47:Infinity":14,"s:47:35:47:Infinity":29,"s:47:35:50:Infinity":30,"s:50:17:50:28":31,"s:50:28:50:Infinity":32,"s:50:28:54:Infinity":33,"f:53:18:53:22":15,"s:53:22:53:37":34,"f:53:37:53:Infinity":16,"s:53:37:53:Infinity":35,"s:53:37:54:Infinity":36,"s:54:36:54:Infinity":37,"s:59:9:31:Infinity":38,"f:59:9:59:Infinity":17,"s:59:9:24:72":39,"s:24:72:27:41":40,"s:31:15:31:39":41,"s:31:39:31:Infinity":42,"b:31:39:31:Infinity:31:39:31:Infinity":4,"b:65:33:65:Infinity:undefined:undefined:undefined:undefined":5,"s:65:33:65:Infinity":43}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/ui/ErrorBoundary.tsx": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/components/ui/ErrorBoundary.tsx","statementMap":{"0":{"start":{"line":9,"column":6},"end":{"line":28,"column":null}},"1":{"start":{"line":10,"column":2},"end":{"line":25,"column":null}},"2":{"start":{"line":12,"column":24},"end":{"line":19,"column":null}},"3":{"start":{"line":12,"column":29},"end":{"line":12,"column":null}},"4":{"start":{"line":12,"column":29},"end":{"line":17,"column":null}},"5":{"start":{"line":17,"column":47},"end":{"line":17,"column":95}},"6":{"start":{"line":17,"column":95},"end":{"line":19,"column":62}},"7":{"start":{"line":19,"column":55},"end":{"line":19,"column":62}},"8":{"start":{"line":19,"column":62},"end":{"line":19,"column":null}},"9":{"start":{"line":23,"column":7},"end":{"line":25,"column":21}},"10":{"start":{"line":30,"column":38},"end":{"line":30,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":50},"end":{"line":9,"column":60}},"loc":{"start":{"line":9,"column":60},"end":{"line":28,"column":1}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":16},"end":{"line":12,"column":17}},"loc":{"start":{"line":12,"column":24},"end":{"line":19,"column":null}},"line":12},"2":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":29},"end":{"line":12,"column":null}},"loc":{"start":{"line":12,"column":29},"end":{"line":19,"column":null}},"line":12},"3":{"name":"(anonymous_3)","decl":{"start":{"line":19,"column":49},"end":{"line":19,"column":55}},"loc":{"start":{"line":19,"column":55},"end":{"line":19,"column":62}},"line":19},"4":{"name":"(anonymous_4)","decl":{"start":{"line":23,"column":7},"end":{"line":23,"column":null}},"loc":{"start":{"line":23,"column":7},"end":{"line":25,"column":null}},"line":23}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":47},"end":{"line":17,"column":95}},"type":"binary-expr","locations":[{"start":{"line":17,"column":47},"end":{"line":17,"column":65}},{"start":{"line":17,"column":65},"end":{"line":17,"column":95}}],"line":17},"1":{"loc":{"start":{"line":30,"column":38},"end":{"line":30,"column":null}},"type":"if","locations":[{"start":{"line":30,"column":38},"end":{"line":30,"column":null}},{"start":{},"end":{}}],"line":30}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0},"b":{"0":[0,0],"1":[0,0]},"meta":{"lastBranch":2,"lastFunction":5,"lastStatement":11,"seen":{"s:9:6:28:Infinity":0,"f:9:50:9:60":0,"s:10:2:25:Infinity":1,"f:12:16:12:17":1,"s:12:24:19:Infinity":2,"f:12:29:12:Infinity":2,"s:12:29:12:Infinity":3,"s:12:29:17:Infinity":4,"s:17:47:17:95":5,"b:17:47:17:65:17:65:17:95":0,"s:17:95:19:62":6,"f:19:49:19:55":3,"s:19:55:19:62":7,"s:19:62:19:Infinity":8,"f:23:7:23:Infinity":4,"s:23:7:25:21":9,"b:30:38:30:Infinity:undefined:undefined:undefined:undefined":1,"s:30:38:30:Infinity":10}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/data/glossary.ts": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/data/glossary.ts","statementMap":{"0":{"start":{"line":9,"column":54},"end":{"line":52,"column":null}},"1":{"start":{"line":55,"column":2},"end":{"line":55,"column":null}},"2":{"start":{"line":59,"column":2},"end":{"line":59,"column":null}}},"fnMap":{"0":{"name":"getTerm","decl":{"start":{"line":54,"column":16},"end":{"line":54,"column":24}},"loc":{"start":{"line":54,"column":64},"end":{"line":56,"column":null}},"line":54},"1":{"name":"getAllTerms","decl":{"start":{"line":58,"column":16},"end":{"line":58,"column":46}},"loc":{"start":{"line":58,"column":46},"end":{"line":60,"column":null}},"line":58}},"branchMap":{},"s":{"0":0,"1":0,"2":0},"f":{"0":0,"1":0},"b":{},"meta":{"lastBranch":0,"lastFunction":2,"lastStatement":3,"seen":{"s:9:54:52:Infinity":0,"f:54:16:54:24":0,"s:55:2:55:Infinity":1,"f:58:16:58:46":1,"s:59:2:59:Infinity":2}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/lib/api.ts": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/lib/api.ts","statementMap":{"0":{"start":{"line":4,"column":24},"end":{"line":4,"column":null}},"1":{"start":{"line":4,"column":25},"end":{"line":4,"column":null}},"2":{"start":{"line":6,"column":24},"end":{"line":6,"column":null}},"3":{"start":{"line":6,"column":39},"end":{"line":6,"column":null}},"4":{"start":{"line":7,"column":22},"end":{"line":7,"column":null}},"5":{"start":{"line":7,"column":37},"end":{"line":7,"column":null}},"6":{"start":{"line":8,"column":23},"end":{"line":8,"column":null}},"7":{"start":{"line":8,"column":24},"end":{"line":8,"column":null}},"8":{"start":{"line":9,"column":22},"end":{"line":9,"column":null}},"9":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"10":{"start":{"line":10,"column":24},"end":{"line":10,"column":null}},"11":{"start":{"line":12,"column":26},"end":{"line":13,"column":null}},"12":{"start":{"line":12,"column":56},"end":{"line":13,"column":null}},"13":{"start":{"line":14,"column":23},"end":{"line":15,"column":null}},"14":{"start":{"line":14,"column":41},"end":{"line":15,"column":null}},"15":{"start":{"line":16,"column":26},"end":{"line":17,"column":null}},"16":{"start":{"line":16,"column":56},"end":{"line":17,"column":null}},"17":{"start":{"line":18,"column":26},"end":{"line":19,"column":null}},"18":{"start":{"line":18,"column":44},"end":{"line":19,"column":null}},"19":{"start":{"line":20,"column":24},"end":{"line":21,"column":null}},"20":{"start":{"line":20,"column":25},"end":{"line":21,"column":null}},"21":{"start":{"line":23,"column":26},"end":{"line":24,"column":null}},"22":{"start":{"line":23,"column":90},"end":{"line":24,"column":null}},"23":{"start":{"line":25,"column":23},"end":{"line":26,"column":null}},"24":{"start":{"line":25,"column":41},"end":{"line":26,"column":null}},"25":{"start":{"line":27,"column":26},"end":{"line":28,"column":null}},"26":{"start":{"line":27,"column":90},"end":{"line":28,"column":null}},"27":{"start":{"line":29,"column":26},"end":{"line":30,"column":null}},"28":{"start":{"line":29,"column":44},"end":{"line":30,"column":null}},"29":{"start":{"line":31,"column":24},"end":{"line":32,"column":null}},"30":{"start":{"line":31,"column":25},"end":{"line":32,"column":null}},"31":{"start":{"line":34,"column":25},"end":{"line":35,"column":null}},"32":{"start":{"line":34,"column":26},"end":{"line":35,"column":null}},"33":{"start":{"line":37,"column":33},"end":{"line":38,"column":null}},"34":{"start":{"line":37,"column":51},"end":{"line":38,"column":null}},"35":{"start":{"line":40,"column":33},"end":{"line":41,"column":null}},"36":{"start":{"line":40,"column":34},"end":{"line":41,"column":null}},"37":{"start":{"line":42,"column":31},"end":{"line":43,"column":null}},"38":{"start":{"line":42,"column":47},"end":{"line":43,"column":null}},"39":{"start":{"line":44,"column":34},"end":{"line":45,"column":null}},"40":{"start":{"line":44,"column":62},"end":{"line":45,"column":null}},"41":{"start":{"line":46,"column":39},"end":{"line":47,"column":null}},"42":{"start":{"line":46,"column":94},"end":{"line":47,"column":null}},"43":{"start":{"line":49,"column":30},"end":{"line":50,"column":null}},"44":{"start":{"line":49,"column":91},"end":{"line":50,"column":null}},"45":{"start":{"line":51,"column":25},"end":{"line":52,"column":null}},"46":{"start":{"line":51,"column":43},"end":{"line":52,"column":null}},"47":{"start":{"line":53,"column":41},"end":{"line":54,"column":null}},"48":{"start":{"line":53,"column":82},"end":{"line":54,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":24},"end":{"line":4,"column":25}},"loc":{"start":{"line":4,"column":25},"end":{"line":4,"column":null}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":24},"end":{"line":6,"column":25}},"loc":{"start":{"line":6,"column":39},"end":{"line":6,"column":null}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":7,"column":22},"end":{"line":7,"column":23}},"loc":{"start":{"line":7,"column":37},"end":{"line":7,"column":null}},"line":7},"3":{"name":"(anonymous_3)","decl":{"start":{"line":8,"column":23},"end":{"line":8,"column":24}},"loc":{"start":{"line":8,"column":24},"end":{"line":8,"column":null}},"line":8},"4":{"name":"(anonymous_4)","decl":{"start":{"line":9,"column":22},"end":{"line":9,"column":28}},"loc":{"start":{"line":9,"column":22},"end":{"line":9,"column":null}},"line":9},"5":{"name":"(anonymous_5)","decl":{"start":{"line":10,"column":23},"end":{"line":10,"column":24}},"loc":{"start":{"line":10,"column":24},"end":{"line":10,"column":null}},"line":10},"6":{"name":"(anonymous_6)","decl":{"start":{"line":12,"column":26},"end":{"line":12,"column":27}},"loc":{"start":{"line":12,"column":56},"end":{"line":13,"column":null}},"line":12},"7":{"name":"(anonymous_7)","decl":{"start":{"line":14,"column":23},"end":{"line":14,"column":24}},"loc":{"start":{"line":14,"column":41},"end":{"line":15,"column":null}},"line":14},"8":{"name":"(anonymous_8)","decl":{"start":{"line":16,"column":26},"end":{"line":16,"column":27}},"loc":{"start":{"line":16,"column":56},"end":{"line":17,"column":null}},"line":16},"9":{"name":"(anonymous_9)","decl":{"start":{"line":18,"column":26},"end":{"line":18,"column":27}},"loc":{"start":{"line":18,"column":44},"end":{"line":19,"column":null}},"line":18},"10":{"name":"(anonymous_10)","decl":{"start":{"line":20,"column":24},"end":{"line":20,"column":25}},"loc":{"start":{"line":20,"column":25},"end":{"line":21,"column":null}},"line":20},"11":{"name":"(anonymous_11)","decl":{"start":{"line":23,"column":26},"end":{"line":23,"column":27}},"loc":{"start":{"line":23,"column":90},"end":{"line":24,"column":null}},"line":23},"12":{"name":"(anonymous_12)","decl":{"start":{"line":25,"column":23},"end":{"line":25,"column":24}},"loc":{"start":{"line":25,"column":41},"end":{"line":26,"column":null}},"line":25},"13":{"name":"(anonymous_13)","decl":{"start":{"line":27,"column":26},"end":{"line":27,"column":27}},"loc":{"start":{"line":27,"column":90},"end":{"line":28,"column":null}},"line":27},"14":{"name":"(anonymous_14)","decl":{"start":{"line":29,"column":26},"end":{"line":29,"column":27}},"loc":{"start":{"line":29,"column":44},"end":{"line":30,"column":null}},"line":29},"15":{"name":"(anonymous_15)","decl":{"start":{"line":31,"column":24},"end":{"line":31,"column":25}},"loc":{"start":{"line":31,"column":25},"end":{"line":32,"column":null}},"line":31},"16":{"name":"(anonymous_16)","decl":{"start":{"line":34,"column":25},"end":{"line":34,"column":26}},"loc":{"start":{"line":34,"column":26},"end":{"line":35,"column":null}},"line":34},"17":{"name":"(anonymous_17)","decl":{"start":{"line":37,"column":33},"end":{"line":37,"column":34}},"loc":{"start":{"line":37,"column":51},"end":{"line":38,"column":null}},"line":37},"18":{"name":"(anonymous_18)","decl":{"start":{"line":40,"column":33},"end":{"line":40,"column":34}},"loc":{"start":{"line":40,"column":34},"end":{"line":41,"column":null}},"line":40},"19":{"name":"(anonymous_19)","decl":{"start":{"line":42,"column":31},"end":{"line":42,"column":32}},"loc":{"start":{"line":42,"column":47},"end":{"line":43,"column":null}},"line":42},"20":{"name":"(anonymous_20)","decl":{"start":{"line":44,"column":34},"end":{"line":44,"column":35}},"loc":{"start":{"line":44,"column":62},"end":{"line":45,"column":null}},"line":44},"21":{"name":"(anonymous_21)","decl":{"start":{"line":46,"column":39},"end":{"line":46,"column":40}},"loc":{"start":{"line":46,"column":94},"end":{"line":47,"column":null}},"line":46},"22":{"name":"(anonymous_22)","decl":{"start":{"line":49,"column":30},"end":{"line":49,"column":31}},"loc":{"start":{"line":49,"column":91},"end":{"line":50,"column":null}},"line":49},"23":{"name":"(anonymous_23)","decl":{"start":{"line":51,"column":25},"end":{"line":51,"column":26}},"loc":{"start":{"line":51,"column":43},"end":{"line":52,"column":null}},"line":51},"24":{"name":"(anonymous_24)","decl":{"start":{"line":53,"column":41},"end":{"line":53,"column":42}},"loc":{"start":{"line":53,"column":82},"end":{"line":54,"column":null}},"line":53}},"branchMap":{},"s":{"0":1,"1":0,"2":1,"3":2,"4":1,"5":2,"6":1,"7":2,"8":2,"9":1,"10":2,"11":1,"12":2,"13":1,"14":3,"15":1,"16":2,"17":1,"18":2,"19":1,"20":2,"21":1,"22":2,"23":1,"24":3,"25":1,"26":2,"27":1,"28":2,"29":1,"30":2,"31":1,"32":1,"33":1,"34":1,"35":1,"36":2,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1},"f":{"0":0,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":3,"8":2,"9":2,"10":2,"11":2,"12":3,"13":2,"14":2,"15":2,"16":1,"17":1,"18":2,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1},"b":{},"meta":{"lastBranch":0,"lastFunction":25,"lastStatement":49,"seen":{"s:4:24:4:Infinity":0,"f:4:24:4:25":0,"s:4:25:4:Infinity":1,"s:6:24:6:Infinity":2,"f:6:24:6:25":1,"s:6:39:6:Infinity":3,"s:7:22:7:Infinity":4,"f:7:22:7:23":2,"s:7:37:7:Infinity":5,"s:8:23:8:Infinity":6,"f:8:23:8:24":3,"s:8:24:8:Infinity":7,"s:9:22:9:Infinity":8,"f:9:22:9:28":4,"s:10:23:10:Infinity":9,"f:10:23:10:24":5,"s:10:24:10:Infinity":10,"s:12:26:13:Infinity":11,"f:12:26:12:27":6,"s:12:56:13:Infinity":12,"s:14:23:15:Infinity":13,"f:14:23:14:24":7,"s:14:41:15:Infinity":14,"s:16:26:17:Infinity":15,"f:16:26:16:27":8,"s:16:56:17:Infinity":16,"s:18:26:19:Infinity":17,"f:18:26:18:27":9,"s:18:44:19:Infinity":18,"s:20:24:21:Infinity":19,"f:20:24:20:25":10,"s:20:25:21:Infinity":20,"s:23:26:24:Infinity":21,"f:23:26:23:27":11,"s:23:90:24:Infinity":22,"s:25:23:26:Infinity":23,"f:25:23:25:24":12,"s:25:41:26:Infinity":24,"s:27:26:28:Infinity":25,"f:27:26:27:27":13,"s:27:90:28:Infinity":26,"s:29:26:30:Infinity":27,"f:29:26:29:27":14,"s:29:44:30:Infinity":28,"s:31:24:32:Infinity":29,"f:31:24:31:25":15,"s:31:25:32:Infinity":30,"s:34:25:35:Infinity":31,"f:34:25:34:26":16,"s:34:26:35:Infinity":32,"s:37:33:38:Infinity":33,"f:37:33:37:34":17,"s:37:51:38:Infinity":34,"s:40:33:41:Infinity":35,"f:40:33:40:34":18,"s:40:34:41:Infinity":36,"s:42:31:43:Infinity":37,"f:42:31:42:32":19,"s:42:47:43:Infinity":38,"s:44:34:45:Infinity":39,"f:44:34:44:35":20,"s:44:62:45:Infinity":40,"s:46:39:47:Infinity":41,"f:46:39:46:40":21,"s:46:94:47:Infinity":42,"s:49:30:50:Infinity":43,"f:49:30:49:31":22,"s:49:91:50:Infinity":44,"s:51:25:52:Infinity":45,"f:51:25:51:26":23,"s:51:43:52:Infinity":46,"s:53:41:54:Infinity":47,"f:53:41:53:42":24,"s:53:82:54:Infinity":48}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/lib/glossary.ts": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/lib/glossary.ts","statementMap":{"0":{"start":{"line":9,"column":55},"end":{"line":55,"column":null}},"1":{"start":{"line":58,"column":2},"end":{"line":58,"column":null}},"2":{"start":{"line":62,"column":2},"end":{"line":62,"column":null}}},"fnMap":{"0":{"name":"getGlossaryEntry","decl":{"start":{"line":57,"column":16},"end":{"line":57,"column":33}},"loc":{"start":{"line":57,"column":74},"end":{"line":59,"column":null}},"line":57},"1":{"name":"getAllGlossaryEntries","decl":{"start":{"line":61,"column":16},"end":{"line":61,"column":57}},"loc":{"start":{"line":61,"column":57},"end":{"line":63,"column":null}},"line":61}},"branchMap":{},"s":{"0":0,"1":0,"2":0},"f":{"0":0,"1":0},"b":{},"meta":{"lastBranch":0,"lastFunction":2,"lastStatement":3,"seen":{"s:9:55:55:Infinity":0,"f:57:16:57:33":0,"s:58:2:58:Infinity":1,"f:61:16:61:57":1,"s:62:2:62:Infinity":2}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/lib/nl-to-sensibleql.ts": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/lib/nl-to-sensibleql.ts","statementMap":{"0":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"1":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"2":{"start":{"line":14,"column":19},"end":{"line":14,"column":null}},"3":{"start":{"line":15,"column":21},"end":{"line":15,"column":null}},"4":{"start":{"line":16,"column":2},"end":{"line":21,"column":null}},"5":{"start":{"line":17,"column":23},"end":{"line":17,"column":null}},"6":{"start":{"line":18,"column":4},"end":{"line":20,"column":null}},"7":{"start":{"line":19,"column":6},"end":{"line":19,"column":null}},"8":{"start":{"line":22,"column":2},"end":{"line":22,"column":null}},"9":{"start":{"line":26,"column":2},"end":{"line":26,"column":null}},"10":{"start":{"line":26,"column":19},"end":{"line":26,"column":null}},"11":{"start":{"line":27,"column":21},"end":{"line":27,"column":null}},"12":{"start":{"line":28,"column":26},"end":{"line":28,"column":null}},"13":{"start":{"line":29,"column":2},"end":{"line":34,"column":null}},"14":{"start":{"line":30,"column":23},"end":{"line":30,"column":null}},"15":{"start":{"line":31,"column":4},"end":{"line":33,"column":null}},"16":{"start":{"line":32,"column":6},"end":{"line":32,"column":null}},"17":{"start":{"line":35,"column":2},"end":{"line":35,"column":null}},"18":{"start":{"line":35,"column":27},"end":{"line":35,"column":null}},"19":{"start":{"line":36,"column":2},"end":{"line":36,"column":null}},"20":{"start":{"line":40,"column":21},"end":{"line":40,"column":null}},"21":{"start":{"line":42,"column":2},"end":{"line":44,"column":null}},"22":{"start":{"line":43,"column":4},"end":{"line":43,"column":null}},"23":{"start":{"line":46,"column":2},"end":{"line":48,"column":null}},"24":{"start":{"line":47,"column":4},"end":{"line":47,"column":null}},"25":{"start":{"line":50,"column":2},"end":{"line":52,"column":null}},"26":{"start":{"line":51,"column":4},"end":{"line":51,"column":null}},"27":{"start":{"line":54,"column":21},"end":{"line":54,"column":null}},"28":{"start":{"line":55,"column":2},"end":{"line":64,"column":null}},"29":{"start":{"line":56,"column":23},"end":{"line":56,"column":null}},"30":{"start":{"line":57,"column":4},"end":{"line":63,"column":null}},"31":{"start":{"line":58,"column":6},"end":{"line":62,"column":null}},"32":{"start":{"line":66,"column":23},"end":{"line":66,"column":null}},"33":{"start":{"line":67,"column":2},"end":{"line":76,"column":null}},"34":{"start":{"line":68,"column":23},"end":{"line":68,"column":null}},"35":{"start":{"line":69,"column":4},"end":{"line":75,"column":null}},"36":{"start":{"line":70,"column":6},"end":{"line":74,"column":null}},"37":{"start":{"line":78,"column":20},"end":{"line":78,"column":null}},"38":{"start":{"line":79,"column":2},"end":{"line":88,"column":null}},"39":{"start":{"line":80,"column":23},"end":{"line":80,"column":null}},"40":{"start":{"line":81,"column":4},"end":{"line":87,"column":null}},"41":{"start":{"line":82,"column":6},"end":{"line":86,"column":null}},"42":{"start":{"line":90,"column":27},"end":{"line":90,"column":null}},"43":{"start":{"line":91,"column":2},"end":{"line":100,"column":null}},"44":{"start":{"line":92,"column":23},"end":{"line":92,"column":null}},"45":{"start":{"line":93,"column":4},"end":{"line":99,"column":null}},"46":{"start":{"line":94,"column":6},"end":{"line":98,"column":null}},"47":{"start":{"line":102,"column":29},"end":{"line":102,"column":null}},"48":{"start":{"line":103,"column":2},"end":{"line":120,"column":null}},"49":{"start":{"line":104,"column":27},"end":{"line":104,"column":null}},"50":{"start":{"line":105,"column":4},"end":{"line":111,"column":null}},"51":{"start":{"line":106,"column":6},"end":{"line":110,"column":null}},"52":{"start":{"line":112,"column":22},"end":{"line":112,"column":null}},"53":{"start":{"line":113,"column":4},"end":{"line":119,"column":null}},"54":{"start":{"line":114,"column":6},"end":{"line":118,"column":null}},"55":{"start":{"line":122,"column":22},"end":{"line":122,"column":null}},"56":{"start":{"line":123,"column":2},"end":{"line":132,"column":null}},"57":{"start":{"line":124,"column":23},"end":{"line":124,"column":null}},"58":{"start":{"line":125,"column":4},"end":{"line":131,"column":null}},"59":{"start":{"line":126,"column":6},"end":{"line":130,"column":null}},"60":{"start":{"line":134,"column":29},"end":{"line":134,"column":null}},"61":{"start":{"line":135,"column":2},"end":{"line":140,"column":null}},"62":{"start":{"line":136,"column":4},"end":{"line":139,"column":null}},"63":{"start":{"line":142,"column":23},"end":{"line":142,"column":null}},"64":{"start":{"line":143,"column":2},"end":{"line":152,"column":null}},"65":{"start":{"line":144,"column":23},"end":{"line":144,"column":null}},"66":{"start":{"line":145,"column":4},"end":{"line":151,"column":null}},"67":{"start":{"line":146,"column":6},"end":{"line":150,"column":null}},"68":{"start":{"line":154,"column":20},"end":{"line":154,"column":null}},"69":{"start":{"line":155,"column":2},"end":{"line":164,"column":null}},"70":{"start":{"line":156,"column":23},"end":{"line":156,"column":null}},"71":{"start":{"line":157,"column":4},"end":{"line":163,"column":null}},"72":{"start":{"line":158,"column":6},"end":{"line":162,"column":null}},"73":{"start":{"line":166,"column":2},"end":{"line":166,"column":null}},"74":{"start":{"line":174,"column":50},"end":{"line":174,"column":null}},"75":{"start":{"line":176,"column":2},"end":{"line":182,"column":null}},"76":{"start":{"line":177,"column":4},"end":{"line":181,"column":null}},"77":{"start":{"line":184,"column":2},"end":{"line":227,"column":null}},"78":{"start":{"line":186,"column":6},"end":{"line":190,"column":null}},"79":{"start":{"line":192,"column":6},"end":{"line":196,"column":null}},"80":{"start":{"line":198,"column":6},"end":{"line":202,"column":null}},"81":{"start":{"line":204,"column":6},"end":{"line":208,"column":null}},"82":{"start":{"line":210,"column":6},"end":{"line":214,"column":null}},"83":{"start":{"line":216,"column":6},"end":{"line":220,"column":null}},"84":{"start":{"line":222,"column":6},"end":{"line":226,"column":null}},"85":{"start":{"line":237,"column":2},"end":{"line":239,"column":null}},"86":{"start":{"line":238,"column":4},"end":{"line":238,"column":null}},"87":{"start":{"line":241,"column":16},"end":{"line":241,"column":null}},"88":{"start":{"line":242,"column":16},"end":{"line":242,"column":null}},"89":{"start":{"line":243,"column":20},"end":{"line":243,"column":null}},"90":{"start":{"line":244,"column":20},"end":{"line":244,"column":null}},"91":{"start":{"line":246,"column":2},"end":{"line":383,"column":null}},"92":{"start":{"line":248,"column":6},"end":{"line":253,"column":null}},"93":{"start":{"line":249,"column":30},"end":{"line":251,"column":null}},"94":{"start":{"line":250,"column":34},"end":{"line":250,"column":56}},"95":{"start":{"line":252,"column":8},"end":{"line":252,"column":null}},"96":{"start":{"line":255,"column":49},"end":{"line":255,"column":null}},"97":{"start":{"line":256,"column":53},"end":{"line":256,"column":null}},"98":{"start":{"line":257,"column":6},"end":{"line":260,"column":null}},"99":{"start":{"line":258,"column":21},"end":{"line":258,"column":null}},"100":{"start":{"line":259,"column":8},"end":{"line":259,"column":null}},"101":{"start":{"line":261,"column":6},"end":{"line":264,"column":null}},"102":{"start":{"line":262,"column":21},"end":{"line":262,"column":null}},"103":{"start":{"line":263,"column":8},"end":{"line":263,"column":null}},"104":{"start":{"line":266,"column":23},"end":{"line":269,"column":null}},"105":{"start":{"line":267,"column":24},"end":{"line":267,"column":35}},"106":{"start":{"line":268,"column":32},"end":{"line":268,"column":54}},"107":{"start":{"line":271,"column":23},"end":{"line":274,"column":null}},"108":{"start":{"line":272,"column":24},"end":{"line":272,"column":35}},"109":{"start":{"line":273,"column":32},"end":{"line":273,"column":54}},"110":{"start":{"line":276,"column":21},"end":{"line":276,"column":null}},"111":{"start":{"line":277,"column":6},"end":{"line":279,"column":null}},"112":{"start":{"line":278,"column":8},"end":{"line":278,"column":null}},"113":{"start":{"line":280,"column":6},"end":{"line":280,"column":null}},"114":{"start":{"line":284,"column":6},"end":{"line":289,"column":null}},"115":{"start":{"line":285,"column":27},"end":{"line":285,"column":null}},"116":{"start":{"line":286,"column":8},"end":{"line":288,"column":null}},"117":{"start":{"line":287,"column":10},"end":{"line":287,"column":null}},"118":{"start":{"line":290,"column":6},"end":{"line":290,"column":null}},"119":{"start":{"line":294,"column":6},"end":{"line":296,"column":null}},"120":{"start":{"line":295,"column":8},"end":{"line":295,"column":null}},"121":{"start":{"line":298,"column":49},"end":{"line":298,"column":null}},"122":{"start":{"line":299,"column":6},"end":{"line":302,"column":null}},"123":{"start":{"line":300,"column":21},"end":{"line":300,"column":null}},"124":{"start":{"line":301,"column":8},"end":{"line":301,"column":null}},"125":{"start":{"line":304,"column":6},"end":{"line":309,"column":null}},"126":{"start":{"line":305,"column":25},"end":{"line":307,"column":null}},"127":{"start":{"line":306,"column":41},"end":{"line":306,"column":105}},"128":{"start":{"line":308,"column":8},"end":{"line":308,"column":null}},"129":{"start":{"line":311,"column":23},"end":{"line":314,"column":null}},"130":{"start":{"line":312,"column":24},"end":{"line":312,"column":35}},"131":{"start":{"line":313,"column":32},"end":{"line":313,"column":54}},"132":{"start":{"line":315,"column":6},"end":{"line":315,"column":null}},"133":{"start":{"line":319,"column":6},"end":{"line":321,"column":null}},"134":{"start":{"line":320,"column":8},"end":{"line":320,"column":null}},"135":{"start":{"line":323,"column":29},"end":{"line":329,"column":null}},"136":{"start":{"line":325,"column":30},"end":{"line":325,"column":null}},"137":{"start":{"line":325,"column":55},"end":{"line":325,"column":93}},"138":{"start":{"line":326,"column":28},"end":{"line":326,"column":null}},"139":{"start":{"line":327,"column":10},"end":{"line":327,"column":null}},"140":{"start":{"line":331,"column":6},"end":{"line":331,"column":null}},"141":{"start":{"line":335,"column":6},"end":{"line":337,"column":null}},"142":{"start":{"line":336,"column":8},"end":{"line":336,"column":null}},"143":{"start":{"line":339,"column":42},"end":{"line":339,"column":null}},"144":{"start":{"line":340,"column":6},"end":{"line":348,"column":null}},"145":{"start":{"line":341,"column":25},"end":{"line":341,"column":null}},"146":{"start":{"line":341,"column":48},"end":{"line":341,"column":66}},"147":{"start":{"line":342,"column":23},"end":{"line":342,"column":null}},"148":{"start":{"line":342,"column":46},"end":{"line":342,"column":62}},"149":{"start":{"line":343,"column":8},"end":{"line":347,"column":null}},"150":{"start":{"line":344,"column":10},"end":{"line":346,"column":null}},"151":{"start":{"line":350,"column":6},"end":{"line":352,"column":null}},"152":{"start":{"line":351,"column":8},"end":{"line":351,"column":null}},"153":{"start":{"line":354,"column":6},"end":{"line":354,"column":null}},"154":{"start":{"line":358,"column":6},"end":{"line":360,"column":null}},"155":{"start":{"line":359,"column":8},"end":{"line":359,"column":null}},"156":{"start":{"line":362,"column":21},"end":{"line":368,"column":null}},"157":{"start":{"line":363,"column":29},"end":{"line":366,"column":10}},"158":{"start":{"line":365,"column":48},"end":{"line":365,"column":86}},"159":{"start":{"line":367,"column":24},"end":{"line":367,"column":53}},"160":{"start":{"line":370,"column":22},"end":{"line":372,"column":null}},"161":{"start":{"line":371,"column":39},"end":{"line":371,"column":174}},"162":{"start":{"line":374,"column":6},"end":{"line":374,"column":null}},"163":{"start":{"line":378,"column":6},"end":{"line":380,"column":null}},"164":{"start":{"line":379,"column":8},"end":{"line":379,"column":null}},"165":{"start":{"line":381,"column":6},"end":{"line":381,"column":null}}},"fnMap":{"0":{"name":"normalize","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":19}},"loc":{"start":{"line":9,"column":42},"end":{"line":11,"column":null}},"line":9},"1":{"name":"findEntityType","decl":{"start":{"line":13,"column":9},"end":{"line":13,"column":24}},"loc":{"start":{"line":13,"column":85},"end":{"line":23,"column":null}},"line":13},"2":{"name":"findTwoEntityTypes","decl":{"start":{"line":25,"column":9},"end":{"line":25,"column":28}},"loc":{"start":{"line":25,"column":106},"end":{"line":37,"column":null}},"line":25},"3":{"name":"translateNLtoSensibleQL","decl":{"start":{"line":39,"column":16},"end":{"line":39,"column":40}},"loc":{"start":{"line":39,"column":95},"end":{"line":167,"column":null}},"line":39},"4":{"name":"generateFollowUpSuggestions","decl":{"start":{"line":169,"column":16},"end":{"line":169,"column":44}},"loc":{"start":{"line":173,"column":13},"end":{"line":228,"column":null}},"line":173},"5":{"name":"generateAssistantResponse","decl":{"start":{"line":230,"column":16},"end":{"line":230,"column":null}},"loc":{"start":{"line":236,"column":10},"end":{"line":384,"column":null}},"line":236},"6":{"name":"(anonymous_6)","decl":{"start":{"line":250,"column":15},"end":{"line":250,"column":16}},"loc":{"start":{"line":250,"column":34},"end":{"line":250,"column":56}},"line":250},"7":{"name":"(anonymous_7)","decl":{"start":{"line":267,"column":14},"end":{"line":267,"column":15}},"loc":{"start":{"line":267,"column":24},"end":{"line":267,"column":35}},"line":267},"8":{"name":"(anonymous_8)","decl":{"start":{"line":268,"column":13},"end":{"line":268,"column":14}},"loc":{"start":{"line":268,"column":32},"end":{"line":268,"column":54}},"line":268},"9":{"name":"(anonymous_9)","decl":{"start":{"line":272,"column":14},"end":{"line":272,"column":15}},"loc":{"start":{"line":272,"column":24},"end":{"line":272,"column":35}},"line":272},"10":{"name":"(anonymous_10)","decl":{"start":{"line":273,"column":13},"end":{"line":273,"column":14}},"loc":{"start":{"line":273,"column":32},"end":{"line":273,"column":54}},"line":273},"11":{"name":"(anonymous_11)","decl":{"start":{"line":306,"column":15},"end":{"line":306,"column":16}},"loc":{"start":{"line":306,"column":41},"end":{"line":306,"column":105}},"line":306},"12":{"name":"(anonymous_12)","decl":{"start":{"line":312,"column":14},"end":{"line":312,"column":15}},"loc":{"start":{"line":312,"column":24},"end":{"line":312,"column":35}},"line":312},"13":{"name":"(anonymous_13)","decl":{"start":{"line":313,"column":13},"end":{"line":313,"column":14}},"loc":{"start":{"line":313,"column":32},"end":{"line":313,"column":54}},"line":313},"14":{"name":"(anonymous_14)","decl":{"start":{"line":324,"column":13},"end":{"line":324,"column":14}},"loc":{"start":{"line":324,"column":39},"end":{"line":328,"column":9}},"line":324},"15":{"name":"(anonymous_15)","decl":{"start":{"line":325,"column":43},"end":{"line":325,"column":44}},"loc":{"start":{"line":325,"column":55},"end":{"line":325,"column":93}},"line":325},"16":{"name":"(anonymous_16)","decl":{"start":{"line":341,"column":36},"end":{"line":341,"column":37}},"loc":{"start":{"line":341,"column":48},"end":{"line":341,"column":66}},"line":341},"17":{"name":"(anonymous_17)","decl":{"start":{"line":342,"column":34},"end":{"line":342,"column":35}},"loc":{"start":{"line":342,"column":46},"end":{"line":342,"column":62}},"line":342},"18":{"name":"(anonymous_18)","decl":{"start":{"line":363,"column":13},"end":{"line":363,"column":14}},"loc":{"start":{"line":363,"column":29},"end":{"line":366,"column":10}},"line":363},"19":{"name":"(anonymous_19)","decl":{"start":{"line":365,"column":36},"end":{"line":365,"column":37}},"loc":{"start":{"line":365,"column":48},"end":{"line":365,"column":86}},"line":365},"20":{"name":"(anonymous_20)","decl":{"start":{"line":367,"column":14},"end":{"line":367,"column":15}},"loc":{"start":{"line":367,"column":24},"end":{"line":367,"column":53}},"line":367},"21":{"name":"(anonymous_21)","decl":{"start":{"line":371,"column":13},"end":{"line":371,"column":14}},"loc":{"start":{"line":371,"column":39},"end":{"line":371,"column":174}},"line":371}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"type":"if","locations":[{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},{"start":{},"end":{}}],"line":14},"1":{"loc":{"start":{"line":18,"column":4},"end":{"line":20,"column":null}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":20,"column":null}},{"start":{},"end":{}}],"line":18},"2":{"loc":{"start":{"line":18,"column":8},"end":{"line":18,"column":95}},"type":"binary-expr","locations":[{"start":{"line":18,"column":8},"end":{"line":18,"column":43}},{"start":{"line":18,"column":43},"end":{"line":18,"column":95}}],"line":18},"3":{"loc":{"start":{"line":26,"column":2},"end":{"line":26,"column":null}},"type":"if","locations":[{"start":{"line":26,"column":2},"end":{"line":26,"column":null}},{"start":{},"end":{}}],"line":26},"4":{"loc":{"start":{"line":31,"column":4},"end":{"line":33,"column":null}},"type":"if","locations":[{"start":{"line":31,"column":4},"end":{"line":33,"column":null}},{"start":{},"end":{}}],"line":31},"5":{"loc":{"start":{"line":31,"column":4},"end":{"line":31,"column":117}},"type":"binary-expr","locations":[{"start":{"line":31,"column":9},"end":{"line":31,"column":44}},{"start":{"line":31,"column":44},"end":{"line":31,"column":99}},{"start":{"line":31,"column":99},"end":{"line":31,"column":117}}],"line":31},"6":{"loc":{"start":{"line":42,"column":2},"end":{"line":44,"column":null}},"type":"if","locations":[{"start":{"line":42,"column":2},"end":{"line":44,"column":null}},{"start":{},"end":{}}],"line":42},"7":{"loc":{"start":{"line":42,"column":6},"end":{"line":42,"column":121}},"type":"binary-expr","locations":[{"start":{"line":42,"column":6},"end":{"line":42,"column":46}},{"start":{"line":42,"column":46},"end":{"line":42,"column":84}},{"start":{"line":42,"column":84},"end":{"line":42,"column":121}}],"line":42},"8":{"loc":{"start":{"line":46,"column":2},"end":{"line":48,"column":null}},"type":"if","locations":[{"start":{"line":46,"column":2},"end":{"line":48,"column":null}},{"start":{},"end":{}}],"line":46},"9":{"loc":{"start":{"line":46,"column":6},"end":{"line":46,"column":134}},"type":"binary-expr","locations":[{"start":{"line":46,"column":6},"end":{"line":46,"column":57}},{"start":{"line":46,"column":57},"end":{"line":46,"column":95}},{"start":{"line":46,"column":95},"end":{"line":46,"column":134}}],"line":46},"10":{"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":50,"column":2},"end":{"line":52,"column":null}},{"start":{},"end":{}}],"line":50},"11":{"loc":{"start":{"line":50,"column":6},"end":{"line":50,"column":129}},"type":"binary-expr","locations":[{"start":{"line":50,"column":6},"end":{"line":50,"column":52}},{"start":{"line":50,"column":52},"end":{"line":50,"column":93}},{"start":{"line":50,"column":93},"end":{"line":50,"column":129}}],"line":50},"12":{"loc":{"start":{"line":55,"column":2},"end":{"line":64,"column":null}},"type":"if","locations":[{"start":{"line":55,"column":2},"end":{"line":64,"column":null}},{"start":{},"end":{}}],"line":55},"13":{"loc":{"start":{"line":57,"column":4},"end":{"line":63,"column":null}},"type":"if","locations":[{"start":{"line":57,"column":4},"end":{"line":63,"column":null}},{"start":{},"end":{}}],"line":57},"14":{"loc":{"start":{"line":67,"column":2},"end":{"line":76,"column":null}},"type":"if","locations":[{"start":{"line":67,"column":2},"end":{"line":76,"column":null}},{"start":{},"end":{}}],"line":67},"15":{"loc":{"start":{"line":69,"column":4},"end":{"line":75,"column":null}},"type":"if","locations":[{"start":{"line":69,"column":4},"end":{"line":75,"column":null}},{"start":{},"end":{}}],"line":69},"16":{"loc":{"start":{"line":79,"column":2},"end":{"line":88,"column":null}},"type":"if","locations":[{"start":{"line":79,"column":2},"end":{"line":88,"column":null}},{"start":{},"end":{}}],"line":79},"17":{"loc":{"start":{"line":79,"column":6},"end":{"line":79,"column":56}},"type":"binary-expr","locations":[{"start":{"line":79,"column":6},"end":{"line":79,"column":19}},{"start":{"line":79,"column":19},"end":{"line":79,"column":56}}],"line":79},"18":{"loc":{"start":{"line":81,"column":4},"end":{"line":87,"column":null}},"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":87,"column":null}},{"start":{},"end":{}}],"line":81},"19":{"loc":{"start":{"line":91,"column":2},"end":{"line":100,"column":null}},"type":"if","locations":[{"start":{"line":91,"column":2},"end":{"line":100,"column":null}},{"start":{},"end":{}}],"line":91},"20":{"loc":{"start":{"line":93,"column":4},"end":{"line":99,"column":null}},"type":"if","locations":[{"start":{"line":93,"column":4},"end":{"line":99,"column":null}},{"start":{},"end":{}}],"line":93},"21":{"loc":{"start":{"line":103,"column":2},"end":{"line":120,"column":null}},"type":"if","locations":[{"start":{"line":103,"column":2},"end":{"line":120,"column":null}},{"start":{},"end":{}}],"line":103},"22":{"loc":{"start":{"line":105,"column":4},"end":{"line":111,"column":null}},"type":"if","locations":[{"start":{"line":105,"column":4},"end":{"line":111,"column":null}},{"start":{},"end":{}}],"line":105},"23":{"loc":{"start":{"line":105,"column":8},"end":{"line":105,"column":24}},"type":"binary-expr","locations":[{"start":{"line":105,"column":8},"end":{"line":105,"column":17}},{"start":{"line":105,"column":17},"end":{"line":105,"column":24}}],"line":105},"24":{"loc":{"start":{"line":113,"column":4},"end":{"line":119,"column":null}},"type":"if","locations":[{"start":{"line":113,"column":4},"end":{"line":119,"column":null}},{"start":{},"end":{}}],"line":113},"25":{"loc":{"start":{"line":123,"column":2},"end":{"line":132,"column":null}},"type":"if","locations":[{"start":{"line":123,"column":2},"end":{"line":132,"column":null}},{"start":{},"end":{}}],"line":123},"26":{"loc":{"start":{"line":125,"column":4},"end":{"line":131,"column":null}},"type":"if","locations":[{"start":{"line":125,"column":4},"end":{"line":131,"column":null}},{"start":{},"end":{}}],"line":125},"27":{"loc":{"start":{"line":135,"column":2},"end":{"line":140,"column":null}},"type":"if","locations":[{"start":{"line":135,"column":2},"end":{"line":140,"column":null}},{"start":{},"end":{}}],"line":135},"28":{"loc":{"start":{"line":135,"column":6},"end":{"line":135,"column":67}},"type":"binary-expr","locations":[{"start":{"line":135,"column":6},"end":{"line":135,"column":28}},{"start":{"line":135,"column":28},"end":{"line":135,"column":67}}],"line":135},"29":{"loc":{"start":{"line":143,"column":2},"end":{"line":152,"column":null}},"type":"if","locations":[{"start":{"line":143,"column":2},"end":{"line":152,"column":null}},{"start":{},"end":{}}],"line":143},"30":{"loc":{"start":{"line":145,"column":4},"end":{"line":151,"column":null}},"type":"if","locations":[{"start":{"line":145,"column":4},"end":{"line":151,"column":null}},{"start":{},"end":{}}],"line":145},"31":{"loc":{"start":{"line":155,"column":2},"end":{"line":164,"column":null}},"type":"if","locations":[{"start":{"line":155,"column":2},"end":{"line":164,"column":null}},{"start":{},"end":{}}],"line":155},"32":{"loc":{"start":{"line":157,"column":4},"end":{"line":163,"column":null}},"type":"if","locations":[{"start":{"line":157,"column":4},"end":{"line":163,"column":null}},{"start":{},"end":{}}],"line":157},"33":{"loc":{"start":{"line":176,"column":2},"end":{"line":182,"column":null}},"type":"if","locations":[{"start":{"line":176,"column":2},"end":{"line":182,"column":null}},{"start":{},"end":{}}],"line":176},"34":{"loc":{"start":{"line":184,"column":2},"end":{"line":227,"column":null}},"type":"switch","locations":[{"start":{"line":185,"column":4},"end":{"line":190,"column":null}},{"start":{"line":191,"column":4},"end":{"line":196,"column":null}},{"start":{"line":197,"column":4},"end":{"line":202,"column":null}},{"start":{"line":203,"column":4},"end":{"line":208,"column":null}},{"start":{"line":209,"column":4},"end":{"line":214,"column":null}},{"start":{"line":215,"column":4},"end":{"line":220,"column":null}},{"start":{"line":221,"column":4},"end":{"line":226,"column":null}}],"line":184},"35":{"loc":{"start":{"line":195,"column":8},"end":{"line":195,"column":null}},"type":"cond-expr","locations":[{"start":{"line":195,"column":48},"end":{"line":195,"column":80}},{"start":{"line":195,"column":80},"end":{"line":195,"column":null}}],"line":195},"36":{"loc":{"start":{"line":195,"column":8},"end":{"line":195,"column":48}},"type":"binary-expr","locations":[{"start":{"line":195,"column":8},"end":{"line":195,"column":23}},{"start":{"line":195,"column":23},"end":{"line":195,"column":48}}],"line":195},"37":{"loc":{"start":{"line":237,"column":2},"end":{"line":239,"column":null}},"type":"if","locations":[{"start":{"line":237,"column":2},"end":{"line":239,"column":null}},{"start":{},"end":{}}],"line":237},"38":{"loc":{"start":{"line":241,"column":16},"end":{"line":241,"column":null}},"type":"binary-expr","locations":[{"start":{"line":241,"column":16},"end":{"line":241,"column":38}},{"start":{"line":241,"column":38},"end":{"line":241,"column":null}}],"line":241},"39":{"loc":{"start":{"line":242,"column":16},"end":{"line":242,"column":null}},"type":"binary-expr","locations":[{"start":{"line":242,"column":16},"end":{"line":242,"column":38}},{"start":{"line":242,"column":38},"end":{"line":242,"column":null}}],"line":242},"40":{"loc":{"start":{"line":246,"column":2},"end":{"line":383,"column":null}},"type":"switch","locations":[{"start":{"line":247,"column":4},"end":{"line":281,"column":null}},{"start":{"line":283,"column":4},"end":{"line":291,"column":null}},{"start":{"line":293,"column":4},"end":{"line":316,"column":null}},{"start":{"line":318,"column":4},"end":{"line":332,"column":null}},{"start":{"line":334,"column":4},"end":{"line":355,"column":null}},{"start":{"line":357,"column":4},"end":{"line":375,"column":null}},{"start":{"line":377,"column":4},"end":{"line":382,"column":null}}],"line":246},"41":{"loc":{"start":{"line":248,"column":6},"end":{"line":253,"column":null}},"type":"if","locations":[{"start":{"line":248,"column":6},"end":{"line":253,"column":null}},{"start":{},"end":{}}],"line":248},"42":{"loc":{"start":{"line":248,"column":10},"end":{"line":248,"column":60}},"type":"binary-expr","locations":[{"start":{"line":248,"column":10},"end":{"line":248,"column":29}},{"start":{"line":248,"column":29},"end":{"line":248,"column":48}},{"start":{"line":248,"column":48},"end":{"line":248,"column":60}}],"line":248},"43":{"loc":{"start":{"line":258,"column":21},"end":{"line":258,"column":null}},"type":"binary-expr","locations":[{"start":{"line":258,"column":21},"end":{"line":258,"column":35}},{"start":{"line":258,"column":35},"end":{"line":258,"column":48}},{"start":{"line":258,"column":48},"end":{"line":258,"column":null}}],"line":258},"44":{"loc":{"start":{"line":259,"column":28},"end":{"line":259,"column":53}},"type":"binary-expr","locations":[{"start":{"line":259,"column":28},"end":{"line":259,"column":48}},{"start":{"line":259,"column":48},"end":{"line":259,"column":53}}],"line":259},"45":{"loc":{"start":{"line":262,"column":21},"end":{"line":262,"column":null}},"type":"binary-expr","locations":[{"start":{"line":262,"column":21},"end":{"line":262,"column":35}},{"start":{"line":262,"column":35},"end":{"line":262,"column":48}},{"start":{"line":262,"column":48},"end":{"line":262,"column":null}}],"line":262},"46":{"loc":{"start":{"line":263,"column":32},"end":{"line":263,"column":61}},"type":"binary-expr","locations":[{"start":{"line":263,"column":32},"end":{"line":263,"column":56}},{"start":{"line":263,"column":56},"end":{"line":263,"column":61}}],"line":263},"47":{"loc":{"start":{"line":276,"column":49},"end":{"line":276,"column":75}},"type":"cond-expr","locations":[{"start":{"line":276,"column":67},"end":{"line":276,"column":73}},{"start":{"line":276,"column":73},"end":{"line":276,"column":75}}],"line":276},"48":{"loc":{"start":{"line":276,"column":124},"end":{"line":276,"column":171}},"type":"cond-expr","locations":[{"start":{"line":276,"column":163},"end":{"line":276,"column":169}},{"start":{"line":276,"column":169},"end":{"line":276,"column":171}}],"line":276},"49":{"loc":{"start":{"line":277,"column":6},"end":{"line":279,"column":null}},"type":"if","locations":[{"start":{"line":277,"column":6},"end":{"line":279,"column":null}},{"start":{},"end":{}}],"line":277},"50":{"loc":{"start":{"line":278,"column":55},"end":{"line":278,"column":81}},"type":"cond-expr","locations":[{"start":{"line":278,"column":73},"end":{"line":278,"column":79}},{"start":{"line":278,"column":79},"end":{"line":278,"column":81}}],"line":278},"51":{"loc":{"start":{"line":284,"column":6},"end":{"line":289,"column":null}},"type":"if","locations":[{"start":{"line":284,"column":6},"end":{"line":289,"column":null}},{"start":{},"end":{}}],"line":284},"52":{"loc":{"start":{"line":284,"column":10},"end":{"line":284,"column":46}},"type":"binary-expr","locations":[{"start":{"line":284,"column":10},"end":{"line":284,"column":29}},{"start":{"line":284,"column":29},"end":{"line":284,"column":46}}],"line":284},"53":{"loc":{"start":{"line":285,"column":27},"end":{"line":285,"column":null}},"type":"binary-expr","locations":[{"start":{"line":285,"column":27},"end":{"line":285,"column":49}},{"start":{"line":285,"column":49},"end":{"line":285,"column":null}}],"line":285},"54":{"loc":{"start":{"line":286,"column":8},"end":{"line":288,"column":null}},"type":"if","locations":[{"start":{"line":286,"column":8},"end":{"line":288,"column":null}},{"start":{},"end":{}}],"line":286},"55":{"loc":{"start":{"line":287,"column":26},"end":{"line":287,"column":57}},"type":"cond-expr","locations":[{"start":{"line":287,"column":45},"end":{"line":287,"column":52}},{"start":{"line":287,"column":52},"end":{"line":287,"column":57}}],"line":287},"56":{"loc":{"start":{"line":287,"column":83},"end":{"line":287,"column":110}},"type":"cond-expr","locations":[{"start":{"line":287,"column":102},"end":{"line":287,"column":108}},{"start":{"line":287,"column":108},"end":{"line":287,"column":110}}],"line":287},"57":{"loc":{"start":{"line":290,"column":41},"end":{"line":290,"column":67}},"type":"cond-expr","locations":[{"start":{"line":290,"column":59},"end":{"line":290,"column":65}},{"start":{"line":290,"column":65},"end":{"line":290,"column":67}}],"line":290},"58":{"loc":{"start":{"line":290,"column":98},"end":{"line":290,"column":124}},"type":"cond-expr","locations":[{"start":{"line":290,"column":116},"end":{"line":290,"column":122}},{"start":{"line":290,"column":122},"end":{"line":290,"column":124}}],"line":290},"59":{"loc":{"start":{"line":294,"column":6},"end":{"line":296,"column":null}},"type":"if","locations":[{"start":{"line":294,"column":6},"end":{"line":296,"column":null}},{"start":{},"end":{}}],"line":294},"60":{"loc":{"start":{"line":300,"column":21},"end":{"line":300,"column":null}},"type":"binary-expr","locations":[{"start":{"line":300,"column":21},"end":{"line":300,"column":35}},{"start":{"line":300,"column":35},"end":{"line":300,"column":48}},{"start":{"line":300,"column":48},"end":{"line":300,"column":null}}],"line":300},"61":{"loc":{"start":{"line":301,"column":28},"end":{"line":301,"column":53}},"type":"binary-expr","locations":[{"start":{"line":301,"column":28},"end":{"line":301,"column":48}},{"start":{"line":301,"column":48},"end":{"line":301,"column":53}}],"line":301},"62":{"loc":{"start":{"line":304,"column":6},"end":{"line":309,"column":null}},"type":"if","locations":[{"start":{"line":304,"column":6},"end":{"line":309,"column":null}},{"start":{},"end":{}}],"line":304},"63":{"loc":{"start":{"line":306,"column":56},"end":{"line":306,"column":103}},"type":"binary-expr","locations":[{"start":{"line":306,"column":56},"end":{"line":306,"column":70}},{"start":{"line":306,"column":70},"end":{"line":306,"column":83}},{"start":{"line":306,"column":83},"end":{"line":306,"column":94}},{"start":{"line":306,"column":94},"end":{"line":306,"column":103}}],"line":306},"64":{"loc":{"start":{"line":308,"column":43},"end":{"line":308,"column":69}},"type":"cond-expr","locations":[{"start":{"line":308,"column":61},"end":{"line":308,"column":67}},{"start":{"line":308,"column":67},"end":{"line":308,"column":69}}],"line":308},"65":{"loc":{"start":{"line":319,"column":6},"end":{"line":321,"column":null}},"type":"if","locations":[{"start":{"line":319,"column":6},"end":{"line":321,"column":null}},{"start":{},"end":{}}],"line":319},"66":{"loc":{"start":{"line":325,"column":55},"end":{"line":325,"column":93}},"type":"binary-expr","locations":[{"start":{"line":325,"column":55},"end":{"line":325,"column":77}},{"start":{"line":325,"column":77},"end":{"line":325,"column":93}}],"line":325},"67":{"loc":{"start":{"line":327,"column":32},"end":{"line":327,"column":66}},"type":"binary-expr","locations":[{"start":{"line":327,"column":32},"end":{"line":327,"column":46}},{"start":{"line":327,"column":46},"end":{"line":327,"column":59}},{"start":{"line":327,"column":59},"end":{"line":327,"column":66}}],"line":327},"68":{"loc":{"start":{"line":327,"column":95},"end":{"line":327,"column":121}},"type":"cond-expr","locations":[{"start":{"line":327,"column":113},"end":{"line":327,"column":119}},{"start":{"line":327,"column":119},"end":{"line":327,"column":121}}],"line":327},"69":{"loc":{"start":{"line":331,"column":41},"end":{"line":331,"column":67}},"type":"cond-expr","locations":[{"start":{"line":331,"column":59},"end":{"line":331,"column":65}},{"start":{"line":331,"column":65},"end":{"line":331,"column":67}}],"line":331},"70":{"loc":{"start":{"line":331,"column":99},"end":{"line":331,"column":125}},"type":"cond-expr","locations":[{"start":{"line":331,"column":117},"end":{"line":331,"column":123}},{"start":{"line":331,"column":123},"end":{"line":331,"column":125}}],"line":331},"71":{"loc":{"start":{"line":335,"column":6},"end":{"line":337,"column":null}},"type":"if","locations":[{"start":{"line":335,"column":6},"end":{"line":337,"column":null}},{"start":{},"end":{}}],"line":335},"72":{"loc":{"start":{"line":343,"column":8},"end":{"line":347,"column":null}},"type":"if","locations":[{"start":{"line":343,"column":8},"end":{"line":347,"column":null}},{"start":{},"end":{}}],"line":343},"73":{"loc":{"start":{"line":343,"column":12},"end":{"line":343,"column":32}},"type":"binary-expr","locations":[{"start":{"line":343,"column":12},"end":{"line":343,"column":24}},{"start":{"line":343,"column":24},"end":{"line":343,"column":32}}],"line":343},"74":{"loc":{"start":{"line":345,"column":17},"end":{"line":345,"column":63}},"type":"binary-expr","locations":[{"start":{"line":345,"column":17},"end":{"line":345,"column":35}},{"start":{"line":345,"column":35},"end":{"line":345,"column":52}},{"start":{"line":345,"column":52},"end":{"line":345,"column":63}}],"line":345},"75":{"loc":{"start":{"line":345,"column":70},"end":{"line":345,"column":106}},"type":"binary-expr","locations":[{"start":{"line":345,"column":70},"end":{"line":345,"column":84}},{"start":{"line":345,"column":84},"end":{"line":345,"column":97}},{"start":{"line":345,"column":97},"end":{"line":345,"column":106}}],"line":345},"76":{"loc":{"start":{"line":345,"column":113},"end":{"line":345,"column":153}},"type":"binary-expr","locations":[{"start":{"line":345,"column":113},"end":{"line":345,"column":129}},{"start":{"line":345,"column":129},"end":{"line":345,"column":144}},{"start":{"line":345,"column":144},"end":{"line":345,"column":153}}],"line":345},"77":{"loc":{"start":{"line":350,"column":6},"end":{"line":352,"column":null}},"type":"if","locations":[{"start":{"line":350,"column":6},"end":{"line":352,"column":null}},{"start":{},"end":{}}],"line":350},"78":{"loc":{"start":{"line":351,"column":51},"end":{"line":351,"column":77}},"type":"cond-expr","locations":[{"start":{"line":351,"column":69},"end":{"line":351,"column":75}},{"start":{"line":351,"column":75},"end":{"line":351,"column":77}}],"line":351},"79":{"loc":{"start":{"line":354,"column":73},"end":{"line":354,"column":99}},"type":"cond-expr","locations":[{"start":{"line":354,"column":91},"end":{"line":354,"column":97}},{"start":{"line":354,"column":97},"end":{"line":354,"column":99}}],"line":354},"80":{"loc":{"start":{"line":358,"column":6},"end":{"line":360,"column":null}},"type":"if","locations":[{"start":{"line":358,"column":6},"end":{"line":360,"column":null}},{"start":{},"end":{}}],"line":358},"81":{"loc":{"start":{"line":365,"column":48},"end":{"line":365,"column":86}},"type":"binary-expr","locations":[{"start":{"line":365,"column":48},"end":{"line":365,"column":70}},{"start":{"line":365,"column":70},"end":{"line":365,"column":86}}],"line":365},"82":{"loc":{"start":{"line":371,"column":54},"end":{"line":371,"column":103}},"type":"binary-expr","locations":[{"start":{"line":371,"column":54},"end":{"line":371,"column":73}},{"start":{"line":371,"column":73},"end":{"line":371,"column":91}},{"start":{"line":371,"column":91},"end":{"line":371,"column":103}}],"line":371},"83":{"loc":{"start":{"line":371,"column":139},"end":{"line":371,"column":172}},"type":"cond-expr","locations":[{"start":{"line":371,"column":164},"end":{"line":371,"column":170}},{"start":{"line":371,"column":170},"end":{"line":371,"column":172}}],"line":371},"84":{"loc":{"start":{"line":378,"column":6},"end":{"line":380,"column":null}},"type":"if","locations":[{"start":{"line":378,"column":6},"end":{"line":380,"column":null}},{"start":{},"end":{}}],"line":378},"85":{"loc":{"start":{"line":379,"column":43},"end":{"line":379,"column":69}},"type":"cond-expr","locations":[{"start":{"line":379,"column":61},"end":{"line":379,"column":67}},{"start":{"line":379,"column":67},"end":{"line":379,"column":69}}],"line":379},"86":{"loc":{"start":{"line":379,"column":100},"end":{"line":379,"column":126}},"type":"cond-expr","locations":[{"start":{"line":379,"column":118},"end":{"line":379,"column":124}},{"start":{"line":379,"column":124},"end":{"line":379,"column":126}}],"line":379}},"s":{"0":82,"1":33,"2":2,"3":31,"4":31,"5":77,"6":77,"7":24,"8":7,"9":3,"10":0,"11":3,"12":3,"13":3,"14":21,"15":21,"16":5,"17":3,"18":1,"19":3,"20":48,"21":48,"22":4,"23":44,"24":4,"25":40,"26":3,"27":37,"28":37,"29":3,"30":3,"31":3,"32":34,"33":34,"34":10,"35":10,"36":6,"37":28,"38":28,"39":8,"40":8,"41":4,"42":24,"43":24,"44":3,"45":3,"46":3,"47":21,"48":21,"49":3,"50":3,"51":2,"52":1,"53":1,"54":0,"55":19,"56":19,"57":3,"58":3,"59":3,"60":16,"61":16,"62":4,"63":12,"64":12,"65":0,"66":0,"67":0,"68":12,"69":12,"70":5,"71":5,"72":5,"73":7,"74":9,"75":9,"76":1,"77":8,"78":1,"79":2,"80":1,"81":1,"82":1,"83":1,"84":1,"85":17,"86":1,"87":16,"88":17,"89":17,"90":17,"91":17,"92":2,"93":1,"94":2,"95":1,"96":1,"97":1,"98":1,"99":2,"100":2,"101":1,"102":1,"103":1,"104":1,"105":1,"106":2,"107":1,"108":0,"109":1,"110":1,"111":2,"112":1,"113":1,"114":3,"115":3,"116":3,"117":2,"118":1,"119":3,"120":1,"121":2,"122":2,"123":17,"124":17,"125":2,"126":1,"127":2,"128":1,"129":1,"130":14,"131":15,"132":1,"133":2,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":2,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":2,"149":1,"150":1,"151":1,"152":1,"153":0,"154":2,"155":1,"156":1,"157":2,"158":4,"159":1,"160":1,"161":2,"162":1,"163":2,"164":1,"165":1},"f":{"0":82,"1":33,"2":3,"3":48,"4":9,"5":17,"6":2,"7":1,"8":2,"9":0,"10":1,"11":2,"12":14,"13":15,"14":1,"15":1,"16":1,"17":2,"18":2,"19":4,"20":1,"21":2},"b":{"0":[2,31],"1":[24,53],"2":[77,53],"3":[0,3],"4":[5,16],"5":[21,16,5],"6":[4,44],"7":[48,46,45],"8":[4,40],"9":[44,42,41],"10":[3,37],"11":[40,39,38],"12":[3,34],"13":[3,0],"14":[10,24],"15":[6,4],"16":[8,20],"17":[28,12],"18":[4,4],"19":[3,21],"20":[3,0],"21":[3,18],"22":[2,1],"23":[3,3],"24":[0,1],"25":[3,16],"26":[3,0],"27":[4,12],"28":[16,13],"29":[0,12],"30":[0,0],"31":[5,7],"32":[5,0],"33":[1,8],"34":[8,2,1,1,1,1,1],"35":[1,1],"36":[2,1],"37":[1,16],"38":[16,2],"39":[17,2],"40":[2,3,3,2,2,2,2],"41":[1,1],"42":[2,1,1],"43":[2,0,0],"44":[2,2],"45":[1,0,0],"46":[1,1],"47":[1,0],"48":[1,0],"49":[1,1],"50":[0,1],"51":[3,0],"52":[3,3],"53":[3,1],"54":[2,1],"55":[1,1],"56":[1,1],"57":[1,0],"58":[1,0],"59":[1,2],"60":[17,0,0],"61":[17,17],"62":[1,1],"63":[2,0,0,0],"64":[1,0],"65":[1,1],"66":[1,0],"67":[1,0,0],"68":[0,1],"69":[0,1],"70":[0,1],"71":[1,1],"72":[1,0],"73":[1,1],"74":[1,0,0],"75":[1,0,0],"76":[1,0,0],"77":[1,0],"78":[0,1],"79":[0,0],"80":[1,1],"81":[4,2],"82":[2,0,0],"83":[1,1],"84":[1,1],"85":[0,1],"86":[0,1]},"meta":{"lastBranch":87,"lastFunction":22,"lastStatement":166,"seen":{"f:9:9:9:19":0,"s:10:2:10:Infinity":0,"f:13:9:13:24":1,"b:14:2:14:Infinity:undefined:undefined:undefined:undefined":0,"s:14:2:14:Infinity":1,"s:14:19:14:Infinity":2,"s:15:21:15:Infinity":3,"s:16:2:21:Infinity":4,"s:17:23:17:Infinity":5,"b:18:4:20:Infinity:undefined:undefined:undefined:undefined":1,"s:18:4:20:Infinity":6,"b:18:8:18:43:18:43:18:95":2,"s:19:6:19:Infinity":7,"s:22:2:22:Infinity":8,"f:25:9:25:28":2,"b:26:2:26:Infinity:undefined:undefined:undefined:undefined":3,"s:26:2:26:Infinity":9,"s:26:19:26:Infinity":10,"s:27:21:27:Infinity":11,"s:28:26:28:Infinity":12,"s:29:2:34:Infinity":13,"s:30:23:30:Infinity":14,"b:31:4:33:Infinity:undefined:undefined:undefined:undefined":4,"s:31:4:33:Infinity":15,"b:31:9:31:44:31:44:31:99:31:99:31:117":5,"s:32:6:32:Infinity":16,"s:35:2:35:Infinity":17,"s:35:27:35:Infinity":18,"s:36:2:36:Infinity":19,"f:39:16:39:40":3,"s:40:21:40:Infinity":20,"b:42:2:44:Infinity:undefined:undefined:undefined:undefined":6,"s:42:2:44:Infinity":21,"b:42:6:42:46:42:46:42:84:42:84:42:121":7,"s:43:4:43:Infinity":22,"b:46:2:48:Infinity:undefined:undefined:undefined:undefined":8,"s:46:2:48:Infinity":23,"b:46:6:46:57:46:57:46:95:46:95:46:134":9,"s:47:4:47:Infinity":24,"b:50:2:52:Infinity:undefined:undefined:undefined:undefined":10,"s:50:2:52:Infinity":25,"b:50:6:50:52:50:52:50:93:50:93:50:129":11,"s:51:4:51:Infinity":26,"s:54:21:54:Infinity":27,"b:55:2:64:Infinity:undefined:undefined:undefined:undefined":12,"s:55:2:64:Infinity":28,"s:56:23:56:Infinity":29,"b:57:4:63:Infinity:undefined:undefined:undefined:undefined":13,"s:57:4:63:Infinity":30,"s:58:6:62:Infinity":31,"s:66:23:66:Infinity":32,"b:67:2:76:Infinity:undefined:undefined:undefined:undefined":14,"s:67:2:76:Infinity":33,"s:68:23:68:Infinity":34,"b:69:4:75:Infinity:undefined:undefined:undefined:undefined":15,"s:69:4:75:Infinity":35,"s:70:6:74:Infinity":36,"s:78:20:78:Infinity":37,"b:79:2:88:Infinity:undefined:undefined:undefined:undefined":16,"s:79:2:88:Infinity":38,"b:79:6:79:19:79:19:79:56":17,"s:80:23:80:Infinity":39,"b:81:4:87:Infinity:undefined:undefined:undefined:undefined":18,"s:81:4:87:Infinity":40,"s:82:6:86:Infinity":41,"s:90:27:90:Infinity":42,"b:91:2:100:Infinity:undefined:undefined:undefined:undefined":19,"s:91:2:100:Infinity":43,"s:92:23:92:Infinity":44,"b:93:4:99:Infinity:undefined:undefined:undefined:undefined":20,"s:93:4:99:Infinity":45,"s:94:6:98:Infinity":46,"s:102:29:102:Infinity":47,"b:103:2:120:Infinity:undefined:undefined:undefined:undefined":21,"s:103:2:120:Infinity":48,"s:104:27:104:Infinity":49,"b:105:4:111:Infinity:undefined:undefined:undefined:undefined":22,"s:105:4:111:Infinity":50,"b:105:8:105:17:105:17:105:24":23,"s:106:6:110:Infinity":51,"s:112:22:112:Infinity":52,"b:113:4:119:Infinity:undefined:undefined:undefined:undefined":24,"s:113:4:119:Infinity":53,"s:114:6:118:Infinity":54,"s:122:22:122:Infinity":55,"b:123:2:132:Infinity:undefined:undefined:undefined:undefined":25,"s:123:2:132:Infinity":56,"s:124:23:124:Infinity":57,"b:125:4:131:Infinity:undefined:undefined:undefined:undefined":26,"s:125:4:131:Infinity":58,"s:126:6:130:Infinity":59,"s:134:29:134:Infinity":60,"b:135:2:140:Infinity:undefined:undefined:undefined:undefined":27,"s:135:2:140:Infinity":61,"b:135:6:135:28:135:28:135:67":28,"s:136:4:139:Infinity":62,"s:142:23:142:Infinity":63,"b:143:2:152:Infinity:undefined:undefined:undefined:undefined":29,"s:143:2:152:Infinity":64,"s:144:23:144:Infinity":65,"b:145:4:151:Infinity:undefined:undefined:undefined:undefined":30,"s:145:4:151:Infinity":66,"s:146:6:150:Infinity":67,"s:154:20:154:Infinity":68,"b:155:2:164:Infinity:undefined:undefined:undefined:undefined":31,"s:155:2:164:Infinity":69,"s:156:23:156:Infinity":70,"b:157:4:163:Infinity:undefined:undefined:undefined:undefined":32,"s:157:4:163:Infinity":71,"s:158:6:162:Infinity":72,"s:166:2:166:Infinity":73,"f:169:16:169:44":4,"s:174:50:174:Infinity":74,"b:176:2:182:Infinity:undefined:undefined:undefined:undefined":33,"s:176:2:182:Infinity":75,"s:177:4:181:Infinity":76,"b:185:4:190:Infinity:191:4:196:Infinity:197:4:202:Infinity:203:4:208:Infinity:209:4:214:Infinity:215:4:220:Infinity:221:4:226:Infinity":34,"s:184:2:227:Infinity":77,"s:186:6:190:Infinity":78,"s:192:6:196:Infinity":79,"b:195:48:195:80:195:80:195:Infinity":35,"b:195:8:195:23:195:23:195:48":36,"s:198:6:202:Infinity":80,"s:204:6:208:Infinity":81,"s:210:6:214:Infinity":82,"s:216:6:220:Infinity":83,"s:222:6:226:Infinity":84,"f:230:16:230:Infinity":5,"b:237:2:239:Infinity:undefined:undefined:undefined:undefined":37,"s:237:2:239:Infinity":85,"s:238:4:238:Infinity":86,"s:241:16:241:Infinity":87,"b:241:16:241:38:241:38:241:Infinity":38,"s:242:16:242:Infinity":88,"b:242:16:242:38:242:38:242:Infinity":39,"s:243:20:243:Infinity":89,"s:244:20:244:Infinity":90,"b:247:4:281:Infinity:283:4:291:Infinity:293:4:316:Infinity:318:4:332:Infinity:334:4:355:Infinity:357:4:375:Infinity:377:4:382:Infinity":40,"s:246:2:383:Infinity":91,"b:248:6:253:Infinity:undefined:undefined:undefined:undefined":41,"s:248:6:253:Infinity":92,"b:248:10:248:29:248:29:248:48:248:48:248:60":42,"s:249:30:251:Infinity":93,"f:250:15:250:16":6,"s:250:34:250:56":94,"s:252:8:252:Infinity":95,"s:255:49:255:Infinity":96,"s:256:53:256:Infinity":97,"s:257:6:260:Infinity":98,"s:258:21:258:Infinity":99,"b:258:21:258:35:258:35:258:48:258:48:258:Infinity":43,"s:259:8:259:Infinity":100,"b:259:28:259:48:259:48:259:53":44,"s:261:6:264:Infinity":101,"s:262:21:262:Infinity":102,"b:262:21:262:35:262:35:262:48:262:48:262:Infinity":45,"s:263:8:263:Infinity":103,"b:263:32:263:56:263:56:263:61":46,"s:266:23:269:Infinity":104,"f:267:14:267:15":7,"s:267:24:267:35":105,"f:268:13:268:14":8,"s:268:32:268:54":106,"s:271:23:274:Infinity":107,"f:272:14:272:15":9,"s:272:24:272:35":108,"f:273:13:273:14":10,"s:273:32:273:54":109,"s:276:21:276:Infinity":110,"b:276:67:276:73:276:73:276:75":47,"b:276:163:276:169:276:169:276:171":48,"b:277:6:279:Infinity:undefined:undefined:undefined:undefined":49,"s:277:6:279:Infinity":111,"s:278:8:278:Infinity":112,"b:278:73:278:79:278:79:278:81":50,"s:280:6:280:Infinity":113,"b:284:6:289:Infinity:undefined:undefined:undefined:undefined":51,"s:284:6:289:Infinity":114,"b:284:10:284:29:284:29:284:46":52,"s:285:27:285:Infinity":115,"b:285:27:285:49:285:49:285:Infinity":53,"b:286:8:288:Infinity:undefined:undefined:undefined:undefined":54,"s:286:8:288:Infinity":116,"s:287:10:287:Infinity":117,"b:287:45:287:52:287:52:287:57":55,"b:287:102:287:108:287:108:287:110":56,"s:290:6:290:Infinity":118,"b:290:59:290:65:290:65:290:67":57,"b:290:116:290:122:290:122:290:124":58,"b:294:6:296:Infinity:undefined:undefined:undefined:undefined":59,"s:294:6:296:Infinity":119,"s:295:8:295:Infinity":120,"s:298:49:298:Infinity":121,"s:299:6:302:Infinity":122,"s:300:21:300:Infinity":123,"b:300:21:300:35:300:35:300:48:300:48:300:Infinity":60,"s:301:8:301:Infinity":124,"b:301:28:301:48:301:48:301:53":61,"b:304:6:309:Infinity:undefined:undefined:undefined:undefined":62,"s:304:6:309:Infinity":125,"s:305:25:307:Infinity":126,"f:306:15:306:16":11,"s:306:41:306:105":127,"b:306:56:306:70:306:70:306:83:306:83:306:94:306:94:306:103":63,"s:308:8:308:Infinity":128,"b:308:61:308:67:308:67:308:69":64,"s:311:23:314:Infinity":129,"f:312:14:312:15":12,"s:312:24:312:35":130,"f:313:13:313:14":13,"s:313:32:313:54":131,"s:315:6:315:Infinity":132,"b:319:6:321:Infinity:undefined:undefined:undefined:undefined":65,"s:319:6:321:Infinity":133,"s:320:8:320:Infinity":134,"s:323:29:329:Infinity":135,"f:324:13:324:14":14,"s:325:30:325:Infinity":136,"f:325:43:325:44":15,"s:325:55:325:93":137,"b:325:55:325:77:325:77:325:93":66,"s:326:28:326:Infinity":138,"s:327:10:327:Infinity":139,"b:327:32:327:46:327:46:327:59:327:59:327:66":67,"b:327:113:327:119:327:119:327:121":68,"s:331:6:331:Infinity":140,"b:331:59:331:65:331:65:331:67":69,"b:331:117:331:123:331:123:331:125":70,"b:335:6:337:Infinity:undefined:undefined:undefined:undefined":71,"s:335:6:337:Infinity":141,"s:336:8:336:Infinity":142,"s:339:42:339:Infinity":143,"s:340:6:348:Infinity":144,"s:341:25:341:Infinity":145,"f:341:36:341:37":16,"s:341:48:341:66":146,"s:342:23:342:Infinity":147,"f:342:34:342:35":17,"s:342:46:342:62":148,"b:343:8:347:Infinity:undefined:undefined:undefined:undefined":72,"s:343:8:347:Infinity":149,"b:343:12:343:24:343:24:343:32":73,"s:344:10:346:Infinity":150,"b:345:17:345:35:345:35:345:52:345:52:345:63":74,"b:345:70:345:84:345:84:345:97:345:97:345:106":75,"b:345:113:345:129:345:129:345:144:345:144:345:153":76,"b:350:6:352:Infinity:undefined:undefined:undefined:undefined":77,"s:350:6:352:Infinity":151,"s:351:8:351:Infinity":152,"b:351:69:351:75:351:75:351:77":78,"s:354:6:354:Infinity":153,"b:354:91:354:97:354:97:354:99":79,"b:358:6:360:Infinity:undefined:undefined:undefined:undefined":80,"s:358:6:360:Infinity":154,"s:359:8:359:Infinity":155,"s:362:21:368:Infinity":156,"f:363:13:363:14":18,"s:363:29:366:10":157,"f:365:36:365:37":19,"s:365:48:365:86":158,"b:365:48:365:70:365:70:365:86":81,"f:367:14:367:15":20,"s:367:24:367:53":159,"s:370:22:372:Infinity":160,"f:371:13:371:14":21,"s:371:39:371:174":161,"b:371:54:371:73:371:73:371:91:371:91:371:103":82,"b:371:164:371:170:371:170:371:172":83,"s:374:6:374:Infinity":162,"b:378:6:380:Infinity:undefined:undefined:undefined:undefined":84,"s:378:6:380:Infinity":163,"s:379:8:379:Infinity":164,"b:379:61:379:67:379:67:379:69":85,"b:379:118:379:124:379:124:379:126":86,"s:381:6:381:Infinity":165}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/stores/app.ts": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/stores/app.ts","statementMap":{"0":{"start":{"line":4,"column":35},"end":{"line":4,"column":null}},"1":{"start":{"line":5,"column":37},"end":{"line":5,"column":null}},"2":{"start":{"line":6,"column":29},"end":{"line":6,"column":null}},"3":{"start":{"line":7,"column":29},"end":{"line":7,"column":null}},"4":{"start":{"line":8,"column":43},"end":{"line":8,"column":null}},"5":{"start":{"line":9,"column":43},"end":{"line":9,"column":null}},"6":{"start":{"line":10,"column":31},"end":{"line":10,"column":null}},"7":{"start":{"line":11,"column":37},"end":{"line":11,"column":null}},"8":{"start":{"line":12,"column":29},"end":{"line":12,"column":null}},"9":{"start":{"line":13,"column":39},"end":{"line":13,"column":null}},"10":{"start":{"line":22,"column":43},"end":{"line":22,"column":null}},"11":{"start":{"line":23,"column":45},"end":{"line":23,"column":null}},"12":{"start":{"line":33,"column":41},"end":{"line":33,"column":null}},"13":{"start":{"line":41,"column":49},"end":{"line":41,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":4,"1":4,"2":4,"3":4,"4":4,"5":4,"6":4,"7":4,"8":4,"9":4,"10":4,"11":4,"12":4,"13":4},"f":{},"b":{},"meta":{"lastBranch":0,"lastFunction":0,"lastStatement":14,"seen":{"s:4:35:4:Infinity":0,"s:5:37:5:Infinity":1,"s:6:29:6:Infinity":2,"s:7:29:7:Infinity":3,"s:8:43:8:Infinity":4,"s:9:43:9:Infinity":5,"s:10:31:10:Infinity":6,"s:11:37:11:Infinity":7,"s:12:29:12:Infinity":8,"s:13:39:13:Infinity":9,"s:22:43:22:Infinity":10,"s:23:45:23:Infinity":11,"s:33:41:33:Infinity":12,"s:41:49:41:Infinity":13}}} +,"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/test/setup.ts": {"path":"/Users/prabhatranjan/.superset/worktrees/sensibledb/shelled-rubidium/sensibledb-explorer/src/frontend/src/test/setup.ts","statementMap":{"0":{"start":{"line":5,"column":0},"end":{"line":7,"column":null}},"1":{"start":{"line":5,"column":39},"end":{"line":7,"column":2}},"2":{"start":{"line":1,"column":0},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":0},"end":{"line":2,"column":null}},"4":{"start":{"line":9,"column":0},"end":{"line":9,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":32},"end":{"line":5,"column":39}},"loc":{"start":{"line":5,"column":39},"end":{"line":7,"column":2}},"line":5}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0},"f":{"0":0},"b":{},"meta":{"lastBranch":0,"lastFunction":1,"lastStatement":5,"seen":{"s:5:0:7:Infinity":0,"f:5:32:5:39":0,"s:5:39:7:2":1,"s:1:0:1:Infinity":2,"s:2:0:2:Infinity":3,"s:9:0:9:Infinity":4}}} +} diff --git a/sensibledb-explorer/src/frontend/coverage/favicon.png b/sensibledb-explorer/src/frontend/coverage/favicon.png new file mode 100644 index 00000000..c1525b81 Binary files /dev/null and b/sensibledb-explorer/src/frontend/coverage/favicon.png differ diff --git a/sensibledb-explorer/src/frontend/coverage/index.html b/sensibledb-explorer/src/frontend/coverage/index.html new file mode 100644 index 00000000..e15c9fad --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/index.html @@ -0,0 +1,341 @@ + + + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 37.93% + Statements + 913/2407 +
+ + +
+ 40.4% + Branches + 358/886 +
+ + +
+ 37.15% + Functions + 279/751 +
+ + +
+ 38.67% + Lines + 647/1673 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
src +
+
0%0/1310%0/490%0/470%0/81
src/components/chat +
+
57.98%178/30748.79%101/20756.66%51/9061.29%133/217
src/components/database +
+
0%0/800%0/120%0/220%0/57
src/components/editor +
+
0%0/590%0/220%0/190%0/39
src/components/entities +
+
0%0/2380%0/360%0/790%0/132
src/components/graph +
+
0%0/3630%0/1570%0/990%0/282
src/components/home +
+
0%0/710%0/40%0/260%0/48
src/components/onboarding +
+
70.1%258/36855.26%42/7667.21%82/12266.27%169/255
src/components/report +
+
0%0/1830%0/290%0/500%0/134
src/components/settings +
+
92.94%145/15688.23%45/51100%58/5891%91/100
src/components/sidebar +
+
71.15%111/15660.71%17/2867.18%43/6469.31%61/88
src/components/ui +
+
0%0/550%0/160%0/230%0/31
src/data +
+
0%0/3100%0/00%0/20%0/3
src/lib +
+
94.95%207/21876.88%153/19991.83%45/4995.21%179/188
src/stores +
+
100%14/14100%0/0100%0/0100%14/14
src/test +
+
0%0/5100%0/00%0/10%0/4
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/prettify.css b/sensibledb-explorer/src/frontend/coverage/prettify.css new file mode 100644 index 00000000..b317a7cd --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} diff --git a/sensibledb-explorer/src/frontend/coverage/prettify.js b/sensibledb-explorer/src/frontend/coverage/prettify.js new file mode 100644 index 00000000..b3225238 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/prettify.js @@ -0,0 +1,2 @@ +/* eslint-disable */ +window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/sensibledb-explorer/src/frontend/coverage/sort-arrow-sprite.png b/sensibledb-explorer/src/frontend/coverage/sort-arrow-sprite.png new file mode 100644 index 00000000..6ed68316 Binary files /dev/null and b/sensibledb-explorer/src/frontend/coverage/sort-arrow-sprite.png differ diff --git a/sensibledb-explorer/src/frontend/coverage/sorter.js b/sensibledb-explorer/src/frontend/coverage/sorter.js new file mode 100644 index 00000000..4ed70ae5 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/sorter.js @@ -0,0 +1,210 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + + // Try to create a RegExp from the searchValue. If it fails (invalid regex), + // it will be treated as a plain text search + let searchRegex; + try { + searchRegex = new RegExp(searchValue, 'i'); // 'i' for case-insensitive + } catch (error) { + searchRegex = null; + } + + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + let isMatch = false; + + if (searchRegex) { + // If a valid regex was created, use it for matching + isMatch = searchRegex.test(row.textContent); + } else { + // Otherwise, fall back to the original plain text search + isMatch = row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()); + } + + row.style.display = isMatch ? '' : 'none'; + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/sensibledb-explorer/src/frontend/coverage/src/App.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/App.tsx.html new file mode 100644 index 00000000..876faae9 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/App.tsx.html @@ -0,0 +1,607 @@ + + + + + + Code coverage report for src/App.tsx + + + + + + + + + +
+
+

All files / src App.tsx

+
+ +
+ 0% + Statements + 0/131 +
+ + +
+ 0% + Branches + 0/49 +
+ + +
+ 0% + Functions + 0/47 +
+ + +
+ 0% + Lines + 0/81 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, createEffect, onMount, Show } from "solid-js";
+import Sidebar from "./components/sidebar/Sidebar";
+import DatabaseManager from "./components/database/DatabaseManager";
+import GraphView from "./components/graph/GraphView";
+import NodeList from "./components/entities/NodeList";
+import EdgeList from "./components/entities/EdgeList";
+import SchemaBrowser from "./components/sidebar/SchemaBrowser";
+import SensibleQLEditor from "./components/editor/SensibleQLEditor";
+import HomeView from "./components/home/HomeView";
+import ChatView from "./components/chat/ChatView";
+import ReportView from "./components/report/ReportView";
+import ModelSettings from "./components/settings/ModelSettings";
+import GuidedTour, { isTourCompleted } from "./components/onboarding/GuidedTour";
+import { activeView, setActiveView, activeDb, nodes, edges, setDatabases, setActiveDb, setNodes, setEdges, setSchema, selectedNode, setSelectedNode } from "./stores/app";
+import { logError, dbList as apiDbList, nodeList, edgeList, schemaGet } from "./lib/api";
+import ErrorBoundaryComponent from "./components/ui/ErrorBoundary";
+import "./App.css";
+ 
+const loadDbData = async (dbName: string) => {
+  try {
+    const nodes = await nodeList(dbName);
+    setNodes(nodes);
+    const edges = await edgeList(dbName);
+    setEdges(edges);
+    const schema = await schemaGet(dbName);
+    setSchema(schema);
+  } catch (err) {
+    const errMsg = "[loadDbData] ERROR: " + String(err);
+    logError(errMsg).catch(() => {});
+  }
+};
+ 
+const App: Component = () => {
+  onMount(async () => {
+    try {
+      const dbs = await apiDbList();
+      setDatabases(dbs);
+      if (dbs.length > 0) {
+        const firstDb = dbs[0];
+        setActiveDb(firstDb);
+        await loadDbData(firstDb);
+      }
+    } catch (e) {
+    }
+ 
+    if (!isTourCompleted()) {
+      setTimeout(() => {
+        const tourEvent = new CustomEvent("show-tour");
+        window.dispatchEvent(tourEvent);
+      }, 1500);
+    }
+  });
+ 
+  createEffect(() => {
+    const handler = (e: KeyboardEvent) => {
+      if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) return;
+ 
+      if (e.key === "1") setActiveView("home");
+      else if (e.key === "2") setActiveView("graph");
+      else if (e.key === "3") setActiveView("chat");
+      else if (e.key === "4") setActiveView("report");
+      else if (e.key === "5") setActiveView("nodes");
+      else if (e.key === "6") setActiveView("edges");
+      else if (e.key === "7") setActiveView("schema");
+      else if (e.key === "8") setActiveView("sensibleql");
+      else if (e.key === "9") setActiveView("models");
+      else if (e.key === "9") setActiveView("models");
+      else if (e.key === "Escape") {
+        if (selectedNode()) setSelectedNode(null);
+        else setActiveView("home");
+      }
+      else if (e.key === "/" || (e.ctrlKey && e.key === "k")) {
+        e.preventDefault();
+        setActiveView("chat");
+      }
+      else if (e.ctrlKey && e.key === "g") {
+        e.preventDefault();
+        setActiveView("graph");
+      }
+      else if (e.ctrlKey && e.key === "r") {
+        e.preventDefault();
+        if (activeDb()) loadDbData(activeDb()!);
+      }
+    };
+ 
+    window.addEventListener("keydown", handler);
+    return () => window.removeEventListener("keydown", handler);
+  });
+ 
+  return (
+    <div class="app-layout">
+      <header class="app-header">
+        <div class="header-brand">
+          <svg class="header-logo" viewBox="0 0 40 40" width="28" height="28">
+            <circle cx="10" cy="10" r="3" fill="#6366f1"/>
+            <circle cx="30" cy="10" r="3" fill="#6366f1"/>
+            <circle cx="10" cy="30" r="3" fill="#6366f1"/>
+            <circle cx="30" cy="30" r="3" fill="#6366f1"/>
+            <circle cx="20" cy="20" r="4" fill="#06b6d4"/>
+            <line x1="10" y1="10" x2="20" y2="20" stroke="#6366f1" stroke-width="1.5" opacity="0.6"/>
+            <line x1="30" y1="10" x2="20" y2="20" stroke="#6366f1" stroke-width="1.5" opacity="0.6"/>
+            <line x1="10" y1="30" x2="20" y2="20" stroke="#6366f1" stroke-width="1.5" opacity="0.6"/>
+            <line x1="30" y1="30" x2="20" y2="20" stroke="#6366f1" stroke-width="1.5" opacity="0.6"/>
+          </svg>
+          <span class="header-title">Sensible<span class="header-accent">DB</span></span>
+        </div>
+        <div class="header-db-selector">
+          <Show when={activeDb()}>
+            <span class="badge blue">{activeDb()}</span>
+          </Show>
+        </div>
+        <div class="header-actions">
+          <button class="icon-btn" title="Settings">⚙</button>
+        </div>
+      </header>
+ 
+      <div class="app-body">
+        <Sidebar />
+        <main class="main-content">
+          <Show when={activeView() === "home"}>
+            <ErrorBoundaryComponent><HomeView /></ErrorBoundaryComponent>
+          </Show>
+          <Show when={activeView() === "graph"}>
+            <ErrorBoundaryComponent><GraphView /></ErrorBoundaryComponent>
+          </Show>
+          <Show when={activeView() === "chat"}>
+            <ErrorBoundaryComponent><ChatView /></ErrorBoundaryComponent>
+          </Show>
+          <Show when={activeView() === "report"}>
+            <ErrorBoundaryComponent><ReportView /></ErrorBoundaryComponent>
+          </Show>
+          <Show when={activeView() === "nodes"}>
+            <ErrorBoundaryComponent><NodeList /></ErrorBoundaryComponent>
+          </Show>
+          <Show when={activeView() === "edges"}>
+            <ErrorBoundaryComponent><EdgeList /></ErrorBoundaryComponent>
+          </Show>
+          <Show when={activeView() === "schema"}>
+            <ErrorBoundaryComponent><SchemaBrowser /></ErrorBoundaryComponent>
+          </Show>
+          <Show when={activeView() === "sensibleql"}>
+            <ErrorBoundaryComponent><SensibleQLEditor /></ErrorBoundaryComponent>
+          </Show>
+          <Show when={activeView() === "models"}>
+            <ErrorBoundaryComponent><ModelSettings /></ErrorBoundaryComponent>
+          </Show>
+          <Show when={activeView() === "models"}>
+            <ErrorBoundaryComponent><ModelSettings /></ErrorBoundaryComponent>
+          </Show>
+        </main>
+        <aside class="right-panel">
+          <DatabaseManager />
+        </aside>
+      </div>
+ 
+      <footer class="status-bar">
+        <Show when={activeDb()}>
+          <span>Connected to <strong>{activeDb()}</strong></span>
+          <span class="status-separator">•</span>
+          <span>{nodes().length} items</span>
+          <span class="status-separator">•</span>
+          <span>{edges().length} connections</span>
+        </Show>
+        <Show when={!activeDb()}>
+          <span>No database connected</span>
+        </Show>
+      </footer>
+ 
+      <GuidedTour />
+    </div>
+  );
+};
+ 
+export default App;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/chat/ChatView.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/chat/ChatView.tsx.html new file mode 100644 index 00000000..408a0d05 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/chat/ChatView.tsx.html @@ -0,0 +1,1708 @@ + + + + + + Code coverage report for src/components/chat/ChatView.tsx + + + + + + + + + +
+
+

All files / src/components/chat ChatView.tsx

+
+ +
+ 57.98% + Statements + 178/307 +
+ + +
+ 48.79% + Branches + 101/207 +
+ + +
+ 56.66% + Functions + 51/90 +
+ + +
+ 61.29% + Lines + 133/217 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +7x +  +  +  +1x +1x +  +1x +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +5x +  +5x +2x +  +  +3x +1x +  +  +2x +1x +  +  +1x +  +  +  +1x +1x +  +  +  +  +  +1x +  +1x +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +5x +5x +  +  +  +  +  +  +  +  +  +5x +  +  +  +  +  +  +  +  +  +  +  +3x +3x +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +3x +  +  +  +5x +  +  +5x +  +  +5x +  +  +5x +  +  +5x +  +  +1x +8x +8x +8x +8x +8x +  +  +8x +8x +  +  +8x +8x +  +  +8x +5x +5x +5x +5x +3x +  +2x +  +5x +  +  +  +8x +5x +5x +  +5x +5x +5x +  +5x +5x +  +5x +  +5x +5x +  +5x +  +  +5x +  +5x +  +5x +5x +  +5x +3x +  +3x +  +  +3x +3x +3x +3x +2x +  +  +  +2x +  +  +5x +  +5x +  +  +  +  +  +  +  +  +  +  +5x +  +5x +  +  +  +  +  +  +  +  +5x +  +  +2x +1x +  +  +  +8x +1x +  +  +8x +  +  +  +  +  +  +  +  +  +  +8x +  +  +  +  +  +  +  +  +  +8x +26x +8x +8x +8x +  +  +  +  +  +  +  +8x +  +  +26x +18x +18x +  +18x +  +  +18x +  +18x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +18x +  +  +18x +  +  +1x +18x +  +  +  +  +18x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +18x +  +  +  +  +  +  +18x +  +5x +15x +  +  +15x +  +15x +  +18x +  +  +  +  +18x +  +  +  +18x +  +  +  +  +  +  +  +18x +  +18x +  +  +  +  +  +  +  +  +  +8x +  +  +  +26x +  +  +32x +32x +32x +  +8x +  +  +  +  +  +  +8x +75x +79x +  +97x +  +97x +  +  +  +  +  +  +  +  +1x + 
import { Component, createSignal, createEffect, For, onMount, Show } from "solid-js";
+import { invoke } from "@tauri-apps/api/core";
+import { activeDb, nodes, edges, schema, setActiveView, setChatContext, setLastQueryResult } from "../../stores/app";
+import type { SchemaInfo } from "../../types";
+import { sensibleqlExecute } from "../../lib/api";
+import "./ChatView.css";
+ 
+interface Message {
+  role: "user" | "assistant";
+  content: string;
+  data?: any;
+  timestamp: number;
+  sensibleql?: string;
+  queryType?: string;
+  followUps?: string[];
+  structuredData?: StructuredResponse;
+  explanation?: string;
+}
+ 
+interface StructuredResponse {
+  type: "typeBreakdown" | "mostConnected" | "relationshipPath" | "count" | "list";
+  title: string;
+  items: any[];
+  summary: string;
+}
+ 
+const initialSuggestions = [
+  "What data do I have?",
+  "Show me all items",
+  "How many connections are there?",
+  "What types of items exist?",
+];
+ 
+function normalize(input: string): string {
+  return input.toLowerCase().trim();
+}
+ 
+function findEntityType(input: string, schemaInfo: SchemaInfo | null): string | null {
+  const lower = normalize(input);
+  Eif (!schemaInfo) return null;
+  const allTypes = [...(schemaInfo.node_labels || [])];
+  for (const type of allTypes) {
+    const typeLower = type.toLowerCase();
+    if (lower.includes(typeLower) || lower.includes(typeLower.replace(/_/g, " "))) {
+      return type;
+    }
+  }
+  return null;
+}
+ 
+function findTwoEntityTypes(input: string, schemaInfo: SchemaInfo | null): [string | null, string | null] {
+  const lower = normalize(input);
+  Eif (!schemaInfo) return [null, null];
+  const found: string[] = [];
+  for (const type of schemaInfo.node_labels || []) {
+    const typeLower = type.toLowerCase();
+    if (lower.includes(typeLower) || lower.includes(typeLower.replace(/_/g, " "))) {
+      found.push(type);
+      if (found.length === 2) break;
+    }
+  }
+  return [found[0] || null, found[1] || null];
+}
+ 
+export function translateNLtoSensibleQL(input: string, schemaInfo: SchemaInfo | null): { sensibleql: string; queryType: string } {
+  const lower = normalize(input);
+ 
+  if (lower.match(/what data do i have|show me all items|list all|overview/)) {
+    return { sensibleql: "MATCH (n) RETURN n", queryType: "overview" };
+  }
+ 
+  if (lower.match(/how many connections|how many edges|count edges|number of connections/)) {
+    return { sensibleql: "COUNT edges", queryType: "count" };
+  }
+ 
+  if (lower.match(/what types|what kinds|distinct types|all types|item types/)) {
+    return { sensibleql: "MATCH (n) RETURN DISTINCT labels(n)", queryType: "types" };
+  }
+ 
+  Iif (lower.match(/show me the most connected|most connected|top connected|most connections/)) {
+    return { sensibleql: "MATCH (n)-[r]-(m) RETURN n, count(r) as connections ORDER BY connections DESC", queryType: "mostConnected" };
+  }
+ 
+  const twoTypes = findTwoEntityTypes(input, schemaInfo);
+  Iif (twoTypes[0] && twoTypes[1]) {
+    if (lower.match(/show|find|get|list/)) {
+      return { sensibleql: `MATCH (n:${twoTypes[0]})--(m:${twoTypes[1]}) RETURN n, m`, queryType: "relationship" };
+    }
+  }
+ 
+  const entityType = findEntityType(input, schemaInfo);
+ 
+  Iif (lower.match(/what causes|what triggers|what leads to/)) {
+    const symptom = entityType || "Symptom";
+    return { sensibleql: `MATCH (n:${symptom})<-[r]-(m) RETURN n, r, m`, queryType: "causes" };
+  }
+ 
+  Iif (lower.match(/how many.*are there|count.*how many|number of/)) {
+    const type = entityType || "n";
+    const sensibleql = entityType ? `MATCH (n:${entityType}) RETURN count(n)` : "COUNT nodes";
+    return { sensibleql, queryType: "count" };
+  }
+ 
+  Iif (lower.match(/show me all|list all|get all|find all/)) {
+    if (entityType) {
+      return { sensibleql: `MATCH (n:${entityType}) RETURN n`, queryType: "list" };
+    }
+    return { sensibleql: "MATCH (n) RETURN n", queryType: "list" };
+  }
+ 
+  Iif (lower.match(/what.*connected to|connections for|related to|linked to/)) {
+    if (entityType) {
+      return { sensibleql: `MATCH (n:${entityType})-[r]-(m) RETURN n, r, m`, queryType: "connections" };
+    }
+    return { sensibleql: "MATCH (n)-[r]-(m) RETURN n, r, m", queryType: "connections" };
+  }
+ 
+  Iif (lower.match(/show me|show|find|get/)) {
+    if (entityType) {
+      return { sensibleql: `MATCH (n:${entityType}) RETURN n`, queryType: "list" };
+    }
+  }
+ 
+  return { sensibleql: input, queryType: "raw" };
+}
+ 
+async function translateNLtoSensibleQLWithLLM(
+  query: string,
+  schemaInfo: SchemaInfo | null,
+  activeDb: string
+): Promise<{ sensibleql: string; queryType: string; explanation?: string }> {
+  try {
+    const result = await invoke<{ sensibleql: string; explanation?: string }>("translate_nl_to_sensibleql", {
+      request: {
+        query,
+        schema_info: schemaInfo ? JSON.stringify(schemaInfo) : null,
+        db_name: activeDb,
+      },
+      model: null,
+      ollamaUrl: null,
+    });
+ 
+    return {
+      sensibleql: result.sensibleql,
+      queryType: "llm",
+      explanation: result.explanation,
+    };
+  } catch (e) {
+    console.warn("LLM translation failed, falling back to regex:", e);
+    return translateNLtoSensibleQL(query, schemaInfo);
+  }
+}
+ 
+function generateStructuredResponse(queryType: string, result: any, schemaInfo: SchemaInfo | null): StructuredResponse | null {
+  const nodes = result?.data?.nodes || [];
+  const edgeCount = result?.data?.edges?.length || 0;
+ 
+  Iif (queryType === "overview" || queryType === "list") {
+    const typeCounts: Record<string, number> = {};
+    for (const node of nodes) {
+      const label = node?.label || "Unknown";
+      const type = node?.type || label;
+      typeCounts[type] = (typeCounts[type] || 0) + 1;
+    }
+ 
+    const breakdownItems = Object.entries(typeCounts).map(([type, count]) => ({ type, count }));
+ 
+    return {
+      type: "typeBreakdown",
+      title: `I found ${nodes.length} item${nodes.length !== 1 ? "s" : ""}`,
+      items: breakdownItems,
+      summary: nodes.length > 0
+        ? `across ${breakdownItems.length} type${breakdownItems.length !== 1 ? "s" : ""}`
+        : "but no items matched your query",
+    };
+  }
+ 
+  Iif (queryType === "mostConnected") {
+    const connectedItems = nodes.slice(0, 5).map((n: any, i: number) => ({
+      name: n?.label || `Item ${n?.id || i + 1}`,
+      connections: n?.connections || n?.connection_count || edgeCount,
+      type: n?.type || n?.label || "Unknown",
+    }));
+ 
+    return {
+      type: "mostConnected",
+      title: "Most connected items",
+      items: connectedItems,
+      summary: `The top item "${connectedItems[0]?.name}" has ${connectedItems[0]?.connections} connections`,
+    };
+  }
+ 
+  Iif (queryType === "connections" || queryType === "relationship" || queryType === "causes") {
+    const pathItems = nodes.slice(0, 8).map((n: any) => ({
+      name: n?.label || `Item ${n?.id || "?"}`,
+      type: n?.type || n?.label || "Unknown",
+    }));
+ 
+    return {
+      type: "relationshipPath",
+      title: `Found ${nodes.length} connected item${nodes.length !== 1 ? "s" : ""}`,
+      items: pathItems,
+      summary: edgeCount > 0 ? `via ${edgeCount} connection${edgeCount !== 1 ? "s" : ""}` : "with direct relationships",
+    };
+  }
+ 
+  Iif (queryType === "count") {
+    return {
+      type: "count",
+      title: `Count: ${nodes.length || edgeCount}`,
+      items: [],
+      summary: nodes.length > 0 ? `found ${nodes.length} items` : `found ${edgeCount} connections`,
+    };
+  }
+ 
+  return null;
+}
+ 
+function generateFollowUps(queryType: string, structuredData: StructuredResponse | null): string[] {
+  Iif (queryType === "overview" || queryType === "list") {
+    return ["Show details", "What are they connected to?", "Filter by type"];
+  }
+  Iif (queryType === "connections" || queryType === "relationship" || queryType === "causes") {
+    return ["Show on graph", "What's the strongest link?", "Export results"];
+  }
+  Iif (queryType === "count") {
+    return ["Show me the details", "Break down by type", "Compare with last period"];
+  }
+  Iif (queryType === "mostConnected") {
+    return ["Show on graph", "Why is it most connected?", "Show details"];
+  }
+  return ["Show on graph", "Ask follow-up", "How did I get this?"];
+}
+ 
+const ChatView: Component = () => {
+  const [messages, setMessages] = createSignal<Message[]>([]);
+  const [input, setInput] = createSignal("");
+  const [isLoading, setIsLoading] = createSignal(false);
+  const [isLlmProcessing, setIsLlmProcessing] = createSignal(false);
+  const [expandedNql, setExpandedNql] = createSignal<Set<number>>(new Set());
+  let messagesEnd: HTMLDivElement | undefined;
+ 
+  const scrollToBottom = () => {
+    messagesEnd?.scrollIntoView({ behavior: "smooth" });
+  };
+ 
+  createEffect(() => {
+    scrollToBottom();
+  });
+ 
+  const executeQuery = async (query: string) => {
+    Iif (!activeDb()) return;
+    setIsLoading(true);
+    try {
+      const result = await sensibleqlExecute(activeDb()!, query);
+      return result;
+    } catch (e: any) {
+      return { success: false, message: String(e), data: null };
+    } finally {
+      setIsLoading(false);
+    }
+  };
+ 
+  const sendMessage = async (text?: string) => {
+    const query = text || input();
+    Iif (!query.trim() || !activeDb()) return;
+ 
+    const userMsg: Message = { role: "user", content: query, timestamp: Date.now() };
+    setMessages(prev => [...prev, userMsg]);
+    setInput("");
+ 
+    const schemaInfo = schema();
+    const dbName = activeDb()!;
+    
+    setIsLlmProcessing(true);
+    let translation: { sensibleql: string; queryType: string; explanation?: string };
+    try {
+      translation = await translateNLtoSensibleQLWithLLM(query, schemaInfo, dbName);
+    } finally {
+      setIsLlmProcessing(false);
+    }
+ 
+    const { sensibleql, queryType, explanation } = translation;
+ 
+    const result = await executeQuery(sensibleql);
+ 
+    let response = "";
+    let structuredData: StructuredResponse | null = null;
+ 
+    if (result?.success) {
+      structuredData = generateStructuredResponse(queryType, result, schemaInfo);
+ 
+      Iif (structuredData) {
+        response = `${structuredData.title} ${structuredData.summary}`;
+      } else {
+        const n = result.data?.nodes?.length || 0;
+        const e = result.data?.edges?.length || 0;
+        response = `I found ${n} item${n !== 1 ? "s" : ""} and ${e} connection${e !== 1 ? "s" : ""} matching your question.`;
+        if (n > 0 && n <= 10) {
+          response += "\n\nHere they are:\n" + result.data.nodes.map((node: any) => `• ${node.label}`).join("\n");
+        }
+      }
+    } else {
+      response = `I couldn't understand that question. Try asking about specific item types like "people", "tasks", or "symptoms".`;
+    }
+ 
+    const followUps = generateFollowUps(queryType, structuredData);
+ 
+    const assistantMsg: Message = {
+      role: "assistant",
+      content: response,
+      data: result?.data,
+      timestamp: Date.now(),
+      sensibleql,
+      queryType,
+      followUps,
+      structuredData: structuredData || undefined,
+      explanation,
+    };
+    setMessages(prev => [...prev, assistantMsg]);
+ 
+    setChatContext({
+      lastQuery: query,
+      lastNql: sensibleql,
+      lastResultType: queryType as any,
+      lastEntityTypes: schemaInfo?.node_labels || [],
+      lastItemCount: result?.data?.nodes?.length || 0,
+      lastEdgeCount: result?.data?.edges?.length || 0,
+    });
+ 
+    setLastQueryResult({
+      sensibleql,
+      data: result?.data || null,
+      nodes: result?.data?.nodes?.map((n: any) => n.id) || [],
+      edges: result?.data?.edges?.map((e: any) => e.id) || [],
+    });
+  };
+ 
+  const handleSuggestion = (suggestion: string) => {
+    sendMessage(suggestion);
+  };
+ 
+  const handleFollowUp = (followUp: string) => {
+    if (followUp === "Show on graph") {
+      setActiveView("graph");
+      return;
+    }
+    if (followUp === "How did I get this?") {
+      return;
+    }
+    sendMessage(followUp);
+  };
+ 
+  const toggleNqlExpand = (index: number) => {
+    const newSet = new Set(expandedNql());
+    if (newSet.has(index)) {
+      newSet.delete(index);
+    } else {
+      newSet.add(index);
+    }
+    setExpandedNql(newSet);
+  };
+ 
+  createEffect(() => {
+    if (messages().length === 0 && activeDb()) {
+      const n = nodes().length;
+      const e = edges().length;
+      setMessages([{
+        role: "assistant",
+        content: `I can see your database has ${n} items and ${e} connections. Ask me anything about your data!`,
+        timestamp: Date.now(),
+      }]);
+    }
+  });
+ 
+  return (
+    <div class="chat-view">
+      <div class="chat-messages">
+        <For each={messages()}>
+          {(msg, index) => (
+            <div class={`chat-message ${msg.role}`}>
+              <div class="message-avatar">
+                {msg.role === "user" ? "👤" : "🤖"}
+              </div>
+              <div class="message-content">
+                <div class="message-text">{msg.content}</div>
+ 
+                <Show when={msg.structuredData}>
+                  {structured => (
+                    <div class="structured-response">
+                      <Show when={structured().type === "typeBreakdown"}>
+                        <div class="type-breakdown">
+                          <For each={structured().items}>
+                            {(item) => (
+                              <div class="type-item">
+                                <span class="type-count">{item.count}</span>
+                                <span class="type-label">{item.type}</span>
+                              </div>
+                            )}
+                          </For>
+                        </div>
+                      </Show>
+ 
+                      <Show when={structured().type === "mostConnected"}>
+                        <div class="most-connected-list">
+                          <For each={structured().items}>
+                            {(item, i) => (
+                              <div class="connected-item">
+                                <span class="rank">#{i() + 1}</span>
+                                <span class="item-name">{item.name}</span>
+                                <span class="item-type">{item.type}</span>
+                                <span class="item-connections">{item.connections} connections</span>
+                              </div>
+                            )}
+                          </For>
+                        </div>
+                      </Show>
+ 
+                      <Show when={structured().type === "relationshipPath"}>
+                        <div class="relationship-path">
+                          <For each={structured().items}>
+                            {(item, i) => (
+                              <>
+                                <span class="path-node">{item.name}</span>
+                                <Show when={i() < structured().items.length - 1}>
+                                  <span class="path-connector">→</span>
+                                </Show>
+                              </>
+                            )}
+                          </For>
+                        </div>
+                      </Show>
+                    </div>
+                  )}
+                </Show>
+ 
+                <Show when={msg.data && msg.data.nodes && msg.data.nodes.length > 0}>
+                  <div class="message-data">
+                    <details>
+                      <summary>Show raw data ({msg.data.nodes.length} items)</summary>
+                      <pre>{JSON.stringify(msg.data, null, 2)}</pre>
+                    </details>
+                  </div>
+                </Show>
+ 
+                <Show when={msg.sensibleql}>
+                  <div class="sensibleql-explain-section">
+                    <button
+                      class="sensibleql-toggle-btn"
+                      onClick={() => toggleNqlExpand(index())}
+                    >
+                      {expandedNql().has(index()) ? "▾" : "▸"} How did I get this?
+                    </button>
+                    <Show when={expandedNql().has(index())}>
+                      <div class="sensibleql-explanation">
+                        <Show when={msg.explanation}>
+                          <p class="explanation-text">
+                            <span class="explanation-badge">LLM</span> {msg.explanation}
+                          </p>
+                        </Show>
+                        <div class="sensibleql-code">
+                          <code>{msg.sensibleql}</code>
+                        </div>
+                      </div>
+                    </Show>
+                  </div>
+                </Show>
+ 
+                <Show when={msg.followUps && msg.followUps.length > 0}>
+                  <div class="follow-up-chips">
+                    <For each={msg.followUps}>
+                      {(fu) => (
+                        <button
+                          class="follow-up-chip"
+                          onClick={() => handleFollowUp(fu)}
+                        >
+                          {fu}
+                        </button>
+                      )}
+                    </For>
+                  </div>
+                </Show>
+ 
+                <Show when={msg.queryType && msg.data?.nodes?.length > 0}>
+                  <div class="message-actions">
+                    <button
+                      class="action-btn show-on-graph"
+                      onClick={() => setActiveView("graph")}
+                    >
+                      Show on graph
+                    </button>
+                  </div>
+                </Show>
+              </div>
+            </div>
+          )}
+        </For>
+        {isLoading() && (
+          <div class="chat-message assistant">
+            <div class="message-avatar">🤖</div>
+            <div class="message-content">
+              <div class="typing-indicator">
+                <span></span><span></span><span></span>
+              </div>
+            </div>
+          </div>
+        )}
+        <div ref={messagesEnd!} />
+      </div>
+ 
+      <div class="chat-input-area">
+        <Show when={messages().length <= 1}>
+          <div class="chat-suggestions">
+            <For each={initialSuggestions}>
+              {(s) => (
+                <button class="suggestion-btn" onClick={() => handleSuggestion(s)}>
+                  {s}
+                </button>
+              )}
+            </For>
+          </div>
+        </Show>
+        <div class="chat-input-row">
+          <input
+            type="text"
+            value={input()}
+            onInput={(e) => setInput(e.currentTarget.value)}
+            onKeyDown={(e) => e.key === "Enter" && !isLoading() && sendMessage()}
+            placeholder={activeDb() ? "Ask about your data..." : "Connect to a database first"}
+            disabled={!activeDb() || isLoading()}
+          />
+          <button onClick={() => sendMessage()} disabled={!activeDb() || isLoading() || !input().trim()}>
+            Send
+          </button>
+        </div>
+      </div>
+    </div>
+  );
+};
+ 
+export default ChatView;E
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/chat/index.html b/sensibledb-explorer/src/frontend/coverage/src/components/chat/index.html new file mode 100644 index 00000000..a6a1497c --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/chat/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src/components/chat + + + + + + + + + +
+
+

All files src/components/chat

+
+ +
+ 57.98% + Statements + 178/307 +
+ + +
+ 48.79% + Branches + 101/207 +
+ + +
+ 56.66% + Functions + 51/90 +
+ + +
+ 61.29% + Lines + 133/217 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
ChatView.tsx +
+
57.98%178/30748.79%101/20756.66%51/9061.29%133/217
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/database/DatabaseManager.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/database/DatabaseManager.tsx.html new file mode 100644 index 00000000..724b4839 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/database/DatabaseManager.tsx.html @@ -0,0 +1,415 @@ + + + + + + Code coverage report for src/components/database/DatabaseManager.tsx + + + + + + + + + +
+
+

All files / src/components/database DatabaseManager.tsx

+
+ +
+ 0% + Statements + 0/80 +
+ + +
+ 0% + Branches + 0/12 +
+ + +
+ 0% + Functions + 0/22 +
+ + +
+ 0% + Lines + 0/57 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, createSignal, Show, For } from "solid-js";
+import { dbCreate, dbOpen, dbList, dbClose, nodeList, edgeList, schemaGet } from "../../lib/api";
+import { databases, setDatabases, activeDb, setActiveDb, setNodes, setEdges, setSchema } from "../../stores/app";
+import "./DatabaseManager.css";
+ 
+const dbDescriptions: Record<string, string> = {
+  "health-patterns": "Health & symptom tracking — explore how events trigger symptoms",
+  "project-management": "Project management — track team, tasks, dependencies, and tools",
+};
+ 
+const dbIcons: Record<string, string> = {
+  "health-patterns": "🏥",
+  "project-management": "📋",
+};
+ 
+const DatabaseManager: Component = () => {
+  const [name, setName] = createSignal("");
+  const [path, setPath] = createSignal("");
+  const [isExpanded, setIsExpanded] = createSignal(true);
+ 
+  const loadDbData = async (dbName: string) => {
+    const nodes = await nodeList(dbName);
+    setNodes(nodes);
+    const edges = await edgeList(dbName);
+    setEdges(edges);
+    const schema = await schemaGet(dbName);
+    setSchema(schema);
+  };
+ 
+  const handleCreate = async () => {
+    try {
+      await dbCreate(name(), path());
+      const dbs = await dbList();
+      setDatabases(dbs);
+      setActiveDb(name());
+      await loadDbData(name());
+    } catch (e: any) {
+      alert(`Failed to create database: ${e}`);
+    }
+  };
+ 
+  const handleOpen = async () => {
+    try {
+      await dbOpen(name(), path());
+      const dbs = await dbList();
+      setDatabases(dbs);
+      setActiveDb(name());
+      await loadDbData(name());
+    } catch (e: any) {
+      alert(`Failed to open database: ${e}`);
+    }
+  };
+ 
+  const handleSelect = async (db: string) => {
+    setActiveDb(db);
+    await loadDbData(db);
+  };
+ 
+  const handleClose = async (db: string) => {
+    await dbClose(db);
+    const dbs = await dbList();
+    setDatabases(dbs);
+    if (activeDb() === db) {
+      setActiveDb(null);
+      setNodes([]);
+      setEdges([]);
+      setSchema(null);
+    }
+  };
+ 
+  return (
+    <div class="db-manager">
+      <h3 class="panel-title" onClick={() => setIsExpanded(!isExpanded())} style={{ cursor: "pointer" }}>
+        Databases {isExpanded() ? "▾" : "▸"}
+      </h3>
+      <Show when={isExpanded()}>
+        <div class="db-list">
+          <For each={databases()}>
+            {(db) => (
+              <div
+                classList={{ "db-item": true, active: activeDb() === db }}
+                title={dbDescriptions[db] || `Database: ${db}`}
+              >
+                <span class="db-icon">{dbIcons[db] || "🗄️"}</span>
+                <span class="db-name" onClick={() => handleSelect(db)}>{db}</span>
+                <button class="danger small" onClick={() => handleClose(db)} title={`Close ${db}`}>×</button>
+              </div>
+            )}
+          </For>
+        </div>
+        <div class="db-form">
+          <div class="form-group">
+            <label>Name</label>
+            <input type="text" value={name()} onInput={(e) => setName(e.currentTarget.value)} placeholder="my-database" />
+          </div>
+          <div class="form-group">
+            <label>Path</label>
+            <input type="text" value={path()} onInput={(e) => setPath(e.currentTarget.value)} placeholder="~/.sensibledb/my-db" />
+          </div>
+          <div class="db-actions">
+            <button onClick={handleCreate} title="Create a new database">Create</button>
+            <button class="secondary" onClick={handleOpen} title="Open an existing database">Open</button>
+          </div>
+        </div>
+      </Show>
+    </div>
+  );
+};
+ 
+export default DatabaseManager;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/database/index.html b/sensibledb-explorer/src/frontend/coverage/src/components/database/index.html new file mode 100644 index 00000000..88b1bb48 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/database/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src/components/database + + + + + + + + + +
+
+

All files src/components/database

+
+ +
+ 0% + Statements + 0/80 +
+ + +
+ 0% + Branches + 0/12 +
+ + +
+ 0% + Functions + 0/22 +
+ + +
+ 0% + Lines + 0/57 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
DatabaseManager.tsx +
+
0%0/800%0/120%0/220%0/57
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/editor/SensibleQLEditor.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/editor/SensibleQLEditor.tsx.html new file mode 100644 index 00000000..8a79a80c --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/editor/SensibleQLEditor.tsx.html @@ -0,0 +1,460 @@ + + + + + + Code coverage report for src/components/editor/SensibleQLEditor.tsx + + + + + + + + + +
+
+

All files / src/components/editor SensibleQLEditor.tsx

+
+ +
+ 0% + Statements + 0/59 +
+ + +
+ 0% + Branches + 0/22 +
+ + +
+ 0% + Functions + 0/19 +
+ + +
+ 0% + Lines + 0/39 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, createSignal, onMount, Show, For } from "solid-js";
+import { EditorView, basicSetup } from "codemirror";
+import { EditorState } from "@codemirror/state";
+import { sensibleqlExecute } from "../../lib/api";
+import { activeDb } from "../../stores/app";
+import type { SensibleqlResult } from "../../types";
+import "./SensibleQLEditor.css";
+ 
+interface SampleQuery {
+  label: string;
+  tooltip: string;
+  query: string;
+  db?: string;
+}
+ 
+const sampleQueries: SampleQuery[] = [
+  { label: "All Nodes", tooltip: "Show all nodes and edges", query: "MATCH (n) RETURN n" },
+  { label: "Find People", tooltip: "Find all Person nodes", query: "MATCH (n:Person) RETURN n" },
+  { label: "Find Symptoms", tooltip: "Find all Symptom nodes", query: "MATCH (n:Symptom) RETURN n" },
+  { label: "Fatigue Triggers", tooltip: "Find edges connected to Fatigue", query: "MATCH (n:Fatigue)-[r]->(m) RETURN n, r, m" },
+  { label: "Count Nodes", tooltip: "Count total nodes", query: "COUNT nodes" },
+  { label: "Count Edges", tooltip: "Count total edges", query: "COUNT edges" },
+  { label: "Project Tasks", tooltip: "Find all Task nodes", query: "MATCH (n:Task) RETURN n" },
+  { label: "Task Dependencies", tooltip: "Find which tasks block others", query: "MATCH (n)-[r:BLOCKS]->(m) RETURN n, r, m" },
+  { label: "Team Members", tooltip: "Find all people", query: "MATCH (n:Person) RETURN n" },
+  { label: "Tools Used", tooltip: "Find all tools", query: "MATCH (n:Tool) RETURN n" },
+];
+ 
+const SensibleQLEditor: Component = () => {
+  let editorRef: HTMLDivElement | undefined;
+  const [query, setQuery] = createSignal("");
+  const [result, setResult] = createSignal<SensibleqlResult | null>(null);
+  const [isRunning, setIsRunning] = createSignal(false);
+  let editor: EditorView | undefined;
+ 
+  onMount(() => {
+    if (!editorRef) return;
+    editor = new EditorView({
+      state: EditorState.create({
+        doc: "// Select a sample query below or write your own\n// Supported: MATCH, GET, FIND, COUNT\n",
+        extensions: [
+          basicSetup,
+          EditorView.theme({
+            "&": { fontSize: "14px" },
+            ".cm-editor": { background: "#f8fafc" },
+            ".cm-gutters": { background: "#f1f5f9", border: "none" },
+          }),
+          EditorView.updateListener.of((update) => {
+            if (update.docChanged) {
+              setQuery(update.state.doc.toString());
+            }
+          }),
+        ],
+      }),
+      parent: editorRef,
+    });
+  });
+ 
+  const handleRun = async () => {
+    if (!activeDb() || !query()) return;
+    setIsRunning(true);
+    try {
+      const res = await sensibleqlExecute(activeDb()!, query());
+      setResult(res);
+    } catch (e: any) {
+      setResult({ success: false, message: String(e), data: null });
+    } finally {
+      setIsRunning(false);
+    }
+  };
+ 
+  const loadSample = (sample: SampleQuery) => {
+    if (editor) {
+      editor.dispatch({
+        changes: { from: 0, to: editor.state.doc.length, insert: sample.query },
+      });
+    }
+    setQuery(sample.query);
+    setResult(null);
+  };
+ 
+  return (
+    <div class="sensibleql-editor">
+      <div class="editor-header">
+        <h2>SensibleQL Query Editor</h2>
+        <button onClick={handleRun} disabled={isRunning()}>
+          {isRunning() ? "Running..." : "▶ Run Query"}
+        </button>
+      </div>
+ 
+      <div class="sample-queries">
+        <h3>Sample Queries</h3>
+        <div class="sample-grid">
+          <For each={sampleQueries}>
+            {(sample) => (
+              <button
+                class="sample-btn"
+                title={sample.tooltip}
+                onClick={() => loadSample(sample)}
+              >
+                {sample.label}
+              </button>
+            )}
+          </For>
+        </div>
+      </div>
+ 
+      <div ref={editorRef!} class="editor-container" />
+      <Show when={result()}>
+        {(r) => (
+          <div classList={{ "result-panel": true, error: !r().success }}>
+            <div class="result-header">
+              <span class={r().success ? "success" : "error"}>
+                {r().success ? "✓" : "✗"} {r().message}
+              </span>
+            </div>
+            <pre>{JSON.stringify(r().data, null, 2)}</pre>
+          </div>
+        )}
+      </Show>
+    </div>
+  );
+};
+ 
+export default SensibleQLEditor;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/editor/index.html b/sensibledb-explorer/src/frontend/coverage/src/components/editor/index.html new file mode 100644 index 00000000..206bedcc --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/editor/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src/components/editor + + + + + + + + + +
+
+

All files src/components/editor

+
+ +
+ 0% + Statements + 0/59 +
+ + +
+ 0% + Branches + 0/22 +
+ + +
+ 0% + Functions + 0/19 +
+ + +
+ 0% + Lines + 0/39 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
SensibleQLEditor.tsx +
+
0%0/590%0/220%0/190%0/39
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/entities/EdgeList.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/entities/EdgeList.tsx.html new file mode 100644 index 00000000..931cc09d --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/entities/EdgeList.tsx.html @@ -0,0 +1,439 @@ + + + + + + Code coverage report for src/components/entities/EdgeList.tsx + + + + + + + + + +
+
+

All files / src/components/entities EdgeList.tsx

+
+ +
+ 0% + Statements + 0/132 +
+ + +
+ 0% + Branches + 0/18 +
+ + +
+ 0% + Functions + 0/45 +
+ + +
+ 0% + Lines + 0/70 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, createSignal, createEffect, Show } from "solid-js";
+import { edges, setEdges, activeDb, isLoading, setIsLoading, selectedEdge, setSelectedEdge } from "../../stores/app";
+import { edgeList, edgeCreate, edgeUpdate, edgeDelete } from "../../lib/api";
+import "./EntityList.css";
+ 
+const EdgeList: Component = () => {
+  const [showForm, setShowForm] = createSignal(false);
+  const [editId, setEditId] = createSignal<number | null>(null);
+  const [label, setLabel] = createSignal("");
+  const [fromNode, setFromNode] = createSignal("");
+  const [toNode, setToNode] = createSignal("");
+  const [edgeId, setEdgeId] = createSignal("");
+ 
+  createEffect(() => {
+    if (activeDb()) {
+      loadEdges();
+    }
+  });
+ 
+  const loadEdges = async () => {
+    if (!activeDb()) return;
+    setIsLoading(true);
+    try {
+      const data = await edgeList(activeDb()!);
+      setEdges(data);
+    } catch (e) {
+      console.error("Failed to load edges:", e);
+    } finally {
+      setIsLoading(false);
+    }
+  };
+ 
+  const handleCreate = async () => {
+    if (!activeDb()) return;
+    try {
+      const id = edgeId() ? parseInt(edgeId()) : Date.now();
+      await edgeCreate(activeDb()!, id, label(), parseInt(fromNode()), parseInt(toNode()));
+      setLabel("");
+      setFromNode("");
+      setToNode("");
+      setEdgeId("");
+      setShowForm(false);
+      await loadEdges();
+    } catch (e) {
+      alert(`Failed to create edge: ${e}`);
+    }
+  };
+ 
+  const handleUpdate = async (id: number) => {
+    if (!activeDb()) return;
+    try {
+      await edgeUpdate(activeDb()!, id, label(), parseInt(fromNode()), parseInt(toNode()));
+      setEditId(null);
+      setLabel("");
+      await loadEdges();
+    } catch (e) {
+      alert(`Failed to update edge: ${e}`);
+    }
+  };
+ 
+  const handleDelete = async (id: number) => {
+    if (!activeDb()) return;
+    if (!confirm("Delete this edge?")) return;
+    try {
+      await edgeDelete(activeDb()!, id);
+      await loadEdges();
+    } catch (e) {
+      alert(`Failed to delete edge: ${e}`);
+    }
+  };
+ 
+  return (
+    <div class="entity-list">
+      <div class="entity-header">
+        <h2>Edges ({edges().length})</h2>
+        <button onClick={() => setShowForm(!showForm())}>+ New Edge</button>
+      </div>
+      <Show when={showForm()}>
+        <div class="entity-form">
+          <input type="number" value={edgeId()} onInput={(e) => setEdgeId(e.currentTarget.value)} placeholder="ID (auto if empty)" />
+          <input type="text" value={label()} onInput={(e) => setLabel(e.currentTarget.value)} placeholder="Label (e.g., KNOWS, OWNS)" />
+          <input type="number" value={fromNode()} onInput={(e) => setFromNode(e.currentTarget.value)} placeholder="From Node ID" />
+          <input type="number" value={toNode()} onInput={(e) => setToNode(e.currentTarget.value)} placeholder="To Node ID" />
+          <div class="form-actions">
+            <button onClick={handleCreate}>Create</button>
+            <button onClick={() => setShowForm(false)}>Cancel</button>
+          </div>
+        </div>
+      </Show>
+      <div class="entity-items">
+        {edges().map((edge) => (
+          <div classList={{ "entity-item": true, selected: selectedEdge()?.id === edge.id }}>
+            {editId() === edge.id ? (
+              <>
+                <input type="text" value={label()} onInput={(e) => setLabel(e.currentTarget.value)} />
+                <input type="number" value={fromNode()} onInput={(e) => setFromNode(e.currentTarget.value)} />
+                <input type="number" value={toNode()} onInput={(e) => setToNode(e.currentTarget.value)} />
+                <button onClick={() => handleUpdate(edge.id)}>Save</button>
+                <button onClick={() => setEditId(null)}>Cancel</button>
+              </>
+            ) : (
+              <>
+                <span class="entity-label" onClick={() => setSelectedEdge(edge)}>{edge.label}</span>
+                <span class="entity-id">{edge.from} → {edge.to}</span>
+                <div class="entity-actions">
+                  <button onClick={() => { setEditId(edge.id); setLabel(edge.label); setFromNode(String(edge.from)); setToNode(String(edge.to)); }}>Edit</button>
+                  <button class="danger" onClick={() => handleDelete(edge.id)}>Delete</button>
+                </div>
+              </>
+            )}
+          </div>
+        ))}
+      </div>
+    </div>
+  );
+};
+ 
+export default EdgeList;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/entities/NodeList.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/entities/NodeList.tsx.html new file mode 100644 index 00000000..f23dbd44 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/entities/NodeList.tsx.html @@ -0,0 +1,415 @@ + + + + + + Code coverage report for src/components/entities/NodeList.tsx + + + + + + + + + +
+
+

All files / src/components/entities NodeList.tsx

+
+ +
+ 0% + Statements + 0/106 +
+ + +
+ 0% + Branches + 0/18 +
+ + +
+ 0% + Functions + 0/34 +
+ + +
+ 0% + Lines + 0/62 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, createSignal, createEffect, Show } from "solid-js";
+import { nodes, setNodes, activeDb, isLoading, setIsLoading, selectedNode, setSelectedNode } from "../../stores/app";
+import { nodeList, nodeCreate, nodeUpdate, nodeDelete } from "../../lib/api";
+import "./EntityList.css";
+ 
+const NodeList: Component = () => {
+  const [showForm, setShowForm] = createSignal(false);
+  const [editId, setEditId] = createSignal<number | null>(null);
+  const [label, setLabel] = createSignal("");
+  const [nodeId, setNodeId] = createSignal("");
+ 
+  createEffect(() => {
+    if (activeDb()) {
+      loadNodes();
+    }
+  });
+ 
+  const loadNodes = async () => {
+    if (!activeDb()) return;
+    setIsLoading(true);
+    try {
+      const data = await nodeList(activeDb()!);
+      setNodes(data);
+    } catch (e) {
+      console.error("Failed to load nodes:", e);
+    } finally {
+      setIsLoading(false);
+    }
+  };
+ 
+  const handleCreate = async () => {
+    if (!activeDb()) return;
+    try {
+      const id = nodeId() ? parseInt(nodeId()) : Date.now();
+      await nodeCreate(activeDb()!, id, label());
+      setLabel("");
+      setNodeId("");
+      setShowForm(false);
+      await loadNodes();
+    } catch (e) {
+      alert(`Failed to create node: ${e}`);
+    }
+  };
+ 
+  const handleUpdate = async (id: number) => {
+    if (!activeDb()) return;
+    try {
+      await nodeUpdate(activeDb()!, id, label());
+      setEditId(null);
+      setLabel("");
+      await loadNodes();
+    } catch (e) {
+      alert(`Failed to update node: ${e}`);
+    }
+  };
+ 
+  const handleDelete = async (id: number) => {
+    if (!activeDb()) return;
+    if (!confirm("Delete this node?")) return;
+    try {
+      await nodeDelete(activeDb()!, id);
+      await loadNodes();
+    } catch (e) {
+      alert(`Failed to delete node: ${e}`);
+    }
+  };
+ 
+  return (
+    <div class="entity-list">
+      <div class="entity-header">
+        <h2>Nodes ({nodes().length})</h2>
+        <button onClick={() => setShowForm(!showForm())}>+ New Node</button>
+      </div>
+      <Show when={showForm()}>
+        <div class="entity-form">
+          <input type="number" value={nodeId()} onInput={(e) => setNodeId(e.currentTarget.value)} placeholder="ID (auto if empty)" />
+          <input type="text" value={label()} onInput={(e) => setLabel(e.currentTarget.value)} placeholder="Label (e.g., User, Product)" />
+          <div class="form-actions">
+            <button onClick={handleCreate}>Create</button>
+            <button onClick={() => setShowForm(false)}>Cancel</button>
+          </div>
+        </div>
+      </Show>
+      <div class="entity-items">
+        {nodes().map((node) => (
+          <div classList={{ "entity-item": true, selected: selectedNode()?.id === node.id }}>
+            {editId() === node.id ? (
+              <>
+                <input type="text" value={label()} onInput={(e) => setLabel(e.currentTarget.value)} />
+                <button onClick={() => handleUpdate(node.id)}>Save</button>
+                <button onClick={() => setEditId(null)}>Cancel</button>
+              </>
+            ) : (
+              <>
+                <span class="entity-label" onClick={() => setSelectedNode(node)}>{node.label}</span>
+                <span class="entity-id">#{node.id}</span>
+                <div class="entity-actions">
+                  <button onClick={() => { setEditId(node.id); setLabel(node.label); }}>Edit</button>
+                  <button class="danger" onClick={() => handleDelete(node.id)}>Delete</button>
+                </div>
+              </>
+            )}
+          </div>
+        ))}
+      </div>
+    </div>
+  );
+};
+ 
+export default NodeList;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/entities/index.html b/sensibledb-explorer/src/frontend/coverage/src/components/entities/index.html new file mode 100644 index 00000000..04df31d6 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/entities/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/components/entities + + + + + + + + + +
+
+

All files src/components/entities

+
+ +
+ 0% + Statements + 0/238 +
+ + +
+ 0% + Branches + 0/36 +
+ + +
+ 0% + Functions + 0/79 +
+ + +
+ 0% + Lines + 0/132 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
EdgeList.tsx +
+
0%0/1320%0/180%0/450%0/70
NodeList.tsx +
+
0%0/1060%0/180%0/340%0/62
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/graph/GraphView.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/graph/GraphView.tsx.html new file mode 100644 index 00000000..d6ab68f2 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/graph/GraphView.tsx.html @@ -0,0 +1,1570 @@ + + + + + + Code coverage report for src/components/graph/GraphView.tsx + + + + + + + + + +
+
+

All files / src/components/graph GraphView.tsx

+
+ +
+ 0% + Statements + 0/314 +
+ + +
+ 0% + Branches + 0/141 +
+ + +
+ 0% + Functions + 0/78 +
+ + +
+ 0% + Lines + 0/247 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, createEffect, createSignal, onMount, onCleanup, For, Show } from "solid-js";
+import { nodes, edges, activeDb, schema, setSelectedNode, selectedNode, setActiveView, setChatMessages } from "../../stores/app";
+import { sensibleqlExecute } from "../../lib/api";
+import type { NodeDto, EdgeDto } from "../../types";
+import InspectorPanel from "./InspectorPanel";
+import "./GraphView.css";
+ 
+interface GraphNode {
+  id: number;
+  label: string;
+  type: string;
+  x: number;
+  y: number;
+  color: string;
+  icon: string;
+  connectionCount: number;
+}
+ 
+const colors = [
+  "#3b82f6", "#ef4444", "#22c55e", "#f59e0b", "#8b5cf6",
+  "#ec4899", "#06b6d4", "#f97316", "#14b8a6", "#6366f1"
+];
+ 
+const typeIcons: Record<string, string> = {
+  Person: "🧑",
+  Event: "📅",
+  Symptom: "😰",
+  Medication: "💊",
+  Office: "🏢",
+  Home: "🏠",
+  Travel: "✈️",
+  Task: "✅",
+  Project: "📋",
+  Tool: "🔧",
+  default: "📦",
+};
+ 
+const CARD_WIDTH = 160;
+const CARD_HEIGHT = 80;
+ 
+const GraphView: Component = () => {
+  const [graphNodes, setGraphNodes] = createSignal<GraphNode[]>([]);
+  const [graphEdges, setGraphEdges] = createSignal<EdgeDto[]>([]);
+  const [transform, setTransform] = createSignal({ x: 0, y: 0, k: 1 });
+  const [dragging, setDragging] = createSignal<GraphNode | null>(null);
+  const [panning, setPanning] = createSignal(false);
+  const [panStart, setPanStart] = createSignal({ x: 0, y: 0 });
+  const [hoveredEdge, setHoveredEdge] = createSignal<number | null>(null);
+  const [hoveredNode, setHoveredNode] = createSignal<number | null>(null);
+  const [queryInput, setQueryInput] = createSignal("");
+  const [queryLoading, setQueryLoading] = createSignal(false);
+  const [suggestions] = createSignal<string[]>([]);
+  let svgRef: SVGSVGElement | undefined;
+  let animFrameId: number | undefined;
+  let simulationRunning = false;
+ 
+  const getIconForType = (type: string): string => {
+    return typeIcons[type] || typeIcons.default;
+  };
+ 
+  const getColorForIndex = (i: number): string => {
+    return colors[i % colors.length];
+  };
+ 
+  const extractTypeFromLabel = (label: string): string => {
+    const s = schema();
+    if (s) {
+      for (const nodeLabel of s.node_labels) {
+        if (label.toLowerCase().includes(nodeLabel.toLowerCase())) {
+          return nodeLabel;
+        }
+      }
+    }
+    const words = label.split(/[\s_-]+/);
+    if (words.length > 1) {
+      return words[0];
+    }
+    return "Item";
+  };
+ 
+  const getConnectionCount = (nodeId: number, edgeList: EdgeDto[]): number => {
+    return edgeList.filter(e => e.from === nodeId || e.to === nodeId).length;
+  };
+ 
+  const runAsyncSimulation = (nodeMap: Map<number, GraphNode>, edgeList: EdgeDto[], cx: number, cy: number) => {
+    if (simulationRunning) return;
+    simulationRunning = true;
+ 
+    let alpha = 1.0;
+    const minAlpha = 0.001;
+    const decay = 0.965;
+ 
+    const tick = () => {
+      if (alpha < minAlpha) {
+        simulationRunning = false;
+        return;
+      }
+ 
+      const arr = Array.from(nodeMap.values());
+      const dragNode = dragging();
+ 
+      for (let i = 0; i < arr.length; i++) {
+        if (dragNode && arr[i].id === dragNode.id) continue;
+        for (let j = i + 1; j < arr.length; j++) {
+          if (dragNode && arr[j].id === dragNode.id) continue;
+          const dx = arr[j].x - arr[i].x;
+          const dy = arr[j].y - arr[i].y;
+          const dist = Math.sqrt(dx * dx + dy * dy) || 1;
+          const force = (8000 / (dist * dist)) * alpha;
+          arr[i].x -= (dx / dist) * force;
+          arr[i].y -= (dy / dist) * force;
+          arr[j].x += (dx / dist) * force;
+          arr[j].y += (dy / dist) * force;
+        }
+      }
+ 
+      edgeList.forEach(edge => {
+        const s = nodeMap.get(edge.from);
+        const t = nodeMap.get(edge.to);
+        if (s && t) {
+          const dx = t.x - s.x;
+          const dy = t.y - s.y;
+          const dist = Math.sqrt(dx * dx + dy * dy) || 1;
+          const force = (dist - 220) * 0.01 * alpha;
+          if (!(dragNode && s.id === dragNode.id)) {
+            s.x += (dx / dist) * force;
+            s.y += (dy / dist) * force;
+          }
+          if (!(dragNode && t.id === dragNode.id)) {
+            t.x -= (dx / dist) * force;
+            t.y -= (dy / dist) * force;
+          }
+        }
+      });
+ 
+      arr.forEach(node => {
+        if (dragNode && node.id === dragNode.id) return;
+        node.x += (cx - node.x) * 0.008 * alpha;
+        node.y += (cy - node.y) * 0.008 * alpha;
+      });
+ 
+      setGraphNodes(Array.from(nodeMap.values()));
+      alpha *= decay;
+      animFrameId = requestAnimationFrame(tick);
+    };
+ 
+    animFrameId = requestAnimationFrame(tick);
+  };
+ 
+  createEffect(() => {
+    if (!activeDb()) {
+      setGraphNodes([]);
+      setGraphEdges([]);
+      return;
+    }
+ 
+    const n = nodes();
+    const e = edges();
+    if (n.length === 0) {
+      setGraphNodes([]);
+      setGraphEdges([]);
+      return;
+    }
+ 
+    const nodeMap = new Map<number, GraphNode>();
+    const svg = svgRef!;
+    const rect = svg.getBoundingClientRect();
+    const width = rect.width || 800;
+    const height = rect.height || 600;
+    const cx = width / 2;
+    const cy = height / 2;
+ 
+    const typeIndex = new Map<string, number>();
+    let typeCounter = 0;
+ 
+    n.forEach((node: NodeDto) => {
+      const type = extractTypeFromLabel(node.label);
+      if (!typeIndex.has(type)) {
+        typeIndex.set(type, typeCounter++);
+      }
+      const angle = (2 * Math.PI * n.indexOf(node)) / n.length;
+      const r = Math.min(width, height) * 0.38;
+      nodeMap.set(node.id, {
+        id: node.id,
+        label: node.label,
+        type,
+        x: cx + r * Math.cos(angle),
+        y: cy + r * Math.sin(angle),
+        color: getColorForIndex(typeIndex.get(type)!),
+        icon: getIconForType(type),
+        connectionCount: 0,
+      });
+    });
+ 
+    e.forEach(edge => {
+      const src = nodeMap.get(edge.from);
+      const tgt = nodeMap.get(edge.to);
+      if (src) src.connectionCount++;
+      if (tgt) tgt.connectionCount++;
+    });
+ 
+    if (animFrameId) {
+      cancelAnimationFrame(animFrameId);
+    }
+    simulationRunning = false;
+    setGraphNodes(Array.from(nodeMap.values()));
+    setGraphEdges(e);
+    setSelectedNode(null);
+    setTransform({ x: 0, y: 0, k: 1 });
+ 
+    runAsyncSimulation(nodeMap, e, cx, cy);
+  });
+ 
+  onCleanup(() => {
+    if (animFrameId) {
+      cancelAnimationFrame(animFrameId);
+    }
+  });
+ 
+  const handleWheel = (e: WheelEvent) => {
+    e.preventDefault();
+    const t = transform();
+    const delta = e.deltaY > 0 ? 0.9 : 1.1;
+    const newK = Math.max(0.1, Math.min(5, t.k * delta));
+    setTransform({ ...t, k: newK });
+  };
+ 
+  const handleMouseDown = (e: MouseEvent) => {
+    if (e.target === svgRef || (e.target as Element).tagName === 'rect') {
+      setPanning(true);
+      setPanStart({ x: e.clientX - transform().x, y: e.clientY - transform().y });
+    }
+  };
+ 
+  const handleMouseMove = (e: MouseEvent) => {
+    const dragNode = dragging();
+    if (dragNode) {
+      const t = transform();
+      const svg = svgRef!;
+      const rect = svg.getBoundingClientRect();
+      const x = (e.clientX - rect.left - t.x) / t.k;
+      const y = (e.clientY - rect.top - t.y) / t.k;
+      setGraphNodes(prev => prev.map(n => n.id === dragNode.id ? { ...n, x, y } : n));
+    } else if (panning()) {
+      const ps = panStart();
+      setTransform(prev => ({ ...prev, x: e.clientX - ps.x, y: e.clientY - ps.y }));
+    }
+  };
+ 
+  const handleMouseUp = () => {
+    setDragging(null);
+    setPanning(false);
+  };
+ 
+  const handleNodeMouseDown = (node: GraphNode, e: MouseEvent) => {
+    e.stopPropagation();
+    setSelectedNode({ id: node.id, label: node.label } as NodeDto);
+    setDragging(node);
+  };
+ 
+  const handleNodeClick = (node: GraphNode) => {
+    setSelectedNode({ id: node.id, label: node.label } as NodeDto);
+  };
+ 
+  const handleAskAboutNode = (nodeName: string) => {
+    setChatMessages([]);
+    setActiveView("chat");
+  };
+ 
+  const handleQuerySubmit = async () => {
+    const query = queryInput().trim();
+    if (!query || !activeDb() || queryLoading()) return;
+ 
+    setQueryLoading(true);
+    try {
+      const result = await sensibleqlExecute(activeDb()!, query);
+      if (result.success) {
+        setChatMessages([
+          { role: "user", content: query, timestamp: Date.now() },
+          { role: "assistant", content: `Found ${result.data?.nodes?.length || 0} items and ${result.data?.edges?.length || 0} connections.`, data: result.data, timestamp: Date.now() }
+        ]);
+      } else {
+        setChatMessages([
+          { role: "user", content: query, timestamp: Date.now() },
+          { role: "assistant", content: "I couldn't process that query. Try rephrasing your question.", timestamp: Date.now() }
+        ]);
+      }
+      setActiveView("chat");
+    } catch {
+      setChatMessages([
+        { role: "user", content: query, timestamp: Date.now() },
+        { role: "assistant", content: "An error occurred while executing the query.", timestamp: Date.now() }
+      ]);
+      setActiveView("chat");
+    } finally {
+      setQueryLoading(false);
+    }
+  };
+ 
+  const selected = () => selectedNode();
+ 
+  return (
+    <div class="graph-container">
+      <svg
+        ref={svgRef}
+        viewBox="0 0 800 600"
+        class="graph-svg"
+        xmlns="http://www.w3.org/2000/svg"
+        onWheel={handleWheel}
+        onMouseDown={handleMouseDown}
+        onMouseMove={handleMouseMove}
+        onMouseUp={handleMouseUp}
+        onMouseLeave={handleMouseUp}
+      >
+        <rect width="100%" height="100%" fill="transparent" />
+        <g transform={`translate(${transform().x},${transform().y}) scale(${transform().k})`}>
+          <defs>
+            <filter id="node-glow" x="-20%" y="-20%" width="140%" height="140%">
+              <feGaussianBlur stdDeviation="4" result="blur" />
+              <feMerge>
+                <feMergeNode in="blur" />
+                <feMergeNode in="SourceGraphic" />
+              </feMerge>
+            </filter>
+            <filter id="node-shadow" x="-10%" y="-10%" width="120%" height="130%">
+              <feDropShadow dx="0" dy="4" stdDeviation="6" flood-color="#000" flood-opacity="0.15" />
+            </filter>
+          </defs>
+ 
+          {graphEdges().map(edge => {
+            const source = graphNodes().find(n => n.id === edge.from);
+            const target = graphNodes().find(n => n.id === edge.to);
+            if (!source || !target) return null;
+ 
+            const isHovered = hoveredEdge() === edge.id;
+            const isSelected = selected() && (selected()!.id === edge.from || selected()!.id === edge.to);
+            const strokeWidth = isHovered || isSelected ? 3 : 2;
+            const strokeColor = isSelected ? "#6366f1" : isHovered ? "#818cf8" : "#94a3b8";
+ 
+            return (
+              <g
+                class="edge-group"
+                onMouseEnter={() => setHoveredEdge(edge.id)}
+                onMouseLeave={() => setHoveredEdge(null)}
+              >
+                <line
+                  x1={source.x}
+                  y1={source.y}
+                  x2={target.x}
+                  y2={target.y}
+                  stroke={strokeColor}
+                  stroke-width={strokeWidth}
+                  class="edge-line"
+                />
+                <Show when={isHovered || isSelected}>
+                  <text
+                    x={(source.x + target.x) / 2}
+                    y={(source.y + target.y) / 2 - 8}
+                    fill="#e2e8f0"
+                    font-size="11"
+                    font-weight="500"
+                    text-anchor="middle"
+                    class="edge-label"
+                  >
+                    {edge.label}
+                  </text>
+                </Show>
+              </g>
+            );
+          })}
+ 
+          {graphNodes().map((node, i) => {
+            const isSelected = selected()?.id === node.id;
+            const isHovered = hoveredNode() === node.id;
+            const isDragging = dragging()?.id === node.id;
+ 
+            return (
+              <g
+                class={`node-group ${isSelected ? "selected" : ""} ${isDragging ? "dragging" : ""}`}
+                transform={`translate(${node.x - CARD_WIDTH / 2}, ${node.y - CARD_HEIGHT / 2})`}
+                onMouseDown={(e) => handleNodeMouseDown(node, e)}
+                onClick={() => handleNodeClick(node)}
+                onMouseEnter={() => setHoveredNode(node.id)}
+                onMouseLeave={() => setHoveredNode(null)}
+                style={{ cursor: "grab" }}
+              >
+                <foreignObject width={CARD_WIDTH} height={CARD_HEIGHT}>
+                  <div
+                    class="node-card"
+                    style={{
+                      "border-color": isSelected ? node.color : isHovered ? "rgba(99,102,241,0.3)" : "var(--border)",
+                      "box-shadow": isDragging
+                        ? "0 8px 24px rgba(0,0,0,0.15)"
+                        : isHovered
+                        ? `0 0 12px ${node.color}40`
+                        : "var(--shadow-sm)",
+                      "border-width": isSelected ? "2px" : "1px",
+                    }}
+                  >
+                    <div class="node-card-header">
+                      <span class="node-card-icon">{node.icon}</span>
+                      <span
+                        class="node-card-type"
+                        style={{ color: node.color }}
+                      >
+                        {node.type}
+                      </span>
+                    </div>
+                    <div class="node-card-label">{node.label}</div>
+                    <div class="node-card-divider" />
+                    <div class="node-card-footer">
+                      <span class="node-card-connections">
+                        {node.connectionCount} connection{node.connectionCount !== 1 ? "s" : ""}
+                      </span>
+                    </div>
+                  </div>
+                </foreignObject>
+              </g>
+            );
+          })}
+ 
+          {graphNodes().length === 0 && (
+            <text x="400" y="300" fill="var(--text-muted)" font-size="16" text-anchor="middle">No data to display</text>
+          )}
+        </g>
+      </svg>
+ 
+      <Show when={selected()}>
+        <div class="graph-inspector-panel">
+          <InspectorPanel
+            node={selected()!}
+            edges={graphEdges()}
+            allNodes={graphNodes()}
+            onAskAbout={() => handleAskAboutNode(selected()!.label)}
+            onClose={() => setSelectedNode(null)}
+          />
+        </div>
+      </Show>
+ 
+      <div class="zoom-controls">
+        <button onClick={() => setTransform(t => ({ ...t, k: Math.min(5, t.k * 1.2) }))}>+</button>
+        <button onClick={() => setTransform(t => ({ ...t, k: Math.max(0.1, t.k / 1.2) }))}>−</button>
+        <button onClick={() => setTransform({ x: 0, y: 0, k: 1 })}>⟲</button>
+      </div>
+ 
+      <div class="query-bar">
+        <div class="query-bar-content">
+          <div class="query-input-row">
+            <span class="query-icon">💬</span>
+            <input
+              type="text"
+              class="query-input"
+              value={queryInput()}
+              onInput={(e) => setQueryInput(e.currentTarget.value)}
+              onKeyDown={(e) => e.key === "Enter" && handleQuerySubmit()}
+              placeholder="Ask a question about your data..."
+              disabled={!activeDb() || queryLoading()}
+            />
+            <button
+              class="query-submit-btn"
+              onClick={handleQuerySubmit}
+              disabled={!activeDb() || queryLoading() || !queryInput().trim()}
+            >
+              {queryLoading() ? "..." : "Ask ▶"}
+            </button>
+          </div>
+          <div class="query-suggestions">
+            <span class="suggestions-label">Suggestions:</span>
+            <Show when={schema()}>
+              <For each={schema()!.node_labels.slice(0, 3)}>
+                {(label) => (
+                  <button
+                    class="suggestion-chip"
+                    onClick={() => {
+                      setQueryInput(`Show me all ${label}`);
+                    }}
+                  >
+                    "Show me all {label}"
+                  </button>
+                )}
+              </For>
+            </Show>
+            <Show when={!schema() || schema()!.node_labels.length === 0}>
+              <button class="suggestion-chip" onClick={() => setQueryInput("What data do I have?")}>
+                "What data do I have?"
+              </button>
+            </Show>
+          </div>
+        </div>
+      </div>
+    </div>
+  );
+};
+ 
+export default GraphView;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/graph/InspectorPanel.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/graph/InspectorPanel.tsx.html new file mode 100644 index 00000000..e49c1a3d --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/graph/InspectorPanel.tsx.html @@ -0,0 +1,445 @@ + + + + + + Code coverage report for src/components/graph/InspectorPanel.tsx + + + + + + + + + +
+
+

All files / src/components/graph InspectorPanel.tsx

+
+ +
+ 0% + Statements + 0/49 +
+ + +
+ 0% + Branches + 0/16 +
+ + +
+ 0% + Functions + 0/21 +
+ + +
+ 0% + Lines + 0/35 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, createMemo, For, Show } from "solid-js";
+import type { NodeDto, EdgeDto } from "../../types";
+import "./InspectorPanel.css";
+ 
+interface InspectorPanelProps {
+  node: NodeDto;
+  edges: EdgeDto[];
+  allNodes: Array<{ id: number; label: string; type: string; icon: string; color: string }>;
+  onAskAbout: () => void;
+  onClose: () => void;
+}
+ 
+const typeIcons: Record<string, string> = {
+  Person: "🧑",
+  Event: "📅",
+  Symptom: "😰",
+  Medication: "💊",
+  Office: "🏢",
+  Home: "🏠",
+  Travel: "✈️",
+  Task: "✅",
+  Project: "📋",
+  Tool: "🔧",
+  default: "📦",
+};
+ 
+const InspectorPanel: Component<InspectorPanelProps> = (props) => {
+  const connectedEdges = createMemo(() => {
+    return props.edges.filter(
+      (e) => e.from === props.node.id || e.to === props.node.id
+    );
+  });
+ 
+  const connectionCount = createMemo(() => connectedEdges().length);
+ 
+  const connectedNodes = createMemo(() => {
+    return connectedEdges().map((edge) => {
+      const connectedId = edge.from === props.node.id ? edge.to : edge.from;
+      const connectedNode = props.allNodes.find((n) => n.id === connectedId);
+      return {
+        id: connectedId,
+        label: connectedNode?.label || `Node ${connectedId}`,
+        type: connectedNode?.type || "Item",
+        icon: connectedNode?.icon || typeIcons.default,
+        relationship: edge.label,
+      };
+    });
+  });
+ 
+  const nodeType = createMemo(() => {
+    const words = props.node.label.split(/[\s_-]+/);
+    return words.length > 1 ? words[0] : "Item";
+  });
+ 
+  const nodeIcon = createMemo(() => {
+    return typeIcons[nodeType()] || typeIcons.default;
+  });
+ 
+  return (
+    <div class="inspector-panel">
+      <div class="inspector-header">
+        <div class="inspector-title-row">
+          <span class="inspector-icon">{nodeIcon()}</span>
+          <span class="inspector-type">{nodeType()}</span>
+          <span class="inspector-name">: {props.node.label}</span>
+        </div>
+        <button class="inspector-close" onClick={props.onClose} title="Close">
+          ✕
+        </button>
+      </div>
+ 
+      <div class="inspector-card">
+        <div class="inspector-property">
+          <span class="property-label">ID</span>
+          <span class="property-value">{props.node.id}</span>
+        </div>
+        <div class="inspector-property">
+          <span class="property-label">Type</span>
+          <span class="property-value">{nodeType()}</span>
+        </div>
+        <div class="inspector-property">
+          <span class="property-label">Connections</span>
+          <span class="property-value">{connectionCount()}</span>
+        </div>
+      </div>
+ 
+      <div class="inspector-section">
+        <div class="section-divider">
+          <span>Connected To</span>
+        </div>
+        <Show
+          when={connectedNodes().length > 0}
+          fallback={
+            <div class="no-connections">
+              No connections found for this node.
+            </div>
+          }
+        >
+          <div class="connected-list">
+            <For each={connectedNodes()}>
+              {(cn) => (
+                <div class="connected-item">
+                  <span class="connected-icon">{cn.icon}</span>
+                  <span class="connected-label">{cn.label}</span>
+                  <span class="connected-relationship">({cn.relationship})</span>
+                </div>
+              )}
+            </For>
+          </div>
+        </Show>
+      </div>
+ 
+      <button class="ask-about-btn" onClick={props.onAskAbout}>
+        Ask about {props.node.label}
+      </button>
+    </div>
+  );
+};
+ 
+export default InspectorPanel;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/graph/index.html b/sensibledb-explorer/src/frontend/coverage/src/components/graph/index.html new file mode 100644 index 00000000..bb169ded --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/graph/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/components/graph + + + + + + + + + +
+
+

All files src/components/graph

+
+ +
+ 0% + Statements + 0/363 +
+ + +
+ 0% + Branches + 0/157 +
+ + +
+ 0% + Functions + 0/99 +
+ + +
+ 0% + Lines + 0/282 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
GraphView.tsx +
+
0%0/3140%0/1410%0/780%0/247
InspectorPanel.tsx +
+
0%0/490%0/160%0/210%0/35
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/home/HomeView.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/home/HomeView.tsx.html new file mode 100644 index 00000000..3b3f993a --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/home/HomeView.tsx.html @@ -0,0 +1,697 @@ + + + + + + Code coverage report for src/components/home/HomeView.tsx + + + + + + + + + +
+
+

All files / src/components/home HomeView.tsx

+
+ +
+ 0% + Statements + 0/71 +
+ + +
+ 0% + Branches + 0/4 +
+ + +
+ 0% + Functions + 0/26 +
+ + +
+ 0% + Lines + 0/48 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, For, createSignal, Show } from "solid-js";
+import { setActiveView, setActiveDb, databases, nodes, edges, setNodes, setEdges, setSchema } from "../../stores/app";
+import { nodeList, edgeList, schemaGet } from "../../lib/api";
+import { showTour } from "../onboarding/GuidedTour";
+import ConnectionWizard from "../onboarding/ConnectionWizard";
+import { sourceOptions } from "../onboarding/ConnectionWizard";
+import "./HomeView.css";
+ 
+interface DemoCard {
+  id: string;
+  icon: string;
+  title: string;
+  description: string;
+  items: number;
+  connections: number;
+  questions: string[];
+}
+ 
+const demoCards: DemoCard[] = [
+  {
+    id: "health-patterns",
+    icon: "🏥",
+    title: "Health Patterns",
+    description: "Track symptoms, triggers, and how events affect your wellbeing. Discover patterns between sleep, stress, and how you feel.",
+    items: 11,
+    connections: 16,
+    questions: [
+      "What triggers fatigue?",
+      "Show me all symptoms",
+      "How is caffeine connected?",
+    ],
+  },
+  {
+    id: "project-management",
+    icon: "📋",
+    title: "Project Management",
+    description: "See how team members, tasks, and tools connect. Understand dependencies and who owns what in your projects.",
+    items: 13,
+    connections: 14,
+    questions: [
+      "What tasks are blocked?",
+      "Show me all team members",
+      "Which tools are being used?",
+    ],
+  },
+];
+ 
+const HomeView: Component = () => {
+  const [isWizardOpen, setIsWizardOpen] = createSignal(false);
+ 
+  const loadDb = async (dbId: string) => {
+    setActiveDb(dbId);
+    const n = await nodeList(dbId);
+    setNodes(n);
+    const e = await edgeList(dbId);
+    setEdges(e);
+    const s = await schemaGet(dbId);
+    setSchema(s);
+    setActiveView("graph");
+  };
+ 
+  const handleQuestion = async (dbId: string, question: string) => {
+    await loadDb(dbId);
+    setActiveView("sensibleql");
+  };
+ 
+  const handleWizardComplete = (dbName: string) => {
+    loadDb(dbName);
+  };
+ 
+  // Stats from current database
+  const currentNodes = nodes().length;
+  const currentEdges = edges().length;
+  const hasData = currentNodes > 0;
+ 
+  return (
+    <div class="home-view">
+      {/* Welcome section */}
+      <div class="welcome-section">
+        <h1 class="welcome-title">Welcome to SensibleDB</h1>
+        <p class="welcome-subtitle">
+          Explore your data through connections. Ask questions, find patterns, and generate insights — no database expertise required.
+        </p>
+        <div class="welcome-actions">
+          <button class="welcome-btn primary" onClick={showTour}>
+            🎯 Take a Tour
+          </button>
+          <button class="welcome-btn secondary" onClick={() => setIsWizardOpen(true)}>
+            📁 Connect Your Data
+          </button>
+        </div>
+      </div>
+ 
+      {/* Quick stats */}
+      {hasData && (
+        <div class="stats-row">
+          <div class="stat-card">
+            <span class="stat-value">{currentNodes}</span>
+            <span class="stat-label">Items</span>
+          </div>
+          <div class="stat-card">
+            <span class="stat-value">{currentEdges}</span>
+            <span class="stat-label">Connections</span>
+          </div>
+          <div class="stat-card">
+            <span class="stat-value">{databases().length}</span>
+            <span class="stat-label">Databases</span>
+          </div>
+        </div>
+      )}
+ 
+      <div class="section">
+        <h2 class="section-title">Connect Your Data</h2>
+        <p class="section-desc">
+          Import your data from various sources and let SensibleDB organize it into a knowledge graph.
+        </p>
+        <div class="connect-card">
+          <div class="connect-header">
+            <span class="connect-icon">🔗</span>
+            <div class="connect-info">
+              <h3 class="connect-title">Import your data</h3>
+              <p class="connect-desc">Drag & drop files, or connect a data source</p>
+            </div>
+          </div>
+          <div class="connect-sources">
+            <For each={sourceOptions}>
+              {(source) => (
+                <button class="connect-source" onClick={() => setIsWizardOpen(true)}>
+                  <span class="connect-source-icon">{source.icon}</span>
+                  <span class="connect-source-label">{source.label}</span>
+                </button>
+              )}
+            </For>
+          </div>
+        </div>
+      </div>
+ 
+      <div class="section">
+        <h2 class="section-title">Try a Demo Database</h2>
+        <p class="section-desc">
+          Explore pre-loaded examples to see how SensibleDB works. Click a card to start exploring.
+        </p>
+        <div class="demo-grid">
+          <For each={demoCards}>
+            {(demo) => (
+              <div class="demo-card">
+                <div class="demo-header">
+                  <span class="demo-icon">{demo.icon}</span>
+                  <div class="demo-info">
+                    <h3 class="demo-title">{demo.title}</h3>
+                    <div class="demo-stats">
+                      <span class="badge blue">{demo.items} items</span>
+                      <span class="badge green">{demo.connections} connections</span>
+                    </div>
+                  </div>
+                </div>
+                <p class="demo-desc">{demo.description}</p>
+                <button class="demo-btn" onClick={() => loadDb(demo.id)}>
+                  Explore →
+                </button>
+                <div class="demo-questions">
+                  <span class="demo-questions-label">Try asking:</span>
+                  <For each={demo.questions}>
+                    {(q) => (
+                      <button class="demo-question" onClick={() => handleQuestion(demo.id, q)}>
+                        "{q}"
+                      </button>
+                    )}
+                  </For>
+                </div>
+              </div>
+            )}
+          </For>
+        </div>
+      </div>
+ 
+      {/* Getting started tips */}
+      <div class="section">
+        <h2 class="section-title">Getting Started</h2>
+        <div class="tips-grid">
+          <div class="tip-card">
+            <span class="tip-icon">🔗</span>
+            <h3>Explore the Graph</h3>
+            <p>See how your data connects. Click items to see details, drag to rearrange, scroll to zoom.</p>
+          </div>
+          <div class="tip-card">
+            <span class="tip-icon">💬</span>
+            <h3>Ask Questions</h3>
+            <p>Use the Chat view to ask about your data in plain English. No query language needed.</p>
+          </div>
+          <div class="tip-card">
+            <span class="tip-icon">📊</span>
+            <h3>Generate Reports</h3>
+            <p>Create summaries of your data for any time period. Export and share with your team.</p>
+          </div>
+        </div>
+      </div>
+ 
+      <ConnectionWizard isOpen={isWizardOpen()} onClose={() => setIsWizardOpen(false)} onComplete={handleWizardComplete} />
+    </div>
+  );
+};
+ 
+export default HomeView;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/home/index.html b/sensibledb-explorer/src/frontend/coverage/src/components/home/index.html new file mode 100644 index 00000000..c0a52768 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/home/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src/components/home + + + + + + + + + +
+
+

All files src/components/home

+
+ +
+ 0% + Statements + 0/71 +
+ + +
+ 0% + Branches + 0/4 +
+ + +
+ 0% + Functions + 0/26 +
+ + +
+ 0% + Lines + 0/48 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
HomeView.tsx +
+
0%0/710%0/40%0/260%0/48
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/onboarding/ConnectionWizard.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/onboarding/ConnectionWizard.tsx.html new file mode 100644 index 00000000..dcf78c8d --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/onboarding/ConnectionWizard.tsx.html @@ -0,0 +1,1387 @@ + + + + + + Code coverage report for src/components/onboarding/ConnectionWizard.tsx + + + + + + + + + +
+
+

All files / src/components/onboarding ConnectionWizard.tsx

+
+ +
+ 92.47% + Statements + 258/279 +
+ + +
+ 72.41% + Branches + 42/58 +
+ + +
+ 92.13% + Functions + 82/89 +
+ + +
+ 91.84% + Lines + 169/184 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +84x +84x +84x +84x +84x +84x +84x +84x +84x +84x +  +84x +84x +  +84x +22x +22x +21x +8x +  +21x +21x +  +  +84x +1x +  +  +84x +8x +8x +8x +8x +8x +  +  +  +  +  +  +  +  +8x +  +  +84x +16x +  +  +  +  +84x +8x +8x +8x +  +  +  +84x +  +  +  +  +84x +  +  +  +84x +  +  +  +  +  +  +  +84x +  +  +  +  +84x +7x +7x +7x +  +  +  +  +  +  +  +84x +7x +7x +7x +7x +7x +  +  +  +84x +7x +7x +7x +7x +7x +  +7x +  +  +  +  +  +  +  +7x +7x +  +7x +7x +  +7x +14x +14x +  +14x +7x +7x +7x +7x +  +7x +  +  +  +  +5x +  +5x +5x +  +5x +  +  +  +  +  +  +  +4x +4x +  +4x +  +  +  +  +  +4x +4x +  +  +  +11x +  +  +9x +9x +  +9x +2x +2x +2x +  +2x +2x +2x +  +3x +3x +  +  +  +84x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +  +84x +85x +  +21x +  +  +  +21x +  +  +  +  +84x +200x +84x +  +84x +84x +84x +200x +  +  +21x +  +  +  +  +23x +21x +  +  +50x +  +  +  +  +132x +  +  +132x +132x +  +132x +132x +216x +  +22x +  +  +  +  +  +50x +  +14x +  +  +  +12x +12x +12x +12x +  +  +  +  +  +  +12x +  +  +20x +  +  +8x +8x +  +  +8x +8x +8x +  +12x +  +  +  +  +  +  +  +  +  +13x +12x +  +  +  +14x +  +  +  +  +4x +  +  +21x +  +  +  +  +  +  +  +50x +  +  +8x +8x +  +  +  +8x +  +  +24x +8x +24x +  +  +21x +  +  +  +  +  +50x +  +9x +  +  +  +  +  +  +17x +  +  +7x +  +17x +  +  +35x +120x +120x +120x +  +21x +  +  +  +  +  +  +  +  +  +21x +  +  +30x +45x +35x +  +  +  +45x +8x +  +  +  +45x +59x +  +  +  +  +  +  +  +  +  +  +  +2x + 
import { Component, createSignal, Show, For } from "solid-js";
+import { invoke } from "@tauri-apps/api/core";
+import { dbCreate, dbOpen } from "../../lib/api";
+import { setActiveDb, setDatabases, databases } from "../../stores/app";
+import "./ConnectionWizard.css";
+ 
+export type SourceType = "file" | "database" | "email" | "notes" | "web" | "chat";
+ 
+export interface SourceOption {
+  type: SourceType;
+  icon: string;
+  label: string;
+  description: string;
+  formats: string;
+}
+ 
+export const sourceOptions: SourceOption[] = [
+  { type: "file", icon: "📁", label: "File", description: "CSV, JSON, Parquet", formats: "CSV, JSON" },
+  { type: "database", icon: "🗄️", label: "Database", description: "PostgreSQL, MySQL", formats: "PostgreSQL" },
+  { type: "email", icon: "📧", label: "Email", description: "Gmail, Outlook", formats: "Gmail" },
+  { type: "notes", icon: "📝", label: "Notes", description: "Markdown, Text", formats: "Markdown" },
+  { type: "web", icon: "🌐", label: "Web", description: "URL, HTML", formats: "URL" },
+  { type: "chat", icon: "💬", label: "Chat", description: "Slack, Discord", formats: "Slack" },
+];
+ 
+export interface DetectedColumn {
+  name: string;
+  type: string;
+}
+ 
+export interface FilePreview {
+  name: string;
+  size: string;
+  columns: DetectedColumn[];
+  rows: number;
+}
+ 
+interface ConnectionWizardProps {
+  isOpen: boolean;
+  onClose: () => void;
+  onComplete?: (dbName: string) => void;
+}
+ 
+const ConnectionWizard: Component<ConnectionWizardProps> = (props) => {
+  const [step, setStep] = createSignal(1);
+  const [selectedSource, setSelectedSource] = createSignal<SourceType | null>(null);
+  const [selectedFiles, setSelectedFiles] = createSignal<File[]>([]);
+  const [dbName, setDbName] = createSignal("");
+  const [preview, setPreview] = createSignal<FilePreview[]>([]);
+  const [processingProgress, setProcessingProgress] = createSignal(0);
+  const [processingSteps, setProcessingSteps] = createSignal<string[]>([]);
+  const [isProcessing, setIsProcessing] = createSignal(false);
+  const [error, setError] = createSignal<string | null>(null);
+  const [isDragOver, setIsDragOver] = createSignal(false);
+ 
+  const isLast = () => step() === 4;
+  const isFirst = () => step() === 1;
+ 
+  const nextStep = () => {
+    Iif (step() === 1 && !selectedSource()) return;
+    if (step() === 2 && selectedSource() === "file" && selectedFiles().length === 0) return;
+    if (step() === 2 && selectedSource() === "file") {
+      generatePreview();
+    }
+    Iif (isLast()) return;
+    setStep(step() + 1);
+  };
+ 
+  const prevStep = () => {
+    Eif (!isFirst()) setStep(step() - 1);
+  };
+ 
+  const generatePreview = () => {
+    const files = selectedFiles();
+    const previews: FilePreview[] = files.map((file) => {
+      const ext = file.name.split(".").pop()?.toLowerCase();
+      const isJson = ext === "json";
+      return {
+        name: file.name,
+        size: formatFileSize(file.size),
+        columns: isJson
+          ? [{ name: "name", type: "Text" }, { name: "description", type: "Text" }]
+          : [{ name: "date", type: "Date" }, { name: "value", type: "Text" }, { name: "severity", type: "Number" }],
+        rows: Math.floor(Math.random() * 100) + 10,
+      };
+    });
+    setPreview(previews);
+  };
+ 
+  const formatFileSize = (bytes: number): string => {
+    Eif (bytes < 1024) return bytes + " B";
+    if (bytes < 1024 * 1024) return (bytes / 1024).toFixed(1) + " KB";
+    return (bytes / (1024 * 1024)).toFixed(1) + " MB";
+  };
+ 
+  const handleFileSelect = (e: Event) => {
+    const input = e.target as HTMLInputElement;
+    Eif (input.files) {
+      setSelectedFiles(Array.from(input.files));
+    }
+  };
+ 
+  const handleDragOver = (e: DragEvent) => {
+    e.preventDefault();
+    setIsDragOver(true);
+  };
+ 
+  const handleDragLeave = () => {
+    setIsDragOver(false);
+  };
+ 
+  const handleDrop = (e: DragEvent) => {
+    e.preventDefault();
+    setIsDragOver(false);
+    if (e.dataTransfer?.files) {
+      setSelectedFiles(Array.from(e.dataTransfer.files));
+    }
+  };
+ 
+  const removeFile = (index: number) => {
+    const files = selectedFiles();
+    setSelectedFiles([...files.slice(0, index), ...files.slice(index + 1)]);
+  };
+ 
+  const detectFileType = (filename: string): string => {
+    const ext = filename.split(".").pop()?.toLowerCase();
+    switch (ext) {
+      case "csv": return "csv";
+      case "json": return "json";
+      case "md": return "markdown";
+      case "txt": return "text";
+      default: return "text";
+    }
+  };
+ 
+  const readFileContent = (file: File): Promise<string> => {
+    return new Promise((resolve, reject) => {
+      const reader = new FileReader();
+      reader.onload = () => resolve(reader.result as string);
+      reader.onerror = () => reject(new Error(`Failed to read file: ${file.name}`));
+      reader.readAsText(file);
+    });
+  };
+ 
+  const startProcessing = async () => {
+    setIsProcessing(true);
+    setStep(4);
+    setProcessingProgress(0);
+    setProcessingSteps([]);
+    setError(null);
+ 
+    const steps_list = [
+      "Reading file...",
+      "Chunking document...",
+      "Generating embeddings...",
+      "Building graph...",
+      "Import complete!",
+    ];
+ 
+    const name = dbName() || `imported-${Date.now()}`;
+    const files = selectedFiles();
+ 
+    try {
+      await dbCreate(name, "local");
+ 
+      for (let i = 0; i < steps_list.length - 1; i++) {
+        setProcessingSteps(steps_list.slice(0, i + 1));
+        setProcessingProgress(((i + 1) / steps_list.length) * 100);
+ 
+        if (i === 0) {
+          for (let fileIdx = 0; fileIdx < files.length; fileIdx++) {
+            const file = files[fileIdx];
+            const fileType = detectFileType(file.name);
+            const content = await readFileContent(file);
+            
+            const chunkResult = await invoke<{ chunks: string[] }>("chunk_text", {
+              content,
+              fileType,
+            });
+            
+            const chunkContents = chunkResult.chunks;
+            
+            setProcessingSteps(["Reading file...", "Chunking document..."]);
+            setProcessingProgress((2 / steps_list.length) * 100);
+            
+            const embedResult = await invoke<{ embeddings: number[][] }>("generate_embeddings", {
+              request: {
+                model: "nomic-embed-text",
+                texts: chunkContents,
+              },
+              ollamaUrl: null,
+            });
+            
+            setProcessingSteps(["Reading file...", "Chunking document...", "Generating embeddings..."]);
+            setProcessingProgress((3 / steps_list.length) * 100);
+ 
+            await invoke("extract_entities_from_chunks", {
+              chunks: chunkContents,
+              embeddings: embedResult.embeddings,
+              dbName: name,
+            });
+            
+            setProcessingSteps(["Reading file...", "Chunking document...", "Generating embeddings...", "Building graph..."]);
+            setProcessingProgress((4 / steps_list.length) * 100);
+          }
+        }
+ 
+        await new Promise((r) => setTimeout(r, 100));
+      }
+ 
+      setProcessingSteps(["Reading file...", "Chunking document...", "Generating embeddings...", "Building graph...", "Import complete!"]);
+      setProcessingProgress(100);
+ 
+      await dbOpen(name, "local");
+      const currentDbs = databases();
+      Eif (!currentDbs.includes(name)) {
+        setDatabases([...currentDbs, name]);
+      }
+      setActiveDb(name);
+      setIsProcessing(false);
+      props.onComplete?.(name);
+    } catch (e) {
+      setError(String(e));
+      setIsProcessing(false);
+    }
+  };
+ 
+  const handleClose = () => {
+    setStep(1);
+    setSelectedSource(null);
+    setSelectedFiles([]);
+    setPreview([]);
+    setProcessingProgress(0);
+    setProcessingSteps([]);
+    setIsProcessing(false);
+    setError(null);
+    props.onClose();
+  };
+ 
+  return (
+    <Show when={props.isOpen}>
+      <div class="wizard-overlay">
+        <div class="wizard-backdrop" onClick={handleClose} />
+        <div class="wizard-modal">
+          <div class="wizard-header">
+            <h2 class="wizard-title">Connect Your Data</h2>
+            <button class="wizard-close" onClick={handleClose}>✕</button>
+          </div>
+ 
+          <div class="wizard-progress">
+            <For each={[1, 2, 3, 4]}>
+              {(s) => (
+                <div class="wizard-progress-step" classList={{ active: step() >= s, completed: step() > s }}>
+                  <span class="wizard-progress-number">{s}</span>
+                  <span class="wizard-progress-label">
+                    {s === 1 && "Source"}
+                    {s === 2 && "Configure"}
+                    {s === 3 && "Preview"}
+                    {s === 4 && "Process"}
+                  </span>
+                </div>
+              )}
+            </For>
+          </div>
+ 
+          <div class="wizard-body">
+            <Show when={error()}>
+              <div class="wizard-error">{error()}</div>
+            </Show>
+ 
+            <Show when={step() === 1}>
+              <div class="wizard-step">
+                <h3 class="wizard-step-title">Where is your data?</h3>
+                <div class="source-grid">
+                  <For each={sourceOptions}>
+                    {(source) => (
+                      <button
+                        class="source-card"
+                        classList={{ selected: selectedSource() === source.type }}
+                        onClick={() => setSelectedSource(source.type)}
+                      >
+                        <span class="source-icon">{source.icon}</span>
+                        <span class="source-label">{source.label}</span>
+                        <span class="source-desc">{source.description}</span>
+                      </button>
+                    )}
+                  </For>
+                </div>
+              </div>
+            </Show>
+ 
+            <Show when={step() === 2}>
+              <div class="wizard-step">
+                <Show when={selectedSource() === "file"}>
+                  <h3 class="wizard-step-title">Connect your files</h3>
+                  <div
+                    class="drop-zone"
+                    classList={{ "drag-over": isDragOver() }}
+                    onDragOver={handleDragOver}
+                    onDragLeave={handleDragLeave}
+                    onDrop={handleDrop}
+                  >
+                    <span class="drop-icon">📂</span>
+                    <p class="drop-text">Drag & drop files here</p>
+                    <p class="drop-or">or</p>
+                    <label class="drop-browse">
+                      Browse files...
+                      <input type="file" multiple accept=".csv,.json" onChange={handleFileSelect} hidden />
+                    </label>
+                  </div>
+                  <Show when={selectedFiles().length > 0}>
+                    <div class="selected-files">
+                      <h4 class="files-heading">Selected:</h4>
+                      <For each={selectedFiles()}>
+                        {(file, idx) => (
+                          <div class="file-item">
+                            <span class="file-icon">📄</span>
+                            <span class="file-name">{file.name}</span>
+                            <span class="file-size">({formatFileSize(file.size)})</span>
+                            <button class="file-remove" onClick={() => removeFile(idx())}>✕</button>
+                          </div>
+                        )}
+                      </For>
+                    </div>
+                  </Show>
+                  <div class="db-name-input">
+                    <label for="db-name">Database name:</label>
+                    <input
+                      id="db-name"
+                      type="text"
+                      placeholder="my-data"
+                      value={dbName()}
+                      onInput={(e) => setDbName(e.currentTarget.value)}
+                    />
+                  </div>
+                </Show>
+                <Show when={selectedSource() !== "file"}>
+                  <div class="coming-soon">
+                    <span class="coming-soon-icon">🚧</span>
+                    <h3 class="coming-soon-title">Coming Soon</h3>
+                    <p class="coming-soon-desc">
+                      {sourceOptions.find((s) => s.type === selectedSource())?.label} connections are coming soon.
+                      For now, try importing a CSV or JSON file.
+                    </p>
+                    <button class="secondary" onClick={() => setSelectedSource("file")}>
+                      Switch to File Import
+                    </button>
+                  </div>
+                </Show>
+              </div>
+            </Show>
+ 
+            <Show when={step() === 3}>
+              <div class="wizard-step">
+                <h3 class="wizard-step-title">What we found</h3>
+                <For each={preview()}>
+                  {(file) => (
+                    <div class="preview-card">
+                      <div class="preview-header">
+                        <span class="preview-icon">📊</span>
+                        <span class="preview-name">{file.name}</span>
+                      </div>
+                      <ul class="preview-details">
+                        <li>{file.columns.length} columns: {file.columns.map((c) => c.name).join(", ")}</li>
+                        <li>{file.rows} rows</li>
+                        <li>Detected types: {file.columns.map((c) => c.type).join(", ")}</li>
+                      </ul>
+                    </div>
+                  )}
+                </For>
+                <p class="preview-confirm">Does this look right?</p>
+              </div>
+            </Show>
+ 
+            <Show when={step() === 4}>
+              <div class="wizard-step">
+                <Show when={!isProcessing()}>
+                  <h3 class="wizard-step-title">Import complete!</h3>
+                  <div class="processing-success">
+                    <span class="success-icon">✓</span>
+                    <p>Your data has been imported successfully.</p>
+                  </div>
+                </Show>
+                <Show when={isProcessing()}>
+                  <h3 class="wizard-step-title">Organizing your data...</h3>
+                  <div class="progress-bar">
+                    <div class="progress-fill" style={`width: ${processingProgress()}%`} />
+                  </div>
+                  <span class="progress-text">{Math.round(processingProgress())}%</span>
+                  <ul class="processing-checklist">
+                    <For each={["Reading file...", "Chunking document...", "Generating embeddings...", "Building graph...", "Import complete!"]}>
+                      {(s) => (
+                        <li classList={{ done: processingSteps().includes(s), active: processingSteps()[processingSteps().length - 1] === s }}>
+                          <span class="check-icon">{processingSteps().includes(s) ? "✓" : "○"}</span>
+                          {s}
+                        </li>
+                      )}
+                    </For>
+                  </ul>
+                  <p class="processing-note">This may take a moment for large datasets.</p>
+                </Show>
+              </div>
+            </Show>
+          </div>
+ 
+          <div class="wizard-footer">
+            <button class="wizard-btn secondary" onClick={prevStep} disabled={isFirst() || isProcessing()}>
+              Back
+            </button>
+            <Show when={!isProcessing()}>
+              <Show when={step() < 3}>
+                <button class="wizard-btn primary" onClick={nextStep} disabled={isLast()}>
+                  Next
+                </button>
+              </Show>
+              <Show when={step() === 3}>
+                <button class="wizard-btn primary" onClick={startProcessing}>
+                  Import Data
+                </button>
+              </Show>
+              <Show when={step() === 4 && !isProcessing()}>
+                <button class="wizard-btn primary" onClick={handleClose}>
+                  Done
+                </button>
+              </Show>
+            </Show>
+          </div>
+        </div>
+      </div>
+    </Show>
+  );
+};
+ 
+export default ConnectionWizard;E
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/onboarding/GuidedTour.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/onboarding/GuidedTour.tsx.html new file mode 100644 index 00000000..50d12403 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/onboarding/GuidedTour.tsx.html @@ -0,0 +1,655 @@ + + + + + + Code coverage report for src/components/onboarding/GuidedTour.tsx + + + + + + + + + +
+
+

All files / src/components/onboarding GuidedTour.tsx

+
+ +
+ 0% + Statements + 0/89 +
+ + +
+ 0% + Branches + 0/18 +
+ + +
+ 0% + Functions + 0/33 +
+ + +
+ 0% + Lines + 0/71 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, createSignal, createEffect, Show, For, createContext, useContext } from "solid-js";
+import { setActiveView } from "../../stores/app";
+import "./GuidedTour.css";
+ 
+const STORAGE_KEY = "sensibledb-tour-completed";
+ 
+export interface TourStep {
+  title: string;
+  description: string;
+  targetSelector?: string;
+  action?: () => void;
+}
+ 
+export const tourSteps: TourStep[] = [
+  {
+    title: "Welcome to SensibleDB",
+    description: "Explore your data through connections. Ask questions, find patterns, and generate insights — no database expertise required.",
+  },
+  {
+    title: "Graph View",
+    description: "Visualize how your data connects. Nodes represent items, and lines show relationships. Drag to rearrange, scroll to zoom.",
+    targetSelector: '[data-tour-target="graph"]',
+    action: () => setActiveView("graph"),
+  },
+  {
+    title: "Chat with Your Data",
+    description: "Ask questions in plain English. No query language needed — just type what you want to know.",
+    targetSelector: '[data-tour-target="chat"]',
+    action: () => setActiveView("chat"),
+  },
+  {
+    title: "Generate Reports",
+    description: "Create summaries of your data for any time period. Export and share with your team.",
+    targetSelector: '[data-tour-target="report"]',
+    action: () => setActiveView("report"),
+  },
+  {
+    title: "SensibleQL Editor",
+    description: "For advanced users — write precise queries using Nexus Query Language. Full control over your data exploration.",
+    targetSelector: '[data-tour-target="sensibleql"]',
+    action: () => setActiveView("sensibleql"),
+  },
+];
+ 
+export function isTourCompleted(): boolean {
+  return localStorage.getItem(STORAGE_KEY) === "true";
+}
+ 
+export function markTourCompleted(): void {
+  localStorage.setItem(STORAGE_KEY, "true");
+}
+ 
+export function showTour(): void {
+  localStorage.removeItem(STORAGE_KEY);
+  const event = new CustomEvent("sensibledb-start-tour");
+  window.dispatchEvent(event);
+}
+ 
+interface TourContextType {
+  startTour: () => void;
+}
+ 
+const TourContext = createContext<TourContextType>();
+ 
+export function TourProvider(props: { children: any }) {
+  const startTour = () => {
+    const event = new CustomEvent("sensibledb-start-tour");
+    window.dispatchEvent(event);
+  };
+ 
+  return (
+    <TourContext.Provider value={{ startTour }}>
+      {props.children}
+    </TourContext.Provider>
+  );
+}
+ 
+export function useTour() {
+  return useContext(TourContext);
+}
+ 
+interface GuidedTourProps {
+  initialStep?: number;
+  onComplete?: () => void;
+}
+ 
+const GuidedTour: Component<GuidedTourProps> = (props) => {
+  const [currentStep, setCurrentStep] = createSignal(props.initialStep ?? 0);
+  const [isVisible, setIsVisible] = createSignal(false);
+ 
+  const step = () => tourSteps[currentStep()];
+  const isLast = () => currentStep() === tourSteps.length - 1;
+  const isFirst = () => currentStep() === 0;
+ 
+  const next = () => {
+    if (isLast()) {
+      completeTour();
+    } else {
+      setCurrentStep(currentStep() + 1);
+      const nextStep = tourSteps[currentStep() + 1];
+      if (nextStep?.action) nextStep.action();
+    }
+  };
+ 
+  const prev = () => {
+    if (!isFirst()) {
+      setCurrentStep(currentStep() - 1);
+      const prevStep = tourSteps[currentStep() - 1];
+      if (prevStep?.action) prevStep.action();
+    }
+  };
+ 
+  const completeTour = () => {
+    markTourCompleted();
+    setIsVisible(false);
+    props.onComplete?.();
+  };
+ 
+  const skipTour = () => {
+    markTourCompleted();
+    setIsVisible(false);
+    props.onComplete?.();
+  };
+ 
+  createEffect(() => {
+    const handler = () => {
+      setCurrentStep(0);
+      setIsVisible(true);
+      tourSteps[0]?.action?.();
+    };
+    window.addEventListener("sensibledb-start-tour", handler);
+    return () => window.removeEventListener("sensibledb-start-tour", handler);
+  });
+ 
+  createEffect(() => {
+    if (props.initialStep !== undefined) {
+      setCurrentStep(props.initialStep);
+      setIsVisible(true);
+    }
+  });
+ 
+  return (
+    <Show when={isVisible()}>
+      <div class="tour-overlay">
+        <div class="tour-backdrop" onClick={skipTour} />
+        <div class="tour-card">
+          <div class="tour-header">
+            <div class="tour-step-indicator">
+              <For each={tourSteps}>
+                {(_, idx) => (
+                  <span
+                    class="tour-dot"
+                    classList={{
+                      active: idx() === currentStep(),
+                      completed: idx() < currentStep(),
+                    }}
+                  />
+                )}
+              </For>
+            </div>
+            <button class="tour-skip" onClick={skipTour}>
+              Skip Tour
+            </button>
+          </div>
+          <div class="tour-body">
+            <h2 class="tour-title">{step().title}</h2>
+            <p class="tour-description">{step().description}</p>
+          </div>
+          <div class="tour-footer">
+            <button
+              class="tour-btn secondary"
+              onClick={prev}
+              disabled={isFirst()}
+            >
+              Previous
+            </button>
+            <div class="tour-progress">
+              {currentStep() + 1} of {tourSteps.length}
+            </div>
+            <button class="tour-btn primary" onClick={next}>
+              {isLast() ? "Finish Tour" : "Next"}
+            </button>
+          </div>
+        </div>
+      </div>
+    </Show>
+  );
+};
+ 
+export default GuidedTour;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/onboarding/index.html b/sensibledb-explorer/src/frontend/coverage/src/components/onboarding/index.html new file mode 100644 index 00000000..d96d08a4 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/onboarding/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/components/onboarding + + + + + + + + + +
+
+

All files src/components/onboarding

+
+ +
+ 70.1% + Statements + 258/368 +
+ + +
+ 55.26% + Branches + 42/76 +
+ + +
+ 67.21% + Functions + 82/122 +
+ + +
+ 66.27% + Lines + 169/255 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
ConnectionWizard.tsx +
+
92.47%258/27972.41%42/5892.13%82/8991.84%169/184
GuidedTour.tsx +
+
0%0/890%0/180%0/330%0/71
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/report/ReportView.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/report/ReportView.tsx.html new file mode 100644 index 00000000..77354500 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/report/ReportView.tsx.html @@ -0,0 +1,916 @@ + + + + + + Code coverage report for src/components/report/ReportView.tsx + + + + + + + + + +
+
+

All files / src/components/report ReportView.tsx

+
+ +
+ 0% + Statements + 0/183 +
+ + +
+ 0% + Branches + 0/29 +
+ + +
+ 0% + Functions + 0/50 +
+ + +
+ 0% + Lines + 0/134 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, createSignal, createEffect } from "solid-js";
+import { activeDb, nodes, edges } from "../../stores/app";
+import "./ReportView.css";
+ 
+const ReportView: Component = () => {
+  const [period, setPeriod] = createSignal<"all" | "week" | "month">("all");
+  const [copiedToast, setCopiedToast] = createSignal(false);
+  const [shareCopied, setShareCopied] = createSignal(false);
+ 
+  const nodeCount = nodes().length;
+  const edgeCount = edges().length;
+ 
+  const nodeTypes = new Set(nodes().map(n => n.label.split(":")[0]));
+  const edgeTypes = new Set(edges().map(e => e.label));
+ 
+  const connectionCount = new Map<number, number>();
+  edges().forEach(e => {
+    connectionCount.set(e.from, (connectionCount.get(e.from) || 0) + 1);
+    connectionCount.set(e.to, (connectionCount.get(e.to) || 0) + 1);
+  });
+  const mostConnected = [...connectionCount.entries()]
+    .sort((a, b) => b[1] - a[1])
+    .slice(0, 5);
+ 
+  const getNodeLabel = (id: number) => {
+    return nodes().find(n => n.id === id)?.label || `ID: ${id}`;
+  };
+ 
+  const typeBreakdown = Array.from(nodeTypes).map(type => {
+    const count = nodes().filter(n => n.label.startsWith(type)).length;
+    const pct = nodeCount > 0 ? Math.round((count / nodeCount) * 100) : 0;
+    return { type, count, pct };
+  });
+ 
+  const periodLabel = () => {
+    switch (period()) {
+      case "week": return "Last 7 Days";
+      case "month": return "Last 30 Days";
+      default: return "All Time";
+    }
+  };
+ 
+  const showTimeNotice = () => period() !== "all";
+ 
+  const generateReport = (): string => {
+    const now = new Date().toLocaleString();
+    const db = activeDb() || "Not connected";
+ 
+    const lines: string[] = [];
+    lines.push("SensibleDB Summary Report");
+    lines.push(`Generated: ${now}`);
+    lines.push(`Period: ${periodLabel()}`);
+    lines.push(`Database: ${db}`);
+    lines.push("");
+    lines.push("── Overview ──");
+    lines.push(`Total Items: ${nodeCount}`);
+    lines.push(`Total Connections: ${edgeCount}`);
+    lines.push(`Item Types: ${nodeTypes.size} (${Array.from(nodeTypes).join(", ")})`);
+    lines.push(`Relationship Types: ${edgeTypes.size} (${Array.from(edgeTypes).join(", ")})`);
+    lines.push("");
+    lines.push("── Key Findings ──");
+ 
+    if (mostConnected.length > 0) {
+      lines.push(`• ${getNodeLabel(mostConnected[0][0])} is the most connected with ${mostConnected[0][1]} connections`);
+    }
+    lines.push(`• Your data contains ${nodeTypes.size} different types: ${Array.from(nodeTypes).join(", ")}`);
+    lines.push(`• ${edgeTypes.size} types of relationships connect your items: ${Array.from(edgeTypes).join(", ")}`);
+    lines.push("");
+ 
+    if (mostConnected.length > 0) {
+      lines.push("── Most Connected Items ──");
+      mostConnected.forEach(([id, count], i) => {
+        lines.push(`${i + 1}. ${getNodeLabel(id)} — ${count} connections`);
+      });
+      lines.push("");
+    }
+ 
+    lines.push("── Item Breakdown by Type ──");
+    typeBreakdown.forEach(({ type, count, pct }) => {
+      lines.push(`${type}: ${count} items (${pct}%)`);
+    });
+ 
+    return lines.join("\n");
+  };
+ 
+  const showCopied = () => {
+    setCopiedToast(true);
+    setTimeout(() => setCopiedToast(false), 2000);
+  };
+ 
+  const showShareCopied = () => {
+    setShareCopied(true);
+    setTimeout(() => setShareCopied(false), 2000);
+  };
+ 
+  const copyReport = async () => {
+    const text = generateReport();
+    try {
+      await navigator.clipboard.writeText(text);
+      showCopied();
+    } catch {
+      const textarea = document.createElement("textarea");
+      textarea.value = text;
+      document.body.appendChild(textarea);
+      textarea.select();
+      document.execCommand("copy");
+      document.body.removeChild(textarea);
+      showCopied();
+    }
+  };
+ 
+  const downloadTxt = () => {
+    const text = generateReport();
+    const blob = new Blob([text], { type: "text/plain" });
+    const url = URL.createObjectURL(blob);
+    const a = document.createElement("a");
+    a.href = url;
+    a.download = `sensibledb-report-${new Date().toISOString().slice(0, 10)}.txt`;
+    document.body.appendChild(a);
+    a.click();
+    document.body.removeChild(a);
+    URL.revokeObjectURL(url);
+  };
+ 
+  const downloadPdf = () => {
+    window.print();
+  };
+ 
+  const shareReport = async () => {
+    const report = generateReport();
+    const shareText = `📊 SensibleDB Report (${periodLabel()})\n\n${report}\n\nGenerated with SensibleDB Explorer`;
+    try {
+      await navigator.clipboard.writeText(shareText);
+      showShareCopied();
+    } catch {
+      const textarea = document.createElement("textarea");
+      textarea.value = shareText;
+      document.body.appendChild(textarea);
+      textarea.select();
+      document.execCommand("copy");
+      document.body.removeChild(textarea);
+      showShareCopied();
+    }
+  };
+ 
+  return (
+    <div class="report-view">
+      <div class="report-header">
+        <h1>Summary Report</h1>
+        <div class="report-controls">
+          <select value={period()} onChange={(e) => setPeriod(e.currentTarget.value as "all" | "week" | "month")}>
+            <option value="all">All Time</option>
+            <option value="week">Last 7 Days</option>
+            <option value="month">Last 30 Days</option>
+          </select>
+        </div>
+      </div>
+ 
+      {showTimeNotice() && (
+        <div class="time-notice">
+          Time-based filtering requires timestamp properties. All data shown.
+        </div>
+      )}
+ 
+      <div class="metric-row">
+        <div class="metric-card">
+          <span class="metric-value">{nodeCount}</span>
+          <span class="metric-label">Total Items</span>
+        </div>
+        <div class="metric-card">
+          <span class="metric-value">{edgeCount}</span>
+          <span class="metric-label">Connections</span>
+        </div>
+        <div class="metric-card">
+          <span class="metric-value">{nodeTypes.size}</span>
+          <span class="metric-label">Item Types</span>
+        </div>
+        <div class="metric-card">
+          <span class="metric-value">{edgeTypes.size}</span>
+          <span class="metric-label">Relationship Types</span>
+        </div>
+      </div>
+ 
+      <div class="report-section">
+        <h2>Key Findings</h2>
+        <div class="findings-list">
+          {mostConnected.length > 0 && (
+            <div class="finding">
+              <span class="finding-icon">🔗</span>
+              <div class="finding-text">
+                <strong>{getNodeLabel(mostConnected[0][0])}</strong> is the most connected item with {mostConnected[0][1]} connections
+              </div>
+            </div>
+          )}
+          <div class="finding">
+            <span class="finding-icon">📊</span>
+            <div class="finding-text">
+              Your data contains {nodeTypes.size} different types: {Array.from(nodeTypes).join(", ")}
+            </div>
+          </div>
+          <div class="finding">
+            <span class="finding-icon">🔀</span>
+            <div class="finding-text">
+              {edgeTypes.size} types of relationships connect your items: {Array.from(edgeTypes).join(", ")}
+            </div>
+          </div>
+        </div>
+      </div>
+ 
+      {mostConnected.length > 0 && (
+        <div class="report-section">
+          <h2>Most Connected Items</h2>
+          <div class="connected-list">
+            {mostConnected.map(([id, count], i) => (
+              <div class="connected-item">
+                <span class="connected-rank">{i + 1}.</span>
+                <span class="connected-name">{getNodeLabel(id)}</span>
+                <span class="connected-count">{count} connections</span>
+              </div>
+            ))}
+          </div>
+        </div>
+      )}
+ 
+      <div class="report-section">
+        <h2>Item Breakdown by Type</h2>
+        <div class="type-breakdown">
+          {typeBreakdown.map(({ type, count, pct }) => (
+            <div class="type-row">
+              <span class="type-name">{type}</span>
+              <div class="type-bar">
+                <div class="type-fill" style={{ width: `${pct}%` }}></div>
+              </div>
+              <span class="type-count">{count} ({pct}%)</span>
+            </div>
+          ))}
+        </div>
+      </div>
+ 
+      <div class="export-section">
+        <h3>Export</h3>
+        <div class="export-buttons">
+          <button class="export-btn secondary" onClick={copyReport}>
+            📋 Copy as text
+          </button>
+          <button class="export-btn secondary" onClick={downloadTxt}>
+            📥 Download as .txt
+          </button>
+          <button class="export-btn secondary" onClick={downloadPdf}>
+            🖨️ Download as PDF
+          </button>
+        </div>
+      </div>
+ 
+      <div class="share-section">
+        <h3>Share</h3>
+        <button class="export-btn primary" onClick={shareReport}>
+          🔗 Share link
+        </button>
+      </div>
+ 
+      {copiedToast() && (
+        <div class="toast-notification">
+          ✓ Link copied!
+        </div>
+      )}
+ 
+      {shareCopied() && (
+        <div class="toast-notification">
+          ✓ Link copied!
+        </div>
+      )}
+    </div>
+  );
+};
+ 
+export default ReportView;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/report/index.html b/sensibledb-explorer/src/frontend/coverage/src/components/report/index.html new file mode 100644 index 00000000..51f941a5 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/report/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src/components/report + + + + + + + + + +
+
+

All files src/components/report

+
+ +
+ 0% + Statements + 0/183 +
+ + +
+ 0% + Branches + 0/29 +
+ + +
+ 0% + Functions + 0/50 +
+ + +
+ 0% + Lines + 0/134 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
ReportView.tsx +
+
0%0/1830%0/290%0/500%0/134
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/settings/ModelSettings.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/settings/ModelSettings.tsx.html new file mode 100644 index 00000000..0be0572c --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/settings/ModelSettings.tsx.html @@ -0,0 +1,835 @@ + + + + + + Code coverage report for src/components/settings/ModelSettings.tsx + + + + + + + + + +
+
+

All files / src/components/settings ModelSettings.tsx

+
+ +
+ 92.94% + Statements + 145/156 +
+ + +
+ 88.23% + Branches + 45/51 +
+ + +
+ 100% + Functions + 58/58 +
+ + +
+ 91% + Lines + 91/100 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +13x +13x +9x +  +4x +4x +4x +  +  +  +  +1x +18x +18x +18x +18x +18x +  +  +18x +19x +4x +4x +  +  +  +18x +18x +  +  +18x +20x +20x +20x +20x +17x +  +2x +2x +  +19x +  +  +  +18x +4x +4x +  +4x +4x +  +4x +2x +2x +2x +  +2x +1x +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +18x +57x +57x +57x +  +  +18x +4x +4x +5x +4x +  +  +18x +18x +  +  +18x +  +  +  +18x +39x +  +  +  +  +  +20x +  +  +18x +  +  +  +  +  +  +34x +  +16x +16x +16x +  +14x +14x +  +  +16x +  +  +  +  +  +  +16x +  +  +  +  +24x +  +  +24x +24x +28x +24x +  +  +  +34x +25x +  +29x +22x +  +  +27x +4x +  +  +  +  +  +  +  +  +  +  +10x +  +24x +  +  +  +  +12x +  +  +  +  +14x +  +5x +  +5x +9x +  +9x +9x +  +5x +  +  +  +  +  +18x +  +  +  +  +  +  +  +53x +  +  +  +  +  +  +53x +  +  +  +  +  +  +  +  +  +  +  +1x
import { Component, createSignal, For, Show, onMount, onCleanup } from "solid-js";
+import { invoke } from "@tauri-apps/api/core";
+import "./ModelSettings.css";
+ 
+interface OllamaModel {
+  name: string;
+  size: number;
+  digest: string;
+  modified_at: string;
+}
+ 
+interface OllamaStatus {
+  available: boolean;
+  url: string;
+  version: string | null;
+  models: OllamaModel[];
+}
+ 
+interface PullProgress {
+  status: string;
+  percent: number;
+}
+ 
+const recommendedModels = [
+  { name: "qwen2.5-coder:3b", label: "NL-to-SQL Model" },
+  { name: "nomic-embed-text", label: "Embedding Model" },
+];
+ 
+function formatSize(bytes: number): string {
+  const gb = bytes / (1024 * 1024 * 1024);
+  if (gb >= 1) {
+    return `${gb.toFixed(1)} GB`;
+  }
+  const mb = bytes / (1024 * 1024);
+  Eif (mb >= 1) {
+    return `${mb.toFixed(0)} MB`;
+  }
+  return `${(bytes / 1024).toFixed(0)} KB`;
+}
+ 
+const ModelSettings: Component = () => {
+  const [status, setStatus] = createSignal<OllamaStatus | null>(null);
+  const [loading, setLoading] = createSignal(true);
+  const [error, setError] = createSignal<string | null>(null);
+  const [pullingModel, setPullingModel] = createSignal<string | null>(null);
+  const [pullProgress, setPullProgress] = createSignal<{ status: string; percent: number } | null>(null);
+  let pollInterval: number | undefined;
+ 
+  const clearPollInterval = () => {
+    if (pollInterval) {
+      clearInterval(pollInterval);
+      pollInterval = undefined;
+    }
+  };
+ 
+  onCleanup(() => {
+    clearPollInterval();
+  });
+ 
+  const checkStatus = async () => {
+    setLoading(true);
+    setError(null);
+    try {
+      const result = await invoke<OllamaStatus>("ollama_check_status", { ollamaUrl: null });
+      setStatus(result);
+    } catch (e) {
+      setError("Failed to connect to Ollama. Make sure Ollama is running on your system.");
+      setStatus(null);
+    } finally {
+      setLoading(false);
+    }
+  };
+ 
+  const pullModel = async (model: string) => {
+    setPullingModel(model);
+    setPullProgress({ status: "Starting download...", percent: 0 });
+ 
+    try {
+      await invoke("ollama_pull_model", { model, ollamaUrl: null });
+ 
+      pollInterval = window.setInterval(async () => {
+        try {
+          const progress = await invoke<PullProgress>("ollama_check_pull_progress", { model });
+          setPullProgress(progress);
+ 
+          if (progress.percent >= 100 || progress.status.includes("success") || progress.status.includes("complete")) {
+            clearPollInterval();
+            setPullingModel(null);
+            setPullProgress(null);
+            await checkStatus();
+          }
+        } catch {
+          clearPollInterval();
+          setPullingModel(null);
+          setPullProgress(null);
+        }
+      }, 500);
+    } catch (e) {
+      console.error("Failed to pull model:", e);
+      setError(`Failed to pull model: ${String(e)}`);
+      clearPollInterval();
+      setPullingModel(null);
+      setPullProgress(null);
+    }
+  };
+ 
+  const isModelInstalled = (modelName: string): boolean => {
+    const s = status();
+    Iif (!s || !s.models) return false;
+    return s.models.some((m) => m.name === modelName || m.name.startsWith(modelName));
+  };
+ 
+  const getModelSize = (modelName: string): number | null => {
+    const s = status();
+    Iif (!s || !s.models) return null;
+    const model = s.models.find((m) => m.name === modelName || m.name.startsWith(modelName));
+    return model ? model.size : null;
+  };
+ 
+  onMount(() => {
+    checkStatus();
+  });
+ 
+  return (
+    <div class="model-settings">
+      <div class="settings-header">
+        <h2 class="settings-title">Model Settings</h2>
+        <button class="refresh-btn" onClick={checkStatus} disabled={loading()}>
+          <Show when={loading()} fallback={<><span>↻</span> <span>Refresh</span></>}>
+            Checking...
+          </Show>
+        </button>
+      </div>
+ 
+      <Show when={error()}>
+        <div class="error-card">
+          <div class="error-icon">⚠️</div>
+          <p class="error-message">{error()}</p>
+          <a href="https://ollama.com" target="_blank" rel="noopener noreferrer" class="ollama-link">
+            Download Ollama →
+          </a>
+        </div>
+      </Show>
+ 
+      <Show when={status()}>
+        <div class="connection-status">
+          <div class={`status-indicator ${status()!.available ? "available" : "unavailable"}`} />
+          <span class={`status-text ${status()!.available ? "available" : "unavailable"}`}>
+            <Show when={status()!.available} fallback="Ollama is not running">
+              Connected to Ollama
+              <Show when={status()!.version}>{" "}(v{status()!.version})</Show>
+              {" "}at {status()!.url}
+            </Show>
+          </span>
+          <Show when={!status()!.available}>
+            <a class="ollama-link" href="https://ollama.com" target="_blank" rel="noopener noreferrer">
+              Install Ollama →
+            </a>
+          </Show>
+        </div>
+ 
+        <Show when={status()!.available}>
+          <div class="section">
+            <h3 class="section-title">Recommended Models</h3>
+            <div class="recommended-grid">
+              <For each={recommendedModels}>
+                {(item) => (
+                  <div class="model-card">
+                    <div class="model-info">
+                      <span class="model-name">{item.name}</span>
+                      <span class="model-label">{item.label}</span>
+                      <Show when={isModelInstalled(item.name)}>
+                        <span class="model-size">Installed ({formatSize(getModelSize(item.name) || 0)})</span>
+                      </Show>
+                    </div>
+                    <Show
+                      when={pullingModel() === item.name}
+                      fallback={
+                        <Show
+                          when={isModelInstalled(item.name)}
+                          fallback={
+                            <button
+                              class="download-btn"
+                              onClick={() => pullModel(item.name)}
+                              disabled={pullingModel() !== null}
+                            >
+                              Download
+                            </button>
+                          }
+                        >
+                          <span class="installed-badge">✓ Installed</span>
+                        </Show>
+                      }
+                    >
+                      <div class="pull-progress-wrapper">
+                        <div class="progress-text">{pullProgress()?.status || "Pulling..."}</div>
+                        <div class="progress-bar">
+                          <div class="progress-fill" style={{ width: `${pullProgress()?.percent || 0}%` }} />
+                        </div>
+                      </div>
+                    </Show>
+                  </div>
+                )}
+              </For>
+            </div>
+          </div>
+ 
+          <Show when={status()!.models && status()!.models.length > 0}>
+            <div class="section">
+              <h3 class="section-title">Installed Models ({status()!.models.length})</h3>
+              <div class="model-list">
+                <For each={status()!.models}>
+                  {(model) => (
+                    <div class="model-item">
+                      <span class="model-item-name">{model.name}</span>
+                      <span class="model-item-size">{formatSize(model.size)}</span>
+                    </div>
+                  )}
+                </For>
+              </div>
+            </div>
+          </Show>
+ 
+          <Show when={!status()!.models || status()!.models.length === 0}>
+            <div class="empty-models">
+              No models installed. Download a model to get started.
+            </div>
+          </Show>
+        </Show>
+      </Show>
+ 
+      <Show when={!error() && !status() && loading()}>
+        <div class="loading-state">
+          <div class="loading-spinner" />
+          <p>Checking Ollama status...</p>
+        </div>
+      </Show>
+ 
+      <Show when={!error() && !status() && !loading()}>
+        <div class="connection-status">
+          <div class="status-indicator unavailable" />
+          <span class="status-text unavailable">
+            Unable to connect to Ollama
+          </span>
+        </div>
+      </Show>
+    </div>
+  );
+};
+ 
+export default ModelSettings;E
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/settings/index.html b/sensibledb-explorer/src/frontend/coverage/src/components/settings/index.html new file mode 100644 index 00000000..76e27383 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/settings/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src/components/settings + + + + + + + + + +
+
+

All files src/components/settings

+
+ +
+ 92.94% + Statements + 145/156 +
+ + +
+ 88.23% + Branches + 45/51 +
+ + +
+ 100% + Functions + 58/58 +
+ + +
+ 91% + Lines + 91/100 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
ModelSettings.tsx +
+
92.94%145/15688.23%45/51100%58/5891%91/100
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/sidebar/SchemaBrowser.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/sidebar/SchemaBrowser.tsx.html new file mode 100644 index 00000000..a01c5bef --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/sidebar/SchemaBrowser.tsx.html @@ -0,0 +1,289 @@ + + + + + + Code coverage report for src/components/sidebar/SchemaBrowser.tsx + + + + + + + + + +
+
+

All files / src/components/sidebar SchemaBrowser.tsx

+
+ +
+ 0% + Statements + 0/43 +
+ + +
+ 0% + Branches + 0/10 +
+ + +
+ 0% + Functions + 0/18 +
+ + +
+ 0% + Lines + 0/27 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, createEffect, Show } from "solid-js";
+import { schema, setSchema, activeDb } from "../../stores/app";
+import { schemaGet } from "../../lib/api";
+import "./SchemaBrowser.css";
+ 
+const SchemaBrowser: Component = () => {
+  createEffect(() => {
+    if (activeDb()) {
+      loadSchema();
+    }
+  });
+ 
+  const loadSchema = async () => {
+    if (!activeDb()) return;
+    try {
+      const data = await schemaGet(activeDb()!);
+      setSchema(data);
+    } catch (e) {
+      console.error("Failed to load schema:", e);
+    }
+  };
+ 
+  return (
+    <div class="schema-browser">
+      <h2>Schema</h2>
+      <Show when={schema()}>
+        {(s) => (
+          <div>
+            <div class="schema-section">
+              <h3>Node Labels ({s().node_labels.length})</h3>
+              <ul>
+                {s().node_labels.map((label) => (
+                  <li>
+                    <span class="label-name">{label}</span>
+                    <span class="label-count">{s().node_counts[label] || 0}</span>
+                  </li>
+                ))}
+              </ul>
+            </div>
+            <div class="schema-section">
+              <h3>Edge Labels ({s().edge_labels.length})</h3>
+              <ul>
+                {s().edge_labels.map((label) => (
+                  <li>
+                    <span class="label-name">{label}</span>
+                    <span class="label-count">{s().edge_counts[label] || 0}</span>
+                  </li>
+                ))}
+              </ul>
+            </div>
+            <div class="schema-stats">
+              <div class="stat">
+                <span class="stat-value">{s().total_nodes}</span>
+                <span class="stat-label">Total Nodes</span>
+              </div>
+              <div class="stat">
+                <span class="stat-value">{s().total_edges}</span>
+                <span class="stat-label">Total Edges</span>
+              </div>
+            </div>
+          </div>
+        )}
+      </Show>
+    </div>
+  );
+};
+ 
+export default SchemaBrowser;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/sidebar/Sidebar.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/sidebar/Sidebar.tsx.html new file mode 100644 index 00000000..9d7285ed --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/sidebar/Sidebar.tsx.html @@ -0,0 +1,577 @@ + + + + + + Code coverage report for src/components/sidebar/Sidebar.tsx + + + + + + + + + +
+
+

All files / src/components/sidebar Sidebar.tsx

+
+ +
+ 98.23% + Statements + 111/113 +
+ + +
+ 94.44% + Branches + 17/18 +
+ + +
+ 93.47% + Functions + 43/46 +
+ + +
+ 100% + Lines + 61/61 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +1x +63x +  +63x +2x +2x +2x +2x +2x +2x +  +  +63x +18x +  +  +63x +2x +2x +  +  +63x +  +  +  +252x +  +  +252x +320x +  +252x +252x +252x +320x +  +  +63x +  +  +  +  +  +  +  +  +252x +  +  +252x +320x +  +252x +252x +252x +320x +  +  +63x +  +  +  +  +  +  +  +  +63x +  +  +63x +80x +  +63x +63x +63x +80x +  +  +63x +  +  +  +  +  +  +  +  +63x +  +  +63x +80x +  +63x +63x +63x +80x +  +  +63x +  +  +  +  +  +  +  +63x +  +  +  +63x +9x +  +9x +9x +9x +  +9x +11x +  +63x +  +  +  +64x +  +  +  +  +1x + 
import { Component, For, createSignal, Show } from "solid-js";
+import { activeView, setActiveView, databases, activeDb, setActiveDb, setNodes, setEdges, setSchema } from "../../stores/app";
+import { nodeList, edgeList, schemaGet } from "../../lib/api";
+import ConnectionWizard from "../onboarding/ConnectionWizard";
+import "./Sidebar.css";
+ 
+interface NavItem {
+  id: string;
+  icon: string;
+  label: string;
+  tooltip: string;
+  shortcut?: string;
+}
+ 
+const navItems: NavItem[] = [
+  { id: "home", icon: "🏠", label: "Home", tooltip: "Overview and getting started", shortcut: "1" },
+  { id: "graph", icon: "🔗", label: "Graph", tooltip: "Visualize connections between items", shortcut: "2" },
+  { id: "chat", icon: "💬", label: "Chat", tooltip: "Ask questions about your data", shortcut: "3" },
+  { id: "report", icon: "📊", label: "Report", tooltip: "Generate summaries and insights", shortcut: "4" },
+];
+ 
+const dataNavItems: NavItem[] = [
+  { id: "nodes", icon: "📦", label: "Items", tooltip: "Browse all items in your database", shortcut: "5" },
+  { id: "edges", icon: "🔀", label: "Connections", tooltip: "View relationships between items", shortcut: "6" },
+  { id: "schema", icon: "🏗️", label: "Structure", tooltip: "See how your data is organized", shortcut: "7" },
+  { id: "sensibleql", icon: "⌨️", label: "SensibleQL Editor", tooltip: "Write advanced queries", shortcut: "8" },
+];
+ 
+const aiNavItems: NavItem[] = [
+  { id: "models", icon: "🧠", label: "AI Models", tooltip: "Manage on-device AI models", shortcut: "9" },
+];
+ 
+const Sidebar: Component = () => {
+  const [isWizardOpen, setIsWizardOpen] = createSignal(false);
+ 
+  const loadDbData = async (dbName: string) => {
+    const nodes = await nodeList(dbName);
+    setNodes(nodes);
+    const edges = await edgeList(dbName);
+    setEdges(edges);
+    const schema = await schemaGet(dbName);
+    setSchema(schema);
+  };
+ 
+  const handleNavClick = (id: string) => {
+    setActiveView(id as any);
+  };
+ 
+  const handleDbClick = async (db: string) => {
+    setActiveDb(db);
+    await loadDbData(db);
+  };
+ 
+  return (
+    <nav class="sidebar">
+      <div class="sidebar-section">
+        <For each={navItems}>
+          {(item) => (
+            <button
+              classList={{ "nav-item": true, active: activeView() === item.id }}
+              onClick={() => handleNavClick(item.id)}
+              title={item.tooltip}
+            >
+              <span class="nav-icon">{item.icon}</span>
+              <span class="nav-label">{item.label}</span>
+              <Show when={item.shortcut}>
+                <span class="nav-shortcut">{item.shortcut}</span>
+              </Show>
+            </button>
+          )}
+        </For>
+      </div>
+ 
+      <div class="sidebar-divider" />
+ 
+      <div class="sidebar-section">
+        <h3 class="sidebar-heading">Data</h3>
+        <For each={dataNavItems}>
+          {(item) => (
+            <button
+              classList={{ "nav-item": true, active: activeView() === item.id }}
+              onClick={() => handleNavClick(item.id)}
+              title={item.tooltip}
+            >
+              <span class="nav-icon">{item.icon}</span>
+              <span class="nav-label">{item.label}</span>
+              <Show when={item.shortcut}>
+                <span class="nav-shortcut">{item.shortcut}</span>
+              </Show>
+            </button>
+          )}
+        </For>
+      </div>
+ 
+      <div class="sidebar-divider" />
+ 
+      <div class="sidebar-section">
+        <h3 class="sidebar-heading">AI</h3>
+        <For each={aiNavItems}>
+          {(item) => (
+            <button
+              classList={{ "nav-item": true, active: activeView() === item.id }}
+              onClick={() => handleNavClick(item.id)}
+              title={item.tooltip}
+            >
+              <span class="nav-icon">{item.icon}</span>
+              <span class="nav-label">{item.label}</span>
+              <Show when={item.shortcut}>
+                <span class="nav-shortcut">{item.shortcut}</span>
+              </Show>
+            </button>
+          )}
+        </For>
+      </div>
+ 
+      <div class="sidebar-divider" />
+ 
+      <div class="sidebar-section">
+        <h3 class="sidebar-heading">AI</h3>
+        <For each={aiNavItems}>
+          {(item) => (
+            <button
+              classList={{ "nav-item": true, active: activeView() === item.id }}
+              onClick={() => handleNavClick(item.id)}
+              title={item.tooltip}
+            >
+              <span class="nav-icon">{item.icon}</span>
+              <span class="nav-label">{item.label}</span>
+              <Show when={item.shortcut}>
+                <span class="nav-shortcut">{item.shortcut}</span>
+              </Show>
+            </button>
+          )}
+        </For>
+      </div>
+ 
+      <div class="sidebar-divider" />
+ 
+      <div class="sidebar-section">
+        <h3 class="sidebar-heading">Databases</h3>
+        <button class="connect-data-btn" onClick={() => setIsWizardOpen(true)}>
+          <span class="db-icon">➕</span>
+          <span class="db-name">Connect Data</span>
+        </button>
+        <For each={databases()}>
+          {(db) => (
+            <button
+              classList={{ "db-item": true, active: activeDb() === db }}
+              onClick={() => handleDbClick(db)}
+              title={db === "health-patterns" ? "Health & symptom tracking demo" : db === "project-management" ? "Project management demo" : `Database: ${db}`}
+            >
+              <span class="db-icon">{db === "health-patterns" ? "🏥" : db === "project-management" ? "📋" : "🗄️"}</span>
+              <span class="db-name">{db}</span>
+            </button>
+          )}
+        </For>
+      </div>
+ 
+      <ConnectionWizard isOpen={isWizardOpen()} onClose={() => setIsWizardOpen(false)} onComplete={() => {}} />
+    </nav>
+  );
+};
+ 
+export default Sidebar;E
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/sidebar/index.html b/sensibledb-explorer/src/frontend/coverage/src/components/sidebar/index.html new file mode 100644 index 00000000..1688333c --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/sidebar/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/components/sidebar + + + + + + + + + +
+
+

All files src/components/sidebar

+
+ +
+ 71.15% + Statements + 111/156 +
+ + +
+ 60.71% + Branches + 17/28 +
+ + +
+ 67.18% + Functions + 43/64 +
+ + +
+ 69.31% + Lines + 61/88 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
SchemaBrowser.tsx +
+
0%0/430%0/100%0/180%0/27
Sidebar.tsx +
+
98.23%111/11394.44%17/1893.47%43/46100%61/61
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/ui/ContextualTooltip.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/ui/ContextualTooltip.tsx.html new file mode 100644 index 00000000..c34c4235 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/ui/ContextualTooltip.tsx.html @@ -0,0 +1,280 @@ + + + + + + Code coverage report for src/components/ui/ContextualTooltip.tsx + + + + + + + + + +
+
+

All files / src/components/ui ContextualTooltip.tsx

+
+ +
+ 0% + Statements + 0/44 +
+ + +
+ 0% + Branches + 0/12 +
+ + +
+ 0% + Functions + 0/18 +
+ + +
+ 0% + Lines + 0/24 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, createSignal, Show } from "solid-js";
+import { getGlossaryEntry, type GlossaryEntry } from "../../lib/glossary";
+import "./ContextualTooltip.css";
+ 
+interface ContextualTooltipProps {
+  term: string;
+  explanation?: string;
+  inline?: boolean;
+}
+ 
+const ContextualTooltip: Component<ContextualTooltipProps> = (props) => {
+  const [isOpen, setIsOpen] = createSignal(false);
+  const entry = getGlossaryEntry(props.term);
+ 
+  const displayEntry: GlossaryEntry | null = entry
+    ? { ...entry, explanation: props.explanation || entry.explanation }
+    : props.explanation
+      ? { term: props.term, userFacingTerm: props.term, explanation: props.explanation, example: "" }
+      : null;
+ 
+  const toggle = () => setIsOpen(!isOpen());
+ 
+  return (
+    <span class="contextual-tooltip-wrapper" classList={{ open: isOpen() }}>
+      <button
+        class="contextual-tooltip-trigger"
+        classList={{ inline: props.inline }}
+        onClick={toggle}
+        onMouseEnter={() => setIsOpen(true)}
+        onMouseLeave={() => setIsOpen(false)}
+        title={`What is ${props.term}?`}
+      >
+        ?
+      </button>
+      <Show when={isOpen() && displayEntry}>
+        {(e) => (
+          <div
+            class="contextual-tooltip-content"
+            onMouseEnter={() => setIsOpen(true)}
+            onMouseLeave={() => setIsOpen(false)}
+          >
+            <div class="tooltip-header">
+              <span class="tooltip-term">{e().userFacingTerm}</span>
+              <span class="tooltip-technical">({e().term})</span>
+            </div>
+            <p class="tooltip-explanation">{e().explanation}</p>
+            <Show when={e().example}>
+              <div class="tooltip-example">
+                <span class="example-label">Example:</span>
+                {e().example}
+              </div>
+            </Show>
+            <Show when={e().learnMore}>
+              <a href={e().learnMore} class="tooltip-learn-more" target="_blank" rel="noopener noreferrer">
+                Learn more →
+              </a>
+            </Show>
+          </div>
+        )}
+      </Show>
+    </span>
+  );
+};
+ 
+export default ContextualTooltip;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/ui/ErrorBoundary.tsx.html b/sensibledb-explorer/src/frontend/coverage/src/components/ui/ErrorBoundary.tsx.html new file mode 100644 index 00000000..47caf414 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/ui/ErrorBoundary.tsx.html @@ -0,0 +1,175 @@ + + + + + + Code coverage report for src/components/ui/ErrorBoundary.tsx + + + + + + + + + +
+
+

All files / src/components/ui ErrorBoundary.tsx

+
+ +
+ 0% + Statements + 0/11 +
+ + +
+ 0% + Branches + 0/4 +
+ + +
+ 0% + Functions + 0/5 +
+ + +
+ 0% + Lines + 0/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Component, ErrorBoundary, JSX } from "solid-js";
+import "./ErrorBoundary.css";
+ 
+interface Props {
+  fallback?: JSX.Element;
+  children: JSX.Element;
+}
+ 
+const ErrorBoundaryComponent: Component<Props> = (props) => {
+  return (
+    <ErrorBoundary
+      fallback={(error, retry) => (
+        <div class="error-boundary">
+          <div class="error-boundary-icon">⚠️</div>
+          <div class="error-boundary-content">
+            <h3 class="error-boundary-title">Something went wrong</h3>
+            <p class="error-boundary-message">{error?.message || "An unexpected error occurred"}</p>
+            <div class="error-boundary-actions">
+              <button class="retry-btn" onClick={() => retry()}>Try Again</button>
+            </div>
+          </div>
+        </div>
+      )}
+    >
+      {props.children}
+    </ErrorBoundary>
+  );
+};
+ 
+export default ErrorBoundaryComponent;
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/components/ui/index.html b/sensibledb-explorer/src/frontend/coverage/src/components/ui/index.html new file mode 100644 index 00000000..96b6c524 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/components/ui/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/components/ui + + + + + + + + + +
+
+

All files src/components/ui

+
+ +
+ 0% + Statements + 0/55 +
+ + +
+ 0% + Branches + 0/16 +
+ + +
+ 0% + Functions + 0/23 +
+ + +
+ 0% + Lines + 0/31 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
ContextualTooltip.tsx +
+
0%0/440%0/120%0/180%0/24
ErrorBoundary.tsx +
+
0%0/110%0/40%0/50%0/7
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/data/glossary.ts.html b/sensibledb-explorer/src/frontend/coverage/src/data/glossary.ts.html new file mode 100644 index 00000000..bcccca4b --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/data/glossary.ts.html @@ -0,0 +1,265 @@ + + + + + + Code coverage report for src/data/glossary.ts + + + + + + + + + +
+
+

All files / src/data glossary.ts

+
+ +
+ 0% + Statements + 0/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/2 +
+ + +
+ 0% + Lines + 0/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
export interface GlossaryTerm {
+  technicalTerm: string;
+  userFacingTerm: string;
+  explanation: string;
+  example?: string;
+  learnMoreUrl?: string;
+}
+ 
+export const glossary: Record<string, GlossaryTerm> = {
+  node: {
+    technicalTerm: "Node",
+    userFacingTerm: "Item",
+    explanation: "A thing in your data — a person, event, symptom, etc.",
+    example: '"Fatigue" is an item representing a symptom.',
+  },
+  edge: {
+    technicalTerm: "Edge",
+    userFacingTerm: "Connection",
+    explanation: "How two items are related.",
+    example: '"Poor Sleep" → TRIGGERED → "Fatigue" means poor sleep may have caused fatigue.',
+  },
+  label: {
+    technicalTerm: "Label/Type",
+    userFacingTerm: "Type",
+    explanation: "What kind of item this is.",
+    example: 'An item can be of type "Person", "Symptom", or "Event".',
+  },
+  vector: {
+    technicalTerm: "Vector Embedding",
+    userFacingTerm: "Similarity",
+    explanation: "Items that are alike are grouped together.",
+    example: 'Items about "stress" and "anxiety" may be found near each other.',
+  },
+  traversal: {
+    technicalTerm: "Graph Traversal",
+    userFacingTerm: "Follow connections",
+    explanation: "Starting from one item, see what it connects to.",
+    example: 'From "Fatigue", follow connections to find "Poor Sleep" and "Stressful Meeting".',
+  },
+  sensibleql: {
+    technicalTerm: "SensibleQL Query",
+    userFacingTerm: "Ask a question",
+    explanation: "A way to ask your data questions.",
+    example: 'Ask "What triggers fatigue?" and get answers from your data.',
+  },
+  schema: {
+    technicalTerm: "Schema",
+    userFacingTerm: "Structure",
+    explanation: "The blueprint of how your data is organized.",
+    example: 'The structure shows types like "Person", "Symptom", and how they relate.',
+  },
+};
+ 
+export function getTerm(term: string): GlossaryTerm | undefined {
+  return glossary[term.toLowerCase()];
+}
+ 
+export function getAllTerms(): GlossaryTerm[] {
+  return Object.values(glossary);
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/data/index.html b/sensibledb-explorer/src/frontend/coverage/src/data/index.html new file mode 100644 index 00000000..509da7df --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/data/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src/data + + + + + + + + + +
+
+

All files src/data

+
+ +
+ 0% + Statements + 0/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/2 +
+ + +
+ 0% + Lines + 0/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
glossary.ts +
+
0%0/3100%0/00%0/20%0/3
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/index.html b/sensibledb-explorer/src/frontend/coverage/src/index.html new file mode 100644 index 00000000..9afb37e6 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src + + + + + + + + + +
+
+

All files src

+
+ +
+ 0% + Statements + 0/131 +
+ + +
+ 0% + Branches + 0/49 +
+ + +
+ 0% + Functions + 0/47 +
+ + +
+ 0% + Lines + 0/81 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
App.tsx +
+
0%0/1310%0/490%0/470%0/81
types.ts +
+
0%0/00%0/00%0/00%0/0
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/lib/api.ts.html b/sensibledb-explorer/src/frontend/coverage/src/lib/api.ts.html new file mode 100644 index 00000000..33503c44 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/lib/api.ts.html @@ -0,0 +1,247 @@ + + + + + + Code coverage report for src/lib/api.ts + + + + + + + + + +
+
+

All files / src/lib api.ts

+
+ +
+ 97.95% + Statements + 48/49 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 96% + Functions + 24/25 +
+ + +
+ 100% + Lines + 25/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55  +  +  +1x +  +2x +2x +2x +2x +2x +  +2x +  +3x +  +2x +  +2x +  +2x +  +  +2x +  +3x +  +2x +  +2x +  +2x +  +  +1x +  +  +1x +  +  +2x +  +1x +  +1x +  +1x +  +  +1x +  +1x +  +1x +  + 
import { invoke } from "@tauri-apps/api/core";
+import type { NodeDto, EdgeDto, SchemaInfo, SensibleqlResult, OllamaStatus, PullProgressResult, EmbeddingRequest, EmbeddingResult, NLToSensibleQLRequest, NLToSensibleQLResult, IngestionResult, DocumentChunk, ExtractedEntity } from "../types";
+ 
+export const logError = (msg: string) => invoke("log_error", { msg });
+ 
+export const dbCreate = (name: string, path: string) => invoke<string>("db_create", { name, path });
+export const dbOpen = (name: string, path: string) => invoke<string>("db_open", { name, path });
+export const dbClose = (name: string) => invoke<string>("db_close", { name });
+export const dbList = () => invoke<string[]>("db_list");
+export const dbStats = (name: string) => invoke<{ node_count: number; edge_count: number }>("db_stats", { name });
+ 
+export const nodeCreate = (db_name: string, id: number, label: string) =>
+  invoke<NodeDto>("node_create", { req: { db_name, id, label } });
+export const nodeGet = (db_name: string, id: number) =>
+  invoke<NodeDto | null>("node_get", { db_name, id });
+export const nodeUpdate = (db_name: string, id: number, label: string) =>
+  invoke<NodeDto>("node_update", { db_name, id, label });
+export const nodeDelete = (db_name: string, id: number) =>
+  invoke<string>("node_delete", { db_name, id });
+export const nodeList = (db_name: string) =>
+  invoke<NodeDto[]>("node_list", { dbName: db_name });
+ 
+export const edgeCreate = (db_name: string, id: number, label: string, from_node: number, to_node: number) =>
+  invoke<EdgeDto>("edge_create", { req: { db_name, id, label, from_node, to_node } });
+export const edgeGet = (db_name: string, id: number) =>
+  invoke<EdgeDto | null>("edge_get", { db_name, id });
+export const edgeUpdate = (db_name: string, id: number, label: string, from_node: number, to_node: number) =>
+  invoke<EdgeDto>("edge_update", { db_name, id, label, from_node, to_node });
+export const edgeDelete = (db_name: string, id: number) =>
+  invoke<string>("edge_delete", { db_name, id });
+export const edgeList = (db_name: string) =>
+  invoke<EdgeDto[]>("edge_list", { dbName: db_name });
+ 
+export const schemaGet = (db_name: string) =>
+  invoke<SchemaInfo>("schema_get", { dbName: db_name });
+ 
+export const sensibleqlExecute = (db_name: string, query: string) =>
+  invoke<SensibleqlResult>("sensibleql_execute", { dbName: db_name, query });
+ 
+export const ollamaCheckStatus = (ollamaUrl: string | null) =>
+  invoke<OllamaStatus>("ollama_check_status", { ollamaUrl });
+export const ollamaPullModel = (model: string, ollamaUrl: string | null) =>
+  invoke<PullProgressResult[]>("ollama_pull_model", { model, ollamaUrl });
+export const generateEmbeddings = (request: EmbeddingRequest, ollamaUrl: string | null) =>
+  invoke<EmbeddingResult>("generate_embeddings", { request, ollamaUrl });
+export const translateNLtoSensibleQL = (request: NLToSensibleQLRequest, model: string | null, ollamaUrl: string | null) =>
+  invoke<NLToSensibleQLResult>("translate_nl_to_sensibleql", { request, model, ollamaUrl });
+ 
+export const ingestDocument = (filePath: string, dbName: string, ollamaUrl: string | null, embeddingModel: string | null) =>
+  invoke<IngestionResult>("ingest_document", { filePath, dbName, ollamaUrl, embeddingModel });
+export const chunkText = (content: string, fileType: string) =>
+  invoke<DocumentChunk[]>("chunk_text", { content, fileType });
+export const extractEntitiesFromChunks = (chunks: string[], model: string | null, ollamaUrl: string | null) =>
+  invoke<ExtractedEntity[]>("extract_entities_from_chunks", { chunks, model, ollamaUrl });
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/lib/glossary.ts.html b/sensibledb-explorer/src/frontend/coverage/src/lib/glossary.ts.html new file mode 100644 index 00000000..93652a16 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/lib/glossary.ts.html @@ -0,0 +1,274 @@ + + + + + + Code coverage report for src/lib/glossary.ts + + + + + + + + + +
+
+

All files / src/lib glossary.ts

+
+ +
+ 0% + Statements + 0/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/2 +
+ + +
+ 0% + Lines + 0/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
export interface GlossaryEntry {
+  term: string;
+  userFacingTerm: string;
+  explanation: string;
+  example: string;
+  learnMore?: string;
+}
+ 
+export const glossary: Record<string, GlossaryEntry> = {
+  node: {
+    term: "Node",
+    userFacingTerm: "Item",
+    explanation: "A thing in your data — a person, event, symptom, etc.",
+    example: '"Fatigue" is an item in your health data.',
+    learnMore: "https://docs.sensibledb-db.com/documentation/concepts/nodes",
+  },
+  edge: {
+    term: "Edge",
+    userFacingTerm: "Connection",
+    explanation: "How two items are related.",
+    example: '"Poor Sleep" → TRIGGERED → "Fatigue" means poor sleep may have caused fatigue.',
+    learnMore: "https://docs.sensibledb-db.com/documentation/concepts/edges",
+  },
+  label: {
+    term: "Label/Type",
+    userFacingTerm: "Type",
+    explanation: "What kind of item this is.",
+    example: 'An item might be of type "Person", "Symptom", or "Event".',
+  },
+  "vector-embedding": {
+    term: "Vector Embedding",
+    userFacingTerm: "Similarity",
+    explanation: "Items that are alike are grouped together.",
+    example: "Items about sleep and rest might be grouped because they share similar characteristics.",
+  },
+  "graph-traversal": {
+    term: "Graph Traversal",
+    userFacingTerm: "Follow connections",
+    explanation: "Starting from one item, see what it connects to.",
+    example: 'Starting from "Fatigue", you can follow connections to find related symptoms and triggers.',
+  },
+  "sensibleql-query": {
+    term: "SensibleQL Query",
+    userFacingTerm: "Ask a question",
+    explanation: "A way to ask your data questions.",
+    example: '"Show me all symptoms connected to fatigue" is a question your data can answer.',
+  },
+  schema: {
+    term: "Schema",
+    userFacingTerm: "Structure",
+    explanation: "The blueprint of how your data is organized.",
+    example: "Your structure defines what types of items exist and how they can connect.",
+    learnMore: "https://docs.sensibledb-db.com/documentation/concepts/schema",
+  },
+};
+ 
+export function getGlossaryEntry(term: string): GlossaryEntry | undefined {
+  return glossary[term.toLowerCase()];
+}
+ 
+export function getAllGlossaryEntries(): GlossaryEntry[] {
+  return Object.values(glossary);
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/lib/index.html b/sensibledb-explorer/src/frontend/coverage/src/lib/index.html new file mode 100644 index 00000000..bcaedf07 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/lib/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for src/lib + + + + + + + + + +
+
+

All files src/lib

+
+ +
+ 94.95% + Statements + 207/218 +
+ + +
+ 76.88% + Branches + 153/199 +
+ + +
+ 91.83% + Functions + 45/49 +
+ + +
+ 95.21% + Lines + 179/188 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
api.ts +
+
97.95%48/49100%0/096%24/25100%25/25
glossary.ts +
+
0%0/3100%0/00%0/20%0/3
nl-to-sensibleql.ts +
+
95.78%159/16676.88%153/19995.45%21/2296.25%154/160
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/lib/nl-to-sensibleql.ts.html b/sensibledb-explorer/src/frontend/coverage/src/lib/nl-to-sensibleql.ts.html new file mode 100644 index 00000000..88abb856 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/lib/nl-to-sensibleql.ts.html @@ -0,0 +1,1237 @@ + + + + + + Code coverage report for src/lib/nl-to-sensibleql.ts + + + + + + + + + +
+
+

All files / src/lib nl-to-sensibleql.ts

+
+ +
+ 95.78% + Statements + 159/166 +
+ + +
+ 76.88% + Branches + 153/199 +
+ + +
+ 95.45% + Functions + 21/22 +
+ + +
+ 96.25% + Lines + 154/160 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102 +103 +104 +105 +106 +107 +108 +109 +110 +111 +112 +113 +114 +115 +116 +117 +118 +119 +120 +121 +122 +123 +124 +125 +126 +127 +128 +129 +130 +131 +132 +133 +134 +135 +136 +137 +138 +139 +140 +141 +142 +143 +144 +145 +146 +147 +148 +149 +150 +151 +152 +153 +154 +155 +156 +157 +158 +159 +160 +161 +162 +163 +164 +165 +166 +167 +168 +169 +170 +171 +172 +173 +174 +175 +176 +177 +178 +179 +180 +181 +182 +183 +184 +185 +186 +187 +188 +189 +190 +191 +192 +193 +194 +195 +196 +197 +198 +199 +200 +201 +202 +203 +204 +205 +206 +207 +208 +209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223 +224 +225 +226 +227 +228 +229 +230 +231 +232 +233 +234 +235 +236 +237 +238 +239 +240 +241 +242 +243 +244 +245 +246 +247 +248 +249 +250 +251 +252 +253 +254 +255 +256 +257 +258 +259 +260 +261 +262 +263 +264 +265 +266 +267 +268 +269 +270 +271 +272 +273 +274 +275 +276 +277 +278 +279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385  +  +  +  +  +  +  +  +  +82x +  +  +  +33x +31x +31x +77x +77x +24x +  +  +7x +  +  +  +3x +3x +3x +3x +21x +21x +5x +  +  +3x +3x +  +  +  +48x +  +48x +4x +  +  +44x +4x +  +  +40x +3x +  +  +37x +37x +3x +3x +3x +  +  +  +  +  +  +  +34x +34x +10x +10x +6x +  +  +  +  +  +  +  +28x +28x +8x +8x +4x +  +  +  +  +  +  +  +24x +24x +3x +3x +3x +  +  +  +  +  +  +  +21x +21x +3x +3x +2x +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +19x +19x +3x +3x +3x +  +  +  +  +  +  +  +16x +16x +4x +  +  +  +  +  +12x +12x +  +  +  +  +  +  +  +  +  +  +12x +12x +5x +5x +5x +  +  +  +  +  +  +  +7x +  +  +  +  +  +  +  +9x +  +9x +1x +  +  +  +  +  +  +8x +  +1x +  +  +  +  +  +2x +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +17x +1x +  +  +16x +17x +17x +17x +  +17x +  +2x +1x +2x +  +1x +  +  +1x +1x +1x +2x +2x +  +1x +1x +1x +  +  +1x +1x +2x +  +  +1x +  +1x +  +  +1x +2x +1x +  +1x +  +  +  +3x +3x +3x +2x +  +  +1x +  +  +  +3x +1x +  +  +2x +2x +17x +17x +  +  +2x +1x +2x +  +1x +  +  +1x +14x +15x +  +1x +  +  +  +2x +1x +  +  +1x +  +1x +1x +1x +  +  +  +1x +  +  +  +2x +1x +  +  +1x +1x +1x +2x +1x +1x +  +  +  +  +  +1x +1x +  +  +  +  +  +  +2x +1x +  +  +1x +2x +  +4x +  +1x +  +  +1x +2x +  +  +1x +  +  +  +2x +1x +  +1x +  +  +  + 
import type { SchemaInfo } from "../types";
+ 
+interface NLMatch {
+  sensibleql: string;
+  resultType: "overview" | "items" | "connections" | "count" | "relationships" | "most_connected";
+  entityTypes?: string[];
+}
+ 
+function normalize(input: string): string {
+  return input.toLowerCase().trim().replace(/[?!.]+$/g, "");
+}
+ 
+function findEntityType(input: string, schemaInfo: SchemaInfo | null): string | null {
+  if (!schemaInfo) return null;
+  const normalized = normalize(input);
+  for (const label of schemaInfo.node_labels) {
+    const labelLower = label.toLowerCase();
+    if (normalized.includes(labelLower) || normalized.includes(labelLower.replace(/_/g, " "))) {
+      return label;
+    }
+  }
+  return null;
+}
+ 
+function findTwoEntityTypes(input: string, schemaInfo: SchemaInfo | null): [string | null, string | null] {
+  Iif (!schemaInfo) return [null, null];
+  const normalized = normalize(input);
+  const found: string[] = [];
+  for (const label of schemaInfo.node_labels) {
+    const labelLower = label.toLowerCase();
+    if ((normalized.includes(labelLower) || normalized.includes(labelLower.replace(/_/g, " "))) && found.length < 2) {
+      found.push(label);
+    }
+  }
+  while (found.length < 2) found.push(null as any);
+  return [found[0], found[1]];
+}
+ 
+export function translateNLtoSensibleQL(input: string, schemaInfo: SchemaInfo | null): NLMatch {
+  const normalized = normalize(input);
+ 
+  if (normalized === "what data do i have" || normalized === "show me all items" || normalized === "show me everything") {
+    return { sensibleql: "MATCH (n) RETURN n", resultType: "overview" };
+  }
+ 
+  if (normalized === "how many connections are there" || normalized === "count connections" || normalized === "how many connections") {
+    return { sensibleql: "COUNT edges", resultType: "count" };
+  }
+ 
+  if (normalized === "what types of items exist" || normalized === "what types are there" || normalized === "show me all types") {
+    return { sensibleql: "MATCH (n) RETURN DISTINCT labels(n)", resultType: "overview" };
+  }
+ 
+  const countMatch = normalized.match(/^(?:how many|count)\s+(.+?)(?:\s+are there|\s+do (?:i|we)\s+have)?$/);
+  if (countMatch) {
+    const entityType = findEntityType(countMatch[1], schemaInfo);
+    Eif (entityType) {
+      return {
+        sensibleql: `MATCH (n:${entityType}) RETURN count(n)`,
+        resultType: "count",
+        entityTypes: [entityType],
+      };
+    }
+  }
+ 
+  const showAllMatch = normalized.match(/^show\s+(?:me\s+)?all\s+(.+)$/);
+  if (showAllMatch) {
+    const entityType = findEntityType(showAllMatch[1], schemaInfo);
+    if (entityType) {
+      return {
+        sensibleql: `MATCH (n:${entityType}) RETURN n`,
+        resultType: "items",
+        entityTypes: [entityType],
+      };
+    }
+  }
+ 
+  const showMatch = normalized.match(/^show\s+(?:me\s+)?(.+)$/);
+  if (showMatch && !showMatch[1].includes("connected")) {
+    const entityType = findEntityType(showMatch[1], schemaInfo);
+    if (entityType) {
+      return {
+        sensibleql: `MATCH (n:${entityType}) RETURN n`,
+        resultType: "items",
+        entityTypes: [entityType],
+      };
+    }
+  }
+ 
+  const connectedToMatch = normalized.match(/^(?:what(?:'s| is) connected to|show(?: me)? (?:what|what\'?s?|everything) connected to|connections (?:of|for)|what connects to)\s+(.+)$/);
+  if (connectedToMatch) {
+    const entityType = findEntityType(connectedToMatch[1], schemaInfo);
+    Eif (entityType) {
+      return {
+        sensibleql: `MATCH (n:${entityType})-[r]-(m) RETURN n, r, m`,
+        resultType: "connections",
+        entityTypes: [entityType],
+      };
+    }
+  }
+ 
+  const showConnectedMatch = normalized.match(/^show\s+(?:me\s+)?(.+?)\s+connected\s+to\s+(.+)$/);
+  if (showConnectedMatch) {
+    const [type1, type2] = findTwoEntityTypes(`${showConnectedMatch[1]} ${showConnectedMatch[2]}`, schemaInfo);
+    if (type1 && type2) {
+      return {
+        sensibleql: `MATCH (n:${type1})--(m:${type2}) RETURN n, m`,
+        resultType: "relationships",
+        entityTypes: [type1, type2],
+      };
+    }
+    const type1only = findEntityType(showConnectedMatch[1], schemaInfo);
+    Iif (type1only) {
+      return {
+        sensibleql: `MATCH (n:${type1only})-[r]-(m) RETURN n, r, m`,
+        resultType: "connections",
+        entityTypes: [type1only],
+      };
+    }
+  }
+ 
+  const causesMatch = normalized.match(/^(?:what\s+)?(?:causes|triggers|leads?\s+to)\s+(.+)$/);
+  if (causesMatch) {
+    const entityType = findEntityType(causesMatch[1], schemaInfo);
+    Eif (entityType) {
+      return {
+        sensibleql: `MATCH (n:${entityType})<-[r]-(m) RETURN n, r, m`,
+        resultType: "relationships",
+        entityTypes: [entityType],
+      };
+    }
+  }
+ 
+  const mostConnectedMatch = normalized.match(/^(?:show\s+me\s+)?(?:the\s+)?most\s+connected\s+(?:items?|nodes?|things?)(.*)$/);
+  if (mostConnectedMatch || normalized.includes("most connected")) {
+    return {
+      sensibleql: `MATCH (n)-[r]-(m) RETURN n, count(r) as connections ORDER BY connections DESC`,
+      resultType: "most_connected",
+    };
+  }
+ 
+  const detailsMatch = normalized.match(/^show\s+(?:me\s+)?details?\s+(?:of|for|about)\s+(.+)$/);
+  Iif (detailsMatch) {
+    const entityType = findEntityType(detailsMatch[1], schemaInfo);
+    if (entityType) {
+      return {
+        sensibleql: `MATCH (n:${entityType}) RETURN n`,
+        resultType: "items",
+        entityTypes: [entityType],
+      };
+    }
+  }
+ 
+  const listMatch = normalized.match(/^(?:list|find|get)\s+(.+)$/);
+  if (listMatch) {
+    const entityType = findEntityType(listMatch[1], schemaInfo);
+    Eif (entityType) {
+      return {
+        sensibleql: `MATCH (n:${entityType}) RETURN n`,
+        resultType: "items",
+        entityTypes: [entityType],
+      };
+    }
+  }
+ 
+  return { sensibleql: input, resultType: "items" };
+}
+ 
+export function generateFollowUpSuggestions(context: {
+  resultType: string;
+  entityTypes?: string[];
+  hasResults: boolean;
+}): string[] {
+  const { resultType, entityTypes, hasResults } = context;
+ 
+  if (!hasResults) {
+    return [
+      "What data do I have?",
+      "Show me all types",
+      "How many connections are there?",
+    ];
+  }
+ 
+  switch (resultType) {
+    case "overview":
+      return [
+        "Show me the most connected items",
+        "What types of items exist?",
+        "How many connections are there?",
+      ];
+    case "items":
+      return [
+        "What are they connected to?",
+        "Show details",
+        entityTypes && entityTypes.length > 0 ? `Filter by ${entityTypes[0]}` : "Filter by type",
+      ];
+    case "connections":
+      return [
+        "Show on graph",
+        "What's the strongest link?",
+        "Export results",
+      ];
+    case "count":
+      return [
+        "Show me the details",
+        "Break down by type",
+        "Compare with last period",
+      ];
+    case "relationships":
+      return [
+        "Show on graph",
+        "What's the strongest link?",
+        "Show me more details",
+      ];
+    case "most_connected":
+      return [
+        "Show on graph",
+        "What connects them?",
+        "Show me the details",
+      ];
+    default:
+      return [
+        "Show on graph",
+        "What does this mean?",
+        "Show me more details",
+      ];
+  }
+}
+ 
+export function generateAssistantResponse(
+  query: string,
+  result: any,
+  sensibleql: string,
+  schemaInfo: SchemaInfo | null,
+  resultType: string
+): string {
+  if (!result?.success) {
+    return `I couldn't execute that query. Try asking in plain English, like "Show me all people" or "What causes fatigue?"`;
+  }
+ 
+  const nodes = result.data?.nodes || [];
+  const edges = result.data?.edges || [];
+  const nodeCount = nodes.length;
+  const edgeCount = edges.length;
+ 
+  switch (resultType) {
+    case "overview": {
+      if (nodeCount === 0 && edgeCount === 0 && schemaInfo) {
+        const typeBreakdown = Object.entries(schemaInfo.node_counts)
+          .map(([type, count]) => `  • ${count} ${type}`)
+          .join("\n");
+        return `I found ${schemaInfo.total_nodes} items and ${schemaInfo.total_edges} connections in your database.\n\nHere's the breakdown:\n${typeBreakdown}`;
+      }
+ 
+      const typeCounts: Record<string, number> = {};
+      const edgeTypeCounts: Record<string, number> = {};
+      for (const node of nodes) {
+        const type = node.label || node.type || "Unknown";
+        typeCounts[type] = (typeCounts[type] || 0) + 1;
+      }
+      for (const edge of edges) {
+        const type = edge.label || edge.type || "Unknown";
+        edgeTypeCounts[type] = (edgeTypeCounts[type] || 0) + 1;
+      }
+ 
+      const typeList = Object.entries(typeCounts)
+        .sort((a, b) => b[1] - a[1])
+        .map(([type, count]) => `  • ${count} ${type}`)
+        .join("\n");
+ 
+      const edgeList = Object.entries(edgeTypeCounts)
+        .sort((a, b) => b[1] - a[1])
+        .map(([type, count]) => `  • ${count} ${type}`)
+        .join("\n");
+ 
+      let response = `I found ${nodeCount} item${nodeCount !== 1 ? "s" : ""} across ${Object.keys(typeCounts).length} type${Object.keys(typeCounts).length !== 1 ? "s" : ""}:\n${typeList}`;
+      if (edgeCount > 0) {
+        response += `\n\nWith ${edgeCount} connection${edgeCount !== 1 ? "s" : ""}:\n${edgeList}`;
+      }
+      return response;
+    }
+ 
+    case "count": {
+      Eif (nodeCount === 0 && edgeCount === 0) {
+        const countValue = result.data?.count ?? result.data?.total;
+        if (countValue !== undefined) {
+          return `There ${countValue === 1 ? "is" : "are"} **${countValue}** item${countValue !== 1 ? "s" : ""} matching your query.`;
+        }
+      }
+      return `I found ${nodeCount} item${nodeCount !== 1 ? "s" : ""} and ${edgeCount} connection${edgeCount !== 1 ? "s" : ""}.`;
+    }
+ 
+    case "items": {
+      if (nodeCount === 0) {
+        return `No items found matching your query. Try a different type or check the spelling.`;
+      }
+ 
+      const typeCounts: Record<string, number> = {};
+      for (const node of nodes) {
+        const type = node.label || node.type || "Unknown";
+        typeCounts[type] = (typeCounts[type] || 0) + 1;
+      }
+ 
+      if (nodeCount <= 10) {
+        const itemList = nodes
+          .map((node: any, i: number) => `  ${i + 1}. ${node.label || node.name || node.id || "Unknown"}`)
+          .join("\n");
+        return `I found ${nodeCount} item${nodeCount !== 1 ? "s" : ""}:\n\n${itemList}`;
+      }
+ 
+      const typeList = Object.entries(typeCounts)
+        .sort((a, b) => b[1] - a[1])
+        .map(([type, count]) => `  • ${count} ${type}`)
+        .join("\n");
+      return `I found ${nodeCount} items across ${Object.keys(typeCounts).length} types:\n\n${typeList}\n\nShowing top 10 results. Use "Show details" to see all items.`;
+    }
+ 
+    case "connections": {
+      if (nodeCount === 0) {
+        return `No connections found for this item. It might be isolated in the graph.`;
+      }
+ 
+      const connectionList = nodes.slice(0, 10)
+        .map((node: any, i: number) => {
+          const connections = edges.filter((e: any) => e.from === node.id || e.to === node.id);
+          const connCount = connections.length;
+          return `  ${i + 1}. ${node.label || node.name || node.id} — ${connCount} connection${connCount !== 1 ? "s" : ""}`;
+        })
+        .join("\n");
+ 
+      return `I found ${nodeCount} item${nodeCount !== 1 ? "s" : ""} with ${edgeCount} connection${edgeCount !== 1 ? "s" : ""}:\n\n${connectionList}`;
+    }
+ 
+    case "relationships": {
+      if (nodeCount === 0) {
+        return `No relationships found between these types. They might not be directly connected.`;
+      }
+ 
+      const relationshipPaths: string[] = [];
+      for (const edge of edges.slice(0, 5)) {
+        const fromNode = nodes.find((n: any) => n.id === edge.from);
+        const toNode = nodes.find((n: any) => n.id === edge.to);
+        Eif (fromNode && toNode) {
+          relationshipPaths.push(
+            `  ${fromNode.label || fromNode.name || fromNode.id} → [${edge.label || edge.type || "related"}] → ${toNode.label || toNode.name || toNode.id}`
+          );
+        }
+      }
+ 
+      Eif (relationshipPaths.length > 0) {
+        return `I found ${edgeCount} relationship${edgeCount !== 1 ? "s" : ""}:\n\n${relationshipPaths.join("\n")}`;
+      }
+ 
+      return `I found ${nodeCount} items with ${edgeCount} relationship${edgeCount !== 1 ? "s" : ""} between them.`;
+    }
+ 
+    case "most_connected": {
+      if (nodeCount === 0) {
+        return `No connection data available yet.`;
+      }
+ 
+      const sorted = [...nodes]
+        .map((node: any) => ({
+          node,
+          connections: edges.filter((e: any) => e.from === node.id || e.to === node.id).length,
+        }))
+        .sort((a, b) => b.connections - a.connections)
+        .slice(0, 5);
+ 
+      const topList = sorted
+        .map((item: any, i: number) => `  ${i + 1}. ${item.node.label || item.node.name || item.node.id} — ${item.connections} connection${item.connections !== 1 ? "s" : ""}`)
+        .join("\n");
+ 
+      return `Here are the most connected items:\n\n${topList}`;
+    }
+ 
+    default: {
+      if (nodeCount > 0) {
+        return `I found ${nodeCount} item${nodeCount !== 1 ? "s" : ""} and ${edgeCount} connection${edgeCount !== 1 ? "s" : ""} matching your question.`;
+      }
+      return `No results found. Try rephrasing your question or ask "What data do I have?" to see what's available.`;
+    }
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/stores/app.ts.html b/sensibledb-explorer/src/frontend/coverage/src/stores/app.ts.html new file mode 100644 index 00000000..aa04e8ac --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/stores/app.ts.html @@ -0,0 +1,208 @@ + + + + + + Code coverage report for src/stores/app.ts + + + + + + + + + +
+
+

All files / src/stores app.ts

+
+ +
+ 100% + Statements + 14/14 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 14/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42  +  +  +4x +4x +4x +4x +4x +4x +4x +4x +4x +4x +  +  +  +  +  +  +  +  +4x +4x +  +  +  +  +  +  +  +  +  +4x +  +  +  +  +  +  +  +4x + 
import { createSignal } from "solid-js";
+import type { NodeDto, EdgeDto, SchemaInfo } from "../types";
+ 
+export const [activeDb, setActiveDb] = createSignal<string | null>(null);
+export const [databases, setDatabases] = createSignal<string[]>([]);
+export const [nodes, setNodes] = createSignal<NodeDto[]>([]);
+export const [edges, setEdges] = createSignal<EdgeDto[]>([]);
+export const [selectedNode, setSelectedNode] = createSignal<NodeDto | null>(null);
+export const [selectedEdge, setSelectedEdge] = createSignal<EdgeDto | null>(null);
+export const [schema, setSchema] = createSignal<SchemaInfo | null>(null);
+export const [isLoading, setIsLoading] = createSignal(false);
+export const [error, setError] = createSignal<string | null>(null);
+export const [activeView, setActiveView] = createSignal<"home" | "graph" | "chat" | "report" | "nodes" | "edges" | "schema" | "sensibleql">("home");
+ 
+// Chat state
+export interface ChatMessage {
+  role: "user" | "assistant";
+  content: string;
+  data?: any;
+  timestamp: number;
+}
+export const [chatMessages, setChatMessages] = createSignal<ChatMessage[]>([]);
+export const [isChatLoading, setIsChatLoading] = createSignal(false);
+ 
+export interface ChatContext {
+  lastQuery: string;
+  lastNql: string;
+  lastResultType: "overview" | "items" | "connections" | "count" | "relationships" | "most_connected" | "error";
+  lastEntityTypes?: string[];
+  lastItemCount?: number;
+  lastEdgeCount?: number;
+}
+export const [chatContext, setChatContext] = createSignal<ChatContext | null>(null);
+ 
+export interface QueryResult {
+  sensibleql: string;
+  data: any | null;
+  nodes: number[];
+  edges: number[];
+}
+export const [lastQueryResult, setLastQueryResult] = createSignal<QueryResult | null>(null);
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/stores/index.html b/sensibledb-explorer/src/frontend/coverage/src/stores/index.html new file mode 100644 index 00000000..9db949c9 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/stores/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for src/stores + + + + + + + + + +
+
+

All files src/stores

+
+ +
+ 100% + Statements + 14/14 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 14/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
app.ts +
+
100%14/14100%0/0100%0/0100%14/14
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/coverage/src/types.ts.html b/sensibledb-explorer/src/frontend/coverage/src/types.ts.html new file mode 100644 index 00000000..e45d0631 --- /dev/null +++ b/sensibledb-explorer/src/frontend/coverage/src/types.ts.html @@ -0,0 +1,388 @@ + + + + + + Code coverage report for src/types.ts + + + + + + + + + +
+
+

All files / src types.ts

+
+ +
+ 0% + Statements + 0/0 +
+ + +
+ 0% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/0 +
+ + +
+ 0% + Lines + 0/0 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 +75 +76 +77 +78 +79 +80 +81 +82 +83 +84 +85 +86 +87 +88 +89 +90 +91 +92 +93 +94 +95 +96 +97 +98 +99 +100 +101 +102  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
export interface NodeDto {
+  id: number;
+  label: string;
+}
+ 
+export interface EdgeDto {
+  id: number;
+  label: string;
+  from: number;
+  to: number;
+}
+ 
+export interface DbStats {
+  node_count: number;
+  edge_count: number;
+}
+ 
+export interface SchemaInfo {
+  node_labels: string[];
+  edge_labels: string[];
+  node_counts: Record<string, number>;
+  edge_counts: Record<string, number>;
+  total_nodes: number;
+  total_edges: number;
+}
+ 
+export interface NqlResult {
+  success: boolean;
+  message: string;
+  data: any | null;
+}
+ 
+export interface GraphNode {
+  id: number;
+  label: string;
+  x?: number;
+  y?: number;
+}
+ 
+export interface GraphEdge {
+  source: number;
+  target: number;
+  label: string;
+}
+ 
+export interface OllamaModelInfo {
+  name: string;
+  size: number;
+  digest: string;
+  modified_at: string;
+}
+ 
+export interface OllamaStatus {
+  available: boolean;
+  url: string;
+  version: string | null;
+  models: OllamaModelInfo[];
+}
+ 
+export interface PullProgressResult {
+  status: string;
+  percent: number;
+}
+ 
+export interface EmbeddingRequest {
+  model: string;
+  texts: string[];
+}
+ 
+export interface EmbeddingResult {
+  embeddings: number[][];
+}
+ 
+export interface NLToSensibleQLRequest {
+  query: string;
+  schema_info: string | null;
+  db_name: string;
+}
+ 
+export interface NLToSensibleQLResult {
+  sensibleql: string;
+  explanation: string;
+}
+ 
+export interface DocumentChunk {
+  id: string;
+  content: string;
+  metadata: Record<string, unknown>;
+}
+ 
+export interface ExtractedEntity {
+  subject: string;
+  predicate: string;
+  object: string;
+}
+ 
+export interface IngestionResult {
+  chunk_count: number;
+  entity_count: number;
+  document_id: string;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/sensibledb-explorer/src/frontend/package-lock.json b/sensibledb-explorer/src/frontend/package-lock.json index 2dc303f1..7744f40d 100644 --- a/sensibledb-explorer/src/frontend/package-lock.json +++ b/sensibledb-explorer/src/frontend/package-lock.json @@ -20,13 +20,88 @@ "solid-js": "^1.9" }, "devDependencies": { + "@solidjs/testing-library": "^0.8.10", "@tauri-apps/cli": "^2", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/user-event": "^14.6.1", "@types/node": "^22", + "@vitest/coverage-v8": "^4.1.2", + "happy-dom": "^20.8.9", + "jsdom": "^29.0.1", "typescript": "^5.6", "vite": "^6", - "vite-plugin-solid": "^2.10" + "vite-plugin-solid": "^2.10", + "vitest": "^4.1.2" } }, + "node_modules/@adobe/css-tools": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.4.tgz", + "integrity": "sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@asamuzakjp/css-color": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-5.1.5.tgz", + "integrity": "sha512-8cMAA1bE66Mb/tfmkhcfJLjEPgyT7SSy6lW6id5XL113ai1ky76d/1L27sGnXCMsLfq66DInAU3OzuahB4lu9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^3.1.1", + "@csstools/css-color-parser": "^4.0.2", + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0", + "lru-cache": "^11.2.7" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.0.tgz", + "integrity": "sha512-sr8xPKE25m6vJVcrdn6NxtC0fVfuPowbscLypegRgOm0yXSqr5JNHCAY3hnusdJ7HRBW04j6Ip4khvHU778DuQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-7.0.6.tgz", + "integrity": "sha512-Tgmk6EQM0nc9xvp7sEHRVavbknhb/vGKht+04yAT3t5KQwZ02CSobCtcFgaHH04ZrjD1BhEKNA8tRhzFV20gkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/nwsapi": "^2.3.9", + "bidi-js": "^1.0.3", + "css-tree": "^3.2.1", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.2.7" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.0.tgz", + "integrity": "sha512-sr8xPKE25m6vJVcrdn6NxtC0fVfuPowbscLypegRgOm0yXSqr5JNHCAY3hnusdJ7HRBW04j6Ip4khvHU778DuQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@asamuzakjp/nwsapi": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz", + "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/code-frame": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", @@ -245,6 +320,16 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", @@ -293,6 +378,29 @@ "node": ">=6.9.0" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@bramus/specificity": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz", + "integrity": "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0" + }, + "bin": { + "specificity": "bin/cli.js" + } + }, "node_modules/@codemirror/autocomplete": { "version": "6.20.1", "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.1.tgz", @@ -389,6 +497,146 @@ "w3c-keyname": "^2.2.4" } }, + "node_modules/@csstools/color-helpers": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.2.tgz", + "integrity": "sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@csstools/css-calc": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.1.1.tgz", + "integrity": "sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.0.2.tgz", + "integrity": "sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^6.0.2", + "@csstools/css-calc": "^3.1.1" + }, + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz", + "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.2.tgz", + "integrity": "sha512-5GkLzz4prTIpoyeUiIu3iV6CSG3Plo7xRVOFPKI7FVEJ3mZ0A8SwK0XU3Gl7xAkiQ+mDyam+NNp875/C5y+jSA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "peerDependencies": { + "css-tree": "^3.2.1" + }, + "peerDependenciesMeta": { + "css-tree": { + "optional": true + } + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz", + "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", @@ -831,6 +1079,24 @@ "node": ">=18" } }, + "node_modules/@exodus/bytes": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.0.tgz", + "integrity": "sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@noble/hashes": "^1.8.0 || ^2.0.0" + }, + "peerDependenciesMeta": { + "@noble/hashes": { + "optional": true + } + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -1311,6 +1577,35 @@ "win32" ] }, + "node_modules/@solidjs/testing-library": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@solidjs/testing-library/-/testing-library-0.8.10.tgz", + "integrity": "sha512-qdeuIerwyq7oQTIrrKvV0aL9aFeuwTd86VYD3afdq5HYEwoox1OBTJy4y8A3TFZr8oAR0nujYgCzY/8wgHGfeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@testing-library/dom": "^10.4.0" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "@solidjs/router": ">=0.9.0", + "solid-js": ">=1.0.0" + }, + "peerDependenciesMeta": { + "@solidjs/router": { + "optional": true + } + } + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "dev": true, + "license": "MIT" + }, "node_modules/@tauri-apps/api": { "version": "2.10.1", "resolved": "https://registry.npmjs.org/@tauri-apps/api/-/api-2.10.1.tgz", @@ -1562,12 +1857,80 @@ "@tauri-apps/api": "^2.8.0" } }, + "node_modules/@testing-library/dom": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", + "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "picocolors": "1.1.1", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@testing-library/jest-dom": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.9.1.tgz", + "integrity": "sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "aria-query": "^5.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "picocolors": "^1.1.1", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/user-event": { + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@testing-library/dom": ">=7.21.4" + } + }, "node_modules/@tweenjs/tween.js": { "version": "25.0.0", "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-25.0.0.tgz", "integrity": "sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==", "license": "MIT" }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1613,6 +1976,24 @@ "@babel/types": "^7.28.2" } }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -1630,62 +2011,285 @@ "undici-types": "~6.21.0" } }, - "node_modules/accessor-fn": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/accessor-fn/-/accessor-fn-1.5.3.tgz", - "integrity": "sha512-rkAofCwe/FvYFUlMB0v0gWmhqtfAtV1IUkdPbfhTUyYniu5LrC0A0UJkTH0Jv3S8SvwkmfuAlY+mQIJATdocMA==", + "node_modules/@types/whatwg-mimetype": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-mimetype/-/whatwg-mimetype-3.0.2.tgz", + "integrity": "sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@types/node": "*" } }, - "node_modules/babel-plugin-jsx-dom-expressions": { - "version": "0.40.6", - "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.40.6.tgz", - "integrity": "sha512-v3P1MW46Lm7VMpAkq0QfyzLWWkC8fh+0aE5Km4msIgDx5kjenHU0pF2s+4/NH8CQn/kla6+Hvws+2AF7bfV5qQ==", + "node_modules/@vitest/coverage-v8": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.1.2.tgz", + "integrity": "sha512-sPK//PHO+kAkScb8XITeB1bf7fsk85Km7+rt4eeuRR3VS1/crD47cmV5wicisJmjNdfeokTZwjMk4Mj2d58Mgg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "7.18.6", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.20.7", - "html-entities": "2.3.3", - "parse5": "^7.1.2" + "@bcoe/v8-coverage": "^1.0.2", + "@vitest/utils": "4.1.2", + "ast-v8-to-istanbul": "^1.0.0", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.2.0", + "magicast": "^0.5.2", + "obug": "^2.1.1", + "std-env": "^4.0.0-rc.1", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@babel/core": "^7.20.12" + "@vitest/browser": "4.1.2", + "vitest": "4.1.2" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } } }, - "node_modules/babel-plugin-jsx-dom-expressions/node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "node_modules/@vitest/expect": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.2.tgz", + "integrity": "sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "@standard-schema/spec": "^1.1.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.1.2", + "@vitest/utils": "4.1.2", + "chai": "^6.2.2", + "tinyrainbow": "^3.1.0" }, - "engines": { - "node": ">=6.9.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/babel-preset-solid": { - "version": "1.9.12", - "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.9.12.tgz", - "integrity": "sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==", + "node_modules/@vitest/mocker": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.2.tgz", + "integrity": "sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==", "dev": true, "license": "MIT", "dependencies": { - "babel-plugin-jsx-dom-expressions": "^0.40.6" + "@vitest/spy": "4.1.2", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.21" + }, + "funding": { + "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "solid-js": "^1.9.12" + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "peerDependenciesMeta": { - "solid-js": { + "msw": { "optional": true - } + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.2.tgz", + "integrity": "sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.2.tgz", + "integrity": "sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "4.1.2", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.2.tgz", + "integrity": "sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.2", + "@vitest/utils": "4.1.2", + "magic-string": "^0.30.21", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/spy": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.2.tgz", + "integrity": "sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.2.tgz", + "integrity": "sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "4.1.2", + "convert-source-map": "^2.0.0", + "tinyrainbow": "^3.1.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/accessor-fn": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/accessor-fn/-/accessor-fn-1.5.3.tgz", + "integrity": "sha512-rkAofCwe/FvYFUlMB0v0gWmhqtfAtV1IUkdPbfhTUyYniu5LrC0A0UJkTH0Jv3S8SvwkmfuAlY+mQIJATdocMA==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/ast-v8-to-istanbul": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-1.0.0.tgz", + "integrity": "sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^10.0.0" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-10.0.0.tgz", + "integrity": "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-plugin-jsx-dom-expressions": { + "version": "0.40.6", + "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.40.6.tgz", + "integrity": "sha512-v3P1MW46Lm7VMpAkq0QfyzLWWkC8fh+0aE5Km4msIgDx5kjenHU0pF2s+4/NH8CQn/kla6+Hvws+2AF7bfV5qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "7.18.6", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.20.7", + "html-entities": "2.3.3", + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.20.12" + } + }, + "node_modules/babel-plugin-jsx-dom-expressions/node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/babel-preset-solid": { + "version": "1.9.12", + "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.9.12.tgz", + "integrity": "sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jsx-dom-expressions": "^0.40.6" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "solid-js": "^1.9.12" + }, + "peerDependenciesMeta": { + "solid-js": { + "optional": true + } } }, "node_modules/baseline-browser-mapping": { @@ -1711,6 +2315,16 @@ "url": "https://github.com/Pomax/bezierjs/blob/master/FUNDING.md" } }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, "node_modules/browserslist": { "version": "4.28.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", @@ -1778,6 +2392,16 @@ "node": ">=12" } }, + "node_modules/chai": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz", + "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/codemirror": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz", @@ -1806,6 +2430,27 @@ "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", "license": "MIT" }, + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css.escape": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true, + "license": "MIT" + }, "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", @@ -2028,6 +2673,20 @@ "node": ">=12" } }, + "node_modules/data-urls": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", + "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -2046,6 +2705,30 @@ } } }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "dev": true, + "license": "MIT" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT" + }, "node_modules/electron-to-chromium": { "version": "1.5.331", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.331.tgz", @@ -2066,6 +2749,13 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "dev": true, + "license": "MIT" + }, "node_modules/esbuild": { "version": "0.25.12", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", @@ -2118,6 +2808,26 @@ "node": ">=6" } }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/expect-type": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/fdir": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", @@ -2201,6 +2911,70 @@ "node": ">=6.9.0" } }, + "node_modules/happy-dom": { + "version": "20.8.9", + "resolved": "https://registry.npmjs.org/happy-dom/-/happy-dom-20.8.9.tgz", + "integrity": "sha512-Tz23LR9T9jOGVZm2x1EPdXqwA37G/owYMxRwU0E4miurAtFsPMQ1d2Jc2okUaSjZqAFz2oEn3FLXC5a0a+siyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": ">=20.0.0", + "@types/whatwg-mimetype": "^3.0.2", + "@types/ws": "^8.18.1", + "entities": "^7.0.1", + "whatwg-mimetype": "^3.0.0", + "ws": "^8.18.3" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/happy-dom/node_modules/entities": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", + "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/happy-dom/node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", + "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@exodus/bytes": "^1.6.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, "node_modules/html-entities": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", @@ -2208,6 +2982,23 @@ "dev": true, "license": "MIT" }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/index-array-by": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/index-array-by/-/index-array-by-1.4.2.tgz", @@ -2226,6 +3017,13 @@ "node": ">=12" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, "node_modules/is-what": { "version": "4.1.16", "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", @@ -2239,28 +3037,131 @@ "url": "https://github.com/sponsors/mesqueeb" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/json5": { - "version": "2.2.3", + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "29.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-29.0.1.tgz", + "integrity": "sha512-z6JOK5gRO7aMybVq/y/MlIpKh8JIi68FBKMUtKkK2KH/wMSRlCxQ682d08LB9fYXplyY/UXG8P4XXTScmdjApg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^5.0.1", + "@asamuzakjp/dom-selector": "^7.0.3", + "@bramus/specificity": "^2.4.2", + "@csstools/css-syntax-patches-for-csstree": "^1.1.1", + "@exodus/bytes": "^1.15.0", + "css-tree": "^3.2.1", + "data-urls": "^7.0.0", + "decimal.js": "^10.6.0", + "html-encoding-sniffer": "^6.0.0", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.2.7", + "parse5": "^8.0.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^6.0.1", + "undici": "^7.24.5", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^8.0.1", + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.1", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24.0.0" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/lru-cache": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.0.tgz", + "integrity": "sha512-sr8xPKE25m6vJVcrdn6NxtC0fVfuPowbscLypegRgOm0yXSqr5JNHCAY3hnusdJ7HRBW04j6Ip4khvHU778DuQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz", + "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, @@ -2300,6 +3201,74 @@ "yallist": "^3.0.2" } }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.5.2.tgz", + "integrity": "sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "source-map-js": "^1.2.1" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/merge-anything": { "version": "5.1.7", "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-5.1.7.tgz", @@ -2316,6 +3285,16 @@ "url": "https://github.com/sponsors/mesqueeb" } }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -2349,6 +3328,17 @@ "dev": true, "license": "MIT" }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, "node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", @@ -2362,6 +3352,13 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -2421,6 +3418,62 @@ "url": "https://opencollective.com/preact" } }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/rollup": { "version": "4.60.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", @@ -2466,6 +3519,19 @@ "fsevents": "~2.3.2" } }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -2497,6 +3563,13 @@ "seroval": "^1.0" } }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, "node_modules/solid-js": { "version": "1.9.12", "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.9.12.tgz", @@ -2533,18 +3606,82 @@ "node": ">=0.10.0" } }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/std-env": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.0.0.tgz", + "integrity": "sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/style-mod": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz", "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==", "license": "MIT" }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, "node_modules/tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", "license": "MIT" }, + "node_modules/tinyexec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/tinyglobby": { "version": "0.2.15", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", @@ -2562,6 +3699,62 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tinyrainbow": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", + "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tldts": { + "version": "7.0.28", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.28.tgz", + "integrity": "sha512-+Zg3vWhRUv8B1maGSTFdev9mjoo8Etn2Ayfs4cnjlD3CsGkxXX4QyW3j2WJ0wdjYcYmy7Lx2RDsZMhgCWafKIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.28" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.0.28", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.28.tgz", + "integrity": "sha512-7W5Efjhsc3chVdFhqtaU0KtK32J37Zcr9RKtID54nG+tIpcY79CQK/veYPODxtD/LJ4Lue66jvrQzIX2Z2/pUQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/tough-cookie": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz", + "integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", @@ -2576,6 +3769,16 @@ "node": ">=14.17" } }, + "node_modules/undici": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.24.7.tgz", + "integrity": "sha512-H/nlJ/h0ggGC+uRL3ovD+G0i4bqhvsDOpbDv7At5eFLlj2b41L8QliGbnl2H7SnDiYhENphh1tQFJZf+MyfLsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", @@ -2734,12 +3937,198 @@ } } }, + "node_modules/vitest": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.2.tgz", + "integrity": "sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/expect": "4.1.2", + "@vitest/mocker": "4.1.2", + "@vitest/pretty-format": "4.1.2", + "@vitest/runner": "4.1.2", + "@vitest/snapshot": "4.1.2", + "@vitest/spy": "4.1.2", + "@vitest/utils": "4.1.2", + "es-module-lexer": "^2.0.0", + "expect-type": "^1.3.0", + "magic-string": "^0.30.21", + "obug": "^2.1.1", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^4.0.0-rc.1", + "tinybench": "^2.9.0", + "tinyexec": "^1.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.1.0", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@opentelemetry/api": "^1.9.0", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.1.2", + "@vitest/browser-preview": "4.1.2", + "@vitest/browser-webdriverio": "4.1.2", + "@vitest/ui": "4.1.2", + "happy-dom": "*", + "jsdom": "*", + "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + }, + "vite": { + "optional": false + } + } + }, "node_modules/w3c-keyname": { "version": "2.2.8", "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", "license": "MIT" }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/webidl-conversions": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", + "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=20" + } + }, + "node_modules/whatwg-mimetype": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", + "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/whatwg-url": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.1.tgz", + "integrity": "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@exodus/bytes": "^1.11.0", + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ws": { + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", + "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", diff --git a/sensibledb-explorer/src/frontend/package.json b/sensibledb-explorer/src/frontend/package.json index 0cd8c767..3bca2687 100644 --- a/sensibledb-explorer/src/frontend/package.json +++ b/sensibledb-explorer/src/frontend/package.json @@ -7,25 +7,36 @@ "dev": "vite", "build": "tsc && vite build", "preview": "vite preview", - "tauri": "tauri" + "tauri": "tauri", + "test": "vitest", + "test:ui": "vitest --ui", + "test:run": "vitest run", + "test:coverage": "vitest run --coverage" }, "dependencies": { - "@tauri-apps/api": "^2", - "@tauri-apps/plugin-store": "^2", - "solid-js": "^1.9", - "force-graph": "^1.47", - "codemirror": "^6.0", "@codemirror/lang-javascript": "^6.2", "@codemirror/language": "^6.10", "@codemirror/state": "^6.4", "@codemirror/view": "^6.28", - "@lezer/highlight": "^1.2" + "@lezer/highlight": "^1.2", + "@tauri-apps/api": "^2", + "@tauri-apps/plugin-store": "^2", + "codemirror": "^6.0", + "force-graph": "^1.47", + "solid-js": "^1.9" }, "devDependencies": { + "@solidjs/testing-library": "^0.8.10", "@tauri-apps/cli": "^2", + "@testing-library/jest-dom": "^6.9.1", + "@testing-library/user-event": "^14.6.1", + "@types/node": "^22", + "@vitest/coverage-v8": "^4.1.2", + "happy-dom": "^20.8.9", + "jsdom": "^29.0.1", + "typescript": "^5.6", "vite": "^6", "vite-plugin-solid": "^2.10", - "typescript": "^5.6", - "@types/node": "^22" + "vitest": "^4.1.2" } } diff --git a/sensibledb-explorer/src/frontend/src/App.tsx b/sensibledb-explorer/src/frontend/src/App.tsx index f3743213..ab3b0b9b 100644 --- a/sensibledb-explorer/src/frontend/src/App.tsx +++ b/sensibledb-explorer/src/frontend/src/App.tsx @@ -9,6 +9,7 @@ import SensibleQLEditor from "./components/editor/SensibleQLEditor"; import HomeView from "./components/home/HomeView"; import ChatView from "./components/chat/ChatView"; import ReportView from "./components/report/ReportView"; +import ModelSettings from "./components/settings/ModelSettings"; import GuidedTour, { isTourCompleted } from "./components/onboarding/GuidedTour"; import { activeView, setActiveView, activeDb, nodes, edges, setDatabases, setActiveDb, setNodes, setEdges, setSchema, selectedNode, setSelectedNode } from "./stores/app"; import { logError, dbList as apiDbList, nodeList, edgeList, schemaGet } from "./lib/api"; @@ -62,6 +63,8 @@ const App: Component = () => { else if (e.key === "6") setActiveView("edges"); else if (e.key === "7") setActiveView("schema"); else if (e.key === "8") setActiveView("sensibleql"); + else if (e.key === "9") setActiveView("models"); + else if (e.key === "9") setActiveView("models"); else if (e.key === "Escape") { if (selectedNode()) setSelectedNode(null); else setActiveView("home"); @@ -138,6 +141,12 @@ const App: Component = () => { + + + + + +