From d0c9bff4ca59d9596675084bc23192886fd4dc6c Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 25 Nov 2025 01:38:43 +0100 Subject: [PATCH] Ignore coverage output and document Claude text mode --- .gitignore | 1 + README.md | 5 +- coverage/base.css | 224 - coverage/block-navigation.js | 87 - coverage/clover.xml | 962 ---- coverage/coverage-final.json | 11 - coverage/favicon.png | Bin 445 -> 0 bytes coverage/index.html | 146 - coverage/prettify.css | 1 - coverage/prettify.js | 2 - coverage/sort-arrow-sprite.png | Bin 138 -> 0 bytes coverage/sorter.js | 210 - coverage/src/commands/index.html | 161 - coverage/src/commands/send.ts.html | 217 - coverage/src/commands/status.ts.html | 175 - coverage/src/commands/up.ts.html | 238 - coverage/src/commands/webhook.ts.html | 148 - coverage/src/globals.ts.html | 172 - coverage/src/index.html | 161 - coverage/src/index.ts.html | 6475 ------------------------- coverage/src/provider-web.ts.html | 892 ---- coverage/src/utils.ts.html | 235 - coverage/test/mocks/baileys.ts.html | 244 - coverage/test/mocks/index.html | 131 - coverage/test/mocks/twilio.ts.html | 232 - src/index.core.test.ts | 36 + 26 files changed, 39 insertions(+), 11127 deletions(-) delete mode 100644 coverage/base.css delete mode 100644 coverage/block-navigation.js delete mode 100644 coverage/clover.xml delete mode 100644 coverage/coverage-final.json delete mode 100644 coverage/favicon.png delete mode 100644 coverage/index.html delete mode 100644 coverage/prettify.css delete mode 100644 coverage/prettify.js delete mode 100644 coverage/sort-arrow-sprite.png delete mode 100644 coverage/sorter.js delete mode 100644 coverage/src/commands/index.html delete mode 100644 coverage/src/commands/send.ts.html delete mode 100644 coverage/src/commands/status.ts.html delete mode 100644 coverage/src/commands/up.ts.html delete mode 100644 coverage/src/commands/webhook.ts.html delete mode 100644 coverage/src/globals.ts.html delete mode 100644 coverage/src/index.html delete mode 100644 coverage/src/index.ts.html delete mode 100644 coverage/src/provider-web.ts.html delete mode 100644 coverage/src/utils.ts.html delete mode 100644 coverage/test/mocks/baileys.ts.html delete mode 100644 coverage/test/mocks/index.html delete mode 100644 coverage/test/mocks/twilio.ts.html diff --git a/.gitignore b/.gitignore index 885509ebd..a3e492002 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ node_modules .env dist pnpm-lock.yaml +coverage diff --git a/README.md b/README.md index bdef93c09..81f8d9909 100644 --- a/README.md +++ b/README.md @@ -47,12 +47,10 @@ You can also use a personal WhatsApp Web session (QR login) via `--provider web` bodyPrefix: "You are a helpful assistant running on the user's Mac. User writes messages via WhatsApp and you respond. You want to be concise in your responses, at most 1000 characters.\n\n", command: [ "claude", - "-p", - "--output-format", - "json", "--dangerously-skip-permissions", "{{BodyStripped}}" ], + claudeOutputFormat: "text", // forces --output-format text and adds -p/--print when missing session: { scope: "per-sender", resetTriggers: ["/new"], @@ -102,6 +100,7 @@ Notes: | `inbound.reply.session.sessionArgNew` | `string[]` | `["--session-id","{{SessionId}}"]` | Args inserted for a new session run. | | `inbound.reply.session.sessionArgResume` | `string[]` | `["--resume","{{SessionId}}"]` | Args inserted when resuming an existing session. | | `inbound.reply.session.sessionArgBeforeBody` | `boolean` | `true` | Place session args before the final body argument. | +| `inbound.reply.claudeOutputFormat` | `"text" \| "json" \| "stream-json"` | — | When `command[0]` is `claude`, force this output format and auto-add `-p/--print` so Claude exits after emitting output. | | `inbound.reply.timeoutSeconds` | `number` | 600 | Command timeout. | ## Dev Notes diff --git a/coverage/base.css b/coverage/base.css deleted file mode 100644 index f418035b4..000000000 --- a/coverage/base.css +++ /dev/null @@ -1,224 +0,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; } -pre { - font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; - margin: 0; - padding: 0; - -moz-tab-size: 2; - -o-tab-size: 2; - tab-size: 2; -} -a { color:#0074D9; text-decoration:none; } -a:hover { text-decoration:underline; } -.strong { font-weight: bold; } -.space-top1 { padding: 10px 0 0 0; } -.pad2y { padding: 20px 0; } -.pad1y { padding: 10px 0; } -.pad2x { padding: 0 20px; } -.pad2 { padding: 20px; } -.pad1 { padding: 10px; } -.space-left2 { padding-left:55px; } -.space-right2 { padding-right:20px; } -.center { text-align:center; } -.clearfix { display:block; } -.clearfix:after { - content:''; - display:block; - height:0; - clear:both; - visibility:hidden; - } -.fl { float: left; } -@media only screen and (max-width:640px) { - .col3 { width:100%; max-width:100%; } - .hide-mobile { display:none!important; } -} - -.quiet { - color: #7f7f7f; - color: rgba(0,0,0,0.5); -} -.quiet a { opacity: 0.7; } - -.fraction { - font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; - font-size: 10px; - color: #555; - background: #E8E8E8; - padding: 4px 5px; - border-radius: 3px; - vertical-align: middle; -} - -div.path a:link, div.path a:visited { color: #333; } -table.coverage { - border-collapse: collapse; - margin: 10px 0 0 0; - padding: 0; -} - -table.coverage td { - margin: 0; - padding: 0; - vertical-align: top; -} -table.coverage td.line-count { - text-align: right; - padding: 0 5px 0 20px; -} -table.coverage td.line-coverage { - text-align: right; - padding-right: 10px; - min-width:20px; -} - -table.coverage td span.cline-any { - display: inline-block; - padding: 0 5px; - width: 100%; -} -.missing-if-branch { - display: inline-block; - margin-right: 5px; - border-radius: 3px; - position: relative; - padding: 0 4px; - background: #333; - color: yellow; -} - -.skip-if-branch { - display: none; - margin-right: 10px; - position: relative; - padding: 0 4px; - background: #ccc; - color: white; -} -.missing-if-branch .typ, .skip-if-branch .typ { - color: inherit !important; -} -.coverage-summary { - border-collapse: collapse; - width: 100%; -} -.coverage-summary tr { border-bottom: 1px solid #bbb; } -.keyline-all { border: 1px solid #ddd; } -.coverage-summary td, .coverage-summary th { padding: 10px; } -.coverage-summary tbody { border: 1px solid #bbb; } -.coverage-summary td { border-right: 1px solid #bbb; } -.coverage-summary td:last-child { border-right: none; } -.coverage-summary th { - text-align: left; - font-weight: normal; - white-space: nowrap; -} -.coverage-summary th.file { border-right: none !important; } -.coverage-summary th.pct { } -.coverage-summary th.pic, -.coverage-summary th.abs, -.coverage-summary td.pct, -.coverage-summary td.abs { text-align: right; } -.coverage-summary td.file { white-space: nowrap; } -.coverage-summary td.pic { min-width: 120px !important; } -.coverage-summary tfoot td { } - -.coverage-summary .sorter { - height: 10px; - width: 7px; - display: inline-block; - margin-left: 0.5em; - background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; -} -.coverage-summary .sorted .sorter { - background-position: 0 -20px; -} -.coverage-summary .sorted-desc .sorter { - background-position: 0 -10px; -} -.status-line { height: 10px; } -/* yellow */ -.cbranch-no { background: yellow !important; color: #111; } -/* dark red */ -.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } -.low .chart { border:1px solid #C21F39 } -.highlighted, -.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ - background: #C21F39 !important; -} -/* medium red */ -.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } -/* light red */ -.low, .cline-no { background:#FCE1E5 } -/* light green */ -.high, .cline-yes { background:rgb(230,245,208) } -/* medium green */ -.cstat-yes { background:rgb(161,215,106) } -/* dark green */ -.status-line.high, .high .cover-fill { background:rgb(77,146,33) } -.high .chart { border:1px solid rgb(77,146,33) } -/* dark yellow (gold) */ -.status-line.medium, .medium .cover-fill { background: #f9cd0b; } -.medium .chart { border:1px solid #f9cd0b; } -/* light yellow */ -.medium { background: #fff4c2; } - -.cstat-skip { background: #ddd; color: #111; } -.fstat-skip { background: #ddd; color: #111 !important; } -.cbranch-skip { background: #ddd !important; color: #111; } - -span.cline-neutral { background: #eaeaea; } - -.coverage-summary td.empty { - opacity: .5; - padding-top: 4px; - padding-bottom: 4px; - line-height: 1; - color: #888; -} - -.cover-fill, .cover-empty { - display:inline-block; - height: 12px; -} -.chart { - line-height: 0; -} -.cover-empty { - background: white; -} -.cover-full { - border-right: none !important; -} -pre.prettyprint { - border: none !important; - padding: 0 !important; - margin: 0 !important; -} -.com { color: #999 !important; } -.ignore-none { color: #999; font-weight: normal; } - -.wrapper { - min-height: 100%; - height: auto !important; - height: 100%; - margin: 0 auto -48px; -} -.footer, .push { - height: 48px; -} diff --git a/coverage/block-navigation.js b/coverage/block-navigation.js deleted file mode 100644 index 530d1ed2b..000000000 --- a/coverage/block-navigation.js +++ /dev/null @@ -1,87 +0,0 @@ -/* eslint-disable */ -var jumpToCode = (function init() { - // Classes of code we would like to highlight in the file view - var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; - - // Elements to highlight in the file listing view - var fileListingElements = ['td.pct.low']; - - // We don't want to select elements that are direct descendants of another match - var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` - - // Selector that finds elements on the page to which we can jump - var selector = - fileListingElements.join(', ') + - ', ' + - notSelector + - missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` - - // The NodeList of matching elements - var missingCoverageElements = document.querySelectorAll(selector); - - var currentIndex; - - function toggleClass(index) { - missingCoverageElements - .item(currentIndex) - .classList.remove('highlighted'); - missingCoverageElements.item(index).classList.add('highlighted'); - } - - function makeCurrent(index) { - toggleClass(index); - currentIndex = index; - missingCoverageElements.item(index).scrollIntoView({ - behavior: 'smooth', - block: 'center', - inline: 'center' - }); - } - - function goToPrevious() { - var nextIndex = 0; - if (typeof currentIndex !== 'number' || currentIndex === 0) { - nextIndex = missingCoverageElements.length - 1; - } else if (missingCoverageElements.length > 1) { - nextIndex = currentIndex - 1; - } - - makeCurrent(nextIndex); - } - - function goToNext() { - var nextIndex = 0; - - if ( - typeof currentIndex === 'number' && - currentIndex < missingCoverageElements.length - 1 - ) { - nextIndex = currentIndex + 1; - } - - makeCurrent(nextIndex); - } - - return function jump(event) { - if ( - document.getElementById('fileSearch') === document.activeElement && - document.activeElement != null - ) { - // if we're currently focused on the search input, we don't want to navigate - return; - } - - switch (event.which) { - case 78: // n - case 74: // j - goToNext(); - break; - case 66: // b - case 75: // k - case 80: // p - goToPrevious(); - break; - } - }; -})(); -window.addEventListener('keydown', jumpToCode); diff --git a/coverage/clover.xml b/coverage/clover.xml deleted file mode 100644 index 6e0f0e112..000000000 --- a/coverage/clover.xml +++ /dev/null @@ -1,962 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json deleted file mode 100644 index 2617e2397..000000000 --- a/coverage/coverage-final.json +++ /dev/null @@ -1,11 +0,0 @@ -{"/Users/steipete/Projects/warelay/src/globals.ts": {"path":"/Users/steipete/Projects/warelay/src/globals.ts","statementMap":{"0":{"start":{"line":3,"column":20},"end":{"line":3,"column":null}},"1":{"start":{"line":4,"column":16},"end":{"line":4,"column":null}},"2":{"start":{"line":7,"column":1},"end":{"line":7,"column":null}},"3":{"start":{"line":11,"column":1},"end":{"line":11,"column":null}},"4":{"start":{"line":15,"column":1},"end":{"line":15,"column":null}},"5":{"start":{"line":15,"column":20},"end":{"line":15,"column":null}},"6":{"start":{"line":19,"column":1},"end":{"line":19,"column":null}},"7":{"start":{"line":23,"column":1},"end":{"line":23,"column":null}},"8":{"start":{"line":26,"column":23},"end":{"line":26,"column":null}},"9":{"start":{"line":27,"column":20},"end":{"line":27,"column":null}},"10":{"start":{"line":28,"column":20},"end":{"line":28,"column":null}},"11":{"start":{"line":29,"column":22},"end":{"line":29,"column":null}}},"fnMap":{"0":{"name":"setVerbose","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":27}},"loc":{"start":{"line":6,"column":39},"end":{"line":8,"column":null}},"line":6},"1":{"name":"isVerbose","decl":{"start":{"line":10,"column":16},"end":{"line":10,"column":28}},"loc":{"start":{"line":10,"column":28},"end":{"line":12,"column":null}},"line":10},"2":{"name":"logVerbose","decl":{"start":{"line":14,"column":16},"end":{"line":14,"column":27}},"loc":{"start":{"line":14,"column":44},"end":{"line":16,"column":null}},"line":14},"3":{"name":"setYes","decl":{"start":{"line":18,"column":16},"end":{"line":18,"column":23}},"loc":{"start":{"line":18,"column":35},"end":{"line":20,"column":null}},"line":18},"4":{"name":"isYes","decl":{"start":{"line":22,"column":16},"end":{"line":22,"column":24}},"loc":{"start":{"line":22,"column":24},"end":{"line":24,"column":null}},"line":22}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":1},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":1},"end":{"line":15,"column":null}},{"start":{},"end":{}}],"line":15}},"s":{"0":5,"1":5,"2":4,"3":6,"4":19,"5":1,"6":4,"7":2,"8":5,"9":5,"10":5,"11":5},"f":{"0":4,"1":6,"2":19,"3":4,"4":2},"b":{"0":[1,18]},"meta":{"lastBranch":1,"lastFunction":5,"lastStatement":12,"seen":{"s:3:20:3:Infinity":0,"s:4:16:4:Infinity":1,"f:6:16:6:27":0,"s:7:1:7:Infinity":2,"f:10:16:10:28":1,"s:11:1:11:Infinity":3,"f:14:16:14:27":2,"b:15:1:15:Infinity:undefined:undefined:undefined:undefined":0,"s:15:1:15:Infinity":4,"s:15:20:15:Infinity":5,"f:18:16:18:23":3,"s:19:1:19:Infinity":6,"f:22:16:22:24":4,"s:23:1:23:Infinity":7,"s:26:23:26:Infinity":8,"s:27:20:27:Infinity":9,"s:28:20:28:Infinity":10,"s:29:22:29:Infinity":11}}} -,"/Users/steipete/Projects/warelay/src/index.ts": {"path":"/Users/steipete/Projects/warelay/src/index.ts","statementMap":{"0":{"start":{"line":49,"column":0},"end":{"line":49,"column":null}},"1":{"start":{"line":51,"column":16},"end":{"line":51,"column":null}},"2":{"start":{"line":79,"column":1},"end":{"line":98,"column":null}},"3":{"start":{"line":194,"column":35},"end":{"line":201,"column":null}},"4":{"start":{"line":198,"column":2},"end":{"line":198,"column":null}},"5":{"start":{"line":199,"column":2},"end":{"line":199,"column":null}},"6":{"start":{"line":203,"column":18},"end":{"line":232,"column":null}},"7":{"start":{"line":213,"column":2},"end":{"line":218,"column":null}},"8":{"start":{"line":214,"column":3},"end":{"line":217,"column":null}},"9":{"start":{"line":219,"column":2},"end":{"line":224,"column":null}},"10":{"start":{"line":220,"column":3},"end":{"line":223,"column":null}},"11":{"start":{"line":225,"column":2},"end":{"line":231,"column":null}},"12":{"start":{"line":226,"column":3},"end":{"line":230,"column":null}},"13":{"start":{"line":236,"column":16},"end":{"line":236,"column":null}},"14":{"start":{"line":237,"column":1},"end":{"line":241,"column":null}},"15":{"start":{"line":238,"column":2},"end":{"line":238,"column":null}},"16":{"start":{"line":239,"column":2},"end":{"line":239,"column":null}},"17":{"start":{"line":239,"column":39},"end":{"line":239,"column":72}},"18":{"start":{"line":240,"column":2},"end":{"line":240,"column":null}},"19":{"start":{"line":250,"column":5},"end":{"line":250,"column":null}},"20":{"start":{"line":253,"column":2},"end":{"line":255,"column":null}},"21":{"start":{"line":257,"column":1},"end":{"line":262,"column":null}},"22":{"start":{"line":265,"column":6},"end":{"line":265,"column":null}},"23":{"start":{"line":277,"column":1},"end":{"line":279,"column":null}},"24":{"start":{"line":278,"column":2},"end":{"line":278,"column":null}},"25":{"start":{"line":280,"column":1},"end":{"line":296,"column":null}},"26":{"start":{"line":281,"column":29},"end":{"line":285,"column":null}},"27":{"start":{"line":286,"column":2},"end":{"line":289,"column":null}},"28":{"start":{"line":287,"column":3},"end":{"line":287,"column":null}},"29":{"start":{"line":287,"column":22},"end":{"line":287,"column":null}},"30":{"start":{"line":288,"column":3},"end":{"line":288,"column":null}},"31":{"start":{"line":288,"column":22},"end":{"line":288,"column":null}},"32":{"start":{"line":290,"column":2},"end":{"line":290,"column":null}},"33":{"start":{"line":292,"column":2},"end":{"line":294,"column":null}},"34":{"start":{"line":293,"column":3},"end":{"line":293,"column":null}},"35":{"start":{"line":295,"column":2},"end":{"line":295,"column":null}},"36":{"start":{"line":312,"column":1},"end":{"line":341,"column":null}},"37":{"start":{"line":313,"column":8},"end":{"line":315,"column":null}},"38":{"start":{"line":316,"column":15},"end":{"line":316,"column":null}},"39":{"start":{"line":317,"column":15},"end":{"line":317,"column":null}},"40":{"start":{"line":318,"column":16},"end":{"line":318,"column":null}},"41":{"start":{"line":319,"column":16},"end":{"line":321,"column":null}},"42":{"start":{"line":320,"column":3},"end":{"line":320,"column":null}},"43":{"start":{"line":323,"column":2},"end":{"line":325,"column":null}},"44":{"start":{"line":324,"column":3},"end":{"line":324,"column":null}},"45":{"start":{"line":326,"column":2},"end":{"line":328,"column":null}},"46":{"start":{"line":327,"column":3},"end":{"line":327,"column":null}},"47":{"start":{"line":329,"column":2},"end":{"line":334,"column":null}},"48":{"start":{"line":330,"column":3},"end":{"line":330,"column":null}},"49":{"start":{"line":330,"column":16},"end":{"line":330,"column":null}},"50":{"start":{"line":331,"column":3},"end":{"line":331,"column":null}},"51":{"start":{"line":332,"column":3},"end":{"line":332,"column":null}},"52":{"start":{"line":333,"column":3},"end":{"line":333,"column":null}},"53":{"start":{"line":335,"column":2},"end":{"line":340,"column":null}},"54":{"start":{"line":336,"column":3},"end":{"line":336,"column":null}},"55":{"start":{"line":336,"column":16},"end":{"line":336,"column":null}},"56":{"start":{"line":337,"column":3},"end":{"line":337,"column":null}},"57":{"start":{"line":338,"column":3},"end":{"line":338,"column":null}},"58":{"start":{"line":339,"column":3},"end":{"line":339,"column":null}},"59":{"start":{"line":350,"column":2},"end":{"line":350,"column":null}},"60":{"start":{"line":351,"column":2},"end":{"line":351,"column":null}},"61":{"start":{"line":352,"column":2},"end":{"line":352,"column":null}},"62":{"start":{"line":353,"column":2},"end":{"line":353,"column":null}},"63":{"start":{"line":358,"column":1},"end":{"line":358,"column":null}},"64":{"start":{"line":363,"column":1},"end":{"line":374,"column":null}},"65":{"start":{"line":364,"column":21},"end":{"line":369,"column":null}},"66":{"start":{"line":370,"column":18},"end":{"line":370,"column":null}},"67":{"start":{"line":371,"column":2},"end":{"line":371,"column":null}},"68":{"start":{"line":371,"column":15},"end":{"line":371,"column":null}},"69":{"start":{"line":373,"column":2},"end":{"line":373,"column":null}},"70":{"start":{"line":375,"column":1},"end":{"line":375,"column":null}},"71":{"start":{"line":380,"column":1},"end":{"line":396,"column":null}},"72":{"start":{"line":381,"column":2},"end":{"line":389,"column":null}},"73":{"start":{"line":382,"column":18},"end":{"line":388,"column":null}},"74":{"start":{"line":384,"column":28},"end":{"line":384,"column":39}},"75":{"start":{"line":386,"column":5},"end":{"line":386,"column":null}},"76":{"start":{"line":386,"column":24},"end":{"line":386,"column":33}},"77":{"start":{"line":391,"column":2},"end":{"line":394,"column":null}},"78":{"start":{"line":392,"column":19},"end":{"line":392,"column":null}},"79":{"start":{"line":393,"column":3},"end":{"line":393,"column":null}},"80":{"start":{"line":395,"column":2},"end":{"line":395,"column":null}},"81":{"start":{"line":405,"column":1},"end":{"line":431,"column":null}},"82":{"start":{"line":410,"column":3},"end":{"line":412,"column":null}},"83":{"start":{"line":413,"column":2},"end":{"line":413,"column":null}},"84":{"start":{"line":414,"column":2},"end":{"line":424,"column":null}},"85":{"start":{"line":415,"column":3},"end":{"line":415,"column":null}},"86":{"start":{"line":416,"column":3},"end":{"line":416,"column":null}},"87":{"start":{"line":417,"column":3},"end":{"line":423,"column":null}},"88":{"start":{"line":418,"column":4},"end":{"line":422,"column":null}},"89":{"start":{"line":425,"column":2},"end":{"line":429,"column":null}},"90":{"start":{"line":430,"column":2},"end":{"line":430,"column":null}},"91":{"start":{"line":432,"column":1},"end":{"line":432,"column":null}},"92":{"start":{"line":433,"column":1},"end":{"line":433,"column":null}},"93":{"start":{"line":442,"column":1},"end":{"line":445,"column":null}},"94":{"start":{"line":443,"column":2},"end":{"line":443,"column":null}},"95":{"start":{"line":444,"column":2},"end":{"line":444,"column":null}},"96":{"start":{"line":452,"column":1},"end":{"line":452,"column":null}},"97":{"start":{"line":452,"column":29},"end":{"line":452,"column":null}},"98":{"start":{"line":453,"column":1},"end":{"line":453,"column":null}},"99":{"start":{"line":453,"column":14},"end":{"line":453,"column":null}},"100":{"start":{"line":454,"column":12},"end":{"line":454,"column":null}},"101":{"start":{"line":455,"column":16},"end":{"line":455,"column":null}},"102":{"start":{"line":456,"column":7},"end":{"line":458,"column":null}},"103":{"start":{"line":459,"column":1},"end":{"line":459,"column":null}},"104":{"start":{"line":460,"column":1},"end":{"line":460,"column":null}},"105":{"start":{"line":460,"column":14},"end":{"line":460,"column":null}},"106":{"start":{"line":461,"column":1},"end":{"line":461,"column":null}},"107":{"start":{"line":464,"column":20},"end":{"line":464,"column":null}},"108":{"start":{"line":497,"column":1},"end":{"line":506,"column":null}},"109":{"start":{"line":498,"column":2},"end":{"line":498,"column":null}},"110":{"start":{"line":498,"column":35},"end":{"line":498,"column":null}},"111":{"start":{"line":499,"column":14},"end":{"line":499,"column":null}},"112":{"start":{"line":500,"column":17},"end":{"line":500,"column":null}},"113":{"start":{"line":501,"column":2},"end":{"line":501,"column":null}},"114":{"start":{"line":501,"column":53},"end":{"line":501,"column":null}},"115":{"start":{"line":502,"column":2},"end":{"line":502,"column":null}},"116":{"start":{"line":504,"column":2},"end":{"line":504,"column":null}},"117":{"start":{"line":505,"column":2},"end":{"line":505,"column":null}},"118":{"start":{"line":522,"column":1},"end":{"line":525,"column":null}},"119":{"start":{"line":523,"column":17},"end":{"line":523,"column":null}},"120":{"start":{"line":524,"column":2},"end":{"line":524,"column":null}},"121":{"start":{"line":536,"column":30},"end":{"line":536,"column":null}},"122":{"start":{"line":537,"column":30},"end":{"line":537,"column":null}},"123":{"start":{"line":538,"column":29},"end":{"line":538,"column":null}},"124":{"start":{"line":541,"column":1},"end":{"line":541,"column":null}},"125":{"start":{"line":541,"column":13},"end":{"line":541,"column":null}},"126":{"start":{"line":542,"column":1},"end":{"line":542,"column":null}},"127":{"start":{"line":542,"column":28},"end":{"line":542,"column":null}},"128":{"start":{"line":543,"column":1},"end":{"line":543,"column":null}},"129":{"start":{"line":547,"column":1},"end":{"line":555,"column":null}},"130":{"start":{"line":548,"column":14},"end":{"line":548,"column":null}},"131":{"start":{"line":549,"column":17},"end":{"line":549,"column":null}},"132":{"start":{"line":550,"column":2},"end":{"line":552,"column":null}},"133":{"start":{"line":551,"column":3},"end":{"line":551,"column":null}},"134":{"start":{"line":556,"column":1},"end":{"line":556,"column":null}},"135":{"start":{"line":560,"column":1},"end":{"line":560,"column":null}},"136":{"start":{"line":561,"column":1},"end":{"line":561,"column":null}},"137":{"start":{"line":565,"column":1},"end":{"line":565,"column":null}},"138":{"start":{"line":565,"column":25},"end":{"line":565,"column":null}},"139":{"start":{"line":566,"column":14},"end":{"line":566,"column":null}},"140":{"start":{"line":567,"column":1},"end":{"line":567,"column":null}},"141":{"start":{"line":577,"column":13},"end":{"line":577,"column":null}},"142":{"start":{"line":578,"column":15},"end":{"line":578,"column":null}},"143":{"start":{"line":579,"column":24},"end":{"line":579,"column":null}},"144":{"start":{"line":580,"column":19},"end":{"line":580,"column":null}},"145":{"start":{"line":581,"column":15},"end":{"line":581,"column":null}},"146":{"start":{"line":582,"column":22},"end":{"line":586,"column":null}},"147":{"start":{"line":583,"column":2},"end":{"line":583,"column":null}},"148":{"start":{"line":583,"column":15},"end":{"line":583,"column":null}},"149":{"start":{"line":584,"column":2},"end":{"line":584,"column":null}},"150":{"start":{"line":585,"column":2},"end":{"line":585,"column":null}},"151":{"start":{"line":589,"column":20},"end":{"line":589,"column":null}},"152":{"start":{"line":591,"column":2},"end":{"line":593,"column":null}},"153":{"start":{"line":594,"column":21},"end":{"line":594,"column":null}},"154":{"start":{"line":595,"column":22},"end":{"line":595,"column":null}},"155":{"start":{"line":596,"column":19},"end":{"line":596,"column":null}},"156":{"start":{"line":599,"column":20},"end":{"line":599,"column":null}},"157":{"start":{"line":602,"column":1},"end":{"line":634,"column":null}},"158":{"start":{"line":603,"column":8},"end":{"line":603,"column":null}},"159":{"start":{"line":604,"column":2},"end":{"line":617,"column":null}},"160":{"start":{"line":605,"column":3},"end":{"line":605,"column":null}},"161":{"start":{"line":605,"column":17},"end":{"line":605,"column":null}},"162":{"start":{"line":606,"column":3},"end":{"line":610,"column":null}},"163":{"start":{"line":607,"column":4},"end":{"line":607,"column":null}},"164":{"start":{"line":608,"column":4},"end":{"line":608,"column":null}},"165":{"start":{"line":609,"column":4},"end":{"line":609,"column":null}},"166":{"start":{"line":611,"column":25},"end":{"line":611,"column":null}},"167":{"start":{"line":612,"column":3},"end":{"line":616,"column":null}},"168":{"start":{"line":613,"column":4},"end":{"line":613,"column":null}},"169":{"start":{"line":614,"column":4},"end":{"line":614,"column":null}},"170":{"start":{"line":615,"column":4},"end":{"line":615,"column":null}},"171":{"start":{"line":619,"column":21},"end":{"line":619,"column":null}},"172":{"start":{"line":620,"column":16},"end":{"line":620,"column":null}},"173":{"start":{"line":621,"column":16},"end":{"line":621,"column":null}},"174":{"start":{"line":622,"column":17},"end":{"line":622,"column":null}},"175":{"start":{"line":623,"column":21},"end":{"line":623,"column":null}},"176":{"start":{"line":625,"column":2},"end":{"line":630,"column":null}},"177":{"start":{"line":626,"column":3},"end":{"line":626,"column":null}},"178":{"start":{"line":628,"column":3},"end":{"line":628,"column":null}},"179":{"start":{"line":629,"column":3},"end":{"line":629,"column":null}},"180":{"start":{"line":632,"column":2},"end":{"line":632,"column":null}},"181":{"start":{"line":633,"column":2},"end":{"line":633,"column":null}},"182":{"start":{"line":636,"column":37},"end":{"line":641,"column":null}},"183":{"start":{"line":644,"column":20},"end":{"line":646,"column":null}},"184":{"start":{"line":647,"column":22},"end":{"line":649,"column":null}},"185":{"start":{"line":650,"column":40},"end":{"line":654,"column":null}},"186":{"start":{"line":657,"column":19},"end":{"line":657,"column":null}},"187":{"start":{"line":658,"column":1},"end":{"line":666,"column":null}},"188":{"start":{"line":659,"column":8},"end":{"line":659,"column":null}},"189":{"start":{"line":660,"column":2},"end":{"line":665,"column":null}},"190":{"start":{"line":661,"column":3},"end":{"line":663,"column":null}},"191":{"start":{"line":664,"column":3},"end":{"line":664,"column":null}},"192":{"start":{"line":667,"column":1},"end":{"line":670,"column":null}},"193":{"start":{"line":668,"column":2},"end":{"line":668,"column":null}},"194":{"start":{"line":669,"column":2},"end":{"line":669,"column":null}},"195":{"start":{"line":672,"column":1},"end":{"line":676,"column":null}},"196":{"start":{"line":673,"column":2},"end":{"line":673,"column":null}},"197":{"start":{"line":674,"column":2},"end":{"line":674,"column":null}},"198":{"start":{"line":675,"column":2},"end":{"line":675,"column":null}},"199":{"start":{"line":678,"column":1},"end":{"line":751,"column":null}},"200":{"start":{"line":679,"column":2},"end":{"line":679,"column":null}},"201":{"start":{"line":680,"column":13},"end":{"line":680,"column":null}},"202":{"start":{"line":680,"column":41},"end":{"line":680,"column":75}},"203":{"start":{"line":681,"column":25},"end":{"line":683,"column":null}},"204":{"start":{"line":684,"column":2},"end":{"line":686,"column":null}},"205":{"start":{"line":685,"column":3},"end":{"line":685,"column":null}},"206":{"start":{"line":689,"column":2},"end":{"line":703,"column":null}},"207":{"start":{"line":690,"column":9},"end":{"line":693,"column":null}},"208":{"start":{"line":693,"column":19},"end":{"line":693,"column":53}},"209":{"start":{"line":694,"column":3},"end":{"line":702,"column":null}},"210":{"start":{"line":695,"column":29},"end":{"line":695,"column":null}},"211":{"start":{"line":696,"column":21},"end":{"line":696,"column":null}},"212":{"start":{"line":697,"column":4},"end":{"line":701,"column":null}},"213":{"start":{"line":704,"column":20},"end":{"line":704,"column":null}},"214":{"start":{"line":705,"column":2},"end":{"line":705,"column":null}},"215":{"start":{"line":706,"column":18},"end":{"line":706,"column":null}},"216":{"start":{"line":707,"column":2},"end":{"line":750,"column":null}},"217":{"start":{"line":709,"column":4},"end":{"line":709,"column":null}},"218":{"start":{"line":710,"column":19},"end":{"line":710,"column":null}},"219":{"start":{"line":711,"column":3},"end":{"line":713,"column":null}},"220":{"start":{"line":712,"column":4},"end":{"line":712,"column":null}},"221":{"start":{"line":714,"column":3},"end":{"line":716,"column":null}},"222":{"start":{"line":717,"column":3},"end":{"line":717,"column":null}},"223":{"start":{"line":718,"column":3},"end":{"line":723,"column":null}},"224":{"start":{"line":719,"column":4},"end":{"line":721,"column":null}},"225":{"start":{"line":722,"column":4},"end":{"line":722,"column":null}},"226":{"start":{"line":724,"column":3},"end":{"line":729,"column":null}},"227":{"start":{"line":725,"column":4},"end":{"line":727,"column":null}},"228":{"start":{"line":728,"column":4},"end":{"line":728,"column":null}},"229":{"start":{"line":730,"column":3},"end":{"line":730,"column":null}},"230":{"start":{"line":732,"column":19},"end":{"line":732,"column":null}},"231":{"start":{"line":733,"column":18},"end":{"line":733,"column":null}},"232":{"start":{"line":734,"column":22},"end":{"line":734,"column":null}},"233":{"start":{"line":735,"column":20},"end":{"line":735,"column":null}},"234":{"start":{"line":739,"column":3},"end":{"line":741,"column":null}},"235":{"start":{"line":740,"column":4},"end":{"line":740,"column":null}},"236":{"start":{"line":742,"column":3},"end":{"line":748,"column":null}},"237":{"start":{"line":743,"column":4},"end":{"line":745,"column":null}},"238":{"start":{"line":747,"column":4},"end":{"line":747,"column":null}},"239":{"start":{"line":749,"column":3},"end":{"line":749,"column":null}},"240":{"start":{"line":753,"column":1},"end":{"line":753,"column":null}},"241":{"start":{"line":763,"column":25},"end":{"line":768,"column":null}},"242":{"start":{"line":770,"column":19},"end":{"line":776,"column":null}},"243":{"start":{"line":773,"column":23},"end":{"line":773,"column":null}},"244":{"start":{"line":777,"column":1},"end":{"line":777,"column":null}},"245":{"start":{"line":777,"column":17},"end":{"line":777,"column":null}},"246":{"start":{"line":779,"column":19},"end":{"line":779,"column":null}},"247":{"start":{"line":780,"column":17},"end":{"line":780,"column":null}},"248":{"start":{"line":781,"column":1},"end":{"line":788,"column":null}},"249":{"start":{"line":782,"column":1},"end":{"line":786,"column":null}},"250":{"start":{"line":783,"column":2},"end":{"line":786,"column":null}},"251":{"start":{"line":787,"column":2},"end":{"line":787,"column":null}},"252":{"start":{"line":790,"column":1},"end":{"line":792,"column":null}},"253":{"start":{"line":794,"column":1},"end":{"line":809,"column":null}},"254":{"start":{"line":795,"column":2},"end":{"line":799,"column":null}},"255":{"start":{"line":800,"column":2},"end":{"line":806,"column":null}},"256":{"start":{"line":801,"column":3},"end":{"line":805,"column":null}},"257":{"start":{"line":808,"column":2},"end":{"line":808,"column":null}},"258":{"start":{"line":814,"column":1},"end":{"line":818,"column":null}},"259":{"start":{"line":815,"column":2},"end":{"line":817,"column":null}},"260":{"start":{"line":819,"column":1},"end":{"line":821,"column":null}},"261":{"start":{"line":830,"column":1},"end":{"line":833,"column":null}},"262":{"start":{"line":831,"column":2},"end":{"line":831,"column":null}},"263":{"start":{"line":832,"column":2},"end":{"line":832,"column":null}},"264":{"start":{"line":834,"column":1},"end":{"line":850,"column":null}},"265":{"start":{"line":835,"column":20},"end":{"line":835,"column":null}},"266":{"start":{"line":836,"column":2},"end":{"line":843,"column":null}},"267":{"start":{"line":844,"column":2},"end":{"line":844,"column":null}},"268":{"start":{"line":846,"column":2},"end":{"line":849,"column":null}},"269":{"start":{"line":847,"column":3},"end":{"line":847,"column":null}},"270":{"start":{"line":848,"column":3},"end":{"line":848,"column":null}},"271":{"start":{"line":859,"column":13},"end":{"line":859,"column":null}},"272":{"start":{"line":860,"column":16},"end":{"line":860,"column":null}},"273":{"start":{"line":861,"column":7},"end":{"line":861,"column":null}},"274":{"start":{"line":862,"column":7},"end":{"line":862,"column":null}},"275":{"start":{"line":864,"column":1},"end":{"line":901,"column":null}},"276":{"start":{"line":865,"column":18},"end":{"line":869,"column":null}},"277":{"start":{"line":871,"column":2},"end":{"line":875,"column":null}},"278":{"start":{"line":876,"column":2},"end":{"line":876,"column":null}},"279":{"start":{"line":878,"column":17},"end":{"line":878,"column":null}},"280":{"start":{"line":885,"column":27},"end":{"line":885,"column":null}},"281":{"start":{"line":887,"column":3},"end":{"line":889,"column":null}},"282":{"start":{"line":890,"column":15},"end":{"line":890,"column":null}},"283":{"start":{"line":891,"column":2},"end":{"line":893,"column":null}},"284":{"start":{"line":894,"column":2},"end":{"line":894,"column":null}},"285":{"start":{"line":894,"column":12},"end":{"line":894,"column":null}},"286":{"start":{"line":896,"column":23},"end":{"line":896,"column":null}},"287":{"start":{"line":897,"column":2},"end":{"line":899,"column":null}},"288":{"start":{"line":898,"column":3},"end":{"line":898,"column":null}},"289":{"start":{"line":900,"column":2},"end":{"line":900,"column":null}},"290":{"start":{"line":904,"column":32},"end":{"line":904,"column":null}},"291":{"start":{"line":905,"column":32},"end":{"line":905,"column":null}},"292":{"start":{"line":915,"column":18},"end":{"line":915,"column":null}},"293":{"start":{"line":916,"column":1},"end":{"line":932,"column":null}},"294":{"start":{"line":917,"column":12},"end":{"line":917,"column":null}},"295":{"start":{"line":918,"column":17},"end":{"line":918,"column":null}},"296":{"start":{"line":919,"column":2},"end":{"line":922,"column":null}},"297":{"start":{"line":920,"column":3},"end":{"line":920,"column":null}},"298":{"start":{"line":921,"column":3},"end":{"line":921,"column":null}},"299":{"start":{"line":923,"column":2},"end":{"line":930,"column":null}},"300":{"start":{"line":924,"column":3},"end":{"line":928,"column":null}},"301":{"start":{"line":929,"column":3},"end":{"line":929,"column":null}},"302":{"start":{"line":931,"column":2},"end":{"line":931,"column":null}},"303":{"start":{"line":933,"column":1},"end":{"line":935,"column":null}},"304":{"start":{"line":945,"column":7},"end":{"line":945,"column":null}},"305":{"start":{"line":947,"column":13},"end":{"line":947,"column":null}},"306":{"start":{"line":948,"column":7},"end":{"line":948,"column":null}},"307":{"start":{"line":951,"column":1},"end":{"line":951,"column":null}},"308":{"start":{"line":952,"column":1},"end":{"line":955,"column":null}},"309":{"start":{"line":953,"column":2},"end":{"line":953,"column":null}},"310":{"start":{"line":954,"column":2},"end":{"line":954,"column":null}},"311":{"start":{"line":957,"column":1},"end":{"line":999,"column":null}},"312":{"start":{"line":958,"column":41},"end":{"line":958,"column":null}},"313":{"start":{"line":959,"column":2},"end":{"line":963,"column":null}},"314":{"start":{"line":964,"column":2},"end":{"line":964,"column":null}},"315":{"start":{"line":964,"column":15},"end":{"line":964,"column":null}},"316":{"start":{"line":966,"column":17},"end":{"line":966,"column":null}},"317":{"start":{"line":967,"column":18},"end":{"line":967,"column":null}},"318":{"start":{"line":968,"column":2},"end":{"line":980,"column":null}},"319":{"start":{"line":969,"column":3},"end":{"line":979,"column":null}},"320":{"start":{"line":977,"column":25},"end":{"line":977,"column":null}},"321":{"start":{"line":982,"column":2},"end":{"line":995,"column":null}},"322":{"start":{"line":983,"column":3},"end":{"line":994,"column":null}},"323":{"start":{"line":984,"column":4},"end":{"line":988,"column":null}},"324":{"start":{"line":989,"column":4},"end":{"line":991,"column":null}},"325":{"start":{"line":990,"column":5},"end":{"line":990,"column":null}},"326":{"start":{"line":993,"column":4},"end":{"line":993,"column":null}},"327":{"start":{"line":998,"column":2},"end":{"line":998,"column":null}},"328":{"start":{"line":1001,"column":1},"end":{"line":1004,"column":null}},"329":{"start":{"line":1002,"column":2},"end":{"line":1002,"column":null}},"330":{"start":{"line":1002,"column":15},"end":{"line":1002,"column":null}},"331":{"start":{"line":1003,"column":2},"end":{"line":1003,"column":null}},"332":{"start":{"line":1006,"column":1},"end":{"line":1029,"column":null}},"333":{"start":{"line":1007,"column":17},"end":{"line":1007,"column":null}},"334":{"start":{"line":1009,"column":22},"end":{"line":1015,"column":null}},"335":{"start":{"line":1010,"column":3},"end":{"line":1010,"column":null}},"336":{"start":{"line":1011,"column":3},"end":{"line":1013,"column":null}},"337":{"start":{"line":1014,"column":3},"end":{"line":1014,"column":null}},"338":{"start":{"line":1017,"column":18},"end":{"line":1020,"column":null}},"339":{"start":{"line":1018,"column":3},"end":{"line":1018,"column":null}},"340":{"start":{"line":1019,"column":3},"end":{"line":1019,"column":null}},"341":{"start":{"line":1022,"column":18},"end":{"line":1025,"column":null}},"342":{"start":{"line":1023,"column":3},"end":{"line":1023,"column":null}},"343":{"start":{"line":1024,"column":3},"end":{"line":1024,"column":null}},"344":{"start":{"line":1027,"column":2},"end":{"line":1027,"column":null}},"345":{"start":{"line":1028,"column":2},"end":{"line":1028,"column":null}},"346":{"start":{"line":1034,"column":18},"end":{"line":1034,"column":null}},"347":{"start":{"line":1035,"column":1},"end":{"line":1035,"column":null}},"348":{"start":{"line":1036,"column":1},"end":{"line":1038,"column":null}},"349":{"start":{"line":1043,"column":20},"end":{"line":1043,"column":null}},"350":{"start":{"line":1044,"column":16},"end":{"line":1044,"column":null}},"351":{"start":{"line":1046,"column":2},"end":{"line":1048,"column":null}},"352":{"start":{"line":1050,"column":2},"end":{"line":1050,"column":null}},"353":{"start":{"line":1051,"column":13},"end":{"line":1053,"column":null}},"354":{"start":{"line":1054,"column":1},"end":{"line":1054,"column":null}},"355":{"start":{"line":1054,"column":28},"end":{"line":1054,"column":null}},"356":{"start":{"line":1055,"column":1},"end":{"line":1055,"column":null}},"357":{"start":{"line":1055,"column":21},"end":{"line":1055,"column":null}},"358":{"start":{"line":1056,"column":1},"end":{"line":1056,"column":null}},"359":{"start":{"line":1065,"column":15},"end":{"line":1068,"column":null}},"360":{"start":{"line":1066,"column":8},"end":{"line":1066,"column":null}},"361":{"start":{"line":1067,"column":8},"end":{"line":1067,"column":null}},"362":{"start":{"line":1069,"column":1},"end":{"line":1069,"column":null}},"363":{"start":{"line":1069,"column":12},"end":{"line":1069,"column":null}},"364":{"start":{"line":1070,"column":17},"end":{"line":1073,"column":null}},"365":{"start":{"line":1074,"column":1},"end":{"line":1077,"column":null}},"366":{"start":{"line":1075,"column":2},"end":{"line":1075,"column":null}},"367":{"start":{"line":1076,"column":2},"end":{"line":1076,"column":null}},"368":{"start":{"line":1078,"column":1},"end":{"line":1078,"column":null}},"369":{"start":{"line":1079,"column":1},"end":{"line":1079,"column":null}},"370":{"start":{"line":1088,"column":23},"end":{"line":1091,"column":null}},"371":{"start":{"line":1089,"column":8},"end":{"line":1089,"column":null}},"372":{"start":{"line":1090,"column":8},"end":{"line":1090,"column":null}},"373":{"start":{"line":1092,"column":1},"end":{"line":1092,"column":null}},"374":{"start":{"line":1092,"column":20},"end":{"line":1092,"column":null}},"375":{"start":{"line":1094,"column":17},"end":{"line":1097,"column":null}},"376":{"start":{"line":1098,"column":1},"end":{"line":1101,"column":null}},"377":{"start":{"line":1099,"column":2},"end":{"line":1099,"column":null}},"378":{"start":{"line":1100,"column":2},"end":{"line":1100,"column":null}},"379":{"start":{"line":1102,"column":1},"end":{"line":1102,"column":null}},"380":{"start":{"line":1103,"column":1},"end":{"line":1103,"column":null}},"381":{"start":{"line":1113,"column":1},"end":{"line":1194,"column":null}},"382":{"start":{"line":1114,"column":8},"end":{"line":1116,"column":null}},"383":{"start":{"line":1117,"column":17},"end":{"line":1119,"column":null}},"384":{"start":{"line":1120,"column":2},"end":{"line":1141,"column":null}},"385":{"start":{"line":1121,"column":3},"end":{"line":1123,"column":null}},"386":{"start":{"line":1124,"column":3},"end":{"line":1128,"column":null}},"387":{"start":{"line":1129,"column":3},"end":{"line":1133,"column":null}},"388":{"start":{"line":1134,"column":19},"end":{"line":1137,"column":null}},"389":{"start":{"line":1138,"column":3},"end":{"line":1138,"column":null}},"390":{"start":{"line":1138,"column":17},"end":{"line":1138,"column":null}},"391":{"start":{"line":1139,"column":3},"end":{"line":1139,"column":null}},"392":{"start":{"line":1140,"column":3},"end":{"line":1140,"column":null}},"393":{"start":{"line":1143,"column":2},"end":{"line":1143,"column":null}},"394":{"start":{"line":1144,"column":21},"end":{"line":1151,"column":null}},"395":{"start":{"line":1152,"column":2},"end":{"line":1152,"column":null}},"396":{"start":{"line":1152,"column":21},"end":{"line":1152,"column":null}},"397":{"start":{"line":1154,"column":20},"end":{"line":1154,"column":null}},"398":{"start":{"line":1155,"column":17},"end":{"line":1155,"column":null}},"399":{"start":{"line":1156,"column":17},"end":{"line":1156,"column":null}},"400":{"start":{"line":1157,"column":2},"end":{"line":1169,"column":null}},"401":{"start":{"line":1158,"column":3},"end":{"line":1158,"column":null}},"402":{"start":{"line":1159,"column":21},"end":{"line":1159,"column":null}},"403":{"start":{"line":1160,"column":3},"end":{"line":1168,"column":null}},"404":{"start":{"line":1161,"column":4},"end":{"line":1161,"column":null}},"405":{"start":{"line":1163,"column":4},"end":{"line":1167,"column":null}},"406":{"start":{"line":1170,"column":2},"end":{"line":1179,"column":null}},"407":{"start":{"line":1174,"column":3},"end":{"line":1178,"column":null}},"408":{"start":{"line":1180,"column":2},"end":{"line":1182,"column":null}},"409":{"start":{"line":1183,"column":2},"end":{"line":1187,"column":null}},"410":{"start":{"line":1188,"column":2},"end":{"line":1192,"column":null}},"411":{"start":{"line":1189,"column":3},"end":{"line":1189,"column":null}},"412":{"start":{"line":1189,"column":22},"end":{"line":1189,"column":null}},"413":{"start":{"line":1190,"column":3},"end":{"line":1190,"column":null}},"414":{"start":{"line":1190,"column":22},"end":{"line":1190,"column":null}},"415":{"start":{"line":1191,"column":3},"end":{"line":1191,"column":null}},"416":{"start":{"line":1193,"column":2},"end":{"line":1193,"column":null}},"417":{"start":{"line":1204,"column":1},"end":{"line":1207,"column":null}},"418":{"start":{"line":1205,"column":2},"end":{"line":1205,"column":null}},"419":{"start":{"line":1206,"column":2},"end":{"line":1206,"column":null}},"420":{"start":{"line":1208,"column":1},"end":{"line":1243,"column":null}},"421":{"start":{"line":1211,"column":23},"end":{"line":1211,"column":null}},"422":{"start":{"line":1212,"column":18},"end":{"line":1215,"column":null}},"423":{"start":{"line":1216,"column":2},"end":{"line":1218,"column":null}},"424":{"start":{"line":1217,"column":3},"end":{"line":1217,"column":null}},"425":{"start":{"line":1219,"column":16},"end":{"line":1225,"column":null}},"426":{"start":{"line":1221,"column":5},"end":{"line":1224,"column":null}},"427":{"start":{"line":1226,"column":2},"end":{"line":1230,"column":null}},"428":{"start":{"line":1227,"column":3},"end":{"line":1229,"column":null}},"429":{"start":{"line":1231,"column":2},"end":{"line":1231,"column":null}},"430":{"start":{"line":1233,"column":2},"end":{"line":1233,"column":null}},"431":{"start":{"line":1234,"column":2},"end":{"line":1236,"column":null}},"432":{"start":{"line":1235,"column":3},"end":{"line":1235,"column":null}},"433":{"start":{"line":1237,"column":2},"end":{"line":1241,"column":null}},"434":{"start":{"line":1242,"column":2},"end":{"line":1242,"column":null}},"435":{"start":{"line":1250,"column":13},"end":{"line":1250,"column":null}},"436":{"start":{"line":1251,"column":15},"end":{"line":1251,"column":null}},"437":{"start":{"line":1252,"column":1},"end":{"line":1267,"column":null}},"438":{"start":{"line":1253,"column":15},"end":{"line":1256,"column":null}},"439":{"start":{"line":1257,"column":2},"end":{"line":1257,"column":null}},"440":{"start":{"line":1257,"column":34},"end":{"line":1257,"column":null}},"441":{"start":{"line":1258,"column":2},"end":{"line":1262,"column":null}},"442":{"start":{"line":1259,"column":3},"end":{"line":1261,"column":null}},"443":{"start":{"line":1263,"column":2},"end":{"line":1263,"column":null}},"444":{"start":{"line":1265,"column":2},"end":{"line":1265,"column":null}},"445":{"start":{"line":1265,"column":19},"end":{"line":1265,"column":null}},"446":{"start":{"line":1266,"column":2},"end":{"line":1266,"column":null}},"447":{"start":{"line":1275,"column":1},"end":{"line":1289,"column":null}},"448":{"start":{"line":1276,"column":14},"end":{"line":1276,"column":null}},"449":{"start":{"line":1277,"column":16},"end":{"line":1277,"column":null}},"450":{"start":{"line":1278,"column":15},"end":{"line":1281,"column":null}},"451":{"start":{"line":1283,"column":4},"end":{"line":1284,"column":null}},"452":{"start":{"line":1285,"column":2},"end":{"line":1285,"column":null}},"453":{"start":{"line":1287,"column":2},"end":{"line":1287,"column":null}},"454":{"start":{"line":1287,"column":19},"end":{"line":1287,"column":null}},"455":{"start":{"line":1288,"column":2},"end":{"line":1288,"column":null}},"456":{"start":{"line":1297,"column":14},"end":{"line":1297,"column":null}},"457":{"start":{"line":1298,"column":1},"end":{"line":1298,"column":null}},"458":{"start":{"line":1298,"column":12},"end":{"line":1298,"column":null}},"459":{"start":{"line":1299,"column":1},"end":{"line":1315,"column":null}},"460":{"start":{"line":1300,"column":2},"end":{"line":1303,"column":null}},"461":{"start":{"line":1304,"column":18},"end":{"line":1304,"column":null}},"462":{"start":{"line":1305,"column":17},"end":{"line":1305,"column":null}},"463":{"start":{"line":1306,"column":2},"end":{"line":1310,"column":null}},"464":{"start":{"line":1311,"column":2},"end":{"line":1311,"column":null}},"465":{"start":{"line":1313,"column":2},"end":{"line":1313,"column":null}},"466":{"start":{"line":1313,"column":19},"end":{"line":1313,"column":null}},"467":{"start":{"line":1314,"column":2},"end":{"line":1314,"column":null}},"468":{"start":{"line":1326,"column":19},"end":{"line":1326,"column":null}},"469":{"start":{"line":1327,"column":21},"end":{"line":1327,"column":null}},"470":{"start":{"line":1330,"column":1},"end":{"line":1362,"column":null}},"471":{"start":{"line":1331,"column":2},"end":{"line":1341,"column":null}},"472":{"start":{"line":1343,"column":18},"end":{"line":1345,"column":null}},"473":{"start":{"line":1347,"column":3},"end":{"line":1347,"column":null}},"474":{"start":{"line":1348,"column":2},"end":{"line":1351,"column":null}},"475":{"start":{"line":1349,"column":3},"end":{"line":1349,"column":null}},"476":{"start":{"line":1350,"column":3},"end":{"line":1350,"column":null}},"477":{"start":{"line":1352,"column":2},"end":{"line":1355,"column":null}},"478":{"start":{"line":1353,"column":3},"end":{"line":1355,"column":null}},"479":{"start":{"line":1357,"column":2},"end":{"line":1361,"column":null}},"480":{"start":{"line":1358,"column":3},"end":{"line":1361,"column":null}},"481":{"start":{"line":1365,"column":1},"end":{"line":1393,"column":null}},"482":{"start":{"line":1366,"column":2},"end":{"line":1373,"column":null}},"483":{"start":{"line":1374,"column":18},"end":{"line":1376,"column":null}},"484":{"start":{"line":1378,"column":3},"end":{"line":1378,"column":null}},"485":{"start":{"line":1379,"column":2},"end":{"line":1382,"column":null}},"486":{"start":{"line":1380,"column":3},"end":{"line":1380,"column":null}},"487":{"start":{"line":1381,"column":3},"end":{"line":1381,"column":null}},"488":{"start":{"line":1383,"column":2},"end":{"line":1386,"column":null}},"489":{"start":{"line":1384,"column":3},"end":{"line":1386,"column":null}},"490":{"start":{"line":1388,"column":2},"end":{"line":1392,"column":null}},"491":{"start":{"line":1389,"column":3},"end":{"line":1392,"column":null}},"492":{"start":{"line":1396,"column":1},"end":{"line":1420,"column":null}},"493":{"start":{"line":1397,"column":2},"end":{"line":1413,"column":null}},"494":{"start":{"line":1398,"column":3},"end":{"line":1401,"column":null}},"495":{"start":{"line":1402,"column":19},"end":{"line":1404,"column":null}},"496":{"start":{"line":1406,"column":4},"end":{"line":1406,"column":null}},"497":{"start":{"line":1407,"column":3},"end":{"line":1411,"column":null}},"498":{"start":{"line":1412,"column":3},"end":{"line":1412,"column":null}},"499":{"start":{"line":1415,"column":2},"end":{"line":1419,"column":null}},"500":{"start":{"line":1416,"column":3},"end":{"line":1419,"column":null}},"501":{"start":{"line":1423,"column":1},"end":{"line":1436,"column":null}},"502":{"start":{"line":1424,"column":19},"end":{"line":1424,"column":null}},"503":{"start":{"line":1425,"column":2},"end":{"line":1433,"column":null}},"504":{"start":{"line":1426,"column":30},"end":{"line":1426,"column":null}},"505":{"start":{"line":1427,"column":3},"end":{"line":1430,"column":null}},"506":{"start":{"line":1431,"column":3},"end":{"line":1431,"column":null}},"507":{"start":{"line":1432,"column":3},"end":{"line":1432,"column":null}},"508":{"start":{"line":1435,"column":2},"end":{"line":1435,"column":null}},"509":{"start":{"line":1435,"column":19},"end":{"line":1435,"column":null}},"510":{"start":{"line":1439,"column":33},"end":{"line":1443,"column":null}},"511":{"start":{"line":1444,"column":1},"end":{"line":1444,"column":null}},"512":{"start":{"line":1444,"column":30},"end":{"line":1444,"column":null}},"513":{"start":{"line":1446,"column":1},"end":{"line":1446,"column":null}},"514":{"start":{"line":1447,"column":1},"end":{"line":1451,"column":null}},"515":{"start":{"line":1452,"column":1},"end":{"line":1456,"column":null}},"516":{"start":{"line":1457,"column":1},"end":{"line":1457,"column":null}},"517":{"start":{"line":1469,"column":11},"end":{"line":1469,"column":null}},"518":{"start":{"line":1470,"column":16},"end":{"line":1470,"column":null}},"519":{"start":{"line":1471,"column":1},"end":{"line":1471,"column":null}},"520":{"start":{"line":1471,"column":21},"end":{"line":1471,"column":null}},"521":{"start":{"line":1472,"column":1},"end":{"line":1472,"column":null}},"522":{"start":{"line":1472,"column":23},"end":{"line":1472,"column":null}},"523":{"start":{"line":1473,"column":1},"end":{"line":1473,"column":null}},"524":{"start":{"line":1473,"column":16},"end":{"line":1473,"column":null}},"525":{"start":{"line":1474,"column":1},"end":{"line":1474,"column":null}},"526":{"start":{"line":1474,"column":17},"end":{"line":1474,"column":null}},"527":{"start":{"line":1475,"column":1},"end":{"line":1475,"column":null}},"528":{"start":{"line":1483,"column":16},"end":{"line":1483,"column":null}},"529":{"start":{"line":1484,"column":1},"end":{"line":1486,"column":null}},"530":{"start":{"line":1487,"column":15},"end":{"line":1487,"column":null}},"531":{"start":{"line":1488,"column":1},"end":{"line":1490,"column":null}},"532":{"start":{"line":1489,"column":2},"end":{"line":1489,"column":null}},"533":{"start":{"line":1500,"column":13},"end":{"line":1500,"column":null}},"534":{"start":{"line":1501,"column":16},"end":{"line":1501,"column":null}},"535":{"start":{"line":1502,"column":7},"end":{"line":1502,"column":null}},"536":{"start":{"line":1504,"column":13},"end":{"line":1504,"column":null}},"537":{"start":{"line":1505,"column":14},"end":{"line":1505,"column":null}},"538":{"start":{"line":1507,"column":1},"end":{"line":1509,"column":null}},"539":{"start":{"line":1511,"column":21},"end":{"line":1516,"column":null}},"540":{"start":{"line":1512,"column":2},"end":{"line":1512,"column":null}},"541":{"start":{"line":1512,"column":13},"end":{"line":1512,"column":null}},"542":{"start":{"line":1513,"column":2},"end":{"line":1515,"column":null}},"543":{"start":{"line":1514,"column":3},"end":{"line":1514,"column":null}},"544":{"start":{"line":1518,"column":19},"end":{"line":1518,"column":null}},"545":{"start":{"line":1519,"column":1},"end":{"line":1523,"column":null}},"546":{"start":{"line":1520,"column":2},"end":{"line":1520,"column":null}},"547":{"start":{"line":1520,"column":20},"end":{"line":1520,"column":null}},"548":{"start":{"line":1521,"column":2},"end":{"line":1521,"column":null}},"549":{"start":{"line":1522,"column":2},"end":{"line":1522,"column":null}},"550":{"start":{"line":1525,"column":18},"end":{"line":1525,"column":null}},"551":{"start":{"line":1526,"column":1},"end":{"line":1557,"column":null}},"552":{"start":{"line":1527,"column":2},"end":{"line":1553,"column":null}},"553":{"start":{"line":1528,"column":20},"end":{"line":1532,"column":null}},"554":{"start":{"line":1534,"column":27},"end":{"line":1540,"column":null}},"555":{"start":{"line":1535,"column":36},"end":{"line":1535,"column":61}},"556":{"start":{"line":1537,"column":16},"end":{"line":1537,"column":null}},"557":{"start":{"line":1538,"column":16},"end":{"line":1538,"column":null}},"558":{"start":{"line":1539,"column":5},"end":{"line":1539,"column":null}},"559":{"start":{"line":1542,"column":3},"end":{"line":1550,"column":null}},"560":{"start":{"line":1543,"column":4},"end":{"line":1543,"column":null}},"561":{"start":{"line":1543,"column":25},"end":{"line":1543,"column":null}},"562":{"start":{"line":1544,"column":4},"end":{"line":1544,"column":null}},"563":{"start":{"line":1545,"column":17},"end":{"line":1545,"column":null}},"564":{"start":{"line":1546,"column":20},"end":{"line":1546,"column":null}},"565":{"start":{"line":1547,"column":4},"end":{"line":1547,"column":null}},"566":{"start":{"line":1548,"column":4},"end":{"line":1548,"column":null}},"567":{"start":{"line":1549,"column":4},"end":{"line":1549,"column":null}},"568":{"start":{"line":1552,"column":3},"end":{"line":1552,"column":null}},"569":{"start":{"line":1555,"column":2},"end":{"line":1555,"column":null}},"570":{"start":{"line":1556,"column":2},"end":{"line":1556,"column":null}},"571":{"start":{"line":1567,"column":18},"end":{"line":1598,"column":null}},"572":{"start":{"line":1570,"column":14},"end":{"line":1572,"column":null}},"573":{"start":{"line":1573,"column":3},"end":{"line":1573,"column":null}},"574":{"start":{"line":1575,"column":21},"end":{"line":1585,"column":null}},"575":{"start":{"line":1586,"column":3},"end":{"line":1586,"column":null}},"576":{"start":{"line":1586,"column":19},"end":{"line":1586,"column":null}},"577":{"start":{"line":1587,"column":3},"end":{"line":1596,"column":null}},"578":{"start":{"line":1588,"column":4},"end":{"line":1588,"column":null}},"579":{"start":{"line":1589,"column":4},"end":{"line":1591,"column":null}},"580":{"start":{"line":1590,"column":5},"end":{"line":1590,"column":null}},"581":{"start":{"line":1593,"column":4},"end":{"line":1595,"column":null}},"582":{"start":{"line":1600,"column":1},"end":{"line":1604,"column":null}},"583":{"start":{"line":1605,"column":1},"end":{"line":1610,"column":null}},"584":{"start":{"line":1606,"column":2},"end":{"line":1609,"column":null}},"585":{"start":{"line":1607,"column":3},"end":{"line":1607,"column":null}},"586":{"start":{"line":1608,"column":3},"end":{"line":1608,"column":null}},"587":{"start":{"line":1612,"column":1},"end":{"line":1614,"column":null}},"588":{"start":{"line":1613,"column":2},"end":{"line":1613,"column":null}},"589":{"start":{"line":1629,"column":1},"end":{"line":1629,"column":null}},"590":{"start":{"line":1630,"column":21},"end":{"line":1630,"column":null}},"591":{"start":{"line":1631,"column":21},"end":{"line":1631,"column":null}},"592":{"start":{"line":1633,"column":1},"end":{"line":1635,"column":null}},"593":{"start":{"line":1634,"column":2},"end":{"line":1634,"column":null}},"594":{"start":{"line":1636,"column":1},"end":{"line":1638,"column":null}},"595":{"start":{"line":1637,"column":2},"end":{"line":1637,"column":null}},"596":{"start":{"line":1640,"column":1},"end":{"line":1646,"column":null}},"597":{"start":{"line":1641,"column":2},"end":{"line":1643,"column":null}},"598":{"start":{"line":1642,"column":3},"end":{"line":1642,"column":null}},"599":{"start":{"line":1644,"column":2},"end":{"line":1644,"column":null}},"600":{"start":{"line":1645,"column":2},"end":{"line":1645,"column":null}},"601":{"start":{"line":1648,"column":16},"end":{"line":1648,"column":null}},"602":{"start":{"line":1649,"column":1},"end":{"line":1649,"column":null}},"603":{"start":{"line":1649,"column":14},"end":{"line":1649,"column":null}},"604":{"start":{"line":1650,"column":1},"end":{"line":1650,"column":null}},"605":{"start":{"line":1650,"column":24},"end":{"line":1650,"column":null}},"606":{"start":{"line":1651,"column":1},"end":{"line":1656,"column":null}},"607":{"start":{"line":1665,"column":15},"end":{"line":1665,"column":null}},"608":{"start":{"line":1666,"column":25},"end":{"line":1666,"column":null}},"609":{"start":{"line":1667,"column":1},"end":{"line":1669,"column":null}},"610":{"start":{"line":1668,"column":2},"end":{"line":1668,"column":null}},"611":{"start":{"line":1670,"column":1},"end":{"line":1672,"column":null}},"612":{"start":{"line":1671,"column":2},"end":{"line":1671,"column":null}},"613":{"start":{"line":1674,"column":18},"end":{"line":1674,"column":null}},"614":{"start":{"line":1675,"column":1},"end":{"line":1678,"column":null}},"615":{"start":{"line":1676,"column":2},"end":{"line":1676,"column":null}},"616":{"start":{"line":1677,"column":2},"end":{"line":1677,"column":null}},"617":{"start":{"line":1679,"column":1},"end":{"line":1682,"column":null}},"618":{"start":{"line":1680,"column":2},"end":{"line":1680,"column":null}},"619":{"start":{"line":1681,"column":2},"end":{"line":1681,"column":null}},"620":{"start":{"line":1683,"column":1},"end":{"line":1685,"column":null}},"621":{"start":{"line":1684,"column":2},"end":{"line":1684,"column":null}},"622":{"start":{"line":1699,"column":14},"end":{"line":1699,"column":null}},"623":{"start":{"line":1700,"column":1},"end":{"line":1702,"column":null}},"624":{"start":{"line":1701,"column":2},"end":{"line":1701,"column":null}},"625":{"start":{"line":1703,"column":1},"end":{"line":1703,"column":null}},"626":{"start":{"line":1705,"column":16},"end":{"line":1710,"column":null}},"627":{"start":{"line":1711,"column":1},"end":{"line":1711,"column":null}},"628":{"start":{"line":1725,"column":14},"end":{"line":1725,"column":null}},"629":{"start":{"line":1726,"column":1},"end":{"line":1728,"column":null}},"630":{"start":{"line":1727,"column":2},"end":{"line":1727,"column":null}},"631":{"start":{"line":1730,"column":1},"end":{"line":1730,"column":null}},"632":{"start":{"line":1733,"column":13},"end":{"line":1733,"column":null}},"633":{"start":{"line":1734,"column":1},"end":{"line":1734,"column":null}},"634":{"start":{"line":1737,"column":1},"end":{"line":1737,"column":null}},"635":{"start":{"line":1738,"column":14},"end":{"line":1738,"column":null}},"636":{"start":{"line":1739,"column":19},"end":{"line":1739,"column":null}},"637":{"start":{"line":1740,"column":1},"end":{"line":1740,"column":null}},"638":{"start":{"line":1743,"column":16},"end":{"line":1748,"column":null}},"639":{"start":{"line":1751,"column":16},"end":{"line":1751,"column":null}},"640":{"start":{"line":1752,"column":19},"end":{"line":1756,"column":null}},"641":{"start":{"line":1757,"column":1},"end":{"line":1757,"column":null}},"642":{"start":{"line":1759,"column":1},"end":{"line":1761,"column":null}},"643":{"start":{"line":1762,"column":1},"end":{"line":1762,"column":null}},"644":{"start":{"line":1778,"column":14},"end":{"line":1778,"column":null}},"645":{"start":{"line":1779,"column":34},"end":{"line":1779,"column":null}},"646":{"start":{"line":1780,"column":1},"end":{"line":1784,"column":null}},"647":{"start":{"line":1781,"column":2},"end":{"line":1781,"column":null}},"648":{"start":{"line":1781,"column":23},"end":{"line":1781,"column":null}},"649":{"start":{"line":1782,"column":2},"end":{"line":1782,"column":null}},"650":{"start":{"line":1783,"column":2},"end":{"line":1783,"column":null}},"651":{"start":{"line":1785,"column":1},"end":{"line":1785,"column":null}},"652":{"start":{"line":1789,"column":1},"end":{"line":1793,"column":null}},"653":{"start":{"line":1790,"column":13},"end":{"line":1790,"column":null}},"654":{"start":{"line":1791,"column":13},"end":{"line":1791,"column":null}},"655":{"start":{"line":1792,"column":2},"end":{"line":1792,"column":null}},"656":{"start":{"line":1797,"column":12},"end":{"line":1797,"column":null}},"657":{"start":{"line":1799,"column":2},"end":{"line":1803,"column":null}},"658":{"start":{"line":1804,"column":16},"end":{"line":1804,"column":null}},"659":{"start":{"line":1806,"column":2},"end":{"line":1808,"column":null}},"660":{"start":{"line":1809,"column":7},"end":{"line":1809,"column":null}},"661":{"start":{"line":1811,"column":2},"end":{"line":1811,"column":null}},"662":{"start":{"line":1812,"column":1},"end":{"line":1812,"column":null}},"663":{"start":{"line":1820,"column":13},"end":{"line":1820,"column":null}},"664":{"start":{"line":1821,"column":16},"end":{"line":1821,"column":null}},"665":{"start":{"line":1822,"column":7},"end":{"line":1822,"column":null}},"666":{"start":{"line":1823,"column":15},"end":{"line":1823,"column":null}},"667":{"start":{"line":1826,"column":20},"end":{"line":1826,"column":null}},"668":{"start":{"line":1827,"column":17},"end":{"line":1831,"column":null}},"669":{"start":{"line":1832,"column":18},"end":{"line":1836,"column":null}},"670":{"start":{"line":1838,"column":18},"end":{"line":1850,"column":null}},"671":{"start":{"line":1839,"column":40},"end":{"line":1849,"column":4}},"672":{"start":{"line":1852,"column":1},"end":{"line":1852,"column":null}},"673":{"start":{"line":1855,"column":0},"end":{"line":1858,"column":null}},"674":{"start":{"line":1860,"column":0},"end":{"line":1872,"column":null}},"675":{"start":{"line":1865,"column":2},"end":{"line":1865,"column":null}},"676":{"start":{"line":1866,"column":2},"end":{"line":1871,"column":null}},"677":{"start":{"line":1867,"column":3},"end":{"line":1867,"column":null}},"678":{"start":{"line":1869,"column":3},"end":{"line":1869,"column":null}},"679":{"start":{"line":1870,"column":3},"end":{"line":1870,"column":null}},"680":{"start":{"line":1874,"column":0},"end":{"line":1901,"column":null}},"681":{"start":{"line":1894,"column":15},"end":{"line":1894,"column":null}},"682":{"start":{"line":1895,"column":2},"end":{"line":1900,"column":null}},"683":{"start":{"line":1896,"column":3},"end":{"line":1896,"column":null}},"684":{"start":{"line":1898,"column":3},"end":{"line":1898,"column":null}},"685":{"start":{"line":1899,"column":3},"end":{"line":1899,"column":null}},"686":{"start":{"line":1903,"column":0},"end":{"line":1929,"column":null}},"687":{"start":{"line":1916,"column":26},"end":{"line":1916,"column":null}},"688":{"start":{"line":1917,"column":26},"end":{"line":1917,"column":null}},"689":{"start":{"line":1919,"column":2},"end":{"line":1922,"column":null}},"690":{"start":{"line":1920,"column":3},"end":{"line":1920,"column":null}},"691":{"start":{"line":1921,"column":3},"end":{"line":1921,"column":null}},"692":{"start":{"line":1923,"column":2},"end":{"line":1926,"column":null}},"693":{"start":{"line":1924,"column":3},"end":{"line":1924,"column":null}},"694":{"start":{"line":1925,"column":3},"end":{"line":1925,"column":null}},"695":{"start":{"line":1928,"column":2},"end":{"line":1928,"column":null}},"696":{"start":{"line":1931,"column":0},"end":{"line":1946,"column":null}},"697":{"start":{"line":1944,"column":2},"end":{"line":1944,"column":null}},"698":{"start":{"line":1945,"column":2},"end":{"line":1945,"column":null}},"699":{"start":{"line":1948,"column":0},"end":{"line":1970,"column":null}},"700":{"start":{"line":1963,"column":15},"end":{"line":1963,"column":null}},"701":{"start":{"line":1964,"column":2},"end":{"line":1969,"column":null}},"702":{"start":{"line":1965,"column":3},"end":{"line":1965,"column":null}},"703":{"start":{"line":1967,"column":3},"end":{"line":1967,"column":null}},"704":{"start":{"line":1968,"column":3},"end":{"line":1968,"column":null}},"705":{"start":{"line":1972,"column":0},"end":{"line":2000,"column":null}},"706":{"start":{"line":1986,"column":2},"end":{"line":1986,"column":null}},"707":{"start":{"line":1987,"column":26},"end":{"line":1987,"column":null}},"708":{"start":{"line":1988,"column":26},"end":{"line":1988,"column":null}},"709":{"start":{"line":1990,"column":2},"end":{"line":1993,"column":null}},"710":{"start":{"line":1991,"column":3},"end":{"line":1991,"column":null}},"711":{"start":{"line":1992,"column":3},"end":{"line":1992,"column":null}},"712":{"start":{"line":1994,"column":2},"end":{"line":1997,"column":null}},"713":{"start":{"line":1995,"column":3},"end":{"line":1995,"column":null}},"714":{"start":{"line":1996,"column":3},"end":{"line":1996,"column":null}},"715":{"start":{"line":1999,"column":2},"end":{"line":1999,"column":null}},"716":{"start":{"line":2002,"column":0},"end":{"line":2042,"column":null}},"717":{"start":{"line":2026,"column":2},"end":{"line":2026,"column":null}},"718":{"start":{"line":2027,"column":2},"end":{"line":2027,"column":null}},"719":{"start":{"line":2028,"column":15},"end":{"line":2028,"column":null}},"720":{"start":{"line":2029,"column":2},"end":{"line":2041,"column":null}},"721":{"start":{"line":2030,"column":18},"end":{"line":2030,"column":null}},"722":{"start":{"line":2031,"column":3},"end":{"line":2036,"column":null}},"723":{"start":{"line":2032,"column":4},"end":{"line":2035,"column":null}},"724":{"start":{"line":2033,"column":5},"end":{"line":2033,"column":null}},"725":{"start":{"line":2034,"column":5},"end":{"line":2034,"column":null}},"726":{"start":{"line":2037,"column":3},"end":{"line":2037,"column":null}},"727":{"start":{"line":2039,"column":3},"end":{"line":2039,"column":null}},"728":{"start":{"line":2040,"column":3},"end":{"line":2040,"column":null}},"729":{"start":{"line":2044,"column":0},"end":{"line":2071,"column":null}},"730":{"start":{"line":2055,"column":2},"end":{"line":2055,"column":null}},"731":{"start":{"line":2056,"column":2},"end":{"line":2056,"column":null}},"732":{"start":{"line":2057,"column":15},"end":{"line":2057,"column":null}},"733":{"start":{"line":2058,"column":2},"end":{"line":2070,"column":null}},"734":{"start":{"line":2059,"column":22},"end":{"line":2059,"column":null}},"735":{"start":{"line":2060,"column":3},"end":{"line":2065,"column":null}},"736":{"start":{"line":2061,"column":4},"end":{"line":2064,"column":null}},"737":{"start":{"line":2062,"column":5},"end":{"line":2062,"column":null}},"738":{"start":{"line":2063,"column":5},"end":{"line":2063,"column":null}},"739":{"start":{"line":2066,"column":3},"end":{"line":2066,"column":null}},"740":{"start":{"line":2068,"column":3},"end":{"line":2068,"column":null}},"741":{"start":{"line":2069,"column":3},"end":{"line":2069,"column":null}},"742":{"start":{"line":2126,"column":1},"end":{"line":2126,"column":null}},"743":{"start":{"line":2128,"column":0},"end":{"line":2130,"column":null}},"744":{"start":{"line":2129,"column":1},"end":{"line":2129,"column":null}}},"fnMap":{"0":{"name":"createDefaultDeps","decl":{"start":{"line":78,"column":9},"end":{"line":78,"column":38}},"loc":{"start":{"line":78,"column":38},"end":{"line":99,"column":null}},"line":78},"1":{"name":"(anonymous_1)","decl":{"start":{"line":197,"column":7},"end":{"line":197,"column":8}},"loc":{"start":{"line":197,"column":17},"end":{"line":200,"column":null}},"line":197},"2":{"name":"(anonymous_2)","decl":{"start":{"line":212,"column":14},"end":{"line":212,"column":15}},"loc":{"start":{"line":212,"column":28},"end":{"line":232,"column":2}},"line":212},"3":{"name":"readEnv","decl":{"start":{"line":234,"column":9},"end":{"line":234,"column":17}},"loc":{"start":{"line":234,"column":66},"end":{"line":263,"column":null}},"line":234},"4":{"name":"(anonymous_4)","decl":{"start":{"line":239,"column":30},"end":{"line":239,"column":31}},"loc":{"start":{"line":239,"column":39},"end":{"line":239,"column":72}},"line":239},"5":{"name":"runExec","decl":{"start":{"line":271,"column":15},"end":{"line":271,"column":null}},"loc":{"start":{"line":275,"column":23},"end":{"line":297,"column":null}},"line":275},"6":{"name":"runCommandWithTimeout","decl":{"start":{"line":307,"column":15},"end":{"line":307,"column":null}},"loc":{"start":{"line":310,"column":24},"end":{"line":342,"column":null}},"line":310},"7":{"name":"(anonymous_7)","decl":{"start":{"line":312,"column":26},"end":{"line":312,"column":27}},"loc":{"start":{"line":312,"column":47},"end":{"line":341,"column":2}},"line":312},"8":{"name":"(anonymous_8)","decl":{"start":{"line":319,"column":27},"end":{"line":319,"column":33}},"loc":{"start":{"line":319,"column":33},"end":{"line":321,"column":5}},"line":319},"9":{"name":"(anonymous_9)","decl":{"start":{"line":323,"column":27},"end":{"line":323,"column":28}},"loc":{"start":{"line":323,"column":34},"end":{"line":325,"column":3}},"line":323},"10":{"name":"(anonymous_10)","decl":{"start":{"line":326,"column":27},"end":{"line":326,"column":28}},"loc":{"start":{"line":326,"column":34},"end":{"line":328,"column":3}},"line":326},"11":{"name":"(anonymous_11)","decl":{"start":{"line":329,"column":20},"end":{"line":329,"column":21}},"loc":{"start":{"line":329,"column":29},"end":{"line":334,"column":3}},"line":329},"12":{"name":"(anonymous_12)","decl":{"start":{"line":335,"column":20},"end":{"line":335,"column":21}},"loc":{"start":{"line":335,"column":38},"end":{"line":340,"column":3}},"line":335},"13":{"name":"(anonymous_13)","decl":{"start":{"line":349,"column":1},"end":{"line":349,"column":13}},"loc":{"start":{"line":349,"column":45},"end":{"line":354,"column":null}},"line":349},"14":{"name":"isErrno","decl":{"start":{"line":357,"column":9},"end":{"line":357,"column":17}},"loc":{"start":{"line":357,"column":61},"end":{"line":359,"column":null}},"line":357},"15":{"name":"describePortOwner","decl":{"start":{"line":361,"column":15},"end":{"line":361,"column":33}},"loc":{"start":{"line":361,"column":76},"end":{"line":376,"column":null}},"line":361},"16":{"name":"ensurePortAvailable","decl":{"start":{"line":378,"column":15},"end":{"line":378,"column":35}},"loc":{"start":{"line":378,"column":64},"end":{"line":397,"column":null}},"line":378},"17":{"name":"(anonymous_17)","decl":{"start":{"line":381,"column":26},"end":{"line":381,"column":27}},"loc":{"start":{"line":381,"column":47},"end":{"line":389,"column":3}},"line":381},"18":{"name":"(anonymous_18)","decl":{"start":{"line":384,"column":19},"end":{"line":384,"column":20}},"loc":{"start":{"line":384,"column":28},"end":{"line":384,"column":39}},"line":384},"19":{"name":"(anonymous_19)","decl":{"start":{"line":385,"column":23},"end":{"line":385,"column":29}},"loc":{"start":{"line":385,"column":29},"end":{"line":387,"column":5}},"line":385},"20":{"name":"(anonymous_20)","decl":{"start":{"line":386,"column":18},"end":{"line":386,"column":24}},"loc":{"start":{"line":386,"column":24},"end":{"line":386,"column":33}},"line":386},"21":{"name":"handlePortError","decl":{"start":{"line":399,"column":15},"end":{"line":399,"column":null}},"loc":{"start":{"line":404,"column":18},"end":{"line":434,"column":null}},"line":404},"22":{"name":"ensureBinary","decl":{"start":{"line":436,"column":15},"end":{"line":436,"column":null}},"loc":{"start":{"line":440,"column":17},"end":{"line":446,"column":null}},"line":440},"23":{"name":"(anonymous_23)","decl":{"start":{"line":442,"column":35},"end":{"line":442,"column":41}},"loc":{"start":{"line":442,"column":41},"end":{"line":445,"column":2}},"line":442},"24":{"name":"promptYesNo","decl":{"start":{"line":448,"column":15},"end":{"line":448,"column":null}},"loc":{"start":{"line":451,"column":20},"end":{"line":462,"column":null}},"line":451},"25":{"name":"loadConfig","decl":{"start":{"line":495,"column":9},"end":{"line":495,"column":37}},"loc":{"start":{"line":495,"column":37},"end":{"line":507,"column":null}},"line":495},"26":{"name":"applyTemplate","decl":{"start":{"line":520,"column":9},"end":{"line":520,"column":23}},"loc":{"start":{"line":520,"column":58},"end":{"line":526,"column":null}},"line":520},"27":{"name":"(anonymous_27)","decl":{"start":{"line":522,"column":40},"end":{"line":522,"column":41}},"loc":{"start":{"line":522,"column":52},"end":{"line":525,"column":2}},"line":522},"28":{"name":"resolveStorePath","decl":{"start":{"line":540,"column":9},"end":{"line":540,"column":26}},"loc":{"start":{"line":540,"column":42},"end":{"line":544,"column":null}},"line":540},"29":{"name":"loadSessionStore","decl":{"start":{"line":546,"column":9},"end":{"line":546,"column":26}},"loc":{"start":{"line":546,"column":75},"end":{"line":557,"column":null}},"line":546},"30":{"name":"saveSessionStore","decl":{"start":{"line":559,"column":15},"end":{"line":559,"column":32}},"loc":{"start":{"line":559,"column":88},"end":{"line":562,"column":null}},"line":559},"31":{"name":"deriveSessionKey","decl":{"start":{"line":564,"column":9},"end":{"line":564,"column":26}},"loc":{"start":{"line":564,"column":64},"end":{"line":568,"column":null}},"line":564},"32":{"name":"getReplyFromConfig","decl":{"start":{"line":570,"column":15},"end":{"line":570,"column":null}},"loc":{"start":{"line":575,"column":31},"end":{"line":754,"column":null}},"line":575},"33":{"name":"(anonymous_33)","decl":{"start":{"line":582,"column":22},"end":{"line":582,"column":34}},"loc":{"start":{"line":582,"column":34},"end":{"line":586,"column":null}},"line":582},"34":{"name":"(anonymous_34)","decl":{"start":{"line":680,"column":31},"end":{"line":680,"column":32}},"loc":{"start":{"line":680,"column":41},"end":{"line":680,"column":75}},"line":680},"35":{"name":"(anonymous_35)","decl":{"start":{"line":693,"column":9},"end":{"line":693,"column":10}},"loc":{"start":{"line":693,"column":19},"end":{"line":693,"column":53}},"line":693},"36":{"name":"autoReplyIfConfigured","decl":{"start":{"line":756,"column":15},"end":{"line":756,"column":null}},"loc":{"start":{"line":761,"column":17},"end":{"line":810,"column":null}},"line":761},"37":{"name":"(anonymous_37)","decl":{"start":{"line":773,"column":17},"end":{"line":773,"column":23}},"loc":{"start":{"line":773,"column":23},"end":{"line":773,"column":null}},"line":773},"38":{"name":"createClient","decl":{"start":{"line":812,"column":9},"end":{"line":812,"column":22}},"loc":{"start":{"line":812,"column":38},"end":{"line":822,"column":null}},"line":812},"39":{"name":"sendTypingIndicator","decl":{"start":{"line":824,"column":15},"end":{"line":824,"column":null}},"loc":{"start":{"line":828,"column":2},"end":{"line":851,"column":null}},"line":828},"40":{"name":"sendMessage","decl":{"start":{"line":853,"column":15},"end":{"line":853,"column":null}},"loc":{"start":{"line":857,"column":2},"end":{"line":902,"column":null}},"line":857},"41":{"name":"waitForFinalStatus","decl":{"start":{"line":907,"column":15},"end":{"line":907,"column":null}},"loc":{"start":{"line":913,"column":2},"end":{"line":936,"column":null}},"line":913},"42":{"name":"startWebhook","decl":{"start":{"line":938,"column":15},"end":{"line":938,"column":null}},"loc":{"start":{"line":944,"column":34},"end":{"line":1030,"column":null}},"line":944},"43":{"name":"(anonymous_43)","decl":{"start":{"line":952,"column":9},"end":{"line":952,"column":10}},"loc":{"start":{"line":952,"column":30},"end":{"line":955,"column":2}},"line":952},"44":{"name":"(anonymous_44)","decl":{"start":{"line":957,"column":26},"end":{"line":957,"column":33}},"loc":{"start":{"line":957,"column":65},"end":{"line":999,"column":2}},"line":957},"45":{"name":"(anonymous_45)","decl":{"start":{"line":977,"column":19},"end":{"line":977,"column":25}},"loc":{"start":{"line":977,"column":25},"end":{"line":977,"column":null}},"line":977},"46":{"name":"(anonymous_46)","decl":{"start":{"line":1001,"column":9},"end":{"line":1001,"column":10}},"loc":{"start":{"line":1001,"column":24},"end":{"line":1004,"column":2}},"line":1001},"47":{"name":"(anonymous_47)","decl":{"start":{"line":1006,"column":26},"end":{"line":1006,"column":27}},"loc":{"start":{"line":1006,"column":47},"end":{"line":1029,"column":2}},"line":1006},"48":{"name":"(anonymous_48)","decl":{"start":{"line":1009,"column":22},"end":{"line":1009,"column":28}},"loc":{"start":{"line":1009,"column":28},"end":{"line":1015,"column":null}},"line":1009},"49":{"name":"(anonymous_49)","decl":{"start":{"line":1017,"column":18},"end":{"line":1017,"column":19}},"loc":{"start":{"line":1017,"column":50},"end":{"line":1020,"column":null}},"line":1017},"50":{"name":"(anonymous_50)","decl":{"start":{"line":1022,"column":18},"end":{"line":1022,"column":24}},"loc":{"start":{"line":1022,"column":24},"end":{"line":1025,"column":null}},"line":1022},"51":{"name":"waitForever","decl":{"start":{"line":1032,"column":9},"end":{"line":1032,"column":23}},"loc":{"start":{"line":1032,"column":23},"end":{"line":1039,"column":null}},"line":1032},"52":{"name":"(anonymous_52)","decl":{"start":{"line":1034,"column":30},"end":{"line":1034,"column":36}},"loc":{"start":{"line":1034,"column":36},"end":{"line":1034,"column":40}},"line":1034},"53":{"name":"(anonymous_53)","decl":{"start":{"line":1036,"column":26},"end":{"line":1036,"column":32}},"loc":{"start":{"line":1036,"column":32},"end":{"line":1038,"column":2}},"line":1036},"54":{"name":"getTailnetHostname","decl":{"start":{"line":1041,"column":15},"end":{"line":1041,"column":34}},"loc":{"start":{"line":1041,"column":66},"end":{"line":1057,"column":null}},"line":1041},"55":{"name":"ensureGoInstalled","decl":{"start":{"line":1059,"column":15},"end":{"line":1059,"column":null}},"loc":{"start":{"line":1063,"column":2},"end":{"line":1080,"column":null}},"line":1063},"56":{"name":"(anonymous_56)","decl":{"start":{"line":1066,"column":2},"end":{"line":1066,"column":8}},"loc":{"start":{"line":1066,"column":8},"end":{"line":1066,"column":null}},"line":1066},"57":{"name":"(anonymous_57)","decl":{"start":{"line":1067,"column":2},"end":{"line":1067,"column":8}},"loc":{"start":{"line":1067,"column":8},"end":{"line":1067,"column":null}},"line":1067},"58":{"name":"ensureTailscaledInstalled","decl":{"start":{"line":1082,"column":15},"end":{"line":1082,"column":null}},"loc":{"start":{"line":1086,"column":2},"end":{"line":1104,"column":null}},"line":1086},"59":{"name":"(anonymous_59)","decl":{"start":{"line":1089,"column":2},"end":{"line":1089,"column":8}},"loc":{"start":{"line":1089,"column":8},"end":{"line":1089,"column":null}},"line":1089},"60":{"name":"(anonymous_60)","decl":{"start":{"line":1090,"column":2},"end":{"line":1090,"column":8}},"loc":{"start":{"line":1090,"column":8},"end":{"line":1090,"column":null}},"line":1090},"61":{"name":"ensureFunnel","decl":{"start":{"line":1106,"column":15},"end":{"line":1106,"column":null}},"loc":{"start":{"line":1111,"column":2},"end":{"line":1195,"column":null}},"line":1111},"62":{"name":"findWhatsappSenderSid","decl":{"start":{"line":1197,"column":15},"end":{"line":1197,"column":null}},"loc":{"start":{"line":1202,"column":2},"end":{"line":1244,"column":null}},"line":1202},"63":{"name":"(anonymous_63)","decl":{"start":{"line":1220,"column":3},"end":{"line":1220,"column":4}},"loc":{"start":{"line":1221,"column":5},"end":{"line":1224,"column":null}},"line":1221},"64":{"name":"findIncomingNumberSid","decl":{"start":{"line":1246,"column":15},"end":{"line":1246,"column":null}},"loc":{"start":{"line":1248,"column":26},"end":{"line":1268,"column":null}},"line":1248},"65":{"name":"findMessagingServiceSid","decl":{"start":{"line":1270,"column":15},"end":{"line":1270,"column":null}},"loc":{"start":{"line":1272,"column":26},"end":{"line":1290,"column":null}},"line":1272},"66":{"name":"setMessagingServiceWebhook","decl":{"start":{"line":1292,"column":15},"end":{"line":1292,"column":null}},"loc":{"start":{"line":1296,"column":20},"end":{"line":1316,"column":null}},"line":1296},"67":{"name":"updateWebhook","decl":{"start":{"line":1318,"column":15},"end":{"line":1318,"column":null}},"loc":{"start":{"line":1324,"column":2},"end":{"line":1458,"column":null}},"line":1324},"68":{"name":"formatTwilioError","decl":{"start":{"line":1468,"column":9},"end":{"line":1468,"column":27}},"loc":{"start":{"line":1468,"column":49},"end":{"line":1476,"column":null}},"line":1468},"69":{"name":"logTwilioSendError","decl":{"start":{"line":1478,"column":9},"end":{"line":1478,"column":null}},"loc":{"start":{"line":1482,"column":2},"end":{"line":1491,"column":null}},"line":1482},"70":{"name":"monitor","decl":{"start":{"line":1493,"column":15},"end":{"line":1493,"column":null}},"loc":{"start":{"line":1498,"column":2},"end":{"line":1558,"column":null}},"line":1498},"71":{"name":"(anonymous_71)","decl":{"start":{"line":1511,"column":21},"end":{"line":1511,"column":22}},"loc":{"start":{"line":1511,"column":45},"end":{"line":1516,"column":null}},"line":1511},"72":{"name":"(anonymous_72)","decl":{"start":{"line":1519,"column":24},"end":{"line":1519,"column":30}},"loc":{"start":{"line":1519,"column":30},"end":{"line":1523,"column":2}},"line":1519},"73":{"name":"(anonymous_73)","decl":{"start":{"line":1535,"column":12},"end":{"line":1535,"column":13}},"loc":{"start":{"line":1535,"column":36},"end":{"line":1535,"column":61}},"line":1535},"74":{"name":"(anonymous_74)","decl":{"start":{"line":1536,"column":10},"end":{"line":1536,"column":11}},"loc":{"start":{"line":1536,"column":54},"end":{"line":1540,"column":5}},"line":1536},"75":{"name":"monitorWebProvider","decl":{"start":{"line":1560,"column":15},"end":{"line":1560,"column":null}},"loc":{"start":{"line":1565,"column":2},"end":{"line":1615,"column":null}},"line":1565},"76":{"name":"(anonymous_76)","decl":{"start":{"line":1569,"column":13},"end":{"line":1569,"column":20}},"loc":{"start":{"line":1569,"column":28},"end":{"line":1597,"column":null}},"line":1569},"77":{"name":"(anonymous_77)","decl":{"start":{"line":1605,"column":22},"end":{"line":1605,"column":28}},"loc":{"start":{"line":1605,"column":28},"end":{"line":1610,"column":2}},"line":1605},"78":{"name":"(anonymous_78)","decl":{"start":{"line":1606,"column":32},"end":{"line":1606,"column":38}},"loc":{"start":{"line":1606,"column":38},"end":{"line":1609,"column":3}},"line":1606},"79":{"name":"performSend","decl":{"start":{"line":1617,"column":15},"end":{"line":1617,"column":null}},"loc":{"start":{"line":1628,"column":2},"end":{"line":1657,"column":null}},"line":1628},"80":{"name":"performStatus","decl":{"start":{"line":1659,"column":15},"end":{"line":1659,"column":null}},"loc":{"start":{"line":1664,"column":2},"end":{"line":1686,"column":null}},"line":1664},"81":{"name":"performWebhookSetup","decl":{"start":{"line":1688,"column":15},"end":{"line":1688,"column":null}},"loc":{"start":{"line":1698,"column":2},"end":{"line":1712,"column":null}},"line":1698},"82":{"name":"performUp","decl":{"start":{"line":1714,"column":15},"end":{"line":1714,"column":null}},"loc":{"start":{"line":1724,"column":2},"end":{"line":1763,"column":null}},"line":1724},"83":{"name":"uniqueBySid","decl":{"start":{"line":1777,"column":9},"end":{"line":1777,"column":21}},"loc":{"start":{"line":1777,"column":65},"end":{"line":1786,"column":null}},"line":1777},"84":{"name":"sortByDateDesc","decl":{"start":{"line":1788,"column":9},"end":{"line":1788,"column":24}},"loc":{"start":{"line":1788,"column":68},"end":{"line":1794,"column":null}},"line":1788},"85":{"name":"(anonymous_85)","decl":{"start":{"line":1789,"column":27},"end":{"line":1789,"column":28}},"loc":{"start":{"line":1789,"column":37},"end":{"line":1793,"column":2}},"line":1789},"86":{"name":"formatMessageLine","decl":{"start":{"line":1796,"column":9},"end":{"line":1796,"column":27}},"loc":{"start":{"line":1796,"column":53},"end":{"line":1813,"column":null}},"line":1796},"87":{"name":"listRecentMessages","decl":{"start":{"line":1815,"column":15},"end":{"line":1815,"column":null}},"loc":{"start":{"line":1819,"column":28},"end":{"line":1853,"column":null}},"line":1819},"88":{"name":"(anonymous_88)","decl":{"start":{"line":1839,"column":32},"end":{"line":1839,"column":33}},"loc":{"start":{"line":1839,"column":40},"end":{"line":1849,"column":4}},"line":1839},"89":{"name":"(anonymous_89)","decl":{"start":{"line":1864,"column":9},"end":{"line":1864,"column":16}},"loc":{"start":{"line":1864,"column":25},"end":{"line":1872,"column":2}},"line":1864},"90":{"name":"(anonymous_90)","decl":{"start":{"line":1893,"column":9},"end":{"line":1893,"column":16}},"loc":{"start":{"line":1893,"column":25},"end":{"line":1901,"column":2}},"line":1893},"91":{"name":"(anonymous_91)","decl":{"start":{"line":1915,"column":9},"end":{"line":1915,"column":16}},"loc":{"start":{"line":1915,"column":25},"end":{"line":1929,"column":2}},"line":1915},"92":{"name":"(anonymous_92)","decl":{"start":{"line":1943,"column":9},"end":{"line":1943,"column":16}},"loc":{"start":{"line":1943,"column":25},"end":{"line":1946,"column":2}},"line":1943},"93":{"name":"(anonymous_93)","decl":{"start":{"line":1962,"column":9},"end":{"line":1962,"column":16}},"loc":{"start":{"line":1962,"column":25},"end":{"line":1970,"column":2}},"line":1962},"94":{"name":"(anonymous_94)","decl":{"start":{"line":1985,"column":9},"end":{"line":1985,"column":16}},"loc":{"start":{"line":1985,"column":25},"end":{"line":2000,"column":2}},"line":1985},"95":{"name":"(anonymous_95)","decl":{"start":{"line":2025,"column":9},"end":{"line":2025,"column":16}},"loc":{"start":{"line":2025,"column":25},"end":{"line":2042,"column":2}},"line":2025},"96":{"name":"(anonymous_96)","decl":{"start":{"line":2031,"column":24},"end":{"line":2031,"column":30}},"loc":{"start":{"line":2031,"column":30},"end":{"line":2036,"column":4}},"line":2031},"97":{"name":"(anonymous_97)","decl":{"start":{"line":2032,"column":17},"end":{"line":2032,"column":23}},"loc":{"start":{"line":2032,"column":23},"end":{"line":2035,"column":5}},"line":2032},"98":{"name":"(anonymous_98)","decl":{"start":{"line":2054,"column":9},"end":{"line":2054,"column":16}},"loc":{"start":{"line":2054,"column":25},"end":{"line":2071,"column":2}},"line":2054},"99":{"name":"(anonymous_99)","decl":{"start":{"line":2060,"column":24},"end":{"line":2060,"column":30}},"loc":{"start":{"line":2060,"column":30},"end":{"line":2065,"column":4}},"line":2060},"100":{"name":"(anonymous_100)","decl":{"start":{"line":2061,"column":17},"end":{"line":2061,"column":23}},"loc":{"start":{"line":2061,"column":23},"end":{"line":2064,"column":5}},"line":2061}},"branchMap":{"0":{"loc":{"start":{"line":213,"column":2},"end":{"line":218,"column":null}},"type":"if","locations":[{"start":{"line":213,"column":2},"end":{"line":218,"column":null}},{"start":{},"end":{}}],"line":213},"1":{"loc":{"start":{"line":213,"column":6},"end":{"line":213,"column":52}},"type":"binary-expr","locations":[{"start":{"line":213,"column":6},"end":{"line":213,"column":28}},{"start":{"line":213,"column":28},"end":{"line":213,"column":52}}],"line":213},"2":{"loc":{"start":{"line":219,"column":2},"end":{"line":224,"column":null}},"type":"if","locations":[{"start":{"line":219,"column":2},"end":{"line":224,"column":null}},{"start":{},"end":{}}],"line":219},"3":{"loc":{"start":{"line":219,"column":6},"end":{"line":219,"column":52}},"type":"binary-expr","locations":[{"start":{"line":219,"column":6},"end":{"line":219,"column":31}},{"start":{"line":219,"column":31},"end":{"line":219,"column":52}}],"line":219},"4":{"loc":{"start":{"line":225,"column":2},"end":{"line":231,"column":null}},"type":"if","locations":[{"start":{"line":225,"column":2},"end":{"line":231,"column":null}},{"start":{},"end":{}}],"line":225},"5":{"loc":{"start":{"line":225,"column":6},"end":{"line":225,"column":80}},"type":"binary-expr","locations":[{"start":{"line":225,"column":6},"end":{"line":225,"column":32}},{"start":{"line":225,"column":32},"end":{"line":225,"column":80}}],"line":225},"6":{"loc":{"start":{"line":225,"column":34},"end":{"line":225,"column":80}},"type":"binary-expr","locations":[{"start":{"line":225,"column":34},"end":{"line":225,"column":56}},{"start":{"line":225,"column":56},"end":{"line":225,"column":80}}],"line":225},"7":{"loc":{"start":{"line":234,"column":17},"end":{"line":234,"column":66}},"type":"default-arg","locations":[{"start":{"line":234,"column":39},"end":{"line":234,"column":66}}],"line":234},"8":{"loc":{"start":{"line":237,"column":1},"end":{"line":241,"column":null}},"type":"if","locations":[{"start":{"line":237,"column":1},"end":{"line":241,"column":null}},{"start":{},"end":{}}],"line":237},"9":{"loc":{"start":{"line":253,"column":2},"end":{"line":255,"column":null}},"type":"cond-expr","locations":[{"start":{"line":254,"column":5},"end":{"line":254,"column":null}},{"start":{"line":255,"column":5},"end":{"line":255,"column":null}}],"line":253},"10":{"loc":{"start":{"line":253,"column":2},"end":{"line":253,"column":null}},"type":"binary-expr","locations":[{"start":{"line":253,"column":2},"end":{"line":253,"column":12}},{"start":{"line":253,"column":12},"end":{"line":253,"column":null}}],"line":253},"11":{"loc":{"start":{"line":274,"column":1},"end":{"line":274,"column":null}},"type":"default-arg","locations":[{"start":{"line":274,"column":53},"end":{"line":274,"column":null}}],"line":274},"12":{"loc":{"start":{"line":274,"column":3},"end":{"line":274,"column":26}},"type":"default-arg","locations":[{"start":{"line":274,"column":15},"end":{"line":274,"column":26}}],"line":274},"13":{"loc":{"start":{"line":277,"column":1},"end":{"line":279,"column":null}},"type":"if","locations":[{"start":{"line":277,"column":1},"end":{"line":279,"column":null}},{"start":{},"end":{}}],"line":277},"14":{"loc":{"start":{"line":286,"column":2},"end":{"line":289,"column":null}},"type":"if","locations":[{"start":{"line":286,"column":2},"end":{"line":289,"column":null}},{"start":{},"end":{}}],"line":286},"15":{"loc":{"start":{"line":287,"column":3},"end":{"line":287,"column":null}},"type":"if","locations":[{"start":{"line":287,"column":3},"end":{"line":287,"column":null}},{"start":{},"end":{}}],"line":287},"16":{"loc":{"start":{"line":288,"column":3},"end":{"line":288,"column":null}},"type":"if","locations":[{"start":{"line":288,"column":3},"end":{"line":288,"column":null}},{"start":{},"end":{}}],"line":288},"17":{"loc":{"start":{"line":292,"column":2},"end":{"line":294,"column":null}},"type":"if","locations":[{"start":{"line":292,"column":2},"end":{"line":294,"column":null}},{"start":{},"end":{}}],"line":292},"18":{"loc":{"start":{"line":330,"column":3},"end":{"line":330,"column":null}},"type":"if","locations":[{"start":{"line":330,"column":3},"end":{"line":330,"column":null}},{"start":{},"end":{}}],"line":330},"19":{"loc":{"start":{"line":336,"column":3},"end":{"line":336,"column":null}},"type":"if","locations":[{"start":{"line":336,"column":3},"end":{"line":336,"column":null}},{"start":{},"end":{}}],"line":336},"20":{"loc":{"start":{"line":358,"column":16},"end":{"line":358,"column":63}},"type":"binary-expr","locations":[{"start":{"line":358,"column":16},"end":{"line":358,"column":23}},{"start":{"line":358,"column":23},"end":{"line":358,"column":50}},{"start":{"line":358,"column":50},"end":{"line":358,"column":63}}],"line":358},"21":{"loc":{"start":{"line":371,"column":2},"end":{"line":371,"column":null}},"type":"if","locations":[{"start":{"line":371,"column":2},"end":{"line":371,"column":null}},{"start":{},"end":{}}],"line":371},"22":{"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},"23":{"loc":{"start":{"line":391,"column":6},"end":{"line":391,"column":49}},"type":"binary-expr","locations":[{"start":{"line":391,"column":6},"end":{"line":391,"column":22}},{"start":{"line":391,"column":22},"end":{"line":391,"column":49}}],"line":391},"24":{"loc":{"start":{"line":403,"column":1},"end":{"line":403,"column":null}},"type":"default-arg","locations":[{"start":{"line":403,"column":23},"end":{"line":403,"column":null}}],"line":403},"25":{"loc":{"start":{"line":405,"column":1},"end":{"line":431,"column":null}},"type":"if","locations":[{"start":{"line":405,"column":1},"end":{"line":431,"column":null}},{"start":{},"end":{}}],"line":405},"26":{"loc":{"start":{"line":406,"column":2},"end":{"line":407,"column":null}},"type":"binary-expr","locations":[{"start":{"line":406,"column":2},"end":{"line":406,"column":null}},{"start":{"line":407,"column":3},"end":{"line":407,"column":19}},{"start":{"line":407,"column":19},"end":{"line":407,"column":null}}],"line":406},"27":{"loc":{"start":{"line":410,"column":3},"end":{"line":412,"column":null}},"type":"cond-expr","locations":[{"start":{"line":411,"column":6},"end":{"line":411,"column":null}},{"start":{"line":412,"column":6},"end":{"line":412,"column":null}}],"line":410},"28":{"loc":{"start":{"line":414,"column":2},"end":{"line":424,"column":null}},"type":"if","locations":[{"start":{"line":414,"column":2},"end":{"line":424,"column":null}},{"start":{},"end":{}}],"line":414},"29":{"loc":{"start":{"line":417,"column":3},"end":{"line":423,"column":null}},"type":"if","locations":[{"start":{"line":417,"column":3},"end":{"line":423,"column":null}},{"start":{},"end":{}}],"line":417},"30":{"loc":{"start":{"line":438,"column":1},"end":{"line":438,"column":null}},"type":"default-arg","locations":[{"start":{"line":438,"column":24},"end":{"line":438,"column":null}}],"line":438},"31":{"loc":{"start":{"line":439,"column":1},"end":{"line":439,"column":null}},"type":"default-arg","locations":[{"start":{"line":439,"column":23},"end":{"line":439,"column":null}}],"line":439},"32":{"loc":{"start":{"line":450,"column":1},"end":{"line":450,"column":null}},"type":"default-arg","locations":[{"start":{"line":450,"column":14},"end":{"line":450,"column":null}}],"line":450},"33":{"loc":{"start":{"line":452,"column":1},"end":{"line":452,"column":null}},"type":"if","locations":[{"start":{"line":452,"column":1},"end":{"line":452,"column":null}},{"start":{},"end":{}}],"line":452},"34":{"loc":{"start":{"line":452,"column":1},"end":{"line":452,"column":29}},"type":"binary-expr","locations":[{"start":{"line":452,"column":1},"end":{"line":452,"column":20}},{"start":{"line":452,"column":15},"end":{"line":452,"column":29}}],"line":452},"35":{"loc":{"start":{"line":453,"column":1},"end":{"line":453,"column":null}},"type":"if","locations":[{"start":{"line":453,"column":1},"end":{"line":453,"column":null}},{"start":{},"end":{}}],"line":453},"36":{"loc":{"start":{"line":455,"column":16},"end":{"line":455,"column":null}},"type":"cond-expr","locations":[{"start":{"line":455,"column":29},"end":{"line":455,"column":41}},{"start":{"line":455,"column":41},"end":{"line":455,"column":null}}],"line":455},"37":{"loc":{"start":{"line":460,"column":1},"end":{"line":460,"column":null}},"type":"if","locations":[{"start":{"line":460,"column":1},"end":{"line":460,"column":null}},{"start":{},"end":{}}],"line":460},"38":{"loc":{"start":{"line":498,"column":2},"end":{"line":498,"column":null}},"type":"if","locations":[{"start":{"line":498,"column":2},"end":{"line":498,"column":null}},{"start":{},"end":{}}],"line":498},"39":{"loc":{"start":{"line":501,"column":2},"end":{"line":501,"column":null}},"type":"if","locations":[{"start":{"line":501,"column":2},"end":{"line":501,"column":null}},{"start":{},"end":{}}],"line":501},"40":{"loc":{"start":{"line":501,"column":6},"end":{"line":501,"column":53}},"type":"binary-expr","locations":[{"start":{"line":501,"column":6},"end":{"line":501,"column":36}},{"start":{"line":501,"column":36},"end":{"line":501,"column":53}}],"line":501},"41":{"loc":{"start":{"line":524,"column":9},"end":{"line":524,"column":null}},"type":"cond-expr","locations":[{"start":{"line":524,"column":25},"end":{"line":524,"column":30}},{"start":{"line":524,"column":30},"end":{"line":524,"column":null}}],"line":524},"42":{"loc":{"start":{"line":541,"column":1},"end":{"line":541,"column":null}},"type":"if","locations":[{"start":{"line":541,"column":1},"end":{"line":541,"column":null}},{"start":{},"end":{}}],"line":541},"43":{"loc":{"start":{"line":542,"column":1},"end":{"line":542,"column":null}},"type":"if","locations":[{"start":{"line":542,"column":1},"end":{"line":542,"column":null}},{"start":{},"end":{}}],"line":542},"44":{"loc":{"start":{"line":550,"column":2},"end":{"line":552,"column":null}},"type":"if","locations":[{"start":{"line":550,"column":2},"end":{"line":552,"column":null}},{"start":{},"end":{}}],"line":550},"45":{"loc":{"start":{"line":550,"column":6},"end":{"line":550,"column":44}},"type":"binary-expr","locations":[{"start":{"line":550,"column":6},"end":{"line":550,"column":16}},{"start":{"line":550,"column":16},"end":{"line":550,"column":44}}],"line":550},"46":{"loc":{"start":{"line":565,"column":1},"end":{"line":565,"column":null}},"type":"if","locations":[{"start":{"line":565,"column":1},"end":{"line":565,"column":null}},{"start":{},"end":{}}],"line":565},"47":{"loc":{"start":{"line":566,"column":14},"end":{"line":566,"column":null}},"type":"cond-expr","locations":[{"start":{"line":566,"column":18},"end":{"line":566,"column":51}},{"start":{"line":566,"column":51},"end":{"line":566,"column":null}}],"line":566},"48":{"loc":{"start":{"line":567,"column":8},"end":{"line":567,"column":null}},"type":"binary-expr","locations":[{"start":{"line":567,"column":8},"end":{"line":567,"column":16}},{"start":{"line":567,"column":16},"end":{"line":567,"column":null}}],"line":567},"49":{"loc":{"start":{"line":574,"column":1},"end":{"line":574,"column":null}},"type":"default-arg","locations":[{"start":{"line":574,"column":47},"end":{"line":574,"column":null}}],"line":574},"50":{"loc":{"start":{"line":577,"column":13},"end":{"line":577,"column":null}},"type":"binary-expr","locations":[{"start":{"line":577,"column":13},"end":{"line":577,"column":31}},{"start":{"line":577,"column":31},"end":{"line":577,"column":null}}],"line":577},"51":{"loc":{"start":{"line":579,"column":33},"end":{"line":579,"column":63}},"type":"binary-expr","locations":[{"start":{"line":579,"column":33},"end":{"line":579,"column":58}},{"start":{"line":579,"column":58},"end":{"line":579,"column":63}}],"line":579},"52":{"loc":{"start":{"line":583,"column":2},"end":{"line":583,"column":null}},"type":"if","locations":[{"start":{"line":583,"column":2},"end":{"line":583,"column":null}},{"start":{},"end":{}}],"line":583},"53":{"loc":{"start":{"line":591,"column":2},"end":{"line":593,"column":null}},"type":"cond-expr","locations":[{"start":{"line":592,"column":5},"end":{"line":592,"column":null}},{"start":{"line":593,"column":5},"end":{"line":593,"column":null}}],"line":591},"54":{"loc":{"start":{"line":594,"column":30},"end":{"line":594,"column":79}},"type":"binary-expr","locations":[{"start":{"line":594,"column":30},"end":{"line":594,"column":57}},{"start":{"line":594,"column":57},"end":{"line":594,"column":79}}],"line":594},"55":{"loc":{"start":{"line":595,"column":22},"end":{"line":595,"column":null}},"type":"binary-expr","locations":[{"start":{"line":595,"column":22},"end":{"line":595,"column":43}},{"start":{"line":595,"column":43},"end":{"line":595,"column":null}}],"line":595},"56":{"loc":{"start":{"line":602,"column":1},"end":{"line":634,"column":null}},"type":"if","locations":[{"start":{"line":602,"column":1},"end":{"line":634,"column":null}},{"start":{},"end":{}}],"line":602},"57":{"loc":{"start":{"line":603,"column":23},"end":{"line":603,"column":39}},"type":"binary-expr","locations":[{"start":{"line":603,"column":23},"end":{"line":603,"column":35}},{"start":{"line":603,"column":35},"end":{"line":603,"column":39}}],"line":603},"58":{"loc":{"start":{"line":605,"column":3},"end":{"line":605,"column":null}},"type":"if","locations":[{"start":{"line":605,"column":3},"end":{"line":605,"column":null}},{"start":{},"end":{}}],"line":605},"59":{"loc":{"start":{"line":606,"column":3},"end":{"line":610,"column":null}},"type":"if","locations":[{"start":{"line":606,"column":3},"end":{"line":610,"column":null}},{"start":{},"end":{}}],"line":606},"60":{"loc":{"start":{"line":612,"column":3},"end":{"line":616,"column":null}},"type":"if","locations":[{"start":{"line":612,"column":3},"end":{"line":616,"column":null}},{"start":{},"end":{}}],"line":612},"61":{"loc":{"start":{"line":623,"column":21},"end":{"line":623,"column":null}},"type":"binary-expr","locations":[{"start":{"line":623,"column":21},"end":{"line":623,"column":30}},{"start":{"line":623,"column":30},"end":{"line":623,"column":null}}],"line":623},"62":{"loc":{"start":{"line":625,"column":2},"end":{"line":630,"column":null}},"type":"if","locations":[{"start":{"line":625,"column":2},"end":{"line":630,"column":null}},{"start":{"line":627,"column":9},"end":{"line":630,"column":null}}],"line":625},"63":{"loc":{"start":{"line":625,"column":6},"end":{"line":625,"column":35}},"type":"binary-expr","locations":[{"start":{"line":625,"column":6},"end":{"line":625,"column":23}},{"start":{"line":625,"column":23},"end":{"line":625,"column":35}}],"line":625},"64":{"loc":{"start":{"line":638,"column":16},"end":{"line":638,"column":null}},"type":"binary-expr","locations":[{"start":{"line":638,"column":16},"end":{"line":638,"column":32}},{"start":{"line":638,"column":32},"end":{"line":638,"column":null}}],"line":638},"65":{"loc":{"start":{"line":640,"column":16},"end":{"line":640,"column":null}},"type":"cond-expr","locations":[{"start":{"line":640,"column":31},"end":{"line":640,"column":40}},{"start":{"line":640,"column":40},"end":{"line":640,"column":null}}],"line":640},"66":{"loc":{"start":{"line":644,"column":20},"end":{"line":646,"column":null}},"type":"cond-expr","locations":[{"start":{"line":645,"column":4},"end":{"line":645,"column":null}},{"start":{"line":646,"column":4},"end":{"line":646,"column":null}}],"line":644},"67":{"loc":{"start":{"line":647,"column":22},"end":{"line":649,"column":null}},"type":"cond-expr","locations":[{"start":{"line":648,"column":4},"end":{"line":648,"column":null}},{"start":{"line":649,"column":4},"end":{"line":649,"column":null}}],"line":647},"68":{"loc":{"start":{"line":648,"column":20},"end":{"line":648,"column":68}},"type":"binary-expr","locations":[{"start":{"line":648,"column":20},"end":{"line":648,"column":47}},{"start":{"line":648,"column":47},"end":{"line":648,"column":66}},{"start":{"line":648,"column":66},"end":{"line":648,"column":68}}],"line":648},"69":{"loc":{"start":{"line":649,"column":4},"end":{"line":649,"column":null}},"type":"binary-expr","locations":[{"start":{"line":649,"column":4},"end":{"line":649,"column":31}},{"start":{"line":649,"column":31},"end":{"line":649,"column":null}}],"line":649},"70":{"loc":{"start":{"line":658,"column":1},"end":{"line":666,"column":null}},"type":"if","locations":[{"start":{"line":658,"column":1},"end":{"line":666,"column":null}},{"start":{},"end":{}}],"line":658},"71":{"loc":{"start":{"line":658,"column":5},"end":{"line":658,"column":55}},"type":"binary-expr","locations":[{"start":{"line":658,"column":5},"end":{"line":658,"column":33}},{"start":{"line":658,"column":33},"end":{"line":658,"column":55}}],"line":658},"72":{"loc":{"start":{"line":659,"column":16},"end":{"line":659,"column":32}},"type":"binary-expr","locations":[{"start":{"line":659,"column":16},"end":{"line":659,"column":28}},{"start":{"line":659,"column":28},"end":{"line":659,"column":32}}],"line":659},"73":{"loc":{"start":{"line":660,"column":2},"end":{"line":665,"column":null}},"type":"if","locations":[{"start":{"line":660,"column":2},"end":{"line":665,"column":null}},{"start":{},"end":{}}],"line":660},"74":{"loc":{"start":{"line":662,"column":35},"end":{"line":662,"column":54}},"type":"binary-expr","locations":[{"start":{"line":662,"column":35},"end":{"line":662,"column":43}},{"start":{"line":662,"column":43},"end":{"line":662,"column":54}}],"line":662},"75":{"loc":{"start":{"line":667,"column":1},"end":{"line":670,"column":null}},"type":"if","locations":[{"start":{"line":667,"column":1},"end":{"line":670,"column":null}},{"start":{},"end":{}}],"line":667},"76":{"loc":{"start":{"line":672,"column":1},"end":{"line":676,"column":null}},"type":"if","locations":[{"start":{"line":672,"column":1},"end":{"line":676,"column":null}},{"start":{},"end":{}}],"line":672},"77":{"loc":{"start":{"line":672,"column":5},"end":{"line":672,"column":42}},"type":"binary-expr","locations":[{"start":{"line":672,"column":5},"end":{"line":672,"column":30}},{"start":{"line":672,"column":30},"end":{"line":672,"column":42}}],"line":672},"78":{"loc":{"start":{"line":678,"column":1},"end":{"line":751,"column":null}},"type":"if","locations":[{"start":{"line":678,"column":1},"end":{"line":751,"column":null}},{"start":{},"end":{}}],"line":678},"79":{"loc":{"start":{"line":678,"column":5},"end":{"line":678,"column":56}},"type":"binary-expr","locations":[{"start":{"line":678,"column":5},"end":{"line":678,"column":33}},{"start":{"line":678,"column":33},"end":{"line":678,"column":56}}],"line":678},"80":{"loc":{"start":{"line":681,"column":25},"end":{"line":683,"column":null}},"type":"cond-expr","locations":[{"start":{"line":682,"column":5},"end":{"line":682,"column":null}},{"start":{"line":683,"column":5},"end":{"line":683,"column":null}}],"line":681},"81":{"loc":{"start":{"line":684,"column":2},"end":{"line":686,"column":null}},"type":"if","locations":[{"start":{"line":684,"column":2},"end":{"line":686,"column":null}},{"start":{},"end":{}}],"line":684},"82":{"loc":{"start":{"line":684,"column":6},"end":{"line":684,"column":41}},"type":"binary-expr","locations":[{"start":{"line":684,"column":6},"end":{"line":684,"column":24}},{"start":{"line":684,"column":24},"end":{"line":684,"column":41}}],"line":684},"83":{"loc":{"start":{"line":689,"column":2},"end":{"line":703,"column":null}},"type":"if","locations":[{"start":{"line":689,"column":2},"end":{"line":703,"column":null}},{"start":{},"end":{}}],"line":689},"84":{"loc":{"start":{"line":690,"column":27},"end":{"line":692,"column":null}},"type":"cond-expr","locations":[{"start":{"line":691,"column":6},"end":{"line":691,"column":null}},{"start":{"line":692,"column":6},"end":{"line":692,"column":null}}],"line":690},"85":{"loc":{"start":{"line":691,"column":6},"end":{"line":691,"column":null}},"type":"binary-expr","locations":[{"start":{"line":691,"column":6},"end":{"line":691,"column":37}},{"start":{"line":691,"column":37},"end":{"line":691,"column":null}}],"line":691},"86":{"loc":{"start":{"line":692,"column":6},"end":{"line":692,"column":null}},"type":"binary-expr","locations":[{"start":{"line":692,"column":6},"end":{"line":692,"column":40}},{"start":{"line":692,"column":40},"end":{"line":692,"column":null}}],"line":692},"87":{"loc":{"start":{"line":694,"column":3},"end":{"line":702,"column":null}},"type":"if","locations":[{"start":{"line":694,"column":3},"end":{"line":702,"column":null}},{"start":{},"end":{}}],"line":694},"88":{"loc":{"start":{"line":695,"column":29},"end":{"line":695,"column":null}},"type":"binary-expr","locations":[{"start":{"line":695,"column":29},"end":{"line":695,"column":67}},{"start":{"line":695,"column":67},"end":{"line":695,"column":null}}],"line":695},"89":{"loc":{"start":{"line":696,"column":21},"end":{"line":696,"column":null}},"type":"cond-expr","locations":[{"start":{"line":696,"column":59},"end":{"line":696,"column":77}},{"start":{"line":696,"column":77},"end":{"line":696,"column":null}}],"line":696},"90":{"loc":{"start":{"line":696,"column":21},"end":{"line":696,"column":59}},"type":"binary-expr","locations":[{"start":{"line":696,"column":21},"end":{"line":696,"column":41}},{"start":{"line":696,"column":41},"end":{"line":696,"column":59}}],"line":696},"91":{"loc":{"start":{"line":711,"column":3},"end":{"line":713,"column":null}},"type":"if","locations":[{"start":{"line":711,"column":3},"end":{"line":713,"column":null}},{"start":{},"end":{}}],"line":711},"92":{"loc":{"start":{"line":715,"column":44},"end":{"line":715,"column":64}},"type":"binary-expr","locations":[{"start":{"line":715,"column":44},"end":{"line":715,"column":55}},{"start":{"line":715,"column":55},"end":{"line":715,"column":64}}],"line":715},"93":{"loc":{"start":{"line":718,"column":3},"end":{"line":723,"column":null}},"type":"if","locations":[{"start":{"line":718,"column":3},"end":{"line":723,"column":null}},{"start":{},"end":{}}],"line":718},"94":{"loc":{"start":{"line":718,"column":8},"end":{"line":718,"column":23}},"type":"binary-expr","locations":[{"start":{"line":718,"column":8},"end":{"line":718,"column":16}},{"start":{"line":718,"column":16},"end":{"line":718,"column":23}}],"line":718},"95":{"loc":{"start":{"line":720,"column":44},"end":{"line":720,"column":61}},"type":"binary-expr","locations":[{"start":{"line":720,"column":44},"end":{"line":720,"column":52}},{"start":{"line":720,"column":52},"end":{"line":720,"column":61}}],"line":720},"96":{"loc":{"start":{"line":720,"column":74},"end":{"line":720,"column":90}},"type":"binary-expr","locations":[{"start":{"line":720,"column":74},"end":{"line":720,"column":84}},{"start":{"line":720,"column":84},"end":{"line":720,"column":90}}],"line":720},"97":{"loc":{"start":{"line":724,"column":3},"end":{"line":729,"column":null}},"type":"if","locations":[{"start":{"line":724,"column":3},"end":{"line":729,"column":null}},{"start":{},"end":{}}],"line":724},"98":{"loc":{"start":{"line":724,"column":7},"end":{"line":724,"column":26}},"type":"binary-expr","locations":[{"start":{"line":724,"column":7},"end":{"line":724,"column":17}},{"start":{"line":724,"column":17},"end":{"line":724,"column":26}}],"line":724},"99":{"loc":{"start":{"line":726,"column":71},"end":{"line":726,"column":88}},"type":"binary-expr","locations":[{"start":{"line":726,"column":71},"end":{"line":726,"column":79}},{"start":{"line":726,"column":79},"end":{"line":726,"column":88}}],"line":726},"100":{"loc":{"start":{"line":730,"column":10},"end":{"line":730,"column":null}},"type":"binary-expr","locations":[{"start":{"line":730,"column":10},"end":{"line":730,"column":21}},{"start":{"line":730,"column":21},"end":{"line":730,"column":null}}],"line":730},"101":{"loc":{"start":{"line":734,"column":22},"end":{"line":734,"column":null}},"type":"binary-expr","locations":[{"start":{"line":734,"column":22},"end":{"line":734,"column":48}},{"start":{"line":734,"column":48},"end":{"line":734,"column":null}}],"line":734},"102":{"loc":{"start":{"line":739,"column":3},"end":{"line":741,"column":null}},"type":"if","locations":[{"start":{"line":739,"column":3},"end":{"line":741,"column":null}},{"start":{},"end":{}}],"line":739},"103":{"loc":{"start":{"line":742,"column":3},"end":{"line":748,"column":null}},"type":"if","locations":[{"start":{"line":742,"column":3},"end":{"line":748,"column":null}},{"start":{"line":746,"column":10},"end":{"line":748,"column":null}}],"line":742},"104":{"loc":{"start":{"line":760,"column":1},"end":{"line":760,"column":null}},"type":"default-arg","locations":[{"start":{"line":760,"column":23},"end":{"line":760,"column":null}}],"line":760},"105":{"loc":{"start":{"line":764,"column":8},"end":{"line":764,"column":null}},"type":"binary-expr","locations":[{"start":{"line":764,"column":8},"end":{"line":764,"column":24}},{"start":{"line":764,"column":24},"end":{"line":764,"column":null}}],"line":764},"106":{"loc":{"start":{"line":765,"column":8},"end":{"line":765,"column":null}},"type":"binary-expr","locations":[{"start":{"line":765,"column":8},"end":{"line":765,"column":24}},{"start":{"line":765,"column":24},"end":{"line":765,"column":null}}],"line":765},"107":{"loc":{"start":{"line":766,"column":6},"end":{"line":766,"column":null}},"type":"binary-expr","locations":[{"start":{"line":766,"column":6},"end":{"line":766,"column":20}},{"start":{"line":766,"column":20},"end":{"line":766,"column":null}}],"line":766},"108":{"loc":{"start":{"line":777,"column":1},"end":{"line":777,"column":null}},"type":"if","locations":[{"start":{"line":777,"column":1},"end":{"line":777,"column":null}},{"start":{},"end":{}}],"line":777},"109":{"loc":{"start":{"line":781,"column":1},"end":{"line":788,"column":null}},"type":"if","locations":[{"start":{"line":781,"column":1},"end":{"line":788,"column":null}},{"start":{},"end":{}}],"line":781},"110":{"loc":{"start":{"line":781,"column":5},"end":{"line":781,"column":29}},"type":"binary-expr","locations":[{"start":{"line":781,"column":5},"end":{"line":781,"column":19}},{"start":{"line":781,"column":19},"end":{"line":781,"column":29}}],"line":781},"111":{"loc":{"start":{"line":782,"column":1},"end":{"line":786,"column":null}},"type":"if","locations":[{"start":{"line":782,"column":1},"end":{"line":786,"column":null}},{"start":{},"end":{}}],"line":782},"112":{"loc":{"start":{"line":800,"column":2},"end":{"line":806,"column":null}},"type":"if","locations":[{"start":{"line":800,"column":2},"end":{"line":806,"column":null}},{"start":{},"end":{}}],"line":800},"113":{"loc":{"start":{"line":803,"column":44},"end":{"line":803,"column":67}},"type":"binary-expr","locations":[{"start":{"line":803,"column":44},"end":{"line":803,"column":59}},{"start":{"line":803,"column":59},"end":{"line":803,"column":67}}],"line":803},"114":{"loc":{"start":{"line":808,"column":26},"end":{"line":808,"column":48}},"type":"binary-expr","locations":[{"start":{"line":808,"column":26},"end":{"line":808,"column":37}},{"start":{"line":808,"column":37},"end":{"line":808,"column":48}}],"line":808},"115":{"loc":{"start":{"line":814,"column":1},"end":{"line":818,"column":null}},"type":"if","locations":[{"start":{"line":814,"column":1},"end":{"line":818,"column":null}},{"start":{},"end":{}}],"line":814},"116":{"loc":{"start":{"line":827,"column":1},"end":{"line":827,"column":null}},"type":"default-arg","locations":[{"start":{"line":827,"column":23},"end":{"line":827,"column":null}}],"line":827},"117":{"loc":{"start":{"line":830,"column":1},"end":{"line":833,"column":null}},"type":"if","locations":[{"start":{"line":830,"column":1},"end":{"line":833,"column":null}},{"start":{},"end":{}}],"line":830},"118":{"loc":{"start":{"line":846,"column":2},"end":{"line":849,"column":null}},"type":"if","locations":[{"start":{"line":846,"column":2},"end":{"line":849,"column":null}},{"start":{},"end":{}}],"line":846},"119":{"loc":{"start":{"line":856,"column":1},"end":{"line":856,"column":null}},"type":"default-arg","locations":[{"start":{"line":856,"column":23},"end":{"line":856,"column":null}}],"line":856},"120":{"loc":{"start":{"line":887,"column":3},"end":{"line":889,"column":null}},"type":"cond-expr","locations":[{"start":{"line":888,"column":6},"end":{"line":888,"column":null}},{"start":{"line":889,"column":6},"end":{"line":889,"column":null}}],"line":887},"121":{"loc":{"start":{"line":889,"column":6},"end":{"line":889,"column":null}},"type":"binary-expr","locations":[{"start":{"line":889,"column":6},"end":{"line":889,"column":25}},{"start":{"line":889,"column":25},"end":{"line":889,"column":null}}],"line":889},"122":{"loc":{"start":{"line":892,"column":26},"end":{"line":892,"column":55}},"type":"cond-expr","locations":[{"start":{"line":892,"column":33},"end":{"line":892,"column":53}},{"start":{"line":892,"column":53},"end":{"line":892,"column":55}}],"line":892},"123":{"loc":{"start":{"line":892,"column":58},"end":{"line":892,"column":91}},"type":"cond-expr","locations":[{"start":{"line":892,"column":67},"end":{"line":892,"column":89}},{"start":{"line":892,"column":89},"end":{"line":892,"column":91}}],"line":892},"124":{"loc":{"start":{"line":894,"column":2},"end":{"line":894,"column":null}},"type":"if","locations":[{"start":{"line":894,"column":2},"end":{"line":894,"column":null}},{"start":{},"end":{}}],"line":894},"125":{"loc":{"start":{"line":897,"column":2},"end":{"line":899,"column":null}},"type":"if","locations":[{"start":{"line":897,"column":2},"end":{"line":899,"column":null}},{"start":{},"end":{}}],"line":897},"126":{"loc":{"start":{"line":912,"column":1},"end":{"line":912,"column":null}},"type":"default-arg","locations":[{"start":{"line":912,"column":23},"end":{"line":912,"column":null}}],"line":912},"127":{"loc":{"start":{"line":918,"column":17},"end":{"line":918,"column":null}},"type":"binary-expr","locations":[{"start":{"line":918,"column":17},"end":{"line":918,"column":29}},{"start":{"line":918,"column":29},"end":{"line":918,"column":null}}],"line":918},"128":{"loc":{"start":{"line":919,"column":2},"end":{"line":922,"column":null}},"type":"if","locations":[{"start":{"line":919,"column":2},"end":{"line":922,"column":null}},{"start":{},"end":{}}],"line":919},"129":{"loc":{"start":{"line":923,"column":2},"end":{"line":930,"column":null}},"type":"if","locations":[{"start":{"line":923,"column":2},"end":{"line":930,"column":null}},{"start":{},"end":{}}],"line":923},"130":{"loc":{"start":{"line":926,"column":5},"end":{"line":926,"column":null}},"type":"cond-expr","locations":[{"start":{"line":926,"column":19},"end":{"line":926,"column":45}},{"start":{"line":926,"column":45},"end":{"line":926,"column":null}}],"line":926},"131":{"loc":{"start":{"line":927,"column":8},"end":{"line":927,"column":51}},"type":"cond-expr","locations":[{"start":{"line":927,"column":25},"end":{"line":927,"column":49}},{"start":{"line":927,"column":49},"end":{"line":927,"column":51}}],"line":927},"132":{"loc":{"start":{"line":940,"column":1},"end":{"line":940,"column":null}},"type":"default-arg","locations":[{"start":{"line":940,"column":8},"end":{"line":940,"column":null}}],"line":940},"133":{"loc":{"start":{"line":943,"column":1},"end":{"line":943,"column":null}},"type":"default-arg","locations":[{"start":{"line":943,"column":23},"end":{"line":943,"column":null}}],"line":943},"134":{"loc":{"start":{"line":958,"column":41},"end":{"line":958,"column":null}},"type":"binary-expr","locations":[{"start":{"line":958,"column":41},"end":{"line":958,"column":53}},{"start":{"line":958,"column":53},"end":{"line":958,"column":null}}],"line":958},"135":{"loc":{"start":{"line":960,"column":16},"end":{"line":960,"column":33}},"type":"binary-expr","locations":[{"start":{"line":960,"column":16},"end":{"line":960,"column":24}},{"start":{"line":960,"column":24},"end":{"line":960,"column":33}}],"line":960},"136":{"loc":{"start":{"line":960,"column":40},"end":{"line":960,"column":55}},"type":"binary-expr","locations":[{"start":{"line":960,"column":40},"end":{"line":960,"column":46}},{"start":{"line":960,"column":46},"end":{"line":960,"column":55}}],"line":960},"137":{"loc":{"start":{"line":961,"column":4},"end":{"line":961,"column":null}},"type":"binary-expr","locations":[{"start":{"line":961,"column":4},"end":{"line":961,"column":18}},{"start":{"line":961,"column":18},"end":{"line":961,"column":null}}],"line":961},"138":{"loc":{"start":{"line":964,"column":2},"end":{"line":964,"column":null}},"type":"if","locations":[{"start":{"line":964,"column":2},"end":{"line":964,"column":null}},{"start":{},"end":{}}],"line":964},"139":{"loc":{"start":{"line":964,"column":47},"end":{"line":964,"column":57}},"type":"binary-expr","locations":[{"start":{"line":964,"column":47},"end":{"line":964,"column":55}},{"start":{"line":964,"column":55},"end":{"line":964,"column":57}}],"line":964},"140":{"loc":{"start":{"line":968,"column":2},"end":{"line":980,"column":null}},"type":"if","locations":[{"start":{"line":968,"column":2},"end":{"line":980,"column":null}},{"start":{},"end":{}}],"line":968},"141":{"loc":{"start":{"line":982,"column":2},"end":{"line":995,"column":null}},"type":"if","locations":[{"start":{"line":982,"column":2},"end":{"line":995,"column":null}},{"start":{},"end":{}}],"line":982},"142":{"loc":{"start":{"line":989,"column":4},"end":{"line":991,"column":null}},"type":"if","locations":[{"start":{"line":989,"column":4},"end":{"line":991,"column":null}},{"start":{},"end":{}}],"line":989},"143":{"loc":{"start":{"line":993,"column":28},"end":{"line":993,"column":47}},"type":"binary-expr","locations":[{"start":{"line":993,"column":28},"end":{"line":993,"column":36}},{"start":{"line":993,"column":36},"end":{"line":993,"column":47}}],"line":993},"144":{"loc":{"start":{"line":1002,"column":2},"end":{"line":1002,"column":null}},"type":"if","locations":[{"start":{"line":1002,"column":2},"end":{"line":1002,"column":null}},{"start":{},"end":{}}],"line":1002},"145":{"loc":{"start":{"line":1041,"column":34},"end":{"line":1041,"column":66}},"type":"default-arg","locations":[{"start":{"line":1041,"column":57},"end":{"line":1041,"column":66}}],"line":1041},"146":{"loc":{"start":{"line":1044,"column":16},"end":{"line":1044,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1044,"column":26},"end":{"line":1044,"column":75}},{"start":{"line":1044,"column":75},"end":{"line":1044,"column":null}}],"line":1044},"147":{"loc":{"start":{"line":1046,"column":2},"end":{"line":1048,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1047,"column":6},"end":{"line":1047,"column":null}},{"start":{"line":1048,"column":5},"end":{"line":1048,"column":null}}],"line":1046},"148":{"loc":{"start":{"line":1046,"column":2},"end":{"line":1046,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1046,"column":2},"end":{"line":1046,"column":37}},{"start":{"line":1046,"column":37},"end":{"line":1046,"column":null}}],"line":1046},"149":{"loc":{"start":{"line":1050,"column":2},"end":{"line":1050,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1050,"column":39},"end":{"line":1050,"column":65}},{"start":{"line":1050,"column":65},"end":{"line":1050,"column":null}}],"line":1050},"150":{"loc":{"start":{"line":1051,"column":13},"end":{"line":1053,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1052,"column":5},"end":{"line":1052,"column":null}},{"start":{"line":1053,"column":4},"end":{"line":1053,"column":null}}],"line":1051},"151":{"loc":{"start":{"line":1054,"column":1},"end":{"line":1054,"column":null}},"type":"if","locations":[{"start":{"line":1054,"column":1},"end":{"line":1054,"column":null}},{"start":{},"end":{}}],"line":1054},"152":{"loc":{"start":{"line":1054,"column":5},"end":{"line":1054,"column":28}},"type":"binary-expr","locations":[{"start":{"line":1054,"column":5},"end":{"line":1054,"column":12}},{"start":{"line":1054,"column":12},"end":{"line":1054,"column":28}}],"line":1054},"153":{"loc":{"start":{"line":1055,"column":1},"end":{"line":1055,"column":null}},"type":"if","locations":[{"start":{"line":1055,"column":1},"end":{"line":1055,"column":null}},{"start":{},"end":{}}],"line":1055},"154":{"loc":{"start":{"line":1060,"column":1},"end":{"line":1060,"column":null}},"type":"default-arg","locations":[{"start":{"line":1060,"column":24},"end":{"line":1060,"column":null}}],"line":1060},"155":{"loc":{"start":{"line":1061,"column":1},"end":{"line":1061,"column":null}},"type":"default-arg","locations":[{"start":{"line":1061,"column":30},"end":{"line":1061,"column":null}}],"line":1061},"156":{"loc":{"start":{"line":1062,"column":1},"end":{"line":1062,"column":null}},"type":"default-arg","locations":[{"start":{"line":1062,"column":23},"end":{"line":1062,"column":null}}],"line":1062},"157":{"loc":{"start":{"line":1069,"column":1},"end":{"line":1069,"column":null}},"type":"if","locations":[{"start":{"line":1069,"column":1},"end":{"line":1069,"column":null}},{"start":{},"end":{}}],"line":1069},"158":{"loc":{"start":{"line":1074,"column":1},"end":{"line":1077,"column":null}},"type":"if","locations":[{"start":{"line":1074,"column":1},"end":{"line":1077,"column":null}},{"start":{},"end":{}}],"line":1074},"159":{"loc":{"start":{"line":1083,"column":1},"end":{"line":1083,"column":null}},"type":"default-arg","locations":[{"start":{"line":1083,"column":24},"end":{"line":1083,"column":null}}],"line":1083},"160":{"loc":{"start":{"line":1084,"column":1},"end":{"line":1084,"column":null}},"type":"default-arg","locations":[{"start":{"line":1084,"column":30},"end":{"line":1084,"column":null}}],"line":1084},"161":{"loc":{"start":{"line":1085,"column":1},"end":{"line":1085,"column":null}},"type":"default-arg","locations":[{"start":{"line":1085,"column":23},"end":{"line":1085,"column":null}}],"line":1085},"162":{"loc":{"start":{"line":1092,"column":1},"end":{"line":1092,"column":null}},"type":"if","locations":[{"start":{"line":1092,"column":1},"end":{"line":1092,"column":null}},{"start":{},"end":{}}],"line":1092},"163":{"loc":{"start":{"line":1098,"column":1},"end":{"line":1101,"column":null}},"type":"if","locations":[{"start":{"line":1098,"column":1},"end":{"line":1101,"column":null}},{"start":{},"end":{}}],"line":1098},"164":{"loc":{"start":{"line":1108,"column":1},"end":{"line":1108,"column":null}},"type":"default-arg","locations":[{"start":{"line":1108,"column":24},"end":{"line":1108,"column":null}}],"line":1108},"165":{"loc":{"start":{"line":1109,"column":1},"end":{"line":1109,"column":null}},"type":"default-arg","locations":[{"start":{"line":1109,"column":23},"end":{"line":1109,"column":null}}],"line":1109},"166":{"loc":{"start":{"line":1110,"column":1},"end":{"line":1110,"column":null}},"type":"default-arg","locations":[{"start":{"line":1110,"column":30},"end":{"line":1110,"column":null}}],"line":1110},"167":{"loc":{"start":{"line":1117,"column":17},"end":{"line":1119,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1118,"column":6},"end":{"line":1118,"column":null}},{"start":{"line":1119,"column":5},"end":{"line":1119,"column":null}}],"line":1117},"168":{"loc":{"start":{"line":1120,"column":2},"end":{"line":1141,"column":null}},"type":"if","locations":[{"start":{"line":1120,"column":2},"end":{"line":1141,"column":null}},{"start":{},"end":{}}],"line":1120},"169":{"loc":{"start":{"line":1120,"column":6},"end":{"line":1120,"column":51}},"type":"binary-expr","locations":[{"start":{"line":1120,"column":6},"end":{"line":1120,"column":17}},{"start":{"line":1120,"column":17},"end":{"line":1120,"column":51}}],"line":1120},"170":{"loc":{"start":{"line":1138,"column":3},"end":{"line":1138,"column":null}},"type":"if","locations":[{"start":{"line":1138,"column":3},"end":{"line":1138,"column":null}},{"start":{},"end":{}}],"line":1138},"171":{"loc":{"start":{"line":1152,"column":2},"end":{"line":1152,"column":null}},"type":"if","locations":[{"start":{"line":1152,"column":2},"end":{"line":1152,"column":null}},{"start":{},"end":{}}],"line":1152},"172":{"loc":{"start":{"line":1155,"column":17},"end":{"line":1155,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1155,"column":56},"end":{"line":1155,"column":75}},{"start":{"line":1155,"column":75},"end":{"line":1155,"column":null}}],"line":1155},"173":{"loc":{"start":{"line":1156,"column":17},"end":{"line":1156,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1156,"column":56},"end":{"line":1156,"column":75}},{"start":{"line":1156,"column":75},"end":{"line":1156,"column":null}}],"line":1156},"174":{"loc":{"start":{"line":1157,"column":2},"end":{"line":1169,"column":null}},"type":"if","locations":[{"start":{"line":1157,"column":2},"end":{"line":1169,"column":null}},{"start":{},"end":{}}],"line":1157},"175":{"loc":{"start":{"line":1160,"column":3},"end":{"line":1168,"column":null}},"type":"if","locations":[{"start":{"line":1160,"column":3},"end":{"line":1168,"column":null}},{"start":{"line":1162,"column":10},"end":{"line":1168,"column":null}}],"line":1160},"176":{"loc":{"start":{"line":1170,"column":2},"end":{"line":1179,"column":null}},"type":"if","locations":[{"start":{"line":1170,"column":2},"end":{"line":1179,"column":null}},{"start":{},"end":{}}],"line":1170},"177":{"loc":{"start":{"line":1171,"column":3},"end":{"line":1172,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1171,"column":3},"end":{"line":1171,"column":null}},{"start":{"line":1172,"column":3},"end":{"line":1172,"column":null}}],"line":1171},"178":{"loc":{"start":{"line":1188,"column":2},"end":{"line":1192,"column":null}},"type":"if","locations":[{"start":{"line":1188,"column":2},"end":{"line":1192,"column":null}},{"start":{},"end":{}}],"line":1188},"179":{"loc":{"start":{"line":1189,"column":3},"end":{"line":1189,"column":null}},"type":"if","locations":[{"start":{"line":1189,"column":3},"end":{"line":1189,"column":null}},{"start":{},"end":{}}],"line":1189},"180":{"loc":{"start":{"line":1190,"column":3},"end":{"line":1190,"column":null}},"type":"if","locations":[{"start":{"line":1190,"column":3},"end":{"line":1190,"column":null}},{"start":{},"end":{}}],"line":1190},"181":{"loc":{"start":{"line":1201,"column":1},"end":{"line":1201,"column":null}},"type":"default-arg","locations":[{"start":{"line":1201,"column":23},"end":{"line":1201,"column":null}}],"line":1201},"182":{"loc":{"start":{"line":1204,"column":1},"end":{"line":1207,"column":null}},"type":"if","locations":[{"start":{"line":1204,"column":1},"end":{"line":1207,"column":null}},{"start":{},"end":{}}],"line":1204},"183":{"loc":{"start":{"line":1216,"column":2},"end":{"line":1218,"column":null}},"type":"if","locations":[{"start":{"line":1216,"column":2},"end":{"line":1218,"column":null}},{"start":{},"end":{}}],"line":1216},"184":{"loc":{"start":{"line":1221,"column":5},"end":{"line":1224,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1221,"column":5},"end":{"line":1221,"column":null}},{"start":{"line":1222,"column":5},"end":{"line":1222,"column":null}},{"start":{"line":1223,"column":5},"end":{"line":1223,"column":null}},{"start":{"line":1224,"column":5},"end":{"line":1224,"column":null}}],"line":1221},"185":{"loc":{"start":{"line":1226,"column":2},"end":{"line":1230,"column":null}},"type":"if","locations":[{"start":{"line":1226,"column":2},"end":{"line":1230,"column":null}},{"start":{},"end":{}}],"line":1226},"186":{"loc":{"start":{"line":1226,"column":6},"end":{"line":1226,"column":47}},"type":"binary-expr","locations":[{"start":{"line":1226,"column":6},"end":{"line":1226,"column":16}},{"start":{"line":1226,"column":16},"end":{"line":1226,"column":47}}],"line":1226},"187":{"loc":{"start":{"line":1234,"column":2},"end":{"line":1236,"column":null}},"type":"if","locations":[{"start":{"line":1234,"column":2},"end":{"line":1236,"column":null}},{"start":{},"end":{}}],"line":1234},"188":{"loc":{"start":{"line":1257,"column":2},"end":{"line":1257,"column":null}},"type":"if","locations":[{"start":{"line":1257,"column":2},"end":{"line":1257,"column":null}},{"start":{},"end":{}}],"line":1257},"189":{"loc":{"start":{"line":1257,"column":6},"end":{"line":1257,"column":34}},"type":"binary-expr","locations":[{"start":{"line":1257,"column":6},"end":{"line":1257,"column":15}},{"start":{"line":1257,"column":15},"end":{"line":1257,"column":34}}],"line":1257},"190":{"loc":{"start":{"line":1258,"column":2},"end":{"line":1262,"column":null}},"type":"if","locations":[{"start":{"line":1258,"column":2},"end":{"line":1262,"column":null}},{"start":{},"end":{}}],"line":1258},"191":{"loc":{"start":{"line":1258,"column":6},"end":{"line":1258,"column":38}},"type":"binary-expr","locations":[{"start":{"line":1258,"column":6},"end":{"line":1258,"column":25}},{"start":{"line":1258,"column":20},"end":{"line":1258,"column":38}}],"line":1258},"192":{"loc":{"start":{"line":1263,"column":9},"end":{"line":1263,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1263,"column":9},"end":{"line":1263,"column":25}},{"start":{"line":1263,"column":25},"end":{"line":1263,"column":null}}],"line":1263},"193":{"loc":{"start":{"line":1265,"column":2},"end":{"line":1265,"column":null}},"type":"if","locations":[{"start":{"line":1265,"column":2},"end":{"line":1265,"column":null}},{"start":{},"end":{}}],"line":1265},"194":{"loc":{"start":{"line":1283,"column":4},"end":{"line":1284,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1283,"column":4},"end":{"line":1284,"column":29}},{"start":{"line":1284,"column":29},"end":{"line":1284,"column":null}}],"line":1283},"195":{"loc":{"start":{"line":1287,"column":2},"end":{"line":1287,"column":null}},"type":"if","locations":[{"start":{"line":1287,"column":2},"end":{"line":1287,"column":null}},{"start":{},"end":{}}],"line":1287},"196":{"loc":{"start":{"line":1298,"column":1},"end":{"line":1298,"column":null}},"type":"if","locations":[{"start":{"line":1298,"column":1},"end":{"line":1298,"column":null}},{"start":{},"end":{}}],"line":1298},"197":{"loc":{"start":{"line":1308,"column":42},"end":{"line":1308,"column":55}},"type":"binary-expr","locations":[{"start":{"line":1308,"column":42},"end":{"line":1308,"column":52}},{"start":{"line":1308,"column":52},"end":{"line":1308,"column":55}}],"line":1308},"198":{"loc":{"start":{"line":1313,"column":2},"end":{"line":1313,"column":null}},"type":"if","locations":[{"start":{"line":1313,"column":2},"end":{"line":1313,"column":null}},{"start":{},"end":{}}],"line":1313},"199":{"loc":{"start":{"line":1322,"column":1},"end":{"line":1322,"column":null}},"type":"default-arg","locations":[{"start":{"line":1322,"column":26},"end":{"line":1322,"column":null}}],"line":1322},"200":{"loc":{"start":{"line":1323,"column":1},"end":{"line":1323,"column":null}},"type":"default-arg","locations":[{"start":{"line":1323,"column":23},"end":{"line":1323,"column":null}}],"line":1323},"201":{"loc":{"start":{"line":1347,"column":3},"end":{"line":1347,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1347,"column":3},"end":{"line":1347,"column":37}},{"start":{"line":1347,"column":37},"end":{"line":1347,"column":null}}],"line":1347},"202":{"loc":{"start":{"line":1348,"column":2},"end":{"line":1351,"column":null}},"type":"if","locations":[{"start":{"line":1348,"column":2},"end":{"line":1351,"column":null}},{"start":{},"end":{}}],"line":1348},"203":{"loc":{"start":{"line":1352,"column":2},"end":{"line":1355,"column":null}},"type":"if","locations":[{"start":{"line":1352,"column":2},"end":{"line":1355,"column":null}},{"start":{},"end":{}}],"line":1352},"204":{"loc":{"start":{"line":1357,"column":2},"end":{"line":1361,"column":null}},"type":"if","locations":[{"start":{"line":1357,"column":2},"end":{"line":1361,"column":null}},{"start":{},"end":{}}],"line":1357},"205":{"loc":{"start":{"line":1378,"column":3},"end":{"line":1378,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1378,"column":3},"end":{"line":1378,"column":37}},{"start":{"line":1378,"column":37},"end":{"line":1378,"column":null}}],"line":1378},"206":{"loc":{"start":{"line":1379,"column":2},"end":{"line":1382,"column":null}},"type":"if","locations":[{"start":{"line":1379,"column":2},"end":{"line":1382,"column":null}},{"start":{},"end":{}}],"line":1379},"207":{"loc":{"start":{"line":1383,"column":2},"end":{"line":1386,"column":null}},"type":"if","locations":[{"start":{"line":1383,"column":2},"end":{"line":1386,"column":null}},{"start":{},"end":{}}],"line":1383},"208":{"loc":{"start":{"line":1388,"column":2},"end":{"line":1392,"column":null}},"type":"if","locations":[{"start":{"line":1388,"column":2},"end":{"line":1392,"column":null}},{"start":{},"end":{}}],"line":1388},"209":{"loc":{"start":{"line":1397,"column":2},"end":{"line":1413,"column":null}},"type":"if","locations":[{"start":{"line":1397,"column":2},"end":{"line":1413,"column":null}},{"start":{},"end":{}}],"line":1397},"210":{"loc":{"start":{"line":1406,"column":4},"end":{"line":1406,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1406,"column":4},"end":{"line":1406,"column":38}},{"start":{"line":1406,"column":38},"end":{"line":1406,"column":null}}],"line":1406},"211":{"loc":{"start":{"line":1409,"column":39},"end":{"line":1409,"column":55}},"type":"binary-expr","locations":[{"start":{"line":1409,"column":39},"end":{"line":1409,"column":52}},{"start":{"line":1409,"column":52},"end":{"line":1409,"column":55}}],"line":1409},"212":{"loc":{"start":{"line":1415,"column":2},"end":{"line":1419,"column":null}},"type":"if","locations":[{"start":{"line":1415,"column":2},"end":{"line":1419,"column":null}},{"start":{},"end":{}}],"line":1415},"213":{"loc":{"start":{"line":1425,"column":2},"end":{"line":1433,"column":null}},"type":"if","locations":[{"start":{"line":1425,"column":2},"end":{"line":1433,"column":null}},{"start":{},"end":{}}],"line":1425},"214":{"loc":{"start":{"line":1435,"column":2},"end":{"line":1435,"column":null}},"type":"if","locations":[{"start":{"line":1435,"column":2},"end":{"line":1435,"column":null}},{"start":{},"end":{}}],"line":1435},"215":{"loc":{"start":{"line":1444,"column":1},"end":{"line":1444,"column":null}},"type":"if","locations":[{"start":{"line":1444,"column":1},"end":{"line":1444,"column":null}},{"start":{},"end":{}}],"line":1444},"216":{"loc":{"start":{"line":1471,"column":1},"end":{"line":1471,"column":null}},"type":"if","locations":[{"start":{"line":1471,"column":1},"end":{"line":1471,"column":null}},{"start":{},"end":{}}],"line":1471},"217":{"loc":{"start":{"line":1472,"column":1},"end":{"line":1472,"column":null}},"type":"if","locations":[{"start":{"line":1472,"column":1},"end":{"line":1472,"column":null}},{"start":{},"end":{}}],"line":1472},"218":{"loc":{"start":{"line":1473,"column":1},"end":{"line":1473,"column":null}},"type":"if","locations":[{"start":{"line":1473,"column":1},"end":{"line":1473,"column":null}},{"start":{},"end":{}}],"line":1473},"219":{"loc":{"start":{"line":1474,"column":1},"end":{"line":1474,"column":null}},"type":"if","locations":[{"start":{"line":1474,"column":1},"end":{"line":1474,"column":null}},{"start":{},"end":{}}],"line":1474},"220":{"loc":{"start":{"line":1475,"column":8},"end":{"line":1475,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1475,"column":24},"end":{"line":1475,"column":45}},{"start":{"line":1475,"column":45},"end":{"line":1475,"column":null}}],"line":1475},"221":{"loc":{"start":{"line":1481,"column":1},"end":{"line":1481,"column":null}},"type":"default-arg","locations":[{"start":{"line":1481,"column":23},"end":{"line":1481,"column":null}}],"line":1481},"222":{"loc":{"start":{"line":1483,"column":16},"end":{"line":1483,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1483,"column":30},"end":{"line":1483,"column":54}},{"start":{"line":1483,"column":54},"end":{"line":1483,"column":null}}],"line":1483},"223":{"loc":{"start":{"line":1488,"column":1},"end":{"line":1490,"column":null}},"type":"if","locations":[{"start":{"line":1488,"column":1},"end":{"line":1490,"column":null}},{"start":{},"end":{}}],"line":1488},"224":{"loc":{"start":{"line":1497,"column":1},"end":{"line":1497,"column":null}},"type":"default-arg","locations":[{"start":{"line":1497,"column":17},"end":{"line":1497,"column":null}}],"line":1497},"225":{"loc":{"start":{"line":1501,"column":16},"end":{"line":1501,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1501,"column":16},"end":{"line":1501,"column":34}},{"start":{"line":1501,"column":34},"end":{"line":1501,"column":null}}],"line":1501},"226":{"loc":{"start":{"line":1512,"column":2},"end":{"line":1512,"column":null}},"type":"if","locations":[{"start":{"line":1512,"column":2},"end":{"line":1512,"column":null}},{"start":{},"end":{}}],"line":1512},"227":{"loc":{"start":{"line":1513,"column":2},"end":{"line":1515,"column":null}},"type":"if","locations":[{"start":{"line":1513,"column":2},"end":{"line":1515,"column":null}},{"start":{},"end":{}}],"line":1513},"228":{"loc":{"start":{"line":1520,"column":2},"end":{"line":1520,"column":null}},"type":"if","locations":[{"start":{"line":1520,"column":2},"end":{"line":1520,"column":null}},{"start":{},"end":{}}],"line":1520},"229":{"loc":{"start":{"line":1526,"column":8},"end":{"line":1526,"column":51}},"type":"binary-expr","locations":[{"start":{"line":1526,"column":8},"end":{"line":1526,"column":23}},{"start":{"line":1526,"column":23},"end":{"line":1526,"column":51}}],"line":1526},"230":{"loc":{"start":{"line":1537,"column":16},"end":{"line":1537,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1537,"column":16},"end":{"line":1537,"column":44}},{"start":{"line":1537,"column":44},"end":{"line":1537,"column":null}}],"line":1537},"231":{"loc":{"start":{"line":1538,"column":16},"end":{"line":1538,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1538,"column":16},"end":{"line":1538,"column":44}},{"start":{"line":1538,"column":44},"end":{"line":1538,"column":null}}],"line":1538},"232":{"loc":{"start":{"line":1543,"column":4},"end":{"line":1543,"column":null}},"type":"if","locations":[{"start":{"line":1543,"column":4},"end":{"line":1543,"column":null}},{"start":{},"end":{}}],"line":1543},"233":{"loc":{"start":{"line":1545,"column":17},"end":{"line":1545,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1545,"column":17},"end":{"line":1545,"column":49}},{"start":{"line":1545,"column":49},"end":{"line":1545,"column":null}}],"line":1545},"234":{"loc":{"start":{"line":1546,"column":20},"end":{"line":1546,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1546,"column":20},"end":{"line":1546,"column":30}},{"start":{"line":1546,"column":30},"end":{"line":1546,"column":null}}],"line":1546},"235":{"loc":{"start":{"line":1547,"column":54},"end":{"line":1547,"column":66}},"type":"binary-expr","locations":[{"start":{"line":1547,"column":54},"end":{"line":1547,"column":64}},{"start":{"line":1547,"column":64},"end":{"line":1547,"column":66}}],"line":1547},"236":{"loc":{"start":{"line":1562,"column":1},"end":{"line":1562,"column":null}},"type":"default-arg","locations":[{"start":{"line":1562,"column":19},"end":{"line":1562,"column":null}}],"line":1562},"237":{"loc":{"start":{"line":1563,"column":1},"end":{"line":1563,"column":null}},"type":"default-arg","locations":[{"start":{"line":1563,"column":13},"end":{"line":1563,"column":null}}],"line":1563},"238":{"loc":{"start":{"line":1564,"column":1},"end":{"line":1564,"column":null}},"type":"default-arg","locations":[{"start":{"line":1564,"column":44},"end":{"line":1564,"column":null}}],"line":1564},"239":{"loc":{"start":{"line":1570,"column":14},"end":{"line":1572,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1571,"column":6},"end":{"line":1571,"column":null}},{"start":{"line":1571,"column":42},"end":{"line":1572,"column":null}}],"line":1570},"240":{"loc":{"start":{"line":1586,"column":3},"end":{"line":1586,"column":null}},"type":"if","locations":[{"start":{"line":1586,"column":3},"end":{"line":1586,"column":null}},{"start":{},"end":{}}],"line":1586},"241":{"loc":{"start":{"line":1589,"column":4},"end":{"line":1591,"column":null}},"type":"if","locations":[{"start":{"line":1589,"column":4},"end":{"line":1591,"column":null}},{"start":{},"end":{}}],"line":1589},"242":{"loc":{"start":{"line":1612,"column":1},"end":{"line":1614,"column":null}},"type":"if","locations":[{"start":{"line":1612,"column":1},"end":{"line":1614,"column":null}},{"start":{},"end":{}}],"line":1612},"243":{"loc":{"start":{"line":1626,"column":1},"end":{"line":1626,"column":null}},"type":"default-arg","locations":[{"start":{"line":1626,"column":35},"end":{"line":1626,"column":null}}],"line":1626},"244":{"loc":{"start":{"line":1627,"column":1},"end":{"line":1627,"column":null}},"type":"default-arg","locations":[{"start":{"line":1627,"column":23},"end":{"line":1627,"column":null}}],"line":1627},"245":{"loc":{"start":{"line":1633,"column":1},"end":{"line":1635,"column":null}},"type":"if","locations":[{"start":{"line":1633,"column":1},"end":{"line":1635,"column":null}},{"start":{},"end":{}}],"line":1633},"246":{"loc":{"start":{"line":1633,"column":5},"end":{"line":1633,"column":51}},"type":"binary-expr","locations":[{"start":{"line":1633,"column":5},"end":{"line":1633,"column":34}},{"start":{"line":1633,"column":34},"end":{"line":1633,"column":51}}],"line":1633},"247":{"loc":{"start":{"line":1636,"column":1},"end":{"line":1638,"column":null}},"type":"if","locations":[{"start":{"line":1636,"column":1},"end":{"line":1638,"column":null}},{"start":{},"end":{}}],"line":1636},"248":{"loc":{"start":{"line":1636,"column":5},"end":{"line":1636,"column":52}},"type":"binary-expr","locations":[{"start":{"line":1636,"column":5},"end":{"line":1636,"column":34}},{"start":{"line":1636,"column":34},"end":{"line":1636,"column":52}}],"line":1636},"249":{"loc":{"start":{"line":1640,"column":1},"end":{"line":1646,"column":null}},"type":"if","locations":[{"start":{"line":1640,"column":1},"end":{"line":1646,"column":null}},{"start":{},"end":{}}],"line":1640},"250":{"loc":{"start":{"line":1641,"column":2},"end":{"line":1643,"column":null}},"type":"if","locations":[{"start":{"line":1641,"column":2},"end":{"line":1643,"column":null}},{"start":{},"end":{}}],"line":1641},"251":{"loc":{"start":{"line":1649,"column":1},"end":{"line":1649,"column":null}},"type":"if","locations":[{"start":{"line":1649,"column":1},"end":{"line":1649,"column":null}},{"start":{},"end":{}}],"line":1649},"252":{"loc":{"start":{"line":1650,"column":1},"end":{"line":1650,"column":null}},"type":"if","locations":[{"start":{"line":1650,"column":1},"end":{"line":1650,"column":null}},{"start":{},"end":{}}],"line":1650},"253":{"loc":{"start":{"line":1662,"column":1},"end":{"line":1662,"column":null}},"type":"default-arg","locations":[{"start":{"line":1662,"column":35},"end":{"line":1662,"column":null}}],"line":1662},"254":{"loc":{"start":{"line":1663,"column":1},"end":{"line":1663,"column":null}},"type":"default-arg","locations":[{"start":{"line":1663,"column":23},"end":{"line":1663,"column":null}}],"line":1663},"255":{"loc":{"start":{"line":1667,"column":1},"end":{"line":1669,"column":null}},"type":"if","locations":[{"start":{"line":1667,"column":1},"end":{"line":1669,"column":null}},{"start":{},"end":{}}],"line":1667},"256":{"loc":{"start":{"line":1667,"column":5},"end":{"line":1667,"column":55}},"type":"binary-expr","locations":[{"start":{"line":1667,"column":5},"end":{"line":1667,"column":28}},{"start":{"line":1667,"column":28},"end":{"line":1667,"column":42}},{"start":{"line":1667,"column":42},"end":{"line":1667,"column":55}}],"line":1667},"257":{"loc":{"start":{"line":1670,"column":1},"end":{"line":1672,"column":null}},"type":"if","locations":[{"start":{"line":1670,"column":1},"end":{"line":1672,"column":null}},{"start":{},"end":{}}],"line":1670},"258":{"loc":{"start":{"line":1670,"column":5},"end":{"line":1670,"column":60}},"type":"binary-expr","locations":[{"start":{"line":1670,"column":5},"end":{"line":1670,"column":38}},{"start":{"line":1670,"column":38},"end":{"line":1670,"column":60}}],"line":1670},"259":{"loc":{"start":{"line":1675,"column":1},"end":{"line":1678,"column":null}},"type":"if","locations":[{"start":{"line":1675,"column":1},"end":{"line":1678,"column":null}},{"start":{},"end":{}}],"line":1675},"260":{"loc":{"start":{"line":1679,"column":1},"end":{"line":1682,"column":null}},"type":"if","locations":[{"start":{"line":1679,"column":1},"end":{"line":1682,"column":null}},{"start":{},"end":{}}],"line":1679},"261":{"loc":{"start":{"line":1696,"column":1},"end":{"line":1696,"column":null}},"type":"default-arg","locations":[{"start":{"line":1696,"column":35},"end":{"line":1696,"column":null}}],"line":1696},"262":{"loc":{"start":{"line":1697,"column":1},"end":{"line":1697,"column":null}},"type":"default-arg","locations":[{"start":{"line":1697,"column":23},"end":{"line":1697,"column":null}}],"line":1697},"263":{"loc":{"start":{"line":1700,"column":1},"end":{"line":1702,"column":null}},"type":"if","locations":[{"start":{"line":1700,"column":1},"end":{"line":1702,"column":null}},{"start":{},"end":{}}],"line":1700},"264":{"loc":{"start":{"line":1700,"column":5},"end":{"line":1700,"column":55}},"type":"binary-expr","locations":[{"start":{"line":1700,"column":5},"end":{"line":1700,"column":27}},{"start":{"line":1700,"column":27},"end":{"line":1700,"column":40}},{"start":{"line":1700,"column":40},"end":{"line":1700,"column":55}}],"line":1700},"265":{"loc":{"start":{"line":1722,"column":1},"end":{"line":1722,"column":null}},"type":"default-arg","locations":[{"start":{"line":1722,"column":35},"end":{"line":1722,"column":null}}],"line":1722},"266":{"loc":{"start":{"line":1723,"column":1},"end":{"line":1723,"column":null}},"type":"default-arg","locations":[{"start":{"line":1723,"column":23},"end":{"line":1723,"column":null}}],"line":1723},"267":{"loc":{"start":{"line":1726,"column":1},"end":{"line":1728,"column":null}},"type":"if","locations":[{"start":{"line":1726,"column":1},"end":{"line":1728,"column":null}},{"start":{},"end":{}}],"line":1726},"268":{"loc":{"start":{"line":1726,"column":5},"end":{"line":1726,"column":55}},"type":"binary-expr","locations":[{"start":{"line":1726,"column":5},"end":{"line":1726,"column":27}},{"start":{"line":1726,"column":27},"end":{"line":1726,"column":40}},{"start":{"line":1726,"column":40},"end":{"line":1726,"column":55}}],"line":1726},"269":{"loc":{"start":{"line":1781,"column":2},"end":{"line":1781,"column":null}},"type":"if","locations":[{"start":{"line":1781,"column":2},"end":{"line":1781,"column":null}},{"start":{},"end":{}}],"line":1781},"270":{"loc":{"start":{"line":1790,"column":13},"end":{"line":1790,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1790,"column":13},"end":{"line":1790,"column":41}},{"start":{"line":1790,"column":41},"end":{"line":1790,"column":null}}],"line":1790},"271":{"loc":{"start":{"line":1791,"column":13},"end":{"line":1791,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1791,"column":13},"end":{"line":1791,"column":41}},{"start":{"line":1791,"column":41},"end":{"line":1791,"column":null}}],"line":1791},"272":{"loc":{"start":{"line":1797,"column":12},"end":{"line":1797,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1797,"column":12},"end":{"line":1797,"column":44}},{"start":{"line":1797,"column":44},"end":{"line":1797,"column":null}}],"line":1797},"273":{"loc":{"start":{"line":1799,"column":2},"end":{"line":1803,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1800,"column":5},"end":{"line":1800,"column":null}},{"start":{"line":1801,"column":5},"end":{"line":1803,"column":null}}],"line":1799},"274":{"loc":{"start":{"line":1801,"column":5},"end":{"line":1803,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1802,"column":6},"end":{"line":1802,"column":null}},{"start":{"line":1803,"column":6},"end":{"line":1803,"column":null}}],"line":1801},"275":{"loc":{"start":{"line":1801,"column":5},"end":{"line":1801,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1801,"column":5},"end":{"line":1801,"column":39}},{"start":{"line":1801,"column":39},"end":{"line":1801,"column":null}}],"line":1801},"276":{"loc":{"start":{"line":1804,"column":16},"end":{"line":1804,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1804,"column":16},"end":{"line":1804,"column":28}},{"start":{"line":1804,"column":28},"end":{"line":1804,"column":null}}],"line":1804},"277":{"loc":{"start":{"line":1806,"column":2},"end":{"line":1808,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1807,"column":5},"end":{"line":1807,"column":null}},{"start":{"line":1808,"column":5},"end":{"line":1808,"column":null}}],"line":1806},"278":{"loc":{"start":{"line":1807,"column":29},"end":{"line":1807,"column":73}},"type":"cond-expr","locations":[{"start":{"line":1807,"column":46},"end":{"line":1807,"column":71}},{"start":{"line":1807,"column":71},"end":{"line":1807,"column":73}}],"line":1807},"279":{"loc":{"start":{"line":1809,"column":15},"end":{"line":1809,"column":29}},"type":"binary-expr","locations":[{"start":{"line":1809,"column":15},"end":{"line":1809,"column":25}},{"start":{"line":1809,"column":25},"end":{"line":1809,"column":29}}],"line":1809},"280":{"loc":{"start":{"line":1811,"column":2},"end":{"line":1811,"column":null}},"type":"cond-expr","locations":[{"start":{"line":1811,"column":22},"end":{"line":1811,"column":49}},{"start":{"line":1811,"column":49},"end":{"line":1811,"column":null}}],"line":1811},"281":{"loc":{"start":{"line":1811,"column":49},"end":{"line":1811,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1811,"column":49},"end":{"line":1811,"column":57}},{"start":{"line":1811,"column":57},"end":{"line":1811,"column":null}}],"line":1811},"282":{"loc":{"start":{"line":1812,"column":25},"end":{"line":1812,"column":38}},"type":"binary-expr","locations":[{"start":{"line":1812,"column":25},"end":{"line":1812,"column":35}},{"start":{"line":1812,"column":35},"end":{"line":1812,"column":38}}],"line":1812},"283":{"loc":{"start":{"line":1812,"column":45},"end":{"line":1812,"column":56}},"type":"binary-expr","locations":[{"start":{"line":1812,"column":45},"end":{"line":1812,"column":53}},{"start":{"line":1812,"column":53},"end":{"line":1812,"column":56}}],"line":1812},"284":{"loc":{"start":{"line":1821,"column":16},"end":{"line":1821,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1821,"column":16},"end":{"line":1821,"column":34}},{"start":{"line":1821,"column":34},"end":{"line":1821,"column":null}}],"line":1821},"285":{"loc":{"start":{"line":1841,"column":11},"end":{"line":1841,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1841,"column":11},"end":{"line":1841,"column":23}},{"start":{"line":1841,"column":23},"end":{"line":1841,"column":null}}],"line":1841},"286":{"loc":{"start":{"line":1842,"column":14},"end":{"line":1842,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1842,"column":14},"end":{"line":1842,"column":29}},{"start":{"line":1842,"column":29},"end":{"line":1842,"column":null}}],"line":1842},"287":{"loc":{"start":{"line":1847,"column":14},"end":{"line":1847,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1847,"column":14},"end":{"line":1847,"column":29}},{"start":{"line":1847,"column":29},"end":{"line":1847,"column":null}}],"line":1847},"288":{"loc":{"start":{"line":1848,"column":17},"end":{"line":1848,"column":null}},"type":"binary-expr","locations":[{"start":{"line":1848,"column":17},"end":{"line":1848,"column":35}},{"start":{"line":1848,"column":35},"end":{"line":1848,"column":null}}],"line":1848},"289":{"loc":{"start":{"line":1919,"column":2},"end":{"line":1922,"column":null}},"type":"if","locations":[{"start":{"line":1919,"column":2},"end":{"line":1922,"column":null}},{"start":{},"end":{}}],"line":1919},"290":{"loc":{"start":{"line":1919,"column":6},"end":{"line":1919,"column":61}},"type":"binary-expr","locations":[{"start":{"line":1919,"column":6},"end":{"line":1919,"column":39}},{"start":{"line":1919,"column":39},"end":{"line":1919,"column":61}}],"line":1919},"291":{"loc":{"start":{"line":1923,"column":2},"end":{"line":1926,"column":null}},"type":"if","locations":[{"start":{"line":1923,"column":2},"end":{"line":1926,"column":null}},{"start":{},"end":{}}],"line":1923},"292":{"loc":{"start":{"line":1923,"column":6},"end":{"line":1923,"column":60}},"type":"binary-expr","locations":[{"start":{"line":1923,"column":6},"end":{"line":1923,"column":39}},{"start":{"line":1923,"column":39},"end":{"line":1923,"column":60}}],"line":1923},"293":{"loc":{"start":{"line":1990,"column":2},"end":{"line":1993,"column":null}},"type":"if","locations":[{"start":{"line":1990,"column":2},"end":{"line":1993,"column":null}},{"start":{},"end":{}}],"line":1990},"294":{"loc":{"start":{"line":1990,"column":6},"end":{"line":1990,"column":61}},"type":"binary-expr","locations":[{"start":{"line":1990,"column":6},"end":{"line":1990,"column":39}},{"start":{"line":1990,"column":39},"end":{"line":1990,"column":61}}],"line":1990},"295":{"loc":{"start":{"line":1994,"column":2},"end":{"line":1997,"column":null}},"type":"if","locations":[{"start":{"line":1994,"column":2},"end":{"line":1997,"column":null}},{"start":{},"end":{}}],"line":1994},"296":{"loc":{"start":{"line":1994,"column":6},"end":{"line":1994,"column":60}},"type":"binary-expr","locations":[{"start":{"line":1994,"column":6},"end":{"line":1994,"column":39}},{"start":{"line":1994,"column":39},"end":{"line":1994,"column":60}}],"line":1994},"297":{"loc":{"start":{"line":2126,"column":1},"end":{"line":2126,"column":null}},"type":"binary-expr","locations":[{"start":{"line":2126,"column":1},"end":{"line":2126,"column":20}},{"start":{"line":2126,"column":15},"end":{"line":2126,"column":null}}],"line":2126},"298":{"loc":{"start":{"line":2128,"column":0},"end":{"line":2130,"column":null}},"type":"if","locations":[{"start":{"line":2128,"column":0},"end":{"line":2130,"column":null}},{"start":{},"end":{}}],"line":2128}},"s":{"0":3,"1":3,"2":3,"3":3,"4":1,"5":1,"6":3,"7":9,"8":0,"9":9,"10":0,"11":9,"12":0,"13":9,"14":9,"15":0,"16":0,"17":0,"18":0,"19":9,"20":9,"21":9,"22":3,"23":1,"24":0,"25":1,"26":1,"27":1,"28":0,"29":0,"30":0,"31":0,"32":1,"33":0,"34":0,"35":0,"36":2,"37":2,"38":2,"39":2,"40":2,"41":2,"42":1,"43":2,"44":1,"45":2,"46":0,"47":2,"48":0,"49":0,"50":0,"51":0,"52":0,"53":2,"54":2,"55":0,"56":2,"57":2,"58":2,"59":2,"60":2,"61":2,"62":2,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":0,"70":0,"71":1,"72":1,"73":1,"74":1,"75":0,"76":0,"77":1,"78":1,"79":1,"80":0,"81":1,"82":1,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":1,"90":1,"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":3,"108":2,"109":2,"110":0,"111":2,"112":2,"113":2,"114":0,"115":2,"116":0,"117":0,"118":14,"119":6,"120":6,"121":3,"122":3,"123":3,"124":6,"125":4,"126":2,"127":2,"128":2,"129":4,"130":4,"131":4,"132":4,"133":3,"134":1,"135":4,"136":4,"137":4,"138":0,"139":4,"140":4,"141":6,"142":6,"143":6,"144":6,"145":6,"146":6,"147":4,"148":0,"149":4,"150":4,"151":6,"152":6,"153":6,"154":6,"155":6,"156":6,"157":6,"158":4,"159":4,"160":4,"161":0,"162":4,"163":0,"164":0,"165":0,"166":4,"167":4,"168":1,"169":1,"170":1,"171":4,"172":4,"173":4,"174":4,"175":4,"176":4,"177":3,"178":1,"179":1,"180":4,"181":4,"182":5,"183":6,"184":6,"185":6,"186":6,"187":6,"188":2,"189":2,"190":1,"191":1,"192":4,"193":0,"194":0,"195":4,"196":2,"197":2,"198":2,"199":2,"200":2,"201":2,"202":4,"203":2,"204":2,"205":2,"206":2,"207":2,"208":4,"209":2,"210":2,"211":2,"212":2,"213":2,"214":2,"215":2,"216":2,"217":2,"218":2,"219":2,"220":0,"221":2,"222":2,"223":2,"224":0,"225":0,"226":2,"227":0,"228":0,"229":2,"230":0,"231":0,"232":0,"233":0,"234":0,"235":0,"236":0,"237":0,"238":0,"239":0,"240":0,"241":2,"242":2,"243":1,"244":1,"245":0,"246":1,"247":1,"248":1,"249":0,"250":0,"251":0,"252":1,"253":1,"254":1,"255":1,"256":0,"257":0,"258":4,"259":2,"260":2,"261":3,"262":1,"263":1,"264":2,"265":2,"266":2,"267":2,"268":0,"269":0,"270":0,"271":2,"272":2,"273":2,"274":2,"275":2,"276":2,"277":2,"278":2,"279":0,"280":0,"281":0,"282":0,"283":0,"284":0,"285":0,"286":0,"287":0,"288":0,"289":0,"290":3,"291":3,"292":2,"293":2,"294":832,"295":832,"296":832,"297":1,"298":1,"299":831,"300":830,"301":830,"302":831,"303":1,"304":1,"305":1,"306":1,"307":1,"308":1,"309":1,"310":1,"311":1,"312":1,"313":1,"314":1,"315":0,"316":1,"317":1,"318":1,"319":1,"320":0,"321":1,"322":0,"323":0,"324":0,"325":0,"326":0,"327":1,"328":1,"329":0,"330":0,"331":0,"332":1,"333":1,"334":1,"335":1,"336":1,"337":1,"338":1,"339":0,"340":0,"341":1,"342":1,"343":1,"344":1,"345":1,"346":0,"347":0,"348":0,"349":2,"350":2,"351":2,"352":2,"353":2,"354":2,"355":1,"356":1,"357":1,"358":0,"359":1,"360":0,"361":1,"362":1,"363":0,"364":1,"365":1,"366":0,"367":0,"368":1,"369":1,"370":1,"371":0,"372":1,"373":1,"374":0,"375":1,"376":1,"377":0,"378":0,"379":1,"380":1,"381":2,"382":2,"383":1,"384":2,"385":0,"386":0,"387":0,"388":0,"389":0,"390":0,"391":0,"392":0,"393":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":0,"405":1,"406":1,"407":0,"408":1,"409":1,"410":1,"411":0,"412":0,"413":0,"414":0,"415":0,"416":1,"417":2,"418":1,"419":1,"420":1,"421":1,"422":1,"423":1,"424":0,"425":1,"426":1,"427":1,"428":0,"429":1,"430":0,"431":0,"432":0,"433":0,"434":0,"435":1,"436":1,"437":1,"438":1,"439":1,"440":0,"441":1,"442":0,"443":1,"444":0,"445":0,"446":0,"447":2,"448":2,"449":2,"450":2,"451":2,"452":2,"453":0,"454":0,"455":0,"456":1,"457":1,"458":0,"459":1,"460":1,"461":1,"462":1,"463":1,"464":1,"465":0,"466":0,"467":0,"468":1,"469":1,"470":1,"471":1,"472":1,"473":1,"474":1,"475":1,"476":1,"477":0,"478":0,"479":0,"480":0,"481":0,"482":0,"483":0,"484":0,"485":1,"486":0,"487":0,"488":0,"489":0,"490":0,"491":0,"492":0,"493":0,"494":0,"495":0,"496":0,"497":0,"498":0,"499":0,"500":0,"501":0,"502":0,"503":0,"504":0,"505":0,"506":0,"507":0,"508":0,"509":0,"510":0,"511":0,"512":0,"513":0,"514":0,"515":0,"516":0,"517":3,"518":3,"519":3,"520":1,"521":3,"522":1,"523":3,"524":2,"525":3,"526":1,"527":3,"528":2,"529":2,"530":2,"531":2,"532":1,"533":1,"534":1,"535":1,"536":1,"537":1,"538":1,"539":1,"540":1,"541":0,"542":1,"543":0,"544":1,"545":1,"546":0,"547":0,"548":0,"549":0,"550":1,"551":1,"552":1,"553":1,"554":1,"555":1,"556":0,"557":0,"558":0,"559":1,"560":1,"561":0,"562":1,"563":1,"564":1,"565":1,"566":1,"567":1,"568":0,"569":1,"570":1,"571":1,"572":1,"573":1,"574":1,"575":1,"576":0,"577":1,"578":1,"579":1,"580":0,"581":0,"582":1,"583":1,"584":0,"585":0,"586":0,"587":1,"588":0,"589":0,"590":0,"591":0,"592":0,"593":0,"594":0,"595":0,"596":0,"597":0,"598":0,"599":0,"600":0,"601":0,"602":0,"603":0,"604":0,"605":0,"606":0,"607":0,"608":0,"609":0,"610":0,"611":0,"612":0,"613":0,"614":0,"615":0,"616":0,"617":0,"618":0,"619":0,"620":0,"621":0,"622":0,"623":0,"624":0,"625":0,"626":0,"627":0,"628":0,"629":0,"630":0,"631":0,"632":0,"633":0,"634":0,"635":0,"636":0,"637":0,"638":0,"639":0,"640":0,"641":0,"642":0,"643":0,"644":3,"645":3,"646":3,"647":7,"648":1,"649":6,"650":6,"651":3,"652":3,"653":3,"654":3,"655":3,"656":1,"657":1,"658":1,"659":1,"660":1,"661":1,"662":1,"663":2,"664":2,"665":2,"666":2,"667":2,"668":2,"669":2,"670":2,"671":4,"672":2,"673":3,"674":3,"675":0,"676":0,"677":0,"678":0,"679":0,"680":3,"681":2,"682":2,"683":2,"684":0,"685":0,"686":3,"687":0,"688":0,"689":0,"690":0,"691":0,"692":0,"693":0,"694":0,"695":0,"696":3,"697":0,"698":0,"699":3,"700":0,"701":0,"702":0,"703":0,"704":0,"705":3,"706":0,"707":0,"708":0,"709":0,"710":0,"711":0,"712":0,"713":0,"714":0,"715":0,"716":3,"717":0,"718":0,"719":0,"720":0,"721":0,"722":0,"723":0,"724":0,"725":0,"726":0,"727":0,"728":0,"729":3,"730":0,"731":0,"732":0,"733":0,"734":0,"735":0,"736":0,"737":0,"738":0,"739":0,"740":0,"741":0,"742":3,"743":3,"744":0},"f":{"0":3,"1":1,"2":9,"3":9,"4":0,"5":1,"6":2,"7":2,"8":1,"9":1,"10":0,"11":0,"12":2,"13":2,"14":1,"15":1,"16":1,"17":1,"18":1,"19":0,"20":0,"21":1,"22":0,"23":0,"24":0,"25":2,"26":14,"27":6,"28":6,"29":4,"30":4,"31":4,"32":6,"33":4,"34":4,"35":4,"36":2,"37":1,"38":4,"39":3,"40":2,"41":2,"42":1,"43":1,"44":1,"45":0,"46":0,"47":1,"48":1,"49":0,"50":1,"51":0,"52":0,"53":0,"54":2,"55":1,"56":0,"57":1,"58":1,"59":0,"60":1,"61":2,"62":2,"63":1,"64":1,"65":2,"66":1,"67":1,"68":3,"69":2,"70":1,"71":1,"72":0,"73":1,"74":0,"75":1,"76":1,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":3,"84":3,"85":3,"86":1,"87":2,"88":4,"89":0,"90":2,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0},"b":{"0":[0,9],"1":[9,2],"2":[0,9],"3":[9,2],"4":[0,9],"5":[9,0],"6":[0,0],"7":[9],"8":[0,9],"9":[2,7],"10":[9,2],"11":[1],"12":[1],"13":[0,1],"14":[0,1],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0],"19":[0,2],"20":[1,1,1],"21":[1,0],"22":[1,0],"23":[1,1],"24":[1],"25":[1,0],"26":[1,0,0],"27":[1,0],"28":[0,0],"29":[0,0],"30":[0],"31":[0],"32":[0],"33":[0,0],"34":[0,0],"35":[0,0],"36":[0,0],"37":[0,0],"38":[0,2],"39":[0,2],"40":[2,2],"41":[0,6],"42":[4,2],"43":[0,2],"44":[3,1],"45":[4,3],"46":[0,4],"47":[4,0],"48":[4,0],"49":[6],"50":[6,2],"51":[6,4],"52":[0,4],"53":[4,2],"54":[6,4],"55":[6,2],"56":[4,2],"57":[4,0],"58":[0,4],"59":[0,4],"60":[1,3],"61":[4,3],"62":[3,1],"63":[4,3],"64":[5,4],"65":[1,4],"66":[2,3],"67":[2,3],"68":[2,0,0],"69":[3,0],"70":[2,4],"71":[6,2],"72":[2,0],"73":[1,1],"74":[1,0],"75":[0,4],"76":[2,2],"77":[4,2],"78":[2,0],"79":[2,2],"80":[2,0],"81":[2,0],"82":[2,2],"83":[2,0],"84":[1,1],"85":[1,0],"86":[1,0],"87":[2,0],"88":[2,2],"89":[2,0],"90":[2,2],"91":[0,2],"92":[2,0],"93":[0,2],"94":[2,0],"95":[0,0],"96":[0,0],"97":[0,2],"98":[2,0],"99":[0,0],"100":[2,0],"101":[0,0],"102":[0,0],"103":[0,0],"104":[2],"105":[2,0],"106":[2,0],"107":[2,0],"108":[0,1],"109":[0,1],"110":[1,1],"111":[0,0],"112":[0,1],"113":[0,0],"114":[0,0],"115":[2,2],"116":[3],"117":[1,2],"118":[0,0],"119":[2],"120":[0,0],"121":[0,0],"122":[0,0],"123":[0,0],"124":[0,0],"125":[0,0],"126":[2],"127":[832,0],"128":[1,831],"129":[830,1],"130":[0,830],"131":[0,830],"132":[1],"133":[1],"134":[1,0],"135":[1,0],"136":[1,0],"137":[1,0],"138":[0,1],"139":[0,0],"140":[1,0],"141":[0,1],"142":[0,0],"143":[0,0],"144":[0,0],"145":[2],"146":[2,0],"147":[2,0],"148":[2,2],"149":[1,1],"150":[1,1],"151":[1,1],"152":[2,1],"153":[1,0],"154":[1],"155":[1],"156":[1],"157":[0,1],"158":[0,1],"159":[1],"160":[1],"161":[1],"162":[0,1],"163":[0,1],"164":[2],"165":[2],"166":[2],"167":[1,0],"168":[0,2],"169":[2,1],"170":[0,0],"171":[1,0],"172":[1,0],"173":[0,1],"174":[1,0],"175":[0,1],"176":[0,1],"177":[1,1],"178":[0,1],"179":[0,0],"180":[0,0],"181":[2],"182":[1,1],"183":[0,1],"184":[1,0,1,1],"185":[0,1],"186":[1,1],"187":[0,0],"188":[0,1],"189":[1,1],"190":[0,1],"191":[1,0],"192":[1,0],"193":[0,0],"194":[2,0],"195":[0,0],"196":[0,1],"197":[1,1],"198":[0,0],"199":[1],"200":[1],"201":[1,0],"202":[1,0],"203":[0,0],"204":[0,0],"205":[0,0],"206":[0,1],"207":[0,0],"208":[0,0],"209":[0,0],"210":[0,0],"211":[0,0],"212":[0,0],"213":[0,0],"214":[0,0],"215":[0,0],"216":[1,2],"217":[1,2],"218":[2,1],"219":[1,2],"220":[2,1],"221":[2],"222":[1,1],"223":[1,1],"224":[1],"225":[1,0],"226":[0,1],"227":[0,1],"228":[0,0],"229":[1,2],"230":[0,0],"231":[0,0],"232":[0,1],"233":[1,0],"234":[1,0],"235":[1,0],"236":[1],"237":[1],"238":[1],"239":[0,1],"240":[0,1],"241":[0,1],"242":[0,1],"243":[0],"244":[0],"245":[0,0],"246":[0,0],"247":[0,0],"248":[0,0],"249":[0,0],"250":[0,0],"251":[0,0],"252":[0,0],"253":[0],"254":[0],"255":[0,0],"256":[0,0,0],"257":[0,0],"258":[0,0],"259":[0,0],"260":[0,0],"261":[0],"262":[0],"263":[0,0],"264":[0,0,0],"265":[0],"266":[0],"267":[0,0],"268":[0,0,0],"269":[1,6],"270":[3,0],"271":[3,0],"272":[1,0],"273":[1,0],"274":[0,0],"275":[0,0],"276":[1,0],"277":[0,1],"278":[0,0],"279":[1,0],"280":[0,1],"281":[1,0],"282":[1,0],"283":[1,0],"284":[2,1],"285":[4,0],"286":[4,0],"287":[4,4],"288":[4,4],"289":[0,0],"290":[0,0],"291":[0,0],"292":[0,0],"293":[0,0],"294":[0,0],"295":[0,0],"296":[0,0],"297":[3,3],"298":[0,3]},"meta":{"lastBranch":299,"lastFunction":101,"lastStatement":745,"seen":{"s:49:0:49:Infinity":0,"s:51:16:51:Infinity":1,"f:78:9:78:38":0,"s:79:1:98:Infinity":2,"s:194:35:201:Infinity":3,"f:197:7:197:8":1,"s:198:2:198:Infinity":4,"s:199:2:199:Infinity":5,"s:203:18:232:Infinity":6,"f:212:14:212:15":2,"b:213:2:218:Infinity:undefined:undefined:undefined:undefined":0,"s:213:2:218:Infinity":7,"b:213:6:213:28:213:28:213:52":1,"s:214:3:217:Infinity":8,"b:219:2:224:Infinity:undefined:undefined:undefined:undefined":2,"s:219:2:224:Infinity":9,"b:219:6:219:31:219:31:219:52":3,"s:220:3:223:Infinity":10,"b:225:2:231:Infinity:undefined:undefined:undefined:undefined":4,"s:225:2:231:Infinity":11,"b:225:6:225:32:225:32:225:80":5,"b:225:34:225:56:225:56:225:80":6,"s:226:3:230:Infinity":12,"f:234:9:234:17":3,"b:234:39:234:66":7,"s:236:16:236:Infinity":13,"b:237:1:241:Infinity:undefined:undefined:undefined:undefined":8,"s:237:1:241:Infinity":14,"s:238:2:238:Infinity":15,"s:239:2:239:Infinity":16,"f:239:30:239:31":4,"s:239:39:239:72":17,"s:240:2:240:Infinity":18,"s:250:5:250:Infinity":19,"s:253:2:255:Infinity":20,"b:254:5:254:Infinity:255:5:255:Infinity":9,"b:253:2:253:12:253:12:253:Infinity":10,"s:257:1:262:Infinity":21,"s:265:6:265:Infinity":22,"f:271:15:271:Infinity":5,"b:274:53:274:Infinity":11,"b:274:15:274:26":12,"b:277:1:279:Infinity:undefined:undefined:undefined:undefined":13,"s:277:1:279:Infinity":23,"s:278:2:278:Infinity":24,"s:280:1:296:Infinity":25,"s:281:29:285:Infinity":26,"b:286:2:289:Infinity:undefined:undefined:undefined:undefined":14,"s:286:2:289:Infinity":27,"b:287:3:287:Infinity:undefined:undefined:undefined:undefined":15,"s:287:3:287:Infinity":28,"s:287:22:287:Infinity":29,"b:288:3:288:Infinity:undefined:undefined:undefined:undefined":16,"s:288:3:288:Infinity":30,"s:288:22:288:Infinity":31,"s:290:2:290:Infinity":32,"b:292:2:294:Infinity:undefined:undefined:undefined:undefined":17,"s:292:2:294:Infinity":33,"s:293:3:293:Infinity":34,"s:295:2:295:Infinity":35,"f:307:15:307:Infinity":6,"s:312:1:341:Infinity":36,"f:312:26:312:27":7,"s:313:8:315:Infinity":37,"s:316:15:316:Infinity":38,"s:317:15:317:Infinity":39,"s:318:16:318:Infinity":40,"s:319:16:321:Infinity":41,"f:319:27:319:33":8,"s:320:3:320:Infinity":42,"s:323:2:325:Infinity":43,"f:323:27:323:28":9,"s:324:3:324:Infinity":44,"s:326:2:328:Infinity":45,"f:326:27:326:28":10,"s:327:3:327:Infinity":46,"s:329:2:334:Infinity":47,"f:329:20:329:21":11,"b:330:3:330:Infinity:undefined:undefined:undefined:undefined":18,"s:330:3:330:Infinity":48,"s:330:16:330:Infinity":49,"s:331:3:331:Infinity":50,"s:332:3:332:Infinity":51,"s:333:3:333:Infinity":52,"s:335:2:340:Infinity":53,"f:335:20:335:21":12,"b:336:3:336:Infinity:undefined:undefined:undefined:undefined":19,"s:336:3:336:Infinity":54,"s:336:16:336:Infinity":55,"s:337:3:337:Infinity":56,"s:338:3:338:Infinity":57,"s:339:3:339:Infinity":58,"f:349:1:349:13":13,"s:350:2:350:Infinity":59,"s:351:2:351:Infinity":60,"s:352:2:352:Infinity":61,"s:353:2:353:Infinity":62,"f:357:9:357:17":14,"s:358:1:358:Infinity":63,"b:358:16:358:23:358:23:358:50:358:50:358:63":20,"f:361:15:361:33":15,"s:363:1:374:Infinity":64,"s:364:21:369:Infinity":65,"s:370:18:370:Infinity":66,"b:371:2:371:Infinity:undefined:undefined:undefined:undefined":21,"s:371:2:371:Infinity":67,"s:371:15:371:Infinity":68,"s:373:2:373:Infinity":69,"s:375:1:375:Infinity":70,"f:378:15:378:35":16,"s:380:1:396:Infinity":71,"s:381:2:389:Infinity":72,"f:381:26:381:27":17,"s:382:18:388:Infinity":73,"f:384:19:384:20":18,"s:384:28:384:39":74,"f:385:23:385:29":19,"s:386:5:386:Infinity":75,"f:386:18:386:24":20,"s:386:24:386:33":76,"b:391:2:394:Infinity:undefined:undefined:undefined:undefined":22,"s:391:2:394:Infinity":77,"b:391:6:391:22:391:22:391:49":23,"s:392:19:392:Infinity":78,"s:393:3:393:Infinity":79,"s:395:2:395:Infinity":80,"f:399:15:399:Infinity":21,"b:403:23:403:Infinity":24,"b:405:1:431:Infinity:undefined:undefined:undefined:undefined":25,"s:405:1:431:Infinity":81,"b:406:2:406:Infinity:407:3:407:19:407:19:407:Infinity":26,"s:410:3:412:Infinity":82,"b:411:6:411:Infinity:412:6:412:Infinity":27,"s:413:2:413:Infinity":83,"b:414:2:424:Infinity:undefined:undefined:undefined:undefined":28,"s:414:2:424:Infinity":84,"s:415:3:415:Infinity":85,"s:416:3:416:Infinity":86,"b:417:3:423:Infinity:undefined:undefined:undefined:undefined":29,"s:417:3:423:Infinity":87,"s:418:4:422:Infinity":88,"s:425:2:429:Infinity":89,"s:430:2:430:Infinity":90,"s:432:1:432:Infinity":91,"s:433:1:433:Infinity":92,"f:436:15:436:Infinity":22,"b:438:24:438:Infinity":30,"b:439:23:439:Infinity":31,"s:442:1:445:Infinity":93,"f:442:35:442:41":23,"s:443:2:443:Infinity":94,"s:444:2:444:Infinity":95,"f:448:15:448:Infinity":24,"b:450:14:450:Infinity":32,"b:452:1:452:Infinity:undefined:undefined:undefined:undefined":33,"s:452:1:452:Infinity":96,"b:452:1:452:20:452:15:452:29":34,"s:452:29:452:Infinity":97,"b:453:1:453:Infinity:undefined:undefined:undefined:undefined":35,"s:453:1:453:Infinity":98,"s:453:14:453:Infinity":99,"s:454:12:454:Infinity":100,"s:455:16:455:Infinity":101,"b:455:29:455:41:455:41:455:Infinity":36,"s:456:7:458:Infinity":102,"s:459:1:459:Infinity":103,"b:460:1:460:Infinity:undefined:undefined:undefined:undefined":37,"s:460:1:460:Infinity":104,"s:460:14:460:Infinity":105,"s:461:1:461:Infinity":106,"s:464:20:464:Infinity":107,"f:495:9:495:37":25,"s:497:1:506:Infinity":108,"b:498:2:498:Infinity:undefined:undefined:undefined:undefined":38,"s:498:2:498:Infinity":109,"s:498:35:498:Infinity":110,"s:499:14:499:Infinity":111,"s:500:17:500:Infinity":112,"b:501:2:501:Infinity:undefined:undefined:undefined:undefined":39,"s:501:2:501:Infinity":113,"b:501:6:501:36:501:36:501:53":40,"s:501:53:501:Infinity":114,"s:502:2:502:Infinity":115,"s:504:2:504:Infinity":116,"s:505:2:505:Infinity":117,"f:520:9:520:23":26,"s:522:1:525:Infinity":118,"f:522:40:522:41":27,"s:523:17:523:Infinity":119,"s:524:2:524:Infinity":120,"b:524:25:524:30:524:30:524:Infinity":41,"s:536:30:536:Infinity":121,"s:537:30:537:Infinity":122,"s:538:29:538:Infinity":123,"f:540:9:540:26":28,"b:541:1:541:Infinity:undefined:undefined:undefined:undefined":42,"s:541:1:541:Infinity":124,"s:541:13:541:Infinity":125,"b:542:1:542:Infinity:undefined:undefined:undefined:undefined":43,"s:542:1:542:Infinity":126,"s:542:28:542:Infinity":127,"s:543:1:543:Infinity":128,"f:546:9:546:26":29,"s:547:1:555:Infinity":129,"s:548:14:548:Infinity":130,"s:549:17:549:Infinity":131,"b:550:2:552:Infinity:undefined:undefined:undefined:undefined":44,"s:550:2:552:Infinity":132,"b:550:6:550:16:550:16:550:44":45,"s:551:3:551:Infinity":133,"s:556:1:556:Infinity":134,"f:559:15:559:32":30,"s:560:1:560:Infinity":135,"s:561:1:561:Infinity":136,"f:564:9:564:26":31,"b:565:1:565:Infinity:undefined:undefined:undefined:undefined":46,"s:565:1:565:Infinity":137,"s:565:25:565:Infinity":138,"s:566:14:566:Infinity":139,"b:566:18:566:51:566:51:566:Infinity":47,"s:567:1:567:Infinity":140,"b:567:8:567:16:567:16:567:Infinity":48,"f:570:15:570:Infinity":32,"b:574:47:574:Infinity":49,"s:577:13:577:Infinity":141,"b:577:13:577:31:577:31:577:Infinity":50,"s:578:15:578:Infinity":142,"s:579:24:579:Infinity":143,"b:579:33:579:58:579:58:579:63":51,"s:580:19:580:Infinity":144,"s:581:15:581:Infinity":145,"s:582:22:586:Infinity":146,"f:582:22:582:34":33,"b:583:2:583:Infinity:undefined:undefined:undefined:undefined":52,"s:583:2:583:Infinity":147,"s:583:15:583:Infinity":148,"s:584:2:584:Infinity":149,"s:585:2:585:Infinity":150,"s:589:20:589:Infinity":151,"s:591:2:593:Infinity":152,"b:592:5:592:Infinity:593:5:593:Infinity":53,"s:594:21:594:Infinity":153,"b:594:30:594:57:594:57:594:79":54,"s:595:22:595:Infinity":154,"b:595:22:595:43:595:43:595:Infinity":55,"s:596:19:596:Infinity":155,"s:599:20:599:Infinity":156,"b:602:1:634:Infinity:undefined:undefined:undefined:undefined":56,"s:602:1:634:Infinity":157,"s:603:8:603:Infinity":158,"b:603:23:603:35:603:35:603:39":57,"s:604:2:617:Infinity":159,"b:605:3:605:Infinity:undefined:undefined:undefined:undefined":58,"s:605:3:605:Infinity":160,"s:605:17:605:Infinity":161,"b:606:3:610:Infinity:undefined:undefined:undefined:undefined":59,"s:606:3:610:Infinity":162,"s:607:4:607:Infinity":163,"s:608:4:608:Infinity":164,"s:609:4:609:Infinity":165,"s:611:25:611:Infinity":166,"b:612:3:616:Infinity:undefined:undefined:undefined:undefined":60,"s:612:3:616:Infinity":167,"s:613:4:613:Infinity":168,"s:614:4:614:Infinity":169,"s:615:4:615:Infinity":170,"s:619:21:619:Infinity":171,"s:620:16:620:Infinity":172,"s:621:16:621:Infinity":173,"s:622:17:622:Infinity":174,"s:623:21:623:Infinity":175,"b:623:21:623:30:623:30:623:Infinity":61,"b:625:2:630:Infinity:627:9:630:Infinity":62,"s:625:2:630:Infinity":176,"b:625:6:625:23:625:23:625:35":63,"s:626:3:626:Infinity":177,"s:628:3:628:Infinity":178,"s:629:3:629:Infinity":179,"s:632:2:632:Infinity":180,"s:633:2:633:Infinity":181,"s:636:37:641:Infinity":182,"b:638:16:638:32:638:32:638:Infinity":64,"b:640:31:640:40:640:40:640:Infinity":65,"s:644:20:646:Infinity":183,"b:645:4:645:Infinity:646:4:646:Infinity":66,"s:647:22:649:Infinity":184,"b:648:4:648:Infinity:649:4:649:Infinity":67,"b:648:20:648:47:648:47:648:66:648:66:648:68":68,"b:649:4:649:31:649:31:649:Infinity":69,"s:650:40:654:Infinity":185,"s:657:19:657:Infinity":186,"b:658:1:666:Infinity:undefined:undefined:undefined:undefined":70,"s:658:1:666:Infinity":187,"b:658:5:658:33:658:33:658:55":71,"s:659:8:659:Infinity":188,"b:659:16:659:28:659:28:659:32":72,"b:660:2:665:Infinity:undefined:undefined:undefined:undefined":73,"s:660:2:665:Infinity":189,"s:661:3:663:Infinity":190,"b:662:35:662:43:662:43:662:54":74,"s:664:3:664:Infinity":191,"b:667:1:670:Infinity:undefined:undefined:undefined:undefined":75,"s:667:1:670:Infinity":192,"s:668:2:668:Infinity":193,"s:669:2:669:Infinity":194,"b:672:1:676:Infinity:undefined:undefined:undefined:undefined":76,"s:672:1:676:Infinity":195,"b:672:5:672:30:672:30:672:42":77,"s:673:2:673:Infinity":196,"s:674:2:674:Infinity":197,"s:675:2:675:Infinity":198,"b:678:1:751:Infinity:undefined:undefined:undefined:undefined":78,"s:678:1:751:Infinity":199,"b:678:5:678:33:678:33:678:56":79,"s:679:2:679:Infinity":200,"s:680:13:680:Infinity":201,"f:680:31:680:32":34,"s:680:41:680:75":202,"s:681:25:683:Infinity":203,"b:682:5:682:Infinity:683:5:683:Infinity":80,"b:684:2:686:Infinity:undefined:undefined:undefined:undefined":81,"s:684:2:686:Infinity":204,"b:684:6:684:24:684:24:684:41":82,"s:685:3:685:Infinity":205,"b:689:2:703:Infinity:undefined:undefined:undefined:undefined":83,"s:689:2:703:Infinity":206,"s:690:9:693:Infinity":207,"b:691:6:691:Infinity:692:6:692:Infinity":84,"b:691:6:691:37:691:37:691:Infinity":85,"b:692:6:692:40:692:40:692:Infinity":86,"f:693:9:693:10":35,"s:693:19:693:53":208,"b:694:3:702:Infinity:undefined:undefined:undefined:undefined":87,"s:694:3:702:Infinity":209,"s:695:29:695:Infinity":210,"b:695:29:695:67:695:67:695:Infinity":88,"s:696:21:696:Infinity":211,"b:696:59:696:77:696:77:696:Infinity":89,"b:696:21:696:41:696:41:696:59":90,"s:697:4:701:Infinity":212,"s:704:20:704:Infinity":213,"s:705:2:705:Infinity":214,"s:706:18:706:Infinity":215,"s:707:2:750:Infinity":216,"s:709:4:709:Infinity":217,"s:710:19:710:Infinity":218,"b:711:3:713:Infinity:undefined:undefined:undefined:undefined":91,"s:711:3:713:Infinity":219,"s:712:4:712:Infinity":220,"s:714:3:716:Infinity":221,"b:715:44:715:55:715:55:715:64":92,"s:717:3:717:Infinity":222,"b:718:3:723:Infinity:undefined:undefined:undefined:undefined":93,"s:718:3:723:Infinity":223,"b:718:8:718:16:718:16:718:23":94,"s:719:4:721:Infinity":224,"b:720:44:720:52:720:52:720:61":95,"b:720:74:720:84:720:84:720:90":96,"s:722:4:722:Infinity":225,"b:724:3:729:Infinity:undefined:undefined:undefined:undefined":97,"s:724:3:729:Infinity":226,"b:724:7:724:17:724:17:724:26":98,"s:725:4:727:Infinity":227,"b:726:71:726:79:726:79:726:88":99,"s:728:4:728:Infinity":228,"s:730:3:730:Infinity":229,"b:730:10:730:21:730:21:730:Infinity":100,"s:732:19:732:Infinity":230,"s:733:18:733:Infinity":231,"s:734:22:734:Infinity":232,"b:734:22:734:48:734:48:734:Infinity":101,"s:735:20:735:Infinity":233,"b:739:3:741:Infinity:undefined:undefined:undefined:undefined":102,"s:739:3:741:Infinity":234,"s:740:4:740:Infinity":235,"b:742:3:748:Infinity:746:10:748:Infinity":103,"s:742:3:748:Infinity":236,"s:743:4:745:Infinity":237,"s:747:4:747:Infinity":238,"s:749:3:749:Infinity":239,"s:753:1:753:Infinity":240,"f:756:15:756:Infinity":36,"b:760:23:760:Infinity":104,"s:763:25:768:Infinity":241,"b:764:8:764:24:764:24:764:Infinity":105,"b:765:8:765:24:765:24:765:Infinity":106,"b:766:6:766:20:766:20:766:Infinity":107,"s:770:19:776:Infinity":242,"f:773:17:773:23":37,"s:773:23:773:Infinity":243,"b:777:1:777:Infinity:undefined:undefined:undefined:undefined":108,"s:777:1:777:Infinity":244,"s:777:17:777:Infinity":245,"s:779:19:779:Infinity":246,"s:780:17:780:Infinity":247,"b:781:1:788:Infinity:undefined:undefined:undefined:undefined":109,"s:781:1:788:Infinity":248,"b:781:5:781:19:781:19:781:29":110,"b:782:1:786:Infinity:undefined:undefined:undefined:undefined":111,"s:782:1:786:Infinity":249,"s:783:2:786:Infinity":250,"s:787:2:787:Infinity":251,"s:790:1:792:Infinity":252,"s:794:1:809:Infinity":253,"s:795:2:799:Infinity":254,"b:800:2:806:Infinity:undefined:undefined:undefined:undefined":112,"s:800:2:806:Infinity":255,"s:801:3:805:Infinity":256,"b:803:44:803:59:803:59:803:67":113,"s:808:2:808:Infinity":257,"b:808:26:808:37:808:37:808:48":114,"f:812:9:812:22":38,"b:814:1:818:Infinity:undefined:undefined:undefined:undefined":115,"s:814:1:818:Infinity":258,"s:815:2:817:Infinity":259,"s:819:1:821:Infinity":260,"f:824:15:824:Infinity":39,"b:827:23:827:Infinity":116,"b:830:1:833:Infinity:undefined:undefined:undefined:undefined":117,"s:830:1:833:Infinity":261,"s:831:2:831:Infinity":262,"s:832:2:832:Infinity":263,"s:834:1:850:Infinity":264,"s:835:20:835:Infinity":265,"s:836:2:843:Infinity":266,"s:844:2:844:Infinity":267,"b:846:2:849:Infinity:undefined:undefined:undefined:undefined":118,"s:846:2:849:Infinity":268,"s:847:3:847:Infinity":269,"s:848:3:848:Infinity":270,"f:853:15:853:Infinity":40,"b:856:23:856:Infinity":119,"s:859:13:859:Infinity":271,"s:860:16:860:Infinity":272,"s:861:7:861:Infinity":273,"s:862:7:862:Infinity":274,"s:864:1:901:Infinity":275,"s:865:18:869:Infinity":276,"s:871:2:875:Infinity":277,"s:876:2:876:Infinity":278,"s:878:17:878:Infinity":279,"s:885:27:885:Infinity":280,"s:887:3:889:Infinity":281,"b:888:6:888:Infinity:889:6:889:Infinity":120,"b:889:6:889:25:889:25:889:Infinity":121,"s:890:15:890:Infinity":282,"s:891:2:893:Infinity":283,"b:892:33:892:53:892:53:892:55":122,"b:892:67:892:89:892:89:892:91":123,"b:894:2:894:Infinity:undefined:undefined:undefined:undefined":124,"s:894:2:894:Infinity":284,"s:894:12:894:Infinity":285,"s:896:23:896:Infinity":286,"b:897:2:899:Infinity:undefined:undefined:undefined:undefined":125,"s:897:2:899:Infinity":287,"s:898:3:898:Infinity":288,"s:900:2:900:Infinity":289,"s:904:32:904:Infinity":290,"s:905:32:905:Infinity":291,"f:907:15:907:Infinity":41,"b:912:23:912:Infinity":126,"s:915:18:915:Infinity":292,"s:916:1:932:Infinity":293,"s:917:12:917:Infinity":294,"s:918:17:918:Infinity":295,"b:918:17:918:29:918:29:918:Infinity":127,"b:919:2:922:Infinity:undefined:undefined:undefined:undefined":128,"s:919:2:922:Infinity":296,"s:920:3:920:Infinity":297,"s:921:3:921:Infinity":298,"b:923:2:930:Infinity:undefined:undefined:undefined:undefined":129,"s:923:2:930:Infinity":299,"s:924:3:928:Infinity":300,"b:926:19:926:45:926:45:926:Infinity":130,"b:927:25:927:49:927:49:927:51":131,"s:929:3:929:Infinity":301,"s:931:2:931:Infinity":302,"s:933:1:935:Infinity":303,"f:938:15:938:Infinity":42,"b:940:8:940:Infinity":132,"b:943:23:943:Infinity":133,"s:945:7:945:Infinity":304,"s:947:13:947:Infinity":305,"s:948:7:948:Infinity":306,"s:951:1:951:Infinity":307,"s:952:1:955:Infinity":308,"f:952:9:952:10":43,"s:953:2:953:Infinity":309,"s:954:2:954:Infinity":310,"s:957:1:999:Infinity":311,"f:957:26:957:33":44,"s:958:41:958:Infinity":312,"b:958:41:958:53:958:53:958:Infinity":134,"s:959:2:963:Infinity":313,"b:960:16:960:24:960:24:960:33":135,"b:960:40:960:46:960:46:960:55":136,"b:961:4:961:18:961:18:961:Infinity":137,"b:964:2:964:Infinity:undefined:undefined:undefined:undefined":138,"s:964:2:964:Infinity":314,"s:964:15:964:Infinity":315,"b:964:47:964:55:964:55:964:57":139,"s:966:17:966:Infinity":316,"s:967:18:967:Infinity":317,"b:968:2:980:Infinity:undefined:undefined:undefined:undefined":140,"s:968:2:980:Infinity":318,"s:969:3:979:Infinity":319,"f:977:19:977:25":45,"s:977:25:977:Infinity":320,"b:982:2:995:Infinity:undefined:undefined:undefined:undefined":141,"s:982:2:995:Infinity":321,"s:983:3:994:Infinity":322,"s:984:4:988:Infinity":323,"b:989:4:991:Infinity:undefined:undefined:undefined:undefined":142,"s:989:4:991:Infinity":324,"s:990:5:990:Infinity":325,"s:993:4:993:Infinity":326,"b:993:28:993:36:993:36:993:47":143,"s:998:2:998:Infinity":327,"s:1001:1:1004:Infinity":328,"f:1001:9:1001:10":46,"b:1002:2:1002:Infinity:undefined:undefined:undefined:undefined":144,"s:1002:2:1002:Infinity":329,"s:1002:15:1002:Infinity":330,"s:1003:2:1003:Infinity":331,"s:1006:1:1029:Infinity":332,"f:1006:26:1006:27":47,"s:1007:17:1007:Infinity":333,"s:1009:22:1015:Infinity":334,"f:1009:22:1009:28":48,"s:1010:3:1010:Infinity":335,"s:1011:3:1013:Infinity":336,"s:1014:3:1014:Infinity":337,"s:1017:18:1020:Infinity":338,"f:1017:18:1017:19":49,"s:1018:3:1018:Infinity":339,"s:1019:3:1019:Infinity":340,"s:1022:18:1025:Infinity":341,"f:1022:18:1022:24":50,"s:1023:3:1023:Infinity":342,"s:1024:3:1024:Infinity":343,"s:1027:2:1027:Infinity":344,"s:1028:2:1028:Infinity":345,"f:1032:9:1032:23":51,"s:1034:18:1034:Infinity":346,"f:1034:30:1034:36":52,"s:1035:1:1035:Infinity":347,"s:1036:1:1038:Infinity":348,"f:1036:26:1036:32":53,"f:1041:15:1041:34":54,"b:1041:57:1041:66":145,"s:1043:20:1043:Infinity":349,"s:1044:16:1044:Infinity":350,"b:1044:26:1044:75:1044:75:1044:Infinity":146,"s:1046:2:1048:Infinity":351,"b:1047:6:1047:Infinity:1048:5:1048:Infinity":147,"b:1046:2:1046:37:1046:37:1046:Infinity":148,"s:1050:2:1050:Infinity":352,"b:1050:39:1050:65:1050:65:1050:Infinity":149,"s:1051:13:1053:Infinity":353,"b:1052:5:1052:Infinity:1053:4:1053:Infinity":150,"b:1054:1:1054:Infinity:undefined:undefined:undefined:undefined":151,"s:1054:1:1054:Infinity":354,"b:1054:5:1054:12:1054:12:1054:28":152,"s:1054:28:1054:Infinity":355,"b:1055:1:1055:Infinity:undefined:undefined:undefined:undefined":153,"s:1055:1:1055:Infinity":356,"s:1055:21:1055:Infinity":357,"s:1056:1:1056:Infinity":358,"f:1059:15:1059:Infinity":55,"b:1060:24:1060:Infinity":154,"b:1061:30:1061:Infinity":155,"b:1062:23:1062:Infinity":156,"s:1065:15:1068:Infinity":359,"f:1066:2:1066:8":56,"s:1066:8:1066:Infinity":360,"f:1067:2:1067:8":57,"s:1067:8:1067:Infinity":361,"b:1069:1:1069:Infinity:undefined:undefined:undefined:undefined":157,"s:1069:1:1069:Infinity":362,"s:1069:12:1069:Infinity":363,"s:1070:17:1073:Infinity":364,"b:1074:1:1077:Infinity:undefined:undefined:undefined:undefined":158,"s:1074:1:1077:Infinity":365,"s:1075:2:1075:Infinity":366,"s:1076:2:1076:Infinity":367,"s:1078:1:1078:Infinity":368,"s:1079:1:1079:Infinity":369,"f:1082:15:1082:Infinity":58,"b:1083:24:1083:Infinity":159,"b:1084:30:1084:Infinity":160,"b:1085:23:1085:Infinity":161,"s:1088:23:1091:Infinity":370,"f:1089:2:1089:8":59,"s:1089:8:1089:Infinity":371,"f:1090:2:1090:8":60,"s:1090:8:1090:Infinity":372,"b:1092:1:1092:Infinity:undefined:undefined:undefined:undefined":162,"s:1092:1:1092:Infinity":373,"s:1092:20:1092:Infinity":374,"s:1094:17:1097:Infinity":375,"b:1098:1:1101:Infinity:undefined:undefined:undefined:undefined":163,"s:1098:1:1101:Infinity":376,"s:1099:2:1099:Infinity":377,"s:1100:2:1100:Infinity":378,"s:1102:1:1102:Infinity":379,"s:1103:1:1103:Infinity":380,"f:1106:15:1106:Infinity":61,"b:1108:24:1108:Infinity":164,"b:1109:23:1109:Infinity":165,"b:1110:30:1110:Infinity":166,"s:1113:1:1194:Infinity":381,"s:1114:8:1116:Infinity":382,"s:1117:17:1119:Infinity":383,"b:1118:6:1118:Infinity:1119:5:1119:Infinity":167,"b:1120:2:1141:Infinity:undefined:undefined:undefined:undefined":168,"s:1120:2:1141:Infinity":384,"b:1120:6:1120:17:1120:17:1120:51":169,"s:1121:3:1123:Infinity":385,"s:1124:3:1128:Infinity":386,"s:1129:3:1133:Infinity":387,"s:1134:19:1137:Infinity":388,"b:1138:3:1138:Infinity:undefined:undefined:undefined:undefined":170,"s:1138:3:1138:Infinity":389,"s:1138:17:1138:Infinity":390,"s:1139:3:1139:Infinity":391,"s:1140:3:1140:Infinity":392,"s:1143:2:1143:Infinity":393,"s:1144:21:1151:Infinity":394,"b:1152:2:1152:Infinity:undefined:undefined:undefined:undefined":171,"s:1152:2:1152:Infinity":395,"s:1152:21:1152:Infinity":396,"s:1154:20:1154:Infinity":397,"s:1155:17:1155:Infinity":398,"b:1155:56:1155:75:1155:75:1155:Infinity":172,"s:1156:17:1156:Infinity":399,"b:1156:56:1156:75:1156:75:1156:Infinity":173,"b:1157:2:1169:Infinity:undefined:undefined:undefined:undefined":174,"s:1157:2:1169:Infinity":400,"s:1158:3:1158:Infinity":401,"s:1159:21:1159:Infinity":402,"b:1160:3:1168:Infinity:1162:10:1168:Infinity":175,"s:1160:3:1168:Infinity":403,"s:1161:4:1161:Infinity":404,"s:1163:4:1167:Infinity":405,"b:1170:2:1179:Infinity:undefined:undefined:undefined:undefined":176,"s:1170:2:1179:Infinity":406,"b:1171:3:1171:Infinity:1172:3:1172:Infinity":177,"s:1174:3:1178:Infinity":407,"s:1180:2:1182:Infinity":408,"s:1183:2:1187:Infinity":409,"b:1188:2:1192:Infinity:undefined:undefined:undefined:undefined":178,"s:1188:2:1192:Infinity":410,"b:1189:3:1189:Infinity:undefined:undefined:undefined:undefined":179,"s:1189:3:1189:Infinity":411,"s:1189:22:1189:Infinity":412,"b:1190:3:1190:Infinity:undefined:undefined:undefined:undefined":180,"s:1190:3:1190:Infinity":413,"s:1190:22:1190:Infinity":414,"s:1191:3:1191:Infinity":415,"s:1193:2:1193:Infinity":416,"f:1197:15:1197:Infinity":62,"b:1201:23:1201:Infinity":181,"b:1204:1:1207:Infinity:undefined:undefined:undefined:undefined":182,"s:1204:1:1207:Infinity":417,"s:1205:2:1205:Infinity":418,"s:1206:2:1206:Infinity":419,"s:1208:1:1243:Infinity":420,"s:1211:23:1211:Infinity":421,"s:1212:18:1215:Infinity":422,"b:1216:2:1218:Infinity:undefined:undefined:undefined:undefined":183,"s:1216:2:1218:Infinity":423,"s:1217:3:1217:Infinity":424,"s:1219:16:1225:Infinity":425,"f:1220:3:1220:4":63,"s:1221:5:1224:Infinity":426,"b:1221:5:1221:Infinity:1222:5:1222:Infinity:1223:5:1223:Infinity:1224:5:1224:Infinity":184,"b:1226:2:1230:Infinity:undefined:undefined:undefined:undefined":185,"s:1226:2:1230:Infinity":427,"b:1226:6:1226:16:1226:16:1226:47":186,"s:1227:3:1229:Infinity":428,"s:1231:2:1231:Infinity":429,"s:1233:2:1233:Infinity":430,"b:1234:2:1236:Infinity:undefined:undefined:undefined:undefined":187,"s:1234:2:1236:Infinity":431,"s:1235:3:1235:Infinity":432,"s:1237:2:1241:Infinity":433,"s:1242:2:1242:Infinity":434,"f:1246:15:1246:Infinity":64,"s:1250:13:1250:Infinity":435,"s:1251:15:1251:Infinity":436,"s:1252:1:1267:Infinity":437,"s:1253:15:1256:Infinity":438,"b:1257:2:1257:Infinity:undefined:undefined:undefined:undefined":188,"s:1257:2:1257:Infinity":439,"b:1257:6:1257:15:1257:15:1257:34":189,"s:1257:34:1257:Infinity":440,"b:1258:2:1262:Infinity:undefined:undefined:undefined:undefined":190,"s:1258:2:1262:Infinity":441,"b:1258:6:1258:25:1258:20:1258:38":191,"s:1259:3:1261:Infinity":442,"s:1263:2:1263:Infinity":443,"b:1263:9:1263:25:1263:25:1263:Infinity":192,"b:1265:2:1265:Infinity:undefined:undefined:undefined:undefined":193,"s:1265:2:1265:Infinity":444,"s:1265:19:1265:Infinity":445,"s:1266:2:1266:Infinity":446,"f:1270:15:1270:Infinity":65,"s:1275:1:1289:Infinity":447,"s:1276:14:1276:Infinity":448,"s:1277:16:1277:Infinity":449,"s:1278:15:1281:Infinity":450,"s:1283:4:1284:Infinity":451,"b:1283:4:1284:29:1284:29:1284:Infinity":194,"s:1285:2:1285:Infinity":452,"b:1287:2:1287:Infinity:undefined:undefined:undefined:undefined":195,"s:1287:2:1287:Infinity":453,"s:1287:19:1287:Infinity":454,"s:1288:2:1288:Infinity":455,"f:1292:15:1292:Infinity":66,"s:1297:14:1297:Infinity":456,"b:1298:1:1298:Infinity:undefined:undefined:undefined:undefined":196,"s:1298:1:1298:Infinity":457,"s:1298:12:1298:Infinity":458,"s:1299:1:1315:Infinity":459,"s:1300:2:1303:Infinity":460,"s:1304:18:1304:Infinity":461,"s:1305:17:1305:Infinity":462,"s:1306:2:1310:Infinity":463,"b:1308:42:1308:52:1308:52:1308:55":197,"s:1311:2:1311:Infinity":464,"b:1313:2:1313:Infinity:undefined:undefined:undefined:undefined":198,"s:1313:2:1313:Infinity":465,"s:1313:19:1313:Infinity":466,"s:1314:2:1314:Infinity":467,"f:1318:15:1318:Infinity":67,"b:1322:26:1322:Infinity":199,"b:1323:23:1323:Infinity":200,"s:1326:19:1326:Infinity":468,"s:1327:21:1327:Infinity":469,"s:1330:1:1362:Infinity":470,"s:1331:2:1341:Infinity":471,"s:1343:18:1345:Infinity":472,"s:1347:3:1347:Infinity":473,"b:1347:3:1347:37:1347:37:1347:Infinity":201,"b:1348:2:1351:Infinity:undefined:undefined:undefined:undefined":202,"s:1348:2:1351:Infinity":474,"s:1349:3:1349:Infinity":475,"s:1350:3:1350:Infinity":476,"b:1352:2:1355:Infinity:undefined:undefined:undefined:undefined":203,"s:1352:2:1355:Infinity":477,"s:1353:3:1355:Infinity":478,"b:1357:2:1361:Infinity:undefined:undefined:undefined:undefined":204,"s:1357:2:1361:Infinity":479,"s:1358:3:1361:Infinity":480,"s:1365:1:1393:Infinity":481,"s:1366:2:1373:Infinity":482,"s:1374:18:1376:Infinity":483,"s:1378:3:1378:Infinity":484,"b:1378:3:1378:37:1378:37:1378:Infinity":205,"b:1379:2:1382:Infinity:undefined:undefined:undefined:undefined":206,"s:1379:2:1382:Infinity":485,"s:1380:3:1380:Infinity":486,"s:1381:3:1381:Infinity":487,"b:1383:2:1386:Infinity:undefined:undefined:undefined:undefined":207,"s:1383:2:1386:Infinity":488,"s:1384:3:1386:Infinity":489,"b:1388:2:1392:Infinity:undefined:undefined:undefined:undefined":208,"s:1388:2:1392:Infinity":490,"s:1389:3:1392:Infinity":491,"s:1396:1:1420:Infinity":492,"b:1397:2:1413:Infinity:undefined:undefined:undefined:undefined":209,"s:1397:2:1413:Infinity":493,"s:1398:3:1401:Infinity":494,"s:1402:19:1404:Infinity":495,"s:1406:4:1406:Infinity":496,"b:1406:4:1406:38:1406:38:1406:Infinity":210,"s:1407:3:1411:Infinity":497,"b:1409:39:1409:52:1409:52:1409:55":211,"s:1412:3:1412:Infinity":498,"b:1415:2:1419:Infinity:undefined:undefined:undefined:undefined":212,"s:1415:2:1419:Infinity":499,"s:1416:3:1419:Infinity":500,"s:1423:1:1436:Infinity":501,"s:1424:19:1424:Infinity":502,"b:1425:2:1433:Infinity:undefined:undefined:undefined:undefined":213,"s:1425:2:1433:Infinity":503,"s:1426:30:1426:Infinity":504,"s:1427:3:1430:Infinity":505,"s:1431:3:1431:Infinity":506,"s:1432:3:1432:Infinity":507,"b:1435:2:1435:Infinity:undefined:undefined:undefined:undefined":214,"s:1435:2:1435:Infinity":508,"s:1435:19:1435:Infinity":509,"s:1439:33:1443:Infinity":510,"b:1444:1:1444:Infinity:undefined:undefined:undefined:undefined":215,"s:1444:1:1444:Infinity":511,"s:1444:30:1444:Infinity":512,"s:1446:1:1446:Infinity":513,"s:1447:1:1451:Infinity":514,"s:1452:1:1456:Infinity":515,"s:1457:1:1457:Infinity":516,"f:1468:9:1468:27":68,"s:1469:11:1469:Infinity":517,"s:1470:16:1470:Infinity":518,"b:1471:1:1471:Infinity:undefined:undefined:undefined:undefined":216,"s:1471:1:1471:Infinity":519,"s:1471:21:1471:Infinity":520,"b:1472:1:1472:Infinity:undefined:undefined:undefined:undefined":217,"s:1472:1:1472:Infinity":521,"s:1472:23:1472:Infinity":522,"b:1473:1:1473:Infinity:undefined:undefined:undefined:undefined":218,"s:1473:1:1473:Infinity":523,"s:1473:16:1473:Infinity":524,"b:1474:1:1474:Infinity:undefined:undefined:undefined:undefined":219,"s:1474:1:1474:Infinity":525,"s:1474:17:1474:Infinity":526,"s:1475:1:1475:Infinity":527,"b:1475:24:1475:45:1475:45:1475:Infinity":220,"f:1478:9:1478:Infinity":69,"b:1481:23:1481:Infinity":221,"s:1483:16:1483:Infinity":528,"b:1483:30:1483:54:1483:54:1483:Infinity":222,"s:1484:1:1486:Infinity":529,"s:1487:15:1487:Infinity":530,"b:1488:1:1490:Infinity:undefined:undefined:undefined:undefined":223,"s:1488:1:1490:Infinity":531,"s:1489:2:1489:Infinity":532,"f:1493:15:1493:Infinity":70,"b:1497:17:1497:Infinity":224,"s:1500:13:1500:Infinity":533,"s:1501:16:1501:Infinity":534,"b:1501:16:1501:34:1501:34:1501:Infinity":225,"s:1502:7:1502:Infinity":535,"s:1504:13:1504:Infinity":536,"s:1505:14:1505:Infinity":537,"s:1507:1:1509:Infinity":538,"s:1511:21:1516:Infinity":539,"f:1511:21:1511:22":71,"b:1512:2:1512:Infinity:undefined:undefined:undefined:undefined":226,"s:1512:2:1512:Infinity":540,"s:1512:13:1512:Infinity":541,"b:1513:2:1515:Infinity:undefined:undefined:undefined:undefined":227,"s:1513:2:1515:Infinity":542,"s:1514:3:1514:Infinity":543,"s:1518:19:1518:Infinity":544,"s:1519:1:1523:Infinity":545,"f:1519:24:1519:30":72,"b:1520:2:1520:Infinity:undefined:undefined:undefined:undefined":228,"s:1520:2:1520:Infinity":546,"s:1520:20:1520:Infinity":547,"s:1521:2:1521:Infinity":548,"s:1522:2:1522:Infinity":549,"s:1525:18:1525:Infinity":550,"s:1526:1:1557:Infinity":551,"b:1526:8:1526:23:1526:23:1526:51":229,"s:1527:2:1553:Infinity":552,"s:1528:20:1532:Infinity":553,"s:1534:27:1540:Infinity":554,"f:1535:12:1535:13":73,"s:1535:36:1535:61":555,"f:1536:10:1536:11":74,"s:1537:16:1537:Infinity":556,"b:1537:16:1537:44:1537:44:1537:Infinity":230,"s:1538:16:1538:Infinity":557,"b:1538:16:1538:44:1538:44:1538:Infinity":231,"s:1539:5:1539:Infinity":558,"s:1542:3:1550:Infinity":559,"b:1543:4:1543:Infinity:undefined:undefined:undefined:undefined":232,"s:1543:4:1543:Infinity":560,"s:1543:25:1543:Infinity":561,"s:1544:4:1544:Infinity":562,"s:1545:17:1545:Infinity":563,"b:1545:17:1545:49:1545:49:1545:Infinity":233,"s:1546:20:1546:Infinity":564,"b:1546:20:1546:30:1546:30:1546:Infinity":234,"s:1547:4:1547:Infinity":565,"b:1547:54:1547:64:1547:64:1547:66":235,"s:1548:4:1548:Infinity":566,"s:1549:4:1549:Infinity":567,"s:1552:3:1552:Infinity":568,"s:1555:2:1555:Infinity":569,"s:1556:2:1556:Infinity":570,"f:1560:15:1560:Infinity":75,"b:1562:19:1562:Infinity":236,"b:1563:13:1563:Infinity":237,"b:1564:44:1564:Infinity":238,"s:1567:18:1598:Infinity":571,"f:1569:13:1569:20":76,"s:1570:14:1572:Infinity":572,"b:1571:6:1571:Infinity:1571:42:1572:Infinity":239,"s:1573:3:1573:Infinity":573,"s:1575:21:1585:Infinity":574,"b:1586:3:1586:Infinity:undefined:undefined:undefined:undefined":240,"s:1586:3:1586:Infinity":575,"s:1586:19:1586:Infinity":576,"s:1587:3:1596:Infinity":577,"s:1588:4:1588:Infinity":578,"b:1589:4:1591:Infinity:undefined:undefined:undefined:undefined":241,"s:1589:4:1591:Infinity":579,"s:1590:5:1590:Infinity":580,"s:1593:4:1595:Infinity":581,"s:1600:1:1604:Infinity":582,"s:1605:1:1610:Infinity":583,"f:1605:22:1605:28":77,"s:1606:2:1609:Infinity":584,"f:1606:32:1606:38":78,"s:1607:3:1607:Infinity":585,"s:1608:3:1608:Infinity":586,"b:1612:1:1614:Infinity:undefined:undefined:undefined:undefined":242,"s:1612:1:1614:Infinity":587,"s:1613:2:1613:Infinity":588,"f:1617:15:1617:Infinity":79,"b:1626:35:1626:Infinity":243,"b:1627:23:1627:Infinity":244,"s:1629:1:1629:Infinity":589,"s:1630:21:1630:Infinity":590,"s:1631:21:1631:Infinity":591,"b:1633:1:1635:Infinity:undefined:undefined:undefined:undefined":245,"s:1633:1:1635:Infinity":592,"b:1633:5:1633:34:1633:34:1633:51":246,"s:1634:2:1634:Infinity":593,"b:1636:1:1638:Infinity:undefined:undefined:undefined:undefined":247,"s:1636:1:1638:Infinity":594,"b:1636:5:1636:34:1636:34:1636:52":248,"s:1637:2:1637:Infinity":595,"b:1640:1:1646:Infinity:undefined:undefined:undefined:undefined":249,"s:1640:1:1646:Infinity":596,"b:1641:2:1643:Infinity:undefined:undefined:undefined:undefined":250,"s:1641:2:1643:Infinity":597,"s:1642:3:1642:Infinity":598,"s:1644:2:1644:Infinity":599,"s:1645:2:1645:Infinity":600,"s:1648:16:1648:Infinity":601,"b:1649:1:1649:Infinity:undefined:undefined:undefined:undefined":251,"s:1649:1:1649:Infinity":602,"s:1649:14:1649:Infinity":603,"b:1650:1:1650:Infinity:undefined:undefined:undefined:undefined":252,"s:1650:1:1650:Infinity":604,"s:1650:24:1650:Infinity":605,"s:1651:1:1656:Infinity":606,"f:1659:15:1659:Infinity":80,"b:1662:35:1662:Infinity":253,"b:1663:23:1663:Infinity":254,"s:1665:15:1665:Infinity":607,"s:1666:25:1666:Infinity":608,"b:1667:1:1669:Infinity:undefined:undefined:undefined:undefined":255,"s:1667:1:1669:Infinity":609,"b:1667:5:1667:28:1667:28:1667:42:1667:42:1667:55":256,"s:1668:2:1668:Infinity":610,"b:1670:1:1672:Infinity:undefined:undefined:undefined:undefined":257,"s:1670:1:1672:Infinity":611,"b:1670:5:1670:38:1670:38:1670:60":258,"s:1671:2:1671:Infinity":612,"s:1674:18:1674:Infinity":613,"b:1675:1:1678:Infinity:undefined:undefined:undefined:undefined":259,"s:1675:1:1678:Infinity":614,"s:1676:2:1676:Infinity":615,"s:1677:2:1677:Infinity":616,"b:1679:1:1682:Infinity:undefined:undefined:undefined:undefined":260,"s:1679:1:1682:Infinity":617,"s:1680:2:1680:Infinity":618,"s:1681:2:1681:Infinity":619,"s:1683:1:1685:Infinity":620,"s:1684:2:1684:Infinity":621,"f:1688:15:1688:Infinity":81,"b:1696:35:1696:Infinity":261,"b:1697:23:1697:Infinity":262,"s:1699:14:1699:Infinity":622,"b:1700:1:1702:Infinity:undefined:undefined:undefined:undefined":263,"s:1700:1:1702:Infinity":623,"b:1700:5:1700:27:1700:27:1700:40:1700:40:1700:55":264,"s:1701:2:1701:Infinity":624,"s:1703:1:1703:Infinity":625,"s:1705:16:1710:Infinity":626,"s:1711:1:1711:Infinity":627,"f:1714:15:1714:Infinity":82,"b:1722:35:1722:Infinity":265,"b:1723:23:1723:Infinity":266,"s:1725:14:1725:Infinity":628,"b:1726:1:1728:Infinity:undefined:undefined:undefined:undefined":267,"s:1726:1:1728:Infinity":629,"b:1726:5:1726:27:1726:27:1726:40:1726:40:1726:55":268,"s:1727:2:1727:Infinity":630,"s:1730:1:1730:Infinity":631,"s:1733:13:1733:Infinity":632,"s:1734:1:1734:Infinity":633,"s:1737:1:1737:Infinity":634,"s:1738:14:1738:Infinity":635,"s:1739:19:1739:Infinity":636,"s:1740:1:1740:Infinity":637,"s:1743:16:1748:Infinity":638,"s:1751:16:1751:Infinity":639,"s:1752:19:1756:Infinity":640,"s:1757:1:1757:Infinity":641,"s:1759:1:1761:Infinity":642,"s:1762:1:1762:Infinity":643,"f:1777:9:1777:21":83,"s:1778:14:1778:Infinity":644,"s:1779:34:1779:Infinity":645,"s:1780:1:1784:Infinity":646,"b:1781:2:1781:Infinity:undefined:undefined:undefined:undefined":269,"s:1781:2:1781:Infinity":647,"s:1781:23:1781:Infinity":648,"s:1782:2:1782:Infinity":649,"s:1783:2:1783:Infinity":650,"s:1785:1:1785:Infinity":651,"f:1788:9:1788:24":84,"s:1789:1:1793:Infinity":652,"f:1789:27:1789:28":85,"s:1790:13:1790:Infinity":653,"b:1790:13:1790:41:1790:41:1790:Infinity":270,"s:1791:13:1791:Infinity":654,"b:1791:13:1791:41:1791:41:1791:Infinity":271,"s:1792:2:1792:Infinity":655,"f:1796:9:1796:27":86,"s:1797:12:1797:Infinity":656,"b:1797:12:1797:44:1797:44:1797:Infinity":272,"s:1799:2:1803:Infinity":657,"b:1800:5:1800:Infinity:1801:5:1803:Infinity":273,"b:1802:6:1802:Infinity:1803:6:1803:Infinity":274,"b:1801:5:1801:39:1801:39:1801:Infinity":275,"s:1804:16:1804:Infinity":658,"b:1804:16:1804:28:1804:28:1804:Infinity":276,"s:1806:2:1808:Infinity":659,"b:1807:5:1807:Infinity:1808:5:1808:Infinity":277,"b:1807:46:1807:71:1807:71:1807:73":278,"s:1809:7:1809:Infinity":660,"b:1809:15:1809:25:1809:25:1809:29":279,"s:1811:2:1811:Infinity":661,"b:1811:22:1811:49:1811:49:1811:Infinity":280,"b:1811:49:1811:57:1811:57:1811:Infinity":281,"s:1812:1:1812:Infinity":662,"b:1812:25:1812:35:1812:35:1812:38":282,"b:1812:45:1812:53:1812:53:1812:56":283,"f:1815:15:1815:Infinity":87,"s:1820:13:1820:Infinity":663,"s:1821:16:1821:Infinity":664,"b:1821:16:1821:34:1821:34:1821:Infinity":284,"s:1822:7:1822:Infinity":665,"s:1823:15:1823:Infinity":666,"s:1826:20:1826:Infinity":667,"s:1827:17:1831:Infinity":668,"s:1832:18:1836:Infinity":669,"s:1838:18:1850:Infinity":670,"f:1839:32:1839:33":88,"s:1839:40:1849:4":671,"b:1841:11:1841:23:1841:23:1841:Infinity":285,"b:1842:14:1842:29:1842:29:1842:Infinity":286,"b:1847:14:1847:29:1847:29:1847:Infinity":287,"b:1848:17:1848:35:1848:35:1848:Infinity":288,"s:1852:1:1852:Infinity":672,"s:1855:0:1858:Infinity":673,"s:1860:0:1872:Infinity":674,"f:1864:9:1864:16":89,"s:1865:2:1865:Infinity":675,"s:1866:2:1871:Infinity":676,"s:1867:3:1867:Infinity":677,"s:1869:3:1869:Infinity":678,"s:1870:3:1870:Infinity":679,"s:1874:0:1901:Infinity":680,"f:1893:9:1893:16":90,"s:1894:15:1894:Infinity":681,"s:1895:2:1900:Infinity":682,"s:1896:3:1896:Infinity":683,"s:1898:3:1898:Infinity":684,"s:1899:3:1899:Infinity":685,"s:1903:0:1929:Infinity":686,"f:1915:9:1915:16":91,"s:1916:26:1916:Infinity":687,"s:1917:26:1917:Infinity":688,"b:1919:2:1922:Infinity:undefined:undefined:undefined:undefined":289,"s:1919:2:1922:Infinity":689,"b:1919:6:1919:39:1919:39:1919:61":290,"s:1920:3:1920:Infinity":690,"s:1921:3:1921:Infinity":691,"b:1923:2:1926:Infinity:undefined:undefined:undefined:undefined":291,"s:1923:2:1926:Infinity":692,"b:1923:6:1923:39:1923:39:1923:60":292,"s:1924:3:1924:Infinity":693,"s:1925:3:1925:Infinity":694,"s:1928:2:1928:Infinity":695,"s:1931:0:1946:Infinity":696,"f:1943:9:1943:16":92,"s:1944:2:1944:Infinity":697,"s:1945:2:1945:Infinity":698,"s:1948:0:1970:Infinity":699,"f:1962:9:1962:16":93,"s:1963:15:1963:Infinity":700,"s:1964:2:1969:Infinity":701,"s:1965:3:1965:Infinity":702,"s:1967:3:1967:Infinity":703,"s:1968:3:1968:Infinity":704,"s:1972:0:2000:Infinity":705,"f:1985:9:1985:16":94,"s:1986:2:1986:Infinity":706,"s:1987:26:1987:Infinity":707,"s:1988:26:1988:Infinity":708,"b:1990:2:1993:Infinity:undefined:undefined:undefined:undefined":293,"s:1990:2:1993:Infinity":709,"b:1990:6:1990:39:1990:39:1990:61":294,"s:1991:3:1991:Infinity":710,"s:1992:3:1992:Infinity":711,"b:1994:2:1997:Infinity:undefined:undefined:undefined:undefined":295,"s:1994:2:1997:Infinity":712,"b:1994:6:1994:39:1994:39:1994:60":296,"s:1995:3:1995:Infinity":713,"s:1996:3:1996:Infinity":714,"s:1999:2:1999:Infinity":715,"s:2002:0:2042:Infinity":716,"f:2025:9:2025:16":95,"s:2026:2:2026:Infinity":717,"s:2027:2:2027:Infinity":718,"s:2028:15:2028:Infinity":719,"s:2029:2:2041:Infinity":720,"s:2030:18:2030:Infinity":721,"s:2031:3:2036:Infinity":722,"f:2031:24:2031:30":96,"s:2032:4:2035:Infinity":723,"f:2032:17:2032:23":97,"s:2033:5:2033:Infinity":724,"s:2034:5:2034:Infinity":725,"s:2037:3:2037:Infinity":726,"s:2039:3:2039:Infinity":727,"s:2040:3:2040:Infinity":728,"s:2044:0:2071:Infinity":729,"f:2054:9:2054:16":98,"s:2055:2:2055:Infinity":730,"s:2056:2:2056:Infinity":731,"s:2057:15:2057:Infinity":732,"s:2058:2:2070:Infinity":733,"s:2059:22:2059:Infinity":734,"s:2060:3:2065:Infinity":735,"f:2060:24:2060:30":99,"s:2061:4:2064:Infinity":736,"f:2061:17:2061:23":100,"s:2062:5:2062:Infinity":737,"s:2063:5:2063:Infinity":738,"s:2066:3:2066:Infinity":739,"s:2068:3:2068:Infinity":740,"s:2069:3:2069:Infinity":741,"s:2126:1:2126:Infinity":742,"b:2126:1:2126:20:2126:15:2126:Infinity":297,"b:2128:0:2130:Infinity:undefined:undefined:undefined:undefined":298,"s:2128:0:2130:Infinity":743,"s:2129:1:2129:Infinity":744}}} -,"/Users/steipete/Projects/warelay/src/provider-web.ts": {"path":"/Users/steipete/Projects/warelay/src/provider-web.ts","statementMap":{"0":{"start":{"line":17,"column":24},"end":{"line":17,"column":null}},"1":{"start":{"line":20,"column":1},"end":{"line":20,"column":null}},"2":{"start":{"line":21,"column":30},"end":{"line":21,"column":null}},"3":{"start":{"line":22,"column":21},"end":{"line":22,"column":null}},"4":{"start":{"line":23,"column":7},"end":{"line":23,"column":null}},"5":{"start":{"line":24,"column":7},"end":{"line":35,"column":null}},"6":{"start":{"line":37,"column":1},"end":{"line":37,"column":null}},"7":{"start":{"line":38,"column":1},"end":{"line":58,"column":null}},"8":{"start":{"line":41,"column":46},"end":{"line":41,"column":null}},"9":{"start":{"line":42,"column":3},"end":{"line":45,"column":null}},"10":{"start":{"line":43,"column":4},"end":{"line":43,"column":null}},"11":{"start":{"line":44,"column":4},"end":{"line":44,"column":null}},"12":{"start":{"line":46,"column":3},"end":{"line":53,"column":null}},"13":{"start":{"line":47,"column":19},"end":{"line":47,"column":null}},"14":{"start":{"line":48,"column":4},"end":{"line":52,"column":null}},"15":{"start":{"line":49,"column":5},"end":{"line":51,"column":null}},"16":{"start":{"line":54,"column":3},"end":{"line":56,"column":null}},"17":{"start":{"line":55,"column":4},"end":{"line":55,"column":null}},"18":{"start":{"line":60,"column":1},"end":{"line":60,"column":null}},"19":{"start":{"line":64,"column":1},"end":{"line":83,"column":null}},"20":{"start":{"line":68,"column":20},"end":{"line":68,"column":null}},"21":{"start":{"line":70,"column":18},"end":{"line":80,"column":null}},"22":{"start":{"line":71,"column":19},"end":{"line":71,"column":null}},"23":{"start":{"line":72,"column":3},"end":{"line":75,"column":null}},"24":{"start":{"line":73,"column":4},"end":{"line":73,"column":null}},"25":{"start":{"line":74,"column":4},"end":{"line":74,"column":null}},"26":{"start":{"line":76,"column":3},"end":{"line":79,"column":null}},"27":{"start":{"line":77,"column":4},"end":{"line":77,"column":null}},"28":{"start":{"line":78,"column":4},"end":{"line":78,"column":null}},"29":{"start":{"line":82,"column":2},"end":{"line":82,"column":null}},"30":{"start":{"line":91,"column":14},"end":{"line":91,"column":null}},"31":{"start":{"line":92,"column":1},"end":{"line":109,"column":null}},"32":{"start":{"line":93,"column":2},"end":{"line":93,"column":null}},"33":{"start":{"line":94,"column":8},"end":{"line":94,"column":null}},"34":{"start":{"line":95,"column":2},"end":{"line":99,"column":null}},"35":{"start":{"line":96,"column":3},"end":{"line":96,"column":null}},"36":{"start":{"line":98,"column":3},"end":{"line":98,"column":null}},"37":{"start":{"line":100,"column":17},"end":{"line":100,"column":null}},"38":{"start":{"line":101,"column":20},"end":{"line":101,"column":null}},"39":{"start":{"line":102,"column":2},"end":{"line":102,"column":null}},"40":{"start":{"line":104,"column":2},"end":{"line":108,"column":null}},"41":{"start":{"line":105,"column":3},"end":{"line":105,"column":null}},"42":{"start":{"line":107,"column":3},"end":{"line":107,"column":null}},"43":{"start":{"line":116,"column":14},"end":{"line":116,"column":null}},"44":{"start":{"line":117,"column":1},"end":{"line":117,"column":null}},"45":{"start":{"line":118,"column":1},"end":{"line":158,"column":null}},"46":{"start":{"line":119,"column":2},"end":{"line":119,"column":null}},"47":{"start":{"line":120,"column":2},"end":{"line":120,"column":null}},"48":{"start":{"line":123,"column":4},"end":{"line":125,"column":null}},"49":{"start":{"line":126,"column":2},"end":{"line":133,"column":null}},"50":{"start":{"line":127,"column":3},"end":{"line":131,"column":null}},"51":{"start":{"line":132,"column":3},"end":{"line":132,"column":null}},"52":{"start":{"line":134,"column":2},"end":{"line":142,"column":null}},"53":{"start":{"line":135,"column":3},"end":{"line":135,"column":null}},"54":{"start":{"line":136,"column":3},"end":{"line":140,"column":null}},"55":{"start":{"line":141,"column":3},"end":{"line":141,"column":null}},"56":{"start":{"line":143,"column":20},"end":{"line":143,"column":null}},"57":{"start":{"line":144,"column":2},"end":{"line":148,"column":null}},"58":{"start":{"line":149,"column":2},"end":{"line":149,"column":null}},"59":{"start":{"line":151,"column":2},"end":{"line":157,"column":null}},"60":{"start":{"line":152,"column":3},"end":{"line":156,"column":null}},"61":{"start":{"line":153,"column":4},"end":{"line":153,"column":null}},"62":{"start":{"line":178,"column":14},"end":{"line":178,"column":null}},"63":{"start":{"line":179,"column":1},"end":{"line":179,"column":null}},"64":{"start":{"line":180,"column":17},"end":{"line":180,"column":null}},"65":{"start":{"line":181,"column":18},"end":{"line":181,"column":null}},"66":{"start":{"line":182,"column":14},"end":{"line":182,"column":null}},"67":{"start":{"line":184,"column":1},"end":{"line":230,"column":null}},"68":{"start":{"line":185,"column":2},"end":{"line":185,"column":null}},"69":{"start":{"line":185,"column":32},"end":{"line":185,"column":null}},"70":{"start":{"line":186,"column":2},"end":{"line":229,"column":null}},"71":{"start":{"line":187,"column":14},"end":{"line":187,"column":null}},"72":{"start":{"line":189,"column":3},"end":{"line":189,"column":null}},"73":{"start":{"line":189,"column":27},"end":{"line":189,"column":null}},"74":{"start":{"line":190,"column":3},"end":{"line":190,"column":null}},"75":{"start":{"line":190,"column":11},"end":{"line":190,"column":null}},"76":{"start":{"line":191,"column":3},"end":{"line":191,"column":null}},"77":{"start":{"line":191,"column":24},"end":{"line":191,"column":null}},"78":{"start":{"line":192,"column":21},"end":{"line":192,"column":null}},"79":{"start":{"line":193,"column":3},"end":{"line":193,"column":null}},"80":{"start":{"line":193,"column":19},"end":{"line":193,"column":null}},"81":{"start":{"line":195,"column":3},"end":{"line":196,"column":null}},"82":{"start":{"line":196,"column":4},"end":{"line":196,"column":null}},"83":{"start":{"line":197,"column":9},"end":{"line":197,"column":null}},"84":{"start":{"line":198,"column":3},"end":{"line":198,"column":null}},"85":{"start":{"line":198,"column":14},"end":{"line":198,"column":null}},"86":{"start":{"line":199,"column":16},"end":{"line":199,"column":null}},"87":{"start":{"line":200,"column":3},"end":{"line":200,"column":null}},"88":{"start":{"line":200,"column":14},"end":{"line":200,"column":null}},"89":{"start":{"line":201,"column":19},"end":{"line":201,"column":null}},"90":{"start":{"line":202,"column":25},"end":{"line":208,"column":null}},"91":{"start":{"line":203,"column":4},"end":{"line":207,"column":null}},"92":{"start":{"line":204,"column":5},"end":{"line":204,"column":null}},"93":{"start":{"line":206,"column":5},"end":{"line":206,"column":null}},"94":{"start":{"line":209,"column":17},"end":{"line":211,"column":null}},"95":{"start":{"line":210,"column":4},"end":{"line":210,"column":null}},"96":{"start":{"line":212,"column":21},"end":{"line":214,"column":null}},"97":{"start":{"line":215,"column":3},"end":{"line":228,"column":null}},"98":{"start":{"line":216,"column":4},"end":{"line":225,"column":null}},"99":{"start":{"line":227,"column":4},"end":{"line":227,"column":null}},"100":{"start":{"line":232,"column":1},"end":{"line":240,"column":null}},"101":{"start":{"line":234,"column":3},"end":{"line":238,"column":null}},"102":{"start":{"line":235,"column":4},"end":{"line":235,"column":null}},"103":{"start":{"line":237,"column":4},"end":{"line":237,"column":null}},"104":{"start":{"line":244,"column":1},"end":{"line":244,"column":null}},"105":{"start":{"line":244,"column":15},"end":{"line":244,"column":null}},"106":{"start":{"line":245,"column":1},"end":{"line":247,"column":null}},"107":{"start":{"line":246,"column":2},"end":{"line":246,"column":null}},"108":{"start":{"line":248,"column":18},"end":{"line":248,"column":null}},"109":{"start":{"line":249,"column":1},"end":{"line":249,"column":null}},"110":{"start":{"line":249,"column":23},"end":{"line":249,"column":null}},"111":{"start":{"line":250,"column":17},"end":{"line":250,"column":null}},"112":{"start":{"line":251,"column":1},"end":{"line":251,"column":null}},"113":{"start":{"line":251,"column":22},"end":{"line":251,"column":null}},"114":{"start":{"line":252,"column":1},"end":{"line":252,"column":null}},"115":{"start":{"line":256,"column":1},"end":{"line":258,"column":null}},"116":{"start":{"line":263,"column":1},"end":{"line":263,"column":null}},"117":{"start":{"line":263,"column":27},"end":{"line":263,"column":null}},"118":{"start":{"line":264,"column":1},"end":{"line":264,"column":null}},"119":{"start":{"line":264,"column":30},"end":{"line":264,"column":null}},"120":{"start":{"line":265,"column":16},"end":{"line":265,"column":null}},"121":{"start":{"line":266,"column":15},"end":{"line":266,"column":null}},"122":{"start":{"line":267,"column":1},"end":{"line":267,"column":null}},"123":{"start":{"line":267,"column":21},"end":{"line":267,"column":null}},"124":{"start":{"line":268,"column":1},"end":{"line":268,"column":null}}},"fnMap":{"0":{"name":"createWaSocket","decl":{"start":{"line":19,"column":22},"end":{"line":19,"column":37}},"loc":{"start":{"line":19,"column":73},"end":{"line":61,"column":null}},"line":19},"1":{"name":"(anonymous_1)","decl":{"start":{"line":40,"column":2},"end":{"line":40,"column":3}},"loc":{"start":{"line":40,"column":58},"end":{"line":57,"column":null}},"line":40},"2":{"name":"waitForWaConnection","decl":{"start":{"line":63,"column":22},"end":{"line":63,"column":42}},"loc":{"start":{"line":63,"column":81},"end":{"line":84,"column":null}},"line":63},"3":{"name":"(anonymous_3)","decl":{"start":{"line":64,"column":26},"end":{"line":64,"column":27}},"loc":{"start":{"line":64,"column":47},"end":{"line":83,"column":2}},"line":64},"4":{"name":"(anonymous_4)","decl":{"start":{"line":70,"column":18},"end":{"line":70,"column":22}},"loc":{"start":{"line":70,"column":42},"end":{"line":80,"column":null}},"line":70},"5":{"name":"sendMessageWeb","decl":{"start":{"line":86,"column":22},"end":{"line":86,"column":null}},"loc":{"start":{"line":90,"column":2},"end":{"line":110,"column":null}},"line":90},"6":{"name":"loginWeb","decl":{"start":{"line":112,"column":22},"end":{"line":112,"column":null}},"loc":{"start":{"line":115,"column":2},"end":{"line":159,"column":null}},"line":115},"7":{"name":"(anonymous_7)","decl":{"start":{"line":151,"column":13},"end":{"line":151,"column":19}},"loc":{"start":{"line":151,"column":19},"end":{"line":157,"column":5}},"line":151},"8":{"name":"monitorWebInbox","decl":{"start":{"line":174,"column":22},"end":{"line":174,"column":38}},"loc":{"start":{"line":177,"column":3},"end":{"line":241,"column":null}},"line":177},"9":{"name":"(anonymous_9)","decl":{"start":{"line":184,"column":31},"end":{"line":184,"column":38}},"loc":{"start":{"line":184,"column":49},"end":{"line":230,"column":2}},"line":184},"10":{"name":"(anonymous_10)","decl":{"start":{"line":202,"column":25},"end":{"line":202,"column":37}},"loc":{"start":{"line":202,"column":37},"end":{"line":208,"column":null}},"line":202},"11":{"name":"(anonymous_11)","decl":{"start":{"line":209,"column":17},"end":{"line":209,"column":24}},"loc":{"start":{"line":209,"column":41},"end":{"line":211,"column":null}},"line":209},"12":{"name":"(anonymous_12)","decl":{"start":{"line":233,"column":9},"end":{"line":233,"column":21}},"loc":{"start":{"line":233,"column":21},"end":{"line":239,"column":null}},"line":233},"13":{"name":"extractText","decl":{"start":{"line":243,"column":9},"end":{"line":243,"column":21}},"loc":{"start":{"line":243,"column":78},"end":{"line":253,"column":null}},"line":243},"14":{"name":"getStatusCode","decl":{"start":{"line":255,"column":9},"end":{"line":255,"column":23}},"loc":{"start":{"line":255,"column":37},"end":{"line":260,"column":null}},"line":255},"15":{"name":"formatError","decl":{"start":{"line":262,"column":9},"end":{"line":262,"column":21}},"loc":{"start":{"line":262,"column":43},"end":{"line":269,"column":null}},"line":262}},"branchMap":{"0":{"loc":{"start":{"line":23,"column":30},"end":{"line":23,"column":58}},"type":"cond-expr","locations":[{"start":{"line":23,"column":40},"end":{"line":23,"column":49}},{"start":{"line":23,"column":49},"end":{"line":23,"column":58}}],"line":23},"1":{"loc":{"start":{"line":42,"column":3},"end":{"line":45,"column":null}},"type":"if","locations":[{"start":{"line":42,"column":3},"end":{"line":45,"column":null}},{"start":{},"end":{}}],"line":42},"2":{"loc":{"start":{"line":42,"column":7},"end":{"line":42,"column":22}},"type":"binary-expr","locations":[{"start":{"line":42,"column":7},"end":{"line":42,"column":13}},{"start":{"line":42,"column":13},"end":{"line":42,"column":22}}],"line":42},"3":{"loc":{"start":{"line":46,"column":3},"end":{"line":53,"column":null}},"type":"if","locations":[{"start":{"line":46,"column":3},"end":{"line":53,"column":null}},{"start":{},"end":{}}],"line":46},"4":{"loc":{"start":{"line":48,"column":4},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":48,"column":4},"end":{"line":52,"column":null}},{"start":{},"end":{}}],"line":48},"5":{"loc":{"start":{"line":54,"column":3},"end":{"line":56,"column":null}},"type":"if","locations":[{"start":{"line":54,"column":3},"end":{"line":56,"column":null}},{"start":{},"end":{}}],"line":54},"6":{"loc":{"start":{"line":54,"column":7},"end":{"line":54,"column":41}},"type":"binary-expr","locations":[{"start":{"line":54,"column":7},"end":{"line":54,"column":32}},{"start":{"line":54,"column":32},"end":{"line":54,"column":41}}],"line":54},"7":{"loc":{"start":{"line":71,"column":19},"end":{"line":71,"column":null}},"type":"binary-expr","locations":[{"start":{"line":71,"column":19},"end":{"line":71,"column":30}},{"start":{"line":71,"column":30},"end":{"line":71,"column":null}}],"line":71},"8":{"loc":{"start":{"line":72,"column":3},"end":{"line":75,"column":null}},"type":"if","locations":[{"start":{"line":72,"column":3},"end":{"line":75,"column":null}},{"start":{},"end":{}}],"line":72},"9":{"loc":{"start":{"line":76,"column":3},"end":{"line":79,"column":null}},"type":"if","locations":[{"start":{"line":76,"column":3},"end":{"line":79,"column":null}},{"start":{},"end":{}}],"line":76},"10":{"loc":{"start":{"line":78,"column":11},"end":{"line":78,"column":66}},"type":"binary-expr","locations":[{"start":{"line":78,"column":11},"end":{"line":78,"column":36}},{"start":{"line":78,"column":36},"end":{"line":78,"column":66}}],"line":78},"11":{"loc":{"start":{"line":101,"column":20},"end":{"line":101,"column":null}},"type":"binary-expr","locations":[{"start":{"line":101,"column":20},"end":{"line":101,"column":39}},{"start":{"line":101,"column":39},"end":{"line":101,"column":null}}],"line":101},"12":{"loc":{"start":{"line":114,"column":1},"end":{"line":114,"column":null}},"type":"default-arg","locations":[{"start":{"line":114,"column":49},"end":{"line":114,"column":null}}],"line":114},"13":{"loc":{"start":{"line":123,"column":4},"end":{"line":125,"column":null}},"type":"binary-expr","locations":[{"start":{"line":123,"column":4},"end":{"line":124,"column":null}},{"start":{"line":125,"column":4},"end":{"line":125,"column":null}}],"line":123},"14":{"loc":{"start":{"line":126,"column":2},"end":{"line":133,"column":null}},"type":"if","locations":[{"start":{"line":126,"column":2},"end":{"line":133,"column":null}},{"start":{},"end":{}}],"line":126},"15":{"loc":{"start":{"line":134,"column":2},"end":{"line":142,"column":null}},"type":"if","locations":[{"start":{"line":134,"column":2},"end":{"line":142,"column":null}},{"start":{},"end":{}}],"line":134},"16":{"loc":{"start":{"line":181,"column":18},"end":{"line":181,"column":null}},"type":"cond-expr","locations":[{"start":{"line":181,"column":18},"end":{"line":181,"column":49}},{"start":{"line":181,"column":49},"end":{"line":181,"column":null}}],"line":181},"17":{"loc":{"start":{"line":185,"column":2},"end":{"line":185,"column":null}},"type":"if","locations":[{"start":{"line":185,"column":2},"end":{"line":185,"column":null}},{"start":{},"end":{}}],"line":185},"18":{"loc":{"start":{"line":187,"column":14},"end":{"line":187,"column":null}},"type":"binary-expr","locations":[{"start":{"line":187,"column":14},"end":{"line":187,"column":29}},{"start":{"line":187,"column":29},"end":{"line":187,"column":null}}],"line":187},"19":{"loc":{"start":{"line":189,"column":3},"end":{"line":189,"column":null}},"type":"if","locations":[{"start":{"line":189,"column":3},"end":{"line":189,"column":null}},{"start":{},"end":{}}],"line":189},"20":{"loc":{"start":{"line":189,"column":7},"end":{"line":189,"column":27}},"type":"binary-expr","locations":[{"start":{"line":189,"column":7},"end":{"line":189,"column":13}},{"start":{"line":189,"column":13},"end":{"line":189,"column":27}}],"line":189},"21":{"loc":{"start":{"line":190,"column":3},"end":{"line":190,"column":null}},"type":"if","locations":[{"start":{"line":190,"column":3},"end":{"line":190,"column":null}},{"start":{},"end":{}}],"line":190},"22":{"loc":{"start":{"line":191,"column":3},"end":{"line":191,"column":null}},"type":"if","locations":[{"start":{"line":191,"column":3},"end":{"line":191,"column":null}},{"start":{},"end":{}}],"line":191},"23":{"loc":{"start":{"line":193,"column":3},"end":{"line":193,"column":null}},"type":"if","locations":[{"start":{"line":193,"column":3},"end":{"line":193,"column":null}},{"start":{},"end":{}}],"line":193},"24":{"loc":{"start":{"line":195,"column":3},"end":{"line":196,"column":null}},"type":"if","locations":[{"start":{"line":195,"column":3},"end":{"line":196,"column":null}},{"start":{},"end":{}}],"line":195},"25":{"loc":{"start":{"line":195,"column":7},"end":{"line":195,"column":null}},"type":"binary-expr","locations":[{"start":{"line":195,"column":7},"end":{"line":195,"column":40}},{"start":{"line":195,"column":40},"end":{"line":195,"column":null}}],"line":195},"26":{"loc":{"start":{"line":198,"column":3},"end":{"line":198,"column":null}},"type":"if","locations":[{"start":{"line":198,"column":3},"end":{"line":198,"column":null}},{"start":{},"end":{}}],"line":198},"27":{"loc":{"start":{"line":200,"column":3},"end":{"line":200,"column":null}},"type":"if","locations":[{"start":{"line":200,"column":3},"end":{"line":200,"column":null}},{"start":{},"end":{}}],"line":200},"28":{"loc":{"start":{"line":212,"column":21},"end":{"line":214,"column":null}},"type":"cond-expr","locations":[{"start":{"line":213,"column":6},"end":{"line":213,"column":null}},{"start":{"line":214,"column":6},"end":{"line":214,"column":null}}],"line":212},"29":{"loc":{"start":{"line":219,"column":9},"end":{"line":219,"column":null}},"type":"binary-expr","locations":[{"start":{"line":219,"column":9},"end":{"line":219,"column":21}},{"start":{"line":219,"column":21},"end":{"line":219,"column":null}}],"line":219},"30":{"loc":{"start":{"line":221,"column":15},"end":{"line":221,"column":null}},"type":"binary-expr","locations":[{"start":{"line":221,"column":15},"end":{"line":221,"column":31}},{"start":{"line":221,"column":31},"end":{"line":221,"column":null}}],"line":221},"31":{"loc":{"start":{"line":244,"column":1},"end":{"line":244,"column":null}},"type":"if","locations":[{"start":{"line":244,"column":1},"end":{"line":244,"column":null}},{"start":{},"end":{}}],"line":244},"32":{"loc":{"start":{"line":245,"column":1},"end":{"line":247,"column":null}},"type":"if","locations":[{"start":{"line":245,"column":1},"end":{"line":247,"column":null}},{"start":{},"end":{}}],"line":245},"33":{"loc":{"start":{"line":245,"column":5},"end":{"line":245,"column":78}},"type":"binary-expr","locations":[{"start":{"line":245,"column":5},"end":{"line":245,"column":49}},{"start":{"line":245,"column":49},"end":{"line":245,"column":78}}],"line":245},"34":{"loc":{"start":{"line":249,"column":1},"end":{"line":249,"column":null}},"type":"if","locations":[{"start":{"line":249,"column":1},"end":{"line":249,"column":null}},{"start":{},"end":{}}],"line":249},"35":{"loc":{"start":{"line":250,"column":17},"end":{"line":250,"column":null}},"type":"binary-expr","locations":[{"start":{"line":250,"column":17},"end":{"line":250,"column":50}},{"start":{"line":250,"column":50},"end":{"line":250,"column":null}}],"line":250},"36":{"loc":{"start":{"line":251,"column":1},"end":{"line":251,"column":null}},"type":"if","locations":[{"start":{"line":251,"column":1},"end":{"line":251,"column":null}},{"start":{},"end":{}}],"line":251},"37":{"loc":{"start":{"line":257,"column":3},"end":{"line":258,"column":null}},"type":"binary-expr","locations":[{"start":{"line":257,"column":3},"end":{"line":257,"column":null}},{"start":{"line":258,"column":3},"end":{"line":258,"column":null}}],"line":257},"38":{"loc":{"start":{"line":263,"column":1},"end":{"line":263,"column":null}},"type":"if","locations":[{"start":{"line":263,"column":1},"end":{"line":263,"column":null}},{"start":{},"end":{}}],"line":263},"39":{"loc":{"start":{"line":264,"column":1},"end":{"line":264,"column":null}},"type":"if","locations":[{"start":{"line":264,"column":1},"end":{"line":264,"column":null}},{"start":{},"end":{}}],"line":264},"40":{"loc":{"start":{"line":267,"column":1},"end":{"line":267,"column":null}},"type":"if","locations":[{"start":{"line":267,"column":1},"end":{"line":267,"column":null}},{"start":{},"end":{}}],"line":267},"41":{"loc":{"start":{"line":267,"column":5},"end":{"line":267,"column":21}},"type":"binary-expr","locations":[{"start":{"line":267,"column":5},"end":{"line":267,"column":15}},{"start":{"line":267,"column":15},"end":{"line":267,"column":21}}],"line":267},"42":{"loc":{"start":{"line":267,"column":38},"end":{"line":267,"column":57}},"type":"binary-expr","locations":[{"start":{"line":267,"column":38},"end":{"line":267,"column":48}},{"start":{"line":267,"column":48},"end":{"line":267,"column":57}}],"line":267},"43":{"loc":{"start":{"line":267,"column":66},"end":{"line":267,"column":83}},"type":"binary-expr","locations":[{"start":{"line":267,"column":66},"end":{"line":267,"column":74}},{"start":{"line":267,"column":74},"end":{"line":267,"column":83}}],"line":267}},"s":{"0":4,"1":4,"2":4,"3":4,"4":4,"5":4,"6":4,"7":4,"8":3,"9":3,"10":0,"11":0,"12":3,"13":0,"14":0,"15":0,"16":3,"17":0,"18":4,"19":4,"20":4,"21":4,"22":4,"23":4,"24":3,"25":3,"26":4,"27":1,"28":1,"29":4,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":0,"37":1,"38":1,"39":1,"40":1,"41":1,"42":0,"43":1,"44":1,"45":1,"46":1,"47":1,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":0,"70":1,"71":1,"72":1,"73":0,"74":1,"75":1,"76":1,"77":0,"78":1,"79":1,"80":0,"81":1,"82":0,"83":1,"84":1,"85":0,"86":1,"87":1,"88":0,"89":1,"90":1,"91":1,"92":1,"93":0,"94":1,"95":1,"96":1,"97":1,"98":1,"99":0,"100":1,"101":1,"102":1,"103":0,"104":1,"105":0,"106":1,"107":1,"108":0,"109":1,"110":0,"111":0,"112":1,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0},"f":{"0":4,"1":3,"2":4,"3":4,"4":4,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":0,"15":0},"b":{"0":[0,4],"1":[0,3],"2":[3,0],"3":[0,3],"4":[0,0],"5":[0,3],"6":[3,3],"7":[4,0],"8":[3,1],"9":[1,3],"10":[1,0],"11":[1,0],"12":[1],"13":[0,0],"14":[0,0],"15":[0,0],"16":[1,0],"17":[0,1],"18":[1,0],"19":[0,1],"20":[1,1],"21":[1,0],"22":[0,1],"23":[0,1],"24":[0,1],"25":[1,1],"26":[0,1],"27":[0,1],"28":[1,0],"29":[1,0],"30":[1,0],"31":[0,1],"32":[1,0],"33":[1,1],"34":[0,1],"35":[0,0],"36":[0,1],"37":[0,0],"38":[0,0],"39":[0,0],"40":[0,0],"41":[0,0],"42":[0,0],"43":[0,0]},"meta":{"lastBranch":44,"lastFunction":16,"lastStatement":125,"seen":{"s:17:24:17:Infinity":0,"f:19:22:19:37":0,"s:20:1:20:Infinity":1,"s:21:30:21:Infinity":2,"s:22:21:22:Infinity":3,"s:23:7:23:Infinity":4,"b:23:40:23:49:23:49:23:58":0,"s:24:7:35:Infinity":5,"s:37:1:37:Infinity":6,"s:38:1:58:Infinity":7,"f:40:2:40:3":1,"s:41:46:41:Infinity":8,"b:42:3:45:Infinity:undefined:undefined:undefined:undefined":1,"s:42:3:45:Infinity":9,"b:42:7:42:13:42:13:42:22":2,"s:43:4:43:Infinity":10,"s:44:4:44:Infinity":11,"b:46:3:53:Infinity:undefined:undefined:undefined:undefined":3,"s:46:3:53:Infinity":12,"s:47:19:47:Infinity":13,"b:48:4:52:Infinity:undefined:undefined:undefined:undefined":4,"s:48:4:52:Infinity":14,"s:49:5:51:Infinity":15,"b:54:3:56:Infinity:undefined:undefined:undefined:undefined":5,"s:54:3:56:Infinity":16,"b:54:7:54:32:54:32:54:41":6,"s:55:4:55:Infinity":17,"s:60:1:60:Infinity":18,"f:63:22:63:42":2,"s:64:1:83:Infinity":19,"f:64:26:64:27":3,"s:68:20:68:Infinity":20,"s:70:18:80:Infinity":21,"f:70:18:70:22":4,"s:71:19:71:Infinity":22,"b:71:19:71:30:71:30:71:Infinity":7,"b:72:3:75:Infinity:undefined:undefined:undefined:undefined":8,"s:72:3:75:Infinity":23,"s:73:4:73:Infinity":24,"s:74:4:74:Infinity":25,"b:76:3:79:Infinity:undefined:undefined:undefined:undefined":9,"s:76:3:79:Infinity":26,"s:77:4:77:Infinity":27,"s:78:4:78:Infinity":28,"b:78:11:78:36:78:36:78:66":10,"s:82:2:82:Infinity":29,"f:86:22:86:Infinity":5,"s:91:14:91:Infinity":30,"s:92:1:109:Infinity":31,"s:93:2:93:Infinity":32,"s:94:8:94:Infinity":33,"s:95:2:99:Infinity":34,"s:96:3:96:Infinity":35,"s:98:3:98:Infinity":36,"s:100:17:100:Infinity":37,"s:101:20:101:Infinity":38,"b:101:20:101:39:101:39:101:Infinity":11,"s:102:2:102:Infinity":39,"s:104:2:108:Infinity":40,"s:105:3:105:Infinity":41,"s:107:3:107:Infinity":42,"f:112:22:112:Infinity":6,"b:114:49:114:Infinity":12,"s:116:14:116:Infinity":43,"s:117:1:117:Infinity":44,"s:118:1:158:Infinity":45,"s:119:2:119:Infinity":46,"s:120:2:120:Infinity":47,"s:123:4:125:Infinity":48,"b:123:4:124:Infinity:125:4:125:Infinity":13,"b:126:2:133:Infinity:undefined:undefined:undefined:undefined":14,"s:126:2:133:Infinity":49,"s:127:3:131:Infinity":50,"s:132:3:132:Infinity":51,"b:134:2:142:Infinity:undefined:undefined:undefined:undefined":15,"s:134:2:142:Infinity":52,"s:135:3:135:Infinity":53,"s:136:3:140:Infinity":54,"s:141:3:141:Infinity":55,"s:143:20:143:Infinity":56,"s:144:2:148:Infinity":57,"s:149:2:149:Infinity":58,"s:151:2:157:Infinity":59,"f:151:13:151:19":7,"s:152:3:156:Infinity":60,"s:153:4:153:Infinity":61,"f:174:22:174:38":8,"s:178:14:178:Infinity":62,"s:179:1:179:Infinity":63,"s:180:17:180:Infinity":64,"s:181:18:181:Infinity":65,"b:181:18:181:49:181:49:181:Infinity":16,"s:182:14:182:Infinity":66,"s:184:1:230:Infinity":67,"f:184:31:184:38":9,"b:185:2:185:Infinity:undefined:undefined:undefined:undefined":17,"s:185:2:185:Infinity":68,"s:185:32:185:Infinity":69,"s:186:2:229:Infinity":70,"s:187:14:187:Infinity":71,"b:187:14:187:29:187:29:187:Infinity":18,"b:189:3:189:Infinity:undefined:undefined:undefined:undefined":19,"s:189:3:189:Infinity":72,"b:189:7:189:13:189:13:189:27":20,"s:189:27:189:Infinity":73,"b:190:3:190:Infinity:undefined:undefined:undefined:undefined":21,"s:190:3:190:Infinity":74,"s:190:11:190:Infinity":75,"b:191:3:191:Infinity:undefined:undefined:undefined:undefined":22,"s:191:3:191:Infinity":76,"s:191:24:191:Infinity":77,"s:192:21:192:Infinity":78,"b:193:3:193:Infinity:undefined:undefined:undefined:undefined":23,"s:193:3:193:Infinity":79,"s:193:19:193:Infinity":80,"b:195:3:196:Infinity:undefined:undefined:undefined:undefined":24,"s:195:3:196:Infinity":81,"b:195:7:195:40:195:40:195:Infinity":25,"s:196:4:196:Infinity":82,"s:197:9:197:Infinity":83,"b:198:3:198:Infinity:undefined:undefined:undefined:undefined":26,"s:198:3:198:Infinity":84,"s:198:14:198:Infinity":85,"s:199:16:199:Infinity":86,"b:200:3:200:Infinity:undefined:undefined:undefined:undefined":27,"s:200:3:200:Infinity":87,"s:200:14:200:Infinity":88,"s:201:19:201:Infinity":89,"s:202:25:208:Infinity":90,"f:202:25:202:37":10,"s:203:4:207:Infinity":91,"s:204:5:204:Infinity":92,"s:206:5:206:Infinity":93,"s:209:17:211:Infinity":94,"f:209:17:209:24":11,"s:210:4:210:Infinity":95,"s:212:21:214:Infinity":96,"b:213:6:213:Infinity:214:6:214:Infinity":28,"s:215:3:228:Infinity":97,"s:216:4:225:Infinity":98,"b:219:9:219:21:219:21:219:Infinity":29,"b:221:15:221:31:221:31:221:Infinity":30,"s:227:4:227:Infinity":99,"s:232:1:240:Infinity":100,"f:233:9:233:21":12,"s:234:3:238:Infinity":101,"s:235:4:235:Infinity":102,"s:237:4:237:Infinity":103,"f:243:9:243:21":13,"b:244:1:244:Infinity:undefined:undefined:undefined:undefined":31,"s:244:1:244:Infinity":104,"s:244:15:244:Infinity":105,"b:245:1:247:Infinity:undefined:undefined:undefined:undefined":32,"s:245:1:247:Infinity":106,"b:245:5:245:49:245:49:245:78":33,"s:246:2:246:Infinity":107,"s:248:18:248:Infinity":108,"b:249:1:249:Infinity:undefined:undefined:undefined:undefined":34,"s:249:1:249:Infinity":109,"s:249:23:249:Infinity":110,"s:250:17:250:Infinity":111,"b:250:17:250:50:250:50:250:Infinity":35,"b:251:1:251:Infinity:undefined:undefined:undefined:undefined":36,"s:251:1:251:Infinity":112,"s:251:22:251:Infinity":113,"s:252:1:252:Infinity":114,"f:255:9:255:23":14,"s:256:1:258:Infinity":115,"b:257:3:257:Infinity:258:3:258:Infinity":37,"f:262:9:262:21":15,"b:263:1:263:Infinity:undefined:undefined:undefined:undefined":38,"s:263:1:263:Infinity":116,"s:263:27:263:Infinity":117,"b:264:1:264:Infinity:undefined:undefined:undefined:undefined":39,"s:264:1:264:Infinity":118,"s:264:30:264:Infinity":119,"s:265:16:265:Infinity":120,"s:266:15:266:Infinity":121,"b:267:1:267:Infinity:undefined:undefined:undefined:undefined":40,"s:267:1:267:Infinity":122,"b:267:5:267:15:267:15:267:21":41,"s:267:21:267:Infinity":123,"b:267:38:267:48:267:48:267:57":42,"b:267:66:267:74:267:74:267:83":43,"s:268:1:268:Infinity":124}}} -,"/Users/steipete/Projects/warelay/src/utils.ts": {"path":"/Users/steipete/Projects/warelay/src/utils.ts","statementMap":{"0":{"start":{"line":5,"column":1},"end":{"line":5,"column":null}},"1":{"start":{"line":11,"column":1},"end":{"line":13,"column":null}},"2":{"start":{"line":12,"column":2},"end":{"line":12,"column":null}},"3":{"start":{"line":17,"column":1},"end":{"line":17,"column":null}},"4":{"start":{"line":17,"column":25},"end":{"line":17,"column":null}},"5":{"start":{"line":18,"column":1},"end":{"line":18,"column":null}},"6":{"start":{"line":22,"column":1},"end":{"line":22,"column":null}},"7":{"start":{"line":26,"column":23},"end":{"line":26,"column":null}},"8":{"start":{"line":27,"column":16},"end":{"line":27,"column":null}},"9":{"start":{"line":28,"column":1},"end":{"line":28,"column":null}},"10":{"start":{"line":28,"column":29},"end":{"line":28,"column":null}},"11":{"start":{"line":29,"column":1},"end":{"line":29,"column":null}},"12":{"start":{"line":33,"column":14},"end":{"line":33,"column":null}},"13":{"start":{"line":34,"column":16},"end":{"line":34,"column":null}},"14":{"start":{"line":35,"column":1},"end":{"line":35,"column":null}},"15":{"start":{"line":40,"column":15},"end":{"line":40,"column":null}},"16":{"start":{"line":41,"column":1},"end":{"line":41,"column":null}},"17":{"start":{"line":41,"column":13},"end":{"line":41,"column":null}},"18":{"start":{"line":42,"column":16},"end":{"line":42,"column":null}},"19":{"start":{"line":43,"column":1},"end":{"line":43,"column":null}},"20":{"start":{"line":47,"column":1},"end":{"line":47,"column":null}},"21":{"start":{"line":47,"column":33},"end":{"line":47,"column":56}},"22":{"start":{"line":50,"column":26},"end":{"line":50,"column":null}}},"fnMap":{"0":{"name":"ensureDir","decl":{"start":{"line":4,"column":22},"end":{"line":4,"column":32}},"loc":{"start":{"line":4,"column":45},"end":{"line":6,"column":null}},"line":4},"1":{"name":"assertProvider","decl":{"start":{"line":10,"column":16},"end":{"line":10,"column":31}},"loc":{"start":{"line":10,"column":73},"end":{"line":14,"column":null}},"line":10},"2":{"name":"normalizePath","decl":{"start":{"line":16,"column":16},"end":{"line":16,"column":30}},"loc":{"start":{"line":16,"column":49},"end":{"line":19,"column":null}},"line":16},"3":{"name":"withWhatsAppPrefix","decl":{"start":{"line":21,"column":16},"end":{"line":21,"column":35}},"loc":{"start":{"line":21,"column":59},"end":{"line":23,"column":null}},"line":21},"4":{"name":"normalizeE164","decl":{"start":{"line":25,"column":16},"end":{"line":25,"column":30}},"loc":{"start":{"line":25,"column":54},"end":{"line":30,"column":null}},"line":25},"5":{"name":"toWhatsappJid","decl":{"start":{"line":32,"column":16},"end":{"line":32,"column":30}},"loc":{"start":{"line":32,"column":54},"end":{"line":36,"column":null}},"line":32},"6":{"name":"jidToE164","decl":{"start":{"line":38,"column":16},"end":{"line":38,"column":26}},"loc":{"start":{"line":38,"column":54},"end":{"line":44,"column":null}},"line":38},"7":{"name":"sleep","decl":{"start":{"line":46,"column":16},"end":{"line":46,"column":22}},"loc":{"start":{"line":46,"column":34},"end":{"line":48,"column":null}},"line":46},"8":{"name":"(anonymous_8)","decl":{"start":{"line":47,"column":20},"end":{"line":47,"column":21}},"loc":{"start":{"line":47,"column":33},"end":{"line":47,"column":56}},"line":47}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":1},"end":{"line":13,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":1},"end":{"line":13,"column":null}},{"start":{},"end":{}}],"line":11},"1":{"loc":{"start":{"line":11,"column":5},"end":{"line":11,"column":44}},"type":"binary-expr","locations":[{"start":{"line":11,"column":5},"end":{"line":11,"column":27}},{"start":{"line":11,"column":27},"end":{"line":11,"column":44}}],"line":11},"2":{"loc":{"start":{"line":17,"column":1},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":17,"column":1},"end":{"line":17,"column":null}},{"start":{},"end":{}}],"line":17},"3":{"loc":{"start":{"line":22,"column":8},"end":{"line":22,"column":null}},"type":"cond-expr","locations":[{"start":{"line":22,"column":41},"end":{"line":22,"column":50}},{"start":{"line":22,"column":50},"end":{"line":22,"column":null}}],"line":22},"4":{"loc":{"start":{"line":28,"column":1},"end":{"line":28,"column":null}},"type":"if","locations":[{"start":{"line":28,"column":1},"end":{"line":28,"column":null}},{"start":{},"end":{}}],"line":28},"5":{"loc":{"start":{"line":41,"column":1},"end":{"line":41,"column":null}},"type":"if","locations":[{"start":{"line":41,"column":1},"end":{"line":41,"column":null}},{"start":{},"end":{}}],"line":41}},"s":{"0":5,"1":6,"2":2,"3":3,"4":1,"5":2,"6":13,"7":10,"8":10,"9":10,"10":8,"11":2,"12":3,"13":3,"14":3,"15":2,"16":2,"17":0,"18":2,"19":2,"20":833,"21":833,"22":5},"f":{"0":5,"1":6,"2":3,"3":13,"4":10,"5":3,"6":2,"7":833,"8":833},"b":{"0":[2,4],"1":[6,4],"2":[1,2],"3":[7,6],"4":[8,2],"5":[0,2]},"meta":{"lastBranch":6,"lastFunction":9,"lastStatement":23,"seen":{"f:4:22:4:32":0,"s:5:1:5:Infinity":0,"f:10:16:10:31":1,"b:11:1:13:Infinity:undefined:undefined:undefined:undefined":0,"s:11:1:13:Infinity":1,"b:11:5:11:27:11:27:11:44":1,"s:12:2:12:Infinity":2,"f:16:16:16:30":2,"b:17:1:17:Infinity:undefined:undefined:undefined:undefined":2,"s:17:1:17:Infinity":3,"s:17:25:17:Infinity":4,"s:18:1:18:Infinity":5,"f:21:16:21:35":3,"s:22:1:22:Infinity":6,"b:22:41:22:50:22:50:22:Infinity":3,"f:25:16:25:30":4,"s:26:23:26:Infinity":7,"s:27:16:27:Infinity":8,"b:28:1:28:Infinity:undefined:undefined:undefined:undefined":4,"s:28:1:28:Infinity":9,"s:28:29:28:Infinity":10,"s:29:1:29:Infinity":11,"f:32:16:32:30":5,"s:33:14:33:Infinity":12,"s:34:16:34:Infinity":13,"s:35:1:35:Infinity":14,"f:38:16:38:26":6,"s:40:15:40:Infinity":15,"b:41:1:41:Infinity:undefined:undefined:undefined:undefined":5,"s:41:1:41:Infinity":16,"s:41:13:41:Infinity":17,"s:42:16:42:Infinity":18,"s:43:1:43:Infinity":19,"f:46:16:46:22":7,"s:47:1:47:Infinity":20,"f:47:20:47:21":8,"s:47:33:47:56":21,"s:50:26:50:Infinity":22}}} -,"/Users/steipete/Projects/warelay/src/commands/send.ts": {"path":"/Users/steipete/Projects/warelay/src/commands/send.ts","statementMap":{"0":{"start":{"line":15,"column":1},"end":{"line":15,"column":null}},"1":{"start":{"line":16,"column":21},"end":{"line":16,"column":null}},"2":{"start":{"line":17,"column":21},"end":{"line":17,"column":null}},"3":{"start":{"line":19,"column":1},"end":{"line":21,"column":null}},"4":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"5":{"start":{"line":22,"column":1},"end":{"line":24,"column":null}},"6":{"start":{"line":23,"column":2},"end":{"line":23,"column":null}},"7":{"start":{"line":26,"column":1},"end":{"line":32,"column":null}},"8":{"start":{"line":27,"column":2},"end":{"line":29,"column":null}},"9":{"start":{"line":28,"column":3},"end":{"line":28,"column":null}},"10":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}},"11":{"start":{"line":31,"column":2},"end":{"line":31,"column":null}},"12":{"start":{"line":34,"column":16},"end":{"line":34,"column":null}},"13":{"start":{"line":35,"column":1},"end":{"line":35,"column":null}},"14":{"start":{"line":35,"column":14},"end":{"line":35,"column":null}},"15":{"start":{"line":36,"column":1},"end":{"line":36,"column":null}},"16":{"start":{"line":36,"column":24},"end":{"line":36,"column":null}},"17":{"start":{"line":37,"column":1},"end":{"line":43,"column":null}}},"fnMap":{"0":{"name":"sendCommand","decl":{"start":{"line":4,"column":22},"end":{"line":4,"column":null}},"loc":{"start":{"line":14,"column":2},"end":{"line":44,"column":null}},"line":14}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":1},"end":{"line":21,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":1},"end":{"line":21,"column":null}},{"start":{},"end":{}}],"line":19},"1":{"loc":{"start":{"line":19,"column":5},"end":{"line":19,"column":51}},"type":"binary-expr","locations":[{"start":{"line":19,"column":5},"end":{"line":19,"column":34}},{"start":{"line":19,"column":34},"end":{"line":19,"column":51}}],"line":19},"2":{"loc":{"start":{"line":22,"column":1},"end":{"line":24,"column":null}},"type":"if","locations":[{"start":{"line":22,"column":1},"end":{"line":24,"column":null}},{"start":{},"end":{}}],"line":22},"3":{"loc":{"start":{"line":22,"column":5},"end":{"line":22,"column":52}},"type":"binary-expr","locations":[{"start":{"line":22,"column":5},"end":{"line":22,"column":34}},{"start":{"line":22,"column":34},"end":{"line":22,"column":52}}],"line":22},"4":{"loc":{"start":{"line":26,"column":1},"end":{"line":32,"column":null}},"type":"if","locations":[{"start":{"line":26,"column":1},"end":{"line":32,"column":null}},{"start":{},"end":{}}],"line":26},"5":{"loc":{"start":{"line":27,"column":2},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":2},"end":{"line":29,"column":null}},{"start":{},"end":{}}],"line":27},"6":{"loc":{"start":{"line":35,"column":1},"end":{"line":35,"column":null}},"type":"if","locations":[{"start":{"line":35,"column":1},"end":{"line":35,"column":null}},{"start":{},"end":{}}],"line":35},"7":{"loc":{"start":{"line":36,"column":1},"end":{"line":36,"column":null}},"type":"if","locations":[{"start":{"line":36,"column":1},"end":{"line":36,"column":null}},{"start":{},"end":{}}],"line":36}},"s":{"0":2,"1":2,"2":2,"3":2,"4":0,"5":2,"6":0,"7":2,"8":1,"9":0,"10":1,"11":1,"12":1,"13":1,"14":0,"15":1,"16":1,"17":0},"f":{"0":2},"b":{"0":[0,2],"1":[2,2],"2":[0,2],"3":[2,2],"4":[1,1],"5":[0,1],"6":[0,1],"7":[1,0]},"meta":{"lastBranch":8,"lastFunction":1,"lastStatement":18,"seen":{"f:4:22:4:Infinity":0,"s:15:1:15:Infinity":0,"s:16:21:16:Infinity":1,"s:17:21:17:Infinity":2,"b:19:1:21:Infinity:undefined:undefined:undefined:undefined":0,"s:19:1:21:Infinity":3,"b:19:5:19:34:19:34:19:51":1,"s:20:2:20:Infinity":4,"b:22:1:24:Infinity:undefined:undefined:undefined:undefined":2,"s:22:1:24:Infinity":5,"b:22:5:22:34:22:34:22:52":3,"s:23:2:23:Infinity":6,"b:26:1:32:Infinity:undefined:undefined:undefined:undefined":4,"s:26:1:32:Infinity":7,"b:27:2:29:Infinity:undefined:undefined:undefined:undefined":5,"s:27:2:29:Infinity":8,"s:28:3:28:Infinity":9,"s:30:2:30:Infinity":10,"s:31:2:31:Infinity":11,"s:34:16:34:Infinity":12,"b:35:1:35:Infinity:undefined:undefined:undefined:undefined":6,"s:35:1:35:Infinity":13,"s:35:14:35:Infinity":14,"b:36:1:36:Infinity:undefined:undefined:undefined:undefined":7,"s:36:1:36:Infinity":15,"s:36:24:36:Infinity":16,"s:37:1:43:Infinity":17}}} -,"/Users/steipete/Projects/warelay/src/commands/status.ts": {"path":"/Users/steipete/Projects/warelay/src/commands/status.ts","statementMap":{"0":{"start":{"line":9,"column":15},"end":{"line":9,"column":null}},"1":{"start":{"line":10,"column":25},"end":{"line":10,"column":null}},"2":{"start":{"line":11,"column":1},"end":{"line":13,"column":null}},"3":{"start":{"line":12,"column":2},"end":{"line":12,"column":null}},"4":{"start":{"line":14,"column":1},"end":{"line":16,"column":null}},"5":{"start":{"line":15,"column":2},"end":{"line":15,"column":null}},"6":{"start":{"line":18,"column":18},"end":{"line":18,"column":null}},"7":{"start":{"line":19,"column":1},"end":{"line":22,"column":null}},"8":{"start":{"line":20,"column":2},"end":{"line":20,"column":null}},"9":{"start":{"line":21,"column":2},"end":{"line":21,"column":null}},"10":{"start":{"line":23,"column":1},"end":{"line":26,"column":null}},"11":{"start":{"line":24,"column":2},"end":{"line":24,"column":null}},"12":{"start":{"line":25,"column":2},"end":{"line":25,"column":null}},"13":{"start":{"line":27,"column":1},"end":{"line":29,"column":null}},"14":{"start":{"line":28,"column":2},"end":{"line":28,"column":null}}},"fnMap":{"0":{"name":"statusCommand","decl":{"start":{"line":4,"column":22},"end":{"line":4,"column":null}},"loc":{"start":{"line":8,"column":2},"end":{"line":30,"column":null}},"line":8}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":1},"end":{"line":13,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":1},"end":{"line":13,"column":null}},{"start":{},"end":{}}],"line":11},"1":{"loc":{"start":{"line":11,"column":5},"end":{"line":11,"column":55}},"type":"binary-expr","locations":[{"start":{"line":11,"column":5},"end":{"line":11,"column":28}},{"start":{"line":11,"column":28},"end":{"line":11,"column":42}},{"start":{"line":11,"column":42},"end":{"line":11,"column":55}}],"line":11},"2":{"loc":{"start":{"line":14,"column":1},"end":{"line":16,"column":null}},"type":"if","locations":[{"start":{"line":14,"column":1},"end":{"line":16,"column":null}},{"start":{},"end":{}}],"line":14},"3":{"loc":{"start":{"line":14,"column":5},"end":{"line":14,"column":60}},"type":"binary-expr","locations":[{"start":{"line":14,"column":5},"end":{"line":14,"column":38}},{"start":{"line":14,"column":38},"end":{"line":14,"column":60}}],"line":14},"4":{"loc":{"start":{"line":19,"column":1},"end":{"line":22,"column":null}},"type":"if","locations":[{"start":{"line":19,"column":1},"end":{"line":22,"column":null}},{"start":{},"end":{}}],"line":19},"5":{"loc":{"start":{"line":23,"column":1},"end":{"line":26,"column":null}},"type":"if","locations":[{"start":{"line":23,"column":1},"end":{"line":26,"column":null}},{"start":{},"end":{}}],"line":23}},"s":{"0":1,"1":1,"2":1,"3":0,"4":1,"5":0,"6":1,"7":1,"8":1,"9":1,"10":0,"11":0,"12":0,"13":0,"14":0},"f":{"0":1},"b":{"0":[0,1],"1":[1,1,1],"2":[0,1],"3":[1,1],"4":[1,0],"5":[0,0]},"meta":{"lastBranch":6,"lastFunction":1,"lastStatement":15,"seen":{"f:4:22:4:Infinity":0,"s:9:15:9:Infinity":0,"s:10:25:10:Infinity":1,"b:11:1:13:Infinity:undefined:undefined:undefined:undefined":0,"s:11:1:13:Infinity":2,"b:11:5:11:28:11:28:11:42:11:42:11:55":1,"s:12:2:12:Infinity":3,"b:14:1:16:Infinity:undefined:undefined:undefined:undefined":2,"s:14:1:16:Infinity":4,"b:14:5:14:38:14:38:14:60":3,"s:15:2:15:Infinity":5,"s:18:18:18:Infinity":6,"b:19:1:22:Infinity:undefined:undefined:undefined:undefined":4,"s:19:1:22:Infinity":7,"s:20:2:20:Infinity":8,"s:21:2:21:Infinity":9,"b:23:1:26:Infinity:undefined:undefined:undefined:undefined":5,"s:23:1:26:Infinity":10,"s:24:2:24:Infinity":11,"s:25:2:25:Infinity":12,"s:27:1:29:Infinity":13,"s:28:2:28:Infinity":14}}} -,"/Users/steipete/Projects/warelay/src/commands/up.ts": {"path":"/Users/steipete/Projects/warelay/src/commands/up.ts","statementMap":{"0":{"start":{"line":10,"column":14},"end":{"line":10,"column":null}},"1":{"start":{"line":11,"column":1},"end":{"line":13,"column":null}},"2":{"start":{"line":12,"column":2},"end":{"line":12,"column":null}},"3":{"start":{"line":15,"column":1},"end":{"line":15,"column":null}},"4":{"start":{"line":16,"column":13},"end":{"line":16,"column":null}},"5":{"start":{"line":17,"column":1},"end":{"line":17,"column":null}},"6":{"start":{"line":18,"column":1},"end":{"line":18,"column":null}},"7":{"start":{"line":19,"column":14},"end":{"line":19,"column":null}},"8":{"start":{"line":20,"column":19},"end":{"line":20,"column":null}},"9":{"start":{"line":21,"column":1},"end":{"line":21,"column":null}},"10":{"start":{"line":23,"column":16},"end":{"line":29,"column":null}},"11":{"start":{"line":31,"column":22},"end":{"line":31,"column":null}},"12":{"start":{"line":32,"column":19},"end":{"line":37,"column":null}},"13":{"start":{"line":38,"column":1},"end":{"line":44,"column":null}},"14":{"start":{"line":46,"column":1},"end":{"line":48,"column":null}},"15":{"start":{"line":50,"column":1},"end":{"line":50,"column":null}}},"fnMap":{"0":{"name":"upCommand","decl":{"start":{"line":4,"column":22},"end":{"line":4,"column":null}},"loc":{"start":{"line":9,"column":2},"end":{"line":51,"column":null}},"line":9}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":1},"end":{"line":8,"column":null}},"type":"default-arg","locations":[{"start":{"line":8,"column":37},"end":{"line":8,"column":null}}],"line":8},"1":{"loc":{"start":{"line":11,"column":1},"end":{"line":13,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":1},"end":{"line":13,"column":null}},{"start":{},"end":{}}],"line":11},"2":{"loc":{"start":{"line":11,"column":5},"end":{"line":11,"column":55}},"type":"binary-expr","locations":[{"start":{"line":11,"column":5},"end":{"line":11,"column":27}},{"start":{"line":11,"column":27},"end":{"line":11,"column":40}},{"start":{"line":11,"column":40},"end":{"line":11,"column":55}}],"line":11},"3":{"loc":{"start":{"line":31,"column":22},"end":{"line":31,"column":null}},"type":"cond-expr","locations":[{"start":{"line":31,"column":42},"end":{"line":31,"column":67}},{"start":{"line":31,"column":67},"end":{"line":31,"column":null}}],"line":31}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0},"f":{"0":0},"b":{"0":[0],"1":[0,0],"2":[0,0,0],"3":[0,0]},"meta":{"lastBranch":4,"lastFunction":1,"lastStatement":16,"seen":{"f:4:22:4:Infinity":0,"b:8:37:8:Infinity":0,"s:10:14:10:Infinity":0,"b:11:1:13:Infinity:undefined:undefined:undefined:undefined":1,"s:11:1:13:Infinity":1,"b:11:5:11:27:11:27:11:40:11:40:11:55":2,"s:12:2:12:Infinity":2,"s:15:1:15:Infinity":3,"s:16:13:16:Infinity":4,"s:17:1:17:Infinity":5,"s:18:1:18:Infinity":6,"s:19:14:19:Infinity":7,"s:20:19:20:Infinity":8,"s:21:1:21:Infinity":9,"s:23:16:29:Infinity":10,"s:31:22:31:Infinity":11,"b:31:42:31:67:31:67:31:Infinity":3,"s:32:19:37:Infinity":12,"s:38:1:44:Infinity":13,"s:46:1:48:Infinity":14,"s:50:1:50:Infinity":15}}} -,"/Users/steipete/Projects/warelay/src/commands/webhook.ts": {"path":"/Users/steipete/Projects/warelay/src/commands/webhook.ts","statementMap":{"0":{"start":{"line":8,"column":14},"end":{"line":8,"column":null}},"1":{"start":{"line":9,"column":1},"end":{"line":11,"column":null}},"2":{"start":{"line":10,"column":2},"end":{"line":10,"column":null}},"3":{"start":{"line":12,"column":1},"end":{"line":12,"column":null}},"4":{"start":{"line":13,"column":16},"end":{"line":19,"column":null}},"5":{"start":{"line":20,"column":1},"end":{"line":20,"column":null}}},"fnMap":{"0":{"name":"webhookCommand","decl":{"start":{"line":3,"column":22},"end":{"line":3,"column":null}},"loc":{"start":{"line":7,"column":2},"end":{"line":21,"column":null}},"line":7}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":1},"end":{"line":11,"column":null}},"type":"if","locations":[{"start":{"line":9,"column":1},"end":{"line":11,"column":null}},{"start":{},"end":{}}],"line":9},"1":{"loc":{"start":{"line":9,"column":5},"end":{"line":9,"column":55}},"type":"binary-expr","locations":[{"start":{"line":9,"column":5},"end":{"line":9,"column":27}},{"start":{"line":9,"column":27},"end":{"line":9,"column":40}},{"start":{"line":9,"column":40},"end":{"line":9,"column":55}}],"line":9}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"f":{"0":0},"b":{"0":[0,0],"1":[0,0,0]},"meta":{"lastBranch":2,"lastFunction":1,"lastStatement":6,"seen":{"f:3:22:3:Infinity":0,"s:8:14:8:Infinity":0,"b:9:1:11:Infinity:undefined:undefined:undefined:undefined":0,"s:9:1:11:Infinity":1,"b:9:5:9:27:9:27:9:40:9:40:9:55":1,"s:10:2:10:Infinity":2,"s:12:1:12:Infinity":3,"s:13:16:19:Infinity":4,"s:20:1:20:Infinity":5}}} -,"/Users/steipete/Projects/warelay/test/mocks/baileys.ts": {"path":"/Users/steipete/Projects/warelay/test/mocks/baileys.ts","statementMap":{"0":{"start":{"line":22,"column":38},"end":{"line":22,"column":null}},"1":{"start":{"line":23,"column":22},"end":{"line":35,"column":null}},"2":{"start":{"line":24,"column":13},"end":{"line":24,"column":null}},"3":{"start":{"line":25,"column":34},"end":{"line":31,"column":null}},"4":{"start":{"line":32,"column":2},"end":{"line":32,"column":null}},"5":{"start":{"line":32,"column":21},"end":{"line":32,"column":73}},"6":{"start":{"line":33,"column":2},"end":{"line":33,"column":null}},"7":{"start":{"line":34,"column":2},"end":{"line":34,"column":null}},"8":{"start":{"line":37,"column":32},"end":{"line":47,"column":null}},"9":{"start":{"line":40,"column":56},"end":{"line":40,"column":60}},"10":{"start":{"line":42,"column":44},"end":{"line":45,"column":4}},"11":{"start":{"line":46,"column":30},"end":{"line":46,"column":null}},"12":{"start":{"line":49,"column":1},"end":{"line":52,"column":null}},"13":{"start":{"line":51,"column":20},"end":{"line":51,"column":null}}},"fnMap":{"0":{"name":"createMockBaileys","decl":{"start":{"line":21,"column":16},"end":{"line":21,"column":101}},"loc":{"start":{"line":21,"column":101},"end":{"line":53,"column":null}},"line":21},"1":{"name":"(anonymous_1)","decl":{"start":{"line":23,"column":28},"end":{"line":23,"column":29}},"loc":{"start":{"line":23,"column":47},"end":{"line":35,"column":2}},"line":23},"2":{"name":"(anonymous_2)","decl":{"start":{"line":32,"column":15},"end":{"line":32,"column":21}},"loc":{"start":{"line":32,"column":21},"end":{"line":32,"column":73}},"line":32},"3":{"name":"(anonymous_3)","decl":{"start":{"line":40,"column":37},"end":{"line":40,"column":38}},"loc":{"start":{"line":40,"column":56},"end":{"line":40,"column":60}},"line":40},"4":{"name":"(anonymous_4)","decl":{"start":{"line":42,"column":31},"end":{"line":42,"column":44}},"loc":{"start":{"line":42,"column":44},"end":{"line":45,"column":4}},"line":42},"5":{"name":"(anonymous_5)","decl":{"start":{"line":46,"column":13},"end":{"line":46,"column":14}},"loc":{"start":{"line":46,"column":30},"end":{"line":46,"column":null}},"line":46},"6":{"name":"(anonymous_6)","decl":{"start":{"line":51,"column":14},"end":{"line":51,"column":20}},"loc":{"start":{"line":51,"column":20},"end":{"line":51,"column":null}},"line":51}},"branchMap":{},"s":{"0":7,"1":7,"2":3,"3":3,"4":3,"5":3,"6":3,"7":3,"8":7,"9":4,"10":4,"11":0,"12":7,"13":3},"f":{"0":7,"1":3,"2":3,"3":4,"4":4,"5":0,"6":3},"b":{},"meta":{"lastBranch":0,"lastFunction":7,"lastStatement":14,"seen":{"f:21:16:21:101":0,"s:22:38:22:Infinity":0,"s:23:22:35:Infinity":1,"f:23:28:23:29":1,"s:24:13:24:Infinity":2,"s:25:34:31:Infinity":3,"s:32:2:32:Infinity":4,"f:32:15:32:21":2,"s:32:21:32:73":5,"s:33:2:33:Infinity":6,"s:34:2:34:Infinity":7,"s:37:32:47:Infinity":8,"f:40:37:40:38":3,"s:40:56:40:60":9,"f:42:31:42:44":4,"s:42:44:45:4":10,"f:46:13:46:14":5,"s:46:30:46:Infinity":11,"s:49:1:52:Infinity":12,"f:51:14:51:20":6,"s:51:20:51:Infinity":13}}} -,"/Users/steipete/Projects/warelay/test/mocks/twilio.ts": {"path":"/Users/steipete/Projects/warelay/test/mocks/twilio.ts","statementMap":{"0":{"start":{"line":18,"column":18},"end":{"line":18,"column":null}},"1":{"start":{"line":18,"column":43},"end":{"line":18,"column":62}},"2":{"start":{"line":19,"column":1},"end":{"line":19,"column":null}},"3":{"start":{"line":20,"column":1},"end":{"line":20,"column":null}},"4":{"start":{"line":22,"column":25},"end":{"line":25,"column":null}},"5":{"start":{"line":22,"column":50},"end":{"line":25,"column":3}},"6":{"start":{"line":26,"column":1},"end":{"line":26,"column":null}},"7":{"start":{"line":28,"column":18},"end":{"line":28,"column":null}},"8":{"start":{"line":28,"column":31},"end":{"line":28,"column":67}},"9":{"start":{"line":30,"column":30},"end":{"line":32,"column":null}},"10":{"start":{"line":30,"column":55},"end":{"line":32,"column":3}},"11":{"start":{"line":33,"column":1},"end":{"line":33,"column":null}},"12":{"start":{"line":35,"column":34},"end":{"line":43,"column":null}},"13":{"start":{"line":45,"column":17},"end":{"line":45,"column":null}},"14":{"start":{"line":45,"column":29},"end":{"line":45,"column":35}},"15":{"start":{"line":46,"column":2},"end":{"line":46,"column":null}},"16":{"start":{"line":48,"column":1},"end":{"line":48,"column":null}}},"fnMap":{"0":{"name":"createMockTwilio","decl":{"start":{"line":17,"column":16},"end":{"line":17,"column":35}},"loc":{"start":{"line":17,"column":35},"end":{"line":49,"column":null}},"line":17},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":24},"end":{"line":18,"column":25}},"loc":{"start":{"line":18,"column":43},"end":{"line":18,"column":62}},"line":18},"2":{"name":"(anonymous_2)","decl":{"start":{"line":22,"column":31},"end":{"line":22,"column":32}},"loc":{"start":{"line":22,"column":50},"end":{"line":25,"column":3}},"line":22},"3":{"name":"(anonymous_3)","decl":{"start":{"line":28,"column":24},"end":{"line":28,"column":31}},"loc":{"start":{"line":28,"column":31},"end":{"line":28,"column":67}},"line":28},"4":{"name":"(anonymous_4)","decl":{"start":{"line":30,"column":36},"end":{"line":30,"column":37}},"loc":{"start":{"line":30,"column":55},"end":{"line":32,"column":3}},"line":30},"5":{"name":"(anonymous_5)","decl":{"start":{"line":45,"column":23},"end":{"line":45,"column":29}},"loc":{"start":{"line":45,"column":29},"end":{"line":45,"column":35}},"line":45}},"branchMap":{},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":0,"6":1,"7":1,"8":0,"9":1,"10":0,"11":1,"12":1,"13":1,"14":2,"15":1,"16":1},"f":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":2},"b":{},"meta":{"lastBranch":0,"lastFunction":6,"lastStatement":17,"seen":{"f:17:16:17:35":0,"s:18:18:18:Infinity":0,"f:18:24:18:25":1,"s:18:43:18:62":1,"s:19:1:19:Infinity":2,"s:20:1:20:Infinity":3,"s:22:25:25:Infinity":4,"f:22:31:22:32":2,"s:22:50:25:3":5,"s:26:1:26:Infinity":6,"s:28:18:28:Infinity":7,"f:28:24:28:31":3,"s:28:31:28:67":8,"s:30:30:32:Infinity":9,"f:30:36:30:37":4,"s:30:55:32:3":10,"s:33:1:33:Infinity":11,"s:35:34:43:Infinity":12,"s:45:17:45:Infinity":13,"f:45:23:45:29":5,"s:45:29:45:35":14,"s:46:2:46:Infinity":15,"s:48:1:48:Infinity":16}}} -} diff --git a/coverage/favicon.png b/coverage/favicon.png deleted file mode 100644 index c1525b811a167671e9de1fa78aab9f5c0b61cef7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> - - - - Code coverage report for All files - - - - - - - - - -
-
-

All files

-
- -
- 58.62% - Statements - 581/991 -
- - -
- 48.09% - Branches - 341/709 -
- - -
- 70.27% - Functions - 104/148 -
- - -
- 61.17% - Lines - 561/917 -
- - -
-

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

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

All files src/commands

-
- -
- 38.18% - Statements - 21/55 -
- - -
- 45.23% - Branches - 19/42 -
- - -
- 50% - Functions - 2/4 -
- - -
- 37.73% - Lines - 20/53 -
- - -
-

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

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
send.ts -
-
72.22%13/1868.75%11/16100%1/175%12/16
status.ts -
-
53.33%8/1561.53%8/13100%1/153.33%8/15
up.ts -
-
0%0/160%0/80%0/10%0/16
webhook.ts -
-
0%0/60%0/50%0/10%0/6
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/src/commands/send.ts.html b/coverage/src/commands/send.ts.html deleted file mode 100644 index a15659070..000000000 --- a/coverage/src/commands/send.ts.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - Code coverage report for src/commands/send.ts - - - - - - - - - -
-
-

All files / src/commands send.ts

-
- -
- 72.22% - Statements - 13/18 -
- - -
- 68.75% - Branches - 11/16 -
- - -
- 100% - Functions - 1/1 -
- - -
- 75% - Lines - 12/16 -
- - -
-

- 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  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -2x -  -2x -  -  -2x -  -  -  -2x -1x -  -  -1x -1x -  -  -1x -1x -1x -  -  -  -  -  -  -  -  - 
import { info } from "../globals.js";
-import type { CliDeps, Provider, RuntimeEnv } from "../index.js";
- 
-export async function sendCommand(
-	opts: {
-		to: string;
-		message: string;
-		wait: string;
-		poll: string;
-		provider: Provider;
-	},
-	deps: CliDeps,
-	runtime: RuntimeEnv,
-) {
-	deps.assertProvider(opts.provider);
-	const waitSeconds = Number.parseInt(opts.wait, 10);
-	const pollSeconds = Number.parseInt(opts.poll, 10);
- 
-	Iif (Number.isNaN(waitSeconds) || waitSeconds < 0) {
-		throw new Error("Wait must be >= 0 seconds");
-	}
-	Iif (Number.isNaN(pollSeconds) || pollSeconds <= 0) {
-		throw new Error("Poll must be > 0 seconds");
-	}
- 
-	if (opts.provider === "web") {
-		Iif (waitSeconds !== 0) {
-			runtime.log(info("Wait/poll are Twilio-only; ignored for provider=web."));
-		}
-		await deps.sendMessageWeb(opts.to, opts.message, { verbose: false });
-		return;
-	}
- 
-	const result = await deps.sendMessage(opts.to, opts.message, runtime);
-	Iif (!result) return;
-	Eif (waitSeconds === 0) return;
-	await deps.waitForFinalStatus(
-		result.client,
-		result.sid,
-		waitSeconds,
-		pollSeconds,
-		runtime,
-	);
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/src/commands/status.ts.html b/coverage/src/commands/status.ts.html deleted file mode 100644 index 7dbb05d7e..000000000 --- a/coverage/src/commands/status.ts.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - Code coverage report for src/commands/status.ts - - - - - - - - - -
-
-

All files / src/commands status.ts

-
- -
- 53.33% - Statements - 8/15 -
- - -
- 61.53% - Branches - 8/13 -
- - -
- 100% - Functions - 1/1 -
- - -
- 53.33% - Lines - 8/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  -  -  -  -  -  -  -  -1x -1x -1x -  -  -1x -  -  -  -1x -1x -1x -1x -  -  -  -  -  -  -  -  -  - 
import { formatMessageLine } from "../index.js";
-import type { CliDeps, RuntimeEnv } from "../index.js";
- 
-export async function statusCommand(
-	opts: { limit: string; lookback: string; json?: boolean },
-	deps: CliDeps,
-	runtime: RuntimeEnv,
-) {
-	const limit = Number.parseInt(opts.limit, 10);
-	const lookbackMinutes = Number.parseInt(opts.lookback, 10);
-	Iif (Number.isNaN(limit) || limit <= 0 || limit > 200) {
-		throw new Error("limit must be between 1 and 200");
-	}
-	Iif (Number.isNaN(lookbackMinutes) || lookbackMinutes <= 0) {
-		throw new Error("lookback must be > 0 minutes");
-	}
- 
-	const messages = await deps.listRecentMessages(lookbackMinutes, limit);
-	Eif (opts.json) {
-		runtime.log(JSON.stringify(messages, null, 2));
-		return;
-	}
-	if (messages.length === 0) {
-		runtime.log("No messages found in the requested window.");
-		return;
-	}
-	for (const m of messages) {
-		runtime.log(formatMessageLine(m));
-	}
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/src/commands/up.ts.html b/coverage/src/commands/up.ts.html deleted file mode 100644 index 246873571..000000000 --- a/coverage/src/commands/up.ts.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - Code coverage report for src/commands/up.ts - - - - - - - - - -
-
-

All files / src/commands up.ts

-
- -
- 0% - Statements - 0/16 -
- - -
- 0% - Branches - 0/8 -
- - -
- 0% - Functions - 0/1 -
- - -
- 0% - Lines - 0/16 -
- - -
-

- 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  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import type { CliDeps, RuntimeEnv } from "../index.js";
-import { waitForever as defaultWaitForever } from "../index.js";
- 
-export async function upCommand(
-	opts: { port: string; path: string; verbose?: boolean; yes?: boolean },
-	deps: CliDeps,
-	runtime: RuntimeEnv,
-	waiter: typeof defaultWaitForever = defaultWaitForever,
-) {
-	const port = Number.parseInt(opts.port, 10);
-	if (Number.isNaN(port) || port <= 0 || port >= 65536) {
-		throw new Error("Port must be between 1 and 65535");
-	}
- 
-	await deps.ensurePortAvailable(port);
-	const env = deps.readEnv(runtime);
-	await deps.ensureBinary("tailscale", undefined, runtime);
-	await deps.ensureFunnel(port, undefined, runtime);
-	const host = await deps.getTailnetHostname();
-	const publicUrl = `https://${host}${opts.path}`;
-	runtime.log(`🌐 Public webhook URL (via Funnel): ${publicUrl}`);
- 
-	const server = await deps.startWebhook(
-		port,
-		opts.path,
-		undefined,
-		Boolean(opts.verbose),
-		runtime,
-	);
- 
-	const twilioClient = deps.createClient ? deps.createClient(env) : undefined;
-	const senderSid = await deps.findWhatsappSenderSid(
-		twilioClient as any,
-		env.whatsappFrom,
-		env.whatsappSenderSid,
-		runtime,
-	);
-	await deps.updateWebhook(
-		twilioClient as any,
-		senderSid,
-		publicUrl,
-		"POST",
-		runtime,
-	);
- 
-	runtime.log(
-		"\nSetup complete. Leave this process running to keep the webhook online. Ctrl+C to stop.",
-	);
- 
-	return { server, publicUrl, senderSid, waiter };
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/src/commands/webhook.ts.html b/coverage/src/commands/webhook.ts.html deleted file mode 100644 index 9a7b60ab9..000000000 --- a/coverage/src/commands/webhook.ts.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - Code coverage report for src/commands/webhook.ts - - - - - - - - - -
-
-

All files / src/commands webhook.ts

-
- -
- 0% - Statements - 0/6 -
- - -
- 0% - Branches - 0/5 -
- - -
- 0% - Functions - 0/1 -
- - -
- 0% - Lines - 0/6 -
- - -
-

- 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  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import type { CliDeps, RuntimeEnv } from "../index.js";
- 
-export async function webhookCommand(
-	opts: { port: string; path: string; reply?: string; verbose?: boolean; yes?: boolean },
-	deps: CliDeps,
-	runtime: RuntimeEnv,
-) {
-	const port = Number.parseInt(opts.port, 10);
-	if (Number.isNaN(port) || port <= 0 || port >= 65536) {
-		throw new Error("Port must be between 1 and 65535");
-	}
-	await deps.ensurePortAvailable(port);
-	const server = await deps.startWebhook(
-		port,
-		opts.path,
-		opts.reply,
-		Boolean(opts.verbose),
-		runtime,
-	);
-	return server;
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/src/globals.ts.html b/coverage/src/globals.ts.html deleted file mode 100644 index 49c2597b4..000000000 --- a/coverage/src/globals.ts.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - Code coverage report for src/globals.ts - - - - - - - - - -
-
-

All files / src globals.ts

-
- -
- 100% - Statements - 12/12 -
- - -
- 100% - Branches - 2/2 -
- - -
- 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  -  -5x -5x -  -  -4x -  -  -  -6x -  -  -  -19x -  -  -  -4x -  -  -  -2x -  -  -5x -5x -5x -5x - 
import chalk from "chalk";
- 
-let globalVerbose = false;
-let globalYes = false;
- 
-export function setVerbose(v: boolean) {
-	globalVerbose = v;
-}
- 
-export function isVerbose() {
-	return globalVerbose;
-}
- 
-export function logVerbose(message: string) {
-	if (globalVerbose) console.log(chalk.gray(message));
-}
- 
-export function setYes(v: boolean) {
-	globalYes = v;
-}
- 
-export function isYes() {
-	return globalYes;
-}
- 
-export const success = chalk.green;
-export const warn = chalk.yellow;
-export const info = chalk.cyan;
-export const danger = chalk.red;
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/src/index.html b/coverage/src/index.html deleted file mode 100644 index 9339165fb..000000000 --- a/coverage/src/index.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - - - Code coverage report for src - - - - - - - - - -
-
-

All files src

-
- -
- 59% - Statements - 534/905 -
- - -
- 48.27% - Branches - 322/667 -
- - -
- 71.75% - Functions - 94/131 -
- - -
- 61.62% - Lines - 517/839 -
- - -
-

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

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
globals.ts -
-
100%12/12100%2/2100%5/5100%11/11
index.ts -
-
56.37%420/74547.87%271/56665.34%66/10158.53%408/697
provider-web.ts -
-
64%80/12543.67%38/8787.5%14/1670.53%79/112
utils.ts -
-
95.65%22/2391.66%11/12100%9/9100%19/19
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/src/index.ts.html b/coverage/src/index.ts.html deleted file mode 100644 index 639524afc..000000000 --- a/coverage/src/index.ts.html +++ /dev/null @@ -1,6475 +0,0 @@ - - - - - - Code coverage report for src/index.ts - - - - - - - - - -
-
-

All files / src index.ts

-
- -
- 56.37% - Statements - 420/745 -
- - -
- 47.87% - Branches - 271/566 -
- - -
- 65.34% - Functions - 66/101 -
- - -
- 58.53% - Lines - 408/697 -
- - -
-

- 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 -843 -844 -845 -846 -847 -848 -849 -850 -851 -852 -853 -854 -855 -856 -857 -858 -859 -860 -861 -862 -863 -864 -865 -866 -867 -868 -869 -870 -871 -872 -873 -874 -875 -876 -877 -878 -879 -880 -881 -882 -883 -884 -885 -886 -887 -888 -889 -890 -891 -892 -893 -894 -895 -896 -897 -898 -899 -900 -901 -902 -903 -904 -905 -906 -907 -908 -909 -910 -911 -912 -913 -914 -915 -916 -917 -918 -919 -920 -921 -922 -923 -924 -925 -926 -927 -928 -929 -930 -931 -932 -933 -934 -935 -936 -937 -938 -939 -940 -941 -942 -943 -944 -945 -946 -947 -948 -949 -950 -951 -952 -953 -954 -955 -956 -957 -958 -959 -960 -961 -962 -963 -964 -965 -966 -967 -968 -969 -970 -971 -972 -973 -974 -975 -976 -977 -978 -979 -980 -981 -982 -983 -984 -985 -986 -987 -988 -989 -990 -991 -992 -993 -994 -995 -996 -997 -998 -999 -1000 -1001 -1002 -1003 -1004 -1005 -1006 -1007 -1008 -1009 -1010 -1011 -1012 -1013 -1014 -1015 -1016 -1017 -1018 -1019 -1020 -1021 -1022 -1023 -1024 -1025 -1026 -1027 -1028 -1029 -1030 -1031 -1032 -1033 -1034 -1035 -1036 -1037 -1038 -1039 -1040 -1041 -1042 -1043 -1044 -1045 -1046 -1047 -1048 -1049 -1050 -1051 -1052 -1053 -1054 -1055 -1056 -1057 -1058 -1059 -1060 -1061 -1062 -1063 -1064 -1065 -1066 -1067 -1068 -1069 -1070 -1071 -1072 -1073 -1074 -1075 -1076 -1077 -1078 -1079 -1080 -1081 -1082 -1083 -1084 -1085 -1086 -1087 -1088 -1089 -1090 -1091 -1092 -1093 -1094 -1095 -1096 -1097 -1098 -1099 -1100 -1101 -1102 -1103 -1104 -1105 -1106 -1107 -1108 -1109 -1110 -1111 -1112 -1113 -1114 -1115 -1116 -1117 -1118 -1119 -1120 -1121 -1122 -1123 -1124 -1125 -1126 -1127 -1128 -1129 -1130 -1131 -1132 -1133 -1134 -1135 -1136 -1137 -1138 -1139 -1140 -1141 -1142 -1143 -1144 -1145 -1146 -1147 -1148 -1149 -1150 -1151 -1152 -1153 -1154 -1155 -1156 -1157 -1158 -1159 -1160 -1161 -1162 -1163 -1164 -1165 -1166 -1167 -1168 -1169 -1170 -1171 -1172 -1173 -1174 -1175 -1176 -1177 -1178 -1179 -1180 -1181 -1182 -1183 -1184 -1185 -1186 -1187 -1188 -1189 -1190 -1191 -1192 -1193 -1194 -1195 -1196 -1197 -1198 -1199 -1200 -1201 -1202 -1203 -1204 -1205 -1206 -1207 -1208 -1209 -1210 -1211 -1212 -1213 -1214 -1215 -1216 -1217 -1218 -1219 -1220 -1221 -1222 -1223 -1224 -1225 -1226 -1227 -1228 -1229 -1230 -1231 -1232 -1233 -1234 -1235 -1236 -1237 -1238 -1239 -1240 -1241 -1242 -1243 -1244 -1245 -1246 -1247 -1248 -1249 -1250 -1251 -1252 -1253 -1254 -1255 -1256 -1257 -1258 -1259 -1260 -1261 -1262 -1263 -1264 -1265 -1266 -1267 -1268 -1269 -1270 -1271 -1272 -1273 -1274 -1275 -1276 -1277 -1278 -1279 -1280 -1281 -1282 -1283 -1284 -1285 -1286 -1287 -1288 -1289 -1290 -1291 -1292 -1293 -1294 -1295 -1296 -1297 -1298 -1299 -1300 -1301 -1302 -1303 -1304 -1305 -1306 -1307 -1308 -1309 -1310 -1311 -1312 -1313 -1314 -1315 -1316 -1317 -1318 -1319 -1320 -1321 -1322 -1323 -1324 -1325 -1326 -1327 -1328 -1329 -1330 -1331 -1332 -1333 -1334 -1335 -1336 -1337 -1338 -1339 -1340 -1341 -1342 -1343 -1344 -1345 -1346 -1347 -1348 -1349 -1350 -1351 -1352 -1353 -1354 -1355 -1356 -1357 -1358 -1359 -1360 -1361 -1362 -1363 -1364 -1365 -1366 -1367 -1368 -1369 -1370 -1371 -1372 -1373 -1374 -1375 -1376 -1377 -1378 -1379 -1380 -1381 -1382 -1383 -1384 -1385 -1386 -1387 -1388 -1389 -1390 -1391 -1392 -1393 -1394 -1395 -1396 -1397 -1398 -1399 -1400 -1401 -1402 -1403 -1404 -1405 -1406 -1407 -1408 -1409 -1410 -1411 -1412 -1413 -1414 -1415 -1416 -1417 -1418 -1419 -1420 -1421 -1422 -1423 -1424 -1425 -1426 -1427 -1428 -1429 -1430 -1431 -1432 -1433 -1434 -1435 -1436 -1437 -1438 -1439 -1440 -1441 -1442 -1443 -1444 -1445 -1446 -1447 -1448 -1449 -1450 -1451 -1452 -1453 -1454 -1455 -1456 -1457 -1458 -1459 -1460 -1461 -1462 -1463 -1464 -1465 -1466 -1467 -1468 -1469 -1470 -1471 -1472 -1473 -1474 -1475 -1476 -1477 -1478 -1479 -1480 -1481 -1482 -1483 -1484 -1485 -1486 -1487 -1488 -1489 -1490 -1491 -1492 -1493 -1494 -1495 -1496 -1497 -1498 -1499 -1500 -1501 -1502 -1503 -1504 -1505 -1506 -1507 -1508 -1509 -1510 -1511 -1512 -1513 -1514 -1515 -1516 -1517 -1518 -1519 -1520 -1521 -1522 -1523 -1524 -1525 -1526 -1527 -1528 -1529 -1530 -1531 -1532 -1533 -1534 -1535 -1536 -1537 -1538 -1539 -1540 -1541 -1542 -1543 -1544 -1545 -1546 -1547 -1548 -1549 -1550 -1551 -1552 -1553 -1554 -1555 -1556 -1557 -1558 -1559 -1560 -1561 -1562 -1563 -1564 -1565 -1566 -1567 -1568 -1569 -1570 -1571 -1572 -1573 -1574 -1575 -1576 -1577 -1578 -1579 -1580 -1581 -1582 -1583 -1584 -1585 -1586 -1587 -1588 -1589 -1590 -1591 -1592 -1593 -1594 -1595 -1596 -1597 -1598 -1599 -1600 -1601 -1602 -1603 -1604 -1605 -1606 -1607 -1608 -1609 -1610 -1611 -1612 -1613 -1614 -1615 -1616 -1617 -1618 -1619 -1620 -1621 -1622 -1623 -1624 -1625 -1626 -1627 -1628 -1629 -1630 -1631 -1632 -1633 -1634 -1635 -1636 -1637 -1638 -1639 -1640 -1641 -1642 -1643 -1644 -1645 -1646 -1647 -1648 -1649 -1650 -1651 -1652 -1653 -1654 -1655 -1656 -1657 -1658 -1659 -1660 -1661 -1662 -1663 -1664 -1665 -1666 -1667 -1668 -1669 -1670 -1671 -1672 -1673 -1674 -1675 -1676 -1677 -1678 -1679 -1680 -1681 -1682 -1683 -1684 -1685 -1686 -1687 -1688 -1689 -1690 -1691 -1692 -1693 -1694 -1695 -1696 -1697 -1698 -1699 -1700 -1701 -1702 -1703 -1704 -1705 -1706 -1707 -1708 -1709 -1710 -1711 -1712 -1713 -1714 -1715 -1716 -1717 -1718 -1719 -1720 -1721 -1722 -1723 -1724 -1725 -1726 -1727 -1728 -1729 -1730 -1731 -1732 -1733 -1734 -1735 -1736 -1737 -1738 -1739 -1740 -1741 -1742 -1743 -1744 -1745 -1746 -1747 -1748 -1749 -1750 -1751 -1752 -1753 -1754 -1755 -1756 -1757 -1758 -1759 -1760 -1761 -1762 -1763 -1764 -1765 -1766 -1767 -1768 -1769 -1770 -1771 -1772 -1773 -1774 -1775 -1776 -1777 -1778 -1779 -1780 -1781 -1782 -1783 -1784 -1785 -1786 -1787 -1788 -1789 -1790 -1791 -1792 -1793 -1794 -1795 -1796 -1797 -1798 -1799 -1800 -1801 -1802 -1803 -1804 -1805 -1806 -1807 -1808 -1809 -1810 -1811 -1812 -1813 -1814 -1815 -1816 -1817 -1818 -1819 -1820 -1821 -1822 -1823 -1824 -1825 -1826 -1827 -1828 -1829 -1830 -1831 -1832 -1833 -1834 -1835 -1836 -1837 -1838 -1839 -1840 -1841 -1842 -1843 -1844 -1845 -1846 -1847 -1848 -1849 -1850 -1851 -1852 -1853 -1854 -1855 -1856 -1857 -1858 -1859 -1860 -1861 -1862 -1863 -1864 -1865 -1866 -1867 -1868 -1869 -1870 -1871 -1872 -1873 -1874 -1875 -1876 -1877 -1878 -1879 -1880 -1881 -1882 -1883 -1884 -1885 -1886 -1887 -1888 -1889 -1890 -1891 -1892 -1893 -1894 -1895 -1896 -1897 -1898 -1899 -1900 -1901 -1902 -1903 -1904 -1905 -1906 -1907 -1908 -1909 -1910 -1911 -1912 -1913 -1914 -1915 -1916 -1917 -1918 -1919 -1920 -1921 -1922 -1923 -1924 -1925 -1926 -1927 -1928 -1929 -1930 -1931 -1932 -1933 -1934 -1935 -1936 -1937 -1938 -1939 -1940 -1941 -1942 -1943 -1944 -1945 -1946 -1947 -1948 -1949 -1950 -1951 -1952 -1953 -1954 -1955 -1956 -1957 -1958 -1959 -1960 -1961 -1962 -1963 -1964 -1965 -1966 -1967 -1968 -1969 -1970 -1971 -1972 -1973 -1974 -1975 -1976 -1977 -1978 -1979 -1980 -1981 -1982 -1983 -1984 -1985 -1986 -1987 -1988 -1989 -1990 -1991 -1992 -1993 -1994 -1995 -1996 -1997 -1998 -1999 -2000 -2001 -2002 -2003 -2004 -2005 -2006 -2007 -2008 -2009 -2010 -2011 -2012 -2013 -2014 -2015 -2016 -2017 -2018 -2019 -2020 -2021 -2022 -2023 -2024 -2025 -2026 -2027 -2028 -2029 -2030 -2031 -2032 -2033 -2034 -2035 -2036 -2037 -2038 -2039 -2040 -2041 -2042 -2043 -2044 -2045 -2046 -2047 -2048 -2049 -2050 -2051 -2052 -2053 -2054 -2055 -2056 -2057 -2058 -2059 -2060 -2061 -2062 -2063 -2064 -2065 -2066 -2067 -2068 -2069 -2070 -2071 -2072 -2073 -2074 -2075 -2076 -2077 -2078 -2079 -2080 -2081 -2082 -2083 -2084 -2085 -2086 -2087 -2088 -2089 -2090 -2091 -2092 -2093 -2094 -2095 -2096 -2097 -2098 -2099 -2100 -2101 -2102 -2103 -2104 -2105 -2106 -2107 -2108 -2109 -2110 -2111 -2112 -2113 -2114 -2115 -2116 -2117 -2118 -2119 -2120 -2121 -2122 -2123 -2124 -2125 -2126 -2127 -2128 -2129 -2130 -2131  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -1x -1x -  -  -  -3x -  -  -  -  -  -  -  -  -  -9x -  -  -  -  -  -9x -  -  -  -  -  -9x -  -  -  -  -  -  -  -  -  -  -9x -9x -  -  -  -  -  -  -  -  -  -  -  -  -9x -  -  -9x -  -  -  -9x -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -1x -1x -  -  -  -  -1x -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -  -  -2x -2x -2x -2x -1x -  -  -2x -1x -  -2x -  -  -2x -  -  -  -  -  -2x -2x -2x -2x -2x -  -  -  -  -  -  -  -  -  -  -2x -2x -2x -2x -  -  -  -  -1x -  -  -  -  -1x -1x -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -  -1x -1x -1x -  -1x -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -2x -2x -2x -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -14x -6x -6x -  -  -  -  -  -  -  -  -  -  -  -3x -3x -3x -  -  -6x -2x -2x -  -  -  -4x -4x -4x -4x -3x -  -  -  -  -1x -  -  -  -4x -4x -  -  -  -4x -4x -4x -  -  -  -  -  -  -  -  -  -6x -6x -6x -6x -6x -6x -4x -4x -4x -  -  -  -6x -  -6x -  -  -6x -6x -6x -  -  -6x -  -  -6x -4x -4x -4x -4x -  -  -  -  -4x -4x -1x -1x -1x -  -  -  -4x -4x -4x -4x -4x -  -4x -3x -  -1x -1x -  -  -4x -4x -  -  -5x -  -  -  -  -  -  -  -6x -  -  -6x -  -  -6x -  -  -  -  -  -  -6x -6x -2x -2x -1x -  -  -1x -  -  -4x -  -  -  -  -4x -2x -2x -2x -  -  -2x -2x -4x -2x -  -  -2x -2x -  -  -  -2x -2x -  -  -4x -2x -2x -2x -2x -  -  -  -  -  -  -2x -2x -2x -2x -  -2x -2x -2x -  -  -2x -  -  -2x -2x -  -  -  -  -  -2x -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -2x -  -  -1x -  -  -  -1x -  -1x -1x -1x -  -  -  -  -  -  -  -  -1x -  -  -  -1x -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -2x -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -3x -1x -1x -  -2x -2x -2x -  -  -  -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -2x -2x -  -2x -2x -  -  -  -  -  -2x -  -  -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -3x -  -  -  -  -  -  -  -  -  -2x -2x -832x -832x -832x -1x -1x -  -831x -830x -  -  -  -  -830x -  -831x -  -1x -  -  -  -  -  -  -  -  -  -  -  -1x -  -1x -1x -  -  -1x -1x -1x -1x -  -  -1x -1x -1x -  -  -  -  -1x -  -1x -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -1x -  -  -  -  -1x -1x -  -1x -1x -1x -  -  -1x -  -  -1x -  -  -  -  -1x -1x -1x -  -  -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -  -2x -  -  -  -2x -2x -  -  -2x -1x -  -  -  -  -  -  -  -  -  -1x -  -1x -  -1x -1x -  -  -  -1x -  -  -  -1x -1x -  -  -  -  -  -  -  -  -1x -  -1x -  -1x -  -1x -  -  -  -1x -  -  -  -1x -1x -  -  -  -  -  -  -  -  -  -2x -2x -  -  -1x -  -  -2x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -1x -  -1x -1x -1x -1x -1x -1x -1x -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -1x -  -  -1x -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -2x -1x -1x -  -1x -  -  -1x -1x -  -  -  -1x -  -  -1x -  -1x -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -1x -  -  -  -1x -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -2x -2x -2x -2x -  -  -  -  -2x -  -2x -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -1x -  -  -  -1x -1x -1x -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -  -  -1x -1x -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -1x -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -3x -3x -3x -3x -3x -3x -  -  -  -  -  -  -  -2x -2x -  -  -2x -2x -1x -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -1x -1x -  -1x -  -  -  -1x -1x -1x -  -  -  -  -1x -1x -  -  -  -  -  -1x -1x -1x -1x -  -  -  -  -  -1x -1x -  -  -  -  -  -  -1x -1x -1x -1x -1x -1x -1x -1x -  -  -  -  -  -1x -1x -  -  -  -  -  -  -  -  -  -  -1x -  -  -1x -  -  -1x -  -1x -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -1x -  -  -  -  -1x -  -  -  -  -  -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -3x -3x -7x -6x -6x -  -3x -  -  -  -3x -3x -3x -3x -  -  -  -  -1x -  -1x -  -  -  -  -1x -  -1x -  -  -1x -  -1x -1x -  -  -  -  -  -  -  -2x -2x -2x -2x -  -  -2x -2x -  -  -  -  -2x -  -  -  -  -  -2x -4x -  -  -  -  -  -  -  -  -  -  -  -  -2x -  -  -3x -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -2x -2x -2x -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -3x -  -3x -  -  - 
#!/usr/bin/env node
-import { execFile, spawn } from "node:child_process";
-import crypto from "node:crypto";
-import fs from "node:fs";
-import net from "node:net";
-import os from "node:os";
-import path from "node:path";
-import process, { stdin as input, stdout as output } from "node:process";
-import readline from "node:readline/promises";
-import { fileURLToPath } from "node:url";
-import { promisify } from "node:util";
- 
-import bodyParser from "body-parser";
-import chalk from "chalk";
-import { Command } from "commander";
-import dotenv from "dotenv";
-import express, { type Request, type Response } from "express";
-import JSON5 from "json5";
-import Twilio from "twilio";
-import type { MessageInstance } from "twilio/lib/rest/api/v2010/account/message.js";
-import { z } from "zod";
- 
-import {
-	danger,
-	info,
-	isVerbose,
-	isYes,
-	logVerbose,
-	setVerbose,
-	setYes,
-	success,
-	warn,
-} from "./globals.js";
-import { loginWeb, monitorWebInbox, sendMessageWeb } from "./provider-web.js";
-import { sendCommand } from "./commands/send.js";
-import { statusCommand } from "./commands/status.js";
-import { webhookCommand } from "./commands/webhook.js";
-import { upCommand } from "./commands/up.js";
-import {
-	assertProvider,
-	CONFIG_DIR,
-	normalizeE164,
-	normalizePath,
-	sleep,
-	toWhatsappJid,
-	withWhatsAppPrefix,
-} from "./utils.js";
- 
-dotenv.config({ quiet: true });
- 
-const program = new Command();
- 
-type AuthMode =
-	| { accountSid: string; authToken: string }
-	| { accountSid: string; apiKey: string; apiSecret: string };
- 
-type CliDeps = {
-	sendMessage: typeof sendMessage;
-	sendMessageWeb: typeof sendMessageWeb;
-	waitForFinalStatus: typeof waitForFinalStatus;
-	assertProvider: typeof assertProvider;
-	createClient?: typeof createClient;
-	monitor: typeof monitor;
-	listRecentMessages: typeof listRecentMessages;
-	ensurePortAvailable: typeof ensurePortAvailable;
-	startWebhook: typeof startWebhook;
-	waitForever: typeof waitForever;
-	ensureBinary: typeof ensureBinary;
-	ensureFunnel: typeof ensureFunnel;
-	getTailnetHostname: typeof getTailnetHostname;
-	readEnv: typeof readEnv;
-	findWhatsappSenderSid: typeof findWhatsappSenderSid;
-	updateWebhook: typeof updateWebhook;
-	handlePortError: typeof handlePortError;
-	monitorWebProvider: typeof monitorWebProvider;
-};
- 
-function createDefaultDeps(): CliDeps {
-	return {
-		sendMessage,
-		sendMessageWeb,
-		waitForFinalStatus,
-		assertProvider,
-		createClient,
-		monitor,
-		listRecentMessages,
-		ensurePortAvailable,
-		startWebhook,
-		waitForever,
-		ensureBinary,
-		ensureFunnel,
-		getTailnetHostname,
-		readEnv,
-		findWhatsappSenderSid,
-		updateWebhook,
-		handlePortError,
-		monitorWebProvider,
-	};
-}
- 
-type TwilioRequestOptions = {
-	method: "get" | "post";
-	uri: string;
-	params?: Record<string, string | number>;
-	form?: Record<string, string>;
-	body?: unknown;
-	contentType?: string;
-};
- 
-type TwilioSender = { sid: string; sender_id: string };
- 
-type TwilioRequestResponse = {
-	data?: {
-		senders?: TwilioSender[];
-	};
-};
- 
-type IncomingNumber = {
-	sid: string;
-	phoneNumber: string;
-	smsUrl?: string;
-};
- 
-type TwilioChannelsSender = {
-	sid?: string;
-	senderId?: string;
-	sender_id?: string;
-	webhook?: {
-		callback_url?: string;
-		callback_method?: string;
-		fallback_url?: string;
-		fallback_method?: string;
-	};
-};
- 
-type ChannelSenderUpdater = {
-	update: (params: Record<string, string>) => Promise<unknown>;
-};
- 
-type IncomingPhoneNumberUpdater = {
-	update: (params: Record<string, string>) => Promise<unknown>;
-};
- 
-type IncomingPhoneNumbersClient = {
-	list: (params: {
-		phoneNumber: string;
-		limit?: number;
-	}) => Promise<IncomingNumber[]>;
-	get: (sid: string) => IncomingPhoneNumberUpdater;
-} & ((sid: string) => IncomingPhoneNumberUpdater);
- 
-type TwilioSenderListClient = {
-	messaging: {
-		v2: {
-			channelsSenders: {
-				list: (params: {
-					channel: string;
-					pageSize: number;
-				}) => Promise<TwilioChannelsSender[]>;
-				(
-					sid: string,
-				): ChannelSenderUpdater & {
-					fetch: () => Promise<TwilioChannelsSender>;
-				};
-			};
-		};
-		v1: {
-			services: (sid: string) => {
-				update: (params: Record<string, string>) => Promise<unknown>;
-				fetch: () => Promise<{ inboundRequestUrl?: string }>;
-			};
-		};
-	};
-	incomingPhoneNumbers: IncomingPhoneNumbersClient;
-};
- 
-type TwilioRequester = {
-	request: (options: TwilioRequestOptions) => Promise<TwilioRequestResponse>;
-};
- 
-type EnvConfig = {
-	accountSid: string;
-	whatsappFrom: string;
-	whatsappSenderSid?: string;
-	auth: AuthMode;
-};
- 
-type RuntimeEnv = {
-	log: typeof console.log;
-	error: typeof console.error;
-	exit: (code: number) => never;
-};
- 
-const defaultRuntime: RuntimeEnv = {
-	log: console.log,
-	error: console.error,
-	exit: (code) => {
-		process.exit(code);
-		throw new Error("unreachable"); // satisfies tests when mocked
-	},
-};
- 
-const EnvSchema = z
-	.object({
-		TWILIO_ACCOUNT_SID: z.string().min(1, "TWILIO_ACCOUNT_SID required"),
-		TWILIO_WHATSAPP_FROM: z.string().min(1, "TWILIO_WHATSAPP_FROM required"),
-		TWILIO_SENDER_SID: z.string().optional(),
-		TWILIO_AUTH_TOKEN: z.string().optional(),
-		TWILIO_API_KEY: z.string().optional(),
-		TWILIO_API_SECRET: z.string().optional(),
-	})
-	.superRefine((val, ctx) => {
-		Iif (val.TWILIO_API_KEY && !val.TWILIO_API_SECRET) {
-			ctx.addIssue({
-				code: "custom",
-				message: "TWILIO_API_SECRET required when TWILIO_API_KEY is set",
-			});
-		}
-		Iif (val.TWILIO_API_SECRET && !val.TWILIO_API_KEY) {
-			ctx.addIssue({
-				code: "custom",
-				message: "TWILIO_API_KEY required when TWILIO_API_SECRET is set",
-			});
-		}
-		Iif (!val.TWILIO_AUTH_TOKEN && !(val.TWILIO_API_KEY && val.TWILIO_API_SECRET)) {
-			ctx.addIssue({
-				code: "custom",
-				message:
-					"Provide TWILIO_AUTH_TOKEN or both TWILIO_API_KEY and TWILIO_API_SECRET",
-			});
-		}
-	});
- 
-function readEnv(runtime: RuntimeEnv = defaultRuntime): EnvConfig {
-	// Load and validate Twilio auth + sender configuration from env.
-	const parsed = EnvSchema.safeParse(process.env);
-	Iif (!parsed.success) {
-		runtime.error("Invalid environment configuration:");
-		parsed.error.issues.forEach((iss) => runtime.error(`- ${iss.message}`));
-		runtime.exit(1);
-	}
- 
-	const {
-		TWILIO_ACCOUNT_SID: accountSid,
-		TWILIO_WHATSAPP_FROM: whatsappFrom,
-		TWILIO_SENDER_SID: whatsappSenderSid,
-		TWILIO_AUTH_TOKEN: authToken,
-		TWILIO_API_KEY: apiKey,
-		TWILIO_API_SECRET: apiSecret,
-	} = parsed.data;
- 
-	const auth: AuthMode =
-		apiKey && apiSecret
-			? { accountSid, apiKey, apiSecret }
-			: { accountSid, authToken: authToken! };
- 
-	return {
-		accountSid,
-		whatsappFrom,
-		whatsappSenderSid,
-		auth,
-	};
-}
- 
-const execFileAsync = promisify(execFile);
- 
-type ExecResult = { stdout: string; stderr: string };
- 
-type ExecOptions = { maxBuffer?: number; timeoutMs?: number };
- 
-async function runExec(
-	command: string,
-	args: string[],
-	{ maxBuffer = 2_000_000, timeoutMs }: ExecOptions = {},
-): Promise<ExecResult> {
-	// Thin wrapper around execFile with utf8 output.
-	Iif (isVerbose()) {
-		console.log(`$ ${command} ${args.join(" ")}`);
-	}
-	try {
-		const { stdout, stderr } = await execFileAsync(command, args, {
-			maxBuffer,
-			encoding: "utf8",
-			timeout: timeoutMs,
-		});
-		Iif (isVerbose()) {
-			if (stdout.trim()) console.log(stdout.trim());
-			if (stderr.trim()) console.error(stderr.trim());
-		}
-		return { stdout, stderr };
-	} catch (err) {
-		if (isVerbose()) {
-			console.error(danger(`Command failed: ${command} ${args.join(" ")}`));
-		}
-		throw err;
-	}
-}
- 
-type SpawnResult = {
-	stdout: string;
-	stderr: string;
-	code: number | null;
-	signal: NodeJS.Signals | null;
-	killed: boolean;
-};
- 
-async function runCommandWithTimeout(
-	argv: string[],
-	timeoutMs: number,
-): Promise<SpawnResult> {
-	// Spawn with inherited stdin (TTY) so tools like `claude` don't hang.
-	return await new Promise((resolve, reject) => {
-		const child = spawn(argv[0], argv.slice(1), {
-			stdio: ["inherit", "pipe", "pipe"],
-		});
-		let stdout = "";
-		let stderr = "";
-		let settled = false;
-		const timer = setTimeout(() => {
-			child.kill("SIGKILL");
-		}, timeoutMs);
- 
-		child.stdout?.on("data", (d) => {
-			stdout += d.toString();
-		});
-		child.stderr?.on("data", (d) => {
-			stderr += d.toString();
-		});
-		child.on("error", (err) => {
-			if (settled) return;
-			settled = true;
-			clearTimeout(timer);
-			reject(err);
-		});
-		child.on("close", (code, signal) => {
-			Iif (settled) return;
-			settled = true;
-			clearTimeout(timer);
-			resolve({ stdout, stderr, code, signal, killed: child.killed });
-		});
-	});
-}
- 
-class PortInUseError extends Error {
-	port: number;
- 
-	details?: string;
- 
-	constructor(port: number, details?: string) {
-		super(`Port ${port} is already in use.`);
-		this.name = "PortInUseError";
-		this.port = port;
-		this.details = details;
-	}
-}
- 
-function isErrno(err: unknown): err is NodeJS.ErrnoException {
-	return Boolean(err && typeof err === "object" && "code" in err);
-}
- 
-async function describePortOwner(port: number): Promise<string | undefined> {
-	// Best-effort process info for a listening port (macOS/Linux).
-	try {
-		const { stdout } = await runExec("lsof", [
-			"-i",
-			`tcp:${port}`,
-			"-sTCP:LISTEN",
-			"-nP",
-		]);
-		const trimmed = stdout.trim();
-		Eif (trimmed) return trimmed;
-	} catch (err) {
-		logVerbose(`lsof unavailable: ${String(err)}`);
-	}
-	return undefined;
-}
- 
-async function ensurePortAvailable(port: number): Promise<void> {
-	// Detect EADDRINUSE early with a friendly message.
-	try {
-		await new Promise<void>((resolve, reject) => {
-			const tester = net
-				.createServer()
-				.once("error", (err) => reject(err))
-				.once("listening", () => {
-					tester.close(() => resolve());
-				})
-				.listen(port);
-		});
-	} catch (err) {
-		Eif (isErrno(err) && err.code === "EADDRINUSE") {
-			const details = await describePortOwner(port);
-			throw new PortInUseError(port, details);
-		}
-		throw err;
-	}
-}
- 
-async function handlePortError(
-	err: unknown,
-	port: number,
-	context: string,
-	runtime: RuntimeEnv = defaultRuntime,
-): Promise<never> {
-	Eif (
-		err instanceof PortInUseError ||
-		(isErrno(err) && err.code === "EADDRINUSE")
-	) {
-		const details =
-			err instanceof PortInUseError
-				? err.details
-				: await describePortOwner(port);
-		runtime.error(danger(`${context} failed: port ${port} is already in use.`));
-		if (details) {
-			runtime.error(info("Port listener details:"));
-			runtime.error(details);
-			if (/warelay|src\/index\.ts|dist\/index\.js/.test(details)) {
-				runtime.error(
-					warn(
-						"It looks like another warelay instance is already running. Stop it or pick a different port.",
-					),
-				);
-			}
-		}
-		runtime.error(
-			info(
-				"Resolve by stopping the process using the port or passing --port <free-port>.",
-			),
-		);
-		runtime.exit(1);
-	}
-	runtime.error(danger(`${context} failed: ${String(err)}`));
-	return runtime.exit(1);
-}
- 
-async function ensureBinary(
-	name: string,
-	exec: typeof runExec = runExec,
-	runtime: RuntimeEnv = defaultRuntime,
-): Promise<void> {
-	// Abort early if a required CLI tool is missing.
-	await exec("which", [name]).catch(() => {
-		runtime.error(`Missing required binary: ${name}. Please install it.`);
-		runtime.exit(1);
-	});
-}
- 
-async function promptYesNo(
-	question: string,
-	defaultYes = false,
-): Promise<boolean> {
-	if (isVerbose() && isYes()) return true; // redundant guard when both flags set
-	if (isYes()) return true;
-	const rl = readline.createInterface({ input, output });
-	const suffix = defaultYes ? " [Y/n] " : " [y/N] ";
-	const answer = (await rl.question(`${question}${suffix}`))
-		.trim()
-		.toLowerCase();
-	rl.close();
-	if (!answer) return defaultYes;
-	return answer.startsWith("y");
-}
- 
-const CONFIG_PATH = path.join(os.homedir(), ".warelay", "warelay.json");
- 
-type ReplyMode = "text" | "command";
- 
-type WarelayConfig = {
-	inbound?: {
-		allowFrom?: string[]; // E.164 numbers allowed to trigger auto-reply (without whatsapp:)
-		reply?: {
-			mode: ReplyMode;
-			text?: string; // for mode=text, can contain {{Body}}
-			command?: string[]; // for mode=command, argv with templates
-			template?: string; // prepend template string when building command/prompt
-			timeoutSeconds?: number; // optional command timeout; defaults to 600s
-			bodyPrefix?: string; // optional string prepended to Body before templating
-			session?: SessionConfig;
-		};
-	};
-};
- 
-type SessionScope = "per-sender" | "global";
- 
-type SessionConfig = {
-	scope?: SessionScope;
-	resetTriggers?: string[];
-	idleMinutes?: number;
-	store?: string;
-	sessionArgNew?: string[];
-	sessionArgResume?: string[];
-	sessionArgBeforeBody?: boolean;
-};
- 
-function loadConfig(): WarelayConfig {
-	// Read ~/.warelay/warelay.json (JSON5) if present.
-	try {
-		Iif (!fs.existsSync(CONFIG_PATH)) return {};
-		const raw = fs.readFileSync(CONFIG_PATH, "utf-8");
-		const parsed = JSON5.parse(raw);
-		Iif (typeof parsed !== "object" || parsed === null) return {};
-		return parsed as WarelayConfig;
-	} catch (err) {
-		console.error(`Failed to read config at ${CONFIG_PATH}`, err);
-		return {};
-	}
-}
- 
-type MsgContext = {
-	Body?: string;
-	From?: string;
-	To?: string;
-	MessageSid?: string;
-};
- 
-type GetReplyOptions = {
-	onReplyStart?: () => Promise<void> | void;
-};
- 
-function applyTemplate(str: string, ctx: TemplateContext) {
-	// Simple {{Placeholder}} interpolation using inbound message context.
-	return str.replace(/{{\s*(\w+)\s*}}/g, (_, key) => {
-		const value = (ctx as Record<string, unknown>)[key];
-		return value == null ? "" : String(value);
-	});
-}
- 
-type TemplateContext = MsgContext & {
-	BodyStripped?: string;
-	SessionId?: string;
-	IsNewSession?: string;
-};
- 
-type SessionEntry = { sessionId: string; updatedAt: number };
- 
-const SESSION_STORE_DEFAULT = path.join(CONFIG_DIR, "sessions.json");
-const DEFAULT_RESET_TRIGGER = "/new";
-const DEFAULT_IDLE_MINUTES = 60;
- 
-function resolveStorePath(store?: string) {
-	if (!store) return SESSION_STORE_DEFAULT;
-	Iif (store.startsWith("~")) return path.resolve(store.replace("~", os.homedir()));
-	return path.resolve(store);
-}
- 
-function loadSessionStore(storePath: string): Record<string, SessionEntry> {
-	try {
-		const raw = fs.readFileSync(storePath, "utf-8");
-		const parsed = JSON5.parse(raw);
-		if (parsed && typeof parsed === "object") {
-			return parsed as Record<string, SessionEntry>;
-		}
-	} catch {
-		// ignore missing/invalid store; we'll recreate it
-	}
-	return {};
-}
- 
-async function saveSessionStore(storePath: string, store: Record<string, SessionEntry>) {
-	await fs.promises.mkdir(path.dirname(storePath), { recursive: true });
-	await fs.promises.writeFile(storePath, JSON.stringify(store, null, 2), "utf-8");
-}
- 
-function deriveSessionKey(scope: SessionScope, ctx: MsgContext) {
-	Iif (scope === "global") return "global";
-	const from = ctx.From ? normalizeE164(ctx.From) : "";
-	return from || "unknown";
-}
- 
-async function getReplyFromConfig(
-	ctx: MsgContext,
-	opts?: GetReplyOptions,
-	configOverride?: WarelayConfig,
-	commandRunner: typeof runCommandWithTimeout = runCommandWithTimeout,
-): Promise<string | undefined> {
-	// Choose reply from config: static text or external command stdout.
-	const cfg = configOverride ?? loadConfig();
-	const reply = cfg.inbound?.reply;
-	const timeoutSeconds = Math.max(reply?.timeoutSeconds ?? 600, 1);
-	const timeoutMs = timeoutSeconds * 1000;
-	let started = false;
-	const onReplyStart = async () => {
-		Iif (started) return;
-		started = true;
-		await opts?.onReplyStart?.();
-	};
- 
-	// Optional session handling (conversation reuse + /new resets)
-	const sessionCfg = reply?.session;
-	const resetTriggers =
-		sessionCfg?.resetTriggers?.length
-			? sessionCfg.resetTriggers
-			: [DEFAULT_RESET_TRIGGER];
-	const idleMinutes = Math.max(sessionCfg?.idleMinutes ?? DEFAULT_IDLE_MINUTES, 1);
-	const sessionScope = sessionCfg?.scope ?? "per-sender";
-	const storePath = resolveStorePath(sessionCfg?.store);
- 
-	let sessionId: string | undefined;
-	let isNewSession = false;
-	let bodyStripped: string | undefined;
- 
-	if (sessionCfg) {
-		const trimmedBody = (ctx.Body ?? "").trim();
-		for (const trigger of resetTriggers) {
-			Iif (!trigger) continue;
-			Iif (trimmedBody === trigger) {
-				isNewSession = true;
-				bodyStripped = "";
-				break;
-			}
-			const triggerPrefix = `${trigger} `;
-			if (trimmedBody.startsWith(triggerPrefix)) {
-				isNewSession = true;
-				bodyStripped = trimmedBody.slice(trigger.length).trimStart();
-				break;
-			}
-		}
- 
-		const sessionKey = deriveSessionKey(sessionScope, ctx);
-		const store = loadSessionStore(storePath);
-		const entry = store[sessionKey];
-		const idleMs = idleMinutes * 60_000;
-		const freshEntry = entry && Date.now() - entry.updatedAt <= idleMs;
- 
-		if (!isNewSession && freshEntry) {
-			sessionId = entry.sessionId;
-		} else {
-			sessionId = crypto.randomUUID();
-			isNewSession = true;
-		}
- 
-		store[sessionKey] = { sessionId, updatedAt: Date.now() };
-		await saveSessionStore(storePath, store);
-	}
- 
-	const sessionCtx: TemplateContext = {
-		...ctx,
-		BodyStripped: bodyStripped ?? ctx.Body,
-		SessionId: sessionId,
-		IsNewSession: isNewSession ? "true" : "false",
-	};
- 
-	// Optional prefix injected before Body for templating/command prompts.
-	const bodyPrefix = reply?.bodyPrefix
-		? applyTemplate(reply.bodyPrefix, sessionCtx)
-		: "";
-	const prefixedBody = bodyPrefix
-		? `${bodyPrefix}${sessionCtx.BodyStripped ?? sessionCtx.Body ?? ""}`
-		: sessionCtx.BodyStripped ?? sessionCtx.Body;
-	const templatingCtx: TemplateContext = {
-		...sessionCtx,
-		Body: prefixedBody,
-		BodyStripped: prefixedBody,
-	};
- 
-	// Optional allowlist by origin number (E.164 without whatsapp: prefix)
-	const allowFrom = cfg.inbound?.allowFrom;
-	if (Array.isArray(allowFrom) && allowFrom.length > 0) {
-		const from = (ctx.From ?? "").replace(/^whatsapp:/, "");
-		if (!allowFrom.includes(from)) {
-			logVerbose(
-				`Skipping auto-reply: sender ${from || "<unknown>"} not in allowFrom list`,
-			);
-			return undefined;
-		}
-	}
-	Iif (!reply) {
-		logVerbose("No inbound.reply configured; skipping auto-reply");
-		return undefined;
-	}
- 
-	if (reply.mode === "text" && reply.text) {
-		await onReplyStart();
-		logVerbose("Using text auto-reply from config");
-		return applyTemplate(reply.text, templatingCtx);
-	}
- 
-	Eif (reply.mode === "command" && reply.command?.length) {
-		await onReplyStart();
-		let argv = reply.command.map((part) => applyTemplate(part, templatingCtx));
-		const templatePrefix = reply.template
-			? applyTemplate(reply.template, templatingCtx)
-			: "";
-		Eif (templatePrefix && argv.length > 0) {
-			argv = [argv[0], templatePrefix, ...argv.slice(1)];
-		}
- 
-		// Inject session args if configured (use resume for existing, session-id for new)
-		Eif (reply.session) {
-			const sessionArgList = (isNewSession
-				? reply.session.sessionArgNew ?? ["--session-id", "{{SessionId}}"]
-				: reply.session.sessionArgResume ?? ["--resume", "{{SessionId}}"]
-			).map((part) => applyTemplate(part, templatingCtx));
-			Eif (sessionArgList.length) {
-				const insertBeforeBody = reply.session.sessionArgBeforeBody ?? true;
-				const insertAt = insertBeforeBody && argv.length > 1 ? argv.length - 1 : argv.length;
-				argv = [
-					...argv.slice(0, insertAt),
-					...sessionArgList,
-					...argv.slice(insertAt),
-				];
-			}
-		}
-		const finalArgv = argv;
-		logVerbose(`Running command auto-reply: ${finalArgv.join(" ")}`);
-		const started = Date.now();
-		try {
-			const { stdout, stderr, code, signal, killed } =
-				await commandRunner(finalArgv, timeoutMs);
-			const trimmed = stdout.trim();
-			Iif (stderr?.trim()) {
-				logVerbose(`Command auto-reply stderr: ${stderr.trim()}`);
-			}
-			logVerbose(
-				`Command auto-reply stdout (trimmed): ${trimmed || "<empty>"}`,
-			);
-			logVerbose(`Command auto-reply finished in ${Date.now() - started}ms`);
-			Iif ((code ?? 0) !== 0) {
-				console.error(
-					`Command auto-reply exited with code ${code ?? "unknown"} (signal: ${signal ?? "none"})`,
-				);
-				return undefined;
-			}
-			Iif (killed && !signal) {
-				console.error(
-					`Command auto-reply process killed before completion (exit code ${code ?? "unknown"})`,
-				);
-				return undefined;
-			}
-			return trimmed || undefined;
-		} catch (err) {
-			const elapsed = Date.now() - started;
-			const anyErr = err as { killed?: boolean; signal?: string };
-			const timeoutHit = anyErr.killed === true || anyErr.signal === "SIGKILL";
-			const errorObj = err as {
-				stdout?: string;
-				stderr?: string;
-			};
-			if (errorObj.stderr?.trim()) {
-				logVerbose(`Command auto-reply stderr: ${errorObj.stderr.trim()}`);
-			}
-			if (timeoutHit) {
-				console.error(
-					`Command auto-reply timed out after ${elapsed}ms (limit ${timeoutMs}ms)`,
-				);
-			} else {
-				console.error(`Command auto-reply failed after ${elapsed}ms`, err);
-			}
-			return undefined;
-		}
-	}
- 
-	return undefined;
-}
- 
-async function autoReplyIfConfigured(
-	client: ReturnType<typeof createClient>,
-	message: MessageInstance,
-	configOverride?: WarelayConfig,
-	runtime: RuntimeEnv = defaultRuntime,
-): Promise<void> {
-	// Fire a config-driven reply (text or command) for the inbound message, if configured.
-	const ctx: MsgContext = {
-		Body: message.body ?? undefined,
-		From: message.from ?? undefined,
-		To: message.to ?? undefined,
-		MessageSid: message.sid,
-	};
- 
-	const replyText = await getReplyFromConfig(
-		ctx,
-		{
-			onReplyStart: () => sendTypingIndicator(client, message.sid, runtime),
-		},
-		configOverride,
-	);
-	Iif (!replyText) return;
- 
-	const replyFrom = message.to;
-	const replyTo = message.from;
-	Iif (!replyFrom || !replyTo) {
-	if (isVerbose())
-		console.error(
-			"Skipping auto-reply: missing to/from on inbound message",
-			ctx,
-			);
-		return;
-	}
- 
-	logVerbose(
-		`Auto-replying via Twilio: from ${replyFrom} to ${replyTo}, body length ${replyText.length}`,
-	);
- 
-	try {
-		await client.messages.create({
-			from: replyFrom,
-			to: replyTo,
-			body: replyText,
-		});
-		Iif (isVerbose()) {
-			console.log(
-				success(
-					`↩️  Auto-replied to ${replyTo} (sid ${message.sid ?? "no-sid"})`,
-				),
-			);
-		}
-	} catch (err) {
-		logTwilioSendError(err, replyTo ?? undefined, runtime);
-	}
-}
- 
-function createClient(env: EnvConfig) {
-	// Twilio client using either auth token or API key/secret.
-	if ("authToken" in env.auth) {
-		return Twilio(env.accountSid, env.auth.authToken, {
-			accountSid: env.accountSid,
-		});
-	}
-	return Twilio(env.auth.apiKey, env.auth.apiSecret, {
-		accountSid: env.accountSid,
-	});
-}
- 
-async function sendTypingIndicator(
-	client: ReturnType<typeof createClient>,
-	messageSid?: string,
-	runtime: RuntimeEnv = defaultRuntime,
-) {
-	// Best-effort WhatsApp typing indicator (public beta as of Nov 2025).
-	if (!messageSid) {
-		logVerbose("Skipping typing indicator: missing MessageSid");
-		return;
-	}
-	try {
-		const requester = client as unknown as TwilioRequester;
-		await requester.request({
-			method: "post",
-			uri: "https://messaging.twilio.com/v2/Indicators/Typing.json",
-			form: {
-				messageId: messageSid,
-				channel: "whatsapp",
-			},
-		});
-		logVerbose(`Sent typing indicator for inbound ${messageSid}`);
-	} catch (err) {
-		if (isVerbose()) {
-			runtime.error(warn("Typing indicator failed (continuing without it)"));
-			runtime.error(err as Error);
-		}
-	}
-}
- 
-async function sendMessage(
-	to: string,
-	body: string,
-	runtime: RuntimeEnv = defaultRuntime,
-) {
-	// Send outbound WhatsApp message; exit non-zero on API failure.
-	const env = readEnv(runtime);
-	const client = createClient(env);
-	const from = withWhatsAppPrefix(env.whatsappFrom);
-	const toNumber = withWhatsAppPrefix(to);
- 
-	try {
-		const message = await client.messages.create({
-			from,
-			to: toNumber,
-			body,
-		});
- 
-		console.log(
-			success(
-				`✅ Request accepted. Message SID: ${message.sid} -> ${toNumber}`,
-			),
-		);
-		return { client, sid: message.sid };
-	} catch (err) {
-		const anyErr = err as {
-			code?: string | number;
-			message?: unknown;
-			moreInfo?: unknown;
-			status?: string | number;
-			response?: { body?: unknown };
-		};
-		const { code, status } = anyErr;
-		const msg =
-			typeof anyErr?.message === "string"
-				? anyErr.message
-			: (anyErr?.message ?? err);
-		const more = anyErr?.moreInfo;
-		runtime.error(
-			`❌ Twilio send failed${code ? ` (code ${code})` : ""}${status ? ` status ${status}` : ""}: ${msg}`,
-		);
-		if (more) console.error(`More info: ${more}`);
-		// Some Twilio errors include response.body with more context.
-		const responseBody = anyErr?.response?.body;
-		if (responseBody) {
-			console.error("Response body:", JSON.stringify(responseBody, null, 2));
-		}
-		runtime.exit(1);
-	}
-}
- 
-const successTerminalStatuses = new Set(["delivered", "read"]);
-const failureTerminalStatuses = new Set(["failed", "undelivered", "canceled"]);
- 
-async function waitForFinalStatus(
-	client: ReturnType<typeof createClient>,
-	sid: string,
-	timeoutSeconds: number,
-	pollSeconds: number,
-	runtime: RuntimeEnv = defaultRuntime,
-) {
-	// Poll message status until delivered/failed or timeout.
-	const deadline = Date.now() + timeoutSeconds * 1000;
-	while (Date.now() < deadline) {
-		const m = await client.messages(sid).fetch();
-		const status = m.status ?? "unknown";
-		if (successTerminalStatuses.has(status)) {
-			console.log(success(`✅ Delivered (status: ${status})`));
-			return;
-		}
-		if (failureTerminalStatuses.has(status)) {
-			runtime.error(
-				`❌ Delivery failed (status: ${status}${
-					m.errorCode ? `, code ${m.errorCode}` : ""
-				})${m.errorMessage ? `: ${m.errorMessage}` : ""}`,
-			);
-			runtime.exit(1);
-		}
-		await sleep(pollSeconds * 1000);
-	}
-	console.log(
-		"ℹ️  Timed out waiting for final status; message may still be in flight.",
-	);
-}
- 
-async function startWebhook(
-	port: number,
-	path = "/webhook/whatsapp",
-	autoReply: string | undefined,
-	verbose: boolean,
-	runtime: RuntimeEnv = defaultRuntime,
-): Promise<import("http").Server> {
-	const normalizedPath = normalizePath(path);
-	// Start Express webhook; generate replies via config or CLI flag.
-	const env = readEnv(runtime);
-	const app = express();
- 
-	// Twilio sends application/x-www-form-urlencoded
-	app.use(bodyParser.urlencoded({ extended: false }));
-	app.use((req, _res, next) => {
-		runtime.log(chalk.gray(`REQ ${req.method} ${req.url}`));
-		next();
-	});
- 
-	app.post(normalizedPath, async (req: Request, res: Response) => {
-		const { From, To, Body, MessageSid } = req.body ?? {};
-		console.log(
-			`[INBOUND] ${From ?? "unknown"} -> ${To ?? "unknown"} (${
-				MessageSid ?? "no-sid"
-			})`,
-		);
-		Iif (verbose) runtime.log(chalk.gray(`Body: ${Body ?? ""}`));
- 
-		const client = createClient(env);
-		let replyText = autoReply;
-		Eif (!replyText) {
-			replyText = await getReplyFromConfig(
-				{
-					Body,
-					From,
-					To,
-					MessageSid,
-				},
-				{
-					onReplyStart: () => sendTypingIndicator(client, MessageSid, runtime),
-				},
-			);
-		}
- 
-		Iif (replyText) {
-			try {
-				await client.messages.create({
-					from: To,
-					to: From,
-					body: replyText,
-				});
-				if (verbose) {
-					runtime.log(success(`↩️  Auto-replied to ${From}`));
-				}
-			} catch (err) {
-				logTwilioSendError(err, From ?? undefined, runtime);
-			}
-		}
- 
-		// Respond 200 OK to Twilio
-		res.type("text/xml").send("<Response></Response>");
-	});
- 
-	app.use((_req, res) => {
-		if (verbose) runtime.log(chalk.yellow(`404 ${_req.method} ${_req.url}`));
-		res.status(404).send("warelay webhook: not found");
-	});
- 
-	return await new Promise((resolve, reject) => {
-		const server = app.listen(port);
- 
-		const onListening = () => {
-			cleanup();
-			runtime.log(
-				`📥 Webhook listening on http://localhost:${port}${normalizedPath}`,
-			);
-			resolve(server);
-		};
- 
-		const onError = (err: NodeJS.ErrnoException) => {
-			cleanup();
-			reject(err);
-		};
- 
-		const cleanup = () => {
-			server.off("listening", onListening);
-			server.off("error", onError);
-		};
- 
-		server.once("listening", onListening);
-		server.once("error", onError);
-	});
-}
- 
-function waitForever() {
-	// Keep event loop alive via an unref'ed interval plus a pending promise.
-	const interval = setInterval(() => {}, 1_000_000);
-	interval.unref();
-	return new Promise<void>(() => {
-		/* never resolve */
-	});
-}
- 
-async function getTailnetHostname(exec: typeof runExec = runExec) {
-	// Derive tailnet hostname (or IP fallback) from tailscale status JSON.
-	const { stdout } = await exec("tailscale", ["status", "--json"]);
-	const parsed = stdout ? (JSON.parse(stdout) as Record<string, unknown>) : {};
-	const self =
-		typeof parsed.Self === "object" && parsed.Self !== null
-			? (parsed.Self as Record<string, unknown>)
-			: undefined;
-	const dns =
-		typeof self?.DNSName === "string" ? (self.DNSName as string) : undefined;
-	const ips = Array.isArray(self?.TailscaleIPs)
-		? (self.TailscaleIPs as string[])
-		: [];
-	if (dns && dns.length > 0) return dns.replace(/\.$/, "");
-	Eif (ips.length > 0) return ips[0];
-	throw new Error("Could not determine Tailscale DNS or IP");
-}
- 
-async function ensureGoInstalled(
-	exec: typeof runExec = runExec,
-	prompt: typeof promptYesNo = promptYesNo,
-	runtime: RuntimeEnv = defaultRuntime,
-) {
-	// Ensure Go toolchain is present; offer Homebrew install if missing.
-	const hasGo = await exec("go", ["version"]).then(
-		() => true,
-		() => false,
-	);
-	Iif (hasGo) return;
-	const install = await prompt(
-		"Go is not installed. Install via Homebrew (brew install go)?",
-		true,
-	);
-	Iif (!install) {
-		runtime.error("Go is required to build tailscaled from source. Aborting.");
-		runtime.exit(1);
-	}
-	logVerbose("Installing Go via Homebrew…");
-	await exec("brew", ["install", "go"]);
-}
- 
-async function ensureTailscaledInstalled(
-	exec: typeof runExec = runExec,
-	prompt: typeof promptYesNo = promptYesNo,
-	runtime: RuntimeEnv = defaultRuntime,
-) {
-	// Ensure tailscaled binary exists; install via Homebrew tailscale if missing.
-	const hasTailscaled = await exec("tailscaled", ["--version"]).then(
-		() => true,
-		() => false,
-	);
-	Iif (hasTailscaled) return;
- 
-	const install = await prompt(
-		"tailscaled not found. Install via Homebrew (tailscale package)?",
-		true,
-	);
-	Iif (!install) {
-		runtime.error("tailscaled is required for user-space funnel. Aborting.");
-		runtime.exit(1);
-	}
-	logVerbose("Installing tailscaled via Homebrew…");
-	await exec("brew", ["install", "tailscale"]);
-}
- 
-async function ensureFunnel(
-	port: number,
-	exec: typeof runExec = runExec,
-	runtime: RuntimeEnv = defaultRuntime,
-	prompt: typeof promptYesNo = promptYesNo,
-) {
-	// Ensure Funnel is enabled and publish the webhook port.
-	try {
-		const statusOut = (
-			await exec("tailscale", ["funnel", "status", "--json"])
-		).stdout.trim();
-		const parsed = statusOut
-			? (JSON.parse(statusOut) as Record<string, unknown>)
-			: {};
-		Iif (!parsed || Object.keys(parsed).length === 0) {
-			runtime.error(
-				danger("Tailscale Funnel is not enabled on this tailnet/device."),
-			);
-			runtime.error(
-				info(
-					"Enable in admin console: https://login.tailscale.com/admin (see https://tailscale.com/kb/1223/funnel)",
-				),
-			);
-			runtime.error(
-				info(
-					"macOS user-space tailscaled docs: https://github.com/tailscale/tailscale/wiki/Tailscaled-on-macOS",
-				),
-			);
-			const proceed = await prompt(
-				"Attempt local setup with user-space tailscaled?",
-				true,
-			);
-			if (!proceed) runtime.exit(1);
-			await ensureGoInstalled(exec, prompt, runtime);
-			await ensureTailscaledInstalled(exec, prompt, runtime);
-		}
- 
-		logVerbose(`Enabling funnel on port ${port}…`);
-		const { stdout } = await exec(
-			"tailscale",
-			["funnel", "--yes", "--bg", `${port}`],
-			{
-				maxBuffer: 200_000,
-				timeoutMs: 15_000,
-			},
-		);
-		Eif (stdout.trim()) console.log(stdout.trim());
-	} catch (err) {
-		const errOutput = err as { stdout?: unknown; stderr?: unknown };
-		const stdout = typeof errOutput.stdout === "string" ? errOutput.stdout : "";
-		const stderr = typeof errOutput.stderr === "string" ? errOutput.stderr : "";
-		Eif (stdout.includes("Funnel is not enabled")) {
-			console.error(danger("Funnel is not enabled on this tailnet/device."));
-			const linkMatch = stdout.match(/https?:\/\/\S+/);
-			Iif (linkMatch) {
-				console.error(info(`Enable it here: ${linkMatch[0]}`));
-			} else {
-				console.error(
-					info(
-						"Enable in admin console: https://login.tailscale.com/admin (see https://tailscale.com/kb/1223/funnel)",
-					),
-				);
-			}
-		}
-		Iif (
-			stderr.includes("client version") ||
-			stdout.includes("client version")
-		) {
-			console.error(
-				warn(
-					"Tailscale client/server version mismatch detected; try updating tailscale/tailscaled.",
-				),
-			);
-		}
-		runtime.error(
-			"Failed to enable Tailscale Funnel. Is it allowed on your tailnet?",
-		);
-		runtime.error(
-			info(
-				"Tip: you can fall back to polling (no webhooks needed): `pnpm warelay poll --interval 5 --lookback 10`",
-			),
-		);
-		Iif (isVerbose()) {
-			if (stdout.trim()) runtime.error(chalk.gray(`stdout: ${stdout.trim()}`));
-			if (stderr.trim()) runtime.error(chalk.gray(`stderr: ${stderr.trim()}`));
-			runtime.error(err as Error);
-		}
-		runtime.exit(1);
-	}
-}
- 
-async function findWhatsappSenderSid(
-	client: ReturnType<typeof createClient>,
-	from: string,
-	explicitSenderSid?: string,
-	runtime: RuntimeEnv = defaultRuntime,
-) {
-	// Use explicit sender SID if provided, otherwise list and match by sender_id.
-	if (explicitSenderSid) {
-		logVerbose(`Using TWILIO_SENDER_SID from env: ${explicitSenderSid}`);
-		return explicitSenderSid;
-	}
-	try {
-		// Prefer official SDK list helper to avoid request-shape mismatches.
-		// Twilio helper types are broad; we narrow to expected shape.
-		const senderClient = client as unknown as TwilioSenderListClient;
-		const senders = await senderClient.messaging.v2.channelsSenders.list({
-			channel: "whatsapp",
-			pageSize: 50,
-		});
-		Iif (!senders) {
-			throw new Error('List senders response missing "senders" array');
-		}
-		const match = senders.find(
-			(s) =>
-				(typeof s.senderId === "string" &&
-					s.senderId === withWhatsAppPrefix(from)) ||
-				(typeof s.sender_id === "string" &&
-					s.sender_id === withWhatsAppPrefix(from)),
-		);
-		Iif (!match || typeof match.sid !== "string") {
-			throw new Error(
-				`Could not find sender ${withWhatsAppPrefix(from)} in Twilio account`,
-			);
-		}
-		return match.sid;
-	} catch (err) {
-		runtime.error(danger("Unable to list WhatsApp senders via Twilio API."));
-		if (isVerbose()) {
-			runtime.error(err as Error);
-		}
-		runtime.error(
-			info(
-				"Set TWILIO_SENDER_SID in .env to skip discovery (Twilio Console → Messaging → Senders → WhatsApp).",
-			),
-		);
-		runtime.exit(1);
-	}
-}
- 
-async function findIncomingNumberSid(
-	client: TwilioSenderListClient,
-): Promise<string | null> {
-	// Try to locate the underlying phone number and return its SID for webhook fallback.
-	const env = readEnv();
-	const phone = env.whatsappFrom.replace("whatsapp:", "");
-	try {
-		const list = await client.incomingPhoneNumbers.list({
-			phoneNumber: phone,
-			limit: 2,
-		});
-		Iif (!list || list.length === 0) return null;
-		Iif (list.length > 1 && isVerbose()) {
-			console.error(
-				warn("Multiple incoming numbers matched; using the first."),
-			);
-		}
-		return list[0]?.sid ?? null;
-	} catch (err) {
-		if (isVerbose()) console.error("incomingPhoneNumbers.list failed", err);
-		return null;
-	}
-}
- 
-async function findMessagingServiceSid(
-	client: TwilioSenderListClient,
-): Promise<string | null> {
-	// Attempt to locate a messaging service tied to the WA phone number (webhook fallback).
-	type IncomingNumberWithService = { messagingServiceSid?: string };
-	try {
-		const env = readEnv();
-		const phone = env.whatsappFrom.replace("whatsapp:", "");
-		const list = await client.incomingPhoneNumbers.list({
-			phoneNumber: phone,
-			limit: 1,
-		});
-		const msid =
-			(list?.[0] as IncomingNumberWithService | undefined)
-				?.messagingServiceSid ?? null;
-		return msid;
-	} catch (err) {
-		if (isVerbose()) console.error("findMessagingServiceSid failed", err);
-		return null;
-	}
-}
- 
-async function setMessagingServiceWebhook(
-	client: TwilioSenderListClient,
-	url: string,
-	method: "POST" | "GET",
-): Promise<boolean> {
-	const msid = await findMessagingServiceSid(client);
-	Iif (!msid) return false;
-	try {
-		await client.messaging.v1.services(msid).update({
-			InboundRequestUrl: url,
-			InboundRequestMethod: method,
-		});
-		const fetched = await client.messaging.v1.services(msid).fetch();
-		const stored = fetched?.inboundRequestUrl;
-		console.log(
-			success(
-				`✅ Messaging Service webhook set to ${stored ?? url} (service ${msid})`,
-			),
-		);
-		return true;
-	} catch (err) {
-		if (isVerbose()) console.error("Messaging Service update failed", err);
-		return false;
-	}
-}
- 
-async function updateWebhook(
-	client: ReturnType<typeof createClient>,
-	senderSid: string,
-	url: string,
-	method: "POST" | "GET" = "POST",
-	runtime: RuntimeEnv = defaultRuntime,
-) {
-	// Point Twilio sender webhook at the provided URL.
-	const requester = client as unknown as TwilioRequester;
-	const clientTyped = client as unknown as TwilioSenderListClient;
- 
-	// 1) Raw request (Channels/Senders) with JSON webhook payload — most reliable for WA
-	try {
-		await requester.request({
-			method: "post",
-			uri: `https://messaging.twilio.com/v2/Channels/Senders/${senderSid}`,
-			body: {
-				webhook: {
-					callback_url: url,
-					callback_method: method,
-				},
-			},
-			contentType: "application/json",
-		});
-		// Fetch to verify what Twilio stored
-		const fetched = await clientTyped.messaging.v2
-			.channelsSenders(senderSid)
-			.fetch();
-		const storedUrl =
-			fetched?.webhook?.callback_url || fetched?.webhook?.fallback_url;
-		Eif (storedUrl) {
-			console.log(success(`✅ Twilio sender webhook set to ${storedUrl}`));
-			return;
-		}
-		if (isVerbose())
-			console.error(
-				"Sender updated but webhook callback_url missing; will try fallbacks",
-			);
-	} catch (err) {
-		if (isVerbose())
-			console.error(
-				"channelsSenders request update failed, will try client helpers",
-				err,
-			);
-	}
- 
-	// 1b) Form-encoded fallback for older Twilio stacks
-	try {
-		await requester.request({
-			method: "post",
-			uri: `https://messaging.twilio.com/v2/Channels/Senders/${senderSid}`,
-			form: {
-				"Webhook.CallbackUrl": url,
-				"Webhook.CallbackMethod": method,
-			},
-		});
-		const fetched = await clientTyped.messaging.v2
-			.channelsSenders(senderSid)
-			.fetch();
-		const storedUrl =
-			fetched?.webhook?.callback_url || fetched?.webhook?.fallback_url;
-		Iif (storedUrl) {
-			console.log(success(`✅ Twilio sender webhook set to ${storedUrl}`));
-			return;
-		}
-		if (isVerbose())
-			console.error(
-				"Form update succeeded but callback_url missing; will try helper fallback",
-			);
-	} catch (err) {
-		if (isVerbose())
-			console.error(
-				"Form channelsSenders update failed, will try helper fallback",
-				err,
-			);
-	}
- 
-	// 2) SDK helper fallback (if supported by this client)
-	try {
-		if (clientTyped.messaging?.v2?.channelsSenders) {
-			await clientTyped.messaging.v2.channelsSenders(senderSid).update({
-				callbackUrl: url,
-				callbackMethod: method,
-			});
-			const fetched = await clientTyped.messaging.v2
-				.channelsSenders(senderSid)
-				.fetch();
-			const storedUrl =
-				fetched?.webhook?.callback_url || fetched?.webhook?.fallback_url;
-			console.log(
-				success(
-					`✅ Twilio sender webhook set to ${storedUrl ?? url} (helper API)`,
-				),
-			);
-			return;
-		}
-	} catch (err) {
-		if (isVerbose())
-			console.error(
-				"channelsSenders helper update failed, will try phone number fallback",
-				err,
-			);
-	}
- 
-	// 3) Incoming phone number fallback (works for many WA senders)
-	try {
-		const phoneSid = await findIncomingNumberSid(clientTyped);
-		if (phoneSid) {
-			const phoneNumberUpdater = clientTyped.incomingPhoneNumbers(phoneSid);
-			await phoneNumberUpdater.update({
-				smsUrl: url,
-				smsMethod: method,
-			});
-			console.log(success(`✅ Twilio phone webhook set to ${url}`));
-			return;
-		}
-	} catch (err) {
-		if (isVerbose()) console.error("Incoming number update failed", err);
-	}
- 
-	// 4) Messaging Service fallback (some WA senders are tied to a service)
-	const messagingServiceUpdated = await setMessagingServiceWebhook(
-		clientTyped,
-		url,
-		method,
-	);
-	if (messagingServiceUpdated) return;
- 
-	runtime.error(danger("Failed to set Twilio webhook."));
-	runtime.error(
-		info(
-			"Double-check your sender SID and credentials; you can set TWILIO_SENDER_SID to force a specific sender.",
-		),
-	);
-	runtime.error(
-		info(
-			"Tip: if webhooks are blocked, use polling instead: `pnpm warelay poll --interval 5 --lookback 10`",
-		),
-	);
-	runtime.exit(1);
-}
- 
-type TwilioApiError = {
-	code?: number | string;
-	status?: number | string;
-	message?: string;
-	moreInfo?: string;
-	response?: { body?: unknown };
-};
- 
-function formatTwilioError(err: unknown): string {
-	const e = err as TwilioApiError;
-	const pieces = [];
-	if (e.code != null) pieces.push(`code ${e.code}`);
-	if (e.status != null) pieces.push(`status ${e.status}`);
-	if (e.message) pieces.push(e.message);
-	if (e.moreInfo) pieces.push(`more: ${e.moreInfo}`);
-	return pieces.length ? pieces.join(" | ") : String(err);
-}
- 
-function logTwilioSendError(
-	err: unknown,
-	destination?: string,
-	runtime: RuntimeEnv = defaultRuntime,
-) {
-	const prefix = destination ? `to ${destination}: ` : "";
-	runtime.error(
-		danger(`❌ Twilio send failed ${prefix}${formatTwilioError(err)}`),
-	);
-	const body = (err as TwilioApiError)?.response?.body;
-	if (body) {
-		runtime.error(info("Response body:"), JSON.stringify(body, null, 2));
-	}
-}
- 
-async function monitor(
-	intervalSeconds: number,
-	lookbackMinutes: number,
-	clientOverride?: ReturnType<typeof createClient>,
-	maxIterations = Infinity,
-) {
-	// Poll Twilio for inbound messages and stream them with de-dupe.
-	const env = readEnv();
-	const client = clientOverride ?? createClient(env);
-	const from = withWhatsAppPrefix(env.whatsappFrom);
- 
-	let since = new Date(Date.now() - lookbackMinutes * 60_000);
-	const seen = new Set<string>();
- 
-	console.log(
-		`📡 Monitoring inbound messages to ${from} (poll ${intervalSeconds}s, lookback ${lookbackMinutes}m)`,
-	);
- 
-	const updateSince = (date?: Date | null) => {
-		Iif (!date) return;
-		Iif (date.getTime() > since.getTime()) {
-			since = date;
-		}
-	};
- 
-	let keepRunning = true;
-	process.once("SIGINT", () => {
-		if (!keepRunning) return;
-		keepRunning = false;
-		console.log("\n👋 Stopping monitor");
-	});
- 
-	let iterations = 0;
-	while (keepRunning && iterations < maxIterations) {
-		try {
-			const messages = await client.messages.list({
-				to: from,
-				dateSentAfter: since,
-				limit: 50,
-			});
- 
-			const inboundMessages = messages
-				.filter((m: MessageInstance) => m.direction === "inbound")
-				.sort((a: MessageInstance, b: MessageInstance) => {
-					const da = a.dateCreated?.getTime() ?? 0;
-					const db = b.dateCreated?.getTime() ?? 0;
-					return da - db;
-				});
- 
-			for (const m of inboundMessages) {
-				Iif (seen.has(m.sid)) continue;
-				seen.add(m.sid);
-				const time = m.dateCreated?.toISOString() ?? "unknown time";
-				const fromNum = m.from ?? "unknown sender";
-				console.log(`\n[${time}] ${fromNum} -> ${m.to}: ${m.body ?? ""}`);
-				updateSince(m.dateCreated);
-				void autoReplyIfConfigured(client, m);
-			}
-		} catch (err) {
-			console.error("Error while polling messages", err);
-		}
- 
-		await sleep(intervalSeconds * 1000);
-		iterations += 1;
-	}
-}
- 
-async function monitorWebProvider(
-	verbose: boolean,
-	listenerFactory = monitorWebInbox,
-	keepAlive = true,
-	replyResolver: typeof getReplyFromConfig = getReplyFromConfig,
-) {
-	// Listen for inbound personal WhatsApp Web messages and auto-reply if configured.
-	const listener = await listenerFactory({
-		verbose,
-		onMessage: async (msg) => {
-			const ts = msg.timestamp
-				? new Date(msg.timestamp).toISOString()
-				: new Date().toISOString();
-			console.log(`\n[${ts}] ${msg.from} -> ${msg.to}: ${msg.body}`);
- 
-			const replyText = await replyResolver(
-				{
-					Body: msg.body,
-					From: msg.from,
-					To: msg.to,
-					MessageSid: msg.id,
-				},
-				{
-					onReplyStart: msg.sendComposing,
-				},
-			);
-			Iif (!replyText) return;
-			try {
-				await msg.reply(replyText);
-				Iif (isVerbose()) {
-					console.log(success(`↩️  Auto-replied to ${msg.from} (web)`));
-				}
-			} catch (err) {
-				console.error(
-					danger(`Failed sending web auto-reply to ${msg.from}: ${String(err)}`),
-				);
-			}
-		},
-	});
- 
-	console.log(
-		info(
-			"📡 Listening for personal WhatsApp Web inbound messages. Leave this running; Ctrl+C to stop.",
-		),
-	);
-	process.on("SIGINT", () => {
-		void listener.close().finally(() => {
-			console.log("\n👋 Web monitor stopped");
-			defaultRuntime.exit(0);
-		});
-	});
- 
-	Iif (keepAlive) {
-		await waitForever();
-	}
-}
- 
-async function performSend(
-	opts: {
-		to: string;
-		message: string;
-		wait: string;
-		poll: string;
-		provider: Provider;
-	},
-	deps: CliDeps,
-	exitFn: (code: number) => never = defaultRuntime.exit,
-	runtime: RuntimeEnv = defaultRuntime,
-) {
-	deps.assertProvider(opts.provider);
-	const waitSeconds = Number.parseInt(opts.wait, 10);
-	const pollSeconds = Number.parseInt(opts.poll, 10);
- 
-	if (Number.isNaN(waitSeconds) || waitSeconds < 0) {
-		throw new Error("Wait must be >= 0 seconds");
-	}
-	if (Number.isNaN(pollSeconds) || pollSeconds <= 0) {
-		throw new Error("Poll must be > 0 seconds");
-	}
- 
-	if (opts.provider === "web") {
-		if (waitSeconds !== 0) {
-			console.log(info("Wait/poll are Twilio-only; ignored for provider=web."));
-		}
-		await deps.sendMessageWeb(opts.to, opts.message, { verbose: isVerbose() });
-		return;
-	}
- 
-	const result = await deps.sendMessage(opts.to, opts.message, runtime);
-	if (!result) return;
-	if (waitSeconds === 0) return;
-	await deps.waitForFinalStatus(
-		result.client,
-		result.sid,
-		waitSeconds,
-		pollSeconds,
-	);
-}
- 
-async function performStatus(
-	opts: { limit: string; lookback: string; json?: boolean },
-	deps: CliDeps,
-	exitFn: (code: number) => never = defaultRuntime.exit,
-	runtime: RuntimeEnv = defaultRuntime,
-) {
-	const limit = Number.parseInt(opts.limit, 10);
-	const lookbackMinutes = Number.parseInt(opts.lookback, 10);
-	if (Number.isNaN(limit) || limit <= 0 || limit > 200) {
-		throw new Error("limit must be between 1 and 200");
-	}
-	if (Number.isNaN(lookbackMinutes) || lookbackMinutes <= 0) {
-		throw new Error("lookback must be > 0 minutes");
-	}
- 
-	const messages = await deps.listRecentMessages(lookbackMinutes, limit);
-	if (opts.json) {
-		console.log(JSON.stringify(messages, null, 2));
-		return;
-	}
-	if (messages.length === 0) {
-		console.log("No messages found in the requested window.");
-		return;
-	}
-	for (const m of messages) {
-		console.log(formatMessageLine(m));
-	}
-}
- 
-async function performWebhookSetup(
-	opts: {
-		port: string;
-		path: string;
-		reply?: string;
-		verbose?: boolean;
-	},
-	deps: CliDeps,
-	exitFn: (code: number) => never = defaultRuntime.exit,
-	runtime: RuntimeEnv = defaultRuntime,
-) {
-	const port = Number.parseInt(opts.port, 10);
-	if (Number.isNaN(port) || port <= 0 || port >= 65536) {
-		throw new Error("Port must be between 1 and 65535");
-	}
-	await deps.ensurePortAvailable(port);
- 
-	const server = await deps.startWebhook(
-		port,
-		opts.path,
-		opts.reply,
-		Boolean(opts.verbose),
-	);
-	return server;
-}
- 
-async function performUp(
-	opts: {
-		port: string;
-		path: string;
-		verbose?: boolean;
-		yes?: boolean;
-	},
-	deps: CliDeps,
-	exitFn: (code: number) => never = defaultRuntime.exit,
-	runtime: RuntimeEnv = defaultRuntime,
-) {
-	const port = Number.parseInt(opts.port, 10);
-	if (Number.isNaN(port) || port <= 0 || port >= 65536) {
-		throw new Error("Port must be between 1 and 65535");
-	}
- 
-	await deps.ensurePortAvailable(port);
- 
-	// Validate env and binaries
-	const env = deps.readEnv(runtime);
-	await deps.ensureBinary("tailscale", runExec, runtime);
- 
-	// Enable Funnel first so we don't keep a webhook running on failure
-	await deps.ensureFunnel(port, runExec, runtime, promptYesNo);
-	const host = await deps.getTailnetHostname(runExec);
-	const publicUrl = `https://${host}${opts.path}`;
-	console.log(`🌐 Public webhook URL (via Funnel): ${publicUrl}`);
- 
-	// Start webhook locally (after funnel success)
-	const server = await deps.startWebhook(
-		port,
-		opts.path,
-		undefined,
-		Boolean(opts.verbose),
-	);
- 
-	// Configure Twilio sender webhook
-	const client = createClient(env);
-	const senderSid = await deps.findWhatsappSenderSid(
-		client,
-		env.whatsappFrom,
-		env.whatsappSenderSid,
-	);
-	await deps.updateWebhook(client, senderSid, publicUrl, "POST", runtime);
- 
-	console.log(
-		"\nSetup complete. Leave this process running to keep the webhook online. Ctrl+C to stop.",
-	);
-	return { server, publicUrl, senderSid };
-}
- 
-type ListedMessage = {
-	sid: string;
-	status: string | null;
-	direction: string | null;
-	dateCreated?: Date | null;
-	from?: string | null;
-	to?: string | null;
-	body?: string | null;
-	errorCode?: number | null;
-	errorMessage?: string | null;
-};
- 
-function uniqueBySid(messages: ListedMessage[]): ListedMessage[] {
-	const seen = new Set<string>();
-	const deduped: ListedMessage[] = [];
-	for (const m of messages) {
-		if (seen.has(m.sid)) continue;
-		seen.add(m.sid);
-		deduped.push(m);
-	}
-	return deduped;
-}
- 
-function sortByDateDesc(messages: ListedMessage[]): ListedMessage[] {
-	return [...messages].sort((a, b) => {
-		const da = a.dateCreated?.getTime() ?? 0;
-		const db = b.dateCreated?.getTime() ?? 0;
-		return db - da;
-	});
-}
- 
-function formatMessageLine(m: ListedMessage): string {
-	const ts = m.dateCreated?.toISOString() ?? "unknown-time";
-	const dir =
-		m.direction === "inbound"
-			? "⬅️ "
-			: m.direction === "outbound-api" || m.direction === "outbound-reply"
-				? "➡️ "
-				: "↔️ ";
-	const status = m.status ?? "unknown";
-	const err =
-		m.errorCode != null
-			? ` error ${m.errorCode}${m.errorMessage ? ` (${m.errorMessage})` : ""}`
-			: "";
-	const body = (m.body ?? "").replace(/\s+/g, " ").trim();
-	const bodyPreview =
-		body.length > 140 ? `${body.slice(0, 137)}…` : body || "<empty>";
-	return `[${ts}] ${dir}${m.from ?? "?"} -> ${m.to ?? "?"} | ${status}${err} | ${bodyPreview} (sid ${m.sid})`;
-}
- 
-async function listRecentMessages(
-	lookbackMinutes: number,
-	limit: number,
-	clientOverride?: ReturnType<typeof createClient>,
-): Promise<ListedMessage[]> {
-	const env = readEnv();
-	const client = clientOverride ?? createClient(env);
-	const from = withWhatsAppPrefix(env.whatsappFrom);
-	const since = new Date(Date.now() - lookbackMinutes * 60_000);
- 
-	// Fetch inbound (to our WA number) and outbound (from our WA number), merge, sort, limit.
-	const fetchLimit = Math.min(Math.max(limit * 2, limit + 10), 100);
-	const inbound = await client.messages.list({
-		to: from,
-		dateSentAfter: since,
-		limit: fetchLimit,
-	});
-	const outbound = await client.messages.list({
-		from,
-		dateSentAfter: since,
-		limit: fetchLimit,
-	});
- 
-	const combined = uniqueBySid(
-		[...inbound, ...outbound].map((m) => ({
-			sid: m.sid,
-			status: m.status ?? null,
-			direction: m.direction ?? null,
-			dateCreated: m.dateCreated,
-			from: m.from,
-			to: m.to,
-			body: m.body,
-			errorCode: m.errorCode ?? null,
-			errorMessage: m.errorMessage ?? null,
-		})),
-	);
- 
-	return sortByDateDesc(combined).slice(0, limit);
-}
- 
-program
-	.name("warelay")
-	.description("WhatsApp relay CLI (Twilio or WhatsApp Web session)")
-	.version("1.0.0");
- 
-program
-	.command("web:login")
-	.description("Link your personal WhatsApp via QR (web provider)")
-	.option("--verbose", "Verbose connection logs", false)
-	.action(async (opts) => {
-		setVerbose(Boolean(opts.verbose));
-		try {
-			await loginWeb(Boolean(opts.verbose));
-		} catch (err) {
-			defaultRuntime.error(danger(`Web login failed: ${String(err)}`));
-			defaultRuntime.exit(1);
-		}
-	});
- 
-program
-	.command("send")
-	.description("Send a WhatsApp message")
-	.requiredOption(
-		"-t, --to <number>",
-		"Recipient number in E.164 (e.g. +15551234567)",
-	)
-	.requiredOption("-m, --message <text>", "Message body")
-	.option("-w, --wait <seconds>", "Wait for delivery status (0 to skip)", "20")
-	.option("-p, --poll <seconds>", "Polling interval while waiting", "2")
-	.option("--provider <provider>", "Provider: twilio | web", "twilio")
-	.addHelpText(
-		"after",
-		`
-Examples:
-  warelay send --to +15551234567 --message "Hi"                # wait 20s for delivery (default)
-  warelay send --to +15551234567 --message "Hi" --wait 0       # fire-and-forget
-  warelay send --to +15551234567 --message "Hi" --wait 60 --poll 3`,
-	)
-	.action(async (opts) => {
-		const deps = createDefaultDeps();
-		try {
-			await sendCommand(opts, deps, defaultRuntime);
-		} catch (err) {
-			defaultRuntime.error(String(err));
-			defaultRuntime.exit(1);
-		}
-	});
- 
-program
-	.command("monitor")
-	.description("Poll Twilio for inbound WhatsApp messages")
-	.option("-i, --interval <seconds>", "Polling interval in seconds", "5")
-	.option("-l, --lookback <minutes>", "Initial lookback window in minutes", "5")
-	.addHelpText(
-		"after",
-		`
-Examples:
-  warelay monitor                         # poll every 5s, look back 5 minutes
-  warelay monitor --interval 2 --lookback 30`,
-	)
-	.action(async (opts) => {
-		const intervalSeconds = Number.parseInt(opts.interval, 10);
-		const lookbackMinutes = Number.parseInt(opts.lookback, 10);
- 
-		if (Number.isNaN(intervalSeconds) || intervalSeconds <= 0) {
-			defaultRuntime.error("Interval must be a positive integer");
-			defaultRuntime.exit(1);
-		}
-		if (Number.isNaN(lookbackMinutes) || lookbackMinutes < 0) {
-			defaultRuntime.error("Lookback must be >= 0 minutes");
-			defaultRuntime.exit(1);
-		}
- 
-		await monitor(intervalSeconds, lookbackMinutes);
-	});
- 
-program
-	.command("web:monitor")
-	.description("Listen for inbound messages via personal WhatsApp Web and auto-reply")
-	.option("--verbose", "Verbose logging", false)
-	.addHelpText(
-		"after",
-		`
-Examples:
-  warelay web:monitor            # start auto-replies on your linked web session
-  warelay web:monitor --verbose  # show low-level Baileys logs
-`,
-	)
-	.action(async (opts) => {
-		setVerbose(Boolean(opts.verbose));
-		await monitorWebProvider(Boolean(opts.verbose));
-	});
- 
-program
-	.command("status")
-	.description("Show recent WhatsApp messages (sent and received)")
-	.option("-l, --limit <count>", "Number of messages to show", "20")
-	.option("-b, --lookback <minutes>", "How far back to fetch messages", "240")
-	.option("--json", "Output JSON instead of text", false)
-	.addHelpText(
-		"after",
-		`
-Examples:
-  warelay status                            # last 20 msgs in past 4h
-  warelay status --limit 5 --lookback 30    # last 5 msgs in past 30m
-  warelay status --json --limit 50          # machine-readable output`,
-	)
-	.action(async (opts) => {
-		const deps = createDefaultDeps();
-		try {
-			await statusCommand(opts, deps, defaultRuntime);
-		} catch (err) {
-			defaultRuntime.error(String(err));
-			defaultRuntime.exit(1);
-		}
-	});
- 
-program
-	.command("poll")
-	.description("Poll Twilio for inbound WhatsApp messages (non-webhook mode)")
-	.option("-i, --interval <seconds>", "Polling interval in seconds", "5")
-	.option("-l, --lookback <minutes>", "Initial lookback window in minutes", "5")
-	.option("--verbose", "Verbose logging during polling", false)
-	.addHelpText(
-		"after",
-		`
-Examples:
-  warelay poll                         # poll every 5s, look back 5 minutes
-  warelay poll --interval 2 --lookback 30 --verbose`,
-	)
-	.action(async (opts) => {
-		setVerbose(Boolean(opts.verbose));
-		const intervalSeconds = Number.parseInt(opts.interval, 10);
-		const lookbackMinutes = Number.parseInt(opts.lookback, 10);
- 
-		if (Number.isNaN(intervalSeconds) || intervalSeconds <= 0) {
-			defaultRuntime.error("Interval must be a positive integer");
-			defaultRuntime.exit(1);
-		}
-		if (Number.isNaN(lookbackMinutes) || lookbackMinutes < 0) {
-			defaultRuntime.error("Lookback must be >= 0 minutes");
-			defaultRuntime.exit(1);
-		}
- 
-		await monitor(intervalSeconds, lookbackMinutes);
-	});
- 
-program
-	.command("webhook")
-	.description(
-		"Run a local webhook server for inbound WhatsApp (works with Tailscale/port forward)",
-	)
-	.option("-p, --port <port>", "Port to listen on", "42873")
-	.option("-r, --reply <text>", "Optional auto-reply text")
-	.option("--path <path>", "Webhook path", "/webhook/whatsapp")
-	.option("--verbose", "Log inbound and auto-replies", false)
-	.option("-y, --yes", "Auto-confirm prompts when possible", false)
-	.addHelpText(
-		"after",
-		`
-Examples:
-  warelay webhook                       # listen on 42873
-  warelay webhook --port 45000          # pick a high, less-colliding port
-  warelay webhook --reply "Got it!"     # static auto-reply; otherwise use config file
- 
-With Tailscale:
-  tailscale serve tcp 42873 127.0.0.1:42873
-  (then set Twilio webhook URL to your tailnet IP:42873/webhook/whatsapp)`,
-	)
-	// istanbul ignore next
-	.action(async (opts) => {
-		setVerbose(Boolean(opts.verbose));
-		setYes(Boolean(opts.yes));
-		const deps = createDefaultDeps();
-		try {
-			const server = await webhookCommand(opts, deps, defaultRuntime);
-			process.on("SIGINT", () => {
-				server.close(() => {
-					console.log("\n👋 Webhook stopped");
-					defaultRuntime.exit(0);
-				});
-			});
-			await deps.waitForever();
-		} catch (err) {
-			defaultRuntime.error(String(err));
-			defaultRuntime.exit(1);
-		}
-	});
- 
-program
-	.command("up")
-	.description(
-		"Bring up webhook + Tailscale Funnel + Twilio callback (default webhook mode)",
-	)
-	.option("-p, --port <port>", "Port to listen on", "42873")
-	.option("--path <path>", "Webhook path", "/webhook/whatsapp")
-	.option("--verbose", "Verbose logging during setup/webhook", false)
-	.option("-y, --yes", "Auto-confirm prompts when possible", false)
-	// istanbul ignore next
-	.action(async (opts) => {
-		setVerbose(Boolean(opts.verbose));
-		setYes(Boolean(opts.yes));
-		const deps = createDefaultDeps();
-		try {
-			const { server } = await upCommand(opts, deps, defaultRuntime);
-			process.on("SIGINT", () => {
-				server.close(() => {
-					console.log("\n👋 Webhook stopped");
-					defaultRuntime.exit(0);
-				});
-			});
-			await deps.waitForever();
-		} catch (err) {
-			defaultRuntime.error(String(err));
-			defaultRuntime.exit(1);
-		}
-	});
- 
-export {
-	assertProvider,
-	autoReplyIfConfigured,
-	applyTemplate,
-	createClient,
-	deriveSessionKey,
-	describePortOwner,
-	ensureBinary,
-	ensureFunnel,
-	ensureGoInstalled,
-	ensurePortAvailable,
-	ensureTailscaledInstalled,
-	findIncomingNumberSid,
-	findMessagingServiceSid,
-	findWhatsappSenderSid,
-	formatMessageLine,
-	formatTwilioError,
-	getReplyFromConfig,
-	getTailnetHostname,
-	handlePortError,
-	logTwilioSendError,
-	listRecentMessages,
-	loadConfig,
-	loadSessionStore,
-	monitor,
-	monitorWebProvider,
-	normalizeE164,
-	PortInUseError,
-	promptYesNo,
-	createDefaultDeps,
-	performSend,
-	performStatus,
-	performUp,
-	performWebhookSetup,
-	readEnv,
-	resolveStorePath,
-	runCommandWithTimeout,
-	runExec,
-	saveSessionStore,
-	sendMessage,
-	sendTypingIndicator,
-	setMessagingServiceWebhook,
-	sortByDateDesc,
-	startWebhook,
-	updateWebhook,
-	uniqueBySid,
-	waitForFinalStatus,
-	waitForever,
-	toWhatsappJid,
-	program,
-};
- 
-const isMain =
-	process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1];
- 
-Iif (isMain) {
-	program.parseAsync(process.argv);
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/src/provider-web.ts.html b/coverage/src/provider-web.ts.html deleted file mode 100644 index e0ccd18f6..000000000 --- a/coverage/src/provider-web.ts.html +++ /dev/null @@ -1,892 +0,0 @@ - - - - - - Code coverage report for src/provider-web.ts - - - - - - - - - -
-
-

All files / src provider-web.ts

-
- -
- 64% - Statements - 80/125 -
- - -
- 43.67% - Branches - 38/87 -
- - -
- 87.5% - Functions - 14/16 -
- - -
- 70.53% - Lines - 79/112 -
- - -
-

- 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  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -4x -  -  -4x -4x -4x -4x -4x -  -  -  -  -  -  -  -  -  -  -  -  -4x -4x -  -  -3x -3x -  -  -  -3x -  -  -  -  -  -  -  -3x -  -  -  -  -  -4x -  -  -  -4x -  -  -  -4x -  -4x -4x -4x -3x -3x -  -4x -1x -1x -  -  -  -4x -  -  -  -  -  -  -  -  -1x -1x -1x -1x -1x -1x -  -  -  -1x -1x -1x -  -1x -1x -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -1x -1x -  -1x -1x -1x -1x -  -1x -1x -1x -1x -1x -  -1x -  -1x -1x -1x -1x -1x -1x -1x -1x -  -  -  -  -1x -1x -  -1x -  -  -1x -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -  -1x -1x -  -  -  -  -  -  -  -  -1x -1x -1x -  -  -1x -  -1x -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - 
import fs from "node:fs/promises";
-import os from "node:os";
-import path from "node:path";
-import {
-	DisconnectReason,
-	fetchLatestBaileysVersion,
-	makeCacheableSignalKeyStore,
-	makeWASocket,
-	useMultiFileAuthState,
-} from "baileys";
-import type { proto } from "baileys";
-import pino from "pino";
-import qrcode from "qrcode-terminal";
-import { danger, info, logVerbose, success } from "./globals.js";
-import { ensureDir, jidToE164, toWhatsappJid } from "./utils.js";
- 
-const WA_WEB_AUTH_DIR = path.join(os.homedir(), ".warelay", "waweb");
- 
-export async function createWaSocket(printQr: boolean, verbose: boolean) {
-	await ensureDir(WA_WEB_AUTH_DIR);
-	const { state, saveCreds } = await useMultiFileAuthState(WA_WEB_AUTH_DIR);
-	const { version } = await fetchLatestBaileysVersion();
-	const logger = pino({ level: verbose ? "info" : "silent" });
-	const sock = makeWASocket({
-		auth: {
-			creds: state.creds,
-			keys: makeCacheableSignalKeyStore(state.keys, logger),
-		},
-		version,
-		logger,
-		printQRInTerminal: false,
-		browser: ["Warelay", "CLI", "1.0.0"],
-		syncFullHistory: false,
-		markOnlineOnConnect: false,
-	});
- 
-	sock.ev.on("creds.update", saveCreds);
-	sock.ev.on(
-		"connection.update",
-		(update: Partial<import("baileys").ConnectionState>) => {
-			const { connection, lastDisconnect, qr } = update;
-			Iif (qr && printQr) {
-				console.log("Scan this QR in WhatsApp (Linked Devices):");
-				qrcode.generate(qr, { small: true });
-			}
-			Iif (connection === "close") {
-				const status = getStatusCode(lastDisconnect?.error);
-				if (status === DisconnectReason.loggedOut) {
-					console.error(
-						danger("WhatsApp session logged out. Run: warelay web:login"),
-					);
-				}
-			}
-			Iif (connection === "open" && verbose) {
-				console.log(success("WhatsApp Web connected."));
-			}
-		},
-	);
- 
-	return sock;
-}
- 
-export async function waitForWaConnection(sock: ReturnType<typeof makeWASocket>) {
-	return new Promise<void>((resolve, reject) => {
-		type OffCapable = {
-			off?: (event: string, listener: (...args: unknown[]) => void) => void;
-		};
-		const evWithOff = sock.ev as unknown as OffCapable;
- 
-		const handler = (...args: unknown[]) => {
-			const update = (args[0] ?? {}) as Partial<import("baileys").ConnectionState>;
-			if (update.connection === "open") {
-				evWithOff.off?.("connection.update", handler);
-				resolve();
-			}
-			if (update.connection === "close") {
-				evWithOff.off?.("connection.update", handler);
-				reject(update.lastDisconnect ?? new Error("Connection closed"));
-			}
-		};
- 
-		sock.ev.on("connection.update", handler);
-	});
-}
- 
-export async function sendMessageWeb(
-	to: string,
-	body: string,
-	options: { verbose: boolean },
-) {
-	const sock = await createWaSocket(false, options.verbose);
-	try {
-		await waitForWaConnection(sock);
-		const jid = toWhatsappJid(to);
-		try {
-			await sock.sendPresenceUpdate("composing", jid);
-		} catch (err) {
-			logVerbose(`Presence update skipped: ${String(err)}`);
-		}
-		const result = await sock.sendMessage(jid, { text: body });
-		const messageId = result?.key?.id ?? "unknown";
-		console.log(success(`✅ Sent via web session. Message ID: ${messageId} -> ${jid}`));
-	} finally {
-		try {
-			sock.ws?.close();
-		} catch (err) {
-			logVerbose(`Socket close failed: ${String(err)}`);
-		}
-	}
-}
- 
-export async function loginWeb(
-	verbose: boolean,
-	waitForConnection: typeof waitForWaConnection = waitForWaConnection,
-) {
-	const sock = await createWaSocket(true, verbose);
-	console.log(info("Waiting for WhatsApp connection..."));
-	try {
-		await waitForConnection(sock);
-		console.log(success("✅ Linked! Credentials saved for future sends."));
-	} catch (err) {
-		const code =
-			(err as { error?: { output?: { statusCode?: number } } })?.error?.output
-				?.statusCode ??
-			(err as { output?: { statusCode?: number } })?.output?.statusCode;
-		if (code === 515) {
-			console.log(
-				info(
-					"WhatsApp asked for a restart after pairing (code 515); creds are saved. You can now send with provider=web.",
-				),
-			);
-			return;
-		}
-		if (code === DisconnectReason.loggedOut) {
-			await fs.rm(WA_WEB_AUTH_DIR, { recursive: true, force: true });
-			console.error(
-				danger(
-					"WhatsApp reported the session is logged out. Cleared cached web session; please rerun warelay web:login and scan the QR again.",
-				),
-			);
-			throw new Error("Session logged out; cache cleared. Re-run web:login.");
-		}
-		const formatted = formatError(err);
-		console.error(
-			danger(
-				`WhatsApp Web connection ended before fully opening. ${formatted}`,
-			),
-		);
-		throw new Error(formatted);
-	} finally {
-		setTimeout(() => {
-			try {
-				sock.ws?.close();
-			} catch {
-				// ignore
-			}
-		}, 500);
-	}
-}
- 
-export { WA_WEB_AUTH_DIR };
- 
-export type WebInboundMessage = {
-	id?: string;
-	from: string;
-	to: string;
-	body: string;
-	pushName?: string;
-	timestamp?: number;
-	sendComposing: () => Promise<void>;
-	reply: (text: string) => Promise<void>;
-};
- 
-export async function monitorWebInbox(options: {
-	verbose: boolean;
-	onMessage: (msg: WebInboundMessage) => Promise<void>;
-}) {
-	const sock = await createWaSocket(false, options.verbose);
-	await waitForWaConnection(sock);
-	const selfJid = sock.user?.id;
-	const selfE164 = selfJid ? jidToE164(selfJid) : null;
-	const seen = new Set<string>();
- 
-	sock.ev.on("messages.upsert", async (upsert) => {
-		Iif (upsert.type !== "notify") return;
-		for (const msg of upsert.messages) {
-			const id = msg.key?.id ?? undefined;
-			// De-dupe on message id; Baileys can emit retries.
-			Iif (id && seen.has(id)) continue;
-			Eif (id) seen.add(id);
-			Iif (msg.key?.fromMe) continue;
-			const remoteJid = msg.key?.remoteJid;
-			Iif (!remoteJid) continue;
-			// Ignore status/broadcast traffic; we only care about direct chats.
-			Iif (remoteJid.endsWith("@status") || remoteJid.endsWith("@broadcast"))
-				continue;
-			const from = jidToE164(remoteJid);
-			Iif (!from) continue;
-			const body = extractText(msg.message);
-			Iif (!body) continue;
-			const chatJid = remoteJid;
-			const sendComposing = async () => {
-				try {
-					await sock.sendPresenceUpdate("composing", chatJid);
-				} catch (err) {
-					logVerbose(`Presence update failed: ${String(err)}`);
-				}
-			};
-			const reply = async (text: string) => {
-				await sock.sendMessage(chatJid, { text });
-			};
-			const timestamp = msg.messageTimestamp
-				? Number(msg.messageTimestamp) * 1000
-				: undefined;
-			try {
-				await options.onMessage({
-					id,
-					from,
-					to: selfE164 ?? "me",
-					body,
-					pushName: msg.pushName ?? undefined,
-					timestamp,
-					sendComposing,
-					reply,
-				});
-			} catch (err) {
-				console.error(danger(`Failed handling inbound web message: ${String(err)}`));
-			}
-		}
-	});
- 
-	return {
-		close: async () => {
-			try {
-				sock.ws?.close();
-			} catch (err) {
-				logVerbose(`Socket close failed: ${String(err)}`);
-			}
-		},
-	};
-}
- 
-function extractText(message: proto.IMessage | undefined): string | undefined {
-	Iif (!message) return undefined;
-	Eif (typeof message.conversation === "string" && message.conversation.trim()) {
-		return message.conversation.trim();
-	}
-	const extended = message.extendedTextMessage?.text;
-	Iif (extended?.trim()) return extended.trim();
-	const caption = message.imageMessage?.caption ?? message.videoMessage?.caption;
-	Iif (caption?.trim()) return caption.trim();
-	return undefined;
-}
- 
-function getStatusCode(err: unknown) {
-	return (
-		(err as { output?: { statusCode?: number } })?.output?.statusCode ??
-		(err as { status?: number })?.status
-	);
-}
- 
-function formatError(err: unknown): string {
-	if (err instanceof Error) return err.message;
-	if (typeof err === "string") return err;
-	const status = getStatusCode(err);
-	const code = (err as { code?: unknown })?.code;
-	if (status || code) return `status=${status ?? "unknown"} code=${code ?? "unknown"}`;
-	return String(err);
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/src/utils.ts.html b/coverage/src/utils.ts.html deleted file mode 100644 index 95035c8e5..000000000 --- a/coverage/src/utils.ts.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - - - Code coverage report for src/utils.ts - - - - - - - - - -
-
-

All files / src utils.ts

-
- -
- 95.65% - Statements - 22/23 -
- - -
- 91.66% - Branches - 11/12 -
- - -
- 100% - Functions - 9/9 -
- - -
- 100% - Lines - 19/19 -
- - -
-

- 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  -  -  -  -5x -  -  -  -  -  -6x -2x -  -  -  -  -3x -2x -  -  -  -13x -  -  -  -10x -10x -10x -2x -  -  -  -3x -3x -3x -  -  -  -  -2x -2x -2x -2x -  -  -  -833x -  -  -5x - 
import fs from "node:fs";
-import os from "node:os";
- 
-export async function ensureDir(dir: string) {
-	await fs.promises.mkdir(dir, { recursive: true });
-}
- 
-export type Provider = "twilio" | "web";
- 
-export function assertProvider(input: string): asserts input is Provider {
-	if (input !== "twilio" && input !== "web") {
-		throw new Error("Provider must be 'twilio' or 'web'");
-	}
-}
- 
-export function normalizePath(p: string): string {
-	if (!p.startsWith("/")) return `/${p}`;
-	return p;
-}
- 
-export function withWhatsAppPrefix(number: string): string {
-	return number.startsWith("whatsapp:") ? number : `whatsapp:${number}`;
-}
- 
-export function normalizeE164(number: string): string {
-	const withoutPrefix = number.replace(/^whatsapp:/, "").trim();
-	const digits = withoutPrefix.replace(/[^\d+]/g, "");
-	if (digits.startsWith("+")) return `+${digits.slice(1)}`;
-	return `+${digits}`;
-}
- 
-export function toWhatsappJid(number: string): string {
-	const e164 = normalizeE164(number);
-	const digits = e164.replace(/\D/g, "");
-	return `${digits}@s.whatsapp.net`;
-}
- 
-export function jidToE164(jid: string): string | null {
-	// Convert a WhatsApp JID (with optional device suffix, e.g. 1234:1@s.whatsapp.net) back to +1234.
-	const match = jid.match(/^(\d+)(?::\d+)?@s\.whatsapp\.net$/);
-	Iif (!match) return null;
-	const digits = match[1];
-	return `+${digits}`;
-}
- 
-export function sleep(ms: number) {
-	return new Promise((resolve) => setTimeout(resolve, ms));
-}
- 
-export const CONFIG_DIR = `${os.homedir()}/.warelay`;
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/test/mocks/baileys.ts.html b/coverage/test/mocks/baileys.ts.html deleted file mode 100644 index 75e6bf41d..000000000 --- a/coverage/test/mocks/baileys.ts.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - Code coverage report for test/mocks/baileys.ts - - - - - - - - - -
-
-

All files / test/mocks baileys.ts

-
- -
- 92.85% - Statements - 13/14 -
- - -
- 100% - Branches - 0/0 -
- - -
- 85.71% - Functions - 6/7 -
- - -
- 92.3% - Lines - 12/13 -
- - -
-

- 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  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -7x -7x -3x -3x -  -  -  -  -  -  -3x -3x -3x -  -  -7x -  -  -4x -  -4x -  -  -  -  -  -  -7x -  -3x -  -  - 
import { vi } from "vitest";
- 
-export type MockBaileysSocket = {
-	ev: import("events").EventEmitter;
-	ws: { close: ReturnType<typeof vi.fn> };
-	sendPresenceUpdate: ReturnType<typeof vi.fn>;
-	sendMessage: ReturnType<typeof vi.fn>;
-	user?: { id?: string };
-};
- 
-export type MockBaileysModule = {
-	DisconnectReason: { loggedOut: number };
-	fetchLatestBaileysVersion: ReturnType<typeof vi.fn>;
-	makeCacheableSignalKeyStore: ReturnType<typeof vi.fn>;
-	makeWASocket: ReturnType<typeof vi.fn>;
-	useMultiFileAuthState: ReturnType<typeof vi.fn>;
-	jidToE164?: (jid: string) => string | null;
-	proto?: unknown;
-};
- 
-export function createMockBaileys(): { mod: MockBaileysModule; lastSocket: () => MockBaileysSocket } {
-	const sockets: MockBaileysSocket[] = [];
-	const makeWASocket = vi.fn((opts: unknown) => {
-		const ev = new (require("events").EventEmitter)();
-		const sock: MockBaileysSocket = {
-			ev,
-			ws: { close: vi.fn() },
-			sendPresenceUpdate: vi.fn().mockResolvedValue(undefined),
-			sendMessage: vi.fn().mockResolvedValue({ key: { id: "msg123" } }),
-			user: { id: "123@s.whatsapp.net" },
-		};
-		setImmediate(() => ev.emit("connection.update", { connection: "open" }));
-		sockets.push(sock);
-		return sock;
-	});
- 
-	const mod: MockBaileysModule = {
-		DisconnectReason: { loggedOut: 401 },
-		fetchLatestBaileysVersion: vi.fn().mockResolvedValue({ version: [1, 2, 3] }),
-		makeCacheableSignalKeyStore: vi.fn((keys: unknown) => keys),
-		makeWASocket,
-		useMultiFileAuthState: vi.fn(async () => ({
-			state: { creds: {}, keys: {} },
-			saveCreds: vi.fn(),
-		})),
-		jidToE164: (jid: string) => jid.replace(/@.*$/, "").replace(/^/, "+"),
-	};
- 
-	return {
-		mod,
-		lastSocket: () => sockets[sockets.length - 1]!,
-	};
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/test/mocks/index.html b/coverage/test/mocks/index.html deleted file mode 100644 index 26c73ffba..000000000 --- a/coverage/test/mocks/index.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - Code coverage report for test/mocks - - - - - - - - - -
-
-

All files test/mocks

-
- -
- 83.87% - Statements - 26/31 -
- - -
- 100% - Branches - 0/0 -
- - -
- 61.53% - Functions - 8/13 -
- - -
- 96% - Lines - 24/25 -
- - -
-

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

- -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FileStatementsBranchesFunctionsLines
baileys.ts -
-
92.85%13/14100%0/085.71%6/792.3%12/13
twilio.ts -
-
76.47%13/17100%0/033.33%2/6100%12/12
-
-
-
- - - - - - - - \ No newline at end of file diff --git a/coverage/test/mocks/twilio.ts.html b/coverage/test/mocks/twilio.ts.html deleted file mode 100644 index 2f4904899..000000000 --- a/coverage/test/mocks/twilio.ts.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - - - Code coverage report for test/mocks/twilio.ts - - - - - - - - - -
-
-

All files / test/mocks twilio.ts

-
- -
- 76.47% - Statements - 13/17 -
- - -
- 100% - Branches - 0/0 -
- - -
- 33.33% - Functions - 2/6 -
- - -
- 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  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -1x -1x -1x -  -1x -  -  -  -1x -  -1x -  -1x -  -  -1x -  -1x -  -  -  -  -  -  -  -  -  -2x -1x -  -1x -  - 
import { vi } from "vitest";
- 
-export type MockTwilioClient = {
-	messages: {
-		create: ReturnType<typeof vi.fn>;
-		list: ReturnType<typeof vi.fn>;
-		fetch?: ReturnType<typeof vi.fn>;
-	};
-	request?: ReturnType<typeof vi.fn>;
-	messaging?: {
-		v2: { channelsSenders: ReturnType<typeof vi.fn> };
-		v1: { services: ReturnType<typeof vi.fn> };
-	};
-	incomingPhoneNumbers?: ReturnType<typeof vi.fn>;
-};
- 
-export function createMockTwilio() {
-	const messages = vi.fn((sid?: string) => ({ fetch: vi.fn() })) as any;
-	messages.create = vi.fn();
-	messages.list = vi.fn();
- 
-	const channelsSenders = vi.fn((sid?: string) => ({
-		fetch: vi.fn(),
-		update: vi.fn(),
-	})) as any;
-	channelsSenders.list = vi.fn();
- 
-	const services = vi.fn(() => ({ update: vi.fn(), fetch: vi.fn() }));
- 
-	const incomingPhoneNumbers = vi.fn((sid?: string) => ({
-		update: vi.fn(),
-	})) as any;
-	incomingPhoneNumbers.list = vi.fn();
- 
-	const client: MockTwilioClient = {
-		messages,
-		request: vi.fn(),
-		messaging: {
-			v2: { channelsSenders },
-			v1: { services },
-		},
-		incomingPhoneNumbers,
-	};
- 
-	const factory = vi.fn(() => client) as any;
-	(factory as any)._client = client;
- 
-	return { client, factory };
-}
- 
- -
-
- - - - - - - - \ No newline at end of file diff --git a/src/index.core.test.ts b/src/index.core.test.ts index 0035d584e..22b1d1e8c 100644 --- a/src/index.core.test.ts +++ b/src/index.core.test.ts @@ -143,6 +143,42 @@ describe("config and templating", () => { const argvSecond = runSpy.mock.calls[1][0]; expect(argvSecond[2]).toBe("--resume"); }); + + it("injects Claude output format + print flag when configured", async () => { + const runSpy = vi.spyOn(index, "runCommandWithTimeout").mockResolvedValue({ + stdout: "ok", + stderr: "", + code: 0, + signal: null, + killed: false, + }); + const cfg = { + inbound: { + reply: { + mode: "command" as const, + command: ["claude", "{{Body}}"], + claudeOutputFormat: "text" as const, + }, + }, + }; + + await index.getReplyFromConfig( + { Body: "hi", From: "+1555", To: "+1666" }, + undefined, + cfg, + runSpy, + ); + + const argv = runSpy.mock.calls[0][0]; + expect(argv[0]).toBe("claude"); + expect(argv.at(-1)).toBe("hi"); + expect(argv.includes("-p") || argv.includes("--print")).toBe(true); + const outputIdx = argv.findIndex( + (part) => part === "--output-format" || part.startsWith("--output-format="), + ); + expect(outputIdx).toBeGreaterThan(-1); + expect(argv[outputIdx + 1]).toBe("text"); + }); }); describe("twilio interactions", () => {