varlock 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/auto-load.js +8 -8
- package/dist/{chunk-RZT65DRA.js → chunk-35SAMS66.js} +4 -4
- package/dist/{chunk-RZT65DRA.js.map → chunk-35SAMS66.js.map} +1 -1
- package/dist/{chunk-XVVLI2E7.js → chunk-3FLO3UFZ.js} +17 -11
- package/dist/chunk-3FLO3UFZ.js.map +1 -0
- package/dist/{chunk-FPQYEKFF.js → chunk-4N3YR2QQ.js} +4 -4
- package/dist/{chunk-FPQYEKFF.js.map → chunk-4N3YR2QQ.js.map} +1 -1
- package/dist/{chunk-XN24GZXQ.js → chunk-6PEHRAEP.js} +3 -8
- package/dist/{chunk-XN24GZXQ.js.map → chunk-6PEHRAEP.js.map} +1 -1
- package/dist/chunk-BHHYQ7SH.js +18 -0
- package/dist/{chunk-7SH6C6WJ.js.map → chunk-BHHYQ7SH.js.map} +1 -1
- package/dist/{chunk-RD44SH5U.js → chunk-FETFVFG5.js} +117 -23
- package/dist/chunk-FETFVFG5.js.map +1 -0
- package/dist/{chunk-RFRTLWK3.js → chunk-HPUQ2CCN.js} +6 -6
- package/dist/{chunk-RFRTLWK3.js.map → chunk-HPUQ2CCN.js.map} +1 -1
- package/dist/{chunk-FGMXIEFA.js → chunk-MIBOBKI4.js} +3 -3
- package/dist/{chunk-FGMXIEFA.js.map → chunk-MIBOBKI4.js.map} +1 -1
- package/dist/chunk-N2HZMIGS.js +1532 -0
- package/dist/chunk-N2HZMIGS.js.map +1 -0
- package/dist/{chunk-NDRSG3XS.js → chunk-N4REMPVX.js} +23 -14
- package/dist/chunk-N4REMPVX.js.map +1 -0
- package/dist/{chunk-FUDH2TTI.js → chunk-TVFOIGJP.js} +3 -3
- package/dist/{chunk-FUDH2TTI.js.map → chunk-TVFOIGJP.js.map} +1 -1
- package/dist/{chunk-5IMCRQTM.js → chunk-TYIS6T2T.js} +4 -4
- package/dist/{chunk-5IMCRQTM.js.map → chunk-TYIS6T2T.js.map} +1 -1
- package/dist/chunk-UDXNNRWI.js +1386 -0
- package/dist/chunk-UDXNNRWI.js.map +1 -0
- package/dist/{chunk-HPNRKYVF.js → chunk-UIOEEWG5.js} +4 -4
- package/dist/{chunk-HPNRKYVF.js.map → chunk-UIOEEWG5.js.map} +1 -1
- package/dist/{chunk-MSRPV5WH.js → chunk-WAMBVZL2.js} +4 -4
- package/dist/{chunk-MSRPV5WH.js.map → chunk-WAMBVZL2.js.map} +1 -1
- package/dist/{chunk-L5REVVXG.js → chunk-ZUNB52KY.js} +9 -4
- package/dist/chunk-ZUNB52KY.js.map +1 -0
- package/dist/{chunk-NSY7JMFV.js → chunk-ZXJ4CEDK.js} +4 -4
- package/dist/{chunk-NSY7JMFV.js.map → chunk-ZXJ4CEDK.js.map} +1 -1
- package/dist/cli/cli-executable.js +18 -18
- package/dist/cli/cli-executable.js.map +1 -1
- package/dist/dotenv-compat.js +8 -8
- package/dist/help.command-MLH2WA5Y.js +5 -0
- package/dist/{help.command-B7VWA53B.js.map → help.command-MLH2WA5Y.js.map} +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +9 -9
- package/dist/init.command-DLPZ3R4T.js +8 -0
- package/dist/{init.command-AVNYY5CK.js.map → init.command-DLPZ3R4T.js.map} +1 -1
- package/dist/lib/exec-sync-varlock.js +2 -2
- package/dist/load.command-4G5POJYR.js +8 -0
- package/dist/{load.command-7CCTFAYS.js.map → load.command-4G5POJYR.js.map} +1 -1
- package/dist/run.command-L5LLHOW3.js +9 -0
- package/dist/{run.command-NGRKCLWP.js.map → run.command-L5LLHOW3.js.map} +1 -1
- package/dist/runtime/env.js +3 -3
- package/dist/runtime/patch-console.js +4 -4
- package/dist/runtime/patch-response.js +4 -4
- package/dist/runtime/patch-server-response.js +4 -4
- package/dist/telemetry.command-JF72FOYJ.js +8 -0
- package/dist/{telemetry.command-756WXWYK.js.map → telemetry.command-JF72FOYJ.js.map} +1 -1
- package/package.json +34 -15
- package/dist/chunk-33ROL4J5.js +0 -1013
- package/dist/chunk-33ROL4J5.js.map +0 -1
- package/dist/chunk-7SH6C6WJ.js +0 -18
- package/dist/chunk-L5REVVXG.js.map +0 -1
- package/dist/chunk-L5USEQO6.js +0 -1281
- package/dist/chunk-L5USEQO6.js.map +0 -1
- package/dist/chunk-NDRSG3XS.js.map +0 -1
- package/dist/chunk-RD44SH5U.js.map +0 -1
- package/dist/chunk-XVVLI2E7.js.map +0 -1
- package/dist/en-US-TSGNDI2P.js +0 -22
- package/dist/en-US-TSGNDI2P.js.map +0 -1
- package/dist/help.command-B7VWA53B.js +0 -5
- package/dist/init.command-AVNYY5CK.js +0 -8
- package/dist/ja-JP-UBPCQAAD.js +0 -22
- package/dist/ja-JP-UBPCQAAD.js.map +0 -1
- package/dist/load.command-7CCTFAYS.js +0 -8
- package/dist/run.command-NGRKCLWP.js +0 -9
- package/dist/telemetry.command-756WXWYK.js +0 -8
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/sisteransi@1.0.5/node_modules/sisteransi/src/index.js","../../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/ansi-regex@6.1.0/node_modules/ansi-regex/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/eastasianwidth@0.2.0/node_modules/eastasianwidth/eastasianwidth.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/emoji-regex@9.2.2/node_modules/emoji-regex/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/string-width@5.1.2/node_modules/string-width/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/ansi-styles@6.2.1/node_modules/ansi-styles/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/node_modules/.pnpm/wrap-ansi@8.1.0/node_modules/wrap-ansi/index.js","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/utils/settings.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/utils/string.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/utils/index.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/prompt.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/confirm.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/multi-select.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/password.ts","../../../node_modules/.pnpm/@clack+core@0.5.0/node_modules/@clack/core/src/prompts/select.ts","../../../node_modules/.pnpm/@clack+prompts@0.11.0/node_modules/node_modules/.pnpm/is-unicode-supported@1.3.0/node_modules/is-unicode-supported/index.js","../../../node_modules/.pnpm/@clack+prompts@0.11.0/node_modules/@clack/prompts/src/index.ts","../../utils/src/exec-helpers.ts","../../utils/src/git-utils.ts","../../../node_modules/.pnpm/is-unicode-supported@2.1.0/node_modules/is-unicode-supported/index.js","../src/cli/helpers/prompts.ts","../src/cli/helpers/infer-schema.ts","../src/cli/helpers/find-env-files.ts","../src/cli/commands/init.command.ts"],"names":["x","y","p","ansiRegex","onlyFirst","pattern","regex","stripAnsi","string","e","eaw","module","character","codePoint","code","stringToArray","characters","len","i","text","start","end","result","eawLen","chars","char","charLen","emojiRegex","stringWidth","options","ambiguousCharacterWidth","width","eastAsianWidth","ANSI_BACKGROUND_OFFSET","wrapAnsi16","offset","wrapAnsi256","wrapAnsi16m","red","green","blue","styles","foregroundColorNames","backgroundColorNames","assembleStyles","codes","groupName","group","styleName","style","hex","matches","colorString","integer","remainder","value","ansiStyles","ESCAPES","END_CODE","ANSI_ESCAPE_BELL","ANSI_CSI","ANSI_OSC","ANSI_SGR_TERMINATOR","ANSI_ESCAPE_LINK","wrapAnsiCode","wrapAnsiHyperlink","uri","wordLengths","wrapWord","rows","word","columns","isInsideEscape","isInsideLinkEscape","visible","index","characterLength","stringVisibleTrimSpacesRight","words","last","exec","returnValue","escapeCode","escapeUrl","lengths","rowLength","remainingColumns","breaksStartingThisLine","row","pre","groups","wrapAnsi","line","actions","settings","isActionKey","key","action","diffLines","a","b","aLines","bLines","diff","CANCEL_SYMBOL","isCancel","setRawMode","input","v","t","s","Prompt","trackValue","__publicField","stdin","output","stdout","render","signal","opts","event","params","cb","data","cbs","cleanup","subscriber","resolve","reject","sink","Writable","chunk","encoding","done","readline","cursor","problem","lines","wrap","frame","diffLine","erase","newLines","ConfirmPrompt","confirm","o","l","allSelected","selected","u","SelectPrompt","isUnicodeSupported","process","unicode","c","fallback","S_STEP_ACTIVE","S_STEP_CANCEL","S_STEP_ERROR","S_STEP_SUBMIT","S_BAR","S_BAR_END","S_RADIO_ACTIVE","S_RADIO_INACTIVE","symbol","state","color","limitOptions","paramMaxItems","outputMaxItems","maxItems","slidingWindowLocation","shouldRenderTopEllipsis","shouldRenderBottomEllipsis","option","arr","isTopLimit","isBottomLimit","select","opt","label","title","item","active","path","fs","envSpecUpdater","k"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,gFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,GAAA,GAAM,MAAA;AACZ,IAAA,IAAM,GAAA,GAAM,GAAG,GAAG,CAAA,CAAA,CAAA;AAClB,IAAA,IAAM,IAAA,GAAO,MAAA;AAEb,IAAA,IAAM,MAAA,GAAS;AAAA,MACb,EAAA,CAAGA,IAAGC,EAAAA,EAAG;AACP,QAAA,IAAI,CAACA,EAAAA,EAAG,OAAO,GAAG,GAAG,CAAA,EAAGD,KAAI,CAAC,CAAA,CAAA,CAAA;AAC7B,QAAA,OAAO,GAAG,GAAG,CAAA,EAAGC,KAAI,CAAC,CAAA,CAAA,EAAID,KAAI,CAAC,CAAA,CAAA,CAAA;AAAA,MAChC,CAAA;AAAA,MACA,IAAA,CAAKA,IAAGC,EAAAA,EAAG;AACT,QAAA,IAAI,GAAA,GAAM,EAAA;AAEV,QAAA,IAAID,KAAI,CAAA,EAAG,GAAA,IAAO,GAAG,GAAG,CAAA,EAAG,CAACA,EAAC,CAAA,CAAA,CAAA;AAAA,aAAA,IACpBA,KAAI,CAAA,EAAG,GAAA,IAAO,CAAA,EAAG,GAAG,GAAGA,EAAC,CAAA,CAAA,CAAA;AAEjC,QAAA,IAAIC,KAAI,CAAA,EAAG,GAAA,IAAO,GAAG,GAAG,CAAA,EAAG,CAACA,EAAC,CAAA,CAAA,CAAA;AAAA,aAAA,IACpBA,KAAI,CAAA,EAAG,GAAA,IAAO,CAAA,EAAG,GAAG,GAAGA,EAAC,CAAA,CAAA,CAAA;AAEjC,QAAA,OAAO,GAAA;AAAA,MACT,CAAA;AAAA,MACA,EAAA,0BAAK,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA,EAA7B,IAAA,CAAA;AAAA,MACJ,IAAA,0BAAO,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA,EAA7B,MAAA,CAAA;AAAA,MACN,OAAA,0BAAU,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA,EAA7B,SAAA,CAAA;AAAA,MACT,QAAA,0BAAW,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA,CAAA,EAA7B,UAAA,CAAA;AAAA,MACV,QAAA,0BAAW,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,CAAA,CAAA,CAAI,MAAA,CAAO,KAAK,CAAA,EAArC,UAAA,CAAA;AAAA,MACV,QAAA,0BAAW,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,CAAA,CAAA,CAAI,MAAA,CAAO,KAAK,CAAA,EAArC,UAAA,CAAA;AAAA,MACV,IAAA,EAAM,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,MACZ,IAAA,EAAM,GAAG,GAAG,CAAA,IAAA,CAAA;AAAA,MACZ,IAAA,EAAM,GAAG,GAAG,CAAA,IAAA,CAAA;AAAA,MACZ,IAAA,EAAM,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,MACZ,OAAA,EAAS,GAAG,GAAG,CAAA,CAAA;AAAA,KACjB;AAEA,IAAA,IAAM,MAAA,GAAS;AAAA,MACb,EAAA,0BAAK,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,CAAA,CAAA,CAAI,MAAA,CAAO,KAAK,CAAA,EAArC,IAAA,CAAA;AAAA,MACJ,IAAA,0BAAO,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,CAAA,CAAA,CAAI,MAAA,CAAO,KAAK,CAAA,EAArC,MAAA;AAAA,KACR;AAEA,IAAA,IAAM,KAAA,GAAQ;AAAA,MACZ,MAAA,EAAQ,GAAG,GAAG,CAAA,EAAA,CAAA;AAAA,MACd,EAAA,0BAAK,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,EAAA,CAAA,CAAK,MAAA,CAAO,KAAK,CAAA,EAAtC,IAAA,CAAA;AAAA,MACJ,IAAA,0BAAO,KAAA,GAAQ,CAAA,KAAM,GAAG,GAAG,CAAA,CAAA,CAAA,CAAI,MAAA,CAAO,KAAK,CAAA,EAArC,MAAA,CAAA;AAAA,MACN,IAAA,EAAM,GAAG,GAAG,CAAA,EAAA,CAAA;AAAA,MACZ,OAAA,EAAS,GAAG,GAAG,CAAA,CAAA,CAAA;AAAA,MACf,SAAA,EAAW,GAAG,GAAG,CAAA,EAAA,CAAA;AAAA,MACjB,MAAM,KAAA,EAAO;AACX,QAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,EAAO,CAAA,EAAA;AACzB,UAAA,KAAA,IAAS,KAAK,IAAA,IAAQ,CAAA,GAAI,QAAQ,CAAA,GAAI,MAAA,CAAO,IAAG,GAAI,EAAA,CAAA;AACtD,QAAA,IAAI,KAAA;AACF,UAAA,KAAA,IAAS,MAAA,CAAO,IAAA;AAClB,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,EAAE,MAAA,EAAQ,MAAA,EAAQ,OAAO,IAAA,EAAK;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzD/C,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,iFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAIC,EAAAA,GAAI,WAAW,EAAC;AAApB,IAAA,IAAuB,IAAA,GAAOA,EAAAA,CAAE,IAAA,IAAQ,EAAC;AAAzC,IAAA,IAA4C,GAAA,GAAMA,EAAAA,CAAE,GAAA,IAAO,EAAC;AAC5D,IAAA,IAAI,gBAAA,GACH,EAAE,CAAC,CAAC,GAAA,CAAI,QAAA,IAAY,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,CAAA,KAC7C,CAAC,CAAC,IAAI,WAAA,IAAe,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,IAAKA,EAAAA,CAAE,QAAA,KAAa,OAAA,IAAA,CAAaA,GAAE,MAAA,IAAU,EAAC,EAAG,KAAA,IAAS,GAAA,CAAI,IAAA,KAAS,MAAA,IAAW,CAAC,CAAC,GAAA,CAAI,EAAA,CAAA;AAEtI,IAAA,IAAI,4BAAY,MAAA,CAAA,CAAC,IAAA,EAAM,KAAA,EAAO,OAAA,GAAU,SACvC,CAAA,KAAA,KAAS;AACR,MAAA,IAAI,MAAA,GAAS,KAAK,KAAA,EAAO,KAAA,GAAQ,OAAO,OAAA,CAAQ,KAAA,EAAO,KAAK,MAAM,CAAA;AAClE,MAAA,OAAO,CAAC,KAAA,GAAQ,IAAA,GAAO,YAAA,CAAa,MAAA,EAAQ,KAAA,EAAO,OAAA,EAAS,KAAK,CAAA,GAAI,KAAA,GAAQ,IAAA,GAAO,MAAA,GAAS,KAAA;AAAA,IAC9F,CAAA,EAJe,WAAA,CAAA;AAMhB,IAAA,IAAI,YAAA,mBAAe,MAAA,CAAA,CAAC,MAAA,EAAQ,KAAA,EAAO,SAAS,KAAA,KAAU;AACrD,MAAA,IAAI,MAAA,GAAS,IAAI,MAAA,GAAS,CAAA;AAC1B,MAAA,GAAG;AACF,QAAA,MAAA,IAAU,MAAA,CAAO,SAAA,CAAU,MAAA,EAAQ,KAAK,CAAA,GAAI,OAAA;AAC5C,QAAA,MAAA,GAAS,QAAQ,KAAA,CAAM,MAAA;AACvB,QAAA,KAAA,GAAQ,MAAA,CAAO,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAA;AAAA,MACrC,SAAS,CAAC,KAAA;AACV,MAAA,OAAO,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,MAAM,CAAA;AAAA,IACxC,CAAA,EARmB,cAAA,CAAA;AAUnB,IAAA,IAAI,YAAA,mBAAe,MAAA,CAAA,CAAC,OAAA,GAAU,gBAAA,KAAqB;AAClD,MAAA,IAAI,CAAA,GAAI,OAAA,GAAU,SAAA,GAAY,MAAM,MAAA;AACpC,MAAA,OAAO;AAAA,QACN,gBAAA,EAAkB,OAAA;AAAA,QAClB,KAAA,EAAO,CAAA,CAAE,SAAA,EAAW,SAAS,CAAA;AAAA,QAC7B,IAAA,EAAM,CAAA,CAAE,SAAA,EAAW,UAAA,EAAY,iBAAiB,CAAA;AAAA,QAChD,GAAA,EAAK,CAAA,CAAE,SAAA,EAAW,UAAA,EAAY,iBAAiB,CAAA;AAAA,QAC/C,MAAA,EAAQ,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAC/B,SAAA,EAAW,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAClC,OAAA,EAAS,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAChC,MAAA,EAAQ,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAC/B,aAAA,EAAe,CAAA,CAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAEtC,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC/B,GAAA,EAAK,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC7B,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC/B,MAAA,EAAQ,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAChC,IAAA,EAAM,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC9B,OAAA,EAAS,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACjC,IAAA,EAAM,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC9B,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC/B,IAAA,EAAM,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAE9B,OAAA,EAAS,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACjC,KAAA,EAAO,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAC/B,OAAA,EAAS,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACjC,QAAA,EAAU,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAClC,MAAA,EAAQ,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAChC,SAAA,EAAW,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACnC,MAAA,EAAQ,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAChC,OAAA,EAAS,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAEjC,WAAA,EAAa,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACrC,SAAA,EAAW,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACnC,WAAA,EAAa,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACrC,YAAA,EAAc,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACtC,UAAA,EAAY,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACpC,aAAA,EAAe,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACvC,UAAA,EAAY,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QACpC,WAAA,EAAa,CAAA,CAAE,UAAA,EAAY,UAAU,CAAA;AAAA,QAErC,aAAA,EAAe,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACxC,WAAA,EAAa,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACtC,aAAA,EAAe,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACxC,cAAA,EAAgB,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACzC,YAAA,EAAc,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACvC,eAAA,EAAiB,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QAC1C,YAAA,EAAc,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA;AAAA,QACvC,aAAA,EAAe,CAAA,CAAE,WAAA,EAAa,UAAU;AAAA,OACzC;AAAA,IACD,CAAA,EAlDmB,cAAA,CAAA;AAoDnB,IAAA,MAAA,CAAO,UAAU,YAAA,EAAa;AAC9B,IAAA,MAAA,CAAO,QAAQ,YAAA,GAAe,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;;AC1Ef,SAASC,GAAU,EAAC,SAAA,EAAAC,KAAY,KAAA,EAAK,GAAI,EAAA,EAAI;AAG3D,EAAA,MAAMC,IAAU,CACf,yJAAA,EACA,0DACF,CAAA,CAAG,KAAK,GAAG,CAAA;AAEV,EAAA,OAAO,IAAI,MAAA,CAAOA,CAAAA,EAASD,EAAAA,GAAY,SAAY,GAAG,CAAA;AACvD;AATwBD,MAAAA,CAAAA,EAAAA,EAAAA,IAAAA,CAAAA;ACExB,IAAMG,KAAQH,EAAAA,EAAS;AAER,SAASI,EAAUC,EAAAA,EAAQ;AACzC,EAAA,IAAI,OAAOA,MAAW,QAAA,EACrB,MAAM,IAAI,SAAA,CAAU,CAAA,6BAAA,EAAgC,OAAOA,EAAM,CAAA,EAAA,CAAI,CAAA;AAMtE,EAAA,OAAOA,EAAAA,CAAO,OAAA,CAAQF,EAAAA,EAAO,EAAE,CAAA;AAChC;AATwBC,MAAAA,CAAAA,CAAAA,EAAAA,GAAAA,CAAAA;AASxB,SAAA,EAAAE,EAAAA,EAAA;AAAA,EAAA,OAAAA,EAAAA,IAAAA,EAAAA,CAAA,UAAA,IAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,IAAA,CAAAA,EAAAA,EAAA,SAAA,CAAA,GAAAA,EAAAA,CAAA,OAAA,GAAAA,EAAAA;AAAA;AAAA,MAAA,CAAA,CAAA,EAAA,GAAA,CAAA;AAAA,IAAA,CAAA,GAAA,EAAA,OAAA,EAAA,EAAA,EAAA;AAAA,CAAA,SAAAA,EAAAA,EAAA;ACbA,EAAA,IAAIC,KAAM,EAAA;AAKRC,EAAAA,GAAAA,OAAAA,GAAiBD,EAAAA,EAGnBA,EAAAA,CAAI,cAAA,GAAiB,SAASE,EAAAA,EAAW;AACvC,IAAA,IAAIZ,CAAAA,GAAIY,EAAAA,CAAU,UAAA,CAAW,CAAC,GAC1BX,CAAAA,GAAKW,EAAAA,CAAU,MAAA,IAAU,CAAA,GAAKA,EAAAA,CAAU,UAAA,CAAW,CAAC,CAAA,GAAI,GACxDC,EAAAA,GAAYb,CAAAA;AAQhB,IAAA,OAPK,SAAUA,CAAAA,IAAKA,CAAAA,IAAK,SAAY,KAAA,IAAUC,CAAAA,IAAKA,KAAK,KAAA,KACvDD,CAAAA,IAAK,MACLC,CAAAA,IAAK,IAAA,EACLY,KAAab,CAAAA,IAAK,EAAA,GAAMC,GACxBY,EAAAA,IAAa,KAAA,CAAA,EAGAA,MAAV,KAAA,IACA,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAChC,GAAA,GAEMA,EAAAA,IAAV,QACA,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAChC,GAAA,GAEJ,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,UAAWA,EAAAA,IAAaA,EAAAA,IAAa,UACrC,MAAA,IAAWA,EAAAA,IAAaA,MAAa,MAAA,IACrC,MAAA,IAAWA,MAAaA,EAAAA,IAAa,MAAA,IACrC,MAAA,IAAWA,EAAAA,IAAaA,MAAa,MAAA,IACrC,MAAA,IAAWA,MAAaA,EAAAA,IAAa,MAAA,IACrC,UAAWA,EAAAA,IAAaA,EAAAA,IAAa,UACrC,MAAA,IAAWA,EAAAA,IAAaA,MAAa,MAAA,IACrC,MAAA,IAAWA,MAAaA,EAAAA,IAAa,MAAA,GACjC,MAEJ,EAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IACpC,GAAA,IAAUA,MAAaA,EAAAA,IAAa,GAAA,IACpC,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACA,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAChC,IAAA,GAEMA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OACpC,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IACpC,GAAA,IAAUA,MAAaA,EAAAA,IAAa,GAAA,IACpC,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACA,GAAA,IAAUA,MAAaA,EAAAA,IAAa,GAAA,IACpC,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OACpC,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IAC1BA,EAAAA,IAAV,OACA,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IACpC,GAAA,IAAUA,MAAaA,EAAAA,IAAa,GAAA,IAC1BA,MAAV,GAAA,IACUA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACUA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OACpC,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IAC1BA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACUA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACUA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACUA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACUA,EAAAA,IAAV,OACA,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IAC1BA,EAAAA,IAAV,OACUA,EAAAA,IAAV,GAAA,IACA,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OAC1BA,EAAAA,IAAV,GAAA,IACUA,MAAV,GAAA,IACA,GAAA,IAAUA,EAAAA,IAAaA,EAAAA,IAAa,OACpC,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IACpC,GAAA,IAAUA,MAAaA,EAAAA,IAAa,GAAA,IACpC,OAAUA,EAAAA,IAAaA,EAAAA,IAAa,OACpC,GAAA,IAAUA,EAAAA,IAAaA,MAAa,GAAA,IAC1BA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IAC1BA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACA,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACA,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IAC1BA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IAC1BA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACA,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IAC1BA,EAAAA,IAAV,QACA,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IAC1BA,MAAV,IAAA,IACA,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IAC1BA,MAAV,IAAA,IACA,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,IAAA,IACUA,MAAV,IAAA,IACUA,EAAAA,IAAV,QACUA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QACpC,IAAA,IAAUA,EAAAA,IAAaA,MAAa,IAAA,IACpC,IAAA,IAAUA,MAAaA,EAAAA,IAAa,IAAA,IACpC,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,IAAA,IACA,QAAUA,EAAAA,IAAaA,EAAAA,IAAa,QAC1BA,EAAAA,IAAV,KAAA,IACUA,MAAV,KAAA,IACA,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SACpC,KAAA,IAAUA,EAAAA,IAAaA,MAAa,KAAA,IACpC,KAAA,IAAUA,MAAaA,EAAAA,IAAa,KAAA,IACpC,SAAUA,EAAAA,IAAaA,EAAAA,IAAa,SAC1BA,EAAAA,IAAV,KAAA,IACA,UAAWA,EAAAA,IAAaA,EAAAA,IAAa,UACrC,MAAA,IAAWA,EAAAA,IAAaA,MAAa,MAAA,IACrC,MAAA,IAAWA,MAAaA,EAAAA,IAAa,MAAA,IACrC,UAAWA,EAAAA,IAAaA,EAAAA,IAAa,UACrC,MAAA,IAAWA,EAAAA,IAAaA,MAAa,MAAA,IACrC,MAAA,IAAWA,MAAaA,EAAAA,IAAa,OAAA,IACrC,WAAYA,EAAAA,IAAaA,EAAAA,IAAa,UAClC,GAAA,GAGF,GAAA;EAAA,CAAA,EAGTH,EAAAA,CAAI,eAAA,GAAkB,SAASE,EAAAA,EAAW;AACxC,IAAA,IAAIE,CAAAA,GAAO,IAAA,CAAK,cAAA,CAAeF,EAAS,CAAA;AACxC,IAAA,OAAIE,KAAQ,GAAA,IAAOA,CAAAA,IAAQ,GAAA,IAAOA,CAAAA,IAAQ,MACjC,CAAA,GAEA,CAAA;AAAA,EAAA,CAAA;AAKX,EAAA,SAASC,EAAcP,EAAAA,EAAQ;AAC7B,IAAA,OAAOA,EAAAA,CAAO,KAAA,CAAM,kDAAkD,CAAA,IAAK,EAAA;AAC7E,EAAA;AAFSO,EAAAA,MAAAA,CAAAA,CAAAA,EAAAA,GAAAA,CAAAA;AAITL,EAAAA,EAAAA,CAAI,MAAA,GAAS,SAASF,EAAAA,EAAQ;AAG5B,IAAA,KAAA,IAFIQ,IAAaD,CAAAA,CAAcP,EAAM,GACjCS,CAAAA,GAAM,CAAA,EACDC,KAAI,CAAA,EAAGA,EAAAA,GAAIF,CAAAA,CAAW,MAAA,EAAQE,MACrCD,CAAAA,GAAMA,CAAAA,GAAM,KAAK,eAAA,CAAgBD,CAAAA,CAAWE,EAAC,CAAC,CAAA;AAEhD,IAAA,OAAOD,CAAAA;AAAAA,EAAAA,CAAAA,EAGTP,EAAAA,CAAI,KAAA,GAAQ,SAASS,EAAAA,EAAMC,GAAOC,CAAAA,EAAK;AACrC,IAAA,OAAA,GAAUX,GAAI,MAAA,CAAOS,EAAI,GACzBC,CAAAA,GAAQA,CAAAA,IAAgB,GACxBC,CAAAA,GAAMA,CAAAA,IAAY,CAAA,EACdD,CAAAA,GAAQ,MACRA,CAAAA,GAAQ,OAAA,GAAUA,IAElBC,CAAAA,GAAM,CAAA,KACNA,IAAM,OAAA,GAAUA,CAAAA,CAAAA;AAKpB,IAAA,KAAA,IAHIC,EAAAA,GAAS,EAAA,EACTC,EAAAA,GAAS,CAAA,EACTC,CAAAA,GAAQT,CAAAA,CAAcI,EAAI,CAAA,EACrBD,CAAAA,GAAI,CAAA,EAAGA,CAAAA,GAAIM,CAAAA,CAAM,QAAQN,CAAAA,EAAAA,EAAK;AACrC,MAAA,IAAIO,IAAOD,CAAAA,CAAMN,CAAC,GACdQ,EAAAA,GAAUhB,EAAAA,CAAI,OAAOe,CAAI,CAAA;AAC7B,MAAA,IAAIF,EAAAA,IAAUH,CAAAA,IAASM,EAAAA,IAAW,CAAA,GAAI,CAAA,GAAI,CAAA,CAAA,EACtC,IAAIH,EAAAA,GAASG,EAAAA,IAAWL,CAAAA,EACpBC,EAAAA,IAAUG,CAAAA;AAEV,WAAA;AAGRF,MAAAA,EAAAA,IAAUG,EAAAA;AACd,IAAA;AACE,IAAA,OAAOJ,EAAAA;AAAAA,EAAAA,CAAAA;AAAAA,CAAAA,EAAAA,CAAAA,CAAAA;AAAAA,IAAAA,KAAAA,CAAAA,CAAAA,OAAAA;AAAAA,IAAAA,EAAAA,GAAAA,EAAAA,EAAAA,CAAAA;ACnTT,IAAAK,qBAAiB,MAAA,CAAA,WAAY;AAE3B,EAAA,OAAO,gyeAAA;AACT,CAAA,EAHiB,IAAA,CAAA;AAGjB,IAAA,EAAA,GAAA,EAAA,EAAA,CAAA;ACDe,SAASC,CAAAA,CAAYpB,EAAAA,EAAQqB,EAAAA,GAAU,EAAA,EAAI;AAYzD,EAAA,IAXI,OAAOrB,MAAW,QAAA,IAAYA,EAAAA,CAAO,WAAW,CAAA,KAIpDqB,EAAAA,GAAU,EACT,iBAAA,EAAmB,IAAA,EACnB,GAAGA,EAAAA,EACL,EAECrB,KAASD,CAAAA,CAAUC,EAAM,GAErBA,EAAAA,CAAO,MAAA,KAAW,IACrB,OAAO,CAAA;AAGRA,EAAAA,EAAAA,GAASA,EAAAA,CAAO,OAAA,CAAQmB,EAAAA,IAAc,IAAI,CAAA;AAE1C,EAAA,MAAMG,CAAAA,GAA0BD,EAAAA,CAAQ,iBAAA,GAAoB,CAAA,GAAI,CAAA;AAChE,EAAA,IAAIE,EAAAA,GAAQ,CAAA;AAEZ,EAAA,KAAA,MAAWnB,KAAaJ,EAAAA,EAAQ;AAC/B,IAAA,MAAMK,CAAAA,GAAYD,CAAAA,CAAU,WAAA,CAAY,CAAC,CAAA;AAQzC,IAAA,IALIC,CAAAA,IAAa,MAASA,CAAAA,IAAa,GAAA,IAAQA,KAAa,GAAA,IAKxDA,CAAAA,IAAa,GAAA,IAASA,CAAAA,IAAa,GAAA,EACtC;AAID,IAAA,QADamB,EAAAA,CAAe,cAAA,CAAepB,CAAS,CAAA;MAEnD,KAAK,GAAA;MACL,KAAK,GAAA;AACJmB,QAAAA,EAAAA,IAAS,CAAA;AACT,QAAA;MACD,KAAK,GAAA;AACJA,QAAAA,EAAAA,IAASD,CAAAA;AACT,QAAA;AACD,MAAA;AACCC,QAAAA,EAAAA,IAAS,CAAA;AACV;AACD,EAAA;AAED,EAAA,OAAOA,EAAAA;AACR;AAjDwBH,MAAAA,CAAAA,CAAAA,EAAAA,GAAAA,CAAAA;ACJxB,IAAMK,CAAAA,GAAyB,EAAA;AAA/B,IAEMC,CAAAA,2BAAcC,EAAAA,GAAS,CAAA,KAAMrB,CAAAA,EAAAA,KAAQ,CAAA,KAAA,EAAUA,EAAAA,GAAOqB,EAAM,CAAA,CAAA,CAAA,EAA/C,GAAA,CAAA;AAFnB,IAIMC,CAAAA,mBAAc,MAAA,CAAA,CAACD,EAAAA,GAAS,CAAA,KAAMrB,CAAAA,EAAAA,KAAQ,CAAA,KAAA,EAAU,EAAA,GAAKqB,EAAM,CAAA,GAAA,EAAMrB,EAAI,CAAA,CAAA,CAAA,EAAvD,GAAA,CAAA;AAJpB,IAMMuB,oBAAc,MAAA,CAAA,CAACF,EAAAA,GAAS,CAAA,KAAM,CAACG,IAAKC,CAAAA,EAAOC,EAAAA,KAAS,CAAA,KAAA,EAAU,EAAA,GAAKL,EAAM,CAAA,GAAA,EAAMG,EAAG,IAAIC,CAAK,CAAA,CAAA,EAAIC,EAAI,CAAA,CAAA,CAAA,EAArF,GAAA,CAAA;AANpB,IAQMC,CAAAA,GAAS,EACd,QAAA,EAAU,EACT,KAAA,EAAO,CAAC,CAAA,EAAG,CAAC,CAAA,EAEZ,IAAA,EAAM,CAAC,CAAA,EAAG,EAAE,CAAA,EACZ,GAAA,EAAK,CAAC,CAAA,EAAG,EAAE,CAAA,EACX,MAAA,EAAQ,CAAC,CAAA,EAAG,EAAE,CAAA,EACd,SAAA,EAAW,CAAC,CAAA,EAAG,EAAE,CAAA,EACjB,QAAA,EAAU,CAAC,EAAA,EAAI,EAAE,CAAA,EACjB,OAAA,EAAS,CAAC,CAAA,EAAG,EAAE,CAAA,EACf,MAAA,EAAQ,CAAC,CAAA,EAAG,EAAE,CAAA,EACd,aAAA,EAAe,CAAC,CAAA,EAAG,EAAE,CAAA,EACrB,EACD,KAAA,EAAO,EACN,KAAA,EAAO,CAAC,EAAA,EAAI,EAAE,CAAA,EACd,KAAK,CAAC,EAAA,EAAI,EAAE,CAAA,EACZ,KAAA,EAAO,CAAC,EAAA,EAAI,EAAE,CAAA,EACd,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAE,CAAA,EACf,MAAM,CAAC,EAAA,EAAI,EAAE,CAAA,EACb,OAAA,EAAS,CAAC,EAAA,EAAI,EAAE,CAAA,EAChB,IAAA,EAAM,CAAC,EAAA,EAAI,EAAE,CAAA,EACb,OAAO,CAAC,EAAA,EAAI,EAAE,CAAA,EAGd,WAAA,EAAa,CAAC,EAAA,EAAI,EAAE,CAAA,EACpB,IAAA,EAAM,CAAC,EAAA,EAAI,EAAE,CAAA,EACb,MAAM,CAAC,EAAA,EAAI,EAAE,CAAA,EACb,SAAA,EAAW,CAAC,EAAA,EAAI,EAAE,CAAA,EAClB,WAAA,EAAa,CAAC,EAAA,EAAI,EAAE,CAAA,EACpB,cAAc,CAAC,EAAA,EAAI,EAAE,CAAA,EACrB,UAAA,EAAY,CAAC,EAAA,EAAI,EAAE,CAAA,EACnB,aAAA,EAAe,CAAC,EAAA,EAAI,EAAE,CAAA,EACtB,YAAY,CAAC,EAAA,EAAI,EAAE,CAAA,EACnB,WAAA,EAAa,CAAC,EAAA,EAAI,EAAE,CAAA,EACpB,EACD,OAAA,EAAS,EACR,OAAA,EAAS,CAAC,IAAI,EAAE,CAAA,EAChB,KAAA,EAAO,CAAC,EAAA,EAAI,EAAE,CAAA,EACd,OAAA,EAAS,CAAC,EAAA,EAAI,EAAE,CAAA,EAChB,QAAA,EAAU,CAAC,IAAI,EAAE,CAAA,EACjB,MAAA,EAAQ,CAAC,EAAA,EAAI,EAAE,CAAA,EACf,SAAA,EAAW,CAAC,EAAA,EAAI,EAAE,CAAA,EAClB,MAAA,EAAQ,CAAC,IAAI,EAAE,CAAA,EACf,OAAA,EAAS,CAAC,EAAA,EAAI,EAAE,CAAA,EAGhB,aAAA,EAAe,CAAC,GAAA,EAAK,EAAE,CAAA,EACvB,MAAA,EAAQ,CAAC,KAAK,EAAE,CAAA,EAChB,MAAA,EAAQ,CAAC,GAAA,EAAK,EAAE,CAAA,EAChB,WAAA,EAAa,CAAC,GAAA,EAAK,EAAE,CAAA,EACrB,aAAA,EAAe,CAAC,KAAK,EAAE,CAAA,EACvB,cAAA,EAAgB,CAAC,GAAA,EAAK,EAAE,CAAA,EACxB,YAAA,EAAc,CAAC,GAAA,EAAK,EAAE,CAAA,EACtB,eAAA,EAAiB,CAAC,KAAK,EAAE,CAAA,EACzB,YAAA,EAAc,CAAC,GAAA,EAAK,EAAE,CAAA,EACtB,aAAA,EAAe,CAAC,GAAA,EAAK,EAAE,CAAA,EACvB,EACF;AAE6B,MAAA,CAAO,IAAA,CAAKA,EAAO,QAAQ,CAAA;AACjD,IAAMC,EAAAA,GAAuB,MAAA,CAAO,IAAA,CAAKD,CAAAA,CAAO,KAAK,CAAA;AAArD,IACME,EAAAA,GAAuB,MAAA,CAAO,IAAA,CAAKF,CAAAA,CAAO,OAAO,CAAA;AACpC,CAAC,GAAGC,EAAAA,EAAsB,GAAGC,EAAoB,CAAA;AAE3E,SAASC,EAAAA,GAAiB;AACzB,EAAA,MAAMC,qBAAQ,IAAI,GAAA,EAAA;AAElB,EAAA,KAAA,MAAW,CAACC,EAAAA,EAAWC,CAAK,KAAK,MAAA,CAAO,OAAA,CAAQN,CAAM,CAAA,EAAG;AACxD,IAAA,KAAA,MAAW,CAACO,EAAAA,EAAWC,CAAK,CAAA,IAAK,MAAA,CAAO,QAAQF,CAAK,CAAA,EACpDN,CAAAA,CAAOO,EAAS,IAAI,EACnB,IAAA,EAAM,QAAUC,CAAAA,CAAM,CAAC,CAAC,CAAA,CAAA,CAAA,EACxB,KAAA,EAAO,CAAA,KAAA,EAAUA,CAAAA,CAAM,CAAC,CAAC,CAAA,CAAA,CAAA,EAC7B,EAEGF,CAAAA,CAAMC,EAAS,CAAA,GAAIP,CAAAA,CAAOO,EAAS,CAAA,EAEnCH,GAAM,GAAA,CAAII,CAAAA,CAAM,CAAC,CAAA,EAAGA,CAAAA,CAAM,CAAC,CAAC,CAAA;AAG7B,IAAA,MAAA,CAAO,cAAA,CAAeR,GAAQK,EAAAA,EAAW,EACxC,OAAOC,CAAAA,EACP,UAAA,EAAY,OACZ,CAAA;AACD,EAAA;AAED,EAAA,OAAA,MAAA,CAAO,cAAA,CAAeN,CAAAA,EAAQ,OAAA,EAAS,EACtC,OAAOI,EAAAA,EACP,UAAA,EAAY,KAAA,EACZ,CAAA,EAEDJ,CAAAA,CAAO,MAAM,KAAA,GAAQ,UAAA,EACrBA,CAAAA,CAAO,OAAA,CAAQ,KAAA,GAAQ,UAAA,EAEvBA,EAAO,KAAA,CAAM,IAAA,GAAOP,CAAAA,EAAAA,EACpBO,CAAAA,CAAO,KAAA,CAAM,UAAUL,CAAAA,EAAAA,EACvBK,CAAAA,CAAO,KAAA,CAAM,OAAA,GAAUJ,CAAAA,IACvBI,CAAAA,CAAO,OAAA,CAAQ,IAAA,GAAOP,CAAAA,CAAWD,CAAsB,CAAA,EACvDQ,EAAO,OAAA,CAAQ,OAAA,GAAUL,CAAAA,CAAYH,CAAsB,CAAA,EAC3DQ,CAAAA,CAAO,OAAA,CAAQ,OAAA,GAAUJ,CAAAA,CAAYJ,CAAsB,CAAA,EAG3D,MAAA,CAAO,gBAAA,CAAiBQ,CAAAA,EAAQ,EAC/B,YAAA,EAAc,EACb,KAAA,kBAAO,MAAA,CAAA,CAACH,EAAAA,EAAKC,CAAAA,EAAOC,OAGfF,EAAAA,KAAQC,CAAAA,IAASA,CAAAA,KAAUC,EAAAA,GAC1BF,EAAAA,GAAM,CAAA,GACF,KAGJA,EAAAA,GAAM,GAAA,GACF,GAAA,GAGD,IAAA,CAAK,KAAA,CAAA,CAAQA,EAAAA,GAAM,KAAK,GAAA,GAAO,EAAE,CAAA,GAAI,GAAA,GAGtC,EAAA,GACH,EAAA,GAAK,KAAK,KAAA,CAAMA,EAAAA,GAAM,GAAA,GAAM,CAAC,CAAA,GAC7B,CAAA,GAAI,KAAK,KAAA,CAAMC,CAAAA,GAAQ,GAAA,GAAM,CAAC,CAAA,GAC/B,IAAA,CAAK,MAAMC,EAAAA,GAAO,GAAA,GAAM,CAAC,CAAA,EAlBtB,OAAA,CAAA,EAoBP,UAAA,EAAY,KAAA,EACZ,EACD,QAAA,EAAU,EACT,KAAA,kBAAOU,MAAAA,CAAAA,CAAAA,EAAAA,KAAO;AACb,IAAA,MAAMC,IAAU,wBAAA,CAAyB,IAAA,CAAKD,EAAAA,CAAI,QAAA,CAAS,EAAE,CAAC,CAAA;AAC9D,IAAA,IAAI,CAACC,CAAAA,EACJ,OAAO,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA;AAGhB,IAAA,IAAI,CAACC,EAAW,CAAA,GAAID,CAAAA;AAEhBC,IAAAA,EAAAA,CAAY,MAAA,KAAW,CAAA,KAC1BA,EAAAA,GAAc,CAAC,GAAGA,EAAW,CAAA,CAAE,GAAA,CAAIxC,CAAAA,CAAAA,KAAaA,CAAAA,GAAYA,CAAS,CAAA,CAAE,KAAK,EAAE,CAAA,CAAA;AAG/E,IAAA,MAAMyC,CAAAA,GAAU,MAAA,CAAO,QAAA,CAASD,EAAAA,EAAa,EAAE,CAAA;AAE/C,IAAA,OAAO,CAELC,KAAW,EAAA,GAAM,GAAA,EACjBA,KAAW,CAAA,GAAK,GAAA,EACjBA,IAAU,GAEf,CAAA;EACI,CAAA,EArBMH,OAAAA,CAAAA,EAsBP,UAAA,EAAY,KAAA,EACZ,EACD,YAAA,EAAc,EACb,KAAA,kBAAOA,MAAAA,CAAAA,CAAAA,EAAAA,KAAOT,CAAAA,CAAO,YAAA,CAAa,GAAGA,EAAO,QAAA,CAASS,EAAG,CAAC,CAAA,EAAlDA,OAAAA,CAAAA,EACP,UAAA,EAAY,KAAA,EACZ,EACD,aAAA,EAAe,EACd,KAAA,kBAAOpC,MAAAA,CAAAA,CAAAA,EAAAA,KAAQ;AACd,IAAA,IAAIA,EAAAA,GAAO,CAAA,EACV,OAAO,EAAA,GAAKA,EAAAA;AAGb,IAAA,IAAIA,EAAAA,GAAO,EAAA,EACV,OAAO,EAAA,IAAMA,EAAAA,GAAO,CAAA,CAAA;AAGrB,IAAA,IAAIwB,GACAC,EAAAA,EACAC,CAAAA;AAEJ,IAAA,IAAI1B,EAAAA,IAAQ,GAAA,EACXwB,CAAAA,GAAAA,CAAAA,CAASxB,EAAAA,GAAO,GAAA,IAAO,KAAM,CAAA,IAAK,GAAA,EAClCyB,EAAAA,GAAQD,CAAAA,EACRE,CAAAA,GAAOF,CAAAA;AACD,SAAA;AACNxB,MAAAA,EAAAA,IAAQ,EAAA;AAER,MAAA,MAAMwC,KAAYxC,EAAAA,GAAO,EAAA;AAEzBwB,MAAAA,CAAAA,GAAM,IAAA,CAAK,KAAA,CAAMxB,EAAAA,GAAO,EAAE,IAAI,CAAA,EAC9ByB,EAAAA,GAAQ,IAAA,CAAK,KAAA,CAAMe,KAAY,CAAC,CAAA,GAAI,CAAA,EACpCd,CAAAA,GAAQc,KAAY,CAAA,GAAK,CAAA;AACzB,IAAA;AAED,IAAA,MAAMC,IAAQ,IAAA,CAAK,GAAA,CAAIjB,CAAAA,EAAKC,EAAAA,EAAOC,CAAI,CAAA,GAAI,CAAA;AAE3C,IAAA,IAAIe,CAAAA,KAAU,GACb,OAAO,EAAA;AAIR,IAAA,IAAIjC,EAAAA,GAAS,EAAA,IAAO,IAAA,CAAK,KAAA,CAAMkB,CAAI,CAAA,IAAK,CAAA,GAAM,IAAA,CAAK,KAAA,CAAMD,EAAK,CAAA,IAAK,CAAA,GAAK,IAAA,CAAK,MAAMD,CAAG,CAAA,CAAA;AAEtF,IAAA,OAAIiB,CAAAA,KAAU,CAAA,KACbjC,EAAAA,IAAU,EAAA,CAAA,EAGJA,EAAAA;AACP,EAAA,CAAA,EAzCMR,UA0CP,UAAA,EAAY,KAAA,IAEb,SAAA,EAAW,EACV,uBAAO,MAAA,CAAA,CAACwB,EAAAA,EAAKC,CAAAA,EAAOC,EAAAA,KAASC,EAAO,aAAA,CAAcA,CAAAA,CAAO,aAAaH,EAAAA,EAAKC,CAAAA,EAAOC,EAAI,CAAC,CAAA,EAAhF,OAAA,CAAA,EACP,UAAA,EAAY,OACZ,EACD,SAAA,EAAW,EACV,KAAA,kBAAOU,MAAAA,CAAAA,CAAAA,OAAOT,CAAAA,CAAO,aAAA,CAAcA,EAAO,YAAA,CAAaS,EAAG,CAAC,CAAA,EAApDA,OAAAA,CAAAA,EACP,YAAY,KAAA,EACZ,EACD,CAAA,EAEMT,CAAAA;AACR;AAlJSG,MAAAA,CAAAA,EAAAA,EAAAA,IAAAA,CAAAA;AAoJT,IAAMY,KAAaZ,EAAAA,EAAgB;AAAnC,ICxNMa,oBAAU,IAAI,GAAA,CAAI,CACvB,MAAA,EACA,MACD,CAAC,CAAA;ADqND,ICnNMC,EAAAA,GAAW,EAAA;ADmNjB,IClNMC,CAAAA,GAAmB,MAAA;ADkNzB,ICjNMC,CAAAA,GAAW,GAAA;ADiNjB,IChNMC,EAAAA,GAAW,GAAA;ADgNjB,IC/MMC,CAAAA,GAAsB,GAAA;AD+M5B,IC9MMC,CAAAA,GAAmB,GAAGF,EAAQ,CAAA,GAAA,CAAA;AD8MpC,IC5MMG,oBAAelD,MAAAA,CAAAA,CAAAA,EAAAA,KAAQ,CAAA,EAAG2C,CAAAA,CAAQ,QAAQ,CAAC,IAAA,EAAI,CAAG,KAAK,GAAGG,CAAQ,CAAA,EAAG9C,EAAI,CAAA,EAAGgD,CAAmB,CAAA,CAAA,EAAhFhD,GAAAA,CAAAA;AD4MrB,IC3MMmD,oBAAoBC,MAAAA,CAAAA,CAAAA,EAAAA,KAAO,CAAA,EAAGT,CAAAA,CAAQ,QAAQ,CAAC,IAAA,EAAI,CAAG,KAAK,GAAGM,CAAgB,CAAA,EAAGG,EAAG,CAAA,EAAGP,CAAgB,CAAA,CAAA,EAAnFO,GAAAA,CAAAA;AD2M1B,ICvMMC,EAAAA,mBAAc3D,MAAAA,CAAAA,CAAAA,EAAAA,KAAUA,EAAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAII,CAAAA,EAAAA,KAAagB,CAAAA,CAAYhB,EAAS,CAAC,CAAA,EAAnEJ,IAAAA,CAAAA;ADuMpB,ICnMM4D,CAAAA,mBAAW,MAAA,CAAA,CAACC,EAAAA,EAAMC,EAAAA,EAAMC,CAAAA,KAAY;AACzC,EAAA,MAAMvD,EAAAA,GAAa,CAAC,GAAGsD,EAAI,CAAA;AAE3B,EAAA,IAAIE,CAAAA,GAAiB,KAAA,EACjBC,CAAAA,GAAqB,KAAA,EACrBC,EAAAA,GAAU9C,CAAAA,CAAYrB,CAAAA,CAAU8D,EAAAA,CAAKA,EAAAA,CAAK,MAAA,GAAS,CAAC,CAAC,CAAC,CAAA;AAE1D,EAAA,KAAA,MAAW,CAACM,EAAAA,EAAO/D,CAAS,CAAA,IAAKI,EAAAA,CAAW,SAAO,EAAI;AACtD,IAAA,MAAM4D,CAAAA,GAAkBhD,EAAYhB,CAAS,CAAA;AAc7C,IAAA,IAZI8D,EAAAA,GAAUE,CAAAA,IAAmBL,CAAAA,GAChCF,EAAAA,CAAKA,GAAK,MAAA,GAAS,CAAC,CAAA,IAAKzD,CAAAA,IAEzByD,EAAAA,CAAK,IAAA,CAAKzD,CAAS,CAAA,EACnB8D,KAAU,CAAA,CAAA,EAGPjB,CAAAA,CAAQ,GAAA,CAAI7C,CAAS,CAAA,KACxB4D,CAAAA,GAAiB,IAAA,EACjBC,CAAAA,GAAqBzD,GAAW,KAAA,CAAM2D,EAAAA,GAAQ,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA,CAAE,UAAA,CAAWZ,CAAgB,IAGlFS,CAAAA,EAAgB;AACfC,MAAAA,CAAAA,GACC7D,CAAAA,KAAc+C,MACjBa,CAAAA,GAAiB,KAAA,EACjBC,IAAqB,KAAA,CAAA,GAEZ7D,CAAAA,KAAckD,MACxBU,CAAAA,GAAiB,KAAA,CAAA;AAGlB,MAAA;AACA,IAAA;AAEDE,IAAAA,EAAAA,IAAWE,CAAAA,EAEPF,EAAAA,KAAYH,CAAAA,IAAWI,EAAAA,GAAQ3D,EAAAA,CAAW,MAAA,GAAS,CAAA,KACtDqD,EAAAA,CAAK,IAAA,CAAK,EAAE,CAAA,EACZK,EAAAA,GAAU,CAAA,CAAA;AAEX,EAAA;AAIG,EAAA,CAACA,MAAWL,EAAAA,CAAKA,EAAAA,CAAK,MAAA,GAAS,CAAC,EAAE,MAAA,GAAS,CAAA,IAAKA,EAAAA,CAAK,MAAA,GAAS,MACjEA,EAAAA,CAAKA,EAAAA,CAAK,SAAS,CAAC,CAAA,IAAKA,GAAK,GAAA,EAAA,CAAA;AAEhC,CAAA,EAhDiB,GAAA,CAAA;ADmMjB,IChJMQ,EAAAA,2BAA+BrE,EAAAA,KAAU;AAC9C,EAAA,MAAMsE,EAAAA,GAAQtE,EAAAA,CAAO,KAAA,CAAM,GAAG,CAAA;AAC9B,EAAA,IAAIuE,IAAOD,EAAAA,CAAM,MAAA;AAEjB,EAAA,OAAOC,CAAAA,GAAO,KACT,EAAAnD,CAAAA,CAAYkD,GAAMC,CAAAA,GAAO,CAAC,CAAC,CAAA,GAAI,CAAA,CAAA,IAInCA,CAAAA,EAAAA;AAGD,EAAA,OAAIA,MAASD,EAAAA,CAAM,MAAA,GACXtE,EAAAA,GAGDsE,EAAAA,CAAM,MAAM,CAAA,EAAGC,CAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,GAAID,EAAAA,CAAM,MAAMC,CAAI,CAAA,CAAE,KAAK,EAAE,CAAA;AAClE,CAAA,EAjBqCvE,IAAAA,CAAAA;ADgJrC,ICxHMwE,qBAAO,MAAA,CAAA,CAACxE,EAAAA,EAAQ+D,EAAAA,EAAS1C,CAAAA,GAAU,EAAA,KAAO;AAC/C,EAAA,IAAIA,EAAQ,IAAA,KAAS,KAAA,IAASrB,GAAO,IAAA,EAAM,KAAK,IAC/C,OAAO,EAAA;AAGR,EAAA,IAAIyE,EAAAA,GAAc,IACdC,CAAAA,EACAC,CAAAA;AAEJ,EAAA,MAAMC,EAAAA,GAAUjB,GAAY3D,EAAM,CAAA;AAClC,EAAA,IAAI6D,EAAAA,GAAO,CAAC,EAAE,CAAA;AAEd,EAAA,KAAA,MAAW,CAACM,GAAOL,CAAI,CAAA,IAAK9D,GAAO,KAAA,CAAM,GAAG,CAAA,CAAE,OAAA,EAAA,EAAW;AACpDqB,IAAAA,CAAAA,CAAQ,IAAA,KAAS,KAAA,KACpBwC,EAAAA,CAAKA,EAAAA,CAAK,MAAA,GAAS,CAAC,CAAA,GAAIA,EAAAA,CAAKA,EAAAA,CAAK,MAAA,GAAS,CAAC,CAAA,CAAE,SAAA,EAAA,CAAA;AAG/C,IAAA,IAAIgB,KAAYzD,CAAAA,CAAYyC,EAAAA,CAAKA,EAAAA,CAAK,MAAA,GAAS,CAAC,CAAC,CAAA;AAgBjD,IAAA,IAdIM,CAAAA,KAAU,CAAA,KACTU,EAAAA,IAAad,EAAAA,KAAY1C,EAAQ,QAAA,KAAa,KAAA,IAASA,CAAAA,CAAQ,IAAA,KAAS,KAAA,CAAA,KAE3EwC,EAAAA,CAAK,IAAA,CAAK,EAAE,GACZgB,EAAAA,GAAY,CAAA,CAAA,EAAA,CAGTA,EAAAA,GAAY,CAAA,IAAKxD,CAAAA,CAAQ,IAAA,KAAS,KAAA,MACrCwC,EAAAA,CAAKA,GAAK,MAAA,GAAS,CAAC,CAAA,IAAK,GAAA,EACzBgB,QAKExD,CAAAA,CAAQ,IAAA,IAAQuD,EAAAA,CAAQT,CAAK,IAAIJ,EAAAA,EAAS;AAC7C,MAAA,MAAMe,CAAAA,GAAoBf,EAAAA,GAAUc,EAAAA,EAC9BE,CAAAA,GAAyB,CAAA,GAAI,IAAA,CAAK,KAAA,CAAA,CAAOH,EAAAA,CAAQT,CAAK,CAAA,GAAIW,CAAAA,GAAmB,CAAA,IAAKf,EAAO,CAAA;AAChE,MAAA,IAAA,CAAK,KAAA,CAAA,CAAOa,EAAAA,CAAQT,CAAK,CAAA,GAAI,KAAKJ,EAAO,CAAA,GAC3CgB,CAAAA,IAC5BlB,EAAAA,CAAK,KAAK,EAAE,CAAA,EAGbD,CAAAA,CAASC,EAAAA,EAAMC,GAAMC,EAAO,CAAA;AAC5B,MAAA;AACA,IAAA;AAED,IAAA,IAAIc,EAAAA,GAAYD,EAAAA,CAAQT,CAAK,CAAA,GAAIJ,EAAAA,IAAWc,KAAY,CAAA,IAAKD,EAAAA,CAAQT,CAAK,CAAA,GAAI,CAAA,EAAG;AAChF,MAAA,IAAI9C,CAAAA,CAAQ,QAAA,KAAa,KAAA,IAASwD,EAAAA,GAAYd,EAAAA,EAAS;AACtDH,QAAAA,CAAAA,CAASC,EAAAA,EAAMC,GAAMC,EAAO,CAAA;AAC5B,QAAA;AACA,MAAA;AAEDF,MAAAA,EAAAA,CAAK,KAAK,EAAE,CAAA;AACZ,IAAA;AAED,IAAA,IAAIgB,KAAYD,EAAAA,CAAQT,CAAK,IAAIJ,EAAAA,IAAW1C,CAAAA,CAAQ,aAAa,KAAA,EAAO;AACvEuC,MAAAA,CAAAA,CAASC,EAAAA,EAAMC,GAAMC,EAAO,CAAA;AAC5B,MAAA;AACA,IAAA;AAEDF,IAAAA,EAAAA,CAAKA,EAAAA,CAAK,MAAA,GAAS,CAAC,CAAA,IAAKC,CAAAA;AACzB,EAAA;AAEGzC,EAAAA,CAAAA,CAAQ,IAAA,KAAS,UACpBwC,EAAAA,GAAOA,EAAAA,CAAK,IAAImB,CAAAA,CAAAA,KAAOX,EAAAA,CAA6BW,CAAG,CAAC,CAAA,CAAA;AAGzD,EAAA,MAAMC,CAAAA,GAAM,CAAC,GAAGpB,EAAAA,CAAK,IAAA,CAAK;CAAI,CAAC,CAAA;AAE/B,EAAA,KAAA,MAAW,CAACM,CAAAA,EAAO/D,CAAS,CAAA,IAAK6E,CAAAA,CAAI,SAAO,EAAI;AAG/C,IAAA,IAFAR,EAAAA,IAAerE,CAAAA,EAEX6C,CAAAA,CAAQ,GAAA,CAAI7C,CAAS,CAAA,EAAG;AAC3B,MAAA,MAAM,EAAC,MAAA,EAAA8E,CAAAA,EAAM,GAAI,IAAI,MAAA,CAAO,CAAA,KAAA,EAAQ9B,CAAQ,CAAA,iBAAA,EAAoBG,CAAgB,CAAA,UAAA,EAAaJ,CAAgB,CAAA,CAAA,CAAG,EAAE,IAAA,CAAK8B,CAAAA,CAAI,KAAA,CAAMd,CAAK,CAAA,CAAE,IAAA,CAAK,EAAE,CAAC,CAAA,IAAK,EAAC,MAAA,EAAQ,EAAE,EAAA;AAChK,MAAA,IAAIe,CAAAA,CAAO,SAAS,MAAA,EAAW;AAC9B,QAAA,MAAM5E,CAAAA,GAAO,MAAA,CAAO,UAAA,CAAW4E,CAAAA,CAAO,IAAI,CAAA;AAC1CR,QAAAA,CAAAA,GAAapE,CAAAA,KAAS4C,KAAW,MAAA,GAAY5C,CAAAA;MACjD,CAAA,MAAc4E,CAAAA,CAAO,QAAQ,MAAA,KACzBP,CAAAA,GAAYO,EAAO,GAAA,CAAI,MAAA,KAAW,CAAA,GAAI,MAAA,GAAYA,CAAAA,CAAO,GAAA,CAAA;AAE1D,IAAA;AAED,IAAA,MAAM5E,KAAO0C,EAAAA,CAAW,KAAA,CAAM,GAAA,CAAI,MAAA,CAAO0B,CAAU,CAAC,CAAA;AAEhDO,IAAAA,CAAAA,CAAId,CAAAA,GAAQ,CAAC,CAAA,KAAM;KAClBQ,CAAAA,KACHF,EAAAA,IAAehB,CAAAA,CAAkB,EAAE,CAAA,CAAA,EAGhCiB,CAAAA,IAAcpE,OACjBmE,EAAAA,IAAejB,CAAAA,CAAalD,EAAI,CAAA,CAAA,IAEvBF,CAAAA,KAAc;MACpBsE,CAAAA,IAAcpE,EAAAA,KACjBmE,MAAejB,CAAAA,CAAakB,CAAU,IAGnCC,CAAAA,KACHF,EAAAA,IAAehB,EAAkBkB,CAAS,CAAA,CAAA,CAAA;AAG5C,EAAA;AAED,EAAA,OAAOF,EAAAA;AACR,CAAA,EAvGa,IAAA,CAAA;AA0GE,SAASU,CAAAA,CAASnF,EAAAA,EAAQ+D,EAAAA,EAAS1C,CAAAA,EAAS;AAC1D,EAAA,OAAO,OAAOrB,EAAM,CAAA,CAClB,SAAA,EAAW,CACX,QAAQ,OAAA,EAAS;AAAI,CAAA,CAAA,CACrB,KAAA,CAAM;CAAI,CAAA,CACV,GAAA,CAAIoF,CAAAA,EAAAA,KAAQZ,EAAAA,CAAKY,IAAMrB,EAAAA,EAAS1C,CAAO,CAAC,CAAA,CACxC,IAAA,CAAK;AAAI,CAAA,CAAA;AACZ;AAPwB8D,MAAAA,CAAAA,CAAAA,EAAAA,GAAAA,CAAAA;AC9MxB,IAAME,EAAAA,GAAU,CAAC,IAAA,EAAM,MAAA,EAAQ,QAAQ,OAAA,EAAS,OAAA,EAAS,SAAS,QAAQ,CAAA;AAA1E,IASaC,IAAkC,EAC9C,OAAA,EAAS,IAAI,GAAA,CAAID,EAAO,CAAA,EACxB,OAAA,kBAAS,IAAI,GAAA,CAAoB,CAEhC,CAAC,GAAA,EAAK,IAAI,CAAA,EACV,CAAC,GAAA,EAAK,MAAM,CAAA,EACZ,CAAC,KAAK,MAAM,CAAA,EACZ,CAAC,GAAA,EAAK,OAAO,CAAA,EACb,CAAC,GAAA,EAAQ,QAAQ,GAEjB,CAAC,QAAA,EAAU,QAAQ,CACpB,CAAC,CAAA,EACF;AAuCgB,SAAAE,CAAAA,CAAYC,IAAyCC,EAAAA,EAAgB;AACpF,EAAA,IAAI,OAAOD,MAAQ,QAAA,EAClB,OAAOF,EAAS,OAAA,CAAQ,GAAA,CAAIE,EAAG,CAAA,KAAMC,EAAAA;AAGtC,EAAA,KAAA,MAAW1C,CAAAA,IAASyC,IACnB,IAAIzC,CAAAA,KAAU,UACVwC,CAAAA,CAAYxC,CAAAA,EAAO0C,EAAM,CAAA,EAC5B,OAAO,IAAA;AAGT,EAAA,OAAO,KAAA;AACR;AAZgBF,MAAAA,CAAAA,CAAAA,EAAAA,GAAAA,CAAAA;AC5DA,SAAAG,EAAAA,CAAUC,IAAWC,EAAAA,EAAW;AAC/C,EAAA,IAAID,OAAMC,EAAAA,EAAG;AAEb,EAAA,MAAMC,CAAAA,GAASF,GAAE,KAAA,CAAM;CAAI,CAAA,EACrBG,EAAAA,GAASF,GAAE,KAAA,CAAM;AAAI,CAAA,CAAA,EACrBG,IAAiB,EAAA;AAEvB,EAAA,KAAA,IAASrF,IAAI,CAAA,EAAGA,CAAAA,GAAI,KAAK,GAAA,CAAImF,CAAAA,CAAO,QAAQC,EAAAA,CAAO,MAAM,GAAGpF,CAAAA,EAAAA,EACvDmF,CAAAA,CAAOnF,CAAC,CAAA,KAAMoF,EAAAA,CAAOpF,CAAC,CAAA,IAAGqF,CAAAA,CAAK,KAAKrF,CAAC,CAAA;AAGzC,EAAA,OAAOqF,CAAAA;AACR;AAZgBL,MAAAA,CAAAA,EAAAA,EAAAA,IAAAA,CAAAA;ACUE,UAAA,CAAW,OAAA,CAAQ,QAAA,CAAS,WAAW,KAAK;AAA9D,IAEaM,CAAAA,GAAgB,OAAO,cAAc,CAAA;AAElC,SAAAC,GAASlD,EAAAA,EAAiC;AACzD,EAAA,OAAOA,EAAAA,KAAUiD,CAAAA;AAClB;AAFgBC,MAAAA,CAAAA,EAAAA,EAAAA,IAAAA,CAAAA;AAIT,SAASC,CAAAA,CAAWC,IAAiBpD,EAAAA,EAAgB;AAC3D,EAAA,MAAMrC,CAAAA,GAAIyF,EAAAA;AAENzF,EAAAA,CAAAA,CAAE,KAAA,IAAOA,CAAAA,CAAE,UAAA,CAAWqC,EAAK,CAAA;AAChC;AAJgBmD,MAAAA,CAAAA,CAAAA,EAAAA,GAAAA,CAAAA;AClBhB,IAAAN,KAAA,MAAA,CAAA,cAAA;AAAA,IAAAQ,EAAAA,mBAAA,MAAA,CAAA,CAAAT,EAAAA,EAAAU,EAAAA,EAAApG,CAAAA,KAAAoG,MAAAV,EAAAA,GAAAC,EAAAA,CAAAD,EAAAA,EAAAU,EAAAA,EAAA,EAAA,UAAA,EAAA,MAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAApG,CAAAA,EAAA,CAAA,GAAA0F,EAAAA,CAAAU,EAAA,CAAA,GAAApG,CAAAA,EAAA,IAAA,CAAA;AAAA,IAAAqG,CAAAA,mBAAA,MAAA,CAAA,CAAAX,EAAAA,EAAAU,EAAAA,EAAApG,OAAAmG,EAAAA,CAAAT,EAAAA,EAAA,OAAAU,EAAAA,IAAA,WAAAA,EAAAA,GAAA,EAAA,GAAAA,EAAAA,EAAApG,CAAA,GAAAA,CAAAA,CAAAA,EAAA,GAAA,CAAA;AAuBqBsG,IAAAA,IAAAA,MAAO;AAAA,EAAA;;;EAiB3B,WAAA,CAAYlF,EAAAA,EAAgCmF,IAAa,IAAA,EAAM;AAhB/DC,IAAAA,CAAAA,CAAA,IAAA,EAAU,OACVA,CAAAA,EAAAA,CAAAA,CAAA,IAAA,EAAU,QACVA,CAAAA,EAAAA,CAAAA,CAAA,IAAA,EAAQ,cAAA,CAAA,EAERA,CAAAA,CAAA,IAAA,EAAQ,IAAA,CAAA,EACRA,CAAAA,CAAA,IAAA,EAAQ,MAAA,CAAA,EACRA,CAAAA,CAAA,IAAA,EAAQ,SACRA,CAAAA,EAAAA,CAAAA,CAAA,IAAA,EAAQ,QAAA,EAAS,KAAA,CAAA,EACjBA,EAAA,IAAA,EAAQ,YAAA,EAAa,EACrBA,CAAAA,EAAAA,CAAAA,CAAA,IAAA,EAAQ,cAAA,kBAAe,IAAI,GAAA,EAC3BA,CAAAA,EAAAA,CAAAA,CAAA,IAAA,EAAU,SAAA,EAAU,CAAA,GAEpBA,CAAAA,CAAA,IAAA,EAAO,OAAA,EAAoB,SAC3BA,CAAAA,EAAAA,CAAAA,CAAA,IAAA,EAAO,OAAA,EAAQ,EAAA,CAAA,EACfA,CAAAA,CAAA,IAAA,EAAO,OAAA,CAAA;AAGN,IAAA,MAAM,EAAE,KAAA,EAAAN,EAAAA,GAAQO,KAAAA,EAAO,MAAA,EAAAC,CAAAA,GAASC,MAAAA,EAAQ,MAAA,EAAAC,CAAAA,EAAQ,MAAA,EAAAC,EAAAA,EAAQ,GAAGC,IAAK,GAAI1F,EAAAA;AAEpE,IAAA,IAAA,CAAK,OAAO0F,EAAAA,EACZ,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,WAAW,IAAA,CAAK,IAAI,CAAA,EAC3C,IAAA,CAAK,QAAQ,IAAA,CAAK,KAAA,CAAM,KAAK,IAAI,CAAA,EACjC,KAAK,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EACnC,IAAA,CAAK,UAAUF,CAAAA,CAAO,IAAA,CAAK,IAAI,CAAA,EAC/B,IAAA,CAAK,MAAA,GAASL,CAAAA,EACd,KAAK,YAAA,GAAeM,EAAAA,EAEpB,KAAK,KAAA,GAAQX,EAAAA,EACb,KAAK,MAAA,GAASQ,CAAAA;AACf,EAAA;EAKU,WAAA,GAAc;AACvB,IAAA,IAAA,CAAK,aAAa,KAAA,EACnB;AAAA,EAAA;AAMQ,EAAA,aAAA,CACPK,IACAD,CAAAA,EACC;AACD,IAAA,MAAME,KAAS,IAAA,CAAK,YAAA,CAAa,GAAA,CAAID,EAAK,KAAK,EAAA;AAC/CC,IAAAA,EAAAA,CAAO,KAAKF,CAAI,CAAA,EAChB,KAAK,YAAA,CAAa,GAAA,CAAIC,IAAOC,EAAM,CAAA;AACpC,EAAA;AAOO,EAAA,EAAA,CAAgCD,IAAUE,CAAAA,EAAoB;AACpE,IAAA,IAAA,CAAK,aAAA,CAAcF,EAAAA,EAAO,EAAE,EAAA,EAAAE,GAAI,CAAA;AACjC,EAAA;AAOO,EAAA,IAAA,CAAkCF,IAAUE,CAAAA,EAAoB;AACtE,IAAA,IAAA,CAAK,cAAcF,EAAAA,EAAO,EAAE,IAAAE,CAAAA,EAAI,IAAA,EAAM,MAAM,CAAA;AAC7C,EAAA;AAOO,EAAA,IAAA,CAAkCF,OAAaG,CAAAA,EAAkC;AACvF,IAAA,MAAMC,EAAAA,GAAM,KAAK,YAAA,CAAa,GAAA,CAAIJ,EAAK,CAAA,IAAK,EAAA,EACtCK,CAAAA,GAA0B,EAAA;AAEhC,IAAA,KAAA,MAAWC,KAAcF,EAAAA,EACxBE,CAAAA,CAAW,GAAG,GAAGH,CAAI,GAEjBG,CAAAA,CAAW,IAAA,IACdD,EAAQ,IAAA,CAAK,MAAMD,GAAI,MAAA,CAAOA,EAAAA,CAAI,QAAQE,CAAU,CAAA,EAAG,CAAC,CAAC,CAAA;AAI3D,IAAA,KAAA,MAAWJ,CAAAA,IAAMG,GAChBH,CAAAA,EAAAA;AAEF,EAAA;EAEO,MAAA,GAAS;AACf,IAAA,OAAO,IAAI,OAAA,CAAyB,CAACK,EAAAA,EAASC,CAAAA,KAAW;AACxD,MAAA,IAAI,KAAK,YAAA,EAAc;AACtB,QAAA,IAAI,IAAA,CAAK,YAAA,CAAa,OAAA,EACrB,OAAK,IAAA,CAAA,KAAA,GAAQ,QAAA,EAEb,IAAA,CAAK,KAAA,EAAA,EACED,EAAAA,CAAQvB,CAAa,CAAA;AAG7B,QAAA,IAAA,CAAK,YAAA,CAAa,gBAAA,CACjB,OAAA,EACA,MAAM;AACL,UAAA,IAAA,CAAK,KAAA,GAAQ,QAAA,EACb,IAAA,CAAK,KAAA,EACN;QAAA,CAAA,EACA,EAAE,IAAA,EAAM,IAAA,EACT,CAAA;AACD,MAAA;AAEA,MAAA,MAAMyB,KAAO,IAAIC,QAAAA,EAAAA;AACjBD,MAAAA,EAAAA,CAAK,MAAA,GAAS,CAACE,CAAAA,EAAOC,GAAUC,EAAAA,KAAS;AACpC,QAAA,IAAA,CAAK,MAAA,KACR,KAAK,KAAA,GAAQ,IAAA,CAAK,IAAI,IAAA,CAAK,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,EAC5C,IAAA,CAAK,UAAU,IAAA,CAAK,EAAA,EAAI,UAAU,CAAA,EAClC,IAAA,CAAK,KAAK,OAAA,EAAS,IAAA,CAAK,KAAK,CAAA,CAAA,EAE9BA,EAAAA,EACD;AAAA,MAAA,CAAA,EACA,IAAA,CAAK,KAAA,CAAM,IAAA,CAAKJ,EAAI,GAEpB,IAAA,CAAK,EAAA,GAAKK,CAAAA,CAAS,eAAA,CAAgB,EAClC,KAAA,EAAO,IAAA,CAAK,KAAA,EACZ,MAAA,EAAQL,IACR,OAAA,EAAS,CAAA,EACT,MAAA,EAAQ,EAAA,EACR,mBAAmB,EAAA,EACnB,QAAA,EAAU,IAAA,EACV,GACDK,CAAAA,CAAS,kBAAA,CAAmB,IAAA,CAAK,KAAA,EAAO,KAAK,EAAE,CAAA,EAC/C,IAAA,CAAK,EAAA,CAAG,QAAO,EACX,IAAA,CAAK,IAAA,CAAK,YAAA,KAAiB,MAAA,IAAa,IAAA,CAAK,MAAA,IAChD,IAAA,CAAK,GAAG,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,YAAY,GAGrC,IAAA,CAAK,KAAA,CAAM,EAAA,CAAG,UAAA,EAAY,KAAK,UAAU,CAAA,EACzC5B,CAAAA,CAAW,IAAA,CAAK,OAAO,IAAI,CAAA,EAC3B,IAAA,CAAK,MAAA,CAAO,GAAG,QAAA,EAAU,IAAA,CAAK,MAAM,CAAA,EAEpC,KAAK,MAAA,EAAA,EAEL,IAAA,CAAK,IAAA,CAAK,UAAU,MAAM;AACzB,QAAA,IAAA,CAAK,MAAA,CAAO,MAAM6B,iBAAAA,CAAAA,MAAAA,CAAO,IAAI,CAAA,EAC7B,IAAA,CAAK,OAAO,GAAA,CAAI,QAAA,EAAU,KAAK,MAAM,CAAA,EACrC7B,EAAW,IAAA,CAAK,KAAA,EAAO,KAAK,CAAA,EAC5BqB,EAAAA,CAAQ,KAAK,KAAK,CAAA;AACnB,MAAA,CAAC,CAAA,EACD,IAAA,CAAK,IAAA,CAAK,QAAA,EAAU,MAAM;AACzB,QAAA,IAAA,CAAK,OAAO,KAAA,CAAMQ,iBAAAA,CAAAA,OAAO,IAAI,CAAA,EAC7B,KAAK,MAAA,CAAO,GAAA,CAAI,UAAU,IAAA,CAAK,MAAM,GACrC7B,CAAAA,CAAW,IAAA,CAAK,OAAO,KAAK,CAAA,EAC5BqB,GAAQvB,CAAa,CAAA;MACtB,CAAC,CAAA;IACF,CAAC,CAAA;AACF,EAAA;AAEQ,EAAA,UAAA,CAAW/E,IAAcuE,CAAAA,EAAW;AAyB3C,IAAA,IAxBI,KAAK,KAAA,KAAU,OAAA,KAClB,KAAK,KAAA,GAAQ,QAAA,CAAA,EAEVA,GAAK,IAAA,KACJ,CAAC,IAAA,CAAK,MAAA,IAAUF,EAAS,OAAA,CAAQ,GAAA,CAAIE,EAAI,IAAI,CAAA,IAChD,KAAK,IAAA,CAAK,QAAA,EAAUF,CAAAA,CAAS,OAAA,CAAQ,IAAIE,CAAAA,CAAI,IAAI,CAAC,CAAA,EAE/CF,CAAAA,CAAS,QAAQ,GAAA,CAAIE,CAAAA,CAAI,IAAc,CAAA,IAC1C,IAAA,CAAK,KAAK,QAAA,EAAUA,CAAAA,CAAI,IAAc,CAAA,CAAA,EAGpCvE,EAAAA,KAASA,GAAK,WAAA,EAAkB,KAAA,GAAA,IAAOA,EAAAA,CAAK,aAAY,KAAM,GAAA,CAAA,IACjE,KAAK,IAAA,CAAK,SAAA,EAAWA,GAAK,WAAA,EAAY,KAAM,GAAG,CAAA,EAE5CA,EAAAA,KAAS,OAAQ,IAAA,CAAK,IAAA,CAAK,gBACzB,IAAA,CAAK,KAAA,KACT,KAAK,EAAA,EAAI,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,WAAW,CAAA,EACpC,IAAA,CAAK,KAAK,OAAA,EAAS,IAAA,CAAK,KAAK,WAAW,CAAA,CAAA,CAAA,EAGtCA,MACH,IAAA,CAAK,IAAA,CAAK,OAAOA,EAAAA,CAAK,WAAA,EAAa,CAAA,EAGhCuE,CAAAA,EAAK,SAAS,QAAA,EAAU;AAC3B,MAAA,IAAI,IAAA,CAAK,KAAK,QAAA,EAAU;AACvB,QAAA,MAAMwC,EAAAA,GAAU,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,KAAK,KAAK,CAAA;AACzCA,QAAAA,EAAAA,KACH,IAAA,CAAK,KAAA,GAAQA,EAAAA,YAAmB,QAAQA,EAAAA,CAAQ,OAAA,GAAUA,EAAAA,EAC1D,IAAA,CAAK,QAAQ,OAAA,EACb,IAAA,CAAK,EAAA,EAAI,KAAA,CAAM,KAAK,KAAK,CAAA,CAAA;AAE3B,MAAA;AACI,MAAA,IAAA,CAAK,KAAA,KAAU,OAAA,KAClB,IAAA,CAAK,KAAA,GAAQ,QAAA,CAAA;AAEf,IAAA;AAEIzC,IAAAA,CAAAA,CAAY,CAACtE,EAAAA,EAAMuE,CAAAA,EAAK,IAAA,EAAMA,GAAK,QAAQ,CAAA,EAAG,QAAQ,CAAA,KACzD,IAAA,CAAK,KAAA,GAAQ,QAAA,CAAA,EAAA,CAEV,IAAA,CAAK,UAAU,QAAA,IAAY,IAAA,CAAK,KAAA,KAAU,QAAA,KAC7C,IAAA,CAAK,IAAA,CAAK,UAAU,CAAA,EAErB,KAAK,MAAA,EAAA,EAAA,CACD,IAAA,CAAK,KAAA,KAAU,QAAA,IAAY,IAAA,CAAK,KAAA,KAAU,QAAA,KAC7C,KAAK,KAAA,EAAA;AAEP,EAAA;EAEU,KAAA,GAAQ;AACjB,IAAA,IAAA,CAAK,KAAA,CAAM,MAAA,EAAO,EAClB,IAAA,CAAK,KAAA,CAAM,cAAA,CAAe,UAAA,EAAY,IAAA,CAAK,UAAU,CAAA,EACrD,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM;CAAI,CAAA,EACtBU,CAAAA,CAAW,KAAK,KAAA,EAAO,KAAK,GAC5B,IAAA,CAAK,EAAA,EAAI,KAAA,EAAA,EACT,IAAA,CAAK,EAAA,GAAK,QACV,IAAA,CAAK,IAAA,CAAK,GAAG,IAAA,CAAK,KAAK,IAAI,IAAA,CAAK,KAAK,CAAA,EACrC,IAAA,CAAK,WAAA,EACN;AAAA,EAAA;EAEQ,aAAA,GAAgB;AACvB,IAAA,MAAM+B,EAAAA,GACLC,CAAAA,CAAK,IAAA,CAAK,UAAA,EAAY,OAAA,CAAQ,MAAA,CAAO,OAAA,EAAS,EAAE,IAAA,EAAM,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM;AAAI,CAAA,CAAA,CAAE,MAAA,GAAS,CAAA;AACpF,IAAA,IAAA,CAAK,MAAA,CAAO,MAAMH,iBAAAA,CAAAA,MAAAA,CAAO,KAAK,IAAA,EAAME,EAAAA,GAAQ,EAAE,CAAC,CAAA;AAChD,EAAA;EAEQ,MAAA,GAAS;AAChB,IAAA,MAAME,EAAAA,GAAQD,CAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,IAAK,EAAA,EAAI,OAAA,CAAQ,MAAA,CAAO,OAAA,EAAS,EAAE,IAAA,EAAM,MAAM,CAAA;AACnF,IAAA,IAAIC,EAAAA,KAAU,KAAK,UAAA,EAEnB;AAAI,MAAA,IAAA,IAAA,CAAK,UAAU,SAAA,EAClB,IAAA,CAAK,OAAO,KAAA,CAAMJ,iBAAAA,CAAAA,OAAO,IAAI,CAAA;AACvB,WAAA;AACN,QAAA,MAAMhC,CAAAA,GAAOL,EAAAA,CAAU,IAAA,CAAK,UAAA,EAAYyC,EAAK,CAAA;AAG7C,QAAA,IAFA,KAAK,aAAA,EAAc,EAEfpC,CAAAA,IAAQA,CAAAA,EAAM,WAAW,CAAA,EAAG;AAC/B,UAAA,MAAMqC,EAAAA,GAAWrC,EAAK,CAAC,CAAA;AACvB,UAAA,IAAA,CAAK,OAAO,KAAA,CAAMgC,iBAAAA,CAAAA,MAAAA,CAAO,IAAA,CAAK,GAAGK,EAAQ,CAAC,CAAA,EAC1C,IAAA,CAAK,OAAO,KAAA,CAAMC,iBAAAA,CAAAA,KAAAA,CAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AAChC,UAAA,MAAMJ,CAAAA,GAAQE,GAAM,KAAA,CAAM;AAAI,CAAA,CAAA;AAC9B,UAAA,IAAA,CAAK,MAAA,CAAO,MAAMF,CAAAA,CAAMG,EAAQ,CAAC,CAAA,EACjC,IAAA,CAAK,aAAaD,EAAAA,EAClB,IAAA,CAAK,OAAO,KAAA,CAAMJ,iBAAAA,CAAAA,OAAO,IAAA,CAAK,CAAA,EAAGE,EAAM,MAAA,GAASG,EAAAA,GAAW,CAAC,CAAC,CAAA;AAC7D,UAAA;AAED,QAAA;AACA,QAAA,IAAIrC,CAAAA,IAAQA,CAAAA,EAAM,MAAA,GAAS,CAAA,EAAG;AAC7B,UAAA,MAAMqC,EAAAA,GAAWrC,EAAK,CAAC,CAAA;AACvB,UAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMgC,iBAAAA,CAAAA,MAAAA,CAAO,KAAK,CAAA,EAAGK,EAAQ,CAAC,CAAA,EAC1C,KAAK,MAAA,CAAO,KAAA,CAAMC,iBAAAA,CAAAA,KAAAA,CAAM,MAAM,CAAA;AAE9B,UAAA,MAAMC,CAAAA,GADQH,GAAM,KAAA,CAAM;AAAI,CAAA,CAAA,CACP,MAAMC,EAAQ,CAAA;AACrC,UAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAME,CAAAA,CAAS,IAAA,CAAK;CAAI,CAAC,CAAA,EACrC,KAAK,UAAA,GAAaH,EAAAA;AAClB,UAAA;AACD,QAAA;AAEA,QAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAME,iBAAAA,CAAAA,KAAAA,CAAM,MAAM,CAAA;AAC/B,MAAA;AAEA,MAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAMF,EAAK,CAAA,EACnB,IAAA,CAAK,KAAA,KAAU,SAAA,KAClB,IAAA,CAAK,KAAA,GAAQ,QAAA,CAAA,EAEd,IAAA,CAAK,UAAA,GAAaA,EAAAA;AAAAA,IAAAA;AACnB,EAAA;AACD,CAAA;AAAA,IC1RqBI,EAAAA,GD0RrB,cC1R2ChC,CAAAA,CAAO;AAAA,EAAA;;;AACjD,EAAA,IAAI,MAAA,GAAS;AACZ,IAAA,OAAO,IAAA,CAAK,QAAQ,CAAA,GAAI,CAAA;AACzB,EAAA;AAEA,EAAA,IAAY,MAAA,GAAS;AACpB,IAAA,OAAO,KAAK,MAAA,KAAW,CAAA;AACxB,EAAA;AAEA,EAAA,WAAA,CAAYQ,EAAAA,EAAsB;AACjC,IAAA,KAAA,CAAMA,EAAAA,EAAM,KAAK,CAAA,EACjB,IAAA,CAAK,KAAA,GAAQ,CAAC,CAACA,EAAAA,CAAK,YAAA,EAEpB,IAAA,CAAK,EAAA,CAAG,OAAA,EAAS,MAAM;AACtB,MAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,MAAA;AACnB,IAAA,CAAC,CAAA,EAED,IAAA,CAAK,EAAA,CAAG,SAAA,EAAYyB,CAAAA,CAAAA,KAAY;AAC/B,MAAA,IAAA,CAAK,OAAO,KAAA,CAAMT,iBAAAA,CAAAA,MAAAA,CAAO,IAAA,CAAK,GAAG,EAAE,CAAC,CAAA,EACpC,IAAA,CAAK,QAAQS,CAAAA,EACb,IAAA,CAAK,KAAA,GAAQ,QAAA,EACb,KAAK,KAAA,EACN;AAAA,IAAA,CAAC,CAAA,EAED,IAAA,CAAK,EAAA,CAAG,QAAA,EAAU,MAAM;AACvB,MAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,IAAA,CAAK,KAAA;IACpB,CAAC,CAAA;AACF,EAAA;AACD,CAAA;ACpCA,IAAAC,KAAA,MAAA,CAAA,cAAA;AAAA,IAAA9C,EAAAA,mBAAA,MAAA,CAAA,CAAAjF,EAAAA,EAAA4F,EAAAA,EAAA,CAAA,KAAAA,MAAA5F,EAAAA,GAAA+H,EAAAA,CAAA/H,EAAAA,EAAA4F,EAAAA,EAAA,EAAA,UAAA,EAAA,MAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,GAAA5F,EAAAA,CAAA4F,EAAA,CAAA,GAAA,CAAA,EAAA,IAAA,CAAA;AAAA,IAAAoC,CAAAA,mBAAA,MAAA,CAAA,CAAAhI,EAAAA,EAAA4F,EAAAA,EAAA,OAAAX,EAAAA,CAAAjF,EAAAA,EAAA,OAAA4F,EAAAA,IAAA,WAAAA,EAAAA,GAAA,EAAA,GAAAA,EAAAA,EAAA,CAAA,GAAA,CAAA,CAAA,EAAA,GAAA,CAAA;AAAA,IAAA,EAAA,GAQA,cAAyEC,CAAAA,CAAO;AAAA,EAAA;;;AAoB/E,EAAA,WAAA,CAAYQ,EAAAA,EAA6B;AACxC,IAAA,KAAA,CAAMA,EAAAA,EAAM,KAAK,CAAA,EApBlBN,CAAAA,CAAA,MAAA,SAAA,CAAA,EACAA,EAAA,IAAA,EAAA,QAAA,EAAS,CAAA,CAAA,EAqBR,IAAA,CAAK,UAAUM,EAAAA,CAAK,OAAA,EACpB,KAAK,KAAA,GAAQ,CAAC,GAAIA,EAAAA,CAAK,aAAA,IAAiB,EAAG,CAAA,EAC3C,IAAA,CAAK,SAAS,IAAA,CAAK,GAAA,CAClB,KAAK,OAAA,CAAQ,SAAA,CAAU,CAAC,EAAE,KAAA,EAAAhE,GAAM,KAAMA,CAAAA,KAAUgE,GAAK,QAAQ,CAAA,EAC7D,CACD,CAAA,EACA,IAAA,CAAK,EAAA,CAAG,KAAA,EAAQ9F,CAAAA,CAAAA,KAAS;AACpBA,MAAAA,CAAAA,KAAS,GAAA,IACZ,KAAK,SAAA,EAAA;AAEP,IAAA,CAAC,CAAA,EAED,IAAA,CAAK,EAAA,CAAG,QAAA,EAAWuE,CAAAA,CAAAA,KAAQ;AAC1B,MAAA,QAAQA,CAAAA;QACP,KAAK,MAAA;QACL,KAAK,IAAA;AACJ,UAAA,IAAA,CAAK,MAAA,GAAS,KAAK,MAAA,KAAW,CAAA,GAAI,KAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,GAAI,IAAA,CAAK,MAAA,GAAS,CAAA;AAC1E,UAAA;QACD,KAAK,MAAA;QACL,KAAK,OAAA;AACJ,UAAA,IAAA,CAAK,MAAA,GAAS,KAAK,MAAA,KAAW,IAAA,CAAK,QAAQ,MAAA,GAAS,CAAA,GAAI,CAAA,GAAI,IAAA,CAAK,MAAA,GAAS,CAAA;AAC1E,UAAA;QACD,KAAK,OAAA;AACJ,UAAA,IAAA,CAAK,WAAA,EAAA;AACL,UAAA;AACF;IACD,CAAC,CAAA;AACF,EAAA;AA9CA,EAAA,IAAY,MAAA,GAAS;AACpB,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,CAAE,KAAA;AAClC,EAAA;EAEQ,SAAA,GAAY;AACnB,IAAA,MAAMmD,EAAAA,GAAc,IAAA,CAAK,KAAA,CAAM,MAAA,KAAW,KAAK,OAAA,CAAQ,MAAA;AACvD,IAAA,IAAA,CAAK,KAAA,GAAQA,KAAc,EAAA,GAAK,KAAK,OAAA,CAAQ,GAAA,CAAKvC,CAAAA,CAAAA,KAAMA,CAAAA,CAAE,KAAK,CAAA;AAChE,EAAA;EAEQ,WAAA,GAAc;AACrB,IAAA,MAAMwC,EAAAA,GAAW,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,KAAK,MAAM,CAAA;AAChD,IAAA,IAAA,CAAK,KAAA,GAAQA,EAAAA,GACV,IAAA,CAAK,KAAA,CAAM,OAAQ7F,CAAAA,CAAAA,KAAsBA,CAAAA,KAAU,IAAA,CAAK,MAAM,IAC9D,CAAC,GAAG,IAAA,CAAK,KAAA,EAAO,KAAK,MAAM,CAAA;AAC/B,EAAA;AAiCD,CAAA;AC3BA,IAAA,KAAA,MAAA,CAAA,cAAA;AAAA,IAAA,EAAA,mBAAA,MAAA,CAAA,CAAA9C,EAAAA,EAAA4I,EAAAA,EAAA,CAAA,KAAAA,MAAA5I,EAAAA,GAAA,EAAA,CAAAA,EAAAA,EAAA4I,EAAAA,EAAA,EAAA,UAAA,EAAA,MAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,GAAA5I,EAAAA,CAAA4I,EAAA,CAAA,GAAA,CAAA,EAAA,IAAA,CAAA;AAAA,IAAA,CAAA,mBAAA,MAAA,CAAA,CAAA5I,EAAAA,EAAA4I,EAAAA,EAAA,OAAA,EAAA,CAAA5I,EAAAA,EAAA,OAAA4I,EAAAA,IAAA,WAAAA,EAAAA,GAAA,EAAA,GAAAA,EAAAA,EAAA,CAAA,GAAA,CAAA,CAAA,EAAA,GAAA,CAAA;AC1BA,IAAqBC,EAAAA,GAArB,cAAoEvC,CAAAA,CAAO;AAAA,EAAA;;;AAY1E,EAAA,WAAA,CAAYQ,EAAAA,EAAwB;AACnC,IAAA,KAAA,CAAMA,IAAM,KAAK,CAAA,EAZlBN,EAAA,IAAA,EAAA,SAAA,GACAA,CAAAA,CAAA,IAAA,EAAA,UAAS,CAaR,CAAA,EAAA,KAAK,OAAA,GAAUM,EAAAA,CAAK,SACpB,IAAA,CAAK,MAAA,GAAS,KAAK,OAAA,CAAQ,SAAA,CAAU,CAAC,EAAE,OAAAhE,CAAAA,EAAM,KAAMA,MAAUgE,EAAAA,CAAK,YAAY,GAC3E,IAAA,CAAK,MAAA,KAAW,OAAI,IAAA,CAAK,MAAA,GAAS,IACtC,IAAA,CAAK,WAAA,IAEL,IAAA,CAAK,EAAA,CAAG,UAAWvB,CAAAA,CAAAA,KAAQ;AAC1B,MAAA,QAAQA,CAAAA;QACP,KAAK,MAAA;QACL,KAAK,IAAA;AACJ,UAAA,IAAA,CAAK,MAAA,GAAS,KAAK,MAAA,KAAW,CAAA,GAAI,KAAK,OAAA,CAAQ,MAAA,GAAS,CAAA,GAAI,IAAA,CAAK,MAAA,GAAS,CAAA;AAC1E,UAAA;QACD,KAAK,MAAA;QACL,KAAK,OAAA;AACJ,UAAA,IAAA,CAAK,MAAA,GAAS,KAAK,MAAA,KAAW,IAAA,CAAK,QAAQ,MAAA,GAAS,CAAA,GAAI,CAAA,GAAI,IAAA,CAAK,MAAA,GAAS,CAAA;AAC1E,UAAA;AACF;AACA,MAAA,IAAA,CAAK,WAAA,EACN;IAAA,CAAC,CAAA;AACF,EAAA;AA7BA,EAAA,IAAY,MAAA,GAAS;AACpB,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAChC,EAAA;EAEQ,WAAA,GAAc;AACrB,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAK,MAAA,CAAO,KAAA;AAC1B,EAAA;AAwBD,CAAA;;;;;ACtCe,SAASuD,EAAAA,GAAqB;AAC5C,EAAA,OAAIC,EAAAA,CAAQ,aAAa,OAAA,GACjBA,EAAAA,CAAQ,IAAI,IAAA,KAAS,OAAA,GAGtB,CAAA,CAAQA,EAAAA,CAAQ,IAAI,EAAA,IACvB,CAAA,CAAQA,EAAAA,CAAQ,GAAA,CAAI,cACpB,CAAA,CAAQA,GAAQ,GAAA,CAAI,gBAAA,IACpBA,GAAQ,GAAA,CAAI,UAAA,KAAe,kBAC3BA,EAAAA,CAAQ,GAAA,CAAI,iBAAiB,kBAAA,IAC7BA,EAAAA,CAAQ,IAAI,YAAA,KAAiB,QAAA,IAC7BA,GAAQ,GAAA,CAAI,IAAA,KAAS,oBACrBA,EAAAA,CAAQ,GAAA,CAAI,SAAS,WAAA,IACrBA,EAAAA,CAAQ,IAAI,iBAAA,KAAsB,oBAAA;AACvC;AAdwBD,MAAAA,CAAAA,EAAAA,EAAAA,IAAAA,CAAAA;ACkBxB,IAAME,KAAUF,EAAAA,EAAAA;AAAhB,IACMzC,oBAAI,MAAA,CAAA,CAAC4C,CAAAA,EAAWC,CAAAA,KAAsBF,EAAAA,GAAUC,IAAIC,CAAAA,EAAhD,GAAA,CAAA;AADV,IAEMC,EAAAA,GAAgB9C,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAFhC,IAGM+C,EAAAA,GAAgB/C,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAHhC,IAIMgD,EAAAA,GAAehD,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAJ/B,IAKMiD,CAAAA,GAAgBjD,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAEZA,CAAAA,CAAE,QAAA,EAAK,GAAG;AAP9B,IAQMkD,CAAAA,GAAQlD,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AARxB,IASMmD,EAAAA,GAAYnD,CAAAA,CAAE,QAAA,EAAK,QAAG,CAAA;AAT5B,IAWMoD,EAAAA,GAAiBpD,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AAXjC,IAYMqD,EAAAA,GAAmBrD,CAAAA,CAAE,QAAA,EAAK,GAAG,CAAA;AACTA,CAAAA,CAAE,QAAA,EAAK,UAAK;AACVA,CAAAA,CAAE,QAAA,EAAK,KAAK;AACZA,CAAAA,CAAE,QAAA,EAAK,KAAK;AAChBA,CAAAA,CAAE,QAAA,EAAK,QAAG;AAElBA,CAAAA,CAAE,QAAA,EAAK,GAAG;AACCA,CAAAA,CAAE,QAAA,EAAK,GAAG;AACdA,CAAAA,CAAE,QAAA,EAAK,GAAG;AACHA,CAAAA,CAAE,QAAA,EAAK,GAAG;AAEzBA,CAAAA,CAAE,QAAA,EAAK,QAAG;AACPA,CAAAA,CAAE,QAAA,EAAK,GAAG;AACbA,CAAAA,CAAE,QAAA,EAAK,GAAG;AACTA,CAAAA,CAAE,QAAA,EAAK,GAAG;AA1B1B,IA4BMsD,qBAAUC,MAAAA,CAAAA,CAAAA,CAAAA,KAAiB;AAChC,EAAA,QAAQA,CAAAA;IACP,KAAK,SAAA;IACL,KAAK,QAAA;AACJ,MAAA,OAAOC,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKV,EAAa,CAAA;IAChC,KAAK,QAAA;AACJ,MAAA,OAAOU,iBAAAA,CAAAA,OAAAA,CAAM,GAAA,CAAIT,EAAa,CAAA;IAC/B,KAAK,OAAA;AACJ,MAAA,OAAOS,iBAAAA,CAAAA,OAAAA,CAAM,MAAA,CAAOR,EAAY,CAAA;IACjC,KAAK,QAAA;AACJ,MAAA,OAAOQ,iBAAAA,CAAAA,OAAAA,CAAM,KAAA,CAAMP,CAAa,CAAA;AAClC;AACD,CAAA,EAZgBM,GAAAA,CAAAA;AA5BhB,IAiDME,qBAAyB9C,MAAAA,CAAAA,CAAAA,CAAAA,KAAkD;AAChF,EAAA,MAAM,EAAE,MAAA,EAAAc,CAAAA,EAAQ,OAAA,EAAA1G,EAAAA,EAAS,KAAA,EAAAoB,CAAAA,EAAM,GAAIwE,CAAAA,EAE7B+C,CAAAA,GAAgB/C,CAAAA,CAAO,QAAA,IAAY,OAAO,iBAAA,EAC1CgD,CAAAA,GAAiB,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,MAAA,CAAO,IAAA,GAAO,CAAA,EAAG,CAAC,CAAA,EAEpDC,CAAAA,GAAW,IAAA,CAAK,GAAA,CAAID,CAAAA,EAAgB,IAAA,CAAK,GAAA,CAAID,CAAAA,EAAe,CAAC,CAAC,CAAA;AACpE,EAAA,IAAIG,EAAAA,GAAwB,CAAA;AAExBpC,EAAAA,CAAAA,IAAUoC,EAAAA,GAAwBD,CAAAA,GAAW,CAAA,GAChDC,EAAAA,GAAwB,IAAA,CAAK,IAAI,IAAA,CAAK,GAAA,CAAIpC,CAAAA,GAASmC,CAAAA,GAAW,CAAA,EAAG7I,EAAAA,CAAQ,SAAS6I,CAAQ,CAAA,EAAG,CAAC,CAAA,GACpFnC,CAAAA,GAASoC,EAAAA,GAAwB,CAAA,KAC3CA,EAAAA,GAAwB,IAAA,CAAK,GAAA,CAAIpC,CAAAA,GAAS,CAAA,EAAG,CAAC,CAAA,CAAA;AAG/C,EAAA,MAAMqC,EAAAA,GAA0BF,CAAAA,GAAW7I,EAAAA,CAAQ,MAAA,IAAU8I,EAAAA,GAAwB,CAAA,EAC/EE,EAAAA,GACLH,CAAAA,GAAW7I,EAAAA,CAAQ,MAAA,IAAU8I,EAAAA,GAAwBD,CAAAA,GAAW7I,EAAAA,CAAQ,MAAA;AAEzE,EAAA,OAAOA,EAAAA,CACL,KAAA,CAAM8I,EAAAA,EAAuBA,EAAAA,GAAwBD,CAAQ,EAC7D,GAAA,CAAI,CAACI,EAAAA,EAAQ5J,CAAAA,EAAG6J,CAAAA,KAAQ;AACxB,IAAA,MAAMC,EAAAA,GAAa9J,MAAM,CAAA,IAAK0J,EAAAA,EACxBK,IAAgB/J,CAAAA,KAAM6J,CAAAA,CAAI,SAAS,CAAA,IAAKF,EAAAA;AAC9C,IAAA,OAAOG,EAAAA,IAAcC,CAAAA,GAClBX,iBAAAA,CAAAA,OAAAA,CAAM,GAAA,CAAI,KAAK,CAAA,GACfrH,CAAAA,CAAM6H,EAAAA,EAAQ5J,CAAAA,GAAIyJ,EAAAA,KAA0BpC,CAAM,CAAA;EACtD,CAAC,CAAA;AACH,CAAA,EA5B+Bd,GAAAA,CAAAA;AAjD/B,IA4OayD,qBAAiB3D,MAAAA,CAAAA,CAAAA,CAAAA,KAA+B;AAC5D,EAAA,MAAM4D,CAAAA,mBAAM,MAAA,CAAA,CAACL,EAAAA,EAAuBT,CAAAA,KAA4D;AAC/F,IAAA,MAAMe,CAAAA,GAAQN,EAAAA,CAAO,KAAA,IAAS,MAAA,CAAOA,GAAO,KAAK,CAAA;AACjD,IAAA,QAAQT,CAAAA;MACP,KAAK,UAAA;AACJ,QAAA,OAAO,CAAA,EAAGC,iBAAAA,CAAAA,OAAAA,CAAM,GAAA,CAAIc,CAAK,CAAC,CAAA,CAAA;MAC3B,KAAK,QAAA;AACJ,QAAA,OAAO,GAAGd,iBAAAA,CAAAA,OAAAA,CAAM,MAAMJ,EAAc,CAAC,IAAIkB,CAAK,CAAA,CAAA,EAC7CN,GAAO,IAAA,GAAOR,iBAAAA,CAAAA,QAAM,GAAA,CAAI,CAAA,CAAA,EAAIQ,GAAO,IAAI,CAAA,CAAA,CAAG,IAAI,EAC/C,CAAA,CAAA;MACD,KAAK,WAAA;AACJ,QAAA,OAAO,CAAA,EAAGR,kBAAAA,OAAAA,CAAM,aAAA,CAAcA,kBAAAA,OAAAA,CAAM,GAAA,CAAIc,CAAK,CAAC,CAAC,CAAA,CAAA;AAChD,MAAA;AACC,QAAA,OAAO,CAAA,EAAGd,iBAAAA,CAAAA,OAAAA,CAAM,GAAA,CAAIH,EAAgB,CAAC,CAAA,CAAA,EAAIG,iBAAAA,CAAAA,OAAAA,CAAM,GAAA,CAAIc,CAAK,CAAC,CAAA,CAAA;AAC3D;EACD,CAAA,EAdY,GAAA,CAAA;AAgBZ,EAAA,OAAO,IAAI9B,GAAa,EACvB,OAAA,EAAS/B,EAAK,OAAA,EACd,YAAA,EAAcA,CAAAA,CAAK,YAAA,EACnB,MAAA,GAAS;AACR,IAAA,MAAM8D,KAAQ,CAAA,EAAGf,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKN,CAAK,CAAC;AAAKI,EAAAA,EAAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA,EAAA,EAAK7C,EAAK,OAAO;;AAE1E,IAAA,QAAQ,KAAK,KAAA;MACZ,KAAK,QAAA;AACJ,QAAA,OAAO,GAAG8D,EAAK,CAAA,EAAGf,iBAAAA,CAAAA,OAAAA,CAAM,KAAKN,CAAK,CAAC,CAAA,EAAA,EAAKmB,CAAAA,CAAI,KAAK,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,EAAG,UAAU,CAAC,CAAA,CAAA;MACnF,KAAK,QAAA;AACJ,QAAA,OAAO,GAAGE,EAAK,CAAA,EAAGf,iBAAAA,CAAAA,OAAAA,CAAM,KAAKN,CAAK,CAAC,CAAA,EAAA,EAAKmB,CAAAA,CACvC,KAAK,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,EACxB,WACD,CAAC;EAAKb,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKN,CAAK,CAAC,CAAA,CAAA;AACxB,MAAA;AACC,QAAA,OAAO,CAAA,EAAGqB,EAAK,CAAA,EAAGf,iBAAAA,CAAAA,QAAM,IAAA,CAAKN,CAAK,CAAC,CAAA,EAAA,EAAKO,EAAAA,CAAa,EACpD,MAAA,EAAQ,IAAA,CAAK,QACb,OAAA,EAAS,IAAA,CAAK,OAAA,EACd,QAAA,EAAUhD,CAAAA,CAAK,QAAA,EACf,KAAA,kBAAO,MAAA,CAAA,CAAC+D,GAAMC,CAAAA,KAAWJ,CAAAA,CAAIG,CAAAA,EAAMC,CAAAA,GAAS,WAAW,UAAU,CAAA,EAA1D,OAAA,CAAA,EACP,EAAE,IAAA,CAAK;AAAKjB,EAAAA,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKN,CAAK,CAAC,IAAI,CAAC;EAAKM,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKL,EAAS,CAAC;;AAE/D;EACD,CAAA,EACA,EAAE,MAAA,EAAA;AACJ,CAAA,EA1C8B1C,IAAAA,CAAAA;AA8af,CAAA,EAAG+C,iBAAAA,CAAAA,OAAAA,CAAM,IAAA,CAAKN,CAAK,CAAC,CAAA,EAAA;AC3qB5B,IAAM,SAAA,GAAN,cAAwB,KAAA,CAAM;AAAA,EACnC,WAAA,CACW,QAAA,EACA,MAAA,EACA,IAAA,GAAe,wBAAA,EACxB;AACA,IAAA,KAAA,CAAM,IAAI,CAAA;AAJD,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AACA,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAAA,EAGX;AAAA,EAVF;AAGqC,IAAA,MAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AAAA;AAQrC,CAAA;AAEO,SAAS,gBAAA,CACd,OAAA,EACA,IAAA,EACA,YAAA,EACA;AACA,EAAA,MAAM,eAAe,KAAA,CAAM,OAAA,EAAS,IAAA,EAAM,YAAA,IAAgB,EAAE,CAAA;AAE5D,EAAA,MAAM,QAAA,GAAW,IAAI,OAAA,CAAgB,CAAC,SAAS,MAAA,KAAW;AACxD,IAAA,IAAI,UAAA,GAAqB,EAAA;AACzB,IAAA,IAAI,UAAA,GAAqB,EAAA;AACzB,IAAA,YAAA,CAAa,MAAA,EAAQ,EAAA,CAAG,MAAA,EAAQ,CAAC,IAAA,KAAS;AACxC,MAAA,UAAA,IAAc,KAAK,QAAA,EAAS;AAAA,IAC9B,CAAC,CAAA;AACD,IAAA,YAAA,CAAa,MAAA,EAAQ,EAAA,CAAG,MAAA,EAAQ,CAAC,IAAA,KAAS;AACxC,MAAA,UAAA,IAAc,KAAK,QAAA,EAAS;AAAA,IAC9B,CAAC,CAAA;AACD,IAAA,YAAA,CAAa,MAAA,EAAQ,EAAA,CAAG,OAAA,EAAS,CAAC,GAAA,KAAQ;AACxC,MAAA,MAAA,CAAO,GAAG,CAAA;AAAA,IACZ,CAAC,CAAA;AACD,IAAA,YAAA,CAAa,MAAA,EAAQ,EAAA,CAAG,OAAA,EAAS,CAAC,GAAA,KAAQ;AACxC,MAAA,MAAA,CAAO,GAAG,CAAA;AAAA,IACZ,CAAC,CAAA;AACD,IAAA,YAAA,CAAa,EAAA,CAAG,OAAA,EAAS,CAAC,GAAA,KAAQ;AAChC,MAAA,MAAA,CAAO,GAAG,CAAA;AAAA,IACZ,CAAC,CAAA;AACD,IAAA,YAAA,CAAa,EAAA,CAAG,MAAA,EAAQ,CAAC,QAAA,EAAU,MAAA,KAAW;AAC5C,MAAA,IAAI,CAAC,QAAA,EAAU;AACb,QAAA,OAAA,CAAQ,UAAU,CAAA;AAAA,MACpB,CAAA,MAAO;AACL,QAAA,MAAA;AAAA,UACE,IAAI,SAAA,CAAU,QAAA,EAAU,MAAA,EAAQ,UAAU;AAAA,SAC5C;AAAA,MACF;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AAED,EAAA,OAAO,EAAE,YAAA,EAAc,UAAA,EAAY,QAAA,EAAS;AAC9C;AArCgB,MAAA,CAAA,gBAAA,EAAA,kBAAA,CAAA;AAuChB,eAAsB,UAAA,CACpB,OAAA,EACA,IAAA,EACA,IAAA,EACA;AACA,EAAA,MAAM,EAAE,UAAA,EAAW,GAAI,gBAAA,CAAiB,OAAA,EAAS,MAAM,IAAI,CAAA;AAC3D,EAAA,OAAO,UAAA;AACT;AAPsB,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AASG,UAAU,IAAI;AC1DvC,eAAsB,qBAAA,CAAsBwB,KAAAA,EAAc,gBAAA,GAAmB,KAAA,EAAO;AAClF,EAAA,IAAI;AAGF,IAAA,MAAM,UAAA,CAAW,KAAA,EAAO,CAAC,cAAA,EAAgBA,KAAAA,EAAM,IAAI,CAAA,EAAG,EAAE,GAAA,EAAK,OAAA,CAAQA,KAAI,CAAA,EAAG,CAAA;AAC5E,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,GAAA,EAAK;AACZ,IAAA,MAAM,cAAe,GAAA,CAAY,IAAA;AAEjC,IAAA,IACG,GAAA,CAAY,QAAA,KAAa,GAAA,IACvB,WAAA,CAAY,QAAA,CAAS,WAAW,CAAA,IAChC,WAAA,CAAY,QAAA,CAAS,gBAAgB,CAAA,EACxC;AACA,MAAA,OAAO,MAAA;AAAA,IACT;AAGA,IAAA,IAAK,GAAA,CAAY,IAAA,KAAS,QAAA,EAAU,OAAO,MAAA;AAE3C,IAAA,IAAI,WAAA,KAAgB,IAAI,OAAO,KAAA;AAC/B,IAAA,IAAI,WAAA,CAAY,QAAA,CAAS,sBAAsB,CAAA,EAAG;AAChD,MAAA,IAAI,gBAAA,EAAkB;AAEpB,QAAA,OAAA,CAAQ,IAAI,qGAA8F,CAAA;AAAA,MAC5G;AACA,MAAA,OAAO,KAAA;AAAA,IACT;AAEA,IAAA,IAAI,MAAA,CAAO,QAAA,CAAS,uBAAuB,CAAA,EAAG;AAC5C,MAAA,OAAO,MAAA;AAAA,IACT;AAEA,IAAA,MAAM,GAAA;AAAA,EACR;AACF;AAnCsB,MAAA,CAAA,qBAAA,EAAA,uBAAA,CAAA;ACDP,SAAR,kBAAA,GAAsC;AAC5C,EAAA,MAAM,EAAC,KAAG,GAAIhC,EAAAA;AACd,EAAA,MAAM,EAAC,IAAA,EAAM,YAAA,EAAY,GAAI,GAAA;AAE7B,EAAA,IAAIA,EAAAA,CAAQ,aAAa,OAAA,EAAS;AACjC,IAAA,OAAO,IAAA,KAAS,OAAA;AAAA,EACjB;AAEA,EAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,UAAU,CAAA,IACzB,OAAA,CAAQ,IAAI,gBAAgB,CAAA,IAC5B,GAAA,CAAI,UAAA,KAAe,cAAA,IACnB,YAAA,KAAiB,sBACjB,YAAA,KAAiB,QAAA,IACjB,IAAA,KAAS,gBAAA,IACT,IAAA,KAAS,WAAA,IACT,SAAS,cAAA,IACT,IAAA,KAAS,uBAAA,IACT,GAAA,CAAI,iBAAA,KAAsB,oBAAA;AAC/B;AAlBwB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;;;ACWxB,IAAM,UAAU,kBAAA,EAAmB;AAEnC,IAAM,4BAAY,MAAA,CAAA,CAAC,CAAA,EAAW,QAAA,KAAsB,OAAA,GAAU,IAAI,QAAA,EAAhD,WAAA,CAAA;AAClB,IAAM,aAAA,GAAgB,SAAA,CAAU,QAAA,EAAK,GAAG,CAAA;AACxC,IAAM,aAAA,GAAgB,SAAA,CAAU,QAAA,EAAK,GAAG,CAAA;AACxC,IAAM,YAAA,GAAe,SAAA,CAAU,QAAA,EAAK,GAAG,CAAA;AACvC,IAAM,aAAA,GAAgB,SAAA,CAAU,QAAA,EAAK,GAAG,CAAA;AAEpB,SAAA,CAAU,QAAA,EAAK,GAAG;AACtC,IAAM,KAAA,GAAQ,SAAA,CAAU,QAAA,EAAK,GAAG,CAAA;AAChC,IAAM,SAAA,GAAY,SAAA,CAAU,QAAA,EAAK,QAAG,CAAA;AAEpC,IAAM,cAAA,GAAiB,SAAA,CAAU,QAAA,EAAK,GAAG,CAAA;AACzC,IAAM,gBAAA,GAAmB,SAAA,CAAU,QAAA,EAAK,GAAG,CAAA;AAC3C,IAAM,iBAAA,GAAoB,SAAA,CAAU,QAAA,EAAK,UAAK,CAAA;AAC9C,IAAM,mBAAA,GAAsB,SAAA,CAAU,QAAA,EAAK,KAAK,CAAA;AAChD,IAAM,mBAAA,GAAsB,SAAA,CAAU,QAAA,EAAK,KAAK,CAAA;AACxB,SAAA,CAAU,QAAA,EAAK,QAAG;AAE1B,SAAA,CAAU,QAAA,EAAK,GAAG;AACP,SAAA,CAAU,QAAA,EAAK,GAAG;AACtB,SAAA,CAAU,QAAA,EAAK,GAAG;AACX,SAAA,CAAU,QAAA,EAAK,GAAG;AAEjC,SAAA,CAAU,QAAA,EAAK,QAAG;AACf,SAAA,CAAU,QAAA,EAAK,GAAG;AACrB,SAAA,CAAU,QAAA,EAAK,GAAG;AACjB,SAAA,CAAU,QAAA,EAAK,GAAG;AAElC,IAAM,MAAA,2BAAU,KAAA,KAAiB;AAE/B,EAAA,QAAQ,KAAA;AAAO,IACb,KAAK,SAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,OAAO,aAAA,CAAM,KAAK,aAAa,CAAA;AAAA,IACjC,KAAK,QAAA;AACH,MAAA,OAAO,aAAA,CAAM,IAAI,aAAa,CAAA;AAAA,IAChC,KAAK,OAAA;AACH,MAAA,OAAO,aAAA,CAAM,OAAO,YAAY,CAAA;AAAA,IAClC,KAAK,QAAA;AACH,MAAA,OAAO,aAAA,CAAM,MAAM,aAAa,CAAA;AAAA;AAEtC,CAAA,EAbe,QAAA,CAAA;AA+BR,IAAM,YAAA,2BAAyB,MAAA,KAAuD;AAC3F,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAM,GAAI,MAAA;AACnC,EAAA,MAAM,MAAA,GAAmB,MAAA,CAAO,MAAA,IAAU,OAAA,CAAQ,MAAA;AAClD,EAAA,MAAM,OAAO,MAAA,YAAkB,WAAA,IAAe,OAAO,IAAA,KAAS,MAAA,GAAY,OAAO,IAAA,GAAO,EAAA;AAExF,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,QAAA,IAAY,MAAA,CAAO,iBAAA;AAChD,EAAA,MAAM,cAAA,GAAiB,IAAA,CAAK,GAAA,CAAI,IAAA,GAAO,GAAG,CAAC,CAAA;AAE3C,EAAA,MAAM,QAAA,GAAW,KAAK,GAAA,CAAI,cAAA,EAAgB,KAAK,GAAA,CAAI,aAAA,EAAe,CAAC,CAAC,CAAA;AACpE,EAAA,IAAI,qBAAA,GAAwB,CAAA;AAE5B,EAAA,IAAI,MAAA,IAAU,qBAAA,GAAwB,QAAA,GAAW,CAAA,EAAG;AAClD,IAAA,qBAAA,GAAwB,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,MAAA,GAAS,QAAA,GAAW,CAAA,EAAG,OAAA,CAAQ,MAAA,GAAS,QAAQ,CAAA,EAAG,CAAC,CAAA;AAAA,EAChG,CAAA,MAAA,IAAW,MAAA,GAAS,qBAAA,GAAwB,CAAA,EAAG;AAC7C,IAAA,qBAAA,GAAwB,IAAA,CAAK,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG,CAAC,CAAA;AAAA,EAChD;AAEA,EAAA,MAAM,uBAAA,GAA0B,QAAA,GAAW,OAAA,CAAQ,MAAA,IAAU,qBAAA,GAAwB,CAAA;AACrF,EAAA,MAAM,6BAA6B,QAAA,GAAW,OAAA,CAAQ,MAAA,IAAU,qBAAA,GAAwB,WAAW,OAAA,CAAQ,MAAA;AAE3G,EAAA,OAAO,OAAA,CACJ,KAAA,CAAM,qBAAA,EAAuB,qBAAA,GAAwB,QAAQ,EAC7D,GAAA,CAAI,CAAC,MAAA,EAAQ,CAAA,EAAG,GAAA,KAAQ;AACvB,IAAA,MAAM,UAAA,GAAa,MAAM,CAAA,IAAK,uBAAA;AAC9B,IAAA,MAAM,aAAA,GAAgB,CAAA,KAAM,GAAA,CAAI,MAAA,GAAS,CAAA,IAAK,0BAAA;AAC9C,IAAA,OAAO,UAAA,IAAc,aAAA,GACjB,aAAA,CAAM,GAAA,CAAI,KAAK,IACf,KAAA,CAAM,MAAA,EAAQ,CAAA,GAAI,qBAAA,KAA0B,MAAM,CAAA;AAAA,EACxD,CAAC,CAAA;AACL,CAAA,EA7B4B,cAAA,CAAA;AAwCrB,IAAM,OAAA,2BAAW,IAAA,KAAyB;AAC/C,EAAA,MAAM,MAAA,GAAS,KAAK,MAAA,IAAU,KAAA;AAC9B,EAAA,MAAM,QAAA,GAAW,KAAK,QAAA,IAAY,IAAA;AAClC,EAAA,OAAO,IAAI,EAAA,CAAc;AAAA,IACvB,MAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,YAAA,EAAc,KAAK,YAAA,IAAgB,IAAA;AAAA,IACnC,MAAA,GAAS;AACP,MAAA,MAAM,KAAA,GAAQ;AAAA,EAAK,OAAO,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA,EAAI,KAAK,OAAO;AAAA,CAAA;AACrD,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,GAAQ,MAAA,GAAS,QAAA;AAGpC,MAAA,QAAQ,KAAK,KAAA;AAAO,QAClB,KAAK,QAAA;AACH,UAAA,OAAO,GAAG,KAAK,CAAA,OAAA,EAAK,aAAA,CAAM,GAAA,CAAI,KAAK,CAAC,CAAA,CAAA;AAAA,QACtC,KAAK,QAAA;AACH,UAAA,OAAO,CAAA,EAAG,KAAK,CAAA,OAAA,EAAK,aAAA,CAAM,aAAA;AAAA,YACxB,aAAA,CAAM,IAAI,KAAK;AAAA,WAChB;AAAA,CAAA;AAAA,QACH,SAAS;AACP,UAAA,OAAO,CAAA,EAAG,KAAK,CAAA,OAAA,EACb,IAAA,CAAK,QACD,CAAA,EAAG,aAAA,CAAM,KAAA,CAAM,cAAc,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,GACxC,CAAA,EAAG,aAAA,CAAM,GAAA,CAAI,gBAAgB,CAAC,IAAI,aAAA,CAAM,GAAA,CAAI,MAAM,CAAC,CAAA,CACzD,CAAA,CAAA,EAAI,cAAM,GAAA,CAAI,GAAG,CAAC,CAAA,CAAA,EAChB,CAAC,IAAA,CAAK,QACF,CAAA,EAAG,aAAA,CAAM,KAAA,CAAM,cAAc,CAAC,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAA,GAC1C,CAAA,EAAG,aAAA,CAAM,GAAA,CAAI,gBAAgB,CAAC,IAAI,aAAA,CAAM,GAAA,CAAI,QAAQ,CAAC,CAAA,CAC3D;AAAA,CAAA;AAAA,QACF;AAAA;AACF,IACF;AAAA,GACD,EAAE,MAAA,EAAO;AACZ,CAAA,EAnCuB,SAAA,CAAA;AAsFhB,IAAM,MAAA,2BAAiB,IAAA,KAA+B;AAC3D,EAAA,MAAM,GAAA,mBAAM,MAAA,CAAA,CAAC,MAAA,EAAuB,KAAA,KAA4D;AAC9F,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,OAAO,KAAK,CAAA;AACjD,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,UAAA;AACH,QAAA,OAAO,CAAA,EAAG,aAAA,CAAM,GAAA,CAAI,KAAK,CAAC,CAAA,CAAA;AAAA,MAC5B,KAAK,QAAA;AACH,QAAA,OAAO,GAAG,aAAA,CAAM,KAAA,CAAM,cAAc,CAAC,IAAI,KAAK,CAAA,CAAA,EAC5C,MAAA,CAAO,IAAA,GAAO,cAAM,GAAA,CAAI,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA,CAAA,CAAG,IAAI,EAChD,CAAA,CAAA;AAAA,MACF,KAAK,WAAA;AACH,QAAA,OAAO,GAAG,aAAA,CAAM,aAAA,CAAc,cAAM,GAAA,CAAI,KAAK,CAAC,CAAC,CAAA,CAAA;AAAA,MACjD;AACE,QAAA,OAAO,CAAA,EAAG,cAAM,GAAA,CAAI,gBAAgB,CAAC,CAAA,CAAA,EAAI,aAAA,CAAM,GAAA,CAAI,KAAK,CAAC,CAAA,CAAA;AAAA;AAC7D,EACF,CAAA,EAdY,KAAA,CAAA;AAgBZ,EAAA,OAAO,IAAI,EAAA,CAAa;AAAA,IACtB,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,cAAc,IAAA,CAAK,YAAA;AAAA,IACnB,MAAA,GAAS;AACP,MAAA,MAAM,KAAA,GAAQ,CAAA,EAAG,aAAA,CAAM,IAAA,CAAK,KAAK,CAAC;AAAA,EAAK,OAAO,IAAA,CAAK,KAAK,CAAC,CAAA,EAAA,EAAK,KAAK,OAAO;AAAA,CAAA;AAE1E,MAAA,QAAQ,KAAK,KAAA;AAAO,QAClB,KAAK,QAAA;AACH,UAAA,OAAO,CAAA,EAAG,KAAK,CAAA,EAAG,aAAA,CAAM,KAAK,KAAK,CAAC,CAAA,EAAA,EAAK,GAAA,CAAI,KAAK,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,EAAG,UAAU,CAAC,CAAA,CAAA;AAAA,QACpF,KAAK,QAAA;AACH,UAAA,OAAO,GAAG,KAAK,CAAA,EAAG,cAAM,IAAA,CAAK,KAAK,CAAC,CAAA,EAAA,EAAK,GAAA;AAAA,YACtC,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAAA,YACxB;AAAA,WACD;AAAA,EAAK,aAAA,CAAM,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA;AAAA,QACzB,SAAS;AACP,UAAA,OAAO,CAAA,EAAG,KAAK,CAAA,EAAG,aAAA,CAAM,KAAK,KAAK,CAAC,KAAK,YAAA,CAAa;AAAA,YACnD,QAAQ,IAAA,CAAK,MAAA;AAAA,YACb,QAAQ,IAAA,CAAK,MAAA;AAAA,YACb,SAAS,IAAA,CAAK,OAAA;AAAA,YACd,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,KAAA,0BAAQ,IAAA,EAAM,MAAA,KAAW,IAAI,IAAA,EAAM,MAAA,GAAS,QAAA,GAAW,UAAU,CAAA,EAA1D,OAAA;AAAA,WACR,EAAE,IAAA,CAAK;AAAA,EAAK,aAAA,CAAM,IAAA,CAAK,KAAK,CAAC,IAAI,CAAC;AAAA,EAAK,aAAA,CAAM,IAAA,CAAK,SAAS,CAAC;AAAA,CAAA;AAAA,QAC/D;AAAA;AACF,IACF;AAAA,GACD,EAAE,MAAA,EAAO;AACZ,CAAA,EA7CsB,QAAA,CAAA;AAyDf,IAAM,WAAA,2BAAsB,IAAA,KAAoC;AACrE,EAAA,MAAM,GAAA,mBAAM,MAAA,CAAA,CACV,MAAA,EACA,KAAA,KACG;AACH,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,OAAO,KAAK,CAAA;AACjD,IAAA,IAAI,UAAU,QAAA,EAAU;AACtB,MAAA,OAAO,GAAG,aAAA,CAAM,IAAA,CAAK,iBAAiB,CAAC,IAAI,KAAK,CAAA,CAAA,EAC9C,MAAA,CAAO,IAAA,GAAO,cAAM,GAAA,CAAI,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA,CAAA,CAAG,IAAI,EAChD,CAAA,CAAA;AAAA,IACF;AACA,IAAA,IAAI,UAAU,UAAA,EAAY;AACxB,MAAA,OAAO,CAAA,EAAG,cAAM,KAAA,CAAM,mBAAmB,CAAC,CAAA,CAAA,EAAI,aAAA,CAAM,IAAI,KAAK,CAAC,IAC5D,MAAA,CAAO,IAAA,GAAO,cAAM,GAAA,CAAI,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA,CAAA,CAAG,IAAI,EAChD,CAAA,CAAA;AAAA,IACF;AACA,IAAA,IAAI,UAAU,WAAA,EAAa;AACzB,MAAA,OAAO,GAAG,aAAA,CAAM,aAAA,CAAc,cAAM,GAAA,CAAI,KAAK,CAAC,CAAC,CAAA,CAAA;AAAA,IACjD;AACA,IAAA,IAAI,UAAU,iBAAA,EAAmB;AAC/B,MAAA,OAAO,GAAG,aAAA,CAAM,KAAA,CAAM,mBAAmB,CAAC,IAAI,KAAK,CAAA,CAAA,EACjD,MAAA,CAAO,IAAA,GAAO,cAAM,GAAA,CAAI,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA,CAAA,CAAG,IAAI,EAChD,CAAA,CAAA;AAAA,IACF;AACA,IAAA,IAAI,UAAU,WAAA,EAAa;AACzB,MAAA,OAAO,CAAA,EAAG,aAAA,CAAM,GAAA,CAAI,KAAK,CAAC,CAAA,CAAA;AAAA,IAC5B;AACA,IAAA,OAAO,CAAA,EAAG,cAAM,GAAA,CAAI,mBAAmB,CAAC,CAAA,CAAA,EAAI,aAAA,CAAM,GAAA,CAAI,KAAK,CAAC,CAAA,CAAA;AAAA,EAC9D,CAAA,EA3BY,KAAA,CAAA;AA6BZ,EAAA,OAAO,IAAI,EAAA,CAAkB;AAAA,IAC3B,SAAS,IAAA,CAAK,OAAA;AAAA,IACd,OAAO,IAAA,CAAK,KAAA;AAAA,IACZ,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,eAAe,IAAA,CAAK,aAAA;AAAA,IACpB,QAAA,EAAU,KAAK,QAAA,IAAY,IAAA;AAAA,IAC3B,UAAU,IAAA,CAAK,QAAA;AAAA,IACf,SAAS,QAAA,EAAwB;AAC/B,MAAA,IAAI,IAAA,CAAK,QAAA,IAAY,QAAA,CAAS,MAAA,KAAW,CAAA,EAAG;AAC1C,QAAA,OAAO,CAAA;AAAA,EAAuC,aAAA,CAAM,KAAA;AAAA,UAClD,aAAA,CAAM,GAAA;AAAA,YACJ,CAAA,MAAA,EAAS,aAAA,CAAM,IAAA,CAAK,aAAA,CAAM,OAAA,CAAQ,aAAA,CAAM,OAAA,CAAQ,SAAS,CAAC,CAAC,CAAC,CAAA,YAAA,EAAe,aAAA,CAAM,IAAA;AAAA,cAC/E,aAAA,CAAM,OAAA,CAAQ,aAAA,CAAM,OAAA,CAAQ,SAAS,CAAC;AAAA,aACvC,CAAA,UAAA;AAAA;AACH,SACD,CAAA,CAAA;AAAA,MACH;AAAA,IACF,CAAA;AAAA,IACA,MAAA,GAAS;AACP,MAAA,IAAI,KAAA,GAAQ,CAAA,EAAG,aAAA,CAAM,IAAA,CAAK,KAAK,CAAC;AAAA,EAAK,OAAO,IAAA,CAAK,KAAK,CAAC,CAAA,EAAA,EAAK,KAAK,OAAO;AAAA,CAAA;AACxE,MAAA,IAAI,IAAA,CAAK,OAAA,EAAS,KAAA,IAAS,CAAA,EAAG,aAAA,CAAM,KAAK,KAAK,CAAC,CAAA,CAAA,EAAI,IAAA,CAAK,OAAO;AAAA,CAAA;AAE/D,MAAA,MAAM,WAAA,mBAAc,MAAA,CAAA,CAAC,MAAA,EAAuB,MAAA,KAAoB;AAC9D,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,OAAO,KAAK,CAAA;AACjD,QAAA,IAAI,UAAU,QAAA,EAAU;AACtB,UAAA,OAAO,GAAA,CAAI,QAAQ,iBAAiB,CAAA;AAAA,QACtC;AACA,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,OAAO,GAAA,CAAI,QAAQ,UAAU,CAAA;AAAA,QAC/B;AACA,QAAA,OAAO,GAAA,CAAI,MAAA,EAAQ,MAAA,GAAS,QAAA,GAAW,UAAU,CAAA;AAAA,MACnD,CAAA,EAToB,aAAA,CAAA;AAWpB,MAAA,QAAQ,KAAK,KAAA;AAAO,QAClB,KAAK,QAAA,EAAU;AACb,UAAA,OAAO,GAAG,KAAK,CAAA,EAAG,aAAA,CAAM,IAAA,CAAK,KAAK,CAAC,CAAA,EAAA,EACjC,IAAA,CAAK,OAAA,CACF,OAAO,CAAC,EAAE,OAAM,KAAM,IAAA,CAAK,MAAM,QAAA,CAAS,KAAK,CAAC,CAAA,CAChD,IAAI,CAAC,MAAA,KAAW,GAAA,CAAI,MAAA,EAAQ,WAAW,CAAC,CAAA,CACxC,IAAA,CAAK,aAAA,CAAM,IAAI,IAAI,CAAC,KAAK,aAAA,CAAM,GAAA,CAAI,MAAM,CAC9C,CAAA,CAAA;AAAA,QACF;AAAA,QACA,KAAK,QAAA,EAAU;AACb,UAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAChB,MAAA,CAAO,CAAC,EAAE,KAAA,EAAM,KAAM,IAAA,CAAK,KAAA,CAAM,QAAA,CAAS,KAAK,CAAC,EAChD,GAAA,CAAI,CAAC,MAAA,KAAW,GAAA,CAAI,MAAA,EAAQ,WAAW,CAAC,CAAA,CACxC,IAAA,CAAK,aAAA,CAAM,GAAA,CAAI,IAAI,CAAC,CAAA;AACvB,UAAA,OAAO,CAAA,EAAG,KAAK,CAAA,EAAG,aAAA,CAAM,IAAA,CAAK,KAAK,CAAC,CAAA,EAAA,EACjC,KAAA,CAAM,IAAA,EAAK,GAAI,CAAA,EAAG,KAAK;AAAA,EAAK,aAAA,CAAM,IAAA,CAAK,KAAK,CAAC,KAAK,EACpD,CAAA,CAAA;AAAA,QACF;AAAA,QACA,KAAK,OAAA,EAAS;AACZ,UAAA,MAAM,MAAA,GAAS,IAAA,CAAK,KAAA,CACjB,KAAA,CAAM,IAAI,CAAA,CACV,GAAA,CAAI,CAAC,EAAA,EAAI,CAAA,KAAO,CAAA,KAAM,CAAA,GAAI,CAAA,EAAG,aAAA,CAAM,MAAA,CAAO,SAAS,CAAC,CAAA,EAAA,EAAK,aAAA,CAAM,MAAA,CAAO,EAAE,CAAC,CAAA,CAAA,GAAK,CAAA,GAAA,EAAM,EAAE,CAAA,CAAG,CAAA,CACzF,IAAA,CAAK,IAAI,CAAA;AACZ,UAAA,OAAO,GAAG,KAAA,GAAQ,aAAA,CAAM,OAAO,KAAK,CAAC,KAAK,YAAA,CAAa;AAAA,YACrD,QAAQ,IAAA,CAAK,MAAA;AAAA,YACb,SAAS,IAAA,CAAK,OAAA;AAAA,YACd,QAAQ,IAAA,CAAK,MAAA;AAAA,YACb,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,KAAA,EAAO;AAAA,WACR,EAAE,IAAA,CAAK;AAAA,EAAK,aAAA,CAAM,MAAA,CAAO,KAAK,CAAC,IAAI,CAAC;AAAA,EAAK,MAAM;AAAA,CAAA;AAAA,QAClD;AAAA,QACA,SAAS;AACP,UAAA,OAAO,CAAA,EAAG,KAAK,CAAA,EAAG,aAAA,CAAM,KAAK,KAAK,CAAC,KAAK,YAAA,CAAa;AAAA,YACnD,QAAQ,IAAA,CAAK,MAAA;AAAA,YACb,SAAS,IAAA,CAAK,OAAA;AAAA,YACd,QAAQ,IAAA,CAAK,MAAA;AAAA,YACb,UAAU,IAAA,CAAK,QAAA;AAAA,YACf,KAAA,EAAO;AAAA,WACR,EAAE,IAAA,CAAK;AAAA,EAAK,aAAA,CAAM,IAAA,CAAK,KAAK,CAAC,IAAI,CAAC;AAAA,EAAK,aAAA,CAAM,IAAA,CAAK,SAAS,CAAC;AAAA,CAAA;AAAA,QAC/D;AAAA;AACF,IACF;AAAA,GACD,EAAE,MAAA,EAAO;AACZ,CAAA,EA1G2B,aAAA,CAAA;AAgH3B,IAAM,OAAA,GAAU;AAAA,EACd,OAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA;AAEA,IAAO,eAAA,GAAQ,OAAA;AC1Wf,IAAM,eAAA,GAAkB;AAAA,EACtB,QAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA;AACA,IAAM,eAAA,GAAkB,CAAC,QAAQ,CAAA;AACjC,IAAM,kBAAA,GAAqB;AAAA,EACzB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA;AAEA,SAAS,WAAW,GAAA,EAAa;AAC/B,EAAA,IAAI;AAEF,IAAA,MAAMH,EAAAA,GAAI,IAAI,GAAA,CAAI,GAAG,CAAA;AACrB,IAAA,OAAO,IAAA;AAAA,EACT,SAAS,GAAA,EAAK;AACZ,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AARS,MAAA,CAAA,UAAA,EAAA,YAAA,CAAA;AAUT,IAAM,WAAA,GAAc,sJAAA;AACpB,IAAM,kBAAA,GAAqB,iCAAA;AAG3B,SAAS,mBAAA,CAAoB,IAAA,EAAyB,OAAA,EAAiB,QAAA,EAAkB;AAEvF,EAAA,IAAI,YAAA,GAAe,KAAA;AACnB,EAAA,IAAI,eAAA,CAAgB,KAAK,CAAC,MAAA,KAAW,QAAQ,UAAA,CAAW,MAAM,CAAC,CAAA,EAAG,YAAA,GAAe,IAAA;AACjF,EAAA,IAAI,eAAA,CAAgB,KAAK,CAAC,OAAA,KAAY,QAAQ,QAAA,CAAS,OAAO,CAAC,CAAA,EAAG,YAAA,GAAe,IAAA;AAEjF,EAAA,IAAI,eAAA,GAAkB,KAAA;AACtB,EAAA,IAAI,kBAAA,CAAmB,KAAK,CAAC,OAAA,KAAY,QAAQ,QAAA,CAAS,OAAO,CAAC,CAAA,EAAG,eAAA,GAAkB,IAAA;AAEvF,EAAA,IAAI,YAAA,EAAc,WAGP,eAAA,EAAiB;AAC1B,IAAA,cAAA,CAAe,gBAAA,CAAiB,IAAA,EAAM,OAAA,EAAS,WAAA,EAAa,MAAM,CAAA;AAAA,EACpE;AAIA,EAAA,IAAI,OAAA,KAAY,MAAA,IAAU,OAAA,CAAQ,QAAA,CAAS,OAAO,CAAA,EAAG;AACnD,IAAA,cAAA,CAAe,gBAAA,CAAiB,IAAA,EAAM,OAAA,EAAS,MAAA,EAAQ,MAAM,CAAA;AAAA,EAC/D,CAAA,MAAA,IAAW,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA,EAAG;AACrC,IAAA,cAAA,CAAe,gBAAA,CAAiB,IAAA,EAAM,OAAA,EAAS,MAAA,EAAQ,OAAO,CAAA;AAAA,EAChE,CAAA,MAAA,IAAW,QAAQ,QAAA,CAAS,MAAM,KAAK,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA,EAAG;AAC/D,IAAA,cAAA,CAAe,gBAAA,CAAiB,IAAA,EAAM,OAAA,EAAS,MAAA,EAAQ,KAAK,CAAA;AAAA,EAI9D,WAAW,QAAA,EAAU;AAEnB,IAAA,IAAI,SAAS,UAAA,CAAW,GAAG,KAAK,QAAA,CAAS,QAAA,CAAS,GAAG,CAAA,EAAG;AACtD,MAAA,cAAA,CAAe,gBAAA,CAAiB,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,QAAQ,CAAA;AAAA,IAEpE;AAEA,IAAA,IAAI,QAAA,KAAa,MAAA,IAAU,QAAA,KAAa,OAAA,EAAS;AAC/C,MAAA,cAAA,CAAe,gBAAA,CAAiB,IAAA,EAAM,OAAA,EAAS,MAAA,EAAQ,SAAS,CAAA;AAAA,IAClE,CAAA,MAAA,IAAW,WAAA,CAAY,IAAA,CAAK,QAAQ,CAAA,EAAG;AACrC,MAAA,cAAA,CAAe,gBAAA,CAAiB,IAAA,EAAM,OAAA,EAAS,MAAA,EAAQ,OAAO,CAAA;AAAA,IAChE,CAAA,MAAA,IAAW,aAAa,GAAA,IAAO,QAAA,KAAa,OAAO,kBAAA,CAAmB,IAAA,CAAK,QAAQ,CAAA,EAAG;AACpF,MAAA,cAAA,CAAe,gBAAA,CAAiB,IAAA,EAAM,OAAA,EAAS,MAAA,EAAQ,QAAQ,CAAA;AAAA,IACjE,CAAA,MAAA,IAAW,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC/B,MAAA,cAAA,CAAe,gBAAA,CAAiB,IAAA,EAAM,OAAA,EAAS,MAAA,EAAQ,KAAK,CAAA;AAAA,IAC9D;AAAA,EAEF;AACF;AA7CS,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;AA+CF,SAAS,mBAAmB,IAAA,EAAyB;AAC1D,EAAA,KAAA,MAAW,IAAA,IAAQ,KAAK,WAAA,EAAa;AACnC,IAAA,MAAM,QAAA,GACJ,KAAK,KAAA,YAAiB,wBAAA,IAA4B,KAAK,KAAA,CAAM,KAAA,EAAO,UAAS,IAC1E,EAAA;AAEL,IAAA,mBAAA,CAAoB,IAAA,EAAM,IAAA,CAAK,GAAA,EAAK,QAAQ,CAAA;AAAA,EAC9C;AACF;AARgB,MAAA,CAAA,kBAAA,EAAA,oBAAA,CAAA;AAWT,SAAS,mBAAA,CAAoB,YAA+B,UAAA,EAAoC;AACrG,EAAA,MAAM,gBAA+B,EAAC;AACtC,EAAA,KAAA,MAAW,aAAa,UAAA,EAAY;AAClC,IAAA,KAAA,MAAW,IAAA,IAAQ,SAAA,CAAU,UAAA,CAAW,WAAA,EAAa;AACnD,MAAA,MAAM,YAAA,GAAe,WAAW,WAAA,CAAY,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,GAAA,KAAQ,IAAA,CAAK,GAAG,CAAA;AAC1E,MAAA,IAAI,YAAA,EAAc;AAElB,MAAA,IAAI,aAAA,CAAc,WAAW,CAAA,EAAG;AAC9B,QAAA,cAAA,CAAe,cAAc,UAAA,EAAY;AAAA,UACvC,EAAA;AAAA,UACA,2CAAA;AAAA,UACA,kEAAA;AAAA,UACA,wBAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA,UACA,IAAA,CAAK,IAAI,GAAG,EAAE,QAAA,EAAU,OAAO,CAAA;AAAA,MACnC;AACA,MAAA,aAAA,CAAc,IAAA,CAAK,KAAK,GAAG,CAAA;AAC3B,MAAA,cAAA,CAAe,aAAA,CAAc,UAAA,EAAY,CAAA,EAAG,IAAA,CAAK,GAAG,CAAA,CAAA,CAAG,CAAA;AACvD,MAAA,MAAM,SAAA,GACJ,KAAK,KAAA,YAAiB,wBAAA,IAA4B,KAAK,KAAA,CAAM,KAAA,EAAO,UAAS,IAC1E,EAAA;AACL,MAAA,mBAAA,CAAoB,UAAA,EAAY,IAAA,CAAK,GAAA,EAAK,MAAA,CAAO,SAAS,CAAC,CAAA;AAAA,IAC7D;AAAA,EACF;AACF;AAzBgB,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA;AA2BhB,eAAsB,qBAAA,CACpB,UAAA,EACA,UAAA,EACA,IAAA,GAA6B,EAAC,EAC9B;AACA,EAAA,MAAM,6BAA4D,EAAC;AACnE,EAAA,MAAM,YAAA,GAAe,WAAW,WAAA,EAAY;AAC5C,EAAA,KAAA,MAAW,SAAA,IAAa,MAAA,CAAO,MAAA,CAAO,UAAU,CAAA,EAAG;AACjD,IAAA,IACE,UAAU,QAAA,CAAS,UAAA,CAAW,aAAa,CAAA,IACxC,SAAA,CAAU,SAAS,UAAA,CAAW,cAAc,KAC5C,SAAA,CAAU,QAAA,CAAS,WAAW,aAAa,CAAA,IAC3C,UAAU,QAAA,CAAS,UAAA,CAAW,cAAc,CAAA,EAC/C;AAEF,IAAA,MAAM,eAAA,GAAkB,SAAA,CAAU,UAAA,CAAW,WAAA,EAAY;AACzD,IAAA,KAAA,MAAW,WAAW,eAAA,EAAiB;AACrC,MAAA,IAAI,EAAE,WAAW,YAAA,CAAA,EAAe;AAChC,MAAA,IAAI,eAAA,CAAgB,OAAO,CAAA,KAAM,YAAA,CAAa,OAAO,CAAA,EAAG;AAExD,MAAA,0BAAA,CAA2B,SAAA,CAAU,QAAQ,CAAA,KAAM,EAAC;AACpD,MAAA,0BAAA,CAA2B,SAAA,CAAU,QAAQ,CAAA,CAAE,IAAA,CAAK,OAAO,CAAA;AAC3D,MAAA,IAAI,KAAK,MAAA,EAAQ;AACf,QAAA,cAAA,CAAe,UAAA,CAAW,SAAA,CAAU,UAAA,EAAY,OAAO,CAAA;AAAA,MACzD;AAAA,IACF;AAEA,IAAA,IAAI,KAAK,MAAA,EAAQ;AACf,MAAA,MAAMoC,GAAA,CAAG,UAAU,SAAA,CAAU,QAAA,EAAU,UAAU,UAAA,CAAW,QAAA,IAAY,MAAM,CAAA;AAAA,IAChF;AAAA,EACF;AAEA,EAAA,OAAO,0BAAA;AACT;AAjCsB,MAAA,CAAA,qBAAA,EAAA,uBAAA,CAAA;AC3HtB,IAAM,eAAA,GAAkB,CAAC,KAAA,EAAO,OAAO,CAAA;AAEvC,eAAsB,aAAa,IAAA,EAEhC;AACD,EAAA,MAAM,GAAA,GAAM,IAAA,EAAM,GAAA,IAAO,OAAA,CAAQ,GAAA,EAAI;AAErC,EAAA,MAAM,WAAW,EAAC;AAElB,EAAA,MAAM,cAAA,GAAiB,MAAMA,GAAAA,CAAG,OAAA,CAAQ,GAAG,CAAA;AAG3C,EAAA,KAAA,MAAW,YAAY,cAAA,EAAgB;AACrC,IAAA,IAAI,QAAA,KAAa,MAAA,IAAU,QAAA,CAAS,UAAA,CAAW,OAAO,CAAA,EAAG;AACvD,MAAA,IAAI,IAAA,GAAO,KAAA;AACX,MAAA,KAAA,MAAW,YAAY,eAAA,EAAiB;AACtC,QAAA,IAAI,QAAA,CAAS,QAAA,CAAS,QAAQ,CAAA,EAAG,IAAA,GAAO,IAAA;AAAA,MAC1C;AACA,MAAA,IAAI,IAAA,EAAM;AACV,MAAA,QAAA,CAAS,IAAA,CAAKD,KAAA,CAAK,IAAA,CAAK,GAAA,EAAK,QAAQ,CAAC,CAAA;AAAA,IACxC;AAAA,EACF;AAKA,EAAA,OAAO,QAAA;AACT;AAzBsB,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;;;ACiBf,IAAM,cAAc,MAAA,CAAO;AAAA,EAChC,IAAA,EAAM,MAAA;AAAA,EACN,WAAA,EAAa,uCAAA;AAAA,EACb,MAAM,EAAC;AAAA,EACP,QAAA,EAAU;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA,EAAA,CAAA,CAcR,IAAA;AACJ,CAAC;AAEM,IAAM,SAAA,iCAA6D,GAAA,KAAQ;AAChF,EAAA,MAAM,mBAAmB,sBAAA,EAAuB;AAEhD,EAAA,OAAA,CAAQ,IAAI,iEAAuC,CAAA;AAGnD,EAAA,MAAM,YAAA,GAAe,MAAM,YAAA,EAAa;AACxC,EAAA,MAAM,iBAAkD,EAAC;AACzD,EAAA,KAAA,MAAW,YAAY,YAAA,EAAc;AACnC,IAAA,MAAM,YAAA,GAAe,MAAMC,GAAAA,CAAG,QAAA,CAAS,UAAU,OAAO,CAAA;AACxD,IAAA,MAAM,QAAA,GAAWD,KAAAA,CAAK,QAAA,CAAS,QAAQ,CAAA;AACvC,IAAA,MAAM,aAAa,MAAM,QAAA,CAAS,YAAY,sBAAA,CAAuB,YAAY,GAAG,MAAM;AACxF,MAAA,QAAA,CAAS;AAAA,QACP,EAAA;AAAA,QACA,CAAA,gBAAA,EAAmB,GAAA,CAAI,QAAA,CAAS,QAAQ,CAAC,CAAA,CAAA;AAAA,QACzC;AAAA,OACD,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA;AAAA,IACF;AACA,IAAA,cAAA,CAAe,QAAQ,CAAA,GAAI;AAAA,MACzB,QAAA;AAAA,MACA,QAAA,EAAU,QAAA;AAAA,MACV;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,kBAAA,GAAqB,eAAe,aAAa,CAAA;AAGvD,EAAA,IAAI,kBAAA,EAAoB;AAGtB,IAAA,QAAA,CAAS;AAAA,MACP,CAAA,iCAAA,EAAoC,GAAA,CAAI,QAAA,CAAS,aAAa,CAAC,CAAA,eAAA,CAAA;AAAA,MAC/D,iEAAA;AAAA,MACA,2FAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH,CAAA,MAAO;AACL,IAAA,MAAM,sBAAsB,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA,CAAE,MAAA,CAAO,CAAC,QAAA,KAAa;AAC3E,MAAA,OAAO,SAAS,UAAA,CAAW,cAAc,CAAA,IAAK,QAAA,CAAS,WAAW,aAAa,CAAA;AAAA,IACjF,CAAC,CAAA;AACD,IAAA,IAAI,oBAAA;AAEJ,IAAA,IAAI,mBAAA,CAAoB,WAAW,CAAA,EAAG;AACpC,MAAA,oBAAA,GAAuB,cAAA,CAAe,mBAAA,CAAoB,CAAC,CAAC,CAAA;AAAA,IAC9D,CAAA,MAAA,IAAW,mBAAA,CAAoB,MAAA,GAAS,CAAA,EAAG;AACzC,MAAA,OAAA,CAAQ,IAAI,EAAE,CAAA;AAEd,MAAA,MAAM,eAAA,GAAkB,MAAM,EAAA,CAAO;AAAA,QACnC,OAAA,EAAS,CAAA,wFAAA,EAA2F,GAAA,CAAI,QAAA,CAAS,aAAa,CAAC,CAAA,CAAA,CAAA;AAAA,QAC/H,OAAA,EAAS,mBAAA,CAAoB,GAAA,CAAI,CAAC,QAAA,MAAc;AAAA,UAC9C,KAAA,EAAO,QAAA;AAAA,UACP,KAAA,EAAO,eAAe,QAAQ;AAAA,SAChC,CAAE;AAAA,OACH,CAAA;AACD,MAAA,IAAI,EAAA,CAAS,eAAe,CAAA,EAAG,OAAO,aAAa,CAAC,CAAA;AACpD,MAAA,oBAAA,GAAuB,eAAA;AAAA,IACzB;AAGA,IAAA,MAAM,mBAAA,GAAsB,oBAAA,EAAsB,UAAA,IAAc,sBAAA,CAAuB,EAAE,CAAA;AACzF,IAAA,IAAI,CAAC,mBAAA,EAAqB,MAAM,IAAI,MAAM,mCAAmC,CAAA;AAC7E,IAAAE,cAAAA,CAAe,aAAa,mBAAA,EAAqB;AAAA,MAC/C,+EAAA;AAAA,MACA;AAAA;AAAA,KAEF,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AACZ,IAAAA,cAAAA,CAAe,iBAAiB,mBAAA,EAAqB,iBAAA,EAAmB,SAAS,EAAE,YAAA,EAAc,MAAM,CAAA;AACvG,IAAAA,cAAAA,CAAe,iBAAiB,mBAAA,EAAqB,kBAAA,EAAoB,SAAS,EAAE,YAAA,EAAc,MAAM,CAAA;AAExG,IAAAA,cAAAA,CAAe,iBAAiB,mBAAA,EAAqB,eAAA,EAAiB,0BAA0B,EAAE,UAAA,EAAY,MAAM,CAAA;AAIpH,IAAAA,cAAAA,CAAe,cAAc,mBAAA,EAAqB;AAAA,MAChD,EAAA;AAAA,MACA,+FAAA;AAAA,MACA,iDAAA;AAAA,MACA,2BAAA;AAAA,MACA;AAAA,MACA,IAAA,CAAK,IAAI,GAAG,EAAE,QAAA,EAAU,gBAAgB,CAAA;AAE1C,IAAA,kBAAA,CAAmB,mBAAmB,CAAA;AAEtC,IAAA,mBAAA,CAAoB,mBAAA,EAAqB,MAAA,CAAO,MAAA,CAAO,cAAc,CAAC,CAAA;AAGtE,IAAA,MAAM,iBAAiBF,KAAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,GAAA,IAAO,aAAa,CAAA;AAC7D,IAAA,MAAMC,GAAAA,CAAG,SAAA,CAAU,cAAA,EAAgB,mBAAA,CAAoB,UAAU,CAAA;AAGjE,IAAA,IAAI,oBAAA,EAAsB;AACxB,MAAA,QAAA,CAAS;AAAA,QACP,EAAA;AAAA,QACA,CAAA,KAAA,EAAQ,GAAA,CAAI,QAAA,CAAS,oBAAA,CAAqB,QAAQ,CAAC,CAAA,oCAAA,EAAuC,GAAA,CAAI,QAAA,CAAS,aAAa,CAAC,CAAA,CAAA,CAAA;AAAA,QACrH,GAAA,CAAI,SAAS,cAAc;AAAA,OAC5B,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,QAAA,CAAS;AAAA,QACP,EAAA;AAAA,QACA,CAAA,SAAA,EAAY,GAAA,CAAI,QAAA,CAAS,aAAa,CAAC,CAAA,uBAAA,CAAA;AAAA,QACvC,GAAA,CAAI,SAAS,cAAc;AAAA,OAC5B,CAAA;AAAA,IACH;AAGA,IAAA,IAAI,MAAM,qBAAA,CAAsB,cAAc,CAAA,EAAG;AAE/C,MAAA,QAAA,CAAS,CAAC,aAAA,CAAM,GAAA,CAAI,CAAA,aAAA,EAAgB,GAAA,CAAI,SAAS,YAAY,CAAC,CAAA,qCAAA,CAAuC,CAAC,CAAC,CAAA;AACvG,MAAA,MAAMA,GAAAA,CAAG,UAAA,CAAW,YAAA,EAAc,gBAAgB,CAAA;AAAA,IACpD;AAGA,IAAA,QAAA,CAAS;AAAA,MACP,EAAA;AAAA,MACA,cAAM,IAAA,CAAK,CAAA,4CAAA,EAAwC,IAAI,QAAA,CAAS,aAAa,CAAC,CAAA,gBAAA,CAAW,CAAA;AAAA,MACzF,CAAA,wFAAA,CAAA;AAAA,MACA,EAAA;AAAA,MACA,CAAA,mDAAA,CAAA;AAAA,MACA,CAAA,gHAAA,CAAA;AAAA,MACA,CAAA,MAAA,EAAS,IAAI,SAAA,CAAU,WAAW,CAAC,CAAA,KAAA,EAAQ,GAAA,CAAI,SAAA,CAAU,WAAW,CAAC,CAAA,qDAAA,CAAA;AAAA,MACrE,CAAA,MAAA,EAAS,GAAA,CAAI,SAAA,CAAU,YAAY,CAAC,CAAA,6EAAA,CAAA;AAAA,MACpC,CAAA,MAAA,EAAS,GAAA,CAAI,SAAA,CAAU,OAAO,CAAC,CAAA,gGAAA,CAAA;AAAA,MAC/B,CAAA,wBAAA,EAA2B,cAAM,MAAA,CAAO,gBAAgB,CAAC,CAAA,4BAAA,EAA+B,GAAA,CAAI,SAAA,CAAU,UAAU,CAAC,CAAA,CAAA;AAAA,MACjH,CAAA,yDAAA;AAAA,KACD,CAAA;AACD,IAAA,MAAM,eAAA,GAAkB,MAAM,eAAA,CAAQ,OAAA,CAAQ;AAAA,MAC5C,OAAA,EAAS,CAAA,uCAAA,EAA0C,GAAA,CAAI,QAAA,CAAS,aAAa,CAAC,CAAA,MAAA;AAAA,KAC/E,CAAA;AACD,IAAA,IAAI,EAAA,CAAS,eAAe,CAAA,EAAG,OAAO,aAAa,CAAC,CAAA;AAGpD,IAAA,MAAM,kBAAA,GAAqB,MAAM,sBAAA,CAAuB,MAAMA,IAAG,QAAA,CAAS,cAAA,EAAgB,OAAO,CAAC,CAAA;AAGlG,IAAA,IAAI,kBAAA,CAAmB,YAAY,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,GAAA,KAAQ,cAAc,CAAA,EAAG;AACxE,MAAA,QAAA,CAAS;AAAA,QACP,EAAA;AAAA,QACA,cAAM,IAAA,CAAK,CAAA,kBAAA,EAAc,cAAM,GAAA,CAAI,qCAAqC,CAAC,CAAA,CAAE,CAAA;AAAA,QAC3E,CAAA,8DAAA;AAAA,OACD,CAAA;AAAA,IACH;AAGA,IAAA,IAAI,oBAAA,EAAsB;AACxB,MAAA,MAAM,oBAAA,GAAuB,MAAM,eAAA,CAAQ,OAAA,CAAQ;AAAA,QACjD,OAAA,EAAS,CAAA,sBAAA,EAAyB,GAAA,CAAI,QAAA,CAAS,oBAAA,CAAqB,QAAQ,CAAC,CAAA,OAAA,EAAU,aAAA,CAAM,MAAA,CAAO,IAAA,CAAK,yCAAyC,CAAC,CAAA;AAAA,OACpJ,CAAA;AACD,MAAA,IAAI,EAAA,CAAS,oBAAoB,CAAA,EAAG,OAAO,aAAa,CAAC,CAAA;AACzD,MAAA,IAAI,oBAAA,EAAsB;AACxB,QAAA,MAAMA,GAAAA,CAAG,MAAA,CAAO,oBAAA,CAAqB,QAAQ,CAAA;AAAA,MAC/C;AAAA,IACF;AAGA,IAAA,MAAM,eAAe,MAAA,CAAO,MAAA,CAAO,cAAc,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM;AAC7D,MAAA,OAAO,CAAA,CAAE,QAAA,CAAS,UAAA,CAAW,cAAc,CAAA;AAAA,IAC7C,CAAC,CAAA;AACD,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,QAAA,CAAS;AAAA,QACP,EAAA;AAAA,QACA,CAAA,wBAAA,EAAoB,GAAA,CAAI,QAAA,CAAS,YAAA,CAAa,QAAQ,CAAC,CAAA,qBAAA,CAAA;AAAA,QACvD,CAAA,6CAAA,EAAgD,GAAA,CAAI,QAAA,CAAS,aAAa,CAAC,CAAA,eAAA;AAAA,OAC5E,CAAA;AAAA,IACH;AAGA,IAAA,MAAM,aAAA,GAAgB,MAAM,qBAAA,CAAsB,mBAAA,EAAqB,cAAc,CAAA;AACrF,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,aAAa,CAAA,CAAE,SAAS,CAAA,EAAG;AACzC,MAAA,QAAA,CAAS;AAAA,QACP,EAAA;AAAA,QACA,aAAA,CAAM,KAAK,2GAAiG;AAAA,OAC7G,CAAA;AACD,MAAA,KAAA,MAAW,CAAC,UAAA,EAAY,QAAQ,KAAK,MAAA,CAAO,OAAA,CAAQ,aAAa,CAAA,EAAG;AAClE,QAAA,OAAA,CAAQ,GAAA,CAAI,GAAA,CAAI,QAAA,CAAS,UAAU,CAAC,CAAA;AACpC,QAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,EAAM,QAAA,CAAS,GAAA,CAAI,CAACE,EAAAA,KAAM,aAAA,CAAM,MAAA,CAAOA,EAAC,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,MACnE;AAEA,MAAA,MAAM,sBAAA,GAAyB,MAAM,eAAA,CAAQ,OAAA,CAAQ;AAAA,QACnD,OAAA,EAAS;AAAA,OACV,CAAA;AACD,MAAA,IAAI,EAAA,CAAS,sBAAsB,CAAA,EAAG,OAAO,aAAa,CAAC,CAAA;AAC3D,MAAA,IAAI,sBAAA,EAAwB;AAC1B,QAAA,MAAM,sBAAsB,mBAAA,EAAqB,cAAA,EAAgB,EAAE,MAAA,EAAQ,MAAM,CAAA;AAAA,MACnF;AAAA,IACF;AAGA,IAAA,QAAA,CAAS;AAAA,MACP,EAAA;AAAA,MACA,aAAA,CAAM,KAAK,kBAAW,CAAA;AAAA,MACtB,eAAe,GAAA,CAAI,OAAA,CAAQ,gBAAgB,EAAE,gBAAA,EAAkB,CAAC,CAAA,mEAAA,CAAA;AAAA,MAChE,EAAA;AAAA,MACA,2EAAA;AAAA,MACA,EAAA;AAAA,MACA,yCAAA;AAAA,MACA;AAAA,KACD,CAAA;AAAA,EACH;AAGA,EAAA,IAAI,gBAAA,IAAoB,MAAM,UAAA,CAAWH,KAAAA,CAAK,IAAA,CAAK,QAAQ,GAAA,EAAI,EAAG,cAAc,CAAC,CAAA,EAAG;AAClF,IAAA,MAAM,gBAAgB,mBAAA,CAAoB;AAAA,MACxC,gBAAgB,gBAAA,CAAiB,IAAA;AAAA,MACjC,WAAA,EAAa;AAAA,KACd,CAAA;AACD,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,QAAA,CAAS;AAAA,QACP,EAAA;AAAA,QACA,CAAA,aAAA,EAAW,GAAA,CAAI,WAAA,CAAY,SAAS,CAAC,CAAA,qCAAA;AAAA,OACtC,CAAA;AAAA,IACH;AAAA,EACF;AACF,CAAA,EAxNmE,WAAA","file":"chunk-L5USEQO6.js","sourcesContent":["'use strict';\n\nconst ESC = '\\x1B';\nconst CSI = `${ESC}[`;\nconst beep = '\\u0007';\n\nconst cursor = {\n to(x, y) {\n if (!y) return `${CSI}${x + 1}G`;\n return `${CSI}${y + 1};${x + 1}H`;\n },\n move(x, y) {\n let ret = '';\n\n if (x < 0) ret += `${CSI}${-x}D`;\n else if (x > 0) ret += `${CSI}${x}C`;\n\n if (y < 0) ret += `${CSI}${-y}A`;\n else if (y > 0) ret += `${CSI}${y}B`;\n\n return ret;\n },\n up: (count = 1) => `${CSI}${count}A`,\n down: (count = 1) => `${CSI}${count}B`,\n forward: (count = 1) => `${CSI}${count}C`,\n backward: (count = 1) => `${CSI}${count}D`,\n nextLine: (count = 1) => `${CSI}E`.repeat(count),\n prevLine: (count = 1) => `${CSI}F`.repeat(count),\n left: `${CSI}G`,\n hide: `${CSI}?25l`,\n show: `${CSI}?25h`,\n save: `${ESC}7`,\n restore: `${ESC}8`\n}\n\nconst scroll = {\n up: (count = 1) => `${CSI}S`.repeat(count),\n down: (count = 1) => `${CSI}T`.repeat(count)\n}\n\nconst erase = {\n screen: `${CSI}2J`,\n up: (count = 1) => `${CSI}1J`.repeat(count),\n down: (count = 1) => `${CSI}J`.repeat(count),\n line: `${CSI}2K`,\n lineEnd: `${CSI}K`,\n lineStart: `${CSI}1K`,\n lines(count) {\n let clear = '';\n for (let i = 0; i < count; i++)\n clear += this.line + (i < count - 1 ? cursor.up() : '');\n if (count)\n clear += cursor.left;\n return clear;\n }\n}\n\nmodule.exports = { cursor, scroll, erase, beep };\n","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","export default function ansiRegex({onlyFirst = false} = {}) {\n\t// Valid string terminator sequences are BEL, ESC\\, and 0x9c\n\tconst ST = '(?:\\\\u0007|\\\\u001B\\\\u005C|\\\\u009C)';\n\tconst pattern = [\n\t\t`[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?${ST})`,\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))',\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","import ansiRegex from 'ansi-regex';\n\nconst regex = ansiRegex();\n\nexport default function stripAnsi(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n\t}\n\n\t// Even though the regex is global, we don't need to reset the `.lastIndex`\n\t// because unlike `.exec()` and `.test()`, `.replace()` does it automatically\n\t// and doing it manually has a performance penalty.\n\treturn string.replace(regex, '');\n}\n","var eaw = {};\n\nif ('undefined' == typeof module) {\n window.eastasianwidth = eaw;\n} else {\n module.exports = eaw;\n}\n\neaw.eastAsianWidth = function(character) {\n var x = character.charCodeAt(0);\n var y = (character.length == 2) ? character.charCodeAt(1) : 0;\n var codePoint = x;\n if ((0xD800 <= x && x <= 0xDBFF) && (0xDC00 <= y && y <= 0xDFFF)) {\n x &= 0x3FF;\n y &= 0x3FF;\n codePoint = (x << 10) | y;\n codePoint += 0x10000;\n }\n\n if ((0x3000 == codePoint) ||\n (0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n (0xFFE0 <= codePoint && codePoint <= 0xFFE6)) {\n return 'F';\n }\n if ((0x20A9 == codePoint) ||\n (0xFF61 <= codePoint && codePoint <= 0xFFBE) ||\n (0xFFC2 <= codePoint && codePoint <= 0xFFC7) ||\n (0xFFCA <= codePoint && codePoint <= 0xFFCF) ||\n (0xFFD2 <= codePoint && codePoint <= 0xFFD7) ||\n (0xFFDA <= codePoint && codePoint <= 0xFFDC) ||\n (0xFFE8 <= codePoint && codePoint <= 0xFFEE)) {\n return 'H';\n }\n if ((0x1100 <= codePoint && codePoint <= 0x115F) ||\n (0x11A3 <= codePoint && codePoint <= 0x11A7) ||\n (0x11FA <= codePoint && codePoint <= 0x11FF) ||\n (0x2329 <= codePoint && codePoint <= 0x232A) ||\n (0x2E80 <= codePoint && codePoint <= 0x2E99) ||\n (0x2E9B <= codePoint && codePoint <= 0x2EF3) ||\n (0x2F00 <= codePoint && codePoint <= 0x2FD5) ||\n (0x2FF0 <= codePoint && codePoint <= 0x2FFB) ||\n (0x3001 <= codePoint && codePoint <= 0x303E) ||\n (0x3041 <= codePoint && codePoint <= 0x3096) ||\n (0x3099 <= codePoint && codePoint <= 0x30FF) ||\n (0x3105 <= codePoint && codePoint <= 0x312D) ||\n (0x3131 <= codePoint && codePoint <= 0x318E) ||\n (0x3190 <= codePoint && codePoint <= 0x31BA) ||\n (0x31C0 <= codePoint && codePoint <= 0x31E3) ||\n (0x31F0 <= codePoint && codePoint <= 0x321E) ||\n (0x3220 <= codePoint && codePoint <= 0x3247) ||\n (0x3250 <= codePoint && codePoint <= 0x32FE) ||\n (0x3300 <= codePoint && codePoint <= 0x4DBF) ||\n (0x4E00 <= codePoint && codePoint <= 0xA48C) ||\n (0xA490 <= codePoint && codePoint <= 0xA4C6) ||\n (0xA960 <= codePoint && codePoint <= 0xA97C) ||\n (0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n (0xD7B0 <= codePoint && codePoint <= 0xD7C6) ||\n (0xD7CB <= codePoint && codePoint <= 0xD7FB) ||\n (0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n (0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n (0xFE30 <= codePoint && codePoint <= 0xFE52) ||\n (0xFE54 <= codePoint && codePoint <= 0xFE66) ||\n (0xFE68 <= codePoint && codePoint <= 0xFE6B) ||\n (0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n (0x1F200 <= codePoint && codePoint <= 0x1F202) ||\n (0x1F210 <= codePoint && codePoint <= 0x1F23A) ||\n (0x1F240 <= codePoint && codePoint <= 0x1F248) ||\n (0x1F250 <= codePoint && codePoint <= 0x1F251) ||\n (0x20000 <= codePoint && codePoint <= 0x2F73F) ||\n (0x2B740 <= codePoint && codePoint <= 0x2FFFD) ||\n (0x30000 <= codePoint && codePoint <= 0x3FFFD)) {\n return 'W';\n }\n if ((0x0020 <= codePoint && codePoint <= 0x007E) ||\n (0x00A2 <= codePoint && codePoint <= 0x00A3) ||\n (0x00A5 <= codePoint && codePoint <= 0x00A6) ||\n (0x00AC == codePoint) ||\n (0x00AF == codePoint) ||\n (0x27E6 <= codePoint && codePoint <= 0x27ED) ||\n (0x2985 <= codePoint && codePoint <= 0x2986)) {\n return 'Na';\n }\n if ((0x00A1 == codePoint) ||\n (0x00A4 == codePoint) ||\n (0x00A7 <= codePoint && codePoint <= 0x00A8) ||\n (0x00AA == codePoint) ||\n (0x00AD <= codePoint && codePoint <= 0x00AE) ||\n (0x00B0 <= codePoint && codePoint <= 0x00B4) ||\n (0x00B6 <= codePoint && codePoint <= 0x00BA) ||\n (0x00BC <= codePoint && codePoint <= 0x00BF) ||\n (0x00C6 == codePoint) ||\n (0x00D0 == codePoint) ||\n (0x00D7 <= codePoint && codePoint <= 0x00D8) ||\n (0x00DE <= codePoint && codePoint <= 0x00E1) ||\n (0x00E6 == codePoint) ||\n (0x00E8 <= codePoint && codePoint <= 0x00EA) ||\n (0x00EC <= codePoint && codePoint <= 0x00ED) ||\n (0x00F0 == codePoint) ||\n (0x00F2 <= codePoint && codePoint <= 0x00F3) ||\n (0x00F7 <= codePoint && codePoint <= 0x00FA) ||\n (0x00FC == codePoint) ||\n (0x00FE == codePoint) ||\n (0x0101 == codePoint) ||\n (0x0111 == codePoint) ||\n (0x0113 == codePoint) ||\n (0x011B == codePoint) ||\n (0x0126 <= codePoint && codePoint <= 0x0127) ||\n (0x012B == codePoint) ||\n (0x0131 <= codePoint && codePoint <= 0x0133) ||\n (0x0138 == codePoint) ||\n (0x013F <= codePoint && codePoint <= 0x0142) ||\n (0x0144 == codePoint) ||\n (0x0148 <= codePoint && codePoint <= 0x014B) ||\n (0x014D == codePoint) ||\n (0x0152 <= codePoint && codePoint <= 0x0153) ||\n (0x0166 <= codePoint && codePoint <= 0x0167) ||\n (0x016B == codePoint) ||\n (0x01CE == codePoint) ||\n (0x01D0 == codePoint) ||\n (0x01D2 == codePoint) ||\n (0x01D4 == codePoint) ||\n (0x01D6 == codePoint) ||\n (0x01D8 == codePoint) ||\n (0x01DA == codePoint) ||\n (0x01DC == codePoint) ||\n (0x0251 == codePoint) ||\n (0x0261 == codePoint) ||\n (0x02C4 == codePoint) ||\n (0x02C7 == codePoint) ||\n (0x02C9 <= codePoint && codePoint <= 0x02CB) ||\n (0x02CD == codePoint) ||\n (0x02D0 == codePoint) ||\n (0x02D8 <= codePoint && codePoint <= 0x02DB) ||\n (0x02DD == codePoint) ||\n (0x02DF == codePoint) ||\n (0x0300 <= codePoint && codePoint <= 0x036F) ||\n (0x0391 <= codePoint && codePoint <= 0x03A1) ||\n (0x03A3 <= codePoint && codePoint <= 0x03A9) ||\n (0x03B1 <= codePoint && codePoint <= 0x03C1) ||\n (0x03C3 <= codePoint && codePoint <= 0x03C9) ||\n (0x0401 == codePoint) ||\n (0x0410 <= codePoint && codePoint <= 0x044F) ||\n (0x0451 == codePoint) ||\n (0x2010 == codePoint) ||\n (0x2013 <= codePoint && codePoint <= 0x2016) ||\n (0x2018 <= codePoint && codePoint <= 0x2019) ||\n (0x201C <= codePoint && codePoint <= 0x201D) ||\n (0x2020 <= codePoint && codePoint <= 0x2022) ||\n (0x2024 <= codePoint && codePoint <= 0x2027) ||\n (0x2030 == codePoint) ||\n (0x2032 <= codePoint && codePoint <= 0x2033) ||\n (0x2035 == codePoint) ||\n (0x203B == codePoint) ||\n (0x203E == codePoint) ||\n (0x2074 == codePoint) ||\n (0x207F == codePoint) ||\n (0x2081 <= codePoint && codePoint <= 0x2084) ||\n (0x20AC == codePoint) ||\n (0x2103 == codePoint) ||\n (0x2105 == codePoint) ||\n (0x2109 == codePoint) ||\n (0x2113 == codePoint) ||\n (0x2116 == codePoint) ||\n (0x2121 <= codePoint && codePoint <= 0x2122) ||\n (0x2126 == codePoint) ||\n (0x212B == codePoint) ||\n (0x2153 <= codePoint && codePoint <= 0x2154) ||\n (0x215B <= codePoint && codePoint <= 0x215E) ||\n (0x2160 <= codePoint && codePoint <= 0x216B) ||\n (0x2170 <= codePoint && codePoint <= 0x2179) ||\n (0x2189 == codePoint) ||\n (0x2190 <= codePoint && codePoint <= 0x2199) ||\n (0x21B8 <= codePoint && codePoint <= 0x21B9) ||\n (0x21D2 == codePoint) ||\n (0x21D4 == codePoint) ||\n (0x21E7 == codePoint) ||\n (0x2200 == codePoint) ||\n (0x2202 <= codePoint && codePoint <= 0x2203) ||\n (0x2207 <= codePoint && codePoint <= 0x2208) ||\n (0x220B == codePoint) ||\n (0x220F == codePoint) ||\n (0x2211 == codePoint) ||\n (0x2215 == codePoint) ||\n (0x221A == codePoint) ||\n (0x221D <= codePoint && codePoint <= 0x2220) ||\n (0x2223 == codePoint) ||\n (0x2225 == codePoint) ||\n (0x2227 <= codePoint && codePoint <= 0x222C) ||\n (0x222E == codePoint) ||\n (0x2234 <= codePoint && codePoint <= 0x2237) ||\n (0x223C <= codePoint && codePoint <= 0x223D) ||\n (0x2248 == codePoint) ||\n (0x224C == codePoint) ||\n (0x2252 == codePoint) ||\n (0x2260 <= codePoint && codePoint <= 0x2261) ||\n (0x2264 <= codePoint && codePoint <= 0x2267) ||\n (0x226A <= codePoint && codePoint <= 0x226B) ||\n (0x226E <= codePoint && codePoint <= 0x226F) ||\n (0x2282 <= codePoint && codePoint <= 0x2283) ||\n (0x2286 <= codePoint && codePoint <= 0x2287) ||\n (0x2295 == codePoint) ||\n (0x2299 == codePoint) ||\n (0x22A5 == codePoint) ||\n (0x22BF == codePoint) ||\n (0x2312 == codePoint) ||\n (0x2460 <= codePoint && codePoint <= 0x24E9) ||\n (0x24EB <= codePoint && codePoint <= 0x254B) ||\n (0x2550 <= codePoint && codePoint <= 0x2573) ||\n (0x2580 <= codePoint && codePoint <= 0x258F) ||\n (0x2592 <= codePoint && codePoint <= 0x2595) ||\n (0x25A0 <= codePoint && codePoint <= 0x25A1) ||\n (0x25A3 <= codePoint && codePoint <= 0x25A9) ||\n (0x25B2 <= codePoint && codePoint <= 0x25B3) ||\n (0x25B6 <= codePoint && codePoint <= 0x25B7) ||\n (0x25BC <= codePoint && codePoint <= 0x25BD) ||\n (0x25C0 <= codePoint && codePoint <= 0x25C1) ||\n (0x25C6 <= codePoint && codePoint <= 0x25C8) ||\n (0x25CB == codePoint) ||\n (0x25CE <= codePoint && codePoint <= 0x25D1) ||\n (0x25E2 <= codePoint && codePoint <= 0x25E5) ||\n (0x25EF == codePoint) ||\n (0x2605 <= codePoint && codePoint <= 0x2606) ||\n (0x2609 == codePoint) ||\n (0x260E <= codePoint && codePoint <= 0x260F) ||\n (0x2614 <= codePoint && codePoint <= 0x2615) ||\n (0x261C == codePoint) ||\n (0x261E == codePoint) ||\n (0x2640 == codePoint) ||\n (0x2642 == codePoint) ||\n (0x2660 <= codePoint && codePoint <= 0x2661) ||\n (0x2663 <= codePoint && codePoint <= 0x2665) ||\n (0x2667 <= codePoint && codePoint <= 0x266A) ||\n (0x266C <= codePoint && codePoint <= 0x266D) ||\n (0x266F == codePoint) ||\n (0x269E <= codePoint && codePoint <= 0x269F) ||\n (0x26BE <= codePoint && codePoint <= 0x26BF) ||\n (0x26C4 <= codePoint && codePoint <= 0x26CD) ||\n (0x26CF <= codePoint && codePoint <= 0x26E1) ||\n (0x26E3 == codePoint) ||\n (0x26E8 <= codePoint && codePoint <= 0x26FF) ||\n (0x273D == codePoint) ||\n (0x2757 == codePoint) ||\n (0x2776 <= codePoint && codePoint <= 0x277F) ||\n (0x2B55 <= codePoint && codePoint <= 0x2B59) ||\n (0x3248 <= codePoint && codePoint <= 0x324F) ||\n (0xE000 <= codePoint && codePoint <= 0xF8FF) ||\n (0xFE00 <= codePoint && codePoint <= 0xFE0F) ||\n (0xFFFD == codePoint) ||\n (0x1F100 <= codePoint && codePoint <= 0x1F10A) ||\n (0x1F110 <= codePoint && codePoint <= 0x1F12D) ||\n (0x1F130 <= codePoint && codePoint <= 0x1F169) ||\n (0x1F170 <= codePoint && codePoint <= 0x1F19A) ||\n (0xE0100 <= codePoint && codePoint <= 0xE01EF) ||\n (0xF0000 <= codePoint && codePoint <= 0xFFFFD) ||\n (0x100000 <= codePoint && codePoint <= 0x10FFFD)) {\n return 'A';\n }\n\n return 'N';\n};\n\neaw.characterLength = function(character) {\n var code = this.eastAsianWidth(character);\n if (code == 'F' || code == 'W' || code == 'A') {\n return 2;\n } else {\n return 1;\n }\n};\n\n// Split a string considering surrogate-pairs.\nfunction stringToArray(string) {\n return string.match(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[^\\uD800-\\uDFFF]/g) || [];\n}\n\neaw.length = function(string) {\n var characters = stringToArray(string);\n var len = 0;\n for (var i = 0; i < characters.length; i++) {\n len = len + this.characterLength(characters[i]);\n }\n return len;\n};\n\neaw.slice = function(text, start, end) {\n textLen = eaw.length(text)\n start = start ? start : 0;\n end = end ? end : 1;\n if (start < 0) {\n start = textLen + start;\n }\n if (end < 0) {\n end = textLen + end;\n }\n var result = '';\n var eawLen = 0;\n var chars = stringToArray(text);\n for (var i = 0; i < chars.length; i++) {\n var char = chars[i];\n var charLen = eaw.length(char);\n if (eawLen >= start - (charLen == 2 ? 1 : 0)) {\n if (eawLen + charLen <= end) {\n result += char;\n } else {\n break;\n }\n }\n eawLen += charLen;\n }\n return result;\n};\n","\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67)\\uDB40\\uDC7F|(?:\\uD83E\\uDDD1\\uD83C\\uDFFF\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C\\uDFFB(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))?|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFF]))|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\u200D(?:(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC)?|(?:\\uD83D\\uDC69(?:\\uD83C\\uDFFB\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|(?:\\uD83C[\\uDFFC-\\uDFFF])\\u200D\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69]))|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC69(?:\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83E\\uDDD1(?:\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF7C\\uDF84\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B|\\uD83C\\uDFF3\\uFE0F\\u200D\\u26A7|\\uD83D\\uDC3B\\u200D\\u2744|(?:(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\uD83C\\uDFF4\\u200D\\u2620|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])\\u200D[\\u2640\\u2642]|[\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u2328\\u23CF\\u23ED-\\u23EF\\u23F1\\u23F2\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB\\u25FC\\u2600-\\u2604\\u260E\\u2611\\u2618\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u2692\\u2694-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A7\\u26B0\\u26B1\\u26C8\\u26CF\\u26D1\\u26D3\\u26E9\\u26F0\\u26F1\\u26F4\\u26F7\\u26F8\\u2702\\u2708\\u2709\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2733\\u2734\\u2744\\u2747\\u2763\\u27A1\\u2934\\u2935\\u2B05-\\u2B07\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDE02\\uDE37\\uDF21\\uDF24-\\uDF2C\\uDF36\\uDF7D\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E\\uDF9F\\uDFCD\\uDFCE\\uDFD4-\\uDFDF\\uDFF5\\uDFF7]|\\uD83D[\\uDC3F\\uDCFD\\uDD49\\uDD4A\\uDD6F\\uDD70\\uDD73\\uDD76-\\uDD79\\uDD87\\uDD8A-\\uDD8D\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA\\uDECB\\uDECD-\\uDECF\\uDEE0-\\uDEE5\\uDEE9\\uDEF0\\uDEF3])\\uFE0F|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDE35\\u200D\\uD83D\\uDCAB|\\uD83D\\uDE2E\\u200D\\uD83D\\uDCA8|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83D\\uDC69(?:\\uD83C\\uDFFF|\\uD83C\\uDFFE|\\uD83C\\uDFFD|\\uD83C\\uDFFC|\\uD83C\\uDFFB)?|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF6\\uD83C\\uDDE6|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83D\\uDC08\\u200D\\u2B1B|\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDD25|\\uD83E\\uDE79)|\\uD83D\\uDC41\\uFE0F|\\uD83C\\uDFF3\\uFE0F|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|[#\\*0-9]\\uFE0F\\u20E3|\\u2764\\uFE0F|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDFF4|(?:[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270C\\u270D]|\\uD83D[\\uDD74\\uDD90])(?:\\uFE0F|\\uD83C[\\uDFFB-\\uDFFF])|[\\u270A\\u270B]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC08\\uDC15\\uDC3B\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDC8F\\uDC91\\uDCAA\\uDD7A\\uDD95\\uDD96\\uDE2E\\uDE35\\uDE36\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD34\\uDD36\\uDD77\\uDDB5\\uDDB6\\uDDBB\\uDDD2\\uDDD3\\uDDD5]|\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC70\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD35\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD4\\uDDD6-\\uDDDD]|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF]|[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF84\\uDF86-\\uDF93\\uDFA0-\\uDFC1\\uDFC5\\uDFC6\\uDFC8\\uDFC9\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC07\\uDC09-\\uDC14\\uDC16-\\uDC3A\\uDC3C-\\uDC3E\\uDC40\\uDC44\\uDC45\\uDC51-\\uDC65\\uDC6A\\uDC79-\\uDC7B\\uDC7D-\\uDC80\\uDC84\\uDC88-\\uDC8E\\uDC90\\uDC92-\\uDCA9\\uDCAB-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDDA4\\uDDFB-\\uDE2D\\uDE2F-\\uDE34\\uDE37-\\uDE44\\uDE48-\\uDE4A\\uDE80-\\uDEA2\\uDEA4-\\uDEB3\\uDEB7-\\uDEBF\\uDEC1-\\uDEC5\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D\\uDD0E\\uDD10-\\uDD17\\uDD1D\\uDD20-\\uDD25\\uDD27-\\uDD2F\\uDD3A\\uDD3F-\\uDD45\\uDD47-\\uDD76\\uDD78\\uDD7A-\\uDDB4\\uDDB7\\uDDBA\\uDDBC-\\uDDCB\\uDDD0\\uDDE0-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6]|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26A7\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5-\\uDED7\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0C\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDD77\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","import stripAnsi from 'strip-ansi';\nimport eastAsianWidth from 'eastasianwidth';\nimport emojiRegex from 'emoji-regex';\n\nexport default function stringWidth(string, options = {}) {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\toptions = {\n\t\tambiguousIsNarrow: true,\n\t\t...options\n\t};\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tconst ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2;\n\tlet width = 0;\n\n\tfor (const character of string) {\n\t\tconst codePoint = character.codePointAt(0);\n\n\t\t// Ignore control characters\n\t\tif (codePoint <= 0x1F || (codePoint >= 0x7F && codePoint <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (codePoint >= 0x300 && codePoint <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst code = eastAsianWidth.eastAsianWidth(character);\n\t\tswitch (code) {\n\t\t\tcase 'F':\n\t\t\tcase 'W':\n\t\t\t\twidth += 2;\n\t\t\t\tbreak;\n\t\t\tcase 'A':\n\t\t\t\twidth += ambiguousCharacterWidth;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\twidth += 1;\n\t\t}\n\t}\n\n\treturn width;\n}\n","const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue: code => {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","import stringWidth from 'string-width';\nimport stripAnsi from 'strip-ansi';\nimport ansiStyles from 'ansi-styles';\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B',\n]);\n\nconst END_CODE = 39;\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsiCode = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t\tisInsideLinkEscape = characters.slice(index + 1).join('').startsWith(ANSI_ESCAPE_LINK);\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(row => stringVisibleTrimSpacesRight(row));\n\t}\n\n\tconst pre = [...rows.join('\\n')];\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join('')) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsiCode(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nexport default function wrapAnsi(string, columns, options) {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n}\n","const actions = ['up', 'down', 'left', 'right', 'space', 'enter', 'cancel'] as const;\nexport type Action = (typeof actions)[number];\n\n/** Global settings for Clack programs, stored in memory */\ninterface InternalClackSettings {\n\tactions: Set<Action>;\n\taliases: Map<string, Action>;\n}\n\nexport const settings: InternalClackSettings = {\n\tactions: new Set(actions),\n\taliases: new Map<string, Action>([\n\t\t// vim support\n\t\t['k', 'up'],\n\t\t['j', 'down'],\n\t\t['h', 'left'],\n\t\t['l', 'right'],\n\t\t['\\x03', 'cancel'],\n\t\t// opinionated defaults!\n\t\t['escape', 'cancel'],\n\t]),\n};\n\nexport interface ClackSettings {\n\t/**\n\t * Set custom global aliases for the default actions.\n\t * This will not overwrite existing aliases, it will only add new ones!\n\t *\n\t * @param aliases - An object that maps aliases to actions\n\t * @default { k: 'up', j: 'down', h: 'left', l: 'right', '\\x03': 'cancel', 'escape': 'cancel' }\n\t */\n\taliases: Record<string, Action>;\n}\n\nexport function updateSettings(updates: ClackSettings) {\n\tfor (const _key in updates) {\n\t\tconst key = _key as keyof ClackSettings;\n\t\tif (!Object.hasOwn(updates, key)) continue;\n\t\tconst value = updates[key];\n\n\t\tswitch (key) {\n\t\t\tcase 'aliases': {\n\t\t\t\tfor (const alias in value) {\n\t\t\t\t\tif (!Object.hasOwn(value, alias)) continue;\n\t\t\t\t\tif (!settings.aliases.has(alias)) {\n\t\t\t\t\t\tsettings.aliases.set(alias, value[alias]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Check if a key is an alias for a default action\n * @param key - The raw key which might match to an action\n * @param action - The action to match\n * @returns boolean\n */\nexport function isActionKey(key: string | Array<string | undefined>, action: Action) {\n\tif (typeof key === 'string') {\n\t\treturn settings.aliases.get(key) === action;\n\t}\n\n\tfor (const value of key) {\n\t\tif (value === undefined) continue;\n\t\tif (isActionKey(value, action)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n","export function diffLines(a: string, b: string) {\n\tif (a === b) return;\n\n\tconst aLines = a.split('\\n');\n\tconst bLines = b.split('\\n');\n\tconst diff: number[] = [];\n\n\tfor (let i = 0; i < Math.max(aLines.length, bLines.length); i++) {\n\t\tif (aLines[i] !== bLines[i]) diff.push(i);\n\t}\n\n\treturn diff;\n}\n","import { stdin, stdout } from 'node:process';\nimport type { Key } from 'node:readline';\nimport * as readline from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { cursor } from 'sisteransi';\nimport { isActionKey } from './settings';\n\nexport * from './string';\nexport * from './settings';\n\nconst isWindows = globalThis.process.platform.startsWith('win');\n\nexport const CANCEL_SYMBOL = Symbol('clack:cancel');\n\nexport function isCancel(value: unknown): value is symbol {\n\treturn value === CANCEL_SYMBOL;\n}\n\nexport function setRawMode(input: Readable, value: boolean) {\n\tconst i = input as typeof stdin;\n\n\tif (i.isTTY) i.setRawMode(value);\n}\n\nexport function block({\n\tinput = stdin,\n\toutput = stdout,\n\toverwrite = true,\n\thideCursor = true,\n} = {}) {\n\tconst rl = readline.createInterface({\n\t\tinput,\n\t\toutput,\n\t\tprompt: '',\n\t\ttabSize: 1,\n\t});\n\treadline.emitKeypressEvents(input, rl);\n\tif (input.isTTY) input.setRawMode(true);\n\n\tconst clear = (data: Buffer, { name, sequence }: Key) => {\n\t\tconst str = String(data);\n\t\tif (isActionKey([str, name, sequence], 'cancel')) {\n\t\t\tif (hideCursor) output.write(cursor.show);\n\t\t\tprocess.exit(0);\n\t\t\treturn;\n\t\t}\n\t\tif (!overwrite) return;\n\t\tconst dx = name === 'return' ? 0 : -1;\n\t\tconst dy = name === 'return' ? -1 : 0;\n\n\t\treadline.moveCursor(output, dx, dy, () => {\n\t\t\treadline.clearLine(output, 1, () => {\n\t\t\t\tinput.once('keypress', clear);\n\t\t\t});\n\t\t});\n\t};\n\tif (hideCursor) output.write(cursor.hide);\n\tinput.once('keypress', clear);\n\n\treturn () => {\n\t\tinput.off('keypress', clear);\n\t\tif (hideCursor) output.write(cursor.show);\n\n\t\t// Prevent Windows specific issues: https://github.com/bombshell-dev/clack/issues/176\n\t\tif (input.isTTY && !isWindows) input.setRawMode(false);\n\n\t\t// @ts-expect-error fix for https://github.com/nodejs/node/issues/31762#issuecomment-1441223907\n\t\trl.terminal = false;\n\t\trl.close();\n\t};\n}\n","import { stdin, stdout } from 'node:process';\nimport readline, { type Key, type ReadLine } from 'node:readline';\nimport type { Readable } from 'node:stream';\nimport { Writable } from 'node:stream';\nimport { cursor, erase } from 'sisteransi';\nimport wrap from 'wrap-ansi';\n\nimport { CANCEL_SYMBOL, diffLines, isActionKey, setRawMode, settings } from '../utils';\n\nimport type { ClackEvents, ClackState } from '../types';\nimport type { Action } from '../utils';\n\nexport interface PromptOptions<Self extends Prompt> {\n\trender(this: Omit<Self, 'prompt'>): string | undefined;\n\tplaceholder?: string;\n\tinitialValue?: any;\n\tvalidate?: ((value: any) => string | Error | undefined) | undefined;\n\tinput?: Readable;\n\toutput?: Writable;\n\tdebug?: boolean;\n\tsignal?: AbortSignal;\n}\n\nexport default class Prompt {\n\tprotected input: Readable;\n\tprotected output: Writable;\n\tprivate _abortSignal?: AbortSignal;\n\n\tprivate rl: ReadLine | undefined;\n\tprivate opts: Omit<PromptOptions<Prompt>, 'render' | 'input' | 'output'>;\n\tprivate _render: (context: Omit<Prompt, 'prompt'>) => string | undefined;\n\tprivate _track = false;\n\tprivate _prevFrame = '';\n\tprivate _subscribers = new Map<string, { cb: (...args: any) => any; once?: boolean }[]>();\n\tprotected _cursor = 0;\n\n\tpublic state: ClackState = 'initial';\n\tpublic error = '';\n\tpublic value: any;\n\n\tconstructor(options: PromptOptions<Prompt>, trackValue = true) {\n\t\tconst { input = stdin, output = stdout, render, signal, ...opts } = options;\n\n\t\tthis.opts = opts;\n\t\tthis.onKeypress = this.onKeypress.bind(this);\n\t\tthis.close = this.close.bind(this);\n\t\tthis.render = this.render.bind(this);\n\t\tthis._render = render.bind(this);\n\t\tthis._track = trackValue;\n\t\tthis._abortSignal = signal;\n\n\t\tthis.input = input;\n\t\tthis.output = output;\n\t}\n\n\t/**\n\t * Unsubscribe all listeners\n\t */\n\tprotected unsubscribe() {\n\t\tthis._subscribers.clear();\n\t}\n\n\t/**\n\t * Set a subscriber with opts\n\t * @param event - The event name\n\t */\n\tprivate setSubscriber<T extends keyof ClackEvents>(\n\t\tevent: T,\n\t\topts: { cb: ClackEvents[T]; once?: boolean }\n\t) {\n\t\tconst params = this._subscribers.get(event) ?? [];\n\t\tparams.push(opts);\n\t\tthis._subscribers.set(event, params);\n\t}\n\n\t/**\n\t * Subscribe to an event\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic on<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb });\n\t}\n\n\t/**\n\t * Subscribe to an event once\n\t * @param event - The event name\n\t * @param cb - The callback\n\t */\n\tpublic once<T extends keyof ClackEvents>(event: T, cb: ClackEvents[T]) {\n\t\tthis.setSubscriber(event, { cb, once: true });\n\t}\n\n\t/**\n\t * Emit an event with data\n\t * @param event - The event name\n\t * @param data - The data to pass to the callback\n\t */\n\tpublic emit<T extends keyof ClackEvents>(event: T, ...data: Parameters<ClackEvents[T]>) {\n\t\tconst cbs = this._subscribers.get(event) ?? [];\n\t\tconst cleanup: (() => void)[] = [];\n\n\t\tfor (const subscriber of cbs) {\n\t\t\tsubscriber.cb(...data);\n\n\t\t\tif (subscriber.once) {\n\t\t\t\tcleanup.push(() => cbs.splice(cbs.indexOf(subscriber), 1));\n\t\t\t}\n\t\t}\n\n\t\tfor (const cb of cleanup) {\n\t\t\tcb();\n\t\t}\n\t}\n\n\tpublic prompt() {\n\t\treturn new Promise<string | symbol>((resolve, reject) => {\n\t\t\tif (this._abortSignal) {\n\t\t\t\tif (this._abortSignal.aborted) {\n\t\t\t\t\tthis.state = 'cancel';\n\n\t\t\t\t\tthis.close();\n\t\t\t\t\treturn resolve(CANCEL_SYMBOL);\n\t\t\t\t}\n\n\t\t\t\tthis._abortSignal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.state = 'cancel';\n\t\t\t\t\t\tthis.close();\n\t\t\t\t\t},\n\t\t\t\t\t{ once: true }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst sink = new Writable();\n\t\t\tsink._write = (chunk, encoding, done) => {\n\t\t\t\tif (this._track) {\n\t\t\t\t\tthis.value = this.rl?.line.replace(/\\t/g, '');\n\t\t\t\t\tthis._cursor = this.rl?.cursor ?? 0;\n\t\t\t\t\tthis.emit('value', this.value);\n\t\t\t\t}\n\t\t\t\tdone();\n\t\t\t};\n\t\t\tthis.input.pipe(sink);\n\n\t\t\tthis.rl = readline.createInterface({\n\t\t\t\tinput: this.input,\n\t\t\t\toutput: sink,\n\t\t\t\ttabSize: 2,\n\t\t\t\tprompt: '',\n\t\t\t\tescapeCodeTimeout: 50,\n\t\t\t\tterminal: true,\n\t\t\t});\n\t\t\treadline.emitKeypressEvents(this.input, this.rl);\n\t\t\tthis.rl.prompt();\n\t\t\tif (this.opts.initialValue !== undefined && this._track) {\n\t\t\t\tthis.rl.write(this.opts.initialValue);\n\t\t\t}\n\n\t\t\tthis.input.on('keypress', this.onKeypress);\n\t\t\tsetRawMode(this.input, true);\n\t\t\tthis.output.on('resize', this.render);\n\n\t\t\tthis.render();\n\n\t\t\tthis.once('submit', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(this.value);\n\t\t\t});\n\t\t\tthis.once('cancel', () => {\n\t\t\t\tthis.output.write(cursor.show);\n\t\t\t\tthis.output.off('resize', this.render);\n\t\t\t\tsetRawMode(this.input, false);\n\t\t\t\tresolve(CANCEL_SYMBOL);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate onKeypress(char: string, key?: Key) {\n\t\tif (this.state === 'error') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tif (key?.name) {\n\t\t\tif (!this._track && settings.aliases.has(key.name)) {\n\t\t\t\tthis.emit('cursor', settings.aliases.get(key.name));\n\t\t\t}\n\t\t\tif (settings.actions.has(key.name as Action)) {\n\t\t\t\tthis.emit('cursor', key.name as Action);\n\t\t\t}\n\t\t}\n\t\tif (char && (char.toLowerCase() === 'y' || char.toLowerCase() === 'n')) {\n\t\t\tthis.emit('confirm', char.toLowerCase() === 'y');\n\t\t}\n\t\tif (char === '\\t' && this.opts.placeholder) {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.rl?.write(this.opts.placeholder);\n\t\t\t\tthis.emit('value', this.opts.placeholder);\n\t\t\t}\n\t\t}\n\t\tif (char) {\n\t\t\tthis.emit('key', char.toLowerCase());\n\t\t}\n\n\t\tif (key?.name === 'return') {\n\t\t\tif (this.opts.validate) {\n\t\t\t\tconst problem = this.opts.validate(this.value);\n\t\t\t\tif (problem) {\n\t\t\t\t\tthis.error = problem instanceof Error ? problem.message : problem;\n\t\t\t\t\tthis.state = 'error';\n\t\t\t\t\tthis.rl?.write(this.value);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state !== 'error') {\n\t\t\t\tthis.state = 'submit';\n\t\t\t}\n\t\t}\n\n\t\tif (isActionKey([char, key?.name, key?.sequence], 'cancel')) {\n\t\t\tthis.state = 'cancel';\n\t\t}\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.emit('finalize');\n\t\t}\n\t\tthis.render();\n\t\tif (this.state === 'submit' || this.state === 'cancel') {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tprotected close() {\n\t\tthis.input.unpipe();\n\t\tthis.input.removeListener('keypress', this.onKeypress);\n\t\tthis.output.write('\\n');\n\t\tsetRawMode(this.input, false);\n\t\tthis.rl?.close();\n\t\tthis.rl = undefined;\n\t\tthis.emit(`${this.state}`, this.value);\n\t\tthis.unsubscribe();\n\t}\n\n\tprivate restoreCursor() {\n\t\tconst lines =\n\t\t\twrap(this._prevFrame, process.stdout.columns, { hard: true }).split('\\n').length - 1;\n\t\tthis.output.write(cursor.move(-999, lines * -1));\n\t}\n\n\tprivate render() {\n\t\tconst frame = wrap(this._render(this) ?? '', process.stdout.columns, { hard: true });\n\t\tif (frame === this._prevFrame) return;\n\n\t\tif (this.state === 'initial') {\n\t\t\tthis.output.write(cursor.hide);\n\t\t} else {\n\t\t\tconst diff = diffLines(this._prevFrame, frame);\n\t\t\tthis.restoreCursor();\n\t\t\t// If a single line has changed, only update that line\n\t\t\tif (diff && diff?.length === 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.lines(1));\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tthis.output.write(lines[diffLine]);\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\tthis.output.write(cursor.move(0, lines.length - diffLine - 1));\n\t\t\t\treturn;\n\t\t\t\t// If many lines have changed, rerender everything past the first line\n\t\t\t}\n\t\t\tif (diff && diff?.length > 1) {\n\t\t\t\tconst diffLine = diff[0];\n\t\t\t\tthis.output.write(cursor.move(0, diffLine));\n\t\t\t\tthis.output.write(erase.down());\n\t\t\t\tconst lines = frame.split('\\n');\n\t\t\t\tconst newLines = lines.slice(diffLine);\n\t\t\t\tthis.output.write(newLines.join('\\n'));\n\t\t\t\tthis._prevFrame = frame;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.output.write(erase.down());\n\t\t}\n\n\t\tthis.output.write(frame);\n\t\tif (this.state === 'initial') {\n\t\t\tthis.state = 'active';\n\t\t}\n\t\tthis._prevFrame = frame;\n\t}\n}\n","import { cursor } from 'sisteransi';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface ConfirmOptions extends PromptOptions<ConfirmPrompt> {\n\tactive: string;\n\tinactive: string;\n\tinitialValue?: boolean;\n}\nexport default class ConfirmPrompt extends Prompt {\n\tget cursor() {\n\t\treturn this.value ? 0 : 1;\n\t}\n\n\tprivate get _value() {\n\t\treturn this.cursor === 0;\n\t}\n\n\tconstructor(opts: ConfirmOptions) {\n\t\tsuper(opts, false);\n\t\tthis.value = !!opts.initialValue;\n\n\t\tthis.on('value', () => {\n\t\t\tthis.value = this._value;\n\t\t});\n\n\t\tthis.on('confirm', (confirm) => {\n\t\t\tthis.output.write(cursor.move(0, -1));\n\t\t\tthis.value = confirm;\n\t\t\tthis.state = 'submit';\n\t\t\tthis.close();\n\t\t});\n\n\t\tthis.on('cursor', () => {\n\t\t\tthis.value = !this.value;\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface MultiSelectOptions<T extends { value: any }> extends PromptOptions<MultiSelectPrompt<T>> {\n\toptions: T[];\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n}\nexport default class MultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value() {\n\t\treturn this.options[this.cursor].value;\n\t}\n\n\tprivate toggleAll() {\n\t\tconst allSelected = this.value.length === this.options.length;\n\t\tthis.value = allSelected ? [] : this.options.map((v) => v.value);\n\t}\n\n\tprivate toggleValue() {\n\t\tconst selected = this.value.includes(this._value);\n\t\tthis.value = selected\n\t\t\t? this.value.filter((value: T['value']) => value !== this._value)\n\t\t\t: [...this.value, this._value];\n\t}\n\n\tconstructor(opts: MultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.value = [...(opts.initialValues ?? [])];\n\t\tthis.cursor = Math.max(\n\t\t\tthis.options.findIndex(({ value }) => value === opts.cursorAt),\n\t\t\t0\n\t\t);\n\t\tthis.on('key', (char) => {\n\t\t\tif (char === 'a') {\n\t\t\t\tthis.toggleAll();\n\t\t\t}\n\t\t});\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'space':\n\t\t\t\t\tthis.toggleValue();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n}\n","import color from 'picocolors';\nimport Prompt, { type PromptOptions } from './prompt';\n\ninterface PasswordOptions extends PromptOptions<PasswordPrompt> {\n\tmask?: string;\n}\nexport default class PasswordPrompt extends Prompt {\n\tvalueWithCursor = '';\n\tprivate _mask = '•';\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tget masked() {\n\t\treturn this.value.replaceAll(/./g, this._mask);\n\t}\n\tconstructor({ mask, ...opts }: PasswordOptions) {\n\t\tsuper(opts);\n\t\tthis._mask = mask ?? '•';\n\n\t\tthis.on('finalize', () => {\n\t\t\tthis.valueWithCursor = this.masked;\n\t\t});\n\t\tthis.on('value', () => {\n\t\t\tif (this.cursor >= this.value.length) {\n\t\t\t\tthis.valueWithCursor = `${this.masked}${color.inverse(color.hidden('_'))}`;\n\t\t\t} else {\n\t\t\t\tconst s1 = this.masked.slice(0, this.cursor);\n\t\t\t\tconst s2 = this.masked.slice(this.cursor);\n\t\t\t\tthis.valueWithCursor = `${s1}${color.inverse(s2[0])}${s2.slice(1)}`;\n\t\t\t}\n\t\t});\n\t}\n}\n","import Prompt, { type PromptOptions } from './prompt';\n\ninterface SelectOptions<T extends { value: any }> extends PromptOptions<SelectPrompt<T>> {\n\toptions: T[];\n\tinitialValue?: T['value'];\n}\nexport default class SelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor = 0;\n\n\tprivate get _value() {\n\t\treturn this.options[this.cursor];\n\t}\n\n\tprivate changeValue() {\n\t\tthis.value = this._value.value;\n\t}\n\n\tconstructor(opts: SelectOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tthis.cursor = this.options.findIndex(({ value }) => value === opts.initialValue);\n\t\tif (this.cursor === -1) this.cursor = 0;\n\t\tthis.changeValue();\n\n\t\tthis.on('cursor', (key) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase 'left':\n\t\t\t\tcase 'up':\n\t\t\t\t\tthis.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'down':\n\t\t\t\tcase 'right':\n\t\t\t\t\tthis.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.changeValue();\n\t\t});\n\t}\n}\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tif (process.platform !== 'win32') {\n\t\treturn process.env.TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(process.env.CI)\n\t\t|| Boolean(process.env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(process.env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| process.env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| process.env.TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| process.env.TERM_PROGRAM === 'vscode'\n\t\t|| process.env.TERM === 'xterm-256color'\n\t\t|| process.env.TERM === 'alacritty'\n\t\t|| process.env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","import { stripVTControlCharacters as strip } from 'node:util';\nimport {\n\tConfirmPrompt,\n\tGroupMultiSelectPrompt,\n\tMultiSelectPrompt,\n\tPasswordPrompt,\n\tSelectKeyPrompt,\n\tSelectPrompt,\n\ttype State,\n\tTextPrompt,\n\tblock,\n\tisCancel,\n} from '@clack/core';\nimport isUnicodeSupported from 'is-unicode-supported';\nimport color from 'picocolors';\nimport { cursor, erase } from 'sisteransi';\n\nexport { isCancel } from '@clack/core';\nexport { updateSettings, type ClackSettings } from '@clack/core';\n\nconst unicode = isUnicodeSupported();\nconst s = (c: string, fallback: string) => (unicode ? c : fallback);\nconst S_STEP_ACTIVE = s('◆', '*');\nconst S_STEP_CANCEL = s('■', 'x');\nconst S_STEP_ERROR = s('▲', 'x');\nconst S_STEP_SUBMIT = s('◇', 'o');\n\nconst S_BAR_START = s('┌', 'T');\nconst S_BAR = s('│', '|');\nconst S_BAR_END = s('└', '—');\n\nconst S_RADIO_ACTIVE = s('●', '>');\nconst S_RADIO_INACTIVE = s('○', ' ');\nconst S_CHECKBOX_ACTIVE = s('◻', '[•]');\nconst S_CHECKBOX_SELECTED = s('◼', '[+]');\nconst S_CHECKBOX_INACTIVE = s('◻', '[ ]');\nconst S_PASSWORD_MASK = s('▪', '•');\n\nconst S_BAR_H = s('─', '-');\nconst S_CORNER_TOP_RIGHT = s('╮', '+');\nconst S_CONNECT_LEFT = s('├', '+');\nconst S_CORNER_BOTTOM_RIGHT = s('╯', '+');\n\nconst S_INFO = s('●', '•');\nconst S_SUCCESS = s('◆', '*');\nconst S_WARN = s('▲', '!');\nconst S_ERROR = s('■', 'x');\n\nconst symbol = (state: State) => {\n\tswitch (state) {\n\t\tcase 'initial':\n\t\tcase 'active':\n\t\t\treturn color.cyan(S_STEP_ACTIVE);\n\t\tcase 'cancel':\n\t\t\treturn color.red(S_STEP_CANCEL);\n\t\tcase 'error':\n\t\t\treturn color.yellow(S_STEP_ERROR);\n\t\tcase 'submit':\n\t\t\treturn color.green(S_STEP_SUBMIT);\n\t}\n};\n\ninterface LimitOptionsParams<TOption> {\n\toptions: TOption[];\n\tmaxItems: number | undefined;\n\tcursor: number;\n\tstyle: (option: TOption, active: boolean) => string;\n}\n\nconst limitOptions = <TOption>(params: LimitOptionsParams<TOption>): string[] => {\n\tconst { cursor, options, style } = params;\n\n\tconst paramMaxItems = params.maxItems ?? Number.POSITIVE_INFINITY;\n\tconst outputMaxItems = Math.max(process.stdout.rows - 4, 0);\n\t// We clamp to minimum 5 because anything less doesn't make sense UX wise\n\tconst maxItems = Math.min(outputMaxItems, Math.max(paramMaxItems, 5));\n\tlet slidingWindowLocation = 0;\n\n\tif (cursor >= slidingWindowLocation + maxItems - 3) {\n\t\tslidingWindowLocation = Math.max(Math.min(cursor - maxItems + 3, options.length - maxItems), 0);\n\t} else if (cursor < slidingWindowLocation + 2) {\n\t\tslidingWindowLocation = Math.max(cursor - 2, 0);\n\t}\n\n\tconst shouldRenderTopEllipsis = maxItems < options.length && slidingWindowLocation > 0;\n\tconst shouldRenderBottomEllipsis =\n\t\tmaxItems < options.length && slidingWindowLocation + maxItems < options.length;\n\n\treturn options\n\t\t.slice(slidingWindowLocation, slidingWindowLocation + maxItems)\n\t\t.map((option, i, arr) => {\n\t\t\tconst isTopLimit = i === 0 && shouldRenderTopEllipsis;\n\t\t\tconst isBottomLimit = i === arr.length - 1 && shouldRenderBottomEllipsis;\n\t\t\treturn isTopLimit || isBottomLimit\n\t\t\t\t? color.dim('...')\n\t\t\t\t: style(option, i + slidingWindowLocation === cursor);\n\t\t});\n};\n\nexport interface TextOptions {\n\tmessage: string;\n\tplaceholder?: string;\n\tdefaultValue?: string;\n\tinitialValue?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const text = (opts: TextOptions) => {\n\treturn new TextPrompt({\n\t\tvalidate: opts.validate,\n\t\tplaceholder: opts.placeholder,\n\t\tdefaultValue: opts.defaultValue,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst placeholder = opts.placeholder\n\t\t\t\t? color.inverse(opts.placeholder[0]) + color.dim(opts.placeholder.slice(1))\n\t\t\t\t: color.inverse(color.hidden('_'));\n\t\t\tconst value = !this.value ? placeholder : this.valueWithCursor;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${value}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(this.value || opts.placeholder)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(this.value ?? '')\n\t\t\t\t\t)}${this.value?.trim() ? `\\n${color.gray(S_BAR)}` : ''}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface PasswordOptions {\n\tmessage: string;\n\tmask?: string;\n\tvalidate?: (value: string) => string | Error | undefined;\n}\nexport const password = (opts: PasswordOptions) => {\n\treturn new PasswordPrompt({\n\t\tvalidate: opts.validate,\n\t\tmask: opts.mask ?? S_PASSWORD_MASK,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.valueWithCursor;\n\t\t\tconst masked = this.masked;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'error':\n\t\t\t\t\treturn `${title.trim()}\\n${color.yellow(S_BAR)} ${masked}\\n${color.yellow(\n\t\t\t\t\t\tS_BAR_END\n\t\t\t\t\t)} ${color.yellow(this.error)}\\n`;\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(masked)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(color.dim(masked ?? ''))}${\n\t\t\t\t\t\tmasked ? `\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\tdefault:\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${value}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<string | symbol>;\n};\n\nexport interface ConfirmOptions {\n\tmessage: string;\n\tactive?: string;\n\tinactive?: string;\n\tinitialValue?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n\tconst active = opts.active ?? 'Yes';\n\tconst inactive = opts.inactive ?? 'No';\n\treturn new ConfirmPrompt({\n\t\tactive,\n\t\tinactive,\n\t\tinitialValue: opts.initialValue ?? true,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\t\t\tconst value = this.value ? active : inactive;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.dim(value)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${color.strikethrough(\n\t\t\t\t\t\tcolor.dim(value)\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${\n\t\t\t\t\t\tthis.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${active}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(active)}`\n\t\t\t\t\t} ${color.dim('/')} ${\n\t\t\t\t\t\t!this.value\n\t\t\t\t\t\t\t? `${color.green(S_RADIO_ACTIVE)} ${inactive}`\n\t\t\t\t\t\t\t: `${color.dim(S_RADIO_INACTIVE)} ${color.dim(inactive)}`\n\t\t\t\t\t}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<boolean | symbol>;\n};\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n\t? {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * The optional, user-facing text for this option.\n\t\t\t *\n\t\t\t * By default, the `value` is converted to a string.\n\t\t\t */\n\t\t\tlabel?: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t}\n\t: {\n\t\t\t/**\n\t\t\t * Internal data for this option.\n\t\t\t */\n\t\t\tvalue: Value;\n\t\t\t/**\n\t\t\t * Required. The user-facing text for this option.\n\t\t\t */\n\t\t\tlabel: string;\n\t\t\t/**\n\t\t\t * An optional hint to display to the user when\n\t\t\t * this option might be selected.\n\t\t\t *\n\t\t\t * By default, no `hint` is displayed.\n\t\t\t */\n\t\t\thint?: string;\n\t\t};\n\nexport interface SelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValue?: Value;\n\tmaxItems?: number;\n}\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n\tconst opt = (option: Option<Value>, state: 'inactive' | 'active' | 'selected' | 'cancelled') => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tswitch (state) {\n\t\t\tcase 'selected':\n\t\t\t\treturn `${color.dim(label)}`;\n\t\t\tcase 'active':\n\t\t\t\treturn `${color.green(S_RADIO_ACTIVE)} ${label} ${\n\t\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t\t}`;\n\t\t\tcase 'cancelled':\n\t\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t\tdefault:\n\t\t\t\treturn `${color.dim(S_RADIO_INACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t};\n\n\treturn new SelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[this.cursor], 'selected')}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options[this.cursor],\n\t\t\t\t\t\t'cancelled'\n\t\t\t\t\t)}\\n${color.gray(S_BAR)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: (item, active) => opt(item, active ? 'active' : 'inactive'),\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport const selectKey = <Value extends string>(opts: SelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'cancelled' = 'inactive'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active') {\n\t\t\treturn `${color.bgCyan(color.gray(` ${option.value} `))} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\treturn `${color.gray(color.bgWhite(color.inverse(` ${option.value} `)))} ${label} ${\n\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t}`;\n\t};\n\n\treturn new SelectKeyPrompt({\n\t\toptions: opts.options,\n\t\tinitialValue: opts.initialValue,\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(\n\t\t\t\t\t\tthis.options.find((opt) => opt.value === this.value) ?? opts.options[0],\n\t\t\t\t\t\t'selected'\n\t\t\t\t\t)}`;\n\t\t\t\tcase 'cancel':\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${opt(this.options[0], 'cancelled')}\\n${color.gray(\n\t\t\t\t\t\tS_BAR\n\t\t\t\t\t)}`;\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i) => opt(option, i === this.cursor ? 'active' : 'inactive'))\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value | symbol>;\n};\n\nexport interface MultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Option<Value>[];\n\tinitialValues?: Value[];\n\tmaxItems?: number;\n\trequired?: boolean;\n\tcursorAt?: Value;\n}\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate: 'inactive' | 'active' | 'selected' | 'active-selected' | 'submitted' | 'cancelled'\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tif (state === 'active') {\n\t\t\treturn `${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\treturn `${color.dim(S_CHECKBOX_INACTIVE)} ${color.dim(label)}`;\n\t};\n\n\treturn new MultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tconst styleOption = (option: Option<Value>, active: boolean) => {\n\t\t\t\tconst selected = this.value.includes(option.value);\n\t\t\t\tif (active && selected) {\n\t\t\t\t\treturn opt(option, 'active-selected');\n\t\t\t\t}\n\t\t\t\tif (selected) {\n\t\t\t\t\treturn opt(option, 'selected');\n\t\t\t\t}\n\t\t\t\treturn opt(option, active ? 'active' : 'inactive');\n\t\t\t};\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tthis.options\n\t\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t\t.join(color.dim(', ')) || color.dim('none')\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title + color.yellow(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${limitOptions({\n\t\t\t\t\t\toptions: this.options,\n\t\t\t\t\t\tcursor: this.cursor,\n\t\t\t\t\t\tmaxItems: opts.maxItems,\n\t\t\t\t\t\tstyle: styleOption,\n\t\t\t\t\t}).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport interface GroupMultiSelectOptions<Value> {\n\tmessage: string;\n\toptions: Record<string, Option<Value>[]>;\n\tinitialValues?: Value[];\n\trequired?: boolean;\n\tcursorAt?: Value;\n\tselectableGroups?: boolean;\n}\nexport const groupMultiselect = <Value>(opts: GroupMultiSelectOptions<Value>) => {\n\tconst { selectableGroups = true } = opts;\n\tconst opt = (\n\t\toption: Option<Value>,\n\t\tstate:\n\t\t\t| 'inactive'\n\t\t\t| 'active'\n\t\t\t| 'selected'\n\t\t\t| 'active-selected'\n\t\t\t| 'group-active'\n\t\t\t| 'group-active-selected'\n\t\t\t| 'submitted'\n\t\t\t| 'cancelled',\n\t\toptions: Option<Value>[] = []\n\t) => {\n\t\tconst label = option.label ?? String(option.value);\n\t\tconst isItem = typeof (option as any).group === 'string';\n\t\tconst next = isItem && (options[options.indexOf(option) + 1] ?? { group: true });\n\t\tconst isLast = isItem && (next as any).group === true;\n\t\tconst prefix = isItem ? (selectableGroups ? `${isLast ? S_BAR_END : S_BAR} ` : ' ') : '';\n\n\t\tif (state === 'active') {\n\t\t\treturn `${color.dim(prefix)}${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'group-active') {\n\t\t\treturn `${prefix}${color.cyan(S_CHECKBOX_ACTIVE)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'group-active-selected') {\n\t\t\treturn `${prefix}${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)}`;\n\t\t}\n\t\tif (state === 'selected') {\n\t\t\tconst selectedCheckbox = isItem || selectableGroups ? color.green(S_CHECKBOX_SELECTED) : '';\n\t\t\treturn `${color.dim(prefix)}${selectedCheckbox} ${color.dim(label)} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'cancelled') {\n\t\t\treturn `${color.strikethrough(color.dim(label))}`;\n\t\t}\n\t\tif (state === 'active-selected') {\n\t\t\treturn `${color.dim(prefix)}${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n\t\t\t\toption.hint ? color.dim(`(${option.hint})`) : ''\n\t\t\t}`;\n\t\t}\n\t\tif (state === 'submitted') {\n\t\t\treturn `${color.dim(label)}`;\n\t\t}\n\t\tconst unselectedCheckbox = isItem || selectableGroups ? color.dim(S_CHECKBOX_INACTIVE) : '';\n\t\treturn `${color.dim(prefix)}${unselectedCheckbox} ${color.dim(label)}`;\n\t};\n\n\treturn new GroupMultiSelectPrompt({\n\t\toptions: opts.options,\n\t\tinitialValues: opts.initialValues,\n\t\trequired: opts.required ?? true,\n\t\tcursorAt: opts.cursorAt,\n\t\tselectableGroups,\n\t\tvalidate(selected: Value[]) {\n\t\t\tif (this.required && selected.length === 0)\n\t\t\t\treturn `Please select at least one option.\\n${color.reset(\n\t\t\t\t\tcolor.dim(\n\t\t\t\t\t\t`Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n\t\t\t\t\t\t\tcolor.bgWhite(color.inverse(' enter '))\n\t\t\t\t\t\t)} to submit`\n\t\t\t\t\t)\n\t\t\t\t)}`;\n\t\t},\n\t\trender() {\n\t\t\tconst title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n\t\t\tswitch (this.state) {\n\t\t\t\tcase 'submit': {\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'submitted'))\n\t\t\t\t\t\t.join(color.dim(', '))}`;\n\t\t\t\t}\n\t\t\t\tcase 'cancel': {\n\t\t\t\t\tconst label = this.options\n\t\t\t\t\t\t.filter(({ value }) => this.value.includes(value))\n\t\t\t\t\t\t.map((option) => opt(option, 'cancelled'))\n\t\t\t\t\t\t.join(color.dim(', '));\n\t\t\t\t\treturn `${title}${color.gray(S_BAR)} ${\n\t\t\t\t\t\tlabel.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n\t\t\t\t\t}`;\n\t\t\t\t}\n\t\t\t\tcase 'error': {\n\t\t\t\t\tconst footer = this.error\n\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t.map((ln, i) =>\n\t\t\t\t\t\t\ti === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\treturn `${title}${color.yellow(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\treturn `${title}${color.cyan(S_BAR)} ${this.options\n\t\t\t\t\t\t.map((option, i, options) => {\n\t\t\t\t\t\t\tconst selected =\n\t\t\t\t\t\t\t\tthis.value.includes(option.value) ||\n\t\t\t\t\t\t\t\t(option.group === true && this.isGroupSelected(`${option.value}`));\n\t\t\t\t\t\t\tconst active = i === this.cursor;\n\t\t\t\t\t\t\tconst groupActive =\n\t\t\t\t\t\t\t\t!active &&\n\t\t\t\t\t\t\t\ttypeof option.group === 'string' &&\n\t\t\t\t\t\t\t\tthis.options[this.cursor].value === option.group;\n\t\t\t\t\t\t\tif (groupActive) {\n\t\t\t\t\t\t\t\treturn opt(option, selected ? 'group-active-selected' : 'group-active', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (active && selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'active-selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (selected) {\n\t\t\t\t\t\t\t\treturn opt(option, 'selected', options);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn opt(option, active ? 'active' : 'inactive', options);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t}).prompt() as Promise<Value[] | symbol>;\n};\n\nexport const note = (message = '', title = '') => {\n\tconst lines = `\\n${message}\\n`.split('\\n');\n\tconst titleLen = strip(title).length;\n\tconst len =\n\t\tMath.max(\n\t\t\tlines.reduce((sum, ln) => {\n\t\t\t\tconst line = strip(ln);\n\t\t\t\treturn line.length > sum ? line.length : sum;\n\t\t\t}, 0),\n\t\t\ttitleLen\n\t\t) + 2;\n\tconst msg = lines\n\t\t.map(\n\t\t\t(ln) =>\n\t\t\t\t`${color.gray(S_BAR)} ${color.dim(ln)}${' '.repeat(len - strip(ln).length)}${color.gray(\n\t\t\t\t\tS_BAR\n\t\t\t\t)}`\n\t\t)\n\t\t.join('\\n');\n\tprocess.stdout.write(\n\t\t`${color.gray(S_BAR)}\\n${color.green(S_STEP_SUBMIT)} ${color.reset(title)} ${color.gray(\n\t\t\tS_BAR_H.repeat(Math.max(len - titleLen - 1, 1)) + S_CORNER_TOP_RIGHT\n\t\t)}\\n${msg}\\n${color.gray(S_CONNECT_LEFT + S_BAR_H.repeat(len + 2) + S_CORNER_BOTTOM_RIGHT)}\\n`\n\t);\n};\n\nexport const cancel = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_END)} ${color.red(message)}\\n\\n`);\n};\n\nexport const intro = (title = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR_START)} ${title}\\n`);\n};\n\nexport const outro = (message = '') => {\n\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${color.gray(S_BAR_END)} ${message}\\n\\n`);\n};\n\nexport type LogMessageOptions = {\n\tsymbol?: string;\n};\nexport const log = {\n\tmessage: (message = '', { symbol = color.gray(S_BAR) }: LogMessageOptions = {}) => {\n\t\tconst parts = [`${color.gray(S_BAR)}`];\n\t\tif (message) {\n\t\t\tconst [firstLine, ...lines] = message.split('\\n');\n\t\t\tparts.push(`${symbol} ${firstLine}`, ...lines.map((ln) => `${color.gray(S_BAR)} ${ln}`));\n\t\t}\n\t\tprocess.stdout.write(`${parts.join('\\n')}\\n`);\n\t},\n\tinfo: (message: string) => {\n\t\tlog.message(message, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (message: string) => {\n\t\tlog.message(message, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (message: string) => {\n\t\tlog.message(message, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (message: string) => {\n\t\tlog.warn(message);\n\t},\n\terror: (message: string) => {\n\t\tlog.message(message, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nconst prefix = `${color.gray(S_BAR)} `;\nexport const stream = {\n\tmessage: async (\n\t\titerable: Iterable<string> | AsyncIterable<string>,\n\t\t{ symbol = color.gray(S_BAR) }: LogMessageOptions = {}\n\t) => {\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n${symbol} `);\n\t\tlet lineWidth = 3;\n\t\tfor await (let chunk of iterable) {\n\t\t\tchunk = chunk.replace(/\\n/g, `\\n${prefix}`);\n\t\t\tif (chunk.includes('\\n')) {\n\t\t\t\tlineWidth = 3 + strip(chunk.slice(chunk.lastIndexOf('\\n'))).length;\n\t\t\t}\n\t\t\tconst chunkLen = strip(chunk).length;\n\t\t\tif (lineWidth + chunkLen < process.stdout.columns) {\n\t\t\t\tlineWidth += chunkLen;\n\t\t\t\tprocess.stdout.write(chunk);\n\t\t\t} else {\n\t\t\t\tprocess.stdout.write(`\\n${prefix}${chunk.trimStart()}`);\n\t\t\t\tlineWidth = 3 + strip(chunk.trimStart()).length;\n\t\t\t}\n\t\t}\n\t\tprocess.stdout.write('\\n');\n\t},\n\tinfo: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.blue(S_INFO) });\n\t},\n\tsuccess: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_SUCCESS) });\n\t},\n\tstep: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.green(S_STEP_SUBMIT) });\n\t},\n\twarn: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.yellow(S_WARN) });\n\t},\n\t/** alias for `log.warn()`. */\n\twarning: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.warn(iterable);\n\t},\n\terror: (iterable: Iterable<string> | AsyncIterable<string>) => {\n\t\treturn stream.message(iterable, { symbol: color.red(S_ERROR) });\n\t},\n};\n\nexport interface SpinnerOptions {\n\tindicator?: 'dots' | 'timer';\n}\n\nexport const spinner = ({ indicator = 'dots' }: SpinnerOptions = {}) => {\n\tconst frames = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'];\n\tconst delay = unicode ? 80 : 120;\n\tconst isCI = process.env.CI === 'true';\n\n\tlet unblock: () => void;\n\tlet loop: NodeJS.Timeout;\n\tlet isSpinnerActive = false;\n\tlet _message = '';\n\tlet _prevMessage: string | undefined = undefined;\n\tlet _origin: number = performance.now();\n\n\tconst handleExit = (code: number) => {\n\t\tconst msg = code > 1 ? 'Something went wrong' : 'Canceled';\n\t\tif (isSpinnerActive) stop(msg, code);\n\t};\n\n\tconst errorEventHandler = () => handleExit(2);\n\tconst signalEventHandler = () => handleExit(1);\n\n\tconst registerHooks = () => {\n\t\t// Reference: https://nodejs.org/api/process.html#event-uncaughtexception\n\t\tprocess.on('uncaughtExceptionMonitor', errorEventHandler);\n\t\t// Reference: https://nodejs.org/api/process.html#event-unhandledrejection\n\t\tprocess.on('unhandledRejection', errorEventHandler);\n\t\t// Reference Signal Events: https://nodejs.org/api/process.html#signal-events\n\t\tprocess.on('SIGINT', signalEventHandler);\n\t\tprocess.on('SIGTERM', signalEventHandler);\n\t\tprocess.on('exit', handleExit);\n\t};\n\n\tconst clearHooks = () => {\n\t\tprocess.removeListener('uncaughtExceptionMonitor', errorEventHandler);\n\t\tprocess.removeListener('unhandledRejection', errorEventHandler);\n\t\tprocess.removeListener('SIGINT', signalEventHandler);\n\t\tprocess.removeListener('SIGTERM', signalEventHandler);\n\t\tprocess.removeListener('exit', handleExit);\n\t};\n\n\tconst clearPrevMessage = () => {\n\t\tif (_prevMessage === undefined) return;\n\t\tif (isCI) process.stdout.write('\\n');\n\t\tconst prevLines = _prevMessage.split('\\n');\n\t\tprocess.stdout.write(cursor.move(-999, prevLines.length - 1));\n\t\tprocess.stdout.write(erase.down(prevLines.length));\n\t};\n\n\tconst parseMessage = (msg: string): string => {\n\t\treturn msg.replace(/\\.+$/, '');\n\t};\n\n\tconst formatTimer = (origin: number): string => {\n\t\tconst duration = (performance.now() - origin) / 1000;\n\t\tconst min = Math.floor(duration / 60);\n\t\tconst secs = Math.floor(duration % 60);\n\t\treturn min > 0 ? `[${min}m ${secs}s]` : `[${secs}s]`;\n\t};\n\n\tconst start = (msg = ''): void => {\n\t\tisSpinnerActive = true;\n\t\tunblock = block();\n\t\t_message = parseMessage(msg);\n\t\t_origin = performance.now();\n\t\tprocess.stdout.write(`${color.gray(S_BAR)}\\n`);\n\t\tlet frameIndex = 0;\n\t\tlet indicatorTimer = 0;\n\t\tregisterHooks();\n\t\tloop = setInterval(() => {\n\t\t\tif (isCI && _message === _prevMessage) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tclearPrevMessage();\n\t\t\t_prevMessage = _message;\n\t\t\tconst frame = color.magenta(frames[frameIndex]);\n\n\t\t\tif (isCI) {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}...`);\n\t\t\t} else if (indicator === 'timer') {\n\t\t\t\tprocess.stdout.write(`${frame} ${_message} ${formatTimer(_origin)}`);\n\t\t\t} else {\n\t\t\t\tconst loadingDots = '.'.repeat(Math.floor(indicatorTimer)).slice(0, 3);\n\t\t\t\tprocess.stdout.write(`${frame} ${_message}${loadingDots}`);\n\t\t\t}\n\n\t\t\tframeIndex = frameIndex + 1 < frames.length ? frameIndex + 1 : 0;\n\t\t\tindicatorTimer = indicatorTimer < frames.length ? indicatorTimer + 0.125 : 0;\n\t\t}, delay);\n\t};\n\n\tconst stop = (msg = '', code = 0): void => {\n\t\tisSpinnerActive = false;\n\t\tclearInterval(loop);\n\t\tclearPrevMessage();\n\t\tconst step =\n\t\t\tcode === 0\n\t\t\t\t? color.green(S_STEP_SUBMIT)\n\t\t\t\t: code === 1\n\t\t\t\t\t? color.red(S_STEP_CANCEL)\n\t\t\t\t\t: color.red(S_STEP_ERROR);\n\t\t_message = parseMessage(msg ?? _message);\n\t\tif (indicator === 'timer') {\n\t\t\tprocess.stdout.write(`${step} ${_message} ${formatTimer(_origin)}\\n`);\n\t\t} else {\n\t\t\tprocess.stdout.write(`${step} ${_message}\\n`);\n\t\t}\n\t\tclearHooks();\n\t\tunblock();\n\t};\n\n\tconst message = (msg = ''): void => {\n\t\t_message = parseMessage(msg ?? _message);\n\t};\n\n\treturn {\n\t\tstart,\n\t\tstop,\n\t\tmessage,\n\t};\n};\n\nexport type PromptGroupAwaitedReturn<T> = {\n\t[P in keyof T]: Exclude<Awaited<T[P]>, symbol>;\n};\n\nexport interface PromptGroupOptions<T> {\n\t/**\n\t * Control how the group can be canceled\n\t * if one of the prompts is canceled.\n\t */\n\tonCancel?: (opts: { results: Prettify<Partial<PromptGroupAwaitedReturn<T>>> }) => void;\n}\n\ntype Prettify<T> = {\n\t[P in keyof T]: T[P];\n} & {};\n\nexport type PromptGroup<T> = {\n\t[P in keyof T]: (opts: {\n\t\tresults: Prettify<Partial<PromptGroupAwaitedReturn<Omit<T, P>>>>;\n\t}) => undefined | Promise<T[P] | undefined>;\n};\n\n/**\n * Define a group of prompts to be displayed\n * and return a results of objects within the group\n */\nexport const group = async <T>(\n\tprompts: PromptGroup<T>,\n\topts?: PromptGroupOptions<T>\n): Promise<Prettify<PromptGroupAwaitedReturn<T>>> => {\n\tconst results = {} as any;\n\tconst promptNames = Object.keys(prompts);\n\n\tfor (const name of promptNames) {\n\t\tconst prompt = prompts[name as keyof T];\n\t\tconst result = await prompt({ results })?.catch((e) => {\n\t\t\tthrow e;\n\t\t});\n\n\t\t// Pass the results to the onCancel function\n\t\t// so the user can decide what to do with the results\n\t\t// TODO: Switch to callback within core to avoid isCancel Fn\n\t\tif (typeof opts?.onCancel === 'function' && isCancel(result)) {\n\t\t\tresults[name] = 'canceled';\n\t\t\topts.onCancel({ results });\n\t\t\tcontinue;\n\t\t}\n\n\t\tresults[name] = result;\n\t}\n\n\treturn results;\n};\n\nexport type Task = {\n\t/**\n\t * Task title\n\t */\n\ttitle: string;\n\t/**\n\t * Task function\n\t */\n\ttask: (message: (string: string) => void) => string | Promise<string> | void | Promise<void>;\n\n\t/**\n\t * If enabled === false the task will be skipped\n\t */\n\tenabled?: boolean;\n};\n\n/**\n * Define a group of tasks to be executed\n */\nexport const tasks = async (tasks: Task[]) => {\n\tfor (const task of tasks) {\n\t\tif (task.enabled === false) continue;\n\n\t\tconst s = spinner();\n\t\ts.start(task.title);\n\t\tconst result = await task.task(s.message);\n\t\ts.stop(result || task.title);\n\t}\n};\n","import { spawn, exec, type SpawnOptions } from 'node:child_process';\nimport { promisify } from 'node:util';\n\nexport class ExecError extends Error {\n constructor(\n readonly exitCode: number,\n readonly signal: NodeJS.Signals | null,\n readonly data: string = 'command gave no output',\n ) {\n super(data);\n }\n}\n\nexport function spawnAsyncHelper(\n command: string,\n args: Array<string>,\n spawnOptions?: SpawnOptions,\n) {\n const childProcess = spawn(command, args, spawnOptions || {});\n\n const deferred = new Promise<string>((resolve, reject) => {\n let stdoutData: string = '';\n let stderrData: string = '';\n childProcess.stdout?.on('data', (data) => {\n stdoutData += data.toString();\n });\n childProcess.stderr?.on('data', (data) => {\n stderrData += data.toString();\n });\n childProcess.stdout?.on('error', (err) => {\n reject(err);\n });\n childProcess.stderr?.on('error', (err) => {\n reject(err);\n });\n childProcess.on('error', (err) => {\n reject(err);\n });\n childProcess.on('exit', (exitCode, signal) => {\n if (!exitCode) {\n resolve(stdoutData);\n } else {\n reject(\n new ExecError(exitCode, signal, stderrData),\n );\n }\n });\n });\n\n return { childProcess, execResult: deferred };\n}\n\nexport async function spawnAsync(\n command: string,\n args: Array<string>,\n opts?: SpawnOptions,\n) {\n const { execResult } = spawnAsyncHelper(command, args, opts);\n return execResult;\n}\n\nexport const asyncExec = promisify(exec);\n","import { spawnAsync } from './exec-helpers';\nimport { dirname } from 'node:path';\n\nexport async function checkIsFileGitIgnored(path: string, warnIfNotGitRepo = false) {\n try {\n // Use spawnAsync with array arguments to properly handle paths with spaces\n // Pass cwd to run git from the file's directory\n await spawnAsync('git', ['check-ignore', path, '-q'], { cwd: dirname(path) });\n return true;\n } catch (err) {\n const errorOutput = (err as any).data as string;\n // git is not installed, so we can't check\n if (\n (err as any).exitCode === 127\n || errorOutput.includes('not found')\n || errorOutput.includes('not recognized') // windows\n ) {\n return undefined;\n }\n\n // other file related issues could throw this\n if ((err as any).code === 'ENOENT') return undefined;\n // `git check-ignore -q` exits with code 1 but no other error if is not ignored\n if (errorOutput === '') return false;\n if (errorOutput.includes('not a git repository')) {\n if (warnIfNotGitRepo) {\n // eslint-disable-next-line no-console\n console.log('🔶 Your code is not currently in a git repository - run `git init` to initialize a new repo.');\n }\n return false;\n }\n // file is outside the current git repository (e.g., importing from home directory)\n if (stderr.includes('is outside repository')) {\n return undefined;\n }\n // otherwise we'll let it throw since something else is happening\n throw err;\n }\n}\n","import process from 'node:process';\n\nexport default function isUnicodeSupported() {\n\tconst {env} = process;\n\tconst {TERM, TERM_PROGRAM} = env;\n\n\tif (process.platform !== 'win32') {\n\t\treturn TERM !== 'linux'; // Linux console (kernel)\n\t}\n\n\treturn Boolean(env.WT_SESSION) // Windows Terminal\n\t\t|| Boolean(env.TERMINUS_SUBLIME) // Terminus (<0.2.27)\n\t\t|| env.ConEmuTask === '{cmd::Cmder}' // ConEmu and cmder\n\t\t|| TERM_PROGRAM === 'Terminus-Sublime'\n\t\t|| TERM_PROGRAM === 'vscode'\n\t\t|| TERM === 'xterm-256color'\n\t\t|| TERM === 'alacritty'\n\t\t|| TERM === 'rxvt-unicode'\n\t\t|| TERM === 'rxvt-unicode-256color'\n\t\t|| env.TERMINAL_EMULATOR === 'JetBrains-JediTerm';\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\n\n// this is a slightly modified version of @clack/prompts\n// mostly to remove the additional left border\n\nimport type { Readable, Writable } from 'node:stream';\nimport { WriteStream } from 'node:tty';\nimport {\n ConfirmPrompt, SelectPrompt, MultiSelectPrompt, type State,\n} from '@clack/core';\nimport color from 'ansis';\nimport isUnicodeSupported from 'is-unicode-supported';\n\nconst unicode = isUnicodeSupported();\nconst isCI = (): boolean => process.env.CI === 'true';\nconst unicodeOr = (c: string, fallback: string) => (unicode ? c : fallback);\nconst S_STEP_ACTIVE = unicodeOr('◆', '*');\nconst S_STEP_CANCEL = unicodeOr('■', 'x');\nconst S_STEP_ERROR = unicodeOr('▲', 'x');\nconst S_STEP_SUBMIT = unicodeOr('◇', 'o');\n\nconst S_BAR_START = unicodeOr('┌', 'T');\nconst S_BAR = unicodeOr('│', '|');\nconst S_BAR_END = unicodeOr('└', '—');\n\nconst S_RADIO_ACTIVE = unicodeOr('●', '>');\nconst S_RADIO_INACTIVE = unicodeOr('○', ' ');\nconst S_CHECKBOX_ACTIVE = unicodeOr('◻', '[•]');\nconst S_CHECKBOX_SELECTED = unicodeOr('◼', '[+]');\nconst S_CHECKBOX_INACTIVE = unicodeOr('◻', '[ ]');\nconst S_PASSWORD_MASK = unicodeOr('▪', '•');\n\nconst S_BAR_H = unicodeOr('─', '-');\nconst S_CORNER_TOP_RIGHT = unicodeOr('╮', '+');\nconst S_CONNECT_LEFT = unicodeOr('├', '+');\nconst S_CORNER_BOTTOM_RIGHT = unicodeOr('╯', '+');\n\nconst S_INFO = unicodeOr('●', '•');\nconst S_SUCCESS = unicodeOr('◆', '*');\nconst S_WARN = unicodeOr('▲', '!');\nconst S_ERROR = unicodeOr('■', 'x');\n\nconst symbol = (state: State) => {\n // eslint-disable-next-line default-case\n switch (state) {\n case 'initial':\n case 'active':\n return color.cyan(S_STEP_ACTIVE);\n case 'cancel':\n return color.red(S_STEP_CANCEL);\n case 'error':\n return color.yellow(S_STEP_ERROR);\n case 'submit':\n return color.green(S_STEP_SUBMIT);\n }\n};\n\nexport interface CommonOptions {\n input?: Readable;\n output?: Writable;\n}\n\n\n\n\n/// /\nexport interface LimitOptionsParams<TOption> extends CommonOptions {\n options: Array<TOption>;\n maxItems: number | undefined;\n cursor: number;\n style: (option: TOption, active: boolean) => string;\n}\n\nexport const limitOptions = <TOption>(params: LimitOptionsParams<TOption>): Array<string> => {\n const { cursor, options, style } = params;\n const output: Writable = params.output ?? process.stdout;\n const rows = output instanceof WriteStream && output.rows !== undefined ? output.rows : 10;\n\n const paramMaxItems = params.maxItems ?? Number.POSITIVE_INFINITY;\n const outputMaxItems = Math.max(rows - 4, 0);\n // We clamp to minimum 5 because anything less doesn't make sense UX wise\n const maxItems = Math.min(outputMaxItems, Math.max(paramMaxItems, 5));\n let slidingWindowLocation = 0;\n\n if (cursor >= slidingWindowLocation + maxItems - 3) {\n slidingWindowLocation = Math.max(Math.min(cursor - maxItems + 3, options.length - maxItems), 0);\n } else if (cursor < slidingWindowLocation + 2) {\n slidingWindowLocation = Math.max(cursor - 2, 0);\n }\n\n const shouldRenderTopEllipsis = maxItems < options.length && slidingWindowLocation > 0;\n const shouldRenderBottomEllipsis = maxItems < options.length && slidingWindowLocation + maxItems < options.length;\n\n return options\n .slice(slidingWindowLocation, slidingWindowLocation + maxItems)\n .map((option, i, arr) => {\n const isTopLimit = i === 0 && shouldRenderTopEllipsis;\n const isBottomLimit = i === arr.length - 1 && shouldRenderBottomEllipsis;\n return isTopLimit || isBottomLimit\n ? color.dim('...')\n : style(option, i + slidingWindowLocation === cursor);\n });\n};\n\n\n///\n\nexport interface ConfirmOptions extends CommonOptions {\n message: string;\n active?: string;\n inactive?: string;\n initialValue?: boolean;\n}\nexport const confirm = (opts: ConfirmOptions) => {\n const active = opts.active ?? 'Yes';\n const inactive = opts.inactive ?? 'No';\n return new ConfirmPrompt({\n active,\n inactive,\n input: opts.input,\n output: opts.output,\n initialValue: opts.initialValue ?? true,\n render() {\n const title = `\\n${symbol(this.state)} ${opts.message}\\n`;\n const value = this.value ? active : inactive;\n\n // NOTE it's trimming leading spaces, so we use an invisible character at the beginnign of the line to add some spacing\n switch (this.state) {\n case 'submit':\n return `${title} ${color.dim(value)}`;\n case 'cancel':\n return `${title} ${color.strikethrough(\n color.dim(value),\n )}\\n`;\n default: {\n return `${title} ${\n this.value\n ? `${color.green(S_RADIO_ACTIVE)} ${active}`\n : `${color.dim(S_RADIO_INACTIVE)} ${color.dim(active)}`\n } ${color.dim('/')} ${\n !this.value\n ? `${color.green(S_RADIO_ACTIVE)} ${inactive}`\n : `${color.dim(S_RADIO_INACTIVE)} ${color.dim(inactive)}`\n }\\n`;\n }\n }\n },\n }).prompt() as Promise<boolean | symbol>;\n};\n\n\n\ntype Primitive = Readonly<string | boolean | number>;\n\nexport type Option<Value> = Value extends Primitive\n ? {\n /**\n * Internal data for this option.\n */\n value: Value;\n /**\n * The optional, user-facing text for this option.\n *\n * By default, the `value` is converted to a string.\n */\n label?: string;\n /**\n * An optional hint to display to the user when\n * this option might be selected.\n *\n * By default, no `hint` is displayed.\n */\n hint?: string;\n }\n : {\n /**\n * Internal data for this option.\n */\n value: Value;\n /**\n * Required. The user-facing text for this option.\n */\n label: string;\n /**\n * An optional hint to display to the user when\n * this option might be selected.\n *\n * By default, no `hint` is displayed.\n */\n hint?: string;\n };\n\nexport interface SelectOptions<Value> extends CommonOptions {\n message: string;\n options: Array<Option<Value>>;\n initialValue?: Value;\n maxItems?: number;\n}\n\nexport const select = <Value>(opts: SelectOptions<Value>) => {\n const opt = (option: Option<Value>, state: 'inactive' | 'active' | 'selected' | 'cancelled') => {\n const label = option.label ?? String(option.value);\n switch (state) {\n case 'selected':\n return `${color.dim(label)}`;\n case 'active':\n return `${color.green(S_RADIO_ACTIVE)} ${label} ${\n option.hint ? color.dim(`(${option.hint})`) : ''\n }`;\n case 'cancelled':\n return `${color.strikethrough(color.dim(label))}`;\n default:\n return `${color.dim(S_RADIO_INACTIVE)} ${color.dim(label)}`;\n }\n };\n\n return new SelectPrompt({\n options: opts.options,\n input: opts.input,\n output: opts.output,\n initialValue: opts.initialValue,\n render() {\n const title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n\n switch (this.state) {\n case 'submit':\n return `${title}${color.gray(S_BAR)} ${opt(this.options[this.cursor], 'selected')}`;\n case 'cancel':\n return `${title}${color.gray(S_BAR)} ${opt(\n this.options[this.cursor],\n 'cancelled',\n )}\\n${color.gray(S_BAR)}`;\n default: {\n return `${title}${color.cyan(S_BAR)} ${limitOptions({\n output: opts.output,\n cursor: this.cursor,\n options: this.options,\n maxItems: opts.maxItems,\n style: (item, active) => opt(item, active ? 'active' : 'inactive'),\n }).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n }\n }\n },\n }).prompt() as Promise<Value | symbol>;\n};\n\n\nexport interface MultiSelectOptions<Value> extends CommonOptions {\n message: string;\n details?: string;\n options: Array<Option<Value>>;\n initialValues?: Array<Value>;\n maxItems?: number;\n required?: boolean;\n cursorAt?: Value;\n}\nexport const multiselect = <Value>(opts: MultiSelectOptions<Value>) => {\n const opt = (\n option: Option<Value>,\n state: 'inactive' | 'active' | 'selected' | 'active-selected' | 'submitted' | 'cancelled',\n ) => {\n const label = option.label ?? String(option.value);\n if (state === 'active') {\n return `${color.cyan(S_CHECKBOX_ACTIVE)} ${label} ${\n option.hint ? color.dim(`(${option.hint})`) : ''\n }`;\n }\n if (state === 'selected') {\n return `${color.green(S_CHECKBOX_SELECTED)} ${color.dim(label)} ${\n option.hint ? color.dim(`(${option.hint})`) : ''\n }`;\n }\n if (state === 'cancelled') {\n return `${color.strikethrough(color.dim(label))}`;\n }\n if (state === 'active-selected') {\n return `${color.green(S_CHECKBOX_SELECTED)} ${label} ${\n option.hint ? color.dim(`(${option.hint})`) : ''\n }`;\n }\n if (state === 'submitted') {\n return `${color.dim(label)}`;\n }\n return `${color.dim(S_CHECKBOX_INACTIVE)} ${color.dim(label)}`;\n };\n\n return new MultiSelectPrompt({\n options: opts.options,\n input: opts.input,\n output: opts.output,\n initialValues: opts.initialValues,\n required: opts.required ?? true,\n cursorAt: opts.cursorAt,\n validate(selected: Array<Value>) {\n if (this.required && selected.length === 0) {\n return `Please select at least one option.\\n${color.reset(\n color.dim(\n `Press ${color.gray(color.bgWhite(color.inverse(' space ')))} to select, ${color.gray(\n color.bgWhite(color.inverse(' enter ')),\n )} to submit`,\n ),\n )}`;\n }\n },\n render() {\n let title = `${color.gray(S_BAR)}\\n${symbol(this.state)} ${opts.message}\\n`;\n if (opts.details) title += `${color.gray(S_BAR)} ${opts.details}\\n`;\n\n const styleOption = (option: Option<Value>, active: boolean) => {\n const selected = this.value.includes(option.value);\n if (active && selected) {\n return opt(option, 'active-selected');\n }\n if (selected) {\n return opt(option, 'selected');\n }\n return opt(option, active ? 'active' : 'inactive');\n };\n\n switch (this.state) {\n case 'submit': {\n return `${title}${color.gray(S_BAR)} ${\n this.options\n .filter(({ value }) => this.value.includes(value))\n .map((option) => opt(option, 'submitted'))\n .join(color.dim(', ')) || color.dim('none')\n }`;\n }\n case 'cancel': {\n const label = this.options\n .filter(({ value }) => this.value.includes(value))\n .map((option) => opt(option, 'cancelled'))\n .join(color.dim(', '));\n return `${title}${color.gray(S_BAR)} ${\n label.trim() ? `${label}\\n${color.gray(S_BAR)}` : ''\n }`;\n }\n case 'error': {\n const footer = this.error\n .split('\\n')\n .map((ln, i) => (i === 0 ? `${color.yellow(S_BAR_END)} ${color.yellow(ln)}` : ` ${ln}`))\n .join('\\n');\n return `${title + color.yellow(S_BAR)} ${limitOptions({\n output: opts.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: opts.maxItems,\n style: styleOption,\n }).join(`\\n${color.yellow(S_BAR)} `)}\\n${footer}\\n`;\n }\n default: {\n return `${title}${color.cyan(S_BAR)} ${limitOptions({\n output: opts.output,\n options: this.options,\n cursor: this.cursor,\n maxItems: opts.maxItems,\n style: styleOption,\n }).join(`\\n${color.cyan(S_BAR)} `)}\\n${color.cyan(S_BAR_END)}\\n`;\n }\n }\n },\n }).prompt() as Promise<Array<Value> | symbol>;\n};\n\n\n\n/// ////\n\nconst prompts = {\n confirm,\n select,\n multiselect,\n};\n\nexport default prompts;\n","import fs from 'node:fs/promises';\nimport {\n envSpecUpdater, ParsedEnvSpecFile, ParsedEnvSpecStaticValue,\n} from '@env-spec/parser';\n\n\nexport type DetectedEnvFile = {\n fileName: string,\n fullPath: string,\n parsedFile: ParsedEnvSpecFile\n};\n\nconst PUBLIC_PREFIXES = [\n 'PUBLIC',\n 'VITE',\n 'NEXT_PUBLIC',\n 'NUXT_PUBLIC',\n];\nconst PUBLIC_KEYWORDS = ['PUBLIC'];\nconst SENSITIVE_KEYWORDS = [\n 'SECRET',\n 'API_KEY',\n 'PASSWORD',\n 'TOKEN',\n 'PRIVATE',\n 'CREDENTIALS',\n];\n\nfunction isValidUrl(val: string) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const u = new URL(val);\n return true;\n } catch (err) {\n return false;\n }\n}\n\nconst EMAIL_REGEX = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nconst VALID_NUMBER_REGEX = /^(0|([1-9][0-9]*))?(\\.[0-9]+)?$/;\n\n\nfunction inferItemDecorators(file: ParsedEnvSpecFile, itemKey: string, valueStr: string) {\n // infer @sensitive\n let itemIsPublic = false;\n if (PUBLIC_PREFIXES.some((prefix) => itemKey.startsWith(prefix))) itemIsPublic = true;\n if (PUBLIC_KEYWORDS.some((keyword) => itemKey.includes(keyword))) itemIsPublic = true;\n\n let itemIsSensitive = false;\n if (SENSITIVE_KEYWORDS.some((keyword) => itemKey.includes(keyword))) itemIsSensitive = true;\n\n if (itemIsPublic) {\n // not marking these for now, since we've already made the default not sensitive\n // envSpecUpdater.setItemDecorator(file, itemKey, 'sensitive', 'false');\n } else if (itemIsSensitive) {\n envSpecUpdater.setItemDecorator(file, itemKey, 'sensitive', 'true');\n }\n\n // infer @type\n // > from key\n if (itemKey === 'PORT' || itemKey.endsWith('_PORT')) {\n envSpecUpdater.setItemDecorator(file, itemKey, 'type', 'port');\n } else if (itemKey.endsWith('_EMAIL')) {\n envSpecUpdater.setItemDecorator(file, itemKey, 'type', 'email');\n } else if (itemKey.endsWith('_URL') || itemKey.endsWith('_URI')) {\n envSpecUpdater.setItemDecorator(file, itemKey, 'type', 'url');\n\n\n // > from value\n } else if (valueStr) {\n // move obvious examples to @example\n if (valueStr.startsWith('<') && valueStr.endsWith('>')) {\n envSpecUpdater.setItemDecorator(file, itemKey, 'example', valueStr);\n // remove example from value\n }\n\n if (valueStr === 'true' || valueStr === 'false') {\n envSpecUpdater.setItemDecorator(file, itemKey, 'type', 'boolean');\n } else if (EMAIL_REGEX.test(valueStr)) {\n envSpecUpdater.setItemDecorator(file, itemKey, 'type', 'email');\n } else if (valueStr !== '0' && valueStr !== '1' && VALID_NUMBER_REGEX.test(valueStr)) {\n envSpecUpdater.setItemDecorator(file, itemKey, 'type', 'number');\n } else if (isValidUrl(valueStr)) {\n envSpecUpdater.setItemDecorator(file, itemKey, 'type', 'url');\n }\n // TODO: more...\n }\n}\n\nexport function inferSchemaUpdates(file: ParsedEnvSpecFile) {\n for (const item of file.configItems) {\n const valueStr = (\n item.value instanceof ParsedEnvSpecStaticValue && item.value.value?.toString()\n ) || '';\n // console.log(item.key, '-', valueStr);\n inferItemDecorators(file, item.key, valueStr);\n }\n}\n\n\nexport function ensureAllItemsExist(schemaFile: ParsedEnvSpecFile, otherFiles: Array<DetectedEnvFile>) {\n const addedItemKeys: Array<string> = [];\n for (const otherFile of otherFiles) {\n for (const item of otherFile.parsedFile.configItems) {\n const itemInSchema = schemaFile.configItems.find((i) => i.key === item.key);\n if (itemInSchema) continue;\n\n if (addedItemKeys.length === 0) {\n envSpecUpdater.injectFromStr(schemaFile, [\n '',\n '# items added to schema by `varlock init`',\n '# that were missing in example, but detected in other .env files',\n '# PLEASE REVIEW THESE!',\n '# ---',\n '',\n ].join('\\n'), { location: 'end' });\n }\n addedItemKeys.push(item.key);\n envSpecUpdater.injectFromStr(schemaFile, `${item.key}=`);\n const itemValue = (\n item.value instanceof ParsedEnvSpecStaticValue && item.value.value?.toString()\n ) || '';\n inferItemDecorators(schemaFile, item.key, String(itemValue));\n }\n }\n}\n\nexport async function detectRedundantValues(\n schemaFile: ParsedEnvSpecFile,\n otherFiles: Record<string, DetectedEnvFile>,\n opts: { delete?: boolean } = {},\n) {\n const redundantItemsBySourcePath: Record<string, Array<string>> = {};\n const schemaValues = schemaFile.toSimpleObj();\n for (const otherFile of Object.values(otherFiles)) {\n if (\n otherFile.fileName.startsWith('.env.schema')\n || otherFile.fileName.startsWith('.env.example')\n || otherFile.fileName.startsWith('.env.sample')\n || otherFile.fileName.startsWith('.env.default')\n ) continue;\n\n const otherFileValues = otherFile.parsedFile.toSimpleObj();\n for (const itemKey in otherFileValues) {\n if (!(itemKey in schemaValues)) continue;\n if (otherFileValues[itemKey] !== schemaValues[itemKey]) continue;\n\n redundantItemsBySourcePath[otherFile.fullPath] ||= [];\n redundantItemsBySourcePath[otherFile.fullPath].push(itemKey);\n if (opts.delete) {\n envSpecUpdater.deleteItem(otherFile.parsedFile, itemKey);\n }\n }\n\n if (opts.delete) {\n await fs.writeFile(otherFile.fullPath, otherFile.parsedFile.toString(), 'utf8');\n }\n }\n\n return redundantItemsBySourcePath;\n}\n","import path from 'node:path';\nimport fs from 'node:fs/promises';\n\n// our tool may generate some additional files which we want to ignore\nconst SKIP_FILE_TYPES = ['.md', '.d.ts'];\n\nexport async function findEnvFiles(opts?: {\n cwd?: string,\n}) {\n const cwd = opts?.cwd || process.cwd();\n\n const envFiles = [];\n\n const filesWithinDir = await fs.readdir(cwd);\n\n // Filter for files starting with .env and check if they exist\n for (const fileName of filesWithinDir) {\n if (fileName === '.env' || fileName.startsWith('.env.')) { // this ignores `.envrc` files\n let skip = false;\n for (const fileType of SKIP_FILE_TYPES) {\n if (fileName.endsWith(fileType)) skip = true;\n }\n if (skip) continue;\n envFiles.push(path.join(cwd, fileName));\n }\n }\n\n // TODO: we may want to look up or down the folder tree?\n // TODO: we could support looking within specific directories (\"config\", \"env\", etc)\n\n return envFiles;\n}\n","/* eslint-disable @stylistic/quotes */\nimport path from 'node:path';\nimport fs from 'node:fs/promises';\nimport ansis from 'ansis';\nimport { isCancel, select } from '@clack/prompts';\nimport { define } from 'gunshi';\nimport { gracefulExit } from 'exit-hook';\n\nimport { envSpecUpdater, parseEnvSpecDotEnvFile } from '@env-spec/parser';\nimport { checkIsFileGitIgnored } from '@env-spec/utils/git-utils';\nimport { pathExists } from '@env-spec/utils/fs-utils';\nimport _ from '@env-spec/utils/my-dash';\n\nimport prompts from '../helpers/prompts';\nimport { fmt, logLines } from '../helpers/pretty-format';\nimport {\n detectRedundantValues, ensureAllItemsExist, inferSchemaUpdates, type DetectedEnvFile,\n} from '../helpers/infer-schema';\nimport { detectJsPackageManager, installJsDependency } from '../helpers/js-package-manager-utils';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport { findEnvFiles } from '../helpers/find-env-files';\nimport { tryCatch } from '@env-spec/utils/try-catch';\n\nexport const commandSpec = define({\n name: 'init',\n description: 'Set up varlock in the current project',\n args: {},\n examples: `\nThis command starts an interactive onboarding process to help you get started with Varlock.\nIt will:\n - Scan for existing .env files in your project\n - Help create a .env.schema file from your .env.example or .env.sample file\n - Install varlock as a dependency in package.json (if applicable)\n\n📍 Run this command in directories that contain .env or .env.* files\n\nExamples:\n varlock init # Run in the current directory\n cd path/to/your/project && varlock init\n\nFor more information, visit https://varlock.dev/getting-started/installation\n `.trim(),\n});\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n const jsPackageManager = detectJsPackageManager();\n\n console.log('🧙 Hello and welcome to Varlock 🔒🔥✨');\n\n // scan for all .env files within current directory\n const envFilePaths = await findEnvFiles();\n const parsedEnvFiles: Record<string, DetectedEnvFile> = {};\n for (const filePath of envFilePaths) {\n const fileContents = await fs.readFile(filePath, 'utf-8');\n const fileName = path.basename(filePath);\n const parsedFile = await tryCatch(async () => parseEnvSpecDotEnvFile(fileContents), () => {\n logLines([\n '',\n `Unable to parse ${fmt.filePath(filePath)}`,\n 'This file will be skipped.',\n ]);\n });\n if (!parsedFile) {\n continue;\n }\n parsedEnvFiles[fileName] = {\n fileName,\n fullPath: filePath,\n parsedFile,\n };\n }\n\n const existingSchemaFile = parsedEnvFiles['.env.schema'];\n\n // * SET UP SCHEMA ---------------------------------------------\n if (existingSchemaFile) {\n // for now - we don't do anything if they already have a schema set up\n // in the future, we may want to add more tools for projects that are already set up\n logLines([\n `It looks like you already have a ${fmt.fileName('.env.schema')} file 🎉`,\n 'This init helper is meant to help you get a new project set up.',\n 'If you need to make changes to your schema or values, you can update your files directly.',\n 'See more docs at https://varlock.dev/guides/schema',\n ]);\n } else {\n const allExampleFileNames = Object.keys(parsedEnvFiles).filter((fileName) => {\n return fileName.startsWith('.env.example') || fileName.startsWith('.env.sample');\n });\n let exampleFileToConvert: typeof parsedEnvFiles[keyof typeof parsedEnvFiles] | undefined;\n\n if (allExampleFileNames.length === 1) {\n exampleFileToConvert = parsedEnvFiles[allExampleFileNames[0]];\n } else if (allExampleFileNames.length > 1) {\n console.log('');\n // not quite sure about this, but we'll just let them select one\n const selectedExample = await select({\n message: `We detected more than one example .env file. Which one should we use to create your new ${fmt.fileName('.env.schema')}?`,\n options: allExampleFileNames.map((fileName) => ({\n label: fileName,\n value: parsedEnvFiles[fileName],\n })),\n });\n if (isCancel(selectedExample)) return gracefulExit(0);\n exampleFileToConvert = selectedExample;\n }\n\n // update the schema\n const parsedEnvSchemaFile = exampleFileToConvert?.parsedFile || parseEnvSpecDotEnvFile('');\n if (!parsedEnvSchemaFile) throw new Error('expected parsed .env example file');\n envSpecUpdater.ensureHeader(parsedEnvSchemaFile, [\n 'This env file uses @env-spec - see https://varlock.dev/env-spec for more info',\n '',\n // TODO: add env spec version? real links?\n ].join('\\n'));\n envSpecUpdater.setRootDecorator(parsedEnvSchemaFile, 'defaultRequired', 'infer', { explicitTrue: true });\n envSpecUpdater.setRootDecorator(parsedEnvSchemaFile, 'defaultSensitive', 'false', { explicitTrue: true });\n // TODO: detect js/ts project before adding this\n envSpecUpdater.setRootDecorator(parsedEnvSchemaFile, 'generateTypes', 'lang=ts, path=env.d.ts', { bareFnArgs: true });\n // envSpecUpdater.setRootDecorator(parsedEnvFile, 'envFlag', 'APP_ENV', { comment: 'controls automatic loading of env-specific files (e.g. .env.test, .env.prod, etc.)' });\n\n // add example item\n envSpecUpdater.injectFromStr(parsedEnvSchemaFile, [\n '',\n '# example env variable injected by `varlock init` ⚠️ DELETE THIS ITEM! ⚠️',\n '# @required @sensitive @example=\"example value\"',\n 'EXAMPLE_ITEM=\"delete me!\"',\n '',\n ].join('\\n'), { location: 'after_header' });\n // update some decorators based on some simple heuristics\n inferSchemaUpdates(parsedEnvSchemaFile);\n // add items we find in other env files, but are missing in the schema/example\n ensureAllItemsExist(parsedEnvSchemaFile, Object.values(parsedEnvFiles));\n\n // write new updated schema file\n const schemaFilePath = path.join(process.cwd(), '.env.schema');\n await fs.writeFile(schemaFilePath, parsedEnvSchemaFile.toString());\n\n // log new schema file path\n if (exampleFileToConvert) {\n logLines([\n '',\n `Your ${fmt.fileName(exampleFileToConvert.fileName)} has been used to generate your new ${fmt.fileName('.env.schema')}:`,\n fmt.filePath(schemaFilePath),\n ]);\n } else {\n logLines([\n '',\n `Your new ${fmt.fileName('.env.schema')} file has been created:`,\n fmt.filePath(schemaFilePath),\n ]);\n }\n\n // make sure .env.schema is not gitignored\n if (await checkIsFileGitIgnored(schemaFilePath)) {\n // maybe could do this silently? it's relatively harmless\n logLines([ansis.dim(`(and updated ${fmt.fileName('.gitignore')} to ensure it will be tracked by git)`)]);\n await fs.appendFile('.gitignore', '\\n!.env.schema');\n }\n\n // ask them to review and confirm\n logLines([\n '',\n ansis.bold(`🚧 Please review and update your new ${fmt.fileName('.env.schema')} file! 🚧`),\n `We've done our best to get you started, but you must review and make sure it is correct!`,\n '',\n `👉 Some helpful pointers to get you started:`,\n `- add a description to each item when the name is not self explanitory - it will come through in generated types`,\n `- use ${fmt.decorator('@required')} (or ${fmt.decorator('@optional')}) to tag items that should fail validation when empty`,\n `- use ${fmt.decorator('@sensitive')} to tag items that contain sensitive secrets, and must be handled accordingly`,\n `- use ${fmt.decorator('@type')} to set an item's data type (if not a basic string), which affects validation and coercion logic`,\n `- if an item value is a ${ansis.italic('useful example')} rather than a default, use ${fmt.decorator('@example')}`,\n `- if an item value is just a dummy placeholder, delete it`,\n ]);\n const confirmReviewed = await prompts.confirm({\n message: `Have you reviewed and updated your new ${fmt.fileName('.env.schema')} file?`,\n });\n if (isCancel(confirmReviewed)) return gracefulExit(0);\n\n // reload the graph\n const reloadedSchemaFile = await parseEnvSpecDotEnvFile(await fs.readFile(schemaFilePath, 'utf-8'));\n\n // check if they removed the EXAMPLE_ITEM and warn them\n if (reloadedSchemaFile.configItems.find((i) => i.key === 'EXAMPLE_ITEM')) {\n logLines([\n '',\n ansis.bold(`🚨 Really? ${ansis.red(\"You didn't remove the EXAMPLE_ITEM!\")}`),\n `Please make sure your schema is all correct before using it...`,\n ]);\n }\n\n // delete the example file if they want us to\n if (exampleFileToConvert) {\n const confirmDeleteExample = await prompts.confirm({\n message: `Should we delete your ${fmt.fileName(exampleFileToConvert.fileName)} file? ${ansis.italic.gray('(you can always do this yourself later)')}`,\n });\n if (isCancel(confirmDeleteExample)) return gracefulExit(0);\n if (confirmDeleteExample) {\n await fs.unlink(exampleFileToConvert.fullPath);\n }\n }\n\n // recommendation to delete defaults file\n const defaultsFile = Object.values(parsedEnvFiles).find((f) => {\n return f.fileName.startsWith('.env.default'); // also covers \".env.defaults\"\n });\n if (defaultsFile) {\n logLines([\n '',\n `🚧 We detected a ${fmt.fileName(defaultsFile.fileName)} file in your project`,\n `You should migrate these default values into ${fmt.fileName('.env.schema')} and delete it.`,\n ]);\n }\n\n // detect and remove redundant defaults that are now in the schema\n const redundantInfo = await detectRedundantValues(parsedEnvSchemaFile, parsedEnvFiles);\n if (Object.keys(redundantInfo).length > 0) {\n logLines([\n '',\n ansis.bold('‼️ Now that your schema contains defaults, some values in your other .env files are redundant:'),\n ]);\n for (const [sourcePath, itemKeys] of Object.entries(redundantInfo)) {\n console.log(fmt.filePath(sourcePath));\n console.log(' ', itemKeys.map((k) => ansis.italic(k)).join(', '));\n }\n\n const confirmDeleteRedundant = await prompts.confirm({\n message: 'Should we delete these redundant values from your other .env files?',\n });\n if (isCancel(confirmDeleteRedundant)) return gracefulExit(0);\n if (confirmDeleteRedundant) {\n await detectRedundantValues(parsedEnvSchemaFile, parsedEnvFiles, { delete: true });\n }\n }\n\n // final success!\n logLines([\n '',\n ansis.bold('🎉 Great!'),\n `You can run ${fmt.command('varlock load', { jsPackageManager })} to attempt loading your env vars validate against your new schema.`,\n '',\n 'Check out our docs for more info about integrating into your application.',\n '',\n '📖 https://varlock.dev 👈',\n '',\n ]);\n }\n\n // * MAKE SURE VARLOCK IS INSTALLED ------------------------------------------\n if (jsPackageManager && await pathExists(path.join(process.cwd(), 'package.json'))) {\n const installResult = installJsDependency({\n packageManager: jsPackageManager.name,\n packageName: 'varlock',\n });\n if (installResult) {\n logLines([\n '',\n `✅ Added ${fmt.packageName('varlock')} as a dependency in your package.json`,\n ]);\n }\n }\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/run.command.ts"],"names":[],"mappings":"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","file":"chunk-NDRSG3XS.js","sourcesContent":["import { execa, type ResultPromise } from 'execa';\nimport which from 'which';\nimport { define } from 'gunshi';\nimport { gracefulExit } from 'exit-hook';\n\nimport { loadVarlockEnvGraph } from '../../lib/load-graph';\nimport { checkForConfigErrors, checkForSchemaErrors } from '../helpers/error-checks';\nimport { type TypedGunshiCommandFn } from '../helpers/gunshi-type-utils';\nimport { resetRedactionMap, redactSensitiveConfig } from '../../runtime/env';\n\n\nexport const commandSpec = define({\n name: 'run',\n description: 'Run a command with your environment variables injected',\n args: {\n // watch: {\n // type: 'boolean',\n // short: 'w',\n // description: 'Watch mode',\n // },\n 'no-redact-stdout': {\n type: 'boolean',\n description: 'Disable stdout/stderr redaction to preserve TTY detection for interactive tools',\n },\n },\n examples: `\nExecutes a command in a child process, injecting your resolved and validated environment\nvariables from your .env files. Useful when a code-level integration is not possible.\n\nExamples:\n varlock run -- node app.js # Run a Node.js application\n varlock run -- python script.py # Run a Python script\n varlock run -- sh -c 'echo $MY_VAR' # Use shell expansion for env vars\n varlock run --no-redact-stdout -- psql # Preserve TTY for interactive tools\n\n📍 Important: Use -- to separate varlock options from your command\n\n💡 Tip: For shell expansion of env vars, use: sh -c 'your command here'\n💡 Tip: Use --no-redact-stdout for interactive tools (psql, claude, etc.)\n `.trim(),\n});\n\nlet commandProcess: ResultPromise | undefined;\nlet childCommandKilledFromRestart = false;\nconst isWatchModeRestart = false; // TODO: re-enable watch mode\n\nexport const commandFn: TypedGunshiCommandFn<typeof commandSpec> = async (ctx) => {\n // if \"--\" is present, split the args into our command and the rest, which will be another external command\n const argv = process.argv.slice(2);\n let restCommandArgs: Array<string> = [];\n if (argv.includes('--')) {\n const doubleDashIndex = argv.indexOf('--');\n restCommandArgs = argv.slice(doubleDashIndex + 1);\n } else {\n throw new Error('No command to run! Your command should look like `varlock run -- <your-command>`');\n }\n const commandToRunAsArgs = restCommandArgs;\n const commandToRunStr = restCommandArgs.join(' ');\n\n const rawCommand = commandToRunAsArgs[0];\n const commandArgsOnly = commandToRunAsArgs.slice(1);\n const pathAwareCommand = which.sync(rawCommand, { nothrow: true });\n\n // const isWatchEnabled = ctx.values.watch;\n const isWatchEnabled = false;\n\n // console.log('running command', pathAwareCommand || rawCommand, commandArgsOnly);\n\n\n const envGraph = await loadVarlockEnvGraph();\n checkForSchemaErrors(envGraph);\n await envGraph.resolveEnvValues();\n checkForConfigErrors(envGraph);\n\n // will fail above if there are any errors\n\n const resolvedEnv = envGraph.getResolvedEnvObject();\n const serializedGraph = envGraph.getSerializedGraph();\n // console.log(resolvedEnv);\n\n // needs more thought here\n const fullInjectedEnv = {\n ...process.env,\n ...resolvedEnv,\n __VARLOCK_RUN: '1', // flag for a child process to detect it is runnign via `varlock run`\n __VARLOCK_ENV: JSON.stringify(serializedGraph),\n };\n\n const redactLogs = serializedGraph.settings?.redactLogs ?? true;\n const noRedactStdout = ctx.values['no-redact-stdout'] ?? false;\n\n // Initialize the redaction map if redaction is enabled\n if (redactLogs) {\n resetRedactionMap(serializedGraph);\n }\n\n // When --no-redact-stdout is set, use stdio: 'inherit' to preserve TTY detection\n // Otherwise, pipe stdout/stderr through redaction\n if (noRedactStdout) {\n commandProcess = execa(pathAwareCommand || rawCommand, commandArgsOnly, {\n stdio: 'inherit',\n env: fullInjectedEnv,\n });\n } else {\n // Helper to redact and write output\n const writeRedacted = (stream: NodeJS.WriteStream, chunk: Buffer | string) => {\n const str = chunk.toString();\n stream.write(redactLogs ? redactSensitiveConfig(str) : str);\n };\n\n commandProcess = execa(pathAwareCommand || rawCommand, commandArgsOnly, {\n stdin: 'inherit',\n stdout: 'pipe',\n stderr: 'pipe',\n env: fullInjectedEnv,\n });\n\n // Pipe stdout and stderr through redaction\n commandProcess.stdout?.on('data', (chunk) => writeRedacted(process.stdout, chunk));\n commandProcess.stderr?.on('data', (chunk) => writeRedacted(process.stderr, chunk));\n }\n // console.log('PARENT PID = ', process.pid);\n // console.log('CHILD PID = ', commandProcess.pid);\n\n // if first run, we need to attach some extra exit handling\n if (!isWatchModeRestart) {\n // try to make sure we shut down cleanly and kill the child process\n process.on('exit', (_code: any, _signal: any) => {\n // if (childCommandKilledFromRestart) {\n // childCommandKilledFromRestart = false;\n // return;\n // }\n // console.log('exit!', code, signal);\n commandProcess?.kill(9);\n });\n\n ['SIGTERM', 'SIGINT'].forEach((signal) => {\n process.on(signal, () => {\n // console.log('SIGNAL = ', signal);\n commandProcess?.kill(9);\n gracefulExit(1);\n });\n });\n // TODO: handle other signals?\n }\n\n\n let exitCode: any; // TODO: fix this any\n try {\n const commandResult = await commandProcess;\n exitCode = commandResult.exitCode;\n } catch (error) {\n // console.log('child command error!', error);\n if ((error as any).signal === 'SIGINT' && childCommandKilledFromRestart) {\n // console.log('child command failed due to being killed form restart');\n childCommandKilledFromRestart = false;\n return;\n }\n\n // console.log('child command result error', error);\n if ((error as any).signal === 'SIGINT' || (error as any).signal === 'SIGKILL') {\n gracefulExit(1);\n } else {\n console.log((error as Error).message);\n console.log(`command [${commandToRunStr}] failed`);\n console.log('try running the same command without dmno');\n console.log('if you get a different result, dmno may be the problem...');\n // console.log(`Please report issue here: <${REPORT_ISSUE_LINK}>`);\n }\n exitCode = (error as any).exitCode || 1;\n }\n\n if (isWatchEnabled) {\n if (!childCommandKilledFromRestart) {\n if (exitCode === 0) {\n console.log('\\n✅ command completed successfully');\n } else {\n console.log(`\\n💥 command failed - exit code = ${exitCode}`);\n }\n }\n }\n\n if (!isWatchEnabled) {\n return gracefulExit(exitCode);\n } else {\n console.log('... watching for changes ...');\n }\n};\n"]}
|