create-qorechain-dapp 0.3.0 → 0.4.0
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/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/README.md +1 -0
- package/templates/rollup-app/README.md +53 -0
- package/templates/rollup-app/package.json +20 -0
- package/templates/rollup-app/src/index.ts +131 -0
- package/templates/rollup-app/tsconfig.json +17 -0
package/dist/index.js
CHANGED
|
@@ -660,6 +660,12 @@ var TEMPLATES = [
|
|
|
660
660
|
label: "Full-stack web (Vite + React)",
|
|
661
661
|
hint: "A minimal Vite + React dApp using @qorechain/sdk to read balances and tokenomics.",
|
|
662
662
|
language: "typescript"
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
id: "rollup-app",
|
|
666
|
+
label: "Rollup + multilayer app",
|
|
667
|
+
hint: "A rollup + sidechain/paychain app using the RollupClient and multilayer helper from @qorechain/sdk.",
|
|
668
|
+
language: "typescript"
|
|
663
669
|
}
|
|
664
670
|
];
|
|
665
671
|
function findTemplate(id) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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","../src/index.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/ansi-regex@6.1.0/node_modules/ansi-regex/index.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/eastasianwidth@0.2.0/node_modules/eastasianwidth/eastasianwidth.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/emoji-regex@9.2.2/node_modules/emoji-regex/index.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/string-width@5.1.2/node_modules/string-width/index.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/ansi-styles@6.2.1/node_modules/ansi-styles/index.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/wrap-ansi@8.1.0/node_modules/wrap-ansi/index.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/prompt.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/confirm.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/group-multiselect.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/multi-select.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/password.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/select.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/select-key.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/text.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/utils.ts","../../node_modules/.pnpm/@clack+prompts@0.7.0/node_modules/@clack/prompts/dist/index.mjs","../src/templates.ts","../src/args.ts","../src/scaffold.ts"],"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","/**\n * `create-qorechain-dapp` entry point.\n *\n * Parses flags (non-interactive / CI mode) and falls back to interactive prompts\n * for any missing inputs. All scaffolding side effects are delegated to the pure\n * {@link scaffold} function in `./scaffold`.\n */\nimport { existsSync, readdirSync } from \"node:fs\";\nimport { basename, resolve } from \"node:path\";\n\nimport {\n cancel,\n intro,\n isCancel,\n log,\n note,\n outro,\n select,\n text,\n} from \"@clack/prompts\";\nimport pc from \"picocolors\";\n\nimport { ArgError, helpText, parseArgs } from \"./args.js\";\nimport {\n scaffold,\n type Network,\n type PackageManager,\n} from \"./scaffold.js\";\nimport { findTemplate, TEMPLATES, templateIdList } from \"./templates.js\";\n\nconst VERSION = \"0.1.0\";\n\nfunction isEmptyOrMissing(dir: string): boolean {\n if (!existsSync(dir)) return true;\n return readdirSync(dir).length === 0;\n}\n\n/** Validate a directory name segment for a project name fallback. */\nfunction defaultProjectName(dir: string): string {\n const base = basename(resolve(dir));\n // npm package names: lowercase, no spaces.\n return base\n .toLowerCase()\n .replace(/[^a-z0-9-~._]/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .replace(/-+/g, \"-\") || \"qorechain-dapp\";\n}\n\nasync function promptDir(initial?: string): Promise<string> {\n if (initial) return initial;\n const value = await text({\n message: \"Where should we create your project?\",\n placeholder: \"./my-qorechain-dapp\",\n defaultValue: \"./my-qorechain-dapp\",\n validate: (v) => {\n const dir = v || \"./my-qorechain-dapp\";\n if (!isEmptyOrMissing(resolve(dir))) {\n return `Directory ${dir} already exists and is not empty.`;\n }\n return undefined;\n },\n });\n if (isCancel(value)) bail();\n return (value as string) || \"./my-qorechain-dapp\";\n}\n\nasync function promptTemplate(initial?: string): Promise<string> {\n if (initial) {\n if (!findTemplate(initial)) {\n cancel(`Unknown template \"${initial}\". Available: ${templateIdList()}.`);\n process.exit(1);\n }\n return initial;\n }\n const value = await select({\n message: \"Pick a template\",\n options: TEMPLATES.map((t) => ({\n value: t.id,\n label: t.label,\n hint: t.hint,\n })),\n });\n if (isCancel(value)) bail();\n return value as string;\n}\n\nasync function promptNetwork(initial?: Network): Promise<Network> {\n if (initial) return initial;\n const value = await select({\n message: \"Which network?\",\n options: [\n { value: \"testnet\", label: \"testnet\", hint: \"qorechain-diana\" },\n { value: \"mainnet\", label: \"mainnet\", hint: \"qorechain-vladi\" },\n ],\n initialValue: \"testnet\",\n });\n if (isCancel(value)) bail();\n return value as Network;\n}\n\nasync function promptPackageManager(\n initial?: PackageManager,\n): Promise<PackageManager> {\n if (initial) return initial;\n const value = await select({\n message: \"Package manager?\",\n options: [\n { value: \"pnpm\", label: \"pnpm\" },\n { value: \"npm\", label: \"npm\" },\n { value: \"yarn\", label: \"yarn\" },\n ],\n initialValue: \"pnpm\",\n });\n if (isCancel(value)) bail();\n return value as PackageManager;\n}\n\nfunction bail(): never {\n cancel(\"Operation cancelled.\");\n process.exit(0);\n}\n\nfunction nextSteps(\n dir: string,\n pm: PackageManager,\n installed: boolean,\n template: string,\n): string {\n const lines: string[] = [`cd ${dir}`];\n if (!installed) lines.push(`${pm} install`);\n const run = pm === \"npm\" ? \"npm run\" : pm;\n if (template === \"fullstack-web\") {\n lines.push(`${run} dev`);\n } else {\n lines.push(`${run} deploy # see README for prerequisites`);\n }\n return lines.join(\"\\n\");\n}\n\nasync function main(): Promise<void> {\n const argv = process.argv.slice(2);\n let parsed;\n try {\n parsed = parseArgs(argv);\n } catch (err) {\n if (err instanceof ArgError) {\n console.error(pc.red(err.message));\n console.error(`\\nRun ${pc.cyan(\"create-qorechain-dapp --help\")} for usage.`);\n process.exit(1);\n }\n throw err;\n }\n\n if (parsed.help) {\n console.log(helpText());\n return;\n }\n if (parsed.version) {\n console.log(VERSION);\n return;\n }\n\n intro(pc.bgCyan(pc.black(\" create-qorechain-dapp \")));\n\n // Resolve each input: flags first, then prompts (unless --yes fills defaults).\n const dir = parsed.dir ?? (parsed.yes ? \"./my-qorechain-dapp\" : await promptDir());\n const template =\n parsed.template ??\n (parsed.yes ? TEMPLATES[0].id : await promptTemplate());\n // Validate the (possibly flag-provided) template eagerly.\n if (!findTemplate(template)) {\n cancel(`Unknown template \"${template}\". Available: ${templateIdList()}.`);\n process.exit(1);\n }\n const network =\n parsed.network ?? (parsed.yes ? \"testnet\" : await promptNetwork());\n const packageManager =\n parsed.packageManager ??\n (parsed.yes ? \"pnpm\" : await promptPackageManager());\n\n const projectName = defaultProjectName(dir);\n\n // In interactive mode, default install to the flag (true unless --no-install).\n const install = parsed.install;\n\n try {\n if (install) log.step(\"Scaffolding and installing dependencies…\");\n else log.step(\"Scaffolding…\");\n\n const result = scaffold({\n template,\n targetDir: dir,\n projectName,\n packageManager,\n network,\n install,\n local: parsed.local,\n });\n\n if (parsed.local) {\n note(\n \"Dependencies were rewritten to local file: links into this monorepo.\\n\" +\n \"Build the workspace packages first (pnpm -r build at the repo root).\",\n \"Local mode\",\n );\n }\n\n note(nextSteps(dir, packageManager, result.installed, template), \"Next steps\");\n outro(pc.green(`Done! Created ${projectName} at ${result.targetDir}`));\n } catch (err) {\n cancel(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n}\n\nmain().catch((err: unknown) => {\n console.error(err instanceof Error ? err.stack ?? err.message : err);\n process.exit(1);\n});\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","import type { Key, ReadLine } from 'node:readline';\n\nimport { stdin, stdout } from 'node:process';\nimport readline from 'node:readline';\nimport { Readable, Writable } from 'node:stream';\nimport { WriteStream } from 'node:tty';\nimport { cursor, erase } from 'sisteransi';\nimport wrap from 'wrap-ansi';\n\nfunction 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\nconst cancel = Symbol('clack:cancel');\nexport function isCancel(value: unknown): value is symbol {\n\treturn value === cancel;\n}\n\nfunction setRawMode(input: Readable, value: boolean) {\n\tif ((input as typeof stdin).isTTY) (input as typeof stdin).setRawMode(value);\n}\n\nconst aliases = new Map([\n\t['k', 'up'],\n\t['j', 'down'],\n\t['h', 'left'],\n\t['l', 'right'],\n]);\nconst keys = new Set(['up', 'down', 'left', 'right', 'space', 'enter']);\n\nexport interface PromptOptions<Self extends Prompt> {\n\trender(this: Omit<Self, 'prompt'>): string | void;\n\tplaceholder?: string;\n\tinitialValue?: any;\n\tvalidate?: ((value: any) => string | void) | undefined;\n\tinput?: Readable;\n\toutput?: Writable;\n\tdebug?: boolean;\n}\n\nexport type State = 'initial' | 'active' | 'cancel' | 'submit' | 'error';\n\nexport default class Prompt {\n\tprotected input: Readable;\n\tprotected output: Writable;\n\tprivate rl!: ReadLine;\n\tprivate opts: Omit<PromptOptions<Prompt>, 'render' | 'input' | 'output'>;\n\tprivate _track: boolean = false;\n\tprivate _render: (context: Omit<Prompt, 'prompt'>) => string | void;\n\tprotected _cursor: number = 0;\n\n\tpublic state: State = 'initial';\n\tpublic value: any;\n\tpublic error: string = '';\n\n\tconstructor(\n\t\t{ render, input = stdin, output = stdout, ...opts }: PromptOptions<Prompt>,\n\t\ttrackValue: boolean = true\n\t) {\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\n\t\tthis.input = input;\n\t\tthis.output = output;\n\t}\n\n\tpublic prompt() {\n\t\tconst sink = new WriteStream(0);\n\t\tsink._write = (chunk, encoding, done) => {\n\t\t\tif (this._track) {\n\t\t\t\tthis.value = this.rl.line.replace(/\\t/g, '');\n\t\t\t\tthis._cursor = this.rl.cursor;\n\t\t\t\tthis.emit('value', this.value);\n\t\t\t}\n\t\t\tdone();\n\t\t};\n\t\tthis.input.pipe(sink);\n\n\t\tthis.rl = readline.createInterface({\n\t\t\tinput: this.input,\n\t\t\toutput: sink,\n\t\t\ttabSize: 2,\n\t\t\tprompt: '',\n\t\t\tescapeCodeTimeout: 50,\n\t\t});\n\t\treadline.emitKeypressEvents(this.input, this.rl);\n\t\tthis.rl.prompt();\n\t\tif (this.opts.initialValue !== undefined && this._track) {\n\t\t\tthis.rl.write(this.opts.initialValue);\n\t\t}\n\n\t\tthis.input.on('keypress', this.onKeypress);\n\t\tsetRawMode(this.input, true);\n\t\tthis.output.on('resize', this.render);\n\n\t\tthis.render();\n\n\t\treturn new Promise<string | symbol>((resolve, reject) => {\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);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate subscribers = new Map<string, { cb: (...args: any) => any; once?: boolean }[]>();\n\tpublic on(event: string, cb: (...args: any) => any) {\n\t\tconst arr = this.subscribers.get(event) ?? [];\n\t\tarr.push({ cb });\n\t\tthis.subscribers.set(event, arr);\n\t}\n\tpublic once(event: string, cb: (...args: any) => any) {\n\t\tconst arr = this.subscribers.get(event) ?? [];\n\t\tarr.push({ cb, once: true });\n\t\tthis.subscribers.set(event, arr);\n\t}\n\tpublic emit(event: string, ...data: any[]) {\n\t\tconst cbs = this.subscribers.get(event) ?? [];\n\t\tconst cleanup: (() => void)[] = [];\n\t\tfor (const subscriber of cbs) {\n\t\t\tsubscriber.cb(...data);\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\t\tfor (const cb of cleanup) {\n\t\t\tcb();\n\t\t}\n\t}\n\tprivate unsubscribe() {\n\t\tthis.subscribers.clear();\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 && !this._track && aliases.has(key.name)) {\n\t\t\tthis.emit('cursor', aliases.get(key.name));\n\t\t}\n\t\tif (key?.name && keys.has(key.name)) {\n\t\t\tthis.emit('cursor', key.name);\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;\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\t\tif (char === '\\x03') {\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.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 _prevFrame = '';\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} else if (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, { 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 ? true : false;\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, { PromptOptions } from './prompt';\n\ninterface GroupMultiSelectOptions<T extends { value: any }>\n\textends PromptOptions<GroupMultiSelectPrompt<T>> {\n\toptions: Record<string, T[]>;\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n}\nexport default class GroupMultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: (T & { group: string | boolean })[];\n\tcursor: number = 0;\n\n\tgetGroupItems(group: string): T[] {\n\t\treturn this.options.filter((o) => o.group === group);\n\t}\n\n\tisGroupSelected(group: string) {\n\t\tconst items = this.getGroupItems(group);\n\t\treturn items.every((i) => this.value.includes(i.value));\n\t}\n\n\tprivate toggleValue() {\n\t\tconst item = this.options[this.cursor];\n\t\tif (item.group === true) {\n\t\t\tconst group = item.value;\n\t\t\tconst groupedItems = this.getGroupItems(group);\n\t\t\tif (this.isGroupSelected(group)) {\n\t\t\t\tthis.value = this.value.filter(\n\t\t\t\t\t(v: string) => groupedItems.findIndex((i) => i.value === v) === -1\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.value = [...this.value, ...groupedItems.map((i) => i.value)];\n\t\t\t}\n\t\t\tthis.value = Array.from(new Set(this.value));\n\t\t} else {\n\t\t\tconst selected = this.value.includes(item.value);\n\t\t\tthis.value = selected\n\t\t\t\t? this.value.filter((v: T['value']) => v !== item.value)\n\t\t\t\t: [...this.value, item.value];\n\t\t}\n\t}\n\n\tconstructor(opts: GroupMultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\t\tconst { options } = opts;\n\t\tthis.options = Object.entries(options).flatMap(([key, option]) => [\n\t\t\t{ value: key, group: true, label: key },\n\t\t\t...option.map((opt) => ({ ...opt, group: key })),\n\t\t]) as any;\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\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 Prompt, { 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: number = 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, { 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, { 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: number = 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 Prompt, { PromptOptions } from './prompt';\n\ninterface SelectKeyOptions<T extends { value: any }> extends PromptOptions<SelectKeyPrompt<T>> {\n\toptions: T[];\n}\nexport default class SelectKeyPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor: number = 0;\n\n\tconstructor(opts: SelectKeyOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tconst keys = this.options.map(({ value: [initial] }) => initial?.toLowerCase());\n\t\tthis.cursor = Math.max(keys.indexOf(opts.initialValue), 0);\n\n\t\tthis.on('key', (key) => {\n\t\t\tif (!keys.includes(key)) return;\n\t\t\tconst value = this.options.find(({ value: [initial] }) => initial?.toLowerCase() === key);\n\t\t\tif (value) {\n\t\t\t\tthis.value = value.value;\n\t\t\t\tthis.state = 'submit';\n\t\t\t\tthis.emit('submit');\n\t\t\t}\n\t\t});\n\t}\n}\n","import color from 'picocolors';\nimport Prompt, { PromptOptions } from './prompt';\n\nexport interface TextOptions extends PromptOptions<TextPrompt> {\n\tplaceholder?: string;\n\tdefaultValue?: string;\n}\n\nexport default class TextPrompt extends Prompt {\n\tvalueWithCursor = '';\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tconstructor(opts: TextOptions) {\n\t\tsuper(opts);\n\n\t\tthis.on('finalize', () => {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.value = opts.defaultValue;\n\t\t\t}\n\t\t\tthis.valueWithCursor = this.value;\n\t\t});\n\t\tthis.on('value', () => {\n\t\t\tif (this.cursor >= this.value.length) {\n\t\t\t\tthis.valueWithCursor = `${this.value}${color.inverse(color.hidden('_'))}`;\n\t\t\t} else {\n\t\t\t\tconst s1 = this.value.slice(0, this.cursor);\n\t\t\t\tconst s2 = this.value.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 type { Key } from 'node:readline';\n\nimport { stdin, stdout } from 'node:process';\nimport * as readline from 'node:readline';\nimport { cursor } from 'sisteransi';\n\nconst isWindows = globalThis.process.platform.startsWith('win');\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 }: Key) => {\n\t\tconst str = String(data);\n\t\tif (str === '\\x03') {\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\tlet dx = name === 'return' ? 0 : -1;\n\t\tlet 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/natemoo-re/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{TextPrompt as V,PasswordPrompt as j,ConfirmPrompt as N,SelectPrompt as k,SelectKeyPrompt as W,MultiSelectPrompt as D,GroupMultiSelectPrompt as L,isCancel as G,block as F}from\"@clack/core\";export{isCancel}from\"@clack/core\";import h from\"node:process\";import e from\"picocolors\";import{cursor as T,erase as A}from\"sisteransi\";function q(){return h.platform!==\"win32\"?h.env.TERM!==\"linux\":Boolean(h.env.CI)||Boolean(h.env.WT_SESSION)||Boolean(h.env.TERMINUS_SUBLIME)||h.env.ConEmuTask===\"{cmd::Cmder}\"||h.env.TERM_PROGRAM===\"Terminus-Sublime\"||h.env.TERM_PROGRAM===\"vscode\"||h.env.TERM===\"xterm-256color\"||h.env.TERM===\"alacritty\"||h.env.TERMINAL_EMULATOR===\"JetBrains-JediTerm\"}const _=q(),o=(r,n)=>_?r:n,H=o(\"\\u25C6\",\"*\"),I=o(\"\\u25A0\",\"x\"),x=o(\"\\u25B2\",\"x\"),S=o(\"\\u25C7\",\"o\"),K=o(\"\\u250C\",\"T\"),a=o(\"\\u2502\",\"|\"),d=o(\"\\u2514\",\"\\u2014\"),b=o(\"\\u25CF\",\">\"),E=o(\"\\u25CB\",\" \"),C=o(\"\\u25FB\",\"[\\u2022]\"),w=o(\"\\u25FC\",\"[+]\"),M=o(\"\\u25FB\",\"[ ]\"),U=o(\"\\u25AA\",\"\\u2022\"),B=o(\"\\u2500\",\"-\"),Z=o(\"\\u256E\",\"+\"),z=o(\"\\u251C\",\"+\"),X=o(\"\\u256F\",\"+\"),J=o(\"\\u25CF\",\"\\u2022\"),Y=o(\"\\u25C6\",\"*\"),Q=o(\"\\u25B2\",\"!\"),ee=o(\"\\u25A0\",\"x\"),y=r=>{switch(r){case\"initial\":case\"active\":return e.cyan(H);case\"cancel\":return e.red(I);case\"error\":return e.yellow(x);case\"submit\":return e.green(S)}},te=r=>new V({validate:r.validate,placeholder:r.placeholder,defaultValue:r.defaultValue,initialValue:r.initialValue,render(){const n=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`,i=r.placeholder?e.inverse(r.placeholder[0])+e.dim(r.placeholder.slice(1)):e.inverse(e.hidden(\"_\")),t=this.value?this.valueWithCursor:i;switch(this.state){case\"error\":return`${n.trim()}\n${e.yellow(a)} ${t}\n${e.yellow(d)} ${e.yellow(this.error)}\n`;case\"submit\":return`${n}${e.gray(a)} ${e.dim(this.value||r.placeholder)}`;case\"cancel\":return`${n}${e.gray(a)} ${e.strikethrough(e.dim(this.value??\"\"))}${this.value?.trim()?`\n`+e.gray(a):\"\"}`;default:return`${n}${e.cyan(a)} ${t}\n${e.cyan(d)}\n`}}}).prompt(),re=r=>new j({validate:r.validate,mask:r.mask??U,render(){const n=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`,i=this.valueWithCursor,t=this.masked;switch(this.state){case\"error\":return`${n.trim()}\n${e.yellow(a)} ${t}\n${e.yellow(d)} ${e.yellow(this.error)}\n`;case\"submit\":return`${n}${e.gray(a)} ${e.dim(t)}`;case\"cancel\":return`${n}${e.gray(a)} ${e.strikethrough(e.dim(t??\"\"))}${t?`\n`+e.gray(a):\"\"}`;default:return`${n}${e.cyan(a)} ${i}\n${e.cyan(d)}\n`}}}).prompt(),se=r=>{const n=r.active??\"Yes\",i=r.inactive??\"No\";return new N({active:n,inactive:i,initialValue:r.initialValue??!0,render(){const t=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`,s=this.value?n:i;switch(this.state){case\"submit\":return`${t}${e.gray(a)} ${e.dim(s)}`;case\"cancel\":return`${t}${e.gray(a)} ${e.strikethrough(e.dim(s))}\n${e.gray(a)}`;default:return`${t}${e.cyan(a)} ${this.value?`${e.green(b)} ${n}`:`${e.dim(E)} ${e.dim(n)}`} ${e.dim(\"/\")} ${this.value?`${e.dim(E)} ${e.dim(i)}`:`${e.green(b)} ${i}`}\n${e.cyan(d)}\n`}}}).prompt()},ie=r=>{const n=(t,s)=>{const c=t.label??String(t.value);return s===\"active\"?`${e.green(b)} ${c} ${t.hint?e.dim(`(${t.hint})`):\"\"}`:s===\"selected\"?`${e.dim(c)}`:s===\"cancelled\"?`${e.strikethrough(e.dim(c))}`:`${e.dim(E)} ${e.dim(c)}`};let i=0;return new k({options:r.options,initialValue:r.initialValue,render(){const t=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`;switch(this.state){case\"submit\":return`${t}${e.gray(a)} ${n(this.options[this.cursor],\"selected\")}`;case\"cancel\":return`${t}${e.gray(a)} ${n(this.options[this.cursor],\"cancelled\")}\n${e.gray(a)}`;default:{const s=r.maxItems===void 0?1/0:Math.max(r.maxItems,5);this.cursor>=i+s-3?i=Math.max(Math.min(this.cursor-s+3,this.options.length-s),0):this.cursor<i+2&&(i=Math.max(this.cursor-2,0));const c=s<this.options.length&&i>0,l=s<this.options.length&&i+s<this.options.length;return`${t}${e.cyan(a)} ${this.options.slice(i,i+s).map((u,m,$)=>m===0&&c?e.dim(\"...\"):m===$.length-1&&l?e.dim(\"...\"):n(u,m+i===this.cursor?\"active\":\"inactive\")).join(`\n${e.cyan(a)} `)}\n${e.cyan(d)}\n`}}}}).prompt()},ne=r=>{const n=(i,t=\"inactive\")=>{const s=i.label??String(i.value);return t===\"selected\"?`${e.dim(s)}`:t===\"cancelled\"?`${e.strikethrough(e.dim(s))}`:t===\"active\"?`${e.bgCyan(e.gray(` ${i.value} `))} ${s} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:`${e.gray(e.bgWhite(e.inverse(` ${i.value} `)))} ${s} ${i.hint?e.dim(`(${i.hint})`):\"\"}`};return new W({options:r.options,initialValue:r.initialValue,render(){const i=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`;switch(this.state){case\"submit\":return`${i}${e.gray(a)} ${n(this.options.find(t=>t.value===this.value),\"selected\")}`;case\"cancel\":return`${i}${e.gray(a)} ${n(this.options[0],\"cancelled\")}\n${e.gray(a)}`;default:return`${i}${e.cyan(a)} ${this.options.map((t,s)=>n(t,s===this.cursor?\"active\":\"inactive\")).join(`\n${e.cyan(a)} `)}\n${e.cyan(d)}\n`}}}).prompt()},ae=r=>{const n=(i,t)=>{const s=i.label??String(i.value);return t===\"active\"?`${e.cyan(C)} ${s} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:t===\"selected\"?`${e.green(w)} ${e.dim(s)}`:t===\"cancelled\"?`${e.strikethrough(e.dim(s))}`:t===\"active-selected\"?`${e.green(w)} ${s} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:t===\"submitted\"?`${e.dim(s)}`:`${e.dim(M)} ${e.dim(s)}`};return new D({options:r.options,initialValues:r.initialValues,required:r.required??!0,cursorAt:r.cursorAt,validate(i){if(this.required&&i.length===0)return`Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){let i=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`;switch(this.state){case\"submit\":return`${i}${e.gray(a)} ${this.options.filter(({value:t})=>this.value.includes(t)).map(t=>n(t,\"submitted\")).join(e.dim(\", \"))||e.dim(\"none\")}`;case\"cancel\":{const t=this.options.filter(({value:s})=>this.value.includes(s)).map(s=>n(s,\"cancelled\")).join(e.dim(\", \"));return`${i}${e.gray(a)} ${t.trim()?`${t}\n${e.gray(a)}`:\"\"}`}case\"error\":{const t=this.error.split(`\n`).map((s,c)=>c===0?`${e.yellow(d)} ${e.yellow(s)}`:` ${s}`).join(`\n`);return i+e.yellow(a)+\" \"+this.options.map((s,c)=>{const l=this.value.includes(s.value),u=c===this.cursor;return u&&l?n(s,\"active-selected\"):l?n(s,\"selected\"):n(s,u?\"active\":\"inactive\")}).join(`\n${e.yellow(a)} `)+`\n`+t+`\n`}default:return`${i}${e.cyan(a)} ${this.options.map((t,s)=>{const c=this.value.includes(t.value),l=s===this.cursor;return l&&c?n(t,\"active-selected\"):c?n(t,\"selected\"):n(t,l?\"active\":\"inactive\")}).join(`\n${e.cyan(a)} `)}\n${e.cyan(d)}\n`}}}).prompt()},ce=r=>{const n=(i,t,s=[])=>{const c=i.label??String(i.value),l=typeof i.group==\"string\",u=l&&(s[s.indexOf(i)+1]??{group:!0}),m=l&&u.group===!0,$=l?`${m?d:a} `:\"\";return t===\"active\"?`${e.dim($)}${e.cyan(C)} ${c} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:t===\"group-active\"?`${$}${e.cyan(C)} ${e.dim(c)}`:t===\"group-active-selected\"?`${$}${e.green(w)} ${e.dim(c)}`:t===\"selected\"?`${e.dim($)}${e.green(w)} ${e.dim(c)}`:t===\"cancelled\"?`${e.strikethrough(e.dim(c))}`:t===\"active-selected\"?`${e.dim($)}${e.green(w)} ${c} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:t===\"submitted\"?`${e.dim(c)}`:`${e.dim($)}${e.dim(M)} ${e.dim(c)}`};return new L({options:r.options,initialValues:r.initialValues,required:r.required??!0,cursorAt:r.cursorAt,validate(i){if(this.required&&i.length===0)return`Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){let i=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`;switch(this.state){case\"submit\":return`${i}${e.gray(a)} ${this.options.filter(({value:t})=>this.value.includes(t)).map(t=>n(t,\"submitted\")).join(e.dim(\", \"))}`;case\"cancel\":{const t=this.options.filter(({value:s})=>this.value.includes(s)).map(s=>n(s,\"cancelled\")).join(e.dim(\", \"));return`${i}${e.gray(a)} ${t.trim()?`${t}\n${e.gray(a)}`:\"\"}`}case\"error\":{const t=this.error.split(`\n`).map((s,c)=>c===0?`${e.yellow(d)} ${e.yellow(s)}`:` ${s}`).join(`\n`);return`${i}${e.yellow(a)} ${this.options.map((s,c,l)=>{const u=this.value.includes(s.value)||s.group===!0&&this.isGroupSelected(`${s.value}`),m=c===this.cursor;return!m&&typeof s.group==\"string\"&&this.options[this.cursor].value===s.group?n(s,u?\"group-active-selected\":\"group-active\",l):m&&u?n(s,\"active-selected\",l):u?n(s,\"selected\",l):n(s,m?\"active\":\"inactive\",l)}).join(`\n${e.yellow(a)} `)}\n${t}\n`}default:return`${i}${e.cyan(a)} ${this.options.map((t,s,c)=>{const l=this.value.includes(t.value)||t.group===!0&&this.isGroupSelected(`${t.value}`),u=s===this.cursor;return!u&&typeof t.group==\"string\"&&this.options[this.cursor].value===t.group?n(t,l?\"group-active-selected\":\"group-active\",c):u&&l?n(t,\"active-selected\",c):l?n(t,\"selected\",c):n(t,u?\"active\":\"inactive\",c)}).join(`\n${e.cyan(a)} `)}\n${e.cyan(d)}\n`}}}).prompt()},R=r=>r.replace(me(),\"\"),le=(r=\"\",n=\"\")=>{const i=`\n${r}\n`.split(`\n`),t=R(n).length,s=Math.max(i.reduce((l,u)=>(u=R(u),u.length>l?u.length:l),0),t)+2,c=i.map(l=>`${e.gray(a)} ${e.dim(l)}${\" \".repeat(s-R(l).length)}${e.gray(a)}`).join(`\n`);process.stdout.write(`${e.gray(a)}\n${e.green(S)} ${e.reset(n)} ${e.gray(B.repeat(Math.max(s-t-1,1))+Z)}\n${c}\n${e.gray(z+B.repeat(s+2)+X)}\n`)},ue=(r=\"\")=>{process.stdout.write(`${e.gray(d)} ${e.red(r)}\n\n`)},oe=(r=\"\")=>{process.stdout.write(`${e.gray(K)} ${r}\n`)},$e=(r=\"\")=>{process.stdout.write(`${e.gray(a)}\n${e.gray(d)} ${r}\n\n`)},f={message:(r=\"\",{symbol:n=e.gray(a)}={})=>{const i=[`${e.gray(a)}`];if(r){const[t,...s]=r.split(`\n`);i.push(`${n} ${t}`,...s.map(c=>`${e.gray(a)} ${c}`))}process.stdout.write(`${i.join(`\n`)}\n`)},info:r=>{f.message(r,{symbol:e.blue(J)})},success:r=>{f.message(r,{symbol:e.green(Y)})},step:r=>{f.message(r,{symbol:e.green(S)})},warn:r=>{f.message(r,{symbol:e.yellow(Q)})},warning:r=>{f.warn(r)},error:r=>{f.message(r,{symbol:e.red(ee)})}},de=()=>{const r=_?[\"\\u25D2\",\"\\u25D0\",\"\\u25D3\",\"\\u25D1\"]:[\"\\u2022\",\"o\",\"O\",\"0\"],n=_?80:120;let i,t,s=!1,c=\"\";const l=(v=\"\")=>{s=!0,i=F(),c=v.replace(/\\.+$/,\"\"),process.stdout.write(`${e.gray(a)}\n`);let g=0,p=0;t=setInterval(()=>{const O=e.magenta(r[g]),P=\".\".repeat(Math.floor(p)).slice(0,3);process.stdout.write(T.move(-999,0)),process.stdout.write(A.down(1)),process.stdout.write(`${O} ${c}${P}`),g=g+1<r.length?g+1:0,p=p<r.length?p+.125:0},n)},u=(v=\"\",g=0)=>{c=v??c,s=!1,clearInterval(t);const p=g===0?e.green(S):g===1?e.red(I):e.red(x);process.stdout.write(T.move(-999,0)),process.stdout.write(A.down(1)),process.stdout.write(`${p} ${c}\n`),i()},m=(v=\"\")=>{c=v??c},$=v=>{const g=v>1?\"Something went wrong\":\"Canceled\";s&&u(g,v)};return process.on(\"uncaughtExceptionMonitor\",()=>$(2)),process.on(\"unhandledRejection\",()=>$(2)),process.on(\"SIGINT\",()=>$(1)),process.on(\"SIGTERM\",()=>$(1)),process.on(\"exit\",$),{start:l,stop:u,message:m}};function me(){const r=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\"].join(\"|\");return new RegExp(r,\"g\")}const he=async(r,n)=>{const i={},t=Object.keys(r);for(const s of t){const c=r[s],l=await c({results:i})?.catch(u=>{throw u});if(typeof n?.onCancel==\"function\"&&G(l)){i[s]=\"canceled\",n.onCancel({results:i});continue}i[s]=l}return i};export{ue as cancel,se as confirm,he as group,ce as groupMultiselect,oe as intro,f as log,ae as multiselect,le as note,$e as outro,re as password,ie as select,ne as selectKey,de as spinner,te as text};\n","/**\n * Template registry.\n *\n * Each entry describes a starter template that lives in the monorepo's\n * `templates/<dir>` directory (copied into this package at build time). The\n * registry is structured so more languages/templates can be added later without\n * touching the scaffolding logic.\n */\n\n/** A language a template targets. Only TypeScript ships today. */\nexport type TemplateLanguage = \"typescript\";\n\n/** A scaffoldable starter template. */\nexport interface TemplateInfo {\n /** Registry id and on-disk directory name under `templates/`. */\n id: string;\n /** Short human label shown in the interactive picker. */\n label: string;\n /** One-line description. */\n hint: string;\n /** Source language. */\n language: TemplateLanguage;\n}\n\n/** All templates the CLI can scaffold. */\nexport const TEMPLATES: readonly TemplateInfo[] = [\n {\n id: \"evm-solidity\",\n label: \"EVM + Solidity\",\n hint: \"A Solidity contract with a viem deploy/interact script using @qorechain/evm.\",\n language: \"typescript\",\n },\n {\n id: \"fullstack-web\",\n label: \"Full-stack web (Vite + React)\",\n hint: \"A minimal Vite + React dApp using @qorechain/sdk to read balances and tokenomics.\",\n language: \"typescript\",\n },\n] as const;\n\n/** Look up a template by id, or `undefined` if unknown. */\nexport function findTemplate(id: string): TemplateInfo | undefined {\n return TEMPLATES.find((t) => t.id === id);\n}\n\n/** Comma-separated list of valid template ids, for error messages. */\nexport function templateIdList(): string {\n return TEMPLATES.map((t) => t.id).join(\", \");\n}\n","/**\n * Hand-rolled, dependency-free argument parser for the CLI. Kept separate from\n * the prompt I/O so it can be unit-tested directly.\n */\nimport type { Network, PackageManager } from \"./scaffold.js\";\nimport { TEMPLATES } from \"./templates.js\";\n\n/** Parsed CLI arguments. */\nexport interface ParsedArgs {\n /** Positional target directory (project dir), if given. */\n dir?: string;\n /** `--template <name>`. */\n template?: string;\n /** `--network <testnet|mainnet>`. */\n network?: Network;\n /** `--package-manager <pnpm|npm|yarn>`. */\n packageManager?: PackageManager;\n /** `--yes`: skip prompts, use defaults. */\n yes: boolean;\n /** `--no-install`: skip dependency install. */\n install: boolean;\n /** `--local`: rewrite @qorechain/* deps to file: links into the monorepo. */\n local: boolean;\n /** `--help`. */\n help: boolean;\n /** `--version`. */\n version: boolean;\n}\n\nconst VALID_PM: readonly PackageManager[] = [\"pnpm\", \"npm\", \"yarn\"];\nconst VALID_NETWORK: readonly Network[] = [\"testnet\", \"mainnet\"];\n\n/** Thrown for malformed CLI input; carries a user-facing message. */\nexport class ArgError extends Error {}\n\nfunction expectValue(name: string, value: string | undefined): string {\n if (value === undefined) throw new ArgError(`Missing value for ${name}.`);\n return value;\n}\n\n/**\n * Parse argv (excluding `node` and the script path). Throws {@link ArgError}\n * on malformed input.\n */\nexport function parseArgs(argv: readonly string[]): ParsedArgs {\n const out: ParsedArgs = {\n yes: false,\n install: true,\n local: false,\n help: false,\n version: false,\n };\n\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n switch (arg) {\n case \"-h\":\n case \"--help\":\n out.help = true;\n break;\n case \"-v\":\n case \"--version\":\n out.version = true;\n break;\n case \"-y\":\n case \"--yes\":\n out.yes = true;\n break;\n case \"--install\":\n out.install = true;\n break;\n case \"--no-install\":\n out.install = false;\n break;\n case \"--local\":\n out.local = true;\n break;\n case \"--template\":\n case \"-t\":\n out.template = expectValue(\"--template\", argv[++i]);\n break;\n case \"--network\":\n out.network = parseNetwork(expectValue(\"--network\", argv[++i]));\n break;\n case \"--package-manager\":\n case \"--pm\":\n out.packageManager = parsePackageManager(\n expectValue(\"--package-manager\", argv[++i]),\n );\n break;\n default: {\n if (arg.startsWith(\"--template=\")) {\n out.template = arg.slice(\"--template=\".length);\n } else if (arg.startsWith(\"--network=\")) {\n out.network = parseNetwork(arg.slice(\"--network=\".length));\n } else if (arg.startsWith(\"--package-manager=\")) {\n out.packageManager = parsePackageManager(\n arg.slice(\"--package-manager=\".length),\n );\n } else if (arg.startsWith(\"-\")) {\n throw new ArgError(`Unknown option: ${arg}`);\n } else if (out.dir === undefined) {\n out.dir = arg;\n } else {\n throw new ArgError(`Unexpected argument: ${arg}`);\n }\n }\n }\n }\n\n return out;\n}\n\nfunction parsePackageManager(value: string): PackageManager {\n if ((VALID_PM as readonly string[]).includes(value)) {\n return value as PackageManager;\n }\n throw new ArgError(\n `Invalid --package-manager \"${value}\". Expected one of: ${VALID_PM.join(\", \")}.`,\n );\n}\n\nfunction parseNetwork(value: string): Network {\n if ((VALID_NETWORK as readonly string[]).includes(value)) {\n return value as Network;\n }\n throw new ArgError(\n `Invalid --network \"${value}\". Expected one of: ${VALID_NETWORK.join(\", \")}.`,\n );\n}\n\n/** The `--help` text. */\nexport function helpText(): string {\n const templates = TEMPLATES.map(\n (t) => ` ${t.id.padEnd(16)} ${t.hint}`,\n ).join(\"\\n\");\n return `create-qorechain-dapp — scaffold a new QoreChain dApp.\n\nUsage:\n npm create qorechain-dapp <dir> [options]\n npx create-qorechain-dapp <dir> [options]\n\nArguments:\n <dir> Target directory for the new project.\n\nOptions:\n -t, --template <name> Template to use. One of:\n${templates}\n --network <name> Network preset: testnet | mainnet.\n --package-manager <pm> Package manager: pnpm | npm | yarn.\n -y, --yes Skip prompts and use defaults.\n --no-install Do not install dependencies after scaffolding.\n --local Rewrite @qorechain/* deps to local file: links\n into this monorepo (for local/dev use before the\n packages are published to npm).\n -h, --help Show this help.\n -v, --version Print the version.\n\nExamples:\n npm create qorechain-dapp my-dapp -- --template evm-solidity\n npx create-qorechain-dapp my-dapp --template fullstack-web --yes\n npx create-qorechain-dapp my-dapp -t evm-solidity --local --no-install\n`;\n}\n","/**\n * Core scaffolding logic — pure and unit-testable, with no prompt I/O.\n *\n * `scaffold(...)` copies a template into a target directory, rewrites the\n * template's package.json name, generates `.env` from `.env.example`, optionally\n * rewrites `@qorechain/*` deps to local `file:` links, and optionally runs a\n * package-manager install. All side effects are confined to the target dir\n * (plus an optional `spawn` for install), so tests can drive it against a temp\n * dir with `install: false`.\n */\nimport { spawnSync } from \"node:child_process\";\nimport {\n cpSync,\n existsSync,\n mkdirSync,\n readFileSync,\n readdirSync,\n writeFileSync,\n} from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { findTemplate, templateIdList } from \"./templates.js\";\n\n/** Supported package managers. */\nexport type PackageManager = \"pnpm\" | \"npm\" | \"yarn\";\n\n/** Supported networks. */\nexport type Network = \"testnet\" | \"mainnet\";\n\n/** Options for {@link scaffold}. */\nexport interface ScaffoldOptions {\n /** Template id (must exist in the registry). */\n template: string;\n /** Absolute or relative target directory to create the project in. */\n targetDir: string;\n /** Project name written into the generated package.json. */\n projectName: string;\n /** Package manager to record/use. Defaults to `pnpm`. */\n packageManager?: PackageManager;\n /** Network preset. Defaults to `testnet`. */\n network?: Network;\n /** Run the package manager install after copying. Defaults to `false`. */\n install?: boolean;\n /**\n * Rewrite `@qorechain/*` dependencies to `file:` links into this monorepo so\n * the scaffolded project is runnable locally before the packages are\n * published. Defaults to `false` (keeps the published `^x.y.z` ranges).\n */\n local?: boolean;\n /**\n * Override the directory templates are resolved from. Primarily for tests.\n * When unset, templates are located relative to this package (see\n * {@link resolveTemplatesRoot}).\n */\n templatesRoot?: string;\n /**\n * Monorepo root used to compute `file:` links when `local` is set. Defaults\n * to the resolved repo root relative to this package.\n */\n monorepoRoot?: string;\n}\n\n/** Result of a successful {@link scaffold}. */\nexport interface ScaffoldResult {\n /** Absolute path to the created project. */\n targetDir: string;\n /** Whether install was run. */\n installed: boolean;\n /** Relative paths of the files written (sorted). */\n files: string[];\n}\n\nconst here = dirname(fileURLToPath(import.meta.url));\n\n/**\n * Locate the bundled `templates/` directory. Works both from source (where\n * templates live at the repo root, two levels up from `cli/src`) and from the\n * built/published package (where `copy-templates` placed them at `<pkg>/templates`).\n */\nexport function resolveTemplatesRoot(): string {\n // Built/published layout: dist/index.js → ../templates\n const bundled = resolve(here, \"..\", \"templates\");\n if (existsSync(bundled) && existsSync(join(bundled, \"evm-solidity\"))) {\n return bundled;\n }\n // Source layout: cli/src → ../../templates\n const sourceLevel = resolve(here, \"..\", \"..\", \"templates\");\n if (existsSync(sourceLevel) && existsSync(join(sourceLevel, \"evm-solidity\"))) {\n return sourceLevel;\n }\n // Fallback to the bundled path so the error message is actionable.\n return bundled;\n}\n\n/**\n * Locate the monorepo root (which contains `packages/`), used for `file:` links\n * in `--local` mode.\n */\nfunction resolveMonorepoRoot(): string {\n const candidates = [\n resolve(here, \"..\", \"..\"), // source: cli/src → repo root\n resolve(here, \"..\", \"..\", \"..\"), // dist/index.js variants\n ];\n for (const c of candidates) {\n if (existsSync(join(c, \"packages\", \"ts\", \"package.json\"))) return c;\n }\n return resolve(here, \"..\", \"..\");\n}\n\nconst COPY_SKIP = new Set([\"node_modules\", \"dist\", \".turbo\", \"coverage\"]);\n\n/** Recursively collect relative file paths under `root`. */\nfunction listFiles(root: string, base = root): string[] {\n const out: string[] = [];\n for (const entry of readdirSync(root, { withFileTypes: true })) {\n const full = join(root, entry.name);\n if (entry.isDirectory()) {\n out.push(...listFiles(full, base));\n } else {\n out.push(full.slice(base.length + 1));\n }\n }\n return out.sort();\n}\n\n/** Rewrite `@qorechain/*` deps in a parsed package.json to `file:` links. */\nfunction rewriteLocalDeps(\n pkg: Record<string, unknown>,\n monorepoRoot: string,\n): void {\n // Map of published package name → monorepo package dir.\n const localPackages: Record<string, string> = {\n \"@qorechain/sdk\": join(monorepoRoot, \"packages\", \"ts\"),\n \"@qorechain/evm\": join(monorepoRoot, \"packages\", \"evm\"),\n \"@qorechain/svm\": join(monorepoRoot, \"packages\", \"svm\"),\n };\n for (const section of [\"dependencies\", \"devDependencies\"] as const) {\n const deps = pkg[section] as Record<string, string> | undefined;\n if (!deps) continue;\n for (const name of Object.keys(deps)) {\n const dir = localPackages[name];\n if (dir) deps[name] = `file:${dir}`;\n }\n }\n}\n\n/** Install command for a given package manager. */\nfunction installCommand(pm: PackageManager): { cmd: string; args: string[] } {\n return { cmd: pm, args: [\"install\"] };\n}\n\n/**\n * Scaffold a project. Pure with respect to everything except the target dir\n * (and the optional install subprocess).\n *\n * @throws if the template is unknown or the target dir already exists and is\n * non-empty.\n */\nexport function scaffold(options: ScaffoldOptions): ScaffoldResult {\n const {\n template,\n projectName,\n packageManager = \"pnpm\",\n install = false,\n local = false,\n } = options;\n\n const info = findTemplate(template);\n if (!info) {\n throw new Error(\n `Unknown template \"${template}\". Available templates: ${templateIdList()}.`,\n );\n }\n\n const templatesRoot = options.templatesRoot ?? resolveTemplatesRoot();\n const templateDir = join(templatesRoot, info.id);\n if (!existsSync(templateDir)) {\n throw new Error(\n `Template \"${info.id}\" not found on disk at ${templateDir}. ` +\n `The package may be built incorrectly.`,\n );\n }\n\n const targetDir = resolve(options.targetDir);\n if (existsSync(targetDir)) {\n const entries = readdirSync(targetDir);\n if (entries.length > 0) {\n throw new Error(`Target directory is not empty: ${targetDir}`);\n }\n } else {\n mkdirSync(targetDir, { recursive: true });\n }\n\n // Copy template, skipping build artifacts.\n cpSync(templateDir, targetDir, {\n recursive: true,\n filter: (srcPath) => {\n const rel = srcPath.slice(templateDir.length + 1);\n const parts = rel.split(/[\\\\/]/);\n return !parts.some((p) => COPY_SKIP.has(p));\n },\n });\n\n // Rewrite package.json: name (+ optional local file: deps).\n const pkgPath = join(targetDir, \"package.json\");\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf8\")) as Record<\n string,\n unknown\n >;\n pkg.name = projectName;\n if (local) {\n rewriteLocalDeps(pkg, options.monorepoRoot ?? resolveMonorepoRoot());\n }\n writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n }\n\n // Generate .env from .env.example if present and .env absent.\n const envExample = join(targetDir, \".env.example\");\n const envPath = join(targetDir, \".env\");\n if (existsSync(envExample) && !existsSync(envPath)) {\n writeFileSync(envPath, readFileSync(envExample, \"utf8\"));\n }\n\n let installed = false;\n if (install) {\n const { cmd, args } = installCommand(packageManager);\n const res = spawnSync(cmd, args, {\n cwd: targetDir,\n stdio: \"inherit\",\n shell: process.platform === \"win32\",\n });\n if (res.status !== 0) {\n throw new Error(\n `Install failed (${cmd} ${args.join(\" \")}) with exit code ${res.status ?? \"unknown\"}.`,\n );\n }\n installed = true;\n }\n\n return { targetDir, installed, files: listFiles(targetDir) };\n}\n"],"mappings":"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,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACUA,KAAV,QACUA,KAAV,QACUA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACUA,KAAV,QACUA,KAAV,QACUA,KAAV,QACUA,KAAV,QACA,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACUA,KAAV,QACA,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACUA,KAAV,QACUA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACUA,KAAV,QACUA,KAAV,QACUA,KAAV,QACUA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACUA,KAAV,QACUA,KAAV,QACUA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,SACUA,KAAV,SACA,SAAUA,KAAaA,KAAa,SACpC,SAAUA,KAAaA,KAAa,SACpC,SAAUA,KAAaA,KAAa,SACpC,SAAUA,KAAaA,KAAa,SACpC,SAAUA,KAAaA,KAAa,SAC1BA,KAAV,SACA,UAAWA,KAAaA,KAAa,UACrC,UAAWA,KAAaA,KAAa,UACrC,UAAWA,KAAaA,KAAa,UACrC,UAAWA,KAAaA,KAAa,UACrC,UAAWA,KAAaA,KAAa,UACrC,UAAWA,KAAaA,KAAa,WACrC,WAAYA,KAAaA,KAAa,UAClC,MAGF;EAAA,GAGTL,EAAI,kBAAkB,SAASE,GAAW;AACxC,QAAII,IAAO,KAAK,eAAeJ,CAAS;AACxC,WAAII,KAAQ,OAAOA,KAAQ,OAAOA,KAAQ,MACjC,IAEA;EAAA;AAKX,WAASC,EAAcT,GAAQ;AAC7B,WAAOA,EAAO,MAAM,kDAAkD,KAAK,CAAA;EAC7E;AAEAE,IAAI,SAAS,SAASF,GAAQ;AAG5B,aAFIU,IAAaD,EAAcT,CAAM,GACjCW,KAAM,GACDC,IAAI,GAAGA,IAAIF,EAAW,QAAQE,IACrCD,CAAAA,KAAMA,KAAM,KAAK,gBAAgBD,EAAWE,CAAC,CAAC;AAEhD,WAAOD;EAAAA,GAGTT,EAAI,QAAQ,SAASW,GAAMC,GAAOC,IAAK;AACrC,cAAUb,EAAI,OAAOW,CAAI,GACzBC,IAAQA,KAAgB,GACxBC,KAAMA,MAAY,GACdD,IAAQ,MACRA,IAAQ,UAAUA,IAElBC,KAAM,MACNA,KAAM,UAAUA;AAKpB,aAHIC,IAAS,IACTC,IAAS,GACTC,IAAQT,EAAcI,CAAI,GACrBD,KAAI,GAAGA,KAAIM,EAAM,QAAQN,MAAK;AACrC,UAAIO,KAAOD,EAAMN,EAAC,GACdQ,KAAUlB,EAAI,OAAOiB,EAAI;AAC7B,UAAIF,KAAUH,KAASM,MAAW,IAAI,IAAI,GACtC,KAAIH,IAASG,MAAWL,GACpBC,MAAUG;UAEV;AAGRF,WAAUG;IACd;AACE,WAAOJ;EAAAA;AAAAA,GAAAA,CAAAA;AAAAA,IAAAA,IAAAA,EAAAA;AAAAA,IAAAA,IAAAA,EAAAA,CAAAA;ACnTT,IAAAK,KAAiB,WAAY;AAE3B,SAAO;AACT;AAAA,IAAA,KAAA,EAAA,EAAA;ACDe,SAASC,EAAYtB,IAAQuB,IAAU,CAAA,GAAI;AAYzD,MAXI,OAAOvB,MAAW,YAAYA,GAAO,WAAW,MAIpDuB,IAAU,EACT,mBAAmB,MACnB,GAAGA,EACL,GAECvB,KAASD,EAAUC,EAAM,GAErBA,GAAO,WAAW,GACrB,QAAO;AAGRA,EAAAA,KAASA,GAAO,QAAQqB,GAAY,GAAE,IAAI;AAE1C,QAAMG,IAA0BD,EAAQ,oBAAoB,IAAI;AAChE,MAAIE,IAAQ;AAEZ,aAAWrB,KAAaJ,IAAQ;AAC/B,UAAMO,KAAYH,EAAU,YAAY,CAAC;AAQzC,QALIG,MAAa,MAASA,MAAa,OAAQA,MAAa,OAKxDA,MAAa,OAASA,MAAa,IACtC;AAID,YADamB,EAAe,eAAetB,CAAS,GACxC;MACX,KAAK;MACL,KAAK;AACJqB,aAAS;AACT;MACD,KAAK;AACJA,aAASD;AACT;MACD;AACCC,aAAS;IACV;EACD;AAED,SAAOA;AACR;ACrDA,IAAME,IAAyB;AAA/B,IAEMC,IAAa,CAACC,KAAS,MAAMrB,OAAQ,QAAUA,IAAOqB,EAAM;AAFlE,IAIMC,IAAc,CAACD,KAAS,MAAMrB,OAAQ,QAAU,KAAKqB,EAAM,MAAMrB,CAAI;AAJ3E,IAMMuB,IAAc,CAACF,KAAS,MAAM,CAACG,GAAKC,GAAOC,MAAS,QAAU,KAAKL,EAAM,MAAMG,CAAG,IAAIC,CAAK,IAAIC,CAAI;AANzG,IAQMC,IAAS,EACd,UAAU,EACT,OAAO,CAAC,GAAG,CAAC,GAEZ,MAAM,CAAC,GAAG,EAAE,GACZ,KAAK,CAAC,GAAG,EAAE,GACX,QAAQ,CAAC,GAAG,EAAE,GACd,WAAW,CAAC,GAAG,EAAE,GACjB,UAAU,CAAC,IAAI,EAAE,GACjB,SAAS,CAAC,GAAG,EAAE,GACf,QAAQ,CAAC,GAAG,EAAE,GACd,eAAe,CAAC,GAAG,EAAE,EACrB,GACD,OAAO,EACN,OAAO,CAAC,IAAI,EAAE,GACd,KAAK,CAAC,IAAI,EAAE,GACZ,OAAO,CAAC,IAAI,EAAE,GACd,QAAQ,CAAC,IAAI,EAAE,GACf,MAAM,CAAC,IAAI,EAAE,GACb,SAAS,CAAC,IAAI,EAAE,GAChB,MAAM,CAAC,IAAI,EAAE,GACb,OAAO,CAAC,IAAI,EAAE,GAGd,aAAa,CAAC,IAAI,EAAE,GACpB,MAAM,CAAC,IAAI,EAAE,GACb,MAAM,CAAC,IAAI,EAAE,GACb,WAAW,CAAC,IAAI,EAAE,GAClB,aAAa,CAAC,IAAI,EAAE,GACpB,cAAc,CAAC,IAAI,EAAE,GACrB,YAAY,CAAC,IAAI,EAAE,GACnB,eAAe,CAAC,IAAI,EAAE,GACtB,YAAY,CAAC,IAAI,EAAE,GACnB,aAAa,CAAC,IAAI,EAAE,EACpB,GACD,SAAS,EACR,SAAS,CAAC,IAAI,EAAE,GAChB,OAAO,CAAC,IAAI,EAAE,GACd,SAAS,CAAC,IAAI,EAAE,GAChB,UAAU,CAAC,IAAI,EAAE,GACjB,QAAQ,CAAC,IAAI,EAAE,GACf,WAAW,CAAC,IAAI,EAAE,GAClB,QAAQ,CAAC,IAAI,EAAE,GACf,SAAS,CAAC,IAAI,EAAE,GAGhB,eAAe,CAAC,KAAK,EAAE,GACvB,QAAQ,CAAC,KAAK,EAAE,GAChB,QAAQ,CAAC,KAAK,EAAE,GAChB,aAAa,CAAC,KAAK,EAAE,GACrB,eAAe,CAAC,KAAK,EAAE,GACvB,gBAAgB,CAAC,KAAK,EAAE,GACxB,cAAc,CAAC,KAAK,EAAE,GACtB,iBAAiB,CAAC,KAAK,EAAE,GACzB,cAAc,CAAC,KAAK,EAAE,GACtB,eAAe,CAAC,KAAK,EAAE,EACvB,EACF;AAE6B,OAAO,KAAKA,EAAO,QAAQ;AACjD,IAAMC,KAAuB,OAAO,KAAKD,EAAO,KAAK;AAArD,IACME,KAAuB,OAAO,KAAKF,EAAO,OAAO;AACpC,CAAC,GAAGC,IAAsB,GAAGC,EAAoB;AAE3E,SAASC,KAAiB;AACzB,QAAMC,KAAQ,oBAAI;AAElB,aAAW,CAACC,GAAWC,CAAK,KAAK,OAAO,QAAQN,CAAM,GAAG;AACxD,eAAW,CAACO,GAAWC,CAAK,KAAK,OAAO,QAAQF,CAAK,EACpDN,GAAOO,CAAS,IAAI,EACnB,MAAM,QAAUC,EAAM,CAAC,CAAC,KACxB,OAAO,QAAUA,EAAM,CAAC,CAAC,IAC7B,GAEGF,EAAMC,CAAS,IAAIP,EAAOO,CAAS,GAEnCH,GAAM,IAAII,EAAM,CAAC,GAAGA,EAAM,CAAC,CAAC;AAG7B,WAAO,eAAeR,GAAQK,GAAW,EACxC,OAAOC,GACP,YAAY,MACf,CAAG;EACD;AAED,SAAA,OAAO,eAAeN,GAAQ,SAAS,EACtC,OAAOI,IACP,YAAY,MACd,CAAE,GAEDJ,EAAO,MAAM,QAAQ,YACrBA,EAAO,QAAQ,QAAQ,YAEvBA,EAAO,MAAM,OAAOP,EAAAA,GACpBO,EAAO,MAAM,UAAUL,EAAAA,GACvBK,EAAO,MAAM,UAAUJ,EAAAA,GACvBI,EAAO,QAAQ,OAAOP,EAAWD,CAAsB,GACvDQ,EAAO,QAAQ,UAAUL,EAAYH,CAAsB,GAC3DQ,EAAO,QAAQ,UAAUJ,EAAYJ,CAAsB,GAG3D,OAAO,iBAAiBQ,GAAQ,EAC/B,cAAc,EACb,OAAO,CAACH,GAAKC,GAAOC,MAGfF,MAAQC,KAASA,MAAUC,IAC1BF,IAAM,IACF,KAGJA,IAAM,MACF,MAGD,KAAK,OAAQA,IAAM,KAAK,MAAO,EAAE,IAAI,MAGtC,KACH,KAAK,KAAK,MAAMA,IAAM,MAAM,CAAC,IAC7B,IAAI,KAAK,MAAMC,IAAQ,MAAM,CAAC,IAC/B,KAAK,MAAMC,IAAO,MAAM,CAAC,GAE7B,YAAY,MACZ,GACD,UAAU,EACT,OAAOU,OAAO;AACb,UAAMC,IAAU,yBAAyB,KAAKD,EAAI,SAAS,EAAE,CAAC;AAC9D,QAAI,CAACC,EACJ,QAAO,CAAC,GAAG,GAAG,CAAC;AAGhB,QAAI,CAACC,CAAW,IAAID;AAEhBC,MAAY,WAAW,MAC1BA,IAAc,CAAC,GAAGA,CAAW,EAAE,IAAI1C,CAAAA,OAAaA,KAAYA,EAAS,EAAE,KAAK,EAAE;AAG/E,UAAM2C,IAAU,OAAO,SAASD,GAAa,EAAE;AAE/C,WAAO,CAELC,KAAW,KAAM,KACjBA,KAAW,IAAK,KACjBA,IAAU,GAEf;EACI,GACD,YAAY,MACZ,GACD,cAAc,EACb,OAAOH,OAAOT,EAAO,aAAa,GAAGA,EAAO,SAASS,CAAG,CAAC,GACzD,YAAY,MACZ,GACD,eAAe,EACd,OAAOpC,OAAQ;AACd,QAAIA,IAAO,EACV,QAAO,KAAKA;AAGb,QAAIA,IAAO,GACV,QAAO,MAAMA,IAAO;AAGrB,QAAIwB,GACAC,GACAC;AAEJ,QAAI1B,KAAQ,IACXwB,OAASxB,IAAO,OAAO,KAAM,KAAK,KAClCyB,IAAQD,GACRE,IAAOF;SACD;AACNxB,WAAQ;AAER,YAAMwC,IAAYxC,IAAO;AAEzBwB,UAAM,KAAK,MAAMxB,IAAO,EAAE,IAAI,GAC9ByB,IAAQ,KAAK,MAAMe,IAAY,CAAC,IAAI,GACpCd,IAAQc,IAAY,IAAK;IACzB;AAED,UAAMC,KAAQ,KAAK,IAAIjB,GAAKC,GAAOC,CAAI,IAAI;AAE3C,QAAIe,OAAU,EACb,QAAO;AAIR,QAAIjC,IAAS,MAAO,KAAK,MAAMkB,CAAI,KAAK,IAAM,KAAK,MAAMD,CAAK,KAAK,IAAK,KAAK,MAAMD,CAAG;AAEtF,WAAIiB,OAAU,MACbjC,KAAU,KAGJA;EACP,GACD,YAAY,MACZ,GACD,WAAW,EACV,OAAO,CAACgB,GAAKC,GAAOC,MAASC,EAAO,cAAcA,EAAO,aAAaH,GAAKC,GAAOC,CAAI,CAAC,GACvF,YAAY,MACZ,GACD,WAAW,EACV,OAAOU,OAAOT,EAAO,cAAcA,EAAO,aAAaS,CAAG,CAAC,GAC3D,YAAY,MACZ,EACH,CAAE,GAEMT;AACR;AAEA,IAAMe,KAAaZ,GAAgB;AAAnC,ICxNMa,IAAU,oBAAI,IAAI,CACvB,QACA,MACD,CAAC;ADqND,ICnNMC,KAAW;ADmNjB,IClNMC,IAAmB;ADkNzB,ICjNMC,IAAW;ADiNjB,IChNMC,KAAW;ADgNjB,IC/MMC,IAAsB;AD+M5B,IC9MMC,IAAmB,GAAGF,EAAQ;AD8MpC,IC5MMG,IAAelD,CAAAA,OAAQ,GAAG2C,EAAQ,OAAQ,EAAC,KAAI,EAAG,KAAK,GAAGG,CAAQ,GAAG9C,EAAI,GAAGgD,CAAmB;AD4MrG,IC3MMG,IAAoBC,CAAAA,OAAO,GAAGT,EAAQ,OAAQ,EAAC,KAAI,EAAG,KAAK,GAAGM,CAAgB,GAAGG,EAAG,GAAGP,CAAgB;AD2M7G,ICvMMQ,KAAc7D,CAAAA,OAAUA,GAAO,MAAM,GAAG,EAAE,IAAII,OAAakB,EAAYlB,CAAS,CAAC;ADuMvF,ICnMM0D,IAAW,CAACC,IAAMC,GAAMC,MAAY;AACzC,QAAMvD,IAAa,CAAC,GAAGsD,CAAI;AAE3B,MAAIE,IAAiB,OACjBC,KAAqB,OACrBC,IAAU9C,EAAYvB,EAAUgE,GAAKA,GAAK,SAAS,CAAC,CAAC,CAAC;AAE1D,aAAW,CAACM,GAAOjE,CAAS,KAAKM,EAAW,QAAO,GAAI;AACtD,UAAM4D,KAAkBhD,EAAYlB,CAAS;AAc7C,QAZIgE,IAAUE,MAAmBL,IAChCF,GAAKA,GAAK,SAAS,CAAC,KAAK3D,KAEzB2D,GAAK,KAAK3D,CAAS,GACnBgE,IAAU,IAGPjB,EAAQ,IAAI/C,CAAS,MACxB8D,IAAiB,MACjBC,KAAqBzD,EAAW,MAAM2D,IAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,WAAWZ,CAAgB,IAGlFS,GAAgB;AACfC,MAAAA,KACC/D,MAAciD,MACjBa,IAAiB,OACjBC,KAAqB,SAEZ/D,MAAcoD,MACxBU,IAAiB;AAGlB;IACA;AAEDE,SAAWE,IAEPF,MAAYH,KAAWI,IAAQ3D,EAAW,SAAS,MACtDqD,GAAK,KAAK,EAAE,GACZK,IAAU;EAEX;AAIG,GAACA,KAAWL,GAAKA,GAAK,SAAS,CAAC,EAAE,SAAS,KAAKA,GAAK,SAAS,MACjEA,GAAKA,GAAK,SAAS,CAAC,KAAKA,GAAK,IAAA;AAEhC;ADmJA,IChJMQ,KAA+BvE,CAAAA,OAAU;AAC9C,QAAMwE,IAAQxE,GAAO,MAAM,GAAG;AAC9B,MAAIyE,IAAOD,EAAM;AAEjB,SAAOC,IAAO,KACT,EAAAnD,EAAYkD,EAAMC,IAAO,CAAC,CAAC,IAAI,KAInCA;AAGD,SAAIA,MAASD,EAAM,SACXxE,KAGDwE,EAAM,MAAM,GAAGC,CAAI,EAAE,KAAK,GAAG,IAAID,EAAM,MAAMC,CAAI,EAAE,KAAK,EAAE;AAClE;AD+HA,ICxHMC,KAAO,CAAC1E,IAAQiE,GAAS1C,IAAU,CAAA,MAAO;AAC/C,MAAIA,EAAQ,SAAS,SAASvB,GAAO,KAAM,MAAK,GAC/C,QAAO;AAGR,MAAI2E,IAAc,IACdC,GACAC;AAEJ,QAAMC,IAAUjB,GAAY7D,EAAM;AAClC,MAAI+D,IAAO,CAAC,EAAE;AAEd,aAAW,CAACM,IAAOL,EAAI,KAAKhE,GAAO,MAAM,GAAG,EAAE,QAAA,GAAW;AACpDuB,MAAQ,SAAS,UACpBwC,EAAKA,EAAK,SAAS,CAAC,IAAIA,EAAKA,EAAK,SAAS,CAAC,EAAE,UAAA;AAG/C,QAAIgB,KAAYzD,EAAYyC,EAAKA,EAAK,SAAS,CAAC,CAAC;AAgBjD,QAdIM,OAAU,MACTU,MAAad,MAAY1C,EAAQ,aAAa,SAASA,EAAQ,SAAS,WAE3EwC,EAAK,KAAK,EAAE,GACZgB,KAAY,KAGTA,KAAY,KAAKxD,EAAQ,SAAS,WACrCwC,EAAKA,EAAK,SAAS,CAAC,KAAK,KACzBgB,QAKExD,EAAQ,QAAQuD,EAAQT,EAAK,IAAIJ,GAAS;AAC7C,YAAMe,KAAoBf,IAAUc,IAC9BE,IAAyB,IAAI,KAAK,OAAOH,EAAQT,EAAK,IAAIW,KAAmB,KAAKf,CAAO;AAChE,WAAK,OAAOa,EAAQT,EAAK,IAAI,KAAKJ,CAAO,IAC3CgB,KAC5BlB,EAAK,KAAK,EAAE,GAGbD,EAASC,GAAMC,IAAMC,CAAO;AAC5B;IACA;AAED,QAAIc,KAAYD,EAAQT,EAAK,IAAIJ,KAAWc,KAAY,KAAKD,EAAQT,EAAK,IAAI,GAAG;AAChF,UAAI9C,EAAQ,aAAa,SAASwD,KAAYd,GAAS;AACtDH,UAASC,GAAMC,IAAMC,CAAO;AAC5B;MACA;AAEDF,QAAK,KAAK,EAAE;IACZ;AAED,QAAIgB,KAAYD,EAAQT,EAAK,IAAIJ,KAAW1C,EAAQ,aAAa,OAAO;AACvEuC,QAASC,GAAMC,IAAMC,CAAO;AAC5B;IACA;AAEDF,MAAKA,EAAK,SAAS,CAAC,KAAKC;EACzB;AAEGzC,IAAQ,SAAS,UACpBwC,IAAOA,EAAK,IAAImB,CAAAA,OAAOX,GAA6BW,EAAG,CAAC;AAGzD,QAAMC,IAAM,CAAC,GAAGpB,EAAK,KAAK;CAAI,CAAC;AAE/B,aAAW,CAACM,IAAOjE,EAAS,KAAK+E,EAAI,QAAO,GAAI;AAG/C,QAFAR,KAAevE,IAEX+C,EAAQ,IAAI/C,EAAS,GAAG;AAC3B,YAAM,EAAC,QAAAgF,GAAM,IAAI,IAAI,OAAO,QAAQ9B,CAAQ,oBAAoBG,CAAgB,aAAaJ,CAAgB,GAAG,EAAE,KAAK8B,EAAI,MAAMd,EAAK,EAAE,KAAK,EAAE,CAAC,KAAK,EAAC,QAAQ,CAAE,EAAA;AAChK,UAAIe,GAAO,SAAS,QAAW;AAC9B,cAAM5E,IAAO,OAAO,WAAW4E,GAAO,IAAI;AAC1CR,YAAapE,MAAS4C,KAAW,SAAY5C;MACjD,MAAc4E,CAAAA,GAAO,QAAQ,WACzBP,KAAYO,GAAO,IAAI,WAAW,IAAI,SAAYA,GAAO;IAE1D;AAED,UAAM5E,KAAO0C,GAAW,MAAM,IAAI,OAAO0B,CAAU,CAAC;AAEhDO,MAAId,KAAQ,CAAC,MAAM;KAClBQ,OACHF,KAAehB,EAAkB,EAAE,IAGhCiB,KAAcpE,OACjBmE,KAAejB,EAAalD,EAAI,MAEvBJ,OAAc;MACpBwE,KAAcpE,OACjBmE,KAAejB,EAAakB,CAAU,IAGnCC,OACHF,KAAehB,EAAkBkB,EAAS;EAG5C;AAED,SAAOF;AACR;AAGe,SAASU,EAASrF,IAAQiE,GAAS1C,GAAS;AAC1D,SAAO,OAAOvB,EAAM,EAClB,UAAW,EACX,QAAQ,SAAS;CAAI,EACrB,MAAM;CAAI,EACV,IAAIsF,OAAQZ,GAAKY,GAAMrB,GAAS1C,CAAO,CAAC,EACxC,KAAK;CAAI;AACZ;ACnNA,IAAAgE,KAAA,OAAA;AAAA,IAAAC,KAAA,CAAAC,IAAAC,GAAAzF,MAAAyF,KAAAD,KAAAF,GAAAE,IAAAC,GAAA,EAAA,YAAA,MAAA,cAAA,MAAA,UAAA,MAAA,OAAAzF,EAAA,CAAA,IAAAwF,GAAAC,CAAA,IAAAzF;AAAA,IAAA0F,IAAA,CAAAF,IAAAC,GAAAzF,OAAAuF,GAAAC,IAAA,OAAAC,KAAA,WAAAA,IAAA,KAAAA,GAAAzF,CAAA,GAAAA;AAOA,SAAS2F,GAAUC,IAAWC,GAAW;AACxC,MAAID,OAAMC,EAAG;AAEb,QAAMC,IAASF,GAAE,MAAM;CAAI,GACrBG,IAASF,EAAE,MAAM;CAAI,GACrBG,IAAiB,CAAA;AAEvB,WAASrF,KAAI,GAAGA,KAAI,KAAK,IAAImF,EAAO,QAAQC,EAAO,MAAM,GAAGpF,KACvDmF,GAAOnF,EAAC,MAAMoF,EAAOpF,EAAC,KAAGqF,EAAK,KAAKrF,EAAC;AAGzC,SAAOqF;AACR;AAEA,IAAMC,IAAS,uBAAO,cAAc;AAC7B,SAASC,GAASlD,IAAiC;AACzD,SAAOA,OAAUiD;AAClB;AAEA,SAASE,EAAWC,IAAiBpD,GAAgB;AAC/CoD,EAAAA,GAAuB,SAAQA,GAAuB,WAAWpD,CAAK;AAC5E;AAEA,IAAMqD,IAAU,oBAAI,IAAI,CACvB,CAAC,KAAK,IAAI,GACV,CAAC,KAAK,MAAM,GACZ,CAAC,KAAK,MAAM,GACZ,CAAC,KAAK,OAAO,CACd,CAAC;AALD,IAMMC,KAAO,oBAAI,IAAI,CAAC,MAAM,QAAQ,QAAQ,SAAS,SAAS,OAAO,CAAC;AAcjDC,IAAAA,IAAAA,MAAO;EAa3B,YACC,EAAE,QAAAC,GAAQ,OAAAJ,IAAQK,GAAO,QAAAC,IAASC,GAAQ,GAAGC,EAAK,GAClDC,KAAsB,MACrB;AAfFC,MAAA,MAAU,OAAA,GACVA,EAAA,MAAU,QAAA,GACVA,EAAA,MAAQ,IAAA,GACRA,EAAA,MAAQ,MACRA,GAAAA,EAAA,MAAQ,UAAkB,KAAA,GAC1BA,EAAA,MAAQ,SAAA,GACRA,EAAA,MAAU,WAAkB,CAAA,GAE5BA,EAAA,MAAO,SAAe,SACtBA,GAAAA,EAAA,MAAO,OACPA,GAAAA,EAAA,MAAO,SAAgB,EAAA,GAgEvBA,EAAA,MAAQ,eAAc,oBAAI,KAAA,GA4F1BA,EAAA,MAAQ,cAAa,EAAA,GAtJpB,KAAK,OAAOF,GACZ,KAAK,aAAa,KAAK,WAAW,KAAK,IAAI,GAC3C,KAAK,QAAQ,KAAK,MAAM,KAAK,IAAI,GACjC,KAAK,SAAS,KAAK,OAAO,KAAK,IAAI,GACnC,KAAK,UAAUJ,EAAO,KAAK,IAAI,GAC/B,KAAK,SAASK,IAEd,KAAK,QAAQT,GACb,KAAK,SAASM;EACf;EAEO,SAAS;AACf,UAAMK,IAAO,IAAIC,EAAY,CAAC;AAC9B,WAAAD,EAAK,SAAS,CAACE,GAAOC,GAAUC,MAAS;AACpC,WAAK,WACR,KAAK,QAAQ,KAAK,GAAG,KAAK,QAAQ,OAAO,EAAE,GAC3C,KAAK,UAAU,KAAK,GAAG,QACvB,KAAK,KAAK,SAAS,KAAK,KAAK,IAE9BA,EACD;IAAA,GACA,KAAK,MAAM,KAAKJ,CAAI,GAEpB,KAAK,KAAKK,EAAS,gBAAgB,EAClC,OAAO,KAAK,OACZ,QAAQL,GACR,SAAS,GACT,QAAQ,IACR,mBAAmB,GACpB,CAAC,GACDK,EAAS,mBAAmB,KAAK,OAAO,KAAK,EAAE,GAC/C,KAAK,GAAG,OAAO,GACX,KAAK,KAAK,iBAAiB,UAAa,KAAK,UAChD,KAAK,GAAG,MAAM,KAAK,KAAK,YAAY,GAGrC,KAAK,MAAM,GAAG,YAAY,KAAK,UAAU,GACzCjB,EAAW,KAAK,OAAO,IAAI,GAC3B,KAAK,OAAO,GAAG,UAAU,KAAK,MAAM,GAEpC,KAAK,OAAA,GAEE,IAAI,QAAyB,CAACkB,GAASC,MAAW;AACxD,WAAK,KAAK,UAAU,MAAM;AACzB,aAAK,OAAO,MAAMC,kBAAAA,OAAO,IAAI,GAC7B,KAAK,OAAO,IAAI,UAAU,KAAK,MAAM,GACrCpB,EAAW,KAAK,OAAO,KAAK,GAC5BkB,EAAQ,KAAK,KAAK;MACnB,CAAC,GACD,KAAK,KAAK,UAAU,MAAM;AACzB,aAAK,OAAO,MAAME,kBAAAA,OAAO,IAAI,GAC7B,KAAK,OAAO,IAAI,UAAU,KAAK,MAAM,GACrCpB,EAAW,KAAK,OAAO,KAAK,GAC5BkB,EAAQpB,CAAM;MACf,CAAC;IACF,CAAC;EACF;EAGO,GAAGuB,GAAeC,GAA2B;AACnD,UAAMC,IAAM,KAAK,YAAY,IAAIF,CAAK,KAAK,CAAA;AAC3CE,MAAI,KAAK,EAAE,IAAAD,EAAG,CAAC,GACf,KAAK,YAAY,IAAID,GAAOE,CAAG;EAChC;EACO,KAAKF,GAAeC,GAA2B;AACrD,UAAMC,IAAM,KAAK,YAAY,IAAIF,CAAK,KAAK,CAAA;AAC3CE,MAAI,KAAK,EAAE,IAAAD,GAAI,MAAM,KAAK,CAAC,GAC3B,KAAK,YAAY,IAAID,GAAOE,CAAG;EAChC;EACO,KAAKF,MAAkBG,GAAa;AAC1C,UAAMC,IAAM,KAAK,YAAY,IAAIJ,CAAK,KAAK,CAAA,GACrCK,IAA0B,CAChC;AAAA,eAAWC,MAAcF,EACxBE,CAAAA,GAAW,GAAG,GAAGH,CAAI,GACjBG,GAAW,QACdD,EAAQ,KAAK,MAAMD,EAAI,OAAOA,EAAI,QAAQE,EAAU,GAAG,CAAC,CAAC;AAG3D,eAAWL,MAAMI,EAChBJ,CAAAA,GAEF;EAAA;EACQ,cAAc;AACrB,SAAK,YAAY,MAAM;EACxB;EAEQ,WAAWvG,GAAc6G,GAAW;AAuB3C,QAtBI,KAAK,UAAU,YAClB,KAAK,QAAQ,WAEVA,GAAK,QAAQ,CAAC,KAAK,UAAU1B,EAAQ,IAAI0B,EAAI,IAAI,KACpD,KAAK,KAAK,UAAU1B,EAAQ,IAAI0B,EAAI,IAAI,CAAC,GAEtCA,GAAK,QAAQzB,GAAK,IAAIyB,EAAI,IAAI,KACjC,KAAK,KAAK,UAAUA,EAAI,IAAI,GAEzB7G,MAASA,EAAK,YAAY,MAAM,OAAOA,EAAK,YAAA,MAAkB,QACjE,KAAK,KAAK,WAAWA,EAAK,YAAA,MAAkB,GAAG,GAE5CA,MAAS,OAAQ,KAAK,KAAK,gBACzB,KAAK,UACT,KAAK,GAAG,MAAM,KAAK,KAAK,WAAW,GACnC,KAAK,KAAK,SAAS,KAAK,KAAK,WAAW,KAGtCA,KACH,KAAK,KAAK,OAAOA,EAAK,YAAA,CAAa,GAGhC6G,GAAK,SAAS,UAAU;AAC3B,UAAI,KAAK,KAAK,UAAU;AACvB,cAAMC,IAAU,KAAK,KAAK,SAAS,KAAK,KAAK;AACzCA,cACH,KAAK,QAAQA,GACb,KAAK,QAAQ,SACb,KAAK,GAAG,MAAM,KAAK,KAAK;MAE1B;AACI,WAAK,UAAU,YAClB,KAAK,QAAQ;IAEf;AACI9G,UAAS,QACZ,KAAK,QAAQ,YAEV,KAAK,UAAU,YAAY,KAAK,UAAU,aAC7C,KAAK,KAAK,UAAU,GAErB,KAAK,OAAA,IACD,KAAK,UAAU,YAAY,KAAK,UAAU,aAC7C,KAAK,MAAA;EAEP;EAEU,QAAQ;AACjB,SAAK,MAAM,OAAO,GAClB,KAAK,MAAM,eAAe,YAAY,KAAK,UAAU,GACrD,KAAK,OAAO,MAAM;CAAI,GACtBiF,EAAW,KAAK,OAAO,KAAK,GAC5B,KAAK,GAAG,MAAM,GACd,KAAK,KAAK,GAAG,KAAK,KAAK,IAAI,KAAK,KAAK,GACrC,KAAK,YAAA;EACN;EAEQ,gBAAgB;AACvB,UAAM8B,IACLC,EAAK,KAAK,YAAY,QAAQ,OAAO,SAAS,EAAE,MAAM,KAAK,CAAC,EAAE,MAAM;CAAI,EAAE,SAAS;AACpF,SAAK,OAAO,MAAMX,kBAAAA,OAAO,KAAK,MAAMU,IAAQ,EAAE,CAAC;EAChD;EAGQ,SAAS;AAChB,UAAME,IAAQD,EAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,QAAQ,OAAO,SAAS,EAAE,MAAM,KAAK,CAAC;AACnF,QAAIC,MAAU,KAAK,YAEnB;AAAI,UAAA,KAAK,UAAU,UAClB,MAAK,OAAO,MAAMZ,kBAAAA,OAAO,IAAI;WACvB;AACN,cAAMvB,IAAOL,GAAU,KAAK,YAAYwC,CAAK;AAG7C,YAFA,KAAK,cAAc,GAEfnC,KAAQA,GAAM,WAAW,GAAG;AAC/B,gBAAMoC,IAAWpC,EAAK,CAAC;AACvB,eAAK,OAAO,MAAMuB,kBAAAA,OAAO,KAAK,GAAGa,CAAQ,CAAC,GAC1C,KAAK,OAAO,MAAMC,kBAAAA,MAAM,MAAM,CAAC,CAAC;AAChC,gBAAMJ,IAAQE,EAAM,MAAM;CAAI;AAC9B,eAAK,OAAO,MAAMF,EAAMG,CAAQ,CAAC,GACjC,KAAK,aAAaD,GAClB,KAAK,OAAO,MAAMZ,kBAAAA,OAAO,KAAK,GAAGU,EAAM,SAASG,IAAW,CAAC,CAAC;AAC7D;QAED,WAAWpC,KAAQA,GAAM,SAAS,GAAG;AACpC,gBAAMoC,IAAWpC,EAAK,CAAC;AACvB,eAAK,OAAO,MAAMuB,kBAAAA,OAAO,KAAK,GAAGa,CAAQ,CAAC,GAC1C,KAAK,OAAO,MAAMC,kBAAAA,MAAM,KAAM,CAAA;AAE9B,gBAAMC,IADQH,EAAM,MAAM;CAAI,EACP,MAAMC,CAAQ;AACrC,eAAK,OAAO,MAAME,EAAS,KAAK;CAAI,CAAC,GACrC,KAAK,aAAaH;AAClB;QACD;AAEA,aAAK,OAAO,MAAME,kBAAAA,MAAM,KAAA,CAAM;MAC/B;AAEA,WAAK,OAAO,MAAMF,CAAK,GACnB,KAAK,UAAU,cAClB,KAAK,QAAQ,WAEd,KAAK,aAAaA;IAAAA;EACnB;AACD;AIpOA,IAAA,KAAA,OAAA;AAAA,IAAA,KAAA,CAAAI,IAAA,GAAA,MAAA,KAAAA,KAAA,GAAAA,IAAA,GAAA,EAAA,YAAA,MAAA,cAAA,MAAA,UAAA,MAAA,OAAA,EAAA,CAAA,IAAAA,GAAA,CAAA,IAAA;AAAA,IAAA,IAAA,CAAAA,IAAA,GAAA,OAAA,GAAAA,IAAA,OAAA,KAAA,WAAA,IAAA,KAAA,GAAA,CAAA,GAAA;AC1BA,IAAAC,KAAA,cAAoEC,EAAO;EAY1E,YAAYC,GAAwB;AACnC,UAAMA,GAAM,KAAK,GAZlBC,EAAA,MAAA,SAAA,GACAA,EAAA,MAAA,UAAiB,CAahB,GAAA,KAAK,UAAUD,EAAK,SACpB,KAAK,SAAS,KAAK,QAAQ,UAAU,CAAC,EAAE,OAAAE,EAAM,MAAMA,MAAUF,EAAK,YAAY,GAC3E,KAAK,WAAW,OAAI,KAAK,SAAS,IACtC,KAAK,YAAY,GAEjB,KAAK,GAAG,UAAWG,OAAQ;AAC1B,cAAQA,GAAK;QACZ,KAAK;QACL,KAAK;AACJ,eAAK,SAAS,KAAK,WAAW,IAAI,KAAK,QAAQ,SAAS,IAAI,KAAK,SAAS;AAC1E;QACD,KAAK;QACL,KAAK;AACJ,eAAK,SAAS,KAAK,WAAW,KAAK,QAAQ,SAAS,IAAI,IAAI,KAAK,SAAS;AAC1E;MACF;AACA,WAAK,YACN;IAAA,CAAC;EACF;EA7BA,IAAY,SAAS;AACpB,WAAO,KAAK,QAAQ,KAAK,MAAM;EAChC;EAEQ,cAAc;AACrB,SAAK,QAAQ,KAAK,OAAO;EAC1B;AAwBD;ACdA,IAAA,KAAA,OAAA;AAAA,IAAA,KAAA,CAAAC,IAAA,GAAA,MAAA,KAAAA,KAAA,GAAAA,IAAA,GAAA,EAAA,YAAA,MAAA,cAAA,MAAA,UAAA,MAAA,OAAA,EAAA,CAAA,IAAAA,GAAA,CAAA,IAAA;AAAA,IAAA,KAAA,CAAAA,IAAA,GAAA,OAAA,GAAAA,IAAA,OAAA,KAAA,WAAA,IAAA,KAAA,GAAA,CAAA,GAAA;AClBqBC,IAAAA,KAAAA,cAAmBC,EAAO;EAK9C,YAAYC,GAAmB;AAC9B,UAAMA,CAAI,GALXC,GAAA,MAAkB,mBAAA,EAAA,GAOjB,KAAK,GAAG,YAAY,MAAM;AACpB,WAAK,UACT,KAAK,QAAQD,EAAK,eAEnB,KAAK,kBAAkB,KAAK;IAC7B,CAAC,GACD,KAAK,GAAG,SAAS,MAAM;AACtB,UAAI,KAAK,UAAU,KAAK,MAAM,OAC7B,MAAK,kBAAkB,GAAG,KAAK,KAAK,GAAGE,kBAAAA,QAAM,QAAQA,kBAAAA,QAAM,OAAO,GAAG,CAAC,CAAC;WACjE;AACN,cAAMC,IAAK,KAAK,MAAM,MAAM,GAAG,KAAK,MAAM,GACpCC,IAAK,KAAK,MAAM,MAAM,KAAK,MAAM;AACvC,aAAK,kBAAkB,GAAGD,CAAE,GAAGD,kBAAAA,QAAM,QAAQE,EAAG,CAAC,CAAC,CAAC,GAAGA,EAAG,MAAM,CAAC,CAAC;MAClE;IACD,CAAC;EACF;EArBA,IAAI,SAAS;AACZ,WAAO,KAAK;EACb;AAoBD;AC1BA,IAAMC,KAAY,WAAW,QAAQ,SAAS,WAAW,KAAK;;;ACNmM,IAAAC,qBAAa;AAAa,IAAAC,qBAAkC;AAAxF,OAAO,OAAM;AAAwF,SAASC,KAAG;AAAC,SAAO,EAAE,aAAW,UAAQ,EAAE,IAAI,SAAO,UAAQ,QAAQ,EAAE,IAAI,EAAE,KAAG,QAAQ,EAAE,IAAI,UAAU,KAAG,QAAQ,EAAE,IAAI,gBAAgB,KAAG,EAAE,IAAI,eAAa,kBAAgB,EAAE,IAAI,iBAAe,sBAAoB,EAAE,IAAI,iBAAe,YAAU,EAAE,IAAI,SAAO,oBAAkB,EAAE,IAAI,SAAO,eAAa,EAAE,IAAI,sBAAoB;AAAoB;AAAC,IAAMC,KAAED,GAAE;AAAV,IAAY,IAAE,CAACE,IAAE,MAAID,KAAEC,KAAE;AAAzB,IAA2B,IAAE,EAAE,UAAS,GAAG;AAA3C,IAA6CC,KAAE,EAAE,UAAS,GAAG;AAA7D,IAA+DC,KAAE,EAAE,UAAS,GAAG;AAA/E,IAAiFC,KAAE,EAAE,UAAS,GAAG;AAAjG,IAAmG,IAAE,EAAE,UAAS,GAAG;AAAnH,IAAqHC,KAAE,EAAE,UAAS,GAAG;AAArI,IAAuIC,KAAE,EAAE,UAAS,QAAQ;AAA5J,IAA8JC,KAAE,EAAE,UAAS,GAAG;AAA9K,IAAgL,IAAE,EAAE,UAAS,GAAG;AAAhM,IAAkM,IAAE,EAAE,UAAS,UAAU;AAAzN,IAA2NC,KAAE,EAAE,UAAS,KAAK;AAA7O,IAA+OC,KAAE,EAAE,UAAS,KAAK;AAAjQ,IAAmQC,KAAE,EAAE,UAAS,QAAQ;AAAxR,IAA0R,IAAE,EAAE,UAAS,GAAG;AAA1S,IAA4SC,KAAE,EAAE,UAAS,GAAG;AAA5T,IAA8TC,KAAE,EAAE,UAAS,GAAG;AAA9U,IAAgVC,KAAE,EAAE,UAAS,GAAG;AAAhW,IAAkWC,KAAE,EAAE,UAAS,QAAQ;AAAvX,IAAyX,IAAE,EAAE,UAAS,GAAG;AAAzY,IAA2YC,KAAE,EAAE,UAAS,GAAG;AAA3Z,IAA6Z,KAAG,EAAE,UAAS,GAAG;AAA9a,IAAgbC,KAAE,CAAAf,OAAG;AAAC,UAAOA,IAAE;AAAA,IAAC,KAAI;AAAA,IAAU,KAAI;AAAS,aAAO,mBAAAgB,QAAE,KAAK,CAAC;AAAA,IAAE,KAAI;AAAS,aAAO,mBAAAA,QAAE,IAAIf,EAAC;AAAA,IAAE,KAAI;AAAQ,aAAO,mBAAAe,QAAE,OAAOd,EAAC;AAAA,IAAE,KAAI;AAAS,aAAO,mBAAAc,QAAE,MAAMb,EAAC;AAAA,EAAC;AAAC;AAAvkB,IAAykB,KAAG,CAAAH,OAAG,IAAI,GAAE,EAAC,UAASA,GAAE,UAAS,aAAYA,GAAE,aAAY,cAAaA,GAAE,cAAa,cAAaA,GAAE,cAAa,SAAQ;AAAC,QAAM,IAAE,GAAG,mBAAAgB,QAAE,KAAKZ,EAAC,CAAC;AAAA,EACj4CW,GAAE,KAAK,KAAK,CAAC,KAAKf,GAAE,OAAO;AAAA,GAC3B,IAAEA,GAAE,cAAY,mBAAAgB,QAAE,QAAQhB,GAAE,YAAY,CAAC,CAAC,IAAE,mBAAAgB,QAAE,IAAIhB,GAAE,YAAY,MAAM,CAAC,CAAC,IAAE,mBAAAgB,QAAE,QAAQ,mBAAAA,QAAE,OAAO,GAAG,CAAC,GAAE,IAAE,KAAK,QAAM,KAAK,kBAAgB;AAAE,UAAO,KAAK,OAAM;AAAA,IAAC,KAAI;AAAQ,aAAM,GAAG,EAAE,KAAK,CAAC;AAAA,EACvL,mBAAAA,QAAE,OAAOZ,EAAC,CAAC,KAAK,CAAC;AAAA,EACjB,mBAAAY,QAAE,OAAOX,EAAC,CAAC,KAAK,mBAAAW,QAAE,OAAO,KAAK,KAAK,CAAC;AAAA;AAAA,IACpC,KAAI;AAAS,aAAM,GAAG,CAAC,GAAG,mBAAAA,QAAE,KAAKZ,EAAC,CAAC,KAAK,mBAAAY,QAAE,IAAI,KAAK,SAAOhB,GAAE,WAAW,CAAC;AAAA,IAAG,KAAI;AAAS,aAAM,GAAG,CAAC,GAAG,mBAAAgB,QAAE,KAAKZ,EAAC,CAAC,KAAK,mBAAAY,QAAE,cAAc,mBAAAA,QAAE,IAAI,KAAK,SAAO,EAAE,CAAC,CAAC,GAAG,KAAK,OAAO,KAAK,IAAE;AAAA,IAC/K,mBAAAA,QAAE,KAAKZ,EAAC,IAAE,EAAE;AAAA,IAAG;AAAQ,aAAM,GAAG,CAAC,GAAG,mBAAAY,QAAE,KAAKZ,EAAC,CAAC,KAAK,CAAC;AAAA,EACnD,mBAAAY,QAAE,KAAKX,EAAC,CAAC;AAAA;AAAA,EACV;AAAC,EAAC,CAAC,EAAE,OAAO;AAR6pB,IAqB1pB,KAAG,CAAAY,OAAG;AAAC,QAAM,IAAE,CAAC,GAAE,MAAI;AAAC,UAAMC,KAAE,EAAE,SAAO,OAAO,EAAE,KAAK;AAAE,WAAO,MAAI,WAAS,GAAG,mBAAAC,QAAE,MAAMC,EAAC,CAAC,IAAIF,EAAC,IAAI,EAAE,OAAK,mBAAAC,QAAE,IAAI,IAAI,EAAE,IAAI,GAAG,IAAE,EAAE,KAAG,MAAI,aAAW,GAAG,mBAAAA,QAAE,IAAID,EAAC,CAAC,KAAG,MAAI,cAAY,GAAG,mBAAAC,QAAE,cAAc,mBAAAA,QAAE,IAAID,EAAC,CAAC,CAAC,KAAG,GAAG,mBAAAC,QAAE,IAAI,CAAC,CAAC,IAAI,mBAAAA,QAAE,IAAID,EAAC,CAAC;AAAA,EAAE;AAAE,MAAI,IAAE;AAAE,SAAO,IAAI,GAAE,EAAC,SAAQD,GAAE,SAAQ,cAAaA,GAAE,cAAa,SAAQ;AAAC,UAAM,IAAE,GAAG,mBAAAE,QAAE,KAAKE,EAAC,CAAC;AAAA,EACzVC,GAAE,KAAK,KAAK,CAAC,KAAKL,GAAE,OAAO;AAAA;AAC3B,YAAO,KAAK,OAAM;AAAA,MAAC,KAAI;AAAS,eAAM,GAAG,CAAC,GAAG,mBAAAE,QAAE,KAAKE,EAAC,CAAC,KAAK,EAAE,KAAK,QAAQ,KAAK,MAAM,GAAE,UAAU,CAAC;AAAA,MAAG,KAAI;AAAS,eAAM,GAAG,CAAC,GAAG,mBAAAF,QAAE,KAAKE,EAAC,CAAC,KAAK,EAAE,KAAK,QAAQ,KAAK,MAAM,GAAE,WAAW,CAAC;AAAA,EACrL,mBAAAF,QAAE,KAAKE,EAAC,CAAC;AAAA,MAAG,SAAQ;AAAC,cAAM,IAAEJ,GAAE,aAAW,SAAO,IAAE,IAAE,KAAK,IAAIA,GAAE,UAAS,CAAC;AAAE,aAAK,UAAQ,IAAE,IAAE,IAAE,IAAE,KAAK,IAAI,KAAK,IAAI,KAAK,SAAO,IAAE,GAAE,KAAK,QAAQ,SAAO,CAAC,GAAE,CAAC,IAAE,KAAK,SAAO,IAAE,MAAI,IAAE,KAAK,IAAI,KAAK,SAAO,GAAE,CAAC;AAAG,cAAMC,KAAE,IAAE,KAAK,QAAQ,UAAQ,IAAE,GAAEK,KAAE,IAAE,KAAK,QAAQ,UAAQ,IAAE,IAAE,KAAK,QAAQ;AAAO,eAAM,GAAG,CAAC,GAAG,mBAAAJ,QAAE,KAAKE,EAAC,CAAC,KAAK,KAAK,QAAQ,MAAM,GAAE,IAAE,CAAC,EAAE,IAAI,CAAC,GAAEG,IAAEC,OAAID,OAAI,KAAGN,KAAE,mBAAAC,QAAE,IAAI,KAAK,IAAEK,OAAIC,GAAE,SAAO,KAAGF,KAAE,mBAAAJ,QAAE,IAAI,KAAK,IAAE,EAAE,GAAEK,KAAE,MAAI,KAAK,SAAO,WAAS,UAAU,CAAC,EAAE,KAAK;AAAA,EACxc,mBAAAL,QAAE,KAAKE,EAAC,CAAC,IAAI,CAAC;AAAA,EACd,mBAAAF,QAAE,KAAKO,EAAC,CAAC;AAAA;AAAA,MACV;AAAA,IAAC;AAAA,EAAC,EAAC,CAAC,EAAE,OAAO;AAAC;AA3B2pB,IAyD1pBC,KAAE,CAAAC,OAAGA,GAAE,QAAQ,GAAG,GAAE,EAAE;AAzDooB,IAyDloB,KAAG,CAACA,KAAE,IAAG,IAAE,OAAK;AAAC,QAAM,IAAE;AAAA,EAC/DA,EAAC;AAAA,EACD,MAAM;AAAA,CACP,GAAE,IAAED,GAAE,CAAC,EAAE,QAAO,IAAE,KAAK,IAAI,EAAE,OAAO,CAACE,IAAE,OAAK,IAAEF,GAAE,CAAC,GAAE,EAAE,SAAOE,KAAE,EAAE,SAAOA,KAAG,CAAC,GAAE,CAAC,IAAE,GAAEC,KAAE,EAAE,IAAI,CAAAD,OAAG,GAAG,mBAAAE,QAAE,KAAKC,EAAC,CAAC,KAAK,mBAAAD,QAAE,IAAIF,EAAC,CAAC,GAAG,IAAI,OAAO,IAAEF,GAAEE,EAAC,EAAE,MAAM,CAAC,GAAG,mBAAAE,QAAE,KAAKC,EAAC,CAAC,EAAE,EAAE,KAAK;AAAA,CACvK;AAAE,UAAQ,OAAO,MAAM,GAAG,mBAAAD,QAAE,KAAKC,EAAC,CAAC;AAAA,EAClC,mBAAAD,QAAE,MAAME,EAAC,CAAC,KAAK,mBAAAF,QAAE,MAAM,CAAC,CAAC,IAAI,mBAAAA,QAAE,KAAK,EAAE,OAAO,KAAK,IAAI,IAAE,IAAE,GAAE,CAAC,CAAC,IAAEG,EAAC,CAAC;AAAA,EAClEJ,EAAC;AAAA,EACD,mBAAAC,QAAE,KAAKI,KAAE,EAAE,OAAO,IAAE,CAAC,IAAEC,EAAC,CAAC;AAAA,CAC1B;AAAC;AAjEwqB,IAiEtqB,KAAG,CAACR,KAAE,OAAK;AAAC,UAAQ,OAAO,MAAM,GAAG,mBAAAG,QAAE,KAAKM,EAAC,CAAC,KAAK,mBAAAN,QAAE,IAAIH,EAAC,CAAC;AAAA;AAAA,CAE7D;AAAC;AAnEwqB,IAmEtqB,KAAG,CAACA,KAAE,OAAK;AAAC,UAAQ,OAAO,MAAM,GAAG,mBAAAG,QAAE,KAAK,CAAC,CAAC,KAAKH,EAAC;AAAA,CACtD;AAAC;AApEwqB,IAoEtqB,KAAG,CAACA,KAAE,OAAK;AAAC,UAAQ,OAAO,MAAM,GAAG,mBAAAG,QAAE,KAAKC,EAAC,CAAC;AAAA,EAC/C,mBAAAD,QAAE,KAAKM,EAAC,CAAC,KAAKT,EAAC;AAAA;AAAA,CAEhB;AAAC;AAvEwqB,IAuEtqBU,KAAE,EAAC,SAAQ,CAACV,KAAE,IAAG,EAAC,QAAO,IAAE,mBAAAG,QAAE,KAAKC,EAAC,EAAC,IAAE,CAAC,MAAI;AAAC,QAAM,IAAE,CAAC,GAAG,mBAAAD,QAAE,KAAKC,EAAC,CAAC,EAAE;AAAE,MAAGJ,IAAE;AAAC,UAAK,CAAC,GAAE,GAAG,CAAC,IAAEA,GAAE,MAAM;AAAA,CACpG;AAAE,MAAE,KAAK,GAAG,CAAC,KAAK,CAAC,IAAG,GAAG,EAAE,IAAI,CAAAE,OAAG,GAAG,mBAAAC,QAAE,KAAKC,EAAC,CAAC,KAAKF,EAAC,EAAE,CAAC;AAAA,EAAC;AAAC,UAAQ,OAAO,MAAM,GAAG,EAAE,KAAK;AAAA,CACxF,CAAC;AAAA,CACD;AAAC,GAAE,MAAK,CAAAF,OAAG;AAAC,EAAAU,GAAE,QAAQV,IAAE,EAAC,QAAO,mBAAAG,QAAE,KAAKQ,EAAC,EAAC,CAAC;AAAC,GAAE,SAAQ,CAAAX,OAAG;AAAC,EAAAU,GAAE,QAAQV,IAAE,EAAC,QAAO,mBAAAG,QAAE,MAAM,CAAC,EAAC,CAAC;AAAC,GAAE,MAAK,CAAAH,OAAG;AAAC,EAAAU,GAAE,QAAQV,IAAE,EAAC,QAAO,mBAAAG,QAAE,MAAME,EAAC,EAAC,CAAC;AAAC,GAAE,MAAK,CAAAL,OAAG;AAAC,EAAAU,GAAE,QAAQV,IAAE,EAAC,QAAO,mBAAAG,QAAE,OAAOS,EAAC,EAAC,CAAC;AAAC,GAAE,SAAQ,CAAAZ,OAAG;AAAC,EAAAU,GAAE,KAAKV,EAAC;AAAC,GAAE,OAAM,CAAAA,OAAG;AAAC,EAAAU,GAAE,QAAQV,IAAE,EAAC,QAAO,mBAAAG,QAAE,IAAI,EAAE,EAAC,CAAC;AAAC,EAAC;AAEqD,SAAS,KAAI;AAAC,QAAMU,KAAE,CAAC,gIAA+H,0DAA0D,EAAE,KAAK,GAAG;AAAE,SAAO,IAAI,OAAOA,IAAE,GAAG;AAAC;;;AjBxD7hB,IAAAC,qBAAe;;;AkBKR,IAAM,YAAqC;AAAA,EAChD;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAM;AAAA,IACN,UAAU;AAAA,EACZ;AACF;AAGO,SAAS,aAAa,IAAsC;AACjE,SAAO,UAAU,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE;AAC1C;AAGO,SAAS,iBAAyB;AACvC,SAAO,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,IAAI;AAC7C;;;ACnBA,IAAM,WAAsC,CAAC,QAAQ,OAAO,MAAM;AAClE,IAAM,gBAAoC,CAAC,WAAW,SAAS;AAGxD,IAAM,WAAN,cAAuB,MAAM;AAAC;AAErC,SAAS,YAAY,MAAc,OAAmC;AACpE,MAAI,UAAU,OAAW,OAAM,IAAI,SAAS,qBAAqB,IAAI,GAAG;AACxE,SAAO;AACT;AAMO,SAAS,UAAU,MAAqC;AAC7D,QAAM,MAAkB;AAAA,IACtB,KAAK;AAAA,IACL,SAAS;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AAEA,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,UAAM,MAAM,KAAK,CAAC;AAClB,YAAQ,KAAK;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AACH,YAAI,OAAO;AACX;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,YAAI,UAAU;AACd;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,YAAI,MAAM;AACV;AAAA,MACF,KAAK;AACH,YAAI,UAAU;AACd;AAAA,MACF,KAAK;AACH,YAAI,UAAU;AACd;AAAA,MACF,KAAK;AACH,YAAI,QAAQ;AACZ;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,YAAI,WAAW,YAAY,cAAc,KAAK,EAAE,CAAC,CAAC;AAClD;AAAA,MACF,KAAK;AACH,YAAI,UAAU,aAAa,YAAY,aAAa,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9D;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH,YAAI,iBAAiB;AAAA,UACnB,YAAY,qBAAqB,KAAK,EAAE,CAAC,CAAC;AAAA,QAC5C;AACA;AAAA,MACF,SAAS;AACP,YAAI,IAAI,WAAW,aAAa,GAAG;AACjC,cAAI,WAAW,IAAI,MAAM,cAAc,MAAM;AAAA,QAC/C,WAAW,IAAI,WAAW,YAAY,GAAG;AACvC,cAAI,UAAU,aAAa,IAAI,MAAM,aAAa,MAAM,CAAC;AAAA,QAC3D,WAAW,IAAI,WAAW,oBAAoB,GAAG;AAC/C,cAAI,iBAAiB;AAAA,YACnB,IAAI,MAAM,qBAAqB,MAAM;AAAA,UACvC;AAAA,QACF,WAAW,IAAI,WAAW,GAAG,GAAG;AAC9B,gBAAM,IAAI,SAAS,mBAAmB,GAAG,EAAE;AAAA,QAC7C,WAAW,IAAI,QAAQ,QAAW;AAChC,cAAI,MAAM;AAAA,QACZ,OAAO;AACL,gBAAM,IAAI,SAAS,wBAAwB,GAAG,EAAE;AAAA,QAClD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,oBAAoB,OAA+B;AAC1D,MAAK,SAA+B,SAAS,KAAK,GAAG;AACnD,WAAO;AAAA,EACT;AACA,QAAM,IAAI;AAAA,IACR,8BAA8B,KAAK,uBAAuB,SAAS,KAAK,IAAI,CAAC;AAAA,EAC/E;AACF;AAEA,SAAS,aAAa,OAAwB;AAC5C,MAAK,cAAoC,SAAS,KAAK,GAAG;AACxD,WAAO;AAAA,EACT;AACA,QAAM,IAAI;AAAA,IACR,sBAAsB,KAAK,uBAAuB,cAAc,KAAK,IAAI,CAAC;AAAA,EAC5E;AACF;AAGO,SAAS,WAAmB;AACjC,QAAM,YAAY,UAAU;AAAA,IAC1B,CAAC,MAAM,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI;AAAA,EACzC,EAAE,KAAK,IAAI;AACX,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWP,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBX;;;ACzJA,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,SAAS,MAAM,eAAe;AACvC,SAAS,qBAAqB;AAqD9B,IAAM,OAAO,QAAQ,cAAc,YAAY,GAAG,CAAC;AAO5C,SAAS,uBAA+B;AAE7C,QAAM,UAAU,QAAQ,MAAM,MAAM,WAAW;AAC/C,MAAI,WAAW,OAAO,KAAK,WAAW,KAAK,SAAS,cAAc,CAAC,GAAG;AACpE,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,QAAQ,MAAM,MAAM,MAAM,WAAW;AACzD,MAAI,WAAW,WAAW,KAAK,WAAW,KAAK,aAAa,cAAc,CAAC,GAAG;AAC5E,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAMA,SAAS,sBAA8B;AACrC,QAAM,aAAa;AAAA,IACjB,QAAQ,MAAM,MAAM,IAAI;AAAA;AAAA,IACxB,QAAQ,MAAM,MAAM,MAAM,IAAI;AAAA;AAAA,EAChC;AACA,aAAWC,MAAK,YAAY;AAC1B,QAAI,WAAW,KAAKA,IAAG,YAAY,MAAM,cAAc,CAAC,EAAG,QAAOA;AAAA,EACpE;AACA,SAAO,QAAQ,MAAM,MAAM,IAAI;AACjC;AAEA,IAAM,YAAY,oBAAI,IAAI,CAAC,gBAAgB,QAAQ,UAAU,UAAU,CAAC;AAGxE,SAAS,UAAU,MAAc,OAAO,MAAgB;AACtD,QAAM,MAAgB,CAAC;AACvB,aAAW,SAAS,YAAY,MAAM,EAAE,eAAe,KAAK,CAAC,GAAG;AAC9D,UAAM,OAAO,KAAK,MAAM,MAAM,IAAI;AAClC,QAAI,MAAM,YAAY,GAAG;AACvB,UAAI,KAAK,GAAG,UAAU,MAAM,IAAI,CAAC;AAAA,IACnC,OAAO;AACL,UAAI,KAAK,KAAK,MAAM,KAAK,SAAS,CAAC,CAAC;AAAA,IACtC;AAAA,EACF;AACA,SAAO,IAAI,KAAK;AAClB;AAGA,SAAS,iBACP,KACA,cACM;AAEN,QAAM,gBAAwC;AAAA,IAC5C,kBAAkB,KAAK,cAAc,YAAY,IAAI;AAAA,IACrD,kBAAkB,KAAK,cAAc,YAAY,KAAK;AAAA,IACtD,kBAAkB,KAAK,cAAc,YAAY,KAAK;AAAA,EACxD;AACA,aAAW,WAAW,CAAC,gBAAgB,iBAAiB,GAAY;AAClE,UAAM,OAAO,IAAI,OAAO;AACxB,QAAI,CAAC,KAAM;AACX,eAAW,QAAQ,OAAO,KAAK,IAAI,GAAG;AACpC,YAAM,MAAM,cAAc,IAAI;AAC9B,UAAI,IAAK,MAAK,IAAI,IAAI,QAAQ,GAAG;AAAA,IACnC;AAAA,EACF;AACF;AAGA,SAAS,eAAe,IAAqD;AAC3E,SAAO,EAAE,KAAK,IAAI,MAAM,CAAC,SAAS,EAAE;AACtC;AASO,SAAS,SAAS,SAA0C;AACjE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IACjB,UAAU;AAAA,IACV,QAAQ;AAAA,EACV,IAAI;AAEJ,QAAM,OAAO,aAAa,QAAQ;AAClC,MAAI,CAAC,MAAM;AACT,UAAM,IAAI;AAAA,MACR,qBAAqB,QAAQ,2BAA2B,eAAe,CAAC;AAAA,IAC1E;AAAA,EACF;AAEA,QAAM,gBAAgB,QAAQ,iBAAiB,qBAAqB;AACpE,QAAM,cAAc,KAAK,eAAe,KAAK,EAAE;AAC/C,MAAI,CAAC,WAAW,WAAW,GAAG;AAC5B,UAAM,IAAI;AAAA,MACR,aAAa,KAAK,EAAE,0BAA0B,WAAW;AAAA,IAE3D;AAAA,EACF;AAEA,QAAM,YAAY,QAAQ,QAAQ,SAAS;AAC3C,MAAI,WAAW,SAAS,GAAG;AACzB,UAAM,UAAU,YAAY,SAAS;AACrC,QAAI,QAAQ,SAAS,GAAG;AACtB,YAAM,IAAI,MAAM,kCAAkC,SAAS,EAAE;AAAA,IAC/D;AAAA,EACF,OAAO;AACL,cAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AAAA,EAC1C;AAGA,SAAO,aAAa,WAAW;AAAA,IAC7B,WAAW;AAAA,IACX,QAAQ,CAAC,YAAY;AACnB,YAAM,MAAM,QAAQ,MAAM,YAAY,SAAS,CAAC;AAChD,YAAM,QAAQ,IAAI,MAAM,OAAO;AAC/B,aAAO,CAAC,MAAM,KAAK,CAAC,MAAM,UAAU,IAAI,CAAC,CAAC;AAAA,IAC5C;AAAA,EACF,CAAC;AAGD,QAAM,UAAU,KAAK,WAAW,cAAc;AAC9C,MAAI,WAAW,OAAO,GAAG;AACvB,UAAM,MAAM,KAAK,MAAM,aAAa,SAAS,MAAM,CAAC;AAIpD,QAAI,OAAO;AACX,QAAI,OAAO;AACT,uBAAiB,KAAK,QAAQ,gBAAgB,oBAAoB,CAAC;AAAA,IACrE;AACA,kBAAc,SAAS,KAAK,UAAU,KAAK,MAAM,CAAC,IAAI,IAAI;AAAA,EAC5D;AAGA,QAAM,aAAa,KAAK,WAAW,cAAc;AACjD,QAAM,UAAU,KAAK,WAAW,MAAM;AACtC,MAAI,WAAW,UAAU,KAAK,CAAC,WAAW,OAAO,GAAG;AAClD,kBAAc,SAAS,aAAa,YAAY,MAAM,CAAC;AAAA,EACzD;AAEA,MAAI,YAAY;AAChB,MAAI,SAAS;AACX,UAAM,EAAE,KAAK,KAAK,IAAI,eAAe,cAAc;AACnD,UAAM,MAAM,UAAU,KAAK,MAAM;AAAA,MAC/B,KAAK;AAAA,MACL,OAAO;AAAA,MACP,OAAO,QAAQ,aAAa;AAAA,IAC9B,CAAC;AACD,QAAI,IAAI,WAAW,GAAG;AACpB,YAAM,IAAI;AAAA,QACR,mBAAmB,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,oBAAoB,IAAI,UAAU,SAAS;AAAA,MACrF;AAAA,IACF;AACA,gBAAY;AAAA,EACd;AAEA,SAAO,EAAE,WAAW,WAAW,OAAO,UAAU,SAAS,EAAE;AAC7D;;;ApBpNA,IAAM,UAAU;AAEhB,SAAS,iBAAiB,KAAsB;AAC9C,MAAI,CAACC,YAAW,GAAG,EAAG,QAAO;AAC7B,SAAOC,aAAY,GAAG,EAAE,WAAW;AACrC;AAGA,SAAS,mBAAmB,KAAqB;AAC/C,QAAM,OAAO,SAASC,SAAQ,GAAG,CAAC;AAElC,SAAO,KACJ,YAAY,EACZ,QAAQ,kBAAkB,GAAG,EAC7B,QAAQ,YAAY,EAAE,EACtB,QAAQ,OAAO,GAAG,KAAK;AAC5B;AAEA,eAAe,UAAU,SAAmC;AAC1D,MAAI,QAAS,QAAO;AACpB,QAAM,QAAQ,MAAM,GAAK;AAAA,IACvB,SAAS;AAAA,IACT,aAAa;AAAA,IACb,cAAc;AAAA,IACd,UAAU,CAACC,OAAM;AACf,YAAM,MAAMA,MAAK;AACjB,UAAI,CAAC,iBAAiBD,SAAQ,GAAG,CAAC,GAAG;AACnC,eAAO,aAAa,GAAG;AAAA,MACzB;AACA,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACD,MAAI,GAAS,KAAK,EAAG,MAAK;AAC1B,SAAQ,SAAoB;AAC9B;AAEA,eAAe,eAAe,SAAmC;AAC/D,MAAI,SAAS;AACX,QAAI,CAAC,aAAa,OAAO,GAAG;AAC1B,SAAO,qBAAqB,OAAO,iBAAiB,eAAe,CAAC,GAAG;AACvE,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,MAAM,GAAO;AAAA,IACzB,SAAS;AAAA,IACT,SAAS,UAAU,IAAI,CAAC,OAAO;AAAA,MAC7B,OAAO,EAAE;AAAA,MACT,OAAO,EAAE;AAAA,MACT,MAAM,EAAE;AAAA,IACV,EAAE;AAAA,EACJ,CAAC;AACD,MAAI,GAAS,KAAK,EAAG,MAAK;AAC1B,SAAO;AACT;AAEA,eAAe,cAAc,SAAqC;AAChE,MAAI,QAAS,QAAO;AACpB,QAAM,QAAQ,MAAM,GAAO;AAAA,IACzB,SAAS;AAAA,IACT,SAAS;AAAA,MACP,EAAE,OAAO,WAAW,OAAO,WAAW,MAAM,kBAAkB;AAAA,MAC9D,EAAE,OAAO,WAAW,OAAO,WAAW,MAAM,kBAAkB;AAAA,IAChE;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AACD,MAAI,GAAS,KAAK,EAAG,MAAK;AAC1B,SAAO;AACT;AAEA,eAAe,qBACb,SACyB;AACzB,MAAI,QAAS,QAAO;AACpB,QAAM,QAAQ,MAAM,GAAO;AAAA,IACzB,SAAS;AAAA,IACT,SAAS;AAAA,MACP,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,MAC/B,EAAE,OAAO,OAAO,OAAO,MAAM;AAAA,MAC7B,EAAE,OAAO,QAAQ,OAAO,OAAO;AAAA,IACjC;AAAA,IACA,cAAc;AAAA,EAChB,CAAC;AACD,MAAI,GAAS,KAAK,EAAG,MAAK;AAC1B,SAAO;AACT;AAEA,SAAS,OAAc;AACrB,KAAO,sBAAsB;AAC7B,UAAQ,KAAK,CAAC;AAChB;AAEA,SAAS,UACP,KACA,IACA,WACA,UACQ;AACR,QAAM,QAAkB,CAAC,MAAM,GAAG,EAAE;AACpC,MAAI,CAAC,UAAW,OAAM,KAAK,GAAG,EAAE,UAAU;AAC1C,QAAM,MAAM,OAAO,QAAQ,YAAY;AACvC,MAAI,aAAa,iBAAiB;AAChC,UAAM,KAAK,GAAG,GAAG,MAAM;AAAA,EACzB,OAAO;AACL,UAAM,KAAK,GAAG,GAAG,0CAA0C;AAAA,EAC7D;AACA,SAAO,MAAM,KAAK,IAAI;AACxB;AAEA,eAAe,OAAsB;AACnC,QAAM,OAAO,QAAQ,KAAK,MAAM,CAAC;AACjC,MAAI;AACJ,MAAI;AACF,aAAS,UAAU,IAAI;AAAA,EACzB,SAAS,KAAK;AACZ,QAAI,eAAe,UAAU;AAC3B,cAAQ,MAAM,mBAAAE,QAAG,IAAI,IAAI,OAAO,CAAC;AACjC,cAAQ,MAAM;AAAA,MAAS,mBAAAA,QAAG,KAAK,8BAA8B,CAAC,aAAa;AAC3E,cAAQ,KAAK,CAAC;AAAA,IAChB;AACA,UAAM;AAAA,EACR;AAEA,MAAI,OAAO,MAAM;AACf,YAAQ,IAAI,SAAS,CAAC;AACtB;AAAA,EACF;AACA,MAAI,OAAO,SAAS;AAClB,YAAQ,IAAI,OAAO;AACnB;AAAA,EACF;AAEA,KAAM,mBAAAA,QAAG,OAAO,mBAAAA,QAAG,MAAM,yBAAyB,CAAC,CAAC;AAGpD,QAAM,MAAM,OAAO,QAAQ,OAAO,MAAM,wBAAwB,MAAM,UAAU;AAChF,QAAM,WACJ,OAAO,aACN,OAAO,MAAM,UAAU,CAAC,EAAE,KAAK,MAAM,eAAe;AAEvD,MAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,OAAO,qBAAqB,QAAQ,iBAAiB,eAAe,CAAC,GAAG;AACxE,YAAQ,KAAK,CAAC;AAAA,EAChB;AACA,QAAM,UACJ,OAAO,YAAY,OAAO,MAAM,YAAY,MAAM,cAAc;AAClE,QAAM,iBACJ,OAAO,mBACN,OAAO,MAAM,SAAS,MAAM,qBAAqB;AAEpD,QAAM,cAAc,mBAAmB,GAAG;AAG1C,QAAM,UAAU,OAAO;AAEvB,MAAI;AACF,QAAI,QAAS,CAAAC,GAAI,KAAK,+CAA0C;AAAA,QAC3D,CAAAA,GAAI,KAAK,mBAAc;AAE5B,UAAM,SAAS,SAAS;AAAA,MACtB;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO,OAAO;AAAA,IAChB,CAAC;AAED,QAAI,OAAO,OAAO;AAChB;AAAA,QACE;AAAA,QAEA;AAAA,MACF;AAAA,IACF;AAEA,OAAK,UAAU,KAAK,gBAAgB,OAAO,WAAW,QAAQ,GAAG,YAAY;AAC7E,OAAM,mBAAAD,QAAG,MAAM,iBAAiB,WAAW,OAAO,OAAO,SAAS,EAAE,CAAC;AAAA,EACvE,SAAS,KAAK;AACZ,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC;AACvD,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,KAAK,EAAE,MAAM,CAAC,QAAiB;AAC7B,UAAQ,MAAM,eAAe,QAAQ,IAAI,SAAS,IAAI,UAAU,GAAG;AACnE,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":["x","y","f","existsSync","readdirSync","resolve","ansiRegex","onlyFirst","pattern","regex","stripAnsi","string","e","eaw","module","character","x","y","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","f","d","r","t","o","diffLines","a","b","aLines","bLines","diff","cancel","isCancel","setRawMode","input","aliases","keys","Prompt","render","stdin","output","stdout","opts","trackValue","__publicField","sink","WriteStream","chunk","encoding","done","readline","resolve","reject","cursor","event","cb","arr","data","cbs","cleanup","subscriber","key","problem","lines","wrap","frame","diffLine","erase","newLines","e","u$1","Prompt","opts","__publicField","value","key","e","TextPrompt","Prompt","opts","__publicField","color","s1","s2","isWindows","import_picocolors","import_sisteransi","q","_","r","I","x","S","a","d","b","w","M","U","Z","z","X","J","Q","y","e","r","c","e","b","a","y","l","m","$","d","R","r","l","c","e","a","S","Z","z","X","d","f","J","Q","r","import_picocolors","c","existsSync","readdirSync","resolve","v","pc","f"]}
|
|
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","../src/index.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/ansi-regex@6.1.0/node_modules/ansi-regex/index.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/strip-ansi@7.1.0/node_modules/strip-ansi/index.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/eastasianwidth@0.2.0/node_modules/eastasianwidth/eastasianwidth.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/emoji-regex@9.2.2/node_modules/emoji-regex/index.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/string-width@5.1.2/node_modules/string-width/index.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/ansi-styles@6.2.1/node_modules/ansi-styles/index.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/node_modules/.pnpm/wrap-ansi@8.1.0/node_modules/wrap-ansi/index.js","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/prompt.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/confirm.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/group-multiselect.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/multi-select.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/password.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/select.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/select-key.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/prompts/text.ts","../../node_modules/.pnpm/@clack+core@0.3.5/node_modules/@clack/core/src/utils.ts","../../node_modules/.pnpm/@clack+prompts@0.7.0/node_modules/@clack/prompts/dist/index.mjs","../src/templates.ts","../src/args.ts","../src/scaffold.ts"],"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","/**\n * `create-qorechain-dapp` entry point.\n *\n * Parses flags (non-interactive / CI mode) and falls back to interactive prompts\n * for any missing inputs. All scaffolding side effects are delegated to the pure\n * {@link scaffold} function in `./scaffold`.\n */\nimport { existsSync, readdirSync } from \"node:fs\";\nimport { basename, resolve } from \"node:path\";\n\nimport {\n cancel,\n intro,\n isCancel,\n log,\n note,\n outro,\n select,\n text,\n} from \"@clack/prompts\";\nimport pc from \"picocolors\";\n\nimport { ArgError, helpText, parseArgs } from \"./args.js\";\nimport {\n scaffold,\n type Network,\n type PackageManager,\n} from \"./scaffold.js\";\nimport { findTemplate, TEMPLATES, templateIdList } from \"./templates.js\";\n\nconst VERSION = \"0.1.0\";\n\nfunction isEmptyOrMissing(dir: string): boolean {\n if (!existsSync(dir)) return true;\n return readdirSync(dir).length === 0;\n}\n\n/** Validate a directory name segment for a project name fallback. */\nfunction defaultProjectName(dir: string): string {\n const base = basename(resolve(dir));\n // npm package names: lowercase, no spaces.\n return base\n .toLowerCase()\n .replace(/[^a-z0-9-~._]/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .replace(/-+/g, \"-\") || \"qorechain-dapp\";\n}\n\nasync function promptDir(initial?: string): Promise<string> {\n if (initial) return initial;\n const value = await text({\n message: \"Where should we create your project?\",\n placeholder: \"./my-qorechain-dapp\",\n defaultValue: \"./my-qorechain-dapp\",\n validate: (v) => {\n const dir = v || \"./my-qorechain-dapp\";\n if (!isEmptyOrMissing(resolve(dir))) {\n return `Directory ${dir} already exists and is not empty.`;\n }\n return undefined;\n },\n });\n if (isCancel(value)) bail();\n return (value as string) || \"./my-qorechain-dapp\";\n}\n\nasync function promptTemplate(initial?: string): Promise<string> {\n if (initial) {\n if (!findTemplate(initial)) {\n cancel(`Unknown template \"${initial}\". Available: ${templateIdList()}.`);\n process.exit(1);\n }\n return initial;\n }\n const value = await select({\n message: \"Pick a template\",\n options: TEMPLATES.map((t) => ({\n value: t.id,\n label: t.label,\n hint: t.hint,\n })),\n });\n if (isCancel(value)) bail();\n return value as string;\n}\n\nasync function promptNetwork(initial?: Network): Promise<Network> {\n if (initial) return initial;\n const value = await select({\n message: \"Which network?\",\n options: [\n { value: \"testnet\", label: \"testnet\", hint: \"qorechain-diana\" },\n { value: \"mainnet\", label: \"mainnet\", hint: \"qorechain-vladi\" },\n ],\n initialValue: \"testnet\",\n });\n if (isCancel(value)) bail();\n return value as Network;\n}\n\nasync function promptPackageManager(\n initial?: PackageManager,\n): Promise<PackageManager> {\n if (initial) return initial;\n const value = await select({\n message: \"Package manager?\",\n options: [\n { value: \"pnpm\", label: \"pnpm\" },\n { value: \"npm\", label: \"npm\" },\n { value: \"yarn\", label: \"yarn\" },\n ],\n initialValue: \"pnpm\",\n });\n if (isCancel(value)) bail();\n return value as PackageManager;\n}\n\nfunction bail(): never {\n cancel(\"Operation cancelled.\");\n process.exit(0);\n}\n\nfunction nextSteps(\n dir: string,\n pm: PackageManager,\n installed: boolean,\n template: string,\n): string {\n const lines: string[] = [`cd ${dir}`];\n if (!installed) lines.push(`${pm} install`);\n const run = pm === \"npm\" ? \"npm run\" : pm;\n if (template === \"fullstack-web\") {\n lines.push(`${run} dev`);\n } else {\n lines.push(`${run} deploy # see README for prerequisites`);\n }\n return lines.join(\"\\n\");\n}\n\nasync function main(): Promise<void> {\n const argv = process.argv.slice(2);\n let parsed;\n try {\n parsed = parseArgs(argv);\n } catch (err) {\n if (err instanceof ArgError) {\n console.error(pc.red(err.message));\n console.error(`\\nRun ${pc.cyan(\"create-qorechain-dapp --help\")} for usage.`);\n process.exit(1);\n }\n throw err;\n }\n\n if (parsed.help) {\n console.log(helpText());\n return;\n }\n if (parsed.version) {\n console.log(VERSION);\n return;\n }\n\n intro(pc.bgCyan(pc.black(\" create-qorechain-dapp \")));\n\n // Resolve each input: flags first, then prompts (unless --yes fills defaults).\n const dir = parsed.dir ?? (parsed.yes ? \"./my-qorechain-dapp\" : await promptDir());\n const template =\n parsed.template ??\n (parsed.yes ? TEMPLATES[0].id : await promptTemplate());\n // Validate the (possibly flag-provided) template eagerly.\n if (!findTemplate(template)) {\n cancel(`Unknown template \"${template}\". Available: ${templateIdList()}.`);\n process.exit(1);\n }\n const network =\n parsed.network ?? (parsed.yes ? \"testnet\" : await promptNetwork());\n const packageManager =\n parsed.packageManager ??\n (parsed.yes ? \"pnpm\" : await promptPackageManager());\n\n const projectName = defaultProjectName(dir);\n\n // In interactive mode, default install to the flag (true unless --no-install).\n const install = parsed.install;\n\n try {\n if (install) log.step(\"Scaffolding and installing dependencies…\");\n else log.step(\"Scaffolding…\");\n\n const result = scaffold({\n template,\n targetDir: dir,\n projectName,\n packageManager,\n network,\n install,\n local: parsed.local,\n });\n\n if (parsed.local) {\n note(\n \"Dependencies were rewritten to local file: links into this monorepo.\\n\" +\n \"Build the workspace packages first (pnpm -r build at the repo root).\",\n \"Local mode\",\n );\n }\n\n note(nextSteps(dir, packageManager, result.installed, template), \"Next steps\");\n outro(pc.green(`Done! Created ${projectName} at ${result.targetDir}`));\n } catch (err) {\n cancel(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n}\n\nmain().catch((err: unknown) => {\n console.error(err instanceof Error ? err.stack ?? err.message : err);\n process.exit(1);\n});\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","import type { Key, ReadLine } from 'node:readline';\n\nimport { stdin, stdout } from 'node:process';\nimport readline from 'node:readline';\nimport { Readable, Writable } from 'node:stream';\nimport { WriteStream } from 'node:tty';\nimport { cursor, erase } from 'sisteransi';\nimport wrap from 'wrap-ansi';\n\nfunction 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\nconst cancel = Symbol('clack:cancel');\nexport function isCancel(value: unknown): value is symbol {\n\treturn value === cancel;\n}\n\nfunction setRawMode(input: Readable, value: boolean) {\n\tif ((input as typeof stdin).isTTY) (input as typeof stdin).setRawMode(value);\n}\n\nconst aliases = new Map([\n\t['k', 'up'],\n\t['j', 'down'],\n\t['h', 'left'],\n\t['l', 'right'],\n]);\nconst keys = new Set(['up', 'down', 'left', 'right', 'space', 'enter']);\n\nexport interface PromptOptions<Self extends Prompt> {\n\trender(this: Omit<Self, 'prompt'>): string | void;\n\tplaceholder?: string;\n\tinitialValue?: any;\n\tvalidate?: ((value: any) => string | void) | undefined;\n\tinput?: Readable;\n\toutput?: Writable;\n\tdebug?: boolean;\n}\n\nexport type State = 'initial' | 'active' | 'cancel' | 'submit' | 'error';\n\nexport default class Prompt {\n\tprotected input: Readable;\n\tprotected output: Writable;\n\tprivate rl!: ReadLine;\n\tprivate opts: Omit<PromptOptions<Prompt>, 'render' | 'input' | 'output'>;\n\tprivate _track: boolean = false;\n\tprivate _render: (context: Omit<Prompt, 'prompt'>) => string | void;\n\tprotected _cursor: number = 0;\n\n\tpublic state: State = 'initial';\n\tpublic value: any;\n\tpublic error: string = '';\n\n\tconstructor(\n\t\t{ render, input = stdin, output = stdout, ...opts }: PromptOptions<Prompt>,\n\t\ttrackValue: boolean = true\n\t) {\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\n\t\tthis.input = input;\n\t\tthis.output = output;\n\t}\n\n\tpublic prompt() {\n\t\tconst sink = new WriteStream(0);\n\t\tsink._write = (chunk, encoding, done) => {\n\t\t\tif (this._track) {\n\t\t\t\tthis.value = this.rl.line.replace(/\\t/g, '');\n\t\t\t\tthis._cursor = this.rl.cursor;\n\t\t\t\tthis.emit('value', this.value);\n\t\t\t}\n\t\t\tdone();\n\t\t};\n\t\tthis.input.pipe(sink);\n\n\t\tthis.rl = readline.createInterface({\n\t\t\tinput: this.input,\n\t\t\toutput: sink,\n\t\t\ttabSize: 2,\n\t\t\tprompt: '',\n\t\t\tescapeCodeTimeout: 50,\n\t\t});\n\t\treadline.emitKeypressEvents(this.input, this.rl);\n\t\tthis.rl.prompt();\n\t\tif (this.opts.initialValue !== undefined && this._track) {\n\t\t\tthis.rl.write(this.opts.initialValue);\n\t\t}\n\n\t\tthis.input.on('keypress', this.onKeypress);\n\t\tsetRawMode(this.input, true);\n\t\tthis.output.on('resize', this.render);\n\n\t\tthis.render();\n\n\t\treturn new Promise<string | symbol>((resolve, reject) => {\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);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate subscribers = new Map<string, { cb: (...args: any) => any; once?: boolean }[]>();\n\tpublic on(event: string, cb: (...args: any) => any) {\n\t\tconst arr = this.subscribers.get(event) ?? [];\n\t\tarr.push({ cb });\n\t\tthis.subscribers.set(event, arr);\n\t}\n\tpublic once(event: string, cb: (...args: any) => any) {\n\t\tconst arr = this.subscribers.get(event) ?? [];\n\t\tarr.push({ cb, once: true });\n\t\tthis.subscribers.set(event, arr);\n\t}\n\tpublic emit(event: string, ...data: any[]) {\n\t\tconst cbs = this.subscribers.get(event) ?? [];\n\t\tconst cleanup: (() => void)[] = [];\n\t\tfor (const subscriber of cbs) {\n\t\t\tsubscriber.cb(...data);\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\t\tfor (const cb of cleanup) {\n\t\t\tcb();\n\t\t}\n\t}\n\tprivate unsubscribe() {\n\t\tthis.subscribers.clear();\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 && !this._track && aliases.has(key.name)) {\n\t\t\tthis.emit('cursor', aliases.get(key.name));\n\t\t}\n\t\tif (key?.name && keys.has(key.name)) {\n\t\t\tthis.emit('cursor', key.name);\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;\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\t\tif (char === '\\x03') {\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.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 _prevFrame = '';\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} else if (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, { 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 ? true : false;\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, { PromptOptions } from './prompt';\n\ninterface GroupMultiSelectOptions<T extends { value: any }>\n\textends PromptOptions<GroupMultiSelectPrompt<T>> {\n\toptions: Record<string, T[]>;\n\tinitialValues?: T['value'][];\n\trequired?: boolean;\n\tcursorAt?: T['value'];\n}\nexport default class GroupMultiSelectPrompt<T extends { value: any }> extends Prompt {\n\toptions: (T & { group: string | boolean })[];\n\tcursor: number = 0;\n\n\tgetGroupItems(group: string): T[] {\n\t\treturn this.options.filter((o) => o.group === group);\n\t}\n\n\tisGroupSelected(group: string) {\n\t\tconst items = this.getGroupItems(group);\n\t\treturn items.every((i) => this.value.includes(i.value));\n\t}\n\n\tprivate toggleValue() {\n\t\tconst item = this.options[this.cursor];\n\t\tif (item.group === true) {\n\t\t\tconst group = item.value;\n\t\t\tconst groupedItems = this.getGroupItems(group);\n\t\t\tif (this.isGroupSelected(group)) {\n\t\t\t\tthis.value = this.value.filter(\n\t\t\t\t\t(v: string) => groupedItems.findIndex((i) => i.value === v) === -1\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.value = [...this.value, ...groupedItems.map((i) => i.value)];\n\t\t\t}\n\t\t\tthis.value = Array.from(new Set(this.value));\n\t\t} else {\n\t\t\tconst selected = this.value.includes(item.value);\n\t\t\tthis.value = selected\n\t\t\t\t? this.value.filter((v: T['value']) => v !== item.value)\n\t\t\t\t: [...this.value, item.value];\n\t\t}\n\t}\n\n\tconstructor(opts: GroupMultiSelectOptions<T>) {\n\t\tsuper(opts, false);\n\t\tconst { options } = opts;\n\t\tthis.options = Object.entries(options).flatMap(([key, option]) => [\n\t\t\t{ value: key, group: true, label: key },\n\t\t\t...option.map((opt) => ({ ...opt, group: key })),\n\t\t]) as any;\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\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 Prompt, { 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: number = 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, { 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, { 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: number = 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 Prompt, { PromptOptions } from './prompt';\n\ninterface SelectKeyOptions<T extends { value: any }> extends PromptOptions<SelectKeyPrompt<T>> {\n\toptions: T[];\n}\nexport default class SelectKeyPrompt<T extends { value: any }> extends Prompt {\n\toptions: T[];\n\tcursor: number = 0;\n\n\tconstructor(opts: SelectKeyOptions<T>) {\n\t\tsuper(opts, false);\n\n\t\tthis.options = opts.options;\n\t\tconst keys = this.options.map(({ value: [initial] }) => initial?.toLowerCase());\n\t\tthis.cursor = Math.max(keys.indexOf(opts.initialValue), 0);\n\n\t\tthis.on('key', (key) => {\n\t\t\tif (!keys.includes(key)) return;\n\t\t\tconst value = this.options.find(({ value: [initial] }) => initial?.toLowerCase() === key);\n\t\t\tif (value) {\n\t\t\t\tthis.value = value.value;\n\t\t\t\tthis.state = 'submit';\n\t\t\t\tthis.emit('submit');\n\t\t\t}\n\t\t});\n\t}\n}\n","import color from 'picocolors';\nimport Prompt, { PromptOptions } from './prompt';\n\nexport interface TextOptions extends PromptOptions<TextPrompt> {\n\tplaceholder?: string;\n\tdefaultValue?: string;\n}\n\nexport default class TextPrompt extends Prompt {\n\tvalueWithCursor = '';\n\tget cursor() {\n\t\treturn this._cursor;\n\t}\n\tconstructor(opts: TextOptions) {\n\t\tsuper(opts);\n\n\t\tthis.on('finalize', () => {\n\t\t\tif (!this.value) {\n\t\t\t\tthis.value = opts.defaultValue;\n\t\t\t}\n\t\t\tthis.valueWithCursor = this.value;\n\t\t});\n\t\tthis.on('value', () => {\n\t\t\tif (this.cursor >= this.value.length) {\n\t\t\t\tthis.valueWithCursor = `${this.value}${color.inverse(color.hidden('_'))}`;\n\t\t\t} else {\n\t\t\t\tconst s1 = this.value.slice(0, this.cursor);\n\t\t\t\tconst s2 = this.value.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 type { Key } from 'node:readline';\n\nimport { stdin, stdout } from 'node:process';\nimport * as readline from 'node:readline';\nimport { cursor } from 'sisteransi';\n\nconst isWindows = globalThis.process.platform.startsWith('win');\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 }: Key) => {\n\t\tconst str = String(data);\n\t\tif (str === '\\x03') {\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\tlet dx = name === 'return' ? 0 : -1;\n\t\tlet 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/natemoo-re/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{TextPrompt as V,PasswordPrompt as j,ConfirmPrompt as N,SelectPrompt as k,SelectKeyPrompt as W,MultiSelectPrompt as D,GroupMultiSelectPrompt as L,isCancel as G,block as F}from\"@clack/core\";export{isCancel}from\"@clack/core\";import h from\"node:process\";import e from\"picocolors\";import{cursor as T,erase as A}from\"sisteransi\";function q(){return h.platform!==\"win32\"?h.env.TERM!==\"linux\":Boolean(h.env.CI)||Boolean(h.env.WT_SESSION)||Boolean(h.env.TERMINUS_SUBLIME)||h.env.ConEmuTask===\"{cmd::Cmder}\"||h.env.TERM_PROGRAM===\"Terminus-Sublime\"||h.env.TERM_PROGRAM===\"vscode\"||h.env.TERM===\"xterm-256color\"||h.env.TERM===\"alacritty\"||h.env.TERMINAL_EMULATOR===\"JetBrains-JediTerm\"}const _=q(),o=(r,n)=>_?r:n,H=o(\"\\u25C6\",\"*\"),I=o(\"\\u25A0\",\"x\"),x=o(\"\\u25B2\",\"x\"),S=o(\"\\u25C7\",\"o\"),K=o(\"\\u250C\",\"T\"),a=o(\"\\u2502\",\"|\"),d=o(\"\\u2514\",\"\\u2014\"),b=o(\"\\u25CF\",\">\"),E=o(\"\\u25CB\",\" \"),C=o(\"\\u25FB\",\"[\\u2022]\"),w=o(\"\\u25FC\",\"[+]\"),M=o(\"\\u25FB\",\"[ ]\"),U=o(\"\\u25AA\",\"\\u2022\"),B=o(\"\\u2500\",\"-\"),Z=o(\"\\u256E\",\"+\"),z=o(\"\\u251C\",\"+\"),X=o(\"\\u256F\",\"+\"),J=o(\"\\u25CF\",\"\\u2022\"),Y=o(\"\\u25C6\",\"*\"),Q=o(\"\\u25B2\",\"!\"),ee=o(\"\\u25A0\",\"x\"),y=r=>{switch(r){case\"initial\":case\"active\":return e.cyan(H);case\"cancel\":return e.red(I);case\"error\":return e.yellow(x);case\"submit\":return e.green(S)}},te=r=>new V({validate:r.validate,placeholder:r.placeholder,defaultValue:r.defaultValue,initialValue:r.initialValue,render(){const n=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`,i=r.placeholder?e.inverse(r.placeholder[0])+e.dim(r.placeholder.slice(1)):e.inverse(e.hidden(\"_\")),t=this.value?this.valueWithCursor:i;switch(this.state){case\"error\":return`${n.trim()}\n${e.yellow(a)} ${t}\n${e.yellow(d)} ${e.yellow(this.error)}\n`;case\"submit\":return`${n}${e.gray(a)} ${e.dim(this.value||r.placeholder)}`;case\"cancel\":return`${n}${e.gray(a)} ${e.strikethrough(e.dim(this.value??\"\"))}${this.value?.trim()?`\n`+e.gray(a):\"\"}`;default:return`${n}${e.cyan(a)} ${t}\n${e.cyan(d)}\n`}}}).prompt(),re=r=>new j({validate:r.validate,mask:r.mask??U,render(){const n=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`,i=this.valueWithCursor,t=this.masked;switch(this.state){case\"error\":return`${n.trim()}\n${e.yellow(a)} ${t}\n${e.yellow(d)} ${e.yellow(this.error)}\n`;case\"submit\":return`${n}${e.gray(a)} ${e.dim(t)}`;case\"cancel\":return`${n}${e.gray(a)} ${e.strikethrough(e.dim(t??\"\"))}${t?`\n`+e.gray(a):\"\"}`;default:return`${n}${e.cyan(a)} ${i}\n${e.cyan(d)}\n`}}}).prompt(),se=r=>{const n=r.active??\"Yes\",i=r.inactive??\"No\";return new N({active:n,inactive:i,initialValue:r.initialValue??!0,render(){const t=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`,s=this.value?n:i;switch(this.state){case\"submit\":return`${t}${e.gray(a)} ${e.dim(s)}`;case\"cancel\":return`${t}${e.gray(a)} ${e.strikethrough(e.dim(s))}\n${e.gray(a)}`;default:return`${t}${e.cyan(a)} ${this.value?`${e.green(b)} ${n}`:`${e.dim(E)} ${e.dim(n)}`} ${e.dim(\"/\")} ${this.value?`${e.dim(E)} ${e.dim(i)}`:`${e.green(b)} ${i}`}\n${e.cyan(d)}\n`}}}).prompt()},ie=r=>{const n=(t,s)=>{const c=t.label??String(t.value);return s===\"active\"?`${e.green(b)} ${c} ${t.hint?e.dim(`(${t.hint})`):\"\"}`:s===\"selected\"?`${e.dim(c)}`:s===\"cancelled\"?`${e.strikethrough(e.dim(c))}`:`${e.dim(E)} ${e.dim(c)}`};let i=0;return new k({options:r.options,initialValue:r.initialValue,render(){const t=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`;switch(this.state){case\"submit\":return`${t}${e.gray(a)} ${n(this.options[this.cursor],\"selected\")}`;case\"cancel\":return`${t}${e.gray(a)} ${n(this.options[this.cursor],\"cancelled\")}\n${e.gray(a)}`;default:{const s=r.maxItems===void 0?1/0:Math.max(r.maxItems,5);this.cursor>=i+s-3?i=Math.max(Math.min(this.cursor-s+3,this.options.length-s),0):this.cursor<i+2&&(i=Math.max(this.cursor-2,0));const c=s<this.options.length&&i>0,l=s<this.options.length&&i+s<this.options.length;return`${t}${e.cyan(a)} ${this.options.slice(i,i+s).map((u,m,$)=>m===0&&c?e.dim(\"...\"):m===$.length-1&&l?e.dim(\"...\"):n(u,m+i===this.cursor?\"active\":\"inactive\")).join(`\n${e.cyan(a)} `)}\n${e.cyan(d)}\n`}}}}).prompt()},ne=r=>{const n=(i,t=\"inactive\")=>{const s=i.label??String(i.value);return t===\"selected\"?`${e.dim(s)}`:t===\"cancelled\"?`${e.strikethrough(e.dim(s))}`:t===\"active\"?`${e.bgCyan(e.gray(` ${i.value} `))} ${s} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:`${e.gray(e.bgWhite(e.inverse(` ${i.value} `)))} ${s} ${i.hint?e.dim(`(${i.hint})`):\"\"}`};return new W({options:r.options,initialValue:r.initialValue,render(){const i=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`;switch(this.state){case\"submit\":return`${i}${e.gray(a)} ${n(this.options.find(t=>t.value===this.value),\"selected\")}`;case\"cancel\":return`${i}${e.gray(a)} ${n(this.options[0],\"cancelled\")}\n${e.gray(a)}`;default:return`${i}${e.cyan(a)} ${this.options.map((t,s)=>n(t,s===this.cursor?\"active\":\"inactive\")).join(`\n${e.cyan(a)} `)}\n${e.cyan(d)}\n`}}}).prompt()},ae=r=>{const n=(i,t)=>{const s=i.label??String(i.value);return t===\"active\"?`${e.cyan(C)} ${s} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:t===\"selected\"?`${e.green(w)} ${e.dim(s)}`:t===\"cancelled\"?`${e.strikethrough(e.dim(s))}`:t===\"active-selected\"?`${e.green(w)} ${s} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:t===\"submitted\"?`${e.dim(s)}`:`${e.dim(M)} ${e.dim(s)}`};return new D({options:r.options,initialValues:r.initialValues,required:r.required??!0,cursorAt:r.cursorAt,validate(i){if(this.required&&i.length===0)return`Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){let i=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`;switch(this.state){case\"submit\":return`${i}${e.gray(a)} ${this.options.filter(({value:t})=>this.value.includes(t)).map(t=>n(t,\"submitted\")).join(e.dim(\", \"))||e.dim(\"none\")}`;case\"cancel\":{const t=this.options.filter(({value:s})=>this.value.includes(s)).map(s=>n(s,\"cancelled\")).join(e.dim(\", \"));return`${i}${e.gray(a)} ${t.trim()?`${t}\n${e.gray(a)}`:\"\"}`}case\"error\":{const t=this.error.split(`\n`).map((s,c)=>c===0?`${e.yellow(d)} ${e.yellow(s)}`:` ${s}`).join(`\n`);return i+e.yellow(a)+\" \"+this.options.map((s,c)=>{const l=this.value.includes(s.value),u=c===this.cursor;return u&&l?n(s,\"active-selected\"):l?n(s,\"selected\"):n(s,u?\"active\":\"inactive\")}).join(`\n${e.yellow(a)} `)+`\n`+t+`\n`}default:return`${i}${e.cyan(a)} ${this.options.map((t,s)=>{const c=this.value.includes(t.value),l=s===this.cursor;return l&&c?n(t,\"active-selected\"):c?n(t,\"selected\"):n(t,l?\"active\":\"inactive\")}).join(`\n${e.cyan(a)} `)}\n${e.cyan(d)}\n`}}}).prompt()},ce=r=>{const n=(i,t,s=[])=>{const c=i.label??String(i.value),l=typeof i.group==\"string\",u=l&&(s[s.indexOf(i)+1]??{group:!0}),m=l&&u.group===!0,$=l?`${m?d:a} `:\"\";return t===\"active\"?`${e.dim($)}${e.cyan(C)} ${c} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:t===\"group-active\"?`${$}${e.cyan(C)} ${e.dim(c)}`:t===\"group-active-selected\"?`${$}${e.green(w)} ${e.dim(c)}`:t===\"selected\"?`${e.dim($)}${e.green(w)} ${e.dim(c)}`:t===\"cancelled\"?`${e.strikethrough(e.dim(c))}`:t===\"active-selected\"?`${e.dim($)}${e.green(w)} ${c} ${i.hint?e.dim(`(${i.hint})`):\"\"}`:t===\"submitted\"?`${e.dim(c)}`:`${e.dim($)}${e.dim(M)} ${e.dim(c)}`};return new L({options:r.options,initialValues:r.initialValues,required:r.required??!0,cursorAt:r.cursorAt,validate(i){if(this.required&&i.length===0)return`Please select at least one option.\n${e.reset(e.dim(`Press ${e.gray(e.bgWhite(e.inverse(\" space \")))} to select, ${e.gray(e.bgWhite(e.inverse(\" enter \")))} to submit`))}`},render(){let i=`${e.gray(a)}\n${y(this.state)} ${r.message}\n`;switch(this.state){case\"submit\":return`${i}${e.gray(a)} ${this.options.filter(({value:t})=>this.value.includes(t)).map(t=>n(t,\"submitted\")).join(e.dim(\", \"))}`;case\"cancel\":{const t=this.options.filter(({value:s})=>this.value.includes(s)).map(s=>n(s,\"cancelled\")).join(e.dim(\", \"));return`${i}${e.gray(a)} ${t.trim()?`${t}\n${e.gray(a)}`:\"\"}`}case\"error\":{const t=this.error.split(`\n`).map((s,c)=>c===0?`${e.yellow(d)} ${e.yellow(s)}`:` ${s}`).join(`\n`);return`${i}${e.yellow(a)} ${this.options.map((s,c,l)=>{const u=this.value.includes(s.value)||s.group===!0&&this.isGroupSelected(`${s.value}`),m=c===this.cursor;return!m&&typeof s.group==\"string\"&&this.options[this.cursor].value===s.group?n(s,u?\"group-active-selected\":\"group-active\",l):m&&u?n(s,\"active-selected\",l):u?n(s,\"selected\",l):n(s,m?\"active\":\"inactive\",l)}).join(`\n${e.yellow(a)} `)}\n${t}\n`}default:return`${i}${e.cyan(a)} ${this.options.map((t,s,c)=>{const l=this.value.includes(t.value)||t.group===!0&&this.isGroupSelected(`${t.value}`),u=s===this.cursor;return!u&&typeof t.group==\"string\"&&this.options[this.cursor].value===t.group?n(t,l?\"group-active-selected\":\"group-active\",c):u&&l?n(t,\"active-selected\",c):l?n(t,\"selected\",c):n(t,u?\"active\":\"inactive\",c)}).join(`\n${e.cyan(a)} `)}\n${e.cyan(d)}\n`}}}).prompt()},R=r=>r.replace(me(),\"\"),le=(r=\"\",n=\"\")=>{const i=`\n${r}\n`.split(`\n`),t=R(n).length,s=Math.max(i.reduce((l,u)=>(u=R(u),u.length>l?u.length:l),0),t)+2,c=i.map(l=>`${e.gray(a)} ${e.dim(l)}${\" \".repeat(s-R(l).length)}${e.gray(a)}`).join(`\n`);process.stdout.write(`${e.gray(a)}\n${e.green(S)} ${e.reset(n)} ${e.gray(B.repeat(Math.max(s-t-1,1))+Z)}\n${c}\n${e.gray(z+B.repeat(s+2)+X)}\n`)},ue=(r=\"\")=>{process.stdout.write(`${e.gray(d)} ${e.red(r)}\n\n`)},oe=(r=\"\")=>{process.stdout.write(`${e.gray(K)} ${r}\n`)},$e=(r=\"\")=>{process.stdout.write(`${e.gray(a)}\n${e.gray(d)} ${r}\n\n`)},f={message:(r=\"\",{symbol:n=e.gray(a)}={})=>{const i=[`${e.gray(a)}`];if(r){const[t,...s]=r.split(`\n`);i.push(`${n} ${t}`,...s.map(c=>`${e.gray(a)} ${c}`))}process.stdout.write(`${i.join(`\n`)}\n`)},info:r=>{f.message(r,{symbol:e.blue(J)})},success:r=>{f.message(r,{symbol:e.green(Y)})},step:r=>{f.message(r,{symbol:e.green(S)})},warn:r=>{f.message(r,{symbol:e.yellow(Q)})},warning:r=>{f.warn(r)},error:r=>{f.message(r,{symbol:e.red(ee)})}},de=()=>{const r=_?[\"\\u25D2\",\"\\u25D0\",\"\\u25D3\",\"\\u25D1\"]:[\"\\u2022\",\"o\",\"O\",\"0\"],n=_?80:120;let i,t,s=!1,c=\"\";const l=(v=\"\")=>{s=!0,i=F(),c=v.replace(/\\.+$/,\"\"),process.stdout.write(`${e.gray(a)}\n`);let g=0,p=0;t=setInterval(()=>{const O=e.magenta(r[g]),P=\".\".repeat(Math.floor(p)).slice(0,3);process.stdout.write(T.move(-999,0)),process.stdout.write(A.down(1)),process.stdout.write(`${O} ${c}${P}`),g=g+1<r.length?g+1:0,p=p<r.length?p+.125:0},n)},u=(v=\"\",g=0)=>{c=v??c,s=!1,clearInterval(t);const p=g===0?e.green(S):g===1?e.red(I):e.red(x);process.stdout.write(T.move(-999,0)),process.stdout.write(A.down(1)),process.stdout.write(`${p} ${c}\n`),i()},m=(v=\"\")=>{c=v??c},$=v=>{const g=v>1?\"Something went wrong\":\"Canceled\";s&&u(g,v)};return process.on(\"uncaughtExceptionMonitor\",()=>$(2)),process.on(\"unhandledRejection\",()=>$(2)),process.on(\"SIGINT\",()=>$(1)),process.on(\"SIGTERM\",()=>$(1)),process.on(\"exit\",$),{start:l,stop:u,message:m}};function me(){const r=[\"[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)\",\"(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-nq-uy=><~]))\"].join(\"|\");return new RegExp(r,\"g\")}const he=async(r,n)=>{const i={},t=Object.keys(r);for(const s of t){const c=r[s],l=await c({results:i})?.catch(u=>{throw u});if(typeof n?.onCancel==\"function\"&&G(l)){i[s]=\"canceled\",n.onCancel({results:i});continue}i[s]=l}return i};export{ue as cancel,se as confirm,he as group,ce as groupMultiselect,oe as intro,f as log,ae as multiselect,le as note,$e as outro,re as password,ie as select,ne as selectKey,de as spinner,te as text};\n","/**\n * Template registry.\n *\n * Each entry describes a starter template that lives in the monorepo's\n * `templates/<dir>` directory (copied into this package at build time). The\n * registry is structured so more languages/templates can be added later without\n * touching the scaffolding logic.\n */\n\n/** A language a template targets. Only TypeScript ships today. */\nexport type TemplateLanguage = \"typescript\";\n\n/** A scaffoldable starter template. */\nexport interface TemplateInfo {\n /** Registry id and on-disk directory name under `templates/`. */\n id: string;\n /** Short human label shown in the interactive picker. */\n label: string;\n /** One-line description. */\n hint: string;\n /** Source language. */\n language: TemplateLanguage;\n}\n\n/** All templates the CLI can scaffold. */\nexport const TEMPLATES: readonly TemplateInfo[] = [\n {\n id: \"evm-solidity\",\n label: \"EVM + Solidity\",\n hint: \"A Solidity contract with a viem deploy/interact script using @qorechain/evm.\",\n language: \"typescript\",\n },\n {\n id: \"fullstack-web\",\n label: \"Full-stack web (Vite + React)\",\n hint: \"A minimal Vite + React dApp using @qorechain/sdk to read balances and tokenomics.\",\n language: \"typescript\",\n },\n {\n id: \"rollup-app\",\n label: \"Rollup + multilayer app\",\n hint: \"A rollup + sidechain/paychain app using the RollupClient and multilayer helper from @qorechain/sdk.\",\n language: \"typescript\",\n },\n] as const;\n\n/** Look up a template by id, or `undefined` if unknown. */\nexport function findTemplate(id: string): TemplateInfo | undefined {\n return TEMPLATES.find((t) => t.id === id);\n}\n\n/** Comma-separated list of valid template ids, for error messages. */\nexport function templateIdList(): string {\n return TEMPLATES.map((t) => t.id).join(\", \");\n}\n","/**\n * Hand-rolled, dependency-free argument parser for the CLI. Kept separate from\n * the prompt I/O so it can be unit-tested directly.\n */\nimport type { Network, PackageManager } from \"./scaffold.js\";\nimport { TEMPLATES } from \"./templates.js\";\n\n/** Parsed CLI arguments. */\nexport interface ParsedArgs {\n /** Positional target directory (project dir), if given. */\n dir?: string;\n /** `--template <name>`. */\n template?: string;\n /** `--network <testnet|mainnet>`. */\n network?: Network;\n /** `--package-manager <pnpm|npm|yarn>`. */\n packageManager?: PackageManager;\n /** `--yes`: skip prompts, use defaults. */\n yes: boolean;\n /** `--no-install`: skip dependency install. */\n install: boolean;\n /** `--local`: rewrite @qorechain/* deps to file: links into the monorepo. */\n local: boolean;\n /** `--help`. */\n help: boolean;\n /** `--version`. */\n version: boolean;\n}\n\nconst VALID_PM: readonly PackageManager[] = [\"pnpm\", \"npm\", \"yarn\"];\nconst VALID_NETWORK: readonly Network[] = [\"testnet\", \"mainnet\"];\n\n/** Thrown for malformed CLI input; carries a user-facing message. */\nexport class ArgError extends Error {}\n\nfunction expectValue(name: string, value: string | undefined): string {\n if (value === undefined) throw new ArgError(`Missing value for ${name}.`);\n return value;\n}\n\n/**\n * Parse argv (excluding `node` and the script path). Throws {@link ArgError}\n * on malformed input.\n */\nexport function parseArgs(argv: readonly string[]): ParsedArgs {\n const out: ParsedArgs = {\n yes: false,\n install: true,\n local: false,\n help: false,\n version: false,\n };\n\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n switch (arg) {\n case \"-h\":\n case \"--help\":\n out.help = true;\n break;\n case \"-v\":\n case \"--version\":\n out.version = true;\n break;\n case \"-y\":\n case \"--yes\":\n out.yes = true;\n break;\n case \"--install\":\n out.install = true;\n break;\n case \"--no-install\":\n out.install = false;\n break;\n case \"--local\":\n out.local = true;\n break;\n case \"--template\":\n case \"-t\":\n out.template = expectValue(\"--template\", argv[++i]);\n break;\n case \"--network\":\n out.network = parseNetwork(expectValue(\"--network\", argv[++i]));\n break;\n case \"--package-manager\":\n case \"--pm\":\n out.packageManager = parsePackageManager(\n expectValue(\"--package-manager\", argv[++i]),\n );\n break;\n default: {\n if (arg.startsWith(\"--template=\")) {\n out.template = arg.slice(\"--template=\".length);\n } else if (arg.startsWith(\"--network=\")) {\n out.network = parseNetwork(arg.slice(\"--network=\".length));\n } else if (arg.startsWith(\"--package-manager=\")) {\n out.packageManager = parsePackageManager(\n arg.slice(\"--package-manager=\".length),\n );\n } else if (arg.startsWith(\"-\")) {\n throw new ArgError(`Unknown option: ${arg}`);\n } else if (out.dir === undefined) {\n out.dir = arg;\n } else {\n throw new ArgError(`Unexpected argument: ${arg}`);\n }\n }\n }\n }\n\n return out;\n}\n\nfunction parsePackageManager(value: string): PackageManager {\n if ((VALID_PM as readonly string[]).includes(value)) {\n return value as PackageManager;\n }\n throw new ArgError(\n `Invalid --package-manager \"${value}\". Expected one of: ${VALID_PM.join(\", \")}.`,\n );\n}\n\nfunction parseNetwork(value: string): Network {\n if ((VALID_NETWORK as readonly string[]).includes(value)) {\n return value as Network;\n }\n throw new ArgError(\n `Invalid --network \"${value}\". Expected one of: ${VALID_NETWORK.join(\", \")}.`,\n );\n}\n\n/** The `--help` text. */\nexport function helpText(): string {\n const templates = TEMPLATES.map(\n (t) => ` ${t.id.padEnd(16)} ${t.hint}`,\n ).join(\"\\n\");\n return `create-qorechain-dapp — scaffold a new QoreChain dApp.\n\nUsage:\n npm create qorechain-dapp <dir> [options]\n npx create-qorechain-dapp <dir> [options]\n\nArguments:\n <dir> Target directory for the new project.\n\nOptions:\n -t, --template <name> Template to use. One of:\n${templates}\n --network <name> Network preset: testnet | mainnet.\n --package-manager <pm> Package manager: pnpm | npm | yarn.\n -y, --yes Skip prompts and use defaults.\n --no-install Do not install dependencies after scaffolding.\n --local Rewrite @qorechain/* deps to local file: links\n into this monorepo (for local/dev use before the\n packages are published to npm).\n -h, --help Show this help.\n -v, --version Print the version.\n\nExamples:\n npm create qorechain-dapp my-dapp -- --template evm-solidity\n npx create-qorechain-dapp my-dapp --template fullstack-web --yes\n npx create-qorechain-dapp my-dapp -t evm-solidity --local --no-install\n`;\n}\n","/**\n * Core scaffolding logic — pure and unit-testable, with no prompt I/O.\n *\n * `scaffold(...)` copies a template into a target directory, rewrites the\n * template's package.json name, generates `.env` from `.env.example`, optionally\n * rewrites `@qorechain/*` deps to local `file:` links, and optionally runs a\n * package-manager install. All side effects are confined to the target dir\n * (plus an optional `spawn` for install), so tests can drive it against a temp\n * dir with `install: false`.\n */\nimport { spawnSync } from \"node:child_process\";\nimport {\n cpSync,\n existsSync,\n mkdirSync,\n readFileSync,\n readdirSync,\n writeFileSync,\n} from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { findTemplate, templateIdList } from \"./templates.js\";\n\n/** Supported package managers. */\nexport type PackageManager = \"pnpm\" | \"npm\" | \"yarn\";\n\n/** Supported networks. */\nexport type Network = \"testnet\" | \"mainnet\";\n\n/** Options for {@link scaffold}. */\nexport interface ScaffoldOptions {\n /** Template id (must exist in the registry). */\n template: string;\n /** Absolute or relative target directory to create the project in. */\n targetDir: string;\n /** Project name written into the generated package.json. */\n projectName: string;\n /** Package manager to record/use. Defaults to `pnpm`. */\n packageManager?: PackageManager;\n /** Network preset. Defaults to `testnet`. */\n network?: Network;\n /** Run the package manager install after copying. Defaults to `false`. */\n install?: boolean;\n /**\n * Rewrite `@qorechain/*` dependencies to `file:` links into this monorepo so\n * the scaffolded project is runnable locally before the packages are\n * published. Defaults to `false` (keeps the published `^x.y.z` ranges).\n */\n local?: boolean;\n /**\n * Override the directory templates are resolved from. Primarily for tests.\n * When unset, templates are located relative to this package (see\n * {@link resolveTemplatesRoot}).\n */\n templatesRoot?: string;\n /**\n * Monorepo root used to compute `file:` links when `local` is set. Defaults\n * to the resolved repo root relative to this package.\n */\n monorepoRoot?: string;\n}\n\n/** Result of a successful {@link scaffold}. */\nexport interface ScaffoldResult {\n /** Absolute path to the created project. */\n targetDir: string;\n /** Whether install was run. */\n installed: boolean;\n /** Relative paths of the files written (sorted). */\n files: string[];\n}\n\nconst here = dirname(fileURLToPath(import.meta.url));\n\n/**\n * Locate the bundled `templates/` directory. Works both from source (where\n * templates live at the repo root, two levels up from `cli/src`) and from the\n * built/published package (where `copy-templates` placed them at `<pkg>/templates`).\n */\nexport function resolveTemplatesRoot(): string {\n // Built/published layout: dist/index.js → ../templates\n const bundled = resolve(here, \"..\", \"templates\");\n if (existsSync(bundled) && existsSync(join(bundled, \"evm-solidity\"))) {\n return bundled;\n }\n // Source layout: cli/src → ../../templates\n const sourceLevel = resolve(here, \"..\", \"..\", \"templates\");\n if (existsSync(sourceLevel) && existsSync(join(sourceLevel, \"evm-solidity\"))) {\n return sourceLevel;\n }\n // Fallback to the bundled path so the error message is actionable.\n return bundled;\n}\n\n/**\n * Locate the monorepo root (which contains `packages/`), used for `file:` links\n * in `--local` mode.\n */\nfunction resolveMonorepoRoot(): string {\n const candidates = [\n resolve(here, \"..\", \"..\"), // source: cli/src → repo root\n resolve(here, \"..\", \"..\", \"..\"), // dist/index.js variants\n ];\n for (const c of candidates) {\n if (existsSync(join(c, \"packages\", \"ts\", \"package.json\"))) return c;\n }\n return resolve(here, \"..\", \"..\");\n}\n\nconst COPY_SKIP = new Set([\"node_modules\", \"dist\", \".turbo\", \"coverage\"]);\n\n/** Recursively collect relative file paths under `root`. */\nfunction listFiles(root: string, base = root): string[] {\n const out: string[] = [];\n for (const entry of readdirSync(root, { withFileTypes: true })) {\n const full = join(root, entry.name);\n if (entry.isDirectory()) {\n out.push(...listFiles(full, base));\n } else {\n out.push(full.slice(base.length + 1));\n }\n }\n return out.sort();\n}\n\n/** Rewrite `@qorechain/*` deps in a parsed package.json to `file:` links. */\nfunction rewriteLocalDeps(\n pkg: Record<string, unknown>,\n monorepoRoot: string,\n): void {\n // Map of published package name → monorepo package dir.\n const localPackages: Record<string, string> = {\n \"@qorechain/sdk\": join(monorepoRoot, \"packages\", \"ts\"),\n \"@qorechain/evm\": join(monorepoRoot, \"packages\", \"evm\"),\n \"@qorechain/svm\": join(monorepoRoot, \"packages\", \"svm\"),\n };\n for (const section of [\"dependencies\", \"devDependencies\"] as const) {\n const deps = pkg[section] as Record<string, string> | undefined;\n if (!deps) continue;\n for (const name of Object.keys(deps)) {\n const dir = localPackages[name];\n if (dir) deps[name] = `file:${dir}`;\n }\n }\n}\n\n/** Install command for a given package manager. */\nfunction installCommand(pm: PackageManager): { cmd: string; args: string[] } {\n return { cmd: pm, args: [\"install\"] };\n}\n\n/**\n * Scaffold a project. Pure with respect to everything except the target dir\n * (and the optional install subprocess).\n *\n * @throws if the template is unknown or the target dir already exists and is\n * non-empty.\n */\nexport function scaffold(options: ScaffoldOptions): ScaffoldResult {\n const {\n template,\n projectName,\n packageManager = \"pnpm\",\n install = false,\n local = false,\n } = options;\n\n const info = findTemplate(template);\n if (!info) {\n throw new Error(\n `Unknown template \"${template}\". Available templates: ${templateIdList()}.`,\n );\n }\n\n const templatesRoot = options.templatesRoot ?? resolveTemplatesRoot();\n const templateDir = join(templatesRoot, info.id);\n if (!existsSync(templateDir)) {\n throw new Error(\n `Template \"${info.id}\" not found on disk at ${templateDir}. ` +\n `The package may be built incorrectly.`,\n );\n }\n\n const targetDir = resolve(options.targetDir);\n if (existsSync(targetDir)) {\n const entries = readdirSync(targetDir);\n if (entries.length > 0) {\n throw new Error(`Target directory is not empty: ${targetDir}`);\n }\n } else {\n mkdirSync(targetDir, { recursive: true });\n }\n\n // Copy template, skipping build artifacts.\n cpSync(templateDir, targetDir, {\n recursive: true,\n filter: (srcPath) => {\n const rel = srcPath.slice(templateDir.length + 1);\n const parts = rel.split(/[\\\\/]/);\n return !parts.some((p) => COPY_SKIP.has(p));\n },\n });\n\n // Rewrite package.json: name (+ optional local file: deps).\n const pkgPath = join(targetDir, \"package.json\");\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf8\")) as Record<\n string,\n unknown\n >;\n pkg.name = projectName;\n if (local) {\n rewriteLocalDeps(pkg, options.monorepoRoot ?? resolveMonorepoRoot());\n }\n writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n }\n\n // Generate .env from .env.example if present and .env absent.\n const envExample = join(targetDir, \".env.example\");\n const envPath = join(targetDir, \".env\");\n if (existsSync(envExample) && !existsSync(envPath)) {\n writeFileSync(envPath, readFileSync(envExample, \"utf8\"));\n }\n\n let installed = false;\n if (install) {\n const { cmd, args } = installCommand(packageManager);\n const res = spawnSync(cmd, args, {\n cwd: targetDir,\n stdio: \"inherit\",\n shell: process.platform === \"win32\",\n });\n if (res.status !== 0) {\n throw new Error(\n `Install failed (${cmd} ${args.join(\" \")}) with exit code ${res.status ?? \"unknown\"}.`,\n );\n }\n installed = true;\n }\n\n return { targetDir, installed, files: listFiles(targetDir) };\n}\n"],"mappings":"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,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACUA,KAAV,QACUA,KAAV,QACUA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACUA,KAAV,QACUA,KAAV,QACUA,KAAV,QACUA,KAAV,QACA,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACUA,KAAV,QACA,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACUA,KAAV,QACUA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACUA,KAAV,QACUA,KAAV,QACUA,KAAV,QACUA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACUA,KAAV,QACUA,KAAV,QACUA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QAC1BA,KAAV,QACA,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,QACpC,QAAUA,KAAaA,KAAa,Q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","names":["x","y","f","existsSync","readdirSync","resolve","ansiRegex","onlyFirst","pattern","regex","stripAnsi","string","e","eaw","module","character","x","y","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","f","d","r","t","o","diffLines","a","b","aLines","bLines","diff","cancel","isCancel","setRawMode","input","aliases","keys","Prompt","render","stdin","output","stdout","opts","trackValue","__publicField","sink","WriteStream","chunk","encoding","done","readline","resolve","reject","cursor","event","cb","arr","data","cbs","cleanup","subscriber","key","problem","lines","wrap","frame","diffLine","erase","newLines","e","u$1","Prompt","opts","__publicField","value","key","e","TextPrompt","Prompt","opts","__publicField","color","s1","s2","isWindows","import_picocolors","import_sisteransi","q","_","r","I","x","S","a","d","b","w","M","U","Z","z","X","J","Q","y","e","r","c","e","b","a","y","l","m","$","d","R","r","l","c","e","a","S","Z","z","X","d","f","J","Q","r","import_picocolors","c","existsSync","readdirSync","resolve","v","pc","f"]}
|
package/package.json
CHANGED
package/templates/README.md
CHANGED
|
@@ -12,6 +12,7 @@ npx create-qorechain-dapp my-dapp --template <name>
|
|
|
12
12
|
| --------------- | ------------------------------------------------------------------------------------ |
|
|
13
13
|
| `evm-solidity` | A Solidity `Counter` contract + a viem deploy/interact script (`@qorechain/evm`). |
|
|
14
14
|
| `fullstack-web` | A Vite + React + TypeScript dApp reading balances and tokenomics (`@qorechain/sdk`). |
|
|
15
|
+
| `rollup-app` | A rollup + sidechain/paychain app using the `RollupClient` + multilayer helper (`@qorechain/sdk`). |
|
|
15
16
|
|
|
16
17
|
Each template is a complete, type-checking project with its own README.
|
|
17
18
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# QoreChain rollup + multilayer starter
|
|
2
|
+
|
|
3
|
+
A minimal QoreChain app that drives a **rollup** and the **multilayer**
|
|
4
|
+
(sidechain / paychain) module with the high-level helpers from
|
|
5
|
+
[`@qorechain/sdk`](https://github.com/qorechain/qorechain-sdk):
|
|
6
|
+
|
|
7
|
+
- `createRollupClient(tx, { query, qor })` — create rollups, submit batches, run
|
|
8
|
+
the challenge game, manage lifecycle, execute withdrawals, and read state.
|
|
9
|
+
- `createMultilayerClient(tx, { query })` — register sidechains/paychains, anchor
|
|
10
|
+
state roots, route transactions, and read layers + routing stats.
|
|
11
|
+
|
|
12
|
+
By default `pnpm start` runs a **dry run**: it builds and logs the messages
|
|
13
|
+
without touching a node. Set `QORE_BROADCAST=1` (with a funded account) to
|
|
14
|
+
broadcast and read.
|
|
15
|
+
|
|
16
|
+
## Prerequisites
|
|
17
|
+
|
|
18
|
+
- **Node.js >= 20**.
|
|
19
|
+
- A reachable **consensus RPC** (`QORE_RPC_URL`, default `http://localhost:26657`),
|
|
20
|
+
**REST** (`QORE_REST_URL`, default `:1317`), and **EVM JSON-RPC**
|
|
21
|
+
(`QORE_EVM_RPC_URL`, default `:8545`, for the `qor_*` reads). Point them at
|
|
22
|
+
testnet (`qorechain-diana`) or mainnet (`qorechain-vladi`).
|
|
23
|
+
- To broadcast: a **funded account** mnemonic (`QORE_MNEMONIC`). The default is
|
|
24
|
+
the public BIP-39 test mnemonic, which is **not funded** on any real network.
|
|
25
|
+
|
|
26
|
+
> Never commit a real mnemonic. Treat `QORE_MNEMONIC` as a secret.
|
|
27
|
+
|
|
28
|
+
## Setup
|
|
29
|
+
|
|
30
|
+
```sh
|
|
31
|
+
# install dependencies (use the package manager you scaffolded with)
|
|
32
|
+
pnpm install
|
|
33
|
+
|
|
34
|
+
# dry run — build + log the messages, no node needed
|
|
35
|
+
pnpm start
|
|
36
|
+
|
|
37
|
+
# broadcast + read against a live node
|
|
38
|
+
QORE_RPC_URL=https://rpc.testnet.example \
|
|
39
|
+
QORE_MNEMONIC="<your funded testnet mnemonic>" QORE_BROADCAST=1 pnpm start
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Where to go next
|
|
43
|
+
|
|
44
|
+
- **App developers** interact with rollups through this SDK (submit + read txs).
|
|
45
|
+
- **Operating** a rollup node (sequencer, prover, data availability) is the job
|
|
46
|
+
of the separate Rollup Development Kit. Build your app here; run the rollup
|
|
47
|
+
there.
|
|
48
|
+
|
|
49
|
+
See the SDK docs for the
|
|
50
|
+
[Rollups (RDK)](https://github.com/qorechain/qorechain-sdk/blob/main/docs/docs/guides/rollups.md)
|
|
51
|
+
and
|
|
52
|
+
[Sidechains & Paychains](https://github.com/qorechain/qorechain-sdk/blob/main/docs/docs/guides/multilayer.md)
|
|
53
|
+
guides.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "qorechain-rollup-app",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "A QoreChain rollup + multilayer dApp scaffold using the RollupClient and multilayer helper from @qorechain/sdk.",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"start": "tsx src/index.ts",
|
|
9
|
+
"typecheck": "tsc --noEmit"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"@cosmjs/tendermint-rpc": "^0.39.0",
|
|
13
|
+
"@qorechain/sdk": "^0.3.0"
|
|
14
|
+
},
|
|
15
|
+
"devDependencies": {
|
|
16
|
+
"@types/node": "^22.7.5",
|
|
17
|
+
"tsx": "^4.19.0",
|
|
18
|
+
"typescript": "^5.6.3"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A minimal QoreChain rollup + multilayer app.
|
|
3
|
+
*
|
|
4
|
+
* It wires up the high-level helpers from `@qorechain/sdk`:
|
|
5
|
+
* - createRollupClient(tx, { query, qor }) → create rollups, submit batches,
|
|
6
|
+
* run the challenge game, manage lifecycle, execute withdrawals, read state.
|
|
7
|
+
* - createMultilayerClient(tx, { query }) → register sidechains/paychains,
|
|
8
|
+
* anchor state roots, route transactions, read layers + routing stats.
|
|
9
|
+
*
|
|
10
|
+
* By default it runs a DRY RUN: it builds and logs the messages without touching
|
|
11
|
+
* a node. Set QORE_BROADCAST=1 (with a funded account) to actually broadcast and
|
|
12
|
+
* read. See the README for the env vars.
|
|
13
|
+
*/
|
|
14
|
+
import { connectComet } from "@cosmjs/tendermint-rpc";
|
|
15
|
+
import {
|
|
16
|
+
createClient,
|
|
17
|
+
connectQueryClients,
|
|
18
|
+
createMultilayerClient,
|
|
19
|
+
createRollupClient,
|
|
20
|
+
deriveNativeAccount,
|
|
21
|
+
directSignerFromPrivateKey,
|
|
22
|
+
} from "@qorechain/sdk";
|
|
23
|
+
|
|
24
|
+
// The public BIP-39 test mnemonic — NOT funded on any real network. Replace it
|
|
25
|
+
// (via QORE_MNEMONIC) with your own funded testnet mnemonic to broadcast.
|
|
26
|
+
const TEST_MNEMONIC =
|
|
27
|
+
"test test test test test test test test test test test junk";
|
|
28
|
+
|
|
29
|
+
async function main(): Promise<void> {
|
|
30
|
+
const mnemonic = process.env.QORE_MNEMONIC ?? TEST_MNEMONIC;
|
|
31
|
+
const rpcUrl = process.env.QORE_RPC_URL ?? "http://localhost:26657";
|
|
32
|
+
const restUrl = process.env.QORE_REST_URL ?? "http://localhost:1317";
|
|
33
|
+
const evmRpcUrl = process.env.QORE_EVM_RPC_URL ?? "http://localhost:8545";
|
|
34
|
+
const rollupId = process.env.QORE_ROLLUP_ID ?? "my-app-rollup";
|
|
35
|
+
const sidechainId = process.env.QORE_SIDECHAIN_ID ?? "my-app-sidechain";
|
|
36
|
+
const broadcast = process.env.QORE_BROADCAST === "1";
|
|
37
|
+
|
|
38
|
+
const client = createClient({
|
|
39
|
+
network: "testnet",
|
|
40
|
+
endpoints: { rpc: rpcUrl, rest: restUrl, evmRpc: evmRpcUrl },
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
const prefix = client.network.bech32.account;
|
|
44
|
+
const account = await deriveNativeAccount(mnemonic);
|
|
45
|
+
console.log(`account: ${account.address}`);
|
|
46
|
+
|
|
47
|
+
const signer = await directSignerFromPrivateKey(account.privateKey, prefix);
|
|
48
|
+
const tx = await client.connectTx(signer);
|
|
49
|
+
|
|
50
|
+
const rollup = createRollupClient(tx, { qor: client.qor });
|
|
51
|
+
const multilayer = createMultilayerClient(tx);
|
|
52
|
+
|
|
53
|
+
// --- Build the messages offline (no node needed) --------------------------
|
|
54
|
+
const createRollupMsg = rollup.createRollupMsg({
|
|
55
|
+
rollupId,
|
|
56
|
+
profile: "default",
|
|
57
|
+
vmType: "evm",
|
|
58
|
+
stakeAmount: 1_000_000,
|
|
59
|
+
});
|
|
60
|
+
const submitBatchMsg = rollup.submitBatchMsg({
|
|
61
|
+
rollupId,
|
|
62
|
+
batchIndex: 0,
|
|
63
|
+
stateRoot: new Uint8Array(32).fill(1),
|
|
64
|
+
txCount: 10,
|
|
65
|
+
withdrawalsRoot: new Uint8Array(32).fill(3),
|
|
66
|
+
});
|
|
67
|
+
const registerSidechainMsg = multilayer.registerSidechainMsg({
|
|
68
|
+
layerId: sidechainId,
|
|
69
|
+
description: "App sidechain",
|
|
70
|
+
minValidators: 3,
|
|
71
|
+
supportedVmTypes: ["evm"],
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
console.log("createRollup:", JSON.stringify(createRollupMsg, null, 2));
|
|
75
|
+
console.log("submitBatch:", JSON.stringify(submitBatchMsg, null, 2));
|
|
76
|
+
console.log(
|
|
77
|
+
"registerSidechain:",
|
|
78
|
+
JSON.stringify(registerSidechainMsg, null, 2),
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
if (!broadcast) {
|
|
82
|
+
console.log(
|
|
83
|
+
"\nDry run — set QORE_BROADCAST=1 (with a funded account) to broadcast and read.",
|
|
84
|
+
);
|
|
85
|
+
tx.disconnect();
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// --- Broadcast ------------------------------------------------------------
|
|
90
|
+
console.log("\nCreating rollup...");
|
|
91
|
+
const created = await rollup.createRollup({
|
|
92
|
+
rollupId,
|
|
93
|
+
profile: "default",
|
|
94
|
+
vmType: "evm",
|
|
95
|
+
stakeAmount: 1_000_000,
|
|
96
|
+
});
|
|
97
|
+
console.log(` ok — tx ${created.transactionHash}`);
|
|
98
|
+
|
|
99
|
+
console.log("Submitting batch 0...");
|
|
100
|
+
const batched = await rollup.submitBatch({
|
|
101
|
+
rollupId,
|
|
102
|
+
batchIndex: 0,
|
|
103
|
+
stateRoot: new Uint8Array(32).fill(1),
|
|
104
|
+
txCount: 10,
|
|
105
|
+
withdrawalsRoot: new Uint8Array(32).fill(3),
|
|
106
|
+
});
|
|
107
|
+
console.log(` ok — tx ${batched.transactionHash}`);
|
|
108
|
+
|
|
109
|
+
// --- Read -----------------------------------------------------------------
|
|
110
|
+
const status = await rollup.getRollupStatus(rollupId);
|
|
111
|
+
console.log("rollup status (qor_):", JSON.stringify(status, null, 2));
|
|
112
|
+
|
|
113
|
+
const comet = await connectComet(rpcUrl);
|
|
114
|
+
const queries = connectQueryClients(comet);
|
|
115
|
+
const reader = createRollupClient(tx, { query: queries.rdk, qor: client.qor });
|
|
116
|
+
|
|
117
|
+
const latest = await reader.getLatestBatch(rollupId);
|
|
118
|
+
console.log("latest batch:", JSON.stringify(latest, null, 2));
|
|
119
|
+
|
|
120
|
+
comet.disconnect();
|
|
121
|
+
tx.disconnect();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
main().catch((err: unknown) => {
|
|
125
|
+
console.error("\nFailed to run the rollup app.");
|
|
126
|
+
console.error(
|
|
127
|
+
"Needs a reachable node and (for broadcast) a FUNDED QORE_MNEMONIC.",
|
|
128
|
+
);
|
|
129
|
+
console.error(err instanceof Error ? err.message : err);
|
|
130
|
+
process.exitCode = 1;
|
|
131
|
+
});
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"strict": true,
|
|
5
|
+
"target": "ES2021",
|
|
6
|
+
"module": "ESNext",
|
|
7
|
+
"moduleResolution": "Bundler",
|
|
8
|
+
"esModuleInterop": true,
|
|
9
|
+
"skipLibCheck": true,
|
|
10
|
+
"forceConsistentCasingInFileNames": true,
|
|
11
|
+
"verbatimModuleSyntax": true,
|
|
12
|
+
"lib": ["ES2022", "DOM"],
|
|
13
|
+
"noEmit": true,
|
|
14
|
+
"types": ["node"]
|
|
15
|
+
},
|
|
16
|
+
"include": ["src"]
|
|
17
|
+
}
|