From 0740fea11bf70a197ba0b59fecb178b044083c29 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sat, 26 Sep 2026 20:55:08 +0200 Subject: [PATCH] =?UTF-8?q?chore(release):=201.5.1,=20d=C3=A9pendances=20r?= =?UTF-8?q?untime=20et=20toolchain=20=C3=A0=20jour?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Release de maintenance : embarque zod 4.4.3→4.6.5 et yaml 2.9.0→2.9.1 (dépendances runtime accumulées sur main depuis le 3 septembre), et la toolchain rafraîchie (vitest 5 + coverage v8, docker build actions v7/v4, mermaid 12 côté site). Aucun changement fonctionnel ; vérifiée contre Home Assistant 2026.9.3. Premier passage du pipeline Release sous docker/build-push-action v7. Co-Authored-By: Claude Fable 5 --- mcp_ha/CHANGELOG.md | 5 + mcp_ha/config.yaml | 2 +- mcp_ha/coverage/base.css | 386 +- mcp_ha/coverage/block-navigation.js | 133 +- mcp_ha/coverage/clover.xml | 3089 +++++++++++++---- mcp_ha/coverage/coverage-final.json | 60 +- mcp_ha/coverage/index.html | 115 +- mcp_ha/coverage/prettify.css | 102 +- mcp_ha/coverage/prettify.js | 937 ++++- mcp_ha/coverage/sorter.js | 379 +- mcp_ha/coverage/src/config.ts.html | 160 +- mcp_ha/coverage/src/confirm.ts.html | 310 ++ mcp_ha/coverage/src/db/index.html | 131 + mcp_ha/coverage/src/db/schema.ts.html | 187 + mcp_ha/coverage/src/db/store.ts.html | 1138 ++++++ mcp_ha/coverage/src/ha/catalog.ts.html | 475 ++- mcp_ha/coverage/src/ha/http.ts.html | 221 +- mcp_ha/coverage/src/ha/index.html | 84 +- mcp_ha/coverage/src/ha/schemas.ts.html | 119 +- mcp_ha/coverage/src/ha/ws.ts.html | 355 +- mcp_ha/coverage/src/index.html | 126 +- mcp_ha/coverage/src/index.ts.html | 886 ++++- mcp_ha/coverage/src/ingress.ts.html | 2125 ++++++++++++ mcp_ha/coverage/src/logger.ts.html | 248 +- mcp_ha/coverage/src/mcp/helpers.ts.html | 200 +- mcp_ha/coverage/src/mcp/index.html | 110 +- mcp_ha/coverage/src/mcp/prompts.ts.html | 745 ++++ mcp_ha/coverage/src/mcp/registry.ts.html | 718 ++++ mcp_ha/coverage/src/mcp/resources.ts.html | 838 +++++ mcp_ha/coverage/src/mcp/server.ts.html | 258 +- mcp_ha/coverage/src/mcp/tools/addons.ts.html | 8 +- .../coverage/src/mcp/tools/announce.ts.html | 382 ++ .../src/mcp/tools/automations.ts.html | 736 +++- .../coverage/src/mcp/tools/blueprints.ts.html | 259 ++ .../coverage/src/mcp/tools/calendar.ts.html | 493 +++ mcp_ha/coverage/src/mcp/tools/camera.ts.html | 247 ++ .../src/mcp/tools/configwrite.ts.html | 2608 ++++++++++++++ .../coverage/src/mcp/tools/dashboards.ts.html | 262 ++ mcp_ha/coverage/src/mcp/tools/energy.ts.html | 499 +++ .../coverage/src/mcp/tools/entities.ts.html | 232 +- mcp_ha/coverage/src/mcp/tools/explain.ts.html | 613 ++++ mcp_ha/coverage/src/mcp/tools/health.ts.html | 418 +++ mcp_ha/coverage/src/mcp/tools/helpers.ts.html | 388 +++ mcp_ha/coverage/src/mcp/tools/history.ts.html | 232 +- mcp_ha/coverage/src/mcp/tools/index.html | 336 +- mcp_ha/coverage/src/mcp/tools/notify.ts.html | 382 ++ .../coverage/src/mcp/tools/presence.ts.html | 283 ++ mcp_ha/coverage/src/mcp/tools/scenes.ts.html | 328 ++ .../coverage/src/mcp/tools/selftest.ts.html | 337 ++ .../coverage/src/mcp/tools/services.ts.html | 182 +- mcp_ha/coverage/src/mcp/tools/system.ts.html | 465 ++- mcp_ha/coverage/src/mcp/tools/weather.ts.html | 319 ++ mcp_ha/coverage/src/mcp/tools/writes.ts.html | 409 +++ mcp_ha/coverage/src/mcp/writeflow.ts.html | 463 +++ mcp_ha/coverage/src/rate.ts.html | 181 + mcp_ha/coverage/src/ratelimit.ts.html | 30 +- mcp_ha/coverage/src/safety.ts.html | 145 +- mcp_ha/coverage/src/usage.ts.html | 226 ++ mcp_ha/package.json | 2 +- mcp_ha/src/config.ts | 2 +- 60 files changed, 24008 insertions(+), 2101 deletions(-) create mode 100644 mcp_ha/coverage/src/confirm.ts.html create mode 100644 mcp_ha/coverage/src/db/index.html create mode 100644 mcp_ha/coverage/src/db/schema.ts.html create mode 100644 mcp_ha/coverage/src/db/store.ts.html create mode 100644 mcp_ha/coverage/src/ingress.ts.html create mode 100644 mcp_ha/coverage/src/mcp/prompts.ts.html create mode 100644 mcp_ha/coverage/src/mcp/registry.ts.html create mode 100644 mcp_ha/coverage/src/mcp/resources.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/announce.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/blueprints.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/calendar.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/camera.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/configwrite.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/dashboards.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/energy.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/explain.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/health.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/helpers.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/notify.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/presence.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/scenes.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/selftest.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/weather.ts.html create mode 100644 mcp_ha/coverage/src/mcp/tools/writes.ts.html create mode 100644 mcp_ha/coverage/src/mcp/writeflow.ts.html create mode 100644 mcp_ha/coverage/src/rate.ts.html create mode 100644 mcp_ha/coverage/src/usage.ts.html diff --git a/mcp_ha/CHANGELOG.md b/mcp_ha/CHANGELOG.md index 0bb16a7..7f8cade 100644 --- a/mcp_ha/CHANGELOG.md +++ b/mcp_ha/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 1.5.1 - 2026-09-26 + +Maintenance release: ships the runtime dependency updates accumulated on main (zod 4.4.3 to 4.6.5, yaml 2.9.0 to 2.9.1) and the refreshed toolchain (vitest 5 with its v8 coverage provider, docker build actions v7/v4, mermaid 12 on the docs site). No functional change; verified against Home Assistant 2026.9.3. + + ## 1.5.0 - 2026-09-03 Home Assistant 2026.9 batch, part three (#194). diff --git a/mcp_ha/config.yaml b/mcp_ha/config.yaml index c0249f4..0b7f19e 100644 --- a/mcp_ha/config.yaml +++ b/mcp_ha/config.yaml @@ -1,5 +1,5 @@ name: MCP Home Assistant -version: "1.5.0" +version: "1.5.1" slug: mcp_ha description: >- MCP (Model Context Protocol) server to query and control Home Assistant diff --git a/mcp_ha/coverage/base.css b/mcp_ha/coverage/base.css index f418035..3fc428e 100644 --- a/mcp_ha/coverage/base.css +++ b/mcp_ha/coverage/base.css @@ -1,71 +1,129 @@ -body, html { - margin:0; padding: 0; +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; } + 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; } + 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; + 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; } -.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); + color: rgba(0, 0, 0, 0.5); +} +.quiet a { + opacity: 0.7; } -.quiet a { opacity: 0.7; } .fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; + font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 10px; color: #555; - background: #E8E8E8; + background: #e8e8e8; padding: 4px 5px; border-radius: 3px; vertical-align: middle; } -div.path a:link, div.path a:visited { color: #333; } +div.path a:link, +div.path a:visited { + color: #333; +} table.coverage { border-collapse: collapse; margin: 10px 0 0 0; @@ -78,140 +136,219 @@ table.coverage td { vertical-align: top; } table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; + text-align: right; + padding: 0 5px 0 20px; } table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; + text-align: right; + padding-right: 10px; + min-width: 20px; } table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; + 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; + 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; + 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; +.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 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.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 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; + 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; + background-position: 0 -20px; } .coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; + background-position: 0 -10px; +} +.status-line { + height: 10px; } -.status-line { height: 10px; } /* yellow */ -.cbranch-no { background: yellow !important; color: #111; } +.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 } +.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; +.highlighted .cstat-no, +.highlighted .fstat-no, +.highlighted .cbranch-no { + background: #c21f39 !important; } /* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } +.cstat-no, +.fstat-no, +.cbranch-no, +.cbranch-no { + background: #f6c6ce; +} /* light red */ -.low, .cline-no { background:#FCE1E5 } +.low, +.cline-no { + background: #fce1e5; +} /* light green */ -.high, .cline-yes { background:rgb(230,245,208) } +.high, +.cline-yes { + background: rgb(230, 245, 208); +} /* medium green */ -.cstat-yes { background:rgb(161,215,106) } +.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) } +.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; } +.status-line.medium, +.medium .cover-fill { + background: #f9cd0b; +} +.medium .chart { + border: 1px solid #f9cd0b; +} /* light yellow */ -.medium { background: #fff4c2; } +.medium { + background: #fff4c2; +} -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } +.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; } +span.cline-neutral { + background: #eaeaea; +} .coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; + opacity: 0.5; + padding-top: 4px; + padding-bottom: 4px; + line-height: 1; + color: #888; } -.cover-fill, .cover-empty { - display:inline-block; +.cover-fill, +.cover-empty { + display: inline-block; height: 12px; } .chart { line-height: 0; } .cover-empty { - background: white; + background: white; } .cover-full { - border-right: none !important; + border-right: none !important; } pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; + border: none !important; + padding: 0 !important; + margin: 0 !important; +} +.com { + color: #999 !important; +} +.ignore-none { + color: #999; + font-weight: normal; } -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } .wrapper { min-height: 100%; @@ -219,6 +356,7 @@ pre.prettyprint { height: 100%; margin: 0 auto -48px; } -.footer, .push { +.footer, +.push { height: 48px; } diff --git a/mcp_ha/coverage/block-navigation.js b/mcp_ha/coverage/block-navigation.js index 530d1ed..831a520 100644 --- a/mcp_ha/coverage/block-navigation.js +++ b/mcp_ha/coverage/block-navigation.js @@ -1,87 +1,82 @@ /* 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']; + // 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']; + // 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) > ` + // 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` + // 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); + // The NodeList of matching elements + var missingCoverageElements = document.querySelectorAll(selector); - var currentIndex; + 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 toggleClass(index) { + missingCoverageElements.item(currentIndex).classList.remove("highlighted"); + missingCoverageElements.item(index).classList.add("highlighted"); + } - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } + function makeCurrent(index) { + toggleClass(index); + currentIndex = index; + missingCoverageElements.item(index).scrollIntoView({ + behavior: "smooth", + block: "center", + inline: "center", + }); + } - makeCurrent(nextIndex); + function goToPrevious() { + var nextIndex = 0; + if (typeof currentIndex !== "number" || currentIndex === 0) { + nextIndex = missingCoverageElements.length - 1; + } else if (missingCoverageElements.length > 1) { + nextIndex = currentIndex - 1; } - function goToNext() { - var nextIndex = 0; + makeCurrent(nextIndex); + } - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } + function goToNext() { + var nextIndex = 0; - makeCurrent(nextIndex); + if (typeof currentIndex === "number" && currentIndex < missingCoverageElements.length - 1) { + nextIndex = currentIndex + 1; } - 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; - } + makeCurrent(nextIndex); + } - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; + 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); +window.addEventListener("keydown", jumpToCode); diff --git a/mcp_ha/coverage/clover.xml b/mcp_ha/coverage/clover.xml index 0ddce92..5f2accf 100644 --- a/mcp_ha/coverage/clover.xml +++ b/mcp_ha/coverage/clover.xml @@ -1,206 +1,552 @@ - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -209,27 +555,27 @@ - - - - + + + + - - - - - - + + + + + + - - - - + + + + @@ -238,143 +584,372 @@ - - - - - + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - + @@ -382,220 +957,494 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + @@ -610,223 +1459,1045 @@ + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mcp_ha/coverage/coverage-final.json b/mcp_ha/coverage/coverage-final.json index 9d4ac79..7b013f9 100644 --- a/mcp_ha/coverage/coverage-final.json +++ b/mcp_ha/coverage/coverage-final.json @@ -1,18 +1,44 @@ -{"/home/thomas/Perso/mcp-ha/mcp_ha/src/config.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/config.ts","statementMap":{"0":{"start":{"line":7,"column":23},"end":{"line":7,"column":null}},"1":{"start":{"line":9,"column":21},"end":{"line":9,"column":null}},"2":{"start":{"line":10,"column":19},"end":{"line":10,"column":null}},"3":{"start":{"line":12,"column":32},"end":{"line":12,"column":null}},"4":{"start":{"line":36,"column":22},"end":{"line":46,"column":null}},"5":{"start":{"line":51,"column":21},"end":{"line":51,"column":null}},"6":{"start":{"line":52,"column":2},"end":{"line":58,"column":null}},"7":{"start":{"line":53,"column":4},"end":{"line":57,"column":null}},"8":{"start":{"line":54,"column":6},"end":{"line":54,"column":null}},"9":{"start":{"line":56,"column":6},"end":{"line":56,"column":null}},"10":{"start":{"line":59,"column":2},"end":{"line":59,"column":null}},"11":{"start":{"line":59,"column":69},"end":{"line":59,"column":null}},"12":{"start":{"line":60,"column":17},"end":{"line":60,"column":null}},"13":{"start":{"line":61,"column":2},"end":{"line":61,"column":null}},"14":{"start":{"line":61,"column":22},"end":{"line":61,"column":null}},"15":{"start":{"line":62,"column":2},"end":{"line":66,"column":null}},"16":{"start":{"line":64,"column":18},"end":{"line":64,"column":53}},"17":{"start":{"line":67,"column":2},"end":{"line":67,"column":null}},"18":{"start":{"line":71,"column":12},"end":{"line":71,"column":null}},"19":{"start":{"line":72,"column":2},"end":{"line":75,"column":null}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":null}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":null}},"22":{"start":{"line":76,"column":2},"end":{"line":76,"column":null}},"23":{"start":{"line":80,"column":15},"end":{"line":80,"column":null}},"24":{"start":{"line":82,"column":16},"end":{"line":82,"column":null}},"25":{"start":{"line":83,"column":2},"end":{"line":83,"column":null}},"26":{"start":{"line":85,"column":6},"end":{"line":85,"column":null}},"27":{"start":{"line":86,"column":26},"end":{"line":86,"column":null}},"28":{"start":{"line":87,"column":2},"end":{"line":97,"column":null}},"29":{"start":{"line":88,"column":4},"end":{"line":88,"column":null}},"30":{"start":{"line":89,"column":4},"end":{"line":89,"column":null}},"31":{"start":{"line":90,"column":9},"end":{"line":97,"column":null}},"32":{"start":{"line":93,"column":4},"end":{"line":96,"column":null}},"33":{"start":{"line":99,"column":2},"end":{"line":111,"column":null}},"34":{"start":{"line":105,"column":57},"end":{"line":105,"column":76}},"35":{"start":{"line":106,"column":55},"end":{"line":106,"column":74}},"36":{"start":{"line":107,"column":57},"end":{"line":107,"column":76}},"37":{"start":{"line":124,"column":2},"end":{"line":136,"column":null}},"38":{"start":{"line":125,"column":4},"end":{"line":133,"column":null}},"39":{"start":{"line":126,"column":16},"end":{"line":126,"column":null}},"40":{"start":{"line":127,"column":6},"end":{"line":132,"column":null}},"41":{"start":{"line":128,"column":8},"end":{"line":130,"column":null}},"42":{"start":{"line":131,"column":8},"end":{"line":131,"column":null}},"43":{"start":{"line":137,"column":12},"end":{"line":137,"column":null}},"44":{"start":{"line":138,"column":2},"end":{"line":150,"column":null}},"45":{"start":{"line":141,"column":4},"end":{"line":141,"column":null}},"46":{"start":{"line":142,"column":4},"end":{"line":142,"column":null}},"47":{"start":{"line":143,"column":4},"end":{"line":145,"column":null}},"48":{"start":{"line":147,"column":4},"end":{"line":149,"column":null}},"49":{"start":{"line":151,"column":2},"end":{"line":151,"column":null}}},"fnMap":{"0":{"name":"readOptions","decl":{"start":{"line":50,"column":9},"end":{"line":50,"column":32}},"loc":{"start":{"line":50,"column":32},"end":{"line":68,"column":null}},"line":50},"1":{"name":"(anonymous_1)","decl":{"start":{"line":64,"column":7},"end":{"line":64,"column":12}},"loc":{"start":{"line":64,"column":18},"end":{"line":64,"column":53}},"line":64},"2":{"name":"parsePort","decl":{"start":{"line":70,"column":9},"end":{"line":70,"column":19}},"loc":{"start":{"line":70,"column":50},"end":{"line":77,"column":null}},"line":70},"3":{"name":"loadConfig","decl":{"start":{"line":79,"column":16},"end":{"line":79,"column":42}},"loc":{"start":{"line":79,"column":42},"end":{"line":112,"column":null}},"line":79},"4":{"name":"(anonymous_4)","decl":{"start":{"line":105,"column":43},"end":{"line":105,"column":51}},"loc":{"start":{"line":105,"column":57},"end":{"line":105,"column":76}},"line":105},"5":{"name":"(anonymous_5)","decl":{"start":{"line":106,"column":41},"end":{"line":106,"column":49}},"loc":{"start":{"line":106,"column":55},"end":{"line":106,"column":74}},"line":106},"6":{"name":"(anonymous_6)","decl":{"start":{"line":107,"column":43},"end":{"line":107,"column":51}},"loc":{"start":{"line":107,"column":57},"end":{"line":107,"column":76}},"line":107},"7":{"name":"bootstrapToken","decl":{"start":{"line":123,"column":9},"end":{"line":123,"column":34}},"loc":{"start":{"line":123,"column":34},"end":{"line":152,"column":null}},"line":123}},"branchMap":{"0":{"loc":{"start":{"line":52,"column":2},"end":{"line":58,"column":null}},"type":"if","locations":[{"start":{"line":52,"column":2},"end":{"line":58,"column":null}},{"start":{},"end":{}}],"line":52},"1":{"loc":{"start":{"line":59,"column":2},"end":{"line":59,"column":null}},"type":"if","locations":[{"start":{"line":59,"column":2},"end":{"line":59,"column":null}},{"start":{},"end":{}}],"line":59},"2":{"loc":{"start":{"line":59,"column":6},"end":{"line":59,"column":69}},"type":"binary-expr","locations":[{"start":{"line":59,"column":6},"end":{"line":59,"column":33}},{"start":{"line":59,"column":33},"end":{"line":59,"column":49}},{"start":{"line":59,"column":49},"end":{"line":59,"column":69}}],"line":59},"3":{"loc":{"start":{"line":61,"column":2},"end":{"line":61,"column":null}},"type":"if","locations":[{"start":{"line":61,"column":2},"end":{"line":61,"column":null}},{"start":{},"end":{}}],"line":61},"4":{"loc":{"start":{"line":71,"column":19},"end":{"line":71,"column":28}},"type":"binary-expr","locations":[{"start":{"line":71,"column":19},"end":{"line":71,"column":24}},{"start":{"line":71,"column":24},"end":{"line":71,"column":28}}],"line":71},"5":{"loc":{"start":{"line":72,"column":2},"end":{"line":75,"column":null}},"type":"if","locations":[{"start":{"line":72,"column":2},"end":{"line":75,"column":null}},{"start":{},"end":{}}],"line":72},"6":{"loc":{"start":{"line":72,"column":6},"end":{"line":72,"column":50}},"type":"binary-expr","locations":[{"start":{"line":72,"column":6},"end":{"line":72,"column":30}},{"start":{"line":72,"column":30},"end":{"line":72,"column":39}},{"start":{"line":72,"column":39},"end":{"line":72,"column":50}}],"line":72},"7":{"loc":{"start":{"line":82,"column":35},"end":{"line":82,"column":74}},"type":"binary-expr","locations":[{"start":{"line":82,"column":35},"end":{"line":82,"column":60}},{"start":{"line":82,"column":60},"end":{"line":82,"column":74}}],"line":82},"8":{"loc":{"start":{"line":85,"column":18},"end":{"line":85,"column":67}},"type":"binary-expr","locations":[{"start":{"line":85,"column":18},"end":{"line":85,"column":36}},{"start":{"line":85,"column":36},"end":{"line":85,"column":65}},{"start":{"line":85,"column":65},"end":{"line":85,"column":67}}],"line":85},"9":{"loc":{"start":{"line":87,"column":2},"end":{"line":97,"column":null}},"type":"if","locations":[{"start":{"line":87,"column":2},"end":{"line":97,"column":null}},{"start":{"line":90,"column":9},"end":{"line":97,"column":null}}],"line":87},"10":{"loc":{"start":{"line":90,"column":9},"end":{"line":97,"column":null}},"type":"if","locations":[{"start":{"line":90,"column":9},"end":{"line":97,"column":null}},{"start":{},"end":{}}],"line":90},"11":{"loc":{"start":{"line":103,"column":16},"end":{"line":103,"column":null}},"type":"binary-expr","locations":[{"start":{"line":103,"column":16},"end":{"line":103,"column":36}},{"start":{"line":103,"column":36},"end":{"line":103,"column":null}}],"line":103},"12":{"loc":{"start":{"line":108,"column":21},"end":{"line":108,"column":null}},"type":"binary-expr","locations":[{"start":{"line":108,"column":21},"end":{"line":108,"column":53}},{"start":{"line":108,"column":53},"end":{"line":108,"column":null}}],"line":108},"13":{"loc":{"start":{"line":109,"column":14},"end":{"line":109,"column":null}},"type":"binary-expr","locations":[{"start":{"line":109,"column":14},"end":{"line":109,"column":36}},{"start":{"line":109,"column":36},"end":{"line":109,"column":null}}],"line":109},"14":{"loc":{"start":{"line":110,"column":16},"end":{"line":110,"column":null}},"type":"binary-expr","locations":[{"start":{"line":110,"column":16},"end":{"line":110,"column":40}},{"start":{"line":110,"column":40},"end":{"line":110,"column":null}}],"line":110},"15":{"loc":{"start":{"line":125,"column":4},"end":{"line":133,"column":null}},"type":"if","locations":[{"start":{"line":125,"column":4},"end":{"line":133,"column":null}},{"start":{},"end":{}}],"line":125},"16":{"loc":{"start":{"line":127,"column":6},"end":{"line":132,"column":null}},"type":"if","locations":[{"start":{"line":127,"column":6},"end":{"line":132,"column":null}},{"start":{},"end":{}}],"line":127}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":11,"6":11,"7":4,"8":4,"9":0,"10":11,"11":1,"12":11,"13":11,"14":10,"15":1,"16":3,"17":1,"18":11,"19":11,"20":2,"21":2,"22":9,"23":11,"24":11,"25":11,"26":11,"27":11,"28":11,"29":3,"30":3,"31":8,"32":1,"33":11,"34":1,"35":1,"36":1,"37":3,"38":3,"39":1,"40":1,"41":1,"42":1,"43":2,"44":2,"45":2,"46":2,"47":2,"48":0,"49":2},"f":{"0":11,"1":3,"2":11,"3":11,"4":1,"5":1,"6":1,"7":3},"b":{"0":[4,7],"1":[1,10],"2":[11,11,10],"3":[10,1],"4":[11,8],"5":[2,9],"6":[11,10,10],"7":[11,10],"8":[11,9,3],"9":[3,8],"10":[1,7],"11":[11,10],"12":[11,10],"13":[11,11],"14":[11,11],"15":[1,2],"16":[1,0]},"meta":{"lastBranch":17,"lastFunction":8,"lastStatement":50,"seen":{"s:7:23:7:Infinity":0,"s:9:21:9:Infinity":1,"s:10:19:10:Infinity":2,"s:12:32:12:Infinity":3,"s:36:22:46:Infinity":4,"f:50:9:50:32":0,"s:51:21:51:Infinity":5,"b:52:2:58:Infinity:undefined:undefined:undefined:undefined":0,"s:52:2:58:Infinity":6,"s:53:4:57:Infinity":7,"s:54:6:54:Infinity":8,"s:56:6:56:Infinity":9,"b:59:2:59:Infinity:undefined:undefined:undefined:undefined":1,"s:59:2:59:Infinity":10,"b:59:6:59:33:59:33:59:49:59:49:59:69":2,"s:59:69:59:Infinity":11,"s:60:17:60:Infinity":12,"b:61:2:61:Infinity:undefined:undefined:undefined:undefined":3,"s:61:2:61:Infinity":13,"s:61:22:61:Infinity":14,"s:62:2:66:Infinity":15,"f:64:7:64:12":1,"s:64:18:64:53":16,"s:67:2:67:Infinity":17,"f:70:9:70:19":2,"s:71:12:71:Infinity":18,"b:71:19:71:24:71:24:71:28":4,"b:72:2:75:Infinity:undefined:undefined:undefined:undefined":5,"s:72:2:75:Infinity":19,"b:72:6:72:30:72:30:72:39:72:39:72:50":6,"s:73:4:73:Infinity":20,"s:74:4:74:Infinity":21,"s:76:2:76:Infinity":22,"f:79:16:79:42":3,"s:80:15:80:Infinity":23,"s:82:16:82:Infinity":24,"b:82:35:82:60:82:60:82:74":7,"s:83:2:83:Infinity":25,"s:85:6:85:Infinity":26,"b:85:18:85:36:85:36:85:65:85:65:85:67":8,"s:86:26:86:Infinity":27,"b:87:2:97:Infinity:90:9:97:Infinity":9,"s:87:2:97:Infinity":28,"s:88:4:88:Infinity":29,"s:89:4:89:Infinity":30,"b:90:9:97:Infinity:undefined:undefined:undefined:undefined":10,"s:90:9:97:Infinity":31,"s:93:4:96:Infinity":32,"s:99:2:111:Infinity":33,"b:103:16:103:36:103:36:103:Infinity":11,"f:105:43:105:51":4,"s:105:57:105:76":34,"f:106:41:106:49":5,"s:106:55:106:74":35,"f:107:43:107:51":6,"s:107:57:107:76":36,"b:108:21:108:53:108:53:108:Infinity":12,"b:109:14:109:36:109:36:109:Infinity":13,"b:110:16:110:40:110:40:110:Infinity":14,"f:123:9:123:34":7,"s:124:2:136:Infinity":37,"b:125:4:133:Infinity:undefined:undefined:undefined:undefined":15,"s:125:4:133:Infinity":38,"s:126:16:126:Infinity":39,"b:127:6:132:Infinity:undefined:undefined:undefined:undefined":16,"s:127:6:132:Infinity":40,"s:128:8:130:Infinity":41,"s:131:8:131:Infinity":42,"s:137:12:137:Infinity":43,"s:138:2:150:Infinity":44,"s:141:4:141:Infinity":45,"s:142:4:142:Infinity":46,"s:143:4:145:Infinity":47,"s:147:4:149:Infinity":48,"s:151:2:151:Infinity":49},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/index.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/index.ts","statementMap":{"0":{"start":{"line":13,"column":23},"end":{"line":13,"column":null}},"1":{"start":{"line":15,"column":29},"end":{"line":15,"column":null}},"2":{"start":{"line":16,"column":26},"end":{"line":16,"column":null}},"3":{"start":{"line":18,"column":32},"end":{"line":18,"column":null}},"4":{"start":{"line":23,"column":2},"end":{"line":44,"column":null}},"5":{"start":{"line":24,"column":29},"end":{"line":24,"column":null}},"6":{"start":{"line":25,"column":15},"end":{"line":25,"column":null}},"7":{"start":{"line":26,"column":4},"end":{"line":34,"column":null}},"8":{"start":{"line":27,"column":6},"end":{"line":27,"column":null}},"9":{"start":{"line":28,"column":6},"end":{"line":32,"column":null}},"10":{"start":{"line":29,"column":8},"end":{"line":29,"column":null}},"11":{"start":{"line":30,"column":8},"end":{"line":30,"column":null}},"12":{"start":{"line":31,"column":8},"end":{"line":31,"column":null}},"13":{"start":{"line":33,"column":6},"end":{"line":33,"column":null}},"14":{"start":{"line":35,"column":4},"end":{"line":42,"column":null}},"15":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"16":{"start":{"line":36,"column":31},"end":{"line":36,"column":null}},"17":{"start":{"line":37,"column":6},"end":{"line":41,"column":null}},"18":{"start":{"line":38,"column":8},"end":{"line":38,"column":null}},"19":{"start":{"line":40,"column":8},"end":{"line":40,"column":null}},"20":{"start":{"line":43,"column":4},"end":{"line":43,"column":null}},"21":{"start":{"line":48,"column":2},"end":{"line":48,"column":null}},"22":{"start":{"line":49,"column":2},"end":{"line":49,"column":null}},"23":{"start":{"line":53,"column":2},"end":{"line":53,"column":null}},"24":{"start":{"line":61,"column":22},"end":{"line":61,"column":null}},"25":{"start":{"line":62,"column":18},"end":{"line":62,"column":null}},"26":{"start":{"line":63,"column":2},"end":{"line":138,"column":null}},"27":{"start":{"line":64,"column":16},"end":{"line":64,"column":null}},"28":{"start":{"line":66,"column":4},"end":{"line":77,"column":null}},"29":{"start":{"line":70,"column":22},"end":{"line":70,"column":null}},"30":{"start":{"line":71,"column":23},"end":{"line":71,"column":null}},"31":{"start":{"line":72,"column":6},"end":{"line":75,"column":null}},"32":{"start":{"line":76,"column":6},"end":{"line":76,"column":null}},"33":{"start":{"line":79,"column":4},"end":{"line":82,"column":null}},"34":{"start":{"line":80,"column":6},"end":{"line":80,"column":null}},"35":{"start":{"line":81,"column":6},"end":{"line":81,"column":null}},"36":{"start":{"line":84,"column":4},"end":{"line":89,"column":null}},"37":{"start":{"line":85,"column":6},"end":{"line":87,"column":null}},"38":{"start":{"line":88,"column":6},"end":{"line":88,"column":null}},"39":{"start":{"line":91,"column":15},"end":{"line":91,"column":null}},"40":{"start":{"line":92,"column":20},"end":{"line":92,"column":null}},"41":{"start":{"line":93,"column":4},"end":{"line":98,"column":null}},"42":{"start":{"line":94,"column":6},"end":{"line":96,"column":null}},"43":{"start":{"line":97,"column":6},"end":{"line":97,"column":null}},"44":{"start":{"line":100,"column":17},"end":{"line":100,"column":null}},"45":{"start":{"line":101,"column":22},"end":{"line":101,"column":null}},"46":{"start":{"line":102,"column":4},"end":{"line":107,"column":null}},"47":{"start":{"line":103,"column":22},"end":{"line":103,"column":null}},"48":{"start":{"line":104,"column":6},"end":{"line":104,"column":null}},"49":{"start":{"line":105,"column":6},"end":{"line":105,"column":null}},"50":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"51":{"start":{"line":108,"column":4},"end":{"line":108,"column":null}},"52":{"start":{"line":110,"column":4},"end":{"line":137,"column":null}},"53":{"start":{"line":111,"column":19},"end":{"line":111,"column":null}},"54":{"start":{"line":112,"column":6},"end":{"line":112,"column":null}},"55":{"start":{"line":116,"column":21},"end":{"line":116,"column":null}},"56":{"start":{"line":117,"column":24},"end":{"line":119,"column":null}},"57":{"start":{"line":120,"column":6},"end":{"line":123,"column":null}},"58":{"start":{"line":121,"column":8},"end":{"line":121,"column":null}},"59":{"start":{"line":122,"column":8},"end":{"line":122,"column":null}},"60":{"start":{"line":124,"column":6},"end":{"line":124,"column":null}},"61":{"start":{"line":125,"column":6},"end":{"line":125,"column":null}},"62":{"start":{"line":127,"column":18},"end":{"line":127,"column":null}},"63":{"start":{"line":128,"column":6},"end":{"line":128,"column":null}},"64":{"start":{"line":129,"column":6},"end":{"line":136,"column":null}},"65":{"start":{"line":132,"column":8},"end":{"line":133,"column":null}},"66":{"start":{"line":132,"column":36},"end":{"line":132,"column":null}},"67":{"start":{"line":133,"column":13},"end":{"line":133,"column":null}},"68":{"start":{"line":135,"column":8},"end":{"line":135,"column":null}},"69":{"start":{"line":156,"column":2},"end":{"line":156,"column":null}},"70":{"start":{"line":156,"column":59},"end":{"line":156,"column":null}},"71":{"start":{"line":157,"column":2},"end":{"line":183,"column":null}},"72":{"start":{"line":157,"column":21},"end":{"line":157,"column":26}},"73":{"start":{"line":158,"column":4},"end":{"line":182,"column":null}},"74":{"start":{"line":159,"column":19},"end":{"line":159,"column":null}},"75":{"start":{"line":160,"column":22},"end":{"line":160,"column":null}},"76":{"start":{"line":161,"column":6},"end":{"line":164,"column":null}},"77":{"start":{"line":162,"column":8},"end":{"line":162,"column":null}},"78":{"start":{"line":163,"column":8},"end":{"line":163,"column":null}},"79":{"start":{"line":165,"column":6},"end":{"line":167,"column":null}},"80":{"start":{"line":168,"column":6},"end":{"line":168,"column":null}},"81":{"start":{"line":169,"column":6},"end":{"line":169,"column":null}},"82":{"start":{"line":171,"column":18},"end":{"line":171,"column":null}},"83":{"start":{"line":172,"column":20},"end":{"line":172,"column":null}},"84":{"start":{"line":173,"column":6},"end":{"line":179,"column":null}},"85":{"start":{"line":174,"column":8},"end":{"line":177,"column":null}},"86":{"start":{"line":178,"column":8},"end":{"line":178,"column":null}},"87":{"start":{"line":180,"column":6},"end":{"line":180,"column":null}},"88":{"start":{"line":181,"column":6},"end":{"line":181,"column":null}},"89":{"start":{"line":181,"column":31},"end":{"line":181,"column":51}},"90":{"start":{"line":187,"column":2},"end":{"line":198,"column":null}},"91":{"start":{"line":188,"column":18},"end":{"line":193,"column":null}},"92":{"start":{"line":191,"column":6},"end":{"line":191,"column":null}},"93":{"start":{"line":192,"column":6},"end":{"line":192,"column":null}},"94":{"start":{"line":194,"column":4},"end":{"line":197,"column":null}},"95":{"start":{"line":195,"column":6},"end":{"line":195,"column":null}},"96":{"start":{"line":196,"column":6},"end":{"line":196,"column":null}},"97":{"start":{"line":202,"column":14},"end":{"line":202,"column":25}},"98":{"start":{"line":204,"column":13},"end":{"line":204,"column":null}},"99":{"start":{"line":205,"column":18},"end":{"line":205,"column":null}},"100":{"start":{"line":207,"column":2},"end":{"line":207,"column":null}},"101":{"start":{"line":207,"column":21},"end":{"line":207,"column":41}},"102":{"start":{"line":208,"column":2},"end":{"line":208,"column":null}},"103":{"start":{"line":209,"column":15},"end":{"line":209,"column":null}},"104":{"start":{"line":210,"column":27},"end":{"line":210,"column":null}},"105":{"start":{"line":211,"column":2},"end":{"line":211,"column":null}},"106":{"start":{"line":213,"column":21},"end":{"line":213,"column":null}},"107":{"start":{"line":215,"column":2},"end":{"line":221,"column":null}},"108":{"start":{"line":216,"column":4},"end":{"line":216,"column":null}},"109":{"start":{"line":217,"column":4},"end":{"line":217,"column":null}},"110":{"start":{"line":218,"column":4},"end":{"line":218,"column":null}},"111":{"start":{"line":219,"column":4},"end":{"line":219,"column":null}},"112":{"start":{"line":220,"column":4},"end":{"line":220,"column":null}},"113":{"start":{"line":220,"column":25},"end":{"line":220,"column":null}},"114":{"start":{"line":223,"column":17},"end":{"line":223,"column":null}},"115":{"start":{"line":224,"column":8},"end":{"line":232,"column":null}},"116":{"start":{"line":225,"column":4},"end":{"line":225,"column":null}},"117":{"start":{"line":225,"column":18},"end":{"line":225,"column":null}},"118":{"start":{"line":226,"column":4},"end":{"line":226,"column":null}},"119":{"start":{"line":227,"column":4},"end":{"line":227,"column":null}},"120":{"start":{"line":228,"column":4},"end":{"line":231,"column":null}},"121":{"start":{"line":229,"column":6},"end":{"line":229,"column":null}},"122":{"start":{"line":230,"column":6},"end":{"line":230,"column":null}},"123":{"start":{"line":233,"column":2},"end":{"line":233,"column":null}},"124":{"start":{"line":234,"column":2},"end":{"line":234,"column":null}},"125":{"start":{"line":239,"column":0},"end":{"line":244,"column":null}},"126":{"start":{"line":240,"column":2},"end":{"line":243,"column":null}},"127":{"start":{"line":241,"column":4},"end":{"line":241,"column":null}},"128":{"start":{"line":242,"column":4},"end":{"line":242,"column":null}}},"fnMap":{"0":{"name":"readJsonBody","decl":{"start":{"line":22,"column":9},"end":{"line":22,"column":22}},"loc":{"start":{"line":22,"column":62},"end":{"line":45,"column":null}},"line":22},"1":{"name":"(anonymous_1)","decl":{"start":{"line":23,"column":13},"end":{"line":23,"column":22}},"loc":{"start":{"line":23,"column":42},"end":{"line":44,"column":3}},"line":23},"2":{"name":"(anonymous_2)","decl":{"start":{"line":26,"column":11},"end":{"line":26,"column":20}},"loc":{"start":{"line":26,"column":34},"end":{"line":34,"column":5}},"line":26},"3":{"name":"(anonymous_3)","decl":{"start":{"line":35,"column":11},"end":{"line":35,"column":24}},"loc":{"start":{"line":35,"column":24},"end":{"line":42,"column":5}},"line":35},"4":{"name":"sendJson","decl":{"start":{"line":47,"column":9},"end":{"line":47,"column":18}},"loc":{"start":{"line":47,"column":114},"end":{"line":50,"column":null}},"line":47},"5":{"name":"rpcError","decl":{"start":{"line":52,"column":9},"end":{"line":52,"column":18}},"loc":{"start":{"line":52,"column":130},"end":{"line":54,"column":null}},"line":52},"6":{"name":"createHandler","decl":{"start":{"line":60,"column":16},"end":{"line":60,"column":30}},"loc":{"start":{"line":60,"column":110},"end":{"line":139,"column":null}},"line":60},"7":{"name":"(anonymous_7)","decl":{"start":{"line":63,"column":9},"end":{"line":63,"column":16}},"loc":{"start":{"line":63,"column":29},"end":{"line":138,"column":null}},"line":63},"8":{"name":"(anonymous_8)","decl":{"start":{"line":120,"column":13},"end":{"line":120,"column":28}},"loc":{"start":{"line":120,"column":28},"end":{"line":123,"column":7}},"line":120},"9":{"name":"persistGeneratedToken","decl":{"start":{"line":151,"column":22},"end":{"line":151,"column":null}},"loc":{"start":{"line":155,"column":20},"end":{"line":184,"column":null}},"line":155},"10":{"name":"(anonymous_10)","decl":{"start":{"line":181,"column":16},"end":{"line":181,"column":25}},"loc":{"start":{"line":181,"column":31},"end":{"line":181,"column":51}},"line":181},"11":{"name":"closeWithGrace","decl":{"start":{"line":186,"column":9},"end":{"line":186,"column":24}},"loc":{"start":{"line":186,"column":72},"end":{"line":199,"column":null}},"line":186},"12":{"name":"(anonymous_12)","decl":{"start":{"line":187,"column":13},"end":{"line":187,"column":22}},"loc":{"start":{"line":187,"column":34},"end":{"line":198,"column":3}},"line":187},"13":{"name":"(anonymous_13)","decl":{"start":{"line":188,"column":18},"end":{"line":188,"column":35}},"loc":{"start":{"line":188,"column":35},"end":{"line":193,"column":7}},"line":188},"14":{"name":"(anonymous_14)","decl":{"start":{"line":194,"column":11},"end":{"line":194,"column":23}},"loc":{"start":{"line":194,"column":23},"end":{"line":197,"column":5}},"line":194},"15":{"name":"main","decl":{"start":{"line":201,"column":15},"end":{"line":201,"column":37}},"loc":{"start":{"line":201,"column":37},"end":{"line":235,"column":null}},"line":201},"16":{"name":"(anonymous_16)","decl":{"start":{"line":207,"column":5},"end":{"line":207,"column":21}},"loc":{"start":{"line":207,"column":21},"end":{"line":207,"column":41}},"line":207},"17":{"name":"(anonymous_17)","decl":{"start":{"line":215,"column":30},"end":{"line":215,"column":47}},"loc":{"start":{"line":215,"column":47},"end":{"line":221,"column":3}},"line":215},"18":{"name":"(anonymous_18)","decl":{"start":{"line":224,"column":8},"end":{"line":224,"column":27}},"loc":{"start":{"line":224,"column":27},"end":{"line":232,"column":null}},"line":224},"19":{"name":"(anonymous_19)","decl":{"start":{"line":228,"column":55},"end":{"line":228,"column":66}},"loc":{"start":{"line":228,"column":66},"end":{"line":231,"column":5}},"line":228},"20":{"name":"(anonymous_20)","decl":{"start":{"line":240,"column":9},"end":{"line":240,"column":16}},"loc":{"start":{"line":240,"column":22},"end":{"line":243,"column":3}},"line":240}},"branchMap":{"0":{"loc":{"start":{"line":28,"column":6},"end":{"line":32,"column":null}},"type":"if","locations":[{"start":{"line":28,"column":6},"end":{"line":32,"column":null}},{"start":{},"end":{}}],"line":28},"1":{"loc":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"type":"if","locations":[{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},{"start":{},"end":{}}],"line":36},"2":{"loc":{"start":{"line":47,"column":70},"end":{"line":47,"column":114}},"type":"default-arg","locations":[{"start":{"line":47,"column":104},"end":{"line":47,"column":114}}],"line":47},"3":{"loc":{"start":{"line":52,"column":86},"end":{"line":52,"column":130}},"type":"default-arg","locations":[{"start":{"line":52,"column":120},"end":{"line":52,"column":130}}],"line":52},"4":{"loc":{"start":{"line":64,"column":24},"end":{"line":64,"column":40}},"type":"binary-expr","locations":[{"start":{"line":64,"column":24},"end":{"line":64,"column":35}},{"start":{"line":64,"column":35},"end":{"line":64,"column":40}}],"line":64},"5":{"loc":{"start":{"line":66,"column":4},"end":{"line":77,"column":null}},"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":77,"column":null}},{"start":{},"end":{}}],"line":66},"6":{"loc":{"start":{"line":66,"column":8},"end":{"line":66,"column":60}},"type":"binary-expr","locations":[{"start":{"line":66,"column":8},"end":{"line":66,"column":38}},{"start":{"line":66,"column":38},"end":{"line":66,"column":60}}],"line":66},"7":{"loc":{"start":{"line":71,"column":23},"end":{"line":71,"column":null}},"type":"binary-expr","locations":[{"start":{"line":71,"column":23},"end":{"line":71,"column":43}},{"start":{"line":71,"column":43},"end":{"line":71,"column":null}}],"line":71},"8":{"loc":{"start":{"line":72,"column":20},"end":{"line":72,"column":42}},"type":"cond-expr","locations":[{"start":{"line":72,"column":31},"end":{"line":72,"column":37}},{"start":{"line":72,"column":37},"end":{"line":72,"column":42}}],"line":72},"9":{"loc":{"start":{"line":73,"column":16},"end":{"line":73,"column":null}},"type":"cond-expr","locations":[{"start":{"line":73,"column":27},"end":{"line":73,"column":40}},{"start":{"line":73,"column":40},"end":{"line":73,"column":null}}],"line":73},"10":{"loc":{"start":{"line":79,"column":4},"end":{"line":82,"column":null}},"type":"if","locations":[{"start":{"line":79,"column":4},"end":{"line":82,"column":null}},{"start":{},"end":{}}],"line":79},"11":{"loc":{"start":{"line":84,"column":4},"end":{"line":89,"column":null}},"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":89,"column":null}},{"start":{},"end":{}}],"line":84},"12":{"loc":{"start":{"line":91,"column":15},"end":{"line":91,"column":null}},"type":"binary-expr","locations":[{"start":{"line":91,"column":15},"end":{"line":91,"column":43}},{"start":{"line":91,"column":43},"end":{"line":91,"column":null}}],"line":91},"13":{"loc":{"start":{"line":93,"column":4},"end":{"line":98,"column":null}},"type":"if","locations":[{"start":{"line":93,"column":4},"end":{"line":98,"column":null}},{"start":{},"end":{}}],"line":93},"14":{"loc":{"start":{"line":100,"column":17},"end":{"line":100,"column":null}},"type":"binary-expr","locations":[{"start":{"line":100,"column":17},"end":{"line":100,"column":46}},{"start":{"line":100,"column":46},"end":{"line":100,"column":null}}],"line":100},"15":{"loc":{"start":{"line":102,"column":4},"end":{"line":107,"column":null}},"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":107,"column":null}},{"start":{},"end":{}}],"line":102},"16":{"loc":{"start":{"line":102,"column":8},"end":{"line":102,"column":66}},"type":"binary-expr","locations":[{"start":{"line":102,"column":8},"end":{"line":102,"column":22}},{"start":{"line":102,"column":22},"end":{"line":102,"column":66}}],"line":102},"17":{"loc":{"start":{"line":104,"column":55},"end":{"line":104,"column":102}},"type":"cond-expr","locations":[{"start":{"line":104,"column":69},"end":{"line":104,"column":98}},{"start":{"line":104,"column":98},"end":{"line":104,"column":102}}],"line":104},"18":{"loc":{"start":{"line":112,"column":36},"end":{"line":112,"column":75}},"type":"binary-expr","locations":[{"start":{"line":112,"column":36},"end":{"line":112,"column":64}},{"start":{"line":112,"column":64},"end":{"line":112,"column":75}}],"line":112},"19":{"loc":{"start":{"line":127,"column":18},"end":{"line":127,"column":null}},"type":"cond-expr","locations":[{"start":{"line":127,"column":39},"end":{"line":127,"column":51}},{"start":{"line":127,"column":51},"end":{"line":127,"column":null}}],"line":127},"20":{"loc":{"start":{"line":129,"column":6},"end":{"line":136,"column":null}},"type":"if","locations":[{"start":{"line":129,"column":6},"end":{"line":136,"column":null}},{"start":{"line":134,"column":13},"end":{"line":136,"column":null}}],"line":129},"21":{"loc":{"start":{"line":132,"column":8},"end":{"line":133,"column":null}},"type":"if","locations":[{"start":{"line":132,"column":8},"end":{"line":133,"column":null}},{"start":{"line":133,"column":13},"end":{"line":133,"column":null}}],"line":132},"22":{"loc":{"start":{"line":154,"column":2},"end":{"line":154,"column":null}},"type":"default-arg","locations":[{"start":{"line":154,"column":21},"end":{"line":154,"column":null}}],"line":154},"23":{"loc":{"start":{"line":156,"column":2},"end":{"line":156,"column":null}},"type":"if","locations":[{"start":{"line":156,"column":2},"end":{"line":156,"column":null}},{"start":{},"end":{}}],"line":156},"24":{"loc":{"start":{"line":156,"column":6},"end":{"line":156,"column":59}},"type":"binary-expr","locations":[{"start":{"line":156,"column":6},"end":{"line":156,"column":32}},{"start":{"line":156,"column":32},"end":{"line":156,"column":59}}],"line":156},"25":{"loc":{"start":{"line":160,"column":22},"end":{"line":160,"column":null}},"type":"binary-expr","locations":[{"start":{"line":160,"column":22},"end":{"line":160,"column":39}},{"start":{"line":160,"column":39},"end":{"line":160,"column":null}}],"line":160},"26":{"loc":{"start":{"line":161,"column":6},"end":{"line":164,"column":null}},"type":"if","locations":[{"start":{"line":161,"column":6},"end":{"line":164,"column":null}},{"start":{},"end":{}}],"line":161},"27":{"loc":{"start":{"line":161,"column":10},"end":{"line":161,"column":77}},"type":"binary-expr","locations":[{"start":{"line":161,"column":10},"end":{"line":161,"column":51}},{"start":{"line":161,"column":51},"end":{"line":161,"column":77}}],"line":161},"28":{"loc":{"start":{"line":171,"column":18},"end":{"line":171,"column":null}},"type":"cond-expr","locations":[{"start":{"line":171,"column":39},"end":{"line":171,"column":51}},{"start":{"line":171,"column":51},"end":{"line":171,"column":null}}],"line":171},"29":{"loc":{"start":{"line":173,"column":6},"end":{"line":179,"column":null}},"type":"if","locations":[{"start":{"line":173,"column":6},"end":{"line":179,"column":null}},{"start":{},"end":{}}],"line":173},"30":{"loc":{"start":{"line":217,"column":22},"end":{"line":217,"column":84}},"type":"cond-expr","locations":[{"start":{"line":217,"column":44},"end":{"line":217,"column":68}},{"start":{"line":217,"column":68},"end":{"line":217,"column":84}}],"line":217},"31":{"loc":{"start":{"line":219,"column":44},"end":{"line":219,"column":124}},"type":"cond-expr","locations":[{"start":{"line":219,"column":61},"end":{"line":219,"column":101}},{"start":{"line":219,"column":101},"end":{"line":219,"column":124}}],"line":219},"32":{"loc":{"start":{"line":220,"column":4},"end":{"line":220,"column":null}},"type":"if","locations":[{"start":{"line":220,"column":4},"end":{"line":220,"column":null}},{"start":{},"end":{}}],"line":220},"33":{"loc":{"start":{"line":225,"column":4},"end":{"line":225,"column":null}},"type":"if","locations":[{"start":{"line":225,"column":4},"end":{"line":225,"column":null}},{"start":{},"end":{}}],"line":225},"34":{"loc":{"start":{"line":239,"column":0},"end":{"line":244,"column":null}},"type":"if","locations":[{"start":{"line":239,"column":0},"end":{"line":244,"column":null}},{"start":{},"end":{}}],"line":239},"35":{"loc":{"start":{"line":239,"column":4},"end":{"line":239,"column":86}},"type":"binary-expr","locations":[{"start":{"line":239,"column":4},"end":{"line":239,"column":23}},{"start":{"line":239,"column":23},"end":{"line":239,"column":86}}],"line":239},"36":{"loc":{"start":{"line":241,"column":33},"end":{"line":241,"column":88}},"type":"cond-expr","locations":[{"start":{"line":241,"column":54},"end":{"line":241,"column":77}},{"start":{"line":241,"column":77},"end":{"line":241,"column":88}}],"line":241},"37":{"loc":{"start":{"line":241,"column":54},"end":{"line":241,"column":77}},"type":"binary-expr","locations":[{"start":{"line":241,"column":54},"end":{"line":241,"column":65}},{"start":{"line":241,"column":65},"end":{"line":241,"column":77}}],"line":241}},"s":{"0":1,"1":1,"2":1,"3":1,"4":4,"5":4,"6":4,"7":4,"8":68,"9":68,"10":1,"11":1,"12":1,"13":67,"14":4,"15":3,"16":0,"17":3,"18":3,"19":1,"20":4,"21":9,"22":9,"23":5,"24":7,"25":7,"26":7,"27":11,"28":11,"29":3,"30":3,"31":3,"32":3,"33":8,"34":1,"35":1,"36":7,"37":1,"38":1,"39":6,"40":11,"41":11,"42":0,"43":0,"44":6,"45":11,"46":11,"47":2,"48":2,"49":2,"50":2,"51":4,"52":4,"53":4,"54":2,"55":11,"56":11,"57":11,"58":2,"59":2,"60":11,"61":2,"62":2,"63":2,"64":2,"65":2,"66":2,"67":0,"68":0,"69":6,"70":2,"71":4,"72":4,"73":7,"74":7,"75":3,"76":7,"77":1,"78":1,"79":2,"80":2,"81":2,"82":4,"83":4,"84":4,"85":1,"86":1,"87":3,"88":3,"89":3,"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":1,"126":0,"127":0,"128":0},"f":{"0":4,"1":4,"2":68,"3":3,"4":9,"5":5,"6":7,"7":11,"8":2,"9":6,"10":3,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0},"b":{"0":[1,67],"1":[0,3],"2":[9],"3":[5],"4":[11,0],"5":[3,8],"6":[11,3],"7":[3,2],"8":[1,2],"9":[1,2],"10":[1,7],"11":[1,6],"12":[6,0],"13":[0,11],"14":[6,1],"15":[2,9],"16":[11,5],"17":[0,2],"18":[2,0],"19":[2,0],"20":[2,0],"21":[2,0],"22":[6],"23":[2,4],"24":[6,5],"25":[3,0],"26":[1,6],"27":[7,2],"28":[4,0],"29":[1,3],"30":[0,0],"31":[0,0],"32":[0,0],"33":[0,0],"34":[0,1],"35":[1,1],"36":[0,0],"37":[0,0]},"meta":{"lastBranch":38,"lastFunction":21,"lastStatement":129,"seen":{"s:13:23:13:Infinity":0,"s:15:29:15:Infinity":1,"s:16:26:16:Infinity":2,"s:18:32:18:Infinity":3,"f:22:9:22:22":0,"s:23:2:44:Infinity":4,"f:23:13:23:22":1,"s:24:29:24:Infinity":5,"s:25:15:25:Infinity":6,"s:26:4:34:Infinity":7,"f:26:11:26:20":2,"s:27:6:27:Infinity":8,"b:28:6:32:Infinity:undefined:undefined:undefined:undefined":0,"s:28:6:32:Infinity":9,"s:29:8:29:Infinity":10,"s:30:8:30:Infinity":11,"s:31:8:31:Infinity":12,"s:33:6:33:Infinity":13,"s:35:4:42:Infinity":14,"f:35:11:35:24":3,"b:36:6:36:Infinity:undefined:undefined:undefined:undefined":1,"s:36:6:36:Infinity":15,"s:36:31:36:Infinity":16,"s:37:6:41:Infinity":17,"s:38:8:38:Infinity":18,"s:40:8:40:Infinity":19,"s:43:4:43:Infinity":20,"f:47:9:47:18":4,"b:47:104:47:114":2,"s:48:2:48:Infinity":21,"s:49:2:49:Infinity":22,"f:52:9:52:18":5,"b:52:120:52:130":3,"s:53:2:53:Infinity":23,"f:60:16:60:30":6,"s:61:22:61:Infinity":24,"s:62:18:62:Infinity":25,"s:63:2:138:Infinity":26,"f:63:9:63:16":7,"s:64:16:64:Infinity":27,"b:64:24:64:35:64:35:64:40":4,"b:66:4:77:Infinity:undefined:undefined:undefined:undefined":5,"s:66:4:77:Infinity":28,"b:66:8:66:38:66:38:66:60":6,"s:70:22:70:Infinity":29,"s:71:23:71:Infinity":30,"b:71:23:71:43:71:43:71:Infinity":7,"s:72:6:75:Infinity":31,"b:72:31:72:37:72:37:72:42":8,"b:73:27:73:40:73:40:73:Infinity":9,"s:76:6:76:Infinity":32,"b:79:4:82:Infinity:undefined:undefined:undefined:undefined":10,"s:79:4:82:Infinity":33,"s:80:6:80:Infinity":34,"s:81:6:81:Infinity":35,"b:84:4:89:Infinity:undefined:undefined:undefined:undefined":11,"s:84:4:89:Infinity":36,"s:85:6:87:Infinity":37,"s:88:6:88:Infinity":38,"s:91:15:91:Infinity":39,"b:91:15:91:43:91:43:91:Infinity":12,"s:92:20:92:Infinity":40,"b:93:4:98:Infinity:undefined:undefined:undefined:undefined":13,"s:93:4:98:Infinity":41,"s:94:6:96:Infinity":42,"s:97:6:97:Infinity":43,"s:100:17:100:Infinity":44,"b:100:17:100:46:100:46:100:Infinity":14,"s:101:22:101:Infinity":45,"b:102:4:107:Infinity:undefined:undefined:undefined:undefined":15,"s:102:4:107:Infinity":46,"b:102:8:102:22:102:22:102:66":16,"s:103:22:103:Infinity":47,"s:104:6:104:Infinity":48,"b:104:69:104:98:104:98:104:102":17,"s:105:6:105:Infinity":49,"s:106:6:106:Infinity":50,"s:108:4:108:Infinity":51,"s:110:4:137:Infinity":52,"s:111:19:111:Infinity":53,"s:112:6:112:Infinity":54,"b:112:36:112:64:112:64:112:75":18,"s:116:21:116:Infinity":55,"s:117:24:119:Infinity":56,"s:120:6:123:Infinity":57,"f:120:13:120:28":8,"s:121:8:121:Infinity":58,"s:122:8:122:Infinity":59,"s:124:6:124:Infinity":60,"s:125:6:125:Infinity":61,"s:127:18:127:Infinity":62,"b:127:39:127:51:127:51:127:Infinity":19,"s:128:6:128:Infinity":63,"b:129:6:136:Infinity:134:13:136:Infinity":20,"s:129:6:136:Infinity":64,"b:132:8:133:Infinity:133:13:133:Infinity":21,"s:132:8:133:Infinity":65,"s:132:36:132:Infinity":66,"s:133:13:133:Infinity":67,"s:135:8:135:Infinity":68,"f:151:22:151:Infinity":9,"b:154:21:154:Infinity":22,"b:156:2:156:Infinity:undefined:undefined:undefined:undefined":23,"s:156:2:156:Infinity":69,"b:156:6:156:32:156:32:156:59":24,"s:156:59:156:Infinity":70,"s:157:2:183:Infinity":71,"s:157:21:157:26":72,"s:158:4:182:Infinity":73,"s:159:19:159:Infinity":74,"s:160:22:160:Infinity":75,"b:160:22:160:39:160:39:160:Infinity":25,"b:161:6:164:Infinity:undefined:undefined:undefined:undefined":26,"s:161:6:164:Infinity":76,"b:161:10:161:51:161:51:161:77":27,"s:162:8:162:Infinity":77,"s:163:8:163:Infinity":78,"s:165:6:167:Infinity":79,"s:168:6:168:Infinity":80,"s:169:6:169:Infinity":81,"s:171:18:171:Infinity":82,"b:171:39:171:51:171:51:171:Infinity":28,"s:172:20:172:Infinity":83,"b:173:6:179:Infinity:undefined:undefined:undefined:undefined":29,"s:173:6:179:Infinity":84,"s:174:8:177:Infinity":85,"s:178:8:178:Infinity":86,"s:180:6:180:Infinity":87,"s:181:6:181:Infinity":88,"f:181:16:181:25":10,"s:181:31:181:51":89,"f:186:9:186:24":11,"s:187:2:198:Infinity":90,"f:187:13:187:22":12,"s:188:18:193:Infinity":91,"f:188:18:188:35":13,"s:191:6:191:Infinity":92,"s:192:6:192:Infinity":93,"s:194:4:197:Infinity":94,"f:194:11:194:23":14,"s:195:6:195:Infinity":95,"s:196:6:196:Infinity":96,"f:201:15:201:37":15,"s:202:14:202:25":97,"s:204:13:204:Infinity":98,"s:205:18:205:Infinity":99,"s:207:2:207:Infinity":100,"f:207:5:207:21":16,"s:207:21:207:41":101,"s:208:2:208:Infinity":102,"s:209:15:209:Infinity":103,"s:210:27:210:Infinity":104,"s:211:2:211:Infinity":105,"s:213:21:213:Infinity":106,"s:215:2:221:Infinity":107,"f:215:30:215:47":17,"s:216:4:216:Infinity":108,"s:217:4:217:Infinity":109,"b:217:44:217:68:217:68:217:84":30,"s:218:4:218:Infinity":110,"s:219:4:219:Infinity":111,"b:219:61:219:101:219:101:219:124":31,"b:220:4:220:Infinity:undefined:undefined:undefined:undefined":32,"s:220:4:220:Infinity":112,"s:220:25:220:Infinity":113,"s:223:17:223:Infinity":114,"s:224:8:232:Infinity":115,"f:224:8:224:27":18,"b:225:4:225:Infinity:undefined:undefined:undefined:undefined":33,"s:225:4:225:Infinity":116,"s:225:18:225:Infinity":117,"s:226:4:226:Infinity":118,"s:227:4:227:Infinity":119,"s:228:4:231:Infinity":120,"f:228:55:228:66":19,"s:229:6:229:Infinity":121,"s:230:6:230:Infinity":122,"s:233:2:233:Infinity":123,"s:234:2:234:Infinity":124,"b:239:0:244:Infinity:undefined:undefined:undefined:undefined":34,"s:239:0:244:Infinity":125,"b:239:4:239:23:239:23:239:86":35,"s:240:2:243:Infinity":126,"f:240:9:240:16":20,"s:241:4:241:Infinity":127,"b:241:54:241:77:241:77:241:88":36,"b:241:54:241:65:241:65:241:77":37,"s:242:4:242:Infinity":128},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/logger.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/logger.ts","statementMap":{"0":{"start":{"line":4,"column":26},"end":{"line":12,"column":null}},"1":{"start":{"line":16,"column":24},"end":{"line":16,"column":null}},"2":{"start":{"line":17,"column":29},"end":{"line":17,"column":null}},"3":{"start":{"line":21,"column":21},"end":{"line":21,"column":null}},"4":{"start":{"line":22,"column":2},"end":{"line":25,"column":null}},"5":{"start":{"line":23,"column":4},"end":{"line":23,"column":null}},"6":{"start":{"line":24,"column":4},"end":{"line":24,"column":null}},"7":{"start":{"line":26,"column":2},"end":{"line":26,"column":null}},"8":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"9":{"start":{"line":34,"column":2},"end":{"line":34,"column":null}},"10":{"start":{"line":34,"column":37},"end":{"line":34,"column":null}},"11":{"start":{"line":35,"column":2},"end":{"line":35,"column":null}},"12":{"start":{"line":38,"column":19},"end":{"line":46,"column":null}},"13":{"start":{"line":39,"column":32},"end":{"line":39,"column":null}},"14":{"start":{"line":40,"column":32},"end":{"line":40,"column":null}},"15":{"start":{"line":41,"column":31},"end":{"line":41,"column":null}},"16":{"start":{"line":42,"column":33},"end":{"line":42,"column":null}},"17":{"start":{"line":43,"column":34},"end":{"line":43,"column":null}},"18":{"start":{"line":44,"column":32},"end":{"line":44,"column":null}},"19":{"start":{"line":45,"column":32},"end":{"line":45,"column":null}},"20":{"start":{"line":54,"column":2},"end":{"line":54,"column":null}}},"fnMap":{"0":{"name":"setLogLevel","decl":{"start":{"line":20,"column":16},"end":{"line":20,"column":28}},"loc":{"start":{"line":20,"column":53},"end":{"line":27,"column":null}},"line":20},"1":{"name":"getLogLevel","decl":{"start":{"line":29,"column":16},"end":{"line":29,"column":40}},"loc":{"start":{"line":29,"column":40},"end":{"line":31,"column":null}},"line":29},"2":{"name":"emit","decl":{"start":{"line":33,"column":9},"end":{"line":33,"column":14}},"loc":{"start":{"line":33,"column":50},"end":{"line":36,"column":null}},"line":33},"3":{"name":"(anonymous_3)","decl":{"start":{"line":39,"column":2},"end":{"line":39,"column":10}},"loc":{"start":{"line":39,"column":32},"end":{"line":39,"column":null}},"line":39},"4":{"name":"(anonymous_4)","decl":{"start":{"line":40,"column":2},"end":{"line":40,"column":10}},"loc":{"start":{"line":40,"column":32},"end":{"line":40,"column":null}},"line":40},"5":{"name":"(anonymous_5)","decl":{"start":{"line":41,"column":2},"end":{"line":41,"column":9}},"loc":{"start":{"line":41,"column":31},"end":{"line":41,"column":null}},"line":41},"6":{"name":"(anonymous_6)","decl":{"start":{"line":42,"column":2},"end":{"line":42,"column":11}},"loc":{"start":{"line":42,"column":33},"end":{"line":42,"column":null}},"line":42},"7":{"name":"(anonymous_7)","decl":{"start":{"line":43,"column":2},"end":{"line":43,"column":12}},"loc":{"start":{"line":43,"column":34},"end":{"line":43,"column":null}},"line":43},"8":{"name":"(anonymous_8)","decl":{"start":{"line":44,"column":2},"end":{"line":44,"column":10}},"loc":{"start":{"line":44,"column":32},"end":{"line":44,"column":null}},"line":44},"9":{"name":"(anonymous_9)","decl":{"start":{"line":45,"column":2},"end":{"line":45,"column":10}},"loc":{"start":{"line":45,"column":32},"end":{"line":45,"column":null}},"line":45},"10":{"name":"audit","decl":{"start":{"line":53,"column":16},"end":{"line":53,"column":22}},"loc":{"start":{"line":53,"column":60},"end":{"line":55,"column":null}},"line":53}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":2},"end":{"line":25,"column":null}},"type":"if","locations":[{"start":{"line":22,"column":2},"end":{"line":25,"column":null}},{"start":{},"end":{}}],"line":22},"1":{"loc":{"start":{"line":34,"column":2},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":34,"column":2},"end":{"line":34,"column":null}},{"start":{},"end":{}}],"line":34}},"s":{"0":13,"1":13,"2":13,"3":46,"4":46,"5":45,"6":45,"7":46,"8":3,"9":221,"10":209,"11":12,"12":13,"13":70,"14":100,"15":17,"16":5,"17":24,"18":4,"19":1,"20":9},"f":{"0":46,"1":3,"2":221,"3":70,"4":100,"5":17,"6":5,"7":24,"8":4,"9":1,"10":9},"b":{"0":[45,1],"1":[209,12]},"meta":{"lastBranch":2,"lastFunction":11,"lastStatement":21,"seen":{"s:4:26:12:Infinity":0,"s:16:24:16:Infinity":1,"s:17:29:17:Infinity":2,"f:20:16:20:28":0,"s:21:21:21:Infinity":3,"b:22:2:25:Infinity:undefined:undefined:undefined:undefined":0,"s:22:2:25:Infinity":4,"s:23:4:23:Infinity":5,"s:24:4:24:Infinity":6,"s:26:2:26:Infinity":7,"f:29:16:29:40":1,"s:30:2:30:Infinity":8,"f:33:9:33:14":2,"b:34:2:34:Infinity:undefined:undefined:undefined:undefined":1,"s:34:2:34:Infinity":9,"s:34:37:34:Infinity":10,"s:35:2:35:Infinity":11,"s:38:19:46:Infinity":12,"f:39:2:39:10":3,"s:39:32:39:Infinity":13,"f:40:2:40:10":4,"s:40:32:40:Infinity":14,"f:41:2:41:9":5,"s:41:31:41:Infinity":15,"f:42:2:42:11":6,"s:42:33:42:Infinity":16,"f:43:2:43:12":7,"s:43:34:43:Infinity":17,"f:44:2:44:10":8,"s:44:32:44:Infinity":18,"f:45:2:45:10":9,"s:45:32:45:Infinity":19,"f:53:16:53:22":10,"s:54:2:54:Infinity":20},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/ratelimit.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/ratelimit.ts","statementMap":{"0":{"start":{"line":5,"column":22},"end":{"line":5,"column":null}},"1":{"start":{"line":6,"column":22},"end":{"line":6,"column":null}},"2":{"start":{"line":7,"column":21},"end":{"line":7,"column":null}},"3":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"4":{"start":{"line":11,"column":20},"end":{"line":11,"column":null}},"5":{"start":{"line":20,"column":20},"end":{"line":20,"column":null}},"6":{"start":{"line":22,"column":22},"end":{"line":22,"column":42}},"7":{"start":{"line":26,"column":14},"end":{"line":26,"column":null}},"8":{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},"9":{"start":{"line":27,"column":12},"end":{"line":27,"column":null}},"10":{"start":{"line":28,"column":16},"end":{"line":28,"column":null}},"11":{"start":{"line":29,"column":4},"end":{"line":32,"column":null}},"12":{"start":{"line":30,"column":6},"end":{"line":30,"column":null}},"13":{"start":{"line":31,"column":6},"end":{"line":31,"column":null}},"14":{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},"15":{"start":{"line":38,"column":16},"end":{"line":38,"column":null}},"16":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"17":{"start":{"line":40,"column":14},"end":{"line":40,"column":null}},"18":{"start":{"line":41,"column":4},"end":{"line":41,"column":null}},"19":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},"20":{"start":{"line":43,"column":4},"end":{"line":46,"column":null}},"21":{"start":{"line":44,"column":23},"end":{"line":44,"column":null}},"22":{"start":{"line":45,"column":6},"end":{"line":45,"column":null}},"23":{"start":{"line":47,"column":4},"end":{"line":47,"column":null}},"24":{"start":{"line":48,"column":4},"end":{"line":48,"column":null}},"25":{"start":{"line":53,"column":4},"end":{"line":53,"column":null}},"26":{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},"27":{"start":{"line":57,"column":41},"end":{"line":57,"column":null}},"28":{"start":{"line":58,"column":4},"end":{"line":60,"column":null}},"29":{"start":{"line":59,"column":6},"end":{"line":59,"column":null}},"30":{"start":{"line":59,"column":46},"end":{"line":59,"column":null}},"31":{"start":{"line":63,"column":4},"end":{"line":67,"column":null}},"32":{"start":{"line":64,"column":21},"end":{"line":64,"column":null}},"33":{"start":{"line":65,"column":6},"end":{"line":65,"column":null}},"34":{"start":{"line":65,"column":32},"end":{"line":65,"column":null}},"35":{"start":{"line":66,"column":6},"end":{"line":66,"column":null}}},"fnMap":{"0":{"name":"constructor","decl":{"start":{"line":22,"column":2},"end":{"line":22,"column":14}},"loc":{"start":{"line":22,"column":52},"end":{"line":22,"column":null}},"line":22},"1":{"name":"retryInMs","decl":{"start":{"line":25,"column":2},"end":{"line":25,"column":12}},"loc":{"start":{"line":25,"column":32},"end":{"line":34,"column":null}},"line":25},"2":{"name":"fail","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":7}},"loc":{"start":{"line":37,"column":27},"end":{"line":49,"column":null}},"line":37},"3":{"name":"succeed","decl":{"start":{"line":52,"column":2},"end":{"line":52,"column":10}},"loc":{"start":{"line":52,"column":28},"end":{"line":54,"column":null}},"line":52},"4":{"name":"sweep","decl":{"start":{"line":56,"column":2},"end":{"line":56,"column":10}},"loc":{"start":{"line":56,"column":35},"end":{"line":68,"column":null}},"line":56}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":14},"end":{"line":22,"column":52}},"type":"default-arg","locations":[{"start":{"line":22,"column":42},"end":{"line":22,"column":52}}],"line":22},"1":{"loc":{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},{"start":{},"end":{}}],"line":27},"2":{"loc":{"start":{"line":29,"column":4},"end":{"line":32,"column":null}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":32,"column":null}},{"start":{},"end":{}}],"line":29},"3":{"loc":{"start":{"line":40,"column":14},"end":{"line":40,"column":null}},"type":"binary-expr","locations":[{"start":{"line":40,"column":14},"end":{"line":40,"column":38}},{"start":{"line":40,"column":38},"end":{"line":40,"column":null}}],"line":40},"4":{"loc":{"start":{"line":43,"column":4},"end":{"line":46,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":46,"column":null}},{"start":{},"end":{}}],"line":43},"5":{"loc":{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},"type":"if","locations":[{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},{"start":{},"end":{}}],"line":57},"6":{"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},"7":{"loc":{"start":{"line":65,"column":6},"end":{"line":65,"column":null}},"type":"if","locations":[{"start":{"line":65,"column":6},"end":{"line":65,"column":null}},{"start":{},"end":{}}],"line":65}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":11,"6":11,"7":12,"8":12,"9":6,"10":6,"11":6,"12":1,"13":1,"14":5,"15":52,"16":52,"17":52,"18":52,"19":52,"20":52,"21":29,"22":29,"23":52,"24":52,"25":5,"26":52,"27":52,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0},"f":{"0":11,"1":12,"2":52,"3":5,"4":52},"b":{"0":[11],"1":[6,6],"2":[1,5],"3":[52,6],"4":[29,23],"5":[52,0],"6":[0,0],"7":[0,0]},"meta":{"lastBranch":8,"lastFunction":5,"lastStatement":36,"seen":{"s:5:22:5:Infinity":0,"s:6:22:6:Infinity":1,"s:7:21:7:Infinity":2,"s:9:24:9:Infinity":3,"s:11:20:11:Infinity":4,"s:20:20:20:Infinity":5,"f:22:2:22:14":0,"b:22:42:22:52":0,"s:22:22:22:42":6,"f:25:2:25:12":1,"s:26:14:26:Infinity":7,"b:27:4:27:Infinity:undefined:undefined:undefined:undefined":1,"s:27:4:27:Infinity":8,"s:27:12:27:Infinity":9,"s:28:16:28:Infinity":10,"b:29:4:32:Infinity:undefined:undefined:undefined:undefined":2,"s:29:4:32:Infinity":11,"s:30:6:30:Infinity":12,"s:31:6:31:Infinity":13,"s:33:4:33:Infinity":14,"f:37:2:37:7":2,"s:38:16:38:Infinity":15,"s:39:4:39:Infinity":16,"s:40:14:40:Infinity":17,"b:40:14:40:38:40:38:40:Infinity":3,"s:41:4:41:Infinity":18,"s:42:4:42:Infinity":19,"b:43:4:46:Infinity:undefined:undefined:undefined:undefined":4,"s:43:4:46:Infinity":20,"s:44:23:44:Infinity":21,"s:45:6:45:Infinity":22,"s:47:4:47:Infinity":23,"s:48:4:48:Infinity":24,"f:52:2:52:10":3,"s:53:4:53:Infinity":25,"f:56:2:56:10":4,"b:57:4:57:Infinity:undefined:undefined:undefined:undefined":5,"s:57:4:57:Infinity":26,"s:57:41:57:Infinity":27,"s:58:4:60:Infinity":28,"b:59:6:59:Infinity:undefined:undefined:undefined:undefined":6,"s:59:6:59:Infinity":29,"s:59:46:59:Infinity":30,"s:63:4:67:Infinity":31,"s:64:21:64:Infinity":32,"b:65:6:65:Infinity:undefined:undefined:undefined:undefined":7,"s:65:6:65:Infinity":33,"s:65:32:65:Infinity":34,"s:66:6:66:Infinity":35},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/safety.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/safety.ts","statementMap":{"0":{"start":{"line":10,"column":18},"end":{"line":13,"column":null}},"1":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"2":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}},"3":{"start":{"line":18,"column":27},"end":{"line":18,"column":53}},"4":{"start":{"line":33,"column":2},"end":{"line":35,"column":null}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":null}},"6":{"start":{"line":36,"column":2},"end":{"line":38,"column":null}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":null}},"8":{"start":{"line":39,"column":2},"end":{"line":39,"column":null}},"9":{"start":{"line":44,"column":15},"end":{"line":44,"column":null}},"10":{"start":{"line":45,"column":2},"end":{"line":47,"column":null}},"11":{"start":{"line":46,"column":4},"end":{"line":46,"column":null}},"12":{"start":{"line":48,"column":2},"end":{"line":48,"column":null}},"13":{"start":{"line":53,"column":2},"end":{"line":53,"column":null}},"14":{"start":{"line":53,"column":24},"end":{"line":53,"column":null}},"15":{"start":{"line":54,"column":2},"end":{"line":54,"column":null}},"16":{"start":{"line":62,"column":13},"end":{"line":62,"column":null}},"17":{"start":{"line":63,"column":13},"end":{"line":63,"column":null}},"18":{"start":{"line":64,"column":2},"end":{"line":64,"column":null}},"19":{"start":{"line":73,"column":2},"end":{"line":73,"column":null}},"20":{"start":{"line":73,"column":15},"end":{"line":73,"column":null}},"21":{"start":{"line":74,"column":2},"end":{"line":74,"column":null}},"22":{"start":{"line":74,"column":32},"end":{"line":74,"column":null}},"23":{"start":{"line":75,"column":2},"end":{"line":75,"column":null}}},"fnMap":{"0":{"name":"globToRegex","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":28}},"loc":{"start":{"line":9,"column":50},"end":{"line":15,"column":null}},"line":9},"1":{"name":"matchesAny","decl":{"start":{"line":17,"column":16},"end":{"line":17,"column":27}},"loc":{"start":{"line":17,"column":68},"end":{"line":19,"column":null}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":15},"end":{"line":18,"column":21}},"loc":{"start":{"line":18,"column":27},"end":{"line":18,"column":53}},"line":18},"3":{"name":"entityWriteAllowed","decl":{"start":{"line":32,"column":16},"end":{"line":32,"column":35}},"loc":{"start":{"line":32,"column":80},"end":{"line":40,"column":null}},"line":32},"4":{"name":"serviceAllowed","decl":{"start":{"line":43,"column":16},"end":{"line":43,"column":31}},"loc":{"start":{"line":43,"column":91},"end":{"line":49,"column":null}},"line":43},"5":{"name":"entityReadVisible","decl":{"start":{"line":52,"column":16},"end":{"line":52,"column":34}},"loc":{"start":{"line":52,"column":79},"end":{"line":55,"column":null}},"line":52},"6":{"name":"safeEqual","decl":{"start":{"line":61,"column":16},"end":{"line":61,"column":26}},"loc":{"start":{"line":61,"column":57},"end":{"line":65,"column":null}},"line":61},"7":{"name":"maskSecret","decl":{"start":{"line":72,"column":16},"end":{"line":72,"column":27}},"loc":{"start":{"line":72,"column":64},"end":{"line":76,"column":null}},"line":72}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":2},"end":{"line":35,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":2},"end":{"line":35,"column":null}},{"start":{},"end":{}}],"line":33},"1":{"loc":{"start":{"line":33,"column":6},"end":{"line":33,"column":84}},"type":"binary-expr","locations":[{"start":{"line":33,"column":6},"end":{"line":33,"column":40}},{"start":{"line":33,"column":40},"end":{"line":33,"column":84}}],"line":33},"2":{"loc":{"start":{"line":36,"column":2},"end":{"line":38,"column":null}},"type":"if","locations":[{"start":{"line":36,"column":2},"end":{"line":38,"column":null}},{"start":{},"end":{}}],"line":36},"3":{"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":null}},"type":"if","locations":[{"start":{"line":45,"column":2},"end":{"line":47,"column":null}},{"start":{},"end":{}}],"line":45},"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":72,"column":43},"end":{"line":72,"column":64}},"type":"default-arg","locations":[{"start":{"line":72,"column":53},"end":{"line":72,"column":64}}],"line":72},"6":{"loc":{"start":{"line":73,"column":2},"end":{"line":73,"column":null}},"type":"if","locations":[{"start":{"line":73,"column":2},"end":{"line":73,"column":null}},{"start":{},"end":{}}],"line":73},"7":{"loc":{"start":{"line":74,"column":2},"end":{"line":74,"column":null}},"type":"if","locations":[{"start":{"line":74,"column":2},"end":{"line":74,"column":null}},{"start":{},"end":{}}],"line":74}},"s":{"0":307,"1":307,"2":294,"3":298,"4":12,"5":2,"6":10,"7":4,"8":6,"9":15,"10":15,"11":5,"12":10,"13":310,"14":48,"15":262,"16":9,"17":9,"18":9,"19":8,"20":1,"21":7,"22":1,"23":6},"f":{"0":307,"1":294,"2":298,"3":12,"4":15,"5":310,"6":9,"7":8},"b":{"0":[2,10],"1":[12,6],"2":[4,6],"3":[5,10],"4":[48,262],"5":[8],"6":[1,7],"7":[1,6]},"meta":{"lastBranch":8,"lastFunction":8,"lastStatement":24,"seen":{"f:9:16:9:28":0,"s:10:18:13:Infinity":0,"s:14:2:14:Infinity":1,"f:17:16:17:27":1,"s:18:2:18:Infinity":2,"f:18:15:18:21":2,"s:18:27:18:53":3,"f:32:16:32:35":3,"b:33:2:35:Infinity:undefined:undefined:undefined:undefined":0,"s:33:2:35:Infinity":4,"b:33:6:33:40:33:40:33:84":1,"s:34:4:34:Infinity":5,"b:36:2:38:Infinity:undefined:undefined:undefined:undefined":2,"s:36:2:38:Infinity":6,"s:37:4:37:Infinity":7,"s:39:2:39:Infinity":8,"f:43:16:43:31":4,"s:44:15:44:Infinity":9,"b:45:2:47:Infinity:undefined:undefined:undefined:undefined":3,"s:45:2:47:Infinity":10,"s:46:4:46:Infinity":11,"s:48:2:48:Infinity":12,"f:52:16:52:34":5,"b:53:2:53:Infinity:undefined:undefined:undefined:undefined":4,"s:53:2:53:Infinity":13,"s:53:24:53:Infinity":14,"s:54:2:54:Infinity":15,"f:61:16:61:26":6,"s:62:13:62:Infinity":16,"s:63:13:63:Infinity":17,"s:64:2:64:Infinity":18,"f:72:16:72:27":7,"b:72:53:72:64":5,"b:73:2:73:Infinity:undefined:undefined:undefined:undefined":6,"s:73:2:73:Infinity":19,"s:73:15:73:Infinity":20,"b:74:2:74:Infinity:undefined:undefined:undefined:undefined":7,"s:74:2:74:Infinity":21,"s:74:32:74:Infinity":22,"s:75:2:75:Infinity":23},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/catalog.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/catalog.ts","statementMap":{"0":{"start":{"line":5,"column":24},"end":{"line":5,"column":null}},"1":{"start":{"line":12,"column":22},"end":{"line":12,"column":null}},"2":{"start":{"line":28,"column":43},"end":{"line":28,"column":null}},"3":{"start":{"line":29,"column":55},"end":{"line":29,"column":null}},"4":{"start":{"line":30,"column":66},"end":{"line":30,"column":null}},"5":{"start":{"line":31,"column":54},"end":{"line":31,"column":null}},"6":{"start":{"line":33,"column":22},"end":{"line":33,"column":38}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":null}},"8":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}},"9":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},"10":{"start":{"line":42,"column":74},"end":{"line":42,"column":null}},"11":{"start":{"line":43,"column":4},"end":{"line":43,"column":null}},"12":{"start":{"line":43,"column":26},"end":{"line":43,"column":null}},"13":{"start":{"line":44,"column":4},"end":{"line":62,"column":null}},"14":{"start":{"line":45,"column":6},"end":{"line":61,"column":null}},"15":{"start":{"line":46,"column":52},"end":{"line":50,"column":null}},"16":{"start":{"line":51,"column":37},"end":{"line":56,"column":null}},"17":{"start":{"line":57,"column":8},"end":{"line":57,"column":null}},"18":{"start":{"line":58,"column":8},"end":{"line":58,"column":null}},"19":{"start":{"line":60,"column":8},"end":{"line":60,"column":null}},"20":{"start":{"line":63,"column":4},"end":{"line":63,"column":null}},"21":{"start":{"line":67,"column":4},"end":{"line":67,"column":null}},"22":{"start":{"line":67,"column":78},"end":{"line":67,"column":null}},"23":{"start":{"line":68,"column":4},"end":{"line":68,"column":null}},"24":{"start":{"line":68,"column":29},"end":{"line":68,"column":null}},"25":{"start":{"line":69,"column":4},"end":{"line":78,"column":null}},"26":{"start":{"line":70,"column":6},"end":{"line":77,"column":null}},"27":{"start":{"line":71,"column":20},"end":{"line":71,"column":null}},"28":{"start":{"line":72,"column":23},"end":{"line":72,"column":null}},"29":{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},"30":{"start":{"line":74,"column":8},"end":{"line":74,"column":null}},"31":{"start":{"line":76,"column":8},"end":{"line":76,"column":null}},"32":{"start":{"line":79,"column":4},"end":{"line":79,"column":null}},"33":{"start":{"line":83,"column":27},"end":{"line":83,"column":null}},"34":{"start":{"line":84,"column":21},"end":{"line":84,"column":null}},"35":{"start":{"line":84,"column":51},"end":{"line":84,"column":70}},"36":{"start":{"line":85,"column":23},"end":{"line":85,"column":null}},"37":{"start":{"line":85,"column":56},"end":{"line":85,"column":72}},"38":{"start":{"line":86,"column":23},"end":{"line":86,"column":null}},"39":{"start":{"line":86,"column":55},"end":{"line":86,"column":64}},"40":{"start":{"line":88,"column":4},"end":{"line":104,"column":null}},"41":{"start":{"line":89,"column":20},"end":{"line":89,"column":null}},"42":{"start":{"line":90,"column":21},"end":{"line":90,"column":null}},"43":{"start":{"line":91,"column":21},"end":{"line":91,"column":null}},"44":{"start":{"line":92,"column":6},"end":{"line":103,"column":null}}},"fnMap":{"0":{"name":"constructor","decl":{"start":{"line":33,"column":2},"end":{"line":33,"column":14}},"loc":{"start":{"line":33,"column":38},"end":{"line":33,"column":null}},"line":33},"1":{"name":"invalidate","decl":{"start":{"line":36,"column":2},"end":{"line":36,"column":21}},"loc":{"start":{"line":36,"column":21},"end":{"line":39,"column":null}},"line":36},"2":{"name":"registries","decl":{"start":{"line":41,"column":8},"end":{"line":41,"column":45}},"loc":{"start":{"line":41,"column":45},"end":{"line":64,"column":null}},"line":41},"3":{"name":"(anonymous_3)","decl":{"start":{"line":44,"column":24},"end":{"line":44,"column":36}},"loc":{"start":{"line":44,"column":36},"end":{"line":62,"column":5}},"line":44},"4":{"name":"states","decl":{"start":{"line":66,"column":8},"end":{"line":66,"column":37}},"loc":{"start":{"line":66,"column":37},"end":{"line":80,"column":null}},"line":66},"5":{"name":"(anonymous_5)","decl":{"start":{"line":69,"column":27},"end":{"line":69,"column":39}},"loc":{"start":{"line":69,"column":39},"end":{"line":78,"column":5}},"line":69},"6":{"name":"index","decl":{"start":{"line":82,"column":8},"end":{"line":82,"column":42}},"loc":{"start":{"line":82,"column":42},"end":{"line":105,"column":null}},"line":82},"7":{"name":"(anonymous_7)","decl":{"start":{"line":84,"column":40},"end":{"line":84,"column":45}},"loc":{"start":{"line":84,"column":51},"end":{"line":84,"column":70}},"line":84},"8":{"name":"(anonymous_8)","decl":{"start":{"line":85,"column":45},"end":{"line":85,"column":50}},"loc":{"start":{"line":85,"column":56},"end":{"line":85,"column":72}},"line":85},"9":{"name":"(anonymous_9)","decl":{"start":{"line":86,"column":44},"end":{"line":86,"column":49}},"loc":{"start":{"line":86,"column":55},"end":{"line":86,"column":64}},"line":86},"10":{"name":"(anonymous_10)","decl":{"start":{"line":88,"column":18},"end":{"line":88,"column":23}},"loc":{"start":{"line":88,"column":29},"end":{"line":104,"column":5}},"line":88}},"branchMap":{"0":{"loc":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},{"start":{},"end":{}}],"line":42},"1":{"loc":{"start":{"line":42,"column":8},"end":{"line":42,"column":74}},"type":"binary-expr","locations":[{"start":{"line":42,"column":8},"end":{"line":42,"column":25}},{"start":{"line":42,"column":25},"end":{"line":42,"column":74}}],"line":42},"2":{"loc":{"start":{"line":43,"column":4},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":43,"column":null}},{"start":{},"end":{}}],"line":43},"3":{"loc":{"start":{"line":67,"column":4},"end":{"line":67,"column":null}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":null}},{"start":{},"end":{}}],"line":67},"4":{"loc":{"start":{"line":67,"column":8},"end":{"line":67,"column":78}},"type":"binary-expr","locations":[{"start":{"line":67,"column":8},"end":{"line":67,"column":28}},{"start":{"line":67,"column":28},"end":{"line":67,"column":78}}],"line":67},"5":{"loc":{"start":{"line":68,"column":4},"end":{"line":68,"column":null}},"type":"if","locations":[{"start":{"line":68,"column":4},"end":{"line":68,"column":null}},{"start":{},"end":{}}],"line":68},"6":{"loc":{"start":{"line":90,"column":21},"end":{"line":90,"column":null}},"type":"cond-expr","locations":[{"start":{"line":90,"column":40},"end":{"line":90,"column":74}},{"start":{"line":90,"column":74},"end":{"line":90,"column":null}}],"line":90},"7":{"loc":{"start":{"line":91,"column":21},"end":{"line":91,"column":null}},"type":"binary-expr","locations":[{"start":{"line":91,"column":21},"end":{"line":91,"column":39}},{"start":{"line":91,"column":39},"end":{"line":91,"column":58}},{"start":{"line":91,"column":58},"end":{"line":91,"column":null}}],"line":91},"8":{"loc":{"start":{"line":94,"column":21},"end":{"line":94,"column":63}},"type":"binary-expr","locations":[{"start":{"line":94,"column":21},"end":{"line":94,"column":52}},{"start":{"line":94,"column":52},"end":{"line":94,"column":63}}],"line":94},"9":{"loc":{"start":{"line":95,"column":16},"end":{"line":95,"column":null}},"type":"binary-expr","locations":[{"start":{"line":95,"column":16},"end":{"line":95,"column":45}},{"start":{"line":95,"column":45},"end":{"line":95,"column":null}}],"line":95},"10":{"loc":{"start":{"line":97,"column":14},"end":{"line":97,"column":null}},"type":"cond-expr","locations":[{"start":{"line":97,"column":24},"end":{"line":97,"column":56}},{"start":{"line":97,"column":56},"end":{"line":97,"column":null}}],"line":97},"11":{"loc":{"start":{"line":97,"column":24},"end":{"line":97,"column":56}},"type":"binary-expr","locations":[{"start":{"line":97,"column":24},"end":{"line":97,"column":48}},{"start":{"line":97,"column":48},"end":{"line":97,"column":56}}],"line":97},"12":{"loc":{"start":{"line":98,"column":19},"end":{"line":98,"column":null}},"type":"binary-expr","locations":[{"start":{"line":98,"column":19},"end":{"line":98,"column":39}},{"start":{"line":98,"column":39},"end":{"line":98,"column":null}}],"line":98},"13":{"loc":{"start":{"line":101,"column":18},"end":{"line":101,"column":null}},"type":"binary-expr","locations":[{"start":{"line":101,"column":18},"end":{"line":101,"column":44}},{"start":{"line":101,"column":44},"end":{"line":101,"column":null}}],"line":101},"14":{"loc":{"start":{"line":102,"column":20},"end":{"line":102,"column":null}},"type":"binary-expr","locations":[{"start":{"line":102,"column":20},"end":{"line":102,"column":36}},{"start":{"line":102,"column":36},"end":{"line":102,"column":null}}],"line":102}},"s":{"0":2,"1":2,"2":5,"3":5,"4":5,"5":5,"6":5,"7":1,"8":1,"9":9,"10":1,"11":8,"12":2,"13":6,"14":6,"15":6,"16":6,"17":6,"18":6,"19":6,"20":6,"21":9,"22":1,"23":8,"24":2,"25":6,"26":6,"27":6,"28":6,"29":6,"30":6,"31":6,"32":6,"33":9,"34":8,"35":8,"36":8,"37":24,"38":8,"39":8,"40":8,"41":32,"42":32,"43":32,"44":32},"f":{"0":5,"1":1,"2":9,"3":6,"4":9,"5":6,"6":9,"7":8,"8":24,"9":8,"10":32},"b":{"0":[1,8],"1":[9,1],"2":[2,6],"3":[1,8],"4":[9,1],"5":[2,6],"6":[8,24],"7":[32,24,16],"8":[32,16],"9":[32,0],"10":[16,16],"11":[16,0],"12":[32,24],"13":[32,24],"14":[32,0]},"meta":{"lastBranch":15,"lastFunction":11,"lastStatement":45,"seen":{"s:5:24:5:Infinity":0,"s:12:22:12:Infinity":1,"s:28:43:28:Infinity":2,"s:29:55:29:Infinity":3,"s:30:66:30:Infinity":4,"s:31:54:31:Infinity":5,"f:33:2:33:14":0,"s:33:22:33:38":6,"f:36:2:36:21":1,"s:37:4:37:Infinity":7,"s:38:4:38:Infinity":8,"f:41:8:41:45":2,"b:42:4:42:Infinity:undefined:undefined:undefined:undefined":0,"s:42:4:42:Infinity":9,"b:42:8:42:25:42:25:42:74":1,"s:42:74:42:Infinity":10,"b:43:4:43:Infinity:undefined:undefined:undefined:undefined":2,"s:43:4:43:Infinity":11,"s:43:26:43:Infinity":12,"s:44:4:62:Infinity":13,"f:44:24:44:36":3,"s:45:6:61:Infinity":14,"s:46:52:50:Infinity":15,"s:51:37:56:Infinity":16,"s:57:8:57:Infinity":17,"s:58:8:58:Infinity":18,"s:60:8:60:Infinity":19,"s:63:4:63:Infinity":20,"f:66:8:66:37":4,"b:67:4:67:Infinity:undefined:undefined:undefined:undefined":3,"s:67:4:67:Infinity":21,"b:67:8:67:28:67:28:67:78":4,"s:67:78:67:Infinity":22,"b:68:4:68:Infinity:undefined:undefined:undefined:undefined":5,"s:68:4:68:Infinity":23,"s:68:29:68:Infinity":24,"s:69:4:78:Infinity":25,"f:69:27:69:39":5,"s:70:6:77:Infinity":26,"s:71:20:71:Infinity":27,"s:72:23:72:Infinity":28,"s:73:8:73:Infinity":29,"s:74:8:74:Infinity":30,"s:76:8:76:Infinity":31,"s:79:4:79:Infinity":32,"f:82:8:82:42":6,"s:83:27:83:Infinity":33,"s:84:21:84:Infinity":34,"f:84:40:84:45":7,"s:84:51:84:70":35,"s:85:23:85:Infinity":36,"f:85:45:85:50":8,"s:85:56:85:72":37,"s:86:23:86:Infinity":38,"f:86:44:86:49":9,"s:86:55:86:64":39,"s:88:4:104:Infinity":40,"f:88:18:88:23":10,"s:89:20:89:Infinity":41,"s:90:21:90:Infinity":42,"b:90:40:90:74:90:74:90:Infinity":6,"s:91:21:91:Infinity":43,"b:91:21:91:39:91:39:91:58:91:58:91:Infinity":7,"s:92:6:103:Infinity":44,"b:94:21:94:52:94:52:94:63":8,"b:95:16:95:45:95:45:95:Infinity":9,"b:97:24:97:56:97:56:97:Infinity":10,"b:97:24:97:48:97:48:97:56":11,"b:98:19:98:39:98:39:98:Infinity":12,"b:101:18:101:44:101:44:101:Infinity":13,"b:102:20:102:36:102:36:102:Infinity":14},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/http.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/http.ts","statementMap":{"0":{"start":{"line":5,"column":27},"end":{"line":5,"column":null}},"1":{"start":{"line":6,"column":28},"end":{"line":6,"column":null}},"2":{"start":{"line":8,"column":25},"end":{"line":8,"column":null}},"3":{"start":{"line":11,"column":2},"end":{"line":11,"column":null}},"4":{"start":{"line":11,"column":28},"end":{"line":11,"column":45}},"5":{"start":{"line":26,"column":22},"end":{"line":26,"column":40}},"6":{"start":{"line":29,"column":4},"end":{"line":29,"column":null}},"7":{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},"8":{"start":{"line":33,"column":34},"end":{"line":33,"column":null}},"9":{"start":{"line":34,"column":4},"end":{"line":34,"column":null}},"10":{"start":{"line":34,"column":27},"end":{"line":34,"column":null}},"11":{"start":{"line":35,"column":4},"end":{"line":35,"column":null}},"12":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"13":{"start":{"line":43,"column":4},"end":{"line":43,"column":null}},"14":{"start":{"line":44,"column":16},"end":{"line":52,"column":null}},"15":{"start":{"line":53,"column":4},"end":{"line":59,"column":null}},"16":{"start":{"line":54,"column":19},"end":{"line":54,"column":null}},"17":{"start":{"line":54,"column":48},"end":{"line":54,"column":50}},"18":{"start":{"line":55,"column":18},"end":{"line":55,"column":null}},"19":{"start":{"line":56,"column":6},"end":{"line":56,"column":null}},"20":{"start":{"line":57,"column":6},"end":{"line":57,"column":null}},"21":{"start":{"line":58,"column":6},"end":{"line":58,"column":null}},"22":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"23":{"start":{"line":64,"column":10},"end":{"line":64,"column":null}},"24":{"start":{"line":65,"column":4},"end":{"line":87,"column":null}},"25":{"start":{"line":66,"column":6},"end":{"line":66,"column":null}},"26":{"start":{"line":68,"column":41},"end":{"line":68,"column":null}},"27":{"start":{"line":69,"column":23},"end":{"line":69,"column":null}},"28":{"start":{"line":70,"column":22},"end":{"line":70,"column":null}},"29":{"start":{"line":71,"column":24},"end":{"line":71,"column":null}},"30":{"start":{"line":72,"column":6},"end":{"line":75,"column":null}},"31":{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},"32":{"start":{"line":73,"column":22},"end":{"line":73,"column":null}},"33":{"start":{"line":74,"column":8},"end":{"line":74,"column":null}},"34":{"start":{"line":76,"column":20},"end":{"line":76,"column":null}},"35":{"start":{"line":77,"column":6},"end":{"line":77,"column":null}},"36":{"start":{"line":78,"column":6},"end":{"line":78,"column":null}},"37":{"start":{"line":79,"column":6},"end":{"line":86,"column":null}},"38":{"start":{"line":80,"column":8},"end":{"line":80,"column":null}},"39":{"start":{"line":82,"column":8},"end":{"line":84,"column":null}},"40":{"start":{"line":83,"column":10},"end":{"line":83,"column":null}},"41":{"start":{"line":85,"column":8},"end":{"line":85,"column":null}},"42":{"start":{"line":91,"column":4},"end":{"line":91,"column":null}},"43":{"start":{"line":95,"column":4},"end":{"line":95,"column":null}},"44":{"start":{"line":99,"column":4},"end":{"line":104,"column":null}},"45":{"start":{"line":108,"column":4},"end":{"line":110,"column":null}},"46":{"start":{"line":109,"column":6},"end":{"line":109,"column":null}},"47":{"start":{"line":111,"column":4},"end":{"line":111,"column":null}},"48":{"start":{"line":116,"column":18},"end":{"line":116,"column":null}},"49":{"start":{"line":117,"column":17},"end":{"line":117,"column":null}},"50":{"start":{"line":118,"column":4},"end":{"line":118,"column":null}},"51":{"start":{"line":123,"column":18},"end":{"line":123,"column":null}},"52":{"start":{"line":124,"column":17},"end":{"line":129,"column":null}},"53":{"start":{"line":130,"column":4},"end":{"line":130,"column":null}}},"fnMap":{"0":{"name":"sleep","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":15}},"loc":{"start":{"line":10,"column":42},"end":{"line":12,"column":null}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":13},"end":{"line":11,"column":22}},"loc":{"start":{"line":11,"column":28},"end":{"line":11,"column":45}},"line":11},"2":{"name":"constructor","decl":{"start":{"line":26,"column":2},"end":{"line":26,"column":14}},"loc":{"start":{"line":26,"column":40},"end":{"line":26,"column":null}},"line":26},"3":{"name":"supervisorAvailable","decl":{"start":{"line":28,"column":6},"end":{"line":28,"column":37}},"loc":{"start":{"line":28,"column":37},"end":{"line":30,"column":null}},"line":28},"4":{"name":"coreBase","decl":{"start":{"line":32,"column":2},"end":{"line":32,"column":10}},"loc":{"start":{"line":32,"column":29},"end":{"line":36,"column":null}},"line":32},"5":{"name":"coreToken","decl":{"start":{"line":38,"column":2},"end":{"line":38,"column":10}},"loc":{"start":{"line":38,"column":30},"end":{"line":40,"column":null}},"line":38},"6":{"name":"attempt","decl":{"start":{"line":42,"column":16},"end":{"line":42,"column":24}},"loc":{"start":{"line":42,"column":102},"end":{"line":61,"column":null}},"line":42},"7":{"name":"(anonymous_7)","decl":{"start":{"line":54,"column":36},"end":{"line":54,"column":48}},"loc":{"start":{"line":54,"column":48},"end":{"line":54,"column":50}},"line":54},"8":{"name":"request","decl":{"start":{"line":63,"column":16},"end":{"line":63,"column":24}},"loc":{"start":{"line":63,"column":102},"end":{"line":88,"column":null}},"line":63},"9":{"name":"coreGet","decl":{"start":{"line":90,"column":2},"end":{"line":90,"column":10}},"loc":{"start":{"line":90,"column":38},"end":{"line":92,"column":null}},"line":90},"10":{"name":"coreGetText","decl":{"start":{"line":94,"column":2},"end":{"line":94,"column":14}},"loc":{"start":{"line":94,"column":45},"end":{"line":96,"column":null}},"line":94},"11":{"name":"corePostText","decl":{"start":{"line":98,"column":2},"end":{"line":98,"column":15}},"loc":{"start":{"line":98,"column":61},"end":{"line":105,"column":null}},"line":98},"12":{"name":"requireSupervisor","decl":{"start":{"line":107,"column":2},"end":{"line":107,"column":10}},"loc":{"start":{"line":107,"column":38},"end":{"line":112,"column":null}},"line":107},"13":{"name":"supervisorGet","decl":{"start":{"line":115,"column":8},"end":{"line":115,"column":22}},"loc":{"start":{"line":115,"column":50},"end":{"line":119,"column":null}},"line":115},"14":{"name":"supervisorPost","decl":{"start":{"line":122,"column":8},"end":{"line":122,"column":23}},"loc":{"start":{"line":122,"column":66},"end":{"line":131,"column":null}},"line":122}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},{"start":{},"end":{}}],"line":33},"1":{"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},"2":{"loc":{"start":{"line":39,"column":11},"end":{"line":39,"column":null}},"type":"binary-expr","locations":[{"start":{"line":39,"column":11},"end":{"line":39,"column":39}},{"start":{"line":39,"column":39},"end":{"line":39,"column":62}},{"start":{"line":39,"column":62},"end":{"line":39,"column":null}}],"line":39},"3":{"loc":{"start":{"line":43,"column":22},"end":{"line":43,"column":43}},"type":"binary-expr","locations":[{"start":{"line":43,"column":22},"end":{"line":43,"column":37}},{"start":{"line":43,"column":37},"end":{"line":43,"column":43}}],"line":43},"4":{"loc":{"start":{"line":50,"column":12},"end":{"line":50,"column":null}},"type":"binary-expr","locations":[{"start":{"line":50,"column":12},"end":{"line":50,"column":28}},{"start":{"line":50,"column":28},"end":{"line":50,"column":null}}],"line":50},"5":{"loc":{"start":{"line":53,"column":4},"end":{"line":59,"column":null}},"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":59,"column":null}},{"start":{},"end":{}}],"line":53},"6":{"loc":{"start":{"line":55,"column":51},"end":{"line":55,"column":89}},"type":"binary-expr","locations":[{"start":{"line":55,"column":51},"end":{"line":55,"column":73}},{"start":{"line":55,"column":73},"end":{"line":55,"column":89}}],"line":55},"7":{"loc":{"start":{"line":57,"column":34},"end":{"line":57,"column":null}},"type":"binary-expr","locations":[{"start":{"line":57,"column":34},"end":{"line":57,"column":83}},{"start":{"line":57,"column":83},"end":{"line":57,"column":null}}],"line":57},"8":{"loc":{"start":{"line":60,"column":11},"end":{"line":60,"column":null}},"type":"cond-expr","locations":[{"start":{"line":60,"column":20},"end":{"line":60,"column":33}},{"start":{"line":60,"column":33},"end":{"line":60,"column":null}}],"line":60},"9":{"loc":{"start":{"line":64,"column":24},"end":{"line":64,"column":50}},"type":"binary-expr","locations":[{"start":{"line":64,"column":24},"end":{"line":64,"column":39}},{"start":{"line":64,"column":39},"end":{"line":64,"column":50}}],"line":64},"10":{"loc":{"start":{"line":69,"column":23},"end":{"line":69,"column":null}},"type":"binary-expr","locations":[{"start":{"line":69,"column":23},"end":{"line":69,"column":53}},{"start":{"line":69,"column":53},"end":{"line":69,"column":null}}],"line":69},"11":{"loc":{"start":{"line":71,"column":24},"end":{"line":71,"column":null}},"type":"binary-expr","locations":[{"start":{"line":71,"column":24},"end":{"line":71,"column":39}},{"start":{"line":71,"column":39},"end":{"line":71,"column":51}},{"start":{"line":71,"column":51},"end":{"line":71,"column":62}},{"start":{"line":71,"column":62},"end":{"line":71,"column":null}}],"line":71},"12":{"loc":{"start":{"line":72,"column":6},"end":{"line":75,"column":null}},"type":"if","locations":[{"start":{"line":72,"column":6},"end":{"line":75,"column":null}},{"start":{},"end":{}}],"line":72},"13":{"loc":{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},"type":"if","locations":[{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},{"start":{},"end":{}}],"line":73},"14":{"loc":{"start":{"line":76,"column":29},"end":{"line":76,"column":69}},"type":"binary-expr","locations":[{"start":{"line":76,"column":29},"end":{"line":76,"column":48}},{"start":{"line":76,"column":48},"end":{"line":76,"column":69}}],"line":76},"15":{"loc":{"start":{"line":77,"column":51},"end":{"line":77,"column":107}},"type":"cond-expr","locations":[{"start":{"line":77,"column":62},"end":{"line":77,"column":74}},{"start":{"line":77,"column":74},"end":{"line":77,"column":107}}],"line":77},"16":{"loc":{"start":{"line":77,"column":83},"end":{"line":77,"column":107}},"type":"binary-expr","locations":[{"start":{"line":77,"column":83},"end":{"line":77,"column":93}},{"start":{"line":77,"column":93},"end":{"line":77,"column":107}}],"line":77},"17":{"loc":{"start":{"line":82,"column":8},"end":{"line":84,"column":null}},"type":"if","locations":[{"start":{"line":82,"column":8},"end":{"line":84,"column":null}},{"start":{},"end":{}}],"line":82},"18":{"loc":{"start":{"line":82,"column":12},"end":{"line":82,"column":70}},"type":"binary-expr","locations":[{"start":{"line":82,"column":12},"end":{"line":82,"column":43}},{"start":{"line":82,"column":43},"end":{"line":82,"column":70}}],"line":82},"19":{"loc":{"start":{"line":108,"column":4},"end":{"line":110,"column":null}},"type":"if","locations":[{"start":{"line":108,"column":4},"end":{"line":110,"column":null}},{"start":{},"end":{}}],"line":108},"20":{"loc":{"start":{"line":118,"column":11},"end":{"line":118,"column":null}},"type":"binary-expr","locations":[{"start":{"line":118,"column":11},"end":{"line":118,"column":25}},{"start":{"line":118,"column":25},"end":{"line":118,"column":null}}],"line":118},"21":{"loc":{"start":{"line":130,"column":11},"end":{"line":130,"column":null}},"type":"binary-expr","locations":[{"start":{"line":130,"column":11},"end":{"line":130,"column":25}},{"start":{"line":130,"column":25},"end":{"line":130,"column":null}}],"line":130}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":11,"6":1,"7":8,"8":1,"9":7,"10":7,"11":0,"12":8,"13":12,"14":12,"15":10,"16":3,"17":0,"18":3,"19":3,"20":3,"21":3,"22":7,"23":10,"24":10,"25":10,"26":4,"27":4,"28":4,"29":4,"30":4,"31":2,"32":0,"33":2,"34":2,"35":4,"36":4,"37":2,"38":2,"39":1,"40":1,"41":0,"42":6,"43":0,"44":2,"45":4,"46":2,"47":2,"48":2,"49":2,"50":1,"51":2,"52":2,"53":1},"f":{"0":2,"1":2,"2":11,"3":1,"4":8,"5":8,"6":12,"7":0,"8":10,"9":6,"10":0,"11":2,"12":4,"13":2,"14":2},"b":{"0":[1,7],"1":[7,0],"2":[8,7,0],"3":[12,0],"4":[12,12],"5":[3,7],"6":[3,0],"7":[3,3],"8":[1,6],"9":[10,0],"10":[4,3],"11":[4,3,2,2],"12":[2,2],"13":[0,2],"14":[2,2],"15":[1,1],"16":[1,0],"17":[1,0],"18":[1,0],"19":[2,2],"20":[1,0],"21":[1,1]},"meta":{"lastBranch":22,"lastFunction":15,"lastStatement":54,"seen":{"s:5:27:5:Infinity":0,"s:6:28:6:Infinity":1,"s:8:25:8:Infinity":2,"f:10:9:10:15":0,"s:11:2:11:Infinity":3,"f:11:13:11:22":1,"s:11:28:11:45":4,"f:26:2:26:14":2,"s:26:22:26:40":5,"f:28:6:28:37":3,"s:29:4:29:Infinity":6,"f:32:2:32:10":4,"b:33:4:33:Infinity:undefined:undefined:undefined:undefined":0,"s:33:4:33:Infinity":7,"s:33:34:33:Infinity":8,"b:34:4:34:Infinity:undefined:undefined:undefined:undefined":1,"s:34:4:34:Infinity":9,"s:34:27:34:Infinity":10,"s:35:4:35:Infinity":11,"f:38:2:38:10":5,"s:39:4:39:Infinity":12,"b:39:11:39:39:39:39:39:62:39:62:39:Infinity":2,"f:42:16:42:24":6,"s:43:4:43:Infinity":13,"b:43:22:43:37:43:37:43:43":3,"s:44:16:52:Infinity":14,"b:50:12:50:28:50:28:50:Infinity":4,"b:53:4:59:Infinity:undefined:undefined:undefined:undefined":5,"s:53:4:59:Infinity":15,"s:54:19:54:Infinity":16,"f:54:36:54:48":7,"s:54:48:54:50":17,"s:55:18:55:Infinity":18,"b:55:51:55:73:55:73:55:89":6,"s:56:6:56:Infinity":19,"s:57:6:57:Infinity":20,"b:57:34:57:83:57:83:57:Infinity":7,"s:58:6:58:Infinity":21,"s:60:4:60:Infinity":22,"b:60:20:60:33:60:33:60:Infinity":8,"f:63:16:63:24":8,"s:64:10:64:Infinity":23,"b:64:24:64:39:64:39:64:50":9,"s:65:4:87:Infinity":24,"s:66:6:66:Infinity":25,"s:68:41:68:Infinity":26,"s:69:23:69:Infinity":27,"b:69:23:69:53:69:53:69:Infinity":10,"s:70:22:70:Infinity":28,"s:71:24:71:Infinity":29,"b:71:24:71:39:71:39:71:51:71:51:71:62:71:62:71:Infinity":11,"b:72:6:75:Infinity:undefined:undefined:undefined:undefined":12,"s:72:6:75:Infinity":30,"b:73:8:73:Infinity:undefined:undefined:undefined:undefined":13,"s:73:8:73:Infinity":31,"s:73:22:73:Infinity":32,"s:74:8:74:Infinity":33,"s:76:20:76:Infinity":34,"b:76:29:76:48:76:48:76:69":14,"s:77:6:77:Infinity":35,"b:77:62:77:74:77:74:77:107":15,"b:77:83:77:93:77:93:77:107":16,"s:78:6:78:Infinity":36,"s:79:6:86:Infinity":37,"s:80:8:80:Infinity":38,"b:82:8:84:Infinity:undefined:undefined:undefined:undefined":17,"s:82:8:84:Infinity":39,"b:82:12:82:43:82:43:82:70":18,"s:83:10:83:Infinity":40,"s:85:8:85:Infinity":41,"f:90:2:90:10":9,"s:91:4:91:Infinity":42,"f:94:2:94:14":10,"s:95:4:95:Infinity":43,"f:98:2:98:15":11,"s:99:4:104:Infinity":44,"f:107:2:107:10":12,"b:108:4:110:Infinity:undefined:undefined:undefined:undefined":19,"s:108:4:110:Infinity":45,"s:109:6:109:Infinity":46,"s:111:4:111:Infinity":47,"f:115:8:115:22":13,"s:116:18:116:Infinity":48,"s:117:17:117:Infinity":49,"s:118:4:118:Infinity":50,"b:118:11:118:25:118:25:118:Infinity":20,"f:122:8:122:23":14,"s:123:18:123:Infinity":51,"s:124:17:129:Infinity":52,"s:130:4:130:Infinity":53,"b:130:11:130:25:130:25:130:Infinity":21},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/schemas.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/schemas.ts","statementMap":{"0":{"start":{"line":9,"column":29},"end":{"line":17,"column":null}},"1":{"start":{"line":19,"column":30},"end":{"line":19,"column":null}},"2":{"start":{"line":21,"column":26},"end":{"line":26,"column":null}},"3":{"start":{"line":28,"column":27},"end":{"line":28,"column":null}},"4":{"start":{"line":30,"column":28},"end":{"line":40,"column":null}},"5":{"start":{"line":42,"column":29},"end":{"line":42,"column":null}},"6":{"start":{"line":44,"column":33},"end":{"line":53,"column":null}},"7":{"start":{"line":55,"column":35},"end":{"line":55,"column":null}},"8":{"start":{"line":58,"column":30},"end":{"line":58,"column":null}},"9":{"start":{"line":62,"column":17},"end":{"line":62,"column":null}},"10":{"start":{"line":63,"column":2},"end":{"line":63,"column":null}},"11":{"start":{"line":63,"column":22},"end":{"line":63,"column":null}},"12":{"start":{"line":64,"column":16},"end":{"line":64,"column":null}},"13":{"start":{"line":65,"column":16},"end":{"line":65,"column":null}},"14":{"start":{"line":66,"column":2},"end":{"line":69,"column":null}}},"fnMap":{"0":{"name":"parseHaPayload","decl":{"start":{"line":61,"column":16},"end":{"line":61,"column":52}},"loc":{"start":{"line":61,"column":108},"end":{"line":70,"column":null}},"line":61}},"branchMap":{"0":{"loc":{"start":{"line":63,"column":2},"end":{"line":63,"column":null}},"type":"if","locations":[{"start":{"line":63,"column":2},"end":{"line":63,"column":null}},{"start":{},"end":{}}],"line":63},"1":{"loc":{"start":{"line":65,"column":16},"end":{"line":65,"column":null}},"type":"cond-expr","locations":[{"start":{"line":65,"column":49},"end":{"line":65,"column":81}},{"start":{"line":65,"column":81},"end":{"line":65,"column":null}}],"line":65},"2":{"loc":{"start":{"line":65,"column":16},"end":{"line":65,"column":49}},"type":"binary-expr","locations":[{"start":{"line":65,"column":16},"end":{"line":65,"column":25}},{"start":{"line":65,"column":25},"end":{"line":65,"column":49}}],"line":65},"3":{"loc":{"start":{"line":67,"column":65},"end":{"line":67,"column":102}},"type":"binary-expr","locations":[{"start":{"line":67,"column":65},"end":{"line":67,"column":83}},{"start":{"line":67,"column":83},"end":{"line":67,"column":102}}],"line":67}},"s":{"0":3,"1":3,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":3,"9":28,"10":28,"11":27,"12":1,"13":1,"14":28},"f":{"0":28},"b":{"0":[27,1],"1":[0,1],"2":[1,1],"3":[28,0]},"meta":{"lastBranch":4,"lastFunction":1,"lastStatement":15,"seen":{"s:9:29:17:Infinity":0,"s:19:30:19:Infinity":1,"s:21:26:26:Infinity":2,"s:28:27:28:Infinity":3,"s:30:28:40:Infinity":4,"s:42:29:42:Infinity":5,"s:44:33:53:Infinity":6,"s:55:35:55:Infinity":7,"s:58:30:58:Infinity":8,"f:61:16:61:52":0,"s:62:17:62:Infinity":9,"b:63:2:63:Infinity:undefined:undefined:undefined:undefined":0,"s:63:2:63:Infinity":10,"s:63:22:63:Infinity":11,"s:64:16:64:Infinity":12,"s:65:16:65:Infinity":13,"b:65:49:65:81:65:81:65:Infinity":1,"b:65:16:65:25:65:25:65:49":2,"s:66:2:69:Infinity":14,"b:67:65:67:83:67:83:67:102":3},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/ws.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/ws.ts","statementMap":{"0":{"start":{"line":17,"column":25},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":25},"end":{"line":18,"column":null}},"2":{"start":{"line":20,"column":32},"end":{"line":20,"column":null}},"3":{"start":{"line":21,"column":31},"end":{"line":21,"column":null}},"4":{"start":{"line":23,"column":29},"end":{"line":23,"column":null}},"5":{"start":{"line":24,"column":25},"end":{"line":24,"column":null}},"6":{"start":{"line":25,"column":27},"end":{"line":25,"column":null}},"7":{"start":{"line":35,"column":33},"end":{"line":35,"column":null}},"8":{"start":{"line":36,"column":19},"end":{"line":36,"column":null}},"9":{"start":{"line":37,"column":20},"end":{"line":37,"column":null}},"10":{"start":{"line":38,"column":30},"end":{"line":38,"column":null}},"11":{"start":{"line":39,"column":19},"end":{"line":39,"column":null}},"12":{"start":{"line":40,"column":20},"end":{"line":40,"column":null}},"13":{"start":{"line":41,"column":20},"end":{"line":41,"column":null}},"14":{"start":{"line":42,"column":45},"end":{"line":42,"column":null}},"15":{"start":{"line":43,"column":45},"end":{"line":43,"column":null}},"16":{"start":{"line":44,"column":50},"end":{"line":44,"column":null}},"17":{"start":{"line":45,"column":29},"end":{"line":45,"column":null}},"18":{"start":{"line":47,"column":42},"end":{"line":47,"column":null}},"19":{"start":{"line":48,"column":48},"end":{"line":48,"column":null}},"20":{"start":{"line":50,"column":22},"end":{"line":50,"column":40}},"21":{"start":{"line":54,"column":4},"end":{"line":54,"column":null}},"22":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"23":{"start":{"line":63,"column":4},"end":{"line":63,"column":null}},"24":{"start":{"line":67,"column":4},"end":{"line":67,"column":null}},"25":{"start":{"line":67,"column":34},"end":{"line":67,"column":null}},"26":{"start":{"line":68,"column":4},"end":{"line":70,"column":null}},"27":{"start":{"line":69,"column":6},"end":{"line":69,"column":null}},"28":{"start":{"line":71,"column":4},"end":{"line":71,"column":null}},"29":{"start":{"line":75,"column":4},"end":{"line":75,"column":null}},"30":{"start":{"line":79,"column":4},"end":{"line":79,"column":null}},"31":{"start":{"line":79,"column":22},"end":{"line":79,"column":null}},"32":{"start":{"line":81,"column":4},"end":{"line":89,"column":null}},"33":{"start":{"line":82,"column":6},"end":{"line":82,"column":null}},"34":{"start":{"line":86,"column":6},"end":{"line":86,"column":null}},"35":{"start":{"line":87,"column":6},"end":{"line":87,"column":null}},"36":{"start":{"line":88,"column":6},"end":{"line":88,"column":null}},"37":{"start":{"line":90,"column":4},"end":{"line":90,"column":null}},"38":{"start":{"line":91,"column":15},"end":{"line":91,"column":null}},"39":{"start":{"line":92,"column":4},"end":{"line":92,"column":null}},"40":{"start":{"line":97,"column":4},"end":{"line":97,"column":null}},"41":{"start":{"line":97,"column":24},"end":{"line":97,"column":null}},"42":{"start":{"line":98,"column":4},"end":{"line":103,"column":null}},"43":{"start":{"line":99,"column":6},"end":{"line":102,"column":null}},"44":{"start":{"line":100,"column":8},"end":{"line":100,"column":null}},"45":{"start":{"line":101,"column":8},"end":{"line":101,"column":null}},"46":{"start":{"line":105,"column":4},"end":{"line":107,"column":null}},"47":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"48":{"start":{"line":106,"column":26},"end":{"line":106,"column":null}},"49":{"start":{"line":108,"column":4},"end":{"line":108,"column":null}},"50":{"start":{"line":108,"column":25},"end":{"line":108,"column":62}},"51":{"start":{"line":109,"column":4},"end":{"line":112,"column":null}},"52":{"start":{"line":110,"column":6},"end":{"line":110,"column":null}},"53":{"start":{"line":116,"column":4},"end":{"line":116,"column":null}},"54":{"start":{"line":117,"column":4},"end":{"line":117,"column":null}},"55":{"start":{"line":117,"column":24},"end":{"line":117,"column":null}},"56":{"start":{"line":118,"column":4},"end":{"line":118,"column":null}},"57":{"start":{"line":118,"column":24},"end":{"line":118,"column":null}},"58":{"start":{"line":119,"column":4},"end":{"line":119,"column":null}},"59":{"start":{"line":119,"column":29},"end":{"line":119,"column":null}},"60":{"start":{"line":120,"column":4},"end":{"line":120,"column":null}},"61":{"start":{"line":121,"column":4},"end":{"line":121,"column":null}},"62":{"start":{"line":122,"column":4},"end":{"line":122,"column":null}},"63":{"start":{"line":123,"column":4},"end":{"line":123,"column":null}},"64":{"start":{"line":132,"column":4},"end":{"line":132,"column":null}},"65":{"start":{"line":133,"column":4},"end":{"line":133,"column":null}},"66":{"start":{"line":137,"column":4},"end":{"line":137,"column":null}},"67":{"start":{"line":137,"column":21},"end":{"line":137,"column":null}},"68":{"start":{"line":138,"column":4},"end":{"line":144,"column":null}},"69":{"start":{"line":139,"column":20},"end":{"line":142,"column":null}},"70":{"start":{"line":140,"column":8},"end":{"line":140,"column":null}},"71":{"start":{"line":140,"column":50},"end":{"line":140,"column":67}},"72":{"start":{"line":141,"column":8},"end":{"line":141,"column":null}},"73":{"start":{"line":143,"column":6},"end":{"line":143,"column":null}},"74":{"start":{"line":143,"column":41},"end":{"line":143,"column":52}},"75":{"start":{"line":148,"column":15},"end":{"line":148,"column":null}},"76":{"start":{"line":149,"column":4},"end":{"line":151,"column":null}},"77":{"start":{"line":150,"column":6},"end":{"line":150,"column":null}},"78":{"start":{"line":152,"column":15},"end":{"line":152,"column":null}},"79":{"start":{"line":153,"column":4},"end":{"line":153,"column":null}},"80":{"start":{"line":154,"column":4},"end":{"line":167,"column":null}},"81":{"start":{"line":155,"column":20},"end":{"line":158,"column":null}},"82":{"start":{"line":156,"column":8},"end":{"line":156,"column":null}},"83":{"start":{"line":157,"column":8},"end":{"line":157,"column":null}},"84":{"start":{"line":159,"column":6},"end":{"line":159,"column":null}},"85":{"start":{"line":160,"column":6},"end":{"line":166,"column":null}},"86":{"start":{"line":161,"column":8},"end":{"line":161,"column":null}},"87":{"start":{"line":163,"column":8},"end":{"line":163,"column":null}},"88":{"start":{"line":164,"column":8},"end":{"line":164,"column":null}},"89":{"start":{"line":165,"column":8},"end":{"line":165,"column":null}},"90":{"start":{"line":172,"column":4},"end":{"line":176,"column":null}},"91":{"start":{"line":173,"column":6},"end":{"line":173,"column":null}},"92":{"start":{"line":175,"column":6},"end":{"line":175,"column":null}},"93":{"start":{"line":177,"column":4},"end":{"line":177,"column":null}},"94":{"start":{"line":178,"column":4},"end":{"line":232,"column":null}},"95":{"start":{"line":180,"column":8},"end":{"line":180,"column":null}},"96":{"start":{"line":181,"column":8},"end":{"line":181,"column":null}},"97":{"start":{"line":183,"column":8},"end":{"line":183,"column":null}},"98":{"start":{"line":184,"column":8},"end":{"line":184,"column":null}},"99":{"start":{"line":185,"column":8},"end":{"line":185,"column":null}},"100":{"start":{"line":186,"column":8},"end":{"line":186,"column":null}},"101":{"start":{"line":187,"column":8},"end":{"line":190,"column":null}},"102":{"start":{"line":188,"column":10},"end":{"line":188,"column":null}},"103":{"start":{"line":189,"column":10},"end":{"line":189,"column":null}},"104":{"start":{"line":191,"column":8},"end":{"line":191,"column":null}},"105":{"start":{"line":192,"column":8},"end":{"line":195,"column":null}},"106":{"start":{"line":193,"column":10},"end":{"line":193,"column":null}},"107":{"start":{"line":194,"column":10},"end":{"line":194,"column":null}},"108":{"start":{"line":196,"column":8},"end":{"line":202,"column":null}},"109":{"start":{"line":197,"column":10},"end":{"line":201,"column":null}},"110":{"start":{"line":198,"column":12},"end":{"line":198,"column":null}},"111":{"start":{"line":203,"column":8},"end":{"line":203,"column":null}},"112":{"start":{"line":204,"column":8},"end":{"line":204,"column":null}},"113":{"start":{"line":206,"column":8},"end":{"line":206,"column":null}},"114":{"start":{"line":207,"column":8},"end":{"line":209,"column":null}},"115":{"start":{"line":212,"column":8},"end":{"line":212,"column":null}},"116":{"start":{"line":214,"column":8},"end":{"line":214,"column":null}},"117":{"start":{"line":214,"column":40},"end":{"line":214,"column":null}},"118":{"start":{"line":215,"column":18},"end":{"line":215,"column":null}},"119":{"start":{"line":216,"column":8},"end":{"line":216,"column":null}},"120":{"start":{"line":216,"column":16},"end":{"line":216,"column":null}},"121":{"start":{"line":217,"column":8},"end":{"line":229,"column":null}},"122":{"start":{"line":218,"column":10},"end":{"line":218,"column":null}},"123":{"start":{"line":219,"column":10},"end":{"line":219,"column":null}},"124":{"start":{"line":220,"column":10},"end":{"line":224,"column":null}},"125":{"start":{"line":220,"column":27},"end":{"line":220,"column":null}},"126":{"start":{"line":222,"column":12},"end":{"line":222,"column":null}},"127":{"start":{"line":223,"column":12},"end":{"line":223,"column":null}},"128":{"start":{"line":225,"column":15},"end":{"line":229,"column":null}},"129":{"start":{"line":226,"column":10},"end":{"line":226,"column":null}},"130":{"start":{"line":227,"column":10},"end":{"line":227,"column":null}},"131":{"start":{"line":228,"column":10},"end":{"line":228,"column":null}},"132":{"start":{"line":236,"column":4},"end":{"line":236,"column":null}},"133":{"start":{"line":236,"column":24},"end":{"line":236,"column":null}},"134":{"start":{"line":237,"column":4},"end":{"line":243,"column":null}},"135":{"start":{"line":238,"column":6},"end":{"line":238,"column":null}},"136":{"start":{"line":238,"column":36},"end":{"line":238,"column":null}},"137":{"start":{"line":239,"column":6},"end":{"line":242,"column":null}},"138":{"start":{"line":240,"column":8},"end":{"line":240,"column":null}},"139":{"start":{"line":241,"column":8},"end":{"line":241,"column":null}},"140":{"start":{"line":247,"column":4},"end":{"line":247,"column":null}},"141":{"start":{"line":247,"column":45},"end":{"line":247,"column":null}},"142":{"start":{"line":248,"column":16},"end":{"line":248,"column":null}},"143":{"start":{"line":249,"column":4},"end":{"line":256,"column":null}},"144":{"start":{"line":250,"column":6},"end":{"line":250,"column":null}},"145":{"start":{"line":251,"column":6},"end":{"line":253,"column":null}},"146":{"start":{"line":255,"column":6},"end":{"line":255,"column":null}},"147":{"start":{"line":257,"column":4},"end":{"line":260,"column":null}},"148":{"start":{"line":258,"column":6},"end":{"line":258,"column":null}},"149":{"start":{"line":259,"column":6},"end":{"line":259,"column":null}},"150":{"start":{"line":261,"column":4},"end":{"line":261,"column":null}},"151":{"start":{"line":267,"column":4},"end":{"line":267,"column":null}},"152":{"start":{"line":267,"column":24},"end":{"line":267,"column":null}},"153":{"start":{"line":268,"column":4},"end":{"line":271,"column":null}},"154":{"start":{"line":269,"column":6},"end":{"line":269,"column":null}},"155":{"start":{"line":270,"column":6},"end":{"line":270,"column":null}},"156":{"start":{"line":272,"column":4},"end":{"line":275,"column":null}},"157":{"start":{"line":273,"column":6},"end":{"line":273,"column":null}},"158":{"start":{"line":274,"column":6},"end":{"line":274,"column":null}},"159":{"start":{"line":276,"column":4},"end":{"line":276,"column":null}},"160":{"start":{"line":277,"column":4},"end":{"line":277,"column":null}},"161":{"start":{"line":277,"column":38},"end":{"line":277,"column":null}},"162":{"start":{"line":278,"column":4},"end":{"line":278,"column":null}},"163":{"start":{"line":279,"column":4},"end":{"line":282,"column":null}},"164":{"start":{"line":280,"column":6},"end":{"line":280,"column":null}},"165":{"start":{"line":281,"column":6},"end":{"line":281,"column":null}},"166":{"start":{"line":283,"column":4},"end":{"line":283,"column":null}},"167":{"start":{"line":286,"column":4},"end":{"line":289,"column":null}},"168":{"start":{"line":287,"column":6},"end":{"line":287,"column":null}},"169":{"start":{"line":288,"column":6},"end":{"line":288,"column":null}},"170":{"start":{"line":290,"column":4},"end":{"line":290,"column":null}},"171":{"start":{"line":290,"column":22},"end":{"line":290,"column":null}},"172":{"start":{"line":291,"column":4},"end":{"line":291,"column":null}}},"fnMap":{"0":{"name":"constructor","decl":{"start":{"line":50,"column":2},"end":{"line":50,"column":14}},"loc":{"start":{"line":50,"column":40},"end":{"line":50,"column":null}},"line":50},"1":{"name":"onConnect","decl":{"start":{"line":53,"column":2},"end":{"line":53,"column":12}},"loc":{"start":{"line":53,"column":34},"end":{"line":55,"column":null}},"line":53},"2":{"name":"connected","decl":{"start":{"line":57,"column":6},"end":{"line":57,"column":27}},"loc":{"start":{"line":57,"column":27},"end":{"line":59,"column":null}},"line":57},"3":{"name":"disconnectedForMs","decl":{"start":{"line":62,"column":2},"end":{"line":62,"column":37}},"loc":{"start":{"line":62,"column":37},"end":{"line":64,"column":null}},"line":62},"4":{"name":"url","decl":{"start":{"line":66,"column":2},"end":{"line":66,"column":10}},"loc":{"start":{"line":66,"column":24},"end":{"line":72,"column":null}},"line":66},"5":{"name":"token","decl":{"start":{"line":74,"column":2},"end":{"line":74,"column":10}},"loc":{"start":{"line":74,"column":26},"end":{"line":76,"column":null}},"line":74},"6":{"name":"connect","decl":{"start":{"line":78,"column":2},"end":{"line":78,"column":18}},"loc":{"start":{"line":78,"column":18},"end":{"line":113,"column":null}},"line":78},"7":{"name":"(anonymous_7)","decl":{"start":{"line":98,"column":21},"end":{"line":98,"column":38}},"loc":{"start":{"line":98,"column":38},"end":{"line":103,"column":7}},"line":98},"8":{"name":"(anonymous_8)","decl":{"start":{"line":105,"column":10},"end":{"line":105,"column":22}},"loc":{"start":{"line":105,"column":30},"end":{"line":107,"column":5}},"line":105},"9":{"name":"(anonymous_9)","decl":{"start":{"line":108,"column":10},"end":{"line":108,"column":25}},"loc":{"start":{"line":108,"column":25},"end":{"line":108,"column":62}},"line":108},"10":{"name":"(anonymous_10)","decl":{"start":{"line":109,"column":10},"end":{"line":109,"column":20}},"loc":{"start":{"line":109,"column":28},"end":{"line":112,"column":5}},"line":109},"11":{"name":"shutdown","decl":{"start":{"line":115,"column":2},"end":{"line":115,"column":19}},"loc":{"start":{"line":115,"column":19},"end":{"line":124,"column":null}},"line":115},"12":{"name":"send","decl":{"start":{"line":127,"column":8},"end":{"line":127,"column":null}},"loc":{"start":{"line":131,"column":18},"end":{"line":134,"column":null}},"line":131},"13":{"name":"ready","decl":{"start":{"line":136,"column":2},"end":{"line":136,"column":10}},"loc":{"start":{"line":136,"column":51},"end":{"line":145,"column":null}},"line":136},"14":{"name":"(anonymous_14)","decl":{"start":{"line":138,"column":15},"end":{"line":138,"column":24}},"loc":{"start":{"line":138,"column":44},"end":{"line":144,"column":5}},"line":138},"15":{"name":"(anonymous_15)","decl":{"start":{"line":139,"column":20},"end":{"line":139,"column":37}},"loc":{"start":{"line":139,"column":37},"end":{"line":142,"column":9}},"line":139},"16":{"name":"(anonymous_16)","decl":{"start":{"line":140,"column":36},"end":{"line":140,"column":44}},"loc":{"start":{"line":140,"column":50},"end":{"line":140,"column":67}},"line":140},"17":{"name":"(anonymous_17)","decl":{"start":{"line":143,"column":26},"end":{"line":143,"column":41}},"loc":{"start":{"line":143,"column":41},"end":{"line":143,"column":52}},"line":143},"18":{"name":"raw","decl":{"start":{"line":147,"column":2},"end":{"line":147,"column":10}},"loc":{"start":{"line":147,"column":99},"end":{"line":168,"column":null}},"line":147},"19":{"name":"(anonymous_19)","decl":{"start":{"line":154,"column":15},"end":{"line":154,"column":24}},"loc":{"start":{"line":154,"column":44},"end":{"line":167,"column":5}},"line":154},"20":{"name":"(anonymous_20)","decl":{"start":{"line":155,"column":20},"end":{"line":155,"column":37}},"loc":{"start":{"line":155,"column":37},"end":{"line":158,"column":9}},"line":155},"21":{"name":"onMessage","decl":{"start":{"line":170,"column":2},"end":{"line":170,"column":10}},"loc":{"start":{"line":170,"column":42},"end":{"line":233,"column":null}},"line":170},"22":{"name":"startPing","decl":{"start":{"line":235,"column":2},"end":{"line":235,"column":10}},"loc":{"start":{"line":235,"column":28},"end":{"line":244,"column":null}},"line":235},"23":{"name":"(anonymous_23)","decl":{"start":{"line":237,"column":21},"end":{"line":237,"column":39}},"loc":{"start":{"line":237,"column":39},"end":{"line":243,"column":7}},"line":237},"24":{"name":"(anonymous_24)","decl":{"start":{"line":239,"column":34},"end":{"line":239,"column":46}},"loc":{"start":{"line":239,"column":46},"end":{"line":242,"column":7}},"line":239},"25":{"name":"scheduleReconnect","decl":{"start":{"line":246,"column":2},"end":{"line":246,"column":10}},"loc":{"start":{"line":246,"column":47},"end":{"line":262,"column":null}},"line":246},"26":{"name":"(anonymous_26)","decl":{"start":{"line":257,"column":26},"end":{"line":257,"column":43}},"loc":{"start":{"line":257,"column":43},"end":{"line":260,"column":7}},"line":257},"27":{"name":"onClose","decl":{"start":{"line":264,"column":2},"end":{"line":264,"column":10}},"loc":{"start":{"line":264,"column":52},"end":{"line":292,"column":null}},"line":264}},"branchMap":{"0":{"loc":{"start":{"line":63,"column":11},"end":{"line":63,"column":null}},"type":"cond-expr","locations":[{"start":{"line":63,"column":42},"end":{"line":63,"column":49}},{"start":{"line":63,"column":49},"end":{"line":63,"column":null}}],"line":63},"1":{"loc":{"start":{"line":67,"column":4},"end":{"line":67,"column":null}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":null}},{"start":{},"end":{}}],"line":67},"2":{"loc":{"start":{"line":68,"column":4},"end":{"line":70,"column":null}},"type":"if","locations":[{"start":{"line":68,"column":4},"end":{"line":70,"column":null}},{"start":{},"end":{}}],"line":68},"3":{"loc":{"start":{"line":75,"column":11},"end":{"line":75,"column":null}},"type":"binary-expr","locations":[{"start":{"line":75,"column":11},"end":{"line":75,"column":39}},{"start":{"line":75,"column":39},"end":{"line":75,"column":62}},{"start":{"line":75,"column":62},"end":{"line":75,"column":null}}],"line":75},"4":{"loc":{"start":{"line":79,"column":4},"end":{"line":79,"column":null}},"type":"if","locations":[{"start":{"line":79,"column":4},"end":{"line":79,"column":null}},{"start":{},"end":{}}],"line":79},"5":{"loc":{"start":{"line":86,"column":23},"end":{"line":86,"column":57}},"type":"cond-expr","locations":[{"start":{"line":86,"column":44},"end":{"line":86,"column":56}},{"start":{"line":86,"column":56},"end":{"line":86,"column":57}}],"line":86},"6":{"loc":{"start":{"line":97,"column":4},"end":{"line":97,"column":null}},"type":"if","locations":[{"start":{"line":97,"column":4},"end":{"line":97,"column":null}},{"start":{},"end":{}}],"line":97},"7":{"loc":{"start":{"line":99,"column":6},"end":{"line":102,"column":null}},"type":"if","locations":[{"start":{"line":99,"column":6},"end":{"line":102,"column":null}},{"start":{},"end":{}}],"line":99},"8":{"loc":{"start":{"line":99,"column":10},"end":{"line":99,"column":42}},"type":"binary-expr","locations":[{"start":{"line":99,"column":10},"end":{"line":99,"column":26}},{"start":{"line":99,"column":26},"end":{"line":99,"column":42}}],"line":99},"9":{"loc":{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},"type":"if","locations":[{"start":{"line":106,"column":6},"end":{"line":106,"column":null}},{"start":{},"end":{}}],"line":106},"10":{"loc":{"start":{"line":117,"column":4},"end":{"line":117,"column":null}},"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":117,"column":null}},{"start":{},"end":{}}],"line":117},"11":{"loc":{"start":{"line":118,"column":4},"end":{"line":118,"column":null}},"type":"if","locations":[{"start":{"line":118,"column":4},"end":{"line":118,"column":null}},{"start":{},"end":{}}],"line":118},"12":{"loc":{"start":{"line":119,"column":4},"end":{"line":119,"column":null}},"type":"if","locations":[{"start":{"line":119,"column":4},"end":{"line":119,"column":null}},{"start":{},"end":{}}],"line":119},"13":{"loc":{"start":{"line":129,"column":4},"end":{"line":129,"column":null}},"type":"default-arg","locations":[{"start":{"line":129,"column":39},"end":{"line":129,"column":null}}],"line":129},"14":{"loc":{"start":{"line":130,"column":4},"end":{"line":130,"column":null}},"type":"default-arg","locations":[{"start":{"line":130,"column":24},"end":{"line":130,"column":null}}],"line":130},"15":{"loc":{"start":{"line":136,"column":16},"end":{"line":136,"column":51}},"type":"default-arg","locations":[{"start":{"line":136,"column":28},"end":{"line":136,"column":51}}],"line":136},"16":{"loc":{"start":{"line":137,"column":4},"end":{"line":137,"column":null}},"type":"if","locations":[{"start":{"line":137,"column":4},"end":{"line":137,"column":null}},{"start":{},"end":{}}],"line":137},"17":{"loc":{"start":{"line":149,"column":4},"end":{"line":151,"column":null}},"type":"if","locations":[{"start":{"line":149,"column":4},"end":{"line":151,"column":null}},{"start":{},"end":{}}],"line":149},"18":{"loc":{"start":{"line":149,"column":8},"end":{"line":149,"column":49}},"type":"binary-expr","locations":[{"start":{"line":149,"column":8},"end":{"line":149,"column":15}},{"start":{"line":149,"column":15},"end":{"line":149,"column":49}}],"line":149},"19":{"loc":{"start":{"line":165,"column":15},"end":{"line":165,"column":60}},"type":"cond-expr","locations":[{"start":{"line":165,"column":36},"end":{"line":165,"column":40}},{"start":{"line":165,"column":40},"end":{"line":165,"column":60}}],"line":165},"20":{"loc":{"start":{"line":177,"column":41},"end":{"line":177,"column":57}},"type":"binary-expr","locations":[{"start":{"line":177,"column":41},"end":{"line":177,"column":53}},{"start":{"line":177,"column":53},"end":{"line":177,"column":57}}],"line":177},"21":{"loc":{"start":{"line":177,"column":63},"end":{"line":177,"column":77}},"type":"binary-expr","locations":[{"start":{"line":177,"column":63},"end":{"line":177,"column":73}},{"start":{"line":177,"column":73},"end":{"line":177,"column":77}}],"line":177},"22":{"loc":{"start":{"line":178,"column":4},"end":{"line":232,"column":null}},"type":"switch","locations":[{"start":{"line":179,"column":6},"end":{"line":181,"column":null}},{"start":{"line":182,"column":6},"end":{"line":204,"column":null}},{"start":{"line":205,"column":6},"end":{"line":212,"column":null}},{"start":{"line":213,"column":6},"end":{"line":231,"column":null}}],"line":178},"23":{"loc":{"start":{"line":187,"column":8},"end":{"line":190,"column":null}},"type":"if","locations":[{"start":{"line":187,"column":8},"end":{"line":190,"column":null}},{"start":{},"end":{}}],"line":187},"24":{"loc":{"start":{"line":191,"column":54},"end":{"line":191,"column":77}},"type":"binary-expr","locations":[{"start":{"line":191,"column":54},"end":{"line":191,"column":72}},{"start":{"line":191,"column":72},"end":{"line":191,"column":77}}],"line":191},"25":{"loc":{"start":{"line":208,"column":84},"end":{"line":208,"column":null}},"type":"binary-expr","locations":[{"start":{"line":208,"column":84},"end":{"line":208,"column":99}},{"start":{"line":208,"column":99},"end":{"line":208,"column":null}}],"line":208},"26":{"loc":{"start":{"line":214,"column":8},"end":{"line":214,"column":null}},"type":"if","locations":[{"start":{"line":214,"column":8},"end":{"line":214,"column":null}},{"start":{},"end":{}}],"line":214},"27":{"loc":{"start":{"line":216,"column":8},"end":{"line":216,"column":null}},"type":"if","locations":[{"start":{"line":216,"column":8},"end":{"line":216,"column":null}},{"start":{},"end":{}}],"line":216},"28":{"loc":{"start":{"line":217,"column":8},"end":{"line":229,"column":null}},"type":"if","locations":[{"start":{"line":217,"column":8},"end":{"line":229,"column":null}},{"start":{"line":225,"column":15},"end":{"line":229,"column":null}}],"line":217},"29":{"loc":{"start":{"line":220,"column":10},"end":{"line":224,"column":null}},"type":"if","locations":[{"start":{"line":220,"column":10},"end":{"line":224,"column":null}},{"start":{"line":221,"column":15},"end":{"line":224,"column":null}}],"line":220},"30":{"loc":{"start":{"line":222,"column":57},"end":{"line":222,"column":96}},"type":"binary-expr","locations":[{"start":{"line":222,"column":57},"end":{"line":222,"column":79}},{"start":{"line":222,"column":79},"end":{"line":222,"column":96}}],"line":222},"31":{"loc":{"start":{"line":223,"column":31},"end":{"line":223,"column":75}},"type":"binary-expr","locations":[{"start":{"line":223,"column":31},"end":{"line":223,"column":53}},{"start":{"line":223,"column":53},"end":{"line":223,"column":75}}],"line":223},"32":{"loc":{"start":{"line":225,"column":15},"end":{"line":229,"column":null}},"type":"if","locations":[{"start":{"line":225,"column":15},"end":{"line":229,"column":null}},{"start":{},"end":{}}],"line":225},"33":{"loc":{"start":{"line":236,"column":4},"end":{"line":236,"column":null}},"type":"if","locations":[{"start":{"line":236,"column":4},"end":{"line":236,"column":null}},{"start":{},"end":{}}],"line":236},"34":{"loc":{"start":{"line":238,"column":6},"end":{"line":238,"column":null}},"type":"if","locations":[{"start":{"line":238,"column":6},"end":{"line":238,"column":null}},{"start":{},"end":{}}],"line":238},"35":{"loc":{"start":{"line":238,"column":10},"end":{"line":238,"column":36}},"type":"binary-expr","locations":[{"start":{"line":238,"column":10},"end":{"line":238,"column":26}},{"start":{"line":238,"column":26},"end":{"line":238,"column":36}}],"line":238},"36":{"loc":{"start":{"line":247,"column":4},"end":{"line":247,"column":null}},"type":"if","locations":[{"start":{"line":247,"column":4},"end":{"line":247,"column":null}},{"start":{},"end":{}}],"line":247},"37":{"loc":{"start":{"line":247,"column":8},"end":{"line":247,"column":45}},"type":"binary-expr","locations":[{"start":{"line":247,"column":8},"end":{"line":247,"column":24}},{"start":{"line":247,"column":24},"end":{"line":247,"column":45}}],"line":247},"38":{"loc":{"start":{"line":249,"column":4},"end":{"line":256,"column":null}},"type":"if","locations":[{"start":{"line":249,"column":4},"end":{"line":256,"column":null}},{"start":{"line":254,"column":11},"end":{"line":256,"column":null}}],"line":249},"39":{"loc":{"start":{"line":267,"column":4},"end":{"line":267,"column":null}},"type":"if","locations":[{"start":{"line":267,"column":4},"end":{"line":267,"column":null}},{"start":{},"end":{}}],"line":267},"40":{"loc":{"start":{"line":268,"column":4},"end":{"line":271,"column":null}},"type":"if","locations":[{"start":{"line":268,"column":4},"end":{"line":271,"column":null}},{"start":{},"end":{}}],"line":268},"41":{"loc":{"start":{"line":272,"column":4},"end":{"line":275,"column":null}},"type":"if","locations":[{"start":{"line":272,"column":4},"end":{"line":275,"column":null}},{"start":{},"end":{}}],"line":272},"42":{"loc":{"start":{"line":277,"column":4},"end":{"line":277,"column":null}},"type":"if","locations":[{"start":{"line":277,"column":4},"end":{"line":277,"column":null}},{"start":{},"end":{}}],"line":277},"43":{"loc":{"start":{"line":290,"column":4},"end":{"line":290,"column":null}},"type":"if","locations":[{"start":{"line":290,"column":4},"end":{"line":290,"column":null}},{"start":{},"end":{}}],"line":290}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":7,"8":7,"9":7,"10":7,"11":7,"12":7,"13":7,"14":7,"15":7,"16":7,"17":7,"18":7,"19":7,"20":7,"21":0,"22":4,"23":1,"24":8,"25":0,"26":8,"27":8,"28":0,"29":8,"30":8,"31":0,"32":8,"33":8,"34":0,"35":0,"36":0,"37":8,"38":8,"39":8,"40":8,"41":0,"42":8,"43":0,"44":0,"45":0,"46":8,"47":22,"48":22,"49":8,"50":8,"51":8,"52":0,"53":7,"54":7,"55":5,"56":7,"57":0,"58":7,"59":2,"60":7,"61":7,"62":7,"63":7,"64":9,"65":8,"66":9,"67":1,"68":8,"69":8,"70":0,"71":0,"72":0,"73":8,"74":7,"75":8,"76":8,"77":0,"78":8,"79":8,"80":8,"81":8,"82":1,"83":1,"84":8,"85":8,"86":8,"87":0,"88":0,"89":0,"90":22,"91":22,"92":0,"93":22,"94":22,"95":8,"96":8,"97":7,"98":7,"99":7,"100":7,"101":7,"102":7,"103":7,"104":7,"105":7,"106":7,"107":7,"108":7,"109":0,"110":0,"111":7,"112":7,"113":1,"114":1,"115":1,"116":6,"117":0,"118":6,"119":6,"120":0,"121":6,"122":6,"123":6,"124":6,"125":5,"126":1,"127":1,"128":0,"129":0,"130":0,"131":0,"132":7,"133":0,"134":7,"135":0,"136":0,"137":0,"138":0,"139":0,"140":3,"141":0,"142":3,"143":3,"144":0,"145":0,"146":3,"147":3,"148":1,"149":1,"150":3,"151":8,"152":0,"153":8,"154":2,"155":2,"156":8,"157":1,"158":1,"159":8,"160":8,"161":7,"162":8,"163":8,"164":1,"165":1,"166":8,"167":8,"168":1,"169":1,"170":8,"171":5,"172":3},"f":{"0":7,"1":0,"2":4,"3":1,"4":8,"5":8,"6":8,"7":0,"8":22,"9":8,"10":0,"11":7,"12":9,"13":9,"14":8,"15":0,"16":0,"17":7,"18":8,"19":8,"20":1,"21":22,"22":7,"23":0,"24":0,"25":3,"26":1,"27":8},"b":{"0":[0,1],"1":[0,8],"2":[8,0],"3":[8,8,0],"4":[0,8],"5":[0,0],"6":[0,8],"7":[0,0],"8":[0,0],"9":[22,0],"10":[5,2],"11":[0,7],"12":[2,5],"13":[9],"14":[9],"15":[9],"16":[1,8],"17":[0,8],"18":[8,8],"19":[0,0],"20":[22,0],"21":[22,16],"22":[8,7,1,6],"23":[7,0],"24":[7,0],"25":[1,0],"26":[0,6],"27":[0,6],"28":[6,0],"29":[5,1],"30":[1,0],"31":[1,0],"32":[0,0],"33":[0,7],"34":[0,0],"35":[0,0],"36":[0,3],"37":[3,3],"38":[0,3],"39":[0,8],"40":[2,6],"41":[1,7],"42":[7,1],"43":[5,3]},"meta":{"lastBranch":44,"lastFunction":28,"lastStatement":173,"seen":{"s:17:25:17:Infinity":0,"s:18:25:18:Infinity":1,"s:20:32:20:Infinity":2,"s:21:31:21:Infinity":3,"s:23:29:23:Infinity":4,"s:24:25:24:Infinity":5,"s:25:27:25:Infinity":6,"s:35:33:35:Infinity":7,"s:36:19:36:Infinity":8,"s:37:20:37:Infinity":9,"s:38:30:38:Infinity":10,"s:39:19:39:Infinity":11,"s:40:20:40:Infinity":12,"s:41:20:41:Infinity":13,"s:42:45:42:Infinity":14,"s:43:45:43:Infinity":15,"s:44:50:44:Infinity":16,"s:45:29:45:Infinity":17,"s:47:42:47:Infinity":18,"s:48:48:48:Infinity":19,"f:50:2:50:14":0,"s:50:22:50:40":20,"f:53:2:53:12":1,"s:54:4:54:Infinity":21,"f:57:6:57:27":2,"s:58:4:58:Infinity":22,"f:62:2:62:37":3,"s:63:4:63:Infinity":23,"b:63:42:63:49:63:49:63:Infinity":0,"f:66:2:66:10":4,"b:67:4:67:Infinity:undefined:undefined:undefined:undefined":1,"s:67:4:67:Infinity":24,"s:67:34:67:Infinity":25,"b:68:4:70:Infinity:undefined:undefined:undefined:undefined":2,"s:68:4:70:Infinity":26,"s:69:6:69:Infinity":27,"s:71:4:71:Infinity":28,"f:74:2:74:10":5,"s:75:4:75:Infinity":29,"b:75:11:75:39:75:39:75:62:75:62:75:Infinity":3,"f:78:2:78:18":6,"b:79:4:79:Infinity:undefined:undefined:undefined:undefined":4,"s:79:4:79:Infinity":30,"s:79:22:79:Infinity":31,"s:81:4:89:Infinity":32,"s:82:6:82:Infinity":33,"s:86:6:86:Infinity":34,"b:86:44:86:56:86:56:86:57":5,"s:87:6:87:Infinity":35,"s:88:6:88:Infinity":36,"s:90:4:90:Infinity":37,"s:91:15:91:Infinity":38,"s:92:4:92:Infinity":39,"b:97:4:97:Infinity:undefined:undefined:undefined:undefined":6,"s:97:4:97:Infinity":40,"s:97:24:97:Infinity":41,"s:98:4:103:Infinity":42,"f:98:21:98:38":7,"b:99:6:102:Infinity:undefined:undefined:undefined:undefined":7,"s:99:6:102:Infinity":43,"b:99:10:99:26:99:26:99:42":8,"s:100:8:100:Infinity":44,"s:101:8:101:Infinity":45,"s:105:4:107:Infinity":46,"f:105:10:105:22":8,"b:106:6:106:Infinity:undefined:undefined:undefined:undefined":9,"s:106:6:106:Infinity":47,"s:106:26:106:Infinity":48,"s:108:4:108:Infinity":49,"f:108:10:108:25":9,"s:108:25:108:62":50,"s:109:4:112:Infinity":51,"f:109:10:109:20":10,"s:110:6:110:Infinity":52,"f:115:2:115:19":11,"s:116:4:116:Infinity":53,"b:117:4:117:Infinity:undefined:undefined:undefined:undefined":10,"s:117:4:117:Infinity":54,"s:117:24:117:Infinity":55,"b:118:4:118:Infinity:undefined:undefined:undefined:undefined":11,"s:118:4:118:Infinity":56,"s:118:24:118:Infinity":57,"b:119:4:119:Infinity:undefined:undefined:undefined:undefined":12,"s:119:4:119:Infinity":58,"s:119:29:119:Infinity":59,"s:120:4:120:Infinity":60,"s:121:4:121:Infinity":61,"s:122:4:122:Infinity":62,"s:123:4:123:Infinity":63,"f:127:8:127:Infinity":12,"b:129:39:129:Infinity":13,"b:130:24:130:Infinity":14,"s:132:4:132:Infinity":64,"s:133:4:133:Infinity":65,"f:136:2:136:10":13,"b:136:28:136:51":15,"b:137:4:137:Infinity:undefined:undefined:undefined:undefined":16,"s:137:4:137:Infinity":66,"s:137:21:137:Infinity":67,"s:138:4:144:Infinity":68,"f:138:15:138:24":14,"s:139:20:142:Infinity":69,"f:139:20:139:37":15,"s:140:8:140:Infinity":70,"f:140:36:140:44":16,"s:140:50:140:67":71,"s:141:8:141:Infinity":72,"s:143:6:143:Infinity":73,"f:143:26:143:41":17,"s:143:41:143:52":74,"f:147:2:147:10":18,"s:148:15:148:Infinity":75,"b:149:4:151:Infinity:undefined:undefined:undefined:undefined":17,"s:149:4:151:Infinity":76,"b:149:8:149:15:149:15:149:49":18,"s:150:6:150:Infinity":77,"s:152:15:152:Infinity":78,"s:153:4:153:Infinity":79,"s:154:4:167:Infinity":80,"f:154:15:154:24":19,"s:155:20:158:Infinity":81,"f:155:20:155:37":20,"s:156:8:156:Infinity":82,"s:157:8:157:Infinity":83,"s:159:6:159:Infinity":84,"s:160:6:166:Infinity":85,"s:161:8:161:Infinity":86,"s:163:8:163:Infinity":87,"s:164:8:164:Infinity":88,"s:165:8:165:Infinity":89,"b:165:36:165:40:165:40:165:60":19,"f:170:2:170:10":21,"s:172:4:176:Infinity":90,"s:173:6:173:Infinity":91,"s:175:6:175:Infinity":92,"s:177:4:177:Infinity":93,"b:177:41:177:53:177:53:177:57":20,"b:177:63:177:73:177:73:177:77":21,"b:179:6:181:Infinity:182:6:204:Infinity:205:6:212:Infinity:213:6:231:Infinity":22,"s:178:4:232:Infinity":94,"s:180:8:180:Infinity":95,"s:181:8:181:Infinity":96,"s:183:8:183:Infinity":97,"s:184:8:184:Infinity":98,"s:185:8:185:Infinity":99,"s:186:8:186:Infinity":100,"b:187:8:190:Infinity:undefined:undefined:undefined:undefined":23,"s:187:8:190:Infinity":101,"s:188:10:188:Infinity":102,"s:189:10:189:Infinity":103,"s:191:8:191:Infinity":104,"b:191:54:191:72:191:72:191:77":24,"s:192:8:195:Infinity":105,"s:193:10:193:Infinity":106,"s:194:10:194:Infinity":107,"s:196:8:202:Infinity":108,"s:197:10:201:Infinity":109,"s:198:12:198:Infinity":110,"s:203:8:203:Infinity":111,"s:204:8:204:Infinity":112,"s:206:8:206:Infinity":113,"s:207:8:209:Infinity":114,"b:208:84:208:99:208:99:208:Infinity":25,"s:212:8:212:Infinity":115,"b:214:8:214:Infinity:undefined:undefined:undefined:undefined":26,"s:214:8:214:Infinity":116,"s:214:40:214:Infinity":117,"s:215:18:215:Infinity":118,"b:216:8:216:Infinity:undefined:undefined:undefined:undefined":27,"s:216:8:216:Infinity":119,"s:216:16:216:Infinity":120,"b:217:8:229:Infinity:225:15:229:Infinity":28,"s:217:8:229:Infinity":121,"s:218:10:218:Infinity":122,"s:219:10:219:Infinity":123,"b:220:10:224:Infinity:221:15:224:Infinity":29,"s:220:10:224:Infinity":124,"s:220:27:220:Infinity":125,"s:222:12:222:Infinity":126,"b:222:57:222:79:222:79:222:96":30,"s:223:12:223:Infinity":127,"b:223:31:223:53:223:53:223:75":31,"b:225:15:229:Infinity:undefined:undefined:undefined:undefined":32,"s:225:15:229:Infinity":128,"s:226:10:226:Infinity":129,"s:227:10:227:Infinity":130,"s:228:10:228:Infinity":131,"f:235:2:235:10":22,"b:236:4:236:Infinity:undefined:undefined:undefined:undefined":33,"s:236:4:236:Infinity":132,"s:236:24:236:Infinity":133,"s:237:4:243:Infinity":134,"f:237:21:237:39":23,"b:238:6:238:Infinity:undefined:undefined:undefined:undefined":34,"s:238:6:238:Infinity":135,"b:238:10:238:26:238:26:238:36":35,"s:238:36:238:Infinity":136,"s:239:6:242:Infinity":137,"f:239:34:239:46":24,"s:240:8:240:Infinity":138,"s:241:8:241:Infinity":139,"f:246:2:246:10":25,"b:247:4:247:Infinity:undefined:undefined:undefined:undefined":36,"s:247:4:247:Infinity":140,"b:247:8:247:24:247:24:247:45":37,"s:247:45:247:Infinity":141,"s:248:16:248:Infinity":142,"b:249:4:256:Infinity:254:11:256:Infinity":38,"s:249:4:256:Infinity":143,"s:250:6:250:Infinity":144,"s:251:6:253:Infinity":145,"s:255:6:255:Infinity":146,"s:257:4:260:Infinity":147,"f:257:26:257:43":26,"s:258:6:258:Infinity":148,"s:259:6:259:Infinity":149,"s:261:4:261:Infinity":150,"f:264:2:264:10":27,"b:267:4:267:Infinity:undefined:undefined:undefined:undefined":39,"s:267:4:267:Infinity":151,"s:267:24:267:Infinity":152,"b:268:4:271:Infinity:undefined:undefined:undefined:undefined":40,"s:268:4:271:Infinity":153,"s:269:6:269:Infinity":154,"s:270:6:270:Infinity":155,"b:272:4:275:Infinity:undefined:undefined:undefined:undefined":41,"s:272:4:275:Infinity":156,"s:273:6:273:Infinity":157,"s:274:6:274:Infinity":158,"s:276:4:276:Infinity":159,"b:277:4:277:Infinity:undefined:undefined:undefined:undefined":42,"s:277:4:277:Infinity":160,"s:277:38:277:Infinity":161,"s:278:4:278:Infinity":162,"s:279:4:282:Infinity":163,"s:280:6:280:Infinity":164,"s:281:6:281:Infinity":165,"s:283:4:283:Infinity":166,"s:286:4:289:Infinity":167,"s:287:6:287:Infinity":168,"s:288:6:288:Infinity":169,"b:290:4:290:Infinity:undefined:undefined:undefined:undefined":43,"s:290:4:290:Infinity":170,"s:290:22:290:Infinity":171,"s:291:4:291:Infinity":172},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/helpers.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/helpers.ts","statementMap":{"0":{"start":{"line":4,"column":34},"end":{"line":4,"column":null}},"1":{"start":{"line":17,"column":12},"end":{"line":17,"column":null}},"2":{"start":{"line":18,"column":12},"end":{"line":18,"column":null}},"3":{"start":{"line":19,"column":16},"end":{"line":19,"column":null}},"4":{"start":{"line":20,"column":19},"end":{"line":20,"column":null}},"5":{"start":{"line":21,"column":2},"end":{"line":28,"column":null}},"6":{"start":{"line":33,"column":14},"end":{"line":33,"column":null}},"7":{"start":{"line":34,"column":2},"end":{"line":34,"column":null}},"8":{"start":{"line":34,"column":25},"end":{"line":34,"column":null}},"9":{"start":{"line":35,"column":15},"end":{"line":35,"column":null}},"10":{"start":{"line":36,"column":19},"end":{"line":36,"column":null}},"11":{"start":{"line":37,"column":2},"end":{"line":37,"column":null}},"12":{"start":{"line":37,"column":48},"end":{"line":37,"column":null}},"13":{"start":{"line":38,"column":2},"end":{"line":38,"column":null}},"14":{"start":{"line":50,"column":13},"end":{"line":50,"column":null}},"15":{"start":{"line":51,"column":2},"end":{"line":57,"column":null}},"16":{"start":{"line":52,"column":4},"end":{"line":56,"column":null}},"17":{"start":{"line":58,"column":2},"end":{"line":58,"column":null}},"18":{"start":{"line":62,"column":2},"end":{"line":62,"column":null}},"19":{"start":{"line":67,"column":2},"end":{"line":82,"column":null}},"20":{"start":{"line":68,"column":4},"end":{"line":68,"column":null}},"21":{"start":{"line":69,"column":4},"end":{"line":69,"column":null}},"22":{"start":{"line":70,"column":4},"end":{"line":81,"column":null}},"23":{"start":{"line":71,"column":19},"end":{"line":71,"column":null}},"24":{"start":{"line":72,"column":6},"end":{"line":72,"column":null}},"25":{"start":{"line":74,"column":18},"end":{"line":74,"column":null}},"26":{"start":{"line":75,"column":6},"end":{"line":75,"column":null}},"27":{"start":{"line":79,"column":6},"end":{"line":79,"column":null}},"28":{"start":{"line":79,"column":41},"end":{"line":79,"column":null}},"29":{"start":{"line":80,"column":6},"end":{"line":80,"column":null}},"30":{"start":{"line":99,"column":14},"end":{"line":99,"column":null}},"31":{"start":{"line":100,"column":16},"end":{"line":102,"column":null}},"32":{"start":{"line":103,"column":2},"end":{"line":105,"column":null}},"33":{"start":{"line":104,"column":4},"end":{"line":104,"column":null}},"34":{"start":{"line":106,"column":8},"end":{"line":106,"column":null}},"35":{"start":{"line":107,"column":2},"end":{"line":107,"column":null}},"36":{"start":{"line":107,"column":22},"end":{"line":107,"column":null}},"37":{"start":{"line":108,"column":2},"end":{"line":110,"column":null}},"38":{"start":{"line":109,"column":4},"end":{"line":109,"column":null}},"39":{"start":{"line":111,"column":2},"end":{"line":111,"column":null}},"40":{"start":{"line":116,"column":2},"end":{"line":120,"column":null}},"41":{"start":{"line":118,"column":15},"end":{"line":118,"column":null}},"42":{"start":{"line":119,"column":4},"end":{"line":119,"column":null}},"43":{"start":{"line":121,"column":2},"end":{"line":124,"column":null}},"44":{"start":{"line":122,"column":14},"end":{"line":122,"column":null}},"45":{"start":{"line":123,"column":4},"end":{"line":123,"column":null}},"46":{"start":{"line":125,"column":2},"end":{"line":125,"column":null}}},"fnMap":{"0":{"name":"listEnvelope","decl":{"start":{"line":16,"column":16},"end":{"line":16,"column":32}},"loc":{"start":{"line":16,"column":98},"end":{"line":29,"column":null}},"line":16},"1":{"name":"trunc","decl":{"start":{"line":32,"column":16},"end":{"line":32,"column":22}},"loc":{"start":{"line":32,"column":55},"end":{"line":39,"column":null}},"line":32},"2":{"name":"jsonResult","decl":{"start":{"line":49,"column":16},"end":{"line":49,"column":27}},"loc":{"start":{"line":49,"column":54},"end":{"line":59,"column":null}},"line":49},"3":{"name":"errorResult","decl":{"start":{"line":61,"column":16},"end":{"line":61,"column":28}},"loc":{"start":{"line":61,"column":57},"end":{"line":63,"column":null}},"line":61},"4":{"name":"safe","decl":{"start":{"line":66,"column":16},"end":{"line":66,"column":24}},"loc":{"start":{"line":66,"column":107},"end":{"line":83,"column":null}},"line":66},"5":{"name":"(anonymous_5)","decl":{"start":{"line":67,"column":9},"end":{"line":67,"column":16}},"loc":{"start":{"line":67,"column":28},"end":{"line":82,"column":null}},"line":67},"6":{"name":"timeWindow","decl":{"start":{"line":94,"column":16},"end":{"line":94,"column":null}},"loc":{"start":{"line":98,"column":14},"end":{"line":112,"column":null}},"line":98},"7":{"name":"toIso","decl":{"start":{"line":115,"column":16},"end":{"line":115,"column":22}},"loc":{"start":{"line":115,"column":49},"end":{"line":126,"column":null}},"line":115}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":42},"end":{"line":16,"column":54}},"type":"default-arg","locations":[{"start":{"line":16,"column":50},"end":{"line":16,"column":54}}],"line":16},"1":{"loc":{"start":{"line":16,"column":54},"end":{"line":16,"column":66}},"type":"default-arg","locations":[{"start":{"line":16,"column":63},"end":{"line":16,"column":66}}],"line":16},"2":{"loc":{"start":{"line":26,"column":8},"end":{"line":26,"column":null}},"type":"cond-expr","locations":[{"start":{"line":26,"column":32},"end":{"line":26,"column":60}},{"start":{"line":26,"column":60},"end":{"line":26,"column":null}}],"line":26},"3":{"loc":{"start":{"line":27,"column":8},"end":{"line":27,"column":null}},"type":"cond-expr","locations":[{"start":{"line":27,"column":15},"end":{"line":27,"column":26}},{"start":{"line":27,"column":26},"end":{"line":27,"column":null}}],"line":27},"4":{"loc":{"start":{"line":33,"column":14},"end":{"line":33,"column":null}},"type":"cond-expr","locations":[{"start":{"line":33,"column":38},"end":{"line":33,"column":42}},{"start":{"line":33,"column":42},"end":{"line":33,"column":null}}],"line":33},"5":{"loc":{"start":{"line":33,"column":42},"end":{"line":33,"column":null}},"type":"binary-expr","locations":[{"start":{"line":33,"column":42},"end":{"line":33,"column":63}},{"start":{"line":33,"column":63},"end":{"line":33,"column":null}}],"line":33},"6":{"loc":{"start":{"line":34,"column":2},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":34,"column":2},"end":{"line":34,"column":null}},{"start":{},"end":{}}],"line":34},"7":{"loc":{"start":{"line":37,"column":2},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":37,"column":2},"end":{"line":37,"column":null}},{"start":{},"end":{}}],"line":37},"8":{"loc":{"start":{"line":37,"column":6},"end":{"line":37,"column":48}},"type":"binary-expr","locations":[{"start":{"line":37,"column":6},"end":{"line":37,"column":28}},{"start":{"line":37,"column":28},"end":{"line":37,"column":48}}],"line":37},"9":{"loc":{"start":{"line":51,"column":2},"end":{"line":57,"column":null}},"type":"if","locations":[{"start":{"line":51,"column":2},"end":{"line":57,"column":null}},{"start":{},"end":{}}],"line":51},"10":{"loc":{"start":{"line":74,"column":18},"end":{"line":74,"column":null}},"type":"cond-expr","locations":[{"start":{"line":74,"column":39},"end":{"line":74,"column":51}},{"start":{"line":74,"column":51},"end":{"line":74,"column":null}}],"line":74},"11":{"loc":{"start":{"line":79,"column":6},"end":{"line":79,"column":null}},"type":"if","locations":[{"start":{"line":79,"column":6},"end":{"line":79,"column":null}},{"start":{},"end":{}}],"line":79},"12":{"loc":{"start":{"line":79,"column":10},"end":{"line":79,"column":41}},"type":"binary-expr","locations":[{"start":{"line":79,"column":10},"end":{"line":79,"column":32}},{"start":{"line":79,"column":32},"end":{"line":79,"column":41}}],"line":79},"13":{"loc":{"start":{"line":99,"column":14},"end":{"line":99,"column":null}},"type":"cond-expr","locations":[{"start":{"line":99,"column":22},"end":{"line":99,"column":40}},{"start":{"line":99,"column":40},"end":{"line":99,"column":null}}],"line":99},"14":{"loc":{"start":{"line":100,"column":16},"end":{"line":102,"column":null}},"type":"cond-expr","locations":[{"start":{"line":101,"column":6},"end":{"line":101,"column":null}},{"start":{"line":102,"column":6},"end":{"line":102,"column":null}}],"line":100},"15":{"loc":{"start":{"line":102,"column":32},"end":{"line":102,"column":59}},"type":"binary-expr","locations":[{"start":{"line":102,"column":32},"end":{"line":102,"column":43}},{"start":{"line":102,"column":43},"end":{"line":102,"column":59}}],"line":102},"16":{"loc":{"start":{"line":103,"column":2},"end":{"line":105,"column":null}},"type":"if","locations":[{"start":{"line":103,"column":2},"end":{"line":105,"column":null}},{"start":{},"end":{}}],"line":103},"17":{"loc":{"start":{"line":103,"column":6},"end":{"line":103,"column":68}},"type":"binary-expr","locations":[{"start":{"line":103,"column":6},"end":{"line":103,"column":39}},{"start":{"line":103,"column":39},"end":{"line":103,"column":68}}],"line":103},"18":{"loc":{"start":{"line":107,"column":2},"end":{"line":107,"column":null}},"type":"if","locations":[{"start":{"line":107,"column":2},"end":{"line":107,"column":null}},{"start":{},"end":{}}],"line":107},"19":{"loc":{"start":{"line":108,"column":2},"end":{"line":110,"column":null}},"type":"if","locations":[{"start":{"line":108,"column":2},"end":{"line":110,"column":null}},{"start":{},"end":{}}],"line":108},"20":{"loc":{"start":{"line":116,"column":2},"end":{"line":120,"column":null}},"type":"if","locations":[{"start":{"line":116,"column":2},"end":{"line":120,"column":null}},{"start":{},"end":{}}],"line":116},"21":{"loc":{"start":{"line":118,"column":15},"end":{"line":118,"column":null}},"type":"cond-expr","locations":[{"start":{"line":118,"column":26},"end":{"line":118,"column":30}},{"start":{"line":118,"column":30},"end":{"line":118,"column":null}}],"line":118},"22":{"loc":{"start":{"line":121,"column":2},"end":{"line":124,"column":null}},"type":"if","locations":[{"start":{"line":121,"column":2},"end":{"line":124,"column":null}},{"start":{},"end":{}}],"line":121},"23":{"loc":{"start":{"line":123,"column":11},"end":{"line":123,"column":null}},"type":"cond-expr","locations":[{"start":{"line":123,"column":39},"end":{"line":123,"column":46}},{"start":{"line":123,"column":46},"end":{"line":123,"column":null}}],"line":123}},"s":{"0":8,"1":15,"2":15,"3":15,"4":15,"5":15,"6":57,"7":57,"8":53,"9":4,"10":4,"11":4,"12":0,"13":4,"14":38,"15":38,"16":2,"17":38,"18":12,"19":174,"20":47,"21":47,"22":47,"23":47,"24":35,"25":12,"26":12,"27":12,"28":12,"29":12,"30":10,"31":10,"32":10,"33":1,"34":9,"35":9,"36":1,"37":8,"38":2,"39":6,"40":1308,"41":1304,"42":1304,"43":4,"44":3,"45":3,"46":1},"f":{"0":15,"1":57,"2":38,"3":12,"4":174,"5":47,"6":10,"7":1308},"b":{"0":[15],"1":[15],"2":[2,13],"3":[2,13],"4":[10,47],"5":[47,0],"6":[53,4],"7":[0,4],"8":[4,0],"9":[2,36],"10":[12,0],"11":[12,0],"12":[12,12],"13":[1,9],"14":[2,8],"15":[8,4],"16":[1,9],"17":[10,9],"18":[1,8],"19":[2,6],"20":[1304,4],"21":[2,1302],"22":[3,1],"23":[1,2]},"meta":{"lastBranch":24,"lastFunction":8,"lastStatement":47,"seen":{"s:4:34:4:Infinity":0,"f:16:16:16:32":0,"b:16:50:16:54":0,"b:16:63:16:66":1,"s:17:12:17:Infinity":1,"s:18:12:18:Infinity":2,"s:19:16:19:Infinity":3,"s:20:19:20:Infinity":4,"s:21:2:28:Infinity":5,"b:26:32:26:60:26:60:26:Infinity":2,"b:27:15:27:26:27:26:27:Infinity":3,"f:32:16:32:22":1,"s:33:14:33:Infinity":6,"b:33:38:33:42:33:42:33:Infinity":4,"b:33:42:33:63:33:63:33:Infinity":5,"b:34:2:34:Infinity:undefined:undefined:undefined:undefined":6,"s:34:2:34:Infinity":7,"s:34:25:34:Infinity":8,"s:35:15:35:Infinity":9,"s:36:19:36:Infinity":10,"b:37:2:37:Infinity:undefined:undefined:undefined:undefined":7,"s:37:2:37:Infinity":11,"b:37:6:37:28:37:28:37:48":8,"s:37:48:37:Infinity":12,"s:38:2:38:Infinity":13,"f:49:16:49:27":2,"s:50:13:50:Infinity":14,"b:51:2:57:Infinity:undefined:undefined:undefined:undefined":9,"s:51:2:57:Infinity":15,"s:52:4:56:Infinity":16,"s:58:2:58:Infinity":17,"f:61:16:61:28":3,"s:62:2:62:Infinity":18,"f:66:16:66:24":4,"s:67:2:82:Infinity":19,"f:67:9:67:16":5,"s:68:4:68:Infinity":20,"s:69:4:69:Infinity":21,"s:70:4:81:Infinity":22,"s:71:19:71:Infinity":23,"s:72:6:72:Infinity":24,"s:74:18:74:Infinity":25,"b:74:39:74:51:74:51:74:Infinity":10,"s:75:6:75:Infinity":26,"b:79:6:79:Infinity:undefined:undefined:undefined:undefined":11,"s:79:6:79:Infinity":27,"b:79:10:79:32:79:32:79:41":12,"s:79:41:79:Infinity":28,"s:80:6:80:Infinity":29,"f:94:16:94:Infinity":6,"s:99:14:99:Infinity":30,"b:99:22:99:40:99:40:99:Infinity":13,"s:100:16:102:Infinity":31,"b:101:6:101:Infinity:102:6:102:Infinity":14,"b:102:32:102:43:102:43:102:59":15,"b:103:2:105:Infinity:undefined:undefined:undefined:undefined":16,"s:103:2:105:Infinity":32,"b:103:6:103:39:103:39:103:68":17,"s:104:4:104:Infinity":33,"s:106:8:106:Infinity":34,"b:107:2:107:Infinity:undefined:undefined:undefined:undefined":18,"s:107:2:107:Infinity":35,"s:107:22:107:Infinity":36,"b:108:2:110:Infinity:undefined:undefined:undefined:undefined":19,"s:108:2:110:Infinity":37,"s:109:4:109:Infinity":38,"s:111:2:111:Infinity":39,"f:115:16:115:22":7,"b:116:2:120:Infinity:undefined:undefined:undefined:undefined":20,"s:116:2:120:Infinity":40,"s:118:15:118:Infinity":41,"b:118:26:118:30:118:30:118:Infinity":21,"s:119:4:119:Infinity":42,"b:121:2:124:Infinity:undefined:undefined:undefined:undefined":22,"s:121:2:124:Infinity":43,"s:122:14:122:Infinity":44,"s:123:4:123:Infinity":45,"b:123:39:123:46:123:46:123:Infinity":23,"s:125:2:125:Infinity":46},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/server.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/server.ts","statementMap":{"0":{"start":{"line":16,"column":17},"end":{"line":25,"column":null}},"1":{"start":{"line":26,"column":2},"end":{"line":26,"column":null}},"2":{"start":{"line":27,"column":2},"end":{"line":27,"column":null}},"3":{"start":{"line":28,"column":2},"end":{"line":28,"column":null}},"4":{"start":{"line":29,"column":2},"end":{"line":29,"column":null}},"5":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"6":{"start":{"line":31,"column":2},"end":{"line":31,"column":null}},"7":{"start":{"line":32,"column":2},"end":{"line":32,"column":null}}},"fnMap":{"0":{"name":"buildServer","decl":{"start":{"line":15,"column":16},"end":{"line":15,"column":28}},"loc":{"start":{"line":15,"column":57},"end":{"line":33,"column":null}},"line":15}},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2},"f":{"0":2},"b":{},"meta":{"lastBranch":0,"lastFunction":1,"lastStatement":8,"seen":{"f:15:16:15:28":0,"s:16:17:25:Infinity":0,"s:26:2:26:Infinity":1,"s:27:2:27:Infinity":2,"s:28:2:28:Infinity":3,"s:29:2:29:Infinity":4,"s:30:2:30:Infinity":5,"s:31:2:31:Infinity":6,"s:32:2:32:Infinity":7},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/addons.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/addons.ts","statementMap":{"0":{"start":{"line":6,"column":16},"end":{"line":6,"column":null}},"1":{"start":{"line":9,"column":2},"end":{"line":61,"column":null}},"2":{"start":{"line":22,"column":12},"end":{"line":31,"column":null}},"3":{"start":{"line":23,"column":20},"end":{"line":23,"column":null}},"4":{"start":{"line":24,"column":8},"end":{"line":29,"column":null}},"5":{"start":{"line":25,"column":10},"end":{"line":28,"column":null}},"6":{"start":{"line":30,"column":8},"end":{"line":30,"column":null}},"7":{"start":{"line":32,"column":6},"end":{"line":47,"column":null}},"8":{"start":{"line":34,"column":8},"end":{"line":34,"column":null}},"9":{"start":{"line":34,"column":33},"end":{"line":34,"column":null}},"10":{"start":{"line":35,"column":21},"end":{"line":35,"column":null}},"11":{"start":{"line":36,"column":8},"end":{"line":46,"column":null}},"12":{"start":{"line":48,"column":19},"end":{"line":48,"column":null}},"13":{"start":{"line":49,"column":28},"end":{"line":49,"column":null}},"14":{"start":{"line":50,"column":6},"end":{"line":59,"column":null}},"15":{"start":{"line":51,"column":34},"end":{"line":57,"column":10}}},"fnMap":{"0":{"name":"registerAddonTools","decl":{"start":{"line":8,"column":16},"end":{"line":8,"column":35}},"loc":{"start":{"line":8,"column":78},"end":{"line":62,"column":null}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":21,"column":26},"end":{"line":21,"column":33}},"loc":{"start":{"line":21,"column":46},"end":{"line":60,"column":5}},"line":21},"2":{"name":"(anonymous_2)","decl":{"start":{"line":22,"column":12},"end":{"line":22,"column":26}},"loc":{"start":{"line":22,"column":48},"end":{"line":31,"column":null}},"line":22},"3":{"name":"(anonymous_3)","decl":{"start":{"line":51,"column":22},"end":{"line":51,"column":27}},"loc":{"start":{"line":51,"column":34},"end":{"line":57,"column":10}},"line":51}},"branchMap":{"0":{"loc":{"start":{"line":23,"column":20},"end":{"line":23,"column":null}},"type":"cond-expr","locations":[{"start":{"line":23,"column":41},"end":{"line":23,"column":53}},{"start":{"line":23,"column":53},"end":{"line":23,"column":null}}],"line":23},"1":{"loc":{"start":{"line":24,"column":8},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":24,"column":8},"end":{"line":29,"column":null}},{"start":{},"end":{}}],"line":24},"2":{"loc":{"start":{"line":32,"column":6},"end":{"line":47,"column":null}},"type":"if","locations":[{"start":{"line":32,"column":6},"end":{"line":47,"column":null}},{"start":{},"end":{}}],"line":32},"3":{"loc":{"start":{"line":34,"column":8},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":34,"column":8},"end":{"line":34,"column":null}},{"start":{},"end":{}}],"line":34},"4":{"loc":{"start":{"line":39,"column":29},"end":{"line":39,"column":53}},"type":"binary-expr","locations":[{"start":{"line":39,"column":29},"end":{"line":39,"column":49}},{"start":{"line":39,"column":49},"end":{"line":39,"column":53}}],"line":39},"5":{"loc":{"start":{"line":45,"column":17},"end":{"line":45,"column":null}},"type":"binary-expr","locations":[{"start":{"line":45,"column":17},"end":{"line":45,"column":31}},{"start":{"line":45,"column":31},"end":{"line":45,"column":null}}],"line":45},"6":{"loc":{"start":{"line":49,"column":28},"end":{"line":49,"column":null}},"type":"binary-expr","locations":[{"start":{"line":49,"column":28},"end":{"line":49,"column":44}},{"start":{"line":49,"column":44},"end":{"line":49,"column":null}}],"line":49}},"s":{"0":2,"1":6,"2":4,"3":1,"4":1,"5":0,"6":1,"7":4,"8":2,"9":1,"10":1,"11":1,"12":2,"13":1,"14":4,"15":1},"f":{"0":6,"1":4,"2":1,"3":1},"b":{"0":[1,0],"1":[0,1],"2":[2,2],"3":[1,1],"4":[1,0],"5":[2,1],"6":[1,0]},"meta":{"lastBranch":7,"lastFunction":4,"lastStatement":16,"seen":{"s:6:16:6:Infinity":0,"f:8:16:8:35":0,"s:9:2:61:Infinity":1,"f:21:26:21:33":1,"s:22:12:31:Infinity":2,"f:22:12:22:26":2,"s:23:20:23:Infinity":3,"b:23:41:23:53:23:53:23:Infinity":0,"b:24:8:29:Infinity:undefined:undefined:undefined:undefined":1,"s:24:8:29:Infinity":4,"s:25:10:28:Infinity":5,"s:30:8:30:Infinity":6,"b:32:6:47:Infinity:undefined:undefined:undefined:undefined":2,"s:32:6:47:Infinity":7,"b:34:8:34:Infinity:undefined:undefined:undefined:undefined":3,"s:34:8:34:Infinity":8,"s:34:33:34:Infinity":9,"s:35:21:35:Infinity":10,"s:36:8:46:Infinity":11,"b:39:29:39:49:39:49:39:53":4,"b:45:17:45:31:45:31:45:Infinity":5,"s:48:19:48:Infinity":12,"s:49:28:49:Infinity":13,"b:49:28:49:44:49:44:49:Infinity":6,"s:50:6:59:Infinity":14,"f:51:22:51:27":3,"s:51:34:57:10":15},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/automations.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/automations.ts","statementMap":{"0":{"start":{"line":9,"column":2},"end":{"line":33,"column":null}},"1":{"start":{"line":23,"column":12},"end":{"line":30,"column":null}},"2":{"start":{"line":24,"column":23},"end":{"line":24,"column":91}},"3":{"start":{"line":25,"column":21},"end":{"line":30,"column":10}},"4":{"start":{"line":31,"column":6},"end":{"line":31,"column":null}},"5":{"start":{"line":35,"column":2},"end":{"line":81,"column":null}},"6":{"start":{"line":48,"column":6},"end":{"line":50,"column":null}},"7":{"start":{"line":49,"column":8},"end":{"line":49,"column":null}},"8":{"start":{"line":51,"column":18},"end":{"line":51,"column":null}},"9":{"start":{"line":52,"column":16},"end":{"line":52,"column":null}},"10":{"start":{"line":52,"column":32},"end":{"line":52,"column":86}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":null}},"12":{"start":{"line":53,"column":14},"end":{"line":53,"column":null}},"13":{"start":{"line":55,"column":19},"end":{"line":61,"column":null}},"14":{"start":{"line":63,"column":20},"end":{"line":63,"column":null}},"15":{"start":{"line":64,"column":6},"end":{"line":66,"column":null}},"16":{"start":{"line":65,"column":8},"end":{"line":65,"column":null}},"17":{"start":{"line":67,"column":6},"end":{"line":79,"column":null}},"18":{"start":{"line":68,"column":23},"end":{"line":68,"column":null}},"19":{"start":{"line":69,"column":8},"end":{"line":69,"column":null}},"20":{"start":{"line":73,"column":20},"end":{"line":73,"column":null}},"21":{"start":{"line":74,"column":8},"end":{"line":76,"column":null}},"22":{"start":{"line":75,"column":10},"end":{"line":75,"column":null}},"23":{"start":{"line":77,"column":8},"end":{"line":77,"column":null}},"24":{"start":{"line":78,"column":8},"end":{"line":78,"column":null}},"25":{"start":{"line":83,"column":2},"end":{"line":106,"column":null}},"26":{"start":{"line":96,"column":12},"end":{"line":103,"column":null}},"27":{"start":{"line":97,"column":23},"end":{"line":97,"column":87}},"28":{"start":{"line":98,"column":21},"end":{"line":103,"column":10}},"29":{"start":{"line":104,"column":6},"end":{"line":104,"column":null}}},"fnMap":{"0":{"name":"registerAutomationTools","decl":{"start":{"line":8,"column":16},"end":{"line":8,"column":40}},"loc":{"start":{"line":8,"column":83},"end":{"line":107,"column":null}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":22,"column":32},"end":{"line":22,"column":39}},"loc":{"start":{"line":22,"column":61},"end":{"line":32,"column":5}},"line":22},"2":{"name":"(anonymous_2)","decl":{"start":{"line":24,"column":9},"end":{"line":24,"column":17}},"loc":{"start":{"line":24,"column":23},"end":{"line":24,"column":91}},"line":24},"3":{"name":"(anonymous_3)","decl":{"start":{"line":25,"column":9},"end":{"line":25,"column":14}},"loc":{"start":{"line":25,"column":21},"end":{"line":30,"column":10}},"line":25},"4":{"name":"(anonymous_4)","decl":{"start":{"line":47,"column":30},"end":{"line":47,"column":37}},"loc":{"start":{"line":47,"column":55},"end":{"line":80,"column":5}},"line":47},"5":{"name":"(anonymous_5)","decl":{"start":{"line":52,"column":20},"end":{"line":52,"column":26}},"loc":{"start":{"line":52,"column":32},"end":{"line":52,"column":86}},"line":52},"6":{"name":"(anonymous_6)","decl":{"start":{"line":95,"column":28},"end":{"line":95,"column":35}},"loc":{"start":{"line":95,"column":57},"end":{"line":105,"column":5}},"line":95},"7":{"name":"(anonymous_7)","decl":{"start":{"line":97,"column":9},"end":{"line":97,"column":17}},"loc":{"start":{"line":97,"column":23},"end":{"line":97,"column":87}},"line":97},"8":{"name":"(anonymous_8)","decl":{"start":{"line":98,"column":9},"end":{"line":98,"column":14}},"loc":{"start":{"line":98,"column":21},"end":{"line":103,"column":10}},"line":98}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":23},"end":{"line":24,"column":91}},"type":"binary-expr","locations":[{"start":{"line":24,"column":23},"end":{"line":24,"column":52}},{"start":{"line":24,"column":52},"end":{"line":24,"column":91}}],"line":24},"1":{"loc":{"start":{"line":29,"column":27},"end":{"line":29,"column":null}},"type":"binary-expr","locations":[{"start":{"line":29,"column":27},"end":{"line":29,"column":76}},{"start":{"line":29,"column":76},"end":{"line":29,"column":null}}],"line":29},"2":{"loc":{"start":{"line":31,"column":31},"end":{"line":31,"column":45}},"type":"binary-expr","locations":[{"start":{"line":31,"column":31},"end":{"line":31,"column":40}},{"start":{"line":31,"column":40},"end":{"line":31,"column":45}}],"line":31},"3":{"loc":{"start":{"line":31,"column":45},"end":{"line":31,"column":56}},"type":"binary-expr","locations":[{"start":{"line":31,"column":45},"end":{"line":31,"column":55}},{"start":{"line":31,"column":55},"end":{"line":31,"column":56}}],"line":31},"4":{"loc":{"start":{"line":48,"column":6},"end":{"line":50,"column":null}},"type":"if","locations":[{"start":{"line":48,"column":6},"end":{"line":50,"column":null}},{"start":{},"end":{}}],"line":48},"5":{"loc":{"start":{"line":52,"column":32},"end":{"line":52,"column":86}},"type":"binary-expr","locations":[{"start":{"line":52,"column":32},"end":{"line":52,"column":61}},{"start":{"line":52,"column":61},"end":{"line":52,"column":86}}],"line":52},"6":{"loc":{"start":{"line":53,"column":6},"end":{"line":53,"column":null}},"type":"if","locations":[{"start":{"line":53,"column":6},"end":{"line":53,"column":null}},{"start":{},"end":{}}],"line":53},"7":{"loc":{"start":{"line":59,"column":25},"end":{"line":59,"column":null}},"type":"binary-expr","locations":[{"start":{"line":59,"column":25},"end":{"line":59,"column":74}},{"start":{"line":59,"column":74},"end":{"line":59,"column":null}}],"line":59},"8":{"loc":{"start":{"line":60,"column":15},"end":{"line":60,"column":null}},"type":"binary-expr","locations":[{"start":{"line":60,"column":15},"end":{"line":60,"column":59}},{"start":{"line":60,"column":59},"end":{"line":60,"column":null}}],"line":60},"9":{"loc":{"start":{"line":64,"column":6},"end":{"line":66,"column":null}},"type":"if","locations":[{"start":{"line":64,"column":6},"end":{"line":66,"column":null}},{"start":{},"end":{}}],"line":64},"10":{"loc":{"start":{"line":64,"column":10},"end":{"line":64,"column":47}},"type":"binary-expr","locations":[{"start":{"line":64,"column":10},"end":{"line":64,"column":39}},{"start":{"line":64,"column":39},"end":{"line":64,"column":47}}],"line":64},"11":{"loc":{"start":{"line":73,"column":20},"end":{"line":73,"column":null}},"type":"cond-expr","locations":[{"start":{"line":73,"column":41},"end":{"line":73,"column":53}},{"start":{"line":73,"column":53},"end":{"line":73,"column":null}}],"line":73},"12":{"loc":{"start":{"line":74,"column":8},"end":{"line":76,"column":null}},"type":"if","locations":[{"start":{"line":74,"column":8},"end":{"line":76,"column":null}},{"start":{},"end":{}}],"line":74},"13":{"loc":{"start":{"line":97,"column":23},"end":{"line":97,"column":87}},"type":"binary-expr","locations":[{"start":{"line":97,"column":23},"end":{"line":97,"column":48}},{"start":{"line":97,"column":48},"end":{"line":97,"column":87}}],"line":97},"14":{"loc":{"start":{"line":102,"column":27},"end":{"line":102,"column":null}},"type":"binary-expr","locations":[{"start":{"line":102,"column":27},"end":{"line":102,"column":76}},{"start":{"line":102,"column":76},"end":{"line":102,"column":null}}],"line":102},"15":{"loc":{"start":{"line":104,"column":31},"end":{"line":104,"column":45}},"type":"binary-expr","locations":[{"start":{"line":104,"column":31},"end":{"line":104,"column":40}},{"start":{"line":104,"column":40},"end":{"line":104,"column":45}}],"line":104},"16":{"loc":{"start":{"line":104,"column":45},"end":{"line":104,"column":56}},"type":"binary-expr","locations":[{"start":{"line":104,"column":45},"end":{"line":104,"column":55}},{"start":{"line":104,"column":55},"end":{"line":104,"column":56}}],"line":104}},"s":{"0":8,"1":1,"2":3,"3":2,"4":1,"5":8,"6":4,"7":0,"8":4,"9":4,"10":5,"11":4,"12":0,"13":4,"14":4,"15":4,"16":1,"17":3,"18":3,"19":1,"20":2,"21":2,"22":1,"23":1,"24":1,"25":8,"26":1,"27":3,"28":1,"29":1},"f":{"0":8,"1":1,"2":3,"3":2,"4":4,"5":5,"6":1,"7":3,"8":1},"b":{"0":[3,2],"1":[2,1],"2":[1,1],"3":[1,1],"4":[0,4],"5":[5,4],"6":[0,4],"7":[4,1],"8":[4,1],"9":[1,3],"10":[4,3],"11":[2,0],"12":[1,1],"13":[3,1],"14":[1,1],"15":[1,1],"16":[1,1]},"meta":{"lastBranch":17,"lastFunction":9,"lastStatement":30,"seen":{"f:8:16:8:40":0,"s:9:2:33:Infinity":0,"f:22:32:22:39":1,"s:23:12:30:Infinity":1,"f:24:9:24:17":2,"s:24:23:24:91":2,"b:24:23:24:52:24:52:24:91":0,"f:25:9:25:14":3,"s:25:21:30:10":3,"b:29:27:29:76:29:76:29:Infinity":1,"s:31:6:31:Infinity":4,"b:31:31:31:40:31:40:31:45":2,"b:31:45:31:55:31:55:31:56":3,"s:35:2:81:Infinity":5,"f:47:30:47:37":4,"b:48:6:50:Infinity:undefined:undefined:undefined:undefined":4,"s:48:6:50:Infinity":6,"s:49:8:49:Infinity":7,"s:51:18:51:Infinity":8,"s:52:16:52:Infinity":9,"f:52:20:52:26":5,"s:52:32:52:86":10,"b:52:32:52:61:52:61:52:86":5,"b:53:6:53:Infinity:undefined:undefined:undefined:undefined":6,"s:53:6:53:Infinity":11,"s:53:14:53:Infinity":12,"s:55:19:61:Infinity":13,"b:59:25:59:74:59:74:59:Infinity":7,"b:60:15:60:59:60:59:60:Infinity":8,"s:63:20:63:Infinity":14,"b:64:6:66:Infinity:undefined:undefined:undefined:undefined":9,"s:64:6:66:Infinity":15,"b:64:10:64:39:64:39:64:47":10,"s:65:8:65:Infinity":16,"s:67:6:79:Infinity":17,"s:68:23:68:Infinity":18,"s:69:8:69:Infinity":19,"s:73:20:73:Infinity":20,"b:73:41:73:53:73:53:73:Infinity":11,"b:74:8:76:Infinity:undefined:undefined:undefined:undefined":12,"s:74:8:76:Infinity":21,"s:75:10:75:Infinity":22,"s:77:8:77:Infinity":23,"s:78:8:78:Infinity":24,"s:83:2:106:Infinity":25,"f:95:28:95:35":6,"s:96:12:103:Infinity":26,"f:97:9:97:17":7,"s:97:23:97:87":27,"b:97:23:97:48:97:48:97:87":13,"f:98:9:98:14":8,"s:98:21:103:10":28,"b:102:27:102:76:102:76:102:Infinity":14,"s:104:6:104:Infinity":29,"b:104:31:104:40:104:40:104:45":15,"b:104:45:104:55:104:55:104:56":16},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/entities.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/entities.ts","statementMap":{"0":{"start":{"line":10,"column":2},"end":{"line":16,"column":null}},"1":{"start":{"line":20,"column":12},"end":{"line":20,"column":null}},"2":{"start":{"line":21,"column":17},"end":{"line":21,"column":null}},"3":{"start":{"line":22,"column":13},"end":{"line":22,"column":null}},"4":{"start":{"line":23,"column":15},"end":{"line":23,"column":null}},"5":{"start":{"line":24,"column":8},"end":{"line":24,"column":null}},"6":{"start":{"line":25,"column":2},"end":{"line":25,"column":null}},"7":{"start":{"line":25,"column":16},"end":{"line":25,"column":null}},"8":{"start":{"line":26,"column":14},"end":{"line":26,"column":null}},"9":{"start":{"line":27,"column":2},"end":{"line":32,"column":null}},"10":{"start":{"line":28,"column":4},"end":{"line":31,"column":null}},"11":{"start":{"line":28,"column":24},"end":{"line":28,"column":null}},"12":{"start":{"line":29,"column":9},"end":{"line":31,"column":null}},"13":{"start":{"line":29,"column":31},"end":{"line":29,"column":null}},"14":{"start":{"line":30,"column":9},"end":{"line":31,"column":null}},"15":{"start":{"line":30,"column":31},"end":{"line":30,"column":null}},"16":{"start":{"line":31,"column":9},"end":{"line":31,"column":null}},"17":{"start":{"line":33,"column":2},"end":{"line":33,"column":null}},"18":{"start":{"line":37,"column":18},"end":{"line":38,"column":null}},"19":{"start":{"line":38,"column":46},"end":{"line":38,"column":85}},"20":{"start":{"line":40,"column":2},"end":{"line":68,"column":null}},"21":{"start":{"line":55,"column":18},"end":{"line":55,"column":null}},"22":{"start":{"line":56,"column":21},"end":{"line":60,"column":null}},"23":{"start":{"line":57,"column":21},"end":{"line":57,"column":56}},"24":{"start":{"line":58,"column":23},"end":{"line":58,"column":34}},"25":{"start":{"line":59,"column":24},"end":{"line":59,"column":41}},"26":{"start":{"line":60,"column":20},"end":{"line":60,"column":32}},"27":{"start":{"line":61,"column":6},"end":{"line":66,"column":null}},"28":{"start":{"line":70,"column":2},"end":{"line":123,"column":null}},"29":{"start":{"line":89,"column":16},"end":{"line":89,"column":null}},"30":{"start":{"line":91,"column":6},"end":{"line":106,"column":null}},"31":{"start":{"line":92,"column":25},"end":{"line":92,"column":null}},"32":{"start":{"line":93,"column":23},"end":{"line":93,"column":null}},"33":{"start":{"line":94,"column":8},"end":{"line":97,"column":null}},"34":{"start":{"line":95,"column":10},"end":{"line":95,"column":null}},"35":{"start":{"line":96,"column":10},"end":{"line":96,"column":null}},"36":{"start":{"line":96,"column":22},"end":{"line":96,"column":null}},"37":{"start":{"line":98,"column":14},"end":{"line":99,"column":null}},"38":{"start":{"line":99,"column":10},"end":{"line":99,"column":null}},"39":{"start":{"line":99,"column":42},"end":{"line":99,"column":53}},"40":{"start":{"line":99,"column":85},"end":{"line":99,"column":96}},"41":{"start":{"line":100,"column":8},"end":{"line":105,"column":null}},"42":{"start":{"line":108,"column":6},"end":{"line":108,"column":null}},"43":{"start":{"line":108,"column":18},"end":{"line":108,"column":null}},"44":{"start":{"line":108,"column":42},"end":{"line":108,"column":82}},"45":{"start":{"line":109,"column":6},"end":{"line":109,"column":null}},"46":{"start":{"line":109,"column":17},"end":{"line":109,"column":null}},"47":{"start":{"line":109,"column":41},"end":{"line":109,"column":58}},"48":{"start":{"line":110,"column":6},"end":{"line":113,"column":null}},"49":{"start":{"line":111,"column":18},"end":{"line":111,"column":null}},"50":{"start":{"line":112,"column":8},"end":{"line":112,"column":null}},"51":{"start":{"line":112,"column":26},"end":{"line":112,"column":66}},"52":{"start":{"line":114,"column":6},"end":{"line":120,"column":null}},"53":{"start":{"line":115,"column":8},"end":{"line":119,"column":null}},"54":{"start":{"line":116,"column":23},"end":{"line":116,"column":59}},"55":{"start":{"line":117,"column":25},"end":{"line":117,"column":36}},"56":{"start":{"line":118,"column":26},"end":{"line":118,"column":43}},"57":{"start":{"line":119,"column":22},"end":{"line":119,"column":25}},"58":{"start":{"line":121,"column":6},"end":{"line":121,"column":null}},"59":{"start":{"line":125,"column":2},"end":{"line":160,"column":null}},"60":{"start":{"line":138,"column":6},"end":{"line":140,"column":null}},"61":{"start":{"line":139,"column":8},"end":{"line":139,"column":null}},"62":{"start":{"line":141,"column":18},"end":{"line":141,"column":null}},"63":{"start":{"line":142,"column":16},"end":{"line":142,"column":null}},"64":{"start":{"line":142,"column":32},"end":{"line":142,"column":57}},"65":{"start":{"line":143,"column":6},"end":{"line":143,"column":null}},"66":{"start":{"line":143,"column":14},"end":{"line":143,"column":null}},"67":{"start":{"line":144,"column":50},"end":{"line":144,"column":null}},"68":{"start":{"line":145,"column":6},"end":{"line":148,"column":null}},"69":{"start":{"line":146,"column":18},"end":{"line":146,"column":null}},"70":{"start":{"line":147,"column":8},"end":{"line":147,"column":null}},"71":{"start":{"line":149,"column":6},"end":{"line":158,"column":null}},"72":{"start":{"line":162,"column":2},"end":{"line":183,"column":null}},"73":{"start":{"line":171,"column":26},"end":{"line":171,"column":null}},"74":{"start":{"line":172,"column":21},"end":{"line":172,"column":null}},"75":{"start":{"line":173,"column":6},"end":{"line":173,"column":null}},"76":{"start":{"line":173,"column":27},"end":{"line":173,"column":null}},"77":{"start":{"line":173,"column":39},"end":{"line":173,"column":null}},"78":{"start":{"line":174,"column":6},"end":{"line":181,"column":null}},"79":{"start":{"line":175,"column":38},"end":{"line":179,"column":10}},"80":{"start":{"line":185,"column":2},"end":{"line":217,"column":null}},"81":{"start":{"line":200,"column":19},"end":{"line":200,"column":null}},"82":{"start":{"line":201,"column":23},"end":{"line":201,"column":null}},"83":{"start":{"line":201,"column":53},"end":{"line":201,"column":72}},"84":{"start":{"line":202,"column":20},"end":{"line":210,"column":null}},"85":{"start":{"line":203,"column":23},"end":{"line":203,"column":37}},"86":{"start":{"line":204,"column":21},"end":{"line":210,"column":10}},"87":{"start":{"line":211,"column":6},"end":{"line":214,"column":null}},"88":{"start":{"line":212,"column":18},"end":{"line":212,"column":null}},"89":{"start":{"line":213,"column":8},"end":{"line":213,"column":null}},"90":{"start":{"line":213,"column":34},"end":{"line":213,"column":74}},"91":{"start":{"line":215,"column":6},"end":{"line":215,"column":null}}},"fnMap":{"0":{"name":"summary","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":17}},"loc":{"start":{"line":9,"column":35},"end":{"line":17,"column":null}},"line":9},"1":{"name":"matchQuery","decl":{"start":{"line":19,"column":9},"end":{"line":19,"column":20}},"loc":{"start":{"line":19,"column":61},"end":{"line":34,"column":null}},"line":19},"2":{"name":"registerEntityTools","decl":{"start":{"line":36,"column":16},"end":{"line":36,"column":36}},"loc":{"start":{"line":36,"column":79},"end":{"line":218,"column":null}},"line":36},"3":{"name":"(anonymous_3)","decl":{"start":{"line":37,"column":18},"end":{"line":37,"column":null}},"loc":{"start":{"line":37,"column":18},"end":{"line":38,"column":null}},"line":37},"4":{"name":"(anonymous_4)","decl":{"start":{"line":38,"column":32},"end":{"line":38,"column":40}},"loc":{"start":{"line":38,"column":46},"end":{"line":38,"column":85}},"line":38},"5":{"name":"(anonymous_5)","decl":{"start":{"line":54,"column":31},"end":{"line":54,"column":38}},"loc":{"start":{"line":54,"column":59},"end":{"line":67,"column":5}},"line":54},"6":{"name":"(anonymous_6)","decl":{"start":{"line":57,"column":9},"end":{"line":57,"column":14}},"loc":{"start":{"line":57,"column":21},"end":{"line":57,"column":56}},"line":57},"7":{"name":"(anonymous_7)","decl":{"start":{"line":58,"column":9},"end":{"line":58,"column":17}},"loc":{"start":{"line":58,"column":23},"end":{"line":58,"column":34}},"line":58},"8":{"name":"(anonymous_8)","decl":{"start":{"line":59,"column":9},"end":{"line":59,"column":15}},"loc":{"start":{"line":59,"column":24},"end":{"line":59,"column":41}},"line":59},"9":{"name":"(anonymous_9)","decl":{"start":{"line":60,"column":9},"end":{"line":60,"column":14}},"loc":{"start":{"line":60,"column":20},"end":{"line":60,"column":32}},"line":60},"10":{"name":"(anonymous_10)","decl":{"start":{"line":88,"column":29},"end":{"line":88,"column":36}},"loc":{"start":{"line":88,"column":87},"end":{"line":122,"column":5}},"line":88},"11":{"name":"(anonymous_11)","decl":{"start":{"line":98,"column":14},"end":{"line":98,"column":21}},"loc":{"start":{"line":99,"column":10},"end":{"line":99,"column":null}},"line":99},"12":{"name":"(anonymous_12)","decl":{"start":{"line":99,"column":27},"end":{"line":99,"column":33}},"loc":{"start":{"line":99,"column":42},"end":{"line":99,"column":53}},"line":99},"13":{"name":"(anonymous_13)","decl":{"start":{"line":99,"column":68},"end":{"line":99,"column":73}},"loc":{"start":{"line":99,"column":85},"end":{"line":99,"column":96}},"line":99},"14":{"name":"(anonymous_14)","decl":{"start":{"line":108,"column":28},"end":{"line":108,"column":36}},"loc":{"start":{"line":108,"column":42},"end":{"line":108,"column":82}},"line":108},"15":{"name":"(anonymous_15)","decl":{"start":{"line":109,"column":27},"end":{"line":109,"column":35}},"loc":{"start":{"line":109,"column":41},"end":{"line":109,"column":58}},"line":109},"16":{"name":"(anonymous_16)","decl":{"start":{"line":112,"column":18},"end":{"line":112,"column":26}},"loc":{"start":{"line":112,"column":26},"end":{"line":112,"column":66}},"line":112},"17":{"name":"(anonymous_17)","decl":{"start":{"line":116,"column":11},"end":{"line":116,"column":16}},"loc":{"start":{"line":116,"column":23},"end":{"line":116,"column":59}},"line":116},"18":{"name":"(anonymous_18)","decl":{"start":{"line":117,"column":11},"end":{"line":117,"column":19}},"loc":{"start":{"line":117,"column":25},"end":{"line":117,"column":36}},"line":117},"19":{"name":"(anonymous_19)","decl":{"start":{"line":118,"column":11},"end":{"line":118,"column":17}},"loc":{"start":{"line":118,"column":26},"end":{"line":118,"column":43}},"line":118},"20":{"name":"(anonymous_20)","decl":{"start":{"line":119,"column":11},"end":{"line":119,"column":16}},"loc":{"start":{"line":119,"column":22},"end":{"line":119,"column":25}},"line":119},"21":{"name":"(anonymous_21)","decl":{"start":{"line":137,"column":26},"end":{"line":137,"column":33}},"loc":{"start":{"line":137,"column":51},"end":{"line":159,"column":5}},"line":137},"22":{"name":"(anonymous_22)","decl":{"start":{"line":142,"column":20},"end":{"line":142,"column":26}},"loc":{"start":{"line":142,"column":32},"end":{"line":142,"column":57}},"line":142},"23":{"name":"(anonymous_23)","decl":{"start":{"line":170,"column":26},"end":{"line":170,"column":38}},"loc":{"start":{"line":170,"column":38},"end":{"line":182,"column":5}},"line":170},"24":{"name":"(anonymous_24)","decl":{"start":{"line":175,"column":26},"end":{"line":175,"column":31}},"loc":{"start":{"line":175,"column":38},"end":{"line":179,"column":10}},"line":175},"25":{"name":"(anonymous_25)","decl":{"start":{"line":199,"column":28},"end":{"line":199,"column":35}},"loc":{"start":{"line":199,"column":63},"end":{"line":216,"column":5}},"line":199},"26":{"name":"(anonymous_26)","decl":{"start":{"line":201,"column":42},"end":{"line":201,"column":47}},"loc":{"start":{"line":201,"column":53},"end":{"line":201,"column":72}},"line":201},"27":{"name":"(anonymous_27)","decl":{"start":{"line":203,"column":9},"end":{"line":203,"column":17}},"loc":{"start":{"line":203,"column":23},"end":{"line":203,"column":37}},"line":203},"28":{"name":"(anonymous_28)","decl":{"start":{"line":204,"column":9},"end":{"line":204,"column":14}},"loc":{"start":{"line":204,"column":21},"end":{"line":210,"column":10}},"line":204},"29":{"name":"(anonymous_29)","decl":{"start":{"line":213,"column":26},"end":{"line":213,"column":34}},"loc":{"start":{"line":213,"column":34},"end":{"line":213,"column":74}},"line":213}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":16},"end":{"line":24,"column":28}},"type":"binary-expr","locations":[{"start":{"line":24,"column":16},"end":{"line":24,"column":26}},{"start":{"line":24,"column":26},"end":{"line":24,"column":28}}],"line":24},"1":{"loc":{"start":{"line":25,"column":2},"end":{"line":25,"column":null}},"type":"if","locations":[{"start":{"line":25,"column":2},"end":{"line":25,"column":null}},{"start":{},"end":{}}],"line":25},"2":{"loc":{"start":{"line":28,"column":4},"end":{"line":31,"column":null}},"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":31,"column":null}},{"start":{"line":29,"column":9},"end":{"line":31,"column":null}}],"line":28},"3":{"loc":{"start":{"line":29,"column":9},"end":{"line":31,"column":null}},"type":"if","locations":[{"start":{"line":29,"column":9},"end":{"line":31,"column":null}},{"start":{"line":30,"column":9},"end":{"line":31,"column":null}}],"line":29},"4":{"loc":{"start":{"line":30,"column":9},"end":{"line":31,"column":null}},"type":"if","locations":[{"start":{"line":30,"column":9},"end":{"line":31,"column":null}},{"start":{"line":31,"column":9},"end":{"line":31,"column":null}}],"line":30},"5":{"loc":{"start":{"line":63,"column":8},"end":{"line":63,"column":null}},"type":"binary-expr","locations":[{"start":{"line":63,"column":8},"end":{"line":63,"column":17}},{"start":{"line":63,"column":17},"end":{"line":63,"column":null}}],"line":63},"6":{"loc":{"start":{"line":65,"column":8},"end":{"line":65,"column":null}},"type":"cond-expr","locations":[{"start":{"line":65,"column":30},"end":{"line":65,"column":103}},{"start":{"line":65,"column":103},"end":{"line":65,"column":null}}],"line":65},"7":{"loc":{"start":{"line":91,"column":6},"end":{"line":106,"column":null}},"type":"if","locations":[{"start":{"line":91,"column":6},"end":{"line":106,"column":null}},{"start":{},"end":{}}],"line":91},"8":{"loc":{"start":{"line":91,"column":10},"end":{"line":91,"column":49}},"type":"binary-expr","locations":[{"start":{"line":91,"column":10},"end":{"line":91,"column":21}},{"start":{"line":91,"column":21},"end":{"line":91,"column":30}},{"start":{"line":91,"column":30},"end":{"line":91,"column":41}},{"start":{"line":91,"column":41},"end":{"line":91,"column":49}}],"line":91},"9":{"loc":{"start":{"line":95,"column":34},"end":{"line":95,"column":65}},"type":"binary-expr","locations":[{"start":{"line":95,"column":34},"end":{"line":95,"column":60}},{"start":{"line":95,"column":60},"end":{"line":95,"column":65}}],"line":95},"10":{"loc":{"start":{"line":96,"column":10},"end":{"line":96,"column":null}},"type":"if","locations":[{"start":{"line":96,"column":10},"end":{"line":96,"column":null}},{"start":{},"end":{}}],"line":96},"11":{"loc":{"start":{"line":96,"column":42},"end":{"line":96,"column":69}},"type":"binary-expr","locations":[{"start":{"line":96,"column":42},"end":{"line":96,"column":64}},{"start":{"line":96,"column":64},"end":{"line":96,"column":69}}],"line":96},"12":{"loc":{"start":{"line":108,"column":6},"end":{"line":108,"column":null}},"type":"if","locations":[{"start":{"line":108,"column":6},"end":{"line":108,"column":null}},{"start":{},"end":{}}],"line":108},"13":{"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},"14":{"loc":{"start":{"line":110,"column":6},"end":{"line":113,"column":null}},"type":"if","locations":[{"start":{"line":110,"column":6},"end":{"line":113,"column":null}},{"start":{},"end":{}}],"line":110},"15":{"loc":{"start":{"line":112,"column":33},"end":{"line":112,"column":45}},"type":"binary-expr","locations":[{"start":{"line":112,"column":33},"end":{"line":112,"column":43}},{"start":{"line":112,"column":43},"end":{"line":112,"column":45}}],"line":112},"16":{"loc":{"start":{"line":114,"column":6},"end":{"line":120,"column":null}},"type":"if","locations":[{"start":{"line":114,"column":6},"end":{"line":120,"column":null}},{"start":{},"end":{}}],"line":114},"17":{"loc":{"start":{"line":121,"column":44},"end":{"line":121,"column":57}},"type":"binary-expr","locations":[{"start":{"line":121,"column":44},"end":{"line":121,"column":53}},{"start":{"line":121,"column":53},"end":{"line":121,"column":57}}],"line":121},"18":{"loc":{"start":{"line":121,"column":57},"end":{"line":121,"column":68}},"type":"binary-expr","locations":[{"start":{"line":121,"column":57},"end":{"line":121,"column":67}},{"start":{"line":121,"column":67},"end":{"line":121,"column":68}}],"line":121},"19":{"loc":{"start":{"line":138,"column":6},"end":{"line":140,"column":null}},"type":"if","locations":[{"start":{"line":138,"column":6},"end":{"line":140,"column":null}},{"start":{},"end":{}}],"line":138},"20":{"loc":{"start":{"line":143,"column":6},"end":{"line":143,"column":null}},"type":"if","locations":[{"start":{"line":143,"column":6},"end":{"line":143,"column":null}},{"start":{},"end":{}}],"line":143},"21":{"loc":{"start":{"line":146,"column":18},"end":{"line":146,"column":null}},"type":"binary-expr","locations":[{"start":{"line":146,"column":18},"end":{"line":146,"column":39}},{"start":{"line":146,"column":39},"end":{"line":146,"column":null}}],"line":146},"22":{"loc":{"start":{"line":147,"column":24},"end":{"line":147,"column":null}},"type":"cond-expr","locations":[{"start":{"line":147,"column":41},"end":{"line":147,"column":57}},{"start":{"line":147,"column":57},"end":{"line":147,"column":null}}],"line":147},"23":{"loc":{"start":{"line":173,"column":27},"end":{"line":173,"column":null}},"type":"if","locations":[{"start":{"line":173,"column":27},"end":{"line":173,"column":null}},{"start":{},"end":{}}],"line":173},"24":{"loc":{"start":{"line":173,"column":59},"end":{"line":173,"column":86}},"type":"binary-expr","locations":[{"start":{"line":173,"column":59},"end":{"line":173,"column":81}},{"start":{"line":173,"column":81},"end":{"line":173,"column":86}}],"line":173},"25":{"loc":{"start":{"line":178,"column":20},"end":{"line":178,"column":null}},"type":"binary-expr","locations":[{"start":{"line":178,"column":20},"end":{"line":178,"column":42}},{"start":{"line":178,"column":42},"end":{"line":178,"column":null}}],"line":178},"26":{"loc":{"start":{"line":206,"column":16},"end":{"line":206,"column":null}},"type":"binary-expr","locations":[{"start":{"line":206,"column":16},"end":{"line":206,"column":34}},{"start":{"line":206,"column":34},"end":{"line":206,"column":44}},{"start":{"line":206,"column":44},"end":{"line":206,"column":null}}],"line":206},"27":{"loc":{"start":{"line":209,"column":16},"end":{"line":209,"column":null}},"type":"cond-expr","locations":[{"start":{"line":209,"column":29},"end":{"line":209,"column":64}},{"start":{"line":209,"column":64},"end":{"line":209,"column":null}}],"line":209},"28":{"loc":{"start":{"line":209,"column":29},"end":{"line":209,"column":64}},"type":"binary-expr","locations":[{"start":{"line":209,"column":29},"end":{"line":209,"column":56}},{"start":{"line":209,"column":56},"end":{"line":209,"column":64}}],"line":209},"29":{"loc":{"start":{"line":211,"column":6},"end":{"line":214,"column":null}},"type":"if","locations":[{"start":{"line":211,"column":6},"end":{"line":214,"column":null}},{"start":{},"end":{}}],"line":211},"30":{"loc":{"start":{"line":213,"column":41},"end":{"line":213,"column":53}},"type":"binary-expr","locations":[{"start":{"line":213,"column":41},"end":{"line":213,"column":51}},{"start":{"line":213,"column":51},"end":{"line":213,"column":53}}],"line":213},"31":{"loc":{"start":{"line":215,"column":35},"end":{"line":215,"column":48}},"type":"binary-expr","locations":[{"start":{"line":215,"column":35},"end":{"line":215,"column":44}},{"start":{"line":215,"column":44},"end":{"line":215,"column":48}}],"line":215},"32":{"loc":{"start":{"line":215,"column":48},"end":{"line":215,"column":59}},"type":"binary-expr","locations":[{"start":{"line":215,"column":48},"end":{"line":215,"column":58}},{"start":{"line":215,"column":58},"end":{"line":215,"column":59}}],"line":215}},"s":{"0":7,"1":15,"2":15,"3":15,"4":15,"5":15,"6":15,"7":1,"8":14,"9":14,"10":16,"11":3,"12":13,"13":0,"14":13,"15":0,"16":13,"17":1,"18":10,"19":40,"20":16,"21":4,"22":4,"23":15,"24":15,"25":0,"26":2,"27":4,"28":16,"29":5,"30":5,"31":1,"32":1,"33":1,"34":4,"35":4,"36":4,"37":1,"38":2,"39":4,"40":6,"41":1,"42":4,"43":3,"44":11,"45":4,"46":1,"47":2,"48":4,"49":1,"50":1,"51":4,"52":4,"53":0,"54":0,"55":0,"56":0,"57":0,"58":4,"59":16,"60":3,"61":1,"62":2,"63":2,"64":5,"65":2,"66":1,"67":1,"68":1,"69":2,"70":2,"71":1,"72":16,"73":1,"74":1,"75":1,"76":4,"77":4,"78":1,"79":2,"80":16,"81":1,"82":1,"83":1,"84":1,"85":3,"86":2,"87":1,"88":1,"89":1,"90":2,"91":1},"f":{"0":7,"1":15,"2":16,"3":10,"4":40,"5":4,"6":15,"7":15,"8":0,"9":2,"10":5,"11":2,"12":4,"13":6,"14":11,"15":2,"16":4,"17":0,"18":0,"19":0,"20":0,"21":3,"22":5,"23":1,"24":2,"25":1,"26":1,"27":3,"28":2,"29":2},"b":{"0":[15,0],"1":[1,14],"2":[3,13],"3":[0,13],"4":[0,13],"5":[4,4],"6":[2,2],"7":[1,4],"8":[5,2,1,1],"9":[4,3],"10":[4,0],"11":[4,3],"12":[3,1],"13":[1,3],"14":[1,3],"15":[4,0],"16":[0,4],"17":[4,4],"18":[5,4],"19":[1,2],"20":[1,1],"21":[2,0],"22":[1,1],"23":[4,0],"24":[4,3],"25":[2,1],"26":[2,1,0],"27":[1,1],"28":[1,0],"29":[1,0],"30":[2,1],"31":[1,1],"32":[1,1]},"meta":{"lastBranch":33,"lastFunction":30,"lastStatement":92,"seen":{"f:9:9:9:17":0,"s:10:2:16:Infinity":0,"f:19:9:19:20":1,"s:20:12:20:Infinity":1,"s:21:17:21:Infinity":2,"s:22:13:22:Infinity":3,"s:23:15:23:Infinity":4,"s:24:8:24:Infinity":5,"b:24:16:24:26:24:26:24:28":0,"b:25:2:25:Infinity:undefined:undefined:undefined:undefined":1,"s:25:2:25:Infinity":6,"s:25:16:25:Infinity":7,"s:26:14:26:Infinity":8,"s:27:2:32:Infinity":9,"b:28:4:31:Infinity:29:9:31:Infinity":2,"s:28:4:31:Infinity":10,"s:28:24:28:Infinity":11,"b:29:9:31:Infinity:30:9:31:Infinity":3,"s:29:9:31:Infinity":12,"s:29:31:29:Infinity":13,"b:30:9:31:Infinity:31:9:31:Infinity":4,"s:30:9:31:Infinity":14,"s:30:31:30:Infinity":15,"s:31:9:31:Infinity":16,"s:33:2:33:Infinity":17,"f:36:16:36:36":2,"s:37:18:38:Infinity":18,"f:37:18:37:Infinity":3,"f:38:32:38:40":4,"s:38:46:38:85":19,"s:40:2:68:Infinity":20,"f:54:31:54:38":5,"s:55:18:55:Infinity":21,"s:56:21:60:Infinity":22,"f:57:9:57:14":6,"s:57:21:57:56":23,"f:58:9:58:17":7,"s:58:23:58:34":24,"f:59:9:59:15":8,"s:59:24:59:41":25,"f:60:9:60:14":9,"s:60:20:60:32":26,"s:61:6:66:Infinity":27,"b:63:8:63:17:63:17:63:Infinity":5,"b:65:30:65:103:65:103:65:Infinity":6,"s:70:2:123:Infinity":28,"f:88:29:88:36":10,"s:89:16:89:Infinity":29,"b:91:6:106:Infinity:undefined:undefined:undefined:undefined":7,"s:91:6:106:Infinity":30,"b:91:10:91:21:91:21:91:30:91:30:91:41:91:41:91:49":8,"s:92:25:92:Infinity":31,"s:93:23:93:Infinity":32,"s:94:8:97:Infinity":33,"s:95:10:95:Infinity":34,"b:95:34:95:60:95:60:95:65":9,"b:96:10:96:Infinity:undefined:undefined:undefined:undefined":10,"s:96:10:96:Infinity":35,"s:96:22:96:Infinity":36,"b:96:42:96:64:96:64:96:69":11,"s:98:14:99:Infinity":37,"f:98:14:98:21":11,"s:99:10:99:Infinity":38,"f:99:27:99:33":12,"s:99:42:99:53":39,"f:99:68:99:73":13,"s:99:85:99:96":40,"s:100:8:105:Infinity":41,"b:108:6:108:Infinity:undefined:undefined:undefined:undefined":12,"s:108:6:108:Infinity":42,"s:108:18:108:Infinity":43,"f:108:28:108:36":14,"s:108:42:108:82":44,"b:109:6:109:Infinity:undefined:undefined:undefined:undefined":13,"s:109:6:109:Infinity":45,"s:109:17:109:Infinity":46,"f:109:27:109:35":15,"s:109:41:109:58":47,"b:110:6:113:Infinity:undefined:undefined:undefined:undefined":14,"s:110:6:113:Infinity":48,"s:111:18:111:Infinity":49,"s:112:8:112:Infinity":50,"f:112:18:112:26":16,"s:112:26:112:66":51,"b:112:33:112:43:112:43:112:45":15,"b:114:6:120:Infinity:undefined:undefined:undefined:undefined":16,"s:114:6:120:Infinity":52,"s:115:8:119:Infinity":53,"f:116:11:116:16":17,"s:116:23:116:59":54,"f:117:11:117:19":18,"s:117:25:117:36":55,"f:118:11:118:17":19,"s:118:26:118:43":56,"f:119:11:119:16":20,"s:119:22:119:25":57,"s:121:6:121:Infinity":58,"b:121:44:121:53:121:53:121:57":17,"b:121:57:121:67:121:67:121:68":18,"s:125:2:160:Infinity":59,"f:137:26:137:33":21,"b:138:6:140:Infinity:undefined:undefined:undefined:undefined":19,"s:138:6:140:Infinity":60,"s:139:8:139:Infinity":61,"s:141:18:141:Infinity":62,"s:142:16:142:Infinity":63,"f:142:20:142:26":22,"s:142:32:142:57":64,"b:143:6:143:Infinity:undefined:undefined:undefined:undefined":20,"s:143:6:143:Infinity":65,"s:143:14:143:Infinity":66,"s:144:50:144:Infinity":67,"s:145:6:148:Infinity":68,"s:146:18:146:Infinity":69,"b:146:18:146:39:146:39:146:Infinity":21,"s:147:8:147:Infinity":70,"b:147:41:147:57:147:57:147:Infinity":22,"s:149:6:158:Infinity":71,"s:162:2:183:Infinity":72,"f:170:26:170:38":23,"s:171:26:171:Infinity":73,"s:172:21:172:Infinity":74,"s:173:6:173:Infinity":75,"b:173:27:173:Infinity:undefined:undefined:undefined:undefined":23,"s:173:27:173:Infinity":76,"s:173:39:173:Infinity":77,"b:173:59:173:81:173:81:173:86":24,"s:174:6:181:Infinity":78,"f:175:26:175:31":24,"s:175:38:179:10":79,"b:178:20:178:42:178:42:178:Infinity":25,"s:185:2:217:Infinity":80,"f:199:28:199:35":25,"s:200:19:200:Infinity":81,"s:201:23:201:Infinity":82,"f:201:42:201:47":26,"s:201:53:201:72":83,"s:202:20:210:Infinity":84,"f:203:9:203:17":27,"s:203:23:203:37":85,"f:204:9:204:14":28,"s:204:21:210:10":86,"b:206:16:206:34:206:34:206:44:206:44:206:Infinity":26,"b:209:29:209:64:209:64:209:Infinity":27,"b:209:29:209:56:209:56:209:64":28,"b:211:6:214:Infinity:undefined:undefined:undefined:undefined":29,"s:211:6:214:Infinity":87,"s:212:18:212:Infinity":88,"s:213:8:213:Infinity":89,"f:213:26:213:34":29,"s:213:34:213:74":90,"b:213:41:213:51:213:51:213:53":30,"s:215:6:215:Infinity":91,"b:215:35:215:44:215:44:215:48":31,"b:215:48:215:58:215:58:215:59":32},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/history.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/history.ts","statementMap":{"0":{"start":{"line":10,"column":19},"end":{"line":10,"column":null}},"1":{"start":{"line":11,"column":20},"end":{"line":11,"column":null}},"2":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"3":{"start":{"line":15,"column":26},"end":{"line":15,"column":null}},"4":{"start":{"line":16,"column":17},"end":{"line":16,"column":null}},"5":{"start":{"line":17,"column":15},"end":{"line":17,"column":null}},"6":{"start":{"line":17,"column":37},"end":{"line":17,"column":53}},"7":{"start":{"line":18,"column":15},"end":{"line":18,"column":null}},"8":{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},"9":{"start":{"line":19,"column":60},"end":{"line":19,"column":null}},"10":{"start":{"line":20,"column":2},"end":{"line":23,"column":null}},"11":{"start":{"line":27,"column":2},"end":{"line":69,"column":null}},"12":{"start":{"line":44,"column":6},"end":{"line":46,"column":null}},"13":{"start":{"line":45,"column":8},"end":{"line":45,"column":null}},"14":{"start":{"line":47,"column":16},"end":{"line":47,"column":null}},"15":{"start":{"line":48,"column":41},"end":{"line":57,"column":null}},"16":{"start":{"line":61,"column":18},"end":{"line":61,"column":null}},"17":{"start":{"line":62,"column":21},"end":{"line":65,"column":null}},"18":{"start":{"line":62,"column":37},"end":{"line":65,"column":8}},"19":{"start":{"line":66,"column":29},"end":{"line":66,"column":null}},"20":{"start":{"line":67,"column":6},"end":{"line":67,"column":null}},"21":{"start":{"line":71,"column":2},"end":{"line":114,"column":null}},"22":{"start":{"line":89,"column":18},"end":{"line":89,"column":null}},"23":{"start":{"line":90,"column":6},"end":{"line":92,"column":null}},"24":{"start":{"line":91,"column":8},"end":{"line":91,"column":null}},"25":{"start":{"line":91,"column":45},"end":{"line":91,"column":null}},"26":{"start":{"line":93,"column":16},"end":{"line":93,"column":null}},"27":{"start":{"line":94,"column":41},"end":{"line":99,"column":null}},"28":{"start":{"line":100,"column":12},"end":{"line":100,"column":null}},"29":{"start":{"line":100,"column":37},"end":{"line":100,"column":null}},"30":{"start":{"line":101,"column":43},"end":{"line":101,"column":null}},"31":{"start":{"line":102,"column":6},"end":{"line":111,"column":null}},"32":{"start":{"line":103,"column":8},"end":{"line":110,"column":null}},"33":{"start":{"line":103,"column":35},"end":{"line":110,"column":10}},"34":{"start":{"line":112,"column":6},"end":{"line":112,"column":null}},"35":{"start":{"line":116,"column":2},"end":{"line":157,"column":null}},"36":{"start":{"line":132,"column":6},"end":{"line":134,"column":null}},"37":{"start":{"line":133,"column":8},"end":{"line":133,"column":null}},"38":{"start":{"line":135,"column":16},"end":{"line":135,"column":null}},"39":{"start":{"line":136,"column":47},"end":{"line":136,"column":null}},"40":{"start":{"line":137,"column":6},"end":{"line":137,"column":null}},"41":{"start":{"line":137,"column":21},"end":{"line":137,"column":null}},"42":{"start":{"line":138,"column":26},"end":{"line":138,"column":null}},"43":{"start":{"line":139,"column":22},"end":{"line":139,"column":null}},"44":{"start":{"line":139,"column":40},"end":{"line":139,"column":95}},"45":{"start":{"line":140,"column":21},"end":{"line":146,"column":null}},"46":{"start":{"line":140,"column":61},"end":{"line":146,"column":8}},"47":{"start":{"line":147,"column":6},"end":{"line":155,"column":null}}},"fnMap":{"0":{"name":"downsample","decl":{"start":{"line":14,"column":9},"end":{"line":14,"column":23}},"loc":{"start":{"line":14,"column":77},"end":{"line":24,"column":null}},"line":14},"1":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":20},"end":{"line":17,"column":28}},"loc":{"start":{"line":17,"column":37},"end":{"line":17,"column":53}},"line":17},"2":{"name":"registerHistoryTools","decl":{"start":{"line":26,"column":16},"end":{"line":26,"column":37}},"loc":{"start":{"line":26,"column":80},"end":{"line":158,"column":null}},"line":26},"3":{"name":"(anonymous_3)","decl":{"start":{"line":43,"column":27},"end":{"line":43,"column":34}},"loc":{"start":{"line":43,"column":71},"end":{"line":68,"column":5}},"line":43},"4":{"name":"(anonymous_4)","decl":{"start":{"line":62,"column":25},"end":{"line":62,"column":30}},"loc":{"start":{"line":62,"column":37},"end":{"line":65,"column":8}},"line":62},"5":{"name":"(anonymous_5)","decl":{"start":{"line":88,"column":30},"end":{"line":88,"column":37}},"loc":{"start":{"line":88,"column":85},"end":{"line":113,"column":5}},"line":88},"6":{"name":"(anonymous_6)","decl":{"start":{"line":100,"column":12},"end":{"line":100,"column":21}},"loc":{"start":{"line":100,"column":37},"end":{"line":100,"column":null}},"line":100},"7":{"name":"(anonymous_7)","decl":{"start":{"line":103,"column":23},"end":{"line":103,"column":28}},"loc":{"start":{"line":103,"column":35},"end":{"line":110,"column":10}},"line":103},"8":{"name":"(anonymous_8)","decl":{"start":{"line":131,"column":27},"end":{"line":131,"column":34}},"loc":{"start":{"line":131,"column":71},"end":{"line":156,"column":5}},"line":131},"9":{"name":"(anonymous_9)","decl":{"start":{"line":139,"column":26},"end":{"line":139,"column":34}},"loc":{"start":{"line":139,"column":40},"end":{"line":139,"column":95}},"line":139},"10":{"name":"(anonymous_10)","decl":{"start":{"line":140,"column":49},"end":{"line":140,"column":54}},"loc":{"start":{"line":140,"column":61},"end":{"line":146,"column":8}},"line":140}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},{"start":{},"end":{}}],"line":15},"1":{"loc":{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},{"start":{},"end":{}}],"line":19},"2":{"loc":{"start":{"line":19,"column":6},"end":{"line":19,"column":60}},"type":"binary-expr","locations":[{"start":{"line":19,"column":6},"end":{"line":19,"column":28}},{"start":{"line":19,"column":28},"end":{"line":19,"column":60}}],"line":19},"3":{"loc":{"start":{"line":44,"column":6},"end":{"line":46,"column":null}},"type":"if","locations":[{"start":{"line":44,"column":6},"end":{"line":46,"column":null}},{"start":{},"end":{}}],"line":44},"4":{"loc":{"start":{"line":61,"column":18},"end":{"line":61,"column":null}},"type":"binary-expr","locations":[{"start":{"line":61,"column":18},"end":{"line":61,"column":38}},{"start":{"line":61,"column":38},"end":{"line":61,"column":null}}],"line":61},"5":{"loc":{"start":{"line":63,"column":17},"end":{"line":63,"column":57}},"type":"binary-expr","locations":[{"start":{"line":63,"column":17},"end":{"line":63,"column":25}},{"start":{"line":63,"column":25},"end":{"line":63,"column":43}},{"start":{"line":63,"column":43},"end":{"line":63,"column":57}}],"line":63},"6":{"loc":{"start":{"line":64,"column":15},"end":{"line":64,"column":null}},"type":"binary-expr","locations":[{"start":{"line":64,"column":15},"end":{"line":64,"column":22}},{"start":{"line":64,"column":22},"end":{"line":64,"column":null}}],"line":64},"7":{"loc":{"start":{"line":67,"column":92},"end":{"line":67,"column":114}},"type":"cond-expr","locations":[{"start":{"line":67,"column":99},"end":{"line":67,"column":110}},{"start":{"line":67,"column":110},"end":{"line":67,"column":114}}],"line":67},"8":{"loc":{"start":{"line":89,"column":18},"end":{"line":89,"column":null}},"type":"cond-expr","locations":[{"start":{"line":89,"column":48},"end":{"line":89,"column":63}},{"start":{"line":89,"column":63},"end":{"line":89,"column":null}}],"line":89},"9":{"loc":{"start":{"line":91,"column":8},"end":{"line":91,"column":null}},"type":"if","locations":[{"start":{"line":91,"column":8},"end":{"line":91,"column":null}},{"start":{},"end":{}}],"line":91},"10":{"loc":{"start":{"line":98,"column":16},"end":{"line":98,"column":null}},"type":"binary-expr","locations":[{"start":{"line":98,"column":16},"end":{"line":98,"column":26}},{"start":{"line":98,"column":26},"end":{"line":98,"column":null}}],"line":98},"11":{"loc":{"start":{"line":100,"column":37},"end":{"line":100,"column":null}},"type":"cond-expr","locations":[{"start":{"line":100,"column":61},"end":{"line":100,"column":91}},{"start":{"line":100,"column":91},"end":{"line":100,"column":null}}],"line":100},"12":{"loc":{"start":{"line":100,"column":91},"end":{"line":100,"column":null}},"type":"binary-expr","locations":[{"start":{"line":100,"column":91},"end":{"line":100,"column":96}},{"start":{"line":100,"column":96},"end":{"line":100,"column":null}}],"line":100},"13":{"loc":{"start":{"line":102,"column":46},"end":{"line":102,"column":55}},"type":"binary-expr","locations":[{"start":{"line":102,"column":46},"end":{"line":102,"column":53}},{"start":{"line":102,"column":53},"end":{"line":102,"column":55}}],"line":102},"14":{"loc":{"start":{"line":112,"column":49},"end":{"line":112,"column":67}},"type":"binary-expr","locations":[{"start":{"line":112,"column":49},"end":{"line":112,"column":59}},{"start":{"line":112,"column":59},"end":{"line":112,"column":67}}],"line":112},"15":{"loc":{"start":{"line":132,"column":6},"end":{"line":134,"column":null}},"type":"if","locations":[{"start":{"line":132,"column":6},"end":{"line":134,"column":null}},{"start":{},"end":{}}],"line":132},"16":{"loc":{"start":{"line":132,"column":10},"end":{"line":132,"column":63}},"type":"binary-expr","locations":[{"start":{"line":132,"column":10},"end":{"line":132,"column":23}},{"start":{"line":132,"column":23},"end":{"line":132,"column":63}}],"line":132},"17":{"loc":{"start":{"line":137,"column":6},"end":{"line":137,"column":null}},"type":"if","locations":[{"start":{"line":137,"column":6},"end":{"line":137,"column":null}},{"start":{},"end":{}}],"line":137},"18":{"loc":{"start":{"line":138,"column":26},"end":{"line":138,"column":null}},"type":"binary-expr","locations":[{"start":{"line":138,"column":26},"end":{"line":138,"column":79}},{"start":{"line":138,"column":79},"end":{"line":138,"column":null}}],"line":138},"19":{"loc":{"start":{"line":139,"column":40},"end":{"line":139,"column":95}},"type":"binary-expr","locations":[{"start":{"line":139,"column":40},"end":{"line":139,"column":56}},{"start":{"line":139,"column":56},"end":{"line":139,"column":95}}],"line":139},"20":{"loc":{"start":{"line":143,"column":12},"end":{"line":143,"column":null}},"type":"cond-expr","locations":[{"start":{"line":143,"column":24},"end":{"line":143,"column":49}},{"start":{"line":143,"column":49},"end":{"line":143,"column":null}}],"line":143},"21":{"loc":{"start":{"line":144,"column":12},"end":{"line":144,"column":null}},"type":"cond-expr","locations":[{"start":{"line":144,"column":36},"end":{"line":144,"column":57}},{"start":{"line":144,"column":57},"end":{"line":144,"column":null}}],"line":144},"22":{"loc":{"start":{"line":145,"column":12},"end":{"line":145,"column":null}},"type":"cond-expr","locations":[{"start":{"line":145,"column":26},"end":{"line":145,"column":55}},{"start":{"line":145,"column":55},"end":{"line":145,"column":null}}],"line":145},"23":{"loc":{"start":{"line":152,"column":12},"end":{"line":154,"column":null}},"type":"cond-expr","locations":[{"start":{"line":153,"column":12},"end":{"line":153,"column":null}},{"start":{"line":154,"column":12},"end":{"line":154,"column":null}}],"line":152}},"s":{"0":2,"1":2,"2":2,"3":1,"4":1,"5":1,"6":1200,"7":1,"8":1,"9":1,"10":1,"11":9,"12":4,"13":1,"14":3,"15":3,"16":2,"17":4,"18":1202,"19":4,"20":4,"21":9,"22":2,"23":2,"24":3,"25":0,"26":2,"27":2,"28":2,"29":5,"30":2,"31":2,"32":1,"33":1,"34":2,"35":9,"36":1,"37":0,"38":1,"39":1,"40":1,"41":0,"42":1,"43":1,"44":250,"45":1,"46":100,"47":1},"f":{"0":2,"1":1200,"2":9,"3":4,"4":1202,"5":2,"6":5,"7":1,"8":1,"9":250,"10":100},"b":{"0":[1,1],"1":[1,0],"2":[1,1],"3":[1,3],"4":[2,0],"5":[1202,1,0],"6":[1202,1],"7":[1,1],"8":[1,1],"9":[0,3],"10":[2,1],"11":[4,1],"12":[1,1],"13":[2,0],"14":[2,1],"15":[0,1],"16":[1,0],"17":[0,1],"18":[1,0],"19":[250,250],"20":[0,100],"21":[100,0],"22":[100,0],"23":[1,0]},"meta":{"lastBranch":24,"lastFunction":11,"lastStatement":48,"seen":{"s:10:19:10:Infinity":0,"s:11:20:11:Infinity":1,"f:14:9:14:23":0,"b:15:2:15:Infinity:undefined:undefined:undefined:undefined":0,"s:15:2:15:Infinity":2,"s:15:26:15:Infinity":3,"s:16:17:16:Infinity":4,"s:17:15:17:Infinity":5,"f:17:20:17:28":1,"s:17:37:17:53":6,"s:18:15:18:Infinity":7,"b:19:2:19:Infinity:undefined:undefined:undefined:undefined":1,"s:19:2:19:Infinity":8,"b:19:6:19:28:19:28:19:60":2,"s:19:60:19:Infinity":9,"s:20:2:23:Infinity":10,"f:26:16:26:37":2,"s:27:2:69:Infinity":11,"f:43:27:43:34":3,"b:44:6:46:Infinity:undefined:undefined:undefined:undefined":3,"s:44:6:46:Infinity":12,"s:45:8:45:Infinity":13,"s:47:16:47:Infinity":14,"s:48:41:57:Infinity":15,"s:61:18:61:Infinity":16,"b:61:18:61:38:61:38:61:Infinity":4,"s:62:21:65:Infinity":17,"f:62:25:62:30":4,"s:62:37:65:8":18,"b:63:17:63:25:63:25:63:43:63:43:63:57":5,"b:64:15:64:22:64:22:64:Infinity":6,"s:66:29:66:Infinity":19,"s:67:6:67:Infinity":20,"b:67:99:67:110:67:110:67:114":7,"s:71:2:114:Infinity":21,"f:88:30:88:37":5,"s:89:18:89:Infinity":22,"b:89:48:89:63:89:63:89:Infinity":8,"s:90:6:92:Infinity":23,"b:91:8:91:Infinity:undefined:undefined:undefined:undefined":9,"s:91:8:91:Infinity":24,"s:91:45:91:Infinity":25,"s:93:16:93:Infinity":26,"s:94:41:99:Infinity":27,"b:98:16:98:26:98:26:98:Infinity":10,"s:100:12:100:Infinity":28,"f:100:12:100:21":6,"s:100:37:100:Infinity":29,"b:100:61:100:91:100:91:100:Infinity":11,"b:100:91:100:96:100:96:100:Infinity":12,"s:101:43:101:Infinity":30,"s:102:6:111:Infinity":31,"b:102:46:102:53:102:53:102:55":13,"s:103:8:110:Infinity":32,"f:103:23:103:28":7,"s:103:35:110:10":33,"s:112:6:112:Infinity":34,"b:112:49:112:59:112:59:112:67":14,"s:116:2:157:Infinity":35,"f:131:27:131:34":8,"b:132:6:134:Infinity:undefined:undefined:undefined:undefined":15,"s:132:6:134:Infinity":36,"b:132:10:132:23:132:23:132:63":16,"s:133:8:133:Infinity":37,"s:135:16:135:Infinity":38,"s:136:47:136:Infinity":39,"b:137:6:137:Infinity:undefined:undefined:undefined:undefined":17,"s:137:6:137:Infinity":40,"s:137:21:137:Infinity":41,"s:138:26:138:Infinity":42,"b:138:26:138:79:138:79:138:Infinity":18,"s:139:22:139:Infinity":43,"f:139:26:139:34":9,"s:139:40:139:95":44,"b:139:40:139:56:139:56:139:95":19,"s:140:21:146:Infinity":45,"f:140:49:140:54":10,"s:140:61:146:8":46,"b:143:24:143:49:143:49:143:Infinity":20,"b:144:36:144:57:144:57:144:Infinity":21,"b:145:26:145:55:145:55:145:Infinity":22,"s:147:6:155:Infinity":47,"b:153:12:153:Infinity:154:12:154:Infinity":23},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/services.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/services.ts","statementMap":{"0":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"1":{"start":{"line":10,"column":15},"end":{"line":10,"column":null}},"2":{"start":{"line":11,"column":2},"end":{"line":17,"column":null}},"3":{"start":{"line":11,"column":52},"end":{"line":17,"column":4}},"4":{"start":{"line":21,"column":2},"end":{"line":75,"column":null}},"5":{"start":{"line":36,"column":23},"end":{"line":36,"column":null}},"6":{"start":{"line":41,"column":6},"end":{"line":52,"column":null}},"7":{"start":{"line":42,"column":18},"end":{"line":42,"column":null}},"8":{"start":{"line":43,"column":8},"end":{"line":43,"column":null}},"9":{"start":{"line":43,"column":16},"end":{"line":43,"column":null}},"10":{"start":{"line":44,"column":8},"end":{"line":51,"column":null}},"11":{"start":{"line":46,"column":60},"end":{"line":50,"column":12}},"12":{"start":{"line":54,"column":6},"end":{"line":65,"column":null}},"13":{"start":{"line":55,"column":18},"end":{"line":55,"column":null}},"14":{"start":{"line":56,"column":70},"end":{"line":56,"column":null}},"15":{"start":{"line":57,"column":8},"end":{"line":63,"column":null}},"16":{"start":{"line":58,"column":10},"end":{"line":62,"column":null}},"17":{"start":{"line":59,"column":25},"end":{"line":59,"column":null}},"18":{"start":{"line":60,"column":25},"end":{"line":60,"column":null}},"19":{"start":{"line":61,"column":12},"end":{"line":61,"column":null}},"20":{"start":{"line":61,"column":34},"end":{"line":61,"column":null}},"21":{"start":{"line":64,"column":8},"end":{"line":64,"column":null}},"22":{"start":{"line":67,"column":6},"end":{"line":73,"column":null}},"23":{"start":{"line":68,"column":64},"end":{"line":71,"column":10}},"24":{"start":{"line":79,"column":2},"end":{"line":79,"column":null}},"25":{"start":{"line":79,"column":27},"end":{"line":79,"column":null}},"26":{"start":{"line":81,"column":2},"end":{"line":161,"column":null}},"27":{"start":{"line":109,"column":18},"end":{"line":109,"column":null}},"28":{"start":{"line":110,"column":18},"end":{"line":110,"column":null}},"29":{"start":{"line":111,"column":12},"end":{"line":114,"column":null}},"30":{"start":{"line":112,"column":8},"end":{"line":112,"column":null}},"31":{"start":{"line":113,"column":8},"end":{"line":113,"column":null}},"32":{"start":{"line":116,"column":17},"end":{"line":116,"column":null}},"33":{"start":{"line":117,"column":6},"end":{"line":117,"column":null}},"34":{"start":{"line":117,"column":23},"end":{"line":117,"column":null}},"35":{"start":{"line":120,"column":28},"end":{"line":120,"column":null}},"36":{"start":{"line":121,"column":12},"end":{"line":124,"column":null}},"37":{"start":{"line":122,"column":8},"end":{"line":123,"column":null}},"38":{"start":{"line":122,"column":35},"end":{"line":122,"column":null}},"39":{"start":{"line":123,"column":13},"end":{"line":123,"column":null}},"40":{"start":{"line":123,"column":40},"end":{"line":123,"column":92}},"41":{"start":{"line":123,"column":54},"end":{"line":123,"column":92}},"42":{"start":{"line":123,"column":81},"end":{"line":123,"column":92}},"43":{"start":{"line":125,"column":6},"end":{"line":125,"column":null}},"44":{"start":{"line":126,"column":6},"end":{"line":126,"column":null}},"45":{"start":{"line":128,"column":6},"end":{"line":131,"column":null}},"46":{"start":{"line":129,"column":18},"end":{"line":129,"column":null}},"47":{"start":{"line":130,"column":8},"end":{"line":130,"column":null}},"48":{"start":{"line":130,"column":24},"end":{"line":130,"column":null}},"49":{"start":{"line":135,"column":30},"end":{"line":135,"column":null}},"50":{"start":{"line":136,"column":6},"end":{"line":138,"column":null}},"51":{"start":{"line":137,"column":8},"end":{"line":137,"column":null}},"52":{"start":{"line":140,"column":6},"end":{"line":147,"column":null}},"53":{"start":{"line":141,"column":8},"end":{"line":141,"column":null}},"54":{"start":{"line":142,"column":8},"end":{"line":146,"column":null}},"55":{"start":{"line":149,"column":47},"end":{"line":149,"column":null}},"56":{"start":{"line":150,"column":6},"end":{"line":150,"column":null}},"57":{"start":{"line":150,"column":18},"end":{"line":150,"column":null}},"58":{"start":{"line":151,"column":6},"end":{"line":151,"column":null}},"59":{"start":{"line":151,"column":16},"end":{"line":151,"column":null}},"60":{"start":{"line":152,"column":6},"end":{"line":152,"column":null}},"61":{"start":{"line":152,"column":27},"end":{"line":152,"column":null}},"62":{"start":{"line":154,"column":21},"end":{"line":154,"column":null}},"63":{"start":{"line":155,"column":6},"end":{"line":155,"column":null}},"64":{"start":{"line":156,"column":6},"end":{"line":159,"column":null}}},"fnMap":{"0":{"name":"fieldSummary","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":22}},"loc":{"start":{"line":9,"column":63},"end":{"line":18,"column":null}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":32},"end":{"line":11,"column":37}},"loc":{"start":{"line":11,"column":52},"end":{"line":17,"column":4}},"line":11},"2":{"name":"registerServiceTools","decl":{"start":{"line":20,"column":16},"end":{"line":20,"column":37}},"loc":{"start":{"line":20,"column":80},"end":{"line":162,"column":null}},"line":20},"3":{"name":"(anonymous_3)","decl":{"start":{"line":35,"column":29},"end":{"line":35,"column":36}},"loc":{"start":{"line":35,"column":59},"end":{"line":74,"column":5}},"line":35},"4":{"name":"(anonymous_4)","decl":{"start":{"line":46,"column":38},"end":{"line":46,"column":43}},"loc":{"start":{"line":46,"column":60},"end":{"line":50,"column":12}},"line":46},"5":{"name":"(anonymous_5)","decl":{"start":{"line":68,"column":42},"end":{"line":68,"column":47}},"loc":{"start":{"line":68,"column":64},"end":{"line":71,"column":10}},"line":68},"6":{"name":"(anonymous_6)","decl":{"start":{"line":108,"column":28},"end":{"line":108,"column":35}},"loc":{"start":{"line":108,"column":99},"end":{"line":160,"column":5}},"line":108},"7":{"name":"(anonymous_7)","decl":{"start":{"line":111,"column":12},"end":{"line":111,"column":20}},"loc":{"start":{"line":111,"column":39},"end":{"line":114,"column":null}},"line":111},"8":{"name":"(anonymous_8)","decl":{"start":{"line":121,"column":12},"end":{"line":121,"column":23}},"loc":{"start":{"line":121,"column":38},"end":{"line":124,"column":null}},"line":121}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},{"start":{},"end":{}}],"line":10},"1":{"loc":{"start":{"line":14,"column":23},"end":{"line":14,"column":45}},"type":"binary-expr","locations":[{"start":{"line":14,"column":23},"end":{"line":14,"column":41}},{"start":{"line":14,"column":41},"end":{"line":14,"column":45}}],"line":14},"2":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":null}},"type":"cond-expr","locations":[{"start":{"line":15,"column":35},"end":{"line":15,"column":60}},{"start":{"line":15,"column":60},"end":{"line":15,"column":null}}],"line":15},"3":{"loc":{"start":{"line":16,"column":8},"end":{"line":16,"column":null}},"type":"cond-expr","locations":[{"start":{"line":16,"column":22},"end":{"line":16,"column":65}},{"start":{"line":16,"column":65},"end":{"line":16,"column":null}}],"line":16},"4":{"loc":{"start":{"line":41,"column":6},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":41,"column":6},"end":{"line":52,"column":null}},{"start":{},"end":{}}],"line":41},"5":{"loc":{"start":{"line":43,"column":8},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":8},"end":{"line":43,"column":null}},{"start":{},"end":{}}],"line":43},"6":{"loc":{"start":{"line":48,"column":31},"end":{"line":48,"column":68}},"type":"binary-expr","locations":[{"start":{"line":48,"column":31},"end":{"line":48,"column":51}},{"start":{"line":48,"column":51},"end":{"line":48,"column":64}},{"start":{"line":48,"column":64},"end":{"line":48,"column":68}}],"line":48},"7":{"loc":{"start":{"line":54,"column":6},"end":{"line":65,"column":null}},"type":"if","locations":[{"start":{"line":54,"column":6},"end":{"line":65,"column":null}},{"start":{},"end":{}}],"line":54},"8":{"loc":{"start":{"line":60,"column":36},"end":{"line":60,"column":52}},"type":"binary-expr","locations":[{"start":{"line":60,"column":36},"end":{"line":60,"column":49}},{"start":{"line":60,"column":49},"end":{"line":60,"column":52}}],"line":60},"9":{"loc":{"start":{"line":60,"column":55},"end":{"line":60,"column":80}},"type":"binary-expr","locations":[{"start":{"line":60,"column":55},"end":{"line":60,"column":75}},{"start":{"line":60,"column":75},"end":{"line":60,"column":80}}],"line":60},"10":{"loc":{"start":{"line":61,"column":12},"end":{"line":61,"column":null}},"type":"if","locations":[{"start":{"line":61,"column":12},"end":{"line":61,"column":null}},{"start":{},"end":{}}],"line":61},"11":{"loc":{"start":{"line":61,"column":80},"end":{"line":61,"column":104}},"type":"binary-expr","locations":[{"start":{"line":61,"column":80},"end":{"line":61,"column":100}},{"start":{"line":61,"column":100},"end":{"line":61,"column":104}}],"line":61},"12":{"loc":{"start":{"line":79,"column":2},"end":{"line":79,"column":null}},"type":"if","locations":[{"start":{"line":79,"column":2},"end":{"line":79,"column":null}},{"start":{},"end":{}}],"line":79},"13":{"loc":{"start":{"line":117,"column":6},"end":{"line":117,"column":null}},"type":"if","locations":[{"start":{"line":117,"column":6},"end":{"line":117,"column":null}},{"start":{},"end":{}}],"line":117},"14":{"loc":{"start":{"line":117,"column":28},"end":{"line":117,"column":57}},"type":"binary-expr","locations":[{"start":{"line":117,"column":28},"end":{"line":117,"column":41}},{"start":{"line":117,"column":41},"end":{"line":117,"column":57}}],"line":117},"15":{"loc":{"start":{"line":122,"column":8},"end":{"line":123,"column":null}},"type":"if","locations":[{"start":{"line":122,"column":8},"end":{"line":123,"column":null}},{"start":{"line":123,"column":13},"end":{"line":123,"column":null}}],"line":122},"16":{"loc":{"start":{"line":123,"column":13},"end":{"line":123,"column":null}},"type":"if","locations":[{"start":{"line":123,"column":13},"end":{"line":123,"column":null}},{"start":{},"end":{}}],"line":123},"17":{"loc":{"start":{"line":123,"column":54},"end":{"line":123,"column":92}},"type":"if","locations":[{"start":{"line":123,"column":54},"end":{"line":123,"column":92}},{"start":{},"end":{}}],"line":123},"18":{"loc":{"start":{"line":130,"column":8},"end":{"line":130,"column":null}},"type":"if","locations":[{"start":{"line":130,"column":8},"end":{"line":130,"column":null}},{"start":{},"end":{}}],"line":130},"19":{"loc":{"start":{"line":130,"column":29},"end":{"line":130,"column":63}},"type":"binary-expr","locations":[{"start":{"line":130,"column":29},"end":{"line":130,"column":41}},{"start":{"line":130,"column":41},"end":{"line":130,"column":63}}],"line":130},"20":{"loc":{"start":{"line":135,"column":30},"end":{"line":135,"column":null}},"type":"binary-expr","locations":[{"start":{"line":135,"column":30},"end":{"line":135,"column":68}},{"start":{"line":135,"column":68},"end":{"line":135,"column":null}}],"line":135},"21":{"loc":{"start":{"line":136,"column":6},"end":{"line":138,"column":null}},"type":"if","locations":[{"start":{"line":136,"column":6},"end":{"line":138,"column":null}},{"start":{},"end":{}}],"line":136},"22":{"loc":{"start":{"line":136,"column":10},"end":{"line":136,"column":69}},"type":"binary-expr","locations":[{"start":{"line":136,"column":10},"end":{"line":136,"column":30}},{"start":{"line":136,"column":30},"end":{"line":136,"column":49}},{"start":{"line":136,"column":49},"end":{"line":136,"column":69}}],"line":136},"23":{"loc":{"start":{"line":140,"column":6},"end":{"line":147,"column":null}},"type":"if","locations":[{"start":{"line":140,"column":6},"end":{"line":147,"column":null}},{"start":{},"end":{}}],"line":140},"24":{"loc":{"start":{"line":144,"column":59},"end":{"line":144,"column":75}},"type":"binary-expr","locations":[{"start":{"line":144,"column":59},"end":{"line":144,"column":69}},{"start":{"line":144,"column":69},"end":{"line":144,"column":75}}],"line":144},"25":{"loc":{"start":{"line":144,"column":81},"end":{"line":144,"column":94}},"type":"binary-expr","locations":[{"start":{"line":144,"column":81},"end":{"line":144,"column":89}},{"start":{"line":144,"column":89},"end":{"line":144,"column":94}}],"line":144},"26":{"loc":{"start":{"line":150,"column":6},"end":{"line":150,"column":null}},"type":"if","locations":[{"start":{"line":150,"column":6},"end":{"line":150,"column":null}},{"start":{},"end":{}}],"line":150},"27":{"loc":{"start":{"line":151,"column":6},"end":{"line":151,"column":null}},"type":"if","locations":[{"start":{"line":151,"column":6},"end":{"line":151,"column":null}},{"start":{},"end":{}}],"line":151},"28":{"loc":{"start":{"line":152,"column":6},"end":{"line":152,"column":null}},"type":"if","locations":[{"start":{"line":152,"column":6},"end":{"line":152,"column":null}},{"start":{},"end":{}}],"line":152},"29":{"loc":{"start":{"line":158,"column":12},"end":{"line":158,"column":null}},"type":"cond-expr","locations":[{"start":{"line":158,"column":45},"end":{"line":158,"column":77}},{"start":{"line":158,"column":77},"end":{"line":158,"column":null}}],"line":158}},"s":{"0":2,"1":0,"2":2,"3":1,"4":16,"5":4,"6":4,"7":2,"8":2,"9":1,"10":1,"11":2,"12":2,"13":1,"14":1,"15":1,"16":2,"17":3,"18":3,"19":3,"20":1,"21":1,"22":1,"23":2,"24":16,"25":6,"26":10,"27":9,"28":9,"29":9,"30":5,"31":5,"32":9,"33":9,"34":1,"35":8,"36":8,"37":16,"38":6,"39":10,"40":0,"41":0,"42":0,"43":8,"44":9,"45":9,"46":6,"47":6,"48":3,"49":5,"50":9,"51":1,"52":4,"53":1,"54":1,"55":3,"56":3,"57":3,"58":3,"59":1,"60":3,"61":1,"62":3,"63":3,"64":3},"f":{"0":2,"1":1,"2":16,"3":4,"4":2,"5":2,"6":9,"7":5,"8":16},"b":{"0":[0,2],"1":[1,0],"2":[0,1],"3":[1,0],"4":[2,2],"5":[1,1],"6":[2,0,0],"7":[1,1],"8":[3,0],"9":[3,0],"10":[1,2],"11":[1,0],"12":[6,10],"13":[1,8],"14":[1,0],"15":[6,10],"16":[0,10],"17":[0,0],"18":[3,3],"19":[3,0],"20":[5,3],"21":[1,8],"22":[9,2,1],"23":[1,3],"24":[1,0],"25":[1,0],"26":[3,0],"27":[1,2],"28":[1,2],"29":[1,2]},"meta":{"lastBranch":30,"lastFunction":9,"lastStatement":65,"seen":{"f:9:9:9:22":0,"b:10:2:10:Infinity:undefined:undefined:undefined:undefined":0,"s:10:2:10:Infinity":0,"s:10:15:10:Infinity":1,"s:11:2:17:Infinity":2,"f:11:32:11:37":1,"s:11:52:17:4":3,"b:14:23:14:41:14:41:14:45":1,"b:15:35:15:60:15:60:15:Infinity":2,"b:16:22:16:65:16:65:16:Infinity":3,"f:20:16:20:37":2,"s:21:2:75:Infinity":4,"f:35:29:35:36":3,"s:36:23:36:Infinity":5,"b:41:6:52:Infinity:undefined:undefined:undefined:undefined":4,"s:41:6:52:Infinity":6,"s:42:18:42:Infinity":7,"b:43:8:43:Infinity:undefined:undefined:undefined:undefined":5,"s:43:8:43:Infinity":8,"s:43:16:43:Infinity":9,"s:44:8:51:Infinity":10,"f:46:38:46:43":4,"s:46:60:50:12":11,"b:48:31:48:51:48:51:48:64:48:64:48:68":6,"b:54:6:65:Infinity:undefined:undefined:undefined:undefined":7,"s:54:6:65:Infinity":12,"s:55:18:55:Infinity":13,"s:56:70:56:Infinity":14,"s:57:8:63:Infinity":15,"s:58:10:62:Infinity":16,"s:59:25:59:Infinity":17,"s:60:25:60:Infinity":18,"b:60:36:60:49:60:49:60:52":8,"b:60:55:60:75:60:75:60:80":9,"b:61:12:61:Infinity:undefined:undefined:undefined:undefined":10,"s:61:12:61:Infinity":19,"s:61:34:61:Infinity":20,"b:61:80:61:100:61:100:61:104":11,"s:64:8:64:Infinity":21,"s:67:6:73:Infinity":22,"f:68:42:68:47":5,"s:68:64:71:10":23,"b:79:2:79:Infinity:undefined:undefined:undefined:undefined":12,"s:79:2:79:Infinity":24,"s:79:27:79:Infinity":25,"s:81:2:161:Infinity":26,"f:108:28:108:35":6,"s:109:18:109:Infinity":27,"s:110:18:110:Infinity":28,"s:111:12:114:Infinity":29,"f:111:12:111:20":7,"s:112:8:112:Infinity":30,"s:113:8:113:Infinity":31,"s:116:17:116:Infinity":32,"b:117:6:117:Infinity:undefined:undefined:undefined:undefined":13,"s:117:6:117:Infinity":33,"s:117:23:117:Infinity":34,"b:117:28:117:41:117:41:117:57":14,"s:120:28:120:Infinity":35,"s:121:12:124:Infinity":36,"f:121:12:121:23":8,"b:122:8:123:Infinity:123:13:123:Infinity":15,"s:122:8:123:Infinity":37,"s:122:35:122:Infinity":38,"b:123:13:123:Infinity:undefined:undefined:undefined:undefined":16,"s:123:13:123:Infinity":39,"s:123:40:123:92":40,"b:123:54:123:92:undefined:undefined:undefined:undefined":17,"s:123:54:123:92":41,"s:123:81:123:92":42,"s:125:6:125:Infinity":43,"s:126:6:126:Infinity":44,"s:128:6:131:Infinity":45,"s:129:18:129:Infinity":46,"b:130:8:130:Infinity:undefined:undefined:undefined:undefined":18,"s:130:8:130:Infinity":47,"s:130:24:130:Infinity":48,"b:130:29:130:41:130:41:130:63":19,"s:135:30:135:Infinity":49,"b:135:30:135:68:135:68:135:Infinity":20,"b:136:6:138:Infinity:undefined:undefined:undefined:undefined":21,"s:136:6:138:Infinity":50,"b:136:10:136:30:136:30:136:49:136:49:136:69":22,"s:137:8:137:Infinity":51,"b:140:6:147:Infinity:undefined:undefined:undefined:undefined":23,"s:140:6:147:Infinity":52,"s:141:8:141:Infinity":53,"s:142:8:146:Infinity":54,"b:144:59:144:69:144:69:144:75":24,"b:144:81:144:89:144:89:144:94":25,"s:149:47:149:Infinity":55,"b:150:6:150:Infinity:undefined:undefined:undefined:undefined":26,"s:150:6:150:Infinity":56,"s:150:18:150:Infinity":57,"b:151:6:151:Infinity:undefined:undefined:undefined:undefined":27,"s:151:6:151:Infinity":58,"s:151:16:151:Infinity":59,"b:152:6:152:Infinity:undefined:undefined:undefined:undefined":28,"s:152:6:152:Infinity":60,"s:152:27:152:Infinity":61,"s:154:21:154:Infinity":62,"s:155:6:155:Infinity":63,"s:156:6:159:Infinity":64,"b:158:45:158:77:158:77:158:Infinity":29},"fnNames":{}}} -,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/system.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/system.ts","statementMap":{"0":{"start":{"line":10,"column":2},"end":{"line":31,"column":null}},"1":{"start":{"line":11,"column":4},"end":{"line":31,"column":null}},"2":{"start":{"line":28,"column":23},"end":{"line":28,"column":null}},"3":{"start":{"line":29,"column":6},"end":{"line":29,"column":null}},"4":{"start":{"line":33,"column":2},"end":{"line":68,"column":null}},"5":{"start":{"line":46,"column":6},"end":{"line":58,"column":null}},"6":{"start":{"line":47,"column":18},"end":{"line":47,"column":null}},"7":{"start":{"line":48,"column":8},"end":{"line":57,"column":null}},"8":{"start":{"line":59,"column":19},"end":{"line":59,"column":null}},"9":{"start":{"line":60,"column":20},"end":{"line":60,"column":null}},"10":{"start":{"line":61,"column":19},"end":{"line":61,"column":null}},"11":{"start":{"line":62,"column":6},"end":{"line":66,"column":null}}},"fnMap":{"0":{"name":"registerSystemTools","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":36}},"loc":{"start":{"line":6,"column":79},"end":{"line":69,"column":null}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":24,"column":31},"end":{"line":24,"column":38}},"loc":{"start":{"line":24,"column":55},"end":{"line":30,"column":5}},"line":24},"2":{"name":"(anonymous_2)","decl":{"start":{"line":45,"column":26},"end":{"line":45,"column":33}},"loc":{"start":{"line":45,"column":49},"end":{"line":67,"column":5}},"line":45}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":2},"end":{"line":31,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":2},"end":{"line":31,"column":null}},{"start":{},"end":{}}],"line":10},"1":{"loc":{"start":{"line":46,"column":6},"end":{"line":58,"column":null}},"type":"if","locations":[{"start":{"line":46,"column":6},"end":{"line":58,"column":null}},{"start":{},"end":{}}],"line":46},"2":{"loc":{"start":{"line":55,"column":22},"end":{"line":55,"column":null}},"type":"cond-expr","locations":[{"start":{"line":55,"column":52},"end":{"line":55,"column":74}},{"start":{"line":55,"column":74},"end":{"line":55,"column":null}}],"line":55}},"s":{"0":6,"1":5,"2":1,"3":1,"4":6,"5":2,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"f":{"0":6,"1":1,"2":2},"b":{"0":[5,1],"1":[1,1],"2":[1,0]},"meta":{"lastBranch":3,"lastFunction":3,"lastStatement":12,"seen":{"f:6:16:6:36":0,"b:10:2:31:Infinity:undefined:undefined:undefined:undefined":0,"s:10:2:31:Infinity":0,"s:11:4:31:Infinity":1,"f:24:31:24:38":1,"s:28:23:28:Infinity":2,"s:29:6:29:Infinity":3,"s:33:2:68:Infinity":4,"f:45:26:45:33":2,"b:46:6:58:Infinity:undefined:undefined:undefined:undefined":1,"s:46:6:58:Infinity":5,"s:47:18:47:Infinity":6,"s:48:8:57:Infinity":7,"b:55:52:55:74:55:74:55:Infinity":2,"s:59:19:59:Infinity":8,"s:60:20:60:Infinity":9,"s:61:19:61:Infinity":10,"s:62:6:66:Infinity":11},"fnNames":{}}} +{"/home/thomas/Perso/mcp-ha/mcp_ha/src/config.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/config.ts","statementMap":{"0":{"start":{"line":7,"column":23},"end":{"line":7,"column":null}},"1":{"start":{"line":9,"column":21},"end":{"line":9,"column":null}},"2":{"start":{"line":10,"column":19},"end":{"line":10,"column":null}},"3":{"start":{"line":12,"column":32},"end":{"line":12,"column":null}},"4":{"start":{"line":21,"column":2},"end":{"line":21,"column":null}},"5":{"start":{"line":62,"column":22},"end":{"line":76,"column":null}},"6":{"start":{"line":81,"column":21},"end":{"line":81,"column":null}},"7":{"start":{"line":82,"column":2},"end":{"line":88,"column":null}},"8":{"start":{"line":83,"column":4},"end":{"line":87,"column":null}},"9":{"start":{"line":84,"column":6},"end":{"line":84,"column":null}},"10":{"start":{"line":86,"column":6},"end":{"line":86,"column":null}},"11":{"start":{"line":89,"column":2},"end":{"line":89,"column":null}},"12":{"start":{"line":89,"column":69},"end":{"line":89,"column":null}},"13":{"start":{"line":90,"column":17},"end":{"line":90,"column":null}},"14":{"start":{"line":91,"column":2},"end":{"line":91,"column":null}},"15":{"start":{"line":91,"column":22},"end":{"line":91,"column":null}},"16":{"start":{"line":92,"column":2},"end":{"line":96,"column":null}},"17":{"start":{"line":94,"column":18},"end":{"line":94,"column":53}},"18":{"start":{"line":97,"column":2},"end":{"line":97,"column":null}},"19":{"start":{"line":101,"column":12},"end":{"line":101,"column":null}},"20":{"start":{"line":102,"column":2},"end":{"line":105,"column":null}},"21":{"start":{"line":103,"column":4},"end":{"line":103,"column":null}},"22":{"start":{"line":104,"column":4},"end":{"line":104,"column":null}},"23":{"start":{"line":106,"column":2},"end":{"line":106,"column":null}},"24":{"start":{"line":110,"column":15},"end":{"line":110,"column":null}},"25":{"start":{"line":112,"column":16},"end":{"line":112,"column":null}},"26":{"start":{"line":113,"column":2},"end":{"line":113,"column":null}},"27":{"start":{"line":115,"column":6},"end":{"line":115,"column":null}},"28":{"start":{"line":116,"column":26},"end":{"line":116,"column":null}},"29":{"start":{"line":117,"column":2},"end":{"line":127,"column":null}},"30":{"start":{"line":118,"column":4},"end":{"line":118,"column":null}},"31":{"start":{"line":119,"column":4},"end":{"line":119,"column":null}},"32":{"start":{"line":120,"column":9},"end":{"line":127,"column":null}},"33":{"start":{"line":123,"column":4},"end":{"line":126,"column":null}},"34":{"start":{"line":129,"column":2},"end":{"line":145,"column":null}},"35":{"start":{"line":138,"column":57},"end":{"line":138,"column":76}},"36":{"start":{"line":139,"column":55},"end":{"line":139,"column":74}},"37":{"start":{"line":140,"column":57},"end":{"line":140,"column":76}},"38":{"start":{"line":141,"column":55},"end":{"line":141,"column":74}},"39":{"start":{"line":158,"column":2},"end":{"line":170,"column":null}},"40":{"start":{"line":159,"column":4},"end":{"line":167,"column":null}},"41":{"start":{"line":160,"column":16},"end":{"line":160,"column":null}},"42":{"start":{"line":161,"column":6},"end":{"line":166,"column":null}},"43":{"start":{"line":162,"column":8},"end":{"line":164,"column":null}},"44":{"start":{"line":165,"column":8},"end":{"line":165,"column":null}},"45":{"start":{"line":171,"column":12},"end":{"line":171,"column":null}},"46":{"start":{"line":172,"column":2},"end":{"line":184,"column":null}},"47":{"start":{"line":175,"column":4},"end":{"line":175,"column":null}},"48":{"start":{"line":176,"column":4},"end":{"line":176,"column":null}},"49":{"start":{"line":177,"column":4},"end":{"line":179,"column":null}},"50":{"start":{"line":181,"column":4},"end":{"line":183,"column":null}},"51":{"start":{"line":185,"column":2},"end":{"line":185,"column":null}}},"fnMap":{"0":{"name":"effectiveTokens","decl":{"start":{"line":18,"column":16},"end":{"line":18,"column":32}},"loc":{"start":{"line":18,"column":62},"end":{"line":22,"column":null}},"line":18},"1":{"name":"readOptions","decl":{"start":{"line":80,"column":9},"end":{"line":80,"column":32}},"loc":{"start":{"line":80,"column":32},"end":{"line":98,"column":null}},"line":80},"2":{"name":"(anonymous_2)","decl":{"start":{"line":94,"column":7},"end":{"line":94,"column":12}},"loc":{"start":{"line":94,"column":18},"end":{"line":94,"column":53}},"line":94},"3":{"name":"parsePort","decl":{"start":{"line":100,"column":9},"end":{"line":100,"column":19}},"loc":{"start":{"line":100,"column":50},"end":{"line":107,"column":null}},"line":100},"4":{"name":"loadConfig","decl":{"start":{"line":109,"column":16},"end":{"line":109,"column":42}},"loc":{"start":{"line":109,"column":42},"end":{"line":146,"column":null}},"line":109},"5":{"name":"(anonymous_5)","decl":{"start":{"line":138,"column":43},"end":{"line":138,"column":51}},"loc":{"start":{"line":138,"column":57},"end":{"line":138,"column":76}},"line":138},"6":{"name":"(anonymous_6)","decl":{"start":{"line":139,"column":41},"end":{"line":139,"column":49}},"loc":{"start":{"line":139,"column":55},"end":{"line":139,"column":74}},"line":139},"7":{"name":"(anonymous_7)","decl":{"start":{"line":140,"column":43},"end":{"line":140,"column":51}},"loc":{"start":{"line":140,"column":57},"end":{"line":140,"column":76}},"line":140},"8":{"name":"(anonymous_8)","decl":{"start":{"line":141,"column":41},"end":{"line":141,"column":49}},"loc":{"start":{"line":141,"column":55},"end":{"line":141,"column":74}},"line":141},"9":{"name":"bootstrapToken","decl":{"start":{"line":157,"column":9},"end":{"line":157,"column":34}},"loc":{"start":{"line":157,"column":34},"end":{"line":186,"column":null}},"line":157}},"branchMap":{"0":{"loc":{"start":{"line":82,"column":2},"end":{"line":88,"column":null}},"type":"if","locations":[{"start":{"line":82,"column":2},"end":{"line":88,"column":null}},{"start":{},"end":{}}],"line":82},"1":{"loc":{"start":{"line":89,"column":2},"end":{"line":89,"column":null}},"type":"if","locations":[{"start":{"line":89,"column":2},"end":{"line":89,"column":null}},{"start":{},"end":{}}],"line":89},"2":{"loc":{"start":{"line":89,"column":6},"end":{"line":89,"column":69}},"type":"binary-expr","locations":[{"start":{"line":89,"column":6},"end":{"line":89,"column":33}},{"start":{"line":89,"column":33},"end":{"line":89,"column":49}},{"start":{"line":89,"column":49},"end":{"line":89,"column":69}}],"line":89},"3":{"loc":{"start":{"line":91,"column":2},"end":{"line":91,"column":null}},"type":"if","locations":[{"start":{"line":91,"column":2},"end":{"line":91,"column":null}},{"start":{},"end":{}}],"line":91},"4":{"loc":{"start":{"line":101,"column":19},"end":{"line":101,"column":28}},"type":"binary-expr","locations":[{"start":{"line":101,"column":19},"end":{"line":101,"column":24}},{"start":{"line":101,"column":24},"end":{"line":101,"column":28}}],"line":101},"5":{"loc":{"start":{"line":102,"column":2},"end":{"line":105,"column":null}},"type":"if","locations":[{"start":{"line":102,"column":2},"end":{"line":105,"column":null}},{"start":{},"end":{}}],"line":102},"6":{"loc":{"start":{"line":102,"column":6},"end":{"line":102,"column":50}},"type":"binary-expr","locations":[{"start":{"line":102,"column":6},"end":{"line":102,"column":30}},{"start":{"line":102,"column":30},"end":{"line":102,"column":39}},{"start":{"line":102,"column":39},"end":{"line":102,"column":50}}],"line":102},"7":{"loc":{"start":{"line":112,"column":35},"end":{"line":112,"column":74}},"type":"binary-expr","locations":[{"start":{"line":112,"column":35},"end":{"line":112,"column":60}},{"start":{"line":112,"column":60},"end":{"line":112,"column":74}}],"line":112},"8":{"loc":{"start":{"line":115,"column":18},"end":{"line":115,"column":67}},"type":"binary-expr","locations":[{"start":{"line":115,"column":18},"end":{"line":115,"column":36}},{"start":{"line":115,"column":36},"end":{"line":115,"column":65}},{"start":{"line":115,"column":65},"end":{"line":115,"column":67}}],"line":115},"9":{"loc":{"start":{"line":117,"column":2},"end":{"line":127,"column":null}},"type":"if","locations":[{"start":{"line":117,"column":2},"end":{"line":127,"column":null}},{"start":{"line":120,"column":9},"end":{"line":127,"column":null}}],"line":117},"10":{"loc":{"start":{"line":120,"column":9},"end":{"line":127,"column":null}},"type":"if","locations":[{"start":{"line":120,"column":9},"end":{"line":127,"column":null}},{"start":{},"end":{}}],"line":120},"11":{"loc":{"start":{"line":133,"column":16},"end":{"line":133,"column":null}},"type":"binary-expr","locations":[{"start":{"line":133,"column":16},"end":{"line":133,"column":36}},{"start":{"line":133,"column":36},"end":{"line":133,"column":null}}],"line":133},"12":{"loc":{"start":{"line":142,"column":21},"end":{"line":142,"column":null}},"type":"binary-expr","locations":[{"start":{"line":142,"column":21},"end":{"line":142,"column":53}},{"start":{"line":142,"column":53},"end":{"line":142,"column":null}}],"line":142},"13":{"loc":{"start":{"line":143,"column":14},"end":{"line":143,"column":null}},"type":"binary-expr","locations":[{"start":{"line":143,"column":14},"end":{"line":143,"column":36}},{"start":{"line":143,"column":36},"end":{"line":143,"column":null}}],"line":143},"14":{"loc":{"start":{"line":144,"column":16},"end":{"line":144,"column":null}},"type":"binary-expr","locations":[{"start":{"line":144,"column":16},"end":{"line":144,"column":40}},{"start":{"line":144,"column":40},"end":{"line":144,"column":null}}],"line":144},"15":{"loc":{"start":{"line":159,"column":4},"end":{"line":167,"column":null}},"type":"if","locations":[{"start":{"line":159,"column":4},"end":{"line":167,"column":null}},{"start":{},"end":{}}],"line":159},"16":{"loc":{"start":{"line":161,"column":6},"end":{"line":166,"column":null}},"type":"if","locations":[{"start":{"line":161,"column":6},"end":{"line":166,"column":null}},{"start":{},"end":{}}],"line":161}},"s":{"0":4,"1":4,"2":4,"3":4,"4":52,"5":4,"6":12,"7":12,"8":4,"9":4,"10":0,"11":12,"12":1,"13":12,"14":12,"15":11,"16":1,"17":3,"18":1,"19":12,"20":12,"21":2,"22":2,"23":10,"24":12,"25":12,"26":12,"27":12,"28":12,"29":12,"30":3,"31":3,"32":9,"33":1,"34":12,"35":1,"36":1,"37":1,"38":24,"39":3,"40":3,"41":1,"42":1,"43":1,"44":1,"45":2,"46":2,"47":2,"48":2,"49":2,"50":0,"51":2},"f":{"0":52,"1":12,"2":3,"3":12,"4":12,"5":1,"6":1,"7":1,"8":24,"9":3},"b":{"0":[4,8],"1":[1,11],"2":[12,12,11],"3":[11,1],"4":[12,9],"5":[2,10],"6":[12,11,11],"7":[12,11],"8":[12,10,3],"9":[3,9],"10":[1,8],"11":[12,11],"12":[12,11],"13":[12,12],"14":[12,12],"15":[1,2],"16":[1,0]},"meta":{"lastBranch":17,"lastFunction":10,"lastStatement":52,"seen":{"s:7:23:7:Infinity":0,"s:9:21:9:Infinity":1,"s:10:19:10:Infinity":2,"s:12:32:12:Infinity":3,"f:18:16:18:32":0,"s:21:2:21:Infinity":4,"s:62:22:76:Infinity":5,"f:80:9:80:32":1,"s:81:21:81:Infinity":6,"b:82:2:88:Infinity:undefined:undefined:undefined:undefined":0,"s:82:2:88:Infinity":7,"s:83:4:87:Infinity":8,"s:84:6:84:Infinity":9,"s:86:6:86:Infinity":10,"b:89:2:89:Infinity:undefined:undefined:undefined:undefined":1,"s:89:2:89:Infinity":11,"b:89:6:89:33:89:33:89:49:89:49:89:69":2,"s:89:69:89:Infinity":12,"s:90:17:90:Infinity":13,"b:91:2:91:Infinity:undefined:undefined:undefined:undefined":3,"s:91:2:91:Infinity":14,"s:91:22:91:Infinity":15,"s:92:2:96:Infinity":16,"f:94:7:94:12":2,"s:94:18:94:53":17,"s:97:2:97:Infinity":18,"f:100:9:100:19":3,"s:101:12:101:Infinity":19,"b:101:19:101:24:101:24:101:28":4,"b:102:2:105:Infinity:undefined:undefined:undefined:undefined":5,"s:102:2:105:Infinity":20,"b:102:6:102:30:102:30:102:39:102:39:102:50":6,"s:103:4:103:Infinity":21,"s:104:4:104:Infinity":22,"s:106:2:106:Infinity":23,"f:109:16:109:42":4,"s:110:15:110:Infinity":24,"s:112:16:112:Infinity":25,"b:112:35:112:60:112:60:112:74":7,"s:113:2:113:Infinity":26,"s:115:6:115:Infinity":27,"b:115:18:115:36:115:36:115:65:115:65:115:67":8,"s:116:26:116:Infinity":28,"b:117:2:127:Infinity:120:9:127:Infinity":9,"s:117:2:127:Infinity":29,"s:118:4:118:Infinity":30,"s:119:4:119:Infinity":31,"b:120:9:127:Infinity:undefined:undefined:undefined:undefined":10,"s:120:9:127:Infinity":32,"s:123:4:126:Infinity":33,"s:129:2:145:Infinity":34,"b:133:16:133:36:133:36:133:Infinity":11,"f:138:43:138:51":5,"s:138:57:138:76":35,"f:139:41:139:49":6,"s:139:55:139:74":36,"f:140:43:140:51":7,"s:140:57:140:76":37,"f:141:41:141:49":8,"s:141:55:141:74":38,"b:142:21:142:53:142:53:142:Infinity":12,"b:143:14:143:36:143:36:143:Infinity":13,"b:144:16:144:40:144:40:144:Infinity":14,"f:157:9:157:34":9,"s:158:2:170:Infinity":39,"b:159:4:167:Infinity:undefined:undefined:undefined:undefined":15,"s:159:4:167:Infinity":40,"s:160:16:160:Infinity":41,"b:161:6:166:Infinity:undefined:undefined:undefined:undefined":16,"s:161:6:166:Infinity":42,"s:162:8:164:Infinity":43,"s:165:8:165:Infinity":44,"s:171:12:171:Infinity":45,"s:172:2:184:Infinity":46,"s:175:4:175:Infinity":47,"s:176:4:176:Infinity":48,"s:177:4:179:Infinity":49,"s:181:4:183:Infinity":50,"s:185:2:185:Infinity":51},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/confirm.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/confirm.ts","statementMap":{"0":{"start":{"line":8,"column":15},"end":{"line":8,"column":null}},"1":{"start":{"line":10,"column":35},"end":{"line":10,"column":null}},"2":{"start":{"line":12,"column":20},"end":{"line":12,"column":null}},"3":{"start":{"line":29,"column":20},"end":{"line":29,"column":null}},"4":{"start":{"line":31,"column":22},"end":{"line":31,"column":42}},"5":{"start":{"line":35,"column":4},"end":{"line":44,"column":null}},"6":{"start":{"line":48,"column":4},"end":{"line":48,"column":null}},"7":{"start":{"line":49,"column":18},"end":{"line":49,"column":null}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":null}},"9":{"start":{"line":51,"column":4},"end":{"line":51,"column":null}},"10":{"start":{"line":56,"column":14},"end":{"line":56,"column":null}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},"12":{"start":{"line":57,"column":12},"end":{"line":57,"column":null}},"13":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"14":{"start":{"line":59,"column":4},"end":{"line":59,"column":null}},"15":{"start":{"line":59,"column":32},"end":{"line":59,"column":null}},"16":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"17":{"start":{"line":60,"column":25},"end":{"line":60,"column":null}},"18":{"start":{"line":61,"column":4},"end":{"line":61,"column":null}},"19":{"start":{"line":65,"column":16},"end":{"line":65,"column":null}},"20":{"start":{"line":66,"column":4},"end":{"line":68,"column":null}},"21":{"start":{"line":67,"column":6},"end":{"line":67,"column":null}},"22":{"start":{"line":67,"column":27},"end":{"line":67,"column":null}},"23":{"start":{"line":69,"column":4},"end":{"line":73,"column":null}},"24":{"start":{"line":70,"column":21},"end":{"line":70,"column":null}},"25":{"start":{"line":71,"column":6},"end":{"line":71,"column":null}},"26":{"start":{"line":71,"column":32},"end":{"line":71,"column":null}},"27":{"start":{"line":72,"column":6},"end":{"line":72,"column":null}}},"fnMap":{"0":{"name":"constructor","decl":{"start":{"line":31,"column":2},"end":{"line":31,"column":14}},"loc":{"start":{"line":31,"column":52},"end":{"line":31,"column":null}},"line":31},"1":{"name":"fingerprint","decl":{"start":{"line":34,"column":9},"end":{"line":34,"column":21}},"loc":{"start":{"line":34,"column":106},"end":{"line":45,"column":null}},"line":34},"2":{"name":"issue","decl":{"start":{"line":47,"column":2},"end":{"line":47,"column":8}},"loc":{"start":{"line":47,"column":30},"end":{"line":52,"column":null}},"line":47},"3":{"name":"consume","decl":{"start":{"line":55,"column":2},"end":{"line":55,"column":10}},"loc":{"start":{"line":55,"column":55},"end":{"line":62,"column":null}},"line":55},"4":{"name":"sweep","decl":{"start":{"line":64,"column":2},"end":{"line":64,"column":10}},"loc":{"start":{"line":64,"column":24},"end":{"line":74,"column":null}},"line":64}},"branchMap":{"0":{"loc":{"start":{"line":31,"column":14},"end":{"line":31,"column":52}},"type":"default-arg","locations":[{"start":{"line":31,"column":42},"end":{"line":31,"column":52}}],"line":31},"1":{"loc":{"start":{"line":40,"column":18},"end":{"line":40,"column":null}},"type":"binary-expr","locations":[{"start":{"line":40,"column":18},"end":{"line":40,"column":33}},{"start":{"line":40,"column":33},"end":{"line":40,"column":null}}],"line":40},"2":{"loc":{"start":{"line":41,"column":16},"end":{"line":41,"column":null}},"type":"binary-expr","locations":[{"start":{"line":41,"column":16},"end":{"line":41,"column":29}},{"start":{"line":41,"column":29},"end":{"line":41,"column":null}}],"line":41},"3":{"loc":{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},"type":"if","locations":[{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},{"start":{},"end":{}}],"line":57},"4":{"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},"5":{"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},"6":{"loc":{"start":{"line":67,"column":6},"end":{"line":67,"column":null}},"type":"if","locations":[{"start":{"line":67,"column":6},"end":{"line":67,"column":null}},{"start":{},"end":{}}],"line":67},"7":{"loc":{"start":{"line":71,"column":6},"end":{"line":71,"column":null}},"type":"if","locations":[{"start":{"line":71,"column":6},"end":{"line":71,"column":null}},{"start":{},"end":{}}],"line":71}},"s":{"0":25,"1":25,"2":25,"3":226,"4":226,"5":68,"6":176,"7":176,"8":176,"9":176,"10":26,"11":26,"12":4,"13":22,"14":22,"15":1,"16":21,"17":6,"18":15,"19":176,"20":176,"21":9950,"22":0,"23":176,"24":50,"25":50,"26":0,"27":50},"f":{"0":226,"1":25,"2":176,"3":26,"4":176},"b":{"0":[226],"1":[68,48],"2":[68,20],"3":[4,22],"4":[1,21],"5":[6,15],"6":[0,9950],"7":[0,50]},"meta":{"lastBranch":8,"lastFunction":5,"lastStatement":28,"seen":{"s:8:15:8:Infinity":0,"s:10:35:10:Infinity":1,"s:12:20:12:Infinity":2,"s:29:20:29:Infinity":3,"f:31:2:31:14":0,"b:31:42:31:52":0,"s:31:22:31:42":4,"f:34:9:34:21":1,"s:35:4:44:Infinity":5,"b:40:18:40:33:40:33:40:Infinity":1,"b:41:16:41:29:41:29:41:Infinity":2,"f:47:2:47:8":2,"s:48:4:48:Infinity":6,"s:49:18:49:Infinity":7,"s:50:4:50:Infinity":8,"s:51:4:51:Infinity":9,"f:55:2:55:10":3,"s:56:14:56:Infinity":10,"b:57:4:57:Infinity:undefined:undefined:undefined:undefined":3,"s:57:4:57:Infinity":11,"s:57:12:57:Infinity":12,"s:58:4:58:Infinity":13,"b:59:4:59:Infinity:undefined:undefined:undefined:undefined":4,"s:59:4:59:Infinity":14,"s:59:32:59:Infinity":15,"b:60:4:60:Infinity:undefined:undefined:undefined:undefined":5,"s:60:4:60:Infinity":16,"s:60:25:60:Infinity":17,"s:61:4:61:Infinity":18,"f:64:2:64:10":4,"s:65:16:65:Infinity":19,"s:66:4:68:Infinity":20,"b:67:6:67:Infinity:undefined:undefined:undefined:undefined":6,"s:67:6:67:Infinity":21,"s:67:27:67:Infinity":22,"s:69:4:73:Infinity":23,"s:70:21:70:Infinity":24,"b:71:6:71:Infinity:undefined:undefined:undefined:undefined":7,"s:71:6:71:Infinity":25,"s:71:32:71:Infinity":26,"s:72:6:72:Infinity":27},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/index.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/index.ts","statementMap":{"0":{"start":{"line":20,"column":23},"end":{"line":20,"column":null}},"1":{"start":{"line":22,"column":29},"end":{"line":22,"column":null}},"2":{"start":{"line":23,"column":26},"end":{"line":23,"column":null}},"3":{"start":{"line":25,"column":32},"end":{"line":25,"column":null}},"4":{"start":{"line":30,"column":2},"end":{"line":51,"column":null}},"5":{"start":{"line":31,"column":29},"end":{"line":31,"column":null}},"6":{"start":{"line":32,"column":15},"end":{"line":32,"column":null}},"7":{"start":{"line":33,"column":4},"end":{"line":41,"column":null}},"8":{"start":{"line":34,"column":6},"end":{"line":34,"column":null}},"9":{"start":{"line":35,"column":6},"end":{"line":39,"column":null}},"10":{"start":{"line":36,"column":8},"end":{"line":36,"column":null}},"11":{"start":{"line":37,"column":8},"end":{"line":37,"column":null}},"12":{"start":{"line":38,"column":8},"end":{"line":38,"column":null}},"13":{"start":{"line":40,"column":6},"end":{"line":40,"column":null}},"14":{"start":{"line":42,"column":4},"end":{"line":49,"column":null}},"15":{"start":{"line":43,"column":6},"end":{"line":43,"column":null}},"16":{"start":{"line":43,"column":31},"end":{"line":43,"column":null}},"17":{"start":{"line":44,"column":6},"end":{"line":48,"column":null}},"18":{"start":{"line":45,"column":8},"end":{"line":45,"column":null}},"19":{"start":{"line":47,"column":8},"end":{"line":47,"column":null}},"20":{"start":{"line":50,"column":4},"end":{"line":50,"column":null}},"21":{"start":{"line":55,"column":2},"end":{"line":55,"column":null}},"22":{"start":{"line":56,"column":2},"end":{"line":56,"column":null}},"23":{"start":{"line":60,"column":2},"end":{"line":60,"column":null}},"24":{"start":{"line":69,"column":2},"end":{"line":69,"column":null}},"25":{"start":{"line":69,"column":26},"end":{"line":69,"column":null}},"26":{"start":{"line":69,"column":61},"end":{"line":69,"column":null}},"27":{"start":{"line":70,"column":2},"end":{"line":70,"column":null}},"28":{"start":{"line":97,"column":22},"end":{"line":97,"column":null}},"29":{"start":{"line":98,"column":18},"end":{"line":98,"column":null}},"30":{"start":{"line":99,"column":17},"end":{"line":99,"column":null}},"31":{"start":{"line":100,"column":22},"end":{"line":100,"column":null}},"32":{"start":{"line":101,"column":24},"end":{"line":101,"column":null}},"33":{"start":{"line":102,"column":16},"end":{"line":102,"column":null}},"34":{"start":{"line":103,"column":19},"end":{"line":103,"column":null}},"35":{"start":{"line":107,"column":2},"end":{"line":117,"column":null}},"36":{"start":{"line":108,"column":4},"end":{"line":116,"column":null}},"37":{"start":{"line":109,"column":18},"end":{"line":109,"column":null}},"38":{"start":{"line":110,"column":6},"end":{"line":115,"column":null}},"39":{"start":{"line":111,"column":8},"end":{"line":114,"column":null}},"40":{"start":{"line":112,"column":10},"end":{"line":112,"column":null}},"41":{"start":{"line":113,"column":10},"end":{"line":113,"column":null}},"42":{"start":{"line":119,"column":8},"end":{"line":122,"column":null}},"43":{"start":{"line":120,"column":4},"end":{"line":122,"column":null}},"44":{"start":{"line":121,"column":26},"end":{"line":121,"column":83}},"45":{"start":{"line":124,"column":2},"end":{"line":281,"column":null}},"46":{"start":{"line":125,"column":16},"end":{"line":125,"column":null}},"47":{"start":{"line":127,"column":4},"end":{"line":138,"column":null}},"48":{"start":{"line":131,"column":22},"end":{"line":131,"column":null}},"49":{"start":{"line":132,"column":23},"end":{"line":132,"column":null}},"50":{"start":{"line":133,"column":6},"end":{"line":136,"column":null}},"51":{"start":{"line":137,"column":6},"end":{"line":137,"column":null}},"52":{"start":{"line":140,"column":4},"end":{"line":143,"column":null}},"53":{"start":{"line":141,"column":6},"end":{"line":141,"column":null}},"54":{"start":{"line":142,"column":6},"end":{"line":142,"column":null}},"55":{"start":{"line":147,"column":26},"end":{"line":147,"column":null}},"56":{"start":{"line":148,"column":24},"end":{"line":148,"column":null}},"57":{"start":{"line":149,"column":4},"end":{"line":154,"column":null}},"58":{"start":{"line":150,"column":6},"end":{"line":152,"column":null}},"59":{"start":{"line":153,"column":6},"end":{"line":153,"column":null}},"60":{"start":{"line":156,"column":15},"end":{"line":156,"column":null}},"61":{"start":{"line":157,"column":20},"end":{"line":157,"column":null}},"62":{"start":{"line":158,"column":4},"end":{"line":163,"column":null}},"63":{"start":{"line":159,"column":6},"end":{"line":161,"column":null}},"64":{"start":{"line":162,"column":6},"end":{"line":162,"column":null}},"65":{"start":{"line":165,"column":17},"end":{"line":165,"column":null}},"66":{"start":{"line":166,"column":22},"end":{"line":166,"column":null}},"67":{"start":{"line":172,"column":108},"end":{"line":172,"column":null}},"68":{"start":{"line":173,"column":27},"end":{"line":173,"column":null}},"69":{"start":{"line":174,"column":4},"end":{"line":186,"column":null}},"70":{"start":{"line":175,"column":6},"end":{"line":175,"column":null}},"71":{"start":{"line":176,"column":11},"end":{"line":186,"column":null}},"72":{"start":{"line":177,"column":16},"end":{"line":177,"column":null}},"73":{"start":{"line":178,"column":6},"end":{"line":185,"column":null}},"74":{"start":{"line":179,"column":8},"end":{"line":179,"column":null}},"75":{"start":{"line":180,"column":13},"end":{"line":185,"column":null}},"76":{"start":{"line":181,"column":8},"end":{"line":181,"column":null}},"77":{"start":{"line":182,"column":8},"end":{"line":184,"column":null}},"78":{"start":{"line":183,"column":10},"end":{"line":183,"column":null}},"79":{"start":{"line":187,"column":4},"end":{"line":192,"column":null}},"80":{"start":{"line":188,"column":22},"end":{"line":188,"column":null}},"81":{"start":{"line":189,"column":6},"end":{"line":189,"column":null}},"82":{"start":{"line":190,"column":6},"end":{"line":190,"column":null}},"83":{"start":{"line":191,"column":6},"end":{"line":191,"column":null}},"84":{"start":{"line":193,"column":4},"end":{"line":193,"column":null}},"85":{"start":{"line":196,"column":32},"end":{"line":201,"column":null}},"86":{"start":{"line":203,"column":4},"end":{"line":280,"column":null}},"87":{"start":{"line":207,"column":6},"end":{"line":222,"column":null}},"88":{"start":{"line":208,"column":24},"end":{"line":208,"column":null}},"89":{"start":{"line":209,"column":8},"end":{"line":212,"column":null}},"90":{"start":{"line":210,"column":10},"end":{"line":210,"column":null}},"91":{"start":{"line":211,"column":10},"end":{"line":211,"column":null}},"92":{"start":{"line":213,"column":8},"end":{"line":216,"column":null}},"93":{"start":{"line":214,"column":10},"end":{"line":214,"column":null}},"94":{"start":{"line":215,"column":10},"end":{"line":215,"column":null}},"95":{"start":{"line":217,"column":8},"end":{"line":217,"column":null}},"96":{"start":{"line":218,"column":21},"end":{"line":218,"column":null}},"97":{"start":{"line":219,"column":8},"end":{"line":219,"column":null}},"98":{"start":{"line":219,"column":32},"end":{"line":219,"column":null}},"99":{"start":{"line":220,"column":8},"end":{"line":220,"column":null}},"100":{"start":{"line":221,"column":8},"end":{"line":221,"column":null}},"101":{"start":{"line":224,"column":19},"end":{"line":224,"column":null}},"102":{"start":{"line":225,"column":6},"end":{"line":225,"column":null}},"103":{"start":{"line":226,"column":6},"end":{"line":226,"column":null}},"104":{"start":{"line":231,"column":6},"end":{"line":254,"column":null}},"105":{"start":{"line":232,"column":8},"end":{"line":235,"column":null}},"106":{"start":{"line":233,"column":10},"end":{"line":233,"column":null}},"107":{"start":{"line":234,"column":10},"end":{"line":234,"column":null}},"108":{"start":{"line":236,"column":23},"end":{"line":236,"column":null}},"109":{"start":{"line":237,"column":26},"end":{"line":243,"column":null}},"110":{"start":{"line":238,"column":36},"end":{"line":238,"column":47}},"111":{"start":{"line":240,"column":12},"end":{"line":240,"column":null}},"112":{"start":{"line":241,"column":12},"end":{"line":241,"column":null}},"113":{"start":{"line":244,"column":8},"end":{"line":250,"column":null}},"114":{"start":{"line":245,"column":22},"end":{"line":245,"column":null}},"115":{"start":{"line":246,"column":10},"end":{"line":249,"column":null}},"116":{"start":{"line":247,"column":12},"end":{"line":247,"column":null}},"117":{"start":{"line":248,"column":12},"end":{"line":248,"column":null}},"118":{"start":{"line":251,"column":8},"end":{"line":251,"column":null}},"119":{"start":{"line":252,"column":8},"end":{"line":252,"column":null}},"120":{"start":{"line":253,"column":8},"end":{"line":253,"column":null}},"121":{"start":{"line":259,"column":21},"end":{"line":259,"column":null}},"122":{"start":{"line":260,"column":24},"end":{"line":262,"column":null}},"123":{"start":{"line":263,"column":6},"end":{"line":266,"column":null}},"124":{"start":{"line":264,"column":8},"end":{"line":264,"column":null}},"125":{"start":{"line":265,"column":8},"end":{"line":265,"column":null}},"126":{"start":{"line":267,"column":6},"end":{"line":267,"column":null}},"127":{"start":{"line":268,"column":6},"end":{"line":268,"column":null}},"128":{"start":{"line":270,"column":18},"end":{"line":270,"column":null}},"129":{"start":{"line":271,"column":6},"end":{"line":271,"column":null}},"130":{"start":{"line":272,"column":6},"end":{"line":279,"column":null}},"131":{"start":{"line":275,"column":8},"end":{"line":276,"column":null}},"132":{"start":{"line":275,"column":36},"end":{"line":275,"column":null}},"133":{"start":{"line":276,"column":13},"end":{"line":276,"column":null}},"134":{"start":{"line":278,"column":8},"end":{"line":278,"column":null}},"135":{"start":{"line":291,"column":66},"end":{"line":296,"column":null}},"136":{"start":{"line":317,"column":2},"end":{"line":317,"column":null}},"137":{"start":{"line":317,"column":33},"end":{"line":317,"column":null}},"138":{"start":{"line":318,"column":2},"end":{"line":368,"column":null}},"139":{"start":{"line":318,"column":21},"end":{"line":318,"column":26}},"140":{"start":{"line":319,"column":4},"end":{"line":367,"column":null}},"141":{"start":{"line":320,"column":19},"end":{"line":320,"column":null}},"142":{"start":{"line":321,"column":22},"end":{"line":321,"column":null}},"143":{"start":{"line":323,"column":45},"end":{"line":323,"column":null}},"144":{"start":{"line":324,"column":6},"end":{"line":326,"column":null}},"145":{"start":{"line":325,"column":8},"end":{"line":325,"column":null}},"146":{"start":{"line":325,"column":33},"end":{"line":325,"column":null}},"147":{"start":{"line":329,"column":6},"end":{"line":331,"column":null}},"148":{"start":{"line":330,"column":8},"end":{"line":330,"column":null}},"149":{"start":{"line":330,"column":62},"end":{"line":330,"column":null}},"150":{"start":{"line":332,"column":30},"end":{"line":332,"column":null}},"151":{"start":{"line":333,"column":6},"end":{"line":333,"column":null}},"152":{"start":{"line":333,"column":53},"end":{"line":333,"column":null}},"153":{"start":{"line":338,"column":23},"end":{"line":338,"column":null}},"154":{"start":{"line":338,"column":48},"end":{"line":338,"column":60}},"155":{"start":{"line":340,"column":6},"end":{"line":340,"column":null}},"156":{"start":{"line":340,"column":68},"end":{"line":340,"column":null}},"157":{"start":{"line":341,"column":47},"end":{"line":341,"column":null}},"158":{"start":{"line":342,"column":6},"end":{"line":342,"column":null}},"159":{"start":{"line":342,"column":32},"end":{"line":342,"column":null}},"160":{"start":{"line":343,"column":6},"end":{"line":343,"column":null}},"161":{"start":{"line":344,"column":6},"end":{"line":346,"column":null}},"162":{"start":{"line":345,"column":85},"end":{"line":345,"column":92}},"163":{"start":{"line":347,"column":6},"end":{"line":347,"column":null}},"164":{"start":{"line":349,"column":18},"end":{"line":349,"column":null}},"165":{"start":{"line":353,"column":6},"end":{"line":356,"column":null}},"166":{"start":{"line":354,"column":8},"end":{"line":354,"column":null}},"167":{"start":{"line":355,"column":8},"end":{"line":355,"column":null}},"168":{"start":{"line":357,"column":20},"end":{"line":357,"column":null}},"169":{"start":{"line":358,"column":6},"end":{"line":364,"column":null}},"170":{"start":{"line":359,"column":8},"end":{"line":362,"column":null}},"171":{"start":{"line":363,"column":8},"end":{"line":363,"column":null}},"172":{"start":{"line":365,"column":6},"end":{"line":365,"column":null}},"173":{"start":{"line":366,"column":6},"end":{"line":366,"column":null}},"174":{"start":{"line":366,"column":31},"end":{"line":366,"column":51}},"175":{"start":{"line":372,"column":2},"end":{"line":383,"column":null}},"176":{"start":{"line":373,"column":18},"end":{"line":378,"column":null}},"177":{"start":{"line":376,"column":6},"end":{"line":376,"column":null}},"178":{"start":{"line":377,"column":6},"end":{"line":377,"column":null}},"179":{"start":{"line":379,"column":4},"end":{"line":382,"column":null}},"180":{"start":{"line":380,"column":6},"end":{"line":380,"column":null}},"181":{"start":{"line":381,"column":6},"end":{"line":381,"column":null}},"182":{"start":{"line":387,"column":14},"end":{"line":387,"column":25}},"183":{"start":{"line":391,"column":2},"end":{"line":394,"column":null}},"184":{"start":{"line":392,"column":4},"end":{"line":392,"column":null}},"185":{"start":{"line":393,"column":4},"end":{"line":393,"column":null}},"186":{"start":{"line":396,"column":13},"end":{"line":396,"column":null}},"187":{"start":{"line":397,"column":18},"end":{"line":397,"column":null}},"188":{"start":{"line":400,"column":2},"end":{"line":406,"column":null}},"189":{"start":{"line":401,"column":4},"end":{"line":401,"column":null}},"190":{"start":{"line":402,"column":4},"end":{"line":402,"column":null}},"191":{"start":{"line":405,"column":4},"end":{"line":405,"column":null}},"192":{"start":{"line":407,"column":2},"end":{"line":407,"column":null}},"193":{"start":{"line":408,"column":15},"end":{"line":408,"column":null}},"194":{"start":{"line":409,"column":27},"end":{"line":409,"column":null}},"195":{"start":{"line":416,"column":2},"end":{"line":425,"column":null}},"196":{"start":{"line":417,"column":4},"end":{"line":417,"column":null}},"197":{"start":{"line":419,"column":4},"end":{"line":423,"column":null}},"198":{"start":{"line":424,"column":4},"end":{"line":424,"column":null}},"199":{"start":{"line":428,"column":2},"end":{"line":428,"column":null}},"200":{"start":{"line":432,"column":16},"end":{"line":432,"column":null}},"201":{"start":{"line":433,"column":21},"end":{"line":433,"column":null}},"202":{"start":{"line":439,"column":4},"end":{"line":441,"column":null}},"203":{"start":{"line":442,"column":2},"end":{"line":444,"column":null}},"204":{"start":{"line":443,"column":4},"end":{"line":443,"column":null}},"205":{"start":{"line":446,"column":2},"end":{"line":452,"column":null}},"206":{"start":{"line":447,"column":4},"end":{"line":447,"column":null}},"207":{"start":{"line":448,"column":4},"end":{"line":448,"column":null}},"208":{"start":{"line":449,"column":4},"end":{"line":449,"column":null}},"209":{"start":{"line":450,"column":4},"end":{"line":450,"column":null}},"210":{"start":{"line":451,"column":4},"end":{"line":451,"column":null}},"211":{"start":{"line":451,"column":25},"end":{"line":451,"column":null}},"212":{"start":{"line":454,"column":17},"end":{"line":454,"column":null}},"213":{"start":{"line":455,"column":8},"end":{"line":470,"column":null}},"214":{"start":{"line":456,"column":4},"end":{"line":456,"column":null}},"215":{"start":{"line":456,"column":18},"end":{"line":456,"column":null}},"216":{"start":{"line":457,"column":4},"end":{"line":457,"column":null}},"217":{"start":{"line":458,"column":4},"end":{"line":458,"column":null}},"218":{"start":{"line":459,"column":4},"end":{"line":459,"column":null}},"219":{"start":{"line":460,"column":4},"end":{"line":469,"column":null}},"220":{"start":{"line":461,"column":6},"end":{"line":461,"column":null}},"221":{"start":{"line":462,"column":6},"end":{"line":467,"column":null}},"222":{"start":{"line":464,"column":8},"end":{"line":464,"column":null}},"223":{"start":{"line":468,"column":6},"end":{"line":468,"column":null}},"224":{"start":{"line":471,"column":2},"end":{"line":471,"column":null}},"225":{"start":{"line":472,"column":2},"end":{"line":472,"column":null}},"226":{"start":{"line":477,"column":0},"end":{"line":482,"column":null}},"227":{"start":{"line":478,"column":2},"end":{"line":481,"column":null}},"228":{"start":{"line":479,"column":4},"end":{"line":479,"column":null}},"229":{"start":{"line":480,"column":4},"end":{"line":480,"column":null}}},"fnMap":{"0":{"name":"readJsonBody","decl":{"start":{"line":29,"column":9},"end":{"line":29,"column":22}},"loc":{"start":{"line":29,"column":62},"end":{"line":52,"column":null}},"line":29},"1":{"name":"(anonymous_1)","decl":{"start":{"line":30,"column":13},"end":{"line":30,"column":22}},"loc":{"start":{"line":30,"column":42},"end":{"line":51,"column":3}},"line":30},"2":{"name":"(anonymous_2)","decl":{"start":{"line":33,"column":11},"end":{"line":33,"column":20}},"loc":{"start":{"line":33,"column":34},"end":{"line":41,"column":5}},"line":33},"3":{"name":"(anonymous_3)","decl":{"start":{"line":42,"column":11},"end":{"line":42,"column":24}},"loc":{"start":{"line":42,"column":24},"end":{"line":49,"column":5}},"line":42},"4":{"name":"sendJson","decl":{"start":{"line":54,"column":9},"end":{"line":54,"column":18}},"loc":{"start":{"line":54,"column":114},"end":{"line":57,"column":null}},"line":54},"5":{"name":"rpcError","decl":{"start":{"line":59,"column":9},"end":{"line":59,"column":18}},"loc":{"start":{"line":59,"column":130},"end":{"line":61,"column":null}},"line":59},"6":{"name":"authenticate","decl":{"start":{"line":68,"column":9},"end":{"line":68,"column":22}},"loc":{"start":{"line":68,"column":78},"end":{"line":71,"column":null}},"line":68},"7":{"name":"createHandler","decl":{"start":{"line":93,"column":16},"end":{"line":93,"column":null}},"loc":{"start":{"line":96,"column":64},"end":{"line":282,"column":null}},"line":96},"8":{"name":"(anonymous_8)","decl":{"start":{"line":108,"column":4},"end":{"line":108,"column":22}},"loc":{"start":{"line":108,"column":22},"end":{"line":116,"column":7}},"line":108},"9":{"name":"(anonymous_9)","decl":{"start":{"line":119,"column":8},"end":{"line":119,"column":24}},"loc":{"start":{"line":120,"column":4},"end":{"line":122,"column":null}},"line":120},"10":{"name":"(anonymous_10)","decl":{"start":{"line":121,"column":13},"end":{"line":121,"column":19}},"loc":{"start":{"line":121,"column":26},"end":{"line":121,"column":83}},"line":121},"11":{"name":"(anonymous_11)","decl":{"start":{"line":124,"column":9},"end":{"line":124,"column":16}},"loc":{"start":{"line":124,"column":29},"end":{"line":281,"column":null}},"line":124},"12":{"name":"(anonymous_12)","decl":{"start":{"line":238,"column":10},"end":{"line":238,"column":36}},"loc":{"start":{"line":238,"column":36},"end":{"line":238,"column":47}},"line":238},"13":{"name":"(anonymous_13)","decl":{"start":{"line":239,"column":10},"end":{"line":239,"column":33}},"loc":{"start":{"line":239,"column":49},"end":{"line":242,"column":null}},"line":239},"14":{"name":"(anonymous_14)","decl":{"start":{"line":244,"column":18},"end":{"line":244,"column":34}},"loc":{"start":{"line":244,"column":34},"end":{"line":250,"column":null}},"line":244},"15":{"name":"(anonymous_15)","decl":{"start":{"line":263,"column":13},"end":{"line":263,"column":28}},"loc":{"start":{"line":263,"column":28},"end":{"line":266,"column":7}},"line":263},"16":{"name":"reconcileOptions","decl":{"start":{"line":310,"column":22},"end":{"line":310,"column":null}},"loc":{"start":{"line":316,"column":20},"end":{"line":369,"column":null}},"line":316},"17":{"name":"(anonymous_17)","decl":{"start":{"line":338,"column":34},"end":{"line":338,"column":42}},"loc":{"start":{"line":338,"column":48},"end":{"line":338,"column":60}},"line":338},"18":{"name":"(anonymous_18)","decl":{"start":{"line":345,"column":74},"end":{"line":345,"column":79}},"loc":{"start":{"line":345,"column":85},"end":{"line":345,"column":92}},"line":345},"19":{"name":"(anonymous_19)","decl":{"start":{"line":366,"column":16},"end":{"line":366,"column":25}},"loc":{"start":{"line":366,"column":31},"end":{"line":366,"column":51}},"line":366},"20":{"name":"closeWithGrace","decl":{"start":{"line":371,"column":9},"end":{"line":371,"column":24}},"loc":{"start":{"line":371,"column":72},"end":{"line":384,"column":null}},"line":371},"21":{"name":"(anonymous_21)","decl":{"start":{"line":372,"column":13},"end":{"line":372,"column":22}},"loc":{"start":{"line":372,"column":34},"end":{"line":383,"column":3}},"line":372},"22":{"name":"(anonymous_22)","decl":{"start":{"line":373,"column":18},"end":{"line":373,"column":35}},"loc":{"start":{"line":373,"column":35},"end":{"line":378,"column":7}},"line":373},"23":{"name":"(anonymous_23)","decl":{"start":{"line":379,"column":11},"end":{"line":379,"column":23}},"loc":{"start":{"line":379,"column":23},"end":{"line":382,"column":5}},"line":379},"24":{"name":"main","decl":{"start":{"line":386,"column":15},"end":{"line":386,"column":37}},"loc":{"start":{"line":386,"column":37},"end":{"line":473,"column":null}},"line":386},"25":{"name":"(anonymous_25)","decl":{"start":{"line":400,"column":5},"end":{"line":400,"column":21}},"loc":{"start":{"line":400,"column":21},"end":{"line":406,"column":3}},"line":400},"26":{"name":"(anonymous_26)","decl":{"start":{"line":442,"column":38},"end":{"line":442,"column":55}},"loc":{"start":{"line":442,"column":55},"end":{"line":444,"column":3}},"line":442},"27":{"name":"(anonymous_27)","decl":{"start":{"line":446,"column":30},"end":{"line":446,"column":47}},"loc":{"start":{"line":446,"column":47},"end":{"line":452,"column":3}},"line":446},"28":{"name":"(anonymous_28)","decl":{"start":{"line":455,"column":8},"end":{"line":455,"column":27}},"loc":{"start":{"line":455,"column":27},"end":{"line":470,"column":null}},"line":455},"29":{"name":"(anonymous_29)","decl":{"start":{"line":460,"column":55},"end":{"line":460,"column":66}},"loc":{"start":{"line":460,"column":66},"end":{"line":469,"column":5}},"line":460},"30":{"name":"(anonymous_30)","decl":{"start":{"line":478,"column":9},"end":{"line":478,"column":16}},"loc":{"start":{"line":478,"column":22},"end":{"line":481,"column":3}},"line":478}},"branchMap":{"0":{"loc":{"start":{"line":35,"column":6},"end":{"line":39,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":6},"end":{"line":39,"column":null}},{"start":{},"end":{}}],"line":35},"1":{"loc":{"start":{"line":43,"column":6},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":6},"end":{"line":43,"column":null}},{"start":{},"end":{}}],"line":43},"2":{"loc":{"start":{"line":54,"column":70},"end":{"line":54,"column":114}},"type":"default-arg","locations":[{"start":{"line":54,"column":104},"end":{"line":54,"column":114}}],"line":54},"3":{"loc":{"start":{"line":59,"column":86},"end":{"line":59,"column":130}},"type":"default-arg","locations":[{"start":{"line":59,"column":120},"end":{"line":59,"column":130}}],"line":59},"4":{"loc":{"start":{"line":69,"column":26},"end":{"line":69,"column":null}},"type":"if","locations":[{"start":{"line":69,"column":26},"end":{"line":69,"column":null}},{"start":{},"end":{}}],"line":69},"5":{"loc":{"start":{"line":95,"column":2},"end":{"line":95,"column":null}},"type":"default-arg","locations":[{"start":{"line":95,"column":25},"end":{"line":95,"column":null}}],"line":95},"6":{"loc":{"start":{"line":100,"column":22},"end":{"line":100,"column":null}},"type":"binary-expr","locations":[{"start":{"line":100,"column":22},"end":{"line":100,"column":42}},{"start":{"line":100,"column":42},"end":{"line":100,"column":null}}],"line":100},"7":{"loc":{"start":{"line":101,"column":24},"end":{"line":101,"column":null}},"type":"binary-expr","locations":[{"start":{"line":101,"column":24},"end":{"line":101,"column":46}},{"start":{"line":101,"column":46},"end":{"line":101,"column":null}}],"line":101},"8":{"loc":{"start":{"line":102,"column":16},"end":{"line":102,"column":null}},"type":"binary-expr","locations":[{"start":{"line":102,"column":16},"end":{"line":102,"column":30}},{"start":{"line":102,"column":30},"end":{"line":102,"column":null}}],"line":102},"9":{"loc":{"start":{"line":107,"column":2},"end":{"line":117,"column":null}},"type":"if","locations":[{"start":{"line":107,"column":2},"end":{"line":117,"column":null}},{"start":{},"end":{}}],"line":107},"10":{"loc":{"start":{"line":111,"column":8},"end":{"line":114,"column":null}},"type":"if","locations":[{"start":{"line":111,"column":8},"end":{"line":114,"column":null}},{"start":{},"end":{}}],"line":111},"11":{"loc":{"start":{"line":120,"column":4},"end":{"line":122,"column":null}},"type":"cond-expr","locations":[{"start":{"line":121,"column":8},"end":{"line":121,"column":null}},{"start":{"line":122,"column":9},"end":{"line":122,"column":null}}],"line":120},"12":{"loc":{"start":{"line":125,"column":24},"end":{"line":125,"column":40}},"type":"binary-expr","locations":[{"start":{"line":125,"column":24},"end":{"line":125,"column":35}},{"start":{"line":125,"column":35},"end":{"line":125,"column":40}}],"line":125},"13":{"loc":{"start":{"line":127,"column":4},"end":{"line":138,"column":null}},"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":138,"column":null}},{"start":{},"end":{}}],"line":127},"14":{"loc":{"start":{"line":127,"column":8},"end":{"line":127,"column":60}},"type":"binary-expr","locations":[{"start":{"line":127,"column":8},"end":{"line":127,"column":38}},{"start":{"line":127,"column":38},"end":{"line":127,"column":60}}],"line":127},"15":{"loc":{"start":{"line":132,"column":23},"end":{"line":132,"column":null}},"type":"binary-expr","locations":[{"start":{"line":132,"column":23},"end":{"line":132,"column":43}},{"start":{"line":132,"column":43},"end":{"line":132,"column":null}}],"line":132},"16":{"loc":{"start":{"line":133,"column":20},"end":{"line":133,"column":42}},"type":"cond-expr","locations":[{"start":{"line":133,"column":31},"end":{"line":133,"column":37}},{"start":{"line":133,"column":37},"end":{"line":133,"column":42}}],"line":133},"17":{"loc":{"start":{"line":134,"column":16},"end":{"line":134,"column":null}},"type":"cond-expr","locations":[{"start":{"line":134,"column":27},"end":{"line":134,"column":40}},{"start":{"line":134,"column":40},"end":{"line":134,"column":null}}],"line":134},"18":{"loc":{"start":{"line":140,"column":4},"end":{"line":143,"column":null}},"type":"if","locations":[{"start":{"line":140,"column":4},"end":{"line":143,"column":null}},{"start":{},"end":{}}],"line":140},"19":{"loc":{"start":{"line":147,"column":26},"end":{"line":147,"column":null}},"type":"binary-expr","locations":[{"start":{"line":147,"column":26},"end":{"line":147,"column":73}},{"start":{"line":147,"column":73},"end":{"line":147,"column":null}}],"line":147},"20":{"loc":{"start":{"line":147,"column":33},"end":{"line":147,"column":68}},"type":"binary-expr","locations":[{"start":{"line":147,"column":33},"end":{"line":147,"column":66}},{"start":{"line":147,"column":66},"end":{"line":147,"column":68}}],"line":147},"21":{"loc":{"start":{"line":148,"column":24},"end":{"line":148,"column":null}},"type":"binary-expr","locations":[{"start":{"line":148,"column":24},"end":{"line":148,"column":47}},{"start":{"line":148,"column":47},"end":{"line":148,"column":71}},{"start":{"line":148,"column":71},"end":{"line":148,"column":99}},{"start":{"line":148,"column":99},"end":{"line":148,"column":null}}],"line":148},"22":{"loc":{"start":{"line":149,"column":4},"end":{"line":154,"column":null}},"type":"if","locations":[{"start":{"line":149,"column":4},"end":{"line":154,"column":null}},{"start":{},"end":{}}],"line":149},"23":{"loc":{"start":{"line":149,"column":8},"end":{"line":149,"column":47}},"type":"binary-expr","locations":[{"start":{"line":149,"column":8},"end":{"line":149,"column":33}},{"start":{"line":149,"column":33},"end":{"line":149,"column":47}}],"line":149},"24":{"loc":{"start":{"line":151,"column":15},"end":{"line":151,"column":null}},"type":"cond-expr","locations":[{"start":{"line":151,"column":36},"end":{"line":151,"column":58}},{"start":{"line":151,"column":58},"end":{"line":151,"column":null}}],"line":151},"25":{"loc":{"start":{"line":156,"column":15},"end":{"line":156,"column":null}},"type":"binary-expr","locations":[{"start":{"line":156,"column":15},"end":{"line":156,"column":43}},{"start":{"line":156,"column":43},"end":{"line":156,"column":null}}],"line":156},"26":{"loc":{"start":{"line":158,"column":4},"end":{"line":163,"column":null}},"type":"if","locations":[{"start":{"line":158,"column":4},"end":{"line":163,"column":null}},{"start":{},"end":{}}],"line":158},"27":{"loc":{"start":{"line":165,"column":17},"end":{"line":165,"column":null}},"type":"binary-expr","locations":[{"start":{"line":165,"column":17},"end":{"line":165,"column":46}},{"start":{"line":165,"column":46},"end":{"line":165,"column":null}}],"line":165},"28":{"loc":{"start":{"line":173,"column":27},"end":{"line":173,"column":null}},"type":"cond-expr","locations":[{"start":{"line":173,"column":39},"end":{"line":173,"column":73}},{"start":{"line":173,"column":73},"end":{"line":173,"column":null}}],"line":173},"29":{"loc":{"start":{"line":174,"column":4},"end":{"line":186,"column":null}},"type":"if","locations":[{"start":{"line":174,"column":4},"end":{"line":186,"column":null}},{"start":{"line":176,"column":11},"end":{"line":186,"column":null}}],"line":174},"30":{"loc":{"start":{"line":176,"column":11},"end":{"line":186,"column":null}},"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":186,"column":null}},{"start":{},"end":{}}],"line":176},"31":{"loc":{"start":{"line":176,"column":15},"end":{"line":176,"column":40}},"type":"binary-expr","locations":[{"start":{"line":176,"column":15},"end":{"line":176,"column":28}},{"start":{"line":176,"column":28},"end":{"line":176,"column":40}}],"line":176},"32":{"loc":{"start":{"line":178,"column":6},"end":{"line":185,"column":null}},"type":"if","locations":[{"start":{"line":178,"column":6},"end":{"line":185,"column":null}},{"start":{"line":180,"column":13},"end":{"line":185,"column":null}}],"line":178},"33":{"loc":{"start":{"line":178,"column":10},"end":{"line":178,"column":25}},"type":"binary-expr","locations":[{"start":{"line":178,"column":10},"end":{"line":178,"column":15}},{"start":{"line":178,"column":15},"end":{"line":178,"column":25}}],"line":178},"34":{"loc":{"start":{"line":180,"column":13},"end":{"line":185,"column":null}},"type":"if","locations":[{"start":{"line":180,"column":13},"end":{"line":185,"column":null}},{"start":{},"end":{}}],"line":180},"35":{"loc":{"start":{"line":182,"column":8},"end":{"line":184,"column":null}},"type":"if","locations":[{"start":{"line":182,"column":8},"end":{"line":184,"column":null}},{"start":{},"end":{}}],"line":182},"36":{"loc":{"start":{"line":182,"column":12},"end":{"line":182,"column":65}},"type":"binary-expr","locations":[{"start":{"line":182,"column":12},"end":{"line":182,"column":40}},{"start":{"line":182,"column":40},"end":{"line":182,"column":65}}],"line":182},"37":{"loc":{"start":{"line":187,"column":4},"end":{"line":192,"column":null}},"type":"if","locations":[{"start":{"line":187,"column":4},"end":{"line":192,"column":null}},{"start":{},"end":{}}],"line":187},"38":{"loc":{"start":{"line":189,"column":55},"end":{"line":189,"column":102}},"type":"cond-expr","locations":[{"start":{"line":189,"column":69},"end":{"line":189,"column":98}},{"start":{"line":189,"column":98},"end":{"line":189,"column":102}}],"line":189},"39":{"loc":{"start":{"line":199,"column":10},"end":{"line":199,"column":null}},"type":"cond-expr","locations":[{"start":{"line":199,"column":28},"end":{"line":199,"column":58}},{"start":{"line":199,"column":58},"end":{"line":199,"column":null}}],"line":199},"40":{"loc":{"start":{"line":200,"column":10},"end":{"line":200,"column":null}},"type":"cond-expr","locations":[{"start":{"line":200,"column":33},"end":{"line":200,"column":78}},{"start":{"line":200,"column":78},"end":{"line":200,"column":null}}],"line":200},"41":{"loc":{"start":{"line":207,"column":6},"end":{"line":222,"column":null}},"type":"if","locations":[{"start":{"line":207,"column":6},"end":{"line":222,"column":null}},{"start":{},"end":{}}],"line":207},"42":{"loc":{"start":{"line":207,"column":10},"end":{"line":207,"column":47}},"type":"binary-expr","locations":[{"start":{"line":207,"column":10},"end":{"line":207,"column":32}},{"start":{"line":207,"column":32},"end":{"line":207,"column":47}}],"line":207},"43":{"loc":{"start":{"line":209,"column":8},"end":{"line":212,"column":null}},"type":"if","locations":[{"start":{"line":209,"column":8},"end":{"line":212,"column":null}},{"start":{},"end":{}}],"line":209},"44":{"loc":{"start":{"line":213,"column":8},"end":{"line":216,"column":null}},"type":"if","locations":[{"start":{"line":213,"column":8},"end":{"line":216,"column":null}},{"start":{},"end":{}}],"line":213},"45":{"loc":{"start":{"line":218,"column":21},"end":{"line":218,"column":null}},"type":"cond-expr","locations":[{"start":{"line":218,"column":45},"end":{"line":218,"column":71}},{"start":{"line":218,"column":71},"end":{"line":218,"column":null}}],"line":218},"46":{"loc":{"start":{"line":219,"column":8},"end":{"line":219,"column":null}},"type":"if","locations":[{"start":{"line":219,"column":8},"end":{"line":219,"column":null}},{"start":{},"end":{}}],"line":219},"47":{"loc":{"start":{"line":231,"column":6},"end":{"line":254,"column":null}},"type":"if","locations":[{"start":{"line":231,"column":6},"end":{"line":254,"column":null}},{"start":{},"end":{}}],"line":231},"48":{"loc":{"start":{"line":231,"column":10},"end":{"line":231,"column":52}},"type":"binary-expr","locations":[{"start":{"line":231,"column":10},"end":{"line":231,"column":32}},{"start":{"line":231,"column":32},"end":{"line":231,"column":52}}],"line":231},"49":{"loc":{"start":{"line":232,"column":8},"end":{"line":235,"column":null}},"type":"if","locations":[{"start":{"line":232,"column":8},"end":{"line":235,"column":null}},{"start":{},"end":{}}],"line":232},"50":{"loc":{"start":{"line":246,"column":10},"end":{"line":249,"column":null}},"type":"if","locations":[{"start":{"line":246,"column":10},"end":{"line":249,"column":null}},{"start":{},"end":{}}],"line":246},"51":{"loc":{"start":{"line":246,"column":14},"end":{"line":246,"column":43}},"type":"binary-expr","locations":[{"start":{"line":246,"column":14},"end":{"line":246,"column":21}},{"start":{"line":246,"column":21},"end":{"line":246,"column":43}}],"line":246},"52":{"loc":{"start":{"line":270,"column":18},"end":{"line":270,"column":null}},"type":"cond-expr","locations":[{"start":{"line":270,"column":39},"end":{"line":270,"column":51}},{"start":{"line":270,"column":51},"end":{"line":270,"column":null}}],"line":270},"53":{"loc":{"start":{"line":272,"column":6},"end":{"line":279,"column":null}},"type":"if","locations":[{"start":{"line":272,"column":6},"end":{"line":279,"column":null}},{"start":{"line":277,"column":13},"end":{"line":279,"column":null}}],"line":272},"54":{"loc":{"start":{"line":275,"column":8},"end":{"line":276,"column":null}},"type":"if","locations":[{"start":{"line":275,"column":8},"end":{"line":276,"column":null}},{"start":{"line":276,"column":13},"end":{"line":276,"column":null}}],"line":275},"55":{"loc":{"start":{"line":313,"column":2},"end":{"line":313,"column":null}},"type":"default-arg","locations":[{"start":{"line":313,"column":21},"end":{"line":313,"column":null}}],"line":313},"56":{"loc":{"start":{"line":314,"column":2},"end":{"line":314,"column":null}},"type":"default-arg","locations":[{"start":{"line":314,"column":40},"end":{"line":314,"column":null}}],"line":314},"57":{"loc":{"start":{"line":315,"column":2},"end":{"line":315,"column":null}},"type":"default-arg","locations":[{"start":{"line":315,"column":25},"end":{"line":315,"column":null}}],"line":315},"58":{"loc":{"start":{"line":317,"column":2},"end":{"line":317,"column":null}},"type":"if","locations":[{"start":{"line":317,"column":2},"end":{"line":317,"column":null}},{"start":{},"end":{}}],"line":317},"59":{"loc":{"start":{"line":321,"column":22},"end":{"line":321,"column":null}},"type":"binary-expr","locations":[{"start":{"line":321,"column":22},"end":{"line":321,"column":39}},{"start":{"line":321,"column":39},"end":{"line":321,"column":null}}],"line":321},"60":{"loc":{"start":{"line":325,"column":8},"end":{"line":325,"column":null}},"type":"if","locations":[{"start":{"line":325,"column":8},"end":{"line":325,"column":null}},{"start":{},"end":{}}],"line":325},"61":{"loc":{"start":{"line":330,"column":8},"end":{"line":330,"column":null}},"type":"if","locations":[{"start":{"line":330,"column":8},"end":{"line":330,"column":null}},{"start":{},"end":{}}],"line":330},"62":{"loc":{"start":{"line":332,"column":30},"end":{"line":332,"column":null}},"type":"binary-expr","locations":[{"start":{"line":332,"column":30},"end":{"line":332,"column":71}},{"start":{"line":332,"column":71},"end":{"line":332,"column":null}}],"line":332},"63":{"loc":{"start":{"line":333,"column":6},"end":{"line":333,"column":null}},"type":"if","locations":[{"start":{"line":333,"column":6},"end":{"line":333,"column":null}},{"start":{},"end":{}}],"line":333},"64":{"loc":{"start":{"line":333,"column":10},"end":{"line":333,"column":53}},"type":"binary-expr","locations":[{"start":{"line":333,"column":10},"end":{"line":333,"column":35}},{"start":{"line":333,"column":35},"end":{"line":333,"column":53}}],"line":333},"65":{"loc":{"start":{"line":340,"column":6},"end":{"line":340,"column":null}},"type":"if","locations":[{"start":{"line":340,"column":6},"end":{"line":340,"column":null}},{"start":{},"end":{}}],"line":340},"66":{"loc":{"start":{"line":340,"column":10},"end":{"line":340,"column":68}},"type":"binary-expr","locations":[{"start":{"line":340,"column":10},"end":{"line":340,"column":45}},{"start":{"line":340,"column":45},"end":{"line":340,"column":68}}],"line":340},"67":{"loc":{"start":{"line":349,"column":18},"end":{"line":349,"column":null}},"type":"cond-expr","locations":[{"start":{"line":349,"column":39},"end":{"line":349,"column":51}},{"start":{"line":349,"column":51},"end":{"line":349,"column":null}}],"line":349},"68":{"loc":{"start":{"line":353,"column":6},"end":{"line":356,"column":null}},"type":"if","locations":[{"start":{"line":353,"column":6},"end":{"line":356,"column":null}},{"start":{},"end":{}}],"line":353},"69":{"loc":{"start":{"line":358,"column":6},"end":{"line":364,"column":null}},"type":"if","locations":[{"start":{"line":358,"column":6},"end":{"line":364,"column":null}},{"start":{},"end":{}}],"line":358},"70":{"loc":{"start":{"line":391,"column":2},"end":{"line":394,"column":null}},"type":"if","locations":[{"start":{"line":391,"column":2},"end":{"line":394,"column":null}},{"start":{},"end":{}}],"line":391},"71":{"loc":{"start":{"line":417,"column":34},"end":{"line":417,"column":86}},"type":"cond-expr","locations":[{"start":{"line":417,"column":56},"end":{"line":417,"column":76}},{"start":{"line":417,"column":76},"end":{"line":417,"column":86}}],"line":417},"72":{"loc":{"start":{"line":420,"column":34},"end":{"line":420,"column":77}},"type":"cond-expr","locations":[{"start":{"line":420,"column":55},"end":{"line":420,"column":67}},{"start":{"line":420,"column":67},"end":{"line":420,"column":77}}],"line":420},"73":{"loc":{"start":{"line":439,"column":4},"end":{"line":441,"column":null}},"type":"cond-expr","locations":[{"start":{"line":440,"column":8},"end":{"line":440,"column":null}},{"start":{"line":441,"column":8},"end":{"line":441,"column":null}}],"line":439},"74":{"loc":{"start":{"line":439,"column":4},"end":{"line":439,"column":null}},"type":"binary-expr","locations":[{"start":{"line":439,"column":4},"end":{"line":439,"column":27}},{"start":{"line":439,"column":27},"end":{"line":439,"column":null}}],"line":439},"75":{"loc":{"start":{"line":448,"column":22},"end":{"line":448,"column":84}},"type":"cond-expr","locations":[{"start":{"line":448,"column":44},"end":{"line":448,"column":68}},{"start":{"line":448,"column":68},"end":{"line":448,"column":84}}],"line":448},"76":{"loc":{"start":{"line":450,"column":44},"end":{"line":450,"column":124}},"type":"cond-expr","locations":[{"start":{"line":450,"column":61},"end":{"line":450,"column":101}},{"start":{"line":450,"column":101},"end":{"line":450,"column":124}}],"line":450},"77":{"loc":{"start":{"line":451,"column":4},"end":{"line":451,"column":null}},"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":null}},{"start":{},"end":{}}],"line":451},"78":{"loc":{"start":{"line":456,"column":4},"end":{"line":456,"column":null}},"type":"if","locations":[{"start":{"line":456,"column":4},"end":{"line":456,"column":null}},{"start":{},"end":{}}],"line":456},"79":{"loc":{"start":{"line":477,"column":0},"end":{"line":482,"column":null}},"type":"if","locations":[{"start":{"line":477,"column":0},"end":{"line":482,"column":null}},{"start":{},"end":{}}],"line":477},"80":{"loc":{"start":{"line":477,"column":4},"end":{"line":477,"column":86}},"type":"binary-expr","locations":[{"start":{"line":477,"column":4},"end":{"line":477,"column":23}},{"start":{"line":477,"column":23},"end":{"line":477,"column":86}}],"line":477},"81":{"loc":{"start":{"line":479,"column":33},"end":{"line":479,"column":88}},"type":"cond-expr","locations":[{"start":{"line":479,"column":54},"end":{"line":479,"column":77}},{"start":{"line":479,"column":77},"end":{"line":479,"column":88}}],"line":479},"82":{"loc":{"start":{"line":479,"column":54},"end":{"line":479,"column":77}},"type":"binary-expr","locations":[{"start":{"line":479,"column":54},"end":{"line":479,"column":65}},{"start":{"line":479,"column":65},"end":{"line":479,"column":77}}],"line":479}},"s":{"0":1,"1":1,"2":1,"3":1,"4":31,"5":31,"6":31,"7":31,"8":92,"9":92,"10":1,"11":1,"12":1,"13":91,"14":31,"15":30,"16":0,"17":30,"18":30,"19":1,"20":31,"21":15,"22":15,"23":11,"24":38,"25":38,"26":33,"27":5,"28":24,"29":24,"30":24,"31":24,"32":24,"33":24,"34":24,"35":24,"36":8,"37":0,"38":0,"39":0,"40":0,"41":0,"42":24,"43":9,"44":0,"45":24,"46":44,"47":44,"48":3,"49":3,"50":3,"51":3,"52":41,"53":1,"54":1,"55":40,"56":44,"57":44,"58":1,"59":1,"60":39,"61":44,"62":44,"63":0,"64":0,"65":39,"66":44,"67":44,"68":44,"69":44,"70":33,"71":6,"72":3,"73":3,"74":1,"75":2,"76":2,"77":2,"78":0,"79":39,"80":4,"81":4,"82":4,"83":4,"84":35,"85":35,"86":44,"87":44,"88":11,"89":11,"90":2,"91":2,"92":9,"93":1,"94":1,"95":8,"96":8,"97":11,"98":7,"99":8,"100":8,"101":24,"102":22,"103":22,"104":22,"105":8,"106":1,"107":1,"108":7,"109":7,"110":7,"111":7,"112":7,"113":7,"114":1,"115":1,"116":1,"117":1,"118":7,"119":7,"120":7,"121":14,"122":14,"123":14,"124":14,"125":14,"126":14,"127":14,"128":2,"129":2,"130":2,"131":2,"132":2,"133":0,"134":0,"135":1,"136":10,"137":1,"138":9,"139":9,"140":12,"141":12,"142":8,"143":12,"144":12,"145":32,"146":16,"147":8,"148":0,"149":0,"150":8,"151":12,"152":2,"153":8,"154":2,"155":8,"156":3,"157":5,"158":5,"159":1,"160":5,"161":4,"162":1,"163":4,"164":5,"165":5,"166":1,"167":1,"168":4,"169":4,"170":1,"171":1,"172":3,"173":3,"174":3,"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":1,"227":0,"228":0,"229":0},"f":{"0":31,"1":31,"2":92,"3":30,"4":15,"5":11,"6":38,"7":24,"8":0,"9":9,"10":0,"11":44,"12":7,"13":7,"14":1,"15":14,"16":10,"17":2,"18":1,"19":3,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0},"b":{"0":[1,91],"1":[0,30],"2":[15],"3":[11],"4":[33,5],"5":[24],"6":[24,23],"7":[24,24],"8":[24,23],"9":[8,16],"10":[0,0],"11":[0,9],"12":[44,0],"13":[3,41],"14":[44,3],"15":[3,2],"16":[1,2],"17":[1,2],"18":[1,40],"19":[40,29],"20":[40,29],"21":[44,20,20,1],"22":[1,43],"23":[44,2],"24":[0,1],"25":[39,0],"26":[0,44],"27":[39,1],"28":[38,1],"29":[33,6],"30":[3,3],"31":[6,5],"32":[1,2],"33":[3,3],"34":[2,0],"35":[0,2],"36":[2,2],"37":[4,35],"38":[0,4],"39":[2,33],"40":[0,35],"41":[11,33],"42":[44,20],"43":[2,9],"44":[1,8],"45":[7,1],"46":[7,4],"47":[8,14],"48":[22,9],"49":[1,7],"50":[1,0],"51":[1,1],"52":[2,0],"53":[2,0],"54":[2,0],"55":[10],"56":[10],"57":[10],"58":[1,9],"59":[8,0],"60":[16,16],"61":[0,0],"62":[8,7],"63":[2,10],"64":[12,3],"65":[3,5],"66":[8,4],"67":[5,0],"68":[1,4],"69":[1,3],"70":[0,0],"71":[0,0],"72":[0,0],"73":[0,0],"74":[0,0],"75":[0,0],"76":[0,0],"77":[0,0],"78":[0,0],"79":[0,1],"80":[1,1],"81":[0,0],"82":[0,0]},"meta":{"lastBranch":83,"lastFunction":31,"lastStatement":230,"seen":{"s:20:23:20:Infinity":0,"s:22:29:22:Infinity":1,"s:23:26:23:Infinity":2,"s:25:32:25:Infinity":3,"f:29:9:29:22":0,"s:30:2:51:Infinity":4,"f:30:13:30:22":1,"s:31:29:31:Infinity":5,"s:32:15:32:Infinity":6,"s:33:4:41:Infinity":7,"f:33:11:33:20":2,"s:34:6:34:Infinity":8,"b:35:6:39:Infinity:undefined:undefined:undefined:undefined":0,"s:35:6:39:Infinity":9,"s:36:8:36:Infinity":10,"s:37:8:37:Infinity":11,"s:38:8:38:Infinity":12,"s:40:6:40:Infinity":13,"s:42:4:49:Infinity":14,"f:42:11:42:24":3,"b:43:6:43:Infinity:undefined:undefined:undefined:undefined":1,"s:43:6:43:Infinity":15,"s:43:31:43:Infinity":16,"s:44:6:48:Infinity":17,"s:45:8:45:Infinity":18,"s:47:8:47:Infinity":19,"s:50:4:50:Infinity":20,"f:54:9:54:18":4,"b:54:104:54:114":2,"s:55:2:55:Infinity":21,"s:56:2:56:Infinity":22,"f:59:9:59:18":5,"b:59:120:59:130":3,"s:60:2:60:Infinity":23,"f:68:9:68:22":6,"s:69:2:69:Infinity":24,"b:69:26:69:Infinity:undefined:undefined:undefined:undefined":4,"s:69:26:69:Infinity":25,"s:69:61:69:Infinity":26,"s:70:2:70:Infinity":27,"f:93:16:93:Infinity":7,"b:95:25:95:Infinity":5,"s:97:22:97:Infinity":28,"s:98:18:98:Infinity":29,"s:99:17:99:Infinity":30,"s:100:22:100:Infinity":31,"b:100:22:100:42:100:42:100:Infinity":6,"s:101:24:101:Infinity":32,"b:101:24:101:46:101:46:101:Infinity":7,"s:102:16:102:Infinity":33,"b:102:16:102:30:102:30:102:Infinity":8,"s:103:19:103:Infinity":34,"b:107:2:117:Infinity:undefined:undefined:undefined:undefined":9,"s:107:2:117:Infinity":35,"s:108:4:116:Infinity":36,"f:108:4:108:22":8,"s:109:18:109:Infinity":37,"s:110:6:115:Infinity":38,"b:111:8:114:Infinity:undefined:undefined:undefined:undefined":10,"s:111:8:114:Infinity":39,"s:112:10:112:Infinity":40,"s:113:10:113:Infinity":41,"s:119:8:122:Infinity":42,"f:119:8:119:24":9,"s:120:4:122:Infinity":43,"b:121:8:121:Infinity:122:9:122:Infinity":11,"f:121:13:121:19":10,"s:121:26:121:83":44,"s:124:2:281:Infinity":45,"f:124:9:124:16":11,"s:125:16:125:Infinity":46,"b:125:24:125:35:125:35:125:40":12,"b:127:4:138:Infinity:undefined:undefined:undefined:undefined":13,"s:127:4:138:Infinity":47,"b:127:8:127:38:127:38:127:60":14,"s:131:22:131:Infinity":48,"s:132:23:132:Infinity":49,"b:132:23:132:43:132:43:132:Infinity":15,"s:133:6:136:Infinity":50,"b:133:31:133:37:133:37:133:42":16,"b:134:27:134:40:134:40:134:Infinity":17,"s:137:6:137:Infinity":51,"b:140:4:143:Infinity:undefined:undefined:undefined:undefined":18,"s:140:4:143:Infinity":52,"s:141:6:141:Infinity":53,"s:142:6:142:Infinity":54,"s:147:26:147:Infinity":55,"b:147:26:147:73:147:73:147:Infinity":19,"b:147:33:147:66:147:66:147:68":20,"s:148:24:148:Infinity":56,"b:148:24:148:47:148:47:148:71:148:71:148:99:148:99:148:Infinity":21,"b:149:4:154:Infinity:undefined:undefined:undefined:undefined":22,"s:149:4:154:Infinity":57,"b:149:8:149:33:149:33:149:47":23,"s:150:6:152:Infinity":58,"b:151:36:151:58:151:58:151:Infinity":24,"s:153:6:153:Infinity":59,"s:156:15:156:Infinity":60,"b:156:15:156:43:156:43:156:Infinity":25,"s:157:20:157:Infinity":61,"b:158:4:163:Infinity:undefined:undefined:undefined:undefined":26,"s:158:4:163:Infinity":62,"s:159:6:161:Infinity":63,"s:162:6:162:Infinity":64,"s:165:17:165:Infinity":65,"b:165:17:165:46:165:46:165:Infinity":27,"s:166:22:166:Infinity":66,"s:172:108:172:Infinity":67,"s:173:27:173:Infinity":68,"b:173:39:173:73:173:73:173:Infinity":28,"b:174:4:186:Infinity:176:11:186:Infinity":29,"s:174:4:186:Infinity":69,"s:175:6:175:Infinity":70,"b:176:11:186:Infinity:undefined:undefined:undefined:undefined":30,"s:176:11:186:Infinity":71,"b:176:15:176:28:176:28:176:40":31,"s:177:16:177:Infinity":72,"b:178:6:185:Infinity:180:13:185:Infinity":32,"s:178:6:185:Infinity":73,"b:178:10:178:15:178:15:178:25":33,"s:179:8:179:Infinity":74,"b:180:13:185:Infinity:undefined:undefined:undefined:undefined":34,"s:180:13:185:Infinity":75,"s:181:8:181:Infinity":76,"b:182:8:184:Infinity:undefined:undefined:undefined:undefined":35,"s:182:8:184:Infinity":77,"b:182:12:182:40:182:40:182:65":36,"s:183:10:183:Infinity":78,"b:187:4:192:Infinity:undefined:undefined:undefined:undefined":37,"s:187:4:192:Infinity":79,"s:188:22:188:Infinity":80,"s:189:6:189:Infinity":81,"b:189:69:189:98:189:98:189:102":38,"s:190:6:190:Infinity":82,"s:191:6:191:Infinity":83,"s:193:4:193:Infinity":84,"s:196:32:201:Infinity":85,"b:199:28:199:58:199:58:199:Infinity":39,"b:200:33:200:78:200:78:200:Infinity":40,"s:203:4:280:Infinity":86,"b:207:6:222:Infinity:undefined:undefined:undefined:undefined":41,"s:207:6:222:Infinity":87,"b:207:10:207:32:207:32:207:47":42,"s:208:24:208:Infinity":88,"b:209:8:212:Infinity:undefined:undefined:undefined:undefined":43,"s:209:8:212:Infinity":89,"s:210:10:210:Infinity":90,"s:211:10:211:Infinity":91,"b:213:8:216:Infinity:undefined:undefined:undefined:undefined":44,"s:213:8:216:Infinity":92,"s:214:10:214:Infinity":93,"s:215:10:215:Infinity":94,"s:217:8:217:Infinity":95,"s:218:21:218:Infinity":96,"b:218:45:218:71:218:71:218:Infinity":45,"b:219:8:219:Infinity:undefined:undefined:undefined:undefined":46,"s:219:8:219:Infinity":97,"s:219:32:219:Infinity":98,"s:220:8:220:Infinity":99,"s:221:8:221:Infinity":100,"s:224:19:224:Infinity":101,"s:225:6:225:Infinity":102,"s:226:6:226:Infinity":103,"b:231:6:254:Infinity:undefined:undefined:undefined:undefined":47,"s:231:6:254:Infinity":104,"b:231:10:231:32:231:32:231:52":48,"b:232:8:235:Infinity:undefined:undefined:undefined:undefined":49,"s:232:8:235:Infinity":105,"s:233:10:233:Infinity":106,"s:234:10:234:Infinity":107,"s:236:23:236:Infinity":108,"s:237:26:243:Infinity":109,"f:238:10:238:36":12,"s:238:36:238:47":110,"f:239:10:239:33":13,"s:240:12:240:Infinity":111,"s:241:12:241:Infinity":112,"s:244:8:250:Infinity":113,"f:244:18:244:34":14,"s:245:22:245:Infinity":114,"b:246:10:249:Infinity:undefined:undefined:undefined:undefined":50,"s:246:10:249:Infinity":115,"b:246:14:246:21:246:21:246:43":51,"s:247:12:247:Infinity":116,"s:248:12:248:Infinity":117,"s:251:8:251:Infinity":118,"s:252:8:252:Infinity":119,"s:253:8:253:Infinity":120,"s:259:21:259:Infinity":121,"s:260:24:262:Infinity":122,"s:263:6:266:Infinity":123,"f:263:13:263:28":15,"s:264:8:264:Infinity":124,"s:265:8:265:Infinity":125,"s:267:6:267:Infinity":126,"s:268:6:268:Infinity":127,"s:270:18:270:Infinity":128,"b:270:39:270:51:270:51:270:Infinity":52,"s:271:6:271:Infinity":129,"b:272:6:279:Infinity:277:13:279:Infinity":53,"s:272:6:279:Infinity":130,"b:275:8:276:Infinity:276:13:276:Infinity":54,"s:275:8:276:Infinity":131,"s:275:36:275:Infinity":132,"s:276:13:276:Infinity":133,"s:278:8:278:Infinity":134,"s:291:66:296:Infinity":135,"f:310:22:310:Infinity":16,"b:313:21:313:Infinity":55,"b:314:40:314:Infinity":56,"b:315:25:315:Infinity":57,"b:317:2:317:Infinity:undefined:undefined:undefined:undefined":58,"s:317:2:317:Infinity":136,"s:317:33:317:Infinity":137,"s:318:2:368:Infinity":138,"s:318:21:318:26":139,"s:319:4:367:Infinity":140,"s:320:19:320:Infinity":141,"s:321:22:321:Infinity":142,"b:321:22:321:39:321:39:321:Infinity":59,"s:323:45:323:Infinity":143,"s:324:6:326:Infinity":144,"b:325:8:325:Infinity:undefined:undefined:undefined:undefined":60,"s:325:8:325:Infinity":145,"s:325:33:325:Infinity":146,"s:329:6:331:Infinity":147,"b:330:8:330:Infinity:undefined:undefined:undefined:undefined":61,"s:330:8:330:Infinity":148,"s:330:62:330:Infinity":149,"s:332:30:332:Infinity":150,"b:332:30:332:71:332:71:332:Infinity":62,"b:333:6:333:Infinity:undefined:undefined:undefined:undefined":63,"s:333:6:333:Infinity":151,"b:333:10:333:35:333:35:333:53":64,"s:333:53:333:Infinity":152,"s:338:23:338:Infinity":153,"f:338:34:338:42":17,"s:338:48:338:60":154,"b:340:6:340:Infinity:undefined:undefined:undefined:undefined":65,"s:340:6:340:Infinity":155,"b:340:10:340:45:340:45:340:68":66,"s:340:68:340:Infinity":156,"s:341:47:341:Infinity":157,"s:342:6:342:Infinity":158,"s:342:32:342:Infinity":159,"s:343:6:343:Infinity":160,"s:344:6:346:Infinity":161,"f:345:74:345:79":18,"s:345:85:345:92":162,"s:347:6:347:Infinity":163,"s:349:18:349:Infinity":164,"b:349:39:349:51:349:51:349:Infinity":67,"b:353:6:356:Infinity:undefined:undefined:undefined:undefined":68,"s:353:6:356:Infinity":165,"s:354:8:354:Infinity":166,"s:355:8:355:Infinity":167,"s:357:20:357:Infinity":168,"b:358:6:364:Infinity:undefined:undefined:undefined:undefined":69,"s:358:6:364:Infinity":169,"s:359:8:362:Infinity":170,"s:363:8:363:Infinity":171,"s:365:6:365:Infinity":172,"s:366:6:366:Infinity":173,"f:366:16:366:25":19,"s:366:31:366:51":174,"f:371:9:371:24":20,"s:372:2:383:Infinity":175,"f:372:13:372:22":21,"s:373:18:378:Infinity":176,"f:373:18:373:35":22,"s:376:6:376:Infinity":177,"s:377:6:377:Infinity":178,"s:379:4:382:Infinity":179,"f:379:11:379:23":23,"s:380:6:380:Infinity":180,"s:381:6:381:Infinity":181,"f:386:15:386:37":24,"s:387:14:387:25":182,"b:391:2:394:Infinity:undefined:undefined:undefined:undefined":70,"s:391:2:394:Infinity":183,"s:392:4:392:Infinity":184,"s:393:4:393:Infinity":185,"s:396:13:396:Infinity":186,"s:397:18:397:Infinity":187,"s:400:2:406:Infinity":188,"f:400:5:400:21":25,"s:401:4:401:Infinity":189,"s:402:4:402:Infinity":190,"s:405:4:405:Infinity":191,"s:407:2:407:Infinity":192,"s:408:15:408:Infinity":193,"s:409:27:409:Infinity":194,"s:416:2:425:Infinity":195,"s:417:4:417:Infinity":196,"b:417:56:417:76:417:76:417:86":71,"s:419:4:423:Infinity":197,"b:420:55:420:67:420:67:420:77":72,"s:424:4:424:Infinity":198,"s:428:2:428:Infinity":199,"s:432:16:432:Infinity":200,"s:433:21:433:Infinity":201,"s:439:4:441:Infinity":202,"b:440:8:440:Infinity:441:8:441:Infinity":73,"b:439:4:439:27:439:27:439:Infinity":74,"s:442:2:444:Infinity":203,"f:442:38:442:55":26,"s:443:4:443:Infinity":204,"s:446:2:452:Infinity":205,"f:446:30:446:47":27,"s:447:4:447:Infinity":206,"s:448:4:448:Infinity":207,"b:448:44:448:68:448:68:448:84":75,"s:449:4:449:Infinity":208,"s:450:4:450:Infinity":209,"b:450:61:450:101:450:101:450:124":76,"b:451:4:451:Infinity:undefined:undefined:undefined:undefined":77,"s:451:4:451:Infinity":210,"s:451:25:451:Infinity":211,"s:454:17:454:Infinity":212,"s:455:8:470:Infinity":213,"f:455:8:455:27":28,"b:456:4:456:Infinity:undefined:undefined:undefined:undefined":78,"s:456:4:456:Infinity":214,"s:456:18:456:Infinity":215,"s:457:4:457:Infinity":216,"s:458:4:458:Infinity":217,"s:459:4:459:Infinity":218,"s:460:4:469:Infinity":219,"f:460:55:460:66":29,"s:461:6:461:Infinity":220,"s:462:6:467:Infinity":221,"s:464:8:464:Infinity":222,"s:468:6:468:Infinity":223,"s:471:2:471:Infinity":224,"s:472:2:472:Infinity":225,"b:477:0:482:Infinity:undefined:undefined:undefined:undefined":79,"s:477:0:482:Infinity":226,"b:477:4:477:23:477:23:477:86":80,"s:478:2:481:Infinity":227,"f:478:9:478:16":30,"s:479:4:479:Infinity":228,"b:479:54:479:77:479:77:479:88":81,"b:479:54:479:65:479:65:479:77":82,"s:480:4:480:Infinity":229},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/ingress.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/ingress.ts","statementMap":{"0":{"start":{"line":24,"column":28},"end":{"line":24,"column":null}},"1":{"start":{"line":27,"column":28},"end":{"line":27,"column":null}},"2":{"start":{"line":46,"column":19},"end":{"line":46,"column":null}},"3":{"start":{"line":50,"column":18},"end":{"line":54,"column":null}},"4":{"start":{"line":52,"column":21},"end":{"line":52,"column":39}},"5":{"start":{"line":53,"column":18},"end":{"line":53,"column":34}},"6":{"start":{"line":55,"column":2},"end":{"line":55,"column":null}},"7":{"start":{"line":55,"column":30},"end":{"line":55,"column":60}},"8":{"start":{"line":60,"column":26},"end":{"line":60,"column":null}},"9":{"start":{"line":61,"column":14},"end":{"line":61,"column":null}},"10":{"start":{"line":62,"column":2},"end":{"line":67,"column":null}},"11":{"start":{"line":63,"column":14},"end":{"line":63,"column":null}},"12":{"start":{"line":64,"column":4},"end":{"line":64,"column":null}},"13":{"start":{"line":64,"column":22},"end":{"line":64,"column":null}},"14":{"start":{"line":65,"column":4},"end":{"line":66,"column":null}},"15":{"start":{"line":65,"column":22},"end":{"line":65,"column":null}},"16":{"start":{"line":66,"column":9},"end":{"line":66,"column":null}},"17":{"start":{"line":68,"column":2},"end":{"line":68,"column":null}},"18":{"start":{"line":68,"column":17},"end":{"line":68,"column":null}},"19":{"start":{"line":69,"column":2},"end":{"line":69,"column":null}},"20":{"start":{"line":74,"column":14},"end":{"line":74,"column":null}},"21":{"start":{"line":75,"column":16},"end":{"line":75,"column":null}},"22":{"start":{"line":76,"column":2},"end":{"line":83,"column":null}},"23":{"start":{"line":77,"column":18},"end":{"line":77,"column":null}},"24":{"start":{"line":78,"column":16},"end":{"line":78,"column":null}},"25":{"start":{"line":79,"column":4},"end":{"line":79,"column":null}},"26":{"start":{"line":79,"column":22},"end":{"line":79,"column":null}},"27":{"start":{"line":80,"column":4},"end":{"line":80,"column":null}},"28":{"start":{"line":80,"column":24},"end":{"line":80,"column":null}},"29":{"start":{"line":81,"column":4},"end":{"line":81,"column":null}},"30":{"start":{"line":81,"column":82},"end":{"line":81,"column":null}},"31":{"start":{"line":82,"column":4},"end":{"line":82,"column":null}},"32":{"start":{"line":82,"column":27},"end":{"line":82,"column":null}},"33":{"start":{"line":84,"column":2},"end":{"line":84,"column":null}},"34":{"start":{"line":88,"column":27},"end":{"line":88,"column":null}},"35":{"start":{"line":89,"column":13},"end":{"line":89,"column":null}},"36":{"start":{"line":90,"column":2},"end":{"line":94,"column":null}},"37":{"start":{"line":91,"column":4},"end":{"line":91,"column":null}},"38":{"start":{"line":92,"column":4},"end":{"line":92,"column":null}},"39":{"start":{"line":92,"column":23},"end":{"line":92,"column":null}},"40":{"start":{"line":93,"column":4},"end":{"line":93,"column":null}},"41":{"start":{"line":95,"column":2},"end":{"line":95,"column":null}},"42":{"start":{"line":108,"column":2},"end":{"line":112,"column":null}},"43":{"start":{"line":109,"column":4},"end":{"line":109,"column":null}},"44":{"start":{"line":111,"column":4},"end":{"line":111,"column":null}},"45":{"start":{"line":113,"column":2},"end":{"line":115,"column":null}},"46":{"start":{"line":114,"column":4},"end":{"line":114,"column":null}},"47":{"start":{"line":116,"column":17},"end":{"line":116,"column":null}},"48":{"start":{"line":117,"column":2},"end":{"line":123,"column":null}},"49":{"start":{"line":118,"column":15},"end":{"line":118,"column":null}},"50":{"start":{"line":119,"column":10},"end":{"line":119,"column":null}},"51":{"start":{"line":119,"column":52},"end":{"line":119,"column":63}},"52":{"start":{"line":120,"column":4},"end":{"line":120,"column":null}},"53":{"start":{"line":120,"column":46},"end":{"line":120,"column":null}},"54":{"start":{"line":121,"column":4},"end":{"line":121,"column":null}},"55":{"start":{"line":122,"column":4},"end":{"line":122,"column":null}},"56":{"start":{"line":124,"column":2},"end":{"line":158,"column":null}},"57":{"start":{"line":125,"column":36},"end":{"line":125,"column":null}},"58":{"start":{"line":126,"column":4},"end":{"line":129,"column":null}},"59":{"start":{"line":127,"column":16},"end":{"line":127,"column":null}},"60":{"start":{"line":128,"column":6},"end":{"line":128,"column":null}},"61":{"start":{"line":128,"column":29},"end":{"line":128,"column":null}},"62":{"start":{"line":132,"column":17},"end":{"line":132,"column":null}},"63":{"start":{"line":133,"column":4},"end":{"line":133,"column":null}},"64":{"start":{"line":133,"column":25},"end":{"line":133,"column":null}},"65":{"start":{"line":134,"column":10},"end":{"line":138,"column":null}},"66":{"start":{"line":134,"column":23},"end":{"line":138,"column":null}},"67":{"start":{"line":137,"column":20},"end":{"line":137,"column":28}},"68":{"start":{"line":139,"column":20},"end":{"line":139,"column":null}},"69":{"start":{"line":140,"column":17},"end":{"line":140,"column":null}},"70":{"start":{"line":141,"column":4},"end":{"line":157,"column":null}},"71":{"start":{"line":142,"column":22},"end":{"line":148,"column":null}},"72":{"start":{"line":149,"column":6},"end":{"line":149,"column":null}},"73":{"start":{"line":150,"column":6},"end":{"line":154,"column":null}},"74":{"start":{"line":156,"column":6},"end":{"line":156,"column":null}},"75":{"start":{"line":159,"column":2},"end":{"line":159,"column":null}},"76":{"start":{"line":167,"column":18},"end":{"line":167,"column":null}},"77":{"start":{"line":169,"column":17},"end":{"line":169,"column":null}},"78":{"start":{"line":170,"column":2},"end":{"line":170,"column":null}},"79":{"start":{"line":170,"column":28},"end":{"line":170,"column":null}},"80":{"start":{"line":171,"column":27},"end":{"line":171,"column":null}},"81":{"start":{"line":172,"column":2},"end":{"line":176,"column":null}},"82":{"start":{"line":173,"column":4},"end":{"line":173,"column":null}},"83":{"start":{"line":175,"column":4},"end":{"line":175,"column":null}},"84":{"start":{"line":177,"column":2},"end":{"line":177,"column":null}},"85":{"start":{"line":178,"column":2},"end":{"line":178,"column":null}},"86":{"start":{"line":182,"column":12},"end":{"line":182,"column":null}},"87":{"start":{"line":183,"column":12},"end":{"line":183,"column":null}},"88":{"start":{"line":184,"column":12},"end":{"line":184,"column":null}},"89":{"start":{"line":185,"column":12},"end":{"line":185,"column":null}},"90":{"start":{"line":186,"column":2},"end":{"line":186,"column":null}},"91":{"start":{"line":190,"column":6},"end":{"line":191,"column":null}},"92":{"start":{"line":191,"column":2},"end":{"line":191,"column":null}},"93":{"start":{"line":199,"column":14},"end":{"line":199,"column":null}},"94":{"start":{"line":200,"column":19},"end":{"line":200,"column":null}},"95":{"start":{"line":201,"column":2},"end":{"line":203,"column":null}},"96":{"start":{"line":202,"column":4},"end":{"line":202,"column":null}},"97":{"start":{"line":204,"column":2},"end":{"line":204,"column":null}},"98":{"start":{"line":213,"column":2},"end":{"line":228,"column":null}},"99":{"start":{"line":214,"column":10},"end":{"line":214,"column":null}},"100":{"start":{"line":215,"column":4},"end":{"line":225,"column":null}},"101":{"start":{"line":218,"column":8},"end":{"line":222,"column":null}},"102":{"start":{"line":219,"column":10},"end":{"line":219,"column":null}},"103":{"start":{"line":221,"column":10},"end":{"line":221,"column":null}},"104":{"start":{"line":224,"column":51},"end":{"line":224,"column":61}},"105":{"start":{"line":227,"column":4},"end":{"line":227,"column":null}},"106":{"start":{"line":234,"column":13},"end":{"line":234,"column":null}},"107":{"start":{"line":235,"column":13},"end":{"line":235,"column":null}},"108":{"start":{"line":236,"column":19},"end":{"line":236,"column":null}},"109":{"start":{"line":237,"column":19},"end":{"line":237,"column":null}},"110":{"start":{"line":238,"column":17},"end":{"line":238,"column":null}},"111":{"start":{"line":239,"column":16},"end":{"line":239,"column":null}},"112":{"start":{"line":240,"column":17},"end":{"line":240,"column":null}},"113":{"start":{"line":243,"column":2},"end":{"line":243,"column":null}},"114":{"start":{"line":247,"column":2},"end":{"line":247,"column":null}},"115":{"start":{"line":265,"column":20},"end":{"line":265,"column":null}},"116":{"start":{"line":267,"column":19},"end":{"line":267,"column":null}},"117":{"start":{"line":268,"column":2},"end":{"line":679,"column":null}},"118":{"start":{"line":269,"column":24},"end":{"line":269,"column":null}},"119":{"start":{"line":275,"column":30},"end":{"line":275,"column":null}},"120":{"start":{"line":276,"column":4},"end":{"line":283,"column":null}},"121":{"start":{"line":277,"column":6},"end":{"line":281,"column":null}},"122":{"start":{"line":278,"column":8},"end":{"line":278,"column":null}},"123":{"start":{"line":279,"column":8},"end":{"line":279,"column":null}},"124":{"start":{"line":280,"column":8},"end":{"line":280,"column":null}},"125":{"start":{"line":282,"column":6},"end":{"line":282,"column":null}},"126":{"start":{"line":284,"column":20},"end":{"line":284,"column":null}},"127":{"start":{"line":285,"column":20},"end":{"line":287,"column":null}},"128":{"start":{"line":291,"column":51},"end":{"line":291,"column":null}},"129":{"start":{"line":293,"column":17},"end":{"line":293,"column":null}},"130":{"start":{"line":294,"column":18},"end":{"line":294,"column":null}},"131":{"start":{"line":295,"column":17},"end":{"line":295,"column":null}},"132":{"start":{"line":296,"column":21},"end":{"line":298,"column":null}},"133":{"start":{"line":299,"column":19},"end":{"line":299,"column":null}},"134":{"start":{"line":302,"column":22},"end":{"line":307,"column":null}},"135":{"start":{"line":309,"column":10},"end":{"line":309,"column":null}},"136":{"start":{"line":309,"column":43},"end":{"line":309,"column":null}},"137":{"start":{"line":310,"column":23},"end":{"line":317,"column":null}},"138":{"start":{"line":320,"column":21},"end":{"line":320,"column":null}},"139":{"start":{"line":322,"column":6},"end":{"line":329,"column":null}},"140":{"start":{"line":326,"column":16},"end":{"line":326,"column":null}},"141":{"start":{"line":331,"column":6},"end":{"line":333,"column":null}},"142":{"start":{"line":332,"column":50},"end":{"line":332,"column":128}},"143":{"start":{"line":334,"column":25},"end":{"line":334,"column":null}},"144":{"start":{"line":337,"column":84},"end":{"line":371,"column":null}},"145":{"start":{"line":372,"column":23},"end":{"line":374,"column":null}},"146":{"start":{"line":373,"column":21},"end":{"line":373,"column":113}},"147":{"start":{"line":375,"column":25},"end":{"line":382,"column":null}},"148":{"start":{"line":377,"column":18},"end":{"line":380,"column":null}},"149":{"start":{"line":386,"column":24},"end":{"line":386,"column":null}},"150":{"start":{"line":387,"column":23},"end":{"line":392,"column":null}},"151":{"start":{"line":390,"column":10},"end":{"line":390,"column":null}},"152":{"start":{"line":393,"column":25},"end":{"line":393,"column":null}},"153":{"start":{"line":394,"column":16},"end":{"line":394,"column":null}},"154":{"start":{"line":395,"column":10},"end":{"line":400,"column":null}},"155":{"start":{"line":396,"column":19},"end":{"line":396,"column":null}},"156":{"start":{"line":397,"column":6},"end":{"line":397,"column":null}},"157":{"start":{"line":397,"column":29},"end":{"line":397,"column":null}},"158":{"start":{"line":398,"column":6},"end":{"line":398,"column":null}},"159":{"start":{"line":398,"column":30},"end":{"line":398,"column":null}},"160":{"start":{"line":399,"column":6},"end":{"line":399,"column":null}},"161":{"start":{"line":401,"column":22},"end":{"line":418,"column":null}},"162":{"start":{"line":403,"column":24},"end":{"line":403,"column":null}},"163":{"start":{"line":404,"column":22},"end":{"line":404,"column":null}},"164":{"start":{"line":405,"column":23},"end":{"line":405,"column":null}},"165":{"start":{"line":406,"column":27},"end":{"line":408,"column":null}},"166":{"start":{"line":407,"column":102},"end":{"line":407,"column":113}},"167":{"start":{"line":409,"column":26},"end":{"line":411,"column":null}},"168":{"start":{"line":413,"column":10},"end":{"line":415,"column":null}},"169":{"start":{"line":416,"column":8},"end":{"line":416,"column":null}},"170":{"start":{"line":424,"column":20},"end":{"line":424,"column":null}},"171":{"start":{"line":425,"column":24},"end":{"line":425,"column":null}},"172":{"start":{"line":427,"column":6},"end":{"line":428,"column":null}},"173":{"start":{"line":428,"column":24},"end":{"line":428,"column":64}},"174":{"start":{"line":429,"column":23},"end":{"line":439,"column":null}},"175":{"start":{"line":430,"column":24},"end":{"line":430,"column":null}},"176":{"start":{"line":431,"column":20},"end":{"line":431,"column":null}},"177":{"start":{"line":432,"column":20},"end":{"line":437,"column":null}},"178":{"start":{"line":433,"column":21},"end":{"line":433,"column":null}},"179":{"start":{"line":434,"column":8},"end":{"line":434,"column":null}},"180":{"start":{"line":434,"column":36},"end":{"line":434,"column":null}},"181":{"start":{"line":435,"column":21},"end":{"line":435,"column":null}},"182":{"start":{"line":436,"column":8},"end":{"line":436,"column":null}},"183":{"start":{"line":438,"column":6},"end":{"line":438,"column":null}},"184":{"start":{"line":443,"column":22},"end":{"line":449,"column":null}},"185":{"start":{"line":450,"column":24},"end":{"line":450,"column":null}},"186":{"start":{"line":451,"column":24},"end":{"line":451,"column":null}},"187":{"start":{"line":452,"column":23},"end":{"line":472,"column":null}},"188":{"start":{"line":478,"column":10},"end":{"line":492,"column":null}},"189":{"start":{"line":479,"column":19},"end":{"line":479,"column":null}},"190":{"start":{"line":481,"column":8},"end":{"line":481,"column":null}},"191":{"start":{"line":482,"column":19},"end":{"line":482,"column":null}},"192":{"start":{"line":484,"column":8},"end":{"line":490,"column":null}},"193":{"start":{"line":491,"column":6},"end":{"line":491,"column":null}},"194":{"start":{"line":494,"column":6},"end":{"line":497,"column":null}},"195":{"start":{"line":499,"column":17},"end":{"line":576,"column":null}},"196":{"start":{"line":677,"column":4},"end":{"line":677,"column":null}},"197":{"start":{"line":678,"column":4},"end":{"line":678,"column":null}}},"fnMap":{"0":{"name":"categoryLevels","decl":{"start":{"line":49,"column":9},"end":{"line":49,"column":24}},"loc":{"start":{"line":49,"column":48},"end":{"line":56,"column":null}},"line":49},"1":{"name":"(anonymous_1)","decl":{"start":{"line":52,"column":7},"end":{"line":52,"column":15}},"loc":{"start":{"line":52,"column":21},"end":{"line":52,"column":39}},"line":52},"2":{"name":"(anonymous_2)","decl":{"start":{"line":53,"column":7},"end":{"line":53,"column":12}},"loc":{"start":{"line":53,"column":18},"end":{"line":53,"column":34}},"line":53},"3":{"name":"(anonymous_3)","decl":{"start":{"line":55,"column":16},"end":{"line":55,"column":24}},"loc":{"start":{"line":55,"column":30},"end":{"line":55,"column":60}},"line":55},"4":{"name":"grantsSummary","decl":{"start":{"line":59,"column":9},"end":{"line":59,"column":23}},"loc":{"start":{"line":59,"column":42},"end":{"line":70,"column":null}},"line":59},"5":{"name":"cappedGates","decl":{"start":{"line":73,"column":9},"end":{"line":73,"column":21}},"loc":{"start":{"line":73,"column":60},"end":{"line":85,"column":null}},"line":73},"6":{"name":"readForm","decl":{"start":{"line":87,"column":15},"end":{"line":87,"column":24}},"loc":{"start":{"line":87,"column":72},"end":{"line":96,"column":null}},"line":87},"7":{"name":"handleTokenPost","decl":{"start":{"line":106,"column":15},"end":{"line":106,"column":31}},"loc":{"start":{"line":106,"column":106},"end":{"line":160,"column":null}},"line":106},"8":{"name":"(anonymous_8)","decl":{"start":{"line":119,"column":40},"end":{"line":119,"column":46}},"loc":{"start":{"line":119,"column":52},"end":{"line":119,"column":63}},"line":119},"9":{"name":"(anonymous_9)","decl":{"start":{"line":134,"column":10},"end":{"line":134,"column":23}},"loc":{"start":{"line":134,"column":23},"end":{"line":138,"column":null}},"line":134},"10":{"name":"(anonymous_10)","decl":{"start":{"line":137,"column":9},"end":{"line":137,"column":14}},"loc":{"start":{"line":137,"column":20},"end":{"line":137,"column":28}},"line":137},"11":{"name":"loadIcon","decl":{"start":{"line":168,"column":15},"end":{"line":168,"column":24}},"loc":{"start":{"line":168,"column":62},"end":{"line":179,"column":null}},"line":168},"12":{"name":"fmtUptime","decl":{"start":{"line":181,"column":9},"end":{"line":181,"column":19}},"loc":{"start":{"line":181,"column":39},"end":{"line":187,"column":null}},"line":181},"13":{"name":"(anonymous_13)","decl":{"start":{"line":190,"column":6},"end":{"line":190,"column":13}},"loc":{"start":{"line":191,"column":2},"end":{"line":191,"column":null}},"line":191},"14":{"name":"detectHaHost","decl":{"start":{"line":198,"column":9},"end":{"line":198,"column":22}},"loc":{"start":{"line":198,"column":52},"end":{"line":205,"column":null}},"line":198},"15":{"name":"readAuditTail","decl":{"start":{"line":212,"column":15},"end":{"line":212,"column":29}},"loc":{"start":{"line":212,"column":91},"end":{"line":229,"column":null}},"line":212},"16":{"name":"(anonymous_16)","decl":{"start":{"line":217,"column":7},"end":{"line":217,"column":12}},"loc":{"start":{"line":217,"column":18},"end":{"line":223,"column":7}},"line":217},"17":{"name":"(anonymous_17)","decl":{"start":{"line":224,"column":7},"end":{"line":224,"column":15}},"loc":{"start":{"line":224,"column":51},"end":{"line":224,"column":61}},"line":224},"18":{"name":"statCard","decl":{"start":{"line":242,"column":9},"end":{"line":242,"column":18}},"loc":{"start":{"line":242,"column":69},"end":{"line":244,"column":null}},"line":242},"19":{"name":"safetyRow","decl":{"start":{"line":246,"column":9},"end":{"line":246,"column":19}},"loc":{"start":{"line":246,"column":56},"end":{"line":248,"column":null}},"line":246},"20":{"name":"createIngressHandler","decl":{"start":{"line":260,"column":16},"end":{"line":260,"column":null}},"loc":{"start":{"line":264,"column":55},"end":{"line":680,"column":null}},"line":264},"21":{"name":"(anonymous_21)","decl":{"start":{"line":268,"column":9},"end":{"line":268,"column":16}},"loc":{"start":{"line":268,"column":29},"end":{"line":679,"column":null}},"line":268},"22":{"name":"(anonymous_22)","decl":{"start":{"line":309,"column":10},"end":{"line":309,"column":18}},"loc":{"start":{"line":309,"column":43},"end":{"line":309,"column":null}},"line":309},"23":{"name":"(anonymous_23)","decl":{"start":{"line":324,"column":13},"end":{"line":324,"column":null}},"loc":{"start":{"line":326,"column":16},"end":{"line":326,"column":null}},"line":326},"24":{"name":"(anonymous_24)","decl":{"start":{"line":332,"column":39},"end":{"line":332,"column":44}},"loc":{"start":{"line":332,"column":50},"end":{"line":332,"column":128}},"line":332},"25":{"name":"(anonymous_25)","decl":{"start":{"line":373,"column":7},"end":{"line":373,"column":12}},"loc":{"start":{"line":373,"column":21},"end":{"line":373,"column":113}},"line":373},"26":{"name":"(anonymous_26)","decl":{"start":{"line":376,"column":7},"end":{"line":376,"column":null}},"loc":{"start":{"line":377,"column":18},"end":{"line":380,"column":null}},"line":377},"27":{"name":"(anonymous_27)","decl":{"start":{"line":388,"column":7},"end":{"line":388,"column":null}},"loc":{"start":{"line":390,"column":10},"end":{"line":390,"column":null}},"line":390},"28":{"name":"(anonymous_28)","decl":{"start":{"line":395,"column":10},"end":{"line":395,"column":23}},"loc":{"start":{"line":395,"column":74},"end":{"line":400,"column":null}},"line":395},"29":{"name":"(anonymous_29)","decl":{"start":{"line":402,"column":7},"end":{"line":402,"column":12}},"loc":{"start":{"line":402,"column":18},"end":{"line":417,"column":7}},"line":402},"30":{"name":"(anonymous_30)","decl":{"start":{"line":407,"column":91},"end":{"line":407,"column":96}},"loc":{"start":{"line":407,"column":102},"end":{"line":407,"column":113}},"line":407},"31":{"name":"(anonymous_31)","decl":{"start":{"line":428,"column":13},"end":{"line":428,"column":18}},"loc":{"start":{"line":428,"column":24},"end":{"line":428,"column":64}},"line":428},"32":{"name":"(anonymous_32)","decl":{"start":{"line":429,"column":34},"end":{"line":429,"column":39}},"loc":{"start":{"line":429,"column":45},"end":{"line":439,"column":5}},"line":429},"33":{"name":"(anonymous_33)","decl":{"start":{"line":432,"column":27},"end":{"line":432,"column":32}},"loc":{"start":{"line":432,"column":38},"end":{"line":437,"column":7}},"line":432},"34":{"name":"(anonymous_34)","decl":{"start":{"line":478,"column":10},"end":{"line":478,"column":22}},"loc":{"start":{"line":478,"column":61},"end":{"line":492,"column":null}},"line":478}},"branchMap":{"0":{"loc":{"start":{"line":55,"column":30},"end":{"line":55,"column":60}},"type":"binary-expr","locations":[{"start":{"line":55,"column":30},"end":{"line":55,"column":46}},{"start":{"line":55,"column":46},"end":{"line":55,"column":60}}],"line":55},"1":{"loc":{"start":{"line":63,"column":14},"end":{"line":63,"column":null}},"type":"binary-expr","locations":[{"start":{"line":63,"column":14},"end":{"line":63,"column":22}},{"start":{"line":63,"column":22},"end":{"line":63,"column":null}}],"line":63},"2":{"loc":{"start":{"line":64,"column":4},"end":{"line":64,"column":null}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":null}},{"start":{},"end":{}}],"line":64},"3":{"loc":{"start":{"line":65,"column":4},"end":{"line":66,"column":null}},"type":"if","locations":[{"start":{"line":65,"column":4},"end":{"line":66,"column":null}},{"start":{"line":66,"column":9},"end":{"line":66,"column":null}}],"line":65},"4":{"loc":{"start":{"line":68,"column":2},"end":{"line":68,"column":null}},"type":"if","locations":[{"start":{"line":68,"column":2},"end":{"line":68,"column":null}},{"start":{},"end":{}}],"line":68},"5":{"loc":{"start":{"line":69,"column":9},"end":{"line":69,"column":null}},"type":"binary-expr","locations":[{"start":{"line":69,"column":9},"end":{"line":69,"column":30}},{"start":{"line":69,"column":30},"end":{"line":69,"column":null}}],"line":69},"6":{"loc":{"start":{"line":77,"column":33},"end":{"line":77,"column":47}},"type":"binary-expr","locations":[{"start":{"line":77,"column":33},"end":{"line":77,"column":41}},{"start":{"line":77,"column":41},"end":{"line":77,"column":47}}],"line":77},"7":{"loc":{"start":{"line":79,"column":4},"end":{"line":79,"column":null}},"type":"if","locations":[{"start":{"line":79,"column":4},"end":{"line":79,"column":null}},{"start":{},"end":{}}],"line":79},"8":{"loc":{"start":{"line":80,"column":4},"end":{"line":80,"column":null}},"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":null}},{"start":{},"end":{}}],"line":80},"9":{"loc":{"start":{"line":81,"column":4},"end":{"line":81,"column":null}},"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":null}},{"start":{},"end":{}}],"line":81},"10":{"loc":{"start":{"line":81,"column":4},"end":{"line":81,"column":82}},"type":"binary-expr","locations":[{"start":{"line":81,"column":9},"end":{"line":81,"column":29}},{"start":{"line":81,"column":29},"end":{"line":81,"column":51}},{"start":{"line":81,"column":51},"end":{"line":81,"column":82}}],"line":81},"11":{"loc":{"start":{"line":82,"column":4},"end":{"line":82,"column":null}},"type":"if","locations":[{"start":{"line":82,"column":4},"end":{"line":82,"column":null}},{"start":{},"end":{}}],"line":82},"12":{"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},"13":{"loc":{"start":{"line":111,"column":34},"end":{"line":111,"column":77}},"type":"cond-expr","locations":[{"start":{"line":111,"column":55},"end":{"line":111,"column":67}},{"start":{"line":111,"column":67},"end":{"line":111,"column":77}}],"line":111},"14":{"loc":{"start":{"line":113,"column":2},"end":{"line":115,"column":null}},"type":"if","locations":[{"start":{"line":113,"column":2},"end":{"line":115,"column":null}},{"start":{},"end":{}}],"line":113},"15":{"loc":{"start":{"line":117,"column":2},"end":{"line":123,"column":null}},"type":"if","locations":[{"start":{"line":117,"column":2},"end":{"line":123,"column":null}},{"start":{},"end":{}}],"line":117},"16":{"loc":{"start":{"line":118,"column":15},"end":{"line":118,"column":null}},"type":"binary-expr","locations":[{"start":{"line":118,"column":15},"end":{"line":118,"column":33}},{"start":{"line":118,"column":33},"end":{"line":118,"column":null}}],"line":118},"17":{"loc":{"start":{"line":120,"column":4},"end":{"line":120,"column":null}},"type":"if","locations":[{"start":{"line":120,"column":4},"end":{"line":120,"column":null}},{"start":{},"end":{}}],"line":120},"18":{"loc":{"start":{"line":120,"column":8},"end":{"line":120,"column":46}},"type":"binary-expr","locations":[{"start":{"line":120,"column":8},"end":{"line":120,"column":19}},{"start":{"line":120,"column":19},"end":{"line":120,"column":46}}],"line":120},"19":{"loc":{"start":{"line":124,"column":2},"end":{"line":158,"column":null}},"type":"if","locations":[{"start":{"line":124,"column":2},"end":{"line":158,"column":null}},{"start":{},"end":{}}],"line":124},"20":{"loc":{"start":{"line":128,"column":6},"end":{"line":128,"column":null}},"type":"if","locations":[{"start":{"line":128,"column":6},"end":{"line":128,"column":null}},{"start":{},"end":{}}],"line":128},"21":{"loc":{"start":{"line":128,"column":10},"end":{"line":128,"column":29}},"type":"binary-expr","locations":[{"start":{"line":128,"column":10},"end":{"line":128,"column":15}},{"start":{"line":128,"column":15},"end":{"line":128,"column":29}}],"line":128},"22":{"loc":{"start":{"line":133,"column":4},"end":{"line":133,"column":null}},"type":"if","locations":[{"start":{"line":133,"column":4},"end":{"line":133,"column":null}},{"start":{},"end":{}}],"line":133},"23":{"loc":{"start":{"line":135,"column":7},"end":{"line":135,"column":28}},"type":"binary-expr","locations":[{"start":{"line":135,"column":7},"end":{"line":135,"column":26}},{"start":{"line":135,"column":26},"end":{"line":135,"column":28}}],"line":135},"24":{"loc":{"start":{"line":139,"column":20},"end":{"line":139,"column":null}},"type":"binary-expr","locations":[{"start":{"line":139,"column":20},"end":{"line":139,"column":43}},{"start":{"line":139,"column":43},"end":{"line":139,"column":null}}],"line":139},"25":{"loc":{"start":{"line":140,"column":17},"end":{"line":140,"column":null}},"type":"cond-expr","locations":[{"start":{"line":140,"column":37},"end":{"line":140,"column":42}},{"start":{"line":140,"column":42},"end":{"line":140,"column":null}}],"line":140},"26":{"loc":{"start":{"line":140,"column":42},"end":{"line":140,"column":null}},"type":"cond-expr","locations":[{"start":{"line":140,"column":62},"end":{"line":140,"column":67}},{"start":{"line":140,"column":67},"end":{"line":140,"column":null}}],"line":140},"27":{"loc":{"start":{"line":140,"column":67},"end":{"line":140,"column":null}},"type":"cond-expr","locations":[{"start":{"line":140,"column":88},"end":{"line":140,"column":94}},{"start":{"line":140,"column":94},"end":{"line":140,"column":null}}],"line":140},"28":{"loc":{"start":{"line":143,"column":14},"end":{"line":143,"column":null}},"type":"binary-expr","locations":[{"start":{"line":143,"column":14},"end":{"line":143,"column":34}},{"start":{"line":143,"column":34},"end":{"line":143,"column":null}}],"line":143},"29":{"loc":{"start":{"line":147,"column":19},"end":{"line":147,"column":null}},"type":"cond-expr","locations":[{"start":{"line":147,"column":26},"end":{"line":147,"column":83}},{"start":{"line":147,"column":83},"end":{"line":147,"column":null}}],"line":147},"30":{"loc":{"start":{"line":156,"column":36},"end":{"line":156,"column":79}},"type":"cond-expr","locations":[{"start":{"line":156,"column":57},"end":{"line":156,"column":69}},{"start":{"line":156,"column":69},"end":{"line":156,"column":79}}],"line":156},"31":{"loc":{"start":{"line":170,"column":2},"end":{"line":170,"column":null}},"type":"if","locations":[{"start":{"line":170,"column":2},"end":{"line":170,"column":null}},{"start":{},"end":{}}],"line":170},"32":{"loc":{"start":{"line":186,"column":9},"end":{"line":186,"column":null}},"type":"cond-expr","locations":[{"start":{"line":186,"column":17},"end":{"line":186,"column":39}},{"start":{"line":186,"column":39},"end":{"line":186,"column":null}}],"line":186},"33":{"loc":{"start":{"line":186,"column":39},"end":{"line":186,"column":null}},"type":"cond-expr","locations":[{"start":{"line":186,"column":47},"end":{"line":186,"column":63}},{"start":{"line":186,"column":63},"end":{"line":186,"column":null}}],"line":186},"34":{"loc":{"start":{"line":199,"column":21},"end":{"line":199,"column":78}},"type":"binary-expr","locations":[{"start":{"line":199,"column":21},"end":{"line":199,"column":56}},{"start":{"line":199,"column":56},"end":{"line":199,"column":76}},{"start":{"line":199,"column":76},"end":{"line":199,"column":78}}],"line":199},"35":{"loc":{"start":{"line":201,"column":2},"end":{"line":203,"column":null}},"type":"if","locations":[{"start":{"line":201,"column":2},"end":{"line":203,"column":null}},{"start":{},"end":{}}],"line":201},"36":{"loc":{"start":{"line":201,"column":6},"end":{"line":201,"column":110}},"type":"binary-expr","locations":[{"start":{"line":201,"column":6},"end":{"line":201,"column":19}},{"start":{"line":201,"column":19},"end":{"line":201,"column":47}},{"start":{"line":201,"column":47},"end":{"line":201,"column":75}},{"start":{"line":201,"column":75},"end":{"line":201,"column":110}}],"line":201},"37":{"loc":{"start":{"line":262,"column":2},"end":{"line":262,"column":null}},"type":"default-arg","locations":[{"start":{"line":262,"column":22},"end":{"line":262,"column":null}}],"line":262},"38":{"loc":{"start":{"line":263,"column":2},"end":{"line":263,"column":null}},"type":"default-arg","locations":[{"start":{"line":263,"column":25},"end":{"line":263,"column":null}}],"line":263},"39":{"loc":{"start":{"line":265,"column":20},"end":{"line":265,"column":null}},"type":"binary-expr","locations":[{"start":{"line":265,"column":20},"end":{"line":265,"column":38}},{"start":{"line":265,"column":38},"end":{"line":265,"column":null}}],"line":265},"40":{"loc":{"start":{"line":267,"column":19},"end":{"line":267,"column":null}},"type":"binary-expr","locations":[{"start":{"line":267,"column":19},"end":{"line":267,"column":36}},{"start":{"line":267,"column":36},"end":{"line":267,"column":null}}],"line":267},"41":{"loc":{"start":{"line":276,"column":4},"end":{"line":283,"column":null}},"type":"if","locations":[{"start":{"line":276,"column":4},"end":{"line":283,"column":null}},{"start":{},"end":{}}],"line":276},"42":{"loc":{"start":{"line":277,"column":6},"end":{"line":281,"column":null}},"type":"if","locations":[{"start":{"line":277,"column":6},"end":{"line":281,"column":null}},{"start":{},"end":{}}],"line":277},"43":{"loc":{"start":{"line":285,"column":20},"end":{"line":287,"column":null}},"type":"cond-expr","locations":[{"start":{"line":286,"column":8},"end":{"line":286,"column":null}},{"start":{"line":287,"column":8},"end":{"line":287,"column":null}}],"line":285},"44":{"loc":{"start":{"line":287,"column":320},"end":{"line":287,"column":378}},"type":"cond-expr","locations":[{"start":{"line":287,"column":339},"end":{"line":287,"column":375}},{"start":{"line":287,"column":375},"end":{"line":287,"column":378}}],"line":287},"45":{"loc":{"start":{"line":296,"column":21},"end":{"line":298,"column":null}},"type":"cond-expr","locations":[{"start":{"line":297,"column":8},"end":{"line":297,"column":null}},{"start":{"line":298,"column":8},"end":{"line":298,"column":null}}],"line":296},"46":{"loc":{"start":{"line":303,"column":80},"end":{"line":303,"column":163}},"type":"cond-expr","locations":[{"start":{"line":303,"column":93},"end":{"line":303,"column":159}},{"start":{"line":303,"column":159},"end":{"line":303,"column":163}}],"line":303},"47":{"loc":{"start":{"line":304,"column":36},"end":{"line":304,"column":52}},"type":"binary-expr","locations":[{"start":{"line":304,"column":36},"end":{"line":304,"column":51}},{"start":{"line":304,"column":51},"end":{"line":304,"column":52}}],"line":304},"48":{"loc":{"start":{"line":304,"column":55},"end":{"line":304,"column":193}},"type":"cond-expr","locations":[{"start":{"line":304,"column":91},"end":{"line":304,"column":180}},{"start":{"line":304,"column":180},"end":{"line":304,"column":193}}],"line":304},"49":{"loc":{"start":{"line":304,"column":55},"end":{"line":304,"column":91}},"type":"binary-expr","locations":[{"start":{"line":304,"column":55},"end":{"line":304,"column":63}},{"start":{"line":304,"column":63},"end":{"line":304,"column":91}}],"line":304},"50":{"loc":{"start":{"line":304,"column":139},"end":{"line":304,"column":180}},"type":"cond-expr","locations":[{"start":{"line":304,"column":167},"end":{"line":304,"column":173}},{"start":{"line":304,"column":173},"end":{"line":304,"column":180}}],"line":304},"51":{"loc":{"start":{"line":306,"column":37},"end":{"line":306,"column":55}},"type":"binary-expr","locations":[{"start":{"line":306,"column":37},"end":{"line":306,"column":54}},{"start":{"line":306,"column":54},"end":{"line":306,"column":55}}],"line":306},"52":{"loc":{"start":{"line":309,"column":43},"end":{"line":309,"column":null}},"type":"cond-expr","locations":[{"start":{"line":309,"column":48},"end":{"line":309,"column":92}},{"start":{"line":309,"column":92},"end":{"line":309,"column":null}}],"line":309},"53":{"loc":{"start":{"line":316,"column":93},"end":{"line":316,"column":132}},"type":"binary-expr","locations":[{"start":{"line":316,"column":93},"end":{"line":316,"column":126}},{"start":{"line":316,"column":126},"end":{"line":316,"column":132}}],"line":316},"54":{"loc":{"start":{"line":320,"column":21},"end":{"line":320,"column":null}},"type":"binary-expr","locations":[{"start":{"line":320,"column":21},"end":{"line":320,"column":50}},{"start":{"line":320,"column":50},"end":{"line":320,"column":null}}],"line":320},"55":{"loc":{"start":{"line":322,"column":6},"end":{"line":329,"column":null}},"type":"cond-expr","locations":[{"start":{"line":323,"column":10},"end":{"line":328,"column":null}},{"start":{"line":329,"column":10},"end":{"line":329,"column":null}}],"line":322},"56":{"loc":{"start":{"line":322,"column":6},"end":{"line":322,"column":null}},"type":"binary-expr","locations":[{"start":{"line":322,"column":6},"end":{"line":322,"column":14}},{"start":{"line":322,"column":14},"end":{"line":322,"column":null}}],"line":322},"57":{"loc":{"start":{"line":331,"column":6},"end":{"line":333,"column":null}},"type":"cond-expr","locations":[{"start":{"line":332,"column":10},"end":{"line":332,"column":null}},{"start":{"line":333,"column":10},"end":{"line":333,"column":null}}],"line":331},"58":{"loc":{"start":{"line":331,"column":6},"end":{"line":331,"column":null}},"type":"binary-expr","locations":[{"start":{"line":331,"column":6},"end":{"line":331,"column":14}},{"start":{"line":331,"column":14},"end":{"line":331,"column":null}}],"line":331},"59":{"loc":{"start":{"line":373,"column":43},"end":{"line":373,"column":64}},"type":"cond-expr","locations":[{"start":{"line":373,"column":53},"end":{"line":373,"column":61}},{"start":{"line":373,"column":61},"end":{"line":373,"column":64}}],"line":373},"60":{"loc":{"start":{"line":377,"column":62},"end":{"line":377,"column":87}},"type":"cond-expr","locations":[{"start":{"line":377,"column":72},"end":{"line":377,"column":77}},{"start":{"line":377,"column":77},"end":{"line":377,"column":87}}],"line":377},"61":{"loc":{"start":{"line":390,"column":177},"end":{"line":390,"column":217}},"type":"cond-expr","locations":[{"start":{"line":390,"column":187},"end":{"line":390,"column":211}},{"start":{"line":390,"column":211},"end":{"line":390,"column":217}}],"line":390},"62":{"loc":{"start":{"line":390,"column":384},"end":{"line":390,"column":467}},"type":"cond-expr","locations":[{"start":{"line":390,"column":394},"end":{"line":390,"column":435}},{"start":{"line":390,"column":435},"end":{"line":390,"column":467}}],"line":390},"63":{"loc":{"start":{"line":393,"column":25},"end":{"line":393,"column":null}},"type":"cond-expr","locations":[{"start":{"line":393,"column":38},"end":{"line":393,"column":64}},{"start":{"line":393,"column":64},"end":{"line":393,"column":null}}],"line":393},"64":{"loc":{"start":{"line":397,"column":6},"end":{"line":397,"column":null}},"type":"if","locations":[{"start":{"line":397,"column":6},"end":{"line":397,"column":null}},{"start":{},"end":{}}],"line":397},"65":{"loc":{"start":{"line":398,"column":6},"end":{"line":398,"column":null}},"type":"if","locations":[{"start":{"line":398,"column":6},"end":{"line":398,"column":null}},{"start":{},"end":{}}],"line":398},"66":{"loc":{"start":{"line":403,"column":24},"end":{"line":403,"column":null}},"type":"binary-expr","locations":[{"start":{"line":403,"column":24},"end":{"line":403,"column":48}},{"start":{"line":403,"column":48},"end":{"line":403,"column":null}}],"line":403},"67":{"loc":{"start":{"line":404,"column":22},"end":{"line":404,"column":null}},"type":"cond-expr","locations":[{"start":{"line":404,"column":36},"end":{"line":404,"column":48}},{"start":{"line":404,"column":48},"end":{"line":404,"column":null}}],"line":404},"68":{"loc":{"start":{"line":404,"column":48},"end":{"line":404,"column":null}},"type":"cond-expr","locations":[{"start":{"line":404,"column":58},"end":{"line":404,"column":70}},{"start":{"line":404,"column":70},"end":{"line":404,"column":null}}],"line":404},"69":{"loc":{"start":{"line":406,"column":27},"end":{"line":408,"column":null}},"type":"cond-expr","locations":[{"start":{"line":407,"column":12},"end":{"line":407,"column":null}},{"start":{"line":408,"column":12},"end":{"line":408,"column":null}}],"line":406},"70":{"loc":{"start":{"line":409,"column":26},"end":{"line":411,"column":null}},"type":"cond-expr","locations":[{"start":{"line":410,"column":12},"end":{"line":410,"column":null}},{"start":{"line":411,"column":12},"end":{"line":411,"column":null}}],"line":409},"71":{"loc":{"start":{"line":411,"column":55},"end":{"line":411,"column":181}},"type":"cond-expr","locations":[{"start":{"line":411,"column":65},"end":{"line":411,"column":114}},{"start":{"line":411,"column":114},"end":{"line":411,"column":181}}],"line":411},"72":{"loc":{"start":{"line":411,"column":114},"end":{"line":411,"column":181}},"type":"cond-expr","locations":[{"start":{"line":411,"column":128},"end":{"line":411,"column":176}},{"start":{"line":411,"column":176},"end":{"line":411,"column":181}}],"line":411},"73":{"loc":{"start":{"line":411,"column":181},"end":{"line":411,"column":null}},"type":"cond-expr","locations":[{"start":{"line":411,"column":196},"end":{"line":411,"column":247}},{"start":{"line":411,"column":247},"end":{"line":411,"column":null}}],"line":411},"74":{"loc":{"start":{"line":413,"column":10},"end":{"line":415,"column":null}},"type":"cond-expr","locations":[{"start":{"line":414,"column":14},"end":{"line":414,"column":null}},{"start":{"line":415,"column":14},"end":{"line":415,"column":null}}],"line":413},"75":{"loc":{"start":{"line":434,"column":8},"end":{"line":434,"column":null}},"type":"if","locations":[{"start":{"line":434,"column":8},"end":{"line":434,"column":null}},{"start":{},"end":{}}],"line":434},"76":{"loc":{"start":{"line":436,"column":38},"end":{"line":436,"column":93}},"type":"cond-expr","locations":[{"start":{"line":436,"column":45},"end":{"line":436,"column":90}},{"start":{"line":436,"column":90},"end":{"line":436,"column":93}}],"line":436},"77":{"loc":{"start":{"line":436,"column":146},"end":{"line":436,"column":179}},"type":"cond-expr","locations":[{"start":{"line":436,"column":161},"end":{"line":436,"column":174}},{"start":{"line":436,"column":174},"end":{"line":436,"column":179}}],"line":436},"78":{"loc":{"start":{"line":436,"column":179},"end":{"line":436,"column":203}},"type":"cond-expr","locations":[{"start":{"line":436,"column":186},"end":{"line":436,"column":200}},{"start":{"line":436,"column":200},"end":{"line":436,"column":203}}],"line":436},"79":{"loc":{"start":{"line":436,"column":240},"end":{"line":436,"column":299}},"type":"cond-expr","locations":[{"start":{"line":436,"column":247},"end":{"line":436,"column":282}},{"start":{"line":436,"column":282},"end":{"line":436,"column":299}}],"line":436},"80":{"loc":{"start":{"line":443,"column":22},"end":{"line":449,"column":null}},"type":"cond-expr","locations":[{"start":{"line":444,"column":8},"end":{"line":444,"column":null}},{"start":{"line":445,"column":8},"end":{"line":449,"column":null}}],"line":443},"81":{"loc":{"start":{"line":445,"column":8},"end":{"line":449,"column":null}},"type":"cond-expr","locations":[{"start":{"line":446,"column":10},"end":{"line":446,"column":null}},{"start":{"line":447,"column":10},"end":{"line":449,"column":null}}],"line":445},"82":{"loc":{"start":{"line":446,"column":495},"end":{"line":446,"column":513}},"type":"binary-expr","locations":[{"start":{"line":446,"column":495},"end":{"line":446,"column":511}},{"start":{"line":446,"column":511},"end":{"line":446,"column":513}}],"line":446},"83":{"loc":{"start":{"line":447,"column":10},"end":{"line":449,"column":null}},"type":"cond-expr","locations":[{"start":{"line":448,"column":12},"end":{"line":448,"column":null}},{"start":{"line":449,"column":12},"end":{"line":449,"column":null}}],"line":447},"84":{"loc":{"start":{"line":452,"column":23},"end":{"line":472,"column":null}},"type":"cond-expr","locations":[{"start":{"line":453,"column":8},"end":{"line":453,"column":null}},{"start":{"line":454,"column":8},"end":{"line":472,"column":null}}],"line":452},"85":{"loc":{"start":{"line":479,"column":19},"end":{"line":479,"column":null}},"type":"binary-expr","locations":[{"start":{"line":479,"column":19},"end":{"line":479,"column":55}},{"start":{"line":479,"column":55},"end":{"line":479,"column":null}}],"line":479},"86":{"loc":{"start":{"line":479,"column":26},"end":{"line":479,"column":36}},"type":"binary-expr","locations":[{"start":{"line":479,"column":26},"end":{"line":479,"column":34}},{"start":{"line":479,"column":34},"end":{"line":479,"column":36}}],"line":479},"87":{"loc":{"start":{"line":481,"column":8},"end":{"line":481,"column":null}},"type":"binary-expr","locations":[{"start":{"line":481,"column":8},"end":{"line":481,"column":24}},{"start":{"line":481,"column":24},"end":{"line":481,"column":null}}],"line":481},"88":{"loc":{"start":{"line":481,"column":24},"end":{"line":481,"column":null}},"type":"cond-expr","locations":[{"start":{"line":481,"column":48},"end":{"line":481,"column":77}},{"start":{"line":481,"column":77},"end":{"line":481,"column":null}}],"line":481},"89":{"loc":{"start":{"line":481,"column":24},"end":{"line":481,"column":48}},"type":"binary-expr","locations":[{"start":{"line":481,"column":24},"end":{"line":481,"column":36}},{"start":{"line":481,"column":36},"end":{"line":481,"column":48}}],"line":481},"90":{"loc":{"start":{"line":481,"column":77},"end":{"line":481,"column":null}},"type":"cond-expr","locations":[{"start":{"line":481,"column":88},"end":{"line":481,"column":115}},{"start":{"line":481,"column":115},"end":{"line":481,"column":null}}],"line":481},"91":{"loc":{"start":{"line":482,"column":19},"end":{"line":482,"column":null}},"type":"cond-expr","locations":[{"start":{"line":482,"column":40},"end":{"line":482,"column":48}},{"start":{"line":482,"column":48},"end":{"line":482,"column":null}}],"line":482},"92":{"loc":{"start":{"line":482,"column":48},"end":{"line":482,"column":null}},"type":"cond-expr","locations":[{"start":{"line":482,"column":83},"end":{"line":482,"column":95}},{"start":{"line":482,"column":95},"end":{"line":482,"column":null}}],"line":482},"93":{"loc":{"start":{"line":482,"column":95},"end":{"line":482,"column":null}},"type":"cond-expr","locations":[{"start":{"line":482,"column":116},"end":{"line":482,"column":123}},{"start":{"line":482,"column":123},"end":{"line":482,"column":null}}],"line":482},"94":{"loc":{"start":{"line":484,"column":8},"end":{"line":490,"column":null}},"type":"cond-expr","locations":[{"start":{"line":485,"column":12},"end":{"line":485,"column":null}},{"start":{"line":486,"column":12},"end":{"line":490,"column":null}}],"line":484},"95":{"loc":{"start":{"line":486,"column":12},"end":{"line":490,"column":null}},"type":"cond-expr","locations":[{"start":{"line":487,"column":14},"end":{"line":487,"column":null}},{"start":{"line":488,"column":14},"end":{"line":490,"column":null}}],"line":486},"96":{"loc":{"start":{"line":488,"column":14},"end":{"line":490,"column":null}},"type":"cond-expr","locations":[{"start":{"line":489,"column":16},"end":{"line":489,"column":null}},{"start":{"line":490,"column":16},"end":{"line":490,"column":null}}],"line":488},"97":{"loc":{"start":{"line":490,"column":118},"end":{"line":490,"column":132}},"type":"binary-expr","locations":[{"start":{"line":490,"column":118},"end":{"line":490,"column":130}},{"start":{"line":490,"column":130},"end":{"line":490,"column":132}}],"line":490},"98":{"loc":{"start":{"line":491,"column":298},"end":{"line":491,"column":312}},"type":"binary-expr","locations":[{"start":{"line":491,"column":298},"end":{"line":491,"column":310}},{"start":{"line":491,"column":310},"end":{"line":491,"column":312}}],"line":491},"99":{"loc":{"start":{"line":491,"column":359},"end":{"line":491,"column":371}},"type":"binary-expr","locations":[{"start":{"line":491,"column":359},"end":{"line":491,"column":369}},{"start":{"line":491,"column":369},"end":{"line":491,"column":371}}],"line":491},"100":{"loc":{"start":{"line":494,"column":6},"end":{"line":497,"column":null}},"type":"cond-expr","locations":[{"start":{"line":495,"column":10},"end":{"line":495,"column":null}},{"start":{"line":496,"column":10},"end":{"line":497,"column":null}}],"line":494},"101":{"loc":{"start":{"line":494,"column":6},"end":{"line":494,"column":null}},"type":"binary-expr","locations":[{"start":{"line":494,"column":6},"end":{"line":494,"column":24}},{"start":{"line":494,"column":24},"end":{"line":494,"column":null}}],"line":494},"102":{"loc":{"start":{"line":566,"column":67},"end":{"line":566,"column":86}},"type":"binary-expr","locations":[{"start":{"line":566,"column":67},"end":{"line":566,"column":84}},{"start":{"line":566,"column":84},"end":{"line":566,"column":86}}],"line":566}},"s":{"0":2,"1":2,"2":2,"3":351,"4":15795,"5":1215,"6":351,"7":1404,"8":5,"9":5,"10":5,"11":65,"12":65,"13":58,"14":7,"15":4,"16":3,"17":5,"18":4,"19":5,"20":7,"21":7,"22":7,"23":91,"24":91,"25":91,"26":89,"27":2,"28":0,"29":2,"30":1,"31":2,"32":1,"33":7,"34":4,"35":4,"36":4,"37":4,"38":4,"39":0,"40":4,"41":4,"42":4,"43":4,"44":0,"45":4,"46":1,"47":3,"48":3,"49":1,"50":1,"51":1,"52":1,"53":0,"54":1,"55":1,"56":2,"57":2,"58":2,"59":26,"60":26,"61":3,"62":2,"63":2,"64":1,"65":1,"66":2,"67":3,"68":1,"69":2,"70":2,"71":2,"72":1,"73":1,"74":0,"75":0,"76":2,"77":27,"78":27,"79":25,"80":2,"81":2,"82":2,"83":1,"84":2,"85":2,"86":28,"87":28,"88":28,"89":28,"90":28,"91":2,"92":1158,"93":27,"94":27,"95":27,"96":26,"97":1,"98":27,"99":27,"100":1,"101":3,"102":3,"103":0,"104":3,"105":26,"106":2,"107":2,"108":2,"109":2,"110":2,"111":2,"112":2,"113":108,"114":189,"115":18,"116":18,"117":18,"118":28,"119":28,"120":28,"121":5,"122":1,"123":1,"124":1,"125":4,"126":27,"127":27,"128":28,"129":28,"130":28,"131":27,"132":27,"133":28,"134":28,"135":28,"136":135,"137":28,"138":28,"139":28,"140":2,"141":28,"142":2,"143":28,"144":28,"145":28,"146":135,"147":28,"148":135,"149":28,"150":28,"151":27,"152":28,"153":28,"154":28,"155":5,"156":5,"157":3,"158":2,"159":2,"160":0,"161":28,"162":5,"163":5,"164":5,"165":5,"166":1,"167":5,"168":5,"169":5,"170":28,"171":28,"172":28,"173":108,"174":28,"175":351,"176":351,"177":351,"178":1404,"179":1404,"180":513,"181":891,"182":891,"183":351,"184":28,"185":28,"186":28,"187":28,"188":28,"189":3,"190":3,"191":3,"192":3,"193":3,"194":28,"195":28,"196":28,"197":28},"f":{"0":351,"1":15795,"2":1215,"3":1404,"4":5,"5":7,"6":4,"7":4,"8":1,"9":2,"10":3,"11":27,"12":28,"13":1158,"14":27,"15":27,"16":3,"17":3,"18":108,"19":189,"20":18,"21":28,"22":135,"23":2,"24":2,"25":135,"26":135,"27":27,"28":5,"29":5,"30":1,"31":108,"32":351,"33":1404,"34":3},"b":{"0":[1404,1053],"1":[65,0],"2":[58,7],"3":[4,3],"4":[4,1],"5":[5,0],"6":[91,23],"7":[89,2],"8":[0,2],"9":[1,1],"10":[2,1,2],"11":[1,1],"12":[0,4],"13":[0,0],"14":[1,3],"15":[1,2],"16":[1,0],"17":[0,1],"18":[1,1],"19":[2,0],"20":[3,23],"21":[26,3],"22":[1,1],"23":[2,1],"24":[1,0],"25":[1,0],"26":[0,0],"27":[0,0],"28":[2,0],"29":[1,0],"30":[0,0],"31":[25,2],"32":[0,28],"33":[0,28],"34":[27,25,0],"35":[26,1],"36":[27,27,27,2],"37":[18],"38":[18],"39":[18,16],"40":[18,17],"41":[5,23],"42":[1,4],"43":[26,1],"44":[1,0],"45":[26,1],"46":[23,4],"47":[28,26],"48":[1,26],"49":[28,1],"50":[1,0],"51":[28,26],"52":[25,110],"53":[28,0],"54":[28,26],"55":[1,26],"56":[28,1],"57":[1,26],"58":[28,1],"59":[27,108],"60":[27,108],"61":[27,0],"62":[27,0],"63":[12,15],"64":[3,2],"65":[2,0],"66":[5,2],"67":[2,3],"68":[0,3],"69":[1,4],"70":[2,3],"71":[0,3],"72":[2,1],"73":[0,3],"74":[3,2],"75":[513,891],"76":[132,759],"77":[351,540],"78":[132,759],"79":[132,759],"80":[23,4],"81":[1,3],"82":[1,0],"83":[2,1],"84":[15,12],"85":[3,0],"86":[3,0],"87":[3,2],"88":[2,0],"89":[2,2],"90":[0,0],"91":[0,3],"92":[1,2],"93":[1,1],"94":[0,3],"95":[1,2],"96":[1,1],"97":[1,0],"98":[3,0],"99":[3,0],"100":[26,1],"101":[28,1],"102":[28,26]},"meta":{"lastBranch":103,"lastFunction":35,"lastStatement":198,"seen":{"s:24:28:24:Infinity":0,"s:27:28:27:Infinity":1,"s:46:19:46:Infinity":2,"f:49:9:49:24":0,"s:50:18:54:Infinity":3,"f:52:7:52:15":1,"s:52:21:52:39":4,"f:53:7:53:12":2,"s:53:18:53:34":5,"s:55:2:55:Infinity":6,"f:55:16:55:24":3,"s:55:30:55:60":7,"b:55:30:55:46:55:46:55:60":0,"f:59:9:59:23":4,"s:60:26:60:Infinity":8,"s:61:14:61:Infinity":9,"s:62:2:67:Infinity":10,"s:63:14:63:Infinity":11,"b:63:14:63:22:63:22:63:Infinity":1,"b:64:4:64:Infinity:undefined:undefined:undefined:undefined":2,"s:64:4:64:Infinity":12,"s:64:22:64:Infinity":13,"b:65:4:66:Infinity:66:9:66:Infinity":3,"s:65:4:66:Infinity":14,"s:65:22:65:Infinity":15,"s:66:9:66:Infinity":16,"b:68:2:68:Infinity:undefined:undefined:undefined:undefined":4,"s:68:2:68:Infinity":17,"s:68:17:68:Infinity":18,"s:69:2:69:Infinity":19,"b:69:9:69:30:69:30:69:Infinity":5,"f:73:9:73:21":5,"s:74:14:74:Infinity":20,"s:75:16:75:Infinity":21,"s:76:2:83:Infinity":22,"s:77:18:77:Infinity":23,"b:77:33:77:41:77:41:77:47":6,"s:78:16:78:Infinity":24,"b:79:4:79:Infinity:undefined:undefined:undefined:undefined":7,"s:79:4:79:Infinity":25,"s:79:22:79:Infinity":26,"b:80:4:80:Infinity:undefined:undefined:undefined:undefined":8,"s:80:4:80:Infinity":27,"s:80:24:80:Infinity":28,"b:81:4:81:Infinity:undefined:undefined:undefined:undefined":9,"s:81:4:81:Infinity":29,"b:81:9:81:29:81:29:81:51:81:51:81:82":10,"s:81:82:81:Infinity":30,"b:82:4:82:Infinity:undefined:undefined:undefined:undefined":11,"s:82:4:82:Infinity":31,"s:82:27:82:Infinity":32,"s:84:2:84:Infinity":33,"f:87:15:87:24":6,"s:88:27:88:Infinity":34,"s:89:13:89:Infinity":35,"s:90:2:94:Infinity":36,"s:91:4:91:Infinity":37,"b:92:4:92:Infinity:undefined:undefined:undefined:undefined":12,"s:92:4:92:Infinity":38,"s:92:23:92:Infinity":39,"s:93:4:93:Infinity":40,"s:95:2:95:Infinity":41,"f:106:15:106:31":7,"s:108:2:112:Infinity":42,"s:109:4:109:Infinity":43,"s:111:4:111:Infinity":44,"b:111:55:111:67:111:67:111:77":13,"b:113:2:115:Infinity:undefined:undefined:undefined:undefined":14,"s:113:2:115:Infinity":45,"s:114:4:114:Infinity":46,"s:116:17:116:Infinity":47,"b:117:2:123:Infinity:undefined:undefined:undefined:undefined":15,"s:117:2:123:Infinity":48,"s:118:15:118:Infinity":49,"b:118:15:118:33:118:33:118:Infinity":16,"s:119:10:119:Infinity":50,"f:119:40:119:46":8,"s:119:52:119:63":51,"b:120:4:120:Infinity:undefined:undefined:undefined:undefined":17,"s:120:4:120:Infinity":52,"b:120:8:120:19:120:19:120:46":18,"s:120:46:120:Infinity":53,"s:121:4:121:Infinity":54,"s:122:4:122:Infinity":55,"b:124:2:158:Infinity:undefined:undefined:undefined:undefined":19,"s:124:2:158:Infinity":56,"s:125:36:125:Infinity":57,"s:126:4:129:Infinity":58,"s:127:16:127:Infinity":59,"b:128:6:128:Infinity:undefined:undefined:undefined:undefined":20,"s:128:6:128:Infinity":60,"b:128:10:128:15:128:15:128:29":21,"s:128:29:128:Infinity":61,"s:132:17:132:Infinity":62,"b:133:4:133:Infinity:undefined:undefined:undefined:undefined":22,"s:133:4:133:Infinity":63,"s:133:25:133:Infinity":64,"s:134:10:138:Infinity":65,"f:134:10:134:23":9,"s:134:23:138:Infinity":66,"b:135:7:135:26:135:26:135:28":23,"f:137:9:137:14":10,"s:137:20:137:28":67,"s:139:20:139:Infinity":68,"b:139:20:139:43:139:43:139:Infinity":24,"s:140:17:140:Infinity":69,"b:140:37:140:42:140:42:140:Infinity":25,"b:140:62:140:67:140:67:140:Infinity":26,"b:140:88:140:94:140:94:140:Infinity":27,"s:141:4:157:Infinity":70,"s:142:22:148:Infinity":71,"b:143:14:143:34:143:34:143:Infinity":28,"b:147:26:147:83:147:83:147:Infinity":29,"s:149:6:149:Infinity":72,"s:150:6:154:Infinity":73,"s:156:6:156:Infinity":74,"b:156:57:156:69:156:69:156:79":30,"s:159:2:159:Infinity":75,"s:167:18:167:Infinity":76,"f:168:15:168:24":11,"s:169:17:169:Infinity":77,"b:170:2:170:Infinity:undefined:undefined:undefined:undefined":31,"s:170:2:170:Infinity":78,"s:170:28:170:Infinity":79,"s:171:27:171:Infinity":80,"s:172:2:176:Infinity":81,"s:173:4:173:Infinity":82,"s:175:4:175:Infinity":83,"s:177:2:177:Infinity":84,"s:178:2:178:Infinity":85,"f:181:9:181:19":12,"s:182:12:182:Infinity":86,"s:183:12:183:Infinity":87,"s:184:12:184:Infinity":88,"s:185:12:185:Infinity":89,"s:186:2:186:Infinity":90,"b:186:17:186:39:186:39:186:Infinity":32,"b:186:47:186:63:186:63:186:Infinity":33,"s:190:6:191:Infinity":91,"f:190:6:190:13":13,"s:191:2:191:Infinity":92,"f:198:9:198:22":14,"s:199:14:199:Infinity":93,"b:199:21:199:56:199:56:199:76:199:76:199:78":34,"s:200:19:200:Infinity":94,"b:201:2:203:Infinity:undefined:undefined:undefined:undefined":35,"s:201:2:203:Infinity":95,"b:201:6:201:19:201:19:201:47:201:47:201:75:201:75:201:110":36,"s:202:4:202:Infinity":96,"s:204:2:204:Infinity":97,"f:212:15:212:29":15,"s:213:2:228:Infinity":98,"s:214:10:214:Infinity":99,"s:215:4:225:Infinity":100,"f:217:7:217:12":16,"s:218:8:222:Infinity":101,"s:219:10:219:Infinity":102,"s:221:10:221:Infinity":103,"f:224:7:224:15":17,"s:224:51:224:61":104,"s:227:4:227:Infinity":105,"s:234:13:234:Infinity":106,"s:235:13:235:Infinity":107,"s:236:19:236:Infinity":108,"s:237:19:237:Infinity":109,"s:238:17:238:Infinity":110,"s:239:16:239:Infinity":111,"s:240:17:240:Infinity":112,"f:242:9:242:18":18,"s:243:2:243:Infinity":113,"f:246:9:246:19":19,"s:247:2:247:Infinity":114,"f:260:16:260:Infinity":20,"b:262:22:262:Infinity":37,"b:263:25:263:Infinity":38,"s:265:20:265:Infinity":115,"b:265:20:265:38:265:38:265:Infinity":39,"s:267:19:267:Infinity":116,"b:267:19:267:36:267:36:267:Infinity":40,"s:268:2:679:Infinity":117,"f:268:9:268:16":21,"s:269:24:269:Infinity":118,"s:275:30:275:Infinity":119,"b:276:4:283:Infinity:undefined:undefined:undefined:undefined":41,"s:276:4:283:Infinity":120,"b:277:6:281:Infinity:undefined:undefined:undefined:undefined":42,"s:277:6:281:Infinity":121,"s:278:8:278:Infinity":122,"s:279:8:279:Infinity":123,"s:280:8:280:Infinity":124,"s:282:6:282:Infinity":125,"s:284:20:284:Infinity":126,"s:285:20:287:Infinity":127,"b:286:8:286:Infinity:287:8:287:Infinity":43,"b:287:339:287:375:287:375:287:378":44,"s:291:51:291:Infinity":128,"s:293:17:293:Infinity":129,"s:294:18:294:Infinity":130,"s:295:17:295:Infinity":131,"s:296:21:298:Infinity":132,"b:297:8:297:Infinity:298:8:298:Infinity":45,"s:299:19:299:Infinity":133,"s:302:22:307:Infinity":134,"b:303:93:303:159:303:159:303:163":46,"b:304:36:304:51:304:51:304:52":47,"b:304:91:304:180:304:180:304:193":48,"b:304:55:304:63:304:63:304:91":49,"b:304:167:304:173:304:173:304:180":50,"b:306:37:306:54:306:54:306:55":51,"s:309:10:309:Infinity":135,"f:309:10:309:18":22,"s:309:43:309:Infinity":136,"b:309:48:309:92:309:92:309:Infinity":52,"s:310:23:317:Infinity":137,"b:316:93:316:126:316:126:316:132":53,"s:320:21:320:Infinity":138,"b:320:21:320:50:320:50:320:Infinity":54,"s:322:6:329:Infinity":139,"b:323:10:328:Infinity:329:10:329:Infinity":55,"b:322:6:322:14:322:14:322:Infinity":56,"f:324:13:324:Infinity":23,"s:326:16:326:Infinity":140,"s:331:6:333:Infinity":141,"b:332:10:332:Infinity:333:10:333:Infinity":57,"b:331:6:331:14:331:14:331:Infinity":58,"f:332:39:332:44":24,"s:332:50:332:128":142,"s:334:25:334:Infinity":143,"s:337:84:371:Infinity":144,"s:372:23:374:Infinity":145,"f:373:7:373:12":25,"s:373:21:373:113":146,"b:373:53:373:61:373:61:373:64":59,"s:375:25:382:Infinity":147,"f:376:7:376:Infinity":26,"s:377:18:380:Infinity":148,"b:377:72:377:77:377:77:377:87":60,"s:386:24:386:Infinity":149,"s:387:23:392:Infinity":150,"f:388:7:388:Infinity":27,"s:390:10:390:Infinity":151,"b:390:187:390:211:390:211:390:217":61,"b:390:394:390:435:390:435:390:467":62,"s:393:25:393:Infinity":152,"b:393:38:393:64:393:64:393:Infinity":63,"s:394:16:394:Infinity":153,"s:395:10:400:Infinity":154,"f:395:10:395:23":28,"s:396:19:396:Infinity":155,"b:397:6:397:Infinity:undefined:undefined:undefined:undefined":64,"s:397:6:397:Infinity":156,"s:397:29:397:Infinity":157,"b:398:6:398:Infinity:undefined:undefined:undefined:undefined":65,"s:398:6:398:Infinity":158,"s:398:30:398:Infinity":159,"s:399:6:399:Infinity":160,"s:401:22:418:Infinity":161,"f:402:7:402:12":29,"s:403:24:403:Infinity":162,"b:403:24:403:48:403:48:403:Infinity":66,"s:404:22:404:Infinity":163,"b:404:36:404:48:404:48:404:Infinity":67,"b:404:58:404:70:404:70:404:Infinity":68,"s:405:23:405:Infinity":164,"s:406:27:408:Infinity":165,"b:407:12:407:Infinity:408:12:408:Infinity":69,"f:407:91:407:96":30,"s:407:102:407:113":166,"s:409:26:411:Infinity":167,"b:410:12:410:Infinity:411:12:411:Infinity":70,"b:411:65:411:114:411:114:411:181":71,"b:411:128:411:176:411:176:411:181":72,"b:411:196:411:247:411:247:411:Infinity":73,"s:413:10:415:Infinity":168,"b:414:14:414:Infinity:415:14:415:Infinity":74,"s:416:8:416:Infinity":169,"s:424:20:424:Infinity":170,"s:425:24:425:Infinity":171,"s:427:6:428:Infinity":172,"f:428:13:428:18":31,"s:428:24:428:64":173,"s:429:23:439:Infinity":174,"f:429:34:429:39":32,"s:430:24:430:Infinity":175,"s:431:20:431:Infinity":176,"s:432:20:437:Infinity":177,"f:432:27:432:32":33,"s:433:21:433:Infinity":178,"b:434:8:434:Infinity:undefined:undefined:undefined:undefined":75,"s:434:8:434:Infinity":179,"s:434:36:434:Infinity":180,"s:435:21:435:Infinity":181,"s:436:8:436:Infinity":182,"b:436:45:436:90:436:90:436:93":76,"b:436:161:436:174:436:174:436:179":77,"b:436:186:436:200:436:200:436:203":78,"b:436:247:436:282:436:282:436:299":79,"s:438:6:438:Infinity":183,"s:443:22:449:Infinity":184,"b:444:8:444:Infinity:445:8:449:Infinity":80,"b:446:10:446:Infinity:447:10:449:Infinity":81,"b:446:495:446:511:446:511:446:513":82,"b:448:12:448:Infinity:449:12:449:Infinity":83,"s:450:24:450:Infinity":185,"s:451:24:451:Infinity":186,"s:452:23:472:Infinity":187,"b:453:8:453:Infinity:454:8:472:Infinity":84,"s:478:10:492:Infinity":188,"f:478:10:478:22":34,"s:479:19:479:Infinity":189,"b:479:19:479:55:479:55:479:Infinity":85,"b:479:26:479:34:479:34:479:36":86,"s:481:8:481:Infinity":190,"b:481:8:481:24:481:24:481:Infinity":87,"b:481:48:481:77:481:77:481:Infinity":88,"b:481:24:481:36:481:36:481:48":89,"b:481:88:481:115:481:115:481:Infinity":90,"s:482:19:482:Infinity":191,"b:482:40:482:48:482:48:482:Infinity":91,"b:482:83:482:95:482:95:482:Infinity":92,"b:482:116:482:123:482:123:482:Infinity":93,"s:484:8:490:Infinity":192,"b:485:12:485:Infinity:486:12:490:Infinity":94,"b:487:14:487:Infinity:488:14:490:Infinity":95,"b:489:16:489:Infinity:490:16:490:Infinity":96,"b:490:118:490:130:490:130:490:132":97,"s:491:6:491:Infinity":193,"b:491:298:491:310:491:310:491:312":98,"b:491:359:491:369:491:369:491:371":99,"s:494:6:497:Infinity":194,"b:495:10:495:Infinity:496:10:497:Infinity":100,"b:494:6:494:24:494:24:494:Infinity":101,"s:499:17:576:Infinity":195,"b:566:67:566:84:566:84:566:86":102,"s:677:4:677:Infinity":196,"s:678:4:678:Infinity":197},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/logger.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/logger.ts","statementMap":{"0":{"start":{"line":6,"column":26},"end":{"line":14,"column":null}},"1":{"start":{"line":18,"column":24},"end":{"line":18,"column":null}},"2":{"start":{"line":19,"column":29},"end":{"line":19,"column":null}},"3":{"start":{"line":23,"column":21},"end":{"line":23,"column":null}},"4":{"start":{"line":24,"column":2},"end":{"line":27,"column":null}},"5":{"start":{"line":25,"column":4},"end":{"line":25,"column":null}},"6":{"start":{"line":26,"column":4},"end":{"line":26,"column":null}},"7":{"start":{"line":28,"column":2},"end":{"line":28,"column":null}},"8":{"start":{"line":32,"column":2},"end":{"line":32,"column":null}},"9":{"start":{"line":36,"column":2},"end":{"line":36,"column":null}},"10":{"start":{"line":36,"column":37},"end":{"line":36,"column":null}},"11":{"start":{"line":37,"column":2},"end":{"line":37,"column":null}},"12":{"start":{"line":40,"column":19},"end":{"line":48,"column":null}},"13":{"start":{"line":41,"column":32},"end":{"line":41,"column":null}},"14":{"start":{"line":42,"column":32},"end":{"line":42,"column":null}},"15":{"start":{"line":43,"column":31},"end":{"line":43,"column":null}},"16":{"start":{"line":44,"column":33},"end":{"line":44,"column":null}},"17":{"start":{"line":45,"column":34},"end":{"line":45,"column":null}},"18":{"start":{"line":46,"column":32},"end":{"line":46,"column":null}},"19":{"start":{"line":47,"column":32},"end":{"line":47,"column":null}},"20":{"start":{"line":57,"column":24},"end":{"line":57,"column":null}},"21":{"start":{"line":59,"column":31},"end":{"line":59,"column":null}},"22":{"start":{"line":60,"column":20},"end":{"line":60,"column":null}},"23":{"start":{"line":62,"column":32},"end":{"line":62,"column":null}},"24":{"start":{"line":64,"column":16},"end":{"line":64,"column":null}},"25":{"start":{"line":65,"column":18},"end":{"line":65,"column":null}},"26":{"start":{"line":69,"column":2},"end":{"line":69,"column":null}},"27":{"start":{"line":70,"column":2},"end":{"line":70,"column":null}},"28":{"start":{"line":71,"column":2},"end":{"line":71,"column":null}},"29":{"start":{"line":72,"column":2},"end":{"line":72,"column":null}},"30":{"start":{"line":77,"column":2},"end":{"line":77,"column":null}},"31":{"start":{"line":80,"column":2},"end":{"line":80,"column":null}},"32":{"start":{"line":84,"column":2},"end":{"line":84,"column":null}},"33":{"start":{"line":84,"column":18},"end":{"line":84,"column":null}},"34":{"start":{"line":85,"column":15},"end":{"line":85,"column":null}},"35":{"start":{"line":86,"column":2},"end":{"line":106,"column":null}},"36":{"start":{"line":87,"column":4},"end":{"line":105,"column":null}},"37":{"start":{"line":88,"column":6},"end":{"line":88,"column":null}},"38":{"start":{"line":88,"column":25},"end":{"line":88,"column":null}},"39":{"start":{"line":88,"column":66},"end":{"line":88,"column":72}},"40":{"start":{"line":88,"column":86},"end":{"line":88,"column":87}},"41":{"start":{"line":89,"column":20},"end":{"line":89,"column":null}},"42":{"start":{"line":90,"column":6},"end":{"line":93,"column":null}},"43":{"start":{"line":91,"column":8},"end":{"line":91,"column":null}},"44":{"start":{"line":92,"column":8},"end":{"line":92,"column":null}},"45":{"start":{"line":94,"column":6},"end":{"line":94,"column":null}},"46":{"start":{"line":95,"column":6},"end":{"line":95,"column":null}},"47":{"start":{"line":99,"column":6},"end":{"line":104,"column":null}},"48":{"start":{"line":100,"column":8},"end":{"line":100,"column":null}},"49":{"start":{"line":101,"column":8},"end":{"line":103,"column":null}},"50":{"start":{"line":116,"column":15},"end":{"line":116,"column":null}},"51":{"start":{"line":117,"column":2},"end":{"line":117,"column":null}},"52":{"start":{"line":118,"column":2},"end":{"line":118,"column":null}}},"fnMap":{"0":{"name":"setLogLevel","decl":{"start":{"line":22,"column":16},"end":{"line":22,"column":28}},"loc":{"start":{"line":22,"column":53},"end":{"line":29,"column":null}},"line":22},"1":{"name":"getLogLevel","decl":{"start":{"line":31,"column":16},"end":{"line":31,"column":40}},"loc":{"start":{"line":31,"column":40},"end":{"line":33,"column":null}},"line":31},"2":{"name":"emit","decl":{"start":{"line":35,"column":9},"end":{"line":35,"column":14}},"loc":{"start":{"line":35,"column":50},"end":{"line":38,"column":null}},"line":35},"3":{"name":"(anonymous_3)","decl":{"start":{"line":41,"column":2},"end":{"line":41,"column":10}},"loc":{"start":{"line":41,"column":32},"end":{"line":41,"column":null}},"line":41},"4":{"name":"(anonymous_4)","decl":{"start":{"line":42,"column":2},"end":{"line":42,"column":10}},"loc":{"start":{"line":42,"column":32},"end":{"line":42,"column":null}},"line":42},"5":{"name":"(anonymous_5)","decl":{"start":{"line":43,"column":2},"end":{"line":43,"column":9}},"loc":{"start":{"line":43,"column":31},"end":{"line":43,"column":null}},"line":43},"6":{"name":"(anonymous_6)","decl":{"start":{"line":44,"column":2},"end":{"line":44,"column":11}},"loc":{"start":{"line":44,"column":33},"end":{"line":44,"column":null}},"line":44},"7":{"name":"(anonymous_7)","decl":{"start":{"line":45,"column":2},"end":{"line":45,"column":12}},"loc":{"start":{"line":45,"column":34},"end":{"line":45,"column":null}},"line":45},"8":{"name":"(anonymous_8)","decl":{"start":{"line":46,"column":2},"end":{"line":46,"column":10}},"loc":{"start":{"line":46,"column":32},"end":{"line":46,"column":null}},"line":46},"9":{"name":"(anonymous_9)","decl":{"start":{"line":47,"column":2},"end":{"line":47,"column":10}},"loc":{"start":{"line":47,"column":32},"end":{"line":47,"column":null}},"line":47},"10":{"name":"enableAuditFile","decl":{"start":{"line":68,"column":16},"end":{"line":68,"column":32}},"loc":{"start":{"line":68,"column":88},"end":{"line":73,"column":null}},"line":68},"11":{"name":"disableAuditFile","decl":{"start":{"line":76,"column":16},"end":{"line":76,"column":41}},"loc":{"start":{"line":76,"column":41},"end":{"line":78,"column":null}},"line":76},"12":{"name":"flushAudit","decl":{"start":{"line":79,"column":16},"end":{"line":79,"column":44}},"loc":{"start":{"line":79,"column":44},"end":{"line":81,"column":null}},"line":79},"13":{"name":"appendAudit","decl":{"start":{"line":83,"column":9},"end":{"line":83,"column":21}},"loc":{"start":{"line":83,"column":41},"end":{"line":107,"column":null}},"line":83},"14":{"name":"(anonymous_14)","decl":{"start":{"line":86,"column":31},"end":{"line":86,"column":43}},"loc":{"start":{"line":86,"column":43},"end":{"line":106,"column":3}},"line":86},"15":{"name":"(anonymous_15)","decl":{"start":{"line":88,"column":54},"end":{"line":88,"column":60}},"loc":{"start":{"line":88,"column":66},"end":{"line":88,"column":72}},"line":88},"16":{"name":"(anonymous_16)","decl":{"start":{"line":88,"column":74},"end":{"line":88,"column":86}},"loc":{"start":{"line":88,"column":86},"end":{"line":88,"column":87}},"line":88},"17":{"name":"audit","decl":{"start":{"line":115,"column":16},"end":{"line":115,"column":22}},"loc":{"start":{"line":115,"column":60},"end":{"line":119,"column":null}},"line":115}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":2},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":24,"column":2},"end":{"line":27,"column":null}},{"start":{},"end":{}}],"line":24},"1":{"loc":{"start":{"line":36,"column":2},"end":{"line":36,"column":null}},"type":"if","locations":[{"start":{"line":36,"column":2},"end":{"line":36,"column":null}},{"start":{},"end":{}}],"line":36},"2":{"loc":{"start":{"line":68,"column":46},"end":{"line":68,"column":88}},"type":"default-arg","locations":[{"start":{"line":68,"column":65},"end":{"line":68,"column":88}}],"line":68},"3":{"loc":{"start":{"line":84,"column":2},"end":{"line":84,"column":null}},"type":"if","locations":[{"start":{"line":84,"column":2},"end":{"line":84,"column":null}},{"start":{},"end":{}}],"line":84},"4":{"loc":{"start":{"line":88,"column":6},"end":{"line":88,"column":null}},"type":"if","locations":[{"start":{"line":88,"column":6},"end":{"line":88,"column":null}},{"start":{},"end":{}}],"line":88},"5":{"loc":{"start":{"line":90,"column":6},"end":{"line":93,"column":null}},"type":"if","locations":[{"start":{"line":90,"column":6},"end":{"line":93,"column":null}},{"start":{},"end":{}}],"line":90},"6":{"loc":{"start":{"line":90,"column":10},"end":{"line":90,"column":62}},"type":"binary-expr","locations":[{"start":{"line":90,"column":10},"end":{"line":90,"column":27}},{"start":{"line":90,"column":27},"end":{"line":90,"column":62}}],"line":90},"7":{"loc":{"start":{"line":99,"column":6},"end":{"line":104,"column":null}},"type":"if","locations":[{"start":{"line":99,"column":6},"end":{"line":104,"column":null}},{"start":{},"end":{}}],"line":99},"8":{"loc":{"start":{"line":102,"column":49},"end":{"line":102,"column":92}},"type":"cond-expr","locations":[{"start":{"line":102,"column":70},"end":{"line":102,"column":82}},{"start":{"line":102,"column":82},"end":{"line":102,"column":92}}],"line":102}},"s":{"0":31,"1":31,"2":31,"3":70,"4":70,"5":69,"6":69,"7":70,"8":3,"9":850,"10":837,"11":13,"12":31,"13":293,"14":424,"15":31,"16":8,"17":88,"18":5,"19":1,"20":31,"21":31,"22":31,"23":31,"24":31,"25":31,"26":3,"27":3,"28":3,"29":3,"30":3,"31":4,"32":139,"33":130,"34":9,"35":9,"36":9,"37":9,"38":3,"39":0,"40":3,"41":9,"42":9,"43":2,"44":2,"45":9,"46":7,"47":2,"48":1,"49":1,"50":139,"51":139,"52":139},"f":{"0":70,"1":3,"2":850,"3":293,"4":424,"5":31,"6":8,"7":88,"8":5,"9":1,"10":3,"11":3,"12":4,"13":139,"14":9,"15":0,"16":3,"17":139},"b":{"0":[69,1],"1":[837,13],"2":[3],"3":[130,9],"4":[3,6],"5":[2,7],"6":[9,5],"7":[1,1],"8":[1,0]},"meta":{"lastBranch":9,"lastFunction":18,"lastStatement":53,"seen":{"s:6:26:14:Infinity":0,"s:18:24:18:Infinity":1,"s:19:29:19:Infinity":2,"f:22:16:22:28":0,"s:23:21:23:Infinity":3,"b:24:2:27:Infinity:undefined:undefined:undefined:undefined":0,"s:24:2:27:Infinity":4,"s:25:4:25:Infinity":5,"s:26:4:26:Infinity":6,"s:28:2:28:Infinity":7,"f:31:16:31:40":1,"s:32:2:32:Infinity":8,"f:35:9:35:14":2,"b:36:2:36:Infinity:undefined:undefined:undefined:undefined":1,"s:36:2:36:Infinity":9,"s:36:37:36:Infinity":10,"s:37:2:37:Infinity":11,"s:40:19:48:Infinity":12,"f:41:2:41:10":3,"s:41:32:41:Infinity":13,"f:42:2:42:10":4,"s:42:32:42:Infinity":14,"f:43:2:43:9":5,"s:43:31:43:Infinity":15,"f:44:2:44:11":6,"s:44:33:44:Infinity":16,"f:45:2:45:12":7,"s:45:34:45:Infinity":17,"f:46:2:46:10":8,"s:46:32:46:Infinity":18,"f:47:2:47:10":9,"s:47:32:47:Infinity":19,"s:57:24:57:Infinity":20,"s:59:31:59:Infinity":21,"s:60:20:60:Infinity":22,"s:62:32:62:Infinity":23,"s:64:16:64:Infinity":24,"s:65:18:65:Infinity":25,"f:68:16:68:32":10,"b:68:65:68:88":2,"s:69:2:69:Infinity":26,"s:70:2:70:Infinity":27,"s:71:2:71:Infinity":28,"s:72:2:72:Infinity":29,"f:76:16:76:41":11,"s:77:2:77:Infinity":30,"f:79:16:79:44":12,"s:80:2:80:Infinity":31,"f:83:9:83:21":13,"b:84:2:84:Infinity:undefined:undefined:undefined:undefined":3,"s:84:2:84:Infinity":32,"s:84:18:84:Infinity":33,"s:85:15:85:Infinity":34,"s:86:2:106:Infinity":35,"f:86:31:86:43":14,"s:87:4:105:Infinity":36,"b:88:6:88:Infinity:undefined:undefined:undefined:undefined":4,"s:88:6:88:Infinity":37,"s:88:25:88:Infinity":38,"f:88:54:88:60":15,"s:88:66:88:72":39,"f:88:74:88:86":16,"s:88:86:88:87":40,"s:89:20:89:Infinity":41,"b:90:6:93:Infinity:undefined:undefined:undefined:undefined":5,"s:90:6:93:Infinity":42,"b:90:10:90:27:90:27:90:62":6,"s:91:8:91:Infinity":43,"s:92:8:92:Infinity":44,"s:94:6:94:Infinity":45,"s:95:6:95:Infinity":46,"b:99:6:104:Infinity:undefined:undefined:undefined:undefined":7,"s:99:6:104:Infinity":47,"s:100:8:100:Infinity":48,"s:101:8:103:Infinity":49,"b:102:70:102:82:102:82:102:92":8,"f:115:16:115:22":17,"s:116:15:116:Infinity":50,"s:117:2:117:Infinity":51,"s:118:2:118:Infinity":52},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/rate.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/rate.ts","statementMap":{"0":{"start":{"line":7,"column":19},"end":{"line":7,"column":null}},"1":{"start":{"line":9,"column":22},"end":{"line":9,"column":44}},"2":{"start":{"line":13,"column":16},"end":{"line":13,"column":null}},"3":{"start":{"line":14,"column":10},"end":{"line":14,"column":null}},"4":{"start":{"line":14,"column":65},"end":{"line":14,"column":81}},"5":{"start":{"line":15,"column":4},"end":{"line":18,"column":null}},"6":{"start":{"line":16,"column":6},"end":{"line":16,"column":null}},"7":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"8":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"9":{"start":{"line":20,"column":4},"end":{"line":20,"column":null}},"10":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"11":{"start":{"line":25,"column":4},"end":{"line":25,"column":null}},"12":{"start":{"line":30,"column":4},"end":{"line":30,"column":null}}},"fnMap":{"0":{"name":"constructor","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":14}},"loc":{"start":{"line":9,"column":44},"end":{"line":9,"column":null}},"line":9},"1":{"name":"allow","decl":{"start":{"line":12,"column":2},"end":{"line":12,"column":8}},"loc":{"start":{"line":12,"column":33},"end":{"line":22,"column":null}},"line":12},"2":{"name":"(anonymous_2)","decl":{"start":{"line":14,"column":51},"end":{"line":14,"column":59}},"loc":{"start":{"line":14,"column":65},"end":{"line":14,"column":81}},"line":14},"3":{"name":"limit","decl":{"start":{"line":24,"column":6},"end":{"line":24,"column":22}},"loc":{"start":{"line":24,"column":22},"end":{"line":26,"column":null}},"line":24},"4":{"name":"reset","decl":{"start":{"line":29,"column":2},"end":{"line":29,"column":16}},"loc":{"start":{"line":29,"column":16},"end":{"line":31,"column":null}},"line":29}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":20},"end":{"line":14,"column":49}},"type":"binary-expr","locations":[{"start":{"line":14,"column":20},"end":{"line":14,"column":47}},{"start":{"line":14,"column":47},"end":{"line":14,"column":49}}],"line":14},"1":{"loc":{"start":{"line":15,"column":4},"end":{"line":18,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":18,"column":null}},{"start":{},"end":{}}],"line":15}},"s":{"0":4,"1":4,"2":19,"3":19,"4":27,"5":19,"6":2,"7":2,"8":17,"9":17,"10":17,"11":4,"12":13},"f":{"0":4,"1":19,"2":27,"3":4,"4":13},"b":{"0":[19,10],"1":[2,17]},"meta":{"lastBranch":2,"lastFunction":5,"lastStatement":13,"seen":{"s:7:19:7:Infinity":0,"f:9:2:9:14":0,"s:9:22:9:44":1,"f:12:2:12:8":1,"s:13:16:13:Infinity":2,"s:14:10:14:Infinity":3,"b:14:20:14:47:14:47:14:49":0,"f:14:51:14:59":2,"s:14:65:14:81":4,"b:15:4:18:Infinity:undefined:undefined:undefined:undefined":1,"s:15:4:18:Infinity":5,"s:16:6:16:Infinity":6,"s:17:6:17:Infinity":7,"s:19:4:19:Infinity":8,"s:20:4:20:Infinity":9,"s:21:4:21:Infinity":10,"f:24:6:24:22":3,"s:25:4:25:Infinity":11,"f:29:2:29:16":4,"s:30:4:30:Infinity":12},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/ratelimit.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/ratelimit.ts","statementMap":{"0":{"start":{"line":5,"column":22},"end":{"line":5,"column":null}},"1":{"start":{"line":6,"column":22},"end":{"line":6,"column":null}},"2":{"start":{"line":7,"column":21},"end":{"line":7,"column":null}},"3":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"4":{"start":{"line":11,"column":20},"end":{"line":11,"column":null}},"5":{"start":{"line":20,"column":20},"end":{"line":20,"column":null}},"6":{"start":{"line":22,"column":22},"end":{"line":22,"column":42}},"7":{"start":{"line":26,"column":14},"end":{"line":26,"column":null}},"8":{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},"9":{"start":{"line":27,"column":12},"end":{"line":27,"column":null}},"10":{"start":{"line":28,"column":16},"end":{"line":28,"column":null}},"11":{"start":{"line":29,"column":4},"end":{"line":32,"column":null}},"12":{"start":{"line":30,"column":6},"end":{"line":30,"column":null}},"13":{"start":{"line":31,"column":6},"end":{"line":31,"column":null}},"14":{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},"15":{"start":{"line":38,"column":16},"end":{"line":38,"column":null}},"16":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"17":{"start":{"line":40,"column":14},"end":{"line":40,"column":null}},"18":{"start":{"line":41,"column":4},"end":{"line":41,"column":null}},"19":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}},"20":{"start":{"line":43,"column":4},"end":{"line":46,"column":null}},"21":{"start":{"line":44,"column":23},"end":{"line":44,"column":null}},"22":{"start":{"line":45,"column":6},"end":{"line":45,"column":null}},"23":{"start":{"line":47,"column":4},"end":{"line":47,"column":null}},"24":{"start":{"line":48,"column":4},"end":{"line":48,"column":null}},"25":{"start":{"line":53,"column":4},"end":{"line":53,"column":null}},"26":{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},"27":{"start":{"line":57,"column":41},"end":{"line":57,"column":null}},"28":{"start":{"line":58,"column":4},"end":{"line":60,"column":null}},"29":{"start":{"line":59,"column":6},"end":{"line":59,"column":null}},"30":{"start":{"line":59,"column":46},"end":{"line":59,"column":null}},"31":{"start":{"line":63,"column":4},"end":{"line":67,"column":null}},"32":{"start":{"line":64,"column":21},"end":{"line":64,"column":null}},"33":{"start":{"line":65,"column":6},"end":{"line":65,"column":null}},"34":{"start":{"line":65,"column":32},"end":{"line":65,"column":null}},"35":{"start":{"line":66,"column":6},"end":{"line":66,"column":null}}},"fnMap":{"0":{"name":"constructor","decl":{"start":{"line":22,"column":2},"end":{"line":22,"column":14}},"loc":{"start":{"line":22,"column":52},"end":{"line":22,"column":null}},"line":22},"1":{"name":"retryInMs","decl":{"start":{"line":25,"column":2},"end":{"line":25,"column":12}},"loc":{"start":{"line":25,"column":32},"end":{"line":34,"column":null}},"line":25},"2":{"name":"fail","decl":{"start":{"line":37,"column":2},"end":{"line":37,"column":7}},"loc":{"start":{"line":37,"column":27},"end":{"line":49,"column":null}},"line":37},"3":{"name":"succeed","decl":{"start":{"line":52,"column":2},"end":{"line":52,"column":10}},"loc":{"start":{"line":52,"column":28},"end":{"line":54,"column":null}},"line":52},"4":{"name":"sweep","decl":{"start":{"line":56,"column":2},"end":{"line":56,"column":10}},"loc":{"start":{"line":56,"column":35},"end":{"line":68,"column":null}},"line":56}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":14},"end":{"line":22,"column":52}},"type":"default-arg","locations":[{"start":{"line":22,"column":42},"end":{"line":22,"column":52}}],"line":22},"1":{"loc":{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},{"start":{},"end":{}}],"line":27},"2":{"loc":{"start":{"line":29,"column":4},"end":{"line":32,"column":null}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":32,"column":null}},{"start":{},"end":{}}],"line":29},"3":{"loc":{"start":{"line":40,"column":14},"end":{"line":40,"column":null}},"type":"binary-expr","locations":[{"start":{"line":40,"column":14},"end":{"line":40,"column":38}},{"start":{"line":40,"column":38},"end":{"line":40,"column":null}}],"line":40},"4":{"loc":{"start":{"line":43,"column":4},"end":{"line":46,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":46,"column":null}},{"start":{},"end":{}}],"line":43},"5":{"loc":{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},"type":"if","locations":[{"start":{"line":57,"column":4},"end":{"line":57,"column":null}},{"start":{},"end":{}}],"line":57},"6":{"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},"7":{"loc":{"start":{"line":65,"column":6},"end":{"line":65,"column":null}},"type":"if","locations":[{"start":{"line":65,"column":6},"end":{"line":65,"column":null}},{"start":{},"end":{}}],"line":65}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":28,"6":28,"7":45,"8":45,"9":39,"10":6,"11":6,"12":1,"13":1,"14":5,"15":54,"16":54,"17":54,"18":54,"19":54,"20":54,"21":29,"22":29,"23":54,"24":54,"25":36,"26":54,"27":54,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0},"f":{"0":28,"1":45,"2":54,"3":36,"4":54},"b":{"0":[28],"1":[39,6],"2":[1,5],"3":[54,8],"4":[29,25],"5":[54,0],"6":[0,0],"7":[0,0]},"meta":{"lastBranch":8,"lastFunction":5,"lastStatement":36,"seen":{"s:5:22:5:Infinity":0,"s:6:22:6:Infinity":1,"s:7:21:7:Infinity":2,"s:9:24:9:Infinity":3,"s:11:20:11:Infinity":4,"s:20:20:20:Infinity":5,"f:22:2:22:14":0,"b:22:42:22:52":0,"s:22:22:22:42":6,"f:25:2:25:12":1,"s:26:14:26:Infinity":7,"b:27:4:27:Infinity:undefined:undefined:undefined:undefined":1,"s:27:4:27:Infinity":8,"s:27:12:27:Infinity":9,"s:28:16:28:Infinity":10,"b:29:4:32:Infinity:undefined:undefined:undefined:undefined":2,"s:29:4:32:Infinity":11,"s:30:6:30:Infinity":12,"s:31:6:31:Infinity":13,"s:33:4:33:Infinity":14,"f:37:2:37:7":2,"s:38:16:38:Infinity":15,"s:39:4:39:Infinity":16,"s:40:14:40:Infinity":17,"b:40:14:40:38:40:38:40:Infinity":3,"s:41:4:41:Infinity":18,"s:42:4:42:Infinity":19,"b:43:4:46:Infinity:undefined:undefined:undefined:undefined":4,"s:43:4:46:Infinity":20,"s:44:23:44:Infinity":21,"s:45:6:45:Infinity":22,"s:47:4:47:Infinity":23,"s:48:4:48:Infinity":24,"f:52:2:52:10":3,"s:53:4:53:Infinity":25,"f:56:2:56:10":4,"b:57:4:57:Infinity:undefined:undefined:undefined:undefined":5,"s:57:4:57:Infinity":26,"s:57:41:57:Infinity":27,"s:58:4:60:Infinity":28,"b:59:6:59:Infinity:undefined:undefined:undefined:undefined":6,"s:59:6:59:Infinity":29,"s:59:46:59:Infinity":30,"s:63:4:67:Infinity":31,"s:64:21:64:Infinity":32,"b:65:6:65:Infinity:undefined:undefined:undefined:undefined":7,"s:65:6:65:Infinity":33,"s:65:32:65:Infinity":34,"s:66:6:66:Infinity":35},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/safety.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/safety.ts","statementMap":{"0":{"start":{"line":10,"column":18},"end":{"line":13,"column":null}},"1":{"start":{"line":14,"column":2},"end":{"line":14,"column":null}},"2":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}},"3":{"start":{"line":18,"column":27},"end":{"line":18,"column":53}},"4":{"start":{"line":33,"column":2},"end":{"line":35,"column":null}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":null}},"6":{"start":{"line":36,"column":2},"end":{"line":38,"column":null}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":null}},"8":{"start":{"line":39,"column":2},"end":{"line":39,"column":null}},"9":{"start":{"line":57,"column":17},"end":{"line":57,"column":null}},"10":{"start":{"line":58,"column":2},"end":{"line":58,"column":null}},"11":{"start":{"line":58,"column":23},"end":{"line":58,"column":null}},"12":{"start":{"line":59,"column":12},"end":{"line":59,"column":null}},"13":{"start":{"line":60,"column":2},"end":{"line":60,"column":null}},"14":{"start":{"line":60,"column":10},"end":{"line":60,"column":null}},"15":{"start":{"line":61,"column":2},"end":{"line":63,"column":null}},"16":{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},"17":{"start":{"line":64,"column":2},"end":{"line":66,"column":null}},"18":{"start":{"line":65,"column":4},"end":{"line":65,"column":null}},"19":{"start":{"line":67,"column":2},"end":{"line":67,"column":null}},"20":{"start":{"line":72,"column":15},"end":{"line":72,"column":null}},"21":{"start":{"line":73,"column":2},"end":{"line":75,"column":null}},"22":{"start":{"line":74,"column":4},"end":{"line":74,"column":null}},"23":{"start":{"line":76,"column":2},"end":{"line":76,"column":null}},"24":{"start":{"line":81,"column":2},"end":{"line":81,"column":null}},"25":{"start":{"line":81,"column":24},"end":{"line":81,"column":null}},"26":{"start":{"line":82,"column":2},"end":{"line":82,"column":null}},"27":{"start":{"line":87,"column":2},"end":{"line":87,"column":null}},"28":{"start":{"line":95,"column":13},"end":{"line":95,"column":null}},"29":{"start":{"line":96,"column":13},"end":{"line":96,"column":null}},"30":{"start":{"line":97,"column":2},"end":{"line":97,"column":null}},"31":{"start":{"line":106,"column":2},"end":{"line":106,"column":null}},"32":{"start":{"line":106,"column":15},"end":{"line":106,"column":null}},"33":{"start":{"line":107,"column":2},"end":{"line":107,"column":null}},"34":{"start":{"line":107,"column":32},"end":{"line":107,"column":null}},"35":{"start":{"line":108,"column":2},"end":{"line":108,"column":null}}},"fnMap":{"0":{"name":"globToRegex","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":28}},"loc":{"start":{"line":9,"column":50},"end":{"line":15,"column":null}},"line":9},"1":{"name":"matchesAny","decl":{"start":{"line":17,"column":16},"end":{"line":17,"column":27}},"loc":{"start":{"line":17,"column":68},"end":{"line":19,"column":null}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":18,"column":15},"end":{"line":18,"column":21}},"loc":{"start":{"line":18,"column":27},"end":{"line":18,"column":53}},"line":18},"3":{"name":"entityWriteAllowed","decl":{"start":{"line":32,"column":16},"end":{"line":32,"column":35}},"loc":{"start":{"line":32,"column":80},"end":{"line":40,"column":null}},"line":32},"4":{"name":"entityWriteAllowedFor","decl":{"start":{"line":53,"column":16},"end":{"line":53,"column":null}},"loc":{"start":{"line":56,"column":11},"end":{"line":68,"column":null}},"line":56},"5":{"name":"serviceAllowed","decl":{"start":{"line":71,"column":16},"end":{"line":71,"column":31}},"loc":{"start":{"line":71,"column":91},"end":{"line":77,"column":null}},"line":71},"6":{"name":"entityReadVisible","decl":{"start":{"line":80,"column":16},"end":{"line":80,"column":34}},"loc":{"start":{"line":80,"column":79},"end":{"line":83,"column":null}},"line":80},"7":{"name":"needsConfirmation","decl":{"start":{"line":86,"column":16},"end":{"line":86,"column":34}},"loc":{"start":{"line":86,"column":77},"end":{"line":88,"column":null}},"line":86},"8":{"name":"safeEqual","decl":{"start":{"line":94,"column":16},"end":{"line":94,"column":26}},"loc":{"start":{"line":94,"column":57},"end":{"line":98,"column":null}},"line":94},"9":{"name":"maskSecret","decl":{"start":{"line":105,"column":16},"end":{"line":105,"column":27}},"loc":{"start":{"line":105,"column":64},"end":{"line":109,"column":null}},"line":105}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":2},"end":{"line":35,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":2},"end":{"line":35,"column":null}},{"start":{},"end":{}}],"line":33},"1":{"loc":{"start":{"line":33,"column":6},"end":{"line":33,"column":84}},"type":"binary-expr","locations":[{"start":{"line":33,"column":6},"end":{"line":33,"column":40}},{"start":{"line":33,"column":40},"end":{"line":33,"column":84}}],"line":33},"2":{"loc":{"start":{"line":36,"column":2},"end":{"line":38,"column":null}},"type":"if","locations":[{"start":{"line":36,"column":2},"end":{"line":38,"column":null}},{"start":{},"end":{}}],"line":36},"3":{"loc":{"start":{"line":58,"column":2},"end":{"line":58,"column":null}},"type":"if","locations":[{"start":{"line":58,"column":2},"end":{"line":58,"column":null}},{"start":{},"end":{}}],"line":58},"4":{"loc":{"start":{"line":60,"column":2},"end":{"line":60,"column":null}},"type":"if","locations":[{"start":{"line":60,"column":2},"end":{"line":60,"column":null}},{"start":{},"end":{}}],"line":60},"5":{"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":null}},"type":"if","locations":[{"start":{"line":61,"column":2},"end":{"line":63,"column":null}},{"start":{},"end":{}}],"line":61},"6":{"loc":{"start":{"line":61,"column":6},"end":{"line":61,"column":71}},"type":"binary-expr","locations":[{"start":{"line":61,"column":6},"end":{"line":61,"column":17}},{"start":{"line":61,"column":17},"end":{"line":61,"column":39}},{"start":{"line":61,"column":39},"end":{"line":61,"column":71}}],"line":61},"7":{"loc":{"start":{"line":64,"column":2},"end":{"line":66,"column":null}},"type":"if","locations":[{"start":{"line":64,"column":2},"end":{"line":66,"column":null}},{"start":{},"end":{}}],"line":64},"8":{"loc":{"start":{"line":64,"column":6},"end":{"line":64,"column":67}},"type":"binary-expr","locations":[{"start":{"line":64,"column":6},"end":{"line":64,"column":16}},{"start":{"line":64,"column":16},"end":{"line":64,"column":37}},{"start":{"line":64,"column":37},"end":{"line":64,"column":67}}],"line":64},"9":{"loc":{"start":{"line":73,"column":2},"end":{"line":75,"column":null}},"type":"if","locations":[{"start":{"line":73,"column":2},"end":{"line":75,"column":null}},{"start":{},"end":{}}],"line":73},"10":{"loc":{"start":{"line":81,"column":2},"end":{"line":81,"column":null}},"type":"if","locations":[{"start":{"line":81,"column":2},"end":{"line":81,"column":null}},{"start":{},"end":{}}],"line":81},"11":{"loc":{"start":{"line":105,"column":43},"end":{"line":105,"column":64}},"type":"default-arg","locations":[{"start":{"line":105,"column":53},"end":{"line":105,"column":64}}],"line":105},"12":{"loc":{"start":{"line":106,"column":2},"end":{"line":106,"column":null}},"type":"if","locations":[{"start":{"line":106,"column":2},"end":{"line":106,"column":null}},{"start":{},"end":{}}],"line":106},"13":{"loc":{"start":{"line":107,"column":2},"end":{"line":107,"column":null}},"type":"if","locations":[{"start":{"line":107,"column":2},"end":{"line":107,"column":null}},{"start":{},"end":{}}],"line":107}},"s":{"0":374,"1":374,"2":493,"3":365,"4":70,"5":2,"6":68,"7":9,"8":59,"9":64,"10":64,"11":8,"12":56,"13":56,"14":52,"15":4,"16":1,"17":3,"18":1,"19":2,"20":71,"21":71,"22":6,"23":65,"24":614,"25":316,"26":298,"27":41,"28":42,"29":42,"30":42,"31":62,"32":1,"33":61,"34":1,"35":60},"f":{"0":374,"1":493,"2":365,"3":70,"4":64,"5":71,"6":614,"7":41,"8":42,"9":62},"b":{"0":[2,68],"1":[70,8],"2":[9,59],"3":[8,56],"4":[52,4],"5":[1,3],"6":[4,4,4],"7":[1,2],"8":[3,2,2],"9":[6,65],"10":[316,298],"11":[62],"12":[1,61],"13":[1,60]},"meta":{"lastBranch":14,"lastFunction":10,"lastStatement":36,"seen":{"f:9:16:9:28":0,"s:10:18:13:Infinity":0,"s:14:2:14:Infinity":1,"f:17:16:17:27":1,"s:18:2:18:Infinity":2,"f:18:15:18:21":2,"s:18:27:18:53":3,"f:32:16:32:35":3,"b:33:2:35:Infinity:undefined:undefined:undefined:undefined":0,"s:33:2:35:Infinity":4,"b:33:6:33:40:33:40:33:84":1,"s:34:4:34:Infinity":5,"b:36:2:38:Infinity:undefined:undefined:undefined:undefined":2,"s:36:2:38:Infinity":6,"s:37:4:37:Infinity":7,"s:39:2:39:Infinity":8,"f:53:16:53:Infinity":4,"s:57:17:57:Infinity":9,"b:58:2:58:Infinity:undefined:undefined:undefined:undefined":3,"s:58:2:58:Infinity":10,"s:58:23:58:Infinity":11,"s:59:12:59:Infinity":12,"b:60:2:60:Infinity:undefined:undefined:undefined:undefined":4,"s:60:2:60:Infinity":13,"s:60:10:60:Infinity":14,"b:61:2:63:Infinity:undefined:undefined:undefined:undefined":5,"s:61:2:63:Infinity":15,"b:61:6:61:17:61:17:61:39:61:39:61:71":6,"s:62:4:62:Infinity":16,"b:64:2:66:Infinity:undefined:undefined:undefined:undefined":7,"s:64:2:66:Infinity":17,"b:64:6:64:16:64:16:64:37:64:37:64:67":8,"s:65:4:65:Infinity":18,"s:67:2:67:Infinity":19,"f:71:16:71:31":5,"s:72:15:72:Infinity":20,"b:73:2:75:Infinity:undefined:undefined:undefined:undefined":9,"s:73:2:75:Infinity":21,"s:74:4:74:Infinity":22,"s:76:2:76:Infinity":23,"f:80:16:80:34":6,"b:81:2:81:Infinity:undefined:undefined:undefined:undefined":10,"s:81:2:81:Infinity":24,"s:81:24:81:Infinity":25,"s:82:2:82:Infinity":26,"f:86:16:86:34":7,"s:87:2:87:Infinity":27,"f:94:16:94:26":8,"s:95:13:95:Infinity":28,"s:96:13:96:Infinity":29,"s:97:2:97:Infinity":30,"f:105:16:105:27":9,"b:105:53:105:64":11,"b:106:2:106:Infinity:undefined:undefined:undefined:undefined":12,"s:106:2:106:Infinity":31,"s:106:15:106:Infinity":32,"b:107:2:107:Infinity:undefined:undefined:undefined:undefined":13,"s:107:2:107:Infinity":33,"s:107:32:107:Infinity":34,"s:108:2:108:Infinity":35},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/usage.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/usage.ts","statementMap":{"0":{"start":{"line":9,"column":37},"end":{"line":9,"column":null}},"1":{"start":{"line":11,"column":19},"end":{"line":11,"column":null}},"2":{"start":{"line":12,"column":21},"end":{"line":12,"column":null}},"3":{"start":{"line":13,"column":10},"end":{"line":13,"column":null}},"4":{"start":{"line":16,"column":4},"end":{"line":16,"column":null}},"5":{"start":{"line":17,"column":4},"end":{"line":19,"column":null}},"6":{"start":{"line":18,"column":6},"end":{"line":18,"column":null}},"7":{"start":{"line":20,"column":4},"end":{"line":22,"column":null}},"8":{"start":{"line":21,"column":6},"end":{"line":21,"column":null}},"9":{"start":{"line":27,"column":4},"end":{"line":32,"column":null}},"10":{"start":{"line":28,"column":18},"end":{"line":28,"column":null}},"11":{"start":{"line":29,"column":6},"end":{"line":31,"column":null}},"12":{"start":{"line":30,"column":8},"end":{"line":30,"column":null}},"13":{"start":{"line":36,"column":4},"end":{"line":45,"column":null}},"14":{"start":{"line":39,"column":24},"end":{"line":39,"column":35}},"15":{"start":{"line":41,"column":33},"end":{"line":41,"column":49}},"16":{"start":{"line":43,"column":24},"end":{"line":43,"column":35}},"17":{"start":{"line":44,"column":35},"end":{"line":44,"column":53}}},"fnMap":{"0":{"name":"record","decl":{"start":{"line":15,"column":2},"end":{"line":15,"column":9}},"loc":{"start":{"line":15,"column":45},"end":{"line":23,"column":null}},"line":15},"1":{"name":"recordBody","decl":{"start":{"line":26,"column":2},"end":{"line":26,"column":13}},"loc":{"start":{"line":26,"column":50},"end":{"line":33,"column":null}},"line":26},"2":{"name":"snapshot","decl":{"start":{"line":35,"column":2},"end":{"line":35,"column":136}},"loc":{"start":{"line":35,"column":136},"end":{"line":46,"column":null}},"line":35},"3":{"name":"(anonymous_3)","decl":{"start":{"line":39,"column":9},"end":{"line":39,"column":15}},"loc":{"start":{"line":39,"column":24},"end":{"line":39,"column":35}},"line":39},"4":{"name":"(anonymous_4)","decl":{"start":{"line":41,"column":9},"end":{"line":41,"column":14}},"loc":{"start":{"line":41,"column":33},"end":{"line":41,"column":49}},"line":41},"5":{"name":"(anonymous_5)","decl":{"start":{"line":43,"column":9},"end":{"line":43,"column":15}},"loc":{"start":{"line":43,"column":24},"end":{"line":43,"column":35}},"line":43},"6":{"name":"(anonymous_6)","decl":{"start":{"line":44,"column":9},"end":{"line":44,"column":14}},"loc":{"start":{"line":44,"column":35},"end":{"line":44,"column":53}},"line":44}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":null}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":19,"column":null}},{"start":{},"end":{}}],"line":17},"1":{"loc":{"start":{"line":17,"column":8},"end":{"line":17,"column":75}},"type":"binary-expr","locations":[{"start":{"line":17,"column":8},"end":{"line":17,"column":33}},{"start":{"line":17,"column":33},"end":{"line":17,"column":75}}],"line":17},"2":{"loc":{"start":{"line":18,"column":29},"end":{"line":18,"column":59}},"type":"binary-expr","locations":[{"start":{"line":18,"column":29},"end":{"line":18,"column":54}},{"start":{"line":18,"column":54},"end":{"line":18,"column":59}}],"line":18},"3":{"loc":{"start":{"line":20,"column":4},"end":{"line":22,"column":null}},"type":"if","locations":[{"start":{"line":20,"column":4},"end":{"line":22,"column":null}},{"start":{},"end":{}}],"line":20},"4":{"loc":{"start":{"line":20,"column":8},"end":{"line":20,"column":81}},"type":"binary-expr","locations":[{"start":{"line":20,"column":8},"end":{"line":20,"column":37}},{"start":{"line":20,"column":37},"end":{"line":20,"column":81}}],"line":20},"5":{"loc":{"start":{"line":21,"column":33},"end":{"line":21,"column":67}},"type":"binary-expr","locations":[{"start":{"line":21,"column":33},"end":{"line":21,"column":62}},{"start":{"line":21,"column":62},"end":{"line":21,"column":67}}],"line":21},"6":{"loc":{"start":{"line":27,"column":20},"end":{"line":27,"column":57}},"type":"cond-expr","locations":[{"start":{"line":27,"column":42},"end":{"line":27,"column":49}},{"start":{"line":27,"column":49},"end":{"line":27,"column":57}}],"line":27},"7":{"loc":{"start":{"line":29,"column":6},"end":{"line":31,"column":null}},"type":"if","locations":[{"start":{"line":29,"column":6},"end":{"line":31,"column":null}},{"start":{},"end":{}}],"line":29},"8":{"loc":{"start":{"line":30,"column":27},"end":{"line":30,"column":56}},"type":"binary-expr","locations":[{"start":{"line":30,"column":27},"end":{"line":30,"column":47}},{"start":{"line":30,"column":47},"end":{"line":30,"column":56}}],"line":30}},"s":{"0":3,"1":27,"2":27,"3":27,"4":309,"5":309,"6":209,"7":309,"8":309,"9":32,"10":34,"11":34,"12":5,"13":6,"14":400,"15":25,"16":2,"17":7},"f":{"0":309,"1":32,"2":6,"3":400,"4":25,"5":2,"6":7},"b":{"0":[209,100],"1":[309,306],"2":[209,206],"3":[309,0],"4":[309,7],"5":[309,7],"6":[1,31],"7":[5,29],"8":[5,0]},"meta":{"lastBranch":9,"lastFunction":7,"lastStatement":18,"seen":{"s:9:37:9:Infinity":0,"s:11:19:11:Infinity":1,"s:12:21:12:Infinity":2,"s:13:10:13:Infinity":3,"f:15:2:15:9":0,"s:16:4:16:Infinity":4,"b:17:4:19:Infinity:undefined:undefined:undefined:undefined":0,"s:17:4:19:Infinity":5,"b:17:8:17:33:17:33:17:75":1,"s:18:6:18:Infinity":6,"b:18:29:18:54:18:54:18:59":2,"b:20:4:22:Infinity:undefined:undefined:undefined:undefined":3,"s:20:4:22:Infinity":7,"b:20:8:20:37:20:37:20:81":4,"s:21:6:21:Infinity":8,"b:21:33:21:62:21:62:21:67":5,"f:26:2:26:13":1,"s:27:4:32:Infinity":9,"b:27:42:27:49:27:49:27:57":6,"s:28:18:28:Infinity":10,"b:29:6:31:Infinity:undefined:undefined:undefined:undefined":7,"s:29:6:31:Infinity":11,"s:30:8:30:Infinity":12,"b:30:27:30:47:30:47:30:56":8,"f:35:2:35:136":2,"s:36:4:45:Infinity":13,"f:39:9:39:15":3,"s:39:24:39:35":14,"f:41:9:41:14":4,"s:41:33:41:49":15,"f:43:9:43:15":5,"s:43:24:43:35":16,"f:44:9:44:14":6,"s:44:35:44:53":17},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/db/schema.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/db/schema.ts","statementMap":{"0":{"start":{"line":14,"column":22},"end":{"line":32,"column":null}},"1":{"start":{"line":31,"column":9},"end":{"line":31,"column":null}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"loc":{"start":{"line":31,"column":9},"end":{"line":31,"column":null}},"line":31}},"branchMap":{},"s":{"0":3,"1":0},"f":{"0":0},"b":{},"meta":{"lastBranch":0,"lastFunction":1,"lastStatement":2,"seen":{"s:14:22:32:Infinity":0,"f:30:2:30:Infinity":0,"s:31:9:31:Infinity":1},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/db/store.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/db/store.ts","statementMap":{"0":{"start":{"line":61,"column":30},"end":{"line":61,"column":null}},"1":{"start":{"line":62,"column":27},"end":{"line":62,"column":null}},"2":{"start":{"line":65,"column":42},"end":{"line":76,"column":null}},"3":{"start":{"line":79,"column":2},"end":{"line":84,"column":null}},"4":{"start":{"line":80,"column":17},"end":{"line":80,"column":null}},"5":{"start":{"line":81,"column":4},"end":{"line":81,"column":null}},"6":{"start":{"line":83,"column":4},"end":{"line":83,"column":null}},"7":{"start":{"line":88,"column":17},"end":{"line":88,"column":null}},"8":{"start":{"line":89,"column":14},"end":{"line":89,"column":null}},"9":{"start":{"line":90,"column":2},"end":{"line":90,"column":null}},"10":{"start":{"line":94,"column":2},"end":{"line":94,"column":null}},"11":{"start":{"line":98,"column":14},"end":{"line":98,"column":null}},"12":{"start":{"line":99,"column":2},"end":{"line":103,"column":null}},"13":{"start":{"line":100,"column":18},"end":{"line":100,"column":null}},"14":{"start":{"line":101,"column":4},"end":{"line":101,"column":null}},"15":{"start":{"line":101,"column":42},"end":{"line":101,"column":null}},"16":{"start":{"line":102,"column":4},"end":{"line":102,"column":null}},"17":{"start":{"line":104,"column":2},"end":{"line":104,"column":null}},"18":{"start":{"line":108,"column":2},"end":{"line":119,"column":null}},"19":{"start":{"line":129,"column":2},"end":{"line":129,"column":null}},"20":{"start":{"line":135,"column":22},"end":{"line":135,"column":null}},"21":{"start":{"line":137,"column":42},"end":{"line":137,"column":null}},"22":{"start":{"line":140,"column":4},"end":{"line":140,"column":null}},"23":{"start":{"line":143,"column":4},"end":{"line":143,"column":null}},"24":{"start":{"line":149,"column":4},"end":{"line":157,"column":null}},"25":{"start":{"line":150,"column":6},"end":{"line":156,"column":null}},"26":{"start":{"line":151,"column":8},"end":{"line":151,"column":null}},"27":{"start":{"line":153,"column":8},"end":{"line":155,"column":null}},"28":{"start":{"line":160,"column":4},"end":{"line":168,"column":null}},"29":{"start":{"line":161,"column":19},"end":{"line":161,"column":null}},"30":{"start":{"line":162,"column":6},"end":{"line":165,"column":null}},"31":{"start":{"line":163,"column":8},"end":{"line":163,"column":null}},"32":{"start":{"line":164,"column":8},"end":{"line":164,"column":null}},"33":{"start":{"line":166,"column":20},"end":{"line":166,"column":null}},"34":{"start":{"line":166,"column":94},"end":{"line":166,"column":110}},"35":{"start":{"line":167,"column":6},"end":{"line":167,"column":null}},"36":{"start":{"line":184,"column":4},"end":{"line":184,"column":null}},"37":{"start":{"line":184,"column":57},"end":{"line":184,"column":null}},"38":{"start":{"line":185,"column":27},"end":{"line":185,"column":null}},"39":{"start":{"line":186,"column":4},"end":{"line":199,"column":null}},"40":{"start":{"line":187,"column":6},"end":{"line":187,"column":null}},"41":{"start":{"line":189,"column":6},"end":{"line":189,"column":null}},"42":{"start":{"line":189,"column":39},"end":{"line":189,"column":null}},"43":{"start":{"line":190,"column":6},"end":{"line":193,"column":null}},"44":{"start":{"line":194,"column":6},"end":{"line":194,"column":null}},"45":{"start":{"line":195,"column":6},"end":{"line":195,"column":null}},"46":{"start":{"line":196,"column":6},"end":{"line":196,"column":null}},"47":{"start":{"line":197,"column":6},"end":{"line":197,"column":null}},"48":{"start":{"line":198,"column":6},"end":{"line":198,"column":null}},"49":{"start":{"line":207,"column":4},"end":{"line":217,"column":null}},"50":{"start":{"line":208,"column":6},"end":{"line":208,"column":null}},"51":{"start":{"line":210,"column":6},"end":{"line":210,"column":null}},"52":{"start":{"line":210,"column":34},"end":{"line":210,"column":null}},"53":{"start":{"line":211,"column":6},"end":{"line":215,"column":null}},"54":{"start":{"line":216,"column":6},"end":{"line":216,"column":null}},"55":{"start":{"line":225,"column":18},"end":{"line":225,"column":null}},"56":{"start":{"line":226,"column":4},"end":{"line":226,"column":null}},"57":{"start":{"line":227,"column":29},"end":{"line":227,"column":null}},"58":{"start":{"line":228,"column":4},"end":{"line":239,"column":null}},"59":{"start":{"line":229,"column":6},"end":{"line":235,"column":null}},"60":{"start":{"line":232,"column":10},"end":{"line":232,"column":null}},"61":{"start":{"line":232,"column":35},"end":{"line":232,"column":null}},"62":{"start":{"line":237,"column":6},"end":{"line":237,"column":null}},"63":{"start":{"line":238,"column":6},"end":{"line":238,"column":null}},"64":{"start":{"line":242,"column":4},"end":{"line":242,"column":null}},"65":{"start":{"line":242,"column":55},"end":{"line":242,"column":null}},"66":{"start":{"line":243,"column":4},"end":{"line":243,"column":null}},"67":{"start":{"line":255,"column":4},"end":{"line":255,"column":null}},"68":{"start":{"line":255,"column":30},"end":{"line":255,"column":null}},"69":{"start":{"line":256,"column":16},"end":{"line":256,"column":null}},"70":{"start":{"line":257,"column":4},"end":{"line":264,"column":null}},"71":{"start":{"line":258,"column":6},"end":{"line":258,"column":null}},"72":{"start":{"line":259,"column":6},"end":{"line":259,"column":null}},"73":{"start":{"line":260,"column":6},"end":{"line":260,"column":null}},"74":{"start":{"line":262,"column":6},"end":{"line":262,"column":null}},"75":{"start":{"line":263,"column":6},"end":{"line":263,"column":null}},"76":{"start":{"line":268,"column":17},"end":{"line":268,"column":null}},"77":{"start":{"line":269,"column":4},"end":{"line":269,"column":null}},"78":{"start":{"line":269,"column":15},"end":{"line":269,"column":null}},"79":{"start":{"line":270,"column":19},"end":{"line":270,"column":null}},"80":{"start":{"line":271,"column":4},"end":{"line":273,"column":null}},"81":{"start":{"line":271,"column":43},"end":{"line":271,"column":55}},"82":{"start":{"line":272,"column":6},"end":{"line":272,"column":null}},"83":{"start":{"line":274,"column":18},"end":{"line":274,"column":null}},"84":{"start":{"line":275,"column":16},"end":{"line":275,"column":null}},"85":{"start":{"line":276,"column":26},"end":{"line":288,"column":null}},"86":{"start":{"line":289,"column":4},"end":{"line":297,"column":null}},"87":{"start":{"line":290,"column":6},"end":{"line":290,"column":null}},"88":{"start":{"line":293,"column":21},"end":{"line":293,"column":null}},"89":{"start":{"line":294,"column":18},"end":{"line":294,"column":null}},"90":{"start":{"line":295,"column":6},"end":{"line":295,"column":null}},"91":{"start":{"line":295,"column":34},"end":{"line":295,"column":null}},"92":{"start":{"line":296,"column":6},"end":{"line":296,"column":null}},"93":{"start":{"line":298,"column":4},"end":{"line":298,"column":null}},"94":{"start":{"line":299,"column":4},"end":{"line":299,"column":null}},"95":{"start":{"line":307,"column":19},"end":{"line":307,"column":null}},"96":{"start":{"line":308,"column":17},"end":{"line":308,"column":null}},"97":{"start":{"line":309,"column":16},"end":{"line":309,"column":null}},"98":{"start":{"line":310,"column":4},"end":{"line":310,"column":null}},"99":{"start":{"line":310,"column":14},"end":{"line":310,"column":null}},"100":{"start":{"line":311,"column":4},"end":{"line":311,"column":null}},"101":{"start":{"line":311,"column":70},"end":{"line":311,"column":null}},"102":{"start":{"line":312,"column":19},"end":{"line":312,"column":null}},"103":{"start":{"line":313,"column":4},"end":{"line":313,"column":null}},"104":{"start":{"line":313,"column":26},"end":{"line":313,"column":null}},"105":{"start":{"line":314,"column":4},"end":{"line":314,"column":null}},"106":{"start":{"line":314,"column":72},"end":{"line":314,"column":null}},"107":{"start":{"line":315,"column":4},"end":{"line":315,"column":null}},"108":{"start":{"line":316,"column":4},"end":{"line":316,"column":null}},"109":{"start":{"line":320,"column":16},"end":{"line":320,"column":null}},"110":{"start":{"line":321,"column":17},"end":{"line":321,"column":null}},"111":{"start":{"line":322,"column":4},"end":{"line":322,"column":null}},"112":{"start":{"line":322,"column":44},"end":{"line":322,"column":null}},"113":{"start":{"line":323,"column":4},"end":{"line":323,"column":null}},"114":{"start":{"line":324,"column":4},"end":{"line":328,"column":null}},"115":{"start":{"line":325,"column":6},"end":{"line":325,"column":null}},"116":{"start":{"line":327,"column":6},"end":{"line":327,"column":null}},"117":{"start":{"line":333,"column":17},"end":{"line":333,"column":null}},"118":{"start":{"line":334,"column":4},"end":{"line":334,"column":null}},"119":{"start":{"line":334,"column":18},"end":{"line":334,"column":null}},"120":{"start":{"line":335,"column":4},"end":{"line":338,"column":null}},"121":{"start":{"line":336,"column":6},"end":{"line":336,"column":null}},"122":{"start":{"line":337,"column":6},"end":{"line":337,"column":null}},"123":{"start":{"line":339,"column":4},"end":{"line":339,"column":null}},"124":{"start":{"line":344,"column":17},"end":{"line":344,"column":null}},"125":{"start":{"line":345,"column":4},"end":{"line":345,"column":null}},"126":{"start":{"line":345,"column":45},"end":{"line":345,"column":83}},"127":{"start":{"line":349,"column":4},"end":{"line":349,"column":null}}},"fnMap":{"0":{"name":"describeFilesystem","decl":{"start":{"line":78,"column":9},"end":{"line":78,"column":28}},"loc":{"start":{"line":78,"column":50},"end":{"line":85,"column":null}},"line":78},"1":{"name":"looksLikeLockError","decl":{"start":{"line":87,"column":9},"end":{"line":87,"column":28}},"loc":{"start":{"line":87,"column":49},"end":{"line":91,"column":null}},"line":87},"2":{"name":"sha256Hex","decl":{"start":{"line":93,"column":9},"end":{"line":93,"column":19}},"loc":{"start":{"line":93,"column":42},"end":{"line":95,"column":null}},"line":93},"3":{"name":"normalizeGrants","decl":{"start":{"line":97,"column":9},"end":{"line":97,"column":25}},"loc":{"start":{"line":97,"column":59},"end":{"line":105,"column":null}},"line":97},"4":{"name":"toRecord","decl":{"start":{"line":107,"column":9},"end":{"line":107,"column":18}},"loc":{"start":{"line":107,"column":46},"end":{"line":120,"column":null}},"line":107},"5":{"name":"snapshotPathFor","decl":{"start":{"line":128,"column":16},"end":{"line":128,"column":32}},"loc":{"start":{"line":128,"column":56},"end":{"line":130,"column":null}},"line":128},"6":{"name":"constructor","decl":{"start":{"line":139,"column":2},"end":{"line":139,"column":10}},"loc":{"start":{"line":139,"column":66},"end":{"line":169,"column":null}},"line":139},"7":{"name":"(anonymous_7)","decl":{"start":{"line":160,"column":22},"end":{"line":160,"column":29}},"loc":{"start":{"line":160,"column":53},"end":{"line":168,"column":5}},"line":160},"8":{"name":"(anonymous_8)","decl":{"start":{"line":166,"column":83},"end":{"line":166,"column":88}},"loc":{"start":{"line":166,"column":94},"end":{"line":166,"column":110}},"line":166},"9":{"name":"open","decl":{"start":{"line":183,"column":15},"end":{"line":183,"column":20}},"loc":{"start":{"line":183,"column":85},"end":{"line":200,"column":null}},"line":183},"10":{"name":"openWithLockFallback","decl":{"start":{"line":202,"column":23},"end":{"line":202,"column":null}},"loc":{"start":{"line":206,"column":25},"end":{"line":218,"column":null}},"line":206},"11":{"name":"openExact","decl":{"start":{"line":220,"column":23},"end":{"line":220,"column":null}},"loc":{"start":{"line":224,"column":25},"end":{"line":244,"column":null}},"line":224},"12":{"name":"(anonymous_12)","decl":{"start":{"line":231,"column":8},"end":{"line":231,"column":15}},"loc":{"start":{"line":231,"column":27},"end":{"line":233,"column":null}},"line":231},"13":{"name":"snapshot","decl":{"start":{"line":254,"column":2},"end":{"line":254,"column":10}},"loc":{"start":{"line":254,"column":27},"end":{"line":265,"column":null}},"line":254},"14":{"name":"create","decl":{"start":{"line":267,"column":8},"end":{"line":267,"column":15}},"loc":{"start":{"line":267,"column":63},"end":{"line":300,"column":null}},"line":267},"15":{"name":"(anonymous_15)","decl":{"start":{"line":271,"column":30},"end":{"line":271,"column":37}},"loc":{"start":{"line":271,"column":43},"end":{"line":271,"column":55}},"line":271},"16":{"name":"verify","decl":{"start":{"line":306,"column":8},"end":{"line":306,"column":15}},"loc":{"start":{"line":306,"column":57},"end":{"line":317,"column":null}},"line":306},"17":{"name":"touch","decl":{"start":{"line":319,"column":16},"end":{"line":319,"column":22}},"loc":{"start":{"line":319,"column":49},"end":{"line":329,"column":null}},"line":319},"18":{"name":"revoke","decl":{"start":{"line":332,"column":8},"end":{"line":332,"column":15}},"loc":{"start":{"line":332,"column":45},"end":{"line":340,"column":null}},"line":332},"19":{"name":"list","decl":{"start":{"line":343,"column":8},"end":{"line":343,"column":39}},"loc":{"start":{"line":343,"column":39},"end":{"line":346,"column":null}},"line":343},"20":{"name":"(anonymous_20)","decl":{"start":{"line":345,"column":30},"end":{"line":345,"column":36}},"loc":{"start":{"line":345,"column":45},"end":{"line":345,"column":83}},"line":345},"21":{"name":"close","decl":{"start":{"line":348,"column":2},"end":{"line":348,"column":16}},"loc":{"start":{"line":348,"column":16},"end":{"line":350,"column":null}},"line":348}},"branchMap":{"0":{"loc":{"start":{"line":81,"column":14},"end":{"line":81,"column":43}},"type":"binary-expr","locations":[{"start":{"line":81,"column":14},"end":{"line":81,"column":33}},{"start":{"line":81,"column":33},"end":{"line":81,"column":43}}],"line":81},"1":{"loc":{"start":{"line":89,"column":17},"end":{"line":89,"column":60}},"type":"cond-expr","locations":[{"start":{"line":89,"column":38},"end":{"line":89,"column":50}},{"start":{"line":89,"column":50},"end":{"line":89,"column":60}}],"line":89},"2":{"loc":{"start":{"line":89,"column":63},"end":{"line":89,"column":null}},"type":"cond-expr","locations":[{"start":{"line":89,"column":88},"end":{"line":89,"column":104}},{"start":{"line":89,"column":104},"end":{"line":89,"column":null}}],"line":89},"3":{"loc":{"start":{"line":100,"column":18},"end":{"line":100,"column":null}},"type":"binary-expr","locations":[{"start":{"line":100,"column":18},"end":{"line":100,"column":32}},{"start":{"line":100,"column":32},"end":{"line":100,"column":null}}],"line":100},"4":{"loc":{"start":{"line":101,"column":4},"end":{"line":101,"column":null}},"type":"if","locations":[{"start":{"line":101,"column":4},"end":{"line":101,"column":null}},{"start":{},"end":{}}],"line":101},"5":{"loc":{"start":{"line":113,"column":21},"end":{"line":113,"column":null}},"type":"cond-expr","locations":[{"start":{"line":113,"column":44},"end":{"line":113,"column":91}},{"start":{"line":113,"column":91},"end":{"line":113,"column":null}}],"line":113},"6":{"loc":{"start":{"line":114,"column":20},"end":{"line":114,"column":null}},"type":"cond-expr","locations":[{"start":{"line":114,"column":42},"end":{"line":114,"column":88}},{"start":{"line":114,"column":88},"end":{"line":114,"column":null}}],"line":114},"7":{"loc":{"start":{"line":139,"column":36},"end":{"line":139,"column":66}},"type":"default-arg","locations":[{"start":{"line":139,"column":62},"end":{"line":139,"column":66}}],"line":139},"8":{"loc":{"start":{"line":143,"column":46},"end":{"line":143,"column":73}},"type":"binary-expr","locations":[{"start":{"line":143,"column":46},"end":{"line":143,"column":68}},{"start":{"line":143,"column":68},"end":{"line":143,"column":73}}],"line":143},"9":{"loc":{"start":{"line":149,"column":4},"end":{"line":157,"column":null}},"type":"if","locations":[{"start":{"line":149,"column":4},"end":{"line":157,"column":null}},{"start":{},"end":{}}],"line":149},"10":{"loc":{"start":{"line":154,"column":49},"end":{"line":154,"column":92}},"type":"cond-expr","locations":[{"start":{"line":154,"column":70},"end":{"line":154,"column":82}},{"start":{"line":154,"column":82},"end":{"line":154,"column":92}}],"line":154},"11":{"loc":{"start":{"line":162,"column":6},"end":{"line":165,"column":null}},"type":"if","locations":[{"start":{"line":162,"column":6},"end":{"line":165,"column":null}},{"start":{},"end":{}}],"line":162},"12":{"loc":{"start":{"line":167,"column":21},"end":{"line":167,"column":63}},"type":"cond-expr","locations":[{"start":{"line":167,"column":41},"end":{"line":167,"column":58}},{"start":{"line":167,"column":58},"end":{"line":167,"column":63}}],"line":167},"13":{"loc":{"start":{"line":167,"column":41},"end":{"line":167,"column":58}},"type":"binary-expr","locations":[{"start":{"line":167,"column":41},"end":{"line":167,"column":52}},{"start":{"line":167,"column":52},"end":{"line":167,"column":58}}],"line":167},"14":{"loc":{"start":{"line":183,"column":34},"end":{"line":183,"column":85}},"type":"default-arg","locations":[{"start":{"line":183,"column":60},"end":{"line":183,"column":85}}],"line":183},"15":{"loc":{"start":{"line":184,"column":4},"end":{"line":184,"column":null}},"type":"if","locations":[{"start":{"line":184,"column":4},"end":{"line":184,"column":null}},{"start":{},"end":{}}],"line":184},"16":{"loc":{"start":{"line":184,"column":8},"end":{"line":184,"column":57}},"type":"binary-expr","locations":[{"start":{"line":184,"column":8},"end":{"line":184,"column":31}},{"start":{"line":184,"column":31},"end":{"line":184,"column":57}}],"line":184},"17":{"loc":{"start":{"line":189,"column":6},"end":{"line":189,"column":null}},"type":"if","locations":[{"start":{"line":189,"column":6},"end":{"line":189,"column":null}},{"start":{},"end":{}}],"line":189},"18":{"loc":{"start":{"line":191,"column":33},"end":{"line":191,"column":76}},"type":"cond-expr","locations":[{"start":{"line":191,"column":54},"end":{"line":191,"column":66}},{"start":{"line":191,"column":66},"end":{"line":191,"column":76}}],"line":191},"19":{"loc":{"start":{"line":210,"column":6},"end":{"line":210,"column":null}},"type":"if","locations":[{"start":{"line":210,"column":6},"end":{"line":210,"column":null}},{"start":{},"end":{}}],"line":210},"20":{"loc":{"start":{"line":242,"column":4},"end":{"line":242,"column":null}},"type":"if","locations":[{"start":{"line":242,"column":4},"end":{"line":242,"column":null}},{"start":{},"end":{}}],"line":242},"21":{"loc":{"start":{"line":242,"column":8},"end":{"line":242,"column":55}},"type":"binary-expr","locations":[{"start":{"line":242,"column":8},"end":{"line":242,"column":26}},{"start":{"line":242,"column":26},"end":{"line":242,"column":55}}],"line":242},"22":{"loc":{"start":{"line":255,"column":4},"end":{"line":255,"column":null}},"type":"if","locations":[{"start":{"line":255,"column":4},"end":{"line":255,"column":null}},{"start":{},"end":{}}],"line":255},"23":{"loc":{"start":{"line":262,"column":60},"end":{"line":262,"column":104}},"type":"cond-expr","locations":[{"start":{"line":262,"column":81},"end":{"line":262,"column":93}},{"start":{"line":262,"column":93},"end":{"line":262,"column":104}}],"line":262},"24":{"loc":{"start":{"line":269,"column":4},"end":{"line":269,"column":null}},"type":"if","locations":[{"start":{"line":269,"column":4},"end":{"line":269,"column":null}},{"start":{},"end":{}}],"line":269},"25":{"loc":{"start":{"line":271,"column":4},"end":{"line":273,"column":null}},"type":"if","locations":[{"start":{"line":271,"column":4},"end":{"line":273,"column":null}},{"start":{},"end":{}}],"line":271},"26":{"loc":{"start":{"line":282,"column":23},"end":{"line":282,"column":null}},"type":"cond-expr","locations":[{"start":{"line":282,"column":55},"end":{"line":282,"column":95}},{"start":{"line":282,"column":95},"end":{"line":282,"column":null}}],"line":282},"27":{"loc":{"start":{"line":283,"column":22},"end":{"line":283,"column":null}},"type":"cond-expr","locations":[{"start":{"line":283,"column":53},"end":{"line":283,"column":92}},{"start":{"line":283,"column":92},"end":{"line":283,"column":null}}],"line":283},"28":{"loc":{"start":{"line":285,"column":17},"end":{"line":285,"column":null}},"type":"binary-expr","locations":[{"start":{"line":285,"column":17},"end":{"line":285,"column":36}},{"start":{"line":285,"column":36},"end":{"line":285,"column":null}}],"line":285},"29":{"loc":{"start":{"line":294,"column":21},"end":{"line":294,"column":64}},"type":"cond-expr","locations":[{"start":{"line":294,"column":42},"end":{"line":294,"column":54}},{"start":{"line":294,"column":54},"end":{"line":294,"column":64}}],"line":294},"30":{"loc":{"start":{"line":294,"column":67},"end":{"line":294,"column":null}},"type":"cond-expr","locations":[{"start":{"line":294,"column":92},"end":{"line":294,"column":108}},{"start":{"line":294,"column":108},"end":{"line":294,"column":null}}],"line":294},"31":{"loc":{"start":{"line":295,"column":6},"end":{"line":295,"column":null}},"type":"if","locations":[{"start":{"line":295,"column":6},"end":{"line":295,"column":null}},{"start":{},"end":{}}],"line":295},"32":{"loc":{"start":{"line":310,"column":4},"end":{"line":310,"column":null}},"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":310,"column":null}},{"start":{},"end":{}}],"line":310},"33":{"loc":{"start":{"line":311,"column":4},"end":{"line":311,"column":null}},"type":"if","locations":[{"start":{"line":311,"column":4},"end":{"line":311,"column":null}},{"start":{},"end":{}}],"line":311},"34":{"loc":{"start":{"line":313,"column":4},"end":{"line":313,"column":null}},"type":"if","locations":[{"start":{"line":313,"column":4},"end":{"line":313,"column":null}},{"start":{},"end":{}}],"line":313},"35":{"loc":{"start":{"line":314,"column":4},"end":{"line":314,"column":null}},"type":"if","locations":[{"start":{"line":314,"column":4},"end":{"line":314,"column":null}},{"start":{},"end":{}}],"line":314},"36":{"loc":{"start":{"line":314,"column":8},"end":{"line":314,"column":72}},"type":"binary-expr","locations":[{"start":{"line":314,"column":8},"end":{"line":314,"column":28}},{"start":{"line":314,"column":28},"end":{"line":314,"column":72}}],"line":314},"37":{"loc":{"start":{"line":321,"column":17},"end":{"line":321,"column":null}},"type":"binary-expr","locations":[{"start":{"line":321,"column":17},"end":{"line":321,"column":43}},{"start":{"line":321,"column":43},"end":{"line":321,"column":null}}],"line":321},"38":{"loc":{"start":{"line":322,"column":4},"end":{"line":322,"column":null}},"type":"if","locations":[{"start":{"line":322,"column":4},"end":{"line":322,"column":null}},{"start":{},"end":{}}],"line":322},"39":{"loc":{"start":{"line":327,"column":47},"end":{"line":327,"column":83}},"type":"cond-expr","locations":[{"start":{"line":327,"column":68},"end":{"line":327,"column":80}},{"start":{"line":327,"column":80},"end":{"line":327,"column":83}}],"line":327},"40":{"loc":{"start":{"line":334,"column":4},"end":{"line":334,"column":null}},"type":"if","locations":[{"start":{"line":334,"column":4},"end":{"line":334,"column":null}},{"start":{},"end":{}}],"line":334},"41":{"loc":{"start":{"line":335,"column":4},"end":{"line":338,"column":null}},"type":"if","locations":[{"start":{"line":335,"column":4},"end":{"line":338,"column":null}},{"start":{},"end":{}}],"line":335}},"s":{"0":3,"1":3,"2":3,"3":1,"4":1,"5":1,"6":0,"7":2,"8":2,"9":2,"10":26,"11":51,"12":51,"13":663,"14":663,"15":0,"16":663,"17":51,"18":36,"19":4,"20":17,"21":17,"22":17,"23":17,"24":17,"25":16,"26":16,"27":2,"28":17,"29":92,"30":92,"31":38,"32":38,"33":52,"34":28,"35":52,"36":15,"37":11,"38":4,"39":4,"40":4,"41":1,"42":0,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":5,"50":5,"51":2,"52":1,"53":1,"54":1,"55":17,"56":17,"57":17,"58":17,"59":17,"60":15,"61":65,"62":2,"63":2,"64":15,"65":2,"66":15,"67":18,"68":14,"69":4,"70":4,"71":4,"72":4,"73":4,"74":0,"75":0,"76":15,"77":15,"78":0,"79":15,"80":15,"81":30,"82":1,"83":14,"84":14,"85":14,"86":15,"87":15,"88":1,"89":1,"90":1,"91":1,"92":0,"93":13,"94":13,"95":12,"96":12,"97":12,"98":12,"99":2,"100":10,"101":0,"102":10,"103":10,"104":2,"105":8,"106":1,"107":7,"108":7,"109":7,"110":7,"111":7,"112":1,"113":6,"114":6,"115":6,"116":0,"117":4,"118":4,"119":1,"120":3,"121":3,"122":3,"123":3,"124":21,"125":21,"126":0,"127":10},"f":{"0":1,"1":2,"2":26,"3":51,"4":36,"5":4,"6":17,"7":92,"8":28,"9":3,"10":3,"11":3,"12":15,"13":18,"14":15,"15":30,"16":12,"17":7,"18":4,"19":21,"20":0,"21":10},"b":{"0":[1,0],"1":[2,0],"2":[2,0],"3":[663,80],"4":[0,663],"5":[0,36],"6":[4,32],"7":[17],"8":[17,11],"9":[16,1],"10":[2,0],"11":[38,54],"12":[0,52],"13":[0,0],"14":[15],"15":[11,4],"16":[15,4],"17":[0,1],"18":[1,0],"19":[1,1],"20":[2,13],"21":[15,4],"22":[14,4],"23":[0,0],"24":[0,15],"25":[1,14],"26":[0,14],"27":[1,13],"28":[15,12],"29":[1,0],"30":[1,0],"31":[1,0],"32":[2,10],"33":[0,10],"34":[2,8],"35":[1,7],"36":[8,1],"37":[7,6],"38":[1,6],"39":[0,0],"40":[1,3],"41":[3,0]},"meta":{"lastBranch":42,"lastFunction":22,"lastStatement":128,"seen":{"s:61:30:61:Infinity":0,"s:62:27:62:Infinity":1,"s:65:42:76:Infinity":2,"f:78:9:78:28":0,"s:79:2:84:Infinity":3,"s:80:17:80:Infinity":4,"s:81:4:81:Infinity":5,"b:81:14:81:33:81:33:81:43":0,"s:83:4:83:Infinity":6,"f:87:9:87:28":1,"s:88:17:88:Infinity":7,"s:89:14:89:Infinity":8,"b:89:38:89:50:89:50:89:60":1,"b:89:88:89:104:89:104:89:Infinity":2,"s:90:2:90:Infinity":9,"f:93:9:93:19":2,"s:94:2:94:Infinity":10,"f:97:9:97:25":3,"s:98:14:98:Infinity":11,"s:99:2:103:Infinity":12,"s:100:18:100:Infinity":13,"b:100:18:100:32:100:32:100:Infinity":3,"b:101:4:101:Infinity:undefined:undefined:undefined:undefined":4,"s:101:4:101:Infinity":14,"s:101:42:101:Infinity":15,"s:102:4:102:Infinity":16,"s:104:2:104:Infinity":17,"f:107:9:107:18":4,"s:108:2:119:Infinity":18,"b:113:44:113:91:113:91:113:Infinity":5,"b:114:42:114:88:114:88:114:Infinity":6,"f:128:16:128:32":5,"s:129:2:129:Infinity":19,"s:135:22:135:Infinity":20,"s:137:42:137:Infinity":21,"f:139:2:139:10":6,"b:139:62:139:66":7,"s:140:4:140:Infinity":22,"s:143:4:143:Infinity":23,"b:143:46:143:68:143:68:143:73":8,"b:149:4:157:Infinity:undefined:undefined:undefined:undefined":9,"s:149:4:157:Infinity":24,"s:150:6:156:Infinity":25,"s:151:8:151:Infinity":26,"s:153:8:155:Infinity":27,"b:154:70:154:82:154:82:154:92":10,"s:160:4:168:Infinity":28,"f:160:22:160:29":7,"s:161:19:161:Infinity":29,"b:162:6:165:Infinity:undefined:undefined:undefined:undefined":11,"s:162:6:165:Infinity":30,"s:163:8:163:Infinity":31,"s:164:8:164:Infinity":32,"s:166:20:166:Infinity":33,"f:166:83:166:88":8,"s:166:94:166:110":34,"s:167:6:167:Infinity":35,"b:167:41:167:58:167:58:167:63":12,"b:167:41:167:52:167:52:167:58":13,"f:183:15:183:20":9,"b:183:60:183:85":14,"b:184:4:184:Infinity:undefined:undefined:undefined:undefined":15,"s:184:4:184:Infinity":36,"b:184:8:184:31:184:31:184:57":16,"s:184:57:184:Infinity":37,"s:185:27:185:Infinity":38,"s:186:4:199:Infinity":39,"s:187:6:187:Infinity":40,"b:189:6:189:Infinity:undefined:undefined:undefined:undefined":17,"s:189:6:189:Infinity":41,"s:189:39:189:Infinity":42,"s:190:6:193:Infinity":43,"b:191:54:191:66:191:66:191:76":18,"s:194:6:194:Infinity":44,"s:195:6:195:Infinity":45,"s:196:6:196:Infinity":46,"s:197:6:197:Infinity":47,"s:198:6:198:Infinity":48,"f:202:23:202:Infinity":10,"s:207:4:217:Infinity":49,"s:208:6:208:Infinity":50,"b:210:6:210:Infinity:undefined:undefined:undefined:undefined":19,"s:210:6:210:Infinity":51,"s:210:34:210:Infinity":52,"s:211:6:215:Infinity":53,"s:216:6:216:Infinity":54,"f:220:23:220:Infinity":11,"s:225:18:225:Infinity":55,"s:226:4:226:Infinity":56,"s:227:29:227:Infinity":57,"s:228:4:239:Infinity":58,"s:229:6:235:Infinity":59,"f:231:8:231:15":12,"s:232:10:232:Infinity":60,"s:232:35:232:Infinity":61,"s:237:6:237:Infinity":62,"s:238:6:238:Infinity":63,"b:242:4:242:Infinity:undefined:undefined:undefined:undefined":20,"s:242:4:242:Infinity":64,"b:242:8:242:26:242:26:242:55":21,"s:242:55:242:Infinity":65,"s:243:4:243:Infinity":66,"f:254:2:254:10":13,"b:255:4:255:Infinity:undefined:undefined:undefined:undefined":22,"s:255:4:255:Infinity":67,"s:255:30:255:Infinity":68,"s:256:16:256:Infinity":69,"s:257:4:264:Infinity":70,"s:258:6:258:Infinity":71,"s:259:6:259:Infinity":72,"s:260:6:260:Infinity":73,"s:262:6:262:Infinity":74,"b:262:81:262:93:262:93:262:104":23,"s:263:6:263:Infinity":75,"f:267:8:267:15":14,"s:268:17:268:Infinity":76,"b:269:4:269:Infinity:undefined:undefined:undefined:undefined":24,"s:269:4:269:Infinity":77,"s:269:15:269:Infinity":78,"s:270:19:270:Infinity":79,"b:271:4:273:Infinity:undefined:undefined:undefined:undefined":25,"s:271:4:273:Infinity":80,"f:271:30:271:37":15,"s:271:43:271:55":81,"s:272:6:272:Infinity":82,"s:274:18:274:Infinity":83,"s:275:16:275:Infinity":84,"s:276:26:288:Infinity":85,"b:282:55:282:95:282:95:282:Infinity":26,"b:283:53:283:92:283:92:283:Infinity":27,"b:285:17:285:36:285:36:285:Infinity":28,"s:289:4:297:Infinity":86,"s:290:6:290:Infinity":87,"s:293:21:293:Infinity":88,"s:294:18:294:Infinity":89,"b:294:42:294:54:294:54:294:64":29,"b:294:92:294:108:294:108:294:Infinity":30,"b:295:6:295:Infinity:undefined:undefined:undefined:undefined":31,"s:295:6:295:Infinity":90,"s:295:34:295:Infinity":91,"s:296:6:296:Infinity":92,"s:298:4:298:Infinity":93,"s:299:4:299:Infinity":94,"f:306:8:306:15":16,"s:307:19:307:Infinity":95,"s:308:17:308:Infinity":96,"s:309:16:309:Infinity":97,"b:310:4:310:Infinity:undefined:undefined:undefined:undefined":32,"s:310:4:310:Infinity":98,"s:310:14:310:Infinity":99,"b:311:4:311:Infinity:undefined:undefined:undefined:undefined":33,"s:311:4:311:Infinity":100,"s:311:70:311:Infinity":101,"s:312:19:312:Infinity":102,"b:313:4:313:Infinity:undefined:undefined:undefined:undefined":34,"s:313:4:313:Infinity":103,"s:313:26:313:Infinity":104,"b:314:4:314:Infinity:undefined:undefined:undefined:undefined":35,"s:314:4:314:Infinity":105,"b:314:8:314:28:314:28:314:72":36,"s:314:72:314:Infinity":106,"s:315:4:315:Infinity":107,"s:316:4:316:Infinity":108,"f:319:16:319:22":17,"s:320:16:320:Infinity":109,"s:321:17:321:Infinity":110,"b:321:17:321:43:321:43:321:Infinity":37,"b:322:4:322:Infinity:undefined:undefined:undefined:undefined":38,"s:322:4:322:Infinity":111,"s:322:44:322:Infinity":112,"s:323:4:323:Infinity":113,"s:324:4:328:Infinity":114,"s:325:6:325:Infinity":115,"s:327:6:327:Infinity":116,"b:327:68:327:80:327:80:327:83":39,"f:332:8:332:15":18,"s:333:17:333:Infinity":117,"b:334:4:334:Infinity:undefined:undefined:undefined:undefined":40,"s:334:4:334:Infinity":118,"s:334:18:334:Infinity":119,"b:335:4:338:Infinity:undefined:undefined:undefined:undefined":41,"s:335:4:338:Infinity":120,"s:336:6:336:Infinity":121,"s:337:6:337:Infinity":122,"s:339:4:339:Infinity":123,"f:343:8:343:39":19,"s:344:17:344:Infinity":124,"s:345:4:345:Infinity":125,"f:345:30:345:36":20,"s:345:45:345:83":126,"f:348:2:348:16":21,"s:349:4:349:Infinity":127},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/catalog.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/catalog.ts","statementMap":{"0":{"start":{"line":6,"column":24},"end":{"line":6,"column":null}},"1":{"start":{"line":13,"column":22},"end":{"line":13,"column":null}},"2":{"start":{"line":31,"column":43},"end":{"line":31,"column":null}},"3":{"start":{"line":32,"column":55},"end":{"line":32,"column":null}},"4":{"start":{"line":33,"column":66},"end":{"line":33,"column":null}},"5":{"start":{"line":34,"column":54},"end":{"line":34,"column":null}},"6":{"start":{"line":36,"column":46},"end":{"line":36,"column":null}},"7":{"start":{"line":37,"column":25},"end":{"line":37,"column":null}},"8":{"start":{"line":39,"column":28},"end":{"line":39,"column":null}},"9":{"start":{"line":41,"column":22},"end":{"line":41,"column":38}},"10":{"start":{"line":45,"column":4},"end":{"line":45,"column":null}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":null}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":null}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":null}},"14":{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},"15":{"start":{"line":62,"column":27},"end":{"line":62,"column":null}},"16":{"start":{"line":63,"column":4},"end":{"line":63,"column":null}},"17":{"start":{"line":64,"column":4},"end":{"line":98,"column":null}},"18":{"start":{"line":65,"column":71},"end":{"line":65,"column":null}},"19":{"start":{"line":66,"column":48},"end":{"line":66,"column":null}},"20":{"start":{"line":67,"column":12},"end":{"line":74,"column":null}},"21":{"start":{"line":68,"column":8},"end":{"line":71,"column":null}},"22":{"start":{"line":69,"column":10},"end":{"line":69,"column":null}},"23":{"start":{"line":70,"column":10},"end":{"line":70,"column":null}},"24":{"start":{"line":72,"column":23},"end":{"line":72,"column":null}},"25":{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},"26":{"start":{"line":73,"column":28},"end":{"line":73,"column":null}},"27":{"start":{"line":76,"column":6},"end":{"line":82,"column":null}},"28":{"start":{"line":77,"column":22},"end":{"line":77,"column":null}},"29":{"start":{"line":78,"column":8},"end":{"line":78,"column":null}},"30":{"start":{"line":78,"column":30},"end":{"line":78,"column":null}},"31":{"start":{"line":79,"column":8},"end":{"line":80,"column":null}},"32":{"start":{"line":79,"column":20},"end":{"line":79,"column":null}},"33":{"start":{"line":80,"column":13},"end":{"line":80,"column":null}},"34":{"start":{"line":81,"column":8},"end":{"line":81,"column":null}},"35":{"start":{"line":81,"column":53},"end":{"line":81,"column":null}},"36":{"start":{"line":84,"column":18},"end":{"line":84,"column":null}},"37":{"start":{"line":85,"column":21},"end":{"line":85,"column":null}},"38":{"start":{"line":86,"column":18},"end":{"line":86,"column":null}},"39":{"start":{"line":86,"column":44},"end":{"line":86,"column":60}},"40":{"start":{"line":88,"column":6},"end":{"line":88,"column":null}},"41":{"start":{"line":88,"column":30},"end":{"line":88,"column":null}},"42":{"start":{"line":89,"column":6},"end":{"line":89,"column":null}},"43":{"start":{"line":90,"column":6},"end":{"line":90,"column":null}},"44":{"start":{"line":91,"column":6},"end":{"line":91,"column":null}},"45":{"start":{"line":93,"column":6},"end":{"line":95,"column":null}},"46":{"start":{"line":97,"column":6},"end":{"line":97,"column":null}},"47":{"start":{"line":108,"column":4},"end":{"line":108,"column":null}},"48":{"start":{"line":109,"column":4},"end":{"line":109,"column":null}},"49":{"start":{"line":109,"column":17},"end":{"line":109,"column":null}},"50":{"start":{"line":120,"column":19},"end":{"line":126,"column":null}},"51":{"start":{"line":127,"column":4},"end":{"line":139,"column":null}},"52":{"start":{"line":129,"column":8},"end":{"line":137,"column":null}},"53":{"start":{"line":130,"column":10},"end":{"line":132,"column":null}},"54":{"start":{"line":131,"column":12},"end":{"line":131,"column":null}},"55":{"start":{"line":134,"column":10},"end":{"line":136,"column":null}},"56":{"start":{"line":143,"column":4},"end":{"line":143,"column":null}},"57":{"start":{"line":143,"column":74},"end":{"line":143,"column":null}},"58":{"start":{"line":144,"column":4},"end":{"line":144,"column":null}},"59":{"start":{"line":144,"column":26},"end":{"line":144,"column":null}},"60":{"start":{"line":145,"column":4},"end":{"line":178,"column":null}},"61":{"start":{"line":146,"column":6},"end":{"line":177,"column":null}},"62":{"start":{"line":150,"column":25},"end":{"line":157,"column":null}},"63":{"start":{"line":151,"column":10},"end":{"line":156,"column":null}},"64":{"start":{"line":152,"column":12},"end":{"line":152,"column":null}},"65":{"start":{"line":154,"column":12},"end":{"line":154,"column":null}},"66":{"start":{"line":155,"column":12},"end":{"line":155,"column":null}},"67":{"start":{"line":158,"column":68},"end":{"line":164,"column":null}},"68":{"start":{"line":162,"column":56},"end":{"line":162,"column":107}},"69":{"start":{"line":163,"column":56},"end":{"line":163,"column":107}},"70":{"start":{"line":165,"column":37},"end":{"line":172,"column":null}},"71":{"start":{"line":173,"column":8},"end":{"line":173,"column":null}},"72":{"start":{"line":174,"column":8},"end":{"line":174,"column":null}},"73":{"start":{"line":176,"column":8},"end":{"line":176,"column":null}},"74":{"start":{"line":179,"column":4},"end":{"line":179,"column":null}},"75":{"start":{"line":183,"column":4},"end":{"line":183,"column":null}},"76":{"start":{"line":183,"column":19},"end":{"line":183,"column":null}},"77":{"start":{"line":184,"column":4},"end":{"line":184,"column":null}},"78":{"start":{"line":184,"column":78},"end":{"line":184,"column":null}},"79":{"start":{"line":185,"column":4},"end":{"line":185,"column":null}},"80":{"start":{"line":185,"column":29},"end":{"line":185,"column":null}},"81":{"start":{"line":186,"column":4},"end":{"line":195,"column":null}},"82":{"start":{"line":187,"column":6},"end":{"line":194,"column":null}},"83":{"start":{"line":188,"column":20},"end":{"line":188,"column":null}},"84":{"start":{"line":189,"column":23},"end":{"line":189,"column":null}},"85":{"start":{"line":190,"column":8},"end":{"line":190,"column":null}},"86":{"start":{"line":191,"column":8},"end":{"line":191,"column":null}},"87":{"start":{"line":193,"column":8},"end":{"line":193,"column":null}},"88":{"start":{"line":196,"column":4},"end":{"line":196,"column":null}},"89":{"start":{"line":200,"column":27},"end":{"line":200,"column":null}},"90":{"start":{"line":201,"column":21},"end":{"line":201,"column":null}},"91":{"start":{"line":201,"column":51},"end":{"line":201,"column":65}},"92":{"start":{"line":202,"column":23},"end":{"line":202,"column":null}},"93":{"start":{"line":202,"column":56},"end":{"line":202,"column":72}},"94":{"start":{"line":203,"column":23},"end":{"line":203,"column":null}},"95":{"start":{"line":203,"column":55},"end":{"line":203,"column":64}},"96":{"start":{"line":204,"column":22},"end":{"line":204,"column":null}},"97":{"start":{"line":204,"column":53},"end":{"line":204,"column":73}},"98":{"start":{"line":205,"column":22},"end":{"line":205,"column":null}},"99":{"start":{"line":205,"column":53},"end":{"line":205,"column":73}},"100":{"start":{"line":207,"column":4},"end":{"line":231,"column":null}},"101":{"start":{"line":208,"column":20},"end":{"line":208,"column":null}},"102":{"start":{"line":209,"column":21},"end":{"line":209,"column":null}},"103":{"start":{"line":212,"column":27},"end":{"line":212,"column":null}},"104":{"start":{"line":213,"column":21},"end":{"line":213,"column":null}},"105":{"start":{"line":214,"column":19},"end":{"line":214,"column":null}},"106":{"start":{"line":215,"column":6},"end":{"line":230,"column":null}},"107":{"start":{"line":228,"column":50},"end":{"line":228,"column":73}}},"fnMap":{"0":{"name":"constructor","decl":{"start":{"line":41,"column":2},"end":{"line":41,"column":14}},"loc":{"start":{"line":41,"column":38},"end":{"line":41,"column":null}},"line":41},"1":{"name":"liveActive","decl":{"start":{"line":44,"column":6},"end":{"line":44,"column":28}},"loc":{"start":{"line":44,"column":28},"end":{"line":46,"column":null}},"line":44},"2":{"name":"invalidate","decl":{"start":{"line":49,"column":2},"end":{"line":49,"column":21}},"loc":{"start":{"line":49,"column":21},"end":{"line":53,"column":null}},"line":49},"3":{"name":"startLive","decl":{"start":{"line":61,"column":8},"end":{"line":61,"column":35}},"loc":{"start":{"line":61,"column":35},"end":{"line":99,"column":null}},"line":61},"4":{"name":"(anonymous_4)","decl":{"start":{"line":67,"column":12},"end":{"line":67,"column":21}},"loc":{"start":{"line":67,"column":94},"end":{"line":74,"column":null}},"line":67},"5":{"name":"(anonymous_5)","decl":{"start":{"line":76,"column":80},"end":{"line":76,"column":84}},"loc":{"start":{"line":76,"column":94},"end":{"line":82,"column":7}},"line":76},"6":{"name":"(anonymous_6)","decl":{"start":{"line":86,"column":33},"end":{"line":86,"column":38}},"loc":{"start":{"line":86,"column":44},"end":{"line":86,"column":60}},"line":86},"7":{"name":"onEntityChange","decl":{"start":{"line":107,"column":2},"end":{"line":107,"column":17}},"loc":{"start":{"line":107,"column":67},"end":{"line":110,"column":null}},"line":107},"8":{"name":"(anonymous_8)","decl":{"start":{"line":109,"column":4},"end":{"line":109,"column":17}},"loc":{"start":{"line":109,"column":17},"end":{"line":109,"column":null}},"line":109},"9":{"name":"watchRegistries","decl":{"start":{"line":119,"column":8},"end":{"line":119,"column":41}},"loc":{"start":{"line":119,"column":41},"end":{"line":140,"column":null}},"line":119},"10":{"name":"(anonymous_10)","decl":{"start":{"line":128,"column":17},"end":{"line":128,"column":24}},"loc":{"start":{"line":128,"column":39},"end":{"line":138,"column":7}},"line":128},"11":{"name":"(anonymous_11)","decl":{"start":{"line":130,"column":67},"end":{"line":130,"column":76}},"loc":{"start":{"line":130,"column":76},"end":{"line":132,"column":11}},"line":130},"12":{"name":"registries","decl":{"start":{"line":142,"column":8},"end":{"line":142,"column":45}},"loc":{"start":{"line":142,"column":45},"end":{"line":180,"column":null}},"line":142},"13":{"name":"(anonymous_13)","decl":{"start":{"line":145,"column":24},"end":{"line":145,"column":36}},"loc":{"start":{"line":145,"column":36},"end":{"line":178,"column":5}},"line":145},"14":{"name":"(anonymous_14)","decl":{"start":{"line":150,"column":25},"end":{"line":150,"column":35}},"loc":{"start":{"line":150,"column":109},"end":{"line":157,"column":null}},"line":150},"15":{"name":"(anonymous_15)","decl":{"start":{"line":162,"column":19},"end":{"line":162,"column":50}},"loc":{"start":{"line":162,"column":56},"end":{"line":162,"column":107}},"line":162},"16":{"name":"(anonymous_16)","decl":{"start":{"line":163,"column":19},"end":{"line":163,"column":50}},"loc":{"start":{"line":163,"column":56},"end":{"line":163,"column":107}},"line":163},"17":{"name":"states","decl":{"start":{"line":182,"column":8},"end":{"line":182,"column":37}},"loc":{"start":{"line":182,"column":37},"end":{"line":197,"column":null}},"line":182},"18":{"name":"(anonymous_18)","decl":{"start":{"line":186,"column":27},"end":{"line":186,"column":39}},"loc":{"start":{"line":186,"column":39},"end":{"line":195,"column":5}},"line":186},"19":{"name":"index","decl":{"start":{"line":199,"column":8},"end":{"line":199,"column":42}},"loc":{"start":{"line":199,"column":42},"end":{"line":232,"column":null}},"line":199},"20":{"name":"(anonymous_20)","decl":{"start":{"line":201,"column":40},"end":{"line":201,"column":45}},"loc":{"start":{"line":201,"column":51},"end":{"line":201,"column":65}},"line":201},"21":{"name":"(anonymous_21)","decl":{"start":{"line":202,"column":45},"end":{"line":202,"column":50}},"loc":{"start":{"line":202,"column":56},"end":{"line":202,"column":72}},"line":202},"22":{"name":"(anonymous_22)","decl":{"start":{"line":203,"column":44},"end":{"line":203,"column":49}},"loc":{"start":{"line":203,"column":55},"end":{"line":203,"column":64}},"line":203},"23":{"name":"(anonymous_23)","decl":{"start":{"line":204,"column":42},"end":{"line":204,"column":47}},"loc":{"start":{"line":204,"column":53},"end":{"line":204,"column":73}},"line":204},"24":{"name":"(anonymous_24)","decl":{"start":{"line":205,"column":42},"end":{"line":205,"column":47}},"loc":{"start":{"line":205,"column":53},"end":{"line":205,"column":73}},"line":205},"25":{"name":"(anonymous_25)","decl":{"start":{"line":207,"column":18},"end":{"line":207,"column":23}},"loc":{"start":{"line":207,"column":29},"end":{"line":231,"column":5}},"line":207},"26":{"name":"(anonymous_26)","decl":{"start":{"line":228,"column":38},"end":{"line":228,"column":43}},"loc":{"start":{"line":228,"column":50},"end":{"line":228,"column":73}},"line":228}},"branchMap":{"0":{"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},"1":{"loc":{"start":{"line":68,"column":8},"end":{"line":71,"column":null}},"type":"if","locations":[{"start":{"line":68,"column":8},"end":{"line":71,"column":null}},{"start":{},"end":{}}],"line":68},"2":{"loc":{"start":{"line":68,"column":12},"end":{"line":68,"column":57}},"type":"binary-expr","locations":[{"start":{"line":68,"column":12},"end":{"line":68,"column":33}},{"start":{"line":68,"column":33},"end":{"line":68,"column":57}}],"line":68},"3":{"loc":{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},"type":"if","locations":[{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},{"start":{},"end":{}}],"line":73},"4":{"loc":{"start":{"line":78,"column":8},"end":{"line":78,"column":null}},"type":"if","locations":[{"start":{"line":78,"column":8},"end":{"line":78,"column":null}},{"start":{},"end":{}}],"line":78},"5":{"loc":{"start":{"line":79,"column":8},"end":{"line":80,"column":null}},"type":"if","locations":[{"start":{"line":79,"column":8},"end":{"line":80,"column":null}},{"start":{"line":80,"column":13},"end":{"line":80,"column":null}}],"line":79},"6":{"loc":{"start":{"line":94,"column":41},"end":{"line":94,"column":84}},"type":"cond-expr","locations":[{"start":{"line":94,"column":62},"end":{"line":94,"column":74}},{"start":{"line":94,"column":74},"end":{"line":94,"column":84}}],"line":94},"7":{"loc":{"start":{"line":135,"column":61},"end":{"line":135,"column":104}},"type":"cond-expr","locations":[{"start":{"line":135,"column":82},"end":{"line":135,"column":94}},{"start":{"line":135,"column":94},"end":{"line":135,"column":104}}],"line":135},"8":{"loc":{"start":{"line":143,"column":4},"end":{"line":143,"column":null}},"type":"if","locations":[{"start":{"line":143,"column":4},"end":{"line":143,"column":null}},{"start":{},"end":{}}],"line":143},"9":{"loc":{"start":{"line":143,"column":8},"end":{"line":143,"column":74}},"type":"binary-expr","locations":[{"start":{"line":143,"column":8},"end":{"line":143,"column":25}},{"start":{"line":143,"column":25},"end":{"line":143,"column":74}}],"line":143},"10":{"loc":{"start":{"line":144,"column":4},"end":{"line":144,"column":null}},"type":"if","locations":[{"start":{"line":144,"column":4},"end":{"line":144,"column":null}},{"start":{},"end":{}}],"line":144},"11":{"loc":{"start":{"line":154,"column":46},"end":{"line":154,"column":89}},"type":"cond-expr","locations":[{"start":{"line":154,"column":67},"end":{"line":154,"column":79}},{"start":{"line":154,"column":79},"end":{"line":154,"column":89}}],"line":154},"12":{"loc":{"start":{"line":183,"column":4},"end":{"line":183,"column":null}},"type":"if","locations":[{"start":{"line":183,"column":4},"end":{"line":183,"column":null}},{"start":{},"end":{}}],"line":183},"13":{"loc":{"start":{"line":184,"column":4},"end":{"line":184,"column":null}},"type":"if","locations":[{"start":{"line":184,"column":4},"end":{"line":184,"column":null}},{"start":{},"end":{}}],"line":184},"14":{"loc":{"start":{"line":184,"column":8},"end":{"line":184,"column":78}},"type":"binary-expr","locations":[{"start":{"line":184,"column":8},"end":{"line":184,"column":28}},{"start":{"line":184,"column":28},"end":{"line":184,"column":78}}],"line":184},"15":{"loc":{"start":{"line":185,"column":4},"end":{"line":185,"column":null}},"type":"if","locations":[{"start":{"line":185,"column":4},"end":{"line":185,"column":null}},{"start":{},"end":{}}],"line":185},"16":{"loc":{"start":{"line":209,"column":21},"end":{"line":209,"column":null}},"type":"cond-expr","locations":[{"start":{"line":209,"column":40},"end":{"line":209,"column":74}},{"start":{"line":209,"column":74},"end":{"line":209,"column":null}}],"line":209},"17":{"loc":{"start":{"line":212,"column":27},"end":{"line":212,"column":null}},"type":"cond-expr","locations":[{"start":{"line":212,"column":54},"end":{"line":212,"column":96}},{"start":{"line":212,"column":96},"end":{"line":212,"column":null}}],"line":212},"18":{"loc":{"start":{"line":213,"column":21},"end":{"line":213,"column":null}},"type":"binary-expr","locations":[{"start":{"line":213,"column":21},"end":{"line":213,"column":39}},{"start":{"line":213,"column":39},"end":{"line":213,"column":58}},{"start":{"line":213,"column":58},"end":{"line":213,"column":83}},{"start":{"line":213,"column":83},"end":{"line":213,"column":null}}],"line":213},"19":{"loc":{"start":{"line":214,"column":19},"end":{"line":214,"column":null}},"type":"cond-expr","locations":[{"start":{"line":214,"column":28},"end":{"line":214,"column":51}},{"start":{"line":214,"column":51},"end":{"line":214,"column":null}}],"line":214},"20":{"loc":{"start":{"line":217,"column":21},"end":{"line":217,"column":63}},"type":"binary-expr","locations":[{"start":{"line":217,"column":21},"end":{"line":217,"column":52}},{"start":{"line":217,"column":52},"end":{"line":217,"column":63}}],"line":217},"21":{"loc":{"start":{"line":218,"column":16},"end":{"line":218,"column":null}},"type":"binary-expr","locations":[{"start":{"line":218,"column":16},"end":{"line":218,"column":45}},{"start":{"line":218,"column":45},"end":{"line":218,"column":null}}],"line":218},"22":{"loc":{"start":{"line":220,"column":14},"end":{"line":220,"column":null}},"type":"binary-expr","locations":[{"start":{"line":220,"column":14},"end":{"line":220,"column":28}},{"start":{"line":220,"column":28},"end":{"line":220,"column":null}}],"line":220},"23":{"loc":{"start":{"line":221,"column":15},"end":{"line":221,"column":null}},"type":"cond-expr","locations":[{"start":{"line":221,"column":33},"end":{"line":221,"column":73}},{"start":{"line":221,"column":73},"end":{"line":221,"column":null}}],"line":221},"24":{"loc":{"start":{"line":221,"column":33},"end":{"line":221,"column":73}},"type":"binary-expr","locations":[{"start":{"line":221,"column":33},"end":{"line":221,"column":65}},{"start":{"line":221,"column":65},"end":{"line":221,"column":73}}],"line":221},"25":{"loc":{"start":{"line":222,"column":19},"end":{"line":222,"column":null}},"type":"binary-expr","locations":[{"start":{"line":222,"column":19},"end":{"line":222,"column":39}},{"start":{"line":222,"column":39},"end":{"line":222,"column":null}}],"line":222},"26":{"loc":{"start":{"line":225,"column":18},"end":{"line":225,"column":null}},"type":"binary-expr","locations":[{"start":{"line":225,"column":18},"end":{"line":225,"column":44}},{"start":{"line":225,"column":44},"end":{"line":225,"column":null}}],"line":225},"27":{"loc":{"start":{"line":226,"column":17},"end":{"line":226,"column":null}},"type":"binary-expr","locations":[{"start":{"line":226,"column":17},"end":{"line":226,"column":35}},{"start":{"line":226,"column":35},"end":{"line":226,"column":null}}],"line":226},"28":{"loc":{"start":{"line":228,"column":17},"end":{"line":228,"column":36}},"type":"binary-expr","locations":[{"start":{"line":228,"column":17},"end":{"line":228,"column":34}},{"start":{"line":228,"column":34},"end":{"line":228,"column":36}}],"line":228},"29":{"loc":{"start":{"line":228,"column":50},"end":{"line":228,"column":73}},"type":"binary-expr","locations":[{"start":{"line":228,"column":50},"end":{"line":228,"column":71}},{"start":{"line":228,"column":71},"end":{"line":228,"column":73}}],"line":228},"30":{"loc":{"start":{"line":229,"column":20},"end":{"line":229,"column":null}},"type":"binary-expr","locations":[{"start":{"line":229,"column":20},"end":{"line":229,"column":36}},{"start":{"line":229,"column":36},"end":{"line":229,"column":null}}],"line":229}},"s":{"0":2,"1":2,"2":13,"3":13,"4":13,"5":13,"6":13,"7":13,"8":13,"9":13,"10":0,"11":2,"12":2,"13":2,"14":5,"15":0,"16":5,"17":5,"18":5,"19":5,"20":5,"21":7,"22":1,"23":1,"24":6,"25":6,"26":6,"27":5,"28":7,"29":7,"30":0,"31":7,"32":6,"33":1,"34":7,"35":2,"36":4,"37":4,"38":4,"39":20,"40":4,"41":1,"42":4,"43":4,"44":4,"45":1,"46":5,"47":1,"48":1,"49":1,"50":2,"51":2,"52":10,"53":10,"54":1,"55":5,"56":14,"57":1,"58":13,"59":2,"60":11,"61":11,"62":11,"63":22,"64":22,"65":20,"66":20,"67":11,"68":1,"69":1,"70":11,"71":11,"72":11,"73":11,"74":11,"75":18,"76":3,"77":15,"78":2,"79":13,"80":2,"81":11,"82":11,"83":11,"84":11,"85":11,"86":11,"87":11,"88":11,"89":14,"90":13,"91":13,"92":13,"93":49,"94":13,"95":26,"96":13,"97":1,"98":13,"99":1,"100":13,"101":65,"102":65,"103":65,"104":65,"105":65,"106":65,"107":2},"f":{"0":13,"1":0,"2":2,"3":5,"4":7,"5":7,"6":20,"7":1,"8":1,"9":2,"10":10,"11":1,"12":14,"13":11,"14":22,"15":1,"16":1,"17":18,"18":11,"19":14,"20":13,"21":49,"22":26,"23":1,"24":1,"25":65,"26":2},"b":{"0":[0,5],"1":[1,6],"2":[7,6],"3":[6,0],"4":[0,7],"5":[6,1],"6":[1,0],"7":[5,0],"8":[1,13],"9":[14,1],"10":[2,11],"11":[20,0],"12":[3,15],"13":[2,13],"14":[15,2],"15":[2,11],"16":[24,41],"17":[12,53],"18":[65,52,40,28],"19":[37,28],"20":[65,39],"21":[65,0],"22":[65,28],"23":[1,64],"24":[1,0],"25":[65,41],"26":[65,53],"27":[65,16],"28":[65,16],"29":[2,1],"30":[65,0]},"meta":{"lastBranch":31,"lastFunction":27,"lastStatement":108,"seen":{"s:6:24:6:Infinity":0,"s:13:22:13:Infinity":1,"s:31:43:31:Infinity":2,"s:32:55:32:Infinity":3,"s:33:66:33:Infinity":4,"s:34:54:34:Infinity":5,"s:36:46:36:Infinity":6,"s:37:25:37:Infinity":7,"s:39:28:39:Infinity":8,"f:41:2:41:14":0,"s:41:22:41:38":9,"f:44:6:44:28":1,"s:45:4:45:Infinity":10,"f:49:2:49:21":2,"s:50:4:50:Infinity":11,"s:51:4:51:Infinity":12,"s:52:4:52:Infinity":13,"f:61:8:61:35":3,"b:62:4:62:Infinity:undefined:undefined:undefined:undefined":0,"s:62:4:62:Infinity":14,"s:62:27:62:Infinity":15,"s:63:4:63:Infinity":16,"s:64:4:98:Infinity":17,"s:65:71:65:Infinity":18,"s:66:48:66:Infinity":19,"s:67:12:74:Infinity":20,"f:67:12:67:21":4,"b:68:8:71:Infinity:undefined:undefined:undefined:undefined":1,"s:68:8:71:Infinity":21,"b:68:12:68:33:68:33:68:57":2,"s:69:10:69:Infinity":22,"s:70:10:70:Infinity":23,"s:72:23:72:Infinity":24,"b:73:8:73:Infinity:undefined:undefined:undefined:undefined":3,"s:73:8:73:Infinity":25,"s:73:28:73:Infinity":26,"s:76:6:82:Infinity":27,"f:76:80:76:84":5,"s:77:22:77:Infinity":28,"b:78:8:78:Infinity:undefined:undefined:undefined:undefined":4,"s:78:8:78:Infinity":29,"s:78:30:78:Infinity":30,"b:79:8:80:Infinity:80:13:80:Infinity":5,"s:79:8:80:Infinity":31,"s:79:20:79:Infinity":32,"s:80:13:80:Infinity":33,"s:81:8:81:Infinity":34,"s:81:53:81:Infinity":35,"s:84:18:84:Infinity":36,"s:85:21:85:Infinity":37,"s:86:18:86:Infinity":38,"f:86:33:86:38":6,"s:86:44:86:60":39,"s:88:6:88:Infinity":40,"s:88:30:88:Infinity":41,"s:89:6:89:Infinity":42,"s:90:6:90:Infinity":43,"s:91:6:91:Infinity":44,"s:93:6:95:Infinity":45,"b:94:62:94:74:94:74:94:84":6,"s:97:6:97:Infinity":46,"f:107:2:107:17":7,"s:108:4:108:Infinity":47,"s:109:4:109:Infinity":48,"f:109:4:109:17":8,"s:109:17:109:Infinity":49,"f:119:8:119:41":9,"s:120:19:126:Infinity":50,"s:127:4:139:Infinity":51,"f:128:17:128:24":10,"s:129:8:137:Infinity":52,"s:130:10:132:Infinity":53,"f:130:67:130:76":11,"s:131:12:131:Infinity":54,"s:134:10:136:Infinity":55,"b:135:82:135:94:135:94:135:104":7,"f:142:8:142:45":12,"b:143:4:143:Infinity:undefined:undefined:undefined:undefined":8,"s:143:4:143:Infinity":56,"b:143:8:143:25:143:25:143:74":9,"s:143:74:143:Infinity":57,"b:144:4:144:Infinity:undefined:undefined:undefined:undefined":10,"s:144:4:144:Infinity":58,"s:144:26:144:Infinity":59,"s:145:4:178:Infinity":60,"f:145:24:145:36":13,"s:146:6:177:Infinity":61,"s:150:25:157:Infinity":62,"f:150:25:150:35":14,"s:151:10:156:Infinity":63,"s:152:12:152:Infinity":64,"s:154:12:154:Infinity":65,"b:154:67:154:79:154:79:154:89":11,"s:155:12:155:Infinity":66,"s:158:68:164:Infinity":67,"f:162:19:162:50":15,"s:162:56:162:107":68,"f:163:19:163:50":16,"s:163:56:163:107":69,"s:165:37:172:Infinity":70,"s:173:8:173:Infinity":71,"s:174:8:174:Infinity":72,"s:176:8:176:Infinity":73,"s:179:4:179:Infinity":74,"f:182:8:182:37":17,"b:183:4:183:Infinity:undefined:undefined:undefined:undefined":12,"s:183:4:183:Infinity":75,"s:183:19:183:Infinity":76,"b:184:4:184:Infinity:undefined:undefined:undefined:undefined":13,"s:184:4:184:Infinity":77,"b:184:8:184:28:184:28:184:78":14,"s:184:78:184:Infinity":78,"b:185:4:185:Infinity:undefined:undefined:undefined:undefined":15,"s:185:4:185:Infinity":79,"s:185:29:185:Infinity":80,"s:186:4:195:Infinity":81,"f:186:27:186:39":18,"s:187:6:194:Infinity":82,"s:188:20:188:Infinity":83,"s:189:23:189:Infinity":84,"s:190:8:190:Infinity":85,"s:191:8:191:Infinity":86,"s:193:8:193:Infinity":87,"s:196:4:196:Infinity":88,"f:199:8:199:42":19,"s:200:27:200:Infinity":89,"s:201:21:201:Infinity":90,"f:201:40:201:45":20,"s:201:51:201:65":91,"s:202:23:202:Infinity":92,"f:202:45:202:50":21,"s:202:56:202:72":93,"s:203:23:203:Infinity":94,"f:203:44:203:49":22,"s:203:55:203:64":95,"s:204:22:204:Infinity":96,"f:204:42:204:47":23,"s:204:53:204:73":97,"s:205:22:205:Infinity":98,"f:205:42:205:47":24,"s:205:53:205:73":99,"s:207:4:231:Infinity":100,"f:207:18:207:23":25,"s:208:20:208:Infinity":101,"s:209:21:209:Infinity":102,"b:209:40:209:74:209:74:209:Infinity":16,"s:212:27:212:Infinity":103,"b:212:54:212:96:212:96:212:Infinity":17,"s:213:21:213:Infinity":104,"b:213:21:213:39:213:39:213:58:213:58:213:83:213:83:213:Infinity":18,"s:214:19:214:Infinity":105,"b:214:28:214:51:214:51:214:Infinity":19,"s:215:6:230:Infinity":106,"b:217:21:217:52:217:52:217:63":20,"b:218:16:218:45:218:45:218:Infinity":21,"b:220:14:220:28:220:28:220:Infinity":22,"b:221:33:221:73:221:73:221:Infinity":23,"b:221:33:221:65:221:65:221:73":24,"b:222:19:222:39:222:39:222:Infinity":25,"b:225:18:225:44:225:44:225:Infinity":26,"b:226:17:226:35:226:35:226:Infinity":27,"b:228:17:228:34:228:34:228:36":28,"f:228:38:228:43":26,"s:228:50:228:73":107,"b:228:50:228:71:228:71:228:73":29,"b:229:20:229:36:229:36:229:Infinity":30},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/http.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/http.ts","statementMap":{"0":{"start":{"line":5,"column":27},"end":{"line":5,"column":null}},"1":{"start":{"line":6,"column":28},"end":{"line":6,"column":null}},"2":{"start":{"line":8,"column":25},"end":{"line":8,"column":null}},"3":{"start":{"line":11,"column":2},"end":{"line":11,"column":null}},"4":{"start":{"line":11,"column":28},"end":{"line":11,"column":45}},"5":{"start":{"line":26,"column":22},"end":{"line":26,"column":40}},"6":{"start":{"line":29,"column":4},"end":{"line":29,"column":null}},"7":{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},"8":{"start":{"line":33,"column":34},"end":{"line":33,"column":null}},"9":{"start":{"line":34,"column":4},"end":{"line":34,"column":null}},"10":{"start":{"line":34,"column":27},"end":{"line":34,"column":null}},"11":{"start":{"line":35,"column":4},"end":{"line":35,"column":null}},"12":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"13":{"start":{"line":43,"column":4},"end":{"line":43,"column":null}},"14":{"start":{"line":44,"column":16},"end":{"line":52,"column":null}},"15":{"start":{"line":53,"column":4},"end":{"line":59,"column":null}},"16":{"start":{"line":54,"column":19},"end":{"line":54,"column":null}},"17":{"start":{"line":54,"column":48},"end":{"line":54,"column":50}},"18":{"start":{"line":55,"column":18},"end":{"line":55,"column":null}},"19":{"start":{"line":56,"column":6},"end":{"line":56,"column":null}},"20":{"start":{"line":57,"column":6},"end":{"line":57,"column":null}},"21":{"start":{"line":58,"column":6},"end":{"line":58,"column":null}},"22":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"23":{"start":{"line":64,"column":10},"end":{"line":64,"column":null}},"24":{"start":{"line":65,"column":4},"end":{"line":87,"column":null}},"25":{"start":{"line":66,"column":6},"end":{"line":66,"column":null}},"26":{"start":{"line":68,"column":41},"end":{"line":68,"column":null}},"27":{"start":{"line":69,"column":23},"end":{"line":69,"column":null}},"28":{"start":{"line":70,"column":22},"end":{"line":70,"column":null}},"29":{"start":{"line":71,"column":24},"end":{"line":71,"column":null}},"30":{"start":{"line":72,"column":6},"end":{"line":75,"column":null}},"31":{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},"32":{"start":{"line":73,"column":22},"end":{"line":73,"column":null}},"33":{"start":{"line":74,"column":8},"end":{"line":74,"column":null}},"34":{"start":{"line":76,"column":20},"end":{"line":76,"column":null}},"35":{"start":{"line":77,"column":6},"end":{"line":77,"column":null}},"36":{"start":{"line":78,"column":6},"end":{"line":78,"column":null}},"37":{"start":{"line":79,"column":6},"end":{"line":86,"column":null}},"38":{"start":{"line":80,"column":8},"end":{"line":80,"column":null}},"39":{"start":{"line":82,"column":8},"end":{"line":84,"column":null}},"40":{"start":{"line":83,"column":10},"end":{"line":83,"column":null}},"41":{"start":{"line":85,"column":8},"end":{"line":85,"column":null}},"42":{"start":{"line":91,"column":4},"end":{"line":91,"column":null}},"43":{"start":{"line":100,"column":20},"end":{"line":117,"column":null}},"44":{"start":{"line":101,"column":18},"end":{"line":105,"column":null}},"45":{"start":{"line":106,"column":6},"end":{"line":111,"column":null}},"46":{"start":{"line":107,"column":21},"end":{"line":107,"column":null}},"47":{"start":{"line":107,"column":50},"end":{"line":107,"column":52}},"48":{"start":{"line":108,"column":20},"end":{"line":108,"column":null}},"49":{"start":{"line":109,"column":8},"end":{"line":109,"column":null}},"50":{"start":{"line":110,"column":8},"end":{"line":110,"column":null}},"51":{"start":{"line":112,"column":21},"end":{"line":112,"column":null}},"52":{"start":{"line":113,"column":6},"end":{"line":115,"column":null}},"53":{"start":{"line":114,"column":8},"end":{"line":114,"column":null}},"54":{"start":{"line":116,"column":6},"end":{"line":116,"column":null}},"55":{"start":{"line":118,"column":4},"end":{"line":118,"column":null}},"56":{"start":{"line":119,"column":4},"end":{"line":127,"column":null}},"57":{"start":{"line":120,"column":6},"end":{"line":120,"column":null}},"58":{"start":{"line":122,"column":41},"end":{"line":122,"column":null}},"59":{"start":{"line":123,"column":23},"end":{"line":123,"column":null}},"60":{"start":{"line":124,"column":6},"end":{"line":124,"column":null}},"61":{"start":{"line":124,"column":84},"end":{"line":124,"column":null}},"62":{"start":{"line":125,"column":6},"end":{"line":125,"column":null}},"63":{"start":{"line":126,"column":6},"end":{"line":126,"column":null}},"64":{"start":{"line":131,"column":4},"end":{"line":131,"column":null}},"65":{"start":{"line":135,"column":4},"end":{"line":140,"column":null}},"66":{"start":{"line":145,"column":4},"end":{"line":150,"column":null}},"67":{"start":{"line":155,"column":4},"end":{"line":155,"column":null}},"68":{"start":{"line":159,"column":4},"end":{"line":161,"column":null}},"69":{"start":{"line":160,"column":6},"end":{"line":160,"column":null}},"70":{"start":{"line":162,"column":4},"end":{"line":162,"column":null}},"71":{"start":{"line":167,"column":18},"end":{"line":167,"column":null}},"72":{"start":{"line":168,"column":17},"end":{"line":168,"column":null}},"73":{"start":{"line":169,"column":4},"end":{"line":169,"column":null}},"74":{"start":{"line":174,"column":18},"end":{"line":174,"column":null}},"75":{"start":{"line":175,"column":17},"end":{"line":180,"column":null}},"76":{"start":{"line":181,"column":4},"end":{"line":181,"column":null}}},"fnMap":{"0":{"name":"sleep","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":15}},"loc":{"start":{"line":10,"column":42},"end":{"line":12,"column":null}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":11,"column":13},"end":{"line":11,"column":22}},"loc":{"start":{"line":11,"column":28},"end":{"line":11,"column":45}},"line":11},"2":{"name":"constructor","decl":{"start":{"line":26,"column":2},"end":{"line":26,"column":14}},"loc":{"start":{"line":26,"column":40},"end":{"line":26,"column":null}},"line":26},"3":{"name":"supervisorAvailable","decl":{"start":{"line":28,"column":6},"end":{"line":28,"column":37}},"loc":{"start":{"line":28,"column":37},"end":{"line":30,"column":null}},"line":28},"4":{"name":"coreBase","decl":{"start":{"line":32,"column":2},"end":{"line":32,"column":10}},"loc":{"start":{"line":32,"column":29},"end":{"line":36,"column":null}},"line":32},"5":{"name":"coreToken","decl":{"start":{"line":38,"column":2},"end":{"line":38,"column":10}},"loc":{"start":{"line":38,"column":30},"end":{"line":40,"column":null}},"line":38},"6":{"name":"attempt","decl":{"start":{"line":42,"column":16},"end":{"line":42,"column":24}},"loc":{"start":{"line":42,"column":102},"end":{"line":61,"column":null}},"line":42},"7":{"name":"(anonymous_7)","decl":{"start":{"line":54,"column":36},"end":{"line":54,"column":48}},"loc":{"start":{"line":54,"column":48},"end":{"line":54,"column":50}},"line":54},"8":{"name":"request","decl":{"start":{"line":63,"column":16},"end":{"line":63,"column":24}},"loc":{"start":{"line":63,"column":102},"end":{"line":88,"column":null}},"line":63},"9":{"name":"coreGet","decl":{"start":{"line":90,"column":2},"end":{"line":90,"column":10}},"loc":{"start":{"line":90,"column":38},"end":{"line":92,"column":null}},"line":90},"10":{"name":"coreGetBinary","decl":{"start":{"line":99,"column":8},"end":{"line":99,"column":22}},"loc":{"start":{"line":99,"column":104},"end":{"line":128,"column":null}},"line":99},"11":{"name":"(anonymous_11)","decl":{"start":{"line":100,"column":20},"end":{"line":100,"column":82}},"loc":{"start":{"line":100,"column":82},"end":{"line":117,"column":null}},"line":100},"12":{"name":"(anonymous_12)","decl":{"start":{"line":107,"column":38},"end":{"line":107,"column":50}},"loc":{"start":{"line":107,"column":50},"end":{"line":107,"column":52}},"line":107},"13":{"name":"coreGetText","decl":{"start":{"line":130,"column":2},"end":{"line":130,"column":14}},"loc":{"start":{"line":130,"column":45},"end":{"line":132,"column":null}},"line":130},"14":{"name":"corePostText","decl":{"start":{"line":134,"column":2},"end":{"line":134,"column":15}},"loc":{"start":{"line":134,"column":61},"end":{"line":141,"column":null}},"line":134},"15":{"name":"corePost","decl":{"start":{"line":144,"column":2},"end":{"line":144,"column":11}},"loc":{"start":{"line":144,"column":54},"end":{"line":151,"column":null}},"line":144},"16":{"name":"coreDelete","decl":{"start":{"line":154,"column":2},"end":{"line":154,"column":13}},"loc":{"start":{"line":154,"column":41},"end":{"line":156,"column":null}},"line":154},"17":{"name":"requireSupervisor","decl":{"start":{"line":158,"column":2},"end":{"line":158,"column":10}},"loc":{"start":{"line":158,"column":38},"end":{"line":163,"column":null}},"line":158},"18":{"name":"supervisorGet","decl":{"start":{"line":166,"column":8},"end":{"line":166,"column":22}},"loc":{"start":{"line":166,"column":50},"end":{"line":170,"column":null}},"line":166},"19":{"name":"supervisorPost","decl":{"start":{"line":173,"column":8},"end":{"line":173,"column":23}},"loc":{"start":{"line":173,"column":66},"end":{"line":182,"column":null}},"line":173}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},{"start":{},"end":{}}],"line":33},"1":{"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},"2":{"loc":{"start":{"line":39,"column":11},"end":{"line":39,"column":null}},"type":"binary-expr","locations":[{"start":{"line":39,"column":11},"end":{"line":39,"column":39}},{"start":{"line":39,"column":39},"end":{"line":39,"column":62}},{"start":{"line":39,"column":62},"end":{"line":39,"column":null}}],"line":39},"3":{"loc":{"start":{"line":43,"column":22},"end":{"line":43,"column":43}},"type":"binary-expr","locations":[{"start":{"line":43,"column":22},"end":{"line":43,"column":37}},{"start":{"line":43,"column":37},"end":{"line":43,"column":43}}],"line":43},"4":{"loc":{"start":{"line":50,"column":12},"end":{"line":50,"column":null}},"type":"binary-expr","locations":[{"start":{"line":50,"column":12},"end":{"line":50,"column":28}},{"start":{"line":50,"column":28},"end":{"line":50,"column":null}}],"line":50},"5":{"loc":{"start":{"line":53,"column":4},"end":{"line":59,"column":null}},"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":59,"column":null}},{"start":{},"end":{}}],"line":53},"6":{"loc":{"start":{"line":55,"column":51},"end":{"line":55,"column":89}},"type":"binary-expr","locations":[{"start":{"line":55,"column":51},"end":{"line":55,"column":73}},{"start":{"line":55,"column":73},"end":{"line":55,"column":89}}],"line":55},"7":{"loc":{"start":{"line":57,"column":34},"end":{"line":57,"column":null}},"type":"binary-expr","locations":[{"start":{"line":57,"column":34},"end":{"line":57,"column":83}},{"start":{"line":57,"column":83},"end":{"line":57,"column":null}}],"line":57},"8":{"loc":{"start":{"line":60,"column":11},"end":{"line":60,"column":null}},"type":"cond-expr","locations":[{"start":{"line":60,"column":20},"end":{"line":60,"column":33}},{"start":{"line":60,"column":33},"end":{"line":60,"column":null}}],"line":60},"9":{"loc":{"start":{"line":64,"column":24},"end":{"line":64,"column":50}},"type":"binary-expr","locations":[{"start":{"line":64,"column":24},"end":{"line":64,"column":39}},{"start":{"line":64,"column":39},"end":{"line":64,"column":50}}],"line":64},"10":{"loc":{"start":{"line":69,"column":23},"end":{"line":69,"column":null}},"type":"binary-expr","locations":[{"start":{"line":69,"column":23},"end":{"line":69,"column":53}},{"start":{"line":69,"column":53},"end":{"line":69,"column":null}}],"line":69},"11":{"loc":{"start":{"line":71,"column":24},"end":{"line":71,"column":null}},"type":"binary-expr","locations":[{"start":{"line":71,"column":24},"end":{"line":71,"column":39}},{"start":{"line":71,"column":39},"end":{"line":71,"column":51}},{"start":{"line":71,"column":51},"end":{"line":71,"column":62}},{"start":{"line":71,"column":62},"end":{"line":71,"column":null}}],"line":71},"12":{"loc":{"start":{"line":72,"column":6},"end":{"line":75,"column":null}},"type":"if","locations":[{"start":{"line":72,"column":6},"end":{"line":75,"column":null}},{"start":{},"end":{}}],"line":72},"13":{"loc":{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},"type":"if","locations":[{"start":{"line":73,"column":8},"end":{"line":73,"column":null}},{"start":{},"end":{}}],"line":73},"14":{"loc":{"start":{"line":76,"column":29},"end":{"line":76,"column":69}},"type":"binary-expr","locations":[{"start":{"line":76,"column":29},"end":{"line":76,"column":48}},{"start":{"line":76,"column":48},"end":{"line":76,"column":69}}],"line":76},"15":{"loc":{"start":{"line":77,"column":51},"end":{"line":77,"column":107}},"type":"cond-expr","locations":[{"start":{"line":77,"column":62},"end":{"line":77,"column":74}},{"start":{"line":77,"column":74},"end":{"line":77,"column":107}}],"line":77},"16":{"loc":{"start":{"line":77,"column":83},"end":{"line":77,"column":107}},"type":"binary-expr","locations":[{"start":{"line":77,"column":83},"end":{"line":77,"column":93}},{"start":{"line":77,"column":93},"end":{"line":77,"column":107}}],"line":77},"17":{"loc":{"start":{"line":82,"column":8},"end":{"line":84,"column":null}},"type":"if","locations":[{"start":{"line":82,"column":8},"end":{"line":84,"column":null}},{"start":{},"end":{}}],"line":82},"18":{"loc":{"start":{"line":82,"column":12},"end":{"line":82,"column":70}},"type":"binary-expr","locations":[{"start":{"line":82,"column":12},"end":{"line":82,"column":43}},{"start":{"line":82,"column":43},"end":{"line":82,"column":70}}],"line":82},"19":{"loc":{"start":{"line":106,"column":6},"end":{"line":111,"column":null}},"type":"if","locations":[{"start":{"line":106,"column":6},"end":{"line":111,"column":null}},{"start":{},"end":{}}],"line":106},"20":{"loc":{"start":{"line":108,"column":53},"end":{"line":108,"column":91}},"type":"binary-expr","locations":[{"start":{"line":108,"column":53},"end":{"line":108,"column":75}},{"start":{"line":108,"column":75},"end":{"line":108,"column":91}}],"line":108},"21":{"loc":{"start":{"line":113,"column":6},"end":{"line":115,"column":null}},"type":"if","locations":[{"start":{"line":113,"column":6},"end":{"line":115,"column":null}},{"start":{},"end":{}}],"line":113},"22":{"loc":{"start":{"line":116,"column":36},"end":{"line":116,"column":84}},"type":"binary-expr","locations":[{"start":{"line":116,"column":36},"end":{"line":116,"column":71}},{"start":{"line":116,"column":71},"end":{"line":116,"column":84}}],"line":116},"23":{"loc":{"start":{"line":123,"column":23},"end":{"line":123,"column":null}},"type":"binary-expr","locations":[{"start":{"line":123,"column":23},"end":{"line":123,"column":53}},{"start":{"line":123,"column":53},"end":{"line":123,"column":null}}],"line":123},"24":{"loc":{"start":{"line":124,"column":6},"end":{"line":124,"column":null}},"type":"if","locations":[{"start":{"line":124,"column":6},"end":{"line":124,"column":null}},{"start":{},"end":{}}],"line":124},"25":{"loc":{"start":{"line":124,"column":12},"end":{"line":124,"column":84}},"type":"binary-expr","locations":[{"start":{"line":124,"column":12},"end":{"line":124,"column":24}},{"start":{"line":124,"column":24},"end":{"line":124,"column":48}},{"start":{"line":124,"column":48},"end":{"line":124,"column":84}}],"line":124},"26":{"loc":{"start":{"line":124,"column":69},"end":{"line":124,"column":80}},"type":"binary-expr","locations":[{"start":{"line":124,"column":69},"end":{"line":124,"column":79}},{"start":{"line":124,"column":79},"end":{"line":124,"column":80}}],"line":124},"27":{"loc":{"start":{"line":159,"column":4},"end":{"line":161,"column":null}},"type":"if","locations":[{"start":{"line":159,"column":4},"end":{"line":161,"column":null}},{"start":{},"end":{}}],"line":159},"28":{"loc":{"start":{"line":169,"column":11},"end":{"line":169,"column":null}},"type":"binary-expr","locations":[{"start":{"line":169,"column":11},"end":{"line":169,"column":25}},{"start":{"line":169,"column":25},"end":{"line":169,"column":null}}],"line":169},"29":{"loc":{"start":{"line":181,"column":11},"end":{"line":181,"column":null}},"type":"binary-expr","locations":[{"start":{"line":181,"column":11},"end":{"line":181,"column":25}},{"start":{"line":181,"column":25},"end":{"line":181,"column":null}}],"line":181}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":12,"6":1,"7":9,"8":1,"9":8,"10":8,"11":0,"12":9,"13":13,"14":13,"15":11,"16":4,"17":0,"18":4,"19":4,"20":4,"21":4,"22":7,"23":11,"24":11,"25":11,"26":5,"27":5,"28":5,"29":5,"30":5,"31":3,"32":0,"33":3,"34":2,"35":5,"36":5,"37":2,"38":2,"39":1,"40":1,"41":0,"42":6,"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":2,"66":0,"67":1,"68":4,"69":2,"70":2,"71":2,"72":2,"73":1,"74":2,"75":2,"76":1},"f":{"0":2,"1":2,"2":12,"3":1,"4":9,"5":9,"6":13,"7":0,"8":11,"9":6,"10":0,"11":0,"12":0,"13":0,"14":2,"15":0,"16":1,"17":4,"18":2,"19":2},"b":{"0":[1,8],"1":[8,0],"2":[9,8,0],"3":[13,0],"4":[13,13],"5":[4,7],"6":[4,0],"7":[4,4],"8":[1,6],"9":[11,0],"10":[5,4],"11":[5,3,2,2],"12":[3,2],"13":[0,3],"14":[2,2],"15":[1,1],"16":[1,0],"17":[1,0],"18":[1,0],"19":[0,0],"20":[0,0],"21":[0,0],"22":[0,0],"23":[0,0],"24":[0,0],"25":[0,0,0],"26":[0,0],"27":[2,2],"28":[1,0],"29":[1,1]},"meta":{"lastBranch":30,"lastFunction":20,"lastStatement":77,"seen":{"s:5:27:5:Infinity":0,"s:6:28:6:Infinity":1,"s:8:25:8:Infinity":2,"f:10:9:10:15":0,"s:11:2:11:Infinity":3,"f:11:13:11:22":1,"s:11:28:11:45":4,"f:26:2:26:14":2,"s:26:22:26:40":5,"f:28:6:28:37":3,"s:29:4:29:Infinity":6,"f:32:2:32:10":4,"b:33:4:33:Infinity:undefined:undefined:undefined:undefined":0,"s:33:4:33:Infinity":7,"s:33:34:33:Infinity":8,"b:34:4:34:Infinity:undefined:undefined:undefined:undefined":1,"s:34:4:34:Infinity":9,"s:34:27:34:Infinity":10,"s:35:4:35:Infinity":11,"f:38:2:38:10":5,"s:39:4:39:Infinity":12,"b:39:11:39:39:39:39:39:62:39:62:39:Infinity":2,"f:42:16:42:24":6,"s:43:4:43:Infinity":13,"b:43:22:43:37:43:37:43:43":3,"s:44:16:52:Infinity":14,"b:50:12:50:28:50:28:50:Infinity":4,"b:53:4:59:Infinity:undefined:undefined:undefined:undefined":5,"s:53:4:59:Infinity":15,"s:54:19:54:Infinity":16,"f:54:36:54:48":7,"s:54:48:54:50":17,"s:55:18:55:Infinity":18,"b:55:51:55:73:55:73:55:89":6,"s:56:6:56:Infinity":19,"s:57:6:57:Infinity":20,"b:57:34:57:83:57:83:57:Infinity":7,"s:58:6:58:Infinity":21,"s:60:4:60:Infinity":22,"b:60:20:60:33:60:33:60:Infinity":8,"f:63:16:63:24":8,"s:64:10:64:Infinity":23,"b:64:24:64:39:64:39:64:50":9,"s:65:4:87:Infinity":24,"s:66:6:66:Infinity":25,"s:68:41:68:Infinity":26,"s:69:23:69:Infinity":27,"b:69:23:69:53:69:53:69:Infinity":10,"s:70:22:70:Infinity":28,"s:71:24:71:Infinity":29,"b:71:24:71:39:71:39:71:51:71:51:71:62:71:62:71:Infinity":11,"b:72:6:75:Infinity:undefined:undefined:undefined:undefined":12,"s:72:6:75:Infinity":30,"b:73:8:73:Infinity:undefined:undefined:undefined:undefined":13,"s:73:8:73:Infinity":31,"s:73:22:73:Infinity":32,"s:74:8:74:Infinity":33,"s:76:20:76:Infinity":34,"b:76:29:76:48:76:48:76:69":14,"s:77:6:77:Infinity":35,"b:77:62:77:74:77:74:77:107":15,"b:77:83:77:93:77:93:77:107":16,"s:78:6:78:Infinity":36,"s:79:6:86:Infinity":37,"s:80:8:80:Infinity":38,"b:82:8:84:Infinity:undefined:undefined:undefined:undefined":17,"s:82:8:84:Infinity":39,"b:82:12:82:43:82:43:82:70":18,"s:83:10:83:Infinity":40,"s:85:8:85:Infinity":41,"f:90:2:90:10":9,"s:91:4:91:Infinity":42,"f:99:8:99:22":10,"s:100:20:117:Infinity":43,"f:100:20:100:82":11,"s:101:18:105:Infinity":44,"b:106:6:111:Infinity:undefined:undefined:undefined:undefined":19,"s:106:6:111:Infinity":45,"s:107:21:107:Infinity":46,"f:107:38:107:50":12,"s:107:50:107:52":47,"s:108:20:108:Infinity":48,"b:108:53:108:75:108:75:108:91":20,"s:109:8:109:Infinity":49,"s:110:8:110:Infinity":50,"s:112:21:112:Infinity":51,"b:113:6:115:Infinity:undefined:undefined:undefined:undefined":21,"s:113:6:115:Infinity":52,"s:114:8:114:Infinity":53,"s:116:6:116:Infinity":54,"b:116:36:116:71:116:71:116:84":22,"s:118:4:118:Infinity":55,"s:119:4:127:Infinity":56,"s:120:6:120:Infinity":57,"s:122:41:122:Infinity":58,"s:123:23:123:Infinity":59,"b:123:23:123:53:123:53:123:Infinity":23,"b:124:6:124:Infinity:undefined:undefined:undefined:undefined":24,"s:124:6:124:Infinity":60,"b:124:12:124:24:124:24:124:48:124:48:124:84":25,"b:124:69:124:79:124:79:124:80":26,"s:124:84:124:Infinity":61,"s:125:6:125:Infinity":62,"s:126:6:126:Infinity":63,"f:130:2:130:14":13,"s:131:4:131:Infinity":64,"f:134:2:134:15":14,"s:135:4:140:Infinity":65,"f:144:2:144:11":15,"s:145:4:150:Infinity":66,"f:154:2:154:13":16,"s:155:4:155:Infinity":67,"f:158:2:158:10":17,"b:159:4:161:Infinity:undefined:undefined:undefined:undefined":27,"s:159:4:161:Infinity":68,"s:160:6:160:Infinity":69,"s:162:4:162:Infinity":70,"f:166:8:166:22":18,"s:167:18:167:Infinity":71,"s:168:17:168:Infinity":72,"s:169:4:169:Infinity":73,"b:169:11:169:25:169:25:169:Infinity":28,"f:173:8:173:23":19,"s:174:18:174:Infinity":74,"s:175:17:180:Infinity":75,"s:181:4:181:Infinity":76,"b:181:11:181:25:181:25:181:Infinity":29},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/schemas.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/schemas.ts","statementMap":{"0":{"start":{"line":9,"column":29},"end":{"line":17,"column":null}},"1":{"start":{"line":19,"column":30},"end":{"line":19,"column":null}},"2":{"start":{"line":21,"column":26},"end":{"line":27,"column":null}},"3":{"start":{"line":29,"column":27},"end":{"line":29,"column":null}},"4":{"start":{"line":34,"column":27},"end":{"line":40,"column":null}},"5":{"start":{"line":42,"column":28},"end":{"line":42,"column":null}},"6":{"start":{"line":44,"column":27},"end":{"line":49,"column":null}},"7":{"start":{"line":51,"column":28},"end":{"line":51,"column":null}},"8":{"start":{"line":53,"column":28},"end":{"line":66,"column":null}},"9":{"start":{"line":68,"column":29},"end":{"line":68,"column":null}},"10":{"start":{"line":70,"column":33},"end":{"line":82,"column":null}},"11":{"start":{"line":84,"column":35},"end":{"line":84,"column":null}},"12":{"start":{"line":87,"column":30},"end":{"line":87,"column":null}},"13":{"start":{"line":91,"column":17},"end":{"line":91,"column":null}},"14":{"start":{"line":92,"column":2},"end":{"line":92,"column":null}},"15":{"start":{"line":92,"column":22},"end":{"line":92,"column":null}},"16":{"start":{"line":93,"column":16},"end":{"line":93,"column":null}},"17":{"start":{"line":94,"column":16},"end":{"line":94,"column":null}},"18":{"start":{"line":95,"column":2},"end":{"line":98,"column":null}}},"fnMap":{"0":{"name":"parseHaPayload","decl":{"start":{"line":90,"column":16},"end":{"line":90,"column":52}},"loc":{"start":{"line":90,"column":108},"end":{"line":99,"column":null}},"line":90}},"branchMap":{"0":{"loc":{"start":{"line":92,"column":2},"end":{"line":92,"column":null}},"type":"if","locations":[{"start":{"line":92,"column":2},"end":{"line":92,"column":null}},{"start":{},"end":{}}],"line":92},"1":{"loc":{"start":{"line":94,"column":16},"end":{"line":94,"column":null}},"type":"cond-expr","locations":[{"start":{"line":94,"column":49},"end":{"line":94,"column":81}},{"start":{"line":94,"column":81},"end":{"line":94,"column":null}}],"line":94},"2":{"loc":{"start":{"line":94,"column":16},"end":{"line":94,"column":49}},"type":"binary-expr","locations":[{"start":{"line":94,"column":16},"end":{"line":94,"column":25}},{"start":{"line":94,"column":25},"end":{"line":94,"column":49}}],"line":94},"3":{"loc":{"start":{"line":96,"column":65},"end":{"line":96,"column":102}},"type":"binary-expr","locations":[{"start":{"line":96,"column":65},"end":{"line":96,"column":83}},{"start":{"line":96,"column":83},"end":{"line":96,"column":102}}],"line":96}},"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":54,"14":54,"15":53,"16":1,"17":1,"18":54},"f":{"0":54},"b":{"0":[53,1],"1":[0,1],"2":[1,1],"3":[54,0]},"meta":{"lastBranch":4,"lastFunction":1,"lastStatement":19,"seen":{"s:9:29:17:Infinity":0,"s:19:30:19:Infinity":1,"s:21:26:27:Infinity":2,"s:29:27:29:Infinity":3,"s:34:27:40:Infinity":4,"s:42:28:42:Infinity":5,"s:44:27:49:Infinity":6,"s:51:28:51:Infinity":7,"s:53:28:66:Infinity":8,"s:68:29:68:Infinity":9,"s:70:33:82:Infinity":10,"s:84:35:84:Infinity":11,"s:87:30:87:Infinity":12,"f:90:16:90:52":0,"s:91:17:91:Infinity":13,"b:92:2:92:Infinity:undefined:undefined:undefined:undefined":0,"s:92:2:92:Infinity":14,"s:92:22:92:Infinity":15,"s:93:16:93:Infinity":16,"s:94:16:94:Infinity":17,"b:94:49:94:81:94:81:94:Infinity":1,"b:94:16:94:25:94:25:94:49":2,"s:95:2:98:Infinity":18,"b:96:65:96:83:96:83:96:102":3},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/ws.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/ha/ws.ts","statementMap":{"0":{"start":{"line":17,"column":25},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":25},"end":{"line":18,"column":null}},"2":{"start":{"line":20,"column":32},"end":{"line":20,"column":null}},"3":{"start":{"line":21,"column":31},"end":{"line":21,"column":null}},"4":{"start":{"line":23,"column":29},"end":{"line":23,"column":null}},"5":{"start":{"line":24,"column":25},"end":{"line":24,"column":null}},"6":{"start":{"line":25,"column":27},"end":{"line":25,"column":null}},"7":{"start":{"line":35,"column":33},"end":{"line":35,"column":null}},"8":{"start":{"line":36,"column":19},"end":{"line":36,"column":null}},"9":{"start":{"line":37,"column":20},"end":{"line":37,"column":null}},"10":{"start":{"line":38,"column":30},"end":{"line":38,"column":null}},"11":{"start":{"line":39,"column":19},"end":{"line":39,"column":null}},"12":{"start":{"line":40,"column":20},"end":{"line":40,"column":null}},"13":{"start":{"line":41,"column":20},"end":{"line":41,"column":null}},"14":{"start":{"line":42,"column":45},"end":{"line":42,"column":null}},"15":{"start":{"line":43,"column":45},"end":{"line":43,"column":null}},"16":{"start":{"line":44,"column":50},"end":{"line":44,"column":null}},"17":{"start":{"line":45,"column":29},"end":{"line":45,"column":null}},"18":{"start":{"line":47,"column":42},"end":{"line":47,"column":null}},"19":{"start":{"line":48,"column":48},"end":{"line":48,"column":null}},"20":{"start":{"line":50,"column":26},"end":{"line":50,"column":null}},"21":{"start":{"line":52,"column":22},"end":{"line":52,"column":40}},"22":{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},"23":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"24":{"start":{"line":65,"column":4},"end":{"line":65,"column":null}},"25":{"start":{"line":69,"column":4},"end":{"line":69,"column":null}},"26":{"start":{"line":69,"column":34},"end":{"line":69,"column":null}},"27":{"start":{"line":70,"column":4},"end":{"line":72,"column":null}},"28":{"start":{"line":71,"column":6},"end":{"line":71,"column":null}},"29":{"start":{"line":73,"column":4},"end":{"line":73,"column":null}},"30":{"start":{"line":77,"column":4},"end":{"line":77,"column":null}},"31":{"start":{"line":81,"column":4},"end":{"line":81,"column":null}},"32":{"start":{"line":81,"column":22},"end":{"line":81,"column":null}},"33":{"start":{"line":83,"column":4},"end":{"line":91,"column":null}},"34":{"start":{"line":84,"column":6},"end":{"line":84,"column":null}},"35":{"start":{"line":88,"column":6},"end":{"line":88,"column":null}},"36":{"start":{"line":89,"column":6},"end":{"line":89,"column":null}},"37":{"start":{"line":90,"column":6},"end":{"line":90,"column":null}},"38":{"start":{"line":92,"column":4},"end":{"line":92,"column":null}},"39":{"start":{"line":93,"column":15},"end":{"line":93,"column":null}},"40":{"start":{"line":94,"column":4},"end":{"line":94,"column":null}},"41":{"start":{"line":99,"column":4},"end":{"line":99,"column":null}},"42":{"start":{"line":99,"column":24},"end":{"line":99,"column":null}},"43":{"start":{"line":100,"column":4},"end":{"line":105,"column":null}},"44":{"start":{"line":101,"column":6},"end":{"line":104,"column":null}},"45":{"start":{"line":102,"column":8},"end":{"line":102,"column":null}},"46":{"start":{"line":103,"column":8},"end":{"line":103,"column":null}},"47":{"start":{"line":107,"column":4},"end":{"line":109,"column":null}},"48":{"start":{"line":108,"column":6},"end":{"line":108,"column":null}},"49":{"start":{"line":108,"column":26},"end":{"line":108,"column":null}},"50":{"start":{"line":110,"column":4},"end":{"line":110,"column":null}},"51":{"start":{"line":110,"column":25},"end":{"line":110,"column":62}},"52":{"start":{"line":111,"column":4},"end":{"line":114,"column":null}},"53":{"start":{"line":112,"column":6},"end":{"line":112,"column":null}},"54":{"start":{"line":118,"column":4},"end":{"line":118,"column":null}},"55":{"start":{"line":119,"column":4},"end":{"line":119,"column":null}},"56":{"start":{"line":119,"column":24},"end":{"line":119,"column":null}},"57":{"start":{"line":120,"column":4},"end":{"line":120,"column":null}},"58":{"start":{"line":120,"column":24},"end":{"line":120,"column":null}},"59":{"start":{"line":121,"column":4},"end":{"line":121,"column":null}},"60":{"start":{"line":121,"column":29},"end":{"line":121,"column":null}},"61":{"start":{"line":122,"column":4},"end":{"line":122,"column":null}},"62":{"start":{"line":123,"column":4},"end":{"line":123,"column":null}},"63":{"start":{"line":124,"column":4},"end":{"line":124,"column":null}},"64":{"start":{"line":125,"column":4},"end":{"line":125,"column":null}},"65":{"start":{"line":134,"column":4},"end":{"line":134,"column":null}},"66":{"start":{"line":135,"column":4},"end":{"line":135,"column":null}},"67":{"start":{"line":148,"column":4},"end":{"line":148,"column":null}},"68":{"start":{"line":149,"column":15},"end":{"line":149,"column":null}},"69":{"start":{"line":150,"column":4},"end":{"line":152,"column":null}},"70":{"start":{"line":151,"column":6},"end":{"line":151,"column":null}},"71":{"start":{"line":153,"column":15},"end":{"line":153,"column":null}},"72":{"start":{"line":154,"column":4},"end":{"line":154,"column":null}},"73":{"start":{"line":156,"column":4},"end":{"line":156,"column":null}},"74":{"start":{"line":157,"column":4},"end":{"line":179,"column":null}},"75":{"start":{"line":158,"column":20},"end":{"line":162,"column":null}},"76":{"start":{"line":159,"column":8},"end":{"line":159,"column":null}},"77":{"start":{"line":160,"column":8},"end":{"line":160,"column":null}},"78":{"start":{"line":161,"column":8},"end":{"line":161,"column":null}},"79":{"start":{"line":163,"column":6},"end":{"line":170,"column":null}},"80":{"start":{"line":164,"column":23},"end":{"line":164,"column":null}},"81":{"start":{"line":166,"column":10},"end":{"line":166,"column":null}},"82":{"start":{"line":167,"column":10},"end":{"line":167,"column":null}},"83":{"start":{"line":171,"column":6},"end":{"line":178,"column":null}},"84":{"start":{"line":172,"column":8},"end":{"line":172,"column":null}},"85":{"start":{"line":174,"column":8},"end":{"line":174,"column":null}},"86":{"start":{"line":175,"column":8},"end":{"line":175,"column":null}},"87":{"start":{"line":176,"column":8},"end":{"line":176,"column":null}},"88":{"start":{"line":177,"column":8},"end":{"line":177,"column":null}},"89":{"start":{"line":183,"column":4},"end":{"line":183,"column":null}},"90":{"start":{"line":183,"column":21},"end":{"line":183,"column":null}},"91":{"start":{"line":184,"column":4},"end":{"line":190,"column":null}},"92":{"start":{"line":185,"column":20},"end":{"line":188,"column":null}},"93":{"start":{"line":186,"column":8},"end":{"line":186,"column":null}},"94":{"start":{"line":186,"column":50},"end":{"line":186,"column":67}},"95":{"start":{"line":187,"column":8},"end":{"line":187,"column":null}},"96":{"start":{"line":189,"column":6},"end":{"line":189,"column":null}},"97":{"start":{"line":189,"column":41},"end":{"line":189,"column":52}},"98":{"start":{"line":194,"column":15},"end":{"line":194,"column":null}},"99":{"start":{"line":195,"column":4},"end":{"line":197,"column":null}},"100":{"start":{"line":196,"column":6},"end":{"line":196,"column":null}},"101":{"start":{"line":198,"column":15},"end":{"line":198,"column":null}},"102":{"start":{"line":199,"column":4},"end":{"line":199,"column":null}},"103":{"start":{"line":200,"column":4},"end":{"line":213,"column":null}},"104":{"start":{"line":201,"column":20},"end":{"line":204,"column":null}},"105":{"start":{"line":202,"column":8},"end":{"line":202,"column":null}},"106":{"start":{"line":203,"column":8},"end":{"line":203,"column":null}},"107":{"start":{"line":205,"column":6},"end":{"line":205,"column":null}},"108":{"start":{"line":206,"column":6},"end":{"line":212,"column":null}},"109":{"start":{"line":207,"column":8},"end":{"line":207,"column":null}},"110":{"start":{"line":209,"column":8},"end":{"line":209,"column":null}},"111":{"start":{"line":210,"column":8},"end":{"line":210,"column":null}},"112":{"start":{"line":211,"column":8},"end":{"line":211,"column":null}},"113":{"start":{"line":218,"column":4},"end":{"line":222,"column":null}},"114":{"start":{"line":219,"column":6},"end":{"line":219,"column":null}},"115":{"start":{"line":221,"column":6},"end":{"line":221,"column":null}},"116":{"start":{"line":223,"column":4},"end":{"line":223,"column":null}},"117":{"start":{"line":224,"column":4},"end":{"line":289,"column":null}},"118":{"start":{"line":226,"column":8},"end":{"line":226,"column":null}},"119":{"start":{"line":227,"column":8},"end":{"line":227,"column":null}},"120":{"start":{"line":229,"column":8},"end":{"line":229,"column":null}},"121":{"start":{"line":230,"column":8},"end":{"line":230,"column":null}},"122":{"start":{"line":231,"column":8},"end":{"line":231,"column":null}},"123":{"start":{"line":232,"column":8},"end":{"line":232,"column":null}},"124":{"start":{"line":233,"column":8},"end":{"line":236,"column":null}},"125":{"start":{"line":234,"column":10},"end":{"line":234,"column":null}},"126":{"start":{"line":235,"column":10},"end":{"line":235,"column":null}},"127":{"start":{"line":237,"column":8},"end":{"line":237,"column":null}},"128":{"start":{"line":238,"column":8},"end":{"line":241,"column":null}},"129":{"start":{"line":239,"column":10},"end":{"line":239,"column":null}},"130":{"start":{"line":240,"column":10},"end":{"line":240,"column":null}},"131":{"start":{"line":242,"column":8},"end":{"line":248,"column":null}},"132":{"start":{"line":243,"column":10},"end":{"line":247,"column":null}},"133":{"start":{"line":244,"column":12},"end":{"line":244,"column":null}},"134":{"start":{"line":249,"column":8},"end":{"line":249,"column":null}},"135":{"start":{"line":250,"column":8},"end":{"line":250,"column":null}},"136":{"start":{"line":252,"column":8},"end":{"line":252,"column":null}},"137":{"start":{"line":253,"column":8},"end":{"line":255,"column":null}},"138":{"start":{"line":258,"column":8},"end":{"line":258,"column":null}},"139":{"start":{"line":260,"column":8},"end":{"line":260,"column":null}},"140":{"start":{"line":260,"column":40},"end":{"line":260,"column":null}},"141":{"start":{"line":261,"column":8},"end":{"line":271,"column":null}},"142":{"start":{"line":262,"column":26},"end":{"line":262,"column":null}},"143":{"start":{"line":263,"column":10},"end":{"line":269,"column":null}},"144":{"start":{"line":264,"column":12},"end":{"line":268,"column":null}},"145":{"start":{"line":265,"column":14},"end":{"line":265,"column":null}},"146":{"start":{"line":267,"column":14},"end":{"line":267,"column":null}},"147":{"start":{"line":270,"column":10},"end":{"line":270,"column":null}},"148":{"start":{"line":272,"column":18},"end":{"line":272,"column":null}},"149":{"start":{"line":273,"column":8},"end":{"line":273,"column":null}},"150":{"start":{"line":273,"column":16},"end":{"line":273,"column":null}},"151":{"start":{"line":274,"column":8},"end":{"line":286,"column":null}},"152":{"start":{"line":275,"column":10},"end":{"line":275,"column":null}},"153":{"start":{"line":276,"column":10},"end":{"line":276,"column":null}},"154":{"start":{"line":277,"column":10},"end":{"line":281,"column":null}},"155":{"start":{"line":277,"column":27},"end":{"line":277,"column":null}},"156":{"start":{"line":279,"column":12},"end":{"line":279,"column":null}},"157":{"start":{"line":280,"column":12},"end":{"line":280,"column":null}},"158":{"start":{"line":282,"column":15},"end":{"line":286,"column":null}},"159":{"start":{"line":283,"column":10},"end":{"line":283,"column":null}},"160":{"start":{"line":284,"column":10},"end":{"line":284,"column":null}},"161":{"start":{"line":285,"column":10},"end":{"line":285,"column":null}},"162":{"start":{"line":293,"column":4},"end":{"line":293,"column":null}},"163":{"start":{"line":293,"column":24},"end":{"line":293,"column":null}},"164":{"start":{"line":294,"column":4},"end":{"line":300,"column":null}},"165":{"start":{"line":295,"column":6},"end":{"line":295,"column":null}},"166":{"start":{"line":295,"column":36},"end":{"line":295,"column":null}},"167":{"start":{"line":296,"column":6},"end":{"line":299,"column":null}},"168":{"start":{"line":297,"column":8},"end":{"line":297,"column":null}},"169":{"start":{"line":298,"column":8},"end":{"line":298,"column":null}},"170":{"start":{"line":304,"column":4},"end":{"line":304,"column":null}},"171":{"start":{"line":304,"column":45},"end":{"line":304,"column":null}},"172":{"start":{"line":305,"column":16},"end":{"line":305,"column":null}},"173":{"start":{"line":306,"column":4},"end":{"line":313,"column":null}},"174":{"start":{"line":307,"column":6},"end":{"line":307,"column":null}},"175":{"start":{"line":308,"column":6},"end":{"line":310,"column":null}},"176":{"start":{"line":312,"column":6},"end":{"line":312,"column":null}},"177":{"start":{"line":314,"column":4},"end":{"line":317,"column":null}},"178":{"start":{"line":315,"column":6},"end":{"line":315,"column":null}},"179":{"start":{"line":316,"column":6},"end":{"line":316,"column":null}},"180":{"start":{"line":318,"column":4},"end":{"line":318,"column":null}},"181":{"start":{"line":324,"column":4},"end":{"line":324,"column":null}},"182":{"start":{"line":324,"column":24},"end":{"line":324,"column":null}},"183":{"start":{"line":325,"column":4},"end":{"line":328,"column":null}},"184":{"start":{"line":326,"column":6},"end":{"line":326,"column":null}},"185":{"start":{"line":327,"column":6},"end":{"line":327,"column":null}},"186":{"start":{"line":329,"column":4},"end":{"line":332,"column":null}},"187":{"start":{"line":330,"column":6},"end":{"line":330,"column":null}},"188":{"start":{"line":331,"column":6},"end":{"line":331,"column":null}},"189":{"start":{"line":333,"column":4},"end":{"line":333,"column":null}},"190":{"start":{"line":334,"column":4},"end":{"line":334,"column":null}},"191":{"start":{"line":334,"column":38},"end":{"line":334,"column":null}},"192":{"start":{"line":335,"column":4},"end":{"line":335,"column":null}},"193":{"start":{"line":336,"column":4},"end":{"line":339,"column":null}},"194":{"start":{"line":337,"column":6},"end":{"line":337,"column":null}},"195":{"start":{"line":338,"column":6},"end":{"line":338,"column":null}},"196":{"start":{"line":340,"column":4},"end":{"line":340,"column":null}},"197":{"start":{"line":342,"column":4},"end":{"line":342,"column":null}},"198":{"start":{"line":345,"column":4},"end":{"line":348,"column":null}},"199":{"start":{"line":346,"column":6},"end":{"line":346,"column":null}},"200":{"start":{"line":347,"column":6},"end":{"line":347,"column":null}},"201":{"start":{"line":349,"column":4},"end":{"line":349,"column":null}},"202":{"start":{"line":349,"column":22},"end":{"line":349,"column":null}},"203":{"start":{"line":350,"column":4},"end":{"line":350,"column":null}}},"fnMap":{"0":{"name":"constructor","decl":{"start":{"line":52,"column":2},"end":{"line":52,"column":14}},"loc":{"start":{"line":52,"column":40},"end":{"line":52,"column":null}},"line":52},"1":{"name":"onConnect","decl":{"start":{"line":55,"column":2},"end":{"line":55,"column":12}},"loc":{"start":{"line":55,"column":34},"end":{"line":57,"column":null}},"line":55},"2":{"name":"connected","decl":{"start":{"line":59,"column":6},"end":{"line":59,"column":27}},"loc":{"start":{"line":59,"column":27},"end":{"line":61,"column":null}},"line":59},"3":{"name":"disconnectedForMs","decl":{"start":{"line":64,"column":2},"end":{"line":64,"column":37}},"loc":{"start":{"line":64,"column":37},"end":{"line":66,"column":null}},"line":64},"4":{"name":"url","decl":{"start":{"line":68,"column":2},"end":{"line":68,"column":10}},"loc":{"start":{"line":68,"column":24},"end":{"line":74,"column":null}},"line":68},"5":{"name":"token","decl":{"start":{"line":76,"column":2},"end":{"line":76,"column":10}},"loc":{"start":{"line":76,"column":26},"end":{"line":78,"column":null}},"line":76},"6":{"name":"connect","decl":{"start":{"line":80,"column":2},"end":{"line":80,"column":18}},"loc":{"start":{"line":80,"column":18},"end":{"line":115,"column":null}},"line":80},"7":{"name":"(anonymous_7)","decl":{"start":{"line":100,"column":21},"end":{"line":100,"column":38}},"loc":{"start":{"line":100,"column":38},"end":{"line":105,"column":7}},"line":100},"8":{"name":"(anonymous_8)","decl":{"start":{"line":107,"column":10},"end":{"line":107,"column":22}},"loc":{"start":{"line":107,"column":30},"end":{"line":109,"column":5}},"line":107},"9":{"name":"(anonymous_9)","decl":{"start":{"line":110,"column":10},"end":{"line":110,"column":25}},"loc":{"start":{"line":110,"column":25},"end":{"line":110,"column":62}},"line":110},"10":{"name":"(anonymous_10)","decl":{"start":{"line":111,"column":10},"end":{"line":111,"column":20}},"loc":{"start":{"line":111,"column":28},"end":{"line":114,"column":5}},"line":111},"11":{"name":"shutdown","decl":{"start":{"line":117,"column":2},"end":{"line":117,"column":19}},"loc":{"start":{"line":117,"column":19},"end":{"line":126,"column":null}},"line":117},"12":{"name":"send","decl":{"start":{"line":129,"column":8},"end":{"line":129,"column":null}},"loc":{"start":{"line":133,"column":18},"end":{"line":136,"column":null}},"line":133},"13":{"name":"subscribe","decl":{"start":{"line":143,"column":8},"end":{"line":143,"column":null}},"loc":{"start":{"line":147,"column":21},"end":{"line":180,"column":null}},"line":147},"14":{"name":"(anonymous_14)","decl":{"start":{"line":157,"column":15},"end":{"line":157,"column":24}},"loc":{"start":{"line":157,"column":44},"end":{"line":179,"column":5}},"line":157},"15":{"name":"(anonymous_15)","decl":{"start":{"line":158,"column":20},"end":{"line":158,"column":37}},"loc":{"start":{"line":158,"column":37},"end":{"line":162,"column":9}},"line":158},"16":{"name":"(anonymous_16)","decl":{"start":{"line":164,"column":8},"end":{"line":164,"column":23}},"loc":{"start":{"line":164,"column":23},"end":{"line":164,"column":null}},"line":164},"17":{"name":"(anonymous_17)","decl":{"start":{"line":165,"column":8},"end":{"line":165,"column":17}},"loc":{"start":{"line":165,"column":23},"end":{"line":168,"column":null}},"line":165},"18":{"name":"ready","decl":{"start":{"line":182,"column":2},"end":{"line":182,"column":10}},"loc":{"start":{"line":182,"column":51},"end":{"line":191,"column":null}},"line":182},"19":{"name":"(anonymous_19)","decl":{"start":{"line":184,"column":15},"end":{"line":184,"column":24}},"loc":{"start":{"line":184,"column":44},"end":{"line":190,"column":5}},"line":184},"20":{"name":"(anonymous_20)","decl":{"start":{"line":185,"column":20},"end":{"line":185,"column":37}},"loc":{"start":{"line":185,"column":37},"end":{"line":188,"column":9}},"line":185},"21":{"name":"(anonymous_21)","decl":{"start":{"line":186,"column":36},"end":{"line":186,"column":44}},"loc":{"start":{"line":186,"column":50},"end":{"line":186,"column":67}},"line":186},"22":{"name":"(anonymous_22)","decl":{"start":{"line":189,"column":26},"end":{"line":189,"column":41}},"loc":{"start":{"line":189,"column":41},"end":{"line":189,"column":52}},"line":189},"23":{"name":"raw","decl":{"start":{"line":193,"column":2},"end":{"line":193,"column":10}},"loc":{"start":{"line":193,"column":99},"end":{"line":214,"column":null}},"line":193},"24":{"name":"(anonymous_24)","decl":{"start":{"line":200,"column":15},"end":{"line":200,"column":24}},"loc":{"start":{"line":200,"column":44},"end":{"line":213,"column":5}},"line":200},"25":{"name":"(anonymous_25)","decl":{"start":{"line":201,"column":20},"end":{"line":201,"column":37}},"loc":{"start":{"line":201,"column":37},"end":{"line":204,"column":9}},"line":201},"26":{"name":"onMessage","decl":{"start":{"line":216,"column":2},"end":{"line":216,"column":10}},"loc":{"start":{"line":216,"column":42},"end":{"line":290,"column":null}},"line":216},"27":{"name":"startPing","decl":{"start":{"line":292,"column":2},"end":{"line":292,"column":10}},"loc":{"start":{"line":292,"column":28},"end":{"line":301,"column":null}},"line":292},"28":{"name":"(anonymous_28)","decl":{"start":{"line":294,"column":21},"end":{"line":294,"column":39}},"loc":{"start":{"line":294,"column":39},"end":{"line":300,"column":7}},"line":294},"29":{"name":"(anonymous_29)","decl":{"start":{"line":296,"column":34},"end":{"line":296,"column":46}},"loc":{"start":{"line":296,"column":46},"end":{"line":299,"column":7}},"line":296},"30":{"name":"scheduleReconnect","decl":{"start":{"line":303,"column":2},"end":{"line":303,"column":10}},"loc":{"start":{"line":303,"column":47},"end":{"line":319,"column":null}},"line":303},"31":{"name":"(anonymous_31)","decl":{"start":{"line":314,"column":26},"end":{"line":314,"column":43}},"loc":{"start":{"line":314,"column":43},"end":{"line":317,"column":7}},"line":314},"32":{"name":"onClose","decl":{"start":{"line":321,"column":2},"end":{"line":321,"column":10}},"loc":{"start":{"line":321,"column":52},"end":{"line":351,"column":null}},"line":321}},"branchMap":{"0":{"loc":{"start":{"line":65,"column":11},"end":{"line":65,"column":null}},"type":"cond-expr","locations":[{"start":{"line":65,"column":42},"end":{"line":65,"column":49}},{"start":{"line":65,"column":49},"end":{"line":65,"column":null}}],"line":65},"1":{"loc":{"start":{"line":69,"column":4},"end":{"line":69,"column":null}},"type":"if","locations":[{"start":{"line":69,"column":4},"end":{"line":69,"column":null}},{"start":{},"end":{}}],"line":69},"2":{"loc":{"start":{"line":70,"column":4},"end":{"line":72,"column":null}},"type":"if","locations":[{"start":{"line":70,"column":4},"end":{"line":72,"column":null}},{"start":{},"end":{}}],"line":70},"3":{"loc":{"start":{"line":77,"column":11},"end":{"line":77,"column":null}},"type":"binary-expr","locations":[{"start":{"line":77,"column":11},"end":{"line":77,"column":39}},{"start":{"line":77,"column":39},"end":{"line":77,"column":62}},{"start":{"line":77,"column":62},"end":{"line":77,"column":null}}],"line":77},"4":{"loc":{"start":{"line":81,"column":4},"end":{"line":81,"column":null}},"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":null}},{"start":{},"end":{}}],"line":81},"5":{"loc":{"start":{"line":88,"column":23},"end":{"line":88,"column":57}},"type":"cond-expr","locations":[{"start":{"line":88,"column":44},"end":{"line":88,"column":56}},{"start":{"line":88,"column":56},"end":{"line":88,"column":57}}],"line":88},"6":{"loc":{"start":{"line":99,"column":4},"end":{"line":99,"column":null}},"type":"if","locations":[{"start":{"line":99,"column":4},"end":{"line":99,"column":null}},{"start":{},"end":{}}],"line":99},"7":{"loc":{"start":{"line":101,"column":6},"end":{"line":104,"column":null}},"type":"if","locations":[{"start":{"line":101,"column":6},"end":{"line":104,"column":null}},{"start":{},"end":{}}],"line":101},"8":{"loc":{"start":{"line":101,"column":10},"end":{"line":101,"column":42}},"type":"binary-expr","locations":[{"start":{"line":101,"column":10},"end":{"line":101,"column":26}},{"start":{"line":101,"column":26},"end":{"line":101,"column":42}}],"line":101},"9":{"loc":{"start":{"line":108,"column":6},"end":{"line":108,"column":null}},"type":"if","locations":[{"start":{"line":108,"column":6},"end":{"line":108,"column":null}},{"start":{},"end":{}}],"line":108},"10":{"loc":{"start":{"line":119,"column":4},"end":{"line":119,"column":null}},"type":"if","locations":[{"start":{"line":119,"column":4},"end":{"line":119,"column":null}},{"start":{},"end":{}}],"line":119},"11":{"loc":{"start":{"line":120,"column":4},"end":{"line":120,"column":null}},"type":"if","locations":[{"start":{"line":120,"column":4},"end":{"line":120,"column":null}},{"start":{},"end":{}}],"line":120},"12":{"loc":{"start":{"line":121,"column":4},"end":{"line":121,"column":null}},"type":"if","locations":[{"start":{"line":121,"column":4},"end":{"line":121,"column":null}},{"start":{},"end":{}}],"line":121},"13":{"loc":{"start":{"line":131,"column":4},"end":{"line":131,"column":null}},"type":"default-arg","locations":[{"start":{"line":131,"column":39},"end":{"line":131,"column":null}}],"line":131},"14":{"loc":{"start":{"line":132,"column":4},"end":{"line":132,"column":null}},"type":"default-arg","locations":[{"start":{"line":132,"column":24},"end":{"line":132,"column":null}}],"line":132},"15":{"loc":{"start":{"line":150,"column":4},"end":{"line":152,"column":null}},"type":"if","locations":[{"start":{"line":150,"column":4},"end":{"line":152,"column":null}},{"start":{},"end":{}}],"line":150},"16":{"loc":{"start":{"line":150,"column":8},"end":{"line":150,"column":49}},"type":"binary-expr","locations":[{"start":{"line":150,"column":8},"end":{"line":150,"column":15}},{"start":{"line":150,"column":15},"end":{"line":150,"column":49}}],"line":150},"17":{"loc":{"start":{"line":177,"column":15},"end":{"line":177,"column":60}},"type":"cond-expr","locations":[{"start":{"line":177,"column":36},"end":{"line":177,"column":40}},{"start":{"line":177,"column":40},"end":{"line":177,"column":60}}],"line":177},"18":{"loc":{"start":{"line":182,"column":16},"end":{"line":182,"column":51}},"type":"default-arg","locations":[{"start":{"line":182,"column":28},"end":{"line":182,"column":51}}],"line":182},"19":{"loc":{"start":{"line":183,"column":4},"end":{"line":183,"column":null}},"type":"if","locations":[{"start":{"line":183,"column":4},"end":{"line":183,"column":null}},{"start":{},"end":{}}],"line":183},"20":{"loc":{"start":{"line":195,"column":4},"end":{"line":197,"column":null}},"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":197,"column":null}},{"start":{},"end":{}}],"line":195},"21":{"loc":{"start":{"line":195,"column":8},"end":{"line":195,"column":49}},"type":"binary-expr","locations":[{"start":{"line":195,"column":8},"end":{"line":195,"column":15}},{"start":{"line":195,"column":15},"end":{"line":195,"column":49}}],"line":195},"22":{"loc":{"start":{"line":211,"column":15},"end":{"line":211,"column":60}},"type":"cond-expr","locations":[{"start":{"line":211,"column":36},"end":{"line":211,"column":40}},{"start":{"line":211,"column":40},"end":{"line":211,"column":60}}],"line":211},"23":{"loc":{"start":{"line":223,"column":41},"end":{"line":223,"column":57}},"type":"binary-expr","locations":[{"start":{"line":223,"column":41},"end":{"line":223,"column":53}},{"start":{"line":223,"column":53},"end":{"line":223,"column":57}}],"line":223},"24":{"loc":{"start":{"line":223,"column":63},"end":{"line":223,"column":77}},"type":"binary-expr","locations":[{"start":{"line":223,"column":63},"end":{"line":223,"column":73}},{"start":{"line":223,"column":73},"end":{"line":223,"column":77}}],"line":223},"25":{"loc":{"start":{"line":224,"column":4},"end":{"line":289,"column":null}},"type":"switch","locations":[{"start":{"line":225,"column":6},"end":{"line":227,"column":null}},{"start":{"line":228,"column":6},"end":{"line":250,"column":null}},{"start":{"line":251,"column":6},"end":{"line":258,"column":null}},{"start":{"line":259,"column":6},"end":{"line":288,"column":null}}],"line":224},"26":{"loc":{"start":{"line":233,"column":8},"end":{"line":236,"column":null}},"type":"if","locations":[{"start":{"line":233,"column":8},"end":{"line":236,"column":null}},{"start":{},"end":{}}],"line":233},"27":{"loc":{"start":{"line":237,"column":54},"end":{"line":237,"column":77}},"type":"binary-expr","locations":[{"start":{"line":237,"column":54},"end":{"line":237,"column":72}},{"start":{"line":237,"column":72},"end":{"line":237,"column":77}}],"line":237},"28":{"loc":{"start":{"line":254,"column":84},"end":{"line":254,"column":null}},"type":"binary-expr","locations":[{"start":{"line":254,"column":84},"end":{"line":254,"column":99}},{"start":{"line":254,"column":99},"end":{"line":254,"column":null}}],"line":254},"29":{"loc":{"start":{"line":260,"column":8},"end":{"line":260,"column":null}},"type":"if","locations":[{"start":{"line":260,"column":8},"end":{"line":260,"column":null}},{"start":{},"end":{}}],"line":260},"30":{"loc":{"start":{"line":261,"column":8},"end":{"line":271,"column":null}},"type":"if","locations":[{"start":{"line":261,"column":8},"end":{"line":271,"column":null}},{"start":{},"end":{}}],"line":261},"31":{"loc":{"start":{"line":263,"column":10},"end":{"line":269,"column":null}},"type":"if","locations":[{"start":{"line":263,"column":10},"end":{"line":269,"column":null}},{"start":{},"end":{}}],"line":263},"32":{"loc":{"start":{"line":267,"column":58},"end":{"line":267,"column":102}},"type":"cond-expr","locations":[{"start":{"line":267,"column":79},"end":{"line":267,"column":91}},{"start":{"line":267,"column":91},"end":{"line":267,"column":102}}],"line":267},"33":{"loc":{"start":{"line":273,"column":8},"end":{"line":273,"column":null}},"type":"if","locations":[{"start":{"line":273,"column":8},"end":{"line":273,"column":null}},{"start":{},"end":{}}],"line":273},"34":{"loc":{"start":{"line":274,"column":8},"end":{"line":286,"column":null}},"type":"if","locations":[{"start":{"line":274,"column":8},"end":{"line":286,"column":null}},{"start":{"line":282,"column":15},"end":{"line":286,"column":null}}],"line":274},"35":{"loc":{"start":{"line":277,"column":10},"end":{"line":281,"column":null}},"type":"if","locations":[{"start":{"line":277,"column":10},"end":{"line":281,"column":null}},{"start":{"line":278,"column":15},"end":{"line":281,"column":null}}],"line":277},"36":{"loc":{"start":{"line":279,"column":57},"end":{"line":279,"column":96}},"type":"binary-expr","locations":[{"start":{"line":279,"column":57},"end":{"line":279,"column":79}},{"start":{"line":279,"column":79},"end":{"line":279,"column":96}}],"line":279},"37":{"loc":{"start":{"line":280,"column":31},"end":{"line":280,"column":75}},"type":"binary-expr","locations":[{"start":{"line":280,"column":31},"end":{"line":280,"column":53}},{"start":{"line":280,"column":53},"end":{"line":280,"column":75}}],"line":280},"38":{"loc":{"start":{"line":282,"column":15},"end":{"line":286,"column":null}},"type":"if","locations":[{"start":{"line":282,"column":15},"end":{"line":286,"column":null}},{"start":{},"end":{}}],"line":282},"39":{"loc":{"start":{"line":293,"column":4},"end":{"line":293,"column":null}},"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":null}},{"start":{},"end":{}}],"line":293},"40":{"loc":{"start":{"line":295,"column":6},"end":{"line":295,"column":null}},"type":"if","locations":[{"start":{"line":295,"column":6},"end":{"line":295,"column":null}},{"start":{},"end":{}}],"line":295},"41":{"loc":{"start":{"line":295,"column":10},"end":{"line":295,"column":36}},"type":"binary-expr","locations":[{"start":{"line":295,"column":10},"end":{"line":295,"column":26}},{"start":{"line":295,"column":26},"end":{"line":295,"column":36}}],"line":295},"42":{"loc":{"start":{"line":304,"column":4},"end":{"line":304,"column":null}},"type":"if","locations":[{"start":{"line":304,"column":4},"end":{"line":304,"column":null}},{"start":{},"end":{}}],"line":304},"43":{"loc":{"start":{"line":304,"column":8},"end":{"line":304,"column":45}},"type":"binary-expr","locations":[{"start":{"line":304,"column":8},"end":{"line":304,"column":24}},{"start":{"line":304,"column":24},"end":{"line":304,"column":45}}],"line":304},"44":{"loc":{"start":{"line":306,"column":4},"end":{"line":313,"column":null}},"type":"if","locations":[{"start":{"line":306,"column":4},"end":{"line":313,"column":null}},{"start":{"line":311,"column":11},"end":{"line":313,"column":null}}],"line":306},"45":{"loc":{"start":{"line":324,"column":4},"end":{"line":324,"column":null}},"type":"if","locations":[{"start":{"line":324,"column":4},"end":{"line":324,"column":null}},{"start":{},"end":{}}],"line":324},"46":{"loc":{"start":{"line":325,"column":4},"end":{"line":328,"column":null}},"type":"if","locations":[{"start":{"line":325,"column":4},"end":{"line":328,"column":null}},{"start":{},"end":{}}],"line":325},"47":{"loc":{"start":{"line":329,"column":4},"end":{"line":332,"column":null}},"type":"if","locations":[{"start":{"line":329,"column":4},"end":{"line":332,"column":null}},{"start":{},"end":{}}],"line":329},"48":{"loc":{"start":{"line":334,"column":4},"end":{"line":334,"column":null}},"type":"if","locations":[{"start":{"line":334,"column":4},"end":{"line":334,"column":null}},{"start":{},"end":{}}],"line":334},"49":{"loc":{"start":{"line":349,"column":4},"end":{"line":349,"column":null}},"type":"if","locations":[{"start":{"line":349,"column":4},"end":{"line":349,"column":null}},{"start":{},"end":{}}],"line":349}},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":8,"8":8,"9":8,"10":8,"11":8,"12":8,"13":8,"14":8,"15":8,"16":8,"17":8,"18":8,"19":8,"20":8,"21":8,"22":0,"23":4,"24":1,"25":9,"26":0,"27":9,"28":9,"29":0,"30":9,"31":9,"32":0,"33":9,"34":9,"35":0,"36":0,"37":0,"38":9,"39":9,"40":9,"41":9,"42":0,"43":9,"44":0,"45":0,"46":0,"47":9,"48":28,"49":28,"50":9,"51":9,"52":9,"53":0,"54":8,"55":8,"56":6,"57":8,"58":0,"59":8,"60":2,"61":8,"62":8,"63":8,"64":8,"65":9,"66":8,"67":1,"68":1,"69":1,"70":0,"71":1,"72":1,"73":1,"74":1,"75":1,"76":0,"77":0,"78":0,"79":1,"80":1,"81":0,"82":0,"83":1,"84":1,"85":0,"86":0,"87":0,"88":0,"89":10,"90":1,"91":9,"92":9,"93":0,"94":0,"95":0,"96":9,"97":8,"98":8,"99":8,"100":0,"101":8,"102":8,"103":8,"104":8,"105":1,"106":1,"107":8,"108":8,"109":8,"110":0,"111":0,"112":0,"113":28,"114":28,"115":0,"116":28,"117":28,"118":9,"119":9,"120":8,"121":8,"122":8,"123":8,"124":8,"125":8,"126":8,"127":8,"128":8,"129":8,"130":8,"131":8,"132":0,"133":0,"134":8,"135":8,"136":1,"137":1,"138":1,"139":10,"140":0,"141":10,"142":3,"143":3,"144":2,"145":2,"146":0,"147":3,"148":7,"149":7,"150":0,"151":7,"152":7,"153":7,"154":7,"155":6,"156":1,"157":1,"158":0,"159":0,"160":0,"161":0,"162":8,"163":0,"164":8,"165":0,"166":0,"167":0,"168":0,"169":0,"170":3,"171":0,"172":3,"173":3,"174":0,"175":0,"176":3,"177":3,"178":1,"179":1,"180":3,"181":9,"182":0,"183":9,"184":2,"185":2,"186":9,"187":1,"188":1,"189":9,"190":9,"191":8,"192":9,"193":9,"194":1,"195":1,"196":9,"197":9,"198":9,"199":1,"200":1,"201":9,"202":6,"203":3},"f":{"0":8,"1":0,"2":4,"3":1,"4":9,"5":9,"6":9,"7":0,"8":28,"9":9,"10":0,"11":8,"12":9,"13":1,"14":1,"15":0,"16":1,"17":0,"18":10,"19":9,"20":0,"21":0,"22":8,"23":8,"24":8,"25":1,"26":28,"27":8,"28":0,"29":0,"30":3,"31":1,"32":9},"b":{"0":[0,1],"1":[0,9],"2":[9,0],"3":[9,9,0],"4":[0,9],"5":[0,0],"6":[0,9],"7":[0,0],"8":[0,0],"9":[28,0],"10":[6,2],"11":[0,8],"12":[2,6],"13":[9],"14":[9],"15":[0,1],"16":[1,1],"17":[0,0],"18":[10],"19":[1,9],"20":[0,8],"21":[8,8],"22":[0,0],"23":[28,0],"24":[28,18],"25":[9,8,1,10],"26":[8,0],"27":[8,0],"28":[1,0],"29":[0,10],"30":[3,7],"31":[2,1],"32":[0,0],"33":[0,7],"34":[7,0],"35":[6,1],"36":[1,0],"37":[1,0],"38":[0,0],"39":[0,8],"40":[0,0],"41":[0,0],"42":[0,3],"43":[3,3],"44":[0,3],"45":[0,9],"46":[2,7],"47":[1,8],"48":[8,1],"49":[6,3]},"meta":{"lastBranch":50,"lastFunction":33,"lastStatement":204,"seen":{"s:17:25:17:Infinity":0,"s:18:25:18:Infinity":1,"s:20:32:20:Infinity":2,"s:21:31:21:Infinity":3,"s:23:29:23:Infinity":4,"s:24:25:24:Infinity":5,"s:25:27:25:Infinity":6,"s:35:33:35:Infinity":7,"s:36:19:36:Infinity":8,"s:37:20:37:Infinity":9,"s:38:30:38:Infinity":10,"s:39:19:39:Infinity":11,"s:40:20:40:Infinity":12,"s:41:20:41:Infinity":13,"s:42:45:42:Infinity":14,"s:43:45:43:Infinity":15,"s:44:50:44:Infinity":16,"s:45:29:45:Infinity":17,"s:47:42:47:Infinity":18,"s:48:48:48:Infinity":19,"s:50:26:50:Infinity":20,"f:52:2:52:14":0,"s:52:22:52:40":21,"f:55:2:55:12":1,"s:56:4:56:Infinity":22,"f:59:6:59:27":2,"s:60:4:60:Infinity":23,"f:64:2:64:37":3,"s:65:4:65:Infinity":24,"b:65:42:65:49:65:49:65:Infinity":0,"f:68:2:68:10":4,"b:69:4:69:Infinity:undefined:undefined:undefined:undefined":1,"s:69:4:69:Infinity":25,"s:69:34:69:Infinity":26,"b:70:4:72:Infinity:undefined:undefined:undefined:undefined":2,"s:70:4:72:Infinity":27,"s:71:6:71:Infinity":28,"s:73:4:73:Infinity":29,"f:76:2:76:10":5,"s:77:4:77:Infinity":30,"b:77:11:77:39:77:39:77:62:77:62:77:Infinity":3,"f:80:2:80:18":6,"b:81:4:81:Infinity:undefined:undefined:undefined:undefined":4,"s:81:4:81:Infinity":31,"s:81:22:81:Infinity":32,"s:83:4:91:Infinity":33,"s:84:6:84:Infinity":34,"s:88:6:88:Infinity":35,"b:88:44:88:56:88:56:88:57":5,"s:89:6:89:Infinity":36,"s:90:6:90:Infinity":37,"s:92:4:92:Infinity":38,"s:93:15:93:Infinity":39,"s:94:4:94:Infinity":40,"b:99:4:99:Infinity:undefined:undefined:undefined:undefined":6,"s:99:4:99:Infinity":41,"s:99:24:99:Infinity":42,"s:100:4:105:Infinity":43,"f:100:21:100:38":7,"b:101:6:104:Infinity:undefined:undefined:undefined:undefined":7,"s:101:6:104:Infinity":44,"b:101:10:101:26:101:26:101:42":8,"s:102:8:102:Infinity":45,"s:103:8:103:Infinity":46,"s:107:4:109:Infinity":47,"f:107:10:107:22":8,"b:108:6:108:Infinity:undefined:undefined:undefined:undefined":9,"s:108:6:108:Infinity":48,"s:108:26:108:Infinity":49,"s:110:4:110:Infinity":50,"f:110:10:110:25":9,"s:110:25:110:62":51,"s:111:4:114:Infinity":52,"f:111:10:111:20":10,"s:112:6:112:Infinity":53,"f:117:2:117:19":11,"s:118:4:118:Infinity":54,"b:119:4:119:Infinity:undefined:undefined:undefined:undefined":10,"s:119:4:119:Infinity":55,"s:119:24:119:Infinity":56,"b:120:4:120:Infinity:undefined:undefined:undefined:undefined":11,"s:120:4:120:Infinity":57,"s:120:24:120:Infinity":58,"b:121:4:121:Infinity:undefined:undefined:undefined:undefined":12,"s:121:4:121:Infinity":59,"s:121:29:121:Infinity":60,"s:122:4:122:Infinity":61,"s:123:4:123:Infinity":62,"s:124:4:124:Infinity":63,"s:125:4:125:Infinity":64,"f:129:8:129:Infinity":12,"b:131:39:131:Infinity":13,"b:132:24:132:Infinity":14,"s:134:4:134:Infinity":65,"s:135:4:135:Infinity":66,"f:143:8:143:Infinity":13,"s:148:4:148:Infinity":67,"s:149:15:149:Infinity":68,"b:150:4:152:Infinity:undefined:undefined:undefined:undefined":15,"s:150:4:152:Infinity":69,"b:150:8:150:15:150:15:150:49":16,"s:151:6:151:Infinity":70,"s:153:15:153:Infinity":71,"s:154:4:154:Infinity":72,"s:156:4:156:Infinity":73,"s:157:4:179:Infinity":74,"f:157:15:157:24":14,"s:158:20:162:Infinity":75,"f:158:20:158:37":15,"s:159:8:159:Infinity":76,"s:160:8:160:Infinity":77,"s:161:8:161:Infinity":78,"s:163:6:170:Infinity":79,"f:164:8:164:23":16,"s:164:23:164:Infinity":80,"f:165:8:165:17":17,"s:166:10:166:Infinity":81,"s:167:10:167:Infinity":82,"s:171:6:178:Infinity":83,"s:172:8:172:Infinity":84,"s:174:8:174:Infinity":85,"s:175:8:175:Infinity":86,"s:176:8:176:Infinity":87,"s:177:8:177:Infinity":88,"b:177:36:177:40:177:40:177:60":17,"f:182:2:182:10":18,"b:182:28:182:51":18,"b:183:4:183:Infinity:undefined:undefined:undefined:undefined":19,"s:183:4:183:Infinity":89,"s:183:21:183:Infinity":90,"s:184:4:190:Infinity":91,"f:184:15:184:24":19,"s:185:20:188:Infinity":92,"f:185:20:185:37":20,"s:186:8:186:Infinity":93,"f:186:36:186:44":21,"s:186:50:186:67":94,"s:187:8:187:Infinity":95,"s:189:6:189:Infinity":96,"f:189:26:189:41":22,"s:189:41:189:52":97,"f:193:2:193:10":23,"s:194:15:194:Infinity":98,"b:195:4:197:Infinity:undefined:undefined:undefined:undefined":20,"s:195:4:197:Infinity":99,"b:195:8:195:15:195:15:195:49":21,"s:196:6:196:Infinity":100,"s:198:15:198:Infinity":101,"s:199:4:199:Infinity":102,"s:200:4:213:Infinity":103,"f:200:15:200:24":24,"s:201:20:204:Infinity":104,"f:201:20:201:37":25,"s:202:8:202:Infinity":105,"s:203:8:203:Infinity":106,"s:205:6:205:Infinity":107,"s:206:6:212:Infinity":108,"s:207:8:207:Infinity":109,"s:209:8:209:Infinity":110,"s:210:8:210:Infinity":111,"s:211:8:211:Infinity":112,"b:211:36:211:40:211:40:211:60":22,"f:216:2:216:10":26,"s:218:4:222:Infinity":113,"s:219:6:219:Infinity":114,"s:221:6:221:Infinity":115,"s:223:4:223:Infinity":116,"b:223:41:223:53:223:53:223:57":23,"b:223:63:223:73:223:73:223:77":24,"b:225:6:227:Infinity:228:6:250:Infinity:251:6:258:Infinity:259:6:288:Infinity":25,"s:224:4:289:Infinity":117,"s:226:8:226:Infinity":118,"s:227:8:227:Infinity":119,"s:229:8:229:Infinity":120,"s:230:8:230:Infinity":121,"s:231:8:231:Infinity":122,"s:232:8:232:Infinity":123,"b:233:8:236:Infinity:undefined:undefined:undefined:undefined":26,"s:233:8:236:Infinity":124,"s:234:10:234:Infinity":125,"s:235:10:235:Infinity":126,"s:237:8:237:Infinity":127,"b:237:54:237:72:237:72:237:77":27,"s:238:8:241:Infinity":128,"s:239:10:239:Infinity":129,"s:240:10:240:Infinity":130,"s:242:8:248:Infinity":131,"s:243:10:247:Infinity":132,"s:244:12:244:Infinity":133,"s:249:8:249:Infinity":134,"s:250:8:250:Infinity":135,"s:252:8:252:Infinity":136,"s:253:8:255:Infinity":137,"b:254:84:254:99:254:99:254:Infinity":28,"s:258:8:258:Infinity":138,"b:260:8:260:Infinity:undefined:undefined:undefined:undefined":29,"s:260:8:260:Infinity":139,"s:260:40:260:Infinity":140,"b:261:8:271:Infinity:undefined:undefined:undefined:undefined":30,"s:261:8:271:Infinity":141,"s:262:26:262:Infinity":142,"b:263:10:269:Infinity:undefined:undefined:undefined:undefined":31,"s:263:10:269:Infinity":143,"s:264:12:268:Infinity":144,"s:265:14:265:Infinity":145,"s:267:14:267:Infinity":146,"b:267:79:267:91:267:91:267:102":32,"s:270:10:270:Infinity":147,"s:272:18:272:Infinity":148,"b:273:8:273:Infinity:undefined:undefined:undefined:undefined":33,"s:273:8:273:Infinity":149,"s:273:16:273:Infinity":150,"b:274:8:286:Infinity:282:15:286:Infinity":34,"s:274:8:286:Infinity":151,"s:275:10:275:Infinity":152,"s:276:10:276:Infinity":153,"b:277:10:281:Infinity:278:15:281:Infinity":35,"s:277:10:281:Infinity":154,"s:277:27:277:Infinity":155,"s:279:12:279:Infinity":156,"b:279:57:279:79:279:79:279:96":36,"s:280:12:280:Infinity":157,"b:280:31:280:53:280:53:280:75":37,"b:282:15:286:Infinity:undefined:undefined:undefined:undefined":38,"s:282:15:286:Infinity":158,"s:283:10:283:Infinity":159,"s:284:10:284:Infinity":160,"s:285:10:285:Infinity":161,"f:292:2:292:10":27,"b:293:4:293:Infinity:undefined:undefined:undefined:undefined":39,"s:293:4:293:Infinity":162,"s:293:24:293:Infinity":163,"s:294:4:300:Infinity":164,"f:294:21:294:39":28,"b:295:6:295:Infinity:undefined:undefined:undefined:undefined":40,"s:295:6:295:Infinity":165,"b:295:10:295:26:295:26:295:36":41,"s:295:36:295:Infinity":166,"s:296:6:299:Infinity":167,"f:296:34:296:46":29,"s:297:8:297:Infinity":168,"s:298:8:298:Infinity":169,"f:303:2:303:10":30,"b:304:4:304:Infinity:undefined:undefined:undefined:undefined":42,"s:304:4:304:Infinity":170,"b:304:8:304:24:304:24:304:45":43,"s:304:45:304:Infinity":171,"s:305:16:305:Infinity":172,"b:306:4:313:Infinity:311:11:313:Infinity":44,"s:306:4:313:Infinity":173,"s:307:6:307:Infinity":174,"s:308:6:310:Infinity":175,"s:312:6:312:Infinity":176,"s:314:4:317:Infinity":177,"f:314:26:314:43":31,"s:315:6:315:Infinity":178,"s:316:6:316:Infinity":179,"s:318:4:318:Infinity":180,"f:321:2:321:10":32,"b:324:4:324:Infinity:undefined:undefined:undefined:undefined":45,"s:324:4:324:Infinity":181,"s:324:24:324:Infinity":182,"b:325:4:328:Infinity:undefined:undefined:undefined:undefined":46,"s:325:4:328:Infinity":183,"s:326:6:326:Infinity":184,"s:327:6:327:Infinity":185,"b:329:4:332:Infinity:undefined:undefined:undefined:undefined":47,"s:329:4:332:Infinity":186,"s:330:6:330:Infinity":187,"s:331:6:331:Infinity":188,"s:333:4:333:Infinity":189,"b:334:4:334:Infinity:undefined:undefined:undefined:undefined":48,"s:334:4:334:Infinity":190,"s:334:38:334:Infinity":191,"s:335:4:335:Infinity":192,"s:336:4:339:Infinity":193,"s:337:6:337:Infinity":194,"s:338:6:338:Infinity":195,"s:340:4:340:Infinity":196,"s:342:4:342:Infinity":197,"s:345:4:348:Infinity":198,"s:346:6:346:Infinity":199,"s:347:6:347:Infinity":200,"b:349:4:349:Infinity:undefined:undefined:undefined:undefined":49,"s:349:4:349:Infinity":201,"s:349:22:349:Infinity":202,"s:350:4:350:Infinity":203},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/helpers.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/helpers.ts","statementMap":{"0":{"start":{"line":4,"column":34},"end":{"line":4,"column":null}},"1":{"start":{"line":17,"column":12},"end":{"line":17,"column":null}},"2":{"start":{"line":18,"column":12},"end":{"line":18,"column":null}},"3":{"start":{"line":19,"column":16},"end":{"line":19,"column":null}},"4":{"start":{"line":20,"column":19},"end":{"line":20,"column":null}},"5":{"start":{"line":21,"column":2},"end":{"line":28,"column":null}},"6":{"start":{"line":33,"column":14},"end":{"line":33,"column":null}},"7":{"start":{"line":34,"column":2},"end":{"line":34,"column":null}},"8":{"start":{"line":34,"column":25},"end":{"line":34,"column":null}},"9":{"start":{"line":35,"column":15},"end":{"line":35,"column":null}},"10":{"start":{"line":36,"column":19},"end":{"line":36,"column":null}},"11":{"start":{"line":37,"column":2},"end":{"line":37,"column":null}},"12":{"start":{"line":37,"column":48},"end":{"line":37,"column":null}},"13":{"start":{"line":38,"column":2},"end":{"line":38,"column":null}},"14":{"start":{"line":69,"column":14},"end":{"line":69,"column":null}},"15":{"start":{"line":70,"column":16},"end":{"line":70,"column":null}},"16":{"start":{"line":71,"column":13},"end":{"line":71,"column":null}},"17":{"start":{"line":72,"column":2},"end":{"line":81,"column":null}},"18":{"start":{"line":73,"column":4},"end":{"line":79,"column":null}},"19":{"start":{"line":80,"column":4},"end":{"line":80,"column":null}},"20":{"start":{"line":83,"column":4},"end":{"line":85,"column":null}},"21":{"start":{"line":86,"column":2},"end":{"line":86,"column":null}},"22":{"start":{"line":90,"column":2},"end":{"line":90,"column":null}},"23":{"start":{"line":95,"column":2},"end":{"line":110,"column":null}},"24":{"start":{"line":96,"column":4},"end":{"line":96,"column":null}},"25":{"start":{"line":97,"column":4},"end":{"line":97,"column":null}},"26":{"start":{"line":98,"column":4},"end":{"line":109,"column":null}},"27":{"start":{"line":99,"column":19},"end":{"line":99,"column":null}},"28":{"start":{"line":100,"column":6},"end":{"line":100,"column":null}},"29":{"start":{"line":102,"column":18},"end":{"line":102,"column":null}},"30":{"start":{"line":103,"column":6},"end":{"line":103,"column":null}},"31":{"start":{"line":107,"column":6},"end":{"line":107,"column":null}},"32":{"start":{"line":107,"column":41},"end":{"line":107,"column":null}},"33":{"start":{"line":108,"column":6},"end":{"line":108,"column":null}},"34":{"start":{"line":127,"column":14},"end":{"line":127,"column":null}},"35":{"start":{"line":128,"column":16},"end":{"line":130,"column":null}},"36":{"start":{"line":131,"column":2},"end":{"line":133,"column":null}},"37":{"start":{"line":132,"column":4},"end":{"line":132,"column":null}},"38":{"start":{"line":134,"column":8},"end":{"line":134,"column":null}},"39":{"start":{"line":135,"column":2},"end":{"line":135,"column":null}},"40":{"start":{"line":135,"column":22},"end":{"line":135,"column":null}},"41":{"start":{"line":136,"column":2},"end":{"line":138,"column":null}},"42":{"start":{"line":137,"column":4},"end":{"line":137,"column":null}},"43":{"start":{"line":139,"column":2},"end":{"line":139,"column":null}},"44":{"start":{"line":144,"column":2},"end":{"line":148,"column":null}},"45":{"start":{"line":146,"column":15},"end":{"line":146,"column":null}},"46":{"start":{"line":147,"column":4},"end":{"line":147,"column":null}},"47":{"start":{"line":149,"column":2},"end":{"line":152,"column":null}},"48":{"start":{"line":150,"column":14},"end":{"line":150,"column":null}},"49":{"start":{"line":151,"column":4},"end":{"line":151,"column":null}},"50":{"start":{"line":153,"column":2},"end":{"line":153,"column":null}}},"fnMap":{"0":{"name":"listEnvelope","decl":{"start":{"line":16,"column":16},"end":{"line":16,"column":32}},"loc":{"start":{"line":16,"column":98},"end":{"line":29,"column":null}},"line":16},"1":{"name":"trunc","decl":{"start":{"line":32,"column":16},"end":{"line":32,"column":22}},"loc":{"start":{"line":32,"column":55},"end":{"line":39,"column":null}},"line":32},"2":{"name":"jsonResult","decl":{"start":{"line":68,"column":16},"end":{"line":68,"column":27}},"loc":{"start":{"line":68,"column":77},"end":{"line":87,"column":null}},"line":68},"3":{"name":"errorResult","decl":{"start":{"line":89,"column":16},"end":{"line":89,"column":28}},"loc":{"start":{"line":89,"column":57},"end":{"line":91,"column":null}},"line":89},"4":{"name":"safe","decl":{"start":{"line":94,"column":16},"end":{"line":94,"column":24}},"loc":{"start":{"line":94,"column":130},"end":{"line":111,"column":null}},"line":94},"5":{"name":"(anonymous_5)","decl":{"start":{"line":95,"column":9},"end":{"line":95,"column":16}},"loc":{"start":{"line":95,"column":28},"end":{"line":110,"column":null}},"line":95},"6":{"name":"timeWindow","decl":{"start":{"line":122,"column":16},"end":{"line":122,"column":null}},"loc":{"start":{"line":126,"column":14},"end":{"line":140,"column":null}},"line":126},"7":{"name":"toIso","decl":{"start":{"line":143,"column":16},"end":{"line":143,"column":22}},"loc":{"start":{"line":143,"column":49},"end":{"line":154,"column":null}},"line":143}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":42},"end":{"line":16,"column":54}},"type":"default-arg","locations":[{"start":{"line":16,"column":50},"end":{"line":16,"column":54}}],"line":16},"1":{"loc":{"start":{"line":16,"column":54},"end":{"line":16,"column":66}},"type":"default-arg","locations":[{"start":{"line":16,"column":63},"end":{"line":16,"column":66}}],"line":16},"2":{"loc":{"start":{"line":26,"column":8},"end":{"line":26,"column":null}},"type":"cond-expr","locations":[{"start":{"line":26,"column":32},"end":{"line":26,"column":60}},{"start":{"line":26,"column":60},"end":{"line":26,"column":null}}],"line":26},"3":{"loc":{"start":{"line":27,"column":8},"end":{"line":27,"column":null}},"type":"cond-expr","locations":[{"start":{"line":27,"column":15},"end":{"line":27,"column":26}},{"start":{"line":27,"column":26},"end":{"line":27,"column":null}}],"line":27},"4":{"loc":{"start":{"line":33,"column":14},"end":{"line":33,"column":null}},"type":"cond-expr","locations":[{"start":{"line":33,"column":38},"end":{"line":33,"column":42}},{"start":{"line":33,"column":42},"end":{"line":33,"column":null}}],"line":33},"5":{"loc":{"start":{"line":33,"column":42},"end":{"line":33,"column":null}},"type":"binary-expr","locations":[{"start":{"line":33,"column":42},"end":{"line":33,"column":63}},{"start":{"line":33,"column":63},"end":{"line":33,"column":null}}],"line":33},"6":{"loc":{"start":{"line":34,"column":2},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":34,"column":2},"end":{"line":34,"column":null}},{"start":{},"end":{}}],"line":34},"7":{"loc":{"start":{"line":37,"column":2},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":37,"column":2},"end":{"line":37,"column":null}},{"start":{},"end":{}}],"line":37},"8":{"loc":{"start":{"line":37,"column":6},"end":{"line":37,"column":48}},"type":"binary-expr","locations":[{"start":{"line":37,"column":6},"end":{"line":37,"column":28}},{"start":{"line":37,"column":28},"end":{"line":37,"column":48}}],"line":37},"9":{"loc":{"start":{"line":68,"column":42},"end":{"line":68,"column":77}},"type":"default-arg","locations":[{"start":{"line":68,"column":61},"end":{"line":68,"column":77}}],"line":68},"10":{"loc":{"start":{"line":69,"column":14},"end":{"line":69,"column":null}},"type":"binary-expr","locations":[{"start":{"line":69,"column":14},"end":{"line":69,"column":31}},{"start":{"line":69,"column":31},"end":{"line":69,"column":null}}],"line":69},"11":{"loc":{"start":{"line":72,"column":2},"end":{"line":81,"column":null}},"type":"if","locations":[{"start":{"line":72,"column":2},"end":{"line":81,"column":null}},{"start":{},"end":{}}],"line":72},"12":{"loc":{"start":{"line":76,"column":8},"end":{"line":77,"column":null}},"type":"binary-expr","locations":[{"start":{"line":76,"column":8},"end":{"line":76,"column":null}},{"start":{"line":77,"column":8},"end":{"line":77,"column":null}}],"line":76},"13":{"loc":{"start":{"line":83,"column":4},"end":{"line":85,"column":null}},"type":"cond-expr","locations":[{"start":{"line":84,"column":9},"end":{"line":84,"column":null}},{"start":{"line":85,"column":8},"end":{"line":85,"column":null}}],"line":83},"14":{"loc":{"start":{"line":83,"column":4},"end":{"line":83,"column":null}},"type":"binary-expr","locations":[{"start":{"line":83,"column":4},"end":{"line":83,"column":35}},{"start":{"line":83,"column":35},"end":{"line":83,"column":55}},{"start":{"line":83,"column":55},"end":{"line":83,"column":null}}],"line":83},"15":{"loc":{"start":{"line":86,"column":50},"end":{"line":86,"column":103}},"type":"cond-expr","locations":[{"start":{"line":86,"column":63},"end":{"line":86,"column":99}},{"start":{"line":86,"column":99},"end":{"line":86,"column":103}}],"line":86},"16":{"loc":{"start":{"line":94,"column":73},"end":{"line":94,"column":130}},"type":"default-arg","locations":[{"start":{"line":94,"column":92},"end":{"line":94,"column":130}}],"line":94},"17":{"loc":{"start":{"line":102,"column":18},"end":{"line":102,"column":null}},"type":"cond-expr","locations":[{"start":{"line":102,"column":39},"end":{"line":102,"column":51}},{"start":{"line":102,"column":51},"end":{"line":102,"column":null}}],"line":102},"18":{"loc":{"start":{"line":107,"column":6},"end":{"line":107,"column":null}},"type":"if","locations":[{"start":{"line":107,"column":6},"end":{"line":107,"column":null}},{"start":{},"end":{}}],"line":107},"19":{"loc":{"start":{"line":107,"column":10},"end":{"line":107,"column":41}},"type":"binary-expr","locations":[{"start":{"line":107,"column":10},"end":{"line":107,"column":32}},{"start":{"line":107,"column":32},"end":{"line":107,"column":41}}],"line":107},"20":{"loc":{"start":{"line":127,"column":14},"end":{"line":127,"column":null}},"type":"cond-expr","locations":[{"start":{"line":127,"column":22},"end":{"line":127,"column":40}},{"start":{"line":127,"column":40},"end":{"line":127,"column":null}}],"line":127},"21":{"loc":{"start":{"line":128,"column":16},"end":{"line":130,"column":null}},"type":"cond-expr","locations":[{"start":{"line":129,"column":6},"end":{"line":129,"column":null}},{"start":{"line":130,"column":6},"end":{"line":130,"column":null}}],"line":128},"22":{"loc":{"start":{"line":130,"column":32},"end":{"line":130,"column":59}},"type":"binary-expr","locations":[{"start":{"line":130,"column":32},"end":{"line":130,"column":43}},{"start":{"line":130,"column":43},"end":{"line":130,"column":59}}],"line":130},"23":{"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":null}},"type":"if","locations":[{"start":{"line":131,"column":2},"end":{"line":133,"column":null}},{"start":{},"end":{}}],"line":131},"24":{"loc":{"start":{"line":131,"column":6},"end":{"line":131,"column":68}},"type":"binary-expr","locations":[{"start":{"line":131,"column":6},"end":{"line":131,"column":39}},{"start":{"line":131,"column":39},"end":{"line":131,"column":68}}],"line":131},"25":{"loc":{"start":{"line":135,"column":2},"end":{"line":135,"column":null}},"type":"if","locations":[{"start":{"line":135,"column":2},"end":{"line":135,"column":null}},{"start":{},"end":{}}],"line":135},"26":{"loc":{"start":{"line":136,"column":2},"end":{"line":138,"column":null}},"type":"if","locations":[{"start":{"line":136,"column":2},"end":{"line":138,"column":null}},{"start":{},"end":{}}],"line":136},"27":{"loc":{"start":{"line":144,"column":2},"end":{"line":148,"column":null}},"type":"if","locations":[{"start":{"line":144,"column":2},"end":{"line":148,"column":null}},{"start":{},"end":{}}],"line":144},"28":{"loc":{"start":{"line":146,"column":15},"end":{"line":146,"column":null}},"type":"cond-expr","locations":[{"start":{"line":146,"column":26},"end":{"line":146,"column":30}},{"start":{"line":146,"column":30},"end":{"line":146,"column":null}}],"line":146},"29":{"loc":{"start":{"line":149,"column":2},"end":{"line":152,"column":null}},"type":"if","locations":[{"start":{"line":149,"column":2},"end":{"line":152,"column":null}},{"start":{},"end":{}}],"line":149},"30":{"loc":{"start":{"line":151,"column":11},"end":{"line":151,"column":null}},"type":"cond-expr","locations":[{"start":{"line":151,"column":39},"end":{"line":151,"column":46}},{"start":{"line":151,"column":46},"end":{"line":151,"column":null}}],"line":151}},"s":{"0":24,"1":26,"2":26,"3":26,"4":26,"5":26,"6":316,"7":316,"8":308,"9":8,"10":8,"11":8,"12":0,"13":8,"14":202,"15":202,"16":202,"17":202,"18":4,"19":4,"20":202,"21":202,"22":69,"23":1701,"24":264,"25":264,"26":264,"27":264,"28":197,"29":67,"30":67,"31":67,"32":67,"33":67,"34":21,"35":21,"36":21,"37":1,"38":20,"39":20,"40":1,"41":19,"42":4,"43":15,"44":1636,"45":1625,"46":1625,"47":11,"48":10,"49":10,"50":1},"f":{"0":26,"1":316,"2":202,"3":69,"4":1701,"5":264,"6":21,"7":1636},"b":{"0":[26],"1":[26],"2":[3,23],"3":[7,19],"4":[52,264],"5":[264,0],"6":[308,8],"7":[0,8],"8":[8,0],"9":[202],"10":[202,194],"11":[4,198],"12":[4,2],"13":[202,0],"14":[202,202,202],"15":[202,0],"16":[1701],"17":[67,0],"18":[67,0],"19":[67,67],"20":[1,20],"21":[2,19],"22":[19,12],"23":[1,20],"24":[21,20],"25":[1,19],"26":[4,15],"27":[1625,11],"28":[2,1623],"29":[10,1],"30":[1,9]},"meta":{"lastBranch":31,"lastFunction":8,"lastStatement":51,"seen":{"s:4:34:4:Infinity":0,"f:16:16:16:32":0,"b:16:50:16:54":0,"b:16:63:16:66":1,"s:17:12:17:Infinity":1,"s:18:12:18:Infinity":2,"s:19:16:19:Infinity":3,"s:20:19:20:Infinity":4,"s:21:2:28:Infinity":5,"b:26:32:26:60:26:60:26:Infinity":2,"b:27:15:27:26:27:26:27:Infinity":3,"f:32:16:32:22":1,"s:33:14:33:Infinity":6,"b:33:38:33:42:33:42:33:Infinity":4,"b:33:42:33:63:33:63:33:Infinity":5,"b:34:2:34:Infinity:undefined:undefined:undefined:undefined":6,"s:34:2:34:Infinity":7,"s:34:25:34:Infinity":8,"s:35:15:35:Infinity":9,"s:36:19:36:Infinity":10,"b:37:2:37:Infinity:undefined:undefined:undefined:undefined":7,"s:37:2:37:Infinity":11,"b:37:6:37:28:37:28:37:48":8,"s:37:48:37:Infinity":12,"s:38:2:38:Infinity":13,"f:68:16:68:27":2,"b:68:61:68:77":9,"s:69:14:69:Infinity":14,"b:69:14:69:31:69:31:69:Infinity":10,"s:70:16:70:Infinity":15,"s:71:13:71:Infinity":16,"b:72:2:81:Infinity:undefined:undefined:undefined:undefined":11,"s:72:2:81:Infinity":17,"s:73:4:79:Infinity":18,"b:76:8:76:Infinity:77:8:77:Infinity":12,"s:80:4:80:Infinity":19,"s:83:4:85:Infinity":20,"b:84:9:84:Infinity:85:8:85:Infinity":13,"b:83:4:83:35:83:35:83:55:83:55:83:Infinity":14,"s:86:2:86:Infinity":21,"b:86:63:86:99:86:99:86:103":15,"f:89:16:89:28":3,"s:90:2:90:Infinity":22,"f:94:16:94:24":4,"b:94:92:94:130":16,"s:95:2:110:Infinity":23,"f:95:9:95:16":5,"s:96:4:96:Infinity":24,"s:97:4:97:Infinity":25,"s:98:4:109:Infinity":26,"s:99:19:99:Infinity":27,"s:100:6:100:Infinity":28,"s:102:18:102:Infinity":29,"b:102:39:102:51:102:51:102:Infinity":17,"s:103:6:103:Infinity":30,"b:107:6:107:Infinity:undefined:undefined:undefined:undefined":18,"s:107:6:107:Infinity":31,"b:107:10:107:32:107:32:107:41":19,"s:107:41:107:Infinity":32,"s:108:6:108:Infinity":33,"f:122:16:122:Infinity":6,"s:127:14:127:Infinity":34,"b:127:22:127:40:127:40:127:Infinity":20,"s:128:16:130:Infinity":35,"b:129:6:129:Infinity:130:6:130:Infinity":21,"b:130:32:130:43:130:43:130:59":22,"b:131:2:133:Infinity:undefined:undefined:undefined:undefined":23,"s:131:2:133:Infinity":36,"b:131:6:131:39:131:39:131:68":24,"s:132:4:132:Infinity":37,"s:134:8:134:Infinity":38,"b:135:2:135:Infinity:undefined:undefined:undefined:undefined":25,"s:135:2:135:Infinity":39,"s:135:22:135:Infinity":40,"b:136:2:138:Infinity:undefined:undefined:undefined:undefined":26,"s:136:2:138:Infinity":41,"s:137:4:137:Infinity":42,"s:139:2:139:Infinity":43,"f:143:16:143:22":7,"b:144:2:148:Infinity:undefined:undefined:undefined:undefined":27,"s:144:2:148:Infinity":44,"s:146:15:146:Infinity":45,"b:146:26:146:30:146:30:146:Infinity":28,"s:147:4:147:Infinity":46,"b:149:2:152:Infinity:undefined:undefined:undefined:undefined":29,"s:149:2:152:Infinity":47,"s:150:14:150:Infinity":48,"s:151:4:151:Infinity":49,"b:151:39:151:46:151:46:151:Infinity":30,"s:153:2:153:Infinity":50},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/prompts.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/prompts.ts","statementMap":{"0":{"start":{"line":8,"column":24},"end":{"line":8,"column":null}},"1":{"start":{"line":19,"column":8},"end":{"line":26,"column":null}},"2":{"start":{"line":19,"column":47},"end":{"line":26,"column":null}},"3":{"start":{"line":20,"column":14},"end":{"line":20,"column":null}},"4":{"start":{"line":21,"column":4},"end":{"line":25,"column":null}},"5":{"start":{"line":22,"column":21},"end":{"line":22,"column":83}},"6":{"start":{"line":23,"column":18},"end":{"line":23,"column":29}},"7":{"start":{"line":24,"column":22},"end":{"line":24,"column":50}},"8":{"start":{"line":28,"column":2},"end":{"line":57,"column":null}},"9":{"start":{"line":40,"column":25},"end":{"line":56,"column":null}},"10":{"start":{"line":59,"column":2},"end":{"line":84,"column":null}},"11":{"start":{"line":66,"column":11},"end":{"line":83,"column":null}},"12":{"start":{"line":86,"column":2},"end":{"line":111,"column":null}},"13":{"start":{"line":93,"column":11},"end":{"line":110,"column":null}},"14":{"start":{"line":116,"column":2},"end":{"line":141,"column":null}},"15":{"start":{"line":123,"column":19},"end":{"line":140,"column":null}},"16":{"start":{"line":143,"column":2},"end":{"line":167,"column":null}},"17":{"start":{"line":150,"column":19},"end":{"line":166,"column":null}},"18":{"start":{"line":169,"column":2},"end":{"line":193,"column":null}},"19":{"start":{"line":176,"column":19},"end":{"line":192,"column":null}},"20":{"start":{"line":195,"column":2},"end":{"line":219,"column":null}},"21":{"start":{"line":204,"column":20},"end":{"line":218,"column":null}}},"fnMap":{"0":{"name":"registerPrompts","decl":{"start":{"line":18,"column":16},"end":{"line":18,"column":32}},"loc":{"start":{"line":18,"column":75},"end":{"line":220,"column":null}},"line":18},"1":{"name":"(anonymous_1)","decl":{"start":{"line":19,"column":8},"end":{"line":19,"column":28}},"loc":{"start":{"line":19,"column":47},"end":{"line":26,"column":null}},"line":19},"2":{"name":"(anonymous_2)","decl":{"start":{"line":19,"column":47},"end":{"line":19,"column":54}},"loc":{"start":{"line":19,"column":91},"end":{"line":26,"column":null}},"line":19},"3":{"name":"(anonymous_3)","decl":{"start":{"line":22,"column":7},"end":{"line":22,"column":15}},"loc":{"start":{"line":22,"column":21},"end":{"line":22,"column":83}},"line":22},"4":{"name":"(anonymous_4)","decl":{"start":{"line":23,"column":7},"end":{"line":23,"column":12}},"loc":{"start":{"line":23,"column":18},"end":{"line":23,"column":29}},"line":23},"5":{"name":"(anonymous_5)","decl":{"start":{"line":24,"column":7},"end":{"line":24,"column":15}},"loc":{"start":{"line":24,"column":22},"end":{"line":24,"column":50}},"line":24},"6":{"name":"(anonymous_6)","decl":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"loc":{"start":{"line":40,"column":25},"end":{"line":56,"column":null}},"line":40},"7":{"name":"(anonymous_7)","decl":{"start":{"line":65,"column":4},"end":{"line":65,"column":null}},"loc":{"start":{"line":66,"column":11},"end":{"line":83,"column":null}},"line":66},"8":{"name":"(anonymous_8)","decl":{"start":{"line":92,"column":4},"end":{"line":92,"column":null}},"loc":{"start":{"line":93,"column":11},"end":{"line":110,"column":null}},"line":93},"9":{"name":"(anonymous_9)","decl":{"start":{"line":122,"column":4},"end":{"line":122,"column":null}},"loc":{"start":{"line":123,"column":19},"end":{"line":140,"column":null}},"line":123},"10":{"name":"(anonymous_10)","decl":{"start":{"line":149,"column":4},"end":{"line":149,"column":null}},"loc":{"start":{"line":150,"column":19},"end":{"line":166,"column":null}},"line":150},"11":{"name":"(anonymous_11)","decl":{"start":{"line":175,"column":4},"end":{"line":175,"column":null}},"loc":{"start":{"line":176,"column":19},"end":{"line":192,"column":null}},"line":176},"12":{"name":"(anonymous_12)","decl":{"start":{"line":203,"column":4},"end":{"line":203,"column":null}},"loc":{"start":{"line":204,"column":20},"end":{"line":218,"column":null}},"line":204}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":21},"end":{"line":22,"column":83}},"type":"binary-expr","locations":[{"start":{"line":22,"column":21},"end":{"line":22,"column":44}},{"start":{"line":22,"column":44},"end":{"line":22,"column":83}}],"line":22},"1":{"loc":{"start":{"line":211,"column":53},"end":{"line":211,"column":67}},"type":"binary-expr","locations":[{"start":{"line":211,"column":53},"end":{"line":211,"column":62}},{"start":{"line":211,"column":62},"end":{"line":211,"column":67}}],"line":211}},"s":{"0":1,"1":21,"2":21,"3":1,"4":1,"5":3,"6":2,"7":2,"8":21,"9":1,"10":21,"11":0,"12":21,"13":0,"14":21,"15":0,"16":21,"17":0,"18":21,"19":0,"20":21,"21":0},"f":{"0":21,"1":21,"2":1,"3":3,"4":2,"5":2,"6":1,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0},"b":{"0":[3,2],"1":[0,0]},"meta":{"lastBranch":2,"lastFunction":13,"lastStatement":22,"seen":{"s:8:24:8:Infinity":0,"f:18:16:18:32":0,"s:19:8:26:Infinity":1,"f:19:8:19:28":1,"s:19:47:26:Infinity":2,"f:19:47:19:54":2,"s:20:14:20:Infinity":3,"s:21:4:25:Infinity":4,"f:22:7:22:15":3,"s:22:21:22:83":5,"b:22:21:22:44:22:44:22:83":0,"f:23:7:23:12":4,"s:23:18:23:29":6,"f:24:7:24:15":5,"s:24:22:24:50":7,"s:28:2:57:Infinity":8,"f:39:4:39:Infinity":6,"s:40:25:56:Infinity":9,"s:59:2:84:Infinity":10,"f:65:4:65:Infinity":7,"s:66:11:83:Infinity":11,"s:86:2:111:Infinity":12,"f:92:4:92:Infinity":8,"s:93:11:110:Infinity":13,"s:116:2:141:Infinity":14,"f:122:4:122:Infinity":9,"s:123:19:140:Infinity":15,"s:143:2:167:Infinity":16,"f:149:4:149:Infinity":10,"s:150:19:166:Infinity":17,"s:169:2:193:Infinity":18,"f:175:4:175:Infinity":11,"s:176:19:192:Infinity":19,"s:195:2:219:Infinity":20,"f:203:4:203:Infinity":12,"s:204:20:218:Infinity":21,"b:211:53:211:62:211:62:211:67":1},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/registry.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/registry.ts","statementMap":{"0":{"start":{"line":12,"column":26},"end":{"line":26,"column":null}},"1":{"start":{"line":36,"column":22},"end":{"line":36,"column":null}},"2":{"start":{"line":46,"column":56},"end":{"line":106,"column":null}},"3":{"start":{"line":112,"column":2},"end":{"line":112,"column":null}},"4":{"start":{"line":117,"column":16},"end":{"line":117,"column":null}},"5":{"start":{"line":118,"column":2},"end":{"line":118,"column":null}},"6":{"start":{"line":118,"column":14},"end":{"line":118,"column":null}},"7":{"start":{"line":119,"column":2},"end":{"line":119,"column":null}},"8":{"start":{"line":131,"column":16},"end":{"line":131,"column":null}},"9":{"start":{"line":132,"column":17},"end":{"line":132,"column":null}},"10":{"start":{"line":133,"column":30},"end":{"line":133,"column":null}},"11":{"start":{"line":134,"column":28},"end":{"line":134,"column":null}},"12":{"start":{"line":135,"column":2},"end":{"line":149,"column":null}},"13":{"start":{"line":157,"column":18},"end":{"line":157,"column":null}},"14":{"start":{"line":158,"column":14},"end":{"line":158,"column":null}},"15":{"start":{"line":159,"column":2},"end":{"line":162,"column":null}},"16":{"start":{"line":160,"column":18},"end":{"line":160,"column":null}},"17":{"start":{"line":161,"column":4},"end":{"line":161,"column":null}},"18":{"start":{"line":163,"column":2},"end":{"line":163,"column":null}},"19":{"start":{"line":168,"column":14},"end":{"line":168,"column":null}},"20":{"start":{"line":169,"column":2},"end":{"line":172,"column":null}},"21":{"start":{"line":170,"column":19},"end":{"line":170,"column":null}},"22":{"start":{"line":170,"column":70},"end":{"line":170,"column":86}},"23":{"start":{"line":170,"column":99},"end":{"line":170,"column":106}},"24":{"start":{"line":171,"column":4},"end":{"line":171,"column":null}},"25":{"start":{"line":173,"column":2},"end":{"line":173,"column":null}},"26":{"start":{"line":178,"column":14},"end":{"line":178,"column":null}},"27":{"start":{"line":179,"column":2},"end":{"line":179,"column":null}},"28":{"start":{"line":179,"column":30},"end":{"line":179,"column":null}},"29":{"start":{"line":180,"column":2},"end":{"line":180,"column":null}},"30":{"start":{"line":185,"column":13},"end":{"line":185,"column":null}},"31":{"start":{"line":186,"column":14},"end":{"line":186,"column":null}},"32":{"start":{"line":187,"column":2},"end":{"line":191,"column":null}},"33":{"start":{"line":188,"column":4},"end":{"line":188,"column":null}},"34":{"start":{"line":188,"column":55},"end":{"line":188,"column":null}},"35":{"start":{"line":189,"column":4},"end":{"line":190,"column":null}},"36":{"start":{"line":189,"column":32},"end":{"line":189,"column":null}},"37":{"start":{"line":190,"column":9},"end":{"line":190,"column":null}},"38":{"start":{"line":192,"column":2},"end":{"line":192,"column":null}},"39":{"start":{"line":205,"column":2},"end":{"line":210,"column":null}},"40":{"start":{"line":207,"column":6},"end":{"line":207,"column":null}},"41":{"start":{"line":207,"column":33},"end":{"line":207,"column":null}},"42":{"start":{"line":208,"column":6},"end":{"line":208,"column":null}}},"fnMap":{"0":{"name":"atLeast","decl":{"start":{"line":111,"column":16},"end":{"line":111,"column":24}},"loc":{"start":{"line":111,"column":64},"end":{"line":113,"column":null}},"line":111},"1":{"name":"allows","decl":{"start":{"line":116,"column":16},"end":{"line":116,"column":23}},"loc":{"start":{"line":116,"column":62},"end":{"line":120,"column":null}},"line":116},"2":{"name":"grantsFromConfig","decl":{"start":{"line":130,"column":16},"end":{"line":130,"column":33}},"loc":{"start":{"line":130,"column":91},"end":{"line":150,"column":null}},"line":130},"3":{"name":"capGrants","decl":{"start":{"line":156,"column":16},"end":{"line":156,"column":26}},"loc":{"start":{"line":156,"column":80},"end":{"line":164,"column":null}},"line":156},"4":{"name":"fullGrants","decl":{"start":{"line":167,"column":16},"end":{"line":167,"column":37}},"loc":{"start":{"line":167,"column":37},"end":{"line":174,"column":null}},"line":167},"5":{"name":"(anonymous_5)","decl":{"start":{"line":170,"column":56},"end":{"line":170,"column":64}},"loc":{"start":{"line":170,"column":70},"end":{"line":170,"column":86}},"line":170},"6":{"name":"(anonymous_6)","decl":{"start":{"line":170,"column":88},"end":{"line":170,"column":93}},"loc":{"start":{"line":170,"column":99},"end":{"line":170,"column":106}},"line":170},"7":{"name":"readOnlyGrants","decl":{"start":{"line":177,"column":16},"end":{"line":177,"column":41}},"loc":{"start":{"line":177,"column":41},"end":{"line":181,"column":null}},"line":177},"8":{"name":"toolCounts","decl":{"start":{"line":184,"column":16},"end":{"line":184,"column":27}},"loc":{"start":{"line":184,"column":91},"end":{"line":193,"column":null}},"line":184},"9":{"name":"gatedRegistrar","decl":{"start":{"line":204,"column":16},"end":{"line":204,"column":31}},"loc":{"start":{"line":204,"column":81},"end":{"line":211,"column":null}},"line":204},"10":{"name":"(anonymous_10)","decl":{"start":{"line":206,"column":4},"end":{"line":206,"column":20}},"loc":{"start":{"line":206,"column":70},"end":{"line":209,"column":null}},"line":206}},"branchMap":{"0":{"loc":{"start":{"line":118,"column":2},"end":{"line":118,"column":null}},"type":"if","locations":[{"start":{"line":118,"column":2},"end":{"line":118,"column":null}},{"start":{},"end":{}}],"line":118},"1":{"loc":{"start":{"line":131,"column":16},"end":{"line":131,"column":null}},"type":"binary-expr","locations":[{"start":{"line":131,"column":16},"end":{"line":131,"column":34}},{"start":{"line":131,"column":34},"end":{"line":131,"column":null}}],"line":131},"2":{"loc":{"start":{"line":132,"column":17},"end":{"line":132,"column":null}},"type":"binary-expr","locations":[{"start":{"line":132,"column":17},"end":{"line":132,"column":41}},{"start":{"line":132,"column":41},"end":{"line":132,"column":null}}],"line":132},"3":{"loc":{"start":{"line":133,"column":30},"end":{"line":133,"column":null}},"type":"cond-expr","locations":[{"start":{"line":133,"column":39},"end":{"line":133,"column":50}},{"start":{"line":133,"column":50},"end":{"line":133,"column":null}}],"line":133},"4":{"loc":{"start":{"line":133,"column":50},"end":{"line":133,"column":null}},"type":"cond-expr","locations":[{"start":{"line":133,"column":58},"end":{"line":133,"column":68}},{"start":{"line":133,"column":68},"end":{"line":133,"column":null}}],"line":133},"5":{"loc":{"start":{"line":134,"column":28},"end":{"line":134,"column":null}},"type":"cond-expr","locations":[{"start":{"line":134,"column":36},"end":{"line":134,"column":46}},{"start":{"line":134,"column":46},"end":{"line":134,"column":null}}],"line":134},"6":{"loc":{"start":{"line":140,"column":12},"end":{"line":140,"column":null}},"type":"cond-expr","locations":[{"start":{"line":140,"column":30},"end":{"line":140,"column":39}},{"start":{"line":140,"column":39},"end":{"line":140,"column":null}}],"line":140},"7":{"loc":{"start":{"line":143,"column":16},"end":{"line":143,"column":null}},"type":"cond-expr","locations":[{"start":{"line":143,"column":25},"end":{"line":143,"column":36}},{"start":{"line":143,"column":36},"end":{"line":143,"column":null}}],"line":143},"8":{"loc":{"start":{"line":160,"column":33},"end":{"line":160,"column":55}},"type":"binary-expr","locations":[{"start":{"line":160,"column":33},"end":{"line":160,"column":49}},{"start":{"line":160,"column":49},"end":{"line":160,"column":55}}],"line":160},"9":{"loc":{"start":{"line":161,"column":29},"end":{"line":161,"column":52}},"type":"cond-expr","locations":[{"start":{"line":161,"column":41},"end":{"line":161,"column":45}},{"start":{"line":161,"column":45},"end":{"line":161,"column":52}}],"line":161},"10":{"loc":{"start":{"line":171,"column":13},"end":{"line":171,"column":null}},"type":"cond-expr","locations":[{"start":{"line":171,"column":36},"end":{"line":171,"column":47}},{"start":{"line":171,"column":47},"end":{"line":171,"column":null}}],"line":171},"11":{"loc":{"start":{"line":171,"column":47},"end":{"line":171,"column":null}},"type":"cond-expr","locations":[{"start":{"line":171,"column":69},"end":{"line":171,"column":79}},{"start":{"line":171,"column":79},"end":{"line":171,"column":null}}],"line":171},"12":{"loc":{"start":{"line":188,"column":4},"end":{"line":188,"column":null}},"type":"if","locations":[{"start":{"line":188,"column":4},"end":{"line":188,"column":null}},{"start":{},"end":{}}],"line":188},"13":{"loc":{"start":{"line":189,"column":4},"end":{"line":190,"column":null}},"type":"if","locations":[{"start":{"line":189,"column":4},"end":{"line":190,"column":null}},{"start":{"line":190,"column":9},"end":{"line":190,"column":null}}],"line":189},"14":{"loc":{"start":{"line":207,"column":6},"end":{"line":207,"column":null}},"type":"if","locations":[{"start":{"line":207,"column":6},"end":{"line":207,"column":null}},{"start":{},"end":{}}],"line":207}},"s":{"0":26,"1":26,"2":26,"3":2501,"4":1014,"5":1014,"6":2,"7":1012,"8":117,"9":117,"10":117,"11":117,"12":117,"13":9,"14":9,"15":9,"16":117,"17":117,"18":9,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":8,"27":8,"28":104,"29":8,"30":33,"31":33,"32":33,"33":1485,"34":346,"35":1139,"36":862,"37":277,"38":33,"39":22,"40":947,"41":390,"42":557},"f":{"0":2501,"1":1014,"2":117,"3":9,"4":0,"5":0,"6":0,"7":8,"8":33,"9":22,"10":947},"b":{"0":[2,1012],"1":[117,73],"2":[117,9],"3":[7,110],"4":[62,48],"5":[68,49],"6":[7,110],"7":[7,110],"8":[117,23],"9":[0,117],"10":[0,0],"11":[0,0],"12":[346,1139],"13":[862,277],"14":[390,557]},"meta":{"lastBranch":15,"lastFunction":11,"lastStatement":43,"seen":{"s:12:26:26:Infinity":0,"s:36:22:36:Infinity":1,"s:46:56:106:Infinity":2,"f:111:16:111:24":0,"s:112:2:112:Infinity":3,"f:116:16:116:23":1,"s:117:16:117:Infinity":4,"b:118:2:118:Infinity:undefined:undefined:undefined:undefined":0,"s:118:2:118:Infinity":5,"s:118:14:118:Infinity":6,"s:119:2:119:Infinity":7,"f:130:16:130:33":2,"s:131:16:131:Infinity":8,"b:131:16:131:34:131:34:131:Infinity":1,"s:132:17:132:Infinity":9,"b:132:17:132:41:132:41:132:Infinity":2,"s:133:30:133:Infinity":10,"b:133:39:133:50:133:50:133:Infinity":3,"b:133:58:133:68:133:68:133:Infinity":4,"s:134:28:134:Infinity":11,"b:134:36:134:46:134:46:134:Infinity":5,"s:135:2:149:Infinity":12,"b:140:30:140:39:140:39:140:Infinity":6,"b:143:25:143:36:143:36:143:Infinity":7,"f:156:16:156:26":3,"s:157:18:157:Infinity":13,"s:158:14:158:Infinity":14,"s:159:2:162:Infinity":15,"s:160:18:160:Infinity":16,"b:160:33:160:49:160:49:160:55":8,"s:161:4:161:Infinity":17,"b:161:41:161:45:161:45:161:52":9,"s:163:2:163:Infinity":18,"f:167:16:167:37":4,"s:168:14:168:Infinity":19,"s:169:2:172:Infinity":20,"s:170:19:170:Infinity":21,"f:170:56:170:64":5,"s:170:70:170:86":22,"f:170:88:170:93":6,"s:170:99:170:106":23,"s:171:4:171:Infinity":24,"b:171:36:171:47:171:47:171:Infinity":10,"b:171:69:171:79:171:79:171:Infinity":11,"s:173:2:173:Infinity":25,"f:177:16:177:41":7,"s:178:14:178:Infinity":26,"s:179:2:179:Infinity":27,"s:179:30:179:Infinity":28,"s:180:2:180:Infinity":29,"f:184:16:184:27":8,"s:185:13:185:Infinity":30,"s:186:14:186:Infinity":31,"s:187:2:191:Infinity":32,"b:188:4:188:Infinity:undefined:undefined:undefined:undefined":12,"s:188:4:188:Infinity":33,"s:188:55:188:Infinity":34,"b:189:4:190:Infinity:190:9:190:Infinity":13,"s:189:4:190:Infinity":35,"s:189:32:189:Infinity":36,"s:190:9:190:Infinity":37,"s:192:2:192:Infinity":38,"f:204:16:204:31":9,"s:205:2:210:Infinity":39,"f:206:4:206:20":10,"b:207:6:207:Infinity:undefined:undefined:undefined:undefined":14,"s:207:6:207:Infinity":40,"s:207:33:207:Infinity":41,"s:208:6:208:Infinity":42},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/resources.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/resources.ts","statementMap":{"0":{"start":{"line":8,"column":31},"end":{"line":8,"column":null}},"1":{"start":{"line":18,"column":8},"end":{"line":20,"column":null}},"2":{"start":{"line":18,"column":48},"end":{"line":20,"column":null}},"3":{"start":{"line":22,"column":2},"end":{"line":60,"column":null}},"4":{"start":{"line":30,"column":20},"end":{"line":30,"column":null}},"5":{"start":{"line":31,"column":10},"end":{"line":35,"column":null}},"6":{"start":{"line":32,"column":27},"end":{"line":32,"column":66}},"7":{"start":{"line":33,"column":24},"end":{"line":33,"column":35}},"8":{"start":{"line":34,"column":28},"end":{"line":34,"column":56}},"9":{"start":{"line":46,"column":23},"end":{"line":46,"column":null}},"10":{"start":{"line":47,"column":6},"end":{"line":49,"column":null}},"11":{"start":{"line":48,"column":8},"end":{"line":48,"column":null}},"12":{"start":{"line":50,"column":12},"end":{"line":50,"column":null}},"13":{"start":{"line":50,"column":56},"end":{"line":50,"column":80}},"14":{"start":{"line":51,"column":6},"end":{"line":51,"column":null}},"15":{"start":{"line":51,"column":14},"end":{"line":51,"column":null}},"16":{"start":{"line":52,"column":6},"end":{"line":58,"column":null}},"17":{"start":{"line":62,"column":2},"end":{"line":108,"column":null}},"18":{"start":{"line":68,"column":20},"end":{"line":68,"column":null}},"19":{"start":{"line":69,"column":10},"end":{"line":72,"column":null}},"20":{"start":{"line":70,"column":24},"end":{"line":70,"column":33}},"21":{"start":{"line":71,"column":28},"end":{"line":71,"column":56}},"22":{"start":{"line":84,"column":21},"end":{"line":84,"column":null}},"23":{"start":{"line":85,"column":19},"end":{"line":85,"column":null}},"24":{"start":{"line":86,"column":19},"end":{"line":86,"column":null}},"25":{"start":{"line":86,"column":42},"end":{"line":86,"column":62}},"26":{"start":{"line":87,"column":6},"end":{"line":87,"column":null}},"27":{"start":{"line":87,"column":17},"end":{"line":87,"column":null}},"28":{"start":{"line":88,"column":20},"end":{"line":88,"column":null}},"29":{"start":{"line":88,"column":61},"end":{"line":88,"column":89}},"30":{"start":{"line":89,"column":12},"end":{"line":91,"column":null}},"31":{"start":{"line":90,"column":15},"end":{"line":90,"column":null}},"32":{"start":{"line":92,"column":47},"end":{"line":92,"column":null}},"33":{"start":{"line":93,"column":6},"end":{"line":93,"column":null}},"34":{"start":{"line":93,"column":32},"end":{"line":93,"column":null}},"35":{"start":{"line":94,"column":21},"end":{"line":94,"column":null}},"36":{"start":{"line":95,"column":22},"end":{"line":98,"column":null}},"37":{"start":{"line":96,"column":23},"end":{"line":96,"column":42}},"38":{"start":{"line":98,"column":21},"end":{"line":98,"column":64}},"39":{"start":{"line":99,"column":6},"end":{"line":106,"column":null}},"40":{"start":{"line":110,"column":2},"end":{"line":110,"column":null}},"41":{"start":{"line":110,"column":23},"end":{"line":110,"column":null}},"42":{"start":{"line":112,"column":2},"end":{"line":129,"column":null}},"43":{"start":{"line":121,"column":28},"end":{"line":121,"column":null}},"44":{"start":{"line":122,"column":21},"end":{"line":122,"column":null}},"45":{"start":{"line":123,"column":6},"end":{"line":123,"column":null}},"46":{"start":{"line":123,"column":29},"end":{"line":123,"column":null}},"47":{"start":{"line":123,"column":41},"end":{"line":123,"column":null}},"48":{"start":{"line":124,"column":6},"end":{"line":127,"column":null}},"49":{"start":{"line":126,"column":31},"end":{"line":126,"column":103}},"50":{"start":{"line":131,"column":2},"end":{"line":146,"column":null}},"51":{"start":{"line":140,"column":64},"end":{"line":140,"column":null}},"52":{"start":{"line":141,"column":6},"end":{"line":144,"column":null}},"53":{"start":{"line":143,"column":58},"end":{"line":143,"column":105}},"54":{"start":{"line":148,"column":2},"end":{"line":169,"column":null}},"55":{"start":{"line":157,"column":16},"end":{"line":157,"column":null}},"56":{"start":{"line":158,"column":6},"end":{"line":167,"column":null}},"57":{"start":{"line":179,"column":28},"end":{"line":179,"column":null}},"58":{"start":{"line":180,"column":21},"end":{"line":180,"column":null}},"59":{"start":{"line":181,"column":23},"end":{"line":181,"column":null}},"60":{"start":{"line":186,"column":21},"end":{"line":186,"column":null}},"61":{"start":{"line":187,"column":17},"end":{"line":187,"column":null}},"62":{"start":{"line":188,"column":21},"end":{"line":188,"column":null}},"63":{"start":{"line":189,"column":23},"end":{"line":196,"column":null}},"64":{"start":{"line":190,"column":4},"end":{"line":190,"column":null}},"65":{"start":{"line":191,"column":26},"end":{"line":191,"column":null}},"66":{"start":{"line":192,"column":21},"end":{"line":192,"column":null}},"67":{"start":{"line":192,"column":51},"end":{"line":192,"column":70}},"68":{"start":{"line":193,"column":4},"end":{"line":195,"column":null}},"69":{"start":{"line":194,"column":26},"end":{"line":194,"column":41}},"70":{"start":{"line":194,"column":54},"end":{"line":194,"column":105}},"71":{"start":{"line":198,"column":2},"end":{"line":198,"column":null}},"72":{"start":{"line":199,"column":2},"end":{"line":220,"column":null}},"73":{"start":{"line":200,"column":16},"end":{"line":200,"column":null}},"74":{"start":{"line":201,"column":21},"end":{"line":201,"column":null}},"75":{"start":{"line":202,"column":19},"end":{"line":202,"column":null}},"76":{"start":{"line":203,"column":4},"end":{"line":205,"column":null}},"77":{"start":{"line":204,"column":6},"end":{"line":204,"column":null}},"78":{"start":{"line":206,"column":4},"end":{"line":208,"column":null}},"79":{"start":{"line":207,"column":6},"end":{"line":207,"column":null}},"80":{"start":{"line":209,"column":4},"end":{"line":213,"column":null}},"81":{"start":{"line":210,"column":19},"end":{"line":210,"column":null}},"82":{"start":{"line":211,"column":6},"end":{"line":211,"column":null}},"83":{"start":{"line":211,"column":34},"end":{"line":211,"column":54}},"84":{"start":{"line":211,"column":57},"end":{"line":211,"column":null}},"85":{"start":{"line":212,"column":6},"end":{"line":212,"column":null}},"86":{"start":{"line":214,"column":4},"end":{"line":216,"column":null}},"87":{"start":{"line":215,"column":6},"end":{"line":215,"column":null}},"88":{"start":{"line":217,"column":4},"end":{"line":217,"column":null}},"89":{"start":{"line":217,"column":40},"end":{"line":217,"column":null}},"90":{"start":{"line":218,"column":4},"end":{"line":218,"column":null}},"91":{"start":{"line":219,"column":4},"end":{"line":219,"column":null}},"92":{"start":{"line":221,"column":2},"end":{"line":224,"column":null}},"93":{"start":{"line":222,"column":4},"end":{"line":222,"column":null}},"94":{"start":{"line":222,"column":86},"end":{"line":222,"column":null}},"95":{"start":{"line":223,"column":4},"end":{"line":223,"column":null}},"96":{"start":{"line":226,"column":8},"end":{"line":233,"column":null}},"97":{"start":{"line":227,"column":16},"end":{"line":227,"column":null}},"98":{"start":{"line":228,"column":4},"end":{"line":228,"column":null}},"99":{"start":{"line":228,"column":69},"end":{"line":228,"column":null}},"100":{"start":{"line":229,"column":4},"end":{"line":229,"column":null}},"101":{"start":{"line":230,"column":4},"end":{"line":232,"column":null}},"102":{"start":{"line":231,"column":6},"end":{"line":231,"column":null}},"103":{"start":{"line":234,"column":17},"end":{"line":245,"column":null}},"104":{"start":{"line":235,"column":22},"end":{"line":235,"column":null}},"105":{"start":{"line":236,"column":4},"end":{"line":236,"column":null}},"106":{"start":{"line":236,"column":35},"end":{"line":236,"column":null}},"107":{"start":{"line":237,"column":4},"end":{"line":244,"column":null}},"108":{"start":{"line":238,"column":6},"end":{"line":238,"column":null}},"109":{"start":{"line":238,"column":46},"end":{"line":238,"column":null}},"110":{"start":{"line":239,"column":21},"end":{"line":239,"column":null}},"111":{"start":{"line":241,"column":6},"end":{"line":243,"column":null}},"112":{"start":{"line":242,"column":8},"end":{"line":242,"column":null}},"113":{"start":{"line":246,"column":22},"end":{"line":246,"column":null}},"114":{"start":{"line":247,"column":2},"end":{"line":250,"column":null}},"115":{"start":{"line":248,"column":4},"end":{"line":248,"column":null}},"116":{"start":{"line":249,"column":4},"end":{"line":249,"column":null}}},"fnMap":{"0":{"name":"registerResources","decl":{"start":{"line":17,"column":16},"end":{"line":17,"column":34}},"loc":{"start":{"line":17,"column":77},"end":{"line":170,"column":null}},"line":17},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":8},"end":{"line":18,"column":16}},"loc":{"start":{"line":18,"column":48},"end":{"line":20,"column":null}},"line":18},"2":{"name":"(anonymous_2)","decl":{"start":{"line":29,"column":19},"end":{"line":29,"column":26}},"loc":{"start":{"line":29,"column":44},"end":{"line":36,"column":null}},"line":29},"3":{"name":"(anonymous_3)","decl":{"start":{"line":32,"column":13},"end":{"line":32,"column":21}},"loc":{"start":{"line":32,"column":27},"end":{"line":32,"column":66}},"line":32},"4":{"name":"(anonymous_4)","decl":{"start":{"line":33,"column":13},"end":{"line":33,"column":18}},"loc":{"start":{"line":33,"column":24},"end":{"line":33,"column":35}},"line":33},"5":{"name":"(anonymous_5)","decl":{"start":{"line":34,"column":13},"end":{"line":34,"column":21}},"loc":{"start":{"line":34,"column":28},"end":{"line":34,"column":56}},"line":34},"6":{"name":"(anonymous_6)","decl":{"start":{"line":45,"column":4},"end":{"line":45,"column":11}},"loc":{"start":{"line":45,"column":30},"end":{"line":59,"column":null}},"line":45},"7":{"name":"(anonymous_7)","decl":{"start":{"line":50,"column":44},"end":{"line":50,"column":50}},"loc":{"start":{"line":50,"column":56},"end":{"line":50,"column":80}},"line":50},"8":{"name":"(anonymous_8)","decl":{"start":{"line":67,"column":17},"end":{"line":67,"column":24}},"loc":{"start":{"line":67,"column":42},"end":{"line":73,"column":null}},"line":67},"9":{"name":"(anonymous_9)","decl":{"start":{"line":70,"column":13},"end":{"line":70,"column":18}},"loc":{"start":{"line":70,"column":24},"end":{"line":70,"column":33}},"line":70},"10":{"name":"(anonymous_10)","decl":{"start":{"line":71,"column":13},"end":{"line":71,"column":21}},"loc":{"start":{"line":71,"column":28},"end":{"line":71,"column":56}},"line":71},"11":{"name":"(anonymous_11)","decl":{"start":{"line":83,"column":4},"end":{"line":83,"column":11}},"loc":{"start":{"line":83,"column":30},"end":{"line":107,"column":null}},"line":83},"12":{"name":"(anonymous_12)","decl":{"start":{"line":86,"column":30},"end":{"line":86,"column":36}},"loc":{"start":{"line":86,"column":42},"end":{"line":86,"column":62}},"line":86},"13":{"name":"(anonymous_13)","decl":{"start":{"line":88,"column":49},"end":{"line":88,"column":55}},"loc":{"start":{"line":88,"column":61},"end":{"line":88,"column":89}},"line":88},"14":{"name":"(anonymous_14)","decl":{"start":{"line":89,"column":51},"end":{"line":89,"column":null}},"loc":{"start":{"line":90,"column":15},"end":{"line":90,"column":null}},"line":90},"15":{"name":"(anonymous_15)","decl":{"start":{"line":96,"column":9},"end":{"line":96,"column":17}},"loc":{"start":{"line":96,"column":23},"end":{"line":96,"column":42}},"line":96},"16":{"name":"(anonymous_16)","decl":{"start":{"line":98,"column":9},"end":{"line":98,"column":14}},"loc":{"start":{"line":98,"column":21},"end":{"line":98,"column":64}},"line":98},"17":{"name":"(anonymous_17)","decl":{"start":{"line":120,"column":4},"end":{"line":120,"column":11}},"loc":{"start":{"line":120,"column":19},"end":{"line":128,"column":null}},"line":120},"18":{"name":"(anonymous_18)","decl":{"start":{"line":126,"column":19},"end":{"line":126,"column":24}},"loc":{"start":{"line":126,"column":31},"end":{"line":126,"column":103}},"line":126},"19":{"name":"(anonymous_19)","decl":{"start":{"line":139,"column":4},"end":{"line":139,"column":11}},"loc":{"start":{"line":139,"column":19},"end":{"line":145,"column":null}},"line":139},"20":{"name":"(anonymous_20)","decl":{"start":{"line":143,"column":33},"end":{"line":143,"column":38}},"loc":{"start":{"line":143,"column":58},"end":{"line":143,"column":105}},"line":143},"21":{"name":"(anonymous_21)","decl":{"start":{"line":156,"column":4},"end":{"line":156,"column":11}},"loc":{"start":{"line":156,"column":19},"end":{"line":168,"column":null}},"line":156},"22":{"name":"registerEntitySubscriptions","decl":{"start":{"line":178,"column":9},"end":{"line":178,"column":37}},"loc":{"start":{"line":178,"column":80},"end":{"line":251,"column":null}},"line":178},"23":{"name":"(anonymous_23)","decl":{"start":{"line":189,"column":23},"end":{"line":189,"column":50}},"loc":{"start":{"line":189,"column":50},"end":{"line":196,"column":null}},"line":189},"24":{"name":"(anonymous_24)","decl":{"start":{"line":192,"column":40},"end":{"line":192,"column":45}},"loc":{"start":{"line":192,"column":51},"end":{"line":192,"column":70}},"line":192},"25":{"name":"(anonymous_25)","decl":{"start":{"line":194,"column":12},"end":{"line":194,"column":20}},"loc":{"start":{"line":194,"column":26},"end":{"line":194,"column":41}},"line":194},"26":{"name":"(anonymous_26)","decl":{"start":{"line":194,"column":43},"end":{"line":194,"column":48}},"loc":{"start":{"line":194,"column":54},"end":{"line":194,"column":105}},"line":194},"27":{"name":"(anonymous_27)","decl":{"start":{"line":199,"column":58},"end":{"line":199,"column":65}},"loc":{"start":{"line":199,"column":73},"end":{"line":220,"column":3}},"line":199},"28":{"name":"(anonymous_28)","decl":{"start":{"line":211,"column":22},"end":{"line":211,"column":28}},"loc":{"start":{"line":211,"column":34},"end":{"line":211,"column":54}},"line":211},"29":{"name":"(anonymous_29)","decl":{"start":{"line":221,"column":60},"end":{"line":221,"column":67}},"loc":{"start":{"line":221,"column":75},"end":{"line":224,"column":3}},"line":221},"30":{"name":"(anonymous_30)","decl":{"start":{"line":226,"column":8},"end":{"line":226,"column":18}},"loc":{"start":{"line":226,"column":40},"end":{"line":233,"column":null}},"line":226},"31":{"name":"(anonymous_31)","decl":{"start":{"line":230,"column":47},"end":{"line":230,"column":54}},"loc":{"start":{"line":230,"column":60},"end":{"line":232,"column":5}},"line":230},"32":{"name":"(anonymous_32)","decl":{"start":{"line":234,"column":29},"end":{"line":234,"column":45}},"loc":{"start":{"line":234,"column":58},"end":{"line":245,"column":3}},"line":234},"33":{"name":"(anonymous_33)","decl":{"start":{"line":247,"column":16},"end":{"line":247,"column":32}},"loc":{"start":{"line":247,"column":32},"end":{"line":250,"column":null}},"line":247}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":27},"end":{"line":30,"column":38}},"type":"binary-expr","locations":[{"start":{"line":30,"column":27},"end":{"line":30,"column":36}},{"start":{"line":30,"column":36},"end":{"line":30,"column":38}}],"line":30},"1":{"loc":{"start":{"line":46,"column":30},"end":{"line":46,"column":55}},"type":"binary-expr","locations":[{"start":{"line":46,"column":30},"end":{"line":46,"column":53}},{"start":{"line":46,"column":53},"end":{"line":46,"column":55}}],"line":46},"2":{"loc":{"start":{"line":47,"column":6},"end":{"line":49,"column":null}},"type":"if","locations":[{"start":{"line":47,"column":6},"end":{"line":49,"column":null}},{"start":{},"end":{}}],"line":47},"3":{"loc":{"start":{"line":51,"column":6},"end":{"line":51,"column":null}},"type":"if","locations":[{"start":{"line":51,"column":6},"end":{"line":51,"column":null}},{"start":{},"end":{}}],"line":51},"4":{"loc":{"start":{"line":68,"column":27},"end":{"line":68,"column":38}},"type":"binary-expr","locations":[{"start":{"line":68,"column":27},"end":{"line":68,"column":36}},{"start":{"line":68,"column":36},"end":{"line":68,"column":38}}],"line":68},"5":{"loc":{"start":{"line":84,"column":28},"end":{"line":84,"column":51}},"type":"binary-expr","locations":[{"start":{"line":84,"column":28},"end":{"line":84,"column":49}},{"start":{"line":84,"column":49},"end":{"line":84,"column":51}}],"line":84},"6":{"loc":{"start":{"line":87,"column":6},"end":{"line":87,"column":null}},"type":"if","locations":[{"start":{"line":87,"column":6},"end":{"line":87,"column":null}},{"start":{},"end":{}}],"line":87},"7":{"loc":{"start":{"line":88,"column":20},"end":{"line":88,"column":null}},"type":"cond-expr","locations":[{"start":{"line":88,"column":37},"end":{"line":88,"column":108}},{"start":{"line":88,"column":108},"end":{"line":88,"column":null}}],"line":88},"8":{"loc":{"start":{"line":88,"column":37},"end":{"line":88,"column":108}},"type":"binary-expr","locations":[{"start":{"line":88,"column":37},"end":{"line":88,"column":100}},{"start":{"line":88,"column":100},"end":{"line":88,"column":108}}],"line":88},"9":{"loc":{"start":{"line":90,"column":15},"end":{"line":90,"column":null}},"type":"binary-expr","locations":[{"start":{"line":90,"column":15},"end":{"line":90,"column":39}},{"start":{"line":90,"column":39},"end":{"line":90,"column":null}}],"line":90},"10":{"loc":{"start":{"line":93,"column":54},"end":{"line":93,"column":81}},"type":"binary-expr","locations":[{"start":{"line":93,"column":54},"end":{"line":93,"column":76}},{"start":{"line":93,"column":76},"end":{"line":93,"column":81}}],"line":93},"11":{"loc":{"start":{"line":102,"column":12},"end":{"line":102,"column":null}},"type":"cond-expr","locations":[{"start":{"line":102,"column":20},"end":{"line":102,"column":32}},{"start":{"line":102,"column":32},"end":{"line":102,"column":null}}],"line":102},"12":{"loc":{"start":{"line":110,"column":2},"end":{"line":110,"column":null}},"type":"if","locations":[{"start":{"line":110,"column":2},"end":{"line":110,"column":null}},{"start":{},"end":{}}],"line":110},"13":{"loc":{"start":{"line":123,"column":29},"end":{"line":123,"column":null}},"type":"if","locations":[{"start":{"line":123,"column":29},"end":{"line":123,"column":null}},{"start":{},"end":{}}],"line":123},"14":{"loc":{"start":{"line":123,"column":61},"end":{"line":123,"column":88}},"type":"binary-expr","locations":[{"start":{"line":123,"column":61},"end":{"line":123,"column":83}},{"start":{"line":123,"column":83},"end":{"line":123,"column":88}}],"line":123},"15":{"loc":{"start":{"line":126,"column":77},"end":{"line":126,"column":101}},"type":"binary-expr","locations":[{"start":{"line":126,"column":77},"end":{"line":126,"column":99}},{"start":{"line":126,"column":99},"end":{"line":126,"column":101}}],"line":126},"16":{"loc":{"start":{"line":165,"column":20},"end":{"line":165,"column":null}},"type":"cond-expr","locations":[{"start":{"line":165,"column":50},"end":{"line":165,"column":72}},{"start":{"line":165,"column":72},"end":{"line":165,"column":null}}],"line":165},"17":{"loc":{"start":{"line":194,"column":68},"end":{"line":194,"column":104}},"type":"binary-expr","locations":[{"start":{"line":194,"column":68},"end":{"line":194,"column":102}},{"start":{"line":194,"column":102},"end":{"line":194,"column":104}}],"line":194},"18":{"loc":{"start":{"line":203,"column":4},"end":{"line":205,"column":null}},"type":"if","locations":[{"start":{"line":203,"column":4},"end":{"line":205,"column":null}},{"start":{},"end":{}}],"line":203},"19":{"loc":{"start":{"line":203,"column":8},"end":{"line":203,"column":30}},"type":"binary-expr","locations":[{"start":{"line":203,"column":8},"end":{"line":203,"column":21}},{"start":{"line":203,"column":21},"end":{"line":203,"column":30}}],"line":203},"20":{"loc":{"start":{"line":206,"column":4},"end":{"line":208,"column":null}},"type":"if","locations":[{"start":{"line":206,"column":4},"end":{"line":208,"column":null}},{"start":{},"end":{}}],"line":206},"21":{"loc":{"start":{"line":206,"column":8},"end":{"line":206,"column":59}},"type":"binary-expr","locations":[{"start":{"line":206,"column":8},"end":{"line":206,"column":20}},{"start":{"line":206,"column":20},"end":{"line":206,"column":59}}],"line":206},"22":{"loc":{"start":{"line":209,"column":4},"end":{"line":213,"column":null}},"type":"if","locations":[{"start":{"line":209,"column":4},"end":{"line":213,"column":null}},{"start":{},"end":{}}],"line":209},"23":{"loc":{"start":{"line":211,"column":6},"end":{"line":211,"column":null}},"type":"if","locations":[{"start":{"line":211,"column":6},"end":{"line":211,"column":null}},{"start":{},"end":{}}],"line":211},"24":{"loc":{"start":{"line":214,"column":4},"end":{"line":216,"column":null}},"type":"if","locations":[{"start":{"line":214,"column":4},"end":{"line":216,"column":null}},{"start":{},"end":{}}],"line":214},"25":{"loc":{"start":{"line":214,"column":8},"end":{"line":214,"column":70}},"type":"binary-expr","locations":[{"start":{"line":214,"column":8},"end":{"line":214,"column":48}},{"start":{"line":214,"column":48},"end":{"line":214,"column":70}}],"line":214},"26":{"loc":{"start":{"line":217,"column":4},"end":{"line":217,"column":null}},"type":"if","locations":[{"start":{"line":217,"column":4},"end":{"line":217,"column":null}},{"start":{},"end":{}}],"line":217},"27":{"loc":{"start":{"line":217,"column":8},"end":{"line":217,"column":40}},"type":"binary-expr","locations":[{"start":{"line":217,"column":8},"end":{"line":217,"column":18}},{"start":{"line":217,"column":18},"end":{"line":217,"column":40}}],"line":217},"28":{"loc":{"start":{"line":222,"column":4},"end":{"line":222,"column":null}},"type":"if","locations":[{"start":{"line":222,"column":4},"end":{"line":222,"column":null}},{"start":{},"end":{}}],"line":222},"29":{"loc":{"start":{"line":222,"column":8},"end":{"line":222,"column":86}},"type":"binary-expr","locations":[{"start":{"line":222,"column":8},"end":{"line":222,"column":45}},{"start":{"line":222,"column":45},"end":{"line":222,"column":86}}],"line":222},"30":{"loc":{"start":{"line":228,"column":4},"end":{"line":228,"column":null}},"type":"if","locations":[{"start":{"line":228,"column":4},"end":{"line":228,"column":null}},{"start":{},"end":{}}],"line":228},"31":{"loc":{"start":{"line":228,"column":15},"end":{"line":228,"column":45}},"type":"binary-expr","locations":[{"start":{"line":228,"column":15},"end":{"line":228,"column":40}},{"start":{"line":228,"column":40},"end":{"line":228,"column":45}}],"line":228},"32":{"loc":{"start":{"line":231,"column":58},"end":{"line":231,"column":102}},"type":"cond-expr","locations":[{"start":{"line":231,"column":79},"end":{"line":231,"column":91}},{"start":{"line":231,"column":91},"end":{"line":231,"column":102}}],"line":231},"33":{"loc":{"start":{"line":236,"column":4},"end":{"line":236,"column":null}},"type":"if","locations":[{"start":{"line":236,"column":4},"end":{"line":236,"column":null}},{"start":{},"end":{}}],"line":236},"34":{"loc":{"start":{"line":237,"column":4},"end":{"line":244,"column":null}},"type":"if","locations":[{"start":{"line":237,"column":4},"end":{"line":244,"column":null}},{"start":{},"end":{}}],"line":237},"35":{"loc":{"start":{"line":238,"column":6},"end":{"line":238,"column":null}},"type":"if","locations":[{"start":{"line":238,"column":6},"end":{"line":238,"column":null}},{"start":{},"end":{}}],"line":238},"36":{"loc":{"start":{"line":241,"column":6},"end":{"line":243,"column":null}},"type":"if","locations":[{"start":{"line":241,"column":6},"end":{"line":243,"column":null}},{"start":{},"end":{}}],"line":241},"37":{"loc":{"start":{"line":241,"column":10},"end":{"line":241,"column":99}},"type":"binary-expr","locations":[{"start":{"line":241,"column":10},"end":{"line":241,"column":20}},{"start":{"line":241,"column":20},"end":{"line":241,"column":61}},{"start":{"line":241,"column":61},"end":{"line":241,"column":99}}],"line":241}},"s":{"0":1,"1":21,"2":3,"3":21,"4":1,"5":1,"6":3,"7":2,"8":2,"9":1,"10":1,"11":0,"12":1,"13":1,"14":1,"15":0,"16":1,"17":21,"18":0,"19":0,"20":0,"21":0,"22":1,"23":1,"24":1,"25":1,"26":1,"27":0,"28":1,"29":1,"30":1,"31":2,"32":1,"33":1,"34":2,"35":1,"36":1,"37":2,"38":1,"39":1,"40":21,"41":7,"42":21,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":21,"51":0,"52":0,"53":0,"54":21,"55":1,"56":1,"57":7,"58":7,"59":7,"60":7,"61":7,"62":7,"63":7,"64":1,"65":1,"66":1,"67":1,"68":1,"69":2,"70":2,"71":7,"72":7,"73":4,"74":4,"75":4,"76":4,"77":0,"78":4,"79":1,"80":3,"81":2,"82":2,"83":2,"84":1,"85":1,"86":2,"87":0,"88":2,"89":1,"90":2,"91":2,"92":7,"93":0,"94":0,"95":0,"96":7,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":7,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":7,"114":7,"115":1,"116":1},"f":{"0":21,"1":3,"2":1,"3":3,"4":2,"5":2,"6":1,"7":1,"8":0,"9":0,"10":0,"11":1,"12":1,"13":1,"14":2,"15":2,"16":1,"17":0,"18":0,"19":0,"20":0,"21":1,"22":7,"23":1,"24":1,"25":2,"26":2,"27":4,"28":2,"29":0,"30":0,"31":0,"32":0,"33":1},"b":{"0":[1,0],"1":[1,0],"2":[0,1],"3":[0,1],"4":[0,0],"5":[1,0],"6":[0,1],"7":[1,0],"8":[1,0],"9":[2,2],"10":[2,2],"11":[1,0],"12":[7,14],"13":[0,0],"14":[0,0],"15":[0,0],"16":[1,0],"17":[2,0],"18":[0,4],"19":[4,2],"20":[1,3],"21":[4,2],"22":[2,1],"23":[1,1],"24":[0,2],"25":[2,0],"26":[1,1],"27":[2,1],"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]},"meta":{"lastBranch":38,"lastFunction":34,"lastStatement":117,"seen":{"s:8:31:8:Infinity":0,"f:17:16:17:34":0,"s:18:8:20:Infinity":1,"f:18:8:18:16":1,"s:18:48:20:Infinity":2,"s:22:2:60:Infinity":3,"f:29:19:29:26":2,"s:30:20:30:Infinity":4,"b:30:27:30:36:30:36:30:38":0,"s:31:10:35:Infinity":5,"f:32:13:32:21":3,"s:32:27:32:66":6,"f:33:13:33:18":4,"s:33:24:33:35":7,"f:34:13:34:21":5,"s:34:28:34:56":8,"f:45:4:45:11":6,"s:46:23:46:Infinity":9,"b:46:30:46:53:46:53:46:55":1,"b:47:6:49:Infinity:undefined:undefined:undefined:undefined":2,"s:47:6:49:Infinity":10,"s:48:8:48:Infinity":11,"s:50:12:50:Infinity":12,"f:50:44:50:50":7,"s:50:56:50:80":13,"b:51:6:51:Infinity:undefined:undefined:undefined:undefined":3,"s:51:6:51:Infinity":14,"s:51:14:51:Infinity":15,"s:52:6:58:Infinity":16,"s:62:2:108:Infinity":17,"f:67:17:67:24":8,"s:68:20:68:Infinity":18,"b:68:27:68:36:68:36:68:38":4,"s:69:10:72:Infinity":19,"f:70:13:70:18":9,"s:70:24:70:33":20,"f:71:13:71:21":10,"s:71:28:71:56":21,"f:83:4:83:11":11,"s:84:21:84:Infinity":22,"b:84:28:84:49:84:49:84:51":5,"s:85:19:85:Infinity":23,"s:86:19:86:Infinity":24,"f:86:30:86:36":12,"s:86:42:86:62":25,"b:87:6:87:Infinity:undefined:undefined:undefined:undefined":6,"s:87:6:87:Infinity":26,"s:87:17:87:Infinity":27,"s:88:20:88:Infinity":28,"b:88:37:88:108:88:108:88:Infinity":7,"b:88:37:88:100:88:100:88:108":8,"f:88:49:88:55":13,"s:88:61:88:89":29,"s:89:12:91:Infinity":30,"f:89:51:89:Infinity":14,"s:90:15:90:Infinity":31,"b:90:15:90:39:90:39:90:Infinity":9,"s:92:47:92:Infinity":32,"s:93:6:93:Infinity":33,"s:93:32:93:Infinity":34,"b:93:54:93:76:93:76:93:81":10,"s:94:21:94:Infinity":35,"s:95:22:98:Infinity":36,"f:96:9:96:17":15,"s:96:23:96:42":37,"f:98:9:98:14":16,"s:98:21:98:64":38,"s:99:6:106:Infinity":39,"b:102:20:102:32:102:32:102:Infinity":11,"b:110:2:110:Infinity:undefined:undefined:undefined:undefined":12,"s:110:2:110:Infinity":40,"s:110:23:110:Infinity":41,"s:112:2:129:Infinity":42,"f:120:4:120:11":17,"s:121:28:121:Infinity":43,"s:122:21:122:Infinity":44,"s:123:6:123:Infinity":45,"b:123:29:123:Infinity:undefined:undefined:undefined:undefined":13,"s:123:29:123:Infinity":46,"s:123:41:123:Infinity":47,"b:123:61:123:83:123:83:123:88":14,"s:124:6:127:Infinity":48,"f:126:19:126:24":18,"s:126:31:126:103":49,"b:126:77:126:99:126:99:126:101":15,"s:131:2:146:Infinity":50,"f:139:4:139:11":19,"s:140:64:140:Infinity":51,"s:141:6:144:Infinity":52,"f:143:33:143:38":20,"s:143:58:143:105":53,"s:148:2:169:Infinity":54,"f:156:4:156:11":21,"s:157:16:157:Infinity":55,"s:158:6:167:Infinity":56,"b:165:50:165:72:165:72:165:Infinity":16,"f:178:9:178:37":22,"s:179:28:179:Infinity":57,"s:180:21:180:Infinity":58,"s:181:23:181:Infinity":59,"s:186:21:186:Infinity":60,"s:187:17:187:Infinity":61,"s:188:21:188:Infinity":62,"s:189:23:196:Infinity":63,"f:189:23:189:50":23,"s:190:4:190:Infinity":64,"s:191:26:191:Infinity":65,"s:192:21:192:Infinity":66,"f:192:40:192:45":24,"s:192:51:192:70":67,"s:193:4:195:Infinity":68,"f:194:12:194:20":25,"s:194:26:194:41":69,"f:194:43:194:48":26,"s:194:54:194:105":70,"b:194:68:194:102:194:102:194:104":17,"s:198:2:198:Infinity":71,"s:199:2:220:Infinity":72,"f:199:58:199:65":27,"s:200:16:200:Infinity":73,"s:201:21:201:Infinity":74,"s:202:19:202:Infinity":75,"b:203:4:205:Infinity:undefined:undefined:undefined:undefined":18,"s:203:4:205:Infinity":76,"b:203:8:203:21:203:21:203:30":19,"s:204:6:204:Infinity":77,"b:206:4:208:Infinity:undefined:undefined:undefined:undefined":20,"s:206:4:208:Infinity":78,"b:206:8:206:20:206:20:206:59":21,"s:207:6:207:Infinity":79,"b:209:4:213:Infinity:undefined:undefined:undefined:undefined":22,"s:209:4:213:Infinity":80,"s:210:19:210:Infinity":81,"b:211:6:211:Infinity:undefined:undefined:undefined:undefined":23,"s:211:6:211:Infinity":82,"f:211:22:211:28":28,"s:211:34:211:54":83,"s:211:57:211:Infinity":84,"s:212:6:212:Infinity":85,"b:214:4:216:Infinity:undefined:undefined:undefined:undefined":24,"s:214:4:216:Infinity":86,"b:214:8:214:48:214:48:214:70":25,"s:215:6:215:Infinity":87,"b:217:4:217:Infinity:undefined:undefined:undefined:undefined":26,"s:217:4:217:Infinity":88,"b:217:8:217:18:217:18:217:40":27,"s:217:40:217:Infinity":89,"s:218:4:218:Infinity":90,"s:219:4:219:Infinity":91,"s:221:2:224:Infinity":92,"f:221:60:221:67":29,"b:222:4:222:Infinity:undefined:undefined:undefined:undefined":28,"s:222:4:222:Infinity":93,"b:222:8:222:45:222:45:222:86":29,"s:222:86:222:Infinity":94,"s:223:4:223:Infinity":95,"s:226:8:233:Infinity":96,"f:226:8:226:18":30,"s:227:16:227:Infinity":97,"b:228:4:228:Infinity:undefined:undefined:undefined:undefined":30,"s:228:4:228:Infinity":98,"b:228:15:228:40:228:40:228:45":31,"s:228:69:228:Infinity":99,"s:229:4:229:Infinity":100,"s:230:4:232:Infinity":101,"f:230:47:230:54":31,"s:231:6:231:Infinity":102,"b:231:79:231:91:231:91:231:102":32,"s:234:17:245:Infinity":103,"f:234:29:234:45":32,"s:235:22:235:Infinity":104,"b:236:4:236:Infinity:undefined:undefined:undefined:undefined":33,"s:236:4:236:Infinity":105,"s:236:35:236:Infinity":106,"b:237:4:244:Infinity:undefined:undefined:undefined:undefined":34,"s:237:4:244:Infinity":107,"b:238:6:238:Infinity:undefined:undefined:undefined:undefined":35,"s:238:6:238:Infinity":108,"s:238:46:238:Infinity":109,"s:239:21:239:Infinity":110,"b:241:6:243:Infinity:undefined:undefined:undefined:undefined":36,"s:241:6:243:Infinity":111,"b:241:10:241:20:241:20:241:61:241:61:241:99":37,"s:242:8:242:Infinity":112,"s:246:22:246:Infinity":113,"s:247:2:250:Infinity":114,"f:247:16:247:32":33,"s:248:4:248:Infinity":115,"s:249:4:249:Infinity":116},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/server.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/server.ts","statementMap":{"0":{"start":{"line":35,"column":17},"end":{"line":44,"column":null}},"1":{"start":{"line":48,"column":2},"end":{"line":69,"column":null}},"2":{"start":{"line":49,"column":4},"end":{"line":68,"column":null}},"3":{"start":{"line":52,"column":8},"end":{"line":52,"column":null}},"4":{"start":{"line":52,"column":65},"end":{"line":52,"column":null}},"5":{"start":{"line":53,"column":8},"end":{"line":66,"column":null}},"6":{"start":{"line":54,"column":22},"end":{"line":61,"column":null}},"7":{"start":{"line":62,"column":10},"end":{"line":62,"column":null}},"8":{"start":{"line":62,"column":39},"end":{"line":62,"column":null}},"9":{"start":{"line":63,"column":10},"end":{"line":63,"column":null}},"10":{"start":{"line":65,"column":10},"end":{"line":65,"column":null}},"11":{"start":{"line":74,"column":17},"end":{"line":74,"column":null}},"12":{"start":{"line":75,"column":16},"end":{"line":75,"column":null}},"13":{"start":{"line":76,"column":2},"end":{"line":76,"column":null}},"14":{"start":{"line":77,"column":2},"end":{"line":77,"column":null}},"15":{"start":{"line":78,"column":2},"end":{"line":78,"column":null}},"16":{"start":{"line":79,"column":2},"end":{"line":79,"column":null}},"17":{"start":{"line":80,"column":2},"end":{"line":80,"column":null}},"18":{"start":{"line":81,"column":2},"end":{"line":81,"column":null}},"19":{"start":{"line":82,"column":2},"end":{"line":82,"column":null}},"20":{"start":{"line":83,"column":2},"end":{"line":83,"column":null}},"21":{"start":{"line":84,"column":2},"end":{"line":84,"column":null}},"22":{"start":{"line":85,"column":2},"end":{"line":85,"column":null}},"23":{"start":{"line":86,"column":2},"end":{"line":86,"column":null}},"24":{"start":{"line":87,"column":2},"end":{"line":87,"column":null}},"25":{"start":{"line":88,"column":2},"end":{"line":88,"column":null}},"26":{"start":{"line":89,"column":2},"end":{"line":89,"column":null}},"27":{"start":{"line":90,"column":2},"end":{"line":90,"column":null}},"28":{"start":{"line":91,"column":2},"end":{"line":91,"column":null}},"29":{"start":{"line":92,"column":2},"end":{"line":92,"column":null}},"30":{"start":{"line":93,"column":2},"end":{"line":93,"column":null}},"31":{"start":{"line":94,"column":2},"end":{"line":94,"column":null}},"32":{"start":{"line":95,"column":2},"end":{"line":95,"column":null}},"33":{"start":{"line":96,"column":2},"end":{"line":96,"column":null}},"34":{"start":{"line":97,"column":2},"end":{"line":97,"column":null}},"35":{"start":{"line":98,"column":2},"end":{"line":98,"column":null}},"36":{"start":{"line":99,"column":2},"end":{"line":99,"column":null}},"37":{"start":{"line":100,"column":2},"end":{"line":100,"column":null}}},"fnMap":{"0":{"name":"buildServer","decl":{"start":{"line":34,"column":16},"end":{"line":34,"column":28}},"loc":{"start":{"line":34,"column":57},"end":{"line":101,"column":null}},"line":34},"1":{"name":"(anonymous_1)","decl":{"start":{"line":51,"column":14},"end":{"line":51,"column":21}},"loc":{"start":{"line":51,"column":66},"end":{"line":67,"column":null}},"line":51}},"branchMap":{"0":{"loc":{"start":{"line":48,"column":2},"end":{"line":69,"column":null}},"type":"if","locations":[{"start":{"line":48,"column":2},"end":{"line":69,"column":null}},{"start":{},"end":{}}],"line":48},"1":{"loc":{"start":{"line":52,"column":8},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":52,"column":8},"end":{"line":52,"column":null}},{"start":{},"end":{}}],"line":52},"2":{"loc":{"start":{"line":62,"column":10},"end":{"line":62,"column":null}},"type":"if","locations":[{"start":{"line":62,"column":10},"end":{"line":62,"column":null}},{"start":{},"end":{}}],"line":62},"3":{"loc":{"start":{"line":74,"column":17},"end":{"line":74,"column":null}},"type":"binary-expr","locations":[{"start":{"line":74,"column":17},"end":{"line":74,"column":31}},{"start":{"line":74,"column":31},"end":{"line":74,"column":null}}],"line":74}},"s":{"0":21,"1":21,"2":7,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":21,"12":21,"13":21,"14":21,"15":21,"16":21,"17":21,"18":21,"19":21,"20":21,"21":21,"22":21,"23":21,"24":21,"25":21,"26":21,"27":21,"28":21,"29":21,"30":21,"31":21,"32":21,"33":21,"34":21,"35":21,"36":21,"37":21},"f":{"0":21,"1":0},"b":{"0":[7,14],"1":[0,0],"2":[0,0],"3":[21,20]},"meta":{"lastBranch":4,"lastFunction":2,"lastStatement":38,"seen":{"f:34:16:34:28":0,"s:35:17:44:Infinity":0,"b:48:2:69:Infinity:undefined:undefined:undefined:undefined":0,"s:48:2:69:Infinity":1,"s:49:4:68:Infinity":2,"f:51:14:51:21":1,"b:52:8:52:Infinity:undefined:undefined:undefined:undefined":1,"s:52:8:52:Infinity":3,"s:52:65:52:Infinity":4,"s:53:8:66:Infinity":5,"s:54:22:61:Infinity":6,"b:62:10:62:Infinity:undefined:undefined:undefined:undefined":2,"s:62:10:62:Infinity":7,"s:62:39:62:Infinity":8,"s:63:10:63:Infinity":9,"s:65:10:65:Infinity":10,"s:74:17:74:Infinity":11,"b:74:17:74:31:74:31:74:Infinity":3,"s:75:16:75:Infinity":12,"s:76:2:76:Infinity":13,"s:77:2:77:Infinity":14,"s:78:2:78:Infinity":15,"s:79:2:79:Infinity":16,"s:80:2:80:Infinity":17,"s:81:2:81:Infinity":18,"s:82:2:82:Infinity":19,"s:83:2:83:Infinity":20,"s:84:2:84:Infinity":21,"s:85:2:85:Infinity":22,"s:86:2:86:Infinity":23,"s:87:2:87:Infinity":24,"s:88:2:88:Infinity":25,"s:89:2:89:Infinity":26,"s:90:2:90:Infinity":27,"s:91:2:91:Infinity":28,"s:92:2:92:Infinity":29,"s:93:2:93:Infinity":30,"s:94:2:94:Infinity":31,"s:95:2:95:Infinity":32,"s:96:2:96:Infinity":33,"s:97:2:97:Infinity":34,"s:98:2:98:Infinity":35,"s:99:2:99:Infinity":36,"s:100:2:100:Infinity":37},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/writeflow.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/writeflow.ts","statementMap":{"0":{"start":{"line":32,"column":14},"end":{"line":32,"column":null}},"1":{"start":{"line":33,"column":14},"end":{"line":33,"column":null}},"2":{"start":{"line":34,"column":18},"end":{"line":34,"column":null}},"3":{"start":{"line":35,"column":17},"end":{"line":35,"column":null}},"4":{"start":{"line":37,"column":8},"end":{"line":40,"column":null}},"5":{"start":{"line":38,"column":4},"end":{"line":38,"column":null}},"6":{"start":{"line":39,"column":4},"end":{"line":39,"column":null}},"7":{"start":{"line":42,"column":13},"end":{"line":42,"column":null}},"8":{"start":{"line":43,"column":2},"end":{"line":43,"column":null}},"9":{"start":{"line":43,"column":19},"end":{"line":43,"column":null}},"10":{"start":{"line":46,"column":24},"end":{"line":46,"column":null}},"11":{"start":{"line":47,"column":8},"end":{"line":50,"column":null}},"12":{"start":{"line":48,"column":4},"end":{"line":49,"column":null}},"13":{"start":{"line":48,"column":31},"end":{"line":48,"column":null}},"14":{"start":{"line":49,"column":9},"end":{"line":49,"column":null}},"15":{"start":{"line":49,"column":36},"end":{"line":49,"column":88}},"16":{"start":{"line":49,"column":50},"end":{"line":49,"column":88}},"17":{"start":{"line":49,"column":77},"end":{"line":49,"column":88}},"18":{"start":{"line":51,"column":2},"end":{"line":51,"column":null}},"19":{"start":{"line":52,"column":2},"end":{"line":52,"column":null}},"20":{"start":{"line":54,"column":2},"end":{"line":57,"column":null}},"21":{"start":{"line":55,"column":14},"end":{"line":55,"column":null}},"22":{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},"23":{"start":{"line":56,"column":20},"end":{"line":56,"column":null}},"24":{"start":{"line":62,"column":4},"end":{"line":65,"column":null}},"25":{"start":{"line":66,"column":2},"end":{"line":68,"column":null}},"26":{"start":{"line":67,"column":4},"end":{"line":67,"column":null}},"27":{"start":{"line":70,"column":20},"end":{"line":70,"column":null}},"28":{"start":{"line":72,"column":2},"end":{"line":79,"column":null}},"29":{"start":{"line":73,"column":4},"end":{"line":73,"column":null}},"30":{"start":{"line":74,"column":4},"end":{"line":78,"column":null}},"31":{"start":{"line":85,"column":2},"end":{"line":113,"column":null}},"32":{"start":{"line":86,"column":17},"end":{"line":86,"column":null}},"33":{"start":{"line":87,"column":4},"end":{"line":112,"column":null}},"34":{"start":{"line":88,"column":21},"end":{"line":93,"column":null}},"35":{"start":{"line":94,"column":6},"end":{"line":94,"column":null}},"36":{"start":{"line":94,"column":28},"end":{"line":94,"column":null}},"37":{"start":{"line":95,"column":6},"end":{"line":107,"column":null}},"38":{"start":{"line":96,"column":22},"end":{"line":96,"column":null}},"39":{"start":{"line":97,"column":8},"end":{"line":97,"column":null}},"40":{"start":{"line":98,"column":8},"end":{"line":106,"column":null}},"41":{"start":{"line":108,"column":6},"end":{"line":108,"column":null}},"42":{"start":{"line":110,"column":22},"end":{"line":110,"column":null}},"43":{"start":{"line":111,"column":6},"end":{"line":111,"column":null}},"44":{"start":{"line":111,"column":28},"end":{"line":111,"column":null}},"45":{"start":{"line":115,"column":43},"end":{"line":115,"column":null}},"46":{"start":{"line":116,"column":2},"end":{"line":116,"column":null}},"47":{"start":{"line":116,"column":18},"end":{"line":116,"column":null}},"48":{"start":{"line":117,"column":2},"end":{"line":117,"column":null}},"49":{"start":{"line":117,"column":16},"end":{"line":117,"column":null}},"50":{"start":{"line":118,"column":2},"end":{"line":118,"column":null}},"51":{"start":{"line":118,"column":27},"end":{"line":118,"column":null}},"52":{"start":{"line":120,"column":17},"end":{"line":120,"column":null}},"53":{"start":{"line":121,"column":2},"end":{"line":121,"column":null}},"54":{"start":{"line":122,"column":2},"end":{"line":125,"column":null}}},"fnMap":{"0":{"name":"guardedServiceCall","decl":{"start":{"line":31,"column":22},"end":{"line":31,"column":41}},"loc":{"start":{"line":31,"column":112},"end":{"line":126,"column":null}},"line":31},"1":{"name":"(anonymous_1)","decl":{"start":{"line":37,"column":8},"end":{"line":37,"column":16}},"loc":{"start":{"line":37,"column":42},"end":{"line":40,"column":null}},"line":37},"2":{"name":"(anonymous_2)","decl":{"start":{"line":47,"column":8},"end":{"line":47,"column":19}},"loc":{"start":{"line":47,"column":40},"end":{"line":50,"column":null}},"line":47}},"branchMap":{"0":{"loc":{"start":{"line":35,"column":17},"end":{"line":35,"column":null}},"type":"binary-expr","locations":[{"start":{"line":35,"column":17},"end":{"line":35,"column":31}},{"start":{"line":35,"column":31},"end":{"line":35,"column":null}}],"line":35},"1":{"loc":{"start":{"line":43,"column":2},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":2},"end":{"line":43,"column":null}},{"start":{},"end":{}}],"line":43},"2":{"loc":{"start":{"line":43,"column":24},"end":{"line":43,"column":53}},"type":"binary-expr","locations":[{"start":{"line":43,"column":24},"end":{"line":43,"column":37}},{"start":{"line":43,"column":37},"end":{"line":43,"column":53}}],"line":43},"3":{"loc":{"start":{"line":48,"column":4},"end":{"line":49,"column":null}},"type":"if","locations":[{"start":{"line":48,"column":4},"end":{"line":49,"column":null}},{"start":{"line":49,"column":9},"end":{"line":49,"column":null}}],"line":48},"4":{"loc":{"start":{"line":49,"column":9},"end":{"line":49,"column":null}},"type":"if","locations":[{"start":{"line":49,"column":9},"end":{"line":49,"column":null}},{"start":{},"end":{}}],"line":49},"5":{"loc":{"start":{"line":49,"column":50},"end":{"line":49,"column":88}},"type":"if","locations":[{"start":{"line":49,"column":50},"end":{"line":49,"column":88}},{"start":{},"end":{}}],"line":49},"6":{"loc":{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},"type":"if","locations":[{"start":{"line":56,"column":4},"end":{"line":56,"column":null}},{"start":{},"end":{}}],"line":56},"7":{"loc":{"start":{"line":56,"column":25},"end":{"line":56,"column":59}},"type":"binary-expr","locations":[{"start":{"line":56,"column":25},"end":{"line":56,"column":37}},{"start":{"line":56,"column":37},"end":{"line":56,"column":59}}],"line":56},"8":{"loc":{"start":{"line":62,"column":4},"end":{"line":65,"column":null}},"type":"binary-expr","locations":[{"start":{"line":62,"column":4},"end":{"line":62,"column":null}},{"start":{"line":63,"column":4},"end":{"line":63,"column":null}},{"start":{"line":63,"column":32},"end":{"line":64,"column":null}},{"start":{"line":64,"column":49},"end":{"line":65,"column":null}}],"line":62},"9":{"loc":{"start":{"line":65,"column":5},"end":{"line":65,"column":48}},"type":"binary-expr","locations":[{"start":{"line":65,"column":5},"end":{"line":65,"column":43}},{"start":{"line":65,"column":43},"end":{"line":65,"column":48}}],"line":65},"10":{"loc":{"start":{"line":66,"column":2},"end":{"line":68,"column":null}},"type":"if","locations":[{"start":{"line":66,"column":2},"end":{"line":68,"column":null}},{"start":{},"end":{}}],"line":66},"11":{"loc":{"start":{"line":66,"column":6},"end":{"line":66,"column":73}},"type":"binary-expr","locations":[{"start":{"line":66,"column":6},"end":{"line":66,"column":26}},{"start":{"line":66,"column":26},"end":{"line":66,"column":49}},{"start":{"line":66,"column":49},"end":{"line":66,"column":73}}],"line":66},"12":{"loc":{"start":{"line":70,"column":57},"end":{"line":70,"column":77}},"type":"binary-expr","locations":[{"start":{"line":70,"column":57},"end":{"line":70,"column":71}},{"start":{"line":70,"column":71},"end":{"line":70,"column":77}}],"line":70},"13":{"loc":{"start":{"line":70,"column":83},"end":{"line":70,"column":100}},"type":"binary-expr","locations":[{"start":{"line":70,"column":83},"end":{"line":70,"column":95}},{"start":{"line":70,"column":95},"end":{"line":70,"column":100}}],"line":70},"14":{"loc":{"start":{"line":72,"column":2},"end":{"line":79,"column":null}},"type":"if","locations":[{"start":{"line":72,"column":2},"end":{"line":79,"column":null}},{"start":{},"end":{}}],"line":72},"15":{"loc":{"start":{"line":85,"column":2},"end":{"line":113,"column":null}},"type":"if","locations":[{"start":{"line":85,"column":2},"end":{"line":113,"column":null}},{"start":{},"end":{}}],"line":85},"16":{"loc":{"start":{"line":87,"column":4},"end":{"line":112,"column":null}},"type":"if","locations":[{"start":{"line":87,"column":4},"end":{"line":112,"column":null}},{"start":{"line":109,"column":11},"end":{"line":112,"column":null}}],"line":87},"17":{"loc":{"start":{"line":88,"column":21},"end":{"line":93,"column":null}},"type":"cond-expr","locations":[{"start":{"line":89,"column":10},"end":{"line":92,"column":null}},{"start":{"line":93,"column":10},"end":{"line":93,"column":null}}],"line":88},"18":{"loc":{"start":{"line":90,"column":65},"end":{"line":90,"column":81}},"type":"binary-expr","locations":[{"start":{"line":90,"column":65},"end":{"line":90,"column":79}},{"start":{"line":90,"column":79},"end":{"line":90,"column":81}}],"line":90},"19":{"loc":{"start":{"line":91,"column":17},"end":{"line":91,"column":69}},"type":"cond-expr","locations":[{"start":{"line":91,"column":28},"end":{"line":91,"column":66}},{"start":{"line":91,"column":66},"end":{"line":91,"column":69}}],"line":91},"20":{"loc":{"start":{"line":94,"column":6},"end":{"line":94,"column":null}},"type":"if","locations":[{"start":{"line":94,"column":6},"end":{"line":94,"column":null}},{"start":{},"end":{}}],"line":94},"21":{"loc":{"start":{"line":95,"column":6},"end":{"line":107,"column":null}},"type":"if","locations":[{"start":{"line":95,"column":6},"end":{"line":107,"column":null}},{"start":{},"end":{}}],"line":95},"22":{"loc":{"start":{"line":111,"column":6},"end":{"line":111,"column":null}},"type":"if","locations":[{"start":{"line":111,"column":6},"end":{"line":111,"column":null}},{"start":{},"end":{}}],"line":111},"23":{"loc":{"start":{"line":116,"column":2},"end":{"line":116,"column":null}},"type":"if","locations":[{"start":{"line":116,"column":2},"end":{"line":116,"column":null}},{"start":{},"end":{}}],"line":116},"24":{"loc":{"start":{"line":117,"column":2},"end":{"line":117,"column":null}},"type":"if","locations":[{"start":{"line":117,"column":2},"end":{"line":117,"column":null}},{"start":{},"end":{}}],"line":117},"25":{"loc":{"start":{"line":118,"column":2},"end":{"line":118,"column":null}},"type":"if","locations":[{"start":{"line":118,"column":2},"end":{"line":118,"column":null}},{"start":{},"end":{}}],"line":118},"26":{"loc":{"start":{"line":124,"column":8},"end":{"line":124,"column":null}},"type":"cond-expr","locations":[{"start":{"line":124,"column":41},"end":{"line":124,"column":73}},{"start":{"line":124,"column":73},"end":{"line":124,"column":null}}],"line":124}},"s":{"0":65,"1":65,"2":65,"3":65,"4":65,"5":10,"6":10,"7":65,"8":65,"9":2,"10":63,"11":63,"12":126,"13":42,"14":84,"15":0,"16":0,"17":0,"18":63,"19":65,"20":65,"21":42,"22":42,"23":4,"24":59,"25":65,"26":1,"27":58,"28":65,"29":17,"30":17,"31":41,"32":11,"33":11,"34":7,"35":7,"36":1,"37":6,"38":5,"39":5,"40":5,"41":1,"42":4,"43":4,"44":2,"45":33,"46":33,"47":24,"48":33,"49":24,"50":33,"51":1,"52":33,"53":33,"54":33},"f":{"0":65,"1":10,"2":126},"b":{"0":[65,64],"1":[2,63],"2":[2,0],"3":[42,84],"4":[0,84],"5":[0,0],"6":[4,38],"7":[4,0],"8":[59,57,57,57],"9":[57,57],"10":[1,64],"11":[65,2,1],"12":[58,19],"13":[65,19],"14":[17,48],"15":[11,30],"16":[7,4],"17":[3,4],"18":[3,0],"19":[0,3],"20":[1,6],"21":[5,1],"22":[2,2],"23":[24,9],"24":[24,9],"25":[1,32],"26":[1,32]},"meta":{"lastBranch":27,"lastFunction":3,"lastStatement":55,"seen":{"f:31:22:31:41":0,"s:32:14:32:Infinity":0,"s:33:14:33:Infinity":1,"s:34:18:34:Infinity":2,"s:35:17:35:Infinity":3,"b:35:17:35:31:35:31:35:Infinity":0,"s:37:8:40:Infinity":4,"f:37:8:37:16":1,"s:38:4:38:Infinity":5,"s:39:4:39:Infinity":6,"s:42:13:42:Infinity":7,"b:43:2:43:Infinity:undefined:undefined:undefined:undefined":1,"s:43:2:43:Infinity":8,"s:43:19:43:Infinity":9,"b:43:24:43:37:43:37:43:53":2,"s:46:24:46:Infinity":10,"s:47:8:50:Infinity":11,"f:47:8:47:19":2,"b:48:4:49:Infinity:49:9:49:Infinity":3,"s:48:4:49:Infinity":12,"s:48:31:48:Infinity":13,"b:49:9:49:Infinity:undefined:undefined:undefined:undefined":4,"s:49:9:49:Infinity":14,"s:49:36:49:88":15,"b:49:50:49:88:undefined:undefined:undefined:undefined":5,"s:49:50:49:88":16,"s:49:77:49:88":17,"s:51:2:51:Infinity":18,"s:52:2:52:Infinity":19,"s:54:2:57:Infinity":20,"s:55:14:55:Infinity":21,"b:56:4:56:Infinity:undefined:undefined:undefined:undefined":6,"s:56:4:56:Infinity":22,"s:56:20:56:Infinity":23,"b:56:25:56:37:56:37:56:59":7,"s:62:4:65:Infinity":24,"b:62:4:62:Infinity:63:4:63:Infinity:63:32:64:Infinity:64:49:65:Infinity":8,"b:65:5:65:43:65:43:65:48":9,"b:66:2:68:Infinity:undefined:undefined:undefined:undefined":10,"s:66:2:68:Infinity":25,"b:66:6:66:26:66:26:66:49:66:49:66:73":11,"s:67:4:67:Infinity":26,"s:70:20:70:Infinity":27,"b:70:57:70:71:70:71:70:77":12,"b:70:83:70:95:70:95:70:100":13,"b:72:2:79:Infinity:undefined:undefined:undefined:undefined":14,"s:72:2:79:Infinity":28,"s:73:4:73:Infinity":29,"s:74:4:78:Infinity":30,"b:85:2:113:Infinity:undefined:undefined:undefined:undefined":15,"s:85:2:113:Infinity":31,"s:86:17:86:Infinity":32,"b:87:4:112:Infinity:109:11:112:Infinity":16,"s:87:4:112:Infinity":33,"s:88:21:93:Infinity":34,"b:89:10:92:Infinity:93:10:93:Infinity":17,"b:90:65:90:79:90:79:90:81":18,"b:91:28:91:66:91:66:91:69":19,"b:94:6:94:Infinity:undefined:undefined:undefined:undefined":20,"s:94:6:94:Infinity":35,"s:94:28:94:Infinity":36,"b:95:6:107:Infinity:undefined:undefined:undefined:undefined":21,"s:95:6:107:Infinity":37,"s:96:22:96:Infinity":38,"s:97:8:97:Infinity":39,"s:98:8:106:Infinity":40,"s:108:6:108:Infinity":41,"s:110:22:110:Infinity":42,"b:111:6:111:Infinity:undefined:undefined:undefined:undefined":22,"s:111:6:111:Infinity":43,"s:111:28:111:Infinity":44,"s:115:43:115:Infinity":45,"b:116:2:116:Infinity:undefined:undefined:undefined:undefined":23,"s:116:2:116:Infinity":46,"s:116:18:116:Infinity":47,"b:117:2:117:Infinity:undefined:undefined:undefined:undefined":24,"s:117:2:117:Infinity":48,"s:117:16:117:Infinity":49,"b:118:2:118:Infinity:undefined:undefined:undefined:undefined":25,"s:118:2:118:Infinity":50,"s:118:27:118:Infinity":51,"s:120:17:120:Infinity":52,"s:121:2:121:Infinity":53,"s:122:2:125:Infinity":54,"b:124:41:124:73:124:73:124:Infinity":26},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/addons.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/addons.ts","statementMap":{"0":{"start":{"line":6,"column":16},"end":{"line":6,"column":null}},"1":{"start":{"line":9,"column":2},"end":{"line":61,"column":null}},"2":{"start":{"line":22,"column":12},"end":{"line":31,"column":null}},"3":{"start":{"line":23,"column":20},"end":{"line":23,"column":null}},"4":{"start":{"line":24,"column":8},"end":{"line":29,"column":null}},"5":{"start":{"line":25,"column":10},"end":{"line":28,"column":null}},"6":{"start":{"line":30,"column":8},"end":{"line":30,"column":null}},"7":{"start":{"line":32,"column":6},"end":{"line":47,"column":null}},"8":{"start":{"line":34,"column":8},"end":{"line":34,"column":null}},"9":{"start":{"line":34,"column":33},"end":{"line":34,"column":null}},"10":{"start":{"line":35,"column":21},"end":{"line":35,"column":null}},"11":{"start":{"line":36,"column":8},"end":{"line":46,"column":null}},"12":{"start":{"line":48,"column":19},"end":{"line":48,"column":null}},"13":{"start":{"line":49,"column":28},"end":{"line":49,"column":null}},"14":{"start":{"line":50,"column":6},"end":{"line":59,"column":null}},"15":{"start":{"line":51,"column":34},"end":{"line":57,"column":10}}},"fnMap":{"0":{"name":"registerAddonTools","decl":{"start":{"line":8,"column":16},"end":{"line":8,"column":35}},"loc":{"start":{"line":8,"column":82},"end":{"line":62,"column":null}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":21,"column":26},"end":{"line":21,"column":33}},"loc":{"start":{"line":21,"column":46},"end":{"line":60,"column":5}},"line":21},"2":{"name":"(anonymous_2)","decl":{"start":{"line":22,"column":12},"end":{"line":22,"column":26}},"loc":{"start":{"line":22,"column":48},"end":{"line":31,"column":null}},"line":22},"3":{"name":"(anonymous_3)","decl":{"start":{"line":51,"column":22},"end":{"line":51,"column":27}},"loc":{"start":{"line":51,"column":34},"end":{"line":57,"column":10}},"line":51}},"branchMap":{"0":{"loc":{"start":{"line":23,"column":20},"end":{"line":23,"column":null}},"type":"cond-expr","locations":[{"start":{"line":23,"column":41},"end":{"line":23,"column":53}},{"start":{"line":23,"column":53},"end":{"line":23,"column":null}}],"line":23},"1":{"loc":{"start":{"line":24,"column":8},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":24,"column":8},"end":{"line":29,"column":null}},{"start":{},"end":{}}],"line":24},"2":{"loc":{"start":{"line":32,"column":6},"end":{"line":47,"column":null}},"type":"if","locations":[{"start":{"line":32,"column":6},"end":{"line":47,"column":null}},{"start":{},"end":{}}],"line":32},"3":{"loc":{"start":{"line":34,"column":8},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":34,"column":8},"end":{"line":34,"column":null}},{"start":{},"end":{}}],"line":34},"4":{"loc":{"start":{"line":39,"column":29},"end":{"line":39,"column":53}},"type":"binary-expr","locations":[{"start":{"line":39,"column":29},"end":{"line":39,"column":49}},{"start":{"line":39,"column":49},"end":{"line":39,"column":53}}],"line":39},"5":{"loc":{"start":{"line":45,"column":17},"end":{"line":45,"column":null}},"type":"binary-expr","locations":[{"start":{"line":45,"column":17},"end":{"line":45,"column":31}},{"start":{"line":45,"column":31},"end":{"line":45,"column":null}}],"line":45},"6":{"loc":{"start":{"line":49,"column":28},"end":{"line":49,"column":null}},"type":"binary-expr","locations":[{"start":{"line":49,"column":28},"end":{"line":49,"column":44}},{"start":{"line":49,"column":44},"end":{"line":49,"column":null}}],"line":49}},"s":{"0":2,"1":25,"2":4,"3":1,"4":1,"5":0,"6":1,"7":4,"8":2,"9":1,"10":1,"11":1,"12":2,"13":1,"14":4,"15":1},"f":{"0":25,"1":4,"2":1,"3":1},"b":{"0":[1,0],"1":[0,1],"2":[2,2],"3":[1,1],"4":[1,0],"5":[2,1],"6":[1,0]},"meta":{"lastBranch":7,"lastFunction":4,"lastStatement":16,"seen":{"s:6:16:6:Infinity":0,"f:8:16:8:35":0,"s:9:2:61:Infinity":1,"f:21:26:21:33":1,"s:22:12:31:Infinity":2,"f:22:12:22:26":2,"s:23:20:23:Infinity":3,"b:23:41:23:53:23:53:23:Infinity":0,"b:24:8:29:Infinity:undefined:undefined:undefined:undefined":1,"s:24:8:29:Infinity":4,"s:25:10:28:Infinity":5,"s:30:8:30:Infinity":6,"b:32:6:47:Infinity:undefined:undefined:undefined:undefined":2,"s:32:6:47:Infinity":7,"b:34:8:34:Infinity:undefined:undefined:undefined:undefined":3,"s:34:8:34:Infinity":8,"s:34:33:34:Infinity":9,"s:35:21:35:Infinity":10,"s:36:8:46:Infinity":11,"b:39:29:39:49:39:49:39:53":4,"b:45:17:45:31:45:31:45:Infinity":5,"s:48:19:48:Infinity":12,"s:49:28:49:Infinity":13,"b:49:28:49:44:49:44:49:Infinity":6,"s:50:6:59:Infinity":14,"f:51:22:51:27":3,"s:51:34:57:10":15},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/announce.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/announce.ts","statementMap":{"0":{"start":{"line":15,"column":16},"end":{"line":15,"column":null}},"1":{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},"2":{"start":{"line":25,"column":2},"end":{"line":98,"column":null}},"3":{"start":{"line":43,"column":20},"end":{"line":43,"column":null}},"4":{"start":{"line":44,"column":22},"end":{"line":44,"column":null}},"5":{"start":{"line":44,"column":42},"end":{"line":44,"column":81}},"6":{"start":{"line":45,"column":6},"end":{"line":54,"column":null}},"7":{"start":{"line":46,"column":8},"end":{"line":53,"column":null}},"8":{"start":{"line":48,"column":53},"end":{"line":48,"column":84}},"9":{"start":{"line":48,"column":97},"end":{"line":48,"column":108}},"10":{"start":{"line":49,"column":49},"end":{"line":49,"column":76}},"11":{"start":{"line":49,"column":89},"end":{"line":49,"column":100}},"12":{"start":{"line":50,"column":47},"end":{"line":50,"column":65}},"13":{"start":{"line":50,"column":78},"end":{"line":50,"column":89}},"14":{"start":{"line":56,"column":19},"end":{"line":56,"column":null}},"15":{"start":{"line":57,"column":6},"end":{"line":66,"column":null}},"16":{"start":{"line":58,"column":8},"end":{"line":64,"column":null}},"17":{"start":{"line":65,"column":8},"end":{"line":65,"column":null}},"18":{"start":{"line":68,"column":6},"end":{"line":78,"column":null}},"19":{"start":{"line":69,"column":8},"end":{"line":77,"column":null}},"20":{"start":{"line":79,"column":6},"end":{"line":95,"column":null}},"21":{"start":{"line":80,"column":20},"end":{"line":80,"column":null}},"22":{"start":{"line":80,"column":50},"end":{"line":80,"column":68}},"23":{"start":{"line":81,"column":8},"end":{"line":85,"column":null}},"24":{"start":{"line":82,"column":10},"end":{"line":84,"column":null}},"25":{"start":{"line":86,"column":8},"end":{"line":94,"column":null}},"26":{"start":{"line":96,"column":6},"end":{"line":96,"column":null}}},"fnMap":{"0":{"name":"resetAnnounceLimiter","decl":{"start":{"line":18,"column":16},"end":{"line":18,"column":45}},"loc":{"start":{"line":18,"column":45},"end":{"line":20,"column":null}},"line":18},"1":{"name":"registerAnnounceTools","decl":{"start":{"line":22,"column":16},"end":{"line":22,"column":38}},"loc":{"start":{"line":22,"column":85},"end":{"line":99,"column":null}},"line":22},"2":{"name":"(anonymous_2)","decl":{"start":{"line":42,"column":24},"end":{"line":42,"column":31}},"loc":{"start":{"line":42,"column":87},"end":{"line":97,"column":5}},"line":42},"3":{"name":"(anonymous_3)","decl":{"start":{"line":44,"column":28},"end":{"line":44,"column":36}},"loc":{"start":{"line":44,"column":42},"end":{"line":44,"column":81}},"line":44},"4":{"name":"(anonymous_4)","decl":{"start":{"line":48,"column":39},"end":{"line":48,"column":47}},"loc":{"start":{"line":48,"column":53},"end":{"line":48,"column":84}},"line":48},"5":{"name":"(anonymous_5)","decl":{"start":{"line":48,"column":86},"end":{"line":48,"column":91}},"loc":{"start":{"line":48,"column":97},"end":{"line":48,"column":108}},"line":48},"6":{"name":"(anonymous_6)","decl":{"start":{"line":49,"column":35},"end":{"line":49,"column":43}},"loc":{"start":{"line":49,"column":49},"end":{"line":49,"column":76}},"line":49},"7":{"name":"(anonymous_7)","decl":{"start":{"line":49,"column":78},"end":{"line":49,"column":83}},"loc":{"start":{"line":49,"column":89},"end":{"line":49,"column":100}},"line":49},"8":{"name":"(anonymous_8)","decl":{"start":{"line":50,"column":33},"end":{"line":50,"column":41}},"loc":{"start":{"line":50,"column":47},"end":{"line":50,"column":65}},"line":50},"9":{"name":"(anonymous_9)","decl":{"start":{"line":50,"column":67},"end":{"line":50,"column":72}},"loc":{"start":{"line":50,"column":78},"end":{"line":50,"column":89}},"line":50},"10":{"name":"(anonymous_10)","decl":{"start":{"line":80,"column":38},"end":{"line":80,"column":44}},"loc":{"start":{"line":80,"column":50},"end":{"line":80,"column":68}},"line":80}},"branchMap":{"0":{"loc":{"start":{"line":45,"column":6},"end":{"line":54,"column":null}},"type":"if","locations":[{"start":{"line":45,"column":6},"end":{"line":54,"column":null}},{"start":{},"end":{}}],"line":45},"1":{"loc":{"start":{"line":57,"column":6},"end":{"line":66,"column":null}},"type":"if","locations":[{"start":{"line":57,"column":6},"end":{"line":66,"column":null}},{"start":{},"end":{}}],"line":57},"2":{"loc":{"start":{"line":57,"column":10},"end":{"line":57,"column":46}},"type":"binary-expr","locations":[{"start":{"line":57,"column":10},"end":{"line":57,"column":22}},{"start":{"line":57,"column":22},"end":{"line":57,"column":46}}],"line":57},"3":{"loc":{"start":{"line":59,"column":18},"end":{"line":59,"column":null}},"type":"binary-expr","locations":[{"start":{"line":59,"column":18},"end":{"line":59,"column":32}},{"start":{"line":59,"column":32},"end":{"line":59,"column":null}}],"line":59},"4":{"loc":{"start":{"line":68,"column":6},"end":{"line":78,"column":null}},"type":"if","locations":[{"start":{"line":68,"column":6},"end":{"line":78,"column":null}},{"start":{},"end":{}}],"line":68},"5":{"loc":{"start":{"line":79,"column":6},"end":{"line":95,"column":null}},"type":"if","locations":[{"start":{"line":79,"column":6},"end":{"line":95,"column":null}},{"start":{},"end":{}}],"line":79},"6":{"loc":{"start":{"line":80,"column":20},"end":{"line":80,"column":null}},"type":"binary-expr","locations":[{"start":{"line":80,"column":20},"end":{"line":80,"column":30}},{"start":{"line":80,"column":30},"end":{"line":80,"column":null}}],"line":80},"7":{"loc":{"start":{"line":81,"column":8},"end":{"line":85,"column":null}},"type":"if","locations":[{"start":{"line":81,"column":8},"end":{"line":85,"column":null}},{"start":{},"end":{}}],"line":81}},"s":{"0":2,"1":6,"2":28,"3":12,"4":12,"5":34,"6":12,"7":1,"8":3,"9":1,"10":3,"11":1,"12":3,"13":1,"14":11,"15":11,"16":1,"17":1,"18":10,"19":8,"20":2,"21":2,"22":4,"23":2,"24":1,"25":1,"26":0},"f":{"0":6,"1":28,"2":12,"3":34,"4":3,"5":1,"6":3,"7":1,"8":3,"9":1,"10":4},"b":{"0":[1,11],"1":[1,10],"2":[11,7],"3":[1,1],"4":[8,2],"5":[2,0],"6":[2,2],"7":[1,1]},"meta":{"lastBranch":8,"lastFunction":11,"lastStatement":27,"seen":{"s:15:16:15:Infinity":0,"f:18:16:18:45":0,"s:19:2:19:Infinity":1,"f:22:16:22:38":1,"s:25:2:98:Infinity":2,"f:42:24:42:31":2,"s:43:20:43:Infinity":3,"s:44:22:44:Infinity":4,"f:44:28:44:36":3,"s:44:42:44:81":5,"b:45:6:54:Infinity:undefined:undefined:undefined:undefined":0,"s:45:6:54:Infinity":6,"s:46:8:53:Infinity":7,"f:48:39:48:47":4,"s:48:53:48:84":8,"f:48:86:48:91":5,"s:48:97:48:108":9,"f:49:35:49:43":6,"s:49:49:49:76":10,"f:49:78:49:83":7,"s:49:89:49:100":11,"f:50:33:50:41":8,"s:50:47:50:65":12,"f:50:67:50:72":9,"s:50:78:50:89":13,"s:56:19:56:Infinity":14,"b:57:6:66:Infinity:undefined:undefined:undefined:undefined":1,"s:57:6:66:Infinity":15,"b:57:10:57:22:57:22:57:46":2,"s:58:8:64:Infinity":16,"b:59:18:59:32:59:32:59:Infinity":3,"s:65:8:65:Infinity":17,"b:68:6:78:Infinity:undefined:undefined:undefined:undefined":4,"s:68:6:78:Infinity":18,"s:69:8:77:Infinity":19,"b:79:6:95:Infinity:undefined:undefined:undefined:undefined":5,"s:79:6:95:Infinity":20,"s:80:20:80:Infinity":21,"b:80:20:80:30:80:30:80:Infinity":6,"f:80:38:80:44":10,"s:80:50:80:68":22,"b:81:8:85:Infinity:undefined:undefined:undefined:undefined":7,"s:81:8:85:Infinity":23,"s:82:10:84:Infinity":24,"s:86:8:94:Infinity":25,"s:96:6:96:Infinity":26},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/automations.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/automations.ts","statementMap":{"0":{"start":{"line":15,"column":48},"end":{"line":22,"column":null}},"1":{"start":{"line":25,"column":22},"end":{"line":25,"column":null}},"2":{"start":{"line":26,"column":2},"end":{"line":41,"column":null}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},"4":{"start":{"line":27,"column":51},"end":{"line":27,"column":null}},"5":{"start":{"line":28,"column":4},"end":{"line":40,"column":null}},"6":{"start":{"line":29,"column":6},"end":{"line":29,"column":null}},"7":{"start":{"line":32,"column":6},"end":{"line":38,"column":null}},"8":{"start":{"line":33,"column":27},"end":{"line":33,"column":null}},"9":{"start":{"line":34,"column":8},"end":{"line":37,"column":null}},"10":{"start":{"line":35,"column":10},"end":{"line":35,"column":null}},"11":{"start":{"line":36,"column":10},"end":{"line":36,"column":null}},"12":{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},"13":{"start":{"line":42,"column":2},"end":{"line":42,"column":null}},"14":{"start":{"line":47,"column":27},"end":{"line":47,"column":null}},"15":{"start":{"line":48,"column":27},"end":{"line":48,"column":null}},"16":{"start":{"line":49,"column":25},"end":{"line":49,"column":null}},"17":{"start":{"line":50,"column":8},"end":{"line":53,"column":null}},"18":{"start":{"line":51,"column":4},"end":{"line":52,"column":null}},"19":{"start":{"line":51,"column":31},"end":{"line":51,"column":null}},"20":{"start":{"line":52,"column":9},"end":{"line":52,"column":null}},"21":{"start":{"line":52,"column":36},"end":{"line":52,"column":89}},"22":{"start":{"line":52,"column":50},"end":{"line":52,"column":89}},"23":{"start":{"line":52,"column":77},"end":{"line":52,"column":89}},"24":{"start":{"line":54,"column":2},"end":{"line":54,"column":null}},"25":{"start":{"line":55,"column":17},"end":{"line":55,"column":null}},"26":{"start":{"line":56,"column":2},"end":{"line":61,"column":null}},"27":{"start":{"line":57,"column":14},"end":{"line":57,"column":null}},"28":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"29":{"start":{"line":59,"column":4},"end":{"line":59,"column":null}},"30":{"start":{"line":60,"column":4},"end":{"line":60,"column":null}},"31":{"start":{"line":62,"column":17},"end":{"line":62,"column":null}},"32":{"start":{"line":63,"column":39},"end":{"line":63,"column":null}},"33":{"start":{"line":64,"column":2},"end":{"line":64,"column":null}},"34":{"start":{"line":64,"column":14},"end":{"line":64,"column":null}},"35":{"start":{"line":65,"column":2},"end":{"line":65,"column":null}},"36":{"start":{"line":65,"column":25},"end":{"line":65,"column":null}},"37":{"start":{"line":66,"column":2},"end":{"line":66,"column":null}},"38":{"start":{"line":66,"column":25},"end":{"line":66,"column":null}},"39":{"start":{"line":67,"column":2},"end":{"line":67,"column":null}},"40":{"start":{"line":67,"column":23},"end":{"line":67,"column":null}},"41":{"start":{"line":68,"column":2},"end":{"line":68,"column":null}},"42":{"start":{"line":72,"column":2},"end":{"line":144,"column":null}},"43":{"start":{"line":89,"column":12},"end":{"line":91,"column":null}},"44":{"start":{"line":90,"column":15},"end":{"line":90,"column":null}},"45":{"start":{"line":92,"column":18},"end":{"line":100,"column":null}},"46":{"start":{"line":92,"column":39},"end":{"line":100,"column":8}},"47":{"start":{"line":103,"column":6},"end":{"line":103,"column":null}},"48":{"start":{"line":103,"column":27},"end":{"line":103,"column":null}},"49":{"start":{"line":104,"column":23},"end":{"line":109,"column":null}},"50":{"start":{"line":110,"column":19},"end":{"line":110,"column":null}},"51":{"start":{"line":110,"column":47},"end":{"line":110,"column":63}},"52":{"start":{"line":111,"column":20},"end":{"line":111,"column":null}},"53":{"start":{"line":112,"column":6},"end":{"line":129,"column":null}},"54":{"start":{"line":114,"column":24},"end":{"line":114,"column":null}},"55":{"start":{"line":115,"column":10},"end":{"line":118,"column":null}},"56":{"start":{"line":116,"column":12},"end":{"line":116,"column":null}},"57":{"start":{"line":117,"column":12},"end":{"line":117,"column":null}},"58":{"start":{"line":119,"column":10},"end":{"line":127,"column":null}},"59":{"start":{"line":120,"column":12},"end":{"line":120,"column":null}},"60":{"start":{"line":124,"column":12},"end":{"line":124,"column":null}},"61":{"start":{"line":125,"column":12},"end":{"line":125,"column":null}},"62":{"start":{"line":126,"column":12},"end":{"line":126,"column":null}},"63":{"start":{"line":133,"column":32},"end":{"line":133,"column":null}},"64":{"start":{"line":134,"column":6},"end":{"line":141,"column":null}},"65":{"start":{"line":135,"column":24},"end":{"line":137,"column":null}},"66":{"start":{"line":136,"column":25},"end":{"line":136,"column":33}},"67":{"start":{"line":137,"column":26},"end":{"line":137,"column":91}},"68":{"start":{"line":138,"column":8},"end":{"line":138,"column":null}},"69":{"start":{"line":138,"column":22},"end":{"line":138,"column":null}},"70":{"start":{"line":139,"column":8},"end":{"line":139,"column":null}},"71":{"start":{"line":140,"column":8},"end":{"line":140,"column":null}},"72":{"start":{"line":142,"column":6},"end":{"line":142,"column":null}},"73":{"start":{"line":146,"column":2},"end":{"line":200,"column":null}},"74":{"start":{"line":159,"column":6},"end":{"line":161,"column":null}},"75":{"start":{"line":160,"column":8},"end":{"line":160,"column":null}},"76":{"start":{"line":162,"column":18},"end":{"line":162,"column":null}},"77":{"start":{"line":163,"column":16},"end":{"line":163,"column":null}},"78":{"start":{"line":163,"column":32},"end":{"line":163,"column":86}},"79":{"start":{"line":164,"column":6},"end":{"line":164,"column":null}},"80":{"start":{"line":164,"column":14},"end":{"line":164,"column":null}},"81":{"start":{"line":166,"column":19},"end":{"line":172,"column":null}},"82":{"start":{"line":174,"column":20},"end":{"line":174,"column":null}},"83":{"start":{"line":175,"column":6},"end":{"line":177,"column":null}},"84":{"start":{"line":176,"column":8},"end":{"line":176,"column":null}},"85":{"start":{"line":178,"column":6},"end":{"line":190,"column":null}},"86":{"start":{"line":179,"column":23},"end":{"line":179,"column":null}},"87":{"start":{"line":180,"column":8},"end":{"line":180,"column":null}},"88":{"start":{"line":184,"column":20},"end":{"line":184,"column":null}},"89":{"start":{"line":185,"column":8},"end":{"line":187,"column":null}},"90":{"start":{"line":186,"column":10},"end":{"line":186,"column":null}},"91":{"start":{"line":188,"column":8},"end":{"line":188,"column":null}},"92":{"start":{"line":189,"column":8},"end":{"line":189,"column":null}},"93":{"start":{"line":202,"column":2},"end":{"line":303,"column":null}},"94":{"start":{"line":218,"column":6},"end":{"line":220,"column":null}},"95":{"start":{"line":219,"column":8},"end":{"line":219,"column":null}},"96":{"start":{"line":221,"column":21},"end":{"line":221,"column":null}},"97":{"start":{"line":222,"column":6},"end":{"line":224,"column":null}},"98":{"start":{"line":223,"column":8},"end":{"line":223,"column":null}},"99":{"start":{"line":228,"column":6},"end":{"line":238,"column":null}},"100":{"start":{"line":229,"column":14},"end":{"line":229,"column":null}},"101":{"start":{"line":229,"column":58},"end":{"line":229,"column":83}},"102":{"start":{"line":230,"column":8},"end":{"line":230,"column":null}},"103":{"start":{"line":230,"column":16},"end":{"line":230,"column":null}},"104":{"start":{"line":231,"column":22},"end":{"line":231,"column":null}},"105":{"start":{"line":232,"column":8},"end":{"line":234,"column":null}},"106":{"start":{"line":233,"column":10},"end":{"line":233,"column":null}},"107":{"start":{"line":235,"column":8},"end":{"line":235,"column":null}},"108":{"start":{"line":237,"column":8},"end":{"line":237,"column":null}},"109":{"start":{"line":240,"column":6},"end":{"line":261,"column":null}},"110":{"start":{"line":241,"column":28},"end":{"line":241,"column":null}},"111":{"start":{"line":242,"column":21},"end":{"line":251,"column":null}},"112":{"start":{"line":242,"column":37},"end":{"line":251,"column":10}},"113":{"start":{"line":252,"column":8},"end":{"line":260,"column":null}},"114":{"start":{"line":263,"column":26},"end":{"line":263,"column":null}},"115":{"start":{"line":268,"column":51},"end":{"line":268,"column":null}},"116":{"start":{"line":269,"column":6},"end":{"line":273,"column":null}},"117":{"start":{"line":270,"column":8},"end":{"line":270,"column":null}},"118":{"start":{"line":272,"column":8},"end":{"line":272,"column":null}},"119":{"start":{"line":278,"column":52},"end":{"line":278,"column":null}},"120":{"start":{"line":279,"column":6},"end":{"line":291,"column":null}},"121":{"start":{"line":280,"column":22},"end":{"line":280,"column":null}},"122":{"start":{"line":281,"column":24},"end":{"line":281,"column":null}},"123":{"start":{"line":282,"column":8},"end":{"line":290,"column":null}},"124":{"start":{"line":283,"column":10},"end":{"line":289,"column":null}},"125":{"start":{"line":292,"column":6},"end":{"line":292,"column":null}},"126":{"start":{"line":292,"column":27},"end":{"line":292,"column":77}},"127":{"start":{"line":293,"column":6},"end":{"line":301,"column":null}},"128":{"start":{"line":305,"column":2},"end":{"line":328,"column":null}},"129":{"start":{"line":318,"column":12},"end":{"line":325,"column":null}},"130":{"start":{"line":319,"column":23},"end":{"line":319,"column":87}},"131":{"start":{"line":320,"column":21},"end":{"line":325,"column":10}},"132":{"start":{"line":326,"column":6},"end":{"line":326,"column":null}}},"fnMap":{"0":{"name":"blockAtPath","decl":{"start":{"line":24,"column":9},"end":{"line":24,"column":21}},"loc":{"start":{"line":24,"column":100},"end":{"line":43,"column":null}},"line":24},"1":{"name":"targetsOf","decl":{"start":{"line":46,"column":9},"end":{"line":46,"column":19}},"loc":{"start":{"line":46,"column":83},"end":{"line":69,"column":null}},"line":46},"2":{"name":"(anonymous_2)","decl":{"start":{"line":50,"column":8},"end":{"line":50,"column":19}},"loc":{"start":{"line":50,"column":56},"end":{"line":53,"column":null}},"line":50},"3":{"name":"registerAutomationTools","decl":{"start":{"line":71,"column":16},"end":{"line":71,"column":40}},"loc":{"start":{"line":71,"column":87},"end":{"line":329,"column":null}},"line":71},"4":{"name":"(anonymous_4)","decl":{"start":{"line":88,"column":32},"end":{"line":88,"column":39}},"loc":{"start":{"line":88,"column":77},"end":{"line":143,"column":5}},"line":88},"5":{"name":"(anonymous_5)","decl":{"start":{"line":89,"column":51},"end":{"line":89,"column":null}},"loc":{"start":{"line":90,"column":15},"end":{"line":90,"column":null}},"line":90},"6":{"name":"(anonymous_6)","decl":{"start":{"line":92,"column":27},"end":{"line":92,"column":32}},"loc":{"start":{"line":92,"column":39},"end":{"line":100,"column":8}},"line":92},"7":{"name":"(anonymous_7)","decl":{"start":{"line":110,"column":36},"end":{"line":110,"column":41}},"loc":{"start":{"line":110,"column":47},"end":{"line":110,"column":63}},"line":110},"8":{"name":"(anonymous_8)","decl":{"start":{"line":113,"column":18},"end":{"line":113,"column":25}},"loc":{"start":{"line":113,"column":34},"end":{"line":128,"column":9}},"line":113},"9":{"name":"(anonymous_9)","decl":{"start":{"line":136,"column":11},"end":{"line":136,"column":19}},"loc":{"start":{"line":136,"column":25},"end":{"line":136,"column":33}},"line":136},"10":{"name":"(anonymous_10)","decl":{"start":{"line":137,"column":11},"end":{"line":137,"column":17}},"loc":{"start":{"line":137,"column":26},"end":{"line":137,"column":91}},"line":137},"11":{"name":"(anonymous_11)","decl":{"start":{"line":158,"column":30},"end":{"line":158,"column":37}},"loc":{"start":{"line":158,"column":55},"end":{"line":191,"column":7}},"line":158},"12":{"name":"(anonymous_12)","decl":{"start":{"line":163,"column":20},"end":{"line":163,"column":26}},"loc":{"start":{"line":163,"column":32},"end":{"line":163,"column":86}},"line":163},"13":{"name":"(anonymous_13)","decl":{"start":{"line":217,"column":36},"end":{"line":217,"column":43}},"loc":{"start":{"line":217,"column":69},"end":{"line":302,"column":5}},"line":217},"14":{"name":"(anonymous_14)","decl":{"start":{"line":229,"column":46},"end":{"line":229,"column":52}},"loc":{"start":{"line":229,"column":58},"end":{"line":229,"column":83}},"line":229},"15":{"name":"(anonymous_15)","decl":{"start":{"line":242,"column":25},"end":{"line":242,"column":30}},"loc":{"start":{"line":242,"column":37},"end":{"line":251,"column":10}},"line":242},"16":{"name":"(anonymous_16)","decl":{"start":{"line":292,"column":12},"end":{"line":292,"column":18}},"loc":{"start":{"line":292,"column":27},"end":{"line":292,"column":77}},"line":292},"17":{"name":"(anonymous_17)","decl":{"start":{"line":317,"column":28},"end":{"line":317,"column":35}},"loc":{"start":{"line":317,"column":57},"end":{"line":327,"column":5}},"line":317},"18":{"name":"(anonymous_18)","decl":{"start":{"line":319,"column":9},"end":{"line":319,"column":17}},"loc":{"start":{"line":319,"column":23},"end":{"line":319,"column":87}},"line":319},"19":{"name":"(anonymous_19)","decl":{"start":{"line":320,"column":9},"end":{"line":320,"column":14}},"loc":{"start":{"line":320,"column":21},"end":{"line":325,"column":10}},"line":320}},"branchMap":{"0":{"loc":{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":4},"end":{"line":27,"column":null}},{"start":{},"end":{}}],"line":27},"1":{"loc":{"start":{"line":27,"column":8},"end":{"line":27,"column":51}},"type":"binary-expr","locations":[{"start":{"line":27,"column":8},"end":{"line":27,"column":25}},{"start":{"line":27,"column":25},"end":{"line":27,"column":51}}],"line":27},"2":{"loc":{"start":{"line":28,"column":4},"end":{"line":40,"column":null}},"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":40,"column":null}},{"start":{"line":30,"column":11},"end":{"line":40,"column":null}}],"line":28},"3":{"loc":{"start":{"line":29,"column":13},"end":{"line":29,"column":null}},"type":"cond-expr","locations":[{"start":{"line":29,"column":35},"end":{"line":29,"column":55}},{"start":{"line":29,"column":55},"end":{"line":29,"column":null}}],"line":29},"4":{"loc":{"start":{"line":32,"column":24},"end":{"line":32,"column":53}},"type":"binary-expr","locations":[{"start":{"line":32,"column":24},"end":{"line":32,"column":46}},{"start":{"line":32,"column":46},"end":{"line":32,"column":53}}],"line":32},"5":{"loc":{"start":{"line":34,"column":8},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":34,"column":8},"end":{"line":37,"column":null}},{"start":{},"end":{}}],"line":34},"6":{"loc":{"start":{"line":39,"column":13},"end":{"line":39,"column":null}},"type":"binary-expr","locations":[{"start":{"line":39,"column":13},"end":{"line":39,"column":21}},{"start":{"line":39,"column":21},"end":{"line":39,"column":null}}],"line":39},"7":{"loc":{"start":{"line":42,"column":9},"end":{"line":42,"column":null}},"type":"cond-expr","locations":[{"start":{"line":42,"column":78},"end":{"line":42,"column":113}},{"start":{"line":42,"column":113},"end":{"line":42,"column":null}}],"line":42},"8":{"loc":{"start":{"line":42,"column":9},"end":{"line":42,"column":78}},"type":"binary-expr","locations":[{"start":{"line":42,"column":9},"end":{"line":42,"column":26}},{"start":{"line":42,"column":26},"end":{"line":42,"column":54}},{"start":{"line":42,"column":54},"end":{"line":42,"column":78}}],"line":42},"9":{"loc":{"start":{"line":51,"column":4},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":52,"column":null}},{"start":{"line":52,"column":9},"end":{"line":52,"column":null}}],"line":51},"10":{"loc":{"start":{"line":52,"column":9},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":52,"column":9},"end":{"line":52,"column":null}},{"start":{},"end":{}}],"line":52},"11":{"loc":{"start":{"line":52,"column":50},"end":{"line":52,"column":89}},"type":"if","locations":[{"start":{"line":52,"column":50},"end":{"line":52,"column":89}},{"start":{},"end":{}}],"line":52},"12":{"loc":{"start":{"line":56,"column":2},"end":{"line":61,"column":null}},"type":"if","locations":[{"start":{"line":56,"column":2},"end":{"line":61,"column":null}},{"start":{},"end":{}}],"line":56},"13":{"loc":{"start":{"line":56,"column":6},"end":{"line":56,"column":53}},"type":"binary-expr","locations":[{"start":{"line":56,"column":6},"end":{"line":56,"column":25}},{"start":{"line":56,"column":25},"end":{"line":56,"column":53}}],"line":56},"14":{"loc":{"start":{"line":62,"column":17},"end":{"line":62,"column":null}},"type":"cond-expr","locations":[{"start":{"line":62,"column":52},"end":{"line":62,"column":67}},{"start":{"line":62,"column":67},"end":{"line":62,"column":null}}],"line":62},"15":{"loc":{"start":{"line":62,"column":67},"end":{"line":62,"column":null}},"type":"cond-expr","locations":[{"start":{"line":62,"column":103},"end":{"line":62,"column":119}},{"start":{"line":62,"column":119},"end":{"line":62,"column":null}}],"line":62},"16":{"loc":{"start":{"line":64,"column":2},"end":{"line":64,"column":null}},"type":"if","locations":[{"start":{"line":64,"column":2},"end":{"line":64,"column":null}},{"start":{},"end":{}}],"line":64},"17":{"loc":{"start":{"line":65,"column":2},"end":{"line":65,"column":null}},"type":"if","locations":[{"start":{"line":65,"column":2},"end":{"line":65,"column":null}},{"start":{},"end":{}}],"line":65},"18":{"loc":{"start":{"line":66,"column":2},"end":{"line":66,"column":null}},"type":"if","locations":[{"start":{"line":66,"column":2},"end":{"line":66,"column":null}},{"start":{},"end":{}}],"line":66},"19":{"loc":{"start":{"line":67,"column":2},"end":{"line":67,"column":null}},"type":"if","locations":[{"start":{"line":67,"column":2},"end":{"line":67,"column":null}},{"start":{},"end":{}}],"line":67},"20":{"loc":{"start":{"line":68,"column":9},"end":{"line":68,"column":null}},"type":"cond-expr","locations":[{"start":{"line":68,"column":39},"end":{"line":68,"column":45}},{"start":{"line":68,"column":45},"end":{"line":68,"column":null}}],"line":68},"21":{"loc":{"start":{"line":90,"column":15},"end":{"line":90,"column":null}},"type":"binary-expr","locations":[{"start":{"line":90,"column":15},"end":{"line":90,"column":44}},{"start":{"line":90,"column":44},"end":{"line":90,"column":null}}],"line":90},"22":{"loc":{"start":{"line":96,"column":25},"end":{"line":96,"column":null}},"type":"binary-expr","locations":[{"start":{"line":96,"column":25},"end":{"line":96,"column":74}},{"start":{"line":96,"column":74},"end":{"line":96,"column":null}}],"line":96},"23":{"loc":{"start":{"line":99,"column":16},"end":{"line":99,"column":null}},"type":"cond-expr","locations":[{"start":{"line":99,"column":73},"end":{"line":99,"column":80}},{"start":{"line":99,"column":80},"end":{"line":99,"column":null}}],"line":99},"24":{"loc":{"start":{"line":99,"column":16},"end":{"line":99,"column":73}},"type":"binary-expr","locations":[{"start":{"line":99,"column":16},"end":{"line":99,"column":55}},{"start":{"line":99,"column":55},"end":{"line":99,"column":73}}],"line":99},"25":{"loc":{"start":{"line":103,"column":6},"end":{"line":103,"column":null}},"type":"if","locations":[{"start":{"line":103,"column":6},"end":{"line":103,"column":null}},{"start":{},"end":{}}],"line":103},"26":{"loc":{"start":{"line":103,"column":52},"end":{"line":103,"column":66}},"type":"binary-expr","locations":[{"start":{"line":103,"column":52},"end":{"line":103,"column":61}},{"start":{"line":103,"column":61},"end":{"line":103,"column":66}}],"line":103},"27":{"loc":{"start":{"line":103,"column":66},"end":{"line":103,"column":77}},"type":"binary-expr","locations":[{"start":{"line":103,"column":66},"end":{"line":103,"column":76}},{"start":{"line":103,"column":76},"end":{"line":103,"column":77}}],"line":103},"28":{"loc":{"start":{"line":106,"column":17},"end":{"line":106,"column":29}},"type":"binary-expr","locations":[{"start":{"line":106,"column":17},"end":{"line":106,"column":26}},{"start":{"line":106,"column":26},"end":{"line":106,"column":29}}],"line":106},"29":{"loc":{"start":{"line":107,"column":8},"end":{"line":107,"column":null}},"type":"binary-expr","locations":[{"start":{"line":107,"column":8},"end":{"line":107,"column":18}},{"start":{"line":107,"column":18},"end":{"line":107,"column":null}}],"line":107},"30":{"loc":{"start":{"line":115,"column":10},"end":{"line":118,"column":null}},"type":"if","locations":[{"start":{"line":115,"column":10},"end":{"line":118,"column":null}},{"start":{},"end":{}}],"line":115},"31":{"loc":{"start":{"line":115,"column":14},"end":{"line":115,"column":51}},"type":"binary-expr","locations":[{"start":{"line":115,"column":14},"end":{"line":115,"column":43}},{"start":{"line":115,"column":43},"end":{"line":115,"column":51}}],"line":115},"32":{"loc":{"start":{"line":124,"column":75},"end":{"line":124,"column":111}},"type":"cond-expr","locations":[{"start":{"line":124,"column":96},"end":{"line":124,"column":108}},{"start":{"line":124,"column":108},"end":{"line":124,"column":111}}],"line":124},"33":{"loc":{"start":{"line":138,"column":8},"end":{"line":138,"column":null}},"type":"if","locations":[{"start":{"line":138,"column":8},"end":{"line":138,"column":null}},{"start":{},"end":{}}],"line":138},"34":{"loc":{"start":{"line":159,"column":6},"end":{"line":161,"column":null}},"type":"if","locations":[{"start":{"line":159,"column":6},"end":{"line":161,"column":null}},{"start":{},"end":{}}],"line":159},"35":{"loc":{"start":{"line":163,"column":32},"end":{"line":163,"column":86}},"type":"binary-expr","locations":[{"start":{"line":163,"column":32},"end":{"line":163,"column":61}},{"start":{"line":163,"column":61},"end":{"line":163,"column":86}}],"line":163},"36":{"loc":{"start":{"line":164,"column":6},"end":{"line":164,"column":null}},"type":"if","locations":[{"start":{"line":164,"column":6},"end":{"line":164,"column":null}},{"start":{},"end":{}}],"line":164},"37":{"loc":{"start":{"line":170,"column":25},"end":{"line":170,"column":null}},"type":"binary-expr","locations":[{"start":{"line":170,"column":25},"end":{"line":170,"column":74}},{"start":{"line":170,"column":74},"end":{"line":170,"column":null}}],"line":170},"38":{"loc":{"start":{"line":171,"column":15},"end":{"line":171,"column":null}},"type":"binary-expr","locations":[{"start":{"line":171,"column":15},"end":{"line":171,"column":59}},{"start":{"line":171,"column":59},"end":{"line":171,"column":null}}],"line":171},"39":{"loc":{"start":{"line":175,"column":6},"end":{"line":177,"column":null}},"type":"if","locations":[{"start":{"line":175,"column":6},"end":{"line":177,"column":null}},{"start":{},"end":{}}],"line":175},"40":{"loc":{"start":{"line":175,"column":10},"end":{"line":175,"column":47}},"type":"binary-expr","locations":[{"start":{"line":175,"column":10},"end":{"line":175,"column":39}},{"start":{"line":175,"column":39},"end":{"line":175,"column":47}}],"line":175},"41":{"loc":{"start":{"line":184,"column":20},"end":{"line":184,"column":null}},"type":"cond-expr","locations":[{"start":{"line":184,"column":41},"end":{"line":184,"column":53}},{"start":{"line":184,"column":53},"end":{"line":184,"column":null}}],"line":184},"42":{"loc":{"start":{"line":185,"column":8},"end":{"line":187,"column":null}},"type":"if","locations":[{"start":{"line":185,"column":8},"end":{"line":187,"column":null}},{"start":{},"end":{}}],"line":185},"43":{"loc":{"start":{"line":218,"column":6},"end":{"line":220,"column":null}},"type":"if","locations":[{"start":{"line":218,"column":6},"end":{"line":220,"column":null}},{"start":{},"end":{}}],"line":218},"44":{"loc":{"start":{"line":221,"column":21},"end":{"line":221,"column":null}},"type":"binary-expr","locations":[{"start":{"line":221,"column":21},"end":{"line":221,"column":48}},{"start":{"line":221,"column":48},"end":{"line":221,"column":null}}],"line":221},"45":{"loc":{"start":{"line":222,"column":6},"end":{"line":224,"column":null}},"type":"if","locations":[{"start":{"line":222,"column":6},"end":{"line":224,"column":null}},{"start":{},"end":{}}],"line":222},"46":{"loc":{"start":{"line":222,"column":10},"end":{"line":222,"column":58}},"type":"binary-expr","locations":[{"start":{"line":222,"column":10},"end":{"line":222,"column":37}},{"start":{"line":222,"column":37},"end":{"line":222,"column":58}}],"line":222},"47":{"loc":{"start":{"line":228,"column":6},"end":{"line":238,"column":null}},"type":"if","locations":[{"start":{"line":228,"column":6},"end":{"line":238,"column":null}},{"start":{"line":236,"column":13},"end":{"line":238,"column":null}}],"line":228},"48":{"loc":{"start":{"line":230,"column":8},"end":{"line":230,"column":null}},"type":"if","locations":[{"start":{"line":230,"column":8},"end":{"line":230,"column":null}},{"start":{},"end":{}}],"line":230},"49":{"loc":{"start":{"line":232,"column":8},"end":{"line":234,"column":null}},"type":"if","locations":[{"start":{"line":232,"column":8},"end":{"line":234,"column":null}},{"start":{},"end":{}}],"line":232},"50":{"loc":{"start":{"line":232,"column":12},"end":{"line":232,"column":49}},"type":"binary-expr","locations":[{"start":{"line":232,"column":12},"end":{"line":232,"column":41}},{"start":{"line":232,"column":41},"end":{"line":232,"column":49}}],"line":232},"51":{"loc":{"start":{"line":240,"column":6},"end":{"line":261,"column":null}},"type":"if","locations":[{"start":{"line":240,"column":6},"end":{"line":261,"column":null}},{"start":{},"end":{}}],"line":240},"52":{"loc":{"start":{"line":241,"column":28},"end":{"line":241,"column":null}},"type":"binary-expr","locations":[{"start":{"line":241,"column":28},"end":{"line":241,"column":93}},{"start":{"line":241,"column":93},"end":{"line":241,"column":null}}],"line":241},"53":{"loc":{"start":{"line":243,"column":25},"end":{"line":243,"column":39}},"type":"binary-expr","locations":[{"start":{"line":243,"column":25},"end":{"line":243,"column":37}},{"start":{"line":243,"column":37},"end":{"line":243,"column":39}}],"line":243},"54":{"loc":{"start":{"line":244,"column":17},"end":{"line":244,"column":null}},"type":"binary-expr","locations":[{"start":{"line":244,"column":17},"end":{"line":244,"column":39}},{"start":{"line":244,"column":39},"end":{"line":244,"column":null}}],"line":244},"55":{"loc":{"start":{"line":245,"column":18},"end":{"line":245,"column":null}},"type":"binary-expr","locations":[{"start":{"line":245,"column":18},"end":{"line":245,"column":41}},{"start":{"line":245,"column":41},"end":{"line":245,"column":null}}],"line":245},"56":{"loc":{"start":{"line":246,"column":17},"end":{"line":246,"column":null}},"type":"binary-expr","locations":[{"start":{"line":246,"column":17},"end":{"line":246,"column":28}},{"start":{"line":246,"column":28},"end":{"line":246,"column":null}}],"line":246},"57":{"loc":{"start":{"line":247,"column":14},"end":{"line":247,"column":null}},"type":"cond-expr","locations":[{"start":{"line":247,"column":35},"end":{"line":247,"column":68}},{"start":{"line":247,"column":68},"end":{"line":247,"column":null}}],"line":247},"58":{"loc":{"start":{"line":248,"column":14},"end":{"line":248,"column":null}},"type":"cond-expr","locations":[{"start":{"line":248,"column":26},"end":{"line":248,"column":71}},{"start":{"line":248,"column":71},"end":{"line":248,"column":null}}],"line":248},"59":{"loc":{"start":{"line":249,"column":14},"end":{"line":249,"column":null}},"type":"cond-expr","locations":[{"start":{"line":249,"column":28},"end":{"line":249,"column":57}},{"start":{"line":249,"column":57},"end":{"line":249,"column":null}}],"line":249},"60":{"loc":{"start":{"line":250,"column":14},"end":{"line":250,"column":null}},"type":"cond-expr","locations":[{"start":{"line":250,"column":24},"end":{"line":250,"column":65}},{"start":{"line":250,"column":65},"end":{"line":250,"column":null}}],"line":250},"61":{"loc":{"start":{"line":257,"column":12},"end":{"line":259,"column":null}},"type":"cond-expr","locations":[{"start":{"line":258,"column":16},"end":{"line":258,"column":null}},{"start":{"line":259,"column":16},"end":{"line":259,"column":null}}],"line":257},"62":{"loc":{"start":{"line":279,"column":52},"end":{"line":279,"column":97}},"type":"binary-expr","locations":[{"start":{"line":279,"column":52},"end":{"line":279,"column":69}},{"start":{"line":279,"column":69},"end":{"line":279,"column":97}}],"line":279},"63":{"loc":{"start":{"line":280,"column":22},"end":{"line":280,"column":null}},"type":"cond-expr","locations":[{"start":{"line":280,"column":31},"end":{"line":280,"column":59}},{"start":{"line":280,"column":59},"end":{"line":280,"column":null}}],"line":280},"64":{"loc":{"start":{"line":281,"column":24},"end":{"line":281,"column":null}},"type":"cond-expr","locations":[{"start":{"line":281,"column":32},"end":{"line":281,"column":51}},{"start":{"line":281,"column":51},"end":{"line":281,"column":null}}],"line":281},"65":{"loc":{"start":{"line":282,"column":24},"end":{"line":282,"column":39}},"type":"binary-expr","locations":[{"start":{"line":282,"column":24},"end":{"line":282,"column":35}},{"start":{"line":282,"column":35},"end":{"line":282,"column":39}}],"line":282},"66":{"loc":{"start":{"line":285,"column":15},"end":{"line":285,"column":null}},"type":"binary-expr","locations":[{"start":{"line":285,"column":15},"end":{"line":285,"column":31}},{"start":{"line":285,"column":31},"end":{"line":285,"column":null}}],"line":285},"67":{"loc":{"start":{"line":286,"column":16},"end":{"line":286,"column":null}},"type":"cond-expr","locations":[{"start":{"line":286,"column":42},"end":{"line":286,"column":65}},{"start":{"line":286,"column":65},"end":{"line":286,"column":null}}],"line":286},"68":{"loc":{"start":{"line":287,"column":16},"end":{"line":287,"column":null}},"type":"cond-expr","locations":[{"start":{"line":287,"column":27},"end":{"line":287,"column":68}},{"start":{"line":287,"column":68},"end":{"line":287,"column":null}}],"line":287},"69":{"loc":{"start":{"line":288,"column":16},"end":{"line":288,"column":null}},"type":"cond-expr","locations":[{"start":{"line":288,"column":26},"end":{"line":288,"column":40}},{"start":{"line":288,"column":40},"end":{"line":288,"column":null}}],"line":288},"70":{"loc":{"start":{"line":292,"column":34},"end":{"line":292,"column":43}},"type":"binary-expr","locations":[{"start":{"line":292,"column":34},"end":{"line":292,"column":41}},{"start":{"line":292,"column":41},"end":{"line":292,"column":43}}],"line":292},"71":{"loc":{"start":{"line":292,"column":66},"end":{"line":292,"column":75}},"type":"binary-expr","locations":[{"start":{"line":292,"column":66},"end":{"line":292,"column":73}},{"start":{"line":292,"column":73},"end":{"line":292,"column":75}}],"line":292},"72":{"loc":{"start":{"line":296,"column":15},"end":{"line":296,"column":null}},"type":"binary-expr","locations":[{"start":{"line":296,"column":15},"end":{"line":296,"column":32}},{"start":{"line":296,"column":32},"end":{"line":296,"column":null}}],"line":296},"73":{"loc":{"start":{"line":297,"column":12},"end":{"line":297,"column":null}},"type":"cond-expr","locations":[{"start":{"line":297,"column":39},"end":{"line":297,"column":77}},{"start":{"line":297,"column":77},"end":{"line":297,"column":null}}],"line":297},"74":{"loc":{"start":{"line":298,"column":12},"end":{"line":298,"column":null}},"type":"cond-expr","locations":[{"start":{"line":298,"column":28},"end":{"line":298,"column":74}},{"start":{"line":298,"column":74},"end":{"line":298,"column":null}}],"line":298},"75":{"loc":{"start":{"line":319,"column":23},"end":{"line":319,"column":87}},"type":"binary-expr","locations":[{"start":{"line":319,"column":23},"end":{"line":319,"column":48}},{"start":{"line":319,"column":48},"end":{"line":319,"column":87}}],"line":319},"76":{"loc":{"start":{"line":324,"column":27},"end":{"line":324,"column":null}},"type":"binary-expr","locations":[{"start":{"line":324,"column":27},"end":{"line":324,"column":76}},{"start":{"line":324,"column":76},"end":{"line":324,"column":null}}],"line":324},"77":{"loc":{"start":{"line":326,"column":31},"end":{"line":326,"column":45}},"type":"binary-expr","locations":[{"start":{"line":326,"column":31},"end":{"line":326,"column":40}},{"start":{"line":326,"column":40},"end":{"line":326,"column":45}}],"line":326},"78":{"loc":{"start":{"line":326,"column":45},"end":{"line":326,"column":56}},"type":"binary-expr","locations":[{"start":{"line":326,"column":45},"end":{"line":326,"column":55}},{"start":{"line":326,"column":55},"end":{"line":326,"column":56}}],"line":326}},"s":{"0":2,"1":6,"2":6,"3":16,"4":2,"5":14,"6":6,"7":8,"8":14,"9":14,"10":6,"11":6,"12":8,"13":4,"14":4,"15":4,"16":4,"17":4,"18":7,"19":3,"20":4,"21":1,"22":2,"23":2,"24":4,"25":4,"26":4,"27":1,"28":1,"29":1,"30":1,"31":4,"32":4,"33":4,"34":2,"35":4,"36":3,"37":4,"38":0,"39":4,"40":1,"41":4,"42":40,"43":6,"44":39,"45":6,"46":36,"47":6,"48":2,"49":4,"50":6,"51":20,"52":6,"53":6,"54":16,"55":16,"56":2,"57":2,"58":14,"59":14,"60":1,"61":1,"62":1,"63":4,"64":4,"65":1,"66":2,"67":1,"68":1,"69":0,"70":1,"71":1,"72":4,"73":40,"74":6,"75":0,"76":6,"77":6,"78":7,"79":6,"80":0,"81":6,"82":6,"83":6,"84":1,"85":5,"86":5,"87":3,"88":2,"89":2,"90":1,"91":1,"92":1,"93":40,"94":8,"95":1,"96":7,"97":8,"98":1,"99":6,"100":5,"101":6,"102":5,"103":0,"104":5,"105":5,"106":1,"107":4,"108":1,"109":5,"110":2,"111":2,"112":1,"113":2,"114":3,"115":3,"116":3,"117":3,"118":1,"119":3,"120":3,"121":7,"122":7,"123":7,"124":7,"125":3,"126":4,"127":3,"128":40,"129":1,"130":3,"131":1,"132":1},"f":{"0":6,"1":4,"2":7,"3":40,"4":6,"5":39,"6":36,"7":20,"8":16,"9":2,"10":1,"11":6,"12":7,"13":8,"14":6,"15":1,"16":4,"17":1,"18":3,"19":1},"b":{"0":[2,14],"1":[16,14],"2":[6,8],"3":[6,0],"4":[8,2],"5":[6,8],"6":[8,2],"7":[4,0],"8":[4,4,4],"9":[3,4],"10":[1,3],"11":[2,0],"12":[1,3],"13":[4,4],"14":[1,3],"15":[1,2],"16":[2,2],"17":[3,1],"18":[0,4],"19":[1,3],"20":[3,1],"21":[39,36],"22":[36,33],"23":[33,3],"24":[36,33],"25":[2,4],"26":[2,1],"27":[2,2],"28":[4,3],"29":[6,4],"30":[2,14],"31":[16,14],"32":[1,0],"33":[0,1],"34":[0,6],"35":[7,6],"36":[0,6],"37":[6,1],"38":[6,1],"39":[1,5],"40":[6,5],"41":[2,0],"42":[1,1],"43":[1,7],"44":[7,0],"45":[1,7],"46":[8,2],"47":[5,1],"48":[0,5],"49":[1,4],"50":[5,4],"51":[2,3],"52":[2,0],"53":[1,0],"54":[1,0],"55":[1,0],"56":[1,0],"57":[1,0],"58":[1,0],"59":[1,0],"60":[0,1],"61":[1,1],"62":[3,0],"63":[6,1],"64":[4,3],"65":[7,0],"66":[7,0],"67":[3,4],"68":[0,7],"69":[3,4],"70":[4,0],"71":[4,0],"72":[3,0],"73":[2,1],"74":[0,3],"75":[3,1],"76":[1,1],"77":[1,1],"78":[1,1]},"meta":{"lastBranch":79,"lastFunction":20,"lastStatement":133,"seen":{"s:15:48:22:Infinity":0,"f:24:9:24:21":0,"s:25:22:25:Infinity":1,"s:26:2:41:Infinity":2,"b:27:4:27:Infinity:undefined:undefined:undefined:undefined":0,"s:27:4:27:Infinity":3,"b:27:8:27:25:27:25:27:51":1,"s:27:51:27:Infinity":4,"b:28:4:40:Infinity:30:11:40:Infinity":2,"s:28:4:40:Infinity":5,"s:29:6:29:Infinity":6,"b:29:35:29:55:29:55:29:Infinity":3,"s:32:6:38:Infinity":7,"b:32:24:32:46:32:46:32:53":4,"s:33:27:33:Infinity":8,"b:34:8:37:Infinity:undefined:undefined:undefined:undefined":5,"s:34:8:37:Infinity":9,"s:35:10:35:Infinity":10,"s:36:10:36:Infinity":11,"s:39:6:39:Infinity":12,"b:39:13:39:21:39:21:39:Infinity":6,"s:42:2:42:Infinity":13,"b:42:78:42:113:42:113:42:Infinity":7,"b:42:9:42:26:42:26:42:54:42:54:42:78":8,"f:46:9:46:19":1,"s:47:27:47:Infinity":14,"s:48:27:48:Infinity":15,"s:49:25:49:Infinity":16,"s:50:8:53:Infinity":17,"f:50:8:50:19":2,"b:51:4:52:Infinity:52:9:52:Infinity":9,"s:51:4:52:Infinity":18,"s:51:31:51:Infinity":19,"b:52:9:52:Infinity:undefined:undefined:undefined:undefined":10,"s:52:9:52:Infinity":20,"s:52:36:52:89":21,"b:52:50:52:89:undefined:undefined:undefined:undefined":11,"s:52:50:52:89":22,"s:52:77:52:89":23,"s:54:2:54:Infinity":24,"s:55:17:55:Infinity":25,"b:56:2:61:Infinity:undefined:undefined:undefined:undefined":12,"s:56:2:61:Infinity":26,"b:56:6:56:25:56:25:56:53":13,"s:57:14:57:Infinity":27,"s:58:4:58:Infinity":28,"s:59:4:59:Infinity":29,"s:60:4:60:Infinity":30,"s:62:17:62:Infinity":31,"b:62:52:62:67:62:67:62:Infinity":14,"b:62:103:62:119:62:119:62:Infinity":15,"s:63:39:63:Infinity":32,"b:64:2:64:Infinity:undefined:undefined:undefined:undefined":16,"s:64:2:64:Infinity":33,"s:64:14:64:Infinity":34,"b:65:2:65:Infinity:undefined:undefined:undefined:undefined":17,"s:65:2:65:Infinity":35,"s:65:25:65:Infinity":36,"b:66:2:66:Infinity:undefined:undefined:undefined:undefined":18,"s:66:2:66:Infinity":37,"s:66:25:66:Infinity":38,"b:67:2:67:Infinity:undefined:undefined:undefined:undefined":19,"s:67:2:67:Infinity":39,"s:67:23:67:Infinity":40,"s:68:2:68:Infinity":41,"b:68:39:68:45:68:45:68:Infinity":20,"f:71:16:71:40":3,"s:72:2:144:Infinity":42,"f:88:32:88:39":4,"s:89:12:91:Infinity":43,"f:89:51:89:Infinity":5,"s:90:15:90:Infinity":44,"b:90:15:90:44:90:44:90:Infinity":21,"s:92:18:100:Infinity":45,"f:92:27:92:32":6,"s:92:39:100:8":46,"b:96:25:96:74:96:74:96:Infinity":22,"b:99:73:99:80:99:80:99:Infinity":23,"b:99:16:99:55:99:55:99:73":24,"b:103:6:103:Infinity:undefined:undefined:undefined:undefined":25,"s:103:6:103:Infinity":47,"s:103:27:103:Infinity":48,"b:103:52:103:61:103:61:103:66":26,"b:103:66:103:76:103:76:103:77":27,"s:104:23:109:Infinity":49,"b:106:17:106:26:106:26:106:29":28,"b:107:8:107:18:107:18:107:Infinity":29,"s:110:19:110:Infinity":50,"f:110:36:110:41":7,"s:110:47:110:63":51,"s:111:20:111:Infinity":52,"s:112:6:129:Infinity":53,"f:113:18:113:25":8,"s:114:24:114:Infinity":54,"b:115:10:118:Infinity:undefined:undefined:undefined:undefined":30,"s:115:10:118:Infinity":55,"b:115:14:115:43:115:43:115:51":31,"s:116:12:116:Infinity":56,"s:117:12:117:Infinity":57,"s:119:10:127:Infinity":58,"s:120:12:120:Infinity":59,"s:124:12:124:Infinity":60,"b:124:96:124:108:124:108:124:111":32,"s:125:12:125:Infinity":61,"s:126:12:126:Infinity":62,"s:133:32:133:Infinity":63,"s:134:6:141:Infinity":64,"s:135:24:137:Infinity":65,"f:136:11:136:19":9,"s:136:25:136:33":66,"f:137:11:137:17":10,"s:137:26:137:91":67,"b:138:8:138:Infinity:undefined:undefined:undefined:undefined":33,"s:138:8:138:Infinity":68,"s:138:22:138:Infinity":69,"s:139:8:139:Infinity":70,"s:140:8:140:Infinity":71,"s:142:6:142:Infinity":72,"s:146:2:200:Infinity":73,"f:158:30:158:37":11,"b:159:6:161:Infinity:undefined:undefined:undefined:undefined":34,"s:159:6:161:Infinity":74,"s:160:8:160:Infinity":75,"s:162:18:162:Infinity":76,"s:163:16:163:Infinity":77,"f:163:20:163:26":12,"s:163:32:163:86":78,"b:163:32:163:61:163:61:163:86":35,"b:164:6:164:Infinity:undefined:undefined:undefined:undefined":36,"s:164:6:164:Infinity":79,"s:164:14:164:Infinity":80,"s:166:19:172:Infinity":81,"b:170:25:170:74:170:74:170:Infinity":37,"b:171:15:171:59:171:59:171:Infinity":38,"s:174:20:174:Infinity":82,"b:175:6:177:Infinity:undefined:undefined:undefined:undefined":39,"s:175:6:177:Infinity":83,"b:175:10:175:39:175:39:175:47":40,"s:176:8:176:Infinity":84,"s:178:6:190:Infinity":85,"s:179:23:179:Infinity":86,"s:180:8:180:Infinity":87,"s:184:20:184:Infinity":88,"b:184:41:184:53:184:53:184:Infinity":41,"b:185:8:187:Infinity:undefined:undefined:undefined:undefined":42,"s:185:8:187:Infinity":89,"s:186:10:186:Infinity":90,"s:188:8:188:Infinity":91,"s:189:8:189:Infinity":92,"s:202:2:303:Infinity":93,"f:217:36:217:43":13,"b:218:6:220:Infinity:undefined:undefined:undefined:undefined":43,"s:218:6:220:Infinity":94,"s:219:8:219:Infinity":95,"s:221:21:221:Infinity":96,"b:221:21:221:48:221:48:221:Infinity":44,"b:222:6:224:Infinity:undefined:undefined:undefined:undefined":45,"s:222:6:224:Infinity":97,"b:222:10:222:37:222:37:222:58":46,"s:223:8:223:Infinity":98,"b:228:6:238:Infinity:236:13:238:Infinity":47,"s:228:6:238:Infinity":99,"s:229:14:229:Infinity":100,"f:229:46:229:52":14,"s:229:58:229:83":101,"b:230:8:230:Infinity:undefined:undefined:undefined:undefined":48,"s:230:8:230:Infinity":102,"s:230:16:230:Infinity":103,"s:231:22:231:Infinity":104,"b:232:8:234:Infinity:undefined:undefined:undefined:undefined":49,"s:232:8:234:Infinity":105,"b:232:12:232:41:232:41:232:49":50,"s:233:10:233:Infinity":106,"s:235:8:235:Infinity":107,"s:237:8:237:Infinity":108,"b:240:6:261:Infinity:undefined:undefined:undefined:undefined":51,"s:240:6:261:Infinity":109,"s:241:28:241:Infinity":110,"b:241:28:241:93:241:93:241:Infinity":52,"s:242:21:251:Infinity":111,"f:242:25:242:30":15,"s:242:37:251:10":112,"b:243:25:243:37:243:37:243:39":53,"b:244:17:244:39:244:39:244:Infinity":54,"b:245:18:245:41:245:41:245:Infinity":55,"b:246:17:246:28:246:28:246:Infinity":56,"b:247:35:247:68:247:68:247:Infinity":57,"b:248:26:248:71:248:71:248:Infinity":58,"b:249:28:249:57:249:57:249:Infinity":59,"b:250:24:250:65:250:65:250:Infinity":60,"s:252:8:260:Infinity":113,"b:258:16:258:Infinity:259:16:259:Infinity":61,"s:263:26:263:Infinity":114,"s:268:51:268:Infinity":115,"s:269:6:273:Infinity":116,"s:270:8:270:Infinity":117,"s:272:8:272:Infinity":118,"s:278:52:278:Infinity":119,"s:279:6:291:Infinity":120,"b:279:52:279:69:279:69:279:97":62,"s:280:22:280:Infinity":121,"b:280:31:280:59:280:59:280:Infinity":63,"s:281:24:281:Infinity":122,"b:281:32:281:51:281:51:281:Infinity":64,"s:282:8:290:Infinity":123,"b:282:24:282:35:282:35:282:39":65,"s:283:10:289:Infinity":124,"b:285:15:285:31:285:31:285:Infinity":66,"b:286:42:286:65:286:65:286:Infinity":67,"b:287:27:287:68:287:68:287:Infinity":68,"b:288:26:288:40:288:40:288:Infinity":69,"s:292:6:292:Infinity":125,"f:292:12:292:18":16,"s:292:27:292:77":126,"b:292:34:292:41:292:41:292:43":70,"b:292:66:292:73:292:73:292:75":71,"s:293:6:301:Infinity":127,"b:296:15:296:32:296:32:296:Infinity":72,"b:297:39:297:77:297:77:297:Infinity":73,"b:298:28:298:74:298:74:298:Infinity":74,"s:305:2:328:Infinity":128,"f:317:28:317:35":17,"s:318:12:325:Infinity":129,"f:319:9:319:17":18,"s:319:23:319:87":130,"b:319:23:319:48:319:48:319:87":75,"f:320:9:320:14":19,"s:320:21:325:10":131,"b:324:27:324:76:324:76:324:Infinity":76,"s:326:6:326:Infinity":132,"b:326:31:326:40:326:40:326:45":77,"b:326:45:326:55:326:55:326:56":78},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/blueprints.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/blueprints.ts","statementMap":{"0":{"start":{"line":12,"column":2},"end":{"line":57,"column":null}},"1":{"start":{"line":27,"column":6},"end":{"line":33,"column":null}},"2":{"start":{"line":28,"column":8},"end":{"line":28,"column":null}},"3":{"start":{"line":30,"column":8},"end":{"line":32,"column":null}},"4":{"start":{"line":34,"column":20},"end":{"line":54,"column":null}},"5":{"start":{"line":35,"column":22},"end":{"line":35,"column":null}},"6":{"start":{"line":36,"column":43},"end":{"line":36,"column":null}},"7":{"start":{"line":37,"column":8},"end":{"line":53,"column":null}},"8":{"start":{"line":42,"column":23},"end":{"line":42,"column":null}},"9":{"start":{"line":43,"column":12},"end":{"line":51,"column":null}},"10":{"start":{"line":55,"column":6},"end":{"line":55,"column":null}}},"fnMap":{"0":{"name":"registerBlueprintTools","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":39}},"loc":{"start":{"line":11,"column":86},"end":{"line":58,"column":null}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":25,"column":31},"end":{"line":25,"column":38}},"loc":{"start":{"line":25,"column":53},"end":{"line":56,"column":5}},"line":25},"2":{"name":"(anonymous_2)","decl":{"start":{"line":34,"column":40},"end":{"line":34,"column":45}},"loc":{"start":{"line":34,"column":60},"end":{"line":54,"column":7}},"line":34},"3":{"name":"(anonymous_3)","decl":{"start":{"line":41,"column":40},"end":{"line":41,"column":45}},"loc":{"start":{"line":41,"column":63},"end":{"line":52,"column":11}},"line":41}},"branchMap":{"0":{"loc":{"start":{"line":28,"column":15},"end":{"line":28,"column":null}},"type":"binary-expr","locations":[{"start":{"line":28,"column":15},"end":{"line":28,"column":91}},{"start":{"line":28,"column":91},"end":{"line":28,"column":null}}],"line":28},"1":{"loc":{"start":{"line":28,"column":61},"end":{"line":28,"column":84}},"type":"binary-expr","locations":[{"start":{"line":28,"column":61},"end":{"line":28,"column":71}},{"start":{"line":28,"column":71},"end":{"line":28,"column":84}}],"line":28},"2":{"loc":{"start":{"line":31,"column":66},"end":{"line":31,"column":109}},"type":"cond-expr","locations":[{"start":{"line":31,"column":87},"end":{"line":31,"column":99}},{"start":{"line":31,"column":99},"end":{"line":31,"column":109}}],"line":31},"3":{"loc":{"start":{"line":35,"column":22},"end":{"line":35,"column":null}},"type":"binary-expr","locations":[{"start":{"line":35,"column":22},"end":{"line":35,"column":77}},{"start":{"line":35,"column":77},"end":{"line":35,"column":null}}],"line":35},"4":{"loc":{"start":{"line":36,"column":43},"end":{"line":36,"column":null}},"type":"binary-expr","locations":[{"start":{"line":36,"column":43},"end":{"line":36,"column":57}},{"start":{"line":36,"column":57},"end":{"line":36,"column":null}}],"line":36},"5":{"loc":{"start":{"line":39,"column":23},"end":{"line":39,"column":40}},"type":"binary-expr","locations":[{"start":{"line":39,"column":23},"end":{"line":39,"column":36}},{"start":{"line":39,"column":36},"end":{"line":39,"column":40}}],"line":39},"6":{"loc":{"start":{"line":40,"column":14},"end":{"line":40,"column":null}},"type":"cond-expr","locations":[{"start":{"line":40,"column":33},"end":{"line":40,"column":89}},{"start":{"line":40,"column":89},"end":{"line":40,"column":null}}],"line":40},"7":{"loc":{"start":{"line":42,"column":23},"end":{"line":42,"column":null}},"type":"binary-expr","locations":[{"start":{"line":42,"column":23},"end":{"line":42,"column":31}},{"start":{"line":42,"column":31},"end":{"line":42,"column":null}}],"line":42},"8":{"loc":{"start":{"line":45,"column":18},"end":{"line":45,"column":null}},"type":"cond-expr","locations":[{"start":{"line":45,"column":34},"end":{"line":45,"column":87}},{"start":{"line":45,"column":87},"end":{"line":45,"column":null}}],"line":45},"9":{"loc":{"start":{"line":47,"column":18},"end":{"line":47,"column":null}},"type":"cond-expr","locations":[{"start":{"line":47,"column":44},"end":{"line":47,"column":69}},{"start":{"line":47,"column":69},"end":{"line":47,"column":null}}],"line":47},"10":{"loc":{"start":{"line":48,"column":18},"end":{"line":50,"column":null}},"type":"cond-expr","locations":[{"start":{"line":49,"column":18},"end":{"line":49,"column":null}},{"start":{"line":50,"column":18},"end":{"line":50,"column":null}}],"line":48},"11":{"loc":{"start":{"line":48,"column":18},"end":{"line":48,"column":null}},"type":"binary-expr","locations":[{"start":{"line":48,"column":18},"end":{"line":48,"column":32}},{"start":{"line":48,"column":32},"end":{"line":48,"column":null}}],"line":48},"12":{"loc":{"start":{"line":49,"column":26},"end":{"line":49,"column":76}},"type":"binary-expr","locations":[{"start":{"line":49,"column":26},"end":{"line":49,"column":66}},{"start":{"line":49,"column":66},"end":{"line":49,"column":76}}],"line":49},"13":{"loc":{"start":{"line":55,"column":23},"end":{"line":55,"column":47}},"type":"binary-expr","locations":[{"start":{"line":55,"column":23},"end":{"line":55,"column":33}},{"start":{"line":55,"column":33},"end":{"line":55,"column":47}}],"line":55}},"s":{"0":23,"1":2,"2":2,"3":1,"4":1,"5":1,"6":1,"7":1,"8":3,"9":3,"10":1},"f":{"0":23,"1":2,"2":1,"3":3},"b":{"0":[2,0],"1":[2,2],"2":[1,0],"3":[1,0],"4":[1,0],"5":[1,0],"6":[1,0],"7":[3,0],"8":[0,3],"9":[1,2],"10":[3,0],"11":[3,3],"12":[3,0],"13":[1,1]},"meta":{"lastBranch":14,"lastFunction":4,"lastStatement":11,"seen":{"f:11:16:11:39":0,"s:12:2:57:Infinity":0,"f:25:31:25:38":1,"s:27:6:33:Infinity":1,"s:28:8:28:Infinity":2,"b:28:15:28:91:28:91:28:Infinity":0,"b:28:61:28:71:28:71:28:84":1,"s:30:8:32:Infinity":3,"b:31:87:31:99:31:99:31:109":2,"s:34:20:54:Infinity":4,"f:34:40:34:45":2,"s:35:22:35:Infinity":5,"b:35:22:35:77:35:77:35:Infinity":3,"s:36:43:36:Infinity":6,"b:36:43:36:57:36:57:36:Infinity":4,"s:37:8:53:Infinity":7,"b:39:23:39:36:39:36:39:40":5,"b:40:33:40:89:40:89:40:Infinity":6,"f:41:40:41:45":3,"s:42:23:42:Infinity":8,"b:42:23:42:31:42:31:42:Infinity":7,"s:43:12:51:Infinity":9,"b:45:34:45:87:45:87:45:Infinity":8,"b:47:44:47:69:47:69:47:Infinity":9,"b:49:18:49:Infinity:50:18:50:Infinity":10,"b:48:18:48:32:48:32:48:Infinity":11,"b:49:26:49:66:49:66:49:76":12,"s:55:6:55:Infinity":10,"b:55:23:55:33:55:33:55:47":13},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/calendar.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/calendar.ts","statementMap":{"0":{"start":{"line":14,"column":2},"end":{"line":50,"column":null}},"1":{"start":{"line":30,"column":6},"end":{"line":35,"column":null}},"2":{"start":{"line":31,"column":14},"end":{"line":33,"column":null}},"3":{"start":{"line":32,"column":25},"end":{"line":32,"column":91}},"4":{"start":{"line":33,"column":23},"end":{"line":33,"column":64}},"5":{"start":{"line":34,"column":8},"end":{"line":34,"column":null}},"6":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"7":{"start":{"line":36,"column":50},"end":{"line":36,"column":null}},"8":{"start":{"line":37,"column":16},"end":{"line":37,"column":null}},"9":{"start":{"line":38,"column":25},"end":{"line":40,"column":null}},"10":{"start":{"line":41,"column":12},"end":{"line":47,"column":null}},"11":{"start":{"line":41,"column":46},"end":{"line":47,"column":8}},"12":{"start":{"line":48,"column":6},"end":{"line":48,"column":null}},"13":{"start":{"line":52,"column":2},"end":{"line":88,"column":null}},"14":{"start":{"line":66,"column":6},"end":{"line":71,"column":null}},"15":{"start":{"line":67,"column":14},"end":{"line":69,"column":null}},"16":{"start":{"line":68,"column":25},"end":{"line":68,"column":87}},"17":{"start":{"line":69,"column":23},"end":{"line":69,"column":64}},"18":{"start":{"line":70,"column":8},"end":{"line":70,"column":null}},"19":{"start":{"line":72,"column":6},"end":{"line":72,"column":null}},"20":{"start":{"line":72,"column":50},"end":{"line":72,"column":null}},"21":{"start":{"line":74,"column":18},"end":{"line":80,"column":null}},"22":{"start":{"line":81,"column":27},"end":{"line":81,"column":null}},"23":{"start":{"line":82,"column":6},"end":{"line":86,"column":null}},"24":{"start":{"line":84,"column":33},"end":{"line":84,"column":126}},"25":{"start":{"line":92,"column":2},"end":{"line":135,"column":null}},"26":{"start":{"line":111,"column":6},"end":{"line":111,"column":null}},"27":{"start":{"line":111,"column":42},"end":{"line":111,"column":null}},"28":{"start":{"line":112,"column":6},"end":{"line":112,"column":null}},"29":{"start":{"line":112,"column":44},"end":{"line":112,"column":null}},"30":{"start":{"line":113,"column":88},"end":{"line":119,"column":null}},"31":{"start":{"line":120,"column":16},"end":{"line":120,"column":null}},"32":{"start":{"line":121,"column":21},"end":{"line":129,"column":null}},"33":{"start":{"line":130,"column":6},"end":{"line":132,"column":null}},"34":{"start":{"line":131,"column":8},"end":{"line":131,"column":null}},"35":{"start":{"line":133,"column":6},"end":{"line":133,"column":null}}},"fnMap":{"0":{"name":"registerCalendarTools","decl":{"start":{"line":13,"column":16},"end":{"line":13,"column":38}},"loc":{"start":{"line":13,"column":85},"end":{"line":136,"column":null}},"line":13},"1":{"name":"(anonymous_1)","decl":{"start":{"line":29,"column":28},"end":{"line":29,"column":35}},"loc":{"start":{"line":29,"column":72},"end":{"line":49,"column":5}},"line":29},"2":{"name":"(anonymous_2)","decl":{"start":{"line":32,"column":11},"end":{"line":32,"column":19}},"loc":{"start":{"line":32,"column":25},"end":{"line":32,"column":91}},"line":32},"3":{"name":"(anonymous_3)","decl":{"start":{"line":33,"column":11},"end":{"line":33,"column":16}},"loc":{"start":{"line":33,"column":23},"end":{"line":33,"column":64}},"line":33},"4":{"name":"(anonymous_4)","decl":{"start":{"line":41,"column":33},"end":{"line":41,"column":38}},"loc":{"start":{"line":41,"column":46},"end":{"line":47,"column":8}},"line":41},"5":{"name":"(anonymous_5)","decl":{"start":{"line":65,"column":29},"end":{"line":65,"column":36}},"loc":{"start":{"line":65,"column":62},"end":{"line":87,"column":5}},"line":65},"6":{"name":"(anonymous_6)","decl":{"start":{"line":68,"column":11},"end":{"line":68,"column":19}},"loc":{"start":{"line":68,"column":25},"end":{"line":68,"column":87}},"line":68},"7":{"name":"(anonymous_7)","decl":{"start":{"line":69,"column":11},"end":{"line":69,"column":16}},"loc":{"start":{"line":69,"column":23},"end":{"line":69,"column":64}},"line":69},"8":{"name":"(anonymous_8)","decl":{"start":{"line":84,"column":21},"end":{"line":84,"column":26}},"loc":{"start":{"line":84,"column":33},"end":{"line":84,"column":126}},"line":84},"9":{"name":"(anonymous_9)","decl":{"start":{"line":110,"column":27},"end":{"line":110,"column":34}},"loc":{"start":{"line":110,"column":100},"end":{"line":134,"column":5}},"line":110}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":6},"end":{"line":35,"column":null}},"type":"if","locations":[{"start":{"line":30,"column":6},"end":{"line":35,"column":null}},{"start":{},"end":{}}],"line":30},"1":{"loc":{"start":{"line":32,"column":25},"end":{"line":32,"column":91}},"type":"binary-expr","locations":[{"start":{"line":32,"column":25},"end":{"line":32,"column":52}},{"start":{"line":32,"column":52},"end":{"line":32,"column":91}}],"line":32},"2":{"loc":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"type":"if","locations":[{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},{"start":{},"end":{}}],"line":36},"3":{"loc":{"start":{"line":41,"column":22},"end":{"line":41,"column":31}},"type":"binary-expr","locations":[{"start":{"line":41,"column":22},"end":{"line":41,"column":29}},{"start":{"line":41,"column":29},"end":{"line":41,"column":31}}],"line":41},"4":{"loc":{"start":{"line":42,"column":23},"end":{"line":42,"column":41}},"type":"binary-expr","locations":[{"start":{"line":42,"column":23},"end":{"line":42,"column":37}},{"start":{"line":42,"column":37},"end":{"line":42,"column":41}}],"line":42},"5":{"loc":{"start":{"line":43,"column":15},"end":{"line":43,"column":null}},"type":"binary-expr","locations":[{"start":{"line":43,"column":15},"end":{"line":43,"column":37}},{"start":{"line":43,"column":37},"end":{"line":43,"column":55}},{"start":{"line":43,"column":55},"end":{"line":43,"column":null}}],"line":43},"6":{"loc":{"start":{"line":44,"column":13},"end":{"line":44,"column":null}},"type":"binary-expr","locations":[{"start":{"line":44,"column":13},"end":{"line":44,"column":33}},{"start":{"line":44,"column":33},"end":{"line":44,"column":49}},{"start":{"line":44,"column":49},"end":{"line":44,"column":null}}],"line":44},"7":{"loc":{"start":{"line":45,"column":12},"end":{"line":45,"column":null}},"type":"cond-expr","locations":[{"start":{"line":45,"column":26},"end":{"line":45,"column":66}},{"start":{"line":45,"column":66},"end":{"line":45,"column":null}}],"line":45},"8":{"loc":{"start":{"line":46,"column":12},"end":{"line":46,"column":null}},"type":"cond-expr","locations":[{"start":{"line":46,"column":29},"end":{"line":46,"column":75}},{"start":{"line":46,"column":75},"end":{"line":46,"column":null}}],"line":46},"9":{"loc":{"start":{"line":66,"column":6},"end":{"line":71,"column":null}},"type":"if","locations":[{"start":{"line":66,"column":6},"end":{"line":71,"column":null}},{"start":{},"end":{}}],"line":66},"10":{"loc":{"start":{"line":68,"column":25},"end":{"line":68,"column":87}},"type":"binary-expr","locations":[{"start":{"line":68,"column":25},"end":{"line":68,"column":48}},{"start":{"line":68,"column":48},"end":{"line":68,"column":87}}],"line":68},"11":{"loc":{"start":{"line":72,"column":6},"end":{"line":72,"column":null}},"type":"if","locations":[{"start":{"line":72,"column":6},"end":{"line":72,"column":null}},{"start":{},"end":{}}],"line":72},"12":{"loc":{"start":{"line":78,"column":12},"end":{"line":78,"column":null}},"type":"cond-expr","locations":[{"start":{"line":78,"column":21},"end":{"line":78,"column":52}},{"start":{"line":78,"column":52},"end":{"line":78,"column":null}}],"line":78},"13":{"loc":{"start":{"line":81,"column":27},"end":{"line":81,"column":null}},"type":"binary-expr","locations":[{"start":{"line":81,"column":27},"end":{"line":81,"column":64}},{"start":{"line":81,"column":64},"end":{"line":81,"column":null}}],"line":81},"14":{"loc":{"start":{"line":84,"column":50},"end":{"line":84,"column":67}},"type":"binary-expr","locations":[{"start":{"line":84,"column":50},"end":{"line":84,"column":63}},{"start":{"line":84,"column":63},"end":{"line":84,"column":67}}],"line":84},"15":{"loc":{"start":{"line":84,"column":95},"end":{"line":84,"column":124}},"type":"cond-expr","locations":[{"start":{"line":84,"column":103},"end":{"line":84,"column":120}},{"start":{"line":84,"column":120},"end":{"line":84,"column":124}}],"line":84},"16":{"loc":{"start":{"line":111,"column":6},"end":{"line":111,"column":null}},"type":"if","locations":[{"start":{"line":111,"column":6},"end":{"line":111,"column":null}},{"start":{},"end":{}}],"line":111},"17":{"loc":{"start":{"line":112,"column":6},"end":{"line":112,"column":null}},"type":"if","locations":[{"start":{"line":112,"column":6},"end":{"line":112,"column":null}},{"start":{},"end":{}}],"line":112},"18":{"loc":{"start":{"line":112,"column":10},"end":{"line":112,"column":44}},"type":"binary-expr","locations":[{"start":{"line":112,"column":10},"end":{"line":112,"column":33}},{"start":{"line":112,"column":33},"end":{"line":112,"column":44}}],"line":112},"19":{"loc":{"start":{"line":130,"column":6},"end":{"line":132,"column":null}},"type":"if","locations":[{"start":{"line":130,"column":6},"end":{"line":132,"column":null}},{"start":{},"end":{}}],"line":130}},"s":{"0":29,"1":3,"2":1,"3":2,"4":1,"5":1,"6":2,"7":0,"8":2,"9":2,"10":1,"11":1,"12":3,"13":29,"14":2,"15":1,"16":1,"17":1,"18":1,"19":1,"20":0,"21":1,"22":1,"23":2,"24":1,"25":29,"26":6,"27":1,"28":5,"29":1,"30":4,"31":4,"32":4,"33":4,"34":4,"35":0},"f":{"0":29,"1":3,"2":2,"3":1,"4":1,"5":2,"6":1,"7":1,"8":1,"9":6},"b":{"0":[1,2],"1":[2,1],"2":[0,2],"3":[1,0],"4":[1,0],"5":[1,0,0],"6":[1,0,0],"7":[1,0],"8":[0,1],"9":[1,1],"10":[1,1],"11":[0,1],"12":[0,1],"13":[1,0],"14":[1,0],"15":[0,1],"16":[1,5],"17":[1,4],"18":[5,2],"19":[4,0]},"meta":{"lastBranch":20,"lastFunction":10,"lastStatement":36,"seen":{"f:13:16:13:38":0,"s:14:2:50:Infinity":0,"f:29:28:29:35":1,"b:30:6:35:Infinity:undefined:undefined:undefined:undefined":0,"s:30:6:35:Infinity":1,"s:31:14:33:Infinity":2,"f:32:11:32:19":2,"s:32:25:32:91":3,"b:32:25:32:52:32:52:32:91":1,"f:33:11:33:16":3,"s:33:23:33:64":4,"s:34:8:34:Infinity":5,"b:36:6:36:Infinity:undefined:undefined:undefined:undefined":2,"s:36:6:36:Infinity":6,"s:36:50:36:Infinity":7,"s:37:16:37:Infinity":8,"s:38:25:40:Infinity":9,"s:41:12:47:Infinity":10,"b:41:22:41:29:41:29:41:31":3,"f:41:33:41:38":4,"s:41:46:47:8":11,"b:42:23:42:37:42:37:42:41":4,"b:43:15:43:37:43:37:43:55:43:55:43:Infinity":5,"b:44:13:44:33:44:33:44:49:44:49:44:Infinity":6,"b:45:26:45:66:45:66:45:Infinity":7,"b:46:29:46:75:46:75:46:Infinity":8,"s:48:6:48:Infinity":12,"s:52:2:88:Infinity":13,"f:65:29:65:36":5,"b:66:6:71:Infinity:undefined:undefined:undefined:undefined":9,"s:66:6:71:Infinity":14,"s:67:14:69:Infinity":15,"f:68:11:68:19":6,"s:68:25:68:87":16,"b:68:25:68:48:68:48:68:87":10,"f:69:11:69:16":7,"s:69:23:69:64":17,"s:70:8:70:Infinity":18,"b:72:6:72:Infinity:undefined:undefined:undefined:undefined":11,"s:72:6:72:Infinity":19,"s:72:50:72:Infinity":20,"s:74:18:80:Infinity":21,"b:78:21:78:52:78:52:78:Infinity":12,"s:81:27:81:Infinity":22,"b:81:27:81:64:81:64:81:Infinity":13,"s:82:6:86:Infinity":23,"f:84:21:84:26":8,"s:84:33:84:126":24,"b:84:50:84:63:84:63:84:67":14,"b:84:103:84:120:84:120:84:124":15,"s:92:2:135:Infinity":25,"f:110:27:110:34":9,"b:111:6:111:Infinity:undefined:undefined:undefined:undefined":16,"s:111:6:111:Infinity":26,"s:111:42:111:Infinity":27,"b:112:6:112:Infinity:undefined:undefined:undefined:undefined":17,"s:112:6:112:Infinity":28,"b:112:10:112:33:112:33:112:44":18,"s:112:44:112:Infinity":29,"s:113:88:119:Infinity":30,"s:120:16:120:Infinity":31,"s:121:21:129:Infinity":32,"b:130:6:132:Infinity:undefined:undefined:undefined:undefined":19,"s:130:6:132:Infinity":33,"s:131:8:131:Infinity":34,"s:133:6:133:Infinity":35},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/camera.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/camera.ts","statementMap":{"0":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"1":{"start":{"line":19,"column":2},"end":{"line":53,"column":null}},"2":{"start":{"line":32,"column":6},"end":{"line":32,"column":null}},"3":{"start":{"line":33,"column":6},"end":{"line":51,"column":null}},"4":{"start":{"line":34,"column":8},"end":{"line":36,"column":null}},"5":{"start":{"line":35,"column":10},"end":{"line":35,"column":null}},"6":{"start":{"line":37,"column":8},"end":{"line":40,"column":null}},"7":{"start":{"line":38,"column":10},"end":{"line":38,"column":null}},"8":{"start":{"line":39,"column":10},"end":{"line":39,"column":null}},"9":{"start":{"line":41,"column":40},"end":{"line":44,"column":null}},"10":{"start":{"line":45,"column":8},"end":{"line":45,"column":null}},"11":{"start":{"line":46,"column":8},"end":{"line":46,"column":null}},"12":{"start":{"line":48,"column":20},"end":{"line":48,"column":null}},"13":{"start":{"line":49,"column":8},"end":{"line":49,"column":null}},"14":{"start":{"line":50,"column":8},"end":{"line":50,"column":null}}},"fnMap":{"0":{"name":"registerCameraTools","decl":{"start":{"line":17,"column":16},"end":{"line":17,"column":36}},"loc":{"start":{"line":17,"column":83},"end":{"line":54,"column":null}},"line":17},"1":{"name":"(anonymous_1)","decl":{"start":{"line":31,"column":4},"end":{"line":31,"column":11}},"loc":{"start":{"line":31,"column":50},"end":{"line":52,"column":null}},"line":31}},"branchMap":{"0":{"loc":{"start":{"line":34,"column":8},"end":{"line":36,"column":null}},"type":"if","locations":[{"start":{"line":34,"column":8},"end":{"line":36,"column":null}},{"start":{},"end":{}}],"line":34},"1":{"loc":{"start":{"line":37,"column":8},"end":{"line":40,"column":null}},"type":"if","locations":[{"start":{"line":37,"column":8},"end":{"line":40,"column":null}},{"start":{},"end":{}}],"line":37},"2":{"loc":{"start":{"line":38,"column":26},"end":{"line":38,"column":51}},"type":"binary-expr","locations":[{"start":{"line":38,"column":26},"end":{"line":38,"column":40}},{"start":{"line":38,"column":40},"end":{"line":38,"column":51}}],"line":38},"3":{"loc":{"start":{"line":45,"column":24},"end":{"line":45,"column":49}},"type":"binary-expr","locations":[{"start":{"line":45,"column":24},"end":{"line":45,"column":38}},{"start":{"line":45,"column":38},"end":{"line":45,"column":49}}],"line":45},"4":{"loc":{"start":{"line":48,"column":20},"end":{"line":48,"column":null}},"type":"cond-expr","locations":[{"start":{"line":48,"column":41},"end":{"line":48,"column":53}},{"start":{"line":48,"column":53},"end":{"line":48,"column":null}}],"line":48}},"s":{"0":2,"1":25,"2":3,"3":3,"4":3,"5":1,"6":2,"7":1,"8":1,"9":1,"10":1,"11":3,"12":2,"13":2,"14":2},"f":{"0":25,"1":3},"b":{"0":[1,2],"1":[1,1],"2":[1,1],"3":[1,0],"4":[2,0]},"meta":{"lastBranch":5,"lastFunction":2,"lastStatement":15,"seen":{"s:9:24:9:Infinity":0,"f:17:16:17:36":0,"s:19:2:53:Infinity":1,"f:31:4:31:11":1,"s:32:6:32:Infinity":2,"s:33:6:51:Infinity":3,"b:34:8:36:Infinity:undefined:undefined:undefined:undefined":0,"s:34:8:36:Infinity":4,"s:35:10:35:Infinity":5,"b:37:8:40:Infinity:undefined:undefined:undefined:undefined":1,"s:37:8:40:Infinity":6,"s:38:10:38:Infinity":7,"b:38:26:38:40:38:40:38:51":2,"s:39:10:39:Infinity":8,"s:41:40:44:Infinity":9,"s:45:8:45:Infinity":10,"b:45:24:45:38:45:38:45:49":3,"s:46:8:46:Infinity":11,"s:48:20:48:Infinity":12,"b:48:41:48:53:48:53:48:Infinity":4,"s:49:8:49:Infinity":13,"s:50:8:50:Infinity":14},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/configwrite.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/configwrite.ts","statementMap":{"0":{"start":{"line":17,"column":12},"end":{"line":17,"column":null}},"1":{"start":{"line":18,"column":12},"end":{"line":18,"column":null}},"2":{"start":{"line":19,"column":12},"end":{"line":19,"column":null}},"3":{"start":{"line":20,"column":12},"end":{"line":20,"column":null}},"4":{"start":{"line":21,"column":25},"end":{"line":21,"column":null}},"5":{"start":{"line":21,"column":61},"end":{"line":21,"column":93}},"6":{"start":{"line":22,"column":2},"end":{"line":28,"column":null}},"7":{"start":{"line":22,"column":15},"end":{"line":22,"column":22}},"8":{"start":{"line":23,"column":16},"end":{"line":23,"column":null}},"9":{"start":{"line":24,"column":17},"end":{"line":24,"column":null}},"10":{"start":{"line":25,"column":4},"end":{"line":27,"column":null}},"11":{"start":{"line":25,"column":17},"end":{"line":25,"column":24}},"12":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}},"13":{"start":{"line":29,"column":24},"end":{"line":29,"column":null}},"14":{"start":{"line":30,"column":10},"end":{"line":30,"column":null}},"15":{"start":{"line":31,"column":10},"end":{"line":31,"column":null}},"16":{"start":{"line":32,"column":2},"end":{"line":44,"column":null}},"17":{"start":{"line":33,"column":4},"end":{"line":43,"column":null}},"18":{"start":{"line":34,"column":6},"end":{"line":34,"column":null}},"19":{"start":{"line":35,"column":6},"end":{"line":35,"column":null}},"20":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"21":{"start":{"line":37,"column":11},"end":{"line":43,"column":null}},"22":{"start":{"line":38,"column":6},"end":{"line":38,"column":null}},"23":{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},"24":{"start":{"line":41,"column":6},"end":{"line":41,"column":null}},"25":{"start":{"line":42,"column":6},"end":{"line":42,"column":null}},"26":{"start":{"line":45,"column":2},"end":{"line":45,"column":null}},"27":{"start":{"line":45,"column":16},"end":{"line":45,"column":null}},"28":{"start":{"line":46,"column":2},"end":{"line":46,"column":null}},"29":{"start":{"line":46,"column":16},"end":{"line":46,"column":null}},"30":{"start":{"line":47,"column":2},"end":{"line":47,"column":null}},"31":{"start":{"line":64,"column":20},"end":{"line":64,"column":null}},"32":{"start":{"line":68,"column":2},"end":{"line":73,"column":null}},"33":{"start":{"line":79,"column":8},"end":{"line":79,"column":null}},"34":{"start":{"line":79,"column":31},"end":{"line":79,"column":null}},"35":{"start":{"line":101,"column":16},"end":{"line":101,"column":null}},"36":{"start":{"line":102,"column":4},"end":{"line":106,"column":null}},"37":{"start":{"line":102,"column":24},"end":{"line":102,"column":52}},"38":{"start":{"line":103,"column":6},"end":{"line":105,"column":null}},"39":{"start":{"line":107,"column":4},"end":{"line":116,"column":null}},"40":{"start":{"line":108,"column":20},"end":{"line":108,"column":null}},"41":{"start":{"line":109,"column":20},"end":{"line":109,"column":null}},"42":{"start":{"line":109,"column":36},"end":{"line":109,"column":95}},"43":{"start":{"line":110,"column":6},"end":{"line":115,"column":null}},"44":{"start":{"line":111,"column":8},"end":{"line":114,"column":null}},"45":{"start":{"line":121,"column":6},"end":{"line":127,"column":null}},"46":{"start":{"line":128,"column":68},"end":{"line":128,"column":null}},"47":{"start":{"line":129,"column":16},"end":{"line":129,"column":null}},"48":{"start":{"line":129,"column":60},"end":{"line":129,"column":82}},"49":{"start":{"line":130,"column":4},"end":{"line":134,"column":null}},"50":{"start":{"line":131,"column":6},"end":{"line":133,"column":null}},"51":{"start":{"line":132,"column":76},"end":{"line":132,"column":107}},"52":{"start":{"line":138,"column":17},"end":{"line":138,"column":null}},"53":{"start":{"line":139,"column":17},"end":{"line":139,"column":null}},"54":{"start":{"line":140,"column":4},"end":{"line":140,"column":null}},"55":{"start":{"line":142,"column":4},"end":{"line":145,"column":null}},"56":{"start":{"line":143,"column":6},"end":{"line":143,"column":null}},"57":{"start":{"line":144,"column":6},"end":{"line":144,"column":null}},"58":{"start":{"line":147,"column":4},"end":{"line":185,"column":null}},"59":{"start":{"line":150,"column":6},"end":{"line":150,"column":null}},"60":{"start":{"line":150,"column":33},"end":{"line":150,"column":null}},"61":{"start":{"line":153,"column":21},"end":{"line":155,"column":null}},"62":{"start":{"line":156,"column":6},"end":{"line":159,"column":null}},"63":{"start":{"line":157,"column":8},"end":{"line":157,"column":null}},"64":{"start":{"line":158,"column":8},"end":{"line":158,"column":null}},"65":{"start":{"line":160,"column":6},"end":{"line":172,"column":null}},"66":{"start":{"line":161,"column":30},"end":{"line":161,"column":null}},"67":{"start":{"line":162,"column":8},"end":{"line":162,"column":null}},"68":{"start":{"line":163,"column":8},"end":{"line":171,"column":null}},"69":{"start":{"line":173,"column":6},"end":{"line":173,"column":null}},"70":{"start":{"line":175,"column":22},"end":{"line":175,"column":null}},"71":{"start":{"line":176,"column":6},"end":{"line":184,"column":null}},"72":{"start":{"line":177,"column":8},"end":{"line":177,"column":null}},"73":{"start":{"line":178,"column":8},"end":{"line":183,"column":null}},"74":{"start":{"line":186,"column":4},"end":{"line":186,"column":null}},"75":{"start":{"line":187,"column":4},"end":{"line":187,"column":null}},"76":{"start":{"line":188,"column":4},"end":{"line":191,"column":null}},"77":{"start":{"line":216,"column":40},"end":{"line":216,"column":null}},"78":{"start":{"line":217,"column":15},"end":{"line":217,"column":null}},"79":{"start":{"line":218,"column":4},"end":{"line":218,"column":null}},"80":{"start":{"line":218,"column":13},"end":{"line":218,"column":null}},"81":{"start":{"line":219,"column":42},"end":{"line":219,"column":null}},"82":{"start":{"line":220,"column":20},"end":{"line":223,"column":null}},"83":{"start":{"line":221,"column":27},"end":{"line":221,"column":66}},"84":{"start":{"line":222,"column":23},"end":{"line":222,"column":27}},"85":{"start":{"line":223,"column":24},"end":{"line":223,"column":41}},"86":{"start":{"line":224,"column":4},"end":{"line":224,"column":null}},"87":{"start":{"line":224,"column":28},"end":{"line":224,"column":null}},"88":{"start":{"line":225,"column":20},"end":{"line":225,"column":null}},"89":{"start":{"line":225,"column":54},"end":{"line":225,"column":70}},"90":{"start":{"line":226,"column":4},"end":{"line":228,"column":null}},"91":{"start":{"line":227,"column":6},"end":{"line":227,"column":null}},"92":{"start":{"line":232,"column":10},"end":{"line":232,"column":null}},"93":{"start":{"line":232,"column":54},"end":{"line":232,"column":78}},"94":{"start":{"line":233,"column":4},"end":{"line":233,"column":null}},"95":{"start":{"line":233,"column":12},"end":{"line":233,"column":null}},"96":{"start":{"line":235,"column":4},"end":{"line":243,"column":null}},"97":{"start":{"line":236,"column":20},"end":{"line":236,"column":null}},"98":{"start":{"line":237,"column":6},"end":{"line":239,"column":null}},"99":{"start":{"line":238,"column":8},"end":{"line":238,"column":null}},"100":{"start":{"line":240,"column":6},"end":{"line":240,"column":null}},"101":{"start":{"line":242,"column":6},"end":{"line":242,"column":null}},"102":{"start":{"line":244,"column":4},"end":{"line":252,"column":null}},"103":{"start":{"line":245,"column":21},"end":{"line":245,"column":null}},"104":{"start":{"line":246,"column":6},"end":{"line":246,"column":null}},"105":{"start":{"line":248,"column":6},"end":{"line":250,"column":null}},"106":{"start":{"line":249,"column":8},"end":{"line":249,"column":null}},"107":{"start":{"line":251,"column":6},"end":{"line":251,"column":null}},"108":{"start":{"line":256,"column":43},"end":{"line":256,"column":null}},"109":{"start":{"line":257,"column":4},"end":{"line":257,"column":null}},"110":{"start":{"line":257,"column":52},"end":{"line":257,"column":null}},"111":{"start":{"line":257,"column":73},"end":{"line":257,"column":null}},"112":{"start":{"line":258,"column":4},"end":{"line":262,"column":null}},"113":{"start":{"line":259,"column":6},"end":{"line":261,"column":null}},"114":{"start":{"line":263,"column":37},"end":{"line":263,"column":null}},"115":{"start":{"line":266,"column":23},"end":{"line":266,"column":null}},"116":{"start":{"line":267,"column":24},"end":{"line":267,"column":null}},"117":{"start":{"line":268,"column":22},"end":{"line":268,"column":null}},"118":{"start":{"line":268,"column":86},"end":{"line":268,"column":96}},"119":{"start":{"line":269,"column":4},"end":{"line":273,"column":null}},"120":{"start":{"line":270,"column":6},"end":{"line":272,"column":null}},"121":{"start":{"line":274,"column":4},"end":{"line":276,"column":null}},"122":{"start":{"line":275,"column":6},"end":{"line":275,"column":null}},"123":{"start":{"line":277,"column":43},"end":{"line":277,"column":null}},"124":{"start":{"line":282,"column":4},"end":{"line":282,"column":null}},"125":{"start":{"line":282,"column":48},"end":{"line":282,"column":null}},"126":{"start":{"line":282,"column":64},"end":{"line":282,"column":null}},"127":{"start":{"line":289,"column":4},"end":{"line":295,"column":null}},"128":{"start":{"line":294,"column":6},"end":{"line":294,"column":null}},"129":{"start":{"line":294,"column":27},"end":{"line":294,"column":null}},"130":{"start":{"line":296,"column":4},"end":{"line":299,"column":null}},"131":{"start":{"line":297,"column":6},"end":{"line":297,"column":null}},"132":{"start":{"line":298,"column":6},"end":{"line":298,"column":null}},"133":{"start":{"line":300,"column":23},"end":{"line":300,"column":null}},"134":{"start":{"line":301,"column":22},"end":{"line":301,"column":null}},"135":{"start":{"line":302,"column":17},"end":{"line":302,"column":null}},"136":{"start":{"line":303,"column":21},"end":{"line":303,"column":null}},"137":{"start":{"line":307,"column":17},"end":{"line":311,"column":null}},"138":{"start":{"line":313,"column":4},"end":{"line":316,"column":null}},"139":{"start":{"line":314,"column":6},"end":{"line":314,"column":null}},"140":{"start":{"line":315,"column":6},"end":{"line":315,"column":null}},"141":{"start":{"line":318,"column":4},"end":{"line":356,"column":null}},"142":{"start":{"line":322,"column":6},"end":{"line":322,"column":null}},"143":{"start":{"line":322,"column":24},"end":{"line":322,"column":null}},"144":{"start":{"line":323,"column":21},"end":{"line":325,"column":null}},"145":{"start":{"line":326,"column":6},"end":{"line":329,"column":null}},"146":{"start":{"line":327,"column":8},"end":{"line":327,"column":null}},"147":{"start":{"line":328,"column":8},"end":{"line":328,"column":null}},"148":{"start":{"line":330,"column":6},"end":{"line":343,"column":null}},"149":{"start":{"line":331,"column":30},"end":{"line":331,"column":null}},"150":{"start":{"line":332,"column":8},"end":{"line":332,"column":null}},"151":{"start":{"line":333,"column":8},"end":{"line":342,"column":null}},"152":{"start":{"line":344,"column":6},"end":{"line":344,"column":null}},"153":{"start":{"line":346,"column":22},"end":{"line":346,"column":null}},"154":{"start":{"line":347,"column":6},"end":{"line":355,"column":null}},"155":{"start":{"line":348,"column":8},"end":{"line":348,"column":null}},"156":{"start":{"line":349,"column":8},"end":{"line":354,"column":null}},"157":{"start":{"line":358,"column":4},"end":{"line":358,"column":null}},"158":{"start":{"line":359,"column":4},"end":{"line":359,"column":null}},"159":{"start":{"line":360,"column":4},"end":{"line":364,"column":null}},"160":{"start":{"line":377,"column":21},"end":{"line":377,"column":null}},"161":{"start":{"line":378,"column":4},"end":{"line":381,"column":null}},"162":{"start":{"line":379,"column":6},"end":{"line":379,"column":null}},"163":{"start":{"line":380,"column":6},"end":{"line":380,"column":null}},"164":{"start":{"line":382,"column":29},"end":{"line":382,"column":null}},"165":{"start":{"line":383,"column":17},"end":{"line":383,"column":null}},"166":{"start":{"line":384,"column":21},"end":{"line":384,"column":null}},"167":{"start":{"line":385,"column":17},"end":{"line":389,"column":null}},"168":{"start":{"line":391,"column":4},"end":{"line":394,"column":null}},"169":{"start":{"line":392,"column":6},"end":{"line":392,"column":null}},"170":{"start":{"line":393,"column":6},"end":{"line":393,"column":null}},"171":{"start":{"line":395,"column":4},"end":{"line":428,"column":null}},"172":{"start":{"line":396,"column":21},"end":{"line":398,"column":null}},"173":{"start":{"line":399,"column":6},"end":{"line":402,"column":null}},"174":{"start":{"line":400,"column":8},"end":{"line":400,"column":null}},"175":{"start":{"line":401,"column":8},"end":{"line":401,"column":null}},"176":{"start":{"line":403,"column":6},"end":{"line":415,"column":null}},"177":{"start":{"line":404,"column":30},"end":{"line":404,"column":null}},"178":{"start":{"line":405,"column":8},"end":{"line":405,"column":null}},"179":{"start":{"line":406,"column":8},"end":{"line":414,"column":null}},"180":{"start":{"line":416,"column":6},"end":{"line":416,"column":null}},"181":{"start":{"line":418,"column":22},"end":{"line":418,"column":null}},"182":{"start":{"line":419,"column":6},"end":{"line":427,"column":null}},"183":{"start":{"line":420,"column":8},"end":{"line":420,"column":null}},"184":{"start":{"line":421,"column":8},"end":{"line":426,"column":null}},"185":{"start":{"line":429,"column":4},"end":{"line":429,"column":null}},"186":{"start":{"line":430,"column":4},"end":{"line":430,"column":null}},"187":{"start":{"line":431,"column":4},"end":{"line":435,"column":null}},"188":{"start":{"line":438,"column":2},"end":{"line":457,"column":null}},"189":{"start":{"line":454,"column":6},"end":{"line":454,"column":null}},"190":{"start":{"line":454,"column":48},"end":{"line":454,"column":null}},"191":{"start":{"line":455,"column":6},"end":{"line":455,"column":null}},"192":{"start":{"line":459,"column":2},"end":{"line":477,"column":null}},"193":{"start":{"line":474,"column":6},"end":{"line":474,"column":null}},"194":{"start":{"line":474,"column":44},"end":{"line":474,"column":null}},"195":{"start":{"line":475,"column":6},"end":{"line":475,"column":null}},"196":{"start":{"line":479,"column":2},"end":{"line":605,"column":null}},"197":{"start":{"line":499,"column":22},"end":{"line":499,"column":null}},"198":{"start":{"line":503,"column":6},"end":{"line":512,"column":null}},"199":{"start":{"line":504,"column":30},"end":{"line":504,"column":null}},"200":{"start":{"line":505,"column":22},"end":{"line":505,"column":null}},"201":{"start":{"line":505,"column":39},"end":{"line":505,"column":61}},"202":{"start":{"line":506,"column":8},"end":{"line":508,"column":null}},"203":{"start":{"line":507,"column":10},"end":{"line":507,"column":null}},"204":{"start":{"line":510,"column":8},"end":{"line":510,"column":null}},"205":{"start":{"line":510,"column":70},"end":{"line":510,"column":null}},"206":{"start":{"line":514,"column":26},"end":{"line":514,"column":null}},"207":{"start":{"line":515,"column":27},"end":{"line":515,"column":null}},"208":{"start":{"line":517,"column":8},"end":{"line":523,"column":null}},"209":{"start":{"line":521,"column":16},"end":{"line":522,"column":null}},"210":{"start":{"line":524,"column":21},"end":{"line":524,"column":null}},"211":{"start":{"line":525,"column":6},"end":{"line":529,"column":null}},"212":{"start":{"line":526,"column":8},"end":{"line":528,"column":null}},"213":{"start":{"line":527,"column":65},"end":{"line":527,"column":109}},"214":{"start":{"line":531,"column":29},"end":{"line":531,"column":null}},"215":{"start":{"line":534,"column":22},"end":{"line":534,"column":null}},"216":{"start":{"line":535,"column":6},"end":{"line":545,"column":null}},"217":{"start":{"line":536,"column":8},"end":{"line":536,"column":null}},"218":{"start":{"line":537,"column":19},"end":{"line":537,"column":null}},"219":{"start":{"line":538,"column":8},"end":{"line":541,"column":null}},"220":{"start":{"line":539,"column":10},"end":{"line":539,"column":null}},"221":{"start":{"line":540,"column":10},"end":{"line":540,"column":null}},"222":{"start":{"line":542,"column":8},"end":{"line":542,"column":null}},"223":{"start":{"line":544,"column":8},"end":{"line":544,"column":null}},"224":{"start":{"line":546,"column":28},"end":{"line":546,"column":null}},"225":{"start":{"line":547,"column":19},"end":{"line":547,"column":null}},"226":{"start":{"line":550,"column":23},"end":{"line":550,"column":null}},"227":{"start":{"line":551,"column":19},"end":{"line":555,"column":null}},"228":{"start":{"line":556,"column":20},"end":{"line":556,"column":null}},"229":{"start":{"line":558,"column":6},"end":{"line":561,"column":null}},"230":{"start":{"line":559,"column":8},"end":{"line":559,"column":null}},"231":{"start":{"line":560,"column":8},"end":{"line":560,"column":null}},"232":{"start":{"line":562,"column":6},"end":{"line":594,"column":null}},"233":{"start":{"line":563,"column":23},"end":{"line":565,"column":null}},"234":{"start":{"line":566,"column":8},"end":{"line":569,"column":null}},"235":{"start":{"line":567,"column":10},"end":{"line":567,"column":null}},"236":{"start":{"line":568,"column":10},"end":{"line":568,"column":null}},"237":{"start":{"line":570,"column":8},"end":{"line":581,"column":null}},"238":{"start":{"line":571,"column":24},"end":{"line":571,"column":null}},"239":{"start":{"line":572,"column":10},"end":{"line":572,"column":null}},"240":{"start":{"line":573,"column":10},"end":{"line":580,"column":null}},"241":{"start":{"line":582,"column":8},"end":{"line":582,"column":null}},"242":{"start":{"line":584,"column":24},"end":{"line":584,"column":null}},"243":{"start":{"line":585,"column":8},"end":{"line":593,"column":null}},"244":{"start":{"line":586,"column":10},"end":{"line":586,"column":null}},"245":{"start":{"line":587,"column":10},"end":{"line":592,"column":null}},"246":{"start":{"line":596,"column":24},"end":{"line":596,"column":null}},"247":{"start":{"line":596,"column":65},"end":{"line":596,"column":89}},"248":{"start":{"line":597,"column":6},"end":{"line":597,"column":null}},"249":{"start":{"line":598,"column":6},"end":{"line":598,"column":null}},"250":{"start":{"line":599,"column":6},"end":{"line":603,"column":null}},"251":{"start":{"line":607,"column":2},"end":{"line":665,"column":null}},"252":{"start":{"line":627,"column":19},"end":{"line":627,"column":null}},"253":{"start":{"line":630,"column":41},"end":{"line":630,"column":null}},"254":{"start":{"line":631,"column":17},"end":{"line":631,"column":null}},"255":{"start":{"line":632,"column":6},"end":{"line":634,"column":null}},"256":{"start":{"line":633,"column":8},"end":{"line":633,"column":null}},"257":{"start":{"line":635,"column":44},"end":{"line":635,"column":null}},"258":{"start":{"line":636,"column":22},"end":{"line":639,"column":null}},"259":{"start":{"line":637,"column":29},"end":{"line":637,"column":68}},"260":{"start":{"line":638,"column":25},"end":{"line":638,"column":29}},"261":{"start":{"line":639,"column":26},"end":{"line":639,"column":43}},"262":{"start":{"line":640,"column":6},"end":{"line":642,"column":null}},"263":{"start":{"line":641,"column":8},"end":{"line":641,"column":null}},"264":{"start":{"line":643,"column":22},"end":{"line":643,"column":null}},"265":{"start":{"line":643,"column":56},"end":{"line":643,"column":72}},"266":{"start":{"line":644,"column":6},"end":{"line":646,"column":null}},"267":{"start":{"line":645,"column":8},"end":{"line":645,"column":null}},"268":{"start":{"line":648,"column":23},"end":{"line":648,"column":null}},"269":{"start":{"line":649,"column":6},"end":{"line":649,"column":null}},"270":{"start":{"line":649,"column":21},"end":{"line":649,"column":null}},"271":{"start":{"line":650,"column":47},"end":{"line":653,"column":null}},"272":{"start":{"line":654,"column":6},"end":{"line":663,"column":null}},"273":{"start":{"line":670,"column":26},"end":{"line":670,"column":null}},"274":{"start":{"line":671,"column":28},"end":{"line":671,"column":null}},"275":{"start":{"line":672,"column":22},"end":{"line":672,"column":null}},"276":{"start":{"line":674,"column":2},"end":{"line":714,"column":null}},"277":{"start":{"line":703,"column":6},"end":{"line":703,"column":null}},"278":{"start":{"line":703,"column":48},"end":{"line":703,"column":null}},"279":{"start":{"line":704,"column":6},"end":{"line":712,"column":null}},"280":{"start":{"line":716,"column":2},"end":{"line":751,"column":null}},"281":{"start":{"line":740,"column":6},"end":{"line":740,"column":null}},"282":{"start":{"line":740,"column":44},"end":{"line":740,"column":null}},"283":{"start":{"line":741,"column":6},"end":{"line":749,"column":null}},"284":{"start":{"line":753,"column":2},"end":{"line":797,"column":null}},"285":{"start":{"line":777,"column":47},"end":{"line":786,"column":null}},"286":{"start":{"line":787,"column":6},"end":{"line":795,"column":null}},"287":{"start":{"line":799,"column":2},"end":{"line":840,"column":null}},"288":{"start":{"line":820,"column":23},"end":{"line":820,"column":null}},"289":{"start":{"line":821,"column":6},"end":{"line":821,"column":null}},"290":{"start":{"line":821,"column":21},"end":{"line":821,"column":null}},"291":{"start":{"line":822,"column":47},"end":{"line":829,"column":null}},"292":{"start":{"line":830,"column":6},"end":{"line":838,"column":null}}},"fnMap":{"0":{"name":"unifiedDiff","decl":{"start":{"line":16,"column":16},"end":{"line":16,"column":28}},"loc":{"start":{"line":16,"column":67},"end":{"line":48,"column":null}},"line":16},"1":{"name":"(anonymous_1)","decl":{"start":{"line":21,"column":52},"end":{"line":21,"column":61}},"loc":{"start":{"line":21,"column":61},"end":{"line":21,"column":93}},"line":21},"2":{"name":"slugify","decl":{"start":{"line":67,"column":9},"end":{"line":67,"column":17}},"loc":{"start":{"line":67,"column":40},"end":{"line":74,"column":null}},"line":67},"3":{"name":"registerConfigWriteTools","decl":{"start":{"line":76,"column":16},"end":{"line":76,"column":41}},"loc":{"start":{"line":76,"column":88},"end":{"line":841,"column":null}},"line":76},"4":{"name":"(anonymous_4)","decl":{"start":{"line":79,"column":8},"end":{"line":79,"column":31}},"loc":{"start":{"line":79,"column":31},"end":{"line":79,"column":null}},"line":79},"5":{"name":"refuseCollisions","decl":{"start":{"line":100,"column":17},"end":{"line":100,"column":34}},"loc":{"start":{"line":100,"column":69},"end":{"line":117,"column":null}},"line":100},"6":{"name":"(anonymous_6)","decl":{"start":{"line":102,"column":12},"end":{"line":102,"column":18}},"loc":{"start":{"line":102,"column":24},"end":{"line":102,"column":52}},"line":102},"7":{"name":"(anonymous_7)","decl":{"start":{"line":109,"column":24},"end":{"line":109,"column":30}},"loc":{"start":{"line":109,"column":36},"end":{"line":109,"column":95}},"line":109},"8":{"name":"validateBlocks","decl":{"start":{"line":119,"column":17},"end":{"line":119,"column":32}},"loc":{"start":{"line":119,"column":112},"end":{"line":135,"column":null}},"line":119},"9":{"name":"(anonymous_9)","decl":{"start":{"line":129,"column":42},"end":{"line":129,"column":50}},"loc":{"start":{"line":129,"column":60},"end":{"line":129,"column":82}},"line":129},"10":{"name":"(anonymous_10)","decl":{"start":{"line":132,"column":60},"end":{"line":132,"column":65}},"loc":{"start":{"line":132,"column":76},"end":{"line":132,"column":107}},"line":132},"11":{"name":"guardedCreate","decl":{"start":{"line":137,"column":17},"end":{"line":137,"column":31}},"loc":{"start":{"line":137,"column":69},"end":{"line":192,"column":null}},"line":137},"12":{"name":"checkBlueprintInputs","decl":{"start":{"line":215,"column":17},"end":{"line":215,"column":38}},"loc":{"start":{"line":215,"column":132},"end":{"line":229,"column":null}},"line":215},"13":{"name":"(anonymous_13)","decl":{"start":{"line":221,"column":7},"end":{"line":221,"column":15}},"loc":{"start":{"line":221,"column":27},"end":{"line":221,"column":66}},"line":221},"14":{"name":"(anonymous_14)","decl":{"start":{"line":222,"column":7},"end":{"line":222,"column":12}},"loc":{"start":{"line":222,"column":23},"end":{"line":222,"column":27}},"line":222},"15":{"name":"(anonymous_15)","decl":{"start":{"line":223,"column":7},"end":{"line":223,"column":15}},"loc":{"start":{"line":223,"column":24},"end":{"line":223,"column":41}},"line":223},"16":{"name":"(anonymous_16)","decl":{"start":{"line":225,"column":40},"end":{"line":225,"column":48}},"loc":{"start":{"line":225,"column":54},"end":{"line":225,"column":70}},"line":225},"17":{"name":"currentConfig","decl":{"start":{"line":231,"column":17},"end":{"line":231,"column":31}},"loc":{"start":{"line":231,"column":140},"end":{"line":253,"column":null}},"line":231},"18":{"name":"(anonymous_18)","decl":{"start":{"line":232,"column":42},"end":{"line":232,"column":48}},"loc":{"start":{"line":232,"column":54},"end":{"line":232,"column":78}},"line":232},"19":{"name":"guardedUpdate","decl":{"start":{"line":255,"column":17},"end":{"line":255,"column":31}},"loc":{"start":{"line":255,"column":69},"end":{"line":365,"column":null}},"line":255},"20":{"name":"(anonymous_20)","decl":{"start":{"line":268,"column":72},"end":{"line":268,"column":80}},"loc":{"start":{"line":268,"column":86},"end":{"line":268,"column":96}},"line":268},"21":{"name":"guardedDelete","decl":{"start":{"line":376,"column":17},"end":{"line":376,"column":31}},"loc":{"start":{"line":376,"column":188},"end":{"line":436,"column":null}},"line":376},"22":{"name":"(anonymous_22)","decl":{"start":{"line":453,"column":33},"end":{"line":453,"column":40}},"loc":{"start":{"line":453,"column":82},"end":{"line":456,"column":5}},"line":453},"23":{"name":"(anonymous_23)","decl":{"start":{"line":473,"column":29},"end":{"line":473,"column":36}},"loc":{"start":{"line":473,"column":78},"end":{"line":476,"column":5}},"line":473},"24":{"name":"(anonymous_24)","decl":{"start":{"line":498,"column":34},"end":{"line":498,"column":41}},"loc":{"start":{"line":498,"column":95},"end":{"line":604,"column":5}},"line":498},"25":{"name":"(anonymous_25)","decl":{"start":{"line":505,"column":27},"end":{"line":505,"column":33}},"loc":{"start":{"line":505,"column":39},"end":{"line":505,"column":61}},"line":505},"26":{"name":"(anonymous_26)","decl":{"start":{"line":519,"column":18},"end":{"line":519,"column":null}},"loc":{"start":{"line":521,"column":16},"end":{"line":522,"column":null}},"line":521},"27":{"name":"(anonymous_27)","decl":{"start":{"line":527,"column":51},"end":{"line":527,"column":56}},"loc":{"start":{"line":527,"column":65},"end":{"line":527,"column":109}},"line":527},"28":{"name":"(anonymous_28)","decl":{"start":{"line":596,"column":50},"end":{"line":596,"column":55}},"loc":{"start":{"line":596,"column":65},"end":{"line":596,"column":89}},"line":596},"29":{"name":"(anonymous_29)","decl":{"start":{"line":626,"column":37},"end":{"line":626,"column":44}},"loc":{"start":{"line":626,"column":114},"end":{"line":664,"column":5}},"line":626},"30":{"name":"(anonymous_30)","decl":{"start":{"line":637,"column":9},"end":{"line":637,"column":17}},"loc":{"start":{"line":637,"column":29},"end":{"line":637,"column":68}},"line":637},"31":{"name":"(anonymous_31)","decl":{"start":{"line":638,"column":9},"end":{"line":638,"column":14}},"loc":{"start":{"line":638,"column":25},"end":{"line":638,"column":29}},"line":638},"32":{"name":"(anonymous_32)","decl":{"start":{"line":639,"column":9},"end":{"line":639,"column":17}},"loc":{"start":{"line":639,"column":26},"end":{"line":639,"column":43}},"line":639},"33":{"name":"(anonymous_33)","decl":{"start":{"line":643,"column":42},"end":{"line":643,"column":50}},"loc":{"start":{"line":643,"column":56},"end":{"line":643,"column":72}},"line":643},"34":{"name":"(anonymous_34)","decl":{"start":{"line":702,"column":33},"end":{"line":702,"column":40}},"loc":{"start":{"line":702,"column":194},"end":{"line":713,"column":5}},"line":702},"35":{"name":"(anonymous_35)","decl":{"start":{"line":739,"column":29},"end":{"line":739,"column":36}},"loc":{"start":{"line":739,"column":154},"end":{"line":750,"column":5}},"line":739},"36":{"name":"(anonymous_36)","decl":{"start":{"line":776,"column":33},"end":{"line":776,"column":40}},"loc":{"start":{"line":776,"column":153},"end":{"line":796,"column":5}},"line":776},"37":{"name":"(anonymous_37)","decl":{"start":{"line":819,"column":29},"end":{"line":819,"column":36}},"loc":{"start":{"line":819,"column":128},"end":{"line":839,"column":5}},"line":819}},"branchMap":{"0":{"loc":{"start":{"line":26,"column":15},"end":{"line":26,"column":null}},"type":"cond-expr","locations":[{"start":{"line":26,"column":31},"end":{"line":26,"column":50}},{"start":{"line":26,"column":50},"end":{"line":26,"column":null}}],"line":26},"1":{"loc":{"start":{"line":32,"column":9},"end":{"line":32,"column":25}},"type":"binary-expr","locations":[{"start":{"line":32,"column":9},"end":{"line":32,"column":18}},{"start":{"line":32,"column":18},"end":{"line":32,"column":25}}],"line":32},"2":{"loc":{"start":{"line":33,"column":4},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":43,"column":null}},{"start":{"line":37,"column":11},"end":{"line":43,"column":null}}],"line":33},"3":{"loc":{"start":{"line":37,"column":11},"end":{"line":43,"column":null}},"type":"if","locations":[{"start":{"line":37,"column":11},"end":{"line":43,"column":null}},{"start":{"line":40,"column":11},"end":{"line":43,"column":null}}],"line":37},"4":{"loc":{"start":{"line":79,"column":31},"end":{"line":79,"column":null}},"type":"binary-expr","locations":[{"start":{"line":79,"column":31},"end":{"line":79,"column":45}},{"start":{"line":79,"column":45},"end":{"line":79,"column":null}}],"line":79},"5":{"loc":{"start":{"line":102,"column":4},"end":{"line":106,"column":null}},"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":106,"column":null}},{"start":{},"end":{}}],"line":102},"6":{"loc":{"start":{"line":107,"column":4},"end":{"line":116,"column":null}},"type":"if","locations":[{"start":{"line":107,"column":4},"end":{"line":116,"column":null}},{"start":{},"end":{}}],"line":107},"7":{"loc":{"start":{"line":108,"column":27},"end":{"line":108,"column":50}},"type":"binary-expr","locations":[{"start":{"line":108,"column":27},"end":{"line":108,"column":48}},{"start":{"line":108,"column":48},"end":{"line":108,"column":50}}],"line":108},"8":{"loc":{"start":{"line":109,"column":36},"end":{"line":109,"column":95}},"type":"binary-expr","locations":[{"start":{"line":109,"column":36},"end":{"line":109,"column":65}},{"start":{"line":109,"column":65},"end":{"line":109,"column":95}}],"line":109},"9":{"loc":{"start":{"line":110,"column":6},"end":{"line":115,"column":null}},"type":"if","locations":[{"start":{"line":110,"column":6},"end":{"line":115,"column":null}},{"start":{},"end":{}}],"line":110},"10":{"loc":{"start":{"line":121,"column":6},"end":{"line":127,"column":null}},"type":"cond-expr","locations":[{"start":{"line":122,"column":10},"end":{"line":126,"column":null}},{"start":{"line":127,"column":10},"end":{"line":127,"column":null}}],"line":121},"11":{"loc":{"start":{"line":124,"column":16},"end":{"line":124,"column":null}},"type":"cond-expr","locations":[{"start":{"line":124,"column":37},"end":{"line":124,"column":74}},{"start":{"line":124,"column":74},"end":{"line":124,"column":null}}],"line":124},"12":{"loc":{"start":{"line":129,"column":31},"end":{"line":129,"column":40}},"type":"binary-expr","locations":[{"start":{"line":129,"column":31},"end":{"line":129,"column":38}},{"start":{"line":129,"column":38},"end":{"line":129,"column":40}}],"line":129},"13":{"loc":{"start":{"line":129,"column":60},"end":{"line":129,"column":82}},"type":"binary-expr","locations":[{"start":{"line":129,"column":60},"end":{"line":129,"column":65}},{"start":{"line":129,"column":65},"end":{"line":129,"column":82}}],"line":129},"14":{"loc":{"start":{"line":130,"column":4},"end":{"line":134,"column":null}},"type":"if","locations":[{"start":{"line":130,"column":4},"end":{"line":134,"column":null}},{"start":{},"end":{}}],"line":130},"15":{"loc":{"start":{"line":132,"column":85},"end":{"line":132,"column":107}},"type":"binary-expr","locations":[{"start":{"line":132,"column":85},"end":{"line":132,"column":96}},{"start":{"line":132,"column":96},"end":{"line":132,"column":107}}],"line":132},"16":{"loc":{"start":{"line":142,"column":4},"end":{"line":145,"column":null}},"type":"if","locations":[{"start":{"line":142,"column":4},"end":{"line":145,"column":null}},{"start":{},"end":{}}],"line":142},"17":{"loc":{"start":{"line":147,"column":4},"end":{"line":185,"column":null}},"type":"if","locations":[{"start":{"line":147,"column":4},"end":{"line":185,"column":null}},{"start":{"line":174,"column":11},"end":{"line":185,"column":null}}],"line":147},"18":{"loc":{"start":{"line":150,"column":6},"end":{"line":150,"column":null}},"type":"if","locations":[{"start":{"line":150,"column":6},"end":{"line":150,"column":null}},{"start":{},"end":{}}],"line":150},"19":{"loc":{"start":{"line":153,"column":21},"end":{"line":155,"column":null}},"type":"cond-expr","locations":[{"start":{"line":154,"column":10},"end":{"line":154,"column":null}},{"start":{"line":155,"column":10},"end":{"line":155,"column":null}}],"line":153},"20":{"loc":{"start":{"line":156,"column":6},"end":{"line":159,"column":null}},"type":"if","locations":[{"start":{"line":156,"column":6},"end":{"line":159,"column":null}},{"start":{},"end":{}}],"line":156},"21":{"loc":{"start":{"line":160,"column":6},"end":{"line":172,"column":null}},"type":"if","locations":[{"start":{"line":160,"column":6},"end":{"line":172,"column":null}},{"start":{},"end":{}}],"line":160},"22":{"loc":{"start":{"line":176,"column":6},"end":{"line":184,"column":null}},"type":"if","locations":[{"start":{"line":176,"column":6},"end":{"line":184,"column":null}},{"start":{},"end":{}}],"line":176},"23":{"loc":{"start":{"line":180,"column":13},"end":{"line":182,"column":null}},"type":"cond-expr","locations":[{"start":{"line":181,"column":16},"end":{"line":181,"column":null}},{"start":{"line":182,"column":16},"end":{"line":182,"column":null}}],"line":180},"24":{"loc":{"start":{"line":216,"column":40},"end":{"line":216,"column":null}},"type":"binary-expr","locations":[{"start":{"line":216,"column":40},"end":{"line":216,"column":122}},{"start":{"line":216,"column":122},"end":{"line":216,"column":null}}],"line":216},"25":{"loc":{"start":{"line":218,"column":4},"end":{"line":218,"column":null}},"type":"if","locations":[{"start":{"line":218,"column":4},"end":{"line":218,"column":null}},{"start":{},"end":{}}],"line":218},"26":{"loc":{"start":{"line":219,"column":42},"end":{"line":219,"column":null}},"type":"binary-expr","locations":[{"start":{"line":219,"column":42},"end":{"line":219,"column":65}},{"start":{"line":219,"column":65},"end":{"line":219,"column":null}}],"line":219},"27":{"loc":{"start":{"line":221,"column":44},"end":{"line":221,"column":66}},"type":"binary-expr","locations":[{"start":{"line":221,"column":44},"end":{"line":221,"column":51}},{"start":{"line":221,"column":51},"end":{"line":221,"column":66}}],"line":221},"28":{"loc":{"start":{"line":224,"column":4},"end":{"line":224,"column":null}},"type":"if","locations":[{"start":{"line":224,"column":4},"end":{"line":224,"column":null}},{"start":{},"end":{}}],"line":224},"29":{"loc":{"start":{"line":226,"column":4},"end":{"line":228,"column":null}},"type":"if","locations":[{"start":{"line":226,"column":4},"end":{"line":228,"column":null}},{"start":{},"end":{}}],"line":226},"30":{"loc":{"start":{"line":233,"column":4},"end":{"line":233,"column":null}},"type":"if","locations":[{"start":{"line":233,"column":4},"end":{"line":233,"column":null}},{"start":{},"end":{}}],"line":233},"31":{"loc":{"start":{"line":235,"column":4},"end":{"line":243,"column":null}},"type":"if","locations":[{"start":{"line":235,"column":4},"end":{"line":243,"column":null}},{"start":{"line":241,"column":11},"end":{"line":243,"column":null}}],"line":235},"32":{"loc":{"start":{"line":237,"column":6},"end":{"line":239,"column":null}},"type":"if","locations":[{"start":{"line":237,"column":6},"end":{"line":239,"column":null}},{"start":{},"end":{}}],"line":237},"33":{"loc":{"start":{"line":237,"column":10},"end":{"line":237,"column":47}},"type":"binary-expr","locations":[{"start":{"line":237,"column":10},"end":{"line":237,"column":39}},{"start":{"line":237,"column":39},"end":{"line":237,"column":47}}],"line":237},"34":{"loc":{"start":{"line":248,"column":6},"end":{"line":250,"column":null}},"type":"if","locations":[{"start":{"line":248,"column":6},"end":{"line":250,"column":null}},{"start":{},"end":{}}],"line":248},"35":{"loc":{"start":{"line":248,"column":17},"end":{"line":248,"column":57}},"type":"cond-expr","locations":[{"start":{"line":248,"column":40},"end":{"line":248,"column":54}},{"start":{"line":248,"column":54},"end":{"line":248,"column":57}}],"line":248},"36":{"loc":{"start":{"line":257,"column":52},"end":{"line":257,"column":null}},"type":"if","locations":[{"start":{"line":257,"column":52},"end":{"line":257,"column":null}},{"start":{},"end":{}}],"line":257},"37":{"loc":{"start":{"line":258,"column":4},"end":{"line":262,"column":null}},"type":"if","locations":[{"start":{"line":258,"column":4},"end":{"line":262,"column":null}},{"start":{},"end":{}}],"line":258},"38":{"loc":{"start":{"line":258,"column":8},"end":{"line":258,"column":65}},"type":"binary-expr","locations":[{"start":{"line":258,"column":8},"end":{"line":258,"column":43}},{"start":{"line":258,"column":43},"end":{"line":258,"column":65}}],"line":258},"39":{"loc":{"start":{"line":267,"column":24},"end":{"line":267,"column":null}},"type":"binary-expr","locations":[{"start":{"line":267,"column":24},"end":{"line":267,"column":57}},{"start":{"line":267,"column":57},"end":{"line":267,"column":null}}],"line":267},"40":{"loc":{"start":{"line":269,"column":4},"end":{"line":273,"column":null}},"type":"if","locations":[{"start":{"line":269,"column":4},"end":{"line":273,"column":null}},{"start":{},"end":{}}],"line":269},"41":{"loc":{"start":{"line":269,"column":8},"end":{"line":269,"column":45}},"type":"binary-expr","locations":[{"start":{"line":269,"column":8},"end":{"line":269,"column":23}},{"start":{"line":269,"column":23},"end":{"line":269,"column":45}}],"line":269},"42":{"loc":{"start":{"line":274,"column":4},"end":{"line":276,"column":null}},"type":"if","locations":[{"start":{"line":274,"column":4},"end":{"line":276,"column":null}},{"start":{},"end":{}}],"line":274},"43":{"loc":{"start":{"line":274,"column":8},"end":{"line":274,"column":45}},"type":"binary-expr","locations":[{"start":{"line":274,"column":8},"end":{"line":274,"column":24}},{"start":{"line":274,"column":24},"end":{"line":274,"column":45}}],"line":274},"44":{"loc":{"start":{"line":282,"column":48},"end":{"line":282,"column":null}},"type":"if","locations":[{"start":{"line":282,"column":48},"end":{"line":282,"column":null}},{"start":{},"end":{}}],"line":282},"45":{"loc":{"start":{"line":294,"column":6},"end":{"line":294,"column":null}},"type":"if","locations":[{"start":{"line":294,"column":6},"end":{"line":294,"column":null}},{"start":{},"end":{}}],"line":294},"46":{"loc":{"start":{"line":296,"column":4},"end":{"line":299,"column":null}},"type":"if","locations":[{"start":{"line":296,"column":4},"end":{"line":299,"column":null}},{"start":{},"end":{}}],"line":296},"47":{"loc":{"start":{"line":296,"column":8},"end":{"line":296,"column":44}},"type":"binary-expr","locations":[{"start":{"line":296,"column":8},"end":{"line":296,"column":23}},{"start":{"line":296,"column":23},"end":{"line":296,"column":44}}],"line":296},"48":{"loc":{"start":{"line":313,"column":4},"end":{"line":316,"column":null}},"type":"if","locations":[{"start":{"line":313,"column":4},"end":{"line":316,"column":null}},{"start":{},"end":{}}],"line":313},"49":{"loc":{"start":{"line":318,"column":4},"end":{"line":356,"column":null}},"type":"if","locations":[{"start":{"line":318,"column":4},"end":{"line":356,"column":null}},{"start":{"line":345,"column":11},"end":{"line":356,"column":null}}],"line":318},"50":{"loc":{"start":{"line":322,"column":6},"end":{"line":322,"column":null}},"type":"if","locations":[{"start":{"line":322,"column":6},"end":{"line":322,"column":null}},{"start":{},"end":{}}],"line":322},"51":{"loc":{"start":{"line":323,"column":21},"end":{"line":325,"column":null}},"type":"cond-expr","locations":[{"start":{"line":324,"column":10},"end":{"line":324,"column":null}},{"start":{"line":325,"column":10},"end":{"line":325,"column":null}}],"line":323},"52":{"loc":{"start":{"line":326,"column":6},"end":{"line":329,"column":null}},"type":"if","locations":[{"start":{"line":326,"column":6},"end":{"line":329,"column":null}},{"start":{},"end":{}}],"line":326},"53":{"loc":{"start":{"line":330,"column":6},"end":{"line":343,"column":null}},"type":"if","locations":[{"start":{"line":330,"column":6},"end":{"line":343,"column":null}},{"start":{},"end":{}}],"line":330},"54":{"loc":{"start":{"line":347,"column":6},"end":{"line":355,"column":null}},"type":"if","locations":[{"start":{"line":347,"column":6},"end":{"line":355,"column":null}},{"start":{},"end":{}}],"line":347},"55":{"loc":{"start":{"line":351,"column":13},"end":{"line":353,"column":null}},"type":"cond-expr","locations":[{"start":{"line":352,"column":16},"end":{"line":352,"column":null}},{"start":{"line":353,"column":16},"end":{"line":353,"column":null}}],"line":351},"56":{"loc":{"start":{"line":378,"column":4},"end":{"line":381,"column":null}},"type":"if","locations":[{"start":{"line":378,"column":4},"end":{"line":381,"column":null}},{"start":{},"end":{}}],"line":378},"57":{"loc":{"start":{"line":380,"column":22},"end":{"line":380,"column":73}},"type":"binary-expr","locations":[{"start":{"line":380,"column":22},"end":{"line":380,"column":41}},{"start":{"line":380,"column":41},"end":{"line":380,"column":73}}],"line":380},"58":{"loc":{"start":{"line":391,"column":4},"end":{"line":394,"column":null}},"type":"if","locations":[{"start":{"line":391,"column":4},"end":{"line":394,"column":null}},{"start":{},"end":{}}],"line":391},"59":{"loc":{"start":{"line":395,"column":4},"end":{"line":428,"column":null}},"type":"if","locations":[{"start":{"line":395,"column":4},"end":{"line":428,"column":null}},{"start":{"line":417,"column":11},"end":{"line":428,"column":null}}],"line":395},"60":{"loc":{"start":{"line":396,"column":21},"end":{"line":398,"column":null}},"type":"cond-expr","locations":[{"start":{"line":397,"column":10},"end":{"line":397,"column":null}},{"start":{"line":398,"column":10},"end":{"line":398,"column":null}}],"line":396},"61":{"loc":{"start":{"line":399,"column":6},"end":{"line":402,"column":null}},"type":"if","locations":[{"start":{"line":399,"column":6},"end":{"line":402,"column":null}},{"start":{},"end":{}}],"line":399},"62":{"loc":{"start":{"line":403,"column":6},"end":{"line":415,"column":null}},"type":"if","locations":[{"start":{"line":403,"column":6},"end":{"line":415,"column":null}},{"start":{},"end":{}}],"line":403},"63":{"loc":{"start":{"line":419,"column":6},"end":{"line":427,"column":null}},"type":"if","locations":[{"start":{"line":419,"column":6},"end":{"line":427,"column":null}},{"start":{},"end":{}}],"line":419},"64":{"loc":{"start":{"line":423,"column":13},"end":{"line":425,"column":null}},"type":"cond-expr","locations":[{"start":{"line":424,"column":16},"end":{"line":424,"column":null}},{"start":{"line":425,"column":16},"end":{"line":425,"column":null}}],"line":423},"65":{"loc":{"start":{"line":454,"column":6},"end":{"line":454,"column":null}},"type":"if","locations":[{"start":{"line":454,"column":6},"end":{"line":454,"column":null}},{"start":{},"end":{}}],"line":454},"66":{"loc":{"start":{"line":474,"column":6},"end":{"line":474,"column":null}},"type":"if","locations":[{"start":{"line":474,"column":6},"end":{"line":474,"column":null}},{"start":{},"end":{}}],"line":474},"67":{"loc":{"start":{"line":499,"column":22},"end":{"line":499,"column":null}},"type":"cond-expr","locations":[{"start":{"line":499,"column":69},"end":{"line":499,"column":76}},{"start":{"line":499,"column":76},"end":{"line":499,"column":null}}],"line":499},"68":{"loc":{"start":{"line":499,"column":22},"end":{"line":499,"column":69}},"type":"binary-expr","locations":[{"start":{"line":499,"column":22},"end":{"line":499,"column":50}},{"start":{"line":499,"column":50},"end":{"line":499,"column":69}}],"line":499},"69":{"loc":{"start":{"line":504,"column":30},"end":{"line":504,"column":null}},"type":"binary-expr","locations":[{"start":{"line":504,"column":30},"end":{"line":504,"column":94}},{"start":{"line":504,"column":94},"end":{"line":504,"column":null}}],"line":504},"70":{"loc":{"start":{"line":506,"column":8},"end":{"line":508,"column":null}},"type":"if","locations":[{"start":{"line":506,"column":8},"end":{"line":508,"column":null}},{"start":{},"end":{}}],"line":506},"71":{"loc":{"start":{"line":506,"column":12},"end":{"line":506,"column":47}},"type":"binary-expr","locations":[{"start":{"line":506,"column":12},"end":{"line":506,"column":21}},{"start":{"line":506,"column":21},"end":{"line":506,"column":47}}],"line":506},"72":{"loc":{"start":{"line":510,"column":8},"end":{"line":510,"column":null}},"type":"if","locations":[{"start":{"line":510,"column":8},"end":{"line":510,"column":null}},{"start":{},"end":{}}],"line":510},"73":{"loc":{"start":{"line":510,"column":12},"end":{"line":510,"column":70}},"type":"binary-expr","locations":[{"start":{"line":510,"column":12},"end":{"line":510,"column":34}},{"start":{"line":510,"column":34},"end":{"line":510,"column":70}}],"line":510},"74":{"loc":{"start":{"line":515,"column":27},"end":{"line":515,"column":null}},"type":"binary-expr","locations":[{"start":{"line":515,"column":27},"end":{"line":515,"column":44}},{"start":{"line":515,"column":44},"end":{"line":515,"column":null}}],"line":515},"75":{"loc":{"start":{"line":517,"column":8},"end":{"line":523,"column":null}},"type":"cond-expr","locations":[{"start":{"line":518,"column":12},"end":{"line":518,"column":null}},{"start":{"line":519,"column":12},"end":{"line":523,"column":null}}],"line":517},"76":{"loc":{"start":{"line":521,"column":16},"end":{"line":522,"column":null}},"type":"binary-expr","locations":[{"start":{"line":521,"column":16},"end":{"line":521,"column":null}},{"start":{"line":522,"column":16},"end":{"line":522,"column":null}}],"line":521},"77":{"loc":{"start":{"line":521,"column":23},"end":{"line":521,"column":36}},"type":"binary-expr","locations":[{"start":{"line":521,"column":23},"end":{"line":521,"column":34}},{"start":{"line":521,"column":34},"end":{"line":521,"column":36}}],"line":521},"78":{"loc":{"start":{"line":522,"column":23},"end":{"line":522,"column":37}},"type":"binary-expr","locations":[{"start":{"line":522,"column":23},"end":{"line":522,"column":35}},{"start":{"line":522,"column":35},"end":{"line":522,"column":37}}],"line":522},"79":{"loc":{"start":{"line":525,"column":6},"end":{"line":529,"column":null}},"type":"if","locations":[{"start":{"line":525,"column":6},"end":{"line":529,"column":null}},{"start":{},"end":{}}],"line":525},"80":{"loc":{"start":{"line":527,"column":45},"end":{"line":527,"column":null}},"type":"binary-expr","locations":[{"start":{"line":527,"column":45},"end":{"line":527,"column":125}},{"start":{"line":527,"column":125},"end":{"line":527,"column":null}}],"line":527},"81":{"loc":{"start":{"line":527,"column":74},"end":{"line":527,"column":109}},"type":"binary-expr","locations":[{"start":{"line":527,"column":74},"end":{"line":527,"column":86}},{"start":{"line":527,"column":86},"end":{"line":527,"column":97}},{"start":{"line":527,"column":97},"end":{"line":527,"column":109}}],"line":527},"82":{"loc":{"start":{"line":535,"column":6},"end":{"line":545,"column":null}},"type":"if","locations":[{"start":{"line":535,"column":6},"end":{"line":545,"column":null}},{"start":{"line":543,"column":13},"end":{"line":545,"column":null}}],"line":535},"83":{"loc":{"start":{"line":535,"column":10},"end":{"line":535,"column":74}},"type":"binary-expr","locations":[{"start":{"line":535,"column":10},"end":{"line":535,"column":41}},{"start":{"line":535,"column":41},"end":{"line":535,"column":74}}],"line":535},"84":{"loc":{"start":{"line":536,"column":27},"end":{"line":536,"column":null}},"type":"cond-expr","locations":[{"start":{"line":536,"column":61},"end":{"line":536,"column":80}},{"start":{"line":536,"column":80},"end":{"line":536,"column":null}}],"line":536},"85":{"loc":{"start":{"line":538,"column":8},"end":{"line":541,"column":null}},"type":"if","locations":[{"start":{"line":538,"column":8},"end":{"line":541,"column":null}},{"start":{},"end":{}}],"line":538},"86":{"loc":{"start":{"line":538,"column":12},"end":{"line":538,"column":49}},"type":"binary-expr","locations":[{"start":{"line":538,"column":12},"end":{"line":538,"column":21}},{"start":{"line":538,"column":21},"end":{"line":538,"column":49}}],"line":538},"87":{"loc":{"start":{"line":544,"column":29},"end":{"line":544,"column":81}},"type":"cond-expr","locations":[{"start":{"line":544,"column":60},"end":{"line":544,"column":76}},{"start":{"line":544,"column":76},"end":{"line":544,"column":81}}],"line":544},"88":{"loc":{"start":{"line":556,"column":48},"end":{"line":556,"column":88}},"type":"cond-expr","locations":[{"start":{"line":556,"column":63},"end":{"line":556,"column":85}},{"start":{"line":556,"column":85},"end":{"line":556,"column":88}}],"line":556},"89":{"loc":{"start":{"line":558,"column":6},"end":{"line":561,"column":null}},"type":"if","locations":[{"start":{"line":558,"column":6},"end":{"line":561,"column":null}},{"start":{},"end":{}}],"line":558},"90":{"loc":{"start":{"line":562,"column":6},"end":{"line":594,"column":null}},"type":"if","locations":[{"start":{"line":562,"column":6},"end":{"line":594,"column":null}},{"start":{"line":583,"column":13},"end":{"line":594,"column":null}}],"line":562},"91":{"loc":{"start":{"line":563,"column":23},"end":{"line":565,"column":null}},"type":"cond-expr","locations":[{"start":{"line":564,"column":12},"end":{"line":564,"column":null}},{"start":{"line":565,"column":12},"end":{"line":565,"column":null}}],"line":563},"92":{"loc":{"start":{"line":566,"column":8},"end":{"line":569,"column":null}},"type":"if","locations":[{"start":{"line":566,"column":8},"end":{"line":569,"column":null}},{"start":{},"end":{}}],"line":566},"93":{"loc":{"start":{"line":570,"column":8},"end":{"line":581,"column":null}},"type":"if","locations":[{"start":{"line":570,"column":8},"end":{"line":581,"column":null}},{"start":{},"end":{}}],"line":570},"94":{"loc":{"start":{"line":585,"column":8},"end":{"line":593,"column":null}},"type":"if","locations":[{"start":{"line":585,"column":8},"end":{"line":593,"column":null}},{"start":{},"end":{}}],"line":585},"95":{"loc":{"start":{"line":589,"column":15},"end":{"line":591,"column":null}},"type":"cond-expr","locations":[{"start":{"line":590,"column":18},"end":{"line":590,"column":null}},{"start":{"line":591,"column":18},"end":{"line":591,"column":null}}],"line":589},"96":{"loc":{"start":{"line":596,"column":65},"end":{"line":596,"column":89}},"type":"cond-expr","locations":[{"start":{"line":596,"column":77},"end":{"line":596,"column":87}},{"start":{"line":596,"column":87},"end":{"line":596,"column":89}}],"line":596},"97":{"loc":{"start":{"line":627,"column":19},"end":{"line":627,"column":null}},"type":"binary-expr","locations":[{"start":{"line":627,"column":19},"end":{"line":627,"column":29}},{"start":{"line":627,"column":29},"end":{"line":627,"column":null}}],"line":627},"98":{"loc":{"start":{"line":630,"column":41},"end":{"line":630,"column":null}},"type":"binary-expr","locations":[{"start":{"line":630,"column":41},"end":{"line":630,"column":99}},{"start":{"line":630,"column":99},"end":{"line":630,"column":null}}],"line":630},"99":{"loc":{"start":{"line":632,"column":6},"end":{"line":634,"column":null}},"type":"if","locations":[{"start":{"line":632,"column":6},"end":{"line":634,"column":null}},{"start":{},"end":{}}],"line":632},"100":{"loc":{"start":{"line":635,"column":44},"end":{"line":635,"column":null}},"type":"binary-expr","locations":[{"start":{"line":635,"column":44},"end":{"line":635,"column":67}},{"start":{"line":635,"column":67},"end":{"line":635,"column":null}}],"line":635},"101":{"loc":{"start":{"line":637,"column":46},"end":{"line":637,"column":68}},"type":"binary-expr","locations":[{"start":{"line":637,"column":46},"end":{"line":637,"column":53}},{"start":{"line":637,"column":53},"end":{"line":637,"column":68}}],"line":637},"102":{"loc":{"start":{"line":640,"column":6},"end":{"line":642,"column":null}},"type":"if","locations":[{"start":{"line":640,"column":6},"end":{"line":642,"column":null}},{"start":{},"end":{}}],"line":640},"103":{"loc":{"start":{"line":644,"column":6},"end":{"line":646,"column":null}},"type":"if","locations":[{"start":{"line":644,"column":6},"end":{"line":646,"column":null}},{"start":{},"end":{}}],"line":644},"104":{"loc":{"start":{"line":649,"column":6},"end":{"line":649,"column":null}},"type":"if","locations":[{"start":{"line":649,"column":6},"end":{"line":649,"column":null}},{"start":{},"end":{}}],"line":649},"105":{"loc":{"start":{"line":658,"column":14},"end":{"line":658,"column":null}},"type":"cond-expr","locations":[{"start":{"line":658,"column":38},"end":{"line":658,"column":82}},{"start":{"line":658,"column":82},"end":{"line":658,"column":null}}],"line":658},"106":{"loc":{"start":{"line":703,"column":6},"end":{"line":703,"column":null}},"type":"if","locations":[{"start":{"line":703,"column":6},"end":{"line":703,"column":null}},{"start":{},"end":{}}],"line":703},"107":{"loc":{"start":{"line":740,"column":6},"end":{"line":740,"column":null}},"type":"if","locations":[{"start":{"line":740,"column":6},"end":{"line":740,"column":null}},{"start":{},"end":{}}],"line":740},"108":{"loc":{"start":{"line":779,"column":12},"end":{"line":779,"column":null}},"type":"cond-expr","locations":[{"start":{"line":779,"column":26},"end":{"line":779,"column":44}},{"start":{"line":779,"column":44},"end":{"line":779,"column":null}}],"line":779},"109":{"loc":{"start":{"line":780,"column":14},"end":{"line":780,"column":null}},"type":"binary-expr","locations":[{"start":{"line":780,"column":14},"end":{"line":780,"column":22}},{"start":{"line":780,"column":22},"end":{"line":780,"column":null}}],"line":780},"110":{"loc":{"start":{"line":781,"column":12},"end":{"line":781,"column":null}},"type":"cond-expr","locations":[{"start":{"line":781,"column":24},"end":{"line":781,"column":40}},{"start":{"line":781,"column":40},"end":{"line":781,"column":null}}],"line":781},"111":{"loc":{"start":{"line":782,"column":12},"end":{"line":782,"column":null}},"type":"cond-expr","locations":[{"start":{"line":782,"column":27},"end":{"line":782,"column":46}},{"start":{"line":782,"column":46},"end":{"line":782,"column":null}}],"line":782},"112":{"loc":{"start":{"line":784,"column":12},"end":{"line":784,"column":null}},"type":"cond-expr","locations":[{"start":{"line":784,"column":50},"end":{"line":784,"column":67}},{"start":{"line":784,"column":67},"end":{"line":784,"column":null}}],"line":784},"113":{"loc":{"start":{"line":784,"column":12},"end":{"line":784,"column":50}},"type":"binary-expr","locations":[{"start":{"line":784,"column":12},"end":{"line":784,"column":26}},{"start":{"line":784,"column":26},"end":{"line":784,"column":50}}],"line":784},"114":{"loc":{"start":{"line":821,"column":6},"end":{"line":821,"column":null}},"type":"if","locations":[{"start":{"line":821,"column":6},"end":{"line":821,"column":null}},{"start":{},"end":{}}],"line":821},"115":{"loc":{"start":{"line":824,"column":12},"end":{"line":824,"column":null}},"type":"cond-expr","locations":[{"start":{"line":824,"column":26},"end":{"line":824,"column":44}},{"start":{"line":824,"column":44},"end":{"line":824,"column":null}}],"line":824},"116":{"loc":{"start":{"line":825,"column":14},"end":{"line":825,"column":null}},"type":"binary-expr","locations":[{"start":{"line":825,"column":14},"end":{"line":825,"column":22}},{"start":{"line":825,"column":22},"end":{"line":825,"column":null}}],"line":825},"117":{"loc":{"start":{"line":826,"column":12},"end":{"line":826,"column":null}},"type":"cond-expr","locations":[{"start":{"line":826,"column":24},"end":{"line":826,"column":40}},{"start":{"line":826,"column":40},"end":{"line":826,"column":null}}],"line":826},"118":{"loc":{"start":{"line":827,"column":12},"end":{"line":827,"column":null}},"type":"cond-expr","locations":[{"start":{"line":827,"column":27},"end":{"line":827,"column":46}},{"start":{"line":827,"column":46},"end":{"line":827,"column":null}}],"line":827}},"s":{"0":25,"1":25,"2":25,"3":25,"4":25,"5":249,"6":25,"7":25,"8":224,"9":224,"10":224,"11":224,"12":2225,"13":25,"14":25,"15":25,"16":25,"17":279,"18":183,"19":183,"20":183,"21":96,"22":41,"23":41,"24":55,"25":55,"26":25,"27":0,"28":25,"29":0,"30":25,"31":2,"32":16,"33":64,"34":53,"35":16,"36":16,"37":3,"38":2,"39":14,"40":11,"41":11,"42":1,"43":11,"44":1,"45":17,"46":17,"47":17,"48":34,"49":17,"50":1,"51":1,"52":16,"53":16,"54":16,"55":13,"56":1,"57":1,"58":12,"59":8,"60":7,"61":7,"62":8,"63":0,"64":0,"65":7,"66":6,"67":6,"68":6,"69":1,"70":4,"71":4,"72":1,"73":1,"74":4,"75":4,"76":4,"77":4,"78":4,"79":4,"80":0,"81":4,"82":4,"83":12,"84":8,"85":8,"86":4,"87":1,"88":3,"89":9,"90":3,"91":1,"92":32,"93":36,"94":32,"95":0,"96":32,"97":29,"98":29,"99":2,"100":27,"101":3,"102":30,"103":30,"104":30,"105":0,"106":0,"107":0,"108":25,"109":25,"110":244,"111":25,"112":25,"113":1,"114":24,"115":23,"116":23,"117":25,"118":92,"119":25,"120":1,"121":22,"122":1,"123":21,"124":21,"125":23,"126":2,"127":21,"128":63,"129":10,"130":21,"131":4,"132":2,"133":19,"134":19,"135":19,"136":19,"137":19,"138":19,"139":1,"140":1,"141":18,"142":12,"143":10,"144":12,"145":12,"146":0,"147":0,"148":12,"149":6,"150":6,"151":6,"152":6,"153":6,"154":6,"155":1,"156":1,"157":11,"158":11,"159":11,"160":9,"161":9,"162":1,"163":1,"164":8,"165":7,"166":7,"167":7,"168":7,"169":1,"170":1,"171":6,"172":4,"173":4,"174":1,"175":1,"176":3,"177":2,"178":2,"179":2,"180":1,"181":2,"182":2,"183":1,"184":1,"185":2,"186":2,"187":2,"188":64,"189":9,"190":1,"191":8,"192":64,"193":1,"194":0,"195":1,"196":64,"197":8,"198":8,"199":8,"200":8,"201":2,"202":8,"203":1,"204":1,"205":1,"206":7,"207":7,"208":8,"209":6,"210":8,"211":8,"212":1,"213":2,"214":6,"215":6,"216":6,"217":2,"218":2,"219":2,"220":0,"221":0,"222":2,"223":4,"224":6,"225":6,"226":6,"227":6,"228":6,"229":8,"230":0,"231":0,"232":6,"233":3,"234":3,"235":0,"236":0,"237":3,"238":3,"239":3,"240":3,"241":0,"242":3,"243":3,"244":1,"245":1,"246":2,"247":4,"248":2,"249":2,"250":2,"251":64,"252":6,"253":6,"254":6,"255":6,"256":1,"257":5,"258":6,"259":15,"260":10,"261":10,"262":6,"263":1,"264":4,"265":9,"266":4,"267":1,"268":3,"269":3,"270":0,"271":3,"272":3,"273":64,"274":64,"275":64,"276":64,"277":23,"278":0,"279":23,"280":64,"281":2,"282":0,"283":2,"284":64,"285":9,"286":9,"287":64,"288":4,"289":4,"290":0,"291":4,"292":4},"f":{"0":25,"1":249,"2":16,"3":64,"4":53,"5":16,"6":3,"7":1,"8":17,"9":34,"10":1,"11":16,"12":4,"13":12,"14":8,"15":8,"16":9,"17":32,"18":36,"19":25,"20":92,"21":9,"22":9,"23":1,"24":8,"25":2,"26":6,"27":2,"28":4,"29":6,"30":15,"31":10,"32":10,"33":9,"34":23,"35":2,"36":9,"37":4},"b":{"0":[185,2040],"1":[25,279],"2":[183,96],"3":[41,55],"4":[53,0],"5":[2,14],"6":[11,3],"7":[11,0],"8":[1,1],"9":[1,10],"10":[14,3],"11":[1,13],"12":[17,0],"13":[34,34],"14":[1,16],"15":[1,0],"16":[1,12],"17":[8,4],"18":[7,1],"19":[1,6],"20":[0,8],"21":[6,1],"22":[1,3],"23":[1,0],"24":[4,0],"25":[0,4],"26":[4,0],"27":[12,0],"28":[1,3],"29":[1,2],"30":[0,32],"31":[29,3],"32":[2,27],"33":[29,27],"34":[0,0],"35":[0,0],"36":[25,219],"37":[1,24],"38":[25,6],"39":[23,7],"40":[1,24],"41":[25,7],"42":[1,21],"43":[22,16],"44":[2,21],"45":[10,53],"46":[4,17],"47":[21,6],"48":[1,18],"49":[12,6],"50":[10,2],"51":[6,6],"52":[0,12],"53":[6,6],"54":[1,5],"55":[1,0],"56":[1,8],"57":[1,0],"58":[1,6],"59":[4,2],"60":[2,2],"61":[1,3],"62":[2,1],"63":[1,1],"64":[1,0],"65":[1,8],"66":[0,1],"67":[7,1],"68":[8,1],"69":[8,0],"70":[1,7],"71":[8,1],"72":[1,0],"73":[1,1],"74":[7,0],"75":[4,3],"76":[6,6],"77":[6,3],"78":[6,0],"79":[1,7],"80":[1,0],"81":[2,0,0],"82":[2,4],"83":[6,4],"84":[2,0],"85":[0,2],"86":[2,2],"87":[4,0],"88":[6,0],"89":[0,8],"90":[3,3],"91":[0,3],"92":[0,3],"93":[3,0],"94":[1,2],"95":[1,0],"96":[2,2],"97":[6,6],"98":[6,0],"99":[1,5],"100":[5,0],"101":[15,0],"102":[1,5],"103":[1,3],"104":[0,3],"105":[3,0],"106":[0,23],"107":[0,2],"108":[0,9],"109":[9,9],"110":[1,8],"111":[1,8],"112":[0,9],"113":[9,0],"114":[0,4],"115":[0,4],"116":[4,4],"117":[0,4],"118":[0,4]},"meta":{"lastBranch":119,"lastFunction":38,"lastStatement":293,"seen":{"f:16:16:16:28":0,"s:17:12:17:Infinity":0,"s:18:12:18:Infinity":1,"s:19:12:19:Infinity":2,"s:20:12:20:Infinity":3,"s:21:25:21:Infinity":4,"f:21:52:21:61":1,"s:21:61:21:93":5,"s:22:2:28:Infinity":6,"s:22:15:22:22":7,"s:23:16:23:Infinity":8,"s:24:17:24:Infinity":9,"s:25:4:27:Infinity":10,"s:25:17:25:24":11,"s:26:6:26:Infinity":12,"b:26:31:26:50:26:50:26:Infinity":0,"s:29:24:29:Infinity":13,"s:30:10:30:Infinity":14,"s:31:10:31:Infinity":15,"s:32:2:44:Infinity":16,"b:32:9:32:18:32:18:32:25":1,"b:33:4:43:Infinity:37:11:43:Infinity":2,"s:33:4:43:Infinity":17,"s:34:6:34:Infinity":18,"s:35:6:35:Infinity":19,"s:36:6:36:Infinity":20,"b:37:11:43:Infinity:40:11:43:Infinity":3,"s:37:11:43:Infinity":21,"s:38:6:38:Infinity":22,"s:39:6:39:Infinity":23,"s:41:6:41:Infinity":24,"s:42:6:42:Infinity":25,"s:45:2:45:Infinity":26,"s:45:16:45:Infinity":27,"s:46:2:46:Infinity":28,"s:46:16:46:Infinity":29,"s:47:2:47:Infinity":30,"s:64:20:64:Infinity":31,"f:67:9:67:17":2,"s:68:2:73:Infinity":32,"f:76:16:76:41":3,"s:79:8:79:Infinity":33,"f:79:8:79:31":4,"s:79:31:79:Infinity":34,"b:79:31:79:45:79:45:79:Infinity":4,"f:100:17:100:34":5,"s:101:16:101:Infinity":35,"b:102:4:106:Infinity:undefined:undefined:undefined:undefined":5,"s:102:4:106:Infinity":36,"f:102:12:102:18":6,"s:102:24:102:52":37,"s:103:6:105:Infinity":38,"b:107:4:116:Infinity:undefined:undefined:undefined:undefined":6,"s:107:4:116:Infinity":39,"s:108:20:108:Infinity":40,"b:108:27:108:48:108:48:108:50":7,"s:109:20:109:Infinity":41,"f:109:24:109:30":7,"s:109:36:109:95":42,"b:109:36:109:65:109:65:109:95":8,"b:110:6:115:Infinity:undefined:undefined:undefined:undefined":9,"s:110:6:115:Infinity":43,"s:111:8:114:Infinity":44,"f:119:17:119:32":8,"s:121:6:127:Infinity":45,"b:122:10:126:Infinity:127:10:127:Infinity":10,"b:124:37:124:74:124:74:124:Infinity":11,"s:128:68:128:Infinity":46,"s:129:16:129:Infinity":47,"b:129:31:129:38:129:38:129:40":12,"f:129:42:129:50":9,"s:129:60:129:82":48,"b:129:60:129:65:129:65:129:82":13,"b:130:4:134:Infinity:undefined:undefined:undefined:undefined":14,"s:130:4:134:Infinity":49,"s:131:6:133:Infinity":50,"f:132:60:132:65":10,"s:132:76:132:107":51,"b:132:85:132:96:132:96:132:107":15,"f:137:17:137:31":11,"s:138:17:138:Infinity":52,"s:139:17:139:Infinity":53,"s:140:4:140:Infinity":54,"b:142:4:145:Infinity:undefined:undefined:undefined:undefined":16,"s:142:4:145:Infinity":55,"s:143:6:143:Infinity":56,"s:144:6:144:Infinity":57,"b:147:4:185:Infinity:174:11:185:Infinity":17,"s:147:4:185:Infinity":58,"b:150:6:150:Infinity:undefined:undefined:undefined:undefined":18,"s:150:6:150:Infinity":59,"s:150:33:150:Infinity":60,"s:153:21:155:Infinity":61,"b:154:10:154:Infinity:155:10:155:Infinity":19,"b:156:6:159:Infinity:undefined:undefined:undefined:undefined":20,"s:156:6:159:Infinity":62,"s:157:8:157:Infinity":63,"s:158:8:158:Infinity":64,"b:160:6:172:Infinity:undefined:undefined:undefined:undefined":21,"s:160:6:172:Infinity":65,"s:161:30:161:Infinity":66,"s:162:8:162:Infinity":67,"s:163:8:171:Infinity":68,"s:173:6:173:Infinity":69,"s:175:22:175:Infinity":70,"b:176:6:184:Infinity:undefined:undefined:undefined:undefined":22,"s:176:6:184:Infinity":71,"s:177:8:177:Infinity":72,"s:178:8:183:Infinity":73,"b:181:16:181:Infinity:182:16:182:Infinity":23,"s:186:4:186:Infinity":74,"s:187:4:187:Infinity":75,"s:188:4:191:Infinity":76,"f:215:17:215:38":12,"s:216:40:216:Infinity":77,"b:216:40:216:122:216:122:216:Infinity":24,"s:217:15:217:Infinity":78,"b:218:4:218:Infinity:undefined:undefined:undefined:undefined":25,"s:218:4:218:Infinity":79,"s:218:13:218:Infinity":80,"s:219:42:219:Infinity":81,"b:219:42:219:65:219:65:219:Infinity":26,"s:220:20:223:Infinity":82,"f:221:7:221:15":13,"s:221:27:221:66":83,"b:221:44:221:51:221:51:221:66":27,"f:222:7:222:12":14,"s:222:23:222:27":84,"f:223:7:223:15":15,"s:223:24:223:41":85,"b:224:4:224:Infinity:undefined:undefined:undefined:undefined":28,"s:224:4:224:Infinity":86,"s:224:28:224:Infinity":87,"s:225:20:225:Infinity":88,"f:225:40:225:48":16,"s:225:54:225:70":89,"b:226:4:228:Infinity:undefined:undefined:undefined:undefined":29,"s:226:4:228:Infinity":90,"s:227:6:227:Infinity":91,"f:231:17:231:31":17,"s:232:10:232:Infinity":92,"f:232:42:232:48":18,"s:232:54:232:78":93,"b:233:4:233:Infinity:undefined:undefined:undefined:undefined":30,"s:233:4:233:Infinity":94,"s:233:12:233:Infinity":95,"b:235:4:243:Infinity:241:11:243:Infinity":31,"s:235:4:243:Infinity":96,"s:236:20:236:Infinity":97,"b:237:6:239:Infinity:undefined:undefined:undefined:undefined":32,"s:237:6:239:Infinity":98,"b:237:10:237:39:237:39:237:47":33,"s:238:8:238:Infinity":99,"s:240:6:240:Infinity":100,"s:242:6:242:Infinity":101,"s:244:4:252:Infinity":102,"s:245:21:245:Infinity":103,"s:246:6:246:Infinity":104,"b:248:6:250:Infinity:undefined:undefined:undefined:undefined":34,"s:248:6:250:Infinity":105,"b:248:40:248:54:248:54:248:57":35,"s:249:8:249:Infinity":106,"s:251:6:251:Infinity":107,"f:255:17:255:31":19,"s:256:43:256:Infinity":108,"s:257:4:257:Infinity":109,"b:257:52:257:Infinity:undefined:undefined:undefined:undefined":36,"s:257:52:257:Infinity":110,"s:257:73:257:Infinity":111,"b:258:4:262:Infinity:undefined:undefined:undefined:undefined":37,"s:258:4:262:Infinity":112,"b:258:8:258:43:258:43:258:65":38,"s:259:6:261:Infinity":113,"s:263:37:263:Infinity":114,"s:266:23:266:Infinity":115,"s:267:24:267:Infinity":116,"b:267:24:267:57:267:57:267:Infinity":39,"s:268:22:268:Infinity":117,"f:268:72:268:80":20,"s:268:86:268:96":118,"b:269:4:273:Infinity:undefined:undefined:undefined:undefined":40,"s:269:4:273:Infinity":119,"b:269:8:269:23:269:23:269:45":41,"s:270:6:272:Infinity":120,"b:274:4:276:Infinity:undefined:undefined:undefined:undefined":42,"s:274:4:276:Infinity":121,"b:274:8:274:24:274:24:274:45":43,"s:275:6:275:Infinity":122,"s:277:43:277:Infinity":123,"s:282:4:282:Infinity":124,"b:282:48:282:Infinity:undefined:undefined:undefined:undefined":44,"s:282:48:282:Infinity":125,"s:282:64:282:Infinity":126,"s:289:4:295:Infinity":127,"b:294:6:294:Infinity:undefined:undefined:undefined:undefined":45,"s:294:6:294:Infinity":128,"s:294:27:294:Infinity":129,"b:296:4:299:Infinity:undefined:undefined:undefined:undefined":46,"s:296:4:299:Infinity":130,"b:296:8:296:23:296:23:296:44":47,"s:297:6:297:Infinity":131,"s:298:6:298:Infinity":132,"s:300:23:300:Infinity":133,"s:301:22:301:Infinity":134,"s:302:17:302:Infinity":135,"s:303:21:303:Infinity":136,"s:307:17:311:Infinity":137,"b:313:4:316:Infinity:undefined:undefined:undefined:undefined":48,"s:313:4:316:Infinity":138,"s:314:6:314:Infinity":139,"s:315:6:315:Infinity":140,"b:318:4:356:Infinity:345:11:356:Infinity":49,"s:318:4:356:Infinity":141,"b:322:6:322:Infinity:undefined:undefined:undefined:undefined":50,"s:322:6:322:Infinity":142,"s:322:24:322:Infinity":143,"s:323:21:325:Infinity":144,"b:324:10:324:Infinity:325:10:325:Infinity":51,"b:326:6:329:Infinity:undefined:undefined:undefined:undefined":52,"s:326:6:329:Infinity":145,"s:327:8:327:Infinity":146,"s:328:8:328:Infinity":147,"b:330:6:343:Infinity:undefined:undefined:undefined:undefined":53,"s:330:6:343:Infinity":148,"s:331:30:331:Infinity":149,"s:332:8:332:Infinity":150,"s:333:8:342:Infinity":151,"s:344:6:344:Infinity":152,"s:346:22:346:Infinity":153,"b:347:6:355:Infinity:undefined:undefined:undefined:undefined":54,"s:347:6:355:Infinity":154,"s:348:8:348:Infinity":155,"s:349:8:354:Infinity":156,"b:352:16:352:Infinity:353:16:353:Infinity":55,"s:358:4:358:Infinity":157,"s:359:4:359:Infinity":158,"s:360:4:364:Infinity":159,"f:376:17:376:31":21,"s:377:21:377:Infinity":160,"b:378:4:381:Infinity:undefined:undefined:undefined:undefined":56,"s:378:4:381:Infinity":161,"s:379:6:379:Infinity":162,"s:380:6:380:Infinity":163,"b:380:22:380:41:380:41:380:73":57,"s:382:29:382:Infinity":164,"s:383:17:383:Infinity":165,"s:384:21:384:Infinity":166,"s:385:17:389:Infinity":167,"b:391:4:394:Infinity:undefined:undefined:undefined:undefined":58,"s:391:4:394:Infinity":168,"s:392:6:392:Infinity":169,"s:393:6:393:Infinity":170,"b:395:4:428:Infinity:417:11:428:Infinity":59,"s:395:4:428:Infinity":171,"s:396:21:398:Infinity":172,"b:397:10:397:Infinity:398:10:398:Infinity":60,"b:399:6:402:Infinity:undefined:undefined:undefined:undefined":61,"s:399:6:402:Infinity":173,"s:400:8:400:Infinity":174,"s:401:8:401:Infinity":175,"b:403:6:415:Infinity:undefined:undefined:undefined:undefined":62,"s:403:6:415:Infinity":176,"s:404:30:404:Infinity":177,"s:405:8:405:Infinity":178,"s:406:8:414:Infinity":179,"s:416:6:416:Infinity":180,"s:418:22:418:Infinity":181,"b:419:6:427:Infinity:undefined:undefined:undefined:undefined":63,"s:419:6:427:Infinity":182,"s:420:8:420:Infinity":183,"s:421:8:426:Infinity":184,"b:424:16:424:Infinity:425:16:425:Infinity":64,"s:429:4:429:Infinity":185,"s:430:4:430:Infinity":186,"s:431:4:435:Infinity":187,"s:438:2:457:Infinity":188,"f:453:33:453:40":22,"b:454:6:454:Infinity:undefined:undefined:undefined:undefined":65,"s:454:6:454:Infinity":189,"s:454:48:454:Infinity":190,"s:455:6:455:Infinity":191,"s:459:2:477:Infinity":192,"f:473:29:473:36":23,"b:474:6:474:Infinity:undefined:undefined:undefined:undefined":66,"s:474:6:474:Infinity":193,"s:474:44:474:Infinity":194,"s:475:6:475:Infinity":195,"s:479:2:605:Infinity":196,"f:498:34:498:41":24,"s:499:22:499:Infinity":197,"b:499:69:499:76:499:76:499:Infinity":67,"b:499:22:499:50:499:50:499:69":68,"s:503:6:512:Infinity":198,"s:504:30:504:Infinity":199,"b:504:30:504:94:504:94:504:Infinity":69,"s:505:22:505:Infinity":200,"f:505:27:505:33":25,"s:505:39:505:61":201,"b:506:8:508:Infinity:undefined:undefined:undefined:undefined":70,"s:506:8:508:Infinity":202,"b:506:12:506:21:506:21:506:47":71,"s:507:10:507:Infinity":203,"b:510:8:510:Infinity:undefined:undefined:undefined:undefined":72,"s:510:8:510:Infinity":204,"b:510:12:510:34:510:34:510:70":73,"s:510:70:510:Infinity":205,"s:514:26:514:Infinity":206,"s:515:27:515:Infinity":207,"b:515:27:515:44:515:44:515:Infinity":74,"s:517:8:523:Infinity":208,"b:518:12:518:Infinity:519:12:523:Infinity":75,"f:519:18:519:Infinity":26,"s:521:16:522:Infinity":209,"b:521:16:521:Infinity:522:16:522:Infinity":76,"b:521:23:521:34:521:34:521:36":77,"b:522:23:522:35:522:35:522:37":78,"s:524:21:524:Infinity":210,"b:525:6:529:Infinity:undefined:undefined:undefined:undefined":79,"s:525:6:529:Infinity":211,"s:526:8:528:Infinity":212,"b:527:45:527:125:527:125:527:Infinity":80,"f:527:51:527:56":27,"s:527:65:527:109":213,"b:527:74:527:86:527:86:527:97:527:97:527:109":81,"s:531:29:531:Infinity":214,"s:534:22:534:Infinity":215,"b:535:6:545:Infinity:543:13:545:Infinity":82,"s:535:6:545:Infinity":216,"b:535:10:535:41:535:41:535:74":83,"s:536:8:536:Infinity":217,"b:536:61:536:80:536:80:536:Infinity":84,"s:537:19:537:Infinity":218,"b:538:8:541:Infinity:undefined:undefined:undefined:undefined":85,"s:538:8:541:Infinity":219,"b:538:12:538:21:538:21:538:49":86,"s:539:10:539:Infinity":220,"s:540:10:540:Infinity":221,"s:542:8:542:Infinity":222,"s:544:8:544:Infinity":223,"b:544:60:544:76:544:76:544:81":87,"s:546:28:546:Infinity":224,"s:547:19:547:Infinity":225,"s:550:23:550:Infinity":226,"s:551:19:555:Infinity":227,"s:556:20:556:Infinity":228,"b:556:63:556:85:556:85:556:88":88,"b:558:6:561:Infinity:undefined:undefined:undefined:undefined":89,"s:558:6:561:Infinity":229,"s:559:8:559:Infinity":230,"s:560:8:560:Infinity":231,"b:562:6:594:Infinity:583:13:594:Infinity":90,"s:562:6:594:Infinity":232,"s:563:23:565:Infinity":233,"b:564:12:564:Infinity:565:12:565:Infinity":91,"b:566:8:569:Infinity:undefined:undefined:undefined:undefined":92,"s:566:8:569:Infinity":234,"s:567:10:567:Infinity":235,"s:568:10:568:Infinity":236,"b:570:8:581:Infinity:undefined:undefined:undefined:undefined":93,"s:570:8:581:Infinity":237,"s:571:24:571:Infinity":238,"s:572:10:572:Infinity":239,"s:573:10:580:Infinity":240,"s:582:8:582:Infinity":241,"s:584:24:584:Infinity":242,"b:585:8:593:Infinity:undefined:undefined:undefined:undefined":94,"s:585:8:593:Infinity":243,"s:586:10:586:Infinity":244,"s:587:10:592:Infinity":245,"b:590:18:590:Infinity:591:18:591:Infinity":95,"s:596:24:596:Infinity":246,"f:596:50:596:55":28,"s:596:65:596:89":247,"b:596:77:596:87:596:87:596:89":96,"s:597:6:597:Infinity":248,"s:598:6:598:Infinity":249,"s:599:6:603:Infinity":250,"s:607:2:665:Infinity":251,"f:626:37:626:44":29,"s:627:19:627:Infinity":252,"b:627:19:627:29:627:29:627:Infinity":97,"s:630:41:630:Infinity":253,"b:630:41:630:99:630:99:630:Infinity":98,"s:631:17:631:Infinity":254,"b:632:6:634:Infinity:undefined:undefined:undefined:undefined":99,"s:632:6:634:Infinity":255,"s:633:8:633:Infinity":256,"s:635:44:635:Infinity":257,"b:635:44:635:67:635:67:635:Infinity":100,"s:636:22:639:Infinity":258,"f:637:9:637:17":30,"s:637:29:637:68":259,"b:637:46:637:53:637:53:637:68":101,"f:638:9:638:14":31,"s:638:25:638:29":260,"f:639:9:639:17":32,"s:639:26:639:43":261,"b:640:6:642:Infinity:undefined:undefined:undefined:undefined":102,"s:640:6:642:Infinity":262,"s:641:8:641:Infinity":263,"s:643:22:643:Infinity":264,"f:643:42:643:50":33,"s:643:56:643:72":265,"b:644:6:646:Infinity:undefined:undefined:undefined:undefined":103,"s:644:6:646:Infinity":266,"s:645:8:645:Infinity":267,"s:648:23:648:Infinity":268,"b:649:6:649:Infinity:undefined:undefined:undefined:undefined":104,"s:649:6:649:Infinity":269,"s:649:21:649:Infinity":270,"s:650:47:653:Infinity":271,"s:654:6:663:Infinity":272,"b:658:38:658:82:658:82:658:Infinity":105,"s:670:26:670:Infinity":273,"s:671:28:671:Infinity":274,"s:672:22:672:Infinity":275,"s:674:2:714:Infinity":276,"f:702:33:702:40":34,"b:703:6:703:Infinity:undefined:undefined:undefined:undefined":106,"s:703:6:703:Infinity":277,"s:703:48:703:Infinity":278,"s:704:6:712:Infinity":279,"s:716:2:751:Infinity":280,"f:739:29:739:36":35,"b:740:6:740:Infinity:undefined:undefined:undefined:undefined":107,"s:740:6:740:Infinity":281,"s:740:44:740:Infinity":282,"s:741:6:749:Infinity":283,"s:753:2:797:Infinity":284,"f:776:33:776:40":36,"s:777:47:786:Infinity":285,"b:779:26:779:44:779:44:779:Infinity":108,"b:780:14:780:22:780:22:780:Infinity":109,"b:781:24:781:40:781:40:781:Infinity":110,"b:782:27:782:46:782:46:782:Infinity":111,"b:784:50:784:67:784:67:784:Infinity":112,"b:784:12:784:26:784:26:784:50":113,"s:787:6:795:Infinity":286,"s:799:2:840:Infinity":287,"f:819:29:819:36":37,"s:820:23:820:Infinity":288,"b:821:6:821:Infinity:undefined:undefined:undefined:undefined":114,"s:821:6:821:Infinity":289,"s:821:21:821:Infinity":290,"s:822:47:829:Infinity":291,"b:824:26:824:44:824:44:824:Infinity":115,"b:825:14:825:22:825:22:825:Infinity":116,"b:826:24:826:40:826:40:826:Infinity":117,"b:827:27:827:46:827:46:827:Infinity":118,"s:830:6:838:Infinity":292},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/dashboards.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/dashboards.ts","statementMap":{"0":{"start":{"line":11,"column":2},"end":{"line":58,"column":null}},"1":{"start":{"line":25,"column":6},"end":{"line":39,"column":null}},"2":{"start":{"line":26,"column":30},"end":{"line":26,"column":null}},"3":{"start":{"line":27,"column":8},"end":{"line":38,"column":null}},"4":{"start":{"line":30,"column":32},"end":{"line":35,"column":14}},"5":{"start":{"line":40,"column":22},"end":{"line":40,"column":null}},"6":{"start":{"line":41,"column":26},"end":{"line":41,"column":null}},"7":{"start":{"line":42,"column":27},"end":{"line":42,"column":null}},"8":{"start":{"line":43,"column":6},"end":{"line":56,"column":null}},"9":{"start":{"line":45,"column":36},"end":{"line":54,"column":10}},"10":{"start":{"line":52,"column":65},"end":{"line":52,"column":93}}},"fnMap":{"0":{"name":"registerDashboardTools","decl":{"start":{"line":10,"column":16},"end":{"line":10,"column":39}},"loc":{"start":{"line":10,"column":86},"end":{"line":59,"column":null}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":24,"column":31},"end":{"line":24,"column":38}},"loc":{"start":{"line":24,"column":56},"end":{"line":57,"column":5}},"line":24},"2":{"name":"(anonymous_2)","decl":{"start":{"line":30,"column":20},"end":{"line":30,"column":25}},"loc":{"start":{"line":30,"column":32},"end":{"line":35,"column":14}},"line":30},"3":{"name":"(anonymous_3)","decl":{"start":{"line":45,"column":21},"end":{"line":45,"column":26}},"loc":{"start":{"line":45,"column":36},"end":{"line":54,"column":10}},"line":45},"4":{"name":"(anonymous_4)","decl":{"start":{"line":52,"column":35},"end":{"line":52,"column":43}},"loc":{"start":{"line":52,"column":65},"end":{"line":52,"column":93}},"line":52}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":6},"end":{"line":39,"column":null}},"type":"if","locations":[{"start":{"line":25,"column":6},"end":{"line":39,"column":null}},{"start":{},"end":{}}],"line":25},"1":{"loc":{"start":{"line":26,"column":30},"end":{"line":26,"column":null}},"type":"binary-expr","locations":[{"start":{"line":26,"column":30},"end":{"line":26,"column":94}},{"start":{"line":26,"column":94},"end":{"line":26,"column":null}}],"line":26},"2":{"loc":{"start":{"line":34,"column":18},"end":{"line":34,"column":null}},"type":"cond-expr","locations":[{"start":{"line":34,"column":41},"end":{"line":34,"column":101}},{"start":{"line":34,"column":101},"end":{"line":34,"column":null}}],"line":34},"3":{"loc":{"start":{"line":40,"column":22},"end":{"line":40,"column":null}},"type":"cond-expr","locations":[{"start":{"line":40,"column":69},"end":{"line":40,"column":76}},{"start":{"line":40,"column":76},"end":{"line":40,"column":null}}],"line":40},"4":{"loc":{"start":{"line":40,"column":22},"end":{"line":40,"column":69}},"type":"binary-expr","locations":[{"start":{"line":40,"column":22},"end":{"line":40,"column":50}},{"start":{"line":40,"column":50},"end":{"line":40,"column":69}}],"line":40},"5":{"loc":{"start":{"line":42,"column":27},"end":{"line":42,"column":null}},"type":"binary-expr","locations":[{"start":{"line":42,"column":27},"end":{"line":42,"column":44}},{"start":{"line":42,"column":44},"end":{"line":42,"column":null}}],"line":42},"6":{"loc":{"start":{"line":47,"column":14},"end":{"line":47,"column":null}},"type":"cond-expr","locations":[{"start":{"line":47,"column":24},"end":{"line":47,"column":45}},{"start":{"line":47,"column":45},"end":{"line":47,"column":null}}],"line":47},"7":{"loc":{"start":{"line":48,"column":14},"end":{"line":48,"column":null}},"type":"cond-expr","locations":[{"start":{"line":48,"column":23},"end":{"line":48,"column":42}},{"start":{"line":48,"column":42},"end":{"line":48,"column":null}}],"line":48},"8":{"loc":{"start":{"line":49,"column":18},"end":{"line":49,"column":null}},"type":"cond-expr","locations":[{"start":{"line":49,"column":71},"end":{"line":49,"column":84}},{"start":{"line":49,"column":84},"end":{"line":49,"column":null}}],"line":49},"9":{"loc":{"start":{"line":49,"column":18},"end":{"line":49,"column":71}},"type":"binary-expr","locations":[{"start":{"line":49,"column":18},"end":{"line":49,"column":43}},{"start":{"line":49,"column":43},"end":{"line":49,"column":71}}],"line":49},"10":{"loc":{"start":{"line":51,"column":12},"end":{"line":53,"column":null}},"type":"cond-expr","locations":[{"start":{"line":51,"column":61},"end":{"line":52,"column":null}},{"start":{"line":53,"column":17},"end":{"line":53,"column":null}}],"line":51},"11":{"loc":{"start":{"line":51,"column":12},"end":{"line":51,"column":null}},"type":"binary-expr","locations":[{"start":{"line":51,"column":12},"end":{"line":51,"column":37}},{"start":{"line":51,"column":37},"end":{"line":51,"column":null}}],"line":51},"12":{"loc":{"start":{"line":52,"column":17},"end":{"line":52,"column":33}},"type":"binary-expr","locations":[{"start":{"line":52,"column":17},"end":{"line":52,"column":31}},{"start":{"line":52,"column":31},"end":{"line":52,"column":33}}],"line":52},"13":{"loc":{"start":{"line":52,"column":70},"end":{"line":52,"column":93}},"type":"binary-expr","locations":[{"start":{"line":52,"column":70},"end":{"line":52,"column":89}},{"start":{"line":52,"column":89},"end":{"line":52,"column":93}}],"line":52},"14":{"loc":{"start":{"line":53,"column":17},"end":{"line":53,"column":null}},"type":"binary-expr","locations":[{"start":{"line":53,"column":17},"end":{"line":53,"column":36}},{"start":{"line":53,"column":36},"end":{"line":53,"column":null}}],"line":53}},"s":{"0":23,"1":2,"2":1,"3":1,"4":2,"5":1,"6":2,"7":1,"8":2,"9":2,"10":2},"f":{"0":23,"1":2,"2":2,"3":2,"4":2},"b":{"0":[1,1],"1":[1,0],"2":[1,1],"3":[1,0],"4":[1,0],"5":[1,0],"6":[2,0],"7":[1,1],"8":[1,1],"9":[2,1],"10":[1,1],"11":[2,1],"12":[1,0],"13":[2,0],"14":[1,0]},"meta":{"lastBranch":15,"lastFunction":5,"lastStatement":11,"seen":{"f:10:16:10:39":0,"s:11:2:58:Infinity":0,"f:24:31:24:38":1,"b:25:6:39:Infinity:undefined:undefined:undefined:undefined":0,"s:25:6:39:Infinity":1,"s:26:30:26:Infinity":2,"b:26:30:26:94:26:94:26:Infinity":1,"s:27:8:38:Infinity":3,"f:30:20:30:25":2,"s:30:32:35:14":4,"b:34:41:34:101:34:101:34:Infinity":2,"s:40:22:40:Infinity":5,"b:40:69:40:76:40:76:40:Infinity":3,"b:40:22:40:50:40:50:40:69":4,"s:41:26:41:Infinity":6,"s:42:27:42:Infinity":7,"b:42:27:42:44:42:44:42:Infinity":5,"s:43:6:56:Infinity":8,"f:45:21:45:26":3,"s:45:36:54:10":9,"b:47:24:47:45:47:45:47:Infinity":6,"b:48:23:48:42:48:42:48:Infinity":7,"b:49:71:49:84:49:84:49:Infinity":8,"b:49:18:49:43:49:43:49:71":9,"b:51:61:52:Infinity:53:17:53:Infinity":10,"b:51:12:51:37:51:37:51:Infinity":11,"b:52:17:52:31:52:31:52:33":12,"f:52:35:52:43":4,"s:52:65:52:93":10,"b:52:70:52:89:52:89:52:93":13,"b:53:17:53:36:53:36:53:Infinity":14},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/energy.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/energy.ts","statementMap":{"0":{"start":{"line":15,"column":21},"end":{"line":15,"column":null}},"1":{"start":{"line":28,"column":27},"end":{"line":28,"column":null}},"2":{"start":{"line":29,"column":2},"end":{"line":39,"column":null}},"3":{"start":{"line":30,"column":4},"end":{"line":38,"column":null}},"4":{"start":{"line":31,"column":6},"end":{"line":31,"column":null}},"5":{"start":{"line":31,"column":43},"end":{"line":31,"column":null}},"6":{"start":{"line":31,"column":67},"end":{"line":31,"column":null}},"7":{"start":{"line":32,"column":6},"end":{"line":32,"column":null}},"8":{"start":{"line":32,"column":41},"end":{"line":32,"column":null}},"9":{"start":{"line":32,"column":63},"end":{"line":32,"column":null}},"10":{"start":{"line":33,"column":11},"end":{"line":38,"column":null}},"11":{"start":{"line":33,"column":61},"end":{"line":33,"column":null}},"12":{"start":{"line":34,"column":9},"end":{"line":38,"column":null}},"13":{"start":{"line":35,"column":6},"end":{"line":35,"column":null}},"14":{"start":{"line":35,"column":30},"end":{"line":35,"column":null}},"15":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"16":{"start":{"line":36,"column":32},"end":{"line":36,"column":null}},"17":{"start":{"line":37,"column":11},"end":{"line":38,"column":null}},"18":{"start":{"line":37,"column":59},"end":{"line":37,"column":null}},"19":{"start":{"line":38,"column":9},"end":{"line":38,"column":null}},"20":{"start":{"line":38,"column":59},"end":{"line":38,"column":null}},"21":{"start":{"line":40,"column":8},"end":{"line":42,"column":null}},"22":{"start":{"line":41,"column":19},"end":{"line":41,"column":37}},"23":{"start":{"line":42,"column":17},"end":{"line":42,"column":100}},"24":{"start":{"line":43,"column":2},"end":{"line":43,"column":null}},"25":{"start":{"line":47,"column":2},"end":{"line":137,"column":null}},"26":{"start":{"line":63,"column":6},"end":{"line":71,"column":null}},"27":{"start":{"line":64,"column":8},"end":{"line":64,"column":null}},"28":{"start":{"line":66,"column":20},"end":{"line":66,"column":null}},"29":{"start":{"line":67,"column":8},"end":{"line":70,"column":null}},"30":{"start":{"line":72,"column":35},"end":{"line":72,"column":null}},"31":{"start":{"line":73,"column":23},"end":{"line":75,"column":null}},"32":{"start":{"line":73,"column":92},"end":{"line":73,"column":98}},"33":{"start":{"line":74,"column":8},"end":{"line":74,"column":null}},"34":{"start":{"line":76,"column":6},"end":{"line":78,"column":null}},"35":{"start":{"line":77,"column":8},"end":{"line":77,"column":null}},"36":{"start":{"line":80,"column":20},"end":{"line":80,"column":null}},"37":{"start":{"line":81,"column":18},"end":{"line":81,"column":null}},"38":{"start":{"line":82,"column":21},"end":{"line":95,"column":null}},"39":{"start":{"line":83,"column":71},"end":{"line":89,"column":null}},"40":{"start":{"line":90,"column":47},"end":{"line":90,"column":null}},"41":{"start":{"line":91,"column":8},"end":{"line":93,"column":null}},"42":{"start":{"line":92,"column":10},"end":{"line":92,"column":null}},"43":{"start":{"line":92,"column":66},"end":{"line":92,"column":89}},"44":{"start":{"line":94,"column":8},"end":{"line":94,"column":null}},"45":{"start":{"line":97,"column":12},"end":{"line":98,"column":null}},"46":{"start":{"line":98,"column":8},"end":{"line":98,"column":null}},"47":{"start":{"line":98,"column":43},"end":{"line":98,"column":68}},"48":{"start":{"line":99,"column":12},"end":{"line":107,"column":null}},"49":{"start":{"line":99,"column":61},"end":{"line":107,"column":null}},"50":{"start":{"line":109,"column":22},"end":{"line":109,"column":null}},"51":{"start":{"line":110,"column":21},"end":{"line":110,"column":null}},"52":{"start":{"line":111,"column":25},"end":{"line":115,"column":null}},"53":{"start":{"line":112,"column":23},"end":{"line":112,"column":57}},"54":{"start":{"line":113,"column":21},"end":{"line":113,"column":59}},"55":{"start":{"line":114,"column":24},"end":{"line":114,"column":41}},"56":{"start":{"line":117,"column":43},"end":{"line":124,"column":null}},"57":{"start":{"line":125,"column":6},"end":{"line":134,"column":null}},"58":{"start":{"line":126,"column":25},"end":{"line":126,"column":null}},"59":{"start":{"line":127,"column":53},"end":{"line":127,"column":null}},"60":{"start":{"line":128,"column":8},"end":{"line":131,"column":null}},"61":{"start":{"line":129,"column":21},"end":{"line":129,"column":null}},"62":{"start":{"line":130,"column":10},"end":{"line":130,"column":null}},"63":{"start":{"line":132,"column":8},"end":{"line":132,"column":null}},"64":{"start":{"line":133,"column":8},"end":{"line":133,"column":null}},"65":{"start":{"line":135,"column":6},"end":{"line":135,"column":null}}},"fnMap":{"0":{"name":"collectStats","decl":{"start":{"line":27,"column":9},"end":{"line":27,"column":22}},"loc":{"start":{"line":27,"column":111},"end":{"line":44,"column":null}},"line":27},"1":{"name":"(anonymous_1)","decl":{"start":{"line":41,"column":5},"end":{"line":41,"column":13}},"loc":{"start":{"line":41,"column":19},"end":{"line":41,"column":37}},"line":41},"2":{"name":"(anonymous_2)","decl":{"start":{"line":42,"column":5},"end":{"line":42,"column":10}},"loc":{"start":{"line":42,"column":17},"end":{"line":42,"column":100}},"line":42},"3":{"name":"registerEnergyTools","decl":{"start":{"line":46,"column":16},"end":{"line":46,"column":36}},"loc":{"start":{"line":46,"column":83},"end":{"line":138,"column":null}},"line":46},"4":{"name":"(anonymous_4)","decl":{"start":{"line":61,"column":26},"end":{"line":61,"column":33}},"loc":{"start":{"line":61,"column":57},"end":{"line":136,"column":5}},"line":61},"5":{"name":"(anonymous_5)","decl":{"start":{"line":73,"column":81},"end":{"line":73,"column":86}},"loc":{"start":{"line":73,"column":92},"end":{"line":73,"column":98}},"line":73},"6":{"name":"(anonymous_6)","decl":{"start":{"line":73,"column":103},"end":{"line":73,"column":111}},"loc":{"start":{"line":74,"column":8},"end":{"line":74,"column":null}},"line":74},"7":{"name":"(anonymous_7)","decl":{"start":{"line":82,"column":21},"end":{"line":82,"column":28}},"loc":{"start":{"line":82,"column":92},"end":{"line":95,"column":null}},"line":82},"8":{"name":"(anonymous_8)","decl":{"start":{"line":92,"column":47},"end":{"line":92,"column":55}},"loc":{"start":{"line":92,"column":66},"end":{"line":92,"column":89}},"line":92},"9":{"name":"(anonymous_9)","decl":{"start":{"line":97,"column":12},"end":{"line":97,"column":25}},"loc":{"start":{"line":98,"column":8},"end":{"line":98,"column":null}},"line":98},"10":{"name":"(anonymous_10)","decl":{"start":{"line":98,"column":23},"end":{"line":98,"column":31}},"loc":{"start":{"line":98,"column":43},"end":{"line":98,"column":68}},"line":98},"11":{"name":"(anonymous_11)","decl":{"start":{"line":99,"column":12},"end":{"line":99,"column":25}},"loc":{"start":{"line":99,"column":61},"end":{"line":107,"column":null}},"line":99},"12":{"name":"(anonymous_12)","decl":{"start":{"line":112,"column":9},"end":{"line":112,"column":17}},"loc":{"start":{"line":112,"column":23},"end":{"line":112,"column":57}},"line":112},"13":{"name":"(anonymous_13)","decl":{"start":{"line":113,"column":9},"end":{"line":113,"column":14}},"loc":{"start":{"line":113,"column":21},"end":{"line":113,"column":59}},"line":113},"14":{"name":"(anonymous_14)","decl":{"start":{"line":114,"column":9},"end":{"line":114,"column":15}},"loc":{"start":{"line":114,"column":24},"end":{"line":114,"column":41}},"line":114}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":21},"end":{"line":29,"column":60}},"type":"binary-expr","locations":[{"start":{"line":29,"column":21},"end":{"line":29,"column":56}},{"start":{"line":29,"column":56},"end":{"line":29,"column":60}}],"line":29},"1":{"loc":{"start":{"line":30,"column":4},"end":{"line":38,"column":null}},"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":38,"column":null}},{"start":{"line":33,"column":11},"end":{"line":38,"column":null}}],"line":30},"2":{"loc":{"start":{"line":31,"column":22},"end":{"line":31,"column":43}},"type":"binary-expr","locations":[{"start":{"line":31,"column":22},"end":{"line":31,"column":39}},{"start":{"line":31,"column":39},"end":{"line":31,"column":43}}],"line":31},"3":{"loc":{"start":{"line":31,"column":43},"end":{"line":31,"column":null}},"type":"if","locations":[{"start":{"line":31,"column":43},"end":{"line":31,"column":null}},{"start":{},"end":{}}],"line":31},"4":{"loc":{"start":{"line":32,"column":22},"end":{"line":32,"column":41}},"type":"binary-expr","locations":[{"start":{"line":32,"column":22},"end":{"line":32,"column":37}},{"start":{"line":32,"column":37},"end":{"line":32,"column":41}}],"line":32},"5":{"loc":{"start":{"line":32,"column":41},"end":{"line":32,"column":null}},"type":"if","locations":[{"start":{"line":32,"column":41},"end":{"line":32,"column":null}},{"start":{},"end":{}}],"line":32},"6":{"loc":{"start":{"line":33,"column":11},"end":{"line":38,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":11},"end":{"line":38,"column":null}},{"start":{"line":34,"column":9},"end":{"line":38,"column":null}}],"line":33},"7":{"loc":{"start":{"line":33,"column":15},"end":{"line":33,"column":61}},"type":"binary-expr","locations":[{"start":{"line":33,"column":15},"end":{"line":33,"column":39}},{"start":{"line":33,"column":39},"end":{"line":33,"column":61}}],"line":33},"8":{"loc":{"start":{"line":34,"column":9},"end":{"line":38,"column":null}},"type":"if","locations":[{"start":{"line":34,"column":9},"end":{"line":38,"column":null}},{"start":{"line":37,"column":11},"end":{"line":38,"column":null}}],"line":34},"9":{"loc":{"start":{"line":35,"column":6},"end":{"line":35,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":6},"end":{"line":35,"column":null}},{"start":{},"end":{}}],"line":35},"10":{"loc":{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},"type":"if","locations":[{"start":{"line":36,"column":6},"end":{"line":36,"column":null}},{"start":{},"end":{}}],"line":36},"11":{"loc":{"start":{"line":37,"column":11},"end":{"line":38,"column":null}},"type":"if","locations":[{"start":{"line":37,"column":11},"end":{"line":38,"column":null}},{"start":{"line":38,"column":9},"end":{"line":38,"column":null}}],"line":37},"12":{"loc":{"start":{"line":37,"column":15},"end":{"line":37,"column":59}},"type":"binary-expr","locations":[{"start":{"line":37,"column":15},"end":{"line":37,"column":37}},{"start":{"line":37,"column":37},"end":{"line":37,"column":59}}],"line":37},"13":{"loc":{"start":{"line":38,"column":9},"end":{"line":38,"column":null}},"type":"if","locations":[{"start":{"line":38,"column":9},"end":{"line":38,"column":null}},{"start":{},"end":{}}],"line":38},"14":{"loc":{"start":{"line":38,"column":13},"end":{"line":38,"column":59}},"type":"binary-expr","locations":[{"start":{"line":38,"column":13},"end":{"line":38,"column":37}},{"start":{"line":38,"column":37},"end":{"line":38,"column":59}}],"line":38},"15":{"loc":{"start":{"line":40,"column":21},"end":{"line":40,"column":62}},"type":"binary-expr","locations":[{"start":{"line":40,"column":21},"end":{"line":40,"column":60}},{"start":{"line":40,"column":60},"end":{"line":40,"column":62}}],"line":40},"16":{"loc":{"start":{"line":42,"column":60},"end":{"line":42,"column":98}},"type":"binary-expr","locations":[{"start":{"line":42,"column":60},"end":{"line":42,"column":93}},{"start":{"line":42,"column":93},"end":{"line":42,"column":98}}],"line":42},"17":{"loc":{"start":{"line":66,"column":20},"end":{"line":66,"column":null}},"type":"cond-expr","locations":[{"start":{"line":66,"column":41},"end":{"line":66,"column":53}},{"start":{"line":66,"column":53},"end":{"line":66,"column":null}}],"line":66},"18":{"loc":{"start":{"line":76,"column":6},"end":{"line":78,"column":null}},"type":"if","locations":[{"start":{"line":76,"column":6},"end":{"line":78,"column":null}},{"start":{},"end":{}}],"line":76},"19":{"loc":{"start":{"line":80,"column":33},"end":{"line":80,"column":null}},"type":"binary-expr","locations":[{"start":{"line":80,"column":33},"end":{"line":80,"column":43}},{"start":{"line":80,"column":43},"end":{"line":80,"column":null}}],"line":80},"20":{"loc":{"start":{"line":87,"column":18},"end":{"line":87,"column":null}},"type":"cond-expr","locations":[{"start":{"line":87,"column":32},"end":{"line":87,"column":40}},{"start":{"line":87,"column":40},"end":{"line":87,"column":null}}],"line":87},"21":{"loc":{"start":{"line":91,"column":48},"end":{"line":91,"column":57}},"type":"binary-expr","locations":[{"start":{"line":91,"column":48},"end":{"line":91,"column":55}},{"start":{"line":91,"column":55},"end":{"line":91,"column":57}}],"line":91},"22":{"loc":{"start":{"line":92,"column":35},"end":{"line":92,"column":45}},"type":"binary-expr","locations":[{"start":{"line":92,"column":35},"end":{"line":92,"column":43}},{"start":{"line":92,"column":43},"end":{"line":92,"column":45}}],"line":92},"23":{"loc":{"start":{"line":92,"column":73},"end":{"line":92,"column":89}},"type":"binary-expr","locations":[{"start":{"line":92,"column":73},"end":{"line":92,"column":85}},{"start":{"line":92,"column":85},"end":{"line":92,"column":89}}],"line":92},"24":{"loc":{"start":{"line":98,"column":50},"end":{"line":98,"column":68}},"type":"binary-expr","locations":[{"start":{"line":98,"column":50},"end":{"line":98,"column":64}},{"start":{"line":98,"column":64},"end":{"line":98,"column":68}}],"line":98},"25":{"loc":{"start":{"line":113,"column":36},"end":{"line":113,"column":57}},"type":"binary-expr","locations":[{"start":{"line":113,"column":36},"end":{"line":113,"column":55}},{"start":{"line":113,"column":55},"end":{"line":113,"column":57}}],"line":113},"26":{"loc":{"start":{"line":118,"column":16},"end":{"line":118,"column":null}},"type":"binary-expr","locations":[{"start":{"line":118,"column":16},"end":{"line":118,"column":26}},{"start":{"line":118,"column":26},"end":{"line":118,"column":null}}],"line":118},"27":{"loc":{"start":{"line":125,"column":6},"end":{"line":134,"column":null}},"type":"if","locations":[{"start":{"line":125,"column":6},"end":{"line":134,"column":null}},{"start":{},"end":{}}],"line":125},"28":{"loc":{"start":{"line":129,"column":21},"end":{"line":129,"column":null}},"type":"binary-expr","locations":[{"start":{"line":129,"column":21},"end":{"line":129,"column":63}},{"start":{"line":129,"column":63},"end":{"line":129,"column":null}}],"line":129},"29":{"loc":{"start":{"line":130,"column":21},"end":{"line":130,"column":null}},"type":"cond-expr","locations":[{"start":{"line":130,"column":31},"end":{"line":130,"column":71}},{"start":{"line":130,"column":71},"end":{"line":130,"column":null}}],"line":130}},"s":{"0":2,"1":3,"2":3,"3":9,"4":3,"5":3,"6":3,"7":3,"8":3,"9":3,"10":6,"11":3,"12":3,"13":0,"14":0,"15":0,"16":0,"17":3,"18":3,"19":0,"20":0,"21":3,"22":6,"23":6,"24":3,"25":25,"26":4,"27":4,"28":1,"29":1,"30":3,"31":3,"32":6,"33":18,"34":3,"35":0,"36":3,"37":4,"38":4,"39":4,"40":4,"41":4,"42":24,"43":28,"44":4,"45":4,"46":28,"47":16,"48":4,"49":4,"50":4,"51":3,"52":3,"53":6,"54":5,"55":2,"56":3,"57":4,"58":1,"59":1,"60":1,"61":7,"62":7,"63":1,"64":1,"65":3},"f":{"0":3,"1":6,"2":6,"3":25,"4":4,"5":6,"6":18,"7":4,"8":28,"9":28,"10":16,"11":4,"12":6,"13":5,"14":2},"b":{"0":[3,0],"1":[3,6],"2":[3,0],"3":[3,0],"4":[3,0],"5":[3,0],"6":[3,3],"7":[6,3],"8":[0,3],"9":[0,0],"10":[0,0],"11":[3,0],"12":[3,3],"13":[0,0],"14":[0,0],"15":[3,0],"16":[6,3],"17":[1,0],"18":[0,3],"19":[3,2],"20":[0,4],"21":[4,0],"22":[24,0],"23":[28,4],"24":[16,0],"25":[5,0],"26":[3,2],"27":[1,3],"28":[7,0],"29":[3,4]},"meta":{"lastBranch":30,"lastFunction":15,"lastStatement":66,"seen":{"s:15:21:15:Infinity":0,"f:27:9:27:22":0,"s:28:27:28:Infinity":1,"s:29:2:39:Infinity":2,"b:29:21:29:56:29:56:29:60":0,"b:30:4:38:Infinity:33:11:38:Infinity":1,"s:30:4:38:Infinity":3,"s:31:6:31:Infinity":4,"b:31:22:31:39:31:39:31:43":2,"b:31:43:31:Infinity:undefined:undefined:undefined:undefined":3,"s:31:43:31:Infinity":5,"s:31:67:31:Infinity":6,"s:32:6:32:Infinity":7,"b:32:22:32:37:32:37:32:41":4,"b:32:41:32:Infinity:undefined:undefined:undefined:undefined":5,"s:32:41:32:Infinity":8,"s:32:63:32:Infinity":9,"b:33:11:38:Infinity:34:9:38:Infinity":6,"s:33:11:38:Infinity":10,"b:33:15:33:39:33:39:33:61":7,"s:33:61:33:Infinity":11,"b:34:9:38:Infinity:37:11:38:Infinity":8,"s:34:9:38:Infinity":12,"b:35:6:35:Infinity:undefined:undefined:undefined:undefined":9,"s:35:6:35:Infinity":13,"s:35:30:35:Infinity":14,"b:36:6:36:Infinity:undefined:undefined:undefined:undefined":10,"s:36:6:36:Infinity":15,"s:36:32:36:Infinity":16,"b:37:11:38:Infinity:38:9:38:Infinity":11,"s:37:11:38:Infinity":17,"b:37:15:37:37:37:37:37:59":12,"s:37:59:37:Infinity":18,"b:38:9:38:Infinity:undefined:undefined:undefined:undefined":13,"s:38:9:38:Infinity":19,"b:38:13:38:37:38:37:38:59":14,"s:38:59:38:Infinity":20,"s:40:8:42:Infinity":21,"b:40:21:40:60:40:60:40:62":15,"f:41:5:41:13":1,"s:41:19:41:37":22,"f:42:5:42:10":2,"s:42:17:42:100":23,"b:42:60:42:93:42:93:42:98":16,"s:43:2:43:Infinity":24,"f:46:16:46:36":3,"s:47:2:137:Infinity":25,"f:61:26:61:33":4,"s:63:6:71:Infinity":26,"s:64:8:64:Infinity":27,"s:66:20:66:Infinity":28,"b:66:41:66:53:66:53:66:Infinity":17,"s:67:8:70:Infinity":29,"s:72:35:72:Infinity":30,"s:73:23:75:Infinity":31,"f:73:81:73:86":5,"s:73:92:73:98":32,"f:73:103:73:111":6,"s:74:8:74:Infinity":33,"b:76:6:78:Infinity:undefined:undefined:undefined:undefined":18,"s:76:6:78:Infinity":34,"s:77:8:77:Infinity":35,"s:80:20:80:Infinity":36,"b:80:33:80:43:80:43:80:Infinity":19,"s:81:18:81:Infinity":37,"s:82:21:95:Infinity":38,"f:82:21:82:28":7,"s:83:71:89:Infinity":39,"b:87:32:87:40:87:40:87:Infinity":20,"s:90:47:90:Infinity":40,"s:91:8:93:Infinity":41,"b:91:48:91:55:91:55:91:57":21,"s:92:10:92:Infinity":42,"b:92:35:92:43:92:43:92:45":22,"f:92:47:92:55":8,"s:92:66:92:89":43,"b:92:73:92:85:92:85:92:89":23,"s:94:8:94:Infinity":44,"s:97:12:98:Infinity":45,"f:97:12:97:25":9,"s:98:8:98:Infinity":46,"f:98:23:98:31":10,"s:98:43:98:68":47,"b:98:50:98:64:98:64:98:68":24,"s:99:12:107:Infinity":48,"f:99:12:99:25":11,"s:99:61:107:Infinity":49,"s:109:22:109:Infinity":50,"s:110:21:110:Infinity":51,"s:111:25:115:Infinity":52,"f:112:9:112:17":12,"s:112:23:112:57":53,"f:113:9:113:14":13,"s:113:21:113:59":54,"b:113:36:113:55:113:55:113:57":25,"f:114:9:114:15":14,"s:114:24:114:41":55,"s:117:43:124:Infinity":56,"b:118:16:118:26:118:26:118:Infinity":26,"b:125:6:134:Infinity:undefined:undefined:undefined:undefined":27,"s:125:6:134:Infinity":57,"s:126:25:126:Infinity":58,"s:127:53:127:Infinity":59,"s:128:8:131:Infinity":60,"s:129:21:129:Infinity":61,"b:129:21:129:63:129:63:129:Infinity":28,"s:130:10:130:Infinity":62,"b:130:31:130:71:130:71:130:Infinity":29,"s:132:8:132:Infinity":63,"s:133:8:133:Infinity":64,"s:135:6:135:Infinity":65},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/entities.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/entities.ts","statementMap":{"0":{"start":{"line":10,"column":2},"end":{"line":16,"column":null}},"1":{"start":{"line":20,"column":12},"end":{"line":20,"column":null}},"2":{"start":{"line":21,"column":17},"end":{"line":21,"column":null}},"3":{"start":{"line":22,"column":13},"end":{"line":22,"column":null}},"4":{"start":{"line":23,"column":15},"end":{"line":23,"column":null}},"5":{"start":{"line":24,"column":8},"end":{"line":24,"column":null}},"6":{"start":{"line":27,"column":18},"end":{"line":27,"column":null}},"7":{"start":{"line":27,"column":39},"end":{"line":27,"column":54}},"8":{"start":{"line":28,"column":17},"end":{"line":28,"column":null}},"9":{"start":{"line":28,"column":37},"end":{"line":28,"column":52}},"10":{"start":{"line":29,"column":8},"end":{"line":29,"column":null}},"11":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"12":{"start":{"line":30,"column":16},"end":{"line":30,"column":null}},"13":{"start":{"line":31,"column":14},"end":{"line":31,"column":null}},"14":{"start":{"line":32,"column":2},"end":{"line":37,"column":null}},"15":{"start":{"line":33,"column":4},"end":{"line":36,"column":null}},"16":{"start":{"line":33,"column":24},"end":{"line":33,"column":null}},"17":{"start":{"line":34,"column":9},"end":{"line":36,"column":null}},"18":{"start":{"line":34,"column":53},"end":{"line":34,"column":66}},"19":{"start":{"line":34,"column":69},"end":{"line":34,"column":null}},"20":{"start":{"line":35,"column":9},"end":{"line":36,"column":null}},"21":{"start":{"line":35,"column":73},"end":{"line":35,"column":86}},"22":{"start":{"line":35,"column":89},"end":{"line":35,"column":null}},"23":{"start":{"line":36,"column":9},"end":{"line":36,"column":null}},"24":{"start":{"line":38,"column":2},"end":{"line":38,"column":null}},"25":{"start":{"line":42,"column":18},"end":{"line":43,"column":null}},"26":{"start":{"line":43,"column":46},"end":{"line":43,"column":85}},"27":{"start":{"line":45,"column":2},"end":{"line":73,"column":null}},"28":{"start":{"line":60,"column":18},"end":{"line":60,"column":null}},"29":{"start":{"line":61,"column":21},"end":{"line":65,"column":null}},"30":{"start":{"line":62,"column":21},"end":{"line":62,"column":56}},"31":{"start":{"line":63,"column":23},"end":{"line":63,"column":34}},"32":{"start":{"line":64,"column":24},"end":{"line":64,"column":41}},"33":{"start":{"line":65,"column":20},"end":{"line":65,"column":32}},"34":{"start":{"line":66,"column":6},"end":{"line":71,"column":null}},"35":{"start":{"line":75,"column":2},"end":{"line":138,"column":null}},"36":{"start":{"line":96,"column":16},"end":{"line":96,"column":null}},"37":{"start":{"line":98,"column":6},"end":{"line":113,"column":null}},"38":{"start":{"line":99,"column":25},"end":{"line":99,"column":null}},"39":{"start":{"line":100,"column":23},"end":{"line":100,"column":null}},"40":{"start":{"line":101,"column":8},"end":{"line":104,"column":null}},"41":{"start":{"line":102,"column":10},"end":{"line":102,"column":null}},"42":{"start":{"line":103,"column":10},"end":{"line":103,"column":null}},"43":{"start":{"line":103,"column":22},"end":{"line":103,"column":null}},"44":{"start":{"line":105,"column":14},"end":{"line":106,"column":null}},"45":{"start":{"line":106,"column":10},"end":{"line":106,"column":null}},"46":{"start":{"line":106,"column":42},"end":{"line":106,"column":53}},"47":{"start":{"line":106,"column":85},"end":{"line":106,"column":96}},"48":{"start":{"line":107,"column":8},"end":{"line":112,"column":null}},"49":{"start":{"line":115,"column":6},"end":{"line":115,"column":null}},"50":{"start":{"line":115,"column":18},"end":{"line":115,"column":null}},"51":{"start":{"line":115,"column":42},"end":{"line":115,"column":82}},"52":{"start":{"line":116,"column":6},"end":{"line":116,"column":null}},"53":{"start":{"line":116,"column":17},"end":{"line":116,"column":null}},"54":{"start":{"line":116,"column":41},"end":{"line":116,"column":58}},"55":{"start":{"line":117,"column":6},"end":{"line":120,"column":null}},"56":{"start":{"line":118,"column":18},"end":{"line":118,"column":null}},"57":{"start":{"line":119,"column":8},"end":{"line":119,"column":null}},"58":{"start":{"line":119,"column":26},"end":{"line":119,"column":66}},"59":{"start":{"line":121,"column":6},"end":{"line":124,"column":null}},"60":{"start":{"line":122,"column":18},"end":{"line":122,"column":null}},"61":{"start":{"line":123,"column":8},"end":{"line":123,"column":null}},"62":{"start":{"line":123,"column":26},"end":{"line":123,"column":67}},"63":{"start":{"line":125,"column":6},"end":{"line":128,"column":null}},"64":{"start":{"line":126,"column":18},"end":{"line":126,"column":null}},"65":{"start":{"line":127,"column":8},"end":{"line":127,"column":null}},"66":{"start":{"line":127,"column":32},"end":{"line":127,"column":75}},"67":{"start":{"line":127,"column":53},"end":{"line":127,"column":74}},"68":{"start":{"line":129,"column":6},"end":{"line":135,"column":null}},"69":{"start":{"line":130,"column":8},"end":{"line":134,"column":null}},"70":{"start":{"line":131,"column":23},"end":{"line":131,"column":59}},"71":{"start":{"line":132,"column":25},"end":{"line":132,"column":36}},"72":{"start":{"line":133,"column":26},"end":{"line":133,"column":43}},"73":{"start":{"line":134,"column":22},"end":{"line":134,"column":25}},"74":{"start":{"line":136,"column":6},"end":{"line":136,"column":null}},"75":{"start":{"line":140,"column":2},"end":{"line":178,"column":null}},"76":{"start":{"line":153,"column":6},"end":{"line":155,"column":null}},"77":{"start":{"line":154,"column":8},"end":{"line":154,"column":null}},"78":{"start":{"line":156,"column":18},"end":{"line":156,"column":null}},"79":{"start":{"line":157,"column":16},"end":{"line":157,"column":null}},"80":{"start":{"line":157,"column":32},"end":{"line":157,"column":57}},"81":{"start":{"line":158,"column":6},"end":{"line":158,"column":null}},"82":{"start":{"line":158,"column":14},"end":{"line":158,"column":null}},"83":{"start":{"line":159,"column":50},"end":{"line":159,"column":null}},"84":{"start":{"line":160,"column":6},"end":{"line":163,"column":null}},"85":{"start":{"line":161,"column":18},"end":{"line":161,"column":null}},"86":{"start":{"line":162,"column":8},"end":{"line":162,"column":null}},"87":{"start":{"line":164,"column":6},"end":{"line":176,"column":null}},"88":{"start":{"line":180,"column":2},"end":{"line":203,"column":null}},"89":{"start":{"line":189,"column":26},"end":{"line":189,"column":null}},"90":{"start":{"line":190,"column":21},"end":{"line":190,"column":null}},"91":{"start":{"line":191,"column":6},"end":{"line":191,"column":null}},"92":{"start":{"line":191,"column":27},"end":{"line":191,"column":null}},"93":{"start":{"line":191,"column":39},"end":{"line":191,"column":null}},"94":{"start":{"line":192,"column":24},"end":{"line":192,"column":null}},"95":{"start":{"line":192,"column":55},"end":{"line":192,"column":75}},"96":{"start":{"line":193,"column":6},"end":{"line":201,"column":null}},"97":{"start":{"line":194,"column":38},"end":{"line":199,"column":10}},"98":{"start":{"line":205,"column":2},"end":{"line":243,"column":null}},"99":{"start":{"line":220,"column":19},"end":{"line":220,"column":null}},"100":{"start":{"line":221,"column":23},"end":{"line":221,"column":null}},"101":{"start":{"line":221,"column":53},"end":{"line":221,"column":72}},"102":{"start":{"line":222,"column":25},"end":{"line":222,"column":null}},"103":{"start":{"line":222,"column":57},"end":{"line":222,"column":66}},"104":{"start":{"line":223,"column":20},"end":{"line":236,"column":null}},"105":{"start":{"line":224,"column":23},"end":{"line":224,"column":37}},"106":{"start":{"line":227,"column":34},"end":{"line":227,"column":null}},"107":{"start":{"line":228,"column":10},"end":{"line":235,"column":null}},"108":{"start":{"line":237,"column":6},"end":{"line":240,"column":null}},"109":{"start":{"line":238,"column":18},"end":{"line":238,"column":null}},"110":{"start":{"line":239,"column":8},"end":{"line":239,"column":null}},"111":{"start":{"line":239,"column":34},"end":{"line":239,"column":74}},"112":{"start":{"line":241,"column":6},"end":{"line":241,"column":null}}},"fnMap":{"0":{"name":"summary","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":17}},"loc":{"start":{"line":9,"column":35},"end":{"line":17,"column":null}},"line":9},"1":{"name":"matchQuery","decl":{"start":{"line":19,"column":9},"end":{"line":19,"column":20}},"loc":{"start":{"line":19,"column":61},"end":{"line":39,"column":null}},"line":19},"2":{"name":"(anonymous_2)","decl":{"start":{"line":27,"column":28},"end":{"line":27,"column":33}},"loc":{"start":{"line":27,"column":39},"end":{"line":27,"column":54}},"line":27},"3":{"name":"(anonymous_3)","decl":{"start":{"line":28,"column":26},"end":{"line":28,"column":31}},"loc":{"start":{"line":28,"column":37},"end":{"line":28,"column":52}},"line":28},"4":{"name":"(anonymous_4)","decl":{"start":{"line":34,"column":41},"end":{"line":34,"column":47}},"loc":{"start":{"line":34,"column":53},"end":{"line":34,"column":66}},"line":34},"5":{"name":"(anonymous_5)","decl":{"start":{"line":35,"column":61},"end":{"line":35,"column":67}},"loc":{"start":{"line":35,"column":73},"end":{"line":35,"column":86}},"line":35},"6":{"name":"registerEntityTools","decl":{"start":{"line":41,"column":16},"end":{"line":41,"column":36}},"loc":{"start":{"line":41,"column":83},"end":{"line":244,"column":null}},"line":41},"7":{"name":"(anonymous_7)","decl":{"start":{"line":42,"column":18},"end":{"line":42,"column":null}},"loc":{"start":{"line":42,"column":18},"end":{"line":43,"column":null}},"line":42},"8":{"name":"(anonymous_8)","decl":{"start":{"line":43,"column":32},"end":{"line":43,"column":40}},"loc":{"start":{"line":43,"column":46},"end":{"line":43,"column":85}},"line":43},"9":{"name":"(anonymous_9)","decl":{"start":{"line":59,"column":31},"end":{"line":59,"column":38}},"loc":{"start":{"line":59,"column":59},"end":{"line":72,"column":5}},"line":59},"10":{"name":"(anonymous_10)","decl":{"start":{"line":62,"column":9},"end":{"line":62,"column":14}},"loc":{"start":{"line":62,"column":21},"end":{"line":62,"column":56}},"line":62},"11":{"name":"(anonymous_11)","decl":{"start":{"line":63,"column":9},"end":{"line":63,"column":17}},"loc":{"start":{"line":63,"column":23},"end":{"line":63,"column":34}},"line":63},"12":{"name":"(anonymous_12)","decl":{"start":{"line":64,"column":9},"end":{"line":64,"column":15}},"loc":{"start":{"line":64,"column":24},"end":{"line":64,"column":41}},"line":64},"13":{"name":"(anonymous_13)","decl":{"start":{"line":65,"column":9},"end":{"line":65,"column":14}},"loc":{"start":{"line":65,"column":20},"end":{"line":65,"column":32}},"line":65},"14":{"name":"(anonymous_14)","decl":{"start":{"line":95,"column":29},"end":{"line":95,"column":36}},"loc":{"start":{"line":95,"column":101},"end":{"line":137,"column":5}},"line":95},"15":{"name":"(anonymous_15)","decl":{"start":{"line":105,"column":14},"end":{"line":105,"column":21}},"loc":{"start":{"line":106,"column":10},"end":{"line":106,"column":null}},"line":106},"16":{"name":"(anonymous_16)","decl":{"start":{"line":106,"column":27},"end":{"line":106,"column":33}},"loc":{"start":{"line":106,"column":42},"end":{"line":106,"column":53}},"line":106},"17":{"name":"(anonymous_17)","decl":{"start":{"line":106,"column":68},"end":{"line":106,"column":73}},"loc":{"start":{"line":106,"column":85},"end":{"line":106,"column":96}},"line":106},"18":{"name":"(anonymous_18)","decl":{"start":{"line":115,"column":28},"end":{"line":115,"column":36}},"loc":{"start":{"line":115,"column":42},"end":{"line":115,"column":82}},"line":115},"19":{"name":"(anonymous_19)","decl":{"start":{"line":116,"column":27},"end":{"line":116,"column":35}},"loc":{"start":{"line":116,"column":41},"end":{"line":116,"column":58}},"line":116},"20":{"name":"(anonymous_20)","decl":{"start":{"line":119,"column":18},"end":{"line":119,"column":26}},"loc":{"start":{"line":119,"column":26},"end":{"line":119,"column":66}},"line":119},"21":{"name":"(anonymous_21)","decl":{"start":{"line":123,"column":18},"end":{"line":123,"column":26}},"loc":{"start":{"line":123,"column":26},"end":{"line":123,"column":67}},"line":123},"22":{"name":"(anonymous_22)","decl":{"start":{"line":127,"column":18},"end":{"line":127,"column":26}},"loc":{"start":{"line":127,"column":32},"end":{"line":127,"column":75}},"line":127},"23":{"name":"(anonymous_23)","decl":{"start":{"line":127,"column":41},"end":{"line":127,"column":47}},"loc":{"start":{"line":127,"column":53},"end":{"line":127,"column":74}},"line":127},"24":{"name":"(anonymous_24)","decl":{"start":{"line":131,"column":11},"end":{"line":131,"column":16}},"loc":{"start":{"line":131,"column":23},"end":{"line":131,"column":59}},"line":131},"25":{"name":"(anonymous_25)","decl":{"start":{"line":132,"column":11},"end":{"line":132,"column":19}},"loc":{"start":{"line":132,"column":25},"end":{"line":132,"column":36}},"line":132},"26":{"name":"(anonymous_26)","decl":{"start":{"line":133,"column":11},"end":{"line":133,"column":17}},"loc":{"start":{"line":133,"column":26},"end":{"line":133,"column":43}},"line":133},"27":{"name":"(anonymous_27)","decl":{"start":{"line":134,"column":11},"end":{"line":134,"column":16}},"loc":{"start":{"line":134,"column":22},"end":{"line":134,"column":25}},"line":134},"28":{"name":"(anonymous_28)","decl":{"start":{"line":152,"column":26},"end":{"line":152,"column":33}},"loc":{"start":{"line":152,"column":51},"end":{"line":177,"column":5}},"line":152},"29":{"name":"(anonymous_29)","decl":{"start":{"line":157,"column":20},"end":{"line":157,"column":26}},"loc":{"start":{"line":157,"column":32},"end":{"line":157,"column":57}},"line":157},"30":{"name":"(anonymous_30)","decl":{"start":{"line":188,"column":26},"end":{"line":188,"column":38}},"loc":{"start":{"line":188,"column":38},"end":{"line":202,"column":5}},"line":188},"31":{"name":"(anonymous_31)","decl":{"start":{"line":192,"column":44},"end":{"line":192,"column":49}},"loc":{"start":{"line":192,"column":55},"end":{"line":192,"column":75}},"line":192},"32":{"name":"(anonymous_32)","decl":{"start":{"line":194,"column":26},"end":{"line":194,"column":31}},"loc":{"start":{"line":194,"column":38},"end":{"line":199,"column":10}},"line":194},"33":{"name":"(anonymous_33)","decl":{"start":{"line":219,"column":28},"end":{"line":219,"column":35}},"loc":{"start":{"line":219,"column":63},"end":{"line":242,"column":5}},"line":219},"34":{"name":"(anonymous_34)","decl":{"start":{"line":221,"column":42},"end":{"line":221,"column":47}},"loc":{"start":{"line":221,"column":53},"end":{"line":221,"column":72}},"line":221},"35":{"name":"(anonymous_35)","decl":{"start":{"line":222,"column":46},"end":{"line":222,"column":51}},"loc":{"start":{"line":222,"column":57},"end":{"line":222,"column":66}},"line":222},"36":{"name":"(anonymous_36)","decl":{"start":{"line":224,"column":9},"end":{"line":224,"column":17}},"loc":{"start":{"line":224,"column":23},"end":{"line":224,"column":37}},"line":224},"37":{"name":"(anonymous_37)","decl":{"start":{"line":225,"column":9},"end":{"line":225,"column":14}},"loc":{"start":{"line":225,"column":20},"end":{"line":236,"column":9}},"line":225},"38":{"name":"(anonymous_38)","decl":{"start":{"line":239,"column":26},"end":{"line":239,"column":34}},"loc":{"start":{"line":239,"column":34},"end":{"line":239,"column":74}},"line":239}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":16},"end":{"line":24,"column":28}},"type":"binary-expr","locations":[{"start":{"line":24,"column":16},"end":{"line":24,"column":26}},{"start":{"line":24,"column":26},"end":{"line":24,"column":28}}],"line":24},"1":{"loc":{"start":{"line":29,"column":17},"end":{"line":29,"column":30}},"type":"binary-expr","locations":[{"start":{"line":29,"column":17},"end":{"line":29,"column":28}},{"start":{"line":29,"column":28},"end":{"line":29,"column":30}}],"line":29},"2":{"loc":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"type":"if","locations":[{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},{"start":{},"end":{}}],"line":30},"3":{"loc":{"start":{"line":33,"column":4},"end":{"line":36,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":36,"column":null}},{"start":{"line":34,"column":9},"end":{"line":36,"column":null}}],"line":33},"4":{"loc":{"start":{"line":34,"column":9},"end":{"line":36,"column":null}},"type":"if","locations":[{"start":{"line":34,"column":9},"end":{"line":36,"column":null}},{"start":{"line":35,"column":9},"end":{"line":36,"column":null}}],"line":34},"5":{"loc":{"start":{"line":34,"column":13},"end":{"line":34,"column":69}},"type":"binary-expr","locations":[{"start":{"line":34,"column":13},"end":{"line":34,"column":33}},{"start":{"line":34,"column":33},"end":{"line":34,"column":69}}],"line":34},"6":{"loc":{"start":{"line":35,"column":9},"end":{"line":36,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":9},"end":{"line":36,"column":null}},{"start":{"line":36,"column":9},"end":{"line":36,"column":null}}],"line":35},"7":{"loc":{"start":{"line":35,"column":13},"end":{"line":35,"column":89}},"type":"binary-expr","locations":[{"start":{"line":35,"column":13},"end":{"line":35,"column":33}},{"start":{"line":35,"column":33},"end":{"line":35,"column":54}},{"start":{"line":35,"column":54},"end":{"line":35,"column":89}}],"line":35},"8":{"loc":{"start":{"line":68,"column":8},"end":{"line":68,"column":null}},"type":"binary-expr","locations":[{"start":{"line":68,"column":8},"end":{"line":68,"column":17}},{"start":{"line":68,"column":17},"end":{"line":68,"column":null}}],"line":68},"9":{"loc":{"start":{"line":70,"column":8},"end":{"line":70,"column":null}},"type":"cond-expr","locations":[{"start":{"line":70,"column":30},"end":{"line":70,"column":103}},{"start":{"line":70,"column":103},"end":{"line":70,"column":null}}],"line":70},"10":{"loc":{"start":{"line":98,"column":6},"end":{"line":113,"column":null}},"type":"if","locations":[{"start":{"line":98,"column":6},"end":{"line":113,"column":null}},{"start":{},"end":{}}],"line":98},"11":{"loc":{"start":{"line":98,"column":10},"end":{"line":98,"column":69}},"type":"binary-expr","locations":[{"start":{"line":98,"column":10},"end":{"line":98,"column":21}},{"start":{"line":98,"column":21},"end":{"line":98,"column":30}},{"start":{"line":98,"column":30},"end":{"line":98,"column":40}},{"start":{"line":98,"column":40},"end":{"line":98,"column":50}},{"start":{"line":98,"column":50},"end":{"line":98,"column":61}},{"start":{"line":98,"column":61},"end":{"line":98,"column":69}}],"line":98},"12":{"loc":{"start":{"line":102,"column":34},"end":{"line":102,"column":65}},"type":"binary-expr","locations":[{"start":{"line":102,"column":34},"end":{"line":102,"column":60}},{"start":{"line":102,"column":60},"end":{"line":102,"column":65}}],"line":102},"13":{"loc":{"start":{"line":103,"column":10},"end":{"line":103,"column":null}},"type":"if","locations":[{"start":{"line":103,"column":10},"end":{"line":103,"column":null}},{"start":{},"end":{}}],"line":103},"14":{"loc":{"start":{"line":103,"column":42},"end":{"line":103,"column":69}},"type":"binary-expr","locations":[{"start":{"line":103,"column":42},"end":{"line":103,"column":64}},{"start":{"line":103,"column":64},"end":{"line":103,"column":69}}],"line":103},"15":{"loc":{"start":{"line":115,"column":6},"end":{"line":115,"column":null}},"type":"if","locations":[{"start":{"line":115,"column":6},"end":{"line":115,"column":null}},{"start":{},"end":{}}],"line":115},"16":{"loc":{"start":{"line":116,"column":6},"end":{"line":116,"column":null}},"type":"if","locations":[{"start":{"line":116,"column":6},"end":{"line":116,"column":null}},{"start":{},"end":{}}],"line":116},"17":{"loc":{"start":{"line":117,"column":6},"end":{"line":120,"column":null}},"type":"if","locations":[{"start":{"line":117,"column":6},"end":{"line":120,"column":null}},{"start":{},"end":{}}],"line":117},"18":{"loc":{"start":{"line":119,"column":33},"end":{"line":119,"column":45}},"type":"binary-expr","locations":[{"start":{"line":119,"column":33},"end":{"line":119,"column":43}},{"start":{"line":119,"column":43},"end":{"line":119,"column":45}}],"line":119},"19":{"loc":{"start":{"line":121,"column":6},"end":{"line":124,"column":null}},"type":"if","locations":[{"start":{"line":121,"column":6},"end":{"line":124,"column":null}},{"start":{},"end":{}}],"line":121},"20":{"loc":{"start":{"line":123,"column":33},"end":{"line":123,"column":46}},"type":"binary-expr","locations":[{"start":{"line":123,"column":33},"end":{"line":123,"column":44}},{"start":{"line":123,"column":44},"end":{"line":123,"column":46}}],"line":123},"21":{"loc":{"start":{"line":125,"column":6},"end":{"line":128,"column":null}},"type":"if","locations":[{"start":{"line":125,"column":6},"end":{"line":128,"column":null}},{"start":{},"end":{}}],"line":125},"22":{"loc":{"start":{"line":129,"column":6},"end":{"line":135,"column":null}},"type":"if","locations":[{"start":{"line":129,"column":6},"end":{"line":135,"column":null}},{"start":{},"end":{}}],"line":129},"23":{"loc":{"start":{"line":136,"column":44},"end":{"line":136,"column":57}},"type":"binary-expr","locations":[{"start":{"line":136,"column":44},"end":{"line":136,"column":53}},{"start":{"line":136,"column":53},"end":{"line":136,"column":57}}],"line":136},"24":{"loc":{"start":{"line":136,"column":57},"end":{"line":136,"column":68}},"type":"binary-expr","locations":[{"start":{"line":136,"column":57},"end":{"line":136,"column":67}},{"start":{"line":136,"column":67},"end":{"line":136,"column":68}}],"line":136},"25":{"loc":{"start":{"line":153,"column":6},"end":{"line":155,"column":null}},"type":"if","locations":[{"start":{"line":153,"column":6},"end":{"line":155,"column":null}},{"start":{},"end":{}}],"line":153},"26":{"loc":{"start":{"line":158,"column":6},"end":{"line":158,"column":null}},"type":"if","locations":[{"start":{"line":158,"column":6},"end":{"line":158,"column":null}},{"start":{},"end":{}}],"line":158},"27":{"loc":{"start":{"line":161,"column":18},"end":{"line":161,"column":null}},"type":"binary-expr","locations":[{"start":{"line":161,"column":18},"end":{"line":161,"column":39}},{"start":{"line":161,"column":39},"end":{"line":161,"column":null}}],"line":161},"28":{"loc":{"start":{"line":162,"column":24},"end":{"line":162,"column":null}},"type":"cond-expr","locations":[{"start":{"line":162,"column":41},"end":{"line":162,"column":57}},{"start":{"line":162,"column":57},"end":{"line":162,"column":null}}],"line":162},"29":{"loc":{"start":{"line":169,"column":12},"end":{"line":169,"column":null}},"type":"cond-expr","locations":[{"start":{"line":169,"column":22},"end":{"line":169,"column":43}},{"start":{"line":169,"column":43},"end":{"line":169,"column":null}}],"line":169},"30":{"loc":{"start":{"line":170,"column":12},"end":{"line":170,"column":null}},"type":"cond-expr","locations":[{"start":{"line":170,"column":35},"end":{"line":170,"column":60}},{"start":{"line":170,"column":60},"end":{"line":170,"column":null}}],"line":170},"31":{"loc":{"start":{"line":171,"column":12},"end":{"line":171,"column":null}},"type":"cond-expr","locations":[{"start":{"line":171,"column":34},"end":{"line":171,"column":57}},{"start":{"line":171,"column":57},"end":{"line":171,"column":null}}],"line":171},"32":{"loc":{"start":{"line":191,"column":27},"end":{"line":191,"column":null}},"type":"if","locations":[{"start":{"line":191,"column":27},"end":{"line":191,"column":null}},{"start":{},"end":{}}],"line":191},"33":{"loc":{"start":{"line":191,"column":59},"end":{"line":191,"column":86}},"type":"binary-expr","locations":[{"start":{"line":191,"column":59},"end":{"line":191,"column":81}},{"start":{"line":191,"column":81},"end":{"line":191,"column":86}}],"line":191},"34":{"loc":{"start":{"line":197,"column":14},"end":{"line":197,"column":null}},"type":"cond-expr","locations":[{"start":{"line":197,"column":27},"end":{"line":197,"column":74}},{"start":{"line":197,"column":74},"end":{"line":197,"column":null}}],"line":197},"35":{"loc":{"start":{"line":197,"column":36},"end":{"line":197,"column":70}},"type":"binary-expr","locations":[{"start":{"line":197,"column":36},"end":{"line":197,"column":65}},{"start":{"line":197,"column":65},"end":{"line":197,"column":70}}],"line":197},"36":{"loc":{"start":{"line":198,"column":20},"end":{"line":198,"column":null}},"type":"binary-expr","locations":[{"start":{"line":198,"column":20},"end":{"line":198,"column":42}},{"start":{"line":198,"column":42},"end":{"line":198,"column":null}}],"line":198},"37":{"loc":{"start":{"line":227,"column":34},"end":{"line":227,"column":null}},"type":"binary-expr","locations":[{"start":{"line":227,"column":34},"end":{"line":227,"column":48}},{"start":{"line":227,"column":48},"end":{"line":227,"column":null}}],"line":227},"38":{"loc":{"start":{"line":227,"column":48},"end":{"line":227,"column":null}},"type":"cond-expr","locations":[{"start":{"line":227,"column":70},"end":{"line":227,"column":125}},{"start":{"line":227,"column":125},"end":{"line":227,"column":null}}],"line":227},"39":{"loc":{"start":{"line":227,"column":70},"end":{"line":227,"column":125}},"type":"binary-expr","locations":[{"start":{"line":227,"column":70},"end":{"line":227,"column":117}},{"start":{"line":227,"column":117},"end":{"line":227,"column":125}}],"line":227},"40":{"loc":{"start":{"line":230,"column":18},"end":{"line":230,"column":null}},"type":"binary-expr","locations":[{"start":{"line":230,"column":18},"end":{"line":230,"column":36}},{"start":{"line":230,"column":36},"end":{"line":230,"column":46}},{"start":{"line":230,"column":46},"end":{"line":230,"column":null}}],"line":230},"41":{"loc":{"start":{"line":233,"column":18},"end":{"line":233,"column":null}},"type":"cond-expr","locations":[{"start":{"line":233,"column":37},"end":{"line":233,"column":78}},{"start":{"line":233,"column":78},"end":{"line":233,"column":null}}],"line":233},"42":{"loc":{"start":{"line":233,"column":37},"end":{"line":233,"column":78}},"type":"binary-expr","locations":[{"start":{"line":233,"column":37},"end":{"line":233,"column":70}},{"start":{"line":233,"column":70},"end":{"line":233,"column":78}}],"line":233},"43":{"loc":{"start":{"line":234,"column":16},"end":{"line":234,"column":null}},"type":"cond-expr","locations":[{"start":{"line":234,"column":37},"end":{"line":234,"column":80}},{"start":{"line":234,"column":80},"end":{"line":234,"column":null}}],"line":234},"44":{"loc":{"start":{"line":237,"column":6},"end":{"line":240,"column":null}},"type":"if","locations":[{"start":{"line":237,"column":6},"end":{"line":240,"column":null}},{"start":{},"end":{}}],"line":237},"45":{"loc":{"start":{"line":239,"column":41},"end":{"line":239,"column":53}},"type":"binary-expr","locations":[{"start":{"line":239,"column":41},"end":{"line":239,"column":51}},{"start":{"line":239,"column":51},"end":{"line":239,"column":53}}],"line":239},"46":{"loc":{"start":{"line":241,"column":35},"end":{"line":241,"column":48}},"type":"binary-expr","locations":[{"start":{"line":241,"column":35},"end":{"line":241,"column":44}},{"start":{"line":241,"column":44},"end":{"line":241,"column":48}}],"line":241},"47":{"loc":{"start":{"line":241,"column":48},"end":{"line":241,"column":59}},"type":"binary-expr","locations":[{"start":{"line":241,"column":48},"end":{"line":241,"column":58}},{"start":{"line":241,"column":58},"end":{"line":241,"column":59}}],"line":241}},"s":{"0":11,"1":19,"2":19,"3":19,"4":19,"5":19,"6":19,"7":4,"8":19,"9":2,"10":19,"11":19,"12":1,"13":18,"14":18,"15":21,"16":4,"17":17,"18":3,"19":1,"20":16,"21":1,"22":1,"23":15,"24":3,"25":16,"26":48,"27":42,"28":6,"29":6,"30":19,"31":19,"32":0,"33":4,"34":6,"35":42,"36":7,"37":7,"38":1,"39":1,"40":1,"41":4,"42":4,"43":4,"44":1,"45":2,"46":4,"47":6,"48":1,"49":6,"50":3,"51":11,"52":6,"53":1,"54":2,"55":6,"56":1,"57":1,"58":4,"59":6,"60":1,"61":1,"62":2,"63":6,"64":1,"65":1,"66":2,"67":1,"68":6,"69":0,"70":0,"71":0,"72":0,"73":0,"74":6,"75":42,"76":5,"77":1,"78":4,"79":4,"80":8,"81":4,"82":1,"83":3,"84":3,"85":2,"86":2,"87":3,"88":42,"89":3,"90":3,"91":3,"92":4,"93":4,"94":3,"95":1,"96":3,"97":2,"98":42,"99":2,"100":2,"101":2,"102":2,"103":5,"104":2,"105":5,"106":4,"107":4,"108":2,"109":1,"110":1,"111":2,"112":2},"f":{"0":11,"1":19,"2":4,"3":2,"4":3,"5":1,"6":42,"7":16,"8":48,"9":6,"10":19,"11":19,"12":0,"13":4,"14":7,"15":2,"16":4,"17":6,"18":11,"19":2,"20":4,"21":2,"22":2,"23":1,"24":0,"25":0,"26":0,"27":0,"28":5,"29":8,"30":3,"31":1,"32":2,"33":2,"34":2,"35":5,"36":5,"37":4,"38":2},"b":{"0":[19,0],"1":[19,15],"2":[1,18],"3":[4,17],"4":[1,16],"5":[17,17],"6":[1,15],"7":[16,16,16],"8":[6,6],"9":[2,4],"10":[1,6],"11":[7,4,3,2,1,1],"12":[4,3],"13":[4,0],"14":[4,3],"15":[3,3],"16":[1,5],"17":[1,5],"18":[4,0],"19":[1,5],"20":[2,0],"21":[1,5],"22":[0,6],"23":[6,6],"24":[7,6],"25":[1,4],"26":[1,3],"27":[2,0],"28":[1,1],"29":[2,1],"30":[1,2],"31":[1,2],"32":[4,0],"33":[4,3],"34":[1,1],"35":[1,0],"36":[2,1],"37":[4,2],"38":[1,1],"39":[1,0],"40":[4,3,0],"41":[3,1],"42":[3,0],"43":[1,3],"44":[1,1],"45":[2,1],"46":[2,2],"47":[2,2]},"meta":{"lastBranch":48,"lastFunction":39,"lastStatement":113,"seen":{"f:9:9:9:17":0,"s:10:2:16:Infinity":0,"f:19:9:19:20":1,"s:20:12:20:Infinity":1,"s:21:17:21:Infinity":2,"s:22:13:22:Infinity":3,"s:23:15:23:Infinity":4,"s:24:8:24:Infinity":5,"b:24:16:24:26:24:26:24:28":0,"s:27:18:27:Infinity":6,"f:27:28:27:33":2,"s:27:39:27:54":7,"s:28:17:28:Infinity":8,"f:28:26:28:31":3,"s:28:37:28:52":9,"s:29:8:29:Infinity":10,"b:29:17:29:28:29:28:29:30":1,"b:30:2:30:Infinity:undefined:undefined:undefined:undefined":2,"s:30:2:30:Infinity":11,"s:30:16:30:Infinity":12,"s:31:14:31:Infinity":13,"s:32:2:37:Infinity":14,"b:33:4:36:Infinity:34:9:36:Infinity":3,"s:33:4:36:Infinity":15,"s:33:24:33:Infinity":16,"b:34:9:36:Infinity:35:9:36:Infinity":4,"s:34:9:36:Infinity":17,"b:34:13:34:33:34:33:34:69":5,"f:34:41:34:47":4,"s:34:53:34:66":18,"s:34:69:34:Infinity":19,"b:35:9:36:Infinity:36:9:36:Infinity":6,"s:35:9:36:Infinity":20,"b:35:13:35:33:35:33:35:54:35:54:35:89":7,"f:35:61:35:67":5,"s:35:73:35:86":21,"s:35:89:35:Infinity":22,"s:36:9:36:Infinity":23,"s:38:2:38:Infinity":24,"f:41:16:41:36":6,"s:42:18:43:Infinity":25,"f:42:18:42:Infinity":7,"f:43:32:43:40":8,"s:43:46:43:85":26,"s:45:2:73:Infinity":27,"f:59:31:59:38":9,"s:60:18:60:Infinity":28,"s:61:21:65:Infinity":29,"f:62:9:62:14":10,"s:62:21:62:56":30,"f:63:9:63:17":11,"s:63:23:63:34":31,"f:64:9:64:15":12,"s:64:24:64:41":32,"f:65:9:65:14":13,"s:65:20:65:32":33,"s:66:6:71:Infinity":34,"b:68:8:68:17:68:17:68:Infinity":8,"b:70:30:70:103:70:103:70:Infinity":9,"s:75:2:138:Infinity":35,"f:95:29:95:36":14,"s:96:16:96:Infinity":36,"b:98:6:113:Infinity:undefined:undefined:undefined:undefined":10,"s:98:6:113:Infinity":37,"b:98:10:98:21:98:21:98:30:98:30:98:40:98:40:98:50:98:50:98:61:98:61:98:69":11,"s:99:25:99:Infinity":38,"s:100:23:100:Infinity":39,"s:101:8:104:Infinity":40,"s:102:10:102:Infinity":41,"b:102:34:102:60:102:60:102:65":12,"b:103:10:103:Infinity:undefined:undefined:undefined:undefined":13,"s:103:10:103:Infinity":42,"s:103:22:103:Infinity":43,"b:103:42:103:64:103:64:103:69":14,"s:105:14:106:Infinity":44,"f:105:14:105:21":15,"s:106:10:106:Infinity":45,"f:106:27:106:33":16,"s:106:42:106:53":46,"f:106:68:106:73":17,"s:106:85:106:96":47,"s:107:8:112:Infinity":48,"b:115:6:115:Infinity:undefined:undefined:undefined:undefined":15,"s:115:6:115:Infinity":49,"s:115:18:115:Infinity":50,"f:115:28:115:36":18,"s:115:42:115:82":51,"b:116:6:116:Infinity:undefined:undefined:undefined:undefined":16,"s:116:6:116:Infinity":52,"s:116:17:116:Infinity":53,"f:116:27:116:35":19,"s:116:41:116:58":54,"b:117:6:120:Infinity:undefined:undefined:undefined:undefined":17,"s:117:6:120:Infinity":55,"s:118:18:118:Infinity":56,"s:119:8:119:Infinity":57,"f:119:18:119:26":20,"s:119:26:119:66":58,"b:119:33:119:43:119:43:119:45":18,"b:121:6:124:Infinity:undefined:undefined:undefined:undefined":19,"s:121:6:124:Infinity":59,"s:122:18:122:Infinity":60,"s:123:8:123:Infinity":61,"f:123:18:123:26":21,"s:123:26:123:67":62,"b:123:33:123:44:123:44:123:46":20,"b:125:6:128:Infinity:undefined:undefined:undefined:undefined":21,"s:125:6:128:Infinity":63,"s:126:18:126:Infinity":64,"s:127:8:127:Infinity":65,"f:127:18:127:26":22,"s:127:32:127:75":66,"f:127:41:127:47":23,"s:127:53:127:74":67,"b:129:6:135:Infinity:undefined:undefined:undefined:undefined":22,"s:129:6:135:Infinity":68,"s:130:8:134:Infinity":69,"f:131:11:131:16":24,"s:131:23:131:59":70,"f:132:11:132:19":25,"s:132:25:132:36":71,"f:133:11:133:17":26,"s:133:26:133:43":72,"f:134:11:134:16":27,"s:134:22:134:25":73,"s:136:6:136:Infinity":74,"b:136:44:136:53:136:53:136:57":23,"b:136:57:136:67:136:67:136:68":24,"s:140:2:178:Infinity":75,"f:152:26:152:33":28,"b:153:6:155:Infinity:undefined:undefined:undefined:undefined":25,"s:153:6:155:Infinity":76,"s:154:8:154:Infinity":77,"s:156:18:156:Infinity":78,"s:157:16:157:Infinity":79,"f:157:20:157:26":29,"s:157:32:157:57":80,"b:158:6:158:Infinity:undefined:undefined:undefined:undefined":26,"s:158:6:158:Infinity":81,"s:158:14:158:Infinity":82,"s:159:50:159:Infinity":83,"s:160:6:163:Infinity":84,"s:161:18:161:Infinity":85,"b:161:18:161:39:161:39:161:Infinity":27,"s:162:8:162:Infinity":86,"b:162:41:162:57:162:57:162:Infinity":28,"s:164:6:176:Infinity":87,"b:169:22:169:43:169:43:169:Infinity":29,"b:170:35:170:60:170:60:170:Infinity":30,"b:171:34:171:57:171:57:171:Infinity":31,"s:180:2:203:Infinity":88,"f:188:26:188:38":30,"s:189:26:189:Infinity":89,"s:190:21:190:Infinity":90,"s:191:6:191:Infinity":91,"b:191:27:191:Infinity:undefined:undefined:undefined:undefined":32,"s:191:27:191:Infinity":92,"s:191:39:191:Infinity":93,"b:191:59:191:81:191:81:191:86":33,"s:192:24:192:Infinity":94,"f:192:44:192:49":31,"s:192:55:192:75":95,"s:193:6:201:Infinity":96,"f:194:26:194:31":32,"s:194:38:199:10":97,"b:197:27:197:74:197:74:197:Infinity":34,"b:197:36:197:65:197:65:197:70":35,"b:198:20:198:42:198:42:198:Infinity":36,"s:205:2:243:Infinity":98,"f:219:28:219:35":33,"s:220:19:220:Infinity":99,"s:221:23:221:Infinity":100,"f:221:42:221:47":34,"s:221:53:221:72":101,"s:222:25:222:Infinity":102,"f:222:46:222:51":35,"s:222:57:222:66":103,"s:223:20:236:Infinity":104,"f:224:9:224:17":36,"s:224:23:224:37":105,"f:225:9:225:14":37,"s:227:34:227:Infinity":106,"b:227:34:227:48:227:48:227:Infinity":37,"b:227:70:227:125:227:125:227:Infinity":38,"b:227:70:227:117:227:117:227:125":39,"s:228:10:235:Infinity":107,"b:230:18:230:36:230:36:230:46:230:46:230:Infinity":40,"b:233:37:233:78:233:78:233:Infinity":41,"b:233:37:233:70:233:70:233:78":42,"b:234:37:234:80:234:80:234:Infinity":43,"b:237:6:240:Infinity:undefined:undefined:undefined:undefined":44,"s:237:6:240:Infinity":108,"s:238:18:238:Infinity":109,"s:239:8:239:Infinity":110,"f:239:26:239:34":38,"s:239:34:239:74":111,"b:239:41:239:51:239:51:239:53":45,"s:241:6:241:Infinity":112,"b:241:35:241:44:241:44:241:48":46,"b:241:48:241:58:241:58:241:59":47},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/explain.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/explain.ts","statementMap":{"0":{"start":{"line":8,"column":18},"end":{"line":8,"column":null}},"1":{"start":{"line":10,"column":18},"end":{"line":10,"column":null}},"2":{"start":{"line":11,"column":17},"end":{"line":11,"column":null}},"3":{"start":{"line":35,"column":2},"end":{"line":156,"column":null}},"4":{"start":{"line":50,"column":6},"end":{"line":52,"column":null}},"5":{"start":{"line":51,"column":8},"end":{"line":51,"column":null}},"6":{"start":{"line":53,"column":19},"end":{"line":53,"column":null}},"7":{"start":{"line":54,"column":6},"end":{"line":54,"column":null}},"8":{"start":{"line":54,"column":42},"end":{"line":54,"column":null}},"9":{"start":{"line":55,"column":20},"end":{"line":55,"column":null}},"10":{"start":{"line":56,"column":6},"end":{"line":61,"column":null}},"11":{"start":{"line":57,"column":18},"end":{"line":57,"column":null}},"12":{"start":{"line":57,"column":36},"end":{"line":57,"column":61}},"13":{"start":{"line":58,"column":8},"end":{"line":58,"column":null}},"14":{"start":{"line":58,"column":16},"end":{"line":58,"column":null}},"15":{"start":{"line":59,"column":8},"end":{"line":59,"column":null}},"16":{"start":{"line":60,"column":8},"end":{"line":60,"column":null}},"17":{"start":{"line":60,"column":38},"end":{"line":60,"column":null}},"18":{"start":{"line":67,"column":29},"end":{"line":71,"column":null}},"19":{"start":{"line":69,"column":25},"end":{"line":69,"column":133}},"20":{"start":{"line":70,"column":22},"end":{"line":70,"column":55}},"21":{"start":{"line":72,"column":12},"end":{"line":80,"column":null}},"22":{"start":{"line":73,"column":18},"end":{"line":73,"column":null}},"23":{"start":{"line":74,"column":8},"end":{"line":79,"column":null}},"24":{"start":{"line":82,"column":26},"end":{"line":87,"column":null}},"25":{"start":{"line":83,"column":10},"end":{"line":87,"column":null}},"26":{"start":{"line":89,"column":12},"end":{"line":102,"column":null}},"27":{"start":{"line":90,"column":36},"end":{"line":90,"column":null}},"28":{"start":{"line":91,"column":23},"end":{"line":91,"column":null}},"29":{"start":{"line":92,"column":8},"end":{"line":100,"column":null}},"30":{"start":{"line":93,"column":20},"end":{"line":93,"column":null}},"31":{"start":{"line":94,"column":10},"end":{"line":94,"column":null}},"32":{"start":{"line":94,"column":35},"end":{"line":94,"column":null}},"33":{"start":{"line":95,"column":20},"end":{"line":95,"column":null}},"34":{"start":{"line":96,"column":10},"end":{"line":99,"column":null}},"35":{"start":{"line":97,"column":12},"end":{"line":97,"column":null}},"36":{"start":{"line":98,"column":12},"end":{"line":98,"column":null}},"37":{"start":{"line":101,"column":8},"end":{"line":101,"column":null}},"38":{"start":{"line":104,"column":52},"end":{"line":104,"column":null}},"39":{"start":{"line":105,"column":19},"end":{"line":105,"column":null}},"40":{"start":{"line":106,"column":22},"end":{"line":106,"column":null}},"41":{"start":{"line":108,"column":6},"end":{"line":143,"column":null}},"42":{"start":{"line":108,"column":23},"end":{"line":108,"column":26}},"43":{"start":{"line":109,"column":22},"end":{"line":109,"column":null}},"44":{"start":{"line":110,"column":8},"end":{"line":120,"column":null}},"45":{"start":{"line":111,"column":10},"end":{"line":118,"column":null}},"46":{"start":{"line":112,"column":12},"end":{"line":117,"column":null}},"47":{"start":{"line":119,"column":10},"end":{"line":119,"column":null}},"48":{"start":{"line":121,"column":8},"end":{"line":129,"column":null}},"49":{"start":{"line":131,"column":22},"end":{"line":131,"column":null}},"50":{"start":{"line":132,"column":8},"end":{"line":132,"column":null}},"51":{"start":{"line":132,"column":39},"end":{"line":132,"column":null}},"52":{"start":{"line":133,"column":8},"end":{"line":136,"column":null}},"53":{"start":{"line":134,"column":10},"end":{"line":134,"column":null}},"54":{"start":{"line":135,"column":10},"end":{"line":135,"column":null}},"55":{"start":{"line":137,"column":8},"end":{"line":140,"column":null}},"56":{"start":{"line":141,"column":8},"end":{"line":141,"column":null}},"57":{"start":{"line":142,"column":8},"end":{"line":142,"column":null}},"58":{"start":{"line":145,"column":6},"end":{"line":154,"column":null}},"59":{"start":{"line":151,"column":28},"end":{"line":151,"column":79}},"60":{"start":{"line":168,"column":2},"end":{"line":168,"column":null}},"61":{"start":{"line":168,"column":26},"end":{"line":168,"column":null}},"62":{"start":{"line":169,"column":2},"end":{"line":169,"column":null}},"63":{"start":{"line":169,"column":28},"end":{"line":169,"column":null}},"64":{"start":{"line":169,"column":59},"end":{"line":169,"column":null}},"65":{"start":{"line":170,"column":15},"end":{"line":170,"column":null}},"66":{"start":{"line":171,"column":15},"end":{"line":171,"column":null}},"67":{"start":{"line":172,"column":2},"end":{"line":172,"column":null}},"68":{"start":{"line":172,"column":106},"end":{"line":172,"column":null}},"69":{"start":{"line":173,"column":2},"end":{"line":173,"column":null}},"70":{"start":{"line":173,"column":102},"end":{"line":173,"column":null}},"71":{"start":{"line":174,"column":2},"end":{"line":174,"column":null}},"72":{"start":{"line":174,"column":24},"end":{"line":174,"column":null}},"73":{"start":{"line":175,"column":2},"end":{"line":175,"column":null}}},"fnMap":{"0":{"name":"registerExplainTools","decl":{"start":{"line":34,"column":16},"end":{"line":34,"column":37}},"loc":{"start":{"line":34,"column":84},"end":{"line":157,"column":null}},"line":34},"1":{"name":"(anonymous_1)","decl":{"start":{"line":49,"column":29},"end":{"line":49,"column":36}},"loc":{"start":{"line":49,"column":58},"end":{"line":155,"column":5}},"line":49},"2":{"name":"(anonymous_2)","decl":{"start":{"line":57,"column":24},"end":{"line":57,"column":30}},"loc":{"start":{"line":57,"column":36},"end":{"line":57,"column":61}},"line":57},"3":{"name":"(anonymous_3)","decl":{"start":{"line":69,"column":11},"end":{"line":69,"column":19}},"loc":{"start":{"line":69,"column":25},"end":{"line":69,"column":133}},"line":69},"4":{"name":"(anonymous_4)","decl":{"start":{"line":70,"column":11},"end":{"line":70,"column":16}},"loc":{"start":{"line":70,"column":22},"end":{"line":70,"column":55}},"line":70},"5":{"name":"(anonymous_5)","decl":{"start":{"line":72,"column":12},"end":{"line":72,"column":24}},"loc":{"start":{"line":72,"column":68},"end":{"line":80,"column":null}},"line":72},"6":{"name":"(anonymous_6)","decl":{"start":{"line":82,"column":26},"end":{"line":82,"column":33}},"loc":{"start":{"line":83,"column":10},"end":{"line":87,"column":null}},"line":83},"7":{"name":"(anonymous_7)","decl":{"start":{"line":89,"column":12},"end":{"line":89,"column":23}},"loc":{"start":{"line":89,"column":64},"end":{"line":102,"column":null}},"line":89},"8":{"name":"(anonymous_8)","decl":{"start":{"line":151,"column":16},"end":{"line":151,"column":22}},"loc":{"start":{"line":151,"column":28},"end":{"line":151,"column":79}},"line":151},"9":{"name":"classifyCause","decl":{"start":{"line":167,"column":16},"end":{"line":167,"column":30}},"loc":{"start":{"line":167,"column":77},"end":{"line":176,"column":null}},"line":167}},"branchMap":{"0":{"loc":{"start":{"line":50,"column":6},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":50,"column":6},"end":{"line":52,"column":null}},{"start":{},"end":{}}],"line":50},"1":{"loc":{"start":{"line":53,"column":19},"end":{"line":53,"column":null}},"type":"cond-expr","locations":[{"start":{"line":53,"column":24},"end":{"line":53,"column":41}},{"start":{"line":53,"column":41},"end":{"line":53,"column":null}}],"line":53},"2":{"loc":{"start":{"line":54,"column":6},"end":{"line":54,"column":null}},"type":"if","locations":[{"start":{"line":54,"column":6},"end":{"line":54,"column":null}},{"start":{},"end":{}}],"line":54},"3":{"loc":{"start":{"line":54,"column":10},"end":{"line":54,"column":42}},"type":"binary-expr","locations":[{"start":{"line":54,"column":10},"end":{"line":54,"column":16}},{"start":{"line":54,"column":16},"end":{"line":54,"column":42}}],"line":54},"4":{"loc":{"start":{"line":56,"column":6},"end":{"line":61,"column":null}},"type":"if","locations":[{"start":{"line":56,"column":6},"end":{"line":61,"column":null}},{"start":{},"end":{}}],"line":56},"5":{"loc":{"start":{"line":58,"column":8},"end":{"line":58,"column":null}},"type":"if","locations":[{"start":{"line":58,"column":8},"end":{"line":58,"column":null}},{"start":{},"end":{}}],"line":58},"6":{"loc":{"start":{"line":60,"column":8},"end":{"line":60,"column":null}},"type":"if","locations":[{"start":{"line":60,"column":8},"end":{"line":60,"column":null}},{"start":{},"end":{}}],"line":60},"7":{"loc":{"start":{"line":69,"column":25},"end":{"line":69,"column":133}},"type":"binary-expr","locations":[{"start":{"line":69,"column":25},"end":{"line":69,"column":50}},{"start":{"line":69,"column":50},"end":{"line":69,"column":93}},{"start":{"line":69,"column":93},"end":{"line":69,"column":133}}],"line":69},"8":{"loc":{"start":{"line":74,"column":15},"end":{"line":79,"column":null}},"type":"cond-expr","locations":[{"start":{"line":75,"column":12},"end":{"line":75,"column":null}},{"start":{"line":76,"column":12},"end":{"line":79,"column":null}}],"line":74},"9":{"loc":{"start":{"line":83,"column":10},"end":{"line":87,"column":null}},"type":"binary-expr","locations":[{"start":{"line":83,"column":10},"end":{"line":87,"column":15}},{"start":{"line":87,"column":15},"end":{"line":87,"column":null}}],"line":83},"10":{"loc":{"start":{"line":93,"column":20},"end":{"line":93,"column":null}},"type":"cond-expr","locations":[{"start":{"line":93,"column":50},"end":{"line":93,"column":92}},{"start":{"line":93,"column":92},"end":{"line":93,"column":null}}],"line":93},"11":{"loc":{"start":{"line":93,"column":50},"end":{"line":93,"column":92}},"type":"cond-expr","locations":[{"start":{"line":93,"column":66},"end":{"line":93,"column":75}},{"start":{"line":93,"column":75},"end":{"line":93,"column":92}}],"line":93},"12":{"loc":{"start":{"line":93,"column":110},"end":{"line":93,"column":122}},"type":"binary-expr","locations":[{"start":{"line":93,"column":110},"end":{"line":93,"column":120}},{"start":{"line":93,"column":120},"end":{"line":93,"column":122}}],"line":93},"13":{"loc":{"start":{"line":94,"column":10},"end":{"line":94,"column":null}},"type":"if","locations":[{"start":{"line":94,"column":10},"end":{"line":94,"column":null}},{"start":{},"end":{}}],"line":94},"14":{"loc":{"start":{"line":96,"column":10},"end":{"line":99,"column":null}},"type":"if","locations":[{"start":{"line":96,"column":10},"end":{"line":99,"column":null}},{"start":{},"end":{}}],"line":96},"15":{"loc":{"start":{"line":110,"column":8},"end":{"line":120,"column":null}},"type":"if","locations":[{"start":{"line":110,"column":8},"end":{"line":120,"column":null}},{"start":{},"end":{}}],"line":110},"16":{"loc":{"start":{"line":111,"column":10},"end":{"line":118,"column":null}},"type":"if","locations":[{"start":{"line":111,"column":10},"end":{"line":118,"column":null}},{"start":{},"end":{}}],"line":111},"17":{"loc":{"start":{"line":124,"column":14},"end":{"line":124,"column":null}},"type":"cond-expr","locations":[{"start":{"line":124,"column":42},"end":{"line":124,"column":67}},{"start":{"line":124,"column":67},"end":{"line":124,"column":null}}],"line":124},"18":{"loc":{"start":{"line":125,"column":14},"end":{"line":125,"column":null}},"type":"cond-expr","locations":[{"start":{"line":125,"column":30},"end":{"line":125,"column":67}},{"start":{"line":125,"column":67},"end":{"line":125,"column":null}}],"line":125},"19":{"loc":{"start":{"line":126,"column":14},"end":{"line":126,"column":null}},"type":"cond-expr","locations":[{"start":{"line":126,"column":38},"end":{"line":126,"column":91}},{"start":{"line":126,"column":91},"end":{"line":126,"column":null}}],"line":126},"20":{"loc":{"start":{"line":127,"column":14},"end":{"line":127,"column":null}},"type":"cond-expr","locations":[{"start":{"line":127,"column":38},"end":{"line":127,"column":115}},{"start":{"line":127,"column":115},"end":{"line":127,"column":null}}],"line":127},"21":{"loc":{"start":{"line":127,"column":56},"end":{"line":127,"column":84}},"type":"binary-expr","locations":[{"start":{"line":127,"column":56},"end":{"line":127,"column":80}},{"start":{"line":127,"column":80},"end":{"line":127,"column":84}}],"line":127},"22":{"loc":{"start":{"line":128,"column":14},"end":{"line":128,"column":null}},"type":"cond-expr","locations":[{"start":{"line":128,"column":38},"end":{"line":128,"column":80}},{"start":{"line":128,"column":80},"end":{"line":128,"column":null}}],"line":128},"23":{"loc":{"start":{"line":131,"column":22},"end":{"line":131,"column":null}},"type":"cond-expr","locations":[{"start":{"line":131,"column":68},"end":{"line":131,"column":94}},{"start":{"line":131,"column":94},"end":{"line":131,"column":null}}],"line":131},"24":{"loc":{"start":{"line":132,"column":8},"end":{"line":132,"column":null}},"type":"if","locations":[{"start":{"line":132,"column":8},"end":{"line":132,"column":null}},{"start":{},"end":{}}],"line":132},"25":{"loc":{"start":{"line":132,"column":12},"end":{"line":132,"column":39}},"type":"binary-expr","locations":[{"start":{"line":132,"column":12},"end":{"line":132,"column":22}},{"start":{"line":132,"column":22},"end":{"line":132,"column":39}}],"line":132},"26":{"loc":{"start":{"line":133,"column":8},"end":{"line":136,"column":null}},"type":"if","locations":[{"start":{"line":133,"column":8},"end":{"line":136,"column":null}},{"start":{},"end":{}}],"line":133},"27":{"loc":{"start":{"line":139,"column":14},"end":{"line":139,"column":null}},"type":"cond-expr","locations":[{"start":{"line":139,"column":45},"end":{"line":139,"column":94}},{"start":{"line":139,"column":94},"end":{"line":139,"column":null}}],"line":139},"28":{"loc":{"start":{"line":151,"column":10},"end":{"line":153,"column":null}},"type":"cond-expr","locations":[{"start":{"line":152,"column":12},"end":{"line":152,"column":null}},{"start":{"line":153,"column":12},"end":{"line":153,"column":null}}],"line":151},"29":{"loc":{"start":{"line":151,"column":35},"end":{"line":151,"column":52}},"type":"binary-expr","locations":[{"start":{"line":151,"column":35},"end":{"line":151,"column":50}},{"start":{"line":151,"column":50},"end":{"line":151,"column":52}}],"line":151},"30":{"loc":{"start":{"line":168,"column":2},"end":{"line":168,"column":null}},"type":"if","locations":[{"start":{"line":168,"column":2},"end":{"line":168,"column":null}},{"start":{},"end":{}}],"line":168},"31":{"loc":{"start":{"line":169,"column":28},"end":{"line":169,"column":null}},"type":"if","locations":[{"start":{"line":169,"column":28},"end":{"line":169,"column":null}},{"start":{},"end":{}}],"line":169},"32":{"loc":{"start":{"line":169,"column":32},"end":{"line":169,"column":59}},"type":"binary-expr","locations":[{"start":{"line":169,"column":32},"end":{"line":169,"column":45}},{"start":{"line":169,"column":45},"end":{"line":169,"column":59}}],"line":169},"33":{"loc":{"start":{"line":171,"column":25},"end":{"line":171,"column":43}},"type":"binary-expr","locations":[{"start":{"line":171,"column":25},"end":{"line":171,"column":41}},{"start":{"line":171,"column":41},"end":{"line":171,"column":43}}],"line":171},"34":{"loc":{"start":{"line":171,"column":55},"end":{"line":171,"column":81}},"type":"binary-expr","locations":[{"start":{"line":171,"column":55},"end":{"line":171,"column":79}},{"start":{"line":171,"column":79},"end":{"line":171,"column":81}}],"line":171},"35":{"loc":{"start":{"line":172,"column":2},"end":{"line":172,"column":null}},"type":"if","locations":[{"start":{"line":172,"column":2},"end":{"line":172,"column":null}},{"start":{},"end":{}}],"line":172},"36":{"loc":{"start":{"line":173,"column":2},"end":{"line":173,"column":null}},"type":"if","locations":[{"start":{"line":173,"column":2},"end":{"line":173,"column":null}},{"start":{},"end":{}}],"line":173},"37":{"loc":{"start":{"line":174,"column":2},"end":{"line":174,"column":null}},"type":"if","locations":[{"start":{"line":174,"column":2},"end":{"line":174,"column":null}},{"start":{},"end":{}}],"line":174}},"s":{"0":2,"1":2,"2":2,"3":29,"4":8,"5":1,"6":7,"7":8,"8":1,"9":6,"10":6,"11":3,"12":3,"13":3,"14":0,"15":3,"16":3,"17":0,"18":6,"19":24,"20":5,"21":6,"22":3,"23":3,"24":6,"25":7,"26":6,"27":7,"28":7,"29":7,"30":6,"31":6,"32":0,"33":6,"34":6,"35":6,"36":6,"37":7,"38":6,"39":6,"40":6,"41":6,"42":6,"43":7,"44":7,"45":1,"46":1,"47":0,"48":6,"49":7,"50":7,"51":4,"52":2,"53":1,"54":1,"55":1,"56":7,"57":7,"58":5,"59":7,"60":12,"61":1,"62":11,"63":18,"64":4,"65":7,"66":7,"67":12,"68":2,"69":5,"70":2,"71":3,"72":1,"73":2},"f":{"0":29,"1":8,"2":3,"3":24,"4":5,"5":3,"6":7,"7":7,"8":7,"9":12},"b":{"0":[1,7],"1":[4,3],"2":[1,7],"3":[8,4],"4":[3,3],"5":[0,3],"6":[0,3],"7":[24,6,5],"8":[1,2],"9":[7,0],"10":[0,6],"11":[0,0],"12":[6,0],"13":[0,6],"14":[6,0],"15":[1,6],"16":[1,0],"17":[5,1],"18":[1,5],"19":[0,6],"20":[1,5],"21":[1,0],"22":[3,3],"23":[2,4],"24":[4,3],"25":[7,2],"26":[1,1],"27":[1,0],"28":[1,4],"29":[7,6],"30":[1,11],"31":[4,14],"32":[18,16],"33":[7,4],"34":[12,6],"35":[2,10],"36":[2,3],"37":[1,2]},"meta":{"lastBranch":38,"lastFunction":10,"lastStatement":74,"seen":{"s:8:18:8:Infinity":0,"s:10:18:10:Infinity":1,"s:11:17:11:Infinity":2,"f:34:16:34:37":0,"s:35:2:156:Infinity":3,"f:49:29:49:36":1,"b:50:6:52:Infinity:undefined:undefined:undefined:undefined":0,"s:50:6:52:Infinity":4,"s:51:8:51:Infinity":5,"s:53:19:53:Infinity":6,"b:53:24:53:41:53:41:53:Infinity":1,"b:54:6:54:Infinity:undefined:undefined:undefined:undefined":2,"s:54:6:54:Infinity":7,"b:54:10:54:16:54:16:54:42":3,"s:54:42:54:Infinity":8,"s:55:20:55:Infinity":9,"b:56:6:61:Infinity:undefined:undefined:undefined:undefined":4,"s:56:6:61:Infinity":10,"s:57:18:57:Infinity":11,"f:57:24:57:30":2,"s:57:36:57:61":12,"b:58:8:58:Infinity:undefined:undefined:undefined:undefined":5,"s:58:8:58:Infinity":13,"s:58:16:58:Infinity":14,"s:59:8:59:Infinity":15,"b:60:8:60:Infinity:undefined:undefined:undefined:undefined":6,"s:60:8:60:Infinity":16,"s:60:38:60:Infinity":17,"s:67:29:71:Infinity":18,"f:69:11:69:19":3,"s:69:25:69:133":19,"b:69:25:69:50:69:50:69:93:69:93:69:133":7,"f:70:11:70:16":4,"s:70:22:70:55":20,"s:72:12:80:Infinity":21,"f:72:12:72:24":5,"s:73:18:73:Infinity":22,"s:74:8:79:Infinity":23,"b:75:12:75:Infinity:76:12:79:Infinity":8,"s:82:26:87:Infinity":24,"f:82:26:82:33":6,"s:83:10:87:Infinity":25,"b:83:10:87:15:87:15:87:Infinity":9,"s:89:12:102:Infinity":26,"f:89:12:89:23":7,"s:90:36:90:Infinity":27,"s:91:23:91:Infinity":28,"s:92:8:100:Infinity":29,"s:93:20:93:Infinity":30,"b:93:50:93:92:93:92:93:Infinity":10,"b:93:66:93:75:93:75:93:92":11,"b:93:110:93:120:93:120:93:122":12,"b:94:10:94:Infinity:undefined:undefined:undefined:undefined":13,"s:94:10:94:Infinity":31,"s:94:35:94:Infinity":32,"s:95:20:95:Infinity":33,"b:96:10:99:Infinity:undefined:undefined:undefined:undefined":14,"s:96:10:99:Infinity":34,"s:97:12:97:Infinity":35,"s:98:12:98:Infinity":36,"s:101:8:101:Infinity":37,"s:104:52:104:Infinity":38,"s:105:19:105:Infinity":39,"s:106:22:106:Infinity":40,"s:108:6:143:Infinity":41,"s:108:23:108:26":42,"s:109:22:109:Infinity":43,"b:110:8:120:Infinity:undefined:undefined:undefined:undefined":15,"s:110:8:120:Infinity":44,"b:111:10:118:Infinity:undefined:undefined:undefined:undefined":16,"s:111:10:118:Infinity":45,"s:112:12:117:Infinity":46,"s:119:10:119:Infinity":47,"s:121:8:129:Infinity":48,"b:124:42:124:67:124:67:124:Infinity":17,"b:125:30:125:67:125:67:125:Infinity":18,"b:126:38:126:91:126:91:126:Infinity":19,"b:127:38:127:115:127:115:127:Infinity":20,"b:127:56:127:80:127:80:127:84":21,"b:128:38:128:80:128:80:128:Infinity":22,"s:131:22:131:Infinity":49,"b:131:68:131:94:131:94:131:Infinity":23,"b:132:8:132:Infinity:undefined:undefined:undefined:undefined":24,"s:132:8:132:Infinity":50,"b:132:12:132:22:132:22:132:39":25,"s:132:39:132:Infinity":51,"b:133:8:136:Infinity:undefined:undefined:undefined:undefined":26,"s:133:8:136:Infinity":52,"s:134:10:134:Infinity":53,"s:135:10:135:Infinity":54,"s:137:8:140:Infinity":55,"b:139:45:139:94:139:94:139:Infinity":27,"s:141:8:141:Infinity":56,"s:142:8:142:Infinity":57,"s:145:6:154:Infinity":58,"b:152:12:152:Infinity:153:12:153:Infinity":28,"f:151:16:151:22":8,"s:151:28:151:79":59,"b:151:35:151:50:151:50:151:52":29,"f:167:16:167:30":9,"b:168:2:168:Infinity:undefined:undefined:undefined:undefined":30,"s:168:2:168:Infinity":60,"s:168:26:168:Infinity":61,"s:169:2:169:Infinity":62,"b:169:28:169:Infinity:undefined:undefined:undefined:undefined":31,"s:169:28:169:Infinity":63,"b:169:32:169:45:169:45:169:59":32,"s:169:59:169:Infinity":64,"s:170:15:170:Infinity":65,"s:171:15:171:Infinity":66,"b:171:25:171:41:171:41:171:43":33,"b:171:55:171:79:171:79:171:81":34,"b:172:2:172:Infinity:undefined:undefined:undefined:undefined":35,"s:172:2:172:Infinity":67,"s:172:106:172:Infinity":68,"b:173:2:173:Infinity:undefined:undefined:undefined:undefined":36,"s:173:2:173:Infinity":69,"s:173:102:173:Infinity":70,"b:174:2:174:Infinity:undefined:undefined:undefined:undefined":37,"s:174:2:174:Infinity":71,"s:174:24:174:Infinity":72,"s:175:2:175:Infinity":73},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/health.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/health.ts","statementMap":{"0":{"start":{"line":9,"column":20},"end":{"line":9,"column":null}},"1":{"start":{"line":10,"column":20},"end":{"line":10,"column":null}},"2":{"start":{"line":19,"column":2},"end":{"line":110,"column":null}},"3":{"start":{"line":34,"column":25},"end":{"line":34,"column":null}},"4":{"start":{"line":35,"column":12},"end":{"line":35,"column":null}},"5":{"start":{"line":36,"column":18},"end":{"line":36,"column":null}},"6":{"start":{"line":37,"column":12},"end":{"line":37,"column":null}},"7":{"start":{"line":37,"column":60},"end":{"line":37,"column":99}},"8":{"start":{"line":39,"column":12},"end":{"line":42,"column":null}},"9":{"start":{"line":40,"column":18},"end":{"line":40,"column":null}},"10":{"start":{"line":41,"column":8},"end":{"line":41,"column":null}},"11":{"start":{"line":43,"column":12},"end":{"line":43,"column":null}},"12":{"start":{"line":43,"column":72},"end":{"line":43,"column":null}},"13":{"start":{"line":45,"column":26},"end":{"line":50,"column":null}},"14":{"start":{"line":47,"column":25},"end":{"line":47,"column":75}},"15":{"start":{"line":48,"column":23},"end":{"line":48,"column":120}},"16":{"start":{"line":49,"column":20},"end":{"line":49,"column":55}},"17":{"start":{"line":52,"column":27},"end":{"line":65,"column":null}},"18":{"start":{"line":55,"column":24},"end":{"line":55,"column":null}},"19":{"start":{"line":56,"column":26},"end":{"line":56,"column":null}},"20":{"start":{"line":57,"column":12},"end":{"line":57,"column":null}},"21":{"start":{"line":59,"column":23},"end":{"line":63,"column":12}},"22":{"start":{"line":64,"column":26},"end":{"line":64,"column":43}},"23":{"start":{"line":67,"column":31},"end":{"line":81,"column":null}},"24":{"start":{"line":70,"column":12},"end":{"line":70,"column":null}},"25":{"start":{"line":70,"column":63},"end":{"line":70,"column":null}},"26":{"start":{"line":71,"column":25},"end":{"line":71,"column":null}},"27":{"start":{"line":72,"column":12},"end":{"line":72,"column":null}},"28":{"start":{"line":72,"column":53},"end":{"line":72,"column":null}},"29":{"start":{"line":73,"column":22},"end":{"line":73,"column":null}},"30":{"start":{"line":74,"column":12},"end":{"line":74,"column":null}},"31":{"start":{"line":76,"column":23},"end":{"line":80,"column":12}},"32":{"start":{"line":83,"column":25},"end":{"line":83,"column":null}},"33":{"start":{"line":83,"column":43},"end":{"line":83,"column":86}},"34":{"start":{"line":87,"column":52},"end":{"line":87,"column":null}},"35":{"start":{"line":88,"column":6},"end":{"line":99,"column":null}},"36":{"start":{"line":89,"column":25},"end":{"line":89,"column":null}},"37":{"start":{"line":90,"column":8},"end":{"line":96,"column":null}},"38":{"start":{"line":90,"column":83},"end":{"line":96,"column":10}},"39":{"start":{"line":98,"column":8},"end":{"line":98,"column":null}},"40":{"start":{"line":101,"column":6},"end":{"line":108,"column":null}}},"fnMap":{"0":{"name":"registerHealthTools","decl":{"start":{"line":18,"column":16},"end":{"line":18,"column":36}},"loc":{"start":{"line":18,"column":83},"end":{"line":111,"column":null}},"line":18},"1":{"name":"(anonymous_1)","decl":{"start":{"line":33,"column":26},"end":{"line":33,"column":33}},"loc":{"start":{"line":33,"column":71},"end":{"line":109,"column":5}},"line":33},"2":{"name":"(anonymous_2)","decl":{"start":{"line":37,"column":46},"end":{"line":37,"column":54}},"loc":{"start":{"line":37,"column":60},"end":{"line":37,"column":99}},"line":37},"3":{"name":"(anonymous_3)","decl":{"start":{"line":39,"column":12},"end":{"line":39,"column":23}},"loc":{"start":{"line":39,"column":54},"end":{"line":42,"column":null}},"line":39},"4":{"name":"(anonymous_4)","decl":{"start":{"line":43,"column":12},"end":{"line":43,"column":25}},"loc":{"start":{"line":43,"column":72},"end":{"line":43,"column":null}},"line":43},"5":{"name":"(anonymous_5)","decl":{"start":{"line":47,"column":11},"end":{"line":47,"column":19}},"loc":{"start":{"line":47,"column":25},"end":{"line":47,"column":75}},"line":47},"6":{"name":"(anonymous_6)","decl":{"start":{"line":48,"column":11},"end":{"line":48,"column":16}},"loc":{"start":{"line":48,"column":23},"end":{"line":48,"column":120}},"line":48},"7":{"name":"(anonymous_7)","decl":{"start":{"line":49,"column":11},"end":{"line":49,"column":17}},"loc":{"start":{"line":49,"column":20},"end":{"line":49,"column":55}},"line":49},"8":{"name":"(anonymous_8)","decl":{"start":{"line":54,"column":11},"end":{"line":54,"column":19}},"loc":{"start":{"line":54,"column":25},"end":{"line":58,"column":11}},"line":54},"9":{"name":"(anonymous_9)","decl":{"start":{"line":59,"column":11},"end":{"line":59,"column":16}},"loc":{"start":{"line":59,"column":23},"end":{"line":63,"column":12}},"line":59},"10":{"name":"(anonymous_10)","decl":{"start":{"line":64,"column":11},"end":{"line":64,"column":17}},"loc":{"start":{"line":64,"column":26},"end":{"line":64,"column":43}},"line":64},"11":{"name":"(anonymous_11)","decl":{"start":{"line":69,"column":11},"end":{"line":69,"column":19}},"loc":{"start":{"line":69,"column":25},"end":{"line":75,"column":11}},"line":69},"12":{"name":"(anonymous_12)","decl":{"start":{"line":76,"column":11},"end":{"line":76,"column":16}},"loc":{"start":{"line":76,"column":23},"end":{"line":80,"column":12}},"line":76},"13":{"name":"(anonymous_13)","decl":{"start":{"line":83,"column":29},"end":{"line":83,"column":37}},"loc":{"start":{"line":83,"column":43},"end":{"line":83,"column":86}},"line":83},"14":{"name":"(anonymous_14)","decl":{"start":{"line":90,"column":71},"end":{"line":90,"column":76}},"loc":{"start":{"line":90,"column":83},"end":{"line":96,"column":10}},"line":90}},"branchMap":{"0":{"loc":{"start":{"line":34,"column":25},"end":{"line":34,"column":null}},"type":"binary-expr","locations":[{"start":{"line":34,"column":25},"end":{"line":34,"column":46}},{"start":{"line":34,"column":46},"end":{"line":34,"column":null}}],"line":34},"1":{"loc":{"start":{"line":35,"column":23},"end":{"line":35,"column":43}},"type":"binary-expr","locations":[{"start":{"line":35,"column":23},"end":{"line":35,"column":37}},{"start":{"line":35,"column":37},"end":{"line":35,"column":43}}],"line":35},"2":{"loc":{"start":{"line":41,"column":15},"end":{"line":41,"column":null}},"type":"cond-expr","locations":[{"start":{"line":41,"column":36},"end":{"line":41,"column":73}},{"start":{"line":41,"column":73},"end":{"line":41,"column":null}}],"line":41},"3":{"loc":{"start":{"line":47,"column":25},"end":{"line":47,"column":75}},"type":"binary-expr","locations":[{"start":{"line":47,"column":25},"end":{"line":47,"column":54}},{"start":{"line":47,"column":54},"end":{"line":47,"column":75}}],"line":47},"4":{"loc":{"start":{"line":49,"column":27},"end":{"line":49,"column":43}},"type":"binary-expr","locations":[{"start":{"line":49,"column":27},"end":{"line":49,"column":37}},{"start":{"line":49,"column":37},"end":{"line":49,"column":43}}],"line":49},"5":{"loc":{"start":{"line":49,"column":43},"end":{"line":49,"column":55}},"type":"binary-expr","locations":[{"start":{"line":49,"column":43},"end":{"line":49,"column":53}},{"start":{"line":49,"column":53},"end":{"line":49,"column":55}}],"line":49},"6":{"loc":{"start":{"line":56,"column":26},"end":{"line":56,"column":null}},"type":"cond-expr","locations":[{"start":{"line":56,"column":46},"end":{"line":56,"column":64}},{"start":{"line":56,"column":64},"end":{"line":56,"column":null}}],"line":56},"7":{"loc":{"start":{"line":57,"column":19},"end":{"line":57,"column":null}},"type":"binary-expr","locations":[{"start":{"line":57,"column":19},"end":{"line":57,"column":45}},{"start":{"line":57,"column":45},"end":{"line":57,"column":null}}],"line":57},"8":{"loc":{"start":{"line":62,"column":19},"end":{"line":62,"column":null}},"type":"cond-expr","locations":[{"start":{"line":62,"column":61},"end":{"line":62,"column":79}},{"start":{"line":62,"column":79},"end":{"line":62,"column":null}}],"line":62},"9":{"loc":{"start":{"line":70,"column":12},"end":{"line":70,"column":null}},"type":"if","locations":[{"start":{"line":70,"column":12},"end":{"line":70,"column":null}},{"start":{},"end":{}}],"line":70},"10":{"loc":{"start":{"line":70,"column":16},"end":{"line":70,"column":63}},"type":"binary-expr","locations":[{"start":{"line":70,"column":16},"end":{"line":70,"column":45}},{"start":{"line":70,"column":45},"end":{"line":70,"column":63}}],"line":70},"11":{"loc":{"start":{"line":72,"column":12},"end":{"line":72,"column":null}},"type":"if","locations":[{"start":{"line":72,"column":12},"end":{"line":72,"column":null}},{"start":{},"end":{}}],"line":72},"12":{"loc":{"start":{"line":72,"column":16},"end":{"line":72,"column":53}},"type":"binary-expr","locations":[{"start":{"line":72,"column":16},"end":{"line":72,"column":33}},{"start":{"line":72,"column":33},"end":{"line":72,"column":53}}],"line":72},"13":{"loc":{"start":{"line":74,"column":19},"end":{"line":74,"column":null}},"type":"cond-expr","locations":[{"start":{"line":74,"column":40},"end":{"line":74,"column":60}},{"start":{"line":74,"column":60},"end":{"line":74,"column":null}}],"line":74},"14":{"loc":{"start":{"line":79,"column":29},"end":{"line":79,"column":null}},"type":"binary-expr","locations":[{"start":{"line":79,"column":29},"end":{"line":79,"column":78}},{"start":{"line":79,"column":78},"end":{"line":79,"column":null}}],"line":79},"15":{"loc":{"start":{"line":83,"column":43},"end":{"line":83,"column":86}},"type":"binary-expr","locations":[{"start":{"line":83,"column":43},"end":{"line":83,"column":54}},{"start":{"line":83,"column":54},"end":{"line":83,"column":67}},{"start":{"line":83,"column":67},"end":{"line":83,"column":86}}],"line":83},"16":{"loc":{"start":{"line":90,"column":20},"end":{"line":90,"column":47}},"type":"binary-expr","locations":[{"start":{"line":90,"column":20},"end":{"line":90,"column":45}},{"start":{"line":90,"column":45},"end":{"line":90,"column":47}}],"line":90},"17":{"loc":{"start":{"line":93,"column":17},"end":{"line":93,"column":null}},"type":"binary-expr","locations":[{"start":{"line":93,"column":17},"end":{"line":93,"column":38}},{"start":{"line":93,"column":38},"end":{"line":93,"column":null}}],"line":93},"18":{"loc":{"start":{"line":94,"column":14},"end":{"line":94,"column":null}},"type":"cond-expr","locations":[{"start":{"line":94,"column":26},"end":{"line":94,"column":51}},{"start":{"line":94,"column":51},"end":{"line":94,"column":null}}],"line":94},"19":{"loc":{"start":{"line":95,"column":14},"end":{"line":95,"column":null}},"type":"cond-expr","locations":[{"start":{"line":95,"column":43},"end":{"line":95,"column":80}},{"start":{"line":95,"column":80},"end":{"line":95,"column":null}}],"line":95},"20":{"loc":{"start":{"line":98,"column":54},"end":{"line":98,"column":98}},"type":"cond-expr","locations":[{"start":{"line":98,"column":75},"end":{"line":98,"column":87}},{"start":{"line":98,"column":87},"end":{"line":98,"column":98}}],"line":98},"21":{"loc":{"start":{"line":102,"column":41},"end":{"line":102,"column":183}},"type":"cond-expr","locations":[{"start":{"line":102,"column":64},"end":{"line":102,"column":134}},{"start":{"line":102,"column":134},"end":{"line":102,"column":183}}],"line":102},"22":{"loc":{"start":{"line":105,"column":66},"end":{"line":105,"column":83}},"type":"binary-expr","locations":[{"start":{"line":105,"column":66},"end":{"line":105,"column":80}},{"start":{"line":105,"column":80},"end":{"line":105,"column":83}}],"line":105}},"s":{"0":2,"1":2,"2":26,"3":6,"4":6,"5":6,"6":6,"7":54,"8":6,"9":10,"10":10,"11":6,"12":18,"13":6,"14":51,"15":10,"16":5,"17":6,"18":51,"19":51,"20":51,"21":6,"22":1,"23":6,"24":51,"25":33,"26":18,"27":18,"28":6,"29":12,"30":12,"31":12,"32":6,"33":51,"34":6,"35":6,"36":6,"37":5,"38":1,"39":1,"40":6},"f":{"0":26,"1":6,"2":54,"3":10,"4":18,"5":51,"6":10,"7":5,"8":51,"9":6,"10":1,"11":51,"12":12,"13":51,"14":1},"b":{"0":[6,5],"1":[6,6],"2":[10,0],"3":[51,46],"4":[5,0],"5":[5,0],"6":[5,46],"7":[51,11],"8":[5,1],"9":[33,18],"10":[51,24],"11":[6,12],"12":[18,12],"13":[12,0],"14":[12,6],"15":[51,27,27],"16":[5,0],"17":[1,0],"18":[1,0],"19":[1,0],"20":[1,0],"21":[5,1],"22":[6,6]},"meta":{"lastBranch":23,"lastFunction":15,"lastStatement":41,"seen":{"s:9:20:9:Infinity":0,"s:10:20:10:Infinity":1,"f:18:16:18:36":0,"s:19:2:110:Infinity":2,"f:33:26:33:33":1,"s:34:25:34:Infinity":3,"b:34:25:34:46:34:46:34:Infinity":0,"s:35:12:35:Infinity":4,"b:35:23:35:37:35:37:35:43":1,"s:36:18:36:Infinity":5,"s:37:12:37:Infinity":6,"f:37:46:37:54":2,"s:37:60:37:99":7,"s:39:12:42:Infinity":8,"f:39:12:39:23":3,"s:40:18:40:Infinity":9,"s:41:8:41:Infinity":10,"b:41:36:41:73:41:73:41:Infinity":2,"s:43:12:43:Infinity":11,"f:43:12:43:25":4,"s:43:72:43:Infinity":12,"s:45:26:50:Infinity":13,"f:47:11:47:19":5,"s:47:25:47:75":14,"b:47:25:47:54:47:54:47:75":3,"f:48:11:48:16":6,"s:48:23:48:120":15,"f:49:11:49:17":7,"s:49:20:49:55":16,"b:49:27:49:37:49:37:49:43":4,"b:49:43:49:53:49:53:49:55":5,"s:52:27:65:Infinity":17,"f:54:11:54:19":8,"s:55:24:55:Infinity":18,"s:56:26:56:Infinity":19,"b:56:46:56:64:56:64:56:Infinity":6,"s:57:12:57:Infinity":20,"b:57:19:57:45:57:45:57:Infinity":7,"f:59:11:59:16":9,"s:59:23:63:12":21,"b:62:61:62:79:62:79:62:Infinity":8,"f:64:11:64:17":10,"s:64:26:64:43":22,"s:67:31:81:Infinity":23,"f:69:11:69:19":11,"b:70:12:70:Infinity:undefined:undefined:undefined:undefined":9,"s:70:12:70:Infinity":24,"b:70:16:70:45:70:45:70:63":10,"s:70:63:70:Infinity":25,"s:71:25:71:Infinity":26,"b:72:12:72:Infinity:undefined:undefined:undefined:undefined":11,"s:72:12:72:Infinity":27,"b:72:16:72:33:72:33:72:53":12,"s:72:53:72:Infinity":28,"s:73:22:73:Infinity":29,"s:74:12:74:Infinity":30,"b:74:40:74:60:74:60:74:Infinity":13,"f:76:11:76:16":12,"s:76:23:80:12":31,"b:79:29:79:78:79:78:79:Infinity":14,"s:83:25:83:Infinity":32,"f:83:29:83:37":13,"s:83:43:83:86":33,"b:83:43:83:54:83:54:83:67:83:67:83:86":15,"s:87:52:87:Infinity":34,"s:88:6:99:Infinity":35,"s:89:25:89:Infinity":36,"s:90:8:96:Infinity":37,"b:90:20:90:45:90:45:90:47":16,"f:90:71:90:76":14,"s:90:83:96:10":38,"b:93:17:93:38:93:38:93:Infinity":17,"b:94:26:94:51:94:51:94:Infinity":18,"b:95:43:95:80:95:80:95:Infinity":19,"s:98:8:98:Infinity":39,"b:98:75:98:87:98:87:98:98":20,"s:101:6:108:Infinity":40,"b:102:64:102:134:102:134:102:183":21,"b:105:66:105:80:105:80:105:83":22},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/helpers.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/helpers.ts","statementMap":{"0":{"start":{"line":16,"column":21},"end":{"line":24,"column":null}},"1":{"start":{"line":28,"column":22},"end":{"line":28,"column":null}},"2":{"start":{"line":32,"column":8},"end":{"line":32,"column":null}},"3":{"start":{"line":32,"column":31},"end":{"line":32,"column":null}},"4":{"start":{"line":34,"column":2},"end":{"line":63,"column":null}},"5":{"start":{"line":52,"column":47},"end":{"line":52,"column":null}},"6":{"start":{"line":53,"column":6},"end":{"line":55,"column":null}},"7":{"start":{"line":54,"column":8},"end":{"line":54,"column":null}},"8":{"start":{"line":54,"column":35},"end":{"line":54,"column":null}},"9":{"start":{"line":56,"column":27},"end":{"line":56,"column":null}},"10":{"start":{"line":57,"column":6},"end":{"line":57,"column":null}},"11":{"start":{"line":58,"column":6},"end":{"line":61,"column":null}},"12":{"start":{"line":65,"column":2},"end":{"line":100,"column":null}},"13":{"start":{"line":78,"column":25},"end":{"line":78,"column":null}},"14":{"start":{"line":79,"column":6},"end":{"line":81,"column":null}},"15":{"start":{"line":80,"column":8},"end":{"line":80,"column":null}},"16":{"start":{"line":82,"column":22},"end":{"line":82,"column":null}},"17":{"start":{"line":83,"column":6},"end":{"line":86,"column":null}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":null}},"19":{"start":{"line":85,"column":8},"end":{"line":85,"column":null}},"20":{"start":{"line":89,"column":25},"end":{"line":89,"column":null}},"21":{"start":{"line":90,"column":6},"end":{"line":95,"column":null}},"22":{"start":{"line":91,"column":8},"end":{"line":94,"column":null}},"23":{"start":{"line":96,"column":6},"end":{"line":96,"column":null}},"24":{"start":{"line":97,"column":6},"end":{"line":97,"column":null}},"25":{"start":{"line":98,"column":6},"end":{"line":98,"column":null}}},"fnMap":{"0":{"name":"registerHelperTools","decl":{"start":{"line":30,"column":16},"end":{"line":30,"column":36}},"loc":{"start":{"line":30,"column":83},"end":{"line":101,"column":null}},"line":30},"1":{"name":"(anonymous_1)","decl":{"start":{"line":32,"column":8},"end":{"line":32,"column":31}},"loc":{"start":{"line":32,"column":31},"end":{"line":32,"column":null}},"line":32},"2":{"name":"(anonymous_2)","decl":{"start":{"line":51,"column":29},"end":{"line":51,"column":36}},"loc":{"start":{"line":51,"column":71},"end":{"line":62,"column":5}},"line":51},"3":{"name":"(anonymous_3)","decl":{"start":{"line":77,"column":29},"end":{"line":77,"column":36}},"loc":{"start":{"line":77,"column":54},"end":{"line":99,"column":5}},"line":77}},"branchMap":{"0":{"loc":{"start":{"line":32,"column":31},"end":{"line":32,"column":null}},"type":"binary-expr","locations":[{"start":{"line":32,"column":31},"end":{"line":32,"column":45}},{"start":{"line":32,"column":45},"end":{"line":32,"column":null}}],"line":32},"1":{"loc":{"start":{"line":53,"column":42},"end":{"line":53,"column":55}},"type":"binary-expr","locations":[{"start":{"line":53,"column":42},"end":{"line":53,"column":53}},{"start":{"line":53,"column":53},"end":{"line":53,"column":55}}],"line":53},"2":{"loc":{"start":{"line":54,"column":8},"end":{"line":54,"column":null}},"type":"if","locations":[{"start":{"line":54,"column":8},"end":{"line":54,"column":null}},{"start":{},"end":{}}],"line":54},"3":{"loc":{"start":{"line":59,"column":36},"end":{"line":59,"column":57}},"type":"binary-expr","locations":[{"start":{"line":59,"column":36},"end":{"line":59,"column":51}},{"start":{"line":59,"column":51},"end":{"line":59,"column":57}}],"line":59},"4":{"loc":{"start":{"line":59,"column":63},"end":{"line":59,"column":85}},"type":"binary-expr","locations":[{"start":{"line":59,"column":63},"end":{"line":59,"column":80}},{"start":{"line":59,"column":80},"end":{"line":59,"column":85}}],"line":59},"5":{"loc":{"start":{"line":79,"column":6},"end":{"line":81,"column":null}},"type":"if","locations":[{"start":{"line":79,"column":6},"end":{"line":81,"column":null}},{"start":{},"end":{}}],"line":79},"6":{"loc":{"start":{"line":83,"column":6},"end":{"line":86,"column":null}},"type":"if","locations":[{"start":{"line":83,"column":6},"end":{"line":86,"column":null}},{"start":{},"end":{}}],"line":83},"7":{"loc":{"start":{"line":90,"column":6},"end":{"line":95,"column":null}},"type":"if","locations":[{"start":{"line":90,"column":6},"end":{"line":95,"column":null}},{"start":{},"end":{}}],"line":90},"8":{"loc":{"start":{"line":90,"column":10},"end":{"line":90,"column":63}},"type":"binary-expr","locations":[{"start":{"line":90,"column":10},"end":{"line":90,"column":31}},{"start":{"line":90,"column":31},"end":{"line":90,"column":63}}],"line":90},"9":{"loc":{"start":{"line":92,"column":78},"end":{"line":92,"column":107}},"type":"binary-expr","locations":[{"start":{"line":92,"column":78},"end":{"line":92,"column":97}},{"start":{"line":92,"column":97},"end":{"line":92,"column":107}}],"line":92}},"s":{"0":2,"1":2,"2":28,"3":3,"4":28,"5":2,"6":2,"7":4,"8":2,"9":2,"10":1,"11":1,"12":28,"13":4,"14":4,"15":1,"16":3,"17":3,"18":1,"19":1,"20":2,"21":2,"22":1,"23":1,"24":1,"25":1},"f":{"0":28,"1":3,"2":2,"3":4},"b":{"0":[3,1],"1":[2,1],"2":[2,2],"3":[1,0],"4":[2,0],"5":[1,3],"6":[1,2],"7":[1,1],"8":[2,2],"9":[1,0]},"meta":{"lastBranch":10,"lastFunction":4,"lastStatement":26,"seen":{"s:16:21:24:Infinity":0,"s:28:22:28:Infinity":1,"f:30:16:30:36":0,"s:32:8:32:Infinity":2,"f:32:8:32:31":1,"s:32:31:32:Infinity":3,"b:32:31:32:45:32:45:32:Infinity":0,"s:34:2:63:Infinity":4,"f:51:29:51:36":2,"s:52:47:52:Infinity":5,"s:53:6:55:Infinity":6,"b:53:42:53:53:53:53:53:55":1,"b:54:8:54:Infinity:undefined:undefined:undefined:undefined":2,"s:54:8:54:Infinity":7,"s:54:35:54:Infinity":8,"s:56:27:56:Infinity":9,"s:57:6:57:Infinity":10,"s:58:6:61:Infinity":11,"b:59:36:59:51:59:51:59:57":3,"b:59:63:59:80:59:80:59:85":4,"s:65:2:100:Infinity":12,"f:77:29:77:36":3,"s:78:25:78:Infinity":13,"b:79:6:81:Infinity:undefined:undefined:undefined:undefined":5,"s:79:6:81:Infinity":14,"s:80:8:80:Infinity":15,"s:82:22:82:Infinity":16,"b:83:6:86:Infinity:undefined:undefined:undefined:undefined":6,"s:83:6:86:Infinity":17,"s:84:8:84:Infinity":18,"s:85:8:85:Infinity":19,"s:89:25:89:Infinity":20,"b:90:6:95:Infinity:undefined:undefined:undefined:undefined":7,"s:90:6:95:Infinity":21,"b:90:10:90:31:90:31:90:63":8,"s:91:8:94:Infinity":22,"b:92:78:92:97:92:97:92:107":9,"s:96:6:96:Infinity":23,"s:97:6:97:Infinity":24,"s:98:6:98:Infinity":25},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/history.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/history.ts","statementMap":{"0":{"start":{"line":10,"column":19},"end":{"line":10,"column":null}},"1":{"start":{"line":11,"column":20},"end":{"line":11,"column":null}},"2":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"3":{"start":{"line":15,"column":26},"end":{"line":15,"column":null}},"4":{"start":{"line":16,"column":17},"end":{"line":16,"column":null}},"5":{"start":{"line":17,"column":15},"end":{"line":17,"column":null}},"6":{"start":{"line":17,"column":37},"end":{"line":17,"column":53}},"7":{"start":{"line":18,"column":15},"end":{"line":18,"column":null}},"8":{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},"9":{"start":{"line":19,"column":60},"end":{"line":19,"column":null}},"10":{"start":{"line":20,"column":2},"end":{"line":23,"column":null}},"11":{"start":{"line":27,"column":2},"end":{"line":84,"column":null}},"12":{"start":{"line":47,"column":18},"end":{"line":47,"column":null}},"13":{"start":{"line":48,"column":6},"end":{"line":50,"column":null}},"14":{"start":{"line":49,"column":8},"end":{"line":49,"column":null}},"15":{"start":{"line":49,"column":45},"end":{"line":49,"column":null}},"16":{"start":{"line":51,"column":16},"end":{"line":51,"column":null}},"17":{"start":{"line":52,"column":41},"end":{"line":61,"column":null}},"18":{"start":{"line":64,"column":24},"end":{"line":64,"column":null}},"19":{"start":{"line":65,"column":12},"end":{"line":76,"column":null}},"20":{"start":{"line":69,"column":20},"end":{"line":69,"column":null}},"21":{"start":{"line":70,"column":23},"end":{"line":73,"column":null}},"22":{"start":{"line":70,"column":39},"end":{"line":73,"column":10}},"23":{"start":{"line":74,"column":31},"end":{"line":74,"column":null}},"24":{"start":{"line":75,"column":8},"end":{"line":75,"column":null}},"25":{"start":{"line":77,"column":6},"end":{"line":79,"column":null}},"26":{"start":{"line":78,"column":8},"end":{"line":78,"column":null}},"27":{"start":{"line":80,"column":46},"end":{"line":80,"column":null}},"28":{"start":{"line":81,"column":6},"end":{"line":81,"column":null}},"29":{"start":{"line":81,"column":28},"end":{"line":81,"column":null}},"30":{"start":{"line":82,"column":6},"end":{"line":82,"column":null}},"31":{"start":{"line":86,"column":2},"end":{"line":129,"column":null}},"32":{"start":{"line":104,"column":18},"end":{"line":104,"column":null}},"33":{"start":{"line":105,"column":6},"end":{"line":107,"column":null}},"34":{"start":{"line":106,"column":8},"end":{"line":106,"column":null}},"35":{"start":{"line":106,"column":45},"end":{"line":106,"column":null}},"36":{"start":{"line":108,"column":16},"end":{"line":108,"column":null}},"37":{"start":{"line":109,"column":41},"end":{"line":114,"column":null}},"38":{"start":{"line":115,"column":12},"end":{"line":115,"column":null}},"39":{"start":{"line":115,"column":37},"end":{"line":115,"column":null}},"40":{"start":{"line":116,"column":43},"end":{"line":116,"column":null}},"41":{"start":{"line":117,"column":6},"end":{"line":126,"column":null}},"42":{"start":{"line":118,"column":8},"end":{"line":125,"column":null}},"43":{"start":{"line":118,"column":35},"end":{"line":125,"column":10}},"44":{"start":{"line":127,"column":6},"end":{"line":127,"column":null}},"45":{"start":{"line":131,"column":2},"end":{"line":203,"column":null}},"46":{"start":{"line":150,"column":6},"end":{"line":152,"column":null}},"47":{"start":{"line":151,"column":8},"end":{"line":151,"column":null}},"48":{"start":{"line":153,"column":6},"end":{"line":155,"column":null}},"49":{"start":{"line":154,"column":8},"end":{"line":154,"column":null}},"50":{"start":{"line":156,"column":16},"end":{"line":156,"column":null}},"51":{"start":{"line":157,"column":47},"end":{"line":157,"column":null}},"52":{"start":{"line":158,"column":6},"end":{"line":158,"column":null}},"53":{"start":{"line":158,"column":21},"end":{"line":158,"column":null}},"54":{"start":{"line":162,"column":37},"end":{"line":162,"column":null}},"55":{"start":{"line":163,"column":6},"end":{"line":182,"column":null}},"56":{"start":{"line":164,"column":14},"end":{"line":164,"column":null}},"57":{"start":{"line":165,"column":22},"end":{"line":165,"column":null}},"58":{"start":{"line":166,"column":24},"end":{"line":170,"column":null}},"59":{"start":{"line":168,"column":12},"end":{"line":169,"column":null}},"60":{"start":{"line":171,"column":8},"end":{"line":176,"column":null}},"61":{"start":{"line":172,"column":24},"end":{"line":172,"column":null}},"62":{"start":{"line":172,"column":54},"end":{"line":172,"column":78}},"63":{"start":{"line":173,"column":10},"end":{"line":175,"column":null}},"64":{"start":{"line":177,"column":32},"end":{"line":177,"column":null}},"65":{"start":{"line":178,"column":8},"end":{"line":178,"column":null}},"66":{"start":{"line":178,"column":74},"end":{"line":178,"column":85}},"67":{"start":{"line":179,"column":8},"end":{"line":181,"column":null}},"68":{"start":{"line":180,"column":10},"end":{"line":180,"column":null}},"69":{"start":{"line":183,"column":26},"end":{"line":183,"column":null}},"70":{"start":{"line":184,"column":22},"end":{"line":184,"column":null}},"71":{"start":{"line":184,"column":40},"end":{"line":184,"column":95}},"72":{"start":{"line":185,"column":21},"end":{"line":191,"column":null}},"73":{"start":{"line":185,"column":61},"end":{"line":191,"column":8}},"74":{"start":{"line":192,"column":6},"end":{"line":201,"column":null}}},"fnMap":{"0":{"name":"downsample","decl":{"start":{"line":14,"column":9},"end":{"line":14,"column":23}},"loc":{"start":{"line":14,"column":77},"end":{"line":24,"column":null}},"line":14},"1":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":20},"end":{"line":17,"column":28}},"loc":{"start":{"line":17,"column":37},"end":{"line":17,"column":53}},"line":17},"2":{"name":"registerHistoryTools","decl":{"start":{"line":26,"column":16},"end":{"line":26,"column":37}},"loc":{"start":{"line":26,"column":84},"end":{"line":204,"column":null}},"line":26},"3":{"name":"(anonymous_3)","decl":{"start":{"line":46,"column":27},"end":{"line":46,"column":34}},"loc":{"start":{"line":46,"column":71},"end":{"line":83,"column":5}},"line":46},"4":{"name":"(anonymous_4)","decl":{"start":{"line":65,"column":12},"end":{"line":65,"column":24}},"loc":{"start":{"line":65,"column":39},"end":{"line":76,"column":null}},"line":65},"5":{"name":"(anonymous_5)","decl":{"start":{"line":70,"column":27},"end":{"line":70,"column":32}},"loc":{"start":{"line":70,"column":39},"end":{"line":73,"column":10}},"line":70},"6":{"name":"(anonymous_6)","decl":{"start":{"line":103,"column":30},"end":{"line":103,"column":37}},"loc":{"start":{"line":103,"column":85},"end":{"line":128,"column":5}},"line":103},"7":{"name":"(anonymous_7)","decl":{"start":{"line":115,"column":12},"end":{"line":115,"column":21}},"loc":{"start":{"line":115,"column":37},"end":{"line":115,"column":null}},"line":115},"8":{"name":"(anonymous_8)","decl":{"start":{"line":118,"column":23},"end":{"line":118,"column":28}},"loc":{"start":{"line":118,"column":35},"end":{"line":125,"column":10}},"line":118},"9":{"name":"(anonymous_9)","decl":{"start":{"line":149,"column":27},"end":{"line":149,"column":34}},"loc":{"start":{"line":149,"column":84},"end":{"line":202,"column":5}},"line":149},"10":{"name":"(anonymous_10)","decl":{"start":{"line":166,"column":30},"end":{"line":166,"column":null}},"loc":{"start":{"line":168,"column":12},"end":{"line":169,"column":null}},"line":168},"11":{"name":"(anonymous_11)","decl":{"start":{"line":172,"column":42},"end":{"line":172,"column":47}},"loc":{"start":{"line":172,"column":54},"end":{"line":172,"column":78}},"line":172},"12":{"name":"(anonymous_12)","decl":{"start":{"line":178,"column":63},"end":{"line":178,"column":68}},"loc":{"start":{"line":178,"column":74},"end":{"line":178,"column":85}},"line":178},"13":{"name":"(anonymous_13)","decl":{"start":{"line":184,"column":26},"end":{"line":184,"column":34}},"loc":{"start":{"line":184,"column":40},"end":{"line":184,"column":95}},"line":184},"14":{"name":"(anonymous_14)","decl":{"start":{"line":185,"column":49},"end":{"line":185,"column":54}},"loc":{"start":{"line":185,"column":61},"end":{"line":191,"column":8}},"line":185}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},{"start":{},"end":{}}],"line":15},"1":{"loc":{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":2},"end":{"line":19,"column":null}},{"start":{},"end":{}}],"line":19},"2":{"loc":{"start":{"line":19,"column":6},"end":{"line":19,"column":60}},"type":"binary-expr","locations":[{"start":{"line":19,"column":6},"end":{"line":19,"column":28}},{"start":{"line":19,"column":28},"end":{"line":19,"column":60}}],"line":19},"3":{"loc":{"start":{"line":47,"column":30},"end":{"line":47,"column":80}},"type":"cond-expr","locations":[{"start":{"line":47,"column":57},"end":{"line":47,"column":69}},{"start":{"line":47,"column":69},"end":{"line":47,"column":80}}],"line":47},"4":{"loc":{"start":{"line":49,"column":8},"end":{"line":49,"column":null}},"type":"if","locations":[{"start":{"line":49,"column":8},"end":{"line":49,"column":null}},{"start":{},"end":{}}],"line":49},"5":{"loc":{"start":{"line":69,"column":20},"end":{"line":69,"column":null}},"type":"binary-expr","locations":[{"start":{"line":69,"column":20},"end":{"line":69,"column":33}},{"start":{"line":69,"column":33},"end":{"line":69,"column":null}}],"line":69},"6":{"loc":{"start":{"line":71,"column":19},"end":{"line":71,"column":59}},"type":"binary-expr","locations":[{"start":{"line":71,"column":19},"end":{"line":71,"column":27}},{"start":{"line":71,"column":27},"end":{"line":71,"column":45}},{"start":{"line":71,"column":45},"end":{"line":71,"column":59}}],"line":71},"7":{"loc":{"start":{"line":72,"column":17},"end":{"line":72,"column":null}},"type":"binary-expr","locations":[{"start":{"line":72,"column":17},"end":{"line":72,"column":24}},{"start":{"line":72,"column":24},"end":{"line":72,"column":null}}],"line":72},"8":{"loc":{"start":{"line":75,"column":57},"end":{"line":75,"column":79}},"type":"cond-expr","locations":[{"start":{"line":75,"column":64},"end":{"line":75,"column":75}},{"start":{"line":75,"column":75},"end":{"line":75,"column":79}}],"line":75},"9":{"loc":{"start":{"line":77,"column":6},"end":{"line":79,"column":null}},"type":"if","locations":[{"start":{"line":77,"column":6},"end":{"line":79,"column":null}},{"start":{},"end":{}}],"line":77},"10":{"loc":{"start":{"line":104,"column":18},"end":{"line":104,"column":null}},"type":"cond-expr","locations":[{"start":{"line":104,"column":48},"end":{"line":104,"column":63}},{"start":{"line":104,"column":63},"end":{"line":104,"column":null}}],"line":104},"11":{"loc":{"start":{"line":106,"column":8},"end":{"line":106,"column":null}},"type":"if","locations":[{"start":{"line":106,"column":8},"end":{"line":106,"column":null}},{"start":{},"end":{}}],"line":106},"12":{"loc":{"start":{"line":113,"column":16},"end":{"line":113,"column":null}},"type":"binary-expr","locations":[{"start":{"line":113,"column":16},"end":{"line":113,"column":26}},{"start":{"line":113,"column":26},"end":{"line":113,"column":null}}],"line":113},"13":{"loc":{"start":{"line":115,"column":37},"end":{"line":115,"column":null}},"type":"cond-expr","locations":[{"start":{"line":115,"column":61},"end":{"line":115,"column":91}},{"start":{"line":115,"column":91},"end":{"line":115,"column":null}}],"line":115},"14":{"loc":{"start":{"line":115,"column":91},"end":{"line":115,"column":null}},"type":"binary-expr","locations":[{"start":{"line":115,"column":91},"end":{"line":115,"column":96}},{"start":{"line":115,"column":96},"end":{"line":115,"column":null}}],"line":115},"15":{"loc":{"start":{"line":117,"column":46},"end":{"line":117,"column":55}},"type":"binary-expr","locations":[{"start":{"line":117,"column":46},"end":{"line":117,"column":53}},{"start":{"line":117,"column":53},"end":{"line":117,"column":55}}],"line":117},"16":{"loc":{"start":{"line":127,"column":49},"end":{"line":127,"column":67}},"type":"binary-expr","locations":[{"start":{"line":127,"column":49},"end":{"line":127,"column":59}},{"start":{"line":127,"column":59},"end":{"line":127,"column":67}}],"line":127},"17":{"loc":{"start":{"line":150,"column":6},"end":{"line":152,"column":null}},"type":"if","locations":[{"start":{"line":150,"column":6},"end":{"line":152,"column":null}},{"start":{},"end":{}}],"line":150},"18":{"loc":{"start":{"line":153,"column":6},"end":{"line":155,"column":null}},"type":"if","locations":[{"start":{"line":153,"column":6},"end":{"line":155,"column":null}},{"start":{},"end":{}}],"line":153},"19":{"loc":{"start":{"line":153,"column":10},"end":{"line":153,"column":63}},"type":"binary-expr","locations":[{"start":{"line":153,"column":10},"end":{"line":153,"column":23}},{"start":{"line":153,"column":23},"end":{"line":153,"column":63}}],"line":153},"20":{"loc":{"start":{"line":158,"column":6},"end":{"line":158,"column":null}},"type":"if","locations":[{"start":{"line":158,"column":6},"end":{"line":158,"column":null}},{"start":{},"end":{}}],"line":158},"21":{"loc":{"start":{"line":163,"column":6},"end":{"line":182,"column":null}},"type":"if","locations":[{"start":{"line":163,"column":6},"end":{"line":182,"column":null}},{"start":{},"end":{}}],"line":163},"22":{"loc":{"start":{"line":163,"column":10},"end":{"line":163,"column":25}},"type":"binary-expr","locations":[{"start":{"line":163,"column":10},"end":{"line":163,"column":18}},{"start":{"line":163,"column":18},"end":{"line":163,"column":25}}],"line":163},"23":{"loc":{"start":{"line":164,"column":24},"end":{"line":164,"column":37}},"type":"binary-expr","locations":[{"start":{"line":164,"column":24},"end":{"line":164,"column":32}},{"start":{"line":164,"column":32},"end":{"line":164,"column":37}}],"line":164},"24":{"loc":{"start":{"line":168,"column":12},"end":{"line":169,"column":null}},"type":"binary-expr","locations":[{"start":{"line":168,"column":12},"end":{"line":168,"column":null}},{"start":{"line":168,"column":50},"end":{"line":169,"column":null}}],"line":168},"25":{"loc":{"start":{"line":168,"column":50},"end":{"line":169,"column":44}},"type":"binary-expr","locations":[{"start":{"line":169,"column":14},"end":{"line":169,"column":42}},{"start":{"line":169,"column":42},"end":{"line":169,"column":44}}],"line":168},"26":{"loc":{"start":{"line":169,"column":14},"end":{"line":169,"column":42}},"type":"cond-expr","locations":[{"start":{"line":169,"column":21},"end":{"line":169,"column":30}},{"start":{"line":169,"column":30},"end":{"line":169,"column":42}}],"line":169},"27":{"loc":{"start":{"line":171,"column":8},"end":{"line":176,"column":null}},"type":"if","locations":[{"start":{"line":171,"column":8},"end":{"line":176,"column":null}},{"start":{},"end":{}}],"line":171},"28":{"loc":{"start":{"line":172,"column":54},"end":{"line":172,"column":78}},"type":"cond-expr","locations":[{"start":{"line":172,"column":61},"end":{"line":172,"column":70}},{"start":{"line":172,"column":70},"end":{"line":172,"column":78}}],"line":172},"29":{"loc":{"start":{"line":174,"column":36},"end":{"line":174,"column":60}},"type":"cond-expr","locations":[{"start":{"line":174,"column":43},"end":{"line":174,"column":52}},{"start":{"line":174,"column":52},"end":{"line":174,"column":60}}],"line":174},"30":{"loc":{"start":{"line":174,"column":64},"end":{"line":174,"column":78}},"type":"binary-expr","locations":[{"start":{"line":174,"column":64},"end":{"line":174,"column":72}},{"start":{"line":174,"column":72},"end":{"line":174,"column":78}}],"line":174},"31":{"loc":{"start":{"line":174,"column":89},"end":{"line":174,"column":115}},"type":"cond-expr","locations":[{"start":{"line":174,"column":96},"end":{"line":174,"column":106}},{"start":{"line":174,"column":106},"end":{"line":174,"column":115}}],"line":174},"32":{"loc":{"start":{"line":174,"column":119},"end":{"line":174,"column":null}},"type":"binary-expr","locations":[{"start":{"line":174,"column":119},"end":{"line":174,"column":152}},{"start":{"line":174,"column":152},"end":{"line":174,"column":null}}],"line":174},"33":{"loc":{"start":{"line":179,"column":8},"end":{"line":181,"column":null}},"type":"if","locations":[{"start":{"line":179,"column":8},"end":{"line":181,"column":null}},{"start":{},"end":{}}],"line":179},"34":{"loc":{"start":{"line":183,"column":26},"end":{"line":183,"column":null}},"type":"binary-expr","locations":[{"start":{"line":183,"column":26},"end":{"line":183,"column":79}},{"start":{"line":183,"column":79},"end":{"line":183,"column":null}}],"line":183},"35":{"loc":{"start":{"line":184,"column":40},"end":{"line":184,"column":95}},"type":"binary-expr","locations":[{"start":{"line":184,"column":40},"end":{"line":184,"column":56}},{"start":{"line":184,"column":56},"end":{"line":184,"column":95}}],"line":184},"36":{"loc":{"start":{"line":188,"column":12},"end":{"line":188,"column":null}},"type":"cond-expr","locations":[{"start":{"line":188,"column":24},"end":{"line":188,"column":49}},{"start":{"line":188,"column":49},"end":{"line":188,"column":null}}],"line":188},"37":{"loc":{"start":{"line":189,"column":12},"end":{"line":189,"column":null}},"type":"cond-expr","locations":[{"start":{"line":189,"column":36},"end":{"line":189,"column":57}},{"start":{"line":189,"column":57},"end":{"line":189,"column":null}}],"line":189},"38":{"loc":{"start":{"line":190,"column":12},"end":{"line":190,"column":null}},"type":"cond-expr","locations":[{"start":{"line":190,"column":26},"end":{"line":190,"column":55}},{"start":{"line":190,"column":55},"end":{"line":190,"column":null}}],"line":190},"39":{"loc":{"start":{"line":197,"column":12},"end":{"line":199,"column":null}},"type":"cond-expr","locations":[{"start":{"line":198,"column":12},"end":{"line":198,"column":null}},{"start":{"line":199,"column":12},"end":{"line":199,"column":null}}],"line":197},"40":{"loc":{"start":{"line":200,"column":12},"end":{"line":200,"column":null}},"type":"cond-expr","locations":[{"start":{"line":200,"column":24},"end":{"line":200,"column":52}},{"start":{"line":200,"column":52},"end":{"line":200,"column":null}}],"line":200}},"s":{"0":2,"1":2,"2":4,"3":2,"4":2,"5":2,"6":1500,"7":2,"8":2,"9":2,"10":2,"11":35,"12":6,"13":6,"14":8,"15":2,"16":4,"17":4,"18":3,"19":3,"20":4,"21":4,"22":1512,"23":4,"24":4,"25":3,"26":2,"27":1,"28":1,"29":2,"30":1,"31":35,"32":2,"33":2,"34":3,"35":0,"36":2,"37":2,"38":2,"39":5,"40":2,"41":2,"42":1,"43":1,"44":2,"45":35,"46":6,"47":1,"48":5,"49":0,"50":5,"51":5,"52":5,"53":0,"54":5,"55":5,"56":4,"57":4,"58":4,"59":79,"60":4,"61":1,"62":3,"63":1,"64":3,"65":3,"66":64,"67":3,"68":1,"69":4,"70":6,"71":251,"72":6,"73":101,"74":6},"f":{"0":4,"1":1500,"2":35,"3":6,"4":4,"5":1512,"6":2,"7":5,"8":1,"9":6,"10":79,"11":3,"12":64,"13":251,"14":101},"b":{"0":[2,2],"1":[2,0],"2":[2,2],"3":[2,4],"4":[2,6],"5":[4,0],"6":[1512,1,0],"7":[1512,1],"8":[2,2],"9":[2,1],"10":[1,1],"11":[0,3],"12":[2,1],"13":[4,1],"14":[1,1],"15":[2,0],"16":[2,1],"17":[1,5],"18":[0,5],"19":[5,0],"20":[0,5],"21":[4,1],"22":[5,2],"23":[4,1],"24":[79,79],"25":[79,0],"26":[76,3],"27":[1,3],"28":[3,0],"29":[1,0],"30":[1,0],"31":[1,0],"32":[1,0],"33":[1,2],"34":[4,0],"35":[251,251],"36":[0,101],"37":[101,0],"38":[101,0],"39":[1,3],"40":[1,3]},"meta":{"lastBranch":41,"lastFunction":15,"lastStatement":75,"seen":{"s:10:19:10:Infinity":0,"s:11:20:11:Infinity":1,"f:14:9:14:23":0,"b:15:2:15:Infinity:undefined:undefined:undefined:undefined":0,"s:15:2:15:Infinity":2,"s:15:26:15:Infinity":3,"s:16:17:16:Infinity":4,"s:17:15:17:Infinity":5,"f:17:20:17:28":1,"s:17:37:17:53":6,"s:18:15:18:Infinity":7,"b:19:2:19:Infinity:undefined:undefined:undefined:undefined":1,"s:19:2:19:Infinity":8,"b:19:6:19:28:19:28:19:60":2,"s:19:60:19:Infinity":9,"s:20:2:23:Infinity":10,"f:26:16:26:37":2,"s:27:2:84:Infinity":11,"f:46:27:46:34":3,"s:47:18:47:Infinity":12,"b:47:57:47:69:47:69:47:80":3,"s:48:6:50:Infinity":13,"b:49:8:49:Infinity:undefined:undefined:undefined:undefined":4,"s:49:8:49:Infinity":14,"s:49:45:49:Infinity":15,"s:51:16:51:Infinity":16,"s:52:41:61:Infinity":17,"s:64:24:64:Infinity":18,"s:65:12:76:Infinity":19,"f:65:12:65:24":4,"s:69:20:69:Infinity":20,"b:69:20:69:33:69:33:69:Infinity":5,"s:70:23:73:Infinity":21,"f:70:27:70:32":5,"s:70:39:73:10":22,"b:71:19:71:27:71:27:71:45:71:45:71:59":6,"b:72:17:72:24:72:24:72:Infinity":7,"s:74:31:74:Infinity":23,"s:75:8:75:Infinity":24,"b:75:64:75:75:75:75:75:79":8,"b:77:6:79:Infinity:undefined:undefined:undefined:undefined":9,"s:77:6:79:Infinity":25,"s:78:8:78:Infinity":26,"s:80:46:80:Infinity":27,"s:81:6:81:Infinity":28,"s:81:28:81:Infinity":29,"s:82:6:82:Infinity":30,"s:86:2:129:Infinity":31,"f:103:30:103:37":6,"s:104:18:104:Infinity":32,"b:104:48:104:63:104:63:104:Infinity":10,"s:105:6:107:Infinity":33,"b:106:8:106:Infinity:undefined:undefined:undefined:undefined":11,"s:106:8:106:Infinity":34,"s:106:45:106:Infinity":35,"s:108:16:108:Infinity":36,"s:109:41:114:Infinity":37,"b:113:16:113:26:113:26:113:Infinity":12,"s:115:12:115:Infinity":38,"f:115:12:115:21":7,"s:115:37:115:Infinity":39,"b:115:61:115:91:115:91:115:Infinity":13,"b:115:91:115:96:115:96:115:Infinity":14,"s:116:43:116:Infinity":40,"s:117:6:126:Infinity":41,"b:117:46:117:53:117:53:117:55":15,"s:118:8:125:Infinity":42,"f:118:23:118:28":8,"s:118:35:125:10":43,"s:127:6:127:Infinity":44,"b:127:49:127:59:127:59:127:67":16,"s:131:2:203:Infinity":45,"f:149:27:149:34":9,"b:150:6:152:Infinity:undefined:undefined:undefined:undefined":17,"s:150:6:152:Infinity":46,"s:151:8:151:Infinity":47,"b:153:6:155:Infinity:undefined:undefined:undefined:undefined":18,"s:153:6:155:Infinity":48,"b:153:10:153:23:153:23:153:63":19,"s:154:8:154:Infinity":49,"s:156:16:156:Infinity":50,"s:157:47:157:Infinity":51,"b:158:6:158:Infinity:undefined:undefined:undefined:undefined":20,"s:158:6:158:Infinity":52,"s:158:21:158:Infinity":53,"s:162:37:162:Infinity":54,"b:163:6:182:Infinity:undefined:undefined:undefined:undefined":21,"s:163:6:182:Infinity":55,"b:163:10:163:18:163:18:163:25":22,"s:164:14:164:Infinity":56,"b:164:24:164:32:164:32:164:37":23,"s:165:22:165:Infinity":57,"s:166:24:170:Infinity":58,"f:166:30:166:Infinity":10,"s:168:12:169:Infinity":59,"b:168:12:168:Infinity:168:50:169:Infinity":24,"b:169:14:169:42:169:42:169:44":25,"b:169:21:169:30:169:30:169:42":26,"b:171:8:176:Infinity:undefined:undefined:undefined:undefined":27,"s:171:8:176:Infinity":60,"s:172:24:172:Infinity":61,"f:172:42:172:47":11,"s:172:54:172:78":62,"b:172:61:172:70:172:70:172:78":28,"s:173:10:175:Infinity":63,"b:174:43:174:52:174:52:174:60":29,"b:174:64:174:72:174:72:174:78":30,"b:174:96:174:106:174:106:174:115":31,"b:174:119:174:152:174:152:174:Infinity":32,"s:177:32:177:Infinity":64,"s:178:8:178:Infinity":65,"f:178:63:178:68":12,"s:178:74:178:85":66,"b:179:8:181:Infinity:undefined:undefined:undefined:undefined":33,"s:179:8:181:Infinity":67,"s:180:10:180:Infinity":68,"s:183:26:183:Infinity":69,"b:183:26:183:79:183:79:183:Infinity":34,"s:184:22:184:Infinity":70,"f:184:26:184:34":13,"s:184:40:184:95":71,"b:184:40:184:56:184:56:184:95":35,"s:185:21:191:Infinity":72,"f:185:49:185:54":14,"s:185:61:191:8":73,"b:188:24:188:49:188:49:188:Infinity":36,"b:189:36:189:57:189:57:189:Infinity":37,"b:190:26:190:55:190:55:190:Infinity":38,"s:192:6:201:Infinity":74,"b:198:12:198:Infinity:199:12:199:Infinity":39,"b:200:24:200:52:200:52:200:Infinity":40},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/notify.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/notify.ts","statementMap":{"0":{"start":{"line":20,"column":16},"end":{"line":20,"column":null}},"1":{"start":{"line":24,"column":2},"end":{"line":24,"column":null}},"2":{"start":{"line":30,"column":2},"end":{"line":98,"column":null}},"3":{"start":{"line":50,"column":6},"end":{"line":58,"column":null}},"4":{"start":{"line":51,"column":34},"end":{"line":51,"column":null}},"5":{"start":{"line":52,"column":23},"end":{"line":52,"column":null}},"6":{"start":{"line":52,"column":102},"end":{"line":52,"column":122}},"7":{"start":{"line":53,"column":25},"end":{"line":53,"column":null}},"8":{"start":{"line":53,"column":45},"end":{"line":53,"column":66}},"9":{"start":{"line":53,"column":79},"end":{"line":53,"column":90}},"10":{"start":{"line":54,"column":8},"end":{"line":57,"column":null}},"11":{"start":{"line":60,"column":19},"end":{"line":60,"column":null}},"12":{"start":{"line":61,"column":23},"end":{"line":61,"column":null}},"13":{"start":{"line":61,"column":95},"end":{"line":61,"column":117}},"14":{"start":{"line":63,"column":6},"end":{"line":72,"column":null}},"15":{"start":{"line":64,"column":8},"end":{"line":70,"column":null}},"16":{"start":{"line":71,"column":8},"end":{"line":71,"column":null}},"17":{"start":{"line":74,"column":6},"end":{"line":87,"column":null}},"18":{"start":{"line":78,"column":8},"end":{"line":86,"column":null}},"19":{"start":{"line":88,"column":22},"end":{"line":88,"column":null}},"20":{"start":{"line":89,"column":6},"end":{"line":96,"column":null}}},"fnMap":{"0":{"name":"resetNotifyLimiter","decl":{"start":{"line":23,"column":16},"end":{"line":23,"column":43}},"loc":{"start":{"line":23,"column":43},"end":{"line":25,"column":null}},"line":23},"1":{"name":"registerNotifyTools","decl":{"start":{"line":27,"column":16},"end":{"line":27,"column":36}},"loc":{"start":{"line":27,"column":83},"end":{"line":99,"column":null}},"line":27},"2":{"name":"(anonymous_2)","decl":{"start":{"line":49,"column":33},"end":{"line":49,"column":40}},"loc":{"start":{"line":49,"column":101},"end":{"line":97,"column":5}},"line":49},"3":{"name":"(anonymous_3)","decl":{"start":{"line":52,"column":88},"end":{"line":52,"column":96}},"loc":{"start":{"line":52,"column":102},"end":{"line":52,"column":122}},"line":52},"4":{"name":"(anonymous_4)","decl":{"start":{"line":53,"column":31},"end":{"line":53,"column":39}},"loc":{"start":{"line":53,"column":45},"end":{"line":53,"column":66}},"line":53},"5":{"name":"(anonymous_5)","decl":{"start":{"line":53,"column":68},"end":{"line":53,"column":73}},"loc":{"start":{"line":53,"column":79},"end":{"line":53,"column":90}},"line":53},"6":{"name":"(anonymous_6)","decl":{"start":{"line":61,"column":83},"end":{"line":61,"column":89}},"loc":{"start":{"line":61,"column":95},"end":{"line":61,"column":117}},"line":61}},"branchMap":{"0":{"loc":{"start":{"line":50,"column":6},"end":{"line":58,"column":null}},"type":"if","locations":[{"start":{"line":50,"column":6},"end":{"line":58,"column":null}},{"start":{},"end":{}}],"line":50},"1":{"loc":{"start":{"line":52,"column":36},"end":{"line":52,"column":86}},"type":"binary-expr","locations":[{"start":{"line":52,"column":36},"end":{"line":52,"column":84}},{"start":{"line":52,"column":84},"end":{"line":52,"column":86}}],"line":52},"2":{"loc":{"start":{"line":61,"column":23},"end":{"line":61,"column":null}},"type":"binary-expr","locations":[{"start":{"line":61,"column":23},"end":{"line":61,"column":56}},{"start":{"line":61,"column":50},"end":{"line":61,"column":null}}],"line":61},"3":{"loc":{"start":{"line":63,"column":6},"end":{"line":72,"column":null}},"type":"if","locations":[{"start":{"line":63,"column":6},"end":{"line":72,"column":null}},{"start":{},"end":{}}],"line":63},"4":{"loc":{"start":{"line":63,"column":10},"end":{"line":63,"column":46}},"type":"binary-expr","locations":[{"start":{"line":63,"column":10},"end":{"line":63,"column":22}},{"start":{"line":63,"column":22},"end":{"line":63,"column":46}}],"line":63},"5":{"loc":{"start":{"line":65,"column":18},"end":{"line":65,"column":null}},"type":"binary-expr","locations":[{"start":{"line":65,"column":18},"end":{"line":65,"column":32}},{"start":{"line":65,"column":32},"end":{"line":65,"column":null}}],"line":65},"6":{"loc":{"start":{"line":74,"column":6},"end":{"line":87,"column":null}},"type":"if","locations":[{"start":{"line":74,"column":6},"end":{"line":87,"column":null}},{"start":{},"end":{}}],"line":74},"7":{"loc":{"start":{"line":83,"column":37},"end":{"line":83,"column":62}},"type":"cond-expr","locations":[{"start":{"line":83,"column":45},"end":{"line":83,"column":57}},{"start":{"line":83,"column":57},"end":{"line":83,"column":62}}],"line":83},"8":{"loc":{"start":{"line":83,"column":66},"end":{"line":83,"column":88}},"type":"cond-expr","locations":[{"start":{"line":83,"column":73},"end":{"line":83,"column":84}},{"start":{"line":83,"column":84},"end":{"line":83,"column":88}}],"line":83},"9":{"loc":{"start":{"line":93,"column":35},"end":{"line":93,"column":60}},"type":"cond-expr","locations":[{"start":{"line":93,"column":43},"end":{"line":93,"column":55}},{"start":{"line":93,"column":55},"end":{"line":93,"column":60}}],"line":93},"10":{"loc":{"start":{"line":93,"column":64},"end":{"line":93,"column":86}},"type":"cond-expr","locations":[{"start":{"line":93,"column":71},"end":{"line":93,"column":82}},{"start":{"line":93,"column":82},"end":{"line":93,"column":86}}],"line":93}},"s":{"0":2,"1":7,"2":29,"3":23,"4":1,"5":1,"6":3,"7":1,"8":2,"9":1,"10":1,"11":22,"12":22,"13":2,"14":23,"15":1,"16":1,"17":21,"18":2,"19":19,"20":19},"f":{"0":7,"1":29,"2":23,"3":3,"4":2,"5":1,"6":2},"b":{"0":[1,22],"1":[1,0],"2":[22,2],"3":[1,22],"4":[23,12],"5":[1,1],"6":[2,19],"7":[0,2],"8":[0,2],"9":[1,18],"10":[0,19]},"meta":{"lastBranch":11,"lastFunction":7,"lastStatement":21,"seen":{"s:20:16:20:Infinity":0,"f:23:16:23:43":0,"s:24:2:24:Infinity":1,"f:27:16:27:36":1,"s:30:2:98:Infinity":2,"f:49:33:49:40":2,"b:50:6:58:Infinity:undefined:undefined:undefined:undefined":0,"s:50:6:58:Infinity":3,"s:51:34:51:Infinity":4,"s:52:23:52:Infinity":5,"b:52:36:52:84:52:84:52:86":1,"f:52:88:52:96":3,"s:52:102:52:122":6,"s:53:25:53:Infinity":7,"f:53:31:53:39":4,"s:53:45:53:66":8,"f:53:68:53:73":5,"s:53:79:53:90":9,"s:54:8:57:Infinity":10,"s:60:19:60:Infinity":11,"s:61:23:61:Infinity":12,"b:61:23:61:56:61:50:61:Infinity":2,"f:61:83:61:89":6,"s:61:95:61:117":13,"b:63:6:72:Infinity:undefined:undefined:undefined:undefined":3,"s:63:6:72:Infinity":14,"b:63:10:63:22:63:22:63:46":4,"s:64:8:70:Infinity":15,"b:65:18:65:32:65:32:65:Infinity":5,"s:71:8:71:Infinity":16,"b:74:6:87:Infinity:undefined:undefined:undefined:undefined":6,"s:74:6:87:Infinity":17,"s:78:8:86:Infinity":18,"b:83:45:83:57:83:57:83:62":7,"b:83:73:83:84:83:84:83:88":8,"s:88:22:88:Infinity":19,"s:89:6:96:Infinity":20,"b:93:43:93:55:93:55:93:60":9,"b:93:71:93:82:93:82:93:86":10},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/presence.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/presence.ts","statementMap":{"0":{"start":{"line":14,"column":2},"end":{"line":65,"column":null}},"1":{"start":{"line":27,"column":18},"end":{"line":27,"column":null}},"2":{"start":{"line":28,"column":21},"end":{"line":30,"column":null}},"3":{"start":{"line":29,"column":23},"end":{"line":29,"column":87}},"4":{"start":{"line":30,"column":21},"end":{"line":30,"column":100}},"5":{"start":{"line":31,"column":20},"end":{"line":33,"column":null}},"6":{"start":{"line":32,"column":23},"end":{"line":32,"column":85}},"7":{"start":{"line":33,"column":21},"end":{"line":33,"column":93}},"8":{"start":{"line":35,"column":6},"end":{"line":37,"column":null}},"9":{"start":{"line":36,"column":8},"end":{"line":36,"column":null}},"10":{"start":{"line":39,"column":16},"end":{"line":39,"column":null}},"11":{"start":{"line":40,"column":18},"end":{"line":40,"column":null}},"12":{"start":{"line":40,"column":36},"end":{"line":40,"column":47}},"13":{"start":{"line":41,"column":41},"end":{"line":48,"column":null}},"14":{"start":{"line":49,"column":82},"end":{"line":49,"column":null}},"15":{"start":{"line":50,"column":6},"end":{"line":55,"column":null}},"16":{"start":{"line":51,"column":8},"end":{"line":54,"column":null}},"17":{"start":{"line":51,"column":53},"end":{"line":54,"column":10}},"18":{"start":{"line":56,"column":6},"end":{"line":63,"column":null}}},"fnMap":{"0":{"name":"registerPresenceTools","decl":{"start":{"line":13,"column":16},"end":{"line":13,"column":38}},"loc":{"start":{"line":13,"column":85},"end":{"line":66,"column":null}},"line":13},"1":{"name":"(anonymous_1)","decl":{"start":{"line":26,"column":28},"end":{"line":26,"column":35}},"loc":{"start":{"line":26,"column":49},"end":{"line":64,"column":5}},"line":26},"2":{"name":"(anonymous_2)","decl":{"start":{"line":29,"column":9},"end":{"line":29,"column":17}},"loc":{"start":{"line":29,"column":23},"end":{"line":29,"column":87}},"line":29},"3":{"name":"(anonymous_3)","decl":{"start":{"line":30,"column":9},"end":{"line":30,"column":14}},"loc":{"start":{"line":30,"column":21},"end":{"line":30,"column":100}},"line":30},"4":{"name":"(anonymous_4)","decl":{"start":{"line":32,"column":9},"end":{"line":32,"column":17}},"loc":{"start":{"line":32,"column":23},"end":{"line":32,"column":85}},"line":32},"5":{"name":"(anonymous_5)","decl":{"start":{"line":33,"column":9},"end":{"line":33,"column":14}},"loc":{"start":{"line":33,"column":21},"end":{"line":33,"column":93}},"line":33},"6":{"name":"(anonymous_6)","decl":{"start":{"line":40,"column":25},"end":{"line":40,"column":30}},"loc":{"start":{"line":40,"column":36},"end":{"line":40,"column":47}},"line":40},"7":{"name":"(anonymous_7)","decl":{"start":{"line":51,"column":41},"end":{"line":51,"column":46}},"loc":{"start":{"line":51,"column":53},"end":{"line":54,"column":10}},"line":51}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":23},"end":{"line":29,"column":87}},"type":"binary-expr","locations":[{"start":{"line":29,"column":23},"end":{"line":29,"column":48}},{"start":{"line":29,"column":48},"end":{"line":29,"column":87}}],"line":29},"1":{"loc":{"start":{"line":32,"column":23},"end":{"line":32,"column":85}},"type":"binary-expr","locations":[{"start":{"line":32,"column":23},"end":{"line":32,"column":46}},{"start":{"line":32,"column":46},"end":{"line":32,"column":85}}],"line":32},"2":{"loc":{"start":{"line":33,"column":70},"end":{"line":33,"column":91}},"type":"binary-expr","locations":[{"start":{"line":33,"column":70},"end":{"line":33,"column":89}},{"start":{"line":33,"column":89},"end":{"line":33,"column":91}}],"line":33},"3":{"loc":{"start":{"line":35,"column":6},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":6},"end":{"line":37,"column":null}},{"start":{},"end":{}}],"line":35},"4":{"loc":{"start":{"line":51,"column":24},"end":{"line":51,"column":39}},"type":"binary-expr","locations":[{"start":{"line":51,"column":24},"end":{"line":51,"column":37}},{"start":{"line":51,"column":37},"end":{"line":51,"column":39}}],"line":51},"5":{"loc":{"start":{"line":52,"column":19},"end":{"line":52,"column":59}},"type":"binary-expr","locations":[{"start":{"line":52,"column":19},"end":{"line":52,"column":27}},{"start":{"line":52,"column":27},"end":{"line":52,"column":45}},{"start":{"line":52,"column":45},"end":{"line":52,"column":59}}],"line":52},"6":{"loc":{"start":{"line":53,"column":23},"end":{"line":53,"column":50}},"type":"binary-expr","locations":[{"start":{"line":53,"column":23},"end":{"line":53,"column":30}},{"start":{"line":53,"column":30},"end":{"line":53,"column":41}},{"start":{"line":53,"column":41},"end":{"line":53,"column":50}}],"line":53}},"s":{"0":25,"1":4,"2":4,"3":20,"4":7,"5":4,"6":20,"7":8,"8":4,"9":0,"10":4,"11":4,"12":5,"13":4,"14":3,"15":3,"16":5,"17":8,"18":3},"f":{"0":25,"1":4,"2":20,"3":7,"4":20,"5":8,"6":5,"7":8},"b":{"0":[20,8],"1":[20,8],"2":[8,4],"3":[0,4],"4":[5,0],"5":[8,0,0],"6":[8,0,0]},"meta":{"lastBranch":7,"lastFunction":8,"lastStatement":19,"seen":{"f:13:16:13:38":0,"s:14:2:65:Infinity":0,"f:26:28:26:35":1,"s:27:18:27:Infinity":1,"s:28:21:30:Infinity":2,"f:29:9:29:17":2,"s:29:23:29:87":3,"b:29:23:29:48:29:48:29:87":0,"f:30:9:30:14":3,"s:30:21:30:100":4,"s:31:20:33:Infinity":5,"f:32:9:32:17":4,"s:32:23:32:85":6,"b:32:23:32:46:32:46:32:85":1,"f:33:9:33:14":5,"s:33:21:33:93":7,"b:33:70:33:89:33:89:33:91":2,"b:35:6:37:Infinity:undefined:undefined:undefined:undefined":3,"s:35:6:37:Infinity":8,"s:36:8:36:Infinity":9,"s:39:16:39:Infinity":10,"s:40:18:40:Infinity":11,"f:40:25:40:30":6,"s:40:36:40:47":12,"s:41:41:48:Infinity":13,"s:49:82:49:Infinity":14,"s:50:6:55:Infinity":15,"s:51:8:54:Infinity":16,"b:51:24:51:37:51:37:51:39":4,"f:51:41:51:46":7,"s:51:53:54:10":17,"b:52:19:52:27:52:27:52:45:52:45:52:59":5,"b:53:23:53:30:53:30:53:41:53:41:53:50":6,"s:56:6:63:Infinity":18},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/scenes.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/scenes.ts","statementMap":{"0":{"start":{"line":19,"column":2},"end":{"line":24,"column":null}},"1":{"start":{"line":30,"column":2},"end":{"line":80,"column":null}},"2":{"start":{"line":47,"column":22},"end":{"line":47,"column":null}},"3":{"start":{"line":48,"column":6},"end":{"line":48,"column":null}},"4":{"start":{"line":48,"column":20},"end":{"line":48,"column":null}},"5":{"start":{"line":50,"column":6},"end":{"line":56,"column":null}},"6":{"start":{"line":51,"column":18},"end":{"line":51,"column":null}},"7":{"start":{"line":52,"column":8},"end":{"line":55,"column":null}},"8":{"start":{"line":53,"column":10},"end":{"line":53,"column":null}},"9":{"start":{"line":54,"column":10},"end":{"line":54,"column":null}},"10":{"start":{"line":58,"column":6},"end":{"line":60,"column":null}},"11":{"start":{"line":58,"column":50},"end":{"line":58,"column":84}},"12":{"start":{"line":59,"column":8},"end":{"line":59,"column":null}},"13":{"start":{"line":61,"column":21},"end":{"line":68,"column":null}},"14":{"start":{"line":69,"column":6},"end":{"line":77,"column":null}},"15":{"start":{"line":70,"column":8},"end":{"line":76,"column":null}},"16":{"start":{"line":78,"column":6},"end":{"line":78,"column":null}}},"fnMap":{"0":{"name":"slugify","decl":{"start":{"line":18,"column":9},"end":{"line":18,"column":17}},"loc":{"start":{"line":18,"column":39},"end":{"line":25,"column":null}},"line":18},"1":{"name":"registerSceneTools","decl":{"start":{"line":27,"column":16},"end":{"line":27,"column":35}},"loc":{"start":{"line":27,"column":82},"end":{"line":81,"column":null}},"line":27},"2":{"name":"(anonymous_2)","decl":{"start":{"line":46,"column":30},"end":{"line":46,"column":37}},"loc":{"start":{"line":46,"column":84},"end":{"line":79,"column":5}},"line":46},"3":{"name":"(anonymous_3)","decl":{"start":{"line":58,"column":38},"end":{"line":58,"column":44}},"loc":{"start":{"line":58,"column":50},"end":{"line":58,"column":84}},"line":58}},"branchMap":{"0":{"loc":{"start":{"line":48,"column":6},"end":{"line":48,"column":null}},"type":"if","locations":[{"start":{"line":48,"column":6},"end":{"line":48,"column":null}},{"start":{},"end":{}}],"line":48},"1":{"loc":{"start":{"line":52,"column":8},"end":{"line":55,"column":null}},"type":"if","locations":[{"start":{"line":52,"column":8},"end":{"line":55,"column":null}},{"start":{},"end":{}}],"line":52},"2":{"loc":{"start":{"line":53,"column":26},"end":{"line":53,"column":51}},"type":"binary-expr","locations":[{"start":{"line":53,"column":26},"end":{"line":53,"column":40}},{"start":{"line":53,"column":40},"end":{"line":53,"column":51}}],"line":53},"3":{"loc":{"start":{"line":54,"column":26},"end":{"line":54,"column":60}},"type":"binary-expr","locations":[{"start":{"line":54,"column":26},"end":{"line":54,"column":38}},{"start":{"line":54,"column":38},"end":{"line":54,"column":60}}],"line":54},"4":{"loc":{"start":{"line":58,"column":6},"end":{"line":60,"column":null}},"type":"if","locations":[{"start":{"line":58,"column":6},"end":{"line":60,"column":null}},{"start":{},"end":{}}],"line":58},"5":{"loc":{"start":{"line":69,"column":6},"end":{"line":77,"column":null}},"type":"if","locations":[{"start":{"line":69,"column":6},"end":{"line":77,"column":null}},{"start":{},"end":{}}],"line":69}},"s":{"0":3,"1":26,"2":3,"3":3,"4":0,"5":3,"6":4,"7":4,"8":1,"9":1,"10":2,"11":1,"12":1,"13":1,"14":1,"15":1,"16":0},"f":{"0":3,"1":26,"2":3,"3":1},"b":{"0":[0,3],"1":[1,3],"2":[1,1],"3":[1,0],"4":[1,1],"5":[1,0]},"meta":{"lastBranch":6,"lastFunction":4,"lastStatement":17,"seen":{"f:18:9:18:17":0,"s:19:2:24:Infinity":0,"f:27:16:27:35":1,"s:30:2:80:Infinity":1,"f:46:30:46:37":2,"s:47:22:47:Infinity":2,"b:48:6:48:Infinity:undefined:undefined:undefined:undefined":0,"s:48:6:48:Infinity":3,"s:48:20:48:Infinity":4,"s:50:6:56:Infinity":5,"s:51:18:51:Infinity":6,"b:52:8:55:Infinity:undefined:undefined:undefined:undefined":1,"s:52:8:55:Infinity":7,"s:53:10:53:Infinity":8,"b:53:26:53:40:53:40:53:51":2,"s:54:10:54:Infinity":9,"b:54:26:54:38:54:38:54:60":3,"b:58:6:60:Infinity:undefined:undefined:undefined:undefined":4,"s:58:6:60:Infinity":10,"f:58:38:58:44":3,"s:58:50:58:84":11,"s:59:8:59:Infinity":12,"s:61:21:68:Infinity":13,"b:69:6:77:Infinity:undefined:undefined:undefined:undefined":5,"s:69:6:77:Infinity":14,"s:70:8:76:Infinity":15,"s:78:6:78:Infinity":16},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/selftest.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/selftest.ts","statementMap":{"0":{"start":{"line":7,"column":25},"end":{"line":7,"column":null}},"1":{"start":{"line":8,"column":19},"end":{"line":8,"column":null}},"2":{"start":{"line":9,"column":21},"end":{"line":9,"column":null}},"3":{"start":{"line":12,"column":13},"end":{"line":12,"column":null}},"4":{"start":{"line":13,"column":2},"end":{"line":24,"column":null}},"5":{"start":{"line":14,"column":4},"end":{"line":20,"column":null}},"6":{"start":{"line":17,"column":18},"end":{"line":17,"column":null}},"7":{"start":{"line":17,"column":35},"end":{"line":17,"column":94}},"8":{"start":{"line":18,"column":8},"end":{"line":18,"column":null}},"9":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"10":{"start":{"line":23,"column":4},"end":{"line":23,"column":null}},"11":{"start":{"line":33,"column":2},"end":{"line":83,"column":null}},"12":{"start":{"line":45,"column":26},"end":{"line":45,"column":null}},"13":{"start":{"line":46,"column":17},"end":{"line":46,"column":null}},"14":{"start":{"line":46,"column":49},"end":{"line":46,"column":74}},"15":{"start":{"line":47,"column":19},"end":{"line":47,"column":null}},"16":{"start":{"line":47,"column":37},"end":{"line":47,"column":64}},"17":{"start":{"line":48,"column":25},"end":{"line":48,"column":null}},"18":{"start":{"line":49,"column":25},"end":{"line":49,"column":null}},"19":{"start":{"line":53,"column":6},"end":{"line":69,"column":null}},"20":{"start":{"line":54,"column":8},"end":{"line":54,"column":null}},"21":{"start":{"line":55,"column":8},"end":{"line":59,"column":null}},"22":{"start":{"line":60,"column":13},"end":{"line":69,"column":null}},"23":{"start":{"line":61,"column":8},"end":{"line":61,"column":null}},"24":{"start":{"line":62,"column":8},"end":{"line":62,"column":null}},"25":{"start":{"line":63,"column":13},"end":{"line":69,"column":null}},"26":{"start":{"line":64,"column":8},"end":{"line":64,"column":null}},"27":{"start":{"line":65,"column":8},"end":{"line":65,"column":null}},"28":{"start":{"line":67,"column":8},"end":{"line":67,"column":null}},"29":{"start":{"line":68,"column":8},"end":{"line":68,"column":null}},"30":{"start":{"line":71,"column":6},"end":{"line":81,"column":null}}},"fnMap":{"0":{"name":"probe","decl":{"start":{"line":11,"column":15},"end":{"line":11,"column":21}},"loc":{"start":{"line":11,"column":111},"end":{"line":25,"column":null}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":10},"end":{"line":16,"column":19}},"loc":{"start":{"line":16,"column":33},"end":{"line":19,"column":7}},"line":16},"2":{"name":"(anonymous_2)","decl":{"start":{"line":17,"column":18},"end":{"line":17,"column":35}},"loc":{"start":{"line":17,"column":35},"end":{"line":17,"column":94}},"line":17},"3":{"name":"registerSelfTestTools","decl":{"start":{"line":32,"column":16},"end":{"line":32,"column":38}},"loc":{"start":{"line":32,"column":85},"end":{"line":84,"column":null}},"line":32},"4":{"name":"(anonymous_4)","decl":{"start":{"line":44,"column":29},"end":{"line":44,"column":41}},"loc":{"start":{"line":44,"column":41},"end":{"line":82,"column":5}},"line":44},"5":{"name":"(anonymous_5)","decl":{"start":{"line":46,"column":37},"end":{"line":46,"column":49}},"loc":{"start":{"line":46,"column":49},"end":{"line":46,"column":74}},"line":46},"6":{"name":"(anonymous_6)","decl":{"start":{"line":47,"column":25},"end":{"line":47,"column":37}},"loc":{"start":{"line":47,"column":37},"end":{"line":47,"column":64}},"line":47}},"branchMap":{"0":{"loc":{"start":{"line":23,"column":60},"end":{"line":23,"column":103}},"type":"cond-expr","locations":[{"start":{"line":23,"column":81},"end":{"line":23,"column":93}},{"start":{"line":23,"column":93},"end":{"line":23,"column":103}}],"line":23},"1":{"loc":{"start":{"line":46,"column":17},"end":{"line":46,"column":null}},"type":"cond-expr","locations":[{"start":{"line":46,"column":31},"end":{"line":46,"column":78}},{"start":{"line":46,"column":78},"end":{"line":46,"column":null}}],"line":46},"2":{"loc":{"start":{"line":53,"column":6},"end":{"line":69,"column":null}},"type":"if","locations":[{"start":{"line":53,"column":6},"end":{"line":69,"column":null}},{"start":{"line":60,"column":13},"end":{"line":69,"column":null}}],"line":53},"3":{"loc":{"start":{"line":53,"column":10},"end":{"line":53,"column":46}},"type":"binary-expr","locations":[{"start":{"line":53,"column":10},"end":{"line":53,"column":26}},{"start":{"line":53,"column":26},"end":{"line":53,"column":36}},{"start":{"line":53,"column":36},"end":{"line":53,"column":46}}],"line":53},"4":{"loc":{"start":{"line":55,"column":17},"end":{"line":59,"column":null}},"type":"cond-expr","locations":[{"start":{"line":56,"column":12},"end":{"line":56,"column":null}},{"start":{"line":57,"column":12},"end":{"line":59,"column":null}}],"line":55},"5":{"loc":{"start":{"line":57,"column":12},"end":{"line":59,"column":null}},"type":"cond-expr","locations":[{"start":{"line":58,"column":14},"end":{"line":58,"column":null}},{"start":{"line":59,"column":14},"end":{"line":59,"column":null}}],"line":57},"6":{"loc":{"start":{"line":58,"column":48},"end":{"line":58,"column":70}},"type":"binary-expr","locations":[{"start":{"line":58,"column":48},"end":{"line":58,"column":60}},{"start":{"line":58,"column":60},"end":{"line":58,"column":70}}],"line":58},"7":{"loc":{"start":{"line":59,"column":47},"end":{"line":59,"column":71}},"type":"binary-expr","locations":[{"start":{"line":59,"column":47},"end":{"line":59,"column":61}},{"start":{"line":59,"column":61},"end":{"line":59,"column":71}}],"line":59},"8":{"loc":{"start":{"line":60,"column":13},"end":{"line":69,"column":null}},"type":"if","locations":[{"start":{"line":60,"column":13},"end":{"line":69,"column":null}},{"start":{"line":63,"column":13},"end":{"line":69,"column":null}}],"line":60},"9":{"loc":{"start":{"line":63,"column":13},"end":{"line":69,"column":null}},"type":"if","locations":[{"start":{"line":63,"column":13},"end":{"line":69,"column":null}},{"start":{"line":66,"column":13},"end":{"line":69,"column":null}}],"line":63},"10":{"loc":{"start":{"line":63,"column":17},"end":{"line":63,"column":79}},"type":"binary-expr","locations":[{"start":{"line":63,"column":17},"end":{"line":63,"column":47}},{"start":{"line":63,"column":47},"end":{"line":63,"column":79}}],"line":63},"11":{"loc":{"start":{"line":76,"column":49},"end":{"line":76,"column":100}},"type":"cond-expr","locations":[{"start":{"line":76,"column":63},"end":{"line":76,"column":95}},{"start":{"line":76,"column":95},"end":{"line":76,"column":100}}],"line":76},"12":{"loc":{"start":{"line":76,"column":104},"end":{"line":76,"column":141}},"type":"cond-expr","locations":[{"start":{"line":76,"column":115},"end":{"line":76,"column":137}},{"start":{"line":76,"column":137},"end":{"line":76,"column":141}}],"line":76},"13":{"loc":{"start":{"line":77,"column":62},"end":{"line":77,"column":103}},"type":"cond-expr","locations":[{"start":{"line":77,"column":75},"end":{"line":77,"column":99}},{"start":{"line":77,"column":99},"end":{"line":77,"column":103}}],"line":77},"14":{"loc":{"start":{"line":78,"column":24},"end":{"line":78,"column":null}},"type":"cond-expr","locations":[{"start":{"line":78,"column":37},"end":{"line":78,"column":48}},{"start":{"line":78,"column":48},"end":{"line":78,"column":null}}],"line":78},"15":{"loc":{"start":{"line":79,"column":20},"end":{"line":79,"column":null}},"type":"cond-expr","locations":[{"start":{"line":79,"column":33},"end":{"line":79,"column":47}},{"start":{"line":79,"column":47},"end":{"line":79,"column":null}}],"line":79}},"s":{"0":2,"1":2,"2":2,"3":9,"4":9,"5":9,"6":9,"7":0,"8":9,"9":8,"10":1,"11":26,"12":5,"13":5,"14":4,"15":5,"16":5,"17":5,"18":5,"19":5,"20":2,"21":2,"22":3,"23":1,"24":1,"25":2,"26":0,"27":0,"28":2,"29":2,"30":5},"f":{"0":9,"1":9,"2":0,"3":26,"4":5,"5":4,"6":5},"b":{"0":[1,0],"1":[4,1],"2":[2,3],"3":[5,4,4],"4":[1,1],"5":[0,1],"6":[0,0],"7":[1,0],"8":[1,2],"9":[0,2],"10":[2,2],"11":[4,1],"12":[1,4],"13":[1,4],"14":[4,1],"15":[4,1]},"meta":{"lastBranch":16,"lastFunction":7,"lastStatement":31,"seen":{"s:7:25:7:Infinity":0,"s:8:19:8:Infinity":1,"s:9:21:9:Infinity":2,"f:11:15:11:21":0,"s:12:13:12:Infinity":3,"s:13:2:24:Infinity":4,"s:14:4:20:Infinity":5,"f:16:10:16:19":1,"s:17:18:17:Infinity":6,"f:17:18:17:35":2,"s:17:35:17:94":7,"s:18:8:18:Infinity":8,"s:21:4:21:Infinity":9,"s:23:4:23:Infinity":10,"b:23:81:23:93:23:93:23:103":0,"f:32:16:32:38":3,"s:33:2:83:Infinity":11,"f:44:29:44:41":4,"s:45:26:45:Infinity":12,"s:46:17:46:Infinity":13,"b:46:31:46:78:46:78:46:Infinity":1,"f:46:37:46:49":5,"s:46:49:46:74":14,"s:47:19:47:Infinity":15,"f:47:25:47:37":6,"s:47:37:47:64":16,"s:48:25:48:Infinity":17,"s:49:25:49:Infinity":18,"b:53:6:69:Infinity:60:13:69:Infinity":2,"s:53:6:69:Infinity":19,"b:53:10:53:26:53:26:53:36:53:36:53:46":3,"s:54:8:54:Infinity":20,"s:55:8:59:Infinity":21,"b:56:12:56:Infinity:57:12:59:Infinity":4,"b:58:14:58:Infinity:59:14:59:Infinity":5,"b:58:48:58:60:58:60:58:70":6,"b:59:47:59:61:59:61:59:71":7,"b:60:13:69:Infinity:63:13:69:Infinity":8,"s:60:13:69:Infinity":22,"s:61:8:61:Infinity":23,"s:62:8:62:Infinity":24,"b:63:13:69:Infinity:66:13:69:Infinity":9,"s:63:13:69:Infinity":25,"b:63:17:63:47:63:47:63:79":10,"s:64:8:64:Infinity":26,"s:65:8:65:Infinity":27,"s:67:8:67:Infinity":28,"s:68:8:68:Infinity":29,"s:71:6:81:Infinity":30,"b:76:63:76:95:76:95:76:100":11,"b:76:115:76:137:76:137:76:141":12,"b:77:75:77:99:77:99:77:103":13,"b:78:37:78:48:78:48:78:Infinity":14,"b:79:33:79:47:79:47:79:Infinity":15},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/services.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/services.ts","statementMap":{"0":{"start":{"line":9,"column":2},"end":{"line":9,"column":null}},"1":{"start":{"line":9,"column":15},"end":{"line":9,"column":null}},"2":{"start":{"line":10,"column":2},"end":{"line":16,"column":null}},"3":{"start":{"line":10,"column":52},"end":{"line":16,"column":4}},"4":{"start":{"line":20,"column":2},"end":{"line":74,"column":null}},"5":{"start":{"line":35,"column":23},"end":{"line":35,"column":null}},"6":{"start":{"line":40,"column":6},"end":{"line":51,"column":null}},"7":{"start":{"line":41,"column":18},"end":{"line":41,"column":null}},"8":{"start":{"line":42,"column":8},"end":{"line":42,"column":null}},"9":{"start":{"line":42,"column":16},"end":{"line":42,"column":null}},"10":{"start":{"line":43,"column":8},"end":{"line":50,"column":null}},"11":{"start":{"line":45,"column":60},"end":{"line":49,"column":12}},"12":{"start":{"line":53,"column":6},"end":{"line":64,"column":null}},"13":{"start":{"line":54,"column":18},"end":{"line":54,"column":null}},"14":{"start":{"line":55,"column":70},"end":{"line":55,"column":null}},"15":{"start":{"line":56,"column":8},"end":{"line":62,"column":null}},"16":{"start":{"line":57,"column":10},"end":{"line":61,"column":null}},"17":{"start":{"line":58,"column":25},"end":{"line":58,"column":null}},"18":{"start":{"line":59,"column":25},"end":{"line":59,"column":null}},"19":{"start":{"line":60,"column":12},"end":{"line":60,"column":null}},"20":{"start":{"line":60,"column":34},"end":{"line":60,"column":null}},"21":{"start":{"line":63,"column":8},"end":{"line":63,"column":null}},"22":{"start":{"line":66,"column":6},"end":{"line":72,"column":null}},"23":{"start":{"line":67,"column":64},"end":{"line":70,"column":10}},"24":{"start":{"line":80,"column":2},"end":{"line":123,"column":null}},"25":{"start":{"line":112,"column":6},"end":{"line":121,"column":null}}},"fnMap":{"0":{"name":"fieldSummary","decl":{"start":{"line":8,"column":9},"end":{"line":8,"column":22}},"loc":{"start":{"line":8,"column":63},"end":{"line":17,"column":null}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":32},"end":{"line":10,"column":37}},"loc":{"start":{"line":10,"column":52},"end":{"line":16,"column":4}},"line":10},"2":{"name":"registerServiceTools","decl":{"start":{"line":19,"column":16},"end":{"line":19,"column":37}},"loc":{"start":{"line":19,"column":84},"end":{"line":124,"column":null}},"line":19},"3":{"name":"(anonymous_3)","decl":{"start":{"line":34,"column":29},"end":{"line":34,"column":36}},"loc":{"start":{"line":34,"column":59},"end":{"line":73,"column":5}},"line":34},"4":{"name":"(anonymous_4)","decl":{"start":{"line":45,"column":38},"end":{"line":45,"column":43}},"loc":{"start":{"line":45,"column":60},"end":{"line":49,"column":12}},"line":45},"5":{"name":"(anonymous_5)","decl":{"start":{"line":67,"column":42},"end":{"line":67,"column":47}},"loc":{"start":{"line":67,"column":64},"end":{"line":70,"column":10}},"line":67},"6":{"name":"(anonymous_6)","decl":{"start":{"line":111,"column":28},"end":{"line":111,"column":35}},"loc":{"start":{"line":112,"column":6},"end":{"line":121,"column":null}},"line":112}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":2},"end":{"line":9,"column":null}},"type":"if","locations":[{"start":{"line":9,"column":2},"end":{"line":9,"column":null}},{"start":{},"end":{}}],"line":9},"1":{"loc":{"start":{"line":13,"column":23},"end":{"line":13,"column":45}},"type":"binary-expr","locations":[{"start":{"line":13,"column":23},"end":{"line":13,"column":41}},{"start":{"line":13,"column":41},"end":{"line":13,"column":45}}],"line":13},"2":{"loc":{"start":{"line":14,"column":8},"end":{"line":14,"column":null}},"type":"cond-expr","locations":[{"start":{"line":14,"column":35},"end":{"line":14,"column":60}},{"start":{"line":14,"column":60},"end":{"line":14,"column":null}}],"line":14},"3":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":null}},"type":"cond-expr","locations":[{"start":{"line":15,"column":22},"end":{"line":15,"column":65}},{"start":{"line":15,"column":65},"end":{"line":15,"column":null}}],"line":15},"4":{"loc":{"start":{"line":40,"column":6},"end":{"line":51,"column":null}},"type":"if","locations":[{"start":{"line":40,"column":6},"end":{"line":51,"column":null}},{"start":{},"end":{}}],"line":40},"5":{"loc":{"start":{"line":42,"column":8},"end":{"line":42,"column":null}},"type":"if","locations":[{"start":{"line":42,"column":8},"end":{"line":42,"column":null}},{"start":{},"end":{}}],"line":42},"6":{"loc":{"start":{"line":47,"column":31},"end":{"line":47,"column":68}},"type":"binary-expr","locations":[{"start":{"line":47,"column":31},"end":{"line":47,"column":51}},{"start":{"line":47,"column":51},"end":{"line":47,"column":64}},{"start":{"line":47,"column":64},"end":{"line":47,"column":68}}],"line":47},"7":{"loc":{"start":{"line":53,"column":6},"end":{"line":64,"column":null}},"type":"if","locations":[{"start":{"line":53,"column":6},"end":{"line":64,"column":null}},{"start":{},"end":{}}],"line":53},"8":{"loc":{"start":{"line":59,"column":36},"end":{"line":59,"column":52}},"type":"binary-expr","locations":[{"start":{"line":59,"column":36},"end":{"line":59,"column":49}},{"start":{"line":59,"column":49},"end":{"line":59,"column":52}}],"line":59},"9":{"loc":{"start":{"line":59,"column":55},"end":{"line":59,"column":80}},"type":"binary-expr","locations":[{"start":{"line":59,"column":55},"end":{"line":59,"column":75}},{"start":{"line":59,"column":75},"end":{"line":59,"column":80}}],"line":59},"10":{"loc":{"start":{"line":60,"column":12},"end":{"line":60,"column":null}},"type":"if","locations":[{"start":{"line":60,"column":12},"end":{"line":60,"column":null}},{"start":{},"end":{}}],"line":60},"11":{"loc":{"start":{"line":60,"column":80},"end":{"line":60,"column":104}},"type":"binary-expr","locations":[{"start":{"line":60,"column":80},"end":{"line":60,"column":100}},{"start":{"line":60,"column":100},"end":{"line":60,"column":104}}],"line":60}},"s":{"0":2,"1":0,"2":2,"3":1,"4":44,"5":4,"6":4,"7":2,"8":2,"9":1,"10":1,"11":2,"12":2,"13":1,"14":1,"15":1,"16":2,"17":3,"18":3,"19":3,"20":1,"21":1,"22":1,"23":2,"24":44,"25":21},"f":{"0":2,"1":1,"2":44,"3":4,"4":2,"5":2,"6":21},"b":{"0":[0,2],"1":[1,0],"2":[0,1],"3":[1,0],"4":[2,2],"5":[1,1],"6":[2,0,0],"7":[1,1],"8":[3,0],"9":[3,0],"10":[1,2],"11":[1,0]},"meta":{"lastBranch":12,"lastFunction":7,"lastStatement":26,"seen":{"f:8:9:8:22":0,"b:9:2:9:Infinity:undefined:undefined:undefined:undefined":0,"s:9:2:9:Infinity":0,"s:9:15:9:Infinity":1,"s:10:2:16:Infinity":2,"f:10:32:10:37":1,"s:10:52:16:4":3,"b:13:23:13:41:13:41:13:45":1,"b:14:35:14:60:14:60:14:Infinity":2,"b:15:22:15:65:15:65:15:Infinity":3,"f:19:16:19:37":2,"s:20:2:74:Infinity":4,"f:34:29:34:36":3,"s:35:23:35:Infinity":5,"b:40:6:51:Infinity:undefined:undefined:undefined:undefined":4,"s:40:6:51:Infinity":6,"s:41:18:41:Infinity":7,"b:42:8:42:Infinity:undefined:undefined:undefined:undefined":5,"s:42:8:42:Infinity":8,"s:42:16:42:Infinity":9,"s:43:8:50:Infinity":10,"f:45:38:45:43":4,"s:45:60:49:12":11,"b:47:31:47:51:47:51:47:64:47:64:47:68":6,"b:53:6:64:Infinity:undefined:undefined:undefined:undefined":7,"s:53:6:64:Infinity":12,"s:54:18:54:Infinity":13,"s:55:70:55:Infinity":14,"s:56:8:62:Infinity":15,"s:57:10:61:Infinity":16,"s:58:25:58:Infinity":17,"s:59:25:59:Infinity":18,"b:59:36:59:49:59:49:59:52":8,"b:59:55:59:75:59:75:59:80":9,"b:60:12:60:Infinity:undefined:undefined:undefined:undefined":10,"s:60:12:60:Infinity":19,"s:60:34:60:Infinity":20,"b:60:80:60:100:60:100:60:104":11,"s:63:8:63:Infinity":21,"s:66:6:72:Infinity":22,"f:67:42:67:47":5,"s:67:64:70:10":23,"s:80:2:123:Infinity":24,"f:111:28:111:35":6,"s:112:6:121:Infinity":25},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/system.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/system.ts","statementMap":{"0":{"start":{"line":10,"column":2},"end":{"line":31,"column":null}},"1":{"start":{"line":11,"column":4},"end":{"line":31,"column":null}},"2":{"start":{"line":28,"column":23},"end":{"line":28,"column":null}},"3":{"start":{"line":29,"column":6},"end":{"line":29,"column":null}},"4":{"start":{"line":33,"column":2},"end":{"line":207,"column":null}},"5":{"start":{"line":51,"column":6},"end":{"line":63,"column":null}},"6":{"start":{"line":52,"column":18},"end":{"line":52,"column":null}},"7":{"start":{"line":53,"column":8},"end":{"line":62,"column":null}},"8":{"start":{"line":64,"column":6},"end":{"line":95,"column":null}},"9":{"start":{"line":69,"column":23},"end":{"line":75,"column":null}},"10":{"start":{"line":70,"column":10},"end":{"line":74,"column":null}},"11":{"start":{"line":71,"column":12},"end":{"line":71,"column":null}},"12":{"start":{"line":73,"column":12},"end":{"line":73,"column":null}},"13":{"start":{"line":76,"column":35},"end":{"line":76,"column":null}},"14":{"start":{"line":78,"column":10},"end":{"line":78,"column":null}},"15":{"start":{"line":79,"column":14},"end":{"line":79,"column":null}},"16":{"start":{"line":79,"column":72},"end":{"line":79,"column":90}},"17":{"start":{"line":80,"column":8},"end":{"line":94,"column":null}},"18":{"start":{"line":91,"column":58},"end":{"line":91,"column":121}},"19":{"start":{"line":96,"column":6},"end":{"line":142,"column":null}},"20":{"start":{"line":102,"column":38},"end":{"line":102,"column":null}},"21":{"start":{"line":103,"column":8},"end":{"line":113,"column":null}},"22":{"start":{"line":104,"column":22},"end":{"line":104,"column":null}},"23":{"start":{"line":105,"column":10},"end":{"line":105,"column":null}},"24":{"start":{"line":107,"column":10},"end":{"line":112,"column":null}},"25":{"start":{"line":114,"column":8},"end":{"line":114,"column":null}},"26":{"start":{"line":114,"column":36},"end":{"line":114,"column":null}},"27":{"start":{"line":115,"column":23},"end":{"line":140,"column":null}},"28":{"start":{"line":117,"column":25},"end":{"line":117,"column":null}},"29":{"start":{"line":118,"column":12},"end":{"line":118,"column":null}},"30":{"start":{"line":118,"column":38},"end":{"line":118,"column":null}},"31":{"start":{"line":119,"column":12},"end":{"line":138,"column":null}},"32":{"start":{"line":120,"column":29},"end":{"line":120,"column":null}},"33":{"start":{"line":121,"column":28},"end":{"line":121,"column":null}},"34":{"start":{"line":122,"column":27},"end":{"line":122,"column":null}},"35":{"start":{"line":123,"column":30},"end":{"line":123,"column":null}},"36":{"start":{"line":124,"column":14},"end":{"line":135,"column":null}},"37":{"start":{"line":137,"column":14},"end":{"line":137,"column":null}},"38":{"start":{"line":141,"column":8},"end":{"line":141,"column":null}},"39":{"start":{"line":144,"column":6},"end":{"line":171,"column":null}},"40":{"start":{"line":148,"column":8},"end":{"line":170,"column":null}},"41":{"start":{"line":149,"column":22},"end":{"line":149,"column":null}},"42":{"start":{"line":150,"column":16},"end":{"line":152,"column":null}},"43":{"start":{"line":151,"column":25},"end":{"line":151,"column":98}},"44":{"start":{"line":152,"column":28},"end":{"line":152,"column":72}},"45":{"start":{"line":153,"column":23},"end":{"line":153,"column":null}},"46":{"start":{"line":154,"column":26},"end":{"line":154,"column":null}},"47":{"start":{"line":155,"column":10},"end":{"line":160,"column":null}},"48":{"start":{"line":162,"column":22},"end":{"line":162,"column":null}},"49":{"start":{"line":163,"column":10},"end":{"line":168,"column":null}},"50":{"start":{"line":164,"column":12},"end":{"line":167,"column":null}},"51":{"start":{"line":169,"column":10},"end":{"line":169,"column":null}},"52":{"start":{"line":177,"column":6},"end":{"line":194,"column":null}},"53":{"start":{"line":178,"column":20},"end":{"line":178,"column":null}},"54":{"start":{"line":179,"column":8},"end":{"line":179,"column":null}},"55":{"start":{"line":179,"column":33},"end":{"line":179,"column":null}},"56":{"start":{"line":180,"column":31},"end":{"line":180,"column":null}},"57":{"start":{"line":181,"column":8},"end":{"line":191,"column":null}},"58":{"start":{"line":182,"column":52},"end":{"line":188,"column":12}},"59":{"start":{"line":195,"column":6},"end":{"line":205,"column":null}},"60":{"start":{"line":196,"column":21},"end":{"line":196,"column":null}},"61":{"start":{"line":197,"column":22},"end":{"line":197,"column":null}},"62":{"start":{"line":198,"column":21},"end":{"line":198,"column":null}},"63":{"start":{"line":199,"column":8},"end":{"line":199,"column":null}},"64":{"start":{"line":201,"column":8},"end":{"line":204,"column":null}}},"fnMap":{"0":{"name":"registerSystemTools","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":36}},"loc":{"start":{"line":6,"column":83},"end":{"line":208,"column":null}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":24,"column":31},"end":{"line":24,"column":38}},"loc":{"start":{"line":24,"column":55},"end":{"line":30,"column":5}},"line":24},"2":{"name":"(anonymous_2)","decl":{"start":{"line":50,"column":26},"end":{"line":50,"column":33}},"loc":{"start":{"line":50,"column":49},"end":{"line":206,"column":5}},"line":50},"3":{"name":"(anonymous_3)","decl":{"start":{"line":69,"column":23},"end":{"line":69,"column":30}},"loc":{"start":{"line":69,"column":68},"end":{"line":75,"column":null}},"line":69},"4":{"name":"(anonymous_4)","decl":{"start":{"line":79,"column":58},"end":{"line":79,"column":66}},"loc":{"start":{"line":79,"column":72},"end":{"line":79,"column":90}},"line":79},"5":{"name":"(anonymous_5)","decl":{"start":{"line":91,"column":46},"end":{"line":91,"column":51}},"loc":{"start":{"line":91,"column":58},"end":{"line":91,"column":121}},"line":91},"6":{"name":"(anonymous_6)","decl":{"start":{"line":116,"column":37},"end":{"line":116,"column":44}},"loc":{"start":{"line":116,"column":55},"end":{"line":139,"column":11}},"line":116},"7":{"name":"(anonymous_7)","decl":{"start":{"line":151,"column":13},"end":{"line":151,"column":18}},"loc":{"start":{"line":151,"column":25},"end":{"line":151,"column":98}},"line":151},"8":{"name":"(anonymous_8)","decl":{"start":{"line":152,"column":13},"end":{"line":152,"column":19}},"loc":{"start":{"line":152,"column":28},"end":{"line":152,"column":72}},"line":152},"9":{"name":"(anonymous_9)","decl":{"start":{"line":182,"column":40},"end":{"line":182,"column":45}},"loc":{"start":{"line":182,"column":52},"end":{"line":188,"column":12}},"line":182}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":2},"end":{"line":31,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":2},"end":{"line":31,"column":null}},{"start":{},"end":{}}],"line":10},"1":{"loc":{"start":{"line":51,"column":6},"end":{"line":63,"column":null}},"type":"if","locations":[{"start":{"line":51,"column":6},"end":{"line":63,"column":null}},{"start":{},"end":{}}],"line":51},"2":{"loc":{"start":{"line":60,"column":22},"end":{"line":60,"column":null}},"type":"cond-expr","locations":[{"start":{"line":60,"column":52},"end":{"line":60,"column":74}},{"start":{"line":60,"column":74},"end":{"line":60,"column":null}}],"line":60},"3":{"loc":{"start":{"line":64,"column":6},"end":{"line":95,"column":null}},"type":"if","locations":[{"start":{"line":64,"column":6},"end":{"line":95,"column":null}},{"start":{},"end":{}}],"line":64},"4":{"loc":{"start":{"line":79,"column":26},"end":{"line":79,"column":56}},"type":"binary-expr","locations":[{"start":{"line":79,"column":26},"end":{"line":79,"column":54}},{"start":{"line":79,"column":54},"end":{"line":79,"column":56}}],"line":79},"5":{"loc":{"start":{"line":81,"column":16},"end":{"line":83,"column":null}},"type":"cond-expr","locations":[{"start":{"line":82,"column":14},"end":{"line":82,"column":null}},{"start":{"line":83,"column":14},"end":{"line":83,"column":null}}],"line":81},"6":{"loc":{"start":{"line":82,"column":25},"end":{"line":82,"column":47}},"type":"binary-expr","locations":[{"start":{"line":82,"column":25},"end":{"line":82,"column":41}},{"start":{"line":82,"column":41},"end":{"line":82,"column":47}}],"line":82},"7":{"loc":{"start":{"line":82,"column":55},"end":{"line":82,"column":84}},"type":"binary-expr","locations":[{"start":{"line":82,"column":55},"end":{"line":82,"column":78}},{"start":{"line":82,"column":78},"end":{"line":82,"column":84}}],"line":82},"8":{"loc":{"start":{"line":84,"column":14},"end":{"line":86,"column":null}},"type":"cond-expr","locations":[{"start":{"line":85,"column":14},"end":{"line":85,"column":null}},{"start":{"line":86,"column":14},"end":{"line":86,"column":null}}],"line":84},"9":{"loc":{"start":{"line":85,"column":25},"end":{"line":85,"column":45}},"type":"binary-expr","locations":[{"start":{"line":85,"column":25},"end":{"line":85,"column":39}},{"start":{"line":85,"column":39},"end":{"line":85,"column":45}}],"line":85},"10":{"loc":{"start":{"line":85,"column":53},"end":{"line":85,"column":80}},"type":"binary-expr","locations":[{"start":{"line":85,"column":53},"end":{"line":85,"column":74}},{"start":{"line":85,"column":74},"end":{"line":85,"column":80}}],"line":85},"11":{"loc":{"start":{"line":87,"column":18},"end":{"line":93,"column":null}},"type":"cond-expr","locations":[{"start":{"line":88,"column":14},"end":{"line":92,"column":null}},{"start":{"line":93,"column":14},"end":{"line":93,"column":null}}],"line":87},"12":{"loc":{"start":{"line":89,"column":25},"end":{"line":89,"column":54}},"type":"binary-expr","locations":[{"start":{"line":89,"column":25},"end":{"line":89,"column":52}},{"start":{"line":89,"column":52},"end":{"line":89,"column":54}}],"line":89},"13":{"loc":{"start":{"line":96,"column":6},"end":{"line":142,"column":null}},"type":"if","locations":[{"start":{"line":96,"column":6},"end":{"line":142,"column":null}},{"start":{},"end":{}}],"line":96},"14":{"loc":{"start":{"line":105,"column":23},"end":{"line":105,"column":null}},"type":"binary-expr","locations":[{"start":{"line":105,"column":23},"end":{"line":105,"column":48}},{"start":{"line":105,"column":48},"end":{"line":105,"column":null}}],"line":105},"15":{"loc":{"start":{"line":114,"column":8},"end":{"line":114,"column":null}},"type":"if","locations":[{"start":{"line":114,"column":8},"end":{"line":114,"column":null}},{"start":{},"end":{}}],"line":114},"16":{"loc":{"start":{"line":117,"column":62},"end":{"line":117,"column":79}},"type":"binary-expr","locations":[{"start":{"line":117,"column":62},"end":{"line":117,"column":73}},{"start":{"line":117,"column":73},"end":{"line":117,"column":79}}],"line":117},"17":{"loc":{"start":{"line":117,"column":86},"end":{"line":117,"column":102}},"type":"binary-expr","locations":[{"start":{"line":117,"column":86},"end":{"line":117,"column":97}},{"start":{"line":117,"column":97},"end":{"line":117,"column":102}}],"line":117},"18":{"loc":{"start":{"line":118,"column":12},"end":{"line":118,"column":null}},"type":"if","locations":[{"start":{"line":118,"column":12},"end":{"line":118,"column":null}},{"start":{},"end":{}}],"line":118},"19":{"loc":{"start":{"line":121,"column":35},"end":{"line":121,"column":54}},"type":"binary-expr","locations":[{"start":{"line":121,"column":35},"end":{"line":121,"column":53}},{"start":{"line":121,"column":53},"end":{"line":121,"column":54}}],"line":121},"20":{"loc":{"start":{"line":122,"column":34},"end":{"line":122,"column":52}},"type":"binary-expr","locations":[{"start":{"line":122,"column":34},"end":{"line":122,"column":51}},{"start":{"line":122,"column":51},"end":{"line":122,"column":52}}],"line":122},"21":{"loc":{"start":{"line":123,"column":30},"end":{"line":123,"column":null}},"type":"cond-expr","locations":[{"start":{"line":123,"column":42},"end":{"line":123,"column":77}},{"start":{"line":123,"column":77},"end":{"line":123,"column":null}}],"line":123},"22":{"loc":{"start":{"line":130,"column":20},"end":{"line":134,"column":null}},"type":"cond-expr","locations":[{"start":{"line":131,"column":20},"end":{"line":131,"column":null}},{"start":{"line":132,"column":20},"end":{"line":134,"column":null}}],"line":130},"23":{"loc":{"start":{"line":130,"column":20},"end":{"line":130,"column":null}},"type":"binary-expr","locations":[{"start":{"line":130,"column":20},"end":{"line":130,"column":40}},{"start":{"line":130,"column":40},"end":{"line":130,"column":null}}],"line":130},"24":{"loc":{"start":{"line":132,"column":20},"end":{"line":134,"column":null}},"type":"cond-expr","locations":[{"start":{"line":133,"column":22},"end":{"line":133,"column":null}},{"start":{"line":134,"column":22},"end":{"line":134,"column":null}}],"line":132},"25":{"loc":{"start":{"line":132,"column":20},"end":{"line":132,"column":null}},"type":"binary-expr","locations":[{"start":{"line":132,"column":20},"end":{"line":132,"column":40}},{"start":{"line":132,"column":40},"end":{"line":132,"column":null}}],"line":132},"26":{"loc":{"start":{"line":141,"column":29},"end":{"line":141,"column":113}},"type":"cond-expr","locations":[{"start":{"line":141,"column":53},"end":{"line":141,"column":109}},{"start":{"line":141,"column":109},"end":{"line":141,"column":113}}],"line":141},"27":{"loc":{"start":{"line":144,"column":6},"end":{"line":171,"column":null}},"type":"if","locations":[{"start":{"line":144,"column":6},"end":{"line":171,"column":null}},{"start":{},"end":{}}],"line":144},"28":{"loc":{"start":{"line":150,"column":29},"end":{"line":150,"column":57}},"type":"binary-expr","locations":[{"start":{"line":150,"column":29},"end":{"line":150,"column":55}},{"start":{"line":150,"column":55},"end":{"line":150,"column":57}}],"line":150},"29":{"loc":{"start":{"line":153,"column":23},"end":{"line":153,"column":null}},"type":"binary-expr","locations":[{"start":{"line":153,"column":23},"end":{"line":153,"column":37}},{"start":{"line":153,"column":37},"end":{"line":153,"column":null}}],"line":153},"30":{"loc":{"start":{"line":154,"column":26},"end":{"line":154,"column":null}},"type":"cond-expr","locations":[{"start":{"line":154,"column":33},"end":{"line":154,"column":97}},{"start":{"line":154,"column":97},"end":{"line":154,"column":null}}],"line":154},"31":{"loc":{"start":{"line":156,"column":25},"end":{"line":156,"column":null}},"type":"cond-expr","locations":[{"start":{"line":156,"column":32},"end":{"line":156,"column":65}},{"start":{"line":156,"column":65},"end":{"line":156,"column":null}}],"line":156},"32":{"loc":{"start":{"line":159,"column":16},"end":{"line":159,"column":null}},"type":"cond-expr","locations":[{"start":{"line":159,"column":32},"end":{"line":159,"column":85}},{"start":{"line":159,"column":85},"end":{"line":159,"column":null}}],"line":159},"33":{"loc":{"start":{"line":162,"column":22},"end":{"line":162,"column":null}},"type":"cond-expr","locations":[{"start":{"line":162,"column":43},"end":{"line":162,"column":55}},{"start":{"line":162,"column":55},"end":{"line":162,"column":null}}],"line":162},"34":{"loc":{"start":{"line":163,"column":10},"end":{"line":168,"column":null}},"type":"if","locations":[{"start":{"line":163,"column":10},"end":{"line":168,"column":null}},{"start":{},"end":{}}],"line":163},"35":{"loc":{"start":{"line":179,"column":8},"end":{"line":179,"column":null}},"type":"if","locations":[{"start":{"line":179,"column":8},"end":{"line":179,"column":null}},{"start":{},"end":{}}],"line":179},"36":{"loc":{"start":{"line":185,"column":20},"end":{"line":185,"column":null}},"type":"cond-expr","locations":[{"start":{"line":185,"column":46},"end":{"line":185,"column":67}},{"start":{"line":185,"column":67},"end":{"line":185,"column":null}}],"line":185},"37":{"loc":{"start":{"line":185,"column":74},"end":{"line":185,"column":88}},"type":"binary-expr","locations":[{"start":{"line":185,"column":74},"end":{"line":185,"column":86}},{"start":{"line":185,"column":86},"end":{"line":185,"column":88}}],"line":185},"38":{"loc":{"start":{"line":186,"column":27},"end":{"line":186,"column":103}},"type":"cond-expr","locations":[{"start":{"line":186,"column":54},"end":{"line":186,"column":78}},{"start":{"line":186,"column":78},"end":{"line":186,"column":103}}],"line":186},"39":{"loc":{"start":{"line":186,"column":85},"end":{"line":186,"column":100}},"type":"binary-expr","locations":[{"start":{"line":186,"column":85},"end":{"line":186,"column":98}},{"start":{"line":186,"column":98},"end":{"line":186,"column":100}}],"line":186},"40":{"loc":{"start":{"line":187,"column":16},"end":{"line":187,"column":null}},"type":"cond-expr","locations":[{"start":{"line":187,"column":30},"end":{"line":187,"column":92}},{"start":{"line":187,"column":92},"end":{"line":187,"column":null}}],"line":187}},"s":{"0":35,"1":32,"2":1,"3":1,"4":35,"5":12,"6":1,"7":1,"8":11,"9":2,"10":6,"11":6,"12":2,"13":2,"14":2,"15":2,"16":3,"17":2,"18":2,"19":9,"20":4,"21":4,"22":4,"23":3,"24":1,"25":3,"26":1,"27":2,"28":4,"29":4,"30":1,"31":3,"32":3,"33":2,"34":4,"35":4,"36":4,"37":1,"38":2,"39":5,"40":2,"41":2,"42":1,"43":2,"44":1,"45":2,"46":2,"47":2,"48":1,"49":1,"50":1,"51":0,"52":3,"53":3,"54":1,"55":0,"56":1,"57":1,"58":2,"59":2,"60":2,"61":1,"62":1,"63":1,"64":1},"f":{"0":35,"1":1,"2":12,"3":6,"4":3,"5":2,"6":4,"7":2,"8":1,"9":2},"b":{"0":[32,3],"1":[1,11],"2":[1,0],"3":[2,9],"4":[2,0],"5":[1,1],"6":[1,0],"7":[1,0],"8":[1,1],"9":[1,0],"10":[1,0],"11":[2,0],"12":[2,0],"13":[4,5],"14":[3,0],"15":[1,2],"16":[4,0],"17":[4,0],"18":[1,3],"19":[2,0],"20":[4,0],"21":[2,0],"22":[1,1],"23":[4,2],"24":[0,1],"25":[1,1],"26":[0,2],"27":[2,3],"28":[1,0],"29":[2,0],"30":[1,0],"31":[1,0],"32":[0,1],"33":[1,0],"34":[1,0],"35":[0,1],"36":[2,0],"37":[0,0],"38":[1,1],"39":[1,0],"40":[1,1]},"meta":{"lastBranch":41,"lastFunction":10,"lastStatement":65,"seen":{"f:6:16:6:36":0,"b:10:2:31:Infinity:undefined:undefined:undefined:undefined":0,"s:10:2:31:Infinity":0,"s:11:4:31:Infinity":1,"f:24:31:24:38":1,"s:28:23:28:Infinity":2,"s:29:6:29:Infinity":3,"s:33:2:207:Infinity":4,"f:50:26:50:33":2,"b:51:6:63:Infinity:undefined:undefined:undefined:undefined":1,"s:51:6:63:Infinity":5,"s:52:18:52:Infinity":6,"s:53:8:62:Infinity":7,"b:60:52:60:74:60:74:60:Infinity":2,"b:64:6:95:Infinity:undefined:undefined:undefined:undefined":3,"s:64:6:95:Infinity":8,"s:69:23:75:Infinity":9,"f:69:23:69:30":3,"s:70:10:74:Infinity":10,"s:71:12:71:Infinity":11,"s:73:12:73:Infinity":12,"s:76:35:76:Infinity":13,"s:78:10:78:Infinity":14,"s:79:14:79:Infinity":15,"b:79:26:79:54:79:54:79:56":4,"f:79:58:79:66":4,"s:79:72:79:90":16,"s:80:8:94:Infinity":17,"b:82:14:82:Infinity:83:14:83:Infinity":5,"b:82:25:82:41:82:41:82:47":6,"b:82:55:82:78:82:78:82:84":7,"b:85:14:85:Infinity:86:14:86:Infinity":8,"b:85:25:85:39:85:39:85:45":9,"b:85:53:85:74:85:74:85:80":10,"b:88:14:92:Infinity:93:14:93:Infinity":11,"b:89:25:89:52:89:52:89:54":12,"f:91:46:91:51":5,"s:91:58:91:121":18,"b:96:6:142:Infinity:undefined:undefined:undefined:undefined":13,"s:96:6:142:Infinity":19,"s:102:38:102:Infinity":20,"s:103:8:113:Infinity":21,"s:104:22:104:Infinity":22,"s:105:10:105:Infinity":23,"b:105:23:105:48:105:48:105:Infinity":14,"s:107:10:112:Infinity":24,"b:114:8:114:Infinity:undefined:undefined:undefined:undefined":15,"s:114:8:114:Infinity":25,"s:114:36:114:Infinity":26,"s:115:23:140:Infinity":27,"f:116:37:116:44":6,"s:117:25:117:Infinity":28,"b:117:62:117:73:117:73:117:79":16,"b:117:86:117:97:117:97:117:102":17,"b:118:12:118:Infinity:undefined:undefined:undefined:undefined":18,"s:118:12:118:Infinity":29,"s:118:38:118:Infinity":30,"s:119:12:138:Infinity":31,"s:120:29:120:Infinity":32,"s:121:28:121:Infinity":33,"b:121:35:121:53:121:53:121:54":19,"s:122:27:122:Infinity":34,"b:122:34:122:51:122:51:122:52":20,"s:123:30:123:Infinity":35,"b:123:42:123:77:123:77:123:Infinity":21,"s:124:14:135:Infinity":36,"b:131:20:131:Infinity:132:20:134:Infinity":22,"b:130:20:130:40:130:40:130:Infinity":23,"b:133:22:133:Infinity:134:22:134:Infinity":24,"b:132:20:132:40:132:40:132:Infinity":25,"s:137:14:137:Infinity":37,"s:141:8:141:Infinity":38,"b:141:53:141:109:141:109:141:113":26,"b:144:6:171:Infinity:undefined:undefined:undefined:undefined":27,"s:144:6:171:Infinity":39,"s:148:8:170:Infinity":40,"s:149:22:149:Infinity":41,"s:150:16:152:Infinity":42,"b:150:29:150:55:150:55:150:57":28,"f:151:13:151:18":7,"s:151:25:151:98":43,"f:152:13:152:19":8,"s:152:28:152:72":44,"s:153:23:153:Infinity":45,"b:153:23:153:37:153:37:153:Infinity":29,"s:154:26:154:Infinity":46,"b:154:33:154:97:154:97:154:Infinity":30,"s:155:10:160:Infinity":47,"b:156:32:156:65:156:65:156:Infinity":31,"b:159:32:159:85:159:85:159:Infinity":32,"s:162:22:162:Infinity":48,"b:162:43:162:55:162:55:162:Infinity":33,"b:163:10:168:Infinity:undefined:undefined:undefined:undefined":34,"s:163:10:168:Infinity":49,"s:164:12:167:Infinity":50,"s:169:10:169:Infinity":51,"s:177:6:194:Infinity":52,"s:178:20:178:Infinity":53,"b:179:8:179:Infinity:undefined:undefined:undefined:undefined":35,"s:179:8:179:Infinity":54,"s:179:33:179:Infinity":55,"s:180:31:180:Infinity":56,"s:181:8:191:Infinity":57,"f:182:40:182:45":9,"s:182:52:188:12":58,"b:185:46:185:67:185:67:185:Infinity":36,"b:185:74:185:86:185:86:185:88":37,"b:186:54:186:78:186:78:186:103":38,"b:186:85:186:98:186:98:186:100":39,"b:187:30:187:92:187:92:187:Infinity":40,"s:195:6:205:Infinity":59,"s:196:21:196:Infinity":60,"s:197:22:197:Infinity":61,"s:198:21:198:Infinity":62,"s:199:8:199:Infinity":63,"s:201:8:204:Infinity":64},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/weather.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/weather.ts","statementMap":{"0":{"start":{"line":8,"column":44},"end":{"line":8,"column":null}},"1":{"start":{"line":17,"column":2},"end":{"line":77,"column":null}},"2":{"start":{"line":32,"column":20},"end":{"line":32,"column":null}},"3":{"start":{"line":33,"column":6},"end":{"line":38,"column":null}},"4":{"start":{"line":34,"column":22},"end":{"line":36,"column":null}},"5":{"start":{"line":35,"column":25},"end":{"line":35,"column":90}},"6":{"start":{"line":36,"column":23},"end":{"line":36,"column":84}},"7":{"start":{"line":37,"column":8},"end":{"line":37,"column":null}},"8":{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},"9":{"start":{"line":39,"column":45},"end":{"line":39,"column":null}},"10":{"start":{"line":40,"column":6},"end":{"line":40,"column":null}},"11":{"start":{"line":40,"column":50},"end":{"line":40,"column":null}},"12":{"start":{"line":41,"column":19},"end":{"line":41,"column":null}},"13":{"start":{"line":43,"column":18},"end":{"line":49,"column":null}},"14":{"start":{"line":50,"column":25},"end":{"line":50,"column":null}},"15":{"start":{"line":51,"column":18},"end":{"line":51,"column":null}},"16":{"start":{"line":52,"column":23},"end":{"line":61,"column":null}},"17":{"start":{"line":52,"column":53},"end":{"line":61,"column":8}},"18":{"start":{"line":63,"column":20},"end":{"line":63,"column":null}},"19":{"start":{"line":63,"column":38},"end":{"line":63,"column":63}},"20":{"start":{"line":64,"column":45},"end":{"line":64,"column":null}},"21":{"start":{"line":65,"column":6},"end":{"line":67,"column":null}},"22":{"start":{"line":66,"column":8},"end":{"line":66,"column":null}},"23":{"start":{"line":66,"column":36},"end":{"line":66,"column":null}},"24":{"start":{"line":68,"column":6},"end":{"line":75,"column":null}}},"fnMap":{"0":{"name":"registerWeatherTools","decl":{"start":{"line":16,"column":16},"end":{"line":16,"column":37}},"loc":{"start":{"line":16,"column":84},"end":{"line":78,"column":null}},"line":16},"1":{"name":"(anonymous_1)","decl":{"start":{"line":31,"column":28},"end":{"line":31,"column":35}},"loc":{"start":{"line":31,"column":59},"end":{"line":76,"column":5}},"line":31},"2":{"name":"(anonymous_2)","decl":{"start":{"line":35,"column":11},"end":{"line":35,"column":19}},"loc":{"start":{"line":35,"column":25},"end":{"line":35,"column":90}},"line":35},"3":{"name":"(anonymous_3)","decl":{"start":{"line":36,"column":11},"end":{"line":36,"column":16}},"loc":{"start":{"line":36,"column":23},"end":{"line":36,"column":84}},"line":36},"4":{"name":"(anonymous_4)","decl":{"start":{"line":52,"column":41},"end":{"line":52,"column":46}},"loc":{"start":{"line":52,"column":53},"end":{"line":61,"column":8}},"line":52},"5":{"name":"(anonymous_5)","decl":{"start":{"line":63,"column":26},"end":{"line":63,"column":32}},"loc":{"start":{"line":63,"column":38},"end":{"line":63,"column":63}},"line":63}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":6},"end":{"line":38,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":6},"end":{"line":38,"column":null}},{"start":{},"end":{}}],"line":33},"1":{"loc":{"start":{"line":35,"column":25},"end":{"line":35,"column":90}},"type":"binary-expr","locations":[{"start":{"line":35,"column":25},"end":{"line":35,"column":51}},{"start":{"line":35,"column":51},"end":{"line":35,"column":90}}],"line":35},"2":{"loc":{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},"type":"if","locations":[{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},{"start":{},"end":{}}],"line":39},"3":{"loc":{"start":{"line":40,"column":6},"end":{"line":40,"column":null}},"type":"if","locations":[{"start":{"line":40,"column":6},"end":{"line":40,"column":null}},{"start":{},"end":{}}],"line":40},"4":{"loc":{"start":{"line":41,"column":19},"end":{"line":41,"column":null}},"type":"binary-expr","locations":[{"start":{"line":41,"column":19},"end":{"line":41,"column":27}},{"start":{"line":41,"column":27},"end":{"line":41,"column":null}}],"line":41},"5":{"loc":{"start":{"line":50,"column":25},"end":{"line":50,"column":null}},"type":"binary-expr","locations":[{"start":{"line":50,"column":25},"end":{"line":50,"column":65}},{"start":{"line":50,"column":65},"end":{"line":50,"column":null}}],"line":50},"6":{"loc":{"start":{"line":51,"column":18},"end":{"line":51,"column":null}},"type":"binary-expr","locations":[{"start":{"line":51,"column":18},"end":{"line":51,"column":39}},{"start":{"line":51,"column":39},"end":{"line":51,"column":null}}],"line":51},"7":{"loc":{"start":{"line":56,"column":12},"end":{"line":56,"column":null}},"type":"cond-expr","locations":[{"start":{"line":56,"column":38},"end":{"line":56,"column":63}},{"start":{"line":56,"column":63},"end":{"line":56,"column":null}}],"line":56},"8":{"loc":{"start":{"line":57,"column":12},"end":{"line":57,"column":null}},"type":"cond-expr","locations":[{"start":{"line":57,"column":44},"end":{"line":57,"column":81}},{"start":{"line":57,"column":81},"end":{"line":57,"column":null}}],"line":57},"9":{"loc":{"start":{"line":58,"column":12},"end":{"line":58,"column":null}},"type":"cond-expr","locations":[{"start":{"line":58,"column":56},"end":{"line":58,"column":117}},{"start":{"line":58,"column":117},"end":{"line":58,"column":null}}],"line":58},"10":{"loc":{"start":{"line":59,"column":12},"end":{"line":59,"column":null}},"type":"cond-expr","locations":[{"start":{"line":59,"column":41},"end":{"line":59,"column":72}},{"start":{"line":59,"column":72},"end":{"line":59,"column":null}}],"line":59},"11":{"loc":{"start":{"line":60,"column":12},"end":{"line":60,"column":null}},"type":"cond-expr","locations":[{"start":{"line":60,"column":39},"end":{"line":60,"column":66}},{"start":{"line":60,"column":66},"end":{"line":60,"column":null}}],"line":60},"12":{"loc":{"start":{"line":63,"column":20},"end":{"line":63,"column":null}},"type":"binary-expr","locations":[{"start":{"line":63,"column":20},"end":{"line":63,"column":80}},{"start":{"line":63,"column":80},"end":{"line":63,"column":null}}],"line":63},"13":{"loc":{"start":{"line":66,"column":8},"end":{"line":66,"column":null}},"type":"if","locations":[{"start":{"line":66,"column":8},"end":{"line":66,"column":null}},{"start":{},"end":{}}],"line":66},"14":{"loc":{"start":{"line":73,"column":12},"end":{"line":73,"column":null}},"type":"cond-expr","locations":[{"start":{"line":73,"column":44},"end":{"line":73,"column":56}},{"start":{"line":73,"column":56},"end":{"line":73,"column":null}}],"line":73},"15":{"loc":{"start":{"line":74,"column":12},"end":{"line":74,"column":null}},"type":"cond-expr","locations":[{"start":{"line":74,"column":31},"end":{"line":74,"column":91}},{"start":{"line":74,"column":91},"end":{"line":74,"column":null}}],"line":74}},"s":{"0":2,"1":26,"2":5,"3":5,"4":1,"5":2,"6":1,"7":1,"8":4,"9":0,"10":4,"11":1,"12":3,"13":5,"14":2,"15":5,"16":5,"17":50,"18":5,"19":2,"20":5,"21":5,"22":6,"23":6,"24":2},"f":{"0":26,"1":5,"2":2,"3":1,"4":50,"5":2},"b":{"0":[1,4],"1":[2,1],"2":[0,4],"3":[1,3],"4":[3,1],"5":[2,0],"6":[5,0],"7":[2,48],"8":[1,49],"9":[1,49],"10":[1,49],"11":[0,50],"12":[5,0],"13":[6,0],"14":[2,0],"15":[1,1]},"meta":{"lastBranch":16,"lastFunction":6,"lastStatement":25,"seen":{"s:8:44:8:Infinity":0,"f:16:16:16:37":0,"s:17:2:77:Infinity":1,"f:31:28:31:35":1,"s:32:20:32:Infinity":2,"b:33:6:38:Infinity:undefined:undefined:undefined:undefined":0,"s:33:6:38:Infinity":3,"s:34:22:36:Infinity":4,"f:35:11:35:19":2,"s:35:25:35:90":5,"b:35:25:35:51:35:51:35:90":1,"f:36:11:36:16":3,"s:36:23:36:84":6,"s:37:8:37:Infinity":7,"b:39:6:39:Infinity:undefined:undefined:undefined:undefined":2,"s:39:6:39:Infinity":8,"s:39:45:39:Infinity":9,"b:40:6:40:Infinity:undefined:undefined:undefined:undefined":3,"s:40:6:40:Infinity":10,"s:40:50:40:Infinity":11,"s:41:19:41:Infinity":12,"b:41:19:41:27:41:27:41:Infinity":4,"s:43:18:49:Infinity":13,"s:50:25:50:Infinity":14,"b:50:25:50:65:50:65:50:Infinity":5,"s:51:18:51:Infinity":15,"b:51:18:51:39:51:39:51:Infinity":6,"s:52:23:61:Infinity":16,"f:52:41:52:46":4,"s:52:53:61:8":17,"b:56:38:56:63:56:63:56:Infinity":7,"b:57:44:57:81:57:81:57:Infinity":8,"b:58:56:58:117:58:117:58:Infinity":9,"b:59:41:59:72:59:72:59:Infinity":10,"b:60:39:60:66:60:66:60:Infinity":11,"s:63:20:63:Infinity":18,"b:63:20:63:80:63:80:63:Infinity":12,"f:63:26:63:32":5,"s:63:38:63:63":19,"s:64:45:64:Infinity":20,"s:65:6:67:Infinity":21,"b:66:8:66:Infinity:undefined:undefined:undefined:undefined":13,"s:66:8:66:Infinity":22,"s:66:36:66:Infinity":23,"s:68:6:75:Infinity":24,"b:73:44:73:56:73:56:73:Infinity":14,"b:74:31:74:91:74:91:74:Infinity":15},"fnNames":{}}} +,"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/writes.ts": {"path":"/home/thomas/Perso/mcp-ha/mcp_ha/src/mcp/tools/writes.ts","statementMap":{"0":{"start":{"line":16,"column":8},"end":{"line":20,"column":null}},"1":{"start":{"line":17,"column":4},"end":{"line":19,"column":null}},"2":{"start":{"line":18,"column":6},"end":{"line":18,"column":null}},"3":{"start":{"line":22,"column":2},"end":{"line":49,"column":null}},"4":{"start":{"line":38,"column":6},"end":{"line":38,"column":null}},"5":{"start":{"line":39,"column":6},"end":{"line":47,"column":null}},"6":{"start":{"line":51,"column":2},"end":{"line":79,"column":null}},"7":{"start":{"line":68,"column":6},"end":{"line":68,"column":null}},"8":{"start":{"line":69,"column":6},"end":{"line":77,"column":null}},"9":{"start":{"line":81,"column":2},"end":{"line":107,"column":null}},"10":{"start":{"line":97,"column":6},"end":{"line":97,"column":null}},"11":{"start":{"line":98,"column":6},"end":{"line":105,"column":null}}},"fnMap":{"0":{"name":"registerWriteTools","decl":{"start":{"line":13,"column":16},"end":{"line":13,"column":35}},"loc":{"start":{"line":13,"column":82},"end":{"line":108,"column":null}},"line":13},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":8},"end":{"line":16,"column":25}},"loc":{"start":{"line":16,"column":68},"end":{"line":20,"column":null}},"line":16},"2":{"name":"(anonymous_2)","decl":{"start":{"line":37,"column":26},"end":{"line":37,"column":33}},"loc":{"start":{"line":37,"column":86},"end":{"line":48,"column":5}},"line":37},"3":{"name":"(anonymous_3)","decl":{"start":{"line":67,"column":34},"end":{"line":67,"column":41}},"loc":{"start":{"line":67,"column":99},"end":{"line":78,"column":5}},"line":67},"4":{"name":"(anonymous_4)","decl":{"start":{"line":96,"column":30},"end":{"line":96,"column":37}},"loc":{"start":{"line":96,"column":88},"end":{"line":106,"column":5}},"line":96}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":4},"end":{"line":19,"column":null}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":19,"column":null}},{"start":{},"end":{}}],"line":17},"1":{"loc":{"start":{"line":44,"column":14},"end":{"line":44,"column":null}},"type":"cond-expr","locations":[{"start":{"line":44,"column":26},"end":{"line":44,"column":42}},{"start":{"line":44,"column":42},"end":{"line":44,"column":null}}],"line":44},"2":{"loc":{"start":{"line":74,"column":32},"end":{"line":74,"column":55}},"type":"binary-expr","locations":[{"start":{"line":74,"column":32},"end":{"line":74,"column":50}},{"start":{"line":74,"column":50},"end":{"line":74,"column":55}}],"line":74},"3":{"loc":{"start":{"line":101,"column":17},"end":{"line":101,"column":null}},"type":"cond-expr","locations":[{"start":{"line":101,"column":27},"end":{"line":101,"column":39}},{"start":{"line":101,"column":39},"end":{"line":101,"column":null}}],"line":101}},"s":{"0":35,"1":11,"2":2,"3":35,"4":6,"5":6,"6":35,"7":3,"8":3,"9":35,"10":2,"11":2},"f":{"0":35,"1":11,"2":6,"3":3,"4":2},"b":{"0":[2,9],"1":[1,4],"2":[3,1],"3":[1,1]},"meta":{"lastBranch":4,"lastFunction":5,"lastStatement":12,"seen":{"f:13:16:13:35":0,"s:16:8:20:Infinity":0,"f:16:8:16:25":1,"b:17:4:19:Infinity:undefined:undefined:undefined:undefined":0,"s:17:4:19:Infinity":1,"s:18:6:18:Infinity":2,"s:22:2:49:Infinity":3,"f:37:26:37:33":2,"s:38:6:38:Infinity":4,"s:39:6:47:Infinity":5,"b:44:26:44:42:44:42:44:Infinity":1,"s:51:2:79:Infinity":6,"f:67:34:67:41":3,"s:68:6:68:Infinity":7,"s:69:6:77:Infinity":8,"b:74:32:74:50:74:50:74:55":2,"s:81:2:107:Infinity":9,"f:96:30:96:37":4,"s:97:6:97:Infinity":10,"s:98:6:105:Infinity":11,"b:101:27:101:39:101:39:101:Infinity":3},"fnNames":{}}} } diff --git a/mcp_ha/coverage/index.html b/mcp_ha/coverage/index.html index ea54c7c..0124ed7 100644 --- a/mcp_ha/coverage/index.html +++ b/mcp_ha/coverage/index.html @@ -23,30 +23,30 @@

All files

- 86.58% + 88.62% Statements - 749/865 + 2376/2681
- 77.42% + 76.34% Branches - 463/598 + 1691/2215
- 86.88% + 89.21% Functions - 159/183 + 488/547
- 88.61% + 90.35% Lines - 677/764 + 2127/2354
@@ -79,63 +79,78 @@

All files

- src - -
+ src + +
- 79.61% - 207/260 - 79.16% - 114/144 - 81.13% - 43/53 - 80.49% - 194/241 + 86.59% + 575/664 + 80.99% + 409/505 + 88.88% + 112/126 + 87.29% + 529/606 + + + + src/db + +
+ + 91.53% + 119/130 + 73.17% + 60/82 + 91.3% + 21/23 + 94.64% + 106/112 src/ha - -
+ +
- 84.66% - 243/287 - 70.68% - 123/174 - 83.63% - 46/55 - 87.79% - 223/254 + 80.39% + 328/408 + 66.52% + 157/236 + 80.24% + 65/81 + 82.59% + 299/362 src/mcp - -
+ +
- 98.18% - 54/55 - 89.13% - 41/46 - 100% - 9/9 - 100% - 51/51 + 80.98% + 264/326 + 71.06% + 167/235 + 70.42% + 50/71 + 83.68% + 236/282 src/mcp/tools - -
+ +
- 93.15% - 245/263 - 79.05% - 185/234 - 92.42% - 61/66 - 95.87% - 209/218 + 94.53% + 1090/1153 + 77.61% + 898/1157 + 97.56% + 240/246 + 96.47% + 957/992 @@ -146,7 +161,7 @@

All files

+ + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/db/index.html b/mcp_ha/coverage/src/db/index.html new file mode 100644 index 0000000..969a9c1 --- /dev/null +++ b/mcp_ha/coverage/src/db/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for src/db + + + + + + + + + +
+
+

All files src/db

+
+ +
+ 91.53% + Statements + 119/130 +
+ + +
+ 73.17% + Branches + 60/82 +
+ + +
+ 91.3% + Functions + 21/23 +
+ + +
+ 94.64% + Lines + 106/112 +
+ + +
+

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

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
schema.ts +
+
50%1/2100%0/00%0/150%1/2
store.ts +
+
92.18%118/12873.17%60/8295.45%21/2295.45%105/110
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/db/schema.ts.html b/mcp_ha/coverage/src/db/schema.ts.html new file mode 100644 index 0000000..76dd5de --- /dev/null +++ b/mcp_ha/coverage/src/db/schema.ts.html @@ -0,0 +1,187 @@ + + + + + + Code coverage report for src/db/schema.ts + + + + + + + + + +
+
+

All files / src/db schema.ts

+
+ +
+ 50% + Statements + 1/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 50% + Lines + 1/2 +
+ + +
+

+ 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  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { index, sqliteTable, text } from "drizzle-orm/sqlite-core";
+ 
+/**
+ * Token store schema (#166, epic #164). Single source for both the runtime
+ * types and drizzle-kit generate; migrations live in mcp_ha/drizzle/ and are
+ * applied programmatically at boot (store.ts), drizzle-kit itself stays a
+ * dev dependency.
+ *
+ * The secret NEVER lands here: only its sha256 (hex) plus an 8-character
+ * prefix so a human can tell tokens apart, GitHub-style. Grants and the
+ * per-token entity lists are stored as JSON text: they are opaque payloads
+ * for SQL, always read and validated through the store.
+ */
+export const tokens = sqliteTable(
+  "tokens",
+  {
+    id: text("id").primaryKey(),
+    name: text("name").notNull().unique(),
+    prefix: text("prefix").notNull(),
+    hash: text("hash").notNull().unique(),
+    /** JSON Record<Category, Level> from the central registry (#165). */
+    grants: text("grants").notNull(),
+    /** JSON string[] glob lists, intersected with the global ones. Null = unrestricted. */
+    entityAllowlist: text("entity_allowlist"),
+    entityDenylist: text("entity_denylist"),
+    createdAt: text("created_at").notNull(),
+    expiresAt: text("expires_at"),
+    lastUsedAt: text("last_used_at"),
+    revokedAt: text("revoked_at"),
+  },
+  (t) => [index("idx_tokens_hash").on(t.hash)]
+);
+ 
+export type TokenRow = typeof tokens.$inferSelect;
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/db/store.ts.html b/mcp_ha/coverage/src/db/store.ts.html new file mode 100644 index 0000000..9d3c271 --- /dev/null +++ b/mcp_ha/coverage/src/db/store.ts.html @@ -0,0 +1,1138 @@ + + + + + + Code coverage report for src/db/store.ts + + + + + + + + + +
+
+

All files / src/db store.ts

+
+ +
+ 92.18% + Statements + 118/128 +
+ + +
+ 73.17% + Branches + 60/82 +
+ + +
+ 95.45% + Functions + 21/22 +
+ + +
+ 95.45% + Lines + 105/110 +
+ + +
+

+ 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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +3x +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +  +  +  +  +  +  +2x +2x +2x +  +  +  +26x +  +  +  +51x +51x +663x +663x +663x +  +51x +  +  +  +36x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +  +  +  +  +  +17x +  +17x +  +  +17x +  +  +17x +  +  +  +  +  +17x +16x +16x +  +2x +  +  +  +  +  +  +17x +92x +92x +38x +38x +  +52x +52x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +15x +4x +4x +4x +  +1x +1x +  +  +  +1x +1x +1x +1x +1x +  +  +  +  +  +  +  +  +5x +5x +  +2x +1x +  +  +  +  +1x +  +  +  +  +  +  +  +  +17x +17x +17x +17x +17x +  +  +65x +  +  +  +  +2x +2x +  +  +  +15x +15x +  +  +  +  +  +  +  +  +  +  +  +18x +4x +4x +4x +4x +4x +  +  +  +  +  +  +  +15x +15x +15x +30x +1x +  +14x +14x +14x +  +  +  +  +  +  +  +  +  +  +  +  +15x +15x +  +  +1x +1x +1x +  +  +13x +13x +  +  +  +  +  +  +  +12x +12x +12x +12x +10x +10x +10x +8x +7x +7x +  +  +  +7x +7x +7x +6x +6x +6x +  +  +  +  +  +  +  +4x +4x +3x +3x +3x +  +3x +  +  +  +  +21x +21x +  +  +  +10x +  +  + 
import { createHash, randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
+import { DatabaseSync } from "node:sqlite";
+import { copyFileSync, existsSync, renameSync, rmSync, statfsSync } from "node:fs";
+import { dirname } from "node:path";
+import { fileURLToPath } from "node:url";
+import { eq } from "drizzle-orm";
+import { drizzle } from "drizzle-orm/sqlite-proxy";
+import { migrate } from "drizzle-orm/sqlite-proxy/migrator";
+import { tokens, type TokenRow } from "./schema.js";
+import { CATEGORIES, LEVELS, type Grants, type Level } from "../mcp/registry.js";
+import { log } from "../logger.js";
+ 
+/**
+ * Token store (#166, epic #164): tokens hashed at rest in a local SQLite
+ * database. Drizzle rides the stable sqlite-proxy adapter over the built-in
+ * node:sqlite driver (zero native dependency); the dedicated node-sqlite
+ * driver only exists in the 1.0 RCs, swapping to it once stable touches
+ * only this file. Migrations are the drizzle/ folder, applied here at boot.
+ *
+ * The secret exists in memory at creation time only: what lands on disk is
+ * sha256(token) plus an 8-character prefix for human identification. Lookup
+ * goes through the hash (indexed), which breaks any timing correlation with
+ * the secret; the final comparison is still timingSafeEqual on the hashes,
+ * keeping the constant-time doctrine end to end.
+ */
+ 
+export interface TokenRecord {
+  id: string;
+  name: string;
+  prefix: string;
+  grants: Grants;
+  entityAllowlist: string[] | null;
+  entityDenylist: string[] | null;
+  createdAt: string;
+  expiresAt: string | null;
+  lastUsedAt: string | null;
+  revokedAt: string | null;
+}
+ 
+export interface CreateTokenInput {
+  name: string;
+  grants: Partial<Grants>;
+  entityAllowlist?: string[] | undefined;
+  entityDenylist?: string[] | undefined;
+  /** ISO date; the token stops authenticating past it. */
+  expiresAt?: string | undefined;
+}
+ 
+export interface CreatedToken {
+  /** The clear secret, shown ONCE and never stored. */
+  token: string;
+  record: TokenRecord;
+}
+ 
+export type VerifyResult =
+  | { record: TokenRecord; denied: null }
+  | { record: TokenRecord; denied: "revoked" | "expired" }
+  | null;
+ 
+/** At most one last_used_at write per token per minute. */
+const LAST_USED_THROTTLE_MS = 60_000;
+const TOKEN_PREFIX_CHARS = 8;
+ 
+/** Linux filesystem magics worth naming in the broken-locks diagnostic (#174). */
+const FS_MAGICS: Record<string, string> = {
+  ef53: "ext2/3/4",
+  "9123683e": "btrfs",
+  "58465342": "xfs",
+  "2fc12fc1": "zfs",
+  "6969": "nfs",
+  "517b": "smb",
+  fe534d42: "smb2/cifs",
+  "794c7630": "overlayfs",
+  "1021994": "tmpfs",
+  "65735546": "fuse",
+};
+ 
+function describeFilesystem(path: string): string {
+  try {
+    const type = statfsSync(dirname(path)).type.toString(16);
+    return `${FS_MAGICS[type] ?? "unknown"} (magic 0x${type})`;
+  } catch {
+    return "unknown (statfs failed)";
+  }
+}
+ 
+function looksLikeLockError(e: unknown): boolean {
+  const cause = (e as { cause?: unknown })?.cause;
+  const msg = `${e instanceof Error ? e.message : String(e)} ${cause instanceof Error ? cause.message : ""}`;
+  return /locked|busy/i.test(msg);
+}
+ 
+function sha256Hex(value: string): string {
+  return createHash("sha256").update(value).digest("hex");
+}
+ 
+function normalizeGrants(partial: Partial<Grants>): Grants {
+  const out = {} as Grants;
+  for (const c of CATEGORIES) {
+    const level = partial[c] ?? "none";
+    Iif (!LEVELS.includes(level as Level)) throw new Error(`invalid level for ${c}: ${String(level)}`);
+    out[c] = level as Level;
+  }
+  return out;
+}
+ 
+function toRecord(row: TokenRow): TokenRecord {
+  return {
+    id: row.id,
+    name: row.name,
+    prefix: row.prefix,
+    grants: normalizeGrants(JSON.parse(row.grants) as Partial<Grants>),
+    entityAllowlist: row.entityAllowlist ? (JSON.parse(row.entityAllowlist) as string[]) : null,
+    entityDenylist: row.entityDenylist ? (JSON.parse(row.entityDenylist) as string[]) : null,
+    createdAt: row.createdAt,
+    expiresAt: row.expiresAt,
+    lastUsedAt: row.lastUsedAt,
+    revokedAt: row.revokedAt,
+  };
+}
+ 
+export interface TokenStoreOptions {
+  /** SQLITE_BUSY wait budget; short in tests, 5 s in production. */
+  busyTimeoutMs?: number;
+}
+ 
+/** Sits next to the database; the Supervisor backup grabs both files. */
+export function snapshotPathFor(dbPath: string): string {
+  return dbPath.replace(/\.db$/, "") + ".snapshot.db";
+}
+ 
+export class TokenStore {
+  private client: DatabaseSync;
+  private db: ReturnType<typeof drizzle>;
+  private lastTouch = new Map<string, number>();
+  /** Null for :memory:; snapshots make no sense without a disk to back up. */
+  private snapshotTarget: string | null = null;
+ 
+  private constructor(path: string, opts: TokenStoreOptions = {}) {
+    this.client = new DatabaseSync(path);
+    // A transient lock (fast restart racing the dying process, checkpoint in
+    // flight) becomes a short wait instead of an error (#172).
+    this.client.exec(`PRAGMA busy_timeout = ${opts.busyTimeoutMs ?? 5000};`);
+    // WAL is an optimisation, never a requirement (#172): the delete-to-WAL
+    // transition needs an exclusive lock and some filesystems (network
+    // mounts, odd overlays) refuse it with "database is locked". A 10-row
+    // database is perfectly served by the rollback journal. In no-locking
+    // mode (#174) WAL is impossible by construction, do not even try.
+    if (!path.includes("nolock=1")) {
+      try {
+        this.client.exec("PRAGMA journal_mode = WAL;");
+      } catch (e) {
+        log.warning(
+          `tokens.db: WAL journal unavailable (${e instanceof Error ? e.message : String(e)}); staying on the rollback journal`
+        );
+      }
+    }
+    // sqlite-proxy contract: rows as arrays of values in column order.
+    // Single-table queries only, so Object.values keeps that order.
+    this.db = drizzle(async (sql, params, method) => {
+      const stmt = this.client.prepare(sql);
+      if (method === "run") {
+        stmt.run(...(params as never[]));
+        return { rows: [] };
+      }
+      const rows = (stmt.all(...(params as never[])) as Record<string, unknown>[]).map((r) => Object.values(r));
+      return { rows: method === "get" ? (rows[0] ?? []) : rows };
+    });
+  }
+ 
+  /**
+   * Opens (or creates) the database and applies pending migrations. When the
+   * filesystem never grants the fcntl locks (#174: every operation times out
+   * with SQLITE_BUSY, typical of some network mounts), retries WITHOUT
+   * SQLite locking (`nolock=1`). Safe here because exactly one process owns
+   * this database: the Supervisor runs a single add-on container.
+   *
+   * If the database still cannot open (torn hot backup restored by the
+   * Supervisor, WAL leftovers on a lockless environment), the consistency
+   * snapshot (#181) is restored: the broken file is kept aside as evidence,
+   * never deleted. The caller's in-memory fallback (#172) stays the last net.
+   */
+  static async open(path: string, opts: TokenStoreOptions = {}): Promise<TokenStore> {
+    if (path === ":memory:" || path.startsWith("file:")) return TokenStore.openExact(path, opts, null);
+    const snapshotTarget = snapshotPathFor(path);
+    try {
+      return await TokenStore.openWithLockFallback(path, opts, snapshotTarget);
+    } catch (e) {
+      Iif (!existsSync(snapshotTarget)) throw e;
+      log.error(
+        `tokens.db unreadable (${e instanceof Error ? e.message : String(e)}); ` +
+          "restoring from the consistency snapshot. The broken file is kept next to it as evidence."
+      );
+      renameSync(path, `${path}.corrupt-${Date.now()}`);
+      rmSync(`${path}-wal`, { force: true });
+      rmSync(`${path}-shm`, { force: true });
+      copyFileSync(snapshotTarget, path);
+      return await TokenStore.openWithLockFallback(path, opts, snapshotTarget);
+    }
+  }
+ 
+  private static async openWithLockFallback(
+    path: string,
+    opts: TokenStoreOptions,
+    snapshotTarget: string | null
+  ): Promise<TokenStore> {
+    try {
+      return await TokenStore.openExact(path, opts, snapshotTarget);
+    } catch (e) {
+      if (!looksLikeLockError(e)) throw e;
+      log.warning(
+        `tokens.db: filesystem locks look broken on ${describeFilesystem(path)}: ` +
+          "reopening WITHOUT SQLite locking (safe: the Supervisor runs a single instance). " +
+          "If /data lives on a network mount, consider local storage."
+      );
+      return await TokenStore.openExact(`file:${path}?nolock=1`, opts, snapshotTarget);
+    }
+  }
+ 
+  private static async openExact(
+    path: string,
+    opts: TokenStoreOptions,
+    snapshotTarget: string | null
+  ): Promise<TokenStore> {
+    const store = new TokenStore(path, opts);
+    store.snapshotTarget = snapshotTarget;
+    const migrationsFolder = fileURLToPath(new URL("../../drizzle", import.meta.url));
+    try {
+      await migrate(
+        store.db,
+        async (queries) => {
+          for (const q of queries) store.client.exec(q);
+        },
+        { migrationsFolder }
+      );
+    } catch (e) {
+      store.client.close();
+      throw e;
+    }
+    // First successful open without a snapshot yet: create one, so the very
+    // first Supervisor backup already carries a consistent copy (#181).
+    if (snapshotTarget && !existsSync(snapshotTarget)) store.snapshot();
+    return store;
+  }
+ 
+  /**
+   * Consistency snapshot (#181): the Supervisor tars /data while we run, so
+   * the live tokens.db in a backup can be torn (file and -wal captured at
+   * different instants). VACUUM INTO produces a coherent copy and the
+   * atomic rename guarantees the tar always sees a whole file. Called after
+   * every mutation (not for last_used_at touches); a few kilobytes, sync,
+   * milliseconds. Failures degrade the safety net, never the operation.
+   */
+  private snapshot(): void {
+    if (!this.snapshotTarget) return;
+    const tmp = `${this.snapshotTarget}.tmp`;
+    try {
+      rmSync(tmp, { force: true });
+      this.client.exec(`VACUUM INTO '${tmp.replace(/'/g, "''")}'`);
+      renameSync(tmp, this.snapshotTarget);
+    } catch (e) {
+      log.warning(`tokens.db consistency snapshot failed: ${e instanceof Error ? e.message : String(e)}`);
+      rmSync(tmp, { force: true });
+    }
+  }
+ 
+  async create(input: CreateTokenInput): Promise<CreatedToken> {
+    const name = input.name.trim();
+    Iif (!name) throw new Error("token name must not be empty");
+    const grants = normalizeGrants(input.grants);
+    if (Object.values(grants).every((l) => l === "none")) {
+      throw new Error("a token with no grant at all would never authenticate anything: pick at least one category");
+    }
+    const token = `mcpha_${randomBytes(32).toString("base64url")}`;
+    const now = new Date().toISOString();
+    const row: TokenRow = {
+      id: randomUUID(),
+      name,
+      prefix: token.slice(0, TOKEN_PREFIX_CHARS),
+      hash: sha256Hex(token),
+      grants: JSON.stringify(grants),
+      entityAllowlist: input.entityAllowlist?.length ? JSON.stringify(input.entityAllowlist) : null,
+      entityDenylist: input.entityDenylist?.length ? JSON.stringify(input.entityDenylist) : null,
+      createdAt: now,
+      expiresAt: input.expiresAt ?? null,
+      lastUsedAt: null,
+      revokedAt: null,
+    };
+    try {
+      await this.db.insert(tokens).values(row);
+    } catch (e) {
+      // Drizzle wraps driver errors; the SQLite UNIQUE violation is the cause.
+      const cause = (e as { cause?: unknown }).cause;
+      const msg = `${e instanceof Error ? e.message : String(e)} ${cause instanceof Error ? cause.message : ""}`;
+      Eif (msg.includes("UNIQUE")) throw new Error(`a token named "${name}" already exists; revoke it or pick another name`);
+      throw e;
+    }
+    this.snapshot();
+    return { token, record: toRecord(row) };
+  }
+ 
+  /**
+   * Authenticates a presented bearer. null = unknown token; a record with a
+   * denied reason lets the caller audit revoked/expired attempts by name.
+   */
+  async verify(presented: string): Promise<VerifyResult> {
+    const digest = sha256Hex(presented);
+    const rows = await this.db.select().from(tokens).where(eq(tokens.hash, digest)).limit(1);
+    const row = rows[0];
+    if (!row) return null;
+    Iif (!timingSafeEqual(Buffer.from(digest), Buffer.from(row.hash))) return null;
+    const record = toRecord(row);
+    if (record.revokedAt) return { record, denied: "revoked" };
+    if (record.expiresAt && Date.parse(record.expiresAt) <= Date.now()) return { record, denied: "expired" };
+    await this.touch(row.id);
+    return { record, denied: null };
+  }
+ 
+  private async touch(id: string): Promise<void> {
+    const now = Date.now();
+    const last = this.lastTouch.get(id) ?? 0;
+    if (now - last < LAST_USED_THROTTLE_MS) return;
+    this.lastTouch.set(id, now);
+    try {
+      await this.db.update(tokens).set({ lastUsedAt: new Date(now).toISOString() }).where(eq(tokens.id, id));
+    } catch (e) {
+      log.debug(`last_used_at update failed: ${e instanceof Error ? e.message : e}`);
+    }
+  }
+ 
+  /** Marks a token revoked; idempotent. Returns false for unknown ids. */
+  async revoke(id: string): Promise<boolean> {
+    const rows = await this.db.select().from(tokens).where(eq(tokens.id, id)).limit(1);
+    if (!rows[0]) return false;
+    Eif (!rows[0].revokedAt) {
+      await this.db.update(tokens).set({ revokedAt: new Date().toISOString() }).where(eq(tokens.id, id));
+      this.snapshot();
+    }
+    return true;
+  }
+ 
+  /** Every token, newest first, WITHOUT the hash. */
+  async list(): Promise<TokenRecord[]> {
+    const rows = await this.db.select().from(tokens);
+    return rows.map(toRecord).sort((a, b) => b.createdAt.localeCompare(a.createdAt));
+  }
+ 
+  close(): void {
+    this.client.close();
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/ha/catalog.ts.html b/mcp_ha/coverage/src/ha/catalog.ts.html index 08d23f0..c6ca923 100644 --- a/mcp_ha/coverage/src/ha/catalog.ts.html +++ b/mcp_ha/coverage/src/ha/catalog.ts.html @@ -23,30 +23,30 @@

All files / src/ha c
- 100% + 97.22% Statements - 45/45 + 105/108
- 90.32% + 85.93% Branches - 28/31 + 55/64
- 100% + 96.29% Functions - 11/11 + 26/27
- 100% + 98.88% Lines - 38/38 + 89/90
@@ -169,7 +169,135 @@

All files / src/ha c 104 105 106 -107  +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  +        @@ -196,88 +324,215 @@

All files / src/ha c       +  +  +13x +13x +13x +13x +  +13x +13x +  +13x +  +13x +  +  +  +  +  +  +  +  +2x +2x +2x +  +  +  +  +  +  +  +  +  +5x +5x +5x 5x 5x 5x +7x +1x +1x +  +6x +6x +  +  5x +7x +7x +7x +1x +7x +  +  +4x +4x +20x +  +4x +4x +4x +4x +  +1x +  +    5x       +  +  +  +  +  +  +  1x 1x       -9x -8x -6x -6x -6x         -6x       +2x     -6x -6x   -6x     -6x   +2x +  +10x +10x +1x +  +  +5x +  +  +  +  +  +  +  +  +14x +13x +11x +11x +  +  +  +11x +22x +22x +  +20x +20x +  +  +11x +  +  +  +1x +1x +  +11x     -9x -8x -6x -6x -6x -6x -6x -6x   -6x     -6x     +11x +11x   -9x -8x -24x -8x +11x   -8x -32x -32x -32x -32x   +11x       +18x +15x +13x +11x +11x +11x +11x +11x +11x   +11x     +11x       +14x +13x +49x +26x +13x +13x +  +13x +65x +65x +  +  +65x +65x +65x +65x +  +  +  +  +  +  +  +  +  +  +  +  +2x +           
import type { HaWsClient } from "./ws.js";
 import type { HaState, IndexedEntity } from "../types.js";
-import { areasSchema, devicesSchema, entityEntriesSchema, haStatesSchema, parseHaPayload } from "./schemas.js";
+import { areasSchema, devicesSchema, entityEntriesSchema, floorsSchema, haStateSchema, haStatesSchema, labelsSchema, parseHaPayload } from "./schemas.js";
+import { log } from "../logger.js";
  
 const REGISTRY_TTL_MS = 60_000;
 /**
@@ -290,9 +545,11 @@ 

All files / src/ha c   interface RegistryCache { at: number; - areas: Array<{ area_id: string; name: string }>; - devices: Array<{ id: string; name: string | null; name_by_user: string | null; manufacturer: string | null; model: string | null; area_id: string | null; disabled_by: string | null }>; - entities: Array<{ entity_id: string; area_id: string | null; device_id: string | null; disabled_by: string | null; hidden_by: string | null; entity_category: string | null }>; + areas: Array<{ area_id: string; name: string; floor_id: string | null }>; + devices: Array<{ id: string; name: string | null; name_by_user: string | null; manufacturer: string | null; model: string | null; area_id: string | null; disabled_by: string | null; parent_device_id: string | null }>; + entities: Array<{ entity_id: string; area_id: string | null; device_id: string | null; disabled_by: string | null; hidden_by: string | null; entity_category: string | null; aliases: string[]; labels: string[] }>; + floors: Array<{ floor_id: string; name: string; level: number | null }>; + labels: Array<{ label_id: string; name: string }>; }   /** @@ -306,13 +563,111 @@

All files / src/ha c private regInflight: Promise<RegistryCache> | null = null; private statesCache: { at: number; states: HaState[] } | null = null; private statesInflight: Promise<HaState[]> | null = null; + /** Live state map fed by state_changed events (v0.3, #79); null = TTL fallback. */ + private live: Map<string, HaState> | null = null; + private liveStarting = false; + /** Session subscriptions hook (#90): notified on every state_changed. */ + private changeListeners = new Set<(entityId: string) => void>();   constructor(private ws: HaWsClient) {} +  + /** Whether states are served from the live map or the TTL fallback (#144). */ + get liveActive(): boolean { + return this.live !== null; + }   /** Drops every cache; wired to the WS reconnection (audit B5/C9). */ invalidate(): void { this.regCache = null; this.statesCache = null; + this.live = null; + } +  + /** + * Switches states() to a live map: subscribe to state_changed FIRST (with + * an event buffer so nothing is lost), then snapshot with get_states, then + * replay the buffer. Call it after every (re)connection; on failure the + * short-TTL fallback keeps working. + */ + async startLive(): Promise<void> { + Iif (this.liveStarting) return; + this.liveStarting = true; + try { + const buffer: Array<{ entity_id: string; new_state: unknown }> = []; + let target: Map<string, HaState> | null = null; + const apply = (map: Map<string, HaState>, entityId: string, newState: unknown): void => { + if (newState === null || newState === undefined) { + map.delete(entityId); + return; + } + const parsed = haStateSchema.safeParse(newState); + Eif (parsed.success) map.set(entityId, parsed.data as HaState); + }; +  + await this.ws.subscribe("subscribe_events", { event_type: "state_changed" }, (event) => { + const data = (event as { data?: { entity_id?: string; new_state?: unknown } })?.data; + Iif (!data?.entity_id) return; + if (target) apply(target, data.entity_id, data.new_state); + else buffer.push({ entity_id: data.entity_id, new_state: data.new_state }); + for (const listener of this.changeListeners) listener(data.entity_id); + }); +  + const raw = await this.ws.send("get_states"); + const states = parseHaPayload(haStatesSchema, raw, "get_states") as HaState[]; + const map = new Map(states.map((s) => [s.entity_id, s])); + // Events buffered during the snapshot are newer than the snapshot. + for (const b of buffer) apply(map, b.entity_id, b.new_state); + target = map; + this.live = map; + log.info(`Live state cache active (${map.size} entities), get_states polling is over.`); + } catch (e) { + log.warning( + `Live state cache unavailable (${e instanceof Error ? e.message : String(e)}), falling back to short-TTL fetches.` + ); + } finally { + this.liveStarting = false; + } + } +  + /** + * Registers a listener fired on every state_changed event (#90, resource + * subscriptions). Only fires while the live map is active, which is also + * the only situation where sessions can promise fresh notifications. + * Returns the detach function; sessions MUST call it on close. + */ + onEntityChange(listener: (entityId: string) => void): () => void { + this.changeListeners.add(listener); + return () => this.changeListeners.delete(listener); + } +  + /** + * Event-driven registry invalidation (#93): a rename or a reassignment + * must be visible on the next call, not up to 60 s later. Subscriptions + * are re-established after every (re)connection, like the live state map. + * The 60 s TTL stays as a safety net in case a subscription silently + * fails; with the events active it simply never triggers a stale read. + */ + async watchRegistries(): Promise<void> { + const events = [ + "area_registry_updated", + "device_registry_updated", + "entity_registry_updated", + "floor_registry_updated", + "label_registry_updated", + ]; + await Promise.all( + events.map(async (event_type) => { + try { + await this.ws.subscribe("subscribe_events", { event_type }, () => { + this.regCache = null; + }); + } catch (e) { + log.debug( + `Registry watch unavailable for ${event_type} (${e instanceof Error ? e.message : String(e)}), the 60 s TTL covers it.` + ); + } + }) + ); }   async registries(): Promise<RegistryCache> { @@ -320,16 +675,31 @@

All files / src/ha c if (this.regInflight) return this.regInflight; this.regInflight = (async () => { try { - const [areasRaw, devicesRaw, entitiesRaw] = await Promise.all([ + // Floor and label registries are younger than the others (#89): an + // older core answers unknown_command, which must degrade to "no + // floors, no labels" instead of failing the whole catalog. + const optional = async <T>(cmd: string, parse: (raw: unknown) => T[], what: string): Promise<T[]> => { + try { + return parse(await this.ws.send(cmd)); + } catch (e) { + log.debug(`${what} unavailable (${e instanceof Error ? e.message : String(e)}), continuing without it.`); + return []; + } + }; + const [areasRaw, devicesRaw, entitiesRaw, floors, labels] = await Promise.all([ this.ws.send("config/area_registry/list"), this.ws.send("config/device_registry/list"), this.ws.send("config/entity_registry/list"), + optional("config/floor_registry/list", (r) => parseHaPayload(floorsSchema, r, "floor registry"), "floor registry"), + optional("config/label_registry/list", (r) => parseHaPayload(labelsSchema, r, "label registry"), "label registry"), ]); const cache: RegistryCache = { at: Date.now(), areas: parseHaPayload(areasSchema, areasRaw, "area registry"), devices: parseHaPayload(devicesSchema, devicesRaw, "device registry"), entities: parseHaPayload(entityEntriesSchema, entitiesRaw, "entity registry"), + floors, + labels, }; this.regCache = cache; return cache; @@ -341,6 +711,7 @@

All files / src/ha c }   async states(): Promise<HaState[]> { + if (this.live) return [...this.live.values()]; if (this.statesCache && Date.now() - this.statesCache.at < STATES_TTL_MS) return this.statesCache.states; if (this.statesInflight) return this.statesInflight; this.statesInflight = (async () => { @@ -358,24 +729,34 @@

All files / src/ha c   async index(): Promise<IndexedEntity[]> { const [states, regs] = await Promise.all([this.states(), this.registries()]); - const areaById = new Map(regs.areas.map((a) => [a.area_id, a.name])); + const areaById = new Map(regs.areas.map((a) => [a.area_id, a])); const entryByEid = new Map(regs.entities.map((e) => [e.entity_id, e])); const deviceById = new Map(regs.devices.map((d) => [d.id, d])); + const floorName = new Map(regs.floors.map((f) => [f.floor_id, f.name])); + const labelName = new Map(regs.labels.map((l) => [l.label_id, l.name]));   return states.map((s) => { const entry = entryByEid.get(s.entity_id); const device = entry?.device_id ? deviceById.get(entry.device_id) : undefined; - const areaId = entry?.area_id ?? device?.area_id ?? null; + // Child devices (#191) carry no area of their own; inherit the + // parent's, one level deep, the way the HA UI shows them. + const parentDevice = device?.parent_device_id ? deviceById.get(device.parent_device_id) : undefined; + const areaId = entry?.area_id ?? device?.area_id ?? parentDevice?.area_id ?? null; + const area = areaId ? areaById.get(areaId) : undefined; return { entity_id: s.entity_id, name: String(s.attributes?.friendly_name ?? s.entity_id), domain: s.entity_id.split(".")[0] ?? "", state: s.state, - area: areaId ? (areaById.get(areaId) ?? null) : null, + area: area?.name ?? null, + floor: area?.floor_id ? (floorName.get(area.floor_id) ?? null) : null, device_id: entry?.device_id ?? null, last_changed: s.last_changed, hidden: Boolean(entry?.hidden_by), category: entry?.entity_category ?? null, + aliases: entry?.aliases ?? [], + // Unresolvable label ids stay as ids rather than vanishing. + labels: (entry?.labels ?? []).map((id) => labelName.get(id) ?? id), attributes: s.attributes ?? {}, }; }); @@ -388,7 +769,7 @@

All files / src/ha c + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/logger.ts.html b/mcp_ha/coverage/src/logger.ts.html index 7a97036..4f537dd 100644 --- a/mcp_ha/coverage/src/logger.ts.html +++ b/mcp_ha/coverage/src/logger.ts.html @@ -23,30 +23,30 @@

All files / src logger.
- 100% + 98.11% Statements - 21/21 + 52/53
- 100% + 94.11% Branches - 4/4 + 16/17
- 100% + 94.44% Functions - 11/11 + 17/18
100% Lines - 20/20 + 48/48
@@ -118,50 +118,170 @@

All files / src logger. 53 54 55 -56  +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  +  +  +  +  +31x +  +  +  +  +  +  +  +  +  +  +  +31x +31x     -13x +  +70x +70x +69x +69x +  +70x +      +3x       +850x +13x     +31x +293x +424x +31x +8x +88x +5x +1x         -13x -13x       -46x -46x -45x -45x   -46x +  +31x +  +31x +31x +  +31x +  +31x +31x       3x +3x +3x +3x       -221x -12x +  +3x     -13x -70x -100x -17x -5x -24x 4x +  +  +  +139x +9x +9x +9x +9x +9x +9x +2x +2x +  +9x +7x +  +  +  +2x +1x 1x     @@ -171,11 +291,21 @@

All files / src logger.       -9x +  +  +  +  +  +  +139x +139x +139x    
// Leveled logging on stderr (shown in the add-on Log tab) plus a structured
 // audit trail. The threshold comes from the add-on option `log_level`.
  
+import { appendFile, rename, stat } from "node:fs/promises";
+ 
 export const LOG_LEVELS = {
   trace: 10,
   debug: 20,
@@ -220,13 +350,75 @@ 

All files / src logger. fatal: (msg: string): void => emit("fatal", msg), };   +// --- persistent audit sink (#91) --- +// stdout lines vanish on restart and drown in the regular log; a security +// journal deserves a file. Kept deliberately OUT of reach of MCP clients: +// no tool reads or clears it (an attacker would erase their traces), read +// it over SSH or the file editor add-on. +  +/** Per-file cap; one rotated sibling is kept, so disk use tops at ~2x. */ +const AUDIT_MAX_BYTES = 1_000_000; +  +let auditPath: string | null = null; +let auditMaxBytes = AUDIT_MAX_BYTES; +/** Serializes writes so lines never interleave; keeps audit() non-blocking. */ +let auditQueue: Promise<void> = Promise.resolve(); +/** Tracked size of the current file; -1 = measure lazily on first write. */ +let auditSize = -1; +let auditWarned = false; +  +/** Mirrors audit lines to a JSON-lines file with size rotation (#91). */ +export function enableAuditFile(path: string, maxBytes: number = AUDIT_MAX_BYTES): void { + auditPath = path; + auditMaxBytes = maxBytes; + auditSize = -1; + auditWarned = false; +} +  +/** Test hooks: stop mirroring / wait for pending writes. */ +export function disableAuditFile(): void { + auditPath = null; +} +export function flushAudit(): Promise<void> { + return auditQueue; +} +  +function appendAudit(line: string): void { + if (!auditPath) return; + const path = auditPath; + auditQueue = auditQueue.then(async () => { + try { + if (auditSize < 0) auditSize = await stat(path).then((s) => s.size).catch(() => 0); + const bytes = Buffer.byteLength(line) + 1; + if (auditSize > 0 && auditSize + bytes > auditMaxBytes) { + await rename(path, `${path}.1`); // replaces the previous .1 + auditSize = 0; + } + await appendFile(path, line + "\n"); + auditSize += bytes; + } catch (e) { + // Warn once, keep stdout as the source of truth, and keep trying: + // /data may become writable again. + if (!auditWarned) { + auditWarned = true; + log.warning( + `Audit file ${path} is not writable (${e instanceof Error ? e.message : String(e)}); audit lines stay on stdout only.` + ); + } + } + }); +} +  /** * Audit trail for write attempts: one JSON line per attempt, allowed or * refused. Emitted regardless of the log level, this is a security record, - * not debug output. Never put secrets in here. + * not debug output. Never put secrets in here. Also mirrored to + * /data/audit.log when running as an add-on (#91). */ export function audit(entry: Record<string, unknown>): void { - console.error(JSON.stringify({ ts: new Date().toISOString(), audit: true, ...entry })); + const line = JSON.stringify({ ts: new Date().toISOString(), audit: true, ...entry }); + console.error(line); + appendAudit(line); }  

@@ -235,7 +427,7 @@

All files / src logger. + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/registry.ts.html b/mcp_ha/coverage/src/mcp/registry.ts.html new file mode 100644 index 0000000..2b8f532 --- /dev/null +++ b/mcp_ha/coverage/src/mcp/registry.ts.html @@ -0,0 +1,718 @@ + + + + + + Code coverage report for src/mcp/registry.ts + + + + + + + + + +
+
+

All files / src/mcp registry.ts

+
+ +
+ 83.72% + Statements + 36/43 +
+ + +
+ 83.33% + Branches + 25/30 +
+ + +
+ 72.72% + Functions + 8/11 +
+ + +
+ 86.11% + Lines + 31/36 +
+ + +
+

+ 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  +  +  +  +  +  +  +  +  +  +  +26x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +26x +  +  +  +  +  +  +  +  +  +26x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2501x +  +  +  +  +1014x +1014x +1012x +  +  +  +  +  +  +  +  +  +  +  +117x +117x +117x +117x +117x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +9x +9x +117x +117x +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +8x +104x +8x +  +  +  +  +33x +33x +33x +1485x +1139x +277x +  +33x +  +  +  +  +  +  +  +  +  +  +  +  +22x +  +947x +557x +  +  +  + 
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
+import type { AddonConfig } from "../config.js";
+ 
+/**
+ * Central tool registry (#165, epic #164): the single source of truth for
+ * WHAT each tool is. Registration gating, the ingress tool counts and the
+ * future per-token grants (#166/#167) all derive from this table; adding a
+ * tool without an entry here fails the exhaustiveness test in index.test.ts.
+ */
+ 
+/** Tool families, the granularity of the future fine-grained tokens. */
+export const CATEGORIES = [
+  "entities",
+  "history",
+  "diagnostics",
+  "automations",
+  "scripts",
+  "services",
+  "helpers",
+  "camera",
+  "calendar",
+  "notify",
+  "scenes",
+  "dashboards",
+  "environment",
+] as const;
+export type Category = (typeof CATEGORIES)[number];
+ 
+/**
+ * Access levels, strictly ordered: none < read < write < manage. A grant
+ * INCLUDES the levels below it (GitHub permission model). In particular
+ * manage includes write by design: whoever can rewrite an automation's
+ * config can make it do anything, so a manage-without-write tier would be
+ * an illusory boundary, not a real one.
+ */
+export const LEVELS = ["none", "read", "write", "manage"] as const;
+export type Level = (typeof LEVELS)[number];
+ 
+export interface ToolEntry {
+  category: Category;
+  /** Minimum level a grant must reach for the tool to exist. */
+  level: Exclude<Level, "none">;
+}
+ 
+/** All 45 tools. Kept sorted by category, then level, then name. */
+export const TOOL_REGISTRY: Record<string, ToolEntry> = {
+  // entities: the read surface of the state machine. ha_render_template can
+  // read any state, so it belongs here rather than in a category of its own.
+  ha_get_entity: { category: "entities", level: "read" },
+  ha_list_areas: { category: "entities", level: "read" },
+  ha_list_devices: { category: "entities", level: "read" },
+  ha_list_entities: { category: "entities", level: "read" },
+  ha_render_template: { category: "entities", level: "read" },
+  ha_search_entities: { category: "entities", level: "read" },
+  // history
+  ha_get_history: { category: "history", level: "read" },
+  ha_get_logbook: { category: "history", level: "read" },
+  ha_get_statistics: { category: "history", level: "read" },
+  // diagnostics
+  ha_explain_event: { category: "diagnostics", level: "read" },
+  ha_get_addons: { category: "diagnostics", level: "read" },
+  ha_get_health: { category: "diagnostics", level: "read" },
+  ha_get_self_test: { category: "diagnostics", level: "read" },
+  ha_get_system: { category: "diagnostics", level: "read" },
+  // automations (blueprints ride along: they exist to create automations)
+  ha_get_automation: { category: "automations", level: "read" },
+  ha_get_automation_trace: { category: "automations", level: "read" },
+  ha_list_automations: { category: "automations", level: "read" },
+  ha_list_blueprints: { category: "automations", level: "read" },
+  ha_set_automation: { category: "automations", level: "write" },
+  ha_trigger_automation: { category: "automations", level: "write" },
+  ha_create_automation: { category: "automations", level: "manage" },
+  ha_create_from_blueprint: { category: "automations", level: "manage" },
+  ha_delete_automation: { category: "automations", level: "manage" },
+  ha_update_automation: { category: "automations", level: "manage" },
+  // scripts
+  ha_list_scripts: { category: "scripts", level: "read" },
+  ha_run_script: { category: "scripts", level: "write" },
+  ha_create_script: { category: "scripts", level: "manage" },
+  ha_delete_script: { category: "scripts", level: "manage" },
+  ha_update_script: { category: "scripts", level: "manage" },
+  // services
+  ha_list_services: { category: "services", level: "read" },
+  ha_call_service: { category: "services", level: "write" },
+  // helpers (no read tools: a read grant exposes nothing here)
+  ha_create_helper: { category: "helpers", level: "write" },
+  ha_delete_helper: { category: "helpers", level: "write" },
+  // camera
+  ha_get_camera_snapshot: { category: "camera", level: "read" },
+  // calendar
+  ha_get_calendar: { category: "calendar", level: "read" },
+  ha_get_todo_list: { category: "calendar", level: "read" },
+  ha_manage_todo: { category: "calendar", level: "write" },
+  // notify (write-only category)
+  ha_announce: { category: "notify", level: "write" },
+  ha_send_notification: { category: "notify", level: "write" },
+  // scenes (write-only category)
+  ha_snapshot_scene: { category: "scenes", level: "write" },
+  // dashboards
+  ha_list_dashboards: { category: "dashboards", level: "read" },
+  ha_add_dashboard_card: { category: "dashboards", level: "manage" },
+  // environment
+  ha_get_energy: { category: "environment", level: "read" },
+  ha_get_forecast: { category: "environment", level: "read" },
+  ha_get_presence: { category: "environment", level: "read" },
+};
+ 
+/** One level per category; "none" hides even the read tools. */
+export type Grants = Record<Category, Level>;
+ 
+export function atLeast(grant: Level, required: Level): boolean {
+  return LEVELS.indexOf(grant) >= LEVELS.indexOf(required);
+}
+ 
+/** Whether a tool exists for these grants. Unknown tools never do. */
+export function allows(grants: Grants, tool: string): boolean {
+  const entry = TOOL_REGISTRY[tool];
+  if (!entry) return false;
+  return atLeast(grants[entry.category], entry.level);
+}
+ 
+/**
+ * Compatibility mapping: the global option gates expressed as Grants. One
+ * assumed behaviour change against the pre-registry gating, documented in
+ * #165: with allow_config_write on and allow_write off, the manage grant on
+ * automations/scripts now includes their runtime write tools (run, trigger,
+ * set). The old separation was illusory (manage can author an automation
+ * that does anything), so the hierarchy stops pretending otherwise.
+ */
+export function grantsFromConfig(cfg: AddonConfig, canWrite?: boolean | undefined): Grants {
+  const write = cfg.allowWrite && canWrite !== false;
+  const manage = cfg.allowConfigWrite && canWrite !== false;
+  const configurable: Level = manage ? "manage" : write ? "write" : "read";
+  const actionable: Level = write ? "write" : "read";
+  return {
+    entities: "read",
+    history: "read",
+    diagnostics: "read",
+    environment: "read",
+    camera: cfg.allowCamera ? "read" : "none",
+    automations: configurable,
+    scripts: configurable,
+    dashboards: manage ? "manage" : "read",
+    services: actionable,
+    helpers: actionable,
+    calendar: actionable,
+    notify: actionable,
+    scenes: actionable,
+  };
+}
+ 
+/**
+ * The epic #164 ceiling: a stored token can never exceed the option gates.
+ * Applied per request, so closing a gate instantly degrades every token.
+ */
+export function capGrants(requested: Partial<Grants>, cfg: AddonConfig): Grants {
+  const ceiling = grantsFromConfig(cfg, true);
+  const out = {} as Grants;
+  for (const c of CATEGORIES) {
+    const asked = LEVELS.indexOf(requested[c] ?? "none");
+    out[c] = LEVELS[Math.min(asked < 0 ? 0 : asked, LEVELS.indexOf(ceiling[c]))] as Level;
+  }
+  return out;
+}
+ 
+/** Everything, before capping: what a legacy write-scope token meant. */
+export function fullGrants(): Grants {
+  const out = {} as Grants;
+  for (const c of CATEGORIES) {
+    const levels = new Set(Object.values(TOOL_REGISTRY).filter((e) => e.category === c).map((e) => e.level));
+    out[c] = levels.has("manage") ? "manage" : levels.has("write") ? "write" : "read";
+  }
+  return out;
+}
+ 
+/** Read everywhere, before capping: what a legacy read-scope token meant. */
+export function readOnlyGrants(): Grants {
+  const out = {} as Grants;
+  for (const c of CATEGORIES) out[c] = "read";
+  return out;
+}
+ 
+/** Tool counts for these grants, the ingress breakdown derives from this. */
+export function toolCounts(grants: Grants): { read: number; write: number; total: number } {
+  let read = 0;
+  let write = 0;
+  for (const entry of Object.values(TOOL_REGISTRY)) {
+    if (!atLeast(grants[entry.category], entry.level)) continue;
+    if (entry.level === "read") read += 1;
+    else write += 1;
+  }
+  return { read, write, total: read + write };
+}
+ 
+/**
+ * The only surface the tool modules need: gating happens HERE, centrally,
+ * not in per-module early returns. buildServer hands the modules a gated
+ * registrar; the tests hand them a plain fake with the same shape.
+ */
+export interface ToolRegistrar {
+  registerTool: McpServer["registerTool"];
+}
+ 
+export function gatedRegistrar(server: McpServer, grants: Grants): ToolRegistrar {
+  return {
+    registerTool: ((name: string, meta: unknown, handler: unknown) => {
+      if (!allows(grants, name)) return undefined;
+      return (server.registerTool as (n: string, m: unknown, h: unknown) => unknown)(name, meta, handler);
+    }) as McpServer["registerTool"],
+  };
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/resources.ts.html b/mcp_ha/coverage/src/mcp/resources.ts.html new file mode 100644 index 0000000..2f72933 --- /dev/null +++ b/mcp_ha/coverage/src/mcp/resources.ts.html @@ -0,0 +1,838 @@ + + + + + + Code coverage report for src/mcp/resources.ts + + + + + + + + + +
+
+

All files / src/mcp resources.ts

+
+ +
+ 68.37% + Statements + 80/117 +
+ + +
+ 44.15% + Branches + 34/77 +
+ + +
+ 67.64% + Functions + 23/34 +
+ + +
+ 70.4% + Lines + 69/98 +
+ + +
+

+ 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  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +21x +  +  +  +21x +  +  +  +  +  +  +  +1x +1x +3x +2x +2x +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +1x +1x +1x +  +  +  +  +  +  +  +  +  +21x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +1x +1x +1x +2x +  +1x +2x +1x +1x +2x +  +1x +1x +  +  +  +  +  +  +  +  +  +  +21x +  +21x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +21x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +21x +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +7x +7x +7x +  +  +  +  +7x +7x +7x +7x +1x +1x +1x +1x +2x +  +  +  +7x +7x +4x +4x +4x +4x +  +  +4x +1x +  +3x +2x +2x +1x +  +2x +  +  +2x +2x +2x +  +7x +  +  +  +  +7x +  +  +  +  +  +  +  +7x +  +  +  +  +  +  +  +  +  +  +  +7x +7x +1x +1x +  +  + 
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
+import { SubscribeRequestSchema, UnsubscribeRequestSchema } from "@modelcontextprotocol/sdk/types.js";
+import type { ToolContext } from "../context.js";
+import { entityReadVisible } from "../safety.js";
+import { log } from "../logger.js";
+ 
+/** Per-URI notification floor: a chatty sensor cannot flood the stream. */
+const NOTIFY_MIN_INTERVAL_MS = 1_000;
+ 
+/**
+ * Static-ish catalogs exposed as MCP resources (v0.3, #79): clients that
+ * support resources can pin them as context without spending a tool call.
+ * The heavier, filterable listings stay tools. In session mode (#90) the
+ * ha://entity/{entity_id} template is subscribable: the client gets a
+ * notifications/resources/updated when the watched entity changes.
+ */
+export function registerResources(server: McpServer, ctx: ToolContext): void {
+  const json = (uri: string, data: unknown) => ({
+    contents: [{ uri, mimeType: "application/json", text: JSON.stringify(data) }],
+  });
+ 
+  server.registerResource(
+    "entity",
+    new ResourceTemplate("ha://entity/{entity_id}", {
+      list: undefined,
+      // Completion (#115): clients discover real entity ids while typing,
+      // same visibility rules as every read.
+      complete: {
+        entity_id: async (value: string) => {
+          const q = String(value ?? "").toLowerCase();
+          return (await ctx.catalog.index())
+            .filter((e) => entityReadVisible(ctx.cfg, e.entity_id))
+            .map((e) => e.entity_id)
+            .filter((id) => id.toLowerCase().includes(q))
+            .slice(0, 50);
+        },
+      },
+    }),
+    {
+      title: "Entity state",
+      description:
+        "Compact live state of one entity. In session mode, subscribe to it to be notified when it changes.",
+      mimeType: "application/json",
+    },
+    async (uri, variables) => {
+      const entityId = String(variables.entity_id ?? "");
+      Iif (!entityReadVisible(ctx.cfg, entityId)) {
+        throw new Error(`entity ${entityId} is not accessible (filter_reads)`);
+      }
+      const e = (await ctx.catalog.index()).find((x) => x.entity_id === entityId);
+      Iif (!e) throw new Error(`unknown entity: ${entityId}`);
+      return json(uri.href, {
+        entity_id: e.entity_id,
+        name: e.name,
+        state: e.state,
+        area: e.area,
+        last_changed: e.last_changed,
+      });
+    }
+  );
+ 
+  server.registerResource(
+    "area",
+    new ResourceTemplate("ha://area/{area_id}", {
+      list: undefined,
+      complete: {
+        area_id: async (value: string) => {
+          const q = String(value ?? "").toLowerCase();
+          return (await ctx.catalog.registries()).areas
+            .map((a) => a.area_id)
+            .filter((id) => id.toLowerCase().includes(q))
+            .slice(0, 50);
+        },
+      },
+    }),
+    {
+      title: "Area state",
+      description:
+        "Compact live state of one area: entity counts per domain and the notable active entities. " +
+        "In session mode, subscribe to be notified when anything in the room changes (#143).",
+      mimeType: "application/json",
+    },
+    async (uri, variables) => {
+      const areaId = String(variables.area_id ?? "");
+      const regs = await ctx.catalog.registries();
+      const area = regs.areas.find((a) => a.area_id === areaId);
+      Iif (!area) throw new Error(`unknown area: ${areaId}. List areas with ha_list_areas.`);
+      const floor = area.floor_id ? (regs.floors.find((f) => f.floor_id === area.floor_id)?.name ?? null) : null;
+      const entities = (await ctx.catalog.index()).filter(
+        (e) => e.area === area.name && entityReadVisible(ctx.cfg, e.entity_id)
+      );
+      const byDomain: Record<string, number> = {};
+      for (const e of entities) byDomain[e.domain] = (byDomain[e.domain] ?? 0) + 1;
+      const ACTIVE = new Set(["on", "open", "playing", "heat", "cool", "heat_cool", "unlocked"]);
+      const notable = entities
+        .filter((e) => ACTIVE.has(e.state))
+        .slice(0, 10)
+        .map((e) => ({ entity_id: e.entity_id, state: e.state }));
+      return json(uri.href, {
+        area_id: areaId,
+        name: area.name,
+        ...(floor ? { floor } : {}),
+        entity_count: entities.length,
+        by_domain: byDomain,
+        notable,
+      });
+    }
+  );
+ 
+  if (ctx.sessionMode) registerEntitySubscriptions(server, ctx);
+ 
+  server.registerResource(
+    "areas",
+    "ha://areas",
+    {
+      title: "Areas",
+      description: "All Home Assistant areas with their entity counts.",
+      mimeType: "application/json",
+    },
+    async (uri) => {
+      const [regs, index] = await Promise.all([ctx.catalog.registries(), ctx.catalog.index()]);
+      const counts = new Map<string, number>();
+      for (const e of index) if (e.area) counts.set(e.area, (counts.get(e.area) ?? 0) + 1);
+      return json(
+        uri.href,
+        regs.areas.map((a) => ({ area_id: a.area_id, name: a.name, entities: counts.get(a.name) ?? 0 }))
+      );
+    }
+  );
+ 
+  server.registerResource(
+    "services",
+    "ha://services",
+    {
+      title: "Service domains",
+      description: "Callable service domains with their service counts (details via the ha_list_services tool).",
+      mimeType: "application/json",
+    },
+    async (uri) => {
+      const services: Record<string, Record<string, unknown>> = await ctx.ws.send("get_services");
+      return json(
+        uri.href,
+        Object.entries(services).map(([domain, defs]) => ({ domain, services: Object.keys(defs).length }))
+      );
+    }
+  );
+ 
+  server.registerResource(
+    "config",
+    "ha://config",
+    {
+      title: "Home Assistant configuration",
+      description: "Compact Home Assistant instance configuration (version, name, timezone, units).",
+      mimeType: "application/json",
+    },
+    async (uri) => {
+      const c = await ctx.ws.send("get_config");
+      return json(uri.href, {
+        version: c.version,
+        location_name: c.location_name,
+        time_zone: c.time_zone,
+        unit_system: c.unit_system,
+        currency: c.currency,
+        country: c.country,
+        components: Array.isArray(c.components) ? c.components.length : null,
+        state: c.state,
+      });
+    }
+  );
+}
+ 
+/**
+ * Entity subscriptions (#90): "watch this sensor". Bounded by design
+ * (audit lesson): capped subscription set, one notification per second per
+ * URI at most (the notification carries no data, the client re-reads), and
+ * the state_changed listener is detached when the session server closes.
+ */
+function registerEntitySubscriptions(server: McpServer, ctx: ToolContext): void {
+  const MAX_SUBSCRIPTIONS = 50;
+  const subscribed = new Set<string>();
+  const lastNotified = new Map<string, number>();
+  // Area subscriptions (#143): the state_changed listener is SYNCHRONOUS,
+  // so entity-to-area resolution comes from a precomputed map, refreshed
+  // asynchronously on each area subscribe and lazily (60 s) on events. A
+  // just-moved entity may miss or over-fire one notification: accepted.
+  let entityToArea = new Map<string, string>();
+  let areaSubs = 0;
+  let lastMapBuild = 0;
+  const buildAreaMap = async (): Promise<void> => {
+    lastMapBuild = Date.now();
+    const [index, regs] = await Promise.all([ctx.catalog.index(), ctx.catalog.registries()]);
+    const nameToId = new Map(regs.areas.map((a) => [a.name, a.area_id]));
+    entityToArea = new Map(
+      index.filter((e) => e.area !== null).map((e) => [e.entity_id, nameToId.get(e.area as string) ?? ""])
+    );
+  };
+ 
+  server.server.registerCapabilities({ resources: { subscribe: true } });
+  server.server.setRequestHandler(SubscribeRequestSchema, async (req) => {
+    const uri = req.params.uri;
+    const entityId = uri.match(/^ha:\/\/entity\/(.+)$/)?.[1];
+    const areaId = uri.match(/^ha:\/\/area\/(.+)$/)?.[1];
+    Iif (!entityId && !areaId) {
+      throw new Error(`only ha://entity/{entity_id} and ha://area/{area_id} resources are subscribable, got: ${uri}`);
+    }
+    if (entityId && !entityReadVisible(ctx.cfg, entityId)) {
+      throw new Error(`entity ${entityId} is not accessible (filter_reads)`);
+    }
+    if (areaId) {
+      const regs = await ctx.catalog.registries();
+      if (!regs.areas.some((a) => a.area_id === areaId)) throw new Error(`unknown area: ${areaId}`);
+      await buildAreaMap();
+    }
+    Iif (subscribed.size >= MAX_SUBSCRIPTIONS && !subscribed.has(uri)) {
+      throw new Error(`subscription cap reached (${MAX_SUBSCRIPTIONS}); unsubscribe something first`);
+    }
+    if (areaId && !subscribed.has(uri)) areaSubs++;
+    subscribed.add(uri);
+    return {};
+  });
+  server.server.setRequestHandler(UnsubscribeRequestSchema, async (req) => {
+    if (subscribed.delete(req.params.uri) && req.params.uri.startsWith("ha://area/")) areaSubs--;
+    return {};
+  });
+ 
+  const notify = (uri: string): void => {
+    const now = Date.now();
+    if (now - (lastNotified.get(uri) ?? 0) < NOTIFY_MIN_INTERVAL_MS) return;
+    lastNotified.set(uri, now);
+    server.server.sendResourceUpdated({ uri }).catch((e) => {
+      log.debug(`resources/updated notification failed: ${e instanceof Error ? e.message : String(e)}`);
+    });
+  };
+  const detach = ctx.catalog.onEntityChange((entityId) => {
+    const entityUri = `ha://entity/${entityId}`;
+    if (subscribed.has(entityUri)) notify(entityUri);
+    if (areaSubs > 0) {
+      if (Date.now() - lastMapBuild > 60_000) void buildAreaMap();
+      const areaId = entityToArea.get(entityId);
+      // A hidden entity must not signal its activity through its room.
+      if (areaId && subscribed.has(`ha://area/${areaId}`) && entityReadVisible(ctx.cfg, entityId)) {
+        notify(`ha://area/${areaId}`);
+      }
+    }
+  });
+  const prevOnClose = server.server.onclose;
+  server.server.onclose = () => {
+    detach();
+    prevOnClose?.();
+  };
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/server.ts.html b/mcp_ha/coverage/src/mcp/server.ts.html index 10ccd6b..28a4eb1 100644 --- a/mcp_ha/coverage/src/mcp/server.ts.html +++ b/mcp_ha/coverage/src/mcp/server.ts.html @@ -23,30 +23,30 @@

All files / src/mcp
- 100% + 78.94% Statements - 8/8 + 30/38
- 100% + 50% Branches - 0/0 + 4/8
- 100% + 50% Functions - 1/1 + 1/2
- 100% + 83.33% Lines - 8/8 + 30/36
@@ -61,7 +61,7 @@

All files / src/mcp

-
+
1 2 @@ -96,7 +96,75 @@

All files / src/mcp 31 32 33 -34

  +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        @@ -111,7 +179,6 @@

All files / src/mcp       -2x       @@ -121,27 +188,115 @@

All files / src/mcp       -2x -2x -2x -2x -2x -2x -2x +  +  +  +  +  +  +  +  +  +  +21x +  +  +  +  +  +  +  +  +  +  +  +  +21x +7x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x +21x    

import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
 import { VERSION } from "../config.js";
 import type { ToolContext } from "../context.js";
 import { registerEntityTools } from "./tools/entities.js";
 import { registerServiceTools } from "./tools/services.js";
+import { registerWriteTools } from "./tools/writes.js";
 import { registerAutomationTools } from "./tools/automations.js";
 import { registerHistoryTools } from "./tools/history.js";
 import { registerAddonTools } from "./tools/addons.js";
 import { registerSystemTools } from "./tools/system.js";
+import { registerCameraTools } from "./tools/camera.js";
+import { registerCalendarTools } from "./tools/calendar.js";
+import { registerWeatherTools } from "./tools/weather.js";
+import { registerHelperTools } from "./tools/helpers.js";
+import { registerConfigWriteTools } from "./tools/configwrite.js";
+import { registerHealthTools } from "./tools/health.js";
+import { registerSelfTestTools } from "./tools/selftest.js";
+import { registerNotifyTools } from "./tools/notify.js";
+import { registerSceneTools } from "./tools/scenes.js";
+import { registerAnnounceTools } from "./tools/announce.js";
+import { registerExplainTools } from "./tools/explain.js";
+import { registerBlueprintTools } from "./tools/blueprints.js";
+import { registerDashboardTools } from "./tools/dashboards.js";
+import { registerEnergyTools } from "./tools/energy.js";
+import { registerPresenceTools } from "./tools/presence.js";
+import { registerResources } from "./resources.js";
+import { registerPrompts } from "./prompts.js";
+import { gatedRegistrar, grantsFromConfig } from "./registry.js";
  
 /**
- * Builds a complete MCP server. Called for every request (stateless mode),
- * tool registration is in-memory and very cheap.
+ * Builds a complete MCP server. Called for every request (stateless mode) or
+ * once per session (#90); tool registration is in-memory and very cheap.
  */
 export function buildServer(ctx: ToolContext): McpServer {
   const server = new McpServer(
@@ -154,12 +309,61 @@ 

All files / src/mcp "instead of requesting large dumps. For long history windows prefer ha_get_statistics.", } ); - registerEntityTools(server, ctx); - registerServiceTools(server, ctx); - registerAutomationTools(server, ctx); - registerHistoryTools(server, ctx); - registerAddonTools(server, ctx); - registerSystemTools(server, ctx); +  + // In-protocol confirmation (#90): only a session has the SSE stream a + // server-to-client request needs. null = fall back to confirm_token. + if (ctx.sessionMode) { + ctx = { + ...ctx, + elicit: async (message: string): Promise<boolean | null> => { + if (!server.server.getClientCapabilities()?.elicitation) return null; + try { + const res = await server.server.elicitInput({ + message, + requestedSchema: { + type: "object", + properties: { confirm: { type: "boolean", title: "Confirm this action" } }, + required: ["confirm"], + }, + }); + if (res.action === "accept") return (res.content as { confirm?: unknown } | undefined)?.confirm === true; + return false; // decline and cancel are explicit refusals + } catch { + return null; // protocol hiccup: the token flow remains available + } + }, + }; + } +  + // Central gating (#165): the modules register everything they have; the + // registrar filters against the grants. Until per-token grants land + // (#166/#167), grants come from the option gates and the token scope. + const grants = ctx.grants ?? grantsFromConfig(ctx.cfg, ctx.canWrite); + const gated = gatedRegistrar(server, grants); + registerEntityTools(gated, ctx); + registerServiceTools(gated, ctx); + registerWriteTools(gated, ctx); + registerAutomationTools(gated, ctx); + registerHistoryTools(gated, ctx); + registerAddonTools(gated, ctx); + registerSystemTools(gated, ctx); + registerCameraTools(gated, ctx); + registerCalendarTools(gated, ctx); + registerWeatherTools(gated, ctx); + registerHelperTools(gated, ctx); + registerConfigWriteTools(gated, ctx); + registerHealthTools(gated, ctx); + registerSelfTestTools(gated, ctx); + registerNotifyTools(gated, ctx); + registerSceneTools(gated, ctx); + registerAnnounceTools(gated, ctx); + registerExplainTools(gated, ctx); + registerBlueprintTools(gated, ctx); + registerDashboardTools(gated, ctx); + registerEnergyTools(gated, ctx); + registerPresenceTools(gated, ctx); + registerResources(server, ctx); + registerPrompts(server, ctx); return server; }  

@@ -169,7 +373,7 @@

All files / src/mcp + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/automations.ts.html b/mcp_ha/coverage/src/mcp/tools/automations.ts.html index 7b2b883..a9f5803 100644 --- a/mcp_ha/coverage/src/mcp/tools/automations.ts.html +++ b/mcp_ha/coverage/src/mcp/tools/automations.ts.html @@ -23,30 +23,30 @@

All files / src/mcp/t
- 93.33% + 96.24% Statements - 28/30 + 128/133
- 91.17% + 82.38% Branches - 31/34 + 131/159
100% Functions - 9/9 + 20/20
- 96.42% + 99.12% Lines - 27/28 + 113/114
@@ -170,7 +170,229 @@

All files / src/mcp/t 105 106 107 -108  +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        @@ -178,13 +400,13 @@

All files / src/mcp/t       -8x             +2x       @@ -192,53 +414,164 @@

All files / src/mcp/t       -1x -3x -2x     +6x +6x +16x +14x +6x +  +  +8x +14x +14x +6x +6x +  +  +8x +  +  +4x       +  +4x +4x +4x +4x +7x +4x +  +4x +4x +4x 1x +1x +1x +1x +  +4x +4x +4x +4x +4x +4x +4x +  +  +  +40x +  +  +  +  +  +  +  +        -8x           +6x +39x   +36x             +  +  +  +  +6x 4x -  +  +  +  +  +  +20x +6x +6x +  +16x +16x +2x +2x +  +14x +14x +  +  +  +1x +1x +1x +  +  +  +  +    4x -5x 4x +1x +2x +1x +1x +1x +1x   4x       +40x         -4x -4x +  +  +  +  +  +  +  +  +6x +  +  +6x +7x +6x +  +6x +  +  +  +  +  +  +  +6x +6x 1x   +5x +5x 3x -3x -1x       @@ -252,7 +585,118 @@

All files / src/mcp/t       +  +  +  +  +  +  +  +  +40x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +8x +1x +  +7x 8x +1x +  +  +  +  +6x +6x +5x +5x +5x +1x +  +4x +  +1x +  +  +5x +2x +2x +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +3x +3x +3x +  +1x +  +  +  +  +  +3x +3x +7x +7x +7x +7x +  +  +  +  +  +  +  +  +4x +3x +  +  +  +  +  +  +  +  +  +  +  +40x       @@ -278,36 +722,147 @@

All files / src/mcp/t      
import { z } from "zod";
-import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
+import type { ToolRegistrar } from "../registry.js";
 import type { ToolContext } from "../../context.js";
-import { listEnvelope, safe } from "../helpers.js";
+import { listEnvelope, safe, trunc } from "../helpers.js";
 import { entityReadVisible } from "../../safety.js";
 import { log } from "../../logger.js";
  
-export function registerAutomationTools(server: McpServer, ctx: ToolContext): void {
+/**
+ * Trace step paths (trigger/0, action/2/choose/0/sequence/1...) point into
+ * the item's stored config (#190). Walking them yields the block each step
+ * ran, best effort: an unknown segment simply ends the walk. Alpha segments
+ * try the modern/legacy twin keys (#146): traces may say "action" while the
+ * stored config uses "actions", and vice versa.
+ */
+const TWIN_SEGMENTS: Record<string, string[]> = {
+  trigger: ["triggers", "trigger"],
+  triggers: ["triggers", "trigger"],
+  condition: ["conditions", "condition"],
+  conditions: ["conditions", "condition"],
+  action: ["actions", "action"],
+  actions: ["actions", "action"],
+};
+ 
+function blockAtPath(config: Record<string, unknown>, path: string): Record<string, unknown> | null {
+  let node: unknown = config;
+  for (const seg of path.split("/")) {
+    if (node === null || typeof node !== "object") return null;
+    if (/^\d+$/.test(seg)) {
+      node = Array.isArray(node) ? node[Number(seg)] : null;
+    } else {
+      let next: unknown;
+      for (const key of TWIN_SEGMENTS[seg] ?? [seg]) {
+        const candidate = (node as Record<string, unknown>)[key];
+        if (candidate !== undefined) {
+          next = candidate;
+          break;
+        }
+      }
+      node = next ?? null;
+    }
+  }
+  return node !== null && typeof node === "object" && !Array.isArray(node) ? (node as Record<string, unknown>) : null;
+}
+ 
+/** What the block aims at: service name plus entity/device/area ids. */
+function targetsOf(block: Record<string, unknown>): Record<string, unknown> | null {
+  const entity: string[] = [];
+  const device: string[] = [];
+  const area: string[] = [];
+  const collect = (v: unknown, into: string[]): void => {
+    if (typeof v === "string") into.push(v);
+    else if (Array.isArray(v)) for (const x of v) Eif (typeof x === "string") into.push(x);
+  };
+  collect(block.entity_id, entity);
+  const target = block.target;
+  if (target !== null && typeof target === "object") {
+    const t = target as Record<string, unknown>;
+    collect(t.entity_id, entity);
+    collect(t.device_id, device);
+    collect(t.area_id, area);
+  }
+  const action = typeof block.action === "string" ? block.action : typeof block.service === "string" ? block.service : undefined;
+  const out: Record<string, unknown> = {};
+  if (action) out.action = action;
+  if (entity.length > 0) out.entity_ids = [...new Set(entity)];
+  Iif (device.length > 0) out.device_ids = [...new Set(device)];
+  if (area.length > 0) out.area_ids = [...new Set(area)];
+  return Object.keys(out).length > 0 ? out : null;
+}
+ 
+export function registerAutomationTools(server: ToolRegistrar, ctx: ToolContext): void {
   server.registerTool(
     "ha_list_automations",
     {
       title: "List automations",
       description:
-        "All automations: entity_id, name, state (on = enabled), last trigger time. " +
-        "For the detailed configuration of one automation use ha_get_automation.",
+        "All automations: entity_id, name, state (on = enabled), last trigger time, and source " +
+        "(ui = editable via the config tools, yaml = defined in the user's files, read/trace only). " +
+        "include_config: true attaches each UI automation's full configuration (page size drops to " +
+        "5, max 10): the paginated way to export or diff a fleet. For one automation use ha_get_automation.",
       inputSchema: {
+        include_config: z.boolean().optional().describe("Attach each UI automation's config; yaml ones get config: null"),
         limit: z.number().int().min(1).max(200).optional(),
         offset: z.number().int().min(0).optional(),
       },
       annotations: { readOnlyHint: true },
     },
-    safe("ha_list_automations", async ({ limit, offset }) => {
-      const all = (await ctx.catalog.index())
-        .filter((e) => e.domain === "automation" && entityReadVisible(ctx.cfg, e.entity_id))
-        .map((e) => ({
-          entity_id: e.entity_id,
-          name: e.name,
-          enabled: e.state === "on",
-          last_triggered: (e.attributes.last_triggered as string | null) ?? null,
-        }));
-      return listEnvelope(all, limit ?? 100, offset ?? 0);
+    safe("ha_list_automations", async ({ include_config, limit, offset }) => {
+      const entities = (await ctx.catalog.index()).filter(
+        (e) => e.domain === "automation" && entityReadVisible(ctx.cfg, e.entity_id)
+      );
+      const all = entities.map((e) => ({
+        entity_id: e.entity_id,
+        name: e.name,
+        enabled: e.state === "on",
+        last_triggered: (e.attributes.last_triggered as string | null) ?? null,
+        // "ui" means editable through the config tools; "yaml" lives in the
+        // user's files and only ha_get_automation_trace works on it (#156).
+        source: typeof e.attributes.id === "string" && e.attributes.id ? "ui" : "yaml",
+      }));
+      // Bulk read (#160): the configs travel through the agent's context, so
+      // the page shrinks (default 5, max 10) and pagination is the guard.
+      if (!include_config) return listEnvelope(all, limit ?? 100, offset ?? 0);
+      const envelope = listEnvelope(
+        all,
+        Math.min(limit ?? 5, 10),
+        offset ?? 0,
+        "Page size is capped at 10 with include_config. A config too large for the page is omitted per item (config_omitted): fetch it individually with ha_get_automation."
+      );
+      const byId = new Map(entities.map((e) => [e.entity_id, e]));
+      const items = envelope.items as Array<Record<string, unknown>>;
+      await Promise.all(
+        items.map(async (item) => {
+          const cfgId = byId.get(item.entity_id as string)?.attributes.id;
+          if (typeof cfgId !== "string" || !cfgId) {
+            item.config = null; // YAML-defined: skip on purpose, source says why
+            return;
+          }
+          try {
+            item.config = await ctx.http.coreGet(`/config/automation/config/${encodeURIComponent(cfgId)}`);
+          } catch (e) {
+            // Same doctrine as ha_get_automation (audit B7): no raw HTTP
+            // errors in the page, and a fetch failure must not sink it.
+            log.warning(`Bulk config fetch failed for ${item.entity_id}: ${e instanceof Error ? e.message : e}`);
+            item.config = null;
+            item.config_note = "config not readable right now (Home Assistant API error)";
+          }
+        })
+      );
+      // The page must stay VALID JSON: never truncate a config mid-value.
+      // When the page would blow the response cap, drop whole configs,
+      // biggest first, until it fits.
+      const PAGE_BUDGET_BYTES = 14_000;
+      while (Buffer.byteLength(JSON.stringify(envelope), "utf8") > PAGE_BUDGET_BYTES) {
+        const biggest = items
+          .filter((i) => i.config)
+          .sort((a, b) => JSON.stringify(b.config).length - JSON.stringify(a.config).length)[0];
+        Iif (!biggest) break;
+        delete biggest.config;
+        biggest.config_omitted = "too large for the page, fetch it individually with ha_get_automation";
+      }
+      return envelope;
     })
   );
  
@@ -356,6 +911,117 @@ 

All files / src/mcp/t log.warning(`Could not fetch the automation config for ${entity_id}: ${msg}`); return { ...base, note: "Configuration not readable right now (Home Assistant API error); the state above is still accurate." }; } + }, { + // One config is not a fleet dump (#159): the raised cap lets every + // reasonable automation round-trip into ha_update_automation intact. + // Per-value truncation is deliberately refused: a truncated block fed + // back to an update would write a corrupted config. + maxBytes: 64_000, + truncationNote: + "This single configuration exceeds even the raised cap: it carries an unusually large inline payload (such as base64 media in an action). There is nothing to filter here; edit that automation in the Home Assistant UI instead, the config tools cannot round-trip it safely.", + }) + ); +  + server.registerTool( + "ha_get_automation_trace", + { + title: "Automation execution trace", + description: + "Step-by-step record of recent automation or script runs: which trigger fired, how each " + + "condition evaluated, which actions ran, and any error. Without run_id: the list of recent " + + "runs. With run_id: the detailed step path of that run. The first reflex to answer " + + "'why did this fire (or not)?'.", + inputSchema: { + entity_id: z.string().describe("automation.* or script.* entity"), + run_id: z.string().optional().describe("A run from the list, for the detailed steps"), + }, + annotations: { readOnlyHint: true }, + }, + safe("ha_get_automation_trace", async ({ entity_id, run_id }) => { + if (!entityReadVisible(ctx.cfg, entity_id)) { + throw new Error(`entity ${entity_id} is not accessible (filter_reads)`); + } + const domain = entity_id.split(".")[0] ?? ""; + if (domain !== "automation" && domain !== "script") { + throw new Error(`expected an automation.* or script.* entity_id, got: ${entity_id}`); + } + // trace/* wants the config item id, not the entity_id: for automations + // it is the `id` attribute, for scripts the object id after the dot. + let itemId: string; + if (domain === "automation") { + const e = (await ctx.catalog.index()).find((x) => x.entity_id === entity_id); + Iif (!e) throw new Error(`unknown automation: ${entity_id}`); + const cfgId = e.attributes.id; + if (typeof cfgId !== "string" || !cfgId) { + throw new Error("this automation has no configuration id (YAML-defined without id:): traces are not addressable"); + } + itemId = cfgId; + } else { + itemId = entity_id.slice("script.".length); + } +  + if (!run_id) { + const raw: any[] = (await ctx.ws.send("trace/list", { domain, item_id: itemId })) ?? []; + const runs = raw.map((r) => ({ + run_id: String(r.run_id ?? ""), + start: r.timestamp?.start ?? null, + finish: r.timestamp?.finish ?? null, + state: r.state ?? null, + ...(r.script_execution ? { result: r.script_execution } : {}), + ...(r.trigger ? { trigger: trunc(String(r.trigger), 200) } : {}), + ...(r.last_step ? { last_step: r.last_step } : {}), + ...(r.error ? { error: trunc(String(r.error), 300) } : {}), + })); + return { + entity_id, + runs, + total: runs.length, + note: + runs.length > 0 + ? "Home Assistant keeps only the last few runs in memory. Pass run_id for the step-by-step detail." + : "No stored run: it did not fire since the last Home Assistant restart.", + }; + } +  + const detail: any = await ctx.ws.send("trace/get", { domain, item_id: itemId, run_id }); + // Per-step targets (#190): the paths point into the stored config; + // joining them says what each step actually aimed at, the way the + // 2026.9 trace UI does. Best effort: YAML-defined items have no + // readable config, their steps simply carry no targets. + let config: Record<string, unknown> | null = null; + try { + config = (await ctx.http.coreGet(`/config/${domain}/config/${encodeURIComponent(itemId)}`)) as Record<string, unknown>; + } catch { + config = null; + } + // detail.trace maps step paths (trigger/0, condition/0, action/1...) to + // arrays of executions. Flatten, order by time, and DROP the variables: + // they embed other entities' states (filter_reads bypass) and weigh a + // lot; the path, verdicts and errors carry the diagnosis. + const steps: Array<Record<string, unknown>> = []; + for (const [path, entries] of Object.entries((detail?.trace ?? {}) as Record<string, any[]>)) { + const block = config ? blockAtPath(config, path) : null; + const targets = block ? targetsOf(block) : null; + for (const s of entries ?? []) { + steps.push({ + path, + t: s?.timestamp ?? null, + ...(s?.result !== undefined ? { result: s.result } : {}), + ...(s?.error ? { error: trunc(String(s.error), 300) } : {}), + ...(targets ? { targets } : {}), + }); + } + } + steps.sort((a, b) => String(a.t ?? "").localeCompare(String(b.t ?? ""))); + return { + entity_id, + run_id, + state: detail?.state ?? null, + ...(detail?.script_execution ? { result: detail.script_execution } : {}), + ...(detail?.error ? { error: trunc(String(detail.error), 300) } : {}), + steps, + note: "Variables are omitted on purpose (size and privacy); condition results carry the verdicts.", + }; }) );   @@ -391,7 +1057,7 @@

All files / src/mcp/t + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/calendar.ts.html b/mcp_ha/coverage/src/mcp/tools/calendar.ts.html new file mode 100644 index 0000000..8189432 --- /dev/null +++ b/mcp_ha/coverage/src/mcp/tools/calendar.ts.html @@ -0,0 +1,493 @@ + + + + + + Code coverage report for src/mcp/tools/calendar.ts + + + + + + + + + +
+
+

All files / src/mcp/tools calendar.ts

+
+ +
+ 91.66% + Statements + 33/36 +
+ + +
+ 64.28% + Branches + 27/42 +
+ + +
+ 100% + Functions + 10/10 +
+ + +
+ 96.77% + Lines + 30/31 +
+ + +
+

+ 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  +  +  +  +  +  +  +  +  +  +  +  +  +29x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +1x +2x +1x +1x +  +2x +2x +2x +  +  +1x +  +  +  +  +  +  +3x +  +  +  +29x +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +1x +1x +1x +  +1x +  +1x +  +  +  +  +  +  +1x +2x +  +1x +  +  +  +  +  +  +  +29x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +6x +5x +4x +  +  +  +  +  +  +4x +4x +  +  +  +  +  +  +  +  +4x +4x +  +  +  +  +  + 
import { z } from "zod";
+import type { ToolRegistrar } from "../registry.js";
+import type { ToolContext } from "../../context.js";
+import { listEnvelope, safe, timeWindow, trunc } from "../helpers.js";
+import { entityReadVisible } from "../../safety.js";
+import { guardedServiceCall } from "../writeflow.js";
+ 
+/**
+ * Calendar and to-do read tools (#87). Both are read-only. The to-do tool
+ * uses todo.get_items with return_response, which only reads, so it is safe
+ * to expose without allow_write.
+ */
+export function registerCalendarTools(server: ToolRegistrar, ctx: ToolContext): void {
+  server.registerTool(
+    "ha_get_calendar",
+    {
+      title: "Calendar events",
+      description:
+        "Without entity_id: lists the calendar entities. With entity_id: the events in a time window " +
+        "(default 24 h, max 30 days). Answers questions like 'what is on today?'.",
+      inputSchema: {
+        entity_id: z.string().optional().describe("E.g. calendar.family; omit to list calendars"),
+        hours: z.number().min(1).max(720).optional().describe("Sliding window in hours, default 24"),
+        start: z.string().optional().describe("ISO 8601 start"),
+        end: z.string().optional().describe("ISO 8601 end"),
+      },
+      annotations: { readOnlyHint: true },
+    },
+    safe("ha_get_calendar", async ({ entity_id, hours, start, end }) => {
+      if (!entity_id) {
+        const calendars = (await ctx.catalog.index())
+          .filter((e) => e.domain === "calendar" && entityReadVisible(ctx.cfg, e.entity_id))
+          .map((e) => ({ entity_id: e.entity_id, name: e.name }));
+        return { items: calendars, total: calendars.length, note: "Pass entity_id to get the events of one calendar." };
+      }
+      Iif (!entityReadVisible(ctx.cfg, entity_id)) throw new Error(`calendar ${entity_id} is not accessible (filter_reads)`);
+      const w = timeWindow({ start, end, hours }, 24, 720);
+      const raw: any[] = await ctx.http.coreGet(
+        `/calendars/${encodeURIComponent(entity_id)}?start=${encodeURIComponent(w.start)}&end=${encodeURIComponent(w.end)}`
+      );
+      const events = (raw ?? []).map((ev) => ({
+        summary: trunc(ev.summary ?? "", 200),
+        start: ev.start?.dateTime ?? ev.start?.date ?? ev.start,
+        end: ev.end?.dateTime ?? ev.end?.date ?? ev.end,
+        ...(ev.location ? { location: trunc(ev.location, 200) } : {}),
+        ...(ev.description ? { description: trunc(ev.description, 300) } : {}),
+      }));
+      return listEnvelope(events, 100, 0, `${entity_id} from ${w.start} to ${w.end}`);
+    })
+  );
+ 
+  server.registerTool(
+    "ha_get_todo_list",
+    {
+      title: "To-do list items",
+      description:
+        "Without entity_id: lists the to-do list entities. With entity_id: the items on that list " +
+        "(shopping list, tasks...). Read only.",
+      inputSchema: {
+        entity_id: z.string().optional().describe("E.g. todo.shopping_list; omit to list the lists"),
+        status: z.enum(["needs_action", "completed"]).optional().describe("Filter by status"),
+      },
+      annotations: { readOnlyHint: true },
+    },
+    safe("ha_get_todo_list", async ({ entity_id, status }) => {
+      if (!entity_id) {
+        const lists = (await ctx.catalog.index())
+          .filter((e) => e.domain === "todo" && entityReadVisible(ctx.cfg, e.entity_id))
+          .map((e) => ({ entity_id: e.entity_id, name: e.name }));
+        return { items: lists, total: lists.length, note: "Pass entity_id to get the items of one list." };
+      }
+      Iif (!entityReadVisible(ctx.cfg, entity_id)) throw new Error(`to-do list ${entity_id} is not accessible (filter_reads)`);
+      // todo.get_items is a read-only service returning data: safe without allow_write.
+      const res = await ctx.ws.send("call_service", {
+        domain: "todo",
+        service: "get_items",
+        target: { entity_id },
+        ...(status ? { service_data: { status } } : {}),
+        return_response: true,
+      });
+      const items: any[] = res?.response?.[entity_id]?.items ?? [];
+      return {
+        entity_id,
+        items: items.map((i) => ({ summary: trunc(i.summary ?? "", 200), status: i.status, ...(i.due ? { due: i.due } : {}) })),
+        total: items.length,
+      };
+    })
+  );
+ 
+  // Write side of the lists (#141): "add milk to the shopping list". Gated
+  // by allow_write and the token scope, single guarded path (lesson B12).
+  server.registerTool(
+    "ha_manage_todo",
+    {
+      title: "Manage a to-do list",
+      description:
+        "Adds, completes, unchecks, removes or renames an item on a to-do list ('add milk to the " +
+        "shopping list'). Items are referenced by their text, as Home Assistant does. Find lists and " +
+        "their items with ha_get_todo_list.",
+      inputSchema: {
+        entity_id: z.string().describe("E.g. todo.shopping_list"),
+        action: z.enum(["add", "complete", "uncomplete", "remove", "rename"]),
+        item: z.string().min(1).describe("The item text"),
+        new_name: z.string().optional().describe("New text, rename only"),
+        dry_run: z.boolean().optional(),
+        confirm_token: z.string().optional(),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
+    },
+    safe("ha_manage_todo", async ({ entity_id, action, item, new_name, dry_run, confirm_token }) => {
+      if (!entity_id.startsWith("todo.")) throw new Error(`expected a todo.* entity_id, got: ${entity_id}`);
+      if (action === "rename" && !new_name) throw new Error("rename needs new_name");
+      const route: Record<string, { service: string; data: Record<string, unknown> }> = {
+        add: { service: "add_item", data: { item } },
+        complete: { service: "update_item", data: { item, status: "completed" } },
+        uncomplete: { service: "update_item", data: { item, status: "needs_action" } },
+        remove: { service: "remove_item", data: { item } },
+        rename: { service: "update_item", data: { item, rename: new_name } },
+      };
+      const r = route[action]!;
+      const result = await guardedServiceCall(ctx, {
+        tool: "ha_manage_todo",
+        domain: "todo",
+        service: r.service,
+        target: { entity_id },
+        data: r.data,
+        dry_run,
+        confirm_token,
+      });
+      Eif ((result as { success?: boolean }).success) {
+        return { ...result, note: "Check the list state with ha_get_todo_list." };
+      }
+      return result;
+    })
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/camera.ts.html b/mcp_ha/coverage/src/mcp/tools/camera.ts.html new file mode 100644 index 0000000..51daa4e --- /dev/null +++ b/mcp_ha/coverage/src/mcp/tools/camera.ts.html @@ -0,0 +1,247 @@ + + + + + + Code coverage report for src/mcp/tools/camera.ts + + + + + + + + + +
+
+

All files / src/mcp/tools camera.ts

+
+ +
+ 100% + Statements + 15/15 +
+ + +
+ 80% + Branches + 8/10 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 15/15 +
+ + +
+

+ 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  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +25x +  +  +  +  +  +  +  +  +  +  +  +  +3x +3x +3x +1x +  +2x +1x +1x +  +1x +  +  +  +1x +3x +  +2x +2x +2x +  +  +  +  + 
import { z } from "zod";
+import type { ToolRegistrar } from "../registry.js";
+import type { ToolContext } from "../../context.js";
+import { errorResult, type ToolResult } from "../helpers.js";
+import { entityReadVisible } from "../../safety.js";
+import { audit, log } from "../../logger.js";
+ 
+/** Base64 of a camera frame; larger than this is refused (no resize dep). */
+const MAX_IMAGE_BYTES = 4_000_000;
+ 
+/**
+ * Camera snapshot tool (#86). Gated by its own allow_camera option, not by
+ * allow_write: seeing your home is not acting on it, but it deserves its own
+ * switch. filter_reads and the entity denylist still apply, and every
+ * snapshot is audited (a picture leaving the house is worth a log line).
+ */
+export function registerCameraTools(server: ToolRegistrar, ctx: ToolContext): void {
+ 
+  server.registerTool(
+    "ha_get_camera_snapshot",
+    {
+      title: "Camera snapshot",
+      description:
+        "Returns the current still image of a camera entity so the assistant can describe what it sees. " +
+        "Find cameras with ha_list_entities domain: 'camera'. Requires the allow_camera option.",
+      inputSchema: {
+        entity_id: z.string().describe("E.g. camera.front_door"),
+      },
+      annotations: { readOnlyHint: true },
+    },
+    async ({ entity_id }): Promise<ToolResult> => {
+      log.debug(`Tool ha_get_camera_snapshot called for ${entity_id}`);
+      try {
+        if (!entity_id.startsWith("camera.")) {
+          throw new Error(`expected a camera.* entity_id, got: ${entity_id}`);
+        }
+        if (!entityReadVisible(ctx.cfg, entity_id)) {
+          audit({ client: ctx.client ?? "default", tool: "ha_get_camera_snapshot", entity_id, allowed: false, reason: "filter_reads" });
+          throw new Error(`camera ${entity_id} is not accessible (filter_reads)`);
+        }
+        const { buffer, contentType } = await ctx.http.coreGetBinary(
+          `/camera_proxy/${encodeURIComponent(entity_id)}`,
+          MAX_IMAGE_BYTES
+        );
+        audit({ client: ctx.client ?? "default", tool: "ha_get_camera_snapshot", entity_id, allowed: true, bytes: buffer.byteLength });
+        return { content: [{ type: "image", data: buffer.toString("base64"), mimeType: contentType }] };
+      } catch (e) {
+        const msg = e instanceof Error ? e.message : String(e);
+        log.warning(`Tool ha_get_camera_snapshot failed: ${msg}`);
+        return errorResult(msg);
+      }
+    }
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/configwrite.ts.html b/mcp_ha/coverage/src/mcp/tools/configwrite.ts.html new file mode 100644 index 0000000..ecde936 --- /dev/null +++ b/mcp_ha/coverage/src/mcp/tools/configwrite.ts.html @@ -0,0 +1,2608 @@ + + + + + + Code coverage report for src/mcp/tools/configwrite.ts + + + + + + + + + +
+
+

All files / src/mcp/tools configwrite.ts

+
+ +
+ 92.15% + Statements + 270/293 +
+ + +
+ 79.07% + Branches + 189/239 +
+ + +
+ 100% + Functions + 38/38 +
+ + +
+ 94.63% + Lines + 247/261 +
+ + +
+

+ 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 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735 +736 +737 +738 +739 +740 +741 +742 +743 +744 +745 +746 +747 +748 +749 +750 +751 +752 +753 +754 +755 +756 +757 +758 +759 +760 +761 +762 +763 +764 +765 +766 +767 +768 +769 +770 +771 +772 +773 +774 +775 +776 +777 +778 +779 +780 +781 +782 +783 +784 +785 +786 +787 +788 +789 +790 +791 +792 +793 +794 +795 +796 +797 +798 +799 +800 +801 +802 +803 +804 +805 +806 +807 +808 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +25x +25x +25x +25x +249x +25x +224x +224x +224x +2225x +  +  +25x +25x +25x +25x +279x +183x +183x +183x +96x +41x +41x +  +55x +55x +  +  +25x +25x +25x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +16x +  +  +  +  +  +  +  +  +  +  +64x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +16x +16x +2x +  +  +  +14x +11x +11x +11x +1x +  +  +  +  +  +  +  +  +  +17x +  +  +  +  +  +  +17x +34x +17x +1x +1x +  +  +  +  +  +16x +16x +16x +  +13x +1x +1x +  +  +12x +  +  +8x +  +  +7x +  +  +8x +  +  +  +7x +6x +6x +6x +  +  +  +  +  +  +  +  +  +1x +  +4x +4x +1x +1x +  +  +  +  +  +  +  +4x +4x +4x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +4x +4x +4x +4x +12x +8x +8x +4x +9x +3x +1x +  +  +  +  +36x +32x +  +32x +29x +29x +2x +  +27x +  +3x +  +30x +30x +30x +  +  +  +  +  +  +  +  +  +25x +244x +25x +1x +  +  +  +24x +  +  +23x +23x +92x +25x +1x +  +  +  +22x +1x +  +21x +  +  +  +  +23x +  +  +  +  +  +  +21x +  +  +  +  +63x +  +21x +4x +2x +  +19x +19x +19x +19x +  +  +  +19x +  +  +  +  +  +19x +1x +1x +  +  +18x +  +  +  +12x +12x +  +  +12x +  +  +  +12x +6x +6x +6x +  +  +  +  +  +  +  +  +  +  +6x +  +6x +6x +1x +1x +  +  +  +  +  +  +  +  +11x +11x +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +9x +1x +1x +  +8x +7x +7x +7x +  +  +  +  +  +7x +1x +1x +  +6x +4x +  +  +4x +1x +1x +  +3x +2x +2x +2x +  +  +  +  +  +  +  +  +  +1x +  +2x +2x +1x +1x +  +  +  +  +  +  +  +2x +2x +2x +  +  +  +  +  +  +64x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +8x +  +  +  +64x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +64x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +8x +  +  +  +8x +8x +8x +8x +1x +  +  +1x +  +  +  +7x +7x +  +8x +  +  +  +6x +  +  +8x +8x +1x +2x +  +  +  +6x +  +  +6x +6x +2x +2x +2x +  +  +  +2x +  +4x +  +6x +6x +  +  +6x +6x +  +  +  +  +6x +  +8x +  +  +  +6x +3x +  +  +3x +  +  +  +3x +3x +3x +3x +  +  +  +  +  +  +  +  +  +  +3x +3x +1x +1x +  +  +  +  +  +  +  +  +4x +2x +2x +2x +  +  +  +  +  +  +  +64x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +6x +  +  +6x +6x +6x +1x +  +5x +6x +15x +10x +10x +6x +1x +  +9x +4x +1x +  +  +3x +3x +3x +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +64x +64x +64x +  +64x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +23x +23x +  +  +  +  +  +  +  +  +  +  +  +64x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +  +  +  +  +  +  +  +  +  +  +  +64x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +  +  +  +  +  +  +  +  +  +9x +  +  +  +  +  +  +  +  +  +  +  +64x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +4x +4x +  +  +  +  +  +  +  +4x +  +  +  +  +  +  +  +  +  +  +  + 
import { z } from "zod";
+import { stringify } from "yaml";
+import { createHash } from "node:crypto";
+import type { ToolRegistrar } from "../registry.js";
+import type { ToolContext } from "../../context.js";
+import { safe } from "../helpers.js";
+import { CONFIRM_TTL_SECONDS, ConfirmationStore } from "../../confirm.js";
+import { audit } from "../../logger.js";
+import { entityWriteAllowedFor } from "../../safety.js";
+ 
+/**
+ * Minimal unified diff (LCS on lines, full context, no hunks): the configs
+ * at stake are a few dozen YAML lines, a whole-file diff stays readable and
+ * spares a dependency. Exported for its own tests.
+ */
+export function unifiedDiff(before: string, after: string): string {
+  const a = before.split("\n");
+  const b = after.split("\n");
+  const m = a.length;
+  const n = b.length;
+  const dp: number[][] = Array.from({ length: m + 1 }, () => new Array<number>(n + 1).fill(0));
+  for (let i = m - 1; i >= 0; i--) {
+    const row = dp[i]!;
+    const next = dp[i + 1]!;
+    for (let j = n - 1; j >= 0; j--) {
+      row[j] = a[i] === b[j] ? next[j + 1]! + 1 : Math.max(next[j]!, row[j + 1]!);
+    }
+  }
+  const out: string[] = [];
+  let i = 0;
+  let j = 0;
+  while (i < m && j < n) {
+    if (a[i] === b[j]) {
+      out.push(`  ${a[i]}`);
+      i++;
+      j++;
+    } else if (dp[i + 1]![j]! >= dp[i]![j + 1]!) {
+      out.push(`- ${a[i]}`);
+      i++;
+    } else {
+      out.push(`+ ${b[j]}`);
+      j++;
+    }
+  }
+  while (i < m) out.push(`- ${a[i++]}`);
+  while (j < n) out.push(`+ ${b[j++]}`);
+  return out.join("\n");
+}
+ 
+/**
+ * Config writes (#94, tier 3): the assistant gets the power to program
+ * behaviour into the house. Deliberately the most guarded path in the
+ * add-on:
+ *  - its own allow_config_write option (default false, independent from
+ *    allow_write) plus the token write scope;
+ *  - Home Assistant validates the blocks BEFORE anything is offered;
+ *  - two-step confirmation is MANDATORY (not tied to confirm_domains) and
+ *    the confirmation answer carries the complete YAML for human review;
+ *  - creation only: existing automations and scripts are never overwritten
+ *    (modification is a later, separate decision);
+ *  - every step lands in the audit trail with the token name.
+ */
+ 
+const freeObjects = z.array(z.record(z.string(), z.unknown()));
+ 
+/** entity object_id derivation, mirroring HA's slugify closely enough. */
+function slugify(alias: string): string {
+  return alias
+    .normalize("NFD")
+    .replace(/[̀-ͯ]/g, "")
+    .toLowerCase()
+    .replace(/[^a-z0-9]+/g, "_")
+    .replace(/^_+|_+$/g, "");
+}
+ 
+export function registerConfigWriteTools(server: ToolRegistrar, ctx: ToolContext): void {
+  // Gated by allow_config_write and by the token scope (#85). Independent
+  // from allow_write: service calls and config writes are separate grants.
+  const client = (): string => ctx.client ?? "default";
+ 
+  interface CreateRequest {
+    tool: string;
+    kind: "automation" | "script";
+    /** Complete config object, exactly what will be written. */
+    payload: Record<string, unknown>;
+    /** REST path (relative to /api) receiving the POST. */
+    path: string;
+    /** Resulting entity id, for the collision check and the answer. */
+    entityId: string;
+    /**
+     * Blueprint payloads have no triggers/actions blocks for validate_config;
+     * their inputs are checked against the blueprint metadata instead and HA
+     * validates at write time (#127).
+     */
+    skipWsValidation?: boolean | undefined;
+    dry_run?: boolean | undefined;
+    confirm_token?: string | undefined;
+  }
+ 
+  async function refuseCollisions(req: CreateRequest): Promise<void> {
+    const all = await ctx.catalog.index();
+    if (all.some((e) => e.entity_id === req.entityId)) {
+      throw new Error(
+        `${req.entityId} already exists. Creation only: modifying existing ${req.kind}s is deliberately unsupported.`
+      );
+    }
+    if (req.kind === "automation") {
+      const alias = String(req.payload.alias ?? "").toLowerCase();
+      const clash = all.find((e) => e.domain === "automation" && e.name.toLowerCase() === alias);
+      if (clash) {
+        throw new Error(
+          `An automation named "${req.payload.alias}" already exists (${clash.entity_id}). ` +
+            "Creation only: pick another alias instead of duplicating it."
+        );
+      }
+    }
+  }
+ 
+  async function validateBlocks(kind: "automation" | "script", payload: Record<string, unknown>): Promise<void> {
+    const blocks: Record<string, unknown> =
+      kind === "automation"
+        ? {
+            triggers: payload.triggers,
+            ...(payload.conditions ? { conditions: payload.conditions } : {}),
+            actions: payload.actions,
+          }
+        : { actions: payload.sequence };
+    const res: Record<string, { valid: boolean; error?: string }> = await ctx.ws.send("validate_config", blocks);
+    const bad = Object.entries(res ?? {}).filter(([, v]) => v && v.valid === false);
+    if (bad.length > 0) {
+      throw new Error(
+        "Home Assistant rejected the configuration: " + bad.map(([k, v]) => `${k}: ${v.error ?? "invalid"}`).join("; ")
+      );
+    }
+  }
+ 
+  async function guardedCreate(req: CreateRequest): Promise<unknown> {
+    const yaml = stringify(req.payload);
+    const hash = ConfirmationStore.fingerprint({ domain: "_config", service: req.tool, data: req.payload });
+    await refuseCollisions(req);
+ 
+    if (req.dry_run) {
+      audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: true, dry_run: true });
+      return { dry_run: true, would_create: req.entityId, yaml };
+    }
+ 
+    if (!req.confirm_token) {
+      // Validate before offering anything: an invalid config must never
+      // reach the confirmation stage.
+      if (!req.skipWsValidation) await validateBlocks(req.kind, req.payload);
+      // In a session with an elicitation-capable client (#90), the human
+      // reviews the YAML in-protocol; the token flow stays the fallback.
+      const answer = ctx.elicit
+        ? await ctx.elicit(`About to create ${req.entityId} with this configuration:\n\n${yaml}\nConfirm the creation?`)
+        : null;
+      Iif (answer === false) {
+        audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: false, reason: "declined by the user (elicitation)" });
+        throw new Error("creation declined by the user");
+      }
+      if (answer === null) {
+        const confirm_token = ctx.confirmations.issue(hash);
+        audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: false, reason: "confirmation_required" });
+        return {
+          confirmation_required: true,
+          confirm_token,
+          expires_in_seconds: CONFIRM_TTL_SECONDS,
+          would_create: req.entityId,
+          yaml,
+          note:
+            "Show this YAML to the user and get their explicit approval, then call again with the SAME arguments plus confirm_token.",
+        };
+      }
+      audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: true, confirmed_via: "elicitation" });
+    } else {
+      const verdict = ctx.confirmations.consume(req.confirm_token, hash);
+      if (verdict !== "ok") {
+        audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: false, reason: `confirm_token ${verdict}` });
+        throw new Error(
+          `confirm_token ${verdict}: ` +
+            (verdict === "mismatch"
+              ? "the arguments differ from the confirmed ones; restart the confirmation."
+              : "request a fresh confirmation and try again.")
+        );
+      }
+    }
+    await ctx.http.corePost(req.path, req.payload);
+    audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: true });
+    return {
+      created: req.entityId,
+      note: "It appears within a couple of seconds after the automatic reload; check it with ha_get_entity.",
+    };
+  }
+ 
+  /**
+   * Guarded update (#108): reads the current UI-managed config, replaces
+   * the provided blocks wholesale (fine-grained merges are undebuggable),
+   * validates, then demands confirmation on a before/after diff. The base
+   * config hash is part of the confirmation fingerprint: if the automation
+   * changes between the two passes (simultaneous UI edit), the token
+   * mismatches and the flow restarts. The success answer carries the full
+   * previous YAML as the rollback.
+   */
+  interface UpdateRequest {
+    tool: string;
+    kind: "automation" | "script";
+    entityId: string;
+    patch: Record<string, unknown>;
+    /** Replaces use_blueprint.input wholesale, blueprint targets only (#139). */
+    blueprintInputs?: Record<string, unknown> | undefined;
+    dry_run?: boolean | undefined;
+    confirm_token?: string | undefined;
+  }
+ 
+  /** Required/unknown input checks against the installed blueprint (#127/#139). */
+  async function checkBlueprintInputs(kind: "automation" | "script", path: unknown, inputs: Record<string, unknown>): Promise<void> {
+    const list: Record<string, any> = ((await ctx.ws.send("blueprint/list", { domain: kind })) as Record<string, any>) ?? {};
+    const bp = list[String(path)];
+    Iif (!bp) throw new Error(`blueprint ${String(path)} is not installed (anymore); its automations can only be edited in the UI`);
+    const declared: Record<string, any> = bp?.metadata?.input ?? {};
+    const missing = Object.entries(declared)
+      .filter(([, def]) => !("default" in ((def ?? {}) as object)))
+      .map(([name]) => name)
+      .filter((name) => !(name in inputs));
+    if (missing.length > 0) throw new Error(`missing required blueprint inputs: ${missing.join(", ")} (inputs replaces the whole set)`);
+    const unknown = Object.keys(inputs).filter((k) => !(k in declared));
+    if (unknown.length > 0) {
+      throw new Error(`unknown blueprint inputs: ${unknown.join(", ")} (this blueprint declares: ${Object.keys(declared).join(", ")})`);
+    }
+  }
+ 
+  async function currentConfig(kind: "automation" | "script", entityId: string): Promise<{ config: Record<string, unknown>; path: string }> {
+    const e = (await ctx.catalog.index()).find((x) => x.entity_id === entityId);
+    Iif (!e) throw new Error(`unknown ${kind}: ${entityId}. Use ha_search_entities to find the right id.`);
+    let path: string;
+    if (kind === "automation") {
+      const cfgId = e.attributes.id;
+      if (typeof cfgId !== "string" || !cfgId) {
+        throw new Error("this automation has no configuration id (YAML-defined): changes are only possible for UI-managed ones");
+      }
+      path = `/config/automation/config/${encodeURIComponent(cfgId)}`;
+    } else {
+      path = `/config/script/config/${encodeURIComponent(entityId.slice("script.".length))}`;
+    }
+    try {
+      const config = await ctx.http.coreGet(path);
+      return { config, path };
+    } catch (err) {
+      if (String(err instanceof Error ? err.message : err).includes("HTTP 404")) {
+        throw new Error(`no stored configuration for ${entityId} (YAML-defined): changes are only possible for UI-managed ones`);
+      }
+      throw err;
+    }
+  }
+ 
+  async function guardedUpdate(req: UpdateRequest): Promise<unknown> {
+    const patch: Record<string, unknown> = {};
+    for (const [k, v] of Object.entries(req.patch)) if (v !== undefined) patch[k] = v;
+    if (Object.keys(patch).length === 0 && !req.blueprintInputs) {
+      throw new Error(
+        "nothing to change: provide at least one field (alias, description, mode, triggers, conditions, actions/sequence, variables, max_exceeded, initial_state, trace, or inputs for a blueprint automation)"
+      );
+    }
+    const { config: before, path } = await currentConfig(req.kind, req.entityId);
+    // Blueprint-based configs have no raw blocks (#139): their behaviour is
+    // edited through use_blueprint.input, never through triggers/actions.
+    const blueprint = (before as { use_blueprint?: { path?: unknown; input?: unknown } }).use_blueprint;
+    const isBlueprint = typeof blueprint === "object" && blueprint !== null;
+    const blockKeys = ["triggers", "conditions", "actions", "sequence"].filter((k) => k in patch);
+    if (isBlueprint && blockKeys.length > 0) {
+      throw new Error(
+        `${req.entityId} is blueprint-based (${String(blueprint.path)}): update its inputs (or alias, description, mode), not raw ${blockKeys.join("/")} blocks`
+      );
+    }
+    if (!isBlueprint && req.blueprintInputs) {
+      throw new Error(`inputs only applies to blueprint-based ${req.kind}s; ${req.entityId} has raw blocks, update those instead`);
+    }
+    const final: Record<string, unknown> = { ...before, ...patch };
+    // Root-key removal (#158): null explicitly DROPS the key from the
+    // stored config (an empty object writes an empty object; undefined
+    // leaves the key untouched). Only the optional root keys are nullable
+    // in the schemas; the blocks stay non-null.
+    for (const [k, v] of Object.entries(patch)) if (v === null) delete final[k];
+    // Legacy twin keys (#146): stored configs may use the old singular keys
+    // (trigger/condition/action). A provided modern block must REPLACE its
+    // legacy twin, not sit next to it: HA refuses "both 'trigger' and
+    // 'triggers'". This also makes legacy-to-modern migrations possible
+    // through the tool. Untouched pairs keep their legacy key: mixing
+    // syntaxes across DIFFERENT pairs is valid for HA.
+    for (const [modern, legacy] of [
+      ["triggers", "trigger"],
+      ["conditions", "condition"],
+      ["actions", "action"],
+    ] as const) {
+      if (modern in patch) delete final[legacy];
+    }
+    if (isBlueprint && req.blueprintInputs) {
+      await checkBlueprintInputs(req.kind, blueprint.path, req.blueprintInputs);
+      final.use_blueprint = { ...blueprint, input: req.blueprintInputs };
+    }
+    const beforeYaml = stringify(before);
+    const afterYaml = stringify(final);
+    const diff = unifiedDiff(beforeYaml, afterYaml);
+    const baseHash = createHash("sha256").update(JSON.stringify(before)).digest("hex");
+    // The base hash inside the fingerprint IS the concurrent-edit guard: a
+    // config changed between the passes yields a different hash, so the
+    // token verdict is "mismatch" and nothing is written.
+    const hash = ConfirmationStore.fingerprint({
+      domain: "_config",
+      service: req.tool,
+      data: { entity_id: req.entityId, config: final, base: baseHash },
+    });
+ 
+    if (req.dry_run) {
+      audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: true, dry_run: true });
+      return { dry_run: true, would_update: req.entityId, diff, yaml: afterYaml };
+    }
+ 
+    if (!req.confirm_token) {
+      // Blueprint payloads have no blocks for validate_config; the inputs
+      // were checked against the blueprint metadata above and HA validates
+      // the values at write time.
+      if (!isBlueprint) await validateBlocks(req.kind, final);
+      const answer = ctx.elicit
+        ? await ctx.elicit(`About to update ${req.entityId}. Review the change:\n\n${diff}\nConfirm the update?`)
+        : null;
+      Iif (answer === false) {
+        audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: false, reason: "declined by the user (elicitation)" });
+        throw new Error("update declined by the user");
+      }
+      if (answer === null) {
+        const confirm_token = ctx.confirmations.issue(hash);
+        audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: false, reason: "confirmation_required" });
+        return {
+          confirmation_required: true,
+          confirm_token,
+          expires_in_seconds: CONFIRM_TTL_SECONDS,
+          would_update: req.entityId,
+          diff,
+          yaml: afterYaml,
+          note:
+            "Show this diff to the user and get their explicit approval, then call again with the SAME arguments plus confirm_token.",
+        };
+      }
+      audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: true, confirmed_via: "elicitation", before: baseHash.slice(0, 12) });
+    } else {
+      const verdict = ctx.confirmations.consume(req.confirm_token, hash);
+      if (verdict !== "ok") {
+        audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: false, reason: `confirm_token ${verdict}` });
+        throw new Error(
+          `confirm_token ${verdict}: ` +
+            (verdict === "mismatch"
+              ? "the configuration changed since the confirmation (or the arguments differ); review and restart the confirmation."
+              : "request a fresh confirmation and try again.")
+        );
+      }
+    }
+ 
+    await ctx.http.corePost(path, final);
+    audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: true, before: baseHash.slice(0, 12) });
+    return {
+      updated: req.entityId,
+      previous_yaml: beforeYaml,
+      note: "Keep previous_yaml somewhere if you may want to revert; the add-on does not store it.",
+    };
+  }
+ 
+  /**
+   * Guarded deletion (#155): the last piece of the lifecycle, deliberately
+   * refused until real-world need proved it (orphaned automations of a
+   * removed device). The maximum-destruction path gets maximum belts: the
+   * first answer carries the COMPLETE YAML of what disappears, the config
+   * hash rides the fingerprint (a change between passes invalidates the
+   * token), and the success answer returns the deleted YAML, which makes
+   * the deletion reversible through ha_create_automation.
+   */
+  async function guardedDelete(req: { tool: string; kind: "automation" | "script"; entityId: string; dry_run?: boolean | undefined; confirm_token?: string | undefined }): Promise<unknown> {
+    const verdict0 = entityWriteAllowedFor(ctx, req.entityId);
+    if (!verdict0.allowed) {
+      audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: false, reason: verdict0.reason });
+      throw new Error(verdict0.reason ?? `entity denied: ${req.entityId}`);
+    }
+    const { config, path } = await currentConfig(req.kind, req.entityId);
+    const yaml = stringify(config);
+    const baseHash = createHash("sha256").update(JSON.stringify(config)).digest("hex");
+    const hash = ConfirmationStore.fingerprint({
+      domain: "_config",
+      service: req.tool,
+      data: { entity_id: req.entityId, base: baseHash },
+    });
+ 
+    if (req.dry_run) {
+      audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: true, dry_run: true });
+      return { dry_run: true, would_delete: req.entityId, yaml };
+    }
+    if (!req.confirm_token) {
+      const answer = ctx.elicit
+        ? await ctx.elicit(`About to DELETE ${req.entityId}. This is its full configuration:\n\n${yaml}\nConfirm the deletion?`)
+        : null;
+      if (answer === false) {
+        audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: false, reason: "declined by the user (elicitation)" });
+        throw new Error("deletion declined by the user");
+      }
+      if (answer === null) {
+        const confirm_token = ctx.confirmations.issue(hash);
+        audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: false, reason: "confirmation_required" });
+        return {
+          confirmation_required: true,
+          confirm_token,
+          expires_in_seconds: CONFIRM_TTL_SECONDS,
+          would_delete: req.entityId,
+          yaml,
+          note:
+            "Deletion is final on the Home Assistant side. Show this YAML to the user, get their explicit approval, then call again with the SAME arguments plus confirm_token.",
+        };
+      }
+      audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: true, confirmed_via: "elicitation", before: baseHash.slice(0, 12) });
+    } else {
+      const verdict = ctx.confirmations.consume(req.confirm_token, hash);
+      if (verdict !== "ok") {
+        audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: false, reason: `confirm_token ${verdict}` });
+        throw new Error(
+          `confirm_token ${verdict}: ` +
+            (verdict === "mismatch"
+              ? "the configuration changed since the confirmation; review and restart."
+              : "request a fresh confirmation and try again.")
+        );
+      }
+    }
+    await ctx.http.coreDelete(path);
+    audit({ client: client(), tool: req.tool, entity_id: req.entityId, allowed: true, before: baseHash.slice(0, 12) });
+    return {
+      deleted: req.entityId,
+      deleted_yaml: yaml,
+      note: `Recreate it with ha_create_${req.kind} from deleted_yaml if you change your mind; the add-on does not store it.`,
+    };
+  }
+ 
+  server.registerTool(
+    "ha_delete_automation",
+    {
+      title: "Delete an automation",
+      description:
+        "DELETES an existing UI-managed automation. Two-step: the first call returns the complete YAML " +
+        "of what will disappear plus a confirm_token; show it to the user, then call again with the " +
+        "token. The deleted YAML is returned on success, so ha_create_automation can undo the deletion.",
+      inputSchema: {
+        entity_id: z.string().describe("E.g. automation.orphaned_doorbell"),
+        dry_run: z.boolean().optional().describe("true: preview the YAML only"),
+        confirm_token: z.string().optional(),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
+    },
+    safe("ha_delete_automation", async ({ entity_id, dry_run, confirm_token }) => {
+      if (!entity_id.startsWith("automation.")) throw new Error(`expected an automation.* entity_id, got: ${entity_id}`);
+      return guardedDelete({ tool: "ha_delete_automation", kind: "automation", entityId: entity_id, dry_run, confirm_token });
+    })
+  );
+ 
+  server.registerTool(
+    "ha_delete_script",
+    {
+      title: "Delete a script",
+      description:
+        "DELETES an existing UI-managed script, same guarded two-step flow as ha_delete_automation " +
+        "(full YAML shown before confirmation, deleted YAML returned for undo).",
+      inputSchema: {
+        entity_id: z.string().describe("E.g. script.obsolete_routine"),
+        dry_run: z.boolean().optional(),
+        confirm_token: z.string().optional(),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
+    },
+    safe("ha_delete_script", async ({ entity_id, dry_run, confirm_token }) => {
+      Iif (!entity_id.startsWith("script.")) throw new Error(`expected a script.* entity_id, got: ${entity_id}`);
+      return guardedDelete({ tool: "ha_delete_script", kind: "script", entityId: entity_id, dry_run, confirm_token });
+    })
+  );
+ 
+  server.registerTool(
+    "ha_add_dashboard_card",
+    {
+      title: "Add a dashboard card",
+      description:
+        "Inserts ONE card into a Lovelace dashboard view (draft it with the propose-dashboard-card " +
+        "prompt first). Two-step: the first call returns a before/after diff of the VIEW plus a " +
+        "confirm_token; show it to the user, then call again with the token. Classic and sections " +
+        "layouts are both handled; YAML-managed dashboards are refused. Find targets with " +
+        "ha_list_dashboards.",
+      inputSchema: {
+        dashboard: z.string().describe("url_path from ha_list_dashboards; 'lovelace' for the default"),
+        view: z.union([z.number().int().min(0), z.string()]).describe("View index, or its path/title"),
+        card: z.record(z.string(), z.unknown()).describe("The card config (type, entities...)"),
+        dry_run: z.boolean().optional().describe("true: return the diff preview only"),
+        confirm_token: z.string().optional(),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
+    },
+    safe("ha_add_dashboard_card", async ({ dashboard, view, card, dry_run, confirm_token }) => {
+      const urlPath = dashboard === "lovelace" || dashboard === "" ? null : dashboard;
+      // YAML-managed dashboards are not editable through this API; refuse
+      // upfront when the listing knows it (the default dashboard's mode is
+      // only known at save time: its error is relayed).
+      try {
+        const list: any[] = ((await ctx.ws.send("lovelace/dashboards/list", {})) as any[]) ?? [];
+        const entry = list.find((d) => d.url_path === urlPath);
+        if (entry && entry.mode !== "storage") {
+          throw new Error(`dashboard ${dashboard} is YAML-managed: edit its YAML file directly`);
+        }
+      } catch (e) {
+        Eif (e instanceof Error && e.message.includes("YAML-managed")) throw e;
+        // listing unavailable: proceed, the save will tell
+      }
+ 
+      const config: any = await ctx.ws.send("lovelace/config", { url_path: urlPath });
+      const views: any[] = config?.views ?? [];
+      const idx =
+        typeof view === "number"
+          ? view
+          : views.findIndex(
+              (v) =>
+                String(v?.path ?? "").toLowerCase() === view.toLowerCase() ||
+                String(v?.title ?? "").toLowerCase() === view.toLowerCase()
+            );
+      const target = views[idx];
+      if (!target) {
+        throw new Error(
+          `view not found: ${view}. Views: ${views.map((v, i) => `${i}: ${v?.title ?? v?.path ?? "untitled"}`).join(", ") || "none"}`
+        );
+      }
+ 
+      const beforeViewYaml = stringify(target);
+      // Both layouts (#129): classic views carry cards[], modern ones carry
+      // sections[] of grids. Insert at the end of the last grid, or open one.
+      const newView = JSON.parse(JSON.stringify(target)) as Record<string, any>;
+      if (newView.type === "sections" || Array.isArray(newView.sections)) {
+        newView.sections = Array.isArray(newView.sections) ? newView.sections : [];
+        let last = newView.sections[newView.sections.length - 1];
+        Iif (!last || !Array.isArray(last.cards)) {
+          last = { type: "grid", cards: [] };
+          newView.sections.push(last);
+        }
+        last.cards.push(card);
+      } else {
+        newView.cards = [...(Array.isArray(newView.cards) ? newView.cards : []), card];
+      }
+      const afterViewYaml = stringify(newView);
+      const diff = unifiedDiff(beforeViewYaml, afterViewYaml);
+      // The whole-dashboard hash inside the fingerprint is the concurrent
+      // edit guard, same pattern as ha_update_automation (#108).
+      const baseHash = createHash("sha256").update(JSON.stringify(config)).digest("hex");
+      const hash = ConfirmationStore.fingerprint({
+        domain: "_config",
+        service: "ha_add_dashboard_card",
+        data: { dashboard, view: idx, card, base: baseHash },
+      });
+      const label = `${dashboard} (view ${idx}${target.title ? `: ${target.title}` : ""})`;
+ 
+      Iif (dry_run) {
+        audit({ client: client(), tool: "ha_add_dashboard_card", target: label, allowed: true, dry_run: true });
+        return { dry_run: true, would_update: label, diff };
+      }
+      if (!confirm_token) {
+        const answer = ctx.elicit
+          ? await ctx.elicit(`About to add a card to ${label}. Review the view change:\n\n${diff}\nConfirm?`)
+          : null;
+        Iif (answer === false) {
+          audit({ client: client(), tool: "ha_add_dashboard_card", target: label, allowed: false, reason: "declined by the user (elicitation)" });
+          throw new Error("card insertion declined by the user");
+        }
+        Eif (answer === null) {
+          const token = ctx.confirmations.issue(hash);
+          audit({ client: client(), tool: "ha_add_dashboard_card", target: label, allowed: false, reason: "confirmation_required" });
+          return {
+            confirmation_required: true,
+            confirm_token: token,
+            expires_in_seconds: CONFIRM_TTL_SECONDS,
+            would_update: label,
+            diff,
+            note: "Show this view diff to the user and get their approval, then call again with the SAME arguments plus confirm_token.",
+          };
+        }
+        audit({ client: client(), tool: "ha_add_dashboard_card", target: label, allowed: true, confirmed_via: "elicitation" });
+      } else {
+        const verdict = ctx.confirmations.consume(confirm_token, hash);
+        if (verdict !== "ok") {
+          audit({ client: client(), tool: "ha_add_dashboard_card", target: label, allowed: false, reason: `confirm_token ${verdict}` });
+          throw new Error(
+            `confirm_token ${verdict}: ` +
+              (verdict === "mismatch"
+                ? "the dashboard changed since the confirmation (or the arguments differ); review and restart."
+                : "request a fresh confirmation and try again.")
+          );
+        }
+      }
+ 
+      const newConfig = { ...config, views: views.map((v, i) => (i === idx ? newView : v)) };
+      await ctx.ws.send("lovelace/config/save", { url_path: urlPath, config: newConfig });
+      audit({ client: client(), tool: "ha_add_dashboard_card", target: label, allowed: true, before: baseHash.slice(0, 12) });
+      return {
+        updated: label,
+        previous_view_yaml: beforeViewYaml,
+        note: "Keep previous_view_yaml if you may want to revert this view; the add-on does not store it.",
+      };
+    })
+  );
+ 
+  server.registerTool(
+    "ha_create_from_blueprint",
+    {
+      title: "Create from a blueprint",
+      description:
+        "Creates a NEW automation (or script) from an installed blueprint: the behaviour is already " +
+        "written and vetted, only its typed inputs are filled. Discover blueprints and their inputs with " +
+        "ha_list_blueprints. Same guarded two-step flow as ha_create_automation (YAML preview, " +
+        "confirm_token, creation only).",
+      inputSchema: {
+        blueprint_path: z.string().describe("Blueprint path from ha_list_blueprints, e.g. homeassistant/motion_light.yaml"),
+        alias: z.string().min(1).describe("Name of the new automation"),
+        inputs: z.record(z.string(), z.unknown()).default({}).describe("Blueprint inputs; required ones must all be present"),
+        domain: z.enum(["automation", "script"]).optional().describe("Default automation"),
+        dry_run: z.boolean().optional(),
+        confirm_token: z.string().optional(),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
+    },
+    safe("ha_create_from_blueprint", async ({ blueprint_path, alias, inputs, domain, dry_run, confirm_token }) => {
+      const kind = domain ?? "automation";
+      // The blueprint must exist and its required inputs must all be there
+      // BEFORE anything is offered; HA validates the values at write time.
+      const list: Record<string, any> = (await ctx.ws.send("blueprint/list", { domain: kind })) ?? {};
+      const bp = list[blueprint_path];
+      if (!bp) {
+        throw new Error(`unknown blueprint: ${blueprint_path}. List them with ha_list_blueprints (domain ${kind}).`);
+      }
+      const declared: Record<string, any> = bp?.metadata?.input ?? {};
+      const missing = Object.entries(declared)
+        .filter(([, def]) => !("default" in ((def ?? {}) as object)))
+        .map(([name]) => name)
+        .filter((name) => !(name in inputs));
+      if (missing.length > 0) {
+        throw new Error(`missing required blueprint inputs: ${missing.join(", ")}`);
+      }
+      const unknown = Object.keys(inputs).filter((k) => !(k in declared));
+      if (unknown.length > 0) {
+        throw new Error(`unknown blueprint inputs: ${unknown.join(", ")} (this blueprint declares: ${Object.keys(declared).join(", ")})`);
+      }
+ 
+      const objectId = slugify(alias);
+      Iif (!objectId) throw new Error("the alias must contain at least one alphanumeric character");
+      const payload: Record<string, unknown> = {
+        alias,
+        use_blueprint: { path: blueprint_path, input: inputs },
+      };
+      return guardedCreate({
+        tool: "ha_create_from_blueprint",
+        kind,
+        payload,
+        path: kind === "automation" ? `/config/automation/config/${Date.now()}` : `/config/script/config/${objectId}`,
+        entityId: `${kind}.${objectId}`,
+        skipWsValidation: true,
+        dry_run,
+        confirm_token,
+      });
+    })
+  );
+ 
+  // Root-level tuning keys (#158): variables is where non-trivial automation
+  // logic lives; the others tune concurrency reporting, startup state and
+  // tracing. HA validates the values at write time.
+  const variablesSchema = z.record(z.string(), z.unknown());
+  const maxExceededSchema = z.enum(["silent", "critical", "fatal", "error", "warning", "warn", "info", "debug", "notice"]);
+  const traceSchema = z.object({ stored_traces: z.number().int().min(1).max(100) });
+ 
+  server.registerTool(
+    "ha_update_automation",
+    {
+      title: "Update an automation",
+      description:
+        "Updates an EXISTING UI-managed automation. Provided blocks replace the current ones wholesale " +
+        "(a provided actions list replaces all actions). For blueprint-based automations, pass inputs " +
+        "(replaces the whole use_blueprint input set) instead of raw blocks. Two-step: the first call " +
+        "validates and returns a before/after diff plus a confirm_token; show the diff to the user, then " +
+        "call again with the token. The success answer carries the previous YAML for manual rollback.",
+      inputSchema: {
+        entity_id: z.string().describe("E.g. automation.night_heating"),
+        alias: z.string().optional(),
+        description: z.string().optional(),
+        mode: z.enum(["single", "restart", "queued", "parallel"]).optional(),
+        triggers: freeObjects.min(1).optional(),
+        conditions: freeObjects.optional(),
+        actions: freeObjects.min(1).optional(),
+        variables: variablesSchema.nullable().optional().describe("Root variables, replaced wholesale; null removes the key"),
+        max_exceeded: maxExceededSchema.nullable().optional().describe("Log level when mode limit is hit; null removes the key"),
+        initial_state: z.boolean().nullable().optional().describe("Forced enabled state at HA start; null removes the key"),
+        trace: traceSchema.nullable().optional().describe("E.g. {stored_traces: 20}; null removes the key"),
+        inputs: z.record(z.string(), z.unknown()).optional().describe("Blueprint automations only: replaces use_blueprint.input wholesale"),
+        dry_run: z.boolean().optional().describe("true: return the diff preview only"),
+        confirm_token: z.string().optional(),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
+    },
+    safe("ha_update_automation", async ({ entity_id, alias, description, mode, triggers, conditions, actions, variables, max_exceeded, initial_state, trace, inputs, dry_run, confirm_token }) => {
+      Iif (!entity_id.startsWith("automation.")) throw new Error(`expected an automation.* entity_id, got: ${entity_id}`);
+      return guardedUpdate({
+        tool: "ha_update_automation",
+        kind: "automation",
+        entityId: entity_id,
+        patch: { alias, description, mode, triggers, conditions, actions, variables, max_exceeded, initial_state, trace },
+        blueprintInputs: inputs,
+        dry_run,
+        confirm_token,
+      });
+    })
+  );
+ 
+  server.registerTool(
+    "ha_update_script",
+    {
+      title: "Update a script",
+      description:
+        "Updates an EXISTING UI-managed script, same guarded two-step flow as ha_update_automation " +
+        "(wholesale block replacement, blueprint inputs supported, before/after diff, previous YAML " +
+        "returned for rollback).",
+      inputSchema: {
+        entity_id: z.string().describe("E.g. script.movie_night"),
+        alias: z.string().optional(),
+        description: z.string().optional(),
+        mode: z.enum(["single", "restart", "queued", "parallel"]).optional(),
+        sequence: freeObjects.min(1).optional(),
+        variables: variablesSchema.nullable().optional().describe("Root variables, replaced wholesale; null removes the key"),
+        max_exceeded: maxExceededSchema.nullable().optional().describe("Log level when mode limit is hit; null removes the key"),
+        trace: traceSchema.nullable().optional().describe("E.g. {stored_traces: 20}; null removes the key"),
+        inputs: z.record(z.string(), z.unknown()).optional().describe("Blueprint scripts only: replaces use_blueprint.input wholesale"),
+        dry_run: z.boolean().optional(),
+        confirm_token: z.string().optional(),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
+    },
+    safe("ha_update_script", async ({ entity_id, alias, description, mode, sequence, variables, max_exceeded, trace, inputs, dry_run, confirm_token }) => {
+      Iif (!entity_id.startsWith("script.")) throw new Error(`expected a script.* entity_id, got: ${entity_id}`);
+      return guardedUpdate({
+        tool: "ha_update_script",
+        kind: "script",
+        entityId: entity_id,
+        patch: { alias, description, mode, sequence, variables, max_exceeded, trace },
+        blueprintInputs: inputs,
+        dry_run,
+        confirm_token,
+      });
+    })
+  );
+ 
+  server.registerTool(
+    "ha_create_automation",
+    {
+      title: "Create an automation",
+      description:
+        "Creates a NEW automation (never modifies existing ones). Two-step: the first call validates the " +
+        "config with Home Assistant and returns the full YAML plus a confirm_token; show the YAML to the " +
+        "user, then call again with the same arguments plus the token. Use the propose-automation prompt " +
+        "first to draft with verified entities. dry_run: true previews the YAML only.",
+      inputSchema: {
+        alias: z.string().min(1).describe("Automation name, e.g. 'Hallway light on motion'"),
+        description: z.string().optional(),
+        mode: z.enum(["single", "restart", "queued", "parallel"]).optional().describe("Default single"),
+        triggers: freeObjects.min(1).describe("Trigger list, modern syntax (e.g. [{trigger: 'state', entity_id: '...'}])"),
+        conditions: freeObjects.optional(),
+        actions: freeObjects.min(1).describe("Action list (e.g. [{action: 'light.turn_on', target: {...}}])"),
+        variables: variablesSchema.optional().describe("Root variables available to all templates (#158)"),
+        max_exceeded: maxExceededSchema.optional().describe("Log level when the mode limit is hit"),
+        dry_run: z.boolean().optional().describe("true: return the YAML preview only"),
+        confirm_token: z.string().optional().describe("Token from the confirmation_required answer"),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
+    },
+    safe("ha_create_automation", async ({ alias, description, mode, triggers, conditions, actions, variables, max_exceeded, dry_run, confirm_token }) => {
+      const payload: Record<string, unknown> = {
+        alias,
+        ...(description ? { description } : {}),
+        mode: mode ?? "single",
+        ...(variables ? { variables } : {}),
+        ...(max_exceeded ? { max_exceeded } : {}),
+        triggers,
+        ...(conditions && conditions.length > 0 ? { conditions } : {}),
+        actions,
+      };
+      return guardedCreate({
+        tool: "ha_create_automation",
+        kind: "automation",
+        payload,
+        path: `/config/automation/config/${Date.now()}`,
+        entityId: `automation.${slugify(alias)}`,
+        dry_run,
+        confirm_token,
+      });
+    })
+  );
+ 
+  server.registerTool(
+    "ha_create_script",
+    {
+      title: "Create a script",
+      description:
+        "Creates a NEW script (never modifies existing ones). Same two-step confirmation as " +
+        "ha_create_automation: validate, show the YAML to the user, confirm with the token. " +
+        "Use the propose-script prompt first to draft with verified entities.",
+      inputSchema: {
+        alias: z.string().min(1).describe("Script name, e.g. 'Movie night'"),
+        description: z.string().optional(),
+        mode: z.enum(["single", "restart", "queued", "parallel"]).optional().describe("Default single"),
+        sequence: freeObjects.min(1).describe("Action sequence (e.g. [{action: 'light.turn_off', target: {...}}])"),
+        variables: variablesSchema.optional().describe("Root variables available to all templates (#158)"),
+        max_exceeded: maxExceededSchema.optional().describe("Log level when the mode limit is hit"),
+        dry_run: z.boolean().optional().describe("true: return the YAML preview only"),
+        confirm_token: z.string().optional().describe("Token from the confirmation_required answer"),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
+    },
+    safe("ha_create_script", async ({ alias, description, mode, sequence, variables, max_exceeded, dry_run, confirm_token }) => {
+      const objectId = slugify(alias);
+      Iif (!objectId) throw new Error("the alias must contain at least one alphanumeric character");
+      const payload: Record<string, unknown> = {
+        alias,
+        ...(description ? { description } : {}),
+        mode: mode ?? "single",
+        ...(variables ? { variables } : {}),
+        ...(max_exceeded ? { max_exceeded } : {}),
+        sequence,
+      };
+      return guardedCreate({
+        tool: "ha_create_script",
+        kind: "script",
+        payload,
+        path: `/config/script/config/${objectId}`,
+        entityId: `script.${objectId}`,
+        dry_run,
+        confirm_token,
+      });
+    })
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/dashboards.ts.html b/mcp_ha/coverage/src/mcp/tools/dashboards.ts.html new file mode 100644 index 0000000..d3fdfa0 --- /dev/null +++ b/mcp_ha/coverage/src/mcp/tools/dashboards.ts.html @@ -0,0 +1,262 @@ + + + + + + Code coverage report for src/mcp/tools/dashboards.ts + + + + + + + + + +
+
+

All files / src/mcp/tools dashboards.ts

+
+ +
+ 100% + Statements + 11/11 +
+ + +
+ 73.33% + Branches + 22/30 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 11/11 +
+ + +
+

+ 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  +  +  +  +  +  +  +  +  +  +23x +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +1x +  +  +2x +  +  +  +  +  +  +  +  +  +1x +2x +1x +2x +  +2x +  +  +  +  +  +  +2x +  +  +  +  +  +  +  + 
import { z } from "zod";
+import type { ToolRegistrar } from "../registry.js";
+import type { ToolContext } from "../../context.js";
+import { safe } from "../helpers.js";
+ 
+/**
+ * Dashboard listing (#129), read only. The guarded card insertion lives
+ * with the other config writes (ha_add_dashboard_card, configwrite.ts).
+ */
+export function registerDashboardTools(server: ToolRegistrar, ctx: ToolContext): void {
+  server.registerTool(
+    "ha_list_dashboards",
+    {
+      title: "List dashboards",
+      description:
+        "Without dashboard: the Lovelace dashboards (title, url_path, editable or YAML-managed). " +
+        "With dashboard: its views (index, title, path, layout type, card count), what " +
+        "ha_add_dashboard_card needs to target an insertion.",
+      inputSchema: {
+        dashboard: z.string().optional().describe("url_path, or 'lovelace' for the default; omit to list dashboards"),
+      },
+      annotations: { readOnlyHint: true },
+    },
+    safe("ha_list_dashboards", async ({ dashboard }) => {
+      if (!dashboard) {
+        const list: any[] = ((await ctx.ws.send("lovelace/dashboards/list", {})) as any[]) ?? [];
+        return {
+          items: [
+            { url_path: "lovelace", title: "Default dashboard", editable: null, note: "editability known on read" },
+            ...list.map((d) => ({
+              url_path: d.url_path,
+              title: d.title,
+              editable: d.mode === "storage",
+              ...(d.mode !== "storage" ? { note: "YAML-managed: not editable through the add-on" } : {}),
+            })),
+          ],
+          note: "Pass a url_path to see the views of one dashboard.",
+        };
+      }
+      const urlPath = dashboard === "lovelace" || dashboard === "" ? null : dashboard;
+      const config: any = await ctx.ws.send("lovelace/config", { url_path: urlPath });
+      const views: any[] = config?.views ?? [];
+      return {
+        dashboard,
+        views: views.map((v, i) => ({
+          index: i,
+          ...(v.title ? { title: v.title } : {}),
+          ...(v.path ? { path: v.path } : {}),
+          layout: v.type === "sections" || Array.isArray(v.sections) ? "sections" : "cards",
+          cards:
+            v.type === "sections" || Array.isArray(v.sections)
+              ? (v.sections ?? []).reduce((n: number, s: any) => n + (s.cards?.length ?? 0), 0)
+              : (v.cards?.length ?? 0),
+        })),
+        total: views.length,
+      };
+    })
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/energy.ts.html b/mcp_ha/coverage/src/mcp/tools/energy.ts.html new file mode 100644 index 0000000..50ed75e --- /dev/null +++ b/mcp_ha/coverage/src/mcp/tools/energy.ts.html @@ -0,0 +1,499 @@ + + + + + + Code coverage report for src/mcp/tools/energy.ts + + + + + + + + + +
+
+

All files / src/mcp/tools energy.ts

+
+ +
+ 89.39% + Statements + 59/66 +
+ + +
+ 60% + Branches + 36/60 +
+ + +
+ 100% + Functions + 15/15 +
+ + +
+ 92.45% + Lines + 49/53 +
+ + +
+

+ 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  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +3x +3x +9x +3x +3x +6x +3x +  +  +3x +  +  +3x +6x +6x +3x +  +  +  +25x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +4x +  +1x +1x +  +  +  +  +3x +6x +18x +  +3x +  +  +  +3x +4x +4x +4x +  +  +  +  +  +  +4x +4x +28x +  +4x +  +  +4x +28x +4x +  +  +  +  +  +  +  +  +  +4x +3x +3x +6x +5x +2x +  +  +3x +  +  +  +  +  +  +  +4x +1x +1x +1x +7x +7x +  +1x +1x +  +3x +  +  +  + 
import { z } from "zod";
+import type { ToolRegistrar } from "../registry.js";
+import type { ToolContext } from "../../context.js";
+import { safe } from "../helpers.js";
+import { entityReadVisible } from "../../safety.js";
+ 
+/**
+ * Energy report wired to the REAL energy dashboard (#109): energy/get_prefs
+ * names the exact statistics the user configured (grid, solar, battery,
+ * gas, water, per-device), so nothing is guessed. Totals use the "change"
+ * statistic type: energy statistics are cumulative sums, and summing the
+ * per-period change is the dashboard's own way to get a period total.
+ */
+ 
+const PERIOD_HOURS = { day: 24, week: 168, month: 720 } as const;
+ 
+interface Buckets {
+  grid_import: string[];
+  grid_export: string[];
+  solar: string[];
+  battery_in: string[];
+  battery_out: string[];
+  gas: string[];
+  water: string[];
+}
+ 
+function collectStats(prefs: any): { buckets: Buckets; devices: Array<{ stat: string; name: string | null }> } {
+  const buckets: Buckets = { grid_import: [], grid_export: [], solar: [], battery_in: [], battery_out: [], gas: [], water: [] };
+  for (const src of (prefs?.energy_sources as any[]) ?? []) {
+    if (src.type === "grid") {
+      for (const f of src.flow_from ?? []) Eif (f.stat_energy_from) buckets.grid_import.push(f.stat_energy_from);
+      for (const f of src.flow_to ?? []) Eif (f.stat_energy_to) buckets.grid_export.push(f.stat_energy_to);
+    } else if (src.type === "solar" && src.stat_energy_from) buckets.solar.push(src.stat_energy_from);
+    else Iif (src.type === "battery") {
+      if (src.stat_energy_to) buckets.battery_in.push(src.stat_energy_to);
+      if (src.stat_energy_from) buckets.battery_out.push(src.stat_energy_from);
+    } else if (src.type === "gas" && src.stat_energy_from) buckets.gas.push(src.stat_energy_from);
+    else Eif (src.type === "water" && src.stat_energy_from) buckets.water.push(src.stat_energy_from);
+  }
+  const devices = (((prefs?.device_consumption as any[]) ?? []) as any[])
+    .filter((d) => d.stat_consumption)
+    .map((d) => ({ stat: String(d.stat_consumption), name: (d.name as string | undefined) ?? null }));
+  return { buckets, devices };
+}
+ 
+export function registerEnergyTools(server: ToolRegistrar, ctx: ToolContext): void {
+  server.registerTool(
+    "ha_get_energy",
+    {
+      title: "Energy report",
+      description:
+        "Energy totals from the configured energy dashboard (grid import/export, solar, battery, gas, " +
+        "water, top consuming devices) over a period, with an optional comparison to the previous one " +
+        "('this week vs last week'). Uses the exact statistics the dashboard is configured with.",
+      inputSchema: {
+        period: z.enum(["day", "week", "month"]).optional().describe("Sliding window, default day"),
+        compare: z.boolean().optional().describe("true: also compute the previous period and the deltas"),
+      },
+      annotations: { readOnlyHint: true },
+    },
+    safe("ha_get_energy", async ({ period, compare }) => {
+      let prefs: any;
+      try {
+        prefs = await ctx.ws.send("energy/get_prefs", {});
+      } catch (e) {
+        const msg = e instanceof Error ? e.message : String(e);
+        throw new Error(
+          `the energy dashboard is not configured (${msg}). Set it up in Settings > Dashboards > Energy, ` +
+            "or use ha_get_statistics on your energy sensors directly."
+        );
+      }
+      const { buckets, devices } = collectStats(prefs);
+      const allStats = [...new Set([...Object.values(buckets).flat(), ...devices.map((d) => d.stat)])].filter((s) =>
+        entityReadVisible(ctx.cfg, s)
+      );
+      Iif (allStats.length === 0) {
+        return { note: "The energy dashboard has no readable statistic configured." };
+      }
+ 
+      const hours = PERIOD_HOURS[period ?? "day"];
+      const now = Date.now();
+      const window = async (start: number, end: number): Promise<Record<string, number>> => {
+        const res: Record<string, Array<{ change?: number | null }>> = await ctx.ws.send("recorder/statistics_during_period", {
+          start_time: new Date(start).toISOString(),
+          end_time: new Date(end).toISOString(),
+          statistic_ids: allStats,
+          period: hours > 168 ? "day" : "hour",
+          types: ["change"],
+        });
+        const totals: Record<string, number> = {};
+        for (const [id, rows] of Object.entries(res ?? {})) {
+          totals[id] = Math.round((rows ?? []).reduce((acc, r) => acc + (r.change ?? 0), 0) * 1000) / 1000;
+        }
+        return totals;
+      };
+ 
+      const sumBucket = (totals: Record<string, number>, ids: string[]): number =>
+        Math.round(ids.reduce((acc, id) => acc + (totals[id] ?? 0), 0) * 1000) / 1000;
+      const summarize = (totals: Record<string, number>) => ({
+        grid_import: sumBucket(totals, buckets.grid_import),
+        grid_export: sumBucket(totals, buckets.grid_export),
+        solar: sumBucket(totals, buckets.solar),
+        battery_in: sumBucket(totals, buckets.battery_in),
+        battery_out: sumBucket(totals, buckets.battery_out),
+        gas: sumBucket(totals, buckets.gas),
+        water: sumBucket(totals, buckets.water),
+      });
+ 
+      const current = await window(now - hours * 3_600_000, now);
+      const totals = summarize(current);
+      const topDevices = devices
+        .filter((d) => entityReadVisible(ctx.cfg, d.stat))
+        .map((d) => ({ ...d, total: current[d.stat] ?? 0 }))
+        .sort((a, b) => b.total - a.total)
+        .slice(0, 10);
+ 
+      const out: Record<string, unknown> = {
+        period: period ?? "day",
+        from: new Date(now - hours * 3_600_000).toISOString(),
+        to: new Date(now).toISOString(),
+        totals,
+        top_devices: topDevices,
+        note: "Units follow the dashboard statistics (kWh for energy, m3 for gas and water).",
+      };
+      if (compare) {
+        const previous = summarize(await window(now - 2 * hours * 3_600_000, now - hours * 3_600_000));
+        const delta: Record<string, number | null> = {};
+        for (const [k, v] of Object.entries(totals)) {
+          const p = (previous as Record<string, number>)[k] ?? 0;
+          delta[k] = p !== 0 ? Math.round(((v - p) / p) * 1000) / 10 : null;
+        }
+        out.previous = previous;
+        out.delta_percent = delta;
+      }
+      return out;
+    })
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/entities.ts.html b/mcp_ha/coverage/src/mcp/tools/entities.ts.html index e33964c..2a95d6d 100644 --- a/mcp_ha/coverage/src/mcp/tools/entities.ts.html +++ b/mcp_ha/coverage/src/mcp/tools/entities.ts.html @@ -23,30 +23,30 @@

All files / src/mcp/t
- 91.3% + 94.69% Statements - 84/92 + 107/113
- 84.05% + 89.21% Branches - 58/69 + 91/102
- 83.33% + 87.17% Functions - 25/30 + 34/39
- 91.89% + 93.02% Lines - 68/74 + 80/86
@@ -281,7 +281,33 @@

All files / src/mcp/t 216 217 218 -219  +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        @@ -290,7 +316,7 @@

All files / src/mcp/t       -7x +11x       @@ -300,28 +326,32 @@

All files / src/mcp/t       -15x -15x -15x -15x -15x -15x -14x -14x -16x -13x -13x -13x +19x +19x +19x +19x +19x   -1x   +19x +19x +19x +19x +18x +18x +21x +17x +16x +15x +  +3x     -10x -40x   16x +48x   +42x       @@ -335,13 +365,14 @@

All files / src/mcp/t       -4x -4x -15x -15x +  +6x +6x +19x +19x   -2x 4x +6x       @@ -350,7 +381,7 @@

All files / src/mcp/t       -16x +42x       @@ -369,9 +400,11 @@

All files / src/mcp/t       -5x   -5x +  +7x +  +7x 1x 1x 1x @@ -389,24 +422,31 @@

All files / src/mcp/t     11x -4x -4x +6x +6x 1x 4x   -4x +6x +1x +2x +  +6x +1x +2x +  +6x             -4x -  +6x     -16x   +42x       @@ -418,18 +458,19 @@

All files / src/mcp/t       -3x -1x   -2x 5x -2x -1x 1x +  +4x +8x +4x +3x +3x 2x 2x   -1x +3x       @@ -442,19 +483,23 @@

All files / src/mcp/t       -16x       +42x           -1x -1x +  +  +  +3x +3x 4x -1x +3x +3x 2x     @@ -465,7 +510,8 @@

All files / src/mcp/t       -16x +  +42x       @@ -480,27 +526,33 @@

All files / src/mcp/t       -1x -1x -1x -3x 2x +2x +5x +2x +5x     +4x +4x         -1x +  +  +  +  +2x 1x 2x   -1x +2x        
import { z } from "zod";
-import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
+import type { ToolRegistrar } from "../registry.js";
 import type { ToolContext } from "../../context.js";
 import type { IndexedEntity } from "../../types.js";
 import { listEnvelope, safe, trunc } from "../helpers.js";
@@ -523,18 +575,23 @@ 

All files / src/mcp/t const id = e.entity_id.toLowerCase(); const name = e.name.toLowerCase(); const area = (e.area ?? "").toLowerCase(); + // Aliases are deliberate alternative names (Assist), so they weigh like + // the name; labels and floor weigh like the area (#89). + const aliases = e.aliases.map((a) => a.toLowerCase()); + const labels = e.labels.map((l) => l.toLowerCase()); + const floor = (e.floor ?? "").toLowerCase(); if (id === q) return 100; let score = 0; for (const t of tokens) { if (id.includes(t)) score += 5; - else Iif (name.includes(t)) score += 4; - else Iif (area.includes(t)) score += 2; + else if (name.includes(t) || aliases.some((a) => a.includes(t))) score += 4; + else if (area.includes(t) || floor.includes(t) || labels.some((l) => l.includes(t))) score += 2; else return 0; // every word must match somewhere } return score; }   -export function registerEntityTools(server: McpServer, ctx: ToolContext): void { +export function registerEntityTools(server: ToolRegistrar, ctx: ToolContext): void { const visible = async (): Promise<IndexedEntity[]> => (await ctx.catalog.index()).filter((e) => entityReadVisible(ctx.cfg, e.entity_id));   @@ -543,11 +600,11 @@

All files / src/mcp/t { title: "Search entities", description: - "Fuzzy search of Home Assistant entities by name, entity_id or area. " + + "Fuzzy search of Home Assistant entities by name, entity_id, alias (Assist), area, floor or label. " + "Use this first to find the right entity_id (e.g. query: 'kitchen light'). " + "Follow up with ha_get_entity for full details.", inputSchema: { - query: z.string().min(1).describe("Search terms (name, id, area)"), + query: z.string().min(1).describe("Search terms (name, id, alias, area, floor, label)"), limit: z.number().int().min(1).max(50).optional().describe("Max results, default 20"), }, annotations: { readOnlyHint: true }, @@ -574,22 +631,24 @@

All files / src/mcp/t title: "List entities", description: "Paginated compact list of entities, filterable by domain (light, sensor, switch, automation...), " + - "area (room name), search and state. With no filter at all it returns a histogram per domain and " + - "per area instead of a full dump: filter to get actual entities.", + "area (room name), floor, label, search and state. With no filter at all it returns a histogram " + + "per domain and per area instead of a full dump: filter to get actual entities.", inputSchema: { domain: z.string().optional().describe("Exact domain, e.g. light"), area: z.string().optional().describe("Area name (or id), case insensitive"), - search: z.string().optional().describe("Fuzzy search in id, name, area"), + floor: z.string().optional().describe("Floor name, case insensitive (#89)"), + label: z.string().optional().describe("Label name, case insensitive (#89)"), + search: z.string().optional().describe("Fuzzy search in id, name, alias, area, floor, label"), state: z.string().optional().describe("Exact state, e.g. on"), limit: z.number().int().min(1).max(200).optional().describe("Default 50, max 200"), offset: z.number().int().min(0).optional(), }, annotations: { readOnlyHint: true }, }, - safe("ha_list_entities", async ({ domain, area, search, state, limit, offset }) => { + safe("ha_list_entities", async ({ domain, area, floor, label, search, state, limit, offset }) => { let all = await visible();   - if (!domain && !area && !search && !state) { + if (!domain && !area && !floor && !label && !search && !state) { const byDomain = new Map<string, number>(); const byArea = new Map<string, number>(); for (const e of all) { @@ -612,6 +671,14 @@

All files / src/mcp/t const a = area.toLowerCase().trim(); all = all.filter((e) => (e.area ?? "").toLowerCase() === a); } + if (floor) { + const f = floor.toLowerCase().trim(); + all = all.filter((e) => (e.floor ?? "").toLowerCase() === f); + } + if (label) { + const l = label.toLowerCase().trim(); + all = all.filter((e) => e.labels.some((x) => x.toLowerCase() === l)); + } Iif (search) { all = all .map((e) => ({ e, score: matchQuery(e, search) })) @@ -652,6 +719,9 @@

All files / src/mcp/t name: e.name, state: e.state, area: e.area, + ...(e.floor ? { floor: e.floor } : {}), + ...(e.aliases.length > 0 ? { aliases: e.aliases } : {}), + ...(e.labels.length > 0 ? { labels: e.labels } : {}), category: e.category, hidden: e.hidden, last_changed: e.last_changed, @@ -664,7 +734,7 @@

All files / src/mcp/t "ha_list_areas", { title: "List areas", - description: "All declared areas (rooms), with the number of entities in each.", + description: "All declared areas (rooms), with their floor and the number of entities in each.", inputSchema: {}, annotations: { readOnlyHint: true }, }, @@ -672,10 +742,12 @@

All files / src/mcp/t const [regs, all] = await Promise.all([ctx.catalog.registries(), visible()]); const counts = new Map<string, number>(); for (const e of all) Eif (e.area) counts.set(e.area, (counts.get(e.area) ?? 0) + 1); + const floorName = new Map(regs.floors.map((f) => [f.floor_id, f.name])); return { items: regs.areas.map((a) => ({ area_id: a.area_id, name: a.name, + ...(a.floor_id ? { floor: floorName.get(a.floor_id) ?? null } : {}), entities: counts.get(a.name) ?? 0, })), total: regs.areas.length, @@ -700,16 +772,22 @@

All files / src/mcp/t safe("ha_list_devices", async ({ area, limit, offset }) => { const regs = await ctx.catalog.registries(); const areaById = new Map(regs.areas.map((a) => [a.area_id, a.name])); + const deviceById = new Map(regs.devices.map((d) => [d.id, d])); let devices = regs.devices .filter((d) => !d.disabled_by) - .map((d) => ({ - device_id: d.id, - name: d.name_by_user ?? d.name ?? "(unnamed)", - manufacturer: d.manufacturer, - model: d.model, - area: d.area_id ? (areaById.get(d.area_id) ?? null) : null, - })); - Eif (area) { + .map((d) => { + // Child devices (#191): no own area; show the parent's, like HA. + const effectiveAreaId = d.area_id ?? (d.parent_device_id ? (deviceById.get(d.parent_device_id)?.area_id ?? null) : null); + return { + device_id: d.id, + name: d.name_by_user ?? d.name ?? "(unnamed)", + manufacturer: d.manufacturer, + model: d.model, + area: effectiveAreaId ? (areaById.get(effectiveAreaId) ?? null) : null, + ...(d.parent_device_id ? { parent_device_id: d.parent_device_id } : {}), + }; + }); + if (area) { const a = area.toLowerCase().trim(); devices = devices.filter((d) => (d.area ?? "").toLowerCase() === a); } @@ -724,7 +802,7 @@

All files / src/mcp/t + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/health.ts.html b/mcp_ha/coverage/src/mcp/tools/health.ts.html new file mode 100644 index 0000000..00a37cf --- /dev/null +++ b/mcp_ha/coverage/src/mcp/tools/health.ts.html @@ -0,0 +1,418 @@ + + + + + + Code coverage report for src/mcp/tools/health.ts + + + + + + + + + +
+
+

All files / src/mcp/tools health.ts

+
+ +
+ 100% + Statements + 41/41 +
+ + +
+ 80.85% + Branches + 38/47 +
+ + +
+ 100% + Functions + 15/15 +
+ + +
+ 100% + Lines + 35/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  +  +  +  +  +  +  +  +2x +2x +  +  +  +  +  +  +  +  +26x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +6x +6x +6x +54x +  +6x +10x +10x +  +18x +  +6x +  +51x +10x +5x +  +  +6x +  +  +51x +51x +51x +  +6x +  +  +  +  +1x +  +  +6x +  +  +51x +18x +18x +12x +12x +  +12x +  +  +  +  +  +  +51x +  +  +  +6x +6x +6x +5x +  +  +  +  +  +  +  +1x +  +  +6x +  +  +  +  +  +  +  +  +  +  + 
import { z } from "zod";
+import type { ToolRegistrar } from "../registry.js";
+import type { ToolContext } from "../../context.js";
+import { safe } from "../helpers.js";
+import { entityReadVisible } from "../../safety.js";
+import { log } from "../../logger.js";
+ 
+/** Per-section cap so a sick instance still answers compactly. */
+const SECTION_CAP = 30;
+const REPAIRS_CAP = 20;
+ 
+/**
+ * Instance health report (#107): the "house doctor" reflex. Pure read,
+ * every signal is already in the live catalog or one WS call away. The
+ * response qualifies (age, thresholds used) instead of judging: seasonal
+ * sensors and winter automations are not defects.
+ */
+export function registerHealthTools(server: ToolRegistrar, ctx: ToolContext): void {
+  server.registerTool(
+    "ha_get_health",
+    {
+      title: "Instance health report",
+      description:
+        "One-call health summary: Home Assistant's own repair issues, entities unavailable or unknown " +
+        "(with age), low batteries, enabled automations that have not fired for a long time, and " +
+        "entities without an area. Use the health-report prompt for a guided reading.",
+      inputSchema: {
+        battery_threshold: z.number().min(1).max(99).optional().describe("Percent, default 20"),
+        stale_days: z.number().min(1).max(365).optional().describe("Automation staleness, default 30 days"),
+      },
+      annotations: { readOnlyHint: true },
+    },
+    safe("ha_get_health", async ({ battery_threshold, stale_days }) => {
+      const batteryMax = battery_threshold ?? 20;
+      const staleMs = (stale_days ?? 30) * 86_400_000;
+      const now = Date.now();
+      const all = (await ctx.catalog.index()).filter((e) => entityReadVisible(ctx.cfg, e.entity_id));
+ 
+      const ageDays = (iso: string): number | null => {
+        const t = Date.parse(iso);
+        return Number.isFinite(t) ? Math.floor((now - t) / 86_400_000) : null;
+      };
+      const capped = <T>(items: T[]): { items: T[]; total: number } => ({ items: items.slice(0, SECTION_CAP), total: items.length });
+ 
+      const unavailable = capped(
+        all
+          .filter((e) => e.state === "unavailable" || e.state === "unknown")
+          .map((e) => ({ entity_id: e.entity_id, state: e.state, since: e.last_changed, days: ageDays(e.last_changed) }))
+          .sort((a, b) => (b.days ?? 0) - (a.days ?? 0))
+      );
+ 
+      const lowBatteries = capped(
+        all
+          .filter((e) => {
+            const cls = e.attributes.device_class;
+            const level = cls === "battery" ? Number(e.state) : Number(e.attributes.battery_level);
+            return Number.isFinite(level) && level <= batteryMax;
+          })
+          .map((e) => ({
+            entity_id: e.entity_id,
+            name: e.name,
+            level: e.attributes.device_class === "battery" ? Number(e.state) : Number(e.attributes.battery_level),
+          }))
+          .sort((a, b) => a.level - b.level)
+      );
+ 
+      const staleAutomations = capped(
+        all
+          .filter((e) => {
+            if (e.domain !== "automation" || e.state !== "on") return false;
+            const last = e.attributes.last_triggered;
+            if (last === null || last === undefined) return true;
+            const t = Date.parse(String(last));
+            return Number.isFinite(t) ? now - t > staleMs : true;
+          })
+          .map((e) => ({
+            entity_id: e.entity_id,
+            name: e.name,
+            last_triggered: (e.attributes.last_triggered as string | null) ?? null,
+          }))
+      );
+ 
+      const unassigned = all.filter((e) => !e.area && !e.hidden && e.category === null).length;
+ 
+      // Home Assistant's own diagnostics (Repairs). Best source there is;
+      // degrade to [] on cores without the command, like the registries.
+      let repairs: Array<Record<string, unknown>> = [];
+      try {
+        const res: any = await ctx.ws.send("repairs/list_issues", {});
+        repairs = ((res?.issues as any[]) ?? []).slice(0, REPAIRS_CAP).map((i) => ({
+          domain: i.domain,
+          severity: i.severity,
+          issue: i.translation_key ?? i.issue_id,
+          ...(i.created ? { created: i.created } : {}),
+          ...(i.is_fixable !== undefined ? { fixable: Boolean(i.is_fixable) } : {}),
+        }));
+      } catch (e) {
+        log.debug(`repairs/list_issues unavailable: ${e instanceof Error ? e.message : String(e)}`);
+      }
+ 
+      return {
+        repairs: { items: repairs, note: repairs.length === 0 ? "No repair issue reported by Home Assistant (or unsupported core)." : "Straight from Home Assistant's Repairs system." },
+        unavailable,
+        low_batteries: { ...lowBatteries, threshold_percent: batteryMax },
+        stale_automations: { ...staleAutomations, threshold_days: stale_days ?? 30 },
+        unassigned_entities: unassigned,
+        note: "Qualified signals, not verdicts: a seasonal sensor or a winter automation can be legitimately idle.",
+      };
+    })
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/helpers.ts.html b/mcp_ha/coverage/src/mcp/tools/helpers.ts.html new file mode 100644 index 0000000..57560d4 --- /dev/null +++ b/mcp_ha/coverage/src/mcp/tools/helpers.ts.html @@ -0,0 +1,388 @@ + + + + + + Code coverage report for src/mcp/tools/helpers.ts + + + + + + + + + +
+
+

All files / src/mcp/tools helpers.ts

+
+ +
+ 100% + Statements + 26/26 +
+ + +
+ 85% + Branches + 17/20 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 24/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 +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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +28x +  +28x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +4x +  +2x +1x +1x +  +  +  +  +  +  +28x +  +  +  +  +  +  +  +  +  +  +  +  +4x +4x +1x +  +3x +3x +1x +1x +  +  +  +2x +2x +1x +  +  +  +  +1x +1x +1x +  +  +  + 
import { z } from "zod";
+import type { ToolRegistrar } from "../registry.js";
+import type { ToolContext } from "../../context.js";
+import { safe } from "../helpers.js";
+import { entityWriteAllowedFor } from "../../safety.js";
+import { audit } from "../../logger.js";
+ 
+/**
+ * Helper creation and deletion (#94, tier 1). Helpers (input_*, counter,
+ * timer) are pure state containers with NO behaviour: creating one cannot
+ * make the house act. Still write-gated (allow_write + token scope) and
+ * audited; deletion additionally honours the entity lists, like every
+ * destructive path.
+ */
+ 
+const HELPER_TYPES = [
+  "input_boolean",
+  "input_number",
+  "input_select",
+  "input_text",
+  "input_datetime",
+  "counter",
+  "timer",
+] as const;
+type HelperType = (typeof HELPER_TYPES)[number];
+ 
+/** Option keys the WS message wires internally; never forwarded. */
+const RESERVED_KEYS = new Set(["type", "id"]);
+ 
+export function registerHelperTools(server: ToolRegistrar, ctx: ToolContext): void {
+  // Gated by allow_write and by the token scope (#85).
+  const client = (): string => ctx.client ?? "default";
+ 
+  server.registerTool(
+    "ha_create_helper",
+    {
+      title: "Create a helper",
+      description:
+        "Creates a Home Assistant helper: a pure state container with no behaviour (a boolean flag, " +
+        "a counter, a dropdown...). Useful keys in options per type: input_number min/max/step/unit_of_measurement, " +
+        "input_select options (list of strings), input_text min/max/pattern, input_datetime has_date/has_time, " +
+        "counter initial/minimum/maximum/step, timer duration ('HH:MM:SS'). All are optional except " +
+        "input_number min/max and input_select options, which Home Assistant requires.",
+      inputSchema: {
+        helper_type: z.enum(HELPER_TYPES).describe("E.g. input_boolean for a flag, counter for a tally"),
+        name: z.string().min(1).describe("Display name, e.g. 'Vacation mode'"),
+        options: z.record(z.string(), z.unknown()).optional().describe("Type-specific settings, passed to Home Assistant as-is"),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
+    },
+    safe("ha_create_helper", async ({ helper_type, name, options }) => {
+      const payload: Record<string, unknown> = { name };
+      for (const [k, v] of Object.entries(options ?? {})) {
+        if (!RESERVED_KEYS.has(k)) payload[k] = v;
+      }
+      const created: any = await ctx.ws.send(`config/${helper_type}/create`, payload);
+      audit({ client: client(), tool: "ha_create_helper", helper_type, name, allowed: true });
+      return {
+        created: { helper_type, id: created?.id ?? null, name: created?.name ?? name },
+        note: "The new entity appears within a second; find its entity_id with ha_search_entities on the name.",
+      };
+    })
+  );
+ 
+  server.registerTool(
+    "ha_delete_helper",
+    {
+      title: "Delete a helper",
+      description:
+        "Deletes a UI-managed helper by its entity_id (e.g. input_boolean.vacation_mode). " +
+        "Helpers defined in YAML cannot be deleted this way. Subject to the entity allow/deny lists.",
+      inputSchema: {
+        entity_id: z.string().describe("E.g. counter.coffee_count"),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
+    },
+    safe("ha_delete_helper", async ({ entity_id }) => {
+      const helperType = entity_id.split(".")[0] as HelperType;
+      if (!HELPER_TYPES.includes(helperType)) {
+        throw new Error(`expected a helper entity_id (${HELPER_TYPES.join(", ")}), got: ${entity_id}`);
+      }
+      const verdict = entityWriteAllowedFor(ctx, entity_id);
+      if (!verdict.allowed) {
+        audit({ client: client(), tool: "ha_delete_helper", entity_id, allowed: false, reason: verdict.reason });
+        throw new Error(verdict.reason);
+      }
+      // The collection id survives entity renames while the entity_id suffix
+      // does not: resolve it through the registry instead of guessing.
+      const entry: any = await ctx.ws.send("config/entity_registry/get", { entity_id });
+      if (!entry?.unique_id || entry?.platform !== helperType) {
+        throw new Error(
+          `${entity_id} is not a UI-managed ${helperType} helper (platform: ${entry?.platform ?? "unknown"}). ` +
+            "YAML-defined helpers must be removed from the YAML."
+        );
+      }
+      await ctx.ws.send(`config/${helperType}/delete`, { [`${helperType}_id`]: entry.unique_id });
+      audit({ client: client(), tool: "ha_delete_helper", entity_id, allowed: true });
+      return { deleted: entity_id };
+    })
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/history.ts.html b/mcp_ha/coverage/src/mcp/tools/history.ts.html index 79e5b92..b90c577 100644 --- a/mcp_ha/coverage/src/mcp/tools/history.ts.html +++ b/mcp_ha/coverage/src/mcp/tools/history.ts.html @@ -23,30 +23,30 @@

All files / src/mcp/t
- 93.75% + 96% Statements - 45/48 + 72/75
- 73.46% + 78.31% Branches - 36/49 + 65/83
100% Functions - 11/11 + 15/15
- 97.36% + 98.36% Lines - 37/38 + 60/61
@@ -221,7 +221,53 @@

All files / src/mcp/t 156 157 158 -159  +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        @@ -235,19 +281,20 @@

All files / src/mcp/t       +4x 2x -1x -1200x -1x -1x -1x +1500x +2x +2x +2x +            +35x   -9x       @@ -264,11 +311,15 @@

All files / src/mcp/t       +  +  +6x +6x +8x +  +4x 4x -1x   -3x -3x       @@ -279,19 +330,29 @@

All files / src/mcp/t       +3x +3x     -2x -1202x +  +4x +1512x       4x 4x   +3x +2x +  +1x +2x +1x     -9x +  +35x       @@ -336,7 +397,10 @@

All files / src/mcp/t       -9x +35x +  +  +        @@ -352,22 +416,50 @@

All files / src/mcp/t       +6x 1x +  +5x     +5x +5x +5x +  +  +  +5x +5x +4x +4x +4x +  +79x +  +  +4x +3x 1x +  +  +  +3x +64x +3x 1x -1x -1x -250x -100x     +4x +251x +101x         -1x +  +  +6x +        @@ -380,7 +472,7 @@

All files / src/mcp/t      
import { z } from "zod";
-import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
+import type { ToolRegistrar } from "../registry.js";
 import type { ToolContext } from "../../context.js";
 import { safe, timeWindow, toIso } from "../helpers.js";
 import { entityReadVisible } from "../../safety.js";
@@ -404,17 +496,20 @@ 

All files / src/mcp/t }; }   -export function registerHistoryTools(server: McpServer, ctx: ToolContext): void { +export function registerHistoryTools(server: ToolRegistrar, ctx: ToolContext): void { server.registerTool( "ha_get_history", { title: "Entity history", description: - "State changes of one entity over a time window (default 24 h, max 7 days). " + + "State changes of one entity, or up to 5 at once to compare them, over a time window " + + "(default 24 h, max 7 days). The response budget is shared between entities. " + "For numeric sensors over long periods prefer ha_get_statistics (aggregates). " + "Window: hours (sliding) or start/end in ISO 8601.", inputSchema: { - entity_id: z.string().describe("E.g. sensor.living_room_temperature"), + entity_id: z + .union([z.string(), z.array(z.string()).min(1).max(5)]) + .describe("E.g. sensor.living_room_temperature, or a list of up to 5 to compare"), hours: z.number().min(0.25).max(168).optional().describe("Sliding window in hours, default 24"), start: z.string().optional().describe("ISO 8601 start"), end: z.string().optional().describe("ISO 8601 end, default now"), @@ -422,30 +517,42 @@

All files / src/mcp/t annotations: { readOnlyHint: true }, }, safe("ha_get_history", async ({ entity_id, hours, start, end }) => { - if (!entityReadVisible(ctx.cfg, entity_id)) { - throw new Error(`entity ${entity_id} is not accessible (filter_reads)`); + const ids = [...new Set(Array.isArray(entity_id) ? entity_id : [entity_id])]; + for (const id of ids) { + if (!entityReadVisible(ctx.cfg, id)) throw new Error(`entity ${id} is not accessible (filter_reads)`); } const w = timeWindow({ start, end, hours }, 24, 168); const res: Record<string, any[]> = await ctx.ws.send("history/history_during_period", { start_time: w.start, end_time: w.end, - entity_ids: [entity_id], + entity_ids: ids, minimal_response: true, no_attributes: true, // Explicit (audit C10): the first point is the state already in // effect at window start, documented in the tool reference. include_start_time_state: true, }); - // The WebSocket answers in a compressed format: s = state, lu = - // last_updated in epoch seconds. Normalize while accepting the long - // format too. - const raw = res?.[entity_id] ?? []; - const points = raw.map((r) => ({ - t: toIso(r.lu ?? r.last_updated ?? r.last_changed), - state: r.s ?? r.state, - })); - const { rows, note } = downsample(points, MAX_POINTS); - return { entity_id, from: w.start, to: w.end, count: points.length, points: rows, ...(note ? { note } : {}) }; + // The point budget is shared: comparing 5 entities gives 50 points + // each, so a multi-entity answer stays under the global size cap (#88). + const perEntity = Math.floor(MAX_POINTS / ids.length); + const seriesOf = (id: string) => { + // The WebSocket answers in a compressed format: s = state, lu = + // last_updated in epoch seconds. Normalize while accepting the long + // format too. + const raw = res?.[id] ?? []; + const points = raw.map((r) => ({ + t: toIso(r.lu ?? r.last_updated ?? r.last_changed), + state: r.s ?? r.state, + })); + const { rows, note } = downsample(points, perEntity); + return { count: points.length, points: rows, ...(note ? { note } : {}) }; + }; + if (!Array.isArray(entity_id)) { + return { entity_id, from: w.start, to: w.end, ...seriesOf(entity_id) }; + } + const series: Record<string, unknown> = {}; + for (const id of ids) series[id] = seriesOf(id); + return { from: w.start, to: w.end, series }; }) );   @@ -500,22 +607,52 @@

All files / src/mcp/t title: "Logbook events", description: "Human-readable logbook events (who did what, when) over a time window " + - "(default 24 h, max 7 days), filterable by entity. Useful to answer 'what happened?'.", + "(default 24 h, max 7 days), filterable by one entity, or by a whole area or floor " + + "('what happened in the kitchen tonight?'). Useful to answer 'what happened?'.", inputSchema: { entity_id: z.string().optional().describe("Restrict to one entity"), + area: z.string().optional().describe("Area name (case insensitive): events of every visible entity in it"), + floor: z.string().optional().describe("Floor name: events of every visible entity on it"), hours: z.number().min(0.25).max(168).optional().describe("Sliding window in hours, default 24"), start: z.string().optional(), end: z.string().optional(), }, annotations: { readOnlyHint: true }, }, - safe("ha_get_logbook", async ({ entity_id, hours, start, end }) => { + safe("ha_get_logbook", async ({ entity_id, area, floor, hours, start, end }) => { + if ([entity_id, area, floor].filter(Boolean).length > 1) { + throw new Error("pick ONE of entity_id, area or floor"); + } Iif (entity_id && !entityReadVisible(ctx.cfg, entity_id)) { throw new Error(`entity ${entity_id} is not accessible (filter_reads)`); } const w = timeWindow({ start, end, hours }, 24, 168); const payload: Record<string, unknown> = { start_time: w.start, end_time: w.end }; Iif (entity_id) payload.entity_ids = [entity_id]; + // Whole-room and whole-floor scopes (#194, the 2026.9 Sources panel + // spirit): resolved through the catalog into explicit entity ids, so + // filter_reads applies before anything reaches HA. + let scopeNote: string | null = null; + if (area || floor) { + const wanted = (area ?? floor)!.toLowerCase().trim(); + const index = await ctx.catalog.index(); + const matches = index.filter( + (e) => + entityReadVisible(ctx.cfg, e.entity_id) && + ((area ? e.area : e.floor) ?? "").toLowerCase() === wanted + ); + if (matches.length === 0) { + const known = [...new Set(index.map((e) => (area ? e.area : e.floor)).filter(Boolean) as string[])].sort(); + throw new Error( + `no visible entity in ${area ? "area" : "floor"} "${area ?? floor}". Known ${area ? "areas" : "floors"}: ${known.slice(0, 30).join(", ") || "(none)"}` + ); + } + const AREA_ENTITY_CAP = 60; + payload.entity_ids = matches.slice(0, AREA_ENTITY_CAP).map((e) => e.entity_id); + if (matches.length > AREA_ENTITY_CAP) { + scopeNote = `${matches.length} entities there, the first ${AREA_ENTITY_CAP} were queried; narrow with entity_id for the rest.`; + } + } const raw: any[] = (await ctx.ws.send("logbook/get_events", payload)) ?? []; const visible = raw.filter((r) => !r.entity_id || entityReadVisible(ctx.cfg, r.entity_id)); const events = visible.slice(-MAX_LOGBOOK).map((r) => ({ @@ -532,7 +669,8 @@

All files / src/mcp/t events, ...(visible.length > MAX_LOGBOOK ? { note: `${visible.length} events, only the last ${MAX_LOGBOOK} are returned. Narrow the window or filter by entity.` } - : {}), + : {}), + ...(scopeNote ? { scope_note: scopeNote } : {}), }; }) ); @@ -544,7 +682,7 @@

All files / src/mcp/t + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/presence.ts.html b/mcp_ha/coverage/src/mcp/tools/presence.ts.html new file mode 100644 index 0000000..c23b623 --- /dev/null +++ b/mcp_ha/coverage/src/mcp/tools/presence.ts.html @@ -0,0 +1,283 @@ + + + + + + Code coverage report for src/mcp/tools/presence.ts + + + + + + + + + +
+
+

All files / src/mcp/tools presence.ts

+
+ +
+ 94.73% + Statements + 18/19 +
+ + +
+ 62.5% + Branches + 10/16 +
+ + +
+ 100% + Functions + 8/8 +
+ + +
+ 94.11% + Lines + 16/17 +
+ + +
+

+ 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  +  +  +  +  +  +  +  +  +  +  +  +  +25x +  +  +  +  +  +  +  +  +  +  +  +  +4x +4x +20x +7x +4x +20x +8x +  +4x +  +  +  +4x +5x +4x +  +  +  +  +  +  +  +3x +3x +8x +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  + 
import { z } from "zod";
+import type { ToolRegistrar } from "../registry.js";
+import type { ToolContext } from "../../context.js";
+import { safe, timeWindow, toIso } from "../helpers.js";
+import { entityReadVisible } from "../../safety.js";
+ 
+/**
+ * Presence summary (#112). Privacy frames the design as much as the tech:
+ * the answers speak in NAMED ZONES only, never coordinates. Latitude,
+ * longitude and tracker sources are never read; person entities aggregate
+ * their trackers already, so device_tracker.* stays out entirely.
+ */
+export function registerPresenceTools(server: ToolRegistrar, ctx: ToolContext): void {
+  server.registerTool(
+    "ha_get_presence",
+    {
+      title: "Presence summary",
+      description:
+        "Who is home, in which zone, since when, plus a compact timeline of zone changes over the window " +
+        "(default 24 h, max 7 days). Zone names only, never coordinates.",
+      inputSchema: {
+        hours: z.number().min(1).max(168).optional().describe("Timeline window in hours, default 24"),
+      },
+      annotations: { readOnlyHint: true },
+    },
+    safe("ha_get_presence", async ({ hours }) => {
+      const all = await ctx.catalog.index();
+      const people = all
+        .filter((e) => e.domain === "person" && entityReadVisible(ctx.cfg, e.entity_id))
+        .map((e) => ({ entity_id: e.entity_id, name: e.name, zone: e.state, since: e.last_changed }));
+      const zones = all
+        .filter((e) => e.domain === "zone" && entityReadVisible(ctx.cfg, e.entity_id))
+        .map((e) => ({ entity_id: e.entity_id, name: e.name, persons: Number(e.state) || 0 }));
+ 
+      Iif (people.length === 0) {
+        return { people: [], zones, note: "No visible person entity. Presence needs person entities in Home Assistant." };
+      }
+ 
+      const w = timeWindow({ hours }, 24, 168);
+      const ids = people.map((p) => p.entity_id);
+      const res: Record<string, any[]> = await ctx.ws.send("history/history_during_period", {
+        start_time: w.start,
+        end_time: w.end,
+        entity_ids: ids,
+        minimal_response: true,
+        no_attributes: true,
+        include_start_time_state: true,
+      });
+      const timeline: Record<string, Array<{ t: string | null; zone: string }>> = {};
+      for (const id of ids) {
+        timeline[id] = (res?.[id] ?? []).map((r) => ({
+          t: toIso(r.lu ?? r.last_updated ?? r.last_changed),
+          zone: String(r.s ?? r.state ?? "unknown"),
+        }));
+      }
+      return {
+        people,
+        zones,
+        from: w.start,
+        to: w.end,
+        timeline,
+        note: "Zone names only; coordinates are never exposed by design.",
+      };
+    })
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/scenes.ts.html b/mcp_ha/coverage/src/mcp/tools/scenes.ts.html new file mode 100644 index 0000000..ed71b85 --- /dev/null +++ b/mcp_ha/coverage/src/mcp/tools/scenes.ts.html @@ -0,0 +1,328 @@ + + + + + + Code coverage report for src/mcp/tools/scenes.ts + + + + + + + + + +
+
+

All files / src/mcp/tools scenes.ts

+
+ +
+ 88.23% + Statements + 15/17 +
+ + +
+ 75% + Branches + 9/12 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 93.33% + Lines + 14/15 +
+ + +
+

+ 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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +26x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +3x +  +3x +4x +4x +1x +1x +  +  +  +2x +1x +  +1x +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  + 
import { z } from "zod";
+import type { ToolRegistrar } from "../registry.js";
+import type { ToolContext } from "../../context.js";
+import { safe } from "../helpers.js";
+import { entityWriteAllowedFor } from "../../safety.js";
+import { guardedServiceCall } from "../writeflow.js";
+import { audit } from "../../logger.js";
+ 
+/**
+ * Scene snapshot (#110): "capture the current living room mood as a scene".
+ * scene.create with snapshot_entities photographs the CURRENT state of the
+ * chosen entities. The scene is volatile by HA design (it lives until the
+ * scenes reload or a restart); persistent creation would be a config write
+ * and stays out of this tool on purpose.
+ */
+ 
+/** Mirrors HA's slugify closely enough for a scene entity object id. */
+function slugify(name: string): string {
+  return name
+    .normalize("NFD")
+    .replace(/[̀-ͯ]/g, "")
+    .toLowerCase()
+    .replace(/[^a-z0-9]+/g, "_")
+    .replace(/^_+|_+$/g, "");
+}
+ 
+export function registerSceneTools(server: ToolRegistrar, ctx: ToolContext): void {
+  // Gated by allow_write and by the token scope (#85).
+ 
+  server.registerTool(
+    "ha_snapshot_scene",
+    {
+      title: "Snapshot a scene",
+      description:
+        "Captures the CURRENT state of the given entities as a scene ('capture the living room mood as " +
+        "Movie night'). The scene is volatile: it survives until the scenes reload or Home Assistant " +
+        "restarts. Replay it with ha_call_service scene.turn_on.",
+      inputSchema: {
+        name: z.string().min(1).describe("Scene name, e.g. 'Movie night'"),
+        entities: z.array(z.string()).min(1).max(50).describe("Entities whose current state to capture"),
+        dry_run: z.boolean().optional(),
+        confirm_token: z.string().optional(),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
+    },
+    safe("ha_snapshot_scene", async ({ name, entities, dry_run, confirm_token }) => {
+      const sceneId = slugify(name);
+      Iif (!sceneId) throw new Error("the name must contain at least one alphanumeric character");
+      // The entity lists bound what is capturable: a snapshot reads state.
+      for (const id of entities) {
+        const v = entityWriteAllowedFor(ctx, id);
+        if (!v.allowed) {
+          audit({ client: ctx.client ?? "default", tool: "ha_snapshot_scene", entity_id: id, allowed: false, reason: v.reason });
+          throw new Error(v.reason ?? `entity denied: ${id}`);
+        }
+      }
+      // Creation only, consistent with the config-write doctrine.
+      if ((await ctx.catalog.index()).some((e) => e.entity_id === `scene.${sceneId}`)) {
+        throw new Error(`scene.${sceneId} already exists; pick another name instead of overwriting it.`);
+      }
+      const result = await guardedServiceCall(ctx, {
+        tool: "ha_snapshot_scene",
+        domain: "scene",
+        service: "create",
+        data: { scene_id: sceneId, snapshot_entities: entities },
+        dry_run,
+        confirm_token,
+      });
+      Eif ((result as { success?: boolean }).success) {
+        return {
+          ...result,
+          scene: `scene.${sceneId}`,
+          note:
+            "Volatile by Home Assistant design: it lives until the scenes reload or HA restarts. " +
+            "Replay it with scene.turn_on. Recreate it after a restart if you still need it.",
+        };
+      }
+      return result;
+    })
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/selftest.ts.html b/mcp_ha/coverage/src/mcp/tools/selftest.ts.html new file mode 100644 index 0000000..e737653 --- /dev/null +++ b/mcp_ha/coverage/src/mcp/tools/selftest.ts.html @@ -0,0 +1,337 @@ + + + + + + Code coverage report for src/mcp/tools/selftest.ts + + + + + + + + + +
+
+

All files / src/mcp/tools selftest.ts

+
+ +
+ 90.32% + Statements + 28/31 +
+ + +
+ 81.81% + Branches + 27/33 +
+ + +
+ 85.71% + Functions + 6/7 +
+ + +
+ 92.85% + Lines + 26/28 +
+ + +
+

+ 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  +  +  +  +  +  +2x +2x +2x +  +  +9x +9x +9x +  +  +9x +9x +  +  +8x +  +1x +  +  +  +  +  +  +  +  +  +26x +  +  +  +  +  +  +  +  +  +  +  +5x +5x +5x +5x +5x +  +  +  +5x +2x +2x +  +  +  +  +3x +1x +1x +2x +  +  +  +2x +2x +  +  +5x +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import type { ToolRegistrar } from "../registry.js";
+import type { ToolContext } from "../../context.js";
+import { safe } from "../helpers.js";
+import { VERSION } from "../../config.js";
+ 
+/** Each probe gets this long; a diagnostic must never hang. */
+const PROBE_TIMEOUT_MS = 3_000;
+const WS_SLOW_MS = 1_000;
+const REST_SLOW_MS = 2_000;
+ 
+async function probe(fn: () => Promise<unknown>): Promise<{ ok: boolean; latency_ms: number; error?: string }> {
+  const t0 = Date.now();
+  try {
+    await Promise.race([
+      fn(),
+      new Promise((_, reject) => {
+        const t = setTimeout(() => reject(new Error(`timeout after ${PROBE_TIMEOUT_MS} ms`)), PROBE_TIMEOUT_MS);
+        (t as { unref?: () => void }).unref?.();
+      }),
+    ]);
+    return { ok: true, latency_ms: Date.now() - t0 };
+  } catch (e) {
+    return { ok: false, latency_ms: Date.now() - t0, error: e instanceof Error ? e.message : String(e) };
+  }
+}
+ 
+/**
+ * Self test (#144): ha_get_health looks at the house, this looks at the
+ * add-on. No data from the home in the answer, by design: the output is
+ * safe to paste into a GitHub issue when asking for support.
+ */
+export function registerSelfTestTools(server: ToolRegistrar, ctx: ToolContext): void {
+  server.registerTool(
+    "ha_get_self_test",
+    {
+      title: "Add-on self test",
+      description:
+        "Diagnoses the add-on itself: WebSocket and REST connectivity with latencies, live state map " +
+        "status, Supervisor availability, and an overall verdict. Contains no data from your home; " +
+        "safe to paste into a support issue.",
+      inputSchema: {},
+      annotations: { readOnlyHint: true },
+    },
+    safe("ha_get_self_test", async () => {
+      const wsConnected = ctx.ws.connected;
+      const ws = wsConnected ? await probe(() => ctx.ws.send("get_config")) : { ok: false, latency_ms: 0, error: "not connected" };
+      const rest = await probe(() => ctx.http.coreGet("/config"));
+      const liveActive = ctx.catalog.liveActive;
+      const supervisor = ctx.http.supervisorAvailable;
+ 
+      let verdict: "ok" | "degraded" | "broken";
+      let reason: string;
+      if (!wsConnected || !ws.ok || !rest.ok) {
+        verdict = "broken";
+        reason = !wsConnected
+          ? "the WebSocket to Home Assistant is down"
+          : !ws.ok
+            ? `the WebSocket does not answer (${ws.error ?? "unknown"})`
+            : `the REST API does not answer (${rest.error ?? "unknown"})`;
+      } else if (!liveActive) {
+        verdict = "degraded";
+        reason = "the live state map is inactive, states are served through the short-TTL fallback";
+      } else Iif (ws.latency_ms > WS_SLOW_MS || rest.latency_ms > REST_SLOW_MS) {
+        verdict = "degraded";
+        reason = `slow answers (ws ${ws.latency_ms} ms, rest ${rest.latency_ms} ms)`;
+      } else {
+        verdict = "ok";
+        reason = "everything answers within normal bounds";
+      }
+ 
+      return {
+        verdict,
+        reason,
+        version: VERSION,
+        uptime_seconds: Math.round(process.uptime()),
+        websocket: { connected: wsConnected, ...(wsConnected ? { latency_ms: ws.latency_ms } : {}), ...(ws.error ? { error: ws.error } : {}) },
+        rest: { ok: rest.ok, latency_ms: rest.latency_ms, ...(rest.error ? { error: rest.error } : {}) },
+        live_state_map: liveActive ? "active" : "ttl-fallback",
+        supervisor: supervisor ? "available" : "unavailable (dev mode, HA_URL)",
+        note: "Infrastructure diagnostic only, no data from your home: safe to paste into a GitHub issue.",
+      };
+    })
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/services.ts.html b/mcp_ha/coverage/src/mcp/tools/services.ts.html index b4e52db..7c806b2 100644 --- a/mcp_ha/coverage/src/mcp/tools/services.ts.html +++ b/mcp_ha/coverage/src/mcp/tools/services.ts.html @@ -23,30 +23,30 @@

All files / src/mcp/t
- 93.84% + 96.15% Statements - 61/65 + 25/26
- 72.58% + 64% Branches - 45/62 + 16/25
100% Functions - 9/9 + 7/7
100% Lines - 51/51 + 22/22
@@ -187,46 +187,7 @@

All files / src/mcp/t 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  -  +125        @@ -245,7 +206,7 @@

All files / src/mcp/t       -16x +44x       @@ -303,14 +264,9 @@

All files / src/mcp/t       -16x -  -10x -  -  -      +44x       @@ -333,66 +289,33 @@

All files / src/mcp/t       -9x -9x -9x -5x -5x     -9x -9x     -8x -8x -16x -10x   -8x -9x   -9x -6x -6x       -  -5x -9x -1x +21x     -4x -1x -1x             -3x -3x -3x -3x -  -3x -3x -3x -  -           
import { z } from "zod";
-import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
+import type { ToolRegistrar } from "../registry.js";
 import type { ToolContext } from "../../context.js";
 import { listEnvelope, safe, trunc } from "../helpers.js";
-import { entityWriteAllowed, serviceAllowed } from "../../safety.js";
-import { audit } from "../../logger.js";
+import { guardedServiceCall } from "../writeflow.js";
 import { parseHaPayload, servicesSchema } from "../../ha/schemas.js";
  
 function fieldSummary(fields: Record<string, any> | undefined) {
@@ -406,7 +329,7 @@ 

All files / src/mcp/t })); }   -export function registerServiceTools(server: McpServer, ctx: ToolContext): void { +export function registerServiceTools(server: ToolRegistrar, ctx: ToolContext): void { server.registerTool( "ha_list_services", { @@ -463,9 +386,9 @@

All files / src/mcp/t }) );   - // Write tool: only registered when allow_write is enabled. Invisible - // otherwise, that is the first layer of defense. - if (!ctx.cfg.allowWrite) return; + // Write tool: only registered when allow_write is enabled AND the + // authenticated token has the write scope (#85). Invisible otherwise, + // that is the first layer of defense.   server.registerTool( "ha_call_service", @@ -475,7 +398,10 @@

All files / src/mcp/t "Calls a Home Assistant service (e.g. light.turn_on on light.kitchen). " + "Check the service with ha_list_services and the entity with ha_search_entities first. " + "Use dry_run: true to preview the call without executing it. " + - "Subject to the allow/deny lists configured in the add-on.", + "Subject to the allow/deny lists configured in the add-on. Sensitive domains " + + "(confirm_domains option, locks and alarms by default) answer with a confirm_token " + + "on the first call: show the preview to the user, then call again with the same " + + "arguments plus confirm_token to execute.", inputSchema: { domain: z.string().describe("Service domain, e.g. light"), service: z.string().describe("Service name, e.g. turn_on"), @@ -490,63 +416,23 @@

All files / src/mcp/t // zod 4: z.record requires both the key and the value schema. data: z.record(z.string(), z.any()).optional().describe("Service data, e.g. { brightness_pct: 50 }"), dry_run: z.boolean().optional().describe("true: preview without executing"), + confirm_token: z.string().optional().describe("Token from a previous confirmation_required answer (sensitive domains)"), return_response: z.boolean().optional().describe("true when the service returns data (e.g. weather.get_forecasts)"), }, annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true }, }, - safe("ha_call_service", async ({ domain, service, target, data, dry_run, return_response }) => { - const dom = domain.toLowerCase().trim(); - const svc = service.toLowerCase().trim(); - const deny = (reason: string) => { - audit({ tool: "ha_call_service", domain: dom, service: svc, target, allowed: false, reason }); - throw new Error(`call refused: ${reason}`); - }; -  - const sv = serviceAllowed(ctx.cfg, dom, svc); - if (!sv.allowed) deny(sv.reason ?? "service denied"); -  - // Explicitly targeted entities (target, plus data just in case). - const ids: string[] = []; - const collect = (v: unknown) => { - if (typeof v === "string") ids.push(v); - else Iif (Array.isArray(v)) for (const x of v) if (typeof x === "string") ids.push(x); - }; - collect(target?.entity_id); - collect((data as Record<string, unknown> | undefined)?.entity_id); -  - for (const id of ids) { - const v = entityWriteAllowed(ctx.cfg, id); - if (!v.allowed) deny(v.reason ?? `entity denied: ${id}`); - } -  - // Targeting by area or device would bypass the entity lists: refuse it - // as soon as any entity restriction is configured. - const hasRestrictions = ctx.cfg.entityAllowlist.length > 0 || ctx.cfg.entityDenylist.length > 0; - if (hasRestrictions && (target?.area_id || target?.device_id)) { - deny("entity restrictions are configured, target explicit entity_id values instead of area_id or device_id"); - } -  - if (dry_run) { - audit({ tool: "ha_call_service", domain: dom, service: svc, target, data, dry_run: true, allowed: true }); - return { - dry_run: true, - would_call: { domain: dom, service: svc, target: target ?? null, data: data ?? null }, - note: "Nothing was executed. Call again without dry_run to execute.", - }; - } -  - const payload: Record<string, unknown> = { domain: dom, service: svc }; - Eif (target) payload.target = target; - if (data) payload.service_data = data; - if (return_response) payload.return_response = true; -  - const result = await ctx.ws.send("call_service", payload); - audit({ tool: "ha_call_service", domain: dom, service: svc, target, data, allowed: true, result: "ok" }); - return { - success: true, - ...(result?.response !== undefined ? { response: result.response } : {}), - }; - }) + safe("ha_call_service", async ({ domain, service, target, data, dry_run, confirm_token, return_response }) => + guardedServiceCall(ctx, { + tool: "ha_call_service", + domain, + service, + target, + data, + dry_run, + confirm_token, + return_response, + }) + ) ); }  

@@ -556,7 +442,7 @@

All files / src/mcp/t + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/tools/writes.ts.html b/mcp_ha/coverage/src/mcp/tools/writes.ts.html new file mode 100644 index 0000000..dc77aa1 --- /dev/null +++ b/mcp_ha/coverage/src/mcp/tools/writes.ts.html @@ -0,0 +1,409 @@ + + + + + + Code coverage report for src/mcp/tools/writes.ts + + + + + + + + + +
+
+

All files / src/mcp/tools writes.ts

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 8/8 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ 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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +35x +11x +2x +  +  +  +35x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +6x +6x +  +  +  +  +  +  +  +  +  +  +  +35x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +3x +  +  +  +  +  +  +  +  +  +  +  +35x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +2x +  +  +  +  +  +  +  +  +  +  + 
import { z } from "zod";
+import type { ToolRegistrar } from "../registry.js";
+import type { ToolContext } from "../../context.js";
+import { safe } from "../helpers.js";
+import { guardedServiceCall } from "../writeflow.js";
+ 
+/**
+ * Dedicated write tools (v0.2, issue #15): safer and more legible for the
+ * LLM than a raw ha_call_service, with constrained parameters. They all go
+ * through the exact same guarded write path (lists, dry run, two-step
+ * confirmation, audit). Only registered when allow_write is enabled.
+ */
+export function registerWriteTools(server: ToolRegistrar, ctx: ToolContext): void {
+  // Gated by allow_write and by the token scope (#85).
+ 
+  const requireDomain = (entityId: string, domain: string): void => {
+    if (!entityId.startsWith(`${domain}.`)) {
+      throw new Error(`expected a ${domain}.* entity_id, got: ${entityId}`);
+    }
+  };
+ 
+  server.registerTool(
+    "ha_run_script",
+    {
+      title: "Run a script",
+      description:
+        "Runs a Home Assistant script, optionally with variables. Find scripts with ha_list_scripts. " +
+        "Use dry_run: true to preview without executing. Subject to the configured allow/deny lists.",
+      inputSchema: {
+        entity_id: z.string().describe("E.g. script.wake_up"),
+        variables: z.record(z.string(), z.any()).optional().describe("Variables passed to the script"),
+        dry_run: z.boolean().optional().describe("true: preview without executing"),
+        confirm_token: z.string().optional().describe("Token from a previous confirmation_required answer"),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
+    },
+    safe("ha_run_script", async ({ entity_id, variables, dry_run, confirm_token }) => {
+      requireDomain(entity_id, "script");
+      return guardedServiceCall(ctx, {
+        tool: "ha_run_script",
+        domain: "script",
+        service: "turn_on",
+        target: { entity_id },
+        data: variables ? { variables } : undefined,
+        dry_run,
+        confirm_token,
+      });
+    })
+  );
+ 
+  server.registerTool(
+    "ha_trigger_automation",
+    {
+      title: "Trigger an automation",
+      description:
+        "Triggers a Home Assistant automation now. By default its conditions are skipped " +
+        "(skip_condition: true), pass false to honour them. Find automations with ha_list_automations. " +
+        "Use dry_run: true to preview without executing.",
+      inputSchema: {
+        entity_id: z.string().describe("E.g. automation.night_heating"),
+        skip_condition: z.boolean().optional().describe("Default true: run the actions even if conditions do not hold"),
+        dry_run: z.boolean().optional().describe("true: preview without executing"),
+        confirm_token: z.string().optional().describe("Token from a previous confirmation_required answer"),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: true, openWorldHint: true },
+    },
+    safe("ha_trigger_automation", async ({ entity_id, skip_condition, dry_run, confirm_token }) => {
+      requireDomain(entity_id, "automation");
+      return guardedServiceCall(ctx, {
+        tool: "ha_trigger_automation",
+        domain: "automation",
+        service: "trigger",
+        target: { entity_id },
+        data: { skip_condition: skip_condition ?? true },
+        dry_run,
+        confirm_token,
+      });
+    })
+  );
+ 
+  server.registerTool(
+    "ha_set_automation",
+    {
+      title: "Enable or disable an automation",
+      description:
+        "Enables or disables a Home Assistant automation. Find automations with ha_list_automations. " +
+        "Use dry_run: true to preview without executing.",
+      inputSchema: {
+        entity_id: z.string().describe("E.g. automation.night_heating"),
+        enabled: z.boolean().describe("true to enable, false to disable"),
+        dry_run: z.boolean().optional().describe("true: preview without executing"),
+        confirm_token: z.string().optional().describe("Token from a previous confirmation_required answer"),
+      },
+      annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
+    },
+    safe("ha_set_automation", async ({ entity_id, enabled, dry_run, confirm_token }) => {
+      requireDomain(entity_id, "automation");
+      return guardedServiceCall(ctx, {
+        tool: "ha_set_automation",
+        domain: "automation",
+        service: enabled ? "turn_on" : "turn_off",
+        target: { entity_id },
+        dry_run,
+        confirm_token,
+      });
+    })
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/mcp/writeflow.ts.html b/mcp_ha/coverage/src/mcp/writeflow.ts.html new file mode 100644 index 0000000..80854b0 --- /dev/null +++ b/mcp_ha/coverage/src/mcp/writeflow.ts.html @@ -0,0 +1,463 @@ + + + + + + Code coverage report for src/mcp/writeflow.ts + + + + + + + + + +
+
+

All files / src/mcp writeflow.ts

+
+ +
+ 94.54% + Statements + 52/55 +
+ + +
+ 87.71% + Branches + 50/57 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 44/44 +
+ + +
+

+ 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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +65x +65x +65x +65x +  +65x +10x +10x +  +  +65x +65x +  +  +63x +63x +126x +84x +  +63x +65x +  +65x +42x +42x +  +  +  +  +  +59x +  +  +  +65x +1x +  +  +58x +  +65x +17x +17x +  +  +  +  +  +  +  +  +  +  +41x +11x +11x +7x +  +  +  +  +  +7x +6x +5x +5x +5x +  +  +  +  +  +  +  +  +  +1x +  +4x +4x +  +  +  +33x +33x +33x +33x +  +33x +33x +33x +  +  +  +  + 
import { audit } from "../logger.js";
+import { entityWriteAllowedFor, needsConfirmation, serviceAllowed } from "../safety.js";
+import { CONFIRM_TTL_SECONDS, ConfirmationStore } from "../confirm.js";
+import type { ToolContext } from "../context.js";
+ 
+export interface WriteTarget {
+  entity_id?: string | string[] | undefined;
+  device_id?: string | string[] | undefined;
+  area_id?: string | string[] | undefined;
+}
+ 
+export interface WriteRequest {
+  /** Tool name, for the audit trail. */
+  tool: string;
+  domain: string;
+  service: string;
+  target?: WriteTarget | undefined;
+  data?: Record<string, unknown> | undefined;
+  dry_run?: boolean | undefined;
+  confirm_token?: string | undefined;
+  return_response?: boolean | undefined;
+}
+ 
+/**
+ * The single write path shared by every write tool (v0.2, issue #15): the
+ * service denylist, the entity allow/deny lists, the area/device bypass
+ * guard, the dry run preview, the two-step confirmation for sensitive
+ * domains and the audit trail all live here exactly once, so the four write
+ * tools can never diverge on safety (audit B12 lesson).
+ */
+export async function guardedServiceCall(ctx: ToolContext, req: WriteRequest): Promise<Record<string, unknown>> {
+  const dom = req.domain.toLowerCase().trim();
+  const svc = req.service.toLowerCase().trim();
+  const { cfg } = ctx;
+  const client = ctx.client ?? "default";
+ 
+  const deny = (reason: string): never => {
+    audit({ client, tool: req.tool, domain: dom, service: svc, target: req.target, allowed: false, reason });
+    throw new Error(`call refused: ${reason}`);
+  };
+ 
+  const sv = serviceAllowed(cfg, dom, svc);
+  if (!sv.allowed) deny(sv.reason ?? "service denied");
+ 
+  // Explicitly targeted entities (target, plus data just in case).
+  const ids: string[] = [];
+  const collect = (v: unknown): void => {
+    if (typeof v === "string") ids.push(v);
+    else Iif (Array.isArray(v)) for (const x of v) if (typeof x === "string") ids.push(x);
+  };
+  collect(req.target?.entity_id);
+  collect(req.data?.entity_id);
+ 
+  for (const id of ids) {
+    const v = entityWriteAllowedFor(ctx, id);
+    if (!v.allowed) deny(v.reason ?? `entity denied: ${id}`);
+  }
+ 
+  // Targeting by area or device would bypass the entity lists: refuse it as
+  // soon as any entity restriction is configured.
+  const hasRestrictions =
+    cfg.entityAllowlist.length > 0 ||
+    cfg.entityDenylist.length > 0 ||
+    (ctx.tokenEntityLists?.allow?.length ?? 0) > 0 ||
+    (ctx.tokenEntityLists?.deny?.length ?? 0) > 0;
+  if (hasRestrictions && (req.target?.area_id || req.target?.device_id)) {
+    deny("entity restrictions are configured, target explicit entity_id values instead of area_id or device_id");
+  }
+ 
+  const wouldCall = { domain: dom, service: svc, target: req.target ?? null, data: req.data ?? null };
+ 
+  if (req.dry_run) {
+    audit({ client, tool: req.tool, domain: dom, service: svc, target: req.target, data: req.data, dry_run: true, allowed: true });
+    return {
+      dry_run: true,
+      would_call: wouldCall,
+      note: "Nothing was executed. Call again without dry_run to execute.",
+    };
+  }
+ 
+  // Two-step confirmation on sensitive domains: the first call returns a
+  // single-use token bound to this exact call; executing requires it. In a
+  // session with an elicitation-capable client (#90), the human is asked
+  // in-protocol instead; the token flow stays the universal fallback.
+  if (needsConfirmation(cfg, dom)) {
+    const hash = ConfirmationStore.fingerprint({ domain: dom, service: svc, target: req.target, data: req.data });
+    if (!req.confirm_token) {
+      const answer = ctx.elicit
+        ? await ctx.elicit(
+            `Sensitive action: ${dom}.${svc} on ${JSON.stringify(req.target ?? {})}` +
+              `${req.data ? ` with ${JSON.stringify(req.data)}` : ""}. Confirm?`
+          )
+        : null;
+      if (answer === false) deny("declined by the user (elicitation)");
+      if (answer === null) {
+        const token = ctx.confirmations.issue(hash);
+        audit({ client, tool: req.tool, domain: dom, service: svc, target: req.target, allowed: true, confirmation_required: true });
+        return {
+          confirmation_required: true,
+          confirm_token: token,
+          expires_in_seconds: CONFIRM_TTL_SECONDS,
+          would_call: wouldCall,
+          note:
+            `The ${dom} domain requires an explicit confirmation. Show this preview to the user, ` +
+            "then call the SAME tool with the SAME arguments plus confirm_token to execute. The token is single use.",
+        };
+      }
+      audit({ client, tool: req.tool, domain: dom, service: svc, target: req.target, allowed: true, confirmed_via: "elicitation" });
+    } else {
+      const verdict = ctx.confirmations.consume(req.confirm_token, hash);
+      if (verdict !== "ok") deny(`confirmation ${verdict} (request a fresh token by calling without confirm_token)`);
+    }
+  }
+ 
+  const payload: Record<string, unknown> = { domain: dom, service: svc };
+  if (req.target) payload.target = req.target;
+  if (req.data) payload.service_data = req.data;
+  if (req.return_response) payload.return_response = true;
+ 
+  const result = await ctx.ws.send("call_service", payload);
+  audit({ client, tool: req.tool, domain: dom, service: svc, target: req.target, data: req.data, allowed: true, result: "ok" });
+  return {
+    success: true,
+    ...(result?.response !== undefined ? { response: result.response } : {}),
+  };
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/rate.ts.html b/mcp_ha/coverage/src/rate.ts.html new file mode 100644 index 0000000..2bb0d09 --- /dev/null +++ b/mcp_ha/coverage/src/rate.ts.html @@ -0,0 +1,181 @@ + + + + + + Code coverage report for src/rate.ts + + + + + + + + + +
+
+

All files / src rate.ts

+
+ +
+ 100% + Statements + 13/13 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 5/5 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ 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  +  +  +  +  +  +4x +  +4x +  +  +  +19x +27x +19x +2x +2x +  +17x +17x +17x +  +  +  +4x +  +  +  +  +13x +  +  + 
/**
+ * Per-target sliding-minute rate limiter, shared by the outbound channels
+ * (#116 notifications, #125 announcements): a looping assistant must not
+ * hammer things that physically disturb people. Process-wide state.
+ */
+export class TargetRateLimiter {
+  private sentAt = new Map<string, number[]>();
+ 
+  constructor(private maxPerMinute: number) {}
+ 
+  /** True when the send is allowed; records it. */
+  allow(target: string): boolean {
+    const now = Date.now();
+    const recent = (this.sentAt.get(target) ?? []).filter((t) => now - t < 60_000);
+    if (recent.length >= this.maxPerMinute) {
+      this.sentAt.set(target, recent);
+      return false;
+    }
+    recent.push(now);
+    this.sentAt.set(target, recent);
+    return true;
+  }
+ 
+  get limit(): number {
+    return this.maxPerMinute;
+  }
+ 
+  /** Test hook. */
+  reset(): void {
+    this.sentAt.clear();
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/mcp_ha/coverage/src/ratelimit.ts.html b/mcp_ha/coverage/src/ratelimit.ts.html index d1698c8..1963d26 100644 --- a/mcp_ha/coverage/src/ratelimit.ts.html +++ b/mcp_ha/coverage/src/ratelimit.ts.html @@ -151,14 +151,14 @@

All files / src ratelim       -11x +28x   -11x +28x       -12x -12x +45x +45x 6x 6x 1x @@ -169,26 +169,26 @@

All files / src ratelim       -52x -52x -52x -52x -52x -52x +54x +54x +54x +54x +54x +54x 29x 29x   -52x -52x +54x +54x         -5x +36x       -52x +54x       @@ -277,7 +277,7 @@

All files / src ratelim + + + + + + \ No newline at end of file diff --git a/mcp_ha/package.json b/mcp_ha/package.json index 045ffa9..61a0954 100644 --- a/mcp_ha/package.json +++ b/mcp_ha/package.json @@ -1,6 +1,6 @@ { "name": "mcp-ha", - "version": "1.5.0", + "version": "1.5.1", "private": true, "type": "module", "description": "Add-on Home Assistant exposant un serveur MCP (Model Context Protocol)", diff --git a/mcp_ha/src/config.ts b/mcp_ha/src/config.ts index 4640fcc..f4cd02f 100644 --- a/mcp_ha/src/config.ts +++ b/mcp_ha/src/config.ts @@ -4,7 +4,7 @@ import { z } from "zod"; import { log, setLogLevel } from "./logger.js"; import { maskSecret } from "./safety.js"; -export const VERSION = "1.5.0"; +export const VERSION = "1.5.1"; const OPTIONS_PATH = "/data/options.json"; const TOKEN_PATH = "/data/token";