@qodalis/cli-core 2.4.1 → 2.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js","../../packages/core/src/lib/models/colors.ts","../../packages/core/src/lib/models/icons.ts","../../packages/core/src/lib/models/services.ts","../../packages/core/src/lib/tokens.ts","../../packages/core/src/lib/interfaces/services.ts","../../packages/core/src/lib/models/server.ts","../../packages/core/src/lib/models/options.ts","../../packages/core/src/lib/models/permissions.ts","../../packages/core/src/lib/models/index.ts","../../packages/core/src/lib/interfaces/command-controls.ts","../../packages/core/src/lib/interfaces/command-guards.ts","../../packages/core/src/lib/utils/permissions.ts","../../packages/core/src/lib/interfaces/authorization.ts","../../packages/core/src/lib/interfaces/event-bus.ts","../../packages/core/src/lib/interfaces/http-client.ts","../../packages/core/src/lib/constants/index.ts","../../packages/core/src/lib/utils/delay.ts","../../packages/core/src/lib/utils/shell-words.ts","../../packages/core/src/lib/utils/object-describer.ts","../../packages/core/src/lib/utils/config-utils.ts","../../packages/core/src/lib/utils/terminal-utils.ts","../../packages/core/src/lib/utils/version-utils.ts","../../packages/core/src/lib/version.ts","../../packages/core/src/lib/utils/server-version-negotiator.ts","../../packages/core/src/lib/utils/websocket-auth.ts","../../packages/core/src/lib/themes/default-themes.ts","../../packages/core/src/lib/utils/panel-theme-sync.ts","../../packages/core/src/lib/utils/panel-position-store.ts","../../packages/core/src/lib/utils/ansi-utils.ts","../../packages/core/src/lib/utils/access-guards.ts","../../packages/core/src/lib/utils/server-target.ts","../../packages/core/src/lib/utils/help-format.ts","../../packages/core/src/lib/utils/raw-argument.ts","../../packages/core/src/lib/utils/index.ts","../../packages/core/src/lib/modules/cli-module-registry.ts","../../packages/core/src/lib/modules/index.ts","../../packages/core/src/lib/types/CancellablePromise.ts","../../packages/core/src/lib/themes/default-theme-infos.ts","../../packages/core/src/lib/worker/create-worker-service.ts","../../packages/core/src/lib/services/browser-file-transfer.service.ts"],"names":["valid","compare","list","gte","coerce","constants","satisfies","require_valid","require_semver","CliForegroundColor","CliBackgroundColor","CliIcon","CliLogLevel","scheme","visibleLength"],"mappings":"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","file":"public-api.mjs","sourcesContent":["'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numeric identifiers include numeric identifiers but can be longer.\n// Therefore non-numeric identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifier, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\n\nconst isPrereleaseIdentifier = (prerelease, identifier) => {\n const identifiers = identifier.split('.')\n if (identifiers.length > prerelease.length) {\n return false\n }\n\n for (let i = 0; i < identifiers.length; i++) {\n if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {\n return false\n }\n }\n\n return true\n}\n\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (isPrereleaseIdentifier(this.prerelease, identifier)) {\n const prereleaseBase = this.prerelease[identifier.split('.').length]\n if (isNaN(prereleaseBase)) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are prereleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nconst parse = require('./parse')\nconst constants = require('../internal/constants')\nconst SemVer = require('../classes/semver')\n\nconst truncate = (version, truncation, options) => {\n if (!constants.RELEASE_TYPES.includes(truncation)) {\n return null\n }\n\n const clonedVersion = cloneInputVersion(version, options)\n return clonedVersion && doTruncation(clonedVersion, truncation)\n}\n\nconst cloneInputVersion = (version, options) => {\n const versionStringToParse = (\n version instanceof SemVer ? version.version : version\n )\n\n return parse(versionStringToParse, options)\n}\n\nconst doTruncation = (version, truncation) => {\n if (isPrerelease(truncation)) {\n return version.version\n }\n\n version.prerelease = []\n\n switch (truncation) {\n case 'major':\n version.minor = 0\n version.patch = 0\n break\n case 'minor':\n version.patch = 0\n break\n }\n\n return version.format()\n}\n\nconst isPrerelease = (type) => {\n return type.startsWith('pre')\n}\n\nmodule.exports = truncate\n","'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // strip build metadata so it can't bleed into the version\n range = range.replace(BUILDSTRIPRE, '')\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n src,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\n// unbounded global build-metadata stripper used by parseRange\nconst BUILDSTRIPRE = new RegExp(src[t.BUILD], 'g')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\nconst invalidXRangeOrder = (M, m, p) => (\n (isX(M) && !isX(m)) ||\n (isX(m) && p && !isX(p))\n)\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n // if we're including prereleases in the match, then the lower bound is\n // -0, the lowest possible prerelease value, just like x-ranges and carets.\n // this keeps `~1.2` equivalent to the `1.2.x` x-range it's documented as.\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n if (invalidXRangeOrder(M, m, p)) {\n return comp\n }\n\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If LT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !c.test(gt.semver)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !c.test(lt.semver)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst truncate = require('./functions/truncate')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n truncate,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","export enum CliForegroundColor {\n Black = '\\x1b[30m',\n Red = '\\x1b[31m',\n Green = '\\x1b[32m',\n Yellow = '\\x1b[33m',\n Blue = '\\x1b[34m',\n Magenta = '\\x1b[35m',\n Cyan = '\\x1b[36m',\n White = '\\x1b[37m',\n Reset = '\\x1b[0m',\n}\n\nexport enum CliBackgroundColor {\n Black = '\\x1b[40m',\n Red = '\\x1b[41m',\n Green = '\\x1b[42m',\n Yellow = '\\x1b[43m',\n Blue = '\\x1b[44m',\n Magenta = '\\x1b[45m',\n Cyan = '\\x1b[46m',\n White = '\\x1b[47m',\n}\n","/* eslint-disable @typescript-eslint/no-duplicate-enum-values -- several icons intentionally share a glyph */\nexport enum CliIcon {\n // General Symbols\n CheckIcon = '✔', // Success, completion\n CrossIcon = '✘', // Failure, error\n InfoIcon = 'ℹ', // Information\n WarningIcon = '⚠', // Warning\n QuestionMark = '?', // Help or unknown state\n Exclamation = '❗', // Emphasis or alert\n Ellipsis = '…', // Loading or truncated text\n Dot = '•', // List item\n Bullet = '‣', // Alternate bullet point\n\n // Arrows\n ArrowRight = '→', // Navigation or next step\n ArrowLeft = '←', // Previous step or navigation\n ArrowUp = '↑', // Up direction\n ArrowDown = '↓', // Down direction\n ArrowRightFilled = '▶', // Navigation or next step (filled)\n ArrowLeftFilled = '◀', // Previous step or navigation (filled)\n ArrowUpFilled = '▲', // Up direction (filled)\n ArrowDownFilled = '▼', // Down direction (filled)\n DoubleArrowRight = '»', // Fast forward or next\n DoubleArrowLeft = '«', // Rewind or previous\n\n // Lists and Progress\n Star = '★', // Highlight or favorite (filled)\n StarEmpty = '☆', // Highlight or favorite (empty)\n Plus = '+', // Addition or increment\n Minus = '-', // Subtraction or decrement\n Progress = '⏳', // Indicating progress\n Success = '✅', // Success (alternative to CheckIcon)\n Failure = '❌', // Failure (alternative to CrossIcon)\n\n // Time and Calendar\n Clock = '⏰', // Time-related\n Timer = '⏱', // Stopwatch or timer\n Alarm = '🔔', // Alarm or alert\n Calendar = '📅', // Calendar or date\n\n // Navigation and Folders\n Folder = '📁', // Directory or file grouping\n FolderOpen = '📂', // Open folder\n File = '📄', // File or document\n Archive = '🗃', // Archive or file grouping\n Link = '🔗', // Hyperlink or connection\n Chain = '⛓', // Chain or linked\n Bookmark = '🔖', // Bookmark or save\n\n // Actions\n Edit = '✏', // Edit or modify\n Trash = '🗑', // Deletion or removal\n Add = '➕', // Add user or item\n Remove = '➖', // Remove user or item\n Reload = '🔄', // Refresh or reload\n Save = '💾', // Save or store\n Undo = '↩', // Undo action\n Redo = '↪', // Redo action\n Play = '▶', // Start or play\n Pause = '⏸', // Pause or stop temporarily\n Stop = '⏹', // Stop or end\n Cancel = '❎', // Cancel or close\n\n // User and Security\n User = '👤', // User or profile\n Group = '👥', // Group or team\n Lock = '🔒', // Secured or locked\n Unlock = '🔓', // Unlocked or accessible\n Help = '❓', // Help or support\n Key = '🔑', // Authentication or key\n Shield = '🛡', // Security or protection\n\n // Tools and Settings\n Gear = '⚙', // Settings or configuration\n Settings = '⚙️', // Settings (alternative)\n Theme = '🎨', // Theme or appearance\n Light = '💡', // Light mode\n Bug = '🐞', // Bug or issue\n Wrench = '🔧', // Maintenance or tools\n Hammer = '🔨', // Build or fix\n\n // Technology and Devices\n Terminal = '💻', // Terminal or command line\n Database = '🗄', // Database or storage\n Server = '🖥', // Server or host\n Cloud = '☁', // Cloud or remote\n Network = '🌐', // Network or connection\n Monitor = '📺', // Monitor or display\n Printer = '🖨', // Printer or output\n USB = '🔌', // USB or connection\n Speaker = '🔊', // Speaker or audio\n Microphone = '🎙', // Microphone or input\n Camera = '📷', // Camera or video\n Video = '🎥', // Video or media\n Music = '🎵', // Music or audio\n Phone = '📞', // Phone or communication\n\n // Development and Evaluation\n Package = '📦', // Package or bundle\n Plugin = '🧩', // Plugin or extension\n Extension = '🔌', // Extension or connection\n Module = '🧱', // Module or package\n Evaluate = '🔍', // Evaluate or search\n Variable = '𝑥', // Variable or setting\n Script = '📜', // Script or code\n Code = '📝', // Code or file\n\n // Status and Completion\n Logs = '📋', // Logs or history\n Power = '⏻', // On/Off state\n Heart = '❤', // Love or favorite\n Flame = '🔥', // Trending or hot\n Growth = '📈', // Growth or increase\n Decline = '📉', // Decline or decrease\n WarningFilled = '⚠️', // Warning (filled)\n\n // Nature and Weather\n Sun = '☀', // Brightness or day\n Moon = '🌙', // Night or dark mode\n Rain = '🌧', // Rain or bad weather\n Snow = '❄', // Snow or cold\n Lightning = '⚡', // Lightning or danger\n Tree = '🌲', // Nature or environment\n\n // Emotions and Expressions\n Smile = '😊', // Happiness or positive state\n Sad = '😢', // Sadness or negative state\n Angry = '😡', // Anger or frustration\n Clap = '👏', // Applause or celebration\n ThumbsUp = '👍', // Approval or success\n ThumbsDown = '👎', // Disapproval or failure\n\n // Miscellaneous\n Rocket = '🚀', // Launch or deploy\n Globe = '🌍', // Earth or international\n Medal = '🏅', // Achievement or award\n Trophy = '🏆', // Winner or champion\n Flag = '🚩', // Mark or flag\n StarFilled = '⭐', // Highlight or favorite\n StarOutline = '✩', // Alternate star icon\n Fireworks = '🎆', // Celebration\n Balloon = '🎈', // Party or fun\n Gift = '🎁', // Reward or present\n}\n","/**\n * A DI token that carries the type of the service it identifies, so\n * `services.get(TOKEN)` is typed without a type argument:\n *\n * ```ts\n * export const ITodoStore_TOKEN = createCliToken<ITodoStore>('todo-store');\n * const store = context.services.get(ITodoStore_TOKEN); // ITodoStore | undefined\n * ```\n *\n * At runtime it is the plain string, so it works anywhere a string token does.\n */\nexport type CliToken<T> = string & { readonly __cliTokenType?: T };\n\n/** Create a typed {@link CliToken}. */\nexport function createCliToken<T>(name: string): CliToken<T> {\n return name as CliToken<T>;\n}\n\ntype MultiServices = {\n /**\n * When true, injector returns an array of instances. This is useful to allow multiple\n * providers spread across many files to provide configuration information to a common token.\n */\n multi?: boolean;\n};\n\nexport type CliValueProvider = MultiServices & {\n useValue: any;\n};\n\nexport type CliTypeProvider = MultiServices & {\n useClass: any;\n /** DI tokens resolved from the container and passed as constructor arguments. */\n deps?: any[];\n};\n\nexport type CliFactoryProvider = MultiServices & {\n useFactory: (...args: any[]) => any;\n /** DI tokens resolved from the container and passed as factory arguments. */\n deps?: any[];\n};\n\n/**\n * Service registration. `useFactory` and `useClass` providers are created\n * lazily, on the first `get()` of their token (or of a token depending on\n * them), so their `deps` may be registered after them.\n */\nexport type CliProvider = {\n provide: any;\n /** When true, this token is sealed after registration and cannot be overwritten. */\n sealed?: boolean;\n /** When true, a new instance is created on every `get()` call instead of returning a singleton. */\n transient?: boolean;\n} & (\n | CliValueProvider\n | CliTypeProvider\n | CliFactoryProvider\n) &\n Record<string, any>;\n","import { createCliToken } from './models/services';\nimport type { ICliAuditService } from './interfaces/audit';\nimport type { ICliAuthorizationService, ICliPermissionRegistry } from './interfaces/authorization';\nimport type { ICliCompletionProvider } from './interfaces/completion';\nimport type { ICliDragDropService } from './interfaces/drag-drop';\nimport type { ICliFilePickerProvider } from './interfaces/file-picker';\nimport type { ICliFileTransferService } from './interfaces/file-transfer';\nimport type { ICliHttpClient } from './interfaces/http-client';\nimport type { ICliPermissionService } from './interfaces/permissions';\nimport type { ICliTranslationService } from './interfaces/services';\nimport type { ICliSessionsService } from './interfaces/sessions';\nimport type { ICliKeyValueStore } from './interfaces/state-store';\nimport type { ICliUserEventService } from './interfaces/user-events';\nimport type { ICliAuthService, ICliGroupsStoreService, ICliUserSessionService, ICliUsersStoreService } from './interfaces/users';\n\n// ---------------------------------------------------------------------------\n// Central registry of all service injection tokens.\n// Each token is a typed string key: ICliServiceProvider.get(TOKEN) returns\n// the service's type without a type argument.\n// ---------------------------------------------------------------------------\n\n/**\n * Token for the CLI user session service.\n */\nexport const ICliUserSessionService_TOKEN = createCliToken<ICliUserSessionService>('cli-user-session-service');\n\n/**\n * Token for the CLI users store service.\n */\nexport const ICliUsersStoreService_TOKEN = createCliToken<ICliUsersStoreService>('cli-users-store-service');\n\n/**\n * Token for the CLI groups store service.\n */\nexport const ICliGroupsStoreService_TOKEN = createCliToken<ICliGroupsStoreService>('cli-groups-store-service');\n\n/**\n * Token for the CLI auth service.\n */\nexport const ICliAuthService_TOKEN = createCliToken<ICliAuthService>('cli-auth-service');\n\n/**\n * Token for registering completion providers via module services (multi: true).\n */\nexport const ICliCompletionProvider_TOKEN = createCliToken<ICliCompletionProvider>('cli-completion-provider');\n\n/**\n * Token for the drag-and-drop service.\n */\nexport const ICliDragDropService_TOKEN = createCliToken<ICliDragDropService>('cli-drag-drop-service');\n\n/**\n * Token for the file transfer service.\n */\nexport const ICliFileTransferService_TOKEN = createCliToken<ICliFileTransferService>('cli-file-transfer-service');\n\n/**\n * Token for the translation service.\n */\nexport const ICliTranslationService_TOKEN = createCliToken<ICliTranslationService>('cli-translation-service');\n\n/**\n * Token for the permission service.\n */\nexport const ICliPermissionService_TOKEN = createCliToken<ICliPermissionService>('cli-permission-service');\n\n/**\n * Token for the file picker provider.\n */\nexport const ICliFilePickerProvider_TOKEN = createCliToken<ICliFilePickerProvider>('cli-file-picker-provider');\n\n/**\n * Token for the HTTP client service.\n */\nexport const ICliHttpClient_TOKEN = createCliToken<ICliHttpClient>('cli-http-client');\n\n/**\n * Token for the user event service (lifecycle events).\n */\nexport const ICliUserEventService_TOKEN = createCliToken<ICliUserEventService>('cli-user-event-service');\n\n/**\n * Token for the audit service (persistent event logging).\n */\nexport const ICliAuditService_TOKEN = createCliToken<ICliAuditService>('cli-audit-service');\n\n/**\n * Token for the authorization service ({@link ICliAuthorizationService}).\n * Provided by an auth module (e.g. `@qodalis/cli-users`); absent otherwise.\n */\nexport const ICliAuthorizationService_TOKEN = createCliToken<ICliAuthorizationService>('cli-authorization-service');\n\n/**\n * Token for the permission registry ({@link ICliPermissionRegistry}).\n * Always provided by the CLI engine.\n */\nexport const ICliPermissionRegistry_TOKEN = createCliToken<ICliPermissionRegistry>('cli-permission-registry');\n\n/**\n * Token for the sessions service ({@link ICliSessionsService}).\n */\nexport const ICliSessionsService_TOKEN = createCliToken<ICliSessionsService>('cli-sessions-service');\n\n/**\n * Token for the persistent key-value store used by modules (setup state, etc.).\n */\nexport const ICliKeyValueStore_TOKEN = createCliToken<ICliKeyValueStore>('cli-key-value-store');\n","import { createCliToken } from '../models/services';\nimport type { CliLogLevel, CliProvider, CliToken } from '../models';\nimport type { ICliCommandProcessor } from './command-processor';\nimport type { ICliExecutionContext } from './execution-context';\nimport type { CliPermissionDefinition } from './authorization';\nimport type { ICliCommandGuard } from './command-guards';\n\n/**\n * Represents a service that pings the server\n */\nexport interface ICliPingServerService {\n /**\n * Pings the server\n */\n ping(): Promise<void>;\n}\n\n/**\n * Represents a module for the web CLI (frontend).\n *\n * This interface is for **web/frontend plugins only** — browser-side modules\n * that extend the CLI terminal UI (e.g. `@qodalis/cli-guid`, `@qodalis/cli-tetris`).\n *\n * It is **not** related to backend server processors (Node/Python/.NET).\n * Backend command processors implement their own `ICliCommandProcessor` interfaces\n * in their respective server packages and do not use `apiVersion`.\n */\nexport interface ICliModule {\n /**\n * The web plugin API version this module targets.\n *\n * This is a **frontend-only** concept used by the browser CLI runtime\n * to ensure plugin compatibility. It has no relation to backend server\n * API versioning (e.g. `/api/v1/qcli/`).\n *\n * Modules with `apiVersion` less than the runtime's `API_VERSION` are\n * rejected with a warning at boot time.\n *\n * Use the `API_VERSION` constant exported from `@qodalis/cli-core` to\n * target the current runtime version.\n */\n apiVersion: number;\n\n /** Unique module identifier, e.g. '@qodalis/cli-guid' */\n name: string;\n\n /** Semver version string */\n version?: string;\n\n /** Human-readable description */\n description?: string;\n\n /** Module names this module depends on (resolved before this module boots) */\n dependencies?: string[];\n\n /** Boot priority — lower values boot first (default: 0) */\n priority?: number;\n\n /** Command processors provided by this module */\n processors?: ICliCommandProcessor[];\n\n /** Services registered into the shared service container */\n services?: CliProvider[];\n\n /**\n * Global command guards contributed by this module. They are registered\n * when the module boots and run before every command (across all modules),\n * e.g. authentication or permission checks. See {@link ICliCommandGuard}.\n */\n guards?: ICliCommandGuard[];\n\n /**\n * Permissions this module uses (`resource:action`), registered in the\n * {@link ICliPermissionRegistry} at boot so they can be listed and granted.\n */\n permissions?: CliPermissionDefinition[];\n\n /** Module configuration, set via configure() */\n config?: Record<string, any>;\n\n /**\n * Per-locale translation maps shipped by this module.\n * Keyed by locale code (e.g. 'es', 'fr'), each value is a flat\n * key-value map of translation keys to translated strings.\n *\n * These are automatically registered with the translation service\n * during module boot — no manual onInit() code required.\n *\n * @example\n * translations: {\n * es: { 'cli.guid.description': 'Generar y validar UUIDs' },\n * fr: { 'cli.guid.description': 'Générer et valider des UUIDs' },\n * }\n */\n translations?: Record<string, Record<string, string>>;\n\n /**\n * Returns a configured copy of this module.\n * Modules should narrow the config type via a module-specific interface.\n */\n configure?(config: any): ICliModule;\n\n /** Called after services are registered and before processors are initialized */\n onInit?(context: ICliExecutionContext): Promise<void>;\n\n /**\n * Optional first-run setup flow. Called during boot if the module\n * has not been set up yet (determined by a persisted flag in the\n * key-value store). Use context.reader to prompt the user for\n * initial configuration.\n *\n * @returns true to mark setup as complete; false/throw to abort\n * (module still loads, setup re-triggers next boot).\n */\n onSetup?(context: ICliExecutionContext): Promise<boolean>;\n\n /** Called after all modules have booted and the terminal is interactive */\n onAfterBoot?(context: ICliExecutionContext): Promise<void>;\n\n /** Called when the module is being torn down */\n onDestroy?(context: ICliExecutionContext): Promise<void>;\n}\n\n/**\n * A module that accepts typed configuration via `configure()`.\n * Extend this instead of `ICliModule` when your module has a config type.\n *\n * @example\n * ```ts\n * interface MyModuleConfig { verbose?: boolean }\n * const myModule: ICliConfigurableModule<MyModuleConfig> = {\n * configure(config) { return { ...this, config }; },\n * // ...\n * };\n * ```\n */\nexport interface ICliConfigurableModule<T extends Record<string, any> = Record<string, any>> extends ICliModule {\n configure(config: T): ICliModule;\n}\n\n/**\n * Represents a logger for the CLI\n */\nexport interface ICliLogger {\n /**\n * Set the log level of the logger\n * @param level The log level to set\n * @returns void\n * @default CliLogLevel.ERROR\n */\n setCliLogLevel(level: CliLogLevel): void;\n\n /**\n * Log a general message (LOG level)\n * @param args The arguments to log\n */\n log(...args: any[]): void;\n\n /**\n * Log an informational message (INFO level)\n * @param args The arguments to log\n */\n info(...args: any[]): void;\n\n /**\n * Log a warning message (WARN level)\n * @param args The arguments to log\n */\n warn(...args: any[]): void;\n\n /**\n * Log an error message (ERROR level)\n * @param args The arguments to log\n */\n error(...args: any[]): void;\n\n /**\n * Log a debug message (DEBUG level)\n * @param args The arguments to log\n */\n debug(...args: any[]): void;\n}\n\n// Re-export from central tokens for backward compatibility\nexport { ICliTranslationService_TOKEN } from '../tokens';\n\n/**\n * Provides internationalization (i18n) support for CLI strings.\n */\nexport interface ICliTranslationService {\n /**\n * Translate a key to the current locale.\n * @param key The translation key (e.g. 'cli.echo.description')\n * @param defaultValue The English fallback string (returned if no translation found)\n * @param params Optional interpolation parameters for `{param}` placeholders\n */\n t(key: string, defaultValue: string, params?: Record<string, string | number>): string;\n\n /**\n * Get the current locale code (e.g. 'en', 'es', 'fr').\n */\n getLocale(): string;\n\n /**\n * Set the active locale.\n * @param locale The locale code to switch to\n */\n setLocale(locale: string): void;\n\n /**\n * Register translations for a locale.\n * Can be called multiple times — translations are merged, with later calls overriding earlier ones.\n * @param locale The locale code\n * @param translations Flat key-value map of translation keys to translated strings\n */\n addTranslations(locale: string, translations: Record<string, string>): void;\n\n /**\n * Get all locale codes that have at least one registered translation.\n */\n getAvailableLocales(): string[];\n}\n\n/**\n * Dependency injection container for CLI services.\n * Services are registered with string tokens and retrieved by type.\n */\nexport interface ICliServiceProvider {\n /**\n * Retrieve a service by its injection token.\n * Returns `undefined` when no provider is registered for the token.\n * For multi-provider tokens, returns the last registered value (use `getAll` for the full array).\n * @param service The token (typically a `*_TOKEN` constant) identifying the service\n * @returns The service instance cast to `T`, or `undefined` if not registered\n */\n get<T>(service: CliToken<T>): T | undefined;\n get<T = unknown>(service: any): T | undefined;\n\n /**\n * Retrieve all registered services for a multi-provider token.\n * Returns an empty array when no provider is registered for the token.\n * @param service The token (typically a `*_TOKEN` constant) identifying the service\n * @returns Array of all resolved service instances\n */\n getAll<T>(service: CliToken<T>): T[];\n getAll<T = unknown>(service: any): T[];\n\n /**\n * Retrieve a service by its injection token, throwing if not registered.\n * Use this when the service is required and its absence is a programming error.\n * For multi-provider tokens, returns the last registered value (use `getAll` for the full array).\n * @param service The token (typically a `*_TOKEN` constant) identifying the service\n * @returns The service instance, cast to `T`\n * @throws If no service is registered for the given token\n */\n getRequired<T>(service: CliToken<T>): T;\n getRequired<T = unknown>(service: any): T;\n\n /**\n * Check whether a service is registered for the given token.\n * @param service The token identifying the service\n * @returns `true` if a service is registered, `false` otherwise\n */\n has(service: any): boolean;\n\n /**\n * Register one or more service definitions.\n * @param definition A single provider or an array of providers to register\n */\n set(definition: CliProvider | CliProvider[]): void;\n\n /**\n * Remove a registration. With `provider` (the provider object passed to\n * `set`, or the registered value), only that registration is removed: for\n * a single token the previous registration becomes active again, for a\n * multi token the others remain. Without it, every registration of the\n * token is removed. Sealed tokens cannot be removed.\n * @returns Whether something was removed\n */\n remove?(service: any, provider?: unknown): boolean;\n}\n\n// ── Authentication ─────────────────────────────────────────────────\n\n/** DI token for `ICliServerAuthTokenProvider` (multi-provider) */\nexport const ICliServerAuthTokenProvider_TOKEN = createCliToken<ICliServerAuthTokenProvider>('cli-server-auth-token-provider');\n\n/** DI token for `ICliServerAuthService` */\nexport const ICliServerAuthService_TOKEN = createCliToken<ICliServerAuthService>('cli-server-auth-service');\n\n/**\n * Integrators implement this interface to supply auth credentials\n * for server requests. Multiple providers can be registered — the\n * auth service merges headers from all of them (later providers\n * override earlier ones for the same header name).\n *\n * @example\n * ```ts\n * class MyAuthProvider implements ICliServerAuthTokenProvider {\n * getHeaders(serverName: string) {\n * return { Authorization: `Bearer ${this.oauthService.getAccessToken()}` };\n * }\n * }\n *\n * // Register in a module:\n * const myModule: ICliModule = {\n * name: 'my-auth',\n * services: [{\n * provide: ICliServerAuthTokenProvider_TOKEN,\n * useValue: new MyAuthProvider(),\n * multi: true,\n * }],\n * };\n * ```\n */\nexport interface ICliServerAuthTokenProvider {\n /**\n * Return headers for a given server. Called on every request,\n * so implementations can return fresh tokens.\n *\n * @param serverName The `name` field from `CliServerConfig`\n * @returns Headers to merge into the request, or an empty object\n */\n getHeaders(serverName: string): Record<string, string>;\n\n /**\n * Optional: query parameters for WebSocket upgrades to this server (e.g. a\n * short-lived single-use ticket). Called right before each connection.\n * Return `undefined` when this provider does not handle the server.\n * When any provider returns params, headers are NOT copied into the URL\n * (so bearer tokens never appear in WebSocket URLs).\n */\n getWebSocketParams?(serverName: string): Promise<Record<string, string> | undefined>;\n}\n\n/**\n * Minimal view of the CLI server manager (token `ICliServerManager_TOKEN`),\n * e.g. for auth modules that must refresh a server after sign-in.\n */\nexport interface ICliServerManager {\n /** Reconnect a server: re-fetch its commands and reopen its event socket. */\n reconnect(name: string): Promise<{ success: boolean; commandCount: number }>;\n /**\n * The server a command should target when the user names none: the\n * default server (`server default`) when connected, otherwise the first\n * connected server. `null` when no server is connected (for example every\n * server requires a login the user has not done yet).\n */\n preferredServer?(): string | null;\n}\n\n/** Token for {@link ICliServerManager} */\nexport const ICliServerManager_TOKEN = createCliToken<ICliServerManager>('cli-server-manager');\n\n/**\n * Internal service that resolves auth headers for a server by merging:\n * 1. Static/dynamic headers from `CliServerConfig.headers`\n * 2. Headers from all registered `ICliServerAuthTokenProvider`s\n *\n * Consumers should use this service instead of reading `config.headers` directly.\n */\nexport interface ICliServerAuthService {\n /**\n * Resolve the final set of headers for a server request.\n * Merges config headers with all registered token providers.\n *\n * @param serverName The server's `name` field\n * @param configHeaders The `headers` field from `CliServerConfig`\n * @returns Merged headers ready for use in fetch/WebSocket calls\n */\n getHeaders(serverName: string, configHeaders?: import('../models/server').CliHeadersProvider): Record<string, string>;\n\n /**\n * WebSocket upgrade query params from the registered token providers, or\n * `undefined` when no provider handles this server.\n */\n getWebSocketParams?(serverName: string): Promise<Record<string, string> | undefined>;\n}\n","import type {\n ICliServerAuthService,\n ICliServiceProvider,\n} from '../interfaces/services';\nimport { ICliServerAuthService_TOKEN } from '../interfaces/services';\n\n/**\n * A static header map or a function that returns one.\n * Use a function when headers contain short-lived tokens (e.g. JWTs)\n * so that every request gets a fresh value.\n *\n * @example\n * // Static\n * headers: { 'X-Api-Key': 'abc123' }\n *\n * // Dynamic (token refresh)\n * headers: () => ({ Authorization: `Bearer ${auth.getToken()}` })\n */\nexport type CliHeadersProvider =\n | Record<string, string>\n | (() => Record<string, string>);\n\n/**\n * Resolves a CliHeadersProvider to a plain header map.\n */\nexport function resolveHeaders(\n provider?: CliHeadersProvider,\n): Record<string, string> {\n if (!provider) return {};\n return typeof provider === 'function' ? provider() : provider;\n}\n\n/**\n * Resolves auth headers for a server request using the auth service if available,\n * otherwise falls back to resolving config headers directly.\n *\n * This is the single entry point plugins should use to get headers for server requests.\n *\n * @param services The service provider (from context.services)\n * @param serverName The server name\n * @param configHeaders The headers from CliServerConfig\n * @returns Resolved headers ready for use\n */\nexport function resolveServerHeaders(\n services: ICliServiceProvider | undefined,\n serverName: string,\n configHeaders?: CliHeadersProvider,\n): Record<string, string> {\n if (services) {\n const authService = services.get<ICliServerAuthService>(\n ICliServerAuthService_TOKEN,\n );\n if (authService) {\n return authService.getHeaders(serverName, configHeaders);\n }\n }\n return resolveHeaders(configHeaders);\n}\n\n/**\n * Configuration for a remote CLI server\n */\nexport type CliServerConfig = {\n /** Unique identifier, used for namespacing commands */\n name: string;\n\n /** Base URL of the server, e.g. \"https://api.example.com\" */\n url: string;\n\n /** Whether this server is enabled. @default true */\n enabled?: boolean;\n\n /**\n * Custom headers sent with every request (e.g. auth tokens).\n * Can be a static object or a function that returns fresh headers\n * on each call (useful for rotating tokens / JWTs).\n */\n headers?: CliHeadersProvider;\n\n /** Request timeout in milliseconds. @default 30000 */\n timeout?: number;\n\n /**\n * Copy `headers` into WebSocket URLs as `_header_<name>` query params\n * (the behaviour up to 2.0.0). Off by default: tokens in URLs end up in\n * access, proxy and CDN logs and in browser history. Without it, sockets\n * authenticate with a single-use ticket from\n * `POST /api/v1/qcli/sessions/ws-ticket` (users plugin) fetched with these\n * headers. Only for servers that still read `_header_Authorization`, such\n * as a shell `accessToken` without the users plugin.\n * @deprecated use the users plugin's WebSocket tickets\n */\n unsafeHeadersInWebSocketUrl?: boolean;\n};\n\n/**\n * Which rows of a longer result a server table holds. Commands that page (`--skip`,\n * `--take`) send it; servers also send it, with `truncated`, when they cut a\n * table from a command that does not page.\n */\nexport type CliServerTablePage = {\n /** Rows skipped before these */\n skip: number;\n /** Rows asked for */\n take: number;\n /** All rows, when the command knows it */\n total?: number;\n /** Whether more rows follow */\n hasMore: boolean;\n /** The server cut the table: `--skip` will not show the rest */\n truncated?: boolean;\n};\n\n/**\n * A single output item in a server response\n */\nexport type CliServerOutput =\n | {\n type: 'text';\n value: string;\n style?: 'success' | 'error' | 'info' | 'warning';\n }\n | { type: 'table'; headers: string[]; rows: string[][]; page?: CliServerTablePage }\n | { type: 'list'; items: string[]; ordered?: boolean }\n | { type: 'json'; value: any }\n | { type: 'key-value'; entries: { key: string; value: string }[] };\n\n/**\n * Structured response from a server command execution\n */\nexport type CliServerResponse = {\n exitCode: number;\n outputs: CliServerOutput[];\n};\n\n/**\n * Metadata about a remote command processor, returned by GET /api/qcli/commands\n */\nexport type CliServerCommandDescriptor = {\n command: string;\n description?: string;\n version?: string;\n parameters?: {\n name: string;\n aliases?: string[];\n description: string;\n required: boolean;\n type: string;\n defaultValue?: any;\n }[];\n processors?: CliServerCommandDescriptor[];\n};\n\n/**\n * Server capabilities returned by GET /api/qcli/capabilities\n */\nexport type CliServerCapabilities = {\n /** Whether this server supports remote shell access */\n shell: boolean;\n /** Server operating system (e.g. \"linux\", \"win32\", \"darwin\") */\n os?: string;\n /** Path to the shell binary on the server */\n shellPath?: string;\n /** Server version string */\n version?: string;\n /** Whether this server supports SSE streaming execution */\n streaming?: boolean;\n};\n","import {\n ITerminalInitOnlyOptions,\n ITerminalOptions,\n ITheme,\n} from '@xterm/xterm';\nimport { CliIcon } from './icons';\nimport { CliServerConfig } from './server';\n\n/**\n * Represents a package source for the CLI package manager\n */\nexport interface CliPackageSource {\n /**\n * The name of the source, e.g. 'local', 'unpkg', 'jsdelivr'\n */\n name: string;\n\n /**\n * The base URL for fetching package files, e.g. 'http://localhost:3000/'\n */\n url: string;\n\n /**\n * The kind of source.\n * - 'registry': npm-compatible registry with search API (e.g. npmjs.org, Verdaccio)\n * - 'file': static file server, packages are discovered by probing known paths\n * @default 'file'\n */\n kind?: 'registry' | 'file';\n}\n\n/**\n * Represents a log level for the CLI\n */\nexport enum CliLogLevel {\n None = 0,\n DEBUG = 1,\n LOG = 2,\n INFO = 3,\n WARN = 4,\n ERROR = 5,\n}\n\n/**\n * How the CLI reports its startup.\n */\nexport interface CliBootOptions {\n /**\n * Report each boot step (terminal, services, servers, modules) in the\n * terminal while the CLI starts. When `false`, a spinner is shown instead.\n * Users can override it with `configure set system.bootLogs false`.\n * @default true\n */\n showLogs?: boolean;\n\n /**\n * Keep the boot report on screen after startup instead of clearing it\n * when the terminal is ready. Warnings and errors are kept either way.\n * @default false\n */\n keepLogs?: boolean;\n\n /**\n * Steps taking at least this many milliseconds are highlighted as slow.\n * @default 500\n */\n slowStepMs?: number;\n}\n\n/**\n * The name and icon an application ships the CLI under. Anything left out\n * keeps Qodalis CLI's; the copyright line, the docs link and `version` stay\n * Qodalis CLI's.\n */\nexport interface CliBranding {\n /**\n * The product name: the welcome banner (\"Welcome to RateBell CLI\", shown\n * instead of the Qodalis CLI art), the panel's title and the startup log.\n * `version` adds it to the Qodalis CLI details.\n * @default 'Web CLI' (panel title 'CLI')\n */\n name?: string;\n\n /**\n * The panel's icon (header and hide tab) instead of the terminal glyph:\n * an image URL (http(s), a path, or a `data:image` URL).\n */\n icon?: string;\n}\n\n/**\n * Options for the CLI\n */\nexport type CliOptions = Record<string, any> & {\n /**\n * How the CLI reports its startup (boot log, spinner).\n */\n boot?: CliBootOptions;\n\n /**\n * The name and icon the CLI shows (welcome banner, panel title, startup\n * log); defaults to Qodalis CLI's.\n */\n branding?: CliBranding;\n\n /**\n * Terminal colors set by the host: `'dark'`, `'light'`, `'auto'`, a terminal\n * theme name or a {@link CliPanelTheme} (its `terminal`). It is the default:\n * a theme the user applies with the `theme` command wins over it until\n * `theme reset`. In a panel, this is the panel's `theme`.\n */\n theme?: CliPanelThemeInput;\n\n /**\n * Custom terminal options\n */\n terminalOptions?: ITerminalOptions & ITerminalInitOnlyOptions;\n\n /**\n * The minimum log level to display\n */\n logLevel?: CliLogLevel;\n\n /**\n * Custom package sources for the package manager.\n * Built-in sources (unpkg, jsdelivr) are always available.\n */\n packageSources?: {\n /**\n * Name of the primary source. Defaults to 'unpkg'.\n */\n primary?: string;\n\n /**\n * Additional custom sources\n */\n sources?: CliPackageSource[];\n };\n\n /**\n * Remote CLI servers to connect to.\n * Commands from each server are discovered and registered as proxy processors.\n */\n servers?: CliServerConfig[];\n\n /**\n * Whether the `eval` / `js` / `calc` command is enabled.\n * Disabled by default because it runs arbitrary JavaScript via `eval()`\n * in the host page context — a security risk in multi-tenant or\n * user-facing deployments.\n * @default false\n */\n allowEval?: boolean;\n};\n\n/**\n * Represents a package that can be installed\n */\nexport interface Package {\n /**\n * The name of the package\n */\n name: string;\n\n /**\n * The global name used to access the package\n */\n globalName?: string;\n\n /**\n * The version of the package\n */\n version: string;\n\n /**\n * The unpkg url to the package\n */\n url: string;\n\n /**\n * The dependencies for the module\n */\n dependencies?: Package[];\n}\n\n/**\n * Represents command processor metadata\n */\nexport type CliProcessorMetadata = Record<string, any> & {\n /**\n * If true, the processor is sealed and cannot be replaced or removed.\n * Sealed processors can still be extended (wrapped) by processors with `extendsProcessor = true`.\n */\n sealed?: boolean;\n\n /**\n * The command's text is code or other literal input (`eval`): the engine\n * passes the whole line as typed, without operators (`|`, `;`, `&&`,\n * `>`) or expansion of `$(...)`, `$VAR`, braces and wildcards, so\n * `eval [1,2].map(x => x * 2)` keeps its `=>`, `*` and `${...}`.\n */\n literalInput?: boolean;\n\n /**\n * If true, the processor requires the server to be running\n */\n requireServer?: boolean;\n\n /**\n * The module the processor belongs to\n */\n module?: string;\n\n /**\n * An icon to display for the processor\n */\n icon?: CliIcon | string;\n\n /**\n * The minimum required version of @qodalis/cli-core for this processor.\n * If the installed core version is lower, the processor will be skipped during boot.\n */\n requiredCoreVersion?: string;\n\n /**\n * The minimum required version of @qodalis/cli for this processor.\n * If the installed CLI version is lower, the processor will be skipped during boot.\n */\n requiredCliVersion?: string;\n\n /**\n * If true, the command requires a signed-in user. Enforced by a\n * core guard that activates when an auth module registers an\n * `ICliAuthorizationService` (e.g. `@qodalis/cli-users`); without one the\n * flag is informational.\n */\n requireAuth?: boolean;\n\n /**\n * The signed-in user must belong to at least one of these groups\n * (e.g. `['admin']`). Implies `requireAuth`. Enforced like `requireAuth`.\n */\n requiredGroups?: string[];\n\n /**\n * The signed-in user must hold **all** of these permissions\n * (e.g. `['users:create']`), granted through their groups (roles).\n * Implies `requireAuth`. Enforced like `requireAuth`.\n */\n requiredPermissions?: string[];\n\n /**\n * If true, the processor is hidden from the help command listing.\n * The command still works when typed directly and `help <command>` still shows its details.\n */\n hidden?: boolean;\n};\n\n/**\n * Represents a state configuration for the CLI processor\n */\nexport type CliStateConfiguration = {\n /**\n * The initial state for the processor\n */\n initialState: Record<string, any>;\n\n /**\n * The store identifier for the processor, if any\n * @remarks If the store identifier is not set, the processor command name is used\n */\n storeName?: string;\n\n /**\n * Save the state after every change, so `persist()` does not have to be\n * called. Changes made in the same tick are saved together.\n * @default false\n */\n autoPersist?: boolean;\n\n /**\n * Version of the state's shape. When the saved state has an older\n * version, `migrate` converts it while it is loaded. Saved state without\n * a version counts as version 0.\n */\n version?: number;\n\n /**\n * Convert saved state of version `fromVersion` to the current\n * {@link version}. The result is merged over `initialState`.\n */\n migrate?: (state: CliState, fromVersion: number) => CliState;\n\n /**\n * Apply changes saved by other tabs and terminals of the same browser.\n * @default true\n */\n syncAcrossTabs?: boolean;\n\n /**\n * Where the state lives:\n * - `'global'`: saved in the browser and shared by every terminal and tab\n * (each save merges the keys it changed, so terminals changing\n * different keys never overwrite each other).\n * - `'user'`: like `'global'`, but saved separately for each signed-in\n * user (signed out, the state is shared); it switches when the user\n * signs in or out.\n * - `'session'`: this terminal only, in memory; never saved or shared.\n * @default 'global'\n */\n scope?: CliStateScope;\n};\n\n/** See {@link CliStateConfiguration.scope}. */\nexport type CliStateScope = 'global' | 'user' | 'session';\n\n/** Options of a state store (see {@link CliStateConfiguration}). */\nexport type CliStateStoreOptions = Pick<\n CliStateConfiguration,\n 'autoPersist' | 'version' | 'migrate' | 'syncAcrossTabs' | 'scope'\n>;\n\nexport type CliState = Record<string, any>;\n\n/**\n * Position of the CLI panel relative to the viewport edge.\n * - `'bottom'` — anchored to the bottom (default)\n * - `'top'` — anchored to the top\n * - `'left'` — anchored to the left (vertical layout)\n * - `'right'` — anchored to the right (vertical layout)\n */\nexport type CliPanelPosition = 'bottom' | 'top' | 'left' | 'right';\n\n/**\n * Alignment of the hidden-mode tab along its viewport edge.\n * - `'start'` — left for horizontal panels, top for vertical panels\n * - `'center'` — centered along the edge (default)\n * - `'end'` — right for horizontal panels, bottom for vertical panels\n */\nexport type CliPanelHideAlignment = 'start' | 'center' | 'end';\n\n/**\n * Configuration for the CLI panel component.\n */\nexport interface CliPanelConfig {\n /**\n * Whether the CLI should be collapsed by default.\n * @default true\n */\n isCollapsed?: boolean;\n\n /**\n * Whether the panel starts hidden (showing only the small tab/arrow).\n * @default false\n */\n isHidden?: boolean;\n\n /**\n * Position of the panel relative to the viewport.\n * @default 'bottom'\n */\n position?: CliPanelPosition;\n\n /**\n * Whether the close button is shown.\n * @default true\n */\n closable?: boolean;\n\n /**\n * Whether the panel can be resized by dragging.\n * @default true\n */\n resizable?: boolean;\n\n /**\n * Whether the hide button is shown. When hidden, the panel collapses\n * to a small tab at the viewport edge.\n * @default true\n */\n hideable?: boolean;\n\n /**\n * Alignment of the hide tab along the panel's viewport edge.\n * For bottom/top: 'start' = left, 'center', 'end' = right.\n * For left/right: 'start' = top, 'center', 'end' = bottom.\n * @default 'center'\n */\n hideAlignment?: CliPanelHideAlignment;\n\n /**\n * When true, the panel's chrome (header, border, background) automatically\n * syncs its colors with the active terminal theme. CSS custom properties\n * are derived from the xterm theme and applied as inline styles.\n * @default false\n */\n syncTheme?: boolean;\n\n /**\n * The look of the panel and of every terminal in it:\n * - `'dark'` (default) or `'light'`: the built-in palettes\n * - `'auto'`: light or dark, following the system's `prefers-color-scheme`\n * - the name of a terminal theme (`'dracula'`, `'nord'`, ... see `theme list`):\n * the terminals use it and the panel's colors are derived from it\n * - a {@link CliPanelTheme}: a base palette with your own colors, font and corners\n *\n * Changing it while the panel is open restyles the panel and its terminals, so a\n * host can pass its own light/dark setting through. It is the default: a theme\n * the user applies with the `theme` command wins over it (and restyles the\n * panel) until `theme reset`.\n * @default 'dark'\n */\n theme?: CliPanelThemeInput;\n}\n\n/** The built-in panel palettes. */\nexport type CliPanelColorScheme = 'light' | 'dark';\n\n/** What {@link CliPanelConfig.theme} accepts. */\nexport type CliPanelThemeInput =\n CliPanelColorScheme | 'auto' | (string & {}) | CliPanelTheme;\n\n/** Colors of the panel's chrome (header, tabs, menus, hide tab). Any CSS color. */\nexport interface CliPanelColors {\n /** Panel background behind the terminals. */\n background: string;\n /** Header, tab bar and menus. */\n headerBackground: string;\n border: string;\n text: string;\n /** Labels, inactive tabs and icons. */\n textSecondary: string;\n /** Active tab, focus rings and highlights. */\n accent: string;\n /** Buttons and menu items under the pointer. */\n hoverBackground: string;\n /** Buttons while pressed, the selected menu item. */\n activeBackground: string;\n /** Destructive menu items and error states. */\n danger: string;\n /** Shadow of the panel, menus and the hide tab (a CSS box-shadow color). */\n shadow: string;\n}\n\n/** A custom panel theme. Every field is optional; unset ones come from `base`. */\nexport interface CliPanelTheme {\n /**\n * The palette this theme starts from. With a `terminal` theme and no base, it is\n * chosen from the terminal's background (light or dark).\n * @default 'dark'\n */\n base?: CliPanelColorScheme | 'auto';\n /**\n * Terminal colors: a terminal theme name (`'dracula'`) or xterm theme colors.\n * Defaults to the base palette's terminal theme.\n */\n terminal?: string | ITheme;\n /**\n * Panel colors. Unset colors come from the base palette, or are derived from\n * `terminal` when it is given.\n */\n colors?: Partial<CliPanelColors>;\n /** Font of the panel's chrome (the terminal font is `terminalOptions.fontFamily`). */\n fontFamily?: string;\n /** Corner radius of buttons, tabs and menus, e.g. `'4px'`; `'0'` for square corners. */\n radius?: string;\n}\n","/** Ownership metadata attached to files, directories, or other resources */\nexport interface ICliOwnership {\n /** User ID of the owner */\n uid: string;\n /** Primary group name */\n gid: string;\n}\n\n/** Default file permissions: rw-r--r-- (644) */\nexport const DEFAULT_FILE_PERMISSIONS = 'rw-r--r--';\n\n/** Default directory permissions: rwxr-xr-x (755) */\nexport const DEFAULT_DIR_PERMISSIONS = 'rwxr-xr-x';\n","export * from './command';\nexport * from './colors';\nexport * from './icons';\nexport * from './server';\nexport * from './options';\nexport * from './services';\nexport * from './users';\nexport * from './permissions';\nexport * from './notification';\n\nimport { CliForegroundColor, CliBackgroundColor } from './colors';\nimport { CliIcon } from './icons';\nimport { CliLogLevel } from './options';\n\nexport const enums = {\n CliForegroundColor,\n CliBackgroundColor,\n CliIcon,\n CliLogLevel,\n};\n","/**\n * A key a full-screen command reads while it runs (an editor, a game).\n * Hosts on touch screens show these as buttons, since on-screen keyboards\n * lack Ctrl, Esc and the arrows; help screens can list them.\n */\nexport interface ICliCommandKey {\n /** Short button text: `'Save'`, `'↑'`, `'FLAG'` */\n label: string;\n /**\n * What the key sends to the command's `onData`, as a terminal would:\n * `'\\x13'` (Ctrl+S), `'\\x1b[A'` (Up), `' '` (Space), `'f'`\n */\n data: string;\n /** The usual key, for help: `'Ctrl+S'`, `'Space'`, `'F'` */\n key?: string;\n /** What the key does: `'Save the file'`; also the button's accessible name */\n description?: string;\n /** Repeats while held down (arrows, Delete) */\n repeat?: boolean;\n}\n\n/** The controls of a full-screen command, for hosts that show on-screen keys. */\nexport interface ICliCommandControls {\n /** The keys the command reads, most used first */\n keys: ICliCommandKey[];\n /**\n * The command also reads typed text (an editor, a word game): touch hosts\n * keep the on-screen keyboard open next to the keys. Otherwise they may\n * close it so the command gets the whole screen.\n */\n textInput?: boolean;\n /** `data` of the key a tap on the screen sends (e.g. rotate, reveal), if any */\n tap?: string;\n /** Swipes on the screen send the arrow keys (games on a board) */\n swipe?: boolean;\n}\n\n/** Terminal input for the keys commands commonly declare. */\nexport const CliKeyData = {\n up: '\\x1b[A',\n down: '\\x1b[B',\n right: '\\x1b[C',\n left: '\\x1b[D',\n home: '\\x1b[H',\n end: '\\x1b[F',\n pageUp: '\\x1b[5~',\n pageDown: '\\x1b[6~',\n delete: '\\x1b[3~',\n escape: '\\x1b',\n enter: '\\r',\n backspace: '\\x7f',\n space: ' ',\n /** Ctrl+<letter>: `ctrl('s')` is `'\\x13'` */\n ctrl: (letter: string): string =>\n String.fromCharCode(letter.toUpperCase().charCodeAt(0) - 64),\n} as const;\n","import { createCliToken } from '../models/services';\nimport { CliProcessCommand } from '../models';\nimport { ICliCommandProcessor } from './command-processor';\nimport { ICliExecutionContext } from './execution-context';\n\n/**\n * Result of a guard check.\n *\n * - `true` or `undefined`: allow the command.\n * - `false`: block it with the generic message `<command>: permission denied`.\n * - a non-empty `string`: block it and print this message.\n * - `{ allowed, message }`: explicit form; `message` is used when `allowed` is false.\n */\nexport type CliCommandGuardResult =\n | boolean\n | string\n | void\n | { allowed: boolean; message?: string };\n\n/**\n * A global command guard: a check that runs before **every** command, across\n * all processors and modules, and can block it.\n *\n * Use guards for cross-cutting policies such as authentication, permission\n * checks, feature flags, maintenance windows or rate limiting, instead of\n * repeating the check inside each processor.\n *\n * ## When guards run\n *\n * For each command the executor:\n * 1. parses the input and resolves the processor (and sub-processor);\n * 2. handles global parameters such as `--help` (help is never guarded);\n * 3. extracts the positional value into `command.value`;\n * 4. **runs the guards**;\n * 5. validates required values/parameters, runs processor hooks and finally\n * calls `processCommand`.\n *\n * Guards run in ascending `priority` (default `0`). For each guard the executor\n * calls `appliesTo` (if defined) and skips the guard when it returns `false`;\n * otherwise it awaits `canActivate`. The **first** guard that blocks stops the\n * chain: its message is written as an error and the command exits with code\n * `-1`. A guard that throws (in `appliesTo` or `canActivate`) also blocks the\n * command, so a broken guard fails closed.\n *\n * ## Access to the context\n *\n * Both `appliesTo` and `canActivate` receive the {@link ICliExecutionContext}\n * of the command about to run, so a guard can:\n * - resolve services with `context.services.get(...)` / `getRequired(...)`\n * (e.g. a policy, feature-flag or permission service registered by any\n * module) to decide **what** should be guarded and **whether** it may run;\n * - inspect `context.userSession` for the signed-in user and their groups;\n * - read the processor's `metadata` (for example `requireAuth` or\n * `requiredGroups`) and the parsed `command` (`command.value`, `command.args`);\n * - prompt the user via `context.reader` (e.g. a confirmation guard).\n *\n * Guards should not write to the terminal to report a denial; return a message\n * instead so the executor prints it consistently.\n *\n * ## Registering guards\n *\n * The preferred way is the module's `guards` array; the boot sequence\n * registers each entry as a multi-provider under {@link ICliCommandGuard_TOKEN}.\n * Several modules can contribute guards; all of them run.\n *\n * ```ts\n * const billingModule: ICliModule = {\n * apiVersion: 2,\n * name: 'billing',\n * processors: [new InvoiceProcessor()],\n * guards: [billingGuard],\n * };\n * ```\n *\n * Guards can also be added at runtime (e.g. from `onInit`):\n *\n * ```ts\n * context.services.set({ provide: ICliCommandGuard_TOKEN, useValue: myGuard, multi: true });\n * ```\n *\n * ## Example: policy resolved from a service\n *\n * ```ts\n * const featureFlagGuard: ICliCommandGuard = {\n * name: 'feature-flags',\n * // Only guard commands that are behind a flag; the flag list comes from a service\n * appliesTo: (processor, _command, context) =>\n * context.services.get<FeatureFlags>(FeatureFlags_TOKEN)?.isFlagged(processor.command) ?? false,\n * canActivate: async (_command, processor, context) => {\n * const flags = context.services.getRequired<FeatureFlags>(FeatureFlags_TOKEN);\n * return (await flags.isEnabled(processor.command, context.userSession?.user))\n * ? true\n * : `${processor.command}: not available for your account`;\n * },\n * };\n * ```\n *\n * ## Without a guard-providing module\n *\n * Guards are opt-in. When no guard is registered every command runs as before.\n * The engine registers three built-in guards that enforce the processor access\n * metadata (`requireAuth`, `requiredGroups`, `requiredPermissions`); they stay\n * inactive until an auth module (e.g. `@qodalis/cli-users`) registers an\n * `ICliAuthorizationService`, so without one that metadata is informational.\n */\nexport interface ICliCommandGuard {\n /** Unique name, shown in diagnostics when the guard throws. */\n name: string;\n\n /** Execution order; lower runs first. Defaults to `0`. */\n priority?: number;\n\n /**\n * Optional filter deciding whether this guard is relevant for the command.\n * Return `false` to skip the guard. When omitted the guard applies to\n * every command. May be async, and may use `context` to resolve services.\n */\n appliesTo?(\n processor: ICliCommandProcessor,\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): boolean | Promise<boolean>;\n\n /**\n * Decide whether the command may run. See {@link CliCommandGuardResult}\n * for the accepted return values.\n */\n canActivate(\n command: CliProcessCommand,\n processor: ICliCommandProcessor,\n context: ICliExecutionContext,\n ): CliCommandGuardResult | Promise<CliCommandGuardResult>;\n}\n\n/** DI token for {@link ICliCommandGuard}; register guards as multi-providers. */\nexport const ICliCommandGuard_TOKEN = createCliToken<ICliCommandGuard>('cli-command-guard');\n","/**\n * Permission strings are `resource:action` (for example `users:create`).\n * A trailing `*` segment matches anything at that level and below; a `*`\n * in any other position matches exactly one segment:\n *\n * | granted | matches |\n * |---------------|---------------------------------------|\n * | `*` | every permission |\n * | `users:*` | `users:create`, `users:delete`, ... |\n * | `*:read` | `users:read`, `groups:read`, ... |\n * | `users:read` | only `users:read` |\n *\n * Matching is case-insensitive.\n */\nexport function cliPermissionMatches(granted: string, required: string): boolean {\n const g = granted.trim().toLowerCase().split(':');\n const r = required.trim().toLowerCase().split(':');\n for (let i = 0; i < g.length; i++) {\n if (g[i] === '*' && i === g.length - 1) return true;\n if (i >= r.length || (g[i] !== '*' && g[i] !== r[i])) return false;\n }\n return g.length === r.length;\n}\n\n/** True when any granted permission matches `required`. */\nexport function cliHasPermission(granted: readonly string[] | undefined, required: string): boolean {\n return !!granted?.some((p) => cliPermissionMatches(p, required));\n}\n\n/** The subset of `required` permissions not covered by `granted`. */\nexport function cliMissingPermissions(\n granted: readonly string[] | undefined,\n required: readonly string[],\n): string[] {\n return required.filter((r) => !cliHasPermission(granted, r));\n}\n\n/** Union of permissions, de-duplicated, preserving first-seen order. */\nexport function cliMergePermissions(...lists: (readonly string[] | undefined)[]): string[] {\n const seen = new Set<string>();\n const out: string[] = [];\n for (const list of lists) {\n for (const p of list ?? []) {\n const key = p.trim();\n if (key && !seen.has(key.toLowerCase())) {\n seen.add(key.toLowerCase());\n out.push(key);\n }\n }\n }\n return out;\n}\n\n/**\n * Built-in permissions used by the users module. Other modules define their\n * own (e.g. `deploy:run`); any string in `resource:action` form works.\n */\n/** Permissions for remote CLI server features. */\nexport const CliServerPermissions = {\n /** Open a remote shell on a server (`ssh`) */\n ShellExecute: 'shell:execute',\n} as const;\n\nexport const CliUsersPermissions = {\n UsersRead: 'users:read',\n UsersCreate: 'users:create',\n UsersUpdate: 'users:update',\n UsersDelete: 'users:delete',\n GroupsRead: 'groups:read',\n GroupsCreate: 'groups:create',\n GroupsUpdate: 'groups:update',\n GroupsDelete: 'groups:delete',\n SessionsRead: 'sessions:read',\n SessionsRevoke: 'sessions:revoke',\n AuditRead: 'audit:read',\n AuditClear: 'audit:clear',\n} as const;\n","import { ICliOwnership } from '../models/permissions';\nimport { ICliExecutionContext } from './execution-context';\nimport {\n ICliAuthorizationService_TOKEN,\n ICliPermissionRegistry_TOKEN,\n} from '../tokens';\nimport { cliHasPermission } from '../utils/permissions';\n\nexport { ICliAuthorizationService_TOKEN, ICliPermissionRegistry_TOKEN };\n\n/**\n * A permission an extension uses, declared so tools (`perms --list`,\n * `groupmod --grant` completion, docs) can show it. Declaring is optional:\n * any `resource:action` string can be granted and checked.\n */\nexport interface CliPermissionDefinition {\n /** Permission string, `resource:action` (e.g. `files:chown`). */\n name: string;\n /** Human readable description. */\n description?: string;\n /** Module that declared it (filled in at registration). */\n module?: string;\n}\n\n/** Registry of permissions declared by modules (`ICliModule.permissions`). */\nexport interface ICliPermissionRegistry {\n register(definitions: CliPermissionDefinition[], module?: string): void;\n list(): CliPermissionDefinition[];\n get(name: string): CliPermissionDefinition | undefined;\n /** Remove the permissions registered by `module` (when it is unloaded). */\n unregister?(module: string): void;\n}\n\n/** The identity checks are made against. */\nexport interface ICliPrincipal {\n /** User id */\n id: string;\n /** Login name (used as file owner) */\n name: string;\n /** Group (role) names */\n groups: string[];\n /** Effective permissions (union of the groups' permissions) */\n permissions: string[];\n}\n\n/** rwx-style protected resource (files, directories, or anything an extension owns). */\nexport interface ICliProtectedResource {\n ownership?: ICliOwnership;\n /** 9-char mode string, e.g. `rwxr-x---` */\n permissions?: string;\n}\n\nexport type CliAccessAction = 'read' | 'write' | 'execute';\n\n/**\n * Authorization service. Provided by an auth module (the users module provides\n * one in local and in server mode). Extensions should use the helpers\n * {@link cliAuthorize} / {@link cliCanAccess}, which allow everything when no\n * authorization service is registered.\n */\nexport interface ICliAuthorizationService {\n /** The signed-in principal, or undefined when nobody is signed in. */\n getPrincipal(): ICliPrincipal | undefined;\n\n /** Does the current principal hold `permission` (wildcards honoured)? */\n can(permission: string): boolean;\n\n /**\n * rwx check on a resource for the current principal (owner / group / other).\n * Principals holding `*` or any of `bypassPermissions` are always allowed.\n * Resources without a mode or ownership are allowed.\n */\n canAccess(\n resource: ICliProtectedResource,\n action: CliAccessAction,\n bypassPermissions?: string[],\n ): boolean;\n}\n\n/** Thrown when an operation is not permitted. The message is user facing. */\nexport class CliAccessDeniedError extends Error {\n readonly code = 'EACCES';\n\n constructor(message = 'permission denied') {\n super(message);\n this.name = 'CliAccessDeniedError';\n Object.setPrototypeOf(this, CliAccessDeniedError.prototype);\n }\n}\n\n/** True for {@link CliAccessDeniedError} (also across bundle copies). */\nexport function isCliAccessDeniedError(error: unknown): error is CliAccessDeniedError {\n return (\n error instanceof CliAccessDeniedError ||\n (!!error && typeof error === 'object' && (error as any).name === 'CliAccessDeniedError')\n );\n}\n\nfunction authorizationService(\n context: Pick<ICliExecutionContext, 'services'>,\n): ICliAuthorizationService | undefined {\n try {\n return context.services.get<ICliAuthorizationService>(ICliAuthorizationService_TOKEN);\n } catch {\n return undefined;\n }\n}\n\n/**\n * Check a permission for the current principal. Returns `true` when no\n * authorization service is registered (no auth module loaded).\n */\nexport function cliAuthorize(\n context: Pick<ICliExecutionContext, 'services'>,\n permission: string,\n): boolean {\n const auth = authorizationService(context);\n return auth ? auth.can(permission) : true;\n}\n\n/**\n * rwx check for the current principal. Returns `true` when no authorization\n * service is registered.\n */\nexport function cliCanAccess(\n context: Pick<ICliExecutionContext, 'services'>,\n resource: ICliProtectedResource,\n action: CliAccessAction,\n bypassPermissions?: string[],\n): boolean {\n const auth = authorizationService(context);\n return auth ? auth.canAccess(resource, action, bypassPermissions) : true;\n}\n\n/**\n * Reference rwx evaluation shared by implementations of\n * {@link ICliAuthorizationService.canAccess}.\n */\nexport function cliEvaluateAccess(\n principal: ICliPrincipal | undefined,\n resource: ICliProtectedResource,\n action: CliAccessAction,\n bypassPermissions: string[] = [],\n): boolean {\n const mode = resource.permissions;\n const owner = resource.ownership;\n if (!mode || mode.length < 9 || !owner) return true;\n if (principal && (cliHasPermission(principal.permissions, '*') ||\n bypassPermissions.some((p) => cliHasPermission(principal.permissions, p)))) {\n return true;\n }\n let offset = 6; // other\n if (principal) {\n if (owner.uid === principal.name || owner.uid === principal.id) offset = 0;\n else if (principal.groups.some((g) => g.toLowerCase() === owner.gid.toLowerCase())) offset = 3;\n }\n const index = offset + (action === 'read' ? 0 : action === 'write' ? 1 : 2);\n return mode.charAt(index) !== '-';\n}\n","import { createCliToken } from '../models/services';\nimport { Observable } from 'rxjs';\n\n/**\n * One event on the CLI event bus.\n */\nexport interface CliEvent<T = unknown> {\n /** Namespaced type, e.g. `package:installed` or `todo:added`. */\n type: string;\n /** Event payload. */\n data: T;\n /** Who emitted it (module or command name), when known. */\n source?: string;\n /** When it was emitted (ms since epoch). */\n timestamp: number;\n}\n\nexport type CliEventHandler<T = unknown> = (event: CliEvent<T>) => void;\n\n/**\n * Payload types of the known events, keyed by event type. The built-in\n * events are listed here; plugins add their own with declaration merging:\n *\n * ```ts\n * declare module '@qodalis/cli-core' {\n * interface CliEventMap {\n * 'todo:added': { id: number; text: string };\n * }\n * }\n * ```\n *\n * Events not listed can still be emitted and received; their payload is\n * then `unknown`.\n */\nexport interface CliEventMap {\n /** Boot finished: modules are set up and the terminal accepts input. */\n 'boot:completed': { durationMs: number; modules: number; commands: number };\n\n /** A command line finished running (typed, or run with `engine.execute`). */\n 'command:executed': {\n command: string;\n exitCode: number;\n durationMs: number;\n };\n\n /** A module (plugin) was booted, at startup or later (e.g. `pkg add`). */\n 'module:loaded': { name: string; version?: string; commands: number };\n /** A module was unloaded (e.g. `pkg remove`, or before `pkg update`). */\n 'module:unloaded': { name: string };\n\n /** `pkg add` installed a package. */\n 'package:installed': { name: string; version: string };\n /** `pkg update` changed a package's version. */\n 'package:updated': {\n name: string;\n version: string;\n previousVersion: string;\n };\n /** `pkg remove` removed a package. */\n 'package:removed': { name: string; version: string };\n\n /** A server connected (at boot, or after a reconnect). */\n 'server:connected': {\n name: string;\n url: string;\n commands: number;\n reconnected: boolean;\n };\n /** A server could not be reached at boot. */\n 'server:unavailable': { name: string; url: string };\n /** A connected server went away. */\n 'server:disconnected': { name: string };\n /** An event pushed by a server over its event socket. */\n 'server:event': { server: string; type: string; data: unknown };\n\n /** Background service lifecycle (`service:registered`, `service:started`, ...). */\n 'service:registered': { name: string; [key: string]: unknown };\n 'service:started': { name: string; [key: string]: unknown };\n 'service:stopped': { name: string; [key: string]: unknown };\n 'service:completed': { name: string; [key: string]: unknown };\n 'service:failed': { name: string; error?: string; [key: string]: unknown };\n 'service:status': { name: string; [key: string]: unknown };\n /** A custom event emitted by a background service with `context.emit()`. */\n 'service:event': { service: string; type: string; data: unknown };\n\n /** A setting changed with `configure` (`category` is `system` or a plugin key). */\n 'config:changed': { category: string; key: string; value: unknown };\n /** A configuration category was reset to its defaults. */\n 'config:reset': { category: string };\n\n /** The signed-in user changed (sign-in, sign-out, `su`). */\n 'session:changed': { user?: string };\n}\n\n/** Event types with a known payload. */\nexport type CliEventType = keyof CliEventMap;\n\n/** Payload of event `K`: from {@link CliEventMap}, or `unknown`. */\nexport type CliEventData<K extends string> = K extends CliEventType\n ? CliEventMap[K]\n : unknown;\n\n/**\n * Publish/subscribe bus shared by the system, modules and commands of one\n * terminal. Handlers run synchronously in subscription order; a failing\n * handler is logged and does not affect the others or the emitter.\n *\n * Patterns: an exact type (`package:installed`), a namespace wildcard\n * (`package:*`) or `*` for everything.\n *\n * Events live in memory: each terminal has its own bus for its lifetime,\n * with a short recent history, and nothing is persisted.\n *\n * Get it from a command or module with `context.events`, or from the\n * services container with {@link ICliEventBus_TOKEN}.\n */\nexport interface ICliEventBus {\n /**\n * Emit an event to every matching handler.\n *\n * ```ts\n * bus.emit('package:installed', { name, version }); // checked against CliEventMap\n * bus.emit<TodoAdded>('todo:added', { id, text }); // explicit payload type\n * bus.emit('todo:refresh'); // custom event, no payload\n * ```\n */\n emit<K extends CliEventType>(\n type: K,\n data: CliEventMap[K],\n options?: CliEmitOptions,\n ): void;\n emit<T = unknown, K extends string = string>(\n type: K & CustomEventType<K>,\n data?: T,\n options?: CliEmitOptions,\n ): void;\n\n /**\n * Handle events matching `pattern`. Returns a function that unsubscribes.\n *\n * ```ts\n * bus.on('package:installed', (e) => e.data.version); // typed from CliEventMap\n * bus.on<TodoAdded>('todo:added', (e) => e.data.text); // explicit payload type\n * bus.on('server:*', (e) => console.log(e.type)); // anonymous: data is unknown\n * ```\n */\n on<K extends CliEventType>(\n pattern: K,\n handler: CliEventHandler<CliEventMap[K]>,\n ): () => void;\n on<T = unknown>(pattern: string, handler: CliEventHandler<T>): () => void;\n\n /** Like `on`, but only for the next matching event. */\n once<K extends CliEventType>(\n pattern: K,\n handler: CliEventHandler<CliEventMap[K]>,\n ): () => void;\n once<T = unknown>(pattern: string, handler: CliEventHandler<T>): () => void;\n\n /**\n * Recent events matching `pattern`, oldest first. The bus keeps the last\n * events in memory only: events are not persisted across reloads (state\n * that must survive a reload belongs in a state store).\n */\n history<K extends CliEventType>(\n pattern: K,\n limit?: number,\n ): CliEvent<CliEventMap[K]>[];\n history<T = unknown>(pattern?: string, limit?: number): CliEvent<T>[];\n\n /** Matching events as an observable (completes when the bus is disposed). */\n events$<K extends CliEventType>(\n pattern: K,\n ): Observable<CliEvent<CliEventMap[K]>>;\n events$<T = unknown>(pattern?: string): Observable<CliEvent<T>>;\n}\n\nexport interface CliEmitOptions {\n /** Who emits the event (module or command name). */\n source?: string;\n}\n\n/**\n * A type that is not a key of {@link CliEventMap}. Keeps `emit` from accepting\n * a known event with an unchecked payload.\n */\nexport type CustomEventType<K extends string> = K extends CliEventType\n ? never\n : K;\n\n/** Service token of the terminal's {@link ICliEventBus}. */\nexport const ICliEventBus_TOKEN = createCliToken<ICliEventBus>('cli-event-bus');\n","/**\n * Options for HTTP client requests.\n * Extends standard RequestInit with convenience fields.\n */\nexport interface CliHttpRequestOptions extends Omit<RequestInit, 'method' | 'body'> {\n /**\n * Request timeout in milliseconds. When set, the request is automatically\n * aborted after this duration. Combines with any existing abort signal.\n */\n timeout?: number;\n}\n\n/**\n * HTTP client for making requests from command processors.\n *\n * Automatically merges the command's abort signal so that requests are\n * cancelled when the user presses Ctrl+C. Provides typed convenience\n * methods for common HTTP verbs as well as a raw `fetch()` for cases\n * that need full Response access (streaming, progress, etc.).\n *\n * Available on the execution context as `context.http`.\n *\n * @example\n * ```ts\n * // Typed JSON response\n * const users = await context.http.get<User[]>('https://api.example.com/users');\n *\n * // POST with body\n * await context.http.post('https://api.example.com/users', { name: 'John' });\n *\n * // Raw fetch for streaming\n * const response = await context.http.fetch('https://example.com/file.zip');\n * const reader = response.body?.getReader();\n * ```\n */\nexport interface ICliHttpClient {\n /**\n * Make a raw HTTP request. Returns the full Response object for cases\n * that need streaming, headers, or status inspection.\n * The command's abort signal is automatically merged.\n */\n fetch(url: string, init?: RequestInit): Promise<Response>;\n\n /**\n * HTTP GET request. Returns the parsed JSON response body.\n */\n get<T = any>(url: string, options?: CliHttpRequestOptions): Promise<T>;\n\n /**\n * HTTP POST request. Automatically serializes the body as JSON\n * (unless body is FormData, Blob, string, or ArrayBuffer).\n * Returns the parsed JSON response body.\n */\n post<T = any>(url: string, body?: any, options?: CliHttpRequestOptions): Promise<T>;\n\n /**\n * HTTP PUT request. Automatically serializes the body as JSON.\n * Returns the parsed JSON response body.\n */\n put<T = any>(url: string, body?: any, options?: CliHttpRequestOptions): Promise<T>;\n\n /**\n * HTTP PATCH request. Automatically serializes the body as JSON.\n * Returns the parsed JSON response body.\n */\n patch<T = any>(url: string, body?: any, options?: CliHttpRequestOptions): Promise<T>;\n\n /**\n * HTTP DELETE request. Returns the parsed JSON response body (if any).\n */\n delete<T = any>(url: string, options?: CliHttpRequestOptions): Promise<T>;\n\n /**\n * HTTP HEAD request. Returns the full Response (no body parsing).\n */\n head(url: string, options?: CliHttpRequestOptions): Promise<Response>;\n\n /**\n * HTTP OPTIONS request. Returns the parsed JSON response body.\n */\n options<T = any>(url: string, options?: CliHttpRequestOptions): Promise<T>;\n}\n\n/**\n * Error thrown by `ICliHttpClient` JSON helpers (`get`, `post`, `put`,\n * `patch`, `delete`, `options`) when the server responds with a non-2xx status.\n *\n * Exposes the HTTP status so callers can react to specific responses\n * (for example, clearing a stored session token on `401`).\n *\n * @example\n * ```ts\n * try {\n * await context.http.get(url);\n * } catch (e) {\n * if (e instanceof CliHttpError && e.status === 401) {\n * // token expired or revoked\n * }\n * }\n * ```\n */\nexport class CliHttpError extends Error {\n constructor(\n message: string,\n /** HTTP status code of the failed response */\n public readonly status: number,\n /** HTTP status text of the failed response */\n public readonly statusText: string = '',\n /** Parsed JSON error body, when the server returned one */\n public readonly body?: unknown,\n ) {\n super(message);\n this.name = 'CliHttpError';\n Object.setPrototypeOf(this, CliHttpError.prototype);\n }\n}\n","import { ICliCommandAuthor } from '../interfaces';\n\nexport const DefaultLibraryAuthor: ICliCommandAuthor = {\n name: 'Nicolae Lupei',\n email: 'nicolae.lupei@qodalis.com',\n};\n\nexport const constants = {\n DefaultLibraryAuthor,\n};\n","/**\n * Returns a promise that resolves after the given number of milliseconds.\n * @param ms Delay duration in milliseconds\n */\nexport const delay = (ms: number): Promise<void> => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n","/**\n * Split text into arguments like a POSIX shell: spaces separate words,\n * quotes are removed (`\"a b\"` is one word), single quotes keep everything\n * literally, and a backslash escapes the next character outside quotes\n * (`my\\ file`) or `\"`, `\\`, `$` and `` ` `` inside double quotes. A quote\n * without a closing one is ordinary text (`it's`).\n */\nexport function splitShellWords(text: string): string[] {\n const words: string[] = [];\n let current = '';\n let inWord = false;\n for (let i = 0; i < text.length; i++) {\n const ch = text[i];\n if (ch === '\\\\' && i + 1 < text.length) {\n current += text[++i];\n inWord = true;\n } else if (ch === \"'\" && text.indexOf(\"'\", i + 1) !== -1) {\n const end = text.indexOf(\"'\", i + 1);\n current += text.slice(i + 1, end);\n inWord = true;\n i = end;\n } else if (ch === '\"' && closingDoubleQuote(text, i) !== -1) {\n const end = closingDoubleQuote(text, i);\n current += unescapeDoubleQuoted(text.slice(i + 1, end));\n inWord = true;\n i = end;\n } else if (/\\s/.test(ch)) {\n if (inWord) words.push(current);\n current = '';\n inWord = false;\n } else {\n current += ch;\n inWord = true;\n }\n }\n if (inWord) words.push(current);\n return words;\n}\n\n/**\n * The arguments as a shell's echo prints them: {@link splitShellWords}\n * joined by one space. Inside double quotes, a backslash before other\n * characters stays (`\"a\\nb\"`) for echo's escape step.\n */\nexport function joinShellWords(text: string): string {\n return splitShellWords(text).join(' ');\n}\n\n/** Quote a value so {@link splitShellWords} reads it back as one word. */\nexport function quoteShellWord(value: string): string {\n if (value !== '' && !/[\\s\"'\\\\$`|&;<>(){}*?[\\]#~]/.test(value)) return value;\n if (!value.includes(\"'\")) return `'${value}'`;\n return `\"${value.replace(/([\"\\\\$`])/g, '\\\\$1')}\"`;\n}\n\n/** Index of the `\"` closing the one at `start` (skipping `\\\"`), or -1. */\nfunction closingDoubleQuote(text: string, start: number): number {\n for (let i = start + 1; i < text.length; i++) {\n if (text[i] === '\\\\') i++;\n else if (text[i] === '\"') return i;\n }\n return -1;\n}\n\nfunction unescapeDoubleQuoted(text: string): string {\n return text.replace(/\\\\([\"\\\\$`])/g, '$1');\n}\n","import { ICliCommandProcessor, ICliExecutionContext } from '../interfaces';\nimport { CliForegroundColor, CliProcessCommand } from '../models';\nimport { joinShellWords } from './shell-words';\n\nexport class ObjectDescriber {\n static describe(\n obj: any,\n options?: {\n filter?: (o: {\n funcName: string;\n func: any;\n args: string[];\n }) => boolean;\n },\n ): ICliCommandProcessor[] {\n const { filter } = options || {};\n\n const processors: ICliCommandProcessor[] = [];\n\n const keys = Object.keys(obj);\n\n const functions = keys.filter((key) => typeof obj[key] === 'function');\n\n for (const func of functions) {\n const funcValue = obj[func];\n const args = this.getFunctionArguments(funcValue);\n\n if (filter) {\n const shouldInclude = filter({\n funcName: func,\n func: funcValue,\n args,\n });\n\n if (!shouldInclude) {\n continue;\n }\n }\n\n const supportsMultipleArgs = args.length > 1;\n\n const supportsDynamicArgs = this.supportsDynamicArgs(funcValue);\n\n if (args.length === 0 && !supportsDynamicArgs) {\n continue;\n }\n\n if (\n args.length > 0 &&\n args.some((arg) => arg === 'function' || arg === 'func')\n ) {\n continue;\n }\n\n const processor: ICliCommandProcessor = {\n command: func,\n description: `A command that executes the function ${func} with the provided arguments`,\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'debug',\n description: 'Debug',\n type: 'boolean',\n required: false,\n },\n ],\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const debug = command.args['debug'] as boolean;\n\n if (debug) {\n context.writer.writeln('Executing command: ' + func);\n context.writer.writeln(\n 'Arguments: ' + JSON.stringify(command.args),\n );\n context.writer.writeln(\n 'Function: ' + funcValue.toString(),\n );\n }\n\n const argsToCallF: any[] = [];\n\n if (supportsMultipleArgs) {\n for (const arg of args.slice(1)) {\n argsToCallF.push(command.args[arg]);\n }\n }\n\n // The text as a shell reads it: quotes removed\n const value =\n command.value === undefined\n ? undefined\n : joinShellWords(command.value);\n\n if (supportsDynamicArgs && value) {\n const delimiter = command.args['delimiter'] || ',';\n argsToCallF.push(...value.split(delimiter));\n }\n\n if (debug) {\n context.writer.writeln(\n 'Arguments after processing: ' +\n JSON.stringify(argsToCallF),\n );\n }\n\n const result =\n supportsDynamicArgs && args.length === 0\n ? funcValue(...argsToCallF)\n : funcValue(value, ...argsToCallF);\n\n context.writer.write(\n context.writer.wrapInColor(\n 'Result: ',\n CliForegroundColor.Yellow,\n ),\n );\n\n if (result === null) {\n context.writer.writeln('null');\n } else if (result === undefined) {\n context.writer.writeln('undefined');\n } else if (typeof result === 'boolean') {\n context.writer.writeln(result.toString());\n } else if (typeof result === 'number') {\n context.writer.writeln(result.toString());\n } else if (Array.isArray(result)) {\n context.writer.writeJson(result);\n } else if (typeof result === 'string') {\n context.writer.writeln(result);\n } else if (typeof result === 'object') {\n context.writer.writeJson(result);\n } else {\n context.writer.writeln(result?.toString());\n }\n\n context.process.output(result?.toString());\n },\n writeDescription: (context: ICliExecutionContext) => {\n context.writer.writeln(func);\n },\n };\n\n if (supportsDynamicArgs) {\n processor.parameters?.push({\n name: 'delimiter',\n description: 'Delimiter',\n type: 'string',\n required: false,\n });\n }\n\n if (supportsMultipleArgs) {\n processor.parameters?.push(\n ...args.slice(1).map((arg) => ({\n name: arg,\n description: arg,\n type: 'string',\n required: false,\n })),\n );\n }\n\n processors.push(processor);\n }\n\n return processors;\n }\n\n static supportsDynamicArgs(func: any): boolean {\n const funcStr = func.toString();\n return funcStr.includes('arguments');\n }\n\n static getFunctionArguments(func: any): string[] {\n const funcStr = func.toString();\n const args = funcStr.match(/\\(([^)]*)\\)/);\n if (!args) {\n return [];\n }\n return args[1]\n .split(',')\n .map((arg: string) => arg.trim())\n .filter((arg: string) => arg !== '');\n }\n}\n","import {\n ICliStateStore,\n ICliCommandProcessorRegistry,\n ICliConfigurationOption,\n ICliExecutionContext,\n} from '../interfaces';\n\n/**\n * Token for the configure command's state store.\n */\nexport const CLI_CONFIGURE_STORE_NAME = 'configure';\n\n/**\n * Retrieves a configuration value for a given category and key\n * from a configuration state store.\n *\n * @param state The state store to read from (should be the 'configure' store)\n * @param category The category (processor command name or 'system')\n * @param key The configuration key\n * @param defaultValue Fallback value if not configured\n * @returns The configured value or the default\n */\nexport function getConfigValue<T = any>(\n state: ICliStateStore,\n category: string,\n key: string,\n defaultValue: T,\n): T {\n try {\n const s = state.getState<Record<string, any>>();\n const bucket =\n category === 'system' ? s?.['system'] : s?.['plugins']?.[category];\n if (bucket && key in bucket) {\n return bucket[key] as T;\n }\n } catch {\n // State not initialized or not available\n }\n return defaultValue;\n}\n\n/**\n * Retrieves a plugin configuration value from the execution context.\n * This is a convenience wrapper for plugins — handles store lookup internally.\n *\n * @param context The execution context\n * @param category The category (usually the processor's command name)\n * @param key The configuration key\n * @param defaultValue Fallback value if not configured\n * @returns The configured value or the default\n */\nexport function getPluginConfigValue<T = any>(\n context: ICliExecutionContext,\n category: string,\n key: string,\n defaultValue: T,\n): T {\n try {\n const storeManager = context.services.getRequired<any>(\n 'cli-state-store-manager',\n );\n if (!storeManager) return defaultValue;\n const store = storeManager.getStateStore(CLI_CONFIGURE_STORE_NAME);\n if (!store) return defaultValue;\n return getConfigValue(store, category, key, defaultValue);\n } catch {\n return defaultValue;\n }\n}\n\n/**\n * Resolves all configuration options from registered processors,\n * grouped by category.\n */\nexport function resolveConfigurationCategories(\n registry: ICliCommandProcessorRegistry,\n): Map<\n string,\n { processorCommand: string; options: ICliConfigurationOption[] }\n> {\n const categories = new Map<\n string,\n { processorCommand: string; options: ICliConfigurationOption[] }\n >();\n\n for (const processor of registry.processors) {\n if (\n processor.configurationOptions &&\n processor.configurationOptions.length > 0\n ) {\n for (const option of processor.configurationOptions) {\n const cat = option.category || processor.command;\n if (!categories.has(cat)) {\n categories.set(cat, {\n processorCommand: processor.command,\n options: [],\n });\n }\n categories.get(cat)!.options.push(option);\n }\n }\n }\n\n return categories;\n}\n","import { Terminal } from '@xterm/xterm';\n\n/**\n * Clears the current line in the terminal, accounting for text that wraps across multiple lines.\n * @param terminal The xterm terminal instance\n * @param contentLength The total visible character count on the line (prompt + text)\n */\nexport const clearTerminalLine = (\n terminal: Terminal,\n contentLength: number,\n): void => {\n if (contentLength <= 0) return;\n const lines = Math.ceil(contentLength / terminal.cols);\n\n for (let i = 0; i < lines; i++) {\n terminal.write('\\x1b[2K');\n if (i < lines - 1) {\n terminal.write('\\x1b[A');\n }\n }\n\n terminal.write('\\r');\n};\n","import * as semver from 'semver';\n\n/**\n * Compares two dotted version strings.\n * Returns -1 if a < b, 0 if equal, 1 if a > b.\n */\nexport function compareVersions(a: string, b: string): -1 | 0 | 1 {\n const coercedA = semver.coerce(a);\n const coercedB = semver.coerce(b);\n if (!coercedA || !coercedB) return 0;\n return semver.compare(coercedA, coercedB) as -1 | 0 | 1;\n}\n\n/**\n * Returns true if the installed version satisfies the minimum required version.\n */\nexport function satisfiesMinVersion(\n installed: string,\n required: string,\n): boolean {\n return compareVersions(installed, required) >= 0;\n}\n\n/**\n * Returns true if the installed version satisfies the given semver range.\n * If range is undefined/empty, returns true (no constraint).\n * If range looks like a plain version (no operators), treats it as >= that version.\n */\nexport function satisfiesVersionRange(\n installed: string,\n range: string | undefined,\n): boolean {\n if (!range) return true;\n const coerced = semver.coerce(installed);\n if (!coerced) return false;\n if (semver.valid(range)) {\n return semver.gte(coerced, semver.coerce(range)!);\n }\n return semver.satisfies(coerced, range);\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.4.1';\nexport const API_VERSION = 2;\n ","import { CliHeadersProvider, resolveHeaders } from '../models/server';\nimport { API_VERSION } from '../version';\n\n/**\n * Describes the version information returned by a CLI server's discovery endpoint.\n */\nexport interface ServerVersionInfo {\n supportedVersions: number[];\n preferredVersion: number;\n serverVersion: string;\n}\n\n/** Endpoint path for server version discovery */\nconst VERSIONS_ENDPOINT = '/api/qcli/versions';\n\n/**\n * Negotiates the API version between a frontend CLI client and a backend server.\n *\n * Flow:\n * 1. Client calls `discover(baseUrl)` which hits `GET ${VERSIONS_ENDPOINT}`\n * 2. Server returns supported versions\n * 3. Client picks the highest mutually supported version\n * 4. All subsequent calls use `/api/v{n}/qcli/*`\n */\nexport class ServerVersionNegotiator {\n private static readonly CLIENT_SUPPORTED_VERSIONS = [API_VERSION];\n\n /**\n * Given a server's version info, pick the highest mutually compatible version.\n * Returns null if no compatible version exists.\n */\n static negotiate(serverInfo: ServerVersionInfo): number | null {\n const common = this.CLIENT_SUPPORTED_VERSIONS.filter((v) =>\n serverInfo.supportedVersions.includes(v),\n );\n return common.length > 0 ? Math.max(...common) : null;\n }\n\n /**\n * Discover the server's supported versions and negotiate the best match.\n * Returns the negotiated API version and the base path for all subsequent calls,\n * or null if the server is unreachable or incompatible.\n */\n static async discover(\n baseUrl: string,\n headers?: CliHeadersProvider,\n options?: {\n /** Rethrow when the server cannot be reached (instead of `null`, \"no discovery\") */\n rethrowNetworkErrors?: boolean;\n },\n ): Promise<{ apiVersion: number; basePath: string } | null> {\n let response: Response;\n try {\n const resolved = resolveHeaders(headers);\n response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`, {\n headers: Object.keys(resolved).length > 0 ? resolved : undefined,\n });\n } catch (e) {\n if (options?.rethrowNetworkErrors) throw e;\n return null;\n }\n try {\n if (!response.ok) return null;\n\n const info: ServerVersionInfo = await response.json();\n const version = this.negotiate(info);\n\n if (version === null) return null;\n\n return {\n apiVersion: version,\n basePath: `${baseUrl}/api/v${version}/qcli`,\n };\n } catch {\n return null;\n }\n }\n}\n","import { CliHeadersProvider, resolveHeaders, resolveServerHeaders } from '../models/server';\nimport type { ICliServerAuthService, ICliServiceProvider } from '../interfaces/services';\nimport { ICliServerAuthService_TOKEN } from '../interfaces/services';\n\n/**\n * Copies headers into a WebSocket URL as `_header_<name>` query params.\n *\n * **Unsafe:** query parameters are visible in browser history and in server,\n * proxy and CDN access logs. Used only for servers configured with\n * `unsafeHeadersInWebSocketUrl: true`; everything else goes through\n * {@link buildServerWebSocketUrl}, which keeps headers out of the URL.\n *\n * @param wsUrl The base WebSocket URL (may already contain query parameters)\n * @param headers The headers provider from CliServerConfig (may include Authorization, etc.)\n * @returns The WebSocket URL with the headers appended as query parameters\n */\nexport function buildAuthenticatedWebSocketUrl(\n wsUrl: string,\n headers?: CliHeadersProvider,\n): string {\n const resolved = resolveHeaders(headers);\n if (Object.keys(resolved).length === 0) {\n return wsUrl;\n }\n\n const separator = wsUrl.includes('?') ? '&' : '?';\n const params = Object.entries(resolved)\n .map(\n ([key, value]) =>\n `_header_${encodeURIComponent(key)}=${encodeURIComponent(value)}`,\n )\n .join('&');\n\n return `${wsUrl}${separator}${params}`;\n}\n\n/** Options for {@link buildServerWebSocketUrl} and {@link resolveServerWebSocketUrl}. */\nexport interface CliWebSocketAuthOptions {\n /** See `CliServerConfig.unsafeHeadersInWebSocketUrl` */\n unsafeHeadersInWebSocketUrl?: boolean;\n}\n\n/** Ticket endpoint of the users plugin, relative to the server root */\nexport const CLI_WS_TICKET_PATH = '/api/v1/qcli/sessions/ws-ticket';\n\n/** Servers already warned about, so each warns once per page */\nconst warnedServers = new Set<string>();\n\n/**\n * Authenticates a WebSocket URL with headers without putting them in it:\n * fetches a single-use ticket from `POST /api/v1/qcli/sessions/ws-ticket`\n * with the headers and appends `?ticket=`. When no ticket can be had, the\n * socket connects without credentials and a warning is logged once.\n * Headers are copied into the URL only with `unsafeHeadersInWebSocketUrl`.\n */\nexport async function buildServerWebSocketUrl(\n wsUrl: string,\n headers?: CliHeadersProvider,\n options?: CliWebSocketAuthOptions,\n): Promise<string> {\n const resolved = resolveHeaders(headers);\n if (Object.keys(resolved).length === 0) {\n return wsUrl;\n }\n if (options?.unsafeHeadersInWebSocketUrl) {\n return buildAuthenticatedWebSocketUrl(wsUrl, resolved);\n }\n\n const httpBase = toHttpBaseUrl(wsUrl);\n const ticket = await fetchWebSocketTicket(httpBase, resolved);\n if (ticket) {\n return appendQueryParams(wsUrl, { ticket });\n }\n\n if (!warnedServers.has(httpBase)) {\n warnedServers.add(httpBase);\n console.warn(\n `[qodalis-cli] ${httpBase} issued no WebSocket ticket (${CLI_WS_TICKET_PATH}), ` +\n 'so its sockets connect without credentials. Configured headers are never copied ' +\n 'into WebSocket URLs; enable the users plugin on the server, or set ' +\n '`unsafeHeadersInWebSocketUrl: true` on the server config to keep the old behaviour.',\n );\n }\n return wsUrl;\n}\n\n/**\n * Build the WebSocket URL for a configured server. Prefers upgrade params\n * from auth providers (e.g. a single-use ticket from the users module);\n * otherwise authenticates with the server's headers through\n * {@link buildServerWebSocketUrl}.\n */\nexport async function resolveServerWebSocketUrl(\n services: ICliServiceProvider | undefined,\n serverName: string,\n wsUrl: string,\n configHeaders?: CliHeadersProvider,\n options?: CliWebSocketAuthOptions,\n): Promise<string> {\n const authService = services?.get<ICliServerAuthService>(ICliServerAuthService_TOKEN);\n const params = await authService?.getWebSocketParams?.(serverName);\n if (params) {\n return appendQueryParams(wsUrl, params);\n }\n return buildServerWebSocketUrl(\n wsUrl,\n () => resolveServerHeaders(services, serverName, configHeaders),\n options,\n );\n}\n\n/** `ws://host/base/ws/v1/qcli/events?x` -> `http://host/base` */\nfunction toHttpBaseUrl(wsUrl: string): string {\n const url = new URL(wsUrl);\n const wsSegment = url.pathname.indexOf('/ws/');\n const basePath = wsSegment >= 0 ? url.pathname.slice(0, wsSegment) : '';\n const protocol = url.protocol === 'wss:' || url.protocol === 'https:' ? 'https:' : 'http:';\n return `${protocol}//${url.host}${basePath}`;\n}\n\nasync function fetchWebSocketTicket(\n httpBase: string,\n headers: Record<string, string>,\n): Promise<string | undefined> {\n try {\n const response = await fetch(`${httpBase}${CLI_WS_TICKET_PATH}`, {\n method: 'POST',\n headers: { ...headers, 'Content-Type': 'application/json' },\n body: '{}',\n });\n if (!response.ok) return undefined;\n const body = await response.json();\n return typeof body?.ticket === 'string' && body.ticket ? body.ticket : undefined;\n } catch {\n return undefined;\n }\n}\n\n/** Append query params to a URL that may already have some. */\nexport function appendQueryParams(url: string, params: Record<string, string>): string {\n const entries = Object.entries(params);\n if (!entries.length) return url;\n const query = entries.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join('&');\n return `${url}${url.includes('?') ? '&' : '?'}${query}`;\n}\n","import type { DefaultThemesType } from './cli-theme';\n\nexport const DefaultThemes = {\n default: {\n background: '#070b14',\n foreground: '#dee2ea',\n cursor: '#818cf8',\n selectionBackground: '#334155',\n selectionForeground: '#ffffff',\n black: '#0d1117',\n red: '#f87171',\n green: '#4ade80',\n yellow: '#fbbf24',\n blue: '#818cf8',\n magenta: '#c084fc',\n cyan: '#67e8f9',\n white: '#dee2ea',\n brightBlack: '#475569',\n brightRed: '#fca5a5',\n brightGreen: '#86efac',\n brightYellow: '#fde68a',\n brightBlue: '#a5b4fc',\n brightMagenta: '#d8b4fe',\n brightCyan: '#a5f3fc',\n brightWhite: '#f1f5f9',\n },\n // Soft grey paper and slate text; every color reads at 4.5:1 or more on the background\n light: {\n background: '#f7f8fa',\n foreground: '#334155',\n cursor: '#4f46e5',\n cursorAccent: '#f7f8fa',\n selectionBackground: '#d9def7',\n selectionForeground: '#1e293b',\n black: '#334155',\n red: '#c93c37',\n green: '#2c7a4b',\n yellow: '#946200',\n blue: '#3d5bd9',\n magenta: '#8b3fc7',\n cyan: '#0e7586',\n white: '#5b6577',\n brightBlack: '#667085',\n brightRed: '#b42a25',\n brightGreen: '#1f6a3d',\n brightYellow: '#7a5100',\n brightBlue: '#2f47bd',\n brightMagenta: '#7431ad',\n brightCyan: '#0a6170',\n brightWhite: '#1e293b',\n },\n classic: {\n background: '#0c0c0c',\n foreground: '#cccccc',\n cursor: '#cccccc',\n selectionBackground: '#264f78',\n selectionForeground: '#ffffff',\n black: '#0c0c0c',\n red: '#c50f1f',\n green: '#13a10e',\n yellow: '#c19c00',\n blue: '#0037da',\n magenta: '#881798',\n cyan: '#3a96dd',\n white: '#cccccc',\n brightBlack: '#767676',\n brightRed: '#e74856',\n brightGreen: '#16c60c',\n brightYellow: '#f9f1a5',\n brightBlue: '#3b78ff',\n brightMagenta: '#b4009e',\n brightCyan: '#61d6d6',\n brightWhite: '#f2f2f2',\n },\n dracula: {\n background: '#282A36',\n foreground: '#F8F8F2',\n cursor: '#50FA7B',\n black: '#21222C',\n red: '#FF5555',\n green: '#50FA7B',\n yellow: '#F1FA8C',\n blue: '#BD93F9',\n magenta: '#FF79C6',\n cyan: '#8BE9FD',\n white: '#F8F8F2',\n brightBlack: '#6272A4',\n brightRed: '#FF6E6E',\n brightGreen: '#69FF94',\n brightYellow: '#FFFFA5',\n brightBlue: '#D6ACFF',\n brightMagenta: '#FF92D0',\n brightCyan: '#A4FFFF',\n brightWhite: '#FFFFFF',\n },\n monokai: {\n background: '#272822',\n foreground: '#F8F8F2',\n cursor: '#F8F8F0',\n black: '#272822',\n red: '#F92672',\n green: '#A6E22E',\n yellow: '#F4BF75',\n blue: '#66D9EF',\n magenta: '#AE81FF',\n cyan: '#A1EFE4',\n white: '#F8F8F2',\n brightBlack: '#75715E',\n brightRed: '#F92672',\n brightGreen: '#A6E22E',\n brightYellow: '#F4BF75',\n brightBlue: '#66D9EF',\n brightMagenta: '#AE81FF',\n brightCyan: '#A1EFE4',\n brightWhite: '#F9F8F5',\n },\n solarizedDark: {\n background: '#002B36',\n foreground: '#839496',\n cursor: '#93A1A1',\n black: '#073642',\n red: '#DC322F',\n green: '#859900',\n yellow: '#B58900',\n blue: '#268BD2',\n magenta: '#D33682',\n cyan: '#2AA198',\n white: '#EEE8D5',\n brightBlack: '#002B36',\n brightRed: '#CB4B16',\n brightGreen: '#586E75',\n brightYellow: '#657B83',\n brightBlue: '#839496',\n brightMagenta: '#6C71C4',\n brightCyan: '#93A1A1',\n brightWhite: '#FDF6E3',\n },\n solarizedLight: {\n background: '#FDF6E3',\n foreground: '#657B83',\n cursor: '#586E75',\n black: '#073642',\n red: '#DC322F',\n green: '#859900',\n yellow: '#B58900',\n blue: '#268BD2',\n magenta: '#D33682',\n cyan: '#2AA198',\n white: '#EEE8D5',\n brightBlack: '#002B36',\n brightRed: '#CB4B16',\n brightGreen: '#586E75',\n brightYellow: '#657B83',\n brightBlue: '#839496',\n brightMagenta: '#6C71C4',\n brightCyan: '#93A1A1',\n brightWhite: '#FDF6E3',\n },\n gruvboxDark: {\n background: '#282828',\n foreground: '#EBDBB2',\n cursor: '#EBDBB2',\n black: '#282828',\n red: '#CC241D',\n green: '#98971A',\n yellow: '#D79921',\n blue: '#458588',\n magenta: '#B16286',\n cyan: '#689D6A',\n white: '#A89984',\n brightBlack: '#928374',\n brightRed: '#FB4934',\n brightGreen: '#B8BB26',\n brightYellow: '#FABD2F',\n brightBlue: '#83A598',\n brightMagenta: '#D3869B',\n brightCyan: '#8EC07C',\n brightWhite: '#EBDBB2',\n },\n gruvboxLight: {\n background: '#FBF1C7',\n foreground: '#3C3836',\n cursor: '#3C3836',\n black: '#FBF1C7',\n red: '#9D0006',\n green: '#79740E',\n yellow: '#B57614',\n blue: '#076678',\n magenta: '#8F3F71',\n cyan: '#427B58',\n white: '#3C3836',\n brightBlack: '#D5C4A1',\n brightRed: '#AF3A03',\n brightGreen: '#B8BB26',\n brightYellow: '#FABD2F',\n brightBlue: '#83A598',\n brightMagenta: '#D3869B',\n brightCyan: '#8EC07C',\n brightWhite: '#EBDBB2',\n },\n nord: {\n background: '#2E3440',\n foreground: '#D8DEE9',\n cursor: '#88C0D0',\n black: '#3B4252',\n red: '#BF616A',\n green: '#A3BE8C',\n yellow: '#EBCB8B',\n blue: '#81A1C1',\n magenta: '#B48EAD',\n cyan: '#88C0D0',\n white: '#E5E9F0',\n brightBlack: '#4C566A',\n brightRed: '#BF616A',\n brightGreen: '#A3BE8C',\n brightYellow: '#EBCB8B',\n brightBlue: '#81A1C1',\n brightMagenta: '#B48EAD',\n brightCyan: '#8FBCBB',\n brightWhite: '#ECEFF4',\n },\n oneDark: {\n background: '#282C34',\n foreground: '#ABB2BF',\n cursor: '#528BFF',\n black: '#282C34',\n red: '#E06C75',\n green: '#98C379',\n yellow: '#E5C07B',\n blue: '#61AFEF',\n magenta: '#C678DD',\n cyan: '#56B6C2',\n white: '#ABB2BF',\n brightBlack: '#5C6370',\n brightRed: '#E06C75',\n brightGreen: '#98C379',\n brightYellow: '#E5C07B',\n brightBlue: '#61AFEF',\n brightMagenta: '#C678DD',\n brightCyan: '#56B6C2',\n brightWhite: '#FFFFFF',\n },\n material: {\n background: '#263238',\n foreground: '#ECEFF1',\n cursor: '#FFCC00',\n black: '#263238',\n red: '#F07178',\n green: '#C3E88D',\n yellow: '#FFCB6B',\n blue: '#82AAFF',\n magenta: '#C792EA',\n cyan: '#89DDFF',\n white: '#EEFFFF',\n brightBlack: '#546E7A',\n brightRed: '#F07178',\n brightGreen: '#C3E88D',\n brightYellow: '#FFCB6B',\n brightBlue: '#82AAFF',\n brightMagenta: '#C792EA',\n brightCyan: '#89DDFF',\n brightWhite: '#FFFFFF',\n },\n highContrastLight: {\n background: '#FFFACD',\n foreground: '#000000',\n cursor: '#FFA500',\n selectionBackground: '#FFD700',\n black: '#3B3A32',\n red: '#D32F2F',\n green: '#388E3C',\n yellow: '#FBC02D',\n blue: '#1976D2',\n magenta: '#8E24AA',\n cyan: '#0097A7',\n white: '#FFFFFF',\n brightBlack: '#616161',\n brightRed: '#FF5252',\n brightGreen: '#69F0AE',\n brightYellow: '#FFEB3B',\n brightBlue: '#64B5F6',\n brightMagenta: '#BA68C8',\n brightCyan: '#4DD0E1',\n brightWhite: '#FAFAFA',\n },\n tokyoNight: {\n background: '#1a1b26',\n foreground: '#c0caf5',\n cursor: '#c0caf5',\n selectionBackground: '#33467c',\n black: '#15161e',\n red: '#f7768e',\n green: '#9ece6a',\n yellow: '#e0af68',\n blue: '#7aa2f7',\n magenta: '#bb9af7',\n cyan: '#7dcfff',\n white: '#a9b1d6',\n brightBlack: '#414868',\n brightRed: '#f7768e',\n brightGreen: '#9ece6a',\n brightYellow: '#e0af68',\n brightBlue: '#7aa2f7',\n brightMagenta: '#bb9af7',\n brightCyan: '#7dcfff',\n brightWhite: '#c0caf5',\n },\n catppuccinMocha: {\n background: '#1e1e2e',\n foreground: '#cdd6f4',\n cursor: '#f5e0dc',\n selectionBackground: '#45475a',\n black: '#45475a',\n red: '#f38ba8',\n green: '#a6e3a1',\n yellow: '#f9e2af',\n blue: '#89b4fa',\n magenta: '#f5c2e7',\n cyan: '#94e2d5',\n white: '#bac2de',\n brightBlack: '#585b70',\n brightRed: '#f38ba8',\n brightGreen: '#a6e3a1',\n brightYellow: '#f9e2af',\n brightBlue: '#89b4fa',\n brightMagenta: '#f5c2e7',\n brightCyan: '#94e2d5',\n brightWhite: '#a6adc8',\n },\n catppuccinFrappe: {\n background: '#303446',\n foreground: '#c6d0f5',\n cursor: '#f2d5cf',\n selectionBackground: '#51576d',\n black: '#51576d',\n red: '#e78284',\n green: '#a6d189',\n yellow: '#e5c890',\n blue: '#8caaee',\n magenta: '#f4b8e4',\n cyan: '#81c8be',\n white: '#b5bfe2',\n brightBlack: '#626880',\n brightRed: '#e78284',\n brightGreen: '#a6d189',\n brightYellow: '#e5c890',\n brightBlue: '#8caaee',\n brightMagenta: '#f4b8e4',\n brightCyan: '#81c8be',\n brightWhite: '#a5adce',\n },\n rosePine: {\n background: '#191724',\n foreground: '#e0def4',\n cursor: '#524f67',\n selectionBackground: '#2a283e',\n black: '#26233a',\n red: '#eb6f92',\n green: '#31748f',\n yellow: '#f6c177',\n blue: '#9ccfd8',\n magenta: '#c4a7e7',\n cyan: '#ebbcba',\n white: '#e0def4',\n brightBlack: '#6e6a86',\n brightRed: '#eb6f92',\n brightGreen: '#31748f',\n brightYellow: '#f6c177',\n brightBlue: '#9ccfd8',\n brightMagenta: '#c4a7e7',\n brightCyan: '#ebbcba',\n brightWhite: '#e0def4',\n },\n kanagawa: {\n background: '#1f1f28',\n foreground: '#dcd7ba',\n cursor: '#c8c093',\n selectionBackground: '#2d4f67',\n black: '#16161d',\n red: '#c34043',\n green: '#76946a',\n yellow: '#c0a36e',\n blue: '#7e9cd8',\n magenta: '#957fb8',\n cyan: '#6a9589',\n white: '#c8c093',\n brightBlack: '#727169',\n brightRed: '#e82424',\n brightGreen: '#98bb6c',\n brightYellow: '#e6c384',\n brightBlue: '#7fb4ca',\n brightMagenta: '#938aa9',\n brightCyan: '#7aa89f',\n brightWhite: '#dcd7ba',\n },\n everforestDark: {\n background: '#2d353b',\n foreground: '#d3c6aa',\n cursor: '#d3c6aa',\n selectionBackground: '#543a48',\n black: '#475258',\n red: '#e67e80',\n green: '#a7c080',\n yellow: '#dbbc7f',\n blue: '#7fbbb3',\n magenta: '#d699b6',\n cyan: '#83c092',\n white: '#d3c6aa',\n brightBlack: '#475258',\n brightRed: '#e67e80',\n brightGreen: '#a7c080',\n brightYellow: '#dbbc7f',\n brightBlue: '#7fbbb3',\n brightMagenta: '#d699b6',\n brightCyan: '#83c092',\n brightWhite: '#d3c6aa',\n },\n ayuDark: {\n background: '#0b0e14',\n foreground: '#bfbdb6',\n cursor: '#e6b450',\n selectionBackground: '#1b3a4b',\n black: '#01060e',\n red: '#ea6c73',\n green: '#91b362',\n yellow: '#f9af4f',\n blue: '#53bdfa',\n magenta: '#fae994',\n cyan: '#90e1c6',\n white: '#c7c7c7',\n brightBlack: '#686868',\n brightRed: '#f07178',\n brightGreen: '#c2d94c',\n brightYellow: '#ffb454',\n brightBlue: '#59c2ff',\n brightMagenta: '#ffee99',\n brightCyan: '#95e6cb',\n brightWhite: '#ffffff',\n },\n catppuccinLatte: {\n background: '#eff1f5',\n foreground: '#4c4f69',\n cursor: '#dc8a78',\n selectionBackground: '#acb0be',\n black: '#5c5f77',\n red: '#d20f39',\n green: '#40a02b',\n yellow: '#df8e1d',\n blue: '#1e66f5',\n magenta: '#ea76cb',\n cyan: '#179299',\n white: '#acb0be',\n brightBlack: '#6c6f85',\n brightRed: '#d20f39',\n brightGreen: '#40a02b',\n brightYellow: '#df8e1d',\n brightBlue: '#1e66f5',\n brightMagenta: '#ea76cb',\n brightCyan: '#179299',\n brightWhite: '#bcc0cc',\n },\n rosePineDawn: {\n background: '#faf4ed',\n foreground: '#575279',\n cursor: '#9893a5',\n selectionBackground: '#dfdad9',\n black: '#f2e9e1',\n red: '#b4637a',\n green: '#286983',\n yellow: '#ea9d34',\n blue: '#56949f',\n magenta: '#907aa9',\n cyan: '#d7827e',\n white: '#575279',\n brightBlack: '#9893a5',\n brightRed: '#b4637a',\n brightGreen: '#286983',\n brightYellow: '#ea9d34',\n brightBlue: '#56949f',\n brightMagenta: '#907aa9',\n brightCyan: '#d7827e',\n brightWhite: '#575279',\n },\n everforestLight: {\n background: '#fdf6e3',\n foreground: '#5c6a72',\n cursor: '#5c6a72',\n selectionBackground: '#e6e2cc',\n black: '#5c6a72',\n red: '#f85552',\n green: '#8da101',\n yellow: '#dfa000',\n blue: '#3a94c5',\n magenta: '#df69ba',\n cyan: '#35a77c',\n white: '#dfddc8',\n brightBlack: '#708089',\n brightRed: '#f85552',\n brightGreen: '#8da101',\n brightYellow: '#dfa000',\n brightBlue: '#3a94c5',\n brightMagenta: '#df69ba',\n brightCyan: '#35a77c',\n brightWhite: '#e8e5d0',\n },\n githubLight: {\n background: '#ffffff',\n foreground: '#24292f',\n cursor: '#044289',\n selectionBackground: '#0969da33',\n black: '#24292f',\n red: '#cf222e',\n green: '#116329',\n yellow: '#4d2d00',\n blue: '#0969da',\n magenta: '#8250df',\n cyan: '#1b7c83',\n white: '#6e7781',\n brightBlack: '#57606a',\n brightRed: '#a40e26',\n brightGreen: '#1a7f37',\n brightYellow: '#633c01',\n brightBlue: '#218bff',\n brightMagenta: '#a475f9',\n brightCyan: '#3192aa',\n brightWhite: '#8c959f',\n },\n cyberpunk: {\n background: '#0a0a1a',\n foreground: '#0abdc6',\n cursor: '#ff2079',\n selectionBackground: '#1a1a3a',\n black: '#000000',\n red: '#ff2079',\n green: '#00ff9c',\n yellow: '#fed230',\n blue: '#0abdc6',\n magenta: '#ea00d9',\n cyan: '#0abdc6',\n white: '#c7c7c7',\n brightBlack: '#686868',\n brightRed: '#ff4a9e',\n brightGreen: '#3df5b6',\n brightYellow: '#fef465',\n brightBlue: '#3ff1de',\n brightMagenta: '#ff79f0',\n brightCyan: '#3ff1de',\n brightWhite: '#ffffff',\n },\n retroGreen: {\n background: '#0a0a0a',\n foreground: '#33ff00',\n cursor: '#33ff00',\n selectionBackground: '#1a3a1a',\n black: '#0a0a0a',\n red: '#ff0000',\n green: '#33ff00',\n yellow: '#ffff00',\n blue: '#0066ff',\n magenta: '#cc00ff',\n cyan: '#00ffff',\n white: '#33ff00',\n brightBlack: '#1a5c1a',\n brightRed: '#ff3333',\n brightGreen: '#66ff33',\n brightYellow: '#ffff66',\n brightBlue: '#3399ff',\n brightMagenta: '#e550ff',\n brightCyan: '#66ffff',\n brightWhite: '#66ff33',\n },\n retroAmber: {\n background: '#0a0a00',\n foreground: '#ffb000',\n cursor: '#ffb000',\n selectionBackground: '#3a2a00',\n black: '#0a0a00',\n red: '#ff0000',\n green: '#ffb000',\n yellow: '#ffcc00',\n blue: '#cc8800',\n magenta: '#ff8800',\n cyan: '#ffcc66',\n white: '#ffb000',\n brightBlack: '#665500',\n brightRed: '#ff3333',\n brightGreen: '#ffc033',\n brightYellow: '#ffdd33',\n brightBlue: '#ddaa33',\n brightMagenta: '#ffaa33',\n brightCyan: '#ffdd99',\n brightWhite: '#ffc033',\n },\n matrix: {\n background: '#000000',\n foreground: '#00ff41',\n cursor: '#00ff41',\n selectionBackground: '#003300',\n black: '#000000',\n red: '#00ff41',\n green: '#00ff41',\n yellow: '#00ff41',\n blue: '#00cc33',\n magenta: '#009926',\n cyan: '#00ff41',\n white: '#00ff41',\n brightBlack: '#005500',\n brightRed: '#33ff66',\n brightGreen: '#33ff66',\n brightYellow: '#33ff66',\n brightBlue: '#00ff41',\n brightMagenta: '#00cc33',\n brightCyan: '#33ff66',\n brightWhite: '#66ff88',\n },\n synthwave: {\n background: '#2b213a',\n foreground: '#f0e4fc',\n cursor: '#72f1b8',\n selectionBackground: '#463465',\n black: '#2b213a',\n red: '#fe4450',\n green: '#72f1b8',\n yellow: '#fede5d',\n blue: '#2ee2fa',\n magenta: '#ff7edb',\n cyan: '#03edf9',\n white: '#f0e4fc',\n brightBlack: '#614d85',\n brightRed: '#fe4450',\n brightGreen: '#72f1b8',\n brightYellow: '#fede5d',\n brightBlue: '#2ee2fa',\n brightMagenta: '#ff7edb',\n brightCyan: '#03edf9',\n brightWhite: '#ffffff',\n },\n highContrastDark: {\n background: '#000000',\n foreground: '#ffffff',\n cursor: '#ffffff',\n selectionBackground: '#264f78',\n selectionForeground: '#ffffff',\n black: '#000000',\n red: '#ff0000',\n green: '#00ff00',\n yellow: '#ffff00',\n blue: '#3b78ff',\n magenta: '#ff00ff',\n cyan: '#00ffff',\n white: '#ffffff',\n brightBlack: '#808080',\n brightRed: '#ff3333',\n brightGreen: '#33ff33',\n brightYellow: '#ffff33',\n brightBlue: '#6699ff',\n brightMagenta: '#ff33ff',\n brightCyan: '#33ffff',\n brightWhite: '#ffffff',\n },\n} as DefaultThemesType;\n\nDefaultThemes.yellow = DefaultThemes.highContrastLight;\n","/**\n * Panel themes: the built-in light and dark palettes, panel colors derived from\n * a terminal theme, and the resolution of `CliPanelConfig.theme` into CSS custom\n * properties plus the terminal theme the panel's terminals use.\n */\nimport type { ITheme } from '@xterm/xterm';\nimport type { CliPanelColorScheme, CliPanelColors, CliPanelThemeInput } from '../models/options';\nimport { DefaultThemes } from '../themes/default-themes';\n\ninterface ThemeLike {\n background?: string;\n foreground?: string;\n cursor?: string;\n cyan?: string;\n blue?: string;\n magenta?: string;\n red?: string;\n selectionBackground?: string;\n}\n\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const short = /^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/.exec(hex);\n if (short) hex = short.slice(1).map((c) => c + c).join('');\n const m = /^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/.exec(hex);\n if (!m) return null;\n const n = parseInt(m[1], 16);\n return { r: (n >> 16) & 0xff, g: (n >> 8) & 0xff, b: n & 0xff };\n}\n\nfunction shiftColor(hex: string, amount: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n const r = Math.min(255, Math.max(0, rgb.r + Math.round(amount)));\n const g = Math.min(255, Math.max(0, rgb.g + Math.round(amount)));\n const b = Math.min(255, Math.max(0, rgb.b + Math.round(amount)));\n return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;\n}\n\nfunction hexToRgba(hex: string, alpha: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;\n}\n\n/** Light or dark, from a color's relative luminance; unknown formats count as dark. */\nexport function colorSchemeOf(color: string | undefined): CliPanelColorScheme {\n const rgb = color ? hexToRgb(color) : null;\n if (!rgb) return 'dark';\n const channel = (v: number) => {\n const c = v / 255;\n return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n };\n const luminance = 0.2126 * channel(rgb.r) + 0.7152 * channel(rgb.g) + 0.0722 * channel(rgb.b);\n return luminance > 0.4 ? 'light' : 'dark';\n}\n\n/** The built-in panel palettes, matching the `default` and `light` terminal themes. */\nexport const CliPanelPalettes: Readonly<Record<CliPanelColorScheme, Readonly<CliPanelColors>>> = Object.freeze({\n dark: Object.freeze({\n background: '#070b14',\n headerBackground: '#0f1623',\n border: '#1e293b',\n text: '#e2e8f0',\n textSecondary: '#94a3b8',\n accent: '#818cf8',\n hoverBackground: 'rgba(129, 140, 248, 0.12)',\n activeBackground: 'rgba(129, 140, 248, 0.22)',\n danger: '#f87171',\n shadow: 'rgba(0, 0, 0, 0.45)',\n }),\n // Soft grey paper instead of pure white, slate text rather than black: easier on the eyes\n light: Object.freeze({\n background: '#f7f8fa',\n headerBackground: '#eceff3',\n border: '#d9dee6',\n text: '#1e293b',\n textSecondary: '#5b6577',\n accent: '#4f46e5',\n hoverBackground: 'rgba(30, 41, 59, 0.06)',\n activeBackground: 'rgba(79, 70, 229, 0.12)',\n danger: '#c93c37',\n shadow: 'rgba(15, 23, 42, 0.12)',\n }),\n});\n\n/** The terminal theme of each built-in palette. */\nconst PALETTE_TERMINALS: Record<CliPanelColorScheme, ITheme> = {\n dark: DefaultThemes.default,\n light: DefaultThemes.light,\n};\n\n/** Panel colors that match a terminal theme. */\nexport function derivePanelColors(theme: ThemeLike): CliPanelColors {\n const scheme = colorSchemeOf(theme.background);\n const palette = CliPanelPalettes[scheme];\n const bg = theme.background || palette.background;\n const fg = theme.foreground || palette.text;\n const accent = theme.cyan || theme.blue || theme.magenta || palette.accent;\n const light = scheme === 'light';\n return {\n background: bg,\n headerBackground: shiftColor(bg, light ? -8 : 12),\n border: shiftColor(bg, light ? -28 : 24),\n text: fg,\n textSecondary: hexToRgba(fg, 0.65),\n accent,\n hoverBackground: hexToRgba(accent, light ? 0.1 : 0.12),\n activeBackground: hexToRgba(accent, light ? 0.16 : 0.2),\n danger: theme.red || palette.danger,\n shadow: palette.shadow,\n };\n}\n\n/** CSS custom properties of the panel for a set of colors. */\nexport function panelColorStyles(colors: CliPanelColors): Record<string, string> {\n return {\n '--cli-panel-bg': colors.background,\n '--cli-panel-header-bg': colors.headerBackground,\n '--cli-panel-border': colors.border,\n '--cli-panel-text': colors.text,\n '--cli-panel-text-secondary': colors.textSecondary,\n '--cli-panel-accent': colors.accent,\n '--cli-btn-hover-bg': colors.hoverBackground,\n '--cli-btn-active-bg': colors.activeBackground,\n '--cli-panel-danger': colors.danger,\n '--cli-panel-shadow': colors.shadow,\n };\n}\n\n/**\n * Derive CSS custom properties for the CLI panel from the active xterm theme.\n * Returns a record of property name → value that can be applied as inline styles.\n */\nexport function derivePanelThemeStyles(theme: ThemeLike): Record<string, string> {\n return {\n ...panelColorStyles(derivePanelColors(theme)),\n 'color-scheme': colorSchemeOf(theme.background),\n };\n}\n\n/** A panel theme resolved for one moment (the system's color scheme). */\nexport interface CliResolvedPanelTheme {\n scheme: CliPanelColorScheme;\n /** CSS custom properties (and `color-scheme`) for the panel's elements. */\n styles: Record<string, string>;\n /** Theme of the panel's terminals. */\n terminal: ITheme;\n}\n\n/**\n * Resolve `CliPanelConfig.theme`. `prefersDark` decides `'auto'`;\n * `themes` are the terminal themes a name can refer to.\n */\nexport function resolvePanelTheme(\n input: CliPanelThemeInput | undefined,\n prefersDark: boolean,\n themes: Record<string, ITheme> = DefaultThemes,\n): CliResolvedPanelTheme {\n const pick = (scheme: CliPanelColorScheme | 'auto'): CliPanelColorScheme =>\n scheme === 'auto' ? (prefersDark ? 'dark' : 'light') : scheme;\n const lookup = (name: string): ITheme | undefined => themes[name];\n\n let scheme: CliPanelColorScheme;\n let terminal: ITheme;\n let colors: CliPanelColors;\n let font: string | undefined;\n let radius: string | undefined;\n\n if (input === undefined || input === 'dark' || input === 'light' || input === 'auto') {\n scheme = pick((input as CliPanelColorScheme | 'auto' | undefined) ?? 'dark');\n terminal = PALETTE_TERMINALS[scheme];\n colors = { ...CliPanelPalettes[scheme] };\n } else if (typeof input === 'string') {\n const named = lookup(input);\n terminal = named ?? PALETTE_TERMINALS.dark;\n scheme = colorSchemeOf(terminal.background);\n colors = named ? derivePanelColors(named) : { ...CliPanelPalettes.dark };\n } else {\n const custom = typeof input.terminal === 'string' ? lookup(input.terminal) : input.terminal;\n scheme = input.base ? pick(input.base) : custom ? colorSchemeOf(custom.background) : 'dark';\n terminal = custom ?? PALETTE_TERMINALS[scheme];\n colors = custom ? derivePanelColors(custom) : { ...CliPanelPalettes[scheme] };\n if (input.colors) colors = { ...colors, ...stripUndefined(input.colors) };\n font = input.fontFamily;\n radius = input.radius;\n }\n\n const styles: Record<string, string> = { ...panelColorStyles(colors), 'color-scheme': scheme };\n if (font) styles['--cli-panel-font'] = font;\n if (radius) styles['--cli-panel-radius'] = radius;\n return { scheme, styles, terminal };\n}\n\nfunction stripUndefined<T extends object>(value: T): Partial<T> {\n return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined)) as Partial<T>;\n}\n\n/** Whether the system prefers dark colors (true without a browser). */\nexport function prefersDarkScheme(): boolean {\n if (typeof window === 'undefined' || !window.matchMedia) return true;\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n}\n","import { CliPanelPosition } from '../models';\n\nconst STORAGE_KEY = 'cli-panel-position';\nconst POSITION_CYCLE: CliPanelPosition[] = ['bottom', 'right', 'top', 'left'];\n\n/**\n * Load the user's saved panel position from localStorage.\n * Returns null if no preference is saved or localStorage is unavailable.\n */\nexport function loadPanelPosition(): CliPanelPosition | null {\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored && POSITION_CYCLE.includes(stored as CliPanelPosition)) {\n return stored as CliPanelPosition;\n }\n } catch {\n // localStorage unavailable (SSR, security restrictions)\n }\n return null;\n}\n\n/**\n * Save the user's panel position preference to localStorage.\n */\nexport function savePanelPosition(position: CliPanelPosition): void {\n try {\n localStorage.setItem(STORAGE_KEY, position);\n } catch {\n // localStorage unavailable\n }\n}\n\n/**\n * Get the next position in the cycle: bottom -> right -> top -> left -> bottom\n */\nexport function nextPanelPosition(current: CliPanelPosition): CliPanelPosition {\n const index = POSITION_CYCLE.indexOf(current);\n if (index === -1) {\n return POSITION_CYCLE[0];\n }\n return POSITION_CYCLE[(index + 1) % POSITION_CYCLE.length];\n}\n","/**\n * Regex that matches ANSI SGR escape sequences (colors, bold, reset, etc.)\n */\nconst ANSI_RE = /\\x1b\\[[0-9;]*m/g;\n\n/**\n * Strip all ANSI escape sequences from a string.\n * @param text The text potentially containing ANSI codes\n * @returns The text with all ANSI codes removed\n */\nexport function stripAnsi(text: string): string {\n return text.replace(ANSI_RE, '');\n}\n\n/**\n * Return the visible (display) width of a string in terminal columns,\n * ignoring ANSI escape codes and accounting for wide characters (emoji,\n * East Asian fullwidth, etc.) that occupy two columns.\n * @param text The text potentially containing ANSI codes\n * @returns The number of terminal columns the text occupies\n */\nexport function visibleLength(text: string): number {\n const stripped = stripAnsi(text);\n let width = 0;\n for (const ch of stripped) {\n const cp = ch.codePointAt(0)!;\n // Variation selectors (U+FE00–U+FE0F) are zero-width\n if (cp >= 0xfe00 && cp <= 0xfe0f) continue;\n // Zero-width joiners (U+200D) are zero-width\n if (cp === 0x200d) continue;\n // Combining marks (U+0300–U+036F) are zero-width\n if (cp >= 0x0300 && cp <= 0x036f) continue;\n width += isWideCharacter(cp) ? 2 : 1;\n }\n return width;\n}\n\n/**\n * Cut a string to at most `width` terminal columns, keeping ANSI escape codes intact.\n * When the text is too wide it ends with `ellipsis` followed by a reset (`\\x1b[0m`)\n * so no colour leaks into the rest of the line. Use it for lines that are redrawn in\n * place: a line that wraps takes two rows and breaks cursor-up based redraws.\n * @param text The text potentially containing ANSI codes\n * @param width The maximum number of columns (values below 1 return '')\n * @param ellipsis Appended when the text is cut (default '…')\n */\nexport function truncateToWidth(text: string, width: number, ellipsis = '\\u2026'): string {\n if (width < 1) return '';\n if (visibleLength(text) <= width) return text;\n const room = Math.max(0, width - visibleLength(ellipsis));\n let out = '';\n let used = 0;\n let i = 0;\n while (i < text.length) {\n if (text[i] === '\\x1b') {\n const m = /^\\x1b\\[[0-9;]*m/.exec(text.slice(i));\n if (m) {\n out += m[0];\n i += m[0].length;\n continue;\n }\n }\n const ch = String.fromCodePoint(text.codePointAt(i)!);\n const w = visibleLength(ch);\n if (used + w > room) break;\n out += ch;\n used += w;\n i += ch.length;\n }\n return `${out}${ellipsis}\\x1b[0m`;\n}\n\n/**\n * Check if a Unicode code point occupies two terminal columns.\n */\nfunction isWideCharacter(cp: number): boolean {\n // Surrogate-based emoji (most emoji above U+FFFF)\n if (cp >= 0x1f000) return true;\n // Miscellaneous Symbols and Pictographs, Emoticons, etc.\n if (cp >= 0x2600 && cp <= 0x27bf) return true;\n // Dingbats\n if (cp >= 0x2700 && cp <= 0x27bf) return true;\n // CJK Unified Ideographs\n if (cp >= 0x4e00 && cp <= 0x9fff) return true;\n // CJK Compatibility Ideographs\n if (cp >= 0xf900 && cp <= 0xfaff) return true;\n // Fullwidth Forms\n if (cp >= 0xff01 && cp <= 0xff60) return true;\n // Halfwidth/Fullwidth Forms (fullwidth part)\n if (cp >= 0xffe0 && cp <= 0xffe6) return true;\n // CJK Radicals Supplement, Kangxi Radicals\n if (cp >= 0x2e80 && cp <= 0x2fdf) return true;\n // CJK Symbols and Punctuation, Hiragana, Katakana\n if (cp >= 0x3000 && cp <= 0x30ff) return true;\n // Enclosed CJK Letters\n if (cp >= 0x3200 && cp <= 0x32ff) return true;\n // CJK Compatibility\n if (cp >= 0x3300 && cp <= 0x33ff) return true;\n // Enclosed Alphanumeric Supplement (circled numbers etc.)\n if (cp >= 0x1f100 && cp <= 0x1f1ff) return true;\n // Misc Symbols (some are wide in terminals)\n if (cp >= 0x2300 && cp <= 0x23ff) return true;\n return false;\n}\n","import { ICliCommandGuard } from '../interfaces/command-guards';\nimport { ICliCommandProcessor } from '../interfaces/command-processor';\nimport {\n ICliAuthorizationService,\n ICliAuthorizationService_TOKEN,\n} from '../interfaces/authorization';\nimport { ICliExecutionContext } from '../interfaces/execution-context';\nimport { cliMissingPermissions } from './permissions';\n\nconst list = (value: unknown): string[] =>\n Array.isArray(value) ? value.filter((v) => typeof v === 'string' && v.trim()) : [];\n\nconst authorization = (context: ICliExecutionContext): ICliAuthorizationService | undefined => {\n try {\n return context.services.get<ICliAuthorizationService>(ICliAuthorizationService_TOKEN);\n } catch {\n return undefined;\n }\n};\n\n/**\n * The processor and its ancestors (sub-commands inherit the access rules of\n * their parents: `pkg add` is protected by metadata on `pkg`).\n */\nfunction chain(processor: ICliCommandProcessor): ICliCommandProcessor[] {\n const out: ICliCommandProcessor[] = [];\n let current: ICliCommandProcessor | undefined = processor;\n while (current && out.length < 32 && !out.includes(current)) {\n out.push(current);\n current = (current as { parent?: ICliCommandProcessor }).parent;\n }\n return out;\n}\n\n/** All required permissions along the chain (each level's requirements apply). */\nconst requiredPermissionsOf = (p: ICliCommandProcessor): string[] =>\n [...new Set(chain(p).flatMap((x) => list(x.metadata?.requiredPermissions)))];\n\n/** Group requirements per level: the principal must satisfy every level. */\nconst requiredGroupLevels = (p: ICliCommandProcessor): string[][] =>\n chain(p).map((x) => list(x.metadata?.requiredGroups)).filter((g) => g.length > 0);\n\nconst needsAuth = (p: ICliCommandProcessor): boolean =>\n chain(p).some((x) => x.metadata?.requireAuth === true) ||\n requiredGroupLevels(p).length > 0 ||\n requiredPermissionsOf(p).length > 0;\n\n/**\n * `metadata.requireAuth` (also implied by `requiredGroups` /\n * `requiredPermissions`): the command needs a signed-in principal.\n * Active only when an {@link ICliAuthorizationService} is registered.\n */\nexport const cliRequireAuthGuard: ICliCommandGuard = {\n name: 'access:require-auth',\n priority: -100,\n appliesTo: (processor, _command, context) => needsAuth(processor) && !!authorization(context),\n canActivate: (_command, processor, context) =>\n authorization(context)!.getPrincipal() ? true : `${processor.command}: login required`,\n};\n\n/**\n * `metadata.requiredGroups`: the principal must belong to at least one group.\n * Active only when an {@link ICliAuthorizationService} is registered.\n */\nexport const cliRequiredGroupsGuard: ICliCommandGuard = {\n name: 'access:required-groups',\n priority: -90,\n appliesTo: (processor, _command, context) =>\n requiredGroupLevels(processor).length > 0 && !!authorization(context),\n canActivate: (_command, processor, context) => {\n const auth = authorization(context)!;\n const principal = auth.getPrincipal();\n if (!principal) return `${processor.command}: login required`;\n if (auth.can('*')) return true;\n for (const required of requiredGroupLevels(processor)) {\n const member = required.some((g) => principal.groups.some((pg) => pg.toLowerCase() === g.toLowerCase()));\n if (!member) return `${processor.command}: permission denied (requires group: ${required.join(' or ')})`;\n }\n return true;\n },\n};\n\n/**\n * `metadata.requiredPermissions`: the principal must hold all permissions.\n * Active only when an {@link ICliAuthorizationService} is registered.\n */\nexport const cliRequiredPermissionsGuard: ICliCommandGuard = {\n name: 'access:required-permissions',\n priority: -80,\n appliesTo: (processor, _command, context) =>\n requiredPermissionsOf(processor).length > 0 && !!authorization(context),\n canActivate: (_command, processor, context) => {\n const principal = authorization(context)!.getPrincipal();\n if (!principal) return `${processor.command}: login required`;\n const missing = cliMissingPermissions(principal.permissions, requiredPermissionsOf(processor));\n return missing.length === 0\n ? true\n : `${processor.command}: permission denied (requires ${missing.join(', ')})`;\n },\n};\n\n/**\n * Guards enforcing access metadata on processors. Registered by the CLI\n * engine; they do nothing until an auth module registers an\n * {@link ICliAuthorizationService}.\n */\nexport const cliAccessMetadataGuards: ICliCommandGuard[] = [\n cliRequireAuthGuard,\n cliRequiredGroupsGuard,\n cliRequiredPermissionsGuard,\n];\n","import type { CliServerConfig } from '../models/server';\nimport type { ICliExecutionContext } from '../interfaces/execution-context';\nimport type { ICliServerManager } from '../interfaces/services';\nimport { ICliServerManager_TOKEN } from '../interfaces/services';\n\n/**\n * The server a command should use when the user does not name one.\n *\n * Prefers the server manager's choice (the default server, else the first\n * connected one) so a command does not pick a server that is down or that\n * rejects the user (a protected server they have not signed in to). Falls\n * back to the first configured server when no manager is available or\n * nothing is connected, so callers still get a clear error from that server.\n */\nexport function cliDefaultServer(context: Pick<ICliExecutionContext, 'services' | 'options'>): CliServerConfig | undefined {\n const servers = context.options?.servers ?? [];\n const manager = context.services?.get<ICliServerManager>(ICliServerManager_TOKEN);\n const preferred = manager?.preferredServer?.();\n return (preferred ? servers.find((s) => s.name === preferred) : undefined) ?? servers[0];\n}\n","import { CliForegroundColor } from '../models';\nimport { ICliExecutionContext } from '../interfaces';\n\n// Formatting for command help pages (writeDescription) and hints, shared by\n// the built-in commands and plugins so they all look the same.\n\n/** A help row: the left column and its description. */\nexport type CliHelpRow = readonly [string, string];\n\nfunction writeColumns(\n context: ICliExecutionContext,\n rows: readonly CliHelpRow[],\n formatLeft: (padded: string) => string,\n formatRight: (text: string) => string,\n): void {\n const width = Math.max(...rows.map(([left]) => left.length)) + 2;\n for (const [left, right] of rows) {\n context.writer.writeln(\n ` ${formatLeft(left.padEnd(width))}${formatRight(right)}`,\n );\n }\n}\n\n/** Write a `📋 Usage:` block with aligned, highlighted commands. */\nexport function writeUsage(\n context: ICliExecutionContext,\n rows: readonly CliHelpRow[],\n): void {\n const { writer, translator } = context;\n writer.writeln(`📋 ${translator.t('cli.common.usage', 'Usage:')}`);\n writeColumns(\n context,\n rows,\n (cmd) => writer.wrapInColor(cmd, CliForegroundColor.Cyan),\n (text) => text,\n );\n}\n\n/** Write a `📝 Examples:` block with aligned `# comments`. */\nexport function writeExamples(\n context: ICliExecutionContext,\n rows: readonly CliHelpRow[],\n): void {\n const { writer, translator } = context;\n writer.writeln(`📝 ${translator.t('cli.common.examples', 'Examples:')}`);\n writeColumns(\n context,\n rows,\n (cmd) => cmd,\n (comment) =>\n writer.wrapInColor(`# ${comment}`, CliForegroundColor.Green),\n );\n}\n\n/**\n * Write a paragraph wrapped at word boundaries to the terminal width (at\n * most 100 columns), so long help text never breaks inside a word.\n */\nexport function writeWrapped(\n context: ICliExecutionContext,\n text: string,\n indent = 0,\n): void {\n const cols = context.terminal?.cols ?? 80;\n const width = Math.max(20, Math.min(cols - 1, 100) - indent);\n const pad = ' '.repeat(indent);\n let line = '';\n for (const word of text.split(/\\s+/).filter(Boolean)) {\n if (line && visibleLength(line) + 1 + visibleLength(word) > width) {\n context.writer.writeln(pad + line);\n line = word;\n } else {\n line = line ? `${line} ${word}` : word;\n }\n }\n if (line) context.writer.writeln(pad + line);\n}\n\nfunction visibleLength(text: string): number {\n return text.replace(/\\x1b\\[[0-9;]*m/g, '').length;\n}\n\n/** `💡 Use <command> to <action>` hint. */\nexport function writeHint(\n context: ICliExecutionContext,\n command: string,\n action: string,\n): void {\n const { writer, translator } = context;\n const text = `💡 ${translator.t('cli.common.use_hint', 'Use {command} {action}', {\n command: writer.wrapInColor(command, CliForegroundColor.Cyan),\n action,\n })}`;\n // \"ℹ \" prefix + the emoji's double width\n const width = Math.min((context.terminal?.cols ?? 80) - 1, 100) - 3;\n if (visibleLength(text) + 1 <= width) {\n writer.writeInfo(text);\n return;\n }\n // Narrow terminal: wrap at words, continuation lines under the text\n const lines: string[] = [];\n let line = '';\n for (const word of text.split(' ')) {\n if (line && visibleLength(line) + 1 + visibleLength(word) > width) {\n lines.push(line);\n line = word;\n } else {\n line = line ? `${line} ${word}` : word;\n }\n }\n if (line) lines.push(line);\n writer.writeInfo(lines[0]);\n for (const rest of lines.slice(1)) {\n writer.writeln(` ${rest}`);\n }\n}\n","/**\n * Text given as one free-form argument (JSON, code, a query) without one\n * pair of quotes wrapping all of it: `'{\"a\": 1}'` -> `{\"a\": 1}`, and\n * `\"say \\\"hi\\\"\"` -> `say \"hi\"`. Anything else is kept as typed, so quotes\n * and backslashes inside the text are never touched.\n */\nexport function unquoteRawArgument(text: string): string {\n const value = text.trim();\n if (value.length < 2) return value;\n const quote = value[0];\n if (quote === \"'\") {\n return value.indexOf(\"'\", 1) === value.length - 1 ? value.slice(1, -1) : value;\n }\n if (quote === '\"') {\n for (let i = 1; i < value.length; i++) {\n if (value[i] === '\\\\') i++;\n else if (value[i] === '\"') {\n return i === value.length - 1\n ? value.slice(1, -1).replace(/\\\\([\"\\\\$`])/g, '$1')\n : value;\n }\n }\n }\n return value;\n}\n","import { ICliCommandParameterDescriptor } from '../interfaces';\nimport { CliBackgroundColor, CliForegroundColor } from '../models';\nimport { delay } from './delay';\nimport { ObjectDescriber } from './object-describer';\nimport {\n getConfigValue,\n getPluginConfigValue,\n resolveConfigurationCategories,\n CLI_CONFIGURE_STORE_NAME,\n} from './config-utils';\n\n/**\n * Retrieve a parameter's value from the parsed arguments, checking aliases.\n * @param p The parameter descriptor\n * @param args The parsed command arguments\n * @returns The matched value, or `undefined` if not found\n */\nexport const getParameterValue = (\n p: ICliCommandParameterDescriptor,\n args: Record<string, any>,\n): unknown => {\n if (args[p.name] !== undefined) {\n return args[p.name];\n }\n const matchedAlias = p.aliases?.find((alias) => args[alias] !== undefined);\n return matchedAlias ? args[matchedAlias] : undefined;\n};\n\n/**\n * Pretty-print a JSON value with ANSI color highlighting.\n * @param json The value to format\n * @returns A colorized, indented string suitable for terminal output\n */\nexport const formatJson = (json: any): string => {\n const identedJson = JSON.stringify(json, null, 2);\n\n return colorizeJson(identedJson.split('\\n').join('\\r\\n'));\n};\n\n/**\n * Apply ANSI color codes to a JSON string using token-based scanning.\n * Handles keys, strings, numbers, booleans, null, and structural characters.\n * @param jsonString The raw JSON string to colorize\n * @returns The colorized string\n */\nexport const colorizeJson = (jsonString: string): string => {\n const RST = '\\x1b[0m';\n const CYN = '\\x1b[36m'; // cyan — keys\n const GRN = '\\x1b[32m'; // green — string values\n const YLW = '\\x1b[33m'; // yellow — numbers, booleans, null\n const GRY = '\\x1b[90m'; // gray — brackets, punctuation\n\n const tokenRe =\n /(\"(?:[^\"\\\\]|\\\\.)*\"?)(\\s*:)?|(\\btrue\\b|\\bfalse\\b|\\bnull\\b)|(-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)|([{}[\\],])/g;\n\n let result = '';\n let lastIndex = 0;\n let m: RegExpExecArray | null;\n\n while ((m = tokenRe.exec(jsonString)) !== null) {\n if (m.index > lastIndex) {\n result += jsonString.slice(lastIndex, m.index);\n }\n\n if (m[1] !== undefined) {\n if (m[2] !== undefined) {\n result += CYN + m[1] + RST + m[2]; // key: cyan\n } else {\n result += GRN + m[1] + RST; // string value: green\n }\n } else if (m[3] !== undefined) {\n result += YLW + m[3] + RST; // boolean/null: yellow\n } else if (m[4] !== undefined) {\n result += YLW + m[4] + RST; // number: yellow\n } else if (m[5] !== undefined) {\n result += GRY + m[5] + RST; // brackets/punctuation: gray\n }\n\n lastIndex = m.index + m[0].length;\n }\n\n if (lastIndex < jsonString.length) {\n result += jsonString.slice(lastIndex);\n }\n\n return result;\n};\n\n/**\n * Convert a key-value object to a URL query string. Arrays produce repeated keys.\n * @param params The parameters to encode\n * @returns The encoded query string (without leading `?`)\n */\nexport const toQueryString = (params: Record<string, any>): string => {\n const searchParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n value.forEach((v) => searchParams.append(key, v.toString()));\n } else if (value !== null && value !== undefined) {\n searchParams.append(key, value.toString());\n }\n }\n\n return searchParams.toString();\n};\n\n/**\n * Highlight regex matches in text using an ANSI background color.\n * @param text The source text\n * @param pattern The regex pattern to highlight\n * @param bgColor The background color to apply (default: Yellow)\n * @returns The text with matching segments wrapped in ANSI background color codes\n */\nexport const highlightTextWithBg = (\n text: string,\n pattern: RegExp,\n bgColor: CliBackgroundColor = CliBackgroundColor.Yellow,\n): string => {\n // Replace matches with background-colored text\n return text.replace(\n pattern,\n (match) => `${bgColor}${match}${CliForegroundColor.Reset}`,\n );\n};\n\n/**\n * Extract the substring to the right of a given word in a command string.\n * @param command The full command string\n * @param word The word to search for\n * @returns The trimmed text after the word, or `undefined` if not found\n */\nexport const getRightOfWord = (\n command: string,\n word: string,\n): string | undefined => {\n // Find the position of the word in the command\n const index = command.indexOf(word);\n\n // If the word is found, extract the substring to the right\n if (index !== -1) {\n return command.slice(index + word.length).trim();\n }\n\n // If the word is not found, return null\n return undefined;\n};\n\n/**\n * Apply a color function to the first word of a text string, preserving leading whitespace.\n * @param text The text to process\n * @param colorFunction A function that wraps a word in ANSI color codes\n * @returns The text with only the first word colorized\n */\nexport const colorFirstWord = (\n text: string,\n colorFunction: (word: string) => string,\n) => {\n if (!text) return text;\n\n // Match leading spaces and first word separately\n const match = text.match(/^(\\s*)(\\S+)(.*)$/);\n\n if (!match) return text; // If no match, return original text\n\n const [, leadingSpaces, firstWord, restOfText] = match;\n\n // Apply color only to the first word\n const firstWordColored = colorFunction(firstWord);\n\n // Reconstruct string: Keep spaces, color first word, and append rest\n return `${leadingSpaces}${firstWordColored}${restOfText}`;\n};\n\nexport * from './object-describer';\n\nexport * from './delay';\n\nexport * from './terminal-utils';\n\nexport * from './version-utils';\n\nexport * from './config-utils';\n\nexport * from './server-version-negotiator';\n\nexport * from './websocket-auth';\n\nexport * from './panel-theme-sync';\n\nexport * from './panel-position-store';\n\nexport * from './ansi-utils';\n\nexport const utils = {\n getParameterValue,\n formatJson,\n colorizeJson,\n toQueryString,\n highlightTextWithBg,\n getRightOfWord,\n colorFirstWord,\n ObjectDescriber,\n delay,\n getConfigValue,\n getPluginConfigValue,\n resolveConfigurationCategories,\n CLI_CONFIGURE_STORE_NAME,\n};\nexport * from './permissions';\nexport * from './access-guards';\nexport * from './server-target';\nexport * from './help-format';\nexport * from './shell-words';\nexport * from './raw-argument';\n","import { ICliModule } from '../interfaces';\nimport { API_VERSION } from '../version';\n\n/**\n * Registry that tracks loaded web CLI modules (frontend plugins) and dispatches\n * boot handlers when new modules are registered (including dynamically via UMD).\n *\n * This registry is for **browser-side web plugins only**. Backend server\n * processors (Node/Python/.NET) have their own registries and do not use\n * this class or the `apiVersion` gating mechanism.\n */\nexport class CliModuleRegistry {\n private readonly modules = new Map<string, ICliModule>();\n private readonly bootHandlers: ((module: ICliModule) => Promise<void>)[] =\n [];\n private readonly unregisterHandlers: ((module: ICliModule) => void)[] = [];\n /** Registrations whose boot handlers are still running. */\n private readonly inFlight = new Set<Promise<void>>();\n\n /** Optional warning callback — set by the engine to route through ICliLogger */\n onWarn?: (message: string) => void;\n\n /**\n * Register a handler that is called whenever a new module is registered.\n */\n onModuleBoot(handler: (module: ICliModule) => Promise<void>): void {\n this.bootHandlers.push(handler);\n }\n\n /**\n * Register a web plugin module and notify all boot handlers.\n * Modules whose `apiVersion` is below the runtime's `API_VERSION` are\n * skipped with a warning — this ensures only compatible frontend plugins load.\n */\n register(module: ICliModule): Promise<void> {\n const registration = this.registerInternal(module);\n this.inFlight.add(registration);\n const done = () => this.inFlight.delete(registration);\n registration.then(done, done);\n return registration;\n }\n\n /**\n * Resolve once every registration in progress (including ones started\n * meanwhile, e.g. a plugin loading another) has finished booting.\n */\n async whenIdle(): Promise<void> {\n while (this.inFlight.size > 0) {\n await Promise.allSettled([...this.inFlight]);\n }\n }\n\n private async registerInternal(module: ICliModule): Promise<void> {\n const modApiVersion = module.apiVersion;\n if (typeof modApiVersion !== 'number' || modApiVersion < API_VERSION) {\n const msg =\n `[CLI] Plugin \"${module.name}\" targets API version ${modApiVersion ?? 'unknown'}, ` +\n `but this runtime requires API version ${API_VERSION}. Skipping.`;\n if (this.onWarn) {\n this.onWarn(msg);\n } else {\n console.warn(msg);\n }\n return;\n }\n this.modules.set(module.name, module);\n for (const handler of this.bootHandlers) {\n try {\n await handler(module);\n } catch (e) {\n const msg = `[CLI] Boot handler failed for module \"${module.name}\": ${e instanceof Error ? e.message : e}`;\n if (this.onWarn) {\n this.onWarn(msg);\n } else {\n console.warn(msg);\n }\n }\n }\n }\n\n /**\n * Register a handler that is called when a module is unregistered,\n * e.g. so its processors can be removed.\n */\n onModuleUnregister(handler: (module: ICliModule) => void): void {\n this.unregisterHandlers.push(handler);\n }\n\n /**\n * Unregister a module and notify all unregister handlers. A module\n * registered again afterwards (e.g. a newer version) boots again.\n * Returns the removed module, or `undefined` when it was not registered.\n */\n unregister(name: string): ICliModule | undefined {\n const module = this.modules.get(name);\n if (!module) return undefined;\n this.modules.delete(name);\n for (const handler of this.unregisterHandlers) {\n try {\n handler(module);\n } catch (e) {\n const msg = `[CLI] Unregister handler failed for module \"${name}\": ${e instanceof Error ? e.message : e}`;\n if (this.onWarn) {\n this.onWarn(msg);\n } else {\n console.warn(msg);\n }\n }\n }\n return module;\n }\n\n /**\n * Get a module by name.\n */\n getModule(name: string): ICliModule | undefined {\n return this.modules.get(name);\n }\n\n /**\n * Get all registered modules.\n */\n getAll(): ICliModule[] {\n return Array.from(this.modules.values());\n }\n\n /**\n * Track a module without triggering boot handlers.\n * Used by the boot service for statically-provided modules that are\n * already being booted through the normal pipeline.\n */\n track(module: ICliModule): void {\n this.modules.set(module.name, module);\n }\n\n /**\n * Check if a module is registered.\n */\n has(name: string): boolean {\n return this.modules.has(name);\n }\n}\n","import { enums } from '../models';\nimport { constants } from '../constants';\nimport { ICliExecutionContext, ICliModule } from '../interfaces';\nimport { utils } from '../utils';\nimport { CliModuleRegistry } from './cli-module-registry';\n\nexport { CliModuleRegistry } from './cli-module-registry';\n\nexport const initializeBrowserEnvironment = ({\n context,\n registry,\n}: {\n context: ICliExecutionContext;\n registry: CliModuleRegistry;\n}): void => {\n // Expose the registry as the single clean global for UMD module loading\n (window as any).__cliModuleRegistry = registry;\n\n // Expose core utilities and boot functions for UMD modules\n (window as any).cliCore = {\n ...constants,\n ...utils,\n ...enums,\n bootCliModule,\n };\n\n // Safety warning for any UMD module trying to use Angular decorators\n Object.defineProperty(window, 'ngCore', {\n configurable: true,\n get() {\n console.warn(\n 'CLI: Angular decorators are not supported in UMD modules. ' +\n 'Use plain classes instead.',\n );\n return { Injectable: () => () => {} };\n },\n });\n};\n\n/**\n * Boot a CLI module by registering it with the global module registry.\n * Used by UMD entrypoints to register themselves when loaded dynamically.\n */\nexport const bootCliModule = async (module: ICliModule): Promise<void> => {\n if (typeof window !== 'undefined' && (window as any).__cliModuleRegistry) {\n await (window as any).__cliModuleRegistry.register(module);\n }\n};\n","/** Error message used when a `CancellablePromise` is cancelled. */\nexport const CANCELLATION_ERROR_MESSAGE = 'Promise cancelled';\n\n/**\n * A promise wrapper that supports cooperative cancellation.\n *\n * Create with an executor (like `new Promise`), then call `execute()` to run.\n * Call `cancel()` to reject with a cancellation error and prevent further\n * resolve/reject callbacks from firing.\n *\n * @example\n * ```ts\n * const cp = new CancellablePromise<string>((resolve) => {\n * setTimeout(() => resolve('done'), 5000);\n * });\n * cp.execute().catch(e => console.log(e.message)); // 'Promise cancelled'\n * cp.cancel();\n * ```\n */\nexport class CancellablePromise<T> {\n private hasCancelled = false;\n\n private abortController = new AbortController();\n\n constructor(\n private executor: (\n resolve: (value: T) => void,\n reject: (reason?: any) => void,\n ) => void,\n ) {}\n\n /**\n * Run the executor and return a promise for its result.\n * If `cancel()` has been called, the promise rejects immediately.\n */\n public execute(): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n this.abortController.signal.onabort = () => {\n reject(new Error(CANCELLATION_ERROR_MESSAGE));\n };\n\n this.executor(\n (value) => {\n if (!this.hasCancelled) {\n resolve(value);\n }\n },\n (reason) => {\n if (!this.hasCancelled) {\n reject(reason);\n }\n },\n );\n });\n }\n\n /**\n * Cancel the promise. The executing promise rejects with\n * `Error('Promise cancelled')` and subsequent resolve/reject calls are ignored.\n */\n cancel() {\n this.hasCancelled = true;\n this.abortController.abort();\n }\n}\n","import type { CliThemeInfo } from './theme-info';\nimport { DefaultThemes } from './default-themes';\n\nexport const DefaultThemeInfos: Record<string, CliThemeInfo> = {\n default: {\n theme: DefaultThemes.default,\n category: 'dark',\n tags: ['built-in'],\n description: 'Dark indigo theme with soft pastels',\n },\n light: {\n theme: DefaultThemes.light,\n category: 'light',\n tags: ['built-in'],\n description: 'Light counterpart of the default theme',\n },\n classic: {\n theme: DefaultThemes.classic,\n category: 'dark',\n tags: ['built-in'],\n description: 'Classic Windows terminal palette',\n },\n dracula: {\n theme: DefaultThemes.dracula,\n category: 'dark',\n tags: ['popular'],\n description: 'Popular dark theme with vibrant colors',\n },\n monokai: {\n theme: DefaultThemes.monokai,\n category: 'dark',\n tags: ['popular'],\n description: 'Classic code editor dark theme',\n },\n solarizedDark: {\n theme: DefaultThemes.solarizedDark,\n category: 'dark',\n tags: ['popular'],\n description: 'Ethan Schoonover\\'s precision dark palette',\n },\n solarizedLight: {\n theme: DefaultThemes.solarizedLight,\n category: 'light',\n tags: ['popular'],\n description: 'Ethan Schoonover\\'s precision light palette',\n },\n gruvboxDark: {\n theme: DefaultThemes.gruvboxDark,\n category: 'dark',\n tags: ['popular'],\n description: 'Retro groove dark color scheme',\n },\n gruvboxLight: {\n theme: DefaultThemes.gruvboxLight,\n category: 'light',\n tags: ['popular'],\n description: 'Retro groove light color scheme',\n },\n nord: {\n theme: DefaultThemes.nord,\n category: 'dark',\n tags: ['popular'],\n description: 'Arctic, north-bluish clean palette',\n },\n oneDark: {\n theme: DefaultThemes.oneDark,\n category: 'dark',\n tags: ['popular'],\n description: 'Atom\\'s iconic dark theme',\n },\n material: {\n theme: DefaultThemes.material,\n category: 'dark',\n tags: ['popular'],\n description: 'Material Design inspired dark theme',\n },\n highContrastLight: {\n theme: DefaultThemes.highContrastLight,\n category: 'light',\n tags: ['accessibility'],\n description: 'High contrast light theme for accessibility',\n },\n tokyoNight: {\n theme: DefaultThemes.tokyoNight,\n category: 'dark',\n tags: ['popular'],\n description: 'Cool blue-purple dark theme',\n },\n catppuccinMocha: {\n theme: DefaultThemes.catppuccinMocha,\n category: 'dark',\n tags: ['popular', 'pastel'],\n description: 'Soothing pastel dark theme (warmest)',\n },\n catppuccinFrappe: {\n theme: DefaultThemes.catppuccinFrappe,\n category: 'dark',\n tags: ['popular', 'pastel'],\n description: 'Soothing pastel mid-dark theme',\n },\n catppuccinLatte: {\n theme: DefaultThemes.catppuccinLatte,\n category: 'light',\n tags: ['popular', 'pastel'],\n description: 'Soothing pastel light theme',\n },\n rosePine: {\n theme: DefaultThemes.rosePine,\n category: 'dark',\n tags: ['popular'],\n description: 'All natural pine, faux fur, and a bit of soho vibes',\n },\n rosePineDawn: {\n theme: DefaultThemes.rosePineDawn,\n category: 'light',\n tags: ['popular'],\n description: 'Rose Pine light variant',\n },\n kanagawa: {\n theme: DefaultThemes.kanagawa,\n category: 'dark',\n tags: ['popular'],\n description: 'Dark theme inspired by Katsushika Hokusai',\n },\n everforestDark: {\n theme: DefaultThemes.everforestDark,\n category: 'dark',\n tags: ['popular'],\n description: 'Comfortable green-tinted dark theme',\n },\n everforestLight: {\n theme: DefaultThemes.everforestLight,\n category: 'light',\n tags: ['popular'],\n description: 'Comfortable green-tinted light theme',\n },\n ayuDark: {\n theme: DefaultThemes.ayuDark,\n category: 'dark',\n tags: ['popular'],\n description: 'Simple, bright and elegant dark theme',\n },\n githubLight: {\n theme: DefaultThemes.githubLight,\n category: 'light',\n tags: ['popular'],\n description: 'GitHub\\'s clean light interface theme',\n },\n cyberpunk: {\n theme: DefaultThemes.cyberpunk,\n category: 'dark',\n tags: ['retro', 'fun'],\n description: 'Neon-lit cyberpunk aesthetic',\n },\n retroGreen: {\n theme: DefaultThemes.retroGreen,\n category: 'dark',\n tags: ['retro', 'fun'],\n description: 'Classic green phosphor CRT monitor',\n },\n retroAmber: {\n theme: DefaultThemes.retroAmber,\n category: 'dark',\n tags: ['retro', 'fun'],\n description: 'Warm amber CRT monitor',\n },\n matrix: {\n theme: DefaultThemes.matrix,\n category: 'dark',\n tags: ['retro', 'fun'],\n description: 'Enter the Matrix - green on black',\n },\n synthwave: {\n theme: DefaultThemes.synthwave,\n category: 'dark',\n tags: ['retro', 'fun'],\n description: '80s synthwave purple/pink aesthetic',\n },\n highContrastDark: {\n theme: DefaultThemes.highContrastDark,\n category: 'dark',\n tags: ['accessibility'],\n description: 'Maximum contrast dark theme',\n },\n};\n","import {\n CliWorkerInboundMessage,\n CliWorkerOutboundMessage,\n} from '../interfaces/worker-protocol';\nimport { ICliServiceEvent, CliServiceLogLevel } from '../interfaces/background-service';\nimport { ICliManagedInterval, ICliManagedTimer } from '../interfaces/execution-context';\n\n/**\n * Context provided to worker service handlers inside a Web Worker.\n */\nexport interface WorkerServiceContext {\n /** Emit an event to the main thread */\n emit(event: Omit<ICliServiceEvent, 'timestamp'>): void;\n /** Log a message (forwarded to the main-thread log buffer) */\n log(message: string, level?: CliServiceLogLevel): void;\n /** Update state on the main thread */\n updateState(patch: Record<string, unknown>): void;\n /** Create an interval that is auto-cleared on stop */\n createInterval(callback: () => void, ms: number): ICliManagedInterval;\n /** Create a timeout that is auto-cleared on stop */\n createTimeout(callback: () => void, ms: number): ICliManagedTimer;\n /** AbortSignal scoped to this service */\n signal: AbortSignal;\n}\n\n/**\n * Lightweight helper for authoring worker-compatible background services.\n * Call this at the top level of your worker script.\n */\nexport function createWorkerService(handlers: {\n onStart(ctx: WorkerServiceContext): Promise<void>;\n onStop?(): Promise<void>;\n}): void {\n const abortController = new AbortController();\n const timers = new Set<{ clear(): void }>();\n\n function post(msg: CliWorkerOutboundMessage): void {\n (self as unknown as { postMessage(msg: unknown): void }).postMessage(msg);\n }\n\n const ctx: WorkerServiceContext = {\n signal: abortController.signal,\n\n emit(event) {\n post({ type: 'event', event });\n },\n\n log(message, level = 'info') {\n post({ type: 'log', level, message });\n },\n\n updateState(patch) {\n post({ type: 'state-update', patch });\n },\n\n createInterval(callback, ms) {\n let timerId = setInterval(callback, ms);\n const handle: ICliManagedInterval = {\n clear() {\n clearInterval(timerId);\n timers.delete(handle);\n },\n setDelay(newMs) {\n clearInterval(timerId);\n timerId = setInterval(callback, newMs);\n },\n };\n timers.add(handle);\n return handle;\n },\n\n createTimeout(callback, ms) {\n const timerId = setTimeout(() => {\n timers.delete(handle);\n callback();\n }, ms);\n const handle: ICliManagedTimer = {\n clear() {\n clearTimeout(timerId);\n timers.delete(handle);\n },\n };\n timers.add(handle);\n return handle;\n },\n };\n\n function clearAllTimers(): void {\n for (const timer of timers) {\n timer.clear();\n }\n timers.clear();\n }\n\n (self as unknown as { onmessage: ((ev: MessageEvent) => void) | null }).onmessage =\n async (ev: MessageEvent<CliWorkerInboundMessage>) => {\n const msg = ev.data;\n\n switch (msg.type) {\n case 'start':\n try {\n post({ type: 'status', status: 'running' });\n await handlers.onStart(ctx);\n } catch (e) {\n const error = e instanceof Error ? e : new Error(String(e));\n post({ type: 'error', message: error.message, stack: error.stack });\n }\n break;\n\n case 'stop':\n clearAllTimers();\n abortController.abort();\n if (handlers.onStop) {\n await handlers.onStop();\n }\n post({ type: 'status', status: 'stopped' });\n break;\n\n case 'abort':\n clearAllTimers();\n abortController.abort();\n post({ type: 'status', status: 'stopped' });\n break;\n }\n };\n}\n","import { ICliFileEntry, ICliFileTransferService } from '../interfaces/file-transfer';\n\n/**\n * Browser-based file transfer service using native browser APIs.\n *\n * This is the default implementation when no virtual filesystem is available.\n * `readFile` and `uploadFromBrowser` open a file picker dialog.\n * `writeFile` and `downloadToBrowser` trigger a browser download.\n *\n * **Limitations:** `listFiles()` and `exists()` are not supported in the\n * browser environment and always return empty/false respectively.\n * Use `@qodalis/cli-files` for full filesystem capabilities.\n */\nexport class BrowserFileTransferService implements ICliFileTransferService {\n async readFile(_path: string): Promise<string | null> {\n return this._pickFile().then(r => r?.content ?? null);\n }\n\n async writeFile(path: string, content: string): Promise<void> {\n const filename = path.split('/').pop() || 'download';\n this.downloadToBrowser(filename, content);\n }\n\n /**\n * Not supported in browser — always returns an empty array.\n * Use `@qodalis/cli-files` for directory listing.\n */\n async listFiles(_path: string): Promise<ICliFileEntry[]> {\n return [];\n }\n\n /**\n * Not supported in browser — always returns `false`.\n * Use `@qodalis/cli-files` for file existence checks.\n */\n async exists(_path: string): Promise<boolean> {\n return false;\n }\n\n downloadToBrowser(filename: string, content: string | Blob): void {\n const blob = content instanceof Blob ? content : new Blob([content], { type: 'application/octet-stream' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }\n\n async uploadFromBrowser(accept?: string): Promise<{ name: string; content: string } | null> {\n return this._pickFile(accept);\n }\n\n private _pickFile(accept?: string): Promise<{ name: string; content: string } | null> {\n return new Promise((resolve) => {\n const input = document.createElement('input');\n input.type = 'file';\n if (accept) {\n input.accept = accept;\n }\n input.onchange = () => {\n const file = input.files?.[0];\n if (!file) {\n resolve(null);\n return;\n }\n const reader = new FileReader();\n reader.onload = () => {\n resolve({ name: file.name, content: reader.result as string });\n };\n reader.onerror = () => resolve(null);\n reader.readAsText(file);\n };\n input.oncancel = () => resolve(null);\n input.click();\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/constants.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/debug.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/re.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/parse-options.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/identifiers.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/semver.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/parse.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/valid.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/clean.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/inc.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/diff.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/major.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/minor.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/patch.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/prerelease.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rcompare.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-loose.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/compare-build.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/sort.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/rsort.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gt.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lt.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/eq.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/neq.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/gte.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/lte.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/cmp.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/coerce.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/truncate.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/internal/lrucache.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/range.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/classes/comparator.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/functions/satisfies.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/to-comparators.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/max-satisfying.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-satisfying.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/min-version.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/valid.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/outside.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/gtr.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/ltr.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/intersects.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/simplify.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/ranges/subset.js","../../node_modules/.pnpm/semver@7.8.5/node_modules/semver/index.js","../../packages/core/src/lib/models/colors.ts","../../packages/core/src/lib/models/icons.ts","../../packages/core/src/lib/models/services.ts","../../packages/core/src/lib/tokens.ts","../../packages/core/src/lib/interfaces/services.ts","../../packages/core/src/lib/models/server.ts","../../packages/core/src/lib/models/options.ts","../../packages/core/src/lib/models/permissions.ts","../../packages/core/src/lib/models/index.ts","../../packages/core/src/lib/interfaces/command-controls.ts","../../packages/core/src/lib/interfaces/command-guards.ts","../../packages/core/src/lib/utils/permissions.ts","../../packages/core/src/lib/interfaces/authorization.ts","../../packages/core/src/lib/interfaces/event-bus.ts","../../packages/core/src/lib/interfaces/http-client.ts","../../packages/core/src/lib/constants/index.ts","../../packages/core/src/lib/utils/delay.ts","../../packages/core/src/lib/utils/shell-words.ts","../../packages/core/src/lib/utils/object-describer.ts","../../packages/core/src/lib/utils/config-utils.ts","../../packages/core/src/lib/utils/terminal-utils.ts","../../packages/core/src/lib/utils/version-utils.ts","../../packages/core/src/lib/version.ts","../../packages/core/src/lib/utils/server-version-negotiator.ts","../../packages/core/src/lib/utils/websocket-auth.ts","../../packages/core/src/lib/themes/default-themes.ts","../../packages/core/src/lib/utils/panel-theme-sync.ts","../../packages/core/src/lib/utils/panel-position-store.ts","../../packages/core/src/lib/utils/ansi-utils.ts","../../packages/core/src/lib/utils/access-guards.ts","../../packages/core/src/lib/utils/server-target.ts","../../packages/core/src/lib/utils/help-format.ts","../../packages/core/src/lib/utils/raw-argument.ts","../../packages/core/src/lib/utils/index.ts","../../packages/core/src/lib/modules/cli-module-registry.ts","../../packages/core/src/lib/modules/index.ts","../../packages/core/src/lib/types/CancellablePromise.ts","../../packages/core/src/lib/themes/default-theme-infos.ts","../../packages/core/src/lib/worker/create-worker-service.ts","../../packages/core/src/lib/services/browser-file-transfer.service.ts"],"names":["valid","compare","list","gte","coerce","constants","satisfies","require_valid","require_semver","CliForegroundColor","CliBackgroundColor","CliIcon","CliLogLevel","scheme","visibleLength"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,iFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAIA,IAAA,IAAM,mBAAA,GAAsB,OAAA;AAE5B,IAAA,IAAM,UAAA,GAAa,GAAA;AACnB,IAAA,IAAM,mBAAmB,MAAA,CAAO,gBAAA;AAAA,IACL,gBAAA;AAG3B,IAAA,IAAM,yBAAA,GAA4B,EAAA;AAIlC,IAAA,IAAM,wBAAwB,UAAA,GAAa,CAAA;AAE3C,IAAA,IAAM,aAAA,GAAgB;AAAA,MACpB,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU;AAAA,MACf,UAAA;AAAA,MACA,yBAAA;AAAA,MACA,qBAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA,mBAAA;AAAA,MACA,uBAAA,EAAyB,CAAA;AAAA,MACzB,UAAA,EAAY;AAAA,KACd;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpCA,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GACJ,OAAO,OAAA,KAAY,QAAA,IACnB,QAAQ,GAAA,IACR,OAAA,CAAQ,GAAA,CAAI,UAAA,IACZ,aAAA,CAAc,IAAA,CAAK,QAAQ,GAAA,CAAI,UAAU,CAAA,GACvC,CAAA,GAAI,IAAA,KAAS,OAAA,CAAQ,MAAM,QAAA,EAAU,GAAG,IAAI,CAAA,GAC5C,MAAM;AAAA,IAAC,CAAA;AAEX,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACVjB,IAAA,UAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM;AAAA,MACJ,yBAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACF,GAAI,iBAAA,EAAA;AACJ,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,OAAA,GAAU,MAAA,CAAO,UAAU,EAAC;AAG5B,IAAA,IAAM,EAAA,GAAK,OAAA,CAAQ,EAAA,GAAK,EAAC;AACzB,IAAA,IAAM,MAAA,GAAS,OAAA,CAAQ,MAAA,GAAS,EAAC;AACjC,IAAA,IAAM,GAAA,GAAM,OAAA,CAAQ,GAAA,GAAM,EAAC;AAC3B,IAAA,IAAM,OAAA,GAAU,OAAA,CAAQ,OAAA,GAAU,EAAC;AACnC,IAAA,IAAM,CAAA,GAAI,OAAA,CAAQ,CAAA,GAAI,EAAC;AACvB,IAAA,IAAI,CAAA,GAAI,CAAA;AAER,IAAA,IAAM,gBAAA,GAAmB,cAAA;AAQzB,IAAA,IAAM,qBAAA,GAAwB;AAAA,MAC5B,CAAC,OAAO,CAAC,CAAA;AAAA,MACT,CAAC,OAAO,UAAU,CAAA;AAAA,MAClB,CAAC,kBAAkB,qBAAqB;AAAA,KAC1C;AAEA,IAAA,IAAM,aAAA,GAAgB,CAAC,KAAA,KAAU;AAC/B,MAAA,KAAA,MAAW,CAAC,KAAA,EAAO,GAAG,CAAA,IAAK,qBAAA,EAAuB;AAChD,QAAA,KAAA,GAAQ,KAAA,CACL,MAAM,CAAA,EAAG,KAAK,GAAG,CAAA,CAAE,IAAA,CAAK,CAAA,EAAG,KAAK,CAAA,GAAA,EAAM,GAAG,GAAG,CAAA,CAC5C,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,CAAA,CAAG,CAAA,CAAE,KAAK,CAAA,EAAG,KAAK,CAAA,GAAA,EAAM,GAAG,CAAA,CAAA,CAAG,CAAA;AAAA,MACjD;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,WAAA,GAAc,CAAC,IAAA,EAAM,KAAA,EAAO,QAAA,KAAa;AAC7C,MAAA,MAAM,IAAA,GAAO,cAAc,KAAK,CAAA;AAChC,MAAA,MAAM,KAAA,GAAQ,CAAA,EAAA;AACd,MAAA,KAAA,CAAM,IAAA,EAAM,OAAO,KAAK,CAAA;AACxB,MAAA,CAAA,CAAE,IAAI,CAAA,GAAI,KAAA;AACV,MAAA,GAAA,CAAI,KAAK,CAAA,GAAI,KAAA;AACb,MAAA,OAAA,CAAQ,KAAK,CAAA,GAAI,IAAA;AACjB,MAAA,EAAA,CAAG,KAAK,CAAA,GAAI,IAAI,OAAO,KAAA,EAAO,QAAA,GAAW,MAAM,MAAS,CAAA;AACxD,MAAA,MAAA,CAAO,KAAK,CAAA,GAAI,IAAI,OAAO,IAAA,EAAM,QAAA,GAAW,MAAM,MAAS,CAAA;AAAA,IAC7D,CAAA;AAQA,IAAA,WAAA,CAAY,qBAAqB,aAAa,CAAA;AAC9C,IAAA,WAAA,CAAY,0BAA0B,MAAM,CAAA;AAM5C,IAAA,WAAA,CAAY,sBAAA,EAAwB,CAAA,aAAA,EAAgB,gBAAgB,CAAA,CAAA,CAAG,CAAA;AAKvE,IAAA,WAAA,CAAY,eAAe,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,iBAAiB,CAAC,CAAA,KAAA,EAChC,GAAA,CAAI,CAAA,CAAE,iBAAiB,CAAC,CAAA,KAAA,EACxB,GAAA,CAAI,CAAA,CAAE,iBAAiB,CAAC,CAAA,CAAA,CAAG,CAAA;AAElD,IAAA,WAAA,CAAY,oBAAoB,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,sBAAsB,CAAC,CAAA,KAAA,EACrC,GAAA,CAAI,CAAA,CAAE,sBAAsB,CAAC,CAAA,KAAA,EAC7B,GAAA,CAAI,CAAA,CAAE,sBAAsB,CAAC,CAAA,CAAA,CAAG,CAAA;AAO5D,IAAA,WAAA,CAAY,sBAAA,EAAwB,CAAA,GAAA,EAAM,GAAA,CAAI,CAAA,CAAE,oBAAoB,CACpE,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,iBAAiB,CAAC,CAAA,CAAA,CAAG,CAAA;AAE/B,IAAA,WAAA,CAAY,2BAAA,EAA6B,CAAA,GAAA,EAAM,GAAA,CAAI,CAAA,CAAE,oBAAoB,CACzE,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,sBAAsB,CAAC,CAAA,CAAA,CAAG,CAAA;AAMpC,IAAA,WAAA,CAAY,YAAA,EAAc,CAAA,KAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,oBAAoB,CAC5D,CAAA,MAAA,EAAS,GAAA,CAAI,CAAA,CAAE,oBAAoB,CAAC,CAAA,IAAA,CAAM,CAAA;AAE1C,IAAA,WAAA,CAAY,iBAAA,EAAmB,CAAA,MAAA,EAAS,GAAA,CAAI,CAAA,CAAE,yBAAyB,CACvE,CAAA,MAAA,EAAS,GAAA,CAAI,CAAA,CAAE,yBAAyB,CAAC,CAAA,IAAA,CAAM,CAAA;AAK/C,IAAA,WAAA,CAAY,iBAAA,EAAmB,CAAA,EAAG,gBAAgB,CAAA,CAAA,CAAG,CAAA;AAMrD,IAAA,WAAA,CAAY,OAAA,EAAS,CAAA,OAAA,EAAU,GAAA,CAAI,CAAA,CAAE,eAAe,CACpD,CAAA,MAAA,EAAS,GAAA,CAAI,CAAA,CAAE,eAAe,CAAC,CAAA,IAAA,CAAM,CAAA;AAWrC,IAAA,WAAA,CAAY,aAAa,CAAA,EAAA,EAAK,GAAA,CAAI,CAAA,CAAE,WAAW,CAC/C,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC,CAAA,CAAA,EAClB,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC,CAAA,CAAA,CAAG,CAAA;AAEjB,IAAA,WAAA,CAAY,QAAQ,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,SAAS,CAAC,CAAA,CAAA,CAAG,CAAA;AAK3C,IAAA,WAAA,CAAY,cAAc,CAAA,QAAA,EAAW,GAAA,CAAI,CAAA,CAAE,gBAAgB,CAC3D,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,eAAe,CAAC,CAAA,CAAA,EACvB,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC,CAAA,CAAA,CAAG,CAAA;AAEjB,IAAA,WAAA,CAAY,SAAS,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC,CAAA,CAAA,CAAG,CAAA;AAE7C,IAAA,WAAA,CAAY,QAAQ,cAAc,CAAA;AAKlC,IAAA,WAAA,CAAY,yBAAyB,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,sBAAsB,CAAC,CAAA,QAAA,CAAU,CAAA;AAC/E,IAAA,WAAA,CAAY,oBAAoB,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,iBAAiB,CAAC,CAAA,QAAA,CAAU,CAAA;AAErE,IAAA,WAAA,CAAY,aAAA,EAAe,CAAA,SAAA,EAAY,GAAA,CAAI,CAAA,CAAE,gBAAgB,CAAC,CAAA,QAAA,EACjC,GAAA,CAAI,CAAA,CAAE,gBAAgB,CAAC,CAAA,QAAA,EACvB,GAAA,CAAI,EAAE,gBAAgB,CAAC,CAAA,IAAA,EAC3B,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC,CAAA,EAAA,EACrB,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC,CAAA,KAAA,CACR,CAAA;AAEzB,IAAA,WAAA,CAAY,kBAAA,EAAoB,CAAA,SAAA,EAAY,GAAA,CAAI,CAAA,CAAE,qBAAqB,CAAC,CAAA,QAAA,EACtC,GAAA,CAAI,CAAA,CAAE,qBAAqB,CAAC,CAAA,QAAA,EAC5B,GAAA,CAAI,EAAE,qBAAqB,CAAC,CAAA,IAAA,EAChC,GAAA,CAAI,CAAA,CAAE,eAAe,CAAC,CAAA,EAAA,EAC1B,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC,CAAA,KAAA,CACR,CAAA;AAE9B,IAAA,WAAA,CAAY,QAAA,EAAU,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA,IAAA,EAAO,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAA,CAAA,CAAG,CAAA;AACjE,IAAA,WAAA,CAAY,aAAA,EAAe,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA,IAAA,EAAO,GAAA,CAAI,CAAA,CAAE,gBAAgB,CAAC,CAAA,CAAA,CAAG,CAAA;AAI3E,IAAA,WAAA,CAAY,aAAA,EAAe,GAAG,mBACP,CAAA,EAAG,yBAAyB,CAAA,eAAA,EACrB,yBAAyB,CAAA,iBAAA,EACzB,yBAAyB,CAAA,IAAA,CAAM,CAAA;AAC7D,IAAA,WAAA,CAAY,UAAU,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAA,YAAA,CAAc,CAAA;AACzD,IAAA,WAAA,CAAY,YAAA,EAAc,GAAA,CAAI,CAAA,CAAE,WAAW,IAC7B,CAAA,GAAA,EAAM,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC,CAAA,KAAA,EACjB,GAAA,CAAI,CAAA,CAAE,KAAK,CAAC,CAAA,cAAA,CACJ,CAAA;AAC5B,IAAA,WAAA,CAAY,WAAA,EAAa,GAAA,CAAI,CAAA,CAAE,MAAM,GAAG,IAAI,CAAA;AAC5C,IAAA,WAAA,CAAY,eAAA,EAAiB,GAAA,CAAI,CAAA,CAAE,UAAU,GAAG,IAAI,CAAA;AAIpD,IAAA,WAAA,CAAY,aAAa,SAAS,CAAA;AAElC,IAAA,WAAA,CAAY,aAAa,CAAA,MAAA,EAAS,GAAA,CAAI,EAAE,SAAS,CAAC,QAAQ,IAAI,CAAA;AAC9D,IAAA,OAAA,CAAQ,gBAAA,GAAmB,KAAA;AAE3B,IAAA,WAAA,CAAY,OAAA,EAAS,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,SAAS,CAAC,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAA,CAAA,CAAG,CAAA;AACjE,IAAA,WAAA,CAAY,YAAA,EAAc,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,SAAS,CAAC,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,gBAAgB,CAAC,CAAA,CAAA,CAAG,CAAA;AAI3E,IAAA,WAAA,CAAY,aAAa,SAAS,CAAA;AAElC,IAAA,WAAA,CAAY,aAAa,CAAA,MAAA,EAAS,GAAA,CAAI,EAAE,SAAS,CAAC,QAAQ,IAAI,CAAA;AAC9D,IAAA,OAAA,CAAQ,gBAAA,GAAmB,KAAA;AAE3B,IAAA,WAAA,CAAY,OAAA,EAAS,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,SAAS,CAAC,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAA,CAAA,CAAG,CAAA;AACjE,IAAA,WAAA,CAAY,YAAA,EAAc,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,SAAS,CAAC,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,gBAAgB,CAAC,CAAA,CAAA,CAAG,CAAA;AAG3E,IAAA,WAAA,CAAY,iBAAA,EAAmB,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA,KAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC,CAAA,KAAA,CAAO,CAAA;AAC9E,IAAA,WAAA,CAAY,YAAA,EAAc,CAAA,CAAA,EAAI,GAAA,CAAI,CAAA,CAAE,IAAI,CAAC,CAAA,KAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,SAAS,CAAC,CAAA,KAAA,CAAO,CAAA;AAIxE,IAAA,WAAA,CAAY,kBAAkB,CAAA,MAAA,EAAS,GAAA,CAAI,CAAA,CAAE,IAAI,CACjD,CAAA,KAAA,EAAQ,GAAA,CAAI,CAAA,CAAE,UAAU,CAAC,CAAA,CAAA,EAAI,GAAA,CAAI,EAAE,WAAW,CAAC,KAAK,IAAI,CAAA;AACxD,IAAA,OAAA,CAAQ,qBAAA,GAAwB,QAAA;AAMhC,IAAA,WAAA,CAAY,aAAA,EAAe,CAAA,MAAA,EAAS,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAA,WAAA,EAE/B,GAAA,CAAI,CAAA,CAAE,WAAW,CAAC,CAAA,MAAA,CACf,CAAA;AAE1B,IAAA,WAAA,CAAY,kBAAA,EAAoB,CAAA,MAAA,EAAS,GAAA,CAAI,CAAA,CAAE,gBAAgB,CAAC,CAAA,WAAA,EAEpC,GAAA,CAAI,CAAA,CAAE,gBAAgB,CAAC,CAAA,MAAA,CACpB,CAAA;AAG/B,IAAA,WAAA,CAAY,QAAQ,iBAAiB,CAAA;AAErC,IAAA,WAAA,CAAY,QAAQ,2BAA2B,CAAA;AAC/C,IAAA,WAAA,CAAY,WAAW,6BAA6B,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC9NpD,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,qFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAGA,IAAA,IAAM,cAAc,MAAA,CAAO,MAAA,CAAO,EAAE,KAAA,EAAO,MAAM,CAAA;AACjD,IAAA,IAAM,SAAA,GAAY,MAAA,CAAO,MAAA,CAAO,EAAG,CAAA;AACnC,IAAA,IAAM,eAAe,CAAA,OAAA,KAAW;AAC9B,MAAA,IAAI,CAAC,OAAA,EAAS;AACZ,QAAA,OAAO,SAAA;AAAA,MACT;AAEA,MAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,QAAA,OAAO,WAAA;AAAA,MACT;AAEA,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChBjB,IAAA,mBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,mFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,OAAA,GAAU,UAAA;AAChB,IAAA,IAAM,kBAAA,GAAqB,CAAC,CAAA,EAAG,CAAA,KAAM;AACnC,MAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,OAAO,MAAM,QAAA,EAAU;AAClD,QAAA,OAAO,CAAA,KAAM,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,IAAI,EAAA,GAAK,CAAA;AAAA,MACpC;AAEA,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AAC3B,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AAE3B,MAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,QAAA,CAAA,GAAI,CAAC,CAAA;AACL,QAAA,CAAA,GAAI,CAAC,CAAA;AAAA,MACP;AAEA,MAAA,OAAO,CAAA,KAAM,CAAA,GAAI,CAAA,GACZ,IAAA,IAAQ,CAAC,IAAA,GAAQ,EAAA,GACjB,IAAA,IAAQ,CAAC,IAAA,GAAQ,CAAA,GAClB,CAAA,GAAI,IAAI,EAAA,GACR,CAAA;AAAA,IACN,CAAA;AAEA,IAAA,IAAM,sBAAsB,CAAC,CAAA,EAAG,CAAA,KAAM,kBAAA,CAAmB,GAAG,CAAC,CAAA;AAE7D,IAAA,MAAA,CAAO,OAAA,GAAU;AAAA,MACf,kBAAA;AAAA,MACA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC5BA,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,EAAE,UAAA,EAAY,gBAAA,EAAiB,GAAI,iBAAA,EAAA;AACzC,IAAA,IAAM,EAAE,MAAA,EAAQ,EAAA,EAAI,CAAA,EAAE,GAAI,UAAA,EAAA;AAE1B,IAAA,IAAM,YAAA,GAAe,qBAAA,EAAA;AACrB,IAAA,IAAM,EAAE,oBAAmB,GAAI,mBAAA,EAAA;AAE/B,IAAA,IAAM,sBAAA,GAAyB,CAAC,UAAA,EAAY,UAAA,KAAe;AACzD,MAAA,MAAM,WAAA,GAAc,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA;AACxC,MAAA,IAAI,WAAA,CAAY,MAAA,GAAS,UAAA,CAAW,MAAA,EAAQ;AAC1C,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,CAAY,QAAQ,CAAA,EAAA,EAAK;AAC3C,QAAA,IAAI,kBAAA,CAAmB,WAAW,CAAC,CAAA,EAAG,YAAY,CAAC,CAAC,MAAM,CAAA,EAAG;AAC3D,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,MAAA,GAAN,MAAM,OAAA,CAAO;AAAA,MACX,WAAA,CAAa,SAAS,OAAA,EAAS;AAC7B,QAAA,OAAA,GAAU,aAAa,OAAO,CAAA;AAE9B,QAAA,IAAI,mBAAmB,OAAA,EAAQ;AAC7B,UAAA,IAAI,OAAA,CAAQ,KAAA,KAAU,CAAC,CAAC,OAAA,CAAQ,KAAA,IAC9B,OAAA,CAAQ,iBAAA,KAAsB,CAAC,CAAC,OAAA,CAAQ,iBAAA,EAAmB;AAC3D,YAAA,OAAO,OAAA;AAAA,UACT,CAAA,MAAO;AACL,YAAA,OAAA,GAAU,OAAA,CAAQ,OAAA;AAAA,UACpB;AAAA,QACF,CAAA,MAAA,IAAW,OAAO,OAAA,KAAY,QAAA,EAAU;AACtC,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,6CAAA,EAAgD,OAAO,OAAO,CAAA,EAAA,CAAI,CAAA;AAAA,QACxF;AAEA,QAAA,IAAI,OAAA,CAAQ,SAAS,UAAA,EAAY;AAC/B,UAAA,MAAM,IAAI,SAAA;AAAA,YACR,0BAA0B,UAAU,CAAA,WAAA;AAAA,WACtC;AAAA,QACF;AAEA,QAAA,KAAA,CAAM,QAAA,EAAU,SAAS,OAAO,CAAA;AAChC,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAC,OAAA,CAAQ,KAAA;AAGvB,QAAA,IAAA,CAAK,iBAAA,GAAoB,CAAC,CAAC,OAAA,CAAQ,iBAAA;AAEnC,QAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,IAAA,EAAK,CAAE,MAAM,OAAA,CAAQ,KAAA,GAAQ,EAAA,CAAG,CAAA,CAAE,KAAK,CAAA,GAAI,EAAA,CAAG,CAAA,CAAE,IAAI,CAAC,CAAA;AAEvE,QAAA,IAAI,CAAC,CAAA,EAAG;AACN,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,iBAAA,EAAoB,OAAO,CAAA,CAAE,CAAA;AAAA,QACnD;AAEA,QAAA,IAAA,CAAK,GAAA,GAAM,OAAA;AAGX,QAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAA,CAAE,CAAC,CAAA;AACjB,QAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAA,CAAE,CAAC,CAAA;AACjB,QAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAA,CAAE,CAAC,CAAA;AAEjB,QAAA,IAAI,IAAA,CAAK,KAAA,GAAQ,gBAAA,IAAoB,IAAA,CAAK,QAAQ,CAAA,EAAG;AACnD,UAAA,MAAM,IAAI,UAAU,uBAAuB,CAAA;AAAA,QAC7C;AAEA,QAAA,IAAI,IAAA,CAAK,KAAA,GAAQ,gBAAA,IAAoB,IAAA,CAAK,QAAQ,CAAA,EAAG;AACnD,UAAA,MAAM,IAAI,UAAU,uBAAuB,CAAA;AAAA,QAC7C;AAEA,QAAA,IAAI,IAAA,CAAK,KAAA,GAAQ,gBAAA,IAAoB,IAAA,CAAK,QAAQ,CAAA,EAAG;AACnD,UAAA,MAAM,IAAI,UAAU,uBAAuB,CAAA;AAAA,QAC7C;AAGA,QAAA,IAAI,CAAC,CAAA,CAAE,CAAC,CAAA,EAAG;AACT,UAAA,IAAA,CAAK,aAAa,EAAC;AAAA,QACrB,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,UAAA,GAAa,EAAE,CAAC,CAAA,CAAE,MAAM,GAAG,CAAA,CAAE,GAAA,CAAI,CAAC,EAAA,KAAO;AAC5C,YAAA,IAAI,UAAA,CAAW,IAAA,CAAK,EAAE,CAAA,EAAG;AACvB,cAAA,MAAM,MAAM,CAAC,EAAA;AACb,cAAA,IAAI,GAAA,IAAO,CAAA,IAAK,GAAA,GAAM,gBAAA,EAAkB;AACtC,gBAAA,OAAO,GAAA;AAAA,cACT;AAAA,YACF;AACA,YAAA,OAAO,EAAA;AAAA,UACT,CAAC,CAAA;AAAA,QACH;AAEA,QAAA,IAAA,CAAK,KAAA,GAAQ,CAAA,CAAE,CAAC,CAAA,GAAI,CAAA,CAAE,CAAC,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,GAAI,EAAC;AACvC,QAAA,IAAA,CAAK,MAAA,EAAO;AAAA,MACd;AAAA,MAEA,MAAA,GAAU;AACR,QAAA,IAAA,CAAK,OAAA,GAAU,GAAG,IAAA,CAAK,KAAK,IAAI,IAAA,CAAK,KAAK,CAAA,CAAA,EAAI,IAAA,CAAK,KAAK,CAAA,CAAA;AACxD,QAAA,IAAI,IAAA,CAAK,WAAW,MAAA,EAAQ;AAC1B,UAAA,IAAA,CAAK,WAAW,CAAA,CAAA,EAAI,IAAA,CAAK,UAAA,CAAW,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,QAC/C;AACA,QAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACd;AAAA,MAEA,QAAA,GAAY;AACV,QAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACd;AAAA,MAEA,QAAS,KAAA,EAAO;AACd,QAAA,KAAA,CAAM,gBAAA,EAAkB,IAAA,CAAK,OAAA,EAAS,IAAA,CAAK,SAAS,KAAK,CAAA;AACzD,QAAA,IAAI,EAAE,iBAAiB,OAAA,CAAA,EAAS;AAC9B,UAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,KAAK,OAAA,EAAS;AACvD,YAAA,OAAO,CAAA;AAAA,UACT;AACA,UAAA,KAAA,GAAQ,IAAI,OAAA,CAAO,KAAA,EAAO,IAAA,CAAK,OAAO,CAAA;AAAA,QACxC;AAEA,QAAA,IAAI,KAAA,CAAM,OAAA,KAAY,IAAA,CAAK,OAAA,EAAS;AAClC,UAAA,OAAO,CAAA;AAAA,QACT;AAEA,QAAA,OAAO,KAAK,WAAA,CAAY,KAAK,CAAA,IAAK,IAAA,CAAK,WAAW,KAAK,CAAA;AAAA,MACzD;AAAA,MAEA,YAAa,KAAA,EAAO;AAClB,QAAA,IAAI,EAAE,iBAAiB,OAAA,CAAA,EAAS;AAC9B,UAAA,KAAA,GAAQ,IAAI,OAAA,CAAO,KAAA,EAAO,IAAA,CAAK,OAAO,CAAA;AAAA,QACxC;AAEA,QAAA,IAAI,IAAA,CAAK,KAAA,GAAQ,KAAA,CAAM,KAAA,EAAO;AAC5B,UAAA,OAAO,EAAA;AAAA,QACT;AACA,QAAA,IAAI,IAAA,CAAK,KAAA,GAAQ,KAAA,CAAM,KAAA,EAAO;AAC5B,UAAA,OAAO,CAAA;AAAA,QACT;AACA,QAAA,IAAI,IAAA,CAAK,KAAA,GAAQ,KAAA,CAAM,KAAA,EAAO;AAC5B,UAAA,OAAO,EAAA;AAAA,QACT;AACA,QAAA,IAAI,IAAA,CAAK,KAAA,GAAQ,KAAA,CAAM,KAAA,EAAO;AAC5B,UAAA,OAAO,CAAA;AAAA,QACT;AACA,QAAA,IAAI,IAAA,CAAK,KAAA,GAAQ,KAAA,CAAM,KAAA,EAAO;AAC5B,UAAA,OAAO,EAAA;AAAA,QACT;AACA,QAAA,IAAI,IAAA,CAAK,KAAA,GAAQ,KAAA,CAAM,KAAA,EAAO;AAC5B,UAAA,OAAO,CAAA;AAAA,QACT;AACA,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,MAEA,WAAY,KAAA,EAAO;AACjB,QAAA,IAAI,EAAE,iBAAiB,OAAA,CAAA,EAAS;AAC9B,UAAA,KAAA,GAAQ,IAAI,OAAA,CAAO,KAAA,EAAO,IAAA,CAAK,OAAO,CAAA;AAAA,QACxC;AAGA,QAAA,IAAI,KAAK,UAAA,CAAW,MAAA,IAAU,CAAC,KAAA,CAAM,WAAW,MAAA,EAAQ;AACtD,UAAA,OAAO,EAAA;AAAA,QACT,WAAW,CAAC,IAAA,CAAK,WAAW,MAAA,IAAU,KAAA,CAAM,WAAW,MAAA,EAAQ;AAC7D,UAAA,OAAO,CAAA;AAAA,QACT,CAAA,MAAA,IAAW,CAAC,IAAA,CAAK,UAAA,CAAW,UAAU,CAAC,KAAA,CAAM,WAAW,MAAA,EAAQ;AAC9D,UAAA,OAAO,CAAA;AAAA,QACT;AAEA,QAAA,IAAI,CAAA,GAAI,CAAA;AACR,QAAA,GAAG;AACD,UAAA,MAAM,CAAA,GAAI,IAAA,CAAK,UAAA,CAAW,CAAC,CAAA;AAC3B,UAAA,MAAM,CAAA,GAAI,KAAA,CAAM,UAAA,CAAW,CAAC,CAAA;AAC5B,UAAA,KAAA,CAAM,oBAAA,EAAsB,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACnC,UAAA,IAAI,CAAA,KAAM,MAAA,IAAa,CAAA,KAAM,MAAA,EAAW;AACtC,YAAA,OAAO,CAAA;AAAA,UACT,CAAA,MAAA,IAAW,MAAM,MAAA,EAAW;AAC1B,YAAA,OAAO,CAAA;AAAA,UACT,CAAA,MAAA,IAAW,MAAM,MAAA,EAAW;AAC1B,YAAA,OAAO,EAAA;AAAA,UACT,CAAA,MAAA,IAAW,MAAM,CAAA,EAAG;AAClB,YAAA;AAAA,UACF,CAAA,MAAO;AACL,YAAA,OAAO,kBAAA,CAAmB,GAAG,CAAC,CAAA;AAAA,UAChC;AAAA,QACF,SAAS,EAAE,CAAA;AAAA,MACb;AAAA,MAEA,aAAc,KAAA,EAAO;AACnB,QAAA,IAAI,EAAE,iBAAiB,OAAA,CAAA,EAAS;AAC9B,UAAA,KAAA,GAAQ,IAAI,OAAA,CAAO,KAAA,EAAO,IAAA,CAAK,OAAO,CAAA;AAAA,QACxC;AAEA,QAAA,IAAI,CAAA,GAAI,CAAA;AACR,QAAA,GAAG;AACD,UAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA;AACtB,UAAA,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA;AACvB,UAAA,KAAA,CAAM,eAAA,EAAiB,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAC9B,UAAA,IAAI,CAAA,KAAM,MAAA,IAAa,CAAA,KAAM,MAAA,EAAW;AACtC,YAAA,OAAO,CAAA;AAAA,UACT,CAAA,MAAA,IAAW,MAAM,MAAA,EAAW;AAC1B,YAAA,OAAO,CAAA;AAAA,UACT,CAAA,MAAA,IAAW,MAAM,MAAA,EAAW;AAC1B,YAAA,OAAO,EAAA;AAAA,UACT,CAAA,MAAA,IAAW,MAAM,CAAA,EAAG;AAClB,YAAA;AAAA,UACF,CAAA,MAAO;AACL,YAAA,OAAO,kBAAA,CAAmB,GAAG,CAAC,CAAA;AAAA,UAChC;AAAA,QACF,SAAS,EAAE,CAAA;AAAA,MACb;AAAA;AAAA;AAAA,MAIA,GAAA,CAAK,OAAA,EAAS,UAAA,EAAY,cAAA,EAAgB;AACxC,QAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,EAAG;AAC7B,UAAA,IAAI,CAAC,UAAA,IAAc,cAAA,KAAmB,KAAA,EAAO;AAC3C,YAAA,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAAA,UACnE;AAEA,UAAA,IAAI,UAAA,EAAY;AACd,YAAA,MAAM,KAAA,GAAQ,CAAA,CAAA,EAAI,UAAU,CAAA,CAAA,CAAG,MAAM,IAAA,CAAK,OAAA,CAAQ,KAAA,GAAQ,EAAA,CAAG,EAAE,eAAe,CAAA,GAAI,EAAA,CAAG,CAAA,CAAE,UAAU,CAAC,CAAA;AAClG,YAAA,IAAI,CAAC,KAAA,IAAS,KAAA,CAAM,CAAC,MAAM,UAAA,EAAY;AACrC,cAAA,MAAM,IAAI,KAAA,CAAM,CAAA,oBAAA,EAAuB,UAAU,CAAA,CAAE,CAAA;AAAA,YACrD;AAAA,UACF;AAAA,QACF;AAEA,QAAA,QAAQ,OAAA;AAAS,UACf,KAAK,UAAA;AACH,YAAA,IAAA,CAAK,WAAW,MAAA,GAAS,CAAA;AACzB,YAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AACb,YAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AACb,YAAA,IAAA,CAAK,KAAA,EAAA;AACL,YAAA,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,UAAA,EAAY,cAAc,CAAA;AAC1C,YAAA;AAAA,UACF,KAAK,UAAA;AACH,YAAA,IAAA,CAAK,WAAW,MAAA,GAAS,CAAA;AACzB,YAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AACb,YAAA,IAAA,CAAK,KAAA,EAAA;AACL,YAAA,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,UAAA,EAAY,cAAc,CAAA;AAC1C,YAAA;AAAA,UACF,KAAK,UAAA;AAIH,YAAA,IAAA,CAAK,WAAW,MAAA,GAAS,CAAA;AACzB,YAAA,IAAA,CAAK,GAAA,CAAI,OAAA,EAAS,UAAA,EAAY,cAAc,CAAA;AAC5C,YAAA,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,UAAA,EAAY,cAAc,CAAA;AAC1C,YAAA;AAAA;AAAA;AAAA,UAGF,KAAK,YAAA;AACH,YAAA,IAAI,IAAA,CAAK,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAChC,cAAA,IAAA,CAAK,GAAA,CAAI,OAAA,EAAS,UAAA,EAAY,cAAc,CAAA;AAAA,YAC9C;AACA,YAAA,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,UAAA,EAAY,cAAc,CAAA;AAC1C,YAAA;AAAA,UACF,KAAK,SAAA;AACH,YAAA,IAAI,IAAA,CAAK,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAChC,cAAA,MAAM,IAAI,KAAA,CAAM,CAAA,QAAA,EAAW,IAAA,CAAK,GAAG,CAAA,oBAAA,CAAsB,CAAA;AAAA,YAC3D;AACA,YAAA,IAAA,CAAK,WAAW,MAAA,GAAS,CAAA;AACzB,YAAA;AAAA,UAEF,KAAK,OAAA;AAKH,YAAA,IACE,IAAA,CAAK,UAAU,CAAA,IACf,IAAA,CAAK,UAAU,CAAA,IACf,IAAA,CAAK,UAAA,CAAW,MAAA,KAAW,CAAA,EAC3B;AACA,cAAA,IAAA,CAAK,KAAA,EAAA;AAAA,YACP;AACA,YAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AACb,YAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AACb,YAAA,IAAA,CAAK,aAAa,EAAC;AACnB,YAAA;AAAA,UACF,KAAK,OAAA;AAKH,YAAA,IAAI,KAAK,KAAA,KAAU,CAAA,IAAK,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA,EAAG;AACpD,cAAA,IAAA,CAAK,KAAA,EAAA;AAAA,YACP;AACA,YAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AACb,YAAA,IAAA,CAAK,aAAa,EAAC;AACnB,YAAA;AAAA,UACF,KAAK,OAAA;AAKH,YAAA,IAAI,IAAA,CAAK,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAChC,cAAA,IAAA,CAAK,KAAA,EAAA;AAAA,YACP;AACA,YAAA,IAAA,CAAK,aAAa,EAAC;AACnB,YAAA;AAAA;AAAA;AAAA,UAGF,KAAK,KAAA,EAAO;AACV,YAAA,MAAM,IAAA,GAAO,MAAA,CAAO,cAAc,CAAA,GAAI,CAAA,GAAI,CAAA;AAE1C,YAAA,IAAI,IAAA,CAAK,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AAChC,cAAA,IAAA,CAAK,UAAA,GAAa,CAAC,IAAI,CAAA;AAAA,YACzB,CAAA,MAAO;AACL,cAAA,IAAI,CAAA,GAAI,KAAK,UAAA,CAAW,MAAA;AACxB,cAAA,OAAO,EAAE,KAAK,CAAA,EAAG;AACf,gBAAA,IAAI,OAAO,IAAA,CAAK,UAAA,CAAW,CAAC,MAAM,QAAA,EAAU;AAC1C,kBAAA,IAAA,CAAK,WAAW,CAAC,CAAA,EAAA;AACjB,kBAAA,CAAA,GAAI,EAAA;AAAA,gBACN;AAAA,cACF;AACA,cAAA,IAAI,MAAM,EAAA,EAAI;AAEZ,gBAAA,IAAI,eAAe,IAAA,CAAK,UAAA,CAAW,KAAK,GAAG,CAAA,IAAK,mBAAmB,KAAA,EAAO;AACxE,kBAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;AAAA,gBACzE;AACA,gBAAA,IAAA,CAAK,UAAA,CAAW,KAAK,IAAI,CAAA;AAAA,cAC3B;AAAA,YACF;AACA,YAAA,IAAI,UAAA,EAAY;AAGd,cAAA,IAAI,UAAA,GAAa,CAAC,UAAA,EAAY,IAAI,CAAA;AAClC,cAAA,IAAI,mBAAmB,KAAA,EAAO;AAC5B,gBAAA,UAAA,GAAa,CAAC,UAAU,CAAA;AAAA,cAC1B;AACA,cAAA,IAAI,sBAAA,CAAuB,IAAA,CAAK,UAAA,EAAY,UAAU,CAAA,EAAG;AACvD,gBAAA,MAAM,iBAAiB,IAAA,CAAK,UAAA,CAAW,WAAW,KAAA,CAAM,GAAG,EAAE,MAAM,CAAA;AACnE,gBAAA,IAAI,KAAA,CAAM,cAAc,CAAA,EAAG;AACzB,kBAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAAA,gBACpB;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAAA,cACpB;AAAA,YACF;AACA,YAAA;AAAA,UACF;AAAA,UACA;AACE,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,4BAAA,EAA+B,OAAO,CAAA,CAAE,CAAA;AAAA;AAE5D,QAAA,IAAA,CAAK,GAAA,GAAM,KAAK,MAAA,EAAO;AACvB,QAAA,IAAI,IAAA,CAAK,MAAM,MAAA,EAAQ;AACrB,UAAA,IAAA,CAAK,OAAO,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,QACtC;AACA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC7VjB,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,KAAA,GAAQ,CAAC,OAAA,EAAS,OAAA,EAAS,cAAc,KAAA,KAAU;AACvD,MAAA,IAAI,mBAAmB,MAAA,EAAQ;AAC7B,QAAA,OAAO,OAAA;AAAA,MACT;AACA,MAAA,IAAI;AACF,QAAA,OAAO,IAAI,MAAA,CAAO,OAAA,EAAS,OAAO,CAAA;AAAA,MACpC,SAAS,EAAA,EAAI;AACX,QAAA,IAAI,CAAC,WAAA,EAAa;AAChB,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,MAAM,EAAA;AAAA,MACR;AAAA,IACF,CAAA;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjBjB,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAMA,MAAAA,GAAQ,CAAC,OAAA,EAAS,OAAA,KAAY;AAClC,MAAA,MAAM,CAAA,GAAI,KAAA,CAAM,OAAA,EAAS,OAAO,CAAA;AAChC,MAAA,OAAO,CAAA,GAAI,EAAE,OAAA,GAAU,IAAA;AAAA,IACzB,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAUA,MAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACPjB,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,KAAA,GAAQ,CAAC,OAAA,EAAS,OAAA,KAAY;AAClC,MAAA,MAAM,CAAA,GAAI,MAAM,OAAA,CAAQ,IAAA,GAAO,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA,EAAG,OAAO,CAAA;AAC7D,MAAA,OAAO,CAAA,GAAI,EAAE,OAAA,GAAU,IAAA;AAAA,IACzB,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACPjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AAEf,IAAA,IAAM,MAAM,CAAC,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,YAAY,cAAA,KAAmB;AACrE,MAAA,IAAI,OAAQ,YAAa,QAAA,EAAU;AACjC,QAAA,cAAA,GAAiB,UAAA;AACjB,QAAA,UAAA,GAAa,OAAA;AACb,QAAA,OAAA,GAAU,MAAA;AAAA,MACZ;AAEA,MAAA,IAAI;AACF,QAAA,OAAO,IAAI,MAAA;AAAA,UACT,OAAA,YAAmB,MAAA,GAAS,OAAA,CAAQ,OAAA,GAAU,OAAA;AAAA,UAC9C;AAAA,SACF,CAAE,GAAA,CAAI,OAAA,EAAS,UAAA,EAAY,cAAc,CAAA,CAAE,OAAA;AAAA,MAC7C,SAAS,EAAA,EAAI;AACX,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpBjB,IAAA,YAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AAEd,IAAA,IAAM,IAAA,GAAO,CAAC,QAAA,EAAU,QAAA,KAAa;AACnC,MAAA,MAAM,EAAA,GAAK,KAAA,CAAM,QAAA,EAAU,IAAA,EAAM,IAAI,CAAA;AACrC,MAAA,MAAM,EAAA,GAAK,KAAA,CAAM,QAAA,EAAU,IAAA,EAAM,IAAI,CAAA;AACrC,MAAA,MAAM,UAAA,GAAa,EAAA,CAAG,OAAA,CAAQ,EAAE,CAAA;AAEhC,MAAA,IAAI,eAAe,CAAA,EAAG;AACpB,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,WAAW,UAAA,GAAa,CAAA;AAC9B,MAAA,MAAM,WAAA,GAAc,WAAW,EAAA,GAAK,EAAA;AACpC,MAAA,MAAM,UAAA,GAAa,WAAW,EAAA,GAAK,EAAA;AACnC,MAAA,MAAM,UAAA,GAAa,CAAC,CAAC,WAAA,CAAY,UAAA,CAAW,MAAA;AAC5C,MAAA,MAAM,SAAA,GAAY,CAAC,CAAC,UAAA,CAAW,UAAA,CAAW,MAAA;AAE1C,MAAA,IAAI,SAAA,IAAa,CAAC,UAAA,EAAY;AAQ5B,QAAA,IAAI,CAAC,UAAA,CAAW,KAAA,IAAS,CAAC,WAAW,KAAA,EAAO;AAC1C,UAAA,OAAO,OAAA;AAAA,QACT;AAGA,QAAA,IAAI,UAAA,CAAW,WAAA,CAAY,WAAW,CAAA,KAAM,CAAA,EAAG;AAC7C,UAAA,IAAI,UAAA,CAAW,KAAA,IAAS,CAAC,UAAA,CAAW,KAAA,EAAO;AACzC,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,OAAO,OAAA;AAAA,QACT;AAAA,MACF;AAGA,MAAA,MAAM,MAAA,GAAS,aAAa,KAAA,GAAQ,EAAA;AAEpC,MAAA,IAAI,EAAA,CAAG,KAAA,KAAU,EAAA,CAAG,KAAA,EAAO;AACzB,QAAA,OAAO,MAAA,GAAS,OAAA;AAAA,MAClB;AAEA,MAAA,IAAI,EAAA,CAAG,KAAA,KAAU,EAAA,CAAG,KAAA,EAAO;AACzB,QAAA,OAAO,MAAA,GAAS,OAAA;AAAA,MAClB;AAEA,MAAA,IAAI,EAAA,CAAG,KAAA,KAAU,EAAA,CAAG,KAAA,EAAO;AACzB,QAAA,OAAO,MAAA,GAAS,OAAA;AAAA,MAClB;AAGA,MAAA,OAAO,YAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,IAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3DjB,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,KAAA,GAAQ,CAAC,CAAA,EAAG,KAAA,KAAU,IAAI,MAAA,CAAO,CAAA,EAAG,KAAK,CAAA,CAAE,KAAA;AACjD,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,KAAA,GAAQ,CAAC,CAAA,EAAG,KAAA,KAAU,IAAI,MAAA,CAAO,CAAA,EAAG,KAAK,CAAA,CAAE,KAAA;AACjD,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,KAAA,GAAQ,CAAC,CAAA,EAAG,KAAA,KAAU,IAAI,MAAA,CAAO,CAAA,EAAG,KAAK,CAAA,CAAE,KAAA;AACjD,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,mFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,UAAA,GAAa,CAAC,OAAA,EAAS,OAAA,KAAY;AACvC,MAAA,MAAM,MAAA,GAAS,KAAA,CAAM,OAAA,EAAS,OAAO,CAAA;AACrC,MAAA,OAAQ,MAAA,IAAU,MAAA,CAAO,UAAA,CAAW,MAAA,GAAU,OAAO,UAAA,GAAa,IAAA;AAAA,IACpE,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACPjB,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,gFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAMC,QAAAA,GAAU,CAAC,CAAA,EAAG,CAAA,EAAG,UACrB,IAAI,MAAA,CAAO,CAAA,EAAG,KAAK,EAAE,OAAA,CAAQ,IAAI,MAAA,CAAO,CAAA,EAAG,KAAK,CAAC,CAAA;AAEnD,IAAA,MAAA,CAAO,OAAA,GAAUA,QAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACNjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,iFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAMA,QAAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,QAAA,GAAW,CAAC,CAAA,EAAG,CAAA,EAAG,UAAUA,QAAAA,CAAQ,CAAA,EAAG,GAAG,KAAK,CAAA;AACrD,IAAA,MAAA,CAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,sFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAMA,QAAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,eAAe,CAAC,CAAA,EAAG,MAAMA,QAAAA,CAAQ,CAAA,EAAG,GAAG,IAAI,CAAA;AACjD,IAAA,MAAA,CAAO,OAAA,GAAU,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,sFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,YAAA,GAAe,CAAC,CAAA,EAAG,CAAA,EAAG,KAAA,KAAU;AACpC,MAAA,MAAM,QAAA,GAAW,IAAI,MAAA,CAAO,CAAA,EAAG,KAAK,CAAA;AACpC,MAAA,MAAM,QAAA,GAAW,IAAI,MAAA,CAAO,CAAA,EAAG,KAAK,CAAA;AACpC,MAAA,OAAO,SAAS,OAAA,CAAQ,QAAQ,CAAA,IAAK,QAAA,CAAS,aAAa,QAAQ,CAAA;AAAA,IACrE,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,YAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACRjB,IAAA,YAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,YAAA,GAAe,qBAAA,EAAA;AACrB,IAAA,IAAM,IAAA,GAAO,CAACC,KAAAA,EAAM,KAAA,KAAUA,KAAAA,CAAK,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,YAAA,CAAa,CAAA,EAAG,CAAA,EAAG,KAAK,CAAC,CAAA;AAC3E,IAAA,MAAA,CAAO,OAAA,GAAU,IAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,YAAA,GAAe,qBAAA,EAAA;AACrB,IAAA,IAAM,KAAA,GAAQ,CAACA,KAAAA,EAAM,KAAA,KAAUA,KAAAA,CAAK,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,YAAA,CAAa,CAAA,EAAG,CAAA,EAAG,KAAK,CAAC,CAAA;AAC5E,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,UAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAMD,QAAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,EAAA,GAAK,CAAC,CAAA,EAAG,CAAA,EAAG,UAAUA,QAAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA,GAAI,CAAA;AACnD,IAAA,MAAA,CAAO,OAAA,GAAU,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,UAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAMA,QAAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,EAAA,GAAK,CAAC,CAAA,EAAG,CAAA,EAAG,UAAUA,QAAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA,GAAI,CAAA;AACnD,IAAA,MAAA,CAAO,OAAA,GAAU,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,UAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAMA,QAAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,EAAA,GAAK,CAAC,CAAA,EAAG,CAAA,EAAG,UAAUA,QAAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA,KAAM,CAAA;AACrD,IAAA,MAAA,CAAO,OAAA,GAAU,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAMA,QAAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,GAAA,GAAM,CAAC,CAAA,EAAG,CAAA,EAAG,UAAUA,QAAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA,KAAM,CAAA;AACtD,IAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAMA,QAAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAME,IAAAA,GAAM,CAAC,CAAA,EAAG,CAAA,EAAG,UAAUF,QAAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA,IAAK,CAAA;AACrD,IAAA,MAAA,CAAO,OAAA,GAAUE,IAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAMF,QAAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,GAAA,GAAM,CAAC,CAAA,EAAG,CAAA,EAAG,UAAUA,QAAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA,IAAK,CAAA;AACrD,IAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACJjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,EAAA,GAAK,UAAA,EAAA;AACX,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,EAAA,GAAK,UAAA,EAAA;AACX,IAAA,IAAME,IAAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,EAAA,GAAK,UAAA,EAAA;AACX,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AAEZ,IAAA,IAAM,GAAA,GAAM,CAAC,CAAA,EAAG,EAAA,EAAI,GAAG,KAAA,KAAU;AAC/B,MAAA,QAAQ,EAAA;AAAI,QACV,KAAK,KAAA;AACH,UAAA,IAAI,OAAO,MAAM,QAAA,EAAU;AACzB,YAAA,CAAA,GAAI,CAAA,CAAE,OAAA;AAAA,UACR;AACA,UAAA,IAAI,OAAO,MAAM,QAAA,EAAU;AACzB,YAAA,CAAA,GAAI,CAAA,CAAE,OAAA;AAAA,UACR;AACA,UAAA,OAAO,CAAA,KAAM,CAAA;AAAA,QAEf,KAAK,KAAA;AACH,UAAA,IAAI,OAAO,MAAM,QAAA,EAAU;AACzB,YAAA,CAAA,GAAI,CAAA,CAAE,OAAA;AAAA,UACR;AACA,UAAA,IAAI,OAAO,MAAM,QAAA,EAAU;AACzB,YAAA,CAAA,GAAI,CAAA,CAAE,OAAA;AAAA,UACR;AACA,UAAA,OAAO,CAAA,KAAM,CAAA;AAAA,QAEf,KAAK,EAAA;AAAA,QACL,KAAK,GAAA;AAAA,QACL,KAAK,IAAA;AACH,UAAA,OAAO,EAAA,CAAG,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA;AAAA,QAEvB,KAAK,IAAA;AACH,UAAA,OAAO,GAAA,CAAI,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA;AAAA,QAExB,KAAK,GAAA;AACH,UAAA,OAAO,EAAA,CAAG,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA;AAAA,QAEvB,KAAK,IAAA;AACH,UAAA,OAAOA,IAAAA,CAAI,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA;AAAA,QAExB,KAAK,GAAA;AACH,UAAA,OAAO,EAAA,CAAG,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA;AAAA,QAEvB,KAAK,IAAA;AACH,UAAA,OAAO,GAAA,CAAI,CAAA,EAAG,CAAA,EAAG,KAAK,CAAA;AAAA,QAExB;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,kBAAA,EAAqB,EAAE,CAAA,CAAE,CAAA;AAAA;AACjD,IACF,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACrDjB,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,+EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,EAAE,MAAA,EAAQ,EAAA,EAAI,CAAA,EAAE,GAAI,UAAA,EAAA;AAE1B,IAAA,IAAMC,OAAAA,GAAS,CAAC,OAAA,EAAS,OAAA,KAAY;AACnC,MAAA,IAAI,mBAAmB,MAAA,EAAQ;AAC7B,QAAA,OAAO,OAAA;AAAA,MACT;AAEA,MAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,QAAA,OAAA,GAAU,OAAO,OAAO,CAAA;AAAA,MAC1B;AAEA,MAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,OAAA,GAAU,WAAW,EAAC;AAEtB,MAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,MAAA,IAAI,CAAC,QAAQ,GAAA,EAAK;AAChB,QAAA,KAAA,GAAQ,OAAA,CAAQ,KAAA,CAAM,OAAA,CAAQ,iBAAA,GAAoB,EAAA,CAAG,CAAA,CAAE,UAAU,CAAA,GAAI,EAAA,CAAG,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,MACnF,CAAA,MAAO;AAUL,QAAA,MAAM,cAAA,GAAiB,QAAQ,iBAAA,GAAoB,EAAA,CAAG,EAAE,aAAa,CAAA,GAAI,EAAA,CAAG,CAAA,CAAE,SAAS,CAAA;AACvF,QAAA,IAAI,IAAA;AACJ,QAAA,OAAA,CAAQ,IAAA,GAAO,cAAA,CAAe,IAAA,CAAK,OAAO,OACrC,CAAC,KAAA,IAAS,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,KAAW,QAAQ,MAAA,CAAA,EACvD;AACA,UAAA,IAAI,CAAC,KAAA,IACC,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,CAAC,CAAA,CAAE,MAAA,KAAW,KAAA,CAAM,KAAA,GAAQ,KAAA,CAAM,CAAC,EAAE,MAAA,EAAQ;AACnE,YAAA,KAAA,GAAQ,IAAA;AAAA,UACV;AACA,UAAA,cAAA,CAAe,SAAA,GAAY,KAAK,KAAA,GAAQ,IAAA,CAAK,CAAC,CAAA,CAAE,MAAA,GAAS,IAAA,CAAK,CAAC,CAAA,CAAE,MAAA;AAAA,QACnE;AAEA,QAAA,cAAA,CAAe,SAAA,GAAY,EAAA;AAAA,MAC7B;AAEA,MAAA,IAAI,UAAU,IAAA,EAAM;AAClB,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,KAAA,GAAQ,MAAM,CAAC,CAAA;AACrB,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,CAAC,CAAA,IAAK,GAAA;AAC1B,MAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,CAAC,CAAA,IAAK,GAAA;AAC1B,MAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,iBAAA,IAAqB,KAAA,CAAM,CAAC,IAAI,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,GAAK,EAAA;AAC5E,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,iBAAA,IAAqB,KAAA,CAAM,CAAC,IAAI,CAAA,CAAA,EAAI,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA,GAAK,EAAA;AAEvE,MAAA,OAAO,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,EAAG,UAAU,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,OAAO,CAAA;AAAA,IACzE,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAUA,OAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC7DjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,iFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAMC,UAAAA,GAAY,iBAAA,EAAA;AAClB,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AAEf,IAAA,IAAM,QAAA,GAAW,CAAC,OAAA,EAAS,UAAA,EAAY,OAAA,KAAY;AACjD,MAAA,IAAI,CAACA,UAAAA,CAAU,aAAA,CAAc,QAAA,CAAS,UAAU,CAAA,EAAG;AACjD,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,MAAM,aAAA,GAAgB,iBAAA,CAAkB,OAAA,EAAS,OAAO,CAAA;AACxD,MAAA,OAAO,aAAA,IAAiB,YAAA,CAAa,aAAA,EAAe,UAAU,CAAA;AAAA,IAChE,CAAA;AAEA,IAAA,IAAM,iBAAA,GAAoB,CAAC,OAAA,EAAS,OAAA,KAAY;AAC9C,MAAA,MAAM,oBAAA,GACJ,OAAA,YAAmB,MAAA,GAAS,OAAA,CAAQ,OAAA,GAAU,OAAA;AAGhD,MAAA,OAAO,KAAA,CAAM,sBAAsB,OAAO,CAAA;AAAA,IAC5C,CAAA;AAEA,IAAA,IAAM,YAAA,GAAe,CAAC,OAAA,EAAS,UAAA,KAAe;AAC5C,MAAA,IAAI,YAAA,CAAa,UAAU,CAAA,EAAG;AAC5B,QAAA,OAAO,OAAA,CAAQ,OAAA;AAAA,MACjB;AAEA,MAAA,OAAA,CAAQ,aAAa,EAAC;AAEtB,MAAA,QAAQ,UAAA;AAAY,QAClB,KAAK,OAAA;AACH,UAAA,OAAA,CAAQ,KAAA,GAAQ,CAAA;AAChB,UAAA,OAAA,CAAQ,KAAA,GAAQ,CAAA;AAChB,UAAA;AAAA,QACF,KAAK,OAAA;AACH,UAAA,OAAA,CAAQ,KAAA,GAAQ,CAAA;AAChB,UAAA;AAAA;AAGJ,MAAA,OAAO,QAAQ,MAAA,EAAO;AAAA,IACxB,CAAA;AAEA,IAAA,IAAM,YAAA,GAAe,CAAC,IAAA,KAAS;AAC7B,MAAA,OAAO,IAAA,CAAK,WAAW,KAAK,CAAA;AAAA,IAC9B,CAAA;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/CjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,gFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,WAAN,MAAe;AAAA,MACb,WAAA,GAAe;AACb,QAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AACX,QAAA,IAAA,CAAK,GAAA,uBAAU,GAAA,EAAI;AAAA,MACrB;AAAA,MAEA,IAAK,GAAA,EAAK;AACR,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA;AAC9B,QAAA,IAAI,UAAU,MAAA,EAAW;AACvB,UAAA,OAAO,MAAA;AAAA,QACT,CAAA,MAAO;AAEL,UAAA,IAAA,CAAK,GAAA,CAAI,OAAO,GAAG,CAAA;AACnB,UAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AACvB,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAAA,MAEA,OAAQ,GAAA,EAAK;AACX,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,GAAG,CAAA;AAAA,MAC5B;AAAA,MAEA,GAAA,CAAK,KAAK,KAAA,EAAO;AACf,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA;AAE/B,QAAA,IAAI,CAAC,OAAA,IAAW,KAAA,KAAU,MAAA,EAAW;AAEnC,UAAA,IAAI,IAAA,CAAK,GAAA,CAAI,IAAA,IAAQ,IAAA,CAAK,GAAA,EAAK;AAC7B,YAAA,MAAM,WAAW,IAAA,CAAK,GAAA,CAAI,IAAA,EAAK,CAAE,MAAK,CAAE,KAAA;AACxC,YAAA,IAAA,CAAK,OAAO,QAAQ,CAAA;AAAA,UACtB;AAEA,UAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,QACzB;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,QAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzCjB,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,gBAAA,GAAmB,MAAA;AAGzB,IAAA,IAAM,KAAA,GAAN,MAAM,MAAA,CAAM;AAAA,MACV,WAAA,CAAa,OAAO,OAAA,EAAS;AAC3B,QAAA,OAAA,GAAU,aAAa,OAAO,CAAA;AAE9B,QAAA,IAAI,iBAAiB,MAAA,EAAO;AAC1B,UAAA,IACE,KAAA,CAAM,KAAA,KAAU,CAAC,CAAC,OAAA,CAAQ,KAAA,IAC1B,KAAA,CAAM,iBAAA,KAAsB,CAAC,CAAC,OAAA,CAAQ,iBAAA,EACtC;AACA,YAAA,OAAO,KAAA;AAAA,UACT,CAAA,MAAO;AACL,YAAA,OAAO,IAAI,MAAA,CAAM,KAAA,CAAM,GAAA,EAAK,OAAO,CAAA;AAAA,UACrC;AAAA,QACF;AAEA,QAAA,IAAI,iBAAiB,UAAA,EAAY;AAE/B,UAAA,IAAA,CAAK,MAAM,KAAA,CAAM,KAAA;AACjB,UAAA,IAAA,CAAK,GAAA,GAAM,CAAC,CAAC,KAAK,CAAC,CAAA;AACnB,UAAA,IAAA,CAAK,SAAA,GAAY,MAAA;AACjB,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAC,OAAA,CAAQ,KAAA;AACvB,QAAA,IAAA,CAAK,iBAAA,GAAoB,CAAC,CAAC,OAAA,CAAQ,iBAAA;AAKnC,QAAA,IAAA,CAAK,MAAM,KAAA,CAAM,IAAA,EAAK,CAAE,OAAA,CAAQ,kBAAkB,GAAG,CAAA;AAGrD,QAAA,IAAA,CAAK,MAAM,IAAA,CAAK,GAAA,CACb,MAAM,IAAI,CAAA,CAEV,IAAI,CAAA,CAAA,KAAK,IAAA,CAAK,UAAA,CAAW,CAAA,CAAE,MAAM,CAAC,EAIlC,MAAA,CAAO,CAAA,CAAA,KAAK,EAAE,MAAM,CAAA;AAEvB,QAAA,IAAI,CAAC,IAAA,CAAK,GAAA,CAAI,MAAA,EAAQ;AACpB,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,sBAAA,EAAyB,IAAA,CAAK,GAAG,CAAA,CAAE,CAAA;AAAA,QACzD;AAGA,QAAA,IAAI,IAAA,CAAK,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG;AAEvB,UAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AACxB,UAAA,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,CAAA,CAAA,KAAK,CAAC,SAAA,CAAU,CAAA,CAAE,CAAC,CAAC,CAAC,CAAA;AAChD,UAAA,IAAI,IAAA,CAAK,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG;AACzB,YAAA,IAAA,CAAK,GAAA,GAAM,CAAC,KAAK,CAAA;AAAA,UACnB,CAAA,MAAA,IAAW,IAAA,CAAK,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG;AAE9B,YAAA,KAAA,MAAW,CAAA,IAAK,KAAK,GAAA,EAAK;AACxB,cAAA,IAAI,EAAE,MAAA,KAAW,CAAA,IAAK,MAAM,CAAA,CAAE,CAAC,CAAC,CAAA,EAAG;AACjC,gBAAA,IAAA,CAAK,GAAA,GAAM,CAAC,CAAC,CAAA;AACb,gBAAA;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,SAAA,GAAY,MAAA;AAAA,MACnB;AAAA,MAEA,IAAI,KAAA,GAAS;AACX,QAAA,IAAI,IAAA,CAAK,cAAc,MAAA,EAAW;AAChC,UAAA,IAAA,CAAK,SAAA,GAAY,EAAA;AACjB,UAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACxC,YAAA,IAAI,IAAI,CAAA,EAAG;AACT,cAAA,IAAA,CAAK,SAAA,IAAa,IAAA;AAAA,YACpB;AACA,YAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AACxB,YAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACrC,cAAA,IAAI,IAAI,CAAA,EAAG;AACT,gBAAA,IAAA,CAAK,SAAA,IAAa,GAAA;AAAA,cACpB;AACA,cAAA,IAAA,CAAK,aAAa,KAAA,CAAM,CAAC,CAAA,CAAE,QAAA,GAAW,IAAA,EAAK;AAAA,YAC7C;AAAA,UACF;AAAA,QACF;AACA,QAAA,OAAO,IAAA,CAAK,SAAA;AAAA,MACd;AAAA,MAEA,MAAA,GAAU;AACR,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,QAAA,GAAY;AACV,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,WAAY,KAAA,EAAO;AAEjB,QAAA,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,YAAA,EAAc,EAAE,CAAA;AAItC,QAAA,MAAM,YACH,IAAA,CAAK,OAAA,CAAQ,qBAAqB,uBAAA,KAClC,IAAA,CAAK,QAAQ,KAAA,IAAS,UAAA,CAAA;AACzB,QAAA,MAAM,OAAA,GAAU,WAAW,GAAA,GAAM,KAAA;AACjC,QAAA,MAAM,MAAA,GAAS,KAAA,CAAM,GAAA,CAAI,OAAO,CAAA;AAChC,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,OAAO,MAAA;AAAA,QACT;AAEA,QAAA,MAAM,KAAA,GAAQ,KAAK,OAAA,CAAQ,KAAA;AAE3B,QAAA,MAAM,EAAA,GAAK,QAAQ,EAAA,CAAG,CAAA,CAAE,gBAAgB,CAAA,GAAI,EAAA,CAAG,EAAE,WAAW,CAAA;AAC5D,QAAA,KAAA,GAAQ,MAAM,OAAA,CAAQ,EAAA,EAAI,cAAc,IAAA,CAAK,OAAA,CAAQ,iBAAiB,CAAC,CAAA;AACvE,QAAA,KAAA,CAAM,kBAAkB,KAAK,CAAA;AAG7B,QAAA,KAAA,GAAQ,MAAM,OAAA,CAAQ,EAAA,CAAG,CAAA,CAAE,cAAc,GAAG,qBAAqB,CAAA;AACjE,QAAA,KAAA,CAAM,mBAAmB,KAAK,CAAA;AAG9B,QAAA,KAAA,GAAQ,MAAM,OAAA,CAAQ,EAAA,CAAG,CAAA,CAAE,SAAS,GAAG,gBAAgB,CAAA;AACvD,QAAA,KAAA,CAAM,cAAc,KAAK,CAAA;AAGzB,QAAA,KAAA,GAAQ,MAAM,OAAA,CAAQ,EAAA,CAAG,CAAA,CAAE,SAAS,GAAG,gBAAgB,CAAA;AACvD,QAAA,KAAA,CAAM,cAAc,KAAK,CAAA;AAKzB,QAAA,IAAI,SAAA,GAAY,KAAA,CACb,KAAA,CAAM,GAAG,CAAA,CACT,IAAI,CAAA,IAAA,KAAQ,eAAA,CAAgB,IAAA,EAAM,IAAA,CAAK,OAAO,CAAC,EAC/C,IAAA,CAAK,GAAG,CAAA,CACR,KAAA,CAAM,KAAK,CAAA,CAEX,GAAA,CAAI,CAAA,IAAA,KAAQ,WAAA,CAAY,IAAA,EAAM,IAAA,CAAK,OAAO,CAAC,CAAA;AAE9C,QAAA,IAAI,KAAA,EAAO;AAET,UAAA,SAAA,GAAY,SAAA,CAAU,OAAO,CAAA,IAAA,KAAQ;AACnC,YAAA,KAAA,CAAM,sBAAA,EAAwB,IAAA,EAAM,IAAA,CAAK,OAAO,CAAA;AAChD,YAAA,OAAO,CAAC,CAAC,IAAA,CAAK,MAAM,EAAA,CAAG,CAAA,CAAE,eAAe,CAAC,CAAA;AAAA,UAC3C,CAAC,CAAA;AAAA,QACH;AACA,QAAA,KAAA,CAAM,cAAc,SAAS,CAAA;AAK7B,QAAA,MAAM,QAAA,uBAAe,GAAA,EAAI;AACzB,QAAA,MAAM,WAAA,GAAc,UAAU,GAAA,CAAI,CAAA,IAAA,KAAQ,IAAI,UAAA,CAAW,IAAA,EAAM,IAAA,CAAK,OAAO,CAAC,CAAA;AAC5E,QAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,UAAA,IAAI,SAAA,CAAU,IAAI,CAAA,EAAG;AACnB,YAAA,OAAO,CAAC,IAAI,CAAA;AAAA,UACd;AACA,UAAA,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,KAAA,EAAO,IAAI,CAAA;AAAA,QAC/B;AACA,QAAA,IAAI,SAAS,IAAA,GAAO,CAAA,IAAK,QAAA,CAAS,GAAA,CAAI,EAAE,CAAA,EAAG;AACzC,UAAA,QAAA,CAAS,OAAO,EAAE,CAAA;AAAA,QACpB;AAEA,QAAA,MAAM,MAAA,GAAS,CAAC,GAAG,QAAA,CAAS,QAAQ,CAAA;AACpC,QAAA,KAAA,CAAM,GAAA,CAAI,SAAS,MAAM,CAAA;AACzB,QAAA,OAAO,MAAA;AAAA,MACT;AAAA,MAEA,UAAA,CAAY,OAAO,OAAA,EAAS;AAC1B,QAAA,IAAI,EAAE,iBAAiB,MAAA,CAAA,EAAQ;AAC7B,UAAA,MAAM,IAAI,UAAU,qBAAqB,CAAA;AAAA,QAC3C;AAEA,QAAA,OAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,CAAC,eAAA,KAAoB;AACxC,UAAA,OACE,aAAA,CAAc,iBAAiB,OAAO,CAAA,IACtC,MAAM,GAAA,CAAI,IAAA,CAAK,CAAC,gBAAA,KAAqB;AACnC,YAAA,OACE,cAAc,gBAAA,EAAkB,OAAO,KACvC,eAAA,CAAgB,KAAA,CAAM,CAAC,cAAA,KAAmB;AACxC,cAAA,OAAO,gBAAA,CAAiB,KAAA,CAAM,CAAC,eAAA,KAAoB;AACjD,gBAAA,OAAO,cAAA,CAAe,UAAA,CAAW,eAAA,EAAiB,OAAO,CAAA;AAAA,cAC3D,CAAC,CAAA;AAAA,YACH,CAAC,CAAA;AAAA,UAEL,CAAC,CAAA;AAAA,QAEL,CAAC,CAAA;AAAA,MACH;AAAA;AAAA,MAGA,KAAM,OAAA,EAAS;AACb,QAAA,IAAI,CAAC,OAAA,EAAS;AACZ,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,UAAA,IAAI;AACF,YAAA,OAAA,GAAU,IAAI,MAAA,CAAO,OAAA,EAAS,IAAA,CAAK,OAAO,CAAA;AAAA,UAC5C,SAAS,EAAA,EAAI;AACX,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF;AAEA,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACxC,UAAA,IAAI,OAAA,CAAQ,KAAK,GAAA,CAAI,CAAC,GAAG,OAAA,EAAS,IAAA,CAAK,OAAO,CAAA,EAAG;AAC/C,YAAA,OAAO,IAAA;AAAA,UACT;AAAA,QACF;AACA,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AAEjB,IAAA,IAAM,GAAA,GAAM,gBAAA,EAAA;AACZ,IAAA,IAAM,KAAA,GAAQ,IAAI,GAAA,EAAI;AAEtB,IAAA,IAAM,YAAA,GAAe,qBAAA,EAAA;AACrB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM;AAAA,MACJ,MAAA,EAAQ,EAAA;AAAA,MACR,GAAA;AAAA,MACA,CAAA;AAAA,MACA,qBAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA,KACF,GAAI,UAAA,EAAA;AACJ,IAAA,IAAM,EAAE,uBAAA,EAAyB,UAAA,EAAW,GAAI,iBAAA,EAAA;AAGhD,IAAA,IAAM,eAAe,IAAI,MAAA,CAAO,IAAI,CAAA,CAAE,KAAK,GAAG,GAAG,CAAA;AAEjD,IAAA,IAAM,SAAA,GAAY,CAAA,CAAA,KAAK,CAAA,CAAE,KAAA,KAAU,UAAA;AACnC,IAAA,IAAM,KAAA,GAAQ,CAAA,CAAA,KAAK,CAAA,CAAE,KAAA,KAAU,EAAA;AAI/B,IAAA,IAAM,aAAA,GAAgB,CAAC,WAAA,EAAa,OAAA,KAAY;AAC9C,MAAA,IAAI,MAAA,GAAS,IAAA;AACb,MAAA,MAAM,oBAAA,GAAuB,YAAY,KAAA,EAAM;AAC/C,MAAA,IAAI,cAAA,GAAiB,qBAAqB,GAAA,EAAI;AAE9C,MAAA,OAAO,MAAA,IAAU,qBAAqB,MAAA,EAAQ;AAC5C,QAAA,MAAA,GAAS,oBAAA,CAAqB,KAAA,CAAM,CAAC,eAAA,KAAoB;AACvD,UAAA,OAAO,cAAA,CAAe,UAAA,CAAW,eAAA,EAAiB,OAAO,CAAA;AAAA,QAC3D,CAAC,CAAA;AAED,QAAA,cAAA,GAAiB,qBAAqB,GAAA,EAAI;AAAA,MAC5C;AAEA,MAAA,OAAO,MAAA;AAAA,IACT,CAAA;AAKA,IAAA,IAAM,eAAA,GAAkB,CAAC,IAAA,EAAM,OAAA,KAAY;AACzC,MAAA,IAAA,GAAO,KAAK,OAAA,CAAQ,EAAA,CAAG,CAAA,CAAE,KAAK,GAAG,EAAE,CAAA;AACnC,MAAA,KAAA,CAAM,MAAA,EAAQ,MAAM,OAAO,CAAA;AAC3B,MAAA,IAAA,GAAO,aAAA,CAAc,MAAM,OAAO,CAAA;AAClC,MAAA,KAAA,CAAM,SAAS,IAAI,CAAA;AACnB,MAAA,IAAA,GAAO,aAAA,CAAc,MAAM,OAAO,CAAA;AAClC,MAAA,KAAA,CAAM,UAAU,IAAI,CAAA;AACpB,MAAA,IAAA,GAAO,cAAA,CAAe,MAAM,OAAO,CAAA;AACnC,MAAA,KAAA,CAAM,UAAU,IAAI,CAAA;AACpB,MAAA,IAAA,GAAO,YAAA,CAAa,MAAM,OAAO,CAAA;AACjC,MAAA,KAAA,CAAM,SAAS,IAAI,CAAA;AACnB,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,GAAA,GAAM,QAAM,CAAC,EAAA,IAAM,GAAG,WAAA,EAAY,KAAM,OAAO,EAAA,KAAO,GAAA;AAE5D,IAAA,IAAM,qBAAqB,CAAC,CAAA,EAAG,GAAG,CAAA,KAC/B,GAAA,CAAI,CAAC,CAAA,IAAK,CAAC,GAAA,CAAI,CAAC,KAChB,GAAA,CAAI,CAAC,KAAK,CAAA,IAAK,CAAC,IAAI,CAAC,CAAA;AAUxB,IAAA,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAM,OAAA,KAAY;AACvC,MAAA,OAAO,IAAA,CACJ,IAAA,EAAK,CACL,KAAA,CAAM,KAAK,CAAA,CACX,GAAA,CAAI,CAAC,CAAA,KAAM,aAAa,CAAA,EAAG,OAAO,CAAC,CAAA,CACnC,KAAK,GAAG,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,IAAM,YAAA,GAAe,CAAC,IAAA,EAAM,OAAA,KAAY;AACtC,MAAA,MAAM,CAAA,GAAI,QAAQ,KAAA,GAAQ,EAAA,CAAG,EAAE,UAAU,CAAA,GAAI,EAAA,CAAG,CAAA,CAAE,KAAK,CAAA;AAIvD,MAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,iBAAA,GAAoB,IAAA,GAAO,EAAA;AAC7C,MAAA,OAAO,IAAA,CAAK,QAAQ,CAAA,EAAG,CAAC,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,EAAA,KAAO;AACzC,QAAA,KAAA,CAAM,SAAS,IAAA,EAAM,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,EAAE,CAAA;AACnC,QAAA,IAAI,GAAA;AAEJ,QAAA,IAAI,GAAA,CAAI,CAAC,CAAA,EAAG;AACV,UAAA,GAAA,GAAM,EAAA;AAAA,QACR,CAAA,MAAA,IAAW,GAAA,CAAI,CAAC,CAAA,EAAG;AACjB,UAAA,GAAA,GAAM,KAAK,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,EAAA,EAAK,CAAC,IAAI,CAAC,CAAA,MAAA,CAAA;AAAA,QACjC,CAAA,MAAA,IAAW,GAAA,CAAI,CAAC,CAAA,EAAG;AAEjB,UAAA,GAAA,GAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,GAAI,CAAC,CAAA,IAAA,CAAA;AAAA,QACzC,WAAW,EAAA,EAAI;AACb,UAAA,KAAA,CAAM,mBAAmB,EAAE,CAAA;AAC3B,UAAA,GAAA,GAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAC1B,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,IAAI,CAAC,CAAA,IAAA,CAAA;AAAA,QAClB,CAAA,MAAO;AAEL,UAAA,GAAA,GAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CACrB,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,GAAI,CAAC,CAAA,IAAA,CAAA;AAAA,QAClB;AAEA,QAAA,KAAA,CAAM,gBAAgB,GAAG,CAAA;AACzB,QAAA,OAAO,GAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAA;AAUA,IAAA,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAM,OAAA,KAAY;AACvC,MAAA,OAAO,IAAA,CACJ,IAAA,EAAK,CACL,KAAA,CAAM,KAAK,CAAA,CACX,GAAA,CAAI,CAAC,CAAA,KAAM,aAAa,CAAA,EAAG,OAAO,CAAC,CAAA,CACnC,KAAK,GAAG,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,IAAM,YAAA,GAAe,CAAC,IAAA,EAAM,OAAA,KAAY;AACtC,MAAA,KAAA,CAAM,OAAA,EAAS,MAAM,OAAO,CAAA;AAC5B,MAAA,MAAM,CAAA,GAAI,QAAQ,KAAA,GAAQ,EAAA,CAAG,EAAE,UAAU,CAAA,GAAI,EAAA,CAAG,CAAA,CAAE,KAAK,CAAA;AACvD,MAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,iBAAA,GAAoB,IAAA,GAAO,EAAA;AAC7C,MAAA,OAAO,IAAA,CAAK,QAAQ,CAAA,EAAG,CAAC,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,EAAA,KAAO;AACzC,QAAA,KAAA,CAAM,SAAS,IAAA,EAAM,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,GAAG,EAAE,CAAA;AACnC,QAAA,IAAI,GAAA;AAEJ,QAAA,IAAI,GAAA,CAAI,CAAC,CAAA,EAAG;AACV,UAAA,GAAA,GAAM,EAAA;AAAA,QACR,CAAA,MAAA,IAAW,GAAA,CAAI,CAAC,CAAA,EAAG;AACjB,UAAA,GAAA,GAAM,KAAK,CAAC,CAAA,IAAA,EAAO,CAAC,CAAA,EAAA,EAAK,CAAC,IAAI,CAAC,CAAA,MAAA,CAAA;AAAA,QACjC,CAAA,MAAA,IAAW,GAAA,CAAI,CAAC,CAAA,EAAG;AACjB,UAAA,IAAI,MAAM,GAAA,EAAK;AACb,YAAA,GAAA,GAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,GAAI,CAAC,CAAA,IAAA,CAAA;AAAA,UACzC,CAAA,MAAO;AACL,YAAA,GAAA,GAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,KAAK,CAAC,CAAA,EAAA,EAAK,CAAC,CAAA,GAAI,CAAC,CAAA,MAAA,CAAA;AAAA,UACpC;AAAA,QACF,WAAW,EAAA,EAAI;AACb,UAAA,KAAA,CAAM,mBAAmB,EAAE,CAAA;AAC3B,UAAA,IAAI,MAAM,GAAA,EAAK;AACb,YAAA,IAAI,MAAM,GAAA,EAAK;AACb,cAAA,GAAA,GAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,IAAI,CAAC,CAAA,CAAA,EAAI,EAC1B,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,YACvB,CAAA,MAAO;AACL,cAAA,GAAA,GAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAC1B,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,IAAI,CAAC,CAAA,IAAA,CAAA;AAAA,YAClB;AAAA,UACF,CAAA,MAAO;AACL,YAAA,GAAA,GAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAC1B,CAAA,EAAA,EAAK,CAAC,CAAA,GAAI,CAAC,CAAA,MAAA,CAAA;AAAA,UACb;AAAA,QACF,CAAA,MAAO;AACL,UAAA,KAAA,CAAM,OAAO,CAAA;AACb,UAAA,IAAI,MAAM,GAAA,EAAK;AACb,YAAA,IAAI,MAAM,GAAA,EAAK;AACb,cAAA,GAAA,GAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CACrB,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,YACvB,CAAA,MAAO;AACL,cAAA,GAAA,GAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CACrB,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,GAAI,CAAC,CAAA,IAAA,CAAA;AAAA,YAClB;AAAA,UACF,CAAA,MAAO;AACL,YAAA,GAAA,GAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,IAAI,CACrB,CAAA,EAAA,EAAK,CAAC,CAAA,GAAI,CAAC,CAAA,MAAA,CAAA;AAAA,UACb;AAAA,QACF;AAEA,QAAA,KAAA,CAAM,gBAAgB,GAAG,CAAA;AACzB,QAAA,OAAO,GAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAA,IAAM,cAAA,GAAiB,CAAC,IAAA,EAAM,OAAA,KAAY;AACxC,MAAA,KAAA,CAAM,gBAAA,EAAkB,MAAM,OAAO,CAAA;AACrC,MAAA,OAAO,IAAA,CACJ,KAAA,CAAM,KAAK,CAAA,CACX,GAAA,CAAI,CAAC,CAAA,KAAM,aAAA,CAAc,CAAA,EAAG,OAAO,CAAC,CAAA,CACpC,KAAK,GAAG,CAAA;AAAA,IACb,CAAA;AAEA,IAAA,IAAM,aAAA,GAAgB,CAAC,IAAA,EAAM,OAAA,KAAY;AACvC,MAAA,IAAA,GAAO,KAAK,IAAA,EAAK;AACjB,MAAA,MAAM,CAAA,GAAI,QAAQ,KAAA,GAAQ,EAAA,CAAG,EAAE,WAAW,CAAA,GAAI,EAAA,CAAG,CAAA,CAAE,MAAM,CAAA;AACzD,MAAA,OAAO,IAAA,CAAK,QAAQ,CAAA,EAAG,CAAC,KAAK,IAAA,EAAM,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAA,KAAO;AACjD,QAAA,KAAA,CAAM,UAAU,IAAA,EAAM,GAAA,EAAK,MAAM,CAAA,EAAG,CAAA,EAAG,GAAG,EAAE,CAAA;AAC5C,QAAA,IAAI,kBAAA,CAAmB,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,EAAG;AAC/B,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAM,EAAA,GAAK,IAAI,CAAC,CAAA;AAChB,QAAA,MAAM,EAAA,GAAK,EAAA,IAAM,GAAA,CAAI,CAAC,CAAA;AACtB,QAAA,MAAM,EAAA,GAAK,EAAA,IAAM,GAAA,CAAI,CAAC,CAAA;AACtB,QAAA,MAAM,IAAA,GAAO,EAAA;AAEb,QAAA,IAAI,IAAA,KAAS,OAAO,IAAA,EAAM;AACxB,UAAA,IAAA,GAAO,EAAA;AAAA,QACT;AAIA,QAAA,EAAA,GAAK,OAAA,CAAQ,oBAAoB,IAAA,GAAO,EAAA;AAExC,QAAA,IAAI,EAAA,EAAI;AACN,UAAA,IAAI,IAAA,KAAS,GAAA,IAAO,IAAA,KAAS,GAAA,EAAK;AAEhC,YAAA,GAAA,GAAM,UAAA;AAAA,UACR,CAAA,MAAO;AAEL,YAAA,GAAA,GAAM,GAAA;AAAA,UACR;AAAA,QACF,CAAA,MAAA,IAAW,QAAQ,IAAA,EAAM;AAGvB,UAAA,IAAI,EAAA,EAAI;AACN,YAAA,CAAA,GAAI,CAAA;AAAA,UACN;AACA,UAAA,CAAA,GAAI,CAAA;AAEJ,UAAA,IAAI,SAAS,GAAA,EAAK;AAGhB,YAAA,IAAA,GAAO,IAAA;AACP,YAAA,IAAI,EAAA,EAAI;AACN,cAAA,CAAA,GAAI,CAAC,CAAA,GAAI,CAAA;AACT,cAAA,CAAA,GAAI,CAAA;AACJ,cAAA,CAAA,GAAI,CAAA;AAAA,YACN,CAAA,MAAO;AACL,cAAA,CAAA,GAAI,CAAC,CAAA,GAAI,CAAA;AACT,cAAA,CAAA,GAAI,CAAA;AAAA,YACN;AAAA,UACF,CAAA,MAAA,IAAW,SAAS,IAAA,EAAM;AAGxB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,EAAA,EAAI;AACN,cAAA,CAAA,GAAI,CAAC,CAAA,GAAI,CAAA;AAAA,YACX,CAAA,MAAO;AACL,cAAA,CAAA,GAAI,CAAC,CAAA,GAAI,CAAA;AAAA,YACX;AAAA,UACF;AAEA,UAAA,IAAI,SAAS,GAAA,EAAK;AAChB,YAAA,EAAA,GAAK,IAAA;AAAA,UACP;AAEA,UAAA,GAAA,GAAM,CAAA,EAAG,OAAO,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,CAAC,GAAG,EAAE,CAAA,CAAA;AAAA,QAClC,WAAW,EAAA,EAAI;AACb,UAAA,GAAA,GAAM,KAAK,CAAC,CAAA,IAAA,EAAO,EAAE,CAAA,EAAA,EAAK,CAAC,IAAI,CAAC,CAAA,MAAA,CAAA;AAAA,QAClC,WAAW,EAAA,EAAI;AACb,UAAA,GAAA,GAAM,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,EAAA,EAAK,EACtB,CAAA,EAAA,EAAK,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,GAAI,CAAC,CAAA,IAAA,CAAA;AAAA,QAClB;AAEA,QAAA,KAAA,CAAM,iBAAiB,GAAG,CAAA;AAE1B,QAAA,OAAO,GAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAA;AAIA,IAAA,IAAM,YAAA,GAAe,CAAC,IAAA,EAAM,OAAA,KAAY;AACtC,MAAA,KAAA,CAAM,cAAA,EAAgB,MAAM,OAAO,CAAA;AAEnC,MAAA,OAAO,IAAA,CACJ,MAAK,CACL,OAAA,CAAQ,GAAG,CAAA,CAAE,IAAI,GAAG,EAAE,CAAA;AAAA,IAC3B,CAAA;AAEA,IAAA,IAAM,WAAA,GAAc,CAAC,IAAA,EAAM,OAAA,KAAY;AACrC,MAAA,KAAA,CAAM,aAAA,EAAe,MAAM,OAAO,CAAA;AAClC,MAAA,OAAO,IAAA,CACJ,IAAA,EAAK,CACL,OAAA,CAAQ,EAAA,CAAG,OAAA,CAAQ,iBAAA,GAAoB,CAAA,CAAE,OAAA,GAAU,CAAA,CAAE,IAAI,CAAA,EAAG,EAAE,CAAA;AAAA,IACnE,CAAA;AAQA,IAAA,IAAM,aAAA,GAAgB,CAAA,KAAA,KAAS,CAAC,EAAA,EAC9B,MAAM,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAA,EAAK,EAAA,EACvB,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,IAAI,GAAA,KAAQ;AACxB,MAAA,IAAI,GAAA,CAAI,EAAE,CAAA,EAAG;AACX,QAAA,IAAA,GAAO,EAAA;AAAA,MACT,CAAA,MAAA,IAAW,GAAA,CAAI,EAAE,CAAA,EAAG;AAClB,QAAA,IAAA,GAAO,CAAA,EAAA,EAAK,EAAE,CAAA,IAAA,EAAO,KAAA,GAAQ,OAAO,EAAE,CAAA,CAAA;AAAA,MACxC,CAAA,MAAA,IAAW,GAAA,CAAI,EAAE,CAAA,EAAG;AAClB,QAAA,IAAA,GAAO,KAAK,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,EAAA,EAAK,KAAA,GAAQ,OAAO,EAAE,CAAA,CAAA;AAAA,MAC5C,WAAW,GAAA,EAAK;AACd,QAAA,IAAA,GAAO,KAAK,IAAI,CAAA,CAAA;AAAA,MAClB,CAAA,MAAO;AACL,QAAA,IAAA,GAAO,CAAA,EAAA,EAAK,IAAI,CAAA,EAAG,KAAA,GAAQ,OAAO,EAAE,CAAA,CAAA;AAAA,MACtC;AAEA,MAAA,IAAI,GAAA,CAAI,EAAE,CAAA,EAAG;AACX,QAAA,EAAA,GAAK,EAAA;AAAA,MACP,CAAA,MAAA,IAAW,GAAA,CAAI,EAAE,CAAA,EAAG;AAClB,QAAA,EAAA,GAAK,CAAA,CAAA,EAAI,CAAC,EAAA,GAAK,CAAC,CAAA,MAAA,CAAA;AAAA,MAClB,CAAA,MAAA,IAAW,GAAA,CAAI,EAAE,CAAA,EAAG;AAClB,QAAA,EAAA,GAAK,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,CAAC,KAAK,CAAC,CAAA,IAAA,CAAA;AAAA,MACxB,WAAW,GAAA,EAAK;AACd,QAAA,EAAA,GAAK,KAAK,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,EAAE,IAAI,GAAG,CAAA,CAAA;AAAA,MACjC,WAAW,KAAA,EAAO;AAChB,QAAA,EAAA,GAAK,IAAI,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA,EAAI,CAAC,KAAK,CAAC,CAAA,EAAA,CAAA;AAAA,MAC9B,CAAA,MAAO;AACL,QAAA,EAAA,GAAK,KAAK,EAAE,CAAA,CAAA;AAAA,MACd;AAEA,MAAA,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,EAAE,GAAG,IAAA,EAAK;AAAA,IAC9B,CAAA;AAEA,IAAA,IAAM,OAAA,GAAU,CAAC,GAAA,EAAK,OAAA,EAAS,OAAA,KAAY;AACzC,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,QAAA,IAAI,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE,IAAA,CAAK,OAAO,CAAA,EAAG;AACzB,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAEA,MAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,MAAA,IAAU,CAAC,QAAQ,iBAAA,EAAmB;AAM3D,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAAK;AACnC,UAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,CAAE,MAAM,CAAA;AACnB,UAAA,IAAI,GAAA,CAAI,CAAC,CAAA,CAAE,MAAA,KAAW,WAAW,GAAA,EAAK;AACpC,YAAA;AAAA,UACF;AAEA,UAAA,IAAI,IAAI,CAAC,CAAA,CAAE,MAAA,CAAO,UAAA,CAAW,SAAS,CAAA,EAAG;AACvC,YAAA,MAAM,OAAA,GAAU,GAAA,CAAI,CAAC,CAAA,CAAE,MAAA;AACvB,YAAA,IAAI,OAAA,CAAQ,KAAA,KAAU,OAAA,CAAQ,KAAA,IAC1B,OAAA,CAAQ,KAAA,KAAU,OAAA,CAAQ,KAAA,IAC1B,OAAA,CAAQ,KAAA,KAAU,OAAA,CAAQ,KAAA,EAAO;AACnC,cAAA,OAAO,IAAA;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAGA,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChkBA,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,iFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,GAAA,0BAAa,YAAY,CAAA;AAE/B,IAAA,IAAM,UAAA,GAAN,MAAM,WAAA,CAAW;AAAA,MACf,WAAW,GAAA,GAAO;AAChB,QAAA,OAAO,GAAA;AAAA,MACT;AAAA,MAEA,WAAA,CAAa,MAAM,OAAA,EAAS;AAC1B,QAAA,OAAA,GAAU,aAAa,OAAO,CAAA;AAE9B,QAAA,IAAI,gBAAgB,WAAA,EAAY;AAC9B,UAAA,IAAI,IAAA,CAAK,KAAA,KAAU,CAAC,CAAC,QAAQ,KAAA,EAAO;AAClC,YAAA,OAAO,IAAA;AAAA,UACT,CAAA,MAAO;AACL,YAAA,IAAA,GAAO,IAAA,CAAK,KAAA;AAAA,UACd;AAAA,QACF;AAEA,QAAA,IAAA,GAAO,KAAK,IAAA,EAAK,CAAE,MAAM,KAAK,CAAA,CAAE,KAAK,GAAG,CAAA;AACxC,QAAA,KAAA,CAAM,YAAA,EAAc,MAAM,OAAO,CAAA;AACjC,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAC,OAAA,CAAQ,KAAA;AACvB,QAAA,IAAA,CAAK,MAAM,IAAI,CAAA;AAEf,QAAA,IAAI,IAAA,CAAK,WAAW,GAAA,EAAK;AACvB,UAAA,IAAA,CAAK,KAAA,GAAQ,EAAA;AAAA,QACf,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,OAAA;AAAA,QAC3C;AAEA,QAAA,KAAA,CAAM,QAAQ,IAAI,CAAA;AAAA,MACpB;AAAA,MAEA,MAAO,IAAA,EAAM;AACX,QAAA,MAAM,CAAA,GAAI,IAAA,CAAK,OAAA,CAAQ,KAAA,GAAQ,EAAA,CAAG,EAAE,eAAe,CAAA,GAAI,EAAA,CAAG,CAAA,CAAE,UAAU,CAAA;AACtE,QAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA;AAEtB,QAAA,IAAI,CAAC,CAAA,EAAG;AACN,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,oBAAA,EAAuB,IAAI,CAAA,CAAE,CAAA;AAAA,QACnD;AAEA,QAAA,IAAA,CAAK,WAAW,CAAA,CAAE,CAAC,MAAM,MAAA,GAAY,CAAA,CAAE,CAAC,CAAA,GAAI,EAAA;AAC5C,QAAA,IAAI,IAAA,CAAK,aAAa,GAAA,EAAK;AACzB,UAAA,IAAA,CAAK,QAAA,GAAW,EAAA;AAAA,QAClB;AAGA,QAAA,IAAI,CAAC,CAAA,CAAE,CAAC,CAAA,EAAG;AACT,UAAA,IAAA,CAAK,MAAA,GAAS,GAAA;AAAA,QAChB,CAAA,MAAO;AACL,UAAA,IAAA,CAAK,MAAA,GAAS,IAAI,MAAA,CAAO,CAAA,CAAE,CAAC,CAAA,EAAG,IAAA,CAAK,QAAQ,KAAK,CAAA;AAAA,QACnD;AAAA,MACF;AAAA,MAEA,QAAA,GAAY;AACV,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,KAAM,OAAA,EAAS;AACb,QAAA,KAAA,CAAM,iBAAA,EAAmB,OAAA,EAAS,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAA;AAEpD,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,GAAA,IAAO,OAAA,KAAY,GAAA,EAAK;AAC1C,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,IAAI,OAAO,YAAY,QAAA,EAAU;AAC/B,UAAA,IAAI;AACF,YAAA,OAAA,GAAU,IAAI,MAAA,CAAO,OAAA,EAAS,IAAA,CAAK,OAAO,CAAA;AAAA,UAC5C,SAAS,EAAA,EAAI;AACX,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF;AAEA,QAAA,OAAO,IAAI,OAAA,EAAS,IAAA,CAAK,UAAU,IAAA,CAAK,MAAA,EAAQ,KAAK,OAAO,CAAA;AAAA,MAC9D;AAAA,MAEA,UAAA,CAAY,MAAM,OAAA,EAAS;AACzB,QAAA,IAAI,EAAE,gBAAgB,WAAA,CAAA,EAAa;AACjC,UAAA,MAAM,IAAI,UAAU,0BAA0B,CAAA;AAAA,QAChD;AAEA,QAAA,IAAI,IAAA,CAAK,aAAa,EAAA,EAAI;AACxB,UAAA,IAAI,IAAA,CAAK,UAAU,EAAA,EAAI;AACrB,YAAA,OAAO,IAAA;AAAA,UACT;AACA,UAAA,OAAO,IAAI,MAAM,IAAA,CAAK,KAAA,EAAO,OAAO,CAAA,CAAE,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA,QACvD,CAAA,MAAA,IAAW,IAAA,CAAK,QAAA,KAAa,EAAA,EAAI;AAC/B,UAAA,IAAI,IAAA,CAAK,UAAU,EAAA,EAAI;AACrB,YAAA,OAAO,IAAA;AAAA,UACT;AACA,UAAA,OAAO,IAAI,MAAM,IAAA,CAAK,KAAA,EAAO,OAAO,CAAA,CAAE,IAAA,CAAK,KAAK,MAAM,CAAA;AAAA,QACxD;AAEA,QAAA,OAAA,GAAU,aAAa,OAAO,CAAA;AAG9B,QAAA,IAAI,QAAQ,iBAAA,KACT,IAAA,CAAK,UAAU,UAAA,IAAc,IAAA,CAAK,UAAU,UAAA,CAAA,EAAa;AAC1D,UAAA,OAAO,KAAA;AAAA,QACT;AACA,QAAA,IAAI,CAAC,OAAA,CAAQ,iBAAA,KACV,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,QAAQ,CAAA,IAAK,IAAA,CAAK,KAAA,CAAM,UAAA,CAAW,QAAQ,CAAA,CAAA,EAAI;AACtE,UAAA,OAAO,KAAA;AAAA,QACT;AAGA,QAAA,IAAI,IAAA,CAAK,SAAS,UAAA,CAAW,GAAG,KAAK,IAAA,CAAK,QAAA,CAAS,UAAA,CAAW,GAAG,CAAA,EAAG;AAClE,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,IAAI,IAAA,CAAK,SAAS,UAAA,CAAW,GAAG,KAAK,IAAA,CAAK,QAAA,CAAS,UAAA,CAAW,GAAG,CAAA,EAAG;AAClE,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,IACG,IAAA,CAAK,MAAA,CAAO,OAAA,KAAY,IAAA,CAAK,OAAO,OAAA,IACrC,IAAA,CAAK,QAAA,CAAS,QAAA,CAAS,GAAG,CAAA,IAAK,IAAA,CAAK,QAAA,CAAS,QAAA,CAAS,GAAG,CAAA,EAAG;AAC5D,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,IAAI,IAAI,IAAA,CAAK,MAAA,EAAQ,GAAA,EAAK,IAAA,CAAK,QAAQ,OAAO,CAAA,IAC5C,IAAA,CAAK,QAAA,CAAS,WAAW,GAAG,CAAA,IAAK,KAAK,QAAA,CAAS,UAAA,CAAW,GAAG,CAAA,EAAG;AAChE,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,IAAI,IAAI,IAAA,CAAK,MAAA,EAAQ,GAAA,EAAK,IAAA,CAAK,QAAQ,OAAO,CAAA,IAC5C,IAAA,CAAK,QAAA,CAAS,WAAW,GAAG,CAAA,IAAK,KAAK,QAAA,CAAS,UAAA,CAAW,GAAG,CAAA,EAAG;AAChE,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,UAAA;AAEjB,IAAA,IAAM,YAAA,GAAe,qBAAA,EAAA;AACrB,IAAA,IAAM,EAAE,MAAA,EAAQ,EAAA,EAAI,CAAA,EAAE,GAAI,UAAA,EAAA;AAC1B,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC9Id,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,kFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAMC,UAAAA,GAAY,CAAC,OAAA,EAAS,KAAA,EAAO,OAAA,KAAY;AAC7C,MAAA,IAAI;AACF,QAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,KAAA,EAAO,OAAO,CAAA;AAAA,MAClC,SAAS,EAAA,EAAI;AACX,QAAA,OAAO,KAAA;AAAA,MACT;AACA,MAAA,OAAO,KAAA,CAAM,KAAK,OAAO,CAAA;AAAA,IAC3B,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAUA,UAAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACXjB,IAAA,sBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,oFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AAGd,IAAA,IAAM,aAAA,GAAgB,CAAC,KAAA,EAAO,OAAA,KAC5B,IAAI,MAAM,KAAA,EAAO,OAAO,CAAA,CAAE,GAAA,CACvB,GAAA,CAAI,CAAA,IAAA,KAAQ,KAAK,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,KAAK,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA,CAAE,IAAA,EAAK,CAAE,KAAA,CAAM,GAAG,CAAC,CAAA;AAEnE,IAAA,MAAA,CAAO,OAAA,GAAU,aAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACTjB,IAAA,sBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,oFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AAEd,IAAA,IAAM,aAAA,GAAgB,CAAC,QAAA,EAAU,KAAA,EAAO,OAAA,KAAY;AAClD,MAAA,IAAI,GAAA,GAAM,IAAA;AACV,MAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,MAAA,IAAI,QAAA,GAAW,IAAA;AACf,MAAA,IAAI;AACF,QAAA,QAAA,GAAW,IAAI,KAAA,CAAM,KAAA,EAAO,OAAO,CAAA;AAAA,MACrC,SAAS,EAAA,EAAI;AACX,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA,KAAM;AACtB,QAAA,IAAI,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,EAAG;AAEpB,UAAA,IAAI,CAAC,GAAA,IAAO,KAAA,CAAM,OAAA,CAAQ,CAAC,MAAM,EAAA,EAAI;AAEnC,YAAA,GAAA,GAAM,CAAA;AACN,YAAA,KAAA,GAAQ,IAAI,MAAA,CAAO,GAAA,EAAK,OAAO,CAAA;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AACD,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,aAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1BjB,IAAA,sBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,oFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,aAAA,GAAgB,CAAC,QAAA,EAAU,KAAA,EAAO,OAAA,KAAY;AAClD,MAAA,IAAI,GAAA,GAAM,IAAA;AACV,MAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,MAAA,IAAI,QAAA,GAAW,IAAA;AACf,MAAA,IAAI;AACF,QAAA,QAAA,GAAW,IAAI,KAAA,CAAM,KAAA,EAAO,OAAO,CAAA;AAAA,MACrC,SAAS,EAAA,EAAI;AACX,QAAA,OAAO,IAAA;AAAA,MACT;AACA,MAAA,QAAA,CAAS,OAAA,CAAQ,CAAC,CAAA,KAAM;AACtB,QAAA,IAAI,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,EAAG;AAEpB,UAAA,IAAI,CAAC,GAAA,IAAO,KAAA,CAAM,OAAA,CAAQ,CAAC,MAAM,CAAA,EAAG;AAElC,YAAA,GAAA,GAAM,CAAA;AACN,YAAA,KAAA,GAAQ,IAAI,MAAA,CAAO,GAAA,EAAK,OAAO,CAAA;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AACD,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,aAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzBjB,IAAA,mBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,iFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,EAAA,GAAK,UAAA,EAAA;AAEX,IAAA,IAAM,UAAA,GAAa,CAAC,KAAA,EAAO,KAAA,KAAU;AACnC,MAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,KAAA,EAAO,KAAK,CAAA;AAE9B,MAAA,IAAI,MAAA,GAAS,IAAI,MAAA,CAAO,OAAO,CAAA;AAC/B,MAAA,IAAI,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA,EAAG;AACtB,QAAA,OAAO,MAAA;AAAA,MACT;AAEA,MAAA,MAAA,GAAS,IAAI,OAAO,SAAS,CAAA;AAC7B,MAAA,IAAI,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA,EAAG;AACtB,QAAA,OAAO,MAAA;AAAA,MACT;AAEA,MAAA,MAAA,GAAS,IAAA;AACT,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAM,GAAA,CAAI,MAAA,EAAQ,EAAE,CAAA,EAAG;AACzC,QAAA,MAAM,WAAA,GAAc,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA;AAE/B,QAAA,IAAI,MAAA,GAAS,IAAA;AACb,QAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,UAAA,KAAe;AAElC,UAAA,MAAM,OAAA,GAAU,IAAI,MAAA,CAAO,UAAA,CAAW,OAAO,OAAO,CAAA;AACpD,UAAA,QAAQ,WAAW,QAAA;AAAU,YAC3B,KAAK,GAAA;AACH,cAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AACnC,gBAAA,OAAA,CAAQ,KAAA,EAAA;AAAA,cACV,CAAA,MAAO;AACL,gBAAA,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA,cAC3B;AACA,cAAA,OAAA,CAAQ,GAAA,GAAM,QAAQ,MAAA,EAAO;AAAA;AAAA,YAE/B,KAAK,EAAA;AAAA,YACL,KAAK,IAAA;AACH,cAAA,IAAI,CAAC,MAAA,IAAU,EAAA,CAAG,OAAA,EAAS,MAAM,CAAA,EAAG;AAClC,gBAAA,MAAA,GAAS,OAAA;AAAA,cACX;AACA,cAAA;AAAA,YACF,KAAK,GAAA;AAAA,YACL,KAAK,IAAA;AAEH,cAAA;AAAA;AAAA,YAEF;AACE,cAAA,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyB,UAAA,CAAW,QAAQ,CAAA,CAAE,CAAA;AAAA;AAClE,QACF,CAAC,CAAA;AACD,QAAA,IAAI,WAAW,CAAC,MAAA,IAAU,EAAA,CAAG,MAAA,EAAQ,MAAM,CAAA,CAAA,EAAI;AAC7C,UAAA,MAAA,GAAS,MAAA;AAAA,QACX;AAAA,MACF;AAEA,MAAA,IAAI,MAAA,IAAU,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA,EAAG;AAChC,QAAA,OAAO,MAAA;AAAA,MACT;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC9DjB,IAAAC,cAAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,UAAA,GAAa,CAAC,KAAA,EAAO,OAAA,KAAY;AACrC,MAAA,IAAI;AAGF,QAAA,OAAO,IAAI,KAAA,CAAM,KAAA,EAAO,OAAO,EAAE,KAAA,IAAS,GAAA;AAAA,MAC5C,SAAS,EAAA,EAAI;AACX,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACZjB,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,EAAE,KAAI,GAAI,UAAA;AAChB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAMD,UAAAA,GAAY,iBAAA,EAAA;AAClB,IAAA,IAAM,EAAA,GAAK,UAAA,EAAA;AACX,IAAA,IAAM,EAAA,GAAK,UAAA,EAAA;AACX,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAMH,IAAAA,GAAM,WAAA,EAAA;AAEZ,IAAA,IAAM,OAAA,GAAU,CAAC,OAAA,EAAS,KAAA,EAAO,MAAM,OAAA,KAAY;AACjD,MAAA,OAAA,GAAU,IAAI,MAAA,CAAO,OAAA,EAAS,OAAO,CAAA;AACrC,MAAA,KAAA,GAAQ,IAAI,KAAA,CAAM,KAAA,EAAO,OAAO,CAAA;AAEhC,MAAA,IAAI,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,IAAA,EAAM,KAAA;AAC7B,MAAA,QAAQ,IAAA;AAAM,QACZ,KAAK,GAAA;AACH,UAAA,IAAA,GAAO,EAAA;AACP,UAAA,KAAA,GAAQ,GAAA;AACR,UAAA,IAAA,GAAO,EAAA;AACP,UAAA,IAAA,GAAO,GAAA;AACP,UAAA,KAAA,GAAQ,IAAA;AACR,UAAA;AAAA,QACF,KAAK,GAAA;AACH,UAAA,IAAA,GAAO,EAAA;AACP,UAAA,KAAA,GAAQA,IAAAA;AACR,UAAA,IAAA,GAAO,EAAA;AACP,UAAA,IAAA,GAAO,GAAA;AACP,UAAA,KAAA,GAAQ,IAAA;AACR,UAAA;AAAA,QACF;AACE,UAAA,MAAM,IAAI,UAAU,uCAAuC,CAAA;AAAA;AAI/D,MAAA,IAAIG,UAAAA,CAAU,OAAA,EAAS,KAAA,EAAO,OAAO,CAAA,EAAG;AACtC,QAAA,OAAO,KAAA;AAAA,MACT;AAKA,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,MAAM,GAAA,CAAI,MAAA,EAAQ,EAAE,CAAA,EAAG;AACzC,QAAA,MAAM,WAAA,GAAc,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA;AAE/B,QAAA,IAAI,IAAA,GAAO,IAAA;AACX,QAAA,IAAI,GAAA,GAAM,IAAA;AAEV,QAAA,WAAA,CAAY,OAAA,CAAQ,CAAC,UAAA,KAAe;AAClC,UAAA,IAAI,UAAA,CAAW,WAAW,GAAA,EAAK;AAC7B,YAAA,UAAA,GAAa,IAAI,WAAW,SAAS,CAAA;AAAA,UACvC;AACA,UAAA,IAAA,GAAO,IAAA,IAAQ,UAAA;AACf,UAAA,GAAA,GAAM,GAAA,IAAO,UAAA;AACb,UAAA,IAAI,KAAK,UAAA,CAAW,MAAA,EAAQ,IAAA,CAAK,MAAA,EAAQ,OAAO,CAAA,EAAG;AACjD,YAAA,IAAA,GAAO,UAAA;AAAA,UACT,WAAW,IAAA,CAAK,UAAA,CAAW,QAAQ,GAAA,CAAI,MAAA,EAAQ,OAAO,CAAA,EAAG;AACvD,YAAA,GAAA,GAAM,UAAA;AAAA,UACR;AAAA,QACF,CAAC,CAAA;AAID,QAAA,IAAI,IAAA,CAAK,QAAA,KAAa,IAAA,IAAQ,IAAA,CAAK,aAAa,KAAA,EAAO;AACrD,UAAA,OAAO,KAAA;AAAA,QACT;AAIA,QAAA,IAAA,CAAK,CAAC,GAAA,CAAI,QAAA,IAAY,GAAA,CAAI,QAAA,KAAa,SACnC,KAAA,CAAM,OAAA,EAAS,GAAA,CAAI,MAAM,CAAA,EAAG;AAC9B,UAAA,OAAO,KAAA;AAAA,QACT,CAAA,MAAA,IAAW,IAAI,QAAA,KAAa,KAAA,IAAS,KAAK,OAAA,EAAS,GAAA,CAAI,MAAM,CAAA,EAAG;AAC9D,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,OAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjFjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAGA,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,GAAA,GAAM,CAAC,OAAA,EAAS,KAAA,EAAO,YAAY,OAAA,CAAQ,OAAA,EAAS,KAAA,EAAO,GAAA,EAAK,OAAO,CAAA;AAC7E,IAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACLjB,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAEhB,IAAA,IAAM,GAAA,GAAM,CAAC,OAAA,EAAS,KAAA,EAAO,YAAY,OAAA,CAAQ,OAAA,EAAS,KAAA,EAAO,GAAA,EAAK,OAAO,CAAA;AAC7E,IAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACLjB,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,gFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,UAAA,GAAa,CAAC,EAAA,EAAI,EAAA,EAAI,OAAA,KAAY;AACtC,MAAA,EAAA,GAAK,IAAI,KAAA,CAAM,EAAA,EAAI,OAAO,CAAA;AAC1B,MAAA,EAAA,GAAK,IAAI,KAAA,CAAM,EAAA,EAAI,OAAO,CAAA;AAC1B,MAAA,OAAO,EAAA,CAAG,UAAA,CAAW,EAAA,EAAI,OAAO,CAAA;AAAA,IAClC,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,UAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACRjB,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAKA,IAAA,IAAMA,UAAAA,GAAY,iBAAA,EAAA;AAClB,IAAA,IAAML,QAAAA,GAAU,eAAA,EAAA;AAChB,IAAA,MAAA,CAAO,OAAA,GAAU,CAAC,QAAA,EAAU,KAAA,EAAO,OAAA,KAAY;AAC7C,MAAA,MAAM,MAAM,EAAC;AACb,MAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,MAAA,IAAI,IAAA,GAAO,IAAA;AACX,MAAA,MAAM,CAAA,GAAI,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,EAAG,MAAMA,QAAAA,CAAQ,CAAA,EAAG,CAAA,EAAG,OAAO,CAAC,CAAA;AACxD,MAAA,KAAA,MAAW,WAAW,CAAA,EAAG;AACvB,QAAA,MAAM,QAAA,GAAWK,UAAAA,CAAU,OAAA,EAAS,KAAA,EAAO,OAAO,CAAA;AAClD,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,IAAA,GAAO,OAAA;AACP,UAAA,IAAI,CAAC,KAAA,EAAO;AACV,YAAA,KAAA,GAAQ,OAAA;AAAA,UACV;AAAA,QACF,CAAA,MAAO;AACL,UAAA,IAAI,IAAA,EAAM;AACR,YAAA,GAAA,CAAI,IAAA,CAAK,CAAC,KAAA,EAAO,IAAI,CAAC,CAAA;AAAA,UACxB;AACA,UAAA,IAAA,GAAO,IAAA;AACP,UAAA,KAAA,GAAQ,IAAA;AAAA,QACV;AAAA,MACF;AACA,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,GAAA,CAAI,IAAA,CAAK,CAAC,KAAA,EAAO,IAAI,CAAC,CAAA;AAAA,MACxB;AAEA,MAAA,MAAM,SAAS,EAAC;AAChB,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,GAAG,CAAA,IAAK,GAAA,EAAK;AAC5B,QAAA,IAAI,QAAQ,GAAA,EAAK;AACf,UAAA,MAAA,CAAO,KAAK,GAAG,CAAA;AAAA,QACjB,WAAW,CAAC,GAAA,IAAO,GAAA,KAAQ,CAAA,CAAE,CAAC,CAAA,EAAG;AAC/B,UAAA,MAAA,CAAO,KAAK,GAAG,CAAA;AAAA,QACjB,CAAA,MAAA,IAAW,CAAC,GAAA,EAAK;AACf,UAAA,MAAA,CAAO,IAAA,CAAK,CAAA,EAAA,EAAK,GAAG,CAAA,CAAE,CAAA;AAAA,QACxB,CAAA,MAAA,IAAW,GAAA,KAAQ,CAAA,CAAE,CAAC,CAAA,EAAG;AACvB,UAAA,MAAA,CAAO,IAAA,CAAK,CAAA,EAAA,EAAK,GAAG,CAAA,CAAE,CAAA;AAAA,QACxB,CAAA,MAAO;AACL,UAAA,MAAA,CAAO,IAAA,CAAK,CAAA,EAAG,GAAG,CAAA,GAAA,EAAM,GAAG,CAAA,CAAE,CAAA;AAAA,QAC/B;AAAA,MACF;AACA,MAAA,MAAM,UAAA,GAAa,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA;AACrC,MAAA,MAAM,QAAA,GAAW,OAAO,KAAA,CAAM,GAAA,KAAQ,WAAW,KAAA,CAAM,GAAA,GAAM,OAAO,KAAK,CAAA;AACzE,MAAA,OAAO,UAAA,CAAW,MAAA,GAAS,QAAA,CAAS,MAAA,GAAS,UAAA,GAAa,KAAA;AAAA,IAC5D,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChDA,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,EAAE,KAAI,GAAI,UAAA;AAChB,IAAA,IAAMA,UAAAA,GAAY,iBAAA,EAAA;AAClB,IAAA,IAAML,QAAAA,GAAU,eAAA,EAAA;AAsChB,IAAA,IAAM,SAAS,CAAC,GAAA,EAAK,GAAA,EAAK,OAAA,GAAU,EAAC,KAAM;AACzC,MAAA,IAAI,QAAQ,GAAA,EAAK;AACf,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,GAAA,GAAM,IAAI,KAAA,CAAM,GAAA,EAAK,OAAO,CAAA;AAC5B,MAAA,GAAA,GAAM,IAAI,KAAA,CAAM,GAAA,EAAK,OAAO,CAAA;AAC5B,MAAA,IAAI,UAAA,GAAa,KAAA;AAEjB,MAAA,KAAA,EAAO,KAAA,MAAW,SAAA,IAAa,GAAA,CAAI,GAAA,EAAK;AACtC,QAAA,KAAA,MAAW,SAAA,IAAa,IAAI,GAAA,EAAK;AAC/B,UAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,SAAA,EAAW,SAAA,EAAW,OAAO,CAAA;AACxD,UAAA,UAAA,GAAa,cAAc,KAAA,KAAU,IAAA;AACrC,UAAA,IAAI,KAAA,EAAO;AACT,YAAA,SAAS,KAAA;AAAA,UACX;AAAA,QACF;AAKA,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAM,4BAAA,GAA+B,CAAC,IAAI,UAAA,CAAW,WAAW,CAAC,CAAA;AACjE,IAAA,IAAM,cAAA,GAAiB,CAAC,IAAI,UAAA,CAAW,SAAS,CAAC,CAAA;AAEjD,IAAA,IAAM,YAAA,GAAe,CAAC,GAAA,EAAK,GAAA,EAAK,OAAA,KAAY;AAC1C,MAAA,IAAI,QAAQ,GAAA,EAAK;AACf,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,IAAI,IAAI,MAAA,KAAW,CAAA,IAAK,IAAI,CAAC,CAAA,CAAE,WAAW,GAAA,EAAK;AAC7C,QAAA,IAAI,IAAI,MAAA,KAAW,CAAA,IAAK,IAAI,CAAC,CAAA,CAAE,WAAW,GAAA,EAAK;AAC7C,UAAA,OAAO,IAAA;AAAA,QACT,CAAA,MAAA,IAAW,QAAQ,iBAAA,EAAmB;AACpC,UAAA,GAAA,GAAM,4BAAA;AAAA,QACR,CAAA,MAAO;AACL,UAAA,GAAA,GAAM,cAAA;AAAA,QACR;AAAA,MACF;AAEA,MAAA,IAAI,IAAI,MAAA,KAAW,CAAA,IAAK,IAAI,CAAC,CAAA,CAAE,WAAW,GAAA,EAAK;AAC7C,QAAA,IAAI,QAAQ,iBAAA,EAAmB;AAC7B,UAAA,OAAO,IAAA;AAAA,QACT,CAAA,MAAO;AACL,UAAA,GAAA,GAAM,cAAA;AAAA,QACR;AAAA,MACF;AAEA,MAAA,MAAM,KAAA,uBAAY,GAAA,EAAI;AACtB,MAAA,IAAI,EAAA,EAAI,EAAA;AACR,MAAA,KAAA,MAAW,KAAK,GAAA,EAAK;AACnB,QAAA,IAAI,CAAA,CAAE,QAAA,KAAa,GAAA,IAAO,CAAA,CAAE,aAAa,IAAA,EAAM;AAC7C,UAAA,EAAA,GAAK,QAAA,CAAS,EAAA,EAAI,CAAA,EAAG,OAAO,CAAA;AAAA,QAC9B,WAAW,CAAA,CAAE,QAAA,KAAa,GAAA,IAAO,CAAA,CAAE,aAAa,IAAA,EAAM;AACpD,UAAA,EAAA,GAAK,OAAA,CAAQ,EAAA,EAAI,CAAA,EAAG,OAAO,CAAA;AAAA,QAC7B,CAAA,MAAO;AACL,UAAA,KAAA,CAAM,GAAA,CAAI,EAAE,MAAM,CAAA;AAAA,QACpB;AAAA,MACF;AAEA,MAAA,IAAI,KAAA,CAAM,OAAO,CAAA,EAAG;AAClB,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,IAAI,QAAA;AACJ,MAAA,IAAI,MAAM,EAAA,EAAI;AACZ,QAAA,QAAA,GAAWA,QAAAA,CAAQ,EAAA,CAAG,MAAA,EAAQ,EAAA,CAAG,QAAQ,OAAO,CAAA;AAChD,QAAA,IAAI,WAAW,CAAA,EAAG;AAChB,UAAA,OAAO,IAAA;AAAA,QACT,CAAA,MAAA,IAAW,aAAa,CAAA,KAAM,EAAA,CAAG,aAAa,IAAA,IAAQ,EAAA,CAAG,aAAa,IAAA,CAAA,EAAO;AAC3E,UAAA,OAAO,IAAA;AAAA,QACT;AAAA,MACF;AAGA,MAAA,KAAA,MAAW,MAAM,KAAA,EAAO;AACtB,QAAA,IAAI,EAAA,IAAM,CAACK,UAAAA,CAAU,EAAA,EAAI,OAAO,EAAE,CAAA,EAAG,OAAO,CAAA,EAAG;AAC7C,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,IAAI,EAAA,IAAM,CAACA,UAAAA,CAAU,EAAA,EAAI,OAAO,EAAE,CAAA,EAAG,OAAO,CAAA,EAAG;AAC7C,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,KAAA,MAAW,KAAK,GAAA,EAAK;AACnB,UAAA,IAAI,CAACA,UAAAA,CAAU,EAAA,EAAI,OAAO,CAAC,CAAA,EAAG,OAAO,CAAA,EAAG;AACtC,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,IAAI,MAAA,EAAQ,KAAA;AACZ,MAAA,IAAI,QAAA,EAAU,QAAA;AAGd,MAAA,IAAI,YAAA,GAAe,EAAA,IACjB,CAAC,OAAA,CAAQ,iBAAA,IACT,GAAG,MAAA,CAAO,UAAA,CAAW,MAAA,GAAS,EAAA,CAAG,MAAA,GAAS,KAAA;AAC5C,MAAA,IAAI,YAAA,GAAe,EAAA,IACjB,CAAC,OAAA,CAAQ,iBAAA,IACT,GAAG,MAAA,CAAO,UAAA,CAAW,MAAA,GAAS,EAAA,CAAG,MAAA,GAAS,KAAA;AAE5C,MAAA,IAAI,YAAA,IAAgB,YAAA,CAAa,UAAA,CAAW,MAAA,KAAW,CAAA,IACnD,EAAA,CAAG,QAAA,KAAa,GAAA,IAAO,YAAA,CAAa,UAAA,CAAW,CAAC,CAAA,KAAM,CAAA,EAAG;AAC3D,QAAA,YAAA,GAAe,KAAA;AAAA,MACjB;AAEA,MAAA,KAAA,MAAW,KAAK,GAAA,EAAK;AACnB,QAAA,QAAA,GAAW,QAAA,IAAY,CAAA,CAAE,QAAA,KAAa,GAAA,IAAO,EAAE,QAAA,KAAa,IAAA;AAC5D,QAAA,QAAA,GAAW,QAAA,IAAY,CAAA,CAAE,QAAA,KAAa,GAAA,IAAO,EAAE,QAAA,KAAa,IAAA;AAC5D,QAAA,IAAI,EAAA,EAAI;AACN,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,IAAI,CAAA,CAAE,OAAO,UAAA,IAAc,CAAA,CAAE,OAAO,UAAA,CAAW,MAAA,IAC3C,EAAE,MAAA,CAAO,KAAA,KAAU,aAAa,KAAA,IAChC,CAAA,CAAE,OAAO,KAAA,KAAU,YAAA,CAAa,SAChC,CAAA,CAAE,MAAA,CAAO,KAAA,KAAU,YAAA,CAAa,KAAA,EAAO;AACzC,cAAA,YAAA,GAAe,KAAA;AAAA,YACjB;AAAA,UACF;AACA,UAAA,IAAI,CAAA,CAAE,QAAA,KAAa,GAAA,IAAO,CAAA,CAAE,aAAa,IAAA,EAAM;AAC7C,YAAA,MAAA,GAAS,QAAA,CAAS,EAAA,EAAI,CAAA,EAAG,OAAO,CAAA;AAChC,YAAA,IAAI,MAAA,KAAW,CAAA,IAAK,MAAA,KAAW,EAAA,EAAI;AACjC,cAAA,OAAO,KAAA;AAAA,YACT;AAAA,UACF,CAAA,MAAA,IAAW,GAAG,QAAA,KAAa,IAAA,IAAQ,CAAC,CAAA,CAAE,IAAA,CAAK,EAAA,CAAG,MAAM,CAAA,EAAG;AACrD,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF;AACA,QAAA,IAAI,EAAA,EAAI;AACN,UAAA,IAAI,YAAA,EAAc;AAChB,YAAA,IAAI,CAAA,CAAE,OAAO,UAAA,IAAc,CAAA,CAAE,OAAO,UAAA,CAAW,MAAA,IAC3C,EAAE,MAAA,CAAO,KAAA,KAAU,aAAa,KAAA,IAChC,CAAA,CAAE,OAAO,KAAA,KAAU,YAAA,CAAa,SAChC,CAAA,CAAE,MAAA,CAAO,KAAA,KAAU,YAAA,CAAa,KAAA,EAAO;AACzC,cAAA,YAAA,GAAe,KAAA;AAAA,YACjB;AAAA,UACF;AACA,UAAA,IAAI,CAAA,CAAE,QAAA,KAAa,GAAA,IAAO,CAAA,CAAE,aAAa,IAAA,EAAM;AAC7C,YAAA,KAAA,GAAQ,OAAA,CAAQ,EAAA,EAAI,CAAA,EAAG,OAAO,CAAA;AAC9B,YAAA,IAAI,KAAA,KAAU,CAAA,IAAK,KAAA,KAAU,EAAA,EAAI;AAC/B,cAAA,OAAO,KAAA;AAAA,YACT;AAAA,UACF,CAAA,MAAA,IAAW,GAAG,QAAA,KAAa,IAAA,IAAQ,CAAC,CAAA,CAAE,IAAA,CAAK,EAAA,CAAG,MAAM,CAAA,EAAG;AACrD,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF;AACA,QAAA,IAAI,CAAC,CAAA,CAAE,QAAA,KAAa,EAAA,IAAM,EAAA,CAAA,IAAO,aAAa,CAAA,EAAG;AAC/C,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAKA,MAAA,IAAI,EAAA,IAAM,QAAA,IAAY,CAAC,EAAA,IAAM,aAAa,CAAA,EAAG;AAC3C,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,IAAI,EAAA,IAAM,QAAA,IAAY,CAAC,EAAA,IAAM,aAAa,CAAA,EAAG;AAC3C,QAAA,OAAO,KAAA;AAAA,MACT;AAKA,MAAA,IAAI,gBAAgB,YAAA,EAAc;AAChC,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAGA,IAAA,IAAM,QAAA,GAAW,CAAC,CAAA,EAAG,CAAA,EAAG,OAAA,KAAY;AAClC,MAAA,IAAI,CAAC,CAAA,EAAG;AACN,QAAA,OAAO,CAAA;AAAA,MACT;AACA,MAAA,MAAM,OAAOL,QAAAA,CAAQ,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAQ,OAAO,CAAA;AAChD,MAAA,OAAO,IAAA,GAAO,CAAA,GAAI,CAAA,GACd,IAAA,GAAO,CAAA,GAAI,CAAA,GACX,CAAA,CAAE,QAAA,KAAa,GAAA,IAAO,CAAA,CAAE,QAAA,KAAa,IAAA,GAAO,CAAA,GAC5C,CAAA;AAAA,IACN,CAAA;AAGA,IAAA,IAAM,OAAA,GAAU,CAAC,CAAA,EAAG,CAAA,EAAG,OAAA,KAAY;AACjC,MAAA,IAAI,CAAC,CAAA,EAAG;AACN,QAAA,OAAO,CAAA;AAAA,MACT;AACA,MAAA,MAAM,OAAOA,QAAAA,CAAQ,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAQ,OAAO,CAAA;AAChD,MAAA,OAAO,IAAA,GAAO,CAAA,GAAI,CAAA,GACd,IAAA,GAAO,CAAA,GAAI,CAAA,GACX,CAAA,CAAE,QAAA,KAAa,GAAA,IAAO,CAAA,CAAE,QAAA,KAAa,IAAA,GAAO,CAAA,GAC5C,CAAA;AAAA,IACN,CAAA;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACxPjB,IAAAO,eAAAA,GAAA,UAAA,CAAA;AAAA,EAAA,oEAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAGA,IAAA,IAAM,UAAA,GAAa,UAAA,EAAA;AACnB,IAAA,IAAMH,UAAAA,GAAY,iBAAA,EAAA;AAClB,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,WAAA,GAAc,mBAAA,EAAA;AACpB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAML,MAAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,IAAA,GAAO,YAAA,EAAA;AACb,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAMC,QAAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,QAAA,GAAW,gBAAA,EAAA;AACjB,IAAA,IAAM,YAAA,GAAe,qBAAA,EAAA;AACrB,IAAA,IAAM,YAAA,GAAe,qBAAA,EAAA;AACrB,IAAA,IAAM,IAAA,GAAO,YAAA,EAAA;AACb,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,EAAA,GAAK,UAAA,EAAA;AACX,IAAA,IAAM,EAAA,GAAK,UAAA,EAAA;AACX,IAAA,IAAM,EAAA,GAAK,UAAA,EAAA;AACX,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAME,IAAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAMC,OAAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,QAAA,GAAW,gBAAA,EAAA;AACjB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAME,UAAAA,GAAY,iBAAA,EAAA;AAClB,IAAA,IAAM,aAAA,GAAgB,sBAAA,EAAA;AACtB,IAAA,IAAM,aAAA,GAAgB,sBAAA,EAAA;AACtB,IAAA,IAAM,aAAA,GAAgB,sBAAA,EAAA;AACtB,IAAA,IAAM,UAAA,GAAa,mBAAA,EAAA;AACnB,IAAA,IAAM,UAAA,GAAa,cAAA,EAAA;AACnB,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,aAAA,GAAgB,gBAAA,EAAA;AACtB,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,MAAA,CAAO,OAAA,GAAU;AAAA,MACf,KAAA;AAAA,MACA,KAAA,EAAAN,MAAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA,EAAAC,QAAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA,EAAAE,IAAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,MAAA,EAAAC,OAAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA,EAAAE,UAAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,aAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAA;AAAA,MACA,GAAA;AAAA,MACA,UAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAI,UAAA,CAAW,EAAA;AAAA,MACf,KAAK,UAAA,CAAW,GAAA;AAAA,MAChB,QAAQ,UAAA,CAAW,CAAA;AAAA,MACnB,qBAAqBD,UAAAA,CAAU,mBAAA;AAAA,MAC/B,eAAeA,UAAAA,CAAU,aAAA;AAAA,MACzB,oBAAoB,WAAA,CAAY,kBAAA;AAAA,MAChC,qBAAqB,WAAA,CAAY;AAAA,KACnC;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC5FO,IAAK,kBAAA,qBAAAI,mBAAAA,KAAL;AACH,EAAAA,oBAAA,OAAA,CAAA,GAAQ,UAAA;AACR,EAAAA,oBAAA,KAAA,CAAA,GAAM,UAAA;AACN,EAAAA,oBAAA,OAAA,CAAA,GAAQ,UAAA;AACR,EAAAA,oBAAA,QAAA,CAAA,GAAS,UAAA;AACT,EAAAA,oBAAA,MAAA,CAAA,GAAO,UAAA;AACP,EAAAA,oBAAA,SAAA,CAAA,GAAU,UAAA;AACV,EAAAA,oBAAA,MAAA,CAAA,GAAO,UAAA;AACP,EAAAA,oBAAA,OAAA,CAAA,GAAQ,UAAA;AACR,EAAAA,oBAAA,OAAA,CAAA,GAAQ,SAAA;AATA,EAAA,OAAAA,mBAAAA;AAAA,CAAA,EAAA,kBAAA,IAAA,EAAA;AAYL,IAAK,kBAAA,qBAAAC,mBAAAA,KAAL;AACH,EAAAA,oBAAA,OAAA,CAAA,GAAQ,UAAA;AACR,EAAAA,oBAAA,KAAA,CAAA,GAAM,UAAA;AACN,EAAAA,oBAAA,OAAA,CAAA,GAAQ,UAAA;AACR,EAAAA,oBAAA,QAAA,CAAA,GAAS,UAAA;AACT,EAAAA,oBAAA,MAAA,CAAA,GAAO,UAAA;AACP,EAAAA,oBAAA,SAAA,CAAA,GAAU,UAAA;AACV,EAAAA,oBAAA,MAAA,CAAA,GAAO,UAAA;AACP,EAAAA,oBAAA,OAAA,CAAA,GAAQ,UAAA;AARA,EAAA,OAAAA,mBAAAA;AAAA,CAAA,EAAA,kBAAA,IAAA,EAAA;;;ACXL,IAAK,OAAA,qBAAAC,QAAAA,KAAL;AAEH,EAAAA,SAAA,WAAA,CAAA,GAAY,QAAA;AACZ,EAAAA,SAAA,WAAA,CAAA,GAAY,QAAA;AACZ,EAAAA,SAAA,UAAA,CAAA,GAAW,QAAA;AACX,EAAAA,SAAA,aAAA,CAAA,GAAc,QAAA;AACd,EAAAA,SAAA,cAAA,CAAA,GAAe,GAAA;AACf,EAAAA,SAAA,aAAA,CAAA,GAAc,QAAA;AACd,EAAAA,SAAA,UAAA,CAAA,GAAW,QAAA;AACX,EAAAA,SAAA,KAAA,CAAA,GAAM,QAAA;AACN,EAAAA,SAAA,QAAA,CAAA,GAAS,QAAA;AAGT,EAAAA,SAAA,YAAA,CAAA,GAAa,QAAA;AACb,EAAAA,SAAA,WAAA,CAAA,GAAY,QAAA;AACZ,EAAAA,SAAA,SAAA,CAAA,GAAU,QAAA;AACV,EAAAA,SAAA,WAAA,CAAA,GAAY,QAAA;AACZ,EAAAA,SAAA,kBAAA,CAAA,GAAmB,QAAA;AACnB,EAAAA,SAAA,iBAAA,CAAA,GAAkB,QAAA;AAClB,EAAAA,SAAA,eAAA,CAAA,GAAgB,QAAA;AAChB,EAAAA,SAAA,iBAAA,CAAA,GAAkB,QAAA;AAClB,EAAAA,SAAA,kBAAA,CAAA,GAAmB,MAAA;AACnB,EAAAA,SAAA,iBAAA,CAAA,GAAkB,MAAA;AAGlB,EAAAA,SAAA,MAAA,CAAA,GAAO,QAAA;AACP,EAAAA,SAAA,WAAA,CAAA,GAAY,QAAA;AACZ,EAAAA,SAAA,MAAA,CAAA,GAAO,GAAA;AACP,EAAAA,SAAA,OAAA,CAAA,GAAQ,GAAA;AACR,EAAAA,SAAA,UAAA,CAAA,GAAW,QAAA;AACX,EAAAA,SAAA,SAAA,CAAA,GAAU,QAAA;AACV,EAAAA,SAAA,SAAA,CAAA,GAAU,QAAA;AAGV,EAAAA,SAAA,OAAA,CAAA,GAAQ,QAAA;AACR,EAAAA,SAAA,OAAA,CAAA,GAAQ,QAAA;AACR,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AACR,EAAAA,SAAA,UAAA,CAAA,GAAW,WAAA;AAGX,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AACT,EAAAA,SAAA,YAAA,CAAA,GAAa,WAAA;AACb,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AACP,EAAAA,SAAA,SAAA,CAAA,GAAU,WAAA;AACV,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AACP,EAAAA,SAAA,OAAA,CAAA,GAAQ,QAAA;AACR,EAAAA,SAAA,UAAA,CAAA,GAAW,WAAA;AAGX,EAAAA,SAAA,MAAA,CAAA,GAAO,QAAA;AACP,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AACR,EAAAA,SAAA,KAAA,CAAA,GAAM,QAAA;AACN,EAAAA,SAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AACT,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AACP,EAAAA,SAAA,MAAA,CAAA,GAAO,QAAA;AACP,EAAAA,SAAA,MAAA,CAAA,GAAO,QAAA;AACP,EAAAA,SAAA,MAAA,CAAA,GAAO,QAAA;AACP,EAAAA,SAAA,OAAA,CAAA,GAAQ,QAAA;AACR,EAAAA,SAAA,MAAA,CAAA,GAAO,QAAA;AACP,EAAAA,SAAA,QAAA,CAAA,GAAS,QAAA;AAGT,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AACP,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AACR,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AACP,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AACT,EAAAA,SAAA,MAAA,CAAA,GAAO,QAAA;AACP,EAAAA,SAAA,KAAA,CAAA,GAAM,WAAA;AACN,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AAGT,EAAAA,SAAA,MAAA,CAAA,GAAO,QAAA;AACP,EAAAA,SAAA,UAAA,CAAA,GAAW,cAAA;AACX,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AACR,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AACR,EAAAA,SAAA,KAAA,CAAA,GAAM,WAAA;AACN,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AACT,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AAGT,EAAAA,SAAA,UAAA,CAAA,GAAW,WAAA;AACX,EAAAA,SAAA,UAAA,CAAA,GAAW,WAAA;AACX,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AACT,EAAAA,SAAA,OAAA,CAAA,GAAQ,QAAA;AACR,EAAAA,SAAA,SAAA,CAAA,GAAU,WAAA;AACV,EAAAA,SAAA,SAAA,CAAA,GAAU,WAAA;AACV,EAAAA,SAAA,SAAA,CAAA,GAAU,WAAA;AACV,EAAAA,SAAA,KAAA,CAAA,GAAM,WAAA;AACN,EAAAA,SAAA,SAAA,CAAA,GAAU,WAAA;AACV,EAAAA,SAAA,YAAA,CAAA,GAAa,WAAA;AACb,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AACT,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AACR,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AACR,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AAGR,EAAAA,SAAA,SAAA,CAAA,GAAU,WAAA;AACV,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AACT,EAAAA,SAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AACT,EAAAA,SAAA,UAAA,CAAA,GAAW,WAAA;AACX,EAAAA,SAAA,UAAA,CAAA,GAAW,WAAA;AACX,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AACT,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AAGP,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AACP,EAAAA,SAAA,OAAA,CAAA,GAAQ,QAAA;AACR,EAAAA,SAAA,OAAA,CAAA,GAAQ,QAAA;AACR,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AACR,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AACT,EAAAA,SAAA,SAAA,CAAA,GAAU,WAAA;AACV,EAAAA,SAAA,eAAA,CAAA,GAAgB,cAAA;AAGhB,EAAAA,SAAA,KAAA,CAAA,GAAM,QAAA;AACN,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AACP,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AACP,EAAAA,SAAA,MAAA,CAAA,GAAO,QAAA;AACP,EAAAA,SAAA,WAAA,CAAA,GAAY,QAAA;AACZ,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AAGP,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AACR,EAAAA,SAAA,KAAA,CAAA,GAAM,WAAA;AACN,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AACR,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AACP,EAAAA,SAAA,UAAA,CAAA,GAAW,WAAA;AACX,EAAAA,SAAA,YAAA,CAAA,GAAa,WAAA;AAGb,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AACT,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AACR,EAAAA,SAAA,OAAA,CAAA,GAAQ,WAAA;AACR,EAAAA,SAAA,QAAA,CAAA,GAAS,WAAA;AACT,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AACP,EAAAA,SAAA,YAAA,CAAA,GAAa,QAAA;AACb,EAAAA,SAAA,aAAA,CAAA,GAAc,QAAA;AACd,EAAAA,SAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,SAAA,SAAA,CAAA,GAAU,WAAA;AACV,EAAAA,SAAA,MAAA,CAAA,GAAO,WAAA;AA7IC,EAAA,OAAAA,QAAAA;AAAA,CAAA,EAAA,OAAA,IAAA,EAAA;;;ACaL,SAAS,eAAkB,IAAA,EAA2B;AACzD,EAAA,OAAO,IAAA;AACX;;;ACQO,IAAM,4BAAA,GAA+B,eAAuC,0BAA0B;AAKtG,IAAM,2BAAA,GAA8B,eAAsC,yBAAyB;AAKnG,IAAM,4BAAA,GAA+B,eAAuC,0BAA0B;AAKtG,IAAM,qBAAA,GAAwB,eAAgC,kBAAkB;AAKhF,IAAM,4BAAA,GAA+B,eAAuC,yBAAyB;AAKrG,IAAM,yBAAA,GAA4B,eAAoC,uBAAuB;AAK7F,IAAM,6BAAA,GAAgC,eAAwC,2BAA2B;AAKzG,IAAM,4BAAA,GAA+B,eAAuC,yBAAyB;AAKrG,IAAM,2BAAA,GAA8B,eAAsC,wBAAwB;AAKlG,IAAM,4BAAA,GAA+B,eAAuC,0BAA0B;AAKtG,IAAM,oBAAA,GAAuB,eAA+B,iBAAiB;AAK7E,IAAM,0BAAA,GAA6B,eAAqC,wBAAwB;AAKhG,IAAM,sBAAA,GAAyB,eAAiC,mBAAmB;AAMnF,IAAM,8BAAA,GAAiC,eAAyC,2BAA2B;AAM3G,IAAM,4BAAA,GAA+B,eAAuC,yBAAyB;AAKrG,IAAM,yBAAA,GAA4B,eAAoC,sBAAsB;AAK5F,IAAM,uBAAA,GAA0B,eAAkC,qBAAqB;;;ACmLvF,IAAM,iCAAA,GAAoC,eAA4C,gCAAgC;AAGtH,IAAM,2BAAA,GAA8B,eAAsC,yBAAyB;AAgEnG,IAAM,uBAAA,GAA0B,eAAkC,oBAAoB;;;ACvUtF,SAAS,eACZ,QAAA,EACsB;AACtB,EAAA,IAAI,CAAC,QAAA,EAAU,OAAO,EAAC;AACvB,EAAA,OAAO,OAAO,QAAA,KAAa,UAAA,GAAa,QAAA,EAAS,GAAI,QAAA;AACzD;AAaO,SAAS,oBAAA,CACZ,QAAA,EACA,UAAA,EACA,aAAA,EACsB;AACtB,EAAA,IAAI,QAAA,EAAU;AACV,IAAA,MAAM,cAAc,QAAA,CAAS,GAAA;AAAA,MACzB;AAAA,KACJ;AACA,IAAA,IAAI,WAAA,EAAa;AACb,MAAA,OAAO,WAAA,CAAY,UAAA,CAAW,UAAA,EAAY,aAAa,CAAA;AAAA,IAC3D;AAAA,EACJ;AACA,EAAA,OAAO,eAAe,aAAa,CAAA;AACvC;;;ACvBO,IAAK,WAAA,qBAAAC,YAAAA,KAAL;AACH,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,UAAO,CAAA,CAAA,GAAP,MAAA;AACA,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,WAAQ,CAAA,CAAA,GAAR,OAAA;AACA,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,SAAM,CAAA,CAAA,GAAN,KAAA;AACA,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,UAAO,CAAA,CAAA,GAAP,MAAA;AACA,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,UAAO,CAAA,CAAA,GAAP,MAAA;AACA,EAAAA,YAAAA,CAAAA,YAAAA,CAAA,WAAQ,CAAA,CAAA,GAAR,OAAA;AANQ,EAAA,OAAAA,YAAAA;AAAA,CAAA,EAAA,WAAA,IAAA,EAAA;;;ACzBL,IAAM,wBAAA,GAA2B;AAGjC,IAAM,uBAAA,GAA0B;;;ACEhC,IAAM,KAAA,GAAQ;AAAA,EACjB,kBAAA;AAAA,EACA,kBAAA;AAAA,EACA,OAAA;AAAA,EACA;AACJ;;;ACmBO,IAAM,UAAA,GAAa;AAAA,EACtB,EAAA,EAAI,QAAA;AAAA,EACJ,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,QAAA;AAAA,EACP,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,GAAA,EAAK,QAAA;AAAA,EACL,MAAA,EAAQ,SAAA;AAAA,EACR,QAAA,EAAU,SAAA;AAAA,EACV,MAAA,EAAQ,SAAA;AAAA,EACR,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO,IAAA;AAAA,EACP,SAAA,EAAW,MAAA;AAAA,EACX,KAAA,EAAO,GAAA;AAAA;AAAA,EAEP,IAAA,EAAM,CAAC,MAAA,KACH,MAAA,CAAO,YAAA,CAAa,MAAA,CAAO,WAAA,EAAY,CAAE,UAAA,CAAW,CAAC,CAAA,GAAI,EAAE;AACnE;;;ACgFO,IAAM,sBAAA,GAAyB,eAAiC,mBAAmB;;;ACzHnF,SAAS,oBAAA,CAAqB,SAAiB,QAAA,EAA2B;AAC7E,EAAA,MAAM,IAAI,OAAA,CAAQ,IAAA,GAAO,WAAA,EAAY,CAAE,MAAM,GAAG,CAAA;AAChD,EAAA,MAAM,IAAI,QAAA,CAAS,IAAA,GAAO,WAAA,EAAY,CAAE,MAAM,GAAG,CAAA;AACjD,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,QAAQ,CAAA,EAAA,EAAK;AAC/B,IAAA,IAAI,CAAA,CAAE,CAAC,CAAA,KAAM,GAAA,IAAO,MAAM,CAAA,CAAE,MAAA,GAAS,GAAG,OAAO,IAAA;AAC/C,IAAA,IAAI,CAAA,IAAK,CAAA,CAAE,MAAA,IAAW,CAAA,CAAE,CAAC,CAAA,KAAM,GAAA,IAAO,CAAA,CAAE,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,GAAI,OAAO,KAAA;AAAA,EACjE;AACA,EAAA,OAAO,CAAA,CAAE,WAAW,CAAA,CAAE,MAAA;AAC1B;AAGO,SAAS,gBAAA,CAAiB,SAAwC,QAAA,EAA2B;AAChG,EAAA,OAAO,CAAC,CAAC,OAAA,EAAS,IAAA,CAAK,CAAC,CAAA,KAAM,oBAAA,CAAqB,CAAA,EAAG,QAAQ,CAAC,CAAA;AACnE;AAGO,SAAS,qBAAA,CACZ,SACA,QAAA,EACQ;AACR,EAAA,OAAO,QAAA,CAAS,OAAO,CAAC,CAAA,KAAM,CAAC,gBAAA,CAAiB,OAAA,EAAS,CAAC,CAAC,CAAA;AAC/D;AAGO,SAAS,uBAAuB,KAAA,EAAoD;AACvF,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAY;AAC7B,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,KAAA,MAAWV,SAAQ,KAAA,EAAO;AACtB,IAAA,KAAA,MAAW,CAAA,IAAKA,KAAAA,IAAQ,EAAC,EAAG;AACxB,MAAA,MAAM,GAAA,GAAM,EAAE,IAAA,EAAK;AACnB,MAAA,IAAI,OAAO,CAAC,IAAA,CAAK,IAAI,GAAA,CAAI,WAAA,EAAa,CAAA,EAAG;AACrC,QAAA,IAAA,CAAK,GAAA,CAAI,GAAA,CAAI,WAAA,EAAa,CAAA;AAC1B,QAAA,GAAA,CAAI,KAAK,GAAG,CAAA;AAAA,MAChB;AAAA,IACJ;AAAA,EACJ;AACA,EAAA,OAAO,GAAA;AACX;AAOO,IAAM,oBAAA,GAAuB;AAAA;AAAA,EAEhC,YAAA,EAAc;AAClB;AAEO,IAAM,mBAAA,GAAsB;AAAA,EAC/B,SAAA,EAAW,YAAA;AAAA,EACX,WAAA,EAAa,cAAA;AAAA,EACb,WAAA,EAAa,cAAA;AAAA,EACb,WAAA,EAAa,cAAA;AAAA,EACb,UAAA,EAAY,aAAA;AAAA,EACZ,YAAA,EAAc,eAAA;AAAA,EACd,YAAA,EAAc,eAAA;AAAA,EACd,YAAA,EAAc,eAAA;AAAA,EACd,YAAA,EAAc,eAAA;AAAA,EACd,cAAA,EAAgB,iBAAA;AAAA,EAChB,SAAA,EAAW,YAAA;AAAA,EACX,UAAA,EAAY;AAChB;;;ACIO,IAAM,oBAAA,GAAN,MAAM,qBAAA,SAA6B,KAAA,CAAM;AAAA,EAG5C,WAAA,CAAY,UAAU,mBAAA,EAAqB;AACvC,IAAA,KAAA,CAAM,OAAO,CAAA;AAHjB,IAAA,IAAA,CAAS,IAAA,GAAO,QAAA;AAIZ,IAAA,IAAA,CAAK,IAAA,GAAO,sBAAA;AACZ,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,qBAAA,CAAqB,SAAS,CAAA;AAAA,EAC9D;AACJ;AAGO,SAAS,uBAAuB,KAAA,EAA+C;AAClF,EAAA,OACI,KAAA,YAAiB,wBAChB,CAAC,CAAC,SAAS,OAAO,KAAA,KAAU,QAAA,IAAa,KAAA,CAAc,IAAA,KAAS,sBAAA;AAEzE;AAEA,SAAS,qBACL,OAAA,EACoC;AACpC,EAAA,IAAI;AACA,IAAA,OAAO,OAAA,CAAQ,QAAA,CAAS,GAAA,CAA8B,8BAA8B,CAAA;AAAA,EACxF,CAAA,CAAA,MAAQ;AACJ,IAAA,OAAO,MAAA;AAAA,EACX;AACJ;AAMO,SAAS,YAAA,CACZ,SACA,UAAA,EACO;AACP,EAAA,MAAM,IAAA,GAAO,qBAAqB,OAAO,CAAA;AACzC,EAAA,OAAO,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,UAAU,CAAA,GAAI,IAAA;AACzC;AAMO,SAAS,YAAA,CACZ,OAAA,EACA,QAAA,EACA,MAAA,EACA,iBAAA,EACO;AACP,EAAA,MAAM,IAAA,GAAO,qBAAqB,OAAO,CAAA;AACzC,EAAA,OAAO,OAAO,IAAA,CAAK,SAAA,CAAU,QAAA,EAAU,MAAA,EAAQ,iBAAiB,CAAA,GAAI,IAAA;AACxE;AAMO,SAAS,kBACZ,SAAA,EACA,QAAA,EACA,MAAA,EACA,iBAAA,GAA8B,EAAC,EACxB;AACP,EAAA,MAAM,OAAO,QAAA,CAAS,WAAA;AACtB,EAAA,MAAM,QAAQ,QAAA,CAAS,SAAA;AACvB,EAAA,IAAI,CAAC,IAAA,IAAQ,IAAA,CAAK,SAAS,CAAA,IAAK,CAAC,OAAO,OAAO,IAAA;AAC/C,EAAA,IAAI,SAAA,KAAc,gBAAA,CAAiB,SAAA,CAAU,WAAA,EAAa,GAAG,CAAA,IACzD,iBAAA,CAAkB,IAAA,CAAK,CAAC,MAAM,gBAAA,CAAiB,SAAA,CAAU,WAAA,EAAa,CAAC,CAAC,CAAA,CAAA,EAAI;AAC5E,IAAA,OAAO,IAAA;AAAA,EACX;AACA,EAAA,IAAI,MAAA,GAAS,CAAA;AACb,EAAA,IAAI,SAAA,EAAW;AACX,IAAA,IAAI,KAAA,CAAM,QAAQ,SAAA,CAAU,IAAA,IAAQ,MAAM,GAAA,KAAQ,SAAA,CAAU,IAAI,MAAA,GAAS,CAAA;AAAA,SAAA,IAChE,SAAA,CAAU,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,WAAA,EAAY,KAAM,KAAA,CAAM,GAAA,CAAI,WAAA,EAAa,GAAG,MAAA,GAAS,CAAA;AAAA,EACjG;AACA,EAAA,MAAM,QAAQ,MAAA,IAAU,MAAA,KAAW,SAAS,CAAA,GAAI,MAAA,KAAW,UAAU,CAAA,GAAI,CAAA,CAAA;AACzE,EAAA,OAAO,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,KAAM,GAAA;AAClC;;;ACiCO,IAAM,kBAAA,GAAqB,eAA6B,eAAe;;;AC1FvE,IAAM,YAAA,GAAN,MAAM,aAAA,SAAqB,KAAA,CAAM;AAAA,EACpC,WAAA,CACI,OAAA,EAEgB,MAAA,EAEA,UAAA,GAAqB,IAErB,IAAA,EAClB;AACE,IAAA,KAAA,CAAM,OAAO,CAAA;AANG,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AAEA,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAEA,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AAGhB,IAAA,IAAA,CAAK,IAAA,GAAO,cAAA;AACZ,IAAA,MAAA,CAAO,cAAA,CAAe,IAAA,EAAM,aAAA,CAAa,SAAS,CAAA;AAAA,EACtD;AACJ;;;ACjHO,IAAM,oBAAA,GAA0C;AAAA,EACnD,IAAA,EAAM,eAAA;AAAA,EACN,KAAA,EAAO;AACX;AAEO,IAAM,SAAA,GAAY;AAAA,EACrB;AACJ;;;ACLO,IAAM,KAAA,GAAQ,CAAC,EAAA,KAA8B;AAChD,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,YAAY,UAAA,CAAW,OAAA,EAAS,EAAE,CAAC,CAAA;AAC3D;;;ACCO,SAAS,gBAAgB,IAAA,EAAwB;AACpD,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,IAAI,OAAA,GAAU,EAAA;AACd,EAAA,IAAI,MAAA,GAAS,KAAA;AACb,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AAClC,IAAA,MAAM,EAAA,GAAK,KAAK,CAAC,CAAA;AACjB,IAAA,IAAI,EAAA,KAAO,IAAA,IAAQ,CAAA,GAAI,CAAA,GAAI,KAAK,MAAA,EAAQ;AACpC,MAAA,OAAA,IAAW,IAAA,CAAK,EAAE,CAAC,CAAA;AACnB,MAAA,MAAA,GAAS,IAAA;AAAA,IACb,CAAA,MAAA,IAAW,OAAO,GAAA,IAAO,IAAA,CAAK,QAAQ,GAAA,EAAK,CAAA,GAAI,CAAC,CAAA,KAAM,EAAA,EAAI;AACtD,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAK,IAAI,CAAC,CAAA;AACnC,MAAA,OAAA,IAAW,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,CAAA,EAAG,GAAG,CAAA;AAChC,MAAA,MAAA,GAAS,IAAA;AACT,MAAA,CAAA,GAAI,GAAA;AAAA,IACR,WAAW,EAAA,KAAO,GAAA,IAAO,mBAAmB,IAAA,EAAM,CAAC,MAAM,EAAA,EAAI;AACzD,MAAA,MAAM,GAAA,GAAM,kBAAA,CAAmB,IAAA,EAAM,CAAC,CAAA;AACtC,MAAA,OAAA,IAAW,qBAAqB,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,CAAA,EAAG,GAAG,CAAC,CAAA;AACtD,MAAA,MAAA,GAAS,IAAA;AACT,MAAA,CAAA,GAAI,GAAA;AAAA,IACR,CAAA,MAAA,IAAW,IAAA,CAAK,IAAA,CAAK,EAAE,CAAA,EAAG;AACtB,MAAA,IAAI,MAAA,EAAQ,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAC9B,MAAA,OAAA,GAAU,EAAA;AACV,MAAA,MAAA,GAAS,KAAA;AAAA,IACb,CAAA,MAAO;AACH,MAAA,OAAA,IAAW,EAAA;AACX,MAAA,MAAA,GAAS,IAAA;AAAA,IACb;AAAA,EACJ;AACA,EAAA,IAAI,MAAA,EAAQ,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAC9B,EAAA,OAAO,KAAA;AACX;AAOO,SAAS,eAAe,IAAA,EAAsB;AACjD,EAAA,OAAO,eAAA,CAAgB,IAAI,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AACzC;AAGO,SAAS,eAAe,KAAA,EAAuB;AAClD,EAAA,IAAI,UAAU,EAAA,IAAM,CAAC,6BAA6B,IAAA,CAAK,KAAK,GAAG,OAAO,KAAA;AACtE,EAAA,IAAI,CAAC,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA,EAAG,OAAO,IAAI,KAAK,CAAA,CAAA,CAAA;AAC1C,EAAA,OAAO,CAAA,CAAA,EAAI,KAAA,CAAM,OAAA,CAAQ,YAAA,EAAc,MAAM,CAAC,CAAA,CAAA,CAAA;AAClD;AAGA,SAAS,kBAAA,CAAmB,MAAc,KAAA,EAAuB;AAC7D,EAAA,KAAA,IAAS,IAAI,KAAA,GAAQ,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AAC1C,IAAA,IAAI,IAAA,CAAK,CAAC,CAAA,KAAM,IAAA,EAAM,CAAA,EAAA;AAAA,SAAA,IACb,IAAA,CAAK,CAAC,CAAA,KAAM,GAAA,EAAK,OAAO,CAAA;AAAA,EACrC;AACA,EAAA,OAAO,EAAA;AACX;AAEA,SAAS,qBAAqB,IAAA,EAAsB;AAChD,EAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,cAAA,EAAgB,IAAI,CAAA;AAC5C;;;AC9DO,IAAM,kBAAN,MAAsB;AAAA,EACzB,OAAO,QAAA,CACH,GAAA,EACA,OAAA,EAOsB;AACtB,IAAA,MAAM,EAAE,MAAA,EAAO,GAAI,OAAA,IAAW,EAAC;AAE/B,IAAA,MAAM,aAAqC,EAAC;AAE5C,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA;AAE5B,IAAA,MAAM,SAAA,GAAY,KAAK,MAAA,CAAO,CAAC,QAAQ,OAAO,GAAA,CAAI,GAAG,CAAA,KAAM,UAAU,CAAA;AAErE,IAAA,KAAA,MAAW,QAAQ,SAAA,EAAW;AAC1B,MAAA,MAAM,SAAA,GAAY,IAAI,IAAI,CAAA;AAC1B,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,oBAAA,CAAqB,SAAS,CAAA;AAEhD,MAAA,IAAI,MAAA,EAAQ;AACR,QAAA,MAAM,gBAAgB,MAAA,CAAO;AAAA,UACzB,QAAA,EAAU,IAAA;AAAA,UACV,IAAA,EAAM,SAAA;AAAA,UACN;AAAA,SACH,CAAA;AAED,QAAA,IAAI,CAAC,aAAA,EAAe;AAChB,UAAA;AAAA,QACJ;AAAA,MACJ;AAEA,MAAA,MAAM,oBAAA,GAAuB,KAAK,MAAA,GAAS,CAAA;AAE3C,MAAA,MAAM,mBAAA,GAAsB,IAAA,CAAK,mBAAA,CAAoB,SAAS,CAAA;AAE9D,MAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,IAAK,CAAC,mBAAA,EAAqB;AAC3C,QAAA;AAAA,MACJ;AAEA,MAAA,IACI,IAAA,CAAK,MAAA,GAAS,CAAA,IACd,IAAA,CAAK,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAA,KAAQ,UAAA,IAAc,GAAA,KAAQ,MAAM,CAAA,EACzD;AACE,QAAA;AAAA,MACJ;AAEA,MAAA,MAAM,SAAA,GAAkC;AAAA,QACpC,OAAA,EAAS,IAAA;AAAA,QACT,WAAA,EAAa,wCAAwC,IAAI,CAAA,4BAAA,CAAA;AAAA,QACzD,eAAA,EAAiB,IAAA;AAAA,QACjB,aAAA,EAAe,IAAA;AAAA,QACf,UAAA,EAAY;AAAA,UACR;AAAA,YACI,IAAA,EAAM,OAAA;AAAA,YACN,WAAA,EAAa,OAAA;AAAA,YACb,IAAA,EAAM,SAAA;AAAA,YACN,QAAA,EAAU;AAAA;AACd,SACJ;AAAA,QACA,cAAA,EAAgB,OACZ,OAAA,EACA,OAAA,KACC;AACD,UAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA;AAElC,UAAA,IAAI,KAAA,EAAO;AACP,YAAA,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,qBAAA,GAAwB,IAAI,CAAA;AACnD,YAAA,OAAA,CAAQ,MAAA,CAAO,OAAA;AAAA,cACX,aAAA,GAAgB,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,IAAI;AAAA,aAC/C;AACA,YAAA,OAAA,CAAQ,MAAA,CAAO,OAAA;AAAA,cACX,YAAA,GAAe,UAAU,QAAA;AAAS,aACtC;AAAA,UACJ;AAEA,UAAA,MAAM,cAAqB,EAAC;AAE5B,UAAA,IAAI,oBAAA,EAAsB;AACtB,YAAA,KAAA,MAAW,GAAA,IAAO,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,EAAG;AAC7B,cAAA,WAAA,CAAY,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,YACtC;AAAA,UACJ;AAGA,UAAA,MAAM,QACF,OAAA,CAAQ,KAAA,KAAU,SACZ,MAAA,GACA,cAAA,CAAe,QAAQ,KAAK,CAAA;AAEtC,UAAA,IAAI,uBAAuB,KAAA,EAAO;AAC9B,YAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,IAAA,CAAK,WAAW,CAAA,IAAK,GAAA;AAC/C,YAAA,WAAA,CAAY,IAAA,CAAK,GAAG,KAAA,CAAM,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,UAC9C;AAEA,UAAA,IAAI,KAAA,EAAO;AACP,YAAA,OAAA,CAAQ,MAAA,CAAO,OAAA;AAAA,cACX,8BAAA,GACI,IAAA,CAAK,SAAA,CAAU,WAAW;AAAA,aAClC;AAAA,UACJ;AAEA,UAAA,MAAM,MAAA,GACF,mBAAA,IAAuB,IAAA,CAAK,MAAA,KAAW,CAAA,GACjC,SAAA,CAAU,GAAG,WAAW,CAAA,GACxB,SAAA,CAAU,KAAA,EAAO,GAAG,WAAW,CAAA;AAEzC,UAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,YACX,QAAQ,MAAA,CAAO,WAAA;AAAA,cACX,UAAA;AAAA,cAAA,UAAA;AAAA;AAEJ,WACJ;AAEA,UAAA,IAAI,WAAW,IAAA,EAAM;AACjB,YAAA,OAAA,CAAQ,MAAA,CAAO,QAAQ,MAAM,CAAA;AAAA,UACjC,CAAA,MAAA,IAAW,WAAW,MAAA,EAAW;AAC7B,YAAA,OAAA,CAAQ,MAAA,CAAO,QAAQ,WAAW,CAAA;AAAA,UACtC,CAAA,MAAA,IAAW,OAAO,MAAA,KAAW,SAAA,EAAW;AACpC,YAAA,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,QAAA,EAAU,CAAA;AAAA,UAC5C,CAAA,MAAA,IAAW,OAAO,MAAA,KAAW,QAAA,EAAU;AACnC,YAAA,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,QAAA,EAAU,CAAA;AAAA,UAC5C,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AAC9B,YAAA,OAAA,CAAQ,MAAA,CAAO,UAAU,MAAM,CAAA;AAAA,UACnC,CAAA,MAAA,IAAW,OAAO,MAAA,KAAW,QAAA,EAAU;AACnC,YAAA,OAAA,CAAQ,MAAA,CAAO,QAAQ,MAAM,CAAA;AAAA,UACjC,CAAA,MAAA,IAAW,OAAO,MAAA,KAAW,QAAA,EAAU;AACnC,YAAA,OAAA,CAAQ,MAAA,CAAO,UAAU,MAAM,CAAA;AAAA,UACnC,CAAA,MAAO;AACH,YAAA,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,MAAA,EAAQ,QAAA,EAAU,CAAA;AAAA,UAC7C;AAEA,UAAA,OAAA,CAAQ,OAAA,CAAQ,MAAA,CAAO,MAAA,EAAQ,QAAA,EAAU,CAAA;AAAA,QAC7C,CAAA;AAAA,QACA,gBAAA,EAAkB,CAAC,OAAA,KAAkC;AACjD,UAAA,OAAA,CAAQ,MAAA,CAAO,QAAQ,IAAI,CAAA;AAAA,QAC/B;AAAA,OACJ;AAEA,MAAA,IAAI,mBAAA,EAAqB;AACrB,QAAA,SAAA,CAAU,YAAY,IAAA,CAAK;AAAA,UACvB,IAAA,EAAM,WAAA;AAAA,UACN,WAAA,EAAa,WAAA;AAAA,UACb,IAAA,EAAM,QAAA;AAAA,UACN,QAAA,EAAU;AAAA,SACb,CAAA;AAAA,MACL;AAEA,MAAA,IAAI,oBAAA,EAAsB;AACtB,QAAA,SAAA,CAAU,UAAA,EAAY,IAAA;AAAA,UAClB,GAAG,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,YAC3B,IAAA,EAAM,GAAA;AAAA,YACN,WAAA,EAAa,GAAA;AAAA,YACb,IAAA,EAAM,QAAA;AAAA,YACN,QAAA,EAAU;AAAA,WACd,CAAE;AAAA,SACN;AAAA,MACJ;AAEA,MAAA,UAAA,CAAW,KAAK,SAAS,CAAA;AAAA,IAC7B;AAEA,IAAA,OAAO,UAAA;AAAA,EACX;AAAA,EAEA,OAAO,oBAAoB,IAAA,EAAoB;AAC3C,IAAA,MAAM,OAAA,GAAU,KAAK,QAAA,EAAS;AAC9B,IAAA,OAAO,OAAA,CAAQ,SAAS,WAAW,CAAA;AAAA,EACvC;AAAA,EAEA,OAAO,qBAAqB,IAAA,EAAqB;AAC7C,IAAA,MAAM,OAAA,GAAU,KAAK,QAAA,EAAS;AAC9B,IAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,KAAA,CAAM,aAAa,CAAA;AACxC,IAAA,IAAI,CAAC,IAAA,EAAM;AACP,MAAA,OAAO,EAAC;AAAA,IACZ;AACA,IAAA,OAAO,KAAK,CAAC,CAAA,CACR,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,GAAA,KAAgB,GAAA,CAAI,MAAM,CAAA,CAC/B,OAAO,CAAC,GAAA,KAAgB,QAAQ,EAAE,CAAA;AAAA,EAC3C;AACJ;;;AClLO,IAAM,wBAAA,GAA2B;AAYjC,SAAS,cAAA,CACZ,KAAA,EACA,QAAA,EACA,GAAA,EACA,YAAA,EACC;AACD,EAAA,IAAI;AACA,IAAA,MAAM,CAAA,GAAI,MAAM,QAAA,EAA8B;AAC9C,IAAA,MAAM,MAAA,GACF,aAAa,QAAA,GAAW,CAAA,GAAI,QAAQ,CAAA,GAAI,CAAA,GAAI,SAAS,CAAA,GAAI,QAAQ,CAAA;AACrE,IAAA,IAAI,MAAA,IAAU,OAAO,MAAA,EAAQ;AACzB,MAAA,OAAO,OAAO,GAAG,CAAA;AAAA,IACrB;AAAA,EACJ,CAAA,CAAA,MAAQ;AAAA,EAER;AACA,EAAA,OAAO,YAAA;AACX;AAYO,SAAS,oBAAA,CACZ,OAAA,EACA,QAAA,EACA,GAAA,EACA,YAAA,EACC;AACD,EAAA,IAAI;AACA,IAAA,MAAM,YAAA,GAAe,QAAQ,QAAA,CAAS,WAAA;AAAA,MAClC;AAAA,KACJ;AACA,IAAA,IAAI,CAAC,cAAc,OAAO,YAAA;AAC1B,IAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,aAAA,CAAc,wBAAwB,CAAA;AACjE,IAAA,IAAI,CAAC,OAAO,OAAO,YAAA;AACnB,IAAA,OAAO,cAAA,CAAe,KAAA,EAAO,QAAA,EAAU,GAAA,EAAK,YAAY,CAAA;AAAA,EAC5D,CAAA,CAAA,MAAQ;AACJ,IAAA,OAAO,YAAA;AAAA,EACX;AACJ;AAMO,SAAS,+BACZ,QAAA,EAIF;AACE,EAAA,MAAM,UAAA,uBAAiB,GAAA,EAGrB;AAEF,EAAA,KAAA,MAAW,SAAA,IAAa,SAAS,UAAA,EAAY;AACzC,IAAA,IACI,SAAA,CAAU,oBAAA,IACV,SAAA,CAAU,oBAAA,CAAqB,SAAS,CAAA,EAC1C;AACE,MAAA,KAAA,MAAW,MAAA,IAAU,UAAU,oBAAA,EAAsB;AACjD,QAAA,MAAM,GAAA,GAAM,MAAA,CAAO,QAAA,IAAY,SAAA,CAAU,OAAA;AACzC,QAAA,IAAI,CAAC,UAAA,CAAW,GAAA,CAAI,GAAG,CAAA,EAAG;AACtB,UAAA,UAAA,CAAW,IAAI,GAAA,EAAK;AAAA,YAChB,kBAAkB,SAAA,CAAU,OAAA;AAAA,YAC5B,SAAS;AAAC,WACb,CAAA;AAAA,QACL;AACA,QAAA,UAAA,CAAW,GAAA,CAAI,GAAG,CAAA,CAAG,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,MAC5C;AAAA,IACJ;AAAA,EACJ;AAEA,EAAA,OAAO,UAAA;AACX;;;ACjGO,IAAM,iBAAA,GAAoB,CAC7B,QAAA,EACA,aAAA,KACO;AACP,EAAA,IAAI,iBAAiB,CAAA,EAAG;AACxB,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,aAAA,GAAgB,SAAS,IAAI,CAAA;AAErD,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,EAAO,CAAA,EAAA,EAAK;AAC5B,IAAA,QAAA,CAAS,MAAM,SAAS,CAAA;AACxB,IAAA,IAAI,CAAA,GAAI,QAAQ,CAAA,EAAG;AACf,MAAA,QAAA,CAAS,MAAM,QAAQ,CAAA;AAAA,IAC3B;AAAA,EACJ;AAEA,EAAA,QAAA,CAAS,MAAM,IAAI,CAAA;AACvB;;;ACtBA,IAAA,MAAA,GAAwB,OAAA,CAAA,eAAA,EAAA,CAAA;AAMjB,SAAS,eAAA,CAAgB,GAAW,CAAA,EAAuB;AAC9D,EAAA,MAAM,QAAA,GAAkB,cAAO,CAAC,CAAA;AAChC,EAAA,MAAM,QAAA,GAAkB,cAAO,CAAC,CAAA;AAChC,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,EAAU,OAAO,CAAA;AACnC,EAAA,OAAc,MAAA,CAAA,OAAA,CAAQ,UAAU,QAAQ,CAAA;AAC5C;AAKO,SAAS,mBAAA,CACZ,WACA,QAAA,EACO;AACP,EAAA,OAAO,eAAA,CAAgB,SAAA,EAAW,QAAQ,CAAA,IAAK,CAAA;AACnD;AAOO,SAAS,qBAAA,CACZ,WACA,KAAA,EACO;AACP,EAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AACnB,EAAA,MAAM,OAAA,GAAiB,cAAO,SAAS,CAAA;AACvC,EAAA,IAAI,CAAC,SAAS,OAAO,KAAA;AACrB,EAAA,IAAW,MAAA,CAAA,KAAA,CAAM,KAAK,CAAA,EAAG;AACrB,IAAA,OAAc,MAAA,CAAA,GAAA,CAAI,OAAA,EAAgB,MAAA,CAAA,MAAA,CAAO,KAAK,CAAE,CAAA;AAAA,EACpD;AACA,EAAA,OAAc,MAAA,CAAA,SAAA,CAAU,SAAS,KAAK,CAAA;AAC1C;;;ACrCO,IAAM,eAAA,GAAkB;AACxB,IAAM,WAAA,GAAc;;;ACU3B,IAAM,iBAAA,GAAoB,oBAAA;AAWnB,IAAM,0BAAN,MAA8B;AAAA,EACjC;AAAA,IAAA,IAAA,CAAwB,yBAAA,GAA4B,CAAC,WAAW,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMhE,OAAO,UAAU,UAAA,EAA8C;AAC3D,IAAA,MAAM,MAAA,GAAS,KAAK,yBAAA,CAA0B,MAAA;AAAA,MAAO,CAAC,CAAA,KAClD,UAAA,CAAW,iBAAA,CAAkB,SAAS,CAAC;AAAA,KAC3C;AACA,IAAA,OAAO,OAAO,MAAA,GAAS,CAAA,GAAI,KAAK,GAAA,CAAI,GAAG,MAAM,CAAA,GAAI,IAAA;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,aAAa,QAAA,CACT,OAAA,EACA,OAAA,EACA,OAAA,EAIwD;AACxD,IAAA,IAAI,QAAA;AACJ,IAAA,IAAI;AACA,MAAA,MAAM,QAAA,GAAW,eAAe,OAAO,CAAA;AACvC,MAAA,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA,EAAG,iBAAiB,CAAA,CAAA,EAAI;AAAA,QACrD,SAAS,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAA,GAAS,IAAI,QAAA,GAAW,KAAA;AAAA,OAC1D,CAAA;AAAA,IACL,SAAS,CAAA,EAAG;AACR,MAAA,IAAI,OAAA,EAAS,sBAAsB,MAAM,CAAA;AACzC,MAAA,OAAO,IAAA;AAAA,IACX;AACA,IAAA,IAAI;AACA,MAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,IAAA;AAEzB,MAAA,MAAM,IAAA,GAA0B,MAAM,QAAA,CAAS,IAAA,EAAK;AACpD,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAEnC,MAAA,IAAI,OAAA,KAAY,MAAM,OAAO,IAAA;AAE7B,MAAA,OAAO;AAAA,QACH,UAAA,EAAY,OAAA;AAAA,QACZ,QAAA,EAAU,CAAA,EAAG,OAAO,CAAA,MAAA,EAAS,OAAO,CAAA,KAAA;AAAA,OACxC;AAAA,IACJ,CAAA,CAAA,MAAQ;AACJ,MAAA,OAAO,IAAA;AAAA,IACX;AAAA,EACJ;AACJ;;;AC7DO,SAAS,8BAAA,CACZ,OACA,OAAA,EACM;AACN,EAAA,MAAM,QAAA,GAAW,eAAe,OAAO,CAAA;AACvC,EAAA,IAAI,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,WAAW,CAAA,EAAG;AACpC,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,QAAA,CAAS,GAAG,IAAI,GAAA,GAAM,GAAA;AAC9C,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,CACjC,GAAA;AAAA,IACG,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KACR,CAAA,QAAA,EAAW,kBAAA,CAAmB,GAAG,CAAC,CAAA,CAAA,EAAI,kBAAA,CAAmB,KAAK,CAAC,CAAA;AAAA,GACvE,CACC,KAAK,GAAG,CAAA;AAEb,EAAA,OAAO,CAAA,EAAG,KAAK,CAAA,EAAG,SAAS,GAAG,MAAM,CAAA,CAAA;AACxC;AASO,IAAM,kBAAA,GAAqB;AAGlC,IAAM,aAAA,uBAAoB,GAAA,EAAY;AAStC,eAAsB,uBAAA,CAClB,KAAA,EACA,OAAA,EACA,OAAA,EACe;AACf,EAAA,MAAM,QAAA,GAAW,eAAe,OAAO,CAAA;AACvC,EAAA,IAAI,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,WAAW,CAAA,EAAG;AACpC,IAAA,OAAO,KAAA;AAAA,EACX;AACA,EAAA,IAAI,SAAS,2BAAA,EAA6B;AACtC,IAAA,OAAO,8BAAA,CAA+B,OAAO,QAAQ,CAAA;AAAA,EACzD;AAEA,EAAA,MAAM,QAAA,GAAW,cAAc,KAAK,CAAA;AACpC,EAAA,MAAM,MAAA,GAAS,MAAM,oBAAA,CAAqB,QAAA,EAAU,QAAQ,CAAA;AAC5D,EAAA,IAAI,MAAA,EAAQ;AACR,IAAA,OAAO,iBAAA,CAAkB,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA;AAAA,EAC9C;AAEA,EAAA,IAAI,CAAC,aAAA,CAAc,GAAA,CAAI,QAAQ,CAAA,EAAG;AAC9B,IAAA,aAAA,CAAc,IAAI,QAAQ,CAAA;AAC1B,IAAA,OAAA,CAAQ,IAAA;AAAA,MACJ,CAAA,cAAA,EAAiB,QAAQ,CAAA,6BAAA,EAAgC,kBAAkB,CAAA,2OAAA;AAAA,KAI/E;AAAA,EACJ;AACA,EAAA,OAAO,KAAA;AACX;AAQA,eAAsB,yBAAA,CAClB,QAAA,EACA,UAAA,EACA,KAAA,EACA,eACA,OAAA,EACe;AACf,EAAA,MAAM,WAAA,GAAc,QAAA,EAAU,GAAA,CAA2B,2BAA2B,CAAA;AACpF,EAAA,MAAM,MAAA,GAAS,MAAM,WAAA,EAAa,kBAAA,GAAqB,UAAU,CAAA;AACjE,EAAA,IAAI,MAAA,EAAQ;AACR,IAAA,OAAO,iBAAA,CAAkB,OAAO,MAAM,CAAA;AAAA,EAC1C;AACA,EAAA,OAAO,uBAAA;AAAA,IACH,KAAA;AAAA,IACA,MAAM,oBAAA,CAAqB,QAAA,EAAU,UAAA,EAAY,aAAa,CAAA;AAAA,IAC9D;AAAA,GACJ;AACJ;AAGA,SAAS,cAAc,KAAA,EAAuB;AAC1C,EAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,KAAK,CAAA;AACzB,EAAA,MAAM,SAAA,GAAY,GAAA,CAAI,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAW,aAAa,CAAA,GAAI,GAAA,CAAI,SAAS,KAAA,CAAM,CAAA,EAAG,SAAS,CAAA,GAAI,EAAA;AACrE,EAAA,MAAM,WAAW,GAAA,CAAI,QAAA,KAAa,UAAU,GAAA,CAAI,QAAA,KAAa,WAAW,QAAA,GAAW,OAAA;AACnF,EAAA,OAAO,GAAG,QAAQ,CAAA,EAAA,EAAK,GAAA,CAAI,IAAI,GAAG,QAAQ,CAAA,CAAA;AAC9C;AAEA,eAAe,oBAAA,CACX,UACA,OAAA,EAC2B;AAC3B,EAAA,IAAI;AACA,IAAA,MAAM,WAAW,MAAM,KAAA,CAAM,GAAG,QAAQ,CAAA,EAAG,kBAAkB,CAAA,CAAA,EAAI;AAAA,MAC7D,MAAA,EAAQ,MAAA;AAAA,MACR,OAAA,EAAS,EAAE,GAAG,OAAA,EAAS,gBAAgB,kBAAA,EAAmB;AAAA,MAC1D,IAAA,EAAM;AAAA,KACT,CAAA;AACD,IAAA,IAAI,CAAC,QAAA,CAAS,EAAA,EAAI,OAAO,KAAA,CAAA;AACzB,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,OAAO,OAAO,IAAA,EAAM,MAAA,KAAW,YAAY,IAAA,CAAK,MAAA,GAAS,KAAK,MAAA,GAAS,KAAA,CAAA;AAAA,EAC3E,CAAA,CAAA,MAAQ;AACJ,IAAA,OAAO,MAAA;AAAA,EACX;AACJ;AAGO,SAAS,iBAAA,CAAkB,KAAa,MAAA,EAAwC;AACnF,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA;AACrC,EAAA,IAAI,CAAC,OAAA,CAAQ,MAAA,EAAQ,OAAO,GAAA;AAC5B,EAAA,MAAM,QAAQ,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,EAAG,mBAAmB,CAAC,CAAC,IAAI,kBAAA,CAAmB,CAAC,CAAC,CAAA,CAAE,CAAA,CAAE,KAAK,GAAG,CAAA;AACnG,EAAA,OAAO,CAAA,EAAG,GAAG,CAAA,EAAG,GAAA,CAAI,QAAA,CAAS,GAAG,CAAA,GAAI,GAAA,GAAM,GAAG,CAAA,EAAG,KAAK,CAAA,CAAA;AACzD;;;AC9IO,IAAM,aAAA,GAAgB;AAAA,EACzB,OAAA,EAAS;AAAA,IACL,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA;AAAA,EAEA,KAAA,EAAO;AAAA,IACH,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc,SAAA;AAAA,IACd,mBAAA,EAAqB,SAAA;AAAA,IACrB,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACL,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACL,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACL,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,aAAA,EAAe;AAAA,IACX,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,cAAA,EAAgB;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,WAAA,EAAa;AAAA,IACT,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,YAAA,EAAc;AAAA,IACV,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,IAAA,EAAM;AAAA,IACF,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACL,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,QAAA,EAAU;AAAA,IACN,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,iBAAA,EAAmB;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,UAAA,EAAY;AAAA,IACR,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,eAAA,EAAiB;AAAA,IACb,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,gBAAA,EAAkB;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,QAAA,EAAU;AAAA,IACN,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,QAAA,EAAU;AAAA,IACN,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,cAAA,EAAgB;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACL,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,eAAA,EAAiB;AAAA,IACb,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,YAAA,EAAc;AAAA,IACV,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,eAAA,EAAiB;AAAA,IACb,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,WAAA,EAAa;AAAA,IACT,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,WAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,SAAA,EAAW;AAAA,IACP,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,UAAA,EAAY;AAAA,IACR,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,UAAA,EAAY;AAAA,IACR,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,MAAA,EAAQ;AAAA,IACJ,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,SAAA,EAAW;AAAA,IACP,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,gBAAA,EAAkB;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,UAAA,EAAY,SAAA;AAAA,IACZ,MAAA,EAAQ,SAAA;AAAA,IACR,mBAAA,EAAqB,SAAA;AAAA,IACrB,mBAAA,EAAqB,SAAA;AAAA,IACrB,KAAA,EAAO,SAAA;AAAA,IACP,GAAA,EAAK,SAAA;AAAA,IACL,KAAA,EAAO,SAAA;AAAA,IACP,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,OAAA,EAAS,SAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,SAAA;AAAA,IACb,SAAA,EAAW,SAAA;AAAA,IACX,WAAA,EAAa,SAAA;AAAA,IACb,YAAA,EAAc,SAAA;AAAA,IACd,UAAA,EAAY,SAAA;AAAA,IACZ,aAAA,EAAe,SAAA;AAAA,IACf,UAAA,EAAY,SAAA;AAAA,IACZ,WAAA,EAAa;AAAA;AAErB;AAEA,aAAA,CAAc,SAAS,aAAA,CAAc,iBAAA;;;ACloBrC,SAAS,SAAS,GAAA,EAAyD;AACvE,EAAA,MAAM,KAAA,GAAQ,6CAAA,CAA8C,IAAA,CAAK,GAAG,CAAA;AACpE,EAAA,IAAI,KAAA,EAAO,GAAA,GAAM,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,GAAI,CAAC,CAAA,CAAE,KAAK,EAAE,CAAA;AACzD,EAAA,MAAM,CAAA,GAAI,uCAAA,CAAwC,IAAA,CAAK,GAAG,CAAA;AAC1D,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,MAAM,CAAA,GAAI,QAAA,CAAS,CAAA,CAAE,CAAC,GAAG,EAAE,CAAA;AAC3B,EAAA,OAAO,EAAE,CAAA,EAAI,CAAA,IAAK,EAAA,GAAM,GAAA,EAAM,CAAA,EAAI,CAAA,IAAK,CAAA,GAAK,GAAA,EAAM,CAAA,EAAG,CAAA,GAAI,GAAA,EAAK;AAClE;AAEA,SAAS,UAAA,CAAW,KAAa,MAAA,EAAwB;AACrD,EAAA,MAAM,GAAA,GAAM,SAAS,GAAG,CAAA;AACxB,EAAA,IAAI,CAAC,KAAK,OAAO,GAAA;AACjB,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAA,CAAI,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,MAAM,CAAC,CAAC,CAAA;AAC/D,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAA,CAAI,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,MAAM,CAAC,CAAC,CAAA;AAC/D,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,GAAA,CAAI,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,MAAM,CAAC,CAAC,CAAA;AAC/D,EAAA,OAAO,CAAA,CAAA,EAAI,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,EAAG,CAAA,CAAE,QAAA,CAAS,EAAE,EAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,EAAG,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAClH;AAEA,SAAS,SAAA,CAAU,KAAa,KAAA,EAAuB;AACnD,EAAA,MAAM,GAAA,GAAM,SAAS,GAAG,CAAA;AACxB,EAAA,IAAI,CAAC,KAAK,OAAO,GAAA;AACjB,EAAA,OAAO,CAAA,KAAA,EAAQ,GAAA,CAAI,CAAC,CAAA,EAAA,EAAK,GAAA,CAAI,CAAC,CAAA,EAAA,EAAK,GAAA,CAAI,CAAC,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,CAAA;AACtD;AAGO,SAAS,cAAc,KAAA,EAAgD;AAC1E,EAAA,MAAM,GAAA,GAAM,KAAA,GAAQ,QAAA,CAAS,KAAK,CAAA,GAAI,IAAA;AACtC,EAAA,IAAI,CAAC,KAAK,OAAO,MAAA;AACjB,EAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAc;AAC3B,IAAA,MAAM,IAAI,CAAA,GAAI,GAAA;AACd,IAAA,OAAO,CAAA,IAAK,UAAU,CAAA,GAAI,KAAA,GAAQ,KAAK,GAAA,CAAA,CAAK,CAAA,GAAI,KAAA,IAAS,KAAA,EAAO,GAAG,CAAA;AAAA,EACvE,CAAA;AACA,EAAA,MAAM,SAAA,GAAY,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,GAAI,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,GAAI,MAAA,GAAS,OAAA,CAAQ,IAAI,CAAC,CAAA;AAC5F,EAAA,OAAO,SAAA,GAAY,MAAM,OAAA,GAAU,MAAA;AACvC;AAGO,IAAM,gBAAA,GAAoF,OAAO,MAAA,CAAO;AAAA,EAC3G,IAAA,EAAM,OAAO,MAAA,CAAO;AAAA,IAChB,UAAA,EAAY,SAAA;AAAA,IACZ,gBAAA,EAAkB,SAAA;AAAA,IAClB,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,aAAA,EAAe,SAAA;AAAA,IACf,MAAA,EAAQ,SAAA;AAAA,IACR,eAAA,EAAiB,2BAAA;AAAA,IACjB,gBAAA,EAAkB,2BAAA;AAAA,IAClB,MAAA,EAAQ,SAAA;AAAA,IACR,MAAA,EAAQ;AAAA,GACX,CAAA;AAAA;AAAA,EAED,KAAA,EAAO,OAAO,MAAA,CAAO;AAAA,IACjB,UAAA,EAAY,SAAA;AAAA,IACZ,gBAAA,EAAkB,SAAA;AAAA,IAClB,MAAA,EAAQ,SAAA;AAAA,IACR,IAAA,EAAM,SAAA;AAAA,IACN,aAAA,EAAe,SAAA;AAAA,IACf,MAAA,EAAQ,SAAA;AAAA,IACR,eAAA,EAAiB,wBAAA;AAAA,IACjB,gBAAA,EAAkB,yBAAA;AAAA,IAClB,MAAA,EAAQ,SAAA;AAAA,IACR,MAAA,EAAQ;AAAA,GACX;AACL,CAAC;AAGD,IAAM,iBAAA,GAAyD;AAAA,EAC3D,MAAM,aAAA,CAAc,OAAA;AAAA,EACpB,OAAO,aAAA,CAAc;AACzB,CAAA;AAGO,SAAS,kBAAkB,KAAA,EAAkC;AAChE,EAAA,MAAM,MAAA,GAAS,aAAA,CAAc,KAAA,CAAM,UAAU,CAAA;AAC7C,EAAA,MAAM,OAAA,GAAU,iBAAiB,MAAM,CAAA;AACvC,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,UAAA,IAAc,OAAA,CAAQ,UAAA;AACvC,EAAA,MAAM,EAAA,GAAK,KAAA,CAAM,UAAA,IAAc,OAAA,CAAQ,IAAA;AACvC,EAAA,MAAM,SAAS,KAAA,CAAM,IAAA,IAAQ,MAAM,IAAA,IAAQ,KAAA,CAAM,WAAW,OAAA,CAAQ,MAAA;AACpE,EAAA,MAAM,QAAQ,MAAA,KAAW,OAAA;AACzB,EAAA,OAAO;AAAA,IACH,UAAA,EAAY,EAAA;AAAA,IACZ,gBAAA,EAAkB,UAAA,CAAW,EAAA,EAAI,KAAA,GAAQ,KAAK,EAAE,CAAA;AAAA,IAChD,MAAA,EAAQ,UAAA,CAAW,EAAA,EAAI,KAAA,GAAQ,MAAM,EAAE,CAAA;AAAA,IACvC,IAAA,EAAM,EAAA;AAAA,IACN,aAAA,EAAe,SAAA,CAAU,EAAA,EAAI,IAAI,CAAA;AAAA,IACjC,MAAA;AAAA,IACA,eAAA,EAAiB,SAAA,CAAU,MAAA,EAAQ,KAAA,GAAQ,MAAM,IAAI,CAAA;AAAA,IACrD,gBAAA,EAAkB,SAAA,CAAU,MAAA,EAAQ,KAAA,GAAQ,OAAO,GAAG,CAAA;AAAA,IACtD,MAAA,EAAQ,KAAA,CAAM,GAAA,IAAO,OAAA,CAAQ,MAAA;AAAA,IAC7B,QAAQ,OAAA,CAAQ;AAAA,GACpB;AACJ;AAGO,SAAS,iBAAiB,MAAA,EAAgD;AAC7E,EAAA,OAAO;AAAA,IACH,kBAAkB,MAAA,CAAO,UAAA;AAAA,IACzB,yBAAyB,MAAA,CAAO,gBAAA;AAAA,IAChC,sBAAsB,MAAA,CAAO,MAAA;AAAA,IAC7B,oBAAoB,MAAA,CAAO,IAAA;AAAA,IAC3B,8BAA8B,MAAA,CAAO,aAAA;AAAA,IACrC,sBAAsB,MAAA,CAAO,MAAA;AAAA,IAC7B,sBAAsB,MAAA,CAAO,eAAA;AAAA,IAC7B,uBAAuB,MAAA,CAAO,gBAAA;AAAA,IAC9B,sBAAsB,MAAA,CAAO,MAAA;AAAA,IAC7B,sBAAsB,MAAA,CAAO;AAAA,GACjC;AACJ;AAMO,SAAS,uBAAuB,KAAA,EAA0C;AAC7E,EAAA,OAAO;AAAA,IACH,GAAG,gBAAA,CAAiB,iBAAA,CAAkB,KAAK,CAAC,CAAA;AAAA,IAC5C,cAAA,EAAgB,aAAA,CAAc,KAAA,CAAM,UAAU;AAAA,GAClD;AACJ;AAeO,SAAS,iBAAA,CACZ,KAAA,EACA,WAAA,EACA,MAAA,GAAiC,aAAA,EACZ;AACrB,EAAA,MAAM,OAAO,CAACW,OAAAA,KACVA,YAAW,MAAA,GAAU,WAAA,GAAc,SAAS,OAAA,GAAWA,OAAAA;AAC3D,EAAA,MAAM,MAAA,GAAS,CAAC,IAAA,KAAqC,MAAA,CAAO,IAAI,CAAA;AAEhE,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,MAAA;AAEJ,EAAA,IAAI,UAAU,MAAA,IAAa,KAAA,KAAU,UAAU,KAAA,KAAU,OAAA,IAAW,UAAU,MAAA,EAAQ;AAClF,IAAA,MAAA,GAAS,IAAA,CAAM,SAAsD,MAAM,CAAA;AAC3E,IAAA,QAAA,GAAW,kBAAkB,MAAM,CAAA;AACnC,IAAA,MAAA,GAAS,EAAE,GAAG,gBAAA,CAAiB,MAAM,CAAA,EAAE;AAAA,EAC3C,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,EAAU;AAClC,IAAA,MAAM,KAAA,GAAQ,OAAO,KAAK,CAAA;AAC1B,IAAA,QAAA,GAAW,SAAS,iBAAA,CAAkB,IAAA;AACtC,IAAA,MAAA,GAAS,aAAA,CAAc,SAAS,UAAU,CAAA;AAC1C,IAAA,MAAA,GAAS,QAAQ,iBAAA,CAAkB,KAAK,IAAI,EAAE,GAAG,iBAAiB,IAAA,EAAK;AAAA,EAC3E,CAAA,MAAO;AACH,IAAA,MAAM,MAAA,GAAS,OAAO,KAAA,CAAM,QAAA,KAAa,WAAW,MAAA,CAAO,KAAA,CAAM,QAAQ,CAAA,GAAI,KAAA,CAAM,QAAA;AACnF,IAAA,MAAA,GAAS,KAAA,CAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,IAAI,IAAI,MAAA,GAAS,aAAA,CAAc,MAAA,CAAO,UAAU,CAAA,GAAI,MAAA;AACrF,IAAA,QAAA,GAAW,MAAA,IAAU,kBAAkB,MAAM,CAAA;AAC7C,IAAA,MAAA,GAAS,MAAA,GAAS,kBAAkB,MAAM,CAAA,GAAI,EAAE,GAAG,gBAAA,CAAiB,MAAM,CAAA,EAAE;AAC5E,IAAA,IAAI,KAAA,CAAM,MAAA,EAAQ,MAAA,GAAS,EAAE,GAAG,QAAQ,GAAG,cAAA,CAAe,KAAA,CAAM,MAAM,CAAA,EAAE;AACxE,IAAA,IAAA,GAAO,KAAA,CAAM,UAAA;AACb,IAAA,MAAA,GAAS,KAAA,CAAM,MAAA;AAAA,EACnB;AAEA,EAAA,MAAM,SAAiC,EAAE,GAAG,iBAAiB,MAAM,CAAA,EAAG,gBAAgB,MAAA,EAAO;AAC7F,EAAA,IAAI,IAAA,EAAM,MAAA,CAAO,kBAAkB,CAAA,GAAI,IAAA;AACvC,EAAA,IAAI,MAAA,EAAQ,MAAA,CAAO,oBAAoB,CAAA,GAAI,MAAA;AAC3C,EAAA,OAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,QAAA,EAAS;AACtC;AAEA,SAAS,eAAiC,KAAA,EAAsB;AAC5D,EAAA,OAAO,MAAA,CAAO,WAAA,CAAY,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,MAAA,CAAO,CAAC,GAAG,CAAC,CAAA,KAAM,CAAA,KAAM,MAAS,CAAC,CAAA;AACtF;AAGO,SAAS,iBAAA,GAA6B;AACzC,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,CAAC,MAAA,CAAO,YAAY,OAAO,IAAA;AAChE,EAAA,OAAO,MAAA,CAAO,UAAA,CAAW,8BAA8B,CAAA,CAAE,OAAA;AAC7D;;;ACvMA,IAAM,WAAA,GAAc,oBAAA;AACpB,IAAM,cAAA,GAAqC,CAAC,QAAA,EAAU,OAAA,EAAS,OAAO,MAAM,CAAA;AAMrE,SAAS,iBAAA,GAA6C;AACzD,EAAA,IAAI;AACA,IAAA,MAAM,MAAA,GAAS,YAAA,CAAa,OAAA,CAAQ,WAAW,CAAA;AAC/C,IAAA,IAAI,MAAA,IAAU,cAAA,CAAe,QAAA,CAAS,MAA0B,CAAA,EAAG;AAC/D,MAAA,OAAO,MAAA;AAAA,IACX;AAAA,EACJ,CAAA,CAAA,MAAQ;AAAA,EAER;AACA,EAAA,OAAO,IAAA;AACX;AAKO,SAAS,kBAAkB,QAAA,EAAkC;AAChE,EAAA,IAAI;AACA,IAAA,YAAA,CAAa,OAAA,CAAQ,aAAa,QAAQ,CAAA;AAAA,EAC9C,CAAA,CAAA,MAAQ;AAAA,EAER;AACJ;AAKO,SAAS,kBAAkB,OAAA,EAA6C;AAC3E,EAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,OAAA,CAAQ,OAAO,CAAA;AAC5C,EAAA,IAAI,UAAU,EAAA,EAAI;AACd,IAAA,OAAO,eAAe,CAAC,CAAA;AAAA,EAC3B;AACA,EAAA,OAAO,cAAA,CAAA,CAAgB,KAAA,GAAQ,CAAA,IAAK,cAAA,CAAe,MAAM,CAAA;AAC7D;;;ACtCA,IAAM,OAAA,GAAU,iBAAA;AAOT,SAAS,UAAU,IAAA,EAAsB;AAC5C,EAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA;AACnC;AASO,SAAS,cAAc,IAAA,EAAsB;AAChD,EAAA,MAAM,QAAA,GAAW,UAAU,IAAI,CAAA;AAC/B,EAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,EAAA,KAAA,MAAW,MAAM,QAAA,EAAU;AACvB,IAAA,MAAM,EAAA,GAAK,EAAA,CAAG,WAAA,CAAY,CAAC,CAAA;AAE3B,IAAA,IAAI,EAAA,IAAM,KAAA,IAAU,EAAA,IAAM,KAAA,EAAQ;AAElC,IAAA,IAAI,OAAO,IAAA,EAAQ;AAEnB,IAAA,IAAI,EAAA,IAAM,GAAA,IAAU,EAAA,IAAM,GAAA,EAAQ;AAClC,IAAA,KAAA,IAAS,eAAA,CAAgB,EAAE,CAAA,GAAI,CAAA,GAAI,CAAA;AAAA,EACvC;AACA,EAAA,OAAO,KAAA;AACX;AAWO,SAAS,eAAA,CAAgB,IAAA,EAAc,KAAA,EAAe,QAAA,GAAW,QAAA,EAAkB;AACtF,EAAA,IAAI,KAAA,GAAQ,GAAG,OAAO,EAAA;AACtB,EAAA,IAAI,aAAA,CAAc,IAAI,CAAA,IAAK,KAAA,EAAO,OAAO,IAAA;AACzC,EAAA,MAAM,OAAO,IAAA,CAAK,GAAA,CAAI,GAAG,KAAA,GAAQ,aAAA,CAAc,QAAQ,CAAC,CAAA;AACxD,EAAA,IAAI,GAAA,GAAM,EAAA;AACV,EAAA,IAAI,IAAA,GAAO,CAAA;AACX,EAAA,IAAI,CAAA,GAAI,CAAA;AACR,EAAA,OAAO,CAAA,GAAI,KAAK,MAAA,EAAQ;AACpB,IAAA,IAAI,IAAA,CAAK,CAAC,CAAA,KAAM,MAAA,EAAQ;AACpB,MAAA,MAAM,IAAI,iBAAA,CAAkB,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAC9C,MAAA,IAAI,CAAA,EAAG;AACH,QAAA,GAAA,IAAO,EAAE,CAAC,CAAA;AACV,QAAA,CAAA,IAAK,CAAA,CAAE,CAAC,CAAA,CAAE,MAAA;AACV,QAAA;AAAA,MACJ;AAAA,IACJ;AACA,IAAA,MAAM,KAAK,MAAA,CAAO,aAAA,CAAc,IAAA,CAAK,WAAA,CAAY,CAAC,CAAE,CAAA;AACpD,IAAA,MAAM,CAAA,GAAI,cAAc,EAAE,CAAA;AAC1B,IAAA,IAAI,IAAA,GAAO,IAAI,IAAA,EAAM;AACrB,IAAA,GAAA,IAAO,EAAA;AACP,IAAA,IAAA,IAAQ,CAAA;AACR,IAAA,CAAA,IAAK,EAAA,CAAG,MAAA;AAAA,EACZ;AACA,EAAA,OAAO,CAAA,EAAG,GAAG,CAAA,EAAG,QAAQ,CAAA,OAAA,CAAA;AAC5B;AAKA,SAAS,gBAAgB,EAAA,EAAqB;AAE1C,EAAA,IAAI,EAAA,IAAM,QAAS,OAAO,IAAA;AAE1B,EAAA,IAAI,EAAA,IAAM,IAAA,IAAU,EAAA,IAAM,KAAA,EAAQ,OAAO,IAAA;AAEzC,EAAA,IAAI,EAAA,IAAM,IAAA,IAAU,EAAA,IAAM,KAAA,EAAQ,OAAO,IAAA;AAEzC,EAAA,IAAI,EAAA,IAAM,KAAA,IAAU,EAAA,IAAM,KAAA,EAAQ,OAAO,IAAA;AAEzC,EAAA,IAAI,EAAA,IAAM,KAAA,IAAU,EAAA,IAAM,KAAA,EAAQ,OAAO,IAAA;AAEzC,EAAA,IAAI,EAAA,IAAM,KAAA,IAAU,EAAA,IAAM,KAAA,EAAQ,OAAO,IAAA;AAEzC,EAAA,IAAI,EAAA,IAAM,KAAA,IAAU,EAAA,IAAM,KAAA,EAAQ,OAAO,IAAA;AAEzC,EAAA,IAAI,EAAA,IAAM,KAAA,IAAU,EAAA,IAAM,KAAA,EAAQ,OAAO,IAAA;AAEzC,EAAA,IAAI,EAAA,IAAM,KAAA,IAAU,EAAA,IAAM,KAAA,EAAQ,OAAO,IAAA;AAEzC,EAAA,IAAI,EAAA,IAAM,KAAA,IAAU,EAAA,IAAM,KAAA,EAAQ,OAAO,IAAA;AAEzC,EAAA,IAAI,EAAA,IAAM,KAAA,IAAU,EAAA,IAAM,KAAA,EAAQ,OAAO,IAAA;AAEzC,EAAA,IAAI,EAAA,IAAM,MAAA,IAAW,EAAA,IAAM,MAAA,EAAS,OAAO,IAAA;AAE3C,EAAA,IAAI,EAAA,IAAM,IAAA,IAAU,EAAA,IAAM,IAAA,EAAQ,OAAO,IAAA;AACzC,EAAA,OAAO,KAAA;AACX;;;AC9FA,IAAM,OAAO,CAAC,KAAA,KACV,MAAM,OAAA,CAAQ,KAAK,IAAI,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAM,OAAO,CAAA,KAAM,QAAA,IAAY,EAAE,IAAA,EAAM,IAAI,EAAC;AAErF,IAAM,aAAA,GAAgB,CAAC,OAAA,KAAwE;AAC3F,EAAA,IAAI;AACA,IAAA,OAAO,OAAA,CAAQ,QAAA,CAAS,GAAA,CAA8B,8BAA8B,CAAA;AAAA,EACxF,CAAA,CAAA,MAAQ;AACJ,IAAA,OAAO,MAAA;AAAA,EACX;AACJ,CAAA;AAMA,SAAS,MAAM,SAAA,EAAyD;AACpE,EAAA,MAAM,MAA8B,EAAC;AACrC,EAAA,IAAI,OAAA,GAA4C,SAAA;AAChD,EAAA,OAAO,OAAA,IAAW,IAAI,MAAA,GAAS,EAAA,IAAM,CAAC,GAAA,CAAI,QAAA,CAAS,OAAO,CAAA,EAAG;AACzD,IAAA,GAAA,CAAI,KAAK,OAAO,CAAA;AAChB,IAAA,OAAA,GAAW,OAAA,CAA8C,MAAA;AAAA,EAC7D;AACA,EAAA,OAAO,GAAA;AACX;AAGA,IAAM,wBAAwB,CAAC,CAAA,KAC3B,CAAC,GAAG,IAAI,IAAI,KAAA,CAAM,CAAC,EAAE,OAAA,CAAQ,CAAC,MAAM,IAAA,CAAK,CAAA,CAAE,UAAU,mBAAmB,CAAC,CAAC,CAAC,CAAA;AAG/E,IAAM,mBAAA,GAAsB,CAAC,CAAA,KACzB,KAAA,CAAM,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,KAAM,IAAA,CAAK,EAAE,QAAA,EAAU,cAAc,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,CAAC,CAAA;AAEpF,IAAM,SAAA,GAAY,CAAC,CAAA,KACf,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,EAAU,gBAAgB,IAAI,CAAA,IACrD,oBAAoB,CAAC,CAAA,CAAE,SAAS,CAAA,IAChC,qBAAA,CAAsB,CAAC,CAAA,CAAE,MAAA,GAAS,CAAA;AAO/B,IAAM,mBAAA,GAAwC;AAAA,EACjD,IAAA,EAAM,qBAAA;AAAA,EACN,QAAA,EAAU,IAAA;AAAA,EACV,SAAA,EAAW,CAAC,SAAA,EAAW,QAAA,EAAU,OAAA,KAAY,SAAA,CAAU,SAAS,CAAA,IAAK,CAAC,CAAC,aAAA,CAAc,OAAO,CAAA;AAAA,EAC5F,WAAA,EAAa,CAAC,QAAA,EAAU,SAAA,EAAW,OAAA,KAC/B,aAAA,CAAc,OAAO,CAAA,CAAG,YAAA,EAAa,GAAI,IAAA,GAAO,CAAA,EAAG,UAAU,OAAO,CAAA,gBAAA;AAC5E;AAMO,IAAM,sBAAA,GAA2C;AAAA,EACpD,IAAA,EAAM,wBAAA;AAAA,EACN,QAAA,EAAU,GAAA;AAAA,EACV,SAAA,EAAW,CAAC,SAAA,EAAW,QAAA,EAAU,OAAA,KAC7B,mBAAA,CAAoB,SAAS,CAAA,CAAE,MAAA,GAAS,CAAA,IAAK,CAAC,CAAC,cAAc,OAAO,CAAA;AAAA,EACxE,WAAA,EAAa,CAAC,QAAA,EAAU,SAAA,EAAW,OAAA,KAAY;AAC3C,IAAA,MAAM,IAAA,GAAO,cAAc,OAAO,CAAA;AAClC,IAAA,MAAM,SAAA,GAAY,KAAK,YAAA,EAAa;AACpC,IAAA,IAAI,CAAC,SAAA,EAAW,OAAO,CAAA,EAAG,UAAU,OAAO,CAAA,gBAAA,CAAA;AAC3C,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,GAAG,CAAA,EAAG,OAAO,IAAA;AAC1B,IAAA,KAAA,MAAW,QAAA,IAAY,mBAAA,CAAoB,SAAS,CAAA,EAAG;AACnD,MAAA,MAAM,SAAS,QAAA,CAAS,IAAA,CAAK,CAAC,CAAA,KAAM,UAAU,MAAA,CAAO,IAAA,CAAK,CAAC,EAAA,KAAO,GAAG,WAAA,EAAY,KAAM,CAAA,CAAE,WAAA,EAAa,CAAC,CAAA;AACvG,MAAA,IAAI,CAAC,MAAA,EAAQ,OAAO,CAAA,EAAG,SAAA,CAAU,OAAO,CAAA,qCAAA,EAAwC,QAAA,CAAS,IAAA,CAAK,MAAM,CAAC,CAAA,CAAA,CAAA;AAAA,IACzG;AACA,IAAA,OAAO,IAAA;AAAA,EACX;AACJ;AAMO,IAAM,2BAAA,GAAgD;AAAA,EACzD,IAAA,EAAM,6BAAA;AAAA,EACN,QAAA,EAAU,GAAA;AAAA,EACV,SAAA,EAAW,CAAC,SAAA,EAAW,QAAA,EAAU,OAAA,KAC7B,qBAAA,CAAsB,SAAS,CAAA,CAAE,MAAA,GAAS,CAAA,IAAK,CAAC,CAAC,cAAc,OAAO,CAAA;AAAA,EAC1E,WAAA,EAAa,CAAC,QAAA,EAAU,SAAA,EAAW,OAAA,KAAY;AAC3C,IAAA,MAAM,SAAA,GAAY,aAAA,CAAc,OAAO,CAAA,CAAG,YAAA,EAAa;AACvD,IAAA,IAAI,CAAC,SAAA,EAAW,OAAO,CAAA,EAAG,UAAU,OAAO,CAAA,gBAAA,CAAA;AAC3C,IAAA,MAAM,UAAU,qBAAA,CAAsB,SAAA,CAAU,WAAA,EAAa,qBAAA,CAAsB,SAAS,CAAC,CAAA;AAC7F,IAAA,OAAO,OAAA,CAAQ,MAAA,KAAW,CAAA,GACpB,IAAA,GACA,CAAA,EAAG,SAAA,CAAU,OAAO,CAAA,8BAAA,EAAiC,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,EACjF;AACJ;AAOO,IAAM,uBAAA,GAA8C;AAAA,EACvD,mBAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACJ;;;AChGO,SAAS,iBAAiB,OAAA,EAA0F;AACvH,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,OAAA,EAAS,OAAA,IAAW,EAAC;AAC7C,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,QAAA,EAAU,GAAA,CAAuB,uBAAuB,CAAA;AAChF,EAAA,MAAM,SAAA,GAAY,SAAS,eAAA,IAAkB;AAC7C,EAAA,OAAA,CAAQ,SAAA,GAAY,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,SAAS,CAAA,GAAI,MAAA,KAAc,OAAA,CAAQ,CAAC,CAAA;AAC3F;;;ACVA,SAAS,YAAA,CACL,OAAA,EACA,IAAA,EACA,UAAA,EACA,WAAA,EACI;AACJ,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,GAAG,IAAA,CAAK,GAAA,CAAI,CAAC,CAAC,IAAI,CAAA,KAAM,IAAA,CAAK,MAAM,CAAC,CAAA,GAAI,CAAA;AAC/D,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,KAAK,CAAA,IAAK,IAAA,EAAM;AAC9B,IAAA,OAAA,CAAQ,MAAA,CAAO,OAAA;AAAA,MACX,CAAA,EAAA,EAAK,UAAA,CAAW,IAAA,CAAK,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA,EAAG,WAAA,CAAY,KAAK,CAAC,CAAA;AAAA,KAC5D;AAAA,EACJ;AACJ;AAGO,SAAS,UAAA,CACZ,SACA,IAAA,EACI;AACJ,EAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAW,GAAI,OAAA;AAC/B,EAAA,MAAA,CAAO,QAAQ,CAAA,UAAA,EAAM,UAAA,CAAW,EAAE,kBAAA,EAAoB,QAAQ,CAAC,CAAA,CAAE,CAAA;AACjE,EAAA,YAAA;AAAA,IACI,OAAA;AAAA,IACA,IAAA;AAAA,IACA,CAAC,GAAA,KAAQ,MAAA,CAAO,WAAA,CAAY,GAAA,EAAA,UAAA,YAA4B;AAAA,IACxD,CAAC,IAAA,KAAS;AAAA,GACd;AACJ;AAGO,SAAS,aAAA,CACZ,SACA,IAAA,EACI;AACJ,EAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAW,GAAI,OAAA;AAC/B,EAAA,MAAA,CAAO,QAAQ,CAAA,UAAA,EAAM,UAAA,CAAW,EAAE,qBAAA,EAAuB,WAAW,CAAC,CAAA,CAAE,CAAA;AACvE,EAAA,YAAA;AAAA,IACI,OAAA;AAAA,IACA,IAAA;AAAA,IACA,CAAC,GAAA,KAAQ,GAAA;AAAA,IACT,CAAC,OAAA,KACG,MAAA,CAAO,WAAA,CAAY,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA,EAAA,UAAA;AAA4B,GACnE;AACJ;AAMO,SAAS,YAAA,CACZ,OAAA,EACA,IAAA,EACA,MAAA,GAAS,CAAA,EACL;AACJ,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,QAAA,EAAU,IAAA,IAAQ,EAAA;AACvC,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,IAAI,IAAA,GAAO,CAAA,EAAG,GAAG,CAAA,GAAI,MAAM,CAAA;AAC3D,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,MAAA,CAAO,MAAM,CAAA;AAC7B,EAAA,IAAI,IAAA,GAAO,EAAA;AACX,EAAA,KAAA,MAAW,QAAQ,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,CAAE,MAAA,CAAO,OAAO,CAAA,EAAG;AAClD,IAAA,IAAI,IAAA,IAAQC,eAAc,IAAI,CAAA,GAAI,IAAIA,cAAAA,CAAc,IAAI,IAAI,KAAA,EAAO;AAC/D,MAAA,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,GAAA,GAAM,IAAI,CAAA;AACjC,MAAA,IAAA,GAAO,IAAA;AAAA,IACX,CAAA,MAAO;AACH,MAAA,IAAA,GAAO,IAAA,GAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,GAAK,IAAA;AAAA,IACtC;AAAA,EACJ;AACA,EAAA,IAAI,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,OAAA,CAAQ,MAAM,IAAI,CAAA;AAC/C;AAEA,SAASA,eAAc,IAAA,EAAsB;AACzC,EAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,iBAAA,EAAmB,EAAE,CAAA,CAAE,MAAA;AAC/C;AAGO,SAAS,SAAA,CACZ,OAAA,EACA,OAAA,EACA,MAAA,EACI;AACJ,EAAA,MAAM,EAAE,MAAA,EAAQ,UAAA,EAAW,GAAI,OAAA;AAC/B,EAAA,MAAM,IAAA,GAAO,CAAA,UAAA,EAAM,UAAA,CAAW,CAAA,CAAE,uBAAuB,wBAAA,EAA0B;AAAA,IAC7E,OAAA,EAAS,MAAA,CAAO,WAAA,CAAY,OAAA,EAAA,UAAA,YAAgC;AAAA,IAC5D;AAAA,GACH,CAAC,CAAA,CAAA;AAEF,EAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,CAAA,CAAK,OAAA,CAAQ,UAAU,IAAA,IAAQ,EAAA,IAAM,CAAA,EAAG,GAAG,CAAA,GAAI,CAAA;AAClE,EAAA,IAAIA,cAAAA,CAAc,IAAI,CAAA,GAAI,CAAA,IAAK,KAAA,EAAO;AAClC,IAAA,MAAA,CAAO,UAAU,IAAI,CAAA;AACrB,IAAA;AAAA,EACJ;AAEA,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,IAAI,IAAA,GAAO,EAAA;AACX,EAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,EAAG;AAChC,IAAA,IAAI,IAAA,IAAQA,eAAc,IAAI,CAAA,GAAI,IAAIA,cAAAA,CAAc,IAAI,IAAI,KAAA,EAAO;AAC/D,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,MAAA,IAAA,GAAO,IAAA;AAAA,IACX,CAAA,MAAO;AACH,MAAA,IAAA,GAAO,IAAA,GAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,GAAK,IAAA;AAAA,IACtC;AAAA,EACJ;AACA,EAAA,IAAI,IAAA,EAAM,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AACzB,EAAA,MAAA,CAAO,SAAA,CAAU,KAAA,CAAM,CAAC,CAAC,CAAA;AACzB,EAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,EAAG;AAC/B,IAAA,MAAA,CAAO,OAAA,CAAQ,CAAA,GAAA,EAAM,IAAI,CAAA,CAAE,CAAA;AAAA,EAC/B;AACJ;;;AC7GO,SAAS,mBAAmB,IAAA,EAAsB;AACrD,EAAA,MAAM,KAAA,GAAQ,KAAK,IAAA,EAAK;AACxB,EAAA,IAAI,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,OAAO,KAAA;AAC7B,EAAA,MAAM,KAAA,GAAQ,MAAM,CAAC,CAAA;AACrB,EAAA,IAAI,UAAU,GAAA,EAAK;AACf,IAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,GAAA,EAAK,CAAC,CAAA,KAAM,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAI,KAAA;AAAA,EAC7E;AACA,EAAA,IAAI,UAAU,GAAA,EAAK;AACf,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAAK;AACnC,MAAA,IAAI,KAAA,CAAM,CAAC,CAAA,KAAM,IAAA,EAAM,CAAA,EAAA;AAAA,WAAA,IACd,KAAA,CAAM,CAAC,CAAA,KAAM,GAAA,EAAK;AACvB,QAAA,OAAO,CAAA,KAAM,KAAA,CAAM,MAAA,GAAS,CAAA,GACtB,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,CAAE,OAAA,CAAQ,cAAA,EAAgB,IAAI,CAAA,GAC/C,KAAA;AAAA,MACV;AAAA,IACJ;AAAA,EACJ;AACA,EAAA,OAAO,KAAA;AACX;;;ACPO,IAAM,iBAAA,GAAoB,CAC7B,CAAA,EACA,IAAA,KACU;AACV,EAAA,IAAI,IAAA,CAAK,CAAA,CAAE,IAAI,CAAA,KAAM,MAAA,EAAW;AAC5B,IAAA,OAAO,IAAA,CAAK,EAAE,IAAI,CAAA;AAAA,EACtB;AACA,EAAA,MAAM,YAAA,GAAe,EAAE,OAAA,EAAS,IAAA,CAAK,CAAC,KAAA,KAAU,IAAA,CAAK,KAAK,CAAA,KAAM,MAAS,CAAA;AACzE,EAAA,OAAO,YAAA,GAAe,IAAA,CAAK,YAAY,CAAA,GAAI,MAAA;AAC/C;AAOO,IAAM,UAAA,GAAa,CAAC,IAAA,KAAsB;AAC7C,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM,MAAM,CAAC,CAAA;AAEhD,EAAA,OAAO,aAAa,WAAA,CAAY,KAAA,CAAM,IAAI,CAAA,CAAE,IAAA,CAAK,MAAM,CAAC,CAAA;AAC5D;AAQO,IAAM,YAAA,GAAe,CAAC,UAAA,KAA+B;AACxD,EAAA,MAAM,GAAA,GAAM,SAAA;AACZ,EAAA,MAAM,GAAA,GAAM,UAAA;AACZ,EAAA,MAAM,GAAA,GAAM,UAAA;AACZ,EAAA,MAAM,GAAA,GAAM,UAAA;AACZ,EAAA,MAAM,GAAA,GAAM,UAAA;AAEZ,EAAA,MAAM,OAAA,GACF,0GAAA;AAEJ,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,IAAI,SAAA,GAAY,CAAA;AAChB,EAAA,IAAI,CAAA;AAEJ,EAAA,OAAA,CAAQ,CAAA,GAAI,OAAA,CAAQ,IAAA,CAAK,UAAU,OAAO,IAAA,EAAM;AAC5C,IAAA,IAAI,CAAA,CAAE,QAAQ,SAAA,EAAW;AACrB,MAAA,MAAA,IAAU,UAAA,CAAW,KAAA,CAAM,SAAA,EAAW,CAAA,CAAE,KAAK,CAAA;AAAA,IACjD;AAEA,IAAA,IAAI,CAAA,CAAE,CAAC,CAAA,KAAM,MAAA,EAAW;AACpB,MAAA,IAAI,CAAA,CAAE,CAAC,CAAA,KAAM,MAAA,EAAW;AACpB,QAAA,MAAA,IAAU,MAAM,CAAA,CAAE,CAAC,CAAA,GAAI,GAAA,GAAM,EAAE,CAAC,CAAA;AAAA,MACpC,CAAA,MAAO;AACH,QAAA,MAAA,IAAU,GAAA,GAAM,CAAA,CAAE,CAAC,CAAA,GAAI,GAAA;AAAA,MAC3B;AAAA,IACJ,CAAA,MAAA,IAAW,CAAA,CAAE,CAAC,CAAA,KAAM,MAAA,EAAW;AAC3B,MAAA,MAAA,IAAU,GAAA,GAAM,CAAA,CAAE,CAAC,CAAA,GAAI,GAAA;AAAA,IAC3B,CAAA,MAAA,IAAW,CAAA,CAAE,CAAC,CAAA,KAAM,MAAA,EAAW;AAC3B,MAAA,MAAA,IAAU,GAAA,GAAM,CAAA,CAAE,CAAC,CAAA,GAAI,GAAA;AAAA,IAC3B,CAAA,MAAA,IAAW,CAAA,CAAE,CAAC,CAAA,KAAM,MAAA,EAAW;AAC3B,MAAA,MAAA,IAAU,GAAA,GAAM,CAAA,CAAE,CAAC,CAAA,GAAI,GAAA;AAAA,IAC3B;AAEA,IAAA,SAAA,GAAY,CAAA,CAAE,KAAA,GAAQ,CAAA,CAAE,CAAC,CAAA,CAAE,MAAA;AAAA,EAC/B;AAEA,EAAA,IAAI,SAAA,GAAY,WAAW,MAAA,EAAQ;AAC/B,IAAA,MAAA,IAAU,UAAA,CAAW,MAAM,SAAS,CAAA;AAAA,EACxC;AAEA,EAAA,OAAO,MAAA;AACX;AAOO,IAAM,aAAA,GAAgB,CAAC,MAAA,KAAwC;AAClE,EAAA,MAAM,YAAA,GAAe,IAAI,eAAA,EAAgB;AAEzC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AAC/C,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACtB,MAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,YAAA,CAAa,OAAO,GAAA,EAAK,CAAA,CAAE,QAAA,EAAU,CAAC,CAAA;AAAA,IAC/D,CAAA,MAAA,IAAW,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW;AAC9C,MAAA,YAAA,CAAa,MAAA,CAAO,GAAA,EAAK,KAAA,CAAM,QAAA,EAAU,CAAA;AAAA,IAC7C;AAAA,EACJ;AAEA,EAAA,OAAO,aAAa,QAAA,EAAS;AACjC;AASO,IAAM,mBAAA,GAAsB,CAC/B,IAAA,EACA,OAAA,EACA,OAAA,GAAA,UAAA,kBACS;AAET,EAAA,OAAO,IAAA,CAAK,OAAA;AAAA,IACR,OAAA;AAAA,IACA,CAAC,KAAA,KAAU,CAAA,EAAG,OAAO,CAAA,EAAG,KAAK,CAAA,EAAA,SAAA,aAA2B;AAAA,GAC5D;AACJ;AAQO,IAAM,cAAA,GAAiB,CAC1B,OAAA,EACA,IAAA,KACqB;AAErB,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,OAAA,CAAQ,IAAI,CAAA;AAGlC,EAAA,IAAI,UAAU,EAAA,EAAI;AACd,IAAA,OAAO,QAAQ,KAAA,CAAM,KAAA,GAAQ,IAAA,CAAK,MAAM,EAAE,IAAA,EAAK;AAAA,EACnD;AAGA,EAAA,OAAO,MAAA;AACX;AAQO,IAAM,cAAA,GAAiB,CAC1B,IAAA,EACA,aAAA,KACC;AACD,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAGlB,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,kBAAkB,CAAA;AAE3C,EAAA,IAAI,CAAC,OAAO,OAAO,IAAA;AAEnB,EAAA,MAAM,GAAG,aAAA,EAAe,SAAA,EAAW,UAAU,CAAA,GAAI,KAAA;AAGjD,EAAA,MAAM,gBAAA,GAAmB,cAAc,SAAS,CAAA;AAGhD,EAAA,OAAO,CAAA,EAAG,aAAa,CAAA,EAAG,gBAAgB,GAAG,UAAU,CAAA,CAAA;AAC3D;AAsBO,IAAM,KAAA,GAAQ;AAAA,EACjB,iBAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,mBAAA;AAAA,EACA,cAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,KAAA;AAAA,EACA,cAAA;AAAA,EACA,oBAAA;AAAA,EACA,8BAAA;AAAA,EACA;AACJ;;;ACrMO,IAAM,oBAAN,MAAwB;AAAA,EAAxB,WAAA,GAAA;AACH,IAAA,IAAA,CAAiB,OAAA,uBAAc,GAAA,EAAwB;AACvD,IAAA,IAAA,CAAiB,eACb,EAAC;AACL,IAAA,IAAA,CAAiB,qBAAuD,EAAC;AAEzE;AAAA,IAAA,IAAA,CAAiB,QAAA,uBAAe,GAAA,EAAmB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAQnD,aAAa,OAAA,EAAsD;AAC/D,IAAA,IAAA,CAAK,YAAA,CAAa,KAAK,OAAO,CAAA;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,MAAA,EAAmC;AACxC,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,gBAAA,CAAiB,MAAM,CAAA;AACjD,IAAA,IAAA,CAAK,QAAA,CAAS,IAAI,YAAY,CAAA;AAC9B,IAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,QAAA,CAAS,OAAO,YAAY,CAAA;AACpD,IAAA,YAAA,CAAa,IAAA,CAAK,MAAM,IAAI,CAAA;AAC5B,IAAA,OAAO,YAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QAAA,GAA0B;AAC5B,IAAA,OAAO,IAAA,CAAK,QAAA,CAAS,IAAA,GAAO,CAAA,EAAG;AAC3B,MAAA,MAAM,QAAQ,UAAA,CAAW,CAAC,GAAG,IAAA,CAAK,QAAQ,CAAC,CAAA;AAAA,IAC/C;AAAA,EACJ;AAAA,EAEA,MAAc,iBAAiB,MAAA,EAAmC;AAC9D,IAAA,MAAM,gBAAgB,MAAA,CAAO,UAAA;AAC7B,IAAA,IAAI,OAAO,aAAA,KAAkB,QAAA,IAAY,aAAA,GAAgB,WAAA,EAAa;AAClE,MAAA,MAAM,GAAA,GACF,iBAAiB,MAAA,CAAO,IAAI,yBAAyB,aAAA,IAAiB,SAAS,2CACtC,WAAW,CAAA,WAAA,CAAA;AACxD,MAAA,IAAI,KAAK,MAAA,EAAQ;AACb,QAAA,IAAA,CAAK,OAAO,GAAG,CAAA;AAAA,MACnB,CAAA,MAAO;AACH,QAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,MACpB;AACA,MAAA;AAAA,IACJ;AACA,IAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,IAAA,EAAM,MAAM,CAAA;AACpC,IAAA,KAAA,MAAW,OAAA,IAAW,KAAK,YAAA,EAAc;AACrC,MAAA,IAAI;AACA,QAAA,MAAM,QAAQ,MAAM,CAAA;AAAA,MACxB,SAAS,CAAA,EAAG;AACR,QAAA,MAAM,GAAA,GAAM,yCAAyC,MAAA,CAAO,IAAI,MAAM,CAAA,YAAa,KAAA,GAAQ,CAAA,CAAE,OAAA,GAAU,CAAC,CAAA,CAAA;AACxG,QAAA,IAAI,KAAK,MAAA,EAAQ;AACb,UAAA,IAAA,CAAK,OAAO,GAAG,CAAA;AAAA,QACnB,CAAA,MAAO;AACH,UAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,QACpB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,mBAAmB,OAAA,EAA6C;AAC5D,IAAA,IAAA,CAAK,kBAAA,CAAmB,KAAK,OAAO,CAAA;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,WAAW,IAAA,EAAsC;AAC7C,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA;AACpC,IAAA,IAAI,CAAC,QAAQ,OAAO,MAAA;AACpB,IAAA,IAAA,CAAK,OAAA,CAAQ,OAAO,IAAI,CAAA;AACxB,IAAA,KAAA,MAAW,OAAA,IAAW,KAAK,kBAAA,EAAoB;AAC3C,MAAA,IAAI;AACA,QAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,MAClB,SAAS,CAAA,EAAG;AACR,QAAA,MAAM,GAAA,GAAM,+CAA+C,IAAI,CAAA,GAAA,EAAM,aAAa,KAAA,GAAQ,CAAA,CAAE,UAAU,CAAC,CAAA,CAAA;AACvG,QAAA,IAAI,KAAK,MAAA,EAAQ;AACb,UAAA,IAAA,CAAK,OAAO,GAAG,CAAA;AAAA,QACnB,CAAA,MAAO;AACH,UAAA,OAAA,CAAQ,KAAK,GAAG,CAAA;AAAA,QACpB;AAAA,MACJ;AAAA,IACJ;AACA,IAAA,OAAO,MAAA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,IAAA,EAAsC;AAC5C,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA,GAAuB;AACnB,IAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,MAAA,EAA0B;AAC5B,IAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,IAAA,EAAM,MAAM,CAAA;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,IAAA,EAAuB;AACvB,IAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA;AAAA,EAChC;AACJ;;;ACrIO,IAAM,+BAA+B,CAAC;AAAA,EACzC,OAAA;AAAA,EACA;AACJ,CAAA,KAGY;AAER,EAAC,OAAe,mBAAA,GAAsB,QAAA;AAGtC,EAAC,OAAe,OAAA,GAAU;AAAA,IACtB,GAAG,SAAA;AAAA,IACH,GAAG,KAAA;AAAA,IACH,GAAG,KAAA;AAAA,IACH;AAAA,GACJ;AAGA,EAAA,MAAA,CAAO,cAAA,CAAe,QAAQ,QAAA,EAAU;AAAA,IACpC,YAAA,EAAc,IAAA;AAAA,IACd,GAAA,GAAM;AACF,MAAA,OAAA,CAAQ,IAAA;AAAA,QACJ;AAAA,OAEJ;AACA,MAAA,OAAO,EAAE,UAAA,EAAY,MAAM,MAAM;AAAA,MAAC,CAAA,EAAE;AAAA,IACxC;AAAA,GACH,CAAA;AACL;AAMO,IAAM,aAAA,GAAgB,OAAO,MAAA,KAAsC;AACtE,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAgB,MAAA,CAAe,mBAAA,EAAqB;AACtE,IAAA,MAAO,MAAA,CAAe,mBAAA,CAAoB,QAAA,CAAS,MAAM,CAAA;AAAA,EAC7D;AACJ;;;AC9CO,IAAM,0BAAA,GAA6B;AAkBnC,IAAM,qBAAN,MAA4B;AAAA,EAK/B,YACY,QAAA,EAIV;AAJU,IAAA,IAAA,CAAA,QAAA,GAAA,QAAA;AALZ,IAAA,IAAA,CAAQ,YAAA,GAAe,KAAA;AAEvB,IAAA,IAAA,CAAQ,eAAA,GAAkB,IAAI,eAAA,EAAgB;AAAA,EAO3C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMI,OAAA,GAAsB;AACzB,IAAA,OAAO,IAAI,OAAA,CAAW,CAAC,OAAA,EAAS,MAAA,KAAW;AACvC,MAAA,IAAA,CAAK,eAAA,CAAgB,MAAA,CAAO,OAAA,GAAU,MAAM;AACxC,QAAA,MAAA,CAAO,IAAI,KAAA,CAAM,0BAA0B,CAAC,CAAA;AAAA,MAChD,CAAA;AAEA,MAAA,IAAA,CAAK,QAAA;AAAA,QACD,CAAC,KAAA,KAAU;AACP,UAAA,IAAI,CAAC,KAAK,YAAA,EAAc;AACpB,YAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,UACjB;AAAA,QACJ,CAAA;AAAA,QACA,CAAC,MAAA,KAAW;AACR,UAAA,IAAI,CAAC,KAAK,YAAA,EAAc;AACpB,YAAA,MAAA,CAAO,MAAM,CAAA;AAAA,UACjB;AAAA,QACJ;AAAA,OACJ;AAAA,IACJ,CAAC,CAAA;AAAA,EACL;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAA,GAAS;AACL,IAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AACpB,IAAA,IAAA,CAAK,gBAAgB,KAAA,EAAM;AAAA,EAC/B;AACJ;;;AC7DO,IAAM,iBAAA,GAAkD;AAAA,EAC3D,OAAA,EAAS;AAAA,IACL,OAAO,aAAA,CAAc,OAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,UAAU,CAAA;AAAA,IACjB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,KAAA,EAAO;AAAA,IACH,OAAO,aAAA,CAAc,KAAA;AAAA,IACrB,QAAA,EAAU,OAAA;AAAA,IACV,IAAA,EAAM,CAAC,UAAU,CAAA;AAAA,IACjB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACL,OAAO,aAAA,CAAc,OAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,UAAU,CAAA;AAAA,IACjB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACL,OAAO,aAAA,CAAc,OAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACL,OAAO,aAAA,CAAc,OAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,aAAA,EAAe;AAAA,IACX,OAAO,aAAA,CAAc,aAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,cAAA,EAAgB;AAAA,IACZ,OAAO,aAAA,CAAc,cAAA;AAAA,IACrB,QAAA,EAAU,OAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,WAAA,EAAa;AAAA,IACT,OAAO,aAAA,CAAc,WAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,YAAA,EAAc;AAAA,IACV,OAAO,aAAA,CAAc,YAAA;AAAA,IACrB,QAAA,EAAU,OAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,IAAA,EAAM;AAAA,IACF,OAAO,aAAA,CAAc,IAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACL,OAAO,aAAA,CAAc,OAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,QAAA,EAAU;AAAA,IACN,OAAO,aAAA,CAAc,QAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,iBAAA,EAAmB;AAAA,IACf,OAAO,aAAA,CAAc,iBAAA;AAAA,IACrB,QAAA,EAAU,OAAA;AAAA,IACV,IAAA,EAAM,CAAC,eAAe,CAAA;AAAA,IACtB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,UAAA,EAAY;AAAA,IACR,OAAO,aAAA,CAAc,UAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,eAAA,EAAiB;AAAA,IACb,OAAO,aAAA,CAAc,eAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAA,EAAW,QAAQ,CAAA;AAAA,IAC1B,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,gBAAA,EAAkB;AAAA,IACd,OAAO,aAAA,CAAc,gBAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAA,EAAW,QAAQ,CAAA;AAAA,IAC1B,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,eAAA,EAAiB;AAAA,IACb,OAAO,aAAA,CAAc,eAAA;AAAA,IACrB,QAAA,EAAU,OAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAA,EAAW,QAAQ,CAAA;AAAA,IAC1B,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,QAAA,EAAU;AAAA,IACN,OAAO,aAAA,CAAc,QAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,YAAA,EAAc;AAAA,IACV,OAAO,aAAA,CAAc,YAAA;AAAA,IACrB,QAAA,EAAU,OAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,QAAA,EAAU;AAAA,IACN,OAAO,aAAA,CAAc,QAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,cAAA,EAAgB;AAAA,IACZ,OAAO,aAAA,CAAc,cAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,eAAA,EAAiB;AAAA,IACb,OAAO,aAAA,CAAc,eAAA;AAAA,IACrB,QAAA,EAAU,OAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,OAAA,EAAS;AAAA,IACL,OAAO,aAAA,CAAc,OAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,WAAA,EAAa;AAAA,IACT,OAAO,aAAA,CAAc,WAAA;AAAA,IACrB,QAAA,EAAU,OAAA;AAAA,IACV,IAAA,EAAM,CAAC,SAAS,CAAA;AAAA,IAChB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,SAAA,EAAW;AAAA,IACP,OAAO,aAAA,CAAc,SAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,OAAA,EAAS,KAAK,CAAA;AAAA,IACrB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,UAAA,EAAY;AAAA,IACR,OAAO,aAAA,CAAc,UAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,OAAA,EAAS,KAAK,CAAA;AAAA,IACrB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,UAAA,EAAY;AAAA,IACR,OAAO,aAAA,CAAc,UAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,OAAA,EAAS,KAAK,CAAA;AAAA,IACrB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,MAAA,EAAQ;AAAA,IACJ,OAAO,aAAA,CAAc,MAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,OAAA,EAAS,KAAK,CAAA;AAAA,IACrB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,SAAA,EAAW;AAAA,IACP,OAAO,aAAA,CAAc,SAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,OAAA,EAAS,KAAK,CAAA;AAAA,IACrB,WAAA,EAAa;AAAA,GACjB;AAAA,EACA,gBAAA,EAAkB;AAAA,IACd,OAAO,aAAA,CAAc,gBAAA;AAAA,IACrB,QAAA,EAAU,MAAA;AAAA,IACV,IAAA,EAAM,CAAC,eAAe,CAAA;AAAA,IACtB,WAAA,EAAa;AAAA;AAErB;;;AC3JO,SAAS,oBAAoB,QAAA,EAG3B;AACL,EAAA,MAAM,eAAA,GAAkB,IAAI,eAAA,EAAgB;AAC5C,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAuB;AAE1C,EAAA,SAAS,KAAK,GAAA,EAAqC;AAC/C,IAAC,IAAA,CAAwD,YAAY,GAAG,CAAA;AAAA,EAC5E;AAEA,EAAA,MAAM,GAAA,GAA4B;AAAA,IAC9B,QAAQ,eAAA,CAAgB,MAAA;AAAA,IAExB,KAAK,KAAA,EAAO;AACR,MAAA,IAAA,CAAK,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,CAAA;AAAA,IACjC,CAAA;AAAA,IAEA,GAAA,CAAI,OAAA,EAAS,KAAA,GAAQ,MAAA,EAAQ;AACzB,MAAA,IAAA,CAAK,EAAE,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,SAAS,CAAA;AAAA,IACxC,CAAA;AAAA,IAEA,YAAY,KAAA,EAAO;AACf,MAAA,IAAA,CAAK,EAAE,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,CAAA;AAAA,IACxC,CAAA;AAAA,IAEA,cAAA,CAAe,UAAU,EAAA,EAAI;AACzB,MAAA,IAAI,OAAA,GAAU,WAAA,CAAY,QAAA,EAAU,EAAE,CAAA;AACtC,MAAA,MAAM,MAAA,GAA8B;AAAA,QAChC,KAAA,GAAQ;AACJ,UAAA,aAAA,CAAc,OAAO,CAAA;AACrB,UAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA,QACxB,CAAA;AAAA,QACA,SAAS,KAAA,EAAO;AACZ,UAAA,aAAA,CAAc,OAAO,CAAA;AACrB,UAAA,OAAA,GAAU,WAAA,CAAY,UAAU,KAAK,CAAA;AAAA,QACzC;AAAA,OACJ;AACA,MAAA,MAAA,CAAO,IAAI,MAAM,CAAA;AACjB,MAAA,OAAO,MAAA;AAAA,IACX,CAAA;AAAA,IAEA,aAAA,CAAc,UAAU,EAAA,EAAI;AACxB,MAAA,MAAM,OAAA,GAAU,WAAW,MAAM;AAC7B,QAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AACpB,QAAA,QAAA,EAAS;AAAA,MACb,GAAG,EAAE,CAAA;AACL,MAAA,MAAM,MAAA,GAA2B;AAAA,QAC7B,KAAA,GAAQ;AACJ,UAAA,YAAA,CAAa,OAAO,CAAA;AACpB,UAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA,QACxB;AAAA,OACJ;AACA,MAAA,MAAA,CAAO,IAAI,MAAM,CAAA;AACjB,MAAA,OAAO,MAAA;AAAA,IACX;AAAA,GACJ;AAEA,EAAA,SAAS,cAAA,GAAuB;AAC5B,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AACxB,MAAA,KAAA,CAAM,KAAA,EAAM;AAAA,IAChB;AACA,IAAA,MAAA,CAAO,KAAA,EAAM;AAAA,EACjB;AAEA,EAAC,IAAA,CAAuE,SAAA,GACpE,OAAO,EAAA,KAA8C;AACjD,IAAA,MAAM,MAAM,EAAA,CAAG,IAAA;AAEf,IAAA,QAAQ,IAAI,IAAA;AAAM,MACd,KAAK,OAAA;AACD,QAAA,IAAI;AACA,UAAA,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAQ,WAAW,CAAA;AAC1C,UAAA,MAAM,QAAA,CAAS,QAAQ,GAAG,CAAA;AAAA,QAC9B,SAAS,CAAA,EAAG;AACR,UAAA,MAAM,KAAA,GAAQ,aAAa,KAAA,GAAQ,CAAA,GAAI,IAAI,KAAA,CAAM,MAAA,CAAO,CAAC,CAAC,CAAA;AAC1D,UAAA,IAAA,CAAK,EAAE,MAAM,OAAA,EAAS,OAAA,EAAS,MAAM,OAAA,EAAS,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,CAAA;AAAA,QACtE;AACA,QAAA;AAAA,MAEJ,KAAK,MAAA;AACD,QAAA,cAAA,EAAe;AACf,QAAA,eAAA,CAAgB,KAAA,EAAM;AACtB,QAAA,IAAI,SAAS,MAAA,EAAQ;AACjB,UAAA,MAAM,SAAS,MAAA,EAAO;AAAA,QAC1B;AACA,QAAA,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAQ,WAAW,CAAA;AAC1C,QAAA;AAAA,MAEJ,KAAK,OAAA;AACD,QAAA,cAAA,EAAe;AACf,QAAA,eAAA,CAAgB,KAAA,EAAM;AACtB,QAAA,IAAA,CAAK,EAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAQ,WAAW,CAAA;AAC1C,QAAA;AAAA;AACR,EACJ,CAAA;AACR;;;AChHO,IAAM,6BAAN,MAAoE;AAAA,EACvE,MAAM,SAAS,KAAA,EAAuC;AAClD,IAAA,OAAO,KAAK,SAAA,EAAU,CAAE,KAAK,CAAA,CAAA,KAAK,CAAA,EAAG,WAAW,IAAI,CAAA;AAAA,EACxD;AAAA,EAEA,MAAM,SAAA,CAAU,IAAA,EAAc,OAAA,EAAgC;AAC1D,IAAA,MAAM,WAAW,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,KAAI,IAAK,UAAA;AAC1C,IAAA,IAAA,CAAK,iBAAA,CAAkB,UAAU,OAAO,CAAA;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,UAAU,KAAA,EAAyC;AACrD,IAAA,OAAO,EAAC;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAO,KAAA,EAAiC;AAC1C,IAAA,OAAO,KAAA;AAAA,EACX;AAAA,EAEA,iBAAA,CAAkB,UAAkB,OAAA,EAA8B;AAC9D,IAAA,MAAM,IAAA,GAAO,OAAA,YAAmB,IAAA,GAAO,OAAA,GAAU,IAAI,IAAA,CAAK,CAAC,OAAO,CAAA,EAAG,EAAE,IAAA,EAAM,0BAAA,EAA4B,CAAA;AACzG,IAAA,MAAM,GAAA,GAAM,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AACpC,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACpC,IAAA,CAAA,CAAE,IAAA,GAAO,GAAA;AACT,IAAA,CAAA,CAAE,QAAA,GAAW,QAAA;AACb,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,CAAC,CAAA;AAC3B,IAAA,CAAA,CAAE,KAAA,EAAM;AACR,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,CAAC,CAAA;AAC3B,IAAA,GAAA,CAAI,gBAAgB,GAAG,CAAA;AAAA,EAC3B;AAAA,EAEA,MAAM,kBAAkB,MAAA,EAAoE;AACxF,IAAA,OAAO,IAAA,CAAK,UAAU,MAAM,CAAA;AAAA,EAChC;AAAA,EAEQ,UAAU,MAAA,EAAoE;AAClF,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KAAY;AAC5B,MAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,aAAA,CAAc,OAAO,CAAA;AAC5C,MAAA,KAAA,CAAM,IAAA,GAAO,MAAA;AACb,MAAA,IAAI,MAAA,EAAQ;AACR,QAAA,KAAA,CAAM,MAAA,GAAS,MAAA;AAAA,MACnB;AACA,MAAA,KAAA,CAAM,WAAW,MAAM;AACnB,QAAA,MAAM,IAAA,GAAO,KAAA,CAAM,KAAA,GAAQ,CAAC,CAAA;AAC5B,QAAA,IAAI,CAAC,IAAA,EAAM;AACP,UAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,UAAA;AAAA,QACJ;AACA,QAAA,MAAM,MAAA,GAAS,IAAI,UAAA,EAAW;AAC9B,QAAA,MAAA,CAAO,SAAS,MAAM;AAClB,UAAA,OAAA,CAAQ,EAAE,IAAA,EAAM,IAAA,CAAK,MAAM,OAAA,EAAS,MAAA,CAAO,QAAkB,CAAA;AAAA,QACjE,CAAA;AACA,QAAA,MAAA,CAAO,OAAA,GAAU,MAAM,OAAA,CAAQ,IAAI,CAAA;AACnC,QAAA,MAAA,CAAO,WAAW,IAAI,CAAA;AAAA,MAC1B,CAAA;AACA,MAAA,KAAA,CAAM,QAAA,GAAW,MAAM,OAAA,CAAQ,IAAI,CAAA;AACnC,MAAA,KAAA,CAAM,KAAA,EAAM;AAAA,IAChB,CAAC,CAAA;AAAA,EACL;AACJ","file":"public-api.mjs","sourcesContent":["'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","'use strict'\n\nconst debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","'use strict'\n\nconst {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numeric identifiers include numeric identifiers but can be longer.\n// Therefore non-numeric identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifier, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n if (typeof a === 'number' && typeof b === 'number') {\n return a === b ? 0 : a < b ? -1 : 1\n }\n\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\n\nconst isPrereleaseIdentifier = (prerelease, identifier) => {\n const identifiers = identifier.split('.')\n if (identifiers.length > prerelease.length) {\n return false\n }\n\n for (let i = 0; i < identifiers.length; i++) {\n if (compareIdentifiers(prerelease[i], identifiers[i]) !== 0) {\n return false\n }\n }\n\n return true\n}\n\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n if (this.major < other.major) {\n return -1\n }\n if (this.major > other.major) {\n return 1\n }\n if (this.minor < other.minor) {\n return -1\n }\n if (this.minor > other.minor) {\n return 1\n }\n if (this.patch < other.patch) {\n return -1\n }\n if (this.patch > other.patch) {\n return 1\n }\n return 0\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (isPrereleaseIdentifier(this.prerelease, identifier)) {\n const prereleaseBase = this.prerelease[identifier.split('.').length]\n if (isNaN(prereleaseBase)) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are prereleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","'use strict'\n\nconst parse = require('./parse')\nconst constants = require('../internal/constants')\nconst SemVer = require('../classes/semver')\n\nconst truncate = (version, truncation, options) => {\n if (!constants.RELEASE_TYPES.includes(truncation)) {\n return null\n }\n\n const clonedVersion = cloneInputVersion(version, options)\n return clonedVersion && doTruncation(clonedVersion, truncation)\n}\n\nconst cloneInputVersion = (version, options) => {\n const versionStringToParse = (\n version instanceof SemVer ? version.version : version\n )\n\n return parse(versionStringToParse, options)\n}\n\nconst doTruncation = (version, truncation) => {\n if (isPrerelease(truncation)) {\n return version.version\n }\n\n version.prerelease = []\n\n switch (truncation) {\n case 'major':\n version.minor = 0\n version.patch = 0\n break\n case 'minor':\n version.patch = 0\n break\n }\n\n return version.format()\n}\n\nconst isPrerelease = (type) => {\n return type.startsWith('pre')\n}\n\nmodule.exports = truncate\n","'use strict'\n\nclass LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // strip build metadata so it can't bleed into the version\n range = range.replace(BUILDSTRIPRE, '')\n\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n src,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\n// unbounded global build-metadata stripper used by parseRange\nconst BUILDSTRIPRE = new RegExp(src[t.BUILD], 'g')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n comp = comp.replace(re[t.BUILD], '')\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\nconst invalidXRangeOrder = (M, m, p) => (\n (isX(M) && !isX(m)) ||\n (isX(m) && p && !isX(p))\n)\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n // if we're including prereleases in the match, then the lower bound is\n // -0, the lowest possible prerelease value, just like x-ranges and carets.\n // this keeps `~1.2` equivalent to the `1.2.x` x-range it's documented as.\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n if (invalidXRangeOrder(M, m, p)) {\n return comp\n }\n\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If LT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !c.test(gt.semver)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !c.test(lt.semver)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst truncate = require('./functions/truncate')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n truncate,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","export enum CliForegroundColor {\n Black = '\\x1b[30m',\n Red = '\\x1b[31m',\n Green = '\\x1b[32m',\n Yellow = '\\x1b[33m',\n Blue = '\\x1b[34m',\n Magenta = '\\x1b[35m',\n Cyan = '\\x1b[36m',\n White = '\\x1b[37m',\n Reset = '\\x1b[0m',\n}\n\nexport enum CliBackgroundColor {\n Black = '\\x1b[40m',\n Red = '\\x1b[41m',\n Green = '\\x1b[42m',\n Yellow = '\\x1b[43m',\n Blue = '\\x1b[44m',\n Magenta = '\\x1b[45m',\n Cyan = '\\x1b[46m',\n White = '\\x1b[47m',\n}\n","/* eslint-disable @typescript-eslint/no-duplicate-enum-values -- several icons intentionally share a glyph */\nexport enum CliIcon {\n // General Symbols\n CheckIcon = '✔', // Success, completion\n CrossIcon = '✘', // Failure, error\n InfoIcon = 'ℹ', // Information\n WarningIcon = '⚠', // Warning\n QuestionMark = '?', // Help or unknown state\n Exclamation = '❗', // Emphasis or alert\n Ellipsis = '…', // Loading or truncated text\n Dot = '•', // List item\n Bullet = '‣', // Alternate bullet point\n\n // Arrows\n ArrowRight = '→', // Navigation or next step\n ArrowLeft = '←', // Previous step or navigation\n ArrowUp = '↑', // Up direction\n ArrowDown = '↓', // Down direction\n ArrowRightFilled = '▶', // Navigation or next step (filled)\n ArrowLeftFilled = '◀', // Previous step or navigation (filled)\n ArrowUpFilled = '▲', // Up direction (filled)\n ArrowDownFilled = '▼', // Down direction (filled)\n DoubleArrowRight = '»', // Fast forward or next\n DoubleArrowLeft = '«', // Rewind or previous\n\n // Lists and Progress\n Star = '★', // Highlight or favorite (filled)\n StarEmpty = '☆', // Highlight or favorite (empty)\n Plus = '+', // Addition or increment\n Minus = '-', // Subtraction or decrement\n Progress = '⏳', // Indicating progress\n Success = '✅', // Success (alternative to CheckIcon)\n Failure = '❌', // Failure (alternative to CrossIcon)\n\n // Time and Calendar\n Clock = '⏰', // Time-related\n Timer = '⏱', // Stopwatch or timer\n Alarm = '🔔', // Alarm or alert\n Calendar = '📅', // Calendar or date\n\n // Navigation and Folders\n Folder = '📁', // Directory or file grouping\n FolderOpen = '📂', // Open folder\n File = '📄', // File or document\n Archive = '🗃', // Archive or file grouping\n Link = '🔗', // Hyperlink or connection\n Chain = '⛓', // Chain or linked\n Bookmark = '🔖', // Bookmark or save\n\n // Actions\n Edit = '✏', // Edit or modify\n Trash = '🗑', // Deletion or removal\n Add = '➕', // Add user or item\n Remove = '➖', // Remove user or item\n Reload = '🔄', // Refresh or reload\n Save = '💾', // Save or store\n Undo = '↩', // Undo action\n Redo = '↪', // Redo action\n Play = '▶', // Start or play\n Pause = '⏸', // Pause or stop temporarily\n Stop = '⏹', // Stop or end\n Cancel = '❎', // Cancel or close\n\n // User and Security\n User = '👤', // User or profile\n Group = '👥', // Group or team\n Lock = '🔒', // Secured or locked\n Unlock = '🔓', // Unlocked or accessible\n Help = '❓', // Help or support\n Key = '🔑', // Authentication or key\n Shield = '🛡', // Security or protection\n\n // Tools and Settings\n Gear = '⚙', // Settings or configuration\n Settings = '⚙️', // Settings (alternative)\n Theme = '🎨', // Theme or appearance\n Light = '💡', // Light mode\n Bug = '🐞', // Bug or issue\n Wrench = '🔧', // Maintenance or tools\n Hammer = '🔨', // Build or fix\n\n // Technology and Devices\n Terminal = '💻', // Terminal or command line\n Database = '🗄', // Database or storage\n Server = '🖥', // Server or host\n Cloud = '☁', // Cloud or remote\n Network = '🌐', // Network or connection\n Monitor = '📺', // Monitor or display\n Printer = '🖨', // Printer or output\n USB = '🔌', // USB or connection\n Speaker = '🔊', // Speaker or audio\n Microphone = '🎙', // Microphone or input\n Camera = '📷', // Camera or video\n Video = '🎥', // Video or media\n Music = '🎵', // Music or audio\n Phone = '📞', // Phone or communication\n\n // Development and Evaluation\n Package = '📦', // Package or bundle\n Plugin = '🧩', // Plugin or extension\n Extension = '🔌', // Extension or connection\n Module = '🧱', // Module or package\n Evaluate = '🔍', // Evaluate or search\n Variable = '𝑥', // Variable or setting\n Script = '📜', // Script or code\n Code = '📝', // Code or file\n\n // Status and Completion\n Logs = '📋', // Logs or history\n Power = '⏻', // On/Off state\n Heart = '❤', // Love or favorite\n Flame = '🔥', // Trending or hot\n Growth = '📈', // Growth or increase\n Decline = '📉', // Decline or decrease\n WarningFilled = '⚠️', // Warning (filled)\n\n // Nature and Weather\n Sun = '☀', // Brightness or day\n Moon = '🌙', // Night or dark mode\n Rain = '🌧', // Rain or bad weather\n Snow = '❄', // Snow or cold\n Lightning = '⚡', // Lightning or danger\n Tree = '🌲', // Nature or environment\n\n // Emotions and Expressions\n Smile = '😊', // Happiness or positive state\n Sad = '😢', // Sadness or negative state\n Angry = '😡', // Anger or frustration\n Clap = '👏', // Applause or celebration\n ThumbsUp = '👍', // Approval or success\n ThumbsDown = '👎', // Disapproval or failure\n\n // Miscellaneous\n Rocket = '🚀', // Launch or deploy\n Globe = '🌍', // Earth or international\n Medal = '🏅', // Achievement or award\n Trophy = '🏆', // Winner or champion\n Flag = '🚩', // Mark or flag\n StarFilled = '⭐', // Highlight or favorite\n StarOutline = '✩', // Alternate star icon\n Fireworks = '🎆', // Celebration\n Balloon = '🎈', // Party or fun\n Gift = '🎁', // Reward or present\n}\n","/**\n * A DI token that carries the type of the service it identifies, so\n * `services.get(TOKEN)` is typed without a type argument:\n *\n * ```ts\n * export const ITodoStore_TOKEN = createCliToken<ITodoStore>('todo-store');\n * const store = context.services.get(ITodoStore_TOKEN); // ITodoStore | undefined\n * ```\n *\n * At runtime it is the plain string, so it works anywhere a string token does.\n */\nexport type CliToken<T> = string & { readonly __cliTokenType?: T };\n\n/** Create a typed {@link CliToken}. */\nexport function createCliToken<T>(name: string): CliToken<T> {\n return name as CliToken<T>;\n}\n\ntype MultiServices = {\n /**\n * When true, injector returns an array of instances. This is useful to allow multiple\n * providers spread across many files to provide configuration information to a common token.\n */\n multi?: boolean;\n};\n\nexport type CliValueProvider = MultiServices & {\n useValue: any;\n};\n\nexport type CliTypeProvider = MultiServices & {\n useClass: any;\n /** DI tokens resolved from the container and passed as constructor arguments. */\n deps?: any[];\n};\n\nexport type CliFactoryProvider = MultiServices & {\n useFactory: (...args: any[]) => any;\n /** DI tokens resolved from the container and passed as factory arguments. */\n deps?: any[];\n};\n\n/**\n * Service registration. `useFactory` and `useClass` providers are created\n * lazily, on the first `get()` of their token (or of a token depending on\n * them), so their `deps` may be registered after them.\n */\nexport type CliProvider = {\n provide: any;\n /** When true, this token is sealed after registration and cannot be overwritten. */\n sealed?: boolean;\n /** When true, a new instance is created on every `get()` call instead of returning a singleton. */\n transient?: boolean;\n} & (\n | CliValueProvider\n | CliTypeProvider\n | CliFactoryProvider\n) &\n Record<string, any>;\n","import { createCliToken } from './models/services';\nimport type { ICliAuditService } from './interfaces/audit';\nimport type { ICliAuthorizationService, ICliPermissionRegistry } from './interfaces/authorization';\nimport type { ICliCompletionProvider } from './interfaces/completion';\nimport type { ICliDragDropService } from './interfaces/drag-drop';\nimport type { ICliFilePickerProvider } from './interfaces/file-picker';\nimport type { ICliFileTransferService } from './interfaces/file-transfer';\nimport type { ICliHttpClient } from './interfaces/http-client';\nimport type { ICliPermissionService } from './interfaces/permissions';\nimport type { ICliTranslationService } from './interfaces/services';\nimport type { ICliSessionsService } from './interfaces/sessions';\nimport type { ICliKeyValueStore } from './interfaces/state-store';\nimport type { ICliUserEventService } from './interfaces/user-events';\nimport type { ICliAuthService, ICliGroupsStoreService, ICliUserSessionService, ICliUsersStoreService } from './interfaces/users';\n\n// ---------------------------------------------------------------------------\n// Central registry of all service injection tokens.\n// Each token is a typed string key: ICliServiceProvider.get(TOKEN) returns\n// the service's type without a type argument.\n// ---------------------------------------------------------------------------\n\n/**\n * Token for the CLI user session service.\n */\nexport const ICliUserSessionService_TOKEN = createCliToken<ICliUserSessionService>('cli-user-session-service');\n\n/**\n * Token for the CLI users store service.\n */\nexport const ICliUsersStoreService_TOKEN = createCliToken<ICliUsersStoreService>('cli-users-store-service');\n\n/**\n * Token for the CLI groups store service.\n */\nexport const ICliGroupsStoreService_TOKEN = createCliToken<ICliGroupsStoreService>('cli-groups-store-service');\n\n/**\n * Token for the CLI auth service.\n */\nexport const ICliAuthService_TOKEN = createCliToken<ICliAuthService>('cli-auth-service');\n\n/**\n * Token for registering completion providers via module services (multi: true).\n */\nexport const ICliCompletionProvider_TOKEN = createCliToken<ICliCompletionProvider>('cli-completion-provider');\n\n/**\n * Token for the drag-and-drop service.\n */\nexport const ICliDragDropService_TOKEN = createCliToken<ICliDragDropService>('cli-drag-drop-service');\n\n/**\n * Token for the file transfer service.\n */\nexport const ICliFileTransferService_TOKEN = createCliToken<ICliFileTransferService>('cli-file-transfer-service');\n\n/**\n * Token for the translation service.\n */\nexport const ICliTranslationService_TOKEN = createCliToken<ICliTranslationService>('cli-translation-service');\n\n/**\n * Token for the permission service.\n */\nexport const ICliPermissionService_TOKEN = createCliToken<ICliPermissionService>('cli-permission-service');\n\n/**\n * Token for the file picker provider.\n */\nexport const ICliFilePickerProvider_TOKEN = createCliToken<ICliFilePickerProvider>('cli-file-picker-provider');\n\n/**\n * Token for the HTTP client service.\n */\nexport const ICliHttpClient_TOKEN = createCliToken<ICliHttpClient>('cli-http-client');\n\n/**\n * Token for the user event service (lifecycle events).\n */\nexport const ICliUserEventService_TOKEN = createCliToken<ICliUserEventService>('cli-user-event-service');\n\n/**\n * Token for the audit service (persistent event logging).\n */\nexport const ICliAuditService_TOKEN = createCliToken<ICliAuditService>('cli-audit-service');\n\n/**\n * Token for the authorization service ({@link ICliAuthorizationService}).\n * Provided by an auth module (e.g. `@qodalis/cli-users`); absent otherwise.\n */\nexport const ICliAuthorizationService_TOKEN = createCliToken<ICliAuthorizationService>('cli-authorization-service');\n\n/**\n * Token for the permission registry ({@link ICliPermissionRegistry}).\n * Always provided by the CLI engine.\n */\nexport const ICliPermissionRegistry_TOKEN = createCliToken<ICliPermissionRegistry>('cli-permission-registry');\n\n/**\n * Token for the sessions service ({@link ICliSessionsService}).\n */\nexport const ICliSessionsService_TOKEN = createCliToken<ICliSessionsService>('cli-sessions-service');\n\n/**\n * Token for the persistent key-value store used by modules (setup state, etc.).\n */\nexport const ICliKeyValueStore_TOKEN = createCliToken<ICliKeyValueStore>('cli-key-value-store');\n","import { createCliToken } from '../models/services';\nimport type { CliLogLevel, CliProvider, CliToken } from '../models';\nimport type { ICliCommandProcessor } from './command-processor';\nimport type { ICliExecutionContext } from './execution-context';\nimport type { CliPermissionDefinition } from './authorization';\nimport type { ICliCommandGuard } from './command-guards';\n\n/**\n * Represents a service that pings the server\n */\nexport interface ICliPingServerService {\n /**\n * Pings the server\n */\n ping(): Promise<void>;\n}\n\n/**\n * Represents a module for the web CLI (frontend).\n *\n * This interface is for **web/frontend plugins only** — browser-side modules\n * that extend the CLI terminal UI (e.g. `@qodalis/cli-guid`, `@qodalis/cli-tetris`).\n *\n * It is **not** related to backend server processors (Node/Python/.NET).\n * Backend command processors implement their own `ICliCommandProcessor` interfaces\n * in their respective server packages and do not use `apiVersion`.\n */\nexport interface ICliModule {\n /**\n * The web plugin API version this module targets.\n *\n * This is a **frontend-only** concept used by the browser CLI runtime\n * to ensure plugin compatibility. It has no relation to backend server\n * API versioning (e.g. `/api/v1/qcli/`).\n *\n * Modules with `apiVersion` less than the runtime's `API_VERSION` are\n * rejected with a warning at boot time.\n *\n * Use the `API_VERSION` constant exported from `@qodalis/cli-core` to\n * target the current runtime version.\n */\n apiVersion: number;\n\n /** Unique module identifier, e.g. '@qodalis/cli-guid' */\n name: string;\n\n /** Semver version string */\n version?: string;\n\n /** Human-readable description */\n description?: string;\n\n /** Module names this module depends on (resolved before this module boots) */\n dependencies?: string[];\n\n /** Boot priority — lower values boot first (default: 0) */\n priority?: number;\n\n /** Command processors provided by this module */\n processors?: ICliCommandProcessor[];\n\n /** Services registered into the shared service container */\n services?: CliProvider[];\n\n /**\n * Global command guards contributed by this module. They are registered\n * when the module boots and run before every command (across all modules),\n * e.g. authentication or permission checks. See {@link ICliCommandGuard}.\n */\n guards?: ICliCommandGuard[];\n\n /**\n * Permissions this module uses (`resource:action`), registered in the\n * {@link ICliPermissionRegistry} at boot so they can be listed and granted.\n */\n permissions?: CliPermissionDefinition[];\n\n /** Module configuration, set via configure() */\n config?: Record<string, any>;\n\n /**\n * Per-locale translation maps shipped by this module.\n * Keyed by locale code (e.g. 'es', 'fr'), each value is a flat\n * key-value map of translation keys to translated strings.\n *\n * These are automatically registered with the translation service\n * during module boot — no manual onInit() code required.\n *\n * @example\n * translations: {\n * es: { 'cli.guid.description': 'Generar y validar UUIDs' },\n * fr: { 'cli.guid.description': 'Générer et valider des UUIDs' },\n * }\n */\n translations?: Record<string, Record<string, string>>;\n\n /**\n * Returns a configured copy of this module.\n * Modules should narrow the config type via a module-specific interface.\n */\n configure?(config: any): ICliModule;\n\n /** Called after services are registered and before processors are initialized */\n onInit?(context: ICliExecutionContext): Promise<void>;\n\n /**\n * Optional first-run setup flow. Called during boot if the module\n * has not been set up yet (determined by a persisted flag in the\n * key-value store). Use context.reader to prompt the user for\n * initial configuration.\n *\n * @returns true to mark setup as complete; false/throw to abort\n * (module still loads, setup re-triggers next boot).\n */\n onSetup?(context: ICliExecutionContext): Promise<boolean>;\n\n /** Called after all modules have booted and the terminal is interactive */\n onAfterBoot?(context: ICliExecutionContext): Promise<void>;\n\n /** Called when the module is being torn down */\n onDestroy?(context: ICliExecutionContext): Promise<void>;\n}\n\n/**\n * A module that accepts typed configuration via `configure()`.\n * Extend this instead of `ICliModule` when your module has a config type.\n *\n * @example\n * ```ts\n * interface MyModuleConfig { verbose?: boolean }\n * const myModule: ICliConfigurableModule<MyModuleConfig> = {\n * configure(config) { return { ...this, config }; },\n * // ...\n * };\n * ```\n */\nexport interface ICliConfigurableModule<T extends Record<string, any> = Record<string, any>> extends ICliModule {\n configure(config: T): ICliModule;\n}\n\n/**\n * Represents a logger for the CLI\n */\nexport interface ICliLogger {\n /**\n * Set the log level of the logger\n * @param level The log level to set\n * @returns void\n * @default CliLogLevel.ERROR\n */\n setCliLogLevel(level: CliLogLevel): void;\n\n /**\n * Log a general message (LOG level)\n * @param args The arguments to log\n */\n log(...args: any[]): void;\n\n /**\n * Log an informational message (INFO level)\n * @param args The arguments to log\n */\n info(...args: any[]): void;\n\n /**\n * Log a warning message (WARN level)\n * @param args The arguments to log\n */\n warn(...args: any[]): void;\n\n /**\n * Log an error message (ERROR level)\n * @param args The arguments to log\n */\n error(...args: any[]): void;\n\n /**\n * Log a debug message (DEBUG level)\n * @param args The arguments to log\n */\n debug(...args: any[]): void;\n}\n\n// Re-export from central tokens for backward compatibility\nexport { ICliTranslationService_TOKEN } from '../tokens';\n\n/**\n * Provides internationalization (i18n) support for CLI strings.\n */\nexport interface ICliTranslationService {\n /**\n * Translate a key to the current locale.\n * @param key The translation key (e.g. 'cli.echo.description')\n * @param defaultValue The English fallback string (returned if no translation found)\n * @param params Optional interpolation parameters for `{param}` placeholders\n */\n t(key: string, defaultValue: string, params?: Record<string, string | number>): string;\n\n /**\n * Get the current locale code (e.g. 'en', 'es', 'fr').\n */\n getLocale(): string;\n\n /**\n * Set the active locale.\n * @param locale The locale code to switch to\n */\n setLocale(locale: string): void;\n\n /**\n * Register translations for a locale.\n * Can be called multiple times — translations are merged, with later calls overriding earlier ones.\n * @param locale The locale code\n * @param translations Flat key-value map of translation keys to translated strings\n */\n addTranslations(locale: string, translations: Record<string, string>): void;\n\n /**\n * Get all locale codes that have at least one registered translation.\n */\n getAvailableLocales(): string[];\n}\n\n/**\n * Dependency injection container for CLI services.\n * Services are registered with string tokens and retrieved by type.\n */\nexport interface ICliServiceProvider {\n /**\n * Retrieve a service by its injection token.\n * Returns `undefined` when no provider is registered for the token.\n * For multi-provider tokens, returns the last registered value (use `getAll` for the full array).\n * @param service The token (typically a `*_TOKEN` constant) identifying the service\n * @returns The service instance cast to `T`, or `undefined` if not registered\n */\n get<T>(service: CliToken<T>): T | undefined;\n get<T = unknown>(service: any): T | undefined;\n\n /**\n * Retrieve all registered services for a multi-provider token.\n * Returns an empty array when no provider is registered for the token.\n * @param service The token (typically a `*_TOKEN` constant) identifying the service\n * @returns Array of all resolved service instances\n */\n getAll<T>(service: CliToken<T>): T[];\n getAll<T = unknown>(service: any): T[];\n\n /**\n * Retrieve a service by its injection token, throwing if not registered.\n * Use this when the service is required and its absence is a programming error.\n * For multi-provider tokens, returns the last registered value (use `getAll` for the full array).\n * @param service The token (typically a `*_TOKEN` constant) identifying the service\n * @returns The service instance, cast to `T`\n * @throws If no service is registered for the given token\n */\n getRequired<T>(service: CliToken<T>): T;\n getRequired<T = unknown>(service: any): T;\n\n /**\n * Check whether a service is registered for the given token.\n * @param service The token identifying the service\n * @returns `true` if a service is registered, `false` otherwise\n */\n has(service: any): boolean;\n\n /**\n * Register one or more service definitions.\n * @param definition A single provider or an array of providers to register\n */\n set(definition: CliProvider | CliProvider[]): void;\n\n /**\n * Remove a registration. With `provider` (the provider object passed to\n * `set`, or the registered value), only that registration is removed: for\n * a single token the previous registration becomes active again, for a\n * multi token the others remain. Without it, every registration of the\n * token is removed. Sealed tokens cannot be removed.\n * @returns Whether something was removed\n */\n remove?(service: any, provider?: unknown): boolean;\n}\n\n// ── Authentication ─────────────────────────────────────────────────\n\n/** DI token for `ICliServerAuthTokenProvider` (multi-provider) */\nexport const ICliServerAuthTokenProvider_TOKEN = createCliToken<ICliServerAuthTokenProvider>('cli-server-auth-token-provider');\n\n/** DI token for `ICliServerAuthService` */\nexport const ICliServerAuthService_TOKEN = createCliToken<ICliServerAuthService>('cli-server-auth-service');\n\n/**\n * Integrators implement this interface to supply auth credentials\n * for server requests. Multiple providers can be registered — the\n * auth service merges headers from all of them (later providers\n * override earlier ones for the same header name).\n *\n * @example\n * ```ts\n * class MyAuthProvider implements ICliServerAuthTokenProvider {\n * getHeaders(serverName: string) {\n * return { Authorization: `Bearer ${this.oauthService.getAccessToken()}` };\n * }\n * }\n *\n * // Register in a module:\n * const myModule: ICliModule = {\n * name: 'my-auth',\n * services: [{\n * provide: ICliServerAuthTokenProvider_TOKEN,\n * useValue: new MyAuthProvider(),\n * multi: true,\n * }],\n * };\n * ```\n */\nexport interface ICliServerAuthTokenProvider {\n /**\n * Return headers for a given server. Called on every request,\n * so implementations can return fresh tokens.\n *\n * @param serverName The `name` field from `CliServerConfig`\n * @returns Headers to merge into the request, or an empty object\n */\n getHeaders(serverName: string): Record<string, string>;\n\n /**\n * Optional: query parameters for WebSocket upgrades to this server (e.g. a\n * short-lived single-use ticket). Called right before each connection.\n * Return `undefined` when this provider does not handle the server.\n * When any provider returns params, headers are NOT copied into the URL\n * (so bearer tokens never appear in WebSocket URLs).\n */\n getWebSocketParams?(serverName: string): Promise<Record<string, string> | undefined>;\n}\n\n/**\n * Minimal view of the CLI server manager (token `ICliServerManager_TOKEN`),\n * e.g. for auth modules that must refresh a server after sign-in.\n */\nexport interface ICliServerManager {\n /** Reconnect a server: re-fetch its commands and reopen its event socket. */\n reconnect(name: string): Promise<{ success: boolean; commandCount: number }>;\n /**\n * The server a command should target when the user names none: the\n * default server (`server default`) when connected, otherwise the first\n * connected server. `null` when no server is connected (for example every\n * server requires a login the user has not done yet).\n */\n preferredServer?(): string | null;\n}\n\n/** Token for {@link ICliServerManager} */\nexport const ICliServerManager_TOKEN = createCliToken<ICliServerManager>('cli-server-manager');\n\n/**\n * Internal service that resolves auth headers for a server by merging:\n * 1. Static/dynamic headers from `CliServerConfig.headers`\n * 2. Headers from all registered `ICliServerAuthTokenProvider`s\n *\n * Consumers should use this service instead of reading `config.headers` directly.\n */\nexport interface ICliServerAuthService {\n /**\n * Resolve the final set of headers for a server request.\n * Merges config headers with all registered token providers.\n *\n * @param serverName The server's `name` field\n * @param configHeaders The `headers` field from `CliServerConfig`\n * @returns Merged headers ready for use in fetch/WebSocket calls\n */\n getHeaders(serverName: string, configHeaders?: import('../models/server').CliHeadersProvider): Record<string, string>;\n\n /**\n * WebSocket upgrade query params from the registered token providers, or\n * `undefined` when no provider handles this server.\n */\n getWebSocketParams?(serverName: string): Promise<Record<string, string> | undefined>;\n}\n","import type {\n ICliServerAuthService,\n ICliServiceProvider,\n} from '../interfaces/services';\nimport { ICliServerAuthService_TOKEN } from '../interfaces/services';\n\n/**\n * A static header map or a function that returns one.\n * Use a function when headers contain short-lived tokens (e.g. JWTs)\n * so that every request gets a fresh value.\n *\n * @example\n * // Static\n * headers: { 'X-Api-Key': 'abc123' }\n *\n * // Dynamic (token refresh)\n * headers: () => ({ Authorization: `Bearer ${auth.getToken()}` })\n */\nexport type CliHeadersProvider =\n | Record<string, string>\n | (() => Record<string, string>);\n\n/**\n * Resolves a CliHeadersProvider to a plain header map.\n */\nexport function resolveHeaders(\n provider?: CliHeadersProvider,\n): Record<string, string> {\n if (!provider) return {};\n return typeof provider === 'function' ? provider() : provider;\n}\n\n/**\n * Resolves auth headers for a server request using the auth service if available,\n * otherwise falls back to resolving config headers directly.\n *\n * This is the single entry point plugins should use to get headers for server requests.\n *\n * @param services The service provider (from context.services)\n * @param serverName The server name\n * @param configHeaders The headers from CliServerConfig\n * @returns Resolved headers ready for use\n */\nexport function resolveServerHeaders(\n services: ICliServiceProvider | undefined,\n serverName: string,\n configHeaders?: CliHeadersProvider,\n): Record<string, string> {\n if (services) {\n const authService = services.get<ICliServerAuthService>(\n ICliServerAuthService_TOKEN,\n );\n if (authService) {\n return authService.getHeaders(serverName, configHeaders);\n }\n }\n return resolveHeaders(configHeaders);\n}\n\n/**\n * Configuration for a remote CLI server\n */\nexport type CliServerConfig = {\n /** Unique identifier, used for namespacing commands */\n name: string;\n\n /** Base URL of the server, e.g. \"https://api.example.com\" */\n url: string;\n\n /** Whether this server is enabled. @default true */\n enabled?: boolean;\n\n /**\n * Custom headers sent with every request (e.g. auth tokens).\n * Can be a static object or a function that returns fresh headers\n * on each call (useful for rotating tokens / JWTs).\n */\n headers?: CliHeadersProvider;\n\n /** Request timeout in milliseconds. @default 30000 */\n timeout?: number;\n\n /**\n * Copy `headers` into WebSocket URLs as `_header_<name>` query params\n * (the behaviour up to 2.0.0). Off by default: tokens in URLs end up in\n * access, proxy and CDN logs and in browser history. Without it, sockets\n * authenticate with a single-use ticket from\n * `POST /api/v1/qcli/sessions/ws-ticket` (users plugin) fetched with these\n * headers. Only for servers that still read `_header_Authorization`, such\n * as a shell `accessToken` without the users plugin.\n * @deprecated use the users plugin's WebSocket tickets\n */\n unsafeHeadersInWebSocketUrl?: boolean;\n};\n\n/**\n * Which rows of a longer result a server table holds. Commands that page (`--skip`,\n * `--take`) send it; servers also send it, with `truncated`, when they cut a\n * table from a command that does not page.\n */\nexport type CliServerTablePage = {\n /** Rows skipped before these */\n skip: number;\n /** Rows asked for */\n take: number;\n /** All rows, when the command knows it */\n total?: number;\n /** Whether more rows follow */\n hasMore: boolean;\n /** The server cut the table: `--skip` will not show the rest */\n truncated?: boolean;\n};\n\n/**\n * A single output item in a server response\n */\nexport type CliServerOutput =\n | {\n type: 'text';\n value: string;\n style?: 'success' | 'error' | 'info' | 'warning';\n }\n | { type: 'table'; headers: string[]; rows: string[][]; page?: CliServerTablePage }\n | { type: 'list'; items: string[]; ordered?: boolean }\n | { type: 'json'; value: any }\n | { type: 'key-value'; entries: { key: string; value: string }[] };\n\n/**\n * Structured response from a server command execution\n */\nexport type CliServerResponse = {\n exitCode: number;\n outputs: CliServerOutput[];\n};\n\n/**\n * Metadata about a remote command processor, returned by GET /api/qcli/commands\n */\nexport type CliServerCommandDescriptor = {\n command: string;\n description?: string;\n version?: string;\n parameters?: {\n name: string;\n aliases?: string[];\n description: string;\n required: boolean;\n type: string;\n defaultValue?: any;\n }[];\n processors?: CliServerCommandDescriptor[];\n};\n\n/**\n * Server capabilities returned by GET /api/qcli/capabilities\n */\nexport type CliServerCapabilities = {\n /** Whether this server supports remote shell access */\n shell: boolean;\n /** Server operating system (e.g. \"linux\", \"win32\", \"darwin\") */\n os?: string;\n /** Path to the shell binary on the server */\n shellPath?: string;\n /** Server version string */\n version?: string;\n /** Whether this server supports SSE streaming execution */\n streaming?: boolean;\n};\n","import {\n ITerminalInitOnlyOptions,\n ITerminalOptions,\n ITheme,\n} from '@xterm/xterm';\nimport { CliIcon } from './icons';\nimport { CliServerConfig } from './server';\n\n/**\n * Represents a package source for the CLI package manager\n */\nexport interface CliPackageSource {\n /**\n * The name of the source, e.g. 'local', 'unpkg', 'jsdelivr'\n */\n name: string;\n\n /**\n * The base URL for fetching package files, e.g. 'http://localhost:3000/'\n */\n url: string;\n\n /**\n * The kind of source.\n * - 'registry': npm-compatible registry with search API (e.g. npmjs.org, Verdaccio)\n * - 'file': static file server, packages are discovered by probing known paths\n * @default 'file'\n */\n kind?: 'registry' | 'file';\n}\n\n/**\n * Represents a log level for the CLI\n */\nexport enum CliLogLevel {\n None = 0,\n DEBUG = 1,\n LOG = 2,\n INFO = 3,\n WARN = 4,\n ERROR = 5,\n}\n\n/**\n * How the CLI reports its startup.\n */\nexport interface CliBootOptions {\n /**\n * Report each boot step (terminal, services, servers, modules) in the\n * terminal while the CLI starts. When `false`, a spinner is shown instead.\n * Users can override it with `configure set system.bootLogs false`.\n * @default true\n */\n showLogs?: boolean;\n\n /**\n * Keep the boot report on screen after startup instead of clearing it\n * when the terminal is ready. Warnings and errors are kept either way.\n * @default false\n */\n keepLogs?: boolean;\n\n /**\n * Steps taking at least this many milliseconds are highlighted as slow.\n * @default 500\n */\n slowStepMs?: number;\n}\n\n/**\n * The name and icon an application ships the CLI under. Anything left out\n * keeps Qodalis CLI's; the copyright line, the docs link and `version` stay\n * Qodalis CLI's.\n */\nexport interface CliBranding {\n /**\n * The product name: the welcome banner (\"Welcome to RateBell CLI\", shown\n * instead of the Qodalis CLI art), the panel's title and the startup log.\n * `version` adds it to the Qodalis CLI details.\n * @default 'Web CLI' (panel title 'CLI')\n */\n name?: string;\n\n /**\n * The panel's icon (header and hide tab) instead of the terminal glyph:\n * an image URL (http(s), a path, or a `data:image` URL).\n */\n icon?: string;\n}\n\n/**\n * Options for the CLI\n */\nexport type CliOptions = Record<string, any> & {\n /**\n * How the CLI reports its startup (boot log, spinner).\n */\n boot?: CliBootOptions;\n\n /**\n * The name and icon the CLI shows (welcome banner, panel title, startup\n * log); defaults to Qodalis CLI's.\n */\n branding?: CliBranding;\n\n /**\n * Terminal colors set by the host: `'dark'`, `'light'`, `'auto'`, a terminal\n * theme name or a {@link CliPanelTheme} (its `terminal`). It is the default:\n * a theme the user applies with the `theme` command wins over it until\n * `theme reset`. In a panel, this is the panel's `theme`.\n */\n theme?: CliPanelThemeInput;\n\n /**\n * Custom terminal options\n */\n terminalOptions?: ITerminalOptions & ITerminalInitOnlyOptions;\n\n /**\n * The minimum log level to display\n */\n logLevel?: CliLogLevel;\n\n /**\n * Custom package sources for the package manager.\n * Built-in sources (unpkg, jsdelivr) are always available.\n */\n packageSources?: {\n /**\n * Name of the primary source. Defaults to 'unpkg'.\n */\n primary?: string;\n\n /**\n * Additional custom sources\n */\n sources?: CliPackageSource[];\n };\n\n /**\n * Remote CLI servers to connect to.\n * Commands from each server are discovered and registered as proxy processors.\n */\n servers?: CliServerConfig[];\n\n /**\n * Whether the `eval` / `js` / `calc` command is enabled.\n * Disabled by default because it runs arbitrary JavaScript via `eval()`\n * in the host page context — a security risk in multi-tenant or\n * user-facing deployments.\n * @default false\n */\n allowEval?: boolean;\n};\n\n/**\n * Represents a package that can be installed\n */\nexport interface Package {\n /**\n * The name of the package\n */\n name: string;\n\n /**\n * The global name used to access the package\n */\n globalName?: string;\n\n /**\n * The version of the package\n */\n version: string;\n\n /**\n * The unpkg url to the package\n */\n url: string;\n\n /**\n * The dependencies for the module\n */\n dependencies?: Package[];\n}\n\n/**\n * Represents command processor metadata\n */\nexport type CliProcessorMetadata = Record<string, any> & {\n /**\n * If true, the processor is sealed and cannot be replaced or removed.\n * Sealed processors can still be extended (wrapped) by processors with `extendsProcessor = true`.\n */\n sealed?: boolean;\n\n /**\n * The command's text is code or other literal input (`eval`): the engine\n * passes the whole line as typed, without operators (`|`, `;`, `&&`,\n * `>`) or expansion of `$(...)`, `$VAR`, braces and wildcards, so\n * `eval [1,2].map(x => x * 2)` keeps its `=>`, `*` and `${...}`.\n */\n literalInput?: boolean;\n\n /**\n * If true, the processor requires the server to be running\n */\n requireServer?: boolean;\n\n /**\n * The module the processor belongs to\n */\n module?: string;\n\n /**\n * An icon to display for the processor\n */\n icon?: CliIcon | string;\n\n /**\n * The minimum required version of @qodalis/cli-core for this processor.\n * If the installed core version is lower, the processor will be skipped during boot.\n */\n requiredCoreVersion?: string;\n\n /**\n * The minimum required version of @qodalis/cli for this processor.\n * If the installed CLI version is lower, the processor will be skipped during boot.\n */\n requiredCliVersion?: string;\n\n /**\n * If true, the command requires a signed-in user. Enforced by a\n * core guard that activates when an auth module registers an\n * `ICliAuthorizationService` (e.g. `@qodalis/cli-users`); without one the\n * flag is informational.\n */\n requireAuth?: boolean;\n\n /**\n * The signed-in user must belong to at least one of these groups\n * (e.g. `['admin']`). Implies `requireAuth`. Enforced like `requireAuth`.\n */\n requiredGroups?: string[];\n\n /**\n * The signed-in user must hold **all** of these permissions\n * (e.g. `['users:create']`), granted through their groups (roles).\n * Implies `requireAuth`. Enforced like `requireAuth`.\n */\n requiredPermissions?: string[];\n\n /**\n * If true, the processor is hidden from the help command listing.\n * The command still works when typed directly and `help <command>` still shows its details.\n */\n hidden?: boolean;\n};\n\n/**\n * Represents a state configuration for the CLI processor\n */\nexport type CliStateConfiguration = {\n /**\n * The initial state for the processor\n */\n initialState: Record<string, any>;\n\n /**\n * The store identifier for the processor, if any\n * @remarks If the store identifier is not set, the processor command name is used\n */\n storeName?: string;\n\n /**\n * Save the state after every change, so `persist()` does not have to be\n * called. Changes made in the same tick are saved together.\n * @default false\n */\n autoPersist?: boolean;\n\n /**\n * Version of the state's shape. When the saved state has an older\n * version, `migrate` converts it while it is loaded. Saved state without\n * a version counts as version 0.\n */\n version?: number;\n\n /**\n * Convert saved state of version `fromVersion` to the current\n * {@link version}. The result is merged over `initialState`.\n */\n migrate?: (state: CliState, fromVersion: number) => CliState;\n\n /**\n * Apply changes saved by other tabs and terminals of the same browser.\n * @default true\n */\n syncAcrossTabs?: boolean;\n\n /**\n * Where the state lives:\n * - `'global'`: saved in the browser and shared by every terminal and tab\n * (each save merges the keys it changed, so terminals changing\n * different keys never overwrite each other).\n * - `'user'`: like `'global'`, but saved separately for each signed-in\n * user (signed out, the state is shared); it switches when the user\n * signs in or out.\n * - `'session'`: this terminal only, in memory; never saved or shared.\n * @default 'global'\n */\n scope?: CliStateScope;\n};\n\n/** See {@link CliStateConfiguration.scope}. */\nexport type CliStateScope = 'global' | 'user' | 'session';\n\n/** Options of a state store (see {@link CliStateConfiguration}). */\nexport type CliStateStoreOptions = Pick<\n CliStateConfiguration,\n 'autoPersist' | 'version' | 'migrate' | 'syncAcrossTabs' | 'scope'\n>;\n\nexport type CliState = Record<string, any>;\n\n/**\n * Position of the CLI panel relative to the viewport edge.\n * - `'bottom'` — anchored to the bottom (default)\n * - `'top'` — anchored to the top\n * - `'left'` — anchored to the left (vertical layout)\n * - `'right'` — anchored to the right (vertical layout)\n */\nexport type CliPanelPosition = 'bottom' | 'top' | 'left' | 'right';\n\n/**\n * Alignment of the hidden-mode tab along its viewport edge.\n * - `'start'` — left for horizontal panels, top for vertical panels\n * - `'center'` — centered along the edge (default)\n * - `'end'` — right for horizontal panels, bottom for vertical panels\n */\nexport type CliPanelHideAlignment = 'start' | 'center' | 'end';\n\n/**\n * Configuration for the CLI panel component.\n */\nexport interface CliPanelConfig {\n /**\n * Whether the CLI should be collapsed by default.\n * @default true\n */\n isCollapsed?: boolean;\n\n /**\n * Whether the panel starts hidden (showing only the small tab/arrow).\n * @default false\n */\n isHidden?: boolean;\n\n /**\n * Position of the panel relative to the viewport.\n * @default 'bottom'\n */\n position?: CliPanelPosition;\n\n /**\n * Whether the close button is shown.\n * @default true\n */\n closable?: boolean;\n\n /**\n * Whether the panel can be resized by dragging.\n * @default true\n */\n resizable?: boolean;\n\n /**\n * Whether the hide button is shown. When hidden, the panel collapses\n * to a small tab at the viewport edge.\n * @default true\n */\n hideable?: boolean;\n\n /**\n * Alignment of the hide tab along the panel's viewport edge.\n * For bottom/top: 'start' = left, 'center', 'end' = right.\n * For left/right: 'start' = top, 'center', 'end' = bottom.\n * @default 'center'\n */\n hideAlignment?: CliPanelHideAlignment;\n\n /**\n * When true, the panel's chrome (header, border, background) automatically\n * syncs its colors with the active terminal theme. CSS custom properties\n * are derived from the xterm theme and applied as inline styles.\n * @default false\n */\n syncTheme?: boolean;\n\n /**\n * The look of the panel and of every terminal in it:\n * - `'dark'` (default) or `'light'`: the built-in palettes\n * - `'auto'`: light or dark, following the system's `prefers-color-scheme`\n * - the name of a terminal theme (`'dracula'`, `'nord'`, ... see `theme list`):\n * the terminals use it and the panel's colors are derived from it\n * - a {@link CliPanelTheme}: a base palette with your own colors, font and corners\n *\n * Changing it while the panel is open restyles the panel and its terminals, so a\n * host can pass its own light/dark setting through. It is the default: a theme\n * the user applies with the `theme` command wins over it (and restyles the\n * panel) until `theme reset`.\n * @default 'dark'\n */\n theme?: CliPanelThemeInput;\n}\n\n/** The built-in panel palettes. */\nexport type CliPanelColorScheme = 'light' | 'dark';\n\n/** What {@link CliPanelConfig.theme} accepts. */\nexport type CliPanelThemeInput =\n CliPanelColorScheme | 'auto' | (string & {}) | CliPanelTheme;\n\n/** Colors of the panel's chrome (header, tabs, menus, hide tab). Any CSS color. */\nexport interface CliPanelColors {\n /** Panel background behind the terminals. */\n background: string;\n /** Header, tab bar and menus. */\n headerBackground: string;\n border: string;\n text: string;\n /** Labels, inactive tabs and icons. */\n textSecondary: string;\n /** Active tab, focus rings and highlights. */\n accent: string;\n /** Buttons and menu items under the pointer. */\n hoverBackground: string;\n /** Buttons while pressed, the selected menu item. */\n activeBackground: string;\n /** Destructive menu items and error states. */\n danger: string;\n /** Shadow of the panel, menus and the hide tab (a CSS box-shadow color). */\n shadow: string;\n}\n\n/** A custom panel theme. Every field is optional; unset ones come from `base`. */\nexport interface CliPanelTheme {\n /**\n * The palette this theme starts from. With a `terminal` theme and no base, it is\n * chosen from the terminal's background (light or dark).\n * @default 'dark'\n */\n base?: CliPanelColorScheme | 'auto';\n /**\n * Terminal colors: a terminal theme name (`'dracula'`) or xterm theme colors.\n * Defaults to the base palette's terminal theme.\n */\n terminal?: string | ITheme;\n /**\n * Panel colors. Unset colors come from the base palette, or are derived from\n * `terminal` when it is given.\n */\n colors?: Partial<CliPanelColors>;\n /** Font of the panel's chrome (the terminal font is `terminalOptions.fontFamily`). */\n fontFamily?: string;\n /** Corner radius of buttons, tabs and menus, e.g. `'4px'`; `'0'` for square corners. */\n radius?: string;\n}\n","/** Ownership metadata attached to files, directories, or other resources */\nexport interface ICliOwnership {\n /** User ID of the owner */\n uid: string;\n /** Primary group name */\n gid: string;\n}\n\n/** Default file permissions: rw-r--r-- (644) */\nexport const DEFAULT_FILE_PERMISSIONS = 'rw-r--r--';\n\n/** Default directory permissions: rwxr-xr-x (755) */\nexport const DEFAULT_DIR_PERMISSIONS = 'rwxr-xr-x';\n","export * from './command';\nexport * from './colors';\nexport * from './icons';\nexport * from './server';\nexport * from './options';\nexport * from './services';\nexport * from './users';\nexport * from './permissions';\nexport * from './notification';\n\nimport { CliForegroundColor, CliBackgroundColor } from './colors';\nimport { CliIcon } from './icons';\nimport { CliLogLevel } from './options';\n\nexport const enums = {\n CliForegroundColor,\n CliBackgroundColor,\n CliIcon,\n CliLogLevel,\n};\n","/**\n * A key a full-screen command reads while it runs (an editor, a game).\n * Hosts on touch screens show these as buttons, since on-screen keyboards\n * lack Ctrl, Esc and the arrows; help screens can list them.\n */\nexport interface ICliCommandKey {\n /** Short button text: `'Save'`, `'↑'`, `'FLAG'` */\n label: string;\n /**\n * What the key sends to the command's `onData`, as a terminal would:\n * `'\\x13'` (Ctrl+S), `'\\x1b[A'` (Up), `' '` (Space), `'f'`\n */\n data: string;\n /** The usual key, for help: `'Ctrl+S'`, `'Space'`, `'F'` */\n key?: string;\n /** What the key does: `'Save the file'`; also the button's accessible name */\n description?: string;\n /** Repeats while held down (arrows, Delete) */\n repeat?: boolean;\n}\n\n/** The controls of a full-screen command, for hosts that show on-screen keys. */\nexport interface ICliCommandControls {\n /** The keys the command reads, most used first */\n keys: ICliCommandKey[];\n /**\n * The command also reads typed text (an editor, a word game): touch hosts\n * keep the on-screen keyboard open next to the keys. Otherwise they may\n * close it so the command gets the whole screen.\n */\n textInput?: boolean;\n /** `data` of the key a tap on the screen sends (e.g. rotate, reveal), if any */\n tap?: string;\n /** Swipes on the screen send the arrow keys (games on a board) */\n swipe?: boolean;\n}\n\n/** Terminal input for the keys commands commonly declare. */\nexport const CliKeyData = {\n up: '\\x1b[A',\n down: '\\x1b[B',\n right: '\\x1b[C',\n left: '\\x1b[D',\n home: '\\x1b[H',\n end: '\\x1b[F',\n pageUp: '\\x1b[5~',\n pageDown: '\\x1b[6~',\n delete: '\\x1b[3~',\n escape: '\\x1b',\n enter: '\\r',\n backspace: '\\x7f',\n space: ' ',\n /** Ctrl+<letter>: `ctrl('s')` is `'\\x13'` */\n ctrl: (letter: string): string =>\n String.fromCharCode(letter.toUpperCase().charCodeAt(0) - 64),\n} as const;\n","import { createCliToken } from '../models/services';\nimport { CliProcessCommand } from '../models';\nimport { ICliCommandProcessor } from './command-processor';\nimport { ICliExecutionContext } from './execution-context';\n\n/**\n * Result of a guard check.\n *\n * - `true` or `undefined`: allow the command.\n * - `false`: block it with the generic message `<command>: permission denied`.\n * - a non-empty `string`: block it and print this message.\n * - `{ allowed, message }`: explicit form; `message` is used when `allowed` is false.\n */\nexport type CliCommandGuardResult =\n | boolean\n | string\n | void\n | { allowed: boolean; message?: string };\n\n/**\n * A global command guard: a check that runs before **every** command, across\n * all processors and modules, and can block it.\n *\n * Use guards for cross-cutting policies such as authentication, permission\n * checks, feature flags, maintenance windows or rate limiting, instead of\n * repeating the check inside each processor.\n *\n * ## When guards run\n *\n * For each command the executor:\n * 1. parses the input and resolves the processor (and sub-processor);\n * 2. handles global parameters such as `--help` (help is never guarded);\n * 3. extracts the positional value into `command.value`;\n * 4. **runs the guards**;\n * 5. validates required values/parameters, runs processor hooks and finally\n * calls `processCommand`.\n *\n * Guards run in ascending `priority` (default `0`). For each guard the executor\n * calls `appliesTo` (if defined) and skips the guard when it returns `false`;\n * otherwise it awaits `canActivate`. The **first** guard that blocks stops the\n * chain: its message is written as an error and the command exits with code\n * `-1`. A guard that throws (in `appliesTo` or `canActivate`) also blocks the\n * command, so a broken guard fails closed.\n *\n * ## Access to the context\n *\n * Both `appliesTo` and `canActivate` receive the {@link ICliExecutionContext}\n * of the command about to run, so a guard can:\n * - resolve services with `context.services.get(...)` / `getRequired(...)`\n * (e.g. a policy, feature-flag or permission service registered by any\n * module) to decide **what** should be guarded and **whether** it may run;\n * - inspect `context.userSession` for the signed-in user and their groups;\n * - read the processor's `metadata` (for example `requireAuth` or\n * `requiredGroups`) and the parsed `command` (`command.value`, `command.args`);\n * - prompt the user via `context.reader` (e.g. a confirmation guard).\n *\n * Guards should not write to the terminal to report a denial; return a message\n * instead so the executor prints it consistently.\n *\n * ## Registering guards\n *\n * The preferred way is the module's `guards` array; the boot sequence\n * registers each entry as a multi-provider under {@link ICliCommandGuard_TOKEN}.\n * Several modules can contribute guards; all of them run.\n *\n * ```ts\n * const billingModule: ICliModule = {\n * apiVersion: 2,\n * name: 'billing',\n * processors: [new InvoiceProcessor()],\n * guards: [billingGuard],\n * };\n * ```\n *\n * Guards can also be added at runtime (e.g. from `onInit`):\n *\n * ```ts\n * context.services.set({ provide: ICliCommandGuard_TOKEN, useValue: myGuard, multi: true });\n * ```\n *\n * ## Example: policy resolved from a service\n *\n * ```ts\n * const featureFlagGuard: ICliCommandGuard = {\n * name: 'feature-flags',\n * // Only guard commands that are behind a flag; the flag list comes from a service\n * appliesTo: (processor, _command, context) =>\n * context.services.get<FeatureFlags>(FeatureFlags_TOKEN)?.isFlagged(processor.command) ?? false,\n * canActivate: async (_command, processor, context) => {\n * const flags = context.services.getRequired<FeatureFlags>(FeatureFlags_TOKEN);\n * return (await flags.isEnabled(processor.command, context.userSession?.user))\n * ? true\n * : `${processor.command}: not available for your account`;\n * },\n * };\n * ```\n *\n * ## Without a guard-providing module\n *\n * Guards are opt-in. When no guard is registered every command runs as before.\n * The engine registers three built-in guards that enforce the processor access\n * metadata (`requireAuth`, `requiredGroups`, `requiredPermissions`); they stay\n * inactive until an auth module (e.g. `@qodalis/cli-users`) registers an\n * `ICliAuthorizationService`, so without one that metadata is informational.\n */\nexport interface ICliCommandGuard {\n /** Unique name, shown in diagnostics when the guard throws. */\n name: string;\n\n /** Execution order; lower runs first. Defaults to `0`. */\n priority?: number;\n\n /**\n * Optional filter deciding whether this guard is relevant for the command.\n * Return `false` to skip the guard. When omitted the guard applies to\n * every command. May be async, and may use `context` to resolve services.\n */\n appliesTo?(\n processor: ICliCommandProcessor,\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): boolean | Promise<boolean>;\n\n /**\n * Decide whether the command may run. See {@link CliCommandGuardResult}\n * for the accepted return values.\n */\n canActivate(\n command: CliProcessCommand,\n processor: ICliCommandProcessor,\n context: ICliExecutionContext,\n ): CliCommandGuardResult | Promise<CliCommandGuardResult>;\n}\n\n/** DI token for {@link ICliCommandGuard}; register guards as multi-providers. */\nexport const ICliCommandGuard_TOKEN = createCliToken<ICliCommandGuard>('cli-command-guard');\n","/**\n * Permission strings are `resource:action` (for example `users:create`).\n * A trailing `*` segment matches anything at that level and below; a `*`\n * in any other position matches exactly one segment:\n *\n * | granted | matches |\n * |---------------|---------------------------------------|\n * | `*` | every permission |\n * | `users:*` | `users:create`, `users:delete`, ... |\n * | `*:read` | `users:read`, `groups:read`, ... |\n * | `users:read` | only `users:read` |\n *\n * Matching is case-insensitive.\n */\nexport function cliPermissionMatches(granted: string, required: string): boolean {\n const g = granted.trim().toLowerCase().split(':');\n const r = required.trim().toLowerCase().split(':');\n for (let i = 0; i < g.length; i++) {\n if (g[i] === '*' && i === g.length - 1) return true;\n if (i >= r.length || (g[i] !== '*' && g[i] !== r[i])) return false;\n }\n return g.length === r.length;\n}\n\n/** True when any granted permission matches `required`. */\nexport function cliHasPermission(granted: readonly string[] | undefined, required: string): boolean {\n return !!granted?.some((p) => cliPermissionMatches(p, required));\n}\n\n/** The subset of `required` permissions not covered by `granted`. */\nexport function cliMissingPermissions(\n granted: readonly string[] | undefined,\n required: readonly string[],\n): string[] {\n return required.filter((r) => !cliHasPermission(granted, r));\n}\n\n/** Union of permissions, de-duplicated, preserving first-seen order. */\nexport function cliMergePermissions(...lists: (readonly string[] | undefined)[]): string[] {\n const seen = new Set<string>();\n const out: string[] = [];\n for (const list of lists) {\n for (const p of list ?? []) {\n const key = p.trim();\n if (key && !seen.has(key.toLowerCase())) {\n seen.add(key.toLowerCase());\n out.push(key);\n }\n }\n }\n return out;\n}\n\n/**\n * Built-in permissions used by the users module. Other modules define their\n * own (e.g. `deploy:run`); any string in `resource:action` form works.\n */\n/** Permissions for remote CLI server features. */\nexport const CliServerPermissions = {\n /** Open a remote shell on a server (`ssh`) */\n ShellExecute: 'shell:execute',\n} as const;\n\nexport const CliUsersPermissions = {\n UsersRead: 'users:read',\n UsersCreate: 'users:create',\n UsersUpdate: 'users:update',\n UsersDelete: 'users:delete',\n GroupsRead: 'groups:read',\n GroupsCreate: 'groups:create',\n GroupsUpdate: 'groups:update',\n GroupsDelete: 'groups:delete',\n SessionsRead: 'sessions:read',\n SessionsRevoke: 'sessions:revoke',\n AuditRead: 'audit:read',\n AuditClear: 'audit:clear',\n} as const;\n","import { ICliOwnership } from '../models/permissions';\nimport { ICliExecutionContext } from './execution-context';\nimport {\n ICliAuthorizationService_TOKEN,\n ICliPermissionRegistry_TOKEN,\n} from '../tokens';\nimport { cliHasPermission } from '../utils/permissions';\n\nexport { ICliAuthorizationService_TOKEN, ICliPermissionRegistry_TOKEN };\n\n/**\n * A permission an extension uses, declared so tools (`perms --list`,\n * `groupmod --grant` completion, docs) can show it. Declaring is optional:\n * any `resource:action` string can be granted and checked.\n */\nexport interface CliPermissionDefinition {\n /** Permission string, `resource:action` (e.g. `files:chown`). */\n name: string;\n /** Human readable description. */\n description?: string;\n /** Module that declared it (filled in at registration). */\n module?: string;\n}\n\n/** Registry of permissions declared by modules (`ICliModule.permissions`). */\nexport interface ICliPermissionRegistry {\n register(definitions: CliPermissionDefinition[], module?: string): void;\n list(): CliPermissionDefinition[];\n get(name: string): CliPermissionDefinition | undefined;\n /** Remove the permissions registered by `module` (when it is unloaded). */\n unregister?(module: string): void;\n}\n\n/** The identity checks are made against. */\nexport interface ICliPrincipal {\n /** User id */\n id: string;\n /** Login name (used as file owner) */\n name: string;\n /** Group (role) names */\n groups: string[];\n /** Effective permissions (union of the groups' permissions) */\n permissions: string[];\n}\n\n/** rwx-style protected resource (files, directories, or anything an extension owns). */\nexport interface ICliProtectedResource {\n ownership?: ICliOwnership;\n /** 9-char mode string, e.g. `rwxr-x---` */\n permissions?: string;\n}\n\nexport type CliAccessAction = 'read' | 'write' | 'execute';\n\n/**\n * Authorization service. Provided by an auth module (the users module provides\n * one in local and in server mode). Extensions should use the helpers\n * {@link cliAuthorize} / {@link cliCanAccess}, which allow everything when no\n * authorization service is registered.\n */\nexport interface ICliAuthorizationService {\n /** The signed-in principal, or undefined when nobody is signed in. */\n getPrincipal(): ICliPrincipal | undefined;\n\n /** Does the current principal hold `permission` (wildcards honoured)? */\n can(permission: string): boolean;\n\n /**\n * rwx check on a resource for the current principal (owner / group / other).\n * Principals holding `*` or any of `bypassPermissions` are always allowed.\n * Resources without a mode or ownership are allowed.\n */\n canAccess(\n resource: ICliProtectedResource,\n action: CliAccessAction,\n bypassPermissions?: string[],\n ): boolean;\n}\n\n/** Thrown when an operation is not permitted. The message is user facing. */\nexport class CliAccessDeniedError extends Error {\n readonly code = 'EACCES';\n\n constructor(message = 'permission denied') {\n super(message);\n this.name = 'CliAccessDeniedError';\n Object.setPrototypeOf(this, CliAccessDeniedError.prototype);\n }\n}\n\n/** True for {@link CliAccessDeniedError} (also across bundle copies). */\nexport function isCliAccessDeniedError(error: unknown): error is CliAccessDeniedError {\n return (\n error instanceof CliAccessDeniedError ||\n (!!error && typeof error === 'object' && (error as any).name === 'CliAccessDeniedError')\n );\n}\n\nfunction authorizationService(\n context: Pick<ICliExecutionContext, 'services'>,\n): ICliAuthorizationService | undefined {\n try {\n return context.services.get<ICliAuthorizationService>(ICliAuthorizationService_TOKEN);\n } catch {\n return undefined;\n }\n}\n\n/**\n * Check a permission for the current principal. Returns `true` when no\n * authorization service is registered (no auth module loaded).\n */\nexport function cliAuthorize(\n context: Pick<ICliExecutionContext, 'services'>,\n permission: string,\n): boolean {\n const auth = authorizationService(context);\n return auth ? auth.can(permission) : true;\n}\n\n/**\n * rwx check for the current principal. Returns `true` when no authorization\n * service is registered.\n */\nexport function cliCanAccess(\n context: Pick<ICliExecutionContext, 'services'>,\n resource: ICliProtectedResource,\n action: CliAccessAction,\n bypassPermissions?: string[],\n): boolean {\n const auth = authorizationService(context);\n return auth ? auth.canAccess(resource, action, bypassPermissions) : true;\n}\n\n/**\n * Reference rwx evaluation shared by implementations of\n * {@link ICliAuthorizationService.canAccess}.\n */\nexport function cliEvaluateAccess(\n principal: ICliPrincipal | undefined,\n resource: ICliProtectedResource,\n action: CliAccessAction,\n bypassPermissions: string[] = [],\n): boolean {\n const mode = resource.permissions;\n const owner = resource.ownership;\n if (!mode || mode.length < 9 || !owner) return true;\n if (principal && (cliHasPermission(principal.permissions, '*') ||\n bypassPermissions.some((p) => cliHasPermission(principal.permissions, p)))) {\n return true;\n }\n let offset = 6; // other\n if (principal) {\n if (owner.uid === principal.name || owner.uid === principal.id) offset = 0;\n else if (principal.groups.some((g) => g.toLowerCase() === owner.gid.toLowerCase())) offset = 3;\n }\n const index = offset + (action === 'read' ? 0 : action === 'write' ? 1 : 2);\n return mode.charAt(index) !== '-';\n}\n","import { createCliToken } from '../models/services';\nimport { Observable } from 'rxjs';\n\n/**\n * One event on the CLI event bus.\n */\nexport interface CliEvent<T = unknown> {\n /** Namespaced type, e.g. `package:installed` or `todo:added`. */\n type: string;\n /** Event payload. */\n data: T;\n /** Who emitted it (module or command name), when known. */\n source?: string;\n /** When it was emitted (ms since epoch). */\n timestamp: number;\n}\n\nexport type CliEventHandler<T = unknown> = (event: CliEvent<T>) => void;\n\n/**\n * Payload types of the known events, keyed by event type. The built-in\n * events are listed here; plugins add their own with declaration merging:\n *\n * ```ts\n * declare module '@qodalis/cli-core' {\n * interface CliEventMap {\n * 'todo:added': { id: number; text: string };\n * }\n * }\n * ```\n *\n * Events not listed can still be emitted and received; their payload is\n * then `unknown`.\n */\nexport interface CliEventMap {\n /** Boot finished: modules are set up and the terminal accepts input. */\n 'boot:completed': { durationMs: number; modules: number; commands: number };\n\n /** A command line finished running (typed, or run with `engine.execute`). */\n 'command:executed': {\n command: string;\n exitCode: number;\n durationMs: number;\n };\n\n /** A module (plugin) was booted, at startup or later (e.g. `pkg add`). */\n 'module:loaded': { name: string; version?: string; commands: number };\n /** A module was unloaded (e.g. `pkg remove`, or before `pkg update`). */\n 'module:unloaded': { name: string };\n\n /** `pkg add` installed a package. */\n 'package:installed': { name: string; version: string };\n /** `pkg update` changed a package's version. */\n 'package:updated': {\n name: string;\n version: string;\n previousVersion: string;\n };\n /** `pkg remove` removed a package. */\n 'package:removed': { name: string; version: string };\n\n /** A server connected (at boot, or after a reconnect). */\n 'server:connected': {\n name: string;\n url: string;\n commands: number;\n reconnected: boolean;\n };\n /** A server could not be reached at boot. */\n 'server:unavailable': { name: string; url: string };\n /** A connected server went away. */\n 'server:disconnected': { name: string };\n /** An event pushed by a server over its event socket. */\n 'server:event': { server: string; type: string; data: unknown };\n\n /** Background service lifecycle (`service:registered`, `service:started`, ...). */\n 'service:registered': { name: string; [key: string]: unknown };\n 'service:started': { name: string; [key: string]: unknown };\n 'service:stopped': { name: string; [key: string]: unknown };\n 'service:completed': { name: string; [key: string]: unknown };\n 'service:failed': { name: string; error?: string; [key: string]: unknown };\n 'service:status': { name: string; [key: string]: unknown };\n /** A custom event emitted by a background service with `context.emit()`. */\n 'service:event': { service: string; type: string; data: unknown };\n\n /** A setting changed with `configure` (`category` is `system` or a plugin key). */\n 'config:changed': { category: string; key: string; value: unknown };\n /** A configuration category was reset to its defaults. */\n 'config:reset': { category: string };\n\n /** The signed-in user changed (sign-in, sign-out, `su`). */\n 'session:changed': { user?: string };\n}\n\n/** Event types with a known payload. */\nexport type CliEventType = keyof CliEventMap;\n\n/** Payload of event `K`: from {@link CliEventMap}, or `unknown`. */\nexport type CliEventData<K extends string> = K extends CliEventType\n ? CliEventMap[K]\n : unknown;\n\n/**\n * Publish/subscribe bus shared by the system, modules and commands of one\n * terminal. Handlers run synchronously in subscription order; a failing\n * handler is logged and does not affect the others or the emitter.\n *\n * Patterns: an exact type (`package:installed`), a namespace wildcard\n * (`package:*`) or `*` for everything.\n *\n * Events live in memory: each terminal has its own bus for its lifetime,\n * with a short recent history, and nothing is persisted.\n *\n * Get it from a command or module with `context.events`, or from the\n * services container with {@link ICliEventBus_TOKEN}.\n */\nexport interface ICliEventBus {\n /**\n * Emit an event to every matching handler.\n *\n * ```ts\n * bus.emit('package:installed', { name, version }); // checked against CliEventMap\n * bus.emit<TodoAdded>('todo:added', { id, text }); // explicit payload type\n * bus.emit('todo:refresh'); // custom event, no payload\n * ```\n */\n emit<K extends CliEventType>(\n type: K,\n data: CliEventMap[K],\n options?: CliEmitOptions,\n ): void;\n emit<T = unknown, K extends string = string>(\n type: K & CustomEventType<K>,\n data?: T,\n options?: CliEmitOptions,\n ): void;\n\n /**\n * Handle events matching `pattern`. Returns a function that unsubscribes.\n *\n * ```ts\n * bus.on('package:installed', (e) => e.data.version); // typed from CliEventMap\n * bus.on<TodoAdded>('todo:added', (e) => e.data.text); // explicit payload type\n * bus.on('server:*', (e) => console.log(e.type)); // anonymous: data is unknown\n * ```\n */\n on<K extends CliEventType>(\n pattern: K,\n handler: CliEventHandler<CliEventMap[K]>,\n ): () => void;\n on<T = unknown>(pattern: string, handler: CliEventHandler<T>): () => void;\n\n /** Like `on`, but only for the next matching event. */\n once<K extends CliEventType>(\n pattern: K,\n handler: CliEventHandler<CliEventMap[K]>,\n ): () => void;\n once<T = unknown>(pattern: string, handler: CliEventHandler<T>): () => void;\n\n /**\n * Recent events matching `pattern`, oldest first. The bus keeps the last\n * events in memory only: events are not persisted across reloads (state\n * that must survive a reload belongs in a state store).\n */\n history<K extends CliEventType>(\n pattern: K,\n limit?: number,\n ): CliEvent<CliEventMap[K]>[];\n history<T = unknown>(pattern?: string, limit?: number): CliEvent<T>[];\n\n /** Matching events as an observable (completes when the bus is disposed). */\n events$<K extends CliEventType>(\n pattern: K,\n ): Observable<CliEvent<CliEventMap[K]>>;\n events$<T = unknown>(pattern?: string): Observable<CliEvent<T>>;\n}\n\nexport interface CliEmitOptions {\n /** Who emits the event (module or command name). */\n source?: string;\n}\n\n/**\n * A type that is not a key of {@link CliEventMap}. Keeps `emit` from accepting\n * a known event with an unchecked payload.\n */\nexport type CustomEventType<K extends string> = K extends CliEventType\n ? never\n : K;\n\n/** Service token of the terminal's {@link ICliEventBus}. */\nexport const ICliEventBus_TOKEN = createCliToken<ICliEventBus>('cli-event-bus');\n","/**\n * Options for HTTP client requests.\n * Extends standard RequestInit with convenience fields.\n */\nexport interface CliHttpRequestOptions extends Omit<RequestInit, 'method' | 'body'> {\n /**\n * Request timeout in milliseconds. When set, the request is automatically\n * aborted after this duration. Combines with any existing abort signal.\n */\n timeout?: number;\n}\n\n/**\n * HTTP client for making requests from command processors.\n *\n * Automatically merges the command's abort signal so that requests are\n * cancelled when the user presses Ctrl+C. Provides typed convenience\n * methods for common HTTP verbs as well as a raw `fetch()` for cases\n * that need full Response access (streaming, progress, etc.).\n *\n * Available on the execution context as `context.http`.\n *\n * @example\n * ```ts\n * // Typed JSON response\n * const users = await context.http.get<User[]>('https://api.example.com/users');\n *\n * // POST with body\n * await context.http.post('https://api.example.com/users', { name: 'John' });\n *\n * // Raw fetch for streaming\n * const response = await context.http.fetch('https://example.com/file.zip');\n * const reader = response.body?.getReader();\n * ```\n */\nexport interface ICliHttpClient {\n /**\n * Make a raw HTTP request. Returns the full Response object for cases\n * that need streaming, headers, or status inspection.\n * The command's abort signal is automatically merged.\n */\n fetch(url: string, init?: RequestInit): Promise<Response>;\n\n /**\n * HTTP GET request. Returns the parsed JSON response body.\n */\n get<T = any>(url: string, options?: CliHttpRequestOptions): Promise<T>;\n\n /**\n * HTTP POST request. Automatically serializes the body as JSON\n * (unless body is FormData, Blob, string, or ArrayBuffer).\n * Returns the parsed JSON response body.\n */\n post<T = any>(url: string, body?: any, options?: CliHttpRequestOptions): Promise<T>;\n\n /**\n * HTTP PUT request. Automatically serializes the body as JSON.\n * Returns the parsed JSON response body.\n */\n put<T = any>(url: string, body?: any, options?: CliHttpRequestOptions): Promise<T>;\n\n /**\n * HTTP PATCH request. Automatically serializes the body as JSON.\n * Returns the parsed JSON response body.\n */\n patch<T = any>(url: string, body?: any, options?: CliHttpRequestOptions): Promise<T>;\n\n /**\n * HTTP DELETE request. Returns the parsed JSON response body (if any).\n */\n delete<T = any>(url: string, options?: CliHttpRequestOptions): Promise<T>;\n\n /**\n * HTTP HEAD request. Returns the full Response (no body parsing).\n */\n head(url: string, options?: CliHttpRequestOptions): Promise<Response>;\n\n /**\n * HTTP OPTIONS request. Returns the parsed JSON response body.\n */\n options<T = any>(url: string, options?: CliHttpRequestOptions): Promise<T>;\n}\n\n/**\n * Error thrown by `ICliHttpClient` JSON helpers (`get`, `post`, `put`,\n * `patch`, `delete`, `options`) when the server responds with a non-2xx status.\n *\n * Exposes the HTTP status so callers can react to specific responses\n * (for example, clearing a stored session token on `401`).\n *\n * @example\n * ```ts\n * try {\n * await context.http.get(url);\n * } catch (e) {\n * if (e instanceof CliHttpError && e.status === 401) {\n * // token expired or revoked\n * }\n * }\n * ```\n */\nexport class CliHttpError extends Error {\n constructor(\n message: string,\n /** HTTP status code of the failed response */\n public readonly status: number,\n /** HTTP status text of the failed response */\n public readonly statusText: string = '',\n /** Parsed JSON error body, when the server returned one */\n public readonly body?: unknown,\n ) {\n super(message);\n this.name = 'CliHttpError';\n Object.setPrototypeOf(this, CliHttpError.prototype);\n }\n}\n","import { ICliCommandAuthor } from '../interfaces';\n\nexport const DefaultLibraryAuthor: ICliCommandAuthor = {\n name: 'Nicolae Lupei',\n email: 'nicolae.lupei@qodalis.com',\n};\n\nexport const constants = {\n DefaultLibraryAuthor,\n};\n","/**\n * Returns a promise that resolves after the given number of milliseconds.\n * @param ms Delay duration in milliseconds\n */\nexport const delay = (ms: number): Promise<void> => {\n return new Promise((resolve) => setTimeout(resolve, ms));\n};\n","/**\n * Split text into arguments like a POSIX shell: spaces separate words,\n * quotes are removed (`\"a b\"` is one word), single quotes keep everything\n * literally, and a backslash escapes the next character outside quotes\n * (`my\\ file`) or `\"`, `\\`, `$` and `` ` `` inside double quotes. A quote\n * without a closing one is ordinary text (`it's`).\n */\nexport function splitShellWords(text: string): string[] {\n const words: string[] = [];\n let current = '';\n let inWord = false;\n for (let i = 0; i < text.length; i++) {\n const ch = text[i];\n if (ch === '\\\\' && i + 1 < text.length) {\n current += text[++i];\n inWord = true;\n } else if (ch === \"'\" && text.indexOf(\"'\", i + 1) !== -1) {\n const end = text.indexOf(\"'\", i + 1);\n current += text.slice(i + 1, end);\n inWord = true;\n i = end;\n } else if (ch === '\"' && closingDoubleQuote(text, i) !== -1) {\n const end = closingDoubleQuote(text, i);\n current += unescapeDoubleQuoted(text.slice(i + 1, end));\n inWord = true;\n i = end;\n } else if (/\\s/.test(ch)) {\n if (inWord) words.push(current);\n current = '';\n inWord = false;\n } else {\n current += ch;\n inWord = true;\n }\n }\n if (inWord) words.push(current);\n return words;\n}\n\n/**\n * The arguments as a shell's echo prints them: {@link splitShellWords}\n * joined by one space. Inside double quotes, a backslash before other\n * characters stays (`\"a\\nb\"`) for echo's escape step.\n */\nexport function joinShellWords(text: string): string {\n return splitShellWords(text).join(' ');\n}\n\n/** Quote a value so {@link splitShellWords} reads it back as one word. */\nexport function quoteShellWord(value: string): string {\n if (value !== '' && !/[\\s\"'\\\\$`|&;<>(){}*?[\\]#~]/.test(value)) return value;\n if (!value.includes(\"'\")) return `'${value}'`;\n return `\"${value.replace(/([\"\\\\$`])/g, '\\\\$1')}\"`;\n}\n\n/** Index of the `\"` closing the one at `start` (skipping `\\\"`), or -1. */\nfunction closingDoubleQuote(text: string, start: number): number {\n for (let i = start + 1; i < text.length; i++) {\n if (text[i] === '\\\\') i++;\n else if (text[i] === '\"') return i;\n }\n return -1;\n}\n\nfunction unescapeDoubleQuoted(text: string): string {\n return text.replace(/\\\\([\"\\\\$`])/g, '$1');\n}\n","import { ICliCommandProcessor, ICliExecutionContext } from '../interfaces';\nimport { CliForegroundColor, CliProcessCommand } from '../models';\nimport { joinShellWords } from './shell-words';\n\nexport class ObjectDescriber {\n static describe(\n obj: any,\n options?: {\n filter?: (o: {\n funcName: string;\n func: any;\n args: string[];\n }) => boolean;\n },\n ): ICliCommandProcessor[] {\n const { filter } = options || {};\n\n const processors: ICliCommandProcessor[] = [];\n\n const keys = Object.keys(obj);\n\n const functions = keys.filter((key) => typeof obj[key] === 'function');\n\n for (const func of functions) {\n const funcValue = obj[func];\n const args = this.getFunctionArguments(funcValue);\n\n if (filter) {\n const shouldInclude = filter({\n funcName: func,\n func: funcValue,\n args,\n });\n\n if (!shouldInclude) {\n continue;\n }\n }\n\n const supportsMultipleArgs = args.length > 1;\n\n const supportsDynamicArgs = this.supportsDynamicArgs(funcValue);\n\n if (args.length === 0 && !supportsDynamicArgs) {\n continue;\n }\n\n if (\n args.length > 0 &&\n args.some((arg) => arg === 'function' || arg === 'func')\n ) {\n continue;\n }\n\n const processor: ICliCommandProcessor = {\n command: func,\n description: `A command that executes the function ${func} with the provided arguments`,\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'debug',\n description: 'Debug',\n type: 'boolean',\n required: false,\n },\n ],\n processCommand: async (\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ) => {\n const debug = command.args['debug'] as boolean;\n\n if (debug) {\n context.writer.writeln('Executing command: ' + func);\n context.writer.writeln(\n 'Arguments: ' + JSON.stringify(command.args),\n );\n context.writer.writeln(\n 'Function: ' + funcValue.toString(),\n );\n }\n\n const argsToCallF: any[] = [];\n\n if (supportsMultipleArgs) {\n for (const arg of args.slice(1)) {\n argsToCallF.push(command.args[arg]);\n }\n }\n\n // The text as a shell reads it: quotes removed\n const value =\n command.value === undefined\n ? undefined\n : joinShellWords(command.value);\n\n if (supportsDynamicArgs && value) {\n const delimiter = command.args['delimiter'] || ',';\n argsToCallF.push(...value.split(delimiter));\n }\n\n if (debug) {\n context.writer.writeln(\n 'Arguments after processing: ' +\n JSON.stringify(argsToCallF),\n );\n }\n\n const result =\n supportsDynamicArgs && args.length === 0\n ? funcValue(...argsToCallF)\n : funcValue(value, ...argsToCallF);\n\n context.writer.write(\n context.writer.wrapInColor(\n 'Result: ',\n CliForegroundColor.Yellow,\n ),\n );\n\n if (result === null) {\n context.writer.writeln('null');\n } else if (result === undefined) {\n context.writer.writeln('undefined');\n } else if (typeof result === 'boolean') {\n context.writer.writeln(result.toString());\n } else if (typeof result === 'number') {\n context.writer.writeln(result.toString());\n } else if (Array.isArray(result)) {\n context.writer.writeJson(result);\n } else if (typeof result === 'string') {\n context.writer.writeln(result);\n } else if (typeof result === 'object') {\n context.writer.writeJson(result);\n } else {\n context.writer.writeln(result?.toString());\n }\n\n context.process.output(result?.toString());\n },\n writeDescription: (context: ICliExecutionContext) => {\n context.writer.writeln(func);\n },\n };\n\n if (supportsDynamicArgs) {\n processor.parameters?.push({\n name: 'delimiter',\n description: 'Delimiter',\n type: 'string',\n required: false,\n });\n }\n\n if (supportsMultipleArgs) {\n processor.parameters?.push(\n ...args.slice(1).map((arg) => ({\n name: arg,\n description: arg,\n type: 'string',\n required: false,\n })),\n );\n }\n\n processors.push(processor);\n }\n\n return processors;\n }\n\n static supportsDynamicArgs(func: any): boolean {\n const funcStr = func.toString();\n return funcStr.includes('arguments');\n }\n\n static getFunctionArguments(func: any): string[] {\n const funcStr = func.toString();\n const args = funcStr.match(/\\(([^)]*)\\)/);\n if (!args) {\n return [];\n }\n return args[1]\n .split(',')\n .map((arg: string) => arg.trim())\n .filter((arg: string) => arg !== '');\n }\n}\n","import {\n ICliStateStore,\n ICliCommandProcessorRegistry,\n ICliConfigurationOption,\n ICliExecutionContext,\n} from '../interfaces';\n\n/**\n * Token for the configure command's state store.\n */\nexport const CLI_CONFIGURE_STORE_NAME = 'configure';\n\n/**\n * Retrieves a configuration value for a given category and key\n * from a configuration state store.\n *\n * @param state The state store to read from (should be the 'configure' store)\n * @param category The category (processor command name or 'system')\n * @param key The configuration key\n * @param defaultValue Fallback value if not configured\n * @returns The configured value or the default\n */\nexport function getConfigValue<T = any>(\n state: ICliStateStore,\n category: string,\n key: string,\n defaultValue: T,\n): T {\n try {\n const s = state.getState<Record<string, any>>();\n const bucket =\n category === 'system' ? s?.['system'] : s?.['plugins']?.[category];\n if (bucket && key in bucket) {\n return bucket[key] as T;\n }\n } catch {\n // State not initialized or not available\n }\n return defaultValue;\n}\n\n/**\n * Retrieves a plugin configuration value from the execution context.\n * This is a convenience wrapper for plugins — handles store lookup internally.\n *\n * @param context The execution context\n * @param category The category (usually the processor's command name)\n * @param key The configuration key\n * @param defaultValue Fallback value if not configured\n * @returns The configured value or the default\n */\nexport function getPluginConfigValue<T = any>(\n context: ICliExecutionContext,\n category: string,\n key: string,\n defaultValue: T,\n): T {\n try {\n const storeManager = context.services.getRequired<any>(\n 'cli-state-store-manager',\n );\n if (!storeManager) return defaultValue;\n const store = storeManager.getStateStore(CLI_CONFIGURE_STORE_NAME);\n if (!store) return defaultValue;\n return getConfigValue(store, category, key, defaultValue);\n } catch {\n return defaultValue;\n }\n}\n\n/**\n * Resolves all configuration options from registered processors,\n * grouped by category.\n */\nexport function resolveConfigurationCategories(\n registry: ICliCommandProcessorRegistry,\n): Map<\n string,\n { processorCommand: string; options: ICliConfigurationOption[] }\n> {\n const categories = new Map<\n string,\n { processorCommand: string; options: ICliConfigurationOption[] }\n >();\n\n for (const processor of registry.processors) {\n if (\n processor.configurationOptions &&\n processor.configurationOptions.length > 0\n ) {\n for (const option of processor.configurationOptions) {\n const cat = option.category || processor.command;\n if (!categories.has(cat)) {\n categories.set(cat, {\n processorCommand: processor.command,\n options: [],\n });\n }\n categories.get(cat)!.options.push(option);\n }\n }\n }\n\n return categories;\n}\n","import { Terminal } from '@xterm/xterm';\n\n/**\n * Clears the current line in the terminal, accounting for text that wraps across multiple lines.\n * @param terminal The xterm terminal instance\n * @param contentLength The total visible character count on the line (prompt + text)\n */\nexport const clearTerminalLine = (\n terminal: Terminal,\n contentLength: number,\n): void => {\n if (contentLength <= 0) return;\n const lines = Math.ceil(contentLength / terminal.cols);\n\n for (let i = 0; i < lines; i++) {\n terminal.write('\\x1b[2K');\n if (i < lines - 1) {\n terminal.write('\\x1b[A');\n }\n }\n\n terminal.write('\\r');\n};\n","import * as semver from 'semver';\n\n/**\n * Compares two dotted version strings.\n * Returns -1 if a < b, 0 if equal, 1 if a > b.\n */\nexport function compareVersions(a: string, b: string): -1 | 0 | 1 {\n const coercedA = semver.coerce(a);\n const coercedB = semver.coerce(b);\n if (!coercedA || !coercedB) return 0;\n return semver.compare(coercedA, coercedB) as -1 | 0 | 1;\n}\n\n/**\n * Returns true if the installed version satisfies the minimum required version.\n */\nexport function satisfiesMinVersion(\n installed: string,\n required: string,\n): boolean {\n return compareVersions(installed, required) >= 0;\n}\n\n/**\n * Returns true if the installed version satisfies the given semver range.\n * If range is undefined/empty, returns true (no constraint).\n * If range looks like a plain version (no operators), treats it as >= that version.\n */\nexport function satisfiesVersionRange(\n installed: string,\n range: string | undefined,\n): boolean {\n if (!range) return true;\n const coerced = semver.coerce(installed);\n if (!coerced) return false;\n if (semver.valid(range)) {\n return semver.gte(coerced, semver.coerce(range)!);\n }\n return semver.satisfies(coerced, range);\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.4.2';\nexport const API_VERSION = 2;\n ","import { CliHeadersProvider, resolveHeaders } from '../models/server';\nimport { API_VERSION } from '../version';\n\n/**\n * Describes the version information returned by a CLI server's discovery endpoint.\n */\nexport interface ServerVersionInfo {\n supportedVersions: number[];\n preferredVersion: number;\n serverVersion: string;\n}\n\n/** Endpoint path for server version discovery */\nconst VERSIONS_ENDPOINT = '/api/qcli/versions';\n\n/**\n * Negotiates the API version between a frontend CLI client and a backend server.\n *\n * Flow:\n * 1. Client calls `discover(baseUrl)` which hits `GET ${VERSIONS_ENDPOINT}`\n * 2. Server returns supported versions\n * 3. Client picks the highest mutually supported version\n * 4. All subsequent calls use `/api/v{n}/qcli/*`\n */\nexport class ServerVersionNegotiator {\n private static readonly CLIENT_SUPPORTED_VERSIONS = [API_VERSION];\n\n /**\n * Given a server's version info, pick the highest mutually compatible version.\n * Returns null if no compatible version exists.\n */\n static negotiate(serverInfo: ServerVersionInfo): number | null {\n const common = this.CLIENT_SUPPORTED_VERSIONS.filter((v) =>\n serverInfo.supportedVersions.includes(v),\n );\n return common.length > 0 ? Math.max(...common) : null;\n }\n\n /**\n * Discover the server's supported versions and negotiate the best match.\n * Returns the negotiated API version and the base path for all subsequent calls,\n * or null if the server is unreachable or incompatible.\n */\n static async discover(\n baseUrl: string,\n headers?: CliHeadersProvider,\n options?: {\n /** Rethrow when the server cannot be reached (instead of `null`, \"no discovery\") */\n rethrowNetworkErrors?: boolean;\n },\n ): Promise<{ apiVersion: number; basePath: string } | null> {\n let response: Response;\n try {\n const resolved = resolveHeaders(headers);\n response = await fetch(`${baseUrl}${VERSIONS_ENDPOINT}`, {\n headers: Object.keys(resolved).length > 0 ? resolved : undefined,\n });\n } catch (e) {\n if (options?.rethrowNetworkErrors) throw e;\n return null;\n }\n try {\n if (!response.ok) return null;\n\n const info: ServerVersionInfo = await response.json();\n const version = this.negotiate(info);\n\n if (version === null) return null;\n\n return {\n apiVersion: version,\n basePath: `${baseUrl}/api/v${version}/qcli`,\n };\n } catch {\n return null;\n }\n }\n}\n","import { CliHeadersProvider, resolveHeaders, resolveServerHeaders } from '../models/server';\nimport type { ICliServerAuthService, ICliServiceProvider } from '../interfaces/services';\nimport { ICliServerAuthService_TOKEN } from '../interfaces/services';\n\n/**\n * Copies headers into a WebSocket URL as `_header_<name>` query params.\n *\n * **Unsafe:** query parameters are visible in browser history and in server,\n * proxy and CDN access logs. Used only for servers configured with\n * `unsafeHeadersInWebSocketUrl: true`; everything else goes through\n * {@link buildServerWebSocketUrl}, which keeps headers out of the URL.\n *\n * @param wsUrl The base WebSocket URL (may already contain query parameters)\n * @param headers The headers provider from CliServerConfig (may include Authorization, etc.)\n * @returns The WebSocket URL with the headers appended as query parameters\n */\nexport function buildAuthenticatedWebSocketUrl(\n wsUrl: string,\n headers?: CliHeadersProvider,\n): string {\n const resolved = resolveHeaders(headers);\n if (Object.keys(resolved).length === 0) {\n return wsUrl;\n }\n\n const separator = wsUrl.includes('?') ? '&' : '?';\n const params = Object.entries(resolved)\n .map(\n ([key, value]) =>\n `_header_${encodeURIComponent(key)}=${encodeURIComponent(value)}`,\n )\n .join('&');\n\n return `${wsUrl}${separator}${params}`;\n}\n\n/** Options for {@link buildServerWebSocketUrl} and {@link resolveServerWebSocketUrl}. */\nexport interface CliWebSocketAuthOptions {\n /** See `CliServerConfig.unsafeHeadersInWebSocketUrl` */\n unsafeHeadersInWebSocketUrl?: boolean;\n}\n\n/** Ticket endpoint of the users plugin, relative to the server root */\nexport const CLI_WS_TICKET_PATH = '/api/v1/qcli/sessions/ws-ticket';\n\n/** Servers already warned about, so each warns once per page */\nconst warnedServers = new Set<string>();\n\n/**\n * Authenticates a WebSocket URL with headers without putting them in it:\n * fetches a single-use ticket from `POST /api/v1/qcli/sessions/ws-ticket`\n * with the headers and appends `?ticket=`. When no ticket can be had, the\n * socket connects without credentials and a warning is logged once.\n * Headers are copied into the URL only with `unsafeHeadersInWebSocketUrl`.\n */\nexport async function buildServerWebSocketUrl(\n wsUrl: string,\n headers?: CliHeadersProvider,\n options?: CliWebSocketAuthOptions,\n): Promise<string> {\n const resolved = resolveHeaders(headers);\n if (Object.keys(resolved).length === 0) {\n return wsUrl;\n }\n if (options?.unsafeHeadersInWebSocketUrl) {\n return buildAuthenticatedWebSocketUrl(wsUrl, resolved);\n }\n\n const httpBase = toHttpBaseUrl(wsUrl);\n const ticket = await fetchWebSocketTicket(httpBase, resolved);\n if (ticket) {\n return appendQueryParams(wsUrl, { ticket });\n }\n\n if (!warnedServers.has(httpBase)) {\n warnedServers.add(httpBase);\n console.warn(\n `[qodalis-cli] ${httpBase} issued no WebSocket ticket (${CLI_WS_TICKET_PATH}), ` +\n 'so its sockets connect without credentials. Configured headers are never copied ' +\n 'into WebSocket URLs; enable the users plugin on the server, or set ' +\n '`unsafeHeadersInWebSocketUrl: true` on the server config to keep the old behaviour.',\n );\n }\n return wsUrl;\n}\n\n/**\n * Build the WebSocket URL for a configured server. Prefers upgrade params\n * from auth providers (e.g. a single-use ticket from the users module);\n * otherwise authenticates with the server's headers through\n * {@link buildServerWebSocketUrl}.\n */\nexport async function resolveServerWebSocketUrl(\n services: ICliServiceProvider | undefined,\n serverName: string,\n wsUrl: string,\n configHeaders?: CliHeadersProvider,\n options?: CliWebSocketAuthOptions,\n): Promise<string> {\n const authService = services?.get<ICliServerAuthService>(ICliServerAuthService_TOKEN);\n const params = await authService?.getWebSocketParams?.(serverName);\n if (params) {\n return appendQueryParams(wsUrl, params);\n }\n return buildServerWebSocketUrl(\n wsUrl,\n () => resolveServerHeaders(services, serverName, configHeaders),\n options,\n );\n}\n\n/** `ws://host/base/ws/v1/qcli/events?x` -> `http://host/base` */\nfunction toHttpBaseUrl(wsUrl: string): string {\n const url = new URL(wsUrl);\n const wsSegment = url.pathname.indexOf('/ws/');\n const basePath = wsSegment >= 0 ? url.pathname.slice(0, wsSegment) : '';\n const protocol = url.protocol === 'wss:' || url.protocol === 'https:' ? 'https:' : 'http:';\n return `${protocol}//${url.host}${basePath}`;\n}\n\nasync function fetchWebSocketTicket(\n httpBase: string,\n headers: Record<string, string>,\n): Promise<string | undefined> {\n try {\n const response = await fetch(`${httpBase}${CLI_WS_TICKET_PATH}`, {\n method: 'POST',\n headers: { ...headers, 'Content-Type': 'application/json' },\n body: '{}',\n });\n if (!response.ok) return undefined;\n const body = await response.json();\n return typeof body?.ticket === 'string' && body.ticket ? body.ticket : undefined;\n } catch {\n return undefined;\n }\n}\n\n/** Append query params to a URL that may already have some. */\nexport function appendQueryParams(url: string, params: Record<string, string>): string {\n const entries = Object.entries(params);\n if (!entries.length) return url;\n const query = entries.map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`).join('&');\n return `${url}${url.includes('?') ? '&' : '?'}${query}`;\n}\n","import type { DefaultThemesType } from './cli-theme';\n\nexport const DefaultThemes = {\n default: {\n background: '#070b14',\n foreground: '#dee2ea',\n cursor: '#818cf8',\n selectionBackground: '#334155',\n selectionForeground: '#ffffff',\n black: '#0d1117',\n red: '#f87171',\n green: '#4ade80',\n yellow: '#fbbf24',\n blue: '#818cf8',\n magenta: '#c084fc',\n cyan: '#67e8f9',\n white: '#dee2ea',\n brightBlack: '#475569',\n brightRed: '#fca5a5',\n brightGreen: '#86efac',\n brightYellow: '#fde68a',\n brightBlue: '#a5b4fc',\n brightMagenta: '#d8b4fe',\n brightCyan: '#a5f3fc',\n brightWhite: '#f1f5f9',\n },\n // Soft grey paper and slate text; every color reads at 4.5:1 or more on the background\n light: {\n background: '#f7f8fa',\n foreground: '#334155',\n cursor: '#4f46e5',\n cursorAccent: '#f7f8fa',\n selectionBackground: '#d9def7',\n selectionForeground: '#1e293b',\n black: '#334155',\n red: '#c93c37',\n green: '#2c7a4b',\n yellow: '#946200',\n blue: '#3d5bd9',\n magenta: '#8b3fc7',\n cyan: '#0e7586',\n white: '#5b6577',\n brightBlack: '#667085',\n brightRed: '#b42a25',\n brightGreen: '#1f6a3d',\n brightYellow: '#7a5100',\n brightBlue: '#2f47bd',\n brightMagenta: '#7431ad',\n brightCyan: '#0a6170',\n brightWhite: '#1e293b',\n },\n classic: {\n background: '#0c0c0c',\n foreground: '#cccccc',\n cursor: '#cccccc',\n selectionBackground: '#264f78',\n selectionForeground: '#ffffff',\n black: '#0c0c0c',\n red: '#c50f1f',\n green: '#13a10e',\n yellow: '#c19c00',\n blue: '#0037da',\n magenta: '#881798',\n cyan: '#3a96dd',\n white: '#cccccc',\n brightBlack: '#767676',\n brightRed: '#e74856',\n brightGreen: '#16c60c',\n brightYellow: '#f9f1a5',\n brightBlue: '#3b78ff',\n brightMagenta: '#b4009e',\n brightCyan: '#61d6d6',\n brightWhite: '#f2f2f2',\n },\n dracula: {\n background: '#282A36',\n foreground: '#F8F8F2',\n cursor: '#50FA7B',\n black: '#21222C',\n red: '#FF5555',\n green: '#50FA7B',\n yellow: '#F1FA8C',\n blue: '#BD93F9',\n magenta: '#FF79C6',\n cyan: '#8BE9FD',\n white: '#F8F8F2',\n brightBlack: '#6272A4',\n brightRed: '#FF6E6E',\n brightGreen: '#69FF94',\n brightYellow: '#FFFFA5',\n brightBlue: '#D6ACFF',\n brightMagenta: '#FF92D0',\n brightCyan: '#A4FFFF',\n brightWhite: '#FFFFFF',\n },\n monokai: {\n background: '#272822',\n foreground: '#F8F8F2',\n cursor: '#F8F8F0',\n black: '#272822',\n red: '#F92672',\n green: '#A6E22E',\n yellow: '#F4BF75',\n blue: '#66D9EF',\n magenta: '#AE81FF',\n cyan: '#A1EFE4',\n white: '#F8F8F2',\n brightBlack: '#75715E',\n brightRed: '#F92672',\n brightGreen: '#A6E22E',\n brightYellow: '#F4BF75',\n brightBlue: '#66D9EF',\n brightMagenta: '#AE81FF',\n brightCyan: '#A1EFE4',\n brightWhite: '#F9F8F5',\n },\n solarizedDark: {\n background: '#002B36',\n foreground: '#839496',\n cursor: '#93A1A1',\n black: '#073642',\n red: '#DC322F',\n green: '#859900',\n yellow: '#B58900',\n blue: '#268BD2',\n magenta: '#D33682',\n cyan: '#2AA198',\n white: '#EEE8D5',\n brightBlack: '#002B36',\n brightRed: '#CB4B16',\n brightGreen: '#586E75',\n brightYellow: '#657B83',\n brightBlue: '#839496',\n brightMagenta: '#6C71C4',\n brightCyan: '#93A1A1',\n brightWhite: '#FDF6E3',\n },\n solarizedLight: {\n background: '#FDF6E3',\n foreground: '#657B83',\n cursor: '#586E75',\n black: '#073642',\n red: '#DC322F',\n green: '#859900',\n yellow: '#B58900',\n blue: '#268BD2',\n magenta: '#D33682',\n cyan: '#2AA198',\n white: '#EEE8D5',\n brightBlack: '#002B36',\n brightRed: '#CB4B16',\n brightGreen: '#586E75',\n brightYellow: '#657B83',\n brightBlue: '#839496',\n brightMagenta: '#6C71C4',\n brightCyan: '#93A1A1',\n brightWhite: '#FDF6E3',\n },\n gruvboxDark: {\n background: '#282828',\n foreground: '#EBDBB2',\n cursor: '#EBDBB2',\n black: '#282828',\n red: '#CC241D',\n green: '#98971A',\n yellow: '#D79921',\n blue: '#458588',\n magenta: '#B16286',\n cyan: '#689D6A',\n white: '#A89984',\n brightBlack: '#928374',\n brightRed: '#FB4934',\n brightGreen: '#B8BB26',\n brightYellow: '#FABD2F',\n brightBlue: '#83A598',\n brightMagenta: '#D3869B',\n brightCyan: '#8EC07C',\n brightWhite: '#EBDBB2',\n },\n gruvboxLight: {\n background: '#FBF1C7',\n foreground: '#3C3836',\n cursor: '#3C3836',\n black: '#FBF1C7',\n red: '#9D0006',\n green: '#79740E',\n yellow: '#B57614',\n blue: '#076678',\n magenta: '#8F3F71',\n cyan: '#427B58',\n white: '#3C3836',\n brightBlack: '#D5C4A1',\n brightRed: '#AF3A03',\n brightGreen: '#B8BB26',\n brightYellow: '#FABD2F',\n brightBlue: '#83A598',\n brightMagenta: '#D3869B',\n brightCyan: '#8EC07C',\n brightWhite: '#EBDBB2',\n },\n nord: {\n background: '#2E3440',\n foreground: '#D8DEE9',\n cursor: '#88C0D0',\n black: '#3B4252',\n red: '#BF616A',\n green: '#A3BE8C',\n yellow: '#EBCB8B',\n blue: '#81A1C1',\n magenta: '#B48EAD',\n cyan: '#88C0D0',\n white: '#E5E9F0',\n brightBlack: '#4C566A',\n brightRed: '#BF616A',\n brightGreen: '#A3BE8C',\n brightYellow: '#EBCB8B',\n brightBlue: '#81A1C1',\n brightMagenta: '#B48EAD',\n brightCyan: '#8FBCBB',\n brightWhite: '#ECEFF4',\n },\n oneDark: {\n background: '#282C34',\n foreground: '#ABB2BF',\n cursor: '#528BFF',\n black: '#282C34',\n red: '#E06C75',\n green: '#98C379',\n yellow: '#E5C07B',\n blue: '#61AFEF',\n magenta: '#C678DD',\n cyan: '#56B6C2',\n white: '#ABB2BF',\n brightBlack: '#5C6370',\n brightRed: '#E06C75',\n brightGreen: '#98C379',\n brightYellow: '#E5C07B',\n brightBlue: '#61AFEF',\n brightMagenta: '#C678DD',\n brightCyan: '#56B6C2',\n brightWhite: '#FFFFFF',\n },\n material: {\n background: '#263238',\n foreground: '#ECEFF1',\n cursor: '#FFCC00',\n black: '#263238',\n red: '#F07178',\n green: '#C3E88D',\n yellow: '#FFCB6B',\n blue: '#82AAFF',\n magenta: '#C792EA',\n cyan: '#89DDFF',\n white: '#EEFFFF',\n brightBlack: '#546E7A',\n brightRed: '#F07178',\n brightGreen: '#C3E88D',\n brightYellow: '#FFCB6B',\n brightBlue: '#82AAFF',\n brightMagenta: '#C792EA',\n brightCyan: '#89DDFF',\n brightWhite: '#FFFFFF',\n },\n highContrastLight: {\n background: '#FFFACD',\n foreground: '#000000',\n cursor: '#FFA500',\n selectionBackground: '#FFD700',\n black: '#3B3A32',\n red: '#D32F2F',\n green: '#388E3C',\n yellow: '#FBC02D',\n blue: '#1976D2',\n magenta: '#8E24AA',\n cyan: '#0097A7',\n white: '#FFFFFF',\n brightBlack: '#616161',\n brightRed: '#FF5252',\n brightGreen: '#69F0AE',\n brightYellow: '#FFEB3B',\n brightBlue: '#64B5F6',\n brightMagenta: '#BA68C8',\n brightCyan: '#4DD0E1',\n brightWhite: '#FAFAFA',\n },\n tokyoNight: {\n background: '#1a1b26',\n foreground: '#c0caf5',\n cursor: '#c0caf5',\n selectionBackground: '#33467c',\n black: '#15161e',\n red: '#f7768e',\n green: '#9ece6a',\n yellow: '#e0af68',\n blue: '#7aa2f7',\n magenta: '#bb9af7',\n cyan: '#7dcfff',\n white: '#a9b1d6',\n brightBlack: '#414868',\n brightRed: '#f7768e',\n brightGreen: '#9ece6a',\n brightYellow: '#e0af68',\n brightBlue: '#7aa2f7',\n brightMagenta: '#bb9af7',\n brightCyan: '#7dcfff',\n brightWhite: '#c0caf5',\n },\n catppuccinMocha: {\n background: '#1e1e2e',\n foreground: '#cdd6f4',\n cursor: '#f5e0dc',\n selectionBackground: '#45475a',\n black: '#45475a',\n red: '#f38ba8',\n green: '#a6e3a1',\n yellow: '#f9e2af',\n blue: '#89b4fa',\n magenta: '#f5c2e7',\n cyan: '#94e2d5',\n white: '#bac2de',\n brightBlack: '#585b70',\n brightRed: '#f38ba8',\n brightGreen: '#a6e3a1',\n brightYellow: '#f9e2af',\n brightBlue: '#89b4fa',\n brightMagenta: '#f5c2e7',\n brightCyan: '#94e2d5',\n brightWhite: '#a6adc8',\n },\n catppuccinFrappe: {\n background: '#303446',\n foreground: '#c6d0f5',\n cursor: '#f2d5cf',\n selectionBackground: '#51576d',\n black: '#51576d',\n red: '#e78284',\n green: '#a6d189',\n yellow: '#e5c890',\n blue: '#8caaee',\n magenta: '#f4b8e4',\n cyan: '#81c8be',\n white: '#b5bfe2',\n brightBlack: '#626880',\n brightRed: '#e78284',\n brightGreen: '#a6d189',\n brightYellow: '#e5c890',\n brightBlue: '#8caaee',\n brightMagenta: '#f4b8e4',\n brightCyan: '#81c8be',\n brightWhite: '#a5adce',\n },\n rosePine: {\n background: '#191724',\n foreground: '#e0def4',\n cursor: '#524f67',\n selectionBackground: '#2a283e',\n black: '#26233a',\n red: '#eb6f92',\n green: '#31748f',\n yellow: '#f6c177',\n blue: '#9ccfd8',\n magenta: '#c4a7e7',\n cyan: '#ebbcba',\n white: '#e0def4',\n brightBlack: '#6e6a86',\n brightRed: '#eb6f92',\n brightGreen: '#31748f',\n brightYellow: '#f6c177',\n brightBlue: '#9ccfd8',\n brightMagenta: '#c4a7e7',\n brightCyan: '#ebbcba',\n brightWhite: '#e0def4',\n },\n kanagawa: {\n background: '#1f1f28',\n foreground: '#dcd7ba',\n cursor: '#c8c093',\n selectionBackground: '#2d4f67',\n black: '#16161d',\n red: '#c34043',\n green: '#76946a',\n yellow: '#c0a36e',\n blue: '#7e9cd8',\n magenta: '#957fb8',\n cyan: '#6a9589',\n white: '#c8c093',\n brightBlack: '#727169',\n brightRed: '#e82424',\n brightGreen: '#98bb6c',\n brightYellow: '#e6c384',\n brightBlue: '#7fb4ca',\n brightMagenta: '#938aa9',\n brightCyan: '#7aa89f',\n brightWhite: '#dcd7ba',\n },\n everforestDark: {\n background: '#2d353b',\n foreground: '#d3c6aa',\n cursor: '#d3c6aa',\n selectionBackground: '#543a48',\n black: '#475258',\n red: '#e67e80',\n green: '#a7c080',\n yellow: '#dbbc7f',\n blue: '#7fbbb3',\n magenta: '#d699b6',\n cyan: '#83c092',\n white: '#d3c6aa',\n brightBlack: '#475258',\n brightRed: '#e67e80',\n brightGreen: '#a7c080',\n brightYellow: '#dbbc7f',\n brightBlue: '#7fbbb3',\n brightMagenta: '#d699b6',\n brightCyan: '#83c092',\n brightWhite: '#d3c6aa',\n },\n ayuDark: {\n background: '#0b0e14',\n foreground: '#bfbdb6',\n cursor: '#e6b450',\n selectionBackground: '#1b3a4b',\n black: '#01060e',\n red: '#ea6c73',\n green: '#91b362',\n yellow: '#f9af4f',\n blue: '#53bdfa',\n magenta: '#fae994',\n cyan: '#90e1c6',\n white: '#c7c7c7',\n brightBlack: '#686868',\n brightRed: '#f07178',\n brightGreen: '#c2d94c',\n brightYellow: '#ffb454',\n brightBlue: '#59c2ff',\n brightMagenta: '#ffee99',\n brightCyan: '#95e6cb',\n brightWhite: '#ffffff',\n },\n catppuccinLatte: {\n background: '#eff1f5',\n foreground: '#4c4f69',\n cursor: '#dc8a78',\n selectionBackground: '#acb0be',\n black: '#5c5f77',\n red: '#d20f39',\n green: '#40a02b',\n yellow: '#df8e1d',\n blue: '#1e66f5',\n magenta: '#ea76cb',\n cyan: '#179299',\n white: '#acb0be',\n brightBlack: '#6c6f85',\n brightRed: '#d20f39',\n brightGreen: '#40a02b',\n brightYellow: '#df8e1d',\n brightBlue: '#1e66f5',\n brightMagenta: '#ea76cb',\n brightCyan: '#179299',\n brightWhite: '#bcc0cc',\n },\n rosePineDawn: {\n background: '#faf4ed',\n foreground: '#575279',\n cursor: '#9893a5',\n selectionBackground: '#dfdad9',\n black: '#f2e9e1',\n red: '#b4637a',\n green: '#286983',\n yellow: '#ea9d34',\n blue: '#56949f',\n magenta: '#907aa9',\n cyan: '#d7827e',\n white: '#575279',\n brightBlack: '#9893a5',\n brightRed: '#b4637a',\n brightGreen: '#286983',\n brightYellow: '#ea9d34',\n brightBlue: '#56949f',\n brightMagenta: '#907aa9',\n brightCyan: '#d7827e',\n brightWhite: '#575279',\n },\n everforestLight: {\n background: '#fdf6e3',\n foreground: '#5c6a72',\n cursor: '#5c6a72',\n selectionBackground: '#e6e2cc',\n black: '#5c6a72',\n red: '#f85552',\n green: '#8da101',\n yellow: '#dfa000',\n blue: '#3a94c5',\n magenta: '#df69ba',\n cyan: '#35a77c',\n white: '#dfddc8',\n brightBlack: '#708089',\n brightRed: '#f85552',\n brightGreen: '#8da101',\n brightYellow: '#dfa000',\n brightBlue: '#3a94c5',\n brightMagenta: '#df69ba',\n brightCyan: '#35a77c',\n brightWhite: '#e8e5d0',\n },\n githubLight: {\n background: '#ffffff',\n foreground: '#24292f',\n cursor: '#044289',\n selectionBackground: '#0969da33',\n black: '#24292f',\n red: '#cf222e',\n green: '#116329',\n yellow: '#4d2d00',\n blue: '#0969da',\n magenta: '#8250df',\n cyan: '#1b7c83',\n white: '#6e7781',\n brightBlack: '#57606a',\n brightRed: '#a40e26',\n brightGreen: '#1a7f37',\n brightYellow: '#633c01',\n brightBlue: '#218bff',\n brightMagenta: '#a475f9',\n brightCyan: '#3192aa',\n brightWhite: '#8c959f',\n },\n cyberpunk: {\n background: '#0a0a1a',\n foreground: '#0abdc6',\n cursor: '#ff2079',\n selectionBackground: '#1a1a3a',\n black: '#000000',\n red: '#ff2079',\n green: '#00ff9c',\n yellow: '#fed230',\n blue: '#0abdc6',\n magenta: '#ea00d9',\n cyan: '#0abdc6',\n white: '#c7c7c7',\n brightBlack: '#686868',\n brightRed: '#ff4a9e',\n brightGreen: '#3df5b6',\n brightYellow: '#fef465',\n brightBlue: '#3ff1de',\n brightMagenta: '#ff79f0',\n brightCyan: '#3ff1de',\n brightWhite: '#ffffff',\n },\n retroGreen: {\n background: '#0a0a0a',\n foreground: '#33ff00',\n cursor: '#33ff00',\n selectionBackground: '#1a3a1a',\n black: '#0a0a0a',\n red: '#ff0000',\n green: '#33ff00',\n yellow: '#ffff00',\n blue: '#0066ff',\n magenta: '#cc00ff',\n cyan: '#00ffff',\n white: '#33ff00',\n brightBlack: '#1a5c1a',\n brightRed: '#ff3333',\n brightGreen: '#66ff33',\n brightYellow: '#ffff66',\n brightBlue: '#3399ff',\n brightMagenta: '#e550ff',\n brightCyan: '#66ffff',\n brightWhite: '#66ff33',\n },\n retroAmber: {\n background: '#0a0a00',\n foreground: '#ffb000',\n cursor: '#ffb000',\n selectionBackground: '#3a2a00',\n black: '#0a0a00',\n red: '#ff0000',\n green: '#ffb000',\n yellow: '#ffcc00',\n blue: '#cc8800',\n magenta: '#ff8800',\n cyan: '#ffcc66',\n white: '#ffb000',\n brightBlack: '#665500',\n brightRed: '#ff3333',\n brightGreen: '#ffc033',\n brightYellow: '#ffdd33',\n brightBlue: '#ddaa33',\n brightMagenta: '#ffaa33',\n brightCyan: '#ffdd99',\n brightWhite: '#ffc033',\n },\n matrix: {\n background: '#000000',\n foreground: '#00ff41',\n cursor: '#00ff41',\n selectionBackground: '#003300',\n black: '#000000',\n red: '#00ff41',\n green: '#00ff41',\n yellow: '#00ff41',\n blue: '#00cc33',\n magenta: '#009926',\n cyan: '#00ff41',\n white: '#00ff41',\n brightBlack: '#005500',\n brightRed: '#33ff66',\n brightGreen: '#33ff66',\n brightYellow: '#33ff66',\n brightBlue: '#00ff41',\n brightMagenta: '#00cc33',\n brightCyan: '#33ff66',\n brightWhite: '#66ff88',\n },\n synthwave: {\n background: '#2b213a',\n foreground: '#f0e4fc',\n cursor: '#72f1b8',\n selectionBackground: '#463465',\n black: '#2b213a',\n red: '#fe4450',\n green: '#72f1b8',\n yellow: '#fede5d',\n blue: '#2ee2fa',\n magenta: '#ff7edb',\n cyan: '#03edf9',\n white: '#f0e4fc',\n brightBlack: '#614d85',\n brightRed: '#fe4450',\n brightGreen: '#72f1b8',\n brightYellow: '#fede5d',\n brightBlue: '#2ee2fa',\n brightMagenta: '#ff7edb',\n brightCyan: '#03edf9',\n brightWhite: '#ffffff',\n },\n highContrastDark: {\n background: '#000000',\n foreground: '#ffffff',\n cursor: '#ffffff',\n selectionBackground: '#264f78',\n selectionForeground: '#ffffff',\n black: '#000000',\n red: '#ff0000',\n green: '#00ff00',\n yellow: '#ffff00',\n blue: '#3b78ff',\n magenta: '#ff00ff',\n cyan: '#00ffff',\n white: '#ffffff',\n brightBlack: '#808080',\n brightRed: '#ff3333',\n brightGreen: '#33ff33',\n brightYellow: '#ffff33',\n brightBlue: '#6699ff',\n brightMagenta: '#ff33ff',\n brightCyan: '#33ffff',\n brightWhite: '#ffffff',\n },\n} as DefaultThemesType;\n\nDefaultThemes.yellow = DefaultThemes.highContrastLight;\n","/**\n * Panel themes: the built-in light and dark palettes, panel colors derived from\n * a terminal theme, and the resolution of `CliPanelConfig.theme` into CSS custom\n * properties plus the terminal theme the panel's terminals use.\n */\nimport type { ITheme } from '@xterm/xterm';\nimport type { CliPanelColorScheme, CliPanelColors, CliPanelThemeInput } from '../models/options';\nimport { DefaultThemes } from '../themes/default-themes';\n\ninterface ThemeLike {\n background?: string;\n foreground?: string;\n cursor?: string;\n cyan?: string;\n blue?: string;\n magenta?: string;\n red?: string;\n selectionBackground?: string;\n}\n\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const short = /^#?([0-9A-Fa-f])([0-9A-Fa-f])([0-9A-Fa-f])$/.exec(hex);\n if (short) hex = short.slice(1).map((c) => c + c).join('');\n const m = /^#?([0-9A-Fa-f]{6})([0-9A-Fa-f]{2})?$/.exec(hex);\n if (!m) return null;\n const n = parseInt(m[1], 16);\n return { r: (n >> 16) & 0xff, g: (n >> 8) & 0xff, b: n & 0xff };\n}\n\nfunction shiftColor(hex: string, amount: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n const r = Math.min(255, Math.max(0, rgb.r + Math.round(amount)));\n const g = Math.min(255, Math.max(0, rgb.g + Math.round(amount)));\n const b = Math.min(255, Math.max(0, rgb.b + Math.round(amount)));\n return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;\n}\n\nfunction hexToRgba(hex: string, alpha: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${alpha})`;\n}\n\n/** Light or dark, from a color's relative luminance; unknown formats count as dark. */\nexport function colorSchemeOf(color: string | undefined): CliPanelColorScheme {\n const rgb = color ? hexToRgb(color) : null;\n if (!rgb) return 'dark';\n const channel = (v: number) => {\n const c = v / 255;\n return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);\n };\n const luminance = 0.2126 * channel(rgb.r) + 0.7152 * channel(rgb.g) + 0.0722 * channel(rgb.b);\n return luminance > 0.4 ? 'light' : 'dark';\n}\n\n/** The built-in panel palettes, matching the `default` and `light` terminal themes. */\nexport const CliPanelPalettes: Readonly<Record<CliPanelColorScheme, Readonly<CliPanelColors>>> = Object.freeze({\n dark: Object.freeze({\n background: '#070b14',\n headerBackground: '#0f1623',\n border: '#1e293b',\n text: '#e2e8f0',\n textSecondary: '#94a3b8',\n accent: '#818cf8',\n hoverBackground: 'rgba(129, 140, 248, 0.12)',\n activeBackground: 'rgba(129, 140, 248, 0.22)',\n danger: '#f87171',\n shadow: 'rgba(0, 0, 0, 0.45)',\n }),\n // Soft grey paper instead of pure white, slate text rather than black: easier on the eyes\n light: Object.freeze({\n background: '#f7f8fa',\n headerBackground: '#eceff3',\n border: '#d9dee6',\n text: '#1e293b',\n textSecondary: '#5b6577',\n accent: '#4f46e5',\n hoverBackground: 'rgba(30, 41, 59, 0.06)',\n activeBackground: 'rgba(79, 70, 229, 0.12)',\n danger: '#c93c37',\n shadow: 'rgba(15, 23, 42, 0.12)',\n }),\n});\n\n/** The terminal theme of each built-in palette. */\nconst PALETTE_TERMINALS: Record<CliPanelColorScheme, ITheme> = {\n dark: DefaultThemes.default,\n light: DefaultThemes.light,\n};\n\n/** Panel colors that match a terminal theme. */\nexport function derivePanelColors(theme: ThemeLike): CliPanelColors {\n const scheme = colorSchemeOf(theme.background);\n const palette = CliPanelPalettes[scheme];\n const bg = theme.background || palette.background;\n const fg = theme.foreground || palette.text;\n const accent = theme.cyan || theme.blue || theme.magenta || palette.accent;\n const light = scheme === 'light';\n return {\n background: bg,\n headerBackground: shiftColor(bg, light ? -8 : 12),\n border: shiftColor(bg, light ? -28 : 24),\n text: fg,\n textSecondary: hexToRgba(fg, 0.65),\n accent,\n hoverBackground: hexToRgba(accent, light ? 0.1 : 0.12),\n activeBackground: hexToRgba(accent, light ? 0.16 : 0.2),\n danger: theme.red || palette.danger,\n shadow: palette.shadow,\n };\n}\n\n/** CSS custom properties of the panel for a set of colors. */\nexport function panelColorStyles(colors: CliPanelColors): Record<string, string> {\n return {\n '--cli-panel-bg': colors.background,\n '--cli-panel-header-bg': colors.headerBackground,\n '--cli-panel-border': colors.border,\n '--cli-panel-text': colors.text,\n '--cli-panel-text-secondary': colors.textSecondary,\n '--cli-panel-accent': colors.accent,\n '--cli-btn-hover-bg': colors.hoverBackground,\n '--cli-btn-active-bg': colors.activeBackground,\n '--cli-panel-danger': colors.danger,\n '--cli-panel-shadow': colors.shadow,\n };\n}\n\n/**\n * Derive CSS custom properties for the CLI panel from the active xterm theme.\n * Returns a record of property name → value that can be applied as inline styles.\n */\nexport function derivePanelThemeStyles(theme: ThemeLike): Record<string, string> {\n return {\n ...panelColorStyles(derivePanelColors(theme)),\n 'color-scheme': colorSchemeOf(theme.background),\n };\n}\n\n/** A panel theme resolved for one moment (the system's color scheme). */\nexport interface CliResolvedPanelTheme {\n scheme: CliPanelColorScheme;\n /** CSS custom properties (and `color-scheme`) for the panel's elements. */\n styles: Record<string, string>;\n /** Theme of the panel's terminals. */\n terminal: ITheme;\n}\n\n/**\n * Resolve `CliPanelConfig.theme`. `prefersDark` decides `'auto'`;\n * `themes` are the terminal themes a name can refer to.\n */\nexport function resolvePanelTheme(\n input: CliPanelThemeInput | undefined,\n prefersDark: boolean,\n themes: Record<string, ITheme> = DefaultThemes,\n): CliResolvedPanelTheme {\n const pick = (scheme: CliPanelColorScheme | 'auto'): CliPanelColorScheme =>\n scheme === 'auto' ? (prefersDark ? 'dark' : 'light') : scheme;\n const lookup = (name: string): ITheme | undefined => themes[name];\n\n let scheme: CliPanelColorScheme;\n let terminal: ITheme;\n let colors: CliPanelColors;\n let font: string | undefined;\n let radius: string | undefined;\n\n if (input === undefined || input === 'dark' || input === 'light' || input === 'auto') {\n scheme = pick((input as CliPanelColorScheme | 'auto' | undefined) ?? 'dark');\n terminal = PALETTE_TERMINALS[scheme];\n colors = { ...CliPanelPalettes[scheme] };\n } else if (typeof input === 'string') {\n const named = lookup(input);\n terminal = named ?? PALETTE_TERMINALS.dark;\n scheme = colorSchemeOf(terminal.background);\n colors = named ? derivePanelColors(named) : { ...CliPanelPalettes.dark };\n } else {\n const custom = typeof input.terminal === 'string' ? lookup(input.terminal) : input.terminal;\n scheme = input.base ? pick(input.base) : custom ? colorSchemeOf(custom.background) : 'dark';\n terminal = custom ?? PALETTE_TERMINALS[scheme];\n colors = custom ? derivePanelColors(custom) : { ...CliPanelPalettes[scheme] };\n if (input.colors) colors = { ...colors, ...stripUndefined(input.colors) };\n font = input.fontFamily;\n radius = input.radius;\n }\n\n const styles: Record<string, string> = { ...panelColorStyles(colors), 'color-scheme': scheme };\n if (font) styles['--cli-panel-font'] = font;\n if (radius) styles['--cli-panel-radius'] = radius;\n return { scheme, styles, terminal };\n}\n\nfunction stripUndefined<T extends object>(value: T): Partial<T> {\n return Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined)) as Partial<T>;\n}\n\n/** Whether the system prefers dark colors (true without a browser). */\nexport function prefersDarkScheme(): boolean {\n if (typeof window === 'undefined' || !window.matchMedia) return true;\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n}\n","import { CliPanelPosition } from '../models';\n\nconst STORAGE_KEY = 'cli-panel-position';\nconst POSITION_CYCLE: CliPanelPosition[] = ['bottom', 'right', 'top', 'left'];\n\n/**\n * Load the user's saved panel position from localStorage.\n * Returns null if no preference is saved or localStorage is unavailable.\n */\nexport function loadPanelPosition(): CliPanelPosition | null {\n try {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (stored && POSITION_CYCLE.includes(stored as CliPanelPosition)) {\n return stored as CliPanelPosition;\n }\n } catch {\n // localStorage unavailable (SSR, security restrictions)\n }\n return null;\n}\n\n/**\n * Save the user's panel position preference to localStorage.\n */\nexport function savePanelPosition(position: CliPanelPosition): void {\n try {\n localStorage.setItem(STORAGE_KEY, position);\n } catch {\n // localStorage unavailable\n }\n}\n\n/**\n * Get the next position in the cycle: bottom -> right -> top -> left -> bottom\n */\nexport function nextPanelPosition(current: CliPanelPosition): CliPanelPosition {\n const index = POSITION_CYCLE.indexOf(current);\n if (index === -1) {\n return POSITION_CYCLE[0];\n }\n return POSITION_CYCLE[(index + 1) % POSITION_CYCLE.length];\n}\n","/**\n * Regex that matches ANSI SGR escape sequences (colors, bold, reset, etc.)\n */\nconst ANSI_RE = /\\x1b\\[[0-9;]*m/g;\n\n/**\n * Strip all ANSI escape sequences from a string.\n * @param text The text potentially containing ANSI codes\n * @returns The text with all ANSI codes removed\n */\nexport function stripAnsi(text: string): string {\n return text.replace(ANSI_RE, '');\n}\n\n/**\n * Return the visible (display) width of a string in terminal columns,\n * ignoring ANSI escape codes and accounting for wide characters (emoji,\n * East Asian fullwidth, etc.) that occupy two columns.\n * @param text The text potentially containing ANSI codes\n * @returns The number of terminal columns the text occupies\n */\nexport function visibleLength(text: string): number {\n const stripped = stripAnsi(text);\n let width = 0;\n for (const ch of stripped) {\n const cp = ch.codePointAt(0)!;\n // Variation selectors (U+FE00–U+FE0F) are zero-width\n if (cp >= 0xfe00 && cp <= 0xfe0f) continue;\n // Zero-width joiners (U+200D) are zero-width\n if (cp === 0x200d) continue;\n // Combining marks (U+0300–U+036F) are zero-width\n if (cp >= 0x0300 && cp <= 0x036f) continue;\n width += isWideCharacter(cp) ? 2 : 1;\n }\n return width;\n}\n\n/**\n * Cut a string to at most `width` terminal columns, keeping ANSI escape codes intact.\n * When the text is too wide it ends with `ellipsis` followed by a reset (`\\x1b[0m`)\n * so no colour leaks into the rest of the line. Use it for lines that are redrawn in\n * place: a line that wraps takes two rows and breaks cursor-up based redraws.\n * @param text The text potentially containing ANSI codes\n * @param width The maximum number of columns (values below 1 return '')\n * @param ellipsis Appended when the text is cut (default '…')\n */\nexport function truncateToWidth(text: string, width: number, ellipsis = '\\u2026'): string {\n if (width < 1) return '';\n if (visibleLength(text) <= width) return text;\n const room = Math.max(0, width - visibleLength(ellipsis));\n let out = '';\n let used = 0;\n let i = 0;\n while (i < text.length) {\n if (text[i] === '\\x1b') {\n const m = /^\\x1b\\[[0-9;]*m/.exec(text.slice(i));\n if (m) {\n out += m[0];\n i += m[0].length;\n continue;\n }\n }\n const ch = String.fromCodePoint(text.codePointAt(i)!);\n const w = visibleLength(ch);\n if (used + w > room) break;\n out += ch;\n used += w;\n i += ch.length;\n }\n return `${out}${ellipsis}\\x1b[0m`;\n}\n\n/**\n * Check if a Unicode code point occupies two terminal columns.\n */\nfunction isWideCharacter(cp: number): boolean {\n // Surrogate-based emoji (most emoji above U+FFFF)\n if (cp >= 0x1f000) return true;\n // Miscellaneous Symbols and Pictographs, Emoticons, etc.\n if (cp >= 0x2600 && cp <= 0x27bf) return true;\n // Dingbats\n if (cp >= 0x2700 && cp <= 0x27bf) return true;\n // CJK Unified Ideographs\n if (cp >= 0x4e00 && cp <= 0x9fff) return true;\n // CJK Compatibility Ideographs\n if (cp >= 0xf900 && cp <= 0xfaff) return true;\n // Fullwidth Forms\n if (cp >= 0xff01 && cp <= 0xff60) return true;\n // Halfwidth/Fullwidth Forms (fullwidth part)\n if (cp >= 0xffe0 && cp <= 0xffe6) return true;\n // CJK Radicals Supplement, Kangxi Radicals\n if (cp >= 0x2e80 && cp <= 0x2fdf) return true;\n // CJK Symbols and Punctuation, Hiragana, Katakana\n if (cp >= 0x3000 && cp <= 0x30ff) return true;\n // Enclosed CJK Letters\n if (cp >= 0x3200 && cp <= 0x32ff) return true;\n // CJK Compatibility\n if (cp >= 0x3300 && cp <= 0x33ff) return true;\n // Enclosed Alphanumeric Supplement (circled numbers etc.)\n if (cp >= 0x1f100 && cp <= 0x1f1ff) return true;\n // Misc Symbols (some are wide in terminals)\n if (cp >= 0x2300 && cp <= 0x23ff) return true;\n return false;\n}\n","import { ICliCommandGuard } from '../interfaces/command-guards';\nimport { ICliCommandProcessor } from '../interfaces/command-processor';\nimport {\n ICliAuthorizationService,\n ICliAuthorizationService_TOKEN,\n} from '../interfaces/authorization';\nimport { ICliExecutionContext } from '../interfaces/execution-context';\nimport { cliMissingPermissions } from './permissions';\n\nconst list = (value: unknown): string[] =>\n Array.isArray(value) ? value.filter((v) => typeof v === 'string' && v.trim()) : [];\n\nconst authorization = (context: ICliExecutionContext): ICliAuthorizationService | undefined => {\n try {\n return context.services.get<ICliAuthorizationService>(ICliAuthorizationService_TOKEN);\n } catch {\n return undefined;\n }\n};\n\n/**\n * The processor and its ancestors (sub-commands inherit the access rules of\n * their parents: `pkg add` is protected by metadata on `pkg`).\n */\nfunction chain(processor: ICliCommandProcessor): ICliCommandProcessor[] {\n const out: ICliCommandProcessor[] = [];\n let current: ICliCommandProcessor | undefined = processor;\n while (current && out.length < 32 && !out.includes(current)) {\n out.push(current);\n current = (current as { parent?: ICliCommandProcessor }).parent;\n }\n return out;\n}\n\n/** All required permissions along the chain (each level's requirements apply). */\nconst requiredPermissionsOf = (p: ICliCommandProcessor): string[] =>\n [...new Set(chain(p).flatMap((x) => list(x.metadata?.requiredPermissions)))];\n\n/** Group requirements per level: the principal must satisfy every level. */\nconst requiredGroupLevels = (p: ICliCommandProcessor): string[][] =>\n chain(p).map((x) => list(x.metadata?.requiredGroups)).filter((g) => g.length > 0);\n\nconst needsAuth = (p: ICliCommandProcessor): boolean =>\n chain(p).some((x) => x.metadata?.requireAuth === true) ||\n requiredGroupLevels(p).length > 0 ||\n requiredPermissionsOf(p).length > 0;\n\n/**\n * `metadata.requireAuth` (also implied by `requiredGroups` /\n * `requiredPermissions`): the command needs a signed-in principal.\n * Active only when an {@link ICliAuthorizationService} is registered.\n */\nexport const cliRequireAuthGuard: ICliCommandGuard = {\n name: 'access:require-auth',\n priority: -100,\n appliesTo: (processor, _command, context) => needsAuth(processor) && !!authorization(context),\n canActivate: (_command, processor, context) =>\n authorization(context)!.getPrincipal() ? true : `${processor.command}: login required`,\n};\n\n/**\n * `metadata.requiredGroups`: the principal must belong to at least one group.\n * Active only when an {@link ICliAuthorizationService} is registered.\n */\nexport const cliRequiredGroupsGuard: ICliCommandGuard = {\n name: 'access:required-groups',\n priority: -90,\n appliesTo: (processor, _command, context) =>\n requiredGroupLevels(processor).length > 0 && !!authorization(context),\n canActivate: (_command, processor, context) => {\n const auth = authorization(context)!;\n const principal = auth.getPrincipal();\n if (!principal) return `${processor.command}: login required`;\n if (auth.can('*')) return true;\n for (const required of requiredGroupLevels(processor)) {\n const member = required.some((g) => principal.groups.some((pg) => pg.toLowerCase() === g.toLowerCase()));\n if (!member) return `${processor.command}: permission denied (requires group: ${required.join(' or ')})`;\n }\n return true;\n },\n};\n\n/**\n * `metadata.requiredPermissions`: the principal must hold all permissions.\n * Active only when an {@link ICliAuthorizationService} is registered.\n */\nexport const cliRequiredPermissionsGuard: ICliCommandGuard = {\n name: 'access:required-permissions',\n priority: -80,\n appliesTo: (processor, _command, context) =>\n requiredPermissionsOf(processor).length > 0 && !!authorization(context),\n canActivate: (_command, processor, context) => {\n const principal = authorization(context)!.getPrincipal();\n if (!principal) return `${processor.command}: login required`;\n const missing = cliMissingPermissions(principal.permissions, requiredPermissionsOf(processor));\n return missing.length === 0\n ? true\n : `${processor.command}: permission denied (requires ${missing.join(', ')})`;\n },\n};\n\n/**\n * Guards enforcing access metadata on processors. Registered by the CLI\n * engine; they do nothing until an auth module registers an\n * {@link ICliAuthorizationService}.\n */\nexport const cliAccessMetadataGuards: ICliCommandGuard[] = [\n cliRequireAuthGuard,\n cliRequiredGroupsGuard,\n cliRequiredPermissionsGuard,\n];\n","import type { CliServerConfig } from '../models/server';\nimport type { ICliExecutionContext } from '../interfaces/execution-context';\nimport type { ICliServerManager } from '../interfaces/services';\nimport { ICliServerManager_TOKEN } from '../interfaces/services';\n\n/**\n * The server a command should use when the user does not name one.\n *\n * Prefers the server manager's choice (the default server, else the first\n * connected one) so a command does not pick a server that is down or that\n * rejects the user (a protected server they have not signed in to). Falls\n * back to the first configured server when no manager is available or\n * nothing is connected, so callers still get a clear error from that server.\n */\nexport function cliDefaultServer(context: Pick<ICliExecutionContext, 'services' | 'options'>): CliServerConfig | undefined {\n const servers = context.options?.servers ?? [];\n const manager = context.services?.get<ICliServerManager>(ICliServerManager_TOKEN);\n const preferred = manager?.preferredServer?.();\n return (preferred ? servers.find((s) => s.name === preferred) : undefined) ?? servers[0];\n}\n","import { CliForegroundColor } from '../models';\nimport { ICliExecutionContext } from '../interfaces';\n\n// Formatting for command help pages (writeDescription) and hints, shared by\n// the built-in commands and plugins so they all look the same.\n\n/** A help row: the left column and its description. */\nexport type CliHelpRow = readonly [string, string];\n\nfunction writeColumns(\n context: ICliExecutionContext,\n rows: readonly CliHelpRow[],\n formatLeft: (padded: string) => string,\n formatRight: (text: string) => string,\n): void {\n const width = Math.max(...rows.map(([left]) => left.length)) + 2;\n for (const [left, right] of rows) {\n context.writer.writeln(\n ` ${formatLeft(left.padEnd(width))}${formatRight(right)}`,\n );\n }\n}\n\n/** Write a `📋 Usage:` block with aligned, highlighted commands. */\nexport function writeUsage(\n context: ICliExecutionContext,\n rows: readonly CliHelpRow[],\n): void {\n const { writer, translator } = context;\n writer.writeln(`📋 ${translator.t('cli.common.usage', 'Usage:')}`);\n writeColumns(\n context,\n rows,\n (cmd) => writer.wrapInColor(cmd, CliForegroundColor.Cyan),\n (text) => text,\n );\n}\n\n/** Write a `📝 Examples:` block with aligned `# comments`. */\nexport function writeExamples(\n context: ICliExecutionContext,\n rows: readonly CliHelpRow[],\n): void {\n const { writer, translator } = context;\n writer.writeln(`📝 ${translator.t('cli.common.examples', 'Examples:')}`);\n writeColumns(\n context,\n rows,\n (cmd) => cmd,\n (comment) =>\n writer.wrapInColor(`# ${comment}`, CliForegroundColor.Green),\n );\n}\n\n/**\n * Write a paragraph wrapped at word boundaries to the terminal width (at\n * most 100 columns), so long help text never breaks inside a word.\n */\nexport function writeWrapped(\n context: ICliExecutionContext,\n text: string,\n indent = 0,\n): void {\n const cols = context.terminal?.cols ?? 80;\n const width = Math.max(20, Math.min(cols - 1, 100) - indent);\n const pad = ' '.repeat(indent);\n let line = '';\n for (const word of text.split(/\\s+/).filter(Boolean)) {\n if (line && visibleLength(line) + 1 + visibleLength(word) > width) {\n context.writer.writeln(pad + line);\n line = word;\n } else {\n line = line ? `${line} ${word}` : word;\n }\n }\n if (line) context.writer.writeln(pad + line);\n}\n\nfunction visibleLength(text: string): number {\n return text.replace(/\\x1b\\[[0-9;]*m/g, '').length;\n}\n\n/** `💡 Use <command> to <action>` hint. */\nexport function writeHint(\n context: ICliExecutionContext,\n command: string,\n action: string,\n): void {\n const { writer, translator } = context;\n const text = `💡 ${translator.t('cli.common.use_hint', 'Use {command} {action}', {\n command: writer.wrapInColor(command, CliForegroundColor.Cyan),\n action,\n })}`;\n // \"ℹ \" prefix + the emoji's double width\n const width = Math.min((context.terminal?.cols ?? 80) - 1, 100) - 3;\n if (visibleLength(text) + 1 <= width) {\n writer.writeInfo(text);\n return;\n }\n // Narrow terminal: wrap at words, continuation lines under the text\n const lines: string[] = [];\n let line = '';\n for (const word of text.split(' ')) {\n if (line && visibleLength(line) + 1 + visibleLength(word) > width) {\n lines.push(line);\n line = word;\n } else {\n line = line ? `${line} ${word}` : word;\n }\n }\n if (line) lines.push(line);\n writer.writeInfo(lines[0]);\n for (const rest of lines.slice(1)) {\n writer.writeln(` ${rest}`);\n }\n}\n","/**\n * Text given as one free-form argument (JSON, code, a query) without one\n * pair of quotes wrapping all of it: `'{\"a\": 1}'` -> `{\"a\": 1}`, and\n * `\"say \\\"hi\\\"\"` -> `say \"hi\"`. Anything else is kept as typed, so quotes\n * and backslashes inside the text are never touched.\n */\nexport function unquoteRawArgument(text: string): string {\n const value = text.trim();\n if (value.length < 2) return value;\n const quote = value[0];\n if (quote === \"'\") {\n return value.indexOf(\"'\", 1) === value.length - 1 ? value.slice(1, -1) : value;\n }\n if (quote === '\"') {\n for (let i = 1; i < value.length; i++) {\n if (value[i] === '\\\\') i++;\n else if (value[i] === '\"') {\n return i === value.length - 1\n ? value.slice(1, -1).replace(/\\\\([\"\\\\$`])/g, '$1')\n : value;\n }\n }\n }\n return value;\n}\n","import { ICliCommandParameterDescriptor } from '../interfaces';\nimport { CliBackgroundColor, CliForegroundColor } from '../models';\nimport { delay } from './delay';\nimport { ObjectDescriber } from './object-describer';\nimport {\n getConfigValue,\n getPluginConfigValue,\n resolveConfigurationCategories,\n CLI_CONFIGURE_STORE_NAME,\n} from './config-utils';\n\n/**\n * Retrieve a parameter's value from the parsed arguments, checking aliases.\n * @param p The parameter descriptor\n * @param args The parsed command arguments\n * @returns The matched value, or `undefined` if not found\n */\nexport const getParameterValue = (\n p: ICliCommandParameterDescriptor,\n args: Record<string, any>,\n): unknown => {\n if (args[p.name] !== undefined) {\n return args[p.name];\n }\n const matchedAlias = p.aliases?.find((alias) => args[alias] !== undefined);\n return matchedAlias ? args[matchedAlias] : undefined;\n};\n\n/**\n * Pretty-print a JSON value with ANSI color highlighting.\n * @param json The value to format\n * @returns A colorized, indented string suitable for terminal output\n */\nexport const formatJson = (json: any): string => {\n const identedJson = JSON.stringify(json, null, 2);\n\n return colorizeJson(identedJson.split('\\n').join('\\r\\n'));\n};\n\n/**\n * Apply ANSI color codes to a JSON string using token-based scanning.\n * Handles keys, strings, numbers, booleans, null, and structural characters.\n * @param jsonString The raw JSON string to colorize\n * @returns The colorized string\n */\nexport const colorizeJson = (jsonString: string): string => {\n const RST = '\\x1b[0m';\n const CYN = '\\x1b[36m'; // cyan — keys\n const GRN = '\\x1b[32m'; // green — string values\n const YLW = '\\x1b[33m'; // yellow — numbers, booleans, null\n const GRY = '\\x1b[90m'; // gray — brackets, punctuation\n\n const tokenRe =\n /(\"(?:[^\"\\\\]|\\\\.)*\"?)(\\s*:)?|(\\btrue\\b|\\bfalse\\b|\\bnull\\b)|(-?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)|([{}[\\],])/g;\n\n let result = '';\n let lastIndex = 0;\n let m: RegExpExecArray | null;\n\n while ((m = tokenRe.exec(jsonString)) !== null) {\n if (m.index > lastIndex) {\n result += jsonString.slice(lastIndex, m.index);\n }\n\n if (m[1] !== undefined) {\n if (m[2] !== undefined) {\n result += CYN + m[1] + RST + m[2]; // key: cyan\n } else {\n result += GRN + m[1] + RST; // string value: green\n }\n } else if (m[3] !== undefined) {\n result += YLW + m[3] + RST; // boolean/null: yellow\n } else if (m[4] !== undefined) {\n result += YLW + m[4] + RST; // number: yellow\n } else if (m[5] !== undefined) {\n result += GRY + m[5] + RST; // brackets/punctuation: gray\n }\n\n lastIndex = m.index + m[0].length;\n }\n\n if (lastIndex < jsonString.length) {\n result += jsonString.slice(lastIndex);\n }\n\n return result;\n};\n\n/**\n * Convert a key-value object to a URL query string. Arrays produce repeated keys.\n * @param params The parameters to encode\n * @returns The encoded query string (without leading `?`)\n */\nexport const toQueryString = (params: Record<string, any>): string => {\n const searchParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n value.forEach((v) => searchParams.append(key, v.toString()));\n } else if (value !== null && value !== undefined) {\n searchParams.append(key, value.toString());\n }\n }\n\n return searchParams.toString();\n};\n\n/**\n * Highlight regex matches in text using an ANSI background color.\n * @param text The source text\n * @param pattern The regex pattern to highlight\n * @param bgColor The background color to apply (default: Yellow)\n * @returns The text with matching segments wrapped in ANSI background color codes\n */\nexport const highlightTextWithBg = (\n text: string,\n pattern: RegExp,\n bgColor: CliBackgroundColor = CliBackgroundColor.Yellow,\n): string => {\n // Replace matches with background-colored text\n return text.replace(\n pattern,\n (match) => `${bgColor}${match}${CliForegroundColor.Reset}`,\n );\n};\n\n/**\n * Extract the substring to the right of a given word in a command string.\n * @param command The full command string\n * @param word The word to search for\n * @returns The trimmed text after the word, or `undefined` if not found\n */\nexport const getRightOfWord = (\n command: string,\n word: string,\n): string | undefined => {\n // Find the position of the word in the command\n const index = command.indexOf(word);\n\n // If the word is found, extract the substring to the right\n if (index !== -1) {\n return command.slice(index + word.length).trim();\n }\n\n // If the word is not found, return null\n return undefined;\n};\n\n/**\n * Apply a color function to the first word of a text string, preserving leading whitespace.\n * @param text The text to process\n * @param colorFunction A function that wraps a word in ANSI color codes\n * @returns The text with only the first word colorized\n */\nexport const colorFirstWord = (\n text: string,\n colorFunction: (word: string) => string,\n) => {\n if (!text) return text;\n\n // Match leading spaces and first word separately\n const match = text.match(/^(\\s*)(\\S+)(.*)$/);\n\n if (!match) return text; // If no match, return original text\n\n const [, leadingSpaces, firstWord, restOfText] = match;\n\n // Apply color only to the first word\n const firstWordColored = colorFunction(firstWord);\n\n // Reconstruct string: Keep spaces, color first word, and append rest\n return `${leadingSpaces}${firstWordColored}${restOfText}`;\n};\n\nexport * from './object-describer';\n\nexport * from './delay';\n\nexport * from './terminal-utils';\n\nexport * from './version-utils';\n\nexport * from './config-utils';\n\nexport * from './server-version-negotiator';\n\nexport * from './websocket-auth';\n\nexport * from './panel-theme-sync';\n\nexport * from './panel-position-store';\n\nexport * from './ansi-utils';\n\nexport const utils = {\n getParameterValue,\n formatJson,\n colorizeJson,\n toQueryString,\n highlightTextWithBg,\n getRightOfWord,\n colorFirstWord,\n ObjectDescriber,\n delay,\n getConfigValue,\n getPluginConfigValue,\n resolveConfigurationCategories,\n CLI_CONFIGURE_STORE_NAME,\n};\nexport * from './permissions';\nexport * from './access-guards';\nexport * from './server-target';\nexport * from './help-format';\nexport * from './shell-words';\nexport * from './raw-argument';\n","import { ICliModule } from '../interfaces';\nimport { API_VERSION } from '../version';\n\n/**\n * Registry that tracks loaded web CLI modules (frontend plugins) and dispatches\n * boot handlers when new modules are registered (including dynamically via UMD).\n *\n * This registry is for **browser-side web plugins only**. Backend server\n * processors (Node/Python/.NET) have their own registries and do not use\n * this class or the `apiVersion` gating mechanism.\n */\nexport class CliModuleRegistry {\n private readonly modules = new Map<string, ICliModule>();\n private readonly bootHandlers: ((module: ICliModule) => Promise<void>)[] =\n [];\n private readonly unregisterHandlers: ((module: ICliModule) => void)[] = [];\n /** Registrations whose boot handlers are still running. */\n private readonly inFlight = new Set<Promise<void>>();\n\n /** Optional warning callback — set by the engine to route through ICliLogger */\n onWarn?: (message: string) => void;\n\n /**\n * Register a handler that is called whenever a new module is registered.\n */\n onModuleBoot(handler: (module: ICliModule) => Promise<void>): void {\n this.bootHandlers.push(handler);\n }\n\n /**\n * Register a web plugin module and notify all boot handlers.\n * Modules whose `apiVersion` is below the runtime's `API_VERSION` are\n * skipped with a warning — this ensures only compatible frontend plugins load.\n */\n register(module: ICliModule): Promise<void> {\n const registration = this.registerInternal(module);\n this.inFlight.add(registration);\n const done = () => this.inFlight.delete(registration);\n registration.then(done, done);\n return registration;\n }\n\n /**\n * Resolve once every registration in progress (including ones started\n * meanwhile, e.g. a plugin loading another) has finished booting.\n */\n async whenIdle(): Promise<void> {\n while (this.inFlight.size > 0) {\n await Promise.allSettled([...this.inFlight]);\n }\n }\n\n private async registerInternal(module: ICliModule): Promise<void> {\n const modApiVersion = module.apiVersion;\n if (typeof modApiVersion !== 'number' || modApiVersion < API_VERSION) {\n const msg =\n `[CLI] Plugin \"${module.name}\" targets API version ${modApiVersion ?? 'unknown'}, ` +\n `but this runtime requires API version ${API_VERSION}. Skipping.`;\n if (this.onWarn) {\n this.onWarn(msg);\n } else {\n console.warn(msg);\n }\n return;\n }\n this.modules.set(module.name, module);\n for (const handler of this.bootHandlers) {\n try {\n await handler(module);\n } catch (e) {\n const msg = `[CLI] Boot handler failed for module \"${module.name}\": ${e instanceof Error ? e.message : e}`;\n if (this.onWarn) {\n this.onWarn(msg);\n } else {\n console.warn(msg);\n }\n }\n }\n }\n\n /**\n * Register a handler that is called when a module is unregistered,\n * e.g. so its processors can be removed.\n */\n onModuleUnregister(handler: (module: ICliModule) => void): void {\n this.unregisterHandlers.push(handler);\n }\n\n /**\n * Unregister a module and notify all unregister handlers. A module\n * registered again afterwards (e.g. a newer version) boots again.\n * Returns the removed module, or `undefined` when it was not registered.\n */\n unregister(name: string): ICliModule | undefined {\n const module = this.modules.get(name);\n if (!module) return undefined;\n this.modules.delete(name);\n for (const handler of this.unregisterHandlers) {\n try {\n handler(module);\n } catch (e) {\n const msg = `[CLI] Unregister handler failed for module \"${name}\": ${e instanceof Error ? e.message : e}`;\n if (this.onWarn) {\n this.onWarn(msg);\n } else {\n console.warn(msg);\n }\n }\n }\n return module;\n }\n\n /**\n * Get a module by name.\n */\n getModule(name: string): ICliModule | undefined {\n return this.modules.get(name);\n }\n\n /**\n * Get all registered modules.\n */\n getAll(): ICliModule[] {\n return Array.from(this.modules.values());\n }\n\n /**\n * Track a module without triggering boot handlers.\n * Used by the boot service for statically-provided modules that are\n * already being booted through the normal pipeline.\n */\n track(module: ICliModule): void {\n this.modules.set(module.name, module);\n }\n\n /**\n * Check if a module is registered.\n */\n has(name: string): boolean {\n return this.modules.has(name);\n }\n}\n","import { enums } from '../models';\nimport { constants } from '../constants';\nimport { ICliExecutionContext, ICliModule } from '../interfaces';\nimport { utils } from '../utils';\nimport { CliModuleRegistry } from './cli-module-registry';\n\nexport { CliModuleRegistry } from './cli-module-registry';\n\nexport const initializeBrowserEnvironment = ({\n context,\n registry,\n}: {\n context: ICliExecutionContext;\n registry: CliModuleRegistry;\n}): void => {\n // Expose the registry as the single clean global for UMD module loading\n (window as any).__cliModuleRegistry = registry;\n\n // Expose core utilities and boot functions for UMD modules\n (window as any).cliCore = {\n ...constants,\n ...utils,\n ...enums,\n bootCliModule,\n };\n\n // Safety warning for any UMD module trying to use Angular decorators\n Object.defineProperty(window, 'ngCore', {\n configurable: true,\n get() {\n console.warn(\n 'CLI: Angular decorators are not supported in UMD modules. ' +\n 'Use plain classes instead.',\n );\n return { Injectable: () => () => {} };\n },\n });\n};\n\n/**\n * Boot a CLI module by registering it with the global module registry.\n * Used by UMD entrypoints to register themselves when loaded dynamically.\n */\nexport const bootCliModule = async (module: ICliModule): Promise<void> => {\n if (typeof window !== 'undefined' && (window as any).__cliModuleRegistry) {\n await (window as any).__cliModuleRegistry.register(module);\n }\n};\n","/** Error message used when a `CancellablePromise` is cancelled. */\nexport const CANCELLATION_ERROR_MESSAGE = 'Promise cancelled';\n\n/**\n * A promise wrapper that supports cooperative cancellation.\n *\n * Create with an executor (like `new Promise`), then call `execute()` to run.\n * Call `cancel()` to reject with a cancellation error and prevent further\n * resolve/reject callbacks from firing.\n *\n * @example\n * ```ts\n * const cp = new CancellablePromise<string>((resolve) => {\n * setTimeout(() => resolve('done'), 5000);\n * });\n * cp.execute().catch(e => console.log(e.message)); // 'Promise cancelled'\n * cp.cancel();\n * ```\n */\nexport class CancellablePromise<T> {\n private hasCancelled = false;\n\n private abortController = new AbortController();\n\n constructor(\n private executor: (\n resolve: (value: T) => void,\n reject: (reason?: any) => void,\n ) => void,\n ) {}\n\n /**\n * Run the executor and return a promise for its result.\n * If `cancel()` has been called, the promise rejects immediately.\n */\n public execute(): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n this.abortController.signal.onabort = () => {\n reject(new Error(CANCELLATION_ERROR_MESSAGE));\n };\n\n this.executor(\n (value) => {\n if (!this.hasCancelled) {\n resolve(value);\n }\n },\n (reason) => {\n if (!this.hasCancelled) {\n reject(reason);\n }\n },\n );\n });\n }\n\n /**\n * Cancel the promise. The executing promise rejects with\n * `Error('Promise cancelled')` and subsequent resolve/reject calls are ignored.\n */\n cancel() {\n this.hasCancelled = true;\n this.abortController.abort();\n }\n}\n","import type { CliThemeInfo } from './theme-info';\nimport { DefaultThemes } from './default-themes';\n\nexport const DefaultThemeInfos: Record<string, CliThemeInfo> = {\n default: {\n theme: DefaultThemes.default,\n category: 'dark',\n tags: ['built-in'],\n description: 'Dark indigo theme with soft pastels',\n },\n light: {\n theme: DefaultThemes.light,\n category: 'light',\n tags: ['built-in'],\n description: 'Light counterpart of the default theme',\n },\n classic: {\n theme: DefaultThemes.classic,\n category: 'dark',\n tags: ['built-in'],\n description: 'Classic Windows terminal palette',\n },\n dracula: {\n theme: DefaultThemes.dracula,\n category: 'dark',\n tags: ['popular'],\n description: 'Popular dark theme with vibrant colors',\n },\n monokai: {\n theme: DefaultThemes.monokai,\n category: 'dark',\n tags: ['popular'],\n description: 'Classic code editor dark theme',\n },\n solarizedDark: {\n theme: DefaultThemes.solarizedDark,\n category: 'dark',\n tags: ['popular'],\n description: 'Ethan Schoonover\\'s precision dark palette',\n },\n solarizedLight: {\n theme: DefaultThemes.solarizedLight,\n category: 'light',\n tags: ['popular'],\n description: 'Ethan Schoonover\\'s precision light palette',\n },\n gruvboxDark: {\n theme: DefaultThemes.gruvboxDark,\n category: 'dark',\n tags: ['popular'],\n description: 'Retro groove dark color scheme',\n },\n gruvboxLight: {\n theme: DefaultThemes.gruvboxLight,\n category: 'light',\n tags: ['popular'],\n description: 'Retro groove light color scheme',\n },\n nord: {\n theme: DefaultThemes.nord,\n category: 'dark',\n tags: ['popular'],\n description: 'Arctic, north-bluish clean palette',\n },\n oneDark: {\n theme: DefaultThemes.oneDark,\n category: 'dark',\n tags: ['popular'],\n description: 'Atom\\'s iconic dark theme',\n },\n material: {\n theme: DefaultThemes.material,\n category: 'dark',\n tags: ['popular'],\n description: 'Material Design inspired dark theme',\n },\n highContrastLight: {\n theme: DefaultThemes.highContrastLight,\n category: 'light',\n tags: ['accessibility'],\n description: 'High contrast light theme for accessibility',\n },\n tokyoNight: {\n theme: DefaultThemes.tokyoNight,\n category: 'dark',\n tags: ['popular'],\n description: 'Cool blue-purple dark theme',\n },\n catppuccinMocha: {\n theme: DefaultThemes.catppuccinMocha,\n category: 'dark',\n tags: ['popular', 'pastel'],\n description: 'Soothing pastel dark theme (warmest)',\n },\n catppuccinFrappe: {\n theme: DefaultThemes.catppuccinFrappe,\n category: 'dark',\n tags: ['popular', 'pastel'],\n description: 'Soothing pastel mid-dark theme',\n },\n catppuccinLatte: {\n theme: DefaultThemes.catppuccinLatte,\n category: 'light',\n tags: ['popular', 'pastel'],\n description: 'Soothing pastel light theme',\n },\n rosePine: {\n theme: DefaultThemes.rosePine,\n category: 'dark',\n tags: ['popular'],\n description: 'All natural pine, faux fur, and a bit of soho vibes',\n },\n rosePineDawn: {\n theme: DefaultThemes.rosePineDawn,\n category: 'light',\n tags: ['popular'],\n description: 'Rose Pine light variant',\n },\n kanagawa: {\n theme: DefaultThemes.kanagawa,\n category: 'dark',\n tags: ['popular'],\n description: 'Dark theme inspired by Katsushika Hokusai',\n },\n everforestDark: {\n theme: DefaultThemes.everforestDark,\n category: 'dark',\n tags: ['popular'],\n description: 'Comfortable green-tinted dark theme',\n },\n everforestLight: {\n theme: DefaultThemes.everforestLight,\n category: 'light',\n tags: ['popular'],\n description: 'Comfortable green-tinted light theme',\n },\n ayuDark: {\n theme: DefaultThemes.ayuDark,\n category: 'dark',\n tags: ['popular'],\n description: 'Simple, bright and elegant dark theme',\n },\n githubLight: {\n theme: DefaultThemes.githubLight,\n category: 'light',\n tags: ['popular'],\n description: 'GitHub\\'s clean light interface theme',\n },\n cyberpunk: {\n theme: DefaultThemes.cyberpunk,\n category: 'dark',\n tags: ['retro', 'fun'],\n description: 'Neon-lit cyberpunk aesthetic',\n },\n retroGreen: {\n theme: DefaultThemes.retroGreen,\n category: 'dark',\n tags: ['retro', 'fun'],\n description: 'Classic green phosphor CRT monitor',\n },\n retroAmber: {\n theme: DefaultThemes.retroAmber,\n category: 'dark',\n tags: ['retro', 'fun'],\n description: 'Warm amber CRT monitor',\n },\n matrix: {\n theme: DefaultThemes.matrix,\n category: 'dark',\n tags: ['retro', 'fun'],\n description: 'Enter the Matrix - green on black',\n },\n synthwave: {\n theme: DefaultThemes.synthwave,\n category: 'dark',\n tags: ['retro', 'fun'],\n description: '80s synthwave purple/pink aesthetic',\n },\n highContrastDark: {\n theme: DefaultThemes.highContrastDark,\n category: 'dark',\n tags: ['accessibility'],\n description: 'Maximum contrast dark theme',\n },\n};\n","import {\n CliWorkerInboundMessage,\n CliWorkerOutboundMessage,\n} from '../interfaces/worker-protocol';\nimport { ICliServiceEvent, CliServiceLogLevel } from '../interfaces/background-service';\nimport { ICliManagedInterval, ICliManagedTimer } from '../interfaces/execution-context';\n\n/**\n * Context provided to worker service handlers inside a Web Worker.\n */\nexport interface WorkerServiceContext {\n /** Emit an event to the main thread */\n emit(event: Omit<ICliServiceEvent, 'timestamp'>): void;\n /** Log a message (forwarded to the main-thread log buffer) */\n log(message: string, level?: CliServiceLogLevel): void;\n /** Update state on the main thread */\n updateState(patch: Record<string, unknown>): void;\n /** Create an interval that is auto-cleared on stop */\n createInterval(callback: () => void, ms: number): ICliManagedInterval;\n /** Create a timeout that is auto-cleared on stop */\n createTimeout(callback: () => void, ms: number): ICliManagedTimer;\n /** AbortSignal scoped to this service */\n signal: AbortSignal;\n}\n\n/**\n * Lightweight helper for authoring worker-compatible background services.\n * Call this at the top level of your worker script.\n */\nexport function createWorkerService(handlers: {\n onStart(ctx: WorkerServiceContext): Promise<void>;\n onStop?(): Promise<void>;\n}): void {\n const abortController = new AbortController();\n const timers = new Set<{ clear(): void }>();\n\n function post(msg: CliWorkerOutboundMessage): void {\n (self as unknown as { postMessage(msg: unknown): void }).postMessage(msg);\n }\n\n const ctx: WorkerServiceContext = {\n signal: abortController.signal,\n\n emit(event) {\n post({ type: 'event', event });\n },\n\n log(message, level = 'info') {\n post({ type: 'log', level, message });\n },\n\n updateState(patch) {\n post({ type: 'state-update', patch });\n },\n\n createInterval(callback, ms) {\n let timerId = setInterval(callback, ms);\n const handle: ICliManagedInterval = {\n clear() {\n clearInterval(timerId);\n timers.delete(handle);\n },\n setDelay(newMs) {\n clearInterval(timerId);\n timerId = setInterval(callback, newMs);\n },\n };\n timers.add(handle);\n return handle;\n },\n\n createTimeout(callback, ms) {\n const timerId = setTimeout(() => {\n timers.delete(handle);\n callback();\n }, ms);\n const handle: ICliManagedTimer = {\n clear() {\n clearTimeout(timerId);\n timers.delete(handle);\n },\n };\n timers.add(handle);\n return handle;\n },\n };\n\n function clearAllTimers(): void {\n for (const timer of timers) {\n timer.clear();\n }\n timers.clear();\n }\n\n (self as unknown as { onmessage: ((ev: MessageEvent) => void) | null }).onmessage =\n async (ev: MessageEvent<CliWorkerInboundMessage>) => {\n const msg = ev.data;\n\n switch (msg.type) {\n case 'start':\n try {\n post({ type: 'status', status: 'running' });\n await handlers.onStart(ctx);\n } catch (e) {\n const error = e instanceof Error ? e : new Error(String(e));\n post({ type: 'error', message: error.message, stack: error.stack });\n }\n break;\n\n case 'stop':\n clearAllTimers();\n abortController.abort();\n if (handlers.onStop) {\n await handlers.onStop();\n }\n post({ type: 'status', status: 'stopped' });\n break;\n\n case 'abort':\n clearAllTimers();\n abortController.abort();\n post({ type: 'status', status: 'stopped' });\n break;\n }\n };\n}\n","import { ICliFileEntry, ICliFileTransferService } from '../interfaces/file-transfer';\n\n/**\n * Browser-based file transfer service using native browser APIs.\n *\n * This is the default implementation when no virtual filesystem is available.\n * `readFile` and `uploadFromBrowser` open a file picker dialog.\n * `writeFile` and `downloadToBrowser` trigger a browser download.\n *\n * **Limitations:** `listFiles()` and `exists()` are not supported in the\n * browser environment and always return empty/false respectively.\n * Use `@qodalis/cli-files` for full filesystem capabilities.\n */\nexport class BrowserFileTransferService implements ICliFileTransferService {\n async readFile(_path: string): Promise<string | null> {\n return this._pickFile().then(r => r?.content ?? null);\n }\n\n async writeFile(path: string, content: string): Promise<void> {\n const filename = path.split('/').pop() || 'download';\n this.downloadToBrowser(filename, content);\n }\n\n /**\n * Not supported in browser — always returns an empty array.\n * Use `@qodalis/cli-files` for directory listing.\n */\n async listFiles(_path: string): Promise<ICliFileEntry[]> {\n return [];\n }\n\n /**\n * Not supported in browser — always returns `false`.\n * Use `@qodalis/cli-files` for file existence checks.\n */\n async exists(_path: string): Promise<boolean> {\n return false;\n }\n\n downloadToBrowser(filename: string, content: string | Blob): void {\n const blob = content instanceof Blob ? content : new Blob([content], { type: 'application/octet-stream' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n }\n\n async uploadFromBrowser(accept?: string): Promise<{ name: string; content: string } | null> {\n return this._pickFile(accept);\n }\n\n private _pickFile(accept?: string): Promise<{ name: string; content: string } | null> {\n return new Promise((resolve) => {\n const input = document.createElement('input');\n input.type = 'file';\n if (accept) {\n input.accept = accept;\n }\n input.onchange = () => {\n const file = input.files?.[0];\n if (!file) {\n resolve(null);\n return;\n }\n const reader = new FileReader();\n reader.onload = () => {\n resolve({ name: file.name, content: reader.result as string });\n };\n reader.onerror = () => resolve(null);\n reader.readAsText(file);\n };\n input.oncancel = () => resolve(null);\n input.click();\n });\n }\n}\n"]}