npm-pkg-lint 3.2.2 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../node_modules/argparse/lib/sub.js", "../node_modules/argparse/lib/textwrap.js", "../node_modules/argparse/argparse.js", "../node_modules/tmp/lib/tmp.js", "../node_modules/tar/lib/high-level-opt.js", "../node_modules/tar/node_modules/minipass/index.js", "../node_modules/minizlib/constants.js", "../node_modules/minipass/index.js", "../node_modules/minizlib/index.js", "../node_modules/tar/lib/normalize-windows-path.js", "../node_modules/tar/lib/read-entry.js", "../node_modules/tar/lib/types.js", "../node_modules/tar/lib/large-numbers.js", "../node_modules/tar/lib/header.js", "../node_modules/tar/lib/pax.js", "../node_modules/tar/lib/strip-trailing-slashes.js", "../node_modules/tar/lib/warn-mixin.js", "../node_modules/tar/lib/winchars.js", "../node_modules/tar/lib/strip-absolute-path.js", "../node_modules/tar/lib/mode-fix.js", "../node_modules/tar/lib/write-entry.js", "../node_modules/yallist/iterator.js", "../node_modules/yallist/yallist.js", "../node_modules/tar/lib/pack.js", "../node_modules/fs-minipass/index.js", "../node_modules/tar/lib/parse.js", "../node_modules/tar/lib/list.js", "../node_modules/tar/lib/create.js", "../node_modules/tar/lib/replace.js", "../node_modules/tar/lib/update.js", "../node_modules/mkdirp/lib/opts-arg.js", "../node_modules/mkdirp/lib/path-arg.js", "../node_modules/mkdirp/lib/find-made.js", "../node_modules/mkdirp/lib/mkdirp-manual.js", "../node_modules/mkdirp/lib/mkdirp-native.js", "../node_modules/mkdirp/lib/use-native.js", "../node_modules/mkdirp/index.js", "../node_modules/chownr/chownr.js", "../node_modules/tar/lib/mkdir.js", "../node_modules/tar/lib/normalize-unicode.js", "../node_modules/tar/lib/path-reservations.js", "../node_modules/tar/lib/get-write-flag.js", "../node_modules/tar/lib/unpack.js", "../node_modules/tar/lib/extract.js", "../node_modules/tar/index.js", "../node_modules/semver/internal/constants.js", "../node_modules/semver/internal/debug.js", "../node_modules/semver/internal/re.js", "../node_modules/semver/internal/parse-options.js", "../node_modules/semver/internal/identifiers.js", "../node_modules/semver/classes/semver.js", "../node_modules/semver/functions/parse.js", "../node_modules/semver/functions/valid.js", "../node_modules/semver/functions/clean.js", "../node_modules/semver/functions/inc.js", "../node_modules/semver/functions/diff.js", "../node_modules/semver/functions/major.js", "../node_modules/semver/functions/minor.js", "../node_modules/semver/functions/patch.js", "../node_modules/semver/functions/prerelease.js", "../node_modules/semver/functions/compare.js", "../node_modules/semver/functions/rcompare.js", "../node_modules/semver/functions/compare-loose.js", "../node_modules/semver/functions/compare-build.js", "../node_modules/semver/functions/sort.js", "../node_modules/semver/functions/rsort.js", "../node_modules/semver/functions/gt.js", "../node_modules/semver/functions/lt.js", "../node_modules/semver/functions/eq.js", "../node_modules/semver/functions/neq.js", "../node_modules/semver/functions/gte.js", "../node_modules/semver/functions/lte.js", "../node_modules/semver/functions/cmp.js", "../node_modules/semver/functions/coerce.js", "../node_modules/lru-cache/index.js", "../node_modules/semver/classes/range.js", "../node_modules/semver/classes/comparator.js", "../node_modules/semver/functions/satisfies.js", "../node_modules/semver/ranges/to-comparators.js", "../node_modules/semver/ranges/max-satisfying.js", "../node_modules/semver/ranges/min-satisfying.js", "../node_modules/semver/ranges/min-version.js", "../node_modules/semver/ranges/valid.js", "../node_modules/semver/ranges/outside.js", "../node_modules/semver/ranges/gtr.js", "../node_modules/semver/ranges/ltr.js", "../node_modules/semver/ranges/intersects.js", "../node_modules/semver/ranges/simplify.js", "../node_modules/semver/ranges/subset.js", "../node_modules/semver/index.js", "../node_modules/isexe/windows.js", "../node_modules/isexe/mode.js", "../node_modules/isexe/index.js", "../node_modules/which/which.js", "../node_modules/path-key/index.js", "../node_modules/cross-spawn/lib/util/resolveCommand.js", "../node_modules/cross-spawn/lib/util/escape.js", "../node_modules/shebang-regex/index.js", "../node_modules/shebang-command/index.js", "../node_modules/cross-spawn/lib/util/readShebang.js", "../node_modules/cross-spawn/lib/parse.js", "../node_modules/cross-spawn/lib/enoent.js", "../node_modules/cross-spawn/index.js", "../node_modules/merge-stream/index.js", "../src/index.ts", "../node_modules/find-up/index.js", "../node_modules/find-up/node_modules/locate-path/index.js", "../node_modules/find-up/node_modules/yocto-queue/index.js", "../node_modules/find-up/node_modules/p-limit/index.js", "../node_modules/find-up/node_modules/p-locate/index.js", "../node_modules/unicorn-magic/node.js", "../node_modules/@html-validate/stylish/node_modules/kleur/colors.mjs", "../node_modules/@html-validate/stylish/node_modules/text-table/index.js", "../node_modules/@html-validate/stylish/src/stylish.ts", "../node_modules/@html-validate/stylish/src/colors-node.ts", "../node_modules/@html-validate/stylish/src/severity.ts", "../src/blacklist/helpers.ts", "../src/blacklist/ava.ts", "../src/blacklist/emacs.ts", "../src/blacklist/eslint.ts", "../src/blacklist/fimbullinter.ts", "../src/blacklist/git.ts", "../src/blacklist/jest.ts", "../src/blacklist/node.ts", "../src/blacklist/prettier.ts", "../src/blacklist/typescript.ts", "../src/blacklist/windows.ts", "../src/blacklist/index.ts", "../src/blacklist.ts", "../src/tarball.ts", "../src/validators/validation-error.ts", "../src/validators/non-empty.ts", "../src/validators/present.ts", "../src/validators/type-array.ts", "../src/validators/type-string.ts", "../src/validators/valid-repo-url.ts", "../src/validators/valid-url.ts", "../src/rules/deprecated-dependency.ts", "../node_modules/execa/index.js", "../node_modules/execa/node_modules/strip-final-newline/index.js", "../node_modules/execa/node_modules/npm-run-path/index.js", "../node_modules/execa/node_modules/path-key/index.js", "../node_modules/execa/node_modules/mimic-fn/index.js", "../node_modules/execa/node_modules/onetime/index.js", "../node_modules/execa/lib/error.js", "../node_modules/execa/node_modules/human-signals/build/src/main.js", "../node_modules/execa/node_modules/human-signals/build/src/realtime.js", "../node_modules/execa/node_modules/human-signals/build/src/signals.js", "../node_modules/execa/node_modules/human-signals/build/src/core.js", "../node_modules/execa/lib/stdio.js", "../node_modules/execa/lib/kill.js", "../node_modules/execa/node_modules/signal-exit/src/signals.ts", "../node_modules/execa/node_modules/signal-exit/src/index.ts", "../node_modules/execa/lib/pipe.js", "../node_modules/execa/node_modules/is-stream/index.js", "../node_modules/execa/lib/stream.js", "../node_modules/execa/node_modules/get-stream/source/contents.js", "../node_modules/execa/node_modules/get-stream/source/utils.js", "../node_modules/execa/node_modules/get-stream/source/array-buffer.js", "../node_modules/execa/node_modules/get-stream/source/buffer.js", "../node_modules/execa/node_modules/get-stream/source/string.js", "../node_modules/execa/lib/promise.js", "../node_modules/execa/lib/command.js", "../node_modules/execa/lib/verbose.js", "../src/utils/persistent-cache.ts", "../src/utils/npm-info.ts", "../src/rules/disallowed-dependency.ts", "../src/rules/obsolete-dependency.ts", "../src/rules/exports-types-order.ts", "../src/rules/outdated-engines.ts", "../src/node-versions.ts", "../src/rules/verify-engine-constraint.ts", "../src/rules/types-node-matching-engine.ts", "../src/package-json.ts", "../src/shebang.ts", "../src/verify.ts", "../src/tarball-location.ts"],
4
- "sourcesContent": ["// Limited implementation of python % string operator, supports only %s and %r for now\n// (other formats are not used here, but may appear in custom templates)\n\n'use strict'\n\nconst { inspect } = require('util')\n\n\nmodule.exports = function sub(pattern, ...values) {\n let regex = /%(?:(%)|(-)?(\\*)?(?:\\((\\w+)\\))?([A-Za-z]))/g\n\n let result = pattern.replace(regex, function (_, is_literal, is_left_align, is_padded, name, format) {\n if (is_literal) return '%'\n\n let padded_count = 0\n if (is_padded) {\n if (values.length === 0) throw new TypeError('not enough arguments for format string')\n padded_count = values.shift()\n if (!Number.isInteger(padded_count)) throw new TypeError('* wants int')\n }\n\n let str\n if (name !== undefined) {\n let dict = values[0]\n if (typeof dict !== 'object' || dict === null) throw new TypeError('format requires a mapping')\n if (!(name in dict)) throw new TypeError(`no such key: '${name}'`)\n str = dict[name]\n } else {\n if (values.length === 0) throw new TypeError('not enough arguments for format string')\n str = values.shift()\n }\n\n switch (format) {\n case 's':\n str = String(str)\n break\n case 'r':\n str = inspect(str)\n break\n case 'd':\n case 'i':\n if (typeof str !== 'number') {\n throw new TypeError(`%${format} format: a number is required, not ${typeof str}`)\n }\n str = String(str.toFixed(0))\n break\n default:\n throw new TypeError(`unsupported format character '${format}'`)\n }\n\n if (padded_count > 0) {\n return is_left_align ? str.padEnd(padded_count) : str.padStart(padded_count)\n } else {\n return str\n }\n })\n\n if (values.length) {\n if (values.length === 1 && typeof values[0] === 'object' && values[0] !== null) {\n // mapping\n } else {\n throw new TypeError('not all arguments converted during string formatting')\n }\n }\n\n return result\n}\n", "// Partial port of python's argparse module, version 3.9.0 (only wrap and fill functions):\n// https://github.com/python/cpython/blob/v3.9.0b4/Lib/textwrap.py\n\n'use strict'\n\n/*\n * Text wrapping and filling.\n */\n\n// Copyright (C) 1999-2001 Gregory P. Ward.\n// Copyright (C) 2002, 2003 Python Software Foundation.\n// Copyright (C) 2020 argparse.js authors\n// Originally written by Greg Ward <gward@python.net>\n\n// Hardcode the recognized whitespace characters to the US-ASCII\n// whitespace characters. The main reason for doing this is that\n// some Unicode spaces (like \\u00a0) are non-breaking whitespaces.\n//\n// This less funky little regex just split on recognized spaces. E.g.\n// \"Hello there -- you goof-ball, use the -b option!\"\n// splits into\n// Hello/ /there/ /--/ /you/ /goof-ball,/ /use/ /the/ /-b/ /option!/\nconst wordsep_simple_re = /([\\t\\n\\x0b\\x0c\\r ]+)/\n\nclass TextWrapper {\n /*\n * Object for wrapping/filling text. The public interface consists of\n * the wrap() and fill() methods; the other methods are just there for\n * subclasses to override in order to tweak the default behaviour.\n * If you want to completely replace the main wrapping algorithm,\n * you'll probably have to override _wrap_chunks().\n *\n * Several instance attributes control various aspects of wrapping:\n * width (default: 70)\n * the maximum width of wrapped lines (unless break_long_words\n * is false)\n * initial_indent (default: \"\")\n * string that will be prepended to the first line of wrapped\n * output. Counts towards the line's width.\n * subsequent_indent (default: \"\")\n * string that will be prepended to all lines save the first\n * of wrapped output; also counts towards each line's width.\n * expand_tabs (default: true)\n * Expand tabs in input text to spaces before further processing.\n * Each tab will become 0 .. 'tabsize' spaces, depending on its position\n * in its line. If false, each tab is treated as a single character.\n * tabsize (default: 8)\n * Expand tabs in input text to 0 .. 'tabsize' spaces, unless\n * 'expand_tabs' is false.\n * replace_whitespace (default: true)\n * Replace all whitespace characters in the input text by spaces\n * after tab expansion. Note that if expand_tabs is false and\n * replace_whitespace is true, every tab will be converted to a\n * single space!\n * fix_sentence_endings (default: false)\n * Ensure that sentence-ending punctuation is always followed\n * by two spaces. Off by default because the algorithm is\n * (unavoidably) imperfect.\n * break_long_words (default: true)\n * Break words longer than 'width'. If false, those words will not\n * be broken, and some lines might be longer than 'width'.\n * break_on_hyphens (default: true)\n * Allow breaking hyphenated words. If true, wrapping will occur\n * preferably on whitespaces and right after hyphens part of\n * compound words.\n * drop_whitespace (default: true)\n * Drop leading and trailing whitespace from lines.\n * max_lines (default: None)\n * Truncate wrapped lines.\n * placeholder (default: ' [...]')\n * Append to the last line of truncated text.\n */\n\n constructor(options = {}) {\n let {\n width = 70,\n initial_indent = '',\n subsequent_indent = '',\n expand_tabs = true,\n replace_whitespace = true,\n fix_sentence_endings = false,\n break_long_words = true,\n drop_whitespace = true,\n break_on_hyphens = true,\n tabsize = 8,\n max_lines = undefined,\n placeholder=' [...]'\n } = options\n\n this.width = width\n this.initial_indent = initial_indent\n this.subsequent_indent = subsequent_indent\n this.expand_tabs = expand_tabs\n this.replace_whitespace = replace_whitespace\n this.fix_sentence_endings = fix_sentence_endings\n this.break_long_words = break_long_words\n this.drop_whitespace = drop_whitespace\n this.break_on_hyphens = break_on_hyphens\n this.tabsize = tabsize\n this.max_lines = max_lines\n this.placeholder = placeholder\n }\n\n\n // -- Private methods -----------------------------------------------\n // (possibly useful for subclasses to override)\n\n _munge_whitespace(text) {\n /*\n * _munge_whitespace(text : string) -> string\n *\n * Munge whitespace in text: expand tabs and convert all other\n * whitespace characters to spaces. Eg. \" foo\\\\tbar\\\\n\\\\nbaz\"\n * becomes \" foo bar baz\".\n */\n if (this.expand_tabs) {\n text = text.replace(/\\t/g, ' '.repeat(this.tabsize)) // not strictly correct in js\n }\n if (this.replace_whitespace) {\n text = text.replace(/[\\t\\n\\x0b\\x0c\\r]/g, ' ')\n }\n return text\n }\n\n _split(text) {\n /*\n * _split(text : string) -> [string]\n *\n * Split the text to wrap into indivisible chunks. Chunks are\n * not quite the same as words; see _wrap_chunks() for full\n * details. As an example, the text\n * Look, goof-ball -- use the -b option!\n * breaks into the following chunks:\n * 'Look,', ' ', 'goof-', 'ball', ' ', '--', ' ',\n * 'use', ' ', 'the', ' ', '-b', ' ', 'option!'\n * if break_on_hyphens is True, or in:\n * 'Look,', ' ', 'goof-ball', ' ', '--', ' ',\n * 'use', ' ', 'the', ' ', '-b', ' ', option!'\n * otherwise.\n */\n let chunks = text.split(wordsep_simple_re)\n chunks = chunks.filter(Boolean)\n return chunks\n }\n\n _handle_long_word(reversed_chunks, cur_line, cur_len, width) {\n /*\n * _handle_long_word(chunks : [string],\n * cur_line : [string],\n * cur_len : int, width : int)\n *\n * Handle a chunk of text (most likely a word, not whitespace) that\n * is too long to fit in any line.\n */\n // Figure out when indent is larger than the specified width, and make\n // sure at least one character is stripped off on every pass\n let space_left\n if (width < 1) {\n space_left = 1\n } else {\n space_left = width - cur_len\n }\n\n // If we're allowed to break long words, then do so: put as much\n // of the next chunk onto the current line as will fit.\n if (this.break_long_words) {\n cur_line.push(reversed_chunks[reversed_chunks.length - 1].slice(0, space_left))\n reversed_chunks[reversed_chunks.length - 1] = reversed_chunks[reversed_chunks.length - 1].slice(space_left)\n\n // Otherwise, we have to preserve the long word intact. Only add\n // it to the current line if there's nothing already there --\n // that minimizes how much we violate the width constraint.\n } else if (!cur_line) {\n cur_line.push(...reversed_chunks.pop())\n }\n\n // If we're not allowed to break long words, and there's already\n // text on the current line, do nothing. Next time through the\n // main loop of _wrap_chunks(), we'll wind up here again, but\n // cur_len will be zero, so the next line will be entirely\n // devoted to the long word that we can't handle right now.\n }\n\n _wrap_chunks(chunks) {\n /*\n * _wrap_chunks(chunks : [string]) -> [string]\n *\n * Wrap a sequence of text chunks and return a list of lines of\n * length 'self.width' or less. (If 'break_long_words' is false,\n * some lines may be longer than this.) Chunks correspond roughly\n * to words and the whitespace between them: each chunk is\n * indivisible (modulo 'break_long_words'), but a line break can\n * come between any two chunks. Chunks should not have internal\n * whitespace; ie. a chunk is either all whitespace or a \"word\".\n * Whitespace chunks will be removed from the beginning and end of\n * lines, but apart from that whitespace is preserved.\n */\n let lines = []\n let indent\n if (this.width <= 0) {\n throw Error(`invalid width ${this.width} (must be > 0)`)\n }\n if (this.max_lines !== undefined) {\n if (this.max_lines > 1) {\n indent = this.subsequent_indent\n } else {\n indent = this.initial_indent\n }\n if (indent.length + this.placeholder.trimStart().length > this.width) {\n throw Error('placeholder too large for max width')\n }\n }\n\n // Arrange in reverse order so items can be efficiently popped\n // from a stack of chucks.\n chunks = chunks.reverse()\n\n while (chunks.length > 0) {\n\n // Start the list of chunks that will make up the current line.\n // cur_len is just the length of all the chunks in cur_line.\n let cur_line = []\n let cur_len = 0\n\n // Figure out which static string will prefix this line.\n let indent\n if (lines) {\n indent = this.subsequent_indent\n } else {\n indent = this.initial_indent\n }\n\n // Maximum width for this line.\n let width = this.width - indent.length\n\n // First chunk on line is whitespace -- drop it, unless this\n // is the very beginning of the text (ie. no lines started yet).\n if (this.drop_whitespace && chunks[chunks.length - 1].trim() === '' && lines.length > 0) {\n chunks.pop()\n }\n\n while (chunks.length > 0) {\n let l = chunks[chunks.length - 1].length\n\n // Can at least squeeze this chunk onto the current line.\n if (cur_len + l <= width) {\n cur_line.push(chunks.pop())\n cur_len += l\n\n // Nope, this line is full.\n } else {\n break\n }\n }\n\n // The current line is full, and the next chunk is too big to\n // fit on *any* line (not just this one).\n if (chunks.length && chunks[chunks.length - 1].length > width) {\n this._handle_long_word(chunks, cur_line, cur_len, width)\n cur_len = cur_line.map(l => l.length).reduce((a, b) => a + b, 0)\n }\n\n // If the last chunk on this line is all whitespace, drop it.\n if (this.drop_whitespace && cur_line.length > 0 && cur_line[cur_line.length - 1].trim() === '') {\n cur_len -= cur_line[cur_line.length - 1].length\n cur_line.pop()\n }\n\n if (cur_line) {\n if (this.max_lines === undefined ||\n lines.length + 1 < this.max_lines ||\n (chunks.length === 0 ||\n this.drop_whitespace &&\n chunks.length === 1 &&\n !chunks[0].trim()) && cur_len <= width) {\n // Convert current line back to a string and store it in\n // list of all lines (return value).\n lines.push(indent + cur_line.join(''))\n } else {\n let had_break = false\n while (cur_line) {\n if (cur_line[cur_line.length - 1].trim() &&\n cur_len + this.placeholder.length <= width) {\n cur_line.push(this.placeholder)\n lines.push(indent + cur_line.join(''))\n had_break = true\n break\n }\n cur_len -= cur_line[-1].length\n cur_line.pop()\n }\n if (!had_break) {\n if (lines) {\n let prev_line = lines[lines.length - 1].trimEnd()\n if (prev_line.length + this.placeholder.length <=\n this.width) {\n lines[lines.length - 1] = prev_line + this.placeholder\n break\n }\n }\n lines.push(indent + this.placeholder.lstrip())\n }\n break\n }\n }\n }\n\n return lines\n }\n\n _split_chunks(text) {\n text = this._munge_whitespace(text)\n return this._split(text)\n }\n\n // -- Public interface ----------------------------------------------\n\n wrap(text) {\n /*\n * wrap(text : string) -> [string]\n *\n * Reformat the single paragraph in 'text' so it fits in lines of\n * no more than 'self.width' columns, and return a list of wrapped\n * lines. Tabs in 'text' are expanded with string.expandtabs(),\n * and all other whitespace characters (including newline) are\n * converted to space.\n */\n let chunks = this._split_chunks(text)\n // not implemented in js\n //if (this.fix_sentence_endings) {\n // this._fix_sentence_endings(chunks)\n //}\n return this._wrap_chunks(chunks)\n }\n\n fill(text) {\n /*\n * fill(text : string) -> string\n *\n * Reformat the single paragraph in 'text' to fit in lines of no\n * more than 'self.width' columns, and return a new string\n * containing the entire wrapped paragraph.\n */\n return this.wrap(text).join('\\n')\n }\n}\n\n\n// -- Convenience interface ---------------------------------------------\n\nfunction wrap(text, options = {}) {\n /*\n * Wrap a single paragraph of text, returning a list of wrapped lines.\n *\n * Reformat the single paragraph in 'text' so it fits in lines of no\n * more than 'width' columns, and return a list of wrapped lines. By\n * default, tabs in 'text' are expanded with string.expandtabs(), and\n * all other whitespace characters (including newline) are converted to\n * space. See TextWrapper class for available keyword args to customize\n * wrapping behaviour.\n */\n let { width = 70, ...kwargs } = options\n let w = new TextWrapper(Object.assign({ width }, kwargs))\n return w.wrap(text)\n}\n\nfunction fill(text, options = {}) {\n /*\n * Fill a single paragraph of text, returning a new string.\n *\n * Reformat the single paragraph in 'text' to fit in lines of no more\n * than 'width' columns, and return a new string containing the entire\n * wrapped paragraph. As with wrap(), tabs are expanded and other\n * whitespace characters converted to space. See TextWrapper class for\n * available keyword args to customize wrapping behaviour.\n */\n let { width = 70, ...kwargs } = options\n let w = new TextWrapper(Object.assign({ width }, kwargs))\n return w.fill(text)\n}\n\n// -- Loosely related functionality -------------------------------------\n\nlet _whitespace_only_re = /^[ \\t]+$/mg\nlet _leading_whitespace_re = /(^[ \\t]*)(?:[^ \\t\\n])/mg\n\nfunction dedent(text) {\n /*\n * Remove any common leading whitespace from every line in `text`.\n *\n * This can be used to make triple-quoted strings line up with the left\n * edge of the display, while still presenting them in the source code\n * in indented form.\n *\n * Note that tabs and spaces are both treated as whitespace, but they\n * are not equal: the lines \" hello\" and \"\\\\thello\" are\n * considered to have no common leading whitespace.\n *\n * Entirely blank lines are normalized to a newline character.\n */\n // Look for the longest leading string of spaces and tabs common to\n // all lines.\n let margin = undefined\n text = text.replace(_whitespace_only_re, '')\n let indents = text.match(_leading_whitespace_re) || []\n for (let indent of indents) {\n indent = indent.slice(0, -1)\n\n if (margin === undefined) {\n margin = indent\n\n // Current line more deeply indented than previous winner:\n // no change (previous winner is still on top).\n } else if (indent.startsWith(margin)) {\n // pass\n\n // Current line consistent with and no deeper than previous winner:\n // it's the new winner.\n } else if (margin.startsWith(indent)) {\n margin = indent\n\n // Find the largest common whitespace between current line and previous\n // winner.\n } else {\n for (let i = 0; i < margin.length && i < indent.length; i++) {\n if (margin[i] !== indent[i]) {\n margin = margin.slice(0, i)\n break\n }\n }\n }\n }\n\n if (margin) {\n text = text.replace(new RegExp('^' + margin, 'mg'), '')\n }\n return text\n}\n\nmodule.exports = { wrap, fill, dedent }\n", "// Port of python's argparse module, version 3.9.0:\n// https://github.com/python/cpython/blob/v3.9.0rc1/Lib/argparse.py\n\n'use strict'\n\n// Copyright (C) 2010-2020 Python Software Foundation.\n// Copyright (C) 2020 argparse.js authors\n\n/*\n * Command-line parsing library\n *\n * This module is an optparse-inspired command-line parsing library that:\n *\n * - handles both optional and positional arguments\n * - produces highly informative usage messages\n * - supports parsers that dispatch to sub-parsers\n *\n * The following is a simple usage example that sums integers from the\n * command-line and writes the result to a file::\n *\n * parser = argparse.ArgumentParser(\n * description='sum the integers at the command line')\n * parser.add_argument(\n * 'integers', metavar='int', nargs='+', type=int,\n * help='an integer to be summed')\n * parser.add_argument(\n * '--log', default=sys.stdout, type=argparse.FileType('w'),\n * help='the file where the sum should be written')\n * args = parser.parse_args()\n * args.log.write('%s' % sum(args.integers))\n * args.log.close()\n *\n * The module contains the following public classes:\n *\n * - ArgumentParser -- The main entry point for command-line parsing. As the\n * example above shows, the add_argument() method is used to populate\n * the parser with actions for optional and positional arguments. Then\n * the parse_args() method is invoked to convert the args at the\n * command-line into an object with attributes.\n *\n * - ArgumentError -- The exception raised by ArgumentParser objects when\n * there are errors with the parser's actions. Errors raised while\n * parsing the command-line are caught by ArgumentParser and emitted\n * as command-line messages.\n *\n * - FileType -- A factory for defining types of files to be created. As the\n * example above shows, instances of FileType are typically passed as\n * the type= argument of add_argument() calls.\n *\n * - Action -- The base class for parser actions. Typically actions are\n * selected by passing strings like 'store_true' or 'append_const' to\n * the action= argument of add_argument(). However, for greater\n * customization of ArgumentParser actions, subclasses of Action may\n * be defined and passed as the action= argument.\n *\n * - HelpFormatter, RawDescriptionHelpFormatter, RawTextHelpFormatter,\n * ArgumentDefaultsHelpFormatter -- Formatter classes which\n * may be passed as the formatter_class= argument to the\n * ArgumentParser constructor. HelpFormatter is the default,\n * RawDescriptionHelpFormatter and RawTextHelpFormatter tell the parser\n * not to change the formatting for help text, and\n * ArgumentDefaultsHelpFormatter adds information about argument defaults\n * to the help.\n *\n * All other classes in this module are considered implementation details.\n * (Also note that HelpFormatter and RawDescriptionHelpFormatter are only\n * considered public as object names -- the API of the formatter objects is\n * still considered an implementation detail.)\n */\n\nconst SUPPRESS = '==SUPPRESS=='\n\nconst OPTIONAL = '?'\nconst ZERO_OR_MORE = '*'\nconst ONE_OR_MORE = '+'\nconst PARSER = 'A...'\nconst REMAINDER = '...'\nconst _UNRECOGNIZED_ARGS_ATTR = '_unrecognized_args'\n\n\n// ==================================\n// Utility functions used for porting\n// ==================================\nconst assert = require('assert')\nconst util = require('util')\nconst fs = require('fs')\nconst sub = require('./lib/sub')\nconst path = require('path')\nconst repr = util.inspect\n\nfunction get_argv() {\n // omit first argument (which is assumed to be interpreter - `node`, `coffee`, `ts-node`, etc.)\n return process.argv.slice(1)\n}\n\nfunction get_terminal_size() {\n return {\n columns: +process.env.COLUMNS || process.stdout.columns || 80\n }\n}\n\nfunction hasattr(object, name) {\n return Object.prototype.hasOwnProperty.call(object, name)\n}\n\nfunction getattr(object, name, value) {\n return hasattr(object, name) ? object[name] : value\n}\n\nfunction setattr(object, name, value) {\n object[name] = value\n}\n\nfunction setdefault(object, name, value) {\n if (!hasattr(object, name)) object[name] = value\n return object[name]\n}\n\nfunction delattr(object, name) {\n delete object[name]\n}\n\nfunction range(from, to, step=1) {\n // range(10) is equivalent to range(0, 10)\n if (arguments.length === 1) [ to, from ] = [ from, 0 ]\n if (typeof from !== 'number' || typeof to !== 'number' || typeof step !== 'number') {\n throw new TypeError('argument cannot be interpreted as an integer')\n }\n if (step === 0) throw new TypeError('range() arg 3 must not be zero')\n\n let result = []\n if (step > 0) {\n for (let i = from; i < to; i += step) result.push(i)\n } else {\n for (let i = from; i > to; i += step) result.push(i)\n }\n return result\n}\n\nfunction splitlines(str, keepends = false) {\n let result\n if (!keepends) {\n result = str.split(/\\r\\n|[\\n\\r\\v\\f\\x1c\\x1d\\x1e\\x85\\u2028\\u2029]/)\n } else {\n result = []\n let parts = str.split(/(\\r\\n|[\\n\\r\\v\\f\\x1c\\x1d\\x1e\\x85\\u2028\\u2029])/)\n for (let i = 0; i < parts.length; i += 2) {\n result.push(parts[i] + (i + 1 < parts.length ? parts[i + 1] : ''))\n }\n }\n if (!result[result.length - 1]) result.pop()\n return result\n}\n\nfunction _string_lstrip(string, prefix_chars) {\n let idx = 0\n while (idx < string.length && prefix_chars.includes(string[idx])) idx++\n return idx ? string.slice(idx) : string\n}\n\nfunction _string_split(string, sep, maxsplit) {\n let result = string.split(sep)\n if (result.length > maxsplit) {\n result = result.slice(0, maxsplit).concat([ result.slice(maxsplit).join(sep) ])\n }\n return result\n}\n\nfunction _array_equal(array1, array2) {\n if (array1.length !== array2.length) return false\n for (let i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) return false\n }\n return true\n}\n\nfunction _array_remove(array, item) {\n let idx = array.indexOf(item)\n if (idx === -1) throw new TypeError(sub('%r not in list', item))\n array.splice(idx, 1)\n}\n\n// normalize choices to array;\n// this isn't required in python because `in` and `map` operators work with anything,\n// but in js dealing with multiple types here is too clunky\nfunction _choices_to_array(choices) {\n if (choices === undefined) {\n return []\n } else if (Array.isArray(choices)) {\n return choices\n } else if (choices !== null && typeof choices[Symbol.iterator] === 'function') {\n return Array.from(choices)\n } else if (typeof choices === 'object' && choices !== null) {\n return Object.keys(choices)\n } else {\n throw new Error(sub('invalid choices value: %r', choices))\n }\n}\n\n// decorator that allows a class to be called without new\nfunction _callable(cls) {\n let result = { // object is needed for inferred class name\n [cls.name]: function (...args) {\n let this_class = new.target === result || !new.target\n return Reflect.construct(cls, args, this_class ? cls : new.target)\n }\n }\n result[cls.name].prototype = cls.prototype\n // fix default tag for toString, e.g. [object Action] instead of [object Object]\n cls.prototype[Symbol.toStringTag] = cls.name\n return result[cls.name]\n}\n\nfunction _alias(object, from, to) {\n try {\n let name = object.constructor.name\n Object.defineProperty(object, from, {\n value: util.deprecate(object[to], sub('%s.%s() is renamed to %s.%s()',\n name, from, name, to)),\n enumerable: false\n })\n } catch {}\n}\n\n// decorator that allows snake_case class methods to be called with camelCase and vice versa\nfunction _camelcase_alias(_class) {\n for (let name of Object.getOwnPropertyNames(_class.prototype)) {\n let camelcase = name.replace(/\\w_[a-z]/g, s => s[0] + s[2].toUpperCase())\n if (camelcase !== name) _alias(_class.prototype, camelcase, name)\n }\n return _class\n}\n\nfunction _to_legacy_name(key) {\n key = key.replace(/\\w_[a-z]/g, s => s[0] + s[2].toUpperCase())\n if (key === 'default') key = 'defaultValue'\n if (key === 'const') key = 'constant'\n return key\n}\n\nfunction _to_new_name(key) {\n if (key === 'defaultValue') key = 'default'\n if (key === 'constant') key = 'const'\n key = key.replace(/[A-Z]/g, c => '_' + c.toLowerCase())\n return key\n}\n\n// parse options\nlet no_default = Symbol('no_default_value')\nfunction _parse_opts(args, descriptor) {\n function get_name() {\n let stack = new Error().stack.split('\\n')\n .map(x => x.match(/^ at (.*) \\(.*\\)$/))\n .filter(Boolean)\n .map(m => m[1])\n .map(fn => fn.match(/[^ .]*$/)[0])\n\n if (stack.length && stack[0] === get_name.name) stack.shift()\n if (stack.length && stack[0] === _parse_opts.name) stack.shift()\n return stack.length ? stack[0] : ''\n }\n\n args = Array.from(args)\n let kwargs = {}\n let result = []\n let last_opt = args.length && args[args.length - 1]\n\n if (typeof last_opt === 'object' && last_opt !== null && !Array.isArray(last_opt) &&\n (!last_opt.constructor || last_opt.constructor.name === 'Object')) {\n kwargs = Object.assign({}, args.pop())\n }\n\n // LEGACY (v1 compatibility): camelcase\n let renames = []\n for (let key of Object.keys(descriptor)) {\n let old_name = _to_legacy_name(key)\n if (old_name !== key && (old_name in kwargs)) {\n if (key in kwargs) {\n // default and defaultValue specified at the same time, happens often in old tests\n //throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), key))\n } else {\n kwargs[key] = kwargs[old_name]\n }\n renames.push([ old_name, key ])\n delete kwargs[old_name]\n }\n }\n if (renames.length) {\n let name = get_name()\n deprecate('camelcase_' + name, sub('%s(): following options are renamed: %s',\n name, renames.map(([ a, b ]) => sub('%r -> %r', a, b))))\n }\n // end\n\n let missing_positionals = []\n let positional_count = args.length\n\n for (let [ key, def ] of Object.entries(descriptor)) {\n if (key[0] === '*') {\n if (key.length > 0 && key[1] === '*') {\n // LEGACY (v1 compatibility): camelcase\n let renames = []\n for (let key of Object.keys(kwargs)) {\n let new_name = _to_new_name(key)\n if (new_name !== key && (key in kwargs)) {\n if (new_name in kwargs) {\n // default and defaultValue specified at the same time, happens often in old tests\n //throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), new_name))\n } else {\n kwargs[new_name] = kwargs[key]\n }\n renames.push([ key, new_name ])\n delete kwargs[key]\n }\n }\n if (renames.length) {\n let name = get_name()\n deprecate('camelcase_' + name, sub('%s(): following options are renamed: %s',\n name, renames.map(([ a, b ]) => sub('%r -> %r', a, b))))\n }\n // end\n result.push(kwargs)\n kwargs = {}\n } else {\n result.push(args)\n args = []\n }\n } else if (key in kwargs && args.length > 0) {\n throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), key))\n } else if (key in kwargs) {\n result.push(kwargs[key])\n delete kwargs[key]\n } else if (args.length > 0) {\n result.push(args.shift())\n } else if (def !== no_default) {\n result.push(def)\n } else {\n missing_positionals.push(key)\n }\n }\n\n if (Object.keys(kwargs).length) {\n throw new TypeError(sub('%s() got an unexpected keyword argument %r',\n get_name(), Object.keys(kwargs)[0]))\n }\n\n if (args.length) {\n let from = Object.entries(descriptor).filter(([ k, v ]) => k[0] !== '*' && v !== no_default).length\n let to = Object.entries(descriptor).filter(([ k ]) => k[0] !== '*').length\n throw new TypeError(sub('%s() takes %s positional argument%s but %s %s given',\n get_name(),\n from === to ? sub('from %s to %s', from, to) : to,\n from === to && to === 1 ? '' : 's',\n positional_count,\n positional_count === 1 ? 'was' : 'were'))\n }\n\n if (missing_positionals.length) {\n let strs = missing_positionals.map(repr)\n if (strs.length > 1) strs[strs.length - 1] = 'and ' + strs[strs.length - 1]\n let str_joined = strs.join(strs.length === 2 ? '' : ', ')\n throw new TypeError(sub('%s() missing %i required positional argument%s: %s',\n get_name(), strs.length, strs.length === 1 ? '' : 's', str_joined))\n }\n\n return result\n}\n\nlet _deprecations = {}\nfunction deprecate(id, string) {\n _deprecations[id] = _deprecations[id] || util.deprecate(() => {}, string)\n _deprecations[id]()\n}\n\n\n// =============================\n// Utility functions and classes\n// =============================\nfunction _AttributeHolder(cls = Object) {\n /*\n * Abstract base class that provides __repr__.\n *\n * The __repr__ method returns a string in the format::\n * ClassName(attr=name, attr=name, ...)\n * The attributes are determined either by a class-level attribute,\n * '_kwarg_names', or by inspecting the instance __dict__.\n */\n\n return class _AttributeHolder extends cls {\n [util.inspect.custom]() {\n let type_name = this.constructor.name\n let arg_strings = []\n let star_args = {}\n for (let arg of this._get_args()) {\n arg_strings.push(repr(arg))\n }\n for (let [ name, value ] of this._get_kwargs()) {\n if (/^[a-z_][a-z0-9_$]*$/i.test(name)) {\n arg_strings.push(sub('%s=%r', name, value))\n } else {\n star_args[name] = value\n }\n }\n if (Object.keys(star_args).length) {\n arg_strings.push(sub('**%s', repr(star_args)))\n }\n return sub('%s(%s)', type_name, arg_strings.join(', '))\n }\n\n toString() {\n return this[util.inspect.custom]()\n }\n\n _get_kwargs() {\n return Object.entries(this)\n }\n\n _get_args() {\n return []\n }\n }\n}\n\n\nfunction _copy_items(items) {\n if (items === undefined) {\n return []\n }\n return items.slice(0)\n}\n\n\n// ===============\n// Formatting Help\n// ===============\nconst HelpFormatter = _camelcase_alias(_callable(class HelpFormatter {\n /*\n * Formatter for generating usage messages and argument help strings.\n *\n * Only the name of this class is considered a public API. All the methods\n * provided by the class are considered an implementation detail.\n */\n\n constructor() {\n let [\n prog,\n indent_increment,\n max_help_position,\n width\n ] = _parse_opts(arguments, {\n prog: no_default,\n indent_increment: 2,\n max_help_position: 24,\n width: undefined\n })\n\n // default setting for width\n if (width === undefined) {\n width = get_terminal_size().columns\n width -= 2\n }\n\n this._prog = prog\n this._indent_increment = indent_increment\n this._max_help_position = Math.min(max_help_position,\n Math.max(width - 20, indent_increment * 2))\n this._width = width\n\n this._current_indent = 0\n this._level = 0\n this._action_max_length = 0\n\n this._root_section = this._Section(this, undefined)\n this._current_section = this._root_section\n\n this._whitespace_matcher = /[ \\t\\n\\r\\f\\v]+/g // equivalent to python /\\s+/ with ASCII flag\n this._long_break_matcher = /\\n\\n\\n+/g\n }\n\n // ===============================\n // Section and indentation methods\n // ===============================\n _indent() {\n this._current_indent += this._indent_increment\n this._level += 1\n }\n\n _dedent() {\n this._current_indent -= this._indent_increment\n assert(this._current_indent >= 0, 'Indent decreased below 0.')\n this._level -= 1\n }\n\n _add_item(func, args) {\n this._current_section.items.push([ func, args ])\n }\n\n // ========================\n // Message building methods\n // ========================\n start_section(heading) {\n this._indent()\n let section = this._Section(this, this._current_section, heading)\n this._add_item(section.format_help.bind(section), [])\n this._current_section = section\n }\n\n end_section() {\n this._current_section = this._current_section.parent\n this._dedent()\n }\n\n add_text(text) {\n if (text !== SUPPRESS && text !== undefined) {\n this._add_item(this._format_text.bind(this), [text])\n }\n }\n\n add_usage(usage, actions, groups, prefix = undefined) {\n if (usage !== SUPPRESS) {\n let args = [ usage, actions, groups, prefix ]\n this._add_item(this._format_usage.bind(this), args)\n }\n }\n\n add_argument(action) {\n if (action.help !== SUPPRESS) {\n\n // find all invocations\n let invocations = [this._format_action_invocation(action)]\n for (let subaction of this._iter_indented_subactions(action)) {\n invocations.push(this._format_action_invocation(subaction))\n }\n\n // update the maximum item length\n let invocation_length = Math.max(...invocations.map(invocation => invocation.length))\n let action_length = invocation_length + this._current_indent\n this._action_max_length = Math.max(this._action_max_length,\n action_length)\n\n // add the item to the list\n this._add_item(this._format_action.bind(this), [action])\n }\n }\n\n add_arguments(actions) {\n for (let action of actions) {\n this.add_argument(action)\n }\n }\n\n // =======================\n // Help-formatting methods\n // =======================\n format_help() {\n let help = this._root_section.format_help()\n if (help) {\n help = help.replace(this._long_break_matcher, '\\n\\n')\n help = help.replace(/^\\n+|\\n+$/g, '') + '\\n'\n }\n return help\n }\n\n _join_parts(part_strings) {\n return part_strings.filter(part => part && part !== SUPPRESS).join('')\n }\n\n _format_usage(usage, actions, groups, prefix) {\n if (prefix === undefined) {\n prefix = 'usage: '\n }\n\n // if usage is specified, use that\n if (usage !== undefined) {\n usage = sub(usage, { prog: this._prog })\n\n // if no optionals or positionals are available, usage is just prog\n } else if (usage === undefined && !actions.length) {\n usage = sub('%(prog)s', { prog: this._prog })\n\n // if optionals and positionals are available, calculate usage\n } else if (usage === undefined) {\n let prog = sub('%(prog)s', { prog: this._prog })\n\n // split optionals from positionals\n let optionals = []\n let positionals = []\n for (let action of actions) {\n if (action.option_strings.length) {\n optionals.push(action)\n } else {\n positionals.push(action)\n }\n }\n\n // build full usage string\n let action_usage = this._format_actions_usage([].concat(optionals).concat(positionals), groups)\n usage = [ prog, action_usage ].map(String).join(' ')\n\n // wrap the usage parts if it's too long\n let text_width = this._width - this._current_indent\n if (prefix.length + usage.length > text_width) {\n\n // break usage into wrappable parts\n let part_regexp = /\\(.*?\\)+(?=\\s|$)|\\[.*?\\]+(?=\\s|$)|\\S+/g\n let opt_usage = this._format_actions_usage(optionals, groups)\n let pos_usage = this._format_actions_usage(positionals, groups)\n let opt_parts = opt_usage.match(part_regexp) || []\n let pos_parts = pos_usage.match(part_regexp) || []\n assert(opt_parts.join(' ') === opt_usage)\n assert(pos_parts.join(' ') === pos_usage)\n\n // helper for wrapping lines\n let get_lines = (parts, indent, prefix = undefined) => {\n let lines = []\n let line = []\n let line_len\n if (prefix !== undefined) {\n line_len = prefix.length - 1\n } else {\n line_len = indent.length - 1\n }\n for (let part of parts) {\n if (line_len + 1 + part.length > text_width && line) {\n lines.push(indent + line.join(' '))\n line = []\n line_len = indent.length - 1\n }\n line.push(part)\n line_len += part.length + 1\n }\n if (line.length) {\n lines.push(indent + line.join(' '))\n }\n if (prefix !== undefined) {\n lines[0] = lines[0].slice(indent.length)\n }\n return lines\n }\n\n let lines\n\n // if prog is short, follow it with optionals or positionals\n if (prefix.length + prog.length <= 0.75 * text_width) {\n let indent = ' '.repeat(prefix.length + prog.length + 1)\n if (opt_parts.length) {\n lines = get_lines([prog].concat(opt_parts), indent, prefix)\n lines = lines.concat(get_lines(pos_parts, indent))\n } else if (pos_parts.length) {\n lines = get_lines([prog].concat(pos_parts), indent, prefix)\n } else {\n lines = [prog]\n }\n\n // if prog is long, put it on its own line\n } else {\n let indent = ' '.repeat(prefix.length)\n let parts = [].concat(opt_parts).concat(pos_parts)\n lines = get_lines(parts, indent)\n if (lines.length > 1) {\n lines = []\n lines = lines.concat(get_lines(opt_parts, indent))\n lines = lines.concat(get_lines(pos_parts, indent))\n }\n lines = [prog].concat(lines)\n }\n\n // join lines into usage\n usage = lines.join('\\n')\n }\n }\n\n // prefix with 'usage:'\n return sub('%s%s\\n\\n', prefix, usage)\n }\n\n _format_actions_usage(actions, groups) {\n // find group indices and identify actions in groups\n let group_actions = new Set()\n let inserts = {}\n for (let group of groups) {\n let start = actions.indexOf(group._group_actions[0])\n if (start === -1) {\n continue\n } else {\n let end = start + group._group_actions.length\n if (_array_equal(actions.slice(start, end), group._group_actions)) {\n for (let action of group._group_actions) {\n group_actions.add(action)\n }\n if (!group.required) {\n if (start in inserts) {\n inserts[start] += ' ['\n } else {\n inserts[start] = '['\n }\n if (end in inserts) {\n inserts[end] += ']'\n } else {\n inserts[end] = ']'\n }\n } else {\n if (start in inserts) {\n inserts[start] += ' ('\n } else {\n inserts[start] = '('\n }\n if (end in inserts) {\n inserts[end] += ')'\n } else {\n inserts[end] = ')'\n }\n }\n for (let i of range(start + 1, end)) {\n inserts[i] = '|'\n }\n }\n }\n }\n\n // collect all actions format strings\n let parts = []\n for (let [ i, action ] of Object.entries(actions)) {\n\n // suppressed arguments are marked with None\n // remove | separators for suppressed arguments\n if (action.help === SUPPRESS) {\n parts.push(undefined)\n if (inserts[+i] === '|') {\n delete inserts[+i]\n } else if (inserts[+i + 1] === '|') {\n delete inserts[+i + 1]\n }\n\n // produce all arg strings\n } else if (!action.option_strings.length) {\n let default_value = this._get_default_metavar_for_positional(action)\n let part = this._format_args(action, default_value)\n\n // if it's in a group, strip the outer []\n if (group_actions.has(action)) {\n if (part[0] === '[' && part[part.length - 1] === ']') {\n part = part.slice(1, -1)\n }\n }\n\n // add the action string to the list\n parts.push(part)\n\n // produce the first way to invoke the option in brackets\n } else {\n let option_string = action.option_strings[0]\n let part\n\n // if the Optional doesn't take a value, format is:\n // -s or --long\n if (action.nargs === 0) {\n part = action.format_usage()\n\n // if the Optional takes a value, format is:\n // -s ARGS or --long ARGS\n } else {\n let default_value = this._get_default_metavar_for_optional(action)\n let args_string = this._format_args(action, default_value)\n part = sub('%s %s', option_string, args_string)\n }\n\n // make it look optional if it's not required or in a group\n if (!action.required && !group_actions.has(action)) {\n part = sub('[%s]', part)\n }\n\n // add the action string to the list\n parts.push(part)\n }\n }\n\n // insert things at the necessary indices\n for (let i of Object.keys(inserts).map(Number).sort((a, b) => b - a)) {\n parts.splice(+i, 0, inserts[+i])\n }\n\n // join all the action items with spaces\n let text = parts.filter(Boolean).join(' ')\n\n // clean up separators for mutually exclusive groups\n text = text.replace(/([\\[(]) /g, '$1')\n text = text.replace(/ ([\\])])/g, '$1')\n text = text.replace(/[\\[(] *[\\])]/g, '')\n text = text.replace(/\\(([^|]*)\\)/g, '$1', text)\n text = text.trim()\n\n // return the text\n return text\n }\n\n _format_text(text) {\n if (text.includes('%(prog)')) {\n text = sub(text, { prog: this._prog })\n }\n let text_width = Math.max(this._width - this._current_indent, 11)\n let indent = ' '.repeat(this._current_indent)\n return this._fill_text(text, text_width, indent) + '\\n\\n'\n }\n\n _format_action(action) {\n // determine the required width and the entry label\n let help_position = Math.min(this._action_max_length + 2,\n this._max_help_position)\n let help_width = Math.max(this._width - help_position, 11)\n let action_width = help_position - this._current_indent - 2\n let action_header = this._format_action_invocation(action)\n let indent_first\n\n // no help; start on same line and add a final newline\n if (!action.help) {\n let tup = [ this._current_indent, '', action_header ]\n action_header = sub('%*s%s\\n', ...tup)\n\n // short action name; start on the same line and pad two spaces\n } else if (action_header.length <= action_width) {\n let tup = [ this._current_indent, '', action_width, action_header ]\n action_header = sub('%*s%-*s ', ...tup)\n indent_first = 0\n\n // long action name; start on the next line\n } else {\n let tup = [ this._current_indent, '', action_header ]\n action_header = sub('%*s%s\\n', ...tup)\n indent_first = help_position\n }\n\n // collect the pieces of the action help\n let parts = [action_header]\n\n // if there was help for the action, add lines of help text\n if (action.help) {\n let help_text = this._expand_help(action)\n let help_lines = this._split_lines(help_text, help_width)\n parts.push(sub('%*s%s\\n', indent_first, '', help_lines[0]))\n for (let line of help_lines.slice(1)) {\n parts.push(sub('%*s%s\\n', help_position, '', line))\n }\n\n // or add a newline if the description doesn't end with one\n } else if (!action_header.endsWith('\\n')) {\n parts.push('\\n')\n }\n\n // if there are any sub-actions, add their help as well\n for (let subaction of this._iter_indented_subactions(action)) {\n parts.push(this._format_action(subaction))\n }\n\n // return a single string\n return this._join_parts(parts)\n }\n\n _format_action_invocation(action) {\n if (!action.option_strings.length) {\n let default_value = this._get_default_metavar_for_positional(action)\n let metavar = this._metavar_formatter(action, default_value)(1)[0]\n return metavar\n\n } else {\n let parts = []\n\n // if the Optional doesn't take a value, format is:\n // -s, --long\n if (action.nargs === 0) {\n parts = parts.concat(action.option_strings)\n\n // if the Optional takes a value, format is:\n // -s ARGS, --long ARGS\n } else {\n let default_value = this._get_default_metavar_for_optional(action)\n let args_string = this._format_args(action, default_value)\n for (let option_string of action.option_strings) {\n parts.push(sub('%s %s', option_string, args_string))\n }\n }\n\n return parts.join(', ')\n }\n }\n\n _metavar_formatter(action, default_metavar) {\n let result\n if (action.metavar !== undefined) {\n result = action.metavar\n } else if (action.choices !== undefined) {\n let choice_strs = _choices_to_array(action.choices).map(String)\n result = sub('{%s}', choice_strs.join(','))\n } else {\n result = default_metavar\n }\n\n function format(tuple_size) {\n if (Array.isArray(result)) {\n return result\n } else {\n return Array(tuple_size).fill(result)\n }\n }\n return format\n }\n\n _format_args(action, default_metavar) {\n let get_metavar = this._metavar_formatter(action, default_metavar)\n let result\n if (action.nargs === undefined) {\n result = sub('%s', ...get_metavar(1))\n } else if (action.nargs === OPTIONAL) {\n result = sub('[%s]', ...get_metavar(1))\n } else if (action.nargs === ZERO_OR_MORE) {\n let metavar = get_metavar(1)\n if (metavar.length === 2) {\n result = sub('[%s [%s ...]]', ...metavar)\n } else {\n result = sub('[%s ...]', ...metavar)\n }\n } else if (action.nargs === ONE_OR_MORE) {\n result = sub('%s [%s ...]', ...get_metavar(2))\n } else if (action.nargs === REMAINDER) {\n result = '...'\n } else if (action.nargs === PARSER) {\n result = sub('%s ...', ...get_metavar(1))\n } else if (action.nargs === SUPPRESS) {\n result = ''\n } else {\n let formats\n try {\n formats = range(action.nargs).map(() => '%s')\n } catch (err) {\n throw new TypeError('invalid nargs value')\n }\n result = sub(formats.join(' '), ...get_metavar(action.nargs))\n }\n return result\n }\n\n _expand_help(action) {\n let params = Object.assign({ prog: this._prog }, action)\n for (let name of Object.keys(params)) {\n if (params[name] === SUPPRESS) {\n delete params[name]\n }\n }\n for (let name of Object.keys(params)) {\n if (params[name] && params[name].name) {\n params[name] = params[name].name\n }\n }\n if (params.choices !== undefined) {\n let choices_str = _choices_to_array(params.choices).map(String).join(', ')\n params.choices = choices_str\n }\n // LEGACY (v1 compatibility): camelcase\n for (let key of Object.keys(params)) {\n let old_name = _to_legacy_name(key)\n if (old_name !== key) {\n params[old_name] = params[key]\n }\n }\n // end\n return sub(this._get_help_string(action), params)\n }\n\n * _iter_indented_subactions(action) {\n if (typeof action._get_subactions === 'function') {\n this._indent()\n yield* action._get_subactions()\n this._dedent()\n }\n }\n\n _split_lines(text, width) {\n text = text.replace(this._whitespace_matcher, ' ').trim()\n // The textwrap module is used only for formatting help.\n // Delay its import for speeding up the common usage of argparse.\n let textwrap = require('./lib/textwrap')\n return textwrap.wrap(text, { width })\n }\n\n _fill_text(text, width, indent) {\n text = text.replace(this._whitespace_matcher, ' ').trim()\n let textwrap = require('./lib/textwrap')\n return textwrap.fill(text, { width,\n initial_indent: indent,\n subsequent_indent: indent })\n }\n\n _get_help_string(action) {\n return action.help\n }\n\n _get_default_metavar_for_optional(action) {\n return action.dest.toUpperCase()\n }\n\n _get_default_metavar_for_positional(action) {\n return action.dest\n }\n}))\n\nHelpFormatter.prototype._Section = _callable(class _Section {\n\n constructor(formatter, parent, heading = undefined) {\n this.formatter = formatter\n this.parent = parent\n this.heading = heading\n this.items = []\n }\n\n format_help() {\n // format the indented section\n if (this.parent !== undefined) {\n this.formatter._indent()\n }\n let item_help = this.formatter._join_parts(this.items.map(([ func, args ]) => func.apply(null, args)))\n if (this.parent !== undefined) {\n this.formatter._dedent()\n }\n\n // return nothing if the section was empty\n if (!item_help) {\n return ''\n }\n\n // add the heading if the section was non-empty\n let heading\n if (this.heading !== SUPPRESS && this.heading !== undefined) {\n let current_indent = this.formatter._current_indent\n heading = sub('%*s%s:\\n', current_indent, '', this.heading)\n } else {\n heading = ''\n }\n\n // join the section-initial newline, the heading and the help\n return this.formatter._join_parts(['\\n', heading, item_help, '\\n'])\n }\n})\n\n\nconst RawDescriptionHelpFormatter = _camelcase_alias(_callable(class RawDescriptionHelpFormatter extends HelpFormatter {\n /*\n * Help message formatter which retains any formatting in descriptions.\n *\n * Only the name of this class is considered a public API. All the methods\n * provided by the class are considered an implementation detail.\n */\n\n _fill_text(text, width, indent) {\n return splitlines(text, true).map(line => indent + line).join('')\n }\n}))\n\n\nconst RawTextHelpFormatter = _camelcase_alias(_callable(class RawTextHelpFormatter extends RawDescriptionHelpFormatter {\n /*\n * Help message formatter which retains formatting of all help text.\n *\n * Only the name of this class is considered a public API. All the methods\n * provided by the class are considered an implementation detail.\n */\n\n _split_lines(text/*, width*/) {\n return splitlines(text)\n }\n}))\n\n\nconst ArgumentDefaultsHelpFormatter = _camelcase_alias(_callable(class ArgumentDefaultsHelpFormatter extends HelpFormatter {\n /*\n * Help message formatter which adds default values to argument help.\n *\n * Only the name of this class is considered a public API. All the methods\n * provided by the class are considered an implementation detail.\n */\n\n _get_help_string(action) {\n let help = action.help\n // LEGACY (v1 compatibility): additional check for defaultValue needed\n if (!action.help.includes('%(default)') && !action.help.includes('%(defaultValue)')) {\n if (action.default !== SUPPRESS) {\n let defaulting_nargs = [OPTIONAL, ZERO_OR_MORE]\n if (action.option_strings.length || defaulting_nargs.includes(action.nargs)) {\n help += ' (default: %(default)s)'\n }\n }\n }\n return help\n }\n}))\n\n\nconst MetavarTypeHelpFormatter = _camelcase_alias(_callable(class MetavarTypeHelpFormatter extends HelpFormatter {\n /*\n * Help message formatter which uses the argument 'type' as the default\n * metavar value (instead of the argument 'dest')\n *\n * Only the name of this class is considered a public API. All the methods\n * provided by the class are considered an implementation detail.\n */\n\n _get_default_metavar_for_optional(action) {\n return typeof action.type === 'function' ? action.type.name : action.type\n }\n\n _get_default_metavar_for_positional(action) {\n return typeof action.type === 'function' ? action.type.name : action.type\n }\n}))\n\n\n// =====================\n// Options and Arguments\n// =====================\nfunction _get_action_name(argument) {\n if (argument === undefined) {\n return undefined\n } else if (argument.option_strings.length) {\n return argument.option_strings.join('/')\n } else if (![ undefined, SUPPRESS ].includes(argument.metavar)) {\n return argument.metavar\n } else if (![ undefined, SUPPRESS ].includes(argument.dest)) {\n return argument.dest\n } else {\n return undefined\n }\n}\n\n\nconst ArgumentError = _callable(class ArgumentError extends Error {\n /*\n * An error from creating or using an argument (optional or positional).\n *\n * The string value of this exception is the message, augmented with\n * information about the argument that caused it.\n */\n\n constructor(argument, message) {\n super()\n this.name = 'ArgumentError'\n this._argument_name = _get_action_name(argument)\n this._message = message\n this.message = this.str()\n }\n\n str() {\n let format\n if (this._argument_name === undefined) {\n format = '%(message)s'\n } else {\n format = 'argument %(argument_name)s: %(message)s'\n }\n return sub(format, { message: this._message,\n argument_name: this._argument_name })\n }\n})\n\n\nconst ArgumentTypeError = _callable(class ArgumentTypeError extends Error {\n /*\n * An error from trying to convert a command line string to a type.\n */\n\n constructor(message) {\n super(message)\n this.name = 'ArgumentTypeError'\n }\n})\n\n\n// ==============\n// Action classes\n// ==============\nconst Action = _camelcase_alias(_callable(class Action extends _AttributeHolder(Function) {\n /*\n * Information about how to convert command line strings to Python objects.\n *\n * Action objects are used by an ArgumentParser to represent the information\n * needed to parse a single argument from one or more strings from the\n * command line. The keyword arguments to the Action constructor are also\n * all attributes of Action instances.\n *\n * Keyword Arguments:\n *\n * - option_strings -- A list of command-line option strings which\n * should be associated with this action.\n *\n * - dest -- The name of the attribute to hold the created object(s)\n *\n * - nargs -- The number of command-line arguments that should be\n * consumed. By default, one argument will be consumed and a single\n * value will be produced. Other values include:\n * - N (an integer) consumes N arguments (and produces a list)\n * - '?' consumes zero or one arguments\n * - '*' consumes zero or more arguments (and produces a list)\n * - '+' consumes one or more arguments (and produces a list)\n * Note that the difference between the default and nargs=1 is that\n * with the default, a single value will be produced, while with\n * nargs=1, a list containing a single value will be produced.\n *\n * - const -- The value to be produced if the option is specified and the\n * option uses an action that takes no values.\n *\n * - default -- The value to be produced if the option is not specified.\n *\n * - type -- A callable that accepts a single string argument, and\n * returns the converted value. The standard Python types str, int,\n * float, and complex are useful examples of such callables. If None,\n * str is used.\n *\n * - choices -- A container of values that should be allowed. If not None,\n * after a command-line argument has been converted to the appropriate\n * type, an exception will be raised if it is not a member of this\n * collection.\n *\n * - required -- True if the action must always be specified at the\n * command line. This is only meaningful for optional command-line\n * arguments.\n *\n * - help -- The help string describing the argument.\n *\n * - metavar -- The name to be used for the option's argument with the\n * help string. If None, the 'dest' value will be used as the name.\n */\n\n constructor() {\n let [\n option_strings,\n dest,\n nargs,\n const_value,\n default_value,\n type,\n choices,\n required,\n help,\n metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n nargs: undefined,\n const: undefined,\n default: undefined,\n type: undefined,\n choices: undefined,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n // when this class is called as a function, redirect it to .call() method of itself\n super('return arguments.callee.call.apply(arguments.callee, arguments)')\n\n this.option_strings = option_strings\n this.dest = dest\n this.nargs = nargs\n this.const = const_value\n this.default = default_value\n this.type = type\n this.choices = choices\n this.required = required\n this.help = help\n this.metavar = metavar\n }\n\n _get_kwargs() {\n let names = [\n 'option_strings',\n 'dest',\n 'nargs',\n 'const',\n 'default',\n 'type',\n 'choices',\n 'help',\n 'metavar'\n ]\n return names.map(name => [ name, getattr(this, name) ])\n }\n\n format_usage() {\n return this.option_strings[0]\n }\n\n call(/*parser, namespace, values, option_string = undefined*/) {\n throw new Error('.call() not defined')\n }\n}))\n\n\nconst BooleanOptionalAction = _camelcase_alias(_callable(class BooleanOptionalAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n default_value,\n type,\n choices,\n required,\n help,\n metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n default: undefined,\n type: undefined,\n choices: undefined,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n let _option_strings = []\n for (let option_string of option_strings) {\n _option_strings.push(option_string)\n\n if (option_string.startsWith('--')) {\n option_string = '--no-' + option_string.slice(2)\n _option_strings.push(option_string)\n }\n }\n\n if (help !== undefined && default_value !== undefined) {\n help += ` (default: ${default_value})`\n }\n\n super({\n option_strings: _option_strings,\n dest,\n nargs: 0,\n default: default_value,\n type,\n choices,\n required,\n help,\n metavar\n })\n }\n\n call(parser, namespace, values, option_string = undefined) {\n if (this.option_strings.includes(option_string)) {\n setattr(namespace, this.dest, !option_string.startsWith('--no-'))\n }\n }\n\n format_usage() {\n return this.option_strings.join(' | ')\n }\n}))\n\n\nconst _StoreAction = _callable(class _StoreAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n nargs,\n const_value,\n default_value,\n type,\n choices,\n required,\n help,\n metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n nargs: undefined,\n const: undefined,\n default: undefined,\n type: undefined,\n choices: undefined,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n if (nargs === 0) {\n throw new TypeError('nargs for store actions must be != 0; if you ' +\n 'have nothing to store, actions such as store ' +\n 'true or store const may be more appropriate')\n }\n if (const_value !== undefined && nargs !== OPTIONAL) {\n throw new TypeError(sub('nargs must be %r to supply const', OPTIONAL))\n }\n super({\n option_strings,\n dest,\n nargs,\n const: const_value,\n default: default_value,\n type,\n choices,\n required,\n help,\n metavar\n })\n }\n\n call(parser, namespace, values/*, option_string = undefined*/) {\n setattr(namespace, this.dest, values)\n }\n})\n\n\nconst _StoreConstAction = _callable(class _StoreConstAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n const_value,\n default_value,\n required,\n help\n //, metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n const: no_default,\n default: undefined,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n super({\n option_strings,\n dest,\n nargs: 0,\n const: const_value,\n default: default_value,\n required,\n help\n })\n }\n\n call(parser, namespace/*, values, option_string = undefined*/) {\n setattr(namespace, this.dest, this.const)\n }\n})\n\n\nconst _StoreTrueAction = _callable(class _StoreTrueAction extends _StoreConstAction {\n\n constructor() {\n let [\n option_strings,\n dest,\n default_value,\n required,\n help\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n default: false,\n required: false,\n help: undefined\n })\n\n super({\n option_strings,\n dest,\n const: true,\n default: default_value,\n required,\n help\n })\n }\n})\n\n\nconst _StoreFalseAction = _callable(class _StoreFalseAction extends _StoreConstAction {\n\n constructor() {\n let [\n option_strings,\n dest,\n default_value,\n required,\n help\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n default: true,\n required: false,\n help: undefined\n })\n\n super({\n option_strings,\n dest,\n const: false,\n default: default_value,\n required,\n help\n })\n }\n})\n\n\nconst _AppendAction = _callable(class _AppendAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n nargs,\n const_value,\n default_value,\n type,\n choices,\n required,\n help,\n metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n nargs: undefined,\n const: undefined,\n default: undefined,\n type: undefined,\n choices: undefined,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n if (nargs === 0) {\n throw new TypeError('nargs for append actions must be != 0; if arg ' +\n 'strings are not supplying the value to append, ' +\n 'the append const action may be more appropriate')\n }\n if (const_value !== undefined && nargs !== OPTIONAL) {\n throw new TypeError(sub('nargs must be %r to supply const', OPTIONAL))\n }\n super({\n option_strings,\n dest,\n nargs,\n const: const_value,\n default: default_value,\n type,\n choices,\n required,\n help,\n metavar\n })\n }\n\n call(parser, namespace, values/*, option_string = undefined*/) {\n let items = getattr(namespace, this.dest, undefined)\n items = _copy_items(items)\n items.push(values)\n setattr(namespace, this.dest, items)\n }\n})\n\n\nconst _AppendConstAction = _callable(class _AppendConstAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n const_value,\n default_value,\n required,\n help,\n metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n const: no_default,\n default: undefined,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n super({\n option_strings,\n dest,\n nargs: 0,\n const: const_value,\n default: default_value,\n required,\n help,\n metavar\n })\n }\n\n call(parser, namespace/*, values, option_string = undefined*/) {\n let items = getattr(namespace, this.dest, undefined)\n items = _copy_items(items)\n items.push(this.const)\n setattr(namespace, this.dest, items)\n }\n})\n\n\nconst _CountAction = _callable(class _CountAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n default_value,\n required,\n help\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n default: undefined,\n required: false,\n help: undefined\n })\n\n super({\n option_strings,\n dest,\n nargs: 0,\n default: default_value,\n required,\n help\n })\n }\n\n call(parser, namespace/*, values, option_string = undefined*/) {\n let count = getattr(namespace, this.dest, undefined)\n if (count === undefined) {\n count = 0\n }\n setattr(namespace, this.dest, count + 1)\n }\n})\n\n\nconst _HelpAction = _callable(class _HelpAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n default_value,\n help\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: SUPPRESS,\n default: SUPPRESS,\n help: undefined\n })\n\n super({\n option_strings,\n dest,\n default: default_value,\n nargs: 0,\n help\n })\n }\n\n call(parser/*, namespace, values, option_string = undefined*/) {\n parser.print_help()\n parser.exit()\n }\n})\n\n\nconst _VersionAction = _callable(class _VersionAction extends Action {\n\n constructor() {\n let [\n option_strings,\n version,\n dest,\n default_value,\n help\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n version: undefined,\n dest: SUPPRESS,\n default: SUPPRESS,\n help: \"show program's version number and exit\"\n })\n\n super({\n option_strings,\n dest,\n default: default_value,\n nargs: 0,\n help\n })\n this.version = version\n }\n\n call(parser/*, namespace, values, option_string = undefined*/) {\n let version = this.version\n if (version === undefined) {\n version = parser.version\n }\n let formatter = parser._get_formatter()\n formatter.add_text(version)\n parser._print_message(formatter.format_help(), process.stdout)\n parser.exit()\n }\n})\n\n\nconst _SubParsersAction = _camelcase_alias(_callable(class _SubParsersAction extends Action {\n\n constructor() {\n let [\n option_strings,\n prog,\n parser_class,\n dest,\n required,\n help,\n metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n prog: no_default,\n parser_class: no_default,\n dest: SUPPRESS,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n let name_parser_map = {}\n\n super({\n option_strings,\n dest,\n nargs: PARSER,\n choices: name_parser_map,\n required,\n help,\n metavar\n })\n\n this._prog_prefix = prog\n this._parser_class = parser_class\n this._name_parser_map = name_parser_map\n this._choices_actions = []\n }\n\n add_parser() {\n let [\n name,\n kwargs\n ] = _parse_opts(arguments, {\n name: no_default,\n '**kwargs': no_default\n })\n\n // set prog from the existing prefix\n if (kwargs.prog === undefined) {\n kwargs.prog = sub('%s %s', this._prog_prefix, name)\n }\n\n let aliases = getattr(kwargs, 'aliases', [])\n delete kwargs.aliases\n\n // create a pseudo-action to hold the choice help\n if ('help' in kwargs) {\n let help = kwargs.help\n delete kwargs.help\n let choice_action = this._ChoicesPseudoAction(name, aliases, help)\n this._choices_actions.push(choice_action)\n }\n\n // create the parser and add it to the map\n let parser = new this._parser_class(kwargs)\n this._name_parser_map[name] = parser\n\n // make parser available under aliases also\n for (let alias of aliases) {\n this._name_parser_map[alias] = parser\n }\n\n return parser\n }\n\n _get_subactions() {\n return this._choices_actions\n }\n\n call(parser, namespace, values/*, option_string = undefined*/) {\n let parser_name = values[0]\n let arg_strings = values.slice(1)\n\n // set the parser name if requested\n if (this.dest !== SUPPRESS) {\n setattr(namespace, this.dest, parser_name)\n }\n\n // select the parser\n if (hasattr(this._name_parser_map, parser_name)) {\n parser = this._name_parser_map[parser_name]\n } else {\n let args = {parser_name,\n choices: this._name_parser_map.join(', ')}\n let msg = sub('unknown parser %(parser_name)r (choices: %(choices)s)', args)\n throw new ArgumentError(this, msg)\n }\n\n // parse all the remaining options into the namespace\n // store any unrecognized options on the object, so that the top\n // level parser can decide what to do with them\n\n // In case this subparser defines new defaults, we parse them\n // in a new namespace object and then update the original\n // namespace for the relevant parts.\n let subnamespace\n [ subnamespace, arg_strings ] = parser.parse_known_args(arg_strings, undefined)\n for (let [ key, value ] of Object.entries(subnamespace)) {\n setattr(namespace, key, value)\n }\n\n if (arg_strings.length) {\n setdefault(namespace, _UNRECOGNIZED_ARGS_ATTR, [])\n getattr(namespace, _UNRECOGNIZED_ARGS_ATTR).push(...arg_strings)\n }\n }\n}))\n\n\n_SubParsersAction.prototype._ChoicesPseudoAction = _callable(class _ChoicesPseudoAction extends Action {\n constructor(name, aliases, help) {\n let metavar = name, dest = name\n if (aliases.length) {\n metavar += sub(' (%s)', aliases.join(', '))\n }\n super({ option_strings: [], dest, help, metavar })\n }\n})\n\n\nconst _ExtendAction = _callable(class _ExtendAction extends _AppendAction {\n call(parser, namespace, values/*, option_string = undefined*/) {\n let items = getattr(namespace, this.dest, undefined)\n items = _copy_items(items)\n items = items.concat(values)\n setattr(namespace, this.dest, items)\n }\n})\n\n\n// ==============\n// Type classes\n// ==============\nconst FileType = _callable(class FileType extends Function {\n /*\n * Factory for creating file object types\n *\n * Instances of FileType are typically passed as type= arguments to the\n * ArgumentParser add_argument() method.\n *\n * Keyword Arguments:\n * - mode -- A string indicating how the file is to be opened. Accepts the\n * same values as the builtin open() function.\n * - bufsize -- The file's desired buffer size. Accepts the same values as\n * the builtin open() function.\n * - encoding -- The file's encoding. Accepts the same values as the\n * builtin open() function.\n * - errors -- A string indicating how encoding and decoding errors are to\n * be handled. Accepts the same value as the builtin open() function.\n */\n\n constructor() {\n let [\n flags,\n encoding,\n mode,\n autoClose,\n emitClose,\n start,\n end,\n highWaterMark,\n fs\n ] = _parse_opts(arguments, {\n flags: 'r',\n encoding: undefined,\n mode: undefined, // 0o666\n autoClose: undefined, // true\n emitClose: undefined, // false\n start: undefined, // 0\n end: undefined, // Infinity\n highWaterMark: undefined, // 64 * 1024\n fs: undefined\n })\n\n // when this class is called as a function, redirect it to .call() method of itself\n super('return arguments.callee.call.apply(arguments.callee, arguments)')\n\n Object.defineProperty(this, 'name', {\n get() {\n return sub('FileType(%r)', flags)\n }\n })\n this._flags = flags\n this._options = {}\n if (encoding !== undefined) this._options.encoding = encoding\n if (mode !== undefined) this._options.mode = mode\n if (autoClose !== undefined) this._options.autoClose = autoClose\n if (emitClose !== undefined) this._options.emitClose = emitClose\n if (start !== undefined) this._options.start = start\n if (end !== undefined) this._options.end = end\n if (highWaterMark !== undefined) this._options.highWaterMark = highWaterMark\n if (fs !== undefined) this._options.fs = fs\n }\n\n call(string) {\n // the special argument \"-\" means sys.std{in,out}\n if (string === '-') {\n if (this._flags.includes('r')) {\n return process.stdin\n } else if (this._flags.includes('w')) {\n return process.stdout\n } else {\n let msg = sub('argument \"-\" with mode %r', this._flags)\n throw new TypeError(msg)\n }\n }\n\n // all other arguments are used as file names\n let fd\n try {\n fd = fs.openSync(string, this._flags, this._options.mode)\n } catch (e) {\n let args = { filename: string, error: e.message }\n let message = \"can't open '%(filename)s': %(error)s\"\n throw new ArgumentTypeError(sub(message, args))\n }\n\n let options = Object.assign({ fd, flags: this._flags }, this._options)\n if (this._flags.includes('r')) {\n return fs.createReadStream(undefined, options)\n } else if (this._flags.includes('w')) {\n return fs.createWriteStream(undefined, options)\n } else {\n let msg = sub('argument \"%s\" with mode %r', string, this._flags)\n throw new TypeError(msg)\n }\n }\n\n [util.inspect.custom]() {\n let args = [ this._flags ]\n let kwargs = Object.entries(this._options).map(([ k, v ]) => {\n if (k === 'mode') v = { value: v, [util.inspect.custom]() { return '0o' + this.value.toString(8) } }\n return [ k, v ]\n })\n let args_str = []\n .concat(args.filter(arg => arg !== -1).map(repr))\n .concat(kwargs.filter(([/*kw*/, arg]) => arg !== undefined)\n .map(([kw, arg]) => sub('%s=%r', kw, arg)))\n .join(', ')\n return sub('%s(%s)', this.constructor.name, args_str)\n }\n\n toString() {\n return this[util.inspect.custom]()\n }\n})\n\n// ===========================\n// Optional and Positional Parsing\n// ===========================\nconst Namespace = _callable(class Namespace extends _AttributeHolder() {\n /*\n * Simple object for storing attributes.\n *\n * Implements equality by attribute names and values, and provides a simple\n * string representation.\n */\n\n constructor(options = {}) {\n super()\n Object.assign(this, options)\n }\n})\n\n// unset string tag to mimic plain object\nNamespace.prototype[Symbol.toStringTag] = undefined\n\n\nconst _ActionsContainer = _camelcase_alias(_callable(class _ActionsContainer {\n\n constructor() {\n let [\n description,\n prefix_chars,\n argument_default,\n conflict_handler\n ] = _parse_opts(arguments, {\n description: no_default,\n prefix_chars: no_default,\n argument_default: no_default,\n conflict_handler: no_default\n })\n\n this.description = description\n this.argument_default = argument_default\n this.prefix_chars = prefix_chars\n this.conflict_handler = conflict_handler\n\n // set up registries\n this._registries = {}\n\n // register actions\n this.register('action', undefined, _StoreAction)\n this.register('action', 'store', _StoreAction)\n this.register('action', 'store_const', _StoreConstAction)\n this.register('action', 'store_true', _StoreTrueAction)\n this.register('action', 'store_false', _StoreFalseAction)\n this.register('action', 'append', _AppendAction)\n this.register('action', 'append_const', _AppendConstAction)\n this.register('action', 'count', _CountAction)\n this.register('action', 'help', _HelpAction)\n this.register('action', 'version', _VersionAction)\n this.register('action', 'parsers', _SubParsersAction)\n this.register('action', 'extend', _ExtendAction)\n // LEGACY (v1 compatibility): camelcase variants\n ;[ 'storeConst', 'storeTrue', 'storeFalse', 'appendConst' ].forEach(old_name => {\n let new_name = _to_new_name(old_name)\n this.register('action', old_name, util.deprecate(this._registry_get('action', new_name),\n sub('{action: \"%s\"} is renamed to {action: \"%s\"}', old_name, new_name)))\n })\n // end\n\n // raise an exception if the conflict handler is invalid\n this._get_handler()\n\n // action storage\n this._actions = []\n this._option_string_actions = {}\n\n // groups\n this._action_groups = []\n this._mutually_exclusive_groups = []\n\n // defaults storage\n this._defaults = {}\n\n // determines whether an \"option\" looks like a negative number\n this._negative_number_matcher = /^-\\d+$|^-\\d*\\.\\d+$/\n\n // whether or not there are any optionals that look like negative\n // numbers -- uses a list so it can be shared and edited\n this._has_negative_number_optionals = []\n }\n\n // ====================\n // Registration methods\n // ====================\n register(registry_name, value, object) {\n let registry = setdefault(this._registries, registry_name, {})\n registry[value] = object\n }\n\n _registry_get(registry_name, value, default_value = undefined) {\n return getattr(this._registries[registry_name], value, default_value)\n }\n\n // ==================================\n // Namespace default accessor methods\n // ==================================\n set_defaults(kwargs) {\n Object.assign(this._defaults, kwargs)\n\n // if these defaults match any existing arguments, replace\n // the previous default on the object with the new one\n for (let action of this._actions) {\n if (action.dest in kwargs) {\n action.default = kwargs[action.dest]\n }\n }\n }\n\n get_default(dest) {\n for (let action of this._actions) {\n if (action.dest === dest && action.default !== undefined) {\n return action.default\n }\n }\n return this._defaults[dest]\n }\n\n\n // =======================\n // Adding argument actions\n // =======================\n add_argument() {\n /*\n * add_argument(dest, ..., name=value, ...)\n * add_argument(option_string, option_string, ..., name=value, ...)\n */\n let [\n args,\n kwargs\n ] = _parse_opts(arguments, {\n '*args': no_default,\n '**kwargs': no_default\n })\n // LEGACY (v1 compatibility), old-style add_argument([ args ], { options })\n if (args.length === 1 && Array.isArray(args[0])) {\n args = args[0]\n deprecate('argument-array',\n sub('use add_argument(%(args)s, {...}) instead of add_argument([ %(args)s ], { ... })', {\n args: args.map(repr).join(', ')\n }))\n }\n // end\n\n // if no positional args are supplied or only one is supplied and\n // it doesn't look like an option string, parse a positional\n // argument\n let chars = this.prefix_chars\n if (!args.length || args.length === 1 && !chars.includes(args[0][0])) {\n if (args.length && 'dest' in kwargs) {\n throw new TypeError('dest supplied twice for positional argument')\n }\n kwargs = this._get_positional_kwargs(...args, kwargs)\n\n // otherwise, we're adding an optional argument\n } else {\n kwargs = this._get_optional_kwargs(...args, kwargs)\n }\n\n // if no default was supplied, use the parser-level default\n if (!('default' in kwargs)) {\n let dest = kwargs.dest\n if (dest in this._defaults) {\n kwargs.default = this._defaults[dest]\n } else if (this.argument_default !== undefined) {\n kwargs.default = this.argument_default\n }\n }\n\n // create the action object, and add it to the parser\n let action_class = this._pop_action_class(kwargs)\n if (typeof action_class !== 'function') {\n throw new TypeError(sub('unknown action \"%s\"', action_class))\n }\n // eslint-disable-next-line new-cap\n let action = new action_class(kwargs)\n\n // raise an error if the action type is not callable\n let type_func = this._registry_get('type', action.type, action.type)\n if (typeof type_func !== 'function') {\n throw new TypeError(sub('%r is not callable', type_func))\n }\n\n if (type_func === FileType) {\n throw new TypeError(sub('%r is a FileType class object, instance of it' +\n ' must be passed', type_func))\n }\n\n // raise an error if the metavar does not match the type\n if ('_get_formatter' in this) {\n try {\n this._get_formatter()._format_args(action, undefined)\n } catch (err) {\n // check for 'invalid nargs value' is an artifact of TypeError and ValueError in js being the same\n if (err instanceof TypeError && err.message !== 'invalid nargs value') {\n throw new TypeError('length of metavar tuple does not match nargs')\n } else {\n throw err\n }\n }\n }\n\n return this._add_action(action)\n }\n\n add_argument_group() {\n let group = _ArgumentGroup(this, ...arguments)\n this._action_groups.push(group)\n return group\n }\n\n add_mutually_exclusive_group() {\n // eslint-disable-next-line no-use-before-define\n let group = _MutuallyExclusiveGroup(this, ...arguments)\n this._mutually_exclusive_groups.push(group)\n return group\n }\n\n _add_action(action) {\n // resolve any conflicts\n this._check_conflict(action)\n\n // add to actions list\n this._actions.push(action)\n action.container = this\n\n // index the action by any option strings it has\n for (let option_string of action.option_strings) {\n this._option_string_actions[option_string] = action\n }\n\n // set the flag if any option strings look like negative numbers\n for (let option_string of action.option_strings) {\n if (this._negative_number_matcher.test(option_string)) {\n if (!this._has_negative_number_optionals.length) {\n this._has_negative_number_optionals.push(true)\n }\n }\n }\n\n // return the created action\n return action\n }\n\n _remove_action(action) {\n _array_remove(this._actions, action)\n }\n\n _add_container_actions(container) {\n // collect groups by titles\n let title_group_map = {}\n for (let group of this._action_groups) {\n if (group.title in title_group_map) {\n let msg = 'cannot merge actions - two groups are named %r'\n throw new TypeError(sub(msg, group.title))\n }\n title_group_map[group.title] = group\n }\n\n // map each action to its group\n let group_map = new Map()\n for (let group of container._action_groups) {\n\n // if a group with the title exists, use that, otherwise\n // create a new group matching the container's group\n if (!(group.title in title_group_map)) {\n title_group_map[group.title] = this.add_argument_group({\n title: group.title,\n description: group.description,\n conflict_handler: group.conflict_handler\n })\n }\n\n // map the actions to their new group\n for (let action of group._group_actions) {\n group_map.set(action, title_group_map[group.title])\n }\n }\n\n // add container's mutually exclusive groups\n // NOTE: if add_mutually_exclusive_group ever gains title= and\n // description= then this code will need to be expanded as above\n for (let group of container._mutually_exclusive_groups) {\n let mutex_group = this.add_mutually_exclusive_group({\n required: group.required\n })\n\n // map the actions to their new mutex group\n for (let action of group._group_actions) {\n group_map.set(action, mutex_group)\n }\n }\n\n // add all actions to this container or their group\n for (let action of container._actions) {\n group_map.get(action)._add_action(action)\n }\n }\n\n _get_positional_kwargs() {\n let [\n dest,\n kwargs\n ] = _parse_opts(arguments, {\n dest: no_default,\n '**kwargs': no_default\n })\n\n // make sure required is not specified\n if ('required' in kwargs) {\n let msg = \"'required' is an invalid argument for positionals\"\n throw new TypeError(msg)\n }\n\n // mark positional arguments as required if at least one is\n // always required\n if (![OPTIONAL, ZERO_OR_MORE].includes(kwargs.nargs)) {\n kwargs.required = true\n }\n if (kwargs.nargs === ZERO_OR_MORE && !('default' in kwargs)) {\n kwargs.required = true\n }\n\n // return the keyword arguments with no option strings\n return Object.assign(kwargs, { dest, option_strings: [] })\n }\n\n _get_optional_kwargs() {\n let [\n args,\n kwargs\n ] = _parse_opts(arguments, {\n '*args': no_default,\n '**kwargs': no_default\n })\n\n // determine short and long option strings\n let option_strings = []\n let long_option_strings = []\n let option_string\n for (option_string of args) {\n // error on strings that don't start with an appropriate prefix\n if (!this.prefix_chars.includes(option_string[0])) {\n let args = {option: option_string,\n prefix_chars: this.prefix_chars}\n let msg = 'invalid option string %(option)r: ' +\n 'must start with a character %(prefix_chars)r'\n throw new TypeError(sub(msg, args))\n }\n\n // strings starting with two prefix characters are long options\n option_strings.push(option_string)\n if (option_string.length > 1 && this.prefix_chars.includes(option_string[1])) {\n long_option_strings.push(option_string)\n }\n }\n\n // infer destination, '--foo-bar' -> 'foo_bar' and '-x' -> 'x'\n let dest = kwargs.dest\n delete kwargs.dest\n if (dest === undefined) {\n let dest_option_string\n if (long_option_strings.length) {\n dest_option_string = long_option_strings[0]\n } else {\n dest_option_string = option_strings[0]\n }\n dest = _string_lstrip(dest_option_string, this.prefix_chars)\n if (!dest) {\n let msg = 'dest= is required for options like %r'\n throw new TypeError(sub(msg, option_string))\n }\n dest = dest.replace(/-/g, '_')\n }\n\n // return the updated keyword arguments\n return Object.assign(kwargs, { dest, option_strings })\n }\n\n _pop_action_class(kwargs, default_value = undefined) {\n let action = getattr(kwargs, 'action', default_value)\n delete kwargs.action\n return this._registry_get('action', action, action)\n }\n\n _get_handler() {\n // determine function from conflict handler string\n let handler_func_name = sub('_handle_conflict_%s', this.conflict_handler)\n if (typeof this[handler_func_name] === 'function') {\n return this[handler_func_name]\n } else {\n let msg = 'invalid conflict_resolution value: %r'\n throw new TypeError(sub(msg, this.conflict_handler))\n }\n }\n\n _check_conflict(action) {\n\n // find all options that conflict with this option\n let confl_optionals = []\n for (let option_string of action.option_strings) {\n if (hasattr(this._option_string_actions, option_string)) {\n let confl_optional = this._option_string_actions[option_string]\n confl_optionals.push([ option_string, confl_optional ])\n }\n }\n\n // resolve any conflicts\n if (confl_optionals.length) {\n let conflict_handler = this._get_handler()\n conflict_handler.call(this, action, confl_optionals)\n }\n }\n\n _handle_conflict_error(action, conflicting_actions) {\n let message = conflicting_actions.length === 1 ?\n 'conflicting option string: %s' :\n 'conflicting option strings: %s'\n let conflict_string = conflicting_actions.map(([ option_string/*, action*/ ]) => option_string).join(', ')\n throw new ArgumentError(action, sub(message, conflict_string))\n }\n\n _handle_conflict_resolve(action, conflicting_actions) {\n\n // remove all conflicting options\n for (let [ option_string, action ] of conflicting_actions) {\n\n // remove the conflicting option\n _array_remove(action.option_strings, option_string)\n delete this._option_string_actions[option_string]\n\n // if the option now has no option string, remove it from the\n // container holding it\n if (!action.option_strings.length) {\n action.container._remove_action(action)\n }\n }\n }\n}))\n\n\nconst _ArgumentGroup = _callable(class _ArgumentGroup extends _ActionsContainer {\n\n constructor() {\n let [\n container,\n title,\n description,\n kwargs\n ] = _parse_opts(arguments, {\n container: no_default,\n title: undefined,\n description: undefined,\n '**kwargs': no_default\n })\n\n // add any missing keyword arguments by checking the container\n setdefault(kwargs, 'conflict_handler', container.conflict_handler)\n setdefault(kwargs, 'prefix_chars', container.prefix_chars)\n setdefault(kwargs, 'argument_default', container.argument_default)\n super(Object.assign({ description }, kwargs))\n\n // group attributes\n this.title = title\n this._group_actions = []\n\n // share most attributes with the container\n this._registries = container._registries\n this._actions = container._actions\n this._option_string_actions = container._option_string_actions\n this._defaults = container._defaults\n this._has_negative_number_optionals =\n container._has_negative_number_optionals\n this._mutually_exclusive_groups = container._mutually_exclusive_groups\n }\n\n _add_action(action) {\n action = super._add_action(action)\n this._group_actions.push(action)\n return action\n }\n\n _remove_action(action) {\n super._remove_action(action)\n _array_remove(this._group_actions, action)\n }\n})\n\n\nconst _MutuallyExclusiveGroup = _callable(class _MutuallyExclusiveGroup extends _ArgumentGroup {\n\n constructor() {\n let [\n container,\n required\n ] = _parse_opts(arguments, {\n container: no_default,\n required: false\n })\n\n super(container)\n this.required = required\n this._container = container\n }\n\n _add_action(action) {\n if (action.required) {\n let msg = 'mutually exclusive arguments must be optional'\n throw new TypeError(msg)\n }\n action = this._container._add_action(action)\n this._group_actions.push(action)\n return action\n }\n\n _remove_action(action) {\n this._container._remove_action(action)\n _array_remove(this._group_actions, action)\n }\n})\n\n\nconst ArgumentParser = _camelcase_alias(_callable(class ArgumentParser extends _AttributeHolder(_ActionsContainer) {\n /*\n * Object for parsing command line strings into Python objects.\n *\n * Keyword Arguments:\n * - prog -- The name of the program (default: sys.argv[0])\n * - usage -- A usage message (default: auto-generated from arguments)\n * - description -- A description of what the program does\n * - epilog -- Text following the argument descriptions\n * - parents -- Parsers whose arguments should be copied into this one\n * - formatter_class -- HelpFormatter class for printing help messages\n * - prefix_chars -- Characters that prefix optional arguments\n * - fromfile_prefix_chars -- Characters that prefix files containing\n * additional arguments\n * - argument_default -- The default value for all arguments\n * - conflict_handler -- String indicating how to handle conflicts\n * - add_help -- Add a -h/-help option\n * - allow_abbrev -- Allow long options to be abbreviated unambiguously\n * - exit_on_error -- Determines whether or not ArgumentParser exits with\n * error info when an error occurs\n */\n\n constructor() {\n let [\n prog,\n usage,\n description,\n epilog,\n parents,\n formatter_class,\n prefix_chars,\n fromfile_prefix_chars,\n argument_default,\n conflict_handler,\n add_help,\n allow_abbrev,\n exit_on_error,\n debug, // LEGACY (v1 compatibility), debug mode\n version // LEGACY (v1 compatibility), version\n ] = _parse_opts(arguments, {\n prog: undefined,\n usage: undefined,\n description: undefined,\n epilog: undefined,\n parents: [],\n formatter_class: HelpFormatter,\n prefix_chars: '-',\n fromfile_prefix_chars: undefined,\n argument_default: undefined,\n conflict_handler: 'error',\n add_help: true,\n allow_abbrev: true,\n exit_on_error: true,\n debug: undefined, // LEGACY (v1 compatibility), debug mode\n version: undefined // LEGACY (v1 compatibility), version\n })\n\n // LEGACY (v1 compatibility)\n if (debug !== undefined) {\n deprecate('debug',\n 'The \"debug\" argument to ArgumentParser is deprecated. Please ' +\n 'override ArgumentParser.exit function instead.'\n )\n }\n\n if (version !== undefined) {\n deprecate('version',\n 'The \"version\" argument to ArgumentParser is deprecated. Please use ' +\n \"add_argument(..., { action: 'version', version: 'N', ... }) instead.\"\n )\n }\n // end\n\n super({\n description,\n prefix_chars,\n argument_default,\n conflict_handler\n })\n\n // default setting for prog\n if (prog === undefined) {\n prog = path.basename(get_argv()[0] || '')\n }\n\n this.prog = prog\n this.usage = usage\n this.epilog = epilog\n this.formatter_class = formatter_class\n this.fromfile_prefix_chars = fromfile_prefix_chars\n this.add_help = add_help\n this.allow_abbrev = allow_abbrev\n this.exit_on_error = exit_on_error\n // LEGACY (v1 compatibility), debug mode\n this.debug = debug\n // end\n\n this._positionals = this.add_argument_group('positional arguments')\n this._optionals = this.add_argument_group('optional arguments')\n this._subparsers = undefined\n\n // register types\n function identity(string) {\n return string\n }\n this.register('type', undefined, identity)\n this.register('type', null, identity)\n this.register('type', 'auto', identity)\n this.register('type', 'int', function (x) {\n let result = Number(x)\n if (!Number.isInteger(result)) {\n throw new TypeError(sub('could not convert string to int: %r', x))\n }\n return result\n })\n this.register('type', 'float', function (x) {\n let result = Number(x)\n if (isNaN(result)) {\n throw new TypeError(sub('could not convert string to float: %r', x))\n }\n return result\n })\n this.register('type', 'str', String)\n // LEGACY (v1 compatibility): custom types\n this.register('type', 'string',\n util.deprecate(String, 'use {type:\"str\"} or {type:String} instead of {type:\"string\"}'))\n // end\n\n // add help argument if necessary\n // (using explicit default to override global argument_default)\n let default_prefix = prefix_chars.includes('-') ? '-' : prefix_chars[0]\n if (this.add_help) {\n this.add_argument(\n default_prefix + 'h',\n default_prefix.repeat(2) + 'help',\n {\n action: 'help',\n default: SUPPRESS,\n help: 'show this help message and exit'\n }\n )\n }\n // LEGACY (v1 compatibility), version\n if (version) {\n this.add_argument(\n default_prefix + 'v',\n default_prefix.repeat(2) + 'version',\n {\n action: 'version',\n default: SUPPRESS,\n version: this.version,\n help: \"show program's version number and exit\"\n }\n )\n }\n // end\n\n // add parent arguments and defaults\n for (let parent of parents) {\n this._add_container_actions(parent)\n Object.assign(this._defaults, parent._defaults)\n }\n }\n\n // =======================\n // Pretty __repr__ methods\n // =======================\n _get_kwargs() {\n let names = [\n 'prog',\n 'usage',\n 'description',\n 'formatter_class',\n 'conflict_handler',\n 'add_help'\n ]\n return names.map(name => [ name, getattr(this, name) ])\n }\n\n // ==================================\n // Optional/Positional adding methods\n // ==================================\n add_subparsers() {\n let [\n kwargs\n ] = _parse_opts(arguments, {\n '**kwargs': no_default\n })\n\n if (this._subparsers !== undefined) {\n this.error('cannot have multiple subparser arguments')\n }\n\n // add the parser class to the arguments if it's not present\n setdefault(kwargs, 'parser_class', this.constructor)\n\n if ('title' in kwargs || 'description' in kwargs) {\n let title = getattr(kwargs, 'title', 'subcommands')\n let description = getattr(kwargs, 'description', undefined)\n delete kwargs.title\n delete kwargs.description\n this._subparsers = this.add_argument_group(title, description)\n } else {\n this._subparsers = this._positionals\n }\n\n // prog defaults to the usage message of this parser, skipping\n // optional arguments and with no \"usage:\" prefix\n if (kwargs.prog === undefined) {\n let formatter = this._get_formatter()\n let positionals = this._get_positional_actions()\n let groups = this._mutually_exclusive_groups\n formatter.add_usage(this.usage, positionals, groups, '')\n kwargs.prog = formatter.format_help().trim()\n }\n\n // create the parsers action and add it to the positionals list\n let parsers_class = this._pop_action_class(kwargs, 'parsers')\n // eslint-disable-next-line new-cap\n let action = new parsers_class(Object.assign({ option_strings: [] }, kwargs))\n this._subparsers._add_action(action)\n\n // return the created parsers action\n return action\n }\n\n _add_action(action) {\n if (action.option_strings.length) {\n this._optionals._add_action(action)\n } else {\n this._positionals._add_action(action)\n }\n return action\n }\n\n _get_optional_actions() {\n return this._actions.filter(action => action.option_strings.length)\n }\n\n _get_positional_actions() {\n return this._actions.filter(action => !action.option_strings.length)\n }\n\n // =====================================\n // Command line argument parsing methods\n // =====================================\n parse_args(args = undefined, namespace = undefined) {\n let argv\n [ args, argv ] = this.parse_known_args(args, namespace)\n if (argv && argv.length > 0) {\n let msg = 'unrecognized arguments: %s'\n this.error(sub(msg, argv.join(' ')))\n }\n return args\n }\n\n parse_known_args(args = undefined, namespace = undefined) {\n if (args === undefined) {\n args = get_argv().slice(1)\n }\n\n // default Namespace built from parser defaults\n if (namespace === undefined) {\n namespace = new Namespace()\n }\n\n // add any action defaults that aren't present\n for (let action of this._actions) {\n if (action.dest !== SUPPRESS) {\n if (!hasattr(namespace, action.dest)) {\n if (action.default !== SUPPRESS) {\n setattr(namespace, action.dest, action.default)\n }\n }\n }\n }\n\n // add any parser defaults that aren't present\n for (let dest of Object.keys(this._defaults)) {\n if (!hasattr(namespace, dest)) {\n setattr(namespace, dest, this._defaults[dest])\n }\n }\n\n // parse the arguments and exit if there are any errors\n if (this.exit_on_error) {\n try {\n [ namespace, args ] = this._parse_known_args(args, namespace)\n } catch (err) {\n if (err instanceof ArgumentError) {\n this.error(err.message)\n } else {\n throw err\n }\n }\n } else {\n [ namespace, args ] = this._parse_known_args(args, namespace)\n }\n\n if (hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR)) {\n args = args.concat(getattr(namespace, _UNRECOGNIZED_ARGS_ATTR))\n delattr(namespace, _UNRECOGNIZED_ARGS_ATTR)\n }\n\n return [ namespace, args ]\n }\n\n _parse_known_args(arg_strings, namespace) {\n // replace arg strings that are file references\n if (this.fromfile_prefix_chars !== undefined) {\n arg_strings = this._read_args_from_files(arg_strings)\n }\n\n // map all mutually exclusive arguments to the other arguments\n // they can't occur with\n let action_conflicts = new Map()\n for (let mutex_group of this._mutually_exclusive_groups) {\n let group_actions = mutex_group._group_actions\n for (let [ i, mutex_action ] of Object.entries(mutex_group._group_actions)) {\n let conflicts = action_conflicts.get(mutex_action) || []\n conflicts = conflicts.concat(group_actions.slice(0, +i))\n conflicts = conflicts.concat(group_actions.slice(+i + 1))\n action_conflicts.set(mutex_action, conflicts)\n }\n }\n\n // find all option indices, and determine the arg_string_pattern\n // which has an 'O' if there is an option at an index,\n // an 'A' if there is an argument, or a '-' if there is a '--'\n let option_string_indices = {}\n let arg_string_pattern_parts = []\n let arg_strings_iter = Object.entries(arg_strings)[Symbol.iterator]()\n for (let [ i, arg_string ] of arg_strings_iter) {\n\n // all args after -- are non-options\n if (arg_string === '--') {\n arg_string_pattern_parts.push('-')\n for ([ i, arg_string ] of arg_strings_iter) {\n arg_string_pattern_parts.push('A')\n }\n\n // otherwise, add the arg to the arg strings\n // and note the index if it was an option\n } else {\n let option_tuple = this._parse_optional(arg_string)\n let pattern\n if (option_tuple === undefined) {\n pattern = 'A'\n } else {\n option_string_indices[i] = option_tuple\n pattern = 'O'\n }\n arg_string_pattern_parts.push(pattern)\n }\n }\n\n // join the pieces together to form the pattern\n let arg_strings_pattern = arg_string_pattern_parts.join('')\n\n // converts arg strings to the appropriate and then takes the action\n let seen_actions = new Set()\n let seen_non_default_actions = new Set()\n let extras\n\n let take_action = (action, argument_strings, option_string = undefined) => {\n seen_actions.add(action)\n let argument_values = this._get_values(action, argument_strings)\n\n // error if this argument is not allowed with other previously\n // seen arguments, assuming that actions that use the default\n // value don't really count as \"present\"\n if (argument_values !== action.default) {\n seen_non_default_actions.add(action)\n for (let conflict_action of action_conflicts.get(action) || []) {\n if (seen_non_default_actions.has(conflict_action)) {\n let msg = 'not allowed with argument %s'\n let action_name = _get_action_name(conflict_action)\n throw new ArgumentError(action, sub(msg, action_name))\n }\n }\n }\n\n // take the action if we didn't receive a SUPPRESS value\n // (e.g. from a default)\n if (argument_values !== SUPPRESS) {\n action(this, namespace, argument_values, option_string)\n }\n }\n\n // function to convert arg_strings into an optional action\n let consume_optional = start_index => {\n\n // get the optional identified at this index\n let option_tuple = option_string_indices[start_index]\n let [ action, option_string, explicit_arg ] = option_tuple\n\n // identify additional optionals in the same arg string\n // (e.g. -xyz is the same as -x -y -z if no args are required)\n let action_tuples = []\n let stop\n for (;;) {\n\n // if we found no optional action, skip it\n if (action === undefined) {\n extras.push(arg_strings[start_index])\n return start_index + 1\n }\n\n // if there is an explicit argument, try to match the\n // optional's string arguments to only this\n if (explicit_arg !== undefined) {\n let arg_count = this._match_argument(action, 'A')\n\n // if the action is a single-dash option and takes no\n // arguments, try to parse more single-dash options out\n // of the tail of the option string\n let chars = this.prefix_chars\n if (arg_count === 0 && !chars.includes(option_string[1])) {\n action_tuples.push([ action, [], option_string ])\n let char = option_string[0]\n option_string = char + explicit_arg[0]\n let new_explicit_arg = explicit_arg.slice(1) || undefined\n let optionals_map = this._option_string_actions\n if (hasattr(optionals_map, option_string)) {\n action = optionals_map[option_string]\n explicit_arg = new_explicit_arg\n } else {\n let msg = 'ignored explicit argument %r'\n throw new ArgumentError(action, sub(msg, explicit_arg))\n }\n\n // if the action expect exactly one argument, we've\n // successfully matched the option; exit the loop\n } else if (arg_count === 1) {\n stop = start_index + 1\n let args = [ explicit_arg ]\n action_tuples.push([ action, args, option_string ])\n break\n\n // error if a double-dash option did not use the\n // explicit argument\n } else {\n let msg = 'ignored explicit argument %r'\n throw new ArgumentError(action, sub(msg, explicit_arg))\n }\n\n // if there is no explicit argument, try to match the\n // optional's string arguments with the following strings\n // if successful, exit the loop\n } else {\n let start = start_index + 1\n let selected_patterns = arg_strings_pattern.slice(start)\n let arg_count = this._match_argument(action, selected_patterns)\n stop = start + arg_count\n let args = arg_strings.slice(start, stop)\n action_tuples.push([ action, args, option_string ])\n break\n }\n }\n\n // add the Optional to the list and return the index at which\n // the Optional's string args stopped\n assert(action_tuples.length)\n for (let [ action, args, option_string ] of action_tuples) {\n take_action(action, args, option_string)\n }\n return stop\n }\n\n // the list of Positionals left to be parsed; this is modified\n // by consume_positionals()\n let positionals = this._get_positional_actions()\n\n // function to convert arg_strings into positional actions\n let consume_positionals = start_index => {\n // match as many Positionals as possible\n let selected_pattern = arg_strings_pattern.slice(start_index)\n let arg_counts = this._match_arguments_partial(positionals, selected_pattern)\n\n // slice off the appropriate arg strings for each Positional\n // and add the Positional and its args to the list\n for (let i = 0; i < positionals.length && i < arg_counts.length; i++) {\n let action = positionals[i]\n let arg_count = arg_counts[i]\n let args = arg_strings.slice(start_index, start_index + arg_count)\n start_index += arg_count\n take_action(action, args)\n }\n\n // slice off the Positionals that we just parsed and return the\n // index at which the Positionals' string args stopped\n positionals = positionals.slice(arg_counts.length)\n return start_index\n }\n\n // consume Positionals and Optionals alternately, until we have\n // passed the last option string\n extras = []\n let start_index = 0\n let max_option_string_index = Math.max(-1, ...Object.keys(option_string_indices).map(Number))\n while (start_index <= max_option_string_index) {\n\n // consume any Positionals preceding the next option\n let next_option_string_index = Math.min(\n // eslint-disable-next-line no-loop-func\n ...Object.keys(option_string_indices).map(Number).filter(index => index >= start_index)\n )\n if (start_index !== next_option_string_index) {\n let positionals_end_index = consume_positionals(start_index)\n\n // only try to parse the next optional if we didn't consume\n // the option string during the positionals parsing\n if (positionals_end_index > start_index) {\n start_index = positionals_end_index\n continue\n } else {\n start_index = positionals_end_index\n }\n }\n\n // if we consumed all the positionals we could and we're not\n // at the index of an option string, there were extra arguments\n if (!(start_index in option_string_indices)) {\n let strings = arg_strings.slice(start_index, next_option_string_index)\n extras = extras.concat(strings)\n start_index = next_option_string_index\n }\n\n // consume the next optional and any arguments for it\n start_index = consume_optional(start_index)\n }\n\n // consume any positionals following the last Optional\n let stop_index = consume_positionals(start_index)\n\n // if we didn't consume all the argument strings, there were extras\n extras = extras.concat(arg_strings.slice(stop_index))\n\n // make sure all required actions were present and also convert\n // action defaults which were not given as arguments\n let required_actions = []\n for (let action of this._actions) {\n if (!seen_actions.has(action)) {\n if (action.required) {\n required_actions.push(_get_action_name(action))\n } else {\n // Convert action default now instead of doing it before\n // parsing arguments to avoid calling convert functions\n // twice (which may fail) if the argument was given, but\n // only if it was defined already in the namespace\n if (action.default !== undefined &&\n typeof action.default === 'string' &&\n hasattr(namespace, action.dest) &&\n action.default === getattr(namespace, action.dest)) {\n setattr(namespace, action.dest,\n this._get_value(action, action.default))\n }\n }\n }\n }\n\n if (required_actions.length) {\n this.error(sub('the following arguments are required: %s',\n required_actions.join(', ')))\n }\n\n // make sure all required groups had one option present\n for (let group of this._mutually_exclusive_groups) {\n if (group.required) {\n let no_actions_used = true\n for (let action of group._group_actions) {\n if (seen_non_default_actions.has(action)) {\n no_actions_used = false\n break\n }\n }\n\n // if no actions were used, report the error\n if (no_actions_used) {\n let names = group._group_actions\n .filter(action => action.help !== SUPPRESS)\n .map(action => _get_action_name(action))\n let msg = 'one of the arguments %s is required'\n this.error(sub(msg, names.join(' ')))\n }\n }\n }\n\n // return the updated namespace and the extra arguments\n return [ namespace, extras ]\n }\n\n _read_args_from_files(arg_strings) {\n // expand arguments referencing files\n let new_arg_strings = []\n for (let arg_string of arg_strings) {\n\n // for regular arguments, just add them back into the list\n if (!arg_string || !this.fromfile_prefix_chars.includes(arg_string[0])) {\n new_arg_strings.push(arg_string)\n\n // replace arguments referencing files with the file content\n } else {\n try {\n let args_file = fs.readFileSync(arg_string.slice(1), 'utf8')\n let arg_strings = []\n for (let arg_line of splitlines(args_file)) {\n for (let arg of this.convert_arg_line_to_args(arg_line)) {\n arg_strings.push(arg)\n }\n }\n arg_strings = this._read_args_from_files(arg_strings)\n new_arg_strings = new_arg_strings.concat(arg_strings)\n } catch (err) {\n this.error(err.message)\n }\n }\n }\n\n // return the modified argument list\n return new_arg_strings\n }\n\n convert_arg_line_to_args(arg_line) {\n return [arg_line]\n }\n\n _match_argument(action, arg_strings_pattern) {\n // match the pattern for this action to the arg strings\n let nargs_pattern = this._get_nargs_pattern(action)\n let match = arg_strings_pattern.match(new RegExp('^' + nargs_pattern))\n\n // raise an exception if we weren't able to find a match\n if (match === null) {\n let nargs_errors = {\n undefined: 'expected one argument',\n [OPTIONAL]: 'expected at most one argument',\n [ONE_OR_MORE]: 'expected at least one argument'\n }\n let msg = nargs_errors[action.nargs]\n if (msg === undefined) {\n msg = sub(action.nargs === 1 ? 'expected %s argument' : 'expected %s arguments', action.nargs)\n }\n throw new ArgumentError(action, msg)\n }\n\n // return the number of arguments matched\n return match[1].length\n }\n\n _match_arguments_partial(actions, arg_strings_pattern) {\n // progressively shorten the actions list by slicing off the\n // final actions until we find a match\n let result = []\n for (let i of range(actions.length, 0, -1)) {\n let actions_slice = actions.slice(0, i)\n let pattern = actions_slice.map(action => this._get_nargs_pattern(action)).join('')\n let match = arg_strings_pattern.match(new RegExp('^' + pattern))\n if (match !== null) {\n result = result.concat(match.slice(1).map(string => string.length))\n break\n }\n }\n\n // return the list of arg string counts\n return result\n }\n\n _parse_optional(arg_string) {\n // if it's an empty string, it was meant to be a positional\n if (!arg_string) {\n return undefined\n }\n\n // if it doesn't start with a prefix, it was meant to be positional\n if (!this.prefix_chars.includes(arg_string[0])) {\n return undefined\n }\n\n // if the option string is present in the parser, return the action\n if (arg_string in this._option_string_actions) {\n let action = this._option_string_actions[arg_string]\n return [ action, arg_string, undefined ]\n }\n\n // if it's just a single character, it was meant to be positional\n if (arg_string.length === 1) {\n return undefined\n }\n\n // if the option string before the \"=\" is present, return the action\n if (arg_string.includes('=')) {\n let [ option_string, explicit_arg ] = _string_split(arg_string, '=', 1)\n if (option_string in this._option_string_actions) {\n let action = this._option_string_actions[option_string]\n return [ action, option_string, explicit_arg ]\n }\n }\n\n // search through all possible prefixes of the option string\n // and all actions in the parser for possible interpretations\n let option_tuples = this._get_option_tuples(arg_string)\n\n // if multiple actions match, the option string was ambiguous\n if (option_tuples.length > 1) {\n let options = option_tuples.map(([ /*action*/, option_string/*, explicit_arg*/ ]) => option_string).join(', ')\n let args = {option: arg_string, matches: options}\n let msg = 'ambiguous option: %(option)s could match %(matches)s'\n this.error(sub(msg, args))\n\n // if exactly one action matched, this segmentation is good,\n // so return the parsed action\n } else if (option_tuples.length === 1) {\n let [ option_tuple ] = option_tuples\n return option_tuple\n }\n\n // if it was not found as an option, but it looks like a negative\n // number, it was meant to be positional\n // unless there are negative-number-like options\n if (this._negative_number_matcher.test(arg_string)) {\n if (!this._has_negative_number_optionals.length) {\n return undefined\n }\n }\n\n // if it contains a space, it was meant to be a positional\n if (arg_string.includes(' ')) {\n return undefined\n }\n\n // it was meant to be an optional but there is no such option\n // in this parser (though it might be a valid option in a subparser)\n return [ undefined, arg_string, undefined ]\n }\n\n _get_option_tuples(option_string) {\n let result = []\n\n // option strings starting with two prefix characters are only\n // split at the '='\n let chars = this.prefix_chars\n if (chars.includes(option_string[0]) && chars.includes(option_string[1])) {\n if (this.allow_abbrev) {\n let option_prefix, explicit_arg\n if (option_string.includes('=')) {\n [ option_prefix, explicit_arg ] = _string_split(option_string, '=', 1)\n } else {\n option_prefix = option_string\n explicit_arg = undefined\n }\n for (let option_string of Object.keys(this._option_string_actions)) {\n if (option_string.startsWith(option_prefix)) {\n let action = this._option_string_actions[option_string]\n let tup = [ action, option_string, explicit_arg ]\n result.push(tup)\n }\n }\n }\n\n // single character options can be concatenated with their arguments\n // but multiple character options always have to have their argument\n // separate\n } else if (chars.includes(option_string[0]) && !chars.includes(option_string[1])) {\n let option_prefix = option_string\n let explicit_arg = undefined\n let short_option_prefix = option_string.slice(0, 2)\n let short_explicit_arg = option_string.slice(2)\n\n for (let option_string of Object.keys(this._option_string_actions)) {\n if (option_string === short_option_prefix) {\n let action = this._option_string_actions[option_string]\n let tup = [ action, option_string, short_explicit_arg ]\n result.push(tup)\n } else if (option_string.startsWith(option_prefix)) {\n let action = this._option_string_actions[option_string]\n let tup = [ action, option_string, explicit_arg ]\n result.push(tup)\n }\n }\n\n // shouldn't ever get here\n } else {\n this.error(sub('unexpected option string: %s', option_string))\n }\n\n // return the collected option tuples\n return result\n }\n\n _get_nargs_pattern(action) {\n // in all examples below, we have to allow for '--' args\n // which are represented as '-' in the pattern\n let nargs = action.nargs\n let nargs_pattern\n\n // the default (None) is assumed to be a single argument\n if (nargs === undefined) {\n nargs_pattern = '(-*A-*)'\n\n // allow zero or one arguments\n } else if (nargs === OPTIONAL) {\n nargs_pattern = '(-*A?-*)'\n\n // allow zero or more arguments\n } else if (nargs === ZERO_OR_MORE) {\n nargs_pattern = '(-*[A-]*)'\n\n // allow one or more arguments\n } else if (nargs === ONE_OR_MORE) {\n nargs_pattern = '(-*A[A-]*)'\n\n // allow any number of options or arguments\n } else if (nargs === REMAINDER) {\n nargs_pattern = '([-AO]*)'\n\n // allow one argument followed by any number of options or arguments\n } else if (nargs === PARSER) {\n nargs_pattern = '(-*A[-AO]*)'\n\n // suppress action, like nargs=0\n } else if (nargs === SUPPRESS) {\n nargs_pattern = '(-*-*)'\n\n // all others should be integers\n } else {\n nargs_pattern = sub('(-*%s-*)', 'A'.repeat(nargs).split('').join('-*'))\n }\n\n // if this is an optional action, -- is not allowed\n if (action.option_strings.length) {\n nargs_pattern = nargs_pattern.replace(/-\\*/g, '')\n nargs_pattern = nargs_pattern.replace(/-/g, '')\n }\n\n // return the pattern\n return nargs_pattern\n }\n\n // ========================\n // Alt command line argument parsing, allowing free intermix\n // ========================\n\n parse_intermixed_args(args = undefined, namespace = undefined) {\n let argv\n [ args, argv ] = this.parse_known_intermixed_args(args, namespace)\n if (argv.length) {\n let msg = 'unrecognized arguments: %s'\n this.error(sub(msg, argv.join(' ')))\n }\n return args\n }\n\n parse_known_intermixed_args(args = undefined, namespace = undefined) {\n // returns a namespace and list of extras\n //\n // positional can be freely intermixed with optionals. optionals are\n // first parsed with all positional arguments deactivated. The 'extras'\n // are then parsed. If the parser definition is incompatible with the\n // intermixed assumptions (e.g. use of REMAINDER, subparsers) a\n // TypeError is raised.\n //\n // positionals are 'deactivated' by setting nargs and default to\n // SUPPRESS. This blocks the addition of that positional to the\n // namespace\n\n let extras\n let positionals = this._get_positional_actions()\n let a = positionals.filter(action => [ PARSER, REMAINDER ].includes(action.nargs))\n if (a.length) {\n throw new TypeError(sub('parse_intermixed_args: positional arg' +\n ' with nargs=%s', a[0].nargs))\n }\n\n for (let group of this._mutually_exclusive_groups) {\n for (let action of group._group_actions) {\n if (positionals.includes(action)) {\n throw new TypeError('parse_intermixed_args: positional in' +\n ' mutuallyExclusiveGroup')\n }\n }\n }\n\n let save_usage\n try {\n save_usage = this.usage\n let remaining_args\n try {\n if (this.usage === undefined) {\n // capture the full usage for use in error messages\n this.usage = this.format_usage().slice(7)\n }\n for (let action of positionals) {\n // deactivate positionals\n action.save_nargs = action.nargs\n // action.nargs = 0\n action.nargs = SUPPRESS\n action.save_default = action.default\n action.default = SUPPRESS\n }\n [ namespace, remaining_args ] = this.parse_known_args(args,\n namespace)\n for (let action of positionals) {\n // remove the empty positional values from namespace\n let attr = getattr(namespace, action.dest)\n if (Array.isArray(attr) && attr.length === 0) {\n // eslint-disable-next-line no-console\n console.warn(sub('Do not expect %s in %s', action.dest, namespace))\n delattr(namespace, action.dest)\n }\n }\n } finally {\n // restore nargs and usage before exiting\n for (let action of positionals) {\n action.nargs = action.save_nargs\n action.default = action.save_default\n }\n }\n let optionals = this._get_optional_actions()\n try {\n // parse positionals. optionals aren't normally required, but\n // they could be, so make sure they aren't.\n for (let action of optionals) {\n action.save_required = action.required\n action.required = false\n }\n for (let group of this._mutually_exclusive_groups) {\n group.save_required = group.required\n group.required = false\n }\n [ namespace, extras ] = this.parse_known_args(remaining_args,\n namespace)\n } finally {\n // restore parser values before exiting\n for (let action of optionals) {\n action.required = action.save_required\n }\n for (let group of this._mutually_exclusive_groups) {\n group.required = group.save_required\n }\n }\n } finally {\n this.usage = save_usage\n }\n return [ namespace, extras ]\n }\n\n // ========================\n // Value conversion methods\n // ========================\n _get_values(action, arg_strings) {\n // for everything but PARSER, REMAINDER args, strip out first '--'\n if (![PARSER, REMAINDER].includes(action.nargs)) {\n try {\n _array_remove(arg_strings, '--')\n } catch (err) {}\n }\n\n let value\n // optional argument produces a default when not present\n if (!arg_strings.length && action.nargs === OPTIONAL) {\n if (action.option_strings.length) {\n value = action.const\n } else {\n value = action.default\n }\n if (typeof value === 'string') {\n value = this._get_value(action, value)\n this._check_value(action, value)\n }\n\n // when nargs='*' on a positional, if there were no command-line\n // args, use the default if it is anything other than None\n } else if (!arg_strings.length && action.nargs === ZERO_OR_MORE &&\n !action.option_strings.length) {\n if (action.default !== undefined) {\n value = action.default\n } else {\n value = arg_strings\n }\n this._check_value(action, value)\n\n // single argument or optional argument produces a single value\n } else if (arg_strings.length === 1 && [undefined, OPTIONAL].includes(action.nargs)) {\n let arg_string = arg_strings[0]\n value = this._get_value(action, arg_string)\n this._check_value(action, value)\n\n // REMAINDER arguments convert all values, checking none\n } else if (action.nargs === REMAINDER) {\n value = arg_strings.map(v => this._get_value(action, v))\n\n // PARSER arguments convert all values, but check only the first\n } else if (action.nargs === PARSER) {\n value = arg_strings.map(v => this._get_value(action, v))\n this._check_value(action, value[0])\n\n // SUPPRESS argument does not put anything in the namespace\n } else if (action.nargs === SUPPRESS) {\n value = SUPPRESS\n\n // all other types of nargs produce a list\n } else {\n value = arg_strings.map(v => this._get_value(action, v))\n for (let v of value) {\n this._check_value(action, v)\n }\n }\n\n // return the converted value\n return value\n }\n\n _get_value(action, arg_string) {\n let type_func = this._registry_get('type', action.type, action.type)\n if (typeof type_func !== 'function') {\n let msg = '%r is not callable'\n throw new ArgumentError(action, sub(msg, type_func))\n }\n\n // convert the value to the appropriate type\n let result\n try {\n try {\n result = type_func(arg_string)\n } catch (err) {\n // Dear TC39, why would you ever consider making es6 classes not callable?\n // We had one universal interface, [[Call]], which worked for anything\n // (with familiar this-instanceof guard for classes). Now we have two.\n if (err instanceof TypeError &&\n /Class constructor .* cannot be invoked without 'new'/.test(err.message)) {\n // eslint-disable-next-line new-cap\n result = new type_func(arg_string)\n } else {\n throw err\n }\n }\n\n } catch (err) {\n // ArgumentTypeErrors indicate errors\n if (err instanceof ArgumentTypeError) {\n //let name = getattr(action.type, 'name', repr(action.type))\n let msg = err.message\n throw new ArgumentError(action, msg)\n\n // TypeErrors or ValueErrors also indicate errors\n } else if (err instanceof TypeError) {\n let name = getattr(action.type, 'name', repr(action.type))\n let args = {type: name, value: arg_string}\n let msg = 'invalid %(type)s value: %(value)r'\n throw new ArgumentError(action, sub(msg, args))\n } else {\n throw err\n }\n }\n\n // return the converted value\n return result\n }\n\n _check_value(action, value) {\n // converted value must be one of the choices (if specified)\n if (action.choices !== undefined && !_choices_to_array(action.choices).includes(value)) {\n let args = {value,\n choices: _choices_to_array(action.choices).map(repr).join(', ')}\n let msg = 'invalid choice: %(value)r (choose from %(choices)s)'\n throw new ArgumentError(action, sub(msg, args))\n }\n }\n\n // =======================\n // Help-formatting methods\n // =======================\n format_usage() {\n let formatter = this._get_formatter()\n formatter.add_usage(this.usage, this._actions,\n this._mutually_exclusive_groups)\n return formatter.format_help()\n }\n\n format_help() {\n let formatter = this._get_formatter()\n\n // usage\n formatter.add_usage(this.usage, this._actions,\n this._mutually_exclusive_groups)\n\n // description\n formatter.add_text(this.description)\n\n // positionals, optionals and user-defined groups\n for (let action_group of this._action_groups) {\n formatter.start_section(action_group.title)\n formatter.add_text(action_group.description)\n formatter.add_arguments(action_group._group_actions)\n formatter.end_section()\n }\n\n // epilog\n formatter.add_text(this.epilog)\n\n // determine help from format above\n return formatter.format_help()\n }\n\n _get_formatter() {\n // eslint-disable-next-line new-cap\n return new this.formatter_class({ prog: this.prog })\n }\n\n // =====================\n // Help-printing methods\n // =====================\n print_usage(file = undefined) {\n if (file === undefined) file = process.stdout\n this._print_message(this.format_usage(), file)\n }\n\n print_help(file = undefined) {\n if (file === undefined) file = process.stdout\n this._print_message(this.format_help(), file)\n }\n\n _print_message(message, file = undefined) {\n if (message) {\n if (file === undefined) file = process.stderr\n file.write(message)\n }\n }\n\n // ===============\n // Exiting methods\n // ===============\n exit(status = 0, message = undefined) {\n if (message) {\n this._print_message(message, process.stderr)\n }\n process.exit(status)\n }\n\n error(message) {\n /*\n * error(message: string)\n *\n * Prints a usage message incorporating the message to stderr and\n * exits.\n *\n * If you override this in a subclass, it should not return -- it\n * should either exit or raise an exception.\n */\n\n // LEGACY (v1 compatibility), debug mode\n if (this.debug === true) throw new Error(message)\n // end\n this.print_usage(process.stderr)\n let args = {prog: this.prog, message: message}\n this.exit(2, sub('%(prog)s: error: %(message)s\\n', args))\n }\n}))\n\n\nmodule.exports = {\n ArgumentParser,\n ArgumentError,\n ArgumentTypeError,\n BooleanOptionalAction,\n FileType,\n HelpFormatter,\n ArgumentDefaultsHelpFormatter,\n RawDescriptionHelpFormatter,\n RawTextHelpFormatter,\n MetavarTypeHelpFormatter,\n Namespace,\n Action,\n ONE_OR_MORE,\n OPTIONAL,\n PARSER,\n REMAINDER,\n SUPPRESS,\n ZERO_OR_MORE\n}\n\n// LEGACY (v1 compatibility), Const alias\nObject.defineProperty(module.exports, 'Const', {\n get() {\n let result = {}\n Object.entries({ ONE_OR_MORE, OPTIONAL, PARSER, REMAINDER, SUPPRESS, ZERO_OR_MORE }).forEach(([ n, v ]) => {\n Object.defineProperty(result, n, {\n get() {\n deprecate(n, sub('use argparse.%s instead of argparse.Const.%s', n, n))\n return v\n }\n })\n })\n Object.entries({ _UNRECOGNIZED_ARGS_ATTR }).forEach(([ n, v ]) => {\n Object.defineProperty(result, n, {\n get() {\n deprecate(n, sub('argparse.Const.%s is an internal symbol and will no longer be available', n))\n return v\n }\n })\n })\n return result\n },\n enumerable: false\n})\n// end\n", "/*!\n * Tmp\n *\n * Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>\n *\n * MIT Licensed\n */\n\n/*\n * Module dependencies.\n */\nconst fs = require('fs');\nconst os = require('os');\nconst path = require('path');\nconst crypto = require('crypto');\nconst _c = { fs: fs.constants, os: os.constants };\n\n/*\n * The working inner variables.\n */\nconst\n // the random characters to choose from\n RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n\n TEMPLATE_PATTERN = /XXXXXX/,\n\n DEFAULT_TRIES = 3,\n\n CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),\n\n // constants are off on the windows platform and will not match the actual errno codes\n IS_WIN32 = os.platform() === 'win32',\n EBADF = _c.EBADF || _c.os.errno.EBADF,\n ENOENT = _c.ENOENT || _c.os.errno.ENOENT,\n\n DIR_MODE = 0o700 /* 448 */,\n FILE_MODE = 0o600 /* 384 */,\n\n EXIT = 'exit',\n\n // this will hold the objects need to be removed on exit\n _removeObjects = [],\n\n // API change in fs.rmdirSync leads to error when passing in a second parameter, e.g. the callback\n FN_RMDIR_SYNC = fs.rmdirSync.bind(fs);\n\nlet\n _gracefulCleanup = false;\n\n/**\n * Recursively remove a directory and its contents.\n *\n * @param {string} dirPath path of directory to remove\n * @param {Function} callback\n * @private\n */\nfunction rimraf(dirPath, callback) {\n return fs.rm(dirPath, { recursive: true }, callback);\n}\n\n/**\n * Recursively remove a directory and its contents, synchronously.\n *\n * @param {string} dirPath path of directory to remove\n * @private\n */\nfunction FN_RIMRAF_SYNC(dirPath) {\n return fs.rmSync(dirPath, { recursive: true });\n}\n\n/**\n * Gets a temporary file name.\n *\n * @param {(Options|tmpNameCallback)} options options or callback\n * @param {?tmpNameCallback} callback the callback function\n */\nfunction tmpName(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n try {\n _assertAndSanitizeOptions(opts);\n } catch (err) {\n return cb(err);\n }\n\n let tries = opts.tries;\n (function _getUniqueName() {\n try {\n const name = _generateTmpName(opts);\n\n // check whether the path exists then retry if needed\n fs.stat(name, function (err) {\n /* istanbul ignore else */\n if (!err) {\n /* istanbul ignore else */\n if (tries-- > 0) return _getUniqueName();\n\n return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));\n }\n\n cb(null, name);\n });\n } catch (err) {\n cb(err);\n }\n }());\n}\n\n/**\n * Synchronous version of tmpName.\n *\n * @param {Object} options\n * @returns {string} the generated random name\n * @throws {Error} if the options are invalid or could not generate a filename\n */\nfunction tmpNameSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n _assertAndSanitizeOptions(opts);\n\n let tries = opts.tries;\n do {\n const name = _generateTmpName(opts);\n try {\n fs.statSync(name);\n } catch (e) {\n return name;\n }\n } while (tries-- > 0);\n\n throw new Error('Could not get a unique tmp filename, max tries reached');\n}\n\n/**\n * Creates and opens a temporary file.\n *\n * @param {(Options|null|undefined|fileCallback)} options the config options or the callback function or null or undefined\n * @param {?fileCallback} callback\n */\nfunction file(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create and open the file\n fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) {\n /* istanbu ignore else */\n if (err) return cb(err);\n\n if (opts.discardDescriptor) {\n return fs.close(fd, function _discardCallback(possibleErr) {\n // the chance of getting an error on close here is rather low and might occur in the most edgiest cases only\n return cb(possibleErr, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts, false));\n });\n } else {\n // detachDescriptor passes the descriptor whereas discardDescriptor closes it, either way, we no longer care\n // about the descriptor\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n cb(null, name, fd, _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, false));\n }\n });\n });\n}\n\n/**\n * Synchronous version of file.\n *\n * @param {Options} options\n * @returns {FileSyncObject} object consists of name, fd and removeCallback\n * @throws {Error} if cannot create a file\n */\nfunction fileSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n const name = tmpNameSync(opts);\n var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);\n /* istanbul ignore else */\n if (opts.discardDescriptor) {\n fs.closeSync(fd);\n fd = undefined;\n }\n\n return {\n name: name,\n fd: fd,\n removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, true)\n };\n}\n\n/**\n * Creates a temporary directory.\n *\n * @param {(Options|dirCallback)} options the options or the callback function\n * @param {?dirCallback} callback\n */\nfunction dir(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create the directory\n fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n cb(null, name, _prepareTmpDirRemoveCallback(name, opts, false));\n });\n });\n}\n\n/**\n * Synchronous version of dir.\n *\n * @param {Options} options\n * @returns {DirSyncObject} object consists of name and removeCallback\n * @throws {Error} if it cannot create a directory\n */\nfunction dirSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const name = tmpNameSync(opts);\n fs.mkdirSync(name, opts.mode || DIR_MODE);\n\n return {\n name: name,\n removeCallback: _prepareTmpDirRemoveCallback(name, opts, true)\n };\n}\n\n/**\n * Removes files asynchronously.\n *\n * @param {Object} fdPath\n * @param {Function} next\n * @private\n */\nfunction _removeFileAsync(fdPath, next) {\n const _handler = function (err) {\n if (err && !_isENOENT(err)) {\n // reraise any unanticipated error\n return next(err);\n }\n next();\n };\n\n if (0 <= fdPath[0])\n fs.close(fdPath[0], function () {\n fs.unlink(fdPath[1], _handler);\n });\n else fs.unlink(fdPath[1], _handler);\n}\n\n/**\n * Removes files synchronously.\n *\n * @param {Object} fdPath\n * @private\n */\nfunction _removeFileSync(fdPath) {\n let rethrownException = null;\n try {\n if (0 <= fdPath[0]) fs.closeSync(fdPath[0]);\n } catch (e) {\n // reraise any unanticipated error\n if (!_isEBADF(e) && !_isENOENT(e)) throw e;\n } finally {\n try {\n fs.unlinkSync(fdPath[1]);\n }\n catch (e) {\n // reraise any unanticipated error\n if (!_isENOENT(e)) rethrownException = e;\n }\n }\n if (rethrownException !== null) {\n throw rethrownException;\n }\n}\n\n/**\n * Prepares the callback for removal of the temporary file.\n *\n * Returns either a sync callback or a async callback depending on whether\n * fileSync or file was called, which is expressed by the sync parameter.\n *\n * @param {string} name the path of the file\n * @param {number} fd file descriptor\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {fileCallback | fileCallbackSync}\n * @private\n */\nfunction _prepareTmpFileRemoveCallback(name, fd, opts, sync) {\n const removeCallbackSync = _prepareRemoveCallback(_removeFileSync, [fd, name], sync);\n const removeCallback = _prepareRemoveCallback(_removeFileAsync, [fd, name], sync, removeCallbackSync);\n\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Prepares the callback for removal of the temporary directory.\n *\n * Returns either a sync callback or a async callback depending on whether\n * tmpFileSync or tmpFile was called, which is expressed by the sync parameter.\n *\n * @param {string} name\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {Function} the callback\n * @private\n */\nfunction _prepareTmpDirRemoveCallback(name, opts, sync) {\n const removeFunction = opts.unsafeCleanup ? rimraf : fs.rmdir.bind(fs);\n const removeFunctionSync = opts.unsafeCleanup ? FN_RIMRAF_SYNC : FN_RMDIR_SYNC;\n const removeCallbackSync = _prepareRemoveCallback(removeFunctionSync, name, sync);\n const removeCallback = _prepareRemoveCallback(removeFunction, name, sync, removeCallbackSync);\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Creates a guarded function wrapping the removeFunction call.\n *\n * The cleanup callback is save to be called multiple times.\n * Subsequent invocations will be ignored.\n *\n * @param {Function} removeFunction\n * @param {string} fileOrDirName\n * @param {boolean} sync\n * @param {cleanupCallbackSync?} cleanupCallbackSync\n * @returns {cleanupCallback | cleanupCallbackSync}\n * @private\n */\nfunction _prepareRemoveCallback(removeFunction, fileOrDirName, sync, cleanupCallbackSync) {\n let called = false;\n\n // if sync is true, the next parameter will be ignored\n return function _cleanupCallback(next) {\n\n /* istanbul ignore else */\n if (!called) {\n // remove cleanupCallback from cache\n const toRemove = cleanupCallbackSync || _cleanupCallback;\n const index = _removeObjects.indexOf(toRemove);\n /* istanbul ignore else */\n if (index >= 0) _removeObjects.splice(index, 1);\n\n called = true;\n if (sync || removeFunction === FN_RMDIR_SYNC || removeFunction === FN_RIMRAF_SYNC) {\n return removeFunction(fileOrDirName);\n } else {\n return removeFunction(fileOrDirName, next || function() {});\n }\n }\n };\n}\n\n/**\n * The garbage collector.\n *\n * @private\n */\nfunction _garbageCollector() {\n /* istanbul ignore else */\n if (!_gracefulCleanup) return;\n\n // the function being called removes itself from _removeObjects,\n // loop until _removeObjects is empty\n while (_removeObjects.length) {\n try {\n _removeObjects[0]();\n } catch (e) {\n // already removed?\n }\n }\n}\n\n/**\n * Random name generator based on crypto.\n * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript\n *\n * @param {number} howMany\n * @returns {string} the generated random name\n * @private\n */\nfunction _randomChars(howMany) {\n let\n value = [],\n rnd = null;\n\n // make sure that we do not fail because we ran out of entropy\n try {\n rnd = crypto.randomBytes(howMany);\n } catch (e) {\n rnd = crypto.pseudoRandomBytes(howMany);\n }\n\n for (var i = 0; i < howMany; i++) {\n value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);\n }\n\n return value.join('');\n}\n\n/**\n * Helper which determines whether a string s is blank, that is undefined, or empty or null.\n *\n * @private\n * @param {string} s\n * @returns {Boolean} true whether the string s is blank, false otherwise\n */\nfunction _isBlank(s) {\n return s === null || _isUndefined(s) || !s.trim();\n}\n\n/**\n * Checks whether the `obj` parameter is defined or not.\n *\n * @param {Object} obj\n * @returns {boolean} true if the object is undefined\n * @private\n */\nfunction _isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n\n/**\n * Parses the function arguments.\n *\n * This function helps to have optional arguments.\n *\n * @param {(Options|null|undefined|Function)} options\n * @param {?Function} callback\n * @returns {Array} parsed arguments\n * @private\n */\nfunction _parseArguments(options, callback) {\n /* istanbul ignore else */\n if (typeof options === 'function') {\n return [{}, options];\n }\n\n /* istanbul ignore else */\n if (_isUndefined(options)) {\n return [{}, callback];\n }\n\n // copy options so we do not leak the changes we make internally\n const actualOptions = {};\n for (const key of Object.getOwnPropertyNames(options)) {\n actualOptions[key] = options[key];\n }\n\n return [actualOptions, callback];\n}\n\n/**\n * Generates a new temporary name.\n *\n * @param {Object} opts\n * @returns {string} the new random name according to opts\n * @private\n */\nfunction _generateTmpName(opts) {\n\n const tmpDir = opts.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.name))\n return path.join(tmpDir, opts.dir, opts.name);\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.template))\n return path.join(tmpDir, opts.dir, opts.template).replace(TEMPLATE_PATTERN, _randomChars(6));\n\n // prefix and postfix\n const name = [\n opts.prefix ? opts.prefix : 'tmp',\n '-',\n process.pid,\n '-',\n _randomChars(12),\n opts.postfix ? '-' + opts.postfix : ''\n ].join('');\n\n return path.join(tmpDir, opts.dir, name);\n}\n\n/**\n * Asserts whether the specified options are valid, also sanitizes options and provides sane defaults for missing\n * options.\n *\n * @param {Options} options\n * @private\n */\nfunction _assertAndSanitizeOptions(options) {\n\n options.tmpdir = _getTmpDir(options);\n\n const tmpDir = options.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(options.name))\n _assertIsRelative(options.name, 'name', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.dir))\n _assertIsRelative(options.dir, 'dir', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.template)) {\n _assertIsRelative(options.template, 'template', tmpDir);\n if (!options.template.match(TEMPLATE_PATTERN))\n throw new Error(`Invalid template, found \"${options.template}\".`);\n }\n /* istanbul ignore else */\n if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0)\n throw new Error(`Invalid tries, found \"${options.tries}\".`);\n\n // if a name was specified we will try once\n options.tries = _isUndefined(options.name) ? options.tries || DEFAULT_TRIES : 1;\n options.keep = !!options.keep;\n options.detachDescriptor = !!options.detachDescriptor;\n options.discardDescriptor = !!options.discardDescriptor;\n options.unsafeCleanup = !!options.unsafeCleanup;\n\n // sanitize dir, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.dir = _isUndefined(options.dir) ? '' : path.relative(tmpDir, _resolvePath(options.dir, tmpDir));\n options.template = _isUndefined(options.template) ? undefined : path.relative(tmpDir, _resolvePath(options.template, tmpDir));\n // sanitize further if template is relative to options.dir\n options.template = _isBlank(options.template) ? undefined : path.relative(options.dir, options.template);\n\n // for completeness' sake only, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.name = _isUndefined(options.name) ? undefined : options.name;\n options.prefix = _isUndefined(options.prefix) ? '' : options.prefix;\n options.postfix = _isUndefined(options.postfix) ? '' : options.postfix;\n}\n\n/**\n * Resolve the specified path name in respect to tmpDir.\n *\n * The specified name might include relative path components, e.g. ../\n * so we need to resolve in order to be sure that is is located inside tmpDir\n *\n * @param name\n * @param tmpDir\n * @returns {string}\n * @private\n */\nfunction _resolvePath(name, tmpDir) {\n if (name.startsWith(tmpDir)) {\n return path.resolve(name);\n } else {\n return path.resolve(path.join(tmpDir, name));\n }\n}\n\n/**\n * Asserts whether specified name is relative to the specified tmpDir.\n *\n * @param {string} name\n * @param {string} option\n * @param {string} tmpDir\n * @throws {Error}\n * @private\n */\nfunction _assertIsRelative(name, option, tmpDir) {\n if (option === 'name') {\n // assert that name is not absolute and does not contain a path\n if (path.isAbsolute(name))\n throw new Error(`${option} option must not contain an absolute path, found \"${name}\".`);\n // must not fail on valid .<name> or ..<name> or similar such constructs\n let basename = path.basename(name);\n if (basename === '..' || basename === '.' || basename !== name)\n throw new Error(`${option} option must not contain a path, found \"${name}\".`);\n }\n else { // if (option === 'dir' || option === 'template') {\n // assert that dir or template are relative to tmpDir\n if (path.isAbsolute(name) && !name.startsWith(tmpDir)) {\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${name}\".`);\n }\n let resolvedPath = _resolvePath(name, tmpDir);\n if (!resolvedPath.startsWith(tmpDir))\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${resolvedPath}\".`);\n }\n}\n\n/**\n * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isEBADF(error) {\n return _isExpectedError(error, -EBADF, 'EBADF');\n}\n\n/**\n * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isENOENT(error) {\n return _isExpectedError(error, -ENOENT, 'ENOENT');\n}\n\n/**\n * Helper to determine whether the expected error code matches the actual code and errno,\n * which will differ between the supported node versions.\n *\n * - Node >= 7.0:\n * error.code {string}\n * error.errno {number} any numerical value will be negated\n *\n * CAVEAT\n *\n * On windows, the errno for EBADF is -4083 but os.constants.errno.EBADF is different and we must assume that ENOENT\n * is no different here.\n *\n * @param {SystemError} error\n * @param {number} errno\n * @param {string} code\n * @private\n */\nfunction _isExpectedError(error, errno, code) {\n return IS_WIN32 ? error.code === code : error.code === code && error.errno === errno;\n}\n\n/**\n * Sets the graceful cleanup.\n *\n * If graceful cleanup is set, tmp will remove all controlled temporary objects on process exit, otherwise the\n * temporary objects will remain in place, waiting to be cleaned up on system restart or otherwise scheduled temporary\n * object removals.\n */\nfunction setGracefulCleanup() {\n _gracefulCleanup = true;\n}\n\n/**\n * Returns the currently configured tmp dir from os.tmpdir().\n *\n * @private\n * @param {?Options} options\n * @returns {string} the currently configured tmp dir\n */\nfunction _getTmpDir(options) {\n return path.resolve(options && options.tmpdir || os.tmpdir());\n}\n\n// Install process exit listener\nprocess.addListener(EXIT, _garbageCollector);\n\n/**\n * Configuration options.\n *\n * @typedef {Object} Options\n * @property {?boolean} keep the temporary object (file or dir) will not be garbage collected\n * @property {?number} tries the number of tries before give up the name generation\n * @property (?int) mode the access mode, defaults are 0o700 for directories and 0o600 for files\n * @property {?string} template the \"mkstemp\" like filename template\n * @property {?string} name fixed name relative to tmpdir or the specified dir option\n * @property {?string} dir tmp directory relative to the root tmp directory in use\n * @property {?string} prefix prefix for the generated name\n * @property {?string} postfix postfix for the generated name\n * @property {?string} tmpdir the root tmp directory which overrides the os tmpdir\n * @property {?boolean} unsafeCleanup recursively removes the created temporary directory, even when it's not empty\n * @property {?boolean} detachDescriptor detaches the file descriptor, caller is responsible for closing the file, tmp will no longer try closing the file during garbage collection\n * @property {?boolean} discardDescriptor discards the file descriptor (closes file, fd is -1), tmp will no longer try closing the file during garbage collection\n */\n\n/**\n * @typedef {Object} FileSyncObject\n * @property {string} name the name of the file\n * @property {string} fd the file descriptor or -1 if the fd has been discarded\n * @property {fileCallback} removeCallback the callback function to remove the file\n */\n\n/**\n * @typedef {Object} DirSyncObject\n * @property {string} name the name of the directory\n * @property {fileCallback} removeCallback the callback function to remove the directory\n */\n\n/**\n * @callback tmpNameCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n */\n\n/**\n * @callback fileCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback fileCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallback\n * @param {simpleCallback} [next] function to call whenever the tmp object needs to be removed\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallbackSync\n */\n\n/**\n * Callback function for function composition.\n * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}\n *\n * @callback simpleCallback\n */\n\n// exporting all the needed methods\n\n// evaluate _getTmpDir() lazily, mainly for simplifying testing but it also will\n// allow users to reconfigure the temporary directory\nObject.defineProperty(module.exports, 'tmpdir', {\n enumerable: true,\n configurable: false,\n get: function () {\n return _getTmpDir();\n }\n});\n\nmodule.exports.dir = dir;\nmodule.exports.dirSync = dirSync;\n\nmodule.exports.file = file;\nmodule.exports.fileSync = fileSync;\n\nmodule.exports.tmpName = tmpName;\nmodule.exports.tmpNameSync = tmpNameSync;\n\nmodule.exports.setGracefulCleanup = setGracefulCleanup;\n", "'use strict'\n\n// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nconst argmap = new Map([\n ['C', 'cwd'],\n ['f', 'file'],\n ['z', 'gzip'],\n ['P', 'preservePaths'],\n ['U', 'unlink'],\n ['strip-components', 'strip'],\n ['stripComponents', 'strip'],\n ['keep-newer', 'newer'],\n ['keepNewer', 'newer'],\n ['keep-newer-files', 'newer'],\n ['keepNewerFiles', 'newer'],\n ['k', 'keep'],\n ['keep-existing', 'keep'],\n ['keepExisting', 'keep'],\n ['m', 'noMtime'],\n ['no-mtime', 'noMtime'],\n ['p', 'preserveOwner'],\n ['L', 'follow'],\n ['h', 'follow'],\n])\n\nmodule.exports = opt => opt ? Object.keys(opt).map(k => [\n argmap.has(k) ? argmap.get(k) : k, opt[k],\n]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}\n", "'use strict'\nconst proc =\n typeof process === 'object' && process\n ? process\n : {\n stdout: null,\n stderr: null,\n }\nconst EE = require('events')\nconst Stream = require('stream')\nconst stringdecoder = require('string_decoder')\nconst SD = stringdecoder.StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFER = Symbol('buffer')\nconst PIPES = Symbol('pipes')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\n// internal event when stream is destroyed\nconst DESTROYED = Symbol('destroyed')\n// internal event when stream has an error\nconst ERROR = Symbol('error')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\nconst ABORT = Symbol('abort')\nconst ABORTED = Symbol('aborted')\nconst SIGNAL = Symbol('signal')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR =\n (doIter && Symbol.asyncIterator) || Symbol('asyncIterator not implemented')\nconst ITERATOR =\n (doIter && Symbol.iterator) || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev => ev === 'end' || ev === 'finish' || ev === 'prefinish'\n\nconst isArrayBuffer = b =>\n b instanceof ArrayBuffer ||\n (typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0)\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n constructor(src, dest, opts) {\n this.src = src\n this.dest = dest\n this.opts = opts\n this.ondrain = () => src[RESUME]()\n dest.on('drain', this.ondrain)\n }\n unpipe() {\n this.dest.removeListener('drain', this.ondrain)\n }\n // istanbul ignore next - only here for the prototype\n proxyErrors() {}\n end() {\n this.unpipe()\n if (this.opts.end) this.dest.end()\n }\n}\n\nclass PipeProxyErrors extends Pipe {\n unpipe() {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor(src, dest, opts) {\n super(src, dest, opts)\n this.proxyErrors = er => dest.emit('error', er)\n src.on('error', this.proxyErrors)\n }\n}\n\nclass Minipass extends Stream {\n constructor(options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this[PIPES] = []\n this[BUFFER] = []\n this[OBJECTMODE] = (options && options.objectMode) || false\n if (this[OBJECTMODE]) this[ENCODING] = null\n else this[ENCODING] = (options && options.encoding) || null\n if (this[ENCODING] === 'buffer') this[ENCODING] = null\n this[ASYNC] = (options && !!options.async) || false\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this[EMITTED_ERROR] = null\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n if (options && options.debugExposeBuffer === true) {\n Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] })\n }\n if (options && options.debugExposePipes === true) {\n Object.defineProperty(this, 'pipes', { get: () => this[PIPES] })\n }\n this[SIGNAL] = options && options.signal\n this[ABORTED] = false\n if (this[SIGNAL]) {\n this[SIGNAL].addEventListener('abort', () => this[ABORT]())\n if (this[SIGNAL].aborted) {\n this[ABORT]()\n }\n }\n }\n\n get bufferLength() {\n return this[BUFFERLENGTH]\n }\n\n get encoding() {\n return this[ENCODING]\n }\n set encoding(enc) {\n if (this[OBJECTMODE]) throw new Error('cannot set encoding in objectMode')\n\n if (\n this[ENCODING] &&\n enc !== this[ENCODING] &&\n ((this[DECODER] && this[DECODER].lastNeed) || this[BUFFERLENGTH])\n )\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this[BUFFER].length)\n this[BUFFER] = this[BUFFER].map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding(enc) {\n this.encoding = enc\n }\n\n get objectMode() {\n return this[OBJECTMODE]\n }\n set objectMode(om) {\n this[OBJECTMODE] = this[OBJECTMODE] || !!om\n }\n\n get ['async']() {\n return this[ASYNC]\n }\n set ['async'](a) {\n this[ASYNC] = this[ASYNC] || !!a\n }\n\n // drop everything and get out of the flow completely\n [ABORT]() {\n this[ABORTED] = true\n this.emit('abort', this[SIGNAL].reason)\n this.destroy(this[SIGNAL].reason)\n }\n\n get aborted() {\n return this[ABORTED]\n }\n set aborted(_) {}\n\n write(chunk, encoding, cb) {\n if (this[ABORTED]) return false\n if (this[EOF]) throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit(\n 'error',\n Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n )\n )\n return true\n }\n\n if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8')\n\n if (!encoding) encoding = 'utf8'\n\n const fn = this[ASYNC] ? defer : f => f()\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk)) chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // handle object mode up front, since it's simpler\n // this yields better performance, fewer checks later.\n if (this[OBJECTMODE]) {\n /* istanbul ignore if - maybe impossible? */\n if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n if (this.flowing) this.emit('data', chunk)\n else this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n if (cb) fn(cb)\n\n return this.flowing\n }\n\n // at this point the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!chunk.length) {\n if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n if (cb) fn(cb)\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (\n typeof chunk === 'string' &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)\n ) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n // Note: flushing CAN potentially switch us into not-flowing mode\n if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n if (this.flowing) this.emit('data', chunk)\n else this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n if (cb) fn(cb)\n\n return this.flowing\n }\n\n read(n) {\n if (this[DESTROYED]) return null\n\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n this[MAYBE_EMIT_END]()\n return null\n }\n\n if (this[OBJECTMODE]) n = null\n\n if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {\n if (this.encoding) this[BUFFER] = [this[BUFFER].join('')]\n else this[BUFFER] = [Buffer.concat(this[BUFFER], this[BUFFERLENGTH])]\n }\n\n const ret = this[READ](n || null, this[BUFFER][0])\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [READ](n, chunk) {\n if (n === chunk.length || n === null) this[BUFFERSHIFT]()\n else {\n this[BUFFER][0] = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this[BUFFER].length && !this[EOF]) this.emit('drain')\n\n return chunk\n }\n\n end(chunk, encoding, cb) {\n if (typeof chunk === 'function') (cb = chunk), (chunk = null)\n if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8')\n if (chunk) this.write(chunk, encoding)\n if (cb) this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED]) this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME]() {\n if (this[DESTROYED]) return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this[BUFFER].length) this[FLUSH]()\n else if (this[EOF]) this[MAYBE_EMIT_END]()\n else this.emit('drain')\n }\n\n resume() {\n return this[RESUME]()\n }\n\n pause() {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed() {\n return this[DESTROYED]\n }\n\n get flowing() {\n return this[FLOWING]\n }\n\n get paused() {\n return this[PAUSED]\n }\n\n [BUFFERPUSH](chunk) {\n if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1\n else this[BUFFERLENGTH] += chunk.length\n this[BUFFER].push(chunk)\n }\n\n [BUFFERSHIFT]() {\n if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1\n else this[BUFFERLENGTH] -= this[BUFFER][0].length\n return this[BUFFER].shift()\n }\n\n [FLUSH](noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length)\n\n if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain')\n }\n\n [FLUSHCHUNK](chunk) {\n this.emit('data', chunk)\n return this.flowing\n }\n\n pipe(dest, opts) {\n if (this[DESTROYED]) return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === proc.stdout || dest === proc.stderr) opts.end = false\n else opts.end = opts.end !== false\n opts.proxyErrors = !!opts.proxyErrors\n\n // piping an ended stream ends immediately\n if (ended) {\n if (opts.end) dest.end()\n } else {\n this[PIPES].push(\n !opts.proxyErrors\n ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts)\n )\n if (this[ASYNC]) defer(() => this[RESUME]())\n else this[RESUME]()\n }\n\n return dest\n }\n\n unpipe(dest) {\n const p = this[PIPES].find(p => p.dest === dest)\n if (p) {\n this[PIPES].splice(this[PIPES].indexOf(p), 1)\n p.unpipe()\n }\n }\n\n addListener(ev, fn) {\n return this.on(ev, fn)\n }\n\n on(ev, fn) {\n const ret = super.on(ev, fn)\n if (ev === 'data' && !this[PIPES].length && !this.flowing) this[RESUME]()\n else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)\n super.emit('readable')\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n } else if (ev === 'error' && this[EMITTED_ERROR]) {\n if (this[ASYNC]) defer(() => fn.call(this, this[EMITTED_ERROR]))\n else fn.call(this, this[EMITTED_ERROR])\n }\n return ret\n }\n\n get emittedEnd() {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END]() {\n if (\n !this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this[BUFFER].length === 0 &&\n this[EOF]\n ) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED]) this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit(ev, data, ...extra) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n return !this[OBJECTMODE] && !data\n ? false\n : this[ASYNC]\n ? defer(() => this[EMITDATA](data))\n : this[EMITDATA](data)\n } else if (ev === 'end') {\n return this[EMITEND]()\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED]) return\n const ret = super.emit('close')\n this.removeAllListeners('close')\n return ret\n } else if (ev === 'error') {\n this[EMITTED_ERROR] = data\n super.emit(ERROR, data)\n const ret =\n !this[SIGNAL] || this.listeners('error').length\n ? super.emit('error', data)\n : false\n this[MAYBE_EMIT_END]()\n return ret\n } else if (ev === 'resume') {\n const ret = super.emit('resume')\n this[MAYBE_EMIT_END]()\n return ret\n } else if (ev === 'finish' || ev === 'prefinish') {\n const ret = super.emit(ev)\n this.removeAllListeners(ev)\n return ret\n }\n\n // Some other unknown event\n const ret = super.emit(ev, data, ...extra)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITDATA](data) {\n for (const p of this[PIPES]) {\n if (p.dest.write(data) === false) this.pause()\n }\n const ret = super.emit('data', data)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITEND]() {\n if (this[EMITTED_END]) return\n\n this[EMITTED_END] = true\n this.readable = false\n if (this[ASYNC]) defer(() => this[EMITEND2]())\n else this[EMITEND2]()\n }\n\n [EMITEND2]() {\n if (this[DECODER]) {\n const data = this[DECODER].end()\n if (data) {\n for (const p of this[PIPES]) {\n p.dest.write(data)\n }\n super.emit('data', data)\n }\n }\n\n for (const p of this[PIPES]) {\n p.end()\n }\n const ret = super.emit('end')\n this.removeAllListeners('end')\n return ret\n }\n\n // const all = await stream.collect()\n collect() {\n const buf = []\n if (!this[OBJECTMODE]) buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE]) buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat() {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING]\n ? buf.join('')\n : Buffer.concat(buf, buf.dataLength)\n )\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise() {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('error', er => reject(er))\n this.on('end', () => resolve())\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR]() {\n let stopped = false\n const stop = () => {\n this.pause()\n stopped = true\n return Promise.resolve({ done: true })\n }\n const next = () => {\n if (stopped) return stop()\n const res = this.read()\n if (res !== null) return Promise.resolve({ done: false, value: res })\n\n if (this[EOF]) return stop()\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n this.removeListener(DESTROYED, ondestroy)\n stop()\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.removeListener(DESTROYED, ondestroy)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n this.removeListener(DESTROYED, ondestroy)\n stop()\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return {\n next,\n throw: stop,\n return: stop,\n [ASYNCITERATOR]() {\n return this\n },\n }\n }\n\n // for (let chunk of stream)\n [ITERATOR]() {\n let stopped = false\n const stop = () => {\n this.pause()\n this.removeListener(ERROR, stop)\n this.removeListener(DESTROYED, stop)\n this.removeListener('end', stop)\n stopped = true\n return { done: true }\n }\n\n const next = () => {\n if (stopped) return stop()\n const value = this.read()\n return value === null ? stop() : { value }\n }\n this.once('end', stop)\n this.once(ERROR, stop)\n this.once(DESTROYED, stop)\n\n return {\n next,\n throw: stop,\n return: stop,\n [ITERATOR]() {\n return this\n },\n }\n }\n\n destroy(er) {\n if (this[DESTROYED]) {\n if (er) this.emit('error', er)\n else this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this[BUFFER].length = 0\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED]) this.close()\n\n if (er) this.emit('error', er)\n // if no error to emit, still reject pending promises\n else this.emit(DESTROYED)\n\n return this\n }\n\n static isStream(s) {\n return (\n !!s &&\n (s instanceof Minipass ||\n s instanceof Stream ||\n (s instanceof EE &&\n // readable\n (typeof s.pipe === 'function' ||\n // writable\n (typeof s.write === 'function' && typeof s.end === 'function'))))\n )\n }\n}\n\nexports.Minipass = Minipass\n", "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736. When node v6\n// support drops, we can just export the realZlibConstants object.\nconst realZlibConstants = require('zlib').constants ||\n /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n Z_VERSION_ERROR: -6,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n DEFLATE: 1,\n INFLATE: 2,\n GZIP: 3,\n GUNZIP: 4,\n DEFLATERAW: 5,\n INFLATERAW: 6,\n UNZIP: 7,\n BROTLI_DECODE: 8,\n BROTLI_ENCODE: 9,\n Z_MIN_WINDOWBITS: 8,\n Z_MAX_WINDOWBITS: 15,\n Z_DEFAULT_WINDOWBITS: 15,\n Z_MIN_CHUNK: 64,\n Z_MAX_CHUNK: Infinity,\n Z_DEFAULT_CHUNK: 16384,\n Z_MIN_MEMLEVEL: 1,\n Z_MAX_MEMLEVEL: 9,\n Z_DEFAULT_MEMLEVEL: 8,\n Z_MIN_LEVEL: -1,\n Z_MAX_LEVEL: 9,\n Z_DEFAULT_LEVEL: -1,\n BROTLI_OPERATION_PROCESS: 0,\n BROTLI_OPERATION_FLUSH: 1,\n BROTLI_OPERATION_FINISH: 2,\n BROTLI_OPERATION_EMIT_METADATA: 3,\n BROTLI_MODE_GENERIC: 0,\n BROTLI_MODE_TEXT: 1,\n BROTLI_MODE_FONT: 2,\n BROTLI_DEFAULT_MODE: 0,\n BROTLI_MIN_QUALITY: 0,\n BROTLI_MAX_QUALITY: 11,\n BROTLI_DEFAULT_QUALITY: 11,\n BROTLI_MIN_WINDOW_BITS: 10,\n BROTLI_MAX_WINDOW_BITS: 24,\n BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n BROTLI_DEFAULT_WINDOW: 22,\n BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n BROTLI_PARAM_MODE: 0,\n BROTLI_PARAM_QUALITY: 1,\n BROTLI_PARAM_LGWIN: 2,\n BROTLI_PARAM_LGBLOCK: 3,\n BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n BROTLI_PARAM_SIZE_HINT: 5,\n BROTLI_PARAM_LARGE_WINDOW: 6,\n BROTLI_PARAM_NPOSTFIX: 7,\n BROTLI_PARAM_NDIRECT: 8,\n BROTLI_DECODER_RESULT_ERROR: 0,\n BROTLI_DECODER_RESULT_SUCCESS: 1,\n BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n BROTLI_DECODER_NO_ERROR: 0,\n BROTLI_DECODER_SUCCESS: 1,\n BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n}, realZlibConstants))\n", "'use strict'\nconst proc = typeof process === 'object' && process ? process : {\n stdout: null,\n stderr: null,\n}\nconst EE = require('events')\nconst Stream = require('stream')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n constructor (src, dest, opts) {\n this.src = src\n this.dest = dest\n this.opts = opts\n this.ondrain = () => src[RESUME]()\n dest.on('drain', this.ondrain)\n }\n unpipe () {\n this.dest.removeListener('drain', this.ondrain)\n }\n // istanbul ignore next - only here for the prototype\n proxyErrors () {}\n end () {\n this.unpipe()\n if (this.opts.end)\n this.dest.end()\n }\n}\n\nclass PipeProxyErrors extends Pipe {\n unpipe () {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor (src, dest, opts) {\n super(src, dest, opts)\n this.proxyErrors = er => dest.emit('error', er)\n src.on('error', this.proxyErrors)\n }\n}\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = []\n this.buffer = []\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[ASYNC] = options && !!options.async || false\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this[EMITTED_ERROR] = null\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n get ['async'] () { return this[ASYNC] }\n set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n const fn = this[ASYNC] ? defer : f => f()\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // handle object mode up front, since it's simpler\n // this yields better performance, fewer checks later.\n if (this[OBJECTMODE]) {\n /* istanbul ignore if - maybe impossible? */\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n fn(cb)\n\n return this.flowing\n }\n\n // at this point the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!chunk.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n fn(cb)\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (typeof chunk === 'string' &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n // Note: flushing CAN potentially switch us into not-flowing mode\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n fn(cb)\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n this[MAYBE_EMIT_END]()\n return null\n }\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = [this.buffer.join('')]\n else\n this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]\n }\n\n const ret = this[READ](n || null, this.buffer[0])\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer[0] = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer[0].length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === proc.stdout || dest === proc.stderr)\n opts.end = false\n else\n opts.end = opts.end !== false\n opts.proxyErrors = !!opts.proxyErrors\n\n // piping an ended stream ends immediately\n if (ended) {\n if (opts.end)\n dest.end()\n } else {\n this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts))\n if (this[ASYNC])\n defer(() => this[RESUME]())\n else\n this[RESUME]()\n }\n\n return dest\n }\n\n unpipe (dest) {\n const p = this.pipes.find(p => p.dest === dest)\n if (p) {\n this.pipes.splice(this.pipes.indexOf(p), 1)\n p.unpipe()\n }\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n const ret = super.on(ev, fn)\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\n else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)\n super.emit('readable')\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n } else if (ev === 'error' && this[EMITTED_ERROR]) {\n if (this[ASYNC])\n defer(() => fn.call(this, this[EMITTED_ERROR]))\n else\n fn.call(this, this[EMITTED_ERROR])\n }\n return ret\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data, ...extra) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n return !data ? false\n : this[ASYNC] ? defer(() => this[EMITDATA](data))\n : this[EMITDATA](data)\n } else if (ev === 'end') {\n return this[EMITEND]()\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED])\n return\n const ret = super.emit('close')\n this.removeAllListeners('close')\n return ret\n } else if (ev === 'error') {\n this[EMITTED_ERROR] = data\n const ret = super.emit('error', data)\n this[MAYBE_EMIT_END]()\n return ret\n } else if (ev === 'resume') {\n const ret = super.emit('resume')\n this[MAYBE_EMIT_END]()\n return ret\n } else if (ev === 'finish' || ev === 'prefinish') {\n const ret = super.emit(ev)\n this.removeAllListeners(ev)\n return ret\n }\n\n // Some other unknown event\n const ret = super.emit(ev, data, ...extra)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITDATA] (data) {\n for (const p of this.pipes) {\n if (p.dest.write(data) === false)\n this.pause()\n }\n const ret = super.emit('data', data)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITEND] () {\n if (this[EMITTED_END])\n return\n\n this[EMITTED_END] = true\n this.readable = false\n if (this[ASYNC])\n defer(() => this[EMITEND2]())\n else\n this[EMITEND2]()\n }\n\n [EMITEND2] () {\n if (this[DECODER]) {\n const data = this[DECODER].end()\n if (data) {\n for (const p of this.pipes) {\n p.dest.write(data)\n }\n super.emit('data', data)\n }\n }\n\n for (const p of this.pipes) {\n p.end()\n }\n const ret = super.emit('end')\n this.removeAllListeners('end')\n return ret\n }\n\n // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE])\n buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise () {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('error', er => reject(er))\n this.on('end', () => resolve())\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer.length = 0\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n constructor (err) {\n super('zlib: ' + err.message)\n this.code = err.code\n this.errno = err.errno\n /* istanbul ignore if */\n if (!this.code)\n this.code = 'ZLIB_ERROR'\n\n this.message = 'zlib: ' + err.message\n Error.captureStackTrace(this, this.constructor)\n }\n\n get name () {\n return 'ZlibError'\n }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n constructor (opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor')\n\n super(opts)\n this[_sawError] = false\n this[_ended] = false\n this[_opts] = opts\n\n this[_flushFlag] = opts.flush\n this[_finishFlushFlag] = opts.finishFlush\n // this will throw if any options are invalid for the class selected\n try {\n this[_handle] = new realZlib[mode](opts)\n } catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er)\n }\n\n this[_onError] = (err) => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this[_sawError])\n return\n\n this[_sawError] = true\n\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n this.close()\n this.emit('error', err)\n }\n\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n this.once('end', () => this.close)\n }\n\n close () {\n if (this[_handle]) {\n this[_handle].close()\n this[_handle] = null\n this.emit('close')\n }\n }\n\n reset () {\n if (!this[_sawError]) {\n assert(this[_handle], 'zlib binding closed')\n return this[_handle].reset()\n }\n }\n\n flush (flushFlag) {\n if (this.ended)\n return\n\n if (typeof flushFlag !== 'number')\n flushFlag = this[_fullFlushFlag]\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n }\n\n end (chunk, encoding, cb) {\n if (chunk)\n this.write(chunk, encoding)\n this.flush(this[_finishFlushFlag])\n this[_ended] = true\n return super.end(null, null, cb)\n }\n\n get ended () {\n return this[_ended]\n }\n\n write (chunk, encoding, cb) {\n // process the chunk using the sync process\n // then super.write() all the outputted chunks\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (typeof chunk === 'string')\n chunk = Buffer.from(chunk, encoding)\n\n if (this[_sawError])\n return\n assert(this[_handle], 'zlib binding closed')\n\n // _processChunk tries to .close() the native handle after it's done, so we\n // intercept that by temporarily making it a no-op.\n const nativeHandle = this[_handle]._handle\n const originalNativeClose = nativeHandle.close\n nativeHandle.close = () => {}\n const originalClose = this[_handle].close\n this[_handle].close = () => {}\n // It also calls `Buffer.concat()` at the end, which may be convenient\n // for some, but which we are not interested in as it slows us down.\n Buffer.concat = (args) => args\n let result\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag] : this[_flushFlag]\n result = this[_handle]._processChunk(chunk, flushFlag)\n // if we don't throw, reset it back how it was\n Buffer.concat = OriginalBufferConcat\n } catch (err) {\n // or if we do, put Buffer.concat() back before we emit error\n // Error events call into user code, which may call Buffer.concat()\n Buffer.concat = OriginalBufferConcat\n this[_onError](new ZlibError(err))\n } finally {\n if (this[_handle]) {\n // Core zlib resets `_handle` to null after attempting to close the\n // native handle. Our no-op handler prevented actual closure, but we\n // need to restore the `._handle` property.\n this[_handle]._handle = nativeHandle\n nativeHandle.close = originalNativeClose\n this[_handle].close = originalClose\n // `_processChunk()` adds an 'error' listener. If we don't remove it\n // after each call, these handlers start piling up.\n this[_handle].removeAllListeners('error')\n // make sure OUR error listener is still attached tho\n }\n }\n\n if (this[_handle])\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n\n let writeReturn\n if (result) {\n if (Array.isArray(result) && result.length > 0) {\n // The first buffer is always `handle._outBuffer`, which would be\n // re-used for later invocations; so, we always have to copy that one.\n writeReturn = this[_superWrite](Buffer.from(result[0]))\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i])\n }\n } else {\n writeReturn = this[_superWrite](Buffer.from(result))\n }\n }\n\n if (cb)\n cb()\n return writeReturn\n }\n\n [_superWrite] (data) {\n return super.write(data)\n }\n}\n\nclass Zlib extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.Z_NO_FLUSH\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n this[_level] = opts.level\n this[_strategy] = opts.strategy\n }\n\n params (level, strategy) {\n if (this[_sawError])\n return\n\n if (!this[_handle])\n throw new Error('cannot switch params when binding is closed')\n\n // no way to test this without also not supporting params at all\n /* istanbul ignore if */\n if (!this[_handle].params)\n throw new Error('not supported in this implementation')\n\n if (this[_level] !== level || this[_strategy] !== strategy) {\n this.flush(constants.Z_SYNC_FLUSH)\n assert(this[_handle], 'zlib binding closed')\n // .params() calls .flush(), but the latter is always async in the\n // core zlib. We override .flush() temporarily to intercept that and\n // flush synchronously.\n const origFlush = this[_handle].flush\n this[_handle].flush = (flushFlag, cb) => {\n this.flush(flushFlag)\n cb()\n }\n try {\n this[_handle].params(level, strategy)\n } finally {\n this[_handle].flush = origFlush\n }\n /* istanbul ignore else */\n if (this[_handle]) {\n this[_level] = level\n this[_strategy] = strategy\n }\n }\n }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n constructor (opts) {\n super(opts, 'Deflate')\n }\n}\n\nclass Inflate extends Zlib {\n constructor (opts) {\n super(opts, 'Inflate')\n }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gzip')\n this[_portable] = opts && !!opts.portable\n }\n\n [_superWrite] (data) {\n if (!this[_portable])\n return super[_superWrite](data)\n\n // we'll always get the header emitted in one first chunk\n // overwrite the OS indicator byte with 0xFF\n this[_portable] = false\n data[9] = 255\n return super[_superWrite](data)\n }\n}\n\nclass Gunzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gunzip')\n }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'DeflateRaw')\n }\n}\n\nclass InflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'InflateRaw')\n }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n constructor (opts) {\n super(opts, 'Unzip')\n }\n}\n\nclass Brotli extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n }\n}\n\nclass BrotliCompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliCompress')\n }\n}\n\nclass BrotliDecompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliDecompress')\n }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n exports.BrotliCompress = BrotliCompress\n exports.BrotliDecompress = BrotliDecompress\n} else {\n exports.BrotliCompress = exports.BrotliDecompress = class {\n constructor () {\n throw new Error('Brotli is not supported in this version of Node.js')\n }\n }\n}\n", "// on windows, either \\ or / are valid directory separators.\n// on unix, \\ is a valid character in filenames.\n// so, on windows, and only on windows, we replace all \\ chars with /,\n// so that we can use / as our one and only directory separator char.\n\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nmodule.exports = platform !== 'win32' ? p => p\n : p => p && p.replace(/\\\\/g, '/')\n", "'use strict'\nconst { Minipass } = require('minipass')\nconst normPath = require('./normalize-windows-path.js')\n\nconst SLURP = Symbol('slurp')\nmodule.exports = class ReadEntry extends Minipass {\n constructor (header, ex, gex) {\n super()\n // read entries always start life paused. this is to avoid the\n // situation where Minipass's auto-ending empty streams results\n // in an entry ending before we're ready for it.\n this.pause()\n this.extended = ex\n this.globalExtended = gex\n this.header = header\n this.startBlockSize = 512 * Math.ceil(header.size / 512)\n this.blockRemain = this.startBlockSize\n this.remain = header.size\n this.type = header.type\n this.meta = false\n this.ignore = false\n switch (this.type) {\n case 'File':\n case 'OldFile':\n case 'Link':\n case 'SymbolicLink':\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'Directory':\n case 'FIFO':\n case 'ContiguousFile':\n case 'GNUDumpDir':\n break\n\n case 'NextFileHasLongLinkpath':\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n case 'GlobalExtendedHeader':\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this.meta = true\n break\n\n // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n // it may be worth doing the same, but with a warning.\n default:\n this.ignore = true\n }\n\n this.path = normPath(header.path)\n this.mode = header.mode\n if (this.mode) {\n this.mode = this.mode & 0o7777\n }\n this.uid = header.uid\n this.gid = header.gid\n this.uname = header.uname\n this.gname = header.gname\n this.size = header.size\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n this.linkpath = normPath(header.linkpath)\n this.uname = header.uname\n this.gname = header.gname\n\n if (ex) {\n this[SLURP](ex)\n }\n if (gex) {\n this[SLURP](gex, true)\n }\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain) {\n throw new Error('writing more to entry than is appropriate')\n }\n\n const r = this.remain\n const br = this.blockRemain\n this.remain = Math.max(0, r - writeLen)\n this.blockRemain = Math.max(0, br - writeLen)\n if (this.ignore) {\n return true\n }\n\n if (r >= writeLen) {\n return super.write(data)\n }\n\n // r < writeLen\n return super.write(data.slice(0, r))\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path')) {\n this[k] = k === 'path' || k === 'linkpath' ? normPath(ex[k]) : ex[k]\n }\n }\n }\n}\n", "'use strict'\n// map types from key to human-friendly name\nexports.name = new Map([\n ['0', 'File'],\n // same as File\n ['', 'OldFile'],\n ['1', 'Link'],\n ['2', 'SymbolicLink'],\n // Devices and FIFOs aren't fully supported\n // they are parsed, but skipped when unpacking\n ['3', 'CharacterDevice'],\n ['4', 'BlockDevice'],\n ['5', 'Directory'],\n ['6', 'FIFO'],\n // same as File\n ['7', 'ContiguousFile'],\n // pax headers\n ['g', 'GlobalExtendedHeader'],\n ['x', 'ExtendedHeader'],\n // vendor-specific stuff\n // skip\n ['A', 'SolarisACL'],\n // like 5, but with data, which should be skipped\n ['D', 'GNUDumpDir'],\n // metadata only, skip\n ['I', 'Inode'],\n // data = link path of next file\n ['K', 'NextFileHasLongLinkpath'],\n // data = path of next file\n ['L', 'NextFileHasLongPath'],\n // skip\n ['M', 'ContinuationFile'],\n // like L\n ['N', 'OldGnuLongPath'],\n // skip\n ['S', 'SparseFile'],\n // skip\n ['V', 'TapeVolumeHeader'],\n // like x\n ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))\n", "'use strict'\n// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nconst encode = (num, buf) => {\n if (!Number.isSafeInteger(num)) {\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range')\n } else if (num < 0) {\n encodeNegative(num, buf)\n } else {\n encodePositive(num, buf)\n }\n return buf\n}\n\nconst encodePositive = (num, buf) => {\n buf[0] = 0x80\n\n for (var i = buf.length; i > 1; i--) {\n buf[i - 1] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nconst encodeNegative = (num, buf) => {\n buf[0] = 0xff\n var flipped = false\n num = num * -1\n for (var i = buf.length; i > 1; i--) {\n var byte = num & 0xff\n num = Math.floor(num / 0x100)\n if (flipped) {\n buf[i - 1] = onesComp(byte)\n } else if (byte === 0) {\n buf[i - 1] = 0\n } else {\n flipped = true\n buf[i - 1] = twosComp(byte)\n }\n }\n}\n\nconst parse = (buf) => {\n const pre = buf[0]\n const value = pre === 0x80 ? pos(buf.slice(1, buf.length))\n : pre === 0xff ? twos(buf)\n : null\n if (value === null) {\n throw Error('invalid base256 encoding')\n }\n\n if (!Number.isSafeInteger(value)) {\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('parsed number outside of javascript safe integer range')\n }\n\n return value\n}\n\nconst twos = (buf) => {\n var len = buf.length\n var sum = 0\n var flipped = false\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n var f\n if (flipped) {\n f = onesComp(byte)\n } else if (byte === 0) {\n f = byte\n } else {\n flipped = true\n f = twosComp(byte)\n }\n if (f !== 0) {\n sum -= f * Math.pow(256, len - i - 1)\n }\n }\n return sum\n}\n\nconst pos = (buf) => {\n var len = buf.length\n var sum = 0\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n if (byte !== 0) {\n sum += byte * Math.pow(256, len - i - 1)\n }\n }\n return sum\n}\n\nconst onesComp = byte => (0xff ^ byte) & 0xff\n\nconst twosComp = byte => ((0xff ^ byte) + 1) & 0xff\n\nmodule.exports = {\n encode,\n parse,\n}\n", "'use strict'\n// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nconst types = require('./types.js')\nconst pathModule = require('path').posix\nconst large = require('./large-numbers.js')\n\nconst SLURP = Symbol('slurp')\nconst TYPE = Symbol('type')\n\nclass Header {\n constructor (data, off, ex, gex) {\n this.cksumValid = false\n this.needPax = false\n this.nullBlock = false\n\n this.block = null\n this.path = null\n this.mode = null\n this.uid = null\n this.gid = null\n this.size = null\n this.mtime = null\n this.cksum = null\n this[TYPE] = '0'\n this.linkpath = null\n this.uname = null\n this.gname = null\n this.devmaj = 0\n this.devmin = 0\n this.atime = null\n this.ctime = null\n\n if (Buffer.isBuffer(data)) {\n this.decode(data, off || 0, ex, gex)\n } else if (data) {\n this.set(data)\n }\n }\n\n decode (buf, off, ex, gex) {\n if (!off) {\n off = 0\n }\n\n if (!buf || !(buf.length >= off + 512)) {\n throw new Error('need 512 bytes for header')\n }\n\n this.path = decString(buf, off, 100)\n this.mode = decNumber(buf, off + 100, 8)\n this.uid = decNumber(buf, off + 108, 8)\n this.gid = decNumber(buf, off + 116, 8)\n this.size = decNumber(buf, off + 124, 12)\n this.mtime = decDate(buf, off + 136, 12)\n this.cksum = decNumber(buf, off + 148, 12)\n\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n this[SLURP](ex)\n this[SLURP](gex, true)\n\n // old tar versions marked dirs as a file with a trailing /\n this[TYPE] = decString(buf, off + 156, 1)\n if (this[TYPE] === '') {\n this[TYPE] = '0'\n }\n if (this[TYPE] === '0' && this.path.slice(-1) === '/') {\n this[TYPE] = '5'\n }\n\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this[TYPE] === '5') {\n this.size = 0\n }\n\n this.linkpath = decString(buf, off + 157, 100)\n if (buf.slice(off + 257, off + 265).toString() === 'ustar\\u000000') {\n this.uname = decString(buf, off + 265, 32)\n this.gname = decString(buf, off + 297, 32)\n this.devmaj = decNumber(buf, off + 329, 8)\n this.devmin = decNumber(buf, off + 337, 8)\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155)\n this.path = prefix + '/' + this.path\n } else {\n const prefix = decString(buf, off + 345, 130)\n if (prefix) {\n this.path = prefix + '/' + this.path\n }\n this.atime = decDate(buf, off + 476, 12)\n this.ctime = decDate(buf, off + 488, 12)\n }\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++) {\n sum += buf[i]\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i]\n }\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === null && sum === 8 * 0x20) {\n this.nullBlock = true\n }\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path')) {\n this[k] = ex[k]\n }\n }\n }\n\n encode (buf, off) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n off = 0\n }\n\n if (!off) {\n off = 0\n }\n\n if (!(buf.length >= off + 512)) {\n throw new Error('need 512 bytes for header')\n }\n\n const prefixSize = this.ctime || this.atime ? 130 : 155\n const split = splitPrefix(this.path || '', prefixSize)\n const path = split[0]\n const prefix = split[1]\n this.needPax = split[2]\n\n this.needPax = encString(buf, off, 100, path) || this.needPax\n this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = this[TYPE].charCodeAt(0)\n this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0) {\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n } else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++) {\n sum += buf[i]\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i]\n }\n\n this.cksum = sum\n encNumber(buf, off + 148, 8, this.cksum)\n this.cksumValid = true\n\n return this.needPax\n }\n\n set (data) {\n for (const i in data) {\n if (data[i] !== null && data[i] !== undefined) {\n this[i] = data[i]\n }\n }\n }\n\n get type () {\n return types.name.get(this[TYPE]) || this[TYPE]\n }\n\n get typeKey () {\n return this[TYPE]\n }\n\n set type (type) {\n if (types.code.has(type)) {\n this[TYPE] = types.code.get(type)\n } else {\n this[TYPE] = type\n }\n }\n}\n\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret\n const root = pathModule.parse(p).root || '.'\n\n if (Buffer.byteLength(pp) < pathSize) {\n ret = [pp, prefix, false]\n } else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp)\n pp = pathModule.basename(pp)\n\n do {\n if (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize) {\n // both fit!\n ret = [pp, prefix, false]\n } else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize) {\n // prefix fits in prefix, but path doesn't fit in path\n ret = [pp.slice(0, pathSize - 1), prefix, true]\n } else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp)\n prefix = pathModule.dirname(prefix)\n }\n } while (prefix !== root && !ret)\n\n // at this point, found no resolution, just truncate\n if (!ret) {\n ret = [p.slice(0, pathSize - 1), '', true]\n }\n }\n return ret\n}\n\nconst decString = (buf, off, size) =>\n buf.slice(off, off + size).toString('utf8').replace(/\\0.*/, '')\n\nconst decDate = (buf, off, size) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = num => num === null ? null : new Date(num * 1000)\n\nconst decNumber = (buf, off, size) =>\n buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanNull = value => isNaN(value) ? null : value\n\nconst decSmallNumber = (buf, off, size) =>\n nanNull(parseInt(\n buf.slice(off, off + size)\n .toString('utf8').replace(/\\0.*$/, '').trim(), 8))\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n}\n\nconst encNumber = (buf, off, size, number) =>\n number === null ? false :\n number > MAXNUM[size] || number < 0\n ? (large.encode(number, buf.slice(off, off + size)), true)\n : (encSmallNumber(buf, off, size, number), false)\n\nconst encSmallNumber = (buf, off, size, number) =>\n buf.write(octalString(number, size), off, size, 'ascii')\n\nconst octalString = (number, size) =>\n padOctal(Math.floor(number).toString(8), size)\n\nconst padOctal = (string, size) =>\n (string.length === size - 1 ? string\n : new Array(size - string.length - 1).join('0') + string + ' ') + '\\0'\n\nconst encDate = (buf, off, size, date) =>\n date === null ? false :\n encNumber(buf, off, size, date.getTime() / 1000)\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (buf, off, size, string) =>\n string === null ? false :\n (buf.write(string + NULLS, off, size, 'utf8'),\n string.length !== Buffer.byteLength(string) || string.length > size)\n\nmodule.exports = Header\n", "'use strict'\nconst Header = require('./header.js')\nconst path = require('path')\n\nclass Pax {\n constructor (obj, global) {\n this.atime = obj.atime || null\n this.charset = obj.charset || null\n this.comment = obj.comment || null\n this.ctime = obj.ctime || null\n this.gid = obj.gid || null\n this.gname = obj.gname || null\n this.linkpath = obj.linkpath || null\n this.mtime = obj.mtime || null\n this.path = obj.path || null\n this.size = obj.size || null\n this.uid = obj.uid || null\n this.uname = obj.uname || null\n this.dev = obj.dev || null\n this.ino = obj.ino || null\n this.nlink = obj.nlink || null\n this.global = global || false\n }\n\n encode () {\n const body = this.encodeBody()\n if (body === '') {\n return null\n }\n\n const bodyLen = Buffer.byteLength(body)\n // round up to 512 bytes\n // add 512 for header\n const bufLen = 512 * Math.ceil(1 + bodyLen / 512)\n const buf = Buffer.allocUnsafe(bufLen)\n\n // 0-fill the header section, it might not hit every field\n for (let i = 0; i < 512; i++) {\n buf[i] = 0\n }\n\n new Header({\n // XXX split the path\n // then the path should be PaxHeader + basename, but less than 99,\n // prepend with the dirname\n path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),\n mode: this.mode || 0o644,\n uid: this.uid || null,\n gid: this.gid || null,\n size: bodyLen,\n mtime: this.mtime || null,\n type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n linkpath: '',\n uname: this.uname || '',\n gname: this.gname || '',\n devmaj: 0,\n devmin: 0,\n atime: this.atime || null,\n ctime: this.ctime || null,\n }).encode(buf)\n\n buf.write(body, 512, bodyLen, 'utf8')\n\n // null pad after the body\n for (let i = bodyLen + 512; i < buf.length; i++) {\n buf[i] = 0\n }\n\n return buf\n }\n\n encodeBody () {\n return (\n this.encodeField('path') +\n this.encodeField('ctime') +\n this.encodeField('atime') +\n this.encodeField('dev') +\n this.encodeField('ino') +\n this.encodeField('nlink') +\n this.encodeField('charset') +\n this.encodeField('comment') +\n this.encodeField('gid') +\n this.encodeField('gname') +\n this.encodeField('linkpath') +\n this.encodeField('mtime') +\n this.encodeField('size') +\n this.encodeField('uid') +\n this.encodeField('uname')\n )\n }\n\n encodeField (field) {\n if (this[field] === null || this[field] === undefined) {\n return ''\n }\n const v = this[field] instanceof Date ? this[field].getTime() / 1000\n : this[field]\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink'\n ? 'SCHILY.' : '') +\n field + '=' + v + '\\n'\n const byteLen = Buffer.byteLength(s)\n // the digits includes the length of the digits in ascii base-10\n // so if it's 9 characters, then adding 1 for the 9 makes it 10\n // which makes it 11 chars.\n let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1\n if (byteLen + digits >= Math.pow(10, digits)) {\n digits += 1\n }\n const len = digits + byteLen\n return len + s\n }\n}\n\nPax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)\n\nconst merge = (a, b) =>\n b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a\n\nconst parseKV = string =>\n string\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set, line) => {\n const n = parseInt(line, 10)\n\n // XXX Values with \\n in them will fail this.\n // Refactor to not be a naive line-by-line parse.\n if (n !== Buffer.byteLength(line) + 1) {\n return set\n }\n\n line = line.slice((n + ' ').length)\n const kv = line.split('=')\n const k = kv.shift().replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n if (!k) {\n return set\n }\n\n const v = kv.join('=')\n set[k] = /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k)\n ? new Date(v * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v\n return set\n}\n\nmodule.exports = Pax\n", "// warning: extremely hot code path.\n// This has been meticulously optimized for use\n// within npm install on large package trees.\n// Do not edit without careful benchmarking.\nmodule.exports = str => {\n let i = str.length - 1\n let slashesStart = -1\n while (i > -1 && str.charAt(i) === '/') {\n slashesStart = i\n i--\n }\n return slashesStart === -1 ? str : str.slice(0, slashesStart)\n}\n", "'use strict'\nmodule.exports = Base => class extends Base {\n warn (code, message, data = {}) {\n if (this.file) {\n data.file = this.file\n }\n if (this.cwd) {\n data.cwd = this.cwd\n }\n data.code = message instanceof Error && message.code || code\n data.tarCode = code\n if (!this.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data)\n message = message.message\n }\n this.emit('warn', data.tarCode, message, data)\n } else if (message instanceof Error) {\n this.emit('error', Object.assign(message, data))\n } else {\n this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))\n }\n }\n}\n", "'use strict'\n\n// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\n\nconst raw = [\n '|',\n '<',\n '>',\n '?',\n ':',\n]\n\nconst win = raw.map(char =>\n String.fromCharCode(0xf000 + char.charCodeAt(0)))\n\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]))\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]))\n\nmodule.exports = {\n encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),\n decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s),\n}\n", "// unix absolute paths are also absolute on win32, so we use this for both\nconst { isAbsolute, parse } = require('path').win32\n\n// returns [root, stripped]\n// Note that windows will think that //x/y/z/a has a \"root\" of //x/y, and in\n// those cases, we want to sanitize it to x/y/z/a, not z/a, so we strip /\n// explicitly if it's the first character.\n// drive-specific relative paths on Windows get their root stripped off even\n// though they are not absolute, so `c:../foo` becomes ['c:', '../foo']\nmodule.exports = path => {\n let r = ''\n\n let parsed = parse(path)\n while (isAbsolute(path) || parsed.root) {\n // windows will think that //x/y/z has a \"root\" of //x/y/\n // but strip the //?/C:/ off of //?/C:/path\n const root = path.charAt(0) === '/' && path.slice(0, 4) !== '//?/' ? '/'\n : parsed.root\n path = path.slice(root.length)\n r += root\n parsed = parse(path)\n }\n return [r, path]\n}\n", "'use strict'\nmodule.exports = (mode, isDir, portable) => {\n mode &= 0o7777\n\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable) {\n mode = (mode | 0o600) & ~0o22\n }\n\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400) {\n mode |= 0o100\n }\n if (mode & 0o40) {\n mode |= 0o10\n }\n if (mode & 0o4) {\n mode |= 0o1\n }\n }\n return mode\n}\n", "'use strict'\nconst { Minipass } = require('minipass')\nconst Pax = require('./pax.js')\nconst Header = require('./header.js')\nconst fs = require('fs')\nconst path = require('path')\nconst normPath = require('./normalize-windows-path.js')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nconst prefixPath = (path, prefix) => {\n if (!prefix) {\n return normPath(path)\n }\n path = normPath(path).replace(/^\\.(\\/|$)/, '')\n return stripSlash(prefix) + '/' + path\n}\n\nconst maxReadSize = 16 * 1024 * 1024\nconst PROCESS = Symbol('process')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst HEADER = Symbol('header')\nconst READ = Symbol('read')\nconst LSTAT = Symbol('lstat')\nconst ONLSTAT = Symbol('onlstat')\nconst ONREAD = Symbol('onread')\nconst ONREADLINK = Symbol('onreadlink')\nconst OPENFILE = Symbol('openfile')\nconst ONOPENFILE = Symbol('onopenfile')\nconst CLOSE = Symbol('close')\nconst MODE = Symbol('mode')\nconst AWAITDRAIN = Symbol('awaitDrain')\nconst ONDRAIN = Symbol('ondrain')\nconst PREFIX = Symbol('prefix')\nconst HAD_ERROR = Symbol('hadError')\nconst warner = require('./warn-mixin.js')\nconst winchars = require('./winchars.js')\nconst stripAbsolutePath = require('./strip-absolute-path.js')\n\nconst modeFix = require('./mode-fix.js')\n\nconst WriteEntry = warner(class WriteEntry extends Minipass {\n constructor (p, opt) {\n opt = opt || {}\n super(opt)\n if (typeof p !== 'string') {\n throw new TypeError('path is required')\n }\n this.path = normPath(p)\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable\n // until node has builtin pwnam functions, this'll have to do\n this.myuid = process.getuid && process.getuid() || 0\n this.myuser = process.env.USER || ''\n this.maxReadSize = opt.maxReadSize || maxReadSize\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.preservePaths = !!opt.preservePaths\n this.cwd = normPath(opt.cwd || process.cwd())\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n this.prefix = opt.prefix ? normPath(opt.prefix) : null\n\n this.fd = null\n this.blockLen = null\n this.blockRemain = null\n this.buf = null\n this.offset = null\n this.length = null\n this.pos = null\n this.remain = null\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n let pathWarn = false\n if (!this.preservePaths) {\n const [root, stripped] = stripAbsolutePath(this.path)\n if (root) {\n this.path = stripped\n pathWarn = root\n }\n }\n\n this.win32 = !!opt.win32 || process.platform === 'win32'\n if (this.win32) {\n // force the \\ to / normalization, since we might not *actually*\n // be on windows, but want \\ to be considered a path separator.\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'))\n p = p.replace(/\\\\/g, '/')\n }\n\n this.absolute = normPath(opt.absolute || path.resolve(this.cwd, p))\n\n if (this.path === '') {\n this.path = './'\n }\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.statCache.has(this.absolute)) {\n this[ONLSTAT](this.statCache.get(this.absolute))\n } else {\n this[LSTAT]()\n }\n }\n\n emit (ev, ...data) {\n if (ev === 'error') {\n this[HAD_ERROR] = true\n }\n return super.emit(ev, ...data)\n }\n\n [LSTAT] () {\n fs.lstat(this.absolute, (er, stat) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONLSTAT](stat)\n })\n }\n\n [ONLSTAT] (stat) {\n this.statCache.set(this.absolute, stat)\n this.stat = stat\n if (!stat.isFile()) {\n stat.size = 0\n }\n this.type = getType(stat)\n this.emit('stat', stat)\n this[PROCESS]()\n }\n\n [PROCESS] () {\n switch (this.type) {\n case 'File': return this[FILE]()\n case 'Directory': return this[DIRECTORY]()\n case 'SymbolicLink': return this[SYMLINK]()\n // unsupported types are ignored.\n default: return this.end()\n }\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n [PREFIX] (path) {\n return prefixPath(path, this.prefix)\n }\n\n [HEADER] () {\n if (this.type === 'Directory' && this.portable) {\n this.noMtime = true\n }\n\n this.header = new Header({\n path: this[PREFIX](this.path),\n // only apply the prefix to hard links.\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? null : this.stat.uid,\n gid: this.portable ? null : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? null : this.mtime || this.stat.mtime,\n type: this.type,\n uname: this.portable ? null :\n this.stat.uid === this.myuid ? this.myuser : '',\n atime: this.portable ? null : this.stat.atime,\n ctime: this.portable ? null : this.stat.ctime,\n })\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.header.atime,\n ctime: this.portable ? null : this.header.ctime,\n gid: this.portable ? null : this.header.gid,\n mtime: this.noMtime ? null : this.mtime || this.header.mtime,\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n size: this.header.size,\n uid: this.portable ? null : this.header.uid,\n uname: this.portable ? null : this.header.uname,\n dev: this.portable ? null : this.stat.dev,\n ino: this.portable ? null : this.stat.ino,\n nlink: this.portable ? null : this.stat.nlink,\n }).encode())\n }\n super.write(this.header.block)\n }\n\n [DIRECTORY] () {\n if (this.path.slice(-1) !== '/') {\n this.path += '/'\n }\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [SYMLINK] () {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONREADLINK](linkpath)\n })\n }\n\n [ONREADLINK] (linkpath) {\n this.linkpath = normPath(linkpath)\n this[HEADER]()\n this.end()\n }\n\n [HARDLINK] (linkpath) {\n this.type = 'Link'\n this.linkpath = normPath(path.relative(this.cwd, linkpath))\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [FILE] () {\n if (this.stat.nlink > 1) {\n const linkKey = this.stat.dev + ':' + this.stat.ino\n if (this.linkCache.has(linkKey)) {\n const linkpath = this.linkCache.get(linkKey)\n if (linkpath.indexOf(this.cwd) === 0) {\n return this[HARDLINK](linkpath)\n }\n }\n this.linkCache.set(linkKey, this.absolute)\n }\n\n this[HEADER]()\n if (this.stat.size === 0) {\n return this.end()\n }\n\n this[OPENFILE]()\n }\n\n [OPENFILE] () {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONOPENFILE](fd)\n })\n }\n\n [ONOPENFILE] (fd) {\n this.fd = fd\n if (this[HAD_ERROR]) {\n return this[CLOSE]()\n }\n\n this.blockLen = 512 * Math.ceil(this.stat.size / 512)\n this.blockRemain = this.blockLen\n const bufLen = Math.min(this.blockLen, this.maxReadSize)\n this.buf = Buffer.allocUnsafe(bufLen)\n this.offset = 0\n this.pos = 0\n this.remain = this.stat.size\n this.length = this.buf.length\n this[READ]()\n }\n\n [READ] () {\n const { fd, buf, offset, length, pos } = this\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](() => this.emit('error', er))\n }\n this[ONREAD](bytesRead)\n })\n }\n\n [CLOSE] (cb) {\n fs.close(this.fd, cb)\n }\n\n [ONREAD] (bytesRead) {\n if (bytesRead <= 0 && this.remain > 0) {\n const er = new Error('encountered unexpected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](() => this.emit('error', er))\n }\n\n if (bytesRead > this.remain) {\n const er = new Error('did not encounter expected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](() => this.emit('error', er))\n }\n\n // null out the rest of the buffer, if we could fit the block padding\n // at the end of this loop, we've incremented bytesRead and this.remain\n // to be incremented up to the blockRemain level, as if we had expected\n // to get a null-padded file, and read it until the end. then we will\n // decrement both remain and blockRemain by bytesRead, and know that we\n // reached the expected EOF, without any null buffer to append.\n if (bytesRead === this.remain) {\n for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) {\n this.buf[i + this.offset] = 0\n bytesRead++\n this.remain++\n }\n }\n\n const writeBuf = this.offset === 0 && bytesRead === this.buf.length ?\n this.buf : this.buf.slice(this.offset, this.offset + bytesRead)\n\n const flushed = this.write(writeBuf)\n if (!flushed) {\n this[AWAITDRAIN](() => this[ONDRAIN]())\n } else {\n this[ONDRAIN]()\n }\n }\n\n [AWAITDRAIN] (cb) {\n this.once('drain', cb)\n }\n\n write (writeBuf) {\n if (this.blockRemain < writeBuf.length) {\n const er = new Error('writing more data than expected')\n er.path = this.absolute\n return this.emit('error', er)\n }\n this.remain -= writeBuf.length\n this.blockRemain -= writeBuf.length\n this.pos += writeBuf.length\n this.offset += writeBuf.length\n return super.write(writeBuf)\n }\n\n [ONDRAIN] () {\n if (!this.remain) {\n if (this.blockRemain) {\n super.write(Buffer.alloc(this.blockRemain))\n }\n return this[CLOSE](er => er ? this.emit('error', er) : this.end())\n }\n\n if (this.offset >= this.length) {\n // if we only have a smaller bit left to read, alloc a smaller buffer\n // otherwise, keep it the same length it was before.\n this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length))\n this.offset = 0\n }\n this.length = this.buf.length - this.offset\n this[READ]()\n }\n})\n\nclass WriteEntrySync extends WriteEntry {\n [LSTAT] () {\n this[ONLSTAT](fs.lstatSync(this.absolute))\n }\n\n [SYMLINK] () {\n this[ONREADLINK](fs.readlinkSync(this.absolute))\n }\n\n [OPENFILE] () {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'))\n }\n\n [READ] () {\n let threw = true\n try {\n const { fd, buf, offset, length, pos } = this\n const bytesRead = fs.readSync(fd, buf, offset, length, pos)\n this[ONREAD](bytesRead)\n threw = false\n } finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](() => {})\n } catch (er) {}\n }\n }\n }\n\n [AWAITDRAIN] (cb) {\n cb()\n }\n\n [CLOSE] (cb) {\n fs.closeSync(this.fd)\n cb()\n }\n}\n\nconst WriteEntryTar = warner(class WriteEntryTar extends Minipass {\n constructor (readEntry, opt) {\n opt = opt || {}\n super(opt)\n this.preservePaths = !!opt.preservePaths\n this.portable = !!opt.portable\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n\n this.readEntry = readEntry\n this.type = readEntry.type\n if (this.type === 'Directory' && this.portable) {\n this.noMtime = true\n }\n\n this.prefix = opt.prefix || null\n\n this.path = normPath(readEntry.path)\n this.mode = this[MODE](readEntry.mode)\n this.uid = this.portable ? null : readEntry.uid\n this.gid = this.portable ? null : readEntry.gid\n this.uname = this.portable ? null : readEntry.uname\n this.gname = this.portable ? null : readEntry.gname\n this.size = readEntry.size\n this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime\n this.atime = this.portable ? null : readEntry.atime\n this.ctime = this.portable ? null : readEntry.ctime\n this.linkpath = normPath(readEntry.linkpath)\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n let pathWarn = false\n if (!this.preservePaths) {\n const [root, stripped] = stripAbsolutePath(this.path)\n if (root) {\n this.path = stripped\n pathWarn = root\n }\n }\n\n this.remain = readEntry.size\n this.blockRemain = readEntry.startBlockSize\n\n this.header = new Header({\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? null : this.uid,\n gid: this.portable ? null : this.gid,\n size: this.size,\n mtime: this.noMtime ? null : this.mtime,\n type: this.type,\n uname: this.portable ? null : this.uname,\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n })\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n gid: this.portable ? null : this.gid,\n mtime: this.noMtime ? null : this.mtime,\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n size: this.size,\n uid: this.portable ? null : this.uid,\n uname: this.portable ? null : this.uname,\n dev: this.portable ? null : this.readEntry.dev,\n ino: this.portable ? null : this.readEntry.ino,\n nlink: this.portable ? null : this.readEntry.nlink,\n }).encode())\n }\n\n super.write(this.header.block)\n readEntry.pipe(this)\n }\n\n [PREFIX] (path) {\n return prefixPath(path, this.prefix)\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain) {\n throw new Error('writing more to entry than is appropriate')\n }\n this.blockRemain -= writeLen\n return super.write(data)\n }\n\n end () {\n if (this.blockRemain) {\n super.write(Buffer.alloc(this.blockRemain))\n }\n return super.end()\n }\n})\n\nWriteEntry.Sync = WriteEntrySync\nWriteEntry.Tar = WriteEntryTar\n\nconst getType = stat =>\n stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported'\n\nmodule.exports = WriteEntry\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\n\nclass PackJob {\n constructor (path, absolute) {\n this.path = path || './'\n this.absolute = absolute\n this.entry = null\n this.stat = null\n this.readdir = null\n this.pending = false\n this.ignore = false\n this.piped = false\n }\n}\n\nconst { Minipass } = require('minipass')\nconst zlib = require('minizlib')\nconst ReadEntry = require('./read-entry.js')\nconst WriteEntry = require('./write-entry.js')\nconst WriteEntrySync = WriteEntry.Sync\nconst WriteEntryTar = WriteEntry.Tar\nconst Yallist = require('yallist')\nconst EOF = Buffer.alloc(1024)\nconst ONSTAT = Symbol('onStat')\nconst ENDED = Symbol('ended')\nconst QUEUE = Symbol('queue')\nconst CURRENT = Symbol('current')\nconst PROCESS = Symbol('process')\nconst PROCESSING = Symbol('processing')\nconst PROCESSJOB = Symbol('processJob')\nconst JOBS = Symbol('jobs')\nconst JOBDONE = Symbol('jobDone')\nconst ADDFSENTRY = Symbol('addFSEntry')\nconst ADDTARENTRY = Symbol('addTarEntry')\nconst STAT = Symbol('stat')\nconst READDIR = Symbol('readdir')\nconst ONREADDIR = Symbol('onreaddir')\nconst PIPE = Symbol('pipe')\nconst ENTRY = Symbol('entry')\nconst ENTRYOPT = Symbol('entryOpt')\nconst WRITEENTRYCLASS = Symbol('writeEntryClass')\nconst WRITE = Symbol('write')\nconst ONDRAIN = Symbol('ondrain')\n\nconst fs = require('fs')\nconst path = require('path')\nconst warner = require('./warn-mixin.js')\nconst normPath = require('./normalize-windows-path.js')\n\nconst Pack = warner(class Pack extends Minipass {\n constructor (opt) {\n super(opt)\n opt = opt || Object.create(null)\n this.opt = opt\n this.file = opt.file || ''\n this.cwd = opt.cwd || process.cwd()\n this.maxReadSize = opt.maxReadSize\n this.preservePaths = !!opt.preservePaths\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.prefix = normPath(opt.prefix || '')\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.readdirCache = opt.readdirCache || new Map()\n\n this[WRITEENTRYCLASS] = WriteEntry\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n this.portable = !!opt.portable\n this.zip = null\n\n if (opt.gzip || opt.brotli) {\n if (opt.gzip && opt.brotli) {\n throw new TypeError('gzip and brotli are mutually exclusive')\n }\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object') {\n opt.gzip = {}\n }\n if (this.portable) {\n opt.gzip.portable = true\n }\n this.zip = new zlib.Gzip(opt.gzip)\n }\n if (opt.brotli) {\n if (typeof opt.brotli !== 'object') {\n opt.brotli = {}\n }\n this.zip = new zlib.BrotliCompress(opt.brotli)\n }\n this.zip.on('data', chunk => super.write(chunk))\n this.zip.on('end', _ => super.end())\n this.zip.on('drain', _ => this[ONDRAIN]())\n this.on('resume', _ => this.zip.resume())\n } else {\n this.on('drain', this[ONDRAIN])\n }\n\n this.noDirRecurse = !!opt.noDirRecurse\n this.follow = !!opt.follow\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true\n\n this[QUEUE] = new Yallist()\n this[JOBS] = 0\n this.jobs = +opt.jobs || 4\n this[PROCESSING] = false\n this[ENDED] = false\n }\n\n [WRITE] (chunk) {\n return super.write(chunk)\n }\n\n add (path) {\n this.write(path)\n return this\n }\n\n end (path) {\n if (path) {\n this.write(path)\n }\n this[ENDED] = true\n this[PROCESS]()\n return this\n }\n\n write (path) {\n if (this[ENDED]) {\n throw new Error('write after end')\n }\n\n if (path instanceof ReadEntry) {\n this[ADDTARENTRY](path)\n } else {\n this[ADDFSENTRY](path)\n }\n return this.flowing\n }\n\n [ADDTARENTRY] (p) {\n const absolute = normPath(path.resolve(this.cwd, p.path))\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p)) {\n p.resume()\n } else {\n const job = new PackJob(p.path, absolute, false)\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))\n job.entry.on('end', _ => this[JOBDONE](job))\n this[JOBS] += 1\n this[QUEUE].push(job)\n }\n\n this[PROCESS]()\n }\n\n [ADDFSENTRY] (p) {\n const absolute = normPath(path.resolve(this.cwd, p))\n this[QUEUE].push(new PackJob(p, absolute))\n this[PROCESS]()\n }\n\n [STAT] (job) {\n job.pending = true\n this[JOBS] += 1\n const stat = this.follow ? 'stat' : 'lstat'\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false\n this[JOBS] -= 1\n if (er) {\n this.emit('error', er)\n } else {\n this[ONSTAT](job, stat)\n }\n })\n }\n\n [ONSTAT] (job, stat) {\n this.statCache.set(job.absolute, stat)\n job.stat = stat\n\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat)) {\n job.ignore = true\n }\n\n this[PROCESS]()\n }\n\n [READDIR] (job) {\n job.pending = true\n this[JOBS] += 1\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false\n this[JOBS] -= 1\n if (er) {\n return this.emit('error', er)\n }\n this[ONREADDIR](job, entries)\n })\n }\n\n [ONREADDIR] (job, entries) {\n this.readdirCache.set(job.absolute, entries)\n job.readdir = entries\n this[PROCESS]()\n }\n\n [PROCESS] () {\n if (this[PROCESSING]) {\n return\n }\n\n this[PROCESSING] = true\n for (let w = this[QUEUE].head;\n w !== null && this[JOBS] < this.jobs;\n w = w.next) {\n this[PROCESSJOB](w.value)\n if (w.value.ignore) {\n const p = w.next\n this[QUEUE].removeNode(w)\n w.next = p\n }\n }\n\n this[PROCESSING] = false\n\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip) {\n this.zip.end(EOF)\n } else {\n super.write(EOF)\n super.end()\n }\n }\n }\n\n get [CURRENT] () {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value\n }\n\n [JOBDONE] (job) {\n this[QUEUE].shift()\n this[JOBS] -= 1\n this[PROCESS]()\n }\n\n [PROCESSJOB] (job) {\n if (job.pending) {\n return\n }\n\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped) {\n this[PIPE](job)\n }\n return\n }\n\n if (!job.stat) {\n if (this.statCache.has(job.absolute)) {\n this[ONSTAT](job, this.statCache.get(job.absolute))\n } else {\n this[STAT](job)\n }\n }\n if (!job.stat) {\n return\n }\n\n // filtered out!\n if (job.ignore) {\n return\n }\n\n if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {\n if (this.readdirCache.has(job.absolute)) {\n this[ONREADDIR](job, this.readdirCache.get(job.absolute))\n } else {\n this[READDIR](job)\n }\n if (!job.readdir) {\n return\n }\n }\n\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job)\n if (!job.entry) {\n job.ignore = true\n return\n }\n\n if (job === this[CURRENT] && !job.piped) {\n this[PIPE](job)\n }\n }\n\n [ENTRYOPT] (job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n prefix: this.prefix,\n }\n }\n\n [ENTRY] (job) {\n this[JOBS] += 1\n try {\n return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er))\n } catch (er) {\n this.emit('error', er)\n }\n }\n\n [ONDRAIN] () {\n if (this[CURRENT] && this[CURRENT].entry) {\n this[CURRENT].entry.resume()\n }\n }\n\n // like .pipe() but using super, because our write() is special\n [PIPE] (job) {\n job.piped = true\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = job.path\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n const source = job.entry\n const zip = this.zip\n\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk)) {\n source.pause()\n }\n })\n } else {\n source.on('data', chunk => {\n if (!super.write(chunk)) {\n source.pause()\n }\n })\n }\n }\n\n pause () {\n if (this.zip) {\n this.zip.pause()\n }\n return super.pause()\n }\n})\n\nclass PackSync extends Pack {\n constructor (opt) {\n super(opt)\n this[WRITEENTRYCLASS] = WriteEntrySync\n }\n\n // pause/resume are no-ops in sync streams.\n pause () {}\n resume () {}\n\n [STAT] (job) {\n const stat = this.follow ? 'statSync' : 'lstatSync'\n this[ONSTAT](job, fs[stat](job.absolute))\n }\n\n [READDIR] (job, stat) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute))\n }\n\n // gotta get it all in this tick\n [PIPE] (job) {\n const source = job.entry\n const zip = this.zip\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = job.path\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk)\n })\n } else {\n source.on('data', chunk => {\n super[WRITE](chunk)\n })\n }\n }\n}\n\nPack.Sync = PackSync\n\nmodule.exports = Pack\n", "'use strict'\nconst MiniPass = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nlet writev = fs.writev\n/* istanbul ignore next */\nif (!writev) {\n // This entire block can be removed if support for earlier than Node.js\n // 12.9.0 is not needed.\n const binding = process.binding('fs')\n const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback\n\n writev = (fd, iovec, pos, cb) => {\n const done = (er, bw) => cb(er, bw, iovec)\n const req = new FSReqWrap()\n req.oncomplete = done\n binding.writeBuffers(fd, iovec, pos, req)\n }\n}\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nclass ReadStream extends MiniPass {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n\n this.readable = true\n this.writable = false\n\n if (typeof path !== 'string')\n throw new TypeError('path must be a string')\n\n this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_path] = path\n this[_readSize] = opt.readSize || 16*1024*1024\n this[_reading] = false\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n this[_remain] = this[_size]\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n if (typeof this[_fd] === 'number')\n this[_read]()\n else\n this[_open]()\n }\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n write () {\n throw new TypeError('this is a readable stream')\n }\n\n end () {\n throw new TypeError('this is a readable stream')\n }\n\n [_open] () {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_read]()\n }\n }\n\n [_makeBuf] () {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n }\n\n [_read] () {\n if (!this[_reading]) {\n this[_reading] = true\n const buf = this[_makeBuf]()\n /* istanbul ignore if */\n if (buf.length === 0)\n return process.nextTick(() => this[_onread](null, 0, buf))\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) =>\n this[_onread](er, br, buf))\n }\n }\n\n [_onread] (er, br, buf) {\n this[_reading] = false\n if (er)\n this[_onerror](er)\n else if (this[_handleChunk](br, buf))\n this[_read]()\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n\n [_onerror] (er) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk] (br, buf) {\n let ret = false\n // no effect if infinite\n this[_remain] -= br\n if (br > 0)\n ret = super.write(br < buf.length ? buf.slice(0, br) : buf)\n\n if (br === 0 || this[_remain] <= 0) {\n ret = false\n this[_close]()\n super.end()\n }\n\n return ret\n }\n\n emit (ev, data) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n break\n\n case 'drain':\n if (typeof this[_fd] === 'number')\n this[_read]()\n break\n\n case 'error':\n if (this[_errored])\n return\n this[_errored] = true\n return super.emit(ev, data)\n\n default:\n return super.emit(ev, data)\n }\n }\n}\n\nclass ReadStreamSync extends ReadStream {\n [_open] () {\n let threw = true\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'))\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_read] () {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* istanbul ignore next */\n const br = buf.length === 0 ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null)\n if (!this[_handleChunk](br, buf))\n break\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nclass WriteStream extends EE {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n this.readable = false\n this.writable = true\n this[_errored] = false\n this[_writing] = false\n this[_ended] = false\n this[_needDrain] = false\n this[_queue] = []\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : null\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n if (this[_fd] === null)\n this[_open]()\n }\n\n emit (ev, data) {\n if (ev === 'error') {\n if (this[_errored])\n return\n this[_errored] = true\n }\n return super.emit(ev, data)\n }\n\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n [_onerror] (er) {\n this[_close]()\n this[_writing] = true\n this.emit('error', er)\n }\n\n [_open] () {\n fs.open(this[_path], this[_flags], this[_mode],\n (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er && er.code === 'ENOENT') {\n this[_flags] = 'w'\n this[_open]()\n } else if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_flush]()\n }\n }\n\n end (buf, enc) {\n if (buf)\n this.write(buf, enc)\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] && !this[_queue].length &&\n typeof this[_fd] === 'number')\n this[_onwrite](null, 0)\n return this\n }\n\n write (buf, enc) {\n if (typeof buf === 'string')\n buf = Buffer.from(buf, enc)\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === null || this[_writing] || this[_queue].length) {\n this[_queue].push(buf)\n this[_needDrain] = true\n return false\n }\n\n this[_writing] = true\n this[_write](buf)\n return true\n }\n\n [_write] (buf) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n this[_onwrite](er, bw))\n }\n\n [_onwrite] (er, bw) {\n if (er)\n this[_onerror](er)\n else {\n if (this[_pos] !== null)\n this[_pos] += bw\n if (this[_queue].length)\n this[_flush]()\n else {\n this[_writing] = false\n\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true\n this[_close]()\n this.emit('finish')\n } else if (this[_needDrain]) {\n this[_needDrain] = false\n this.emit('drain')\n }\n }\n }\n }\n\n [_flush] () {\n if (this[_queue].length === 0) {\n if (this[_ended])\n this[_onwrite](null, 0)\n } else if (this[_queue].length === 1)\n this[_write](this[_queue].pop())\n else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd], iovec, this[_pos],\n (er, bw) => this[_onwrite](er, bw))\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n}\n\nclass WriteStreamSync extends WriteStream {\n [_open] () {\n let fd\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n } catch (er) {\n if (er.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else\n throw er\n }\n } else\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n\n this[_onopen](null, fd)\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write] (buf) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](null,\n fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n threw = false\n } finally {\n if (threw)\n try { this[_close]() } catch (_) {}\n }\n }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n", "'use strict'\n\n// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in. We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a Yallist of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry. The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\n\nconst warner = require('./warn-mixin.js')\nconst Header = require('./header.js')\nconst EE = require('events')\nconst Yallist = require('yallist')\nconst maxMetaEntrySize = 1024 * 1024\nconst Entry = require('./read-entry.js')\nconst Pax = require('./pax.js')\nconst zlib = require('minizlib')\nconst { nextTick } = require('process')\n\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\nconst STATE = Symbol('state')\nconst WRITEENTRY = Symbol('writeEntry')\nconst READENTRY = Symbol('readEntry')\nconst NEXTENTRY = Symbol('nextEntry')\nconst PROCESSENTRY = Symbol('processEntry')\nconst EX = Symbol('extendedHeader')\nconst GEX = Symbol('globalExtendedHeader')\nconst META = Symbol('meta')\nconst EMITMETA = Symbol('emitMeta')\nconst BUFFER = Symbol('buffer')\nconst QUEUE = Symbol('queue')\nconst ENDED = Symbol('ended')\nconst EMITTEDEND = Symbol('emittedEnd')\nconst EMIT = Symbol('emit')\nconst UNZIP = Symbol('unzip')\nconst CONSUMECHUNK = Symbol('consumeChunk')\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub')\nconst CONSUMEBODY = Symbol('consumeBody')\nconst CONSUMEMETA = Symbol('consumeMeta')\nconst CONSUMEHEADER = Symbol('consumeHeader')\nconst CONSUMING = Symbol('consuming')\nconst BUFFERCONCAT = Symbol('bufferConcat')\nconst MAYBEEND = Symbol('maybeEnd')\nconst WRITING = Symbol('writing')\nconst ABORTED = Symbol('aborted')\nconst DONE = Symbol('onDone')\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry')\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock')\nconst SAW_EOF = Symbol('sawEOF')\nconst CLOSESTREAM = Symbol('closeStream')\n\nconst noop = _ => true\n\nmodule.exports = warner(class Parser extends EE {\n constructor (opt) {\n opt = opt || {}\n super(opt)\n\n this.file = opt.file || ''\n\n // set to boolean false when an entry starts. 1024 bytes of \\0\n // is technically a valid tarball, albeit a boring one.\n this[SAW_VALID_ENTRY] = null\n\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, _ => {\n if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {\n // either less than 1 block of data, or all entries were invalid.\n // Either way, probably not even a tarball.\n this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format')\n }\n })\n\n if (opt.ondone) {\n this.on(DONE, opt.ondone)\n } else {\n this.on(DONE, _ => {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n })\n }\n\n this.strict = !!opt.strict\n this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize\n this.filter = typeof opt.filter === 'function' ? opt.filter : noop\n // Unlike gzip, brotli doesn't have any magic bytes to identify it\n // Users need to explicitly tell us they're extracting a brotli file\n // Or we infer from the file extension\n const isTBR = (opt.file && (\n opt.file.endsWith('.tar.br') || opt.file.endsWith('.tbr')))\n // if it's a tbr file it MIGHT be brotli, but we don't know until\n // we look at it and verify it's not a valid tar file.\n this.brotli = !opt.gzip && opt.brotli !== undefined ? opt.brotli\n : isTBR ? undefined\n : false\n\n // have to set this so that streams are ok piping into it\n this.writable = true\n this.readable = false\n\n this[QUEUE] = new Yallist()\n this[BUFFER] = null\n this[READENTRY] = null\n this[WRITEENTRY] = null\n this[STATE] = 'begin'\n this[META] = ''\n this[EX] = null\n this[GEX] = null\n this[ENDED] = false\n this[UNZIP] = null\n this[ABORTED] = false\n this[SAW_NULL_BLOCK] = false\n this[SAW_EOF] = false\n\n this.on('end', () => this[CLOSESTREAM]())\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n if (typeof opt.onentry === 'function') {\n this.on('entry', opt.onentry)\n }\n }\n\n [CONSUMEHEADER] (chunk, position) {\n if (this[SAW_VALID_ENTRY] === null) {\n this[SAW_VALID_ENTRY] = false\n }\n let header\n try {\n header = new Header(chunk, position, this[EX], this[GEX])\n } catch (er) {\n return this.warn('TAR_ENTRY_INVALID', er)\n }\n\n if (header.nullBlock) {\n if (this[SAW_NULL_BLOCK]) {\n this[SAW_EOF] = true\n // ending an archive with no entries. pointless, but legal.\n if (this[STATE] === 'begin') {\n this[STATE] = 'header'\n }\n this[EMIT]('eof')\n } else {\n this[SAW_NULL_BLOCK] = true\n this[EMIT]('nullBlock')\n }\n } else {\n this[SAW_NULL_BLOCK] = false\n if (!header.cksumValid) {\n this.warn('TAR_ENTRY_INVALID', 'checksum failure', { header })\n } else if (!header.path) {\n this.warn('TAR_ENTRY_INVALID', 'path is required', { header })\n } else {\n const type = header.type\n if (/^(Symbolic)?Link$/.test(type) && !header.linkpath) {\n this.warn('TAR_ENTRY_INVALID', 'linkpath required', { header })\n } else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath) {\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', { header })\n } else {\n const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])\n\n // we do this for meta & ignored entries as well, because they\n // are still valid tar, or else we wouldn't know to ignore them\n if (!this[SAW_VALID_ENTRY]) {\n if (entry.remain) {\n // this might be the one!\n const onend = () => {\n if (!entry.invalid) {\n this[SAW_VALID_ENTRY] = true\n }\n }\n entry.on('end', onend)\n } else {\n this[SAW_VALID_ENTRY] = true\n }\n }\n\n if (entry.meta) {\n if (entry.size > this.maxMetaEntrySize) {\n entry.ignore = true\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = 'ignore'\n entry.resume()\n } else if (entry.size > 0) {\n this[META] = ''\n entry.on('data', c => this[META] += c)\n this[STATE] = 'meta'\n }\n } else {\n this[EX] = null\n entry.ignore = entry.ignore || !this.filter(entry.path, entry)\n\n if (entry.ignore) {\n // probably valid, just not something we care about\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = entry.remain ? 'ignore' : 'header'\n entry.resume()\n } else {\n if (entry.remain) {\n this[STATE] = 'body'\n } else {\n this[STATE] = 'header'\n entry.end()\n }\n\n if (!this[READENTRY]) {\n this[QUEUE].push(entry)\n this[NEXTENTRY]()\n } else {\n this[QUEUE].push(entry)\n }\n }\n }\n }\n }\n }\n }\n\n [CLOSESTREAM] () {\n nextTick(() => this.emit('close'))\n }\n\n [PROCESSENTRY] (entry) {\n let go = true\n\n if (!entry) {\n this[READENTRY] = null\n go = false\n } else if (Array.isArray(entry)) {\n this.emit.apply(this, entry)\n } else {\n this[READENTRY] = entry\n this.emit('entry', entry)\n if (!entry.emittedEnd) {\n entry.on('end', _ => this[NEXTENTRY]())\n go = false\n }\n }\n\n return go\n }\n\n [NEXTENTRY] () {\n do {} while (this[PROCESSENTRY](this[QUEUE].shift()))\n\n if (!this[QUEUE].length) {\n // At this point, there's nothing in the queue, but we may have an\n // entry which is being consumed (readEntry).\n // If we don't, then we definitely can handle more data.\n // If we do, and either it's flowing, or it has never had any data\n // written to it, then it needs more.\n // The only other possibility is that it has returned false from a\n // write() call, so we wait for the next drain to continue.\n const re = this[READENTRY]\n const drainNow = !re || re.flowing || re.size === re.remain\n if (drainNow) {\n if (!this[WRITING]) {\n this.emit('drain')\n }\n } else {\n re.once('drain', _ => this.emit('drain'))\n }\n }\n }\n\n [CONSUMEBODY] (chunk, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY]\n const br = entry.blockRemain\n const c = (br >= chunk.length && position === 0) ? chunk\n : chunk.slice(position, position + br)\n\n entry.write(c)\n\n if (!entry.blockRemain) {\n this[STATE] = 'header'\n this[WRITEENTRY] = null\n entry.end()\n }\n\n return c.length\n }\n\n [CONSUMEMETA] (chunk, position) {\n const entry = this[WRITEENTRY]\n const ret = this[CONSUMEBODY](chunk, position)\n\n // if we finished, then the entry is reset\n if (!this[WRITEENTRY]) {\n this[EMITMETA](entry)\n }\n\n return ret\n }\n\n [EMIT] (ev, data, extra) {\n if (!this[QUEUE].length && !this[READENTRY]) {\n this.emit(ev, data, extra)\n } else {\n this[QUEUE].push([ev, data, extra])\n }\n }\n\n [EMITMETA] (entry) {\n this[EMIT]('meta', this[META])\n switch (entry.type) {\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this[EX] = Pax.parse(this[META], this[EX], false)\n break\n\n case 'GlobalExtendedHeader':\n this[GEX] = Pax.parse(this[META], this[GEX], true)\n break\n\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].path = this[META].replace(/\\0.*/, '')\n break\n\n case 'NextFileHasLongLinkpath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].linkpath = this[META].replace(/\\0.*/, '')\n break\n\n /* istanbul ignore next */\n default: throw new Error('unknown meta: ' + entry.type)\n }\n }\n\n abort (error) {\n this[ABORTED] = true\n this.emit('abort', error)\n // always throws, even in non-strict mode\n this.warn('TAR_ABORT', error, { recoverable: false })\n }\n\n write (chunk) {\n if (this[ABORTED]) {\n return\n }\n\n // first write, might be gzipped\n const needSniff = this[UNZIP] === null ||\n this.brotli === undefined && this[UNZIP] === false\n if (needSniff && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk])\n this[BUFFER] = null\n }\n if (chunk.length < gzipHeader.length) {\n this[BUFFER] = chunk\n return true\n }\n\n // look for gzip header\n for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i]) {\n this[UNZIP] = false\n }\n }\n\n const maybeBrotli = this.brotli === undefined\n if (this[UNZIP] === false && maybeBrotli) {\n // read the first header to see if it's a valid tar file. If so,\n // we can safely assume that it's not actually brotli, despite the\n // .tbr or .tar.br file extension.\n // if we ended before getting a full chunk, yes, def brotli\n if (chunk.length < 512) {\n if (this[ENDED]) {\n this.brotli = true\n } else {\n this[BUFFER] = chunk\n return true\n }\n } else {\n // if it's tar, it's pretty reliably not brotli, chances of\n // that happening are astronomical.\n try {\n new Header(chunk.slice(0, 512))\n this.brotli = false\n } catch (_) {\n this.brotli = true\n }\n }\n }\n\n if (this[UNZIP] === null || (this[UNZIP] === false && this.brotli)) {\n const ended = this[ENDED]\n this[ENDED] = false\n this[UNZIP] = this[UNZIP] === null\n ? new zlib.Unzip()\n : new zlib.BrotliDecompress()\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n this[UNZIP].on('error', er => this.abort(er))\n this[UNZIP].on('end', _ => {\n this[ENDED] = true\n this[CONSUMECHUNK]()\n })\n this[WRITING] = true\n const ret = this[UNZIP][ended ? 'end' : 'write'](chunk)\n this[WRITING] = false\n return ret\n }\n }\n\n this[WRITING] = true\n if (this[UNZIP]) {\n this[UNZIP].write(chunk)\n } else {\n this[CONSUMECHUNK](chunk)\n }\n this[WRITING] = false\n\n // return false if there's a queue, or if the current entry isn't flowing\n const ret =\n this[QUEUE].length ? false :\n this[READENTRY] ? this[READENTRY].flowing :\n true\n\n // if we have no queue, then that means a clogged READENTRY\n if (!ret && !this[QUEUE].length) {\n this[READENTRY].once('drain', _ => this.emit('drain'))\n }\n\n return ret\n }\n\n [BUFFERCONCAT] (c) {\n if (c && !this[ABORTED]) {\n this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n }\n }\n\n [MAYBEEND] () {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\n this[EMITTEDEND] = true\n const entry = this[WRITEENTRY]\n if (entry && entry.blockRemain) {\n // truncated, likely a damaged file\n const have = this[BUFFER] ? this[BUFFER].length : 0\n this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${\n entry.blockRemain} more bytes, only ${have} available)`, { entry })\n if (this[BUFFER]) {\n entry.write(this[BUFFER])\n }\n entry.end()\n }\n this[EMIT](DONE)\n }\n }\n\n [CONSUMECHUNK] (chunk) {\n if (this[CONSUMING]) {\n this[BUFFERCONCAT](chunk)\n } else if (!chunk && !this[BUFFER]) {\n this[MAYBEEND]()\n } else {\n this[CONSUMING] = true\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk)\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n } else {\n this[CONSUMECHUNKSUB](chunk)\n }\n\n while (this[BUFFER] &&\n this[BUFFER].length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n }\n this[CONSUMING] = false\n }\n\n if (!this[BUFFER] || this[ENDED]) {\n this[MAYBEEND]()\n }\n }\n\n [CONSUMECHUNKSUB] (chunk) {\n // we know that we are in CONSUMING mode, so anything written goes into\n // the buffer. Advance the position and put any remainder in the buffer.\n let position = 0\n const length = chunk.length\n while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {\n switch (this[STATE]) {\n case 'begin':\n case 'header':\n this[CONSUMEHEADER](chunk, position)\n position += 512\n break\n\n case 'ignore':\n case 'body':\n position += this[CONSUMEBODY](chunk, position)\n break\n\n case 'meta':\n position += this[CONSUMEMETA](chunk, position)\n break\n\n /* istanbul ignore next */\n default:\n throw new Error('invalid state: ' + this[STATE])\n }\n }\n\n if (position < length) {\n if (this[BUFFER]) {\n this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])\n } else {\n this[BUFFER] = chunk.slice(position)\n }\n }\n }\n\n end (chunk) {\n if (!this[ABORTED]) {\n if (this[UNZIP]) {\n this[UNZIP].end(chunk)\n } else {\n this[ENDED] = true\n if (this.brotli === undefined) chunk = chunk || Buffer.alloc(0)\n this.write(chunk)\n }\n }\n }\n})\n", "'use strict'\n\n// XXX: This shares a lot in common with extract.js\n// maybe some DRY opportunity here?\n\n// tar -t\nconst hlo = require('./high-level-opt.js')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function') {\n cb = opt_, files = null, opt_ = {}\n } else if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (typeof files === 'function') {\n cb = files, files = null\n }\n\n if (!files) {\n files = []\n } else {\n files = Array.from(files)\n }\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n if (files.length) {\n filesFilter(opt, files)\n }\n\n if (!opt.noResume) {\n onentryFunction(opt)\n }\n\n return opt.file && opt.sync ? listFileSync(opt)\n : opt.file ? listFile(opt, cb)\n : list(opt)\n}\n\nconst onentryFunction = opt => {\n const onentry = opt.onentry\n opt.onentry = onentry ? e => {\n onentry(e)\n e.resume()\n } : e => e.resume()\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [stripSlash(f), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file))\n : file => mapHas(stripSlash(file))\n}\n\nconst listFileSync = opt => {\n const p = list(opt)\n const file = opt.file\n let threw = true\n let fd\n try {\n const stat = fs.statSync(file)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n if (stat.size < readSize) {\n p.end(fs.readFileSync(file))\n } else {\n let pos = 0\n const buf = Buffer.allocUnsafe(readSize)\n fd = fs.openSync(file, 'r')\n while (pos < stat.size) {\n const bytesRead = fs.readSync(fd, buf, 0, readSize, pos)\n pos += bytesRead\n p.write(buf.slice(0, bytesRead))\n }\n p.end()\n }\n threw = false\n } finally {\n if (threw && fd) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst listFile = (opt, cb) => {\n const parse = new Parser(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n parse.on('error', reject)\n parse.on('end', resolve)\n\n fs.stat(file, (er, stat) => {\n if (er) {\n reject(er)\n } else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(parse)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst list = opt => new Parser(opt)\n", "'use strict'\n\n// tar -c\nconst hlo = require('./high-level-opt.js')\n\nconst Pack = require('./pack.js')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof files === 'function') {\n cb = files\n }\n\n if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n return opt.file && opt.sync ? createFileSync(opt, files)\n : opt.file ? createFile(opt, files, cb)\n : opt.sync ? createSync(opt, files)\n : create(opt, files)\n}\n\nconst createFileSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n const stream = new fsm.WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst createFile = (opt, files, cb) => {\n const p = new Pack(opt)\n const stream = new fsm.WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n\n const promise = new Promise((res, rej) => {\n stream.on('error', rej)\n stream.on('close', res)\n p.on('error', rej)\n })\n\n addFilesAsync(p, files)\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else {\n p.add(file)\n }\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.slice(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else {\n p.add(file)\n }\n }\n p.end()\n}\n\nconst createSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n addFilesSync(p, files)\n return p\n}\n\nconst create = (opt, files) => {\n const p = new Pack(opt)\n addFilesAsync(p, files)\n return p\n}\n", "'use strict'\n\n// tar -r\nconst hlo = require('./high-level-opt.js')\nconst Pack = require('./pack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst Header = require('./header.js')\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file) {\n throw new TypeError('file is required')\n }\n\n if (opt.gzip || opt.brotli || opt.file.endsWith('.br') || opt.file.endsWith('.tbr')) {\n throw new TypeError('cannot append to compressed archives')\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n return opt.sync ? replaceSync(opt, files)\n : replace(opt, files, cb)\n}\n\nconst replaceSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if (er.code === 'ENOENT') {\n fd = fs.openSync(opt.file, 'w+')\n } else {\n throw er\n }\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {\n throw new Error('cannot append to compressed archives')\n }\n\n if (!bytes) {\n break POSITION\n }\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid) {\n break\n }\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > st.size) {\n break\n }\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache) {\n opt.mtimeCache.set(h.path, h.mtime)\n }\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new fsm.WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst replace = (opt, files, cb) => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er) {\n fs.close(fd, _ => cb_(er))\n } else {\n cb_(null, pos)\n }\n }\n\n let position = 0\n if (size === 0) {\n return cb(null, 0)\n }\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er, bytes) => {\n if (er) {\n return cb(er)\n }\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd, headBuf, bufPos, headBuf.length - bufPos,\n position + bufPos, onread\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {\n return cb(new Error('cannot append to compressed archives'))\n }\n\n // truncated header\n if (bufPos < 512) {\n return cb(null, position)\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid) {\n return cb(null, position)\n }\n\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > size) {\n return cb(null, position)\n }\n\n position += entryBlockSize + 512\n if (position >= size) {\n return cb(null, position)\n }\n\n if (opt.mtimeCache) {\n opt.mtimeCache.set(h.path, h.mtime)\n }\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er) {\n return reject(er)\n }\n\n fs.fstat(fd, (er, st) => {\n if (er) {\n return fs.close(fd, () => reject(er))\n }\n\n getPos(fd, st.size, (er, position) => {\n if (er) {\n return reject(er)\n }\n const stream = new fsm.WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else {\n p.add(file)\n }\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.slice(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else {\n p.add(file)\n }\n }\n p.end()\n}\n", "'use strict'\n\n// tar -u\n\nconst hlo = require('./high-level-opt.js')\nconst r = require('./replace.js')\n// just call tar.r with the filter and mtimeCache\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file) {\n throw new TypeError('file is required')\n }\n\n if (opt.gzip || opt.brotli || opt.file.endsWith('.br') || opt.file.endsWith('.tbr')) {\n throw new TypeError('cannot append to compressed archives')\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n mtimeFilter(opt)\n return r(opt, files, cb)\n}\n\nconst mtimeFilter = opt => {\n const filter = opt.filter\n\n if (!opt.mtimeCache) {\n opt.mtimeCache = new Map()\n }\n\n opt.filter = filter ? (path, stat) =>\n filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)\n : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)\n}\n", "const { promisify } = require('util')\nconst fs = require('fs')\nconst optsArg = opts => {\n if (!opts)\n opts = { mode: 0o777, fs }\n else if (typeof opts === 'object')\n opts = { mode: 0o777, fs, ...opts }\n else if (typeof opts === 'number')\n opts = { mode: opts, fs }\n else if (typeof opts === 'string')\n opts = { mode: parseInt(opts, 8), fs }\n else\n throw new TypeError('invalid options argument')\n\n opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir\n opts.mkdirAsync = promisify(opts.mkdir)\n opts.stat = opts.stat || opts.fs.stat || fs.stat\n opts.statAsync = promisify(opts.stat)\n opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync\n opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync\n return opts\n}\nmodule.exports = optsArg\n", "const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform\nconst { resolve, parse } = require('path')\nconst pathArg = path => {\n if (/\\0/.test(path)) {\n // simulate same failure that node raises\n throw Object.assign(\n new TypeError('path must be a string without null bytes'),\n {\n path,\n code: 'ERR_INVALID_ARG_VALUE',\n }\n )\n }\n\n path = resolve(path)\n if (platform === 'win32') {\n const badWinChars = /[*|\"<>?:]/\n const {root} = parse(path)\n if (badWinChars.test(path.substr(root.length))) {\n throw Object.assign(new Error('Illegal characters in path.'), {\n path,\n code: 'EINVAL',\n })\n }\n }\n\n return path\n}\nmodule.exports = pathArg\n", "const {dirname} = require('path')\n\nconst findMade = (opts, parent, path = undefined) => {\n // we never want the 'made' return value to be a root directory\n if (path === parent)\n return Promise.resolve()\n\n return opts.statAsync(parent).then(\n st => st.isDirectory() ? path : undefined, // will fail later\n er => er.code === 'ENOENT'\n ? findMade(opts, dirname(parent), parent)\n : undefined\n )\n}\n\nconst findMadeSync = (opts, parent, path = undefined) => {\n if (path === parent)\n return undefined\n\n try {\n return opts.statSync(parent).isDirectory() ? path : undefined\n } catch (er) {\n return er.code === 'ENOENT'\n ? findMadeSync(opts, dirname(parent), parent)\n : undefined\n }\n}\n\nmodule.exports = {findMade, findMadeSync}\n", "const {dirname} = require('path')\n\nconst mkdirpManual = (path, opts, made) => {\n opts.recursive = false\n const parent = dirname(path)\n if (parent === path) {\n return opts.mkdirAsync(path, opts).catch(er => {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n })\n }\n\n return opts.mkdirAsync(path, opts).then(() => made || path, er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(parent, opts)\n .then(made => mkdirpManual(path, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n return opts.statAsync(path).then(st => {\n if (st.isDirectory())\n return made\n else\n throw er\n }, () => { throw er })\n })\n}\n\nconst mkdirpManualSync = (path, opts, made) => {\n const parent = dirname(path)\n opts.recursive = false\n\n if (parent === path) {\n try {\n return opts.mkdirSync(path, opts)\n } catch (er) {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n else\n return\n }\n }\n\n try {\n opts.mkdirSync(path, opts)\n return made || path\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n try {\n if (!opts.statSync(path).isDirectory())\n throw er\n } catch (_) {\n throw er\n }\n }\n}\n\nmodule.exports = {mkdirpManual, mkdirpManualSync}\n", "const {dirname} = require('path')\nconst {findMade, findMadeSync} = require('./find-made.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')\n\nconst mkdirpNative = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirAsync(path, opts)\n\n return findMade(opts, path).then(made =>\n opts.mkdirAsync(path, opts).then(() => made)\n .catch(er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(path, opts)\n else\n throw er\n }))\n}\n\nconst mkdirpNativeSync = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirSync(path, opts)\n\n const made = findMadeSync(opts, path)\n try {\n opts.mkdirSync(path, opts)\n return made\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts)\n else\n throw er\n }\n}\n\nmodule.exports = {mkdirpNative, mkdirpNativeSync}\n", "const fs = require('fs')\n\nconst version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version\nconst versArr = version.replace(/^v/, '').split('.')\nconst hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12\n\nconst useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir\nconst useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync\n\nmodule.exports = {useNative, useNativeSync}\n", "const optsArg = require('./lib/opts-arg.js')\nconst pathArg = require('./lib/path-arg.js')\n\nconst {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')\nconst {useNative, useNativeSync} = require('./lib/use-native.js')\n\n\nconst mkdirp = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNative(opts)\n ? mkdirpNative(path, opts)\n : mkdirpManual(path, opts)\n}\n\nconst mkdirpSync = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNativeSync(opts)\n ? mkdirpNativeSync(path, opts)\n : mkdirpManualSync(path, opts)\n}\n\nmkdirp.sync = mkdirpSync\nmkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))\nmkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))\nmkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))\nmkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))\n\nmodule.exports = mkdirp\n", "'use strict'\nconst fs = require('fs')\nconst path = require('path')\n\n/* istanbul ignore next */\nconst LCHOWN = fs.lchown ? 'lchown' : 'chown'\n/* istanbul ignore next */\nconst LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync'\n\n/* istanbul ignore next */\nconst needEISDIRHandled = fs.lchown &&\n !process.version.match(/v1[1-9]+\\./) &&\n !process.version.match(/v10\\.[6-9]/)\n\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs[LCHOWNSYNC](path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst chownSync = (path, uid, gid) => {\n try {\n return fs.chownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst handleEISDIR =\n needEISDIRHandled ? (path, uid, gid, cb) => er => {\n // Node prior to v10 had a very questionable implementation of\n // fs.lchown, which would always try to call fs.open on a directory\n // Fall back to fs.chown in those cases.\n if (!er || er.code !== 'EISDIR')\n cb(er)\n else\n fs.chown(path, uid, gid, cb)\n }\n : (_, __, ___, cb) => cb\n\n/* istanbul ignore next */\nconst handleEISDirSync =\n needEISDIRHandled ? (path, uid, gid) => {\n try {\n return lchownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'EISDIR')\n throw er\n chownSync(path, uid, gid)\n }\n }\n : (path, uid, gid) => lchownSync(path, uid, gid)\n\n// fs.readdir could only accept an options object as of node v6\nconst nodeVersion = process.version\nlet readdir = (path, options, cb) => fs.readdir(path, options, cb)\nlet readdirSync = (path, options) => fs.readdirSync(path, options)\n/* istanbul ignore next */\nif (/^v4\\./.test(nodeVersion))\n readdir = (path, options, cb) => fs.readdir(path, cb)\n\nconst chown = (cpath, uid, gid, cb) => {\n fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er.code !== 'ENOENT' ? er : null)\n }))\n}\n\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (typeof child === 'string')\n return fs.lstat(path.resolve(p, child), (er, stats) => {\n // Skip ENOENT error\n if (er)\n return cb(er.code !== 'ENOENT' ? er : null)\n stats.name = child\n chownrKid(p, stats, uid, gid, cb)\n })\n\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, er => {\n if (er)\n return cb(er)\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n })\n } else {\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n }\n}\n\n\nconst chownr = (p, uid, gid, cb) => {\n readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb()\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er)\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb)\n\n let len = children.length\n let errState = null\n const then = er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (-- len === 0)\n return chown(p, uid, gid, cb)\n }\n\n children.forEach(child => chownrKid(p, child, uid, gid, then))\n })\n}\n\nconst chownrKidSync = (p, child, uid, gid) => {\n if (typeof child === 'string') {\n try {\n const stats = fs.lstatSync(path.resolve(p, child))\n stats.name = child\n child = stats\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else\n throw er\n }\n }\n\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid)\n\n handleEISDirSync(path.resolve(p, child.name), uid, gid)\n}\n\nconst chownrSync = (p, uid, gid) => {\n let children\n try {\n children = readdirSync(p, { withFileTypes: true })\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP')\n return handleEISDirSync(p, uid, gid)\n else\n throw er\n }\n\n if (children && children.length)\n children.forEach(child => chownrKidSync(p, child, uid, gid))\n\n return handleEISDirSync(p, uid, gid)\n}\n\nmodule.exports = chownr\nchownr.sync = chownrSync\n", "'use strict'\n// wrapper around mkdirp for tar's needs.\n\n// TODO: This should probably be a class, not functionally\n// passing around state in a gazillion args.\n\nconst mkdirp = require('mkdirp')\nconst fs = require('fs')\nconst path = require('path')\nconst chownr = require('chownr')\nconst normPath = require('./normalize-windows-path.js')\n\nclass SymlinkError extends Error {\n constructor (symlink, path) {\n super('Cannot extract through symbolic link')\n this.path = path\n this.symlink = symlink\n }\n\n get name () {\n return 'SylinkError'\n }\n}\n\nclass CwdError extends Error {\n constructor (path, code) {\n super(code + ': Cannot cd into \\'' + path + '\\'')\n this.path = path\n this.code = code\n }\n\n get name () {\n return 'CwdError'\n }\n}\n\nconst cGet = (cache, key) => cache.get(normPath(key))\nconst cSet = (cache, key, val) => cache.set(normPath(key), val)\n\nconst checkCwd = (dir, cb) => {\n fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory()) {\n er = new CwdError(dir, er && er.code || 'ENOTDIR')\n }\n cb(er)\n })\n}\n\nmodule.exports = (dir, opt, cb) => {\n dir = normPath(dir)\n\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = normPath(opt.cwd)\n\n const done = (er, created) => {\n if (er) {\n cb(er)\n } else {\n cSet(cache, dir, true)\n if (created && doChown) {\n chownr(created, uid, gid, er => done(er))\n } else if (needChmod) {\n fs.chmod(dir, mode, cb)\n } else {\n cb()\n }\n }\n }\n\n if (cache && cGet(cache, dir) === true) {\n return done()\n }\n\n if (dir === cwd) {\n return checkCwd(dir, done)\n }\n\n if (preserve) {\n return mkdirp(dir, { mode }).then(made => done(null, made), done)\n }\n\n const sub = normPath(path.relative(cwd, dir))\n const parts = sub.split('/')\n mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)\n}\n\nconst mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {\n if (!parts.length) {\n return cb(null, created)\n }\n const p = parts.shift()\n const part = normPath(path.resolve(base + '/' + p))\n if (cGet(cache, part)) {\n return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n}\n\nconst onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {\n if (er) {\n fs.lstat(part, (statEr, st) => {\n if (statEr) {\n statEr.path = statEr.path && normPath(statEr.path)\n cb(statEr)\n } else if (st.isDirectory()) {\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n } else if (unlink) {\n fs.unlink(part, er => {\n if (er) {\n return cb(er)\n }\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n })\n } else if (st.isSymbolicLink()) {\n return cb(new SymlinkError(part, part + '/' + parts.join('/')))\n } else {\n cb(er)\n }\n })\n } else {\n created = created || part\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n}\n\nconst checkCwdSync = dir => {\n let ok = false\n let code = 'ENOTDIR'\n try {\n ok = fs.statSync(dir).isDirectory()\n } catch (er) {\n code = er.code\n } finally {\n if (!ok) {\n throw new CwdError(dir, code)\n }\n }\n}\n\nmodule.exports.sync = (dir, opt) => {\n dir = normPath(dir)\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = normPath(opt.cwd)\n\n const done = (created) => {\n cSet(cache, dir, true)\n if (created && doChown) {\n chownr.sync(created, uid, gid)\n }\n if (needChmod) {\n fs.chmodSync(dir, mode)\n }\n }\n\n if (cache && cGet(cache, dir) === true) {\n return done()\n }\n\n if (dir === cwd) {\n checkCwdSync(cwd)\n return done()\n }\n\n if (preserve) {\n return done(mkdirp.sync(dir, mode))\n }\n\n const sub = normPath(path.relative(cwd, dir))\n const parts = sub.split('/')\n let created = null\n for (let p = parts.shift(), part = cwd;\n p && (part += '/' + p);\n p = parts.shift()) {\n part = normPath(path.resolve(part))\n if (cGet(cache, part)) {\n continue\n }\n\n try {\n fs.mkdirSync(part, mode)\n created = created || part\n cSet(cache, part, true)\n } catch (er) {\n const st = fs.lstatSync(part)\n if (st.isDirectory()) {\n cSet(cache, part, true)\n continue\n } else if (unlink) {\n fs.unlinkSync(part)\n fs.mkdirSync(part, mode)\n created = created || part\n cSet(cache, part, true)\n continue\n } else if (st.isSymbolicLink()) {\n return new SymlinkError(part, part + '/' + parts.join('/'))\n }\n }\n }\n\n return done(created)\n}\n", "// warning: extremely hot code path.\n// This has been meticulously optimized for use\n// within npm install on large package trees.\n// Do not edit without careful benchmarking.\nconst normalizeCache = Object.create(null)\nconst { hasOwnProperty } = Object.prototype\nmodule.exports = s => {\n if (!hasOwnProperty.call(normalizeCache, s)) {\n normalizeCache[s] = s.normalize('NFD')\n }\n return normalizeCache[s]\n}\n", "// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\n\nconst assert = require('assert')\nconst normalize = require('./normalize-unicode.js')\nconst stripSlashes = require('./strip-trailing-slashes.js')\nconst { join } = require('path')\n\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nconst isWindows = platform === 'win32'\n\nmodule.exports = () => {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n const queues = new Map()\n\n // fn => {paths:[path,...], dirs:[path, ...]}\n const reservations = new Map()\n\n // return a set of parent dirs for a given path\n // '/a/b/c/d' -> ['/', '/a', '/a/b', '/a/b/c', '/a/b/c/d']\n const getDirs = path => {\n const dirs = path.split('/').slice(0, -1).reduce((set, path) => {\n if (set.length) {\n path = join(set[set.length - 1], path)\n }\n set.push(path || '/')\n return set\n }, [])\n return dirs\n }\n\n // functions currently running\n const running = new Set()\n\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n const getQueues = fn => {\n const res = reservations.get(fn)\n /* istanbul ignore if - unpossible */\n if (!res) {\n throw new Error('function does not have any path reservations')\n }\n return {\n paths: res.paths.map(path => queues.get(path)),\n dirs: [...res.dirs].map(path => queues.get(path)),\n }\n }\n\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n const check = fn => {\n const { paths, dirs } = getQueues(fn)\n return paths.every(q => q[0] === fn) &&\n dirs.every(q => q[0] instanceof Set && q[0].has(fn))\n }\n\n // run the function if it's first in line and not already running\n const run = fn => {\n if (running.has(fn) || !check(fn)) {\n return false\n }\n running.add(fn)\n fn(() => clear(fn))\n return true\n }\n\n const clear = fn => {\n if (!running.has(fn)) {\n return false\n }\n\n const { paths, dirs } = reservations.get(fn)\n const next = new Set()\n\n paths.forEach(path => {\n const q = queues.get(path)\n assert.equal(q[0], fn)\n if (q.length === 1) {\n queues.delete(path)\n } else {\n q.shift()\n if (typeof q[0] === 'function') {\n next.add(q[0])\n } else {\n q[0].forEach(fn => next.add(fn))\n }\n }\n })\n\n dirs.forEach(dir => {\n const q = queues.get(dir)\n assert(q[0] instanceof Set)\n if (q[0].size === 1 && q.length === 1) {\n queues.delete(dir)\n } else if (q[0].size === 1) {\n q.shift()\n\n // must be a function or else the Set would've been reused\n next.add(q[0])\n } else {\n q[0].delete(fn)\n }\n })\n running.delete(fn)\n\n next.forEach(fn => run(fn))\n return true\n }\n\n const reserve = (paths, fn) => {\n // collide on matches across case and unicode normalization\n // On windows, thanks to the magic of 8.3 shortnames, it is fundamentally\n // impossible to determine whether two paths refer to the same thing on\n // disk, without asking the kernel for a shortname.\n // So, we just pretend that every path matches every other path here,\n // effectively removing all parallelization on windows.\n paths = isWindows ? ['win32 parallelization disabled'] : paths.map(p => {\n // don't need normPath, because we skip this entirely for windows\n return stripSlashes(join(normalize(p))).toLowerCase()\n })\n\n const dirs = new Set(\n paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b))\n )\n reservations.set(fn, { dirs, paths })\n paths.forEach(path => {\n const q = queues.get(path)\n if (!q) {\n queues.set(path, [fn])\n } else {\n q.push(fn)\n }\n })\n dirs.forEach(dir => {\n const q = queues.get(dir)\n if (!q) {\n queues.set(dir, [new Set([fn])])\n } else if (q[q.length - 1] instanceof Set) {\n q[q.length - 1].add(fn)\n } else {\n q.push(new Set([fn]))\n }\n })\n\n return run(fn)\n }\n\n return { check, reserve }\n}\n", "// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\n// Only supported in Node v12.9.0 and above.\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform\nconst isWindows = platform === 'win32'\nconst fs = global.__FAKE_TESTING_FS__ || require('fs')\n\n/* istanbul ignore next */\nconst { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants\n\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP\nconst fMapLimit = 512 * 1024\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY\nmodule.exports = !fMapEnabled ? () => 'w'\n : size => size < fMapLimit ? fMapFlag : 'w'\n", "'use strict'\n\n// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\n\nconst assert = require('assert')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst mkdir = require('./mkdir.js')\nconst wc = require('./winchars.js')\nconst pathReservations = require('./path-reservations.js')\nconst stripAbsolutePath = require('./strip-absolute-path.js')\nconst normPath = require('./normalize-windows-path.js')\nconst stripSlash = require('./strip-trailing-slashes.js')\nconst normalize = require('./normalize-unicode.js')\n\nconst ONENTRY = Symbol('onEntry')\nconst CHECKFS = Symbol('checkFs')\nconst CHECKFS2 = Symbol('checkFs2')\nconst PRUNECACHE = Symbol('pruneCache')\nconst ISREUSABLE = Symbol('isReusable')\nconst MAKEFS = Symbol('makeFs')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst LINK = Symbol('link')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst UNSUPPORTED = Symbol('unsupported')\nconst CHECKPATH = Symbol('checkPath')\nconst MKDIR = Symbol('mkdir')\nconst ONERROR = Symbol('onError')\nconst PENDING = Symbol('pending')\nconst PEND = Symbol('pend')\nconst UNPEND = Symbol('unpend')\nconst ENDED = Symbol('ended')\nconst MAYBECLOSE = Symbol('maybeClose')\nconst SKIP = Symbol('skip')\nconst DOCHOWN = Symbol('doChown')\nconst UID = Symbol('uid')\nconst GID = Symbol('gid')\nconst CHECKED_CWD = Symbol('checkedCwd')\nconst crypto = require('crypto')\nconst getFlag = require('./get-write-flag.js')\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nconst isWindows = platform === 'win32'\n\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* istanbul ignore next */\nconst unlinkFile = (path, cb) => {\n if (!isWindows) {\n return fs.unlink(path, cb)\n }\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.rename(path, name, er => {\n if (er) {\n return cb(er)\n }\n fs.unlink(name, cb)\n })\n}\n\n/* istanbul ignore next */\nconst unlinkFileSync = path => {\n if (!isWindows) {\n return fs.unlinkSync(path)\n }\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.renameSync(path, name)\n fs.unlinkSync(name)\n}\n\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) =>\n a === a >>> 0 ? a\n : b === b >>> 0 ? b\n : c\n\n// clear the cache if it's a case-insensitive unicode-squashing match.\n// we can't know if the current file system is case-sensitive or supports\n// unicode fully, so we check for similarity on the maximally compatible\n// representation. Err on the side of pruning, since all it's doing is\n// preventing lstats, and it's not the end of the world if we get a false\n// positive.\n// Note that on windows, we always drop the entire cache whenever a\n// symbolic link is encountered, because 8.3 filenames are impossible\n// to reason about, and collisions are hazards rather than just failures.\nconst cacheKeyNormalize = path => stripSlash(normPath(normalize(path)))\n .toLowerCase()\n\nconst pruneCache = (cache, abs) => {\n abs = cacheKeyNormalize(abs)\n for (const path of cache.keys()) {\n const pnorm = cacheKeyNormalize(path)\n if (pnorm === abs || pnorm.indexOf(abs + '/') === 0) {\n cache.delete(path)\n }\n }\n}\n\nconst dropCache = cache => {\n for (const key of cache.keys()) {\n cache.delete(key)\n }\n}\n\nclass Unpack extends Parser {\n constructor (opt) {\n if (!opt) {\n opt = {}\n }\n\n opt.ondone = _ => {\n this[ENDED] = true\n this[MAYBECLOSE]()\n }\n\n super(opt)\n\n this[CHECKED_CWD] = false\n\n this.reservations = pathReservations()\n\n this.transform = typeof opt.transform === 'function' ? opt.transform : null\n\n this.writable = true\n this.readable = false\n\n this[PENDING] = 0\n this[ENDED] = false\n\n this.dirCache = opt.dirCache || new Map()\n\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number') {\n throw new TypeError('cannot set owner without number uid and gid')\n }\n if (opt.preserveOwner) {\n throw new TypeError(\n 'cannot preserve owner in archive and also set owner explicitly')\n }\n this.uid = opt.uid\n this.gid = opt.gid\n this.setOwner = true\n } else {\n this.uid = null\n this.gid = null\n this.setOwner = false\n }\n\n // default true for root\n if (opt.preserveOwner === undefined && typeof opt.uid !== 'number') {\n this.preserveOwner = process.getuid && process.getuid() === 0\n } else {\n this.preserveOwner = !!opt.preserveOwner\n }\n\n this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid() : null\n this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid() : null\n\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true\n\n // turn ><?| in filenames into 0xf000-higher encoded forms\n this.win32 = !!opt.win32 || isWindows\n\n // do not unpack over files that are newer than what's in the archive\n this.newer = !!opt.newer\n\n // do not unpack over ANY files\n this.keep = !!opt.keep\n\n // do not set mtime/atime of extracted entries\n this.noMtime = !!opt.noMtime\n\n // allow .., absolute path entries, and unpacking through symlinks\n // without this, warn and skip .., relativize absolutes, and error\n // on symlinks in extraction path\n this.preservePaths = !!opt.preservePaths\n\n // unlink files and links before writing. This breaks existing hard\n // links, and removes symlink directories rather than erroring\n this.unlink = !!opt.unlink\n\n this.cwd = normPath(path.resolve(opt.cwd || process.cwd()))\n this.strip = +opt.strip || 0\n // if we're not chmodding, then we don't need the process umask\n this.processUmask = opt.noChmod ? 0 : process.umask()\n this.umask = typeof opt.umask === 'number' ? opt.umask : this.processUmask\n\n // default mode for dirs created as parents\n this.dmode = opt.dmode || (0o0777 & (~this.umask))\n this.fmode = opt.fmode || (0o0666 & (~this.umask))\n\n this.on('entry', entry => this[ONENTRY](entry))\n }\n\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn (code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT') {\n data.recoverable = false\n }\n return super.warn(code, msg, data)\n }\n\n [MAYBECLOSE] () {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n }\n }\n\n [CHECKPATH] (entry) {\n if (this.strip) {\n const parts = normPath(entry.path).split('/')\n if (parts.length < this.strip) {\n return false\n }\n entry.path = parts.slice(this.strip).join('/')\n\n if (entry.type === 'Link') {\n const linkparts = normPath(entry.linkpath).split('/')\n if (linkparts.length >= this.strip) {\n entry.linkpath = linkparts.slice(this.strip).join('/')\n } else {\n return false\n }\n }\n }\n\n if (!this.preservePaths) {\n const p = normPath(entry.path)\n const parts = p.split('/')\n if (parts.includes('..') || isWindows && /^[a-z]:\\.\\.$/i.test(parts[0])) {\n this.warn('TAR_ENTRY_ERROR', `path contains '..'`, {\n entry,\n path: p,\n })\n return false\n }\n\n // strip off the root\n const [root, stripped] = stripAbsolutePath(p)\n if (root) {\n entry.path = stripped\n this.warn('TAR_ENTRY_INFO', `stripping ${root} from absolute path`, {\n entry,\n path: p,\n })\n }\n }\n\n if (path.isAbsolute(entry.path)) {\n entry.absolute = normPath(path.resolve(entry.path))\n } else {\n entry.absolute = normPath(path.resolve(this.cwd, entry.path))\n }\n\n // if we somehow ended up with a path that escapes the cwd, and we are\n // not in preservePaths mode, then something is fishy! This should have\n // been prevented above, so ignore this for coverage.\n /* istanbul ignore if - defense in depth */\n if (!this.preservePaths &&\n entry.absolute.indexOf(this.cwd + '/') !== 0 &&\n entry.absolute !== this.cwd) {\n this.warn('TAR_ENTRY_ERROR', 'path escaped extraction target', {\n entry,\n path: normPath(entry.path),\n resolvedPath: entry.absolute,\n cwd: this.cwd,\n })\n return false\n }\n\n // an archive can set properties on the extraction directory, but it\n // may not replace the cwd with a different kind of thing entirely.\n if (entry.absolute === this.cwd &&\n entry.type !== 'Directory' &&\n entry.type !== 'GNUDumpDir') {\n return false\n }\n\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const { root: aRoot } = path.win32.parse(entry.absolute)\n entry.absolute = aRoot + wc.encode(entry.absolute.slice(aRoot.length))\n const { root: pRoot } = path.win32.parse(entry.path)\n entry.path = pRoot + wc.encode(entry.path.slice(pRoot.length))\n }\n\n return true\n }\n\n [ONENTRY] (entry) {\n if (!this[CHECKPATH](entry)) {\n return entry.resume()\n }\n\n assert.equal(typeof entry.absolute, 'string')\n\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode) {\n entry.mode = entry.mode | 0o700\n }\n\n // eslint-disable-next-line no-fallthrough\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry)\n\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry)\n }\n }\n\n [ONERROR] (er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError') {\n this.emit('error', er)\n } else {\n this.warn('TAR_ENTRY_ERROR', er, { entry })\n this[UNPEND]()\n entry.resume()\n }\n }\n\n [MKDIR] (dir, mode, cb) {\n mkdir(normPath(dir), {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n noChmod: this.noChmod,\n }, cb)\n }\n\n [DOCHOWN] (entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return this.forceChown ||\n this.preserveOwner &&\n (typeof entry.uid === 'number' && entry.uid !== this.processUid ||\n typeof entry.gid === 'number' && entry.gid !== this.processGid)\n ||\n (typeof this.uid === 'number' && this.uid !== this.processUid ||\n typeof this.gid === 'number' && this.gid !== this.processGid)\n }\n\n [UID] (entry) {\n return uint32(this.uid, entry.uid, this.processUid)\n }\n\n [GID] (entry) {\n return uint32(this.gid, entry.gid, this.processGid)\n }\n\n [FILE] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.fmode\n const stream = new fsm.WriteStream(entry.absolute, {\n flags: getFlag(entry.size),\n mode: mode,\n autoClose: false,\n })\n stream.on('error', er => {\n if (stream.fd) {\n fs.close(stream.fd, () => {})\n }\n\n // flush all the data out so that we aren't left hanging\n // if the error wasn't actually fatal. otherwise the parse\n // is blocked, and we never proceed.\n stream.write = () => true\n this[ONERROR](er, entry)\n fullyDone()\n })\n\n let actions = 1\n const done = er => {\n if (er) {\n /* istanbul ignore else - we should always have a fd by now */\n if (stream.fd) {\n fs.close(stream.fd, () => {})\n }\n\n this[ONERROR](er, entry)\n fullyDone()\n return\n }\n\n if (--actions === 0) {\n fs.close(stream.fd, er => {\n if (er) {\n this[ONERROR](er, entry)\n } else {\n this[UNPEND]()\n }\n fullyDone()\n })\n }\n }\n\n stream.on('finish', _ => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = entry.absolute\n const fd = stream.fd\n\n if (entry.mtime && !this.noMtime) {\n actions++\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n fs.futimes(fd, atime, mtime, er =>\n er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done())\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n fs.fchown(fd, uid, gid, er =>\n er ? fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done())\n }\n\n done()\n })\n\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => {\n this[ONERROR](er, entry)\n fullyDone()\n })\n entry.pipe(tx)\n }\n tx.pipe(stream)\n }\n\n [DIRECTORY] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.dmode\n this[MKDIR](entry.absolute, mode, er => {\n if (er) {\n this[ONERROR](er, entry)\n fullyDone()\n return\n }\n\n let actions = 1\n const done = _ => {\n if (--actions === 0) {\n fullyDone()\n this[UNPEND]()\n entry.resume()\n }\n }\n\n if (entry.mtime && !this.noMtime) {\n actions++\n fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)\n }\n\n done()\n })\n }\n\n [UNSUPPORTED] (entry) {\n entry.unsupported = true\n this.warn('TAR_ENTRY_UNSUPPORTED',\n `unsupported entry type: ${entry.type}`, { entry })\n entry.resume()\n }\n\n [SYMLINK] (entry, done) {\n this[LINK](entry, entry.linkpath, 'symlink', done)\n }\n\n [HARDLINK] (entry, done) {\n const linkpath = normPath(path.resolve(this.cwd, entry.linkpath))\n this[LINK](entry, linkpath, 'link', done)\n }\n\n [PEND] () {\n this[PENDING]++\n }\n\n [UNPEND] () {\n this[PENDING]--\n this[MAYBECLOSE]()\n }\n\n [SKIP] (entry) {\n this[UNPEND]()\n entry.resume()\n }\n\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE] (entry, st) {\n return entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n !isWindows\n }\n\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS] (entry) {\n this[PEND]()\n const paths = [entry.path]\n if (entry.linkpath) {\n paths.push(entry.linkpath)\n }\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done))\n }\n\n [PRUNECACHE] (entry) {\n // if we are not creating a directory, and the path is in the dirCache,\n // then that means we are about to delete the directory we created\n // previously, and it is no longer going to be a directory, and neither\n // is any of its children.\n // If a symbolic link is encountered, all bets are off. There is no\n // reasonable way to sanitize the cache in such a way we will be able to\n // avoid having filesystem collisions. If this happens with a non-symlink\n // entry, it'll just fail to unpack, but a symlink to a directory, using an\n // 8.3 shortname or certain unicode attacks, can evade detection and lead\n // to arbitrary writes to anywhere on the system.\n if (entry.type === 'SymbolicLink') {\n dropCache(this.dirCache)\n } else if (entry.type !== 'Directory') {\n pruneCache(this.dirCache, entry.absolute)\n }\n }\n\n [CHECKFS2] (entry, fullyDone) {\n this[PRUNECACHE](entry)\n\n const done = er => {\n this[PRUNECACHE](entry)\n fullyDone(er)\n }\n\n const checkCwd = () => {\n this[MKDIR](this.cwd, this.dmode, er => {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n this[CHECKED_CWD] = true\n start()\n })\n }\n\n const start = () => {\n if (entry.absolute !== this.cwd) {\n const parent = normPath(path.dirname(entry.absolute))\n if (parent !== this.cwd) {\n return this[MKDIR](parent, this.dmode, er => {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n afterMakeParent()\n })\n }\n }\n afterMakeParent()\n }\n\n const afterMakeParent = () => {\n fs.lstat(entry.absolute, (lstatEr, st) => {\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n this[SKIP](entry)\n done()\n return\n }\n if (lstatEr || this[ISREUSABLE](entry, st)) {\n return this[MAKEFS](null, entry, done)\n }\n\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n const needChmod = !this.noChmod &&\n entry.mode &&\n (st.mode & 0o7777) !== entry.mode\n const afterChmod = er => this[MAKEFS](er, entry, done)\n if (!needChmod) {\n return afterChmod()\n }\n return fs.chmod(entry.absolute, entry.mode, afterChmod)\n }\n // Not a dir entry, have to remove it.\n // NB: the only way to end up with an entry that is the cwd\n // itself, in such a way that == does not detect, is a\n // tricky windows absolute path with UNC or 8.3 parts (and\n // preservePaths:true, or else it will have been stripped).\n // In that case, the user has opted out of path protections\n // explicitly, so if they blow away the cwd, c'est la vie.\n if (entry.absolute !== this.cwd) {\n return fs.rmdir(entry.absolute, er =>\n this[MAKEFS](er, entry, done))\n }\n }\n\n // not a dir, and not reusable\n // don't remove if the cwd, we want that error\n if (entry.absolute === this.cwd) {\n return this[MAKEFS](null, entry, done)\n }\n\n unlinkFile(entry.absolute, er =>\n this[MAKEFS](er, entry, done))\n })\n }\n\n if (this[CHECKED_CWD]) {\n start()\n } else {\n checkCwd()\n }\n }\n\n [MAKEFS] (er, entry, done) {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done)\n\n case 'Link':\n return this[HARDLINK](entry, done)\n\n case 'SymbolicLink':\n return this[SYMLINK](entry, done)\n\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done)\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n // XXX: get the type ('symlink' or 'junction') for windows\n fs[link](linkpath, entry.absolute, er => {\n if (er) {\n this[ONERROR](er, entry)\n } else {\n this[UNPEND]()\n entry.resume()\n }\n done()\n })\n }\n}\n\nconst callSync = fn => {\n try {\n return [null, fn()]\n } catch (er) {\n return [er, null]\n }\n}\nclass UnpackSync extends Unpack {\n [MAKEFS] (er, entry) {\n return super[MAKEFS](er, entry, () => {})\n }\n\n [CHECKFS] (entry) {\n this[PRUNECACHE](entry)\n\n if (!this[CHECKED_CWD]) {\n const er = this[MKDIR](this.cwd, this.dmode)\n if (er) {\n return this[ONERROR](er, entry)\n }\n this[CHECKED_CWD] = true\n }\n\n // don't bother to make the parent if the current entry is the cwd,\n // we've already checked it.\n if (entry.absolute !== this.cwd) {\n const parent = normPath(path.dirname(entry.absolute))\n if (parent !== this.cwd) {\n const mkParent = this[MKDIR](parent, this.dmode)\n if (mkParent) {\n return this[ONERROR](mkParent, entry)\n }\n }\n }\n\n const [lstatEr, st] = callSync(() => fs.lstatSync(entry.absolute))\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n return this[SKIP](entry)\n }\n\n if (lstatEr || this[ISREUSABLE](entry, st)) {\n return this[MAKEFS](null, entry)\n }\n\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n const needChmod = !this.noChmod &&\n entry.mode &&\n (st.mode & 0o7777) !== entry.mode\n const [er] = needChmod ? callSync(() => {\n fs.chmodSync(entry.absolute, entry.mode)\n }) : []\n return this[MAKEFS](er, entry)\n }\n // not a dir entry, have to remove it\n const [er] = callSync(() => fs.rmdirSync(entry.absolute))\n this[MAKEFS](er, entry)\n }\n\n // not a dir, and not reusable.\n // don't remove if it's the cwd, since we want that error.\n const [er] = entry.absolute === this.cwd ? []\n : callSync(() => unlinkFileSync(entry.absolute))\n this[MAKEFS](er, entry)\n }\n\n [FILE] (entry, done) {\n const mode = entry.mode & 0o7777 || this.fmode\n\n const oner = er => {\n let closeError\n try {\n fs.closeSync(fd)\n } catch (e) {\n closeError = e\n }\n if (er || closeError) {\n this[ONERROR](er || closeError, entry)\n }\n done()\n }\n\n let fd\n try {\n fd = fs.openSync(entry.absolute, getFlag(entry.size), mode)\n } catch (er) {\n return oner(er)\n }\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n\n tx.on('data', chunk => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length)\n } catch (er) {\n oner(er)\n }\n })\n\n tx.on('end', _ => {\n let er = null\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n try {\n fs.futimesSync(fd, atime, mtime)\n } catch (futimeser) {\n try {\n fs.utimesSync(entry.absolute, atime, mtime)\n } catch (utimeser) {\n er = futimeser\n }\n }\n }\n\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n\n try {\n fs.fchownSync(fd, uid, gid)\n } catch (fchowner) {\n try {\n fs.chownSync(entry.absolute, uid, gid)\n } catch (chowner) {\n er = er || fchowner\n }\n }\n }\n\n oner(er)\n })\n }\n\n [DIRECTORY] (entry, done) {\n const mode = entry.mode & 0o7777 || this.dmode\n const er = this[MKDIR](entry.absolute, mode)\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)\n } catch (er) {}\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))\n } catch (er) {}\n }\n done()\n entry.resume()\n }\n\n [MKDIR] (dir, mode) {\n try {\n return mkdir.sync(normPath(dir), {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n })\n } catch (er) {\n return er\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n try {\n fs[link + 'Sync'](linkpath, entry.absolute)\n done()\n entry.resume()\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n}\n\nUnpack.Sync = UnpackSync\nmodule.exports = Unpack\n", "'use strict'\n\n// tar -x\nconst hlo = require('./high-level-opt.js')\nconst Unpack = require('./unpack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function') {\n cb = opt_, files = null, opt_ = {}\n } else if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (typeof files === 'function') {\n cb = files, files = null\n }\n\n if (!files) {\n files = []\n } else {\n files = Array.from(files)\n }\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n if (files.length) {\n filesFilter(opt, files)\n }\n\n return opt.file && opt.sync ? extractFileSync(opt)\n : opt.file ? extractFile(opt, cb)\n : opt.sync ? extractSync(opt)\n : extract(opt)\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [stripSlash(f), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file))\n : file => mapHas(stripSlash(file))\n}\n\nconst extractFileSync = opt => {\n const u = new Unpack.Sync(opt)\n\n const file = opt.file\n const stat = fs.statSync(file)\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.pipe(u)\n}\n\nconst extractFile = (opt, cb) => {\n const u = new Unpack(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n u.on('error', reject)\n u.on('close', resolve)\n\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n fs.stat(file, (er, stat) => {\n if (er) {\n reject(er)\n } else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(u)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst extractSync = opt => new Unpack.Sync(opt)\n\nconst extract = opt => new Unpack(opt)\n", "'use strict'\n\n// high-level commands\nexports.c = exports.create = require('./lib/create.js')\nexports.r = exports.replace = require('./lib/replace.js')\nexports.t = exports.list = require('./lib/list.js')\nexports.u = exports.update = require('./lib/update.js')\nexports.x = exports.extract = require('./lib/extract.js')\n\n// classes\nexports.Pack = require('./lib/pack.js')\nexports.Unpack = require('./lib/unpack.js')\nexports.Parse = require('./lib/parse.js')\nexports.ReadEntry = require('./lib/read-entry.js')\nexports.WriteEntry = require('./lib/write-entry.js')\nexports.Header = require('./lib/header.js')\nexports.Pax = require('./lib/pax.js')\nexports.types = require('./lib/types.js')\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", "const 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", "const {\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 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 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\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\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 identifer, 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", "// 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", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\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", "const 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')\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 return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\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('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 // 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 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\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 (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\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 (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\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", "const 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", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const 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", "const 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", "const 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 // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\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 preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const 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", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const 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", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const 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", "const 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\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\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.format()\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\n .trim()\n .split(/\\s+/)\n .join(' ')\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.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\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('lru-cache')\nconst cache = new LRU({ max: 1000 })\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 t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\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 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\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 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 <${+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 <${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 }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${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 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\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\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", "const 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", "const 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", "const 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", "const 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", "const 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", "const 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", "const 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", "const 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", "// 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", "const 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", "const 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", "// 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", "const 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 GT.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 === '>=' && !satisfies(gt.semver, String(c), options)) {\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 === '<=' && !satisfies(lt.semver, String(c), options)) {\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", "// 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 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 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", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n", "var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n", "const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n", "'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n", "'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n", "'use strict';\nmodule.exports = /^#!(.*)/;\n", "'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n", "'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n", "'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n", "'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n", "'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n", "'use strict';\n\nconst { PassThrough } = require('stream');\n\nmodule.exports = function (/*streams...*/) {\n var sources = []\n var output = new PassThrough({objectMode: true})\n\n output.setMaxListeners(0)\n\n output.add = add\n output.isEmpty = isEmpty\n\n output.on('unpipe', remove)\n\n Array.prototype.slice.call(arguments).forEach(add)\n\n return output\n\n function add (source) {\n if (Array.isArray(source)) {\n source.forEach(add)\n return this\n }\n\n sources.push(source);\n source.once('end', remove.bind(null, source))\n source.once('error', output.emit.bind(output, 'error'))\n source.pipe(output, {end: false})\n return this\n }\n\n function isEmpty () {\n return sources.length == 0;\n }\n\n function remove (source) {\n sources = sources.filter(function (it) { return it !== source })\n if (!sources.length && output.readable) { output.end() }\n }\n}\n", "/* eslint-disable no-console -- this is a cli tool */\n\nimport { existsSync, createWriteStream, readFileSync, promises as fs } from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { ArgumentParser } from \"argparse\";\nimport { findUp } from \"find-up\";\nimport tmp from \"tmp\";\nimport { stylish } from \"@html-validate/stylish\";\nimport { setupBlacklist } from \"./blacklist\";\nimport { type VerifyOptions, verify } from \"./verify\";\nimport { type PackageJson } from \"./types\";\nimport { tarballLocation } from \"./tarball-location\";\nimport { type TarballMeta, getFileContent } from \"./tarball\";\n\nconst pkgFilepath = fileURLToPath(new URL(\"../package.json\", import.meta.url));\nconst { version } = JSON.parse(readFileSync(pkgFilepath, \"utf-8\")) as { version: string };\n\nconst PACKAGE_JSON = \"package.json\";\n\ninterface ParsedArgs {\n\tpkgfile: string;\n\ttarball?: string;\n\tignore_missing_fields?: boolean;\n\tallow_types_dependencies?: boolean;\n}\n\ninterface GetPackageJsonResults {\n\tpkg: PackageJson;\n\tpkgPath: string;\n}\n\nasync function preloadStdin(): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\ttmp.file((err, path, fd) => {\n\t\t\tif (err) {\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst st = createWriteStream(\"\", { fd, autoClose: true });\n\t\t\tprocess.stdin.pipe(st);\n\t\t\tst.on(\"finish\", () => {\n\t\t\t\tresolve(path);\n\t\t\t});\n\t\t\tst.on(\"error\", (err) => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t});\n}\n\nasync function getPackageJson(\n\targs: ParsedArgs,\n\tregenerateReportName: boolean,\n): Promise<GetPackageJsonResults | { pkg: undefined; pkgPath: undefined }> {\n\t/* get from explicit path passed as argument */\n\tif (args.pkgfile) {\n\t\treturn {\n\t\t\tpkg: JSON.parse(await fs.readFile(args.pkgfile, \"utf-8\")) as PackageJson,\n\t\t\tpkgPath: args.pkgfile,\n\t\t};\n\t}\n\n\t/* extract package.json from explicit tarball location */\n\tif (args.tarball) {\n\t\tconst contents = await getFileContent({ filePath: args.tarball }, [PACKAGE_JSON]);\n\t\tconst pkg = JSON.parse(contents[PACKAGE_JSON].toString(\"utf-8\")) as PackageJson;\n\t\treturn {\n\t\t\tpkg,\n\t\t\tpkgPath: path.join(\n\t\t\t\tregenerateReportName ? `${pkg.name}-${pkg.version}.tgz` : args.tarball,\n\t\t\t\tPACKAGE_JSON,\n\t\t\t),\n\t\t};\n\t}\n\n\t/* try to locate package.json from file structure */\n\tconst pkgPath = await findUp(PACKAGE_JSON);\n\tif (pkgPath) {\n\t\tconst relPath = path.relative(process.cwd(), pkgPath);\n\t\treturn {\n\t\t\tpkg: JSON.parse(await fs.readFile(relPath, \"utf-8\")) as PackageJson,\n\t\t\tpkgPath: relPath,\n\t\t};\n\t}\n\n\treturn { pkg: undefined, pkgPath: undefined };\n}\n\nasync function run(): Promise<void> {\n\tconst parser = new ArgumentParser({\n\t\tdescription: \"Opiniated linter for NPM package tarball and package.json metadata\",\n\t});\n\n\tparser.add_argument(\"-v\", \"--version\", { action: \"version\", version });\n\tparser.add_argument(\"-t\", \"--tarball\", { help: \"specify tarball location\" });\n\tparser.add_argument(\"-p\", \"--pkgfile\", { help: \"specify package.json location\" });\n\tparser.add_argument(\"--allow-types-dependencies\", {\n\t\taction: \"store_true\",\n\t\thelp: \"allow dependencies to `@types/*`\",\n\t});\n\tparser.add_argument(\"--ignore-missing-fields\", {\n\t\taction: \"store_true\",\n\t\thelp: \"ignore errors for missing fields (but still checks for empty and valid)\",\n\t});\n\n\tconst args = parser.parse_args() as ParsedArgs;\n\n\t/* this library assumes the file source can be randomly accessed but with\n\t * stdin this is not possible so stdin is read into a temporary file which is\n\t * used instead */\n\tlet regenerateReportName = false;\n\tif (args.tarball === \"-\") {\n\t\targs.tarball = await preloadStdin();\n\t\tregenerateReportName = true;\n\t}\n\n\tconst { pkg, pkgPath } = await getPackageJson(args, regenerateReportName);\n\n\tif (!pkg) {\n\t\tconsole.error(\"Failed to locate package.json and no location was specificed with `--pkgfile'\");\n\t\tprocess.exitCode = 1;\n\t\treturn;\n\t}\n\n\tconst tarball: TarballMeta = {\n\t\tfilePath: args.tarball ?? tarballLocation(pkg, pkgPath),\n\t\treportPath: regenerateReportName ? `${pkg.name}-${pkg.version}.tgz` : undefined,\n\t};\n\tif (!existsSync(tarball.filePath)) {\n\t\tconsole.error(`\"${tarball.filePath}\" does not exist, did you forget to run \\`npm pack'?`);\n\t\tprocess.exitCode = 1;\n\t\treturn;\n\t}\n\n\tsetupBlacklist(pkg.name);\n\n\tconst options: VerifyOptions = {\n\t\tallowTypesDependencies: args.allow_types_dependencies,\n\t\tignoreMissingFields: args.ignore_missing_fields,\n\t};\n\n\tconst results = await verify(pkg, pkgPath, tarball, options);\n\tconst output = stylish(results);\n\tprocess.stdout.write(output);\n\n\tconst totalErrors = results.reduce((sum, result) => {\n\t\treturn sum + result.errorCount;\n\t}, 0);\n\n\tprocess.exitCode = totalErrors > 0 ? 1 : 0;\n}\n\nrun().catch((err) => {\n\tconsole.error(err);\n\tprocess.exitCode = 1;\n});\n", "import path from 'node:path';\nimport {locatePath, locatePathSync} from 'locate-path';\nimport {toPath} from 'unicorn-magic';\n\nexport const findUpStop = Symbol('findUpStop');\n\nexport async function findUpMultiple(name, options = {}) {\n\tlet directory = path.resolve(toPath(options.cwd) ?? '');\n\tconst {root} = path.parse(directory);\n\tconst stopAt = path.resolve(directory, toPath(options.stopAt ?? root));\n\tconst limit = options.limit ?? Number.POSITIVE_INFINITY;\n\tconst paths = [name].flat();\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\tconst matches = [];\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === findUpStop) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\tmatches.push(path.resolve(directory, foundPath));\n\t\t}\n\n\t\tif (directory === stopAt || matches.length >= limit) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n\n\treturn matches;\n}\n\nexport function findUpMultipleSync(name, options = {}) {\n\tlet directory = path.resolve(toPath(options.cwd) ?? '');\n\tconst {root} = path.parse(directory);\n\tconst stopAt = path.resolve(directory, toPath(options.stopAt) ?? root);\n\tconst limit = options.limit ?? Number.POSITIVE_INFINITY;\n\tconst paths = [name].flat();\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePathSync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePathSync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\tconst matches = [];\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === findUpStop) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\tmatches.push(path.resolve(directory, foundPath));\n\t\t}\n\n\t\tif (directory === stopAt || matches.length >= limit) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n\n\treturn matches;\n}\n\nexport async function findUp(name, options = {}) {\n\tconst matches = await findUpMultiple(name, {...options, limit: 1});\n\treturn matches[0];\n}\n\nexport function findUpSync(name, options = {}) {\n\tconst matches = findUpMultipleSync(name, {...options, limit: 1});\n\treturn matches[0];\n}\n\nexport {\n\tpathExists,\n\tpathExistsSync,\n} from 'path-exists';\n", "import process from 'node:process';\nimport path from 'node:path';\nimport fs, {promises as fsPromises} from 'node:fs';\nimport {fileURLToPath} from 'node:url';\nimport pLocate from 'p-locate';\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile',\n};\n\nfunction checkType(type) {\n\tif (Object.hasOwnProperty.call(typeMappings, type)) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => stat[typeMappings[type]]();\n\nconst toPath = urlOrPath => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n\nexport async function locatePath(\n\tpaths,\n\t{\n\t\tcwd = process.cwd(),\n\t\ttype = 'file',\n\t\tallowSymlinks = true,\n\t\tconcurrency,\n\t\tpreserveOrder,\n\t} = {},\n) {\n\tcheckType(type);\n\tcwd = toPath(cwd);\n\n\tconst statFunction = allowSymlinks ? fsPromises.stat : fsPromises.lstat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFunction(path.resolve(cwd, path_));\n\t\t\treturn matchType(type, stat);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, {concurrency, preserveOrder});\n}\n\nexport function locatePathSync(\n\tpaths,\n\t{\n\t\tcwd = process.cwd(),\n\t\ttype = 'file',\n\t\tallowSymlinks = true,\n\t} = {},\n) {\n\tcheckType(type);\n\tcwd = toPath(cwd);\n\n\tconst statFunction = allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFunction(path.resolve(cwd, path_), {\n\t\t\t\tthrowIfNoEntry: false,\n\t\t\t});\n\n\t\t\tif (!stat) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (matchType(type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch {}\n\t}\n}\n", "/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n", "import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, args) => {\n\t\tqueue.enqueue(run.bind(undefined, fn, resolve, args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n", "import pLimit from 'p-limit';\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it.\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both.\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nexport default async function pLocate(\n\titerable,\n\ttester,\n\t{\n\t\tconcurrency = Number.POSITIVE_INFINITY,\n\t\tpreserveOrder = true,\n\t} = {},\n) {\n\tconst limit = pLimit(concurrency);\n\n\t// Start all the promises concurrently with optional limit.\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently.\n\tconst checkLimit = pLimit(preserveOrder ? 1 : Number.POSITIVE_INFINITY);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n", "import {fileURLToPath} from 'node:url';\n\nexport function toPath(urlOrPath) {\n\treturn urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n}\n\nexport * from './default.js';\n", "let FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nexport const $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t)\n}\n\nfunction init(x, y) {\n\tlet rgx = new RegExp(`\\\\x1b\\\\[${y}m`, 'g');\n\tlet open = `\\x1b[${x}m`, close = `\\x1b[${y}m`;\n\n\treturn function (txt) {\n\t\tif (!$.enabled || txt == null) return txt;\n\t\treturn open + (!!~(''+txt).indexOf(close) ? txt.replace(rgx, close + open) : txt) + close;\n\t};\n}\n\n// modifiers\nexport const reset = init(0, 0);\nexport const bold = init(1, 22);\nexport const dim = init(2, 22);\nexport const italic = init(3, 23);\nexport const underline = init(4, 24);\nexport const inverse = init(7, 27);\nexport const hidden = init(8, 28);\nexport const strikethrough = init(9, 29);\n\n// colors\nexport const black = init(30, 39);\nexport const red = init(31, 39);\nexport const green = init(32, 39);\nexport const yellow = init(33, 39);\nexport const blue = init(34, 39);\nexport const magenta = init(35, 39);\nexport const cyan = init(36, 39);\nexport const white = init(37, 39);\nexport const gray = init(90, 39);\nexport const grey = init(90, 39);\n\n// background colors\nexport const bgBlack = init(40, 49);\nexport const bgRed = init(41, 49);\nexport const bgGreen = init(42, 49);\nexport const bgYellow = init(43, 49);\nexport const bgBlue = init(44, 49);\nexport const bgMagenta = init(45, 49);\nexport const bgCyan = init(46, 49);\nexport const bgWhite = init(47, 49);\n", "module.exports = function (rows_, opts) {\n if (!opts) opts = {};\n var hsep = opts.hsep === undefined ? ' ' : opts.hsep;\n var align = opts.align || [];\n var stringLength = opts.stringLength\n || function (s) { return String(s).length; }\n ;\n \n var dotsizes = reduce(rows_, function (acc, row) {\n forEach(row, function (c, ix) {\n var n = dotindex(c);\n if (!acc[ix] || n > acc[ix]) acc[ix] = n;\n });\n return acc;\n }, []);\n \n var rows = map(rows_, function (row) {\n return map(row, function (c_, ix) {\n var c = String(c_);\n if (align[ix] === '.') {\n var index = dotindex(c);\n var size = dotsizes[ix] + (/\\./.test(c) ? 1 : 2)\n - (stringLength(c) - index)\n ;\n return c + Array(size).join(' ');\n }\n else return c;\n });\n });\n \n var sizes = reduce(rows, function (acc, row) {\n forEach(row, function (c, ix) {\n var n = stringLength(c);\n if (!acc[ix] || n > acc[ix]) acc[ix] = n;\n });\n return acc;\n }, []);\n \n return map(rows, function (row) {\n return map(row, function (c, ix) {\n var n = (sizes[ix] - stringLength(c)) || 0;\n var s = Array(Math.max(n + 1, 1)).join(' ');\n if (align[ix] === 'r' || align[ix] === '.') {\n return s + c;\n }\n if (align[ix] === 'c') {\n return Array(Math.ceil(n / 2 + 1)).join(' ')\n + c + Array(Math.floor(n / 2 + 1)).join(' ')\n ;\n }\n \n return c + s;\n }).join(hsep).replace(/\\s+$/, '');\n }).join('\\n');\n};\n\nfunction dotindex (c) {\n var m = /\\.[^.]*$/.exec(c);\n return m ? m.index + 1 : c.length;\n}\n\nfunction reduce (xs, f, init) {\n if (xs.reduce) return xs.reduce(f, init);\n var i = 0;\n var acc = arguments.length >= 3 ? init : xs[i++];\n for (; i < xs.length; i++) {\n f(acc, xs[i], i);\n }\n return acc;\n}\n\nfunction forEach (xs, f) {\n if (xs.forEach) return xs.forEach(f);\n for (var i = 0; i < xs.length; i++) {\n f.call(xs, xs[i], i);\n }\n}\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f.call(xs, xs[i], i));\n }\n return res;\n}\n", "import table, { type Options } from \"text-table\";\nimport * as colors from \"./colors-node\";\nimport { type Result } from \"./result\";\nimport { Severity } from \"./severity\";\n\n/**\n * Given a word and a count, append an s if count is not one.\n * @param word - A word in its singular form.\n * @param count - A number controlling whether word should be pluralized.\n * @returns - The original word with an s on the end if count is not one.\n */\nfunction pluralize(word: string, count: number): string {\n\treturn count === 1 ? word : `${word}s`;\n}\n\n/**\n * Given a line with \" $\\{line\\} $\\{column\\} \" where line is right-aligned and\n * column is left-aligned it replaces the delimiter with a colon.\n */\nfunction centerLineColumn(el: string): string {\n\treturn el.replace(/(\\d+)\\s+(\\d+)/u, (_m, p1: string, p2: string) => colors.dim(`${p1}:${p2}`));\n}\n\n/**\n * Strip ANSI color escape sequences from text.\n */\nfunction stripAnsi(text: string): string {\n\t/* eslint-disable-next-line no-control-regex -- expected to match control characters */\n\treturn text.replace(/\\u001B\\[[0-9;]*m/g, \"\");\n}\n\n/* eslint-disable-next-line sonarjs/cognitive-complexity -- technical debt */\nexport function stylish(results: Result[]): string {\n\tlet output = \"\\n\";\n\tlet errorCount = 0;\n\tlet warningCount = 0;\n\tlet fixableErrorCount = 0;\n\tlet fixableWarningCount = 0;\n\tlet summaryColor: colors.Colorize = colors.yellow;\n\n\tresults.forEach((result) => {\n\t\tconst messages = result.messages;\n\n\t\tif (messages.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\terrorCount += result.errorCount;\n\t\twarningCount += result.warningCount;\n\t\tfixableErrorCount += result.fixableErrorCount;\n\t\tfixableWarningCount += result.fixableWarningCount;\n\n\t\tconst rows = messages.map((message) => {\n\t\t\tlet messageType;\n\n\t\t\tif (Boolean(message.fatal) || message.severity === Severity.ERROR) {\n\t\t\t\tmessageType = colors.red(\"error\");\n\t\t\t\tsummaryColor = colors.red;\n\t\t\t} else {\n\t\t\t\tmessageType = colors.yellow(\"warning\");\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\t\"\",\n\t\t\t\tmessage.line ?? 0,\n\t\t\t\tmessage.column ?? 0,\n\t\t\t\tmessageType,\n\t\t\t\tmessage.message.replace(/([^ ])\\.$/u, \"$1\"),\n\t\t\t\tmessage.ruleId ? colors.dim(message.ruleId) : \"\",\n\t\t\t];\n\t\t});\n\n\t\tconst options: Options = {\n\t\t\talign: [\"l\", \"r\", \"l\"],\n\t\t\tstringLength(str: string): number {\n\t\t\t\treturn stripAnsi(str).length;\n\t\t\t},\n\t\t};\n\t\tconst formattedTable = table(rows, options).split(\"\\n\").map(centerLineColumn).join(\"\\n\");\n\n\t\toutput += `${colors.underline(result.filePath)}\\n`;\n\t\toutput += `${formattedTable}\\n\\n`;\n\t});\n\n\tconst total = errorCount + warningCount;\n\n\tif (total > 0) {\n\t\toutput += summaryColor(\n\t\t\tcolors.bold(\n\t\t\t\t[\n\t\t\t\t\t\"\\u2716 \",\n\t\t\t\t\ttotal,\n\t\t\t\t\tpluralize(\" problem\", total),\n\t\t\t\t\t\" (\",\n\t\t\t\t\terrorCount,\n\t\t\t\t\tpluralize(\" error\", errorCount),\n\t\t\t\t\t\", \",\n\t\t\t\t\twarningCount,\n\t\t\t\t\tpluralize(\" warning\", warningCount),\n\t\t\t\t\t\")\\n\",\n\t\t\t\t].join(\"\")\n\t\t\t)\n\t\t);\n\n\t\tif (fixableErrorCount > 0 || fixableWarningCount > 0) {\n\t\t\toutput += summaryColor(\n\t\t\t\tcolors.bold(\n\t\t\t\t\t[\n\t\t\t\t\t\t\" \",\n\t\t\t\t\t\tfixableErrorCount,\n\t\t\t\t\t\tpluralize(\" error\", fixableErrorCount),\n\t\t\t\t\t\t\" and \",\n\t\t\t\t\t\tfixableWarningCount,\n\t\t\t\t\t\tpluralize(\" warning\", fixableWarningCount),\n\t\t\t\t\t\t\" potentially fixable with the `--fix` option.\\n\",\n\t\t\t\t\t].join(\"\")\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\t// Resets output color, for prevent change on top level\n\treturn total > 0 ? colors.reset(output) : \"\";\n}\n", "import * as kleur from \"kleur/colors\";\n\nexport type Colorize = kleur.Colorize;\n\nexport const reset = kleur.reset;\nexport const bold = kleur.bold;\nexport const dim = kleur.dim;\nexport const underline = kleur.underline;\n\nexport const yellow = kleur.yellow;\nexport const red = kleur.red;\n", "export enum Severity {\n\tOFF = 0,\n\tWARN = 1,\n\tERROR = 2,\n}\n", "/* eslint-disable security/detect-non-literal-regexp -- expected to be non-literal */\n\nexport function escape(text: string): string {\n\treturn text.replace(/\\./, \"\\\\.\");\n}\n\nexport function directory(path: string): RegExp {\n\treturn new RegExp(`(^|/)${path}/`);\n}\n\nexport function extension(ext: string): RegExp {\n\treturn new RegExp(`${escape(ext)}$`);\n}\n\nexport function filename(path: string): RegExp {\n\treturn new RegExp(`(^|/)${escape(path)}$`);\n}\n\nexport function rcfile(base: string): RegExp {\n\treturn new RegExp(`${escape(base)}(\\\\.(js|cjs|mjs|ts|yaml|yml|json))?$`);\n}\n", "import { filename } from \"./helpers\";\n\nconst regexp: RegExp[] = [\n\tfilename(\"ava.config.js\"),\n\tfilename(\"ava.config.cjs\"),\n\tfilename(\"ava.config.mjs\"),\n];\n\nexport default regexp;\n", "import { filename } from \"./helpers\";\n\nconst regexp: RegExp[] = [/#.*#$/, /~$/, filename(\".dir-locals.el\")];\n\nexport default regexp;\n", "import { directory, filename, rcfile } from \"./helpers\";\n\nconst regexp: RegExp[] = [\n\tdirectory(\".eslintcache\"),\n\tfilename(\".eslintignore\"),\n\trcfile(`.eslintrc`),\n\tfilename(\"eslint.config.js\"),\n\tfilename(\"eslint.config.cjs\"),\n\tfilename(\"eslint.config.mjs\"),\n\tfilename(\"eslint.config.ts\"),\n];\n\nexport default regexp;\n", "import { filename, rcfile } from \"./helpers\";\n\nconst regexp: RegExp[] = [filename(\".fimbullinter.yaml\"), rcfile(\".wotanrc\")];\n\nexport default regexp;\n", "import { filename } from \"./helpers\";\n\nconst regexp: RegExp[] = [\n\tfilename(\".gitattributes\"),\n\tfilename(\".keep\"),\n\tfilename(\".gitkeep\"),\n\tfilename(\".gitmodules\"),\n];\n\nexport default regexp;\n", "import { directory, extension } from \"./helpers\";\n\nconst regexp: RegExp[] = [\n\tdirectory(\"__snapshots__\"),\n\tdirectory(\"__tests__\"),\n\textension(\".snap\"),\n\textension(\".spec.[jt]sx?\"),\n\textension(\".spec.js.map\"),\n\textension(\".spec.d.ts\"),\n\textension(\".spec.d.ts.map\"),\n\textension(\".test.[jt]sx?\"),\n\textension(\".test.js.map\"),\n\textension(\".test.d.ts\"),\n\textension(\".test.d.ts.map\"),\n];\n\nexport default regexp;\n", "import { filename } from \"./helpers\";\n\nconst regexp: RegExp[] = [\n\t/(^|\\/)(npm|yarn|lerna)-(debug|error)\\.log.*$/,\n\tfilename(\"report.\\\\d+.\\\\d+.\\\\d+.\\\\d+.\\\\d+.json\"),\n\tfilename(\".npmignore\"),\n\tfilename(\".npmrc\"),\n\tfilename(\".nvmrc\"),\n\tfilename(\"lerna.json\"),\n];\n\nexport default regexp;\n", "import { filename, rcfile } from \"./helpers\";\n\nconst regexp: RegExp[] = [filename(\".prettierignore\"), rcfile(`.prettierrc`)];\n\nexport default regexp;\n", "import { directory, filename } from \"./helpers\";\n\nconst regexp: RegExp[] = [directory(\".tsbuildinfo\"), filename(\"tsconfig.json\")];\n\nexport default regexp;\n", "import { filename } from \"./helpers\";\n\n/* reserved filenames on windows */\nconst regexp: RegExp[] = [\n\tfilename(\"CON\"),\n\tfilename(\"PRN\"),\n\tfilename(\"AUX\"),\n\tfilename(\"NUL\"),\n\t/(^|\\/)COM\\d/,\n\t/(^|\\/)LPT\\d/,\n];\n\nexport default regexp;\n", "import ava from \"./ava\";\nimport emacs from \"./emacs\";\nimport eslint from \"./eslint\";\nimport fimbullinter from \"./fimbullinter\";\nimport git from \"./git\";\nimport jest from \"./jest\";\nimport node from \"./node\";\nimport prettier from \"./prettier\";\nimport typescript from \"./typescript\";\nimport windows from \"./windows\";\nimport { directory, extension, filename, rcfile } from \"./helpers\";\n\nconst blacklist: RegExp[] = [\n\t/* tests in general */\n\tdirectory(\".nyc_output\"),\n\tdirectory(\"coverage\"),\n\textension(\".lcov\"),\n\textension(\"[.-]junit.xml\"),\n\tfilename(\".istanbul.yml\"),\n\tfilename(\"junit.xml\"),\n\tfilename(\"lcov.info\"),\n\tfilename(\".airtap.yml\"),\n\trcfile(\".c8rc\"),\n\trcfile(\".nycrc\"),\n\n\t/* tests */\n\tdirectory(\"examples?\"),\n\tdirectory(\"perf\"),\n\tdirectory(\"tests?\"),\n\tfilename(\"cypress.json\"),\n\tfilename(\"cypress.config.js\"),\n\tfilename(\"cypress.config.cjs\"),\n\tfilename(\"cypress.config.mjs\"),\n\tfilename(\"cypress.config.ts\"),\n\tfilename(\"karma.config.js\"),\n\tfilename(\"mocha.opts\"),\n\tfilename(\"playwright.config.js\"),\n\tfilename(\"playwright.config.cjs\"),\n\tfilename(\"playwright.config.mjs\"),\n\tfilename(\"playwright.config.ts\"),\n\tfilename(\"test.js\"),\n\tfilename(\"testem.json\"),\n\tfilename(\"testem.yml\"),\n\tfilename(\"wallaby.config.js\"),\n\tfilename(\"wallaby.js\"),\n\n\t/* linting */\n\tfilename(\".htmlvalidate.json\"),\n\tfilename(\".jshintignore\"),\n\tfilename(`tslint.json`),\n\tfilename(`tslint.yaml`),\n\tfilename(\".jscs.json\"),\n\trcfile(`.jscsrc`),\n\trcfile(`.jshintrc`),\n\n\t/* toolchains */\n\tfilename(\"rollup.config.js\"),\n\tfilename(\"webpack.config.js\"),\n\n\t/* task runners */\n\tfilename(\"[gG]runtfile.js\"),\n\tfilename(\"[gG]ulpfile.[jt]s\"),\n\tfilename(\"dangerfile.[jt]s\"),\n\tfilename(\"gulpfile.babel.js\"),\n\tfilename(\"gulpfile.esm.js\"),\n\tfilename(\"Herebyfile.js\"),\n\tfilename(\"Herebyfile.mjs\"),\n\n\t/* ci */\n\t/^\\.azure-.*$/,\n\tdirectory(\".circleci\"),\n\tdirectory(\".github\"),\n\tdirectory(\".gitlab\"),\n\tdirectory(\".?zuul.d\"),\n\tfilename(\".coveralls.yml\"),\n\tfilename(\".gitlab-ci.yml\"),\n\tfilename(\".travis.yml\"),\n\tfilename(\".?zuul.ya?ml\"),\n\tfilename(\"ISSUE_TEMPLATE.md\"),\n\tfilename(\"Jenkinsfile\"),\n\tfilename(\"PULL_REQUEST_TEMPLATE.md\"),\n\tfilename(\"appveyor.yml\"),\n\n\t/* editor specific files */\n\t/(^|\\/)\\.sw[a-p]/ /* vim */,\n\tdirectory(\".vscode\"),\n\textension(\".sublime-project\"),\n\textension(\".sublime-workspace\"),\n\tfilename(\".vscodeignore\"),\n\tfilename(\"Session.vim\"),\n\tfilename(\"Sessionx.vim\"),\n\tdirectory(\".idea\"),\n\tfilename(\".tm_properties\") /* textmate */,\n\n\t/* OS */\n\tdirectory(\".AppleDouble\"),\n\tdirectory(\".DS_Store\"),\n\tdirectory(\".LSOverride\"),\n\n\t/* logs */\n\tdirectory(\"logs\"),\n\textension(\".log\"),\n\n\t/* runtime */\n\tdirectory(\"pids\"),\n\textension(\".pid\"),\n\textension(\".pid.lock\"),\n\textension(\".seed\"),\n\n\t/* misc */\n\t/^[Jj]akefile(\\.js)?$/,\n\textension(\".bak\"),\n\textension(\".swp\"),\n\textension(\".tgz\"),\n\textension(\".tmp\"),\n\tfilename(\".env\"),\n\tfilename(\".svgo.yml\"),\n\tfilename(\".editorconfig\"),\n\tfilename(\".ext-prepush\"),\n\tfilename(\".tonic_example.js\"),\n\tfilename(\".flowconfig\"),\n\tfilename(\".cardinalrc\"),\n\tfilename(\"bower.json\"),\n\tfilename(\"commitlint.config.js\") /* commitlint */,\n\tfilename(\"composer.json\"),\n\tfilename(\"netlify.toml\"),\n\tfilename(\"release.config.js\") /* semantic release */,\n\n\t...ava,\n\t...emacs,\n\t...eslint,\n\t...fimbullinter,\n\t...git,\n\t...jest,\n\t...node,\n\t...prettier,\n\t...typescript,\n\t...windows,\n];\n\nexport default blacklist;\n", "import blacklist from \"./blacklist/index\";\n\nexport function setupBlacklist(name: string): void {\n\t/* eslint-disable-next-line security/detect-non-literal-regexp -- expected to be non-literal */\n\tblacklist.push(new RegExp(`^${name}-\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.tgz$`));\n}\n\nexport function isBlacklisted(filename: string): boolean {\n\treturn blacklist.some((entry) => filename.match(entry));\n}\n", "import fs from \"fs\";\nimport tar, { type ReadEntry, Parse } from \"tar\";\nimport { type PackageJson, type PackageJsonExports } from \"./types\";\nimport { isBlacklisted } from \"./blacklist\";\nimport { type Message } from \"./message\";\nimport { type Result } from \"./result\";\n\nexport interface TarballMeta {\n\t/** Path to tarball on disk */\n\tfilePath: string;\n\n\t/** Path to use in report (default filePath) */\n\treportPath?: string;\n}\n\ninterface RequiredFile {\n\tfield: string;\n\truleId: string;\n\tfilename: string;\n}\n\nconst ruleId = \"no-missing-main\";\n\nfunction normalize(filename: string): string {\n\treturn filename.replace(/^[^/]+\\//, \"\");\n}\n\nexport async function getFileList(filename: string): Promise<string[]> {\n\tconst entries: ReadEntry[] = [];\n\tawait tar.list({\n\t\tfile: filename,\n\t\tstrict: true,\n\t\tonentry: (entry: ReadEntry) => entries.push(entry),\n\t});\n\treturn entries.map((entry) => {\n\t\tconst filename = entry.path as unknown as string;\n\t\treturn normalize(filename);\n\t});\n}\n\nexport async function getFileContent(\n\ttarball: TarballMeta,\n\tfilenames: string[],\n): Promise<Record<string, Buffer>> {\n\tconst contents: Record<string, Buffer> = {};\n\n\treturn new Promise((resolve, reject) => {\n\t\tconst t = new Parse({\n\t\t\tfilter(_path: string, entry: tar.ReadEntry): boolean {\n\t\t\t\treturn filenames.includes(normalize(entry.path));\n\t\t\t},\n\t\t});\n\t\tt.on(\"entry\", (entry: tar.ReadEntry) => {\n\t\t\tconst p = normalize(entry.path);\n\t\t\tcontents[p] = Buffer.alloc(0);\n\t\t\tentry.on(\"data\", (data: Buffer) => {\n\t\t\t\tcontents[p] = Buffer.concat([contents[p], data]);\n\t\t\t});\n\t\t\tentry.on(\"error\", (error) => {\n\t\t\t\t/* eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- technical debt */\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t\tt.on(\"end\", () => {\n\t\t\tresolve(contents);\n\t\t});\n\t\tconst rs = fs.createReadStream(tarball.filePath);\n\t\trs.pipe(t);\n\t});\n}\n\nexport function blacklistedFiles(filelist: string[]): string[] {\n\treturn filelist.filter(isBlacklisted);\n}\n\nfunction normalizeRequiredFiles(\n\tsrc: string | string[] | Record<string, string | boolean>,\n): string[] {\n\tif (typeof src === \"string\") {\n\t\treturn [src];\n\t} else if (Array.isArray(src)) {\n\t\treturn src;\n\t} else {\n\t\treturn Object.values(src).filter((it) => it !== false) as string[];\n\t}\n}\n\nfunction* yieldRequiredFiles(\n\tsrc: string | string[] | Record<string, string | boolean>,\n\ttemplate: Pick<RequiredFile, \"field\" | \"ruleId\">,\n): Generator<RequiredFile> {\n\tconst files = normalizeRequiredFiles(src);\n\tfor (const filename of files) {\n\t\tyield { ...template, filename };\n\t}\n}\n\nfunction* yieldExportedFiles(\n\texports: undefined | null | string | PackageJsonExports,\n): Generator<RequiredFile> {\n\tif (!exports) {\n\t\treturn;\n\t}\n\n\tif (typeof exports === \"string\") {\n\t\tyield {\n\t\t\tfield: \"exports\",\n\t\t\truleId: \"no-missing-exports\",\n\t\t\tfilename: exports,\n\t\t};\n\t\treturn;\n\t}\n\n\tfor (const [key, value] of Object.entries(exports)) {\n\t\t/* ignore wildcards for now */\n\t\tif (key.includes(\"*\")) {\n\t\t\tcontinue;\n\t\t}\n\t\tyield* yieldExportedFiles(value);\n\t}\n}\n\nfunction* requiredFiles(pkg: PackageJson): Generator<RequiredFile> {\n\tyield* yieldExportedFiles(pkg.exports);\n\tif (pkg.main) {\n\t\tyield* yieldRequiredFiles(pkg.main, { field: \"main\", ruleId });\n\t}\n\tif (pkg.browser) {\n\t\tyield* yieldRequiredFiles(pkg.browser, { field: \"browser\", ruleId });\n\t}\n\tif (pkg.module) {\n\t\tyield* yieldRequiredFiles(pkg.module, { field: \"module\", ruleId });\n\t}\n\t/* eslint-disable-next-line sonarjs/no-duplicate-string -- doesn't help readability */\n\tif (pkg[\"jsnext:main\"]) {\n\t\tyield* yieldRequiredFiles(pkg[\"jsnext:main\"], {\n\t\t\tfield: \"jsnext:main\",\n\t\t\truleId,\n\t\t});\n\t}\n\tif (pkg.typings) {\n\t\tyield* yieldRequiredFiles(pkg.typings, { field: \"typings\", ruleId: \"no-missing-typings\" });\n\t}\n\tif (pkg.bin) {\n\t\tyield* yieldRequiredFiles(pkg.bin, { field: \"bin\", ruleId: \"no-missing-binary\" });\n\t}\n\tif (pkg.man) {\n\t\tyield* yieldRequiredFiles(pkg.man, { field: \"man\", ruleId: \"no-missing-man\" });\n\t}\n}\n\nfunction fileExists(filelist: string[], filename: string): boolean {\n\t/* strip leading ./ */\n\tfilename = filename.replace(/^\\.\\//, \"\");\n\n\t/* exact match for filename */\n\tif (filelist.includes(filename)) {\n\t\treturn true;\n\t}\n\n\t/* try to append \".js\" */\n\tif (filelist.includes(`${filename}.js`)) {\n\t\treturn true;\n\t}\n\n\t/* test if it is actually a directory with index.js */\n\tif (filelist.includes(`${filename.replace(/\\/$/, \"\")}/index.js`)) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * @param pkg - Parsed `package.json` data\n * @param tarball - Tarball paths\n */\nexport async function verifyTarball(pkg: PackageJson, tarball: TarballMeta): Promise<Result[]> {\n\tconst messages: Message[] = [];\n\tconst filelist = await getFileList(tarball.filePath);\n\n\tfor (const filename of blacklistedFiles(filelist)) {\n\t\tmessages.push({\n\t\t\truleId: \"no-disallowed-files\",\n\t\t\tseverity: 2,\n\t\t\tmessage: `${filename} is not allowed in tarball`,\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t});\n\t}\n\n\tfor (const requiredFile of requiredFiles(pkg)) {\n\t\tif (!fileExists(filelist, requiredFile.filename)) {\n\t\t\tmessages.push({\n\t\t\t\truleId: requiredFile.ruleId,\n\t\t\t\tseverity: 2,\n\t\t\t\tmessage: `${requiredFile.filename} (pkg.${requiredFile.field}) is not present in tarball`,\n\t\t\t\tline: 1,\n\t\t\t\tcolumn: 1,\n\t\t\t});\n\t\t}\n\t}\n\n\tif (messages.length === 0) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\t{\n\t\t\tmessages,\n\t\t\tfilePath: tarball.reportPath ?? tarball.filePath,\n\t\t\terrorCount: messages.filter((it) => it.severity === 2).length,\n\t\t\twarningCount: messages.filter((it) => it.severity === 1).length,\n\t\t\tfixableErrorCount: 0,\n\t\t\tfixableWarningCount: 0,\n\t\t},\n\t];\n}\n", "export class ValidationError extends Error {\n\tpublic validator: string;\n\n\tpublic constructor(validator: string, message: string) {\n\t\tsuper(message);\n\t\tthis.validator = validator;\n\t}\n}\n", "function isEmpty(value: any): boolean {\n\t/* undefined, null and empty string is considered empty */\n\treturn typeof value === \"undefined\" || value === null || value === \"\";\n}\n\nexport function nonempty(key: string, value: unknown): void {\n\tif (isEmpty(value)) {\n\t\tthrow new Error(`\"${key}\" must not be empty`);\n\t}\n\n\t/* any number is considered set, even 0 */\n\tif (typeof value === \"number\") {\n\t\treturn;\n\t}\n\n\t/* for arrays the array must be populated and each entry but be non-empty */\n\tif (Array.isArray(value)) {\n\t\tif (value.length === 0) {\n\t\t\tthrow new Error(`\"${key}\" must not be empty`);\n\t\t}\n\t\t/* eslint-disable-next-line @typescript-eslint/no-for-in-array -- technical debt */\n\t\tfor (const index in value) {\n\t\t\tnonempty(`${key}[${index}]`, value[index]);\n\t\t}\n\t\treturn;\n\t}\n\n\t/* object must have at least one one property set */\n\tif (value && typeof value === \"object\") {\n\t\tconst values = Object.values(value);\n\t\tif (values.length === 0) {\n\t\t\tthrow new Error(`\"${key}\" must not be empty`);\n\t\t}\n\t}\n}\n", "import { ValidationError } from \"./validation-error\";\n\nexport function present(key: string, value: any): void {\n\tif (typeof value === \"undefined\" || value === null) {\n\t\tthrow new ValidationError(present.name, `\"${key}\" must be set`);\n\t}\n}\n", "export function typeArray(key: string, value: any): void {\n\tif (!Array.isArray(value)) {\n\t\tthrow new Error(`\"${key}\" must be array`);\n\t}\n\t/* eslint-disable-next-line @typescript-eslint/no-for-in-array -- technical debt */\n\tfor (const index in value) {\n\t\tif (typeof value[index] !== \"string\") {\n\t\t\tthrow new Error(`\"${key}[${index}]\" must be string`);\n\t\t}\n\t}\n}\n", "export function typeString(key: string, value: any): void {\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`\"${key}\" must be string`);\n\t}\n}\n", "function validateType(key: string, value: unknown): void {\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`\"${key}.type\" must be a string`);\n\t}\n\tif (value !== \"git\") {\n\t\tthrow new Error(`\"${key}.type\" must be \"git\"`);\n\t}\n}\n\nfunction validateUrl(key: string, value: unknown): void {\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`\"${key}.url\" must be a string`);\n\t}\n\tif (value.trim() === \"\") {\n\t\tthrow new Error(`\"${key}.url\" must not be empty`);\n\t}\n\tif (value !== value.trim()) {\n\t\tthrow new Error(`\"${key}.url\" must not have leading or trailing whitespace`);\n\t}\n\tconst url = new URL(value);\n\tif (url.protocol === \"git+http:\" || url.protocol === \"http:\") {\n\t\tthrow new Error(`\"${key}.url\" must use \"git+https://\" instead of \"http://\"`);\n\t}\n\tif (url.protocol !== \"git+https:\") {\n\t\tthrow new Error(`\"${key}.url\" must use \"git+https://\" protocol`);\n\t}\n\tif (url.host === \"\") {\n\t\tthrow new Error(`\"${key}.url\" be a valid url`);\n\t}\n}\n\nfunction validateDirectory(key: string, value: unknown): void {\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`\"${key}.directory\" must be a string`);\n\t}\n\tif (value.trim() === \"\") {\n\t\tthrow new Error(\n\t\t\t`\"${key}.directory\" must be set to non-empty string or the property must be removed`,\n\t\t);\n\t}\n}\n\nexport function validRepoUrl(key: string, value: unknown): void {\n\tif (value === undefined) {\n\t\treturn;\n\t}\n\tif (typeof value !== \"object\" || value === null) {\n\t\tthrow new Error(`\"${key}\" must be an object with \"type\" and \"url\"`);\n\t}\n\tif (\"type\" in value) {\n\t\tvalidateType(key, value.type);\n\t} else {\n\t\tthrow new Error(`\"${key}\" is missing required \"type\" property`);\n\t}\n\tif (\"url\" in value) {\n\t\tvalidateUrl(key, value.url);\n\t} else {\n\t\tthrow new Error(`\"${key}\" is missing required \"url\" property`);\n\t}\n\tif (\"directory\" in value) {\n\t\tvalidateDirectory(key, value.directory);\n\t}\n}\n", "export function validUrl(key: string, value: any): void {\n\tif (typeof value === \"string\" && value.match(/^https:\\/\\/.+$/)) {\n\t\treturn;\n\t} else if (value?.url) {\n\t\tvalidUrl(`${key}.url`, value.url);\n\t} else {\n\t\tthrow new Error(`\"${key}\" must be a valid url (https only)`);\n\t}\n}\n", "import semver from \"semver\";\nimport { type Message } from \"../message\";\nimport { type PackageJson } from \"../types\";\nimport { npmInfo } from \"../utils\";\nimport { isNpmInfoError } from \"../utils/npm-info\";\n\nconst ruleId = \"no-deprecated-dependency\";\n\nfunction* getDependencies(pkg: PackageJson): Generator<string> {\n\tconst { dependencies = {}, devDependencies = {}, peerDependencies = {} } = pkg;\n\tconst allDependencies = { ...dependencies, ...devDependencies, ...peerDependencies };\n\tfor (const [key, version] of Object.entries(allDependencies)) {\n\t\t/* ignore this as this package is sometimes is present as version \"*\" which\n\t\t * just yields way to many versions to handle causing MaxBuffer errors and\n\t\t * there is another rule to make sure the outermost @types/node package\n\t\t * matches the configured engines */\n\t\tif (key === \"@types/node\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst minVersion = semver.minVersion(version);\n\t\tyield `${key}@${minVersion ? minVersion.version : version}`;\n\t}\n}\n\nexport async function deprecatedDependency(pkg: PackageJson): Promise<Message[]> {\n\tconst messages: Message[] = [];\n\n\tfor await (const dependency of getDependencies(pkg)) {\n\t\ttry {\n\t\t\tconst { deprecated } = await npmInfo(dependency);\n\t\t\tif (!deprecated) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tmessages.push({\n\t\t\t\truleId,\n\t\t\t\tseverity: 2,\n\t\t\t\tmessage: `\"${dependency}\" is deprecated and must not be used`,\n\t\t\t\tline: 1,\n\t\t\t\tcolumn: 1,\n\t\t\t});\n\t\t} catch (err: unknown) {\n\t\t\tif (isNpmInfoError(err) && err.code === \"E404\") {\n\t\t\t\tmessages.push({\n\t\t\t\t\truleId,\n\t\t\t\t\tseverity: 1,\n\t\t\t\t\tmessage: `the dependency \"${dependency}\" is not published to the NPM registry`,\n\t\t\t\t\tline: 1,\n\t\t\t\t\tcolumn: 1,\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\treturn messages;\n}\n", "import {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport childProcess from 'node:child_process';\nimport process from 'node:process';\nimport crossSpawn from 'cross-spawn';\nimport stripFinalNewline from 'strip-final-newline';\nimport {npmRunPathEnv} from 'npm-run-path';\nimport onetime from 'onetime';\nimport {makeError} from './lib/error.js';\nimport {normalizeStdio, normalizeStdioNode} from './lib/stdio.js';\nimport {spawnedKill, spawnedCancel, setupTimeout, validateTimeout, setExitHandler} from './lib/kill.js';\nimport {addPipeMethods} from './lib/pipe.js';\nimport {handleInput, getSpawnedResult, makeAllStream, handleInputSync} from './lib/stream.js';\nimport {mergePromise, getSpawnedPromise} from './lib/promise.js';\nimport {joinCommand, parseCommand, parseTemplates, getEscapedCommand} from './lib/command.js';\nimport {logCommand, verboseDefault} from './lib/verbose.js';\n\nconst DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;\n\nconst getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {\n\tconst env = extendEnv ? {...process.env, ...envOption} : envOption;\n\n\tif (preferLocal) {\n\t\treturn npmRunPathEnv({env, cwd: localDir, execPath});\n\t}\n\n\treturn env;\n};\n\nconst handleArguments = (file, args, options = {}) => {\n\tconst parsed = crossSpawn._parse(file, args, options);\n\tfile = parsed.command;\n\targs = parsed.args;\n\toptions = parsed.options;\n\n\toptions = {\n\t\tmaxBuffer: DEFAULT_MAX_BUFFER,\n\t\tbuffer: true,\n\t\tstripFinalNewline: true,\n\t\textendEnv: true,\n\t\tpreferLocal: false,\n\t\tlocalDir: options.cwd || process.cwd(),\n\t\texecPath: process.execPath,\n\t\tencoding: 'utf8',\n\t\treject: true,\n\t\tcleanup: true,\n\t\tall: false,\n\t\twindowsHide: true,\n\t\tverbose: verboseDefault,\n\t\t...options,\n\t};\n\n\toptions.env = getEnv(options);\n\n\toptions.stdio = normalizeStdio(options);\n\n\tif (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {\n\t\t// #116\n\t\targs.unshift('/q');\n\t}\n\n\treturn {file, args, options, parsed};\n};\n\nconst handleOutput = (options, value, error) => {\n\tif (typeof value !== 'string' && !Buffer.isBuffer(value)) {\n\t\t// When `execaSync()` errors, we normalize it to '' to mimic `execa()`\n\t\treturn error === undefined ? undefined : '';\n\t}\n\n\tif (options.stripFinalNewline) {\n\t\treturn stripFinalNewline(value);\n\t}\n\n\treturn value;\n};\n\nexport function execa(file, args, options) {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\tlogCommand(escapedCommand, parsed.options);\n\n\tvalidateTimeout(parsed.options);\n\n\tlet spawned;\n\ttry {\n\t\tspawned = childProcess.spawn(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\t// Ensure the returned error is always both a promise and a child process\n\t\tconst dummySpawned = new childProcess.ChildProcess();\n\t\tconst errorPromise = Promise.reject(makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false,\n\t\t}));\n\t\tmergePromise(dummySpawned, errorPromise);\n\t\treturn dummySpawned;\n\t}\n\n\tconst spawnedPromise = getSpawnedPromise(spawned);\n\tconst timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);\n\tconst processDone = setExitHandler(spawned, parsed.options, timedPromise);\n\n\tconst context = {isCanceled: false};\n\n\tspawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));\n\tspawned.cancel = spawnedCancel.bind(null, spawned, context);\n\n\tconst handlePromise = async () => {\n\t\tconst [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone);\n\t\tconst stdout = handleOutput(parsed.options, stdoutResult);\n\t\tconst stderr = handleOutput(parsed.options, stderrResult);\n\t\tconst all = handleOutput(parsed.options, allResult);\n\n\t\tif (error || exitCode !== 0 || signal !== null) {\n\t\t\tconst returnedError = makeError({\n\t\t\t\terror,\n\t\t\t\texitCode,\n\t\t\t\tsignal,\n\t\t\t\tstdout,\n\t\t\t\tstderr,\n\t\t\t\tall,\n\t\t\t\tcommand,\n\t\t\t\tescapedCommand,\n\t\t\t\tparsed,\n\t\t\t\ttimedOut,\n\t\t\t\tisCanceled: context.isCanceled || (parsed.options.signal ? parsed.options.signal.aborted : false),\n\t\t\t\tkilled: spawned.killed,\n\t\t\t});\n\n\t\t\tif (!parsed.options.reject) {\n\t\t\t\treturn returnedError;\n\t\t\t}\n\n\t\t\tthrow returnedError;\n\t\t}\n\n\t\treturn {\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\texitCode: 0,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\tall,\n\t\t\tfailed: false,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false,\n\t\t};\n\t};\n\n\tconst handlePromiseOnce = onetime(handlePromise);\n\n\thandleInput(spawned, parsed.options);\n\n\tspawned.all = makeAllStream(spawned, parsed.options);\n\n\taddPipeMethods(spawned);\n\tmergePromise(spawned, handlePromiseOnce);\n\treturn spawned;\n}\n\nexport function execaSync(file, args, options) {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\tlogCommand(escapedCommand, parsed.options);\n\n\tconst input = handleInputSync(parsed.options);\n\n\tlet result;\n\ttry {\n\t\tresult = childProcess.spawnSync(parsed.file, parsed.args, {...parsed.options, input});\n\t} catch (error) {\n\t\tthrow makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false,\n\t\t});\n\t}\n\n\tconst stdout = handleOutput(parsed.options, result.stdout, result.error);\n\tconst stderr = handleOutput(parsed.options, result.stderr, result.error);\n\n\tif (result.error || result.status !== 0 || result.signal !== null) {\n\t\tconst error = makeError({\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\terror: result.error,\n\t\t\tsignal: result.signal,\n\t\t\texitCode: result.status,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: result.error && result.error.code === 'ETIMEDOUT',\n\t\t\tisCanceled: false,\n\t\t\tkilled: result.signal !== null,\n\t\t});\n\n\t\tif (!parsed.options.reject) {\n\t\t\treturn error;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\treturn {\n\t\tcommand,\n\t\tescapedCommand,\n\t\texitCode: 0,\n\t\tstdout,\n\t\tstderr,\n\t\tfailed: false,\n\t\ttimedOut: false,\n\t\tisCanceled: false,\n\t\tkilled: false,\n\t};\n}\n\nconst normalizeScriptStdin = ({input, inputFile, stdio}) => input === undefined && inputFile === undefined && stdio === undefined\n\t? {stdin: 'inherit'}\n\t: {};\n\nconst normalizeScriptOptions = (options = {}) => ({\n\tpreferLocal: true,\n\t...normalizeScriptStdin(options),\n\t...options,\n});\n\nfunction create$(options) {\n\tfunction $(templatesOrOptions, ...expressions) {\n\t\tif (!Array.isArray(templatesOrOptions)) {\n\t\t\treturn create$({...options, ...templatesOrOptions});\n\t\t}\n\n\t\tconst [file, ...args] = parseTemplates(templatesOrOptions, expressions);\n\t\treturn execa(file, args, normalizeScriptOptions(options));\n\t}\n\n\t$.sync = (templates, ...expressions) => {\n\t\tif (!Array.isArray(templates)) {\n\t\t\tthrow new TypeError('Please use $(options).sync`command` instead of $.sync(options)`command`.');\n\t\t}\n\n\t\tconst [file, ...args] = parseTemplates(templates, expressions);\n\t\treturn execaSync(file, args, normalizeScriptOptions(options));\n\t};\n\n\treturn $;\n}\n\nexport const $ = create$();\n\nexport function execaCommand(command, options) {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa(file, args, options);\n}\n\nexport function execaCommandSync(command, options) {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execaSync(file, args, options);\n}\n\nexport function execaNode(scriptPath, args, options = {}) {\n\tif (args && !Array.isArray(args) && typeof args === 'object') {\n\t\toptions = args;\n\t\targs = [];\n\t}\n\n\tconst stdio = normalizeStdioNode(options);\n\tconst defaultExecArgv = process.execArgv.filter(arg => !arg.startsWith('--inspect'));\n\n\tconst {\n\t\tnodePath = process.execPath,\n\t\tnodeOptions = defaultExecArgv,\n\t} = options;\n\n\treturn execa(\n\t\tnodePath,\n\t\t[\n\t\t\t...nodeOptions,\n\t\t\tscriptPath,\n\t\t\t...(Array.isArray(args) ? args : []),\n\t\t],\n\t\t{\n\t\t\t...options,\n\t\t\tstdin: undefined,\n\t\t\tstdout: undefined,\n\t\t\tstderr: undefined,\n\t\t\tstdio,\n\t\t\tshell: false,\n\t\t},\n\t);\n}\n", "export default function stripFinalNewline(input) {\n\tconst LF = typeof input === 'string' ? '\\n' : '\\n'.charCodeAt();\n\tconst CR = typeof input === 'string' ? '\\r' : '\\r'.charCodeAt();\n\n\tif (input[input.length - 1] === LF) {\n\t\tinput = input.slice(0, -1);\n\t}\n\n\tif (input[input.length - 1] === CR) {\n\t\tinput = input.slice(0, -1);\n\t}\n\n\treturn input;\n}\n", "import process from 'node:process';\nimport path from 'node:path';\nimport url from 'node:url';\nimport pathKey from 'path-key';\n\nexport function npmRunPath(options = {}) {\n\tconst {\n\t\tcwd = process.cwd(),\n\t\tpath: path_ = process.env[pathKey()],\n\t\texecPath = process.execPath,\n\t} = options;\n\n\tlet previous;\n\tconst cwdString = cwd instanceof URL ? url.fileURLToPath(cwd) : cwd;\n\tlet cwdPath = path.resolve(cwdString);\n\tconst result = [];\n\n\twhile (previous !== cwdPath) {\n\t\tresult.push(path.join(cwdPath, 'node_modules/.bin'));\n\t\tprevious = cwdPath;\n\t\tcwdPath = path.resolve(cwdPath, '..');\n\t}\n\n\t// Ensure the running `node` binary is used.\n\tresult.push(path.resolve(cwdString, execPath, '..'));\n\n\treturn [...result, path_].join(path.delimiter);\n}\n\nexport function npmRunPathEnv({env = process.env, ...options} = {}) {\n\tenv = {...env};\n\n\tconst path = pathKey({env});\n\toptions.path = env[path];\n\tenv[path] = npmRunPath(options);\n\n\treturn env;\n}\n", "export default function pathKey(options = {}) {\n\tconst {\n\t\tenv = process.env,\n\t\tplatform = process.platform\n\t} = options;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(env).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n}\n", "const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable &&\n\t\ttoDescriptor.enumerable === fromDescriptor.enumerable &&\n\t\ttoDescriptor.configurable === fromDescriptor.configurable &&\n\t\t(toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tObject.defineProperty(to, 'toString', {...toStringDescriptor, value: newToString});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n", "import mimicFunction from 'mimic-fn';\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '<anonymous>';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = null;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFunction(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nonetime.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n\nexport default onetime;\n", "import process from 'node:process';\nimport {signalsByName} from 'human-signals';\n\nconst getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {\n\tif (timedOut) {\n\t\treturn `timed out after ${timeout} milliseconds`;\n\t}\n\n\tif (isCanceled) {\n\t\treturn 'was canceled';\n\t}\n\n\tif (errorCode !== undefined) {\n\t\treturn `failed with ${errorCode}`;\n\t}\n\n\tif (signal !== undefined) {\n\t\treturn `was killed with ${signal} (${signalDescription})`;\n\t}\n\n\tif (exitCode !== undefined) {\n\t\treturn `failed with exit code ${exitCode}`;\n\t}\n\n\treturn 'failed';\n};\n\nexport const makeError = ({\n\tstdout,\n\tstderr,\n\tall,\n\terror,\n\tsignal,\n\texitCode,\n\tcommand,\n\tescapedCommand,\n\ttimedOut,\n\tisCanceled,\n\tkilled,\n\tparsed: {options: {timeout, cwd = process.cwd()}},\n}) => {\n\t// `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.\n\t// We normalize them to `undefined`\n\texitCode = exitCode === null ? undefined : exitCode;\n\tsignal = signal === null ? undefined : signal;\n\tconst signalDescription = signal === undefined ? undefined : signalsByName[signal].description;\n\n\tconst errorCode = error && error.code;\n\n\tconst prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});\n\tconst execaMessage = `Command ${prefix}: ${command}`;\n\tconst isError = Object.prototype.toString.call(error) === '[object Error]';\n\tconst shortMessage = isError ? `${execaMessage}\\n${error.message}` : execaMessage;\n\tconst message = [shortMessage, stderr, stdout].filter(Boolean).join('\\n');\n\n\tif (isError) {\n\t\terror.originalMessage = error.message;\n\t\terror.message = message;\n\t} else {\n\t\terror = new Error(message);\n\t}\n\n\terror.shortMessage = shortMessage;\n\terror.command = command;\n\terror.escapedCommand = escapedCommand;\n\terror.exitCode = exitCode;\n\terror.signal = signal;\n\terror.signalDescription = signalDescription;\n\terror.stdout = stdout;\n\terror.stderr = stderr;\n\terror.cwd = cwd;\n\n\tif (all !== undefined) {\n\t\terror.all = all;\n\t}\n\n\tif ('bufferedData' in error) {\n\t\tdelete error.bufferedData;\n\t}\n\n\terror.failed = true;\n\terror.timedOut = Boolean(timedOut);\n\terror.isCanceled = isCanceled;\n\terror.killed = killed && !timedOut;\n\n\treturn error;\n};\n", "import{constants}from\"node:os\";\n\nimport{SIGRTMAX}from\"./realtime.js\";\nimport{getSignals}from\"./signals.js\";\n\n\n\nconst getSignalsByName=()=>{\nconst signals=getSignals();\nreturn Object.fromEntries(signals.map(getSignalByName))\n};\n\nconst getSignalByName=({\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard\n})=>[name,{name,number,description,supported,action,forced,standard}];\n\nexport const signalsByName=getSignalsByName();\n\n\n\n\nconst getSignalsByNumber=()=>{\nconst signals=getSignals();\nconst length=SIGRTMAX+1;\nconst signalsA=Array.from({length},(value,number)=>\ngetSignalByNumber(number,signals)\n);\nreturn Object.assign({},...signalsA)\n};\n\nconst getSignalByNumber=(number,signals)=>{\nconst signal=findSignalByNumber(number,signals);\n\nif(signal===undefined){\nreturn{}\n}\n\nconst{name,description,supported,action,forced,standard}=signal;\nreturn{\n[number]:{\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard\n}\n}\n};\n\n\n\nconst findSignalByNumber=(number,signals)=>{\nconst signal=signals.find(({name})=>constants.signals[name]===number);\n\nif(signal!==undefined){\nreturn signal\n}\n\nreturn signals.find((signalA)=>signalA.number===number)\n};\n\nexport const signalsByNumber=getSignalsByNumber();", "\nexport const getRealtimeSignals=()=>{\nconst length=SIGRTMAX-SIGRTMIN+1;\nreturn Array.from({length},getRealtimeSignal)\n};\n\nconst getRealtimeSignal=(value,index)=>({\nname:`SIGRT${index+1}`,\nnumber:SIGRTMIN+index,\naction:\"terminate\",\ndescription:\"Application-specific signal (realtime)\",\nstandard:\"posix\"\n});\n\nconst SIGRTMIN=34;\nexport const SIGRTMAX=64;", "import{constants}from\"node:os\";\n\nimport{SIGNALS}from\"./core.js\";\nimport{getRealtimeSignals}from\"./realtime.js\";\n\n\n\nexport const getSignals=()=>{\nconst realtimeSignals=getRealtimeSignals();\nconst signals=[...SIGNALS,...realtimeSignals].map(normalizeSignal);\nreturn signals\n};\n\n\n\n\n\n\n\nconst normalizeSignal=({\nname,\nnumber:defaultNumber,\ndescription,\naction,\nforced=false,\nstandard\n})=>{\nconst{\nsignals:{[name]:constantSignal}\n}=constants;\nconst supported=constantSignal!==undefined;\nconst number=supported?constantSignal:defaultNumber;\nreturn{name,number,description,supported,action,forced,standard}\n};", "\n\nexport const SIGNALS=[\n{\nname:\"SIGHUP\",\nnumber:1,\naction:\"terminate\",\ndescription:\"Terminal closed\",\nstandard:\"posix\"\n},\n{\nname:\"SIGINT\",\nnumber:2,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-C\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGQUIT\",\nnumber:3,\naction:\"core\",\ndescription:\"User interruption with CTRL-\\\\\",\nstandard:\"posix\"\n},\n{\nname:\"SIGILL\",\nnumber:4,\naction:\"core\",\ndescription:\"Invalid machine instruction\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGTRAP\",\nnumber:5,\naction:\"core\",\ndescription:\"Debugger breakpoint\",\nstandard:\"posix\"\n},\n{\nname:\"SIGABRT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGIOT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGBUS\",\nnumber:7,\naction:\"core\",\ndescription:\n\"Bus error due to misaligned, non-existing address or paging error\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGEMT\",\nnumber:7,\naction:\"terminate\",\ndescription:\"Command should be emulated but is not implemented\",\nstandard:\"other\"\n},\n{\nname:\"SIGFPE\",\nnumber:8,\naction:\"core\",\ndescription:\"Floating point arithmetic error\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGKILL\",\nnumber:9,\naction:\"terminate\",\ndescription:\"Forced termination\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGUSR1\",\nnumber:10,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"\n},\n{\nname:\"SIGSEGV\",\nnumber:11,\naction:\"core\",\ndescription:\"Segmentation fault\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGUSR2\",\nnumber:12,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"\n},\n{\nname:\"SIGPIPE\",\nnumber:13,\naction:\"terminate\",\ndescription:\"Broken pipe or socket\",\nstandard:\"posix\"\n},\n{\nname:\"SIGALRM\",\nnumber:14,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"posix\"\n},\n{\nname:\"SIGTERM\",\nnumber:15,\naction:\"terminate\",\ndescription:\"Termination\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGSTKFLT\",\nnumber:16,\naction:\"terminate\",\ndescription:\"Stack is empty or overflowed\",\nstandard:\"other\"\n},\n{\nname:\"SIGCHLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"posix\"\n},\n{\nname:\"SIGCLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"other\"\n},\n{\nname:\"SIGCONT\",\nnumber:18,\naction:\"unpause\",\ndescription:\"Unpaused\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGSTOP\",\nnumber:19,\naction:\"pause\",\ndescription:\"Paused\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGTSTP\",\nnumber:20,\naction:\"pause\",\ndescription:\"Paused using CTRL-Z or \\\"suspend\\\"\",\nstandard:\"posix\"\n},\n{\nname:\"SIGTTIN\",\nnumber:21,\naction:\"pause\",\ndescription:\"Background process cannot read terminal input\",\nstandard:\"posix\"\n},\n{\nname:\"SIGBREAK\",\nnumber:21,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-BREAK\",\nstandard:\"other\"\n},\n{\nname:\"SIGTTOU\",\nnumber:22,\naction:\"pause\",\ndescription:\"Background process cannot write to terminal output\",\nstandard:\"posix\"\n},\n{\nname:\"SIGURG\",\nnumber:23,\naction:\"ignore\",\ndescription:\"Socket received out-of-band data\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGXCPU\",\nnumber:24,\naction:\"core\",\ndescription:\"Process timed out\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGXFSZ\",\nnumber:25,\naction:\"core\",\ndescription:\"File too big\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGVTALRM\",\nnumber:26,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGPROF\",\nnumber:27,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGWINCH\",\nnumber:28,\naction:\"ignore\",\ndescription:\"Terminal window size changed\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGIO\",\nnumber:29,\naction:\"terminate\",\ndescription:\"I/O is available\",\nstandard:\"other\"\n},\n{\nname:\"SIGPOLL\",\nnumber:29,\naction:\"terminate\",\ndescription:\"Watched event\",\nstandard:\"other\"\n},\n{\nname:\"SIGINFO\",\nnumber:29,\naction:\"ignore\",\ndescription:\"Request for process information\",\nstandard:\"other\"\n},\n{\nname:\"SIGPWR\",\nnumber:30,\naction:\"terminate\",\ndescription:\"Device running out of power\",\nstandard:\"systemv\"\n},\n{\nname:\"SIGSYS\",\nnumber:31,\naction:\"core\",\ndescription:\"Invalid system call\",\nstandard:\"other\"\n},\n{\nname:\"SIGUNUSED\",\nnumber:31,\naction:\"terminate\",\ndescription:\"Invalid system call\",\nstandard:\"other\"\n}];", "const aliases = ['stdin', 'stdout', 'stderr'];\n\nconst hasAlias = options => aliases.some(alias => options[alias] !== undefined);\n\nexport const normalizeStdio = options => {\n\tif (!options) {\n\t\treturn;\n\t}\n\n\tconst {stdio} = options;\n\n\tif (stdio === undefined) {\n\t\treturn aliases.map(alias => options[alias]);\n\t}\n\n\tif (hasAlias(options)) {\n\t\tthrow new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${aliases.map(alias => `\\`${alias}\\``).join(', ')}`);\n\t}\n\n\tif (typeof stdio === 'string') {\n\t\treturn stdio;\n\t}\n\n\tif (!Array.isArray(stdio)) {\n\t\tthrow new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof stdio}\\``);\n\t}\n\n\tconst length = Math.max(stdio.length, aliases.length);\n\treturn Array.from({length}, (value, index) => stdio[index]);\n};\n\n// `ipc` is pushed unless it is already present\nexport const normalizeStdioNode = options => {\n\tconst stdio = normalizeStdio(options);\n\n\tif (stdio === 'ipc') {\n\t\treturn 'ipc';\n\t}\n\n\tif (stdio === undefined || typeof stdio === 'string') {\n\t\treturn [stdio, stdio, stdio, 'ipc'];\n\t}\n\n\tif (stdio.includes('ipc')) {\n\t\treturn stdio;\n\t}\n\n\treturn [...stdio, 'ipc'];\n};\n", "import os from 'node:os';\nimport {onExit} from 'signal-exit';\n\nconst DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;\n\n// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior\nexport const spawnedKill = (kill, signal = 'SIGTERM', options = {}) => {\n\tconst killResult = kill(signal);\n\tsetKillTimeout(kill, signal, options, killResult);\n\treturn killResult;\n};\n\nconst setKillTimeout = (kill, signal, options, killResult) => {\n\tif (!shouldForceKill(signal, options, killResult)) {\n\t\treturn;\n\t}\n\n\tconst timeout = getForceKillAfterTimeout(options);\n\tconst t = setTimeout(() => {\n\t\tkill('SIGKILL');\n\t}, timeout);\n\n\t// Guarded because there's no `.unref()` when `execa` is used in the renderer\n\t// process in Electron. This cannot be tested since we don't run tests in\n\t// Electron.\n\t// istanbul ignore else\n\tif (t.unref) {\n\t\tt.unref();\n\t}\n};\n\nconst shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => isSigterm(signal) && forceKillAfterTimeout !== false && killResult;\n\nconst isSigterm = signal => signal === os.constants.signals.SIGTERM\n\t\t|| (typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');\n\nconst getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {\n\tif (forceKillAfterTimeout === true) {\n\t\treturn DEFAULT_FORCE_KILL_TIMEOUT;\n\t}\n\n\tif (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {\n\t\tthrow new TypeError(`Expected the \\`forceKillAfterTimeout\\` option to be a non-negative integer, got \\`${forceKillAfterTimeout}\\` (${typeof forceKillAfterTimeout})`);\n\t}\n\n\treturn forceKillAfterTimeout;\n};\n\n// `childProcess.cancel()`\nexport const spawnedCancel = (spawned, context) => {\n\tconst killResult = spawned.kill();\n\n\tif (killResult) {\n\t\tcontext.isCanceled = true;\n\t}\n};\n\nconst timeoutKill = (spawned, signal, reject) => {\n\tspawned.kill(signal);\n\treject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));\n};\n\n// `timeout` option handling\nexport const setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {\n\tif (timeout === 0 || timeout === undefined) {\n\t\treturn spawnedPromise;\n\t}\n\n\tlet timeoutId;\n\tconst timeoutPromise = new Promise((resolve, reject) => {\n\t\ttimeoutId = setTimeout(() => {\n\t\t\ttimeoutKill(spawned, killSignal, reject);\n\t\t}, timeout);\n\t});\n\n\tconst safeSpawnedPromise = spawnedPromise.finally(() => {\n\t\tclearTimeout(timeoutId);\n\t});\n\n\treturn Promise.race([timeoutPromise, safeSpawnedPromise]);\n};\n\nexport const validateTimeout = ({timeout}) => {\n\tif (timeout !== undefined && (!Number.isFinite(timeout) || timeout < 0)) {\n\t\tthrow new TypeError(`Expected the \\`timeout\\` option to be a non-negative integer, got \\`${timeout}\\` (${typeof timeout})`);\n\t}\n};\n\n// `cleanup` option handling\nexport const setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {\n\tif (!cleanup || detached) {\n\t\treturn timedPromise;\n\t}\n\n\tconst removeExitHandler = onExit(() => {\n\t\tspawned.kill();\n\t});\n\n\treturn timedPromise.finally(() => {\n\t\tremoveExitHandler();\n\t});\n};\n", "/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n signals.push(\n 'SIGALRM',\n 'SIGABRT',\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n", "// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n reallyExit: (code?: number | undefined | null) => any\n emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n emitted: Emitted = {\n afterExit: false,\n exit: false,\n }\n\n listeners: Listeners = {\n afterExit: [],\n exit: [],\n }\n\n count: number = 0\n id: number = Math.random()\n\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter]\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n }\n\n on(ev: ExitEvent, fn: Handler) {\n this.listeners[ev].push(fn)\n }\n\n removeListener(ev: ExitEvent, fn: Handler) {\n const list = this.listeners[ev]\n const i = list.indexOf(fn)\n /* c8 ignore start */\n if (i === -1) {\n return\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0\n } else {\n list.splice(i, 1)\n }\n }\n\n emit(\n ev: ExitEvent,\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n ): boolean {\n if (this.emitted[ev]) {\n return false\n }\n this.emitted[ev] = true\n let ret: boolean = false\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret\n }\n return ret\n }\n}\n\nabstract class SignalExitBase {\n abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n abstract load(): void\n abstract unload(): void\n}\n\nconst signalExitWrap = <T extends SignalExitBase>(handler: T) => {\n return {\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n return handler.onExit(cb, opts)\n },\n load() {\n return handler.load()\n },\n unload() {\n return handler.unload()\n },\n }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => {}\n }\n load() {}\n unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n /* c8 ignore stop */\n #emitter = new Emitter()\n #process: ProcessRE\n #originalProcessEmit: ProcessRE['emit']\n #originalProcessReallyExit: ProcessRE['reallyExit']\n\n #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n #loaded: boolean = false\n\n constructor(process: ProcessRE) {\n super()\n this.#process = process\n // { <signal>: <listener fn>, ... }\n this.#sigListeners = {}\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig)\n let { count } = this.#emitter\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process as unknown as {\n __signal_exit_emitter__?: { count: number }\n }\n if (\n typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number'\n ) {\n count += p.__signal_exit_emitter__.count\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload()\n const ret = this.#emitter.emit('exit', null, sig)\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig\n if (!ret) process.kill(process.pid, s)\n /* c8 ignore stop */\n }\n }\n }\n\n this.#originalProcessReallyExit = process.reallyExit\n this.#originalProcessEmit = process.emit\n }\n\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => {}\n }\n /* c8 ignore stop */\n\n if (this.#loaded === false) {\n this.load()\n }\n\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n this.#emitter.on(ev, cb)\n return () => {\n this.#emitter.removeListener(ev, cb)\n if (\n this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0\n ) {\n this.unload()\n }\n }\n }\n\n load() {\n if (this.#loaded) {\n return\n }\n this.#loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1\n\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig]\n if (fn) this.#process.on(sig, fn)\n } catch (_) {}\n }\n\n this.#process.emit = (ev: string, ...a: any[]) => {\n return this.#processEmit(ev, ...a)\n }\n this.#process.reallyExit = (code?: number | null | undefined) => {\n return this.#processReallyExit(code)\n }\n }\n\n unload() {\n if (!this.#loaded) {\n return\n }\n this.#loaded = false\n\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig]\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig)\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener)\n /* c8 ignore start */\n } catch (_) {}\n /* c8 ignore stop */\n })\n this.#process.emit = this.#originalProcessEmit\n this.#process.reallyExit = this.#originalProcessReallyExit\n this.#emitter.count -= 1\n }\n\n #processReallyExit(code?: number | null | undefined) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0\n }\n this.#process.exitCode = code || 0\n /* c8 ignore stop */\n\n this.#emitter.emit('exit', this.#process.exitCode, null)\n return this.#originalProcessReallyExit.call(\n this.#process,\n this.#process.exitCode\n )\n }\n\n #processEmit(ev: string, ...args: any[]): any {\n const og = this.#originalProcessEmit\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0]\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args)\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null)\n /* c8 ignore stop */\n return ret\n } else {\n return og.call(this.#process, ev, ...args)\n }\n }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n /**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\n onExit,\n\n /**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n load,\n\n /**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n unload,\n} = signalExitWrap(\n processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n", "import {createWriteStream} from 'node:fs';\nimport {ChildProcess} from 'node:child_process';\nimport {isWritableStream} from 'is-stream';\n\nconst isExecaChildProcess = target => target instanceof ChildProcess && typeof target.then === 'function';\n\nconst pipeToTarget = (spawned, streamName, target) => {\n\tif (typeof target === 'string') {\n\t\tspawned[streamName].pipe(createWriteStream(target));\n\t\treturn spawned;\n\t}\n\n\tif (isWritableStream(target)) {\n\t\tspawned[streamName].pipe(target);\n\t\treturn spawned;\n\t}\n\n\tif (!isExecaChildProcess(target)) {\n\t\tthrow new TypeError('The second argument must be a string, a stream or an Execa child process.');\n\t}\n\n\tif (!isWritableStream(target.stdin)) {\n\t\tthrow new TypeError('The target child process\\'s stdin must be available.');\n\t}\n\n\tspawned[streamName].pipe(target.stdin);\n\treturn target;\n};\n\nexport const addPipeMethods = spawned => {\n\tif (spawned.stdout !== null) {\n\t\tspawned.pipeStdout = pipeToTarget.bind(undefined, spawned, 'stdout');\n\t}\n\n\tif (spawned.stderr !== null) {\n\t\tspawned.pipeStderr = pipeToTarget.bind(undefined, spawned, 'stderr');\n\t}\n\n\tif (spawned.all !== undefined) {\n\t\tspawned.pipeAll = pipeToTarget.bind(undefined, spawned, 'all');\n\t}\n};\n", "export function isStream(stream) {\n\treturn stream !== null\n\t\t&& typeof stream === 'object'\n\t\t&& typeof stream.pipe === 'function';\n}\n\nexport function isWritableStream(stream) {\n\treturn isStream(stream)\n\t\t&& stream.writable !== false\n\t\t&& typeof stream._write === 'function'\n\t\t&& typeof stream._writableState === 'object';\n}\n\nexport function isReadableStream(stream) {\n\treturn isStream(stream)\n\t\t&& stream.readable !== false\n\t\t&& typeof stream._read === 'function'\n\t\t&& typeof stream._readableState === 'object';\n}\n\nexport function isDuplexStream(stream) {\n\treturn isWritableStream(stream)\n\t\t&& isReadableStream(stream);\n}\n\nexport function isTransformStream(stream) {\n\treturn isDuplexStream(stream)\n\t\t&& typeof stream._transform === 'function';\n}\n", "import {createReadStream, readFileSync} from 'node:fs';\nimport {setTimeout} from 'node:timers/promises';\nimport {isStream} from 'is-stream';\nimport getStream, {getStreamAsBuffer} from 'get-stream';\nimport mergeStream from 'merge-stream';\n\nconst validateInputOptions = input => {\n\tif (input !== undefined) {\n\t\tthrow new TypeError('The `input` and `inputFile` options cannot be both set.');\n\t}\n};\n\nconst getInputSync = ({input, inputFile}) => {\n\tif (typeof inputFile !== 'string') {\n\t\treturn input;\n\t}\n\n\tvalidateInputOptions(input);\n\treturn readFileSync(inputFile);\n};\n\n// `input` and `inputFile` option in sync mode\nexport const handleInputSync = options => {\n\tconst input = getInputSync(options);\n\n\tif (isStream(input)) {\n\t\tthrow new TypeError('The `input` option cannot be a stream in sync mode');\n\t}\n\n\treturn input;\n};\n\nconst getInput = ({input, inputFile}) => {\n\tif (typeof inputFile !== 'string') {\n\t\treturn input;\n\t}\n\n\tvalidateInputOptions(input);\n\treturn createReadStream(inputFile);\n};\n\n// `input` and `inputFile` option in async mode\nexport const handleInput = (spawned, options) => {\n\tconst input = getInput(options);\n\n\tif (input === undefined) {\n\t\treturn;\n\t}\n\n\tif (isStream(input)) {\n\t\tinput.pipe(spawned.stdin);\n\t} else {\n\t\tspawned.stdin.end(input);\n\t}\n};\n\n// `all` interleaves `stdout` and `stderr`\nexport const makeAllStream = (spawned, {all}) => {\n\tif (!all || (!spawned.stdout && !spawned.stderr)) {\n\t\treturn;\n\t}\n\n\tconst mixed = mergeStream();\n\n\tif (spawned.stdout) {\n\t\tmixed.add(spawned.stdout);\n\t}\n\n\tif (spawned.stderr) {\n\t\tmixed.add(spawned.stderr);\n\t}\n\n\treturn mixed;\n};\n\n// On failure, `result.stdout|stderr|all` should contain the currently buffered stream\nconst getBufferedData = async (stream, streamPromise) => {\n\t// When `buffer` is `false`, `streamPromise` is `undefined` and there is no buffered data to retrieve\n\tif (!stream || streamPromise === undefined) {\n\t\treturn;\n\t}\n\n\t// Wait for the `all` stream to receive the last chunk before destroying the stream\n\tawait setTimeout(0);\n\n\tstream.destroy();\n\n\ttry {\n\t\treturn await streamPromise;\n\t} catch (error) {\n\t\treturn error.bufferedData;\n\t}\n};\n\nconst getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {\n\tif (!stream || !buffer) {\n\t\treturn;\n\t}\n\n\t// eslint-disable-next-line unicorn/text-encoding-identifier-case\n\tif (encoding === 'utf8' || encoding === 'utf-8') {\n\t\treturn getStream(stream, {maxBuffer});\n\t}\n\n\tif (encoding === null || encoding === 'buffer') {\n\t\treturn getStreamAsBuffer(stream, {maxBuffer});\n\t}\n\n\treturn applyEncoding(stream, maxBuffer, encoding);\n};\n\nconst applyEncoding = async (stream, maxBuffer, encoding) => {\n\tconst buffer = await getStreamAsBuffer(stream, {maxBuffer});\n\treturn buffer.toString(encoding);\n};\n\n// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all)\nexport const getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => {\n\tconst stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer});\n\tconst stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer});\n\tconst allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2});\n\n\ttry {\n\t\treturn await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);\n\t} catch (error) {\n\t\treturn Promise.all([\n\t\t\t{error, signal: error.signal, timedOut: error.timedOut},\n\t\t\tgetBufferedData(stdout, stdoutPromise),\n\t\t\tgetBufferedData(stderr, stderrPromise),\n\t\t\tgetBufferedData(all, allPromise),\n\t\t]);\n\t}\n};\n", "export const getStreamContents = async (stream, {init, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, finalize}, {maxBuffer = Number.POSITIVE_INFINITY} = {}) => {\n\tif (!isAsyncIterable(stream)) {\n\t\tthrow new Error('The first argument must be a Readable, a ReadableStream, or an async iterable.');\n\t}\n\n\tconst state = init();\n\tstate.length = 0;\n\n\ttry {\n\t\tfor await (const chunk of stream) {\n\t\t\tconst chunkType = getChunkType(chunk);\n\t\t\tconst convertedChunk = convertChunk[chunkType](chunk, state);\n\t\t\tappendChunk({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer});\n\t\t}\n\n\t\tappendFinalChunk({state, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer});\n\t\treturn finalize(state);\n\t} catch (error) {\n\t\terror.bufferedData = finalize(state);\n\t\tthrow error;\n\t}\n};\n\nconst appendFinalChunk = ({state, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer}) => {\n\tconst convertedChunk = getFinalChunk(state);\n\tif (convertedChunk !== undefined) {\n\t\tappendChunk({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer});\n\t}\n};\n\nconst appendChunk = ({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer}) => {\n\tconst chunkSize = getSize(convertedChunk);\n\tconst newLength = state.length + chunkSize;\n\n\tif (newLength <= maxBuffer) {\n\t\taddNewChunk(convertedChunk, state, addChunk, newLength);\n\t\treturn;\n\t}\n\n\tconst truncatedChunk = truncateChunk(convertedChunk, maxBuffer - state.length);\n\n\tif (truncatedChunk !== undefined) {\n\t\taddNewChunk(truncatedChunk, state, addChunk, maxBuffer);\n\t}\n\n\tthrow new MaxBufferError();\n};\n\nconst addNewChunk = (convertedChunk, state, addChunk, newLength) => {\n\tstate.contents = addChunk(convertedChunk, state, newLength);\n\tstate.length = newLength;\n};\n\nconst isAsyncIterable = stream => typeof stream === 'object' && stream !== null && typeof stream[Symbol.asyncIterator] === 'function';\n\nconst getChunkType = chunk => {\n\tconst typeOfChunk = typeof chunk;\n\n\tif (typeOfChunk === 'string') {\n\t\treturn 'string';\n\t}\n\n\tif (typeOfChunk !== 'object' || chunk === null) {\n\t\treturn 'others';\n\t}\n\n\t// eslint-disable-next-line n/prefer-global/buffer\n\tif (globalThis.Buffer?.isBuffer(chunk)) {\n\t\treturn 'buffer';\n\t}\n\n\tconst prototypeName = objectToString.call(chunk);\n\n\tif (prototypeName === '[object ArrayBuffer]') {\n\t\treturn 'arrayBuffer';\n\t}\n\n\tif (prototypeName === '[object DataView]') {\n\t\treturn 'dataView';\n\t}\n\n\tif (\n\t\tNumber.isInteger(chunk.byteLength)\n\t\t&& Number.isInteger(chunk.byteOffset)\n\t\t&& objectToString.call(chunk.buffer) === '[object ArrayBuffer]'\n\t) {\n\t\treturn 'typedArray';\n\t}\n\n\treturn 'others';\n};\n\nconst {toString: objectToString} = Object.prototype;\n\nexport class MaxBufferError extends Error {\n\tname = 'MaxBufferError';\n\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t}\n}\n", "export const identity = value => value;\n\nexport const noop = () => undefined;\n\nexport const getContentsProp = ({contents}) => contents;\n\nexport const throwObjectStream = chunk => {\n\tthrow new Error(`Streams in object mode are not supported: ${String(chunk)}`);\n};\n\nexport const getLengthProp = convertedChunk => convertedChunk.length;\n", "import {getStreamContents} from './contents.js';\nimport {noop, throwObjectStream, getLengthProp} from './utils.js';\n\nexport async function getStreamAsArrayBuffer(stream, options) {\n\treturn getStreamContents(stream, arrayBufferMethods, options);\n}\n\nconst initArrayBuffer = () => ({contents: new ArrayBuffer(0)});\n\nconst useTextEncoder = chunk => textEncoder.encode(chunk);\nconst textEncoder = new TextEncoder();\n\nconst useUint8Array = chunk => new Uint8Array(chunk);\n\nconst useUint8ArrayWithOffset = chunk => new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);\n\nconst truncateArrayBufferChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);\n\n// `contents` is an increasingly growing `Uint8Array`.\nconst addArrayBufferChunk = (convertedChunk, {contents, length: previousLength}, length) => {\n\tconst newContents = hasArrayBufferResize() ? resizeArrayBuffer(contents, length) : resizeArrayBufferSlow(contents, length);\n\tnew Uint8Array(newContents).set(convertedChunk, previousLength);\n\treturn newContents;\n};\n\n// Without `ArrayBuffer.resize()`, `contents` size is always a power of 2.\n// This means its last bytes are zeroes (not stream data), which need to be\n// trimmed at the end with `ArrayBuffer.slice()`.\nconst resizeArrayBufferSlow = (contents, length) => {\n\tif (length <= contents.byteLength) {\n\t\treturn contents;\n\t}\n\n\tconst arrayBuffer = new ArrayBuffer(getNewContentsLength(length));\n\tnew Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0);\n\treturn arrayBuffer;\n};\n\n// With `ArrayBuffer.resize()`, `contents` size matches exactly the size of\n// the stream data. It does not include extraneous zeroes to trim at the end.\n// The underlying `ArrayBuffer` does allocate a number of bytes that is a power\n// of 2, but those bytes are only visible after calling `ArrayBuffer.resize()`.\nconst resizeArrayBuffer = (contents, length) => {\n\tif (length <= contents.maxByteLength) {\n\t\tcontents.resize(length);\n\t\treturn contents;\n\t}\n\n\tconst arrayBuffer = new ArrayBuffer(length, {maxByteLength: getNewContentsLength(length)});\n\tnew Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0);\n\treturn arrayBuffer;\n};\n\n// Retrieve the closest `length` that is both >= and a power of 2\nconst getNewContentsLength = length => SCALE_FACTOR ** Math.ceil(Math.log(length) / Math.log(SCALE_FACTOR));\n\nconst SCALE_FACTOR = 2;\n\nconst finalizeArrayBuffer = ({contents, length}) => hasArrayBufferResize() ? contents : contents.slice(0, length);\n\n// `ArrayBuffer.slice()` is slow. When `ArrayBuffer.resize()` is available\n// (Node >=20.0.0, Safari >=16.4 and Chrome), we can use it instead.\n// eslint-disable-next-line no-warning-comments\n// TODO: remove after dropping support for Node 20.\n// eslint-disable-next-line no-warning-comments\n// TODO: use `ArrayBuffer.transferToFixedLength()` instead once it is available\nconst hasArrayBufferResize = () => 'resize' in ArrayBuffer.prototype;\n\nconst arrayBufferMethods = {\n\tinit: initArrayBuffer,\n\tconvertChunk: {\n\t\tstring: useTextEncoder,\n\t\tbuffer: useUint8Array,\n\t\tarrayBuffer: useUint8Array,\n\t\tdataView: useUint8ArrayWithOffset,\n\t\ttypedArray: useUint8ArrayWithOffset,\n\t\tothers: throwObjectStream,\n\t},\n\tgetSize: getLengthProp,\n\ttruncateChunk: truncateArrayBufferChunk,\n\taddChunk: addArrayBufferChunk,\n\tgetFinalChunk: noop,\n\tfinalize: finalizeArrayBuffer,\n};\n", "import {getStreamAsArrayBuffer} from './array-buffer.js';\n\nexport async function getStreamAsBuffer(stream, options) {\n\tif (!('Buffer' in globalThis)) {\n\t\tthrow new Error('getStreamAsBuffer() is only supported in Node.js');\n\t}\n\n\ttry {\n\t\treturn arrayBufferToNodeBuffer(await getStreamAsArrayBuffer(stream, options));\n\t} catch (error) {\n\t\tif (error.bufferedData !== undefined) {\n\t\t\terror.bufferedData = arrayBufferToNodeBuffer(error.bufferedData);\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n\n// eslint-disable-next-line n/prefer-global/buffer\nconst arrayBufferToNodeBuffer = arrayBuffer => globalThis.Buffer.from(arrayBuffer);\n", "import {getStreamContents} from './contents.js';\nimport {identity, getContentsProp, throwObjectStream, getLengthProp} from './utils.js';\n\nexport async function getStreamAsString(stream, options) {\n\treturn getStreamContents(stream, stringMethods, options);\n}\n\nconst initString = () => ({contents: '', textDecoder: new TextDecoder()});\n\nconst useTextDecoder = (chunk, {textDecoder}) => textDecoder.decode(chunk, {stream: true});\n\nconst addStringChunk = (convertedChunk, {contents}) => contents + convertedChunk;\n\nconst truncateStringChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);\n\nconst getFinalStringChunk = ({textDecoder}) => {\n\tconst finalChunk = textDecoder.decode();\n\treturn finalChunk === '' ? undefined : finalChunk;\n};\n\nconst stringMethods = {\n\tinit: initString,\n\tconvertChunk: {\n\t\tstring: identity,\n\t\tbuffer: useTextDecoder,\n\t\tarrayBuffer: useTextDecoder,\n\t\tdataView: useTextDecoder,\n\t\ttypedArray: useTextDecoder,\n\t\tothers: throwObjectStream,\n\t},\n\tgetSize: getLengthProp,\n\ttruncateChunk: truncateStringChunk,\n\taddChunk: addStringChunk,\n\tgetFinalChunk: getFinalStringChunk,\n\tfinalize: getContentsProp,\n};\n", "// eslint-disable-next-line unicorn/prefer-top-level-await\nconst nativePromisePrototype = (async () => {})().constructor.prototype;\n\nconst descriptors = ['then', 'catch', 'finally'].map(property => [\n\tproperty,\n\tReflect.getOwnPropertyDescriptor(nativePromisePrototype, property),\n]);\n\n// The return value is a mixin of `childProcess` and `Promise`\nexport const mergePromise = (spawned, promise) => {\n\tfor (const [property, descriptor] of descriptors) {\n\t\t// Starting the main `promise` is deferred to avoid consuming streams\n\t\tconst value = typeof promise === 'function'\n\t\t\t? (...args) => Reflect.apply(descriptor.value, promise(), args)\n\t\t\t: descriptor.value.bind(promise);\n\n\t\tReflect.defineProperty(spawned, property, {...descriptor, value});\n\t}\n};\n\n// Use promises instead of `child_process` events\nexport const getSpawnedPromise = spawned => new Promise((resolve, reject) => {\n\tspawned.on('exit', (exitCode, signal) => {\n\t\tresolve({exitCode, signal});\n\t});\n\n\tspawned.on('error', error => {\n\t\treject(error);\n\t});\n\n\tif (spawned.stdin) {\n\t\tspawned.stdin.on('error', error => {\n\t\t\treject(error);\n\t\t});\n\t}\n});\n", "import {Buffer} from 'node:buffer';\nimport {ChildProcess} from 'node:child_process';\n\nconst normalizeArgs = (file, args = []) => {\n\tif (!Array.isArray(args)) {\n\t\treturn [file];\n\t}\n\n\treturn [file, ...args];\n};\n\nconst NO_ESCAPE_REGEXP = /^[\\w.-]+$/;\n\nconst escapeArg = arg => {\n\tif (typeof arg !== 'string' || NO_ESCAPE_REGEXP.test(arg)) {\n\t\treturn arg;\n\t}\n\n\treturn `\"${arg.replaceAll('\"', '\\\\\"')}\"`;\n};\n\nexport const joinCommand = (file, args) => normalizeArgs(file, args).join(' ');\n\nexport const getEscapedCommand = (file, args) => normalizeArgs(file, args).map(arg => escapeArg(arg)).join(' ');\n\nconst SPACES_REGEXP = / +/g;\n\n// Handle `execaCommand()`\nexport const parseCommand = command => {\n\tconst tokens = [];\n\tfor (const token of command.trim().split(SPACES_REGEXP)) {\n\t\t// Allow spaces to be escaped by a backslash if not meant as a delimiter\n\t\tconst previousToken = tokens.at(-1);\n\t\tif (previousToken && previousToken.endsWith('\\\\')) {\n\t\t\t// Merge previous token with current one\n\t\t\ttokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;\n\t\t} else {\n\t\t\ttokens.push(token);\n\t\t}\n\t}\n\n\treturn tokens;\n};\n\nconst parseExpression = expression => {\n\tconst typeOfExpression = typeof expression;\n\n\tif (typeOfExpression === 'string') {\n\t\treturn expression;\n\t}\n\n\tif (typeOfExpression === 'number') {\n\t\treturn String(expression);\n\t}\n\n\tif (\n\t\ttypeOfExpression === 'object'\n\t\t&& expression !== null\n\t\t&& !(expression instanceof ChildProcess)\n\t\t&& 'stdout' in expression\n\t) {\n\t\tconst typeOfStdout = typeof expression.stdout;\n\n\t\tif (typeOfStdout === 'string') {\n\t\t\treturn expression.stdout;\n\t\t}\n\n\t\tif (Buffer.isBuffer(expression.stdout)) {\n\t\t\treturn expression.stdout.toString();\n\t\t}\n\n\t\tthrow new TypeError(`Unexpected \"${typeOfStdout}\" stdout in template expression`);\n\t}\n\n\tthrow new TypeError(`Unexpected \"${typeOfExpression}\" in template expression`);\n};\n\nconst concatTokens = (tokens, nextTokens, isNew) => isNew || tokens.length === 0 || nextTokens.length === 0\n\t? [...tokens, ...nextTokens]\n\t: [\n\t\t...tokens.slice(0, -1),\n\t\t`${tokens.at(-1)}${nextTokens[0]}`,\n\t\t...nextTokens.slice(1),\n\t];\n\nconst parseTemplate = ({templates, expressions, tokens, index, template}) => {\n\tconst templateString = template ?? templates.raw[index];\n\tconst templateTokens = templateString.split(SPACES_REGEXP).filter(Boolean);\n\tconst newTokens = concatTokens(\n\t\ttokens,\n\t\ttemplateTokens,\n\t\ttemplateString.startsWith(' '),\n\t);\n\n\tif (index === expressions.length) {\n\t\treturn newTokens;\n\t}\n\n\tconst expression = expressions[index];\n\tconst expressionTokens = Array.isArray(expression)\n\t\t? expression.map(expression => parseExpression(expression))\n\t\t: [parseExpression(expression)];\n\treturn concatTokens(\n\t\tnewTokens,\n\t\texpressionTokens,\n\t\ttemplateString.endsWith(' '),\n\t);\n};\n\nexport const parseTemplates = (templates, expressions) => {\n\tlet tokens = [];\n\n\tfor (const [index, template] of templates.entries()) {\n\t\ttokens = parseTemplate({templates, expressions, tokens, index, template});\n\t}\n\n\treturn tokens;\n};\n\n", "import {debuglog} from 'node:util';\nimport process from 'node:process';\n\nexport const verboseDefault = debuglog('execa').enabled;\n\nconst padField = (field, padding) => String(field).padStart(padding, '0');\n\nconst getTimestamp = () => {\n\tconst date = new Date();\n\treturn `${padField(date.getHours(), 2)}:${padField(date.getMinutes(), 2)}:${padField(date.getSeconds(), 2)}.${padField(date.getMilliseconds(), 3)}`;\n};\n\nexport const logCommand = (escapedCommand, {verbose}) => {\n\tif (!verbose) {\n\t\treturn;\n\t}\n\n\tprocess.stderr.write(`[${getTimestamp()}] ${escapedCommand}\\n`);\n};\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport crypto from \"node:crypto\";\nimport os from \"node:os\";\n\nconst enabled = os.platform() === \"linux\";\nconst cacheRoot = process.env.XDG_CACHE_HOME ?? path.join(os.homedir(), \".cache\");\nconst cacheDir = path.join(cacheRoot, \"npm-pkg-lint\");\n\n/* istanbul ignore next */\nfunction getFilePath(key: string): string {\n\tconst hash = crypto.createHash(\"md5\").update(key).digest(\"hex\");\n\tconst filename = `${hash.slice(0, 2)}/${hash.slice(2)}.json`;\n\treturn path.join(cacheDir, filename);\n}\n\n/* istanbul ignore next */\nexport async function persistentCacheGet(key: string): Promise<unknown | null> {\n\tif (!enabled) {\n\t\treturn null;\n\t}\n\n\tconst filePath = getFilePath(key);\n\ttry {\n\t\tconst content = await fs.readFile(filePath, \"utf-8\");\n\t\treturn JSON.parse(content) as unknown;\n\t} catch (err: unknown) {\n\t\tif (err instanceof Error && \"code\" in err && err.code === \"ENOENT\") {\n\t\t\treturn null;\n\t\t}\n\t\tthrow err;\n\t}\n}\n\n/* istanbul ignore next */\nexport async function persistentCacheSet(key: string, data: unknown): Promise<void> {\n\tif (!enabled) {\n\t\treturn;\n\t}\n\n\tconst filePath = getFilePath(key);\n\tconst content = JSON.stringify(data, null, 2);\n\tawait fs.mkdir(path.dirname(filePath), { recursive: true });\n\tawait fs.writeFile(filePath, content, \"utf-8\");\n}\n", "import { execa } from \"execa\";\nimport { type PackageJson } from \"../types\";\nimport { persistentCacheGet, persistentCacheSet } from \"./persistent-cache\";\n\nexport interface NpmInfo {\n\tdeprecated?: string;\n}\n\nexport interface NpmInfoError {\n\tcode: string;\n\tsummary: string;\n\tdetail: string;\n}\n\nexport interface ExecaError extends Error {\n\tstdout: string;\n}\n\nconst cache = new Map<string, PackageJson | null>();\n\nfunction isExecaError(error: unknown): error is ExecaError {\n\treturn Boolean(error && error instanceof Error && \"stdout\" in error);\n}\n\nexport function isNpmInfoError(error: unknown): error is NpmInfoError {\n\treturn Boolean(error && error instanceof Error && \"summary\" in error);\n}\n\nfunction tryParse(maybeJson: string): { error: NpmInfoError } | null {\n\ttry {\n\t\treturn JSON.parse(maybeJson) as { error: NpmInfoError };\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport async function npmInfo(pkg: string): Promise<PackageJson & NpmInfo>;\nexport async function npmInfo(\n\tpkg: string,\n\toptions: { ignoreUnpublished: true },\n): Promise<(PackageJson & NpmInfo) | null>;\nexport async function npmInfo(\n\tpkg: string,\n\toptions: { ignoreUnpublished: boolean } = { ignoreUnpublished: false },\n): Promise<(PackageJson & NpmInfo) | null> {\n\tconst { ignoreUnpublished } = options;\n\tconst cached = cache.get(pkg);\n\tif (cached === null) {\n\t\tif (ignoreUnpublished) {\n\t\t\treturn null;\n\t\t}\n\t} else if (cached) {\n\t\treturn cached;\n\t}\n\n\tconst persistent = await persistentCacheGet(pkg);\n\tif (persistent) {\n\t\treturn persistent as PackageJson;\n\t}\n\n\ttry {\n\t\tconst result = await execa(\"npm\", [\"info\", \"--json\", pkg]);\n\t\tconst pkgData = JSON.parse(result.stdout) as PackageJson;\n\t\tcache.set(pkg, pkgData);\n\t\tawait persistentCacheSet(pkg, pkgData);\n\t\treturn pkgData;\n\t} catch (err: unknown) {\n\t\tif (!isExecaError(err)) {\n\t\t\tthrow err;\n\t\t}\n\t\tconst parsed = tryParse(err.stdout);\n\t\tif (!parsed) {\n\t\t\tthrow err;\n\t\t}\n\t\tconst { code, summary, detail } = parsed.error;\n\n\t\t/* cache for this session but don't store in persistent cache as this\n\t\t * error might be temporary */\n\t\tcache.set(pkg, null);\n\n\t\tif (ignoreUnpublished && code === \"E404\") {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst wrappedError = new Error(summary, { cause: err }) as Error & NpmInfoError;\n\t\twrappedError.code = code;\n\t\twrappedError.summary = summary;\n\t\twrappedError.detail = detail;\n\t\tthrow wrappedError;\n\t}\n}\n", "/* eslint-disable security/detect-non-literal-regexp -- expected to be non-literal */\n\nimport { type PackageJson } from \"../types\";\n\nfunction exact(name: string): RegExp {\n\treturn new RegExp(`^${name}$`);\n}\nfunction scope(scope: string): RegExp {\n\treturn new RegExp(`^${scope}/`);\n}\n\nfunction prefix(prefix: string): RegExp {\n\treturn new RegExp(`^${prefix}(-.+)?`);\n}\n\nfunction scopedPrefix(prefix: string): RegExp {\n\treturn new RegExp(`^(.*)/${prefix}(-.+)?`);\n}\n\nconst disallowedDependencies: RegExp[] = [\n\texact(\"ava\"),\n\texact(\"jake\"),\n\texact(\"tsd\"),\n\texact(\"xo\"),\n\tprefix(\"babel-core\"),\n\tprefix(\"cypress\"),\n\tprefix(\"grunt\"),\n\tprefix(\"gulp\"),\n\tprefix(\"html-validate\"),\n\tprefix(\"jasmine\"),\n\tprefix(\"mocha\"),\n\tprefix(\"nyc\"),\n\tprefix(\"protractor\"),\n\tprefix(\"ts-node\"),\n\tprefix(\"typescript\"),\n\tprefix(\"webpack\"),\n\tscope(\"@babel\"),\n\tscope(\"@types\"),\n];\n\nconst disallowedEslint: RegExp[] = [\n\texact(\"eslint\"),\n\tprefix(\"eslint-config\"),\n\tprefix(\"eslint-formatter\"),\n\tprefix(\"eslint-plugin\"),\n\tscopedPrefix(\"eslint-config\"),\n\tscopedPrefix(\"eslint-formatter\"),\n\tscopedPrefix(\"eslint-plugin\"),\n];\n\nconst disallowedJest: RegExp[] = [\n\texact(\"jest\"),\n\texact(\"babel-jest\"),\n\texact(\"ts-jest\"),\n\tprefix(\"jest-\"),\n\tscope(\"@jest\"),\n];\n\nconst disallowedPrettier: RegExp[] = [\n\texact(\"prettier\"),\n\tprefix(\"prettier-\"),\n\tscopedPrefix(\"prettier-\"),\n];\n\nconst allowedDependencies: string[] = [\n\t\"@babel/code-frame\",\n\t\"@babel/polyfill\",\n\t\"@babel/runtime\",\n\t\"gulp-utils\",\n\t\"jest-diff\",\n\t\"webpack-sources\",\n];\n\nfunction match(list: RegExp[], dependency: string): boolean {\n\treturn list.some((it) => dependency.match(it));\n}\n\nexport function isDisallowedDependency(pkg: PackageJson, dependency: string): boolean {\n\t/* test if dependency is explicitly listed as allowed */\n\tif (allowedDependencies.includes(dependency)) {\n\t\treturn false;\n\t}\n\n\tconst keywords = pkg.keywords ?? [];\n\n\t/* eslint-* is allowed only if keywords includes \"eslint\" */\n\tif (!keywords.includes(\"eslint\") && match(disallowedEslint, dependency)) {\n\t\treturn true;\n\t}\n\n\t/* jest-* is allowed only if keywords includes \"jest\" */\n\tif (!keywords.includes(\"jest\") && match(disallowedJest, dependency)) {\n\t\treturn true;\n\t}\n\n\t/* prettier-* is allowed only if keywords includes \"prettier\" */\n\tif (!keywords.includes(\"prettier\") && match(disallowedPrettier, dependency)) {\n\t\treturn true;\n\t}\n\n\t/* test if dependency is explicitly listed as disallowed */\n\treturn match(disallowedDependencies, dependency);\n}\n", "export interface ObsoleteDependency {\n\tpackage: string;\n\tmessage: string;\n}\n\nconst obsolete: ObsoleteDependency[] = [\n\t{ package: \"make-dir\", message: `use native \"fs.mkdir(..., { recursive: true })\" instead` },\n\t{ package: \"mkdirp\", message: `use native \"fs.mkdir(..., { recursive: true })\" instead` },\n\t{ package: \"stable\", message: `Array#sort is stable in all current implementations` },\n];\n\nexport function isObsoleteDependency(dependency: string): ObsoleteDependency | false {\n\treturn obsolete.find((it) => it.package === dependency) ?? false;\n}\n", "import { Severity } from \"@html-validate/stylish\";\nimport { type Message } from \"../message\";\nimport { type PackageJson, type PackageJsonExports } from \"../types\";\n\nconst ruleId = \"exports-types-order\";\nconst severity = Severity.ERROR;\n\nfunction* validateOrder(\n\tvalue: string | PackageJsonExports | null,\n\tpath: string[],\n): Generator<Message> {\n\tif (!value || typeof value === \"string\") {\n\t\treturn;\n\t}\n\n\tconst keys = Object.keys(value);\n\tif (keys.length === 0) {\n\t\treturn;\n\t}\n\n\tif (keys.includes(\"types\") && keys[0] !== \"types\") {\n\t\tconst property = path.map((it) => `[\"${it}\"]`).join(\"\");\n\t\tyield {\n\t\t\truleId,\n\t\t\tseverity,\n\t\t\tmessage: `\"types\" must be the first condition in \"exports${property}\"`,\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t};\n\t}\n\n\tfor (const key of keys) {\n\t\tyield* validateOrder(value[key], [...path, key]);\n\t}\n}\n\nexport function* exportsTypesOrder(pkg: PackageJson): Generator<Message> {\n\tif (pkg.exports) {\n\t\tyield* validateOrder(pkg.exports, []);\n\t}\n}\n", "import semver from \"semver\";\nimport { Severity } from \"@html-validate/stylish\";\nimport { type Message } from \"../message\";\nimport { nodeVersions } from \"../node-versions\";\nimport { type PackageJson } from \"../types\";\n\nconst ruleId = \"outdated-engines\";\nconst severity = Severity.ERROR;\n\nexport function* outdatedEngines(pkg: PackageJson): Generator<Message> {\n\tif (!pkg.engines?.node) {\n\t\tyield {\n\t\t\truleId,\n\t\t\tseverity,\n\t\t\tmessage: \"Missing engines.node field\",\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t};\n\t\treturn;\n\t}\n\n\tconst range = pkg.engines.node;\n\tif (!semver.validRange(range)) {\n\t\tyield {\n\t\t\truleId,\n\t\t\tseverity,\n\t\t\tmessage: `engines.node \"${range}\" is not a valid semver range`,\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t};\n\t\treturn;\n\t}\n\n\tfor (const [version, descriptor] of nodeVersions) {\n\t\tif (!descriptor.eol) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst expanded = version.replace(/[xX*]/g, \"999\");\n\t\tconst parsed = semver.parse(expanded);\n\t\tif (!semver.satisfies(expanded, range)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst nodeRelease = (parsed?.major ?? 0) || `0.${parsed?.minor ?? \"\"}`;\n\t\tconst message = `engines.node is satisfied by Node ${nodeRelease} (EOL since ${descriptor.eol})`;\n\t\tyield {\n\t\t\truleId,\n\t\t\tseverity,\n\t\t\tmessage,\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t};\n\t\treturn;\n\t}\n}\n", "interface NodeVersionDescriptor {\n\t/** If set this version is EOL since given date */\n\teol?: string;\n}\n\nexport const nodeVersions: Array<[string, NodeVersionDescriptor]> = [\n\t[\"0.10.x\", { eol: \"2016-10-31\" }],\n\t[\"0.12.x\", { eol: \"2016-12-31\" }],\n\t[\"4.x.x\", { eol: \"2018-04-30\" }],\n\t[\"5.x.x\", { eol: \"2016-06-30\" }],\n\t[\"6.x.x\", { eol: \"2019-04-30\" }],\n\t[\"7.x.x\", { eol: \"2017-06-30\" }],\n\t[\"8.x.x\", { eol: \"2019-12-31\" }],\n\t[\"9.x.x\", { eol: \"2018-06-30\" }],\n\t[\"10.x.x\", { eol: \"2021-04-30\" }],\n\t[\"11.x.x\", { eol: \"2019-06-01\" }],\n\t[\"12.x.x\", { eol: \"2022-04-30\" }],\n\t[\"13.x.x\", { eol: \"2020-06-01\" }],\n\t[\"14.x.x\", { eol: \"2023-04-30\" }],\n\t[\"15.x.x\", { eol: \"2021-06-01\" }],\n\t[\"16.x.x\", { eol: \"2023-09-11\" }],\n\t[\"17.x.x\", { eol: \"2022-06-01\" }],\n];\n", "import semver, { type SemVer } from \"semver\";\nimport { type Message } from \"../message\";\nimport { type PackageJson } from \"../types\";\nimport { isNpmInfoError, npmInfo } from \"../utils\";\n\nconst ruleId = \"invalid-engine-constraint\";\n\nasync function* getDeepDependencies(pkg: PackageJson, dependency?: string): AsyncGenerator<string> {\n\tconst pkgData = dependency ? await npmInfo(dependency, { ignoreUnpublished: true }) : pkg;\n\tif (!pkgData) {\n\t\treturn;\n\t}\n\tfor (const [key, version] of Object.entries(pkgData.dependencies ?? {})) {\n\t\t/* ignore this as this package is sometimes is present as version \"*\" which\n\t\t * just yields way to many versions to handle causing MaxBuffer errors and\n\t\t * there is another rule to make sure the outermost @types/node package\n\t\t * matches the configured engines */\n\t\tif (key === \"@types/node\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst minVersion = semver.minVersion(version);\n\t\tconst deep = `${key}@${minVersion ? minVersion.version : version}`;\n\n\t\tyield deep;\n\t\tyield* getDeepDependencies(pkg, deep);\n\t}\n}\n\nasync function verifyDependency(\n\tdependency: string,\n\tminDeclared: SemVer,\n\tdeclaredConstraint: string,\n): Promise<Message | null> {\n\tconst pkgData = await npmInfo(dependency);\n\tconst constraint = pkgData.engines?.node;\n\tif (!constraint) {\n\t\treturn null;\n\t}\n\n\tif (!semver.satisfies(minDeclared, constraint)) {\n\t\treturn {\n\t\t\truleId,\n\t\t\tseverity: 2,\n\t\t\tmessage: `the transitive dependency \"${dependency}\" (node ${constraint}) does not satisfy the declared node engine \"${declaredConstraint}\"`,\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t};\n\t}\n\n\treturn null;\n}\n\nexport async function verifyEngineConstraint(pkg: PackageJson): Promise<Message[]> {\n\tconst declaredConstraint = pkg.engines?.node;\n\tif (!declaredConstraint) {\n\t\treturn [];\n\t}\n\n\tconst minDeclared = semver.minVersion(declaredConstraint);\n\tif (!minDeclared) {\n\t\tthrow new Error(`Failed to parse engine constraint \"${declaredConstraint}\"`);\n\t}\n\n\tconst messages: Message[] = [];\n\tconst visited = new Set<string>();\n\n\tfor await (const dependency of getDeepDependencies(pkg)) {\n\t\tif (visited.has(dependency)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisited.add(dependency);\n\n\t\ttry {\n\t\t\tconst message = await verifyDependency(dependency, minDeclared, declaredConstraint);\n\t\t\tif (message) {\n\t\t\t\tmessages.push(message);\n\t\t\t}\n\t\t} catch (err: unknown) {\n\t\t\tif (isNpmInfoError(err) && err.code === \"E404\") {\n\t\t\t\tmessages.push({\n\t\t\t\t\truleId,\n\t\t\t\t\tseverity: 1,\n\t\t\t\t\tmessage: `the transitive dependency \"${dependency}\" is not published to the NPM registry`,\n\t\t\t\t\tline: 1,\n\t\t\t\t\tcolumn: 1,\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\treturn messages;\n}\n", "import semver from \"semver\";\nimport { Severity } from \"@html-validate/stylish\";\nimport { type Message } from \"../message\";\nimport { type PackageJson } from \"../types\";\n\nconst ruleId = \"types-node-matching-engine\";\nconst severity = Severity.ERROR;\n\nexport function* typesNodeMatchingEngine(pkg: PackageJson): Generator<Message> {\n\tif (!pkg.engines?.node) {\n\t\treturn;\n\t}\n\n\tconst mergedDependencies = {\n\t\t...pkg.dependencies,\n\t\t...pkg.devDependencies,\n\t\t...pkg.peerDependencies,\n\t};\n\tif (!mergedDependencies[\"@types/node\"]) {\n\t\treturn;\n\t}\n\n\tconst declaredVersion = mergedDependencies[\"@types/node\"];\n\tif (declaredVersion === \"latest\") {\n\t\treturn;\n\t}\n\n\tconst nodeVersion = semver.minVersion(pkg.engines.node);\n\tconst typesVersion = semver.minVersion(declaredVersion);\n\n\tif (!nodeVersion || !typesVersion) {\n\t\treturn;\n\t}\n\n\tif (typesVersion.major !== nodeVersion.major) {\n\t\tyield {\n\t\t\truleId,\n\t\t\tseverity,\n\t\t\tmessage: `@types/node v${typesVersion.major} does not equal engines.node v${nodeVersion.major}`,\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t};\n\t}\n}\n", "import { type PackageJson } from \"./types\";\nimport { type Message } from \"./message\";\nimport { type Result } from \"./result\";\nimport {\n\tnonempty,\n\tpresent,\n\ttypeArray,\n\ttypeString,\n\tValidationError,\n\tvalidRepoUrl,\n\tvalidUrl,\n} from \"./validators\";\nimport { deprecatedDependency } from \"./rules/deprecated-dependency\";\nimport { isDisallowedDependency } from \"./rules/disallowed-dependency\";\nimport { isObsoleteDependency } from \"./rules/obsolete-dependency\";\nimport { exportsTypesOrder } from \"./rules/exports-types-order\";\nimport { outdatedEngines } from \"./rules/outdated-engines\";\nimport { verifyEngineConstraint } from \"./rules/verify-engine-constraint\";\nimport { typesNodeMatchingEngine } from \"./rules/types-node-matching-engine\";\n\nexport interface VerifyPackageJsonOptions {\n\tallowTypesDependencies?: boolean;\n\tignoreMissingFields?: boolean;\n}\n\ntype validator = (key: string, value: unknown) => void;\n\nconst fields: Record<string, validator[]> = {\n\tdescription: [present, typeString, nonempty],\n\tkeywords: [present, typeArray, nonempty],\n\thomepage: [present, typeString, validUrl],\n\tbugs: [present, validUrl],\n\tlicense: [present, typeString, nonempty],\n\tauthor: [present, nonempty],\n\trepository: [present, validRepoUrl],\n};\n\nfunction verifyFields(pkg: PackageJson, options: VerifyPackageJsonOptions): Message[] {\n\tconst messages: Message[] = [];\n\n\tfor (const [field, validators] of Object.entries(fields)) {\n\t\ttry {\n\t\t\tfor (const validator of validators) {\n\t\t\t\tvalidator(field, pkg[field]);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof ValidationError &&\n\t\t\t\terror.validator === present.name &&\n\t\t\t\toptions.ignoreMissingFields\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// istanbul ignore else\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessages.push({\n\t\t\t\t\truleId: \"package-json-fields\",\n\t\t\t\t\tseverity: 2,\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\tline: 1,\n\t\t\t\t\tcolumn: 1,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn messages;\n}\n\nfunction verifyDependencies(pkg: PackageJson, options: VerifyPackageJsonOptions): Message[] {\n\tconst messages: Message[] = [];\n\tconst { dependencies = {}, devDependencies = {}, peerDependencies = {} } = pkg;\n\tconst allDependencies = { ...dependencies, ...devDependencies, ...peerDependencies };\n\n\tfor (const dependency of Object.keys(dependencies)) {\n\t\t/* skip @types/* if explicitly allowed by user */\n\t\tif (options.allowTypesDependencies && dependency.match(/^@types\\//)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isDisallowedDependency(pkg, dependency)) {\n\t\t\tmessages.push({\n\t\t\t\truleId: \"disallowed-dependency\",\n\t\t\t\tseverity: 2,\n\t\t\t\tmessage: `${dependency} should be a devDependency`,\n\t\t\t\tline: 1,\n\t\t\t\tcolumn: 1,\n\t\t\t});\n\t\t}\n\t}\n\n\tfor (const dependency of Object.keys(allDependencies)) {\n\t\tconst obsolete = isObsoleteDependency(dependency);\n\t\tif (obsolete) {\n\t\t\tmessages.push({\n\t\t\t\truleId: \"obsolete-dependency\",\n\t\t\t\tseverity: 2,\n\t\t\t\tmessage: `${dependency} is obsolete and should no longer be used: ${obsolete.message}`,\n\t\t\t\tline: 1,\n\t\t\t\tcolumn: 1,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn messages;\n}\n\nexport async function verifyPackageJson(\n\tpkg: PackageJson,\n\tfilePath: string,\n\toptions: VerifyPackageJsonOptions = {},\n): Promise<Result[]> {\n\tconst messages: Message[] = [\n\t\t...(await deprecatedDependency(pkg)),\n\t\t...(await verifyEngineConstraint(pkg)),\n\t\t...exportsTypesOrder(pkg),\n\t\t...verifyFields(pkg, options),\n\t\t...verifyDependencies(pkg, options),\n\t\t...outdatedEngines(pkg),\n\t\t...typesNodeMatchingEngine(pkg),\n\t];\n\n\tif (messages.length === 0) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\t{\n\t\t\tmessages,\n\t\t\tfilePath,\n\t\t\terrorCount: messages.filter((it) => it.severity === 2).length,\n\t\t\twarningCount: messages.filter((it) => it.severity === 1).length,\n\t\t\tfixableErrorCount: 0,\n\t\t\tfixableWarningCount: 0,\n\t\t},\n\t];\n}\n", "import { type Result } from \"./result\";\nimport { type TarballMeta, getFileContent } from \"./tarball\";\nimport { type PackageJson } from \"./types\";\n\nfunction getBinaries(pkg: PackageJson): string[] {\n\tif (!pkg.bin) {\n\t\treturn [];\n\t}\n\treturn typeof pkg.bin === \"string\" ? [pkg.bin] : Object.values(pkg.bin);\n}\n\nexport async function verifyShebang(pkg: PackageJson, tarball: TarballMeta): Promise<Result[]> {\n\tconst results: Result[] = [];\n\tconst binaries = getBinaries(pkg);\n\tconst contents = await getFileContent(tarball, binaries);\n\n\tfor (const [filePath, content] of Object.entries(contents)) {\n\t\tconst text = content.toString(\"utf-8\");\n\t\tif (text.match(/^#!.+?\\r?\\n/)) {\n\t\t\tcontinue;\n\t\t}\n\t\tresults.push({\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\truleId: \"no-missing-shebang\",\n\t\t\t\t\tseverity: 2,\n\t\t\t\t\tmessage: `first line must contain shebang to be executable`,\n\t\t\t\t\tline: 1,\n\t\t\t\t\tcolumn: 1,\n\t\t\t\t},\n\t\t\t],\n\t\t\tfilePath,\n\t\t\terrorCount: 1,\n\t\t\twarningCount: 0,\n\t\t\tfixableErrorCount: 0,\n\t\t\tfixableWarningCount: 0,\n\t\t});\n\t}\n\n\treturn results;\n}\n", "import { type Result } from \"./result\";\nimport { type TarballMeta, verifyTarball } from \"./tarball\";\nimport { type VerifyPackageJsonOptions, verifyPackageJson } from \"./package-json\";\nimport { verifyShebang } from \"./shebang\";\nimport { type PackageJson } from \"./types\";\n\nexport type VerifyOptions = VerifyPackageJsonOptions;\n\nexport async function verify(\n\tpkg: PackageJson,\n\tpkgPath: string,\n\ttarball: TarballMeta,\n\toptions: VerifyOptions = {},\n): Promise<Result[]> {\n\treturn [\n\t\t...(await verifyTarball(pkg, tarball)),\n\t\t...(await verifyPackageJson(pkg, pkgPath, options)),\n\t\t...(await verifyShebang(pkg, tarball)),\n\t];\n}\n", "import path from \"path\";\nimport { type PackageJson } from \"./types\";\n\nfunction normalize(name: string): string {\n\treturn name.replace(\"/\", \"-\").replace(/^@/, \"\");\n}\n\nexport function tarballLocation(pkg: PackageJson, pkgPath: string): string {\n\tconst name = normalize(pkg.name);\n\treturn path.join(path.dirname(pkgPath), `${name}-${pkg.version}.tgz`);\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAKA,QAAM,EAAE,QAAQ,IAAI,UAAQ,MAAM;AAGlC,WAAO,UAAU,SAAS,IAAI,YAAY,QAAQ;AAC9C,UAAI,QAAQ;AAEZ,UAAI,SAAS,QAAQ,QAAQ,OAAO,SAAU,GAAG,YAAY,eAAe,WAAW,MAAM,QAAQ;AACjG,YAAI;AAAY,iBAAO;AAEvB,YAAI,eAAe;AACnB,YAAI,WAAW;AACX,cAAI,OAAO,WAAW;AAAG,kBAAM,IAAI,UAAU,wCAAwC;AACrF,yBAAe,OAAO,MAAM;AAC5B,cAAI,CAAC,OAAO,UAAU,YAAY;AAAG,kBAAM,IAAI,UAAU,aAAa;AAAA,QAC1E;AAEA,YAAI;AACJ,YAAI,SAAS,QAAW;AACpB,cAAI,OAAO,OAAO,CAAC;AACnB,cAAI,OAAO,SAAS,YAAY,SAAS;AAAM,kBAAM,IAAI,UAAU,2BAA2B;AAC9F,cAAI,EAAE,QAAQ;AAAO,kBAAM,IAAI,UAAU,iBAAiB,IAAI,GAAG;AACjE,gBAAM,KAAK,IAAI;AAAA,QACnB,OAAO;AACH,cAAI,OAAO,WAAW;AAAG,kBAAM,IAAI,UAAU,wCAAwC;AACrF,gBAAM,OAAO,MAAM;AAAA,QACvB;AAEA,gBAAQ,QAAQ;AAAA,UACZ,KAAK;AACD,kBAAM,OAAO,GAAG;AAChB;AAAA,UACJ,KAAK;AACD,kBAAM,QAAQ,GAAG;AACjB;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,OAAO,QAAQ,UAAU;AACzB,oBAAM,IAAI,UAAU,IAAI,MAAM,sCAAsC,OAAO,GAAG,EAAE;AAAA,YACpF;AACA,kBAAM,OAAO,IAAI,QAAQ,CAAC,CAAC;AAC3B;AAAA,UACJ;AACI,kBAAM,IAAI,UAAU,iCAAiC,MAAM,GAAG;AAAA,QACtE;AAEA,YAAI,eAAe,GAAG;AAClB,iBAAO,gBAAgB,IAAI,OAAO,YAAY,IAAI,IAAI,SAAS,YAAY;AAAA,QAC/E,OAAO;AACH,iBAAO;AAAA,QACX;AAAA,MACJ,CAAC;AAED,UAAI,OAAO,QAAQ;AACf,YAAI,OAAO,WAAW,KAAK,OAAO,OAAO,CAAC,MAAM,YAAY,OAAO,CAAC,MAAM,MAAM;AAAA,QAEhF,OAAO;AACH,gBAAM,IAAI,UAAU,sDAAsD;AAAA,QAC9E;AAAA,MACJ;AAEA,aAAO;AAAA,IACX;AAAA;AAAA;;;AClEA;AAAA;AAAA;AAsBA,QAAM,oBAAoB;AAE1B,QAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAiDd,YAAY,UAAU,CAAC,GAAG;AACtB,YAAI;AAAA,UACA,QAAQ;AAAA,UACR,iBAAiB;AAAA,UACjB,oBAAoB;AAAA,UACpB,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,uBAAuB;AAAA,UACvB,mBAAmB;AAAA,UACnB,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,cAAY;AAAA,QAChB,IAAI;AAEJ,aAAK,QAAQ;AACb,aAAK,iBAAiB;AACtB,aAAK,oBAAoB;AACzB,aAAK,cAAc;AACnB,aAAK,qBAAqB;AAC1B,aAAK,uBAAuB;AAC5B,aAAK,mBAAmB;AACxB,aAAK,kBAAkB;AACvB,aAAK,mBAAmB;AACxB,aAAK,UAAU;AACf,aAAK,YAAY;AACjB,aAAK,cAAc;AAAA,MACvB;AAAA;AAAA;AAAA,MAMA,kBAAkB,MAAM;AAQpB,YAAI,KAAK,aAAa;AAClB,iBAAO,KAAK,QAAQ,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC;AAAA,QACvD;AACA,YAAI,KAAK,oBAAoB;AACzB,iBAAO,KAAK,QAAQ,qBAAqB,GAAG;AAAA,QAChD;AACA,eAAO;AAAA,MACX;AAAA,MAEA,OAAO,MAAM;AAgBT,YAAI,SAAS,KAAK,MAAM,iBAAiB;AACzC,iBAAS,OAAO,OAAO,OAAO;AAC9B,eAAO;AAAA,MACX;AAAA,MAEA,kBAAkB,iBAAiB,UAAU,SAAS,OAAO;AAWzD,YAAI;AACJ,YAAI,QAAQ,GAAG;AACX,uBAAa;AAAA,QACjB,OAAO;AACH,uBAAa,QAAQ;AAAA,QACzB;AAIA,YAAI,KAAK,kBAAkB;AACvB,mBAAS,KAAK,gBAAgB,gBAAgB,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;AAC9E,0BAAgB,gBAAgB,SAAS,CAAC,IAAI,gBAAgB,gBAAgB,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,QAK9G,WAAW,CAAC,UAAU;AAClB,mBAAS,KAAK,GAAG,gBAAgB,IAAI,CAAC;AAAA,QAC1C;AAAA,MAOJ;AAAA,MAEA,aAAa,QAAQ;AAcjB,YAAI,QAAQ,CAAC;AACb,YAAI;AACJ,YAAI,KAAK,SAAS,GAAG;AACjB,gBAAM,MAAM,iBAAiB,KAAK,KAAK,gBAAgB;AAAA,QAC3D;AACA,YAAI,KAAK,cAAc,QAAW;AAC9B,cAAI,KAAK,YAAY,GAAG;AACpB,qBAAS,KAAK;AAAA,UAClB,OAAO;AACH,qBAAS,KAAK;AAAA,UAClB;AACA,cAAI,OAAO,SAAS,KAAK,YAAY,UAAU,EAAE,SAAS,KAAK,OAAO;AAClE,kBAAM,MAAM,qCAAqC;AAAA,UACrD;AAAA,QACJ;AAIA,iBAAS,OAAO,QAAQ;AAExB,eAAO,OAAO,SAAS,GAAG;AAItB,cAAI,WAAW,CAAC;AAChB,cAAI,UAAU;AAGd,cAAIA;AACJ,cAAI,OAAO;AACP,YAAAA,UAAS,KAAK;AAAA,UAClB,OAAO;AACH,YAAAA,UAAS,KAAK;AAAA,UAClB;AAGA,cAAI,QAAQ,KAAK,QAAQA,QAAO;AAIhC,cAAI,KAAK,mBAAmB,OAAO,OAAO,SAAS,CAAC,EAAE,KAAK,MAAM,MAAM,MAAM,SAAS,GAAG;AACrF,mBAAO,IAAI;AAAA,UACf;AAEA,iBAAO,OAAO,SAAS,GAAG;AACtB,gBAAI,IAAI,OAAO,OAAO,SAAS,CAAC,EAAE;AAGlC,gBAAI,UAAU,KAAK,OAAO;AACtB,uBAAS,KAAK,OAAO,IAAI,CAAC;AAC1B,yBAAW;AAAA,YAGf,OAAO;AACH;AAAA,YACJ;AAAA,UACJ;AAIA,cAAI,OAAO,UAAU,OAAO,OAAO,SAAS,CAAC,EAAE,SAAS,OAAO;AAC3D,iBAAK,kBAAkB,QAAQ,UAAU,SAAS,KAAK;AACvD,sBAAU,SAAS,IAAI,OAAK,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC;AAAA,UACnE;AAGA,cAAI,KAAK,mBAAmB,SAAS,SAAS,KAAK,SAAS,SAAS,SAAS,CAAC,EAAE,KAAK,MAAM,IAAI;AAC5F,uBAAW,SAAS,SAAS,SAAS,CAAC,EAAE;AACzC,qBAAS,IAAI;AAAA,UACjB;AAEA,cAAI,UAAU;AACV,gBAAI,KAAK,cAAc,UACnB,MAAM,SAAS,IAAI,KAAK,cACvB,OAAO,WAAW,KAClB,KAAK,mBACL,OAAO,WAAW,KAClB,CAAC,OAAO,CAAC,EAAE,KAAK,MAAM,WAAW,OAAO;AAGzC,oBAAM,KAAKA,UAAS,SAAS,KAAK,EAAE,CAAC;AAAA,YACzC,OAAO;AACH,kBAAI,YAAY;AAChB,qBAAO,UAAU;AACb,oBAAI,SAAS,SAAS,SAAS,CAAC,EAAE,KAAK,KACnC,UAAU,KAAK,YAAY,UAAU,OAAO;AAC5C,2BAAS,KAAK,KAAK,WAAW;AAC9B,wBAAM,KAAKA,UAAS,SAAS,KAAK,EAAE,CAAC;AACrC,8BAAY;AACZ;AAAA,gBACJ;AACA,2BAAW,SAAS,EAAE,EAAE;AACxB,yBAAS,IAAI;AAAA,cACjB;AACA,kBAAI,CAAC,WAAW;AACZ,oBAAI,OAAO;AACP,sBAAI,YAAY,MAAM,MAAM,SAAS,CAAC,EAAE,QAAQ;AAChD,sBAAI,UAAU,SAAS,KAAK,YAAY,UAChC,KAAK,OAAO;AAChB,0BAAM,MAAM,SAAS,CAAC,IAAI,YAAY,KAAK;AAC3C;AAAA,kBACJ;AAAA,gBACJ;AACA,sBAAM,KAAKA,UAAS,KAAK,YAAY,OAAO,CAAC;AAAA,cACjD;AACA;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,eAAO;AAAA,MACX;AAAA,MAEA,cAAc,MAAM;AAChB,eAAO,KAAK,kBAAkB,IAAI;AAClC,eAAO,KAAK,OAAO,IAAI;AAAA,MAC3B;AAAA;AAAA,MAIA,KAAK,MAAM;AAUP,YAAI,SAAS,KAAK,cAAc,IAAI;AAKpC,eAAO,KAAK,aAAa,MAAM;AAAA,MACnC;AAAA,MAEA,KAAK,MAAM;AAQP,eAAO,KAAK,KAAK,IAAI,EAAE,KAAK,IAAI;AAAA,MACpC;AAAA,IACJ;AAKA,aAAS,KAAK,MAAM,UAAU,CAAC,GAAG;AAW9B,UAAI,EAAE,QAAQ,IAAI,GAAG,OAAO,IAAI;AAChC,UAAI,IAAI,IAAI,YAAY,OAAO,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;AACxD,aAAO,EAAE,KAAK,IAAI;AAAA,IACtB;AAEA,aAAS,KAAK,MAAM,UAAU,CAAC,GAAG;AAU9B,UAAI,EAAE,QAAQ,IAAI,GAAG,OAAO,IAAI;AAChC,UAAI,IAAI,IAAI,YAAY,OAAO,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;AACxD,aAAO,EAAE,KAAK,IAAI;AAAA,IACtB;AAIA,QAAI,sBAAsB;AAC1B,QAAI,yBAAyB;AAE7B,aAAS,OAAO,MAAM;AAgBlB,UAAI,SAAS;AACb,aAAO,KAAK,QAAQ,qBAAqB,EAAE;AAC3C,UAAI,UAAU,KAAK,MAAM,sBAAsB,KAAK,CAAC;AACrD,eAAS,UAAU,SAAS;AACxB,iBAAS,OAAO,MAAM,GAAG,EAAE;AAE3B,YAAI,WAAW,QAAW;AACtB,mBAAS;AAAA,QAIb,WAAW,OAAO,WAAW,MAAM,GAAG;AAAA,QAKtC,WAAW,OAAO,WAAW,MAAM,GAAG;AAClC,mBAAS;AAAA,QAIb,OAAO;AACH,mBAAS,IAAI,GAAG,IAAI,OAAO,UAAU,IAAI,OAAO,QAAQ,KAAK;AACzD,gBAAI,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG;AACzB,uBAAS,OAAO,MAAM,GAAG,CAAC;AAC1B;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAEA,UAAI,QAAQ;AACR,eAAO,KAAK,QAAQ,IAAI,OAAO,MAAM,QAAQ,IAAI,GAAG,EAAE;AAAA,MAC1D;AACA,aAAO;AAAA,IACX;AAEA,WAAO,UAAU,EAAE,MAAM,MAAM,OAAO;AAAA;AAAA;;;ACvbtC;AAAA;AAAA;AAsEA,QAAM,WAAW;AAEjB,QAAM,WAAW;AACjB,QAAM,eAAe;AACrB,QAAM,cAAc;AACpB,QAAM,SAAS;AACf,QAAM,YAAY;AAClB,QAAM,0BAA0B;AAMhC,QAAM,SAAS,UAAQ,QAAQ;AAC/B,QAAM,OAAO,UAAQ,MAAM;AAC3B,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAM,MAAM;AACZ,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,OAAO,KAAK;AAElB,aAAS,WAAW;AAEhB,aAAO,QAAQ,KAAK,MAAM,CAAC;AAAA,IAC/B;AAEA,aAAS,oBAAoB;AACzB,aAAO;AAAA,QACH,SAAS,CAAC,QAAQ,IAAI,WAAW,QAAQ,OAAO,WAAW;AAAA,MAC/D;AAAA,IACJ;AAEA,aAAS,QAAQ,QAAQ,MAAM;AAC3B,aAAO,OAAO,UAAU,eAAe,KAAK,QAAQ,IAAI;AAAA,IAC5D;AAEA,aAAS,QAAQ,QAAQ,MAAM,OAAO;AAClC,aAAO,QAAQ,QAAQ,IAAI,IAAI,OAAO,IAAI,IAAI;AAAA,IAClD;AAEA,aAAS,QAAQ,QAAQ,MAAM,OAAO;AAClC,aAAO,IAAI,IAAI;AAAA,IACnB;AAEA,aAAS,WAAW,QAAQ,MAAM,OAAO;AACrC,UAAI,CAAC,QAAQ,QAAQ,IAAI;AAAG,eAAO,IAAI,IAAI;AAC3C,aAAO,OAAO,IAAI;AAAA,IACtB;AAEA,aAAS,QAAQ,QAAQ,MAAM;AAC3B,aAAO,OAAO,IAAI;AAAA,IACtB;AAEA,aAAS,MAAM,MAAM,IAAI,OAAK,GAAG;AAE7B,UAAI,UAAU,WAAW;AAAG,SAAE,IAAI,IAAK,IAAI,CAAE,MAAM,CAAE;AACrD,UAAI,OAAO,SAAS,YAAY,OAAO,OAAO,YAAY,OAAO,SAAS,UAAU;AAChF,cAAM,IAAI,UAAU,8CAA8C;AAAA,MACtE;AACA,UAAI,SAAS;AAAG,cAAM,IAAI,UAAU,gCAAgC;AAEpE,UAAI,SAAS,CAAC;AACd,UAAI,OAAO,GAAG;AACV,iBAAS,IAAI,MAAM,IAAI,IAAI,KAAK;AAAM,iBAAO,KAAK,CAAC;AAAA,MACvD,OAAO;AACH,iBAAS,IAAI,MAAM,IAAI,IAAI,KAAK;AAAM,iBAAO,KAAK,CAAC;AAAA,MACvD;AACA,aAAO;AAAA,IACX;AAEA,aAAS,WAAW,KAAK,WAAW,OAAO;AACvC,UAAI;AACJ,UAAI,CAAC,UAAU;AACX,iBAAS,IAAI,MAAM,6CAA6C;AAAA,MACpE,OAAO;AACH,iBAAS,CAAC;AACV,YAAI,QAAQ,IAAI,MAAM,+CAA+C;AACrE,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AACtC,iBAAO,KAAK,MAAM,CAAC,KAAK,IAAI,IAAI,MAAM,SAAS,MAAM,IAAI,CAAC,IAAI,GAAG;AAAA,QACrE;AAAA,MACJ;AACA,UAAI,CAAC,OAAO,OAAO,SAAS,CAAC;AAAG,eAAO,IAAI;AAC3C,aAAO;AAAA,IACX;AAEA,aAAS,eAAe,QAAQ,cAAc;AAC1C,UAAI,MAAM;AACV,aAAO,MAAM,OAAO,UAAU,aAAa,SAAS,OAAO,GAAG,CAAC;AAAG;AAClE,aAAO,MAAM,OAAO,MAAM,GAAG,IAAI;AAAA,IACrC;AAEA,aAAS,cAAc,QAAQ,KAAK,UAAU;AAC1C,UAAI,SAAS,OAAO,MAAM,GAAG;AAC7B,UAAI,OAAO,SAAS,UAAU;AAC1B,iBAAS,OAAO,MAAM,GAAG,QAAQ,EAAE,OAAO,CAAE,OAAO,MAAM,QAAQ,EAAE,KAAK,GAAG,CAAE,CAAC;AAAA,MAClF;AACA,aAAO;AAAA,IACX;AAEA,aAAS,aAAa,QAAQ,QAAQ;AAClC,UAAI,OAAO,WAAW,OAAO;AAAQ,eAAO;AAC5C,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACpC,YAAI,OAAO,CAAC,MAAM,OAAO,CAAC;AAAG,iBAAO;AAAA,MACxC;AACA,aAAO;AAAA,IACX;AAEA,aAAS,cAAc,OAAO,MAAM;AAChC,UAAI,MAAM,MAAM,QAAQ,IAAI;AAC5B,UAAI,QAAQ;AAAI,cAAM,IAAI,UAAU,IAAI,kBAAkB,IAAI,CAAC;AAC/D,YAAM,OAAO,KAAK,CAAC;AAAA,IACvB;AAKA,aAAS,kBAAkB,SAAS;AAChC,UAAI,YAAY,QAAW;AACvB,eAAO,CAAC;AAAA,MACZ,WAAW,MAAM,QAAQ,OAAO,GAAG;AAC/B,eAAO;AAAA,MACX,WAAW,YAAY,QAAQ,OAAO,QAAQ,OAAO,QAAQ,MAAM,YAAY;AAC3E,eAAO,MAAM,KAAK,OAAO;AAAA,MAC7B,WAAW,OAAO,YAAY,YAAY,YAAY,MAAM;AACxD,eAAO,OAAO,KAAK,OAAO;AAAA,MAC9B,OAAO;AACH,cAAM,IAAI,MAAM,IAAI,6BAA6B,OAAO,CAAC;AAAA,MAC7D;AAAA,IACJ;AAGA,aAAS,UAAU,KAAK;AACpB,UAAI,SAAS;AAAA;AAAA,QACT,CAAC,IAAI,IAAI,GAAG,YAAa,MAAM;AAC3B,cAAI,aAAa,eAAe,UAAU,CAAC;AAC3C,iBAAO,QAAQ,UAAU,KAAK,MAAM,aAAa,MAAM,UAAU;AAAA,QACrE;AAAA,MACJ;AACA,aAAO,IAAI,IAAI,EAAE,YAAY,IAAI;AAEjC,UAAI,UAAU,OAAO,WAAW,IAAI,IAAI;AACxC,aAAO,OAAO,IAAI,IAAI;AAAA,IAC1B;AAEA,aAAS,OAAO,QAAQ,MAAM,IAAI;AAC9B,UAAI;AACA,YAAI,OAAO,OAAO,YAAY;AAC9B,eAAO,eAAe,QAAQ,MAAM;AAAA,UAChC,OAAO,KAAK,UAAU,OAAO,EAAE,GAAG;AAAA,YAAI;AAAA,YAClC;AAAA,YAAM;AAAA,YAAM;AAAA,YAAM;AAAA,UAAE,CAAC;AAAA,UACzB,YAAY;AAAA,QAChB,CAAC;AAAA,MACL,QAAQ;AAAA,MAAC;AAAA,IACb;AAGA,aAAS,iBAAiB,QAAQ;AAC9B,eAAS,QAAQ,OAAO,oBAAoB,OAAO,SAAS,GAAG;AAC3D,YAAI,YAAY,KAAK,QAAQ,aAAa,OAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC;AACxE,YAAI,cAAc;AAAM,iBAAO,OAAO,WAAW,WAAW,IAAI;AAAA,MACpE;AACA,aAAO;AAAA,IACX;AAEA,aAAS,gBAAgB,KAAK;AAC1B,YAAM,IAAI,QAAQ,aAAa,OAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC;AAC7D,UAAI,QAAQ;AAAW,cAAM;AAC7B,UAAI,QAAQ;AAAS,cAAM;AAC3B,aAAO;AAAA,IACX;AAEA,aAAS,aAAa,KAAK;AACvB,UAAI,QAAQ;AAAgB,cAAM;AAClC,UAAI,QAAQ;AAAY,cAAM;AAC9B,YAAM,IAAI,QAAQ,UAAU,OAAK,MAAM,EAAE,YAAY,CAAC;AACtD,aAAO;AAAA,IACX;AAGA,QAAI,aAAa,OAAO,kBAAkB;AAC1C,aAAS,YAAY,MAAM,YAAY;AACnC,eAAS,WAAW;AAChB,YAAI,QAAQ,IAAI,MAAM,EAAE,MAAM,MAAM,IAAI,EACnC,IAAI,OAAK,EAAE,MAAM,sBAAsB,CAAC,EACxC,OAAO,OAAO,EACd,IAAI,OAAK,EAAE,CAAC,CAAC,EACb,IAAI,QAAM,GAAG,MAAM,SAAS,EAAE,CAAC,CAAC;AAErC,YAAI,MAAM,UAAU,MAAM,CAAC,MAAM,SAAS;AAAM,gBAAM,MAAM;AAC5D,YAAI,MAAM,UAAU,MAAM,CAAC,MAAM,YAAY;AAAM,gBAAM,MAAM;AAC/D,eAAO,MAAM,SAAS,MAAM,CAAC,IAAI;AAAA,MACrC;AAEA,aAAO,MAAM,KAAK,IAAI;AACtB,UAAI,SAAS,CAAC;AACd,UAAI,SAAS,CAAC;AACd,UAAI,WAAW,KAAK,UAAU,KAAK,KAAK,SAAS,CAAC;AAElD,UAAI,OAAO,aAAa,YAAY,aAAa,QAAQ,CAAC,MAAM,QAAQ,QAAQ,MAC3E,CAAC,SAAS,eAAe,SAAS,YAAY,SAAS,WAAW;AACnE,iBAAS,OAAO,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC;AAAA,MACzC;AAGA,UAAI,UAAU,CAAC;AACf,eAAS,OAAO,OAAO,KAAK,UAAU,GAAG;AACrC,YAAI,WAAW,gBAAgB,GAAG;AAClC,YAAI,aAAa,OAAQ,YAAY,QAAS;AAC1C,cAAI,OAAO,QAAQ;AAAA,UAGnB,OAAO;AACH,mBAAO,GAAG,IAAI,OAAO,QAAQ;AAAA,UACjC;AACA,kBAAQ,KAAK,CAAE,UAAU,GAAI,CAAC;AAC9B,iBAAO,OAAO,QAAQ;AAAA,QAC1B;AAAA,MACJ;AACA,UAAI,QAAQ,QAAQ;AAChB,YAAI,OAAO,SAAS;AACpB,kBAAU,eAAe,MAAM;AAAA,UAAI;AAAA,UAC/B;AAAA,UAAM,QAAQ,IAAI,CAAC,CAAE,GAAG,CAAE,MAAM,IAAI,YAAY,GAAG,CAAC,CAAC;AAAA,QAAC,CAAC;AAAA,MAC/D;AAGA,UAAI,sBAAsB,CAAC;AAC3B,UAAI,mBAAmB,KAAK;AAE5B,eAAS,CAAE,KAAK,GAAI,KAAK,OAAO,QAAQ,UAAU,GAAG;AACjD,YAAI,IAAI,CAAC,MAAM,KAAK;AAChB,cAAI,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,KAAK;AAElC,gBAAIC,WAAU,CAAC;AACf,qBAASC,QAAO,OAAO,KAAK,MAAM,GAAG;AACjC,kBAAI,WAAW,aAAaA,IAAG;AAC/B,kBAAI,aAAaA,QAAQA,QAAO,QAAS;AACrC,oBAAI,YAAY,QAAQ;AAAA,gBAGxB,OAAO;AACH,yBAAO,QAAQ,IAAI,OAAOA,IAAG;AAAA,gBACjC;AACA,gBAAAD,SAAQ,KAAK,CAAEC,MAAK,QAAS,CAAC;AAC9B,uBAAO,OAAOA,IAAG;AAAA,cACrB;AAAA,YACJ;AACA,gBAAID,SAAQ,QAAQ;AAChB,kBAAI,OAAO,SAAS;AACpB,wBAAU,eAAe,MAAM;AAAA,gBAAI;AAAA,gBAC/B;AAAA,gBAAMA,SAAQ,IAAI,CAAC,CAAE,GAAG,CAAE,MAAM,IAAI,YAAY,GAAG,CAAC,CAAC;AAAA,cAAC,CAAC;AAAA,YAC/D;AAEA,mBAAO,KAAK,MAAM;AAClB,qBAAS,CAAC;AAAA,UACd,OAAO;AACH,mBAAO,KAAK,IAAI;AAChB,mBAAO,CAAC;AAAA,UACZ;AAAA,QACJ,WAAW,OAAO,UAAU,KAAK,SAAS,GAAG;AACzC,gBAAM,IAAI,UAAU,IAAI,4CAA4C,SAAS,GAAG,GAAG,CAAC;AAAA,QACxF,WAAW,OAAO,QAAQ;AACtB,iBAAO,KAAK,OAAO,GAAG,CAAC;AACvB,iBAAO,OAAO,GAAG;AAAA,QACrB,WAAW,KAAK,SAAS,GAAG;AACxB,iBAAO,KAAK,KAAK,MAAM,CAAC;AAAA,QAC5B,WAAW,QAAQ,YAAY;AAC3B,iBAAO,KAAK,GAAG;AAAA,QACnB,OAAO;AACH,8BAAoB,KAAK,GAAG;AAAA,QAChC;AAAA,MACJ;AAEA,UAAI,OAAO,KAAK,MAAM,EAAE,QAAQ;AAC5B,cAAM,IAAI,UAAU;AAAA,UAAI;AAAA,UACpB,SAAS;AAAA,UAAG,OAAO,KAAK,MAAM,EAAE,CAAC;AAAA,QAAC,CAAC;AAAA,MAC3C;AAEA,UAAI,KAAK,QAAQ;AACb,YAAI,OAAO,OAAO,QAAQ,UAAU,EAAE,OAAO,CAAC,CAAE,GAAG,CAAE,MAAM,EAAE,CAAC,MAAM,OAAO,MAAM,UAAU,EAAE;AAC7F,YAAI,KAAK,OAAO,QAAQ,UAAU,EAAE,OAAO,CAAC,CAAE,CAAE,MAAM,EAAE,CAAC,MAAM,GAAG,EAAE;AACpE,cAAM,IAAI,UAAU;AAAA,UAAI;AAAA,UACpB,SAAS;AAAA,UACT,SAAS,KAAK,IAAI,iBAAiB,MAAM,EAAE,IAAI;AAAA,UAC/C,SAAS,MAAM,OAAO,IAAI,KAAK;AAAA,UAC/B;AAAA,UACA,qBAAqB,IAAI,QAAQ;AAAA,QAAM,CAAC;AAAA,MAChD;AAEA,UAAI,oBAAoB,QAAQ;AAC5B,YAAI,OAAO,oBAAoB,IAAI,IAAI;AACvC,YAAI,KAAK,SAAS;AAAG,eAAK,KAAK,SAAS,CAAC,IAAI,SAAS,KAAK,KAAK,SAAS,CAAC;AAC1E,YAAI,aAAa,KAAK,KAAK,KAAK,WAAW,IAAI,KAAK,IAAI;AACxD,cAAM,IAAI,UAAU;AAAA,UAAI;AAAA,UACpB,SAAS;AAAA,UAAG,KAAK;AAAA,UAAQ,KAAK,WAAW,IAAI,KAAK;AAAA,UAAK;AAAA,QAAU,CAAC;AAAA,MAC1E;AAEA,aAAO;AAAA,IACX;AAEA,QAAI,gBAAgB,CAAC;AACrB,aAAS,UAAU,IAAI,QAAQ;AAC3B,oBAAc,EAAE,IAAI,cAAc,EAAE,KAAK,KAAK,UAAU,MAAM;AAAA,MAAC,GAAG,MAAM;AACxE,oBAAc,EAAE,EAAE;AAAA,IACtB;AAMA,aAAS,iBAAiB,MAAM,QAAQ;AAUpC,aAAO,MAAM,yBAAyB,IAAI;AAAA,QACtC,CAAC,KAAK,QAAQ,MAAM,IAAI;AACpB,cAAI,YAAY,KAAK,YAAY;AACjC,cAAI,cAAc,CAAC;AACnB,cAAI,YAAY,CAAC;AACjB,mBAAS,OAAO,KAAK,UAAU,GAAG;AAC9B,wBAAY,KAAK,KAAK,GAAG,CAAC;AAAA,UAC9B;AACA,mBAAS,CAAE,MAAM,KAAM,KAAK,KAAK,YAAY,GAAG;AAC5C,gBAAI,uBAAuB,KAAK,IAAI,GAAG;AACnC,0BAAY,KAAK,IAAI,SAAS,MAAM,KAAK,CAAC;AAAA,YAC9C,OAAO;AACH,wBAAU,IAAI,IAAI;AAAA,YACtB;AAAA,UACJ;AACA,cAAI,OAAO,KAAK,SAAS,EAAE,QAAQ;AAC/B,wBAAY,KAAK,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC;AAAA,UACjD;AACA,iBAAO,IAAI,UAAU,WAAW,YAAY,KAAK,IAAI,CAAC;AAAA,QAC1D;AAAA,QAEA,WAAW;AACP,iBAAO,KAAK,KAAK,QAAQ,MAAM,EAAE;AAAA,QACrC;AAAA,QAEA,cAAc;AACV,iBAAO,OAAO,QAAQ,IAAI;AAAA,QAC9B;AAAA,QAEA,YAAY;AACR,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,IACJ;AAGA,aAAS,YAAY,OAAO;AACxB,UAAI,UAAU,QAAW;AACrB,eAAO,CAAC;AAAA,MACZ;AACA,aAAO,MAAM,MAAM,CAAC;AAAA,IACxB;AAMA,QAAM,gBAAgB,iBAAiB,UAAU,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQjE,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,MAAM;AAAA,UACN,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,OAAO;AAAA,QACX,CAAC;AAGD,YAAI,UAAU,QAAW;AACrB,kBAAQ,kBAAkB,EAAE;AAC5B,mBAAS;AAAA,QACb;AAEA,aAAK,QAAQ;AACb,aAAK,oBAAoB;AACzB,aAAK,qBAAqB,KAAK;AAAA,UAAI;AAAA,UACL,KAAK,IAAI,QAAQ,IAAI,mBAAmB,CAAC;AAAA,QAAC;AACxE,aAAK,SAAS;AAEd,aAAK,kBAAkB;AACvB,aAAK,SAAS;AACd,aAAK,qBAAqB;AAE1B,aAAK,gBAAgB,KAAK,SAAS,MAAM,MAAS;AAClD,aAAK,mBAAmB,KAAK;AAE7B,aAAK,sBAAsB;AAC3B,aAAK,sBAAsB;AAAA,MAC/B;AAAA;AAAA;AAAA;AAAA,MAKA,UAAU;AACN,aAAK,mBAAmB,KAAK;AAC7B,aAAK,UAAU;AAAA,MACnB;AAAA,MAEA,UAAU;AACN,aAAK,mBAAmB,KAAK;AAC7B,eAAO,KAAK,mBAAmB,GAAG,2BAA2B;AAC7D,aAAK,UAAU;AAAA,MACnB;AAAA,MAEA,UAAU,MAAM,MAAM;AAClB,aAAK,iBAAiB,MAAM,KAAK,CAAE,MAAM,IAAK,CAAC;AAAA,MACnD;AAAA;AAAA;AAAA;AAAA,MAKA,cAAc,SAAS;AACnB,aAAK,QAAQ;AACb,YAAI,UAAU,KAAK,SAAS,MAAM,KAAK,kBAAkB,OAAO;AAChE,aAAK,UAAU,QAAQ,YAAY,KAAK,OAAO,GAAG,CAAC,CAAC;AACpD,aAAK,mBAAmB;AAAA,MAC5B;AAAA,MAEA,cAAc;AACV,aAAK,mBAAmB,KAAK,iBAAiB;AAC9C,aAAK,QAAQ;AAAA,MACjB;AAAA,MAEA,SAAS,MAAM;AACX,YAAI,SAAS,YAAY,SAAS,QAAW;AACzC,eAAK,UAAU,KAAK,aAAa,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;AAAA,QACvD;AAAA,MACJ;AAAA,MAEA,UAAU,OAAO,SAAS,QAAQE,UAAS,QAAW;AAClD,YAAI,UAAU,UAAU;AACpB,cAAI,OAAO,CAAE,OAAO,SAAS,QAAQA,OAAO;AAC5C,eAAK,UAAU,KAAK,cAAc,KAAK,IAAI,GAAG,IAAI;AAAA,QACtD;AAAA,MACJ;AAAA,MAEA,aAAa,QAAQ;AACjB,YAAI,OAAO,SAAS,UAAU;AAG1B,cAAI,cAAc,CAAC,KAAK,0BAA0B,MAAM,CAAC;AACzD,mBAAS,aAAa,KAAK,0BAA0B,MAAM,GAAG;AAC1D,wBAAY,KAAK,KAAK,0BAA0B,SAAS,CAAC;AAAA,UAC9D;AAGA,cAAI,oBAAoB,KAAK,IAAI,GAAG,YAAY,IAAI,gBAAc,WAAW,MAAM,CAAC;AACpF,cAAI,gBAAgB,oBAAoB,KAAK;AAC7C,eAAK,qBAAqB,KAAK;AAAA,YAAI,KAAK;AAAA,YACL;AAAA,UAAa;AAGhD,eAAK,UAAU,KAAK,eAAe,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;AAAA,QAC3D;AAAA,MACJ;AAAA,MAEA,cAAc,SAAS;AACnB,iBAAS,UAAU,SAAS;AACxB,eAAK,aAAa,MAAM;AAAA,QAC5B;AAAA,MACJ;AAAA;AAAA;AAAA;AAAA,MAKA,cAAc;AACV,YAAI,OAAO,KAAK,cAAc,YAAY;AAC1C,YAAI,MAAM;AACN,iBAAO,KAAK,QAAQ,KAAK,qBAAqB,MAAM;AACpD,iBAAO,KAAK,QAAQ,cAAc,EAAE,IAAI;AAAA,QAC5C;AACA,eAAO;AAAA,MACX;AAAA,MAEA,YAAY,cAAc;AACtB,eAAO,aAAa,OAAO,UAAQ,QAAQ,SAAS,QAAQ,EAAE,KAAK,EAAE;AAAA,MACzE;AAAA,MAEA,cAAc,OAAO,SAAS,QAAQA,SAAQ;AAC1C,YAAIA,YAAW,QAAW;AACtB,UAAAA,UAAS;AAAA,QACb;AAGA,YAAI,UAAU,QAAW;AACrB,kBAAQ,IAAI,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;AAAA,QAG3C,WAAW,UAAU,UAAa,CAAC,QAAQ,QAAQ;AAC/C,kBAAQ,IAAI,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;AAAA,QAGhD,WAAW,UAAU,QAAW;AAC5B,cAAI,OAAO,IAAI,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;AAG/C,cAAI,YAAY,CAAC;AACjB,cAAI,cAAc,CAAC;AACnB,mBAAS,UAAU,SAAS;AACxB,gBAAI,OAAO,eAAe,QAAQ;AAC9B,wBAAU,KAAK,MAAM;AAAA,YACzB,OAAO;AACH,0BAAY,KAAK,MAAM;AAAA,YAC3B;AAAA,UACJ;AAGA,cAAI,eAAe,KAAK,sBAAsB,CAAC,EAAE,OAAO,SAAS,EAAE,OAAO,WAAW,GAAG,MAAM;AAC9F,kBAAQ,CAAE,MAAM,YAAa,EAAE,IAAI,MAAM,EAAE,KAAK,GAAG;AAGnD,cAAI,aAAa,KAAK,SAAS,KAAK;AACpC,cAAIA,QAAO,SAAS,MAAM,SAAS,YAAY;AAG3C,gBAAI,cAAc;AAClB,gBAAI,YAAY,KAAK,sBAAsB,WAAW,MAAM;AAC5D,gBAAI,YAAY,KAAK,sBAAsB,aAAa,MAAM;AAC9D,gBAAI,YAAY,UAAU,MAAM,WAAW,KAAK,CAAC;AACjD,gBAAI,YAAY,UAAU,MAAM,WAAW,KAAK,CAAC;AACjD,mBAAO,UAAU,KAAK,GAAG,MAAM,SAAS;AACxC,mBAAO,UAAU,KAAK,GAAG,MAAM,SAAS;AAGxC,gBAAI,YAAY,CAAC,OAAO,QAAQA,UAAS,WAAc;AACnD,kBAAIC,SAAQ,CAAC;AACb,kBAAI,OAAO,CAAC;AACZ,kBAAI;AACJ,kBAAID,YAAW,QAAW;AACtB,2BAAWA,QAAO,SAAS;AAAA,cAC/B,OAAO;AACH,2BAAW,OAAO,SAAS;AAAA,cAC/B;AACA,uBAAS,QAAQ,OAAO;AACpB,oBAAI,WAAW,IAAI,KAAK,SAAS,cAAc,MAAM;AACjD,kBAAAC,OAAM,KAAK,SAAS,KAAK,KAAK,GAAG,CAAC;AAClC,yBAAO,CAAC;AACR,6BAAW,OAAO,SAAS;AAAA,gBAC/B;AACA,qBAAK,KAAK,IAAI;AACd,4BAAY,KAAK,SAAS;AAAA,cAC9B;AACA,kBAAI,KAAK,QAAQ;AACb,gBAAAA,OAAM,KAAK,SAAS,KAAK,KAAK,GAAG,CAAC;AAAA,cACtC;AACA,kBAAID,YAAW,QAAW;AACtB,gBAAAC,OAAM,CAAC,IAAIA,OAAM,CAAC,EAAE,MAAM,OAAO,MAAM;AAAA,cAC3C;AACA,qBAAOA;AAAA,YACX;AAEA,gBAAI;AAGJ,gBAAID,QAAO,SAAS,KAAK,UAAU,OAAO,YAAY;AAClD,kBAAI,SAAS,IAAI,OAAOA,QAAO,SAAS,KAAK,SAAS,CAAC;AACvD,kBAAI,UAAU,QAAQ;AAClB,wBAAQ,UAAU,CAAC,IAAI,EAAE,OAAO,SAAS,GAAG,QAAQA,OAAM;AAC1D,wBAAQ,MAAM,OAAO,UAAU,WAAW,MAAM,CAAC;AAAA,cACrD,WAAW,UAAU,QAAQ;AACzB,wBAAQ,UAAU,CAAC,IAAI,EAAE,OAAO,SAAS,GAAG,QAAQA,OAAM;AAAA,cAC9D,OAAO;AACH,wBAAQ,CAAC,IAAI;AAAA,cACjB;AAAA,YAGJ,OAAO;AACH,kBAAI,SAAS,IAAI,OAAOA,QAAO,MAAM;AACrC,kBAAI,QAAQ,CAAC,EAAE,OAAO,SAAS,EAAE,OAAO,SAAS;AACjD,sBAAQ,UAAU,OAAO,MAAM;AAC/B,kBAAI,MAAM,SAAS,GAAG;AAClB,wBAAQ,CAAC;AACT,wBAAQ,MAAM,OAAO,UAAU,WAAW,MAAM,CAAC;AACjD,wBAAQ,MAAM,OAAO,UAAU,WAAW,MAAM,CAAC;AAAA,cACrD;AACA,sBAAQ,CAAC,IAAI,EAAE,OAAO,KAAK;AAAA,YAC/B;AAGA,oBAAQ,MAAM,KAAK,IAAI;AAAA,UAC3B;AAAA,QACJ;AAGA,eAAO,IAAI,YAAYA,SAAQ,KAAK;AAAA,MACxC;AAAA,MAEA,sBAAsB,SAAS,QAAQ;AAEnC,YAAI,gBAAgB,oBAAI,IAAI;AAC5B,YAAI,UAAU,CAAC;AACf,iBAAS,SAAS,QAAQ;AACtB,cAAI,QAAQ,QAAQ,QAAQ,MAAM,eAAe,CAAC,CAAC;AACnD,cAAI,UAAU,IAAI;AACd;AAAA,UACJ,OAAO;AACH,gBAAI,MAAM,QAAQ,MAAM,eAAe;AACvC,gBAAI,aAAa,QAAQ,MAAM,OAAO,GAAG,GAAG,MAAM,cAAc,GAAG;AAC/D,uBAAS,UAAU,MAAM,gBAAgB;AACrC,8BAAc,IAAI,MAAM;AAAA,cAC5B;AACA,kBAAI,CAAC,MAAM,UAAU;AACjB,oBAAI,SAAS,SAAS;AAClB,0BAAQ,KAAK,KAAK;AAAA,gBACtB,OAAO;AACH,0BAAQ,KAAK,IAAI;AAAA,gBACrB;AACA,oBAAI,OAAO,SAAS;AAChB,0BAAQ,GAAG,KAAK;AAAA,gBACpB,OAAO;AACH,0BAAQ,GAAG,IAAI;AAAA,gBACnB;AAAA,cACJ,OAAO;AACH,oBAAI,SAAS,SAAS;AAClB,0BAAQ,KAAK,KAAK;AAAA,gBACtB,OAAO;AACH,0BAAQ,KAAK,IAAI;AAAA,gBACrB;AACA,oBAAI,OAAO,SAAS;AAChB,0BAAQ,GAAG,KAAK;AAAA,gBACpB,OAAO;AACH,0BAAQ,GAAG,IAAI;AAAA,gBACnB;AAAA,cACJ;AACA,uBAAS,KAAK,MAAM,QAAQ,GAAG,GAAG,GAAG;AACjC,wBAAQ,CAAC,IAAI;AAAA,cACjB;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAGA,YAAI,QAAQ,CAAC;AACb,iBAAS,CAAE,GAAG,MAAO,KAAK,OAAO,QAAQ,OAAO,GAAG;AAI/C,cAAI,OAAO,SAAS,UAAU;AAC1B,kBAAM,KAAK,MAAS;AACpB,gBAAI,QAAQ,CAAC,CAAC,MAAM,KAAK;AACrB,qBAAO,QAAQ,CAAC,CAAC;AAAA,YACrB,WAAW,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK;AAChC,qBAAO,QAAQ,CAAC,IAAI,CAAC;AAAA,YACzB;AAAA,UAGJ,WAAW,CAAC,OAAO,eAAe,QAAQ;AACtC,gBAAI,gBAAgB,KAAK,oCAAoC,MAAM;AACnE,gBAAI,OAAO,KAAK,aAAa,QAAQ,aAAa;AAGlD,gBAAI,cAAc,IAAI,MAAM,GAAG;AAC3B,kBAAI,KAAK,CAAC,MAAM,OAAO,KAAK,KAAK,SAAS,CAAC,MAAM,KAAK;AAClD,uBAAO,KAAK,MAAM,GAAG,EAAE;AAAA,cAC3B;AAAA,YACJ;AAGA,kBAAM,KAAK,IAAI;AAAA,UAGnB,OAAO;AACH,gBAAI,gBAAgB,OAAO,eAAe,CAAC;AAC3C,gBAAI;AAIJ,gBAAI,OAAO,UAAU,GAAG;AACpB,qBAAO,OAAO,aAAa;AAAA,YAI/B,OAAO;AACH,kBAAI,gBAAgB,KAAK,kCAAkC,MAAM;AACjE,kBAAI,cAAc,KAAK,aAAa,QAAQ,aAAa;AACzD,qBAAO,IAAI,SAAS,eAAe,WAAW;AAAA,YAClD;AAGA,gBAAI,CAAC,OAAO,YAAY,CAAC,cAAc,IAAI,MAAM,GAAG;AAChD,qBAAO,IAAI,QAAQ,IAAI;AAAA,YAC3B;AAGA,kBAAM,KAAK,IAAI;AAAA,UACnB;AAAA,QACJ;AAGA,iBAAS,KAAK,OAAO,KAAK,OAAO,EAAE,IAAI,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG;AAClE,gBAAM,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;AAAA,QACnC;AAGA,YAAI,OAAO,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAGzC,eAAO,KAAK,QAAQ,aAAa,IAAI;AACrC,eAAO,KAAK,QAAQ,aAAa,IAAI;AACrC,eAAO,KAAK,QAAQ,iBAAiB,EAAE;AACvC,eAAO,KAAK,QAAQ,gBAAgB,MAAM,IAAI;AAC9C,eAAO,KAAK,KAAK;AAGjB,eAAO;AAAA,MACX;AAAA,MAEA,aAAa,MAAM;AACf,YAAI,KAAK,SAAS,SAAS,GAAG;AAC1B,iBAAO,IAAI,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAAA,QACzC;AACA,YAAI,aAAa,KAAK,IAAI,KAAK,SAAS,KAAK,iBAAiB,EAAE;AAChE,YAAI,SAAS,IAAI,OAAO,KAAK,eAAe;AAC5C,eAAO,KAAK,WAAW,MAAM,YAAY,MAAM,IAAI;AAAA,MACvD;AAAA,MAEA,eAAe,QAAQ;AAEnB,YAAI,gBAAgB,KAAK;AAAA,UAAI,KAAK,qBAAqB;AAAA,UAC1B,KAAK;AAAA,QAAkB;AACpD,YAAI,aAAa,KAAK,IAAI,KAAK,SAAS,eAAe,EAAE;AACzD,YAAI,eAAe,gBAAgB,KAAK,kBAAkB;AAC1D,YAAI,gBAAgB,KAAK,0BAA0B,MAAM;AACzD,YAAI;AAGJ,YAAI,CAAC,OAAO,MAAM;AACd,cAAI,MAAM,CAAE,KAAK,iBAAiB,IAAI,aAAc;AACpD,0BAAgB,IAAI,WAAW,GAAG,GAAG;AAAA,QAGzC,WAAW,cAAc,UAAU,cAAc;AAC7C,cAAI,MAAM,CAAE,KAAK,iBAAiB,IAAI,cAAc,aAAc;AAClE,0BAAgB,IAAI,aAAa,GAAG,GAAG;AACvC,yBAAe;AAAA,QAGnB,OAAO;AACH,cAAI,MAAM,CAAE,KAAK,iBAAiB,IAAI,aAAc;AACpD,0BAAgB,IAAI,WAAW,GAAG,GAAG;AACrC,yBAAe;AAAA,QACnB;AAGA,YAAI,QAAQ,CAAC,aAAa;AAG1B,YAAI,OAAO,MAAM;AACb,cAAI,YAAY,KAAK,aAAa,MAAM;AACxC,cAAI,aAAa,KAAK,aAAa,WAAW,UAAU;AACxD,gBAAM,KAAK,IAAI,WAAW,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC;AAC1D,mBAAS,QAAQ,WAAW,MAAM,CAAC,GAAG;AAClC,kBAAM,KAAK,IAAI,WAAW,eAAe,IAAI,IAAI,CAAC;AAAA,UACtD;AAAA,QAGJ,WAAW,CAAC,cAAc,SAAS,IAAI,GAAG;AACtC,gBAAM,KAAK,IAAI;AAAA,QACnB;AAGA,iBAAS,aAAa,KAAK,0BAA0B,MAAM,GAAG;AAC1D,gBAAM,KAAK,KAAK,eAAe,SAAS,CAAC;AAAA,QAC7C;AAGA,eAAO,KAAK,YAAY,KAAK;AAAA,MACjC;AAAA,MAEA,0BAA0B,QAAQ;AAC9B,YAAI,CAAC,OAAO,eAAe,QAAQ;AAC/B,cAAI,gBAAgB,KAAK,oCAAoC,MAAM;AACnE,cAAI,UAAU,KAAK,mBAAmB,QAAQ,aAAa,EAAE,CAAC,EAAE,CAAC;AACjE,iBAAO;AAAA,QAEX,OAAO;AACH,cAAI,QAAQ,CAAC;AAIb,cAAI,OAAO,UAAU,GAAG;AACpB,oBAAQ,MAAM,OAAO,OAAO,cAAc;AAAA,UAI9C,OAAO;AACH,gBAAI,gBAAgB,KAAK,kCAAkC,MAAM;AACjE,gBAAI,cAAc,KAAK,aAAa,QAAQ,aAAa;AACzD,qBAAS,iBAAiB,OAAO,gBAAgB;AAC7C,oBAAM,KAAK,IAAI,SAAS,eAAe,WAAW,CAAC;AAAA,YACvD;AAAA,UACJ;AAEA,iBAAO,MAAM,KAAK,IAAI;AAAA,QAC1B;AAAA,MACJ;AAAA,MAEA,mBAAmB,QAAQ,iBAAiB;AACxC,YAAI;AACJ,YAAI,OAAO,YAAY,QAAW;AAC9B,mBAAS,OAAO;AAAA,QACpB,WAAW,OAAO,YAAY,QAAW;AACrC,cAAI,cAAc,kBAAkB,OAAO,OAAO,EAAE,IAAI,MAAM;AAC9D,mBAAS,IAAI,QAAQ,YAAY,KAAK,GAAG,CAAC;AAAA,QAC9C,OAAO;AACH,mBAAS;AAAA,QACb;AAEA,iBAAS,OAAO,YAAY;AACxB,cAAI,MAAM,QAAQ,MAAM,GAAG;AACvB,mBAAO;AAAA,UACX,OAAO;AACH,mBAAO,MAAM,UAAU,EAAE,KAAK,MAAM;AAAA,UACxC;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAAA,MAEA,aAAa,QAAQ,iBAAiB;AAClC,YAAI,cAAc,KAAK,mBAAmB,QAAQ,eAAe;AACjE,YAAI;AACJ,YAAI,OAAO,UAAU,QAAW;AAC5B,mBAAS,IAAI,MAAM,GAAG,YAAY,CAAC,CAAC;AAAA,QACxC,WAAW,OAAO,UAAU,UAAU;AAClC,mBAAS,IAAI,QAAQ,GAAG,YAAY,CAAC,CAAC;AAAA,QAC1C,WAAW,OAAO,UAAU,cAAc;AACtC,cAAI,UAAU,YAAY,CAAC;AAC3B,cAAI,QAAQ,WAAW,GAAG;AACtB,qBAAS,IAAI,iBAAiB,GAAG,OAAO;AAAA,UAC5C,OAAO;AACH,qBAAS,IAAI,YAAY,GAAG,OAAO;AAAA,UACvC;AAAA,QACJ,WAAW,OAAO,UAAU,aAAa;AACrC,mBAAS,IAAI,eAAe,GAAG,YAAY,CAAC,CAAC;AAAA,QACjD,WAAW,OAAO,UAAU,WAAW;AACnC,mBAAS;AAAA,QACb,WAAW,OAAO,UAAU,QAAQ;AAChC,mBAAS,IAAI,UAAU,GAAG,YAAY,CAAC,CAAC;AAAA,QAC5C,WAAW,OAAO,UAAU,UAAU;AAClC,mBAAS;AAAA,QACb,OAAO;AACH,cAAI;AACJ,cAAI;AACA,sBAAU,MAAM,OAAO,KAAK,EAAE,IAAI,MAAM,IAAI;AAAA,UAChD,SAAS,KAAK;AACV,kBAAM,IAAI,UAAU,qBAAqB;AAAA,UAC7C;AACA,mBAAS,IAAI,QAAQ,KAAK,GAAG,GAAG,GAAG,YAAY,OAAO,KAAK,CAAC;AAAA,QAChE;AACA,eAAO;AAAA,MACX;AAAA,MAEA,aAAa,QAAQ;AACjB,YAAI,SAAS,OAAO,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM;AACvD,iBAAS,QAAQ,OAAO,KAAK,MAAM,GAAG;AAClC,cAAI,OAAO,IAAI,MAAM,UAAU;AAC3B,mBAAO,OAAO,IAAI;AAAA,UACtB;AAAA,QACJ;AACA,iBAAS,QAAQ,OAAO,KAAK,MAAM,GAAG;AAClC,cAAI,OAAO,IAAI,KAAK,OAAO,IAAI,EAAE,MAAM;AACnC,mBAAO,IAAI,IAAI,OAAO,IAAI,EAAE;AAAA,UAChC;AAAA,QACJ;AACA,YAAI,OAAO,YAAY,QAAW;AAC9B,cAAI,cAAc,kBAAkB,OAAO,OAAO,EAAE,IAAI,MAAM,EAAE,KAAK,IAAI;AACzE,iBAAO,UAAU;AAAA,QACrB;AAEA,iBAAS,OAAO,OAAO,KAAK,MAAM,GAAG;AACjC,cAAI,WAAW,gBAAgB,GAAG;AAClC,cAAI,aAAa,KAAK;AAClB,mBAAO,QAAQ,IAAI,OAAO,GAAG;AAAA,UACjC;AAAA,QACJ;AAEA,eAAO,IAAI,KAAK,iBAAiB,MAAM,GAAG,MAAM;AAAA,MACpD;AAAA,MAEA,CAAE,0BAA0B,QAAQ;AAChC,YAAI,OAAO,OAAO,oBAAoB,YAAY;AAC9C,eAAK,QAAQ;AACb,iBAAO,OAAO,gBAAgB;AAC9B,eAAK,QAAQ;AAAA,QACjB;AAAA,MACJ;AAAA,MAEA,aAAa,MAAM,OAAO;AACtB,eAAO,KAAK,QAAQ,KAAK,qBAAqB,GAAG,EAAE,KAAK;AAGxD,YAAI,WAAW;AACf,eAAO,SAAS,KAAK,MAAM,EAAE,MAAM,CAAC;AAAA,MACxC;AAAA,MAEA,WAAW,MAAM,OAAO,QAAQ;AAC5B,eAAO,KAAK,QAAQ,KAAK,qBAAqB,GAAG,EAAE,KAAK;AACxD,YAAI,WAAW;AACf,eAAO,SAAS,KAAK,MAAM;AAAA,UAAE;AAAA,UACA,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,QAAO,CAAC;AAAA,MAC5D;AAAA,MAEA,iBAAiB,QAAQ;AACrB,eAAO,OAAO;AAAA,MAClB;AAAA,MAEA,kCAAkC,QAAQ;AACtC,eAAO,OAAO,KAAK,YAAY;AAAA,MACnC;AAAA,MAEA,oCAAoC,QAAQ;AACxC,eAAO,OAAO;AAAA,MAClB;AAAA,IACJ,CAAC,CAAC;AAEF,kBAAc,UAAU,WAAW,UAAU,MAAM,SAAS;AAAA,MAExD,YAAY,WAAW,QAAQ,UAAU,QAAW;AAChD,aAAK,YAAY;AACjB,aAAK,SAAS;AACd,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC;AAAA,MAClB;AAAA,MAEA,cAAc;AAEV,YAAI,KAAK,WAAW,QAAW;AAC3B,eAAK,UAAU,QAAQ;AAAA,QAC3B;AACA,YAAI,YAAY,KAAK,UAAU,YAAY,KAAK,MAAM,IAAI,CAAC,CAAE,MAAM,IAAK,MAAM,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC;AACrG,YAAI,KAAK,WAAW,QAAW;AAC3B,eAAK,UAAU,QAAQ;AAAA,QAC3B;AAGA,YAAI,CAAC,WAAW;AACZ,iBAAO;AAAA,QACX;AAGA,YAAI;AACJ,YAAI,KAAK,YAAY,YAAY,KAAK,YAAY,QAAW;AACzD,cAAI,iBAAiB,KAAK,UAAU;AACpC,oBAAU,IAAI,YAAY,gBAAgB,IAAI,KAAK,OAAO;AAAA,QAC9D,OAAO;AACH,oBAAU;AAAA,QACd;AAGA,eAAO,KAAK,UAAU,YAAY,CAAC,MAAM,SAAS,WAAW,IAAI,CAAC;AAAA,MACtE;AAAA,IACJ,CAAC;AAGD,QAAM,8BAA8B,iBAAiB,UAAU,MAAM,oCAAoC,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQnH,WAAW,MAAM,OAAO,QAAQ;AAC5B,eAAO,WAAW,MAAM,IAAI,EAAE,IAAI,UAAQ,SAAS,IAAI,EAAE,KAAK,EAAE;AAAA,MACpE;AAAA,IACJ,CAAC,CAAC;AAGF,QAAM,uBAAuB,iBAAiB,UAAU,MAAM,6BAA6B,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQnH,aAAa,MAAiB;AAC1B,eAAO,WAAW,IAAI;AAAA,MAC1B;AAAA,IACJ,CAAC,CAAC;AAGF,QAAM,gCAAgC,iBAAiB,UAAU,MAAM,sCAAsC,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQvH,iBAAiB,QAAQ;AACrB,YAAI,OAAO,OAAO;AAElB,YAAI,CAAC,OAAO,KAAK,SAAS,YAAY,KAAK,CAAC,OAAO,KAAK,SAAS,iBAAiB,GAAG;AACjF,cAAI,OAAO,YAAY,UAAU;AAC7B,gBAAI,mBAAmB,CAAC,UAAU,YAAY;AAC9C,gBAAI,OAAO,eAAe,UAAU,iBAAiB,SAAS,OAAO,KAAK,GAAG;AACzE,sBAAQ;AAAA,YACZ;AAAA,UACJ;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAAA,IACJ,CAAC,CAAC;AAGF,QAAM,2BAA2B,iBAAiB,UAAU,MAAM,iCAAiC,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAS7G,kCAAkC,QAAQ;AACtC,eAAO,OAAO,OAAO,SAAS,aAAa,OAAO,KAAK,OAAO,OAAO;AAAA,MACzE;AAAA,MAEA,oCAAoC,QAAQ;AACxC,eAAO,OAAO,OAAO,SAAS,aAAa,OAAO,KAAK,OAAO,OAAO;AAAA,MACzE;AAAA,IACJ,CAAC,CAAC;AAMF,aAAS,iBAAiB,UAAU;AAChC,UAAI,aAAa,QAAW;AACxB,eAAO;AAAA,MACX,WAAW,SAAS,eAAe,QAAQ;AACvC,eAAO,SAAS,eAAe,KAAK,GAAG;AAAA,MAC3C,WAAW,CAAC,CAAE,QAAW,QAAS,EAAE,SAAS,SAAS,OAAO,GAAG;AAC5D,eAAO,SAAS;AAAA,MACpB,WAAW,CAAC,CAAE,QAAW,QAAS,EAAE,SAAS,SAAS,IAAI,GAAG;AACzD,eAAO,SAAS;AAAA,MACpB,OAAO;AACH,eAAO;AAAA,MACX;AAAA,IACJ;AAGA,QAAM,gBAAgB,UAAU,MAAM,sBAAsB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQ9D,YAAY,UAAU,SAAS;AAC3B,cAAM;AACN,aAAK,OAAO;AACZ,aAAK,iBAAiB,iBAAiB,QAAQ;AAC/C,aAAK,WAAW;AAChB,aAAK,UAAU,KAAK,IAAI;AAAA,MAC5B;AAAA,MAEA,MAAM;AACF,YAAI;AACJ,YAAI,KAAK,mBAAmB,QAAW;AACnC,mBAAS;AAAA,QACb,OAAO;AACH,mBAAS;AAAA,QACb;AACA,eAAO,IAAI,QAAQ;AAAA,UAAE,SAAS,KAAK;AAAA,UACd,eAAe,KAAK;AAAA,QAAe,CAAC;AAAA,MAC7D;AAAA,IACJ,CAAC;AAGD,QAAM,oBAAoB,UAAU,MAAM,0BAA0B,MAAM;AAAA;AAAA;AAAA;AAAA,MAKtE,YAAY,SAAS;AACjB,cAAM,OAAO;AACb,aAAK,OAAO;AAAA,MAChB;AAAA,IACJ,CAAC;AAMD,QAAM,SAAS,iBAAiB,UAAU,MAAM,eAAe,iBAAiB,QAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAoDtF,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAGD,cAAM,iEAAiE;AAEvE,aAAK,iBAAiB;AACtB,aAAK,OAAO;AACZ,aAAK,QAAQ;AACb,aAAK,QAAQ;AACb,aAAK,UAAU;AACf,aAAK,OAAO;AACZ,aAAK,UAAU;AACf,aAAK,WAAW;AAChB,aAAK,OAAO;AACZ,aAAK,UAAU;AAAA,MACnB;AAAA,MAEA,cAAc;AACV,YAAI,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AACA,eAAO,MAAM,IAAI,UAAQ,CAAE,MAAM,QAAQ,MAAM,IAAI,CAAE,CAAC;AAAA,MAC1D;AAAA,MAEA,eAAe;AACX,eAAO,KAAK,eAAe,CAAC;AAAA,MAChC;AAAA,MAEA,OAA+D;AAC3D,cAAM,IAAI,MAAM,qBAAqB;AAAA,MACzC;AAAA,IACJ,CAAC,CAAC;AAGF,QAAM,wBAAwB,iBAAiB,UAAU,MAAM,8BAA8B,OAAO;AAAA,MAEhG,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAED,YAAI,kBAAkB,CAAC;AACvB,iBAAS,iBAAiB,gBAAgB;AACtC,0BAAgB,KAAK,aAAa;AAElC,cAAI,cAAc,WAAW,IAAI,GAAG;AAChC,4BAAgB,UAAU,cAAc,MAAM,CAAC;AAC/C,4BAAgB,KAAK,aAAa;AAAA,UACtC;AAAA,QACJ;AAEA,YAAI,SAAS,UAAa,kBAAkB,QAAW;AACnD,kBAAQ,cAAc,aAAa;AAAA,QACvC;AAEA,cAAM;AAAA,UACF,gBAAgB;AAAA,UAChB;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAAQ,WAAW,QAAQ,gBAAgB,QAAW;AACvD,YAAI,KAAK,eAAe,SAAS,aAAa,GAAG;AAC7C,kBAAQ,WAAW,KAAK,MAAM,CAAC,cAAc,WAAW,OAAO,CAAC;AAAA,QACpE;AAAA,MACJ;AAAA,MAEA,eAAe;AACX,eAAO,KAAK,eAAe,KAAK,KAAK;AAAA,MACzC;AAAA,IACJ,CAAC,CAAC;AAGF,QAAM,eAAe,UAAU,MAAM,qBAAqB,OAAO;AAAA,MAE7D,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAED,YAAI,UAAU,GAAG;AACb,gBAAM,IAAI,UAAU,uIAEqC;AAAA,QAC7D;AACA,YAAI,gBAAgB,UAAa,UAAU,UAAU;AACjD,gBAAM,IAAI,UAAU,IAAI,oCAAoC,QAAQ,CAAC;AAAA,QACzE;AACA,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAAQ,WAAW,QAAuC;AAC3D,gBAAQ,WAAW,KAAK,MAAM,MAAM;AAAA,MACxC;AAAA,IACJ,CAAC;AAGD,QAAM,oBAAoB,UAAU,MAAM,0BAA0B,OAAO;AAAA,MAEvE,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,QAEJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAAQ,WAAkD;AAC3D,gBAAQ,WAAW,KAAK,MAAM,KAAK,KAAK;AAAA,MAC5C;AAAA,IACJ,CAAC;AAGD,QAAM,mBAAmB,UAAU,MAAM,yBAAyB,kBAAkB;AAAA,MAEhF,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,QACV,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAGD,QAAM,oBAAoB,UAAU,MAAM,0BAA0B,kBAAkB;AAAA,MAElF,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,QACV,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAGD,QAAM,gBAAgB,UAAU,MAAM,sBAAsB,OAAO;AAAA,MAE/D,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAED,YAAI,UAAU,GAAG;AACb,gBAAM,IAAI,UAAU,8IAEyC;AAAA,QACjE;AACA,YAAI,gBAAgB,UAAa,UAAU,UAAU;AACjD,gBAAM,IAAI,UAAU,IAAI,oCAAoC,QAAQ,CAAC;AAAA,QACzE;AACA,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAAQ,WAAW,QAAuC;AAC3D,YAAI,QAAQ,QAAQ,WAAW,KAAK,MAAM,MAAS;AACnD,gBAAQ,YAAY,KAAK;AACzB,cAAM,KAAK,MAAM;AACjB,gBAAQ,WAAW,KAAK,MAAM,KAAK;AAAA,MACvC;AAAA,IACJ,CAAC;AAGD,QAAM,qBAAqB,UAAU,MAAM,2BAA2B,OAAO;AAAA,MAEzE,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAAQ,WAAkD;AAC3D,YAAI,QAAQ,QAAQ,WAAW,KAAK,MAAM,MAAS;AACnD,gBAAQ,YAAY,KAAK;AACzB,cAAM,KAAK,KAAK,KAAK;AACrB,gBAAQ,WAAW,KAAK,MAAM,KAAK;AAAA,MACvC;AAAA,IACJ,CAAC;AAGD,QAAM,eAAe,UAAU,MAAM,qBAAqB,OAAO;AAAA,MAE7D,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,QACV,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAAQ,WAAkD;AAC3D,YAAI,QAAQ,QAAQ,WAAW,KAAK,MAAM,MAAS;AACnD,YAAI,UAAU,QAAW;AACrB,kBAAQ;AAAA,QACZ;AACA,gBAAQ,WAAW,KAAK,MAAM,QAAQ,CAAC;AAAA,MAC3C;AAAA,IACJ,CAAC;AAGD,QAAM,cAAc,UAAU,MAAM,oBAAoB,OAAO;AAAA,MAE3D,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,MAAM;AAAA,QACV,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,SAAS;AAAA,UACT,OAAO;AAAA,UACP;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAA0D;AAC3D,eAAO,WAAW;AAClB,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ,CAAC;AAGD,QAAM,iBAAiB,UAAU,MAAM,uBAAuB,OAAO;AAAA,MAEjE,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACAE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,UACT,MAAM;AAAA,QACV,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,SAAS;AAAA,UACT,OAAO;AAAA,UACP;AAAA,QACJ,CAAC;AACD,aAAK,UAAUA;AAAA,MACnB;AAAA,MAEA,KAAK,QAA0D;AAC3D,YAAIA,WAAU,KAAK;AACnB,YAAIA,aAAY,QAAW;AACvB,UAAAA,WAAU,OAAO;AAAA,QACrB;AACA,YAAI,YAAY,OAAO,eAAe;AACtC,kBAAU,SAASA,QAAO;AAC1B,eAAO,eAAe,UAAU,YAAY,GAAG,QAAQ,MAAM;AAC7D,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ,CAAC;AAGD,QAAM,oBAAoB,iBAAiB,UAAU,MAAM,0BAA0B,OAAO;AAAA,MAExF,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,cAAc;AAAA,UACd,MAAM;AAAA,UACN,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAED,YAAI,kBAAkB,CAAC;AAEvB,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACJ,CAAC;AAED,aAAK,eAAe;AACpB,aAAK,gBAAgB;AACrB,aAAK,mBAAmB;AACxB,aAAK,mBAAmB,CAAC;AAAA,MAC7B;AAAA,MAEA,aAAa;AACT,YAAI;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,MAAM;AAAA,UACN,YAAY;AAAA,QAChB,CAAC;AAGD,YAAI,OAAO,SAAS,QAAW;AAC3B,iBAAO,OAAO,IAAI,SAAS,KAAK,cAAc,IAAI;AAAA,QACtD;AAEA,YAAIC,WAAU,QAAQ,QAAQ,WAAW,CAAC,CAAC;AAC3C,eAAO,OAAO;AAGd,YAAI,UAAU,QAAQ;AAClB,cAAI,OAAO,OAAO;AAClB,iBAAO,OAAO;AACd,cAAI,gBAAgB,KAAK,qBAAqB,MAAMA,UAAS,IAAI;AACjE,eAAK,iBAAiB,KAAK,aAAa;AAAA,QAC5C;AAGA,YAAI,SAAS,IAAI,KAAK,cAAc,MAAM;AAC1C,aAAK,iBAAiB,IAAI,IAAI;AAG9B,iBAAS,SAASA,UAAS;AACvB,eAAK,iBAAiB,KAAK,IAAI;AAAA,QACnC;AAEA,eAAO;AAAA,MACX;AAAA,MAEA,kBAAkB;AACd,eAAO,KAAK;AAAA,MAChB;AAAA,MAEA,KAAK,QAAQ,WAAW,QAAuC;AAC3D,YAAI,cAAc,OAAO,CAAC;AAC1B,YAAI,cAAc,OAAO,MAAM,CAAC;AAGhC,YAAI,KAAK,SAAS,UAAU;AACxB,kBAAQ,WAAW,KAAK,MAAM,WAAW;AAAA,QAC7C;AAGA,YAAI,QAAQ,KAAK,kBAAkB,WAAW,GAAG;AAC7C,mBAAS,KAAK,iBAAiB,WAAW;AAAA,QAC9C,OAAO;AACH,cAAI,OAAO;AAAA,YAAC;AAAA,YACA,SAAS,KAAK,iBAAiB,KAAK,IAAI;AAAA,UAAC;AACrD,cAAI,MAAM,IAAI,yDAAyD,IAAI;AAC3E,gBAAM,IAAI,cAAc,MAAM,GAAG;AAAA,QACrC;AASA,YAAI;AACJ,SAAE,cAAc,WAAY,IAAI,OAAO,iBAAiB,aAAa,MAAS;AAC9E,iBAAS,CAAE,KAAK,KAAM,KAAK,OAAO,QAAQ,YAAY,GAAG;AACrD,kBAAQ,WAAW,KAAK,KAAK;AAAA,QACjC;AAEA,YAAI,YAAY,QAAQ;AACpB,qBAAW,WAAW,yBAAyB,CAAC,CAAC;AACjD,kBAAQ,WAAW,uBAAuB,EAAE,KAAK,GAAG,WAAW;AAAA,QACnE;AAAA,MACJ;AAAA,IACJ,CAAC,CAAC;AAGF,sBAAkB,UAAU,uBAAuB,UAAU,MAAM,6BAA6B,OAAO;AAAA,MACnG,YAAY,MAAMA,UAAS,MAAM;AAC7B,YAAI,UAAU,MAAM,OAAO;AAC3B,YAAIA,SAAQ,QAAQ;AAChB,qBAAW,IAAI,SAASA,SAAQ,KAAK,IAAI,CAAC;AAAA,QAC9C;AACA,cAAM,EAAE,gBAAgB,CAAC,GAAG,MAAM,MAAM,QAAQ,CAAC;AAAA,MACrD;AAAA,IACJ,CAAC;AAGD,QAAM,gBAAgB,UAAU,MAAM,sBAAsB,cAAc;AAAA,MACtE,KAAK,QAAQ,WAAW,QAAuC;AAC3D,YAAI,QAAQ,QAAQ,WAAW,KAAK,MAAM,MAAS;AACnD,gBAAQ,YAAY,KAAK;AACzB,gBAAQ,MAAM,OAAO,MAAM;AAC3B,gBAAQ,WAAW,KAAK,MAAM,KAAK;AAAA,MACvC;AAAA,IACJ,CAAC;AAMD,QAAM,WAAW,UAAU,MAAM,iBAAiB,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAkBvD,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACAP;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,OAAO;AAAA,UACP,UAAU;AAAA,UACV,MAAM;AAAA;AAAA,UACN,WAAW;AAAA;AAAA,UACX,WAAW;AAAA;AAAA,UACX,OAAO;AAAA;AAAA,UACP,KAAK;AAAA;AAAA,UACL,eAAe;AAAA;AAAA,UACf,IAAI;AAAA,QACR,CAAC;AAGD,cAAM,iEAAiE;AAEvE,eAAO,eAAe,MAAM,QAAQ;AAAA,UAChC,MAAM;AACF,mBAAO,IAAI,gBAAgB,KAAK;AAAA,UACpC;AAAA,QACJ,CAAC;AACD,aAAK,SAAS;AACd,aAAK,WAAW,CAAC;AACjB,YAAI,aAAa;AAAW,eAAK,SAAS,WAAW;AACrD,YAAI,SAAS;AAAW,eAAK,SAAS,OAAO;AAC7C,YAAI,cAAc;AAAW,eAAK,SAAS,YAAY;AACvD,YAAI,cAAc;AAAW,eAAK,SAAS,YAAY;AACvD,YAAI,UAAU;AAAW,eAAK,SAAS,QAAQ;AAC/C,YAAI,QAAQ;AAAW,eAAK,SAAS,MAAM;AAC3C,YAAI,kBAAkB;AAAW,eAAK,SAAS,gBAAgB;AAC/D,YAAIA,QAAO;AAAW,eAAK,SAAS,KAAKA;AAAA,MAC7C;AAAA,MAEA,KAAK,QAAQ;AAET,YAAI,WAAW,KAAK;AAChB,cAAI,KAAK,OAAO,SAAS,GAAG,GAAG;AAC3B,mBAAO,QAAQ;AAAA,UACnB,WAAW,KAAK,OAAO,SAAS,GAAG,GAAG;AAClC,mBAAO,QAAQ;AAAA,UACnB,OAAO;AACH,gBAAI,MAAM,IAAI,6BAA6B,KAAK,MAAM;AACtD,kBAAM,IAAI,UAAU,GAAG;AAAA,UAC3B;AAAA,QACJ;AAGA,YAAI;AACJ,YAAI;AACA,eAAKA,IAAG,SAAS,QAAQ,KAAK,QAAQ,KAAK,SAAS,IAAI;AAAA,QAC5D,SAAS,GAAG;AACR,cAAI,OAAO,EAAE,UAAU,QAAQ,OAAO,EAAE,QAAQ;AAChD,cAAI,UAAU;AACd,gBAAM,IAAI,kBAAkB,IAAI,SAAS,IAAI,CAAC;AAAA,QAClD;AAEA,YAAI,UAAU,OAAO,OAAO,EAAE,IAAI,OAAO,KAAK,OAAO,GAAG,KAAK,QAAQ;AACrE,YAAI,KAAK,OAAO,SAAS,GAAG,GAAG;AAC3B,iBAAOA,IAAG,iBAAiB,QAAW,OAAO;AAAA,QACjD,WAAW,KAAK,OAAO,SAAS,GAAG,GAAG;AAClC,iBAAOA,IAAG,kBAAkB,QAAW,OAAO;AAAA,QAClD,OAAO;AACH,cAAI,MAAM,IAAI,8BAA8B,QAAQ,KAAK,MAAM;AAC/D,gBAAM,IAAI,UAAU,GAAG;AAAA,QAC3B;AAAA,MACJ;AAAA,MAEA,CAAC,KAAK,QAAQ,MAAM,IAAI;AACpB,YAAI,OAAO,CAAE,KAAK,MAAO;AACzB,YAAI,SAAS,OAAO,QAAQ,KAAK,QAAQ,EAAE,IAAI,CAAC,CAAE,GAAG,CAAE,MAAM;AACzD,cAAI,MAAM;AAAQ,gBAAI,EAAE,OAAO,GAAG,CAAC,KAAK,QAAQ,MAAM,IAAI;AAAE,qBAAO,OAAO,KAAK,MAAM,SAAS,CAAC;AAAA,YAAE,EAAE;AACnG,iBAAO,CAAE,GAAG,CAAE;AAAA,QAClB,CAAC;AACD,YAAI,WAAW,CAAC,EACP,OAAO,KAAK,OAAO,SAAO,QAAQ,EAAE,EAAE,IAAI,IAAI,CAAC,EAC/C,OAAO,OAAO,OAAO,CAAC,CAAO,EAAE,GAAG,MAAM,QAAQ,MAAS,EACrD,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,EAC7C,KAAK,IAAI;AAClB,eAAO,IAAI,UAAU,KAAK,YAAY,MAAM,QAAQ;AAAA,MACxD;AAAA,MAEA,WAAW;AACP,eAAO,KAAK,KAAK,QAAQ,MAAM,EAAE;AAAA,MACrC;AAAA,IACJ,CAAC;AAKD,QAAM,YAAY,UAAU,MAAM,kBAAkB,iBAAiB,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQnE,YAAY,UAAU,CAAC,GAAG;AACtB,cAAM;AACN,eAAO,OAAO,MAAM,OAAO;AAAA,MAC/B;AAAA,IACJ,CAAC;AAGD,cAAU,UAAU,OAAO,WAAW,IAAI;AAG1C,QAAM,oBAAoB,iBAAiB,UAAU,MAAM,kBAAkB;AAAA,MAEzE,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,aAAa;AAAA,UACb,cAAc;AAAA,UACd,kBAAkB;AAAA,UAClB,kBAAkB;AAAA,QACtB,CAAC;AAED,aAAK,cAAc;AACnB,aAAK,mBAAmB;AACxB,aAAK,eAAe;AACpB,aAAK,mBAAmB;AAGxB,aAAK,cAAc,CAAC;AAGpB,aAAK,SAAS,UAAU,QAAW,YAAY;AAC/C,aAAK,SAAS,UAAU,SAAS,YAAY;AAC7C,aAAK,SAAS,UAAU,eAAe,iBAAiB;AACxD,aAAK,SAAS,UAAU,cAAc,gBAAgB;AACtD,aAAK,SAAS,UAAU,eAAe,iBAAiB;AACxD,aAAK,SAAS,UAAU,UAAU,aAAa;AAC/C,aAAK,SAAS,UAAU,gBAAgB,kBAAkB;AAC1D,aAAK,SAAS,UAAU,SAAS,YAAY;AAC7C,aAAK,SAAS,UAAU,QAAQ,WAAW;AAC3C,aAAK,SAAS,UAAU,WAAW,cAAc;AACjD,aAAK,SAAS,UAAU,WAAW,iBAAiB;AACpD,aAAK,SAAS,UAAU,UAAU,aAAa;AAE9C,SAAE,cAAc,aAAa,cAAc,aAAc,EAAE,QAAQ,cAAY;AAC5E,cAAI,WAAW,aAAa,QAAQ;AACpC,eAAK,SAAS,UAAU,UAAU,KAAK;AAAA,YAAU,KAAK,cAAc,UAAU,QAAQ;AAAA,YAClF,IAAI,+CAA+C,UAAU,QAAQ;AAAA,UAAC,CAAC;AAAA,QAC/E,CAAC;AAID,aAAK,aAAa;AAGlB,aAAK,WAAW,CAAC;AACjB,aAAK,yBAAyB,CAAC;AAG/B,aAAK,iBAAiB,CAAC;AACvB,aAAK,6BAA6B,CAAC;AAGnC,aAAK,YAAY,CAAC;AAGlB,aAAK,2BAA2B;AAIhC,aAAK,iCAAiC,CAAC;AAAA,MAC3C;AAAA;AAAA;AAAA;AAAA,MAKA,SAAS,eAAe,OAAO,QAAQ;AACnC,YAAI,WAAW,WAAW,KAAK,aAAa,eAAe,CAAC,CAAC;AAC7D,iBAAS,KAAK,IAAI;AAAA,MACtB;AAAA,MAEA,cAAc,eAAe,OAAO,gBAAgB,QAAW;AAC3D,eAAO,QAAQ,KAAK,YAAY,aAAa,GAAG,OAAO,aAAa;AAAA,MACxE;AAAA;AAAA;AAAA;AAAA,MAKA,aAAa,QAAQ;AACjB,eAAO,OAAO,KAAK,WAAW,MAAM;AAIpC,iBAAS,UAAU,KAAK,UAAU;AAC9B,cAAI,OAAO,QAAQ,QAAQ;AACvB,mBAAO,UAAU,OAAO,OAAO,IAAI;AAAA,UACvC;AAAA,QACJ;AAAA,MACJ;AAAA,MAEA,YAAY,MAAM;AACd,iBAAS,UAAU,KAAK,UAAU;AAC9B,cAAI,OAAO,SAAS,QAAQ,OAAO,YAAY,QAAW;AACtD,mBAAO,OAAO;AAAA,UAClB;AAAA,QACJ;AACA,eAAO,KAAK,UAAU,IAAI;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA,MAMA,eAAe;AAKX,YAAI;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,SAAS;AAAA,UACT,YAAY;AAAA,QAChB,CAAC;AAED,YAAI,KAAK,WAAW,KAAK,MAAM,QAAQ,KAAK,CAAC,CAAC,GAAG;AAC7C,iBAAO,KAAK,CAAC;AACb;AAAA,YAAU;AAAA,YACN,IAAI,oFAAoF;AAAA,cACpF,MAAM,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;AAAA,YAClC,CAAC;AAAA,UAAC;AAAA,QACV;AAMA,YAAI,QAAQ,KAAK;AACjB,YAAI,CAAC,KAAK,UAAU,KAAK,WAAW,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG;AAClE,cAAI,KAAK,UAAU,UAAU,QAAQ;AACjC,kBAAM,IAAI,UAAU,6CAA6C;AAAA,UACrE;AACA,mBAAS,KAAK,uBAAuB,GAAG,MAAM,MAAM;AAAA,QAGxD,OAAO;AACH,mBAAS,KAAK,qBAAqB,GAAG,MAAM,MAAM;AAAA,QACtD;AAGA,YAAI,EAAE,aAAa,SAAS;AACxB,cAAI,OAAO,OAAO;AAClB,cAAI,QAAQ,KAAK,WAAW;AACxB,mBAAO,UAAU,KAAK,UAAU,IAAI;AAAA,UACxC,WAAW,KAAK,qBAAqB,QAAW;AAC5C,mBAAO,UAAU,KAAK;AAAA,UAC1B;AAAA,QACJ;AAGA,YAAI,eAAe,KAAK,kBAAkB,MAAM;AAChD,YAAI,OAAO,iBAAiB,YAAY;AACpC,gBAAM,IAAI,UAAU,IAAI,uBAAuB,YAAY,CAAC;AAAA,QAChE;AAEA,YAAI,SAAS,IAAI,aAAa,MAAM;AAGpC,YAAI,YAAY,KAAK,cAAc,QAAQ,OAAO,MAAM,OAAO,IAAI;AACnE,YAAI,OAAO,cAAc,YAAY;AACjC,gBAAM,IAAI,UAAU,IAAI,sBAAsB,SAAS,CAAC;AAAA,QAC5D;AAEA,YAAI,cAAc,UAAU;AACxB,gBAAM,IAAI,UAAU,IAAI,gEACmB,SAAS,CAAC;AAAA,QACzD;AAGA,YAAI,oBAAoB,MAAM;AAC1B,cAAI;AACA,iBAAK,eAAe,EAAE,aAAa,QAAQ,MAAS;AAAA,UACxD,SAAS,KAAK;AAEV,gBAAI,eAAe,aAAa,IAAI,YAAY,uBAAuB;AACnE,oBAAM,IAAI,UAAU,8CAA8C;AAAA,YACtE,OAAO;AACH,oBAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAEA,eAAO,KAAK,YAAY,MAAM;AAAA,MAClC;AAAA,MAEA,qBAAqB;AACjB,YAAI,QAAQ,eAAe,MAAM,GAAG,SAAS;AAC7C,aAAK,eAAe,KAAK,KAAK;AAC9B,eAAO;AAAA,MACX;AAAA,MAEA,+BAA+B;AAE3B,YAAI,QAAQ,wBAAwB,MAAM,GAAG,SAAS;AACtD,aAAK,2BAA2B,KAAK,KAAK;AAC1C,eAAO;AAAA,MACX;AAAA,MAEA,YAAY,QAAQ;AAEhB,aAAK,gBAAgB,MAAM;AAG3B,aAAK,SAAS,KAAK,MAAM;AACzB,eAAO,YAAY;AAGnB,iBAAS,iBAAiB,OAAO,gBAAgB;AAC7C,eAAK,uBAAuB,aAAa,IAAI;AAAA,QACjD;AAGA,iBAAS,iBAAiB,OAAO,gBAAgB;AAC7C,cAAI,KAAK,yBAAyB,KAAK,aAAa,GAAG;AACnD,gBAAI,CAAC,KAAK,+BAA+B,QAAQ;AAC7C,mBAAK,+BAA+B,KAAK,IAAI;AAAA,YACjD;AAAA,UACJ;AAAA,QACJ;AAGA,eAAO;AAAA,MACX;AAAA,MAEA,eAAe,QAAQ;AACnB,sBAAc,KAAK,UAAU,MAAM;AAAA,MACvC;AAAA,MAEA,uBAAuB,WAAW;AAE9B,YAAI,kBAAkB,CAAC;AACvB,iBAAS,SAAS,KAAK,gBAAgB;AACnC,cAAI,MAAM,SAAS,iBAAiB;AAChC,gBAAI,MAAM;AACV,kBAAM,IAAI,UAAU,IAAI,KAAK,MAAM,KAAK,CAAC;AAAA,UAC7C;AACA,0BAAgB,MAAM,KAAK,IAAI;AAAA,QACnC;AAGA,YAAI,YAAY,oBAAI,IAAI;AACxB,iBAAS,SAAS,UAAU,gBAAgB;AAIxC,cAAI,EAAE,MAAM,SAAS,kBAAkB;AACnC,4BAAgB,MAAM,KAAK,IAAI,KAAK,mBAAmB;AAAA,cACnD,OAAO,MAAM;AAAA,cACb,aAAa,MAAM;AAAA,cACnB,kBAAkB,MAAM;AAAA,YAC5B,CAAC;AAAA,UACL;AAGA,mBAAS,UAAU,MAAM,gBAAgB;AACrC,sBAAU,IAAI,QAAQ,gBAAgB,MAAM,KAAK,CAAC;AAAA,UACtD;AAAA,QACJ;AAKA,iBAAS,SAAS,UAAU,4BAA4B;AACpD,cAAI,cAAc,KAAK,6BAA6B;AAAA,YAChD,UAAU,MAAM;AAAA,UACpB,CAAC;AAGD,mBAAS,UAAU,MAAM,gBAAgB;AACrC,sBAAU,IAAI,QAAQ,WAAW;AAAA,UACrC;AAAA,QACJ;AAGA,iBAAS,UAAU,UAAU,UAAU;AACnC,oBAAU,IAAI,MAAM,EAAE,YAAY,MAAM;AAAA,QAC5C;AAAA,MACJ;AAAA,MAEA,yBAAyB;AACrB,YAAI;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,MAAM;AAAA,UACN,YAAY;AAAA,QAChB,CAAC;AAGD,YAAI,cAAc,QAAQ;AACtB,cAAI,MAAM;AACV,gBAAM,IAAI,UAAU,GAAG;AAAA,QAC3B;AAIA,YAAI,CAAC,CAAC,UAAU,YAAY,EAAE,SAAS,OAAO,KAAK,GAAG;AAClD,iBAAO,WAAW;AAAA,QACtB;AACA,YAAI,OAAO,UAAU,gBAAgB,EAAE,aAAa,SAAS;AACzD,iBAAO,WAAW;AAAA,QACtB;AAGA,eAAO,OAAO,OAAO,QAAQ,EAAE,MAAM,gBAAgB,CAAC,EAAE,CAAC;AAAA,MAC7D;AAAA,MAEA,uBAAuB;AACnB,YAAI;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,SAAS;AAAA,UACT,YAAY;AAAA,QAChB,CAAC;AAGD,YAAI,iBAAiB,CAAC;AACtB,YAAI,sBAAsB,CAAC;AAC3B,YAAI;AACJ,aAAK,iBAAiB,MAAM;AAExB,cAAI,CAAC,KAAK,aAAa,SAAS,cAAc,CAAC,CAAC,GAAG;AAC/C,gBAAIQ,QAAO;AAAA,cAAC,QAAQ;AAAA,cACR,cAAc,KAAK;AAAA,YAAY;AAC3C,gBAAI,MAAM;AAEV,kBAAM,IAAI,UAAU,IAAI,KAAKA,KAAI,CAAC;AAAA,UACtC;AAGA,yBAAe,KAAK,aAAa;AACjC,cAAI,cAAc,SAAS,KAAK,KAAK,aAAa,SAAS,cAAc,CAAC,CAAC,GAAG;AAC1E,gCAAoB,KAAK,aAAa;AAAA,UAC1C;AAAA,QACJ;AAGA,YAAI,OAAO,OAAO;AAClB,eAAO,OAAO;AACd,YAAI,SAAS,QAAW;AACpB,cAAI;AACJ,cAAI,oBAAoB,QAAQ;AAC5B,iCAAqB,oBAAoB,CAAC;AAAA,UAC9C,OAAO;AACH,iCAAqB,eAAe,CAAC;AAAA,UACzC;AACA,iBAAO,eAAe,oBAAoB,KAAK,YAAY;AAC3D,cAAI,CAAC,MAAM;AACP,gBAAI,MAAM;AACV,kBAAM,IAAI,UAAU,IAAI,KAAK,aAAa,CAAC;AAAA,UAC/C;AACA,iBAAO,KAAK,QAAQ,MAAM,GAAG;AAAA,QACjC;AAGA,eAAO,OAAO,OAAO,QAAQ,EAAE,MAAM,eAAe,CAAC;AAAA,MACzD;AAAA,MAEA,kBAAkB,QAAQ,gBAAgB,QAAW;AACjD,YAAI,SAAS,QAAQ,QAAQ,UAAU,aAAa;AACpD,eAAO,OAAO;AACd,eAAO,KAAK,cAAc,UAAU,QAAQ,MAAM;AAAA,MACtD;AAAA,MAEA,eAAe;AAEX,YAAI,oBAAoB,IAAI,uBAAuB,KAAK,gBAAgB;AACxE,YAAI,OAAO,KAAK,iBAAiB,MAAM,YAAY;AAC/C,iBAAO,KAAK,iBAAiB;AAAA,QACjC,OAAO;AACH,cAAI,MAAM;AACV,gBAAM,IAAI,UAAU,IAAI,KAAK,KAAK,gBAAgB,CAAC;AAAA,QACvD;AAAA,MACJ;AAAA,MAEA,gBAAgB,QAAQ;AAGpB,YAAI,kBAAkB,CAAC;AACvB,iBAAS,iBAAiB,OAAO,gBAAgB;AAC7C,cAAI,QAAQ,KAAK,wBAAwB,aAAa,GAAG;AACrD,gBAAI,iBAAiB,KAAK,uBAAuB,aAAa;AAC9D,4BAAgB,KAAK,CAAE,eAAe,cAAe,CAAC;AAAA,UAC1D;AAAA,QACJ;AAGA,YAAI,gBAAgB,QAAQ;AACxB,cAAI,mBAAmB,KAAK,aAAa;AACzC,2BAAiB,KAAK,MAAM,QAAQ,eAAe;AAAA,QACvD;AAAA,MACJ;AAAA,MAEA,uBAAuB,QAAQ,qBAAqB;AAChD,YAAI,UAAU,oBAAoB,WAAW,IACzC,kCACA;AACJ,YAAI,kBAAkB,oBAAoB,IAAI,CAAC;AAAA,UAAE;AAAA;AAAA,QAA0B,MAAM,aAAa,EAAE,KAAK,IAAI;AACzG,cAAM,IAAI,cAAc,QAAQ,IAAI,SAAS,eAAe,CAAC;AAAA,MACjE;AAAA,MAEA,yBAAyB,QAAQ,qBAAqB;AAGlD,iBAAS,CAAE,eAAeC,OAAO,KAAK,qBAAqB;AAGvD,wBAAcA,QAAO,gBAAgB,aAAa;AAClD,iBAAO,KAAK,uBAAuB,aAAa;AAIhD,cAAI,CAACA,QAAO,eAAe,QAAQ;AAC/B,YAAAA,QAAO,UAAU,eAAeA,OAAM;AAAA,UAC1C;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,CAAC,CAAC;AAGF,QAAM,iBAAiB,UAAU,MAAM,uBAAuB,kBAAkB;AAAA,MAE5E,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,WAAW;AAAA,UACX,OAAO;AAAA,UACP,aAAa;AAAA,UACb,YAAY;AAAA,QAChB,CAAC;AAGD,mBAAW,QAAQ,oBAAoB,UAAU,gBAAgB;AACjE,mBAAW,QAAQ,gBAAgB,UAAU,YAAY;AACzD,mBAAW,QAAQ,oBAAoB,UAAU,gBAAgB;AACjE,cAAM,OAAO,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC;AAG5C,aAAK,QAAQ;AACb,aAAK,iBAAiB,CAAC;AAGvB,aAAK,cAAc,UAAU;AAC7B,aAAK,WAAW,UAAU;AAC1B,aAAK,yBAAyB,UAAU;AACxC,aAAK,YAAY,UAAU;AAC3B,aAAK,iCACD,UAAU;AACd,aAAK,6BAA6B,UAAU;AAAA,MAChD;AAAA,MAEA,YAAY,QAAQ;AAChB,iBAAS,MAAM,YAAY,MAAM;AACjC,aAAK,eAAe,KAAK,MAAM;AAC/B,eAAO;AAAA,MACX;AAAA,MAEA,eAAe,QAAQ;AACnB,cAAM,eAAe,MAAM;AAC3B,sBAAc,KAAK,gBAAgB,MAAM;AAAA,MAC7C;AAAA,IACJ,CAAC;AAGD,QAAM,0BAA0B,UAAU,MAAM,gCAAgC,eAAe;AAAA,MAE3F,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,WAAW;AAAA,UACX,UAAU;AAAA,QACd,CAAC;AAED,cAAM,SAAS;AACf,aAAK,WAAW;AAChB,aAAK,aAAa;AAAA,MACtB;AAAA,MAEA,YAAY,QAAQ;AAChB,YAAI,OAAO,UAAU;AACjB,cAAI,MAAM;AACV,gBAAM,IAAI,UAAU,GAAG;AAAA,QAC3B;AACA,iBAAS,KAAK,WAAW,YAAY,MAAM;AAC3C,aAAK,eAAe,KAAK,MAAM;AAC/B,eAAO;AAAA,MACX;AAAA,MAEA,eAAe,QAAQ;AACnB,aAAK,WAAW,eAAe,MAAM;AACrC,sBAAc,KAAK,gBAAgB,MAAM;AAAA,MAC7C;AAAA,IACJ,CAAC;AAGD,QAAMC,kBAAiB,iBAAiB,UAAU,MAAM,uBAAuB,iBAAiB,iBAAiB,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAsB/G,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,UACAJ;AAAA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,SAAS,CAAC;AAAA,UACV,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,uBAAuB;AAAA,UACvB,kBAAkB;AAAA,UAClB,kBAAkB;AAAA,UAClB,UAAU;AAAA,UACV,cAAc;AAAA,UACd,eAAe;AAAA,UACf,OAAO;AAAA;AAAA,UACP,SAAS;AAAA;AAAA,QACb,CAAC;AAGD,YAAI,UAAU,QAAW;AACrB;AAAA,YAAU;AAAA,YACN;AAAA,UAEJ;AAAA,QACJ;AAEA,YAAIA,aAAY,QAAW;AACvB;AAAA,YAAU;AAAA,YACN;AAAA,UAEJ;AAAA,QACJ;AAGA,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,CAAC;AAGD,YAAI,SAAS,QAAW;AACpB,iBAAOL,MAAK,SAAS,SAAS,EAAE,CAAC,KAAK,EAAE;AAAA,QAC5C;AAEA,aAAK,OAAO;AACZ,aAAK,QAAQ;AACb,aAAK,SAAS;AACd,aAAK,kBAAkB;AACvB,aAAK,wBAAwB;AAC7B,aAAK,WAAW;AAChB,aAAK,eAAe;AACpB,aAAK,gBAAgB;AAErB,aAAK,QAAQ;AAGb,aAAK,eAAe,KAAK,mBAAmB,sBAAsB;AAClE,aAAK,aAAa,KAAK,mBAAmB,oBAAoB;AAC9D,aAAK,cAAc;AAGnB,iBAASU,UAAS,QAAQ;AACtB,iBAAO;AAAA,QACX;AACA,aAAK,SAAS,QAAQ,QAAWA,SAAQ;AACzC,aAAK,SAAS,QAAQ,MAAMA,SAAQ;AACpC,aAAK,SAAS,QAAQ,QAAQA,SAAQ;AACtC,aAAK,SAAS,QAAQ,OAAO,SAAU,GAAG;AACtC,cAAI,SAAS,OAAO,CAAC;AACrB,cAAI,CAAC,OAAO,UAAU,MAAM,GAAG;AAC3B,kBAAM,IAAI,UAAU,IAAI,uCAAuC,CAAC,CAAC;AAAA,UACrE;AACA,iBAAO;AAAA,QACX,CAAC;AACD,aAAK,SAAS,QAAQ,SAAS,SAAU,GAAG;AACxC,cAAI,SAAS,OAAO,CAAC;AACrB,cAAI,MAAM,MAAM,GAAG;AACf,kBAAM,IAAI,UAAU,IAAI,yCAAyC,CAAC,CAAC;AAAA,UACvE;AACA,iBAAO;AAAA,QACX,CAAC;AACD,aAAK,SAAS,QAAQ,OAAO,MAAM;AAEnC,aAAK;AAAA,UAAS;AAAA,UAAQ;AAAA,UAClB,KAAK,UAAU,QAAQ,8DAA8D;AAAA,QAAC;AAK1F,YAAI,iBAAiB,aAAa,SAAS,GAAG,IAAI,MAAM,aAAa,CAAC;AACtE,YAAI,KAAK,UAAU;AACf,eAAK;AAAA,YACD,iBAAiB;AAAA,YACjB,eAAe,OAAO,CAAC,IAAI;AAAA,YAC3B;AAAA,cACI,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,MAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAEA,YAAIL,UAAS;AACT,eAAK;AAAA,YACD,iBAAiB;AAAA,YACjB,eAAe,OAAO,CAAC,IAAI;AAAA,YAC3B;AAAA,cACI,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,SAAS,KAAK;AAAA,cACd,MAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAIA,iBAAS,UAAU,SAAS;AACxB,eAAK,uBAAuB,MAAM;AAClC,iBAAO,OAAO,KAAK,WAAW,OAAO,SAAS;AAAA,QAClD;AAAA,MACJ;AAAA;AAAA;AAAA;AAAA,MAKA,cAAc;AACV,YAAI,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AACA,eAAO,MAAM,IAAI,UAAQ,CAAE,MAAM,QAAQ,MAAM,IAAI,CAAE,CAAC;AAAA,MAC1D;AAAA;AAAA;AAAA;AAAA,MAKA,iBAAiB;AACb,YAAI;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,YAAY;AAAA,QAChB,CAAC;AAED,YAAI,KAAK,gBAAgB,QAAW;AAChC,eAAK,MAAM,0CAA0C;AAAA,QACzD;AAGA,mBAAW,QAAQ,gBAAgB,KAAK,WAAW;AAEnD,YAAI,WAAW,UAAU,iBAAiB,QAAQ;AAC9C,cAAI,QAAQ,QAAQ,QAAQ,SAAS,aAAa;AAClD,cAAI,cAAc,QAAQ,QAAQ,eAAe,MAAS;AAC1D,iBAAO,OAAO;AACd,iBAAO,OAAO;AACd,eAAK,cAAc,KAAK,mBAAmB,OAAO,WAAW;AAAA,QACjE,OAAO;AACH,eAAK,cAAc,KAAK;AAAA,QAC5B;AAIA,YAAI,OAAO,SAAS,QAAW;AAC3B,cAAI,YAAY,KAAK,eAAe;AACpC,cAAI,cAAc,KAAK,wBAAwB;AAC/C,cAAI,SAAS,KAAK;AAClB,oBAAU,UAAU,KAAK,OAAO,aAAa,QAAQ,EAAE;AACvD,iBAAO,OAAO,UAAU,YAAY,EAAE,KAAK;AAAA,QAC/C;AAGA,YAAI,gBAAgB,KAAK,kBAAkB,QAAQ,SAAS;AAE5D,YAAI,SAAS,IAAI,cAAc,OAAO,OAAO,EAAE,gBAAgB,CAAC,EAAE,GAAG,MAAM,CAAC;AAC5E,aAAK,YAAY,YAAY,MAAM;AAGnC,eAAO;AAAA,MACX;AAAA,MAEA,YAAY,QAAQ;AAChB,YAAI,OAAO,eAAe,QAAQ;AAC9B,eAAK,WAAW,YAAY,MAAM;AAAA,QACtC,OAAO;AACH,eAAK,aAAa,YAAY,MAAM;AAAA,QACxC;AACA,eAAO;AAAA,MACX;AAAA,MAEA,wBAAwB;AACpB,eAAO,KAAK,SAAS,OAAO,YAAU,OAAO,eAAe,MAAM;AAAA,MACtE;AAAA,MAEA,0BAA0B;AACtB,eAAO,KAAK,SAAS,OAAO,YAAU,CAAC,OAAO,eAAe,MAAM;AAAA,MACvE;AAAA;AAAA;AAAA;AAAA,MAKA,WAAW,OAAO,QAAW,YAAY,QAAW;AAChD,YAAI;AACJ,SAAE,MAAM,IAAK,IAAI,KAAK,iBAAiB,MAAM,SAAS;AACtD,YAAI,QAAQ,KAAK,SAAS,GAAG;AACzB,cAAI,MAAM;AACV,eAAK,MAAM,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,QACvC;AACA,eAAO;AAAA,MACX;AAAA,MAEA,iBAAiB,OAAO,QAAW,YAAY,QAAW;AACtD,YAAI,SAAS,QAAW;AACpB,iBAAO,SAAS,EAAE,MAAM,CAAC;AAAA,QAC7B;AAGA,YAAI,cAAc,QAAW;AACzB,sBAAY,IAAI,UAAU;AAAA,QAC9B;AAGA,iBAAS,UAAU,KAAK,UAAU;AAC9B,cAAI,OAAO,SAAS,UAAU;AAC1B,gBAAI,CAAC,QAAQ,WAAW,OAAO,IAAI,GAAG;AAClC,kBAAI,OAAO,YAAY,UAAU;AAC7B,wBAAQ,WAAW,OAAO,MAAM,OAAO,OAAO;AAAA,cAClD;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAGA,iBAAS,QAAQ,OAAO,KAAK,KAAK,SAAS,GAAG;AAC1C,cAAI,CAAC,QAAQ,WAAW,IAAI,GAAG;AAC3B,oBAAQ,WAAW,MAAM,KAAK,UAAU,IAAI,CAAC;AAAA,UACjD;AAAA,QACJ;AAGA,YAAI,KAAK,eAAe;AACpB,cAAI;AACA,aAAE,WAAW,IAAK,IAAI,KAAK,kBAAkB,MAAM,SAAS;AAAA,UAChE,SAAS,KAAK;AACV,gBAAI,eAAe,eAAe;AAC9B,mBAAK,MAAM,IAAI,OAAO;AAAA,YAC1B,OAAO;AACH,oBAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ,OAAO;AACH,WAAE,WAAW,IAAK,IAAI,KAAK,kBAAkB,MAAM,SAAS;AAAA,QAChE;AAEA,YAAI,QAAQ,WAAW,uBAAuB,GAAG;AAC7C,iBAAO,KAAK,OAAO,QAAQ,WAAW,uBAAuB,CAAC;AAC9D,kBAAQ,WAAW,uBAAuB;AAAA,QAC9C;AAEA,eAAO,CAAE,WAAW,IAAK;AAAA,MAC7B;AAAA,MAEA,kBAAkB,aAAa,WAAW;AAEtC,YAAI,KAAK,0BAA0B,QAAW;AAC1C,wBAAc,KAAK,sBAAsB,WAAW;AAAA,QACxD;AAIA,YAAI,mBAAmB,oBAAI,IAAI;AAC/B,iBAAS,eAAe,KAAK,4BAA4B;AACrD,cAAI,gBAAgB,YAAY;AAChC,mBAAS,CAAE,GAAG,YAAa,KAAK,OAAO,QAAQ,YAAY,cAAc,GAAG;AACxE,gBAAI,YAAY,iBAAiB,IAAI,YAAY,KAAK,CAAC;AACvD,wBAAY,UAAU,OAAO,cAAc,MAAM,GAAG,CAAC,CAAC,CAAC;AACvD,wBAAY,UAAU,OAAO,cAAc,MAAM,CAAC,IAAI,CAAC,CAAC;AACxD,6BAAiB,IAAI,cAAc,SAAS;AAAA,UAChD;AAAA,QACJ;AAKA,YAAI,wBAAwB,CAAC;AAC7B,YAAI,2BAA2B,CAAC;AAChC,YAAI,mBAAmB,OAAO,QAAQ,WAAW,EAAE,OAAO,QAAQ,EAAE;AACpE,iBAAS,CAAE,GAAG,UAAW,KAAK,kBAAkB;AAG5C,cAAI,eAAe,MAAM;AACrB,qCAAyB,KAAK,GAAG;AACjC,iBAAK,CAAE,GAAG,UAAW,KAAK,kBAAkB;AACxC,uCAAyB,KAAK,GAAG;AAAA,YACrC;AAAA,UAIJ,OAAO;AACH,gBAAI,eAAe,KAAK,gBAAgB,UAAU;AAClD,gBAAI;AACJ,gBAAI,iBAAiB,QAAW;AAC5B,wBAAU;AAAA,YACd,OAAO;AACH,oCAAsB,CAAC,IAAI;AAC3B,wBAAU;AAAA,YACd;AACA,qCAAyB,KAAK,OAAO;AAAA,UACzC;AAAA,QACJ;AAGA,YAAI,sBAAsB,yBAAyB,KAAK,EAAE;AAG1D,YAAI,eAAe,oBAAI,IAAI;AAC3B,YAAI,2BAA2B,oBAAI,IAAI;AACvC,YAAI;AAEJ,YAAI,cAAc,CAAC,QAAQ,kBAAkB,gBAAgB,WAAc;AACvE,uBAAa,IAAI,MAAM;AACvB,cAAI,kBAAkB,KAAK,YAAY,QAAQ,gBAAgB;AAK/D,cAAI,oBAAoB,OAAO,SAAS;AACpC,qCAAyB,IAAI,MAAM;AACnC,qBAAS,mBAAmB,iBAAiB,IAAI,MAAM,KAAK,CAAC,GAAG;AAC5D,kBAAI,yBAAyB,IAAI,eAAe,GAAG;AAC/C,oBAAI,MAAM;AACV,oBAAI,cAAc,iBAAiB,eAAe;AAClD,sBAAM,IAAI,cAAc,QAAQ,IAAI,KAAK,WAAW,CAAC;AAAA,cACzD;AAAA,YACJ;AAAA,UACJ;AAIA,cAAI,oBAAoB,UAAU;AAC9B,mBAAO,MAAM,WAAW,iBAAiB,aAAa;AAAA,UAC1D;AAAA,QACJ;AAGA,YAAI,mBAAmB,CAAAM,iBAAe;AAGlC,cAAI,eAAe,sBAAsBA,YAAW;AACpD,cAAI,CAAE,QAAQ,eAAe,YAAa,IAAI;AAI9C,cAAI,gBAAgB,CAAC;AACrB,cAAI;AACJ,qBAAS;AAGL,gBAAI,WAAW,QAAW;AACtB,qBAAO,KAAK,YAAYA,YAAW,CAAC;AACpC,qBAAOA,eAAc;AAAA,YACzB;AAIA,gBAAI,iBAAiB,QAAW;AAC5B,kBAAI,YAAY,KAAK,gBAAgB,QAAQ,GAAG;AAKhD,kBAAI,QAAQ,KAAK;AACjB,kBAAI,cAAc,KAAK,CAAC,MAAM,SAAS,cAAc,CAAC,CAAC,GAAG;AACtD,8BAAc,KAAK,CAAE,QAAQ,CAAC,GAAG,aAAc,CAAC;AAChD,oBAAI,OAAO,cAAc,CAAC;AAC1B,gCAAgB,OAAO,aAAa,CAAC;AACrC,oBAAI,mBAAmB,aAAa,MAAM,CAAC,KAAK;AAChD,oBAAI,gBAAgB,KAAK;AACzB,oBAAI,QAAQ,eAAe,aAAa,GAAG;AACvC,2BAAS,cAAc,aAAa;AACpC,iCAAe;AAAA,gBACnB,OAAO;AACH,sBAAI,MAAM;AACV,wBAAM,IAAI,cAAc,QAAQ,IAAI,KAAK,YAAY,CAAC;AAAA,gBAC1D;AAAA,cAIJ,WAAW,cAAc,GAAG;AACxB,uBAAOA,eAAc;AACrB,oBAAI,OAAO,CAAE,YAAa;AAC1B,8BAAc,KAAK,CAAE,QAAQ,MAAM,aAAc,CAAC;AAClD;AAAA,cAIJ,OAAO;AACH,oBAAI,MAAM;AACV,sBAAM,IAAI,cAAc,QAAQ,IAAI,KAAK,YAAY,CAAC;AAAA,cAC1D;AAAA,YAKJ,OAAO;AACH,kBAAI,QAAQA,eAAc;AAC1B,kBAAI,oBAAoB,oBAAoB,MAAM,KAAK;AACvD,kBAAI,YAAY,KAAK,gBAAgB,QAAQ,iBAAiB;AAC9D,qBAAO,QAAQ;AACf,kBAAI,OAAO,YAAY,MAAM,OAAO,IAAI;AACxC,4BAAc,KAAK,CAAE,QAAQ,MAAM,aAAc,CAAC;AAClD;AAAA,YACJ;AAAA,UACJ;AAIA,iBAAO,cAAc,MAAM;AAC3B,mBAAS,CAAEH,SAAQ,MAAMI,cAAc,KAAK,eAAe;AACvD,wBAAYJ,SAAQ,MAAMI,cAAa;AAAA,UAC3C;AACA,iBAAO;AAAA,QACX;AAIA,YAAI,cAAc,KAAK,wBAAwB;AAG/C,YAAI,sBAAsB,CAAAD,iBAAe;AAErC,cAAI,mBAAmB,oBAAoB,MAAMA,YAAW;AAC5D,cAAI,aAAa,KAAK,yBAAyB,aAAa,gBAAgB;AAI5E,mBAAS,IAAI,GAAG,IAAI,YAAY,UAAU,IAAI,WAAW,QAAQ,KAAK;AAClE,gBAAI,SAAS,YAAY,CAAC;AAC1B,gBAAI,YAAY,WAAW,CAAC;AAC5B,gBAAI,OAAO,YAAY,MAAMA,cAAaA,eAAc,SAAS;AACjE,YAAAA,gBAAe;AACf,wBAAY,QAAQ,IAAI;AAAA,UAC5B;AAIA,wBAAc,YAAY,MAAM,WAAW,MAAM;AACjD,iBAAOA;AAAA,QACX;AAIA,iBAAS,CAAC;AACV,YAAI,cAAc;AAClB,YAAI,0BAA0B,KAAK,IAAI,IAAI,GAAG,OAAO,KAAK,qBAAqB,EAAE,IAAI,MAAM,CAAC;AAC5F,eAAO,eAAe,yBAAyB;AAG3C,cAAI,2BAA2B,KAAK;AAAA,YAEhC,GAAG,OAAO,KAAK,qBAAqB,EAAE,IAAI,MAAM,EAAE,OAAO,WAAS,SAAS,WAAW;AAAA,UAC1F;AACA,cAAI,gBAAgB,0BAA0B;AAC1C,gBAAI,wBAAwB,oBAAoB,WAAW;AAI3D,gBAAI,wBAAwB,aAAa;AACrC,4BAAc;AACd;AAAA,YACJ,OAAO;AACH,4BAAc;AAAA,YAClB;AAAA,UACJ;AAIA,cAAI,EAAE,eAAe,wBAAwB;AACzC,gBAAI,UAAU,YAAY,MAAM,aAAa,wBAAwB;AACrE,qBAAS,OAAO,OAAO,OAAO;AAC9B,0BAAc;AAAA,UAClB;AAGA,wBAAc,iBAAiB,WAAW;AAAA,QAC9C;AAGA,YAAI,aAAa,oBAAoB,WAAW;AAGhD,iBAAS,OAAO,OAAO,YAAY,MAAM,UAAU,CAAC;AAIpD,YAAI,mBAAmB,CAAC;AACxB,iBAAS,UAAU,KAAK,UAAU;AAC9B,cAAI,CAAC,aAAa,IAAI,MAAM,GAAG;AAC3B,gBAAI,OAAO,UAAU;AACjB,+BAAiB,KAAK,iBAAiB,MAAM,CAAC;AAAA,YAClD,OAAO;AAKH,kBAAI,OAAO,YAAY,UACnB,OAAO,OAAO,YAAY,YAC1B,QAAQ,WAAW,OAAO,IAAI,KAC9B,OAAO,YAAY,QAAQ,WAAW,OAAO,IAAI,GAAG;AACpD;AAAA,kBAAQ;AAAA,kBAAW,OAAO;AAAA,kBAClB,KAAK,WAAW,QAAQ,OAAO,OAAO;AAAA,gBAAC;AAAA,cACnD;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,iBAAiB,QAAQ;AACzB,eAAK,MAAM;AAAA,YAAI;AAAA,YACJ,iBAAiB,KAAK,IAAI;AAAA,UAAC,CAAC;AAAA,QAC3C;AAGA,iBAAS,SAAS,KAAK,4BAA4B;AAC/C,cAAI,MAAM,UAAU;AAChB,gBAAI,kBAAkB;AACtB,qBAAS,UAAU,MAAM,gBAAgB;AACrC,kBAAI,yBAAyB,IAAI,MAAM,GAAG;AACtC,kCAAkB;AAClB;AAAA,cACJ;AAAA,YACJ;AAGA,gBAAI,iBAAiB;AACjB,kBAAI,QAAQ,MAAM,eACb,OAAO,YAAU,OAAO,SAAS,QAAQ,EACzC,IAAI,YAAU,iBAAiB,MAAM,CAAC;AAC3C,kBAAI,MAAM;AACV,mBAAK,MAAM,IAAI,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,YACxC;AAAA,UACJ;AAAA,QACJ;AAGA,eAAO,CAAE,WAAW,MAAO;AAAA,MAC/B;AAAA,MAEA,sBAAsB,aAAa;AAE/B,YAAI,kBAAkB,CAAC;AACvB,iBAAS,cAAc,aAAa;AAGhC,cAAI,CAAC,cAAc,CAAC,KAAK,sBAAsB,SAAS,WAAW,CAAC,CAAC,GAAG;AACpE,4BAAgB,KAAK,UAAU;AAAA,UAGnC,OAAO;AACH,gBAAI;AACA,kBAAI,YAAYZ,IAAG,aAAa,WAAW,MAAM,CAAC,GAAG,MAAM;AAC3D,kBAAIc,eAAc,CAAC;AACnB,uBAAS,YAAY,WAAW,SAAS,GAAG;AACxC,yBAAS,OAAO,KAAK,yBAAyB,QAAQ,GAAG;AACrD,kBAAAA,aAAY,KAAK,GAAG;AAAA,gBACxB;AAAA,cACJ;AACA,cAAAA,eAAc,KAAK,sBAAsBA,YAAW;AACpD,gCAAkB,gBAAgB,OAAOA,YAAW;AAAA,YACxD,SAAS,KAAK;AACV,mBAAK,MAAM,IAAI,OAAO;AAAA,YAC1B;AAAA,UACJ;AAAA,QACJ;AAGA,eAAO;AAAA,MACX;AAAA,MAEA,yBAAyB,UAAU;AAC/B,eAAO,CAAC,QAAQ;AAAA,MACpB;AAAA,MAEA,gBAAgB,QAAQ,qBAAqB;AAEzC,YAAI,gBAAgB,KAAK,mBAAmB,MAAM;AAClD,YAAIC,SAAQ,oBAAoB,MAAM,IAAI,OAAO,MAAM,aAAa,CAAC;AAGrE,YAAIA,WAAU,MAAM;AAChB,cAAI,eAAe;AAAA,YACf,WAAW;AAAA,YACX,CAAC,QAAQ,GAAG;AAAA,YACZ,CAAC,WAAW,GAAG;AAAA,UACnB;AACA,cAAI,MAAM,aAAa,OAAO,KAAK;AACnC,cAAI,QAAQ,QAAW;AACnB,kBAAM,IAAI,OAAO,UAAU,IAAI,yBAAyB,yBAAyB,OAAO,KAAK;AAAA,UACjG;AACA,gBAAM,IAAI,cAAc,QAAQ,GAAG;AAAA,QACvC;AAGA,eAAOA,OAAM,CAAC,EAAE;AAAA,MACpB;AAAA,MAEA,yBAAyB,SAAS,qBAAqB;AAGnD,YAAI,SAAS,CAAC;AACd,iBAAS,KAAK,MAAM,QAAQ,QAAQ,GAAG,EAAE,GAAG;AACxC,cAAI,gBAAgB,QAAQ,MAAM,GAAG,CAAC;AACtC,cAAI,UAAU,cAAc,IAAI,YAAU,KAAK,mBAAmB,MAAM,CAAC,EAAE,KAAK,EAAE;AAClF,cAAIA,SAAQ,oBAAoB,MAAM,IAAI,OAAO,MAAM,OAAO,CAAC;AAC/D,cAAIA,WAAU,MAAM;AAChB,qBAAS,OAAO,OAAOA,OAAM,MAAM,CAAC,EAAE,IAAI,YAAU,OAAO,MAAM,CAAC;AAClE;AAAA,UACJ;AAAA,QACJ;AAGA,eAAO;AAAA,MACX;AAAA,MAEA,gBAAgB,YAAY;AAExB,YAAI,CAAC,YAAY;AACb,iBAAO;AAAA,QACX;AAGA,YAAI,CAAC,KAAK,aAAa,SAAS,WAAW,CAAC,CAAC,GAAG;AAC5C,iBAAO;AAAA,QACX;AAGA,YAAI,cAAc,KAAK,wBAAwB;AAC3C,cAAI,SAAS,KAAK,uBAAuB,UAAU;AACnD,iBAAO,CAAE,QAAQ,YAAY,MAAU;AAAA,QAC3C;AAGA,YAAI,WAAW,WAAW,GAAG;AACzB,iBAAO;AAAA,QACX;AAGA,YAAI,WAAW,SAAS,GAAG,GAAG;AAC1B,cAAI,CAAE,eAAe,YAAa,IAAI,cAAc,YAAY,KAAK,CAAC;AACtE,cAAI,iBAAiB,KAAK,wBAAwB;AAC9C,gBAAI,SAAS,KAAK,uBAAuB,aAAa;AACtD,mBAAO,CAAE,QAAQ,eAAe,YAAa;AAAA,UACjD;AAAA,QACJ;AAIA,YAAI,gBAAgB,KAAK,mBAAmB,UAAU;AAGtD,YAAI,cAAc,SAAS,GAAG;AAC1B,cAAI,UAAU,cAAc,IAAI,CAAC;AAAA,YAAY;AAAA,YAAE;AAAA;AAAA,UAAgC,MAAM,aAAa,EAAE,KAAK,IAAI;AAC7G,cAAI,OAAO,EAAC,QAAQ,YAAY,SAAS,QAAO;AAChD,cAAI,MAAM;AACV,eAAK,MAAM,IAAI,KAAK,IAAI,CAAC;AAAA,QAI7B,WAAW,cAAc,WAAW,GAAG;AACnC,cAAI,CAAE,YAAa,IAAI;AACvB,iBAAO;AAAA,QACX;AAKA,YAAI,KAAK,yBAAyB,KAAK,UAAU,GAAG;AAChD,cAAI,CAAC,KAAK,+BAA+B,QAAQ;AAC7C,mBAAO;AAAA,UACX;AAAA,QACJ;AAGA,YAAI,WAAW,SAAS,GAAG,GAAG;AAC1B,iBAAO;AAAA,QACX;AAIA,eAAO,CAAE,QAAW,YAAY,MAAU;AAAA,MAC9C;AAAA,MAEA,mBAAmB,eAAe;AAC9B,YAAI,SAAS,CAAC;AAId,YAAI,QAAQ,KAAK;AACjB,YAAI,MAAM,SAAS,cAAc,CAAC,CAAC,KAAK,MAAM,SAAS,cAAc,CAAC,CAAC,GAAG;AACtE,cAAI,KAAK,cAAc;AACnB,gBAAI,eAAe;AACnB,gBAAI,cAAc,SAAS,GAAG,GAAG;AAC7B,eAAE,eAAe,YAAa,IAAI,cAAc,eAAe,KAAK,CAAC;AAAA,YACzE,OAAO;AACH,8BAAgB;AAChB,6BAAe;AAAA,YACnB;AACA,qBAASF,kBAAiB,OAAO,KAAK,KAAK,sBAAsB,GAAG;AAChE,kBAAIA,eAAc,WAAW,aAAa,GAAG;AACzC,oBAAI,SAAS,KAAK,uBAAuBA,cAAa;AACtD,oBAAI,MAAM,CAAE,QAAQA,gBAAe,YAAa;AAChD,uBAAO,KAAK,GAAG;AAAA,cACnB;AAAA,YACJ;AAAA,UACJ;AAAA,QAKJ,WAAW,MAAM,SAAS,cAAc,CAAC,CAAC,KAAK,CAAC,MAAM,SAAS,cAAc,CAAC,CAAC,GAAG;AAC9E,cAAI,gBAAgB;AACpB,cAAI,eAAe;AACnB,cAAI,sBAAsB,cAAc,MAAM,GAAG,CAAC;AAClD,cAAI,qBAAqB,cAAc,MAAM,CAAC;AAE9C,mBAASA,kBAAiB,OAAO,KAAK,KAAK,sBAAsB,GAAG;AAChE,gBAAIA,mBAAkB,qBAAqB;AACvC,kBAAI,SAAS,KAAK,uBAAuBA,cAAa;AACtD,kBAAI,MAAM,CAAE,QAAQA,gBAAe,kBAAmB;AACtD,qBAAO,KAAK,GAAG;AAAA,YACnB,WAAWA,eAAc,WAAW,aAAa,GAAG;AAChD,kBAAI,SAAS,KAAK,uBAAuBA,cAAa;AACtD,kBAAI,MAAM,CAAE,QAAQA,gBAAe,YAAa;AAChD,qBAAO,KAAK,GAAG;AAAA,YACnB;AAAA,UACJ;AAAA,QAGJ,OAAO;AACH,eAAK,MAAM,IAAI,gCAAgC,aAAa,CAAC;AAAA,QACjE;AAGA,eAAO;AAAA,MACX;AAAA,MAEA,mBAAmB,QAAQ;AAGvB,YAAI,QAAQ,OAAO;AACnB,YAAI;AAGJ,YAAI,UAAU,QAAW;AACrB,0BAAgB;AAAA,QAGpB,WAAW,UAAU,UAAU;AAC3B,0BAAgB;AAAA,QAGpB,WAAW,UAAU,cAAc;AAC/B,0BAAgB;AAAA,QAGpB,WAAW,UAAU,aAAa;AAC9B,0BAAgB;AAAA,QAGpB,WAAW,UAAU,WAAW;AAC5B,0BAAgB;AAAA,QAGpB,WAAW,UAAU,QAAQ;AACzB,0BAAgB;AAAA,QAGpB,WAAW,UAAU,UAAU;AAC3B,0BAAgB;AAAA,QAGpB,OAAO;AACH,0BAAgB,IAAI,YAAY,IAAI,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA,QAC1E;AAGA,YAAI,OAAO,eAAe,QAAQ;AAC9B,0BAAgB,cAAc,QAAQ,QAAQ,EAAE;AAChD,0BAAgB,cAAc,QAAQ,MAAM,EAAE;AAAA,QAClD;AAGA,eAAO;AAAA,MACX;AAAA;AAAA;AAAA;AAAA,MAMA,sBAAsB,OAAO,QAAW,YAAY,QAAW;AAC3D,YAAI;AACJ,SAAE,MAAM,IAAK,IAAI,KAAK,4BAA4B,MAAM,SAAS;AACjE,YAAI,KAAK,QAAQ;AACb,cAAI,MAAM;AACV,eAAK,MAAM,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,QACvC;AACA,eAAO;AAAA,MACX;AAAA,MAEA,4BAA4B,OAAO,QAAW,YAAY,QAAW;AAajE,YAAI;AACJ,YAAI,cAAc,KAAK,wBAAwB;AAC/C,YAAI,IAAI,YAAY,OAAO,YAAU,CAAE,QAAQ,SAAU,EAAE,SAAS,OAAO,KAAK,CAAC;AACjF,YAAI,EAAE,QAAQ;AACV,gBAAM,IAAI,UAAU,IAAI,uDACkB,EAAE,CAAC,EAAE,KAAK,CAAC;AAAA,QACzD;AAEA,iBAAS,SAAS,KAAK,4BAA4B;AAC/C,mBAAS,UAAU,MAAM,gBAAgB;AACrC,gBAAI,YAAY,SAAS,MAAM,GAAG;AAC9B,oBAAM,IAAI,UAAU,6DACyB;AAAA,YACjD;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI;AACJ,YAAI;AACA,uBAAa,KAAK;AAClB,cAAI;AACJ,cAAI;AACA,gBAAI,KAAK,UAAU,QAAW;AAE1B,mBAAK,QAAQ,KAAK,aAAa,EAAE,MAAM,CAAC;AAAA,YAC5C;AACA,qBAAS,UAAU,aAAa;AAE5B,qBAAO,aAAa,OAAO;AAE3B,qBAAO,QAAQ;AACf,qBAAO,eAAe,OAAO;AAC7B,qBAAO,UAAU;AAAA,YACrB;AACA,aAAE,WAAW,cAAe,IAAI,KAAK;AAAA,cAAiB;AAAA,cACA;AAAA,YAAS;AAC/D,qBAAS,UAAU,aAAa;AAE5B,kBAAI,OAAO,QAAQ,WAAW,OAAO,IAAI;AACzC,kBAAI,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,GAAG;AAE1C,wBAAQ,KAAK,IAAI,0BAA0B,OAAO,MAAM,SAAS,CAAC;AAClE,wBAAQ,WAAW,OAAO,IAAI;AAAA,cAClC;AAAA,YACJ;AAAA,UACJ,UAAE;AAEE,qBAAS,UAAU,aAAa;AAC5B,qBAAO,QAAQ,OAAO;AACtB,qBAAO,UAAU,OAAO;AAAA,YAC5B;AAAA,UACJ;AACA,cAAI,YAAY,KAAK,sBAAsB;AAC3C,cAAI;AAGA,qBAAS,UAAU,WAAW;AAC1B,qBAAO,gBAAgB,OAAO;AAC9B,qBAAO,WAAW;AAAA,YACtB;AACA,qBAAS,SAAS,KAAK,4BAA4B;AAC/C,oBAAM,gBAAgB,MAAM;AAC5B,oBAAM,WAAW;AAAA,YACrB;AACA,aAAE,WAAW,MAAO,IAAI,KAAK;AAAA,cAAiB;AAAA,cACA;AAAA,YAAS;AAAA,UAC3D,UAAE;AAEE,qBAAS,UAAU,WAAW;AAC1B,qBAAO,WAAW,OAAO;AAAA,YAC7B;AACA,qBAAS,SAAS,KAAK,4BAA4B;AAC/C,oBAAM,WAAW,MAAM;AAAA,YAC3B;AAAA,UACJ;AAAA,QACJ,UAAE;AACE,eAAK,QAAQ;AAAA,QACjB;AACA,eAAO,CAAE,WAAW,MAAO;AAAA,MAC/B;AAAA;AAAA;AAAA;AAAA,MAKA,YAAY,QAAQ,aAAa;AAE7B,YAAI,CAAC,CAAC,QAAQ,SAAS,EAAE,SAAS,OAAO,KAAK,GAAG;AAC7C,cAAI;AACA,0BAAc,aAAa,IAAI;AAAA,UACnC,SAAS,KAAK;AAAA,UAAC;AAAA,QACnB;AAEA,YAAI;AAEJ,YAAI,CAAC,YAAY,UAAU,OAAO,UAAU,UAAU;AAClD,cAAI,OAAO,eAAe,QAAQ;AAC9B,oBAAQ,OAAO;AAAA,UACnB,OAAO;AACH,oBAAQ,OAAO;AAAA,UACnB;AACA,cAAI,OAAO,UAAU,UAAU;AAC3B,oBAAQ,KAAK,WAAW,QAAQ,KAAK;AACrC,iBAAK,aAAa,QAAQ,KAAK;AAAA,UACnC;AAAA,QAIJ,WAAW,CAAC,YAAY,UAAU,OAAO,UAAU,gBAC7C,CAAC,OAAO,eAAe,QAAQ;AACjC,cAAI,OAAO,YAAY,QAAW;AAC9B,oBAAQ,OAAO;AAAA,UACnB,OAAO;AACH,oBAAQ;AAAA,UACZ;AACA,eAAK,aAAa,QAAQ,KAAK;AAAA,QAGnC,WAAW,YAAY,WAAW,KAAK,CAAC,QAAW,QAAQ,EAAE,SAAS,OAAO,KAAK,GAAG;AACjF,cAAI,aAAa,YAAY,CAAC;AAC9B,kBAAQ,KAAK,WAAW,QAAQ,UAAU;AAC1C,eAAK,aAAa,QAAQ,KAAK;AAAA,QAGnC,WAAW,OAAO,UAAU,WAAW;AACnC,kBAAQ,YAAY,IAAI,OAAK,KAAK,WAAW,QAAQ,CAAC,CAAC;AAAA,QAG3D,WAAW,OAAO,UAAU,QAAQ;AAChC,kBAAQ,YAAY,IAAI,OAAK,KAAK,WAAW,QAAQ,CAAC,CAAC;AACvD,eAAK,aAAa,QAAQ,MAAM,CAAC,CAAC;AAAA,QAGtC,WAAW,OAAO,UAAU,UAAU;AAClC,kBAAQ;AAAA,QAGZ,OAAO;AACH,kBAAQ,YAAY,IAAI,OAAK,KAAK,WAAW,QAAQ,CAAC,CAAC;AACvD,mBAAS,KAAK,OAAO;AACjB,iBAAK,aAAa,QAAQ,CAAC;AAAA,UAC/B;AAAA,QACJ;AAGA,eAAO;AAAA,MACX;AAAA,MAEA,WAAW,QAAQ,YAAY;AAC3B,YAAI,YAAY,KAAK,cAAc,QAAQ,OAAO,MAAM,OAAO,IAAI;AACnE,YAAI,OAAO,cAAc,YAAY;AACjC,cAAI,MAAM;AACV,gBAAM,IAAI,cAAc,QAAQ,IAAI,KAAK,SAAS,CAAC;AAAA,QACvD;AAGA,YAAI;AACJ,YAAI;AACA,cAAI;AACA,qBAAS,UAAU,UAAU;AAAA,UACjC,SAAS,KAAK;AAIV,gBAAI,eAAe,aACf,uDAAuD,KAAK,IAAI,OAAO,GAAG;AAE1E,uBAAS,IAAI,UAAU,UAAU;AAAA,YACrC,OAAO;AACH,oBAAM;AAAA,YACV;AAAA,UACJ;AAAA,QAEJ,SAAS,KAAK;AAEV,cAAI,eAAe,mBAAmB;AAElC,gBAAI,MAAM,IAAI;AACd,kBAAM,IAAI,cAAc,QAAQ,GAAG;AAAA,UAGvC,WAAW,eAAe,WAAW;AACjC,gBAAI,OAAO,QAAQ,OAAO,MAAM,QAAQ,KAAK,OAAO,IAAI,CAAC;AACzD,gBAAI,OAAO,EAAC,MAAM,MAAM,OAAO,WAAU;AACzC,gBAAI,MAAM;AACV,kBAAM,IAAI,cAAc,QAAQ,IAAI,KAAK,IAAI,CAAC;AAAA,UAClD,OAAO;AACH,kBAAM;AAAA,UACV;AAAA,QACJ;AAGA,eAAO;AAAA,MACX;AAAA,MAEA,aAAa,QAAQ,OAAO;AAExB,YAAI,OAAO,YAAY,UAAa,CAAC,kBAAkB,OAAO,OAAO,EAAE,SAAS,KAAK,GAAG;AACpF,cAAI,OAAO;AAAA,YAAC;AAAA,YACA,SAAS,kBAAkB,OAAO,OAAO,EAAE,IAAI,IAAI,EAAE,KAAK,IAAI;AAAA,UAAC;AAC3E,cAAI,MAAM;AACV,gBAAM,IAAI,cAAc,QAAQ,IAAI,KAAK,IAAI,CAAC;AAAA,QAClD;AAAA,MACJ;AAAA;AAAA;AAAA;AAAA,MAKA,eAAe;AACX,YAAI,YAAY,KAAK,eAAe;AACpC,kBAAU;AAAA,UAAU,KAAK;AAAA,UAAO,KAAK;AAAA,UACjB,KAAK;AAAA,QAA0B;AACnD,eAAO,UAAU,YAAY;AAAA,MACjC;AAAA,MAEA,cAAc;AACV,YAAI,YAAY,KAAK,eAAe;AAGpC,kBAAU;AAAA,UAAU,KAAK;AAAA,UAAO,KAAK;AAAA,UACjB,KAAK;AAAA,QAA0B;AAGnD,kBAAU,SAAS,KAAK,WAAW;AAGnC,iBAAS,gBAAgB,KAAK,gBAAgB;AAC1C,oBAAU,cAAc,aAAa,KAAK;AAC1C,oBAAU,SAAS,aAAa,WAAW;AAC3C,oBAAU,cAAc,aAAa,cAAc;AACnD,oBAAU,YAAY;AAAA,QAC1B;AAGA,kBAAU,SAAS,KAAK,MAAM;AAG9B,eAAO,UAAU,YAAY;AAAA,MACjC;AAAA,MAEA,iBAAiB;AAEb,eAAO,IAAI,KAAK,gBAAgB,EAAE,MAAM,KAAK,KAAK,CAAC;AAAA,MACvD;AAAA;AAAA;AAAA;AAAA,MAKA,YAAY,OAAO,QAAW;AAC1B,YAAI,SAAS;AAAW,iBAAO,QAAQ;AACvC,aAAK,eAAe,KAAK,aAAa,GAAG,IAAI;AAAA,MACjD;AAAA,MAEA,WAAW,OAAO,QAAW;AACzB,YAAI,SAAS;AAAW,iBAAO,QAAQ;AACvC,aAAK,eAAe,KAAK,YAAY,GAAG,IAAI;AAAA,MAChD;AAAA,MAEA,eAAe,SAAS,OAAO,QAAW;AACtC,YAAI,SAAS;AACT,cAAI,SAAS;AAAW,mBAAO,QAAQ;AACvC,eAAK,MAAM,OAAO;AAAA,QACtB;AAAA,MACJ;AAAA;AAAA;AAAA;AAAA,MAKA,KAAK,SAAS,GAAG,UAAU,QAAW;AAClC,YAAI,SAAS;AACT,eAAK,eAAe,SAAS,QAAQ,MAAM;AAAA,QAC/C;AACA,gBAAQ,KAAK,MAAM;AAAA,MACvB;AAAA,MAEA,MAAM,SAAS;AAYX,YAAI,KAAK,UAAU;AAAM,gBAAM,IAAI,MAAM,OAAO;AAEhD,aAAK,YAAY,QAAQ,MAAM;AAC/B,YAAI,OAAO,EAAC,MAAM,KAAK,MAAM,QAAgB;AAC7C,aAAK,KAAK,GAAG,IAAI,kCAAkC,IAAI,CAAC;AAAA,MAC5D;AAAA,IACJ,CAAC,CAAC;AAGF,WAAO,UAAU;AAAA,MACb,gBAAAH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAGA,WAAO,eAAe,OAAO,SAAS,SAAS;AAAA,MAC3C,MAAM;AACF,YAAI,SAAS,CAAC;AACd,eAAO,QAAQ,EAAE,aAAa,UAAU,QAAQ,WAAW,UAAU,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAE,GAAG,CAAE,MAAM;AACvG,iBAAO,eAAe,QAAQ,GAAG;AAAA,YAC7B,MAAM;AACF,wBAAU,GAAG,IAAI,gDAAgD,GAAG,CAAC,CAAC;AACtE,qBAAO;AAAA,YACX;AAAA,UACJ,CAAC;AAAA,QACL,CAAC;AACD,eAAO,QAAQ,EAAE,wBAAwB,CAAC,EAAE,QAAQ,CAAC,CAAE,GAAG,CAAE,MAAM;AAC9D,iBAAO,eAAe,QAAQ,GAAG;AAAA,YAC7B,MAAM;AACF,wBAAU,GAAG,IAAI,2EAA2E,CAAC,CAAC;AAC9F,qBAAO;AAAA,YACX;AAAA,UACJ,CAAC;AAAA,QACL,CAAC;AACD,eAAO;AAAA,MACX;AAAA,MACA,YAAY;AAAA,IAChB,CAAC;AAAA;AAAA;;;ACznHD;AAAA;AAWA,QAAMM,MAAK,UAAQ,IAAI;AACvB,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAMC,UAAS,UAAQ,QAAQ;AAC/B,QAAM,KAAK,EAAE,IAAIH,IAAG,WAAW,IAAIC,IAAG,UAAU;AAKhD,QAEE,eAAe;AAFjB,QAIE,mBAAmB;AAJrB,QAME,gBAAgB;AANlB,QAQE,gBAAgB,GAAG,WAAW,GAAG,GAAG,YAAY,GAAG,UAAU,GAAG,GAAG,WAAW,GAAG,UAAU,GAAG,GAAG;AARnG,QAWE,WAAWA,IAAG,SAAS,MAAM;AAX/B,QAYE,QAAQ,GAAG,SAAS,GAAG,GAAG,MAAM;AAZlC,QAaE,SAAS,GAAG,UAAU,GAAG,GAAG,MAAM;AAbpC,QAeE,WAAW;AAfb,QAgBE,YAAY;AAhBd,QAkBE,OAAO;AAlBT,QAqBE,iBAAiB,CAAC;AArBpB,QAwBE,gBAAgBD,IAAG,UAAU,KAAKA,GAAE;AAEtC,QACE,mBAAmB;AASrB,aAAS,OAAO,SAAS,UAAU;AACjC,aAAOA,IAAG,GAAG,SAAS,EAAE,WAAW,KAAK,GAAG,QAAQ;AAAA,IACrD;AAQA,aAAS,eAAe,SAAS;AAC/B,aAAOA,IAAG,OAAO,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,IAC/C;AAQA,aAAS,QAAQ,SAAS,UAAU;AAClC,YACE,OAAO,gBAAgB,SAAS,QAAQ,GACxC,OAAO,KAAK,CAAC,GACb,KAAK,KAAK,CAAC;AAEb,UAAI;AACF,kCAA0B,IAAI;AAAA,MAChC,SAAS,KAAK;AACZ,eAAO,GAAG,GAAG;AAAA,MACf;AAEA,UAAI,QAAQ,KAAK;AACjB,OAAC,SAAS,iBAAiB;AACzB,YAAI;AACF,gBAAM,OAAO,iBAAiB,IAAI;AAGlC,UAAAA,IAAG,KAAK,MAAM,SAAU,KAAK;AAE3B,gBAAI,CAAC,KAAK;AAER,kBAAI,UAAU;AAAG,uBAAO,eAAe;AAEvC,qBAAO,GAAG,IAAI,MAAM,4DAA4D,IAAI,CAAC;AAAA,YACvF;AAEA,eAAG,MAAM,IAAI;AAAA,UACf,CAAC;AAAA,QACH,SAAS,KAAK;AACZ,aAAG,GAAG;AAAA,QACR;AAAA,MACF,GAAE;AAAA,IACJ;AASA,aAAS,YAAY,SAAS;AAC5B,YACE,OAAO,gBAAgB,OAAO,GAC9B,OAAO,KAAK,CAAC;AAEf,gCAA0B,IAAI;AAE9B,UAAI,QAAQ,KAAK;AACjB,SAAG;AACD,cAAM,OAAO,iBAAiB,IAAI;AAClC,YAAI;AACF,UAAAA,IAAG,SAAS,IAAI;AAAA,QAClB,SAAS,GAAG;AACV,iBAAO;AAAA,QACT;AAAA,MACF,SAAS,UAAU;AAEnB,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AAQA,aAAS,KAAK,SAAS,UAAU;AAC/B,YACE,OAAO,gBAAgB,SAAS,QAAQ,GACxC,OAAO,KAAK,CAAC,GACb,KAAK,KAAK,CAAC;AAGb,cAAQ,MAAM,SAAS,gBAAgB,KAAK,MAAM;AAEhD,YAAI;AAAK,iBAAO,GAAG,GAAG;AAGtB,QAAAA,IAAG,KAAK,MAAM,cAAc,KAAK,QAAQ,WAAW,SAAS,aAAaI,MAAK,IAAI;AAEjF,cAAIA;AAAK,mBAAO,GAAGA,IAAG;AAEtB,cAAI,KAAK,mBAAmB;AAC1B,mBAAOJ,IAAG,MAAM,IAAI,SAAS,iBAAiB,aAAa;AAEzD,qBAAO,GAAG,aAAa,MAAM,QAAW,8BAA8B,MAAM,IAAI,MAAM,KAAK,CAAC;AAAA,YAC9F,CAAC;AAAA,UACH,OAAO;AAGL,kBAAM,4BAA4B,KAAK,qBAAqB,KAAK;AACjE,eAAG,MAAM,MAAM,IAAI,8BAA8B,MAAM,4BAA4B,KAAK,IAAI,MAAM,KAAK,CAAC;AAAA,UAC1G;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AASA,aAAS,SAAS,SAAS;AACzB,YACE,OAAO,gBAAgB,OAAO,GAC9B,OAAO,KAAK,CAAC;AAEf,YAAM,4BAA4B,KAAK,qBAAqB,KAAK;AACjE,YAAM,OAAO,YAAY,IAAI;AAC7B,UAAI,KAAKA,IAAG,SAAS,MAAM,cAAc,KAAK,QAAQ,SAAS;AAE/D,UAAI,KAAK,mBAAmB;AAC1B,QAAAA,IAAG,UAAU,EAAE;AACf,aAAK;AAAA,MACP;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,gBAAgB,8BAA8B,MAAM,4BAA4B,KAAK,IAAI,MAAM,IAAI;AAAA,MACrG;AAAA,IACF;AAQA,aAAS,IAAI,SAAS,UAAU;AAC9B,YACE,OAAO,gBAAgB,SAAS,QAAQ,GACxC,OAAO,KAAK,CAAC,GACb,KAAK,KAAK,CAAC;AAGb,cAAQ,MAAM,SAAS,gBAAgB,KAAK,MAAM;AAEhD,YAAI;AAAK,iBAAO,GAAG,GAAG;AAGtB,QAAAA,IAAG,MAAM,MAAM,KAAK,QAAQ,UAAU,SAAS,YAAYI,MAAK;AAE9D,cAAIA;AAAK,mBAAO,GAAGA,IAAG;AAEtB,aAAG,MAAM,MAAM,6BAA6B,MAAM,MAAM,KAAK,CAAC;AAAA,QAChE,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AASA,aAAS,QAAQ,SAAS;AACxB,YACE,OAAO,gBAAgB,OAAO,GAC9B,OAAO,KAAK,CAAC;AAEf,YAAM,OAAO,YAAY,IAAI;AAC7B,MAAAJ,IAAG,UAAU,MAAM,KAAK,QAAQ,QAAQ;AAExC,aAAO;AAAA,QACL;AAAA,QACA,gBAAgB,6BAA6B,MAAM,MAAM,IAAI;AAAA,MAC/D;AAAA,IACF;AASA,aAAS,iBAAiB,QAAQ,MAAM;AACtC,YAAM,WAAW,SAAU,KAAK;AAC9B,YAAI,OAAO,CAAC,UAAU,GAAG,GAAG;AAE1B,iBAAO,KAAK,GAAG;AAAA,QACjB;AACA,aAAK;AAAA,MACP;AAEA,UAAI,KAAK,OAAO,CAAC;AACf,QAAAA,IAAG,MAAM,OAAO,CAAC,GAAG,WAAY;AAC9B,UAAAA,IAAG,OAAO,OAAO,CAAC,GAAG,QAAQ;AAAA,QAC/B,CAAC;AAAA;AACE,QAAAA,IAAG,OAAO,OAAO,CAAC,GAAG,QAAQ;AAAA,IACpC;AAQA,aAAS,gBAAgB,QAAQ;AAC/B,UAAI,oBAAoB;AACxB,UAAI;AACF,YAAI,KAAK,OAAO,CAAC;AAAG,UAAAA,IAAG,UAAU,OAAO,CAAC,CAAC;AAAA,MAC5C,SAAS,GAAG;AAEV,YAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;AAAG,gBAAM;AAAA,MAC3C,UAAE;AACA,YAAI;AACF,UAAAA,IAAG,WAAW,OAAO,CAAC,CAAC;AAAA,QACzB,SACO,GAAG;AAER,cAAI,CAAC,UAAU,CAAC;AAAG,gCAAoB;AAAA,QACzC;AAAA,MACF;AACA,UAAI,sBAAsB,MAAM;AAC9B,cAAM;AAAA,MACR;AAAA,IACF;AAeA,aAAS,8BAA8B,MAAM,IAAI,MAAM,MAAM;AAC3D,YAAM,qBAAqB,uBAAuB,iBAAiB,CAAC,IAAI,IAAI,GAAG,IAAI;AACnF,YAAM,iBAAiB,uBAAuB,kBAAkB,CAAC,IAAI,IAAI,GAAG,MAAM,kBAAkB;AAEpG,UAAI,CAAC,KAAK;AAAM,uBAAe,QAAQ,kBAAkB;AAEzD,aAAO,OAAO,qBAAqB;AAAA,IACrC;AAcA,aAAS,6BAA6B,MAAM,MAAM,MAAM;AACtD,YAAM,iBAAiB,KAAK,gBAAgB,SAASA,IAAG,MAAM,KAAKA,GAAE;AACrE,YAAM,qBAAqB,KAAK,gBAAgB,iBAAiB;AACjE,YAAM,qBAAqB,uBAAuB,oBAAoB,MAAM,IAAI;AAChF,YAAM,iBAAiB,uBAAuB,gBAAgB,MAAM,MAAM,kBAAkB;AAC5F,UAAI,CAAC,KAAK;AAAM,uBAAe,QAAQ,kBAAkB;AAEzD,aAAO,OAAO,qBAAqB;AAAA,IACrC;AAeA,aAAS,uBAAuB,gBAAgB,eAAe,MAAM,qBAAqB;AACxF,UAAI,SAAS;AAGb,aAAO,SAAS,iBAAiB,MAAM;AAGrC,YAAI,CAAC,QAAQ;AAEX,gBAAM,WAAW,uBAAuB;AACxC,gBAAM,QAAQ,eAAe,QAAQ,QAAQ;AAE7C,cAAI,SAAS;AAAG,2BAAe,OAAO,OAAO,CAAC;AAE9C,mBAAS;AACT,cAAI,QAAQ,mBAAmB,iBAAiB,mBAAmB,gBAAgB;AACjF,mBAAO,eAAe,aAAa;AAAA,UACrC,OAAO;AACL,mBAAO,eAAe,eAAe,QAAQ,WAAW;AAAA,YAAC,CAAC;AAAA,UAC5D;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAOA,aAAS,oBAAoB;AAE3B,UAAI,CAAC;AAAkB;AAIvB,aAAO,eAAe,QAAQ;AAC5B,YAAI;AACF,yBAAe,CAAC,EAAE;AAAA,QACpB,SAAS,GAAG;AAAA,QAEZ;AAAA,MACF;AAAA,IACF;AAUA,aAAS,aAAa,SAAS;AAC7B,UACE,QAAQ,CAAC,GACT,MAAM;AAGR,UAAI;AACF,cAAMG,QAAO,YAAY,OAAO;AAAA,MAClC,SAAS,GAAG;AACV,cAAMA,QAAO,kBAAkB,OAAO;AAAA,MACxC;AAEA,eAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAChC,cAAM,KAAK,aAAa,IAAI,CAAC,IAAI,aAAa,MAAM,CAAC;AAAA,MACvD;AAEA,aAAO,MAAM,KAAK,EAAE;AAAA,IACtB;AASA,aAAS,SAAS,GAAG;AACnB,aAAO,MAAM,QAAQ,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK;AAAA,IAClD;AASA,aAAS,aAAa,KAAK;AACzB,aAAO,OAAO,QAAQ;AAAA,IACxB;AAYA,aAAS,gBAAgB,SAAS,UAAU;AAE1C,UAAI,OAAO,YAAY,YAAY;AACjC,eAAO,CAAC,CAAC,GAAG,OAAO;AAAA,MACrB;AAGA,UAAI,aAAa,OAAO,GAAG;AACzB,eAAO,CAAC,CAAC,GAAG,QAAQ;AAAA,MACtB;AAGA,YAAM,gBAAgB,CAAC;AACvB,iBAAW,OAAO,OAAO,oBAAoB,OAAO,GAAG;AACrD,sBAAc,GAAG,IAAI,QAAQ,GAAG;AAAA,MAClC;AAEA,aAAO,CAAC,eAAe,QAAQ;AAAA,IACjC;AASA,aAAS,iBAAiB,MAAM;AAE9B,YAAM,SAAS,KAAK;AAGpB,UAAI,CAAC,aAAa,KAAK,IAAI;AACzB,eAAOD,MAAK,KAAK,QAAQ,KAAK,KAAK,KAAK,IAAI;AAG9C,UAAI,CAAC,aAAa,KAAK,QAAQ;AAC7B,eAAOA,MAAK,KAAK,QAAQ,KAAK,KAAK,KAAK,QAAQ,EAAE,QAAQ,kBAAkB,aAAa,CAAC,CAAC;AAG7F,YAAM,OAAO;AAAA,QACX,KAAK,SAAS,KAAK,SAAS;AAAA,QAC5B;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,QACA,aAAa,EAAE;AAAA,QACf,KAAK,UAAU,MAAM,KAAK,UAAU;AAAA,MACtC,EAAE,KAAK,EAAE;AAET,aAAOA,MAAK,KAAK,QAAQ,KAAK,KAAK,IAAI;AAAA,IACzC;AASA,aAAS,0BAA0B,SAAS;AAE1C,cAAQ,SAAS,WAAW,OAAO;AAEnC,YAAM,SAAS,QAAQ;AAGvB,UAAI,CAAC,aAAa,QAAQ,IAAI;AAC5B,0BAAkB,QAAQ,MAAM,QAAQ,MAAM;AAEhD,UAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,0BAAkB,QAAQ,KAAK,OAAO,MAAM;AAE9C,UAAI,CAAC,aAAa,QAAQ,QAAQ,GAAG;AACnC,0BAAkB,QAAQ,UAAU,YAAY,MAAM;AACtD,YAAI,CAAC,QAAQ,SAAS,MAAM,gBAAgB;AAC1C,gBAAM,IAAI,MAAM,4BAA4B,QAAQ,QAAQ,IAAI;AAAA,MACpE;AAEA,UAAI,CAAC,aAAa,QAAQ,KAAK,KAAK,MAAM,QAAQ,KAAK,KAAK,QAAQ,QAAQ;AAC1E,cAAM,IAAI,MAAM,yBAAyB,QAAQ,KAAK,IAAI;AAG5D,cAAQ,QAAQ,aAAa,QAAQ,IAAI,IAAI,QAAQ,SAAS,gBAAgB;AAC9E,cAAQ,OAAO,CAAC,CAAC,QAAQ;AACzB,cAAQ,mBAAmB,CAAC,CAAC,QAAQ;AACrC,cAAQ,oBAAoB,CAAC,CAAC,QAAQ;AACtC,cAAQ,gBAAgB,CAAC,CAAC,QAAQ;AAGlC,cAAQ,MAAM,aAAa,QAAQ,GAAG,IAAI,KAAKA,MAAK,SAAS,QAAQ,aAAa,QAAQ,KAAK,MAAM,CAAC;AACtG,cAAQ,WAAW,aAAa,QAAQ,QAAQ,IAAI,SAAYA,MAAK,SAAS,QAAQ,aAAa,QAAQ,UAAU,MAAM,CAAC;AAE5H,cAAQ,WAAW,SAAS,QAAQ,QAAQ,IAAI,SAAYA,MAAK,SAAS,QAAQ,KAAK,QAAQ,QAAQ;AAGvG,cAAQ,OAAO,aAAa,QAAQ,IAAI,IAAI,SAAY,QAAQ;AAChE,cAAQ,SAAS,aAAa,QAAQ,MAAM,IAAI,KAAK,QAAQ;AAC7D,cAAQ,UAAU,aAAa,QAAQ,OAAO,IAAI,KAAK,QAAQ;AAAA,IACjE;AAaA,aAAS,aAAa,MAAM,QAAQ;AAClC,UAAI,KAAK,WAAW,MAAM,GAAG;AAC3B,eAAOA,MAAK,QAAQ,IAAI;AAAA,MAC1B,OAAO;AACL,eAAOA,MAAK,QAAQA,MAAK,KAAK,QAAQ,IAAI,CAAC;AAAA,MAC7C;AAAA,IACF;AAWA,aAAS,kBAAkB,MAAM,QAAQ,QAAQ;AAC/C,UAAI,WAAW,QAAQ;AAErB,YAAIA,MAAK,WAAW,IAAI;AACtB,gBAAM,IAAI,MAAM,GAAG,MAAM,qDAAqD,IAAI,IAAI;AAExF,YAAI,WAAWA,MAAK,SAAS,IAAI;AACjC,YAAI,aAAa,QAAQ,aAAa,OAAO,aAAa;AACxD,gBAAM,IAAI,MAAM,GAAG,MAAM,2CAA2C,IAAI,IAAI;AAAA,MAChF,OACK;AAEH,YAAIA,MAAK,WAAW,IAAI,KAAK,CAAC,KAAK,WAAW,MAAM,GAAG;AACrD,gBAAM,IAAI,MAAM,GAAG,MAAM,gCAAgC,MAAM,aAAa,IAAI,IAAI;AAAA,QACtF;AACA,YAAI,eAAe,aAAa,MAAM,MAAM;AAC5C,YAAI,CAAC,aAAa,WAAW,MAAM;AACjC,gBAAM,IAAI,MAAM,GAAG,MAAM,gCAAgC,MAAM,aAAa,YAAY,IAAI;AAAA,MAChG;AAAA,IACF;AAOA,aAAS,SAAS,OAAO;AACvB,aAAO,iBAAiB,OAAO,CAAC,OAAO,OAAO;AAAA,IAChD;AAOA,aAAS,UAAU,OAAO;AACxB,aAAO,iBAAiB,OAAO,CAAC,QAAQ,QAAQ;AAAA,IAClD;AAoBA,aAAS,iBAAiB,OAAO,OAAO,MAAM;AAC5C,aAAO,WAAW,MAAM,SAAS,OAAO,MAAM,SAAS,QAAQ,MAAM,UAAU;AAAA,IACjF;AASA,aAAS,qBAAqB;AAC5B,yBAAmB;AAAA,IACrB;AASA,aAAS,WAAW,SAAS;AAC3B,aAAOA,MAAK,QAAQ,WAAW,QAAQ,UAAUD,IAAG,OAAO,CAAC;AAAA,IAC9D;AAGA,YAAQ,YAAY,MAAM,iBAAiB;AA6F3C,WAAO,eAAe,OAAO,SAAS,UAAU;AAAA,MAC9C,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,KAAK,WAAY;AACf,eAAO,WAAW;AAAA,MACpB;AAAA,IACF,CAAC;AAED,WAAO,QAAQ,MAAM;AACrB,WAAO,QAAQ,UAAU;AAEzB,WAAO,QAAQ,OAAO;AACtB,WAAO,QAAQ,WAAW;AAE1B,WAAO,QAAQ,UAAU;AACzB,WAAO,QAAQ,cAAc;AAE7B,WAAO,QAAQ,qBAAqB;AAAA;AAAA;;;AC/wBpC;AAAA;AAAA;AAIA,QAAM,SAAS,oBAAI,IAAI;AAAA,MACrB,CAAC,KAAK,KAAK;AAAA,MACX,CAAC,KAAK,MAAM;AAAA,MACZ,CAAC,KAAK,MAAM;AAAA,MACZ,CAAC,KAAK,eAAe;AAAA,MACrB,CAAC,KAAK,QAAQ;AAAA,MACd,CAAC,oBAAoB,OAAO;AAAA,MAC5B,CAAC,mBAAmB,OAAO;AAAA,MAC3B,CAAC,cAAc,OAAO;AAAA,MACtB,CAAC,aAAa,OAAO;AAAA,MACrB,CAAC,oBAAoB,OAAO;AAAA,MAC5B,CAAC,kBAAkB,OAAO;AAAA,MAC1B,CAAC,KAAK,MAAM;AAAA,MACZ,CAAC,iBAAiB,MAAM;AAAA,MACxB,CAAC,gBAAgB,MAAM;AAAA,MACvB,CAAC,KAAK,SAAS;AAAA,MACf,CAAC,YAAY,SAAS;AAAA,MACtB,CAAC,KAAK,eAAe;AAAA,MACrB,CAAC,KAAK,QAAQ;AAAA,MACd,CAAC,KAAK,QAAQ;AAAA,IAChB,CAAC;AAED,WAAO,UAAU,SAAO,MAAM,OAAO,KAAK,GAAG,EAAE,IAAI,OAAK;AAAA,MACtD,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI;AAAA,MAAG,IAAI,CAAC;AAAA,IAC1C,CAAC,EAAE,OAAO,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,MAAM,uBAAO,OAAO,IAAI,CAAC,IAAI,CAAC;AAAA;AAAA;;;AC5B1E;AAAA;AAAA;AACA,QAAM,OACJ,OAAO,YAAY,YAAY,UAC3B,UACA;AAAA,MACE,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AACN,QAAM,KAAK,UAAQ,QAAQ;AAC3B,QAAM,SAAS,UAAQ,QAAQ;AAC/B,QAAM,gBAAgB,UAAQ,gBAAgB;AAC9C,QAAM,KAAK,cAAc;AAEzB,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,iBAAiB,OAAO,cAAc;AAC5C,QAAM,cAAc,OAAO,YAAY;AACvC,QAAM,eAAe,OAAO,aAAa;AACzC,QAAM,gBAAgB,OAAO,cAAc;AAC3C,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,aAAa,OAAO,YAAY;AAEtC,QAAM,YAAY,OAAO,WAAW;AAEpC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,SAAS,OAAO,QAAQ;AAE9B,QAAM,QAAQ,QAAM,QAAQ,QAAQ,EAAE,KAAK,EAAE;AAG7C,QAAM,SAAS,OAAO,6BAA6B;AACnD,QAAM,gBACH,UAAU,OAAO,iBAAkB,OAAO,+BAA+B;AAC5E,QAAM,WACH,UAAU,OAAO,YAAa,OAAO,0BAA0B;AAKlE,QAAM,WAAW,QAAM,OAAO,SAAS,OAAO,YAAY,OAAO;AAEjE,QAAM,gBAAgB,OACpB,aAAa,eACZ,OAAO,MAAM,YACZ,EAAE,eACF,EAAE,YAAY,SAAS,iBACvB,EAAE,cAAc;AAEpB,QAAM,oBAAoB,OAAK,CAAC,OAAO,SAAS,CAAC,KAAK,YAAY,OAAO,CAAC;AAE1E,QAAM,OAAN,MAAW;AAAA,MACT,YAAY,KAAK,MAAM,MAAM;AAC3B,aAAK,MAAM;AACX,aAAK,OAAO;AACZ,aAAK,OAAO;AACZ,aAAK,UAAU,MAAM,IAAI,MAAM,EAAE;AACjC,aAAK,GAAG,SAAS,KAAK,OAAO;AAAA,MAC/B;AAAA,MACA,SAAS;AACP,aAAK,KAAK,eAAe,SAAS,KAAK,OAAO;AAAA,MAChD;AAAA;AAAA,MAEA,cAAc;AAAA,MAAC;AAAA,MACf,MAAM;AACJ,aAAK,OAAO;AACZ,YAAI,KAAK,KAAK;AAAK,eAAK,KAAK,IAAI;AAAA,MACnC;AAAA,IACF;AAEA,QAAM,kBAAN,cAA8B,KAAK;AAAA,MACjC,SAAS;AACP,aAAK,IAAI,eAAe,SAAS,KAAK,WAAW;AACjD,cAAM,OAAO;AAAA,MACf;AAAA,MACA,YAAY,KAAK,MAAM,MAAM;AAC3B,cAAM,KAAK,MAAM,IAAI;AACrB,aAAK,cAAc,QAAM,KAAK,KAAK,SAAS,EAAE;AAC9C,YAAI,GAAG,SAAS,KAAK,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,QAAM,WAAN,MAAM,kBAAiB,OAAO;AAAA,MAC5B,YAAY,SAAS;AACnB,cAAM;AACN,aAAK,OAAO,IAAI;AAEhB,aAAK,MAAM,IAAI;AACf,aAAK,KAAK,IAAI,CAAC;AACf,aAAK,MAAM,IAAI,CAAC;AAChB,aAAK,UAAU,IAAK,WAAW,QAAQ,cAAe;AACtD,YAAI,KAAK,UAAU;AAAG,eAAK,QAAQ,IAAI;AAAA;AAClC,eAAK,QAAQ,IAAK,WAAW,QAAQ,YAAa;AACvD,YAAI,KAAK,QAAQ,MAAM;AAAU,eAAK,QAAQ,IAAI;AAClD,aAAK,KAAK,IAAK,WAAW,CAAC,CAAC,QAAQ,SAAU;AAC9C,aAAK,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,KAAK,QAAQ,CAAC,IAAI;AAC1D,aAAK,GAAG,IAAI;AACZ,aAAK,WAAW,IAAI;AACpB,aAAK,YAAY,IAAI;AACrB,aAAK,MAAM,IAAI;AACf,aAAK,aAAa,IAAI;AACtB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,YAAY,IAAI;AACrB,aAAK,SAAS,IAAI;AAClB,YAAI,WAAW,QAAQ,sBAAsB,MAAM;AACjD,iBAAO,eAAe,MAAM,UAAU,EAAE,KAAK,MAAM,KAAK,MAAM,EAAE,CAAC;AAAA,QACnE;AACA,YAAI,WAAW,QAAQ,qBAAqB,MAAM;AAChD,iBAAO,eAAe,MAAM,SAAS,EAAE,KAAK,MAAM,KAAK,KAAK,EAAE,CAAC;AAAA,QACjE;AACA,aAAK,MAAM,IAAI,WAAW,QAAQ;AAClC,aAAK,OAAO,IAAI;AAChB,YAAI,KAAK,MAAM,GAAG;AAChB,eAAK,MAAM,EAAE,iBAAiB,SAAS,MAAM,KAAK,KAAK,EAAE,CAAC;AAC1D,cAAI,KAAK,MAAM,EAAE,SAAS;AACxB,iBAAK,KAAK,EAAE;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,eAAe;AACjB,eAAO,KAAK,YAAY;AAAA,MAC1B;AAAA,MAEA,IAAI,WAAW;AACb,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,MACA,IAAI,SAAS,KAAK;AAChB,YAAI,KAAK,UAAU;AAAG,gBAAM,IAAI,MAAM,mCAAmC;AAEzE,YACE,KAAK,QAAQ,KACb,QAAQ,KAAK,QAAQ,MACnB,KAAK,OAAO,KAAK,KAAK,OAAO,EAAE,YAAa,KAAK,YAAY;AAE/D,gBAAM,IAAI,MAAM,wBAAwB;AAE1C,YAAI,KAAK,QAAQ,MAAM,KAAK;AAC1B,eAAK,OAAO,IAAI,MAAM,IAAI,GAAG,GAAG,IAAI;AACpC,cAAI,KAAK,MAAM,EAAE;AACf,iBAAK,MAAM,IAAI,KAAK,MAAM,EAAE,IAAI,WAAS,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAAA,QACvE;AAEA,aAAK,QAAQ,IAAI;AAAA,MACnB;AAAA,MAEA,YAAY,KAAK;AACf,aAAK,WAAW;AAAA,MAClB;AAAA,MAEA,IAAI,aAAa;AACf,eAAO,KAAK,UAAU;AAAA,MACxB;AAAA,MACA,IAAI,WAAW,IAAI;AACjB,aAAK,UAAU,IAAI,KAAK,UAAU,KAAK,CAAC,CAAC;AAAA,MAC3C;AAAA,MAEA,KAAK,OAAO,IAAI;AACd,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,MACA,KAAK,OAAO,EAAE,GAAG;AACf,aAAK,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC;AAAA,MACjC;AAAA;AAAA,MAGA,CAAC,KAAK,IAAI;AACR,aAAK,OAAO,IAAI;AAChB,aAAK,KAAK,SAAS,KAAK,MAAM,EAAE,MAAM;AACtC,aAAK,QAAQ,KAAK,MAAM,EAAE,MAAM;AAAA,MAClC;AAAA,MAEA,IAAI,UAAU;AACZ,eAAO,KAAK,OAAO;AAAA,MACrB;AAAA,MACA,IAAI,QAAQ,GAAG;AAAA,MAAC;AAAA,MAEhB,MAAM,OAAO,UAAU,IAAI;AACzB,YAAI,KAAK,OAAO;AAAG,iBAAO;AAC1B,YAAI,KAAK,GAAG;AAAG,gBAAM,IAAI,MAAM,iBAAiB;AAEhD,YAAI,KAAK,SAAS,GAAG;AACnB,eAAK;AAAA,YACH;AAAA,YACA,OAAO;AAAA,cACL,IAAI,MAAM,gDAAgD;AAAA,cAC1D,EAAE,MAAM,uBAAuB;AAAA,YACjC;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,aAAa;AAAY,UAAC,KAAK,UAAY,WAAW;AAEjE,YAAI,CAAC;AAAU,qBAAW;AAE1B,cAAM,KAAK,KAAK,KAAK,IAAI,QAAQ,OAAK,EAAE;AAMxC,YAAI,CAAC,KAAK,UAAU,KAAK,CAAC,OAAO,SAAS,KAAK,GAAG;AAChD,cAAI,kBAAkB,KAAK;AACzB,oBAAQ,OAAO,KAAK,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,mBAC7D,cAAc,KAAK;AAAG,oBAAQ,OAAO,KAAK,KAAK;AAAA,mBAC/C,OAAO,UAAU;AAExB,iBAAK,aAAa;AAAA,QACtB;AAIA,YAAI,KAAK,UAAU,GAAG;AAEpB,cAAI,KAAK,WAAW,KAAK,YAAY,MAAM;AAAG,iBAAK,KAAK,EAAE,IAAI;AAE9D,cAAI,KAAK;AAAS,iBAAK,KAAK,QAAQ,KAAK;AAAA;AACpC,iBAAK,UAAU,EAAE,KAAK;AAE3B,cAAI,KAAK,YAAY,MAAM;AAAG,iBAAK,KAAK,UAAU;AAElD,cAAI;AAAI,eAAG,EAAE;AAEb,iBAAO,KAAK;AAAA,QACd;AAIA,YAAI,CAAC,MAAM,QAAQ;AACjB,cAAI,KAAK,YAAY,MAAM;AAAG,iBAAK,KAAK,UAAU;AAClD,cAAI;AAAI,eAAG,EAAE;AACb,iBAAO,KAAK;AAAA,QACd;AAIA,YACE,OAAO,UAAU;AAAA,QAEjB,EAAE,aAAa,KAAK,QAAQ,KAAK,CAAC,KAAK,OAAO,EAAE,WAChD;AACA,kBAAQ,OAAO,KAAK,OAAO,QAAQ;AAAA,QACrC;AAEA,YAAI,OAAO,SAAS,KAAK,KAAK,KAAK,QAAQ;AACzC,kBAAQ,KAAK,OAAO,EAAE,MAAM,KAAK;AAGnC,YAAI,KAAK,WAAW,KAAK,YAAY,MAAM;AAAG,eAAK,KAAK,EAAE,IAAI;AAE9D,YAAI,KAAK;AAAS,eAAK,KAAK,QAAQ,KAAK;AAAA;AACpC,eAAK,UAAU,EAAE,KAAK;AAE3B,YAAI,KAAK,YAAY,MAAM;AAAG,eAAK,KAAK,UAAU;AAElD,YAAI;AAAI,aAAG,EAAE;AAEb,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,KAAK,GAAG;AACN,YAAI,KAAK,SAAS;AAAG,iBAAO;AAE5B,YAAI,KAAK,YAAY,MAAM,KAAK,MAAM,KAAK,IAAI,KAAK,YAAY,GAAG;AACjE,eAAK,cAAc,EAAE;AACrB,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,UAAU;AAAG,cAAI;AAE1B,YAAI,KAAK,MAAM,EAAE,SAAS,KAAK,CAAC,KAAK,UAAU,GAAG;AAChD,cAAI,KAAK;AAAU,iBAAK,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,KAAK,EAAE,CAAC;AAAA;AACnD,iBAAK,MAAM,IAAI,CAAC,OAAO,OAAO,KAAK,MAAM,GAAG,KAAK,YAAY,CAAC,CAAC;AAAA,QACtE;AAEA,cAAM,MAAM,KAAK,IAAI,EAAE,KAAK,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;AACjD,aAAK,cAAc,EAAE;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,IAAI,EAAE,GAAG,OAAO;AACf,YAAI,MAAM,MAAM,UAAU,MAAM;AAAM,eAAK,WAAW,EAAE;AAAA,aACnD;AACH,eAAK,MAAM,EAAE,CAAC,IAAI,MAAM,MAAM,CAAC;AAC/B,kBAAQ,MAAM,MAAM,GAAG,CAAC;AACxB,eAAK,YAAY,KAAK;AAAA,QACxB;AAEA,aAAK,KAAK,QAAQ,KAAK;AAEvB,YAAI,CAAC,KAAK,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG;AAAG,eAAK,KAAK,OAAO;AAEzD,eAAO;AAAA,MACT;AAAA,MAEA,IAAI,OAAO,UAAU,IAAI;AACvB,YAAI,OAAO,UAAU;AAAY,UAAC,KAAK,OAAS,QAAQ;AACxD,YAAI,OAAO,aAAa;AAAY,UAAC,KAAK,UAAY,WAAW;AACjE,YAAI;AAAO,eAAK,MAAM,OAAO,QAAQ;AACrC,YAAI;AAAI,eAAK,KAAK,OAAO,EAAE;AAC3B,aAAK,GAAG,IAAI;AACZ,aAAK,WAAW;AAMhB,YAAI,KAAK,WAAW,CAAC,KAAK,MAAM;AAAG,eAAK,cAAc,EAAE;AACxD,eAAO;AAAA,MACT;AAAA;AAAA,MAGA,CAAC,MAAM,IAAI;AACT,YAAI,KAAK,SAAS;AAAG;AAErB,aAAK,MAAM,IAAI;AACf,aAAK,OAAO,IAAI;AAChB,aAAK,KAAK,QAAQ;AAClB,YAAI,KAAK,MAAM,EAAE;AAAQ,eAAK,KAAK,EAAE;AAAA,iBAC5B,KAAK,GAAG;AAAG,eAAK,cAAc,EAAE;AAAA;AACpC,eAAK,KAAK,OAAO;AAAA,MACxB;AAAA,MAEA,SAAS;AACP,eAAO,KAAK,MAAM,EAAE;AAAA,MACtB;AAAA,MAEA,QAAQ;AACN,aAAK,OAAO,IAAI;AAChB,aAAK,MAAM,IAAI;AAAA,MACjB;AAAA,MAEA,IAAI,YAAY;AACd,eAAO,KAAK,SAAS;AAAA,MACvB;AAAA,MAEA,IAAI,UAAU;AACZ,eAAO,KAAK,OAAO;AAAA,MACrB;AAAA,MAEA,IAAI,SAAS;AACX,eAAO,KAAK,MAAM;AAAA,MACpB;AAAA,MAEA,CAAC,UAAU,EAAE,OAAO;AAClB,YAAI,KAAK,UAAU;AAAG,eAAK,YAAY,KAAK;AAAA;AACvC,eAAK,YAAY,KAAK,MAAM;AACjC,aAAK,MAAM,EAAE,KAAK,KAAK;AAAA,MACzB;AAAA,MAEA,CAAC,WAAW,IAAI;AACd,YAAI,KAAK,UAAU;AAAG,eAAK,YAAY,KAAK;AAAA;AACvC,eAAK,YAAY,KAAK,KAAK,MAAM,EAAE,CAAC,EAAE;AAC3C,eAAO,KAAK,MAAM,EAAE,MAAM;AAAA,MAC5B;AAAA,MAEA,CAAC,KAAK,EAAE,SAAS;AACf,WAAG;AAAA,QAAC,SAAS,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,CAAC,KAAK,KAAK,MAAM,EAAE;AAEnE,YAAI,CAAC,WAAW,CAAC,KAAK,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG;AAAG,eAAK,KAAK,OAAO;AAAA,MACvE;AAAA,MAEA,CAAC,UAAU,EAAE,OAAO;AAClB,aAAK,KAAK,QAAQ,KAAK;AACvB,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,KAAK,MAAM,MAAM;AACf,YAAI,KAAK,SAAS;AAAG;AAErB,cAAM,QAAQ,KAAK,WAAW;AAC9B,eAAO,QAAQ,CAAC;AAChB,YAAI,SAAS,KAAK,UAAU,SAAS,KAAK;AAAQ,eAAK,MAAM;AAAA;AACxD,eAAK,MAAM,KAAK,QAAQ;AAC7B,aAAK,cAAc,CAAC,CAAC,KAAK;AAG1B,YAAI,OAAO;AACT,cAAI,KAAK;AAAK,iBAAK,IAAI;AAAA,QACzB,OAAO;AACL,eAAK,KAAK,EAAE;AAAA,YACV,CAAC,KAAK,cACF,IAAI,KAAK,MAAM,MAAM,IAAI,IACzB,IAAI,gBAAgB,MAAM,MAAM,IAAI;AAAA,UAC1C;AACA,cAAI,KAAK,KAAK;AAAG,kBAAM,MAAM,KAAK,MAAM,EAAE,CAAC;AAAA;AACtC,iBAAK,MAAM,EAAE;AAAA,QACpB;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,OAAO,MAAM;AACX,cAAM,IAAI,KAAK,KAAK,EAAE,KAAK,CAAAI,OAAKA,GAAE,SAAS,IAAI;AAC/C,YAAI,GAAG;AACL,eAAK,KAAK,EAAE,OAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;AAC5C,YAAE,OAAO;AAAA,QACX;AAAA,MACF;AAAA,MAEA,YAAY,IAAI,IAAI;AAClB,eAAO,KAAK,GAAG,IAAI,EAAE;AAAA,MACvB;AAAA,MAEA,GAAG,IAAI,IAAI;AACT,cAAM,MAAM,MAAM,GAAG,IAAI,EAAE;AAC3B,YAAI,OAAO,UAAU,CAAC,KAAK,KAAK,EAAE,UAAU,CAAC,KAAK;AAAS,eAAK,MAAM,EAAE;AAAA,iBAC/D,OAAO,cAAc,KAAK,YAAY,MAAM;AACnD,gBAAM,KAAK,UAAU;AAAA,iBACd,SAAS,EAAE,KAAK,KAAK,WAAW,GAAG;AAC1C,gBAAM,KAAK,EAAE;AACb,eAAK,mBAAmB,EAAE;AAAA,QAC5B,WAAW,OAAO,WAAW,KAAK,aAAa,GAAG;AAChD,cAAI,KAAK,KAAK;AAAG,kBAAM,MAAM,GAAG,KAAK,MAAM,KAAK,aAAa,CAAC,CAAC;AAAA;AAC1D,eAAG,KAAK,MAAM,KAAK,aAAa,CAAC;AAAA,QACxC;AACA,eAAO;AAAA,MACT;AAAA,MAEA,IAAI,aAAa;AACf,eAAO,KAAK,WAAW;AAAA,MACzB;AAAA,MAEA,CAAC,cAAc,IAAI;AACjB,YACE,CAAC,KAAK,YAAY,KAClB,CAAC,KAAK,WAAW,KACjB,CAAC,KAAK,SAAS,KACf,KAAK,MAAM,EAAE,WAAW,KACxB,KAAK,GAAG,GACR;AACA,eAAK,YAAY,IAAI;AACrB,eAAK,KAAK,KAAK;AACf,eAAK,KAAK,WAAW;AACrB,eAAK,KAAK,QAAQ;AAClB,cAAI,KAAK,MAAM;AAAG,iBAAK,KAAK,OAAO;AACnC,eAAK,YAAY,IAAI;AAAA,QACvB;AAAA,MACF;AAAA,MAEA,KAAK,IAAI,SAAS,OAAO;AAEvB,YAAI,OAAO,WAAW,OAAO,WAAW,OAAO,aAAa,KAAK,SAAS;AACxE;AAAA,iBACO,OAAO,QAAQ;AACtB,iBAAO,CAAC,KAAK,UAAU,KAAK,CAAC,OACzB,QACA,KAAK,KAAK,IACV,MAAM,MAAM,KAAK,QAAQ,EAAE,IAAI,CAAC,IAChC,KAAK,QAAQ,EAAE,IAAI;AAAA,QACzB,WAAW,OAAO,OAAO;AACvB,iBAAO,KAAK,OAAO,EAAE;AAAA,QACvB,WAAW,OAAO,SAAS;AACzB,eAAK,MAAM,IAAI;AAEf,cAAI,CAAC,KAAK,WAAW,KAAK,CAAC,KAAK,SAAS;AAAG;AAC5C,gBAAMC,OAAM,MAAM,KAAK,OAAO;AAC9B,eAAK,mBAAmB,OAAO;AAC/B,iBAAOA;AAAA,QACT,WAAW,OAAO,SAAS;AACzB,eAAK,aAAa,IAAI;AACtB,gBAAM,KAAK,OAAO,IAAI;AACtB,gBAAMA,OACJ,CAAC,KAAK,MAAM,KAAK,KAAK,UAAU,OAAO,EAAE,SACrC,MAAM,KAAK,SAAS,IAAI,IACxB;AACN,eAAK,cAAc,EAAE;AACrB,iBAAOA;AAAA,QACT,WAAW,OAAO,UAAU;AAC1B,gBAAMA,OAAM,MAAM,KAAK,QAAQ;AAC/B,eAAK,cAAc,EAAE;AACrB,iBAAOA;AAAA,QACT,WAAW,OAAO,YAAY,OAAO,aAAa;AAChD,gBAAMA,OAAM,MAAM,KAAK,EAAE;AACzB,eAAK,mBAAmB,EAAE;AAC1B,iBAAOA;AAAA,QACT;AAGA,cAAM,MAAM,MAAM,KAAK,IAAI,MAAM,GAAG,KAAK;AACzC,aAAK,cAAc,EAAE;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,QAAQ,EAAE,MAAM;AACf,mBAAW,KAAK,KAAK,KAAK,GAAG;AAC3B,cAAI,EAAE,KAAK,MAAM,IAAI,MAAM;AAAO,iBAAK,MAAM;AAAA,QAC/C;AACA,cAAM,MAAM,MAAM,KAAK,QAAQ,IAAI;AACnC,aAAK,cAAc,EAAE;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,OAAO,IAAI;AACV,YAAI,KAAK,WAAW;AAAG;AAEvB,aAAK,WAAW,IAAI;AACpB,aAAK,WAAW;AAChB,YAAI,KAAK,KAAK;AAAG,gBAAM,MAAM,KAAK,QAAQ,EAAE,CAAC;AAAA;AACxC,eAAK,QAAQ,EAAE;AAAA,MACtB;AAAA,MAEA,CAAC,QAAQ,IAAI;AACX,YAAI,KAAK,OAAO,GAAG;AACjB,gBAAM,OAAO,KAAK,OAAO,EAAE,IAAI;AAC/B,cAAI,MAAM;AACR,uBAAW,KAAK,KAAK,KAAK,GAAG;AAC3B,gBAAE,KAAK,MAAM,IAAI;AAAA,YACnB;AACA,kBAAM,KAAK,QAAQ,IAAI;AAAA,UACzB;AAAA,QACF;AAEA,mBAAW,KAAK,KAAK,KAAK,GAAG;AAC3B,YAAE,IAAI;AAAA,QACR;AACA,cAAM,MAAM,MAAM,KAAK,KAAK;AAC5B,aAAK,mBAAmB,KAAK;AAC7B,eAAO;AAAA,MACT;AAAA;AAAA,MAGA,UAAU;AACR,cAAM,MAAM,CAAC;AACb,YAAI,CAAC,KAAK,UAAU;AAAG,cAAI,aAAa;AAGxC,cAAM,IAAI,KAAK,QAAQ;AACvB,aAAK,GAAG,QAAQ,OAAK;AACnB,cAAI,KAAK,CAAC;AACV,cAAI,CAAC,KAAK,UAAU;AAAG,gBAAI,cAAc,EAAE;AAAA,QAC7C,CAAC;AACD,eAAO,EAAE,KAAK,MAAM,GAAG;AAAA,MACzB;AAAA;AAAA,MAGA,SAAS;AACP,eAAO,KAAK,UAAU,IAClB,QAAQ,OAAO,IAAI,MAAM,6BAA6B,CAAC,IACvD,KAAK,QAAQ,EAAE;AAAA,UAAK,SAClB,KAAK,UAAU,IACX,QAAQ,OAAO,IAAI,MAAM,6BAA6B,CAAC,IACvD,KAAK,QAAQ,IACb,IAAI,KAAK,EAAE,IACX,OAAO,OAAO,KAAK,IAAI,UAAU;AAAA,QACvC;AAAA,MACN;AAAA;AAAA,MAGA,UAAU;AACR,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,eAAK,GAAG,WAAW,MAAM,OAAO,IAAI,MAAM,kBAAkB,CAAC,CAAC;AAC9D,eAAK,GAAG,SAAS,QAAM,OAAO,EAAE,CAAC;AACjC,eAAK,GAAG,OAAO,MAAM,QAAQ,CAAC;AAAA,QAChC,CAAC;AAAA,MACH;AAAA;AAAA,MAGA,CAAC,aAAa,IAAI;AAChB,YAAI,UAAU;AACd,cAAM,OAAO,MAAM;AACjB,eAAK,MAAM;AACX,oBAAU;AACV,iBAAO,QAAQ,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,QACvC;AACA,cAAM,OAAO,MAAM;AACjB,cAAI;AAAS,mBAAO,KAAK;AACzB,gBAAM,MAAM,KAAK,KAAK;AACtB,cAAI,QAAQ;AAAM,mBAAO,QAAQ,QAAQ,EAAE,MAAM,OAAO,OAAO,IAAI,CAAC;AAEpE,cAAI,KAAK,GAAG;AAAG,mBAAO,KAAK;AAE3B,cAAI,UAAU;AACd,cAAI,SAAS;AACb,gBAAM,QAAQ,QAAM;AAClB,iBAAK,eAAe,QAAQ,MAAM;AAClC,iBAAK,eAAe,OAAO,KAAK;AAChC,iBAAK,eAAe,WAAW,SAAS;AACxC,iBAAK;AACL,mBAAO,EAAE;AAAA,UACX;AACA,gBAAM,SAAS,WAAS;AACtB,iBAAK,eAAe,SAAS,KAAK;AAClC,iBAAK,eAAe,OAAO,KAAK;AAChC,iBAAK,eAAe,WAAW,SAAS;AACxC,iBAAK,MAAM;AACX,oBAAQ,EAAE,OAAc,MAAM,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AAAA,UAC7C;AACA,gBAAM,QAAQ,MAAM;AAClB,iBAAK,eAAe,SAAS,KAAK;AAClC,iBAAK,eAAe,QAAQ,MAAM;AAClC,iBAAK,eAAe,WAAW,SAAS;AACxC,iBAAK;AACL,oBAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,UACxB;AACA,gBAAM,YAAY,MAAM,MAAM,IAAI,MAAM,kBAAkB,CAAC;AAC3D,iBAAO,IAAI,QAAQ,CAACC,MAAK,QAAQ;AAC/B,qBAAS;AACT,sBAAUA;AACV,iBAAK,KAAK,WAAW,SAAS;AAC9B,iBAAK,KAAK,SAAS,KAAK;AACxB,iBAAK,KAAK,OAAO,KAAK;AACtB,iBAAK,KAAK,QAAQ,MAAM;AAAA,UAC1B,CAAC;AAAA,QACH;AAEA,eAAO;AAAA,UACL;AAAA,UACA,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,CAAC,aAAa,IAAI;AAChB,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA;AAAA,MAGA,CAAC,QAAQ,IAAI;AACX,YAAI,UAAU;AACd,cAAM,OAAO,MAAM;AACjB,eAAK,MAAM;AACX,eAAK,eAAe,OAAO,IAAI;AAC/B,eAAK,eAAe,WAAW,IAAI;AACnC,eAAK,eAAe,OAAO,IAAI;AAC/B,oBAAU;AACV,iBAAO,EAAE,MAAM,KAAK;AAAA,QACtB;AAEA,cAAM,OAAO,MAAM;AACjB,cAAI;AAAS,mBAAO,KAAK;AACzB,gBAAM,QAAQ,KAAK,KAAK;AACxB,iBAAO,UAAU,OAAO,KAAK,IAAI,EAAE,MAAM;AAAA,QAC3C;AACA,aAAK,KAAK,OAAO,IAAI;AACrB,aAAK,KAAK,OAAO,IAAI;AACrB,aAAK,KAAK,WAAW,IAAI;AAEzB,eAAO;AAAA,UACL;AAAA,UACA,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,CAAC,QAAQ,IAAI;AACX,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MAEA,QAAQ,IAAI;AACV,YAAI,KAAK,SAAS,GAAG;AACnB,cAAI;AAAI,iBAAK,KAAK,SAAS,EAAE;AAAA;AACxB,iBAAK,KAAK,SAAS;AACxB,iBAAO;AAAA,QACT;AAEA,aAAK,SAAS,IAAI;AAGlB,aAAK,MAAM,EAAE,SAAS;AACtB,aAAK,YAAY,IAAI;AAErB,YAAI,OAAO,KAAK,UAAU,cAAc,CAAC,KAAK,MAAM;AAAG,eAAK,MAAM;AAElE,YAAI;AAAI,eAAK,KAAK,SAAS,EAAE;AAAA;AAExB,eAAK,KAAK,SAAS;AAExB,eAAO;AAAA,MACT;AAAA,MAEA,OAAO,SAAS,GAAG;AACjB,eACE,CAAC,CAAC,MACD,aAAa,aACZ,aAAa,UACZ,aAAa;AAAA,SAEX,OAAO,EAAE,SAAS;AAAA,QAEhB,OAAO,EAAE,UAAU,cAAc,OAAO,EAAE,QAAQ;AAAA,MAE7D;AAAA,IACF;AAEA,YAAQ,WAAW;AAAA;AAAA;;;AC7rBnB;AAAA;AAIA,QAAM,oBAAoB,UAAQ,MAAM,EAAE;AAAA,IACb,EAAE,aAAa,KAAK;AAEjD,WAAO,UAAU,OAAO,OAAO,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG;AAAA,MAChE,YAAY;AAAA,MACZ,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,UAAU;AAAA,MACV,SAAS;AAAA,MACT,MAAM;AAAA,MACN,cAAc;AAAA,MACd,aAAa;AAAA,MACb,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,aAAa;AAAA,MACb,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,oBAAoB;AAAA,MACpB,uBAAuB;AAAA,MACvB,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,OAAO;AAAA,MACP,SAAS;AAAA,MACT,oBAAoB;AAAA,MACpB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,eAAe;AAAA,MACf,eAAe;AAAA,MACf,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,sBAAsB;AAAA,MACtB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,0BAA0B;AAAA,MAC1B,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,MACzB,gCAAgC;AAAA,MAChC,qBAAqB;AAAA,MACrB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,wBAAwB;AAAA,MACxB,wBAAwB;AAAA,MACxB,wBAAwB;AAAA,MACxB,8BAA8B;AAAA,MAC9B,uBAAuB;AAAA,MACvB,6BAA6B;AAAA,MAC7B,6BAA6B;AAAA,MAC7B,mBAAmB;AAAA,MACnB,sBAAsB;AAAA,MACtB,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,MACtB,+CAA+C;AAAA,MAC/C,wBAAwB;AAAA,MACxB,2BAA2B;AAAA,MAC3B,uBAAuB;AAAA,MACvB,sBAAsB;AAAA,MACtB,6BAA6B;AAAA,MAC7B,+BAA+B;AAAA,MAC/B,wCAAwC;AAAA,MACxC,yCAAyC;AAAA,MACzC,uDAAuD;AAAA,MACvD,mCAAmC;AAAA,MACnC,yBAAyB;AAAA,MACzB,wBAAwB;AAAA,MACxB,iCAAiC;AAAA,MACjC,kCAAkC;AAAA,MAClC,8CAA8C;AAAA,MAC9C,sCAAsC;AAAA,MACtC,mDAAmD;AAAA,MACnD,qDAAqD;AAAA,MACrD,iDAAiD;AAAA,MACjD,sCAAsC;AAAA,MACtC,2CAA2C;AAAA,MAC3C,gDAAgD;AAAA,MAChD,4CAA4C;AAAA,MAC5C,4CAA4C;AAAA,MAC5C,uCAAuC;AAAA,MACvC,wCAAwC;AAAA,MACxC,yCAAyC;AAAA,MACzC,uCAAuC;AAAA,MACvC,uCAAuC;AAAA,MACvC,sCAAsC;AAAA,MACtC,yCAAyC;AAAA,MACzC,wCAAwC;AAAA,MACxC,0CAA0C;AAAA,MAC1C,wCAAwC;AAAA,MACxC,wCAAwC;AAAA,MACxC,0CAA0C;AAAA,MAC1C,0CAA0C;AAAA,MAC1C,6CAA6C;AAAA,MAC7C,kCAAkC;AAAA,IACpC,GAAG,iBAAiB,CAAC;AAAA;AAAA;;;AClHrB,IAAAC,oBAAA;AAAA;AAAA;AACA,QAAM,OAAO,OAAO,YAAY,YAAY,UAAU,UAAU;AAAA,MAC9D,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AACA,QAAM,KAAK,UAAQ,QAAQ;AAC3B,QAAM,SAAS,UAAQ,QAAQ;AAC/B,QAAM,KAAK,UAAQ,gBAAgB,EAAE;AAErC,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,iBAAiB,OAAO,cAAc;AAC5C,QAAM,cAAc,OAAO,YAAY;AACvC,QAAM,eAAe,OAAO,aAAa;AACzC,QAAM,gBAAgB,OAAO,cAAc;AAC3C,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,QAAQ,OAAO,OAAO;AAE5B,QAAM,QAAQ,QAAM,QAAQ,QAAQ,EAAE,KAAK,EAAE;AAG7C,QAAM,SAAS,OAAO,6BAA8B;AACpD,QAAM,gBAAgB,UAAU,OAAO,iBAClC,OAAO,+BAA+B;AAC3C,QAAM,WAAW,UAAU,OAAO,YAC7B,OAAO,0BAA0B;AAKtC,QAAM,WAAW,QACf,OAAO,SACP,OAAO,YACP,OAAO;AAET,QAAM,gBAAgB,OAAK,aAAa,eACtC,OAAO,MAAM,YACb,EAAE,eACF,EAAE,YAAY,SAAS,iBACvB,EAAE,cAAc;AAElB,QAAM,oBAAoB,OAAK,CAAC,OAAO,SAAS,CAAC,KAAK,YAAY,OAAO,CAAC;AAE1E,QAAM,OAAN,MAAW;AAAA,MACT,YAAa,KAAK,MAAM,MAAM;AAC5B,aAAK,MAAM;AACX,aAAK,OAAO;AACZ,aAAK,OAAO;AACZ,aAAK,UAAU,MAAM,IAAI,MAAM,EAAE;AACjC,aAAK,GAAG,SAAS,KAAK,OAAO;AAAA,MAC/B;AAAA,MACA,SAAU;AACR,aAAK,KAAK,eAAe,SAAS,KAAK,OAAO;AAAA,MAChD;AAAA;AAAA,MAEA,cAAe;AAAA,MAAC;AAAA,MAChB,MAAO;AACL,aAAK,OAAO;AACZ,YAAI,KAAK,KAAK;AACZ,eAAK,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAEA,QAAM,kBAAN,cAA8B,KAAK;AAAA,MACjC,SAAU;AACR,aAAK,IAAI,eAAe,SAAS,KAAK,WAAW;AACjD,cAAM,OAAO;AAAA,MACf;AAAA,MACA,YAAa,KAAK,MAAM,MAAM;AAC5B,cAAM,KAAK,MAAM,IAAI;AACrB,aAAK,cAAc,QAAM,KAAK,KAAK,SAAS,EAAE;AAC9C,YAAI,GAAG,SAAS,KAAK,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,UAAU,MAAM,iBAAiB,OAAO;AAAA,MAC7C,YAAa,SAAS;AACpB,cAAM;AACN,aAAK,OAAO,IAAI;AAEhB,aAAK,MAAM,IAAI;AACf,aAAK,QAAQ,CAAC;AACd,aAAK,SAAS,CAAC;AACf,aAAK,UAAU,IAAI,WAAW,QAAQ,cAAc;AACpD,YAAI,KAAK,UAAU;AACjB,eAAK,QAAQ,IAAI;AAAA;AAEjB,eAAK,QAAQ,IAAI,WAAW,QAAQ,YAAY;AAClD,YAAI,KAAK,QAAQ,MAAM;AACrB,eAAK,QAAQ,IAAI;AACnB,aAAK,KAAK,IAAI,WAAW,CAAC,CAAC,QAAQ,SAAS;AAC5C,aAAK,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,KAAK,QAAQ,CAAC,IAAI;AAC1D,aAAK,GAAG,IAAI;AACZ,aAAK,WAAW,IAAI;AACpB,aAAK,YAAY,IAAI;AACrB,aAAK,MAAM,IAAI;AACf,aAAK,aAAa,IAAI;AACtB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,YAAY,IAAI;AACrB,aAAK,SAAS,IAAI;AAAA,MACpB;AAAA,MAEA,IAAI,eAAgB;AAAE,eAAO,KAAK,YAAY;AAAA,MAAE;AAAA,MAEhD,IAAI,WAAY;AAAE,eAAO,KAAK,QAAQ;AAAA,MAAE;AAAA,MACxC,IAAI,SAAU,KAAK;AACjB,YAAI,KAAK,UAAU;AACjB,gBAAM,IAAI,MAAM,mCAAmC;AAErD,YAAI,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,MACtC,KAAK,OAAO,KAAK,KAAK,OAAO,EAAE,YAAY,KAAK,YAAY;AAC/D,gBAAM,IAAI,MAAM,wBAAwB;AAE1C,YAAI,KAAK,QAAQ,MAAM,KAAK;AAC1B,eAAK,OAAO,IAAI,MAAM,IAAI,GAAG,GAAG,IAAI;AACpC,cAAI,KAAK,OAAO;AACd,iBAAK,SAAS,KAAK,OAAO,IAAI,WAAS,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAAA,QACrE;AAEA,aAAK,QAAQ,IAAI;AAAA,MACnB;AAAA,MAEA,YAAa,KAAK;AAChB,aAAK,WAAW;AAAA,MAClB;AAAA,MAEA,IAAI,aAAc;AAAE,eAAO,KAAK,UAAU;AAAA,MAAE;AAAA,MAC5C,IAAI,WAAY,IAAI;AAAE,aAAK,UAAU,IAAI,KAAK,UAAU,KAAK,CAAC,CAAC;AAAA,MAAG;AAAA,MAElE,KAAK,OAAO,IAAK;AAAE,eAAO,KAAK,KAAK;AAAA,MAAE;AAAA,MACtC,KAAK,OAAO,EAAG,GAAG;AAAE,aAAK,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC;AAAA,MAAE;AAAA,MAErD,MAAO,OAAO,UAAU,IAAI;AAC1B,YAAI,KAAK,GAAG;AACV,gBAAM,IAAI,MAAM,iBAAiB;AAEnC,YAAI,KAAK,SAAS,GAAG;AACnB,eAAK,KAAK,SAAS,OAAO;AAAA,YACxB,IAAI,MAAM,gDAAgD;AAAA,YAC1D,EAAE,MAAM,uBAAuB;AAAA,UACjC,CAAC;AACD,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,aAAa;AACtB,eAAK,UAAU,WAAW;AAE5B,YAAI,CAAC;AACH,qBAAW;AAEb,cAAM,KAAK,KAAK,KAAK,IAAI,QAAQ,OAAK,EAAE;AAMxC,YAAI,CAAC,KAAK,UAAU,KAAK,CAAC,OAAO,SAAS,KAAK,GAAG;AAChD,cAAI,kBAAkB,KAAK;AACzB,oBAAQ,OAAO,KAAK,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,mBAC7D,cAAc,KAAK;AAC1B,oBAAQ,OAAO,KAAK,KAAK;AAAA,mBAClB,OAAO,UAAU;AAExB,iBAAK,aAAa;AAAA,QACtB;AAIA,YAAI,KAAK,UAAU,GAAG;AAEpB,cAAI,KAAK,WAAW,KAAK,YAAY,MAAM;AACzC,iBAAK,KAAK,EAAE,IAAI;AAElB,cAAI,KAAK;AACP,iBAAK,KAAK,QAAQ,KAAK;AAAA;AAEvB,iBAAK,UAAU,EAAE,KAAK;AAExB,cAAI,KAAK,YAAY,MAAM;AACzB,iBAAK,KAAK,UAAU;AAEtB,cAAI;AACF,eAAG,EAAE;AAEP,iBAAO,KAAK;AAAA,QACd;AAIA,YAAI,CAAC,MAAM,QAAQ;AACjB,cAAI,KAAK,YAAY,MAAM;AACzB,iBAAK,KAAK,UAAU;AACtB,cAAI;AACF,eAAG,EAAE;AACP,iBAAO,KAAK;AAAA,QACd;AAIA,YAAI,OAAO,UAAU;AAAA,QAEjB,EAAE,aAAa,KAAK,QAAQ,KAAK,CAAC,KAAK,OAAO,EAAE,WAAW;AAC7D,kBAAQ,OAAO,KAAK,OAAO,QAAQ;AAAA,QACrC;AAEA,YAAI,OAAO,SAAS,KAAK,KAAK,KAAK,QAAQ;AACzC,kBAAQ,KAAK,OAAO,EAAE,MAAM,KAAK;AAGnC,YAAI,KAAK,WAAW,KAAK,YAAY,MAAM;AACzC,eAAK,KAAK,EAAE,IAAI;AAElB,YAAI,KAAK;AACP,eAAK,KAAK,QAAQ,KAAK;AAAA;AAEvB,eAAK,UAAU,EAAE,KAAK;AAExB,YAAI,KAAK,YAAY,MAAM;AACzB,eAAK,KAAK,UAAU;AAEtB,YAAI;AACF,aAAG,EAAE;AAEP,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,KAAM,GAAG;AACP,YAAI,KAAK,SAAS;AAChB,iBAAO;AAET,YAAI,KAAK,YAAY,MAAM,KAAK,MAAM,KAAK,IAAI,KAAK,YAAY,GAAG;AACjE,eAAK,cAAc,EAAE;AACrB,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,UAAU;AACjB,cAAI;AAEN,YAAI,KAAK,OAAO,SAAS,KAAK,CAAC,KAAK,UAAU,GAAG;AAC/C,cAAI,KAAK;AACP,iBAAK,SAAS,CAAC,KAAK,OAAO,KAAK,EAAE,CAAC;AAAA;AAEnC,iBAAK,SAAS,CAAC,OAAO,OAAO,KAAK,QAAQ,KAAK,YAAY,CAAC,CAAC;AAAA,QACjE;AAEA,cAAM,MAAM,KAAK,IAAI,EAAE,KAAK,MAAM,KAAK,OAAO,CAAC,CAAC;AAChD,aAAK,cAAc,EAAE;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,IAAI,EAAG,GAAG,OAAO;AAChB,YAAI,MAAM,MAAM,UAAU,MAAM;AAC9B,eAAK,WAAW,EAAE;AAAA,aACf;AACH,eAAK,OAAO,CAAC,IAAI,MAAM,MAAM,CAAC;AAC9B,kBAAQ,MAAM,MAAM,GAAG,CAAC;AACxB,eAAK,YAAY,KAAK;AAAA,QACxB;AAEA,aAAK,KAAK,QAAQ,KAAK;AAEvB,YAAI,CAAC,KAAK,OAAO,UAAU,CAAC,KAAK,GAAG;AAClC,eAAK,KAAK,OAAO;AAEnB,eAAO;AAAA,MACT;AAAA,MAEA,IAAK,OAAO,UAAU,IAAI;AACxB,YAAI,OAAO,UAAU;AACnB,eAAK,OAAO,QAAQ;AACtB,YAAI,OAAO,aAAa;AACtB,eAAK,UAAU,WAAW;AAC5B,YAAI;AACF,eAAK,MAAM,OAAO,QAAQ;AAC5B,YAAI;AACF,eAAK,KAAK,OAAO,EAAE;AACrB,aAAK,GAAG,IAAI;AACZ,aAAK,WAAW;AAMhB,YAAI,KAAK,WAAW,CAAC,KAAK,MAAM;AAC9B,eAAK,cAAc,EAAE;AACvB,eAAO;AAAA,MACT;AAAA;AAAA,MAGA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,SAAS;AAChB;AAEF,aAAK,MAAM,IAAI;AACf,aAAK,OAAO,IAAI;AAChB,aAAK,KAAK,QAAQ;AAClB,YAAI,KAAK,OAAO;AACd,eAAK,KAAK,EAAE;AAAA,iBACL,KAAK,GAAG;AACf,eAAK,cAAc,EAAE;AAAA;AAErB,eAAK,KAAK,OAAO;AAAA,MACrB;AAAA,MAEA,SAAU;AACR,eAAO,KAAK,MAAM,EAAE;AAAA,MACtB;AAAA,MAEA,QAAS;AACP,aAAK,OAAO,IAAI;AAChB,aAAK,MAAM,IAAI;AAAA,MACjB;AAAA,MAEA,IAAI,YAAa;AACf,eAAO,KAAK,SAAS;AAAA,MACvB;AAAA,MAEA,IAAI,UAAW;AACb,eAAO,KAAK,OAAO;AAAA,MACrB;AAAA,MAEA,IAAI,SAAU;AACZ,eAAO,KAAK,MAAM;AAAA,MACpB;AAAA,MAEA,CAAC,UAAU,EAAG,OAAO;AACnB,YAAI,KAAK,UAAU;AACjB,eAAK,YAAY,KAAK;AAAA;AAEtB,eAAK,YAAY,KAAK,MAAM;AAC9B,aAAK,OAAO,KAAK,KAAK;AAAA,MACxB;AAAA,MAEA,CAAC,WAAW,IAAK;AACf,YAAI,KAAK,OAAO,QAAQ;AACtB,cAAI,KAAK,UAAU;AACjB,iBAAK,YAAY,KAAK;AAAA;AAEtB,iBAAK,YAAY,KAAK,KAAK,OAAO,CAAC,EAAE;AAAA,QACzC;AACA,eAAO,KAAK,OAAO,MAAM;AAAA,MAC3B;AAAA,MAEA,CAAC,KAAK,EAAG,SAAS;AAChB,WAAG;AAAA,QAAC,SAAS,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,CAAC;AAEjD,YAAI,CAAC,WAAW,CAAC,KAAK,OAAO,UAAU,CAAC,KAAK,GAAG;AAC9C,eAAK,KAAK,OAAO;AAAA,MACrB;AAAA,MAEA,CAAC,UAAU,EAAG,OAAO;AACnB,eAAO,SAAS,KAAK,KAAK,QAAQ,KAAK,GAAG,KAAK,WAAW;AAAA,MAC5D;AAAA,MAEA,KAAM,MAAM,MAAM;AAChB,YAAI,KAAK,SAAS;AAChB;AAEF,cAAM,QAAQ,KAAK,WAAW;AAC9B,eAAO,QAAQ,CAAC;AAChB,YAAI,SAAS,KAAK,UAAU,SAAS,KAAK;AACxC,eAAK,MAAM;AAAA;AAEX,eAAK,MAAM,KAAK,QAAQ;AAC1B,aAAK,cAAc,CAAC,CAAC,KAAK;AAG1B,YAAI,OAAO;AACT,cAAI,KAAK;AACP,iBAAK,IAAI;AAAA,QACb,OAAO;AACL,eAAK,MAAM,KAAK,CAAC,KAAK,cAAc,IAAI,KAAK,MAAM,MAAM,IAAI,IACzD,IAAI,gBAAgB,MAAM,MAAM,IAAI,CAAC;AACzC,cAAI,KAAK,KAAK;AACZ,kBAAM,MAAM,KAAK,MAAM,EAAE,CAAC;AAAA;AAE1B,iBAAK,MAAM,EAAE;AAAA,QACjB;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,OAAQ,MAAM;AACZ,cAAM,IAAI,KAAK,MAAM,KAAK,CAAAC,OAAKA,GAAE,SAAS,IAAI;AAC9C,YAAI,GAAG;AACL,eAAK,MAAM,OAAO,KAAK,MAAM,QAAQ,CAAC,GAAG,CAAC;AAC1C,YAAE,OAAO;AAAA,QACX;AAAA,MACF;AAAA,MAEA,YAAa,IAAI,IAAI;AACnB,eAAO,KAAK,GAAG,IAAI,EAAE;AAAA,MACvB;AAAA,MAEA,GAAI,IAAI,IAAI;AACV,cAAM,MAAM,MAAM,GAAG,IAAI,EAAE;AAC3B,YAAI,OAAO,UAAU,CAAC,KAAK,MAAM,UAAU,CAAC,KAAK;AAC/C,eAAK,MAAM,EAAE;AAAA,iBACN,OAAO,cAAc,KAAK,YAAY,MAAM;AACnD,gBAAM,KAAK,UAAU;AAAA,iBACd,SAAS,EAAE,KAAK,KAAK,WAAW,GAAG;AAC1C,gBAAM,KAAK,EAAE;AACb,eAAK,mBAAmB,EAAE;AAAA,QAC5B,WAAW,OAAO,WAAW,KAAK,aAAa,GAAG;AAChD,cAAI,KAAK,KAAK;AACZ,kBAAM,MAAM,GAAG,KAAK,MAAM,KAAK,aAAa,CAAC,CAAC;AAAA;AAE9C,eAAG,KAAK,MAAM,KAAK,aAAa,CAAC;AAAA,QACrC;AACA,eAAO;AAAA,MACT;AAAA,MAEA,IAAI,aAAc;AAChB,eAAO,KAAK,WAAW;AAAA,MACzB;AAAA,MAEA,CAAC,cAAc,IAAK;AAClB,YAAI,CAAC,KAAK,YAAY,KAClB,CAAC,KAAK,WAAW,KACjB,CAAC,KAAK,SAAS,KACf,KAAK,OAAO,WAAW,KACvB,KAAK,GAAG,GAAG;AACb,eAAK,YAAY,IAAI;AACrB,eAAK,KAAK,KAAK;AACf,eAAK,KAAK,WAAW;AACrB,eAAK,KAAK,QAAQ;AAClB,cAAI,KAAK,MAAM;AACb,iBAAK,KAAK,OAAO;AACnB,eAAK,YAAY,IAAI;AAAA,QACvB;AAAA,MACF;AAAA,MAEA,KAAM,IAAI,SAAS,OAAO;AAExB,YAAI,OAAO,WAAW,OAAO,WAAW,OAAO,aAAa,KAAK,SAAS;AACxE;AAAA,iBACO,OAAO,QAAQ;AACtB,iBAAO,CAAC,OAAO,QACX,KAAK,KAAK,IAAI,MAAM,MAAM,KAAK,QAAQ,EAAE,IAAI,CAAC,IAC9C,KAAK,QAAQ,EAAE,IAAI;AAAA,QACzB,WAAW,OAAO,OAAO;AACvB,iBAAO,KAAK,OAAO,EAAE;AAAA,QACvB,WAAW,OAAO,SAAS;AACzB,eAAK,MAAM,IAAI;AAEf,cAAI,CAAC,KAAK,WAAW,KAAK,CAAC,KAAK,SAAS;AACvC;AACF,gBAAMC,OAAM,MAAM,KAAK,OAAO;AAC9B,eAAK,mBAAmB,OAAO;AAC/B,iBAAOA;AAAA,QACT,WAAW,OAAO,SAAS;AACzB,eAAK,aAAa,IAAI;AACtB,gBAAMA,OAAM,MAAM,KAAK,SAAS,IAAI;AACpC,eAAK,cAAc,EAAE;AACrB,iBAAOA;AAAA,QACT,WAAW,OAAO,UAAU;AAC1B,gBAAMA,OAAM,MAAM,KAAK,QAAQ;AAC/B,eAAK,cAAc,EAAE;AACrB,iBAAOA;AAAA,QACT,WAAW,OAAO,YAAY,OAAO,aAAa;AAChD,gBAAMA,OAAM,MAAM,KAAK,EAAE;AACzB,eAAK,mBAAmB,EAAE;AAC1B,iBAAOA;AAAA,QACT;AAGA,cAAM,MAAM,MAAM,KAAK,IAAI,MAAM,GAAG,KAAK;AACzC,aAAK,cAAc,EAAE;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,QAAQ,EAAG,MAAM;AAChB,mBAAW,KAAK,KAAK,OAAO;AAC1B,cAAI,EAAE,KAAK,MAAM,IAAI,MAAM;AACzB,iBAAK,MAAM;AAAA,QACf;AACA,cAAM,MAAM,MAAM,KAAK,QAAQ,IAAI;AACnC,aAAK,cAAc,EAAE;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,YAAI,KAAK,WAAW;AAClB;AAEF,aAAK,WAAW,IAAI;AACpB,aAAK,WAAW;AAChB,YAAI,KAAK,KAAK;AACZ,gBAAM,MAAM,KAAK,QAAQ,EAAE,CAAC;AAAA;AAE5B,eAAK,QAAQ,EAAE;AAAA,MACnB;AAAA,MAEA,CAAC,QAAQ,IAAK;AACZ,YAAI,KAAK,OAAO,GAAG;AACjB,gBAAM,OAAO,KAAK,OAAO,EAAE,IAAI;AAC/B,cAAI,MAAM;AACR,uBAAW,KAAK,KAAK,OAAO;AAC1B,gBAAE,KAAK,MAAM,IAAI;AAAA,YACnB;AACA,kBAAM,KAAK,QAAQ,IAAI;AAAA,UACzB;AAAA,QACF;AAEA,mBAAW,KAAK,KAAK,OAAO;AAC1B,YAAE,IAAI;AAAA,QACR;AACA,cAAM,MAAM,MAAM,KAAK,KAAK;AAC5B,aAAK,mBAAmB,KAAK;AAC7B,eAAO;AAAA,MACT;AAAA;AAAA,MAGA,UAAW;AACT,cAAM,MAAM,CAAC;AACb,YAAI,CAAC,KAAK,UAAU;AAClB,cAAI,aAAa;AAGnB,cAAM,IAAI,KAAK,QAAQ;AACvB,aAAK,GAAG,QAAQ,OAAK;AACnB,cAAI,KAAK,CAAC;AACV,cAAI,CAAC,KAAK,UAAU;AAClB,gBAAI,cAAc,EAAE;AAAA,QACxB,CAAC;AACD,eAAO,EAAE,KAAK,MAAM,GAAG;AAAA,MACzB;AAAA;AAAA,MAGA,SAAU;AACR,eAAO,KAAK,UAAU,IAClB,QAAQ,OAAO,IAAI,MAAM,6BAA6B,CAAC,IACvD,KAAK,QAAQ,EAAE,KAAK,SAClB,KAAK,UAAU,IACX,QAAQ,OAAO,IAAI,MAAM,6BAA6B,CAAC,IACvD,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,IAAI,OAAO,OAAO,KAAK,IAAI,UAAU,CAAC;AAAA,MAC9E;AAAA;AAAA,MAGA,UAAW;AACT,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,eAAK,GAAG,WAAW,MAAM,OAAO,IAAI,MAAM,kBAAkB,CAAC,CAAC;AAC9D,eAAK,GAAG,SAAS,QAAM,OAAO,EAAE,CAAC;AACjC,eAAK,GAAG,OAAO,MAAM,QAAQ,CAAC;AAAA,QAChC,CAAC;AAAA,MACH;AAAA;AAAA,MAGA,CAAC,aAAa,IAAK;AACjB,cAAM,OAAO,MAAM;AACjB,gBAAM,MAAM,KAAK,KAAK;AACtB,cAAI,QAAQ;AACV,mBAAO,QAAQ,QAAQ,EAAE,MAAM,OAAO,OAAO,IAAI,CAAC;AAEpD,cAAI,KAAK,GAAG;AACV,mBAAO,QAAQ,QAAQ,EAAE,MAAM,KAAK,CAAC;AAEvC,cAAI,UAAU;AACd,cAAI,SAAS;AACb,gBAAM,QAAQ,QAAM;AAClB,iBAAK,eAAe,QAAQ,MAAM;AAClC,iBAAK,eAAe,OAAO,KAAK;AAChC,mBAAO,EAAE;AAAA,UACX;AACA,gBAAM,SAAS,WAAS;AACtB,iBAAK,eAAe,SAAS,KAAK;AAClC,iBAAK,eAAe,OAAO,KAAK;AAChC,iBAAK,MAAM;AACX,oBAAQ,EAAE,OAAc,MAAM,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AAAA,UAC7C;AACA,gBAAM,QAAQ,MAAM;AAClB,iBAAK,eAAe,SAAS,KAAK;AAClC,iBAAK,eAAe,QAAQ,MAAM;AAClC,oBAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,UACxB;AACA,gBAAM,YAAY,MAAM,MAAM,IAAI,MAAM,kBAAkB,CAAC;AAC3D,iBAAO,IAAI,QAAQ,CAACC,MAAK,QAAQ;AAC/B,qBAAS;AACT,sBAAUA;AACV,iBAAK,KAAK,WAAW,SAAS;AAC9B,iBAAK,KAAK,SAAS,KAAK;AACxB,iBAAK,KAAK,OAAO,KAAK;AACtB,iBAAK,KAAK,QAAQ,MAAM;AAAA,UAC1B,CAAC;AAAA,QACH;AAEA,eAAO,EAAE,KAAK;AAAA,MAChB;AAAA;AAAA,MAGA,CAAC,QAAQ,IAAK;AACZ,cAAM,OAAO,MAAM;AACjB,gBAAM,QAAQ,KAAK,KAAK;AACxB,gBAAM,OAAO,UAAU;AACvB,iBAAO,EAAE,OAAO,KAAK;AAAA,QACvB;AACA,eAAO,EAAE,KAAK;AAAA,MAChB;AAAA,MAEA,QAAS,IAAI;AACX,YAAI,KAAK,SAAS,GAAG;AACnB,cAAI;AACF,iBAAK,KAAK,SAAS,EAAE;AAAA;AAErB,iBAAK,KAAK,SAAS;AACrB,iBAAO;AAAA,QACT;AAEA,aAAK,SAAS,IAAI;AAGlB,aAAK,OAAO,SAAS;AACrB,aAAK,YAAY,IAAI;AAErB,YAAI,OAAO,KAAK,UAAU,cAAc,CAAC,KAAK,MAAM;AAClD,eAAK,MAAM;AAEb,YAAI;AACF,eAAK,KAAK,SAAS,EAAE;AAAA;AAErB,eAAK,KAAK,SAAS;AAErB,eAAO;AAAA,MACT;AAAA,MAEA,OAAO,SAAU,GAAG;AAClB,eAAO,CAAC,CAAC,MAAM,aAAa,YAAY,aAAa,UACnD,aAAa,OACX,OAAO,EAAE,SAAS;AAAA,QACjB,OAAO,EAAE,UAAU,cAAc,OAAO,EAAE,QAAQ;AAAA,MAEzD;AAAA,IACF;AAAA;AAAA;;;ACxoBA;AAAA;AAAA;AAEA,QAAM,SAAS,UAAQ,QAAQ;AAC/B,QAAMC,UAAS,UAAQ,QAAQ,EAAE;AACjC,QAAM,WAAW,UAAQ,MAAM;AAE/B,QAAMC,aAAY,QAAQ,YAAY;AACtC,QAAM,WAAW;AAEjB,QAAM,uBAAuBD,QAAO;AAEpC,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,YAAN,cAAwB,MAAM;AAAA,MAC5B,YAAa,KAAK;AAChB,cAAM,WAAW,IAAI,OAAO;AAC5B,aAAK,OAAO,IAAI;AAChB,aAAK,QAAQ,IAAI;AAEjB,YAAI,CAAC,KAAK;AACR,eAAK,OAAO;AAEd,aAAK,UAAU,WAAW,IAAI;AAC9B,cAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,MAChD;AAAA,MAEA,IAAI,OAAQ;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAMA,QAAM,QAAQ,OAAO,MAAM;AAC3B,QAAM,aAAa,OAAO,WAAW;AACrC,QAAM,mBAAmB,OAAO,iBAAiB;AACjD,QAAM,iBAAiB,OAAO,eAAe;AAC7C,QAAM,UAAU,OAAO,QAAQ;AAC/B,QAAM,WAAW,OAAO,SAAS;AACjC,QAAM,YAAY,OAAO,UAAU;AACnC,QAAM,SAAS,OAAO,OAAO;AAC7B,QAAM,YAAY,OAAO,UAAU;AACnC,QAAM,SAAS,OAAO,OAAO;AAC7B,QAAM,oBAAoB,OAAO,mBAAmB;AAEpD,QAAM,WAAN,cAAuB,SAAS;AAAA,MAC9B,YAAa,MAAM,MAAM;AACvB,YAAI,CAAC,QAAQ,OAAO,SAAS;AAC3B,gBAAM,IAAI,UAAU,0CAA0C;AAEhE,cAAM,IAAI;AACV,aAAK,SAAS,IAAI;AAClB,aAAK,MAAM,IAAI;AACf,aAAK,KAAK,IAAI;AAEd,aAAK,UAAU,IAAI,KAAK;AACxB,aAAK,gBAAgB,IAAI,KAAK;AAE9B,YAAI;AACF,eAAK,OAAO,IAAI,IAAI,SAAS,IAAI,EAAE,IAAI;AAAA,QACzC,SAAS,IAAI;AAEX,gBAAM,IAAI,UAAU,EAAE;AAAA,QACxB;AAEA,aAAK,QAAQ,IAAI,CAAC,QAAQ;AAExB,cAAI,KAAK,SAAS;AAChB;AAEF,eAAK,SAAS,IAAI;AAIlB,eAAK,MAAM;AACX,eAAK,KAAK,SAAS,GAAG;AAAA,QACxB;AAEA,aAAK,OAAO,EAAE,GAAG,SAAS,QAAM,KAAK,QAAQ,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;AACjE,aAAK,KAAK,OAAO,MAAM,KAAK,KAAK;AAAA,MACnC;AAAA,MAEA,QAAS;AACP,YAAI,KAAK,OAAO,GAAG;AACjB,eAAK,OAAO,EAAE,MAAM;AACpB,eAAK,OAAO,IAAI;AAChB,eAAK,KAAK,OAAO;AAAA,QACnB;AAAA,MACF;AAAA,MAEA,QAAS;AACP,YAAI,CAAC,KAAK,SAAS,GAAG;AACpB,iBAAO,KAAK,OAAO,GAAG,qBAAqB;AAC3C,iBAAO,KAAK,OAAO,EAAE,MAAM;AAAA,QAC7B;AAAA,MACF;AAAA,MAEA,MAAO,WAAW;AAChB,YAAI,KAAK;AACP;AAEF,YAAI,OAAO,cAAc;AACvB,sBAAY,KAAK,cAAc;AACjC,aAAK,MAAM,OAAO,OAAOA,QAAO,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;AAAA,MACxE;AAAA,MAEA,IAAK,OAAO,UAAU,IAAI;AACxB,YAAI;AACF,eAAK,MAAM,OAAO,QAAQ;AAC5B,aAAK,MAAM,KAAK,gBAAgB,CAAC;AACjC,aAAK,MAAM,IAAI;AACf,eAAO,MAAM,IAAI,MAAM,MAAM,EAAE;AAAA,MACjC;AAAA,MAEA,IAAI,QAAS;AACX,eAAO,KAAK,MAAM;AAAA,MACpB;AAAA,MAEA,MAAO,OAAO,UAAU,IAAI;AAG1B,YAAI,OAAO,aAAa;AACtB,eAAK,UAAU,WAAW;AAE5B,YAAI,OAAO,UAAU;AACnB,kBAAQA,QAAO,KAAK,OAAO,QAAQ;AAErC,YAAI,KAAK,SAAS;AAChB;AACF,eAAO,KAAK,OAAO,GAAG,qBAAqB;AAI3C,cAAM,eAAe,KAAK,OAAO,EAAE;AACnC,cAAM,sBAAsB,aAAa;AACzC,qBAAa,QAAQ,MAAM;AAAA,QAAC;AAC5B,cAAM,gBAAgB,KAAK,OAAO,EAAE;AACpC,aAAK,OAAO,EAAE,QAAQ,MAAM;AAAA,QAAC;AAG7B,QAAAA,QAAO,SAAS,CAAC,SAAS;AAC1B,YAAI;AACJ,YAAI;AACF,gBAAM,YAAY,OAAO,MAAM,UAAU,MAAM,WAC3C,MAAM,UAAU,IAAI,KAAK,UAAU;AACvC,mBAAS,KAAK,OAAO,EAAE,cAAc,OAAO,SAAS;AAErD,UAAAA,QAAO,SAAS;AAAA,QAClB,SAAS,KAAK;AAGZ,UAAAA,QAAO,SAAS;AAChB,eAAK,QAAQ,EAAE,IAAI,UAAU,GAAG,CAAC;AAAA,QACnC,UAAE;AACA,cAAI,KAAK,OAAO,GAAG;AAIjB,iBAAK,OAAO,EAAE,UAAU;AACxB,yBAAa,QAAQ;AACrB,iBAAK,OAAO,EAAE,QAAQ;AAGtB,iBAAK,OAAO,EAAE,mBAAmB,OAAO;AAAA,UAE1C;AAAA,QACF;AAEA,YAAI,KAAK,OAAO;AACd,eAAK,OAAO,EAAE,GAAG,SAAS,QAAM,KAAK,QAAQ,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;AAEnE,YAAI;AACJ,YAAI,QAAQ;AACV,cAAI,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,GAAG;AAG9C,0BAAc,KAAK,WAAW,EAAEA,QAAO,KAAK,OAAO,CAAC,CAAC,CAAC;AACtD,qBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,4BAAc,KAAK,WAAW,EAAE,OAAO,CAAC,CAAC;AAAA,YAC3C;AAAA,UACF,OAAO;AACL,0BAAc,KAAK,WAAW,EAAEA,QAAO,KAAK,MAAM,CAAC;AAAA,UACrD;AAAA,QACF;AAEA,YAAI;AACF,aAAG;AACL,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,WAAW,EAAG,MAAM;AACnB,eAAO,MAAM,MAAM,IAAI;AAAA,MACzB;AAAA,IACF;AAEA,QAAM,OAAN,cAAmB,SAAS;AAAA,MAC1B,YAAa,MAAM,MAAM;AACvB,eAAO,QAAQ,CAAC;AAEhB,aAAK,QAAQ,KAAK,SAASC,WAAU;AACrC,aAAK,cAAc,KAAK,eAAeA,WAAU;AACjD,cAAM,MAAM,IAAI;AAEhB,aAAK,cAAc,IAAIA,WAAU;AACjC,aAAK,MAAM,IAAI,KAAK;AACpB,aAAK,SAAS,IAAI,KAAK;AAAA,MACzB;AAAA,MAEA,OAAQ,OAAO,UAAU;AACvB,YAAI,KAAK,SAAS;AAChB;AAEF,YAAI,CAAC,KAAK,OAAO;AACf,gBAAM,IAAI,MAAM,6CAA6C;AAI/D,YAAI,CAAC,KAAK,OAAO,EAAE;AACjB,gBAAM,IAAI,MAAM,sCAAsC;AAExD,YAAI,KAAK,MAAM,MAAM,SAAS,KAAK,SAAS,MAAM,UAAU;AAC1D,eAAK,MAAMA,WAAU,YAAY;AACjC,iBAAO,KAAK,OAAO,GAAG,qBAAqB;AAI3C,gBAAM,YAAY,KAAK,OAAO,EAAE;AAChC,eAAK,OAAO,EAAE,QAAQ,CAAC,WAAW,OAAO;AACvC,iBAAK,MAAM,SAAS;AACpB,eAAG;AAAA,UACL;AACA,cAAI;AACF,iBAAK,OAAO,EAAE,OAAO,OAAO,QAAQ;AAAA,UACtC,UAAE;AACA,iBAAK,OAAO,EAAE,QAAQ;AAAA,UACxB;AAEA,cAAI,KAAK,OAAO,GAAG;AACjB,iBAAK,MAAM,IAAI;AACf,iBAAK,SAAS,IAAI;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,QAAM,UAAN,cAAsB,KAAK;AAAA,MACzB,YAAa,MAAM;AACjB,cAAM,MAAM,SAAS;AAAA,MACvB;AAAA,IACF;AAEA,QAAM,UAAN,cAAsB,KAAK;AAAA,MACzB,YAAa,MAAM;AACjB,cAAM,MAAM,SAAS;AAAA,MACvB;AAAA,IACF;AAGA,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,OAAN,cAAmB,KAAK;AAAA,MACtB,YAAa,MAAM;AACjB,cAAM,MAAM,MAAM;AAClB,aAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,KAAK;AAAA,MACnC;AAAA,MAEA,CAAC,WAAW,EAAG,MAAM;AACnB,YAAI,CAAC,KAAK,SAAS;AACjB,iBAAO,MAAM,WAAW,EAAE,IAAI;AAIhC,aAAK,SAAS,IAAI;AAClB,aAAK,CAAC,IAAI;AACV,eAAO,MAAM,WAAW,EAAE,IAAI;AAAA,MAChC;AAAA,IACF;AAEA,QAAM,SAAN,cAAqB,KAAK;AAAA,MACxB,YAAa,MAAM;AACjB,cAAM,MAAM,QAAQ;AAAA,MACtB;AAAA,IACF;AAGA,QAAM,aAAN,cAAyB,KAAK;AAAA,MAC5B,YAAa,MAAM;AACjB,cAAM,MAAM,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,QAAM,aAAN,cAAyB,KAAK;AAAA,MAC5B,YAAa,MAAM;AACjB,cAAM,MAAM,YAAY;AAAA,MAC1B;AAAA,IACF;AAGA,QAAM,QAAN,cAAoB,KAAK;AAAA,MACvB,YAAa,MAAM;AACjB,cAAM,MAAM,OAAO;AAAA,MACrB;AAAA,IACF;AAEA,QAAM,SAAN,cAAqB,SAAS;AAAA,MAC5B,YAAa,MAAM,MAAM;AACvB,eAAO,QAAQ,CAAC;AAEhB,aAAK,QAAQ,KAAK,SAASA,WAAU;AACrC,aAAK,cAAc,KAAK,eAAeA,WAAU;AAEjD,cAAM,MAAM,IAAI;AAEhB,aAAK,cAAc,IAAIA,WAAU;AAAA,MACnC;AAAA,IACF;AAEA,QAAM,iBAAN,cAA6B,OAAO;AAAA,MAClC,YAAa,MAAM;AACjB,cAAM,MAAM,gBAAgB;AAAA,MAC9B;AAAA,IACF;AAEA,QAAM,mBAAN,cAA+B,OAAO;AAAA,MACpC,YAAa,MAAM;AACjB,cAAM,MAAM,kBAAkB;AAAA,MAChC;AAAA,IACF;AAEA,YAAQ,UAAU;AAClB,YAAQ,UAAU;AAClB,YAAQ,OAAO;AACf,YAAQ,SAAS;AACjB,YAAQ,aAAa;AACrB,YAAQ,aAAa;AACrB,YAAQ,QAAQ;AAEhB,QAAI,OAAO,SAAS,mBAAmB,YAAY;AACjD,cAAQ,iBAAiB;AACzB,cAAQ,mBAAmB;AAAA,IAC7B,OAAO;AACL,cAAQ,iBAAiB,QAAQ,mBAAmB,MAAM;AAAA,QACxD,cAAe;AACb,gBAAM,IAAI,MAAM,oDAAoD;AAAA,QACtE;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC3VA;AAAA;AAKA,QAAM,WAAW,QAAQ,IAAI,6BAA6B,QAAQ;AAClE,WAAO,UAAU,aAAa,UAAU,OAAK,IACzC,OAAK,KAAK,EAAE,QAAQ,OAAO,GAAG;AAAA;AAAA;;;ACPlC;AAAA;AAAA;AACA,QAAM,EAAE,SAAS,IAAI;AACrB,QAAM,WAAW;AAEjB,QAAM,QAAQ,OAAO,OAAO;AAC5B,WAAO,UAAU,MAAM,kBAAkB,SAAS;AAAA,MAChD,YAAa,QAAQ,IAAI,KAAK;AAC5B,cAAM;AAIN,aAAK,MAAM;AACX,aAAK,WAAW;AAChB,aAAK,iBAAiB;AACtB,aAAK,SAAS;AACd,aAAK,iBAAiB,MAAM,KAAK,KAAK,OAAO,OAAO,GAAG;AACvD,aAAK,cAAc,KAAK;AACxB,aAAK,SAAS,OAAO;AACrB,aAAK,OAAO,OAAO;AACnB,aAAK,OAAO;AACZ,aAAK,SAAS;AACd,gBAAQ,KAAK,MAAM;AAAA,UACjB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH;AAAA,UAEF,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,iBAAK,OAAO;AACZ;AAAA,UAIF;AACE,iBAAK,SAAS;AAAA,QAClB;AAEA,aAAK,OAAO,SAAS,OAAO,IAAI;AAChC,aAAK,OAAO,OAAO;AACnB,YAAI,KAAK,MAAM;AACb,eAAK,OAAO,KAAK,OAAO;AAAA,QAC1B;AACA,aAAK,MAAM,OAAO;AAClB,aAAK,MAAM,OAAO;AAClB,aAAK,QAAQ,OAAO;AACpB,aAAK,QAAQ,OAAO;AACpB,aAAK,OAAO,OAAO;AACnB,aAAK,QAAQ,OAAO;AACpB,aAAK,QAAQ,OAAO;AACpB,aAAK,QAAQ,OAAO;AACpB,aAAK,WAAW,SAAS,OAAO,QAAQ;AACxC,aAAK,QAAQ,OAAO;AACpB,aAAK,QAAQ,OAAO;AAEpB,YAAI,IAAI;AACN,eAAK,KAAK,EAAE,EAAE;AAAA,QAChB;AACA,YAAI,KAAK;AACP,eAAK,KAAK,EAAE,KAAK,IAAI;AAAA,QACvB;AAAA,MACF;AAAA,MAEA,MAAO,MAAM;AACX,cAAM,WAAW,KAAK;AACtB,YAAI,WAAW,KAAK,aAAa;AAC/B,gBAAM,IAAI,MAAM,2CAA2C;AAAA,QAC7D;AAEA,cAAM,IAAI,KAAK;AACf,cAAM,KAAK,KAAK;AAChB,aAAK,SAAS,KAAK,IAAI,GAAG,IAAI,QAAQ;AACtC,aAAK,cAAc,KAAK,IAAI,GAAG,KAAK,QAAQ;AAC5C,YAAI,KAAK,QAAQ;AACf,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,UAAU;AACjB,iBAAO,MAAM,MAAM,IAAI;AAAA,QACzB;AAGA,eAAO,MAAM,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC;AAAA,MACrC;AAAA,MAEA,CAAC,KAAK,EAAG,IAAIC,SAAQ;AACnB,mBAAW,KAAK,IAAI;AAGlB,cAAI,GAAG,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAM,UAC5B,EAAEA,WAAU,MAAM,SAAS;AAC7B,iBAAK,CAAC,IAAI,MAAM,UAAU,MAAM,aAAa,SAAS,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;AAAA,UACrE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC1GA;AAAA;AAAA;AAEA,YAAQ,OAAO,oBAAI,IAAI;AAAA,MACrB,CAAC,KAAK,MAAM;AAAA;AAAA,MAEZ,CAAC,IAAI,SAAS;AAAA,MACd,CAAC,KAAK,MAAM;AAAA,MACZ,CAAC,KAAK,cAAc;AAAA;AAAA;AAAA,MAGpB,CAAC,KAAK,iBAAiB;AAAA,MACvB,CAAC,KAAK,aAAa;AAAA,MACnB,CAAC,KAAK,WAAW;AAAA,MACjB,CAAC,KAAK,MAAM;AAAA;AAAA,MAEZ,CAAC,KAAK,gBAAgB;AAAA;AAAA,MAEtB,CAAC,KAAK,sBAAsB;AAAA,MAC5B,CAAC,KAAK,gBAAgB;AAAA;AAAA;AAAA,MAGtB,CAAC,KAAK,YAAY;AAAA;AAAA,MAElB,CAAC,KAAK,YAAY;AAAA;AAAA,MAElB,CAAC,KAAK,OAAO;AAAA;AAAA,MAEb,CAAC,KAAK,yBAAyB;AAAA;AAAA,MAE/B,CAAC,KAAK,qBAAqB;AAAA;AAAA,MAE3B,CAAC,KAAK,kBAAkB;AAAA;AAAA,MAExB,CAAC,KAAK,gBAAgB;AAAA;AAAA,MAEtB,CAAC,KAAK,YAAY;AAAA;AAAA,MAElB,CAAC,KAAK,kBAAkB;AAAA;AAAA,MAExB,CAAC,KAAK,mBAAmB;AAAA,IAC3B,CAAC;AAGD,YAAQ,OAAO,IAAI,IAAI,MAAM,KAAK,QAAQ,IAAI,EAAE,IAAI,QAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAAA;AAAA;;;AC3CzE;AAAA;AAAA;AAIA,QAAM,SAAS,CAAC,KAAK,QAAQ;AAC3B,UAAI,CAAC,OAAO,cAAc,GAAG,GAAG;AAG9B,cAAM,MAAM,+DAA+D;AAAA,MAC7E,WAAW,MAAM,GAAG;AAClB,uBAAe,KAAK,GAAG;AAAA,MACzB,OAAO;AACL,uBAAe,KAAK,GAAG;AAAA,MACzB;AACA,aAAO;AAAA,IACT;AAEA,QAAM,iBAAiB,CAAC,KAAK,QAAQ;AACnC,UAAI,CAAC,IAAI;AAET,eAAS,IAAI,IAAI,QAAQ,IAAI,GAAG,KAAK;AACnC,YAAI,IAAI,CAAC,IAAI,MAAM;AACnB,cAAM,KAAK,MAAM,MAAM,GAAK;AAAA,MAC9B;AAAA,IACF;AAEA,QAAM,iBAAiB,CAAC,KAAK,QAAQ;AACnC,UAAI,CAAC,IAAI;AACT,UAAI,UAAU;AACd,YAAM,MAAM;AACZ,eAAS,IAAI,IAAI,QAAQ,IAAI,GAAG,KAAK;AACnC,YAAI,OAAO,MAAM;AACjB,cAAM,KAAK,MAAM,MAAM,GAAK;AAC5B,YAAI,SAAS;AACX,cAAI,IAAI,CAAC,IAAI,SAAS,IAAI;AAAA,QAC5B,WAAW,SAAS,GAAG;AACrB,cAAI,IAAI,CAAC,IAAI;AAAA,QACf,OAAO;AACL,oBAAU;AACV,cAAI,IAAI,CAAC,IAAI,SAAS,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAEA,QAAM,QAAQ,CAAC,QAAQ;AACrB,YAAM,MAAM,IAAI,CAAC;AACjB,YAAM,QAAQ,QAAQ,MAAO,IAAI,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,IACrD,QAAQ,MAAO,KAAK,GAAG,IACvB;AACJ,UAAI,UAAU,MAAM;AAClB,cAAM,MAAM,0BAA0B;AAAA,MACxC;AAEA,UAAI,CAAC,OAAO,cAAc,KAAK,GAAG;AAGhC,cAAM,MAAM,wDAAwD;AAAA,MACtE;AAEA,aAAO;AAAA,IACT;AAEA,QAAM,OAAO,CAAC,QAAQ;AACpB,UAAI,MAAM,IAAI;AACd,UAAI,MAAM;AACV,UAAI,UAAU;AACd,eAAS,IAAI,MAAM,GAAG,IAAI,IAAI,KAAK;AACjC,YAAI,OAAO,IAAI,CAAC;AAChB,YAAI;AACJ,YAAI,SAAS;AACX,cAAI,SAAS,IAAI;AAAA,QACnB,WAAW,SAAS,GAAG;AACrB,cAAI;AAAA,QACN,OAAO;AACL,oBAAU;AACV,cAAI,SAAS,IAAI;AAAA,QACnB;AACA,YAAI,MAAM,GAAG;AACX,iBAAO,IAAI,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;AAAA,QACtC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAM,MAAM,CAAC,QAAQ;AACnB,UAAI,MAAM,IAAI;AACd,UAAI,MAAM;AACV,eAAS,IAAI,MAAM,GAAG,IAAI,IAAI,KAAK;AACjC,YAAI,OAAO,IAAI,CAAC;AAChB,YAAI,SAAS,GAAG;AACd,iBAAO,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;AAAA,QACzC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAM,WAAW,WAAS,MAAO,QAAQ;AAEzC,QAAM,WAAW,WAAU,MAAO,QAAQ,IAAK;AAE/C,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,IACF;AAAA;AAAA;;;ACvGA;AAAA;AAAA;AAMA,QAAM,QAAQ;AACd,QAAM,aAAa,UAAQ,MAAM,EAAE;AACnC,QAAM,QAAQ;AAEd,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,OAAO,OAAO,MAAM;AAE1B,QAAM,SAAN,MAAa;AAAA,MACX,YAAa,MAAM,KAAK,IAAI,KAAK;AAC/B,aAAK,aAAa;AAClB,aAAK,UAAU;AACf,aAAK,YAAY;AAEjB,aAAK,QAAQ;AACb,aAAK,OAAO;AACZ,aAAK,OAAO;AACZ,aAAK,MAAM;AACX,aAAK,MAAM;AACX,aAAK,OAAO;AACZ,aAAK,QAAQ;AACb,aAAK,QAAQ;AACb,aAAK,IAAI,IAAI;AACb,aAAK,WAAW;AAChB,aAAK,QAAQ;AACb,aAAK,QAAQ;AACb,aAAK,SAAS;AACd,aAAK,SAAS;AACd,aAAK,QAAQ;AACb,aAAK,QAAQ;AAEb,YAAI,OAAO,SAAS,IAAI,GAAG;AACzB,eAAK,OAAO,MAAM,OAAO,GAAG,IAAI,GAAG;AAAA,QACrC,WAAW,MAAM;AACf,eAAK,IAAI,IAAI;AAAA,QACf;AAAA,MACF;AAAA,MAEA,OAAQ,KAAK,KAAK,IAAI,KAAK;AACzB,YAAI,CAAC,KAAK;AACR,gBAAM;AAAA,QACR;AAEA,YAAI,CAAC,OAAO,EAAE,IAAI,UAAU,MAAM,MAAM;AACtC,gBAAM,IAAI,MAAM,2BAA2B;AAAA,QAC7C;AAEA,aAAK,OAAO,UAAU,KAAK,KAAK,GAAG;AACnC,aAAK,OAAO,UAAU,KAAK,MAAM,KAAK,CAAC;AACvC,aAAK,MAAM,UAAU,KAAK,MAAM,KAAK,CAAC;AACtC,aAAK,MAAM,UAAU,KAAK,MAAM,KAAK,CAAC;AACtC,aAAK,OAAO,UAAU,KAAK,MAAM,KAAK,EAAE;AACxC,aAAK,QAAQ,QAAQ,KAAK,MAAM,KAAK,EAAE;AACvC,aAAK,QAAQ,UAAU,KAAK,MAAM,KAAK,EAAE;AAIzC,aAAK,KAAK,EAAE,EAAE;AACd,aAAK,KAAK,EAAE,KAAK,IAAI;AAGrB,aAAK,IAAI,IAAI,UAAU,KAAK,MAAM,KAAK,CAAC;AACxC,YAAI,KAAK,IAAI,MAAM,IAAI;AACrB,eAAK,IAAI,IAAI;AAAA,QACf;AACA,YAAI,KAAK,IAAI,MAAM,OAAO,KAAK,KAAK,MAAM,EAAE,MAAM,KAAK;AACrD,eAAK,IAAI,IAAI;AAAA,QACf;AAOA,YAAI,KAAK,IAAI,MAAM,KAAK;AACtB,eAAK,OAAO;AAAA,QACd;AAEA,aAAK,WAAW,UAAU,KAAK,MAAM,KAAK,GAAG;AAC7C,YAAI,IAAI,MAAM,MAAM,KAAK,MAAM,GAAG,EAAE,SAAS,MAAM,eAAiB;AAClE,eAAK,QAAQ,UAAU,KAAK,MAAM,KAAK,EAAE;AACzC,eAAK,QAAQ,UAAU,KAAK,MAAM,KAAK,EAAE;AACzC,eAAK,SAAS,UAAU,KAAK,MAAM,KAAK,CAAC;AACzC,eAAK,SAAS,UAAU,KAAK,MAAM,KAAK,CAAC;AACzC,cAAI,IAAI,MAAM,GAAG,MAAM,GAAG;AAExB,kBAAMC,UAAS,UAAU,KAAK,MAAM,KAAK,GAAG;AAC5C,iBAAK,OAAOA,UAAS,MAAM,KAAK;AAAA,UAClC,OAAO;AACL,kBAAMA,UAAS,UAAU,KAAK,MAAM,KAAK,GAAG;AAC5C,gBAAIA,SAAQ;AACV,mBAAK,OAAOA,UAAS,MAAM,KAAK;AAAA,YAClC;AACA,iBAAK,QAAQ,QAAQ,KAAK,MAAM,KAAK,EAAE;AACvC,iBAAK,QAAQ,QAAQ,KAAK,MAAM,KAAK,EAAE;AAAA,UACzC;AAAA,QACF;AAEA,YAAI,MAAM,IAAI;AACd,iBAAS,IAAI,KAAK,IAAI,MAAM,KAAK,KAAK;AACpC,iBAAO,IAAI,CAAC;AAAA,QACd;AAEA,iBAAS,IAAI,MAAM,KAAK,IAAI,MAAM,KAAK,KAAK;AAC1C,iBAAO,IAAI,CAAC;AAAA,QACd;AAEA,aAAK,aAAa,QAAQ,KAAK;AAC/B,YAAI,KAAK,UAAU,QAAQ,QAAQ,IAAI,IAAM;AAC3C,eAAK,YAAY;AAAA,QACnB;AAAA,MACF;AAAA,MAEA,CAAC,KAAK,EAAG,IAAIC,SAAQ;AACnB,mBAAW,KAAK,IAAI;AAGlB,cAAI,GAAG,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAM,UAC5B,EAAEA,WAAU,MAAM,SAAS;AAC7B,iBAAK,CAAC,IAAI,GAAG,CAAC;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,OAAQ,KAAK,KAAK;AAChB,YAAI,CAAC,KAAK;AACR,gBAAM,KAAK,QAAQ,OAAO,MAAM,GAAG;AACnC,gBAAM;AAAA,QACR;AAEA,YAAI,CAAC,KAAK;AACR,gBAAM;AAAA,QACR;AAEA,YAAI,EAAE,IAAI,UAAU,MAAM,MAAM;AAC9B,gBAAM,IAAI,MAAM,2BAA2B;AAAA,QAC7C;AAEA,cAAM,aAAa,KAAK,SAAS,KAAK,QAAQ,MAAM;AACpD,cAAM,QAAQ,YAAY,KAAK,QAAQ,IAAI,UAAU;AACrD,cAAMC,QAAO,MAAM,CAAC;AACpB,cAAMF,UAAS,MAAM,CAAC;AACtB,aAAK,UAAU,MAAM,CAAC;AAEtB,aAAK,UAAU,UAAU,KAAK,KAAK,KAAKE,KAAI,KAAK,KAAK;AACtD,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,KAAK;AAC/D,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK;AAC9D,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK;AAC9D,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK;AAChE,aAAK,UAAU,QAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/D,YAAI,MAAM,GAAG,IAAI,KAAK,IAAI,EAAE,WAAW,CAAC;AACxC,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,KAAK,KAAK,QAAQ,KAAK,KAAK;AACrE,YAAI,MAAM,eAAiB,MAAM,KAAK,CAAC;AACvC,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK;AACjE,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK;AACjE,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK,MAAM,KAAK,KAAK;AACjE,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK,MAAM,KAAK,KAAK;AACjE,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,YAAYF,OAAM,KAAK,KAAK;AACrE,YAAI,IAAI,MAAM,GAAG,MAAM,GAAG;AACxB,eAAK,UAAU,UAAU,KAAK,MAAM,KAAK,KAAKA,OAAM,KAAK,KAAK;AAAA,QAChE,OAAO;AACL,eAAK,UAAU,UAAU,KAAK,MAAM,KAAK,KAAKA,OAAM,KAAK,KAAK;AAC9D,eAAK,UAAU,QAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/D,eAAK,UAAU,QAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK;AAAA,QACjE;AAEA,YAAI,MAAM,IAAI;AACd,iBAAS,IAAI,KAAK,IAAI,MAAM,KAAK,KAAK;AACpC,iBAAO,IAAI,CAAC;AAAA,QACd;AAEA,iBAAS,IAAI,MAAM,KAAK,IAAI,MAAM,KAAK,KAAK;AAC1C,iBAAO,IAAI,CAAC;AAAA,QACd;AAEA,aAAK,QAAQ;AACb,kBAAU,KAAK,MAAM,KAAK,GAAG,KAAK,KAAK;AACvC,aAAK,aAAa;AAElB,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,IAAK,MAAM;AACT,mBAAW,KAAK,MAAM;AACpB,cAAI,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,QAAW;AAC7C,iBAAK,CAAC,IAAI,KAAK,CAAC;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,OAAQ;AACV,eAAO,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI;AAAA,MAChD;AAAA,MAEA,IAAI,UAAW;AACb,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,MAEA,IAAI,KAAM,MAAM;AACd,YAAI,MAAM,KAAK,IAAI,IAAI,GAAG;AACxB,eAAK,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI;AAAA,QAClC,OAAO;AACL,eAAK,IAAI,IAAI;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAEA,QAAM,cAAc,CAAC,GAAG,eAAe;AACrC,YAAM,WAAW;AACjB,UAAI,KAAK;AACT,UAAIA,UAAS;AACb,UAAI;AACJ,YAAM,OAAO,WAAW,MAAM,CAAC,EAAE,QAAQ;AAEzC,UAAI,OAAO,WAAW,EAAE,IAAI,UAAU;AACpC,cAAM,CAAC,IAAIA,SAAQ,KAAK;AAAA,MAC1B,OAAO;AAEL,QAAAA,UAAS,WAAW,QAAQ,EAAE;AAC9B,aAAK,WAAW,SAAS,EAAE;AAE3B,WAAG;AACD,cAAI,OAAO,WAAW,EAAE,KAAK,YACzB,OAAO,WAAWA,OAAM,KAAK,YAAY;AAE3C,kBAAM,CAAC,IAAIA,SAAQ,KAAK;AAAA,UAC1B,WAAW,OAAO,WAAW,EAAE,IAAI,YAC/B,OAAO,WAAWA,OAAM,KAAK,YAAY;AAE3C,kBAAM,CAAC,GAAG,MAAM,GAAG,WAAW,CAAC,GAAGA,SAAQ,IAAI;AAAA,UAChD,OAAO;AAEL,iBAAK,WAAW,KAAK,WAAW,SAASA,OAAM,GAAG,EAAE;AACpD,YAAAA,UAAS,WAAW,QAAQA,OAAM;AAAA,UACpC;AAAA,QACF,SAASA,YAAW,QAAQ,CAAC;AAG7B,YAAI,CAAC,KAAK;AACR,gBAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI,IAAI;AAAA,QAC3C;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAM,YAAY,CAAC,KAAK,KAAK,SAC3B,IAAI,MAAM,KAAK,MAAM,IAAI,EAAE,SAAS,MAAM,EAAE,QAAQ,QAAQ,EAAE;AAEhE,QAAM,UAAU,CAAC,KAAK,KAAK,SACzB,UAAU,UAAU,KAAK,KAAK,IAAI,CAAC;AAErC,QAAM,YAAY,SAAO,QAAQ,OAAO,OAAO,IAAI,KAAK,MAAM,GAAI;AAElE,QAAM,YAAY,CAAC,KAAK,KAAK,SAC3B,IAAI,GAAG,IAAI,MAAO,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,IACtD,eAAe,KAAK,KAAK,IAAI;AAEjC,QAAM,UAAU,WAAS,MAAM,KAAK,IAAI,OAAO;AAE/C,QAAM,iBAAiB,CAAC,KAAK,KAAK,SAChC,QAAQ;AAAA,MACN,IAAI,MAAM,KAAK,MAAM,IAAI,EACtB,SAAS,MAAM,EAAE,QAAQ,SAAS,EAAE,EAAE,KAAK;AAAA,MAAG;AAAA,IAAC,CAAC;AAGvD,QAAM,SAAS;AAAA,MACb,IAAI;AAAA,MACJ,GAAG;AAAA,IACL;AAEA,QAAM,YAAY,CAAC,KAAK,KAAK,MAAM,WACjC,WAAW,OAAO,QAClB,SAAS,OAAO,IAAI,KAAK,SAAS,KAC7B,MAAM,OAAO,QAAQ,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,SAClD,eAAe,KAAK,KAAK,MAAM,MAAM,GAAG;AAE/C,QAAM,iBAAiB,CAAC,KAAK,KAAK,MAAM,WACtC,IAAI,MAAM,YAAY,QAAQ,IAAI,GAAG,KAAK,MAAM,OAAO;AAEzD,QAAM,cAAc,CAAC,QAAQ,SAC3B,SAAS,KAAK,MAAM,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;AAE/C,QAAM,WAAW,CAAC,QAAQ,UACvB,OAAO,WAAW,OAAO,IAAI,SAC5B,IAAI,MAAM,OAAO,OAAO,SAAS,CAAC,EAAE,KAAK,GAAG,IAAI,SAAS,OAAO;AAEpE,QAAM,UAAU,CAAC,KAAK,KAAK,MAAM,SAC/B,SAAS,OAAO,QAChB,UAAU,KAAK,KAAK,MAAM,KAAK,QAAQ,IAAI,GAAI;AAGjD,QAAM,QAAQ,IAAI,MAAM,GAAG,EAAE,KAAK,IAAI;AAEtC,QAAM,YAAY,CAAC,KAAK,KAAK,MAAM,WACjC,WAAW,OAAO,SACjB,IAAI,MAAM,SAAS,OAAO,KAAK,MAAM,MAAM,GAC5C,OAAO,WAAW,OAAO,WAAW,MAAM,KAAK,OAAO,SAAS;AAEjE,WAAO,UAAU;AAAA;AAAA;;;AC/SjB;AAAA;AAAA;AACA,QAAM,SAAS;AACf,QAAMG,QAAO,UAAQ,MAAM;AAE3B,QAAM,MAAN,MAAU;AAAA,MACR,YAAa,KAAKC,SAAQ;AACxB,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,UAAU,IAAI,WAAW;AAC9B,aAAK,UAAU,IAAI,WAAW;AAC9B,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,MAAM,IAAI,OAAO;AACtB,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,WAAW,IAAI,YAAY;AAChC,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,MAAM,IAAI,OAAO;AACtB,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,MAAM,IAAI,OAAO;AACtB,aAAK,MAAM,IAAI,OAAO;AACtB,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,SAASA,WAAU;AAAA,MAC1B;AAAA,MAEA,SAAU;AACR,cAAM,OAAO,KAAK,WAAW;AAC7B,YAAI,SAAS,IAAI;AACf,iBAAO;AAAA,QACT;AAEA,cAAM,UAAU,OAAO,WAAW,IAAI;AAGtC,cAAM,SAAS,MAAM,KAAK,KAAK,IAAI,UAAU,GAAG;AAChD,cAAM,MAAM,OAAO,YAAY,MAAM;AAGrC,iBAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,cAAI,CAAC,IAAI;AAAA,QACX;AAEA,YAAI,OAAO;AAAA;AAAA;AAAA;AAAA,UAIT,OAAO,eAAeD,MAAK,SAAS,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE;AAAA,UAC3D,MAAM,KAAK,QAAQ;AAAA,UACnB,KAAK,KAAK,OAAO;AAAA,UACjB,KAAK,KAAK,OAAO;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,KAAK,SAAS;AAAA,UACrB,MAAM,KAAK,SAAS,yBAAyB;AAAA,UAC7C,UAAU;AAAA,UACV,OAAO,KAAK,SAAS;AAAA,UACrB,OAAO,KAAK,SAAS;AAAA,UACrB,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,OAAO,KAAK,SAAS;AAAA,UACrB,OAAO,KAAK,SAAS;AAAA,QACvB,CAAC,EAAE,OAAO,GAAG;AAEb,YAAI,MAAM,MAAM,KAAK,SAAS,MAAM;AAGpC,iBAAS,IAAI,UAAU,KAAK,IAAI,IAAI,QAAQ,KAAK;AAC/C,cAAI,CAAC,IAAI;AAAA,QACX;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,aAAc;AACZ,eACE,KAAK,YAAY,MAAM,IACvB,KAAK,YAAY,OAAO,IACxB,KAAK,YAAY,OAAO,IACxB,KAAK,YAAY,KAAK,IACtB,KAAK,YAAY,KAAK,IACtB,KAAK,YAAY,OAAO,IACxB,KAAK,YAAY,SAAS,IAC1B,KAAK,YAAY,SAAS,IAC1B,KAAK,YAAY,KAAK,IACtB,KAAK,YAAY,OAAO,IACxB,KAAK,YAAY,UAAU,IAC3B,KAAK,YAAY,OAAO,IACxB,KAAK,YAAY,MAAM,IACvB,KAAK,YAAY,KAAK,IACtB,KAAK,YAAY,OAAO;AAAA,MAE5B;AAAA,MAEA,YAAa,OAAO;AAClB,YAAI,KAAK,KAAK,MAAM,QAAQ,KAAK,KAAK,MAAM,QAAW;AACrD,iBAAO;AAAA,QACT;AACA,cAAM,IAAI,KAAK,KAAK,aAAa,OAAO,KAAK,KAAK,EAAE,QAAQ,IAAI,MAC5D,KAAK,KAAK;AACd,cAAM,IAAI,OACP,UAAU,SAAS,UAAU,SAAS,UAAU,UAC7C,YAAY,MAChB,QAAQ,MAAM,IAAI;AACpB,cAAM,UAAU,OAAO,WAAW,CAAC;AAInC,YAAI,SAAS,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI;AAC5D,YAAI,UAAU,UAAU,KAAK,IAAI,IAAI,MAAM,GAAG;AAC5C,oBAAU;AAAA,QACZ;AACA,cAAM,MAAM,SAAS;AACrB,eAAO,MAAM;AAAA,MACf;AAAA,IACF;AAEA,QAAI,QAAQ,CAAC,QAAQ,IAAI,MAAM,IAAI,IAAI,MAAM,QAAQ,MAAM,GAAG,EAAE,GAAG,CAAC;AAEpE,QAAM,QAAQ,CAAC,GAAG,MAChB,IAAI,OAAO,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI;AAE7D,QAAM,UAAU,YACd,OACG,QAAQ,OAAO,EAAE,EACjB,MAAM,IAAI,EACV,OAAO,aAAa,uBAAO,OAAO,IAAI,CAAC;AAE5C,QAAM,cAAc,CAAC,KAAK,SAAS;AACjC,YAAM,IAAI,SAAS,MAAM,EAAE;AAI3B,UAAI,MAAM,OAAO,WAAW,IAAI,IAAI,GAAG;AACrC,eAAO;AAAA,MACT;AAEA,aAAO,KAAK,OAAO,IAAI,KAAK,MAAM;AAClC,YAAM,KAAK,KAAK,MAAM,GAAG;AACzB,YAAM,IAAI,GAAG,MAAM,EAAE,QAAQ,4BAA4B,IAAI;AAC7D,UAAI,CAAC,GAAG;AACN,eAAO;AAAA,MACT;AAEA,YAAM,IAAI,GAAG,KAAK,GAAG;AACrB,UAAI,CAAC,IAAI,0CAA0C,KAAK,CAAC,IACrD,IAAI,KAAK,IAAI,GAAI,IACjB,WAAW,KAAK,CAAC,IAAI,CAAC,IACtB;AACJ,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACrJjB;AAAA;AAIA,WAAO,UAAU,SAAO;AACtB,UAAI,IAAI,IAAI,SAAS;AACrB,UAAI,eAAe;AACnB,aAAO,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK;AACtC,uBAAe;AACf;AAAA,MACF;AACA,aAAO,iBAAiB,KAAK,MAAM,IAAI,MAAM,GAAG,YAAY;AAAA,IAC9D;AAAA;AAAA;;;ACZA;AAAA;AAAA;AACA,WAAO,UAAU,UAAQ,cAAc,KAAK;AAAA,MAC1C,KAAM,MAAM,SAAS,OAAO,CAAC,GAAG;AAC9B,YAAI,KAAK,MAAM;AACb,eAAK,OAAO,KAAK;AAAA,QACnB;AACA,YAAI,KAAK,KAAK;AACZ,eAAK,MAAM,KAAK;AAAA,QAClB;AACA,aAAK,OAAO,mBAAmB,SAAS,QAAQ,QAAQ;AACxD,aAAK,UAAU;AACf,YAAI,CAAC,KAAK,UAAU,KAAK,gBAAgB,OAAO;AAC9C,cAAI,mBAAmB,OAAO;AAC5B,mBAAO,OAAO,OAAO,SAAS,IAAI;AAClC,sBAAU,QAAQ;AAAA,UACpB;AACA,eAAK,KAAK,QAAQ,KAAK,SAAS,SAAS,IAAI;AAAA,QAC/C,WAAW,mBAAmB,OAAO;AACnC,eAAK,KAAK,SAAS,OAAO,OAAO,SAAS,IAAI,CAAC;AAAA,QACjD,OAAO;AACL,eAAK,KAAK,SAAS,OAAO,OAAO,IAAI,MAAM,GAAG,IAAI,KAAK,OAAO,EAAE,GAAG,IAAI,CAAC;AAAA,QAC1E;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACvBA;AAAA;AAAA;AAKA,QAAM,MAAM;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAM,MAAM,IAAI,IAAI,UAClB,OAAO,aAAa,QAAS,KAAK,WAAW,CAAC,CAAC,CAAC;AAElD,QAAM,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAM,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;AAE1D,WAAO,UAAU;AAAA,MACf,QAAQ,OAAK,IAAI,OAAO,CAACE,IAAG,MAAMA,GAAE,MAAM,CAAC,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;AAAA,MAClE,QAAQ,OAAK,IAAI,OAAO,CAACA,IAAG,MAAMA,GAAE,MAAM,CAAC,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;AAAA,IACpE;AAAA;AAAA;;;ACtBA;AAAA;AACA,QAAM,EAAE,YAAY,MAAM,IAAI,UAAQ,MAAM,EAAE;AAQ9C,WAAO,UAAU,CAAAC,UAAQ;AACvB,UAAI,IAAI;AAER,UAAI,SAAS,MAAMA,KAAI;AACvB,aAAO,WAAWA,KAAI,KAAK,OAAO,MAAM;AAGtC,cAAM,OAAOA,MAAK,OAAO,CAAC,MAAM,OAAOA,MAAK,MAAM,GAAG,CAAC,MAAM,SAAS,MACjE,OAAO;AACX,QAAAA,QAAOA,MAAK,MAAM,KAAK,MAAM;AAC7B,aAAK;AACL,iBAAS,MAAMA,KAAI;AAAA,MACrB;AACA,aAAO,CAAC,GAAGA,KAAI;AAAA,IACjB;AAAA;AAAA;;;ACvBA;AAAA;AAAA;AACA,WAAO,UAAU,CAAC,MAAM,OAAO,aAAa;AAC1C,cAAQ;AAOR,UAAI,UAAU;AACZ,gBAAQ,OAAO,OAAS,CAAC;AAAA,MAC3B;AAGA,UAAI,OAAO;AACT,YAAI,OAAO,KAAO;AAChB,kBAAQ;AAAA,QACV;AACA,YAAI,OAAO,IAAM;AACf,kBAAQ;AAAA,QACV;AACA,YAAI,OAAO,GAAK;AACd,kBAAQ;AAAA,QACV;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC1BA;AAAA;AAAA;AACA,QAAM,EAAE,SAAS,IAAI;AACrB,QAAM,MAAM;AACZ,QAAM,SAAS;AACf,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,WAAW;AACjB,QAAM,aAAa;AAEnB,QAAM,aAAa,CAACA,OAAMC,YAAW;AACnC,UAAI,CAACA,SAAQ;AACX,eAAO,SAASD,KAAI;AAAA,MACtB;AACA,MAAAA,QAAO,SAASA,KAAI,EAAE,QAAQ,aAAa,EAAE;AAC7C,aAAO,WAAWC,OAAM,IAAI,MAAMD;AAAA,IACpC;AAEA,QAAM,cAAc,KAAK,OAAO;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,YAAY,OAAO,UAAU;AACnC,QAAM,SAAS;AACf,QAAM,WAAW;AACjB,QAAM,oBAAoB;AAE1B,QAAM,UAAU;AAEhB,QAAM,aAAa,OAAO,MAAM,mBAAmB,SAAS;AAAA,MAC1D,YAAa,GAAG,KAAK;AACnB,cAAM,OAAO,CAAC;AACd,cAAM,GAAG;AACT,YAAI,OAAO,MAAM,UAAU;AACzB,gBAAM,IAAI,UAAU,kBAAkB;AAAA,QACxC;AACA,aAAK,OAAO,SAAS,CAAC;AAEtB,aAAK,WAAW,CAAC,CAAC,IAAI;AAEtB,aAAK,QAAQ,QAAQ,UAAU,QAAQ,OAAO,KAAK;AACnD,aAAK,SAAS,QAAQ,IAAI,QAAQ;AAClC,aAAK,cAAc,IAAI,eAAe;AACtC,aAAK,YAAY,IAAI,aAAa,oBAAI,IAAI;AAC1C,aAAK,YAAY,IAAI,aAAa,oBAAI,IAAI;AAC1C,aAAK,gBAAgB,CAAC,CAAC,IAAI;AAC3B,aAAK,MAAM,SAAS,IAAI,OAAO,QAAQ,IAAI,CAAC;AAC5C,aAAK,SAAS,CAAC,CAAC,IAAI;AACpB,aAAK,QAAQ,CAAC,CAAC,IAAI;AACnB,aAAK,UAAU,CAAC,CAAC,IAAI;AACrB,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,SAAS,IAAI,SAAS,SAAS,IAAI,MAAM,IAAI;AAElD,aAAK,KAAK;AACV,aAAK,WAAW;AAChB,aAAK,cAAc;AACnB,aAAK,MAAM;AACX,aAAK,SAAS;AACd,aAAK,SAAS;AACd,aAAK,MAAM;AACX,aAAK,SAAS;AAEd,YAAI,OAAO,IAAI,WAAW,YAAY;AACpC,eAAK,GAAG,QAAQ,IAAI,MAAM;AAAA,QAC5B;AAEA,YAAI,WAAW;AACf,YAAI,CAAC,KAAK,eAAe;AACvB,gBAAM,CAAC,MAAM,QAAQ,IAAI,kBAAkB,KAAK,IAAI;AACpD,cAAI,MAAM;AACR,iBAAK,OAAO;AACZ,uBAAW;AAAA,UACb;AAAA,QACF;AAEA,aAAK,QAAQ,CAAC,CAAC,IAAI,SAAS,QAAQ,aAAa;AACjD,YAAI,KAAK,OAAO;AAGd,eAAK,OAAO,SAAS,OAAO,KAAK,KAAK,QAAQ,OAAO,GAAG,CAAC;AACzD,cAAI,EAAE,QAAQ,OAAO,GAAG;AAAA,QAC1B;AAEA,aAAK,WAAW,SAAS,IAAI,YAAYA,MAAK,QAAQ,KAAK,KAAK,CAAC,CAAC;AAElE,YAAI,KAAK,SAAS,IAAI;AACpB,eAAK,OAAO;AAAA,QACd;AAEA,YAAI,UAAU;AACZ,eAAK,KAAK,kBAAkB,aAAa,QAAQ,uBAAuB;AAAA,YACtE,OAAO;AAAA,YACP,MAAM,WAAW,KAAK;AAAA,UACxB,CAAC;AAAA,QACH;AAEA,YAAI,KAAK,UAAU,IAAI,KAAK,QAAQ,GAAG;AACrC,eAAK,OAAO,EAAE,KAAK,UAAU,IAAI,KAAK,QAAQ,CAAC;AAAA,QACjD,OAAO;AACL,eAAK,KAAK,EAAE;AAAA,QACd;AAAA,MACF;AAAA,MAEA,KAAM,OAAO,MAAM;AACjB,YAAI,OAAO,SAAS;AAClB,eAAK,SAAS,IAAI;AAAA,QACpB;AACA,eAAO,MAAM,KAAK,IAAI,GAAG,IAAI;AAAA,MAC/B;AAAA,MAEA,CAAC,KAAK,IAAK;AACT,QAAAD,IAAG,MAAM,KAAK,UAAU,CAAC,IAAI,SAAS;AACpC,cAAI,IAAI;AACN,mBAAO,KAAK,KAAK,SAAS,EAAE;AAAA,UAC9B;AACA,eAAK,OAAO,EAAE,IAAI;AAAA,QACpB,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,OAAO,EAAG,MAAM;AACf,aAAK,UAAU,IAAI,KAAK,UAAU,IAAI;AACtC,aAAK,OAAO;AACZ,YAAI,CAAC,KAAK,OAAO,GAAG;AAClB,eAAK,OAAO;AAAA,QACd;AACA,aAAK,OAAO,QAAQ,IAAI;AACxB,aAAK,KAAK,QAAQ,IAAI;AACtB,aAAK,OAAO,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,gBAAQ,KAAK,MAAM;AAAA,UACjB,KAAK;AAAQ,mBAAO,KAAK,IAAI,EAAE;AAAA,UAC/B,KAAK;AAAa,mBAAO,KAAK,SAAS,EAAE;AAAA,UACzC,KAAK;AAAgB,mBAAO,KAAK,OAAO,EAAE;AAAA,UAE1C;AAAS,mBAAO,KAAK,IAAI;AAAA,QAC3B;AAAA,MACF;AAAA,MAEA,CAAC,IAAI,EAAG,MAAM;AACZ,eAAO,QAAQ,MAAM,KAAK,SAAS,aAAa,KAAK,QAAQ;AAAA,MAC/D;AAAA,MAEA,CAAC,MAAM,EAAGC,OAAM;AACd,eAAO,WAAWA,OAAM,KAAK,MAAM;AAAA,MACrC;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,SAAS,eAAe,KAAK,UAAU;AAC9C,eAAK,UAAU;AAAA,QACjB;AAEA,aAAK,SAAS,IAAI,OAAO;AAAA,UACvB,MAAM,KAAK,MAAM,EAAE,KAAK,IAAI;AAAA;AAAA,UAE5B,UAAU,KAAK,SAAS,SAAS,KAAK,MAAM,EAAE,KAAK,QAAQ,IACzD,KAAK;AAAA;AAAA;AAAA,UAGP,MAAM,KAAK,IAAI,EAAE,KAAK,KAAK,IAAI;AAAA,UAC/B,KAAK,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,UACtC,KAAK,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,UACtC,MAAM,KAAK,KAAK;AAAA,UAChB,OAAO,KAAK,UAAU,OAAO,KAAK,SAAS,KAAK,KAAK;AAAA,UACrD,MAAM,KAAK;AAAA,UACX,OAAO,KAAK,WAAW,OACvB,KAAK,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS;AAAA,UAC7C,OAAO,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,UACxC,OAAO,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,QAC1C,CAAC;AAED,YAAI,KAAK,OAAO,OAAO,KAAK,CAAC,KAAK,OAAO;AACvC,gBAAM,MAAM,IAAI,IAAI;AAAA,YAClB,OAAO,KAAK,WAAW,OAAO,KAAK,OAAO;AAAA,YAC1C,OAAO,KAAK,WAAW,OAAO,KAAK,OAAO;AAAA,YAC1C,KAAK,KAAK,WAAW,OAAO,KAAK,OAAO;AAAA,YACxC,OAAO,KAAK,UAAU,OAAO,KAAK,SAAS,KAAK,OAAO;AAAA,YACvD,MAAM,KAAK,MAAM,EAAE,KAAK,IAAI;AAAA,YAC5B,UAAU,KAAK,SAAS,SAAS,KAAK,MAAM,EAAE,KAAK,QAAQ,IACzD,KAAK;AAAA,YACP,MAAM,KAAK,OAAO;AAAA,YAClB,KAAK,KAAK,WAAW,OAAO,KAAK,OAAO;AAAA,YACxC,OAAO,KAAK,WAAW,OAAO,KAAK,OAAO;AAAA,YAC1C,KAAK,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,YACtC,KAAK,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,YACtC,OAAO,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,UAC1C,CAAC,EAAE,OAAO,CAAC;AAAA,QACb;AACA,cAAM,MAAM,KAAK,OAAO,KAAK;AAAA,MAC/B;AAAA,MAEA,CAAC,SAAS,IAAK;AACb,YAAI,KAAK,KAAK,MAAM,EAAE,MAAM,KAAK;AAC/B,eAAK,QAAQ;AAAA,QACf;AACA,aAAK,KAAK,OAAO;AACjB,aAAK,MAAM,EAAE;AACb,aAAK,IAAI;AAAA,MACX;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,QAAAD,IAAG,SAAS,KAAK,UAAU,CAAC,IAAI,aAAa;AAC3C,cAAI,IAAI;AACN,mBAAO,KAAK,KAAK,SAAS,EAAE;AAAA,UAC9B;AACA,eAAK,UAAU,EAAE,QAAQ;AAAA,QAC3B,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,UAAU,EAAG,UAAU;AACtB,aAAK,WAAW,SAAS,QAAQ;AACjC,aAAK,MAAM,EAAE;AACb,aAAK,IAAI;AAAA,MACX;AAAA,MAEA,CAAC,QAAQ,EAAG,UAAU;AACpB,aAAK,OAAO;AACZ,aAAK,WAAW,SAASC,MAAK,SAAS,KAAK,KAAK,QAAQ,CAAC;AAC1D,aAAK,KAAK,OAAO;AACjB,aAAK,MAAM,EAAE;AACb,aAAK,IAAI;AAAA,MACX;AAAA,MAEA,CAAC,IAAI,IAAK;AACR,YAAI,KAAK,KAAK,QAAQ,GAAG;AACvB,gBAAM,UAAU,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK;AAChD,cAAI,KAAK,UAAU,IAAI,OAAO,GAAG;AAC/B,kBAAM,WAAW,KAAK,UAAU,IAAI,OAAO;AAC3C,gBAAI,SAAS,QAAQ,KAAK,GAAG,MAAM,GAAG;AACpC,qBAAO,KAAK,QAAQ,EAAE,QAAQ;AAAA,YAChC;AAAA,UACF;AACA,eAAK,UAAU,IAAI,SAAS,KAAK,QAAQ;AAAA,QAC3C;AAEA,aAAK,MAAM,EAAE;AACb,YAAI,KAAK,KAAK,SAAS,GAAG;AACxB,iBAAO,KAAK,IAAI;AAAA,QAClB;AAEA,aAAK,QAAQ,EAAE;AAAA,MACjB;AAAA,MAEA,CAAC,QAAQ,IAAK;AACZ,QAAAD,IAAG,KAAK,KAAK,UAAU,KAAK,CAAC,IAAI,OAAO;AACtC,cAAI,IAAI;AACN,mBAAO,KAAK,KAAK,SAAS,EAAE;AAAA,UAC9B;AACA,eAAK,UAAU,EAAE,EAAE;AAAA,QACrB,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,UAAU,EAAG,IAAI;AAChB,aAAK,KAAK;AACV,YAAI,KAAK,SAAS,GAAG;AACnB,iBAAO,KAAK,KAAK,EAAE;AAAA,QACrB;AAEA,aAAK,WAAW,MAAM,KAAK,KAAK,KAAK,KAAK,OAAO,GAAG;AACpD,aAAK,cAAc,KAAK;AACxB,cAAM,SAAS,KAAK,IAAI,KAAK,UAAU,KAAK,WAAW;AACvD,aAAK,MAAM,OAAO,YAAY,MAAM;AACpC,aAAK,SAAS;AACd,aAAK,MAAM;AACX,aAAK,SAAS,KAAK,KAAK;AACxB,aAAK,SAAS,KAAK,IAAI;AACvB,aAAK,IAAI,EAAE;AAAA,MACb;AAAA,MAEA,CAAC,IAAI,IAAK;AACR,cAAM,EAAE,IAAI,KAAK,QAAQ,QAAQ,IAAI,IAAI;AACzC,QAAAA,IAAG,KAAK,IAAI,KAAK,QAAQ,QAAQ,KAAK,CAAC,IAAI,cAAc;AACvD,cAAI,IAAI;AAGN,mBAAO,KAAK,KAAK,EAAE,MAAM,KAAK,KAAK,SAAS,EAAE,CAAC;AAAA,UACjD;AACA,eAAK,MAAM,EAAE,SAAS;AAAA,QACxB,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,KAAK,EAAG,IAAI;AACX,QAAAA,IAAG,MAAM,KAAK,IAAI,EAAE;AAAA,MACtB;AAAA,MAEA,CAAC,MAAM,EAAG,WAAW;AACnB,YAAI,aAAa,KAAK,KAAK,SAAS,GAAG;AACrC,gBAAM,KAAK,IAAI,MAAM,4BAA4B;AACjD,aAAG,OAAO,KAAK;AACf,aAAG,UAAU;AACb,aAAG,OAAO;AACV,iBAAO,KAAK,KAAK,EAAE,MAAM,KAAK,KAAK,SAAS,EAAE,CAAC;AAAA,QACjD;AAEA,YAAI,YAAY,KAAK,QAAQ;AAC3B,gBAAM,KAAK,IAAI,MAAM,gCAAgC;AACrD,aAAG,OAAO,KAAK;AACf,aAAG,UAAU;AACb,aAAG,OAAO;AACV,iBAAO,KAAK,KAAK,EAAE,MAAM,KAAK,KAAK,SAAS,EAAE,CAAC;AAAA,QACjD;AAQA,YAAI,cAAc,KAAK,QAAQ;AAC7B,mBAAS,IAAI,WAAW,IAAI,KAAK,UAAU,YAAY,KAAK,aAAa,KAAK;AAC5E,iBAAK,IAAI,IAAI,KAAK,MAAM,IAAI;AAC5B;AACA,iBAAK;AAAA,UACP;AAAA,QACF;AAEA,cAAM,WAAW,KAAK,WAAW,KAAK,cAAc,KAAK,IAAI,SAC3D,KAAK,MAAM,KAAK,IAAI,MAAM,KAAK,QAAQ,KAAK,SAAS,SAAS;AAEhE,cAAM,UAAU,KAAK,MAAM,QAAQ;AACnC,YAAI,CAAC,SAAS;AACZ,eAAK,UAAU,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;AAAA,QACxC,OAAO;AACL,eAAK,OAAO,EAAE;AAAA,QAChB;AAAA,MACF;AAAA,MAEA,CAAC,UAAU,EAAG,IAAI;AAChB,aAAK,KAAK,SAAS,EAAE;AAAA,MACvB;AAAA,MAEA,MAAO,UAAU;AACf,YAAI,KAAK,cAAc,SAAS,QAAQ;AACtC,gBAAM,KAAK,IAAI,MAAM,iCAAiC;AACtD,aAAG,OAAO,KAAK;AACf,iBAAO,KAAK,KAAK,SAAS,EAAE;AAAA,QAC9B;AACA,aAAK,UAAU,SAAS;AACxB,aAAK,eAAe,SAAS;AAC7B,aAAK,OAAO,SAAS;AACrB,aAAK,UAAU,SAAS;AACxB,eAAO,MAAM,MAAM,QAAQ;AAAA,MAC7B;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,YAAI,CAAC,KAAK,QAAQ;AAChB,cAAI,KAAK,aAAa;AACpB,kBAAM,MAAM,OAAO,MAAM,KAAK,WAAW,CAAC;AAAA,UAC5C;AACA,iBAAO,KAAK,KAAK,EAAE,QAAM,KAAK,KAAK,KAAK,SAAS,EAAE,IAAI,KAAK,IAAI,CAAC;AAAA,QACnE;AAEA,YAAI,KAAK,UAAU,KAAK,QAAQ;AAG9B,eAAK,MAAM,OAAO,YAAY,KAAK,IAAI,KAAK,aAAa,KAAK,IAAI,MAAM,CAAC;AACzE,eAAK,SAAS;AAAA,QAChB;AACA,aAAK,SAAS,KAAK,IAAI,SAAS,KAAK;AACrC,aAAK,IAAI,EAAE;AAAA,MACb;AAAA,IACF,CAAC;AAED,QAAM,iBAAN,cAA6B,WAAW;AAAA,MACtC,CAAC,KAAK,IAAK;AACT,aAAK,OAAO,EAAEA,IAAG,UAAU,KAAK,QAAQ,CAAC;AAAA,MAC3C;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,aAAK,UAAU,EAAEA,IAAG,aAAa,KAAK,QAAQ,CAAC;AAAA,MACjD;AAAA,MAEA,CAAC,QAAQ,IAAK;AACZ,aAAK,UAAU,EAAEA,IAAG,SAAS,KAAK,UAAU,GAAG,CAAC;AAAA,MAClD;AAAA,MAEA,CAAC,IAAI,IAAK;AACR,YAAI,QAAQ;AACZ,YAAI;AACF,gBAAM,EAAE,IAAI,KAAK,QAAQ,QAAQ,IAAI,IAAI;AACzC,gBAAM,YAAYA,IAAG,SAAS,IAAI,KAAK,QAAQ,QAAQ,GAAG;AAC1D,eAAK,MAAM,EAAE,SAAS;AACtB,kBAAQ;AAAA,QACV,UAAE;AAGA,cAAI,OAAO;AACT,gBAAI;AACF,mBAAK,KAAK,EAAE,MAAM;AAAA,cAAC,CAAC;AAAA,YACtB,SAAS,IAAI;AAAA,YAAC;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,CAAC,UAAU,EAAG,IAAI;AAChB,WAAG;AAAA,MACL;AAAA,MAEA,CAAC,KAAK,EAAG,IAAI;AACX,QAAAA,IAAG,UAAU,KAAK,EAAE;AACpB,WAAG;AAAA,MACL;AAAA,IACF;AAEA,QAAM,gBAAgB,OAAO,MAAM,sBAAsB,SAAS;AAAA,MAChE,YAAa,WAAW,KAAK;AAC3B,cAAM,OAAO,CAAC;AACd,cAAM,GAAG;AACT,aAAK,gBAAgB,CAAC,CAAC,IAAI;AAC3B,aAAK,WAAW,CAAC,CAAC,IAAI;AACtB,aAAK,SAAS,CAAC,CAAC,IAAI;AACpB,aAAK,QAAQ,CAAC,CAAC,IAAI;AACnB,aAAK,UAAU,CAAC,CAAC,IAAI;AAErB,aAAK,YAAY;AACjB,aAAK,OAAO,UAAU;AACtB,YAAI,KAAK,SAAS,eAAe,KAAK,UAAU;AAC9C,eAAK,UAAU;AAAA,QACjB;AAEA,aAAK,SAAS,IAAI,UAAU;AAE5B,aAAK,OAAO,SAAS,UAAU,IAAI;AACnC,aAAK,OAAO,KAAK,IAAI,EAAE,UAAU,IAAI;AACrC,aAAK,MAAM,KAAK,WAAW,OAAO,UAAU;AAC5C,aAAK,MAAM,KAAK,WAAW,OAAO,UAAU;AAC5C,aAAK,QAAQ,KAAK,WAAW,OAAO,UAAU;AAC9C,aAAK,QAAQ,KAAK,WAAW,OAAO,UAAU;AAC9C,aAAK,OAAO,UAAU;AACtB,aAAK,QAAQ,KAAK,UAAU,OAAO,IAAI,SAAS,UAAU;AAC1D,aAAK,QAAQ,KAAK,WAAW,OAAO,UAAU;AAC9C,aAAK,QAAQ,KAAK,WAAW,OAAO,UAAU;AAC9C,aAAK,WAAW,SAAS,UAAU,QAAQ;AAE3C,YAAI,OAAO,IAAI,WAAW,YAAY;AACpC,eAAK,GAAG,QAAQ,IAAI,MAAM;AAAA,QAC5B;AAEA,YAAI,WAAW;AACf,YAAI,CAAC,KAAK,eAAe;AACvB,gBAAM,CAAC,MAAM,QAAQ,IAAI,kBAAkB,KAAK,IAAI;AACpD,cAAI,MAAM;AACR,iBAAK,OAAO;AACZ,uBAAW;AAAA,UACb;AAAA,QACF;AAEA,aAAK,SAAS,UAAU;AACxB,aAAK,cAAc,UAAU;AAE7B,aAAK,SAAS,IAAI,OAAO;AAAA,UACvB,MAAM,KAAK,MAAM,EAAE,KAAK,IAAI;AAAA,UAC5B,UAAU,KAAK,SAAS,SAAS,KAAK,MAAM,EAAE,KAAK,QAAQ,IACzD,KAAK;AAAA;AAAA;AAAA,UAGP,MAAM,KAAK;AAAA,UACX,KAAK,KAAK,WAAW,OAAO,KAAK;AAAA,UACjC,KAAK,KAAK,WAAW,OAAO,KAAK;AAAA,UACjC,MAAM,KAAK;AAAA,UACX,OAAO,KAAK,UAAU,OAAO,KAAK;AAAA,UAClC,MAAM,KAAK;AAAA,UACX,OAAO,KAAK,WAAW,OAAO,KAAK;AAAA,UACnC,OAAO,KAAK,WAAW,OAAO,KAAK;AAAA,UACnC,OAAO,KAAK,WAAW,OAAO,KAAK;AAAA,QACrC,CAAC;AAED,YAAI,UAAU;AACZ,eAAK,KAAK,kBAAkB,aAAa,QAAQ,uBAAuB;AAAA,YACtE,OAAO;AAAA,YACP,MAAM,WAAW,KAAK;AAAA,UACxB,CAAC;AAAA,QACH;AAEA,YAAI,KAAK,OAAO,OAAO,KAAK,CAAC,KAAK,OAAO;AACvC,gBAAM,MAAM,IAAI,IAAI;AAAA,YAClB,OAAO,KAAK,WAAW,OAAO,KAAK;AAAA,YACnC,OAAO,KAAK,WAAW,OAAO,KAAK;AAAA,YACnC,KAAK,KAAK,WAAW,OAAO,KAAK;AAAA,YACjC,OAAO,KAAK,UAAU,OAAO,KAAK;AAAA,YAClC,MAAM,KAAK,MAAM,EAAE,KAAK,IAAI;AAAA,YAC5B,UAAU,KAAK,SAAS,SAAS,KAAK,MAAM,EAAE,KAAK,QAAQ,IACzD,KAAK;AAAA,YACP,MAAM,KAAK;AAAA,YACX,KAAK,KAAK,WAAW,OAAO,KAAK;AAAA,YACjC,OAAO,KAAK,WAAW,OAAO,KAAK;AAAA,YACnC,KAAK,KAAK,WAAW,OAAO,KAAK,UAAU;AAAA,YAC3C,KAAK,KAAK,WAAW,OAAO,KAAK,UAAU;AAAA,YAC3C,OAAO,KAAK,WAAW,OAAO,KAAK,UAAU;AAAA,UAC/C,CAAC,EAAE,OAAO,CAAC;AAAA,QACb;AAEA,cAAM,MAAM,KAAK,OAAO,KAAK;AAC7B,kBAAU,KAAK,IAAI;AAAA,MACrB;AAAA,MAEA,CAAC,MAAM,EAAGC,OAAM;AACd,eAAO,WAAWA,OAAM,KAAK,MAAM;AAAA,MACrC;AAAA,MAEA,CAAC,IAAI,EAAG,MAAM;AACZ,eAAO,QAAQ,MAAM,KAAK,SAAS,aAAa,KAAK,QAAQ;AAAA,MAC/D;AAAA,MAEA,MAAO,MAAM;AACX,cAAM,WAAW,KAAK;AACtB,YAAI,WAAW,KAAK,aAAa;AAC/B,gBAAM,IAAI,MAAM,2CAA2C;AAAA,QAC7D;AACA,aAAK,eAAe;AACpB,eAAO,MAAM,MAAM,IAAI;AAAA,MACzB;AAAA,MAEA,MAAO;AACL,YAAI,KAAK,aAAa;AACpB,gBAAM,MAAM,OAAO,MAAM,KAAK,WAAW,CAAC;AAAA,QAC5C;AACA,eAAO,MAAM,IAAI;AAAA,MACnB;AAAA,IACF,CAAC;AAED,eAAW,OAAO;AAClB,eAAW,MAAM;AAEjB,QAAM,UAAU,UACd,KAAK,OAAO,IAAI,SACd,KAAK,YAAY,IAAI,cACrB,KAAK,eAAe,IAAI,iBACxB;AAEJ,WAAO,UAAU;AAAA;AAAA;;;ACjiBjB;AAAA;AAAA;AACA,WAAO,UAAU,SAAU,SAAS;AAClC,cAAQ,UAAU,OAAO,QAAQ,IAAI,aAAa;AAChD,iBAAS,SAAS,KAAK,MAAM,QAAQ,SAAS,OAAO,MAAM;AACzD,gBAAM,OAAO;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACPA;AAAA;AAAA;AACA,WAAO,UAAU;AAEjB,YAAQ,OAAOE;AACf,YAAQ,SAAS;AAEjB,aAAS,QAAS,MAAM;AACtB,UAAI,OAAO;AACX,UAAI,EAAE,gBAAgB,UAAU;AAC9B,eAAO,IAAI,QAAQ;AAAA,MACrB;AAEA,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,WAAK,SAAS;AAEd,UAAI,QAAQ,OAAO,KAAK,YAAY,YAAY;AAC9C,aAAK,QAAQ,SAAU,MAAM;AAC3B,eAAK,KAAK,IAAI;AAAA,QAChB,CAAC;AAAA,MACH,WAAW,UAAU,SAAS,GAAG;AAC/B,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,eAAK,KAAK,UAAU,CAAC,CAAC;AAAA,QACxB;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,aAAa,SAAU,MAAM;AAC7C,UAAI,KAAK,SAAS,MAAM;AACtB,cAAM,IAAI,MAAM,kDAAkD;AAAA,MACpE;AAEA,UAAI,OAAO,KAAK;AAChB,UAAI,OAAO,KAAK;AAEhB,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd;AAEA,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd;AAEA,UAAI,SAAS,KAAK,MAAM;AACtB,aAAK,OAAO;AAAA,MACd;AACA,UAAI,SAAS,KAAK,MAAM;AACtB,aAAK,OAAO;AAAA,MACd;AAEA,WAAK,KAAK;AACV,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,WAAK,OAAO;AAEZ,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,cAAc,SAAU,MAAM;AAC9C,UAAI,SAAS,KAAK,MAAM;AACtB;AAAA,MACF;AAEA,UAAI,KAAK,MAAM;AACb,aAAK,KAAK,WAAW,IAAI;AAAA,MAC3B;AAEA,UAAI,OAAO,KAAK;AAChB,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd;AAEA,WAAK,OAAO;AACZ,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,OAAO;AAAA,MACd;AACA,WAAK;AAAA,IACP;AAEA,YAAQ,UAAU,WAAW,SAAU,MAAM;AAC3C,UAAI,SAAS,KAAK,MAAM;AACtB;AAAA,MACF;AAEA,UAAI,KAAK,MAAM;AACb,aAAK,KAAK,WAAW,IAAI;AAAA,MAC3B;AAEA,UAAI,OAAO,KAAK;AAChB,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd;AAEA,WAAK,OAAO;AACZ,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,OAAO;AAAA,MACd;AACA,WAAK;AAAA,IACP;AAEA,YAAQ,UAAU,OAAO,WAAY;AACnC,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,aAAK,MAAM,UAAU,CAAC,CAAC;AAAA,MACzB;AACA,aAAO,KAAK;AAAA,IACd;AAEA,YAAQ,UAAU,UAAU,WAAY;AACtC,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,gBAAQ,MAAM,UAAU,CAAC,CAAC;AAAA,MAC5B;AACA,aAAO,KAAK;AAAA,IACd;AAEA,YAAQ,UAAU,MAAM,WAAY;AAClC,UAAI,CAAC,KAAK,MAAM;AACd,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,KAAK,KAAK;AACpB,WAAK,OAAO,KAAK,KAAK;AACtB,UAAI,KAAK,MAAM;AACb,aAAK,KAAK,OAAO;AAAA,MACnB,OAAO;AACL,aAAK,OAAO;AAAA,MACd;AACA,WAAK;AACL,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,QAAQ,WAAY;AACpC,UAAI,CAAC,KAAK,MAAM;AACd,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,KAAK,KAAK;AACpB,WAAK,OAAO,KAAK,KAAK;AACtB,UAAI,KAAK,MAAM;AACb,aAAK,KAAK,OAAO;AAAA,MACnB,OAAO;AACL,aAAK,OAAO;AAAA,MACd;AACA,WAAK;AACL,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,UAAU,SAAU,IAAI,OAAO;AAC/C,cAAQ,SAAS;AACjB,eAAS,SAAS,KAAK,MAAM,IAAI,GAAG,WAAW,MAAM,KAAK;AACxD,WAAG,KAAK,OAAO,OAAO,OAAO,GAAG,IAAI;AACpC,iBAAS,OAAO;AAAA,MAClB;AAAA,IACF;AAEA,YAAQ,UAAU,iBAAiB,SAAU,IAAI,OAAO;AACtD,cAAQ,SAAS;AACjB,eAAS,SAAS,KAAK,MAAM,IAAI,KAAK,SAAS,GAAG,WAAW,MAAM,KAAK;AACtE,WAAG,KAAK,OAAO,OAAO,OAAO,GAAG,IAAI;AACpC,iBAAS,OAAO;AAAA,MAClB;AAAA,IACF;AAEA,YAAQ,UAAU,MAAM,SAAU,GAAG;AACnC,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,GAAG,KAAK;AAEjE,iBAAS,OAAO;AAAA,MAClB;AACA,UAAI,MAAM,KAAK,WAAW,MAAM;AAC9B,eAAO,OAAO;AAAA,MAChB;AAAA,IACF;AAEA,YAAQ,UAAU,aAAa,SAAU,GAAG;AAC1C,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,GAAG,KAAK;AAEjE,iBAAS,OAAO;AAAA,MAClB;AACA,UAAI,MAAM,KAAK,WAAW,MAAM;AAC9B,eAAO,OAAO;AAAA,MAChB;AAAA,IACF;AAEA,YAAQ,UAAU,MAAM,SAAU,IAAI,OAAO;AAC3C,cAAQ,SAAS;AACjB,UAAI,MAAM,IAAI,QAAQ;AACtB,eAAS,SAAS,KAAK,MAAM,WAAW,QAAO;AAC7C,YAAI,KAAK,GAAG,KAAK,OAAO,OAAO,OAAO,IAAI,CAAC;AAC3C,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,aAAa,SAAU,IAAI,OAAO;AAClD,cAAQ,SAAS;AACjB,UAAI,MAAM,IAAI,QAAQ;AACtB,eAAS,SAAS,KAAK,MAAM,WAAW,QAAO;AAC7C,YAAI,KAAK,GAAG,KAAK,OAAO,OAAO,OAAO,IAAI,CAAC;AAC3C,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,SAAS,SAAU,IAAI,SAAS;AAChD,UAAI;AACJ,UAAI,SAAS,KAAK;AAClB,UAAI,UAAU,SAAS,GAAG;AACxB,cAAM;AAAA,MACR,WAAW,KAAK,MAAM;AACpB,iBAAS,KAAK,KAAK;AACnB,cAAM,KAAK,KAAK;AAAA,MAClB,OAAO;AACL,cAAM,IAAI,UAAU,4CAA4C;AAAA,MAClE;AAEA,eAAS,IAAI,GAAG,WAAW,MAAM,KAAK;AACpC,cAAM,GAAG,KAAK,OAAO,OAAO,CAAC;AAC7B,iBAAS,OAAO;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,gBAAgB,SAAU,IAAI,SAAS;AACvD,UAAI;AACJ,UAAI,SAAS,KAAK;AAClB,UAAI,UAAU,SAAS,GAAG;AACxB,cAAM;AAAA,MACR,WAAW,KAAK,MAAM;AACpB,iBAAS,KAAK,KAAK;AACnB,cAAM,KAAK,KAAK;AAAA,MAClB,OAAO;AACL,cAAM,IAAI,UAAU,4CAA4C;AAAA,MAClE;AAEA,eAAS,IAAI,KAAK,SAAS,GAAG,WAAW,MAAM,KAAK;AAClD,cAAM,GAAG,KAAK,OAAO,OAAO,CAAC;AAC7B,iBAAS,OAAO;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,UAAU,WAAY;AACtC,UAAI,MAAM,IAAI,MAAM,KAAK,MAAM;AAC/B,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,MAAM,KAAK;AACxD,YAAI,CAAC,IAAI,OAAO;AAChB,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,iBAAiB,WAAY;AAC7C,UAAI,MAAM,IAAI,MAAM,KAAK,MAAM;AAC/B,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,MAAM,KAAK;AACxD,YAAI,CAAC,IAAI,OAAO;AAChB,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,QAAQ,SAAU,MAAM,IAAI;AAC5C,WAAK,MAAM,KAAK;AAChB,UAAI,KAAK,GAAG;AACV,cAAM,KAAK;AAAA,MACb;AACA,aAAO,QAAQ;AACf,UAAI,OAAO,GAAG;AACZ,gBAAQ,KAAK;AAAA,MACf;AACA,UAAI,MAAM,IAAI,QAAQ;AACtB,UAAI,KAAK,QAAQ,KAAK,GAAG;AACvB,eAAO;AAAA,MACT;AACA,UAAI,OAAO,GAAG;AACZ,eAAO;AAAA,MACT;AACA,UAAI,KAAK,KAAK,QAAQ;AACpB,aAAK,KAAK;AAAA,MACZ;AACA,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,MAAM,KAAK;AACpE,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO,WAAW,QAAQ,IAAI,IAAI,KAAK,SAAS,OAAO,MAAM;AAC3D,YAAI,KAAK,OAAO,KAAK;AAAA,MACvB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,eAAe,SAAU,MAAM,IAAI;AACnD,WAAK,MAAM,KAAK;AAChB,UAAI,KAAK,GAAG;AACV,cAAM,KAAK;AAAA,MACb;AACA,aAAO,QAAQ;AACf,UAAI,OAAO,GAAG;AACZ,gBAAQ,KAAK;AAAA,MACf;AACA,UAAI,MAAM,IAAI,QAAQ;AACtB,UAAI,KAAK,QAAQ,KAAK,GAAG;AACvB,eAAO;AAAA,MACT;AACA,UAAI,OAAO,GAAG;AACZ,eAAO;AAAA,MACT;AACA,UAAI,KAAK,KAAK,QAAQ;AACpB,aAAK,KAAK;AAAA,MACZ;AACA,eAAS,IAAI,KAAK,QAAQ,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,IAAI,KAAK;AAC5E,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO,WAAW,QAAQ,IAAI,MAAM,KAAK,SAAS,OAAO,MAAM;AAC7D,YAAI,KAAK,OAAO,KAAK;AAAA,MACvB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,SAAS,SAAU,OAAO,gBAAgB,OAAO;AACjE,UAAI,QAAQ,KAAK,QAAQ;AACvB,gBAAQ,KAAK,SAAS;AAAA,MACxB;AACA,UAAI,QAAQ,GAAG;AACb,gBAAQ,KAAK,SAAS;AAAA,MACxB;AAEA,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,OAAO,KAAK;AACrE,iBAAS,OAAO;AAAA,MAClB;AAEA,UAAI,MAAM,CAAC;AACX,eAAS,IAAI,GAAG,UAAU,IAAI,aAAa,KAAK;AAC9C,YAAI,KAAK,OAAO,KAAK;AACrB,iBAAS,KAAK,WAAW,MAAM;AAAA,MACjC;AACA,UAAI,WAAW,MAAM;AACnB,iBAAS,KAAK;AAAA,MAChB;AAEA,UAAI,WAAW,KAAK,QAAQ,WAAW,KAAK,MAAM;AAChD,iBAAS,OAAO;AAAA,MAClB;AAEA,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,iBAAS,OAAO,MAAM,QAAQ,MAAM,CAAC,CAAC;AAAA,MACxC;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,UAAU,WAAY;AACtC,UAAI,OAAO,KAAK;AAChB,UAAI,OAAO,KAAK;AAChB,eAAS,SAAS,MAAM,WAAW,MAAM,SAAS,OAAO,MAAM;AAC7D,YAAI,IAAI,OAAO;AACf,eAAO,OAAO,OAAO;AACrB,eAAO,OAAO;AAAA,MAChB;AACA,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,aAAO;AAAA,IACT;AAEA,aAAS,OAAQ,MAAM,MAAM,OAAO;AAClC,UAAI,WAAW,SAAS,KAAK,OAC3B,IAAIA,MAAK,OAAO,MAAM,MAAM,IAAI,IAChC,IAAIA,MAAK,OAAO,MAAM,KAAK,MAAM,IAAI;AAEvC,UAAI,SAAS,SAAS,MAAM;AAC1B,aAAK,OAAO;AAAA,MACd;AACA,UAAI,SAAS,SAAS,MAAM;AAC1B,aAAK,OAAO;AAAA,MACd;AAEA,WAAK;AAEL,aAAO;AAAA,IACT;AAEA,aAAS,KAAM,MAAM,MAAM;AACzB,WAAK,OAAO,IAAIA,MAAK,MAAM,KAAK,MAAM,MAAM,IAAI;AAChD,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,OAAO,KAAK;AAAA,MACnB;AACA,WAAK;AAAA,IACP;AAEA,aAAS,QAAS,MAAM,MAAM;AAC5B,WAAK,OAAO,IAAIA,MAAK,MAAM,MAAM,KAAK,MAAM,IAAI;AAChD,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,OAAO,KAAK;AAAA,MACnB;AACA,WAAK;AAAA,IACP;AAEA,aAASA,MAAM,OAAO,MAAM,MAAM,MAAM;AACtC,UAAI,EAAE,gBAAgBA,QAAO;AAC3B,eAAO,IAAIA,MAAK,OAAO,MAAM,MAAM,IAAI;AAAA,MACzC;AAEA,WAAK,OAAO;AACZ,WAAK,QAAQ;AAEb,UAAI,MAAM;AACR,aAAK,OAAO;AACZ,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,OAAO;AAAA,MACd;AAEA,UAAI,MAAM;AACR,aAAK,OAAO;AACZ,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,OAAO;AAAA,MACd;AAAA,IACF;AAEA,QAAI;AAEF,yBAAyB,OAAO;AAAA,IAClC,SAAS,IAAI;AAAA,IAAC;AAAA;AAAA;;;ACzad;AAAA;AAAA;AAWA,QAAM,UAAN,MAAc;AAAA,MACZ,YAAaC,OAAM,UAAU;AAC3B,aAAK,OAAOA,SAAQ;AACpB,aAAK,WAAW;AAChB,aAAK,QAAQ;AACb,aAAK,OAAO;AACZ,aAAK,UAAU;AACf,aAAK,UAAU;AACf,aAAK,SAAS;AACd,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAEA,QAAM,EAAE,SAAS,IAAI;AACrB,QAAM,OAAO;AACb,QAAM,YAAY;AAClB,QAAM,aAAa;AACnB,QAAM,iBAAiB,WAAW;AAClC,QAAM,gBAAgB,WAAW;AACjC,QAAM,UAAU;AAChB,QAAM,MAAM,OAAO,MAAM,IAAI;AAC7B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,kBAAkB,OAAO,iBAAiB;AAChD,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,UAAU,OAAO,SAAS;AAEhC,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAMD,QAAO,UAAQ,MAAM;AAC3B,QAAM,SAAS;AACf,QAAM,WAAW;AAEjB,QAAM,OAAO,OAAO,MAAM,aAAa,SAAS;AAAA,MAC9C,YAAa,KAAK;AAChB,cAAM,GAAG;AACT,cAAM,OAAO,uBAAO,OAAO,IAAI;AAC/B,aAAK,MAAM;AACX,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,MAAM,IAAI,OAAO,QAAQ,IAAI;AAClC,aAAK,cAAc,IAAI;AACvB,aAAK,gBAAgB,CAAC,CAAC,IAAI;AAC3B,aAAK,SAAS,CAAC,CAAC,IAAI;AACpB,aAAK,QAAQ,CAAC,CAAC,IAAI;AACnB,aAAK,SAAS,SAAS,IAAI,UAAU,EAAE;AACvC,aAAK,YAAY,IAAI,aAAa,oBAAI,IAAI;AAC1C,aAAK,YAAY,IAAI,aAAa,oBAAI,IAAI;AAC1C,aAAK,eAAe,IAAI,gBAAgB,oBAAI,IAAI;AAEhD,aAAK,eAAe,IAAI;AACxB,YAAI,OAAO,IAAI,WAAW,YAAY;AACpC,eAAK,GAAG,QAAQ,IAAI,MAAM;AAAA,QAC5B;AAEA,aAAK,WAAW,CAAC,CAAC,IAAI;AACtB,aAAK,MAAM;AAEX,YAAI,IAAI,QAAQ,IAAI,QAAQ;AAC1B,cAAI,IAAI,QAAQ,IAAI,QAAQ;AAC1B,kBAAM,IAAI,UAAU,wCAAwC;AAAA,UAC9D;AACA,cAAI,IAAI,MAAM;AACZ,gBAAI,OAAO,IAAI,SAAS,UAAU;AAChC,kBAAI,OAAO,CAAC;AAAA,YACd;AACA,gBAAI,KAAK,UAAU;AACjB,kBAAI,KAAK,WAAW;AAAA,YACtB;AACA,iBAAK,MAAM,IAAI,KAAK,KAAK,IAAI,IAAI;AAAA,UACnC;AACA,cAAI,IAAI,QAAQ;AACd,gBAAI,OAAO,IAAI,WAAW,UAAU;AAClC,kBAAI,SAAS,CAAC;AAAA,YAChB;AACA,iBAAK,MAAM,IAAI,KAAK,eAAe,IAAI,MAAM;AAAA,UAC/C;AACA,eAAK,IAAI,GAAG,QAAQ,WAAS,MAAM,MAAM,KAAK,CAAC;AAC/C,eAAK,IAAI,GAAG,OAAO,OAAK,MAAM,IAAI,CAAC;AACnC,eAAK,IAAI,GAAG,SAAS,OAAK,KAAK,OAAO,EAAE,CAAC;AACzC,eAAK,GAAG,UAAU,OAAK,KAAK,IAAI,OAAO,CAAC;AAAA,QAC1C,OAAO;AACL,eAAK,GAAG,SAAS,KAAK,OAAO,CAAC;AAAA,QAChC;AAEA,aAAK,eAAe,CAAC,CAAC,IAAI;AAC1B,aAAK,SAAS,CAAC,CAAC,IAAI;AACpB,aAAK,UAAU,CAAC,CAAC,IAAI;AACrB,aAAK,QAAQ,IAAI,SAAS;AAE1B,aAAK,SAAS,OAAO,IAAI,WAAW,aAAa,IAAI,SAAS,OAAK;AAEnE,aAAK,KAAK,IAAI,IAAI,QAAQ;AAC1B,aAAK,IAAI,IAAI;AACb,aAAK,OAAO,CAAC,IAAI,QAAQ;AACzB,aAAK,UAAU,IAAI;AACnB,aAAK,KAAK,IAAI;AAAA,MAChB;AAAA,MAEA,CAAC,KAAK,EAAG,OAAO;AACd,eAAO,MAAM,MAAM,KAAK;AAAA,MAC1B;AAAA,MAEA,IAAKA,OAAM;AACT,aAAK,MAAMA,KAAI;AACf,eAAO;AAAA,MACT;AAAA,MAEA,IAAKA,OAAM;AACT,YAAIA,OAAM;AACR,eAAK,MAAMA,KAAI;AAAA,QACjB;AACA,aAAK,KAAK,IAAI;AACd,aAAK,OAAO,EAAE;AACd,eAAO;AAAA,MACT;AAAA,MAEA,MAAOA,OAAM;AACX,YAAI,KAAK,KAAK,GAAG;AACf,gBAAM,IAAI,MAAM,iBAAiB;AAAA,QACnC;AAEA,YAAIA,iBAAgB,WAAW;AAC7B,eAAK,WAAW,EAAEA,KAAI;AAAA,QACxB,OAAO;AACL,eAAK,UAAU,EAAEA,KAAI;AAAA,QACvB;AACA,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,CAAC,WAAW,EAAG,GAAG;AAChB,cAAM,WAAW,SAASA,MAAK,QAAQ,KAAK,KAAK,EAAE,IAAI,CAAC;AAExD,YAAI,CAAC,KAAK,OAAO,EAAE,MAAM,CAAC,GAAG;AAC3B,YAAE,OAAO;AAAA,QACX,OAAO;AACL,gBAAM,MAAM,IAAI,QAAQ,EAAE,MAAM,UAAU,KAAK;AAC/C,cAAI,QAAQ,IAAI,cAAc,GAAG,KAAK,QAAQ,EAAE,GAAG,CAAC;AACpD,cAAI,MAAM,GAAG,OAAO,OAAK,KAAK,OAAO,EAAE,GAAG,CAAC;AAC3C,eAAK,IAAI,KAAK;AACd,eAAK,KAAK,EAAE,KAAK,GAAG;AAAA,QACtB;AAEA,aAAK,OAAO,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,UAAU,EAAG,GAAG;AACf,cAAM,WAAW,SAASA,MAAK,QAAQ,KAAK,KAAK,CAAC,CAAC;AACnD,aAAK,KAAK,EAAE,KAAK,IAAI,QAAQ,GAAG,QAAQ,CAAC;AACzC,aAAK,OAAO,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,IAAI,EAAG,KAAK;AACX,YAAI,UAAU;AACd,aAAK,IAAI,KAAK;AACd,cAAM,OAAO,KAAK,SAAS,SAAS;AACpC,QAAAC,IAAG,IAAI,EAAE,IAAI,UAAU,CAAC,IAAIC,UAAS;AACnC,cAAI,UAAU;AACd,eAAK,IAAI,KAAK;AACd,cAAI,IAAI;AACN,iBAAK,KAAK,SAAS,EAAE;AAAA,UACvB,OAAO;AACL,iBAAK,MAAM,EAAE,KAAKA,KAAI;AAAA,UACxB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,MAAM,EAAG,KAAK,MAAM;AACnB,aAAK,UAAU,IAAI,IAAI,UAAU,IAAI;AACrC,YAAI,OAAO;AAGX,YAAI,CAAC,KAAK,OAAO,IAAI,MAAM,IAAI,GAAG;AAChC,cAAI,SAAS;AAAA,QACf;AAEA,aAAK,OAAO,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,OAAO,EAAG,KAAK;AACd,YAAI,UAAU;AACd,aAAK,IAAI,KAAK;AACd,QAAAD,IAAG,QAAQ,IAAI,UAAU,CAAC,IAAI,YAAY;AACxC,cAAI,UAAU;AACd,eAAK,IAAI,KAAK;AACd,cAAI,IAAI;AACN,mBAAO,KAAK,KAAK,SAAS,EAAE;AAAA,UAC9B;AACA,eAAK,SAAS,EAAE,KAAK,OAAO;AAAA,QAC9B,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,SAAS,EAAG,KAAK,SAAS;AACzB,aAAK,aAAa,IAAI,IAAI,UAAU,OAAO;AAC3C,YAAI,UAAU;AACd,aAAK,OAAO,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,YAAI,KAAK,UAAU,GAAG;AACpB;AAAA,QACF;AAEA,aAAK,UAAU,IAAI;AACnB,iBAAS,IAAI,KAAK,KAAK,EAAE,MACvB,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK,MAChC,IAAI,EAAE,MAAM;AACZ,eAAK,UAAU,EAAE,EAAE,KAAK;AACxB,cAAI,EAAE,MAAM,QAAQ;AAClB,kBAAM,IAAI,EAAE;AACZ,iBAAK,KAAK,EAAE,WAAW,CAAC;AACxB,cAAE,OAAO;AAAA,UACX;AAAA,QACF;AAEA,aAAK,UAAU,IAAI;AAEnB,YAAI,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,EAAE,UAAU,KAAK,IAAI,MAAM,GAAG;AAC1D,cAAI,KAAK,KAAK;AACZ,iBAAK,IAAI,IAAI,GAAG;AAAA,UAClB,OAAO;AACL,kBAAM,MAAM,GAAG;AACf,kBAAM,IAAI;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,MAEA,KAAK,OAAO,IAAK;AACf,eAAO,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,QAAQ,KAAK,KAAK,EAAE,KAAK;AAAA,MAC7D;AAAA,MAEA,CAAC,OAAO,EAAG,KAAK;AACd,aAAK,KAAK,EAAE,MAAM;AAClB,aAAK,IAAI,KAAK;AACd,aAAK,OAAO,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,UAAU,EAAG,KAAK;AACjB,YAAI,IAAI,SAAS;AACf;AAAA,QACF;AAEA,YAAI,IAAI,OAAO;AACb,cAAI,QAAQ,KAAK,OAAO,KAAK,CAAC,IAAI,OAAO;AACvC,iBAAK,IAAI,EAAE,GAAG;AAAA,UAChB;AACA;AAAA,QACF;AAEA,YAAI,CAAC,IAAI,MAAM;AACb,cAAI,KAAK,UAAU,IAAI,IAAI,QAAQ,GAAG;AACpC,iBAAK,MAAM,EAAE,KAAK,KAAK,UAAU,IAAI,IAAI,QAAQ,CAAC;AAAA,UACpD,OAAO;AACL,iBAAK,IAAI,EAAE,GAAG;AAAA,UAChB;AAAA,QACF;AACA,YAAI,CAAC,IAAI,MAAM;AACb;AAAA,QACF;AAGA,YAAI,IAAI,QAAQ;AACd;AAAA,QACF;AAEA,YAAI,CAAC,KAAK,gBAAgB,IAAI,KAAK,YAAY,KAAK,CAAC,IAAI,SAAS;AAChE,cAAI,KAAK,aAAa,IAAI,IAAI,QAAQ,GAAG;AACvC,iBAAK,SAAS,EAAE,KAAK,KAAK,aAAa,IAAI,IAAI,QAAQ,CAAC;AAAA,UAC1D,OAAO;AACL,iBAAK,OAAO,EAAE,GAAG;AAAA,UACnB;AACA,cAAI,CAAC,IAAI,SAAS;AAChB;AAAA,UACF;AAAA,QACF;AAGA,YAAI,QAAQ,KAAK,KAAK,EAAE,GAAG;AAC3B,YAAI,CAAC,IAAI,OAAO;AACd,cAAI,SAAS;AACb;AAAA,QACF;AAEA,YAAI,QAAQ,KAAK,OAAO,KAAK,CAAC,IAAI,OAAO;AACvC,eAAK,IAAI,EAAE,GAAG;AAAA,QAChB;AAAA,MACF;AAAA,MAEA,CAAC,QAAQ,EAAG,KAAK;AACf,eAAO;AAAA,UACL,QAAQ,CAAC,MAAM,KAAK,SAAS,KAAK,KAAK,MAAM,KAAK,IAAI;AAAA,UACtD,OAAO,KAAK;AAAA,UACZ,KAAK,KAAK;AAAA,UACV,UAAU,IAAI;AAAA,UACd,eAAe,KAAK;AAAA,UACpB,aAAa,KAAK;AAAA,UAClB,QAAQ,KAAK;AAAA,UACb,UAAU,KAAK;AAAA,UACf,WAAW,KAAK;AAAA,UAChB,WAAW,KAAK;AAAA,UAChB,SAAS,KAAK;AAAA,UACd,OAAO,KAAK;AAAA,UACZ,QAAQ,KAAK;AAAA,QACf;AAAA,MACF;AAAA,MAEA,CAAC,KAAK,EAAG,KAAK;AACZ,aAAK,IAAI,KAAK;AACd,YAAI;AACF,iBAAO,IAAI,KAAK,eAAe,EAAE,IAAI,MAAM,KAAK,QAAQ,EAAE,GAAG,CAAC,EAC3D,GAAG,OAAO,MAAM,KAAK,OAAO,EAAE,GAAG,CAAC,EAClC,GAAG,SAAS,QAAM,KAAK,KAAK,SAAS,EAAE,CAAC;AAAA,QAC7C,SAAS,IAAI;AACX,eAAK,KAAK,SAAS,EAAE;AAAA,QACvB;AAAA,MACF;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,YAAI,KAAK,OAAO,KAAK,KAAK,OAAO,EAAE,OAAO;AACxC,eAAK,OAAO,EAAE,MAAM,OAAO;AAAA,QAC7B;AAAA,MACF;AAAA;AAAA,MAGA,CAAC,IAAI,EAAG,KAAK;AACX,YAAI,QAAQ;AAEZ,YAAI,IAAI,SAAS;AACf,cAAI,QAAQ,QAAQ,WAAS;AAC3B,kBAAM,IAAI,IAAI;AACd,kBAAM,OAAO,MAAM,OAAO,KAAK,EAAE,QAAQ,QAAQ,GAAG;AACpD,iBAAK,UAAU,EAAE,OAAO,KAAK;AAAA,UAC/B,CAAC;AAAA,QACH;AAEA,cAAM,SAAS,IAAI;AACnB,cAAM,MAAM,KAAK;AAEjB,YAAI,KAAK;AACP,iBAAO,GAAG,QAAQ,WAAS;AACzB,gBAAI,CAAC,IAAI,MAAM,KAAK,GAAG;AACrB,qBAAO,MAAM;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,GAAG,QAAQ,WAAS;AACzB,gBAAI,CAAC,MAAM,MAAM,KAAK,GAAG;AACvB,qBAAO,MAAM;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEA,QAAS;AACP,YAAI,KAAK,KAAK;AACZ,eAAK,IAAI,MAAM;AAAA,QACjB;AACA,eAAO,MAAM,MAAM;AAAA,MACrB;AAAA,IACF,CAAC;AAED,QAAM,WAAN,cAAuB,KAAK;AAAA,MAC1B,YAAa,KAAK;AAChB,cAAM,GAAG;AACT,aAAK,eAAe,IAAI;AAAA,MAC1B;AAAA;AAAA,MAGA,QAAS;AAAA,MAAC;AAAA,MACV,SAAU;AAAA,MAAC;AAAA,MAEX,CAAC,IAAI,EAAG,KAAK;AACX,cAAM,OAAO,KAAK,SAAS,aAAa;AACxC,aAAK,MAAM,EAAE,KAAKA,IAAG,IAAI,EAAE,IAAI,QAAQ,CAAC;AAAA,MAC1C;AAAA,MAEA,CAAC,OAAO,EAAG,KAAK,MAAM;AACpB,aAAK,SAAS,EAAE,KAAKA,IAAG,YAAY,IAAI,QAAQ,CAAC;AAAA,MACnD;AAAA;AAAA,MAGA,CAAC,IAAI,EAAG,KAAK;AACX,cAAM,SAAS,IAAI;AACnB,cAAM,MAAM,KAAK;AAEjB,YAAI,IAAI,SAAS;AACf,cAAI,QAAQ,QAAQ,WAAS;AAC3B,kBAAM,IAAI,IAAI;AACd,kBAAM,OAAO,MAAM,OAAO,KAAK,EAAE,QAAQ,QAAQ,GAAG;AACpD,iBAAK,UAAU,EAAE,OAAO,KAAK;AAAA,UAC/B,CAAC;AAAA,QACH;AAEA,YAAI,KAAK;AACP,iBAAO,GAAG,QAAQ,WAAS;AACzB,gBAAI,MAAM,KAAK;AAAA,UACjB,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,GAAG,QAAQ,WAAS;AACzB,kBAAM,KAAK,EAAE,KAAK;AAAA,UACpB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAEA,SAAK,OAAO;AAEZ,WAAO,UAAU;AAAA;AAAA;;;AC/ajB;AAAA;AAAA;AACA,QAAM,WAAW;AACjB,QAAM,KAAK,UAAQ,QAAQ,EAAE;AAC7B,QAAME,MAAK,UAAQ,IAAI;AAEvB,QAAI,SAASA,IAAG;AAEhB,QAAI,CAAC,QAAQ;AAGX,YAAM,UAAU,QAAQ,QAAQ,IAAI;AACpC,YAAM,YAAY,QAAQ,aAAa,QAAQ;AAE/C,eAAS,CAAC,IAAI,OAAO,KAAK,OAAO;AAC/B,cAAM,OAAO,CAAC,IAAI,OAAO,GAAG,IAAI,IAAI,KAAK;AACzC,cAAM,MAAM,IAAI,UAAU;AAC1B,YAAI,aAAa;AACjB,gBAAQ,aAAa,IAAI,OAAO,KAAK,GAAG;AAAA,MAC1C;AAAA,IACF;AAEA,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAMC,SAAQ,OAAO,OAAO;AAC5B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,WAAW,OAAO,UAAU;AAElC,QAAM,aAAN,cAAyB,SAAS;AAAA,MAChC,YAAaC,OAAM,KAAK;AACtB,cAAM,OAAO,CAAC;AACd,cAAM,GAAG;AAET,aAAK,WAAW;AAChB,aAAK,WAAW;AAEhB,YAAI,OAAOA,UAAS;AAClB,gBAAM,IAAI,UAAU,uBAAuB;AAE7C,aAAK,QAAQ,IAAI;AACjB,aAAK,GAAG,IAAI,OAAO,IAAI,OAAO,WAAW,IAAI,KAAK;AAClD,aAAK,KAAK,IAAIA;AACd,aAAK,SAAS,IAAI,IAAI,YAAY,KAAG,OAAK;AAC1C,aAAK,QAAQ,IAAI;AACjB,aAAKD,MAAK,IAAI,OAAO,IAAI,SAAS,WAAW,IAAI,OAAO;AACxD,aAAK,OAAO,IAAI,KAAKA,MAAK;AAC1B,aAAK,UAAU,IAAI,OAAO,IAAI,cAAc,YAC1C,IAAI,YAAY;AAElB,YAAI,OAAO,KAAK,GAAG,MAAM;AACvB,eAAK,KAAK,EAAE;AAAA;AAEZ,eAAK,KAAK,EAAE;AAAA,MAChB;AAAA,MAEA,IAAI,KAAM;AAAE,eAAO,KAAK,GAAG;AAAA,MAAE;AAAA,MAC7B,IAAI,OAAQ;AAAE,eAAO,KAAK,KAAK;AAAA,MAAE;AAAA,MAEjC,QAAS;AACP,cAAM,IAAI,UAAU,2BAA2B;AAAA,MACjD;AAAA,MAEA,MAAO;AACL,cAAM,IAAI,UAAU,2BAA2B;AAAA,MACjD;AAAA,MAEA,CAAC,KAAK,IAAK;AACT,QAAAD,IAAG,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,IAAI,EAAE,CAAC;AAAA,MAC7D;AAAA,MAEA,CAAC,OAAO,EAAG,IAAI,IAAI;AACjB,YAAI;AACF,eAAK,QAAQ,EAAE,EAAE;AAAA,aACd;AACH,eAAK,GAAG,IAAI;AACZ,eAAK,KAAK,QAAQ,EAAE;AACpB,eAAK,KAAK,EAAE;AAAA,QACd;AAAA,MACF;AAAA,MAEA,CAAC,QAAQ,IAAK;AACZ,eAAO,OAAO,YAAY,KAAK,IAAI,KAAK,SAAS,GAAG,KAAK,OAAO,CAAC,CAAC;AAAA,MACpE;AAAA,MAEA,CAAC,KAAK,IAAK;AACT,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,eAAK,QAAQ,IAAI;AACjB,gBAAM,MAAM,KAAK,QAAQ,EAAE;AAE3B,cAAI,IAAI,WAAW;AACjB,mBAAO,QAAQ,SAAS,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;AAC3D,UAAAA,IAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,IAAI,QAAQ,MAAM,CAAC,IAAI,IAAIG,SACpD,KAAK,OAAO,EAAE,IAAI,IAAIA,IAAG,CAAC;AAAA,QAC9B;AAAA,MACF;AAAA,MAEA,CAAC,OAAO,EAAG,IAAI,IAAI,KAAK;AACtB,aAAK,QAAQ,IAAI;AACjB,YAAI;AACF,eAAK,QAAQ,EAAE,EAAE;AAAA,iBACV,KAAK,YAAY,EAAE,IAAI,GAAG;AACjC,eAAK,KAAK,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG,MAAM,UAAU;AACrD,gBAAM,KAAK,KAAK,GAAG;AACnB,eAAK,GAAG,IAAI;AACZ,UAAAH,IAAG,MAAM,IAAI,QAAM,KAAK,KAAK,KAAK,SAAS,EAAE,IAAI,KAAK,KAAK,OAAO,CAAC;AAAA,QACrE;AAAA,MACF;AAAA,MAEA,CAAC,QAAQ,EAAG,IAAI;AACd,aAAK,QAAQ,IAAI;AACjB,aAAK,MAAM,EAAE;AACb,aAAK,KAAK,SAAS,EAAE;AAAA,MACvB;AAAA,MAEA,CAAC,YAAY,EAAG,IAAI,KAAK;AACvB,YAAI,MAAM;AAEV,aAAK,OAAO,KAAK;AACjB,YAAI,KAAK;AACP,gBAAM,MAAM,MAAM,KAAK,IAAI,SAAS,IAAI,MAAM,GAAG,EAAE,IAAI,GAAG;AAE5D,YAAI,OAAO,KAAK,KAAK,OAAO,KAAK,GAAG;AAClC,gBAAM;AACN,eAAK,MAAM,EAAE;AACb,gBAAM,IAAI;AAAA,QACZ;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,KAAM,IAAI,MAAM;AACd,gBAAQ,IAAI;AAAA,UACV,KAAK;AAAA,UACL,KAAK;AACH;AAAA,UAEF,KAAK;AACH,gBAAI,OAAO,KAAK,GAAG,MAAM;AACvB,mBAAK,KAAK,EAAE;AACd;AAAA,UAEF,KAAK;AACH,gBAAI,KAAK,QAAQ;AACf;AACF,iBAAK,QAAQ,IAAI;AACjB,mBAAO,MAAM,KAAK,IAAI,IAAI;AAAA,UAE5B;AACE,mBAAO,MAAM,KAAK,IAAI,IAAI;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAEA,QAAM,iBAAN,cAA6B,WAAW;AAAA,MACtC,CAAC,KAAK,IAAK;AACT,YAAI,QAAQ;AACZ,YAAI;AACF,eAAK,OAAO,EAAE,MAAMA,IAAG,SAAS,KAAK,KAAK,GAAG,GAAG,CAAC;AACjD,kBAAQ;AAAA,QACV,UAAE;AACA,cAAI;AACF,iBAAK,MAAM,EAAE;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,CAAC,KAAK,IAAK;AACT,YAAI,QAAQ;AACZ,YAAI;AACF,cAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAK,QAAQ,IAAI;AACjB,eAAG;AACD,oBAAM,MAAM,KAAK,QAAQ,EAAE;AAE3B,oBAAM,KAAK,IAAI,WAAW,IAAI,IAC1BA,IAAG,SAAS,KAAK,GAAG,GAAG,KAAK,GAAG,IAAI,QAAQ,IAAI;AACnD,kBAAI,CAAC,KAAK,YAAY,EAAE,IAAI,GAAG;AAC7B;AAAA,YACJ,SAAS;AACT,iBAAK,QAAQ,IAAI;AAAA,UACnB;AACA,kBAAQ;AAAA,QACV,UAAE;AACA,cAAI;AACF,iBAAK,MAAM,EAAE;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG,MAAM,UAAU;AACrD,gBAAM,KAAK,KAAK,GAAG;AACnB,eAAK,GAAG,IAAI;AACZ,UAAAA,IAAG,UAAU,EAAE;AACf,eAAK,KAAK,OAAO;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAEA,QAAM,cAAN,cAA0B,GAAG;AAAA,MAC3B,YAAaE,OAAM,KAAK;AACtB,cAAM,OAAO,CAAC;AACd,cAAM,GAAG;AACT,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,QAAQ,IAAI;AACjB,aAAK,QAAQ,IAAI;AACjB,aAAK,MAAM,IAAI;AACf,aAAK,UAAU,IAAI;AACnB,aAAK,MAAM,IAAI,CAAC;AAChB,aAAK,KAAK,IAAIA;AACd,aAAK,GAAG,IAAI,OAAO,IAAI,OAAO,WAAW,IAAI,KAAK;AAClD,aAAK,KAAK,IAAI,IAAI,SAAS,SAAY,MAAQ,IAAI;AACnD,aAAK,IAAI,IAAI,OAAO,IAAI,UAAU,WAAW,IAAI,QAAQ;AACzD,aAAK,UAAU,IAAI,OAAO,IAAI,cAAc,YAC1C,IAAI,YAAY;AAGlB,cAAM,cAAc,KAAK,IAAI,MAAM,OAAO,OAAO;AACjD,aAAK,YAAY,IAAI,IAAI,UAAU;AACnC,aAAK,MAAM,IAAI,KAAK,YAAY,IAAI,cAAc,IAAI;AAEtD,YAAI,KAAK,GAAG,MAAM;AAChB,eAAK,KAAK,EAAE;AAAA,MAChB;AAAA,MAEA,KAAM,IAAI,MAAM;AACd,YAAI,OAAO,SAAS;AAClB,cAAI,KAAK,QAAQ;AACf;AACF,eAAK,QAAQ,IAAI;AAAA,QACnB;AACA,eAAO,MAAM,KAAK,IAAI,IAAI;AAAA,MAC5B;AAAA,MAGA,IAAI,KAAM;AAAE,eAAO,KAAK,GAAG;AAAA,MAAE;AAAA,MAC7B,IAAI,OAAQ;AAAE,eAAO,KAAK,KAAK;AAAA,MAAE;AAAA,MAEjC,CAAC,QAAQ,EAAG,IAAI;AACd,aAAK,MAAM,EAAE;AACb,aAAK,QAAQ,IAAI;AACjB,aAAK,KAAK,SAAS,EAAE;AAAA,MACvB;AAAA,MAEA,CAAC,KAAK,IAAK;AACT,QAAAF,IAAG;AAAA,UAAK,KAAK,KAAK;AAAA,UAAG,KAAK,MAAM;AAAA,UAAG,KAAK,KAAK;AAAA,UAC3C,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,IAAI,EAAE;AAAA,QAAC;AAAA,MACrC;AAAA,MAEA,CAAC,OAAO,EAAG,IAAI,IAAI;AACjB,YAAI,KAAK,YAAY,KACjB,KAAK,MAAM,MAAM,QACjB,MAAM,GAAG,SAAS,UAAU;AAC9B,eAAK,MAAM,IAAI;AACf,eAAK,KAAK,EAAE;AAAA,QACd,WAAW;AACT,eAAK,QAAQ,EAAE,EAAE;AAAA,aACd;AACH,eAAK,GAAG,IAAI;AACZ,eAAK,KAAK,QAAQ,EAAE;AACpB,eAAK,MAAM,EAAE;AAAA,QACf;AAAA,MACF;AAAA,MAEA,IAAK,KAAK,KAAK;AACb,YAAI;AACF,eAAK,MAAM,KAAK,GAAG;AAErB,aAAK,MAAM,IAAI;AAGf,YAAI,CAAC,KAAK,QAAQ,KAAK,CAAC,KAAK,MAAM,EAAE,UACjC,OAAO,KAAK,GAAG,MAAM;AACvB,eAAK,QAAQ,EAAE,MAAM,CAAC;AACxB,eAAO;AAAA,MACT;AAAA,MAEA,MAAO,KAAK,KAAK;AACf,YAAI,OAAO,QAAQ;AACjB,gBAAM,OAAO,KAAK,KAAK,GAAG;AAE5B,YAAI,KAAK,MAAM,GAAG;AAChB,eAAK,KAAK,SAAS,IAAI,MAAM,qBAAqB,CAAC;AACnD,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,GAAG,MAAM,QAAQ,KAAK,QAAQ,KAAK,KAAK,MAAM,EAAE,QAAQ;AAC/D,eAAK,MAAM,EAAE,KAAK,GAAG;AACrB,eAAK,UAAU,IAAI;AACnB,iBAAO;AAAA,QACT;AAEA,aAAK,QAAQ,IAAI;AACjB,aAAK,MAAM,EAAE,GAAG;AAChB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,MAAM,EAAG,KAAK;AACb,QAAAA,IAAG,MAAM,KAAK,GAAG,GAAG,KAAK,GAAG,IAAI,QAAQ,KAAK,IAAI,GAAG,CAAC,IAAI,OACvD,KAAK,QAAQ,EAAE,IAAI,EAAE,CAAC;AAAA,MAC1B;AAAA,MAEA,CAAC,QAAQ,EAAG,IAAI,IAAI;AAClB,YAAI;AACF,eAAK,QAAQ,EAAE,EAAE;AAAA,aACd;AACH,cAAI,KAAK,IAAI,MAAM;AACjB,iBAAK,IAAI,KAAK;AAChB,cAAI,KAAK,MAAM,EAAE;AACf,iBAAK,MAAM,EAAE;AAAA,eACV;AACH,iBAAK,QAAQ,IAAI;AAEjB,gBAAI,KAAK,MAAM,KAAK,CAAC,KAAK,SAAS,GAAG;AACpC,mBAAK,SAAS,IAAI;AAClB,mBAAK,MAAM,EAAE;AACb,mBAAK,KAAK,QAAQ;AAAA,YACpB,WAAW,KAAK,UAAU,GAAG;AAC3B,mBAAK,UAAU,IAAI;AACnB,mBAAK,KAAK,OAAO;AAAA,YACnB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,MAAM,EAAE,WAAW,GAAG;AAC7B,cAAI,KAAK,MAAM;AACb,iBAAK,QAAQ,EAAE,MAAM,CAAC;AAAA,QAC1B,WAAW,KAAK,MAAM,EAAE,WAAW;AACjC,eAAK,MAAM,EAAE,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,aAC5B;AACH,gBAAM,QAAQ,KAAK,MAAM;AACzB,eAAK,MAAM,IAAI,CAAC;AAChB;AAAA,YAAO,KAAK,GAAG;AAAA,YAAG;AAAA,YAAO,KAAK,IAAI;AAAA,YAChC,CAAC,IAAI,OAAO,KAAK,QAAQ,EAAE,IAAI,EAAE;AAAA,UAAC;AAAA,QACtC;AAAA,MACF;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG,MAAM,UAAU;AACrD,gBAAM,KAAK,KAAK,GAAG;AACnB,eAAK,GAAG,IAAI;AACZ,UAAAA,IAAG,MAAM,IAAI,QAAM,KAAK,KAAK,KAAK,SAAS,EAAE,IAAI,KAAK,KAAK,OAAO,CAAC;AAAA,QACrE;AAAA,MACF;AAAA,IACF;AAEA,QAAM,kBAAN,cAA8B,YAAY;AAAA,MACxC,CAAC,KAAK,IAAK;AACT,YAAI;AAGJ,YAAI,KAAK,YAAY,KAAK,KAAK,MAAM,MAAM,MAAM;AAC/C,cAAI;AACF,iBAAKA,IAAG,SAAS,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK,KAAK,CAAC;AAAA,UACzD,SAAS,IAAI;AACX,gBAAI,GAAG,SAAS,UAAU;AACxB,mBAAK,MAAM,IAAI;AACf,qBAAO,KAAK,KAAK,EAAE;AAAA,YACrB;AACE,oBAAM;AAAA,UACV;AAAA,QACF;AACE,eAAKA,IAAG,SAAS,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK,KAAK,CAAC;AAEzD,aAAK,OAAO,EAAE,MAAM,EAAE;AAAA,MACxB;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG,MAAM,UAAU;AACrD,gBAAM,KAAK,KAAK,GAAG;AACnB,eAAK,GAAG,IAAI;AACZ,UAAAA,IAAG,UAAU,EAAE;AACf,eAAK,KAAK,OAAO;AAAA,QACnB;AAAA,MACF;AAAA,MAEA,CAAC,MAAM,EAAG,KAAK;AAEb,YAAI,QAAQ;AACZ,YAAI;AACF,eAAK,QAAQ;AAAA,YAAE;AAAA,YACbA,IAAG,UAAU,KAAK,GAAG,GAAG,KAAK,GAAG,IAAI,QAAQ,KAAK,IAAI,CAAC;AAAA,UAAC;AACzD,kBAAQ;AAAA,QACV,UAAE;AACA,cAAI;AACF,gBAAI;AAAE,mBAAK,MAAM,EAAE;AAAA,YAAE,SAAS,GAAG;AAAA,YAAC;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAEA,YAAQ,aAAa;AACrB,YAAQ,iBAAiB;AAEzB,YAAQ,cAAc;AACtB,YAAQ,kBAAkB;AAAA;AAAA;;;ACra1B;AAAA;AAAA;AAsBA,QAAM,SAAS;AACf,QAAM,SAAS;AACf,QAAM,KAAK,UAAQ,QAAQ;AAC3B,QAAM,UAAU;AAChB,QAAM,mBAAmB,OAAO;AAChC,QAAM,QAAQ;AACd,QAAM,MAAM;AACZ,QAAM,OAAO;AACb,QAAM,EAAE,SAAS,IAAI,UAAQ,SAAS;AAEtC,QAAM,aAAa,OAAO,KAAK,CAAC,IAAM,GAAI,CAAC;AAC3C,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,KAAK,OAAO,gBAAgB;AAClC,QAAM,MAAM,OAAO,sBAAsB;AACzC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,kBAAkB,OAAO,iBAAiB;AAChD,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,gBAAgB,OAAO,eAAe;AAC5C,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,OAAO,OAAO,QAAQ;AAC5B,QAAM,kBAAkB,OAAO,eAAe;AAC9C,QAAM,iBAAiB,OAAO,cAAc;AAC5C,QAAM,UAAU,OAAO,QAAQ;AAC/B,QAAM,cAAc,OAAO,aAAa;AAExC,QAAMI,QAAO,OAAK;AAElB,WAAO,UAAU,OAAO,MAAM,eAAe,GAAG;AAAA,MAC9C,YAAa,KAAK;AAChB,cAAM,OAAO,CAAC;AACd,cAAM,GAAG;AAET,aAAK,OAAO,IAAI,QAAQ;AAIxB,aAAK,eAAe,IAAI;AAGxB,aAAK,GAAG,MAAM,OAAK;AACjB,cAAI,KAAK,KAAK,MAAM,WAAW,KAAK,eAAe,MAAM,OAAO;AAG9D,iBAAK,KAAK,mBAAmB,6BAA6B;AAAA,UAC5D;AAAA,QACF,CAAC;AAED,YAAI,IAAI,QAAQ;AACd,eAAK,GAAG,MAAM,IAAI,MAAM;AAAA,QAC1B,OAAO;AACL,eAAK,GAAG,MAAM,OAAK;AACjB,iBAAK,KAAK,WAAW;AACrB,iBAAK,KAAK,QAAQ;AAClB,iBAAK,KAAK,KAAK;AAAA,UACjB,CAAC;AAAA,QACH;AAEA,aAAK,SAAS,CAAC,CAAC,IAAI;AACpB,aAAK,mBAAmB,IAAI,oBAAoB;AAChD,aAAK,SAAS,OAAO,IAAI,WAAW,aAAa,IAAI,SAASA;AAI9D,cAAM,QAAS,IAAI,SACf,IAAI,KAAK,SAAS,SAAS,KAAK,IAAI,KAAK,SAAS,MAAM;AAG5D,aAAK,SAAS,CAAC,IAAI,QAAQ,IAAI,WAAW,SAAY,IAAI,SACtD,QAAQ,SACR;AAGJ,aAAK,WAAW;AAChB,aAAK,WAAW;AAEhB,aAAK,KAAK,IAAI,IAAI,QAAQ;AAC1B,aAAK,MAAM,IAAI;AACf,aAAK,SAAS,IAAI;AAClB,aAAK,UAAU,IAAI;AACnB,aAAK,KAAK,IAAI;AACd,aAAK,IAAI,IAAI;AACb,aAAK,EAAE,IAAI;AACX,aAAK,GAAG,IAAI;AACZ,aAAK,KAAK,IAAI;AACd,aAAK,KAAK,IAAI;AACd,aAAK,OAAO,IAAI;AAChB,aAAK,cAAc,IAAI;AACvB,aAAK,OAAO,IAAI;AAEhB,aAAK,GAAG,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;AAExC,YAAI,OAAO,IAAI,WAAW,YAAY;AACpC,eAAK,GAAG,QAAQ,IAAI,MAAM;AAAA,QAC5B;AACA,YAAI,OAAO,IAAI,YAAY,YAAY;AACrC,eAAK,GAAG,SAAS,IAAI,OAAO;AAAA,QAC9B;AAAA,MACF;AAAA,MAEA,CAAC,aAAa,EAAG,OAAO,UAAU;AAChC,YAAI,KAAK,eAAe,MAAM,MAAM;AAClC,eAAK,eAAe,IAAI;AAAA,QAC1B;AACA,YAAI;AACJ,YAAI;AACF,mBAAS,IAAI,OAAO,OAAO,UAAU,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;AAAA,QAC1D,SAAS,IAAI;AACX,iBAAO,KAAK,KAAK,qBAAqB,EAAE;AAAA,QAC1C;AAEA,YAAI,OAAO,WAAW;AACpB,cAAI,KAAK,cAAc,GAAG;AACxB,iBAAK,OAAO,IAAI;AAEhB,gBAAI,KAAK,KAAK,MAAM,SAAS;AAC3B,mBAAK,KAAK,IAAI;AAAA,YAChB;AACA,iBAAK,IAAI,EAAE,KAAK;AAAA,UAClB,OAAO;AACL,iBAAK,cAAc,IAAI;AACvB,iBAAK,IAAI,EAAE,WAAW;AAAA,UACxB;AAAA,QACF,OAAO;AACL,eAAK,cAAc,IAAI;AACvB,cAAI,CAAC,OAAO,YAAY;AACtB,iBAAK,KAAK,qBAAqB,oBAAoB,EAAE,OAAO,CAAC;AAAA,UAC/D,WAAW,CAAC,OAAO,MAAM;AACvB,iBAAK,KAAK,qBAAqB,oBAAoB,EAAE,OAAO,CAAC;AAAA,UAC/D,OAAO;AACL,kBAAM,OAAO,OAAO;AACpB,gBAAI,oBAAoB,KAAK,IAAI,KAAK,CAAC,OAAO,UAAU;AACtD,mBAAK,KAAK,qBAAqB,qBAAqB,EAAE,OAAO,CAAC;AAAA,YAChE,WAAW,CAAC,oBAAoB,KAAK,IAAI,KAAK,OAAO,UAAU;AAC7D,mBAAK,KAAK,qBAAqB,sBAAsB,EAAE,OAAO,CAAC;AAAA,YACjE,OAAO;AACL,oBAAM,QAAQ,KAAK,UAAU,IAAI,IAAI,MAAM,QAAQ,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;AAItE,kBAAI,CAAC,KAAK,eAAe,GAAG;AAC1B,oBAAI,MAAM,QAAQ;AAEhB,wBAAM,QAAQ,MAAM;AAClB,wBAAI,CAAC,MAAM,SAAS;AAClB,2BAAK,eAAe,IAAI;AAAA,oBAC1B;AAAA,kBACF;AACA,wBAAM,GAAG,OAAO,KAAK;AAAA,gBACvB,OAAO;AACL,uBAAK,eAAe,IAAI;AAAA,gBAC1B;AAAA,cACF;AAEA,kBAAI,MAAM,MAAM;AACd,oBAAI,MAAM,OAAO,KAAK,kBAAkB;AACtC,wBAAM,SAAS;AACf,uBAAK,IAAI,EAAE,gBAAgB,KAAK;AAChC,uBAAK,KAAK,IAAI;AACd,wBAAM,OAAO;AAAA,gBACf,WAAW,MAAM,OAAO,GAAG;AACzB,uBAAK,IAAI,IAAI;AACb,wBAAM,GAAG,QAAQ,OAAK,KAAK,IAAI,KAAK,CAAC;AACrC,uBAAK,KAAK,IAAI;AAAA,gBAChB;AAAA,cACF,OAAO;AACL,qBAAK,EAAE,IAAI;AACX,sBAAM,SAAS,MAAM,UAAU,CAAC,KAAK,OAAO,MAAM,MAAM,KAAK;AAE7D,oBAAI,MAAM,QAAQ;AAEhB,uBAAK,IAAI,EAAE,gBAAgB,KAAK;AAChC,uBAAK,KAAK,IAAI,MAAM,SAAS,WAAW;AACxC,wBAAM,OAAO;AAAA,gBACf,OAAO;AACL,sBAAI,MAAM,QAAQ;AAChB,yBAAK,KAAK,IAAI;AAAA,kBAChB,OAAO;AACL,yBAAK,KAAK,IAAI;AACd,0BAAM,IAAI;AAAA,kBACZ;AAEA,sBAAI,CAAC,KAAK,SAAS,GAAG;AACpB,yBAAK,KAAK,EAAE,KAAK,KAAK;AACtB,yBAAK,SAAS,EAAE;AAAA,kBAClB,OAAO;AACL,yBAAK,KAAK,EAAE,KAAK,KAAK;AAAA,kBACxB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,CAAC,WAAW,IAAK;AACf,iBAAS,MAAM,KAAK,KAAK,OAAO,CAAC;AAAA,MACnC;AAAA,MAEA,CAAC,YAAY,EAAG,OAAO;AACrB,YAAI,KAAK;AAET,YAAI,CAAC,OAAO;AACV,eAAK,SAAS,IAAI;AAClB,eAAK;AAAA,QACP,WAAW,MAAM,QAAQ,KAAK,GAAG;AAC/B,eAAK,KAAK,MAAM,MAAM,KAAK;AAAA,QAC7B,OAAO;AACL,eAAK,SAAS,IAAI;AAClB,eAAK,KAAK,SAAS,KAAK;AACxB,cAAI,CAAC,MAAM,YAAY;AACrB,kBAAM,GAAG,OAAO,OAAK,KAAK,SAAS,EAAE,CAAC;AACtC,iBAAK;AAAA,UACP;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,SAAS,IAAK;AACb,WAAG;AAAA,QAAC,SAAS,KAAK,YAAY,EAAE,KAAK,KAAK,EAAE,MAAM,CAAC;AAEnD,YAAI,CAAC,KAAK,KAAK,EAAE,QAAQ;AAQvB,gBAAM,KAAK,KAAK,SAAS;AACzB,gBAAM,WAAW,CAAC,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG;AACrD,cAAI,UAAU;AACZ,gBAAI,CAAC,KAAK,OAAO,GAAG;AAClB,mBAAK,KAAK,OAAO;AAAA,YACnB;AAAA,UACF,OAAO;AACL,eAAG,KAAK,SAAS,OAAK,KAAK,KAAK,OAAO,CAAC;AAAA,UAC1C;AAAA,QACF;AAAA,MACF;AAAA,MAEA,CAAC,WAAW,EAAG,OAAO,UAAU;AAE9B,cAAM,QAAQ,KAAK,UAAU;AAC7B,cAAM,KAAK,MAAM;AACjB,cAAM,IAAK,MAAM,MAAM,UAAU,aAAa,IAAK,QAC/C,MAAM,MAAM,UAAU,WAAW,EAAE;AAEvC,cAAM,MAAM,CAAC;AAEb,YAAI,CAAC,MAAM,aAAa;AACtB,eAAK,KAAK,IAAI;AACd,eAAK,UAAU,IAAI;AACnB,gBAAM,IAAI;AAAA,QACZ;AAEA,eAAO,EAAE;AAAA,MACX;AAAA,MAEA,CAAC,WAAW,EAAG,OAAO,UAAU;AAC9B,cAAM,QAAQ,KAAK,UAAU;AAC7B,cAAM,MAAM,KAAK,WAAW,EAAE,OAAO,QAAQ;AAG7C,YAAI,CAAC,KAAK,UAAU,GAAG;AACrB,eAAK,QAAQ,EAAE,KAAK;AAAA,QACtB;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,IAAI,EAAG,IAAI,MAAM,OAAO;AACvB,YAAI,CAAC,KAAK,KAAK,EAAE,UAAU,CAAC,KAAK,SAAS,GAAG;AAC3C,eAAK,KAAK,IAAI,MAAM,KAAK;AAAA,QAC3B,OAAO;AACL,eAAK,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC;AAAA,QACpC;AAAA,MACF;AAAA,MAEA,CAAC,QAAQ,EAAG,OAAO;AACjB,aAAK,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;AAC7B,gBAAQ,MAAM,MAAM;AAAA,UAClB,KAAK;AAAA,UACL,KAAK;AACH,iBAAK,EAAE,IAAI,IAAI,MAAM,KAAK,IAAI,GAAG,KAAK,EAAE,GAAG,KAAK;AAChD;AAAA,UAEF,KAAK;AACH,iBAAK,GAAG,IAAI,IAAI,MAAM,KAAK,IAAI,GAAG,KAAK,GAAG,GAAG,IAAI;AACjD;AAAA,UAEF,KAAK;AAAA,UACL,KAAK;AACH,iBAAK,EAAE,IAAI,KAAK,EAAE,KAAK,uBAAO,OAAO,IAAI;AACzC,iBAAK,EAAE,EAAE,OAAO,KAAK,IAAI,EAAE,QAAQ,QAAQ,EAAE;AAC7C;AAAA,UAEF,KAAK;AACH,iBAAK,EAAE,IAAI,KAAK,EAAE,KAAK,uBAAO,OAAO,IAAI;AACzC,iBAAK,EAAE,EAAE,WAAW,KAAK,IAAI,EAAE,QAAQ,QAAQ,EAAE;AACjD;AAAA,UAGF;AAAS,kBAAM,IAAI,MAAM,mBAAmB,MAAM,IAAI;AAAA,QACxD;AAAA,MACF;AAAA,MAEA,MAAO,OAAO;AACZ,aAAK,OAAO,IAAI;AAChB,aAAK,KAAK,SAAS,KAAK;AAExB,aAAK,KAAK,aAAa,OAAO,EAAE,aAAa,MAAM,CAAC;AAAA,MACtD;AAAA,MAEA,MAAO,OAAO;AACZ,YAAI,KAAK,OAAO,GAAG;AACjB;AAAA,QACF;AAGA,cAAM,YAAY,KAAK,KAAK,MAAM,QAChC,KAAK,WAAW,UAAa,KAAK,KAAK,MAAM;AAC/C,YAAI,aAAa,OAAO;AACtB,cAAI,KAAK,MAAM,GAAG;AAChB,oBAAQ,OAAO,OAAO,CAAC,KAAK,MAAM,GAAG,KAAK,CAAC;AAC3C,iBAAK,MAAM,IAAI;AAAA,UACjB;AACA,cAAI,MAAM,SAAS,WAAW,QAAQ;AACpC,iBAAK,MAAM,IAAI;AACf,mBAAO;AAAA,UACT;AAGA,mBAAS,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,IAAI,WAAW,QAAQ,KAAK;AAClE,gBAAI,MAAM,CAAC,MAAM,WAAW,CAAC,GAAG;AAC9B,mBAAK,KAAK,IAAI;AAAA,YAChB;AAAA,UACF;AAEA,gBAAM,cAAc,KAAK,WAAW;AACpC,cAAI,KAAK,KAAK,MAAM,SAAS,aAAa;AAKxC,gBAAI,MAAM,SAAS,KAAK;AACtB,kBAAI,KAAK,KAAK,GAAG;AACf,qBAAK,SAAS;AAAA,cAChB,OAAO;AACL,qBAAK,MAAM,IAAI;AACf,uBAAO;AAAA,cACT;AAAA,YACF,OAAO;AAGL,kBAAI;AACF,oBAAI,OAAO,MAAM,MAAM,GAAG,GAAG,CAAC;AAC9B,qBAAK,SAAS;AAAA,cAChB,SAAS,GAAG;AACV,qBAAK,SAAS;AAAA,cAChB;AAAA,YACF;AAAA,UACF;AAEA,cAAI,KAAK,KAAK,MAAM,QAAS,KAAK,KAAK,MAAM,SAAS,KAAK,QAAS;AAClE,kBAAM,QAAQ,KAAK,KAAK;AACxB,iBAAK,KAAK,IAAI;AACd,iBAAK,KAAK,IAAI,KAAK,KAAK,MAAM,OAC1B,IAAI,KAAK,MAAM,IACf,IAAI,KAAK,iBAAiB;AAC9B,iBAAK,KAAK,EAAE,GAAG,QAAQ,CAAAC,WAAS,KAAK,YAAY,EAAEA,MAAK,CAAC;AACzD,iBAAK,KAAK,EAAE,GAAG,SAAS,QAAM,KAAK,MAAM,EAAE,CAAC;AAC5C,iBAAK,KAAK,EAAE,GAAG,OAAO,OAAK;AACzB,mBAAK,KAAK,IAAI;AACd,mBAAK,YAAY,EAAE;AAAA,YACrB,CAAC;AACD,iBAAK,OAAO,IAAI;AAChB,kBAAMC,OAAM,KAAK,KAAK,EAAE,QAAQ,QAAQ,OAAO,EAAE,KAAK;AACtD,iBAAK,OAAO,IAAI;AAChB,mBAAOA;AAAA,UACT;AAAA,QACF;AAEA,aAAK,OAAO,IAAI;AAChB,YAAI,KAAK,KAAK,GAAG;AACf,eAAK,KAAK,EAAE,MAAM,KAAK;AAAA,QACzB,OAAO;AACL,eAAK,YAAY,EAAE,KAAK;AAAA,QAC1B;AACA,aAAK,OAAO,IAAI;AAGhB,cAAM,MACJ,KAAK,KAAK,EAAE,SAAS,QACrB,KAAK,SAAS,IAAI,KAAK,SAAS,EAAE,UAClC;AAGF,YAAI,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,QAAQ;AAC/B,eAAK,SAAS,EAAE,KAAK,SAAS,OAAK,KAAK,KAAK,OAAO,CAAC;AAAA,QACvD;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,YAAY,EAAG,GAAG;AACjB,YAAI,KAAK,CAAC,KAAK,OAAO,GAAG;AACvB,eAAK,MAAM,IAAI,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,IAAI;AAAA,QACnE;AAAA,MACF;AAAA,MAEA,CAAC,QAAQ,IAAK;AACZ,YAAI,KAAK,KAAK,KACV,CAAC,KAAK,UAAU,KAChB,CAAC,KAAK,OAAO,KACb,CAAC,KAAK,SAAS,GAAG;AACpB,eAAK,UAAU,IAAI;AACnB,gBAAM,QAAQ,KAAK,UAAU;AAC7B,cAAI,SAAS,MAAM,aAAa;AAE9B,kBAAM,OAAO,KAAK,MAAM,IAAI,KAAK,MAAM,EAAE,SAAS;AAClD,iBAAK,KAAK,mBAAmB,2BAC3B,MAAM,WAAW,qBAAqB,IAAI,eAAe,EAAE,MAAM,CAAC;AACpE,gBAAI,KAAK,MAAM,GAAG;AAChB,oBAAM,MAAM,KAAK,MAAM,CAAC;AAAA,YAC1B;AACA,kBAAM,IAAI;AAAA,UACZ;AACA,eAAK,IAAI,EAAE,IAAI;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,CAAC,YAAY,EAAG,OAAO;AACrB,YAAI,KAAK,SAAS,GAAG;AACnB,eAAK,YAAY,EAAE,KAAK;AAAA,QAC1B,WAAW,CAAC,SAAS,CAAC,KAAK,MAAM,GAAG;AAClC,eAAK,QAAQ,EAAE;AAAA,QACjB,OAAO;AACL,eAAK,SAAS,IAAI;AAClB,cAAI,KAAK,MAAM,GAAG;AAChB,iBAAK,YAAY,EAAE,KAAK;AACxB,kBAAM,IAAI,KAAK,MAAM;AACrB,iBAAK,MAAM,IAAI;AACf,iBAAK,eAAe,EAAE,CAAC;AAAA,UACzB,OAAO;AACL,iBAAK,eAAe,EAAE,KAAK;AAAA,UAC7B;AAEA,iBAAO,KAAK,MAAM,KACd,KAAK,MAAM,EAAE,UAAU,OACvB,CAAC,KAAK,OAAO,KACb,CAAC,KAAK,OAAO,GAAG;AAClB,kBAAM,IAAI,KAAK,MAAM;AACrB,iBAAK,MAAM,IAAI;AACf,iBAAK,eAAe,EAAE,CAAC;AAAA,UACzB;AACA,eAAK,SAAS,IAAI;AAAA,QACpB;AAEA,YAAI,CAAC,KAAK,MAAM,KAAK,KAAK,KAAK,GAAG;AAChC,eAAK,QAAQ,EAAE;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,CAAC,eAAe,EAAG,OAAO;AAGxB,YAAI,WAAW;AACf,cAAM,SAAS,MAAM;AACrB,eAAO,WAAW,OAAO,UAAU,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,OAAO,GAAG;AACnE,kBAAQ,KAAK,KAAK,GAAG;AAAA,YACnB,KAAK;AAAA,YACL,KAAK;AACH,mBAAK,aAAa,EAAE,OAAO,QAAQ;AACnC,0BAAY;AACZ;AAAA,YAEF,KAAK;AAAA,YACL,KAAK;AACH,0BAAY,KAAK,WAAW,EAAE,OAAO,QAAQ;AAC7C;AAAA,YAEF,KAAK;AACH,0BAAY,KAAK,WAAW,EAAE,OAAO,QAAQ;AAC7C;AAAA,YAGF;AACE,oBAAM,IAAI,MAAM,oBAAoB,KAAK,KAAK,CAAC;AAAA,UACnD;AAAA,QACF;AAEA,YAAI,WAAW,QAAQ;AACrB,cAAI,KAAK,MAAM,GAAG;AAChB,iBAAK,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,MAAM,QAAQ,GAAG,KAAK,MAAM,CAAC,CAAC;AAAA,UACpE,OAAO;AACL,iBAAK,MAAM,IAAI,MAAM,MAAM,QAAQ;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAK,OAAO;AACV,YAAI,CAAC,KAAK,OAAO,GAAG;AAClB,cAAI,KAAK,KAAK,GAAG;AACf,iBAAK,KAAK,EAAE,IAAI,KAAK;AAAA,UACvB,OAAO;AACL,iBAAK,KAAK,IAAI;AACd,gBAAI,KAAK,WAAW;AAAW,sBAAQ,SAAS,OAAO,MAAM,CAAC;AAC9D,iBAAK,MAAM,KAAK;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA;AAAA;;;ACviBD;AAAA;AAAA;AAMA,QAAM,MAAM;AACZ,QAAM,SAAS;AACf,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAM,MAAM;AACZ,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,aAAa;AAEnB,WAAO,UAAU,CAAC,MAAM,OAAO,OAAO;AACpC,UAAI,OAAO,SAAS,YAAY;AAC9B,aAAK,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,MACnC,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC9B,gBAAQ,MAAM,OAAO,CAAC;AAAA,MACxB;AAEA,UAAI,OAAO,UAAU,YAAY;AAC/B,aAAK,OAAO,QAAQ;AAAA,MACtB;AAEA,UAAI,CAAC,OAAO;AACV,gBAAQ,CAAC;AAAA,MACX,OAAO;AACL,gBAAQ,MAAM,KAAK,KAAK;AAAA,MAC1B;AAEA,YAAM,MAAM,IAAI,IAAI;AAEpB,UAAI,IAAI,QAAQ,OAAO,OAAO,YAAY;AACxC,cAAM,IAAI,UAAU,+CAA+C;AAAA,MACrE;AAEA,UAAI,CAAC,IAAI,QAAQ,OAAO,OAAO,YAAY;AACzC,cAAM,IAAI,UAAU,0CAA0C;AAAA,MAChE;AAEA,UAAI,MAAM,QAAQ;AAChB,oBAAY,KAAK,KAAK;AAAA,MACxB;AAEA,UAAI,CAAC,IAAI,UAAU;AACjB,wBAAgB,GAAG;AAAA,MACrB;AAEA,aAAO,IAAI,QAAQ,IAAI,OAAO,aAAa,GAAG,IAC1C,IAAI,OAAO,SAAS,KAAK,EAAE,IAC3B,KAAK,GAAG;AAAA,IACd;AAEA,QAAM,kBAAkB,SAAO;AAC7B,YAAM,UAAU,IAAI;AACpB,UAAI,UAAU,UAAU,OAAK;AAC3B,gBAAQ,CAAC;AACT,UAAE,OAAO;AAAA,MACX,IAAI,OAAK,EAAE,OAAO;AAAA,IACpB;AAIA,QAAM,cAAc,CAAC,KAAK,UAAU;AAClC,YAAM,MAAM,IAAI,IAAI,MAAM,IAAI,OAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;AACzD,YAAM,SAAS,IAAI;AAEnB,YAAM,SAAS,CAAC,MAAM,MAAM;AAC1B,cAAM,OAAO,KAAKA,MAAK,MAAM,IAAI,EAAE,QAAQ;AAC3C,cAAM,MAAM,SAAS,OAAO,QACxB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5B,OAAOA,MAAK,QAAQ,IAAI,GAAG,IAAI;AAEnC,YAAI,IAAI,MAAM,GAAG;AACjB,eAAO;AAAA,MACT;AAEA,UAAI,SAAS,SACT,CAAC,MAAM,UAAU,OAAO,MAAM,KAAK,KAAK,OAAO,WAAW,IAAI,CAAC,IAC/D,UAAQ,OAAO,WAAW,IAAI,CAAC;AAAA,IACrC;AAEA,QAAM,eAAe,SAAO;AAC1B,YAAM,IAAI,KAAK,GAAG;AAClB,YAAM,OAAO,IAAI;AACjB,UAAI,QAAQ;AACZ,UAAI;AACJ,UAAI;AACF,cAAM,OAAOD,IAAG,SAAS,IAAI;AAC7B,cAAM,WAAW,IAAI,eAAe,KAAK,OAAO;AAChD,YAAI,KAAK,OAAO,UAAU;AACxB,YAAE,IAAIA,IAAG,aAAa,IAAI,CAAC;AAAA,QAC7B,OAAO;AACL,cAAI,MAAM;AACV,gBAAM,MAAM,OAAO,YAAY,QAAQ;AACvC,eAAKA,IAAG,SAAS,MAAM,GAAG;AAC1B,iBAAO,MAAM,KAAK,MAAM;AACtB,kBAAM,YAAYA,IAAG,SAAS,IAAI,KAAK,GAAG,UAAU,GAAG;AACvD,mBAAO;AACP,cAAE,MAAM,IAAI,MAAM,GAAG,SAAS,CAAC;AAAA,UACjC;AACA,YAAE,IAAI;AAAA,QACR;AACA,gBAAQ;AAAA,MACV,UAAE;AACA,YAAI,SAAS,IAAI;AACf,cAAI;AACF,YAAAA,IAAG,UAAU,EAAE;AAAA,UACjB,SAAS,IAAI;AAAA,UAAC;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAEA,QAAM,WAAW,CAAC,KAAK,OAAO;AAC5B,YAAM,QAAQ,IAAI,OAAO,GAAG;AAC5B,YAAM,WAAW,IAAI,eAAe,KAAK,OAAO;AAEhD,YAAM,OAAO,IAAI;AACjB,YAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,WAAW;AACzC,cAAM,GAAG,SAAS,MAAM;AACxB,cAAM,GAAG,OAAO,OAAO;AAEvB,QAAAA,IAAG,KAAK,MAAM,CAAC,IAAI,SAAS;AAC1B,cAAI,IAAI;AACN,mBAAO,EAAE;AAAA,UACX,OAAO;AACL,kBAAM,SAAS,IAAI,IAAI,WAAW,MAAM;AAAA,cACtC;AAAA,cACA,MAAM,KAAK;AAAA,YACb,CAAC;AACD,mBAAO,GAAG,SAAS,MAAM;AACzB,mBAAO,KAAK,KAAK;AAAA,UACnB;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,aAAO,KAAK,EAAE,KAAK,IAAI,EAAE,IAAI;AAAA,IAC/B;AAEA,QAAM,OAAO,SAAO,IAAI,OAAO,GAAG;AAAA;AAAA;;;AC1IlC;AAAA;AAAA;AAGA,QAAM,MAAM;AAEZ,QAAM,OAAO;AACb,QAAM,MAAM;AACZ,QAAM,IAAI;AACV,QAAME,QAAO,UAAQ,MAAM;AAE3B,WAAO,UAAU,CAAC,MAAM,OAAO,OAAO;AACpC,UAAI,OAAO,UAAU,YAAY;AAC/B,aAAK;AAAA,MACP;AAEA,UAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,gBAAQ,MAAM,OAAO,CAAC;AAAA,MACxB;AAEA,UAAI,CAAC,SAAS,CAAC,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,QAAQ;AACpD,cAAM,IAAI,UAAU,mCAAmC;AAAA,MACzD;AAEA,cAAQ,MAAM,KAAK,KAAK;AAExB,YAAM,MAAM,IAAI,IAAI;AAEpB,UAAI,IAAI,QAAQ,OAAO,OAAO,YAAY;AACxC,cAAM,IAAI,UAAU,+CAA+C;AAAA,MACrE;AAEA,UAAI,CAAC,IAAI,QAAQ,OAAO,OAAO,YAAY;AACzC,cAAM,IAAI,UAAU,0CAA0C;AAAA,MAChE;AAEA,aAAO,IAAI,QAAQ,IAAI,OAAO,eAAe,KAAK,KAAK,IACnD,IAAI,OAAO,WAAW,KAAK,OAAO,EAAE,IACpC,IAAI,OAAO,WAAW,KAAK,KAAK,IAChC,OAAO,KAAK,KAAK;AAAA,IACvB;AAEA,QAAM,iBAAiB,CAAC,KAAK,UAAU;AACrC,YAAM,IAAI,IAAI,KAAK,KAAK,GAAG;AAC3B,YAAM,SAAS,IAAI,IAAI,gBAAgB,IAAI,MAAM;AAAA,QAC/C,MAAM,IAAI,QAAQ;AAAA,MACpB,CAAC;AACD,QAAE,KAAK,MAAM;AACb,mBAAa,GAAG,KAAK;AAAA,IACvB;AAEA,QAAM,aAAa,CAAC,KAAK,OAAO,OAAO;AACrC,YAAM,IAAI,IAAI,KAAK,GAAG;AACtB,YAAM,SAAS,IAAI,IAAI,YAAY,IAAI,MAAM;AAAA,QAC3C,MAAM,IAAI,QAAQ;AAAA,MACpB,CAAC;AACD,QAAE,KAAK,MAAM;AAEb,YAAM,UAAU,IAAI,QAAQ,CAAC,KAAK,QAAQ;AACxC,eAAO,GAAG,SAAS,GAAG;AACtB,eAAO,GAAG,SAAS,GAAG;AACtB,UAAE,GAAG,SAAS,GAAG;AAAA,MACnB,CAAC;AAED,oBAAc,GAAG,KAAK;AAEtB,aAAO,KAAK,QAAQ,KAAK,IAAI,EAAE,IAAI;AAAA,IACrC;AAEA,QAAM,eAAe,CAAC,GAAG,UAAU;AACjC,YAAM,QAAQ,UAAQ;AACpB,YAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AAC1B,YAAE;AAAA,YACA,MAAMA,MAAK,QAAQ,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC;AAAA,YACvC,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,WAAS,EAAE,IAAI,KAAK;AAAA,UAC/B,CAAC;AAAA,QACH,OAAO;AACL,YAAE,IAAI,IAAI;AAAA,QACZ;AAAA,MACF,CAAC;AACD,QAAE,IAAI;AAAA,IACR;AAEA,QAAM,gBAAgB,CAAC,GAAG,UAAU;AAClC,aAAO,MAAM,QAAQ;AACnB,cAAM,OAAO,MAAM,MAAM;AACzB,YAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AAC1B,iBAAO,EAAE;AAAA,YACP,MAAMA,MAAK,QAAQ,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC;AAAA,YACvC,UAAU;AAAA,YACV,SAAS,WAAS,EAAE,IAAI,KAAK;AAAA,UAC/B,CAAC,EAAE,KAAK,OAAK,cAAc,GAAG,KAAK,CAAC;AAAA,QACtC,OAAO;AACL,YAAE,IAAI,IAAI;AAAA,QACZ;AAAA,MACF;AACA,QAAE,IAAI;AAAA,IACR;AAEA,QAAM,aAAa,CAAC,KAAK,UAAU;AACjC,YAAM,IAAI,IAAI,KAAK,KAAK,GAAG;AAC3B,mBAAa,GAAG,KAAK;AACrB,aAAO;AAAA,IACT;AAEA,QAAM,SAAS,CAAC,KAAK,UAAU;AAC7B,YAAM,IAAI,IAAI,KAAK,GAAG;AACtB,oBAAc,GAAG,KAAK;AACtB,aAAO;AAAA,IACT;AAAA;AAAA;;;AC9GA;AAAA;AAAA;AAGA,QAAM,MAAM;AACZ,QAAM,OAAO;AACb,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAM,MAAM;AACZ,QAAM,IAAI;AACV,QAAMC,QAAO,UAAQ,MAAM;AAQ3B,QAAM,SAAS;AAEf,WAAO,UAAU,CAAC,MAAM,OAAO,OAAO;AACpC,YAAM,MAAM,IAAI,IAAI;AAEpB,UAAI,CAAC,IAAI,MAAM;AACb,cAAM,IAAI,UAAU,kBAAkB;AAAA,MACxC;AAEA,UAAI,IAAI,QAAQ,IAAI,UAAU,IAAI,KAAK,SAAS,KAAK,KAAK,IAAI,KAAK,SAAS,MAAM,GAAG;AACnF,cAAM,IAAI,UAAU,sCAAsC;AAAA,MAC5D;AAEA,UAAI,CAAC,SAAS,CAAC,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,QAAQ;AACpD,cAAM,IAAI,UAAU,mCAAmC;AAAA,MACzD;AAEA,cAAQ,MAAM,KAAK,KAAK;AAExB,aAAO,IAAI,OAAO,YAAY,KAAK,KAAK,IACpC,QAAQ,KAAK,OAAO,EAAE;AAAA,IAC5B;AAEA,QAAM,cAAc,CAAC,KAAK,UAAU;AAClC,YAAM,IAAI,IAAI,KAAK,KAAK,GAAG;AAE3B,UAAI,QAAQ;AACZ,UAAI;AACJ,UAAI;AAEJ,UAAI;AACF,YAAI;AACF,eAAKD,IAAG,SAAS,IAAI,MAAM,IAAI;AAAA,QACjC,SAAS,IAAI;AACX,cAAI,GAAG,SAAS,UAAU;AACxB,iBAAKA,IAAG,SAAS,IAAI,MAAM,IAAI;AAAA,UACjC,OAAO;AACL,kBAAM;AAAA,UACR;AAAA,QACF;AAEA,cAAM,KAAKA,IAAG,UAAU,EAAE;AAC1B,cAAM,UAAU,OAAO,MAAM,GAAG;AAEhC;AAAU,eAAK,WAAW,GAAG,WAAW,GAAG,MAAM,YAAY,KAAK;AAChE,qBAAS,SAAS,GAAG,QAAQ,GAAG,SAAS,KAAK,UAAU,OAAO;AAC7D,sBAAQA,IAAG;AAAA,gBACT;AAAA,gBAAI;AAAA,gBAAS;AAAA,gBAAQ,QAAQ,SAAS;AAAA,gBAAQ,WAAW;AAAA,cAC3D;AAEA,kBAAI,aAAa,KAAK,QAAQ,CAAC,MAAM,MAAQ,QAAQ,CAAC,MAAM,KAAM;AAChE,sBAAM,IAAI,MAAM,sCAAsC;AAAA,cACxD;AAEA,kBAAI,CAAC,OAAO;AACV,sBAAM;AAAA,cACR;AAAA,YACF;AAEA,kBAAM,IAAI,IAAI,OAAO,OAAO;AAC5B,gBAAI,CAAC,EAAE,YAAY;AACjB;AAAA,YACF;AACA,kBAAM,iBAAiB,MAAM,KAAK,KAAK,EAAE,OAAO,GAAG;AACnD,gBAAI,WAAW,iBAAiB,MAAM,GAAG,MAAM;AAC7C;AAAA,YACF;AAGA,wBAAY;AACZ,gBAAI,IAAI,YAAY;AAClB,kBAAI,WAAW,IAAI,EAAE,MAAM,EAAE,KAAK;AAAA,YACpC;AAAA,UACF;AACA,gBAAQ;AAER,mBAAW,KAAK,GAAG,UAAU,IAAI,KAAK;AAAA,MACxC,UAAE;AACA,YAAI,OAAO;AACT,cAAI;AACF,YAAAA,IAAG,UAAU,EAAE;AAAA,UACjB,SAAS,IAAI;AAAA,UAAC;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAEA,QAAM,aAAa,CAAC,KAAK,GAAG,UAAU,IAAI,UAAU;AAClD,YAAM,SAAS,IAAI,IAAI,gBAAgB,IAAI,MAAM;AAAA,QAC/C;AAAA,QACA,OAAO;AAAA,MACT,CAAC;AACD,QAAE,KAAK,MAAM;AACb,mBAAa,GAAG,KAAK;AAAA,IACvB;AAEA,QAAM,UAAU,CAAC,KAAK,OAAO,OAAO;AAClC,cAAQ,MAAM,KAAK,KAAK;AACxB,YAAM,IAAI,IAAI,KAAK,GAAG;AAEtB,YAAM,SAAS,CAAC,IAAI,MAAM,QAAQ;AAChC,cAAME,MAAK,CAAC,IAAI,QAAQ;AACtB,cAAI,IAAI;AACN,YAAAF,IAAG,MAAM,IAAI,OAAK,IAAI,EAAE,CAAC;AAAA,UAC3B,OAAO;AACL,gBAAI,MAAM,GAAG;AAAA,UACf;AAAA,QACF;AAEA,YAAI,WAAW;AACf,YAAI,SAAS,GAAG;AACd,iBAAOE,IAAG,MAAM,CAAC;AAAA,QACnB;AAEA,YAAI,SAAS;AACb,cAAM,UAAU,OAAO,MAAM,GAAG;AAChC,cAAM,SAAS,CAAC,IAAI,UAAU;AAC5B,cAAI,IAAI;AACN,mBAAOA,IAAG,EAAE;AAAA,UACd;AACA,oBAAU;AACV,cAAI,SAAS,OAAO,OAAO;AACzB,mBAAOF,IAAG;AAAA,cACR;AAAA,cAAI;AAAA,cAAS;AAAA,cAAQ,QAAQ,SAAS;AAAA,cACtC,WAAW;AAAA,cAAQ;AAAA,YACrB;AAAA,UACF;AAEA,cAAI,aAAa,KAAK,QAAQ,CAAC,MAAM,MAAQ,QAAQ,CAAC,MAAM,KAAM;AAChE,mBAAOE,IAAG,IAAI,MAAM,sCAAsC,CAAC;AAAA,UAC7D;AAGA,cAAI,SAAS,KAAK;AAChB,mBAAOA,IAAG,MAAM,QAAQ;AAAA,UAC1B;AAEA,gBAAM,IAAI,IAAI,OAAO,OAAO;AAC5B,cAAI,CAAC,EAAE,YAAY;AACjB,mBAAOA,IAAG,MAAM,QAAQ;AAAA,UAC1B;AAEA,gBAAM,iBAAiB,MAAM,KAAK,KAAK,EAAE,OAAO,GAAG;AACnD,cAAI,WAAW,iBAAiB,MAAM,MAAM;AAC1C,mBAAOA,IAAG,MAAM,QAAQ;AAAA,UAC1B;AAEA,sBAAY,iBAAiB;AAC7B,cAAI,YAAY,MAAM;AACpB,mBAAOA,IAAG,MAAM,QAAQ;AAAA,UAC1B;AAEA,cAAI,IAAI,YAAY;AAClB,gBAAI,WAAW,IAAI,EAAE,MAAM,EAAE,KAAK;AAAA,UACpC;AACA,mBAAS;AACT,UAAAF,IAAG,KAAK,IAAI,SAAS,GAAG,KAAK,UAAU,MAAM;AAAA,QAC/C;AACA,QAAAA,IAAG,KAAK,IAAI,SAAS,GAAG,KAAK,UAAU,MAAM;AAAA,MAC/C;AAEA,YAAM,UAAU,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC/C,UAAE,GAAG,SAAS,MAAM;AACpB,YAAI,OAAO;AACX,cAAM,SAAS,CAAC,IAAI,OAAO;AACzB,cAAI,MAAM,GAAG,SAAS,YAAY,SAAS,MAAM;AAC/C,mBAAO;AACP,mBAAOA,IAAG,KAAK,IAAI,MAAM,MAAM,MAAM;AAAA,UACvC;AAEA,cAAI,IAAI;AACN,mBAAO,OAAO,EAAE;AAAA,UAClB;AAEA,UAAAA,IAAG,MAAM,IAAI,CAACG,KAAI,OAAO;AACvB,gBAAIA,KAAI;AACN,qBAAOH,IAAG,MAAM,IAAI,MAAM,OAAOG,GAAE,CAAC;AAAA,YACtC;AAEA,mBAAO,IAAI,GAAG,MAAM,CAACA,KAAI,aAAa;AACpC,kBAAIA,KAAI;AACN,uBAAO,OAAOA,GAAE;AAAA,cAClB;AACA,oBAAM,SAAS,IAAI,IAAI,YAAY,IAAI,MAAM;AAAA,gBAC3C;AAAA,gBACA,OAAO;AAAA,cACT,CAAC;AACD,gBAAE,KAAK,MAAM;AACb,qBAAO,GAAG,SAAS,MAAM;AACzB,qBAAO,GAAG,SAAS,OAAO;AAC1B,4BAAc,GAAG,KAAK;AAAA,YACxB,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AACA,QAAAH,IAAG,KAAK,IAAI,MAAM,MAAM,MAAM;AAAA,MAChC,CAAC;AAED,aAAO,KAAK,QAAQ,KAAK,IAAI,EAAE,IAAI;AAAA,IACrC;AAEA,QAAM,eAAe,CAAC,GAAG,UAAU;AACjC,YAAM,QAAQ,UAAQ;AACpB,YAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AAC1B,YAAE;AAAA,YACA,MAAMC,MAAK,QAAQ,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC;AAAA,YACvC,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,WAAS,EAAE,IAAI,KAAK;AAAA,UAC/B,CAAC;AAAA,QACH,OAAO;AACL,YAAE,IAAI,IAAI;AAAA,QACZ;AAAA,MACF,CAAC;AACD,QAAE,IAAI;AAAA,IACR;AAEA,QAAM,gBAAgB,CAAC,GAAG,UAAU;AAClC,aAAO,MAAM,QAAQ;AACnB,cAAM,OAAO,MAAM,MAAM;AACzB,YAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AAC1B,iBAAO,EAAE;AAAA,YACP,MAAMA,MAAK,QAAQ,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC;AAAA,YACvC,UAAU;AAAA,YACV,SAAS,WAAS,EAAE,IAAI,KAAK;AAAA,UAC/B,CAAC,EAAE,KAAK,OAAK,cAAc,GAAG,KAAK,CAAC;AAAA,QACtC,OAAO;AACL,YAAE,IAAI,IAAI;AAAA,QACZ;AAAA,MACF;AACA,QAAE,IAAI;AAAA,IACR;AAAA;AAAA;;;ACrPA;AAAA;AAAA;AAIA,QAAM,MAAM;AACZ,QAAM,IAAI;AAGV,WAAO,UAAU,CAAC,MAAM,OAAO,OAAO;AACpC,YAAM,MAAM,IAAI,IAAI;AAEpB,UAAI,CAAC,IAAI,MAAM;AACb,cAAM,IAAI,UAAU,kBAAkB;AAAA,MACxC;AAEA,UAAI,IAAI,QAAQ,IAAI,UAAU,IAAI,KAAK,SAAS,KAAK,KAAK,IAAI,KAAK,SAAS,MAAM,GAAG;AACnF,cAAM,IAAI,UAAU,sCAAsC;AAAA,MAC5D;AAEA,UAAI,CAAC,SAAS,CAAC,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,QAAQ;AACpD,cAAM,IAAI,UAAU,mCAAmC;AAAA,MACzD;AAEA,cAAQ,MAAM,KAAK,KAAK;AAExB,kBAAY,GAAG;AACf,aAAO,EAAE,KAAK,OAAO,EAAE;AAAA,IACzB;AAEA,QAAM,cAAc,SAAO;AACzB,YAAM,SAAS,IAAI;AAEnB,UAAI,CAAC,IAAI,YAAY;AACnB,YAAI,aAAa,oBAAI,IAAI;AAAA,MAC3B;AAEA,UAAI,SAAS,SAAS,CAACG,OAAM,SAC3B,OAAOA,OAAM,IAAI,KAAK,EAAE,IAAI,WAAW,IAAIA,KAAI,IAAI,KAAK,SACtD,CAACA,OAAM,SAAS,EAAE,IAAI,WAAW,IAAIA,KAAI,IAAI,KAAK;AAAA,IACxD;AAAA;AAAA;;;ACvCA;AAAA;AAAA,QAAM,EAAE,UAAU,IAAI,UAAQ,MAAM;AACpC,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAM,UAAU,UAAQ;AACtB,UAAI,CAAC;AACH,eAAO,EAAE,MAAM,KAAO,IAAAA,IAAG;AAAA,eAClB,OAAO,SAAS;AACvB,eAAO,EAAE,MAAM,KAAO,IAAAA,KAAI,GAAG,KAAK;AAAA,eAC3B,OAAO,SAAS;AACvB,eAAO,EAAE,MAAM,MAAM,IAAAA,IAAG;AAAA,eACjB,OAAO,SAAS;AACvB,eAAO,EAAE,MAAM,SAAS,MAAM,CAAC,GAAG,IAAAA,IAAG;AAAA;AAErC,cAAM,IAAI,UAAU,0BAA0B;AAEhD,WAAK,QAAQ,KAAK,SAAS,KAAK,GAAG,SAASA,IAAG;AAC/C,WAAK,aAAa,UAAU,KAAK,KAAK;AACtC,WAAK,OAAO,KAAK,QAAQ,KAAK,GAAG,QAAQA,IAAG;AAC5C,WAAK,YAAY,UAAU,KAAK,IAAI;AACpC,WAAK,WAAW,KAAK,YAAY,KAAK,GAAG,YAAYA,IAAG;AACxD,WAAK,YAAY,KAAK,aAAa,KAAK,GAAG,aAAaA,IAAG;AAC3D,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACtBjB;AAAA;AAAA,QAAM,WAAW,QAAQ,IAAI,+BAA+B,QAAQ;AACpE,QAAM,EAAE,SAAS,MAAM,IAAI,UAAQ,MAAM;AACzC,QAAM,UAAU,CAAAC,UAAQ;AACtB,UAAI,KAAK,KAAKA,KAAI,GAAG;AAEnB,cAAM,OAAO;AAAA,UACX,IAAI,UAAU,0CAA0C;AAAA,UACxD;AAAA,YACE,MAAAA;AAAA,YACA,MAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,MAAAA,QAAO,QAAQA,KAAI;AACnB,UAAI,aAAa,SAAS;AACxB,cAAM,cAAc;AACpB,cAAM,EAAC,KAAI,IAAI,MAAMA,KAAI;AACzB,YAAI,YAAY,KAAKA,MAAK,OAAO,KAAK,MAAM,CAAC,GAAG;AAC9C,gBAAM,OAAO,OAAO,IAAI,MAAM,6BAA6B,GAAG;AAAA,YAC5D,MAAAA;AAAA,YACA,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAEA,aAAOA;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;AC5BjB;AAAA;AAAA,QAAM,EAAC,QAAO,IAAI,UAAQ,MAAM;AAEhC,QAAM,WAAW,CAAC,MAAM,QAAQC,QAAO,WAAc;AAEnD,UAAIA,UAAS;AACX,eAAO,QAAQ,QAAQ;AAEzB,aAAO,KAAK,UAAU,MAAM,EAAE;AAAA,QAC5B,QAAM,GAAG,YAAY,IAAIA,QAAO;AAAA;AAAA,QAChC,QAAM,GAAG,SAAS,WACd,SAAS,MAAM,QAAQ,MAAM,GAAG,MAAM,IACtC;AAAA,MACN;AAAA,IACF;AAEA,QAAM,eAAe,CAAC,MAAM,QAAQA,QAAO,WAAc;AACvD,UAAIA,UAAS;AACX,eAAO;AAET,UAAI;AACF,eAAO,KAAK,SAAS,MAAM,EAAE,YAAY,IAAIA,QAAO;AAAA,MACtD,SAAS,IAAI;AACX,eAAO,GAAG,SAAS,WACf,aAAa,MAAM,QAAQ,MAAM,GAAG,MAAM,IAC1C;AAAA,MACN;AAAA,IACF;AAEA,WAAO,UAAU,EAAC,UAAU,aAAY;AAAA;AAAA;;;AC5BxC;AAAA;AAAA,QAAM,EAAC,QAAO,IAAI,UAAQ,MAAM;AAEhC,QAAM,eAAe,CAACC,OAAM,MAAM,SAAS;AACzC,WAAK,YAAY;AACjB,YAAM,SAAS,QAAQA,KAAI;AAC3B,UAAI,WAAWA,OAAM;AACnB,eAAO,KAAK,WAAWA,OAAM,IAAI,EAAE,MAAM,QAAM;AAG7C,cAAI,GAAG,SAAS;AACd,kBAAM;AAAA,QACV,CAAC;AAAA,MACH;AAEA,aAAO,KAAK,WAAWA,OAAM,IAAI,EAAE,KAAK,MAAM,QAAQA,OAAM,QAAM;AAChE,YAAI,GAAG,SAAS;AACd,iBAAO,aAAa,QAAQ,IAAI,EAC7B,KAAK,CAAAC,UAAQ,aAAaD,OAAM,MAAMC,KAAI,CAAC;AAChD,YAAI,GAAG,SAAS,YAAY,GAAG,SAAS;AACtC,gBAAM;AACR,eAAO,KAAK,UAAUD,KAAI,EAAE,KAAK,QAAM;AACrC,cAAI,GAAG,YAAY;AACjB,mBAAO;AAAA;AAEP,kBAAM;AAAA,QACV,GAAG,MAAM;AAAE,gBAAM;AAAA,QAAG,CAAC;AAAA,MACvB,CAAC;AAAA,IACH;AAEA,QAAM,mBAAmB,CAACA,OAAM,MAAM,SAAS;AAC7C,YAAM,SAAS,QAAQA,KAAI;AAC3B,WAAK,YAAY;AAEjB,UAAI,WAAWA,OAAM;AACnB,YAAI;AACF,iBAAO,KAAK,UAAUA,OAAM,IAAI;AAAA,QAClC,SAAS,IAAI;AAGX,cAAI,GAAG,SAAS;AACd,kBAAM;AAAA;AAEN;AAAA,QACJ;AAAA,MACF;AAEA,UAAI;AACF,aAAK,UAAUA,OAAM,IAAI;AACzB,eAAO,QAAQA;AAAA,MACjB,SAAS,IAAI;AACX,YAAI,GAAG,SAAS;AACd,iBAAO,iBAAiBA,OAAM,MAAM,iBAAiB,QAAQ,MAAM,IAAI,CAAC;AAC1E,YAAI,GAAG,SAAS,YAAY,GAAG,SAAS;AACtC,gBAAM;AACR,YAAI;AACF,cAAI,CAAC,KAAK,SAASA,KAAI,EAAE,YAAY;AACnC,kBAAM;AAAA,QACV,SAAS,GAAG;AACV,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,WAAO,UAAU,EAAC,cAAc,iBAAgB;AAAA;AAAA;;;AC/DhD;AAAA;AAAA,QAAM,EAAC,QAAO,IAAI,UAAQ,MAAM;AAChC,QAAM,EAAC,UAAU,aAAY,IAAI;AACjC,QAAM,EAAC,cAAc,iBAAgB,IAAI;AAEzC,QAAM,eAAe,CAACE,OAAM,SAAS;AACnC,WAAK,YAAY;AACjB,YAAM,SAAS,QAAQA,KAAI;AAC3B,UAAI,WAAWA;AACb,eAAO,KAAK,WAAWA,OAAM,IAAI;AAEnC,aAAO,SAAS,MAAMA,KAAI,EAAE,KAAK,UAC/B,KAAK,WAAWA,OAAM,IAAI,EAAE,KAAK,MAAM,IAAI,EAC1C,MAAM,QAAM;AACX,YAAI,GAAG,SAAS;AACd,iBAAO,aAAaA,OAAM,IAAI;AAAA;AAE9B,gBAAM;AAAA,MACV,CAAC,CAAC;AAAA,IACN;AAEA,QAAM,mBAAmB,CAACA,OAAM,SAAS;AACvC,WAAK,YAAY;AACjB,YAAM,SAAS,QAAQA,KAAI;AAC3B,UAAI,WAAWA;AACb,eAAO,KAAK,UAAUA,OAAM,IAAI;AAElC,YAAM,OAAO,aAAa,MAAMA,KAAI;AACpC,UAAI;AACF,aAAK,UAAUA,OAAM,IAAI;AACzB,eAAO;AAAA,MACT,SAAS,IAAI;AACX,YAAI,GAAG,SAAS;AACd,iBAAO,iBAAiBA,OAAM,IAAI;AAAA;AAElC,gBAAM;AAAA,MACV;AAAA,IACF;AAEA,WAAO,UAAU,EAAC,cAAc,iBAAgB;AAAA;AAAA;;;ACtChD;AAAA;AAAA,QAAMC,MAAK,UAAQ,IAAI;AAEvB,QAAMC,WAAU,QAAQ,IAAI,mCAAmC,QAAQ;AACvE,QAAM,UAAUA,SAAQ,QAAQ,MAAM,EAAE,EAAE,MAAM,GAAG;AACnD,QAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK;AAE3E,QAAM,YAAY,CAAC,YAAY,MAAM,QAAQ,UAAQ,KAAK,UAAUD,IAAG;AACvE,QAAM,gBAAgB,CAAC,YAAY,MAAM,QAAQ,UAAQ,KAAK,cAAcA,IAAG;AAE/E,WAAO,UAAU,EAAC,WAAW,cAAa;AAAA;AAAA;;;ACT1C;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,UAAU;AAEhB,QAAM,EAAC,cAAc,iBAAgB,IAAI;AACzC,QAAM,EAAC,cAAc,iBAAgB,IAAI;AACzC,QAAM,EAAC,WAAW,cAAa,IAAI;AAGnC,QAAM,SAAS,CAACE,OAAM,SAAS;AAC7B,MAAAA,QAAO,QAAQA,KAAI;AACnB,aAAO,QAAQ,IAAI;AACnB,aAAO,UAAU,IAAI,IACjB,aAAaA,OAAM,IAAI,IACvB,aAAaA,OAAM,IAAI;AAAA,IAC7B;AAEA,QAAM,aAAa,CAACA,OAAM,SAAS;AACjC,MAAAA,QAAO,QAAQA,KAAI;AACnB,aAAO,QAAQ,IAAI;AACnB,aAAO,cAAc,IAAI,IACrB,iBAAiBA,OAAM,IAAI,IAC3B,iBAAiBA,OAAM,IAAI;AAAA,IACjC;AAEA,WAAO,OAAO;AACd,WAAO,SAAS,CAACA,OAAM,SAAS,aAAa,QAAQA,KAAI,GAAG,QAAQ,IAAI,CAAC;AACzE,WAAO,SAAS,CAACA,OAAM,SAAS,aAAa,QAAQA,KAAI,GAAG,QAAQ,IAAI,CAAC;AACzE,WAAO,aAAa,CAACA,OAAM,SAAS,iBAAiB,QAAQA,KAAI,GAAG,QAAQ,IAAI,CAAC;AACjF,WAAO,aAAa,CAACA,OAAM,SAAS,iBAAiB,QAAQA,KAAI,GAAG,QAAQ,IAAI,CAAC;AAEjF,WAAO,UAAU;AAAA;AAAA;;;AC9BjB;AAAA;AAAA;AACA,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAMC,QAAO,UAAQ,MAAM;AAG3B,QAAM,SAASD,IAAG,SAAS,WAAW;AAEtC,QAAM,aAAaA,IAAG,aAAa,eAAe;AAGlD,QAAM,oBAAoBA,IAAG,UAC3B,CAAC,QAAQ,QAAQ,MAAM,YAAY,KACnC,CAAC,QAAQ,QAAQ,MAAM,YAAY;AAErC,QAAM,aAAa,CAACC,OAAM,KAAK,QAAQ;AACrC,UAAI;AACF,eAAOD,IAAG,UAAU,EAAEC,OAAM,KAAK,GAAG;AAAA,MACtC,SAAS,IAAI;AACX,YAAI,GAAG,SAAS;AACd,gBAAM;AAAA,MACV;AAAA,IACF;AAGA,QAAM,YAAY,CAACA,OAAM,KAAK,QAAQ;AACpC,UAAI;AACF,eAAOD,IAAG,UAAUC,OAAM,KAAK,GAAG;AAAA,MACpC,SAAS,IAAI;AACX,YAAI,GAAG,SAAS;AACd,gBAAM;AAAA,MACV;AAAA,IACF;AAGA,QAAM,eACJ,oBAAoB,CAACA,OAAM,KAAK,KAAK,OAAO,QAAM;AAIhD,UAAI,CAAC,MAAM,GAAG,SAAS;AACrB,WAAG,EAAE;AAAA;AAEL,QAAAD,IAAG,MAAMC,OAAM,KAAK,KAAK,EAAE;AAAA,IAC/B,IACE,CAAC,GAAG,IAAI,KAAK,OAAO;AAGxB,QAAM,mBACJ,oBAAoB,CAACA,OAAM,KAAK,QAAQ;AACtC,UAAI;AACF,eAAO,WAAWA,OAAM,KAAK,GAAG;AAAA,MAClC,SAAS,IAAI;AACX,YAAI,GAAG,SAAS;AACd,gBAAM;AACR,kBAAUA,OAAM,KAAK,GAAG;AAAA,MAC1B;AAAA,IACF,IACE,CAACA,OAAM,KAAK,QAAQ,WAAWA,OAAM,KAAK,GAAG;AAGjD,QAAM,cAAc,QAAQ;AAC5B,QAAI,UAAU,CAACA,OAAM,SAAS,OAAOD,IAAG,QAAQC,OAAM,SAAS,EAAE;AACjE,QAAI,cAAc,CAACA,OAAM,YAAYD,IAAG,YAAYC,OAAM,OAAO;AAEjE,QAAI,QAAQ,KAAK,WAAW;AAC1B,gBAAU,CAACA,OAAM,SAAS,OAAOD,IAAG,QAAQC,OAAM,EAAE;AAEtD,QAAM,QAAQ,CAAC,OAAO,KAAK,KAAK,OAAO;AACrC,MAAAD,IAAG,MAAM,EAAE,OAAO,KAAK,KAAK,aAAa,OAAO,KAAK,KAAK,QAAM;AAE9D,WAAG,MAAM,GAAG,SAAS,WAAW,KAAK,IAAI;AAAA,MAC3C,CAAC,CAAC;AAAA,IACJ;AAEA,QAAM,YAAY,CAAC,GAAG,OAAO,KAAK,KAAK,OAAO;AAC5C,UAAI,OAAO,UAAU;AACnB,eAAOA,IAAG,MAAMC,MAAK,QAAQ,GAAG,KAAK,GAAG,CAAC,IAAI,UAAU;AAErD,cAAI;AACF,mBAAO,GAAG,GAAG,SAAS,WAAW,KAAK,IAAI;AAC5C,gBAAM,OAAO;AACb,oBAAU,GAAG,OAAO,KAAK,KAAK,EAAE;AAAA,QAClC,CAAC;AAEH,UAAI,MAAM,YAAY,GAAG;AACvB,eAAOA,MAAK,QAAQ,GAAG,MAAM,IAAI,GAAG,KAAK,KAAK,QAAM;AAClD,cAAI;AACF,mBAAO,GAAG,EAAE;AACd,gBAAM,QAAQA,MAAK,QAAQ,GAAG,MAAM,IAAI;AACxC,gBAAM,OAAO,KAAK,KAAK,EAAE;AAAA,QAC3B,CAAC;AAAA,MACH,OAAO;AACL,cAAM,QAAQA,MAAK,QAAQ,GAAG,MAAM,IAAI;AACxC,cAAM,OAAO,KAAK,KAAK,EAAE;AAAA,MAC3B;AAAA,IACF;AAGA,QAAM,SAAS,CAAC,GAAG,KAAK,KAAK,OAAO;AAClC,cAAQ,GAAG,EAAE,eAAe,KAAK,GAAG,CAAC,IAAI,aAAa;AAGpD,YAAI,IAAI;AACN,cAAI,GAAG,SAAS;AACd,mBAAO,GAAG;AAAA,mBACH,GAAG,SAAS,aAAa,GAAG,SAAS;AAC5C,mBAAO,GAAG,EAAE;AAAA,QAChB;AACA,YAAI,MAAM,CAAC,SAAS;AAClB,iBAAO,MAAM,GAAG,KAAK,KAAK,EAAE;AAE9B,YAAI,MAAM,SAAS;AACnB,YAAI,WAAW;AACf,cAAM,OAAO,CAAAC,QAAM;AACjB,cAAI;AACF;AACF,cAAIA;AACF,mBAAO,GAAG,WAAWA,GAAE;AACzB,cAAI,EAAG,QAAQ;AACb,mBAAO,MAAM,GAAG,KAAK,KAAK,EAAE;AAAA,QAChC;AAEA,iBAAS,QAAQ,WAAS,UAAU,GAAG,OAAO,KAAK,KAAK,IAAI,CAAC;AAAA,MAC/D,CAAC;AAAA,IACH;AAEA,QAAM,gBAAgB,CAAC,GAAG,OAAO,KAAK,QAAQ;AAC5C,UAAI,OAAO,UAAU,UAAU;AAC7B,YAAI;AACF,gBAAM,QAAQF,IAAG,UAAUC,MAAK,QAAQ,GAAG,KAAK,CAAC;AACjD,gBAAM,OAAO;AACb,kBAAQ;AAAA,QACV,SAAS,IAAI;AACX,cAAI,GAAG,SAAS;AACd;AAAA;AAEA,kBAAM;AAAA,QACV;AAAA,MACF;AAEA,UAAI,MAAM,YAAY;AACpB,mBAAWA,MAAK,QAAQ,GAAG,MAAM,IAAI,GAAG,KAAK,GAAG;AAElD,uBAAiBA,MAAK,QAAQ,GAAG,MAAM,IAAI,GAAG,KAAK,GAAG;AAAA,IACxD;AAEA,QAAM,aAAa,CAAC,GAAG,KAAK,QAAQ;AAClC,UAAI;AACJ,UAAI;AACF,mBAAW,YAAY,GAAG,EAAE,eAAe,KAAK,CAAC;AAAA,MACnD,SAAS,IAAI;AACX,YAAI,GAAG,SAAS;AACd;AAAA,iBACO,GAAG,SAAS,aAAa,GAAG,SAAS;AAC5C,iBAAO,iBAAiB,GAAG,KAAK,GAAG;AAAA;AAEnC,gBAAM;AAAA,MACV;AAEA,UAAI,YAAY,SAAS;AACvB,iBAAS,QAAQ,WAAS,cAAc,GAAG,OAAO,KAAK,GAAG,CAAC;AAE7D,aAAO,iBAAiB,GAAG,KAAK,GAAG;AAAA,IACrC;AAEA,WAAO,UAAU;AACjB,WAAO,OAAO;AAAA;AAAA;;;ACtKd;AAAA;AAAA;AAMA,QAAM,SAAS;AACf,QAAME,MAAK,UAAQ,IAAI;AACvB,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,SAAS;AACf,QAAM,WAAW;AAEjB,QAAM,eAAN,cAA2B,MAAM;AAAA,MAC/B,YAAa,SAASA,OAAM;AAC1B,cAAM,sCAAsC;AAC5C,aAAK,OAAOA;AACZ,aAAK,UAAU;AAAA,MACjB;AAAA,MAEA,IAAI,OAAQ;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAM,WAAN,cAAuB,MAAM;AAAA,MAC3B,YAAaA,OAAM,MAAM;AACvB,cAAM,OAAO,uBAAwBA,QAAO,GAAI;AAChD,aAAK,OAAOA;AACZ,aAAK,OAAO;AAAA,MACd;AAAA,MAEA,IAAI,OAAQ;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAM,OAAO,CAACC,QAAO,QAAQA,OAAM,IAAI,SAAS,GAAG,CAAC;AACpD,QAAM,OAAO,CAACA,QAAO,KAAK,QAAQA,OAAM,IAAI,SAAS,GAAG,GAAG,GAAG;AAE9D,QAAM,WAAW,CAAC,KAAK,OAAO;AAC5B,MAAAF,IAAG,KAAK,KAAK,CAAC,IAAI,OAAO;AACvB,YAAI,MAAM,CAAC,GAAG,YAAY,GAAG;AAC3B,eAAK,IAAI,SAAS,KAAK,MAAM,GAAG,QAAQ,SAAS;AAAA,QACnD;AACA,WAAG,EAAE;AAAA,MACP,CAAC;AAAA,IACH;AAEA,WAAO,UAAU,CAAC,KAAK,KAAK,OAAO;AACjC,YAAM,SAAS,GAAG;AAIlB,YAAM,QAAQ,IAAI;AAClB,YAAM,OAAO,IAAI,OAAO;AACxB,YAAM,aAAa,OAAO,WAAW;AAErC,YAAM,MAAM,IAAI;AAChB,YAAM,MAAM,IAAI;AAChB,YAAM,UAAU,OAAO,QAAQ,YAC7B,OAAO,QAAQ,aACd,QAAQ,IAAI,cAAc,QAAQ,IAAI;AAEzC,YAAM,WAAW,IAAI;AACrB,YAAM,SAAS,IAAI;AACnB,YAAME,SAAQ,IAAI;AAClB,YAAM,MAAM,SAAS,IAAI,GAAG;AAE5B,YAAM,OAAO,CAAC,IAAI,YAAY;AAC5B,YAAI,IAAI;AACN,aAAG,EAAE;AAAA,QACP,OAAO;AACL,eAAKA,QAAO,KAAK,IAAI;AACrB,cAAI,WAAW,SAAS;AACtB,mBAAO,SAAS,KAAK,KAAK,CAAAC,QAAM,KAAKA,GAAE,CAAC;AAAA,UAC1C,WAAW,WAAW;AACpB,YAAAH,IAAG,MAAM,KAAK,MAAM,EAAE;AAAA,UACxB,OAAO;AACL,eAAG;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAEA,UAAIE,UAAS,KAAKA,QAAO,GAAG,MAAM,MAAM;AACtC,eAAO,KAAK;AAAA,MACd;AAEA,UAAI,QAAQ,KAAK;AACf,eAAO,SAAS,KAAK,IAAI;AAAA,MAC3B;AAEA,UAAI,UAAU;AACZ,eAAO,OAAO,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,UAAQ,KAAK,MAAM,IAAI,GAAG,IAAI;AAAA,MAClE;AAEA,YAAM,MAAM,SAASD,MAAK,SAAS,KAAK,GAAG,CAAC;AAC5C,YAAM,QAAQ,IAAI,MAAM,GAAG;AAC3B,aAAO,KAAK,OAAO,MAAMC,QAAO,QAAQ,KAAK,MAAM,IAAI;AAAA,IACzD;AAEA,QAAM,SAAS,CAAC,MAAM,OAAO,MAAMA,QAAO,QAAQ,KAAK,SAAS,OAAO;AACrE,UAAI,CAAC,MAAM,QAAQ;AACjB,eAAO,GAAG,MAAM,OAAO;AAAA,MACzB;AACA,YAAM,IAAI,MAAM,MAAM;AACtB,YAAM,OAAO,SAASD,MAAK,QAAQ,OAAO,MAAM,CAAC,CAAC;AAClD,UAAI,KAAKC,QAAO,IAAI,GAAG;AACrB,eAAO,OAAO,MAAM,OAAO,MAAMA,QAAO,QAAQ,KAAK,SAAS,EAAE;AAAA,MAClE;AACA,MAAAF,IAAG,MAAM,MAAM,MAAM,QAAQ,MAAM,OAAO,MAAME,QAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;AAAA,IAClF;AAEA,QAAM,UAAU,CAAC,MAAM,OAAO,MAAMA,QAAO,QAAQ,KAAK,SAAS,OAAO,QAAM;AAC5E,UAAI,IAAI;AACN,QAAAF,IAAG,MAAM,MAAM,CAAC,QAAQ,OAAO;AAC7B,cAAI,QAAQ;AACV,mBAAO,OAAO,OAAO,QAAQ,SAAS,OAAO,IAAI;AACjD,eAAG,MAAM;AAAA,UACX,WAAW,GAAG,YAAY,GAAG;AAC3B,mBAAO,MAAM,OAAO,MAAME,QAAO,QAAQ,KAAK,SAAS,EAAE;AAAA,UAC3D,WAAW,QAAQ;AACjB,YAAAF,IAAG,OAAO,MAAM,CAAAG,QAAM;AACpB,kBAAIA,KAAI;AACN,uBAAO,GAAGA,GAAE;AAAA,cACd;AACA,cAAAH,IAAG,MAAM,MAAM,MAAM,QAAQ,MAAM,OAAO,MAAME,QAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;AAAA,YAClF,CAAC;AAAA,UACH,WAAW,GAAG,eAAe,GAAG;AAC9B,mBAAO,GAAG,IAAI,aAAa,MAAM,OAAO,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,UAChE,OAAO;AACL,eAAG,EAAE;AAAA,UACP;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,kBAAU,WAAW;AACrB,eAAO,MAAM,OAAO,MAAMA,QAAO,QAAQ,KAAK,SAAS,EAAE;AAAA,MAC3D;AAAA,IACF;AAEA,QAAM,eAAe,SAAO;AAC1B,UAAI,KAAK;AACT,UAAI,OAAO;AACX,UAAI;AACF,aAAKF,IAAG,SAAS,GAAG,EAAE,YAAY;AAAA,MACpC,SAAS,IAAI;AACX,eAAO,GAAG;AAAA,MACZ,UAAE;AACA,YAAI,CAAC,IAAI;AACP,gBAAM,IAAI,SAAS,KAAK,IAAI;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAEA,WAAO,QAAQ,OAAO,CAAC,KAAK,QAAQ;AAClC,YAAM,SAAS,GAAG;AAGlB,YAAM,QAAQ,IAAI;AAClB,YAAM,OAAO,IAAI,OAAO;AACxB,YAAM,aAAa,OAAO,WAAW;AAErC,YAAM,MAAM,IAAI;AAChB,YAAM,MAAM,IAAI;AAChB,YAAM,UAAU,OAAO,QAAQ,YAC7B,OAAO,QAAQ,aACd,QAAQ,IAAI,cAAc,QAAQ,IAAI;AAEzC,YAAM,WAAW,IAAI;AACrB,YAAM,SAAS,IAAI;AACnB,YAAME,SAAQ,IAAI;AAClB,YAAM,MAAM,SAAS,IAAI,GAAG;AAE5B,YAAM,OAAO,CAACE,aAAY;AACxB,aAAKF,QAAO,KAAK,IAAI;AACrB,YAAIE,YAAW,SAAS;AACtB,iBAAO,KAAKA,UAAS,KAAK,GAAG;AAAA,QAC/B;AACA,YAAI,WAAW;AACb,UAAAJ,IAAG,UAAU,KAAK,IAAI;AAAA,QACxB;AAAA,MACF;AAEA,UAAIE,UAAS,KAAKA,QAAO,GAAG,MAAM,MAAM;AACtC,eAAO,KAAK;AAAA,MACd;AAEA,UAAI,QAAQ,KAAK;AACf,qBAAa,GAAG;AAChB,eAAO,KAAK;AAAA,MACd;AAEA,UAAI,UAAU;AACZ,eAAO,KAAK,OAAO,KAAK,KAAK,IAAI,CAAC;AAAA,MACpC;AAEA,YAAM,MAAM,SAASD,MAAK,SAAS,KAAK,GAAG,CAAC;AAC5C,YAAM,QAAQ,IAAI,MAAM,GAAG;AAC3B,UAAI,UAAU;AACd,eAAS,IAAI,MAAM,MAAM,GAAG,OAAO,KACjC,MAAM,QAAQ,MAAM,IACpB,IAAI,MAAM,MAAM,GAAG;AACnB,eAAO,SAASA,MAAK,QAAQ,IAAI,CAAC;AAClC,YAAI,KAAKC,QAAO,IAAI,GAAG;AACrB;AAAA,QACF;AAEA,YAAI;AACF,UAAAF,IAAG,UAAU,MAAM,IAAI;AACvB,oBAAU,WAAW;AACrB,eAAKE,QAAO,MAAM,IAAI;AAAA,QACxB,SAAS,IAAI;AACX,gBAAM,KAAKF,IAAG,UAAU,IAAI;AAC5B,cAAI,GAAG,YAAY,GAAG;AACpB,iBAAKE,QAAO,MAAM,IAAI;AACtB;AAAA,UACF,WAAW,QAAQ;AACjB,YAAAF,IAAG,WAAW,IAAI;AAClB,YAAAA,IAAG,UAAU,MAAM,IAAI;AACvB,sBAAU,WAAW;AACrB,iBAAKE,QAAO,MAAM,IAAI;AACtB;AAAA,UACF,WAAW,GAAG,eAAe,GAAG;AAC9B,mBAAO,IAAI,aAAa,MAAM,OAAO,MAAM,MAAM,KAAK,GAAG,CAAC;AAAA,UAC5D;AAAA,QACF;AAAA,MACF;AAEA,aAAO,KAAK,OAAO;AAAA,IACrB;AAAA;AAAA;;;ACpOA;AAAA;AAIA,QAAM,iBAAiB,uBAAO,OAAO,IAAI;AACzC,QAAM,EAAE,eAAe,IAAI,OAAO;AAClC,WAAO,UAAU,OAAK;AACpB,UAAI,CAAC,eAAe,KAAK,gBAAgB,CAAC,GAAG;AAC3C,uBAAe,CAAC,IAAI,EAAE,UAAU,KAAK;AAAA,MACvC;AACA,aAAO,eAAe,CAAC;AAAA,IACzB;AAAA;AAAA;;;ACXA;AAAA;AAQA,QAAM,SAAS,UAAQ,QAAQ;AAC/B,QAAMG,aAAY;AAClB,QAAM,eAAe;AACrB,QAAM,EAAE,KAAK,IAAI,UAAQ,MAAM;AAE/B,QAAM,WAAW,QAAQ,IAAI,6BAA6B,QAAQ;AAClE,QAAM,YAAY,aAAa;AAE/B,WAAO,UAAU,MAAM;AAIrB,YAAM,SAAS,oBAAI,IAAI;AAGvB,YAAM,eAAe,oBAAI,IAAI;AAI7B,YAAM,UAAU,CAAAC,UAAQ;AACtB,cAAM,OAAOA,MAAK,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,CAAC,KAAKA,UAAS;AAC9D,cAAI,IAAI,QAAQ;AACd,YAAAA,QAAO,KAAK,IAAI,IAAI,SAAS,CAAC,GAAGA,KAAI;AAAA,UACvC;AACA,cAAI,KAAKA,SAAQ,GAAG;AACpB,iBAAO;AAAA,QACT,GAAG,CAAC,CAAC;AACL,eAAO;AAAA,MACT;AAGA,YAAM,UAAU,oBAAI,IAAI;AAIxB,YAAM,YAAY,QAAM;AACtB,cAAM,MAAM,aAAa,IAAI,EAAE;AAE/B,YAAI,CAAC,KAAK;AACR,gBAAM,IAAI,MAAM,8CAA8C;AAAA,QAChE;AACA,eAAO;AAAA,UACL,OAAO,IAAI,MAAM,IAAI,CAAAA,UAAQ,OAAO,IAAIA,KAAI,CAAC;AAAA,UAC7C,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,CAAAA,UAAQ,OAAO,IAAIA,KAAI,CAAC;AAAA,QAClD;AAAA,MACF;AAIA,YAAM,QAAQ,QAAM;AAClB,cAAM,EAAE,OAAO,KAAK,IAAI,UAAU,EAAE;AACpC,eAAO,MAAM,MAAM,OAAK,EAAE,CAAC,MAAM,EAAE,KACjC,KAAK,MAAM,OAAK,EAAE,CAAC,aAAa,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAAA,MACvD;AAGA,YAAMC,OAAM,QAAM;AAChB,YAAI,QAAQ,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG;AACjC,iBAAO;AAAA,QACT;AACA,gBAAQ,IAAI,EAAE;AACd,WAAG,MAAM,MAAM,EAAE,CAAC;AAClB,eAAO;AAAA,MACT;AAEA,YAAM,QAAQ,QAAM;AAClB,YAAI,CAAC,QAAQ,IAAI,EAAE,GAAG;AACpB,iBAAO;AAAA,QACT;AAEA,cAAM,EAAE,OAAO,KAAK,IAAI,aAAa,IAAI,EAAE;AAC3C,cAAM,OAAO,oBAAI,IAAI;AAErB,cAAM,QAAQ,CAAAD,UAAQ;AACpB,gBAAM,IAAI,OAAO,IAAIA,KAAI;AACzB,iBAAO,MAAM,EAAE,CAAC,GAAG,EAAE;AACrB,cAAI,EAAE,WAAW,GAAG;AAClB,mBAAO,OAAOA,KAAI;AAAA,UACpB,OAAO;AACL,cAAE,MAAM;AACR,gBAAI,OAAO,EAAE,CAAC,MAAM,YAAY;AAC9B,mBAAK,IAAI,EAAE,CAAC,CAAC;AAAA,YACf,OAAO;AACL,gBAAE,CAAC,EAAE,QAAQ,CAAAE,QAAM,KAAK,IAAIA,GAAE,CAAC;AAAA,YACjC;AAAA,UACF;AAAA,QACF,CAAC;AAED,aAAK,QAAQ,SAAO;AAClB,gBAAM,IAAI,OAAO,IAAI,GAAG;AACxB,iBAAO,EAAE,CAAC,aAAa,GAAG;AAC1B,cAAI,EAAE,CAAC,EAAE,SAAS,KAAK,EAAE,WAAW,GAAG;AACrC,mBAAO,OAAO,GAAG;AAAA,UACnB,WAAW,EAAE,CAAC,EAAE,SAAS,GAAG;AAC1B,cAAE,MAAM;AAGR,iBAAK,IAAI,EAAE,CAAC,CAAC;AAAA,UACf,OAAO;AACL,cAAE,CAAC,EAAE,OAAO,EAAE;AAAA,UAChB;AAAA,QACF,CAAC;AACD,gBAAQ,OAAO,EAAE;AAEjB,aAAK,QAAQ,CAAAA,QAAMD,KAAIC,GAAE,CAAC;AAC1B,eAAO;AAAA,MACT;AAEA,YAAM,UAAU,CAAC,OAAO,OAAO;AAO7B,gBAAQ,YAAY,CAAC,gCAAgC,IAAI,MAAM,IAAI,OAAK;AAEtE,iBAAO,aAAa,KAAKH,WAAU,CAAC,CAAC,CAAC,EAAE,YAAY;AAAA,QACtD,CAAC;AAED,cAAM,OAAO,IAAI;AAAA,UACf,MAAM,IAAI,CAAAC,UAAQ,QAAQA,KAAI,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;AAAA,QAC/D;AACA,qBAAa,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AACpC,cAAM,QAAQ,CAAAA,UAAQ;AACpB,gBAAM,IAAI,OAAO,IAAIA,KAAI;AACzB,cAAI,CAAC,GAAG;AACN,mBAAO,IAAIA,OAAM,CAAC,EAAE,CAAC;AAAA,UACvB,OAAO;AACL,cAAE,KAAK,EAAE;AAAA,UACX;AAAA,QACF,CAAC;AACD,aAAK,QAAQ,SAAO;AAClB,gBAAM,IAAI,OAAO,IAAI,GAAG;AACxB,cAAI,CAAC,GAAG;AACN,mBAAO,IAAI,KAAK,CAAC,oBAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAAA,UACjC,WAAW,EAAE,EAAE,SAAS,CAAC,aAAa,KAAK;AACzC,cAAE,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE;AAAA,UACxB,OAAO;AACL,cAAE,KAAK,oBAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AAAA,UACtB;AAAA,QACF,CAAC;AAED,eAAOC,KAAI,EAAE;AAAA,MACf;AAEA,aAAO,EAAE,OAAO,QAAQ;AAAA,IAC1B;AAAA;AAAA;;;AC3JA;AAAA;AAQA,QAAM,WAAW,QAAQ,IAAI,qBAAqB,QAAQ;AAC1D,QAAM,YAAY,aAAa;AAC/B,QAAME,MAAK,OAAO,uBAAuB,UAAQ,IAAI;AAGrD,QAAM,EAAE,SAAS,SAAS,UAAU,kBAAkB,EAAE,IAAIA,IAAG;AAE/D,QAAM,cAAc,aAAa,CAAC,CAAC;AACnC,QAAM,YAAY,MAAM;AACxB,QAAM,WAAW,kBAAkB,UAAU,UAAU;AACvD,WAAO,UAAU,CAAC,cAAc,MAAM,MAClC,UAAQ,OAAO,YAAY,WAAW;AAAA;AAAA;;;ACnB1C;AAAA;AAAA;AAQA,QAAM,SAAS,UAAQ,QAAQ;AAC/B,QAAM,SAAS;AACf,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAM,MAAM;AACZ,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,QAAQ;AACd,QAAM,KAAK;AACX,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,WAAW;AACjB,QAAM,aAAa;AACnB,QAAMC,aAAY;AAElB,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,cAAc,OAAO,YAAY;AACvC,QAAMC,UAAS,UAAQ,QAAQ;AAC/B,QAAM,UAAU;AAChB,QAAM,WAAW,QAAQ,IAAI,6BAA6B,QAAQ;AAClE,QAAM,YAAY,aAAa;AAkB/B,QAAM,aAAa,CAACF,OAAM,OAAO;AAC/B,UAAI,CAAC,WAAW;AACd,eAAOD,IAAG,OAAOC,OAAM,EAAE;AAAA,MAC3B;AAEA,YAAM,OAAOA,QAAO,aAAaE,QAAO,YAAY,EAAE,EAAE,SAAS,KAAK;AACtE,MAAAH,IAAG,OAAOC,OAAM,MAAM,QAAM;AAC1B,YAAI,IAAI;AACN,iBAAO,GAAG,EAAE;AAAA,QACd;AACA,QAAAD,IAAG,OAAO,MAAM,EAAE;AAAA,MACpB,CAAC;AAAA,IACH;AAGA,QAAM,iBAAiB,CAAAC,UAAQ;AAC7B,UAAI,CAAC,WAAW;AACd,eAAOD,IAAG,WAAWC,KAAI;AAAA,MAC3B;AAEA,YAAM,OAAOA,QAAO,aAAaE,QAAO,YAAY,EAAE,EAAE,SAAS,KAAK;AACtE,MAAAH,IAAG,WAAWC,OAAM,IAAI;AACxB,MAAAD,IAAG,WAAW,IAAI;AAAA,IACpB;AAGA,QAAM,SAAS,CAAC,GAAG,GAAG,MACpB,MAAM,MAAM,IAAI,IACd,MAAM,MAAM,IAAI,IAChB;AAWJ,QAAM,oBAAoB,CAAAC,UAAQ,WAAW,SAASC,WAAUD,KAAI,CAAC,CAAC,EACnE,YAAY;AAEf,QAAM,aAAa,CAACG,QAAO,QAAQ;AACjC,YAAM,kBAAkB,GAAG;AAC3B,iBAAWH,SAAQG,OAAM,KAAK,GAAG;AAC/B,cAAM,QAAQ,kBAAkBH,KAAI;AACpC,YAAI,UAAU,OAAO,MAAM,QAAQ,MAAM,GAAG,MAAM,GAAG;AACnD,UAAAG,OAAM,OAAOH,KAAI;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAEA,QAAM,YAAY,CAAAG,WAAS;AACzB,iBAAW,OAAOA,OAAM,KAAK,GAAG;AAC9B,QAAAA,OAAM,OAAO,GAAG;AAAA,MAClB;AAAA,IACF;AAEA,QAAM,SAAN,cAAqB,OAAO;AAAA,MAC1B,YAAa,KAAK;AAChB,YAAI,CAAC,KAAK;AACR,gBAAM,CAAC;AAAA,QACT;AAEA,YAAI,SAAS,OAAK;AAChB,eAAK,KAAK,IAAI;AACd,eAAK,UAAU,EAAE;AAAA,QACnB;AAEA,cAAM,GAAG;AAET,aAAK,WAAW,IAAI;AAEpB,aAAK,eAAe,iBAAiB;AAErC,aAAK,YAAY,OAAO,IAAI,cAAc,aAAa,IAAI,YAAY;AAEvE,aAAK,WAAW;AAChB,aAAK,WAAW;AAEhB,aAAK,OAAO,IAAI;AAChB,aAAK,KAAK,IAAI;AAEd,aAAK,WAAW,IAAI,YAAY,oBAAI,IAAI;AAExC,YAAI,OAAO,IAAI,QAAQ,YAAY,OAAO,IAAI,QAAQ,UAAU;AAE9D,cAAI,OAAO,IAAI,QAAQ,YAAY,OAAO,IAAI,QAAQ,UAAU;AAC9D,kBAAM,IAAI,UAAU,6CAA6C;AAAA,UACnE;AACA,cAAI,IAAI,eAAe;AACrB,kBAAM,IAAI;AAAA,cACR;AAAA,YAAgE;AAAA,UACpE;AACA,eAAK,MAAM,IAAI;AACf,eAAK,MAAM,IAAI;AACf,eAAK,WAAW;AAAA,QAClB,OAAO;AACL,eAAK,MAAM;AACX,eAAK,MAAM;AACX,eAAK,WAAW;AAAA,QAClB;AAGA,YAAI,IAAI,kBAAkB,UAAa,OAAO,IAAI,QAAQ,UAAU;AAClE,eAAK,gBAAgB,QAAQ,UAAU,QAAQ,OAAO,MAAM;AAAA,QAC9D,OAAO;AACL,eAAK,gBAAgB,CAAC,CAAC,IAAI;AAAA,QAC7B;AAEA,aAAK,cAAc,KAAK,iBAAiB,KAAK,aAAa,QAAQ,SACjE,QAAQ,OAAO,IAAI;AACrB,aAAK,cAAc,KAAK,iBAAiB,KAAK,aAAa,QAAQ,SACjE,QAAQ,OAAO,IAAI;AAIrB,aAAK,aAAa,IAAI,eAAe;AAGrC,aAAK,QAAQ,CAAC,CAAC,IAAI,SAAS;AAG5B,aAAK,QAAQ,CAAC,CAAC,IAAI;AAGnB,aAAK,OAAO,CAAC,CAAC,IAAI;AAGlB,aAAK,UAAU,CAAC,CAAC,IAAI;AAKrB,aAAK,gBAAgB,CAAC,CAAC,IAAI;AAI3B,aAAK,SAAS,CAAC,CAAC,IAAI;AAEpB,aAAK,MAAM,SAASH,MAAK,QAAQ,IAAI,OAAO,QAAQ,IAAI,CAAC,CAAC;AAC1D,aAAK,QAAQ,CAAC,IAAI,SAAS;AAE3B,aAAK,eAAe,IAAI,UAAU,IAAI,QAAQ,MAAM;AACpD,aAAK,QAAQ,OAAO,IAAI,UAAU,WAAW,IAAI,QAAQ,KAAK;AAG9D,aAAK,QAAQ,IAAI,SAAU,MAAU,CAAC,KAAK;AAC3C,aAAK,QAAQ,IAAI,SAAU,MAAU,CAAC,KAAK;AAE3C,aAAK,GAAG,SAAS,WAAS,KAAK,OAAO,EAAE,KAAK,CAAC;AAAA,MAChD;AAAA;AAAA;AAAA;AAAA,MAKA,KAAM,MAAM,KAAK,OAAO,CAAC,GAAG;AAC1B,YAAI,SAAS,qBAAqB,SAAS,aAAa;AACtD,eAAK,cAAc;AAAA,QACrB;AACA,eAAO,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,MACnC;AAAA,MAEA,CAAC,UAAU,IAAK;AACd,YAAI,KAAK,KAAK,KAAK,KAAK,OAAO,MAAM,GAAG;AACtC,eAAK,KAAK,WAAW;AACrB,eAAK,KAAK,QAAQ;AAClB,eAAK,KAAK,KAAK;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,CAAC,SAAS,EAAG,OAAO;AAClB,YAAI,KAAK,OAAO;AACd,gBAAM,QAAQ,SAAS,MAAM,IAAI,EAAE,MAAM,GAAG;AAC5C,cAAI,MAAM,SAAS,KAAK,OAAO;AAC7B,mBAAO;AAAA,UACT;AACA,gBAAM,OAAO,MAAM,MAAM,KAAK,KAAK,EAAE,KAAK,GAAG;AAE7C,cAAI,MAAM,SAAS,QAAQ;AACzB,kBAAM,YAAY,SAAS,MAAM,QAAQ,EAAE,MAAM,GAAG;AACpD,gBAAI,UAAU,UAAU,KAAK,OAAO;AAClC,oBAAM,WAAW,UAAU,MAAM,KAAK,KAAK,EAAE,KAAK,GAAG;AAAA,YACvD,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,YAAI,CAAC,KAAK,eAAe;AACvB,gBAAM,IAAI,SAAS,MAAM,IAAI;AAC7B,gBAAM,QAAQ,EAAE,MAAM,GAAG;AACzB,cAAI,MAAM,SAAS,IAAI,KAAK,aAAa,gBAAgB,KAAK,MAAM,CAAC,CAAC,GAAG;AACvE,iBAAK,KAAK,mBAAmB,sBAAsB;AAAA,cACjD;AAAA,cACA,MAAM;AAAA,YACR,CAAC;AACD,mBAAO;AAAA,UACT;AAGA,gBAAM,CAAC,MAAM,QAAQ,IAAI,kBAAkB,CAAC;AAC5C,cAAI,MAAM;AACR,kBAAM,OAAO;AACb,iBAAK,KAAK,kBAAkB,aAAa,IAAI,uBAAuB;AAAA,cAClE;AAAA,cACA,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AAAA,QACF;AAEA,YAAIA,MAAK,WAAW,MAAM,IAAI,GAAG;AAC/B,gBAAM,WAAW,SAASA,MAAK,QAAQ,MAAM,IAAI,CAAC;AAAA,QACpD,OAAO;AACL,gBAAM,WAAW,SAASA,MAAK,QAAQ,KAAK,KAAK,MAAM,IAAI,CAAC;AAAA,QAC9D;AAMA,YAAI,CAAC,KAAK,iBACN,MAAM,SAAS,QAAQ,KAAK,MAAM,GAAG,MAAM,KAC3C,MAAM,aAAa,KAAK,KAAK;AAC/B,eAAK,KAAK,mBAAmB,kCAAkC;AAAA,YAC7D;AAAA,YACA,MAAM,SAAS,MAAM,IAAI;AAAA,YACzB,cAAc,MAAM;AAAA,YACpB,KAAK,KAAK;AAAA,UACZ,CAAC;AACD,iBAAO;AAAA,QACT;AAIA,YAAI,MAAM,aAAa,KAAK,OACxB,MAAM,SAAS,eACf,MAAM,SAAS,cAAc;AAC/B,iBAAO;AAAA,QACT;AAGA,YAAI,KAAK,OAAO;AACd,gBAAM,EAAE,MAAM,MAAM,IAAIA,MAAK,MAAM,MAAM,MAAM,QAAQ;AACvD,gBAAM,WAAW,QAAQ,GAAG,OAAO,MAAM,SAAS,MAAM,MAAM,MAAM,CAAC;AACrE,gBAAM,EAAE,MAAM,MAAM,IAAIA,MAAK,MAAM,MAAM,MAAM,IAAI;AACnD,gBAAM,OAAO,QAAQ,GAAG,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,CAAC;AAAA,QAC/D;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,OAAO,EAAG,OAAO;AAChB,YAAI,CAAC,KAAK,SAAS,EAAE,KAAK,GAAG;AAC3B,iBAAO,MAAM,OAAO;AAAA,QACtB;AAEA,eAAO,MAAM,OAAO,MAAM,UAAU,QAAQ;AAE5C,gBAAQ,MAAM,MAAM;AAAA,UAClB,KAAK;AAAA,UACL,KAAK;AACH,gBAAI,MAAM,MAAM;AACd,oBAAM,OAAO,MAAM,OAAO;AAAA,YAC5B;AAAA,UAGF,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,KAAK,OAAO,EAAE,KAAK;AAAA,UAE5B,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL;AACE,mBAAO,KAAK,WAAW,EAAE,KAAK;AAAA,QAClC;AAAA,MACF;AAAA,MAEA,CAAC,OAAO,EAAG,IAAI,OAAO;AAIpB,YAAI,GAAG,SAAS,YAAY;AAC1B,eAAK,KAAK,SAAS,EAAE;AAAA,QACvB,OAAO;AACL,eAAK,KAAK,mBAAmB,IAAI,EAAE,MAAM,CAAC;AAC1C,eAAK,MAAM,EAAE;AACb,gBAAM,OAAO;AAAA,QACf;AAAA,MACF;AAAA,MAEA,CAAC,KAAK,EAAG,KAAK,MAAM,IAAI;AACtB,cAAM,SAAS,GAAG,GAAG;AAAA,UACnB,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA,UACV,YAAY,KAAK;AAAA,UACjB,YAAY,KAAK;AAAA,UACjB,OAAO,KAAK;AAAA,UACZ,UAAU,KAAK;AAAA,UACf,QAAQ,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,UACZ,KAAK,KAAK;AAAA,UACV;AAAA,UACA,SAAS,KAAK;AAAA,QAChB,GAAG,EAAE;AAAA,MACP;AAAA,MAEA,CAAC,OAAO,EAAG,OAAO;AAGhB,eAAO,KAAK,cACV,KAAK,kBACJ,OAAO,MAAM,QAAQ,YAAY,MAAM,QAAQ,KAAK,cACnD,OAAO,MAAM,QAAQ,YAAY,MAAM,QAAQ,KAAK,gBAErD,OAAO,KAAK,QAAQ,YAAY,KAAK,QAAQ,KAAK,cACjD,OAAO,KAAK,QAAQ,YAAY,KAAK,QAAQ,KAAK;AAAA,MACxD;AAAA,MAEA,CAAC,GAAG,EAAG,OAAO;AACZ,eAAO,OAAO,KAAK,KAAK,MAAM,KAAK,KAAK,UAAU;AAAA,MACpD;AAAA,MAEA,CAAC,GAAG,EAAG,OAAO;AACZ,eAAO,OAAO,KAAK,KAAK,MAAM,KAAK,KAAK,UAAU;AAAA,MACpD;AAAA,MAEA,CAAC,IAAI,EAAG,OAAO,WAAW;AACxB,cAAM,OAAO,MAAM,OAAO,QAAU,KAAK;AACzC,cAAM,SAAS,IAAI,IAAI,YAAY,MAAM,UAAU;AAAA,UACjD,OAAO,QAAQ,MAAM,IAAI;AAAA,UACzB;AAAA,UACA,WAAW;AAAA,QACb,CAAC;AACD,eAAO,GAAG,SAAS,QAAM;AACvB,cAAI,OAAO,IAAI;AACb,YAAAD,IAAG,MAAM,OAAO,IAAI,MAAM;AAAA,YAAC,CAAC;AAAA,UAC9B;AAKA,iBAAO,QAAQ,MAAM;AACrB,eAAK,OAAO,EAAE,IAAI,KAAK;AACvB,oBAAU;AAAA,QACZ,CAAC;AAED,YAAI,UAAU;AACd,cAAM,OAAO,QAAM;AACjB,cAAI,IAAI;AAEN,gBAAI,OAAO,IAAI;AACb,cAAAA,IAAG,MAAM,OAAO,IAAI,MAAM;AAAA,cAAC,CAAC;AAAA,YAC9B;AAEA,iBAAK,OAAO,EAAE,IAAI,KAAK;AACvB,sBAAU;AACV;AAAA,UACF;AAEA,cAAI,EAAE,YAAY,GAAG;AACnB,YAAAA,IAAG,MAAM,OAAO,IAAI,CAAAK,QAAM;AACxB,kBAAIA,KAAI;AACN,qBAAK,OAAO,EAAEA,KAAI,KAAK;AAAA,cACzB,OAAO;AACL,qBAAK,MAAM,EAAE;AAAA,cACf;AACA,wBAAU;AAAA,YACZ,CAAC;AAAA,UACH;AAAA,QACF;AAEA,eAAO,GAAG,UAAU,OAAK;AAIvB,gBAAM,MAAM,MAAM;AAClB,gBAAM,KAAK,OAAO;AAElB,cAAI,MAAM,SAAS,CAAC,KAAK,SAAS;AAChC;AACA,kBAAM,QAAQ,MAAM,SAAS,oBAAI,KAAK;AACtC,kBAAM,QAAQ,MAAM;AACpB,YAAAL,IAAG,QAAQ,IAAI,OAAO,OAAO,QAC3B,KAAKA,IAAG,OAAO,KAAK,OAAO,OAAO,SAAO,KAAK,OAAO,EAAE,CAAC,IACtD,KAAK,CAAC;AAAA,UACZ;AAEA,cAAI,KAAK,OAAO,EAAE,KAAK,GAAG;AACxB;AACA,kBAAM,MAAM,KAAK,GAAG,EAAE,KAAK;AAC3B,kBAAM,MAAM,KAAK,GAAG,EAAE,KAAK;AAC3B,YAAAA,IAAG,OAAO,IAAI,KAAK,KAAK,QACtB,KAAKA,IAAG,MAAM,KAAK,KAAK,KAAK,SAAO,KAAK,OAAO,EAAE,CAAC,IACjD,KAAK,CAAC;AAAA,UACZ;AAEA,eAAK;AAAA,QACP,CAAC;AAED,cAAM,KAAK,KAAK,YAAY,KAAK,UAAU,KAAK,KAAK,QAAQ;AAC7D,YAAI,OAAO,OAAO;AAChB,aAAG,GAAG,SAAS,QAAM;AACnB,iBAAK,OAAO,EAAE,IAAI,KAAK;AACvB,sBAAU;AAAA,UACZ,CAAC;AACD,gBAAM,KAAK,EAAE;AAAA,QACf;AACA,WAAG,KAAK,MAAM;AAAA,MAChB;AAAA,MAEA,CAAC,SAAS,EAAG,OAAO,WAAW;AAC7B,cAAM,OAAO,MAAM,OAAO,QAAU,KAAK;AACzC,aAAK,KAAK,EAAE,MAAM,UAAU,MAAM,QAAM;AACtC,cAAI,IAAI;AACN,iBAAK,OAAO,EAAE,IAAI,KAAK;AACvB,sBAAU;AACV;AAAA,UACF;AAEA,cAAI,UAAU;AACd,gBAAM,OAAO,OAAK;AAChB,gBAAI,EAAE,YAAY,GAAG;AACnB,wBAAU;AACV,mBAAK,MAAM,EAAE;AACb,oBAAM,OAAO;AAAA,YACf;AAAA,UACF;AAEA,cAAI,MAAM,SAAS,CAAC,KAAK,SAAS;AAChC;AACA,YAAAA,IAAG,OAAO,MAAM,UAAU,MAAM,SAAS,oBAAI,KAAK,GAAG,MAAM,OAAO,IAAI;AAAA,UACxE;AAEA,cAAI,KAAK,OAAO,EAAE,KAAK,GAAG;AACxB;AACA,YAAAA,IAAG,MAAM,MAAM,UAAU,KAAK,GAAG,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI;AAAA,UACnE;AAEA,eAAK;AAAA,QACP,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,WAAW,EAAG,OAAO;AACpB,cAAM,cAAc;AACpB,aAAK;AAAA,UAAK;AAAA,UACR,2BAA2B,MAAM,IAAI;AAAA,UAAI,EAAE,MAAM;AAAA,QAAC;AACpD,cAAM,OAAO;AAAA,MACf;AAAA,MAEA,CAAC,OAAO,EAAG,OAAO,MAAM;AACtB,aAAK,IAAI,EAAE,OAAO,MAAM,UAAU,WAAW,IAAI;AAAA,MACnD;AAAA,MAEA,CAAC,QAAQ,EAAG,OAAO,MAAM;AACvB,cAAM,WAAW,SAASC,MAAK,QAAQ,KAAK,KAAK,MAAM,QAAQ,CAAC;AAChE,aAAK,IAAI,EAAE,OAAO,UAAU,QAAQ,IAAI;AAAA,MAC1C;AAAA,MAEA,CAAC,IAAI,IAAK;AACR,aAAK,OAAO;AAAA,MACd;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,aAAK,OAAO;AACZ,aAAK,UAAU,EAAE;AAAA,MACnB;AAAA,MAEA,CAAC,IAAI,EAAG,OAAO;AACb,aAAK,MAAM,EAAE;AACb,cAAM,OAAO;AAAA,MACf;AAAA;AAAA;AAAA;AAAA,MAKA,CAAC,UAAU,EAAG,OAAO,IAAI;AACvB,eAAO,MAAM,SAAS,UACpB,CAAC,KAAK,UACN,GAAG,OAAO,KACV,GAAG,SAAS,KACZ,CAAC;AAAA,MACL;AAAA;AAAA,MAGA,CAAC,OAAO,EAAG,OAAO;AAChB,aAAK,IAAI,EAAE;AACX,cAAM,QAAQ,CAAC,MAAM,IAAI;AACzB,YAAI,MAAM,UAAU;AAClB,gBAAM,KAAK,MAAM,QAAQ;AAAA,QAC3B;AACA,aAAK,aAAa,QAAQ,OAAO,UAAQ,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC;AAAA,MACtE;AAAA,MAEA,CAAC,UAAU,EAAG,OAAO;AAWnB,YAAI,MAAM,SAAS,gBAAgB;AACjC,oBAAU,KAAK,QAAQ;AAAA,QACzB,WAAW,MAAM,SAAS,aAAa;AACrC,qBAAW,KAAK,UAAU,MAAM,QAAQ;AAAA,QAC1C;AAAA,MACF;AAAA,MAEA,CAAC,QAAQ,EAAG,OAAO,WAAW;AAC5B,aAAK,UAAU,EAAE,KAAK;AAEtB,cAAM,OAAO,QAAM;AACjB,eAAK,UAAU,EAAE,KAAK;AACtB,oBAAU,EAAE;AAAA,QACd;AAEA,cAAM,WAAW,MAAM;AACrB,eAAK,KAAK,EAAE,KAAK,KAAK,KAAK,OAAO,QAAM;AACtC,gBAAI,IAAI;AACN,mBAAK,OAAO,EAAE,IAAI,KAAK;AACvB,mBAAK;AACL;AAAA,YACF;AACA,iBAAK,WAAW,IAAI;AACpB,kBAAM;AAAA,UACR,CAAC;AAAA,QACH;AAEA,cAAM,QAAQ,MAAM;AAClB,cAAI,MAAM,aAAa,KAAK,KAAK;AAC/B,kBAAM,SAAS,SAASA,MAAK,QAAQ,MAAM,QAAQ,CAAC;AACpD,gBAAI,WAAW,KAAK,KAAK;AACvB,qBAAO,KAAK,KAAK,EAAE,QAAQ,KAAK,OAAO,QAAM;AAC3C,oBAAI,IAAI;AACN,uBAAK,OAAO,EAAE,IAAI,KAAK;AACvB,uBAAK;AACL;AAAA,gBACF;AACA,gCAAgB;AAAA,cAClB,CAAC;AAAA,YACH;AAAA,UACF;AACA,0BAAgB;AAAA,QAClB;AAEA,cAAM,kBAAkB,MAAM;AAC5B,UAAAD,IAAG,MAAM,MAAM,UAAU,CAAC,SAAS,OAAO;AACxC,gBAAI,OAAO,KAAK,QAAQ,KAAK,SAAS,GAAG,QAAQ,MAAM,QAAQ;AAC7D,mBAAK,IAAI,EAAE,KAAK;AAChB,mBAAK;AACL;AAAA,YACF;AACA,gBAAI,WAAW,KAAK,UAAU,EAAE,OAAO,EAAE,GAAG;AAC1C,qBAAO,KAAK,MAAM,EAAE,MAAM,OAAO,IAAI;AAAA,YACvC;AAEA,gBAAI,GAAG,YAAY,GAAG;AACpB,kBAAI,MAAM,SAAS,aAAa;AAC9B,sBAAM,YAAY,CAAC,KAAK,WACtB,MAAM,SACL,GAAG,OAAO,UAAY,MAAM;AAC/B,sBAAM,aAAa,QAAM,KAAK,MAAM,EAAE,IAAI,OAAO,IAAI;AACrD,oBAAI,CAAC,WAAW;AACd,yBAAO,WAAW;AAAA,gBACpB;AACA,uBAAOA,IAAG,MAAM,MAAM,UAAU,MAAM,MAAM,UAAU;AAAA,cACxD;AAQA,kBAAI,MAAM,aAAa,KAAK,KAAK;AAC/B,uBAAOA,IAAG,MAAM,MAAM,UAAU,QAC9B,KAAK,MAAM,EAAE,IAAI,OAAO,IAAI,CAAC;AAAA,cACjC;AAAA,YACF;AAIA,gBAAI,MAAM,aAAa,KAAK,KAAK;AAC/B,qBAAO,KAAK,MAAM,EAAE,MAAM,OAAO,IAAI;AAAA,YACvC;AAEA,uBAAW,MAAM,UAAU,QACzB,KAAK,MAAM,EAAE,IAAI,OAAO,IAAI,CAAC;AAAA,UACjC,CAAC;AAAA,QACH;AAEA,YAAI,KAAK,WAAW,GAAG;AACrB,gBAAM;AAAA,QACR,OAAO;AACL,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MAEA,CAAC,MAAM,EAAG,IAAI,OAAO,MAAM;AACzB,YAAI,IAAI;AACN,eAAK,OAAO,EAAE,IAAI,KAAK;AACvB,eAAK;AACL;AAAA,QACF;AAEA,gBAAQ,MAAM,MAAM;AAAA,UAClB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,KAAK,IAAI,EAAE,OAAO,IAAI;AAAA,UAE/B,KAAK;AACH,mBAAO,KAAK,QAAQ,EAAE,OAAO,IAAI;AAAA,UAEnC,KAAK;AACH,mBAAO,KAAK,OAAO,EAAE,OAAO,IAAI;AAAA,UAElC,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,KAAK,SAAS,EAAE,OAAO,IAAI;AAAA,QACtC;AAAA,MACF;AAAA,MAEA,CAAC,IAAI,EAAG,OAAO,UAAU,MAAM,MAAM;AAEnC,QAAAA,IAAG,IAAI,EAAE,UAAU,MAAM,UAAU,QAAM;AACvC,cAAI,IAAI;AACN,iBAAK,OAAO,EAAE,IAAI,KAAK;AAAA,UACzB,OAAO;AACL,iBAAK,MAAM,EAAE;AACb,kBAAM,OAAO;AAAA,UACf;AACA,eAAK;AAAA,QACP,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAM,WAAW,QAAM;AACrB,UAAI;AACF,eAAO,CAAC,MAAM,GAAG,CAAC;AAAA,MACpB,SAAS,IAAI;AACX,eAAO,CAAC,IAAI,IAAI;AAAA,MAClB;AAAA,IACF;AACA,QAAM,aAAN,cAAyB,OAAO;AAAA,MAC9B,CAAC,MAAM,EAAG,IAAI,OAAO;AACnB,eAAO,MAAM,MAAM,EAAE,IAAI,OAAO,MAAM;AAAA,QAAC,CAAC;AAAA,MAC1C;AAAA,MAEA,CAAC,OAAO,EAAG,OAAO;AAChB,aAAK,UAAU,EAAE,KAAK;AAEtB,YAAI,CAAC,KAAK,WAAW,GAAG;AACtB,gBAAMK,MAAK,KAAK,KAAK,EAAE,KAAK,KAAK,KAAK,KAAK;AAC3C,cAAIA,KAAI;AACN,mBAAO,KAAK,OAAO,EAAEA,KAAI,KAAK;AAAA,UAChC;AACA,eAAK,WAAW,IAAI;AAAA,QACtB;AAIA,YAAI,MAAM,aAAa,KAAK,KAAK;AAC/B,gBAAM,SAAS,SAASJ,MAAK,QAAQ,MAAM,QAAQ,CAAC;AACpD,cAAI,WAAW,KAAK,KAAK;AACvB,kBAAM,WAAW,KAAK,KAAK,EAAE,QAAQ,KAAK,KAAK;AAC/C,gBAAI,UAAU;AACZ,qBAAO,KAAK,OAAO,EAAE,UAAU,KAAK;AAAA,YACtC;AAAA,UACF;AAAA,QACF;AAEA,cAAM,CAAC,SAAS,EAAE,IAAI,SAAS,MAAMD,IAAG,UAAU,MAAM,QAAQ,CAAC;AACjE,YAAI,OAAO,KAAK,QAAQ,KAAK,SAAS,GAAG,QAAQ,MAAM,QAAQ;AAC7D,iBAAO,KAAK,IAAI,EAAE,KAAK;AAAA,QACzB;AAEA,YAAI,WAAW,KAAK,UAAU,EAAE,OAAO,EAAE,GAAG;AAC1C,iBAAO,KAAK,MAAM,EAAE,MAAM,KAAK;AAAA,QACjC;AAEA,YAAI,GAAG,YAAY,GAAG;AACpB,cAAI,MAAM,SAAS,aAAa;AAC9B,kBAAM,YAAY,CAAC,KAAK,WACtB,MAAM,SACL,GAAG,OAAO,UAAY,MAAM;AAC/B,kBAAM,CAACK,GAAE,IAAI,YAAY,SAAS,MAAM;AACtC,cAAAL,IAAG,UAAU,MAAM,UAAU,MAAM,IAAI;AAAA,YACzC,CAAC,IAAI,CAAC;AACN,mBAAO,KAAK,MAAM,EAAEK,KAAI,KAAK;AAAA,UAC/B;AAEA,gBAAM,CAACA,GAAE,IAAI,SAAS,MAAML,IAAG,UAAU,MAAM,QAAQ,CAAC;AACxD,eAAK,MAAM,EAAEK,KAAI,KAAK;AAAA,QACxB;AAIA,cAAM,CAAC,EAAE,IAAI,MAAM,aAAa,KAAK,MAAM,CAAC,IACxC,SAAS,MAAM,eAAe,MAAM,QAAQ,CAAC;AACjD,aAAK,MAAM,EAAE,IAAI,KAAK;AAAA,MACxB;AAAA,MAEA,CAAC,IAAI,EAAG,OAAO,MAAM;AACnB,cAAM,OAAO,MAAM,OAAO,QAAU,KAAK;AAEzC,cAAM,OAAO,QAAM;AACjB,cAAI;AACJ,cAAI;AACF,YAAAL,IAAG,UAAU,EAAE;AAAA,UACjB,SAAS,GAAG;AACV,yBAAa;AAAA,UACf;AACA,cAAI,MAAM,YAAY;AACpB,iBAAK,OAAO,EAAE,MAAM,YAAY,KAAK;AAAA,UACvC;AACA,eAAK;AAAA,QACP;AAEA,YAAI;AACJ,YAAI;AACF,eAAKA,IAAG,SAAS,MAAM,UAAU,QAAQ,MAAM,IAAI,GAAG,IAAI;AAAA,QAC5D,SAAS,IAAI;AACX,iBAAO,KAAK,EAAE;AAAA,QAChB;AACA,cAAM,KAAK,KAAK,YAAY,KAAK,UAAU,KAAK,KAAK,QAAQ;AAC7D,YAAI,OAAO,OAAO;AAChB,aAAG,GAAG,SAAS,QAAM,KAAK,OAAO,EAAE,IAAI,KAAK,CAAC;AAC7C,gBAAM,KAAK,EAAE;AAAA,QACf;AAEA,WAAG,GAAG,QAAQ,WAAS;AACrB,cAAI;AACF,YAAAA,IAAG,UAAU,IAAI,OAAO,GAAG,MAAM,MAAM;AAAA,UACzC,SAAS,IAAI;AACX,iBAAK,EAAE;AAAA,UACT;AAAA,QACF,CAAC;AAED,WAAG,GAAG,OAAO,OAAK;AAChB,cAAI,KAAK;AAGT,cAAI,MAAM,SAAS,CAAC,KAAK,SAAS;AAChC,kBAAM,QAAQ,MAAM,SAAS,oBAAI,KAAK;AACtC,kBAAM,QAAQ,MAAM;AACpB,gBAAI;AACF,cAAAA,IAAG,YAAY,IAAI,OAAO,KAAK;AAAA,YACjC,SAAS,WAAW;AAClB,kBAAI;AACF,gBAAAA,IAAG,WAAW,MAAM,UAAU,OAAO,KAAK;AAAA,cAC5C,SAAS,UAAU;AACjB,qBAAK;AAAA,cACP;AAAA,YACF;AAAA,UACF;AAEA,cAAI,KAAK,OAAO,EAAE,KAAK,GAAG;AACxB,kBAAM,MAAM,KAAK,GAAG,EAAE,KAAK;AAC3B,kBAAM,MAAM,KAAK,GAAG,EAAE,KAAK;AAE3B,gBAAI;AACF,cAAAA,IAAG,WAAW,IAAI,KAAK,GAAG;AAAA,YAC5B,SAAS,UAAU;AACjB,kBAAI;AACF,gBAAAA,IAAG,UAAU,MAAM,UAAU,KAAK,GAAG;AAAA,cACvC,SAAS,SAAS;AAChB,qBAAK,MAAM;AAAA,cACb;AAAA,YACF;AAAA,UACF;AAEA,eAAK,EAAE;AAAA,QACT,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,SAAS,EAAG,OAAO,MAAM;AACxB,cAAM,OAAO,MAAM,OAAO,QAAU,KAAK;AACzC,cAAM,KAAK,KAAK,KAAK,EAAE,MAAM,UAAU,IAAI;AAC3C,YAAI,IAAI;AACN,eAAK,OAAO,EAAE,IAAI,KAAK;AACvB,eAAK;AACL;AAAA,QACF;AACA,YAAI,MAAM,SAAS,CAAC,KAAK,SAAS;AAChC,cAAI;AACF,YAAAA,IAAG,WAAW,MAAM,UAAU,MAAM,SAAS,oBAAI,KAAK,GAAG,MAAM,KAAK;AAAA,UACtE,SAASK,KAAI;AAAA,UAAC;AAAA,QAChB;AACA,YAAI,KAAK,OAAO,EAAE,KAAK,GAAG;AACxB,cAAI;AACF,YAAAL,IAAG,UAAU,MAAM,UAAU,KAAK,GAAG,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE,KAAK,CAAC;AAAA,UACjE,SAASK,KAAI;AAAA,UAAC;AAAA,QAChB;AACA,aAAK;AACL,cAAM,OAAO;AAAA,MACf;AAAA,MAEA,CAAC,KAAK,EAAG,KAAK,MAAM;AAClB,YAAI;AACF,iBAAO,MAAM,KAAK,SAAS,GAAG,GAAG;AAAA,YAC/B,KAAK,KAAK;AAAA,YACV,KAAK,KAAK;AAAA,YACV,YAAY,KAAK;AAAA,YACjB,YAAY,KAAK;AAAA,YACjB,OAAO,KAAK;AAAA,YACZ,UAAU,KAAK;AAAA,YACf,QAAQ,KAAK;AAAA,YACb,OAAO,KAAK;AAAA,YACZ,KAAK,KAAK;AAAA,YACV;AAAA,UACF,CAAC;AAAA,QACH,SAAS,IAAI;AACX,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEA,CAAC,IAAI,EAAG,OAAO,UAAU,MAAM,MAAM;AACnC,YAAI;AACF,UAAAL,IAAG,OAAO,MAAM,EAAE,UAAU,MAAM,QAAQ;AAC1C,eAAK;AACL,gBAAM,OAAO;AAAA,QACf,SAAS,IAAI;AACX,iBAAO,KAAK,OAAO,EAAE,IAAI,KAAK;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAEA,WAAO,OAAO;AACd,WAAO,UAAU;AAAA;AAAA;;;ACz4BjB;AAAA;AAAA;AAGA,QAAM,MAAM;AACZ,QAAM,SAAS;AACf,QAAMM,MAAK,UAAQ,IAAI;AACvB,QAAM,MAAM;AACZ,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,aAAa;AAEnB,WAAO,UAAU,CAAC,MAAM,OAAO,OAAO;AACpC,UAAI,OAAO,SAAS,YAAY;AAC9B,aAAK,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,MACnC,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC9B,gBAAQ,MAAM,OAAO,CAAC;AAAA,MACxB;AAEA,UAAI,OAAO,UAAU,YAAY;AAC/B,aAAK,OAAO,QAAQ;AAAA,MACtB;AAEA,UAAI,CAAC,OAAO;AACV,gBAAQ,CAAC;AAAA,MACX,OAAO;AACL,gBAAQ,MAAM,KAAK,KAAK;AAAA,MAC1B;AAEA,YAAM,MAAM,IAAI,IAAI;AAEpB,UAAI,IAAI,QAAQ,OAAO,OAAO,YAAY;AACxC,cAAM,IAAI,UAAU,+CAA+C;AAAA,MACrE;AAEA,UAAI,CAAC,IAAI,QAAQ,OAAO,OAAO,YAAY;AACzC,cAAM,IAAI,UAAU,0CAA0C;AAAA,MAChE;AAEA,UAAI,MAAM,QAAQ;AAChB,oBAAY,KAAK,KAAK;AAAA,MACxB;AAEA,aAAO,IAAI,QAAQ,IAAI,OAAO,gBAAgB,GAAG,IAC7C,IAAI,OAAO,YAAY,KAAK,EAAE,IAC9B,IAAI,OAAO,YAAY,GAAG,IAC1B,QAAQ,GAAG;AAAA,IACjB;AAIA,QAAM,cAAc,CAAC,KAAK,UAAU;AAClC,YAAM,MAAM,IAAI,IAAI,MAAM,IAAI,OAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;AACzD,YAAM,SAAS,IAAI;AAEnB,YAAM,SAAS,CAAC,MAAM,MAAM;AAC1B,cAAM,OAAO,KAAKA,MAAK,MAAM,IAAI,EAAE,QAAQ;AAC3C,cAAM,MAAM,SAAS,OAAO,QACxB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5B,OAAOA,MAAK,QAAQ,IAAI,GAAG,IAAI;AAEnC,YAAI,IAAI,MAAM,GAAG;AACjB,eAAO;AAAA,MACT;AAEA,UAAI,SAAS,SACT,CAAC,MAAM,UAAU,OAAO,MAAM,KAAK,KAAK,OAAO,WAAW,IAAI,CAAC,IAC/D,UAAQ,OAAO,WAAW,IAAI,CAAC;AAAA,IACrC;AAEA,QAAM,kBAAkB,SAAO;AAC7B,YAAM,IAAI,IAAI,OAAO,KAAK,GAAG;AAE7B,YAAM,OAAO,IAAI;AACjB,YAAM,OAAOD,IAAG,SAAS,IAAI;AAG7B,YAAM,WAAW,IAAI,eAAe,KAAK,OAAO;AAChD,YAAM,SAAS,IAAI,IAAI,eAAe,MAAM;AAAA,QAC1C;AAAA,QACA,MAAM,KAAK;AAAA,MACb,CAAC;AACD,aAAO,KAAK,CAAC;AAAA,IACf;AAEA,QAAM,cAAc,CAAC,KAAK,OAAO;AAC/B,YAAM,IAAI,IAAI,OAAO,GAAG;AACxB,YAAM,WAAW,IAAI,eAAe,KAAK,OAAO;AAEhD,YAAM,OAAO,IAAI;AACjB,YAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,WAAW;AACzC,UAAE,GAAG,SAAS,MAAM;AACpB,UAAE,GAAG,SAAS,OAAO;AAIrB,QAAAA,IAAG,KAAK,MAAM,CAAC,IAAI,SAAS;AAC1B,cAAI,IAAI;AACN,mBAAO,EAAE;AAAA,UACX,OAAO;AACL,kBAAM,SAAS,IAAI,IAAI,WAAW,MAAM;AAAA,cACtC;AAAA,cACA,MAAM,KAAK;AAAA,YACb,CAAC;AACD,mBAAO,GAAG,SAAS,MAAM;AACzB,mBAAO,KAAK,CAAC;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,aAAO,KAAK,EAAE,KAAK,IAAI,EAAE,IAAI;AAAA,IAC/B;AAEA,QAAM,cAAc,SAAO,IAAI,OAAO,KAAK,GAAG;AAE9C,QAAM,UAAU,SAAO,IAAI,OAAO,GAAG;AAAA;AAAA;;;AChHrC;AAAA;AAAA;AAGA,YAAQ,IAAI,QAAQ,SAAS;AAC7B,YAAQ,IAAI,QAAQ,UAAU;AAC9B,YAAQ,IAAI,QAAQ,OAAO;AAC3B,YAAQ,IAAI,QAAQ,SAAS;AAC7B,YAAQ,IAAI,QAAQ,UAAU;AAG9B,YAAQ,OAAO;AACf,YAAQ,SAAS;AACjB,YAAQ,QAAQ;AAChB,YAAQ,YAAY;AACpB,YAAQ,aAAa;AACrB,YAAQ,SAAS;AACjB,YAAQ,MAAM;AACd,YAAQ,QAAQ;AAAA;AAAA;;;ACjBhB,IAAAE,qBAAA;AAAA;AAEA,QAAM,sBAAsB;AAE5B,QAAM,aAAa;AACnB,QAAM,mBAAmB,OAAO;AAAA,IACL;AAG3B,QAAM,4BAA4B;AAIlC,QAAM,wBAAwB,aAAa;AAE3C,QAAM,gBAAgB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,yBAAyB;AAAA,MACzB,YAAY;AAAA,IACd;AAAA;AAAA;;;AClCA;AAAA;AAAA,QAAM,QACJ,OAAO,YAAY,YACnB,QAAQ,OACR,QAAQ,IAAI,cACZ,cAAc,KAAK,QAAQ,IAAI,UAAU,IACvC,IAAI,SAAS,QAAQ,MAAM,UAAU,GAAG,IAAI,IAC5C,MAAM;AAAA,IAAC;AAEX,WAAO,UAAU;AAAA;AAAA;;;ACRjB;AAAA;AAAA,QAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAM,QAAQ;AACd,cAAU,OAAO,UAAU,CAAC;AAG5B,QAAM,KAAK,QAAQ,KAAK,CAAC;AACzB,QAAM,SAAS,QAAQ,SAAS,CAAC;AACjC,QAAM,MAAM,QAAQ,MAAM,CAAC;AAC3B,QAAM,IAAI,QAAQ,IAAI,CAAC;AACvB,QAAI,IAAI;AAER,QAAM,mBAAmB;AAQzB,QAAM,wBAAwB;AAAA,MAC5B,CAAC,OAAO,CAAC;AAAA,MACT,CAAC,OAAO,UAAU;AAAA,MAClB,CAAC,kBAAkB,qBAAqB;AAAA,IAC1C;AAEA,QAAM,gBAAgB,CAAC,UAAU;AAC/B,iBAAW,CAAC,OAAO,GAAG,KAAK,uBAAuB;AAChD,gBAAQ,MACL,MAAM,GAAG,KAAK,GAAG,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,EAC5C,MAAM,GAAG,KAAK,GAAG,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG;AAAA,MACjD;AACA,aAAO;AAAA,IACT;AAEA,QAAM,cAAc,CAAC,MAAM,OAAO,aAAa;AAC7C,YAAM,OAAO,cAAc,KAAK;AAChC,YAAM,QAAQ;AACd,YAAM,MAAM,OAAO,KAAK;AACxB,QAAE,IAAI,IAAI;AACV,UAAI,KAAK,IAAI;AACb,SAAG,KAAK,IAAI,IAAI,OAAO,OAAO,WAAW,MAAM,MAAS;AACxD,aAAO,KAAK,IAAI,IAAI,OAAO,MAAM,WAAW,MAAM,MAAS;AAAA,IAC7D;AAQA,gBAAY,qBAAqB,aAAa;AAC9C,gBAAY,0BAA0B,MAAM;AAM5C,gBAAY,wBAAwB,gBAAgB,gBAAgB,GAAG;AAKvE,gBAAY,eAAe,IAAI,IAAI,EAAE,iBAAiB,CAAC,QAChC,IAAI,EAAE,iBAAiB,CAAC,QACxB,IAAI,EAAE,iBAAiB,CAAC,GAAG;AAElD,gBAAY,oBAAoB,IAAI,IAAI,EAAE,sBAAsB,CAAC,QACrC,IAAI,EAAE,sBAAsB,CAAC,QAC7B,IAAI,EAAE,sBAAsB,CAAC,GAAG;AAK5D,gBAAY,wBAAwB,MAAM,IAAI,EAAE,iBAAiB,CACjE,IAAI,IAAI,EAAE,oBAAoB,CAAC,GAAG;AAElC,gBAAY,6BAA6B,MAAM,IAAI,EAAE,sBAAsB,CAC3E,IAAI,IAAI,EAAE,oBAAoB,CAAC,GAAG;AAMlC,gBAAY,cAAc,QAAQ,IAAI,EAAE,oBAAoB,CAC5D,SAAS,IAAI,EAAE,oBAAoB,CAAC,MAAM;AAE1C,gBAAY,mBAAmB,SAAS,IAAI,EAAE,yBAAyB,CACvE,SAAS,IAAI,EAAE,yBAAyB,CAAC,MAAM;AAK/C,gBAAY,mBAAmB,GAAG,gBAAgB,GAAG;AAMrD,gBAAY,SAAS,UAAU,IAAI,EAAE,eAAe,CACpD,SAAS,IAAI,EAAE,eAAe,CAAC,MAAM;AAWrC,gBAAY,aAAa,KAAK,IAAI,EAAE,WAAW,CAC/C,GAAG,IAAI,EAAE,UAAU,CAAC,IAClB,IAAI,EAAE,KAAK,CAAC,GAAG;AAEjB,gBAAY,QAAQ,IAAI,IAAI,EAAE,SAAS,CAAC,GAAG;AAK3C,gBAAY,cAAc,WAAW,IAAI,EAAE,gBAAgB,CAC3D,GAAG,IAAI,EAAE,eAAe,CAAC,IACvB,IAAI,EAAE,KAAK,CAAC,GAAG;AAEjB,gBAAY,SAAS,IAAI,IAAI,EAAE,UAAU,CAAC,GAAG;AAE7C,gBAAY,QAAQ,cAAc;AAKlC,gBAAY,yBAAyB,GAAG,IAAI,EAAE,sBAAsB,CAAC,UAAU;AAC/E,gBAAY,oBAAoB,GAAG,IAAI,EAAE,iBAAiB,CAAC,UAAU;AAErE,gBAAY,eAAe,YAAY,IAAI,EAAE,gBAAgB,CAAC,WACjC,IAAI,EAAE,gBAAgB,CAAC,WACvB,IAAI,EAAE,gBAAgB,CAAC,OAC3B,IAAI,EAAE,UAAU,CAAC,KACrB,IAAI,EAAE,KAAK,CAAC,OACR;AAEzB,gBAAY,oBAAoB,YAAY,IAAI,EAAE,qBAAqB,CAAC,WACtC,IAAI,EAAE,qBAAqB,CAAC,WAC5B,IAAI,EAAE,qBAAqB,CAAC,OAChC,IAAI,EAAE,eAAe,CAAC,KAC1B,IAAI,EAAE,KAAK,CAAC,OACR;AAE9B,gBAAY,UAAU,IAAI,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,WAAW,CAAC,GAAG;AACjE,gBAAY,eAAe,IAAI,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,gBAAgB,CAAC,GAAG;AAI3E,gBAAY,eAAe,GAAG,mBACP,GAAG,yBAAyB,kBACrB,yBAAyB,oBACzB,yBAAyB,MAAM;AAC7D,gBAAY,UAAU,GAAG,IAAI,EAAE,WAAW,CAAC,cAAc;AACzD,gBAAY,cAAc,IAAI,EAAE,WAAW,IAC7B,MAAM,IAAI,EAAE,UAAU,CAAC,QACjB,IAAI,EAAE,KAAK,CAAC,gBACJ;AAC5B,gBAAY,aAAa,IAAI,EAAE,MAAM,GAAG,IAAI;AAC5C,gBAAY,iBAAiB,IAAI,EAAE,UAAU,GAAG,IAAI;AAIpD,gBAAY,aAAa,SAAS;AAElC,gBAAY,aAAa,SAAS,IAAI,EAAE,SAAS,CAAC,QAAQ,IAAI;AAC9D,YAAQ,mBAAmB;AAE3B,gBAAY,SAAS,IAAI,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,GAAG;AACjE,gBAAY,cAAc,IAAI,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,gBAAgB,CAAC,GAAG;AAI3E,gBAAY,aAAa,SAAS;AAElC,gBAAY,aAAa,SAAS,IAAI,EAAE,SAAS,CAAC,QAAQ,IAAI;AAC9D,YAAQ,mBAAmB;AAE3B,gBAAY,SAAS,IAAI,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,GAAG;AACjE,gBAAY,cAAc,IAAI,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,gBAAgB,CAAC,GAAG;AAG3E,gBAAY,mBAAmB,IAAI,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,UAAU,CAAC,OAAO;AAC9E,gBAAY,cAAc,IAAI,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,SAAS,CAAC,OAAO;AAIxE,gBAAY,kBAAkB,SAAS,IAAI,EAAE,IAAI,CACjD,QAAQ,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE,WAAW,CAAC,KAAK,IAAI;AACxD,YAAQ,wBAAwB;AAMhC,gBAAY,eAAe,SAAS,IAAI,EAAE,WAAW,CAAC,cAE/B,IAAI,EAAE,WAAW,CAAC,QACf;AAE1B,gBAAY,oBAAoB,SAAS,IAAI,EAAE,gBAAgB,CAAC,cAEpC,IAAI,EAAE,gBAAgB,CAAC,QACpB;AAG/B,gBAAY,QAAQ,iBAAiB;AAErC,gBAAY,QAAQ,2BAA2B;AAC/C,gBAAY,WAAW,6BAA6B;AAAA;AAAA;;;ACxNpD;AAAA;AACA,QAAM,cAAc,OAAO,OAAO,EAAE,OAAO,KAAK,CAAC;AACjD,QAAM,YAAY,OAAO,OAAO,CAAE,CAAC;AACnC,QAAM,eAAe,aAAW;AAC9B,UAAI,CAAC,SAAS;AACZ,eAAO;AAAA,MACT;AAEA,UAAI,OAAO,YAAY,UAAU;AAC/B,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACdjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,qBAAqB,CAAC,GAAG,MAAM;AACnC,YAAM,OAAO,QAAQ,KAAK,CAAC;AAC3B,YAAM,OAAO,QAAQ,KAAK,CAAC;AAE3B,UAAI,QAAQ,MAAM;AAChB,YAAI,CAAC;AACL,YAAI,CAAC;AAAA,MACP;AAEA,aAAO,MAAM,IAAI,IACZ,QAAQ,CAAC,OAAQ,KACjB,QAAQ,CAAC,OAAQ,IAClB,IAAI,IAAI,KACR;AAAA,IACN;AAEA,QAAM,sBAAsB,CAAC,GAAG,MAAM,mBAAmB,GAAG,CAAC;AAE7D,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,IACF;AAAA;AAAA;;;ACtBA;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,EAAE,YAAY,iBAAiB,IAAI;AACzC,QAAM,EAAE,QAAQ,IAAI,EAAE,IAAI;AAE1B,QAAM,eAAe;AACrB,QAAM,EAAE,mBAAmB,IAAI;AAC/B,QAAM,SAAN,MAAM,QAAO;AAAA,MACX,YAAaC,UAAS,SAAS;AAC7B,kBAAU,aAAa,OAAO;AAE9B,YAAIA,oBAAmB,SAAQ;AAC7B,cAAIA,SAAQ,UAAU,CAAC,CAAC,QAAQ,SAC5BA,SAAQ,sBAAsB,CAAC,CAAC,QAAQ,mBAAmB;AAC7D,mBAAOA;AAAA,UACT,OAAO;AACL,YAAAA,WAAUA,SAAQ;AAAA,UACpB;AAAA,QACF,WAAW,OAAOA,aAAY,UAAU;AACtC,gBAAM,IAAI,UAAU,gDAAgD,OAAOA,QAAO,IAAI;AAAA,QACxF;AAEA,YAAIA,SAAQ,SAAS,YAAY;AAC/B,gBAAM,IAAI;AAAA,YACR,0BAA0B,UAAU;AAAA,UACtC;AAAA,QACF;AAEA,cAAM,UAAUA,UAAS,OAAO;AAChC,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,QAAQ;AAGvB,aAAK,oBAAoB,CAAC,CAAC,QAAQ;AAEnC,cAAM,IAAIA,SAAQ,KAAK,EAAE,MAAM,QAAQ,QAAQ,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,CAAC;AAEvE,YAAI,CAAC,GAAG;AACN,gBAAM,IAAI,UAAU,oBAAoBA,QAAO,EAAE;AAAA,QACnD;AAEA,aAAK,MAAMA;AAGX,aAAK,QAAQ,CAAC,EAAE,CAAC;AACjB,aAAK,QAAQ,CAAC,EAAE,CAAC;AACjB,aAAK,QAAQ,CAAC,EAAE,CAAC;AAEjB,YAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAEA,YAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAEA,YAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAGA,YAAI,CAAC,EAAE,CAAC,GAAG;AACT,eAAK,aAAa,CAAC;AAAA,QACrB,OAAO;AACL,eAAK,aAAa,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,CAAC,OAAO;AAC5C,gBAAI,WAAW,KAAK,EAAE,GAAG;AACvB,oBAAM,MAAM,CAAC;AACb,kBAAI,OAAO,KAAK,MAAM,kBAAkB;AACtC,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAEA,aAAK,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;AACvC,aAAK,OAAO;AAAA,MACd;AAAA,MAEA,SAAU;AACR,aAAK,UAAU,GAAG,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK;AACxD,YAAI,KAAK,WAAW,QAAQ;AAC1B,eAAK,WAAW,IAAI,KAAK,WAAW,KAAK,GAAG,CAAC;AAAA,QAC/C;AACA,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAY;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,QAAS,OAAO;AACd,cAAM,kBAAkB,KAAK,SAAS,KAAK,SAAS,KAAK;AACzD,YAAI,EAAE,iBAAiB,UAAS;AAC9B,cAAI,OAAO,UAAU,YAAY,UAAU,KAAK,SAAS;AACvD,mBAAO;AAAA,UACT;AACA,kBAAQ,IAAI,QAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAEA,YAAI,MAAM,YAAY,KAAK,SAAS;AAClC,iBAAO;AAAA,QACT;AAEA,eAAO,KAAK,YAAY,KAAK,KAAK,KAAK,WAAW,KAAK;AAAA,MACzD;AAAA,MAEA,YAAa,OAAO;AAClB,YAAI,EAAE,iBAAiB,UAAS;AAC9B,kBAAQ,IAAI,QAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAEA,eACE,mBAAmB,KAAK,OAAO,MAAM,KAAK,KAC1C,mBAAmB,KAAK,OAAO,MAAM,KAAK,KAC1C,mBAAmB,KAAK,OAAO,MAAM,KAAK;AAAA,MAE9C;AAAA,MAEA,WAAY,OAAO;AACjB,YAAI,EAAE,iBAAiB,UAAS;AAC9B,kBAAQ,IAAI,QAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAGA,YAAI,KAAK,WAAW,UAAU,CAAC,MAAM,WAAW,QAAQ;AACtD,iBAAO;AAAA,QACT,WAAW,CAAC,KAAK,WAAW,UAAU,MAAM,WAAW,QAAQ;AAC7D,iBAAO;AAAA,QACT,WAAW,CAAC,KAAK,WAAW,UAAU,CAAC,MAAM,WAAW,QAAQ;AAC9D,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI;AACR,WAAG;AACD,gBAAM,IAAI,KAAK,WAAW,CAAC;AAC3B,gBAAM,IAAI,MAAM,WAAW,CAAC;AAC5B,gBAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,cAAI,MAAM,UAAa,MAAM,QAAW;AACtC,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,GAAG;AAClB;AAAA,UACF,OAAO;AACL,mBAAO,mBAAmB,GAAG,CAAC;AAAA,UAChC;AAAA,QACF,SAAS,EAAE;AAAA,MACb;AAAA,MAEA,aAAc,OAAO;AACnB,YAAI,EAAE,iBAAiB,UAAS;AAC9B,kBAAQ,IAAI,QAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAEA,YAAI,IAAI;AACR,WAAG;AACD,gBAAM,IAAI,KAAK,MAAM,CAAC;AACtB,gBAAM,IAAI,MAAM,MAAM,CAAC;AACvB,gBAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,cAAI,MAAM,UAAa,MAAM,QAAW;AACtC,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,GAAG;AAClB;AAAA,UACF,OAAO;AACL,mBAAO,mBAAmB,GAAG,CAAC;AAAA,UAChC;AAAA,QACF,SAAS,EAAE;AAAA,MACb;AAAA;AAAA;AAAA,MAIA,IAAK,SAAS,YAAY,gBAAgB;AACxC,gBAAQ,SAAS;AAAA,UACf,KAAK;AACH,iBAAK,WAAW,SAAS;AACzB,iBAAK,QAAQ;AACb,iBAAK,QAAQ;AACb,iBAAK;AACL,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UACF,KAAK;AACH,iBAAK,WAAW,SAAS;AACzB,iBAAK,QAAQ;AACb,iBAAK;AACL,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UACF,KAAK;AAIH,iBAAK,WAAW,SAAS;AACzB,iBAAK,IAAI,SAAS,YAAY,cAAc;AAC5C,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UAGF,KAAK;AACH,gBAAI,KAAK,WAAW,WAAW,GAAG;AAChC,mBAAK,IAAI,SAAS,YAAY,cAAc;AAAA,YAC9C;AACA,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UAEF,KAAK;AAKH,gBACE,KAAK,UAAU,KACf,KAAK,UAAU,KACf,KAAK,WAAW,WAAW,GAC3B;AACA,mBAAK;AAAA,YACP;AACA,iBAAK,QAAQ;AACb,iBAAK,QAAQ;AACb,iBAAK,aAAa,CAAC;AACnB;AAAA,UACF,KAAK;AAKH,gBAAI,KAAK,UAAU,KAAK,KAAK,WAAW,WAAW,GAAG;AACpD,mBAAK;AAAA,YACP;AACA,iBAAK,QAAQ;AACb,iBAAK,aAAa,CAAC;AACnB;AAAA,UACF,KAAK;AAKH,gBAAI,KAAK,WAAW,WAAW,GAAG;AAChC,mBAAK;AAAA,YACP;AACA,iBAAK,aAAa,CAAC;AACnB;AAAA,UAGF,KAAK,OAAO;AACV,kBAAM,OAAO,OAAO,cAAc,IAAI,IAAI;AAE1C,gBAAI,CAAC,cAAc,mBAAmB,OAAO;AAC3C,oBAAM,IAAI,MAAM,iDAAiD;AAAA,YACnE;AAEA,gBAAI,KAAK,WAAW,WAAW,GAAG;AAChC,mBAAK,aAAa,CAAC,IAAI;AAAA,YACzB,OAAO;AACL,kBAAI,IAAI,KAAK,WAAW;AACxB,qBAAO,EAAE,KAAK,GAAG;AACf,oBAAI,OAAO,KAAK,WAAW,CAAC,MAAM,UAAU;AAC1C,uBAAK,WAAW,CAAC;AACjB,sBAAI;AAAA,gBACN;AAAA,cACF;AACA,kBAAI,MAAM,IAAI;AAEZ,oBAAI,eAAe,KAAK,WAAW,KAAK,GAAG,KAAK,mBAAmB,OAAO;AACxE,wBAAM,IAAI,MAAM,uDAAuD;AAAA,gBACzE;AACA,qBAAK,WAAW,KAAK,IAAI;AAAA,cAC3B;AAAA,YACF;AACA,gBAAI,YAAY;AAGd,kBAAI,aAAa,CAAC,YAAY,IAAI;AAClC,kBAAI,mBAAmB,OAAO;AAC5B,6BAAa,CAAC,UAAU;AAAA,cAC1B;AACA,kBAAI,mBAAmB,KAAK,WAAW,CAAC,GAAG,UAAU,MAAM,GAAG;AAC5D,oBAAI,MAAM,KAAK,WAAW,CAAC,CAAC,GAAG;AAC7B,uBAAK,aAAa;AAAA,gBACpB;AAAA,cACF,OAAO;AACL,qBAAK,aAAa;AAAA,cACpB;AAAA,YACF;AACA;AAAA,UACF;AAAA,UACA;AACE,kBAAM,IAAI,MAAM,+BAA+B,OAAO,EAAE;AAAA,QAC5D;AACA,aAAK,MAAM,KAAK,OAAO;AACvB,YAAI,KAAK,MAAM,QAAQ;AACrB,eAAK,OAAO,IAAI,KAAK,MAAM,KAAK,GAAG,CAAC;AAAA,QACtC;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC7SjB,IAAAC,iBAAA;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAACC,UAAS,SAAS,cAAc,UAAU;AACvD,UAAIA,oBAAmB,QAAQ;AAC7B,eAAOA;AAAA,MACT;AACA,UAAI;AACF,eAAO,IAAI,OAAOA,UAAS,OAAO;AAAA,MACpC,SAAS,IAAI;AACX,YAAI,CAAC,aAAa;AAChB,iBAAO;AAAA,QACT;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACfjB;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,QAAQ,CAACC,UAAS,YAAY;AAClC,YAAM,IAAI,MAAMA,UAAS,OAAO;AAChC,aAAO,IAAI,EAAE,UAAU;AAAA,IACzB;AACA,WAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,QAAQ,CAACC,UAAS,YAAY;AAClC,YAAM,IAAI,MAAMA,SAAQ,KAAK,EAAE,QAAQ,UAAU,EAAE,GAAG,OAAO;AAC7D,aAAO,IAAI,EAAE,UAAU;AAAA,IACzB;AACA,WAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,QAAM,SAAS;AAEf,QAAM,MAAM,CAACC,UAAS,SAAS,SAAS,YAAY,mBAAmB;AACrE,UAAI,OAAQ,YAAa,UAAU;AACjC,yBAAiB;AACjB,qBAAa;AACb,kBAAU;AAAA,MACZ;AAEA,UAAI;AACF,eAAO,IAAI;AAAA,UACTA,oBAAmB,SAASA,SAAQ,UAAUA;AAAA,UAC9C;AAAA,QACF,EAAE,IAAI,SAAS,YAAY,cAAc,EAAE;AAAA,MAC7C,SAAS,IAAI;AACX,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,UAAU;AAAA;AAAA;;;AClBjB;AAAA;AAAA,QAAM,QAAQ;AAEd,QAAM,OAAO,CAAC,UAAU,aAAa;AACnC,YAAM,KAAK,MAAM,UAAU,MAAM,IAAI;AACrC,YAAM,KAAK,MAAM,UAAU,MAAM,IAAI;AACrC,YAAM,aAAa,GAAG,QAAQ,EAAE;AAEhC,UAAI,eAAe,GAAG;AACpB,eAAO;AAAA,MACT;AAEA,YAAM,WAAW,aAAa;AAC9B,YAAM,cAAc,WAAW,KAAK;AACpC,YAAM,aAAa,WAAW,KAAK;AACnC,YAAM,aAAa,CAAC,CAAC,YAAY,WAAW;AAC5C,YAAM,YAAY,CAAC,CAAC,WAAW,WAAW;AAE1C,UAAI,aAAa,CAAC,YAAY;AAQ5B,YAAI,CAAC,WAAW,SAAS,CAAC,WAAW,OAAO;AAC1C,iBAAO;AAAA,QACT;AAIA,YAAI,YAAY,OAAO;AAErB,iBAAO;AAAA,QACT;AAEA,YAAI,YAAY,OAAO;AAErB,iBAAO;AAAA,QACT;AAGA,eAAO;AAAA,MACT;AAGA,YAAMC,UAAS,aAAa,QAAQ;AAEpC,UAAI,GAAG,UAAU,GAAG,OAAO;AACzB,eAAOA,UAAS;AAAA,MAClB;AAEA,UAAI,GAAG,UAAU,GAAG,OAAO;AACzB,eAAOA,UAAS;AAAA,MAClB;AAEA,UAAI,GAAG,UAAU,GAAG,OAAO;AACzB,eAAOA,UAAS;AAAA,MAClB;AAGA,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AAAA;AAAA;;;AChEjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAAC,GAAG,UAAU,IAAI,OAAO,GAAG,KAAK,EAAE;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAAC,GAAG,UAAU,IAAI,OAAO,GAAG,KAAK,EAAE;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAAC,GAAG,UAAU,IAAI,OAAO,GAAG,KAAK,EAAE;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa,CAACC,UAAS,YAAY;AACvC,YAAM,SAAS,MAAMA,UAAS,OAAO;AACrC,aAAQ,UAAU,OAAO,WAAW,SAAU,OAAO,aAAa;AAAA,IACpE;AACA,WAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,UAAU,CAAC,GAAG,GAAG,UACrB,IAAI,OAAO,GAAG,KAAK,EAAE,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC;AAEnD,WAAO,UAAU;AAAA;AAAA;;;ACJjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,WAAW,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,eAAe,CAAC,GAAG,MAAM,QAAQ,GAAG,GAAG,IAAI;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,eAAe,CAAC,GAAG,GAAG,UAAU;AACpC,YAAM,WAAW,IAAI,OAAO,GAAG,KAAK;AACpC,YAAM,WAAW,IAAI,OAAO,GAAG,KAAK;AACpC,aAAO,SAAS,QAAQ,QAAQ,KAAK,SAAS,aAAa,QAAQ;AAAA,IACrE;AACA,WAAO,UAAU;AAAA;AAAA;;;ACNjB;AAAA;AAAA,QAAM,eAAe;AACrB,QAAM,OAAO,CAAC,MAAM,UAAU,KAAK,KAAK,CAAC,GAAG,MAAM,aAAa,GAAG,GAAG,KAAK,CAAC;AAC3E,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,eAAe;AACrB,QAAM,QAAQ,CAAC,MAAM,UAAU,KAAK,KAAK,CAAC,GAAG,MAAM,aAAa,GAAG,GAAG,KAAK,CAAC;AAC5E,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,KAAK,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,IAAI;AACnD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,KAAK,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,IAAI;AACnD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,KAAK,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,MAAM;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,MAAM;AACtD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,KAAK;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,KAAK;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,KAAK;AACX,QAAM,MAAM;AAEZ,QAAM,MAAM,CAAC,GAAG,IAAI,GAAG,UAAU;AAC/B,cAAQ,IAAI;AAAA,QACV,KAAK;AACH,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,iBAAO,MAAM;AAAA,QAEf,KAAK;AACH,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,iBAAO,MAAM;AAAA,QAEf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB;AACE,gBAAM,IAAI,UAAU,qBAAqB,EAAE,EAAE;AAAA,MACjD;AAAA,IACF;AACA,WAAO,UAAU;AAAA;AAAA;;;ACnDjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,QAAM,EAAE,QAAQ,IAAI,EAAE,IAAI;AAE1B,QAAM,SAAS,CAACC,UAAS,YAAY;AACnC,UAAIA,oBAAmB,QAAQ;AAC7B,eAAOA;AAAA,MACT;AAEA,UAAI,OAAOA,aAAY,UAAU;AAC/B,QAAAA,WAAU,OAAOA,QAAO;AAAA,MAC1B;AAEA,UAAI,OAAOA,aAAY,UAAU;AAC/B,eAAO;AAAA,MACT;AAEA,gBAAU,WAAW,CAAC;AAEtB,UAAIC,SAAQ;AACZ,UAAI,CAAC,QAAQ,KAAK;AAChB,QAAAA,SAAQD,SAAQ,MAAM,QAAQ,oBAAoB,GAAG,EAAE,UAAU,IAAI,GAAG,EAAE,MAAM,CAAC;AAAA,MACnF,OAAO;AAUL,cAAM,iBAAiB,QAAQ,oBAAoB,GAAG,EAAE,aAAa,IAAI,GAAG,EAAE,SAAS;AACvF,YAAI;AACJ,gBAAQ,OAAO,eAAe,KAAKA,QAAO,OACrC,CAACC,UAASA,OAAM,QAAQA,OAAM,CAAC,EAAE,WAAWD,SAAQ,SACvD;AACA,cAAI,CAACC,UACC,KAAK,QAAQ,KAAK,CAAC,EAAE,WAAWA,OAAM,QAAQA,OAAM,CAAC,EAAE,QAAQ;AACnE,YAAAA,SAAQ;AAAA,UACV;AACA,yBAAe,YAAY,KAAK,QAAQ,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE;AAAA,QACnE;AAEA,uBAAe,YAAY;AAAA,MAC7B;AAEA,UAAIA,WAAU,MAAM;AAClB,eAAO;AAAA,MACT;AAEA,YAAM,QAAQA,OAAM,CAAC;AACrB,YAAM,QAAQA,OAAM,CAAC,KAAK;AAC1B,YAAM,QAAQA,OAAM,CAAC,KAAK;AAC1B,YAAM,aAAa,QAAQ,qBAAqBA,OAAM,CAAC,IAAI,IAAIA,OAAM,CAAC,CAAC,KAAK;AAC5E,YAAM,QAAQ,QAAQ,qBAAqBA,OAAM,CAAC,IAAI,IAAIA,OAAM,CAAC,CAAC,KAAK;AAEvE,aAAO,MAAM,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG,UAAU,GAAG,KAAK,IAAI,OAAO;AAAA,IACzE;AACA,WAAO,UAAU;AAAA;AAAA;;;AC3DjB;AAAA;AAAA;AAGA,QAAM,UAAU;AAEhB,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,oBAAoB,OAAO,kBAAkB;AACnD,QAAM,cAAc,OAAO,YAAY;AACvC,QAAM,UAAU,OAAO,QAAQ;AAC/B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,oBAAoB,OAAO,gBAAgB;AACjD,QAAM,WAAW,OAAO,SAAS;AACjC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,oBAAoB,OAAO,gBAAgB;AAEjD,QAAM,cAAc,MAAM;AAU1B,QAAM,WAAN,MAAe;AAAA,MACb,YAAa,SAAS;AACpB,YAAI,OAAO,YAAY;AACrB,oBAAU,EAAE,KAAK,QAAQ;AAE3B,YAAI,CAAC;AACH,oBAAU,CAAC;AAEb,YAAI,QAAQ,QAAQ,OAAO,QAAQ,QAAQ,YAAY,QAAQ,MAAM;AACnE,gBAAM,IAAI,UAAU,mCAAmC;AAEzD,cAAM,MAAM,KAAK,GAAG,IAAI,QAAQ,OAAO;AAEvC,cAAM,KAAK,QAAQ,UAAU;AAC7B,aAAK,iBAAiB,IAAK,OAAO,OAAO,aAAc,cAAc;AACrE,aAAK,WAAW,IAAI,QAAQ,SAAS;AACrC,YAAI,QAAQ,UAAU,OAAO,QAAQ,WAAW;AAC9C,gBAAM,IAAI,UAAU,yBAAyB;AAC/C,aAAK,OAAO,IAAI,QAAQ,UAAU;AAClC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,iBAAiB,IAAI,QAAQ,kBAAkB;AACpD,aAAK,iBAAiB,IAAI,QAAQ,kBAAkB;AACpD,aAAK,MAAM;AAAA,MACb;AAAA;AAAA,MAGA,IAAI,IAAK,IAAI;AACX,YAAI,OAAO,OAAO,YAAY,KAAK;AACjC,gBAAM,IAAI,UAAU,mCAAmC;AAEzD,aAAK,GAAG,IAAI,MAAM;AAClB,aAAK,IAAI;AAAA,MACX;AAAA,MACA,IAAI,MAAO;AACT,eAAO,KAAK,GAAG;AAAA,MACjB;AAAA,MAEA,IAAI,WAAY,YAAY;AAC1B,aAAK,WAAW,IAAI,CAAC,CAAC;AAAA,MACxB;AAAA,MACA,IAAI,aAAc;AAChB,eAAO,KAAK,WAAW;AAAA,MACzB;AAAA,MAEA,IAAI,OAAQ,IAAI;AACd,YAAI,OAAO,OAAO;AAChB,gBAAM,IAAI,UAAU,sCAAsC;AAE5D,aAAK,OAAO,IAAI;AAChB,aAAK,IAAI;AAAA,MACX;AAAA,MACA,IAAI,SAAU;AACZ,eAAO,KAAK,OAAO;AAAA,MACrB;AAAA;AAAA,MAGA,IAAI,iBAAkB,IAAI;AACxB,YAAI,OAAO,OAAO;AAChB,eAAK;AAEP,YAAI,OAAO,KAAK,iBAAiB,GAAG;AAClC,eAAK,iBAAiB,IAAI;AAC1B,eAAK,MAAM,IAAI;AACf,eAAK,QAAQ,EAAE,QAAQ,SAAO;AAC5B,gBAAI,SAAS,KAAK,iBAAiB,EAAE,IAAI,OAAO,IAAI,GAAG;AACvD,iBAAK,MAAM,KAAK,IAAI;AAAA,UACtB,CAAC;AAAA,QACH;AACA,aAAK,IAAI;AAAA,MACX;AAAA,MACA,IAAI,mBAAoB;AAAE,eAAO,KAAK,iBAAiB;AAAA,MAAE;AAAA,MAEzD,IAAI,SAAU;AAAE,eAAO,KAAK,MAAM;AAAA,MAAE;AAAA,MACpC,IAAI,YAAa;AAAE,eAAO,KAAK,QAAQ,EAAE;AAAA,MAAO;AAAA,MAEhD,SAAU,IAAI,OAAO;AACnB,gBAAQ,SAAS;AACjB,iBAAS,SAAS,KAAK,QAAQ,EAAE,MAAM,WAAW,QAAO;AACvD,gBAAM,OAAO,OAAO;AACpB,sBAAY,MAAM,IAAI,QAAQ,KAAK;AACnC,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MAEA,QAAS,IAAI,OAAO;AAClB,gBAAQ,SAAS;AACjB,iBAAS,SAAS,KAAK,QAAQ,EAAE,MAAM,WAAW,QAAO;AACvD,gBAAM,OAAO,OAAO;AACpB,sBAAY,MAAM,IAAI,QAAQ,KAAK;AACnC,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MAEA,OAAQ;AACN,eAAO,KAAK,QAAQ,EAAE,QAAQ,EAAE,IAAI,OAAK,EAAE,GAAG;AAAA,MAChD;AAAA,MAEA,SAAU;AACR,eAAO,KAAK,QAAQ,EAAE,QAAQ,EAAE,IAAI,OAAK,EAAE,KAAK;AAAA,MAClD;AAAA,MAEA,QAAS;AACP,YAAI,KAAK,OAAO,KACZ,KAAK,QAAQ,KACb,KAAK,QAAQ,EAAE,QAAQ;AACzB,eAAK,QAAQ,EAAE,QAAQ,SAAO,KAAK,OAAO,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC;AAAA,QACjE;AAEA,aAAK,KAAK,IAAI,oBAAI,IAAI;AACtB,aAAK,QAAQ,IAAI,IAAI,QAAQ;AAC7B,aAAK,MAAM,IAAI;AAAA,MACjB;AAAA,MAEA,OAAQ;AACN,eAAO,KAAK,QAAQ,EAAE,IAAI,SACxB,QAAQ,MAAM,GAAG,IAAI,QAAQ;AAAA,UAC3B,GAAG,IAAI;AAAA,UACP,GAAG,IAAI;AAAA,UACP,GAAG,IAAI,OAAO,IAAI,UAAU;AAAA,QAC9B,CAAC,EAAE,QAAQ,EAAE,OAAO,OAAK,CAAC;AAAA,MAC9B;AAAA,MAEA,UAAW;AACT,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,MAEA,IAAK,KAAK,OAAO,QAAQ;AACvB,iBAAS,UAAU,KAAK,OAAO;AAE/B,YAAI,UAAU,OAAO,WAAW;AAC9B,gBAAM,IAAI,UAAU,yBAAyB;AAE/C,cAAM,MAAM,SAAS,KAAK,IAAI,IAAI;AAClC,cAAM,MAAM,KAAK,iBAAiB,EAAE,OAAO,GAAG;AAE9C,YAAI,KAAK,KAAK,EAAE,IAAI,GAAG,GAAG;AACxB,cAAI,MAAM,KAAK,GAAG,GAAG;AACnB,gBAAI,MAAM,KAAK,KAAK,EAAE,IAAI,GAAG,CAAC;AAC9B,mBAAO;AAAA,UACT;AAEA,gBAAM,OAAO,KAAK,KAAK,EAAE,IAAI,GAAG;AAChC,gBAAM,OAAO,KAAK;AAIlB,cAAI,KAAK,OAAO,GAAG;AACjB,gBAAI,CAAC,KAAK,iBAAiB;AACzB,mBAAK,OAAO,EAAE,KAAK,KAAK,KAAK;AAAA,UACjC;AAEA,eAAK,MAAM;AACX,eAAK,SAAS;AACd,eAAK,QAAQ;AACb,eAAK,MAAM,KAAK,MAAM,KAAK;AAC3B,eAAK,SAAS;AACd,eAAK,IAAI,GAAG;AACZ,eAAK,IAAI;AACT,iBAAO;AAAA,QACT;AAEA,cAAM,MAAM,IAAI,MAAM,KAAK,OAAO,KAAK,KAAK,MAAM;AAGlD,YAAI,IAAI,SAAS,KAAK,GAAG,GAAG;AAC1B,cAAI,KAAK,OAAO;AACd,iBAAK,OAAO,EAAE,KAAK,KAAK;AAE1B,iBAAO;AAAA,QACT;AAEA,aAAK,MAAM,KAAK,IAAI;AACpB,aAAK,QAAQ,EAAE,QAAQ,GAAG;AAC1B,aAAK,KAAK,EAAE,IAAI,KAAK,KAAK,QAAQ,EAAE,IAAI;AACxC,aAAK,IAAI;AACT,eAAO;AAAA,MACT;AAAA,MAEA,IAAK,KAAK;AACR,YAAI,CAAC,KAAK,KAAK,EAAE,IAAI,GAAG;AAAG,iBAAO;AAClC,cAAM,MAAM,KAAK,KAAK,EAAE,IAAI,GAAG,EAAE;AACjC,eAAO,CAAC,QAAQ,MAAM,GAAG;AAAA,MAC3B;AAAA,MAEA,IAAK,KAAK;AACR,eAAO,IAAI,MAAM,KAAK,IAAI;AAAA,MAC5B;AAAA,MAEA,KAAM,KAAK;AACT,eAAO,IAAI,MAAM,KAAK,KAAK;AAAA,MAC7B;AAAA,MAEA,MAAO;AACL,cAAM,OAAO,KAAK,QAAQ,EAAE;AAC5B,YAAI,CAAC;AACH,iBAAO;AAET,YAAI,MAAM,IAAI;AACd,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,IAAK,KAAK;AACR,YAAI,MAAM,KAAK,KAAK,EAAE,IAAI,GAAG,CAAC;AAAA,MAChC;AAAA,MAEA,KAAM,KAAK;AAET,aAAK,MAAM;AAEX,cAAM,MAAM,KAAK,IAAI;AAErB,iBAAS,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK;AACxC,gBAAM,MAAM,IAAI,CAAC;AACjB,gBAAM,YAAY,IAAI,KAAK;AAC3B,cAAI,cAAc;AAEhB,iBAAK,IAAI,IAAI,GAAG,IAAI,CAAC;AAAA,eAClB;AACH,kBAAM,SAAS,YAAY;AAE3B,gBAAI,SAAS,GAAG;AACd,mBAAK,IAAI,IAAI,GAAG,IAAI,GAAG,MAAM;AAAA,YAC/B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,QAAS;AACP,aAAK,KAAK,EAAE,QAAQ,CAAC,OAAO,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC;AAAA,MAC3D;AAAA,IACF;AAEA,QAAM,MAAM,CAAC,MAAM,KAAK,UAAU;AAChC,YAAM,OAAO,KAAK,KAAK,EAAE,IAAI,GAAG;AAChC,UAAI,MAAM;AACR,cAAM,MAAM,KAAK;AACjB,YAAI,QAAQ,MAAM,GAAG,GAAG;AACtB,cAAI,MAAM,IAAI;AACd,cAAI,CAAC,KAAK,WAAW;AACnB,mBAAO;AAAA,QACX,OAAO;AACL,cAAI,OAAO;AACT,gBAAI,KAAK,iBAAiB;AACxB,mBAAK,MAAM,MAAM,KAAK,IAAI;AAC5B,iBAAK,QAAQ,EAAE,YAAY,IAAI;AAAA,UACjC;AAAA,QACF;AACA,eAAO,IAAI;AAAA,MACb;AAAA,IACF;AAEA,QAAM,UAAU,CAAC,MAAM,QAAQ;AAC7B,UAAI,CAAC,OAAQ,CAAC,IAAI,UAAU,CAAC,KAAK,OAAO;AACvC,eAAO;AAET,YAAM,OAAO,KAAK,IAAI,IAAI,IAAI;AAC9B,aAAO,IAAI,SAAS,OAAO,IAAI,SAC3B,KAAK,OAAO,KAAM,OAAO,KAAK,OAAO;AAAA,IAC3C;AAEA,QAAM,OAAO,UAAQ;AACnB,UAAI,KAAK,MAAM,IAAI,KAAK,GAAG,GAAG;AAC5B,iBAAS,SAAS,KAAK,QAAQ,EAAE,MAC/B,KAAK,MAAM,IAAI,KAAK,GAAG,KAAK,WAAW,QAAO;AAI9C,gBAAM,OAAO,OAAO;AACpB,cAAI,MAAM,MAAM;AAChB,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAEA,QAAM,MAAM,CAAC,MAAM,SAAS;AAC1B,UAAI,MAAM;AACR,cAAM,MAAM,KAAK;AACjB,YAAI,KAAK,OAAO;AACd,eAAK,OAAO,EAAE,IAAI,KAAK,IAAI,KAAK;AAElC,aAAK,MAAM,KAAK,IAAI;AACpB,aAAK,KAAK,EAAE,OAAO,IAAI,GAAG;AAC1B,aAAK,QAAQ,EAAE,WAAW,IAAI;AAAA,MAChC;AAAA,IACF;AAEA,QAAM,QAAN,MAAY;AAAA,MACV,YAAa,KAAK,OAAO,QAAQ,KAAK,QAAQ;AAC5C,aAAK,MAAM;AACX,aAAK,QAAQ;AACb,aAAK,SAAS;AACd,aAAK,MAAM;AACX,aAAK,SAAS,UAAU;AAAA,MAC1B;AAAA,IACF;AAEA,QAAM,cAAc,CAAC,MAAM,IAAI,MAAM,UAAU;AAC7C,UAAI,MAAM,KAAK;AACf,UAAI,QAAQ,MAAM,GAAG,GAAG;AACtB,YAAI,MAAM,IAAI;AACd,YAAI,CAAC,KAAK,WAAW;AACnB,gBAAM;AAAA,MACV;AACA,UAAI;AACF,WAAG,KAAK,OAAO,IAAI,OAAO,IAAI,KAAK,IAAI;AAAA,IAC3C;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC7UjB;AAAA;AACA,QAAM,QAAN,MAAM,OAAM;AAAA,MACV,YAAa,OAAO,SAAS;AAC3B,kBAAU,aAAa,OAAO;AAE9B,YAAI,iBAAiB,QAAO;AAC1B,cACE,MAAM,UAAU,CAAC,CAAC,QAAQ,SAC1B,MAAM,sBAAsB,CAAC,CAAC,QAAQ,mBACtC;AACA,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO,IAAI,OAAM,MAAM,KAAK,OAAO;AAAA,UACrC;AAAA,QACF;AAEA,YAAI,iBAAiB,YAAY;AAE/B,eAAK,MAAM,MAAM;AACjB,eAAK,MAAM,CAAC,CAAC,KAAK,CAAC;AACnB,eAAK,OAAO;AACZ,iBAAO;AAAA,QACT;AAEA,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,QAAQ;AACvB,aAAK,oBAAoB,CAAC,CAAC,QAAQ;AAKnC,aAAK,MAAM,MACR,KAAK,EACL,MAAM,KAAK,EACX,KAAK,GAAG;AAGX,aAAK,MAAM,KAAK,IACb,MAAM,IAAI,EAEV,IAAI,OAAK,KAAK,WAAW,EAAE,KAAK,CAAC,CAAC,EAIlC,OAAO,OAAK,EAAE,MAAM;AAEvB,YAAI,CAAC,KAAK,IAAI,QAAQ;AACpB,gBAAM,IAAI,UAAU,yBAAyB,KAAK,GAAG,EAAE;AAAA,QACzD;AAGA,YAAI,KAAK,IAAI,SAAS,GAAG;AAEvB,gBAAM,QAAQ,KAAK,IAAI,CAAC;AACxB,eAAK,MAAM,KAAK,IAAI,OAAO,OAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAChD,cAAI,KAAK,IAAI,WAAW,GAAG;AACzB,iBAAK,MAAM,CAAC,KAAK;AAAA,UACnB,WAAW,KAAK,IAAI,SAAS,GAAG;AAE9B,uBAAW,KAAK,KAAK,KAAK;AACxB,kBAAI,EAAE,WAAW,KAAK,MAAM,EAAE,CAAC,CAAC,GAAG;AACjC,qBAAK,MAAM,CAAC,CAAC;AACb;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,aAAK,OAAO;AAAA,MACd;AAAA,MAEA,SAAU;AACR,aAAK,QAAQ,KAAK,IACf,IAAI,CAAC,UAAU,MAAM,KAAK,GAAG,EAAE,KAAK,CAAC,EACrC,KAAK,IAAI,EACT,KAAK;AACR,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAY;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAY,OAAO;AAGjB,cAAM,YACH,KAAK,QAAQ,qBAAqB,4BAClC,KAAK,QAAQ,SAAS;AACzB,cAAM,UAAU,WAAW,MAAM;AACjC,cAAM,SAASC,OAAM,IAAI,OAAO;AAChC,YAAI,QAAQ;AACV,iBAAO;AAAA,QACT;AAEA,cAAM,QAAQ,KAAK,QAAQ;AAE3B,cAAM,KAAK,QAAQ,GAAG,EAAE,gBAAgB,IAAI,GAAG,EAAE,WAAW;AAC5D,gBAAQ,MAAM,QAAQ,IAAI,cAAc,KAAK,QAAQ,iBAAiB,CAAC;AACvE,cAAM,kBAAkB,KAAK;AAG7B,gBAAQ,MAAM,QAAQ,GAAG,EAAE,cAAc,GAAG,qBAAqB;AACjE,cAAM,mBAAmB,KAAK;AAG9B,gBAAQ,MAAM,QAAQ,GAAG,EAAE,SAAS,GAAG,gBAAgB;AACvD,cAAM,cAAc,KAAK;AAGzB,gBAAQ,MAAM,QAAQ,GAAG,EAAE,SAAS,GAAG,gBAAgB;AACvD,cAAM,cAAc,KAAK;AAKzB,YAAI,YAAY,MACb,MAAM,GAAG,EACT,IAAI,UAAQ,gBAAgB,MAAM,KAAK,OAAO,CAAC,EAC/C,KAAK,GAAG,EACR,MAAM,KAAK,EAEX,IAAI,UAAQ,YAAY,MAAM,KAAK,OAAO,CAAC;AAE9C,YAAI,OAAO;AAET,sBAAY,UAAU,OAAO,UAAQ;AACnC,kBAAM,wBAAwB,MAAM,KAAK,OAAO;AAChD,mBAAO,CAAC,CAAC,KAAK,MAAM,GAAG,EAAE,eAAe,CAAC;AAAA,UAC3C,CAAC;AAAA,QACH;AACA,cAAM,cAAc,SAAS;AAK7B,cAAM,WAAW,oBAAI,IAAI;AACzB,cAAM,cAAc,UAAU,IAAI,UAAQ,IAAI,WAAW,MAAM,KAAK,OAAO,CAAC;AAC5E,mBAAW,QAAQ,aAAa;AAC9B,cAAI,UAAU,IAAI,GAAG;AACnB,mBAAO,CAAC,IAAI;AAAA,UACd;AACA,mBAAS,IAAI,KAAK,OAAO,IAAI;AAAA,QAC/B;AACA,YAAI,SAAS,OAAO,KAAK,SAAS,IAAI,EAAE,GAAG;AACzC,mBAAS,OAAO,EAAE;AAAA,QACpB;AAEA,cAAM,SAAS,CAAC,GAAG,SAAS,OAAO,CAAC;AACpC,QAAAA,OAAM,IAAI,SAAS,MAAM;AACzB,eAAO;AAAA,MACT;AAAA,MAEA,WAAY,OAAO,SAAS;AAC1B,YAAI,EAAE,iBAAiB,SAAQ;AAC7B,gBAAM,IAAI,UAAU,qBAAqB;AAAA,QAC3C;AAEA,eAAO,KAAK,IAAI,KAAK,CAAC,oBAAoB;AACxC,iBACE,cAAc,iBAAiB,OAAO,KACtC,MAAM,IAAI,KAAK,CAAC,qBAAqB;AACnC,mBACE,cAAc,kBAAkB,OAAO,KACvC,gBAAgB,MAAM,CAAC,mBAAmB;AACxC,qBAAO,iBAAiB,MAAM,CAAC,oBAAoB;AACjD,uBAAO,eAAe,WAAW,iBAAiB,OAAO;AAAA,cAC3D,CAAC;AAAA,YACH,CAAC;AAAA,UAEL,CAAC;AAAA,QAEL,CAAC;AAAA,MACH;AAAA;AAAA,MAGA,KAAMC,UAAS;AACb,YAAI,CAACA,UAAS;AACZ,iBAAO;AAAA,QACT;AAEA,YAAI,OAAOA,aAAY,UAAU;AAC/B,cAAI;AACF,YAAAA,WAAU,IAAI,OAAOA,UAAS,KAAK,OAAO;AAAA,UAC5C,SAAS,IAAI;AACX,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,iBAAS,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,KAAK;AACxC,cAAI,QAAQ,KAAK,IAAI,CAAC,GAAGA,UAAS,KAAK,OAAO,GAAG;AAC/C,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAEjB,QAAM,MAAM;AACZ,QAAMD,SAAQ,IAAI,IAAI,EAAE,KAAK,IAAK,CAAC;AAEnC,QAAM,eAAe;AACrB,QAAM,aAAa;AACnB,QAAM,QAAQ;AACd,QAAM,SAAS;AACf,QAAM;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAM,EAAE,yBAAyB,WAAW,IAAI;AAEhD,QAAM,YAAY,OAAK,EAAE,UAAU;AACnC,QAAM,QAAQ,OAAK,EAAE,UAAU;AAI/B,QAAM,gBAAgB,CAAC,aAAa,YAAY;AAC9C,UAAI,SAAS;AACb,YAAM,uBAAuB,YAAY,MAAM;AAC/C,UAAI,iBAAiB,qBAAqB,IAAI;AAE9C,aAAO,UAAU,qBAAqB,QAAQ;AAC5C,iBAAS,qBAAqB,MAAM,CAAC,oBAAoB;AACvD,iBAAO,eAAe,WAAW,iBAAiB,OAAO;AAAA,QAC3D,CAAC;AAED,yBAAiB,qBAAqB,IAAI;AAAA,MAC5C;AAEA,aAAO;AAAA,IACT;AAKA,QAAM,kBAAkB,CAAC,MAAM,YAAY;AACzC,YAAM,QAAQ,MAAM,OAAO;AAC3B,aAAO,cAAc,MAAM,OAAO;AAClC,YAAM,SAAS,IAAI;AACnB,aAAO,cAAc,MAAM,OAAO;AAClC,YAAM,UAAU,IAAI;AACpB,aAAO,eAAe,MAAM,OAAO;AACnC,YAAM,UAAU,IAAI;AACpB,aAAO,aAAa,MAAM,OAAO;AACjC,YAAM,SAAS,IAAI;AACnB,aAAO;AAAA,IACT;AAEA,QAAM,MAAM,QAAM,CAAC,MAAM,GAAG,YAAY,MAAM,OAAO,OAAO;AAS5D,QAAM,gBAAgB,CAAC,MAAM,YAAY;AACvC,aAAO,KACJ,KAAK,EACL,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,EACnC,KAAK,GAAG;AAAA,IACb;AAEA,QAAM,eAAe,CAAC,MAAM,YAAY;AACtC,YAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,UAAU,IAAI,GAAG,EAAE,KAAK;AACvD,aAAO,KAAK,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,OAAO;AACzC,cAAM,SAAS,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE;AACnC,YAAI;AAEJ,YAAI,IAAI,CAAC,GAAG;AACV,gBAAM;AAAA,QACR,WAAW,IAAI,CAAC,GAAG;AACjB,gBAAM,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;AAAA,QAC7B,WAAW,IAAI,CAAC,GAAG;AAEjB,gBAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,QACrC,WAAW,IAAI;AACb,gBAAM,mBAAmB,EAAE;AAC3B,gBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,QAClB,OAAO;AAEL,gBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,QAClB;AAEA,cAAM,gBAAgB,GAAG;AACzB,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAUA,QAAM,gBAAgB,CAAC,MAAM,YAAY;AACvC,aAAO,KACJ,KAAK,EACL,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,EACnC,KAAK,GAAG;AAAA,IACb;AAEA,QAAM,eAAe,CAAC,MAAM,YAAY;AACtC,YAAM,SAAS,MAAM,OAAO;AAC5B,YAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,UAAU,IAAI,GAAG,EAAE,KAAK;AACvD,YAAM,IAAI,QAAQ,oBAAoB,OAAO;AAC7C,aAAO,KAAK,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,OAAO;AACzC,cAAM,SAAS,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE;AACnC,YAAI;AAEJ,YAAI,IAAI,CAAC,GAAG;AACV,gBAAM;AAAA,QACR,WAAW,IAAI,CAAC,GAAG;AACjB,gBAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AAAA,QACjC,WAAW,IAAI,CAAC,GAAG;AACjB,cAAI,MAAM,KAAK;AACb,kBAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,UACzC,OAAO;AACL,kBAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAAA,UACpC;AAAA,QACF,WAAW,IAAI;AACb,gBAAM,mBAAmB,EAAE;AAC3B,cAAI,MAAM,KAAK;AACb,gBAAI,MAAM,KAAK;AACb,oBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,YACvB,OAAO;AACL,oBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,YAClB;AAAA,UACF,OAAO;AACL,kBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAC1B,KAAK,CAAC,IAAI,CAAC;AAAA,UACb;AAAA,QACF,OAAO;AACL,gBAAM,OAAO;AACb,cAAI,MAAM,KAAK;AACb,gBAAI,MAAM,KAAK;AACb,oBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CACrB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,YAC3B,OAAO;AACL,oBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CACrB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,YACtB;AAAA,UACF,OAAO;AACL,kBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CACrB,KAAK,CAAC,IAAI,CAAC;AAAA,UACb;AAAA,QACF;AAEA,cAAM,gBAAgB,GAAG;AACzB,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAEA,QAAM,iBAAiB,CAAC,MAAM,YAAY;AACxC,YAAM,kBAAkB,MAAM,OAAO;AACrC,aAAO,KACJ,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,EACpC,KAAK,GAAG;AAAA,IACb;AAEA,QAAM,gBAAgB,CAAC,MAAM,YAAY;AACvC,aAAO,KAAK,KAAK;AACjB,YAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,WAAW,IAAI,GAAG,EAAE,MAAM;AACzD,aAAO,KAAK,QAAQ,GAAG,CAAC,KAAK,MAAM,GAAG,GAAG,GAAG,OAAO;AACjD,cAAM,UAAU,MAAM,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAC5C,cAAM,KAAK,IAAI,CAAC;AAChB,cAAM,KAAK,MAAM,IAAI,CAAC;AACtB,cAAM,KAAK,MAAM,IAAI,CAAC;AACtB,cAAM,OAAO;AAEb,YAAI,SAAS,OAAO,MAAM;AACxB,iBAAO;AAAA,QACT;AAIA,aAAK,QAAQ,oBAAoB,OAAO;AAExC,YAAI,IAAI;AACN,cAAI,SAAS,OAAO,SAAS,KAAK;AAEhC,kBAAM;AAAA,UACR,OAAO;AAEL,kBAAM;AAAA,UACR;AAAA,QACF,WAAW,QAAQ,MAAM;AAGvB,cAAI,IAAI;AACN,gBAAI;AAAA,UACN;AACA,cAAI;AAEJ,cAAI,SAAS,KAAK;AAGhB,mBAAO;AACP,gBAAI,IAAI;AACN,kBAAI,CAAC,IAAI;AACT,kBAAI;AACJ,kBAAI;AAAA,YACN,OAAO;AACL,kBAAI,CAAC,IAAI;AACT,kBAAI;AAAA,YACN;AAAA,UACF,WAAW,SAAS,MAAM;AAGxB,mBAAO;AACP,gBAAI,IAAI;AACN,kBAAI,CAAC,IAAI;AAAA,YACX,OAAO;AACL,kBAAI,CAAC,IAAI;AAAA,YACX;AAAA,UACF;AAEA,cAAI,SAAS,KAAK;AAChB,iBAAK;AAAA,UACP;AAEA,gBAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAAA,QAClC,WAAW,IAAI;AACb,gBAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;AAAA,QAClC,WAAW,IAAI;AACb,gBAAM,KAAK,CAAC,IAAI,CAAC,KAAK,EACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,QAClB;AAEA,cAAM,iBAAiB,GAAG;AAE1B,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAIA,QAAM,eAAe,CAAC,MAAM,YAAY;AACtC,YAAM,gBAAgB,MAAM,OAAO;AAEnC,aAAO,KACJ,KAAK,EACL,QAAQ,GAAG,EAAE,IAAI,GAAG,EAAE;AAAA,IAC3B;AAEA,QAAM,cAAc,CAAC,MAAM,YAAY;AACrC,YAAM,eAAe,MAAM,OAAO;AAClC,aAAO,KACJ,KAAK,EACL,QAAQ,GAAG,QAAQ,oBAAoB,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE;AAAA,IACnE;AAOA,QAAM,gBAAgB,WAAS,CAAC,IAC9B,MAAM,IAAI,IAAI,IAAI,KAAK,IACvB,IAAI,IAAI,IAAI,IAAI,KAAK,OAAO;AAC5B,UAAI,IAAI,EAAE,GAAG;AACX,eAAO;AAAA,MACT,WAAW,IAAI,EAAE,GAAG;AAClB,eAAO,KAAK,EAAE,OAAO,QAAQ,OAAO,EAAE;AAAA,MACxC,WAAW,IAAI,EAAE,GAAG;AAClB,eAAO,KAAK,EAAE,IAAI,EAAE,KAAK,QAAQ,OAAO,EAAE;AAAA,MAC5C,WAAW,KAAK;AACd,eAAO,KAAK,IAAI;AAAA,MAClB,OAAO;AACL,eAAO,KAAK,IAAI,GAAG,QAAQ,OAAO,EAAE;AAAA,MACtC;AAEA,UAAI,IAAI,EAAE,GAAG;AACX,aAAK;AAAA,MACP,WAAW,IAAI,EAAE,GAAG;AAClB,aAAK,IAAI,CAAC,KAAK,CAAC;AAAA,MAClB,WAAW,IAAI,EAAE,GAAG;AAClB,aAAK,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;AAAA,MACxB,WAAW,KAAK;AACd,aAAK,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG;AAAA,MACjC,WAAW,OAAO;AAChB,aAAK,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;AAAA,MAC9B,OAAO;AACL,aAAK,KAAK,EAAE;AAAA,MACd;AAEA,aAAO,GAAG,IAAI,IAAI,EAAE,GAAG,KAAK;AAAA,IAC9B;AAEA,QAAM,UAAU,CAAC,KAAKC,UAAS,YAAY;AACzC,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,YAAI,CAAC,IAAI,CAAC,EAAE,KAAKA,QAAO,GAAG;AACzB,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAIA,SAAQ,WAAW,UAAU,CAAC,QAAQ,mBAAmB;AAM3D,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,gBAAM,IAAI,CAAC,EAAE,MAAM;AACnB,cAAI,IAAI,CAAC,EAAE,WAAW,WAAW,KAAK;AACpC;AAAA,UACF;AAEA,cAAI,IAAI,CAAC,EAAE,OAAO,WAAW,SAAS,GAAG;AACvC,kBAAM,UAAU,IAAI,CAAC,EAAE;AACvB,gBAAI,QAAQ,UAAUA,SAAQ,SAC1B,QAAQ,UAAUA,SAAQ,SAC1B,QAAQ,UAAUA,SAAQ,OAAO;AACnC,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAGA,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC1hBA;AAAA;AAAA,QAAM,MAAM,OAAO,YAAY;AAE/B,QAAM,aAAN,MAAM,YAAW;AAAA,MACf,WAAW,MAAO;AAChB,eAAO;AAAA,MACT;AAAA,MAEA,YAAa,MAAM,SAAS;AAC1B,kBAAU,aAAa,OAAO;AAE9B,YAAI,gBAAgB,aAAY;AAC9B,cAAI,KAAK,UAAU,CAAC,CAAC,QAAQ,OAAO;AAClC,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO,KAAK;AAAA,UACd;AAAA,QACF;AAEA,eAAO,KAAK,KAAK,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG;AACxC,cAAM,cAAc,MAAM,OAAO;AACjC,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,QAAQ;AACvB,aAAK,MAAM,IAAI;AAEf,YAAI,KAAK,WAAW,KAAK;AACvB,eAAK,QAAQ;AAAA,QACf,OAAO;AACL,eAAK,QAAQ,KAAK,WAAW,KAAK,OAAO;AAAA,QAC3C;AAEA,cAAM,QAAQ,IAAI;AAAA,MACpB;AAAA,MAEA,MAAO,MAAM;AACX,cAAM,IAAI,KAAK,QAAQ,QAAQ,GAAG,EAAE,eAAe,IAAI,GAAG,EAAE,UAAU;AACtE,cAAM,IAAI,KAAK,MAAM,CAAC;AAEtB,YAAI,CAAC,GAAG;AACN,gBAAM,IAAI,UAAU,uBAAuB,IAAI,EAAE;AAAA,QACnD;AAEA,aAAK,WAAW,EAAE,CAAC,MAAM,SAAY,EAAE,CAAC,IAAI;AAC5C,YAAI,KAAK,aAAa,KAAK;AACzB,eAAK,WAAW;AAAA,QAClB;AAGA,YAAI,CAAC,EAAE,CAAC,GAAG;AACT,eAAK,SAAS;AAAA,QAChB,OAAO;AACL,eAAK,SAAS,IAAI,OAAO,EAAE,CAAC,GAAG,KAAK,QAAQ,KAAK;AAAA,QACnD;AAAA,MACF;AAAA,MAEA,WAAY;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,KAAMC,UAAS;AACb,cAAM,mBAAmBA,UAAS,KAAK,QAAQ,KAAK;AAEpD,YAAI,KAAK,WAAW,OAAOA,aAAY,KAAK;AAC1C,iBAAO;AAAA,QACT;AAEA,YAAI,OAAOA,aAAY,UAAU;AAC/B,cAAI;AACF,YAAAA,WAAU,IAAI,OAAOA,UAAS,KAAK,OAAO;AAAA,UAC5C,SAAS,IAAI;AACX,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO,IAAIA,UAAS,KAAK,UAAU,KAAK,QAAQ,KAAK,OAAO;AAAA,MAC9D;AAAA,MAEA,WAAY,MAAM,SAAS;AACzB,YAAI,EAAE,gBAAgB,cAAa;AACjC,gBAAM,IAAI,UAAU,0BAA0B;AAAA,QAChD;AAEA,YAAI,KAAK,aAAa,IAAI;AACxB,cAAI,KAAK,UAAU,IAAI;AACrB,mBAAO;AAAA,UACT;AACA,iBAAO,IAAI,MAAM,KAAK,OAAO,OAAO,EAAE,KAAK,KAAK,KAAK;AAAA,QACvD,WAAW,KAAK,aAAa,IAAI;AAC/B,cAAI,KAAK,UAAU,IAAI;AACrB,mBAAO;AAAA,UACT;AACA,iBAAO,IAAI,MAAM,KAAK,OAAO,OAAO,EAAE,KAAK,KAAK,MAAM;AAAA,QACxD;AAEA,kBAAU,aAAa,OAAO;AAG9B,YAAI,QAAQ,sBACT,KAAK,UAAU,cAAc,KAAK,UAAU,aAAa;AAC1D,iBAAO;AAAA,QACT;AACA,YAAI,CAAC,QAAQ,sBACV,KAAK,MAAM,WAAW,QAAQ,KAAK,KAAK,MAAM,WAAW,QAAQ,IAAI;AACtE,iBAAO;AAAA,QACT;AAGA,YAAI,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAClE,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAClE,iBAAO;AAAA,QACT;AAEA,YACG,KAAK,OAAO,YAAY,KAAK,OAAO,WACrC,KAAK,SAAS,SAAS,GAAG,KAAK,KAAK,SAAS,SAAS,GAAG,GAAG;AAC5D,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQ,OAAO,KAC5C,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAChE,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQ,OAAO,KAC5C,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAChE,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAEjB,QAAM,eAAe;AACrB,QAAM,EAAE,QAAQ,IAAI,EAAE,IAAI;AAC1B,QAAM,MAAM;AACZ,QAAM,QAAQ;AACd,QAAM,SAAS;AACf,QAAM,QAAQ;AAAA;AAAA;;;AC5Id;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,YAAY,CAACC,UAAS,OAAO,YAAY;AAC7C,UAAI;AACF,gBAAQ,IAAI,MAAM,OAAO,OAAO;AAAA,MAClC,SAAS,IAAI;AACX,eAAO;AAAA,MACT;AACA,aAAO,MAAM,KAAKA,QAAO;AAAA,IAC3B;AACA,WAAO,UAAU;AAAA;AAAA;;;ACTjB;AAAA;AAAA,QAAM,QAAQ;AAGd,QAAM,gBAAgB,CAAC,OAAO,YAC5B,IAAI,MAAM,OAAO,OAAO,EAAE,IACvB,IAAI,UAAQ,KAAK,IAAI,OAAK,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;AAEnE,WAAO,UAAU;AAAA;AAAA;;;ACPjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AAEd,QAAM,gBAAgB,CAAC,UAAU,OAAO,YAAY;AAClD,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI,WAAW;AACf,UAAI;AACF,mBAAW,IAAI,MAAM,OAAO,OAAO;AAAA,MACrC,SAAS,IAAI;AACX,eAAO;AAAA,MACT;AACA,eAAS,QAAQ,CAAC,MAAM;AACtB,YAAI,SAAS,KAAK,CAAC,GAAG;AAEpB,cAAI,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,IAAI;AAEnC,kBAAM;AACN,oBAAQ,IAAI,OAAO,KAAK,OAAO;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,QAAM,gBAAgB,CAAC,UAAU,OAAO,YAAY;AAClD,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI,WAAW;AACf,UAAI;AACF,mBAAW,IAAI,MAAM,OAAO,OAAO;AAAA,MACrC,SAAS,IAAI;AACX,eAAO;AAAA,MACT;AACA,eAAS,QAAQ,CAAC,MAAM;AACtB,YAAI,SAAS,KAAK,CAAC,GAAG;AAEpB,cAAI,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,GAAG;AAElC,kBAAM;AACN,oBAAQ,IAAI,OAAO,KAAK,OAAO;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACvBjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,QAAM,KAAK;AAEX,QAAM,aAAa,CAAC,OAAO,UAAU;AACnC,cAAQ,IAAI,MAAM,OAAO,KAAK;AAE9B,UAAI,SAAS,IAAI,OAAO,OAAO;AAC/B,UAAI,MAAM,KAAK,MAAM,GAAG;AACtB,eAAO;AAAA,MACT;AAEA,eAAS,IAAI,OAAO,SAAS;AAC7B,UAAI,MAAM,KAAK,MAAM,GAAG;AACtB,eAAO;AAAA,MACT;AAEA,eAAS;AACT,eAAS,IAAI,GAAG,IAAI,MAAM,IAAI,QAAQ,EAAE,GAAG;AACzC,cAAM,cAAc,MAAM,IAAI,CAAC;AAE/B,YAAI,SAAS;AACb,oBAAY,QAAQ,CAAC,eAAe;AAElC,gBAAM,UAAU,IAAI,OAAO,WAAW,OAAO,OAAO;AACpD,kBAAQ,WAAW,UAAU;AAAA,YAC3B,KAAK;AACH,kBAAI,QAAQ,WAAW,WAAW,GAAG;AACnC,wBAAQ;AAAA,cACV,OAAO;AACL,wBAAQ,WAAW,KAAK,CAAC;AAAA,cAC3B;AACA,sBAAQ,MAAM,QAAQ,OAAO;AAAA,YAE/B,KAAK;AAAA,YACL,KAAK;AACH,kBAAI,CAAC,UAAU,GAAG,SAAS,MAAM,GAAG;AAClC,yBAAS;AAAA,cACX;AACA;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAEH;AAAA,YAEF;AACE,oBAAM,IAAI,MAAM,yBAAyB,WAAW,QAAQ,EAAE;AAAA,UAClE;AAAA,QACF,CAAC;AACD,YAAI,WAAW,CAAC,UAAU,GAAG,QAAQ,MAAM,IAAI;AAC7C,mBAAS;AAAA,QACX;AAAA,MACF;AAEA,UAAI,UAAU,MAAM,KAAK,MAAM,GAAG;AAChC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;AC5DjB,IAAAC,iBAAA;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa,CAAC,OAAO,YAAY;AACrC,UAAI;AAGF,eAAO,IAAI,MAAM,OAAO,OAAO,EAAE,SAAS;AAAA,MAC5C,SAAS,IAAI;AACX,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,UAAU;AAAA;AAAA;;;ACVjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,aAAa;AACnB,QAAM,EAAE,IAAI,IAAI;AAChB,QAAM,QAAQ;AACd,QAAM,YAAY;AAClB,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,MAAM;AAEZ,QAAM,UAAU,CAACC,UAAS,OAAO,MAAM,YAAY;AACjD,MAAAA,WAAU,IAAI,OAAOA,UAAS,OAAO;AACrC,cAAQ,IAAI,MAAM,OAAO,OAAO;AAEhC,UAAI,MAAM,OAAO,MAAM,MAAM;AAC7B,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,iBAAO;AACP,kBAAQ;AACR,iBAAO;AACP,iBAAO;AACP,kBAAQ;AACR;AAAA,QACF,KAAK;AACH,iBAAO;AACP,kBAAQ;AACR,iBAAO;AACP,iBAAO;AACP,kBAAQ;AACR;AAAA,QACF;AACE,gBAAM,IAAI,UAAU,uCAAuC;AAAA,MAC/D;AAGA,UAAI,UAAUA,UAAS,OAAO,OAAO,GAAG;AACtC,eAAO;AAAA,MACT;AAKA,eAAS,IAAI,GAAG,IAAI,MAAM,IAAI,QAAQ,EAAE,GAAG;AACzC,cAAM,cAAc,MAAM,IAAI,CAAC;AAE/B,YAAI,OAAO;AACX,YAAI,MAAM;AAEV,oBAAY,QAAQ,CAAC,eAAe;AAClC,cAAI,WAAW,WAAW,KAAK;AAC7B,yBAAa,IAAI,WAAW,SAAS;AAAA,UACvC;AACA,iBAAO,QAAQ;AACf,gBAAM,OAAO;AACb,cAAI,KAAK,WAAW,QAAQ,KAAK,QAAQ,OAAO,GAAG;AACjD,mBAAO;AAAA,UACT,WAAW,KAAK,WAAW,QAAQ,IAAI,QAAQ,OAAO,GAAG;AACvD,kBAAM;AAAA,UACR;AAAA,QACF,CAAC;AAID,YAAI,KAAK,aAAa,QAAQ,KAAK,aAAa,OAAO;AACrD,iBAAO;AAAA,QACT;AAIA,aAAK,CAAC,IAAI,YAAY,IAAI,aAAa,SACnC,MAAMA,UAAS,IAAI,MAAM,GAAG;AAC9B,iBAAO;AAAA,QACT,WAAW,IAAI,aAAa,SAAS,KAAKA,UAAS,IAAI,MAAM,GAAG;AAC9D,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC/EjB;AAAA;AACA,QAAM,UAAU;AAChB,QAAM,MAAM,CAACC,UAAS,OAAO,YAAY,QAAQA,UAAS,OAAO,KAAK,OAAO;AAC7E,WAAO,UAAU;AAAA;AAAA;;;ACHjB;AAAA;AAAA,QAAM,UAAU;AAEhB,QAAM,MAAM,CAACC,UAAS,OAAO,YAAY,QAAQA,UAAS,OAAO,KAAK,OAAO;AAC7E,WAAO,UAAU;AAAA;AAAA;;;ACHjB;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa,CAAC,IAAI,IAAI,YAAY;AACtC,WAAK,IAAI,MAAM,IAAI,OAAO;AAC1B,WAAK,IAAI,MAAM,IAAI,OAAO;AAC1B,aAAO,GAAG,WAAW,IAAI,OAAO;AAAA,IAClC;AACA,WAAO,UAAU;AAAA;AAAA;;;ACNjB;AAAA;AAGA,QAAM,YAAY;AAClB,QAAM,UAAU;AAChB,WAAO,UAAU,CAAC,UAAU,OAAO,YAAY;AAC7C,YAAM,MAAM,CAAC;AACb,UAAI,QAAQ;AACZ,UAAI,OAAO;AACX,YAAM,IAAI,SAAS,KAAK,CAAC,GAAG,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC;AACxD,iBAAWC,YAAW,GAAG;AACvB,cAAM,WAAW,UAAUA,UAAS,OAAO,OAAO;AAClD,YAAI,UAAU;AACZ,iBAAOA;AACP,cAAI,CAAC,OAAO;AACV,oBAAQA;AAAA,UACV;AAAA,QACF,OAAO;AACL,cAAI,MAAM;AACR,gBAAI,KAAK,CAAC,OAAO,IAAI,CAAC;AAAA,UACxB;AACA,iBAAO;AACP,kBAAQ;AAAA,QACV;AAAA,MACF;AACA,UAAI,OAAO;AACT,YAAI,KAAK,CAAC,OAAO,IAAI,CAAC;AAAA,MACxB;AAEA,YAAM,SAAS,CAAC;AAChB,iBAAW,CAAC,KAAK,GAAG,KAAK,KAAK;AAC5B,YAAI,QAAQ,KAAK;AACf,iBAAO,KAAK,GAAG;AAAA,QACjB,WAAW,CAAC,OAAO,QAAQ,EAAE,CAAC,GAAG;AAC/B,iBAAO,KAAK,GAAG;AAAA,QACjB,WAAW,CAAC,KAAK;AACf,iBAAO,KAAK,KAAK,GAAG,EAAE;AAAA,QACxB,WAAW,QAAQ,EAAE,CAAC,GAAG;AACvB,iBAAO,KAAK,KAAK,GAAG,EAAE;AAAA,QACxB,OAAO;AACL,iBAAO,KAAK,GAAG,GAAG,MAAM,GAAG,EAAE;AAAA,QAC/B;AAAA,MACF;AACA,YAAM,aAAa,OAAO,KAAK,MAAM;AACrC,YAAM,WAAW,OAAO,MAAM,QAAQ,WAAW,MAAM,MAAM,OAAO,KAAK;AACzE,aAAO,WAAW,SAAS,SAAS,SAAS,aAAa;AAAA,IAC5D;AAAA;AAAA;;;AC9CA;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa;AACnB,QAAM,EAAE,IAAI,IAAI;AAChB,QAAM,YAAY;AAClB,QAAM,UAAU;AAsChB,QAAM,SAAS,CAAC,KAAK,KAAK,UAAU,CAAC,MAAM;AACzC,UAAI,QAAQ,KAAK;AACf,eAAO;AAAA,MACT;AAEA,YAAM,IAAI,MAAM,KAAK,OAAO;AAC5B,YAAM,IAAI,MAAM,KAAK,OAAO;AAC5B,UAAI,aAAa;AAEjB;AAAO,mBAAW,aAAa,IAAI,KAAK;AACtC,qBAAW,aAAa,IAAI,KAAK;AAC/B,kBAAM,QAAQ,aAAa,WAAW,WAAW,OAAO;AACxD,yBAAa,cAAc,UAAU;AACrC,gBAAI,OAAO;AACT,uBAAS;AAAA,YACX;AAAA,UACF;AAKA,cAAI,YAAY;AACd,mBAAO;AAAA,UACT;AAAA,QACF;AACA,aAAO;AAAA,IACT;AAEA,QAAM,+BAA+B,CAAC,IAAI,WAAW,WAAW,CAAC;AACjE,QAAM,iBAAiB,CAAC,IAAI,WAAW,SAAS,CAAC;AAEjD,QAAM,eAAe,CAAC,KAAK,KAAK,YAAY;AAC1C,UAAI,QAAQ,KAAK;AACf,eAAO;AAAA,MACT;AAEA,UAAI,IAAI,WAAW,KAAK,IAAI,CAAC,EAAE,WAAW,KAAK;AAC7C,YAAI,IAAI,WAAW,KAAK,IAAI,CAAC,EAAE,WAAW,KAAK;AAC7C,iBAAO;AAAA,QACT,WAAW,QAAQ,mBAAmB;AACpC,gBAAM;AAAA,QACR,OAAO;AACL,gBAAM;AAAA,QACR;AAAA,MACF;AAEA,UAAI,IAAI,WAAW,KAAK,IAAI,CAAC,EAAE,WAAW,KAAK;AAC7C,YAAI,QAAQ,mBAAmB;AAC7B,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM;AAAA,QACR;AAAA,MACF;AAEA,YAAM,QAAQ,oBAAI,IAAI;AACtB,UAAI,IAAI;AACR,iBAAW,KAAK,KAAK;AACnB,YAAI,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AAC7C,eAAK,SAAS,IAAI,GAAG,OAAO;AAAA,QAC9B,WAAW,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AACpD,eAAK,QAAQ,IAAI,GAAG,OAAO;AAAA,QAC7B,OAAO;AACL,gBAAM,IAAI,EAAE,MAAM;AAAA,QACpB;AAAA,MACF;AAEA,UAAI,MAAM,OAAO,GAAG;AAClB,eAAO;AAAA,MACT;AAEA,UAAI;AACJ,UAAI,MAAM,IAAI;AACZ,mBAAW,QAAQ,GAAG,QAAQ,GAAG,QAAQ,OAAO;AAChD,YAAI,WAAW,GAAG;AAChB,iBAAO;AAAA,QACT,WAAW,aAAa,MAAM,GAAG,aAAa,QAAQ,GAAG,aAAa,OAAO;AAC3E,iBAAO;AAAA,QACT;AAAA,MACF;AAGA,iBAAW,MAAM,OAAO;AACtB,YAAI,MAAM,CAAC,UAAU,IAAI,OAAO,EAAE,GAAG,OAAO,GAAG;AAC7C,iBAAO;AAAA,QACT;AAEA,YAAI,MAAM,CAAC,UAAU,IAAI,OAAO,EAAE,GAAG,OAAO,GAAG;AAC7C,iBAAO;AAAA,QACT;AAEA,mBAAW,KAAK,KAAK;AACnB,cAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,OAAO,GAAG;AACtC,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ;AACZ,UAAI,UAAU;AAGd,UAAI,eAAe,MACjB,CAAC,QAAQ,qBACT,GAAG,OAAO,WAAW,SAAS,GAAG,SAAS;AAC5C,UAAI,eAAe,MACjB,CAAC,QAAQ,qBACT,GAAG,OAAO,WAAW,SAAS,GAAG,SAAS;AAE5C,UAAI,gBAAgB,aAAa,WAAW,WAAW,KACnD,GAAG,aAAa,OAAO,aAAa,WAAW,CAAC,MAAM,GAAG;AAC3D,uBAAe;AAAA,MACjB;AAEA,iBAAW,KAAK,KAAK;AACnB,mBAAW,YAAY,EAAE,aAAa,OAAO,EAAE,aAAa;AAC5D,mBAAW,YAAY,EAAE,aAAa,OAAO,EAAE,aAAa;AAC5D,YAAI,IAAI;AACN,cAAI,cAAc;AAChB,gBAAI,EAAE,OAAO,cAAc,EAAE,OAAO,WAAW,UAC3C,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,OAAO;AACzC,6BAAe;AAAA,YACjB;AAAA,UACF;AACA,cAAI,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AAC7C,qBAAS,SAAS,IAAI,GAAG,OAAO;AAChC,gBAAI,WAAW,KAAK,WAAW,IAAI;AACjC,qBAAO;AAAA,YACT;AAAA,UACF,WAAW,GAAG,aAAa,QAAQ,CAAC,UAAU,GAAG,QAAQ,OAAO,CAAC,GAAG,OAAO,GAAG;AAC5E,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,IAAI;AACN,cAAI,cAAc;AAChB,gBAAI,EAAE,OAAO,cAAc,EAAE,OAAO,WAAW,UAC3C,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,OAAO;AACzC,6BAAe;AAAA,YACjB;AAAA,UACF;AACA,cAAI,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AAC7C,oBAAQ,QAAQ,IAAI,GAAG,OAAO;AAC9B,gBAAI,UAAU,KAAK,UAAU,IAAI;AAC/B,qBAAO;AAAA,YACT;AAAA,UACF,WAAW,GAAG,aAAa,QAAQ,CAAC,UAAU,GAAG,QAAQ,OAAO,CAAC,GAAG,OAAO,GAAG;AAC5E,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,CAAC,EAAE,aAAa,MAAM,OAAO,aAAa,GAAG;AAC/C,iBAAO;AAAA,QACT;AAAA,MACF;AAKA,UAAI,MAAM,YAAY,CAAC,MAAM,aAAa,GAAG;AAC3C,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,YAAY,CAAC,MAAM,aAAa,GAAG;AAC3C,eAAO;AAAA,MACT;AAKA,UAAI,gBAAgB,cAAc;AAChC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAGA,QAAM,WAAW,CAAC,GAAG,GAAG,YAAY;AAClC,UAAI,CAAC,GAAG;AACN,eAAO;AAAA,MACT;AACA,YAAM,OAAO,QAAQ,EAAE,QAAQ,EAAE,QAAQ,OAAO;AAChD,aAAO,OAAO,IAAI,IACd,OAAO,IAAI,IACX,EAAE,aAAa,OAAO,EAAE,aAAa,OAAO,IAC5C;AAAA,IACN;AAGA,QAAM,UAAU,CAAC,GAAG,GAAG,YAAY;AACjC,UAAI,CAAC,GAAG;AACN,eAAO;AAAA,MACT;AACA,YAAM,OAAO,QAAQ,EAAE,QAAQ,EAAE,QAAQ,OAAO;AAChD,aAAO,OAAO,IAAI,IACd,OAAO,IAAI,IACX,EAAE,aAAa,OAAO,EAAE,aAAa,OAAO,IAC5C;AAAA,IACN;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACtPjB,IAAAC,kBAAA;AAAA;AACA,QAAM,aAAa;AACnB,QAAMC,aAAY;AAClB,QAAM,SAAS;AACf,QAAM,cAAc;AACpB,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,MAAM;AACZ,QAAM,OAAO;AACb,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,aAAa;AACnB,QAAM,UAAU;AAChB,QAAM,WAAW;AACjB,QAAM,eAAe;AACrB,QAAM,eAAe;AACrB,QAAM,OAAO;AACb,QAAM,QAAQ;AACd,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,SAAS;AACf,QAAM,aAAa;AACnB,QAAM,QAAQ;AACd,QAAM,YAAY;AAClB,QAAM,gBAAgB;AACtB,QAAM,gBAAgB;AACtB,QAAM,gBAAgB;AACtB,QAAM,aAAa;AACnB,QAAM,aAAa;AACnB,QAAM,UAAU;AAChB,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,aAAa;AACnB,QAAM,gBAAgB;AACtB,QAAM,SAAS;AACf,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI,WAAW;AAAA,MACf,KAAK,WAAW;AAAA,MAChB,QAAQ,WAAW;AAAA,MACnB,qBAAqBA,WAAU;AAAA,MAC/B,eAAeA,WAAU;AAAA,MACzB,oBAAoB,YAAY;AAAA,MAChC,qBAAqB,YAAY;AAAA,IACnC;AAAA;AAAA;;;ACxFA;AAAA;AAAA,WAAO,UAAU;AACjB,UAAM,OAAO;AAEb,QAAIC,MAAK,UAAQ,IAAI;AAErB,aAAS,aAAcC,OAAM,SAAS;AACpC,UAAI,UAAU,QAAQ,YAAY,SAChC,QAAQ,UAAU,QAAQ,IAAI;AAEhC,UAAI,CAAC,SAAS;AACZ,eAAO;AAAA,MACT;AAEA,gBAAU,QAAQ,MAAM,GAAG;AAC3B,UAAI,QAAQ,QAAQ,EAAE,MAAM,IAAI;AAC9B,eAAO;AAAA,MACT;AACA,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,YAAI,IAAI,QAAQ,CAAC,EAAE,YAAY;AAC/B,YAAI,KAAKA,MAAK,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,MAAM,GAAG;AACnD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,aAAS,UAAW,MAAMA,OAAM,SAAS;AACvC,UAAI,CAAC,KAAK,eAAe,KAAK,CAAC,KAAK,OAAO,GAAG;AAC5C,eAAO;AAAA,MACT;AACA,aAAO,aAAaA,OAAM,OAAO;AAAA,IACnC;AAEA,aAAS,MAAOA,OAAM,SAAS,IAAI;AACjC,MAAAD,IAAG,KAAKC,OAAM,SAAU,IAAI,MAAM;AAChC,WAAG,IAAI,KAAK,QAAQ,UAAU,MAAMA,OAAM,OAAO,CAAC;AAAA,MACpD,CAAC;AAAA,IACH;AAEA,aAAS,KAAMA,OAAM,SAAS;AAC5B,aAAO,UAAUD,IAAG,SAASC,KAAI,GAAGA,OAAM,OAAO;AAAA,IACnD;AAAA;AAAA;;;ACzCA;AAAA;AAAA,WAAO,UAAU;AACjB,UAAM,OAAO;AAEb,QAAIC,MAAK,UAAQ,IAAI;AAErB,aAAS,MAAOC,OAAM,SAAS,IAAI;AACjC,MAAAD,IAAG,KAAKC,OAAM,SAAU,IAAI,MAAM;AAChC,WAAG,IAAI,KAAK,QAAQ,UAAU,MAAM,OAAO,CAAC;AAAA,MAC9C,CAAC;AAAA,IACH;AAEA,aAAS,KAAMA,OAAM,SAAS;AAC5B,aAAO,UAAUD,IAAG,SAASC,KAAI,GAAG,OAAO;AAAA,IAC7C;AAEA,aAAS,UAAW,MAAM,SAAS;AACjC,aAAO,KAAK,OAAO,KAAK,UAAU,MAAM,OAAO;AAAA,IACjD;AAEA,aAAS,UAAW,MAAM,SAAS;AACjC,UAAI,MAAM,KAAK;AACf,UAAI,MAAM,KAAK;AACf,UAAI,MAAM,KAAK;AAEf,UAAI,QAAQ,QAAQ,QAAQ,SAC1B,QAAQ,MAAM,QAAQ,UAAU,QAAQ,OAAO;AACjD,UAAI,QAAQ,QAAQ,QAAQ,SAC1B,QAAQ,MAAM,QAAQ,UAAU,QAAQ,OAAO;AAEjD,UAAI,IAAI,SAAS,OAAO,CAAC;AACzB,UAAI,IAAI,SAAS,OAAO,CAAC;AACzB,UAAI,IAAI,SAAS,OAAO,CAAC;AACzB,UAAI,KAAK,IAAI;AAEb,UAAI,MAAO,MAAM,KACd,MAAM,KAAM,QAAQ,SACpB,MAAM,KAAM,QAAQ,SACpB,MAAM,MAAO,UAAU;AAE1B,aAAO;AAAA,IACT;AAAA;AAAA;;;ACxCA;AAAA;AAAA,QAAIC,MAAK,UAAQ,IAAI;AACrB,QAAI;AACJ,QAAI,QAAQ,aAAa,WAAW,OAAO,iBAAiB;AAC1D,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AACjB,UAAM,OAAO;AAEb,aAAS,MAAOC,OAAM,SAAS,IAAI;AACjC,UAAI,OAAO,YAAY,YAAY;AACjC,aAAK;AACL,kBAAU,CAAC;AAAA,MACb;AAEA,UAAI,CAAC,IAAI;AACP,YAAI,OAAO,YAAY,YAAY;AACjC,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAEA,eAAO,IAAI,QAAQ,SAAU,SAAS,QAAQ;AAC5C,gBAAMA,OAAM,WAAW,CAAC,GAAG,SAAU,IAAI,IAAI;AAC3C,gBAAI,IAAI;AACN,qBAAO,EAAE;AAAA,YACX,OAAO;AACL,sBAAQ,EAAE;AAAA,YACZ;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAEA,WAAKA,OAAM,WAAW,CAAC,GAAG,SAAU,IAAI,IAAI;AAE1C,YAAI,IAAI;AACN,cAAI,GAAG,SAAS,YAAY,WAAW,QAAQ,cAAc;AAC3D,iBAAK;AACL,iBAAK;AAAA,UACP;AAAA,QACF;AACA,WAAG,IAAI,EAAE;AAAA,MACX,CAAC;AAAA,IACH;AAEA,aAAS,KAAMA,OAAM,SAAS;AAE5B,UAAI;AACF,eAAO,KAAK,KAAKA,OAAM,WAAW,CAAC,CAAC;AAAA,MACtC,SAAS,IAAI;AACX,YAAI,WAAW,QAAQ,gBAAgB,GAAG,SAAS,UAAU;AAC3D,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACxDA;AAAA;AAAA,QAAM,YAAY,QAAQ,aAAa,WACnC,QAAQ,IAAI,WAAW,YACvB,QAAQ,IAAI,WAAW;AAE3B,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,QAAQ,YAAY,MAAM;AAChC,QAAM,QAAQ;AAEd,QAAM,mBAAmB,CAAC,QACxB,OAAO,OAAO,IAAI,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAElE,QAAM,cAAc,CAAC,KAAK,QAAQ;AAChC,YAAM,QAAQ,IAAI,SAAS;AAI3B,YAAM,UAAU,IAAI,MAAM,IAAI,KAAK,aAAa,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,IAEjE;AAAA;AAAA,QAEE,GAAI,YAAY,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC;AAAA,QACnC,IAAI,IAAI,QAAQ,QAAQ,IAAI;AAAA,QACe,IAAI,MAAM,KAAK;AAAA,MAC5D;AAEJ,YAAM,aAAa,YACf,IAAI,WAAW,QAAQ,IAAI,WAAW,wBACtC;AACJ,YAAM,UAAU,YAAY,WAAW,MAAM,KAAK,IAAI,CAAC,EAAE;AAEzD,UAAI,WAAW;AACb,YAAI,IAAI,QAAQ,GAAG,MAAM,MAAM,QAAQ,CAAC,MAAM;AAC5C,kBAAQ,QAAQ,EAAE;AAAA,MACtB;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAM,QAAQ,CAAC,KAAK,KAAK,OAAO;AAC9B,UAAI,OAAO,QAAQ,YAAY;AAC7B,aAAK;AACL,cAAM,CAAC;AAAA,MACT;AACA,UAAI,CAAC;AACH,cAAM,CAAC;AAET,YAAM,EAAE,SAAS,SAAS,WAAW,IAAI,YAAY,KAAK,GAAG;AAC7D,YAAM,QAAQ,CAAC;AAEf,YAAM,OAAO,OAAK,IAAI,QAAQ,CAAC,SAAS,WAAW;AACjD,YAAI,MAAM,QAAQ;AAChB,iBAAO,IAAI,OAAO,MAAM,SAAS,QAAQ,KAAK,IAC1C,OAAO,iBAAiB,GAAG,CAAC;AAElC,cAAM,QAAQ,QAAQ,CAAC;AACvB,cAAM,WAAW,SAAS,KAAK,KAAK,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI;AAE7D,cAAM,OAAOA,MAAK,KAAK,UAAU,GAAG;AACpC,cAAM,IAAI,CAAC,YAAY,YAAY,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,OAC7D;AAEJ,gBAAQ,QAAQ,GAAG,GAAG,CAAC,CAAC;AAAA,MAC1B,CAAC;AAED,YAAM,UAAU,CAAC,GAAG,GAAG,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC7D,YAAI,OAAO,QAAQ;AACjB,iBAAO,QAAQ,KAAK,IAAI,CAAC,CAAC;AAC5B,cAAM,MAAM,QAAQ,EAAE;AACtB,cAAM,IAAI,KAAK,EAAE,SAAS,WAAW,GAAG,CAAC,IAAI,OAAO;AAClD,cAAI,CAAC,MAAM,IAAI;AACb,gBAAI,IAAI;AACN,oBAAM,KAAK,IAAI,GAAG;AAAA;AAElB,qBAAO,QAAQ,IAAI,GAAG;AAAA,UAC1B;AACA,iBAAO,QAAQ,QAAQ,GAAG,GAAG,KAAK,CAAC,CAAC;AAAA,QACtC,CAAC;AAAA,MACH,CAAC;AAED,aAAO,KAAK,KAAK,CAAC,EAAE,KAAK,SAAO,GAAG,MAAM,GAAG,GAAG,EAAE,IAAI,KAAK,CAAC;AAAA,IAC7D;AAEA,QAAM,YAAY,CAAC,KAAK,QAAQ;AAC9B,YAAM,OAAO,CAAC;AAEd,YAAM,EAAE,SAAS,SAAS,WAAW,IAAI,YAAY,KAAK,GAAG;AAC7D,YAAM,QAAQ,CAAC;AAEf,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAM;AACxC,cAAM,QAAQ,QAAQ,CAAC;AACvB,cAAM,WAAW,SAAS,KAAK,KAAK,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI;AAE7D,cAAM,OAAOA,MAAK,KAAK,UAAU,GAAG;AACpC,cAAM,IAAI,CAAC,YAAY,YAAY,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,OAC7D;AAEJ,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAM;AACxC,gBAAM,MAAM,IAAI,QAAQ,CAAC;AACzB,cAAI;AACF,kBAAM,KAAK,MAAM,KAAK,KAAK,EAAE,SAAS,WAAW,CAAC;AAClD,gBAAI,IAAI;AACN,kBAAI,IAAI;AACN,sBAAM,KAAK,GAAG;AAAA;AAEd,uBAAO;AAAA,YACX;AAAA,UACF,SAAS,IAAI;AAAA,UAAC;AAAA,QAChB;AAAA,MACF;AAEA,UAAI,IAAI,OAAO,MAAM;AACnB,eAAO;AAET,UAAI,IAAI;AACN,eAAO;AAET,YAAM,iBAAiB,GAAG;AAAA,IAC5B;AAEA,WAAO,UAAU;AACjB,UAAM,OAAO;AAAA;AAAA;;;AC5Hb;AAAA;AAAA;AAEA,QAAMC,WAAU,CAAC,UAAU,CAAC,MAAM;AACjC,YAAM,cAAc,QAAQ,OAAO,QAAQ;AAC3C,YAAM,WAAW,QAAQ,YAAY,QAAQ;AAE7C,UAAI,aAAa,SAAS;AACzB,eAAO;AAAA,MACR;AAEA,aAAO,OAAO,KAAK,WAAW,EAAE,QAAQ,EAAE,KAAK,SAAO,IAAI,YAAY,MAAM,MAAM,KAAK;AAAA,IACxF;AAEA,WAAO,UAAUA;AAEjB,WAAO,QAAQ,UAAUA;AAAA;AAAA;;;ACfzB;AAAA;AAAA;AAEA,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,QAAQ;AACd,QAAM,aAAa;AAEnB,aAAS,sBAAsB,QAAQ,gBAAgB;AACnD,YAAM,MAAM,OAAO,QAAQ,OAAO,QAAQ;AAC1C,YAAM,MAAM,QAAQ,IAAI;AACxB,YAAM,eAAe,OAAO,QAAQ,OAAO;AAE3C,YAAM,kBAAkB,gBAAgB,QAAQ,UAAU,UAAa,CAAC,QAAQ,MAAM;AAItF,UAAI,iBAAiB;AACjB,YAAI;AACA,kBAAQ,MAAM,OAAO,QAAQ,GAAG;AAAA,QACpC,SAAS,KAAK;AAAA,QAEd;AAAA,MACJ;AAEA,UAAI;AAEJ,UAAI;AACA,mBAAW,MAAM,KAAK,OAAO,SAAS;AAAA,UAClC,MAAM,IAAI,WAAW,EAAE,IAAI,CAAC,CAAC;AAAA,UAC7B,SAAS,iBAAiBA,MAAK,YAAY;AAAA,QAC/C,CAAC;AAAA,MACL,SAAS,GAAG;AAAA,MAEZ,UAAE;AACE,YAAI,iBAAiB;AACjB,kBAAQ,MAAM,GAAG;AAAA,QACrB;AAAA,MACJ;AAIA,UAAI,UAAU;AACV,mBAAWA,MAAK,QAAQ,eAAe,OAAO,QAAQ,MAAM,IAAI,QAAQ;AAAA,MAC5E;AAEA,aAAO;AAAA,IACX;AAEA,aAAS,eAAe,QAAQ;AAC5B,aAAO,sBAAsB,MAAM,KAAK,sBAAsB,QAAQ,IAAI;AAAA,IAC9E;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACnDjB;AAAA;AAAA;AAGA,QAAM,kBAAkB;AAExB,aAAS,cAAc,KAAK;AAExB,YAAM,IAAI,QAAQ,iBAAiB,KAAK;AAExC,aAAO;AAAA,IACX;AAEA,aAAS,eAAe,KAAK,uBAAuB;AAEhD,YAAM,GAAG,GAAG;AAMZ,YAAM,IAAI,QAAQ,WAAW,SAAS;AAKtC,YAAM,IAAI,QAAQ,UAAU,MAAM;AAKlC,YAAM,IAAI,GAAG;AAGb,YAAM,IAAI,QAAQ,iBAAiB,KAAK;AAGxC,UAAI,uBAAuB;AACvB,cAAM,IAAI,QAAQ,iBAAiB,KAAK;AAAA,MAC5C;AAEA,aAAO;AAAA,IACX;AAEA,WAAO,QAAQ,UAAU;AACzB,WAAO,QAAQ,WAAW;AAAA;AAAA;;;AC5C1B;AAAA;AAAA;AACA,WAAO,UAAU;AAAA;AAAA;;;ACDjB;AAAA;AAAA;AACA,QAAM,eAAe;AAErB,WAAO,UAAU,CAAC,SAAS,OAAO;AACjC,YAAMC,SAAQ,OAAO,MAAM,YAAY;AAEvC,UAAI,CAACA,QAAO;AACX,eAAO;AAAA,MACR;AAEA,YAAM,CAACC,OAAM,QAAQ,IAAID,OAAM,CAAC,EAAE,QAAQ,QAAQ,EAAE,EAAE,MAAM,GAAG;AAC/D,YAAM,SAASC,MAAK,MAAM,GAAG,EAAE,IAAI;AAEnC,UAAI,WAAW,OAAO;AACrB,eAAO;AAAA,MACR;AAEA,aAAO,WAAW,GAAG,MAAM,IAAI,QAAQ,KAAK;AAAA,IAC7C;AAAA;AAAA;;;AClBA;AAAA;AAAA;AAEA,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAM,iBAAiB;AAEvB,aAAS,YAAY,SAAS;AAE1B,YAAM,OAAO;AACb,YAAM,SAAS,OAAO,MAAM,IAAI;AAEhC,UAAI;AAEJ,UAAI;AACA,aAAKA,IAAG,SAAS,SAAS,GAAG;AAC7B,QAAAA,IAAG,SAAS,IAAI,QAAQ,GAAG,MAAM,CAAC;AAClC,QAAAA,IAAG,UAAU,EAAE;AAAA,MACnB,SAAS,GAAG;AAAA,MAAc;AAG1B,aAAO,eAAe,OAAO,SAAS,CAAC;AAAA,IAC3C;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACtBjB,IAAAC,iBAAA;AAAA;AAAA;AAEA,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,iBAAiB;AACvB,QAAMC,UAAS;AACf,QAAM,cAAc;AAEpB,QAAM,QAAQ,QAAQ,aAAa;AACnC,QAAM,qBAAqB;AAC3B,QAAM,kBAAkB;AAExB,aAAS,cAAc,QAAQ;AAC3B,aAAO,OAAO,eAAe,MAAM;AAEnC,YAAM,UAAU,OAAO,QAAQ,YAAY,OAAO,IAAI;AAEtD,UAAI,SAAS;AACT,eAAO,KAAK,QAAQ,OAAO,IAAI;AAC/B,eAAO,UAAU;AAEjB,eAAO,eAAe,MAAM;AAAA,MAChC;AAEA,aAAO,OAAO;AAAA,IAClB;AAEA,aAAS,cAAc,QAAQ;AAC3B,UAAI,CAAC,OAAO;AACR,eAAO;AAAA,MACX;AAGA,YAAM,cAAc,cAAc,MAAM;AAGxC,YAAM,aAAa,CAAC,mBAAmB,KAAK,WAAW;AAIvD,UAAI,OAAO,QAAQ,cAAc,YAAY;AAKzC,cAAM,6BAA6B,gBAAgB,KAAK,WAAW;AAInE,eAAO,UAAUD,MAAK,UAAU,OAAO,OAAO;AAG9C,eAAO,UAAUC,QAAO,QAAQ,OAAO,OAAO;AAC9C,eAAO,OAAO,OAAO,KAAK,IAAI,CAAC,QAAQA,QAAO,SAAS,KAAK,0BAA0B,CAAC;AAEvF,cAAM,eAAe,CAAC,OAAO,OAAO,EAAE,OAAO,OAAO,IAAI,EAAE,KAAK,GAAG;AAElE,eAAO,OAAO,CAAC,MAAM,MAAM,MAAM,IAAI,YAAY,GAAG;AACpD,eAAO,UAAU,QAAQ,IAAI,WAAW;AACxC,eAAO,QAAQ,2BAA2B;AAAA,MAC9C;AAEA,aAAO;AAAA,IACX;AAEA,aAAS,MAAM,SAAS,MAAM,SAAS;AAEnC,UAAI,QAAQ,CAAC,MAAM,QAAQ,IAAI,GAAG;AAC9B,kBAAU;AACV,eAAO;AAAA,MACX;AAEA,aAAO,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC;AAC/B,gBAAU,OAAO,OAAO,CAAC,GAAG,OAAO;AAGnC,YAAM,SAAS;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,UAAU;AAAA,UACN;AAAA,UACA;AAAA,QACJ;AAAA,MACJ;AAGA,aAAO,QAAQ,QAAQ,SAAS,cAAc,MAAM;AAAA,IACxD;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC1FjB;AAAA;AAAA;AAEA,QAAM,QAAQ,QAAQ,aAAa;AAEnC,aAAS,cAAc,UAAU,SAAS;AACtC,aAAO,OAAO,OAAO,IAAI,MAAM,GAAG,OAAO,IAAI,SAAS,OAAO,SAAS,GAAG;AAAA,QACrE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,SAAS,GAAG,OAAO,IAAI,SAAS,OAAO;AAAA,QACvC,MAAM,SAAS;AAAA,QACf,WAAW,SAAS;AAAA,MACxB,CAAC;AAAA,IACL;AAEA,aAAS,iBAAiB,IAAI,QAAQ;AAClC,UAAI,CAAC,OAAO;AACR;AAAA,MACJ;AAEA,YAAM,eAAe,GAAG;AAExB,SAAG,OAAO,SAAU,MAAM,MAAM;AAI5B,YAAI,SAAS,QAAQ;AACjB,gBAAM,MAAM,aAAa,MAAM,QAAQ,OAAO;AAE9C,cAAI,KAAK;AACL,mBAAO,aAAa,KAAK,IAAI,SAAS,GAAG;AAAA,UAC7C;AAAA,QACJ;AAEA,eAAO,aAAa,MAAM,IAAI,SAAS;AAAA,MAC3C;AAAA,IACJ;AAEA,aAAS,aAAa,QAAQ,QAAQ;AAClC,UAAI,SAAS,WAAW,KAAK,CAAC,OAAO,MAAM;AACvC,eAAO,cAAc,OAAO,UAAU,OAAO;AAAA,MACjD;AAEA,aAAO;AAAA,IACX;AAEA,aAAS,iBAAiB,QAAQ,QAAQ;AACtC,UAAI,SAAS,WAAW,KAAK,CAAC,OAAO,MAAM;AACvC,eAAO,cAAc,OAAO,UAAU,WAAW;AAAA,MACrD;AAEA,aAAO;AAAA,IACX;AAEA,WAAO,UAAU;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA;AAAA;;;AC1DA;AAAA;AAAA;AAEA,QAAM,KAAK,UAAQ,eAAe;AAClC,QAAM,QAAQ;AACd,QAAM,SAAS;AAEf,aAAS,MAAM,SAAS,MAAM,SAAS;AAEnC,YAAM,SAAS,MAAM,SAAS,MAAM,OAAO;AAG3C,YAAM,UAAU,GAAG,MAAM,OAAO,SAAS,OAAO,MAAM,OAAO,OAAO;AAIpE,aAAO,iBAAiB,SAAS,MAAM;AAEvC,aAAO;AAAA,IACX;AAEA,aAAS,UAAU,SAAS,MAAM,SAAS;AAEvC,YAAM,SAAS,MAAM,SAAS,MAAM,OAAO;AAG3C,YAAM,SAAS,GAAG,UAAU,OAAO,SAAS,OAAO,MAAM,OAAO,OAAO;AAGvE,aAAO,QAAQ,OAAO,SAAS,OAAO,iBAAiB,OAAO,QAAQ,MAAM;AAE5E,aAAO;AAAA,IACX;AAEA,WAAO,UAAU;AACjB,WAAO,QAAQ,QAAQ;AACvB,WAAO,QAAQ,OAAO;AAEtB,WAAO,QAAQ,SAAS;AACxB,WAAO,QAAQ,UAAU;AAAA;AAAA;;;ACtCzB;AAAA;AAAA;AAEA,QAAM,EAAE,YAAY,IAAI,UAAQ,QAAQ;AAExC,WAAO,UAAU,WAA0B;AACzC,UAAI,UAAU,CAAC;AACf,UAAI,SAAU,IAAI,YAAY,EAAC,YAAY,KAAI,CAAC;AAEhD,aAAO,gBAAgB,CAAC;AAExB,aAAO,MAAM;AACb,aAAO,UAAUC;AAEjB,aAAO,GAAG,UAAU,MAAM;AAE1B,YAAM,UAAU,MAAM,KAAK,SAAS,EAAE,QAAQ,GAAG;AAEjD,aAAO;AAEP,eAAS,IAAK,QAAQ;AACpB,YAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,iBAAO,QAAQ,GAAG;AAClB,iBAAO;AAAA,QACT;AAEA,gBAAQ,KAAK,MAAM;AACnB,eAAO,KAAK,OAAO,OAAO,KAAK,MAAM,MAAM,CAAC;AAC5C,eAAO,KAAK,SAAS,OAAO,KAAK,KAAK,QAAQ,OAAO,CAAC;AACtD,eAAO,KAAK,QAAQ,EAAC,KAAK,MAAK,CAAC;AAChC,eAAO;AAAA,MACT;AAEA,eAASA,WAAW;AAClB,eAAO,QAAQ,UAAU;AAAA,MAC3B;AAEA,eAAS,OAAQ,QAAQ;AACvB,kBAAU,QAAQ,OAAO,SAAU,IAAI;AAAE,iBAAO,OAAO;AAAA,QAAO,CAAC;AAC/D,YAAI,CAAC,QAAQ,UAAU,OAAO,UAAU;AAAE,iBAAO,IAAI;AAAA,QAAE;AAAA,MACzD;AAAA,IACF;AAAA;AAAA;;;ACnCA,sBAA+B;AAH/B,SAAS,YAAY,qBAAAC,oBAAmB,gBAAAC,eAAc,YAAYC,WAAU;AAC5E,OAAOC,WAAU;AACjB,SAAS,iBAAAC,sBAAqB;;;ACJ9B,OAAOC,WAAU;;;ACAjB,OAAOC,cAAa;AACpB,OAAO,UAAU;AACjB,OAAO,MAAK,YAAY,kBAAiB;AACzC,SAAQ,qBAAoB;;;ACE5B,IAAM,OAAN,MAAW;AAAA,EACV;AAAA,EACA;AAAA,EAEA,YAAY,OAAO;AAClB,SAAK,QAAQ;AAAA,EACd;AACD;AAZA;AAcA,IAAqB,QAArB,MAA2B;AAAA,EAK1B,cAAc;AAJd;AACA;AACA;AAGC,SAAK,MAAM;AAAA,EACZ;AAAA,EAEA,QAAQ,OAAO;AACd,UAAM,OAAO,IAAI,KAAK,KAAK;AAE3B,QAAI,mBAAK,QAAO;AACf,yBAAK,OAAM,OAAO;AAClB,yBAAK,OAAQ;AAAA,IACd,OAAO;AACN,yBAAK,OAAQ;AACb,yBAAK,OAAQ;AAAA,IACd;AAEA,2BAAK,OAAL;AAAA,EACD;AAAA,EAEA,UAAU;AACT,UAAM,UAAU,mBAAK;AACrB,QAAI,CAAC,SAAS;AACb;AAAA,IACD;AAEA,uBAAK,OAAQ,mBAAK,OAAM;AACxB,2BAAK,OAAL;AACA,WAAO,QAAQ;AAAA,EAChB;AAAA,EAEA,QAAQ;AACP,uBAAK,OAAQ;AACb,uBAAK,OAAQ;AACb,uBAAK,OAAQ;AAAA,EACd;AAAA,EAEA,IAAI,OAAO;AACV,WAAO,mBAAK;AAAA,EACb;AAAA,EAEA,EAAG,OAAO,QAAQ,IAAI;AACrB,QAAI,UAAU,mBAAK;AAEnB,WAAO,SAAS;AACf,YAAM,QAAQ;AACd,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AACD;AAnDC;AACA;AACA;;;ACfc,SAAR,OAAwB,aAAa;AAC3C,MAAI,GAAG,OAAO,UAAU,WAAW,KAAK,gBAAgB,OAAO,sBAAsB,cAAc,IAAI;AACtG,UAAM,IAAI,UAAU,qDAAqD;AAAA,EAC1E;AAEA,QAAM,QAAQ,IAAI,MAAM;AACxB,MAAI,cAAc;AAElB,QAAM,OAAO,MAAM;AAClB;AAEA,QAAI,MAAM,OAAO,GAAG;AACnB,YAAM,QAAQ,EAAE;AAAA,IACjB;AAAA,EACD;AAEA,QAAMC,OAAM,OAAO,IAAI,SAAS,SAAS;AACxC;AAEA,UAAM,UAAU,YAAY,GAAG,GAAG,IAAI,GAAG;AAEzC,YAAQ,MAAM;AAEd,QAAI;AACH,YAAM;AAAA,IACP,QAAQ;AAAA,IAAC;AAET,SAAK;AAAA,EACN;AAEA,QAAM,UAAU,CAAC,IAAI,SAAS,SAAS;AACtC,UAAM,QAAQA,KAAI,KAAK,QAAW,IAAI,SAAS,IAAI,CAAC;AAEpD,KAAC,YAAY;AAKZ,YAAM,QAAQ,QAAQ;AAEtB,UAAI,cAAc,eAAe,MAAM,OAAO,GAAG;AAChD,cAAM,QAAQ,EAAE;AAAA,MACjB;AAAA,IACD,GAAG;AAAA,EACJ;AAEA,QAAM,YAAY,CAAC,OAAO,SAAS,IAAI,QAAQ,aAAW;AACzD,YAAQ,IAAI,SAAS,IAAI;AAAA,EAC1B,CAAC;AAED,SAAO,iBAAiB,WAAW;AAAA,IAClC,aAAa;AAAA,MACZ,KAAK,MAAM;AAAA,IACZ;AAAA,IACA,cAAc;AAAA,MACb,KAAK,MAAM,MAAM;AAAA,IAClB;AAAA,IACA,YAAY;AAAA,MACX,OAAO,MAAM;AACZ,cAAM,MAAM;AAAA,MACb;AAAA,IACD;AAAA,EACD,CAAC;AAED,SAAO;AACR;;;ACjEA,IAAM,WAAN,cAAuB,MAAM;AAAA,EAC5B,YAAY,OAAO;AAClB,UAAM;AACN,SAAK,QAAQ;AAAA,EACd;AACD;AAGA,IAAM,cAAc,OAAO,SAAS,WAAW,OAAO,MAAM,OAAO;AAGnE,IAAM,SAAS,OAAM,YAAW;AAC/B,QAAM,SAAS,MAAM,QAAQ,IAAI,OAAO;AACxC,MAAI,OAAO,CAAC,MAAM,MAAM;AACvB,UAAM,IAAI,SAAS,OAAO,CAAC,CAAC;AAAA,EAC7B;AAEA,SAAO;AACR;AAEA,eAAO,QACN,UACA,QACA;AAAA,EACC,cAAc,OAAO;AAAA,EACrB,gBAAgB;AACjB,IAAI,CAAC,GACJ;AACD,QAAM,QAAQ,OAAO,WAAW;AAGhC,QAAM,QAAQ,CAAC,GAAG,QAAQ,EAAE,IAAI,aAAW,CAAC,SAAS,MAAM,aAAa,SAAS,MAAM,CAAC,CAAC;AAGzF,QAAM,aAAa,OAAO,gBAAgB,IAAI,OAAO,iBAAiB;AAEtE,MAAI;AACH,UAAM,QAAQ,IAAI,MAAM,IAAI,aAAW,WAAW,QAAQ,OAAO,CAAC,CAAC;AAAA,EACpE,SAAS,OAAO;AACf,QAAI,iBAAiB,UAAU;AAC9B,aAAO,MAAM;AAAA,IACd;AAEA,UAAM;AAAA,EACP;AACD;;;AHzCA,IAAM,eAAe;AAAA,EACpB,WAAW;AAAA,EACX,MAAM;AACP;AAEA,SAAS,UAAU,MAAM;AACxB,MAAI,OAAO,eAAe,KAAK,cAAc,IAAI,GAAG;AACnD;AAAA,EACD;AAEA,QAAM,IAAI,MAAM,2BAA2B,IAAI,EAAE;AAClD;AAEA,IAAM,YAAY,CAAC,MAAM,SAAS,KAAK,aAAa,IAAI,CAAC,EAAE;AAE3D,IAAM,SAAS,eAAa,qBAAqB,MAAM,cAAc,SAAS,IAAI;AAElF,eAAsB,WACrB,OACA;AAAA,EACC,MAAMC,SAAQ,IAAI;AAAA,EAClB,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB;AAAA,EACA;AACD,IAAI,CAAC,GACJ;AACD,YAAU,IAAI;AACd,QAAM,OAAO,GAAG;AAEhB,QAAM,eAAe,gBAAgB,WAAW,OAAO,WAAW;AAElE,SAAO,QAAQ,OAAO,OAAM,UAAS;AACpC,QAAI;AACH,YAAM,OAAO,MAAM,aAAa,KAAK,QAAQ,KAAK,KAAK,CAAC;AACxD,aAAO,UAAU,MAAM,IAAI;AAAA,IAC5B,QAAQ;AACP,aAAO;AAAA,IACR;AAAA,EACD,GAAG,EAAC,aAAa,cAAa,CAAC;AAChC;;;AI9CA,SAAQ,iBAAAC,sBAAoB;AAErB,SAASC,QAAO,WAAW;AACjC,SAAO,qBAAqB,MAAMD,eAAc,SAAS,IAAI;AAC9D;;;ALAO,IAAM,aAAa,OAAO,YAAY;AAE7C,eAAsB,eAAe,MAAM,UAAU,CAAC,GAAG;AACxD,MAAIE,aAAYC,MAAK,QAAQC,QAAO,QAAQ,GAAG,KAAK,EAAE;AACtD,QAAM,EAAC,KAAI,IAAID,MAAK,MAAMD,UAAS;AACnC,QAAM,SAASC,MAAK,QAAQD,YAAWE,QAAO,QAAQ,UAAU,IAAI,CAAC;AACrE,QAAM,QAAQ,QAAQ,SAAS,OAAO;AACtC,QAAM,QAAQ,CAAC,IAAI,EAAE,KAAK;AAE1B,QAAM,aAAa,OAAM,kBAAiB;AACzC,QAAI,OAAO,SAAS,YAAY;AAC/B,aAAO,WAAW,OAAO,aAAa;AAAA,IACvC;AAEA,UAAM,YAAY,MAAM,KAAK,cAAc,GAAG;AAC9C,QAAI,OAAO,cAAc,UAAU;AAClC,aAAO,WAAW,CAAC,SAAS,GAAG,aAAa;AAAA,IAC7C;AAEA,WAAO;AAAA,EACR;AAEA,QAAM,UAAU,CAAC;AAEjB,SAAO,MAAM;AAEZ,UAAM,YAAY,MAAM,WAAW,EAAC,GAAG,SAAS,KAAKF,WAAS,CAAC;AAE/D,QAAI,cAAc,YAAY;AAC7B;AAAA,IACD;AAEA,QAAI,WAAW;AACd,cAAQ,KAAKC,MAAK,QAAQD,YAAW,SAAS,CAAC;AAAA,IAChD;AAEA,QAAIA,eAAc,UAAU,QAAQ,UAAU,OAAO;AACpD;AAAA,IACD;AAEA,IAAAA,aAAYC,MAAK,QAAQD,UAAS;AAAA,EACnC;AAEA,SAAO;AACR;AA6CA,eAAsB,OAAO,MAAM,UAAU,CAAC,GAAG;AAChD,QAAM,UAAU,MAAM,eAAe,MAAM,EAAC,GAAG,SAAS,OAAO,EAAC,CAAC;AACjE,SAAO,QAAQ,CAAC;AACjB;;;ADzFA,iBAAgB;;;AOPhB,IAAI;AAAJ,IAAiB;AAAjB,IAAsC;AAAtC,IAAgD;AAAhD,IAAsD,QAAM;AAC5D,IAAI,OAAO,YAAY,aAAa;AACnC,GAAC,EAAE,aAAa,qBAAqB,UAAU,KAAK,IAAI,QAAQ,OAAO,CAAC;AACxE,UAAQ,QAAQ,UAAU,QAAQ,OAAO;AAC1C;AAEO,IAAM,IAAI;AAAA,EAChB,SAAS,CAAC,uBAAuB,YAAY,QAAQ,SAAS,WAC7D,eAAe,QAAQ,gBAAgB,OAAO;AAEhD;AAEA,SAAS,KAAK,GAAG,GAAG;AACnB,MAAI,MAAM,IAAI,OAAO,WAAW,CAAC,KAAK,GAAG;AACzC,MAAI,OAAO,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC;AAE1C,SAAO,SAAU,KAAK;AACrB,QAAI,CAAC,EAAE,WAAW,OAAO;AAAM,aAAO;AACtC,WAAO,QAAQ,CAAC,CAAC,EAAE,KAAG,KAAK,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,OAAO;AAAA,EACrF;AACD;AAGO,IAAM,QAAQ,KAAK,GAAG,CAAC;AACvB,IAAM,OAAO,KAAK,GAAG,EAAE;AACvB,IAAM,MAAM,KAAK,GAAG,EAAE;AACtB,IAAM,SAAS,KAAK,GAAG,EAAE;AACzB,IAAM,YAAY,KAAK,GAAG,EAAE;AAC5B,IAAM,UAAU,KAAK,GAAG,EAAE;AAC1B,IAAM,SAAS,KAAK,GAAG,EAAE;AACzB,IAAM,gBAAgB,KAAK,GAAG,EAAE;AAGhC,IAAM,QAAQ,KAAK,IAAI,EAAE;AACzB,IAAM,MAAM,KAAK,IAAI,EAAE;AACvB,IAAM,QAAQ,KAAK,IAAI,EAAE;AACzB,IAAM,SAAS,KAAK,IAAI,EAAE;AAC1B,IAAM,OAAO,KAAK,IAAI,EAAE;AACxB,IAAM,UAAU,KAAK,IAAI,EAAE;AAC3B,IAAM,OAAO,KAAK,IAAI,EAAE;AACxB,IAAM,QAAQ,KAAK,IAAI,EAAE;AACzB,IAAM,OAAO,KAAK,IAAI,EAAE;AACxB,IAAM,OAAO,KAAK,IAAI,EAAE;AAGxB,IAAM,UAAU,KAAK,IAAI,EAAE;AAC3B,IAAM,QAAQ,KAAK,IAAI,EAAE;AACzB,IAAM,UAAU,KAAK,IAAI,EAAE;AAC3B,IAAM,WAAW,KAAK,IAAI,EAAE;AAC5B,IAAM,SAAS,KAAK,IAAI,EAAE;AAC1B,IAAM,YAAY,KAAK,IAAI,EAAE;AAC7B,IAAM,SAAS,KAAK,IAAI,EAAE;AAC1B,IAAM,UAAU,KAAK,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpDlC,IAAA,qBAAAG,YAAA;EAAA,mCAAA,SAAA,QAAA;AAAA,WAAO,UAAU,SAAU,OAAO,MAAM;AACpC,UAAI,CAAC;AAAM,eAAO,CAAC;AACnB,UAAI,OAAO,KAAK,SAAS,SAAY,OAAO,KAAK;AACjD,UAAI,QAAQ,KAAK,SAAS,CAAC;AAC3B,UAAI,eAAe,KAAK,gBACjB,SAAU,GAAG;AAAE,eAAO,OAAO,CAAC,EAAE;MAAQ;AAG/C,UAAI,WAAW,OAAO,OAAO,SAAU,KAAK,KAAK;AAC7C,gBAAQ,KAAK,SAAU,GAAG,IAAI;AAC1B,cAAI,IAAI,SAAS,CAAC;AAClB,cAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE;AAAG,gBAAI,EAAE,IAAI;QAC3C,CAAC;AACD,eAAO;MACX,GAAG,CAAC,CAAC;AAEL,UAAI,OAAO,IAAI,OAAO,SAAU,KAAK;AACjC,eAAO,IAAI,KAAK,SAAU,IAAI,IAAI;AAC9B,cAAI,IAAI,OAAO,EAAE;AACjB,cAAI,MAAM,EAAE,MAAM,KAAK;AACnB,gBAAI,QAAQ,SAAS,CAAC;AACtB,gBAAI,OAAO,SAAS,EAAE,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,MACvC,aAAa,CAAC,IAAI;AAEzB,mBAAO,IAAI,MAAM,IAAI,EAAE,KAAK,GAAG;UACnC;AACK,mBAAO;QAChB,CAAC;MACL,CAAC;AAED,UAAI,QAAQ,OAAO,MAAM,SAAU,KAAK,KAAK;AACzC,gBAAQ,KAAK,SAAU,GAAG,IAAI;AAC1B,cAAI,IAAI,aAAa,CAAC;AACtB,cAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE;AAAG,gBAAI,EAAE,IAAI;QAC3C,CAAC;AACD,eAAO;MACX,GAAG,CAAC,CAAC;AAEL,aAAO,IAAI,MAAM,SAAU,KAAK;AAC5B,eAAO,IAAI,KAAK,SAAU,GAAG,IAAI;AAC7B,cAAI,IAAK,MAAM,EAAE,IAAI,aAAa,CAAC,KAAM;AACzC,cAAI,IAAI,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG;AAC1C,cAAI,MAAM,EAAE,MAAM,OAAO,MAAM,EAAE,MAAM,KAAK;AACxC,mBAAO,IAAI;UACf;AACA,cAAI,MAAM,EAAE,MAAM,KAAK;AACnB,mBAAO,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,IACrC,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG;UAEnD;AAEA,iBAAO,IAAI;QACf,CAAC,EAAE,KAAK,IAAI,EAAE,QAAQ,QAAQ,EAAE;MACpC,CAAC,EAAE,KAAK,IAAI;IAChB;AAEA,aAAS,SAAU,GAAG;AAClB,UAAI,IAAI,WAAW,KAAK,CAAC;AACzB,aAAO,IAAI,EAAE,QAAQ,IAAI,EAAE;IAC/B;AAEA,aAAS,OAAQ,IAAI,GAAGC,OAAM;AAC1B,UAAI,GAAG;AAAQ,eAAO,GAAG,OAAO,GAAGA,KAAI;AACvC,UAAI,IAAI;AACR,UAAI,MAAM,UAAU,UAAU,IAAIA,QAAO,GAAG,GAAG;AAC/C,aAAO,IAAI,GAAG,QAAQ,KAAK;AACvB,UAAE,KAAK,GAAG,CAAC,GAAG,CAAC;MACnB;AACA,aAAO;IACX;AAEA,aAAS,QAAS,IAAI,GAAG;AACrB,UAAI,GAAG;AAAS,eAAO,GAAG,QAAQ,CAAC;AACnC,eAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK;AAChC,UAAE,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;MACvB;IACJ;AAEA,aAAS,IAAK,IAAI,GAAG;AACjB,UAAI,GAAG;AAAK,eAAO,GAAG,IAAI,CAAC;AAC3B,UAAI,MAAM,CAAC;AACX,eAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK;AAChC,YAAI,KAAK,EAAE,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;MACjC;AACA,aAAO;IACX;EAAA;AAAA,CAAA;ACrFA,IAAA,oBAAoCC,SAAA,mBAAA,CAAA;ACI7B,IAAMC,SAAc;AACpB,IAAMC,QAAa;AACnB,IAAMC,OAAY;AAClB,IAAMC,aAAkB;AAExB,IAAMC,UAAe;AACrB,IAAMC,OAAY;ACVlB,IAAK,WAAL,kBAAKC,cAAL;AACNA,YAAAA,UAAA,KAAA,IAAM,CAAA,IAAN;AACAA,YAAAA,UAAA,MAAA,IAAO,CAAA,IAAP;AACAA,YAAAA,UAAA,OAAA,IAAQ,CAAA,IAAR;AAHW,SAAAA;AAAA,GAAA,YAAA,CAAA,CAAA;AFWZ,SAAS,UAAU,MAAc,OAAuB;AACvD,SAAO,UAAU,IAAI,OAAO,GAAG,IAAI;AACpC;AAMA,SAAS,iBAAiB,IAAoB;AAC7C,SAAO,GAAG,QAAQ,kBAAkB,CAAC,IAAI,IAAY,OAAsBJ,KAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;AAC9F;AAKA,SAAS,UAAU,MAAsB;AAExC,SAAO,KAAK,QAAQ,qBAAqB,EAAE;AAC5C;AAGO,SAAS,QAAQ,SAA2B;AAClD,MAAI,SAAS;AACb,MAAI,aAAa;AACjB,MAAI,eAAe;AACnB,MAAI,oBAAoB;AACxB,MAAI,sBAAsB;AAC1B,MAAI,eAAuCE;AAE3C,UAAQ,QAAQ,CAAC,WAAW;AAC3B,UAAM,WAAW,OAAO;AAExB,QAAI,SAAS,WAAW,GAAG;AAC1B;IACD;AAEA,kBAAc,OAAO;AACrB,oBAAgB,OAAO;AACvB,yBAAqB,OAAO;AAC5B,2BAAuB,OAAO;AAE9B,UAAM,OAAO,SAAS,IAAI,CAAC,YAAY;AACtC,UAAI;AAEJ,UAAI,QAAQ,QAAQ,KAAK,KAAK,QAAQ,aAAA,GAA6B;AAClE,sBAAqBC,KAAI,OAAO;AAChC,uBAAsBA;MACvB,OAAO;AACN,sBAAqBD,QAAO,SAAS;MACtC;AAEA,aAAO;QACN;QACA,QAAQ,QAAQ;QAChB,QAAQ,UAAU;QAClB;QACA,QAAQ,QAAQ,QAAQ,cAAc,IAAI;QAC1C,QAAQ,SAAgBF,KAAI,QAAQ,MAAM,IAAI;MAC/C;IACD,CAAC;AAED,UAAM,UAAmB;MACxB,OAAO,CAAC,KAAK,KAAK,GAAG;MACrB,aAAa,KAAqB;AACjC,eAAO,UAAU,GAAG,EAAE;MACvB;IACD;AACA,UAAM,kBAAA,GAAiB,kBAAAK,SAAM,MAAM,OAAO,EAAE,MAAM,IAAI,EAAE,IAAI,gBAAgB,EAAE,KAAK,IAAI;AAEvF,cAAU,GAAUJ,WAAU,OAAO,QAAQ,CAAC;;AAC9C,cAAU,GAAG,cAAc;;;EAC5B,CAAC;AAED,QAAM,QAAQ,aAAa;AAE3B,MAAI,QAAQ,GAAG;AACd,cAAU;MACFF;QACN;UACC;UACA;UACA,UAAU,YAAY,KAAK;UAC3B;UACA;UACA,UAAU,UAAU,UAAU;UAC9B;UACA;UACA,UAAU,YAAY,YAAY;UAClC;QACD,EAAE,KAAK,EAAE;MACV;IACD;AAEA,QAAI,oBAAoB,KAAK,sBAAsB,GAAG;AACrD,gBAAU;QACFA;UACN;YACC;YACA;YACA,UAAU,UAAU,iBAAiB;YACrC;YACA;YACA,UAAU,YAAY,mBAAmB;YACzC;UACD,EAAE,KAAK,EAAE;QACV;MACD;IACD;EACD;AAGA,SAAO,QAAQ,IAAWD,OAAM,MAAM,IAAI;AAC3C;;;AGzHO,SAAS,OAAO,MAAsB;AAC5C,SAAO,KAAK,QAAQ,MAAM,KAAK;AAChC;AAEO,SAAS,UAAUQ,OAAsB;AAC/C,SAAO,IAAI,OAAO,QAAQA,KAAI,GAAG;AAClC;AAEO,SAAS,UAAU,KAAqB;AAC9C,SAAO,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,GAAG;AACpC;AAEO,SAAS,SAASA,OAAsB;AAC9C,SAAO,IAAI,OAAO,QAAQ,OAAOA,KAAI,CAAC,GAAG;AAC1C;AAEO,SAAS,OAAO,MAAsB;AAC5C,SAAO,IAAI,OAAO,GAAG,OAAO,IAAI,CAAC,sCAAsC;AACxE;;;AClBA,IAAM,SAAmB;AAAA,EACxB,SAAS,eAAe;AAAA,EACxB,SAAS,gBAAgB;AAAA,EACzB,SAAS,gBAAgB;AAC1B;AAEA,IAAO,cAAQ;;;ACNf,IAAMC,UAAmB,CAAC,SAAS,MAAM,SAAS,gBAAgB,CAAC;AAEnE,IAAO,gBAAQA;;;ACFf,IAAMC,UAAmB;AAAA,EACxB,UAAU,cAAc;AAAA,EACxB,SAAS,eAAe;AAAA,EACxB,OAAO,WAAW;AAAA,EAClB,SAAS,kBAAkB;AAAA,EAC3B,SAAS,mBAAmB;AAAA,EAC5B,SAAS,mBAAmB;AAAA,EAC5B,SAAS,kBAAkB;AAC5B;AAEA,IAAO,iBAAQA;;;ACVf,IAAMC,UAAmB,CAAC,SAAS,oBAAoB,GAAG,OAAO,UAAU,CAAC;AAE5E,IAAO,uBAAQA;;;ACFf,IAAMC,UAAmB;AAAA,EACxB,SAAS,gBAAgB;AAAA,EACzB,SAAS,OAAO;AAAA,EAChB,SAAS,UAAU;AAAA,EACnB,SAAS,aAAa;AACvB;AAEA,IAAO,cAAQA;;;ACPf,IAAMC,UAAmB;AAAA,EACxB,UAAU,eAAe;AAAA,EACzB,UAAU,WAAW;AAAA,EACrB,UAAU,OAAO;AAAA,EACjB,UAAU,eAAe;AAAA,EACzB,UAAU,cAAc;AAAA,EACxB,UAAU,YAAY;AAAA,EACtB,UAAU,gBAAgB;AAAA,EAC1B,UAAU,eAAe;AAAA,EACzB,UAAU,cAAc;AAAA,EACxB,UAAU,YAAY;AAAA,EACtB,UAAU,gBAAgB;AAC3B;AAEA,IAAO,eAAQA;;;ACdf,IAAMC,UAAmB;AAAA,EACxB;AAAA,EACA,SAAS,sCAAsC;AAAA,EAC/C,SAAS,YAAY;AAAA,EACrB,SAAS,QAAQ;AAAA,EACjB,SAAS,QAAQ;AAAA,EACjB,SAAS,YAAY;AACtB;AAEA,IAAO,eAAQA;;;ACTf,IAAMC,UAAmB,CAAC,SAAS,iBAAiB,GAAG,OAAO,aAAa,CAAC;AAE5E,IAAO,mBAAQA;;;ACFf,IAAMC,UAAmB,CAAC,UAAU,cAAc,GAAG,SAAS,eAAe,CAAC;AAE9E,IAAO,qBAAQA;;;ACDf,IAAMC,WAAmB;AAAA,EACxB,SAAS,KAAK;AAAA,EACd,SAAS,KAAK;AAAA,EACd,SAAS,KAAK;AAAA,EACd,SAAS,KAAK;AAAA,EACd;AAAA,EACA;AACD;AAEA,IAAO,kBAAQA;;;ACAf,IAAM,YAAsB;AAAA;AAAA,EAE3B,UAAU,aAAa;AAAA,EACvB,UAAU,UAAU;AAAA,EACpB,UAAU,OAAO;AAAA,EACjB,UAAU,eAAe;AAAA,EACzB,SAAS,eAAe;AAAA,EACxB,SAAS,WAAW;AAAA,EACpB,SAAS,WAAW;AAAA,EACpB,SAAS,aAAa;AAAA,EACtB,OAAO,OAAO;AAAA,EACd,OAAO,QAAQ;AAAA;AAAA,EAGf,UAAU,WAAW;AAAA,EACrB,UAAU,MAAM;AAAA,EAChB,UAAU,QAAQ;AAAA,EAClB,SAAS,cAAc;AAAA,EACvB,SAAS,mBAAmB;AAAA,EAC5B,SAAS,oBAAoB;AAAA,EAC7B,SAAS,oBAAoB;AAAA,EAC7B,SAAS,mBAAmB;AAAA,EAC5B,SAAS,iBAAiB;AAAA,EAC1B,SAAS,YAAY;AAAA,EACrB,SAAS,sBAAsB;AAAA,EAC/B,SAAS,uBAAuB;AAAA,EAChC,SAAS,uBAAuB;AAAA,EAChC,SAAS,sBAAsB;AAAA,EAC/B,SAAS,SAAS;AAAA,EAClB,SAAS,aAAa;AAAA,EACtB,SAAS,YAAY;AAAA,EACrB,SAAS,mBAAmB;AAAA,EAC5B,SAAS,YAAY;AAAA;AAAA,EAGrB,SAAS,oBAAoB;AAAA,EAC7B,SAAS,eAAe;AAAA,EACxB,SAAS,aAAa;AAAA,EACtB,SAAS,aAAa;AAAA,EACtB,SAAS,YAAY;AAAA,EACrB,OAAO,SAAS;AAAA,EAChB,OAAO,WAAW;AAAA;AAAA,EAGlB,SAAS,kBAAkB;AAAA,EAC3B,SAAS,mBAAmB;AAAA;AAAA,EAG5B,SAAS,iBAAiB;AAAA,EAC1B,SAAS,mBAAmB;AAAA,EAC5B,SAAS,kBAAkB;AAAA,EAC3B,SAAS,mBAAmB;AAAA,EAC5B,SAAS,iBAAiB;AAAA,EAC1B,SAAS,eAAe;AAAA,EACxB,SAAS,gBAAgB;AAAA;AAAA,EAGzB;AAAA,EACA,UAAU,WAAW;AAAA,EACrB,UAAU,SAAS;AAAA,EACnB,UAAU,SAAS;AAAA,EACnB,UAAU,UAAU;AAAA,EACpB,SAAS,gBAAgB;AAAA,EACzB,SAAS,gBAAgB;AAAA,EACzB,SAAS,aAAa;AAAA,EACtB,SAAS,cAAc;AAAA,EACvB,SAAS,mBAAmB;AAAA,EAC5B,SAAS,aAAa;AAAA,EACtB,SAAS,0BAA0B;AAAA,EACnC,SAAS,cAAc;AAAA;AAAA,EAGvB;AAAA,EACA,UAAU,SAAS;AAAA,EACnB,UAAU,kBAAkB;AAAA,EAC5B,UAAU,oBAAoB;AAAA,EAC9B,SAAS,eAAe;AAAA,EACxB,SAAS,aAAa;AAAA,EACtB,SAAS,cAAc;AAAA,EACvB,UAAU,OAAO;AAAA,EACjB,SAAS,gBAAgB;AAAA;AAAA,EAGzB,UAAU,cAAc;AAAA,EACxB,UAAU,WAAW;AAAA,EACrB,UAAU,aAAa;AAAA;AAAA,EAGvB,UAAU,MAAM;AAAA,EAChB,UAAU,MAAM;AAAA;AAAA,EAGhB,UAAU,MAAM;AAAA,EAChB,UAAU,MAAM;AAAA,EAChB,UAAU,WAAW;AAAA,EACrB,UAAU,OAAO;AAAA;AAAA,EAGjB;AAAA,EACA,UAAU,MAAM;AAAA,EAChB,UAAU,MAAM;AAAA,EAChB,UAAU,MAAM;AAAA,EAChB,UAAU,MAAM;AAAA,EAChB,SAAS,MAAM;AAAA,EACf,SAAS,WAAW;AAAA,EACpB,SAAS,eAAe;AAAA,EACxB,SAAS,cAAc;AAAA,EACvB,SAAS,mBAAmB;AAAA,EAC5B,SAAS,aAAa;AAAA,EACtB,SAAS,aAAa;AAAA,EACtB,SAAS,YAAY;AAAA,EACrB,SAAS,sBAAsB;AAAA,EAC/B,SAAS,eAAe;AAAA,EACxB,SAAS,cAAc;AAAA,EACvB,SAAS,mBAAmB;AAAA,EAE5B,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACJ;AAEA,IAAO,oBAAQ;;;AC1IR,SAAS,eAAe,MAAoB;AAElD,oBAAU,KAAK,IAAI,OAAO,IAAI,IAAI,4BAA4B,CAAC;AAChE;AAEO,SAAS,cAAcC,WAA2B;AACxD,SAAO,kBAAU,KAAK,CAAC,UAAUA,UAAS,MAAM,KAAK,CAAC;AACvD;;;ACRA,iBAA2C;AAD3C,OAAOC,SAAQ;AAqBf,IAAM,SAAS;AAEf,SAAS,UAAUC,WAA0B;AAC5C,SAAOA,UAAS,QAAQ,YAAY,EAAE;AACvC;AAEA,eAAsB,YAAYA,WAAqC;AACtE,QAAM,UAAuB,CAAC;AAC9B,QAAM,WAAAC,QAAI,KAAK;AAAA,IACd,MAAMD;AAAA,IACN,QAAQ;AAAA,IACR,SAAS,CAAC,UAAqB,QAAQ,KAAK,KAAK;AAAA,EAClD,CAAC;AACD,SAAO,QAAQ,IAAI,CAAC,UAAU;AAC7B,UAAMA,YAAW,MAAM;AACvB,WAAO,UAAUA,SAAQ;AAAA,EAC1B,CAAC;AACF;AAEA,eAAsB,eACrB,SACA,WACkC;AAClC,QAAM,WAAmC,CAAC;AAE1C,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvC,UAAM,IAAI,IAAI,iBAAM;AAAA,MACnB,OAAO,OAAe,OAA+B;AACpD,eAAO,UAAU,SAAS,UAAU,MAAM,IAAI,CAAC;AAAA,MAChD;AAAA,IACD,CAAC;AACD,MAAE,GAAG,SAAS,CAAC,UAAyB;AACvC,YAAM,IAAI,UAAU,MAAM,IAAI;AAC9B,eAAS,CAAC,IAAI,OAAO,MAAM,CAAC;AAC5B,YAAM,GAAG,QAAQ,CAAC,SAAiB;AAClC,iBAAS,CAAC,IAAI,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AAAA,MAChD,CAAC;AACD,YAAM,GAAG,SAAS,CAAC,UAAU;AAE5B,eAAO,KAAK;AAAA,MACb,CAAC;AAAA,IACF,CAAC;AACD,MAAE,GAAG,OAAO,MAAM;AACjB,cAAQ,QAAQ;AAAA,IACjB,CAAC;AACD,UAAM,KAAKE,IAAG,iBAAiB,QAAQ,QAAQ;AAC/C,OAAG,KAAK,CAAC;AAAA,EACV,CAAC;AACF;AAEO,SAAS,iBAAiB,UAA8B;AAC9D,SAAO,SAAS,OAAO,aAAa;AACrC;AAEA,SAAS,uBACR,KACW;AACX,MAAI,OAAO,QAAQ,UAAU;AAC5B,WAAO,CAAC,GAAG;AAAA,EACZ,WAAW,MAAM,QAAQ,GAAG,GAAG;AAC9B,WAAO;AAAA,EACR,OAAO;AACN,WAAO,OAAO,OAAO,GAAG,EAAE,OAAO,CAAC,OAAO,OAAO,KAAK;AAAA,EACtD;AACD;AAEA,UAAU,mBACT,KACA,UAC0B;AAC1B,QAAM,QAAQ,uBAAuB,GAAG;AACxC,aAAWF,aAAY,OAAO;AAC7B,UAAM,EAAE,GAAG,UAAU,UAAAA,UAAS;AAAA,EAC/B;AACD;AAEA,UAAU,mBACT,SAC0B;AAC1B,MAAI,CAAC,SAAS;AACb;AAAA,EACD;AAEA,MAAI,OAAO,YAAY,UAAU;AAChC,UAAM;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,IACX;AACA;AAAA,EACD;AAEA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAEnD,QAAI,IAAI,SAAS,GAAG,GAAG;AACtB;AAAA,IACD;AACA,WAAO,mBAAmB,KAAK;AAAA,EAChC;AACD;AAEA,UAAU,cAAc,KAA2C;AAClE,SAAO,mBAAmB,IAAI,OAAO;AACrC,MAAI,IAAI,MAAM;AACb,WAAO,mBAAmB,IAAI,MAAM,EAAE,OAAO,QAAQ,OAAO,CAAC;AAAA,EAC9D;AACA,MAAI,IAAI,SAAS;AAChB,WAAO,mBAAmB,IAAI,SAAS,EAAE,OAAO,WAAW,OAAO,CAAC;AAAA,EACpE;AACA,MAAI,IAAI,QAAQ;AACf,WAAO,mBAAmB,IAAI,QAAQ,EAAE,OAAO,UAAU,OAAO,CAAC;AAAA,EAClE;AAEA,MAAI,IAAI,aAAa,GAAG;AACvB,WAAO,mBAAmB,IAAI,aAAa,GAAG;AAAA,MAC7C,OAAO;AAAA,MACP;AAAA,IACD,CAAC;AAAA,EACF;AACA,MAAI,IAAI,SAAS;AAChB,WAAO,mBAAmB,IAAI,SAAS,EAAE,OAAO,WAAW,QAAQ,qBAAqB,CAAC;AAAA,EAC1F;AACA,MAAI,IAAI,KAAK;AACZ,WAAO,mBAAmB,IAAI,KAAK,EAAE,OAAO,OAAO,QAAQ,oBAAoB,CAAC;AAAA,EACjF;AACA,MAAI,IAAI,KAAK;AACZ,WAAO,mBAAmB,IAAI,KAAK,EAAE,OAAO,OAAO,QAAQ,iBAAiB,CAAC;AAAA,EAC9E;AACD;AAEA,SAAS,WAAW,UAAoBA,WAA2B;AAElE,EAAAA,YAAWA,UAAS,QAAQ,SAAS,EAAE;AAGvC,MAAI,SAAS,SAASA,SAAQ,GAAG;AAChC,WAAO;AAAA,EACR;AAGA,MAAI,SAAS,SAAS,GAAGA,SAAQ,KAAK,GAAG;AACxC,WAAO;AAAA,EACR;AAGA,MAAI,SAAS,SAAS,GAAGA,UAAS,QAAQ,OAAO,EAAE,CAAC,WAAW,GAAG;AACjE,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AAMA,eAAsB,cAAc,KAAkB,SAAyC;AAC9F,QAAM,WAAsB,CAAC;AAC7B,QAAM,WAAW,MAAM,YAAY,QAAQ,QAAQ;AAEnD,aAAWA,aAAY,iBAAiB,QAAQ,GAAG;AAClD,aAAS,KAAK;AAAA,MACb,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS,GAAGA,SAAQ;AAAA,MACpB,MAAM;AAAA,MACN,QAAQ;AAAA,IACT,CAAC;AAAA,EACF;AAEA,aAAW,gBAAgB,cAAc,GAAG,GAAG;AAC9C,QAAI,CAAC,WAAW,UAAU,aAAa,QAAQ,GAAG;AACjD,eAAS,KAAK;AAAA,QACb,QAAQ,aAAa;AAAA,QACrB,UAAU;AAAA,QACV,SAAS,GAAG,aAAa,QAAQ,SAAS,aAAa,KAAK;AAAA,QAC5D,MAAM;AAAA,QACN,QAAQ;AAAA,MACT,CAAC;AAAA,IACF;AAAA,EACD;AAEA,MAAI,SAAS,WAAW,GAAG;AAC1B,WAAO,CAAC;AAAA,EACT;AAEA,SAAO;AAAA,IACN;AAAA,MACC;AAAA,MACA,UAAU,QAAQ,cAAc,QAAQ;AAAA,MACxC,YAAY,SAAS,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,EAAE;AAAA,MACvD,cAAc,SAAS,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,EAAE;AAAA,MACzD,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IACtB;AAAA,EACD;AACD;;;ACzNO,IAAM,kBAAN,cAA8B,MAAM;AAAA,EACnC;AAAA,EAEA,YAAY,WAAmB,SAAiB;AACtD,UAAM,OAAO;AACb,SAAK,YAAY;AAAA,EAClB;AACD;;;ACPA,SAAS,QAAQ,OAAqB;AAErC,SAAO,OAAO,UAAU,eAAe,UAAU,QAAQ,UAAU;AACpE;AAEO,SAAS,SAAS,KAAa,OAAsB;AAC3D,MAAI,QAAQ,KAAK,GAAG;AACnB,UAAM,IAAI,MAAM,IAAI,GAAG,qBAAqB;AAAA,EAC7C;AAGA,MAAI,OAAO,UAAU,UAAU;AAC9B;AAAA,EACD;AAGA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,QAAI,MAAM,WAAW,GAAG;AACvB,YAAM,IAAI,MAAM,IAAI,GAAG,qBAAqB;AAAA,IAC7C;AAEA,eAAW,SAAS,OAAO;AAC1B,eAAS,GAAG,GAAG,IAAI,KAAK,KAAK,MAAM,KAAK,CAAC;AAAA,IAC1C;AACA;AAAA,EACD;AAGA,MAAI,SAAS,OAAO,UAAU,UAAU;AACvC,UAAM,SAAS,OAAO,OAAO,KAAK;AAClC,QAAI,OAAO,WAAW,GAAG;AACxB,YAAM,IAAI,MAAM,IAAI,GAAG,qBAAqB;AAAA,IAC7C;AAAA,EACD;AACD;;;AChCO,SAAS,QAAQ,KAAa,OAAkB;AACtD,MAAI,OAAO,UAAU,eAAe,UAAU,MAAM;AACnD,UAAM,IAAI,gBAAgB,QAAQ,MAAM,IAAI,GAAG,eAAe;AAAA,EAC/D;AACD;;;ACNO,SAAS,UAAU,KAAa,OAAkB;AACxD,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAC1B,UAAM,IAAI,MAAM,IAAI,GAAG,iBAAiB;AAAA,EACzC;AAEA,aAAW,SAAS,OAAO;AAC1B,QAAI,OAAO,MAAM,KAAK,MAAM,UAAU;AACrC,YAAM,IAAI,MAAM,IAAI,GAAG,IAAI,KAAK,mBAAmB;AAAA,IACpD;AAAA,EACD;AACD;;;ACVO,SAAS,WAAW,KAAa,OAAkB;AACzD,MAAI,OAAO,UAAU,UAAU;AAC9B,UAAM,IAAI,MAAM,IAAI,GAAG,kBAAkB;AAAA,EAC1C;AACD;;;ACJA,SAAS,aAAa,KAAa,OAAsB;AACxD,MAAI,OAAO,UAAU,UAAU;AAC9B,UAAM,IAAI,MAAM,IAAI,GAAG,yBAAyB;AAAA,EACjD;AACA,MAAI,UAAU,OAAO;AACpB,UAAM,IAAI,MAAM,IAAI,GAAG,sBAAsB;AAAA,EAC9C;AACD;AAEA,SAAS,YAAY,KAAa,OAAsB;AACvD,MAAI,OAAO,UAAU,UAAU;AAC9B,UAAM,IAAI,MAAM,IAAI,GAAG,wBAAwB;AAAA,EAChD;AACA,MAAI,MAAM,KAAK,MAAM,IAAI;AACxB,UAAM,IAAI,MAAM,IAAI,GAAG,yBAAyB;AAAA,EACjD;AACA,MAAI,UAAU,MAAM,KAAK,GAAG;AAC3B,UAAM,IAAI,MAAM,IAAI,GAAG,oDAAoD;AAAA,EAC5E;AACA,QAAMG,OAAM,IAAI,IAAI,KAAK;AACzB,MAAIA,KAAI,aAAa,eAAeA,KAAI,aAAa,SAAS;AAC7D,UAAM,IAAI,MAAM,IAAI,GAAG,oDAAoD;AAAA,EAC5E;AACA,MAAIA,KAAI,aAAa,cAAc;AAClC,UAAM,IAAI,MAAM,IAAI,GAAG,wCAAwC;AAAA,EAChE;AACA,MAAIA,KAAI,SAAS,IAAI;AACpB,UAAM,IAAI,MAAM,IAAI,GAAG,sBAAsB;AAAA,EAC9C;AACD;AAEA,SAAS,kBAAkB,KAAa,OAAsB;AAC7D,MAAI,OAAO,UAAU,UAAU;AAC9B,UAAM,IAAI,MAAM,IAAI,GAAG,8BAA8B;AAAA,EACtD;AACA,MAAI,MAAM,KAAK,MAAM,IAAI;AACxB,UAAM,IAAI;AAAA,MACT,IAAI,GAAG;AAAA,IACR;AAAA,EACD;AACD;AAEO,SAAS,aAAa,KAAa,OAAsB;AAC/D,MAAI,UAAU,QAAW;AACxB;AAAA,EACD;AACA,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAChD,UAAM,IAAI,MAAM,IAAI,GAAG,2CAA2C;AAAA,EACnE;AACA,MAAI,UAAU,OAAO;AACpB,iBAAa,KAAK,MAAM,IAAI;AAAA,EAC7B,OAAO;AACN,UAAM,IAAI,MAAM,IAAI,GAAG,uCAAuC;AAAA,EAC/D;AACA,MAAI,SAAS,OAAO;AACnB,gBAAY,KAAK,MAAM,GAAG;AAAA,EAC3B,OAAO;AACN,UAAM,IAAI,MAAM,IAAI,GAAG,sCAAsC;AAAA,EAC9D;AACA,MAAI,eAAe,OAAO;AACzB,sBAAkB,KAAK,MAAM,SAAS;AAAA,EACvC;AACD;;;AC9DO,SAAS,SAAS,KAAa,OAAkB;AACvD,MAAI,OAAO,UAAU,YAAY,MAAM,MAAM,gBAAgB,GAAG;AAC/D;AAAA,EACD,WAAW,+BAAO,KAAK;AACtB,aAAS,GAAG,GAAG,QAAQ,MAAM,GAAG;AAAA,EACjC,OAAO;AACN,UAAM,IAAI,MAAM,IAAI,GAAG,oCAAoC;AAAA,EAC5D;AACD;;;ACRA,oBAAmB;;;ACInB,yBAAuB;AAJvB,SAAQ,UAAAC,eAAa;AACrB,OAAOC,WAAU;AACjB,OAAO,kBAAkB;AACzB,OAAOC,cAAa;;;ACHL,SAAR,kBAAmC,OAAO;AAChD,QAAM,KAAK,OAAO,UAAU,WAAW,OAAO,KAAK,WAAW;AAC9D,QAAM,KAAK,OAAO,UAAU,WAAW,OAAO,KAAK,WAAW;AAE9D,MAAI,MAAM,MAAM,SAAS,CAAC,MAAM,IAAI;AACnC,YAAQ,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAEA,MAAI,MAAM,MAAM,SAAS,CAAC,MAAM,IAAI;AACnC,YAAQ,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAEA,SAAO;AACR;;;ACbA,OAAOC,cAAa;AACpB,OAAOC,WAAU;AACjB,OAAO,SAAS;;;ACFD,SAAR,QAAyB,UAAU,CAAC,GAAG;AAC7C,QAAM;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,WAAW,QAAQ;AAAA,EACpB,IAAI;AAEJ,MAAI,aAAa,SAAS;AACzB,WAAO;AAAA,EACR;AAEA,SAAO,OAAO,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,SAAO,IAAI,YAAY,MAAM,MAAM,KAAK;AAChF;;;ADNO,SAAS,WAAW,UAAU,CAAC,GAAG;AACxC,QAAM;AAAA,IACL,MAAMC,SAAQ,IAAI;AAAA,IAClB,MAAM,QAAQA,SAAQ,IAAI,QAAQ,CAAC;AAAA,IACnC,WAAWA,SAAQ;AAAA,EACpB,IAAI;AAEJ,MAAI;AACJ,QAAM,YAAY,eAAe,MAAM,IAAI,cAAc,GAAG,IAAI;AAChE,MAAI,UAAUC,MAAK,QAAQ,SAAS;AACpC,QAAM,SAAS,CAAC;AAEhB,SAAO,aAAa,SAAS;AAC5B,WAAO,KAAKA,MAAK,KAAK,SAAS,mBAAmB,CAAC;AACnD,eAAW;AACX,cAAUA,MAAK,QAAQ,SAAS,IAAI;AAAA,EACrC;AAGA,SAAO,KAAKA,MAAK,QAAQ,WAAW,UAAU,IAAI,CAAC;AAEnD,SAAO,CAAC,GAAG,QAAQ,KAAK,EAAE,KAAKA,MAAK,SAAS;AAC9C;AAEO,SAAS,cAAc,EAAC,MAAMD,SAAQ,KAAK,GAAG,QAAO,IAAI,CAAC,GAAG;AACnE,QAAM,EAAC,GAAG,IAAG;AAEb,QAAMC,QAAO,QAAQ,EAAC,IAAG,CAAC;AAC1B,UAAQ,OAAO,IAAIA,KAAI;AACvB,MAAIA,KAAI,IAAI,WAAW,OAAO;AAE9B,SAAO;AACR;;;AErCA,IAAM,eAAe,CAAC,IAAI,MAAM,UAAU,0BAA0B;AAGnE,MAAI,aAAa,YAAY,aAAa,aAAa;AACtD;AAAA,EACD;AAGA,MAAI,aAAa,eAAe,aAAa,UAAU;AACtD;AAAA,EACD;AAEA,QAAM,eAAe,OAAO,yBAAyB,IAAI,QAAQ;AACjE,QAAM,iBAAiB,OAAO,yBAAyB,MAAM,QAAQ;AAErE,MAAI,CAAC,gBAAgB,cAAc,cAAc,KAAK,uBAAuB;AAC5E;AAAA,EACD;AAEA,SAAO,eAAe,IAAI,UAAU,cAAc;AACnD;AAKA,IAAM,kBAAkB,SAAU,cAAc,gBAAgB;AAC/D,SAAO,iBAAiB,UAAa,aAAa,gBACjD,aAAa,aAAa,eAAe,YACzC,aAAa,eAAe,eAAe,cAC3C,aAAa,iBAAiB,eAAe,iBAC5C,aAAa,YAAY,aAAa,UAAU,eAAe;AAElE;AAEA,IAAM,kBAAkB,CAAC,IAAI,SAAS;AACrC,QAAM,gBAAgB,OAAO,eAAe,IAAI;AAChD,MAAI,kBAAkB,OAAO,eAAe,EAAE,GAAG;AAChD;AAAA,EACD;AAEA,SAAO,eAAe,IAAI,aAAa;AACxC;AAEA,IAAM,kBAAkB,CAAC,UAAU,aAAa,cAAc,QAAQ;AAAA,EAAO,QAAQ;AAErF,IAAM,qBAAqB,OAAO,yBAAyB,SAAS,WAAW,UAAU;AACzF,IAAM,eAAe,OAAO,yBAAyB,SAAS,UAAU,UAAU,MAAM;AAKxF,IAAM,iBAAiB,CAAC,IAAI,MAAM,SAAS;AAC1C,QAAM,WAAW,SAAS,KAAK,KAAK,QAAQ,KAAK,KAAK,CAAC;AACvD,QAAM,cAAc,gBAAgB,KAAK,MAAM,UAAU,KAAK,SAAS,CAAC;AAExE,SAAO,eAAe,aAAa,QAAQ,YAAY;AACvD,SAAO,eAAe,IAAI,YAAY,EAAC,GAAG,oBAAoB,OAAO,YAAW,CAAC;AAClF;AAEe,SAAR,cAA+B,IAAI,MAAM,EAAC,wBAAwB,MAAK,IAAI,CAAC,GAAG;AACrF,QAAM,EAAC,KAAI,IAAI;AAEf,aAAW,YAAY,QAAQ,QAAQ,IAAI,GAAG;AAC7C,iBAAa,IAAI,MAAM,UAAU,qBAAqB;AAAA,EACvD;AAEA,kBAAgB,IAAI,IAAI;AACxB,iBAAe,IAAI,MAAM,IAAI;AAE7B,SAAO;AACR;;;ACpEA,IAAM,kBAAkB,oBAAI,QAAQ;AAEpC,IAAM,UAAU,CAAC,WAAW,UAAU,CAAC,MAAM;AAC5C,MAAI,OAAO,cAAc,YAAY;AACpC,UAAM,IAAI,UAAU,qBAAqB;AAAA,EAC1C;AAEA,MAAI;AACJ,MAAI,YAAY;AAChB,QAAM,eAAe,UAAU,eAAe,UAAU,QAAQ;AAEhE,QAAMC,WAAU,YAAa,YAAY;AACxC,oBAAgB,IAAIA,UAAS,EAAE,SAAS;AAExC,QAAI,cAAc,GAAG;AACpB,oBAAc,UAAU,MAAM,MAAM,UAAU;AAC9C,kBAAY;AAAA,IACb,WAAW,QAAQ,UAAU,MAAM;AAClC,YAAM,IAAI,MAAM,cAAc,YAAY,4BAA4B;AAAA,IACvE;AAEA,WAAO;AAAA,EACR;AAEA,gBAAcA,UAAS,SAAS;AAChC,kBAAgB,IAAIA,UAAS,SAAS;AAEtC,SAAOA;AACR;AAEA,QAAQ,YAAY,eAAa;AAChC,MAAI,CAAC,gBAAgB,IAAI,SAAS,GAAG;AACpC,UAAM,IAAI,MAAM,wBAAwB,UAAU,IAAI,8CAA8C;AAAA,EACrG;AAEA,SAAO,gBAAgB,IAAI,SAAS;AACrC;AAEA,IAAO,kBAAQ;;;ACxCf,OAAOC,cAAa;;;ACApB,SAAO,aAAAC,kBAAc;;;ACCd,IAAM,qBAAmB,MAAI;AACpC,QAAM,SAAO,WAAS,WAAS;AAC/B,SAAO,MAAM,KAAK,EAAC,OAAM,GAAE,iBAAiB;AAC5C;AAEA,IAAM,oBAAkB,CAAC,OAAM,WAAS;AAAA,EACxC,MAAK,QAAQ,QAAM,CAAC;AAAA,EACpB,QAAO,WAAS;AAAA,EAChB,QAAO;AAAA,EACP,aAAY;AAAA,EACZ,UAAS;AACT;AAEA,IAAM,WAAS;AACR,IAAM,WAAS;;;ACftB,SAAO,iBAAc;;;ACEd,IAAM,UAAQ;AAAA,EACrB;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aACA;AAAA,IACA,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,IACT,QAAO;AAAA,EACP;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,IACT,QAAO;AAAA,EACP;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,IACT,QAAO;AAAA,EACP;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAC;;;ADzQM,IAAM,aAAW,MAAI;AAC5B,QAAM,kBAAgB,mBAAmB;AACzC,QAAMC,WAAQ,CAAC,GAAG,SAAQ,GAAG,eAAe,EAAE,IAAI,eAAe;AACjE,SAAOA;AACP;AAQA,IAAM,kBAAgB,CAAC;AAAA,EACvB;AAAA,EACA,QAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,SAAO;AAAA,EACP;AACA,MAAI;AACJ,QAAK;AAAA,IACL,SAAQ,EAAC,CAAC,IAAI,GAAE,eAAc;AAAA,EAC9B,IAAE;AACF,QAAM,YAAU,mBAAiB;AACjC,QAAM,SAAO,YAAU,iBAAe;AACtC,SAAM,EAAC,MAAK,QAAO,aAAY,WAAU,QAAO,QAAO,SAAQ;AAC/D;;;AF1BA,IAAM,mBAAiB,MAAI;AAC3B,QAAMC,WAAQ,WAAW;AACzB,SAAO,OAAO,YAAYA,SAAQ,IAAI,eAAe,CAAC;AACtD;AAEA,IAAM,kBAAgB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACA,MAAI,CAAC,MAAK,EAAC,MAAK,QAAO,aAAY,WAAU,QAAO,QAAO,SAAQ,CAAC;AAE7D,IAAM,gBAAc,iBAAiB;AAK5C,IAAM,qBAAmB,MAAI;AAC7B,QAAMA,WAAQ,WAAW;AACzB,QAAM,SAAO,WAAS;AACtB,QAAM,WAAS,MAAM;AAAA,IAAK,EAAC,OAAM;AAAA,IAAE,CAAC,OAAM,WAC1C,kBAAkB,QAAOA,QAAO;AAAA,EAChC;AACA,SAAO,OAAO,OAAO,CAAC,GAAE,GAAG,QAAQ;AACnC;AAEA,IAAM,oBAAkB,CAAC,QAAOA,aAAU;AAC1C,QAAM,SAAO,mBAAmB,QAAOA,QAAO;AAE9C,MAAG,WAAS,QAAU;AACtB,WAAM,CAAC;AAAA,EACP;AAEA,QAAK,EAAC,MAAK,aAAY,WAAU,QAAO,QAAO,SAAQ,IAAE;AACzD,SAAM;AAAA,IACN,CAAC,MAAM,GAAE;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AACA;AAIA,IAAM,qBAAmB,CAAC,QAAOA,aAAU;AAC3C,QAAM,SAAOA,SAAQ,KAAK,CAAC,EAAC,KAAI,MAAIC,WAAU,QAAQ,IAAI,MAAI,MAAM;AAEpE,MAAG,WAAS,QAAU;AACtB,WAAO;AAAA,EACP;AAEA,SAAOD,SAAQ,KAAK,CAAC,YAAU,QAAQ,WAAS,MAAM;AACtD;AAEO,IAAM,kBAAgB,mBAAmB;;;ADlEhD,IAAM,iBAAiB,CAAC,EAAC,UAAU,SAAS,WAAW,QAAQ,mBAAmB,UAAU,WAAU,MAAM;AAC3G,MAAI,UAAU;AACb,WAAO,mBAAmB,OAAO;AAAA,EAClC;AAEA,MAAI,YAAY;AACf,WAAO;AAAA,EACR;AAEA,MAAI,cAAc,QAAW;AAC5B,WAAO,eAAe,SAAS;AAAA,EAChC;AAEA,MAAI,WAAW,QAAW;AACzB,WAAO,mBAAmB,MAAM,KAAK,iBAAiB;AAAA,EACvD;AAEA,MAAI,aAAa,QAAW;AAC3B,WAAO,yBAAyB,QAAQ;AAAA,EACzC;AAEA,SAAO;AACR;AAEO,IAAM,YAAY,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,EAAC,SAAS,EAAC,SAAS,MAAME,SAAQ,IAAI,EAAC,EAAC;AACjD,MAAM;AAGL,aAAW,aAAa,OAAO,SAAY;AAC3C,WAAS,WAAW,OAAO,SAAY;AACvC,QAAM,oBAAoB,WAAW,SAAY,SAAY,cAAc,MAAM,EAAE;AAEnF,QAAM,YAAY,SAAS,MAAM;AAEjC,QAAMC,UAAS,eAAe,EAAC,UAAU,SAAS,WAAW,QAAQ,mBAAmB,UAAU,WAAU,CAAC;AAC7G,QAAM,eAAe,WAAWA,OAAM,KAAK,OAAO;AAClD,QAAM,UAAU,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAC1D,QAAM,eAAe,UAAU,GAAG,YAAY;AAAA,EAAK,MAAM,OAAO,KAAK;AACrE,QAAM,UAAU,CAAC,cAAc,QAAQ,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAExE,MAAI,SAAS;AACZ,UAAM,kBAAkB,MAAM;AAC9B,UAAM,UAAU;AAAA,EACjB,OAAO;AACN,YAAQ,IAAI,MAAM,OAAO;AAAA,EAC1B;AAEA,QAAM,eAAe;AACrB,QAAM,UAAU;AAChB,QAAM,iBAAiB;AACvB,QAAM,WAAW;AACjB,QAAM,SAAS;AACf,QAAM,oBAAoB;AAC1B,QAAM,SAAS;AACf,QAAM,SAAS;AACf,QAAM,MAAM;AAEZ,MAAI,QAAQ,QAAW;AACtB,UAAM,MAAM;AAAA,EACb;AAEA,MAAI,kBAAkB,OAAO;AAC5B,WAAO,MAAM;AAAA,EACd;AAEA,QAAM,SAAS;AACf,QAAM,WAAW,QAAQ,QAAQ;AACjC,QAAM,aAAa;AACnB,QAAM,SAAS,UAAU,CAAC;AAE1B,SAAO;AACR;;;AKtFA,IAAM,UAAU,CAAC,SAAS,UAAU,QAAQ;AAE5C,IAAM,WAAW,aAAW,QAAQ,KAAK,WAAS,QAAQ,KAAK,MAAM,MAAS;AAEvE,IAAM,iBAAiB,aAAW;AACxC,MAAI,CAAC,SAAS;AACb;AAAA,EACD;AAEA,QAAM,EAAC,MAAK,IAAI;AAEhB,MAAI,UAAU,QAAW;AACxB,WAAO,QAAQ,IAAI,WAAS,QAAQ,KAAK,CAAC;AAAA,EAC3C;AAEA,MAAI,SAAS,OAAO,GAAG;AACtB,UAAM,IAAI,MAAM,qEAAqE,QAAQ,IAAI,WAAS,KAAK,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,EACvI;AAEA,MAAI,OAAO,UAAU,UAAU;AAC9B,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAC1B,UAAM,IAAI,UAAU,mEAAmE,OAAO,KAAK,IAAI;AAAA,EACxG;AAEA,QAAM,SAAS,KAAK,IAAI,MAAM,QAAQ,QAAQ,MAAM;AACpD,SAAO,MAAM,KAAK,EAAC,OAAM,GAAG,CAAC,OAAO,UAAU,MAAM,KAAK,CAAC;AAC3D;;;AC7BA,OAAO,QAAQ;;;AC0BR,IAAM,UAA4B,CAAA;AACzC,QAAQ,KAAK,UAAU,UAAU,SAAS;AAE1C,IAAI,QAAQ,aAAa,SAAS;AAChC,UAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;;;;AAOJ,IAAI,QAAQ,aAAa,SAAS;AAChC,UAAQ,KAAK,SAAS,WAAW,UAAU,WAAW;;;;ACnCxD,IAAM,YAAY,CAACC,aACjB,CAAC,CAACA,YACF,OAAOA,aAAY,YACnB,OAAOA,SAAQ,mBAAmB,cAClC,OAAOA,SAAQ,SAAS,cACxB,OAAOA,SAAQ,eAAe,cAC9B,OAAOA,SAAQ,cAAc,cAC7B,OAAOA,SAAQ,SAAS,cACxB,OAAOA,SAAQ,QAAQ,YACvB,OAAOA,SAAQ,OAAO;AAExB,IAAM,eAAe,OAAO,IAAI,qBAAqB;AACrD,IAAMC,UAA2D;AACjE,IAAM,uBAAuB,OAAO,eAAe,KAAK,MAAM;AAyB9D,IAAM,UAAN,MAAa;EACX,UAAmB;IACjB,WAAW;IACX,MAAM;;EAGR,YAAuB;IACrB,WAAW,CAAA;IACX,MAAM,CAAA;;EAGR,QAAgB;EAChB,KAAa,KAAK,OAAM;EAExB,cAAA;AACE,QAAIA,QAAO,YAAY,GAAG;AACxB,aAAOA,QAAO,YAAY;;AAE5B,yBAAqBA,SAAQ,cAAc;MACzC,OAAO;MACP,UAAU;MACV,YAAY;MACZ,cAAc;KACf;EACH;EAEA,GAAG,IAAe,IAAW;AAC3B,SAAK,UAAU,EAAE,EAAE,KAAK,EAAE;EAC5B;EAEA,eAAe,IAAe,IAAW;AACvC,UAAM,OAAO,KAAK,UAAU,EAAE;AAC9B,UAAM,IAAI,KAAK,QAAQ,EAAE;AAEzB,QAAI,MAAM,IAAI;AACZ;;AAGF,QAAI,MAAM,KAAK,KAAK,WAAW,GAAG;AAChC,WAAK,SAAS;WACT;AACL,WAAK,OAAO,GAAG,CAAC;;EAEpB;EAEA,KACE,IACA,MACA,QAA6B;AAE7B,QAAI,KAAK,QAAQ,EAAE,GAAG;AACpB,aAAO;;AAET,SAAK,QAAQ,EAAE,IAAI;AACnB,QAAI,MAAe;AACnB,eAAW,MAAM,KAAK,UAAU,EAAE,GAAG;AACnC,YAAM,GAAG,MAAM,MAAM,MAAM,QAAQ;;AAErC,QAAI,OAAO,QAAQ;AACjB,YAAM,KAAK,KAAK,aAAa,MAAM,MAAM,KAAK;;AAEhD,WAAO;EACT;;AAGF,IAAe,iBAAf,MAA6B;;AAM7B,IAAM,iBAAiB,CAA2B,YAAc;AAC9D,SAAO;IACL,OAAO,IAAa,MAA+B;AACjD,aAAO,QAAQ,OAAO,IAAI,IAAI;IAChC;IACA,OAAI;AACF,aAAO,QAAQ,KAAI;IACrB;IACA,SAAM;AACJ,aAAO,QAAQ,OAAM;IACvB;;AAEJ;AAEA,IAAM,qBAAN,cAAiC,eAAc;EAC7C,SAAM;AACJ,WAAO,MAAK;IAAE;EAChB;EACA,OAAI;EAAI;EACR,SAAM;EAAI;;AA7IZ;AAgJA,IAAM,aAAN,cAAyB,eAAc;EAcrC,YAAYD,UAAkB;AAC5B,UAAK;AAuHP;AAeA;AAjJA;;;gCAAUA,SAAQ,aAAa,UAAU,WAAW;AAEpD;iCAAW,IAAI,QAAO;AACtB;AACA;AACA;AAEA,sCAAwD,CAAA;AACxD,gCAAmB;AAIjB,uBAAK,UAAWA;AAEhB,uBAAK,eAAgB,CAAA;AACrB,eAAW,OAAO,SAAS;AACzB,yBAAK,eAAc,GAAG,IAAI,MAAK;AAK7B,cAAM,YAAY,mBAAK,UAAS,UAAU,GAAG;AAC7C,YAAI,EAAE,MAAK,IAAK,mBAAK;AAQrB,cAAM,IAAIA;AAGV,YACE,OAAO,EAAE,4BAA4B,YACrC,OAAO,EAAE,wBAAwB,UAAU,UAC3C;AACA,mBAAS,EAAE,wBAAwB;;AAGrC,YAAI,UAAU,WAAW,OAAO;AAC9B,eAAK,OAAM;AACX,gBAAM,MAAM,mBAAK,UAAS,KAAK,QAAQ,MAAM,GAAG;AAEhD,gBAAM,IAAI,QAAQ,WAAW,mBAAK,WAAU;AAC5C,cAAI,CAAC;AAAK,YAAAA,SAAQ,KAAKA,SAAQ,KAAK,CAAC;;MAGzC;;AAGF,uBAAK,4BAA6BA,SAAQ;AAC1C,uBAAK,sBAAuBA,SAAQ;EACtC;EAEA,OAAO,IAAa,MAA+B;AAEjD,QAAI,CAAC,UAAU,mBAAK,SAAQ,GAAG;AAC7B,aAAO,MAAK;MAAE;;AAIhB,QAAI,mBAAK,aAAY,OAAO;AAC1B,WAAK,KAAI;;AAGX,UAAM,MAAK,6BAAM,cAAa,cAAc;AAC5C,uBAAK,UAAS,GAAG,IAAI,EAAE;AACvB,WAAO,MAAK;AACV,yBAAK,UAAS,eAAe,IAAI,EAAE;AACnC,UACE,mBAAK,UAAS,UAAU,MAAM,EAAE,WAAW,KAC3C,mBAAK,UAAS,UAAU,WAAW,EAAE,WAAW,GAChD;AACA,aAAK,OAAM;;IAEf;EACF;EAEA,OAAI;AACF,QAAI,mBAAK,UAAS;AAChB;;AAEF,uBAAK,SAAU;AAMf,uBAAK,UAAS,SAAS;AAEvB,eAAW,OAAO,SAAS;AACzB,UAAI;AACF,cAAM,KAAK,mBAAK,eAAc,GAAG;AACjC,YAAI;AAAI,6BAAK,UAAS,GAAG,KAAK,EAAE;eACzB,GAAG;MAAA;;AAGd,uBAAK,UAAS,OAAO,CAAC,OAAe,MAAY;AAC/C,aAAO,sBAAK,8BAAL,WAAkB,IAAI,GAAG;IAClC;AACA,uBAAK,UAAS,aAAa,CAAC,SAAoC;AAC9D,aAAO,sBAAK,0CAAL,WAAwB;IACjC;EACF;EAEA,SAAM;AACJ,QAAI,CAAC,mBAAK,UAAS;AACjB;;AAEF,uBAAK,SAAU;AAEf,YAAQ,QAAQ,SAAM;AACpB,YAAM,WAAW,mBAAK,eAAc,GAAG;AAEvC,UAAI,CAAC,UAAU;AACb,cAAM,IAAI,MAAM,sCAAsC,GAAG;;AAG3D,UAAI;AACF,2BAAK,UAAS,eAAe,KAAK,QAAQ;eAEnC,GAAG;MAAA;IAEd,CAAC;AACD,uBAAK,UAAS,OAAO,mBAAK;AAC1B,uBAAK,UAAS,aAAa,mBAAK;AAChC,uBAAK,UAAS,SAAS;EACzB;;AAhIA;AAEA;AACA;AACA;AACA;AAEA;AACA;AA0HA;uBAAkB,SAAC,MAAgC;AAEjD,MAAI,CAAC,UAAU,mBAAK,SAAQ,GAAG;AAC7B,WAAO;;AAET,qBAAK,UAAS,WAAW,QAAQ;AAGjC,qBAAK,UAAS,KAAK,QAAQ,mBAAK,UAAS,UAAU,IAAI;AACvD,SAAO,mBAAK,4BAA2B,KACrC,mBAAK,WACL,mBAAK,UAAS,QAAQ;AAE1B;AAEA;iBAAY,SAAC,OAAe,MAAW;AACrC,QAAM,KAAK,mBAAK;AAChB,MAAI,OAAO,UAAU,UAAU,mBAAK,SAAQ,GAAG;AAC7C,QAAI,OAAO,KAAK,CAAC,MAAM,UAAU;AAC/B,yBAAK,UAAS,WAAW,KAAK,CAAC;;AAIjC,UAAM,MAAM,GAAG,KAAK,mBAAK,WAAU,IAAI,GAAG,IAAI;AAE9C,uBAAK,UAAS,KAAK,QAAQ,mBAAK,UAAS,UAAU,IAAI;AAEvD,WAAO;SACF;AACL,WAAO,GAAG,KAAK,mBAAK,WAAU,IAAI,GAAG,IAAI;;AAE7C;AAGF,IAAMA,WAAU,WAAW;AAGpB,IAAM;;;;;;;;;;EAUX;;;;;;;;EASA;;;;;;;;EASA;AAAM,IACJ,eACF,UAAUA,QAAO,IAAI,IAAI,WAAWA,QAAO,IAAI,IAAI,mBAAkB,CAAE;;;AFtVzE,IAAM,6BAA6B,MAAO;AAGnC,IAAM,cAAc,CAAC,MAAM,SAAS,WAAW,UAAU,CAAC,MAAM;AACtE,QAAM,aAAa,KAAK,MAAM;AAC9B,iBAAe,MAAM,QAAQ,SAAS,UAAU;AAChD,SAAO;AACR;AAEA,IAAM,iBAAiB,CAAC,MAAM,QAAQ,SAAS,eAAe;AAC7D,MAAI,CAAC,gBAAgB,QAAQ,SAAS,UAAU,GAAG;AAClD;AAAA,EACD;AAEA,QAAM,UAAU,yBAAyB,OAAO;AAChD,QAAM,IAAI,WAAW,MAAM;AAC1B,SAAK,SAAS;AAAA,EACf,GAAG,OAAO;AAMV,MAAI,EAAE,OAAO;AACZ,MAAE,MAAM;AAAA,EACT;AACD;AAEA,IAAM,kBAAkB,CAAC,QAAQ,EAAC,sBAAqB,GAAG,eAAe,UAAU,MAAM,KAAK,0BAA0B,SAAS;AAEjI,IAAM,YAAY,YAAU,WAAW,GAAG,UAAU,QAAQ,WACtD,OAAO,WAAW,YAAY,OAAO,YAAY,MAAM;AAE7D,IAAM,2BAA2B,CAAC,EAAC,wBAAwB,KAAI,MAAM;AACpE,MAAI,0BAA0B,MAAM;AACnC,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,OAAO,SAAS,qBAAqB,KAAK,wBAAwB,GAAG;AACzE,UAAM,IAAI,UAAU,qFAAqF,qBAAqB,OAAO,OAAO,qBAAqB,GAAG;AAAA,EACrK;AAEA,SAAO;AACR;AAGO,IAAM,gBAAgB,CAAC,SAAS,YAAY;AAClD,QAAM,aAAa,QAAQ,KAAK;AAEhC,MAAI,YAAY;AACf,YAAQ,aAAa;AAAA,EACtB;AACD;AAEA,IAAM,cAAc,CAAC,SAAS,QAAQ,WAAW;AAChD,UAAQ,KAAK,MAAM;AACnB,SAAO,OAAO,OAAO,IAAI,MAAM,WAAW,GAAG,EAAC,UAAU,MAAM,OAAM,CAAC,CAAC;AACvE;AAGO,IAAM,eAAe,CAAC,SAAS,EAAC,SAAS,aAAa,UAAS,GAAG,mBAAmB;AAC3F,MAAI,YAAY,KAAK,YAAY,QAAW;AAC3C,WAAO;AAAA,EACR;AAEA,MAAI;AACJ,QAAM,iBAAiB,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvD,gBAAY,WAAW,MAAM;AAC5B,kBAAY,SAAS,YAAY,MAAM;AAAA,IACxC,GAAG,OAAO;AAAA,EACX,CAAC;AAED,QAAM,qBAAqB,eAAe,QAAQ,MAAM;AACvD,iBAAa,SAAS;AAAA,EACvB,CAAC;AAED,SAAO,QAAQ,KAAK,CAAC,gBAAgB,kBAAkB,CAAC;AACzD;AAEO,IAAM,kBAAkB,CAAC,EAAC,QAAO,MAAM;AAC7C,MAAI,YAAY,WAAc,CAAC,OAAO,SAAS,OAAO,KAAK,UAAU,IAAI;AACxE,UAAM,IAAI,UAAU,uEAAuE,OAAO,OAAO,OAAO,OAAO,GAAG;AAAA,EAC3H;AACD;AAGO,IAAM,iBAAiB,OAAO,SAAS,EAAC,SAAS,SAAQ,GAAG,iBAAiB;AACnF,MAAI,CAAC,WAAW,UAAU;AACzB,WAAO;AAAA,EACR;AAEA,QAAM,oBAAoB,OAAO,MAAM;AACtC,YAAQ,KAAK;AAAA,EACd,CAAC;AAED,SAAO,aAAa,QAAQ,MAAM;AACjC,sBAAkB;AAAA,EACnB,CAAC;AACF;;;AGrGA,SAAQ,yBAAwB;AAChC,SAAQ,oBAAmB;;;ACDpB,SAAS,SAAS,QAAQ;AAChC,SAAO,WAAW,QACd,OAAO,WAAW,YAClB,OAAO,OAAO,SAAS;AAC5B;AAEO,SAAS,iBAAiB,QAAQ;AACxC,SAAO,SAAS,MAAM,KAClB,OAAO,aAAa,SACpB,OAAO,OAAO,WAAW,cACzB,OAAO,OAAO,mBAAmB;AACtC;;;ADPA,IAAM,sBAAsB,YAAU,kBAAkB,gBAAgB,OAAO,OAAO,SAAS;AAE/F,IAAM,eAAe,CAAC,SAAS,YAAY,WAAW;AACrD,MAAI,OAAO,WAAW,UAAU;AAC/B,YAAQ,UAAU,EAAE,KAAK,kBAAkB,MAAM,CAAC;AAClD,WAAO;AAAA,EACR;AAEA,MAAI,iBAAiB,MAAM,GAAG;AAC7B,YAAQ,UAAU,EAAE,KAAK,MAAM;AAC/B,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,oBAAoB,MAAM,GAAG;AACjC,UAAM,IAAI,UAAU,2EAA2E;AAAA,EAChG;AAEA,MAAI,CAAC,iBAAiB,OAAO,KAAK,GAAG;AACpC,UAAM,IAAI,UAAU,qDAAsD;AAAA,EAC3E;AAEA,UAAQ,UAAU,EAAE,KAAK,OAAO,KAAK;AACrC,SAAO;AACR;AAEO,IAAM,iBAAiB,aAAW;AACxC,MAAI,QAAQ,WAAW,MAAM;AAC5B,YAAQ,aAAa,aAAa,KAAK,QAAW,SAAS,QAAQ;AAAA,EACpE;AAEA,MAAI,QAAQ,WAAW,MAAM;AAC5B,YAAQ,aAAa,aAAa,KAAK,QAAW,SAAS,QAAQ;AAAA,EACpE;AAEA,MAAI,QAAQ,QAAQ,QAAW;AAC9B,YAAQ,UAAU,aAAa,KAAK,QAAW,SAAS,KAAK;AAAA,EAC9D;AACD;;;AEzCA,SAAQ,kBAAkB,oBAAmB;AAC7C,SAAQ,cAAAE,mBAAiB;;;ACDlB,IAAM,oBAAoB,OAAO,QAAQ,EAAC,MAAAC,OAAM,cAAc,SAAS,eAAe,UAAU,eAAe,SAAQ,GAAG,EAAC,YAAY,OAAO,kBAAiB,IAAI,CAAC,MAAM;AAChL,MAAI,CAAC,gBAAgB,MAAM,GAAG;AAC7B,UAAM,IAAI,MAAM,gFAAgF;AAAA,EACjG;AAEA,QAAM,QAAQA,MAAK;AACnB,QAAM,SAAS;AAEf,MAAI;AACH,qBAAiB,SAAS,QAAQ;AACjC,YAAM,YAAY,aAAa,KAAK;AACpC,YAAM,iBAAiB,aAAa,SAAS,EAAE,OAAO,KAAK;AAC3D,kBAAY,EAAC,gBAAgB,OAAO,SAAS,eAAe,UAAU,UAAS,CAAC;AAAA,IACjF;AAEA,qBAAiB,EAAC,OAAO,cAAc,SAAS,eAAe,UAAU,eAAe,UAAS,CAAC;AAClG,WAAO,SAAS,KAAK;AAAA,EACtB,SAAS,OAAO;AACf,UAAM,eAAe,SAAS,KAAK;AACnC,UAAM;AAAA,EACP;AACD;AAEA,IAAM,mBAAmB,CAAC,EAAC,OAAO,SAAS,eAAe,UAAU,eAAe,UAAS,MAAM;AACjG,QAAM,iBAAiB,cAAc,KAAK;AAC1C,MAAI,mBAAmB,QAAW;AACjC,gBAAY,EAAC,gBAAgB,OAAO,SAAS,eAAe,UAAU,UAAS,CAAC;AAAA,EACjF;AACD;AAEA,IAAM,cAAc,CAAC,EAAC,gBAAgB,OAAO,SAAS,eAAe,UAAU,UAAS,MAAM;AAC7F,QAAM,YAAY,QAAQ,cAAc;AACxC,QAAM,YAAY,MAAM,SAAS;AAEjC,MAAI,aAAa,WAAW;AAC3B,gBAAY,gBAAgB,OAAO,UAAU,SAAS;AACtD;AAAA,EACD;AAEA,QAAM,iBAAiB,cAAc,gBAAgB,YAAY,MAAM,MAAM;AAE7E,MAAI,mBAAmB,QAAW;AACjC,gBAAY,gBAAgB,OAAO,UAAU,SAAS;AAAA,EACvD;AAEA,QAAM,IAAI,eAAe;AAC1B;AAEA,IAAM,cAAc,CAAC,gBAAgB,OAAO,UAAU,cAAc;AACnE,QAAM,WAAW,SAAS,gBAAgB,OAAO,SAAS;AAC1D,QAAM,SAAS;AAChB;AAEA,IAAM,kBAAkB,YAAU,OAAO,WAAW,YAAY,WAAW,QAAQ,OAAO,OAAO,OAAO,aAAa,MAAM;AAE3H,IAAM,eAAe,WAAS;AAvD9B;AAwDC,QAAM,cAAc,OAAO;AAE3B,MAAI,gBAAgB,UAAU;AAC7B,WAAO;AAAA,EACR;AAEA,MAAI,gBAAgB,YAAY,UAAU,MAAM;AAC/C,WAAO;AAAA,EACR;AAGA,OAAI,gBAAW,WAAX,mBAAmB,SAAS,QAAQ;AACvC,WAAO;AAAA,EACR;AAEA,QAAM,gBAAgB,eAAe,KAAK,KAAK;AAE/C,MAAI,kBAAkB,wBAAwB;AAC7C,WAAO;AAAA,EACR;AAEA,MAAI,kBAAkB,qBAAqB;AAC1C,WAAO;AAAA,EACR;AAEA,MACC,OAAO,UAAU,MAAM,UAAU,KAC9B,OAAO,UAAU,MAAM,UAAU,KACjC,eAAe,KAAK,MAAM,MAAM,MAAM,wBACxC;AACD,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AAEA,IAAM,EAAC,UAAU,eAAc,IAAI,OAAO;AAEnC,IAAM,iBAAN,cAA6B,MAAM;AAAA,EACzC,OAAO;AAAA,EAEP,cAAc;AACb,UAAM,oBAAoB;AAAA,EAC3B;AACD;;;ACpGO,IAAM,WAAW,WAAS;AAE1B,IAAM,OAAO,MAAM;AAEnB,IAAM,kBAAkB,CAAC,EAAC,SAAQ,MAAM;AAExC,IAAM,oBAAoB,WAAS;AACzC,QAAM,IAAI,MAAM,6CAA6C,OAAO,KAAK,CAAC,EAAE;AAC7E;AAEO,IAAM,gBAAgB,oBAAkB,eAAe;;;ACP9D,eAAsB,uBAAuB,QAAQ,SAAS;AAC7D,SAAO,kBAAkB,QAAQ,oBAAoB,OAAO;AAC7D;AAEA,IAAM,kBAAkB,OAAO,EAAC,UAAU,IAAI,YAAY,CAAC,EAAC;AAE5D,IAAM,iBAAiB,WAAS,YAAY,OAAO,KAAK;AACxD,IAAM,cAAc,IAAI,YAAY;AAEpC,IAAM,gBAAgB,WAAS,IAAI,WAAW,KAAK;AAEnD,IAAM,0BAA0B,WAAS,IAAI,WAAW,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAExG,IAAM,2BAA2B,CAAC,gBAAgB,cAAc,eAAe,MAAM,GAAG,SAAS;AAGjG,IAAM,sBAAsB,CAAC,gBAAgB,EAAC,UAAU,QAAQ,eAAc,GAAG,WAAW;AAC3F,QAAM,cAAc,qBAAqB,IAAI,kBAAkB,UAAU,MAAM,IAAI,sBAAsB,UAAU,MAAM;AACzH,MAAI,WAAW,WAAW,EAAE,IAAI,gBAAgB,cAAc;AAC9D,SAAO;AACR;AAKA,IAAM,wBAAwB,CAAC,UAAU,WAAW;AACnD,MAAI,UAAU,SAAS,YAAY;AAClC,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,IAAI,YAAY,qBAAqB,MAAM,CAAC;AAChE,MAAI,WAAW,WAAW,EAAE,IAAI,IAAI,WAAW,QAAQ,GAAG,CAAC;AAC3D,SAAO;AACR;AAMA,IAAM,oBAAoB,CAAC,UAAU,WAAW;AAC/C,MAAI,UAAU,SAAS,eAAe;AACrC,aAAS,OAAO,MAAM;AACtB,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,IAAI,YAAY,QAAQ,EAAC,eAAe,qBAAqB,MAAM,EAAC,CAAC;AACzF,MAAI,WAAW,WAAW,EAAE,IAAI,IAAI,WAAW,QAAQ,GAAG,CAAC;AAC3D,SAAO;AACR;AAGA,IAAM,uBAAuB,YAAU,gBAAgB,KAAK,KAAK,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,YAAY,CAAC;AAE1G,IAAM,eAAe;AAErB,IAAM,sBAAsB,CAAC,EAAC,UAAU,OAAM,MAAM,qBAAqB,IAAI,WAAW,SAAS,MAAM,GAAG,MAAM;AAQhH,IAAM,uBAAuB,MAAM,YAAY,YAAY;AAE3D,IAAM,qBAAqB;AAAA,EAC1B,MAAM;AAAA,EACN,cAAc;AAAA,IACb,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,EACT;AAAA,EACA,SAAS;AAAA,EACT,eAAe;AAAA,EACf,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AACX;;;ACjFA,eAAsB,kBAAkB,QAAQ,SAAS;AACxD,MAAI,EAAE,YAAY,aAAa;AAC9B,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACnE;AAEA,MAAI;AACH,WAAO,wBAAwB,MAAM,uBAAuB,QAAQ,OAAO,CAAC;AAAA,EAC7E,SAAS,OAAO;AACf,QAAI,MAAM,iBAAiB,QAAW;AACrC,YAAM,eAAe,wBAAwB,MAAM,YAAY;AAAA,IAChE;AAEA,UAAM;AAAA,EACP;AACD;AAGA,IAAM,0BAA0B,iBAAe,WAAW,OAAO,KAAK,WAAW;;;AChBjF,eAAsB,kBAAkB,QAAQ,SAAS;AACxD,SAAO,kBAAkB,QAAQ,eAAe,OAAO;AACxD;AAEA,IAAM,aAAa,OAAO,EAAC,UAAU,IAAI,aAAa,IAAI,YAAY,EAAC;AAEvE,IAAM,iBAAiB,CAAC,OAAO,EAAC,YAAW,MAAM,YAAY,OAAO,OAAO,EAAC,QAAQ,KAAI,CAAC;AAEzF,IAAM,iBAAiB,CAAC,gBAAgB,EAAC,SAAQ,MAAM,WAAW;AAElE,IAAM,sBAAsB,CAAC,gBAAgB,cAAc,eAAe,MAAM,GAAG,SAAS;AAE5F,IAAM,sBAAsB,CAAC,EAAC,YAAW,MAAM;AAC9C,QAAM,aAAa,YAAY,OAAO;AACtC,SAAO,eAAe,KAAK,SAAY;AACxC;AAEA,IAAM,gBAAgB;AAAA,EACrB,MAAM;AAAA,EACN,cAAc;AAAA,IACb,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,EACT;AAAA,EACA,SAAS;AAAA,EACT,eAAe;AAAA,EACf,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AACX;;;AL/BA,0BAAwB;AAExB,IAAM,uBAAuB,WAAS;AACrC,MAAI,UAAU,QAAW;AACxB,UAAM,IAAI,UAAU,yDAAyD;AAAA,EAC9E;AACD;AAEA,IAAM,eAAe,CAAC,EAAC,OAAO,UAAS,MAAM;AAC5C,MAAI,OAAO,cAAc,UAAU;AAClC,WAAO;AAAA,EACR;AAEA,uBAAqB,KAAK;AAC1B,SAAO,aAAa,SAAS;AAC9B;AAGO,IAAM,kBAAkB,aAAW;AACzC,QAAM,QAAQ,aAAa,OAAO;AAElC,MAAI,SAAS,KAAK,GAAG;AACpB,UAAM,IAAI,UAAU,oDAAoD;AAAA,EACzE;AAEA,SAAO;AACR;AAEA,IAAM,WAAW,CAAC,EAAC,OAAO,UAAS,MAAM;AACxC,MAAI,OAAO,cAAc,UAAU;AAClC,WAAO;AAAA,EACR;AAEA,uBAAqB,KAAK;AAC1B,SAAO,iBAAiB,SAAS;AAClC;AAGO,IAAM,cAAc,CAAC,SAAS,YAAY;AAChD,QAAM,QAAQ,SAAS,OAAO;AAE9B,MAAI,UAAU,QAAW;AACxB;AAAA,EACD;AAEA,MAAI,SAAS,KAAK,GAAG;AACpB,UAAM,KAAK,QAAQ,KAAK;AAAA,EACzB,OAAO;AACN,YAAQ,MAAM,IAAI,KAAK;AAAA,EACxB;AACD;AAGO,IAAM,gBAAgB,CAAC,SAAS,EAAC,IAAG,MAAM;AAChD,MAAI,CAAC,OAAQ,CAAC,QAAQ,UAAU,CAAC,QAAQ,QAAS;AACjD;AAAA,EACD;AAEA,QAAM,YAAQ,oBAAAC,SAAY;AAE1B,MAAI,QAAQ,QAAQ;AACnB,UAAM,IAAI,QAAQ,MAAM;AAAA,EACzB;AAEA,MAAI,QAAQ,QAAQ;AACnB,UAAM,IAAI,QAAQ,MAAM;AAAA,EACzB;AAEA,SAAO;AACR;AAGA,IAAM,kBAAkB,OAAO,QAAQ,kBAAkB;AAExD,MAAI,CAAC,UAAU,kBAAkB,QAAW;AAC3C;AAAA,EACD;AAGA,QAAMC,YAAW,CAAC;AAElB,SAAO,QAAQ;AAEf,MAAI;AACH,WAAO,MAAM;AAAA,EACd,SAAS,OAAO;AACf,WAAO,MAAM;AAAA,EACd;AACD;AAEA,IAAM,mBAAmB,CAAC,QAAQ,EAAC,UAAU,QAAQ,UAAS,MAAM;AACnE,MAAI,CAAC,UAAU,CAAC,QAAQ;AACvB;AAAA,EACD;AAGA,MAAI,aAAa,UAAU,aAAa,SAAS;AAChD,WAAO,kBAAU,QAAQ,EAAC,UAAS,CAAC;AAAA,EACrC;AAEA,MAAI,aAAa,QAAQ,aAAa,UAAU;AAC/C,WAAO,kBAAkB,QAAQ,EAAC,UAAS,CAAC;AAAA,EAC7C;AAEA,SAAO,cAAc,QAAQ,WAAW,QAAQ;AACjD;AAEA,IAAM,gBAAgB,OAAO,QAAQ,WAAW,aAAa;AAC5D,QAAM,SAAS,MAAM,kBAAkB,QAAQ,EAAC,UAAS,CAAC;AAC1D,SAAO,OAAO,SAAS,QAAQ;AAChC;AAGO,IAAM,mBAAmB,OAAO,EAAC,QAAQ,QAAQ,IAAG,GAAG,EAAC,UAAU,QAAQ,UAAS,GAAG,gBAAgB;AAC5G,QAAM,gBAAgB,iBAAiB,QAAQ,EAAC,UAAU,QAAQ,UAAS,CAAC;AAC5E,QAAM,gBAAgB,iBAAiB,QAAQ,EAAC,UAAU,QAAQ,UAAS,CAAC;AAC5E,QAAM,aAAa,iBAAiB,KAAK,EAAC,UAAU,QAAQ,WAAW,YAAY,EAAC,CAAC;AAErF,MAAI;AACH,WAAO,MAAM,QAAQ,IAAI,CAAC,aAAa,eAAe,eAAe,UAAU,CAAC;AAAA,EACjF,SAAS,OAAO;AACf,WAAO,QAAQ,IAAI;AAAA,MAClB,EAAC,OAAO,QAAQ,MAAM,QAAQ,UAAU,MAAM,SAAQ;AAAA,MACtD,gBAAgB,QAAQ,aAAa;AAAA,MACrC,gBAAgB,QAAQ,aAAa;AAAA,MACrC,gBAAgB,KAAK,UAAU;AAAA,IAChC,CAAC;AAAA,EACF;AACD;;;AMnIA,IAAM,0BAA0B,YAAY;AAAC,GAAG,EAAE,YAAY;AAE9D,IAAM,cAAc,CAAC,QAAQ,SAAS,SAAS,EAAE,IAAI,cAAY;AAAA,EAChE;AAAA,EACA,QAAQ,yBAAyB,wBAAwB,QAAQ;AAClE,CAAC;AAGM,IAAM,eAAe,CAAC,SAAS,YAAY;AACjD,aAAW,CAAC,UAAU,UAAU,KAAK,aAAa;AAEjD,UAAM,QAAQ,OAAO,YAAY,aAC9B,IAAI,SAAS,QAAQ,MAAM,WAAW,OAAO,QAAQ,GAAG,IAAI,IAC5D,WAAW,MAAM,KAAK,OAAO;AAEhC,YAAQ,eAAe,SAAS,UAAU,EAAC,GAAG,YAAY,MAAK,CAAC;AAAA,EACjE;AACD;AAGO,IAAM,oBAAoB,aAAW,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC5E,UAAQ,GAAG,QAAQ,CAAC,UAAU,WAAW;AACxC,YAAQ,EAAC,UAAU,OAAM,CAAC;AAAA,EAC3B,CAAC;AAED,UAAQ,GAAG,SAAS,WAAS;AAC5B,WAAO,KAAK;AAAA,EACb,CAAC;AAED,MAAI,QAAQ,OAAO;AAClB,YAAQ,MAAM,GAAG,SAAS,WAAS;AAClC,aAAO,KAAK;AAAA,IACb,CAAC;AAAA,EACF;AACD,CAAC;;;ACnCD,SAAQ,UAAAC,eAAa;AACrB,SAAQ,gBAAAC,qBAAmB;AAE3B,IAAM,gBAAgB,CAAC,MAAM,OAAO,CAAC,MAAM;AAC1C,MAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACzB,WAAO,CAAC,IAAI;AAAA,EACb;AAEA,SAAO,CAAC,MAAM,GAAG,IAAI;AACtB;AAEA,IAAM,mBAAmB;AAEzB,IAAM,YAAY,SAAO;AACxB,MAAI,OAAO,QAAQ,YAAY,iBAAiB,KAAK,GAAG,GAAG;AAC1D,WAAO;AAAA,EACR;AAEA,SAAO,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC;AACtC;AAEO,IAAM,cAAc,CAAC,MAAM,SAAS,cAAc,MAAM,IAAI,EAAE,KAAK,GAAG;AAEtE,IAAM,oBAAoB,CAAC,MAAM,SAAS,cAAc,MAAM,IAAI,EAAE,IAAI,SAAO,UAAU,GAAG,CAAC,EAAE,KAAK,GAAG;AAE9G,IAAM,gBAAgB;AAmBtB,IAAM,kBAAkB,gBAAc;AACrC,QAAM,mBAAmB,OAAO;AAEhC,MAAI,qBAAqB,UAAU;AAClC,WAAO;AAAA,EACR;AAEA,MAAI,qBAAqB,UAAU;AAClC,WAAO,OAAO,UAAU;AAAA,EACzB;AAEA,MACC,qBAAqB,YAClB,eAAe,QACf,EAAE,sBAAsBC,kBACxB,YAAY,YACd;AACD,UAAM,eAAe,OAAO,WAAW;AAEvC,QAAI,iBAAiB,UAAU;AAC9B,aAAO,WAAW;AAAA,IACnB;AAEA,QAAIC,QAAO,SAAS,WAAW,MAAM,GAAG;AACvC,aAAO,WAAW,OAAO,SAAS;AAAA,IACnC;AAEA,UAAM,IAAI,UAAU,eAAe,YAAY,iCAAiC;AAAA,EACjF;AAEA,QAAM,IAAI,UAAU,eAAe,gBAAgB,0BAA0B;AAC9E;AAEA,IAAM,eAAe,CAAC,QAAQ,YAAY,UAAU,SAAS,OAAO,WAAW,KAAK,WAAW,WAAW,IACvG,CAAC,GAAG,QAAQ,GAAG,UAAU,IACzB;AAAA,EACD,GAAG,OAAO,MAAM,GAAG,EAAE;AAAA,EACrB,GAAG,OAAO,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;AAAA,EAChC,GAAG,WAAW,MAAM,CAAC;AACtB;AAED,IAAM,gBAAgB,CAAC,EAAC,WAAW,aAAa,QAAQ,OAAO,SAAQ,MAAM;AAC5E,QAAM,iBAAiB,YAAY,UAAU,IAAI,KAAK;AACtD,QAAM,iBAAiB,eAAe,MAAM,aAAa,EAAE,OAAO,OAAO;AACzE,QAAM,YAAY;AAAA,IACjB;AAAA,IACA;AAAA,IACA,eAAe,WAAW,GAAG;AAAA,EAC9B;AAEA,MAAI,UAAU,YAAY,QAAQ;AACjC,WAAO;AAAA,EACR;AAEA,QAAM,aAAa,YAAY,KAAK;AACpC,QAAM,mBAAmB,MAAM,QAAQ,UAAU,IAC9C,WAAW,IAAI,CAAAC,gBAAc,gBAAgBA,WAAU,CAAC,IACxD,CAAC,gBAAgB,UAAU,CAAC;AAC/B,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,eAAe,SAAS,GAAG;AAAA,EAC5B;AACD;AAEO,IAAM,iBAAiB,CAAC,WAAW,gBAAgB;AACzD,MAAI,SAAS,CAAC;AAEd,aAAW,CAAC,OAAO,QAAQ,KAAK,UAAU,QAAQ,GAAG;AACpD,aAAS,cAAc,EAAC,WAAW,aAAa,QAAQ,OAAO,SAAQ,CAAC;AAAA,EACzE;AAEA,SAAO;AACR;;;ACrHA,SAAQ,gBAAe;AACvB,OAAOC,cAAa;AAEb,IAAM,iBAAiB,SAAS,OAAO,EAAE;AAEhD,IAAM,WAAW,CAAC,OAAO,YAAY,OAAO,KAAK,EAAE,SAAS,SAAS,GAAG;AAExE,IAAM,eAAe,MAAM;AAC1B,QAAM,OAAO,oBAAI,KAAK;AACtB,SAAO,GAAG,SAAS,KAAK,SAAS,GAAG,CAAC,CAAC,IAAI,SAAS,KAAK,WAAW,GAAG,CAAC,CAAC,IAAI,SAAS,KAAK,WAAW,GAAG,CAAC,CAAC,IAAI,SAAS,KAAK,gBAAgB,GAAG,CAAC,CAAC;AAClJ;AAEO,IAAM,aAAa,CAAC,gBAAgB,EAAC,QAAO,MAAM;AACxD,MAAI,CAAC,SAAS;AACb;AAAA,EACD;AAEA,EAAAA,SAAQ,OAAO,MAAM,IAAI,aAAa,CAAC,KAAK,cAAc;AAAA,CAAI;AAC/D;;;AzBDA,IAAM,qBAAqB,MAAO,MAAO;AAEzC,IAAM,SAAS,CAAC,EAAC,KAAK,WAAW,WAAW,aAAa,UAAU,SAAQ,MAAM;AAChF,QAAM,MAAM,YAAY,EAAC,GAAGC,SAAQ,KAAK,GAAG,UAAS,IAAI;AAEzD,MAAI,aAAa;AAChB,WAAO,cAAc,EAAC,KAAK,KAAK,UAAU,SAAQ,CAAC;AAAA,EACpD;AAEA,SAAO;AACR;AAEA,IAAM,kBAAkB,CAAC,MAAM,MAAM,UAAU,CAAC,MAAM;AACrD,QAAM,SAAS,mBAAAC,QAAW,OAAO,MAAM,MAAM,OAAO;AACpD,SAAO,OAAO;AACd,SAAO,OAAO;AACd,YAAU,OAAO;AAEjB,YAAU;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,mBAAmB;AAAA,IACnB,WAAW;AAAA,IACX,aAAa;AAAA,IACb,UAAU,QAAQ,OAAOD,SAAQ,IAAI;AAAA,IACrC,UAAUA,SAAQ;AAAA,IAClB,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,KAAK;AAAA,IACL,aAAa;AAAA,IACb,SAAS;AAAA,IACT,GAAG;AAAA,EACJ;AAEA,UAAQ,MAAM,OAAO,OAAO;AAE5B,UAAQ,QAAQ,eAAe,OAAO;AAEtC,MAAIA,SAAQ,aAAa,WAAWE,MAAK,SAAS,MAAM,MAAM,MAAM,OAAO;AAE1E,SAAK,QAAQ,IAAI;AAAA,EAClB;AAEA,SAAO,EAAC,MAAM,MAAM,SAAS,OAAM;AACpC;AAEA,IAAM,eAAe,CAAC,SAAS,OAAO,UAAU;AAC/C,MAAI,OAAO,UAAU,YAAY,CAACC,QAAO,SAAS,KAAK,GAAG;AAEzD,WAAO,UAAU,SAAY,SAAY;AAAA,EAC1C;AAEA,MAAI,QAAQ,mBAAmB;AAC9B,WAAO,kBAAkB,KAAK;AAAA,EAC/B;AAEA,SAAO;AACR;AAEO,SAAS,MAAM,MAAM,MAAM,SAAS;AAC1C,QAAM,SAAS,gBAAgB,MAAM,MAAM,OAAO;AAClD,QAAM,UAAU,YAAY,MAAM,IAAI;AACtC,QAAM,iBAAiB,kBAAkB,MAAM,IAAI;AACnD,aAAW,gBAAgB,OAAO,OAAO;AAEzC,kBAAgB,OAAO,OAAO;AAE9B,MAAI;AACJ,MAAI;AACH,cAAU,aAAa,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,OAAO;AAAA,EACtE,SAAS,OAAO;AAEf,UAAM,eAAe,IAAI,aAAa,aAAa;AACnD,UAAM,eAAe,QAAQ,OAAO,UAAU;AAAA,MAC7C;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,IACT,CAAC,CAAC;AACF,iBAAa,cAAc,YAAY;AACvC,WAAO;AAAA,EACR;AAEA,QAAM,iBAAiB,kBAAkB,OAAO;AAChD,QAAM,eAAe,aAAa,SAAS,OAAO,SAAS,cAAc;AACzE,QAAM,cAAc,eAAe,SAAS,OAAO,SAAS,YAAY;AAExE,QAAM,UAAU,EAAC,YAAY,MAAK;AAElC,UAAQ,OAAO,YAAY,KAAK,MAAM,QAAQ,KAAK,KAAK,OAAO,CAAC;AAChE,UAAQ,SAAS,cAAc,KAAK,MAAM,SAAS,OAAO;AAE1D,QAAM,gBAAgB,YAAY;AACjC,UAAM,CAAC,EAAC,OAAO,UAAU,QAAQ,SAAQ,GAAG,cAAc,cAAc,SAAS,IAAI,MAAM,iBAAiB,SAAS,OAAO,SAAS,WAAW;AAChJ,UAAM,SAAS,aAAa,OAAO,SAAS,YAAY;AACxD,UAAM,SAAS,aAAa,OAAO,SAAS,YAAY;AACxD,UAAM,MAAM,aAAa,OAAO,SAAS,SAAS;AAElD,QAAI,SAAS,aAAa,KAAK,WAAW,MAAM;AAC/C,YAAM,gBAAgB,UAAU;AAAA,QAC/B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY,QAAQ,eAAe,OAAO,QAAQ,SAAS,OAAO,QAAQ,OAAO,UAAU;AAAA,QAC3F,QAAQ,QAAQ;AAAA,MACjB,CAAC;AAED,UAAI,CAAC,OAAO,QAAQ,QAAQ;AAC3B,eAAO;AAAA,MACR;AAEA,YAAM;AAAA,IACP;AAEA,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,IACT;AAAA,EACD;AAEA,QAAM,oBAAoB,gBAAQ,aAAa;AAE/C,cAAY,SAAS,OAAO,OAAO;AAEnC,UAAQ,MAAM,cAAc,SAAS,OAAO,OAAO;AAEnD,iBAAe,OAAO;AACtB,eAAa,SAAS,iBAAiB;AACvC,SAAO;AACR;AAEO,SAAS,UAAU,MAAM,MAAM,SAAS;AAC9C,QAAM,SAAS,gBAAgB,MAAM,MAAM,OAAO;AAClD,QAAM,UAAU,YAAY,MAAM,IAAI;AACtC,QAAM,iBAAiB,kBAAkB,MAAM,IAAI;AACnD,aAAW,gBAAgB,OAAO,OAAO;AAEzC,QAAM,QAAQ,gBAAgB,OAAO,OAAO;AAE5C,MAAI;AACJ,MAAI;AACH,aAAS,aAAa,UAAU,OAAO,MAAM,OAAO,MAAM,EAAC,GAAG,OAAO,SAAS,MAAK,CAAC;AAAA,EACrF,SAAS,OAAO;AACf,UAAM,UAAU;AAAA,MACf;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,IACT,CAAC;AAAA,EACF;AAEA,QAAM,SAAS,aAAa,OAAO,SAAS,OAAO,QAAQ,OAAO,KAAK;AACvE,QAAM,SAAS,aAAa,OAAO,SAAS,OAAO,QAAQ,OAAO,KAAK;AAEvE,MAAI,OAAO,SAAS,OAAO,WAAW,KAAK,OAAO,WAAW,MAAM;AAClE,UAAM,QAAQ,UAAU;AAAA,MACvB;AAAA,MACA;AAAA,MACA,OAAO,OAAO;AAAA,MACd,QAAQ,OAAO;AAAA,MACf,UAAU,OAAO;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,OAAO,SAAS,OAAO,MAAM,SAAS;AAAA,MAChD,YAAY;AAAA,MACZ,QAAQ,OAAO,WAAW;AAAA,IAC3B,CAAC;AAED,QAAI,CAAC,OAAO,QAAQ,QAAQ;AAC3B,aAAO;AAAA,IACR;AAEA,UAAM;AAAA,EACP;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,EACT;AACD;AAEA,IAAM,uBAAuB,CAAC,EAAC,OAAO,WAAW,MAAK,MAAM,UAAU,UAAa,cAAc,UAAa,UAAU,SACrH,EAAC,OAAO,UAAS,IACjB,CAAC;AAEJ,IAAM,yBAAyB,CAAC,UAAU,CAAC,OAAO;AAAA,EACjD,aAAa;AAAA,EACb,GAAG,qBAAqB,OAAO;AAAA,EAC/B,GAAG;AACJ;AAEA,SAAS,QAAQ,SAAS;AACzB,WAASC,GAAE,uBAAuB,aAAa;AAC9C,QAAI,CAAC,MAAM,QAAQ,kBAAkB,GAAG;AACvC,aAAO,QAAQ,EAAC,GAAG,SAAS,GAAG,mBAAkB,CAAC;AAAA,IACnD;AAEA,UAAM,CAAC,MAAM,GAAG,IAAI,IAAI,eAAe,oBAAoB,WAAW;AACtE,WAAO,MAAM,MAAM,MAAM,uBAAuB,OAAO,CAAC;AAAA,EACzD;AAEA,EAAAA,GAAE,OAAO,CAAC,cAAc,gBAAgB;AACvC,QAAI,CAAC,MAAM,QAAQ,SAAS,GAAG;AAC9B,YAAM,IAAI,UAAU,0EAA0E;AAAA,IAC/F;AAEA,UAAM,CAAC,MAAM,GAAG,IAAI,IAAI,eAAe,WAAW,WAAW;AAC7D,WAAO,UAAU,MAAM,MAAM,uBAAuB,OAAO,CAAC;AAAA,EAC7D;AAEA,SAAOA;AACR;AAEO,IAAMA,KAAI,QAAQ;;;A0B1QzB,OAAOC,SAAQ;AACf,OAAOC,WAAU;AACjB,OAAO,YAAY;AACnB,OAAOC,SAAQ;AAEf,IAAM,UAAUA,IAAG,SAAS,MAAM;AAClC,IAAM,YAAY,QAAQ,IAAI,kBAAkBD,MAAK,KAAKC,IAAG,QAAQ,GAAG,QAAQ;AAChF,IAAM,WAAWD,MAAK,KAAK,WAAW,cAAc;AAGpD,SAAS,YAAY,KAAqB;AACzC,QAAM,OAAO,OAAO,WAAW,KAAK,EAAE,OAAO,GAAG,EAAE,OAAO,KAAK;AAC9D,QAAME,YAAW,GAAG,KAAK,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;AACrD,SAAOF,MAAK,KAAK,UAAUE,SAAQ;AACpC;AAGA,eAAsB,mBAAmB,KAAsC;AAC9E,MAAI,CAAC,SAAS;AACb,WAAO;AAAA,EACR;AAEA,QAAM,WAAW,YAAY,GAAG;AAChC,MAAI;AACH,UAAM,UAAU,MAAMH,IAAG,SAAS,UAAU,OAAO;AACnD,WAAO,KAAK,MAAM,OAAO;AAAA,EAC1B,SAAS,KAAc;AACtB,QAAI,eAAe,SAAS,UAAU,OAAO,IAAI,SAAS,UAAU;AACnE,aAAO;AAAA,IACR;AACA,UAAM;AAAA,EACP;AACD;AAGA,eAAsB,mBAAmB,KAAa,MAA8B;AACnF,MAAI,CAAC,SAAS;AACb;AAAA,EACD;AAEA,QAAM,WAAW,YAAY,GAAG;AAChC,QAAM,UAAU,KAAK,UAAU,MAAM,MAAM,CAAC;AAC5C,QAAMA,IAAG,MAAMC,MAAK,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAC1D,QAAMD,IAAG,UAAU,UAAU,SAAS,OAAO;AAC9C;;;AC1BA,IAAM,QAAQ,oBAAI,IAAgC;AAElD,SAAS,aAAa,OAAqC;AAC1D,SAAO,QAAQ,SAAS,iBAAiB,SAAS,YAAY,KAAK;AACpE;AAEO,SAAS,eAAe,OAAuC;AACrE,SAAO,QAAQ,SAAS,iBAAiB,SAAS,aAAa,KAAK;AACrE;AAEA,SAAS,SAAS,WAAmD;AACpE,MAAI;AACH,WAAO,KAAK,MAAM,SAAS;AAAA,EAC5B,QAAQ;AACP,WAAO;AAAA,EACR;AACD;AAOA,eAAsB,QACrB,KACA,UAA0C,EAAE,mBAAmB,MAAM,GAC3B;AAC1C,QAAM,EAAE,kBAAkB,IAAI;AAC9B,QAAM,SAAS,MAAM,IAAI,GAAG;AAC5B,MAAI,WAAW,MAAM;AACpB,QAAI,mBAAmB;AACtB,aAAO;AAAA,IACR;AAAA,EACD,WAAW,QAAQ;AAClB,WAAO;AAAA,EACR;AAEA,QAAM,aAAa,MAAM,mBAAmB,GAAG;AAC/C,MAAI,YAAY;AACf,WAAO;AAAA,EACR;AAEA,MAAI;AACH,UAAM,SAAS,MAAM,MAAM,OAAO,CAAC,QAAQ,UAAU,GAAG,CAAC;AACzD,UAAM,UAAU,KAAK,MAAM,OAAO,MAAM;AACxC,UAAM,IAAI,KAAK,OAAO;AACtB,UAAM,mBAAmB,KAAK,OAAO;AACrC,WAAO;AAAA,EACR,SAAS,KAAc;AACtB,QAAI,CAAC,aAAa,GAAG,GAAG;AACvB,YAAM;AAAA,IACP;AACA,UAAM,SAAS,SAAS,IAAI,MAAM;AAClC,QAAI,CAAC,QAAQ;AACZ,YAAM;AAAA,IACP;AACA,UAAM,EAAE,MAAM,SAAS,OAAO,IAAI,OAAO;AAIzC,UAAM,IAAI,KAAK,IAAI;AAEnB,QAAI,qBAAqB,SAAS,QAAQ;AACzC,aAAO;AAAA,IACR;AAEA,UAAM,eAAe,IAAI,MAAM,SAAS,EAAE,OAAO,IAAI,CAAC;AACtD,iBAAa,OAAO;AACpB,iBAAa,UAAU;AACvB,iBAAa,SAAS;AACtB,UAAM;AAAA,EACP;AACD;;;A5BpFA,IAAMI,UAAS;AAEf,UAAU,gBAAgB,KAAqC;AAC9D,QAAM,EAAE,eAAe,CAAC,GAAG,kBAAkB,CAAC,GAAG,mBAAmB,CAAC,EAAE,IAAI;AAC3E,QAAM,kBAAkB,EAAE,GAAG,cAAc,GAAG,iBAAiB,GAAG,iBAAiB;AACnF,aAAW,CAAC,KAAKC,QAAO,KAAK,OAAO,QAAQ,eAAe,GAAG;AAK7D,QAAI,QAAQ,eAAe;AAC1B;AAAA,IACD;AAEA,UAAM,aAAa,cAAAC,QAAO,WAAWD,QAAO;AAC5C,UAAM,GAAG,GAAG,IAAI,aAAa,WAAW,UAAUA,QAAO;AAAA,EAC1D;AACD;AAEA,eAAsB,qBAAqB,KAAsC;AAChF,QAAM,WAAsB,CAAC;AAE7B,mBAAiB,cAAc,gBAAgB,GAAG,GAAG;AACpD,QAAI;AACH,YAAM,EAAE,WAAW,IAAI,MAAM,QAAQ,UAAU;AAC/C,UAAI,CAAC,YAAY;AAChB;AAAA,MACD;AAEA,eAAS,KAAK;AAAA,QACb,QAAAD;AAAA,QACA,UAAU;AAAA,QACV,SAAS,IAAI,UAAU;AAAA,QACvB,MAAM;AAAA,QACN,QAAQ;AAAA,MACT,CAAC;AAAA,IACF,SAAS,KAAc;AACtB,UAAI,eAAe,GAAG,KAAK,IAAI,SAAS,QAAQ;AAC/C,iBAAS,KAAK;AAAA,UACb,QAAAA;AAAA,UACA,UAAU;AAAA,UACV,SAAS,mBAAmB,UAAU;AAAA,UACtC,MAAM;AAAA,UACN,QAAQ;AAAA,QACT,CAAC;AACD;AAAA,MACD;AACA,YAAM;AAAA,IACP;AAAA,EACD;AAEA,SAAO;AACR;;;A6BtDA,SAAS,MAAM,MAAsB;AACpC,SAAO,IAAI,OAAO,IAAI,IAAI,GAAG;AAC9B;AACA,SAAS,MAAMG,QAAuB;AACrC,SAAO,IAAI,OAAO,IAAIA,MAAK,GAAG;AAC/B;AAEA,SAAS,OAAOC,SAAwB;AACvC,SAAO,IAAI,OAAO,IAAIA,OAAM,QAAQ;AACrC;AAEA,SAAS,aAAaA,SAAwB;AAC7C,SAAO,IAAI,OAAO,SAASA,OAAM,QAAQ;AAC1C;AAEA,IAAM,yBAAmC;AAAA,EACxC,MAAM,KAAK;AAAA,EACX,MAAM,MAAM;AAAA,EACZ,MAAM,KAAK;AAAA,EACX,MAAM,IAAI;AAAA,EACV,OAAO,YAAY;AAAA,EACnB,OAAO,SAAS;AAAA,EAChB,OAAO,OAAO;AAAA,EACd,OAAO,MAAM;AAAA,EACb,OAAO,eAAe;AAAA,EACtB,OAAO,SAAS;AAAA,EAChB,OAAO,OAAO;AAAA,EACd,OAAO,KAAK;AAAA,EACZ,OAAO,YAAY;AAAA,EACnB,OAAO,SAAS;AAAA,EAChB,OAAO,YAAY;AAAA,EACnB,OAAO,SAAS;AAAA,EAChB,MAAM,QAAQ;AAAA,EACd,MAAM,QAAQ;AACf;AAEA,IAAM,mBAA6B;AAAA,EAClC,MAAM,QAAQ;AAAA,EACd,OAAO,eAAe;AAAA,EACtB,OAAO,kBAAkB;AAAA,EACzB,OAAO,eAAe;AAAA,EACtB,aAAa,eAAe;AAAA,EAC5B,aAAa,kBAAkB;AAAA,EAC/B,aAAa,eAAe;AAC7B;AAEA,IAAM,iBAA2B;AAAA,EAChC,MAAM,MAAM;AAAA,EACZ,MAAM,YAAY;AAAA,EAClB,MAAM,SAAS;AAAA,EACf,OAAO,OAAO;AAAA,EACd,MAAM,OAAO;AACd;AAEA,IAAM,qBAA+B;AAAA,EACpC,MAAM,UAAU;AAAA,EAChB,OAAO,WAAW;AAAA,EAClB,aAAa,WAAW;AACzB;AAEA,IAAM,sBAAgC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,SAAS,MAAM,MAAgB,YAA6B;AAC3D,SAAO,KAAK,KAAK,CAAC,OAAO,WAAW,MAAM,EAAE,CAAC;AAC9C;AAEO,SAAS,uBAAuB,KAAkB,YAA6B;AAErF,MAAI,oBAAoB,SAAS,UAAU,GAAG;AAC7C,WAAO;AAAA,EACR;AAEA,QAAM,WAAW,IAAI,YAAY,CAAC;AAGlC,MAAI,CAAC,SAAS,SAAS,QAAQ,KAAK,MAAM,kBAAkB,UAAU,GAAG;AACxE,WAAO;AAAA,EACR;AAGA,MAAI,CAAC,SAAS,SAAS,MAAM,KAAK,MAAM,gBAAgB,UAAU,GAAG;AACpE,WAAO;AAAA,EACR;AAGA,MAAI,CAAC,SAAS,SAAS,UAAU,KAAK,MAAM,oBAAoB,UAAU,GAAG;AAC5E,WAAO;AAAA,EACR;AAGA,SAAO,MAAM,wBAAwB,UAAU;AAChD;;;ACjGA,IAAM,WAAiC;AAAA,EACtC,EAAE,SAAS,YAAY,SAAS,0DAA0D;AAAA,EAC1F,EAAE,SAAS,UAAU,SAAS,0DAA0D;AAAA,EACxF,EAAE,SAAS,UAAU,SAAS,sDAAsD;AACrF;AAEO,SAAS,qBAAqB,YAAgD;AACpF,SAAO,SAAS,KAAK,CAAC,OAAO,GAAG,YAAY,UAAU,KAAK;AAC5D;;;ACTA,IAAMC,UAAS;AACf,IAAM,WAAW,SAAS;AAE1B,UAAU,cACT,OACAC,OACqB;AACrB,MAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACxC;AAAA,EACD;AAEA,QAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,MAAI,KAAK,WAAW,GAAG;AACtB;AAAA,EACD;AAEA,MAAI,KAAK,SAAS,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS;AAClD,UAAM,WAAWA,MAAK,IAAI,CAAC,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;AACtD,UAAM;AAAA,MACL,QAAAD;AAAA,MACA;AAAA,MACA,SAAS,kDAAkD,QAAQ;AAAA,MACnE,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AAAA,EACD;AAEA,aAAW,OAAO,MAAM;AACvB,WAAO,cAAc,MAAM,GAAG,GAAG,CAAC,GAAGC,OAAM,GAAG,CAAC;AAAA,EAChD;AACD;AAEO,UAAU,kBAAkB,KAAsC;AACxE,MAAI,IAAI,SAAS;AAChB,WAAO,cAAc,IAAI,SAAS,CAAC,CAAC;AAAA,EACrC;AACD;;;ACxCA,IAAAC,iBAAmB;;;ACKZ,IAAM,eAAuD;AAAA,EACnE,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;AAAA,EAC/B,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;AAAA,EAC/B,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;AAAA,EAC/B,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;AAAA,EAC/B,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;AAAA,EAC/B,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;AAAA,EAC/B,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AACjC;;;ADhBA,IAAMC,UAAS;AACf,IAAMC,YAAW,SAAS;AAEnB,UAAU,gBAAgB,KAAsC;AATvE;AAUC,MAAI,GAAC,SAAI,YAAJ,mBAAa,OAAM;AACvB,UAAM;AAAA,MACL,QAAAD;AAAA,MACA,UAAAC;AAAA,MACA,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AACA;AAAA,EACD;AAEA,QAAM,QAAQ,IAAI,QAAQ;AAC1B,MAAI,CAAC,eAAAC,QAAO,WAAW,KAAK,GAAG;AAC9B,UAAM;AAAA,MACL,QAAAF;AAAA,MACA,UAAAC;AAAA,MACA,SAAS,iBAAiB,KAAK;AAAA,MAC/B,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AACA;AAAA,EACD;AAEA,aAAW,CAACE,UAAS,UAAU,KAAK,cAAc;AACjD,QAAI,CAAC,WAAW,KAAK;AACpB;AAAA,IACD;AAEA,UAAM,WAAWA,SAAQ,QAAQ,UAAU,KAAK;AAChD,UAAM,SAAS,eAAAD,QAAO,MAAM,QAAQ;AACpC,QAAI,CAAC,eAAAA,QAAO,UAAU,UAAU,KAAK,GAAG;AACvC;AAAA,IACD;AACA,UAAM,gBAAe,iCAAQ,UAAS,MAAM,MAAK,iCAAQ,UAAS,EAAE;AACpE,UAAM,UAAU,qCAAqC,WAAW,eAAe,WAAW,GAAG;AAC7F,UAAM;AAAA,MACL,QAAAF;AAAA,MACA,UAAAC;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AACA;AAAA,EACD;AACD;;;AEtDA,IAAAG,iBAAoC;AAKpC,IAAMC,UAAS;AAEf,gBAAgB,oBAAoB,KAAkB,YAA6C;AAClG,QAAM,UAAU,aAAa,MAAM,QAAQ,YAAY,EAAE,mBAAmB,KAAK,CAAC,IAAI;AACtF,MAAI,CAAC,SAAS;AACb;AAAA,EACD;AACA,aAAW,CAAC,KAAKC,QAAO,KAAK,OAAO,QAAQ,QAAQ,gBAAgB,CAAC,CAAC,GAAG;AAKxE,QAAI,QAAQ,eAAe;AAC1B;AAAA,IACD;AAEA,UAAM,aAAa,eAAAC,QAAO,WAAWD,QAAO;AAC5C,UAAM,OAAO,GAAG,GAAG,IAAI,aAAa,WAAW,UAAUA,QAAO;AAEhE,UAAM;AACN,WAAO,oBAAoB,KAAK,IAAI;AAAA,EACrC;AACD;AAEA,eAAe,iBACd,YACA,aACA,oBAC0B;AAjC3B;AAkCC,QAAM,UAAU,MAAM,QAAQ,UAAU;AACxC,QAAM,cAAa,aAAQ,YAAR,mBAAiB;AACpC,MAAI,CAAC,YAAY;AAChB,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,eAAAC,QAAO,UAAU,aAAa,UAAU,GAAG;AAC/C,WAAO;AAAA,MACN,QAAAF;AAAA,MACA,UAAU;AAAA,MACV,SAAS,8BAA8B,UAAU,WAAW,UAAU,gDAAgD,kBAAkB;AAAA,MACxI,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AAAA,EACD;AAEA,SAAO;AACR;AAEA,eAAsB,uBAAuB,KAAsC;AArDnF;AAsDC,QAAM,sBAAqB,SAAI,YAAJ,mBAAa;AACxC,MAAI,CAAC,oBAAoB;AACxB,WAAO,CAAC;AAAA,EACT;AAEA,QAAM,cAAc,eAAAE,QAAO,WAAW,kBAAkB;AACxD,MAAI,CAAC,aAAa;AACjB,UAAM,IAAI,MAAM,sCAAsC,kBAAkB,GAAG;AAAA,EAC5E;AAEA,QAAM,WAAsB,CAAC;AAC7B,QAAM,UAAU,oBAAI,IAAY;AAEhC,mBAAiB,cAAc,oBAAoB,GAAG,GAAG;AACxD,QAAI,QAAQ,IAAI,UAAU,GAAG;AAC5B;AAAA,IACD;AAEA,YAAQ,IAAI,UAAU;AAEtB,QAAI;AACH,YAAM,UAAU,MAAM,iBAAiB,YAAY,aAAa,kBAAkB;AAClF,UAAI,SAAS;AACZ,iBAAS,KAAK,OAAO;AAAA,MACtB;AAAA,IACD,SAAS,KAAc;AACtB,UAAI,eAAe,GAAG,KAAK,IAAI,SAAS,QAAQ;AAC/C,iBAAS,KAAK;AAAA,UACb,QAAAF;AAAA,UACA,UAAU;AAAA,UACV,SAAS,8BAA8B,UAAU;AAAA,UACjD,MAAM;AAAA,UACN,QAAQ;AAAA,QACT,CAAC;AACD;AAAA,MACD;AACA,YAAM;AAAA,IACP;AAAA,EACD;AAEA,SAAO;AACR;;;AC/FA,IAAAG,iBAAmB;AAKnB,IAAMC,UAAS;AACf,IAAMC,YAAW,SAAS;AAEnB,UAAU,wBAAwB,KAAsC;AAR/E;AASC,MAAI,GAAC,SAAI,YAAJ,mBAAa,OAAM;AACvB;AAAA,EACD;AAEA,QAAM,qBAAqB;AAAA,IAC1B,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,EACR;AACA,MAAI,CAAC,mBAAmB,aAAa,GAAG;AACvC;AAAA,EACD;AAEA,QAAM,kBAAkB,mBAAmB,aAAa;AACxD,MAAI,oBAAoB,UAAU;AACjC;AAAA,EACD;AAEA,QAAM,cAAc,eAAAC,QAAO,WAAW,IAAI,QAAQ,IAAI;AACtD,QAAM,eAAe,eAAAA,QAAO,WAAW,eAAe;AAEtD,MAAI,CAAC,eAAe,CAAC,cAAc;AAClC;AAAA,EACD;AAEA,MAAI,aAAa,UAAU,YAAY,OAAO;AAC7C,UAAM;AAAA,MACL,QAAAF;AAAA,MACA,UAAAC;AAAA,MACA,SAAS,gBAAgB,aAAa,KAAK,iCAAiC,YAAY,KAAK;AAAA,MAC7F,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AAAA,EACD;AACD;;;AChBA,IAAM,SAAsC;AAAA,EAC3C,aAAa,CAAC,SAAS,YAAY,QAAQ;AAAA,EAC3C,UAAU,CAAC,SAAS,WAAW,QAAQ;AAAA,EACvC,UAAU,CAAC,SAAS,YAAY,QAAQ;AAAA,EACxC,MAAM,CAAC,SAAS,QAAQ;AAAA,EACxB,SAAS,CAAC,SAAS,YAAY,QAAQ;AAAA,EACvC,QAAQ,CAAC,SAAS,QAAQ;AAAA,EAC1B,YAAY,CAAC,SAAS,YAAY;AACnC;AAEA,SAAS,aAAa,KAAkB,SAA8C;AACrF,QAAM,WAAsB,CAAC;AAE7B,aAAW,CAAC,OAAO,UAAU,KAAK,OAAO,QAAQ,MAAM,GAAG;AACzD,QAAI;AACH,iBAAW,aAAa,YAAY;AACnC,kBAAU,OAAO,IAAI,KAAK,CAAC;AAAA,MAC5B;AAAA,IACD,SAAS,OAAO;AACf,UACC,iBAAiB,mBACjB,MAAM,cAAc,QAAQ,QAC5B,QAAQ,qBACP;AACD;AAAA,MACD;AAEA,UAAI,iBAAiB,OAAO;AAC3B,iBAAS,KAAK;AAAA,UACb,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,SAAS,MAAM;AAAA,UACf,MAAM;AAAA,UACN,QAAQ;AAAA,QACT,CAAC;AAAA,MACF,OAAO;AACN,cAAM;AAAA,MACP;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;AAEA,SAAS,mBAAmB,KAAkB,SAA8C;AAC3F,QAAM,WAAsB,CAAC;AAC7B,QAAM,EAAE,eAAe,CAAC,GAAG,kBAAkB,CAAC,GAAG,mBAAmB,CAAC,EAAE,IAAI;AAC3E,QAAM,kBAAkB,EAAE,GAAG,cAAc,GAAG,iBAAiB,GAAG,iBAAiB;AAEnF,aAAW,cAAc,OAAO,KAAK,YAAY,GAAG;AAEnD,QAAI,QAAQ,0BAA0B,WAAW,MAAM,WAAW,GAAG;AACpE;AAAA,IACD;AAEA,QAAI,uBAAuB,KAAK,UAAU,GAAG;AAC5C,eAAS,KAAK;AAAA,QACb,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS,GAAG,UAAU;AAAA,QACtB,MAAM;AAAA,QACN,QAAQ;AAAA,MACT,CAAC;AAAA,IACF;AAAA,EACD;AAEA,aAAW,cAAc,OAAO,KAAK,eAAe,GAAG;AACtD,UAAME,YAAW,qBAAqB,UAAU;AAChD,QAAIA,WAAU;AACb,eAAS,KAAK;AAAA,QACb,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS,GAAG,UAAU,8CAA8CA,UAAS,OAAO;AAAA,QACpF,MAAM;AAAA,QACN,QAAQ;AAAA,MACT,CAAC;AAAA,IACF;AAAA,EACD;AAEA,SAAO;AACR;AAEA,eAAsB,kBACrB,KACA,UACA,UAAoC,CAAC,GACjB;AACpB,QAAM,WAAsB;AAAA,IAC3B,GAAI,MAAM,qBAAqB,GAAG;AAAA,IAClC,GAAI,MAAM,uBAAuB,GAAG;AAAA,IACpC,GAAG,kBAAkB,GAAG;AAAA,IACxB,GAAG,aAAa,KAAK,OAAO;AAAA,IAC5B,GAAG,mBAAmB,KAAK,OAAO;AAAA,IAClC,GAAG,gBAAgB,GAAG;AAAA,IACtB,GAAG,wBAAwB,GAAG;AAAA,EAC/B;AAEA,MAAI,SAAS,WAAW,GAAG;AAC1B,WAAO,CAAC;AAAA,EACT;AAEA,SAAO;AAAA,IACN;AAAA,MACC;AAAA,MACA;AAAA,MACA,YAAY,SAAS,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,EAAE;AAAA,MACvD,cAAc,SAAS,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,EAAE;AAAA,MACzD,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IACtB;AAAA,EACD;AACD;;;ACtIA,SAAS,YAAY,KAA4B;AAChD,MAAI,CAAC,IAAI,KAAK;AACb,WAAO,CAAC;AAAA,EACT;AACA,SAAO,OAAO,IAAI,QAAQ,WAAW,CAAC,IAAI,GAAG,IAAI,OAAO,OAAO,IAAI,GAAG;AACvE;AAEA,eAAsB,cAAc,KAAkB,SAAyC;AAC9F,QAAM,UAAoB,CAAC;AAC3B,QAAM,WAAW,YAAY,GAAG;AAChC,QAAM,WAAW,MAAM,eAAe,SAAS,QAAQ;AAEvD,aAAW,CAAC,UAAU,OAAO,KAAK,OAAO,QAAQ,QAAQ,GAAG;AAC3D,UAAM,OAAO,QAAQ,SAAS,OAAO;AACrC,QAAI,KAAK,MAAM,aAAa,GAAG;AAC9B;AAAA,IACD;AACA,YAAQ,KAAK;AAAA,MACZ,UAAU;AAAA,QACT;AAAA,UACC,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM;AAAA,UACN,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IACtB,CAAC;AAAA,EACF;AAEA,SAAO;AACR;;;AChCA,eAAsB,OACrB,KACA,SACA,SACA,UAAyB,CAAC,GACN;AACpB,SAAO;AAAA,IACN,GAAI,MAAM,cAAc,KAAK,OAAO;AAAA,IACpC,GAAI,MAAM,kBAAkB,KAAK,SAAS,OAAO;AAAA,IACjD,GAAI,MAAM,cAAc,KAAK,OAAO;AAAA,EACrC;AACD;;;ACnBA,OAAOC,WAAU;AAGjB,SAASC,WAAU,MAAsB;AACxC,SAAO,KAAK,QAAQ,KAAK,GAAG,EAAE,QAAQ,MAAM,EAAE;AAC/C;AAEO,SAAS,gBAAgB,KAAkB,SAAyB;AAC1E,QAAM,OAAOA,WAAU,IAAI,IAAI;AAC/B,SAAOD,MAAK,KAAKA,MAAK,QAAQ,OAAO,GAAG,GAAG,IAAI,IAAI,IAAI,OAAO,MAAM;AACrE;;;AxEKA,IAAM,cAAcE,eAAc,IAAI,IAAI,mBAAmB,YAAY,GAAG,CAAC;AAC7E,IAAM,EAAE,QAAQ,IAAI,KAAK,MAAMC,cAAa,aAAa,OAAO,CAAC;AAEjE,IAAM,eAAe;AAcrB,eAAe,eAAgC;AAC9C,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvC,eAAAC,QAAI,KAAK,CAAC,KAAKC,OAAM,OAAO;AAC3B,UAAI,KAAK;AACR,eAAO,GAAG;AACV;AAAA,MACD;AAEA,YAAM,KAAKC,mBAAkB,IAAI,EAAE,IAAI,WAAW,KAAK,CAAC;AACxD,cAAQ,MAAM,KAAK,EAAE;AACrB,SAAG,GAAG,UAAU,MAAM;AACrB,gBAAQD,KAAI;AAAA,MACb,CAAC;AACD,SAAG,GAAG,SAAS,CAACE,SAAQ;AACvB,eAAOA,IAAG;AAAA,MACX,CAAC;AAAA,IACF,CAAC;AAAA,EACF,CAAC;AACF;AAEA,eAAe,eACd,MACA,sBAC0E;AAE1E,MAAI,KAAK,SAAS;AACjB,WAAO;AAAA,MACN,KAAK,KAAK,MAAM,MAAMC,IAAG,SAAS,KAAK,SAAS,OAAO,CAAC;AAAA,MACxD,SAAS,KAAK;AAAA,IACf;AAAA,EACD;AAGA,MAAI,KAAK,SAAS;AACjB,UAAM,WAAW,MAAM,eAAe,EAAE,UAAU,KAAK,QAAQ,GAAG,CAAC,YAAY,CAAC;AAChF,UAAM,MAAM,KAAK,MAAM,SAAS,YAAY,EAAE,SAAS,OAAO,CAAC;AAC/D,WAAO;AAAA,MACN;AAAA,MACA,SAASH,MAAK;AAAA,QACb,uBAAuB,GAAG,IAAI,IAAI,IAAI,IAAI,OAAO,SAAS,KAAK;AAAA,QAC/D;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAGA,QAAM,UAAU,MAAM,OAAO,YAAY;AACzC,MAAI,SAAS;AACZ,UAAM,UAAUA,MAAK,SAAS,QAAQ,IAAI,GAAG,OAAO;AACpD,WAAO;AAAA,MACN,KAAK,KAAK,MAAM,MAAMG,IAAG,SAAS,SAAS,OAAO,CAAC;AAAA,MACnD,SAAS;AAAA,IACV;AAAA,EACD;AAEA,SAAO,EAAE,KAAK,QAAW,SAAS,OAAU;AAC7C;AAEA,eAAe,MAAqB;AACnC,QAAM,SAAS,IAAI,+BAAe;AAAA,IACjC,aAAa;AAAA,EACd,CAAC;AAED,SAAO,aAAa,MAAM,aAAa,EAAE,QAAQ,WAAW,QAAQ,CAAC;AACrE,SAAO,aAAa,MAAM,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC3E,SAAO,aAAa,MAAM,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAChF,SAAO,aAAa,8BAA8B;AAAA,IACjD,QAAQ;AAAA,IACR,MAAM;AAAA,EACP,CAAC;AACD,SAAO,aAAa,2BAA2B;AAAA,IAC9C,QAAQ;AAAA,IACR,MAAM;AAAA,EACP,CAAC;AAED,QAAM,OAAO,OAAO,WAAW;AAK/B,MAAI,uBAAuB;AAC3B,MAAI,KAAK,YAAY,KAAK;AACzB,SAAK,UAAU,MAAM,aAAa;AAClC,2BAAuB;AAAA,EACxB;AAEA,QAAM,EAAE,KAAK,QAAQ,IAAI,MAAM,eAAe,MAAM,oBAAoB;AAExE,MAAI,CAAC,KAAK;AACT,YAAQ,MAAM,+EAA+E;AAC7F,YAAQ,WAAW;AACnB;AAAA,EACD;AAEA,QAAM,UAAuB;AAAA,IAC5B,UAAU,KAAK,WAAW,gBAAgB,KAAK,OAAO;AAAA,IACtD,YAAY,uBAAuB,GAAG,IAAI,IAAI,IAAI,IAAI,OAAO,SAAS;AAAA,EACvE;AACA,MAAI,CAAC,WAAW,QAAQ,QAAQ,GAAG;AAClC,YAAQ,MAAM,IAAI,QAAQ,QAAQ,sDAAsD;AACxF,YAAQ,WAAW;AACnB;AAAA,EACD;AAEA,iBAAe,IAAI,IAAI;AAEvB,QAAM,UAAyB;AAAA,IAC9B,wBAAwB,KAAK;AAAA,IAC7B,qBAAqB,KAAK;AAAA,EAC3B;AAEA,QAAM,UAAU,MAAM,OAAO,KAAK,SAAS,SAAS,OAAO;AAC3D,QAAM,SAAS,QAAQ,OAAO;AAC9B,UAAQ,OAAO,MAAM,MAAM;AAE3B,QAAM,cAAc,QAAQ,OAAO,CAAC,KAAK,WAAW;AACnD,WAAO,MAAM,OAAO;AAAA,EACrB,GAAG,CAAC;AAEJ,UAAQ,WAAW,cAAc,IAAI,IAAI;AAC1C;AAEA,IAAI,EAAE,MAAM,CAAC,QAAQ;AACpB,UAAQ,MAAM,GAAG;AACjB,UAAQ,WAAW;AACpB,CAAC;",
6
- "names": ["indent", "fs", "path", "renames", "key", "prefix", "lines", "version", "aliases", "args", "action", "ArgumentParser", "identity", "start_index", "option_string", "arg_strings", "match", "fs", "os", "path", "crypto", "err", "p", "ret", "res", "require_minipass", "p", "ret", "res", "Buffer", "constants", "global", "prefix", "global", "path", "path", "global", "s", "path", "fs", "path", "prefix", "Node", "path", "fs", "stat", "fs", "_size", "path", "buf", "noop", "chunk", "ret", "fs", "path", "path", "fs", "path", "cb", "er", "path", "fs", "path", "path", "path", "made", "path", "fs", "version", "path", "fs", "path", "er", "fs", "path", "cache", "er", "created", "normalize", "path", "run", "fn", "fs", "fs", "path", "normalize", "crypto", "cache", "er", "fs", "path", "require_constants", "version", "require_parse", "version", "version", "version", "version", "prefix", "version", "version", "match", "cache", "version", "version", "version", "require_valid", "version", "version", "version", "version", "require_semver", "constants", "fs", "path", "fs", "path", "fs", "path", "path", "pathKey", "path", "match", "path", "fs", "require_parse", "path", "escape", "isEmpty", "createWriteStream", "readFileSync", "fs", "path", "fileURLToPath", "path", "process", "run", "process", "fileURLToPath", "toPath", "directory", "path", "toPath", "__commonJS", "init", "__toESM", "reset", "bold", "dim", "underline", "yellow", "red", "Severity", "table", "path", "regexp", "regexp", "regexp", "regexp", "regexp", "regexp", "regexp", "regexp", "regexp", "filename", "fs", "filename", "tar", "fs", "url", "Buffer", "path", "process", "process", "path", "process", "path", "onetime", "process", "constants", "signals", "signals", "constants", "process", "prefix", "process", "global", "setTimeout", "init", "mergeStream", "setTimeout", "Buffer", "ChildProcess", "ChildProcess", "Buffer", "expression", "process", "process", "crossSpawn", "path", "Buffer", "$", "fs", "path", "os", "filename", "ruleId", "version", "semver", "scope", "prefix", "ruleId", "path", "import_semver", "ruleId", "severity", "semver", "version", "import_semver", "ruleId", "version", "semver", "import_semver", "ruleId", "severity", "semver", "obsolete", "path", "normalize", "fileURLToPath", "readFileSync", "tmp", "path", "createWriteStream", "err", "fs"]
4
+ "sourcesContent": ["// Limited implementation of python % string operator, supports only %s and %r for now\n// (other formats are not used here, but may appear in custom templates)\n\n'use strict'\n\nconst { inspect } = require('util')\n\n\nmodule.exports = function sub(pattern, ...values) {\n let regex = /%(?:(%)|(-)?(\\*)?(?:\\((\\w+)\\))?([A-Za-z]))/g\n\n let result = pattern.replace(regex, function (_, is_literal, is_left_align, is_padded, name, format) {\n if (is_literal) return '%'\n\n let padded_count = 0\n if (is_padded) {\n if (values.length === 0) throw new TypeError('not enough arguments for format string')\n padded_count = values.shift()\n if (!Number.isInteger(padded_count)) throw new TypeError('* wants int')\n }\n\n let str\n if (name !== undefined) {\n let dict = values[0]\n if (typeof dict !== 'object' || dict === null) throw new TypeError('format requires a mapping')\n if (!(name in dict)) throw new TypeError(`no such key: '${name}'`)\n str = dict[name]\n } else {\n if (values.length === 0) throw new TypeError('not enough arguments for format string')\n str = values.shift()\n }\n\n switch (format) {\n case 's':\n str = String(str)\n break\n case 'r':\n str = inspect(str)\n break\n case 'd':\n case 'i':\n if (typeof str !== 'number') {\n throw new TypeError(`%${format} format: a number is required, not ${typeof str}`)\n }\n str = String(str.toFixed(0))\n break\n default:\n throw new TypeError(`unsupported format character '${format}'`)\n }\n\n if (padded_count > 0) {\n return is_left_align ? str.padEnd(padded_count) : str.padStart(padded_count)\n } else {\n return str\n }\n })\n\n if (values.length) {\n if (values.length === 1 && typeof values[0] === 'object' && values[0] !== null) {\n // mapping\n } else {\n throw new TypeError('not all arguments converted during string formatting')\n }\n }\n\n return result\n}\n", "// Partial port of python's argparse module, version 3.9.0 (only wrap and fill functions):\n// https://github.com/python/cpython/blob/v3.9.0b4/Lib/textwrap.py\n\n'use strict'\n\n/*\n * Text wrapping and filling.\n */\n\n// Copyright (C) 1999-2001 Gregory P. Ward.\n// Copyright (C) 2002, 2003 Python Software Foundation.\n// Copyright (C) 2020 argparse.js authors\n// Originally written by Greg Ward <gward@python.net>\n\n// Hardcode the recognized whitespace characters to the US-ASCII\n// whitespace characters. The main reason for doing this is that\n// some Unicode spaces (like \\u00a0) are non-breaking whitespaces.\n//\n// This less funky little regex just split on recognized spaces. E.g.\n// \"Hello there -- you goof-ball, use the -b option!\"\n// splits into\n// Hello/ /there/ /--/ /you/ /goof-ball,/ /use/ /the/ /-b/ /option!/\nconst wordsep_simple_re = /([\\t\\n\\x0b\\x0c\\r ]+)/\n\nclass TextWrapper {\n /*\n * Object for wrapping/filling text. The public interface consists of\n * the wrap() and fill() methods; the other methods are just there for\n * subclasses to override in order to tweak the default behaviour.\n * If you want to completely replace the main wrapping algorithm,\n * you'll probably have to override _wrap_chunks().\n *\n * Several instance attributes control various aspects of wrapping:\n * width (default: 70)\n * the maximum width of wrapped lines (unless break_long_words\n * is false)\n * initial_indent (default: \"\")\n * string that will be prepended to the first line of wrapped\n * output. Counts towards the line's width.\n * subsequent_indent (default: \"\")\n * string that will be prepended to all lines save the first\n * of wrapped output; also counts towards each line's width.\n * expand_tabs (default: true)\n * Expand tabs in input text to spaces before further processing.\n * Each tab will become 0 .. 'tabsize' spaces, depending on its position\n * in its line. If false, each tab is treated as a single character.\n * tabsize (default: 8)\n * Expand tabs in input text to 0 .. 'tabsize' spaces, unless\n * 'expand_tabs' is false.\n * replace_whitespace (default: true)\n * Replace all whitespace characters in the input text by spaces\n * after tab expansion. Note that if expand_tabs is false and\n * replace_whitespace is true, every tab will be converted to a\n * single space!\n * fix_sentence_endings (default: false)\n * Ensure that sentence-ending punctuation is always followed\n * by two spaces. Off by default because the algorithm is\n * (unavoidably) imperfect.\n * break_long_words (default: true)\n * Break words longer than 'width'. If false, those words will not\n * be broken, and some lines might be longer than 'width'.\n * break_on_hyphens (default: true)\n * Allow breaking hyphenated words. If true, wrapping will occur\n * preferably on whitespaces and right after hyphens part of\n * compound words.\n * drop_whitespace (default: true)\n * Drop leading and trailing whitespace from lines.\n * max_lines (default: None)\n * Truncate wrapped lines.\n * placeholder (default: ' [...]')\n * Append to the last line of truncated text.\n */\n\n constructor(options = {}) {\n let {\n width = 70,\n initial_indent = '',\n subsequent_indent = '',\n expand_tabs = true,\n replace_whitespace = true,\n fix_sentence_endings = false,\n break_long_words = true,\n drop_whitespace = true,\n break_on_hyphens = true,\n tabsize = 8,\n max_lines = undefined,\n placeholder=' [...]'\n } = options\n\n this.width = width\n this.initial_indent = initial_indent\n this.subsequent_indent = subsequent_indent\n this.expand_tabs = expand_tabs\n this.replace_whitespace = replace_whitespace\n this.fix_sentence_endings = fix_sentence_endings\n this.break_long_words = break_long_words\n this.drop_whitespace = drop_whitespace\n this.break_on_hyphens = break_on_hyphens\n this.tabsize = tabsize\n this.max_lines = max_lines\n this.placeholder = placeholder\n }\n\n\n // -- Private methods -----------------------------------------------\n // (possibly useful for subclasses to override)\n\n _munge_whitespace(text) {\n /*\n * _munge_whitespace(text : string) -> string\n *\n * Munge whitespace in text: expand tabs and convert all other\n * whitespace characters to spaces. Eg. \" foo\\\\tbar\\\\n\\\\nbaz\"\n * becomes \" foo bar baz\".\n */\n if (this.expand_tabs) {\n text = text.replace(/\\t/g, ' '.repeat(this.tabsize)) // not strictly correct in js\n }\n if (this.replace_whitespace) {\n text = text.replace(/[\\t\\n\\x0b\\x0c\\r]/g, ' ')\n }\n return text\n }\n\n _split(text) {\n /*\n * _split(text : string) -> [string]\n *\n * Split the text to wrap into indivisible chunks. Chunks are\n * not quite the same as words; see _wrap_chunks() for full\n * details. As an example, the text\n * Look, goof-ball -- use the -b option!\n * breaks into the following chunks:\n * 'Look,', ' ', 'goof-', 'ball', ' ', '--', ' ',\n * 'use', ' ', 'the', ' ', '-b', ' ', 'option!'\n * if break_on_hyphens is True, or in:\n * 'Look,', ' ', 'goof-ball', ' ', '--', ' ',\n * 'use', ' ', 'the', ' ', '-b', ' ', option!'\n * otherwise.\n */\n let chunks = text.split(wordsep_simple_re)\n chunks = chunks.filter(Boolean)\n return chunks\n }\n\n _handle_long_word(reversed_chunks, cur_line, cur_len, width) {\n /*\n * _handle_long_word(chunks : [string],\n * cur_line : [string],\n * cur_len : int, width : int)\n *\n * Handle a chunk of text (most likely a word, not whitespace) that\n * is too long to fit in any line.\n */\n // Figure out when indent is larger than the specified width, and make\n // sure at least one character is stripped off on every pass\n let space_left\n if (width < 1) {\n space_left = 1\n } else {\n space_left = width - cur_len\n }\n\n // If we're allowed to break long words, then do so: put as much\n // of the next chunk onto the current line as will fit.\n if (this.break_long_words) {\n cur_line.push(reversed_chunks[reversed_chunks.length - 1].slice(0, space_left))\n reversed_chunks[reversed_chunks.length - 1] = reversed_chunks[reversed_chunks.length - 1].slice(space_left)\n\n // Otherwise, we have to preserve the long word intact. Only add\n // it to the current line if there's nothing already there --\n // that minimizes how much we violate the width constraint.\n } else if (!cur_line) {\n cur_line.push(...reversed_chunks.pop())\n }\n\n // If we're not allowed to break long words, and there's already\n // text on the current line, do nothing. Next time through the\n // main loop of _wrap_chunks(), we'll wind up here again, but\n // cur_len will be zero, so the next line will be entirely\n // devoted to the long word that we can't handle right now.\n }\n\n _wrap_chunks(chunks) {\n /*\n * _wrap_chunks(chunks : [string]) -> [string]\n *\n * Wrap a sequence of text chunks and return a list of lines of\n * length 'self.width' or less. (If 'break_long_words' is false,\n * some lines may be longer than this.) Chunks correspond roughly\n * to words and the whitespace between them: each chunk is\n * indivisible (modulo 'break_long_words'), but a line break can\n * come between any two chunks. Chunks should not have internal\n * whitespace; ie. a chunk is either all whitespace or a \"word\".\n * Whitespace chunks will be removed from the beginning and end of\n * lines, but apart from that whitespace is preserved.\n */\n let lines = []\n let indent\n if (this.width <= 0) {\n throw Error(`invalid width ${this.width} (must be > 0)`)\n }\n if (this.max_lines !== undefined) {\n if (this.max_lines > 1) {\n indent = this.subsequent_indent\n } else {\n indent = this.initial_indent\n }\n if (indent.length + this.placeholder.trimStart().length > this.width) {\n throw Error('placeholder too large for max width')\n }\n }\n\n // Arrange in reverse order so items can be efficiently popped\n // from a stack of chucks.\n chunks = chunks.reverse()\n\n while (chunks.length > 0) {\n\n // Start the list of chunks that will make up the current line.\n // cur_len is just the length of all the chunks in cur_line.\n let cur_line = []\n let cur_len = 0\n\n // Figure out which static string will prefix this line.\n let indent\n if (lines) {\n indent = this.subsequent_indent\n } else {\n indent = this.initial_indent\n }\n\n // Maximum width for this line.\n let width = this.width - indent.length\n\n // First chunk on line is whitespace -- drop it, unless this\n // is the very beginning of the text (ie. no lines started yet).\n if (this.drop_whitespace && chunks[chunks.length - 1].trim() === '' && lines.length > 0) {\n chunks.pop()\n }\n\n while (chunks.length > 0) {\n let l = chunks[chunks.length - 1].length\n\n // Can at least squeeze this chunk onto the current line.\n if (cur_len + l <= width) {\n cur_line.push(chunks.pop())\n cur_len += l\n\n // Nope, this line is full.\n } else {\n break\n }\n }\n\n // The current line is full, and the next chunk is too big to\n // fit on *any* line (not just this one).\n if (chunks.length && chunks[chunks.length - 1].length > width) {\n this._handle_long_word(chunks, cur_line, cur_len, width)\n cur_len = cur_line.map(l => l.length).reduce((a, b) => a + b, 0)\n }\n\n // If the last chunk on this line is all whitespace, drop it.\n if (this.drop_whitespace && cur_line.length > 0 && cur_line[cur_line.length - 1].trim() === '') {\n cur_len -= cur_line[cur_line.length - 1].length\n cur_line.pop()\n }\n\n if (cur_line) {\n if (this.max_lines === undefined ||\n lines.length + 1 < this.max_lines ||\n (chunks.length === 0 ||\n this.drop_whitespace &&\n chunks.length === 1 &&\n !chunks[0].trim()) && cur_len <= width) {\n // Convert current line back to a string and store it in\n // list of all lines (return value).\n lines.push(indent + cur_line.join(''))\n } else {\n let had_break = false\n while (cur_line) {\n if (cur_line[cur_line.length - 1].trim() &&\n cur_len + this.placeholder.length <= width) {\n cur_line.push(this.placeholder)\n lines.push(indent + cur_line.join(''))\n had_break = true\n break\n }\n cur_len -= cur_line[-1].length\n cur_line.pop()\n }\n if (!had_break) {\n if (lines) {\n let prev_line = lines[lines.length - 1].trimEnd()\n if (prev_line.length + this.placeholder.length <=\n this.width) {\n lines[lines.length - 1] = prev_line + this.placeholder\n break\n }\n }\n lines.push(indent + this.placeholder.lstrip())\n }\n break\n }\n }\n }\n\n return lines\n }\n\n _split_chunks(text) {\n text = this._munge_whitespace(text)\n return this._split(text)\n }\n\n // -- Public interface ----------------------------------------------\n\n wrap(text) {\n /*\n * wrap(text : string) -> [string]\n *\n * Reformat the single paragraph in 'text' so it fits in lines of\n * no more than 'self.width' columns, and return a list of wrapped\n * lines. Tabs in 'text' are expanded with string.expandtabs(),\n * and all other whitespace characters (including newline) are\n * converted to space.\n */\n let chunks = this._split_chunks(text)\n // not implemented in js\n //if (this.fix_sentence_endings) {\n // this._fix_sentence_endings(chunks)\n //}\n return this._wrap_chunks(chunks)\n }\n\n fill(text) {\n /*\n * fill(text : string) -> string\n *\n * Reformat the single paragraph in 'text' to fit in lines of no\n * more than 'self.width' columns, and return a new string\n * containing the entire wrapped paragraph.\n */\n return this.wrap(text).join('\\n')\n }\n}\n\n\n// -- Convenience interface ---------------------------------------------\n\nfunction wrap(text, options = {}) {\n /*\n * Wrap a single paragraph of text, returning a list of wrapped lines.\n *\n * Reformat the single paragraph in 'text' so it fits in lines of no\n * more than 'width' columns, and return a list of wrapped lines. By\n * default, tabs in 'text' are expanded with string.expandtabs(), and\n * all other whitespace characters (including newline) are converted to\n * space. See TextWrapper class for available keyword args to customize\n * wrapping behaviour.\n */\n let { width = 70, ...kwargs } = options\n let w = new TextWrapper(Object.assign({ width }, kwargs))\n return w.wrap(text)\n}\n\nfunction fill(text, options = {}) {\n /*\n * Fill a single paragraph of text, returning a new string.\n *\n * Reformat the single paragraph in 'text' to fit in lines of no more\n * than 'width' columns, and return a new string containing the entire\n * wrapped paragraph. As with wrap(), tabs are expanded and other\n * whitespace characters converted to space. See TextWrapper class for\n * available keyword args to customize wrapping behaviour.\n */\n let { width = 70, ...kwargs } = options\n let w = new TextWrapper(Object.assign({ width }, kwargs))\n return w.fill(text)\n}\n\n// -- Loosely related functionality -------------------------------------\n\nlet _whitespace_only_re = /^[ \\t]+$/mg\nlet _leading_whitespace_re = /(^[ \\t]*)(?:[^ \\t\\n])/mg\n\nfunction dedent(text) {\n /*\n * Remove any common leading whitespace from every line in `text`.\n *\n * This can be used to make triple-quoted strings line up with the left\n * edge of the display, while still presenting them in the source code\n * in indented form.\n *\n * Note that tabs and spaces are both treated as whitespace, but they\n * are not equal: the lines \" hello\" and \"\\\\thello\" are\n * considered to have no common leading whitespace.\n *\n * Entirely blank lines are normalized to a newline character.\n */\n // Look for the longest leading string of spaces and tabs common to\n // all lines.\n let margin = undefined\n text = text.replace(_whitespace_only_re, '')\n let indents = text.match(_leading_whitespace_re) || []\n for (let indent of indents) {\n indent = indent.slice(0, -1)\n\n if (margin === undefined) {\n margin = indent\n\n // Current line more deeply indented than previous winner:\n // no change (previous winner is still on top).\n } else if (indent.startsWith(margin)) {\n // pass\n\n // Current line consistent with and no deeper than previous winner:\n // it's the new winner.\n } else if (margin.startsWith(indent)) {\n margin = indent\n\n // Find the largest common whitespace between current line and previous\n // winner.\n } else {\n for (let i = 0; i < margin.length && i < indent.length; i++) {\n if (margin[i] !== indent[i]) {\n margin = margin.slice(0, i)\n break\n }\n }\n }\n }\n\n if (margin) {\n text = text.replace(new RegExp('^' + margin, 'mg'), '')\n }\n return text\n}\n\nmodule.exports = { wrap, fill, dedent }\n", "// Port of python's argparse module, version 3.9.0:\n// https://github.com/python/cpython/blob/v3.9.0rc1/Lib/argparse.py\n\n'use strict'\n\n// Copyright (C) 2010-2020 Python Software Foundation.\n// Copyright (C) 2020 argparse.js authors\n\n/*\n * Command-line parsing library\n *\n * This module is an optparse-inspired command-line parsing library that:\n *\n * - handles both optional and positional arguments\n * - produces highly informative usage messages\n * - supports parsers that dispatch to sub-parsers\n *\n * The following is a simple usage example that sums integers from the\n * command-line and writes the result to a file::\n *\n * parser = argparse.ArgumentParser(\n * description='sum the integers at the command line')\n * parser.add_argument(\n * 'integers', metavar='int', nargs='+', type=int,\n * help='an integer to be summed')\n * parser.add_argument(\n * '--log', default=sys.stdout, type=argparse.FileType('w'),\n * help='the file where the sum should be written')\n * args = parser.parse_args()\n * args.log.write('%s' % sum(args.integers))\n * args.log.close()\n *\n * The module contains the following public classes:\n *\n * - ArgumentParser -- The main entry point for command-line parsing. As the\n * example above shows, the add_argument() method is used to populate\n * the parser with actions for optional and positional arguments. Then\n * the parse_args() method is invoked to convert the args at the\n * command-line into an object with attributes.\n *\n * - ArgumentError -- The exception raised by ArgumentParser objects when\n * there are errors with the parser's actions. Errors raised while\n * parsing the command-line are caught by ArgumentParser and emitted\n * as command-line messages.\n *\n * - FileType -- A factory for defining types of files to be created. As the\n * example above shows, instances of FileType are typically passed as\n * the type= argument of add_argument() calls.\n *\n * - Action -- The base class for parser actions. Typically actions are\n * selected by passing strings like 'store_true' or 'append_const' to\n * the action= argument of add_argument(). However, for greater\n * customization of ArgumentParser actions, subclasses of Action may\n * be defined and passed as the action= argument.\n *\n * - HelpFormatter, RawDescriptionHelpFormatter, RawTextHelpFormatter,\n * ArgumentDefaultsHelpFormatter -- Formatter classes which\n * may be passed as the formatter_class= argument to the\n * ArgumentParser constructor. HelpFormatter is the default,\n * RawDescriptionHelpFormatter and RawTextHelpFormatter tell the parser\n * not to change the formatting for help text, and\n * ArgumentDefaultsHelpFormatter adds information about argument defaults\n * to the help.\n *\n * All other classes in this module are considered implementation details.\n * (Also note that HelpFormatter and RawDescriptionHelpFormatter are only\n * considered public as object names -- the API of the formatter objects is\n * still considered an implementation detail.)\n */\n\nconst SUPPRESS = '==SUPPRESS=='\n\nconst OPTIONAL = '?'\nconst ZERO_OR_MORE = '*'\nconst ONE_OR_MORE = '+'\nconst PARSER = 'A...'\nconst REMAINDER = '...'\nconst _UNRECOGNIZED_ARGS_ATTR = '_unrecognized_args'\n\n\n// ==================================\n// Utility functions used for porting\n// ==================================\nconst assert = require('assert')\nconst util = require('util')\nconst fs = require('fs')\nconst sub = require('./lib/sub')\nconst path = require('path')\nconst repr = util.inspect\n\nfunction get_argv() {\n // omit first argument (which is assumed to be interpreter - `node`, `coffee`, `ts-node`, etc.)\n return process.argv.slice(1)\n}\n\nfunction get_terminal_size() {\n return {\n columns: +process.env.COLUMNS || process.stdout.columns || 80\n }\n}\n\nfunction hasattr(object, name) {\n return Object.prototype.hasOwnProperty.call(object, name)\n}\n\nfunction getattr(object, name, value) {\n return hasattr(object, name) ? object[name] : value\n}\n\nfunction setattr(object, name, value) {\n object[name] = value\n}\n\nfunction setdefault(object, name, value) {\n if (!hasattr(object, name)) object[name] = value\n return object[name]\n}\n\nfunction delattr(object, name) {\n delete object[name]\n}\n\nfunction range(from, to, step=1) {\n // range(10) is equivalent to range(0, 10)\n if (arguments.length === 1) [ to, from ] = [ from, 0 ]\n if (typeof from !== 'number' || typeof to !== 'number' || typeof step !== 'number') {\n throw new TypeError('argument cannot be interpreted as an integer')\n }\n if (step === 0) throw new TypeError('range() arg 3 must not be zero')\n\n let result = []\n if (step > 0) {\n for (let i = from; i < to; i += step) result.push(i)\n } else {\n for (let i = from; i > to; i += step) result.push(i)\n }\n return result\n}\n\nfunction splitlines(str, keepends = false) {\n let result\n if (!keepends) {\n result = str.split(/\\r\\n|[\\n\\r\\v\\f\\x1c\\x1d\\x1e\\x85\\u2028\\u2029]/)\n } else {\n result = []\n let parts = str.split(/(\\r\\n|[\\n\\r\\v\\f\\x1c\\x1d\\x1e\\x85\\u2028\\u2029])/)\n for (let i = 0; i < parts.length; i += 2) {\n result.push(parts[i] + (i + 1 < parts.length ? parts[i + 1] : ''))\n }\n }\n if (!result[result.length - 1]) result.pop()\n return result\n}\n\nfunction _string_lstrip(string, prefix_chars) {\n let idx = 0\n while (idx < string.length && prefix_chars.includes(string[idx])) idx++\n return idx ? string.slice(idx) : string\n}\n\nfunction _string_split(string, sep, maxsplit) {\n let result = string.split(sep)\n if (result.length > maxsplit) {\n result = result.slice(0, maxsplit).concat([ result.slice(maxsplit).join(sep) ])\n }\n return result\n}\n\nfunction _array_equal(array1, array2) {\n if (array1.length !== array2.length) return false\n for (let i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) return false\n }\n return true\n}\n\nfunction _array_remove(array, item) {\n let idx = array.indexOf(item)\n if (idx === -1) throw new TypeError(sub('%r not in list', item))\n array.splice(idx, 1)\n}\n\n// normalize choices to array;\n// this isn't required in python because `in` and `map` operators work with anything,\n// but in js dealing with multiple types here is too clunky\nfunction _choices_to_array(choices) {\n if (choices === undefined) {\n return []\n } else if (Array.isArray(choices)) {\n return choices\n } else if (choices !== null && typeof choices[Symbol.iterator] === 'function') {\n return Array.from(choices)\n } else if (typeof choices === 'object' && choices !== null) {\n return Object.keys(choices)\n } else {\n throw new Error(sub('invalid choices value: %r', choices))\n }\n}\n\n// decorator that allows a class to be called without new\nfunction _callable(cls) {\n let result = { // object is needed for inferred class name\n [cls.name]: function (...args) {\n let this_class = new.target === result || !new.target\n return Reflect.construct(cls, args, this_class ? cls : new.target)\n }\n }\n result[cls.name].prototype = cls.prototype\n // fix default tag for toString, e.g. [object Action] instead of [object Object]\n cls.prototype[Symbol.toStringTag] = cls.name\n return result[cls.name]\n}\n\nfunction _alias(object, from, to) {\n try {\n let name = object.constructor.name\n Object.defineProperty(object, from, {\n value: util.deprecate(object[to], sub('%s.%s() is renamed to %s.%s()',\n name, from, name, to)),\n enumerable: false\n })\n } catch {}\n}\n\n// decorator that allows snake_case class methods to be called with camelCase and vice versa\nfunction _camelcase_alias(_class) {\n for (let name of Object.getOwnPropertyNames(_class.prototype)) {\n let camelcase = name.replace(/\\w_[a-z]/g, s => s[0] + s[2].toUpperCase())\n if (camelcase !== name) _alias(_class.prototype, camelcase, name)\n }\n return _class\n}\n\nfunction _to_legacy_name(key) {\n key = key.replace(/\\w_[a-z]/g, s => s[0] + s[2].toUpperCase())\n if (key === 'default') key = 'defaultValue'\n if (key === 'const') key = 'constant'\n return key\n}\n\nfunction _to_new_name(key) {\n if (key === 'defaultValue') key = 'default'\n if (key === 'constant') key = 'const'\n key = key.replace(/[A-Z]/g, c => '_' + c.toLowerCase())\n return key\n}\n\n// parse options\nlet no_default = Symbol('no_default_value')\nfunction _parse_opts(args, descriptor) {\n function get_name() {\n let stack = new Error().stack.split('\\n')\n .map(x => x.match(/^ at (.*) \\(.*\\)$/))\n .filter(Boolean)\n .map(m => m[1])\n .map(fn => fn.match(/[^ .]*$/)[0])\n\n if (stack.length && stack[0] === get_name.name) stack.shift()\n if (stack.length && stack[0] === _parse_opts.name) stack.shift()\n return stack.length ? stack[0] : ''\n }\n\n args = Array.from(args)\n let kwargs = {}\n let result = []\n let last_opt = args.length && args[args.length - 1]\n\n if (typeof last_opt === 'object' && last_opt !== null && !Array.isArray(last_opt) &&\n (!last_opt.constructor || last_opt.constructor.name === 'Object')) {\n kwargs = Object.assign({}, args.pop())\n }\n\n // LEGACY (v1 compatibility): camelcase\n let renames = []\n for (let key of Object.keys(descriptor)) {\n let old_name = _to_legacy_name(key)\n if (old_name !== key && (old_name in kwargs)) {\n if (key in kwargs) {\n // default and defaultValue specified at the same time, happens often in old tests\n //throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), key))\n } else {\n kwargs[key] = kwargs[old_name]\n }\n renames.push([ old_name, key ])\n delete kwargs[old_name]\n }\n }\n if (renames.length) {\n let name = get_name()\n deprecate('camelcase_' + name, sub('%s(): following options are renamed: %s',\n name, renames.map(([ a, b ]) => sub('%r -> %r', a, b))))\n }\n // end\n\n let missing_positionals = []\n let positional_count = args.length\n\n for (let [ key, def ] of Object.entries(descriptor)) {\n if (key[0] === '*') {\n if (key.length > 0 && key[1] === '*') {\n // LEGACY (v1 compatibility): camelcase\n let renames = []\n for (let key of Object.keys(kwargs)) {\n let new_name = _to_new_name(key)\n if (new_name !== key && (key in kwargs)) {\n if (new_name in kwargs) {\n // default and defaultValue specified at the same time, happens often in old tests\n //throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), new_name))\n } else {\n kwargs[new_name] = kwargs[key]\n }\n renames.push([ key, new_name ])\n delete kwargs[key]\n }\n }\n if (renames.length) {\n let name = get_name()\n deprecate('camelcase_' + name, sub('%s(): following options are renamed: %s',\n name, renames.map(([ a, b ]) => sub('%r -> %r', a, b))))\n }\n // end\n result.push(kwargs)\n kwargs = {}\n } else {\n result.push(args)\n args = []\n }\n } else if (key in kwargs && args.length > 0) {\n throw new TypeError(sub('%s() got multiple values for argument %r', get_name(), key))\n } else if (key in kwargs) {\n result.push(kwargs[key])\n delete kwargs[key]\n } else if (args.length > 0) {\n result.push(args.shift())\n } else if (def !== no_default) {\n result.push(def)\n } else {\n missing_positionals.push(key)\n }\n }\n\n if (Object.keys(kwargs).length) {\n throw new TypeError(sub('%s() got an unexpected keyword argument %r',\n get_name(), Object.keys(kwargs)[0]))\n }\n\n if (args.length) {\n let from = Object.entries(descriptor).filter(([ k, v ]) => k[0] !== '*' && v !== no_default).length\n let to = Object.entries(descriptor).filter(([ k ]) => k[0] !== '*').length\n throw new TypeError(sub('%s() takes %s positional argument%s but %s %s given',\n get_name(),\n from === to ? sub('from %s to %s', from, to) : to,\n from === to && to === 1 ? '' : 's',\n positional_count,\n positional_count === 1 ? 'was' : 'were'))\n }\n\n if (missing_positionals.length) {\n let strs = missing_positionals.map(repr)\n if (strs.length > 1) strs[strs.length - 1] = 'and ' + strs[strs.length - 1]\n let str_joined = strs.join(strs.length === 2 ? '' : ', ')\n throw new TypeError(sub('%s() missing %i required positional argument%s: %s',\n get_name(), strs.length, strs.length === 1 ? '' : 's', str_joined))\n }\n\n return result\n}\n\nlet _deprecations = {}\nfunction deprecate(id, string) {\n _deprecations[id] = _deprecations[id] || util.deprecate(() => {}, string)\n _deprecations[id]()\n}\n\n\n// =============================\n// Utility functions and classes\n// =============================\nfunction _AttributeHolder(cls = Object) {\n /*\n * Abstract base class that provides __repr__.\n *\n * The __repr__ method returns a string in the format::\n * ClassName(attr=name, attr=name, ...)\n * The attributes are determined either by a class-level attribute,\n * '_kwarg_names', or by inspecting the instance __dict__.\n */\n\n return class _AttributeHolder extends cls {\n [util.inspect.custom]() {\n let type_name = this.constructor.name\n let arg_strings = []\n let star_args = {}\n for (let arg of this._get_args()) {\n arg_strings.push(repr(arg))\n }\n for (let [ name, value ] of this._get_kwargs()) {\n if (/^[a-z_][a-z0-9_$]*$/i.test(name)) {\n arg_strings.push(sub('%s=%r', name, value))\n } else {\n star_args[name] = value\n }\n }\n if (Object.keys(star_args).length) {\n arg_strings.push(sub('**%s', repr(star_args)))\n }\n return sub('%s(%s)', type_name, arg_strings.join(', '))\n }\n\n toString() {\n return this[util.inspect.custom]()\n }\n\n _get_kwargs() {\n return Object.entries(this)\n }\n\n _get_args() {\n return []\n }\n }\n}\n\n\nfunction _copy_items(items) {\n if (items === undefined) {\n return []\n }\n return items.slice(0)\n}\n\n\n// ===============\n// Formatting Help\n// ===============\nconst HelpFormatter = _camelcase_alias(_callable(class HelpFormatter {\n /*\n * Formatter for generating usage messages and argument help strings.\n *\n * Only the name of this class is considered a public API. All the methods\n * provided by the class are considered an implementation detail.\n */\n\n constructor() {\n let [\n prog,\n indent_increment,\n max_help_position,\n width\n ] = _parse_opts(arguments, {\n prog: no_default,\n indent_increment: 2,\n max_help_position: 24,\n width: undefined\n })\n\n // default setting for width\n if (width === undefined) {\n width = get_terminal_size().columns\n width -= 2\n }\n\n this._prog = prog\n this._indent_increment = indent_increment\n this._max_help_position = Math.min(max_help_position,\n Math.max(width - 20, indent_increment * 2))\n this._width = width\n\n this._current_indent = 0\n this._level = 0\n this._action_max_length = 0\n\n this._root_section = this._Section(this, undefined)\n this._current_section = this._root_section\n\n this._whitespace_matcher = /[ \\t\\n\\r\\f\\v]+/g // equivalent to python /\\s+/ with ASCII flag\n this._long_break_matcher = /\\n\\n\\n+/g\n }\n\n // ===============================\n // Section and indentation methods\n // ===============================\n _indent() {\n this._current_indent += this._indent_increment\n this._level += 1\n }\n\n _dedent() {\n this._current_indent -= this._indent_increment\n assert(this._current_indent >= 0, 'Indent decreased below 0.')\n this._level -= 1\n }\n\n _add_item(func, args) {\n this._current_section.items.push([ func, args ])\n }\n\n // ========================\n // Message building methods\n // ========================\n start_section(heading) {\n this._indent()\n let section = this._Section(this, this._current_section, heading)\n this._add_item(section.format_help.bind(section), [])\n this._current_section = section\n }\n\n end_section() {\n this._current_section = this._current_section.parent\n this._dedent()\n }\n\n add_text(text) {\n if (text !== SUPPRESS && text !== undefined) {\n this._add_item(this._format_text.bind(this), [text])\n }\n }\n\n add_usage(usage, actions, groups, prefix = undefined) {\n if (usage !== SUPPRESS) {\n let args = [ usage, actions, groups, prefix ]\n this._add_item(this._format_usage.bind(this), args)\n }\n }\n\n add_argument(action) {\n if (action.help !== SUPPRESS) {\n\n // find all invocations\n let invocations = [this._format_action_invocation(action)]\n for (let subaction of this._iter_indented_subactions(action)) {\n invocations.push(this._format_action_invocation(subaction))\n }\n\n // update the maximum item length\n let invocation_length = Math.max(...invocations.map(invocation => invocation.length))\n let action_length = invocation_length + this._current_indent\n this._action_max_length = Math.max(this._action_max_length,\n action_length)\n\n // add the item to the list\n this._add_item(this._format_action.bind(this), [action])\n }\n }\n\n add_arguments(actions) {\n for (let action of actions) {\n this.add_argument(action)\n }\n }\n\n // =======================\n // Help-formatting methods\n // =======================\n format_help() {\n let help = this._root_section.format_help()\n if (help) {\n help = help.replace(this._long_break_matcher, '\\n\\n')\n help = help.replace(/^\\n+|\\n+$/g, '') + '\\n'\n }\n return help\n }\n\n _join_parts(part_strings) {\n return part_strings.filter(part => part && part !== SUPPRESS).join('')\n }\n\n _format_usage(usage, actions, groups, prefix) {\n if (prefix === undefined) {\n prefix = 'usage: '\n }\n\n // if usage is specified, use that\n if (usage !== undefined) {\n usage = sub(usage, { prog: this._prog })\n\n // if no optionals or positionals are available, usage is just prog\n } else if (usage === undefined && !actions.length) {\n usage = sub('%(prog)s', { prog: this._prog })\n\n // if optionals and positionals are available, calculate usage\n } else if (usage === undefined) {\n let prog = sub('%(prog)s', { prog: this._prog })\n\n // split optionals from positionals\n let optionals = []\n let positionals = []\n for (let action of actions) {\n if (action.option_strings.length) {\n optionals.push(action)\n } else {\n positionals.push(action)\n }\n }\n\n // build full usage string\n let action_usage = this._format_actions_usage([].concat(optionals).concat(positionals), groups)\n usage = [ prog, action_usage ].map(String).join(' ')\n\n // wrap the usage parts if it's too long\n let text_width = this._width - this._current_indent\n if (prefix.length + usage.length > text_width) {\n\n // break usage into wrappable parts\n let part_regexp = /\\(.*?\\)+(?=\\s|$)|\\[.*?\\]+(?=\\s|$)|\\S+/g\n let opt_usage = this._format_actions_usage(optionals, groups)\n let pos_usage = this._format_actions_usage(positionals, groups)\n let opt_parts = opt_usage.match(part_regexp) || []\n let pos_parts = pos_usage.match(part_regexp) || []\n assert(opt_parts.join(' ') === opt_usage)\n assert(pos_parts.join(' ') === pos_usage)\n\n // helper for wrapping lines\n let get_lines = (parts, indent, prefix = undefined) => {\n let lines = []\n let line = []\n let line_len\n if (prefix !== undefined) {\n line_len = prefix.length - 1\n } else {\n line_len = indent.length - 1\n }\n for (let part of parts) {\n if (line_len + 1 + part.length > text_width && line) {\n lines.push(indent + line.join(' '))\n line = []\n line_len = indent.length - 1\n }\n line.push(part)\n line_len += part.length + 1\n }\n if (line.length) {\n lines.push(indent + line.join(' '))\n }\n if (prefix !== undefined) {\n lines[0] = lines[0].slice(indent.length)\n }\n return lines\n }\n\n let lines\n\n // if prog is short, follow it with optionals or positionals\n if (prefix.length + prog.length <= 0.75 * text_width) {\n let indent = ' '.repeat(prefix.length + prog.length + 1)\n if (opt_parts.length) {\n lines = get_lines([prog].concat(opt_parts), indent, prefix)\n lines = lines.concat(get_lines(pos_parts, indent))\n } else if (pos_parts.length) {\n lines = get_lines([prog].concat(pos_parts), indent, prefix)\n } else {\n lines = [prog]\n }\n\n // if prog is long, put it on its own line\n } else {\n let indent = ' '.repeat(prefix.length)\n let parts = [].concat(opt_parts).concat(pos_parts)\n lines = get_lines(parts, indent)\n if (lines.length > 1) {\n lines = []\n lines = lines.concat(get_lines(opt_parts, indent))\n lines = lines.concat(get_lines(pos_parts, indent))\n }\n lines = [prog].concat(lines)\n }\n\n // join lines into usage\n usage = lines.join('\\n')\n }\n }\n\n // prefix with 'usage:'\n return sub('%s%s\\n\\n', prefix, usage)\n }\n\n _format_actions_usage(actions, groups) {\n // find group indices and identify actions in groups\n let group_actions = new Set()\n let inserts = {}\n for (let group of groups) {\n let start = actions.indexOf(group._group_actions[0])\n if (start === -1) {\n continue\n } else {\n let end = start + group._group_actions.length\n if (_array_equal(actions.slice(start, end), group._group_actions)) {\n for (let action of group._group_actions) {\n group_actions.add(action)\n }\n if (!group.required) {\n if (start in inserts) {\n inserts[start] += ' ['\n } else {\n inserts[start] = '['\n }\n if (end in inserts) {\n inserts[end] += ']'\n } else {\n inserts[end] = ']'\n }\n } else {\n if (start in inserts) {\n inserts[start] += ' ('\n } else {\n inserts[start] = '('\n }\n if (end in inserts) {\n inserts[end] += ')'\n } else {\n inserts[end] = ')'\n }\n }\n for (let i of range(start + 1, end)) {\n inserts[i] = '|'\n }\n }\n }\n }\n\n // collect all actions format strings\n let parts = []\n for (let [ i, action ] of Object.entries(actions)) {\n\n // suppressed arguments are marked with None\n // remove | separators for suppressed arguments\n if (action.help === SUPPRESS) {\n parts.push(undefined)\n if (inserts[+i] === '|') {\n delete inserts[+i]\n } else if (inserts[+i + 1] === '|') {\n delete inserts[+i + 1]\n }\n\n // produce all arg strings\n } else if (!action.option_strings.length) {\n let default_value = this._get_default_metavar_for_positional(action)\n let part = this._format_args(action, default_value)\n\n // if it's in a group, strip the outer []\n if (group_actions.has(action)) {\n if (part[0] === '[' && part[part.length - 1] === ']') {\n part = part.slice(1, -1)\n }\n }\n\n // add the action string to the list\n parts.push(part)\n\n // produce the first way to invoke the option in brackets\n } else {\n let option_string = action.option_strings[0]\n let part\n\n // if the Optional doesn't take a value, format is:\n // -s or --long\n if (action.nargs === 0) {\n part = action.format_usage()\n\n // if the Optional takes a value, format is:\n // -s ARGS or --long ARGS\n } else {\n let default_value = this._get_default_metavar_for_optional(action)\n let args_string = this._format_args(action, default_value)\n part = sub('%s %s', option_string, args_string)\n }\n\n // make it look optional if it's not required or in a group\n if (!action.required && !group_actions.has(action)) {\n part = sub('[%s]', part)\n }\n\n // add the action string to the list\n parts.push(part)\n }\n }\n\n // insert things at the necessary indices\n for (let i of Object.keys(inserts).map(Number).sort((a, b) => b - a)) {\n parts.splice(+i, 0, inserts[+i])\n }\n\n // join all the action items with spaces\n let text = parts.filter(Boolean).join(' ')\n\n // clean up separators for mutually exclusive groups\n text = text.replace(/([\\[(]) /g, '$1')\n text = text.replace(/ ([\\])])/g, '$1')\n text = text.replace(/[\\[(] *[\\])]/g, '')\n text = text.replace(/\\(([^|]*)\\)/g, '$1', text)\n text = text.trim()\n\n // return the text\n return text\n }\n\n _format_text(text) {\n if (text.includes('%(prog)')) {\n text = sub(text, { prog: this._prog })\n }\n let text_width = Math.max(this._width - this._current_indent, 11)\n let indent = ' '.repeat(this._current_indent)\n return this._fill_text(text, text_width, indent) + '\\n\\n'\n }\n\n _format_action(action) {\n // determine the required width and the entry label\n let help_position = Math.min(this._action_max_length + 2,\n this._max_help_position)\n let help_width = Math.max(this._width - help_position, 11)\n let action_width = help_position - this._current_indent - 2\n let action_header = this._format_action_invocation(action)\n let indent_first\n\n // no help; start on same line and add a final newline\n if (!action.help) {\n let tup = [ this._current_indent, '', action_header ]\n action_header = sub('%*s%s\\n', ...tup)\n\n // short action name; start on the same line and pad two spaces\n } else if (action_header.length <= action_width) {\n let tup = [ this._current_indent, '', action_width, action_header ]\n action_header = sub('%*s%-*s ', ...tup)\n indent_first = 0\n\n // long action name; start on the next line\n } else {\n let tup = [ this._current_indent, '', action_header ]\n action_header = sub('%*s%s\\n', ...tup)\n indent_first = help_position\n }\n\n // collect the pieces of the action help\n let parts = [action_header]\n\n // if there was help for the action, add lines of help text\n if (action.help) {\n let help_text = this._expand_help(action)\n let help_lines = this._split_lines(help_text, help_width)\n parts.push(sub('%*s%s\\n', indent_first, '', help_lines[0]))\n for (let line of help_lines.slice(1)) {\n parts.push(sub('%*s%s\\n', help_position, '', line))\n }\n\n // or add a newline if the description doesn't end with one\n } else if (!action_header.endsWith('\\n')) {\n parts.push('\\n')\n }\n\n // if there are any sub-actions, add their help as well\n for (let subaction of this._iter_indented_subactions(action)) {\n parts.push(this._format_action(subaction))\n }\n\n // return a single string\n return this._join_parts(parts)\n }\n\n _format_action_invocation(action) {\n if (!action.option_strings.length) {\n let default_value = this._get_default_metavar_for_positional(action)\n let metavar = this._metavar_formatter(action, default_value)(1)[0]\n return metavar\n\n } else {\n let parts = []\n\n // if the Optional doesn't take a value, format is:\n // -s, --long\n if (action.nargs === 0) {\n parts = parts.concat(action.option_strings)\n\n // if the Optional takes a value, format is:\n // -s ARGS, --long ARGS\n } else {\n let default_value = this._get_default_metavar_for_optional(action)\n let args_string = this._format_args(action, default_value)\n for (let option_string of action.option_strings) {\n parts.push(sub('%s %s', option_string, args_string))\n }\n }\n\n return parts.join(', ')\n }\n }\n\n _metavar_formatter(action, default_metavar) {\n let result\n if (action.metavar !== undefined) {\n result = action.metavar\n } else if (action.choices !== undefined) {\n let choice_strs = _choices_to_array(action.choices).map(String)\n result = sub('{%s}', choice_strs.join(','))\n } else {\n result = default_metavar\n }\n\n function format(tuple_size) {\n if (Array.isArray(result)) {\n return result\n } else {\n return Array(tuple_size).fill(result)\n }\n }\n return format\n }\n\n _format_args(action, default_metavar) {\n let get_metavar = this._metavar_formatter(action, default_metavar)\n let result\n if (action.nargs === undefined) {\n result = sub('%s', ...get_metavar(1))\n } else if (action.nargs === OPTIONAL) {\n result = sub('[%s]', ...get_metavar(1))\n } else if (action.nargs === ZERO_OR_MORE) {\n let metavar = get_metavar(1)\n if (metavar.length === 2) {\n result = sub('[%s [%s ...]]', ...metavar)\n } else {\n result = sub('[%s ...]', ...metavar)\n }\n } else if (action.nargs === ONE_OR_MORE) {\n result = sub('%s [%s ...]', ...get_metavar(2))\n } else if (action.nargs === REMAINDER) {\n result = '...'\n } else if (action.nargs === PARSER) {\n result = sub('%s ...', ...get_metavar(1))\n } else if (action.nargs === SUPPRESS) {\n result = ''\n } else {\n let formats\n try {\n formats = range(action.nargs).map(() => '%s')\n } catch (err) {\n throw new TypeError('invalid nargs value')\n }\n result = sub(formats.join(' '), ...get_metavar(action.nargs))\n }\n return result\n }\n\n _expand_help(action) {\n let params = Object.assign({ prog: this._prog }, action)\n for (let name of Object.keys(params)) {\n if (params[name] === SUPPRESS) {\n delete params[name]\n }\n }\n for (let name of Object.keys(params)) {\n if (params[name] && params[name].name) {\n params[name] = params[name].name\n }\n }\n if (params.choices !== undefined) {\n let choices_str = _choices_to_array(params.choices).map(String).join(', ')\n params.choices = choices_str\n }\n // LEGACY (v1 compatibility): camelcase\n for (let key of Object.keys(params)) {\n let old_name = _to_legacy_name(key)\n if (old_name !== key) {\n params[old_name] = params[key]\n }\n }\n // end\n return sub(this._get_help_string(action), params)\n }\n\n * _iter_indented_subactions(action) {\n if (typeof action._get_subactions === 'function') {\n this._indent()\n yield* action._get_subactions()\n this._dedent()\n }\n }\n\n _split_lines(text, width) {\n text = text.replace(this._whitespace_matcher, ' ').trim()\n // The textwrap module is used only for formatting help.\n // Delay its import for speeding up the common usage of argparse.\n let textwrap = require('./lib/textwrap')\n return textwrap.wrap(text, { width })\n }\n\n _fill_text(text, width, indent) {\n text = text.replace(this._whitespace_matcher, ' ').trim()\n let textwrap = require('./lib/textwrap')\n return textwrap.fill(text, { width,\n initial_indent: indent,\n subsequent_indent: indent })\n }\n\n _get_help_string(action) {\n return action.help\n }\n\n _get_default_metavar_for_optional(action) {\n return action.dest.toUpperCase()\n }\n\n _get_default_metavar_for_positional(action) {\n return action.dest\n }\n}))\n\nHelpFormatter.prototype._Section = _callable(class _Section {\n\n constructor(formatter, parent, heading = undefined) {\n this.formatter = formatter\n this.parent = parent\n this.heading = heading\n this.items = []\n }\n\n format_help() {\n // format the indented section\n if (this.parent !== undefined) {\n this.formatter._indent()\n }\n let item_help = this.formatter._join_parts(this.items.map(([ func, args ]) => func.apply(null, args)))\n if (this.parent !== undefined) {\n this.formatter._dedent()\n }\n\n // return nothing if the section was empty\n if (!item_help) {\n return ''\n }\n\n // add the heading if the section was non-empty\n let heading\n if (this.heading !== SUPPRESS && this.heading !== undefined) {\n let current_indent = this.formatter._current_indent\n heading = sub('%*s%s:\\n', current_indent, '', this.heading)\n } else {\n heading = ''\n }\n\n // join the section-initial newline, the heading and the help\n return this.formatter._join_parts(['\\n', heading, item_help, '\\n'])\n }\n})\n\n\nconst RawDescriptionHelpFormatter = _camelcase_alias(_callable(class RawDescriptionHelpFormatter extends HelpFormatter {\n /*\n * Help message formatter which retains any formatting in descriptions.\n *\n * Only the name of this class is considered a public API. All the methods\n * provided by the class are considered an implementation detail.\n */\n\n _fill_text(text, width, indent) {\n return splitlines(text, true).map(line => indent + line).join('')\n }\n}))\n\n\nconst RawTextHelpFormatter = _camelcase_alias(_callable(class RawTextHelpFormatter extends RawDescriptionHelpFormatter {\n /*\n * Help message formatter which retains formatting of all help text.\n *\n * Only the name of this class is considered a public API. All the methods\n * provided by the class are considered an implementation detail.\n */\n\n _split_lines(text/*, width*/) {\n return splitlines(text)\n }\n}))\n\n\nconst ArgumentDefaultsHelpFormatter = _camelcase_alias(_callable(class ArgumentDefaultsHelpFormatter extends HelpFormatter {\n /*\n * Help message formatter which adds default values to argument help.\n *\n * Only the name of this class is considered a public API. All the methods\n * provided by the class are considered an implementation detail.\n */\n\n _get_help_string(action) {\n let help = action.help\n // LEGACY (v1 compatibility): additional check for defaultValue needed\n if (!action.help.includes('%(default)') && !action.help.includes('%(defaultValue)')) {\n if (action.default !== SUPPRESS) {\n let defaulting_nargs = [OPTIONAL, ZERO_OR_MORE]\n if (action.option_strings.length || defaulting_nargs.includes(action.nargs)) {\n help += ' (default: %(default)s)'\n }\n }\n }\n return help\n }\n}))\n\n\nconst MetavarTypeHelpFormatter = _camelcase_alias(_callable(class MetavarTypeHelpFormatter extends HelpFormatter {\n /*\n * Help message formatter which uses the argument 'type' as the default\n * metavar value (instead of the argument 'dest')\n *\n * Only the name of this class is considered a public API. All the methods\n * provided by the class are considered an implementation detail.\n */\n\n _get_default_metavar_for_optional(action) {\n return typeof action.type === 'function' ? action.type.name : action.type\n }\n\n _get_default_metavar_for_positional(action) {\n return typeof action.type === 'function' ? action.type.name : action.type\n }\n}))\n\n\n// =====================\n// Options and Arguments\n// =====================\nfunction _get_action_name(argument) {\n if (argument === undefined) {\n return undefined\n } else if (argument.option_strings.length) {\n return argument.option_strings.join('/')\n } else if (![ undefined, SUPPRESS ].includes(argument.metavar)) {\n return argument.metavar\n } else if (![ undefined, SUPPRESS ].includes(argument.dest)) {\n return argument.dest\n } else {\n return undefined\n }\n}\n\n\nconst ArgumentError = _callable(class ArgumentError extends Error {\n /*\n * An error from creating or using an argument (optional or positional).\n *\n * The string value of this exception is the message, augmented with\n * information about the argument that caused it.\n */\n\n constructor(argument, message) {\n super()\n this.name = 'ArgumentError'\n this._argument_name = _get_action_name(argument)\n this._message = message\n this.message = this.str()\n }\n\n str() {\n let format\n if (this._argument_name === undefined) {\n format = '%(message)s'\n } else {\n format = 'argument %(argument_name)s: %(message)s'\n }\n return sub(format, { message: this._message,\n argument_name: this._argument_name })\n }\n})\n\n\nconst ArgumentTypeError = _callable(class ArgumentTypeError extends Error {\n /*\n * An error from trying to convert a command line string to a type.\n */\n\n constructor(message) {\n super(message)\n this.name = 'ArgumentTypeError'\n }\n})\n\n\n// ==============\n// Action classes\n// ==============\nconst Action = _camelcase_alias(_callable(class Action extends _AttributeHolder(Function) {\n /*\n * Information about how to convert command line strings to Python objects.\n *\n * Action objects are used by an ArgumentParser to represent the information\n * needed to parse a single argument from one or more strings from the\n * command line. The keyword arguments to the Action constructor are also\n * all attributes of Action instances.\n *\n * Keyword Arguments:\n *\n * - option_strings -- A list of command-line option strings which\n * should be associated with this action.\n *\n * - dest -- The name of the attribute to hold the created object(s)\n *\n * - nargs -- The number of command-line arguments that should be\n * consumed. By default, one argument will be consumed and a single\n * value will be produced. Other values include:\n * - N (an integer) consumes N arguments (and produces a list)\n * - '?' consumes zero or one arguments\n * - '*' consumes zero or more arguments (and produces a list)\n * - '+' consumes one or more arguments (and produces a list)\n * Note that the difference between the default and nargs=1 is that\n * with the default, a single value will be produced, while with\n * nargs=1, a list containing a single value will be produced.\n *\n * - const -- The value to be produced if the option is specified and the\n * option uses an action that takes no values.\n *\n * - default -- The value to be produced if the option is not specified.\n *\n * - type -- A callable that accepts a single string argument, and\n * returns the converted value. The standard Python types str, int,\n * float, and complex are useful examples of such callables. If None,\n * str is used.\n *\n * - choices -- A container of values that should be allowed. If not None,\n * after a command-line argument has been converted to the appropriate\n * type, an exception will be raised if it is not a member of this\n * collection.\n *\n * - required -- True if the action must always be specified at the\n * command line. This is only meaningful for optional command-line\n * arguments.\n *\n * - help -- The help string describing the argument.\n *\n * - metavar -- The name to be used for the option's argument with the\n * help string. If None, the 'dest' value will be used as the name.\n */\n\n constructor() {\n let [\n option_strings,\n dest,\n nargs,\n const_value,\n default_value,\n type,\n choices,\n required,\n help,\n metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n nargs: undefined,\n const: undefined,\n default: undefined,\n type: undefined,\n choices: undefined,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n // when this class is called as a function, redirect it to .call() method of itself\n super('return arguments.callee.call.apply(arguments.callee, arguments)')\n\n this.option_strings = option_strings\n this.dest = dest\n this.nargs = nargs\n this.const = const_value\n this.default = default_value\n this.type = type\n this.choices = choices\n this.required = required\n this.help = help\n this.metavar = metavar\n }\n\n _get_kwargs() {\n let names = [\n 'option_strings',\n 'dest',\n 'nargs',\n 'const',\n 'default',\n 'type',\n 'choices',\n 'help',\n 'metavar'\n ]\n return names.map(name => [ name, getattr(this, name) ])\n }\n\n format_usage() {\n return this.option_strings[0]\n }\n\n call(/*parser, namespace, values, option_string = undefined*/) {\n throw new Error('.call() not defined')\n }\n}))\n\n\nconst BooleanOptionalAction = _camelcase_alias(_callable(class BooleanOptionalAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n default_value,\n type,\n choices,\n required,\n help,\n metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n default: undefined,\n type: undefined,\n choices: undefined,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n let _option_strings = []\n for (let option_string of option_strings) {\n _option_strings.push(option_string)\n\n if (option_string.startsWith('--')) {\n option_string = '--no-' + option_string.slice(2)\n _option_strings.push(option_string)\n }\n }\n\n if (help !== undefined && default_value !== undefined) {\n help += ` (default: ${default_value})`\n }\n\n super({\n option_strings: _option_strings,\n dest,\n nargs: 0,\n default: default_value,\n type,\n choices,\n required,\n help,\n metavar\n })\n }\n\n call(parser, namespace, values, option_string = undefined) {\n if (this.option_strings.includes(option_string)) {\n setattr(namespace, this.dest, !option_string.startsWith('--no-'))\n }\n }\n\n format_usage() {\n return this.option_strings.join(' | ')\n }\n}))\n\n\nconst _StoreAction = _callable(class _StoreAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n nargs,\n const_value,\n default_value,\n type,\n choices,\n required,\n help,\n metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n nargs: undefined,\n const: undefined,\n default: undefined,\n type: undefined,\n choices: undefined,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n if (nargs === 0) {\n throw new TypeError('nargs for store actions must be != 0; if you ' +\n 'have nothing to store, actions such as store ' +\n 'true or store const may be more appropriate')\n }\n if (const_value !== undefined && nargs !== OPTIONAL) {\n throw new TypeError(sub('nargs must be %r to supply const', OPTIONAL))\n }\n super({\n option_strings,\n dest,\n nargs,\n const: const_value,\n default: default_value,\n type,\n choices,\n required,\n help,\n metavar\n })\n }\n\n call(parser, namespace, values/*, option_string = undefined*/) {\n setattr(namespace, this.dest, values)\n }\n})\n\n\nconst _StoreConstAction = _callable(class _StoreConstAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n const_value,\n default_value,\n required,\n help\n //, metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n const: no_default,\n default: undefined,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n super({\n option_strings,\n dest,\n nargs: 0,\n const: const_value,\n default: default_value,\n required,\n help\n })\n }\n\n call(parser, namespace/*, values, option_string = undefined*/) {\n setattr(namespace, this.dest, this.const)\n }\n})\n\n\nconst _StoreTrueAction = _callable(class _StoreTrueAction extends _StoreConstAction {\n\n constructor() {\n let [\n option_strings,\n dest,\n default_value,\n required,\n help\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n default: false,\n required: false,\n help: undefined\n })\n\n super({\n option_strings,\n dest,\n const: true,\n default: default_value,\n required,\n help\n })\n }\n})\n\n\nconst _StoreFalseAction = _callable(class _StoreFalseAction extends _StoreConstAction {\n\n constructor() {\n let [\n option_strings,\n dest,\n default_value,\n required,\n help\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n default: true,\n required: false,\n help: undefined\n })\n\n super({\n option_strings,\n dest,\n const: false,\n default: default_value,\n required,\n help\n })\n }\n})\n\n\nconst _AppendAction = _callable(class _AppendAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n nargs,\n const_value,\n default_value,\n type,\n choices,\n required,\n help,\n metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n nargs: undefined,\n const: undefined,\n default: undefined,\n type: undefined,\n choices: undefined,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n if (nargs === 0) {\n throw new TypeError('nargs for append actions must be != 0; if arg ' +\n 'strings are not supplying the value to append, ' +\n 'the append const action may be more appropriate')\n }\n if (const_value !== undefined && nargs !== OPTIONAL) {\n throw new TypeError(sub('nargs must be %r to supply const', OPTIONAL))\n }\n super({\n option_strings,\n dest,\n nargs,\n const: const_value,\n default: default_value,\n type,\n choices,\n required,\n help,\n metavar\n })\n }\n\n call(parser, namespace, values/*, option_string = undefined*/) {\n let items = getattr(namespace, this.dest, undefined)\n items = _copy_items(items)\n items.push(values)\n setattr(namespace, this.dest, items)\n }\n})\n\n\nconst _AppendConstAction = _callable(class _AppendConstAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n const_value,\n default_value,\n required,\n help,\n metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n const: no_default,\n default: undefined,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n super({\n option_strings,\n dest,\n nargs: 0,\n const: const_value,\n default: default_value,\n required,\n help,\n metavar\n })\n }\n\n call(parser, namespace/*, values, option_string = undefined*/) {\n let items = getattr(namespace, this.dest, undefined)\n items = _copy_items(items)\n items.push(this.const)\n setattr(namespace, this.dest, items)\n }\n})\n\n\nconst _CountAction = _callable(class _CountAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n default_value,\n required,\n help\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: no_default,\n default: undefined,\n required: false,\n help: undefined\n })\n\n super({\n option_strings,\n dest,\n nargs: 0,\n default: default_value,\n required,\n help\n })\n }\n\n call(parser, namespace/*, values, option_string = undefined*/) {\n let count = getattr(namespace, this.dest, undefined)\n if (count === undefined) {\n count = 0\n }\n setattr(namespace, this.dest, count + 1)\n }\n})\n\n\nconst _HelpAction = _callable(class _HelpAction extends Action {\n\n constructor() {\n let [\n option_strings,\n dest,\n default_value,\n help\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n dest: SUPPRESS,\n default: SUPPRESS,\n help: undefined\n })\n\n super({\n option_strings,\n dest,\n default: default_value,\n nargs: 0,\n help\n })\n }\n\n call(parser/*, namespace, values, option_string = undefined*/) {\n parser.print_help()\n parser.exit()\n }\n})\n\n\nconst _VersionAction = _callable(class _VersionAction extends Action {\n\n constructor() {\n let [\n option_strings,\n version,\n dest,\n default_value,\n help\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n version: undefined,\n dest: SUPPRESS,\n default: SUPPRESS,\n help: \"show program's version number and exit\"\n })\n\n super({\n option_strings,\n dest,\n default: default_value,\n nargs: 0,\n help\n })\n this.version = version\n }\n\n call(parser/*, namespace, values, option_string = undefined*/) {\n let version = this.version\n if (version === undefined) {\n version = parser.version\n }\n let formatter = parser._get_formatter()\n formatter.add_text(version)\n parser._print_message(formatter.format_help(), process.stdout)\n parser.exit()\n }\n})\n\n\nconst _SubParsersAction = _camelcase_alias(_callable(class _SubParsersAction extends Action {\n\n constructor() {\n let [\n option_strings,\n prog,\n parser_class,\n dest,\n required,\n help,\n metavar\n ] = _parse_opts(arguments, {\n option_strings: no_default,\n prog: no_default,\n parser_class: no_default,\n dest: SUPPRESS,\n required: false,\n help: undefined,\n metavar: undefined\n })\n\n let name_parser_map = {}\n\n super({\n option_strings,\n dest,\n nargs: PARSER,\n choices: name_parser_map,\n required,\n help,\n metavar\n })\n\n this._prog_prefix = prog\n this._parser_class = parser_class\n this._name_parser_map = name_parser_map\n this._choices_actions = []\n }\n\n add_parser() {\n let [\n name,\n kwargs\n ] = _parse_opts(arguments, {\n name: no_default,\n '**kwargs': no_default\n })\n\n // set prog from the existing prefix\n if (kwargs.prog === undefined) {\n kwargs.prog = sub('%s %s', this._prog_prefix, name)\n }\n\n let aliases = getattr(kwargs, 'aliases', [])\n delete kwargs.aliases\n\n // create a pseudo-action to hold the choice help\n if ('help' in kwargs) {\n let help = kwargs.help\n delete kwargs.help\n let choice_action = this._ChoicesPseudoAction(name, aliases, help)\n this._choices_actions.push(choice_action)\n }\n\n // create the parser and add it to the map\n let parser = new this._parser_class(kwargs)\n this._name_parser_map[name] = parser\n\n // make parser available under aliases also\n for (let alias of aliases) {\n this._name_parser_map[alias] = parser\n }\n\n return parser\n }\n\n _get_subactions() {\n return this._choices_actions\n }\n\n call(parser, namespace, values/*, option_string = undefined*/) {\n let parser_name = values[0]\n let arg_strings = values.slice(1)\n\n // set the parser name if requested\n if (this.dest !== SUPPRESS) {\n setattr(namespace, this.dest, parser_name)\n }\n\n // select the parser\n if (hasattr(this._name_parser_map, parser_name)) {\n parser = this._name_parser_map[parser_name]\n } else {\n let args = {parser_name,\n choices: this._name_parser_map.join(', ')}\n let msg = sub('unknown parser %(parser_name)r (choices: %(choices)s)', args)\n throw new ArgumentError(this, msg)\n }\n\n // parse all the remaining options into the namespace\n // store any unrecognized options on the object, so that the top\n // level parser can decide what to do with them\n\n // In case this subparser defines new defaults, we parse them\n // in a new namespace object and then update the original\n // namespace for the relevant parts.\n let subnamespace\n [ subnamespace, arg_strings ] = parser.parse_known_args(arg_strings, undefined)\n for (let [ key, value ] of Object.entries(subnamespace)) {\n setattr(namespace, key, value)\n }\n\n if (arg_strings.length) {\n setdefault(namespace, _UNRECOGNIZED_ARGS_ATTR, [])\n getattr(namespace, _UNRECOGNIZED_ARGS_ATTR).push(...arg_strings)\n }\n }\n}))\n\n\n_SubParsersAction.prototype._ChoicesPseudoAction = _callable(class _ChoicesPseudoAction extends Action {\n constructor(name, aliases, help) {\n let metavar = name, dest = name\n if (aliases.length) {\n metavar += sub(' (%s)', aliases.join(', '))\n }\n super({ option_strings: [], dest, help, metavar })\n }\n})\n\n\nconst _ExtendAction = _callable(class _ExtendAction extends _AppendAction {\n call(parser, namespace, values/*, option_string = undefined*/) {\n let items = getattr(namespace, this.dest, undefined)\n items = _copy_items(items)\n items = items.concat(values)\n setattr(namespace, this.dest, items)\n }\n})\n\n\n// ==============\n// Type classes\n// ==============\nconst FileType = _callable(class FileType extends Function {\n /*\n * Factory for creating file object types\n *\n * Instances of FileType are typically passed as type= arguments to the\n * ArgumentParser add_argument() method.\n *\n * Keyword Arguments:\n * - mode -- A string indicating how the file is to be opened. Accepts the\n * same values as the builtin open() function.\n * - bufsize -- The file's desired buffer size. Accepts the same values as\n * the builtin open() function.\n * - encoding -- The file's encoding. Accepts the same values as the\n * builtin open() function.\n * - errors -- A string indicating how encoding and decoding errors are to\n * be handled. Accepts the same value as the builtin open() function.\n */\n\n constructor() {\n let [\n flags,\n encoding,\n mode,\n autoClose,\n emitClose,\n start,\n end,\n highWaterMark,\n fs\n ] = _parse_opts(arguments, {\n flags: 'r',\n encoding: undefined,\n mode: undefined, // 0o666\n autoClose: undefined, // true\n emitClose: undefined, // false\n start: undefined, // 0\n end: undefined, // Infinity\n highWaterMark: undefined, // 64 * 1024\n fs: undefined\n })\n\n // when this class is called as a function, redirect it to .call() method of itself\n super('return arguments.callee.call.apply(arguments.callee, arguments)')\n\n Object.defineProperty(this, 'name', {\n get() {\n return sub('FileType(%r)', flags)\n }\n })\n this._flags = flags\n this._options = {}\n if (encoding !== undefined) this._options.encoding = encoding\n if (mode !== undefined) this._options.mode = mode\n if (autoClose !== undefined) this._options.autoClose = autoClose\n if (emitClose !== undefined) this._options.emitClose = emitClose\n if (start !== undefined) this._options.start = start\n if (end !== undefined) this._options.end = end\n if (highWaterMark !== undefined) this._options.highWaterMark = highWaterMark\n if (fs !== undefined) this._options.fs = fs\n }\n\n call(string) {\n // the special argument \"-\" means sys.std{in,out}\n if (string === '-') {\n if (this._flags.includes('r')) {\n return process.stdin\n } else if (this._flags.includes('w')) {\n return process.stdout\n } else {\n let msg = sub('argument \"-\" with mode %r', this._flags)\n throw new TypeError(msg)\n }\n }\n\n // all other arguments are used as file names\n let fd\n try {\n fd = fs.openSync(string, this._flags, this._options.mode)\n } catch (e) {\n let args = { filename: string, error: e.message }\n let message = \"can't open '%(filename)s': %(error)s\"\n throw new ArgumentTypeError(sub(message, args))\n }\n\n let options = Object.assign({ fd, flags: this._flags }, this._options)\n if (this._flags.includes('r')) {\n return fs.createReadStream(undefined, options)\n } else if (this._flags.includes('w')) {\n return fs.createWriteStream(undefined, options)\n } else {\n let msg = sub('argument \"%s\" with mode %r', string, this._flags)\n throw new TypeError(msg)\n }\n }\n\n [util.inspect.custom]() {\n let args = [ this._flags ]\n let kwargs = Object.entries(this._options).map(([ k, v ]) => {\n if (k === 'mode') v = { value: v, [util.inspect.custom]() { return '0o' + this.value.toString(8) } }\n return [ k, v ]\n })\n let args_str = []\n .concat(args.filter(arg => arg !== -1).map(repr))\n .concat(kwargs.filter(([/*kw*/, arg]) => arg !== undefined)\n .map(([kw, arg]) => sub('%s=%r', kw, arg)))\n .join(', ')\n return sub('%s(%s)', this.constructor.name, args_str)\n }\n\n toString() {\n return this[util.inspect.custom]()\n }\n})\n\n// ===========================\n// Optional and Positional Parsing\n// ===========================\nconst Namespace = _callable(class Namespace extends _AttributeHolder() {\n /*\n * Simple object for storing attributes.\n *\n * Implements equality by attribute names and values, and provides a simple\n * string representation.\n */\n\n constructor(options = {}) {\n super()\n Object.assign(this, options)\n }\n})\n\n// unset string tag to mimic plain object\nNamespace.prototype[Symbol.toStringTag] = undefined\n\n\nconst _ActionsContainer = _camelcase_alias(_callable(class _ActionsContainer {\n\n constructor() {\n let [\n description,\n prefix_chars,\n argument_default,\n conflict_handler\n ] = _parse_opts(arguments, {\n description: no_default,\n prefix_chars: no_default,\n argument_default: no_default,\n conflict_handler: no_default\n })\n\n this.description = description\n this.argument_default = argument_default\n this.prefix_chars = prefix_chars\n this.conflict_handler = conflict_handler\n\n // set up registries\n this._registries = {}\n\n // register actions\n this.register('action', undefined, _StoreAction)\n this.register('action', 'store', _StoreAction)\n this.register('action', 'store_const', _StoreConstAction)\n this.register('action', 'store_true', _StoreTrueAction)\n this.register('action', 'store_false', _StoreFalseAction)\n this.register('action', 'append', _AppendAction)\n this.register('action', 'append_const', _AppendConstAction)\n this.register('action', 'count', _CountAction)\n this.register('action', 'help', _HelpAction)\n this.register('action', 'version', _VersionAction)\n this.register('action', 'parsers', _SubParsersAction)\n this.register('action', 'extend', _ExtendAction)\n // LEGACY (v1 compatibility): camelcase variants\n ;[ 'storeConst', 'storeTrue', 'storeFalse', 'appendConst' ].forEach(old_name => {\n let new_name = _to_new_name(old_name)\n this.register('action', old_name, util.deprecate(this._registry_get('action', new_name),\n sub('{action: \"%s\"} is renamed to {action: \"%s\"}', old_name, new_name)))\n })\n // end\n\n // raise an exception if the conflict handler is invalid\n this._get_handler()\n\n // action storage\n this._actions = []\n this._option_string_actions = {}\n\n // groups\n this._action_groups = []\n this._mutually_exclusive_groups = []\n\n // defaults storage\n this._defaults = {}\n\n // determines whether an \"option\" looks like a negative number\n this._negative_number_matcher = /^-\\d+$|^-\\d*\\.\\d+$/\n\n // whether or not there are any optionals that look like negative\n // numbers -- uses a list so it can be shared and edited\n this._has_negative_number_optionals = []\n }\n\n // ====================\n // Registration methods\n // ====================\n register(registry_name, value, object) {\n let registry = setdefault(this._registries, registry_name, {})\n registry[value] = object\n }\n\n _registry_get(registry_name, value, default_value = undefined) {\n return getattr(this._registries[registry_name], value, default_value)\n }\n\n // ==================================\n // Namespace default accessor methods\n // ==================================\n set_defaults(kwargs) {\n Object.assign(this._defaults, kwargs)\n\n // if these defaults match any existing arguments, replace\n // the previous default on the object with the new one\n for (let action of this._actions) {\n if (action.dest in kwargs) {\n action.default = kwargs[action.dest]\n }\n }\n }\n\n get_default(dest) {\n for (let action of this._actions) {\n if (action.dest === dest && action.default !== undefined) {\n return action.default\n }\n }\n return this._defaults[dest]\n }\n\n\n // =======================\n // Adding argument actions\n // =======================\n add_argument() {\n /*\n * add_argument(dest, ..., name=value, ...)\n * add_argument(option_string, option_string, ..., name=value, ...)\n */\n let [\n args,\n kwargs\n ] = _parse_opts(arguments, {\n '*args': no_default,\n '**kwargs': no_default\n })\n // LEGACY (v1 compatibility), old-style add_argument([ args ], { options })\n if (args.length === 1 && Array.isArray(args[0])) {\n args = args[0]\n deprecate('argument-array',\n sub('use add_argument(%(args)s, {...}) instead of add_argument([ %(args)s ], { ... })', {\n args: args.map(repr).join(', ')\n }))\n }\n // end\n\n // if no positional args are supplied or only one is supplied and\n // it doesn't look like an option string, parse a positional\n // argument\n let chars = this.prefix_chars\n if (!args.length || args.length === 1 && !chars.includes(args[0][0])) {\n if (args.length && 'dest' in kwargs) {\n throw new TypeError('dest supplied twice for positional argument')\n }\n kwargs = this._get_positional_kwargs(...args, kwargs)\n\n // otherwise, we're adding an optional argument\n } else {\n kwargs = this._get_optional_kwargs(...args, kwargs)\n }\n\n // if no default was supplied, use the parser-level default\n if (!('default' in kwargs)) {\n let dest = kwargs.dest\n if (dest in this._defaults) {\n kwargs.default = this._defaults[dest]\n } else if (this.argument_default !== undefined) {\n kwargs.default = this.argument_default\n }\n }\n\n // create the action object, and add it to the parser\n let action_class = this._pop_action_class(kwargs)\n if (typeof action_class !== 'function') {\n throw new TypeError(sub('unknown action \"%s\"', action_class))\n }\n // eslint-disable-next-line new-cap\n let action = new action_class(kwargs)\n\n // raise an error if the action type is not callable\n let type_func = this._registry_get('type', action.type, action.type)\n if (typeof type_func !== 'function') {\n throw new TypeError(sub('%r is not callable', type_func))\n }\n\n if (type_func === FileType) {\n throw new TypeError(sub('%r is a FileType class object, instance of it' +\n ' must be passed', type_func))\n }\n\n // raise an error if the metavar does not match the type\n if ('_get_formatter' in this) {\n try {\n this._get_formatter()._format_args(action, undefined)\n } catch (err) {\n // check for 'invalid nargs value' is an artifact of TypeError and ValueError in js being the same\n if (err instanceof TypeError && err.message !== 'invalid nargs value') {\n throw new TypeError('length of metavar tuple does not match nargs')\n } else {\n throw err\n }\n }\n }\n\n return this._add_action(action)\n }\n\n add_argument_group() {\n let group = _ArgumentGroup(this, ...arguments)\n this._action_groups.push(group)\n return group\n }\n\n add_mutually_exclusive_group() {\n // eslint-disable-next-line no-use-before-define\n let group = _MutuallyExclusiveGroup(this, ...arguments)\n this._mutually_exclusive_groups.push(group)\n return group\n }\n\n _add_action(action) {\n // resolve any conflicts\n this._check_conflict(action)\n\n // add to actions list\n this._actions.push(action)\n action.container = this\n\n // index the action by any option strings it has\n for (let option_string of action.option_strings) {\n this._option_string_actions[option_string] = action\n }\n\n // set the flag if any option strings look like negative numbers\n for (let option_string of action.option_strings) {\n if (this._negative_number_matcher.test(option_string)) {\n if (!this._has_negative_number_optionals.length) {\n this._has_negative_number_optionals.push(true)\n }\n }\n }\n\n // return the created action\n return action\n }\n\n _remove_action(action) {\n _array_remove(this._actions, action)\n }\n\n _add_container_actions(container) {\n // collect groups by titles\n let title_group_map = {}\n for (let group of this._action_groups) {\n if (group.title in title_group_map) {\n let msg = 'cannot merge actions - two groups are named %r'\n throw new TypeError(sub(msg, group.title))\n }\n title_group_map[group.title] = group\n }\n\n // map each action to its group\n let group_map = new Map()\n for (let group of container._action_groups) {\n\n // if a group with the title exists, use that, otherwise\n // create a new group matching the container's group\n if (!(group.title in title_group_map)) {\n title_group_map[group.title] = this.add_argument_group({\n title: group.title,\n description: group.description,\n conflict_handler: group.conflict_handler\n })\n }\n\n // map the actions to their new group\n for (let action of group._group_actions) {\n group_map.set(action, title_group_map[group.title])\n }\n }\n\n // add container's mutually exclusive groups\n // NOTE: if add_mutually_exclusive_group ever gains title= and\n // description= then this code will need to be expanded as above\n for (let group of container._mutually_exclusive_groups) {\n let mutex_group = this.add_mutually_exclusive_group({\n required: group.required\n })\n\n // map the actions to their new mutex group\n for (let action of group._group_actions) {\n group_map.set(action, mutex_group)\n }\n }\n\n // add all actions to this container or their group\n for (let action of container._actions) {\n group_map.get(action)._add_action(action)\n }\n }\n\n _get_positional_kwargs() {\n let [\n dest,\n kwargs\n ] = _parse_opts(arguments, {\n dest: no_default,\n '**kwargs': no_default\n })\n\n // make sure required is not specified\n if ('required' in kwargs) {\n let msg = \"'required' is an invalid argument for positionals\"\n throw new TypeError(msg)\n }\n\n // mark positional arguments as required if at least one is\n // always required\n if (![OPTIONAL, ZERO_OR_MORE].includes(kwargs.nargs)) {\n kwargs.required = true\n }\n if (kwargs.nargs === ZERO_OR_MORE && !('default' in kwargs)) {\n kwargs.required = true\n }\n\n // return the keyword arguments with no option strings\n return Object.assign(kwargs, { dest, option_strings: [] })\n }\n\n _get_optional_kwargs() {\n let [\n args,\n kwargs\n ] = _parse_opts(arguments, {\n '*args': no_default,\n '**kwargs': no_default\n })\n\n // determine short and long option strings\n let option_strings = []\n let long_option_strings = []\n let option_string\n for (option_string of args) {\n // error on strings that don't start with an appropriate prefix\n if (!this.prefix_chars.includes(option_string[0])) {\n let args = {option: option_string,\n prefix_chars: this.prefix_chars}\n let msg = 'invalid option string %(option)r: ' +\n 'must start with a character %(prefix_chars)r'\n throw new TypeError(sub(msg, args))\n }\n\n // strings starting with two prefix characters are long options\n option_strings.push(option_string)\n if (option_string.length > 1 && this.prefix_chars.includes(option_string[1])) {\n long_option_strings.push(option_string)\n }\n }\n\n // infer destination, '--foo-bar' -> 'foo_bar' and '-x' -> 'x'\n let dest = kwargs.dest\n delete kwargs.dest\n if (dest === undefined) {\n let dest_option_string\n if (long_option_strings.length) {\n dest_option_string = long_option_strings[0]\n } else {\n dest_option_string = option_strings[0]\n }\n dest = _string_lstrip(dest_option_string, this.prefix_chars)\n if (!dest) {\n let msg = 'dest= is required for options like %r'\n throw new TypeError(sub(msg, option_string))\n }\n dest = dest.replace(/-/g, '_')\n }\n\n // return the updated keyword arguments\n return Object.assign(kwargs, { dest, option_strings })\n }\n\n _pop_action_class(kwargs, default_value = undefined) {\n let action = getattr(kwargs, 'action', default_value)\n delete kwargs.action\n return this._registry_get('action', action, action)\n }\n\n _get_handler() {\n // determine function from conflict handler string\n let handler_func_name = sub('_handle_conflict_%s', this.conflict_handler)\n if (typeof this[handler_func_name] === 'function') {\n return this[handler_func_name]\n } else {\n let msg = 'invalid conflict_resolution value: %r'\n throw new TypeError(sub(msg, this.conflict_handler))\n }\n }\n\n _check_conflict(action) {\n\n // find all options that conflict with this option\n let confl_optionals = []\n for (let option_string of action.option_strings) {\n if (hasattr(this._option_string_actions, option_string)) {\n let confl_optional = this._option_string_actions[option_string]\n confl_optionals.push([ option_string, confl_optional ])\n }\n }\n\n // resolve any conflicts\n if (confl_optionals.length) {\n let conflict_handler = this._get_handler()\n conflict_handler.call(this, action, confl_optionals)\n }\n }\n\n _handle_conflict_error(action, conflicting_actions) {\n let message = conflicting_actions.length === 1 ?\n 'conflicting option string: %s' :\n 'conflicting option strings: %s'\n let conflict_string = conflicting_actions.map(([ option_string/*, action*/ ]) => option_string).join(', ')\n throw new ArgumentError(action, sub(message, conflict_string))\n }\n\n _handle_conflict_resolve(action, conflicting_actions) {\n\n // remove all conflicting options\n for (let [ option_string, action ] of conflicting_actions) {\n\n // remove the conflicting option\n _array_remove(action.option_strings, option_string)\n delete this._option_string_actions[option_string]\n\n // if the option now has no option string, remove it from the\n // container holding it\n if (!action.option_strings.length) {\n action.container._remove_action(action)\n }\n }\n }\n}))\n\n\nconst _ArgumentGroup = _callable(class _ArgumentGroup extends _ActionsContainer {\n\n constructor() {\n let [\n container,\n title,\n description,\n kwargs\n ] = _parse_opts(arguments, {\n container: no_default,\n title: undefined,\n description: undefined,\n '**kwargs': no_default\n })\n\n // add any missing keyword arguments by checking the container\n setdefault(kwargs, 'conflict_handler', container.conflict_handler)\n setdefault(kwargs, 'prefix_chars', container.prefix_chars)\n setdefault(kwargs, 'argument_default', container.argument_default)\n super(Object.assign({ description }, kwargs))\n\n // group attributes\n this.title = title\n this._group_actions = []\n\n // share most attributes with the container\n this._registries = container._registries\n this._actions = container._actions\n this._option_string_actions = container._option_string_actions\n this._defaults = container._defaults\n this._has_negative_number_optionals =\n container._has_negative_number_optionals\n this._mutually_exclusive_groups = container._mutually_exclusive_groups\n }\n\n _add_action(action) {\n action = super._add_action(action)\n this._group_actions.push(action)\n return action\n }\n\n _remove_action(action) {\n super._remove_action(action)\n _array_remove(this._group_actions, action)\n }\n})\n\n\nconst _MutuallyExclusiveGroup = _callable(class _MutuallyExclusiveGroup extends _ArgumentGroup {\n\n constructor() {\n let [\n container,\n required\n ] = _parse_opts(arguments, {\n container: no_default,\n required: false\n })\n\n super(container)\n this.required = required\n this._container = container\n }\n\n _add_action(action) {\n if (action.required) {\n let msg = 'mutually exclusive arguments must be optional'\n throw new TypeError(msg)\n }\n action = this._container._add_action(action)\n this._group_actions.push(action)\n return action\n }\n\n _remove_action(action) {\n this._container._remove_action(action)\n _array_remove(this._group_actions, action)\n }\n})\n\n\nconst ArgumentParser = _camelcase_alias(_callable(class ArgumentParser extends _AttributeHolder(_ActionsContainer) {\n /*\n * Object for parsing command line strings into Python objects.\n *\n * Keyword Arguments:\n * - prog -- The name of the program (default: sys.argv[0])\n * - usage -- A usage message (default: auto-generated from arguments)\n * - description -- A description of what the program does\n * - epilog -- Text following the argument descriptions\n * - parents -- Parsers whose arguments should be copied into this one\n * - formatter_class -- HelpFormatter class for printing help messages\n * - prefix_chars -- Characters that prefix optional arguments\n * - fromfile_prefix_chars -- Characters that prefix files containing\n * additional arguments\n * - argument_default -- The default value for all arguments\n * - conflict_handler -- String indicating how to handle conflicts\n * - add_help -- Add a -h/-help option\n * - allow_abbrev -- Allow long options to be abbreviated unambiguously\n * - exit_on_error -- Determines whether or not ArgumentParser exits with\n * error info when an error occurs\n */\n\n constructor() {\n let [\n prog,\n usage,\n description,\n epilog,\n parents,\n formatter_class,\n prefix_chars,\n fromfile_prefix_chars,\n argument_default,\n conflict_handler,\n add_help,\n allow_abbrev,\n exit_on_error,\n debug, // LEGACY (v1 compatibility), debug mode\n version // LEGACY (v1 compatibility), version\n ] = _parse_opts(arguments, {\n prog: undefined,\n usage: undefined,\n description: undefined,\n epilog: undefined,\n parents: [],\n formatter_class: HelpFormatter,\n prefix_chars: '-',\n fromfile_prefix_chars: undefined,\n argument_default: undefined,\n conflict_handler: 'error',\n add_help: true,\n allow_abbrev: true,\n exit_on_error: true,\n debug: undefined, // LEGACY (v1 compatibility), debug mode\n version: undefined // LEGACY (v1 compatibility), version\n })\n\n // LEGACY (v1 compatibility)\n if (debug !== undefined) {\n deprecate('debug',\n 'The \"debug\" argument to ArgumentParser is deprecated. Please ' +\n 'override ArgumentParser.exit function instead.'\n )\n }\n\n if (version !== undefined) {\n deprecate('version',\n 'The \"version\" argument to ArgumentParser is deprecated. Please use ' +\n \"add_argument(..., { action: 'version', version: 'N', ... }) instead.\"\n )\n }\n // end\n\n super({\n description,\n prefix_chars,\n argument_default,\n conflict_handler\n })\n\n // default setting for prog\n if (prog === undefined) {\n prog = path.basename(get_argv()[0] || '')\n }\n\n this.prog = prog\n this.usage = usage\n this.epilog = epilog\n this.formatter_class = formatter_class\n this.fromfile_prefix_chars = fromfile_prefix_chars\n this.add_help = add_help\n this.allow_abbrev = allow_abbrev\n this.exit_on_error = exit_on_error\n // LEGACY (v1 compatibility), debug mode\n this.debug = debug\n // end\n\n this._positionals = this.add_argument_group('positional arguments')\n this._optionals = this.add_argument_group('optional arguments')\n this._subparsers = undefined\n\n // register types\n function identity(string) {\n return string\n }\n this.register('type', undefined, identity)\n this.register('type', null, identity)\n this.register('type', 'auto', identity)\n this.register('type', 'int', function (x) {\n let result = Number(x)\n if (!Number.isInteger(result)) {\n throw new TypeError(sub('could not convert string to int: %r', x))\n }\n return result\n })\n this.register('type', 'float', function (x) {\n let result = Number(x)\n if (isNaN(result)) {\n throw new TypeError(sub('could not convert string to float: %r', x))\n }\n return result\n })\n this.register('type', 'str', String)\n // LEGACY (v1 compatibility): custom types\n this.register('type', 'string',\n util.deprecate(String, 'use {type:\"str\"} or {type:String} instead of {type:\"string\"}'))\n // end\n\n // add help argument if necessary\n // (using explicit default to override global argument_default)\n let default_prefix = prefix_chars.includes('-') ? '-' : prefix_chars[0]\n if (this.add_help) {\n this.add_argument(\n default_prefix + 'h',\n default_prefix.repeat(2) + 'help',\n {\n action: 'help',\n default: SUPPRESS,\n help: 'show this help message and exit'\n }\n )\n }\n // LEGACY (v1 compatibility), version\n if (version) {\n this.add_argument(\n default_prefix + 'v',\n default_prefix.repeat(2) + 'version',\n {\n action: 'version',\n default: SUPPRESS,\n version: this.version,\n help: \"show program's version number and exit\"\n }\n )\n }\n // end\n\n // add parent arguments and defaults\n for (let parent of parents) {\n this._add_container_actions(parent)\n Object.assign(this._defaults, parent._defaults)\n }\n }\n\n // =======================\n // Pretty __repr__ methods\n // =======================\n _get_kwargs() {\n let names = [\n 'prog',\n 'usage',\n 'description',\n 'formatter_class',\n 'conflict_handler',\n 'add_help'\n ]\n return names.map(name => [ name, getattr(this, name) ])\n }\n\n // ==================================\n // Optional/Positional adding methods\n // ==================================\n add_subparsers() {\n let [\n kwargs\n ] = _parse_opts(arguments, {\n '**kwargs': no_default\n })\n\n if (this._subparsers !== undefined) {\n this.error('cannot have multiple subparser arguments')\n }\n\n // add the parser class to the arguments if it's not present\n setdefault(kwargs, 'parser_class', this.constructor)\n\n if ('title' in kwargs || 'description' in kwargs) {\n let title = getattr(kwargs, 'title', 'subcommands')\n let description = getattr(kwargs, 'description', undefined)\n delete kwargs.title\n delete kwargs.description\n this._subparsers = this.add_argument_group(title, description)\n } else {\n this._subparsers = this._positionals\n }\n\n // prog defaults to the usage message of this parser, skipping\n // optional arguments and with no \"usage:\" prefix\n if (kwargs.prog === undefined) {\n let formatter = this._get_formatter()\n let positionals = this._get_positional_actions()\n let groups = this._mutually_exclusive_groups\n formatter.add_usage(this.usage, positionals, groups, '')\n kwargs.prog = formatter.format_help().trim()\n }\n\n // create the parsers action and add it to the positionals list\n let parsers_class = this._pop_action_class(kwargs, 'parsers')\n // eslint-disable-next-line new-cap\n let action = new parsers_class(Object.assign({ option_strings: [] }, kwargs))\n this._subparsers._add_action(action)\n\n // return the created parsers action\n return action\n }\n\n _add_action(action) {\n if (action.option_strings.length) {\n this._optionals._add_action(action)\n } else {\n this._positionals._add_action(action)\n }\n return action\n }\n\n _get_optional_actions() {\n return this._actions.filter(action => action.option_strings.length)\n }\n\n _get_positional_actions() {\n return this._actions.filter(action => !action.option_strings.length)\n }\n\n // =====================================\n // Command line argument parsing methods\n // =====================================\n parse_args(args = undefined, namespace = undefined) {\n let argv\n [ args, argv ] = this.parse_known_args(args, namespace)\n if (argv && argv.length > 0) {\n let msg = 'unrecognized arguments: %s'\n this.error(sub(msg, argv.join(' ')))\n }\n return args\n }\n\n parse_known_args(args = undefined, namespace = undefined) {\n if (args === undefined) {\n args = get_argv().slice(1)\n }\n\n // default Namespace built from parser defaults\n if (namespace === undefined) {\n namespace = new Namespace()\n }\n\n // add any action defaults that aren't present\n for (let action of this._actions) {\n if (action.dest !== SUPPRESS) {\n if (!hasattr(namespace, action.dest)) {\n if (action.default !== SUPPRESS) {\n setattr(namespace, action.dest, action.default)\n }\n }\n }\n }\n\n // add any parser defaults that aren't present\n for (let dest of Object.keys(this._defaults)) {\n if (!hasattr(namespace, dest)) {\n setattr(namespace, dest, this._defaults[dest])\n }\n }\n\n // parse the arguments and exit if there are any errors\n if (this.exit_on_error) {\n try {\n [ namespace, args ] = this._parse_known_args(args, namespace)\n } catch (err) {\n if (err instanceof ArgumentError) {\n this.error(err.message)\n } else {\n throw err\n }\n }\n } else {\n [ namespace, args ] = this._parse_known_args(args, namespace)\n }\n\n if (hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR)) {\n args = args.concat(getattr(namespace, _UNRECOGNIZED_ARGS_ATTR))\n delattr(namespace, _UNRECOGNIZED_ARGS_ATTR)\n }\n\n return [ namespace, args ]\n }\n\n _parse_known_args(arg_strings, namespace) {\n // replace arg strings that are file references\n if (this.fromfile_prefix_chars !== undefined) {\n arg_strings = this._read_args_from_files(arg_strings)\n }\n\n // map all mutually exclusive arguments to the other arguments\n // they can't occur with\n let action_conflicts = new Map()\n for (let mutex_group of this._mutually_exclusive_groups) {\n let group_actions = mutex_group._group_actions\n for (let [ i, mutex_action ] of Object.entries(mutex_group._group_actions)) {\n let conflicts = action_conflicts.get(mutex_action) || []\n conflicts = conflicts.concat(group_actions.slice(0, +i))\n conflicts = conflicts.concat(group_actions.slice(+i + 1))\n action_conflicts.set(mutex_action, conflicts)\n }\n }\n\n // find all option indices, and determine the arg_string_pattern\n // which has an 'O' if there is an option at an index,\n // an 'A' if there is an argument, or a '-' if there is a '--'\n let option_string_indices = {}\n let arg_string_pattern_parts = []\n let arg_strings_iter = Object.entries(arg_strings)[Symbol.iterator]()\n for (let [ i, arg_string ] of arg_strings_iter) {\n\n // all args after -- are non-options\n if (arg_string === '--') {\n arg_string_pattern_parts.push('-')\n for ([ i, arg_string ] of arg_strings_iter) {\n arg_string_pattern_parts.push('A')\n }\n\n // otherwise, add the arg to the arg strings\n // and note the index if it was an option\n } else {\n let option_tuple = this._parse_optional(arg_string)\n let pattern\n if (option_tuple === undefined) {\n pattern = 'A'\n } else {\n option_string_indices[i] = option_tuple\n pattern = 'O'\n }\n arg_string_pattern_parts.push(pattern)\n }\n }\n\n // join the pieces together to form the pattern\n let arg_strings_pattern = arg_string_pattern_parts.join('')\n\n // converts arg strings to the appropriate and then takes the action\n let seen_actions = new Set()\n let seen_non_default_actions = new Set()\n let extras\n\n let take_action = (action, argument_strings, option_string = undefined) => {\n seen_actions.add(action)\n let argument_values = this._get_values(action, argument_strings)\n\n // error if this argument is not allowed with other previously\n // seen arguments, assuming that actions that use the default\n // value don't really count as \"present\"\n if (argument_values !== action.default) {\n seen_non_default_actions.add(action)\n for (let conflict_action of action_conflicts.get(action) || []) {\n if (seen_non_default_actions.has(conflict_action)) {\n let msg = 'not allowed with argument %s'\n let action_name = _get_action_name(conflict_action)\n throw new ArgumentError(action, sub(msg, action_name))\n }\n }\n }\n\n // take the action if we didn't receive a SUPPRESS value\n // (e.g. from a default)\n if (argument_values !== SUPPRESS) {\n action(this, namespace, argument_values, option_string)\n }\n }\n\n // function to convert arg_strings into an optional action\n let consume_optional = start_index => {\n\n // get the optional identified at this index\n let option_tuple = option_string_indices[start_index]\n let [ action, option_string, explicit_arg ] = option_tuple\n\n // identify additional optionals in the same arg string\n // (e.g. -xyz is the same as -x -y -z if no args are required)\n let action_tuples = []\n let stop\n for (;;) {\n\n // if we found no optional action, skip it\n if (action === undefined) {\n extras.push(arg_strings[start_index])\n return start_index + 1\n }\n\n // if there is an explicit argument, try to match the\n // optional's string arguments to only this\n if (explicit_arg !== undefined) {\n let arg_count = this._match_argument(action, 'A')\n\n // if the action is a single-dash option and takes no\n // arguments, try to parse more single-dash options out\n // of the tail of the option string\n let chars = this.prefix_chars\n if (arg_count === 0 && !chars.includes(option_string[1])) {\n action_tuples.push([ action, [], option_string ])\n let char = option_string[0]\n option_string = char + explicit_arg[0]\n let new_explicit_arg = explicit_arg.slice(1) || undefined\n let optionals_map = this._option_string_actions\n if (hasattr(optionals_map, option_string)) {\n action = optionals_map[option_string]\n explicit_arg = new_explicit_arg\n } else {\n let msg = 'ignored explicit argument %r'\n throw new ArgumentError(action, sub(msg, explicit_arg))\n }\n\n // if the action expect exactly one argument, we've\n // successfully matched the option; exit the loop\n } else if (arg_count === 1) {\n stop = start_index + 1\n let args = [ explicit_arg ]\n action_tuples.push([ action, args, option_string ])\n break\n\n // error if a double-dash option did not use the\n // explicit argument\n } else {\n let msg = 'ignored explicit argument %r'\n throw new ArgumentError(action, sub(msg, explicit_arg))\n }\n\n // if there is no explicit argument, try to match the\n // optional's string arguments with the following strings\n // if successful, exit the loop\n } else {\n let start = start_index + 1\n let selected_patterns = arg_strings_pattern.slice(start)\n let arg_count = this._match_argument(action, selected_patterns)\n stop = start + arg_count\n let args = arg_strings.slice(start, stop)\n action_tuples.push([ action, args, option_string ])\n break\n }\n }\n\n // add the Optional to the list and return the index at which\n // the Optional's string args stopped\n assert(action_tuples.length)\n for (let [ action, args, option_string ] of action_tuples) {\n take_action(action, args, option_string)\n }\n return stop\n }\n\n // the list of Positionals left to be parsed; this is modified\n // by consume_positionals()\n let positionals = this._get_positional_actions()\n\n // function to convert arg_strings into positional actions\n let consume_positionals = start_index => {\n // match as many Positionals as possible\n let selected_pattern = arg_strings_pattern.slice(start_index)\n let arg_counts = this._match_arguments_partial(positionals, selected_pattern)\n\n // slice off the appropriate arg strings for each Positional\n // and add the Positional and its args to the list\n for (let i = 0; i < positionals.length && i < arg_counts.length; i++) {\n let action = positionals[i]\n let arg_count = arg_counts[i]\n let args = arg_strings.slice(start_index, start_index + arg_count)\n start_index += arg_count\n take_action(action, args)\n }\n\n // slice off the Positionals that we just parsed and return the\n // index at which the Positionals' string args stopped\n positionals = positionals.slice(arg_counts.length)\n return start_index\n }\n\n // consume Positionals and Optionals alternately, until we have\n // passed the last option string\n extras = []\n let start_index = 0\n let max_option_string_index = Math.max(-1, ...Object.keys(option_string_indices).map(Number))\n while (start_index <= max_option_string_index) {\n\n // consume any Positionals preceding the next option\n let next_option_string_index = Math.min(\n // eslint-disable-next-line no-loop-func\n ...Object.keys(option_string_indices).map(Number).filter(index => index >= start_index)\n )\n if (start_index !== next_option_string_index) {\n let positionals_end_index = consume_positionals(start_index)\n\n // only try to parse the next optional if we didn't consume\n // the option string during the positionals parsing\n if (positionals_end_index > start_index) {\n start_index = positionals_end_index\n continue\n } else {\n start_index = positionals_end_index\n }\n }\n\n // if we consumed all the positionals we could and we're not\n // at the index of an option string, there were extra arguments\n if (!(start_index in option_string_indices)) {\n let strings = arg_strings.slice(start_index, next_option_string_index)\n extras = extras.concat(strings)\n start_index = next_option_string_index\n }\n\n // consume the next optional and any arguments for it\n start_index = consume_optional(start_index)\n }\n\n // consume any positionals following the last Optional\n let stop_index = consume_positionals(start_index)\n\n // if we didn't consume all the argument strings, there were extras\n extras = extras.concat(arg_strings.slice(stop_index))\n\n // make sure all required actions were present and also convert\n // action defaults which were not given as arguments\n let required_actions = []\n for (let action of this._actions) {\n if (!seen_actions.has(action)) {\n if (action.required) {\n required_actions.push(_get_action_name(action))\n } else {\n // Convert action default now instead of doing it before\n // parsing arguments to avoid calling convert functions\n // twice (which may fail) if the argument was given, but\n // only if it was defined already in the namespace\n if (action.default !== undefined &&\n typeof action.default === 'string' &&\n hasattr(namespace, action.dest) &&\n action.default === getattr(namespace, action.dest)) {\n setattr(namespace, action.dest,\n this._get_value(action, action.default))\n }\n }\n }\n }\n\n if (required_actions.length) {\n this.error(sub('the following arguments are required: %s',\n required_actions.join(', ')))\n }\n\n // make sure all required groups had one option present\n for (let group of this._mutually_exclusive_groups) {\n if (group.required) {\n let no_actions_used = true\n for (let action of group._group_actions) {\n if (seen_non_default_actions.has(action)) {\n no_actions_used = false\n break\n }\n }\n\n // if no actions were used, report the error\n if (no_actions_used) {\n let names = group._group_actions\n .filter(action => action.help !== SUPPRESS)\n .map(action => _get_action_name(action))\n let msg = 'one of the arguments %s is required'\n this.error(sub(msg, names.join(' ')))\n }\n }\n }\n\n // return the updated namespace and the extra arguments\n return [ namespace, extras ]\n }\n\n _read_args_from_files(arg_strings) {\n // expand arguments referencing files\n let new_arg_strings = []\n for (let arg_string of arg_strings) {\n\n // for regular arguments, just add them back into the list\n if (!arg_string || !this.fromfile_prefix_chars.includes(arg_string[0])) {\n new_arg_strings.push(arg_string)\n\n // replace arguments referencing files with the file content\n } else {\n try {\n let args_file = fs.readFileSync(arg_string.slice(1), 'utf8')\n let arg_strings = []\n for (let arg_line of splitlines(args_file)) {\n for (let arg of this.convert_arg_line_to_args(arg_line)) {\n arg_strings.push(arg)\n }\n }\n arg_strings = this._read_args_from_files(arg_strings)\n new_arg_strings = new_arg_strings.concat(arg_strings)\n } catch (err) {\n this.error(err.message)\n }\n }\n }\n\n // return the modified argument list\n return new_arg_strings\n }\n\n convert_arg_line_to_args(arg_line) {\n return [arg_line]\n }\n\n _match_argument(action, arg_strings_pattern) {\n // match the pattern for this action to the arg strings\n let nargs_pattern = this._get_nargs_pattern(action)\n let match = arg_strings_pattern.match(new RegExp('^' + nargs_pattern))\n\n // raise an exception if we weren't able to find a match\n if (match === null) {\n let nargs_errors = {\n undefined: 'expected one argument',\n [OPTIONAL]: 'expected at most one argument',\n [ONE_OR_MORE]: 'expected at least one argument'\n }\n let msg = nargs_errors[action.nargs]\n if (msg === undefined) {\n msg = sub(action.nargs === 1 ? 'expected %s argument' : 'expected %s arguments', action.nargs)\n }\n throw new ArgumentError(action, msg)\n }\n\n // return the number of arguments matched\n return match[1].length\n }\n\n _match_arguments_partial(actions, arg_strings_pattern) {\n // progressively shorten the actions list by slicing off the\n // final actions until we find a match\n let result = []\n for (let i of range(actions.length, 0, -1)) {\n let actions_slice = actions.slice(0, i)\n let pattern = actions_slice.map(action => this._get_nargs_pattern(action)).join('')\n let match = arg_strings_pattern.match(new RegExp('^' + pattern))\n if (match !== null) {\n result = result.concat(match.slice(1).map(string => string.length))\n break\n }\n }\n\n // return the list of arg string counts\n return result\n }\n\n _parse_optional(arg_string) {\n // if it's an empty string, it was meant to be a positional\n if (!arg_string) {\n return undefined\n }\n\n // if it doesn't start with a prefix, it was meant to be positional\n if (!this.prefix_chars.includes(arg_string[0])) {\n return undefined\n }\n\n // if the option string is present in the parser, return the action\n if (arg_string in this._option_string_actions) {\n let action = this._option_string_actions[arg_string]\n return [ action, arg_string, undefined ]\n }\n\n // if it's just a single character, it was meant to be positional\n if (arg_string.length === 1) {\n return undefined\n }\n\n // if the option string before the \"=\" is present, return the action\n if (arg_string.includes('=')) {\n let [ option_string, explicit_arg ] = _string_split(arg_string, '=', 1)\n if (option_string in this._option_string_actions) {\n let action = this._option_string_actions[option_string]\n return [ action, option_string, explicit_arg ]\n }\n }\n\n // search through all possible prefixes of the option string\n // and all actions in the parser for possible interpretations\n let option_tuples = this._get_option_tuples(arg_string)\n\n // if multiple actions match, the option string was ambiguous\n if (option_tuples.length > 1) {\n let options = option_tuples.map(([ /*action*/, option_string/*, explicit_arg*/ ]) => option_string).join(', ')\n let args = {option: arg_string, matches: options}\n let msg = 'ambiguous option: %(option)s could match %(matches)s'\n this.error(sub(msg, args))\n\n // if exactly one action matched, this segmentation is good,\n // so return the parsed action\n } else if (option_tuples.length === 1) {\n let [ option_tuple ] = option_tuples\n return option_tuple\n }\n\n // if it was not found as an option, but it looks like a negative\n // number, it was meant to be positional\n // unless there are negative-number-like options\n if (this._negative_number_matcher.test(arg_string)) {\n if (!this._has_negative_number_optionals.length) {\n return undefined\n }\n }\n\n // if it contains a space, it was meant to be a positional\n if (arg_string.includes(' ')) {\n return undefined\n }\n\n // it was meant to be an optional but there is no such option\n // in this parser (though it might be a valid option in a subparser)\n return [ undefined, arg_string, undefined ]\n }\n\n _get_option_tuples(option_string) {\n let result = []\n\n // option strings starting with two prefix characters are only\n // split at the '='\n let chars = this.prefix_chars\n if (chars.includes(option_string[0]) && chars.includes(option_string[1])) {\n if (this.allow_abbrev) {\n let option_prefix, explicit_arg\n if (option_string.includes('=')) {\n [ option_prefix, explicit_arg ] = _string_split(option_string, '=', 1)\n } else {\n option_prefix = option_string\n explicit_arg = undefined\n }\n for (let option_string of Object.keys(this._option_string_actions)) {\n if (option_string.startsWith(option_prefix)) {\n let action = this._option_string_actions[option_string]\n let tup = [ action, option_string, explicit_arg ]\n result.push(tup)\n }\n }\n }\n\n // single character options can be concatenated with their arguments\n // but multiple character options always have to have their argument\n // separate\n } else if (chars.includes(option_string[0]) && !chars.includes(option_string[1])) {\n let option_prefix = option_string\n let explicit_arg = undefined\n let short_option_prefix = option_string.slice(0, 2)\n let short_explicit_arg = option_string.slice(2)\n\n for (let option_string of Object.keys(this._option_string_actions)) {\n if (option_string === short_option_prefix) {\n let action = this._option_string_actions[option_string]\n let tup = [ action, option_string, short_explicit_arg ]\n result.push(tup)\n } else if (option_string.startsWith(option_prefix)) {\n let action = this._option_string_actions[option_string]\n let tup = [ action, option_string, explicit_arg ]\n result.push(tup)\n }\n }\n\n // shouldn't ever get here\n } else {\n this.error(sub('unexpected option string: %s', option_string))\n }\n\n // return the collected option tuples\n return result\n }\n\n _get_nargs_pattern(action) {\n // in all examples below, we have to allow for '--' args\n // which are represented as '-' in the pattern\n let nargs = action.nargs\n let nargs_pattern\n\n // the default (None) is assumed to be a single argument\n if (nargs === undefined) {\n nargs_pattern = '(-*A-*)'\n\n // allow zero or one arguments\n } else if (nargs === OPTIONAL) {\n nargs_pattern = '(-*A?-*)'\n\n // allow zero or more arguments\n } else if (nargs === ZERO_OR_MORE) {\n nargs_pattern = '(-*[A-]*)'\n\n // allow one or more arguments\n } else if (nargs === ONE_OR_MORE) {\n nargs_pattern = '(-*A[A-]*)'\n\n // allow any number of options or arguments\n } else if (nargs === REMAINDER) {\n nargs_pattern = '([-AO]*)'\n\n // allow one argument followed by any number of options or arguments\n } else if (nargs === PARSER) {\n nargs_pattern = '(-*A[-AO]*)'\n\n // suppress action, like nargs=0\n } else if (nargs === SUPPRESS) {\n nargs_pattern = '(-*-*)'\n\n // all others should be integers\n } else {\n nargs_pattern = sub('(-*%s-*)', 'A'.repeat(nargs).split('').join('-*'))\n }\n\n // if this is an optional action, -- is not allowed\n if (action.option_strings.length) {\n nargs_pattern = nargs_pattern.replace(/-\\*/g, '')\n nargs_pattern = nargs_pattern.replace(/-/g, '')\n }\n\n // return the pattern\n return nargs_pattern\n }\n\n // ========================\n // Alt command line argument parsing, allowing free intermix\n // ========================\n\n parse_intermixed_args(args = undefined, namespace = undefined) {\n let argv\n [ args, argv ] = this.parse_known_intermixed_args(args, namespace)\n if (argv.length) {\n let msg = 'unrecognized arguments: %s'\n this.error(sub(msg, argv.join(' ')))\n }\n return args\n }\n\n parse_known_intermixed_args(args = undefined, namespace = undefined) {\n // returns a namespace and list of extras\n //\n // positional can be freely intermixed with optionals. optionals are\n // first parsed with all positional arguments deactivated. The 'extras'\n // are then parsed. If the parser definition is incompatible with the\n // intermixed assumptions (e.g. use of REMAINDER, subparsers) a\n // TypeError is raised.\n //\n // positionals are 'deactivated' by setting nargs and default to\n // SUPPRESS. This blocks the addition of that positional to the\n // namespace\n\n let extras\n let positionals = this._get_positional_actions()\n let a = positionals.filter(action => [ PARSER, REMAINDER ].includes(action.nargs))\n if (a.length) {\n throw new TypeError(sub('parse_intermixed_args: positional arg' +\n ' with nargs=%s', a[0].nargs))\n }\n\n for (let group of this._mutually_exclusive_groups) {\n for (let action of group._group_actions) {\n if (positionals.includes(action)) {\n throw new TypeError('parse_intermixed_args: positional in' +\n ' mutuallyExclusiveGroup')\n }\n }\n }\n\n let save_usage\n try {\n save_usage = this.usage\n let remaining_args\n try {\n if (this.usage === undefined) {\n // capture the full usage for use in error messages\n this.usage = this.format_usage().slice(7)\n }\n for (let action of positionals) {\n // deactivate positionals\n action.save_nargs = action.nargs\n // action.nargs = 0\n action.nargs = SUPPRESS\n action.save_default = action.default\n action.default = SUPPRESS\n }\n [ namespace, remaining_args ] = this.parse_known_args(args,\n namespace)\n for (let action of positionals) {\n // remove the empty positional values from namespace\n let attr = getattr(namespace, action.dest)\n if (Array.isArray(attr) && attr.length === 0) {\n // eslint-disable-next-line no-console\n console.warn(sub('Do not expect %s in %s', action.dest, namespace))\n delattr(namespace, action.dest)\n }\n }\n } finally {\n // restore nargs and usage before exiting\n for (let action of positionals) {\n action.nargs = action.save_nargs\n action.default = action.save_default\n }\n }\n let optionals = this._get_optional_actions()\n try {\n // parse positionals. optionals aren't normally required, but\n // they could be, so make sure they aren't.\n for (let action of optionals) {\n action.save_required = action.required\n action.required = false\n }\n for (let group of this._mutually_exclusive_groups) {\n group.save_required = group.required\n group.required = false\n }\n [ namespace, extras ] = this.parse_known_args(remaining_args,\n namespace)\n } finally {\n // restore parser values before exiting\n for (let action of optionals) {\n action.required = action.save_required\n }\n for (let group of this._mutually_exclusive_groups) {\n group.required = group.save_required\n }\n }\n } finally {\n this.usage = save_usage\n }\n return [ namespace, extras ]\n }\n\n // ========================\n // Value conversion methods\n // ========================\n _get_values(action, arg_strings) {\n // for everything but PARSER, REMAINDER args, strip out first '--'\n if (![PARSER, REMAINDER].includes(action.nargs)) {\n try {\n _array_remove(arg_strings, '--')\n } catch (err) {}\n }\n\n let value\n // optional argument produces a default when not present\n if (!arg_strings.length && action.nargs === OPTIONAL) {\n if (action.option_strings.length) {\n value = action.const\n } else {\n value = action.default\n }\n if (typeof value === 'string') {\n value = this._get_value(action, value)\n this._check_value(action, value)\n }\n\n // when nargs='*' on a positional, if there were no command-line\n // args, use the default if it is anything other than None\n } else if (!arg_strings.length && action.nargs === ZERO_OR_MORE &&\n !action.option_strings.length) {\n if (action.default !== undefined) {\n value = action.default\n } else {\n value = arg_strings\n }\n this._check_value(action, value)\n\n // single argument or optional argument produces a single value\n } else if (arg_strings.length === 1 && [undefined, OPTIONAL].includes(action.nargs)) {\n let arg_string = arg_strings[0]\n value = this._get_value(action, arg_string)\n this._check_value(action, value)\n\n // REMAINDER arguments convert all values, checking none\n } else if (action.nargs === REMAINDER) {\n value = arg_strings.map(v => this._get_value(action, v))\n\n // PARSER arguments convert all values, but check only the first\n } else if (action.nargs === PARSER) {\n value = arg_strings.map(v => this._get_value(action, v))\n this._check_value(action, value[0])\n\n // SUPPRESS argument does not put anything in the namespace\n } else if (action.nargs === SUPPRESS) {\n value = SUPPRESS\n\n // all other types of nargs produce a list\n } else {\n value = arg_strings.map(v => this._get_value(action, v))\n for (let v of value) {\n this._check_value(action, v)\n }\n }\n\n // return the converted value\n return value\n }\n\n _get_value(action, arg_string) {\n let type_func = this._registry_get('type', action.type, action.type)\n if (typeof type_func !== 'function') {\n let msg = '%r is not callable'\n throw new ArgumentError(action, sub(msg, type_func))\n }\n\n // convert the value to the appropriate type\n let result\n try {\n try {\n result = type_func(arg_string)\n } catch (err) {\n // Dear TC39, why would you ever consider making es6 classes not callable?\n // We had one universal interface, [[Call]], which worked for anything\n // (with familiar this-instanceof guard for classes). Now we have two.\n if (err instanceof TypeError &&\n /Class constructor .* cannot be invoked without 'new'/.test(err.message)) {\n // eslint-disable-next-line new-cap\n result = new type_func(arg_string)\n } else {\n throw err\n }\n }\n\n } catch (err) {\n // ArgumentTypeErrors indicate errors\n if (err instanceof ArgumentTypeError) {\n //let name = getattr(action.type, 'name', repr(action.type))\n let msg = err.message\n throw new ArgumentError(action, msg)\n\n // TypeErrors or ValueErrors also indicate errors\n } else if (err instanceof TypeError) {\n let name = getattr(action.type, 'name', repr(action.type))\n let args = {type: name, value: arg_string}\n let msg = 'invalid %(type)s value: %(value)r'\n throw new ArgumentError(action, sub(msg, args))\n } else {\n throw err\n }\n }\n\n // return the converted value\n return result\n }\n\n _check_value(action, value) {\n // converted value must be one of the choices (if specified)\n if (action.choices !== undefined && !_choices_to_array(action.choices).includes(value)) {\n let args = {value,\n choices: _choices_to_array(action.choices).map(repr).join(', ')}\n let msg = 'invalid choice: %(value)r (choose from %(choices)s)'\n throw new ArgumentError(action, sub(msg, args))\n }\n }\n\n // =======================\n // Help-formatting methods\n // =======================\n format_usage() {\n let formatter = this._get_formatter()\n formatter.add_usage(this.usage, this._actions,\n this._mutually_exclusive_groups)\n return formatter.format_help()\n }\n\n format_help() {\n let formatter = this._get_formatter()\n\n // usage\n formatter.add_usage(this.usage, this._actions,\n this._mutually_exclusive_groups)\n\n // description\n formatter.add_text(this.description)\n\n // positionals, optionals and user-defined groups\n for (let action_group of this._action_groups) {\n formatter.start_section(action_group.title)\n formatter.add_text(action_group.description)\n formatter.add_arguments(action_group._group_actions)\n formatter.end_section()\n }\n\n // epilog\n formatter.add_text(this.epilog)\n\n // determine help from format above\n return formatter.format_help()\n }\n\n _get_formatter() {\n // eslint-disable-next-line new-cap\n return new this.formatter_class({ prog: this.prog })\n }\n\n // =====================\n // Help-printing methods\n // =====================\n print_usage(file = undefined) {\n if (file === undefined) file = process.stdout\n this._print_message(this.format_usage(), file)\n }\n\n print_help(file = undefined) {\n if (file === undefined) file = process.stdout\n this._print_message(this.format_help(), file)\n }\n\n _print_message(message, file = undefined) {\n if (message) {\n if (file === undefined) file = process.stderr\n file.write(message)\n }\n }\n\n // ===============\n // Exiting methods\n // ===============\n exit(status = 0, message = undefined) {\n if (message) {\n this._print_message(message, process.stderr)\n }\n process.exit(status)\n }\n\n error(message) {\n /*\n * error(message: string)\n *\n * Prints a usage message incorporating the message to stderr and\n * exits.\n *\n * If you override this in a subclass, it should not return -- it\n * should either exit or raise an exception.\n */\n\n // LEGACY (v1 compatibility), debug mode\n if (this.debug === true) throw new Error(message)\n // end\n this.print_usage(process.stderr)\n let args = {prog: this.prog, message: message}\n this.exit(2, sub('%(prog)s: error: %(message)s\\n', args))\n }\n}))\n\n\nmodule.exports = {\n ArgumentParser,\n ArgumentError,\n ArgumentTypeError,\n BooleanOptionalAction,\n FileType,\n HelpFormatter,\n ArgumentDefaultsHelpFormatter,\n RawDescriptionHelpFormatter,\n RawTextHelpFormatter,\n MetavarTypeHelpFormatter,\n Namespace,\n Action,\n ONE_OR_MORE,\n OPTIONAL,\n PARSER,\n REMAINDER,\n SUPPRESS,\n ZERO_OR_MORE\n}\n\n// LEGACY (v1 compatibility), Const alias\nObject.defineProperty(module.exports, 'Const', {\n get() {\n let result = {}\n Object.entries({ ONE_OR_MORE, OPTIONAL, PARSER, REMAINDER, SUPPRESS, ZERO_OR_MORE }).forEach(([ n, v ]) => {\n Object.defineProperty(result, n, {\n get() {\n deprecate(n, sub('use argparse.%s instead of argparse.Const.%s', n, n))\n return v\n }\n })\n })\n Object.entries({ _UNRECOGNIZED_ARGS_ATTR }).forEach(([ n, v ]) => {\n Object.defineProperty(result, n, {\n get() {\n deprecate(n, sub('argparse.Const.%s is an internal symbol and will no longer be available', n))\n return v\n }\n })\n })\n return result\n },\n enumerable: false\n})\n// end\n", "/*!\n * Tmp\n *\n * Copyright (c) 2011-2017 KARASZI Istvan <github@spam.raszi.hu>\n *\n * MIT Licensed\n */\n\n/*\n * Module dependencies.\n */\nconst fs = require('fs');\nconst os = require('os');\nconst path = require('path');\nconst crypto = require('crypto');\nconst _c = { fs: fs.constants, os: os.constants };\n\n/*\n * The working inner variables.\n */\nconst\n // the random characters to choose from\n RANDOM_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n\n TEMPLATE_PATTERN = /XXXXXX/,\n\n DEFAULT_TRIES = 3,\n\n CREATE_FLAGS = (_c.O_CREAT || _c.fs.O_CREAT) | (_c.O_EXCL || _c.fs.O_EXCL) | (_c.O_RDWR || _c.fs.O_RDWR),\n\n // constants are off on the windows platform and will not match the actual errno codes\n IS_WIN32 = os.platform() === 'win32',\n EBADF = _c.EBADF || _c.os.errno.EBADF,\n ENOENT = _c.ENOENT || _c.os.errno.ENOENT,\n\n DIR_MODE = 0o700 /* 448 */,\n FILE_MODE = 0o600 /* 384 */,\n\n EXIT = 'exit',\n\n // this will hold the objects need to be removed on exit\n _removeObjects = [],\n\n // API change in fs.rmdirSync leads to error when passing in a second parameter, e.g. the callback\n FN_RMDIR_SYNC = fs.rmdirSync.bind(fs);\n\nlet\n _gracefulCleanup = false;\n\n/**\n * Recursively remove a directory and its contents.\n *\n * @param {string} dirPath path of directory to remove\n * @param {Function} callback\n * @private\n */\nfunction rimraf(dirPath, callback) {\n return fs.rm(dirPath, { recursive: true }, callback);\n}\n\n/**\n * Recursively remove a directory and its contents, synchronously.\n *\n * @param {string} dirPath path of directory to remove\n * @private\n */\nfunction FN_RIMRAF_SYNC(dirPath) {\n return fs.rmSync(dirPath, { recursive: true });\n}\n\n/**\n * Gets a temporary file name.\n *\n * @param {(Options|tmpNameCallback)} options options or callback\n * @param {?tmpNameCallback} callback the callback function\n */\nfunction tmpName(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n try {\n _assertAndSanitizeOptions(opts);\n } catch (err) {\n return cb(err);\n }\n\n let tries = opts.tries;\n (function _getUniqueName() {\n try {\n const name = _generateTmpName(opts);\n\n // check whether the path exists then retry if needed\n fs.stat(name, function (err) {\n /* istanbul ignore else */\n if (!err) {\n /* istanbul ignore else */\n if (tries-- > 0) return _getUniqueName();\n\n return cb(new Error('Could not get a unique tmp filename, max tries reached ' + name));\n }\n\n cb(null, name);\n });\n } catch (err) {\n cb(err);\n }\n }());\n}\n\n/**\n * Synchronous version of tmpName.\n *\n * @param {Object} options\n * @returns {string} the generated random name\n * @throws {Error} if the options are invalid or could not generate a filename\n */\nfunction tmpNameSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n _assertAndSanitizeOptions(opts);\n\n let tries = opts.tries;\n do {\n const name = _generateTmpName(opts);\n try {\n fs.statSync(name);\n } catch (e) {\n return name;\n }\n } while (tries-- > 0);\n\n throw new Error('Could not get a unique tmp filename, max tries reached');\n}\n\n/**\n * Creates and opens a temporary file.\n *\n * @param {(Options|null|undefined|fileCallback)} options the config options or the callback function or null or undefined\n * @param {?fileCallback} callback\n */\nfunction file(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create and open the file\n fs.open(name, CREATE_FLAGS, opts.mode || FILE_MODE, function _fileCreated(err, fd) {\n /* istanbu ignore else */\n if (err) return cb(err);\n\n if (opts.discardDescriptor) {\n return fs.close(fd, function _discardCallback(possibleErr) {\n // the chance of getting an error on close here is rather low and might occur in the most edgiest cases only\n return cb(possibleErr, name, undefined, _prepareTmpFileRemoveCallback(name, -1, opts, false));\n });\n } else {\n // detachDescriptor passes the descriptor whereas discardDescriptor closes it, either way, we no longer care\n // about the descriptor\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n cb(null, name, fd, _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, false));\n }\n });\n });\n}\n\n/**\n * Synchronous version of file.\n *\n * @param {Options} options\n * @returns {FileSyncObject} object consists of name, fd and removeCallback\n * @throws {Error} if cannot create a file\n */\nfunction fileSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const discardOrDetachDescriptor = opts.discardDescriptor || opts.detachDescriptor;\n const name = tmpNameSync(opts);\n var fd = fs.openSync(name, CREATE_FLAGS, opts.mode || FILE_MODE);\n /* istanbul ignore else */\n if (opts.discardDescriptor) {\n fs.closeSync(fd);\n fd = undefined;\n }\n\n return {\n name: name,\n fd: fd,\n removeCallback: _prepareTmpFileRemoveCallback(name, discardOrDetachDescriptor ? -1 : fd, opts, true)\n };\n}\n\n/**\n * Creates a temporary directory.\n *\n * @param {(Options|dirCallback)} options the options or the callback function\n * @param {?dirCallback} callback\n */\nfunction dir(options, callback) {\n const\n args = _parseArguments(options, callback),\n opts = args[0],\n cb = args[1];\n\n // gets a temporary filename\n tmpName(opts, function _tmpNameCreated(err, name) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n // create the directory\n fs.mkdir(name, opts.mode || DIR_MODE, function _dirCreated(err) {\n /* istanbul ignore else */\n if (err) return cb(err);\n\n cb(null, name, _prepareTmpDirRemoveCallback(name, opts, false));\n });\n });\n}\n\n/**\n * Synchronous version of dir.\n *\n * @param {Options} options\n * @returns {DirSyncObject} object consists of name and removeCallback\n * @throws {Error} if it cannot create a directory\n */\nfunction dirSync(options) {\n const\n args = _parseArguments(options),\n opts = args[0];\n\n const name = tmpNameSync(opts);\n fs.mkdirSync(name, opts.mode || DIR_MODE);\n\n return {\n name: name,\n removeCallback: _prepareTmpDirRemoveCallback(name, opts, true)\n };\n}\n\n/**\n * Removes files asynchronously.\n *\n * @param {Object} fdPath\n * @param {Function} next\n * @private\n */\nfunction _removeFileAsync(fdPath, next) {\n const _handler = function (err) {\n if (err && !_isENOENT(err)) {\n // reraise any unanticipated error\n return next(err);\n }\n next();\n };\n\n if (0 <= fdPath[0])\n fs.close(fdPath[0], function () {\n fs.unlink(fdPath[1], _handler);\n });\n else fs.unlink(fdPath[1], _handler);\n}\n\n/**\n * Removes files synchronously.\n *\n * @param {Object} fdPath\n * @private\n */\nfunction _removeFileSync(fdPath) {\n let rethrownException = null;\n try {\n if (0 <= fdPath[0]) fs.closeSync(fdPath[0]);\n } catch (e) {\n // reraise any unanticipated error\n if (!_isEBADF(e) && !_isENOENT(e)) throw e;\n } finally {\n try {\n fs.unlinkSync(fdPath[1]);\n }\n catch (e) {\n // reraise any unanticipated error\n if (!_isENOENT(e)) rethrownException = e;\n }\n }\n if (rethrownException !== null) {\n throw rethrownException;\n }\n}\n\n/**\n * Prepares the callback for removal of the temporary file.\n *\n * Returns either a sync callback or a async callback depending on whether\n * fileSync or file was called, which is expressed by the sync parameter.\n *\n * @param {string} name the path of the file\n * @param {number} fd file descriptor\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {fileCallback | fileCallbackSync}\n * @private\n */\nfunction _prepareTmpFileRemoveCallback(name, fd, opts, sync) {\n const removeCallbackSync = _prepareRemoveCallback(_removeFileSync, [fd, name], sync);\n const removeCallback = _prepareRemoveCallback(_removeFileAsync, [fd, name], sync, removeCallbackSync);\n\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Prepares the callback for removal of the temporary directory.\n *\n * Returns either a sync callback or a async callback depending on whether\n * tmpFileSync or tmpFile was called, which is expressed by the sync parameter.\n *\n * @param {string} name\n * @param {Object} opts\n * @param {boolean} sync\n * @returns {Function} the callback\n * @private\n */\nfunction _prepareTmpDirRemoveCallback(name, opts, sync) {\n const removeFunction = opts.unsafeCleanup ? rimraf : fs.rmdir.bind(fs);\n const removeFunctionSync = opts.unsafeCleanup ? FN_RIMRAF_SYNC : FN_RMDIR_SYNC;\n const removeCallbackSync = _prepareRemoveCallback(removeFunctionSync, name, sync);\n const removeCallback = _prepareRemoveCallback(removeFunction, name, sync, removeCallbackSync);\n if (!opts.keep) _removeObjects.unshift(removeCallbackSync);\n\n return sync ? removeCallbackSync : removeCallback;\n}\n\n/**\n * Creates a guarded function wrapping the removeFunction call.\n *\n * The cleanup callback is save to be called multiple times.\n * Subsequent invocations will be ignored.\n *\n * @param {Function} removeFunction\n * @param {string} fileOrDirName\n * @param {boolean} sync\n * @param {cleanupCallbackSync?} cleanupCallbackSync\n * @returns {cleanupCallback | cleanupCallbackSync}\n * @private\n */\nfunction _prepareRemoveCallback(removeFunction, fileOrDirName, sync, cleanupCallbackSync) {\n let called = false;\n\n // if sync is true, the next parameter will be ignored\n return function _cleanupCallback(next) {\n\n /* istanbul ignore else */\n if (!called) {\n // remove cleanupCallback from cache\n const toRemove = cleanupCallbackSync || _cleanupCallback;\n const index = _removeObjects.indexOf(toRemove);\n /* istanbul ignore else */\n if (index >= 0) _removeObjects.splice(index, 1);\n\n called = true;\n if (sync || removeFunction === FN_RMDIR_SYNC || removeFunction === FN_RIMRAF_SYNC) {\n return removeFunction(fileOrDirName);\n } else {\n return removeFunction(fileOrDirName, next || function() {});\n }\n }\n };\n}\n\n/**\n * The garbage collector.\n *\n * @private\n */\nfunction _garbageCollector() {\n /* istanbul ignore else */\n if (!_gracefulCleanup) return;\n\n // the function being called removes itself from _removeObjects,\n // loop until _removeObjects is empty\n while (_removeObjects.length) {\n try {\n _removeObjects[0]();\n } catch (e) {\n // already removed?\n }\n }\n}\n\n/**\n * Random name generator based on crypto.\n * Adapted from http://blog.tompawlak.org/how-to-generate-random-values-nodejs-javascript\n *\n * @param {number} howMany\n * @returns {string} the generated random name\n * @private\n */\nfunction _randomChars(howMany) {\n let\n value = [],\n rnd = null;\n\n // make sure that we do not fail because we ran out of entropy\n try {\n rnd = crypto.randomBytes(howMany);\n } catch (e) {\n rnd = crypto.pseudoRandomBytes(howMany);\n }\n\n for (var i = 0; i < howMany; i++) {\n value.push(RANDOM_CHARS[rnd[i] % RANDOM_CHARS.length]);\n }\n\n return value.join('');\n}\n\n/**\n * Helper which determines whether a string s is blank, that is undefined, or empty or null.\n *\n * @private\n * @param {string} s\n * @returns {Boolean} true whether the string s is blank, false otherwise\n */\nfunction _isBlank(s) {\n return s === null || _isUndefined(s) || !s.trim();\n}\n\n/**\n * Checks whether the `obj` parameter is defined or not.\n *\n * @param {Object} obj\n * @returns {boolean} true if the object is undefined\n * @private\n */\nfunction _isUndefined(obj) {\n return typeof obj === 'undefined';\n}\n\n/**\n * Parses the function arguments.\n *\n * This function helps to have optional arguments.\n *\n * @param {(Options|null|undefined|Function)} options\n * @param {?Function} callback\n * @returns {Array} parsed arguments\n * @private\n */\nfunction _parseArguments(options, callback) {\n /* istanbul ignore else */\n if (typeof options === 'function') {\n return [{}, options];\n }\n\n /* istanbul ignore else */\n if (_isUndefined(options)) {\n return [{}, callback];\n }\n\n // copy options so we do not leak the changes we make internally\n const actualOptions = {};\n for (const key of Object.getOwnPropertyNames(options)) {\n actualOptions[key] = options[key];\n }\n\n return [actualOptions, callback];\n}\n\n/**\n * Generates a new temporary name.\n *\n * @param {Object} opts\n * @returns {string} the new random name according to opts\n * @private\n */\nfunction _generateTmpName(opts) {\n\n const tmpDir = opts.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.name))\n return path.join(tmpDir, opts.dir, opts.name);\n\n /* istanbul ignore else */\n if (!_isUndefined(opts.template))\n return path.join(tmpDir, opts.dir, opts.template).replace(TEMPLATE_PATTERN, _randomChars(6));\n\n // prefix and postfix\n const name = [\n opts.prefix ? opts.prefix : 'tmp',\n '-',\n process.pid,\n '-',\n _randomChars(12),\n opts.postfix ? '-' + opts.postfix : ''\n ].join('');\n\n return path.join(tmpDir, opts.dir, name);\n}\n\n/**\n * Asserts whether the specified options are valid, also sanitizes options and provides sane defaults for missing\n * options.\n *\n * @param {Options} options\n * @private\n */\nfunction _assertAndSanitizeOptions(options) {\n\n options.tmpdir = _getTmpDir(options);\n\n const tmpDir = options.tmpdir;\n\n /* istanbul ignore else */\n if (!_isUndefined(options.name))\n _assertIsRelative(options.name, 'name', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.dir))\n _assertIsRelative(options.dir, 'dir', tmpDir);\n /* istanbul ignore else */\n if (!_isUndefined(options.template)) {\n _assertIsRelative(options.template, 'template', tmpDir);\n if (!options.template.match(TEMPLATE_PATTERN))\n throw new Error(`Invalid template, found \"${options.template}\".`);\n }\n /* istanbul ignore else */\n if (!_isUndefined(options.tries) && isNaN(options.tries) || options.tries < 0)\n throw new Error(`Invalid tries, found \"${options.tries}\".`);\n\n // if a name was specified we will try once\n options.tries = _isUndefined(options.name) ? options.tries || DEFAULT_TRIES : 1;\n options.keep = !!options.keep;\n options.detachDescriptor = !!options.detachDescriptor;\n options.discardDescriptor = !!options.discardDescriptor;\n options.unsafeCleanup = !!options.unsafeCleanup;\n\n // sanitize dir, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.dir = _isUndefined(options.dir) ? '' : path.relative(tmpDir, _resolvePath(options.dir, tmpDir));\n options.template = _isUndefined(options.template) ? undefined : path.relative(tmpDir, _resolvePath(options.template, tmpDir));\n // sanitize further if template is relative to options.dir\n options.template = _isBlank(options.template) ? undefined : path.relative(options.dir, options.template);\n\n // for completeness' sake only, also keep (multiple) blanks if the user, purportedly sane, requests us to\n options.name = _isUndefined(options.name) ? undefined : options.name;\n options.prefix = _isUndefined(options.prefix) ? '' : options.prefix;\n options.postfix = _isUndefined(options.postfix) ? '' : options.postfix;\n}\n\n/**\n * Resolve the specified path name in respect to tmpDir.\n *\n * The specified name might include relative path components, e.g. ../\n * so we need to resolve in order to be sure that is is located inside tmpDir\n *\n * @param name\n * @param tmpDir\n * @returns {string}\n * @private\n */\nfunction _resolvePath(name, tmpDir) {\n if (name.startsWith(tmpDir)) {\n return path.resolve(name);\n } else {\n return path.resolve(path.join(tmpDir, name));\n }\n}\n\n/**\n * Asserts whether specified name is relative to the specified tmpDir.\n *\n * @param {string} name\n * @param {string} option\n * @param {string} tmpDir\n * @throws {Error}\n * @private\n */\nfunction _assertIsRelative(name, option, tmpDir) {\n if (option === 'name') {\n // assert that name is not absolute and does not contain a path\n if (path.isAbsolute(name))\n throw new Error(`${option} option must not contain an absolute path, found \"${name}\".`);\n // must not fail on valid .<name> or ..<name> or similar such constructs\n let basename = path.basename(name);\n if (basename === '..' || basename === '.' || basename !== name)\n throw new Error(`${option} option must not contain a path, found \"${name}\".`);\n }\n else { // if (option === 'dir' || option === 'template') {\n // assert that dir or template are relative to tmpDir\n if (path.isAbsolute(name) && !name.startsWith(tmpDir)) {\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${name}\".`);\n }\n let resolvedPath = _resolvePath(name, tmpDir);\n if (!resolvedPath.startsWith(tmpDir))\n throw new Error(`${option} option must be relative to \"${tmpDir}\", found \"${resolvedPath}\".`);\n }\n}\n\n/**\n * Helper for testing against EBADF to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isEBADF(error) {\n return _isExpectedError(error, -EBADF, 'EBADF');\n}\n\n/**\n * Helper for testing against ENOENT to compensate changes made to Node 7.x under Windows.\n *\n * @private\n */\nfunction _isENOENT(error) {\n return _isExpectedError(error, -ENOENT, 'ENOENT');\n}\n\n/**\n * Helper to determine whether the expected error code matches the actual code and errno,\n * which will differ between the supported node versions.\n *\n * - Node >= 7.0:\n * error.code {string}\n * error.errno {number} any numerical value will be negated\n *\n * CAVEAT\n *\n * On windows, the errno for EBADF is -4083 but os.constants.errno.EBADF is different and we must assume that ENOENT\n * is no different here.\n *\n * @param {SystemError} error\n * @param {number} errno\n * @param {string} code\n * @private\n */\nfunction _isExpectedError(error, errno, code) {\n return IS_WIN32 ? error.code === code : error.code === code && error.errno === errno;\n}\n\n/**\n * Sets the graceful cleanup.\n *\n * If graceful cleanup is set, tmp will remove all controlled temporary objects on process exit, otherwise the\n * temporary objects will remain in place, waiting to be cleaned up on system restart or otherwise scheduled temporary\n * object removals.\n */\nfunction setGracefulCleanup() {\n _gracefulCleanup = true;\n}\n\n/**\n * Returns the currently configured tmp dir from os.tmpdir().\n *\n * @private\n * @param {?Options} options\n * @returns {string} the currently configured tmp dir\n */\nfunction _getTmpDir(options) {\n return path.resolve(options && options.tmpdir || os.tmpdir());\n}\n\n// Install process exit listener\nprocess.addListener(EXIT, _garbageCollector);\n\n/**\n * Configuration options.\n *\n * @typedef {Object} Options\n * @property {?boolean} keep the temporary object (file or dir) will not be garbage collected\n * @property {?number} tries the number of tries before give up the name generation\n * @property (?int) mode the access mode, defaults are 0o700 for directories and 0o600 for files\n * @property {?string} template the \"mkstemp\" like filename template\n * @property {?string} name fixed name relative to tmpdir or the specified dir option\n * @property {?string} dir tmp directory relative to the root tmp directory in use\n * @property {?string} prefix prefix for the generated name\n * @property {?string} postfix postfix for the generated name\n * @property {?string} tmpdir the root tmp directory which overrides the os tmpdir\n * @property {?boolean} unsafeCleanup recursively removes the created temporary directory, even when it's not empty\n * @property {?boolean} detachDescriptor detaches the file descriptor, caller is responsible for closing the file, tmp will no longer try closing the file during garbage collection\n * @property {?boolean} discardDescriptor discards the file descriptor (closes file, fd is -1), tmp will no longer try closing the file during garbage collection\n */\n\n/**\n * @typedef {Object} FileSyncObject\n * @property {string} name the name of the file\n * @property {string} fd the file descriptor or -1 if the fd has been discarded\n * @property {fileCallback} removeCallback the callback function to remove the file\n */\n\n/**\n * @typedef {Object} DirSyncObject\n * @property {string} name the name of the directory\n * @property {fileCallback} removeCallback the callback function to remove the directory\n */\n\n/**\n * @callback tmpNameCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n */\n\n/**\n * @callback fileCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback fileCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {number} fd the file descriptor or -1 if the fd had been discarded\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallback\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallback} fn the cleanup callback function\n */\n\n/**\n * @callback dirCallbackSync\n * @param {?Error} err the error object if anything goes wrong\n * @param {string} name the temporary file name\n * @param {cleanupCallbackSync} fn the cleanup callback function\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallback\n * @param {simpleCallback} [next] function to call whenever the tmp object needs to be removed\n */\n\n/**\n * Removes the temporary created file or directory.\n *\n * @callback cleanupCallbackSync\n */\n\n/**\n * Callback function for function composition.\n * @see {@link https://github.com/raszi/node-tmp/issues/57|raszi/node-tmp#57}\n *\n * @callback simpleCallback\n */\n\n// exporting all the needed methods\n\n// evaluate _getTmpDir() lazily, mainly for simplifying testing but it also will\n// allow users to reconfigure the temporary directory\nObject.defineProperty(module.exports, 'tmpdir', {\n enumerable: true,\n configurable: false,\n get: function () {\n return _getTmpDir();\n }\n});\n\nmodule.exports.dir = dir;\nmodule.exports.dirSync = dirSync;\n\nmodule.exports.file = file;\nmodule.exports.fileSync = fileSync;\n\nmodule.exports.tmpName = tmpName;\nmodule.exports.tmpNameSync = tmpNameSync;\n\nmodule.exports.setGracefulCleanup = setGracefulCleanup;\n", "'use strict'\n\n// turn tar(1) style args like `C` into the more verbose things like `cwd`\n\nconst argmap = new Map([\n ['C', 'cwd'],\n ['f', 'file'],\n ['z', 'gzip'],\n ['P', 'preservePaths'],\n ['U', 'unlink'],\n ['strip-components', 'strip'],\n ['stripComponents', 'strip'],\n ['keep-newer', 'newer'],\n ['keepNewer', 'newer'],\n ['keep-newer-files', 'newer'],\n ['keepNewerFiles', 'newer'],\n ['k', 'keep'],\n ['keep-existing', 'keep'],\n ['keepExisting', 'keep'],\n ['m', 'noMtime'],\n ['no-mtime', 'noMtime'],\n ['p', 'preserveOwner'],\n ['L', 'follow'],\n ['h', 'follow'],\n])\n\nmodule.exports = opt => opt ? Object.keys(opt).map(k => [\n argmap.has(k) ? argmap.get(k) : k, opt[k],\n]).reduce((set, kv) => (set[kv[0]] = kv[1], set), Object.create(null)) : {}\n", "'use strict'\nconst proc =\n typeof process === 'object' && process\n ? process\n : {\n stdout: null,\n stderr: null,\n }\nconst EE = require('events')\nconst Stream = require('stream')\nconst stringdecoder = require('string_decoder')\nconst SD = stringdecoder.StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFER = Symbol('buffer')\nconst PIPES = Symbol('pipes')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\n// internal event when stream is destroyed\nconst DESTROYED = Symbol('destroyed')\n// internal event when stream has an error\nconst ERROR = Symbol('error')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\nconst ABORT = Symbol('abort')\nconst ABORTED = Symbol('aborted')\nconst SIGNAL = Symbol('signal')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR =\n (doIter && Symbol.asyncIterator) || Symbol('asyncIterator not implemented')\nconst ITERATOR =\n (doIter && Symbol.iterator) || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev => ev === 'end' || ev === 'finish' || ev === 'prefinish'\n\nconst isArrayBuffer = b =>\n b instanceof ArrayBuffer ||\n (typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0)\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n constructor(src, dest, opts) {\n this.src = src\n this.dest = dest\n this.opts = opts\n this.ondrain = () => src[RESUME]()\n dest.on('drain', this.ondrain)\n }\n unpipe() {\n this.dest.removeListener('drain', this.ondrain)\n }\n // istanbul ignore next - only here for the prototype\n proxyErrors() {}\n end() {\n this.unpipe()\n if (this.opts.end) this.dest.end()\n }\n}\n\nclass PipeProxyErrors extends Pipe {\n unpipe() {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor(src, dest, opts) {\n super(src, dest, opts)\n this.proxyErrors = er => dest.emit('error', er)\n src.on('error', this.proxyErrors)\n }\n}\n\nclass Minipass extends Stream {\n constructor(options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this[PIPES] = []\n this[BUFFER] = []\n this[OBJECTMODE] = (options && options.objectMode) || false\n if (this[OBJECTMODE]) this[ENCODING] = null\n else this[ENCODING] = (options && options.encoding) || null\n if (this[ENCODING] === 'buffer') this[ENCODING] = null\n this[ASYNC] = (options && !!options.async) || false\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this[EMITTED_ERROR] = null\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n if (options && options.debugExposeBuffer === true) {\n Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] })\n }\n if (options && options.debugExposePipes === true) {\n Object.defineProperty(this, 'pipes', { get: () => this[PIPES] })\n }\n this[SIGNAL] = options && options.signal\n this[ABORTED] = false\n if (this[SIGNAL]) {\n this[SIGNAL].addEventListener('abort', () => this[ABORT]())\n if (this[SIGNAL].aborted) {\n this[ABORT]()\n }\n }\n }\n\n get bufferLength() {\n return this[BUFFERLENGTH]\n }\n\n get encoding() {\n return this[ENCODING]\n }\n set encoding(enc) {\n if (this[OBJECTMODE]) throw new Error('cannot set encoding in objectMode')\n\n if (\n this[ENCODING] &&\n enc !== this[ENCODING] &&\n ((this[DECODER] && this[DECODER].lastNeed) || this[BUFFERLENGTH])\n )\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this[BUFFER].length)\n this[BUFFER] = this[BUFFER].map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding(enc) {\n this.encoding = enc\n }\n\n get objectMode() {\n return this[OBJECTMODE]\n }\n set objectMode(om) {\n this[OBJECTMODE] = this[OBJECTMODE] || !!om\n }\n\n get ['async']() {\n return this[ASYNC]\n }\n set ['async'](a) {\n this[ASYNC] = this[ASYNC] || !!a\n }\n\n // drop everything and get out of the flow completely\n [ABORT]() {\n this[ABORTED] = true\n this.emit('abort', this[SIGNAL].reason)\n this.destroy(this[SIGNAL].reason)\n }\n\n get aborted() {\n return this[ABORTED]\n }\n set aborted(_) {}\n\n write(chunk, encoding, cb) {\n if (this[ABORTED]) return false\n if (this[EOF]) throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit(\n 'error',\n Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n )\n )\n return true\n }\n\n if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8')\n\n if (!encoding) encoding = 'utf8'\n\n const fn = this[ASYNC] ? defer : f => f()\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk)) chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // handle object mode up front, since it's simpler\n // this yields better performance, fewer checks later.\n if (this[OBJECTMODE]) {\n /* istanbul ignore if - maybe impossible? */\n if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n if (this.flowing) this.emit('data', chunk)\n else this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n if (cb) fn(cb)\n\n return this.flowing\n }\n\n // at this point the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!chunk.length) {\n if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n if (cb) fn(cb)\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (\n typeof chunk === 'string' &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)\n ) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n // Note: flushing CAN potentially switch us into not-flowing mode\n if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n if (this.flowing) this.emit('data', chunk)\n else this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n if (cb) fn(cb)\n\n return this.flowing\n }\n\n read(n) {\n if (this[DESTROYED]) return null\n\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n this[MAYBE_EMIT_END]()\n return null\n }\n\n if (this[OBJECTMODE]) n = null\n\n if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {\n if (this.encoding) this[BUFFER] = [this[BUFFER].join('')]\n else this[BUFFER] = [Buffer.concat(this[BUFFER], this[BUFFERLENGTH])]\n }\n\n const ret = this[READ](n || null, this[BUFFER][0])\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [READ](n, chunk) {\n if (n === chunk.length || n === null) this[BUFFERSHIFT]()\n else {\n this[BUFFER][0] = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this[BUFFER].length && !this[EOF]) this.emit('drain')\n\n return chunk\n }\n\n end(chunk, encoding, cb) {\n if (typeof chunk === 'function') (cb = chunk), (chunk = null)\n if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8')\n if (chunk) this.write(chunk, encoding)\n if (cb) this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED]) this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME]() {\n if (this[DESTROYED]) return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this[BUFFER].length) this[FLUSH]()\n else if (this[EOF]) this[MAYBE_EMIT_END]()\n else this.emit('drain')\n }\n\n resume() {\n return this[RESUME]()\n }\n\n pause() {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed() {\n return this[DESTROYED]\n }\n\n get flowing() {\n return this[FLOWING]\n }\n\n get paused() {\n return this[PAUSED]\n }\n\n [BUFFERPUSH](chunk) {\n if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1\n else this[BUFFERLENGTH] += chunk.length\n this[BUFFER].push(chunk)\n }\n\n [BUFFERSHIFT]() {\n if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1\n else this[BUFFERLENGTH] -= this[BUFFER][0].length\n return this[BUFFER].shift()\n }\n\n [FLUSH](noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length)\n\n if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain')\n }\n\n [FLUSHCHUNK](chunk) {\n this.emit('data', chunk)\n return this.flowing\n }\n\n pipe(dest, opts) {\n if (this[DESTROYED]) return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === proc.stdout || dest === proc.stderr) opts.end = false\n else opts.end = opts.end !== false\n opts.proxyErrors = !!opts.proxyErrors\n\n // piping an ended stream ends immediately\n if (ended) {\n if (opts.end) dest.end()\n } else {\n this[PIPES].push(\n !opts.proxyErrors\n ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts)\n )\n if (this[ASYNC]) defer(() => this[RESUME]())\n else this[RESUME]()\n }\n\n return dest\n }\n\n unpipe(dest) {\n const p = this[PIPES].find(p => p.dest === dest)\n if (p) {\n this[PIPES].splice(this[PIPES].indexOf(p), 1)\n p.unpipe()\n }\n }\n\n addListener(ev, fn) {\n return this.on(ev, fn)\n }\n\n on(ev, fn) {\n const ret = super.on(ev, fn)\n if (ev === 'data' && !this[PIPES].length && !this.flowing) this[RESUME]()\n else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)\n super.emit('readable')\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n } else if (ev === 'error' && this[EMITTED_ERROR]) {\n if (this[ASYNC]) defer(() => fn.call(this, this[EMITTED_ERROR]))\n else fn.call(this, this[EMITTED_ERROR])\n }\n return ret\n }\n\n get emittedEnd() {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END]() {\n if (\n !this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this[BUFFER].length === 0 &&\n this[EOF]\n ) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED]) this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit(ev, data, ...extra) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n return !this[OBJECTMODE] && !data\n ? false\n : this[ASYNC]\n ? defer(() => this[EMITDATA](data))\n : this[EMITDATA](data)\n } else if (ev === 'end') {\n return this[EMITEND]()\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED]) return\n const ret = super.emit('close')\n this.removeAllListeners('close')\n return ret\n } else if (ev === 'error') {\n this[EMITTED_ERROR] = data\n super.emit(ERROR, data)\n const ret =\n !this[SIGNAL] || this.listeners('error').length\n ? super.emit('error', data)\n : false\n this[MAYBE_EMIT_END]()\n return ret\n } else if (ev === 'resume') {\n const ret = super.emit('resume')\n this[MAYBE_EMIT_END]()\n return ret\n } else if (ev === 'finish' || ev === 'prefinish') {\n const ret = super.emit(ev)\n this.removeAllListeners(ev)\n return ret\n }\n\n // Some other unknown event\n const ret = super.emit(ev, data, ...extra)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITDATA](data) {\n for (const p of this[PIPES]) {\n if (p.dest.write(data) === false) this.pause()\n }\n const ret = super.emit('data', data)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITEND]() {\n if (this[EMITTED_END]) return\n\n this[EMITTED_END] = true\n this.readable = false\n if (this[ASYNC]) defer(() => this[EMITEND2]())\n else this[EMITEND2]()\n }\n\n [EMITEND2]() {\n if (this[DECODER]) {\n const data = this[DECODER].end()\n if (data) {\n for (const p of this[PIPES]) {\n p.dest.write(data)\n }\n super.emit('data', data)\n }\n }\n\n for (const p of this[PIPES]) {\n p.end()\n }\n const ret = super.emit('end')\n this.removeAllListeners('end')\n return ret\n }\n\n // const all = await stream.collect()\n collect() {\n const buf = []\n if (!this[OBJECTMODE]) buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE]) buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat() {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING]\n ? buf.join('')\n : Buffer.concat(buf, buf.dataLength)\n )\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise() {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('error', er => reject(er))\n this.on('end', () => resolve())\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR]() {\n let stopped = false\n const stop = () => {\n this.pause()\n stopped = true\n return Promise.resolve({ done: true })\n }\n const next = () => {\n if (stopped) return stop()\n const res = this.read()\n if (res !== null) return Promise.resolve({ done: false, value: res })\n\n if (this[EOF]) return stop()\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n this.removeListener(DESTROYED, ondestroy)\n stop()\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.removeListener(DESTROYED, ondestroy)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n this.removeListener(DESTROYED, ondestroy)\n stop()\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return {\n next,\n throw: stop,\n return: stop,\n [ASYNCITERATOR]() {\n return this\n },\n }\n }\n\n // for (let chunk of stream)\n [ITERATOR]() {\n let stopped = false\n const stop = () => {\n this.pause()\n this.removeListener(ERROR, stop)\n this.removeListener(DESTROYED, stop)\n this.removeListener('end', stop)\n stopped = true\n return { done: true }\n }\n\n const next = () => {\n if (stopped) return stop()\n const value = this.read()\n return value === null ? stop() : { value }\n }\n this.once('end', stop)\n this.once(ERROR, stop)\n this.once(DESTROYED, stop)\n\n return {\n next,\n throw: stop,\n return: stop,\n [ITERATOR]() {\n return this\n },\n }\n }\n\n destroy(er) {\n if (this[DESTROYED]) {\n if (er) this.emit('error', er)\n else this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this[BUFFER].length = 0\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED]) this.close()\n\n if (er) this.emit('error', er)\n // if no error to emit, still reject pending promises\n else this.emit(DESTROYED)\n\n return this\n }\n\n static isStream(s) {\n return (\n !!s &&\n (s instanceof Minipass ||\n s instanceof Stream ||\n (s instanceof EE &&\n // readable\n (typeof s.pipe === 'function' ||\n // writable\n (typeof s.write === 'function' && typeof s.end === 'function'))))\n )\n }\n}\n\nexports.Minipass = Minipass\n", "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736. When node v6\n// support drops, we can just export the realZlibConstants object.\nconst realZlibConstants = require('zlib').constants ||\n /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n Z_VERSION_ERROR: -6,\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n DEFLATE: 1,\n INFLATE: 2,\n GZIP: 3,\n GUNZIP: 4,\n DEFLATERAW: 5,\n INFLATERAW: 6,\n UNZIP: 7,\n BROTLI_DECODE: 8,\n BROTLI_ENCODE: 9,\n Z_MIN_WINDOWBITS: 8,\n Z_MAX_WINDOWBITS: 15,\n Z_DEFAULT_WINDOWBITS: 15,\n Z_MIN_CHUNK: 64,\n Z_MAX_CHUNK: Infinity,\n Z_DEFAULT_CHUNK: 16384,\n Z_MIN_MEMLEVEL: 1,\n Z_MAX_MEMLEVEL: 9,\n Z_DEFAULT_MEMLEVEL: 8,\n Z_MIN_LEVEL: -1,\n Z_MAX_LEVEL: 9,\n Z_DEFAULT_LEVEL: -1,\n BROTLI_OPERATION_PROCESS: 0,\n BROTLI_OPERATION_FLUSH: 1,\n BROTLI_OPERATION_FINISH: 2,\n BROTLI_OPERATION_EMIT_METADATA: 3,\n BROTLI_MODE_GENERIC: 0,\n BROTLI_MODE_TEXT: 1,\n BROTLI_MODE_FONT: 2,\n BROTLI_DEFAULT_MODE: 0,\n BROTLI_MIN_QUALITY: 0,\n BROTLI_MAX_QUALITY: 11,\n BROTLI_DEFAULT_QUALITY: 11,\n BROTLI_MIN_WINDOW_BITS: 10,\n BROTLI_MAX_WINDOW_BITS: 24,\n BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n BROTLI_DEFAULT_WINDOW: 22,\n BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n BROTLI_PARAM_MODE: 0,\n BROTLI_PARAM_QUALITY: 1,\n BROTLI_PARAM_LGWIN: 2,\n BROTLI_PARAM_LGBLOCK: 3,\n BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n BROTLI_PARAM_SIZE_HINT: 5,\n BROTLI_PARAM_LARGE_WINDOW: 6,\n BROTLI_PARAM_NPOSTFIX: 7,\n BROTLI_PARAM_NDIRECT: 8,\n BROTLI_DECODER_RESULT_ERROR: 0,\n BROTLI_DECODER_RESULT_SUCCESS: 1,\n BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n BROTLI_DECODER_NO_ERROR: 0,\n BROTLI_DECODER_SUCCESS: 1,\n BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n}, realZlibConstants))\n", "'use strict'\nconst proc = typeof process === 'object' && process ? process : {\n stdout: null,\n stderr: null,\n}\nconst EE = require('events')\nconst Stream = require('stream')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n ev === 'end' ||\n ev === 'finish' ||\n ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n typeof b === 'object' &&\n b.constructor &&\n b.constructor.name === 'ArrayBuffer' &&\n b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n constructor (src, dest, opts) {\n this.src = src\n this.dest = dest\n this.opts = opts\n this.ondrain = () => src[RESUME]()\n dest.on('drain', this.ondrain)\n }\n unpipe () {\n this.dest.removeListener('drain', this.ondrain)\n }\n // istanbul ignore next - only here for the prototype\n proxyErrors () {}\n end () {\n this.unpipe()\n if (this.opts.end)\n this.dest.end()\n }\n}\n\nclass PipeProxyErrors extends Pipe {\n unpipe () {\n this.src.removeListener('error', this.proxyErrors)\n super.unpipe()\n }\n constructor (src, dest, opts) {\n super(src, dest, opts)\n this.proxyErrors = er => dest.emit('error', er)\n src.on('error', this.proxyErrors)\n }\n}\n\nmodule.exports = class Minipass extends Stream {\n constructor (options) {\n super()\n this[FLOWING] = false\n // whether we're explicitly paused\n this[PAUSED] = false\n this.pipes = []\n this.buffer = []\n this[OBJECTMODE] = options && options.objectMode || false\n if (this[OBJECTMODE])\n this[ENCODING] = null\n else\n this[ENCODING] = options && options.encoding || null\n if (this[ENCODING] === 'buffer')\n this[ENCODING] = null\n this[ASYNC] = options && !!options.async || false\n this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n this[EOF] = false\n this[EMITTED_END] = false\n this[EMITTING_END] = false\n this[CLOSED] = false\n this[EMITTED_ERROR] = null\n this.writable = true\n this.readable = true\n this[BUFFERLENGTH] = 0\n this[DESTROYED] = false\n }\n\n get bufferLength () { return this[BUFFERLENGTH] }\n\n get encoding () { return this[ENCODING] }\n set encoding (enc) {\n if (this[OBJECTMODE])\n throw new Error('cannot set encoding in objectMode')\n\n if (this[ENCODING] && enc !== this[ENCODING] &&\n (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n throw new Error('cannot change encoding')\n\n if (this[ENCODING] !== enc) {\n this[DECODER] = enc ? new SD(enc) : null\n if (this.buffer.length)\n this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n }\n\n this[ENCODING] = enc\n }\n\n setEncoding (enc) {\n this.encoding = enc\n }\n\n get objectMode () { return this[OBJECTMODE] }\n set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n get ['async'] () { return this[ASYNC] }\n set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }\n\n write (chunk, encoding, cb) {\n if (this[EOF])\n throw new Error('write after end')\n\n if (this[DESTROYED]) {\n this.emit('error', Object.assign(\n new Error('Cannot call write after a stream was destroyed'),\n { code: 'ERR_STREAM_DESTROYED' }\n ))\n return true\n }\n\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (!encoding)\n encoding = 'utf8'\n\n const fn = this[ASYNC] ? defer : f => f()\n\n // convert array buffers and typed array views into buffers\n // at some point in the future, we may want to do the opposite!\n // leave strings and buffers as-is\n // anything else switches us into object mode\n if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n if (isArrayBufferView(chunk))\n chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n else if (isArrayBuffer(chunk))\n chunk = Buffer.from(chunk)\n else if (typeof chunk !== 'string')\n // use the setter so we throw if we have encoding set\n this.objectMode = true\n }\n\n // handle object mode up front, since it's simpler\n // this yields better performance, fewer checks later.\n if (this[OBJECTMODE]) {\n /* istanbul ignore if - maybe impossible? */\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n fn(cb)\n\n return this.flowing\n }\n\n // at this point the chunk is a buffer or string\n // don't buffer it up or send it to the decoder\n if (!chunk.length) {\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n if (cb)\n fn(cb)\n return this.flowing\n }\n\n // fast-path writing strings of same encoding to a stream with\n // an empty buffer, skipping the buffer/decoder dance\n if (typeof chunk === 'string' &&\n // unless it is a string already ready for us to use\n !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n chunk = Buffer.from(chunk, encoding)\n }\n\n if (Buffer.isBuffer(chunk) && this[ENCODING])\n chunk = this[DECODER].write(chunk)\n\n // Note: flushing CAN potentially switch us into not-flowing mode\n if (this.flowing && this[BUFFERLENGTH] !== 0)\n this[FLUSH](true)\n\n if (this.flowing)\n this.emit('data', chunk)\n else\n this[BUFFERPUSH](chunk)\n\n if (this[BUFFERLENGTH] !== 0)\n this.emit('readable')\n\n if (cb)\n fn(cb)\n\n return this.flowing\n }\n\n read (n) {\n if (this[DESTROYED])\n return null\n\n if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n this[MAYBE_EMIT_END]()\n return null\n }\n\n if (this[OBJECTMODE])\n n = null\n\n if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n if (this.encoding)\n this.buffer = [this.buffer.join('')]\n else\n this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]\n }\n\n const ret = this[READ](n || null, this.buffer[0])\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [READ] (n, chunk) {\n if (n === chunk.length || n === null)\n this[BUFFERSHIFT]()\n else {\n this.buffer[0] = chunk.slice(n)\n chunk = chunk.slice(0, n)\n this[BUFFERLENGTH] -= n\n }\n\n this.emit('data', chunk)\n\n if (!this.buffer.length && !this[EOF])\n this.emit('drain')\n\n return chunk\n }\n\n end (chunk, encoding, cb) {\n if (typeof chunk === 'function')\n cb = chunk, chunk = null\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n if (chunk)\n this.write(chunk, encoding)\n if (cb)\n this.once('end', cb)\n this[EOF] = true\n this.writable = false\n\n // if we haven't written anything, then go ahead and emit,\n // even if we're not reading.\n // we'll re-emit if a new 'end' listener is added anyway.\n // This makes MP more suitable to write-only use cases.\n if (this.flowing || !this[PAUSED])\n this[MAYBE_EMIT_END]()\n return this\n }\n\n // don't let the internal resume be overwritten\n [RESUME] () {\n if (this[DESTROYED])\n return\n\n this[PAUSED] = false\n this[FLOWING] = true\n this.emit('resume')\n if (this.buffer.length)\n this[FLUSH]()\n else if (this[EOF])\n this[MAYBE_EMIT_END]()\n else\n this.emit('drain')\n }\n\n resume () {\n return this[RESUME]()\n }\n\n pause () {\n this[FLOWING] = false\n this[PAUSED] = true\n }\n\n get destroyed () {\n return this[DESTROYED]\n }\n\n get flowing () {\n return this[FLOWING]\n }\n\n get paused () {\n return this[PAUSED]\n }\n\n [BUFFERPUSH] (chunk) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] += 1\n else\n this[BUFFERLENGTH] += chunk.length\n this.buffer.push(chunk)\n }\n\n [BUFFERSHIFT] () {\n if (this.buffer.length) {\n if (this[OBJECTMODE])\n this[BUFFERLENGTH] -= 1\n else\n this[BUFFERLENGTH] -= this.buffer[0].length\n }\n return this.buffer.shift()\n }\n\n [FLUSH] (noDrain) {\n do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n if (!noDrain && !this.buffer.length && !this[EOF])\n this.emit('drain')\n }\n\n [FLUSHCHUNK] (chunk) {\n return chunk ? (this.emit('data', chunk), this.flowing) : false\n }\n\n pipe (dest, opts) {\n if (this[DESTROYED])\n return\n\n const ended = this[EMITTED_END]\n opts = opts || {}\n if (dest === proc.stdout || dest === proc.stderr)\n opts.end = false\n else\n opts.end = opts.end !== false\n opts.proxyErrors = !!opts.proxyErrors\n\n // piping an ended stream ends immediately\n if (ended) {\n if (opts.end)\n dest.end()\n } else {\n this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)\n : new PipeProxyErrors(this, dest, opts))\n if (this[ASYNC])\n defer(() => this[RESUME]())\n else\n this[RESUME]()\n }\n\n return dest\n }\n\n unpipe (dest) {\n const p = this.pipes.find(p => p.dest === dest)\n if (p) {\n this.pipes.splice(this.pipes.indexOf(p), 1)\n p.unpipe()\n }\n }\n\n addListener (ev, fn) {\n return this.on(ev, fn)\n }\n\n on (ev, fn) {\n const ret = super.on(ev, fn)\n if (ev === 'data' && !this.pipes.length && !this.flowing)\n this[RESUME]()\n else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)\n super.emit('readable')\n else if (isEndish(ev) && this[EMITTED_END]) {\n super.emit(ev)\n this.removeAllListeners(ev)\n } else if (ev === 'error' && this[EMITTED_ERROR]) {\n if (this[ASYNC])\n defer(() => fn.call(this, this[EMITTED_ERROR]))\n else\n fn.call(this, this[EMITTED_ERROR])\n }\n return ret\n }\n\n get emittedEnd () {\n return this[EMITTED_END]\n }\n\n [MAYBE_EMIT_END] () {\n if (!this[EMITTING_END] &&\n !this[EMITTED_END] &&\n !this[DESTROYED] &&\n this.buffer.length === 0 &&\n this[EOF]) {\n this[EMITTING_END] = true\n this.emit('end')\n this.emit('prefinish')\n this.emit('finish')\n if (this[CLOSED])\n this.emit('close')\n this[EMITTING_END] = false\n }\n }\n\n emit (ev, data, ...extra) {\n // error and close are only events allowed after calling destroy()\n if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n return\n else if (ev === 'data') {\n return !data ? false\n : this[ASYNC] ? defer(() => this[EMITDATA](data))\n : this[EMITDATA](data)\n } else if (ev === 'end') {\n return this[EMITEND]()\n } else if (ev === 'close') {\n this[CLOSED] = true\n // don't emit close before 'end' and 'finish'\n if (!this[EMITTED_END] && !this[DESTROYED])\n return\n const ret = super.emit('close')\n this.removeAllListeners('close')\n return ret\n } else if (ev === 'error') {\n this[EMITTED_ERROR] = data\n const ret = super.emit('error', data)\n this[MAYBE_EMIT_END]()\n return ret\n } else if (ev === 'resume') {\n const ret = super.emit('resume')\n this[MAYBE_EMIT_END]()\n return ret\n } else if (ev === 'finish' || ev === 'prefinish') {\n const ret = super.emit(ev)\n this.removeAllListeners(ev)\n return ret\n }\n\n // Some other unknown event\n const ret = super.emit(ev, data, ...extra)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITDATA] (data) {\n for (const p of this.pipes) {\n if (p.dest.write(data) === false)\n this.pause()\n }\n const ret = super.emit('data', data)\n this[MAYBE_EMIT_END]()\n return ret\n }\n\n [EMITEND] () {\n if (this[EMITTED_END])\n return\n\n this[EMITTED_END] = true\n this.readable = false\n if (this[ASYNC])\n defer(() => this[EMITEND2]())\n else\n this[EMITEND2]()\n }\n\n [EMITEND2] () {\n if (this[DECODER]) {\n const data = this[DECODER].end()\n if (data) {\n for (const p of this.pipes) {\n p.dest.write(data)\n }\n super.emit('data', data)\n }\n }\n\n for (const p of this.pipes) {\n p.end()\n }\n const ret = super.emit('end')\n this.removeAllListeners('end')\n return ret\n }\n\n // const all = await stream.collect()\n collect () {\n const buf = []\n if (!this[OBJECTMODE])\n buf.dataLength = 0\n // set the promise first, in case an error is raised\n // by triggering the flow here.\n const p = this.promise()\n this.on('data', c => {\n buf.push(c)\n if (!this[OBJECTMODE])\n buf.dataLength += c.length\n })\n return p.then(() => buf)\n }\n\n // const data = await stream.concat()\n concat () {\n return this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this.collect().then(buf =>\n this[OBJECTMODE]\n ? Promise.reject(new Error('cannot concat in objectMode'))\n : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n }\n\n // stream.promise().then(() => done, er => emitted error)\n promise () {\n return new Promise((resolve, reject) => {\n this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n this.on('error', er => reject(er))\n this.on('end', () => resolve())\n })\n }\n\n // for await (let chunk of stream)\n [ASYNCITERATOR] () {\n const next = () => {\n const res = this.read()\n if (res !== null)\n return Promise.resolve({ done: false, value: res })\n\n if (this[EOF])\n return Promise.resolve({ done: true })\n\n let resolve = null\n let reject = null\n const onerr = er => {\n this.removeListener('data', ondata)\n this.removeListener('end', onend)\n reject(er)\n }\n const ondata = value => {\n this.removeListener('error', onerr)\n this.removeListener('end', onend)\n this.pause()\n resolve({ value: value, done: !!this[EOF] })\n }\n const onend = () => {\n this.removeListener('error', onerr)\n this.removeListener('data', ondata)\n resolve({ done: true })\n }\n const ondestroy = () => onerr(new Error('stream destroyed'))\n return new Promise((res, rej) => {\n reject = rej\n resolve = res\n this.once(DESTROYED, ondestroy)\n this.once('error', onerr)\n this.once('end', onend)\n this.once('data', ondata)\n })\n }\n\n return { next }\n }\n\n // for (let chunk of stream)\n [ITERATOR] () {\n const next = () => {\n const value = this.read()\n const done = value === null\n return { value, done }\n }\n return { next }\n }\n\n destroy (er) {\n if (this[DESTROYED]) {\n if (er)\n this.emit('error', er)\n else\n this.emit(DESTROYED)\n return this\n }\n\n this[DESTROYED] = true\n\n // throw away all buffered data, it's never coming out\n this.buffer.length = 0\n this[BUFFERLENGTH] = 0\n\n if (typeof this.close === 'function' && !this[CLOSED])\n this.close()\n\n if (er)\n this.emit('error', er)\n else // if no error to emit, still reject pending promises\n this.emit(DESTROYED)\n\n return this\n }\n\n static isStream (s) {\n return !!s && (s instanceof Minipass || s instanceof Stream ||\n s instanceof EE && (\n typeof s.pipe === 'function' || // readable\n (typeof s.write === 'function' && typeof s.end === 'function') // writable\n ))\n }\n}\n", "'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n constructor (err) {\n super('zlib: ' + err.message)\n this.code = err.code\n this.errno = err.errno\n /* istanbul ignore if */\n if (!this.code)\n this.code = 'ZLIB_ERROR'\n\n this.message = 'zlib: ' + err.message\n Error.captureStackTrace(this, this.constructor)\n }\n\n get name () {\n return 'ZlibError'\n }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n constructor (opts, mode) {\n if (!opts || typeof opts !== 'object')\n throw new TypeError('invalid options for ZlibBase constructor')\n\n super(opts)\n this[_sawError] = false\n this[_ended] = false\n this[_opts] = opts\n\n this[_flushFlag] = opts.flush\n this[_finishFlushFlag] = opts.finishFlush\n // this will throw if any options are invalid for the class selected\n try {\n this[_handle] = new realZlib[mode](opts)\n } catch (er) {\n // make sure that all errors get decorated properly\n throw new ZlibError(er)\n }\n\n this[_onError] = (err) => {\n // no sense raising multiple errors, since we abort on the first one.\n if (this[_sawError])\n return\n\n this[_sawError] = true\n\n // there is no way to cleanly recover.\n // continuing only obscures problems.\n this.close()\n this.emit('error', err)\n }\n\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n this.once('end', () => this.close)\n }\n\n close () {\n if (this[_handle]) {\n this[_handle].close()\n this[_handle] = null\n this.emit('close')\n }\n }\n\n reset () {\n if (!this[_sawError]) {\n assert(this[_handle], 'zlib binding closed')\n return this[_handle].reset()\n }\n }\n\n flush (flushFlag) {\n if (this.ended)\n return\n\n if (typeof flushFlag !== 'number')\n flushFlag = this[_fullFlushFlag]\n this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n }\n\n end (chunk, encoding, cb) {\n if (chunk)\n this.write(chunk, encoding)\n this.flush(this[_finishFlushFlag])\n this[_ended] = true\n return super.end(null, null, cb)\n }\n\n get ended () {\n return this[_ended]\n }\n\n write (chunk, encoding, cb) {\n // process the chunk using the sync process\n // then super.write() all the outputted chunks\n if (typeof encoding === 'function')\n cb = encoding, encoding = 'utf8'\n\n if (typeof chunk === 'string')\n chunk = Buffer.from(chunk, encoding)\n\n if (this[_sawError])\n return\n assert(this[_handle], 'zlib binding closed')\n\n // _processChunk tries to .close() the native handle after it's done, so we\n // intercept that by temporarily making it a no-op.\n const nativeHandle = this[_handle]._handle\n const originalNativeClose = nativeHandle.close\n nativeHandle.close = () => {}\n const originalClose = this[_handle].close\n this[_handle].close = () => {}\n // It also calls `Buffer.concat()` at the end, which may be convenient\n // for some, but which we are not interested in as it slows us down.\n Buffer.concat = (args) => args\n let result\n try {\n const flushFlag = typeof chunk[_flushFlag] === 'number'\n ? chunk[_flushFlag] : this[_flushFlag]\n result = this[_handle]._processChunk(chunk, flushFlag)\n // if we don't throw, reset it back how it was\n Buffer.concat = OriginalBufferConcat\n } catch (err) {\n // or if we do, put Buffer.concat() back before we emit error\n // Error events call into user code, which may call Buffer.concat()\n Buffer.concat = OriginalBufferConcat\n this[_onError](new ZlibError(err))\n } finally {\n if (this[_handle]) {\n // Core zlib resets `_handle` to null after attempting to close the\n // native handle. Our no-op handler prevented actual closure, but we\n // need to restore the `._handle` property.\n this[_handle]._handle = nativeHandle\n nativeHandle.close = originalNativeClose\n this[_handle].close = originalClose\n // `_processChunk()` adds an 'error' listener. If we don't remove it\n // after each call, these handlers start piling up.\n this[_handle].removeAllListeners('error')\n // make sure OUR error listener is still attached tho\n }\n }\n\n if (this[_handle])\n this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n\n let writeReturn\n if (result) {\n if (Array.isArray(result) && result.length > 0) {\n // The first buffer is always `handle._outBuffer`, which would be\n // re-used for later invocations; so, we always have to copy that one.\n writeReturn = this[_superWrite](Buffer.from(result[0]))\n for (let i = 1; i < result.length; i++) {\n writeReturn = this[_superWrite](result[i])\n }\n } else {\n writeReturn = this[_superWrite](Buffer.from(result))\n }\n }\n\n if (cb)\n cb()\n return writeReturn\n }\n\n [_superWrite] (data) {\n return super.write(data)\n }\n}\n\nclass Zlib extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.Z_NO_FLUSH\n opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n this[_level] = opts.level\n this[_strategy] = opts.strategy\n }\n\n params (level, strategy) {\n if (this[_sawError])\n return\n\n if (!this[_handle])\n throw new Error('cannot switch params when binding is closed')\n\n // no way to test this without also not supporting params at all\n /* istanbul ignore if */\n if (!this[_handle].params)\n throw new Error('not supported in this implementation')\n\n if (this[_level] !== level || this[_strategy] !== strategy) {\n this.flush(constants.Z_SYNC_FLUSH)\n assert(this[_handle], 'zlib binding closed')\n // .params() calls .flush(), but the latter is always async in the\n // core zlib. We override .flush() temporarily to intercept that and\n // flush synchronously.\n const origFlush = this[_handle].flush\n this[_handle].flush = (flushFlag, cb) => {\n this.flush(flushFlag)\n cb()\n }\n try {\n this[_handle].params(level, strategy)\n } finally {\n this[_handle].flush = origFlush\n }\n /* istanbul ignore else */\n if (this[_handle]) {\n this[_level] = level\n this[_strategy] = strategy\n }\n }\n }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n constructor (opts) {\n super(opts, 'Deflate')\n }\n}\n\nclass Inflate extends Zlib {\n constructor (opts) {\n super(opts, 'Inflate')\n }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gzip')\n this[_portable] = opts && !!opts.portable\n }\n\n [_superWrite] (data) {\n if (!this[_portable])\n return super[_superWrite](data)\n\n // we'll always get the header emitted in one first chunk\n // overwrite the OS indicator byte with 0xFF\n this[_portable] = false\n data[9] = 255\n return super[_superWrite](data)\n }\n}\n\nclass Gunzip extends Zlib {\n constructor (opts) {\n super(opts, 'Gunzip')\n }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'DeflateRaw')\n }\n}\n\nclass InflateRaw extends Zlib {\n constructor (opts) {\n super(opts, 'InflateRaw')\n }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n constructor (opts) {\n super(opts, 'Unzip')\n }\n}\n\nclass Brotli extends ZlibBase {\n constructor (opts, mode) {\n opts = opts || {}\n\n opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n super(opts, mode)\n\n this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n }\n}\n\nclass BrotliCompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliCompress')\n }\n}\n\nclass BrotliDecompress extends Brotli {\n constructor (opts) {\n super(opts, 'BrotliDecompress')\n }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n exports.BrotliCompress = BrotliCompress\n exports.BrotliDecompress = BrotliDecompress\n} else {\n exports.BrotliCompress = exports.BrotliDecompress = class {\n constructor () {\n throw new Error('Brotli is not supported in this version of Node.js')\n }\n }\n}\n", "// on windows, either \\ or / are valid directory separators.\n// on unix, \\ is a valid character in filenames.\n// so, on windows, and only on windows, we replace all \\ chars with /,\n// so that we can use / as our one and only directory separator char.\n\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nmodule.exports = platform !== 'win32' ? p => p\n : p => p && p.replace(/\\\\/g, '/')\n", "'use strict'\nconst { Minipass } = require('minipass')\nconst normPath = require('./normalize-windows-path.js')\n\nconst SLURP = Symbol('slurp')\nmodule.exports = class ReadEntry extends Minipass {\n constructor (header, ex, gex) {\n super()\n // read entries always start life paused. this is to avoid the\n // situation where Minipass's auto-ending empty streams results\n // in an entry ending before we're ready for it.\n this.pause()\n this.extended = ex\n this.globalExtended = gex\n this.header = header\n this.startBlockSize = 512 * Math.ceil(header.size / 512)\n this.blockRemain = this.startBlockSize\n this.remain = header.size\n this.type = header.type\n this.meta = false\n this.ignore = false\n switch (this.type) {\n case 'File':\n case 'OldFile':\n case 'Link':\n case 'SymbolicLink':\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'Directory':\n case 'FIFO':\n case 'ContiguousFile':\n case 'GNUDumpDir':\n break\n\n case 'NextFileHasLongLinkpath':\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n case 'GlobalExtendedHeader':\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this.meta = true\n break\n\n // NOTE: gnutar and bsdtar treat unrecognized types as 'File'\n // it may be worth doing the same, but with a warning.\n default:\n this.ignore = true\n }\n\n this.path = normPath(header.path)\n this.mode = header.mode\n if (this.mode) {\n this.mode = this.mode & 0o7777\n }\n this.uid = header.uid\n this.gid = header.gid\n this.uname = header.uname\n this.gname = header.gname\n this.size = header.size\n this.mtime = header.mtime\n this.atime = header.atime\n this.ctime = header.ctime\n this.linkpath = normPath(header.linkpath)\n this.uname = header.uname\n this.gname = header.gname\n\n if (ex) {\n this[SLURP](ex)\n }\n if (gex) {\n this[SLURP](gex, true)\n }\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain) {\n throw new Error('writing more to entry than is appropriate')\n }\n\n const r = this.remain\n const br = this.blockRemain\n this.remain = Math.max(0, r - writeLen)\n this.blockRemain = Math.max(0, br - writeLen)\n if (this.ignore) {\n return true\n }\n\n if (r >= writeLen) {\n return super.write(data)\n }\n\n // r < writeLen\n return super.write(data.slice(0, r))\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path')) {\n this[k] = k === 'path' || k === 'linkpath' ? normPath(ex[k]) : ex[k]\n }\n }\n }\n}\n", "'use strict'\n// map types from key to human-friendly name\nexports.name = new Map([\n ['0', 'File'],\n // same as File\n ['', 'OldFile'],\n ['1', 'Link'],\n ['2', 'SymbolicLink'],\n // Devices and FIFOs aren't fully supported\n // they are parsed, but skipped when unpacking\n ['3', 'CharacterDevice'],\n ['4', 'BlockDevice'],\n ['5', 'Directory'],\n ['6', 'FIFO'],\n // same as File\n ['7', 'ContiguousFile'],\n // pax headers\n ['g', 'GlobalExtendedHeader'],\n ['x', 'ExtendedHeader'],\n // vendor-specific stuff\n // skip\n ['A', 'SolarisACL'],\n // like 5, but with data, which should be skipped\n ['D', 'GNUDumpDir'],\n // metadata only, skip\n ['I', 'Inode'],\n // data = link path of next file\n ['K', 'NextFileHasLongLinkpath'],\n // data = path of next file\n ['L', 'NextFileHasLongPath'],\n // skip\n ['M', 'ContinuationFile'],\n // like L\n ['N', 'OldGnuLongPath'],\n // skip\n ['S', 'SparseFile'],\n // skip\n ['V', 'TapeVolumeHeader'],\n // like x\n ['X', 'OldExtendedHeader'],\n])\n\n// map the other direction\nexports.code = new Map(Array.from(exports.name).map(kv => [kv[1], kv[0]]))\n", "'use strict'\n// Tar can encode large and negative numbers using a leading byte of\n// 0xff for negative, and 0x80 for positive.\n\nconst encode = (num, buf) => {\n if (!Number.isSafeInteger(num)) {\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('cannot encode number outside of javascript safe integer range')\n } else if (num < 0) {\n encodeNegative(num, buf)\n } else {\n encodePositive(num, buf)\n }\n return buf\n}\n\nconst encodePositive = (num, buf) => {\n buf[0] = 0x80\n\n for (var i = buf.length; i > 1; i--) {\n buf[i - 1] = num & 0xff\n num = Math.floor(num / 0x100)\n }\n}\n\nconst encodeNegative = (num, buf) => {\n buf[0] = 0xff\n var flipped = false\n num = num * -1\n for (var i = buf.length; i > 1; i--) {\n var byte = num & 0xff\n num = Math.floor(num / 0x100)\n if (flipped) {\n buf[i - 1] = onesComp(byte)\n } else if (byte === 0) {\n buf[i - 1] = 0\n } else {\n flipped = true\n buf[i - 1] = twosComp(byte)\n }\n }\n}\n\nconst parse = (buf) => {\n const pre = buf[0]\n const value = pre === 0x80 ? pos(buf.slice(1, buf.length))\n : pre === 0xff ? twos(buf)\n : null\n if (value === null) {\n throw Error('invalid base256 encoding')\n }\n\n if (!Number.isSafeInteger(value)) {\n // The number is so large that javascript cannot represent it with integer\n // precision.\n throw Error('parsed number outside of javascript safe integer range')\n }\n\n return value\n}\n\nconst twos = (buf) => {\n var len = buf.length\n var sum = 0\n var flipped = false\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n var f\n if (flipped) {\n f = onesComp(byte)\n } else if (byte === 0) {\n f = byte\n } else {\n flipped = true\n f = twosComp(byte)\n }\n if (f !== 0) {\n sum -= f * Math.pow(256, len - i - 1)\n }\n }\n return sum\n}\n\nconst pos = (buf) => {\n var len = buf.length\n var sum = 0\n for (var i = len - 1; i > -1; i--) {\n var byte = buf[i]\n if (byte !== 0) {\n sum += byte * Math.pow(256, len - i - 1)\n }\n }\n return sum\n}\n\nconst onesComp = byte => (0xff ^ byte) & 0xff\n\nconst twosComp = byte => ((0xff ^ byte) + 1) & 0xff\n\nmodule.exports = {\n encode,\n parse,\n}\n", "'use strict'\n// parse a 512-byte header block to a data object, or vice-versa\n// encode returns `true` if a pax extended header is needed, because\n// the data could not be faithfully encoded in a simple header.\n// (Also, check header.needPax to see if it needs a pax header.)\n\nconst types = require('./types.js')\nconst pathModule = require('path').posix\nconst large = require('./large-numbers.js')\n\nconst SLURP = Symbol('slurp')\nconst TYPE = Symbol('type')\n\nclass Header {\n constructor (data, off, ex, gex) {\n this.cksumValid = false\n this.needPax = false\n this.nullBlock = false\n\n this.block = null\n this.path = null\n this.mode = null\n this.uid = null\n this.gid = null\n this.size = null\n this.mtime = null\n this.cksum = null\n this[TYPE] = '0'\n this.linkpath = null\n this.uname = null\n this.gname = null\n this.devmaj = 0\n this.devmin = 0\n this.atime = null\n this.ctime = null\n\n if (Buffer.isBuffer(data)) {\n this.decode(data, off || 0, ex, gex)\n } else if (data) {\n this.set(data)\n }\n }\n\n decode (buf, off, ex, gex) {\n if (!off) {\n off = 0\n }\n\n if (!buf || !(buf.length >= off + 512)) {\n throw new Error('need 512 bytes for header')\n }\n\n this.path = decString(buf, off, 100)\n this.mode = decNumber(buf, off + 100, 8)\n this.uid = decNumber(buf, off + 108, 8)\n this.gid = decNumber(buf, off + 116, 8)\n this.size = decNumber(buf, off + 124, 12)\n this.mtime = decDate(buf, off + 136, 12)\n this.cksum = decNumber(buf, off + 148, 12)\n\n // if we have extended or global extended headers, apply them now\n // See https://github.com/npm/node-tar/pull/187\n this[SLURP](ex)\n this[SLURP](gex, true)\n\n // old tar versions marked dirs as a file with a trailing /\n this[TYPE] = decString(buf, off + 156, 1)\n if (this[TYPE] === '') {\n this[TYPE] = '0'\n }\n if (this[TYPE] === '0' && this.path.slice(-1) === '/') {\n this[TYPE] = '5'\n }\n\n // tar implementations sometimes incorrectly put the stat(dir).size\n // as the size in the tarball, even though Directory entries are\n // not able to have any body at all. In the very rare chance that\n // it actually DOES have a body, we weren't going to do anything with\n // it anyway, and it'll just be a warning about an invalid header.\n if (this[TYPE] === '5') {\n this.size = 0\n }\n\n this.linkpath = decString(buf, off + 157, 100)\n if (buf.slice(off + 257, off + 265).toString() === 'ustar\\u000000') {\n this.uname = decString(buf, off + 265, 32)\n this.gname = decString(buf, off + 297, 32)\n this.devmaj = decNumber(buf, off + 329, 8)\n this.devmin = decNumber(buf, off + 337, 8)\n if (buf[off + 475] !== 0) {\n // definitely a prefix, definitely >130 chars.\n const prefix = decString(buf, off + 345, 155)\n this.path = prefix + '/' + this.path\n } else {\n const prefix = decString(buf, off + 345, 130)\n if (prefix) {\n this.path = prefix + '/' + this.path\n }\n this.atime = decDate(buf, off + 476, 12)\n this.ctime = decDate(buf, off + 488, 12)\n }\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++) {\n sum += buf[i]\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i]\n }\n\n this.cksumValid = sum === this.cksum\n if (this.cksum === null && sum === 8 * 0x20) {\n this.nullBlock = true\n }\n }\n\n [SLURP] (ex, global) {\n for (const k in ex) {\n // we slurp in everything except for the path attribute in\n // a global extended header, because that's weird.\n if (ex[k] !== null && ex[k] !== undefined &&\n !(global && k === 'path')) {\n this[k] = ex[k]\n }\n }\n }\n\n encode (buf, off) {\n if (!buf) {\n buf = this.block = Buffer.alloc(512)\n off = 0\n }\n\n if (!off) {\n off = 0\n }\n\n if (!(buf.length >= off + 512)) {\n throw new Error('need 512 bytes for header')\n }\n\n const prefixSize = this.ctime || this.atime ? 130 : 155\n const split = splitPrefix(this.path || '', prefixSize)\n const path = split[0]\n const prefix = split[1]\n this.needPax = split[2]\n\n this.needPax = encString(buf, off, 100, path) || this.needPax\n this.needPax = encNumber(buf, off + 100, 8, this.mode) || this.needPax\n this.needPax = encNumber(buf, off + 108, 8, this.uid) || this.needPax\n this.needPax = encNumber(buf, off + 116, 8, this.gid) || this.needPax\n this.needPax = encNumber(buf, off + 124, 12, this.size) || this.needPax\n this.needPax = encDate(buf, off + 136, 12, this.mtime) || this.needPax\n buf[off + 156] = this[TYPE].charCodeAt(0)\n this.needPax = encString(buf, off + 157, 100, this.linkpath) || this.needPax\n buf.write('ustar\\u000000', off + 257, 8)\n this.needPax = encString(buf, off + 265, 32, this.uname) || this.needPax\n this.needPax = encString(buf, off + 297, 32, this.gname) || this.needPax\n this.needPax = encNumber(buf, off + 329, 8, this.devmaj) || this.needPax\n this.needPax = encNumber(buf, off + 337, 8, this.devmin) || this.needPax\n this.needPax = encString(buf, off + 345, prefixSize, prefix) || this.needPax\n if (buf[off + 475] !== 0) {\n this.needPax = encString(buf, off + 345, 155, prefix) || this.needPax\n } else {\n this.needPax = encString(buf, off + 345, 130, prefix) || this.needPax\n this.needPax = encDate(buf, off + 476, 12, this.atime) || this.needPax\n this.needPax = encDate(buf, off + 488, 12, this.ctime) || this.needPax\n }\n\n let sum = 8 * 0x20\n for (let i = off; i < off + 148; i++) {\n sum += buf[i]\n }\n\n for (let i = off + 156; i < off + 512; i++) {\n sum += buf[i]\n }\n\n this.cksum = sum\n encNumber(buf, off + 148, 8, this.cksum)\n this.cksumValid = true\n\n return this.needPax\n }\n\n set (data) {\n for (const i in data) {\n if (data[i] !== null && data[i] !== undefined) {\n this[i] = data[i]\n }\n }\n }\n\n get type () {\n return types.name.get(this[TYPE]) || this[TYPE]\n }\n\n get typeKey () {\n return this[TYPE]\n }\n\n set type (type) {\n if (types.code.has(type)) {\n this[TYPE] = types.code.get(type)\n } else {\n this[TYPE] = type\n }\n }\n}\n\nconst splitPrefix = (p, prefixSize) => {\n const pathSize = 100\n let pp = p\n let prefix = ''\n let ret\n const root = pathModule.parse(p).root || '.'\n\n if (Buffer.byteLength(pp) < pathSize) {\n ret = [pp, prefix, false]\n } else {\n // first set prefix to the dir, and path to the base\n prefix = pathModule.dirname(pp)\n pp = pathModule.basename(pp)\n\n do {\n if (Buffer.byteLength(pp) <= pathSize &&\n Buffer.byteLength(prefix) <= prefixSize) {\n // both fit!\n ret = [pp, prefix, false]\n } else if (Buffer.byteLength(pp) > pathSize &&\n Buffer.byteLength(prefix) <= prefixSize) {\n // prefix fits in prefix, but path doesn't fit in path\n ret = [pp.slice(0, pathSize - 1), prefix, true]\n } else {\n // make path take a bit from prefix\n pp = pathModule.join(pathModule.basename(prefix), pp)\n prefix = pathModule.dirname(prefix)\n }\n } while (prefix !== root && !ret)\n\n // at this point, found no resolution, just truncate\n if (!ret) {\n ret = [p.slice(0, pathSize - 1), '', true]\n }\n }\n return ret\n}\n\nconst decString = (buf, off, size) =>\n buf.slice(off, off + size).toString('utf8').replace(/\\0.*/, '')\n\nconst decDate = (buf, off, size) =>\n numToDate(decNumber(buf, off, size))\n\nconst numToDate = num => num === null ? null : new Date(num * 1000)\n\nconst decNumber = (buf, off, size) =>\n buf[off] & 0x80 ? large.parse(buf.slice(off, off + size))\n : decSmallNumber(buf, off, size)\n\nconst nanNull = value => isNaN(value) ? null : value\n\nconst decSmallNumber = (buf, off, size) =>\n nanNull(parseInt(\n buf.slice(off, off + size)\n .toString('utf8').replace(/\\0.*$/, '').trim(), 8))\n\n// the maximum encodable as a null-terminated octal, by field size\nconst MAXNUM = {\n 12: 0o77777777777,\n 8: 0o7777777,\n}\n\nconst encNumber = (buf, off, size, number) =>\n number === null ? false :\n number > MAXNUM[size] || number < 0\n ? (large.encode(number, buf.slice(off, off + size)), true)\n : (encSmallNumber(buf, off, size, number), false)\n\nconst encSmallNumber = (buf, off, size, number) =>\n buf.write(octalString(number, size), off, size, 'ascii')\n\nconst octalString = (number, size) =>\n padOctal(Math.floor(number).toString(8), size)\n\nconst padOctal = (string, size) =>\n (string.length === size - 1 ? string\n : new Array(size - string.length - 1).join('0') + string + ' ') + '\\0'\n\nconst encDate = (buf, off, size, date) =>\n date === null ? false :\n encNumber(buf, off, size, date.getTime() / 1000)\n\n// enough to fill the longest string we've got\nconst NULLS = new Array(156).join('\\0')\n// pad with nulls, return true if it's longer or non-ascii\nconst encString = (buf, off, size, string) =>\n string === null ? false :\n (buf.write(string + NULLS, off, size, 'utf8'),\n string.length !== Buffer.byteLength(string) || string.length > size)\n\nmodule.exports = Header\n", "'use strict'\nconst Header = require('./header.js')\nconst path = require('path')\n\nclass Pax {\n constructor (obj, global) {\n this.atime = obj.atime || null\n this.charset = obj.charset || null\n this.comment = obj.comment || null\n this.ctime = obj.ctime || null\n this.gid = obj.gid || null\n this.gname = obj.gname || null\n this.linkpath = obj.linkpath || null\n this.mtime = obj.mtime || null\n this.path = obj.path || null\n this.size = obj.size || null\n this.uid = obj.uid || null\n this.uname = obj.uname || null\n this.dev = obj.dev || null\n this.ino = obj.ino || null\n this.nlink = obj.nlink || null\n this.global = global || false\n }\n\n encode () {\n const body = this.encodeBody()\n if (body === '') {\n return null\n }\n\n const bodyLen = Buffer.byteLength(body)\n // round up to 512 bytes\n // add 512 for header\n const bufLen = 512 * Math.ceil(1 + bodyLen / 512)\n const buf = Buffer.allocUnsafe(bufLen)\n\n // 0-fill the header section, it might not hit every field\n for (let i = 0; i < 512; i++) {\n buf[i] = 0\n }\n\n new Header({\n // XXX split the path\n // then the path should be PaxHeader + basename, but less than 99,\n // prepend with the dirname\n path: ('PaxHeader/' + path.basename(this.path)).slice(0, 99),\n mode: this.mode || 0o644,\n uid: this.uid || null,\n gid: this.gid || null,\n size: bodyLen,\n mtime: this.mtime || null,\n type: this.global ? 'GlobalExtendedHeader' : 'ExtendedHeader',\n linkpath: '',\n uname: this.uname || '',\n gname: this.gname || '',\n devmaj: 0,\n devmin: 0,\n atime: this.atime || null,\n ctime: this.ctime || null,\n }).encode(buf)\n\n buf.write(body, 512, bodyLen, 'utf8')\n\n // null pad after the body\n for (let i = bodyLen + 512; i < buf.length; i++) {\n buf[i] = 0\n }\n\n return buf\n }\n\n encodeBody () {\n return (\n this.encodeField('path') +\n this.encodeField('ctime') +\n this.encodeField('atime') +\n this.encodeField('dev') +\n this.encodeField('ino') +\n this.encodeField('nlink') +\n this.encodeField('charset') +\n this.encodeField('comment') +\n this.encodeField('gid') +\n this.encodeField('gname') +\n this.encodeField('linkpath') +\n this.encodeField('mtime') +\n this.encodeField('size') +\n this.encodeField('uid') +\n this.encodeField('uname')\n )\n }\n\n encodeField (field) {\n if (this[field] === null || this[field] === undefined) {\n return ''\n }\n const v = this[field] instanceof Date ? this[field].getTime() / 1000\n : this[field]\n const s = ' ' +\n (field === 'dev' || field === 'ino' || field === 'nlink'\n ? 'SCHILY.' : '') +\n field + '=' + v + '\\n'\n const byteLen = Buffer.byteLength(s)\n // the digits includes the length of the digits in ascii base-10\n // so if it's 9 characters, then adding 1 for the 9 makes it 10\n // which makes it 11 chars.\n let digits = Math.floor(Math.log(byteLen) / Math.log(10)) + 1\n if (byteLen + digits >= Math.pow(10, digits)) {\n digits += 1\n }\n const len = digits + byteLen\n return len + s\n }\n}\n\nPax.parse = (string, ex, g) => new Pax(merge(parseKV(string), ex), g)\n\nconst merge = (a, b) =>\n b ? Object.keys(a).reduce((s, k) => (s[k] = a[k], s), b) : a\n\nconst parseKV = string =>\n string\n .replace(/\\n$/, '')\n .split('\\n')\n .reduce(parseKVLine, Object.create(null))\n\nconst parseKVLine = (set, line) => {\n const n = parseInt(line, 10)\n\n // XXX Values with \\n in them will fail this.\n // Refactor to not be a naive line-by-line parse.\n if (n !== Buffer.byteLength(line) + 1) {\n return set\n }\n\n line = line.slice((n + ' ').length)\n const kv = line.split('=')\n const k = kv.shift().replace(/^SCHILY\\.(dev|ino|nlink)/, '$1')\n if (!k) {\n return set\n }\n\n const v = kv.join('=')\n set[k] = /^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(k)\n ? new Date(v * 1000)\n : /^[0-9]+$/.test(v) ? +v\n : v\n return set\n}\n\nmodule.exports = Pax\n", "// warning: extremely hot code path.\n// This has been meticulously optimized for use\n// within npm install on large package trees.\n// Do not edit without careful benchmarking.\nmodule.exports = str => {\n let i = str.length - 1\n let slashesStart = -1\n while (i > -1 && str.charAt(i) === '/') {\n slashesStart = i\n i--\n }\n return slashesStart === -1 ? str : str.slice(0, slashesStart)\n}\n", "'use strict'\nmodule.exports = Base => class extends Base {\n warn (code, message, data = {}) {\n if (this.file) {\n data.file = this.file\n }\n if (this.cwd) {\n data.cwd = this.cwd\n }\n data.code = message instanceof Error && message.code || code\n data.tarCode = code\n if (!this.strict && data.recoverable !== false) {\n if (message instanceof Error) {\n data = Object.assign(message, data)\n message = message.message\n }\n this.emit('warn', data.tarCode, message, data)\n } else if (message instanceof Error) {\n this.emit('error', Object.assign(message, data))\n } else {\n this.emit('error', Object.assign(new Error(`${code}: ${message}`), data))\n }\n }\n}\n", "'use strict'\n\n// When writing files on Windows, translate the characters to their\n// 0xf000 higher-encoded versions.\n\nconst raw = [\n '|',\n '<',\n '>',\n '?',\n ':',\n]\n\nconst win = raw.map(char =>\n String.fromCharCode(0xf000 + char.charCodeAt(0)))\n\nconst toWin = new Map(raw.map((char, i) => [char, win[i]]))\nconst toRaw = new Map(win.map((char, i) => [char, raw[i]]))\n\nmodule.exports = {\n encode: s => raw.reduce((s, c) => s.split(c).join(toWin.get(c)), s),\n decode: s => win.reduce((s, c) => s.split(c).join(toRaw.get(c)), s),\n}\n", "// unix absolute paths are also absolute on win32, so we use this for both\nconst { isAbsolute, parse } = require('path').win32\n\n// returns [root, stripped]\n// Note that windows will think that //x/y/z/a has a \"root\" of //x/y, and in\n// those cases, we want to sanitize it to x/y/z/a, not z/a, so we strip /\n// explicitly if it's the first character.\n// drive-specific relative paths on Windows get their root stripped off even\n// though they are not absolute, so `c:../foo` becomes ['c:', '../foo']\nmodule.exports = path => {\n let r = ''\n\n let parsed = parse(path)\n while (isAbsolute(path) || parsed.root) {\n // windows will think that //x/y/z has a \"root\" of //x/y/\n // but strip the //?/C:/ off of //?/C:/path\n const root = path.charAt(0) === '/' && path.slice(0, 4) !== '//?/' ? '/'\n : parsed.root\n path = path.slice(root.length)\n r += root\n parsed = parse(path)\n }\n return [r, path]\n}\n", "'use strict'\nmodule.exports = (mode, isDir, portable) => {\n mode &= 0o7777\n\n // in portable mode, use the minimum reasonable umask\n // if this system creates files with 0o664 by default\n // (as some linux distros do), then we'll write the\n // archive with 0o644 instead. Also, don't ever create\n // a file that is not readable/writable by the owner.\n if (portable) {\n mode = (mode | 0o600) & ~0o22\n }\n\n // if dirs are readable, then they should be listable\n if (isDir) {\n if (mode & 0o400) {\n mode |= 0o100\n }\n if (mode & 0o40) {\n mode |= 0o10\n }\n if (mode & 0o4) {\n mode |= 0o1\n }\n }\n return mode\n}\n", "'use strict'\nconst { Minipass } = require('minipass')\nconst Pax = require('./pax.js')\nconst Header = require('./header.js')\nconst fs = require('fs')\nconst path = require('path')\nconst normPath = require('./normalize-windows-path.js')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nconst prefixPath = (path, prefix) => {\n if (!prefix) {\n return normPath(path)\n }\n path = normPath(path).replace(/^\\.(\\/|$)/, '')\n return stripSlash(prefix) + '/' + path\n}\n\nconst maxReadSize = 16 * 1024 * 1024\nconst PROCESS = Symbol('process')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst HEADER = Symbol('header')\nconst READ = Symbol('read')\nconst LSTAT = Symbol('lstat')\nconst ONLSTAT = Symbol('onlstat')\nconst ONREAD = Symbol('onread')\nconst ONREADLINK = Symbol('onreadlink')\nconst OPENFILE = Symbol('openfile')\nconst ONOPENFILE = Symbol('onopenfile')\nconst CLOSE = Symbol('close')\nconst MODE = Symbol('mode')\nconst AWAITDRAIN = Symbol('awaitDrain')\nconst ONDRAIN = Symbol('ondrain')\nconst PREFIX = Symbol('prefix')\nconst HAD_ERROR = Symbol('hadError')\nconst warner = require('./warn-mixin.js')\nconst winchars = require('./winchars.js')\nconst stripAbsolutePath = require('./strip-absolute-path.js')\n\nconst modeFix = require('./mode-fix.js')\n\nconst WriteEntry = warner(class WriteEntry extends Minipass {\n constructor (p, opt) {\n opt = opt || {}\n super(opt)\n if (typeof p !== 'string') {\n throw new TypeError('path is required')\n }\n this.path = normPath(p)\n // suppress atime, ctime, uid, gid, uname, gname\n this.portable = !!opt.portable\n // until node has builtin pwnam functions, this'll have to do\n this.myuid = process.getuid && process.getuid() || 0\n this.myuser = process.env.USER || ''\n this.maxReadSize = opt.maxReadSize || maxReadSize\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.preservePaths = !!opt.preservePaths\n this.cwd = normPath(opt.cwd || process.cwd())\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n this.prefix = opt.prefix ? normPath(opt.prefix) : null\n\n this.fd = null\n this.blockLen = null\n this.blockRemain = null\n this.buf = null\n this.offset = null\n this.length = null\n this.pos = null\n this.remain = null\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n let pathWarn = false\n if (!this.preservePaths) {\n const [root, stripped] = stripAbsolutePath(this.path)\n if (root) {\n this.path = stripped\n pathWarn = root\n }\n }\n\n this.win32 = !!opt.win32 || process.platform === 'win32'\n if (this.win32) {\n // force the \\ to / normalization, since we might not *actually*\n // be on windows, but want \\ to be considered a path separator.\n this.path = winchars.decode(this.path.replace(/\\\\/g, '/'))\n p = p.replace(/\\\\/g, '/')\n }\n\n this.absolute = normPath(opt.absolute || path.resolve(this.cwd, p))\n\n if (this.path === '') {\n this.path = './'\n }\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.statCache.has(this.absolute)) {\n this[ONLSTAT](this.statCache.get(this.absolute))\n } else {\n this[LSTAT]()\n }\n }\n\n emit (ev, ...data) {\n if (ev === 'error') {\n this[HAD_ERROR] = true\n }\n return super.emit(ev, ...data)\n }\n\n [LSTAT] () {\n fs.lstat(this.absolute, (er, stat) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONLSTAT](stat)\n })\n }\n\n [ONLSTAT] (stat) {\n this.statCache.set(this.absolute, stat)\n this.stat = stat\n if (!stat.isFile()) {\n stat.size = 0\n }\n this.type = getType(stat)\n this.emit('stat', stat)\n this[PROCESS]()\n }\n\n [PROCESS] () {\n switch (this.type) {\n case 'File': return this[FILE]()\n case 'Directory': return this[DIRECTORY]()\n case 'SymbolicLink': return this[SYMLINK]()\n // unsupported types are ignored.\n default: return this.end()\n }\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n [PREFIX] (path) {\n return prefixPath(path, this.prefix)\n }\n\n [HEADER] () {\n if (this.type === 'Directory' && this.portable) {\n this.noMtime = true\n }\n\n this.header = new Header({\n path: this[PREFIX](this.path),\n // only apply the prefix to hard links.\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this[MODE](this.stat.mode),\n uid: this.portable ? null : this.stat.uid,\n gid: this.portable ? null : this.stat.gid,\n size: this.stat.size,\n mtime: this.noMtime ? null : this.mtime || this.stat.mtime,\n type: this.type,\n uname: this.portable ? null :\n this.stat.uid === this.myuid ? this.myuser : '',\n atime: this.portable ? null : this.stat.atime,\n ctime: this.portable ? null : this.stat.ctime,\n })\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.header.atime,\n ctime: this.portable ? null : this.header.ctime,\n gid: this.portable ? null : this.header.gid,\n mtime: this.noMtime ? null : this.mtime || this.header.mtime,\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n size: this.header.size,\n uid: this.portable ? null : this.header.uid,\n uname: this.portable ? null : this.header.uname,\n dev: this.portable ? null : this.stat.dev,\n ino: this.portable ? null : this.stat.ino,\n nlink: this.portable ? null : this.stat.nlink,\n }).encode())\n }\n super.write(this.header.block)\n }\n\n [DIRECTORY] () {\n if (this.path.slice(-1) !== '/') {\n this.path += '/'\n }\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [SYMLINK] () {\n fs.readlink(this.absolute, (er, linkpath) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONREADLINK](linkpath)\n })\n }\n\n [ONREADLINK] (linkpath) {\n this.linkpath = normPath(linkpath)\n this[HEADER]()\n this.end()\n }\n\n [HARDLINK] (linkpath) {\n this.type = 'Link'\n this.linkpath = normPath(path.relative(this.cwd, linkpath))\n this.stat.size = 0\n this[HEADER]()\n this.end()\n }\n\n [FILE] () {\n if (this.stat.nlink > 1) {\n const linkKey = this.stat.dev + ':' + this.stat.ino\n if (this.linkCache.has(linkKey)) {\n const linkpath = this.linkCache.get(linkKey)\n if (linkpath.indexOf(this.cwd) === 0) {\n return this[HARDLINK](linkpath)\n }\n }\n this.linkCache.set(linkKey, this.absolute)\n }\n\n this[HEADER]()\n if (this.stat.size === 0) {\n return this.end()\n }\n\n this[OPENFILE]()\n }\n\n [OPENFILE] () {\n fs.open(this.absolute, 'r', (er, fd) => {\n if (er) {\n return this.emit('error', er)\n }\n this[ONOPENFILE](fd)\n })\n }\n\n [ONOPENFILE] (fd) {\n this.fd = fd\n if (this[HAD_ERROR]) {\n return this[CLOSE]()\n }\n\n this.blockLen = 512 * Math.ceil(this.stat.size / 512)\n this.blockRemain = this.blockLen\n const bufLen = Math.min(this.blockLen, this.maxReadSize)\n this.buf = Buffer.allocUnsafe(bufLen)\n this.offset = 0\n this.pos = 0\n this.remain = this.stat.size\n this.length = this.buf.length\n this[READ]()\n }\n\n [READ] () {\n const { fd, buf, offset, length, pos } = this\n fs.read(fd, buf, offset, length, pos, (er, bytesRead) => {\n if (er) {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n return this[CLOSE](() => this.emit('error', er))\n }\n this[ONREAD](bytesRead)\n })\n }\n\n [CLOSE] (cb) {\n fs.close(this.fd, cb)\n }\n\n [ONREAD] (bytesRead) {\n if (bytesRead <= 0 && this.remain > 0) {\n const er = new Error('encountered unexpected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](() => this.emit('error', er))\n }\n\n if (bytesRead > this.remain) {\n const er = new Error('did not encounter expected EOF')\n er.path = this.absolute\n er.syscall = 'read'\n er.code = 'EOF'\n return this[CLOSE](() => this.emit('error', er))\n }\n\n // null out the rest of the buffer, if we could fit the block padding\n // at the end of this loop, we've incremented bytesRead and this.remain\n // to be incremented up to the blockRemain level, as if we had expected\n // to get a null-padded file, and read it until the end. then we will\n // decrement both remain and blockRemain by bytesRead, and know that we\n // reached the expected EOF, without any null buffer to append.\n if (bytesRead === this.remain) {\n for (let i = bytesRead; i < this.length && bytesRead < this.blockRemain; i++) {\n this.buf[i + this.offset] = 0\n bytesRead++\n this.remain++\n }\n }\n\n const writeBuf = this.offset === 0 && bytesRead === this.buf.length ?\n this.buf : this.buf.slice(this.offset, this.offset + bytesRead)\n\n const flushed = this.write(writeBuf)\n if (!flushed) {\n this[AWAITDRAIN](() => this[ONDRAIN]())\n } else {\n this[ONDRAIN]()\n }\n }\n\n [AWAITDRAIN] (cb) {\n this.once('drain', cb)\n }\n\n write (writeBuf) {\n if (this.blockRemain < writeBuf.length) {\n const er = new Error('writing more data than expected')\n er.path = this.absolute\n return this.emit('error', er)\n }\n this.remain -= writeBuf.length\n this.blockRemain -= writeBuf.length\n this.pos += writeBuf.length\n this.offset += writeBuf.length\n return super.write(writeBuf)\n }\n\n [ONDRAIN] () {\n if (!this.remain) {\n if (this.blockRemain) {\n super.write(Buffer.alloc(this.blockRemain))\n }\n return this[CLOSE](er => er ? this.emit('error', er) : this.end())\n }\n\n if (this.offset >= this.length) {\n // if we only have a smaller bit left to read, alloc a smaller buffer\n // otherwise, keep it the same length it was before.\n this.buf = Buffer.allocUnsafe(Math.min(this.blockRemain, this.buf.length))\n this.offset = 0\n }\n this.length = this.buf.length - this.offset\n this[READ]()\n }\n})\n\nclass WriteEntrySync extends WriteEntry {\n [LSTAT] () {\n this[ONLSTAT](fs.lstatSync(this.absolute))\n }\n\n [SYMLINK] () {\n this[ONREADLINK](fs.readlinkSync(this.absolute))\n }\n\n [OPENFILE] () {\n this[ONOPENFILE](fs.openSync(this.absolute, 'r'))\n }\n\n [READ] () {\n let threw = true\n try {\n const { fd, buf, offset, length, pos } = this\n const bytesRead = fs.readSync(fd, buf, offset, length, pos)\n this[ONREAD](bytesRead)\n threw = false\n } finally {\n // ignoring the error from close(2) is a bad practice, but at\n // this point we already have an error, don't need another one\n if (threw) {\n try {\n this[CLOSE](() => {})\n } catch (er) {}\n }\n }\n }\n\n [AWAITDRAIN] (cb) {\n cb()\n }\n\n [CLOSE] (cb) {\n fs.closeSync(this.fd)\n cb()\n }\n}\n\nconst WriteEntryTar = warner(class WriteEntryTar extends Minipass {\n constructor (readEntry, opt) {\n opt = opt || {}\n super(opt)\n this.preservePaths = !!opt.preservePaths\n this.portable = !!opt.portable\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.noMtime = !!opt.noMtime\n\n this.readEntry = readEntry\n this.type = readEntry.type\n if (this.type === 'Directory' && this.portable) {\n this.noMtime = true\n }\n\n this.prefix = opt.prefix || null\n\n this.path = normPath(readEntry.path)\n this.mode = this[MODE](readEntry.mode)\n this.uid = this.portable ? null : readEntry.uid\n this.gid = this.portable ? null : readEntry.gid\n this.uname = this.portable ? null : readEntry.uname\n this.gname = this.portable ? null : readEntry.gname\n this.size = readEntry.size\n this.mtime = this.noMtime ? null : opt.mtime || readEntry.mtime\n this.atime = this.portable ? null : readEntry.atime\n this.ctime = this.portable ? null : readEntry.ctime\n this.linkpath = normPath(readEntry.linkpath)\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n let pathWarn = false\n if (!this.preservePaths) {\n const [root, stripped] = stripAbsolutePath(this.path)\n if (root) {\n this.path = stripped\n pathWarn = root\n }\n }\n\n this.remain = readEntry.size\n this.blockRemain = readEntry.startBlockSize\n\n this.header = new Header({\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n // only the permissions and setuid/setgid/sticky bitflags\n // not the higher-order bits that specify file type\n mode: this.mode,\n uid: this.portable ? null : this.uid,\n gid: this.portable ? null : this.gid,\n size: this.size,\n mtime: this.noMtime ? null : this.mtime,\n type: this.type,\n uname: this.portable ? null : this.uname,\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n })\n\n if (pathWarn) {\n this.warn('TAR_ENTRY_INFO', `stripping ${pathWarn} from absolute path`, {\n entry: this,\n path: pathWarn + this.path,\n })\n }\n\n if (this.header.encode() && !this.noPax) {\n super.write(new Pax({\n atime: this.portable ? null : this.atime,\n ctime: this.portable ? null : this.ctime,\n gid: this.portable ? null : this.gid,\n mtime: this.noMtime ? null : this.mtime,\n path: this[PREFIX](this.path),\n linkpath: this.type === 'Link' ? this[PREFIX](this.linkpath)\n : this.linkpath,\n size: this.size,\n uid: this.portable ? null : this.uid,\n uname: this.portable ? null : this.uname,\n dev: this.portable ? null : this.readEntry.dev,\n ino: this.portable ? null : this.readEntry.ino,\n nlink: this.portable ? null : this.readEntry.nlink,\n }).encode())\n }\n\n super.write(this.header.block)\n readEntry.pipe(this)\n }\n\n [PREFIX] (path) {\n return prefixPath(path, this.prefix)\n }\n\n [MODE] (mode) {\n return modeFix(mode, this.type === 'Directory', this.portable)\n }\n\n write (data) {\n const writeLen = data.length\n if (writeLen > this.blockRemain) {\n throw new Error('writing more to entry than is appropriate')\n }\n this.blockRemain -= writeLen\n return super.write(data)\n }\n\n end () {\n if (this.blockRemain) {\n super.write(Buffer.alloc(this.blockRemain))\n }\n return super.end()\n }\n})\n\nWriteEntry.Sync = WriteEntrySync\nWriteEntry.Tar = WriteEntryTar\n\nconst getType = stat =>\n stat.isFile() ? 'File'\n : stat.isDirectory() ? 'Directory'\n : stat.isSymbolicLink() ? 'SymbolicLink'\n : 'Unsupported'\n\nmodule.exports = WriteEntry\n", "'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n", "'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n", "'use strict'\n\n// A readable tar stream creator\n// Technically, this is a transform stream that you write paths into,\n// and tar format comes out of.\n// The `add()` method is like `write()` but returns this,\n// and end() return `this` as well, so you can\n// do `new Pack(opt).add('files').add('dir').end().pipe(output)\n// You could also do something like:\n// streamOfPaths().pipe(new Pack()).pipe(new fs.WriteStream('out.tar'))\n\nclass PackJob {\n constructor (path, absolute) {\n this.path = path || './'\n this.absolute = absolute\n this.entry = null\n this.stat = null\n this.readdir = null\n this.pending = false\n this.ignore = false\n this.piped = false\n }\n}\n\nconst { Minipass } = require('minipass')\nconst zlib = require('minizlib')\nconst ReadEntry = require('./read-entry.js')\nconst WriteEntry = require('./write-entry.js')\nconst WriteEntrySync = WriteEntry.Sync\nconst WriteEntryTar = WriteEntry.Tar\nconst Yallist = require('yallist')\nconst EOF = Buffer.alloc(1024)\nconst ONSTAT = Symbol('onStat')\nconst ENDED = Symbol('ended')\nconst QUEUE = Symbol('queue')\nconst CURRENT = Symbol('current')\nconst PROCESS = Symbol('process')\nconst PROCESSING = Symbol('processing')\nconst PROCESSJOB = Symbol('processJob')\nconst JOBS = Symbol('jobs')\nconst JOBDONE = Symbol('jobDone')\nconst ADDFSENTRY = Symbol('addFSEntry')\nconst ADDTARENTRY = Symbol('addTarEntry')\nconst STAT = Symbol('stat')\nconst READDIR = Symbol('readdir')\nconst ONREADDIR = Symbol('onreaddir')\nconst PIPE = Symbol('pipe')\nconst ENTRY = Symbol('entry')\nconst ENTRYOPT = Symbol('entryOpt')\nconst WRITEENTRYCLASS = Symbol('writeEntryClass')\nconst WRITE = Symbol('write')\nconst ONDRAIN = Symbol('ondrain')\n\nconst fs = require('fs')\nconst path = require('path')\nconst warner = require('./warn-mixin.js')\nconst normPath = require('./normalize-windows-path.js')\n\nconst Pack = warner(class Pack extends Minipass {\n constructor (opt) {\n super(opt)\n opt = opt || Object.create(null)\n this.opt = opt\n this.file = opt.file || ''\n this.cwd = opt.cwd || process.cwd()\n this.maxReadSize = opt.maxReadSize\n this.preservePaths = !!opt.preservePaths\n this.strict = !!opt.strict\n this.noPax = !!opt.noPax\n this.prefix = normPath(opt.prefix || '')\n this.linkCache = opt.linkCache || new Map()\n this.statCache = opt.statCache || new Map()\n this.readdirCache = opt.readdirCache || new Map()\n\n this[WRITEENTRYCLASS] = WriteEntry\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n\n this.portable = !!opt.portable\n this.zip = null\n\n if (opt.gzip || opt.brotli) {\n if (opt.gzip && opt.brotli) {\n throw new TypeError('gzip and brotli are mutually exclusive')\n }\n if (opt.gzip) {\n if (typeof opt.gzip !== 'object') {\n opt.gzip = {}\n }\n if (this.portable) {\n opt.gzip.portable = true\n }\n this.zip = new zlib.Gzip(opt.gzip)\n }\n if (opt.brotli) {\n if (typeof opt.brotli !== 'object') {\n opt.brotli = {}\n }\n this.zip = new zlib.BrotliCompress(opt.brotli)\n }\n this.zip.on('data', chunk => super.write(chunk))\n this.zip.on('end', _ => super.end())\n this.zip.on('drain', _ => this[ONDRAIN]())\n this.on('resume', _ => this.zip.resume())\n } else {\n this.on('drain', this[ONDRAIN])\n }\n\n this.noDirRecurse = !!opt.noDirRecurse\n this.follow = !!opt.follow\n this.noMtime = !!opt.noMtime\n this.mtime = opt.mtime || null\n\n this.filter = typeof opt.filter === 'function' ? opt.filter : _ => true\n\n this[QUEUE] = new Yallist()\n this[JOBS] = 0\n this.jobs = +opt.jobs || 4\n this[PROCESSING] = false\n this[ENDED] = false\n }\n\n [WRITE] (chunk) {\n return super.write(chunk)\n }\n\n add (path) {\n this.write(path)\n return this\n }\n\n end (path) {\n if (path) {\n this.write(path)\n }\n this[ENDED] = true\n this[PROCESS]()\n return this\n }\n\n write (path) {\n if (this[ENDED]) {\n throw new Error('write after end')\n }\n\n if (path instanceof ReadEntry) {\n this[ADDTARENTRY](path)\n } else {\n this[ADDFSENTRY](path)\n }\n return this.flowing\n }\n\n [ADDTARENTRY] (p) {\n const absolute = normPath(path.resolve(this.cwd, p.path))\n // in this case, we don't have to wait for the stat\n if (!this.filter(p.path, p)) {\n p.resume()\n } else {\n const job = new PackJob(p.path, absolute, false)\n job.entry = new WriteEntryTar(p, this[ENTRYOPT](job))\n job.entry.on('end', _ => this[JOBDONE](job))\n this[JOBS] += 1\n this[QUEUE].push(job)\n }\n\n this[PROCESS]()\n }\n\n [ADDFSENTRY] (p) {\n const absolute = normPath(path.resolve(this.cwd, p))\n this[QUEUE].push(new PackJob(p, absolute))\n this[PROCESS]()\n }\n\n [STAT] (job) {\n job.pending = true\n this[JOBS] += 1\n const stat = this.follow ? 'stat' : 'lstat'\n fs[stat](job.absolute, (er, stat) => {\n job.pending = false\n this[JOBS] -= 1\n if (er) {\n this.emit('error', er)\n } else {\n this[ONSTAT](job, stat)\n }\n })\n }\n\n [ONSTAT] (job, stat) {\n this.statCache.set(job.absolute, stat)\n job.stat = stat\n\n // now we have the stat, we can filter it.\n if (!this.filter(job.path, stat)) {\n job.ignore = true\n }\n\n this[PROCESS]()\n }\n\n [READDIR] (job) {\n job.pending = true\n this[JOBS] += 1\n fs.readdir(job.absolute, (er, entries) => {\n job.pending = false\n this[JOBS] -= 1\n if (er) {\n return this.emit('error', er)\n }\n this[ONREADDIR](job, entries)\n })\n }\n\n [ONREADDIR] (job, entries) {\n this.readdirCache.set(job.absolute, entries)\n job.readdir = entries\n this[PROCESS]()\n }\n\n [PROCESS] () {\n if (this[PROCESSING]) {\n return\n }\n\n this[PROCESSING] = true\n for (let w = this[QUEUE].head;\n w !== null && this[JOBS] < this.jobs;\n w = w.next) {\n this[PROCESSJOB](w.value)\n if (w.value.ignore) {\n const p = w.next\n this[QUEUE].removeNode(w)\n w.next = p\n }\n }\n\n this[PROCESSING] = false\n\n if (this[ENDED] && !this[QUEUE].length && this[JOBS] === 0) {\n if (this.zip) {\n this.zip.end(EOF)\n } else {\n super.write(EOF)\n super.end()\n }\n }\n }\n\n get [CURRENT] () {\n return this[QUEUE] && this[QUEUE].head && this[QUEUE].head.value\n }\n\n [JOBDONE] (job) {\n this[QUEUE].shift()\n this[JOBS] -= 1\n this[PROCESS]()\n }\n\n [PROCESSJOB] (job) {\n if (job.pending) {\n return\n }\n\n if (job.entry) {\n if (job === this[CURRENT] && !job.piped) {\n this[PIPE](job)\n }\n return\n }\n\n if (!job.stat) {\n if (this.statCache.has(job.absolute)) {\n this[ONSTAT](job, this.statCache.get(job.absolute))\n } else {\n this[STAT](job)\n }\n }\n if (!job.stat) {\n return\n }\n\n // filtered out!\n if (job.ignore) {\n return\n }\n\n if (!this.noDirRecurse && job.stat.isDirectory() && !job.readdir) {\n if (this.readdirCache.has(job.absolute)) {\n this[ONREADDIR](job, this.readdirCache.get(job.absolute))\n } else {\n this[READDIR](job)\n }\n if (!job.readdir) {\n return\n }\n }\n\n // we know it doesn't have an entry, because that got checked above\n job.entry = this[ENTRY](job)\n if (!job.entry) {\n job.ignore = true\n return\n }\n\n if (job === this[CURRENT] && !job.piped) {\n this[PIPE](job)\n }\n }\n\n [ENTRYOPT] (job) {\n return {\n onwarn: (code, msg, data) => this.warn(code, msg, data),\n noPax: this.noPax,\n cwd: this.cwd,\n absolute: job.absolute,\n preservePaths: this.preservePaths,\n maxReadSize: this.maxReadSize,\n strict: this.strict,\n portable: this.portable,\n linkCache: this.linkCache,\n statCache: this.statCache,\n noMtime: this.noMtime,\n mtime: this.mtime,\n prefix: this.prefix,\n }\n }\n\n [ENTRY] (job) {\n this[JOBS] += 1\n try {\n return new this[WRITEENTRYCLASS](job.path, this[ENTRYOPT](job))\n .on('end', () => this[JOBDONE](job))\n .on('error', er => this.emit('error', er))\n } catch (er) {\n this.emit('error', er)\n }\n }\n\n [ONDRAIN] () {\n if (this[CURRENT] && this[CURRENT].entry) {\n this[CURRENT].entry.resume()\n }\n }\n\n // like .pipe() but using super, because our write() is special\n [PIPE] (job) {\n job.piped = true\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = job.path\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n const source = job.entry\n const zip = this.zip\n\n if (zip) {\n source.on('data', chunk => {\n if (!zip.write(chunk)) {\n source.pause()\n }\n })\n } else {\n source.on('data', chunk => {\n if (!super.write(chunk)) {\n source.pause()\n }\n })\n }\n }\n\n pause () {\n if (this.zip) {\n this.zip.pause()\n }\n return super.pause()\n }\n})\n\nclass PackSync extends Pack {\n constructor (opt) {\n super(opt)\n this[WRITEENTRYCLASS] = WriteEntrySync\n }\n\n // pause/resume are no-ops in sync streams.\n pause () {}\n resume () {}\n\n [STAT] (job) {\n const stat = this.follow ? 'statSync' : 'lstatSync'\n this[ONSTAT](job, fs[stat](job.absolute))\n }\n\n [READDIR] (job, stat) {\n this[ONREADDIR](job, fs.readdirSync(job.absolute))\n }\n\n // gotta get it all in this tick\n [PIPE] (job) {\n const source = job.entry\n const zip = this.zip\n\n if (job.readdir) {\n job.readdir.forEach(entry => {\n const p = job.path\n const base = p === './' ? '' : p.replace(/\\/*$/, '/')\n this[ADDFSENTRY](base + entry)\n })\n }\n\n if (zip) {\n source.on('data', chunk => {\n zip.write(chunk)\n })\n } else {\n source.on('data', chunk => {\n super[WRITE](chunk)\n })\n }\n }\n}\n\nPack.Sync = PackSync\n\nmodule.exports = Pack\n", "'use strict'\nconst MiniPass = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nlet writev = fs.writev\n/* istanbul ignore next */\nif (!writev) {\n // This entire block can be removed if support for earlier than Node.js\n // 12.9.0 is not needed.\n const binding = process.binding('fs')\n const FSReqWrap = binding.FSReqWrap || binding.FSReqCallback\n\n writev = (fd, iovec, pos, cb) => {\n const done = (er, bw) => cb(er, bw, iovec)\n const req = new FSReqWrap()\n req.oncomplete = done\n binding.writeBuffers(fd, iovec, pos, req)\n }\n}\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nclass ReadStream extends MiniPass {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n\n this.readable = true\n this.writable = false\n\n if (typeof path !== 'string')\n throw new TypeError('path must be a string')\n\n this[_errored] = false\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_path] = path\n this[_readSize] = opt.readSize || 16*1024*1024\n this[_reading] = false\n this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n this[_remain] = this[_size]\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n if (typeof this[_fd] === 'number')\n this[_read]()\n else\n this[_open]()\n }\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n write () {\n throw new TypeError('this is a readable stream')\n }\n\n end () {\n throw new TypeError('this is a readable stream')\n }\n\n [_open] () {\n fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_read]()\n }\n }\n\n [_makeBuf] () {\n return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n }\n\n [_read] () {\n if (!this[_reading]) {\n this[_reading] = true\n const buf = this[_makeBuf]()\n /* istanbul ignore if */\n if (buf.length === 0)\n return process.nextTick(() => this[_onread](null, 0, buf))\n fs.read(this[_fd], buf, 0, buf.length, null, (er, br, buf) =>\n this[_onread](er, br, buf))\n }\n }\n\n [_onread] (er, br, buf) {\n this[_reading] = false\n if (er)\n this[_onerror](er)\n else if (this[_handleChunk](br, buf))\n this[_read]()\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n\n [_onerror] (er) {\n this[_reading] = true\n this[_close]()\n this.emit('error', er)\n }\n\n [_handleChunk] (br, buf) {\n let ret = false\n // no effect if infinite\n this[_remain] -= br\n if (br > 0)\n ret = super.write(br < buf.length ? buf.slice(0, br) : buf)\n\n if (br === 0 || this[_remain] <= 0) {\n ret = false\n this[_close]()\n super.end()\n }\n\n return ret\n }\n\n emit (ev, data) {\n switch (ev) {\n case 'prefinish':\n case 'finish':\n break\n\n case 'drain':\n if (typeof this[_fd] === 'number')\n this[_read]()\n break\n\n case 'error':\n if (this[_errored])\n return\n this[_errored] = true\n return super.emit(ev, data)\n\n default:\n return super.emit(ev, data)\n }\n }\n}\n\nclass ReadStreamSync extends ReadStream {\n [_open] () {\n let threw = true\n try {\n this[_onopen](null, fs.openSync(this[_path], 'r'))\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_read] () {\n let threw = true\n try {\n if (!this[_reading]) {\n this[_reading] = true\n do {\n const buf = this[_makeBuf]()\n /* istanbul ignore next */\n const br = buf.length === 0 ? 0\n : fs.readSync(this[_fd], buf, 0, buf.length, null)\n if (!this[_handleChunk](br, buf))\n break\n } while (true)\n this[_reading] = false\n }\n threw = false\n } finally {\n if (threw)\n this[_close]()\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n}\n\nclass WriteStream extends EE {\n constructor (path, opt) {\n opt = opt || {}\n super(opt)\n this.readable = false\n this.writable = true\n this[_errored] = false\n this[_writing] = false\n this[_ended] = false\n this[_needDrain] = false\n this[_queue] = []\n this[_path] = path\n this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n this[_pos] = typeof opt.start === 'number' ? opt.start : null\n this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n opt.autoClose : true\n\n // truncating makes no sense when writing into the middle\n const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n this[_defaultFlag] = opt.flags === undefined\n this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n if (this[_fd] === null)\n this[_open]()\n }\n\n emit (ev, data) {\n if (ev === 'error') {\n if (this[_errored])\n return\n this[_errored] = true\n }\n return super.emit(ev, data)\n }\n\n\n get fd () { return this[_fd] }\n get path () { return this[_path] }\n\n [_onerror] (er) {\n this[_close]()\n this[_writing] = true\n this.emit('error', er)\n }\n\n [_open] () {\n fs.open(this[_path], this[_flags], this[_mode],\n (er, fd) => this[_onopen](er, fd))\n }\n\n [_onopen] (er, fd) {\n if (this[_defaultFlag] &&\n this[_flags] === 'r+' &&\n er && er.code === 'ENOENT') {\n this[_flags] = 'w'\n this[_open]()\n } else if (er)\n this[_onerror](er)\n else {\n this[_fd] = fd\n this.emit('open', fd)\n this[_flush]()\n }\n }\n\n end (buf, enc) {\n if (buf)\n this.write(buf, enc)\n\n this[_ended] = true\n\n // synthetic after-write logic, where drain/finish live\n if (!this[_writing] && !this[_queue].length &&\n typeof this[_fd] === 'number')\n this[_onwrite](null, 0)\n return this\n }\n\n write (buf, enc) {\n if (typeof buf === 'string')\n buf = Buffer.from(buf, enc)\n\n if (this[_ended]) {\n this.emit('error', new Error('write() after end()'))\n return false\n }\n\n if (this[_fd] === null || this[_writing] || this[_queue].length) {\n this[_queue].push(buf)\n this[_needDrain] = true\n return false\n }\n\n this[_writing] = true\n this[_write](buf)\n return true\n }\n\n [_write] (buf) {\n fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n this[_onwrite](er, bw))\n }\n\n [_onwrite] (er, bw) {\n if (er)\n this[_onerror](er)\n else {\n if (this[_pos] !== null)\n this[_pos] += bw\n if (this[_queue].length)\n this[_flush]()\n else {\n this[_writing] = false\n\n if (this[_ended] && !this[_finished]) {\n this[_finished] = true\n this[_close]()\n this.emit('finish')\n } else if (this[_needDrain]) {\n this[_needDrain] = false\n this.emit('drain')\n }\n }\n }\n }\n\n [_flush] () {\n if (this[_queue].length === 0) {\n if (this[_ended])\n this[_onwrite](null, 0)\n } else if (this[_queue].length === 1)\n this[_write](this[_queue].pop())\n else {\n const iovec = this[_queue]\n this[_queue] = []\n writev(this[_fd], iovec, this[_pos],\n (er, bw) => this[_onwrite](er, bw))\n }\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n }\n }\n}\n\nclass WriteStreamSync extends WriteStream {\n [_open] () {\n let fd\n // only wrap in a try{} block if we know we'll retry, to avoid\n // the rethrow obscuring the error's source frame in most cases.\n if (this[_defaultFlag] && this[_flags] === 'r+') {\n try {\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n } catch (er) {\n if (er.code === 'ENOENT') {\n this[_flags] = 'w'\n return this[_open]()\n } else\n throw er\n }\n } else\n fd = fs.openSync(this[_path], this[_flags], this[_mode])\n\n this[_onopen](null, fd)\n }\n\n [_close] () {\n if (this[_autoClose] && typeof this[_fd] === 'number') {\n const fd = this[_fd]\n this[_fd] = null\n fs.closeSync(fd)\n this.emit('close')\n }\n }\n\n [_write] (buf) {\n // throw the original, but try to close if it fails\n let threw = true\n try {\n this[_onwrite](null,\n fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n threw = false\n } finally {\n if (threw)\n try { this[_close]() } catch (_) {}\n }\n }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n", "'use strict'\n\n// this[BUFFER] is the remainder of a chunk if we're waiting for\n// the full 512 bytes of a header to come in. We will Buffer.concat()\n// it to the next write(), which is a mem copy, but a small one.\n//\n// this[QUEUE] is a Yallist of entries that haven't been emitted\n// yet this can only get filled up if the user keeps write()ing after\n// a write() returns false, or does a write() with more than one entry\n//\n// We don't buffer chunks, we always parse them and either create an\n// entry, or push it into the active entry. The ReadEntry class knows\n// to throw data away if .ignore=true\n//\n// Shift entry off the buffer when it emits 'end', and emit 'entry' for\n// the next one in the list.\n//\n// At any time, we're pushing body chunks into the entry at WRITEENTRY,\n// and waiting for 'end' on the entry at READENTRY\n//\n// ignored entries get .resume() called on them straight away\n\nconst warner = require('./warn-mixin.js')\nconst Header = require('./header.js')\nconst EE = require('events')\nconst Yallist = require('yallist')\nconst maxMetaEntrySize = 1024 * 1024\nconst Entry = require('./read-entry.js')\nconst Pax = require('./pax.js')\nconst zlib = require('minizlib')\nconst { nextTick } = require('process')\n\nconst gzipHeader = Buffer.from([0x1f, 0x8b])\nconst STATE = Symbol('state')\nconst WRITEENTRY = Symbol('writeEntry')\nconst READENTRY = Symbol('readEntry')\nconst NEXTENTRY = Symbol('nextEntry')\nconst PROCESSENTRY = Symbol('processEntry')\nconst EX = Symbol('extendedHeader')\nconst GEX = Symbol('globalExtendedHeader')\nconst META = Symbol('meta')\nconst EMITMETA = Symbol('emitMeta')\nconst BUFFER = Symbol('buffer')\nconst QUEUE = Symbol('queue')\nconst ENDED = Symbol('ended')\nconst EMITTEDEND = Symbol('emittedEnd')\nconst EMIT = Symbol('emit')\nconst UNZIP = Symbol('unzip')\nconst CONSUMECHUNK = Symbol('consumeChunk')\nconst CONSUMECHUNKSUB = Symbol('consumeChunkSub')\nconst CONSUMEBODY = Symbol('consumeBody')\nconst CONSUMEMETA = Symbol('consumeMeta')\nconst CONSUMEHEADER = Symbol('consumeHeader')\nconst CONSUMING = Symbol('consuming')\nconst BUFFERCONCAT = Symbol('bufferConcat')\nconst MAYBEEND = Symbol('maybeEnd')\nconst WRITING = Symbol('writing')\nconst ABORTED = Symbol('aborted')\nconst DONE = Symbol('onDone')\nconst SAW_VALID_ENTRY = Symbol('sawValidEntry')\nconst SAW_NULL_BLOCK = Symbol('sawNullBlock')\nconst SAW_EOF = Symbol('sawEOF')\nconst CLOSESTREAM = Symbol('closeStream')\n\nconst noop = _ => true\n\nmodule.exports = warner(class Parser extends EE {\n constructor (opt) {\n opt = opt || {}\n super(opt)\n\n this.file = opt.file || ''\n\n // set to boolean false when an entry starts. 1024 bytes of \\0\n // is technically a valid tarball, albeit a boring one.\n this[SAW_VALID_ENTRY] = null\n\n // these BADARCHIVE errors can't be detected early. listen on DONE.\n this.on(DONE, _ => {\n if (this[STATE] === 'begin' || this[SAW_VALID_ENTRY] === false) {\n // either less than 1 block of data, or all entries were invalid.\n // Either way, probably not even a tarball.\n this.warn('TAR_BAD_ARCHIVE', 'Unrecognized archive format')\n }\n })\n\n if (opt.ondone) {\n this.on(DONE, opt.ondone)\n } else {\n this.on(DONE, _ => {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n })\n }\n\n this.strict = !!opt.strict\n this.maxMetaEntrySize = opt.maxMetaEntrySize || maxMetaEntrySize\n this.filter = typeof opt.filter === 'function' ? opt.filter : noop\n // Unlike gzip, brotli doesn't have any magic bytes to identify it\n // Users need to explicitly tell us they're extracting a brotli file\n // Or we infer from the file extension\n const isTBR = (opt.file && (\n opt.file.endsWith('.tar.br') || opt.file.endsWith('.tbr')))\n // if it's a tbr file it MIGHT be brotli, but we don't know until\n // we look at it and verify it's not a valid tar file.\n this.brotli = !opt.gzip && opt.brotli !== undefined ? opt.brotli\n : isTBR ? undefined\n : false\n\n // have to set this so that streams are ok piping into it\n this.writable = true\n this.readable = false\n\n this[QUEUE] = new Yallist()\n this[BUFFER] = null\n this[READENTRY] = null\n this[WRITEENTRY] = null\n this[STATE] = 'begin'\n this[META] = ''\n this[EX] = null\n this[GEX] = null\n this[ENDED] = false\n this[UNZIP] = null\n this[ABORTED] = false\n this[SAW_NULL_BLOCK] = false\n this[SAW_EOF] = false\n\n this.on('end', () => this[CLOSESTREAM]())\n\n if (typeof opt.onwarn === 'function') {\n this.on('warn', opt.onwarn)\n }\n if (typeof opt.onentry === 'function') {\n this.on('entry', opt.onentry)\n }\n }\n\n [CONSUMEHEADER] (chunk, position) {\n if (this[SAW_VALID_ENTRY] === null) {\n this[SAW_VALID_ENTRY] = false\n }\n let header\n try {\n header = new Header(chunk, position, this[EX], this[GEX])\n } catch (er) {\n return this.warn('TAR_ENTRY_INVALID', er)\n }\n\n if (header.nullBlock) {\n if (this[SAW_NULL_BLOCK]) {\n this[SAW_EOF] = true\n // ending an archive with no entries. pointless, but legal.\n if (this[STATE] === 'begin') {\n this[STATE] = 'header'\n }\n this[EMIT]('eof')\n } else {\n this[SAW_NULL_BLOCK] = true\n this[EMIT]('nullBlock')\n }\n } else {\n this[SAW_NULL_BLOCK] = false\n if (!header.cksumValid) {\n this.warn('TAR_ENTRY_INVALID', 'checksum failure', { header })\n } else if (!header.path) {\n this.warn('TAR_ENTRY_INVALID', 'path is required', { header })\n } else {\n const type = header.type\n if (/^(Symbolic)?Link$/.test(type) && !header.linkpath) {\n this.warn('TAR_ENTRY_INVALID', 'linkpath required', { header })\n } else if (!/^(Symbolic)?Link$/.test(type) && header.linkpath) {\n this.warn('TAR_ENTRY_INVALID', 'linkpath forbidden', { header })\n } else {\n const entry = this[WRITEENTRY] = new Entry(header, this[EX], this[GEX])\n\n // we do this for meta & ignored entries as well, because they\n // are still valid tar, or else we wouldn't know to ignore them\n if (!this[SAW_VALID_ENTRY]) {\n if (entry.remain) {\n // this might be the one!\n const onend = () => {\n if (!entry.invalid) {\n this[SAW_VALID_ENTRY] = true\n }\n }\n entry.on('end', onend)\n } else {\n this[SAW_VALID_ENTRY] = true\n }\n }\n\n if (entry.meta) {\n if (entry.size > this.maxMetaEntrySize) {\n entry.ignore = true\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = 'ignore'\n entry.resume()\n } else if (entry.size > 0) {\n this[META] = ''\n entry.on('data', c => this[META] += c)\n this[STATE] = 'meta'\n }\n } else {\n this[EX] = null\n entry.ignore = entry.ignore || !this.filter(entry.path, entry)\n\n if (entry.ignore) {\n // probably valid, just not something we care about\n this[EMIT]('ignoredEntry', entry)\n this[STATE] = entry.remain ? 'ignore' : 'header'\n entry.resume()\n } else {\n if (entry.remain) {\n this[STATE] = 'body'\n } else {\n this[STATE] = 'header'\n entry.end()\n }\n\n if (!this[READENTRY]) {\n this[QUEUE].push(entry)\n this[NEXTENTRY]()\n } else {\n this[QUEUE].push(entry)\n }\n }\n }\n }\n }\n }\n }\n\n [CLOSESTREAM] () {\n nextTick(() => this.emit('close'))\n }\n\n [PROCESSENTRY] (entry) {\n let go = true\n\n if (!entry) {\n this[READENTRY] = null\n go = false\n } else if (Array.isArray(entry)) {\n this.emit.apply(this, entry)\n } else {\n this[READENTRY] = entry\n this.emit('entry', entry)\n if (!entry.emittedEnd) {\n entry.on('end', _ => this[NEXTENTRY]())\n go = false\n }\n }\n\n return go\n }\n\n [NEXTENTRY] () {\n do {} while (this[PROCESSENTRY](this[QUEUE].shift()))\n\n if (!this[QUEUE].length) {\n // At this point, there's nothing in the queue, but we may have an\n // entry which is being consumed (readEntry).\n // If we don't, then we definitely can handle more data.\n // If we do, and either it's flowing, or it has never had any data\n // written to it, then it needs more.\n // The only other possibility is that it has returned false from a\n // write() call, so we wait for the next drain to continue.\n const re = this[READENTRY]\n const drainNow = !re || re.flowing || re.size === re.remain\n if (drainNow) {\n if (!this[WRITING]) {\n this.emit('drain')\n }\n } else {\n re.once('drain', _ => this.emit('drain'))\n }\n }\n }\n\n [CONSUMEBODY] (chunk, position) {\n // write up to but no more than writeEntry.blockRemain\n const entry = this[WRITEENTRY]\n const br = entry.blockRemain\n const c = (br >= chunk.length && position === 0) ? chunk\n : chunk.slice(position, position + br)\n\n entry.write(c)\n\n if (!entry.blockRemain) {\n this[STATE] = 'header'\n this[WRITEENTRY] = null\n entry.end()\n }\n\n return c.length\n }\n\n [CONSUMEMETA] (chunk, position) {\n const entry = this[WRITEENTRY]\n const ret = this[CONSUMEBODY](chunk, position)\n\n // if we finished, then the entry is reset\n if (!this[WRITEENTRY]) {\n this[EMITMETA](entry)\n }\n\n return ret\n }\n\n [EMIT] (ev, data, extra) {\n if (!this[QUEUE].length && !this[READENTRY]) {\n this.emit(ev, data, extra)\n } else {\n this[QUEUE].push([ev, data, extra])\n }\n }\n\n [EMITMETA] (entry) {\n this[EMIT]('meta', this[META])\n switch (entry.type) {\n case 'ExtendedHeader':\n case 'OldExtendedHeader':\n this[EX] = Pax.parse(this[META], this[EX], false)\n break\n\n case 'GlobalExtendedHeader':\n this[GEX] = Pax.parse(this[META], this[GEX], true)\n break\n\n case 'NextFileHasLongPath':\n case 'OldGnuLongPath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].path = this[META].replace(/\\0.*/, '')\n break\n\n case 'NextFileHasLongLinkpath':\n this[EX] = this[EX] || Object.create(null)\n this[EX].linkpath = this[META].replace(/\\0.*/, '')\n break\n\n /* istanbul ignore next */\n default: throw new Error('unknown meta: ' + entry.type)\n }\n }\n\n abort (error) {\n this[ABORTED] = true\n this.emit('abort', error)\n // always throws, even in non-strict mode\n this.warn('TAR_ABORT', error, { recoverable: false })\n }\n\n write (chunk) {\n if (this[ABORTED]) {\n return\n }\n\n // first write, might be gzipped\n const needSniff = this[UNZIP] === null ||\n this.brotli === undefined && this[UNZIP] === false\n if (needSniff && chunk) {\n if (this[BUFFER]) {\n chunk = Buffer.concat([this[BUFFER], chunk])\n this[BUFFER] = null\n }\n if (chunk.length < gzipHeader.length) {\n this[BUFFER] = chunk\n return true\n }\n\n // look for gzip header\n for (let i = 0; this[UNZIP] === null && i < gzipHeader.length; i++) {\n if (chunk[i] !== gzipHeader[i]) {\n this[UNZIP] = false\n }\n }\n\n const maybeBrotli = this.brotli === undefined\n if (this[UNZIP] === false && maybeBrotli) {\n // read the first header to see if it's a valid tar file. If so,\n // we can safely assume that it's not actually brotli, despite the\n // .tbr or .tar.br file extension.\n // if we ended before getting a full chunk, yes, def brotli\n if (chunk.length < 512) {\n if (this[ENDED]) {\n this.brotli = true\n } else {\n this[BUFFER] = chunk\n return true\n }\n } else {\n // if it's tar, it's pretty reliably not brotli, chances of\n // that happening are astronomical.\n try {\n new Header(chunk.slice(0, 512))\n this.brotli = false\n } catch (_) {\n this.brotli = true\n }\n }\n }\n\n if (this[UNZIP] === null || (this[UNZIP] === false && this.brotli)) {\n const ended = this[ENDED]\n this[ENDED] = false\n this[UNZIP] = this[UNZIP] === null\n ? new zlib.Unzip()\n : new zlib.BrotliDecompress()\n this[UNZIP].on('data', chunk => this[CONSUMECHUNK](chunk))\n this[UNZIP].on('error', er => this.abort(er))\n this[UNZIP].on('end', _ => {\n this[ENDED] = true\n this[CONSUMECHUNK]()\n })\n this[WRITING] = true\n const ret = this[UNZIP][ended ? 'end' : 'write'](chunk)\n this[WRITING] = false\n return ret\n }\n }\n\n this[WRITING] = true\n if (this[UNZIP]) {\n this[UNZIP].write(chunk)\n } else {\n this[CONSUMECHUNK](chunk)\n }\n this[WRITING] = false\n\n // return false if there's a queue, or if the current entry isn't flowing\n const ret =\n this[QUEUE].length ? false :\n this[READENTRY] ? this[READENTRY].flowing :\n true\n\n // if we have no queue, then that means a clogged READENTRY\n if (!ret && !this[QUEUE].length) {\n this[READENTRY].once('drain', _ => this.emit('drain'))\n }\n\n return ret\n }\n\n [BUFFERCONCAT] (c) {\n if (c && !this[ABORTED]) {\n this[BUFFER] = this[BUFFER] ? Buffer.concat([this[BUFFER], c]) : c\n }\n }\n\n [MAYBEEND] () {\n if (this[ENDED] &&\n !this[EMITTEDEND] &&\n !this[ABORTED] &&\n !this[CONSUMING]) {\n this[EMITTEDEND] = true\n const entry = this[WRITEENTRY]\n if (entry && entry.blockRemain) {\n // truncated, likely a damaged file\n const have = this[BUFFER] ? this[BUFFER].length : 0\n this.warn('TAR_BAD_ARCHIVE', `Truncated input (needed ${\n entry.blockRemain} more bytes, only ${have} available)`, { entry })\n if (this[BUFFER]) {\n entry.write(this[BUFFER])\n }\n entry.end()\n }\n this[EMIT](DONE)\n }\n }\n\n [CONSUMECHUNK] (chunk) {\n if (this[CONSUMING]) {\n this[BUFFERCONCAT](chunk)\n } else if (!chunk && !this[BUFFER]) {\n this[MAYBEEND]()\n } else {\n this[CONSUMING] = true\n if (this[BUFFER]) {\n this[BUFFERCONCAT](chunk)\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n } else {\n this[CONSUMECHUNKSUB](chunk)\n }\n\n while (this[BUFFER] &&\n this[BUFFER].length >= 512 &&\n !this[ABORTED] &&\n !this[SAW_EOF]) {\n const c = this[BUFFER]\n this[BUFFER] = null\n this[CONSUMECHUNKSUB](c)\n }\n this[CONSUMING] = false\n }\n\n if (!this[BUFFER] || this[ENDED]) {\n this[MAYBEEND]()\n }\n }\n\n [CONSUMECHUNKSUB] (chunk) {\n // we know that we are in CONSUMING mode, so anything written goes into\n // the buffer. Advance the position and put any remainder in the buffer.\n let position = 0\n const length = chunk.length\n while (position + 512 <= length && !this[ABORTED] && !this[SAW_EOF]) {\n switch (this[STATE]) {\n case 'begin':\n case 'header':\n this[CONSUMEHEADER](chunk, position)\n position += 512\n break\n\n case 'ignore':\n case 'body':\n position += this[CONSUMEBODY](chunk, position)\n break\n\n case 'meta':\n position += this[CONSUMEMETA](chunk, position)\n break\n\n /* istanbul ignore next */\n default:\n throw new Error('invalid state: ' + this[STATE])\n }\n }\n\n if (position < length) {\n if (this[BUFFER]) {\n this[BUFFER] = Buffer.concat([chunk.slice(position), this[BUFFER]])\n } else {\n this[BUFFER] = chunk.slice(position)\n }\n }\n }\n\n end (chunk) {\n if (!this[ABORTED]) {\n if (this[UNZIP]) {\n this[UNZIP].end(chunk)\n } else {\n this[ENDED] = true\n if (this.brotli === undefined) chunk = chunk || Buffer.alloc(0)\n this.write(chunk)\n }\n }\n }\n})\n", "'use strict'\n\n// XXX: This shares a lot in common with extract.js\n// maybe some DRY opportunity here?\n\n// tar -t\nconst hlo = require('./high-level-opt.js')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function') {\n cb = opt_, files = null, opt_ = {}\n } else if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (typeof files === 'function') {\n cb = files, files = null\n }\n\n if (!files) {\n files = []\n } else {\n files = Array.from(files)\n }\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n if (files.length) {\n filesFilter(opt, files)\n }\n\n if (!opt.noResume) {\n onentryFunction(opt)\n }\n\n return opt.file && opt.sync ? listFileSync(opt)\n : opt.file ? listFile(opt, cb)\n : list(opt)\n}\n\nconst onentryFunction = opt => {\n const onentry = opt.onentry\n opt.onentry = onentry ? e => {\n onentry(e)\n e.resume()\n } : e => e.resume()\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [stripSlash(f), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file))\n : file => mapHas(stripSlash(file))\n}\n\nconst listFileSync = opt => {\n const p = list(opt)\n const file = opt.file\n let threw = true\n let fd\n try {\n const stat = fs.statSync(file)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n if (stat.size < readSize) {\n p.end(fs.readFileSync(file))\n } else {\n let pos = 0\n const buf = Buffer.allocUnsafe(readSize)\n fd = fs.openSync(file, 'r')\n while (pos < stat.size) {\n const bytesRead = fs.readSync(fd, buf, 0, readSize, pos)\n pos += bytesRead\n p.write(buf.slice(0, bytesRead))\n }\n p.end()\n }\n threw = false\n } finally {\n if (threw && fd) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst listFile = (opt, cb) => {\n const parse = new Parser(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n parse.on('error', reject)\n parse.on('end', resolve)\n\n fs.stat(file, (er, stat) => {\n if (er) {\n reject(er)\n } else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(parse)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst list = opt => new Parser(opt)\n", "'use strict'\n\n// tar -c\nconst hlo = require('./high-level-opt.js')\n\nconst Pack = require('./pack.js')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof files === 'function') {\n cb = files\n }\n\n if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n return opt.file && opt.sync ? createFileSync(opt, files)\n : opt.file ? createFile(opt, files, cb)\n : opt.sync ? createSync(opt, files)\n : create(opt, files)\n}\n\nconst createFileSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n const stream = new fsm.WriteStreamSync(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst createFile = (opt, files, cb) => {\n const p = new Pack(opt)\n const stream = new fsm.WriteStream(opt.file, {\n mode: opt.mode || 0o666,\n })\n p.pipe(stream)\n\n const promise = new Promise((res, rej) => {\n stream.on('error', rej)\n stream.on('close', res)\n p.on('error', rej)\n })\n\n addFilesAsync(p, files)\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else {\n p.add(file)\n }\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.slice(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else {\n p.add(file)\n }\n }\n p.end()\n}\n\nconst createSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n addFilesSync(p, files)\n return p\n}\n\nconst create = (opt, files) => {\n const p = new Pack(opt)\n addFilesAsync(p, files)\n return p\n}\n", "'use strict'\n\n// tar -r\nconst hlo = require('./high-level-opt.js')\nconst Pack = require('./pack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst t = require('./list.js')\nconst path = require('path')\n\n// starting at the head of the file, read a Header\n// If the checksum is invalid, that's our position to start writing\n// If it is, jump forward by the specified size (round up to 512)\n// and try again.\n// Write the new Pack stream starting there.\n\nconst Header = require('./header.js')\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file) {\n throw new TypeError('file is required')\n }\n\n if (opt.gzip || opt.brotli || opt.file.endsWith('.br') || opt.file.endsWith('.tbr')) {\n throw new TypeError('cannot append to compressed archives')\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n return opt.sync ? replaceSync(opt, files)\n : replace(opt, files, cb)\n}\n\nconst replaceSync = (opt, files) => {\n const p = new Pack.Sync(opt)\n\n let threw = true\n let fd\n let position\n\n try {\n try {\n fd = fs.openSync(opt.file, 'r+')\n } catch (er) {\n if (er.code === 'ENOENT') {\n fd = fs.openSync(opt.file, 'w+')\n } else {\n throw er\n }\n }\n\n const st = fs.fstatSync(fd)\n const headBuf = Buffer.alloc(512)\n\n POSITION: for (position = 0; position < st.size; position += 512) {\n for (let bufPos = 0, bytes = 0; bufPos < 512; bufPos += bytes) {\n bytes = fs.readSync(\n fd, headBuf, bufPos, headBuf.length - bufPos, position + bufPos\n )\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {\n throw new Error('cannot append to compressed archives')\n }\n\n if (!bytes) {\n break POSITION\n }\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid) {\n break\n }\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > st.size) {\n break\n }\n // the 512 for the header we just parsed will be added as well\n // also jump ahead all the blocks for the body\n position += entryBlockSize\n if (opt.mtimeCache) {\n opt.mtimeCache.set(h.path, h.mtime)\n }\n }\n threw = false\n\n streamSync(opt, p, position, fd, files)\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n }\n }\n}\n\nconst streamSync = (opt, p, position, fd, files) => {\n const stream = new fsm.WriteStreamSync(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n addFilesSync(p, files)\n}\n\nconst replace = (opt, files, cb) => {\n files = Array.from(files)\n const p = new Pack(opt)\n\n const getPos = (fd, size, cb_) => {\n const cb = (er, pos) => {\n if (er) {\n fs.close(fd, _ => cb_(er))\n } else {\n cb_(null, pos)\n }\n }\n\n let position = 0\n if (size === 0) {\n return cb(null, 0)\n }\n\n let bufPos = 0\n const headBuf = Buffer.alloc(512)\n const onread = (er, bytes) => {\n if (er) {\n return cb(er)\n }\n bufPos += bytes\n if (bufPos < 512 && bytes) {\n return fs.read(\n fd, headBuf, bufPos, headBuf.length - bufPos,\n position + bufPos, onread\n )\n }\n\n if (position === 0 && headBuf[0] === 0x1f && headBuf[1] === 0x8b) {\n return cb(new Error('cannot append to compressed archives'))\n }\n\n // truncated header\n if (bufPos < 512) {\n return cb(null, position)\n }\n\n const h = new Header(headBuf)\n if (!h.cksumValid) {\n return cb(null, position)\n }\n\n const entryBlockSize = 512 * Math.ceil(h.size / 512)\n if (position + entryBlockSize + 512 > size) {\n return cb(null, position)\n }\n\n position += entryBlockSize + 512\n if (position >= size) {\n return cb(null, position)\n }\n\n if (opt.mtimeCache) {\n opt.mtimeCache.set(h.path, h.mtime)\n }\n bufPos = 0\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n fs.read(fd, headBuf, 0, 512, position, onread)\n }\n\n const promise = new Promise((resolve, reject) => {\n p.on('error', reject)\n let flag = 'r+'\n const onopen = (er, fd) => {\n if (er && er.code === 'ENOENT' && flag === 'r+') {\n flag = 'w+'\n return fs.open(opt.file, flag, onopen)\n }\n\n if (er) {\n return reject(er)\n }\n\n fs.fstat(fd, (er, st) => {\n if (er) {\n return fs.close(fd, () => reject(er))\n }\n\n getPos(fd, st.size, (er, position) => {\n if (er) {\n return reject(er)\n }\n const stream = new fsm.WriteStream(opt.file, {\n fd: fd,\n start: position,\n })\n p.pipe(stream)\n stream.on('error', reject)\n stream.on('close', resolve)\n addFilesAsync(p, files)\n })\n })\n }\n fs.open(opt.file, flag, onopen)\n })\n\n return cb ? promise.then(cb, cb) : promise\n}\n\nconst addFilesSync = (p, files) => {\n files.forEach(file => {\n if (file.charAt(0) === '@') {\n t({\n file: path.resolve(p.cwd, file.slice(1)),\n sync: true,\n noResume: true,\n onentry: entry => p.add(entry),\n })\n } else {\n p.add(file)\n }\n })\n p.end()\n}\n\nconst addFilesAsync = (p, files) => {\n while (files.length) {\n const file = files.shift()\n if (file.charAt(0) === '@') {\n return t({\n file: path.resolve(p.cwd, file.slice(1)),\n noResume: true,\n onentry: entry => p.add(entry),\n }).then(_ => addFilesAsync(p, files))\n } else {\n p.add(file)\n }\n }\n p.end()\n}\n", "'use strict'\n\n// tar -u\n\nconst hlo = require('./high-level-opt.js')\nconst r = require('./replace.js')\n// just call tar.r with the filter and mtimeCache\n\nmodule.exports = (opt_, files, cb) => {\n const opt = hlo(opt_)\n\n if (!opt.file) {\n throw new TypeError('file is required')\n }\n\n if (opt.gzip || opt.brotli || opt.file.endsWith('.br') || opt.file.endsWith('.tbr')) {\n throw new TypeError('cannot append to compressed archives')\n }\n\n if (!files || !Array.isArray(files) || !files.length) {\n throw new TypeError('no files or directories specified')\n }\n\n files = Array.from(files)\n\n mtimeFilter(opt)\n return r(opt, files, cb)\n}\n\nconst mtimeFilter = opt => {\n const filter = opt.filter\n\n if (!opt.mtimeCache) {\n opt.mtimeCache = new Map()\n }\n\n opt.filter = filter ? (path, stat) =>\n filter(path, stat) && !(opt.mtimeCache.get(path) > stat.mtime)\n : (path, stat) => !(opt.mtimeCache.get(path) > stat.mtime)\n}\n", "const { promisify } = require('util')\nconst fs = require('fs')\nconst optsArg = opts => {\n if (!opts)\n opts = { mode: 0o777, fs }\n else if (typeof opts === 'object')\n opts = { mode: 0o777, fs, ...opts }\n else if (typeof opts === 'number')\n opts = { mode: opts, fs }\n else if (typeof opts === 'string')\n opts = { mode: parseInt(opts, 8), fs }\n else\n throw new TypeError('invalid options argument')\n\n opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir\n opts.mkdirAsync = promisify(opts.mkdir)\n opts.stat = opts.stat || opts.fs.stat || fs.stat\n opts.statAsync = promisify(opts.stat)\n opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync\n opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync\n return opts\n}\nmodule.exports = optsArg\n", "const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform\nconst { resolve, parse } = require('path')\nconst pathArg = path => {\n if (/\\0/.test(path)) {\n // simulate same failure that node raises\n throw Object.assign(\n new TypeError('path must be a string without null bytes'),\n {\n path,\n code: 'ERR_INVALID_ARG_VALUE',\n }\n )\n }\n\n path = resolve(path)\n if (platform === 'win32') {\n const badWinChars = /[*|\"<>?:]/\n const {root} = parse(path)\n if (badWinChars.test(path.substr(root.length))) {\n throw Object.assign(new Error('Illegal characters in path.'), {\n path,\n code: 'EINVAL',\n })\n }\n }\n\n return path\n}\nmodule.exports = pathArg\n", "const {dirname} = require('path')\n\nconst findMade = (opts, parent, path = undefined) => {\n // we never want the 'made' return value to be a root directory\n if (path === parent)\n return Promise.resolve()\n\n return opts.statAsync(parent).then(\n st => st.isDirectory() ? path : undefined, // will fail later\n er => er.code === 'ENOENT'\n ? findMade(opts, dirname(parent), parent)\n : undefined\n )\n}\n\nconst findMadeSync = (opts, parent, path = undefined) => {\n if (path === parent)\n return undefined\n\n try {\n return opts.statSync(parent).isDirectory() ? path : undefined\n } catch (er) {\n return er.code === 'ENOENT'\n ? findMadeSync(opts, dirname(parent), parent)\n : undefined\n }\n}\n\nmodule.exports = {findMade, findMadeSync}\n", "const {dirname} = require('path')\n\nconst mkdirpManual = (path, opts, made) => {\n opts.recursive = false\n const parent = dirname(path)\n if (parent === path) {\n return opts.mkdirAsync(path, opts).catch(er => {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n })\n }\n\n return opts.mkdirAsync(path, opts).then(() => made || path, er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(parent, opts)\n .then(made => mkdirpManual(path, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n return opts.statAsync(path).then(st => {\n if (st.isDirectory())\n return made\n else\n throw er\n }, () => { throw er })\n })\n}\n\nconst mkdirpManualSync = (path, opts, made) => {\n const parent = dirname(path)\n opts.recursive = false\n\n if (parent === path) {\n try {\n return opts.mkdirSync(path, opts)\n } catch (er) {\n // swallowed by recursive implementation on posix systems\n // any other error is a failure\n if (er.code !== 'EISDIR')\n throw er\n else\n return\n }\n }\n\n try {\n opts.mkdirSync(path, opts)\n return made || path\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made))\n if (er.code !== 'EEXIST' && er.code !== 'EROFS')\n throw er\n try {\n if (!opts.statSync(path).isDirectory())\n throw er\n } catch (_) {\n throw er\n }\n }\n}\n\nmodule.exports = {mkdirpManual, mkdirpManualSync}\n", "const {dirname} = require('path')\nconst {findMade, findMadeSync} = require('./find-made.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js')\n\nconst mkdirpNative = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirAsync(path, opts)\n\n return findMade(opts, path).then(made =>\n opts.mkdirAsync(path, opts).then(() => made)\n .catch(er => {\n if (er.code === 'ENOENT')\n return mkdirpManual(path, opts)\n else\n throw er\n }))\n}\n\nconst mkdirpNativeSync = (path, opts) => {\n opts.recursive = true\n const parent = dirname(path)\n if (parent === path)\n return opts.mkdirSync(path, opts)\n\n const made = findMadeSync(opts, path)\n try {\n opts.mkdirSync(path, opts)\n return made\n } catch (er) {\n if (er.code === 'ENOENT')\n return mkdirpManualSync(path, opts)\n else\n throw er\n }\n}\n\nmodule.exports = {mkdirpNative, mkdirpNativeSync}\n", "const fs = require('fs')\n\nconst version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version\nconst versArr = version.replace(/^v/, '').split('.')\nconst hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12\n\nconst useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir\nconst useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync\n\nmodule.exports = {useNative, useNativeSync}\n", "const optsArg = require('./lib/opts-arg.js')\nconst pathArg = require('./lib/path-arg.js')\n\nconst {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js')\nconst {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js')\nconst {useNative, useNativeSync} = require('./lib/use-native.js')\n\n\nconst mkdirp = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNative(opts)\n ? mkdirpNative(path, opts)\n : mkdirpManual(path, opts)\n}\n\nconst mkdirpSync = (path, opts) => {\n path = pathArg(path)\n opts = optsArg(opts)\n return useNativeSync(opts)\n ? mkdirpNativeSync(path, opts)\n : mkdirpManualSync(path, opts)\n}\n\nmkdirp.sync = mkdirpSync\nmkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts))\nmkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts))\nmkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts))\nmkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts))\n\nmodule.exports = mkdirp\n", "'use strict'\nconst fs = require('fs')\nconst path = require('path')\n\n/* istanbul ignore next */\nconst LCHOWN = fs.lchown ? 'lchown' : 'chown'\n/* istanbul ignore next */\nconst LCHOWNSYNC = fs.lchownSync ? 'lchownSync' : 'chownSync'\n\n/* istanbul ignore next */\nconst needEISDIRHandled = fs.lchown &&\n !process.version.match(/v1[1-9]+\\./) &&\n !process.version.match(/v10\\.[6-9]/)\n\nconst lchownSync = (path, uid, gid) => {\n try {\n return fs[LCHOWNSYNC](path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst chownSync = (path, uid, gid) => {\n try {\n return fs.chownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'ENOENT')\n throw er\n }\n}\n\n/* istanbul ignore next */\nconst handleEISDIR =\n needEISDIRHandled ? (path, uid, gid, cb) => er => {\n // Node prior to v10 had a very questionable implementation of\n // fs.lchown, which would always try to call fs.open on a directory\n // Fall back to fs.chown in those cases.\n if (!er || er.code !== 'EISDIR')\n cb(er)\n else\n fs.chown(path, uid, gid, cb)\n }\n : (_, __, ___, cb) => cb\n\n/* istanbul ignore next */\nconst handleEISDirSync =\n needEISDIRHandled ? (path, uid, gid) => {\n try {\n return lchownSync(path, uid, gid)\n } catch (er) {\n if (er.code !== 'EISDIR')\n throw er\n chownSync(path, uid, gid)\n }\n }\n : (path, uid, gid) => lchownSync(path, uid, gid)\n\n// fs.readdir could only accept an options object as of node v6\nconst nodeVersion = process.version\nlet readdir = (path, options, cb) => fs.readdir(path, options, cb)\nlet readdirSync = (path, options) => fs.readdirSync(path, options)\n/* istanbul ignore next */\nif (/^v4\\./.test(nodeVersion))\n readdir = (path, options, cb) => fs.readdir(path, cb)\n\nconst chown = (cpath, uid, gid, cb) => {\n fs[LCHOWN](cpath, uid, gid, handleEISDIR(cpath, uid, gid, er => {\n // Skip ENOENT error\n cb(er && er.code !== 'ENOENT' ? er : null)\n }))\n}\n\nconst chownrKid = (p, child, uid, gid, cb) => {\n if (typeof child === 'string')\n return fs.lstat(path.resolve(p, child), (er, stats) => {\n // Skip ENOENT error\n if (er)\n return cb(er.code !== 'ENOENT' ? er : null)\n stats.name = child\n chownrKid(p, stats, uid, gid, cb)\n })\n\n if (child.isDirectory()) {\n chownr(path.resolve(p, child.name), uid, gid, er => {\n if (er)\n return cb(er)\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n })\n } else {\n const cpath = path.resolve(p, child.name)\n chown(cpath, uid, gid, cb)\n }\n}\n\n\nconst chownr = (p, uid, gid, cb) => {\n readdir(p, { withFileTypes: true }, (er, children) => {\n // any error other than ENOTDIR or ENOTSUP means it's not readable,\n // or doesn't exist. give up.\n if (er) {\n if (er.code === 'ENOENT')\n return cb()\n else if (er.code !== 'ENOTDIR' && er.code !== 'ENOTSUP')\n return cb(er)\n }\n if (er || !children.length)\n return chown(p, uid, gid, cb)\n\n let len = children.length\n let errState = null\n const then = er => {\n if (errState)\n return\n if (er)\n return cb(errState = er)\n if (-- len === 0)\n return chown(p, uid, gid, cb)\n }\n\n children.forEach(child => chownrKid(p, child, uid, gid, then))\n })\n}\n\nconst chownrKidSync = (p, child, uid, gid) => {\n if (typeof child === 'string') {\n try {\n const stats = fs.lstatSync(path.resolve(p, child))\n stats.name = child\n child = stats\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else\n throw er\n }\n }\n\n if (child.isDirectory())\n chownrSync(path.resolve(p, child.name), uid, gid)\n\n handleEISDirSync(path.resolve(p, child.name), uid, gid)\n}\n\nconst chownrSync = (p, uid, gid) => {\n let children\n try {\n children = readdirSync(p, { withFileTypes: true })\n } catch (er) {\n if (er.code === 'ENOENT')\n return\n else if (er.code === 'ENOTDIR' || er.code === 'ENOTSUP')\n return handleEISDirSync(p, uid, gid)\n else\n throw er\n }\n\n if (children && children.length)\n children.forEach(child => chownrKidSync(p, child, uid, gid))\n\n return handleEISDirSync(p, uid, gid)\n}\n\nmodule.exports = chownr\nchownr.sync = chownrSync\n", "'use strict'\n// wrapper around mkdirp for tar's needs.\n\n// TODO: This should probably be a class, not functionally\n// passing around state in a gazillion args.\n\nconst mkdirp = require('mkdirp')\nconst fs = require('fs')\nconst path = require('path')\nconst chownr = require('chownr')\nconst normPath = require('./normalize-windows-path.js')\n\nclass SymlinkError extends Error {\n constructor (symlink, path) {\n super('Cannot extract through symbolic link')\n this.path = path\n this.symlink = symlink\n }\n\n get name () {\n return 'SylinkError'\n }\n}\n\nclass CwdError extends Error {\n constructor (path, code) {\n super(code + ': Cannot cd into \\'' + path + '\\'')\n this.path = path\n this.code = code\n }\n\n get name () {\n return 'CwdError'\n }\n}\n\nconst cGet = (cache, key) => cache.get(normPath(key))\nconst cSet = (cache, key, val) => cache.set(normPath(key), val)\n\nconst checkCwd = (dir, cb) => {\n fs.stat(dir, (er, st) => {\n if (er || !st.isDirectory()) {\n er = new CwdError(dir, er && er.code || 'ENOTDIR')\n }\n cb(er)\n })\n}\n\nmodule.exports = (dir, opt, cb) => {\n dir = normPath(dir)\n\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = normPath(opt.cwd)\n\n const done = (er, created) => {\n if (er) {\n cb(er)\n } else {\n cSet(cache, dir, true)\n if (created && doChown) {\n chownr(created, uid, gid, er => done(er))\n } else if (needChmod) {\n fs.chmod(dir, mode, cb)\n } else {\n cb()\n }\n }\n }\n\n if (cache && cGet(cache, dir) === true) {\n return done()\n }\n\n if (dir === cwd) {\n return checkCwd(dir, done)\n }\n\n if (preserve) {\n return mkdirp(dir, { mode }).then(made => done(null, made), done)\n }\n\n const sub = normPath(path.relative(cwd, dir))\n const parts = sub.split('/')\n mkdir_(cwd, parts, mode, cache, unlink, cwd, null, done)\n}\n\nconst mkdir_ = (base, parts, mode, cache, unlink, cwd, created, cb) => {\n if (!parts.length) {\n return cb(null, created)\n }\n const p = parts.shift()\n const part = normPath(path.resolve(base + '/' + p))\n if (cGet(cache, part)) {\n return mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n}\n\nconst onmkdir = (part, parts, mode, cache, unlink, cwd, created, cb) => er => {\n if (er) {\n fs.lstat(part, (statEr, st) => {\n if (statEr) {\n statEr.path = statEr.path && normPath(statEr.path)\n cb(statEr)\n } else if (st.isDirectory()) {\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n } else if (unlink) {\n fs.unlink(part, er => {\n if (er) {\n return cb(er)\n }\n fs.mkdir(part, mode, onmkdir(part, parts, mode, cache, unlink, cwd, created, cb))\n })\n } else if (st.isSymbolicLink()) {\n return cb(new SymlinkError(part, part + '/' + parts.join('/')))\n } else {\n cb(er)\n }\n })\n } else {\n created = created || part\n mkdir_(part, parts, mode, cache, unlink, cwd, created, cb)\n }\n}\n\nconst checkCwdSync = dir => {\n let ok = false\n let code = 'ENOTDIR'\n try {\n ok = fs.statSync(dir).isDirectory()\n } catch (er) {\n code = er.code\n } finally {\n if (!ok) {\n throw new CwdError(dir, code)\n }\n }\n}\n\nmodule.exports.sync = (dir, opt) => {\n dir = normPath(dir)\n // if there's any overlap between mask and mode,\n // then we'll need an explicit chmod\n const umask = opt.umask\n const mode = opt.mode | 0o0700\n const needChmod = (mode & umask) !== 0\n\n const uid = opt.uid\n const gid = opt.gid\n const doChown = typeof uid === 'number' &&\n typeof gid === 'number' &&\n (uid !== opt.processUid || gid !== opt.processGid)\n\n const preserve = opt.preserve\n const unlink = opt.unlink\n const cache = opt.cache\n const cwd = normPath(opt.cwd)\n\n const done = (created) => {\n cSet(cache, dir, true)\n if (created && doChown) {\n chownr.sync(created, uid, gid)\n }\n if (needChmod) {\n fs.chmodSync(dir, mode)\n }\n }\n\n if (cache && cGet(cache, dir) === true) {\n return done()\n }\n\n if (dir === cwd) {\n checkCwdSync(cwd)\n return done()\n }\n\n if (preserve) {\n return done(mkdirp.sync(dir, mode))\n }\n\n const sub = normPath(path.relative(cwd, dir))\n const parts = sub.split('/')\n let created = null\n for (let p = parts.shift(), part = cwd;\n p && (part += '/' + p);\n p = parts.shift()) {\n part = normPath(path.resolve(part))\n if (cGet(cache, part)) {\n continue\n }\n\n try {\n fs.mkdirSync(part, mode)\n created = created || part\n cSet(cache, part, true)\n } catch (er) {\n const st = fs.lstatSync(part)\n if (st.isDirectory()) {\n cSet(cache, part, true)\n continue\n } else if (unlink) {\n fs.unlinkSync(part)\n fs.mkdirSync(part, mode)\n created = created || part\n cSet(cache, part, true)\n continue\n } else if (st.isSymbolicLink()) {\n return new SymlinkError(part, part + '/' + parts.join('/'))\n }\n }\n }\n\n return done(created)\n}\n", "// warning: extremely hot code path.\n// This has been meticulously optimized for use\n// within npm install on large package trees.\n// Do not edit without careful benchmarking.\nconst normalizeCache = Object.create(null)\nconst { hasOwnProperty } = Object.prototype\nmodule.exports = s => {\n if (!hasOwnProperty.call(normalizeCache, s)) {\n normalizeCache[s] = s.normalize('NFD')\n }\n return normalizeCache[s]\n}\n", "// A path exclusive reservation system\n// reserve([list, of, paths], fn)\n// When the fn is first in line for all its paths, it\n// is called with a cb that clears the reservation.\n//\n// Used by async unpack to avoid clobbering paths in use,\n// while still allowing maximal safe parallelization.\n\nconst assert = require('assert')\nconst normalize = require('./normalize-unicode.js')\nconst stripSlashes = require('./strip-trailing-slashes.js')\nconst { join } = require('path')\n\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nconst isWindows = platform === 'win32'\n\nmodule.exports = () => {\n // path => [function or Set]\n // A Set object means a directory reservation\n // A fn is a direct reservation on that path\n const queues = new Map()\n\n // fn => {paths:[path,...], dirs:[path, ...]}\n const reservations = new Map()\n\n // return a set of parent dirs for a given path\n // '/a/b/c/d' -> ['/', '/a', '/a/b', '/a/b/c', '/a/b/c/d']\n const getDirs = path => {\n const dirs = path.split('/').slice(0, -1).reduce((set, path) => {\n if (set.length) {\n path = join(set[set.length - 1], path)\n }\n set.push(path || '/')\n return set\n }, [])\n return dirs\n }\n\n // functions currently running\n const running = new Set()\n\n // return the queues for each path the function cares about\n // fn => {paths, dirs}\n const getQueues = fn => {\n const res = reservations.get(fn)\n /* istanbul ignore if - unpossible */\n if (!res) {\n throw new Error('function does not have any path reservations')\n }\n return {\n paths: res.paths.map(path => queues.get(path)),\n dirs: [...res.dirs].map(path => queues.get(path)),\n }\n }\n\n // check if fn is first in line for all its paths, and is\n // included in the first set for all its dir queues\n const check = fn => {\n const { paths, dirs } = getQueues(fn)\n return paths.every(q => q[0] === fn) &&\n dirs.every(q => q[0] instanceof Set && q[0].has(fn))\n }\n\n // run the function if it's first in line and not already running\n const run = fn => {\n if (running.has(fn) || !check(fn)) {\n return false\n }\n running.add(fn)\n fn(() => clear(fn))\n return true\n }\n\n const clear = fn => {\n if (!running.has(fn)) {\n return false\n }\n\n const { paths, dirs } = reservations.get(fn)\n const next = new Set()\n\n paths.forEach(path => {\n const q = queues.get(path)\n assert.equal(q[0], fn)\n if (q.length === 1) {\n queues.delete(path)\n } else {\n q.shift()\n if (typeof q[0] === 'function') {\n next.add(q[0])\n } else {\n q[0].forEach(fn => next.add(fn))\n }\n }\n })\n\n dirs.forEach(dir => {\n const q = queues.get(dir)\n assert(q[0] instanceof Set)\n if (q[0].size === 1 && q.length === 1) {\n queues.delete(dir)\n } else if (q[0].size === 1) {\n q.shift()\n\n // must be a function or else the Set would've been reused\n next.add(q[0])\n } else {\n q[0].delete(fn)\n }\n })\n running.delete(fn)\n\n next.forEach(fn => run(fn))\n return true\n }\n\n const reserve = (paths, fn) => {\n // collide on matches across case and unicode normalization\n // On windows, thanks to the magic of 8.3 shortnames, it is fundamentally\n // impossible to determine whether two paths refer to the same thing on\n // disk, without asking the kernel for a shortname.\n // So, we just pretend that every path matches every other path here,\n // effectively removing all parallelization on windows.\n paths = isWindows ? ['win32 parallelization disabled'] : paths.map(p => {\n // don't need normPath, because we skip this entirely for windows\n return stripSlashes(join(normalize(p))).toLowerCase()\n })\n\n const dirs = new Set(\n paths.map(path => getDirs(path)).reduce((a, b) => a.concat(b))\n )\n reservations.set(fn, { dirs, paths })\n paths.forEach(path => {\n const q = queues.get(path)\n if (!q) {\n queues.set(path, [fn])\n } else {\n q.push(fn)\n }\n })\n dirs.forEach(dir => {\n const q = queues.get(dir)\n if (!q) {\n queues.set(dir, [new Set([fn])])\n } else if (q[q.length - 1] instanceof Set) {\n q[q.length - 1].add(fn)\n } else {\n q.push(new Set([fn]))\n }\n })\n\n return run(fn)\n }\n\n return { check, reserve }\n}\n", "// Get the appropriate flag to use for creating files\n// We use fmap on Windows platforms for files less than\n// 512kb. This is a fairly low limit, but avoids making\n// things slower in some cases. Since most of what this\n// library is used for is extracting tarballs of many\n// relatively small files in npm packages and the like,\n// it can be a big boost on Windows platforms.\n// Only supported in Node v12.9.0 and above.\nconst platform = process.env.__FAKE_PLATFORM__ || process.platform\nconst isWindows = platform === 'win32'\nconst fs = global.__FAKE_TESTING_FS__ || require('fs')\n\n/* istanbul ignore next */\nconst { O_CREAT, O_TRUNC, O_WRONLY, UV_FS_O_FILEMAP = 0 } = fs.constants\n\nconst fMapEnabled = isWindows && !!UV_FS_O_FILEMAP\nconst fMapLimit = 512 * 1024\nconst fMapFlag = UV_FS_O_FILEMAP | O_TRUNC | O_CREAT | O_WRONLY\nmodule.exports = !fMapEnabled ? () => 'w'\n : size => size < fMapLimit ? fMapFlag : 'w'\n", "'use strict'\n\n// the PEND/UNPEND stuff tracks whether we're ready to emit end/close yet.\n// but the path reservations are required to avoid race conditions where\n// parallelized unpack ops may mess with one another, due to dependencies\n// (like a Link depending on its target) or destructive operations (like\n// clobbering an fs object to create one of a different type.)\n\nconst assert = require('assert')\nconst Parser = require('./parse.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst mkdir = require('./mkdir.js')\nconst wc = require('./winchars.js')\nconst pathReservations = require('./path-reservations.js')\nconst stripAbsolutePath = require('./strip-absolute-path.js')\nconst normPath = require('./normalize-windows-path.js')\nconst stripSlash = require('./strip-trailing-slashes.js')\nconst normalize = require('./normalize-unicode.js')\n\nconst ONENTRY = Symbol('onEntry')\nconst CHECKFS = Symbol('checkFs')\nconst CHECKFS2 = Symbol('checkFs2')\nconst PRUNECACHE = Symbol('pruneCache')\nconst ISREUSABLE = Symbol('isReusable')\nconst MAKEFS = Symbol('makeFs')\nconst FILE = Symbol('file')\nconst DIRECTORY = Symbol('directory')\nconst LINK = Symbol('link')\nconst SYMLINK = Symbol('symlink')\nconst HARDLINK = Symbol('hardlink')\nconst UNSUPPORTED = Symbol('unsupported')\nconst CHECKPATH = Symbol('checkPath')\nconst MKDIR = Symbol('mkdir')\nconst ONERROR = Symbol('onError')\nconst PENDING = Symbol('pending')\nconst PEND = Symbol('pend')\nconst UNPEND = Symbol('unpend')\nconst ENDED = Symbol('ended')\nconst MAYBECLOSE = Symbol('maybeClose')\nconst SKIP = Symbol('skip')\nconst DOCHOWN = Symbol('doChown')\nconst UID = Symbol('uid')\nconst GID = Symbol('gid')\nconst CHECKED_CWD = Symbol('checkedCwd')\nconst crypto = require('crypto')\nconst getFlag = require('./get-write-flag.js')\nconst platform = process.env.TESTING_TAR_FAKE_PLATFORM || process.platform\nconst isWindows = platform === 'win32'\nconst DEFAULT_MAX_DEPTH = 1024\n\n// Unlinks on Windows are not atomic.\n//\n// This means that if you have a file entry, followed by another\n// file entry with an identical name, and you cannot re-use the file\n// (because it's a hardlink, or because unlink:true is set, or it's\n// Windows, which does not have useful nlink values), then the unlink\n// will be committed to the disk AFTER the new file has been written\n// over the old one, deleting the new file.\n//\n// To work around this, on Windows systems, we rename the file and then\n// delete the renamed file. It's a sloppy kludge, but frankly, I do not\n// know of a better way to do this, given windows' non-atomic unlink\n// semantics.\n//\n// See: https://github.com/npm/node-tar/issues/183\n/* istanbul ignore next */\nconst unlinkFile = (path, cb) => {\n if (!isWindows) {\n return fs.unlink(path, cb)\n }\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.rename(path, name, er => {\n if (er) {\n return cb(er)\n }\n fs.unlink(name, cb)\n })\n}\n\n/* istanbul ignore next */\nconst unlinkFileSync = path => {\n if (!isWindows) {\n return fs.unlinkSync(path)\n }\n\n const name = path + '.DELETE.' + crypto.randomBytes(16).toString('hex')\n fs.renameSync(path, name)\n fs.unlinkSync(name)\n}\n\n// this.gid, entry.gid, this.processUid\nconst uint32 = (a, b, c) =>\n a === a >>> 0 ? a\n : b === b >>> 0 ? b\n : c\n\n// clear the cache if it's a case-insensitive unicode-squashing match.\n// we can't know if the current file system is case-sensitive or supports\n// unicode fully, so we check for similarity on the maximally compatible\n// representation. Err on the side of pruning, since all it's doing is\n// preventing lstats, and it's not the end of the world if we get a false\n// positive.\n// Note that on windows, we always drop the entire cache whenever a\n// symbolic link is encountered, because 8.3 filenames are impossible\n// to reason about, and collisions are hazards rather than just failures.\nconst cacheKeyNormalize = path => stripSlash(normPath(normalize(path)))\n .toLowerCase()\n\nconst pruneCache = (cache, abs) => {\n abs = cacheKeyNormalize(abs)\n for (const path of cache.keys()) {\n const pnorm = cacheKeyNormalize(path)\n if (pnorm === abs || pnorm.indexOf(abs + '/') === 0) {\n cache.delete(path)\n }\n }\n}\n\nconst dropCache = cache => {\n for (const key of cache.keys()) {\n cache.delete(key)\n }\n}\n\nclass Unpack extends Parser {\n constructor (opt) {\n if (!opt) {\n opt = {}\n }\n\n opt.ondone = _ => {\n this[ENDED] = true\n this[MAYBECLOSE]()\n }\n\n super(opt)\n\n this[CHECKED_CWD] = false\n\n this.reservations = pathReservations()\n\n this.transform = typeof opt.transform === 'function' ? opt.transform : null\n\n this.writable = true\n this.readable = false\n\n this[PENDING] = 0\n this[ENDED] = false\n\n this.dirCache = opt.dirCache || new Map()\n\n if (typeof opt.uid === 'number' || typeof opt.gid === 'number') {\n // need both or neither\n if (typeof opt.uid !== 'number' || typeof opt.gid !== 'number') {\n throw new TypeError('cannot set owner without number uid and gid')\n }\n if (opt.preserveOwner) {\n throw new TypeError(\n 'cannot preserve owner in archive and also set owner explicitly')\n }\n this.uid = opt.uid\n this.gid = opt.gid\n this.setOwner = true\n } else {\n this.uid = null\n this.gid = null\n this.setOwner = false\n }\n\n // default true for root\n if (opt.preserveOwner === undefined && typeof opt.uid !== 'number') {\n this.preserveOwner = process.getuid && process.getuid() === 0\n } else {\n this.preserveOwner = !!opt.preserveOwner\n }\n\n this.processUid = (this.preserveOwner || this.setOwner) && process.getuid ?\n process.getuid() : null\n this.processGid = (this.preserveOwner || this.setOwner) && process.getgid ?\n process.getgid() : null\n\n // prevent excessively deep nesting of subfolders\n // set to `Infinity` to remove this restriction\n this.maxDepth = typeof opt.maxDepth === 'number'\n ? opt.maxDepth\n : DEFAULT_MAX_DEPTH\n\n // mostly just for testing, but useful in some cases.\n // Forcibly trigger a chown on every entry, no matter what\n this.forceChown = opt.forceChown === true\n\n // turn ><?| in filenames into 0xf000-higher encoded forms\n this.win32 = !!opt.win32 || isWindows\n\n // do not unpack over files that are newer than what's in the archive\n this.newer = !!opt.newer\n\n // do not unpack over ANY files\n this.keep = !!opt.keep\n\n // do not set mtime/atime of extracted entries\n this.noMtime = !!opt.noMtime\n\n // allow .., absolute path entries, and unpacking through symlinks\n // without this, warn and skip .., relativize absolutes, and error\n // on symlinks in extraction path\n this.preservePaths = !!opt.preservePaths\n\n // unlink files and links before writing. This breaks existing hard\n // links, and removes symlink directories rather than erroring\n this.unlink = !!opt.unlink\n\n this.cwd = normPath(path.resolve(opt.cwd || process.cwd()))\n this.strip = +opt.strip || 0\n // if we're not chmodding, then we don't need the process umask\n this.processUmask = opt.noChmod ? 0 : process.umask()\n this.umask = typeof opt.umask === 'number' ? opt.umask : this.processUmask\n\n // default mode for dirs created as parents\n this.dmode = opt.dmode || (0o0777 & (~this.umask))\n this.fmode = opt.fmode || (0o0666 & (~this.umask))\n\n this.on('entry', entry => this[ONENTRY](entry))\n }\n\n // a bad or damaged archive is a warning for Parser, but an error\n // when extracting. Mark those errors as unrecoverable, because\n // the Unpack contract cannot be met.\n warn (code, msg, data = {}) {\n if (code === 'TAR_BAD_ARCHIVE' || code === 'TAR_ABORT') {\n data.recoverable = false\n }\n return super.warn(code, msg, data)\n }\n\n [MAYBECLOSE] () {\n if (this[ENDED] && this[PENDING] === 0) {\n this.emit('prefinish')\n this.emit('finish')\n this.emit('end')\n }\n }\n\n [CHECKPATH] (entry) {\n const p = normPath(entry.path)\n const parts = p.split('/')\n\n if (this.strip) {\n if (parts.length < this.strip) {\n return false\n }\n if (entry.type === 'Link') {\n const linkparts = normPath(entry.linkpath).split('/')\n if (linkparts.length >= this.strip) {\n entry.linkpath = linkparts.slice(this.strip).join('/')\n } else {\n return false\n }\n }\n parts.splice(0, this.strip)\n entry.path = parts.join('/')\n }\n\n if (isFinite(this.maxDepth) && parts.length > this.maxDepth) {\n this.warn('TAR_ENTRY_ERROR', 'path excessively deep', {\n entry,\n path: p,\n depth: parts.length,\n maxDepth: this.maxDepth,\n })\n return false\n }\n\n if (!this.preservePaths) {\n if (parts.includes('..') || isWindows && /^[a-z]:\\.\\.$/i.test(parts[0])) {\n this.warn('TAR_ENTRY_ERROR', `path contains '..'`, {\n entry,\n path: p,\n })\n return false\n }\n\n // strip off the root\n const [root, stripped] = stripAbsolutePath(p)\n if (root) {\n entry.path = stripped\n this.warn('TAR_ENTRY_INFO', `stripping ${root} from absolute path`, {\n entry,\n path: p,\n })\n }\n }\n\n if (path.isAbsolute(entry.path)) {\n entry.absolute = normPath(path.resolve(entry.path))\n } else {\n entry.absolute = normPath(path.resolve(this.cwd, entry.path))\n }\n\n // if we somehow ended up with a path that escapes the cwd, and we are\n // not in preservePaths mode, then something is fishy! This should have\n // been prevented above, so ignore this for coverage.\n /* istanbul ignore if - defense in depth */\n if (!this.preservePaths &&\n entry.absolute.indexOf(this.cwd + '/') !== 0 &&\n entry.absolute !== this.cwd) {\n this.warn('TAR_ENTRY_ERROR', 'path escaped extraction target', {\n entry,\n path: normPath(entry.path),\n resolvedPath: entry.absolute,\n cwd: this.cwd,\n })\n return false\n }\n\n // an archive can set properties on the extraction directory, but it\n // may not replace the cwd with a different kind of thing entirely.\n if (entry.absolute === this.cwd &&\n entry.type !== 'Directory' &&\n entry.type !== 'GNUDumpDir') {\n return false\n }\n\n // only encode : chars that aren't drive letter indicators\n if (this.win32) {\n const { root: aRoot } = path.win32.parse(entry.absolute)\n entry.absolute = aRoot + wc.encode(entry.absolute.slice(aRoot.length))\n const { root: pRoot } = path.win32.parse(entry.path)\n entry.path = pRoot + wc.encode(entry.path.slice(pRoot.length))\n }\n\n return true\n }\n\n [ONENTRY] (entry) {\n if (!this[CHECKPATH](entry)) {\n return entry.resume()\n }\n\n assert.equal(typeof entry.absolute, 'string')\n\n switch (entry.type) {\n case 'Directory':\n case 'GNUDumpDir':\n if (entry.mode) {\n entry.mode = entry.mode | 0o700\n }\n\n // eslint-disable-next-line no-fallthrough\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n case 'Link':\n case 'SymbolicLink':\n return this[CHECKFS](entry)\n\n case 'CharacterDevice':\n case 'BlockDevice':\n case 'FIFO':\n default:\n return this[UNSUPPORTED](entry)\n }\n }\n\n [ONERROR] (er, entry) {\n // Cwd has to exist, or else nothing works. That's serious.\n // Other errors are warnings, which raise the error in strict\n // mode, but otherwise continue on.\n if (er.name === 'CwdError') {\n this.emit('error', er)\n } else {\n this.warn('TAR_ENTRY_ERROR', er, { entry })\n this[UNPEND]()\n entry.resume()\n }\n }\n\n [MKDIR] (dir, mode, cb) {\n mkdir(normPath(dir), {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n noChmod: this.noChmod,\n }, cb)\n }\n\n [DOCHOWN] (entry) {\n // in preserve owner mode, chown if the entry doesn't match process\n // in set owner mode, chown if setting doesn't match process\n return this.forceChown ||\n this.preserveOwner &&\n (typeof entry.uid === 'number' && entry.uid !== this.processUid ||\n typeof entry.gid === 'number' && entry.gid !== this.processGid)\n ||\n (typeof this.uid === 'number' && this.uid !== this.processUid ||\n typeof this.gid === 'number' && this.gid !== this.processGid)\n }\n\n [UID] (entry) {\n return uint32(this.uid, entry.uid, this.processUid)\n }\n\n [GID] (entry) {\n return uint32(this.gid, entry.gid, this.processGid)\n }\n\n [FILE] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.fmode\n const stream = new fsm.WriteStream(entry.absolute, {\n flags: getFlag(entry.size),\n mode: mode,\n autoClose: false,\n })\n stream.on('error', er => {\n if (stream.fd) {\n fs.close(stream.fd, () => {})\n }\n\n // flush all the data out so that we aren't left hanging\n // if the error wasn't actually fatal. otherwise the parse\n // is blocked, and we never proceed.\n stream.write = () => true\n this[ONERROR](er, entry)\n fullyDone()\n })\n\n let actions = 1\n const done = er => {\n if (er) {\n /* istanbul ignore else - we should always have a fd by now */\n if (stream.fd) {\n fs.close(stream.fd, () => {})\n }\n\n this[ONERROR](er, entry)\n fullyDone()\n return\n }\n\n if (--actions === 0) {\n fs.close(stream.fd, er => {\n if (er) {\n this[ONERROR](er, entry)\n } else {\n this[UNPEND]()\n }\n fullyDone()\n })\n }\n }\n\n stream.on('finish', _ => {\n // if futimes fails, try utimes\n // if utimes fails, fail with the original error\n // same for fchown/chown\n const abs = entry.absolute\n const fd = stream.fd\n\n if (entry.mtime && !this.noMtime) {\n actions++\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n fs.futimes(fd, atime, mtime, er =>\n er ? fs.utimes(abs, atime, mtime, er2 => done(er2 && er))\n : done())\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n fs.fchown(fd, uid, gid, er =>\n er ? fs.chown(abs, uid, gid, er2 => done(er2 && er))\n : done())\n }\n\n done()\n })\n\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => {\n this[ONERROR](er, entry)\n fullyDone()\n })\n entry.pipe(tx)\n }\n tx.pipe(stream)\n }\n\n [DIRECTORY] (entry, fullyDone) {\n const mode = entry.mode & 0o7777 || this.dmode\n this[MKDIR](entry.absolute, mode, er => {\n if (er) {\n this[ONERROR](er, entry)\n fullyDone()\n return\n }\n\n let actions = 1\n const done = _ => {\n if (--actions === 0) {\n fullyDone()\n this[UNPEND]()\n entry.resume()\n }\n }\n\n if (entry.mtime && !this.noMtime) {\n actions++\n fs.utimes(entry.absolute, entry.atime || new Date(), entry.mtime, done)\n }\n\n if (this[DOCHOWN](entry)) {\n actions++\n fs.chown(entry.absolute, this[UID](entry), this[GID](entry), done)\n }\n\n done()\n })\n }\n\n [UNSUPPORTED] (entry) {\n entry.unsupported = true\n this.warn('TAR_ENTRY_UNSUPPORTED',\n `unsupported entry type: ${entry.type}`, { entry })\n entry.resume()\n }\n\n [SYMLINK] (entry, done) {\n this[LINK](entry, entry.linkpath, 'symlink', done)\n }\n\n [HARDLINK] (entry, done) {\n const linkpath = normPath(path.resolve(this.cwd, entry.linkpath))\n this[LINK](entry, linkpath, 'link', done)\n }\n\n [PEND] () {\n this[PENDING]++\n }\n\n [UNPEND] () {\n this[PENDING]--\n this[MAYBECLOSE]()\n }\n\n [SKIP] (entry) {\n this[UNPEND]()\n entry.resume()\n }\n\n // Check if we can reuse an existing filesystem entry safely and\n // overwrite it, rather than unlinking and recreating\n // Windows doesn't report a useful nlink, so we just never reuse entries\n [ISREUSABLE] (entry, st) {\n return entry.type === 'File' &&\n !this.unlink &&\n st.isFile() &&\n st.nlink <= 1 &&\n !isWindows\n }\n\n // check if a thing is there, and if so, try to clobber it\n [CHECKFS] (entry) {\n this[PEND]()\n const paths = [entry.path]\n if (entry.linkpath) {\n paths.push(entry.linkpath)\n }\n this.reservations.reserve(paths, done => this[CHECKFS2](entry, done))\n }\n\n [PRUNECACHE] (entry) {\n // if we are not creating a directory, and the path is in the dirCache,\n // then that means we are about to delete the directory we created\n // previously, and it is no longer going to be a directory, and neither\n // is any of its children.\n // If a symbolic link is encountered, all bets are off. There is no\n // reasonable way to sanitize the cache in such a way we will be able to\n // avoid having filesystem collisions. If this happens with a non-symlink\n // entry, it'll just fail to unpack, but a symlink to a directory, using an\n // 8.3 shortname or certain unicode attacks, can evade detection and lead\n // to arbitrary writes to anywhere on the system.\n if (entry.type === 'SymbolicLink') {\n dropCache(this.dirCache)\n } else if (entry.type !== 'Directory') {\n pruneCache(this.dirCache, entry.absolute)\n }\n }\n\n [CHECKFS2] (entry, fullyDone) {\n this[PRUNECACHE](entry)\n\n const done = er => {\n this[PRUNECACHE](entry)\n fullyDone(er)\n }\n\n const checkCwd = () => {\n this[MKDIR](this.cwd, this.dmode, er => {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n this[CHECKED_CWD] = true\n start()\n })\n }\n\n const start = () => {\n if (entry.absolute !== this.cwd) {\n const parent = normPath(path.dirname(entry.absolute))\n if (parent !== this.cwd) {\n return this[MKDIR](parent, this.dmode, er => {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n afterMakeParent()\n })\n }\n }\n afterMakeParent()\n }\n\n const afterMakeParent = () => {\n fs.lstat(entry.absolute, (lstatEr, st) => {\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n this[SKIP](entry)\n done()\n return\n }\n if (lstatEr || this[ISREUSABLE](entry, st)) {\n return this[MAKEFS](null, entry, done)\n }\n\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n const needChmod = !this.noChmod &&\n entry.mode &&\n (st.mode & 0o7777) !== entry.mode\n const afterChmod = er => this[MAKEFS](er, entry, done)\n if (!needChmod) {\n return afterChmod()\n }\n return fs.chmod(entry.absolute, entry.mode, afterChmod)\n }\n // Not a dir entry, have to remove it.\n // NB: the only way to end up with an entry that is the cwd\n // itself, in such a way that == does not detect, is a\n // tricky windows absolute path with UNC or 8.3 parts (and\n // preservePaths:true, or else it will have been stripped).\n // In that case, the user has opted out of path protections\n // explicitly, so if they blow away the cwd, c'est la vie.\n if (entry.absolute !== this.cwd) {\n return fs.rmdir(entry.absolute, er =>\n this[MAKEFS](er, entry, done))\n }\n }\n\n // not a dir, and not reusable\n // don't remove if the cwd, we want that error\n if (entry.absolute === this.cwd) {\n return this[MAKEFS](null, entry, done)\n }\n\n unlinkFile(entry.absolute, er =>\n this[MAKEFS](er, entry, done))\n })\n }\n\n if (this[CHECKED_CWD]) {\n start()\n } else {\n checkCwd()\n }\n }\n\n [MAKEFS] (er, entry, done) {\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n\n switch (entry.type) {\n case 'File':\n case 'OldFile':\n case 'ContiguousFile':\n return this[FILE](entry, done)\n\n case 'Link':\n return this[HARDLINK](entry, done)\n\n case 'SymbolicLink':\n return this[SYMLINK](entry, done)\n\n case 'Directory':\n case 'GNUDumpDir':\n return this[DIRECTORY](entry, done)\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n // XXX: get the type ('symlink' or 'junction') for windows\n fs[link](linkpath, entry.absolute, er => {\n if (er) {\n this[ONERROR](er, entry)\n } else {\n this[UNPEND]()\n entry.resume()\n }\n done()\n })\n }\n}\n\nconst callSync = fn => {\n try {\n return [null, fn()]\n } catch (er) {\n return [er, null]\n }\n}\nclass UnpackSync extends Unpack {\n [MAKEFS] (er, entry) {\n return super[MAKEFS](er, entry, () => {})\n }\n\n [CHECKFS] (entry) {\n this[PRUNECACHE](entry)\n\n if (!this[CHECKED_CWD]) {\n const er = this[MKDIR](this.cwd, this.dmode)\n if (er) {\n return this[ONERROR](er, entry)\n }\n this[CHECKED_CWD] = true\n }\n\n // don't bother to make the parent if the current entry is the cwd,\n // we've already checked it.\n if (entry.absolute !== this.cwd) {\n const parent = normPath(path.dirname(entry.absolute))\n if (parent !== this.cwd) {\n const mkParent = this[MKDIR](parent, this.dmode)\n if (mkParent) {\n return this[ONERROR](mkParent, entry)\n }\n }\n }\n\n const [lstatEr, st] = callSync(() => fs.lstatSync(entry.absolute))\n if (st && (this.keep || this.newer && st.mtime > entry.mtime)) {\n return this[SKIP](entry)\n }\n\n if (lstatEr || this[ISREUSABLE](entry, st)) {\n return this[MAKEFS](null, entry)\n }\n\n if (st.isDirectory()) {\n if (entry.type === 'Directory') {\n const needChmod = !this.noChmod &&\n entry.mode &&\n (st.mode & 0o7777) !== entry.mode\n const [er] = needChmod ? callSync(() => {\n fs.chmodSync(entry.absolute, entry.mode)\n }) : []\n return this[MAKEFS](er, entry)\n }\n // not a dir entry, have to remove it\n const [er] = callSync(() => fs.rmdirSync(entry.absolute))\n this[MAKEFS](er, entry)\n }\n\n // not a dir, and not reusable.\n // don't remove if it's the cwd, since we want that error.\n const [er] = entry.absolute === this.cwd ? []\n : callSync(() => unlinkFileSync(entry.absolute))\n this[MAKEFS](er, entry)\n }\n\n [FILE] (entry, done) {\n const mode = entry.mode & 0o7777 || this.fmode\n\n const oner = er => {\n let closeError\n try {\n fs.closeSync(fd)\n } catch (e) {\n closeError = e\n }\n if (er || closeError) {\n this[ONERROR](er || closeError, entry)\n }\n done()\n }\n\n let fd\n try {\n fd = fs.openSync(entry.absolute, getFlag(entry.size), mode)\n } catch (er) {\n return oner(er)\n }\n const tx = this.transform ? this.transform(entry) || entry : entry\n if (tx !== entry) {\n tx.on('error', er => this[ONERROR](er, entry))\n entry.pipe(tx)\n }\n\n tx.on('data', chunk => {\n try {\n fs.writeSync(fd, chunk, 0, chunk.length)\n } catch (er) {\n oner(er)\n }\n })\n\n tx.on('end', _ => {\n let er = null\n // try both, falling futimes back to utimes\n // if either fails, handle the first error\n if (entry.mtime && !this.noMtime) {\n const atime = entry.atime || new Date()\n const mtime = entry.mtime\n try {\n fs.futimesSync(fd, atime, mtime)\n } catch (futimeser) {\n try {\n fs.utimesSync(entry.absolute, atime, mtime)\n } catch (utimeser) {\n er = futimeser\n }\n }\n }\n\n if (this[DOCHOWN](entry)) {\n const uid = this[UID](entry)\n const gid = this[GID](entry)\n\n try {\n fs.fchownSync(fd, uid, gid)\n } catch (fchowner) {\n try {\n fs.chownSync(entry.absolute, uid, gid)\n } catch (chowner) {\n er = er || fchowner\n }\n }\n }\n\n oner(er)\n })\n }\n\n [DIRECTORY] (entry, done) {\n const mode = entry.mode & 0o7777 || this.dmode\n const er = this[MKDIR](entry.absolute, mode)\n if (er) {\n this[ONERROR](er, entry)\n done()\n return\n }\n if (entry.mtime && !this.noMtime) {\n try {\n fs.utimesSync(entry.absolute, entry.atime || new Date(), entry.mtime)\n } catch (er) {}\n }\n if (this[DOCHOWN](entry)) {\n try {\n fs.chownSync(entry.absolute, this[UID](entry), this[GID](entry))\n } catch (er) {}\n }\n done()\n entry.resume()\n }\n\n [MKDIR] (dir, mode) {\n try {\n return mkdir.sync(normPath(dir), {\n uid: this.uid,\n gid: this.gid,\n processUid: this.processUid,\n processGid: this.processGid,\n umask: this.processUmask,\n preserve: this.preservePaths,\n unlink: this.unlink,\n cache: this.dirCache,\n cwd: this.cwd,\n mode: mode,\n })\n } catch (er) {\n return er\n }\n }\n\n [LINK] (entry, linkpath, link, done) {\n try {\n fs[link + 'Sync'](linkpath, entry.absolute)\n done()\n entry.resume()\n } catch (er) {\n return this[ONERROR](er, entry)\n }\n }\n}\n\nUnpack.Sync = UnpackSync\nmodule.exports = Unpack\n", "'use strict'\n\n// tar -x\nconst hlo = require('./high-level-opt.js')\nconst Unpack = require('./unpack.js')\nconst fs = require('fs')\nconst fsm = require('fs-minipass')\nconst path = require('path')\nconst stripSlash = require('./strip-trailing-slashes.js')\n\nmodule.exports = (opt_, files, cb) => {\n if (typeof opt_ === 'function') {\n cb = opt_, files = null, opt_ = {}\n } else if (Array.isArray(opt_)) {\n files = opt_, opt_ = {}\n }\n\n if (typeof files === 'function') {\n cb = files, files = null\n }\n\n if (!files) {\n files = []\n } else {\n files = Array.from(files)\n }\n\n const opt = hlo(opt_)\n\n if (opt.sync && typeof cb === 'function') {\n throw new TypeError('callback not supported for sync tar functions')\n }\n\n if (!opt.file && typeof cb === 'function') {\n throw new TypeError('callback only supported with file option')\n }\n\n if (files.length) {\n filesFilter(opt, files)\n }\n\n return opt.file && opt.sync ? extractFileSync(opt)\n : opt.file ? extractFile(opt, cb)\n : opt.sync ? extractSync(opt)\n : extract(opt)\n}\n\n// construct a filter that limits the file entries listed\n// include child entries if a dir is included\nconst filesFilter = (opt, files) => {\n const map = new Map(files.map(f => [stripSlash(f), true]))\n const filter = opt.filter\n\n const mapHas = (file, r) => {\n const root = r || path.parse(file).root || '.'\n const ret = file === root ? false\n : map.has(file) ? map.get(file)\n : mapHas(path.dirname(file), root)\n\n map.set(file, ret)\n return ret\n }\n\n opt.filter = filter\n ? (file, entry) => filter(file, entry) && mapHas(stripSlash(file))\n : file => mapHas(stripSlash(file))\n}\n\nconst extractFileSync = opt => {\n const u = new Unpack.Sync(opt)\n\n const file = opt.file\n const stat = fs.statSync(file)\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n const stream = new fsm.ReadStreamSync(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.pipe(u)\n}\n\nconst extractFile = (opt, cb) => {\n const u = new Unpack(opt)\n const readSize = opt.maxReadSize || 16 * 1024 * 1024\n\n const file = opt.file\n const p = new Promise((resolve, reject) => {\n u.on('error', reject)\n u.on('close', resolve)\n\n // This trades a zero-byte read() syscall for a stat\n // However, it will usually result in less memory allocation\n fs.stat(file, (er, stat) => {\n if (er) {\n reject(er)\n } else {\n const stream = new fsm.ReadStream(file, {\n readSize: readSize,\n size: stat.size,\n })\n stream.on('error', reject)\n stream.pipe(u)\n }\n })\n })\n return cb ? p.then(cb, cb) : p\n}\n\nconst extractSync = opt => new Unpack.Sync(opt)\n\nconst extract = opt => new Unpack(opt)\n", "'use strict'\n\n// high-level commands\nexports.c = exports.create = require('./lib/create.js')\nexports.r = exports.replace = require('./lib/replace.js')\nexports.t = exports.list = require('./lib/list.js')\nexports.u = exports.update = require('./lib/update.js')\nexports.x = exports.extract = require('./lib/extract.js')\n\n// classes\nexports.Pack = require('./lib/pack.js')\nexports.Unpack = require('./lib/unpack.js')\nexports.Parse = require('./lib/parse.js')\nexports.ReadEntry = require('./lib/read-entry.js')\nexports.WriteEntry = require('./lib/write-entry.js')\nexports.Header = require('./lib/header.js')\nexports.Pax = require('./lib/pax.js')\nexports.types = require('./lib/types.js')\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", "const 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", "const {\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 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 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\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\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 identifer, 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", "// 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", "const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\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", "const 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')\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 return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\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('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 // 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 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\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 (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\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 (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\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", "const 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", "const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n", "const 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", "const 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", "const 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 // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\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 preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n", "const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "const 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", "const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "const 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", "const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "const 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", "const 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\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\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.format()\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\n .trim()\n .split(/\\s+/)\n .join(' ')\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.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\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('lru-cache')\nconst cache = new LRU({ max: 1000 })\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 t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\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 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\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 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 <${+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 <${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 }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${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 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\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\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", "const 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", "const 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", "const 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", "const 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", "const 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", "const 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", "const 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", "const 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", "// 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", "const 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", "const 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", "// 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", "const 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 GT.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 === '>=' && !satisfies(gt.semver, String(c), options)) {\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 === '<=' && !satisfies(lt.semver, String(c), options)) {\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", "// 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 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 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", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n", "module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n", "var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n", "const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n", "'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n", "'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n", "'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(\\\\*)\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(\\\\*)$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n", "'use strict';\nmodule.exports = /^#!(.*)/;\n", "'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n", "'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n", "'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n", "'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed, 'spawn');\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n", "'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n", "'use strict';\n\nconst { PassThrough } = require('stream');\n\nmodule.exports = function (/*streams...*/) {\n var sources = []\n var output = new PassThrough({objectMode: true})\n\n output.setMaxListeners(0)\n\n output.add = add\n output.isEmpty = isEmpty\n\n output.on('unpipe', remove)\n\n Array.prototype.slice.call(arguments).forEach(add)\n\n return output\n\n function add (source) {\n if (Array.isArray(source)) {\n source.forEach(add)\n return this\n }\n\n sources.push(source);\n source.once('end', remove.bind(null, source))\n source.once('error', output.emit.bind(output, 'error'))\n source.pipe(output, {end: false})\n return this\n }\n\n function isEmpty () {\n return sources.length == 0;\n }\n\n function remove (source) {\n sources = sources.filter(function (it) { return it !== source })\n if (!sources.length && output.readable) { output.end() }\n }\n}\n", "/* eslint-disable no-console -- this is a cli tool */\n\nimport { existsSync, createWriteStream, readFileSync, promises as fs } from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { ArgumentParser } from \"argparse\";\nimport { findUp } from \"find-up\";\nimport tmp from \"tmp\";\nimport { stylish } from \"@html-validate/stylish\";\nimport { setupBlacklist } from \"./blacklist\";\nimport { type VerifyOptions, verify } from \"./verify\";\nimport { type PackageJson } from \"./types\";\nimport { tarballLocation } from \"./tarball-location\";\nimport { type TarballMeta, getFileContent } from \"./tarball\";\nimport { setCacheDirecory } from \"./utils/persistent-cache\";\n\nconst pkgFilepath = fileURLToPath(new URL(\"../package.json\", import.meta.url));\nconst { version } = JSON.parse(readFileSync(pkgFilepath, \"utf-8\")) as { version: string };\n\nconst PACKAGE_JSON = \"package.json\";\n\ninterface ParsedArgs {\n\tcache?: string;\n\tpkgfile: string;\n\ttarball?: string;\n\tignore_missing_fields?: boolean;\n\tallow_types_dependencies?: boolean;\n}\n\ninterface GetPackageJsonResults {\n\tpkg: PackageJson;\n\tpkgPath: string;\n}\n\nasync function preloadStdin(): Promise<string> {\n\treturn new Promise((resolve, reject) => {\n\t\ttmp.file((err, path, fd) => {\n\t\t\tif (err) {\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst st = createWriteStream(\"\", { fd, autoClose: true });\n\t\t\tprocess.stdin.pipe(st);\n\t\t\tst.on(\"finish\", () => {\n\t\t\t\tresolve(path);\n\t\t\t});\n\t\t\tst.on(\"error\", (err) => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t});\n}\n\nasync function getPackageJson(\n\targs: ParsedArgs,\n\tregenerateReportName: boolean,\n): Promise<GetPackageJsonResults | { pkg: undefined; pkgPath: undefined }> {\n\t/* get from explicit path passed as argument */\n\tif (args.pkgfile) {\n\t\treturn {\n\t\t\tpkg: JSON.parse(await fs.readFile(args.pkgfile, \"utf-8\")) as PackageJson,\n\t\t\tpkgPath: args.pkgfile,\n\t\t};\n\t}\n\n\t/* extract package.json from explicit tarball location */\n\tif (args.tarball) {\n\t\tconst contents = await getFileContent({ filePath: args.tarball }, [PACKAGE_JSON]);\n\t\tconst pkg = JSON.parse(contents[PACKAGE_JSON].toString(\"utf-8\")) as PackageJson;\n\t\treturn {\n\t\t\tpkg,\n\t\t\tpkgPath: path.join(\n\t\t\t\tregenerateReportName ? `${pkg.name}-${pkg.version}.tgz` : args.tarball,\n\t\t\t\tPACKAGE_JSON,\n\t\t\t),\n\t\t};\n\t}\n\n\t/* try to locate package.json from file structure */\n\tconst pkgPath = await findUp(PACKAGE_JSON);\n\tif (pkgPath) {\n\t\tconst relPath = path.relative(process.cwd(), pkgPath);\n\t\treturn {\n\t\t\tpkg: JSON.parse(await fs.readFile(relPath, \"utf-8\")) as PackageJson,\n\t\t\tpkgPath: relPath,\n\t\t};\n\t}\n\n\treturn { pkg: undefined, pkgPath: undefined };\n}\n\nasync function run(): Promise<void> {\n\tconst parser = new ArgumentParser({\n\t\tdescription: \"Opiniated linter for NPM package tarball and package.json metadata\",\n\t});\n\n\tparser.add_argument(\"-v\", \"--version\", { action: \"version\", version });\n\tparser.add_argument(\"-t\", \"--tarball\", { help: \"specify tarball location\" });\n\tparser.add_argument(\"-p\", \"--pkgfile\", { help: \"specify package.json location\" });\n\tparser.add_argument(\"--cache\", { help: \"specify cache directory\" });\n\tparser.add_argument(\"--allow-types-dependencies\", {\n\t\taction: \"store_true\",\n\t\thelp: \"allow dependencies to `@types/*`\",\n\t});\n\tparser.add_argument(\"--ignore-missing-fields\", {\n\t\taction: \"store_true\",\n\t\thelp: \"ignore errors for missing fields (but still checks for empty and valid)\",\n\t});\n\n\tconst args = parser.parse_args() as ParsedArgs;\n\n\tif (args.cache) {\n\t\tawait setCacheDirecory(args.cache);\n\t}\n\n\t/* this library assumes the file source can be randomly accessed but with\n\t * stdin this is not possible so stdin is read into a temporary file which is\n\t * used instead */\n\tlet regenerateReportName = false;\n\tif (args.tarball === \"-\") {\n\t\targs.tarball = await preloadStdin();\n\t\tregenerateReportName = true;\n\t}\n\n\tconst { pkg, pkgPath } = await getPackageJson(args, regenerateReportName);\n\n\tif (!pkg) {\n\t\tconsole.error(\"Failed to locate package.json and no location was specificed with `--pkgfile'\");\n\t\tprocess.exitCode = 1;\n\t\treturn;\n\t}\n\n\tconst tarball: TarballMeta = {\n\t\tfilePath: args.tarball ?? tarballLocation(pkg, pkgPath),\n\t\treportPath: regenerateReportName ? `${pkg.name}-${pkg.version}.tgz` : undefined,\n\t};\n\tif (!existsSync(tarball.filePath)) {\n\t\tconsole.error(`\"${tarball.filePath}\" does not exist, did you forget to run \\`npm pack'?`);\n\t\tprocess.exitCode = 1;\n\t\treturn;\n\t}\n\n\tsetupBlacklist(pkg.name);\n\n\tconst options: VerifyOptions = {\n\t\tallowTypesDependencies: args.allow_types_dependencies,\n\t\tignoreMissingFields: args.ignore_missing_fields,\n\t};\n\n\tconst results = await verify(pkg, pkgPath, tarball, options);\n\tconst output = stylish(results);\n\tprocess.stdout.write(output);\n\n\tconst totalErrors = results.reduce((sum, result) => {\n\t\treturn sum + result.errorCount;\n\t}, 0);\n\n\tprocess.exitCode = totalErrors > 0 ? 1 : 0;\n}\n\nrun().catch((err) => {\n\tconsole.error(err);\n\tprocess.exitCode = 1;\n});\n", "import path from 'node:path';\nimport {locatePath, locatePathSync} from 'locate-path';\nimport {toPath} from 'unicorn-magic';\n\nexport const findUpStop = Symbol('findUpStop');\n\nexport async function findUpMultiple(name, options = {}) {\n\tlet directory = path.resolve(toPath(options.cwd) ?? '');\n\tconst {root} = path.parse(directory);\n\tconst stopAt = path.resolve(directory, toPath(options.stopAt ?? root));\n\tconst limit = options.limit ?? Number.POSITIVE_INFINITY;\n\tconst paths = [name].flat();\n\n\tconst runMatcher = async locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePath(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = await name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePath([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\tconst matches = [];\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst foundPath = await runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === findUpStop) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\tmatches.push(path.resolve(directory, foundPath));\n\t\t}\n\n\t\tif (directory === stopAt || matches.length >= limit) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n\n\treturn matches;\n}\n\nexport function findUpMultipleSync(name, options = {}) {\n\tlet directory = path.resolve(toPath(options.cwd) ?? '');\n\tconst {root} = path.parse(directory);\n\tconst stopAt = path.resolve(directory, toPath(options.stopAt) ?? root);\n\tconst limit = options.limit ?? Number.POSITIVE_INFINITY;\n\tconst paths = [name].flat();\n\n\tconst runMatcher = locateOptions => {\n\t\tif (typeof name !== 'function') {\n\t\t\treturn locatePathSync(paths, locateOptions);\n\t\t}\n\n\t\tconst foundPath = name(locateOptions.cwd);\n\t\tif (typeof foundPath === 'string') {\n\t\t\treturn locatePathSync([foundPath], locateOptions);\n\t\t}\n\n\t\treturn foundPath;\n\t};\n\n\tconst matches = [];\n\t// eslint-disable-next-line no-constant-condition\n\twhile (true) {\n\t\tconst foundPath = runMatcher({...options, cwd: directory});\n\n\t\tif (foundPath === findUpStop) {\n\t\t\tbreak;\n\t\t}\n\n\t\tif (foundPath) {\n\t\t\tmatches.push(path.resolve(directory, foundPath));\n\t\t}\n\n\t\tif (directory === stopAt || matches.length >= limit) {\n\t\t\tbreak;\n\t\t}\n\n\t\tdirectory = path.dirname(directory);\n\t}\n\n\treturn matches;\n}\n\nexport async function findUp(name, options = {}) {\n\tconst matches = await findUpMultiple(name, {...options, limit: 1});\n\treturn matches[0];\n}\n\nexport function findUpSync(name, options = {}) {\n\tconst matches = findUpMultipleSync(name, {...options, limit: 1});\n\treturn matches[0];\n}\n\nexport {\n\tpathExists,\n\tpathExistsSync,\n} from 'path-exists';\n", "import process from 'node:process';\nimport path from 'node:path';\nimport fs, {promises as fsPromises} from 'node:fs';\nimport {fileURLToPath} from 'node:url';\nimport pLocate from 'p-locate';\n\nconst typeMappings = {\n\tdirectory: 'isDirectory',\n\tfile: 'isFile',\n};\n\nfunction checkType(type) {\n\tif (Object.hasOwnProperty.call(typeMappings, type)) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => stat[typeMappings[type]]();\n\nconst toPath = urlOrPath => urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n\nexport async function locatePath(\n\tpaths,\n\t{\n\t\tcwd = process.cwd(),\n\t\ttype = 'file',\n\t\tallowSymlinks = true,\n\t\tconcurrency,\n\t\tpreserveOrder,\n\t} = {},\n) {\n\tcheckType(type);\n\tcwd = toPath(cwd);\n\n\tconst statFunction = allowSymlinks ? fsPromises.stat : fsPromises.lstat;\n\n\treturn pLocate(paths, async path_ => {\n\t\ttry {\n\t\t\tconst stat = await statFunction(path.resolve(cwd, path_));\n\t\t\treturn matchType(type, stat);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}, {concurrency, preserveOrder});\n}\n\nexport function locatePathSync(\n\tpaths,\n\t{\n\t\tcwd = process.cwd(),\n\t\ttype = 'file',\n\t\tallowSymlinks = true,\n\t} = {},\n) {\n\tcheckType(type);\n\tcwd = toPath(cwd);\n\n\tconst statFunction = allowSymlinks ? fs.statSync : fs.lstatSync;\n\n\tfor (const path_ of paths) {\n\t\ttry {\n\t\t\tconst stat = statFunction(path.resolve(cwd, path_), {\n\t\t\t\tthrowIfNoEntry: false,\n\t\t\t});\n\n\t\t\tif (!stat) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (matchType(type, stat)) {\n\t\t\t\treturn path_;\n\t\t\t}\n\t\t} catch {}\n\t}\n}\n", "/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n}\n", "import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst next = () => {\n\t\tactiveCount--;\n\n\t\tif (queue.size > 0) {\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst run = async (fn, resolve, args) => {\n\t\tactiveCount++;\n\n\t\tconst result = (async () => fn(...args))();\n\n\t\tresolve(result);\n\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\tnext();\n\t};\n\n\tconst enqueue = (fn, resolve, args) => {\n\t\tqueue.enqueue(run.bind(undefined, fn, resolve, args));\n\n\t\t(async () => {\n\t\t\t// This function needs to wait until the next microtask before comparing\n\t\t\t// `activeCount` to `concurrency`, because `activeCount` is updated asynchronously\n\t\t\t// when the run function is dequeued and called. The comparison in the if-statement\n\t\t\t// needs to happen asynchronously as well to get an up-to-date value for `activeCount`.\n\t\t\tawait Promise.resolve();\n\n\t\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\t\tqueue.dequeue()();\n\t\t\t}\n\t\t})();\n\t};\n\n\tconst generator = (fn, ...args) => new Promise(resolve => {\n\t\tenqueue(fn, resolve, args);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue: () => {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n", "import pLimit from 'p-limit';\n\nclass EndError extends Error {\n\tconstructor(value) {\n\t\tsuper();\n\t\tthis.value = value;\n\t}\n}\n\n// The input can also be a promise, so we await it.\nconst testElement = async (element, tester) => tester(await element);\n\n// The input can also be a promise, so we `Promise.all()` them both.\nconst finder = async element => {\n\tconst values = await Promise.all(element);\n\tif (values[1] === true) {\n\t\tthrow new EndError(values[0]);\n\t}\n\n\treturn false;\n};\n\nexport default async function pLocate(\n\titerable,\n\ttester,\n\t{\n\t\tconcurrency = Number.POSITIVE_INFINITY,\n\t\tpreserveOrder = true,\n\t} = {},\n) {\n\tconst limit = pLimit(concurrency);\n\n\t// Start all the promises concurrently with optional limit.\n\tconst items = [...iterable].map(element => [element, limit(testElement, element, tester)]);\n\n\t// Check the promises either serially or concurrently.\n\tconst checkLimit = pLimit(preserveOrder ? 1 : Number.POSITIVE_INFINITY);\n\n\ttry {\n\t\tawait Promise.all(items.map(element => checkLimit(finder, element)));\n\t} catch (error) {\n\t\tif (error instanceof EndError) {\n\t\t\treturn error.value;\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n", "import {fileURLToPath} from 'node:url';\n\nexport function toPath(urlOrPath) {\n\treturn urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n}\n\nexport * from './default.js';\n", "let FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nexport const $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t)\n}\n\nfunction init(x, y) {\n\tlet rgx = new RegExp(`\\\\x1b\\\\[${y}m`, 'g');\n\tlet open = `\\x1b[${x}m`, close = `\\x1b[${y}m`;\n\n\treturn function (txt) {\n\t\tif (!$.enabled || txt == null) return txt;\n\t\treturn open + (!!~(''+txt).indexOf(close) ? txt.replace(rgx, close + open) : txt) + close;\n\t};\n}\n\n// modifiers\nexport const reset = init(0, 0);\nexport const bold = init(1, 22);\nexport const dim = init(2, 22);\nexport const italic = init(3, 23);\nexport const underline = init(4, 24);\nexport const inverse = init(7, 27);\nexport const hidden = init(8, 28);\nexport const strikethrough = init(9, 29);\n\n// colors\nexport const black = init(30, 39);\nexport const red = init(31, 39);\nexport const green = init(32, 39);\nexport const yellow = init(33, 39);\nexport const blue = init(34, 39);\nexport const magenta = init(35, 39);\nexport const cyan = init(36, 39);\nexport const white = init(37, 39);\nexport const gray = init(90, 39);\nexport const grey = init(90, 39);\n\n// background colors\nexport const bgBlack = init(40, 49);\nexport const bgRed = init(41, 49);\nexport const bgGreen = init(42, 49);\nexport const bgYellow = init(43, 49);\nexport const bgBlue = init(44, 49);\nexport const bgMagenta = init(45, 49);\nexport const bgCyan = init(46, 49);\nexport const bgWhite = init(47, 49);\n", "module.exports = function (rows_, opts) {\n if (!opts) opts = {};\n var hsep = opts.hsep === undefined ? ' ' : opts.hsep;\n var align = opts.align || [];\n var stringLength = opts.stringLength\n || function (s) { return String(s).length; }\n ;\n \n var dotsizes = reduce(rows_, function (acc, row) {\n forEach(row, function (c, ix) {\n var n = dotindex(c);\n if (!acc[ix] || n > acc[ix]) acc[ix] = n;\n });\n return acc;\n }, []);\n \n var rows = map(rows_, function (row) {\n return map(row, function (c_, ix) {\n var c = String(c_);\n if (align[ix] === '.') {\n var index = dotindex(c);\n var size = dotsizes[ix] + (/\\./.test(c) ? 1 : 2)\n - (stringLength(c) - index)\n ;\n return c + Array(size).join(' ');\n }\n else return c;\n });\n });\n \n var sizes = reduce(rows, function (acc, row) {\n forEach(row, function (c, ix) {\n var n = stringLength(c);\n if (!acc[ix] || n > acc[ix]) acc[ix] = n;\n });\n return acc;\n }, []);\n \n return map(rows, function (row) {\n return map(row, function (c, ix) {\n var n = (sizes[ix] - stringLength(c)) || 0;\n var s = Array(Math.max(n + 1, 1)).join(' ');\n if (align[ix] === 'r' || align[ix] === '.') {\n return s + c;\n }\n if (align[ix] === 'c') {\n return Array(Math.ceil(n / 2 + 1)).join(' ')\n + c + Array(Math.floor(n / 2 + 1)).join(' ')\n ;\n }\n \n return c + s;\n }).join(hsep).replace(/\\s+$/, '');\n }).join('\\n');\n};\n\nfunction dotindex (c) {\n var m = /\\.[^.]*$/.exec(c);\n return m ? m.index + 1 : c.length;\n}\n\nfunction reduce (xs, f, init) {\n if (xs.reduce) return xs.reduce(f, init);\n var i = 0;\n var acc = arguments.length >= 3 ? init : xs[i++];\n for (; i < xs.length; i++) {\n f(acc, xs[i], i);\n }\n return acc;\n}\n\nfunction forEach (xs, f) {\n if (xs.forEach) return xs.forEach(f);\n for (var i = 0; i < xs.length; i++) {\n f.call(xs, xs[i], i);\n }\n}\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f.call(xs, xs[i], i));\n }\n return res;\n}\n", "import table, { type Options } from \"text-table\";\nimport * as colors from \"./colors-node\";\nimport { type Result } from \"./result\";\nimport { Severity } from \"./severity\";\n\n/**\n * Given a word and a count, append an s if count is not one.\n * @param word - A word in its singular form.\n * @param count - A number controlling whether word should be pluralized.\n * @returns - The original word with an s on the end if count is not one.\n */\nfunction pluralize(word: string, count: number): string {\n\treturn count === 1 ? word : `${word}s`;\n}\n\n/**\n * Given a line with \" $\\{line\\} $\\{column\\} \" where line is right-aligned and\n * column is left-aligned it replaces the delimiter with a colon.\n */\nfunction centerLineColumn(el: string): string {\n\treturn el.replace(/(\\d+)\\s+(\\d+)/u, (_m, p1: string, p2: string) => colors.dim(`${p1}:${p2}`));\n}\n\n/**\n * Strip ANSI color escape sequences from text.\n */\nfunction stripAnsi(text: string): string {\n\t/* eslint-disable-next-line no-control-regex -- expected to match control characters */\n\treturn text.replace(/\\u001B\\[[0-9;]*m/g, \"\");\n}\n\n/* eslint-disable-next-line sonarjs/cognitive-complexity -- technical debt */\nexport function stylish(results: Result[]): string {\n\tlet output = \"\\n\";\n\tlet errorCount = 0;\n\tlet warningCount = 0;\n\tlet fixableErrorCount = 0;\n\tlet fixableWarningCount = 0;\n\tlet summaryColor: colors.Colorize = colors.yellow;\n\n\tresults.forEach((result) => {\n\t\tconst messages = result.messages;\n\n\t\tif (messages.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\terrorCount += result.errorCount;\n\t\twarningCount += result.warningCount;\n\t\tfixableErrorCount += result.fixableErrorCount;\n\t\tfixableWarningCount += result.fixableWarningCount;\n\n\t\tconst rows = messages.map((message) => {\n\t\t\tlet messageType;\n\n\t\t\tif (Boolean(message.fatal) || message.severity === Severity.ERROR) {\n\t\t\t\tmessageType = colors.red(\"error\");\n\t\t\t\tsummaryColor = colors.red;\n\t\t\t} else {\n\t\t\t\tmessageType = colors.yellow(\"warning\");\n\t\t\t}\n\n\t\t\treturn [\n\t\t\t\t\"\",\n\t\t\t\tmessage.line ?? 0,\n\t\t\t\tmessage.column ?? 0,\n\t\t\t\tmessageType,\n\t\t\t\tmessage.message.replace(/([^ ])\\.$/u, \"$1\"),\n\t\t\t\tmessage.ruleId ? colors.dim(message.ruleId) : \"\",\n\t\t\t];\n\t\t});\n\n\t\tconst options: Options = {\n\t\t\talign: [\"l\", \"r\", \"l\"],\n\t\t\tstringLength(str: string): number {\n\t\t\t\treturn stripAnsi(str).length;\n\t\t\t},\n\t\t};\n\t\tconst formattedTable = table(rows, options).split(\"\\n\").map(centerLineColumn).join(\"\\n\");\n\n\t\toutput += `${colors.underline(result.filePath)}\\n`;\n\t\toutput += `${formattedTable}\\n\\n`;\n\t});\n\n\tconst total = errorCount + warningCount;\n\n\tif (total > 0) {\n\t\toutput += summaryColor(\n\t\t\tcolors.bold(\n\t\t\t\t[\n\t\t\t\t\t\"\\u2716 \",\n\t\t\t\t\ttotal,\n\t\t\t\t\tpluralize(\" problem\", total),\n\t\t\t\t\t\" (\",\n\t\t\t\t\terrorCount,\n\t\t\t\t\tpluralize(\" error\", errorCount),\n\t\t\t\t\t\", \",\n\t\t\t\t\twarningCount,\n\t\t\t\t\tpluralize(\" warning\", warningCount),\n\t\t\t\t\t\")\\n\",\n\t\t\t\t].join(\"\")\n\t\t\t)\n\t\t);\n\n\t\tif (fixableErrorCount > 0 || fixableWarningCount > 0) {\n\t\t\toutput += summaryColor(\n\t\t\t\tcolors.bold(\n\t\t\t\t\t[\n\t\t\t\t\t\t\" \",\n\t\t\t\t\t\tfixableErrorCount,\n\t\t\t\t\t\tpluralize(\" error\", fixableErrorCount),\n\t\t\t\t\t\t\" and \",\n\t\t\t\t\t\tfixableWarningCount,\n\t\t\t\t\t\tpluralize(\" warning\", fixableWarningCount),\n\t\t\t\t\t\t\" potentially fixable with the `--fix` option.\\n\",\n\t\t\t\t\t].join(\"\")\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\t// Resets output color, for prevent change on top level\n\treturn total > 0 ? colors.reset(output) : \"\";\n}\n", "import * as kleur from \"kleur/colors\";\n\nexport type Colorize = kleur.Colorize;\n\nexport const reset = kleur.reset;\nexport const bold = kleur.bold;\nexport const dim = kleur.dim;\nexport const underline = kleur.underline;\n\nexport const yellow = kleur.yellow;\nexport const red = kleur.red;\n", "export enum Severity {\n\tOFF = 0,\n\tWARN = 1,\n\tERROR = 2,\n}\n", "/* eslint-disable security/detect-non-literal-regexp -- expected to be non-literal */\n\nexport function escape(text: string): string {\n\treturn text.replace(/\\./, \"\\\\.\");\n}\n\nexport function directory(path: string): RegExp {\n\treturn new RegExp(`(^|/)${path}/`);\n}\n\nexport function extension(ext: string): RegExp {\n\treturn new RegExp(`${escape(ext)}$`);\n}\n\nexport function filename(path: string): RegExp {\n\treturn new RegExp(`(^|/)${escape(path)}$`);\n}\n\nexport function rcfile(base: string): RegExp {\n\treturn new RegExp(`${escape(base)}(\\\\.(js|cjs|mjs|ts|yaml|yml|json))?$`);\n}\n", "import { filename } from \"./helpers\";\n\nconst regexp: RegExp[] = [\n\tfilename(\"ava.config.js\"),\n\tfilename(\"ava.config.cjs\"),\n\tfilename(\"ava.config.mjs\"),\n];\n\nexport default regexp;\n", "import { filename } from \"./helpers\";\n\nconst regexp: RegExp[] = [/#.*#$/, /~$/, filename(\".dir-locals.el\")];\n\nexport default regexp;\n", "import { directory, filename, rcfile } from \"./helpers\";\n\nconst regexp: RegExp[] = [\n\tdirectory(\".eslintcache\"),\n\tfilename(\".eslintignore\"),\n\trcfile(`.eslintrc`),\n\tfilename(\"eslint.config.js\"),\n\tfilename(\"eslint.config.cjs\"),\n\tfilename(\"eslint.config.mjs\"),\n\tfilename(\"eslint.config.ts\"),\n];\n\nexport default regexp;\n", "import { filename, rcfile } from \"./helpers\";\n\nconst regexp: RegExp[] = [filename(\".fimbullinter.yaml\"), rcfile(\".wotanrc\")];\n\nexport default regexp;\n", "import { filename } from \"./helpers\";\n\nconst regexp: RegExp[] = [\n\tfilename(\".gitattributes\"),\n\tfilename(\".keep\"),\n\tfilename(\".gitkeep\"),\n\tfilename(\".gitmodules\"),\n];\n\nexport default regexp;\n", "import { directory, extension } from \"./helpers\";\n\nconst regexp: RegExp[] = [\n\tdirectory(\"__snapshots__\"),\n\tdirectory(\"__tests__\"),\n\textension(\".snap\"),\n\textension(\".spec.[jt]sx?\"),\n\textension(\".spec.js.map\"),\n\textension(\".spec.d.ts\"),\n\textension(\".spec.d.ts.map\"),\n\textension(\".test.[jt]sx?\"),\n\textension(\".test.js.map\"),\n\textension(\".test.d.ts\"),\n\textension(\".test.d.ts.map\"),\n];\n\nexport default regexp;\n", "import { filename } from \"./helpers\";\n\nconst regexp: RegExp[] = [\n\t/(^|\\/)(npm|yarn|lerna)-(debug|error)\\.log.*$/,\n\tfilename(\"report.\\\\d+.\\\\d+.\\\\d+.\\\\d+.\\\\d+.json\"),\n\tfilename(\".npmignore\"),\n\tfilename(\".npmrc\"),\n\tfilename(\".nvmrc\"),\n\tfilename(\"lerna.json\"),\n];\n\nexport default regexp;\n", "import { filename, rcfile } from \"./helpers\";\n\nconst regexp: RegExp[] = [filename(\".prettierignore\"), rcfile(`.prettierrc`)];\n\nexport default regexp;\n", "import { directory, filename } from \"./helpers\";\n\nconst regexp: RegExp[] = [directory(\".tsbuildinfo\"), filename(\"tsconfig.json\")];\n\nexport default regexp;\n", "import { filename } from \"./helpers\";\n\n/* reserved filenames on windows */\nconst regexp: RegExp[] = [\n\tfilename(\"CON\"),\n\tfilename(\"PRN\"),\n\tfilename(\"AUX\"),\n\tfilename(\"NUL\"),\n\t/(^|\\/)COM\\d/,\n\t/(^|\\/)LPT\\d/,\n];\n\nexport default regexp;\n", "import ava from \"./ava\";\nimport emacs from \"./emacs\";\nimport eslint from \"./eslint\";\nimport fimbullinter from \"./fimbullinter\";\nimport git from \"./git\";\nimport jest from \"./jest\";\nimport node from \"./node\";\nimport prettier from \"./prettier\";\nimport typescript from \"./typescript\";\nimport windows from \"./windows\";\nimport { directory, extension, filename, rcfile } from \"./helpers\";\n\nconst blacklist: RegExp[] = [\n\t/* tests in general */\n\tdirectory(\".nyc_output\"),\n\tdirectory(\"coverage\"),\n\textension(\".lcov\"),\n\textension(\"[.-]junit.xml\"),\n\tfilename(\".istanbul.yml\"),\n\tfilename(\"junit.xml\"),\n\tfilename(\"lcov.info\"),\n\tfilename(\".airtap.yml\"),\n\trcfile(\".c8rc\"),\n\trcfile(\".nycrc\"),\n\n\t/* tests */\n\tdirectory(\"examples?\"),\n\tdirectory(\"perf\"),\n\tdirectory(\"tests?\"),\n\tfilename(\"cypress.json\"),\n\tfilename(\"cypress.config.js\"),\n\tfilename(\"cypress.config.cjs\"),\n\tfilename(\"cypress.config.mjs\"),\n\tfilename(\"cypress.config.ts\"),\n\tfilename(\"karma.config.js\"),\n\tfilename(\"mocha.opts\"),\n\tfilename(\"playwright.config.js\"),\n\tfilename(\"playwright.config.cjs\"),\n\tfilename(\"playwright.config.mjs\"),\n\tfilename(\"playwright.config.ts\"),\n\tfilename(\"test.js\"),\n\tfilename(\"testem.json\"),\n\tfilename(\"testem.yml\"),\n\tfilename(\"wallaby.config.js\"),\n\tfilename(\"wallaby.js\"),\n\n\t/* linting */\n\tfilename(\".htmlvalidate.json\"),\n\tfilename(\".jshintignore\"),\n\tfilename(`tslint.json`),\n\tfilename(`tslint.yaml`),\n\tfilename(\".jscs.json\"),\n\trcfile(`.jscsrc`),\n\trcfile(`.jshintrc`),\n\n\t/* toolchains */\n\tfilename(\"rollup.config.js\"),\n\tfilename(\"webpack.config.js\"),\n\n\t/* task runners */\n\tfilename(\"[gG]runtfile.js\"),\n\tfilename(\"[gG]ulpfile.[jt]s\"),\n\tfilename(\"dangerfile.[jt]s\"),\n\tfilename(\"gulpfile.babel.js\"),\n\tfilename(\"gulpfile.esm.js\"),\n\tfilename(\"Herebyfile.js\"),\n\tfilename(\"Herebyfile.mjs\"),\n\n\t/* ci */\n\t/^\\.azure-.*$/,\n\tdirectory(\".circleci\"),\n\tdirectory(\".github\"),\n\tdirectory(\".gitlab\"),\n\tdirectory(\".?zuul.d\"),\n\tfilename(\".coveralls.yml\"),\n\tfilename(\".gitlab-ci.yml\"),\n\tfilename(\".travis.yml\"),\n\tfilename(\".?zuul.ya?ml\"),\n\tfilename(\"ISSUE_TEMPLATE.md\"),\n\tfilename(\"Jenkinsfile\"),\n\tfilename(\"PULL_REQUEST_TEMPLATE.md\"),\n\tfilename(\"appveyor.yml\"),\n\n\t/* editor specific files */\n\t/(^|\\/)\\.sw[a-p]/ /* vim */,\n\tdirectory(\".vscode\"),\n\textension(\".sublime-project\"),\n\textension(\".sublime-workspace\"),\n\tfilename(\".vscodeignore\"),\n\tfilename(\"Session.vim\"),\n\tfilename(\"Sessionx.vim\"),\n\tdirectory(\".idea\"),\n\tfilename(\".tm_properties\") /* textmate */,\n\n\t/* OS */\n\tdirectory(\".AppleDouble\"),\n\tdirectory(\".DS_Store\"),\n\tdirectory(\".LSOverride\"),\n\n\t/* logs */\n\tdirectory(\"logs\"),\n\textension(\".log\"),\n\n\t/* runtime */\n\tdirectory(\"pids\"),\n\textension(\".pid\"),\n\textension(\".pid.lock\"),\n\textension(\".seed\"),\n\n\t/* misc */\n\t/^[Jj]akefile(\\.js)?$/,\n\textension(\".bak\"),\n\textension(\".swp\"),\n\textension(\".tgz\"),\n\textension(\".tmp\"),\n\tfilename(\".env\"),\n\tfilename(\".svgo.yml\"),\n\tfilename(\".editorconfig\"),\n\tfilename(\".ext-prepush\"),\n\tfilename(\".tonic_example.js\"),\n\tfilename(\".flowconfig\"),\n\tfilename(\".cardinalrc\"),\n\tfilename(\"bower.json\"),\n\tfilename(\"commitlint.config.js\") /* commitlint */,\n\tfilename(\"composer.json\"),\n\tfilename(\"netlify.toml\"),\n\tfilename(\"release.config.js\") /* semantic release */,\n\n\t...ava,\n\t...emacs,\n\t...eslint,\n\t...fimbullinter,\n\t...git,\n\t...jest,\n\t...node,\n\t...prettier,\n\t...typescript,\n\t...windows,\n];\n\nexport default blacklist;\n", "import blacklist from \"./blacklist/index\";\n\nexport function setupBlacklist(name: string): void {\n\t/* eslint-disable-next-line security/detect-non-literal-regexp -- expected to be non-literal */\n\tblacklist.push(new RegExp(`^${name}-\\\\d+\\\\.\\\\d+\\\\.\\\\d+\\\\.tgz$`));\n}\n\nexport function isBlacklisted(filename: string): boolean {\n\treturn blacklist.some((entry) => filename.match(entry));\n}\n", "import fs from \"fs\";\nimport tar, { type ReadEntry, Parse } from \"tar\";\nimport { type PackageJson, type PackageJsonExports } from \"./types\";\nimport { isBlacklisted } from \"./blacklist\";\nimport { type Message } from \"./message\";\nimport { type Result } from \"./result\";\n\nexport interface TarballMeta {\n\t/** Path to tarball on disk */\n\tfilePath: string;\n\n\t/** Path to use in report (default filePath) */\n\treportPath?: string;\n}\n\ninterface RequiredFile {\n\tfield: string;\n\truleId: string;\n\tfilename: string;\n}\n\nconst ruleId = \"no-missing-main\";\n\nfunction normalize(filename: string): string {\n\treturn filename.replace(/^[^/]+\\//, \"\");\n}\n\nexport async function getFileList(filename: string): Promise<string[]> {\n\tconst entries: ReadEntry[] = [];\n\tawait tar.list({\n\t\tfile: filename,\n\t\tstrict: true,\n\t\tonentry: (entry: ReadEntry) => entries.push(entry),\n\t});\n\treturn entries.map((entry) => {\n\t\tconst filename = entry.path as unknown as string;\n\t\treturn normalize(filename);\n\t});\n}\n\nexport async function getFileContent(\n\ttarball: TarballMeta,\n\tfilenames: string[],\n): Promise<Record<string, Buffer>> {\n\tconst contents: Record<string, Buffer> = {};\n\n\treturn new Promise((resolve, reject) => {\n\t\tconst t = new Parse({\n\t\t\tfilter(_path: string, entry: tar.ReadEntry): boolean {\n\t\t\t\treturn filenames.includes(normalize(entry.path));\n\t\t\t},\n\t\t});\n\t\tt.on(\"entry\", (entry: tar.ReadEntry) => {\n\t\t\tconst p = normalize(entry.path);\n\t\t\tcontents[p] = Buffer.alloc(0);\n\t\t\tentry.on(\"data\", (data: Buffer) => {\n\t\t\t\tcontents[p] = Buffer.concat([contents[p], data]);\n\t\t\t});\n\t\t\tentry.on(\"error\", (error) => {\n\t\t\t\t/* eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors -- technical debt */\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t\tt.on(\"end\", () => {\n\t\t\tresolve(contents);\n\t\t});\n\t\tconst rs = fs.createReadStream(tarball.filePath);\n\t\trs.pipe(t);\n\t});\n}\n\nexport function blacklistedFiles(filelist: string[]): string[] {\n\treturn filelist.filter(isBlacklisted);\n}\n\nfunction normalizeRequiredFiles(\n\tsrc: string | string[] | Record<string, string | boolean>,\n): string[] {\n\tif (typeof src === \"string\") {\n\t\treturn [src];\n\t} else if (Array.isArray(src)) {\n\t\treturn src;\n\t} else {\n\t\treturn Object.values(src).filter((it) => it !== false) as string[];\n\t}\n}\n\nfunction* yieldRequiredFiles(\n\tsrc: string | string[] | Record<string, string | boolean>,\n\ttemplate: Pick<RequiredFile, \"field\" | \"ruleId\">,\n): Generator<RequiredFile> {\n\tconst files = normalizeRequiredFiles(src);\n\tfor (const filename of files) {\n\t\tyield { ...template, filename };\n\t}\n}\n\nfunction* yieldExportedFiles(\n\texports: undefined | null | string | PackageJsonExports,\n): Generator<RequiredFile> {\n\tif (!exports) {\n\t\treturn;\n\t}\n\n\tif (typeof exports === \"string\") {\n\t\tyield {\n\t\t\tfield: \"exports\",\n\t\t\truleId: \"no-missing-exports\",\n\t\t\tfilename: exports,\n\t\t};\n\t\treturn;\n\t}\n\n\tfor (const [key, value] of Object.entries(exports)) {\n\t\t/* ignore wildcards for now */\n\t\tif (key.includes(\"*\")) {\n\t\t\tcontinue;\n\t\t}\n\t\tyield* yieldExportedFiles(value);\n\t}\n}\n\nfunction* requiredFiles(pkg: PackageJson): Generator<RequiredFile> {\n\tyield* yieldExportedFiles(pkg.exports);\n\tif (pkg.main) {\n\t\tyield* yieldRequiredFiles(pkg.main, { field: \"main\", ruleId });\n\t}\n\tif (pkg.browser) {\n\t\tyield* yieldRequiredFiles(pkg.browser, { field: \"browser\", ruleId });\n\t}\n\tif (pkg.module) {\n\t\tyield* yieldRequiredFiles(pkg.module, { field: \"module\", ruleId });\n\t}\n\t/* eslint-disable-next-line sonarjs/no-duplicate-string -- doesn't help readability */\n\tif (pkg[\"jsnext:main\"]) {\n\t\tyield* yieldRequiredFiles(pkg[\"jsnext:main\"], {\n\t\t\tfield: \"jsnext:main\",\n\t\t\truleId,\n\t\t});\n\t}\n\tif (pkg.typings) {\n\t\tyield* yieldRequiredFiles(pkg.typings, { field: \"typings\", ruleId: \"no-missing-typings\" });\n\t}\n\tif (pkg.bin) {\n\t\tyield* yieldRequiredFiles(pkg.bin, { field: \"bin\", ruleId: \"no-missing-binary\" });\n\t}\n\tif (pkg.man) {\n\t\tyield* yieldRequiredFiles(pkg.man, { field: \"man\", ruleId: \"no-missing-man\" });\n\t}\n}\n\nfunction fileExists(filelist: string[], filename: string): boolean {\n\t/* strip leading ./ */\n\tfilename = filename.replace(/^\\.\\//, \"\");\n\n\t/* exact match for filename */\n\tif (filelist.includes(filename)) {\n\t\treturn true;\n\t}\n\n\t/* try to append \".js\" */\n\tif (filelist.includes(`${filename}.js`)) {\n\t\treturn true;\n\t}\n\n\t/* test if it is actually a directory with index.js */\n\tif (filelist.includes(`${filename.replace(/\\/$/, \"\")}/index.js`)) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * @param pkg - Parsed `package.json` data\n * @param tarball - Tarball paths\n */\nexport async function verifyTarball(pkg: PackageJson, tarball: TarballMeta): Promise<Result[]> {\n\tconst messages: Message[] = [];\n\tconst filelist = await getFileList(tarball.filePath);\n\n\tfor (const filename of blacklistedFiles(filelist)) {\n\t\tmessages.push({\n\t\t\truleId: \"no-disallowed-files\",\n\t\t\tseverity: 2,\n\t\t\tmessage: `${filename} is not allowed in tarball`,\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t});\n\t}\n\n\tfor (const requiredFile of requiredFiles(pkg)) {\n\t\tif (!fileExists(filelist, requiredFile.filename)) {\n\t\t\tmessages.push({\n\t\t\t\truleId: requiredFile.ruleId,\n\t\t\t\tseverity: 2,\n\t\t\t\tmessage: `${requiredFile.filename} (pkg.${requiredFile.field}) is not present in tarball`,\n\t\t\t\tline: 1,\n\t\t\t\tcolumn: 1,\n\t\t\t});\n\t\t}\n\t}\n\n\tif (messages.length === 0) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\t{\n\t\t\tmessages,\n\t\t\tfilePath: tarball.reportPath ?? tarball.filePath,\n\t\t\terrorCount: messages.filter((it) => it.severity === 2).length,\n\t\t\twarningCount: messages.filter((it) => it.severity === 1).length,\n\t\t\tfixableErrorCount: 0,\n\t\t\tfixableWarningCount: 0,\n\t\t},\n\t];\n}\n", "export class ValidationError extends Error {\n\tpublic validator: string;\n\n\tpublic constructor(validator: string, message: string) {\n\t\tsuper(message);\n\t\tthis.validator = validator;\n\t}\n}\n", "function isEmpty(value: any): boolean {\n\t/* undefined, null and empty string is considered empty */\n\treturn typeof value === \"undefined\" || value === null || value === \"\";\n}\n\nexport function nonempty(key: string, value: unknown): void {\n\tif (isEmpty(value)) {\n\t\tthrow new Error(`\"${key}\" must not be empty`);\n\t}\n\n\t/* any number is considered set, even 0 */\n\tif (typeof value === \"number\") {\n\t\treturn;\n\t}\n\n\t/* for arrays the array must be populated and each entry but be non-empty */\n\tif (Array.isArray(value)) {\n\t\tif (value.length === 0) {\n\t\t\tthrow new Error(`\"${key}\" must not be empty`);\n\t\t}\n\t\t/* eslint-disable-next-line @typescript-eslint/no-for-in-array -- technical debt */\n\t\tfor (const index in value) {\n\t\t\tnonempty(`${key}[${index}]`, value[index]);\n\t\t}\n\t\treturn;\n\t}\n\n\t/* object must have at least one one property set */\n\tif (value && typeof value === \"object\") {\n\t\tconst values = Object.values(value);\n\t\tif (values.length === 0) {\n\t\t\tthrow new Error(`\"${key}\" must not be empty`);\n\t\t}\n\t}\n}\n", "import { ValidationError } from \"./validation-error\";\n\nexport function present(key: string, value: any): void {\n\tif (typeof value === \"undefined\" || value === null) {\n\t\tthrow new ValidationError(present.name, `\"${key}\" must be set`);\n\t}\n}\n", "export function typeArray(key: string, value: any): void {\n\tif (!Array.isArray(value)) {\n\t\tthrow new Error(`\"${key}\" must be array`);\n\t}\n\t/* eslint-disable-next-line @typescript-eslint/no-for-in-array -- technical debt */\n\tfor (const index in value) {\n\t\tif (typeof value[index] !== \"string\") {\n\t\t\tthrow new Error(`\"${key}[${index}]\" must be string`);\n\t\t}\n\t}\n}\n", "export function typeString(key: string, value: any): void {\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`\"${key}\" must be string`);\n\t}\n}\n", "function validateType(key: string, value: unknown): void {\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`\"${key}.type\" must be a string`);\n\t}\n\tif (value !== \"git\") {\n\t\tthrow new Error(`\"${key}.type\" must be \"git\"`);\n\t}\n}\n\nfunction validateUrl(key: string, value: unknown): void {\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`\"${key}.url\" must be a string`);\n\t}\n\tif (value.trim() === \"\") {\n\t\tthrow new Error(`\"${key}.url\" must not be empty`);\n\t}\n\tif (value !== value.trim()) {\n\t\tthrow new Error(`\"${key}.url\" must not have leading or trailing whitespace`);\n\t}\n\tconst url = new URL(value);\n\tif (url.protocol === \"git+http:\" || url.protocol === \"http:\") {\n\t\tthrow new Error(`\"${key}.url\" must use \"git+https://\" instead of \"http://\"`);\n\t}\n\tif (url.protocol !== \"git+https:\") {\n\t\tthrow new Error(`\"${key}.url\" must use \"git+https://\" protocol`);\n\t}\n\tif (url.host === \"\") {\n\t\tthrow new Error(`\"${key}.url\" be a valid url`);\n\t}\n}\n\nfunction validateDirectory(key: string, value: unknown): void {\n\tif (typeof value !== \"string\") {\n\t\tthrow new Error(`\"${key}.directory\" must be a string`);\n\t}\n\tif (value.trim() === \"\") {\n\t\tthrow new Error(\n\t\t\t`\"${key}.directory\" must be set to non-empty string or the property must be removed`,\n\t\t);\n\t}\n}\n\nexport function validRepoUrl(key: string, value: unknown): void {\n\tif (value === undefined) {\n\t\treturn;\n\t}\n\tif (typeof value !== \"object\" || value === null) {\n\t\tthrow new Error(`\"${key}\" must be an object with \"type\" and \"url\"`);\n\t}\n\tif (\"type\" in value) {\n\t\tvalidateType(key, value.type);\n\t} else {\n\t\tthrow new Error(`\"${key}\" is missing required \"type\" property`);\n\t}\n\tif (\"url\" in value) {\n\t\tvalidateUrl(key, value.url);\n\t} else {\n\t\tthrow new Error(`\"${key}\" is missing required \"url\" property`);\n\t}\n\tif (\"directory\" in value) {\n\t\tvalidateDirectory(key, value.directory);\n\t}\n}\n", "export function validUrl(key: string, value: any): void {\n\tif (typeof value === \"string\" && value.match(/^https:\\/\\/.+$/)) {\n\t\treturn;\n\t} else if (value?.url) {\n\t\tvalidUrl(`${key}.url`, value.url);\n\t} else {\n\t\tthrow new Error(`\"${key}\" must be a valid url (https only)`);\n\t}\n}\n", "import semver from \"semver\";\nimport { type Message } from \"../message\";\nimport { type PackageJson } from \"../types\";\nimport { npmInfo } from \"../utils\";\nimport { isNpmInfoError } from \"../utils/npm-info\";\n\nconst ruleId = \"no-deprecated-dependency\";\n\nfunction* getDependencies(pkg: PackageJson): Generator<string> {\n\tconst { dependencies = {}, devDependencies = {}, peerDependencies = {} } = pkg;\n\tconst allDependencies = { ...dependencies, ...devDependencies, ...peerDependencies };\n\tfor (const [key, version] of Object.entries(allDependencies)) {\n\t\t/* ignore this as this package is sometimes is present as version \"*\" which\n\t\t * just yields way to many versions to handle causing MaxBuffer errors and\n\t\t * there is another rule to make sure the outermost @types/node package\n\t\t * matches the configured engines */\n\t\tif (key === \"@types/node\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst minVersion = semver.minVersion(version);\n\t\tyield `${key}@${minVersion ? minVersion.version : version}`;\n\t}\n}\n\nexport async function deprecatedDependency(pkg: PackageJson): Promise<Message[]> {\n\tconst messages: Message[] = [];\n\n\tfor await (const dependency of getDependencies(pkg)) {\n\t\ttry {\n\t\t\tconst { deprecated } = await npmInfo(dependency);\n\t\t\tif (!deprecated) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tmessages.push({\n\t\t\t\truleId,\n\t\t\t\tseverity: 2,\n\t\t\t\tmessage: `\"${dependency}\" is deprecated and must not be used`,\n\t\t\t\tline: 1,\n\t\t\t\tcolumn: 1,\n\t\t\t});\n\t\t} catch (err: unknown) {\n\t\t\tif (isNpmInfoError(err) && err.code === \"E404\") {\n\t\t\t\tmessages.push({\n\t\t\t\t\truleId,\n\t\t\t\t\tseverity: 1,\n\t\t\t\t\tmessage: `the dependency \"${dependency}\" is not published to the NPM registry`,\n\t\t\t\t\tline: 1,\n\t\t\t\t\tcolumn: 1,\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\treturn messages;\n}\n", "import {Buffer} from 'node:buffer';\nimport path from 'node:path';\nimport childProcess from 'node:child_process';\nimport process from 'node:process';\nimport crossSpawn from 'cross-spawn';\nimport stripFinalNewline from 'strip-final-newline';\nimport {npmRunPathEnv} from 'npm-run-path';\nimport onetime from 'onetime';\nimport {makeError} from './lib/error.js';\nimport {normalizeStdio, normalizeStdioNode} from './lib/stdio.js';\nimport {spawnedKill, spawnedCancel, setupTimeout, validateTimeout, setExitHandler} from './lib/kill.js';\nimport {addPipeMethods} from './lib/pipe.js';\nimport {handleInput, getSpawnedResult, makeAllStream, handleInputSync} from './lib/stream.js';\nimport {mergePromise, getSpawnedPromise} from './lib/promise.js';\nimport {joinCommand, parseCommand, parseTemplates, getEscapedCommand} from './lib/command.js';\nimport {logCommand, verboseDefault} from './lib/verbose.js';\n\nconst DEFAULT_MAX_BUFFER = 1000 * 1000 * 100;\n\nconst getEnv = ({env: envOption, extendEnv, preferLocal, localDir, execPath}) => {\n\tconst env = extendEnv ? {...process.env, ...envOption} : envOption;\n\n\tif (preferLocal) {\n\t\treturn npmRunPathEnv({env, cwd: localDir, execPath});\n\t}\n\n\treturn env;\n};\n\nconst handleArguments = (file, args, options = {}) => {\n\tconst parsed = crossSpawn._parse(file, args, options);\n\tfile = parsed.command;\n\targs = parsed.args;\n\toptions = parsed.options;\n\n\toptions = {\n\t\tmaxBuffer: DEFAULT_MAX_BUFFER,\n\t\tbuffer: true,\n\t\tstripFinalNewline: true,\n\t\textendEnv: true,\n\t\tpreferLocal: false,\n\t\tlocalDir: options.cwd || process.cwd(),\n\t\texecPath: process.execPath,\n\t\tencoding: 'utf8',\n\t\treject: true,\n\t\tcleanup: true,\n\t\tall: false,\n\t\twindowsHide: true,\n\t\tverbose: verboseDefault,\n\t\t...options,\n\t};\n\n\toptions.env = getEnv(options);\n\n\toptions.stdio = normalizeStdio(options);\n\n\tif (process.platform === 'win32' && path.basename(file, '.exe') === 'cmd') {\n\t\t// #116\n\t\targs.unshift('/q');\n\t}\n\n\treturn {file, args, options, parsed};\n};\n\nconst handleOutput = (options, value, error) => {\n\tif (typeof value !== 'string' && !Buffer.isBuffer(value)) {\n\t\t// When `execaSync()` errors, we normalize it to '' to mimic `execa()`\n\t\treturn error === undefined ? undefined : '';\n\t}\n\n\tif (options.stripFinalNewline) {\n\t\treturn stripFinalNewline(value);\n\t}\n\n\treturn value;\n};\n\nexport function execa(file, args, options) {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\tlogCommand(escapedCommand, parsed.options);\n\n\tvalidateTimeout(parsed.options);\n\n\tlet spawned;\n\ttry {\n\t\tspawned = childProcess.spawn(parsed.file, parsed.args, parsed.options);\n\t} catch (error) {\n\t\t// Ensure the returned error is always both a promise and a child process\n\t\tconst dummySpawned = new childProcess.ChildProcess();\n\t\tconst errorPromise = Promise.reject(makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false,\n\t\t}));\n\t\tmergePromise(dummySpawned, errorPromise);\n\t\treturn dummySpawned;\n\t}\n\n\tconst spawnedPromise = getSpawnedPromise(spawned);\n\tconst timedPromise = setupTimeout(spawned, parsed.options, spawnedPromise);\n\tconst processDone = setExitHandler(spawned, parsed.options, timedPromise);\n\n\tconst context = {isCanceled: false};\n\n\tspawned.kill = spawnedKill.bind(null, spawned.kill.bind(spawned));\n\tspawned.cancel = spawnedCancel.bind(null, spawned, context);\n\n\tconst handlePromise = async () => {\n\t\tconst [{error, exitCode, signal, timedOut}, stdoutResult, stderrResult, allResult] = await getSpawnedResult(spawned, parsed.options, processDone);\n\t\tconst stdout = handleOutput(parsed.options, stdoutResult);\n\t\tconst stderr = handleOutput(parsed.options, stderrResult);\n\t\tconst all = handleOutput(parsed.options, allResult);\n\n\t\tif (error || exitCode !== 0 || signal !== null) {\n\t\t\tconst returnedError = makeError({\n\t\t\t\terror,\n\t\t\t\texitCode,\n\t\t\t\tsignal,\n\t\t\t\tstdout,\n\t\t\t\tstderr,\n\t\t\t\tall,\n\t\t\t\tcommand,\n\t\t\t\tescapedCommand,\n\t\t\t\tparsed,\n\t\t\t\ttimedOut,\n\t\t\t\tisCanceled: context.isCanceled || (parsed.options.signal ? parsed.options.signal.aborted : false),\n\t\t\t\tkilled: spawned.killed,\n\t\t\t});\n\n\t\t\tif (!parsed.options.reject) {\n\t\t\t\treturn returnedError;\n\t\t\t}\n\n\t\t\tthrow returnedError;\n\t\t}\n\n\t\treturn {\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\texitCode: 0,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\tall,\n\t\t\tfailed: false,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false,\n\t\t};\n\t};\n\n\tconst handlePromiseOnce = onetime(handlePromise);\n\n\thandleInput(spawned, parsed.options);\n\n\tspawned.all = makeAllStream(spawned, parsed.options);\n\n\taddPipeMethods(spawned);\n\tmergePromise(spawned, handlePromiseOnce);\n\treturn spawned;\n}\n\nexport function execaSync(file, args, options) {\n\tconst parsed = handleArguments(file, args, options);\n\tconst command = joinCommand(file, args);\n\tconst escapedCommand = getEscapedCommand(file, args);\n\tlogCommand(escapedCommand, parsed.options);\n\n\tconst input = handleInputSync(parsed.options);\n\n\tlet result;\n\ttry {\n\t\tresult = childProcess.spawnSync(parsed.file, parsed.args, {...parsed.options, input});\n\t} catch (error) {\n\t\tthrow makeError({\n\t\t\terror,\n\t\t\tstdout: '',\n\t\t\tstderr: '',\n\t\t\tall: '',\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: false,\n\t\t\tisCanceled: false,\n\t\t\tkilled: false,\n\t\t});\n\t}\n\n\tconst stdout = handleOutput(parsed.options, result.stdout, result.error);\n\tconst stderr = handleOutput(parsed.options, result.stderr, result.error);\n\n\tif (result.error || result.status !== 0 || result.signal !== null) {\n\t\tconst error = makeError({\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\terror: result.error,\n\t\t\tsignal: result.signal,\n\t\t\texitCode: result.status,\n\t\t\tcommand,\n\t\t\tescapedCommand,\n\t\t\tparsed,\n\t\t\ttimedOut: result.error && result.error.code === 'ETIMEDOUT',\n\t\t\tisCanceled: false,\n\t\t\tkilled: result.signal !== null,\n\t\t});\n\n\t\tif (!parsed.options.reject) {\n\t\t\treturn error;\n\t\t}\n\n\t\tthrow error;\n\t}\n\n\treturn {\n\t\tcommand,\n\t\tescapedCommand,\n\t\texitCode: 0,\n\t\tstdout,\n\t\tstderr,\n\t\tfailed: false,\n\t\ttimedOut: false,\n\t\tisCanceled: false,\n\t\tkilled: false,\n\t};\n}\n\nconst normalizeScriptStdin = ({input, inputFile, stdio}) => input === undefined && inputFile === undefined && stdio === undefined\n\t? {stdin: 'inherit'}\n\t: {};\n\nconst normalizeScriptOptions = (options = {}) => ({\n\tpreferLocal: true,\n\t...normalizeScriptStdin(options),\n\t...options,\n});\n\nfunction create$(options) {\n\tfunction $(templatesOrOptions, ...expressions) {\n\t\tif (!Array.isArray(templatesOrOptions)) {\n\t\t\treturn create$({...options, ...templatesOrOptions});\n\t\t}\n\n\t\tconst [file, ...args] = parseTemplates(templatesOrOptions, expressions);\n\t\treturn execa(file, args, normalizeScriptOptions(options));\n\t}\n\n\t$.sync = (templates, ...expressions) => {\n\t\tif (!Array.isArray(templates)) {\n\t\t\tthrow new TypeError('Please use $(options).sync`command` instead of $.sync(options)`command`.');\n\t\t}\n\n\t\tconst [file, ...args] = parseTemplates(templates, expressions);\n\t\treturn execaSync(file, args, normalizeScriptOptions(options));\n\t};\n\n\treturn $;\n}\n\nexport const $ = create$();\n\nexport function execaCommand(command, options) {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execa(file, args, options);\n}\n\nexport function execaCommandSync(command, options) {\n\tconst [file, ...args] = parseCommand(command);\n\treturn execaSync(file, args, options);\n}\n\nexport function execaNode(scriptPath, args, options = {}) {\n\tif (args && !Array.isArray(args) && typeof args === 'object') {\n\t\toptions = args;\n\t\targs = [];\n\t}\n\n\tconst stdio = normalizeStdioNode(options);\n\tconst defaultExecArgv = process.execArgv.filter(arg => !arg.startsWith('--inspect'));\n\n\tconst {\n\t\tnodePath = process.execPath,\n\t\tnodeOptions = defaultExecArgv,\n\t} = options;\n\n\treturn execa(\n\t\tnodePath,\n\t\t[\n\t\t\t...nodeOptions,\n\t\t\tscriptPath,\n\t\t\t...(Array.isArray(args) ? args : []),\n\t\t],\n\t\t{\n\t\t\t...options,\n\t\t\tstdin: undefined,\n\t\t\tstdout: undefined,\n\t\t\tstderr: undefined,\n\t\t\tstdio,\n\t\t\tshell: false,\n\t\t},\n\t);\n}\n", "export default function stripFinalNewline(input) {\n\tconst LF = typeof input === 'string' ? '\\n' : '\\n'.charCodeAt();\n\tconst CR = typeof input === 'string' ? '\\r' : '\\r'.charCodeAt();\n\n\tif (input[input.length - 1] === LF) {\n\t\tinput = input.slice(0, -1);\n\t}\n\n\tif (input[input.length - 1] === CR) {\n\t\tinput = input.slice(0, -1);\n\t}\n\n\treturn input;\n}\n", "import process from 'node:process';\nimport path from 'node:path';\nimport url from 'node:url';\nimport pathKey from 'path-key';\n\nexport function npmRunPath(options = {}) {\n\tconst {\n\t\tcwd = process.cwd(),\n\t\tpath: path_ = process.env[pathKey()],\n\t\texecPath = process.execPath,\n\t} = options;\n\n\tlet previous;\n\tconst cwdString = cwd instanceof URL ? url.fileURLToPath(cwd) : cwd;\n\tlet cwdPath = path.resolve(cwdString);\n\tconst result = [];\n\n\twhile (previous !== cwdPath) {\n\t\tresult.push(path.join(cwdPath, 'node_modules/.bin'));\n\t\tprevious = cwdPath;\n\t\tcwdPath = path.resolve(cwdPath, '..');\n\t}\n\n\t// Ensure the running `node` binary is used.\n\tresult.push(path.resolve(cwdString, execPath, '..'));\n\n\treturn [...result, path_].join(path.delimiter);\n}\n\nexport function npmRunPathEnv({env = process.env, ...options} = {}) {\n\tenv = {...env};\n\n\tconst path = pathKey({env});\n\toptions.path = env[path];\n\tenv[path] = npmRunPath(options);\n\n\treturn env;\n}\n", "export default function pathKey(options = {}) {\n\tconst {\n\t\tenv = process.env,\n\t\tplatform = process.platform\n\t} = options;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(env).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n}\n", "const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable &&\n\t\ttoDescriptor.enumerable === fromDescriptor.enumerable &&\n\t\ttoDescriptor.configurable === fromDescriptor.configurable &&\n\t\t(toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tObject.defineProperty(to, 'toString', {...toStringDescriptor, value: newToString});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n", "import mimicFunction from 'mimic-fn';\n\nconst calledFunctions = new WeakMap();\n\nconst onetime = (function_, options = {}) => {\n\tif (typeof function_ !== 'function') {\n\t\tthrow new TypeError('Expected a function');\n\t}\n\n\tlet returnValue;\n\tlet callCount = 0;\n\tconst functionName = function_.displayName || function_.name || '<anonymous>';\n\n\tconst onetime = function (...arguments_) {\n\t\tcalledFunctions.set(onetime, ++callCount);\n\n\t\tif (callCount === 1) {\n\t\t\treturnValue = function_.apply(this, arguments_);\n\t\t\tfunction_ = null;\n\t\t} else if (options.throw === true) {\n\t\t\tthrow new Error(`Function \\`${functionName}\\` can only be called once`);\n\t\t}\n\n\t\treturn returnValue;\n\t};\n\n\tmimicFunction(onetime, function_);\n\tcalledFunctions.set(onetime, callCount);\n\n\treturn onetime;\n};\n\nonetime.callCount = function_ => {\n\tif (!calledFunctions.has(function_)) {\n\t\tthrow new Error(`The given function \\`${function_.name}\\` is not wrapped by the \\`onetime\\` package`);\n\t}\n\n\treturn calledFunctions.get(function_);\n};\n\nexport default onetime;\n", "import process from 'node:process';\nimport {signalsByName} from 'human-signals';\n\nconst getErrorPrefix = ({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled}) => {\n\tif (timedOut) {\n\t\treturn `timed out after ${timeout} milliseconds`;\n\t}\n\n\tif (isCanceled) {\n\t\treturn 'was canceled';\n\t}\n\n\tif (errorCode !== undefined) {\n\t\treturn `failed with ${errorCode}`;\n\t}\n\n\tif (signal !== undefined) {\n\t\treturn `was killed with ${signal} (${signalDescription})`;\n\t}\n\n\tif (exitCode !== undefined) {\n\t\treturn `failed with exit code ${exitCode}`;\n\t}\n\n\treturn 'failed';\n};\n\nexport const makeError = ({\n\tstdout,\n\tstderr,\n\tall,\n\terror,\n\tsignal,\n\texitCode,\n\tcommand,\n\tescapedCommand,\n\ttimedOut,\n\tisCanceled,\n\tkilled,\n\tparsed: {options: {timeout, cwd = process.cwd()}},\n}) => {\n\t// `signal` and `exitCode` emitted on `spawned.on('exit')` event can be `null`.\n\t// We normalize them to `undefined`\n\texitCode = exitCode === null ? undefined : exitCode;\n\tsignal = signal === null ? undefined : signal;\n\tconst signalDescription = signal === undefined ? undefined : signalsByName[signal].description;\n\n\tconst errorCode = error && error.code;\n\n\tconst prefix = getErrorPrefix({timedOut, timeout, errorCode, signal, signalDescription, exitCode, isCanceled});\n\tconst execaMessage = `Command ${prefix}: ${command}`;\n\tconst isError = Object.prototype.toString.call(error) === '[object Error]';\n\tconst shortMessage = isError ? `${execaMessage}\\n${error.message}` : execaMessage;\n\tconst message = [shortMessage, stderr, stdout].filter(Boolean).join('\\n');\n\n\tif (isError) {\n\t\terror.originalMessage = error.message;\n\t\terror.message = message;\n\t} else {\n\t\terror = new Error(message);\n\t}\n\n\terror.shortMessage = shortMessage;\n\terror.command = command;\n\terror.escapedCommand = escapedCommand;\n\terror.exitCode = exitCode;\n\terror.signal = signal;\n\terror.signalDescription = signalDescription;\n\terror.stdout = stdout;\n\terror.stderr = stderr;\n\terror.cwd = cwd;\n\n\tif (all !== undefined) {\n\t\terror.all = all;\n\t}\n\n\tif ('bufferedData' in error) {\n\t\tdelete error.bufferedData;\n\t}\n\n\terror.failed = true;\n\terror.timedOut = Boolean(timedOut);\n\terror.isCanceled = isCanceled;\n\terror.killed = killed && !timedOut;\n\n\treturn error;\n};\n", "import{constants}from\"node:os\";\n\nimport{SIGRTMAX}from\"./realtime.js\";\nimport{getSignals}from\"./signals.js\";\n\n\n\nconst getSignalsByName=()=>{\nconst signals=getSignals();\nreturn Object.fromEntries(signals.map(getSignalByName))\n};\n\nconst getSignalByName=({\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard\n})=>[name,{name,number,description,supported,action,forced,standard}];\n\nexport const signalsByName=getSignalsByName();\n\n\n\n\nconst getSignalsByNumber=()=>{\nconst signals=getSignals();\nconst length=SIGRTMAX+1;\nconst signalsA=Array.from({length},(value,number)=>\ngetSignalByNumber(number,signals)\n);\nreturn Object.assign({},...signalsA)\n};\n\nconst getSignalByNumber=(number,signals)=>{\nconst signal=findSignalByNumber(number,signals);\n\nif(signal===undefined){\nreturn{}\n}\n\nconst{name,description,supported,action,forced,standard}=signal;\nreturn{\n[number]:{\nname,\nnumber,\ndescription,\nsupported,\naction,\nforced,\nstandard\n}\n}\n};\n\n\n\nconst findSignalByNumber=(number,signals)=>{\nconst signal=signals.find(({name})=>constants.signals[name]===number);\n\nif(signal!==undefined){\nreturn signal\n}\n\nreturn signals.find((signalA)=>signalA.number===number)\n};\n\nexport const signalsByNumber=getSignalsByNumber();", "\nexport const getRealtimeSignals=()=>{\nconst length=SIGRTMAX-SIGRTMIN+1;\nreturn Array.from({length},getRealtimeSignal)\n};\n\nconst getRealtimeSignal=(value,index)=>({\nname:`SIGRT${index+1}`,\nnumber:SIGRTMIN+index,\naction:\"terminate\",\ndescription:\"Application-specific signal (realtime)\",\nstandard:\"posix\"\n});\n\nconst SIGRTMIN=34;\nexport const SIGRTMAX=64;", "import{constants}from\"node:os\";\n\nimport{SIGNALS}from\"./core.js\";\nimport{getRealtimeSignals}from\"./realtime.js\";\n\n\n\nexport const getSignals=()=>{\nconst realtimeSignals=getRealtimeSignals();\nconst signals=[...SIGNALS,...realtimeSignals].map(normalizeSignal);\nreturn signals\n};\n\n\n\n\n\n\n\nconst normalizeSignal=({\nname,\nnumber:defaultNumber,\ndescription,\naction,\nforced=false,\nstandard\n})=>{\nconst{\nsignals:{[name]:constantSignal}\n}=constants;\nconst supported=constantSignal!==undefined;\nconst number=supported?constantSignal:defaultNumber;\nreturn{name,number,description,supported,action,forced,standard}\n};", "\n\nexport const SIGNALS=[\n{\nname:\"SIGHUP\",\nnumber:1,\naction:\"terminate\",\ndescription:\"Terminal closed\",\nstandard:\"posix\"\n},\n{\nname:\"SIGINT\",\nnumber:2,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-C\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGQUIT\",\nnumber:3,\naction:\"core\",\ndescription:\"User interruption with CTRL-\\\\\",\nstandard:\"posix\"\n},\n{\nname:\"SIGILL\",\nnumber:4,\naction:\"core\",\ndescription:\"Invalid machine instruction\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGTRAP\",\nnumber:5,\naction:\"core\",\ndescription:\"Debugger breakpoint\",\nstandard:\"posix\"\n},\n{\nname:\"SIGABRT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGIOT\",\nnumber:6,\naction:\"core\",\ndescription:\"Aborted\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGBUS\",\nnumber:7,\naction:\"core\",\ndescription:\n\"Bus error due to misaligned, non-existing address or paging error\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGEMT\",\nnumber:7,\naction:\"terminate\",\ndescription:\"Command should be emulated but is not implemented\",\nstandard:\"other\"\n},\n{\nname:\"SIGFPE\",\nnumber:8,\naction:\"core\",\ndescription:\"Floating point arithmetic error\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGKILL\",\nnumber:9,\naction:\"terminate\",\ndescription:\"Forced termination\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGUSR1\",\nnumber:10,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"\n},\n{\nname:\"SIGSEGV\",\nnumber:11,\naction:\"core\",\ndescription:\"Segmentation fault\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGUSR2\",\nnumber:12,\naction:\"terminate\",\ndescription:\"Application-specific signal\",\nstandard:\"posix\"\n},\n{\nname:\"SIGPIPE\",\nnumber:13,\naction:\"terminate\",\ndescription:\"Broken pipe or socket\",\nstandard:\"posix\"\n},\n{\nname:\"SIGALRM\",\nnumber:14,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"posix\"\n},\n{\nname:\"SIGTERM\",\nnumber:15,\naction:\"terminate\",\ndescription:\"Termination\",\nstandard:\"ansi\"\n},\n{\nname:\"SIGSTKFLT\",\nnumber:16,\naction:\"terminate\",\ndescription:\"Stack is empty or overflowed\",\nstandard:\"other\"\n},\n{\nname:\"SIGCHLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"posix\"\n},\n{\nname:\"SIGCLD\",\nnumber:17,\naction:\"ignore\",\ndescription:\"Child process terminated, paused or unpaused\",\nstandard:\"other\"\n},\n{\nname:\"SIGCONT\",\nnumber:18,\naction:\"unpause\",\ndescription:\"Unpaused\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGSTOP\",\nnumber:19,\naction:\"pause\",\ndescription:\"Paused\",\nstandard:\"posix\",\nforced:true\n},\n{\nname:\"SIGTSTP\",\nnumber:20,\naction:\"pause\",\ndescription:\"Paused using CTRL-Z or \\\"suspend\\\"\",\nstandard:\"posix\"\n},\n{\nname:\"SIGTTIN\",\nnumber:21,\naction:\"pause\",\ndescription:\"Background process cannot read terminal input\",\nstandard:\"posix\"\n},\n{\nname:\"SIGBREAK\",\nnumber:21,\naction:\"terminate\",\ndescription:\"User interruption with CTRL-BREAK\",\nstandard:\"other\"\n},\n{\nname:\"SIGTTOU\",\nnumber:22,\naction:\"pause\",\ndescription:\"Background process cannot write to terminal output\",\nstandard:\"posix\"\n},\n{\nname:\"SIGURG\",\nnumber:23,\naction:\"ignore\",\ndescription:\"Socket received out-of-band data\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGXCPU\",\nnumber:24,\naction:\"core\",\ndescription:\"Process timed out\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGXFSZ\",\nnumber:25,\naction:\"core\",\ndescription:\"File too big\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGVTALRM\",\nnumber:26,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGPROF\",\nnumber:27,\naction:\"terminate\",\ndescription:\"Timeout or timer\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGWINCH\",\nnumber:28,\naction:\"ignore\",\ndescription:\"Terminal window size changed\",\nstandard:\"bsd\"\n},\n{\nname:\"SIGIO\",\nnumber:29,\naction:\"terminate\",\ndescription:\"I/O is available\",\nstandard:\"other\"\n},\n{\nname:\"SIGPOLL\",\nnumber:29,\naction:\"terminate\",\ndescription:\"Watched event\",\nstandard:\"other\"\n},\n{\nname:\"SIGINFO\",\nnumber:29,\naction:\"ignore\",\ndescription:\"Request for process information\",\nstandard:\"other\"\n},\n{\nname:\"SIGPWR\",\nnumber:30,\naction:\"terminate\",\ndescription:\"Device running out of power\",\nstandard:\"systemv\"\n},\n{\nname:\"SIGSYS\",\nnumber:31,\naction:\"core\",\ndescription:\"Invalid system call\",\nstandard:\"other\"\n},\n{\nname:\"SIGUNUSED\",\nnumber:31,\naction:\"terminate\",\ndescription:\"Invalid system call\",\nstandard:\"other\"\n}];", "const aliases = ['stdin', 'stdout', 'stderr'];\n\nconst hasAlias = options => aliases.some(alias => options[alias] !== undefined);\n\nexport const normalizeStdio = options => {\n\tif (!options) {\n\t\treturn;\n\t}\n\n\tconst {stdio} = options;\n\n\tif (stdio === undefined) {\n\t\treturn aliases.map(alias => options[alias]);\n\t}\n\n\tif (hasAlias(options)) {\n\t\tthrow new Error(`It's not possible to provide \\`stdio\\` in combination with one of ${aliases.map(alias => `\\`${alias}\\``).join(', ')}`);\n\t}\n\n\tif (typeof stdio === 'string') {\n\t\treturn stdio;\n\t}\n\n\tif (!Array.isArray(stdio)) {\n\t\tthrow new TypeError(`Expected \\`stdio\\` to be of type \\`string\\` or \\`Array\\`, got \\`${typeof stdio}\\``);\n\t}\n\n\tconst length = Math.max(stdio.length, aliases.length);\n\treturn Array.from({length}, (value, index) => stdio[index]);\n};\n\n// `ipc` is pushed unless it is already present\nexport const normalizeStdioNode = options => {\n\tconst stdio = normalizeStdio(options);\n\n\tif (stdio === 'ipc') {\n\t\treturn 'ipc';\n\t}\n\n\tif (stdio === undefined || typeof stdio === 'string') {\n\t\treturn [stdio, stdio, stdio, 'ipc'];\n\t}\n\n\tif (stdio.includes('ipc')) {\n\t\treturn stdio;\n\t}\n\n\treturn [...stdio, 'ipc'];\n};\n", "import os from 'node:os';\nimport {onExit} from 'signal-exit';\n\nconst DEFAULT_FORCE_KILL_TIMEOUT = 1000 * 5;\n\n// Monkey-patches `childProcess.kill()` to add `forceKillAfterTimeout` behavior\nexport const spawnedKill = (kill, signal = 'SIGTERM', options = {}) => {\n\tconst killResult = kill(signal);\n\tsetKillTimeout(kill, signal, options, killResult);\n\treturn killResult;\n};\n\nconst setKillTimeout = (kill, signal, options, killResult) => {\n\tif (!shouldForceKill(signal, options, killResult)) {\n\t\treturn;\n\t}\n\n\tconst timeout = getForceKillAfterTimeout(options);\n\tconst t = setTimeout(() => {\n\t\tkill('SIGKILL');\n\t}, timeout);\n\n\t// Guarded because there's no `.unref()` when `execa` is used in the renderer\n\t// process in Electron. This cannot be tested since we don't run tests in\n\t// Electron.\n\t// istanbul ignore else\n\tif (t.unref) {\n\t\tt.unref();\n\t}\n};\n\nconst shouldForceKill = (signal, {forceKillAfterTimeout}, killResult) => isSigterm(signal) && forceKillAfterTimeout !== false && killResult;\n\nconst isSigterm = signal => signal === os.constants.signals.SIGTERM\n\t\t|| (typeof signal === 'string' && signal.toUpperCase() === 'SIGTERM');\n\nconst getForceKillAfterTimeout = ({forceKillAfterTimeout = true}) => {\n\tif (forceKillAfterTimeout === true) {\n\t\treturn DEFAULT_FORCE_KILL_TIMEOUT;\n\t}\n\n\tif (!Number.isFinite(forceKillAfterTimeout) || forceKillAfterTimeout < 0) {\n\t\tthrow new TypeError(`Expected the \\`forceKillAfterTimeout\\` option to be a non-negative integer, got \\`${forceKillAfterTimeout}\\` (${typeof forceKillAfterTimeout})`);\n\t}\n\n\treturn forceKillAfterTimeout;\n};\n\n// `childProcess.cancel()`\nexport const spawnedCancel = (spawned, context) => {\n\tconst killResult = spawned.kill();\n\n\tif (killResult) {\n\t\tcontext.isCanceled = true;\n\t}\n};\n\nconst timeoutKill = (spawned, signal, reject) => {\n\tspawned.kill(signal);\n\treject(Object.assign(new Error('Timed out'), {timedOut: true, signal}));\n};\n\n// `timeout` option handling\nexport const setupTimeout = (spawned, {timeout, killSignal = 'SIGTERM'}, spawnedPromise) => {\n\tif (timeout === 0 || timeout === undefined) {\n\t\treturn spawnedPromise;\n\t}\n\n\tlet timeoutId;\n\tconst timeoutPromise = new Promise((resolve, reject) => {\n\t\ttimeoutId = setTimeout(() => {\n\t\t\ttimeoutKill(spawned, killSignal, reject);\n\t\t}, timeout);\n\t});\n\n\tconst safeSpawnedPromise = spawnedPromise.finally(() => {\n\t\tclearTimeout(timeoutId);\n\t});\n\n\treturn Promise.race([timeoutPromise, safeSpawnedPromise]);\n};\n\nexport const validateTimeout = ({timeout}) => {\n\tif (timeout !== undefined && (!Number.isFinite(timeout) || timeout < 0)) {\n\t\tthrow new TypeError(`Expected the \\`timeout\\` option to be a non-negative integer, got \\`${timeout}\\` (${typeof timeout})`);\n\t}\n};\n\n// `cleanup` option handling\nexport const setExitHandler = async (spawned, {cleanup, detached}, timedPromise) => {\n\tif (!cleanup || detached) {\n\t\treturn timedPromise;\n\t}\n\n\tconst removeExitHandler = onExit(() => {\n\t\tspawned.kill();\n\t});\n\n\treturn timedPromise.finally(() => {\n\t\tremoveExitHandler();\n\t});\n};\n", "/**\n * This is not the set of all possible signals.\n *\n * It IS, however, the set of all signals that trigger\n * an exit on either Linux or BSD systems. Linux is a\n * superset of the signal names supported on BSD, and\n * the unknown signals just fail to register, so we can\n * catch that easily enough.\n *\n * Windows signals are a different set, since there are\n * signals that terminate Windows processes, but don't\n * terminate (or don't even exist) on Posix systems.\n *\n * Don't bother with SIGKILL. It's uncatchable, which\n * means that we can't fire any callbacks anyway.\n *\n * If a user does happen to register a handler on a non-\n * fatal signal like SIGWINCH or something, and then\n * exit, it'll end up firing `process.emit('exit')`, so\n * the handler will be fired anyway.\n *\n * SIGBUS, SIGFPE, SIGSEGV and SIGILL, when not raised\n * artificially, inherently leave the process in a\n * state from which it is not safe to try and enter JS\n * listeners.\n */\nexport const signals: NodeJS.Signals[] = []\nsignals.push('SIGHUP', 'SIGINT', 'SIGTERM')\n\nif (process.platform !== 'win32') {\n signals.push(\n 'SIGALRM',\n 'SIGABRT',\n 'SIGVTALRM',\n 'SIGXCPU',\n 'SIGXFSZ',\n 'SIGUSR2',\n 'SIGTRAP',\n 'SIGSYS',\n 'SIGQUIT',\n 'SIGIOT'\n // should detect profiler and enable/disable accordingly.\n // see #21\n // 'SIGPROF'\n )\n}\n\nif (process.platform === 'linux') {\n signals.push('SIGIO', 'SIGPOLL', 'SIGPWR', 'SIGSTKFLT')\n}\n", "// Note: since nyc uses this module to output coverage, any lines\n// that are in the direct sync flow of nyc's outputCoverage are\n// ignored, since we can never get coverage for them.\n// grab a reference to node's real process object right away\nimport { signals } from './signals.js'\nexport { signals }\n\n// just a loosened process type so we can do some evil things\ntype ProcessRE = NodeJS.Process & {\n reallyExit: (code?: number | undefined | null) => any\n emit: (ev: string, ...a: any[]) => any\n}\n\nconst processOk = (process: any): process is ProcessRE =>\n !!process &&\n typeof process === 'object' &&\n typeof process.removeListener === 'function' &&\n typeof process.emit === 'function' &&\n typeof process.reallyExit === 'function' &&\n typeof process.listeners === 'function' &&\n typeof process.kill === 'function' &&\n typeof process.pid === 'number' &&\n typeof process.on === 'function'\n\nconst kExitEmitter = Symbol.for('signal-exit emitter')\nconst global: typeof globalThis & { [kExitEmitter]?: Emitter } = globalThis\nconst ObjectDefineProperty = Object.defineProperty.bind(Object)\n\n/**\n * A function that takes an exit code and signal as arguments\n *\n * In the case of signal exits *only*, a return value of true\n * will indicate that the signal is being handled, and we should\n * not synthetically exit with the signal we received. Regardless\n * of the handler return value, the handler is unloaded when an\n * otherwise fatal signal is received, so you get exactly 1 shot\n * at it, unless you add another onExit handler at that point.\n *\n * In the case of numeric code exits, we may already have committed\n * to exiting the process, for example via a fatal exception or\n * unhandled promise rejection, so it is impossible to stop safely.\n */\nexport type Handler = (\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n) => true | void\ntype ExitEvent = 'afterExit' | 'exit'\ntype Emitted = { [k in ExitEvent]: boolean }\ntype Listeners = { [k in ExitEvent]: Handler[] }\n\n// teeny special purpose ee\nclass Emitter {\n emitted: Emitted = {\n afterExit: false,\n exit: false,\n }\n\n listeners: Listeners = {\n afterExit: [],\n exit: [],\n }\n\n count: number = 0\n id: number = Math.random()\n\n constructor() {\n if (global[kExitEmitter]) {\n return global[kExitEmitter]\n }\n ObjectDefineProperty(global, kExitEmitter, {\n value: this,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n }\n\n on(ev: ExitEvent, fn: Handler) {\n this.listeners[ev].push(fn)\n }\n\n removeListener(ev: ExitEvent, fn: Handler) {\n const list = this.listeners[ev]\n const i = list.indexOf(fn)\n /* c8 ignore start */\n if (i === -1) {\n return\n }\n /* c8 ignore stop */\n if (i === 0 && list.length === 1) {\n list.length = 0\n } else {\n list.splice(i, 1)\n }\n }\n\n emit(\n ev: ExitEvent,\n code: number | null | undefined,\n signal: NodeJS.Signals | null\n ): boolean {\n if (this.emitted[ev]) {\n return false\n }\n this.emitted[ev] = true\n let ret: boolean = false\n for (const fn of this.listeners[ev]) {\n ret = fn(code, signal) === true || ret\n }\n if (ev === 'exit') {\n ret = this.emit('afterExit', code, signal) || ret\n }\n return ret\n }\n}\n\nabstract class SignalExitBase {\n abstract onExit(cb: Handler, opts?: { alwaysLast?: boolean }): () => void\n abstract load(): void\n abstract unload(): void\n}\n\nconst signalExitWrap = <T extends SignalExitBase>(handler: T) => {\n return {\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n return handler.onExit(cb, opts)\n },\n load() {\n return handler.load()\n },\n unload() {\n return handler.unload()\n },\n }\n}\n\nclass SignalExitFallback extends SignalExitBase {\n onExit() {\n return () => {}\n }\n load() {}\n unload() {}\n}\n\nclass SignalExit extends SignalExitBase {\n // \"SIGHUP\" throws an `ENOSYS` error on Windows,\n // so use a supported signal instead\n /* c8 ignore start */\n #hupSig = process.platform === 'win32' ? 'SIGINT' : 'SIGHUP'\n /* c8 ignore stop */\n #emitter = new Emitter()\n #process: ProcessRE\n #originalProcessEmit: ProcessRE['emit']\n #originalProcessReallyExit: ProcessRE['reallyExit']\n\n #sigListeners: { [k in NodeJS.Signals]?: () => void } = {}\n #loaded: boolean = false\n\n constructor(process: ProcessRE) {\n super()\n this.#process = process\n // { <signal>: <listener fn>, ... }\n this.#sigListeners = {}\n for (const sig of signals) {\n this.#sigListeners[sig] = () => {\n // If there are no other listeners, an exit is coming!\n // Simplest way: remove us and then re-send the signal.\n // We know that this will kill the process, so we can\n // safely emit now.\n const listeners = this.#process.listeners(sig)\n let { count } = this.#emitter\n // This is a workaround for the fact that signal-exit v3 and signal\n // exit v4 are not aware of each other, and each will attempt to let\n // the other handle it, so neither of them do. To correct this, we\n // detect if we're the only handler *except* for previous versions\n // of signal-exit, and increment by the count of listeners it has\n // created.\n /* c8 ignore start */\n const p = process as unknown as {\n __signal_exit_emitter__?: { count: number }\n }\n if (\n typeof p.__signal_exit_emitter__ === 'object' &&\n typeof p.__signal_exit_emitter__.count === 'number'\n ) {\n count += p.__signal_exit_emitter__.count\n }\n /* c8 ignore stop */\n if (listeners.length === count) {\n this.unload()\n const ret = this.#emitter.emit('exit', null, sig)\n /* c8 ignore start */\n const s = sig === 'SIGHUP' ? this.#hupSig : sig\n if (!ret) process.kill(process.pid, s)\n /* c8 ignore stop */\n }\n }\n }\n\n this.#originalProcessReallyExit = process.reallyExit\n this.#originalProcessEmit = process.emit\n }\n\n onExit(cb: Handler, opts?: { alwaysLast?: boolean }) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return () => {}\n }\n /* c8 ignore stop */\n\n if (this.#loaded === false) {\n this.load()\n }\n\n const ev = opts?.alwaysLast ? 'afterExit' : 'exit'\n this.#emitter.on(ev, cb)\n return () => {\n this.#emitter.removeListener(ev, cb)\n if (\n this.#emitter.listeners['exit'].length === 0 &&\n this.#emitter.listeners['afterExit'].length === 0\n ) {\n this.unload()\n }\n }\n }\n\n load() {\n if (this.#loaded) {\n return\n }\n this.#loaded = true\n\n // This is the number of onSignalExit's that are in play.\n // It's important so that we can count the correct number of\n // listeners on signals, and don't wait for the other one to\n // handle it instead of us.\n this.#emitter.count += 1\n\n for (const sig of signals) {\n try {\n const fn = this.#sigListeners[sig]\n if (fn) this.#process.on(sig, fn)\n } catch (_) {}\n }\n\n this.#process.emit = (ev: string, ...a: any[]) => {\n return this.#processEmit(ev, ...a)\n }\n this.#process.reallyExit = (code?: number | null | undefined) => {\n return this.#processReallyExit(code)\n }\n }\n\n unload() {\n if (!this.#loaded) {\n return\n }\n this.#loaded = false\n\n signals.forEach(sig => {\n const listener = this.#sigListeners[sig]\n /* c8 ignore start */\n if (!listener) {\n throw new Error('Listener not defined for signal: ' + sig)\n }\n /* c8 ignore stop */\n try {\n this.#process.removeListener(sig, listener)\n /* c8 ignore start */\n } catch (_) {}\n /* c8 ignore stop */\n })\n this.#process.emit = this.#originalProcessEmit\n this.#process.reallyExit = this.#originalProcessReallyExit\n this.#emitter.count -= 1\n }\n\n #processReallyExit(code?: number | null | undefined) {\n /* c8 ignore start */\n if (!processOk(this.#process)) {\n return 0\n }\n this.#process.exitCode = code || 0\n /* c8 ignore stop */\n\n this.#emitter.emit('exit', this.#process.exitCode, null)\n return this.#originalProcessReallyExit.call(\n this.#process,\n this.#process.exitCode\n )\n }\n\n #processEmit(ev: string, ...args: any[]): any {\n const og = this.#originalProcessEmit\n if (ev === 'exit' && processOk(this.#process)) {\n if (typeof args[0] === 'number') {\n this.#process.exitCode = args[0]\n /* c8 ignore start */\n }\n /* c8 ignore start */\n const ret = og.call(this.#process, ev, ...args)\n /* c8 ignore start */\n this.#emitter.emit('exit', this.#process.exitCode, null)\n /* c8 ignore stop */\n return ret\n } else {\n return og.call(this.#process, ev, ...args)\n }\n }\n}\n\nconst process = globalThis.process\n// wrap so that we call the method on the actual handler, without\n// exporting it directly.\nexport const {\n /**\n * Called when the process is exiting, whether via signal, explicit\n * exit, or running out of stuff to do.\n *\n * If the global process object is not suitable for instrumentation,\n * then this will be a no-op.\n *\n * Returns a function that may be used to unload signal-exit.\n */\n onExit,\n\n /**\n * Load the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n load,\n\n /**\n * Unload the listeners. Likely you never need to call this, unless\n * doing a rather deep integration with signal-exit functionality.\n * Mostly exposed for the benefit of testing.\n *\n * @internal\n */\n unload,\n} = signalExitWrap(\n processOk(process) ? new SignalExit(process) : new SignalExitFallback()\n)\n", "import {createWriteStream} from 'node:fs';\nimport {ChildProcess} from 'node:child_process';\nimport {isWritableStream} from 'is-stream';\n\nconst isExecaChildProcess = target => target instanceof ChildProcess && typeof target.then === 'function';\n\nconst pipeToTarget = (spawned, streamName, target) => {\n\tif (typeof target === 'string') {\n\t\tspawned[streamName].pipe(createWriteStream(target));\n\t\treturn spawned;\n\t}\n\n\tif (isWritableStream(target)) {\n\t\tspawned[streamName].pipe(target);\n\t\treturn spawned;\n\t}\n\n\tif (!isExecaChildProcess(target)) {\n\t\tthrow new TypeError('The second argument must be a string, a stream or an Execa child process.');\n\t}\n\n\tif (!isWritableStream(target.stdin)) {\n\t\tthrow new TypeError('The target child process\\'s stdin must be available.');\n\t}\n\n\tspawned[streamName].pipe(target.stdin);\n\treturn target;\n};\n\nexport const addPipeMethods = spawned => {\n\tif (spawned.stdout !== null) {\n\t\tspawned.pipeStdout = pipeToTarget.bind(undefined, spawned, 'stdout');\n\t}\n\n\tif (spawned.stderr !== null) {\n\t\tspawned.pipeStderr = pipeToTarget.bind(undefined, spawned, 'stderr');\n\t}\n\n\tif (spawned.all !== undefined) {\n\t\tspawned.pipeAll = pipeToTarget.bind(undefined, spawned, 'all');\n\t}\n};\n", "export function isStream(stream) {\n\treturn stream !== null\n\t\t&& typeof stream === 'object'\n\t\t&& typeof stream.pipe === 'function';\n}\n\nexport function isWritableStream(stream) {\n\treturn isStream(stream)\n\t\t&& stream.writable !== false\n\t\t&& typeof stream._write === 'function'\n\t\t&& typeof stream._writableState === 'object';\n}\n\nexport function isReadableStream(stream) {\n\treturn isStream(stream)\n\t\t&& stream.readable !== false\n\t\t&& typeof stream._read === 'function'\n\t\t&& typeof stream._readableState === 'object';\n}\n\nexport function isDuplexStream(stream) {\n\treturn isWritableStream(stream)\n\t\t&& isReadableStream(stream);\n}\n\nexport function isTransformStream(stream) {\n\treturn isDuplexStream(stream)\n\t\t&& typeof stream._transform === 'function';\n}\n", "import {createReadStream, readFileSync} from 'node:fs';\nimport {setTimeout} from 'node:timers/promises';\nimport {isStream} from 'is-stream';\nimport getStream, {getStreamAsBuffer} from 'get-stream';\nimport mergeStream from 'merge-stream';\n\nconst validateInputOptions = input => {\n\tif (input !== undefined) {\n\t\tthrow new TypeError('The `input` and `inputFile` options cannot be both set.');\n\t}\n};\n\nconst getInputSync = ({input, inputFile}) => {\n\tif (typeof inputFile !== 'string') {\n\t\treturn input;\n\t}\n\n\tvalidateInputOptions(input);\n\treturn readFileSync(inputFile);\n};\n\n// `input` and `inputFile` option in sync mode\nexport const handleInputSync = options => {\n\tconst input = getInputSync(options);\n\n\tif (isStream(input)) {\n\t\tthrow new TypeError('The `input` option cannot be a stream in sync mode');\n\t}\n\n\treturn input;\n};\n\nconst getInput = ({input, inputFile}) => {\n\tif (typeof inputFile !== 'string') {\n\t\treturn input;\n\t}\n\n\tvalidateInputOptions(input);\n\treturn createReadStream(inputFile);\n};\n\n// `input` and `inputFile` option in async mode\nexport const handleInput = (spawned, options) => {\n\tconst input = getInput(options);\n\n\tif (input === undefined) {\n\t\treturn;\n\t}\n\n\tif (isStream(input)) {\n\t\tinput.pipe(spawned.stdin);\n\t} else {\n\t\tspawned.stdin.end(input);\n\t}\n};\n\n// `all` interleaves `stdout` and `stderr`\nexport const makeAllStream = (spawned, {all}) => {\n\tif (!all || (!spawned.stdout && !spawned.stderr)) {\n\t\treturn;\n\t}\n\n\tconst mixed = mergeStream();\n\n\tif (spawned.stdout) {\n\t\tmixed.add(spawned.stdout);\n\t}\n\n\tif (spawned.stderr) {\n\t\tmixed.add(spawned.stderr);\n\t}\n\n\treturn mixed;\n};\n\n// On failure, `result.stdout|stderr|all` should contain the currently buffered stream\nconst getBufferedData = async (stream, streamPromise) => {\n\t// When `buffer` is `false`, `streamPromise` is `undefined` and there is no buffered data to retrieve\n\tif (!stream || streamPromise === undefined) {\n\t\treturn;\n\t}\n\n\t// Wait for the `all` stream to receive the last chunk before destroying the stream\n\tawait setTimeout(0);\n\n\tstream.destroy();\n\n\ttry {\n\t\treturn await streamPromise;\n\t} catch (error) {\n\t\treturn error.bufferedData;\n\t}\n};\n\nconst getStreamPromise = (stream, {encoding, buffer, maxBuffer}) => {\n\tif (!stream || !buffer) {\n\t\treturn;\n\t}\n\n\t// eslint-disable-next-line unicorn/text-encoding-identifier-case\n\tif (encoding === 'utf8' || encoding === 'utf-8') {\n\t\treturn getStream(stream, {maxBuffer});\n\t}\n\n\tif (encoding === null || encoding === 'buffer') {\n\t\treturn getStreamAsBuffer(stream, {maxBuffer});\n\t}\n\n\treturn applyEncoding(stream, maxBuffer, encoding);\n};\n\nconst applyEncoding = async (stream, maxBuffer, encoding) => {\n\tconst buffer = await getStreamAsBuffer(stream, {maxBuffer});\n\treturn buffer.toString(encoding);\n};\n\n// Retrieve result of child process: exit code, signal, error, streams (stdout/stderr/all)\nexport const getSpawnedResult = async ({stdout, stderr, all}, {encoding, buffer, maxBuffer}, processDone) => {\n\tconst stdoutPromise = getStreamPromise(stdout, {encoding, buffer, maxBuffer});\n\tconst stderrPromise = getStreamPromise(stderr, {encoding, buffer, maxBuffer});\n\tconst allPromise = getStreamPromise(all, {encoding, buffer, maxBuffer: maxBuffer * 2});\n\n\ttry {\n\t\treturn await Promise.all([processDone, stdoutPromise, stderrPromise, allPromise]);\n\t} catch (error) {\n\t\treturn Promise.all([\n\t\t\t{error, signal: error.signal, timedOut: error.timedOut},\n\t\t\tgetBufferedData(stdout, stdoutPromise),\n\t\t\tgetBufferedData(stderr, stderrPromise),\n\t\t\tgetBufferedData(all, allPromise),\n\t\t]);\n\t}\n};\n", "export const getStreamContents = async (stream, {init, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, finalize}, {maxBuffer = Number.POSITIVE_INFINITY} = {}) => {\n\tif (!isAsyncIterable(stream)) {\n\t\tthrow new Error('The first argument must be a Readable, a ReadableStream, or an async iterable.');\n\t}\n\n\tconst state = init();\n\tstate.length = 0;\n\n\ttry {\n\t\tfor await (const chunk of stream) {\n\t\t\tconst chunkType = getChunkType(chunk);\n\t\t\tconst convertedChunk = convertChunk[chunkType](chunk, state);\n\t\t\tappendChunk({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer});\n\t\t}\n\n\t\tappendFinalChunk({state, convertChunk, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer});\n\t\treturn finalize(state);\n\t} catch (error) {\n\t\terror.bufferedData = finalize(state);\n\t\tthrow error;\n\t}\n};\n\nconst appendFinalChunk = ({state, getSize, truncateChunk, addChunk, getFinalChunk, maxBuffer}) => {\n\tconst convertedChunk = getFinalChunk(state);\n\tif (convertedChunk !== undefined) {\n\t\tappendChunk({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer});\n\t}\n};\n\nconst appendChunk = ({convertedChunk, state, getSize, truncateChunk, addChunk, maxBuffer}) => {\n\tconst chunkSize = getSize(convertedChunk);\n\tconst newLength = state.length + chunkSize;\n\n\tif (newLength <= maxBuffer) {\n\t\taddNewChunk(convertedChunk, state, addChunk, newLength);\n\t\treturn;\n\t}\n\n\tconst truncatedChunk = truncateChunk(convertedChunk, maxBuffer - state.length);\n\n\tif (truncatedChunk !== undefined) {\n\t\taddNewChunk(truncatedChunk, state, addChunk, maxBuffer);\n\t}\n\n\tthrow new MaxBufferError();\n};\n\nconst addNewChunk = (convertedChunk, state, addChunk, newLength) => {\n\tstate.contents = addChunk(convertedChunk, state, newLength);\n\tstate.length = newLength;\n};\n\nconst isAsyncIterable = stream => typeof stream === 'object' && stream !== null && typeof stream[Symbol.asyncIterator] === 'function';\n\nconst getChunkType = chunk => {\n\tconst typeOfChunk = typeof chunk;\n\n\tif (typeOfChunk === 'string') {\n\t\treturn 'string';\n\t}\n\n\tif (typeOfChunk !== 'object' || chunk === null) {\n\t\treturn 'others';\n\t}\n\n\t// eslint-disable-next-line n/prefer-global/buffer\n\tif (globalThis.Buffer?.isBuffer(chunk)) {\n\t\treturn 'buffer';\n\t}\n\n\tconst prototypeName = objectToString.call(chunk);\n\n\tif (prototypeName === '[object ArrayBuffer]') {\n\t\treturn 'arrayBuffer';\n\t}\n\n\tif (prototypeName === '[object DataView]') {\n\t\treturn 'dataView';\n\t}\n\n\tif (\n\t\tNumber.isInteger(chunk.byteLength)\n\t\t&& Number.isInteger(chunk.byteOffset)\n\t\t&& objectToString.call(chunk.buffer) === '[object ArrayBuffer]'\n\t) {\n\t\treturn 'typedArray';\n\t}\n\n\treturn 'others';\n};\n\nconst {toString: objectToString} = Object.prototype;\n\nexport class MaxBufferError extends Error {\n\tname = 'MaxBufferError';\n\n\tconstructor() {\n\t\tsuper('maxBuffer exceeded');\n\t}\n}\n", "export const identity = value => value;\n\nexport const noop = () => undefined;\n\nexport const getContentsProp = ({contents}) => contents;\n\nexport const throwObjectStream = chunk => {\n\tthrow new Error(`Streams in object mode are not supported: ${String(chunk)}`);\n};\n\nexport const getLengthProp = convertedChunk => convertedChunk.length;\n", "import {getStreamContents} from './contents.js';\nimport {noop, throwObjectStream, getLengthProp} from './utils.js';\n\nexport async function getStreamAsArrayBuffer(stream, options) {\n\treturn getStreamContents(stream, arrayBufferMethods, options);\n}\n\nconst initArrayBuffer = () => ({contents: new ArrayBuffer(0)});\n\nconst useTextEncoder = chunk => textEncoder.encode(chunk);\nconst textEncoder = new TextEncoder();\n\nconst useUint8Array = chunk => new Uint8Array(chunk);\n\nconst useUint8ArrayWithOffset = chunk => new Uint8Array(chunk.buffer, chunk.byteOffset, chunk.byteLength);\n\nconst truncateArrayBufferChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);\n\n// `contents` is an increasingly growing `Uint8Array`.\nconst addArrayBufferChunk = (convertedChunk, {contents, length: previousLength}, length) => {\n\tconst newContents = hasArrayBufferResize() ? resizeArrayBuffer(contents, length) : resizeArrayBufferSlow(contents, length);\n\tnew Uint8Array(newContents).set(convertedChunk, previousLength);\n\treturn newContents;\n};\n\n// Without `ArrayBuffer.resize()`, `contents` size is always a power of 2.\n// This means its last bytes are zeroes (not stream data), which need to be\n// trimmed at the end with `ArrayBuffer.slice()`.\nconst resizeArrayBufferSlow = (contents, length) => {\n\tif (length <= contents.byteLength) {\n\t\treturn contents;\n\t}\n\n\tconst arrayBuffer = new ArrayBuffer(getNewContentsLength(length));\n\tnew Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0);\n\treturn arrayBuffer;\n};\n\n// With `ArrayBuffer.resize()`, `contents` size matches exactly the size of\n// the stream data. It does not include extraneous zeroes to trim at the end.\n// The underlying `ArrayBuffer` does allocate a number of bytes that is a power\n// of 2, but those bytes are only visible after calling `ArrayBuffer.resize()`.\nconst resizeArrayBuffer = (contents, length) => {\n\tif (length <= contents.maxByteLength) {\n\t\tcontents.resize(length);\n\t\treturn contents;\n\t}\n\n\tconst arrayBuffer = new ArrayBuffer(length, {maxByteLength: getNewContentsLength(length)});\n\tnew Uint8Array(arrayBuffer).set(new Uint8Array(contents), 0);\n\treturn arrayBuffer;\n};\n\n// Retrieve the closest `length` that is both >= and a power of 2\nconst getNewContentsLength = length => SCALE_FACTOR ** Math.ceil(Math.log(length) / Math.log(SCALE_FACTOR));\n\nconst SCALE_FACTOR = 2;\n\nconst finalizeArrayBuffer = ({contents, length}) => hasArrayBufferResize() ? contents : contents.slice(0, length);\n\n// `ArrayBuffer.slice()` is slow. When `ArrayBuffer.resize()` is available\n// (Node >=20.0.0, Safari >=16.4 and Chrome), we can use it instead.\n// eslint-disable-next-line no-warning-comments\n// TODO: remove after dropping support for Node 20.\n// eslint-disable-next-line no-warning-comments\n// TODO: use `ArrayBuffer.transferToFixedLength()` instead once it is available\nconst hasArrayBufferResize = () => 'resize' in ArrayBuffer.prototype;\n\nconst arrayBufferMethods = {\n\tinit: initArrayBuffer,\n\tconvertChunk: {\n\t\tstring: useTextEncoder,\n\t\tbuffer: useUint8Array,\n\t\tarrayBuffer: useUint8Array,\n\t\tdataView: useUint8ArrayWithOffset,\n\t\ttypedArray: useUint8ArrayWithOffset,\n\t\tothers: throwObjectStream,\n\t},\n\tgetSize: getLengthProp,\n\ttruncateChunk: truncateArrayBufferChunk,\n\taddChunk: addArrayBufferChunk,\n\tgetFinalChunk: noop,\n\tfinalize: finalizeArrayBuffer,\n};\n", "import {getStreamAsArrayBuffer} from './array-buffer.js';\n\nexport async function getStreamAsBuffer(stream, options) {\n\tif (!('Buffer' in globalThis)) {\n\t\tthrow new Error('getStreamAsBuffer() is only supported in Node.js');\n\t}\n\n\ttry {\n\t\treturn arrayBufferToNodeBuffer(await getStreamAsArrayBuffer(stream, options));\n\t} catch (error) {\n\t\tif (error.bufferedData !== undefined) {\n\t\t\terror.bufferedData = arrayBufferToNodeBuffer(error.bufferedData);\n\t\t}\n\n\t\tthrow error;\n\t}\n}\n\n// eslint-disable-next-line n/prefer-global/buffer\nconst arrayBufferToNodeBuffer = arrayBuffer => globalThis.Buffer.from(arrayBuffer);\n", "import {getStreamContents} from './contents.js';\nimport {identity, getContentsProp, throwObjectStream, getLengthProp} from './utils.js';\n\nexport async function getStreamAsString(stream, options) {\n\treturn getStreamContents(stream, stringMethods, options);\n}\n\nconst initString = () => ({contents: '', textDecoder: new TextDecoder()});\n\nconst useTextDecoder = (chunk, {textDecoder}) => textDecoder.decode(chunk, {stream: true});\n\nconst addStringChunk = (convertedChunk, {contents}) => contents + convertedChunk;\n\nconst truncateStringChunk = (convertedChunk, chunkSize) => convertedChunk.slice(0, chunkSize);\n\nconst getFinalStringChunk = ({textDecoder}) => {\n\tconst finalChunk = textDecoder.decode();\n\treturn finalChunk === '' ? undefined : finalChunk;\n};\n\nconst stringMethods = {\n\tinit: initString,\n\tconvertChunk: {\n\t\tstring: identity,\n\t\tbuffer: useTextDecoder,\n\t\tarrayBuffer: useTextDecoder,\n\t\tdataView: useTextDecoder,\n\t\ttypedArray: useTextDecoder,\n\t\tothers: throwObjectStream,\n\t},\n\tgetSize: getLengthProp,\n\ttruncateChunk: truncateStringChunk,\n\taddChunk: addStringChunk,\n\tgetFinalChunk: getFinalStringChunk,\n\tfinalize: getContentsProp,\n};\n", "// eslint-disable-next-line unicorn/prefer-top-level-await\nconst nativePromisePrototype = (async () => {})().constructor.prototype;\n\nconst descriptors = ['then', 'catch', 'finally'].map(property => [\n\tproperty,\n\tReflect.getOwnPropertyDescriptor(nativePromisePrototype, property),\n]);\n\n// The return value is a mixin of `childProcess` and `Promise`\nexport const mergePromise = (spawned, promise) => {\n\tfor (const [property, descriptor] of descriptors) {\n\t\t// Starting the main `promise` is deferred to avoid consuming streams\n\t\tconst value = typeof promise === 'function'\n\t\t\t? (...args) => Reflect.apply(descriptor.value, promise(), args)\n\t\t\t: descriptor.value.bind(promise);\n\n\t\tReflect.defineProperty(spawned, property, {...descriptor, value});\n\t}\n};\n\n// Use promises instead of `child_process` events\nexport const getSpawnedPromise = spawned => new Promise((resolve, reject) => {\n\tspawned.on('exit', (exitCode, signal) => {\n\t\tresolve({exitCode, signal});\n\t});\n\n\tspawned.on('error', error => {\n\t\treject(error);\n\t});\n\n\tif (spawned.stdin) {\n\t\tspawned.stdin.on('error', error => {\n\t\t\treject(error);\n\t\t});\n\t}\n});\n", "import {Buffer} from 'node:buffer';\nimport {ChildProcess} from 'node:child_process';\n\nconst normalizeArgs = (file, args = []) => {\n\tif (!Array.isArray(args)) {\n\t\treturn [file];\n\t}\n\n\treturn [file, ...args];\n};\n\nconst NO_ESCAPE_REGEXP = /^[\\w.-]+$/;\n\nconst escapeArg = arg => {\n\tif (typeof arg !== 'string' || NO_ESCAPE_REGEXP.test(arg)) {\n\t\treturn arg;\n\t}\n\n\treturn `\"${arg.replaceAll('\"', '\\\\\"')}\"`;\n};\n\nexport const joinCommand = (file, args) => normalizeArgs(file, args).join(' ');\n\nexport const getEscapedCommand = (file, args) => normalizeArgs(file, args).map(arg => escapeArg(arg)).join(' ');\n\nconst SPACES_REGEXP = / +/g;\n\n// Handle `execaCommand()`\nexport const parseCommand = command => {\n\tconst tokens = [];\n\tfor (const token of command.trim().split(SPACES_REGEXP)) {\n\t\t// Allow spaces to be escaped by a backslash if not meant as a delimiter\n\t\tconst previousToken = tokens.at(-1);\n\t\tif (previousToken && previousToken.endsWith('\\\\')) {\n\t\t\t// Merge previous token with current one\n\t\t\ttokens[tokens.length - 1] = `${previousToken.slice(0, -1)} ${token}`;\n\t\t} else {\n\t\t\ttokens.push(token);\n\t\t}\n\t}\n\n\treturn tokens;\n};\n\nconst parseExpression = expression => {\n\tconst typeOfExpression = typeof expression;\n\n\tif (typeOfExpression === 'string') {\n\t\treturn expression;\n\t}\n\n\tif (typeOfExpression === 'number') {\n\t\treturn String(expression);\n\t}\n\n\tif (\n\t\ttypeOfExpression === 'object'\n\t\t&& expression !== null\n\t\t&& !(expression instanceof ChildProcess)\n\t\t&& 'stdout' in expression\n\t) {\n\t\tconst typeOfStdout = typeof expression.stdout;\n\n\t\tif (typeOfStdout === 'string') {\n\t\t\treturn expression.stdout;\n\t\t}\n\n\t\tif (Buffer.isBuffer(expression.stdout)) {\n\t\t\treturn expression.stdout.toString();\n\t\t}\n\n\t\tthrow new TypeError(`Unexpected \"${typeOfStdout}\" stdout in template expression`);\n\t}\n\n\tthrow new TypeError(`Unexpected \"${typeOfExpression}\" in template expression`);\n};\n\nconst concatTokens = (tokens, nextTokens, isNew) => isNew || tokens.length === 0 || nextTokens.length === 0\n\t? [...tokens, ...nextTokens]\n\t: [\n\t\t...tokens.slice(0, -1),\n\t\t`${tokens.at(-1)}${nextTokens[0]}`,\n\t\t...nextTokens.slice(1),\n\t];\n\nconst parseTemplate = ({templates, expressions, tokens, index, template}) => {\n\tconst templateString = template ?? templates.raw[index];\n\tconst templateTokens = templateString.split(SPACES_REGEXP).filter(Boolean);\n\tconst newTokens = concatTokens(\n\t\ttokens,\n\t\ttemplateTokens,\n\t\ttemplateString.startsWith(' '),\n\t);\n\n\tif (index === expressions.length) {\n\t\treturn newTokens;\n\t}\n\n\tconst expression = expressions[index];\n\tconst expressionTokens = Array.isArray(expression)\n\t\t? expression.map(expression => parseExpression(expression))\n\t\t: [parseExpression(expression)];\n\treturn concatTokens(\n\t\tnewTokens,\n\t\texpressionTokens,\n\t\ttemplateString.endsWith(' '),\n\t);\n};\n\nexport const parseTemplates = (templates, expressions) => {\n\tlet tokens = [];\n\n\tfor (const [index, template] of templates.entries()) {\n\t\ttokens = parseTemplate({templates, expressions, tokens, index, template});\n\t}\n\n\treturn tokens;\n};\n\n", "import {debuglog} from 'node:util';\nimport process from 'node:process';\n\nexport const verboseDefault = debuglog('execa').enabled;\n\nconst padField = (field, padding) => String(field).padStart(padding, '0');\n\nconst getTimestamp = () => {\n\tconst date = new Date();\n\treturn `${padField(date.getHours(), 2)}:${padField(date.getMinutes(), 2)}:${padField(date.getSeconds(), 2)}.${padField(date.getMilliseconds(), 3)}`;\n};\n\nexport const logCommand = (escapedCommand, {verbose}) => {\n\tif (!verbose) {\n\t\treturn;\n\t}\n\n\tprocess.stderr.write(`[${getTimestamp()}] ${escapedCommand}\\n`);\n};\n", "import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport crypto from \"node:crypto\";\nimport os from \"node:os\";\n\nconst enabled = os.platform() === \"linux\";\nconst cacheRoot = process.env.XDG_CACHE_HOME ?? path.join(os.homedir(), \".cache\");\nlet cacheDir = path.join(cacheRoot, \"npm-pkg-lint\");\n\n/* istanbul ignore next */\nfunction getFilePath(key: string): string {\n\tconst hash = crypto.createHash(\"md5\").update(key).digest(\"hex\");\n\tconst filename = `${hash.slice(0, 2)}/${hash.slice(2)}.json`;\n\treturn path.join(cacheDir, filename);\n}\n\n/* istanbul ignore next */\nexport async function setCacheDirecory(directory: string): Promise<void> {\n\tawait fs.mkdir(directory, { recursive: true });\n\tcacheDir = directory;\n}\n\n/* istanbul ignore next */\nexport async function persistentCacheGet(key: string): Promise<unknown | null> {\n\tif (!enabled) {\n\t\treturn null;\n\t}\n\n\tconst filePath = getFilePath(key);\n\ttry {\n\t\tconst content = await fs.readFile(filePath, \"utf-8\");\n\t\treturn JSON.parse(content) as unknown;\n\t} catch (err: unknown) {\n\t\tif (err instanceof Error && \"code\" in err && err.code === \"ENOENT\") {\n\t\t\treturn null;\n\t\t}\n\t\tthrow err;\n\t}\n}\n\n/* istanbul ignore next */\nexport async function persistentCacheSet(key: string, data: unknown): Promise<void> {\n\tif (!enabled) {\n\t\treturn;\n\t}\n\n\tconst filePath = getFilePath(key);\n\tconst content = JSON.stringify(data, null, 2);\n\tawait fs.mkdir(path.dirname(filePath), { recursive: true });\n\tawait fs.writeFile(filePath, content, \"utf-8\");\n}\n", "import { execa } from \"execa\";\nimport { type PackageJson } from \"../types\";\nimport { persistentCacheGet, persistentCacheSet } from \"./persistent-cache\";\n\nexport interface NpmInfo {\n\tdeprecated?: string;\n}\n\nexport interface NpmInfoError {\n\tcode: string;\n\tsummary: string;\n\tdetail: string;\n}\n\nexport interface ExecaError extends Error {\n\tstdout: string;\n}\n\nconst cache = new Map<string, PackageJson | null>();\n\nfunction isExecaError(error: unknown): error is ExecaError {\n\treturn Boolean(error && error instanceof Error && \"stdout\" in error);\n}\n\nexport function isNpmInfoError(error: unknown): error is NpmInfoError {\n\treturn Boolean(error && error instanceof Error && \"summary\" in error);\n}\n\nfunction tryParse(maybeJson: string): { error: NpmInfoError } | null {\n\ttry {\n\t\treturn JSON.parse(maybeJson) as { error: NpmInfoError };\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport async function npmInfo(pkg: string): Promise<PackageJson & NpmInfo>;\nexport async function npmInfo(\n\tpkg: string,\n\toptions: { ignoreUnpublished: true },\n): Promise<(PackageJson & NpmInfo) | null>;\nexport async function npmInfo(\n\tpkg: string,\n\toptions: { ignoreUnpublished: boolean } = { ignoreUnpublished: false },\n): Promise<(PackageJson & NpmInfo) | null> {\n\tconst { ignoreUnpublished } = options;\n\tconst cached = cache.get(pkg);\n\tif (cached === null) {\n\t\tif (ignoreUnpublished) {\n\t\t\treturn null;\n\t\t}\n\t} else if (cached) {\n\t\treturn cached;\n\t}\n\n\tconst persistent = await persistentCacheGet(pkg);\n\tif (persistent) {\n\t\treturn persistent as PackageJson;\n\t}\n\n\ttry {\n\t\tconst result = await execa(\"npm\", [\"info\", \"--json\", pkg]);\n\t\tconst pkgData = JSON.parse(result.stdout) as PackageJson;\n\t\tcache.set(pkg, pkgData);\n\t\tawait persistentCacheSet(pkg, pkgData);\n\t\treturn pkgData;\n\t} catch (err: unknown) {\n\t\tif (!isExecaError(err)) {\n\t\t\tthrow err;\n\t\t}\n\t\tconst parsed = tryParse(err.stdout);\n\t\tif (!parsed) {\n\t\t\tthrow err;\n\t\t}\n\t\tconst { code, summary, detail } = parsed.error;\n\n\t\t/* cache for this session but don't store in persistent cache as this\n\t\t * error might be temporary */\n\t\tcache.set(pkg, null);\n\n\t\tif (ignoreUnpublished && code === \"E404\") {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst wrappedError = new Error(summary, { cause: err }) as Error & NpmInfoError;\n\t\twrappedError.code = code;\n\t\twrappedError.summary = summary;\n\t\twrappedError.detail = detail;\n\t\tthrow wrappedError;\n\t}\n}\n", "/* eslint-disable security/detect-non-literal-regexp -- expected to be non-literal */\n\nimport { type PackageJson } from \"../types\";\n\nfunction exact(name: string): RegExp {\n\treturn new RegExp(`^${name}$`);\n}\nfunction scope(scope: string): RegExp {\n\treturn new RegExp(`^${scope}/`);\n}\n\nfunction prefix(prefix: string): RegExp {\n\treturn new RegExp(`^${prefix}(-.+)?`);\n}\n\nfunction scopedPrefix(prefix: string): RegExp {\n\treturn new RegExp(`^(.*)/${prefix}(-.+)?`);\n}\n\nconst disallowedDependencies: RegExp[] = [\n\texact(\"ava\"),\n\texact(\"jake\"),\n\texact(\"tsd\"),\n\texact(\"xo\"),\n\tprefix(\"babel-core\"),\n\tprefix(\"cypress\"),\n\tprefix(\"grunt\"),\n\tprefix(\"gulp\"),\n\tprefix(\"html-validate\"),\n\tprefix(\"jasmine\"),\n\tprefix(\"mocha\"),\n\tprefix(\"nyc\"),\n\tprefix(\"protractor\"),\n\tprefix(\"ts-node\"),\n\tprefix(\"typescript\"),\n\tprefix(\"webpack\"),\n\tscope(\"@babel\"),\n\tscope(\"@types\"),\n];\n\nconst disallowedEslint: RegExp[] = [\n\texact(\"eslint\"),\n\tprefix(\"eslint-config\"),\n\tprefix(\"eslint-formatter\"),\n\tprefix(\"eslint-plugin\"),\n\tscopedPrefix(\"eslint-config\"),\n\tscopedPrefix(\"eslint-formatter\"),\n\tscopedPrefix(\"eslint-plugin\"),\n];\n\nconst disallowedJest: RegExp[] = [\n\texact(\"jest\"),\n\texact(\"babel-jest\"),\n\texact(\"ts-jest\"),\n\tprefix(\"jest-\"),\n\tscope(\"@jest\"),\n];\n\nconst disallowedPrettier: RegExp[] = [\n\texact(\"prettier\"),\n\tprefix(\"prettier-\"),\n\tscopedPrefix(\"prettier-\"),\n];\n\nconst allowedDependencies: string[] = [\n\t\"@babel/code-frame\",\n\t\"@babel/polyfill\",\n\t\"@babel/runtime\",\n\t\"gulp-utils\",\n\t\"jest-diff\",\n\t\"webpack-sources\",\n];\n\nfunction match(list: RegExp[], dependency: string): boolean {\n\treturn list.some((it) => dependency.match(it));\n}\n\nexport function isDisallowedDependency(pkg: PackageJson, dependency: string): boolean {\n\t/* test if dependency is explicitly listed as allowed */\n\tif (allowedDependencies.includes(dependency)) {\n\t\treturn false;\n\t}\n\n\tconst keywords = pkg.keywords ?? [];\n\n\t/* eslint-* is allowed only if keywords includes \"eslint\" */\n\tif (!keywords.includes(\"eslint\") && match(disallowedEslint, dependency)) {\n\t\treturn true;\n\t}\n\n\t/* jest-* is allowed only if keywords includes \"jest\" */\n\tif (!keywords.includes(\"jest\") && match(disallowedJest, dependency)) {\n\t\treturn true;\n\t}\n\n\t/* prettier-* is allowed only if keywords includes \"prettier\" */\n\tif (!keywords.includes(\"prettier\") && match(disallowedPrettier, dependency)) {\n\t\treturn true;\n\t}\n\n\t/* test if dependency is explicitly listed as disallowed */\n\treturn match(disallowedDependencies, dependency);\n}\n", "export interface ObsoleteDependency {\n\tpackage: string;\n\tmessage: string;\n}\n\nconst obsolete: ObsoleteDependency[] = [\n\t{ package: \"make-dir\", message: `use native \"fs.mkdir(..., { recursive: true })\" instead` },\n\t{ package: \"mkdirp\", message: `use native \"fs.mkdir(..., { recursive: true })\" instead` },\n\t{ package: \"stable\", message: `Array#sort is stable in all current implementations` },\n];\n\nexport function isObsoleteDependency(dependency: string): ObsoleteDependency | false {\n\treturn obsolete.find((it) => it.package === dependency) ?? false;\n}\n", "import { Severity } from \"@html-validate/stylish\";\nimport { type Message } from \"../message\";\nimport { type PackageJson, type PackageJsonExports } from \"../types\";\n\nconst ruleId = \"exports-types-order\";\nconst severity = Severity.ERROR;\n\nfunction* validateOrder(\n\tvalue: string | PackageJsonExports | null,\n\tpath: string[],\n): Generator<Message> {\n\tif (!value || typeof value === \"string\") {\n\t\treturn;\n\t}\n\n\tconst keys = Object.keys(value);\n\tif (keys.length === 0) {\n\t\treturn;\n\t}\n\n\tif (keys.includes(\"types\") && keys[0] !== \"types\") {\n\t\tconst property = path.map((it) => `[\"${it}\"]`).join(\"\");\n\t\tyield {\n\t\t\truleId,\n\t\t\tseverity,\n\t\t\tmessage: `\"types\" must be the first condition in \"exports${property}\"`,\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t};\n\t}\n\n\tfor (const key of keys) {\n\t\tyield* validateOrder(value[key], [...path, key]);\n\t}\n}\n\nexport function* exportsTypesOrder(pkg: PackageJson): Generator<Message> {\n\tif (pkg.exports) {\n\t\tyield* validateOrder(pkg.exports, []);\n\t}\n}\n", "import semver from \"semver\";\nimport { Severity } from \"@html-validate/stylish\";\nimport { type Message } from \"../message\";\nimport { nodeVersions } from \"../node-versions\";\nimport { type PackageJson } from \"../types\";\n\nconst ruleId = \"outdated-engines\";\nconst severity = Severity.ERROR;\n\nexport function* outdatedEngines(pkg: PackageJson): Generator<Message> {\n\tif (!pkg.engines?.node) {\n\t\tyield {\n\t\t\truleId,\n\t\t\tseverity,\n\t\t\tmessage: \"Missing engines.node field\",\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t};\n\t\treturn;\n\t}\n\n\tconst range = pkg.engines.node;\n\tif (!semver.validRange(range)) {\n\t\tyield {\n\t\t\truleId,\n\t\t\tseverity,\n\t\t\tmessage: `engines.node \"${range}\" is not a valid semver range`,\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t};\n\t\treturn;\n\t}\n\n\tfor (const [version, descriptor] of nodeVersions) {\n\t\tif (!descriptor.eol) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst expanded = version.replace(/[xX*]/g, \"999\");\n\t\tconst parsed = semver.parse(expanded);\n\t\tif (!semver.satisfies(expanded, range)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst nodeRelease = (parsed?.major ?? 0) || `0.${parsed?.minor ?? \"\"}`;\n\t\tconst message = `engines.node is satisfied by Node ${nodeRelease} (EOL since ${descriptor.eol})`;\n\t\tyield {\n\t\t\truleId,\n\t\t\tseverity,\n\t\t\tmessage,\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t};\n\t\treturn;\n\t}\n}\n", "interface NodeVersionDescriptor {\n\t/** If set this version is EOL since given date */\n\teol?: string;\n}\n\nexport const nodeVersions: Array<[string, NodeVersionDescriptor]> = [\n\t[\"0.10.x\", { eol: \"2016-10-31\" }],\n\t[\"0.12.x\", { eol: \"2016-12-31\" }],\n\t[\"4.x.x\", { eol: \"2018-04-30\" }],\n\t[\"5.x.x\", { eol: \"2016-06-30\" }],\n\t[\"6.x.x\", { eol: \"2019-04-30\" }],\n\t[\"7.x.x\", { eol: \"2017-06-30\" }],\n\t[\"8.x.x\", { eol: \"2019-12-31\" }],\n\t[\"9.x.x\", { eol: \"2018-06-30\" }],\n\t[\"10.x.x\", { eol: \"2021-04-30\" }],\n\t[\"11.x.x\", { eol: \"2019-06-01\" }],\n\t[\"12.x.x\", { eol: \"2022-04-30\" }],\n\t[\"13.x.x\", { eol: \"2020-06-01\" }],\n\t[\"14.x.x\", { eol: \"2023-04-30\" }],\n\t[\"15.x.x\", { eol: \"2021-06-01\" }],\n\t[\"16.x.x\", { eol: \"2023-09-11\" }],\n\t[\"17.x.x\", { eol: \"2022-06-01\" }],\n];\n", "import semver, { type SemVer } from \"semver\";\nimport { type Message } from \"../message\";\nimport { type PackageJson } from \"../types\";\nimport { isNpmInfoError, npmInfo } from \"../utils\";\n\nconst ruleId = \"invalid-engine-constraint\";\n\nasync function* getDeepDependencies(pkg: PackageJson, dependency?: string): AsyncGenerator<string> {\n\tconst pkgData = dependency ? await npmInfo(dependency, { ignoreUnpublished: true }) : pkg;\n\tif (!pkgData) {\n\t\treturn;\n\t}\n\tfor (const [key, version] of Object.entries(pkgData.dependencies ?? {})) {\n\t\t/* ignore this as this package is sometimes is present as version \"*\" which\n\t\t * just yields way to many versions to handle causing MaxBuffer errors and\n\t\t * there is another rule to make sure the outermost @types/node package\n\t\t * matches the configured engines */\n\t\tif (key === \"@types/node\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst minVersion = semver.minVersion(version);\n\t\tconst deep = `${key}@${minVersion ? minVersion.version : version}`;\n\n\t\tyield deep;\n\t\tyield* getDeepDependencies(pkg, deep);\n\t}\n}\n\nasync function verifyDependency(\n\tdependency: string,\n\tminDeclared: SemVer,\n\tdeclaredConstraint: string,\n): Promise<Message | null> {\n\tconst pkgData = await npmInfo(dependency);\n\tconst constraint = pkgData.engines?.node;\n\tif (!constraint) {\n\t\treturn null;\n\t}\n\n\tif (!semver.satisfies(minDeclared, constraint)) {\n\t\treturn {\n\t\t\truleId,\n\t\t\tseverity: 2,\n\t\t\tmessage: `the transitive dependency \"${dependency}\" (node ${constraint}) does not satisfy the declared node engine \"${declaredConstraint}\"`,\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t};\n\t}\n\n\treturn null;\n}\n\nexport async function verifyEngineConstraint(pkg: PackageJson): Promise<Message[]> {\n\tconst declaredConstraint = pkg.engines?.node;\n\tif (!declaredConstraint) {\n\t\treturn [];\n\t}\n\n\tconst minDeclared = semver.minVersion(declaredConstraint);\n\tif (!minDeclared) {\n\t\tthrow new Error(`Failed to parse engine constraint \"${declaredConstraint}\"`);\n\t}\n\n\tconst messages: Message[] = [];\n\tconst visited = new Set<string>();\n\n\tfor await (const dependency of getDeepDependencies(pkg)) {\n\t\tif (visited.has(dependency)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisited.add(dependency);\n\n\t\ttry {\n\t\t\tconst message = await verifyDependency(dependency, minDeclared, declaredConstraint);\n\t\t\tif (message) {\n\t\t\t\tmessages.push(message);\n\t\t\t}\n\t\t} catch (err: unknown) {\n\t\t\tif (isNpmInfoError(err) && err.code === \"E404\") {\n\t\t\t\tmessages.push({\n\t\t\t\t\truleId,\n\t\t\t\t\tseverity: 1,\n\t\t\t\t\tmessage: `the transitive dependency \"${dependency}\" is not published to the NPM registry`,\n\t\t\t\t\tline: 1,\n\t\t\t\t\tcolumn: 1,\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\treturn messages;\n}\n", "import semver from \"semver\";\nimport { Severity } from \"@html-validate/stylish\";\nimport { type Message } from \"../message\";\nimport { type PackageJson } from \"../types\";\n\nconst ruleId = \"types-node-matching-engine\";\nconst severity = Severity.ERROR;\n\nexport function* typesNodeMatchingEngine(pkg: PackageJson): Generator<Message> {\n\tif (!pkg.engines?.node) {\n\t\treturn;\n\t}\n\n\tconst mergedDependencies = {\n\t\t...pkg.dependencies,\n\t\t...pkg.devDependencies,\n\t\t...pkg.peerDependencies,\n\t};\n\tif (!mergedDependencies[\"@types/node\"]) {\n\t\treturn;\n\t}\n\n\tconst declaredVersion = mergedDependencies[\"@types/node\"];\n\tif (declaredVersion === \"latest\") {\n\t\treturn;\n\t}\n\n\tconst nodeVersion = semver.minVersion(pkg.engines.node);\n\tconst typesVersion = semver.minVersion(declaredVersion);\n\n\tif (!nodeVersion || !typesVersion) {\n\t\treturn;\n\t}\n\n\tif (typesVersion.major !== nodeVersion.major) {\n\t\tyield {\n\t\t\truleId,\n\t\t\tseverity,\n\t\t\tmessage: `@types/node v${typesVersion.major} does not equal engines.node v${nodeVersion.major}`,\n\t\t\tline: 1,\n\t\t\tcolumn: 1,\n\t\t};\n\t}\n}\n", "import { type PackageJson } from \"./types\";\nimport { type Message } from \"./message\";\nimport { type Result } from \"./result\";\nimport {\n\tnonempty,\n\tpresent,\n\ttypeArray,\n\ttypeString,\n\tValidationError,\n\tvalidRepoUrl,\n\tvalidUrl,\n} from \"./validators\";\nimport { deprecatedDependency } from \"./rules/deprecated-dependency\";\nimport { isDisallowedDependency } from \"./rules/disallowed-dependency\";\nimport { isObsoleteDependency } from \"./rules/obsolete-dependency\";\nimport { exportsTypesOrder } from \"./rules/exports-types-order\";\nimport { outdatedEngines } from \"./rules/outdated-engines\";\nimport { verifyEngineConstraint } from \"./rules/verify-engine-constraint\";\nimport { typesNodeMatchingEngine } from \"./rules/types-node-matching-engine\";\n\nexport interface VerifyPackageJsonOptions {\n\tallowTypesDependencies?: boolean;\n\tignoreMissingFields?: boolean;\n}\n\ntype validator = (key: string, value: unknown) => void;\n\nconst fields: Record<string, validator[]> = {\n\tdescription: [present, typeString, nonempty],\n\tkeywords: [present, typeArray, nonempty],\n\thomepage: [present, typeString, validUrl],\n\tbugs: [present, validUrl],\n\tlicense: [present, typeString, nonempty],\n\tauthor: [present, nonempty],\n\trepository: [present, validRepoUrl],\n};\n\nfunction verifyFields(pkg: PackageJson, options: VerifyPackageJsonOptions): Message[] {\n\tconst messages: Message[] = [];\n\n\tfor (const [field, validators] of Object.entries(fields)) {\n\t\ttry {\n\t\t\tfor (const validator of validators) {\n\t\t\t\tvalidator(field, pkg[field]);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (\n\t\t\t\terror instanceof ValidationError &&\n\t\t\t\terror.validator === present.name &&\n\t\t\t\toptions.ignoreMissingFields\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// istanbul ignore else\n\t\t\tif (error instanceof Error) {\n\t\t\t\tmessages.push({\n\t\t\t\t\truleId: \"package-json-fields\",\n\t\t\t\t\tseverity: 2,\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\tline: 1,\n\t\t\t\t\tcolumn: 1,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn messages;\n}\n\nfunction verifyDependencies(pkg: PackageJson, options: VerifyPackageJsonOptions): Message[] {\n\tconst messages: Message[] = [];\n\tconst { dependencies = {}, devDependencies = {}, peerDependencies = {} } = pkg;\n\tconst allDependencies = { ...dependencies, ...devDependencies, ...peerDependencies };\n\n\tfor (const dependency of Object.keys(dependencies)) {\n\t\t/* skip @types/* if explicitly allowed by user */\n\t\tif (options.allowTypesDependencies && dependency.match(/^@types\\//)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isDisallowedDependency(pkg, dependency)) {\n\t\t\tmessages.push({\n\t\t\t\truleId: \"disallowed-dependency\",\n\t\t\t\tseverity: 2,\n\t\t\t\tmessage: `${dependency} should be a devDependency`,\n\t\t\t\tline: 1,\n\t\t\t\tcolumn: 1,\n\t\t\t});\n\t\t}\n\t}\n\n\tfor (const dependency of Object.keys(allDependencies)) {\n\t\tconst obsolete = isObsoleteDependency(dependency);\n\t\tif (obsolete) {\n\t\t\tmessages.push({\n\t\t\t\truleId: \"obsolete-dependency\",\n\t\t\t\tseverity: 2,\n\t\t\t\tmessage: `${dependency} is obsolete and should no longer be used: ${obsolete.message}`,\n\t\t\t\tline: 1,\n\t\t\t\tcolumn: 1,\n\t\t\t});\n\t\t}\n\t}\n\n\treturn messages;\n}\n\nexport async function verifyPackageJson(\n\tpkg: PackageJson,\n\tfilePath: string,\n\toptions: VerifyPackageJsonOptions = {},\n): Promise<Result[]> {\n\tconst messages: Message[] = [\n\t\t...(await deprecatedDependency(pkg)),\n\t\t...(await verifyEngineConstraint(pkg)),\n\t\t...exportsTypesOrder(pkg),\n\t\t...verifyFields(pkg, options),\n\t\t...verifyDependencies(pkg, options),\n\t\t...outdatedEngines(pkg),\n\t\t...typesNodeMatchingEngine(pkg),\n\t];\n\n\tif (messages.length === 0) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\t{\n\t\t\tmessages,\n\t\t\tfilePath,\n\t\t\terrorCount: messages.filter((it) => it.severity === 2).length,\n\t\t\twarningCount: messages.filter((it) => it.severity === 1).length,\n\t\t\tfixableErrorCount: 0,\n\t\t\tfixableWarningCount: 0,\n\t\t},\n\t];\n}\n", "import { type Result } from \"./result\";\nimport { type TarballMeta, getFileContent } from \"./tarball\";\nimport { type PackageJson } from \"./types\";\n\nfunction getBinaries(pkg: PackageJson): string[] {\n\tif (!pkg.bin) {\n\t\treturn [];\n\t}\n\treturn typeof pkg.bin === \"string\" ? [pkg.bin] : Object.values(pkg.bin);\n}\n\nexport async function verifyShebang(pkg: PackageJson, tarball: TarballMeta): Promise<Result[]> {\n\tconst results: Result[] = [];\n\tconst binaries = getBinaries(pkg);\n\tconst contents = await getFileContent(tarball, binaries);\n\n\tfor (const [filePath, content] of Object.entries(contents)) {\n\t\tconst text = content.toString(\"utf-8\");\n\t\tif (text.match(/^#!.+?\\r?\\n/)) {\n\t\t\tcontinue;\n\t\t}\n\t\tresults.push({\n\t\t\tmessages: [\n\t\t\t\t{\n\t\t\t\t\truleId: \"no-missing-shebang\",\n\t\t\t\t\tseverity: 2,\n\t\t\t\t\tmessage: `first line must contain shebang to be executable`,\n\t\t\t\t\tline: 1,\n\t\t\t\t\tcolumn: 1,\n\t\t\t\t},\n\t\t\t],\n\t\t\tfilePath,\n\t\t\terrorCount: 1,\n\t\t\twarningCount: 0,\n\t\t\tfixableErrorCount: 0,\n\t\t\tfixableWarningCount: 0,\n\t\t});\n\t}\n\n\treturn results;\n}\n", "import { type Result } from \"./result\";\nimport { type TarballMeta, verifyTarball } from \"./tarball\";\nimport { type VerifyPackageJsonOptions, verifyPackageJson } from \"./package-json\";\nimport { verifyShebang } from \"./shebang\";\nimport { type PackageJson } from \"./types\";\n\nexport type VerifyOptions = VerifyPackageJsonOptions;\n\nexport async function verify(\n\tpkg: PackageJson,\n\tpkgPath: string,\n\ttarball: TarballMeta,\n\toptions: VerifyOptions = {},\n): Promise<Result[]> {\n\treturn [\n\t\t...(await verifyTarball(pkg, tarball)),\n\t\t...(await verifyPackageJson(pkg, pkgPath, options)),\n\t\t...(await verifyShebang(pkg, tarball)),\n\t];\n}\n", "import path from \"path\";\nimport { type PackageJson } from \"./types\";\n\nfunction normalize(name: string): string {\n\treturn name.replace(\"/\", \"-\").replace(/^@/, \"\");\n}\n\nexport function tarballLocation(pkg: PackageJson, pkgPath: string): string {\n\tconst name = normalize(pkg.name);\n\treturn path.join(path.dirname(pkgPath), `${name}-${pkg.version}.tgz`);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAKA,QAAM,EAAE,QAAQ,IAAI,UAAQ,MAAM;AAGlC,WAAO,UAAU,SAAS,IAAI,YAAY,QAAQ;AAC9C,UAAI,QAAQ;AAEZ,UAAI,SAAS,QAAQ,QAAQ,OAAO,SAAU,GAAG,YAAY,eAAe,WAAW,MAAM,QAAQ;AACjG,YAAI;AAAY,iBAAO;AAEvB,YAAI,eAAe;AACnB,YAAI,WAAW;AACX,cAAI,OAAO,WAAW;AAAG,kBAAM,IAAI,UAAU,wCAAwC;AACrF,yBAAe,OAAO,MAAM;AAC5B,cAAI,CAAC,OAAO,UAAU,YAAY;AAAG,kBAAM,IAAI,UAAU,aAAa;AAAA,QAC1E;AAEA,YAAI;AACJ,YAAI,SAAS,QAAW;AACpB,cAAI,OAAO,OAAO,CAAC;AACnB,cAAI,OAAO,SAAS,YAAY,SAAS;AAAM,kBAAM,IAAI,UAAU,2BAA2B;AAC9F,cAAI,EAAE,QAAQ;AAAO,kBAAM,IAAI,UAAU,iBAAiB,IAAI,GAAG;AACjE,gBAAM,KAAK,IAAI;AAAA,QACnB,OAAO;AACH,cAAI,OAAO,WAAW;AAAG,kBAAM,IAAI,UAAU,wCAAwC;AACrF,gBAAM,OAAO,MAAM;AAAA,QACvB;AAEA,gBAAQ,QAAQ;AAAA,UACZ,KAAK;AACD,kBAAM,OAAO,GAAG;AAChB;AAAA,UACJ,KAAK;AACD,kBAAM,QAAQ,GAAG;AACjB;AAAA,UACJ,KAAK;AAAA,UACL,KAAK;AACD,gBAAI,OAAO,QAAQ,UAAU;AACzB,oBAAM,IAAI,UAAU,IAAI,MAAM,sCAAsC,OAAO,GAAG,EAAE;AAAA,YACpF;AACA,kBAAM,OAAO,IAAI,QAAQ,CAAC,CAAC;AAC3B;AAAA,UACJ;AACI,kBAAM,IAAI,UAAU,iCAAiC,MAAM,GAAG;AAAA,QACtE;AAEA,YAAI,eAAe,GAAG;AAClB,iBAAO,gBAAgB,IAAI,OAAO,YAAY,IAAI,IAAI,SAAS,YAAY;AAAA,QAC/E,OAAO;AACH,iBAAO;AAAA,QACX;AAAA,MACJ,CAAC;AAED,UAAI,OAAO,QAAQ;AACf,YAAI,OAAO,WAAW,KAAK,OAAO,OAAO,CAAC,MAAM,YAAY,OAAO,CAAC,MAAM,MAAM;AAAA,QAEhF,OAAO;AACH,gBAAM,IAAI,UAAU,sDAAsD;AAAA,QAC9E;AAAA,MACJ;AAEA,aAAO;AAAA,IACX;AAAA;AAAA;;;AClEA;AAAA;AAAA;AAsBA,QAAM,oBAAoB;AAE1B,QAAM,cAAN,MAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAiDd,YAAY,UAAU,CAAC,GAAG;AACtB,YAAI;AAAA,UACA,QAAQ;AAAA,UACR,iBAAiB;AAAA,UACjB,oBAAoB;AAAA,UACpB,cAAc;AAAA,UACd,qBAAqB;AAAA,UACrB,uBAAuB;AAAA,UACvB,mBAAmB;AAAA,UACnB,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,cAAY;AAAA,QAChB,IAAI;AAEJ,aAAK,QAAQ;AACb,aAAK,iBAAiB;AACtB,aAAK,oBAAoB;AACzB,aAAK,cAAc;AACnB,aAAK,qBAAqB;AAC1B,aAAK,uBAAuB;AAC5B,aAAK,mBAAmB;AACxB,aAAK,kBAAkB;AACvB,aAAK,mBAAmB;AACxB,aAAK,UAAU;AACf,aAAK,YAAY;AACjB,aAAK,cAAc;AAAA,MACvB;AAAA;AAAA;AAAA,MAMA,kBAAkB,MAAM;AAQpB,YAAI,KAAK,aAAa;AAClB,iBAAO,KAAK,QAAQ,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC;AAAA,QACvD;AACA,YAAI,KAAK,oBAAoB;AACzB,iBAAO,KAAK,QAAQ,qBAAqB,GAAG;AAAA,QAChD;AACA,eAAO;AAAA,MACX;AAAA,MAEA,OAAO,MAAM;AAgBT,YAAI,SAAS,KAAK,MAAM,iBAAiB;AACzC,iBAAS,OAAO,OAAO,OAAO;AAC9B,eAAO;AAAA,MACX;AAAA,MAEA,kBAAkB,iBAAiB,UAAU,SAAS,OAAO;AAWzD,YAAI;AACJ,YAAI,QAAQ,GAAG;AACX,uBAAa;AAAA,QACjB,OAAO;AACH,uBAAa,QAAQ;AAAA,QACzB;AAIA,YAAI,KAAK,kBAAkB;AACvB,mBAAS,KAAK,gBAAgB,gBAAgB,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;AAC9E,0BAAgB,gBAAgB,SAAS,CAAC,IAAI,gBAAgB,gBAAgB,SAAS,CAAC,EAAE,MAAM,UAAU;AAAA,QAK9G,WAAW,CAAC,UAAU;AAClB,mBAAS,KAAK,GAAG,gBAAgB,IAAI,CAAC;AAAA,QAC1C;AAAA,MAOJ;AAAA,MAEA,aAAa,QAAQ;AAcjB,YAAI,QAAQ,CAAC;AACb,YAAI;AACJ,YAAI,KAAK,SAAS,GAAG;AACjB,gBAAM,MAAM,iBAAiB,KAAK,KAAK,gBAAgB;AAAA,QAC3D;AACA,YAAI,KAAK,cAAc,QAAW;AAC9B,cAAI,KAAK,YAAY,GAAG;AACpB,qBAAS,KAAK;AAAA,UAClB,OAAO;AACH,qBAAS,KAAK;AAAA,UAClB;AACA,cAAI,OAAO,SAAS,KAAK,YAAY,UAAU,EAAE,SAAS,KAAK,OAAO;AAClE,kBAAM,MAAM,qCAAqC;AAAA,UACrD;AAAA,QACJ;AAIA,iBAAS,OAAO,QAAQ;AAExB,eAAO,OAAO,SAAS,GAAG;AAItB,cAAI,WAAW,CAAC;AAChB,cAAI,UAAU;AAGd,cAAIA;AACJ,cAAI,OAAO;AACP,YAAAA,UAAS,KAAK;AAAA,UAClB,OAAO;AACH,YAAAA,UAAS,KAAK;AAAA,UAClB;AAGA,cAAI,QAAQ,KAAK,QAAQA,QAAO;AAIhC,cAAI,KAAK,mBAAmB,OAAO,OAAO,SAAS,CAAC,EAAE,KAAK,MAAM,MAAM,MAAM,SAAS,GAAG;AACrF,mBAAO,IAAI;AAAA,UACf;AAEA,iBAAO,OAAO,SAAS,GAAG;AACtB,gBAAI,IAAI,OAAO,OAAO,SAAS,CAAC,EAAE;AAGlC,gBAAI,UAAU,KAAK,OAAO;AACtB,uBAAS,KAAK,OAAO,IAAI,CAAC;AAC1B,yBAAW;AAAA,YAGf,OAAO;AACH;AAAA,YACJ;AAAA,UACJ;AAIA,cAAI,OAAO,UAAU,OAAO,OAAO,SAAS,CAAC,EAAE,SAAS,OAAO;AAC3D,iBAAK,kBAAkB,QAAQ,UAAU,SAAS,KAAK;AACvD,sBAAU,SAAS,IAAI,OAAK,EAAE,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC;AAAA,UACnE;AAGA,cAAI,KAAK,mBAAmB,SAAS,SAAS,KAAK,SAAS,SAAS,SAAS,CAAC,EAAE,KAAK,MAAM,IAAI;AAC5F,uBAAW,SAAS,SAAS,SAAS,CAAC,EAAE;AACzC,qBAAS,IAAI;AAAA,UACjB;AAEA,cAAI,UAAU;AACV,gBAAI,KAAK,cAAc,UACnB,MAAM,SAAS,IAAI,KAAK,cACvB,OAAO,WAAW,KAClB,KAAK,mBACL,OAAO,WAAW,KAClB,CAAC,OAAO,CAAC,EAAE,KAAK,MAAM,WAAW,OAAO;AAGzC,oBAAM,KAAKA,UAAS,SAAS,KAAK,EAAE,CAAC;AAAA,YACzC,OAAO;AACH,kBAAI,YAAY;AAChB,qBAAO,UAAU;AACb,oBAAI,SAAS,SAAS,SAAS,CAAC,EAAE,KAAK,KACnC,UAAU,KAAK,YAAY,UAAU,OAAO;AAC5C,2BAAS,KAAK,KAAK,WAAW;AAC9B,wBAAM,KAAKA,UAAS,SAAS,KAAK,EAAE,CAAC;AACrC,8BAAY;AACZ;AAAA,gBACJ;AACA,2BAAW,SAAS,EAAE,EAAE;AACxB,yBAAS,IAAI;AAAA,cACjB;AACA,kBAAI,CAAC,WAAW;AACZ,oBAAI,OAAO;AACP,sBAAI,YAAY,MAAM,MAAM,SAAS,CAAC,EAAE,QAAQ;AAChD,sBAAI,UAAU,SAAS,KAAK,YAAY,UAChC,KAAK,OAAO;AAChB,0BAAM,MAAM,SAAS,CAAC,IAAI,YAAY,KAAK;AAC3C;AAAA,kBACJ;AAAA,gBACJ;AACA,sBAAM,KAAKA,UAAS,KAAK,YAAY,OAAO,CAAC;AAAA,cACjD;AACA;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,eAAO;AAAA,MACX;AAAA,MAEA,cAAc,MAAM;AAChB,eAAO,KAAK,kBAAkB,IAAI;AAClC,eAAO,KAAK,OAAO,IAAI;AAAA,MAC3B;AAAA;AAAA,MAIA,KAAK,MAAM;AAUP,YAAI,SAAS,KAAK,cAAc,IAAI;AAKpC,eAAO,KAAK,aAAa,MAAM;AAAA,MACnC;AAAA,MAEA,KAAK,MAAM;AAQP,eAAO,KAAK,KAAK,IAAI,EAAE,KAAK,IAAI;AAAA,MACpC;AAAA,IACJ;AAKA,aAAS,KAAK,MAAM,UAAU,CAAC,GAAG;AAW9B,UAAI,EAAE,QAAQ,IAAI,GAAG,OAAO,IAAI;AAChC,UAAI,IAAI,IAAI,YAAY,OAAO,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;AACxD,aAAO,EAAE,KAAK,IAAI;AAAA,IACtB;AAEA,aAAS,KAAK,MAAM,UAAU,CAAC,GAAG;AAU9B,UAAI,EAAE,QAAQ,IAAI,GAAG,OAAO,IAAI;AAChC,UAAI,IAAI,IAAI,YAAY,OAAO,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;AACxD,aAAO,EAAE,KAAK,IAAI;AAAA,IACtB;AAIA,QAAI,sBAAsB;AAC1B,QAAI,yBAAyB;AAE7B,aAAS,OAAO,MAAM;AAgBlB,UAAI,SAAS;AACb,aAAO,KAAK,QAAQ,qBAAqB,EAAE;AAC3C,UAAI,UAAU,KAAK,MAAM,sBAAsB,KAAK,CAAC;AACrD,eAAS,UAAU,SAAS;AACxB,iBAAS,OAAO,MAAM,GAAG,EAAE;AAE3B,YAAI,WAAW,QAAW;AACtB,mBAAS;AAAA,QAIb,WAAW,OAAO,WAAW,MAAM,GAAG;AAAA,QAKtC,WAAW,OAAO,WAAW,MAAM,GAAG;AAClC,mBAAS;AAAA,QAIb,OAAO;AACH,mBAAS,IAAI,GAAG,IAAI,OAAO,UAAU,IAAI,OAAO,QAAQ,KAAK;AACzD,gBAAI,OAAO,CAAC,MAAM,OAAO,CAAC,GAAG;AACzB,uBAAS,OAAO,MAAM,GAAG,CAAC;AAC1B;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAEA,UAAI,QAAQ;AACR,eAAO,KAAK,QAAQ,IAAI,OAAO,MAAM,QAAQ,IAAI,GAAG,EAAE;AAAA,MAC1D;AACA,aAAO;AAAA,IACX;AAEA,WAAO,UAAU,EAAE,MAAM,MAAM,OAAO;AAAA;AAAA;;;ACvbtC;AAAA;AAAA;AAsEA,QAAM,WAAW;AAEjB,QAAM,WAAW;AACjB,QAAM,eAAe;AACrB,QAAM,cAAc;AACpB,QAAM,SAAS;AACf,QAAM,YAAY;AAClB,QAAM,0BAA0B;AAMhC,QAAM,SAAS,UAAQ,QAAQ;AAC/B,QAAM,OAAO,UAAQ,MAAM;AAC3B,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAM,MAAM;AACZ,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,OAAO,KAAK;AAElB,aAAS,WAAW;AAEhB,aAAO,QAAQ,KAAK,MAAM,CAAC;AAAA,IAC/B;AAEA,aAAS,oBAAoB;AACzB,aAAO;AAAA,QACH,SAAS,CAAC,QAAQ,IAAI,WAAW,QAAQ,OAAO,WAAW;AAAA,MAC/D;AAAA,IACJ;AAEA,aAAS,QAAQ,QAAQ,MAAM;AAC3B,aAAO,OAAO,UAAU,eAAe,KAAK,QAAQ,IAAI;AAAA,IAC5D;AAEA,aAAS,QAAQ,QAAQ,MAAM,OAAO;AAClC,aAAO,QAAQ,QAAQ,IAAI,IAAI,OAAO,IAAI,IAAI;AAAA,IAClD;AAEA,aAAS,QAAQ,QAAQ,MAAM,OAAO;AAClC,aAAO,IAAI,IAAI;AAAA,IACnB;AAEA,aAAS,WAAW,QAAQ,MAAM,OAAO;AACrC,UAAI,CAAC,QAAQ,QAAQ,IAAI;AAAG,eAAO,IAAI,IAAI;AAC3C,aAAO,OAAO,IAAI;AAAA,IACtB;AAEA,aAAS,QAAQ,QAAQ,MAAM;AAC3B,aAAO,OAAO,IAAI;AAAA,IACtB;AAEA,aAAS,MAAM,MAAM,IAAI,OAAK,GAAG;AAE7B,UAAI,UAAU,WAAW;AAAG,SAAE,IAAI,IAAK,IAAI,CAAE,MAAM,CAAE;AACrD,UAAI,OAAO,SAAS,YAAY,OAAO,OAAO,YAAY,OAAO,SAAS,UAAU;AAChF,cAAM,IAAI,UAAU,8CAA8C;AAAA,MACtE;AACA,UAAI,SAAS;AAAG,cAAM,IAAI,UAAU,gCAAgC;AAEpE,UAAI,SAAS,CAAC;AACd,UAAI,OAAO,GAAG;AACV,iBAAS,IAAI,MAAM,IAAI,IAAI,KAAK;AAAM,iBAAO,KAAK,CAAC;AAAA,MACvD,OAAO;AACH,iBAAS,IAAI,MAAM,IAAI,IAAI,KAAK;AAAM,iBAAO,KAAK,CAAC;AAAA,MACvD;AACA,aAAO;AAAA,IACX;AAEA,aAAS,WAAW,KAAK,WAAW,OAAO;AACvC,UAAI;AACJ,UAAI,CAAC,UAAU;AACX,iBAAS,IAAI,MAAM,6CAA6C;AAAA,MACpE,OAAO;AACH,iBAAS,CAAC;AACV,YAAI,QAAQ,IAAI,MAAM,+CAA+C;AACrE,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;AACtC,iBAAO,KAAK,MAAM,CAAC,KAAK,IAAI,IAAI,MAAM,SAAS,MAAM,IAAI,CAAC,IAAI,GAAG;AAAA,QACrE;AAAA,MACJ;AACA,UAAI,CAAC,OAAO,OAAO,SAAS,CAAC;AAAG,eAAO,IAAI;AAC3C,aAAO;AAAA,IACX;AAEA,aAAS,eAAe,QAAQ,cAAc;AAC1C,UAAI,MAAM;AACV,aAAO,MAAM,OAAO,UAAU,aAAa,SAAS,OAAO,GAAG,CAAC;AAAG;AAClE,aAAO,MAAM,OAAO,MAAM,GAAG,IAAI;AAAA,IACrC;AAEA,aAAS,cAAc,QAAQ,KAAK,UAAU;AAC1C,UAAI,SAAS,OAAO,MAAM,GAAG;AAC7B,UAAI,OAAO,SAAS,UAAU;AAC1B,iBAAS,OAAO,MAAM,GAAG,QAAQ,EAAE,OAAO,CAAE,OAAO,MAAM,QAAQ,EAAE,KAAK,GAAG,CAAE,CAAC;AAAA,MAClF;AACA,aAAO;AAAA,IACX;AAEA,aAAS,aAAa,QAAQ,QAAQ;AAClC,UAAI,OAAO,WAAW,OAAO;AAAQ,eAAO;AAC5C,eAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACpC,YAAI,OAAO,CAAC,MAAM,OAAO,CAAC;AAAG,iBAAO;AAAA,MACxC;AACA,aAAO;AAAA,IACX;AAEA,aAAS,cAAc,OAAO,MAAM;AAChC,UAAI,MAAM,MAAM,QAAQ,IAAI;AAC5B,UAAI,QAAQ;AAAI,cAAM,IAAI,UAAU,IAAI,kBAAkB,IAAI,CAAC;AAC/D,YAAM,OAAO,KAAK,CAAC;AAAA,IACvB;AAKA,aAAS,kBAAkB,SAAS;AAChC,UAAI,YAAY,QAAW;AACvB,eAAO,CAAC;AAAA,MACZ,WAAW,MAAM,QAAQ,OAAO,GAAG;AAC/B,eAAO;AAAA,MACX,WAAW,YAAY,QAAQ,OAAO,QAAQ,OAAO,QAAQ,MAAM,YAAY;AAC3E,eAAO,MAAM,KAAK,OAAO;AAAA,MAC7B,WAAW,OAAO,YAAY,YAAY,YAAY,MAAM;AACxD,eAAO,OAAO,KAAK,OAAO;AAAA,MAC9B,OAAO;AACH,cAAM,IAAI,MAAM,IAAI,6BAA6B,OAAO,CAAC;AAAA,MAC7D;AAAA,IACJ;AAGA,aAAS,UAAU,KAAK;AACpB,UAAI,SAAS;AAAA;AAAA,QACT,CAAC,IAAI,IAAI,GAAG,YAAa,MAAM;AAC3B,cAAI,aAAa,eAAe,UAAU,CAAC;AAC3C,iBAAO,QAAQ,UAAU,KAAK,MAAM,aAAa,MAAM,UAAU;AAAA,QACrE;AAAA,MACJ;AACA,aAAO,IAAI,IAAI,EAAE,YAAY,IAAI;AAEjC,UAAI,UAAU,OAAO,WAAW,IAAI,IAAI;AACxC,aAAO,OAAO,IAAI,IAAI;AAAA,IAC1B;AAEA,aAAS,OAAO,QAAQ,MAAM,IAAI;AAC9B,UAAI;AACA,YAAI,OAAO,OAAO,YAAY;AAC9B,eAAO,eAAe,QAAQ,MAAM;AAAA,UAChC,OAAO,KAAK,UAAU,OAAO,EAAE,GAAG;AAAA,YAAI;AAAA,YAClC;AAAA,YAAM;AAAA,YAAM;AAAA,YAAM;AAAA,UAAE,CAAC;AAAA,UACzB,YAAY;AAAA,QAChB,CAAC;AAAA,MACL,QAAQ;AAAA,MAAC;AAAA,IACb;AAGA,aAAS,iBAAiB,QAAQ;AAC9B,eAAS,QAAQ,OAAO,oBAAoB,OAAO,SAAS,GAAG;AAC3D,YAAI,YAAY,KAAK,QAAQ,aAAa,OAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC;AACxE,YAAI,cAAc;AAAM,iBAAO,OAAO,WAAW,WAAW,IAAI;AAAA,MACpE;AACA,aAAO;AAAA,IACX;AAEA,aAAS,gBAAgB,KAAK;AAC1B,YAAM,IAAI,QAAQ,aAAa,OAAK,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,YAAY,CAAC;AAC7D,UAAI,QAAQ;AAAW,cAAM;AAC7B,UAAI,QAAQ;AAAS,cAAM;AAC3B,aAAO;AAAA,IACX;AAEA,aAAS,aAAa,KAAK;AACvB,UAAI,QAAQ;AAAgB,cAAM;AAClC,UAAI,QAAQ;AAAY,cAAM;AAC9B,YAAM,IAAI,QAAQ,UAAU,OAAK,MAAM,EAAE,YAAY,CAAC;AACtD,aAAO;AAAA,IACX;AAGA,QAAI,aAAa,OAAO,kBAAkB;AAC1C,aAAS,YAAY,MAAM,YAAY;AACnC,eAAS,WAAW;AAChB,YAAI,QAAQ,IAAI,MAAM,EAAE,MAAM,MAAM,IAAI,EACnC,IAAI,OAAK,EAAE,MAAM,sBAAsB,CAAC,EACxC,OAAO,OAAO,EACd,IAAI,OAAK,EAAE,CAAC,CAAC,EACb,IAAI,QAAM,GAAG,MAAM,SAAS,EAAE,CAAC,CAAC;AAErC,YAAI,MAAM,UAAU,MAAM,CAAC,MAAM,SAAS;AAAM,gBAAM,MAAM;AAC5D,YAAI,MAAM,UAAU,MAAM,CAAC,MAAM,YAAY;AAAM,gBAAM,MAAM;AAC/D,eAAO,MAAM,SAAS,MAAM,CAAC,IAAI;AAAA,MACrC;AAEA,aAAO,MAAM,KAAK,IAAI;AACtB,UAAI,SAAS,CAAC;AACd,UAAI,SAAS,CAAC;AACd,UAAI,WAAW,KAAK,UAAU,KAAK,KAAK,SAAS,CAAC;AAElD,UAAI,OAAO,aAAa,YAAY,aAAa,QAAQ,CAAC,MAAM,QAAQ,QAAQ,MAC3E,CAAC,SAAS,eAAe,SAAS,YAAY,SAAS,WAAW;AACnE,iBAAS,OAAO,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC;AAAA,MACzC;AAGA,UAAI,UAAU,CAAC;AACf,eAAS,OAAO,OAAO,KAAK,UAAU,GAAG;AACrC,YAAI,WAAW,gBAAgB,GAAG;AAClC,YAAI,aAAa,OAAQ,YAAY,QAAS;AAC1C,cAAI,OAAO,QAAQ;AAAA,UAGnB,OAAO;AACH,mBAAO,GAAG,IAAI,OAAO,QAAQ;AAAA,UACjC;AACA,kBAAQ,KAAK,CAAE,UAAU,GAAI,CAAC;AAC9B,iBAAO,OAAO,QAAQ;AAAA,QAC1B;AAAA,MACJ;AACA,UAAI,QAAQ,QAAQ;AAChB,YAAI,OAAO,SAAS;AACpB,kBAAU,eAAe,MAAM;AAAA,UAAI;AAAA,UAC/B;AAAA,UAAM,QAAQ,IAAI,CAAC,CAAE,GAAG,CAAE,MAAM,IAAI,YAAY,GAAG,CAAC,CAAC;AAAA,QAAC,CAAC;AAAA,MAC/D;AAGA,UAAI,sBAAsB,CAAC;AAC3B,UAAI,mBAAmB,KAAK;AAE5B,eAAS,CAAE,KAAK,GAAI,KAAK,OAAO,QAAQ,UAAU,GAAG;AACjD,YAAI,IAAI,CAAC,MAAM,KAAK;AAChB,cAAI,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,KAAK;AAElC,gBAAIC,WAAU,CAAC;AACf,qBAASC,QAAO,OAAO,KAAK,MAAM,GAAG;AACjC,kBAAI,WAAW,aAAaA,IAAG;AAC/B,kBAAI,aAAaA,QAAQA,QAAO,QAAS;AACrC,oBAAI,YAAY,QAAQ;AAAA,gBAGxB,OAAO;AACH,yBAAO,QAAQ,IAAI,OAAOA,IAAG;AAAA,gBACjC;AACA,gBAAAD,SAAQ,KAAK,CAAEC,MAAK,QAAS,CAAC;AAC9B,uBAAO,OAAOA,IAAG;AAAA,cACrB;AAAA,YACJ;AACA,gBAAID,SAAQ,QAAQ;AAChB,kBAAI,OAAO,SAAS;AACpB,wBAAU,eAAe,MAAM;AAAA,gBAAI;AAAA,gBAC/B;AAAA,gBAAMA,SAAQ,IAAI,CAAC,CAAE,GAAG,CAAE,MAAM,IAAI,YAAY,GAAG,CAAC,CAAC;AAAA,cAAC,CAAC;AAAA,YAC/D;AAEA,mBAAO,KAAK,MAAM;AAClB,qBAAS,CAAC;AAAA,UACd,OAAO;AACH,mBAAO,KAAK,IAAI;AAChB,mBAAO,CAAC;AAAA,UACZ;AAAA,QACJ,WAAW,OAAO,UAAU,KAAK,SAAS,GAAG;AACzC,gBAAM,IAAI,UAAU,IAAI,4CAA4C,SAAS,GAAG,GAAG,CAAC;AAAA,QACxF,WAAW,OAAO,QAAQ;AACtB,iBAAO,KAAK,OAAO,GAAG,CAAC;AACvB,iBAAO,OAAO,GAAG;AAAA,QACrB,WAAW,KAAK,SAAS,GAAG;AACxB,iBAAO,KAAK,KAAK,MAAM,CAAC;AAAA,QAC5B,WAAW,QAAQ,YAAY;AAC3B,iBAAO,KAAK,GAAG;AAAA,QACnB,OAAO;AACH,8BAAoB,KAAK,GAAG;AAAA,QAChC;AAAA,MACJ;AAEA,UAAI,OAAO,KAAK,MAAM,EAAE,QAAQ;AAC5B,cAAM,IAAI,UAAU;AAAA,UAAI;AAAA,UACpB,SAAS;AAAA,UAAG,OAAO,KAAK,MAAM,EAAE,CAAC;AAAA,QAAC,CAAC;AAAA,MAC3C;AAEA,UAAI,KAAK,QAAQ;AACb,YAAI,OAAO,OAAO,QAAQ,UAAU,EAAE,OAAO,CAAC,CAAE,GAAG,CAAE,MAAM,EAAE,CAAC,MAAM,OAAO,MAAM,UAAU,EAAE;AAC7F,YAAI,KAAK,OAAO,QAAQ,UAAU,EAAE,OAAO,CAAC,CAAE,CAAE,MAAM,EAAE,CAAC,MAAM,GAAG,EAAE;AACpE,cAAM,IAAI,UAAU;AAAA,UAAI;AAAA,UACpB,SAAS;AAAA,UACT,SAAS,KAAK,IAAI,iBAAiB,MAAM,EAAE,IAAI;AAAA,UAC/C,SAAS,MAAM,OAAO,IAAI,KAAK;AAAA,UAC/B;AAAA,UACA,qBAAqB,IAAI,QAAQ;AAAA,QAAM,CAAC;AAAA,MAChD;AAEA,UAAI,oBAAoB,QAAQ;AAC5B,YAAI,OAAO,oBAAoB,IAAI,IAAI;AACvC,YAAI,KAAK,SAAS;AAAG,eAAK,KAAK,SAAS,CAAC,IAAI,SAAS,KAAK,KAAK,SAAS,CAAC;AAC1E,YAAI,aAAa,KAAK,KAAK,KAAK,WAAW,IAAI,KAAK,IAAI;AACxD,cAAM,IAAI,UAAU;AAAA,UAAI;AAAA,UACpB,SAAS;AAAA,UAAG,KAAK;AAAA,UAAQ,KAAK,WAAW,IAAI,KAAK;AAAA,UAAK;AAAA,QAAU,CAAC;AAAA,MAC1E;AAEA,aAAO;AAAA,IACX;AAEA,QAAI,gBAAgB,CAAC;AACrB,aAAS,UAAU,IAAI,QAAQ;AAC3B,oBAAc,EAAE,IAAI,cAAc,EAAE,KAAK,KAAK,UAAU,MAAM;AAAA,MAAC,GAAG,MAAM;AACxE,oBAAc,EAAE,EAAE;AAAA,IACtB;AAMA,aAAS,iBAAiB,MAAM,QAAQ;AAUpC,aAAO,MAAM,yBAAyB,IAAI;AAAA,QACtC,CAAC,KAAK,QAAQ,MAAM,IAAI;AACpB,cAAI,YAAY,KAAK,YAAY;AACjC,cAAI,cAAc,CAAC;AACnB,cAAI,YAAY,CAAC;AACjB,mBAAS,OAAO,KAAK,UAAU,GAAG;AAC9B,wBAAY,KAAK,KAAK,GAAG,CAAC;AAAA,UAC9B;AACA,mBAAS,CAAE,MAAM,KAAM,KAAK,KAAK,YAAY,GAAG;AAC5C,gBAAI,uBAAuB,KAAK,IAAI,GAAG;AACnC,0BAAY,KAAK,IAAI,SAAS,MAAM,KAAK,CAAC;AAAA,YAC9C,OAAO;AACH,wBAAU,IAAI,IAAI;AAAA,YACtB;AAAA,UACJ;AACA,cAAI,OAAO,KAAK,SAAS,EAAE,QAAQ;AAC/B,wBAAY,KAAK,IAAI,QAAQ,KAAK,SAAS,CAAC,CAAC;AAAA,UACjD;AACA,iBAAO,IAAI,UAAU,WAAW,YAAY,KAAK,IAAI,CAAC;AAAA,QAC1D;AAAA,QAEA,WAAW;AACP,iBAAO,KAAK,KAAK,QAAQ,MAAM,EAAE;AAAA,QACrC;AAAA,QAEA,cAAc;AACV,iBAAO,OAAO,QAAQ,IAAI;AAAA,QAC9B;AAAA,QAEA,YAAY;AACR,iBAAO,CAAC;AAAA,QACZ;AAAA,MACJ;AAAA,IACJ;AAGA,aAAS,YAAY,OAAO;AACxB,UAAI,UAAU,QAAW;AACrB,eAAO,CAAC;AAAA,MACZ;AACA,aAAO,MAAM,MAAM,CAAC;AAAA,IACxB;AAMA,QAAM,gBAAgB,iBAAiB,UAAU,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQjE,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,MAAM;AAAA,UACN,kBAAkB;AAAA,UAClB,mBAAmB;AAAA,UACnB,OAAO;AAAA,QACX,CAAC;AAGD,YAAI,UAAU,QAAW;AACrB,kBAAQ,kBAAkB,EAAE;AAC5B,mBAAS;AAAA,QACb;AAEA,aAAK,QAAQ;AACb,aAAK,oBAAoB;AACzB,aAAK,qBAAqB,KAAK;AAAA,UAAI;AAAA,UACL,KAAK,IAAI,QAAQ,IAAI,mBAAmB,CAAC;AAAA,QAAC;AACxE,aAAK,SAAS;AAEd,aAAK,kBAAkB;AACvB,aAAK,SAAS;AACd,aAAK,qBAAqB;AAE1B,aAAK,gBAAgB,KAAK,SAAS,MAAM,MAAS;AAClD,aAAK,mBAAmB,KAAK;AAE7B,aAAK,sBAAsB;AAC3B,aAAK,sBAAsB;AAAA,MAC/B;AAAA;AAAA;AAAA;AAAA,MAKA,UAAU;AACN,aAAK,mBAAmB,KAAK;AAC7B,aAAK,UAAU;AAAA,MACnB;AAAA,MAEA,UAAU;AACN,aAAK,mBAAmB,KAAK;AAC7B,eAAO,KAAK,mBAAmB,GAAG,2BAA2B;AAC7D,aAAK,UAAU;AAAA,MACnB;AAAA,MAEA,UAAU,MAAM,MAAM;AAClB,aAAK,iBAAiB,MAAM,KAAK,CAAE,MAAM,IAAK,CAAC;AAAA,MACnD;AAAA;AAAA;AAAA;AAAA,MAKA,cAAc,SAAS;AACnB,aAAK,QAAQ;AACb,YAAI,UAAU,KAAK,SAAS,MAAM,KAAK,kBAAkB,OAAO;AAChE,aAAK,UAAU,QAAQ,YAAY,KAAK,OAAO,GAAG,CAAC,CAAC;AACpD,aAAK,mBAAmB;AAAA,MAC5B;AAAA,MAEA,cAAc;AACV,aAAK,mBAAmB,KAAK,iBAAiB;AAC9C,aAAK,QAAQ;AAAA,MACjB;AAAA,MAEA,SAAS,MAAM;AACX,YAAI,SAAS,YAAY,SAAS,QAAW;AACzC,eAAK,UAAU,KAAK,aAAa,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;AAAA,QACvD;AAAA,MACJ;AAAA,MAEA,UAAU,OAAO,SAAS,QAAQE,UAAS,QAAW;AAClD,YAAI,UAAU,UAAU;AACpB,cAAI,OAAO,CAAE,OAAO,SAAS,QAAQA,OAAO;AAC5C,eAAK,UAAU,KAAK,cAAc,KAAK,IAAI,GAAG,IAAI;AAAA,QACtD;AAAA,MACJ;AAAA,MAEA,aAAa,QAAQ;AACjB,YAAI,OAAO,SAAS,UAAU;AAG1B,cAAI,cAAc,CAAC,KAAK,0BAA0B,MAAM,CAAC;AACzD,mBAAS,aAAa,KAAK,0BAA0B,MAAM,GAAG;AAC1D,wBAAY,KAAK,KAAK,0BAA0B,SAAS,CAAC;AAAA,UAC9D;AAGA,cAAI,oBAAoB,KAAK,IAAI,GAAG,YAAY,IAAI,gBAAc,WAAW,MAAM,CAAC;AACpF,cAAI,gBAAgB,oBAAoB,KAAK;AAC7C,eAAK,qBAAqB,KAAK;AAAA,YAAI,KAAK;AAAA,YACL;AAAA,UAAa;AAGhD,eAAK,UAAU,KAAK,eAAe,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;AAAA,QAC3D;AAAA,MACJ;AAAA,MAEA,cAAc,SAAS;AACnB,iBAAS,UAAU,SAAS;AACxB,eAAK,aAAa,MAAM;AAAA,QAC5B;AAAA,MACJ;AAAA;AAAA;AAAA;AAAA,MAKA,cAAc;AACV,YAAI,OAAO,KAAK,cAAc,YAAY;AAC1C,YAAI,MAAM;AACN,iBAAO,KAAK,QAAQ,KAAK,qBAAqB,MAAM;AACpD,iBAAO,KAAK,QAAQ,cAAc,EAAE,IAAI;AAAA,QAC5C;AACA,eAAO;AAAA,MACX;AAAA,MAEA,YAAY,cAAc;AACtB,eAAO,aAAa,OAAO,UAAQ,QAAQ,SAAS,QAAQ,EAAE,KAAK,EAAE;AAAA,MACzE;AAAA,MAEA,cAAc,OAAO,SAAS,QAAQA,SAAQ;AAC1C,YAAIA,YAAW,QAAW;AACtB,UAAAA,UAAS;AAAA,QACb;AAGA,YAAI,UAAU,QAAW;AACrB,kBAAQ,IAAI,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;AAAA,QAG3C,WAAW,UAAU,UAAa,CAAC,QAAQ,QAAQ;AAC/C,kBAAQ,IAAI,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;AAAA,QAGhD,WAAW,UAAU,QAAW;AAC5B,cAAI,OAAO,IAAI,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;AAG/C,cAAI,YAAY,CAAC;AACjB,cAAI,cAAc,CAAC;AACnB,mBAAS,UAAU,SAAS;AACxB,gBAAI,OAAO,eAAe,QAAQ;AAC9B,wBAAU,KAAK,MAAM;AAAA,YACzB,OAAO;AACH,0BAAY,KAAK,MAAM;AAAA,YAC3B;AAAA,UACJ;AAGA,cAAI,eAAe,KAAK,sBAAsB,CAAC,EAAE,OAAO,SAAS,EAAE,OAAO,WAAW,GAAG,MAAM;AAC9F,kBAAQ,CAAE,MAAM,YAAa,EAAE,IAAI,MAAM,EAAE,KAAK,GAAG;AAGnD,cAAI,aAAa,KAAK,SAAS,KAAK;AACpC,cAAIA,QAAO,SAAS,MAAM,SAAS,YAAY;AAG3C,gBAAI,cAAc;AAClB,gBAAI,YAAY,KAAK,sBAAsB,WAAW,MAAM;AAC5D,gBAAI,YAAY,KAAK,sBAAsB,aAAa,MAAM;AAC9D,gBAAI,YAAY,UAAU,MAAM,WAAW,KAAK,CAAC;AACjD,gBAAI,YAAY,UAAU,MAAM,WAAW,KAAK,CAAC;AACjD,mBAAO,UAAU,KAAK,GAAG,MAAM,SAAS;AACxC,mBAAO,UAAU,KAAK,GAAG,MAAM,SAAS;AAGxC,gBAAI,YAAY,CAAC,OAAO,QAAQA,UAAS,WAAc;AACnD,kBAAIC,SAAQ,CAAC;AACb,kBAAI,OAAO,CAAC;AACZ,kBAAI;AACJ,kBAAID,YAAW,QAAW;AACtB,2BAAWA,QAAO,SAAS;AAAA,cAC/B,OAAO;AACH,2BAAW,OAAO,SAAS;AAAA,cAC/B;AACA,uBAAS,QAAQ,OAAO;AACpB,oBAAI,WAAW,IAAI,KAAK,SAAS,cAAc,MAAM;AACjD,kBAAAC,OAAM,KAAK,SAAS,KAAK,KAAK,GAAG,CAAC;AAClC,yBAAO,CAAC;AACR,6BAAW,OAAO,SAAS;AAAA,gBAC/B;AACA,qBAAK,KAAK,IAAI;AACd,4BAAY,KAAK,SAAS;AAAA,cAC9B;AACA,kBAAI,KAAK,QAAQ;AACb,gBAAAA,OAAM,KAAK,SAAS,KAAK,KAAK,GAAG,CAAC;AAAA,cACtC;AACA,kBAAID,YAAW,QAAW;AACtB,gBAAAC,OAAM,CAAC,IAAIA,OAAM,CAAC,EAAE,MAAM,OAAO,MAAM;AAAA,cAC3C;AACA,qBAAOA;AAAA,YACX;AAEA,gBAAI;AAGJ,gBAAID,QAAO,SAAS,KAAK,UAAU,OAAO,YAAY;AAClD,kBAAI,SAAS,IAAI,OAAOA,QAAO,SAAS,KAAK,SAAS,CAAC;AACvD,kBAAI,UAAU,QAAQ;AAClB,wBAAQ,UAAU,CAAC,IAAI,EAAE,OAAO,SAAS,GAAG,QAAQA,OAAM;AAC1D,wBAAQ,MAAM,OAAO,UAAU,WAAW,MAAM,CAAC;AAAA,cACrD,WAAW,UAAU,QAAQ;AACzB,wBAAQ,UAAU,CAAC,IAAI,EAAE,OAAO,SAAS,GAAG,QAAQA,OAAM;AAAA,cAC9D,OAAO;AACH,wBAAQ,CAAC,IAAI;AAAA,cACjB;AAAA,YAGJ,OAAO;AACH,kBAAI,SAAS,IAAI,OAAOA,QAAO,MAAM;AACrC,kBAAI,QAAQ,CAAC,EAAE,OAAO,SAAS,EAAE,OAAO,SAAS;AACjD,sBAAQ,UAAU,OAAO,MAAM;AAC/B,kBAAI,MAAM,SAAS,GAAG;AAClB,wBAAQ,CAAC;AACT,wBAAQ,MAAM,OAAO,UAAU,WAAW,MAAM,CAAC;AACjD,wBAAQ,MAAM,OAAO,UAAU,WAAW,MAAM,CAAC;AAAA,cACrD;AACA,sBAAQ,CAAC,IAAI,EAAE,OAAO,KAAK;AAAA,YAC/B;AAGA,oBAAQ,MAAM,KAAK,IAAI;AAAA,UAC3B;AAAA,QACJ;AAGA,eAAO,IAAI,YAAYA,SAAQ,KAAK;AAAA,MACxC;AAAA,MAEA,sBAAsB,SAAS,QAAQ;AAEnC,YAAI,gBAAgB,oBAAI,IAAI;AAC5B,YAAI,UAAU,CAAC;AACf,iBAAS,SAAS,QAAQ;AACtB,cAAI,QAAQ,QAAQ,QAAQ,MAAM,eAAe,CAAC,CAAC;AACnD,cAAI,UAAU,IAAI;AACd;AAAA,UACJ,OAAO;AACH,gBAAI,MAAM,QAAQ,MAAM,eAAe;AACvC,gBAAI,aAAa,QAAQ,MAAM,OAAO,GAAG,GAAG,MAAM,cAAc,GAAG;AAC/D,uBAAS,UAAU,MAAM,gBAAgB;AACrC,8BAAc,IAAI,MAAM;AAAA,cAC5B;AACA,kBAAI,CAAC,MAAM,UAAU;AACjB,oBAAI,SAAS,SAAS;AAClB,0BAAQ,KAAK,KAAK;AAAA,gBACtB,OAAO;AACH,0BAAQ,KAAK,IAAI;AAAA,gBACrB;AACA,oBAAI,OAAO,SAAS;AAChB,0BAAQ,GAAG,KAAK;AAAA,gBACpB,OAAO;AACH,0BAAQ,GAAG,IAAI;AAAA,gBACnB;AAAA,cACJ,OAAO;AACH,oBAAI,SAAS,SAAS;AAClB,0BAAQ,KAAK,KAAK;AAAA,gBACtB,OAAO;AACH,0BAAQ,KAAK,IAAI;AAAA,gBACrB;AACA,oBAAI,OAAO,SAAS;AAChB,0BAAQ,GAAG,KAAK;AAAA,gBACpB,OAAO;AACH,0BAAQ,GAAG,IAAI;AAAA,gBACnB;AAAA,cACJ;AACA,uBAAS,KAAK,MAAM,QAAQ,GAAG,GAAG,GAAG;AACjC,wBAAQ,CAAC,IAAI;AAAA,cACjB;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAGA,YAAI,QAAQ,CAAC;AACb,iBAAS,CAAE,GAAG,MAAO,KAAK,OAAO,QAAQ,OAAO,GAAG;AAI/C,cAAI,OAAO,SAAS,UAAU;AAC1B,kBAAM,KAAK,MAAS;AACpB,gBAAI,QAAQ,CAAC,CAAC,MAAM,KAAK;AACrB,qBAAO,QAAQ,CAAC,CAAC;AAAA,YACrB,WAAW,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK;AAChC,qBAAO,QAAQ,CAAC,IAAI,CAAC;AAAA,YACzB;AAAA,UAGJ,WAAW,CAAC,OAAO,eAAe,QAAQ;AACtC,gBAAI,gBAAgB,KAAK,oCAAoC,MAAM;AACnE,gBAAI,OAAO,KAAK,aAAa,QAAQ,aAAa;AAGlD,gBAAI,cAAc,IAAI,MAAM,GAAG;AAC3B,kBAAI,KAAK,CAAC,MAAM,OAAO,KAAK,KAAK,SAAS,CAAC,MAAM,KAAK;AAClD,uBAAO,KAAK,MAAM,GAAG,EAAE;AAAA,cAC3B;AAAA,YACJ;AAGA,kBAAM,KAAK,IAAI;AAAA,UAGnB,OAAO;AACH,gBAAI,gBAAgB,OAAO,eAAe,CAAC;AAC3C,gBAAI;AAIJ,gBAAI,OAAO,UAAU,GAAG;AACpB,qBAAO,OAAO,aAAa;AAAA,YAI/B,OAAO;AACH,kBAAI,gBAAgB,KAAK,kCAAkC,MAAM;AACjE,kBAAI,cAAc,KAAK,aAAa,QAAQ,aAAa;AACzD,qBAAO,IAAI,SAAS,eAAe,WAAW;AAAA,YAClD;AAGA,gBAAI,CAAC,OAAO,YAAY,CAAC,cAAc,IAAI,MAAM,GAAG;AAChD,qBAAO,IAAI,QAAQ,IAAI;AAAA,YAC3B;AAGA,kBAAM,KAAK,IAAI;AAAA,UACnB;AAAA,QACJ;AAGA,iBAAS,KAAK,OAAO,KAAK,OAAO,EAAE,IAAI,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG;AAClE,gBAAM,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC;AAAA,QACnC;AAGA,YAAI,OAAO,MAAM,OAAO,OAAO,EAAE,KAAK,GAAG;AAGzC,eAAO,KAAK,QAAQ,aAAa,IAAI;AACrC,eAAO,KAAK,QAAQ,aAAa,IAAI;AACrC,eAAO,KAAK,QAAQ,iBAAiB,EAAE;AACvC,eAAO,KAAK,QAAQ,gBAAgB,MAAM,IAAI;AAC9C,eAAO,KAAK,KAAK;AAGjB,eAAO;AAAA,MACX;AAAA,MAEA,aAAa,MAAM;AACf,YAAI,KAAK,SAAS,SAAS,GAAG;AAC1B,iBAAO,IAAI,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAAA,QACzC;AACA,YAAI,aAAa,KAAK,IAAI,KAAK,SAAS,KAAK,iBAAiB,EAAE;AAChE,YAAI,SAAS,IAAI,OAAO,KAAK,eAAe;AAC5C,eAAO,KAAK,WAAW,MAAM,YAAY,MAAM,IAAI;AAAA,MACvD;AAAA,MAEA,eAAe,QAAQ;AAEnB,YAAI,gBAAgB,KAAK;AAAA,UAAI,KAAK,qBAAqB;AAAA,UAC1B,KAAK;AAAA,QAAkB;AACpD,YAAI,aAAa,KAAK,IAAI,KAAK,SAAS,eAAe,EAAE;AACzD,YAAI,eAAe,gBAAgB,KAAK,kBAAkB;AAC1D,YAAI,gBAAgB,KAAK,0BAA0B,MAAM;AACzD,YAAI;AAGJ,YAAI,CAAC,OAAO,MAAM;AACd,cAAI,MAAM,CAAE,KAAK,iBAAiB,IAAI,aAAc;AACpD,0BAAgB,IAAI,WAAW,GAAG,GAAG;AAAA,QAGzC,WAAW,cAAc,UAAU,cAAc;AAC7C,cAAI,MAAM,CAAE,KAAK,iBAAiB,IAAI,cAAc,aAAc;AAClE,0BAAgB,IAAI,aAAa,GAAG,GAAG;AACvC,yBAAe;AAAA,QAGnB,OAAO;AACH,cAAI,MAAM,CAAE,KAAK,iBAAiB,IAAI,aAAc;AACpD,0BAAgB,IAAI,WAAW,GAAG,GAAG;AACrC,yBAAe;AAAA,QACnB;AAGA,YAAI,QAAQ,CAAC,aAAa;AAG1B,YAAI,OAAO,MAAM;AACb,cAAI,YAAY,KAAK,aAAa,MAAM;AACxC,cAAI,aAAa,KAAK,aAAa,WAAW,UAAU;AACxD,gBAAM,KAAK,IAAI,WAAW,cAAc,IAAI,WAAW,CAAC,CAAC,CAAC;AAC1D,mBAAS,QAAQ,WAAW,MAAM,CAAC,GAAG;AAClC,kBAAM,KAAK,IAAI,WAAW,eAAe,IAAI,IAAI,CAAC;AAAA,UACtD;AAAA,QAGJ,WAAW,CAAC,cAAc,SAAS,IAAI,GAAG;AACtC,gBAAM,KAAK,IAAI;AAAA,QACnB;AAGA,iBAAS,aAAa,KAAK,0BAA0B,MAAM,GAAG;AAC1D,gBAAM,KAAK,KAAK,eAAe,SAAS,CAAC;AAAA,QAC7C;AAGA,eAAO,KAAK,YAAY,KAAK;AAAA,MACjC;AAAA,MAEA,0BAA0B,QAAQ;AAC9B,YAAI,CAAC,OAAO,eAAe,QAAQ;AAC/B,cAAI,gBAAgB,KAAK,oCAAoC,MAAM;AACnE,cAAI,UAAU,KAAK,mBAAmB,QAAQ,aAAa,EAAE,CAAC,EAAE,CAAC;AACjE,iBAAO;AAAA,QAEX,OAAO;AACH,cAAI,QAAQ,CAAC;AAIb,cAAI,OAAO,UAAU,GAAG;AACpB,oBAAQ,MAAM,OAAO,OAAO,cAAc;AAAA,UAI9C,OAAO;AACH,gBAAI,gBAAgB,KAAK,kCAAkC,MAAM;AACjE,gBAAI,cAAc,KAAK,aAAa,QAAQ,aAAa;AACzD,qBAAS,iBAAiB,OAAO,gBAAgB;AAC7C,oBAAM,KAAK,IAAI,SAAS,eAAe,WAAW,CAAC;AAAA,YACvD;AAAA,UACJ;AAEA,iBAAO,MAAM,KAAK,IAAI;AAAA,QAC1B;AAAA,MACJ;AAAA,MAEA,mBAAmB,QAAQ,iBAAiB;AACxC,YAAI;AACJ,YAAI,OAAO,YAAY,QAAW;AAC9B,mBAAS,OAAO;AAAA,QACpB,WAAW,OAAO,YAAY,QAAW;AACrC,cAAI,cAAc,kBAAkB,OAAO,OAAO,EAAE,IAAI,MAAM;AAC9D,mBAAS,IAAI,QAAQ,YAAY,KAAK,GAAG,CAAC;AAAA,QAC9C,OAAO;AACH,mBAAS;AAAA,QACb;AAEA,iBAAS,OAAO,YAAY;AACxB,cAAI,MAAM,QAAQ,MAAM,GAAG;AACvB,mBAAO;AAAA,UACX,OAAO;AACH,mBAAO,MAAM,UAAU,EAAE,KAAK,MAAM;AAAA,UACxC;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAAA,MAEA,aAAa,QAAQ,iBAAiB;AAClC,YAAI,cAAc,KAAK,mBAAmB,QAAQ,eAAe;AACjE,YAAI;AACJ,YAAI,OAAO,UAAU,QAAW;AAC5B,mBAAS,IAAI,MAAM,GAAG,YAAY,CAAC,CAAC;AAAA,QACxC,WAAW,OAAO,UAAU,UAAU;AAClC,mBAAS,IAAI,QAAQ,GAAG,YAAY,CAAC,CAAC;AAAA,QAC1C,WAAW,OAAO,UAAU,cAAc;AACtC,cAAI,UAAU,YAAY,CAAC;AAC3B,cAAI,QAAQ,WAAW,GAAG;AACtB,qBAAS,IAAI,iBAAiB,GAAG,OAAO;AAAA,UAC5C,OAAO;AACH,qBAAS,IAAI,YAAY,GAAG,OAAO;AAAA,UACvC;AAAA,QACJ,WAAW,OAAO,UAAU,aAAa;AACrC,mBAAS,IAAI,eAAe,GAAG,YAAY,CAAC,CAAC;AAAA,QACjD,WAAW,OAAO,UAAU,WAAW;AACnC,mBAAS;AAAA,QACb,WAAW,OAAO,UAAU,QAAQ;AAChC,mBAAS,IAAI,UAAU,GAAG,YAAY,CAAC,CAAC;AAAA,QAC5C,WAAW,OAAO,UAAU,UAAU;AAClC,mBAAS;AAAA,QACb,OAAO;AACH,cAAI;AACJ,cAAI;AACA,sBAAU,MAAM,OAAO,KAAK,EAAE,IAAI,MAAM,IAAI;AAAA,UAChD,SAAS,KAAK;AACV,kBAAM,IAAI,UAAU,qBAAqB;AAAA,UAC7C;AACA,mBAAS,IAAI,QAAQ,KAAK,GAAG,GAAG,GAAG,YAAY,OAAO,KAAK,CAAC;AAAA,QAChE;AACA,eAAO;AAAA,MACX;AAAA,MAEA,aAAa,QAAQ;AACjB,YAAI,SAAS,OAAO,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM;AACvD,iBAAS,QAAQ,OAAO,KAAK,MAAM,GAAG;AAClC,cAAI,OAAO,IAAI,MAAM,UAAU;AAC3B,mBAAO,OAAO,IAAI;AAAA,UACtB;AAAA,QACJ;AACA,iBAAS,QAAQ,OAAO,KAAK,MAAM,GAAG;AAClC,cAAI,OAAO,IAAI,KAAK,OAAO,IAAI,EAAE,MAAM;AACnC,mBAAO,IAAI,IAAI,OAAO,IAAI,EAAE;AAAA,UAChC;AAAA,QACJ;AACA,YAAI,OAAO,YAAY,QAAW;AAC9B,cAAI,cAAc,kBAAkB,OAAO,OAAO,EAAE,IAAI,MAAM,EAAE,KAAK,IAAI;AACzE,iBAAO,UAAU;AAAA,QACrB;AAEA,iBAAS,OAAO,OAAO,KAAK,MAAM,GAAG;AACjC,cAAI,WAAW,gBAAgB,GAAG;AAClC,cAAI,aAAa,KAAK;AAClB,mBAAO,QAAQ,IAAI,OAAO,GAAG;AAAA,UACjC;AAAA,QACJ;AAEA,eAAO,IAAI,KAAK,iBAAiB,MAAM,GAAG,MAAM;AAAA,MACpD;AAAA,MAEA,CAAE,0BAA0B,QAAQ;AAChC,YAAI,OAAO,OAAO,oBAAoB,YAAY;AAC9C,eAAK,QAAQ;AACb,iBAAO,OAAO,gBAAgB;AAC9B,eAAK,QAAQ;AAAA,QACjB;AAAA,MACJ;AAAA,MAEA,aAAa,MAAM,OAAO;AACtB,eAAO,KAAK,QAAQ,KAAK,qBAAqB,GAAG,EAAE,KAAK;AAGxD,YAAI,WAAW;AACf,eAAO,SAAS,KAAK,MAAM,EAAE,MAAM,CAAC;AAAA,MACxC;AAAA,MAEA,WAAW,MAAM,OAAO,QAAQ;AAC5B,eAAO,KAAK,QAAQ,KAAK,qBAAqB,GAAG,EAAE,KAAK;AACxD,YAAI,WAAW;AACf,eAAO,SAAS,KAAK,MAAM;AAAA,UAAE;AAAA,UACA,gBAAgB;AAAA,UAChB,mBAAmB;AAAA,QAAO,CAAC;AAAA,MAC5D;AAAA,MAEA,iBAAiB,QAAQ;AACrB,eAAO,OAAO;AAAA,MAClB;AAAA,MAEA,kCAAkC,QAAQ;AACtC,eAAO,OAAO,KAAK,YAAY;AAAA,MACnC;AAAA,MAEA,oCAAoC,QAAQ;AACxC,eAAO,OAAO;AAAA,MAClB;AAAA,IACJ,CAAC,CAAC;AAEF,kBAAc,UAAU,WAAW,UAAU,MAAM,SAAS;AAAA,MAExD,YAAY,WAAW,QAAQ,UAAU,QAAW;AAChD,aAAK,YAAY;AACjB,aAAK,SAAS;AACd,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC;AAAA,MAClB;AAAA,MAEA,cAAc;AAEV,YAAI,KAAK,WAAW,QAAW;AAC3B,eAAK,UAAU,QAAQ;AAAA,QAC3B;AACA,YAAI,YAAY,KAAK,UAAU,YAAY,KAAK,MAAM,IAAI,CAAC,CAAE,MAAM,IAAK,MAAM,KAAK,MAAM,MAAM,IAAI,CAAC,CAAC;AACrG,YAAI,KAAK,WAAW,QAAW;AAC3B,eAAK,UAAU,QAAQ;AAAA,QAC3B;AAGA,YAAI,CAAC,WAAW;AACZ,iBAAO;AAAA,QACX;AAGA,YAAI;AACJ,YAAI,KAAK,YAAY,YAAY,KAAK,YAAY,QAAW;AACzD,cAAI,iBAAiB,KAAK,UAAU;AACpC,oBAAU,IAAI,YAAY,gBAAgB,IAAI,KAAK,OAAO;AAAA,QAC9D,OAAO;AACH,oBAAU;AAAA,QACd;AAGA,eAAO,KAAK,UAAU,YAAY,CAAC,MAAM,SAAS,WAAW,IAAI,CAAC;AAAA,MACtE;AAAA,IACJ,CAAC;AAGD,QAAM,8BAA8B,iBAAiB,UAAU,MAAM,oCAAoC,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQnH,WAAW,MAAM,OAAO,QAAQ;AAC5B,eAAO,WAAW,MAAM,IAAI,EAAE,IAAI,UAAQ,SAAS,IAAI,EAAE,KAAK,EAAE;AAAA,MACpE;AAAA,IACJ,CAAC,CAAC;AAGF,QAAM,uBAAuB,iBAAiB,UAAU,MAAM,6BAA6B,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQnH,aAAa,MAAiB;AAC1B,eAAO,WAAW,IAAI;AAAA,MAC1B;AAAA,IACJ,CAAC,CAAC;AAGF,QAAM,gCAAgC,iBAAiB,UAAU,MAAM,sCAAsC,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQvH,iBAAiB,QAAQ;AACrB,YAAI,OAAO,OAAO;AAElB,YAAI,CAAC,OAAO,KAAK,SAAS,YAAY,KAAK,CAAC,OAAO,KAAK,SAAS,iBAAiB,GAAG;AACjF,cAAI,OAAO,YAAY,UAAU;AAC7B,gBAAI,mBAAmB,CAAC,UAAU,YAAY;AAC9C,gBAAI,OAAO,eAAe,UAAU,iBAAiB,SAAS,OAAO,KAAK,GAAG;AACzE,sBAAQ;AAAA,YACZ;AAAA,UACJ;AAAA,QACJ;AACA,eAAO;AAAA,MACX;AAAA,IACJ,CAAC,CAAC;AAGF,QAAM,2BAA2B,iBAAiB,UAAU,MAAM,iCAAiC,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAS7G,kCAAkC,QAAQ;AACtC,eAAO,OAAO,OAAO,SAAS,aAAa,OAAO,KAAK,OAAO,OAAO;AAAA,MACzE;AAAA,MAEA,oCAAoC,QAAQ;AACxC,eAAO,OAAO,OAAO,SAAS,aAAa,OAAO,KAAK,OAAO,OAAO;AAAA,MACzE;AAAA,IACJ,CAAC,CAAC;AAMF,aAAS,iBAAiB,UAAU;AAChC,UAAI,aAAa,QAAW;AACxB,eAAO;AAAA,MACX,WAAW,SAAS,eAAe,QAAQ;AACvC,eAAO,SAAS,eAAe,KAAK,GAAG;AAAA,MAC3C,WAAW,CAAC,CAAE,QAAW,QAAS,EAAE,SAAS,SAAS,OAAO,GAAG;AAC5D,eAAO,SAAS;AAAA,MACpB,WAAW,CAAC,CAAE,QAAW,QAAS,EAAE,SAAS,SAAS,IAAI,GAAG;AACzD,eAAO,SAAS;AAAA,MACpB,OAAO;AACH,eAAO;AAAA,MACX;AAAA,IACJ;AAGA,QAAM,gBAAgB,UAAU,MAAM,sBAAsB,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQ9D,YAAY,UAAU,SAAS;AAC3B,cAAM;AACN,aAAK,OAAO;AACZ,aAAK,iBAAiB,iBAAiB,QAAQ;AAC/C,aAAK,WAAW;AAChB,aAAK,UAAU,KAAK,IAAI;AAAA,MAC5B;AAAA,MAEA,MAAM;AACF,YAAI;AACJ,YAAI,KAAK,mBAAmB,QAAW;AACnC,mBAAS;AAAA,QACb,OAAO;AACH,mBAAS;AAAA,QACb;AACA,eAAO,IAAI,QAAQ;AAAA,UAAE,SAAS,KAAK;AAAA,UACd,eAAe,KAAK;AAAA,QAAe,CAAC;AAAA,MAC7D;AAAA,IACJ,CAAC;AAGD,QAAM,oBAAoB,UAAU,MAAM,0BAA0B,MAAM;AAAA;AAAA;AAAA;AAAA,MAKtE,YAAY,SAAS;AACjB,cAAM,OAAO;AACb,aAAK,OAAO;AAAA,MAChB;AAAA,IACJ,CAAC;AAMD,QAAM,SAAS,iBAAiB,UAAU,MAAM,eAAe,iBAAiB,QAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAoDtF,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAGD,cAAM,iEAAiE;AAEvE,aAAK,iBAAiB;AACtB,aAAK,OAAO;AACZ,aAAK,QAAQ;AACb,aAAK,QAAQ;AACb,aAAK,UAAU;AACf,aAAK,OAAO;AACZ,aAAK,UAAU;AACf,aAAK,WAAW;AAChB,aAAK,OAAO;AACZ,aAAK,UAAU;AAAA,MACnB;AAAA,MAEA,cAAc;AACV,YAAI,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AACA,eAAO,MAAM,IAAI,UAAQ,CAAE,MAAM,QAAQ,MAAM,IAAI,CAAE,CAAC;AAAA,MAC1D;AAAA,MAEA,eAAe;AACX,eAAO,KAAK,eAAe,CAAC;AAAA,MAChC;AAAA,MAEA,OAA+D;AAC3D,cAAM,IAAI,MAAM,qBAAqB;AAAA,MACzC;AAAA,IACJ,CAAC,CAAC;AAGF,QAAM,wBAAwB,iBAAiB,UAAU,MAAM,8BAA8B,OAAO;AAAA,MAEhG,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAED,YAAI,kBAAkB,CAAC;AACvB,iBAAS,iBAAiB,gBAAgB;AACtC,0BAAgB,KAAK,aAAa;AAElC,cAAI,cAAc,WAAW,IAAI,GAAG;AAChC,4BAAgB,UAAU,cAAc,MAAM,CAAC;AAC/C,4BAAgB,KAAK,aAAa;AAAA,UACtC;AAAA,QACJ;AAEA,YAAI,SAAS,UAAa,kBAAkB,QAAW;AACnD,kBAAQ,cAAc,aAAa;AAAA,QACvC;AAEA,cAAM;AAAA,UACF,gBAAgB;AAAA,UAChB;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAAQ,WAAW,QAAQ,gBAAgB,QAAW;AACvD,YAAI,KAAK,eAAe,SAAS,aAAa,GAAG;AAC7C,kBAAQ,WAAW,KAAK,MAAM,CAAC,cAAc,WAAW,OAAO,CAAC;AAAA,QACpE;AAAA,MACJ;AAAA,MAEA,eAAe;AACX,eAAO,KAAK,eAAe,KAAK,KAAK;AAAA,MACzC;AAAA,IACJ,CAAC,CAAC;AAGF,QAAM,eAAe,UAAU,MAAM,qBAAqB,OAAO;AAAA,MAE7D,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAED,YAAI,UAAU,GAAG;AACb,gBAAM,IAAI,UAAU,uIAEqC;AAAA,QAC7D;AACA,YAAI,gBAAgB,UAAa,UAAU,UAAU;AACjD,gBAAM,IAAI,UAAU,IAAI,oCAAoC,QAAQ,CAAC;AAAA,QACzE;AACA,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAAQ,WAAW,QAAuC;AAC3D,gBAAQ,WAAW,KAAK,MAAM,MAAM;AAAA,MACxC;AAAA,IACJ,CAAC;AAGD,QAAM,oBAAoB,UAAU,MAAM,0BAA0B,OAAO;AAAA,MAEvE,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,QAEJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAAQ,WAAkD;AAC3D,gBAAQ,WAAW,KAAK,MAAM,KAAK,KAAK;AAAA,MAC5C;AAAA,IACJ,CAAC;AAGD,QAAM,mBAAmB,UAAU,MAAM,yBAAyB,kBAAkB;AAAA,MAEhF,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,QACV,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAGD,QAAM,oBAAoB,UAAU,MAAM,0BAA0B,kBAAkB;AAAA,MAElF,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,QACV,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,IACJ,CAAC;AAGD,QAAM,gBAAgB,UAAU,MAAM,sBAAsB,OAAO;AAAA,MAE/D,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAED,YAAI,UAAU,GAAG;AACb,gBAAM,IAAI,UAAU,8IAEyC;AAAA,QACjE;AACA,YAAI,gBAAgB,UAAa,UAAU,UAAU;AACjD,gBAAM,IAAI,UAAU,IAAI,oCAAoC,QAAQ,CAAC;AAAA,QACzE;AACA,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAAQ,WAAW,QAAuC;AAC3D,YAAI,QAAQ,QAAQ,WAAW,KAAK,MAAM,MAAS;AACnD,gBAAQ,YAAY,KAAK;AACzB,cAAM,KAAK,MAAM;AACjB,gBAAQ,WAAW,KAAK,MAAM,KAAK;AAAA,MACvC;AAAA,IACJ,CAAC;AAGD,QAAM,qBAAqB,UAAU,MAAM,2BAA2B,OAAO;AAAA,MAEzE,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAAQ,WAAkD;AAC3D,YAAI,QAAQ,QAAQ,WAAW,KAAK,MAAM,MAAS;AACnD,gBAAQ,YAAY,KAAK;AACzB,cAAM,KAAK,KAAK,KAAK;AACrB,gBAAQ,WAAW,KAAK,MAAM,KAAK;AAAA,MACvC;AAAA,IACJ,CAAC;AAGD,QAAM,eAAe,UAAU,MAAM,qBAAqB,OAAO;AAAA,MAE7D,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,UAAU;AAAA,UACV,MAAM;AAAA,QACV,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAAQ,WAAkD;AAC3D,YAAI,QAAQ,QAAQ,WAAW,KAAK,MAAM,MAAS;AACnD,YAAI,UAAU,QAAW;AACrB,kBAAQ;AAAA,QACZ;AACA,gBAAQ,WAAW,KAAK,MAAM,QAAQ,CAAC;AAAA,MAC3C;AAAA,IACJ,CAAC;AAGD,QAAM,cAAc,UAAU,MAAM,oBAAoB,OAAO;AAAA,MAE3D,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,SAAS;AAAA,UACT,MAAM;AAAA,QACV,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,SAAS;AAAA,UACT,OAAO;AAAA,UACP;AAAA,QACJ,CAAC;AAAA,MACL;AAAA,MAEA,KAAK,QAA0D;AAC3D,eAAO,WAAW;AAClB,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ,CAAC;AAGD,QAAM,iBAAiB,UAAU,MAAM,uBAAuB,OAAO;AAAA,MAEjE,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACAE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,SAAS;AAAA,UACT,MAAM;AAAA,UACN,SAAS;AAAA,UACT,MAAM;AAAA,QACV,CAAC;AAED,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,SAAS;AAAA,UACT,OAAO;AAAA,UACP;AAAA,QACJ,CAAC;AACD,aAAK,UAAUA;AAAA,MACnB;AAAA,MAEA,KAAK,QAA0D;AAC3D,YAAIA,WAAU,KAAK;AACnB,YAAIA,aAAY,QAAW;AACvB,UAAAA,WAAU,OAAO;AAAA,QACrB;AACA,YAAI,YAAY,OAAO,eAAe;AACtC,kBAAU,SAASA,QAAO;AAC1B,eAAO,eAAe,UAAU,YAAY,GAAG,QAAQ,MAAM;AAC7D,eAAO,KAAK;AAAA,MAChB;AAAA,IACJ,CAAC;AAGD,QAAM,oBAAoB,iBAAiB,UAAU,MAAM,0BAA0B,OAAO;AAAA,MAExF,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,gBAAgB;AAAA,UAChB,MAAM;AAAA,UACN,cAAc;AAAA,UACd,MAAM;AAAA,UACN,UAAU;AAAA,UACV,MAAM;AAAA,UACN,SAAS;AAAA,QACb,CAAC;AAED,YAAI,kBAAkB,CAAC;AAEvB,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,SAAS;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,QACJ,CAAC;AAED,aAAK,eAAe;AACpB,aAAK,gBAAgB;AACrB,aAAK,mBAAmB;AACxB,aAAK,mBAAmB,CAAC;AAAA,MAC7B;AAAA,MAEA,aAAa;AACT,YAAI;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,MAAM;AAAA,UACN,YAAY;AAAA,QAChB,CAAC;AAGD,YAAI,OAAO,SAAS,QAAW;AAC3B,iBAAO,OAAO,IAAI,SAAS,KAAK,cAAc,IAAI;AAAA,QACtD;AAEA,YAAIC,WAAU,QAAQ,QAAQ,WAAW,CAAC,CAAC;AAC3C,eAAO,OAAO;AAGd,YAAI,UAAU,QAAQ;AAClB,cAAI,OAAO,OAAO;AAClB,iBAAO,OAAO;AACd,cAAI,gBAAgB,KAAK,qBAAqB,MAAMA,UAAS,IAAI;AACjE,eAAK,iBAAiB,KAAK,aAAa;AAAA,QAC5C;AAGA,YAAI,SAAS,IAAI,KAAK,cAAc,MAAM;AAC1C,aAAK,iBAAiB,IAAI,IAAI;AAG9B,iBAAS,SAASA,UAAS;AACvB,eAAK,iBAAiB,KAAK,IAAI;AAAA,QACnC;AAEA,eAAO;AAAA,MACX;AAAA,MAEA,kBAAkB;AACd,eAAO,KAAK;AAAA,MAChB;AAAA,MAEA,KAAK,QAAQ,WAAW,QAAuC;AAC3D,YAAI,cAAc,OAAO,CAAC;AAC1B,YAAI,cAAc,OAAO,MAAM,CAAC;AAGhC,YAAI,KAAK,SAAS,UAAU;AACxB,kBAAQ,WAAW,KAAK,MAAM,WAAW;AAAA,QAC7C;AAGA,YAAI,QAAQ,KAAK,kBAAkB,WAAW,GAAG;AAC7C,mBAAS,KAAK,iBAAiB,WAAW;AAAA,QAC9C,OAAO;AACH,cAAI,OAAO;AAAA,YAAC;AAAA,YACA,SAAS,KAAK,iBAAiB,KAAK,IAAI;AAAA,UAAC;AACrD,cAAI,MAAM,IAAI,yDAAyD,IAAI;AAC3E,gBAAM,IAAI,cAAc,MAAM,GAAG;AAAA,QACrC;AASA,YAAI;AACJ,SAAE,cAAc,WAAY,IAAI,OAAO,iBAAiB,aAAa,MAAS;AAC9E,iBAAS,CAAE,KAAK,KAAM,KAAK,OAAO,QAAQ,YAAY,GAAG;AACrD,kBAAQ,WAAW,KAAK,KAAK;AAAA,QACjC;AAEA,YAAI,YAAY,QAAQ;AACpB,qBAAW,WAAW,yBAAyB,CAAC,CAAC;AACjD,kBAAQ,WAAW,uBAAuB,EAAE,KAAK,GAAG,WAAW;AAAA,QACnE;AAAA,MACJ;AAAA,IACJ,CAAC,CAAC;AAGF,sBAAkB,UAAU,uBAAuB,UAAU,MAAM,6BAA6B,OAAO;AAAA,MACnG,YAAY,MAAMA,UAAS,MAAM;AAC7B,YAAI,UAAU,MAAM,OAAO;AAC3B,YAAIA,SAAQ,QAAQ;AAChB,qBAAW,IAAI,SAASA,SAAQ,KAAK,IAAI,CAAC;AAAA,QAC9C;AACA,cAAM,EAAE,gBAAgB,CAAC,GAAG,MAAM,MAAM,QAAQ,CAAC;AAAA,MACrD;AAAA,IACJ,CAAC;AAGD,QAAM,gBAAgB,UAAU,MAAM,sBAAsB,cAAc;AAAA,MACtE,KAAK,QAAQ,WAAW,QAAuC;AAC3D,YAAI,QAAQ,QAAQ,WAAW,KAAK,MAAM,MAAS;AACnD,gBAAQ,YAAY,KAAK;AACzB,gBAAQ,MAAM,OAAO,MAAM;AAC3B,gBAAQ,WAAW,KAAK,MAAM,KAAK;AAAA,MACvC;AAAA,IACJ,CAAC;AAMD,QAAM,WAAW,UAAU,MAAM,iBAAiB,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAkBvD,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACAP;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,OAAO;AAAA,UACP,UAAU;AAAA,UACV,MAAM;AAAA;AAAA,UACN,WAAW;AAAA;AAAA,UACX,WAAW;AAAA;AAAA,UACX,OAAO;AAAA;AAAA,UACP,KAAK;AAAA;AAAA,UACL,eAAe;AAAA;AAAA,UACf,IAAI;AAAA,QACR,CAAC;AAGD,cAAM,iEAAiE;AAEvE,eAAO,eAAe,MAAM,QAAQ;AAAA,UAChC,MAAM;AACF,mBAAO,IAAI,gBAAgB,KAAK;AAAA,UACpC;AAAA,QACJ,CAAC;AACD,aAAK,SAAS;AACd,aAAK,WAAW,CAAC;AACjB,YAAI,aAAa;AAAW,eAAK,SAAS,WAAW;AACrD,YAAI,SAAS;AAAW,eAAK,SAAS,OAAO;AAC7C,YAAI,cAAc;AAAW,eAAK,SAAS,YAAY;AACvD,YAAI,cAAc;AAAW,eAAK,SAAS,YAAY;AACvD,YAAI,UAAU;AAAW,eAAK,SAAS,QAAQ;AAC/C,YAAI,QAAQ;AAAW,eAAK,SAAS,MAAM;AAC3C,YAAI,kBAAkB;AAAW,eAAK,SAAS,gBAAgB;AAC/D,YAAIA,QAAO;AAAW,eAAK,SAAS,KAAKA;AAAA,MAC7C;AAAA,MAEA,KAAK,QAAQ;AAET,YAAI,WAAW,KAAK;AAChB,cAAI,KAAK,OAAO,SAAS,GAAG,GAAG;AAC3B,mBAAO,QAAQ;AAAA,UACnB,WAAW,KAAK,OAAO,SAAS,GAAG,GAAG;AAClC,mBAAO,QAAQ;AAAA,UACnB,OAAO;AACH,gBAAI,MAAM,IAAI,6BAA6B,KAAK,MAAM;AACtD,kBAAM,IAAI,UAAU,GAAG;AAAA,UAC3B;AAAA,QACJ;AAGA,YAAI;AACJ,YAAI;AACA,eAAKA,IAAG,SAAS,QAAQ,KAAK,QAAQ,KAAK,SAAS,IAAI;AAAA,QAC5D,SAAS,GAAG;AACR,cAAI,OAAO,EAAE,UAAU,QAAQ,OAAO,EAAE,QAAQ;AAChD,cAAI,UAAU;AACd,gBAAM,IAAI,kBAAkB,IAAI,SAAS,IAAI,CAAC;AAAA,QAClD;AAEA,YAAI,UAAU,OAAO,OAAO,EAAE,IAAI,OAAO,KAAK,OAAO,GAAG,KAAK,QAAQ;AACrE,YAAI,KAAK,OAAO,SAAS,GAAG,GAAG;AAC3B,iBAAOA,IAAG,iBAAiB,QAAW,OAAO;AAAA,QACjD,WAAW,KAAK,OAAO,SAAS,GAAG,GAAG;AAClC,iBAAOA,IAAG,kBAAkB,QAAW,OAAO;AAAA,QAClD,OAAO;AACH,cAAI,MAAM,IAAI,8BAA8B,QAAQ,KAAK,MAAM;AAC/D,gBAAM,IAAI,UAAU,GAAG;AAAA,QAC3B;AAAA,MACJ;AAAA,MAEA,CAAC,KAAK,QAAQ,MAAM,IAAI;AACpB,YAAI,OAAO,CAAE,KAAK,MAAO;AACzB,YAAI,SAAS,OAAO,QAAQ,KAAK,QAAQ,EAAE,IAAI,CAAC,CAAE,GAAG,CAAE,MAAM;AACzD,cAAI,MAAM;AAAQ,gBAAI,EAAE,OAAO,GAAG,CAAC,KAAK,QAAQ,MAAM,IAAI;AAAE,qBAAO,OAAO,KAAK,MAAM,SAAS,CAAC;AAAA,YAAE,EAAE;AACnG,iBAAO,CAAE,GAAG,CAAE;AAAA,QAClB,CAAC;AACD,YAAI,WAAW,CAAC,EACP,OAAO,KAAK,OAAO,SAAO,QAAQ,EAAE,EAAE,IAAI,IAAI,CAAC,EAC/C,OAAO,OAAO,OAAO,CAAC,CAAO,EAAE,GAAG,MAAM,QAAQ,MAAS,EACrD,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,IAAI,SAAS,IAAI,GAAG,CAAC,CAAC,EAC7C,KAAK,IAAI;AAClB,eAAO,IAAI,UAAU,KAAK,YAAY,MAAM,QAAQ;AAAA,MACxD;AAAA,MAEA,WAAW;AACP,eAAO,KAAK,KAAK,QAAQ,MAAM,EAAE;AAAA,MACrC;AAAA,IACJ,CAAC;AAKD,QAAM,YAAY,UAAU,MAAM,kBAAkB,iBAAiB,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQnE,YAAY,UAAU,CAAC,GAAG;AACtB,cAAM;AACN,eAAO,OAAO,MAAM,OAAO;AAAA,MAC/B;AAAA,IACJ,CAAC;AAGD,cAAU,UAAU,OAAO,WAAW,IAAI;AAG1C,QAAM,oBAAoB,iBAAiB,UAAU,MAAM,kBAAkB;AAAA,MAEzE,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,aAAa;AAAA,UACb,cAAc;AAAA,UACd,kBAAkB;AAAA,UAClB,kBAAkB;AAAA,QACtB,CAAC;AAED,aAAK,cAAc;AACnB,aAAK,mBAAmB;AACxB,aAAK,eAAe;AACpB,aAAK,mBAAmB;AAGxB,aAAK,cAAc,CAAC;AAGpB,aAAK,SAAS,UAAU,QAAW,YAAY;AAC/C,aAAK,SAAS,UAAU,SAAS,YAAY;AAC7C,aAAK,SAAS,UAAU,eAAe,iBAAiB;AACxD,aAAK,SAAS,UAAU,cAAc,gBAAgB;AACtD,aAAK,SAAS,UAAU,eAAe,iBAAiB;AACxD,aAAK,SAAS,UAAU,UAAU,aAAa;AAC/C,aAAK,SAAS,UAAU,gBAAgB,kBAAkB;AAC1D,aAAK,SAAS,UAAU,SAAS,YAAY;AAC7C,aAAK,SAAS,UAAU,QAAQ,WAAW;AAC3C,aAAK,SAAS,UAAU,WAAW,cAAc;AACjD,aAAK,SAAS,UAAU,WAAW,iBAAiB;AACpD,aAAK,SAAS,UAAU,UAAU,aAAa;AAE9C,SAAE,cAAc,aAAa,cAAc,aAAc,EAAE,QAAQ,cAAY;AAC5E,cAAI,WAAW,aAAa,QAAQ;AACpC,eAAK,SAAS,UAAU,UAAU,KAAK;AAAA,YAAU,KAAK,cAAc,UAAU,QAAQ;AAAA,YAClF,IAAI,+CAA+C,UAAU,QAAQ;AAAA,UAAC,CAAC;AAAA,QAC/E,CAAC;AAID,aAAK,aAAa;AAGlB,aAAK,WAAW,CAAC;AACjB,aAAK,yBAAyB,CAAC;AAG/B,aAAK,iBAAiB,CAAC;AACvB,aAAK,6BAA6B,CAAC;AAGnC,aAAK,YAAY,CAAC;AAGlB,aAAK,2BAA2B;AAIhC,aAAK,iCAAiC,CAAC;AAAA,MAC3C;AAAA;AAAA;AAAA;AAAA,MAKA,SAAS,eAAe,OAAO,QAAQ;AACnC,YAAI,WAAW,WAAW,KAAK,aAAa,eAAe,CAAC,CAAC;AAC7D,iBAAS,KAAK,IAAI;AAAA,MACtB;AAAA,MAEA,cAAc,eAAe,OAAO,gBAAgB,QAAW;AAC3D,eAAO,QAAQ,KAAK,YAAY,aAAa,GAAG,OAAO,aAAa;AAAA,MACxE;AAAA;AAAA;AAAA;AAAA,MAKA,aAAa,QAAQ;AACjB,eAAO,OAAO,KAAK,WAAW,MAAM;AAIpC,iBAAS,UAAU,KAAK,UAAU;AAC9B,cAAI,OAAO,QAAQ,QAAQ;AACvB,mBAAO,UAAU,OAAO,OAAO,IAAI;AAAA,UACvC;AAAA,QACJ;AAAA,MACJ;AAAA,MAEA,YAAY,MAAM;AACd,iBAAS,UAAU,KAAK,UAAU;AAC9B,cAAI,OAAO,SAAS,QAAQ,OAAO,YAAY,QAAW;AACtD,mBAAO,OAAO;AAAA,UAClB;AAAA,QACJ;AACA,eAAO,KAAK,UAAU,IAAI;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA,MAMA,eAAe;AAKX,YAAI;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,SAAS;AAAA,UACT,YAAY;AAAA,QAChB,CAAC;AAED,YAAI,KAAK,WAAW,KAAK,MAAM,QAAQ,KAAK,CAAC,CAAC,GAAG;AAC7C,iBAAO,KAAK,CAAC;AACb;AAAA,YAAU;AAAA,YACN,IAAI,oFAAoF;AAAA,cACpF,MAAM,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI;AAAA,YAClC,CAAC;AAAA,UAAC;AAAA,QACV;AAMA,YAAI,QAAQ,KAAK;AACjB,YAAI,CAAC,KAAK,UAAU,KAAK,WAAW,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG;AAClE,cAAI,KAAK,UAAU,UAAU,QAAQ;AACjC,kBAAM,IAAI,UAAU,6CAA6C;AAAA,UACrE;AACA,mBAAS,KAAK,uBAAuB,GAAG,MAAM,MAAM;AAAA,QAGxD,OAAO;AACH,mBAAS,KAAK,qBAAqB,GAAG,MAAM,MAAM;AAAA,QACtD;AAGA,YAAI,EAAE,aAAa,SAAS;AACxB,cAAI,OAAO,OAAO;AAClB,cAAI,QAAQ,KAAK,WAAW;AACxB,mBAAO,UAAU,KAAK,UAAU,IAAI;AAAA,UACxC,WAAW,KAAK,qBAAqB,QAAW;AAC5C,mBAAO,UAAU,KAAK;AAAA,UAC1B;AAAA,QACJ;AAGA,YAAI,eAAe,KAAK,kBAAkB,MAAM;AAChD,YAAI,OAAO,iBAAiB,YAAY;AACpC,gBAAM,IAAI,UAAU,IAAI,uBAAuB,YAAY,CAAC;AAAA,QAChE;AAEA,YAAI,SAAS,IAAI,aAAa,MAAM;AAGpC,YAAI,YAAY,KAAK,cAAc,QAAQ,OAAO,MAAM,OAAO,IAAI;AACnE,YAAI,OAAO,cAAc,YAAY;AACjC,gBAAM,IAAI,UAAU,IAAI,sBAAsB,SAAS,CAAC;AAAA,QAC5D;AAEA,YAAI,cAAc,UAAU;AACxB,gBAAM,IAAI,UAAU,IAAI,gEACmB,SAAS,CAAC;AAAA,QACzD;AAGA,YAAI,oBAAoB,MAAM;AAC1B,cAAI;AACA,iBAAK,eAAe,EAAE,aAAa,QAAQ,MAAS;AAAA,UACxD,SAAS,KAAK;AAEV,gBAAI,eAAe,aAAa,IAAI,YAAY,uBAAuB;AACnE,oBAAM,IAAI,UAAU,8CAA8C;AAAA,YACtE,OAAO;AACH,oBAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAEA,eAAO,KAAK,YAAY,MAAM;AAAA,MAClC;AAAA,MAEA,qBAAqB;AACjB,YAAI,QAAQ,eAAe,MAAM,GAAG,SAAS;AAC7C,aAAK,eAAe,KAAK,KAAK;AAC9B,eAAO;AAAA,MACX;AAAA,MAEA,+BAA+B;AAE3B,YAAI,QAAQ,wBAAwB,MAAM,GAAG,SAAS;AACtD,aAAK,2BAA2B,KAAK,KAAK;AAC1C,eAAO;AAAA,MACX;AAAA,MAEA,YAAY,QAAQ;AAEhB,aAAK,gBAAgB,MAAM;AAG3B,aAAK,SAAS,KAAK,MAAM;AACzB,eAAO,YAAY;AAGnB,iBAAS,iBAAiB,OAAO,gBAAgB;AAC7C,eAAK,uBAAuB,aAAa,IAAI;AAAA,QACjD;AAGA,iBAAS,iBAAiB,OAAO,gBAAgB;AAC7C,cAAI,KAAK,yBAAyB,KAAK,aAAa,GAAG;AACnD,gBAAI,CAAC,KAAK,+BAA+B,QAAQ;AAC7C,mBAAK,+BAA+B,KAAK,IAAI;AAAA,YACjD;AAAA,UACJ;AAAA,QACJ;AAGA,eAAO;AAAA,MACX;AAAA,MAEA,eAAe,QAAQ;AACnB,sBAAc,KAAK,UAAU,MAAM;AAAA,MACvC;AAAA,MAEA,uBAAuB,WAAW;AAE9B,YAAI,kBAAkB,CAAC;AACvB,iBAAS,SAAS,KAAK,gBAAgB;AACnC,cAAI,MAAM,SAAS,iBAAiB;AAChC,gBAAI,MAAM;AACV,kBAAM,IAAI,UAAU,IAAI,KAAK,MAAM,KAAK,CAAC;AAAA,UAC7C;AACA,0BAAgB,MAAM,KAAK,IAAI;AAAA,QACnC;AAGA,YAAI,YAAY,oBAAI,IAAI;AACxB,iBAAS,SAAS,UAAU,gBAAgB;AAIxC,cAAI,EAAE,MAAM,SAAS,kBAAkB;AACnC,4BAAgB,MAAM,KAAK,IAAI,KAAK,mBAAmB;AAAA,cACnD,OAAO,MAAM;AAAA,cACb,aAAa,MAAM;AAAA,cACnB,kBAAkB,MAAM;AAAA,YAC5B,CAAC;AAAA,UACL;AAGA,mBAAS,UAAU,MAAM,gBAAgB;AACrC,sBAAU,IAAI,QAAQ,gBAAgB,MAAM,KAAK,CAAC;AAAA,UACtD;AAAA,QACJ;AAKA,iBAAS,SAAS,UAAU,4BAA4B;AACpD,cAAI,cAAc,KAAK,6BAA6B;AAAA,YAChD,UAAU,MAAM;AAAA,UACpB,CAAC;AAGD,mBAAS,UAAU,MAAM,gBAAgB;AACrC,sBAAU,IAAI,QAAQ,WAAW;AAAA,UACrC;AAAA,QACJ;AAGA,iBAAS,UAAU,UAAU,UAAU;AACnC,oBAAU,IAAI,MAAM,EAAE,YAAY,MAAM;AAAA,QAC5C;AAAA,MACJ;AAAA,MAEA,yBAAyB;AACrB,YAAI;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,MAAM;AAAA,UACN,YAAY;AAAA,QAChB,CAAC;AAGD,YAAI,cAAc,QAAQ;AACtB,cAAI,MAAM;AACV,gBAAM,IAAI,UAAU,GAAG;AAAA,QAC3B;AAIA,YAAI,CAAC,CAAC,UAAU,YAAY,EAAE,SAAS,OAAO,KAAK,GAAG;AAClD,iBAAO,WAAW;AAAA,QACtB;AACA,YAAI,OAAO,UAAU,gBAAgB,EAAE,aAAa,SAAS;AACzD,iBAAO,WAAW;AAAA,QACtB;AAGA,eAAO,OAAO,OAAO,QAAQ,EAAE,MAAM,gBAAgB,CAAC,EAAE,CAAC;AAAA,MAC7D;AAAA,MAEA,uBAAuB;AACnB,YAAI;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,SAAS;AAAA,UACT,YAAY;AAAA,QAChB,CAAC;AAGD,YAAI,iBAAiB,CAAC;AACtB,YAAI,sBAAsB,CAAC;AAC3B,YAAI;AACJ,aAAK,iBAAiB,MAAM;AAExB,cAAI,CAAC,KAAK,aAAa,SAAS,cAAc,CAAC,CAAC,GAAG;AAC/C,gBAAIQ,QAAO;AAAA,cAAC,QAAQ;AAAA,cACR,cAAc,KAAK;AAAA,YAAY;AAC3C,gBAAI,MAAM;AAEV,kBAAM,IAAI,UAAU,IAAI,KAAKA,KAAI,CAAC;AAAA,UACtC;AAGA,yBAAe,KAAK,aAAa;AACjC,cAAI,cAAc,SAAS,KAAK,KAAK,aAAa,SAAS,cAAc,CAAC,CAAC,GAAG;AAC1E,gCAAoB,KAAK,aAAa;AAAA,UAC1C;AAAA,QACJ;AAGA,YAAI,OAAO,OAAO;AAClB,eAAO,OAAO;AACd,YAAI,SAAS,QAAW;AACpB,cAAI;AACJ,cAAI,oBAAoB,QAAQ;AAC5B,iCAAqB,oBAAoB,CAAC;AAAA,UAC9C,OAAO;AACH,iCAAqB,eAAe,CAAC;AAAA,UACzC;AACA,iBAAO,eAAe,oBAAoB,KAAK,YAAY;AAC3D,cAAI,CAAC,MAAM;AACP,gBAAI,MAAM;AACV,kBAAM,IAAI,UAAU,IAAI,KAAK,aAAa,CAAC;AAAA,UAC/C;AACA,iBAAO,KAAK,QAAQ,MAAM,GAAG;AAAA,QACjC;AAGA,eAAO,OAAO,OAAO,QAAQ,EAAE,MAAM,eAAe,CAAC;AAAA,MACzD;AAAA,MAEA,kBAAkB,QAAQ,gBAAgB,QAAW;AACjD,YAAI,SAAS,QAAQ,QAAQ,UAAU,aAAa;AACpD,eAAO,OAAO;AACd,eAAO,KAAK,cAAc,UAAU,QAAQ,MAAM;AAAA,MACtD;AAAA,MAEA,eAAe;AAEX,YAAI,oBAAoB,IAAI,uBAAuB,KAAK,gBAAgB;AACxE,YAAI,OAAO,KAAK,iBAAiB,MAAM,YAAY;AAC/C,iBAAO,KAAK,iBAAiB;AAAA,QACjC,OAAO;AACH,cAAI,MAAM;AACV,gBAAM,IAAI,UAAU,IAAI,KAAK,KAAK,gBAAgB,CAAC;AAAA,QACvD;AAAA,MACJ;AAAA,MAEA,gBAAgB,QAAQ;AAGpB,YAAI,kBAAkB,CAAC;AACvB,iBAAS,iBAAiB,OAAO,gBAAgB;AAC7C,cAAI,QAAQ,KAAK,wBAAwB,aAAa,GAAG;AACrD,gBAAI,iBAAiB,KAAK,uBAAuB,aAAa;AAC9D,4BAAgB,KAAK,CAAE,eAAe,cAAe,CAAC;AAAA,UAC1D;AAAA,QACJ;AAGA,YAAI,gBAAgB,QAAQ;AACxB,cAAI,mBAAmB,KAAK,aAAa;AACzC,2BAAiB,KAAK,MAAM,QAAQ,eAAe;AAAA,QACvD;AAAA,MACJ;AAAA,MAEA,uBAAuB,QAAQ,qBAAqB;AAChD,YAAI,UAAU,oBAAoB,WAAW,IACzC,kCACA;AACJ,YAAI,kBAAkB,oBAAoB,IAAI,CAAC;AAAA,UAAE;AAAA;AAAA,QAA0B,MAAM,aAAa,EAAE,KAAK,IAAI;AACzG,cAAM,IAAI,cAAc,QAAQ,IAAI,SAAS,eAAe,CAAC;AAAA,MACjE;AAAA,MAEA,yBAAyB,QAAQ,qBAAqB;AAGlD,iBAAS,CAAE,eAAeC,OAAO,KAAK,qBAAqB;AAGvD,wBAAcA,QAAO,gBAAgB,aAAa;AAClD,iBAAO,KAAK,uBAAuB,aAAa;AAIhD,cAAI,CAACA,QAAO,eAAe,QAAQ;AAC/B,YAAAA,QAAO,UAAU,eAAeA,OAAM;AAAA,UAC1C;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,CAAC,CAAC;AAGF,QAAM,iBAAiB,UAAU,MAAM,uBAAuB,kBAAkB;AAAA,MAE5E,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,WAAW;AAAA,UACX,OAAO;AAAA,UACP,aAAa;AAAA,UACb,YAAY;AAAA,QAChB,CAAC;AAGD,mBAAW,QAAQ,oBAAoB,UAAU,gBAAgB;AACjE,mBAAW,QAAQ,gBAAgB,UAAU,YAAY;AACzD,mBAAW,QAAQ,oBAAoB,UAAU,gBAAgB;AACjE,cAAM,OAAO,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC;AAG5C,aAAK,QAAQ;AACb,aAAK,iBAAiB,CAAC;AAGvB,aAAK,cAAc,UAAU;AAC7B,aAAK,WAAW,UAAU;AAC1B,aAAK,yBAAyB,UAAU;AACxC,aAAK,YAAY,UAAU;AAC3B,aAAK,iCACD,UAAU;AACd,aAAK,6BAA6B,UAAU;AAAA,MAChD;AAAA,MAEA,YAAY,QAAQ;AAChB,iBAAS,MAAM,YAAY,MAAM;AACjC,aAAK,eAAe,KAAK,MAAM;AAC/B,eAAO;AAAA,MACX;AAAA,MAEA,eAAe,QAAQ;AACnB,cAAM,eAAe,MAAM;AAC3B,sBAAc,KAAK,gBAAgB,MAAM;AAAA,MAC7C;AAAA,IACJ,CAAC;AAGD,QAAM,0BAA0B,UAAU,MAAM,gCAAgC,eAAe;AAAA,MAE3F,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,WAAW;AAAA,UACX,UAAU;AAAA,QACd,CAAC;AAED,cAAM,SAAS;AACf,aAAK,WAAW;AAChB,aAAK,aAAa;AAAA,MACtB;AAAA,MAEA,YAAY,QAAQ;AAChB,YAAI,OAAO,UAAU;AACjB,cAAI,MAAM;AACV,gBAAM,IAAI,UAAU,GAAG;AAAA,QAC3B;AACA,iBAAS,KAAK,WAAW,YAAY,MAAM;AAC3C,aAAK,eAAe,KAAK,MAAM;AAC/B,eAAO;AAAA,MACX;AAAA,MAEA,eAAe,QAAQ;AACnB,aAAK,WAAW,eAAe,MAAM;AACrC,sBAAc,KAAK,gBAAgB,MAAM;AAAA,MAC7C;AAAA,IACJ,CAAC;AAGD,QAAMC,kBAAiB,iBAAiB,UAAU,MAAM,uBAAuB,iBAAiB,iBAAiB,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAsB/G,cAAc;AACV,YAAI;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,UACAJ;AAAA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,MAAM;AAAA,UACN,OAAO;AAAA,UACP,aAAa;AAAA,UACb,QAAQ;AAAA,UACR,SAAS,CAAC;AAAA,UACV,iBAAiB;AAAA,UACjB,cAAc;AAAA,UACd,uBAAuB;AAAA,UACvB,kBAAkB;AAAA,UAClB,kBAAkB;AAAA,UAClB,UAAU;AAAA,UACV,cAAc;AAAA,UACd,eAAe;AAAA,UACf,OAAO;AAAA;AAAA,UACP,SAAS;AAAA;AAAA,QACb,CAAC;AAGD,YAAI,UAAU,QAAW;AACrB;AAAA,YAAU;AAAA,YACN;AAAA,UAEJ;AAAA,QACJ;AAEA,YAAIA,aAAY,QAAW;AACvB;AAAA,YAAU;AAAA,YACN;AAAA,UAEJ;AAAA,QACJ;AAGA,cAAM;AAAA,UACF;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ,CAAC;AAGD,YAAI,SAAS,QAAW;AACpB,iBAAOL,MAAK,SAAS,SAAS,EAAE,CAAC,KAAK,EAAE;AAAA,QAC5C;AAEA,aAAK,OAAO;AACZ,aAAK,QAAQ;AACb,aAAK,SAAS;AACd,aAAK,kBAAkB;AACvB,aAAK,wBAAwB;AAC7B,aAAK,WAAW;AAChB,aAAK,eAAe;AACpB,aAAK,gBAAgB;AAErB,aAAK,QAAQ;AAGb,aAAK,eAAe,KAAK,mBAAmB,sBAAsB;AAClE,aAAK,aAAa,KAAK,mBAAmB,oBAAoB;AAC9D,aAAK,cAAc;AAGnB,iBAASU,UAAS,QAAQ;AACtB,iBAAO;AAAA,QACX;AACA,aAAK,SAAS,QAAQ,QAAWA,SAAQ;AACzC,aAAK,SAAS,QAAQ,MAAMA,SAAQ;AACpC,aAAK,SAAS,QAAQ,QAAQA,SAAQ;AACtC,aAAK,SAAS,QAAQ,OAAO,SAAU,GAAG;AACtC,cAAI,SAAS,OAAO,CAAC;AACrB,cAAI,CAAC,OAAO,UAAU,MAAM,GAAG;AAC3B,kBAAM,IAAI,UAAU,IAAI,uCAAuC,CAAC,CAAC;AAAA,UACrE;AACA,iBAAO;AAAA,QACX,CAAC;AACD,aAAK,SAAS,QAAQ,SAAS,SAAU,GAAG;AACxC,cAAI,SAAS,OAAO,CAAC;AACrB,cAAI,MAAM,MAAM,GAAG;AACf,kBAAM,IAAI,UAAU,IAAI,yCAAyC,CAAC,CAAC;AAAA,UACvE;AACA,iBAAO;AAAA,QACX,CAAC;AACD,aAAK,SAAS,QAAQ,OAAO,MAAM;AAEnC,aAAK;AAAA,UAAS;AAAA,UAAQ;AAAA,UAClB,KAAK,UAAU,QAAQ,8DAA8D;AAAA,QAAC;AAK1F,YAAI,iBAAiB,aAAa,SAAS,GAAG,IAAI,MAAM,aAAa,CAAC;AACtE,YAAI,KAAK,UAAU;AACf,eAAK;AAAA,YACD,iBAAiB;AAAA,YACjB,eAAe,OAAO,CAAC,IAAI;AAAA,YAC3B;AAAA,cACI,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,MAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAEA,YAAIL,UAAS;AACT,eAAK;AAAA,YACD,iBAAiB;AAAA,YACjB,eAAe,OAAO,CAAC,IAAI;AAAA,YAC3B;AAAA,cACI,QAAQ;AAAA,cACR,SAAS;AAAA,cACT,SAAS,KAAK;AAAA,cACd,MAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ;AAIA,iBAAS,UAAU,SAAS;AACxB,eAAK,uBAAuB,MAAM;AAClC,iBAAO,OAAO,KAAK,WAAW,OAAO,SAAS;AAAA,QAClD;AAAA,MACJ;AAAA;AAAA;AAAA;AAAA,MAKA,cAAc;AACV,YAAI,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACJ;AACA,eAAO,MAAM,IAAI,UAAQ,CAAE,MAAM,QAAQ,MAAM,IAAI,CAAE,CAAC;AAAA,MAC1D;AAAA;AAAA;AAAA;AAAA,MAKA,iBAAiB;AACb,YAAI;AAAA,UACA;AAAA,QACJ,IAAI,YAAY,WAAW;AAAA,UACvB,YAAY;AAAA,QAChB,CAAC;AAED,YAAI,KAAK,gBAAgB,QAAW;AAChC,eAAK,MAAM,0CAA0C;AAAA,QACzD;AAGA,mBAAW,QAAQ,gBAAgB,KAAK,WAAW;AAEnD,YAAI,WAAW,UAAU,iBAAiB,QAAQ;AAC9C,cAAI,QAAQ,QAAQ,QAAQ,SAAS,aAAa;AAClD,cAAI,cAAc,QAAQ,QAAQ,eAAe,MAAS;AAC1D,iBAAO,OAAO;AACd,iBAAO,OAAO;AACd,eAAK,cAAc,KAAK,mBAAmB,OAAO,WAAW;AAAA,QACjE,OAAO;AACH,eAAK,cAAc,KAAK;AAAA,QAC5B;AAIA,YAAI,OAAO,SAAS,QAAW;AAC3B,cAAI,YAAY,KAAK,eAAe;AACpC,cAAI,cAAc,KAAK,wBAAwB;AAC/C,cAAI,SAAS,KAAK;AAClB,oBAAU,UAAU,KAAK,OAAO,aAAa,QAAQ,EAAE;AACvD,iBAAO,OAAO,UAAU,YAAY,EAAE,KAAK;AAAA,QAC/C;AAGA,YAAI,gBAAgB,KAAK,kBAAkB,QAAQ,SAAS;AAE5D,YAAI,SAAS,IAAI,cAAc,OAAO,OAAO,EAAE,gBAAgB,CAAC,EAAE,GAAG,MAAM,CAAC;AAC5E,aAAK,YAAY,YAAY,MAAM;AAGnC,eAAO;AAAA,MACX;AAAA,MAEA,YAAY,QAAQ;AAChB,YAAI,OAAO,eAAe,QAAQ;AAC9B,eAAK,WAAW,YAAY,MAAM;AAAA,QACtC,OAAO;AACH,eAAK,aAAa,YAAY,MAAM;AAAA,QACxC;AACA,eAAO;AAAA,MACX;AAAA,MAEA,wBAAwB;AACpB,eAAO,KAAK,SAAS,OAAO,YAAU,OAAO,eAAe,MAAM;AAAA,MACtE;AAAA,MAEA,0BAA0B;AACtB,eAAO,KAAK,SAAS,OAAO,YAAU,CAAC,OAAO,eAAe,MAAM;AAAA,MACvE;AAAA;AAAA;AAAA;AAAA,MAKA,WAAW,OAAO,QAAW,YAAY,QAAW;AAChD,YAAI;AACJ,SAAE,MAAM,IAAK,IAAI,KAAK,iBAAiB,MAAM,SAAS;AACtD,YAAI,QAAQ,KAAK,SAAS,GAAG;AACzB,cAAI,MAAM;AACV,eAAK,MAAM,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,QACvC;AACA,eAAO;AAAA,MACX;AAAA,MAEA,iBAAiB,OAAO,QAAW,YAAY,QAAW;AACtD,YAAI,SAAS,QAAW;AACpB,iBAAO,SAAS,EAAE,MAAM,CAAC;AAAA,QAC7B;AAGA,YAAI,cAAc,QAAW;AACzB,sBAAY,IAAI,UAAU;AAAA,QAC9B;AAGA,iBAAS,UAAU,KAAK,UAAU;AAC9B,cAAI,OAAO,SAAS,UAAU;AAC1B,gBAAI,CAAC,QAAQ,WAAW,OAAO,IAAI,GAAG;AAClC,kBAAI,OAAO,YAAY,UAAU;AAC7B,wBAAQ,WAAW,OAAO,MAAM,OAAO,OAAO;AAAA,cAClD;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAGA,iBAAS,QAAQ,OAAO,KAAK,KAAK,SAAS,GAAG;AAC1C,cAAI,CAAC,QAAQ,WAAW,IAAI,GAAG;AAC3B,oBAAQ,WAAW,MAAM,KAAK,UAAU,IAAI,CAAC;AAAA,UACjD;AAAA,QACJ;AAGA,YAAI,KAAK,eAAe;AACpB,cAAI;AACA,aAAE,WAAW,IAAK,IAAI,KAAK,kBAAkB,MAAM,SAAS;AAAA,UAChE,SAAS,KAAK;AACV,gBAAI,eAAe,eAAe;AAC9B,mBAAK,MAAM,IAAI,OAAO;AAAA,YAC1B,OAAO;AACH,oBAAM;AAAA,YACV;AAAA,UACJ;AAAA,QACJ,OAAO;AACH,WAAE,WAAW,IAAK,IAAI,KAAK,kBAAkB,MAAM,SAAS;AAAA,QAChE;AAEA,YAAI,QAAQ,WAAW,uBAAuB,GAAG;AAC7C,iBAAO,KAAK,OAAO,QAAQ,WAAW,uBAAuB,CAAC;AAC9D,kBAAQ,WAAW,uBAAuB;AAAA,QAC9C;AAEA,eAAO,CAAE,WAAW,IAAK;AAAA,MAC7B;AAAA,MAEA,kBAAkB,aAAa,WAAW;AAEtC,YAAI,KAAK,0BAA0B,QAAW;AAC1C,wBAAc,KAAK,sBAAsB,WAAW;AAAA,QACxD;AAIA,YAAI,mBAAmB,oBAAI,IAAI;AAC/B,iBAAS,eAAe,KAAK,4BAA4B;AACrD,cAAI,gBAAgB,YAAY;AAChC,mBAAS,CAAE,GAAG,YAAa,KAAK,OAAO,QAAQ,YAAY,cAAc,GAAG;AACxE,gBAAI,YAAY,iBAAiB,IAAI,YAAY,KAAK,CAAC;AACvD,wBAAY,UAAU,OAAO,cAAc,MAAM,GAAG,CAAC,CAAC,CAAC;AACvD,wBAAY,UAAU,OAAO,cAAc,MAAM,CAAC,IAAI,CAAC,CAAC;AACxD,6BAAiB,IAAI,cAAc,SAAS;AAAA,UAChD;AAAA,QACJ;AAKA,YAAI,wBAAwB,CAAC;AAC7B,YAAI,2BAA2B,CAAC;AAChC,YAAI,mBAAmB,OAAO,QAAQ,WAAW,EAAE,OAAO,QAAQ,EAAE;AACpE,iBAAS,CAAE,GAAG,UAAW,KAAK,kBAAkB;AAG5C,cAAI,eAAe,MAAM;AACrB,qCAAyB,KAAK,GAAG;AACjC,iBAAK,CAAE,GAAG,UAAW,KAAK,kBAAkB;AACxC,uCAAyB,KAAK,GAAG;AAAA,YACrC;AAAA,UAIJ,OAAO;AACH,gBAAI,eAAe,KAAK,gBAAgB,UAAU;AAClD,gBAAI;AACJ,gBAAI,iBAAiB,QAAW;AAC5B,wBAAU;AAAA,YACd,OAAO;AACH,oCAAsB,CAAC,IAAI;AAC3B,wBAAU;AAAA,YACd;AACA,qCAAyB,KAAK,OAAO;AAAA,UACzC;AAAA,QACJ;AAGA,YAAI,sBAAsB,yBAAyB,KAAK,EAAE;AAG1D,YAAI,eAAe,oBAAI,IAAI;AAC3B,YAAI,2BAA2B,oBAAI,IAAI;AACvC,YAAI;AAEJ,YAAI,cAAc,CAAC,QAAQ,kBAAkB,gBAAgB,WAAc;AACvE,uBAAa,IAAI,MAAM;AACvB,cAAI,kBAAkB,KAAK,YAAY,QAAQ,gBAAgB;AAK/D,cAAI,oBAAoB,OAAO,SAAS;AACpC,qCAAyB,IAAI,MAAM;AACnC,qBAAS,mBAAmB,iBAAiB,IAAI,MAAM,KAAK,CAAC,GAAG;AAC5D,kBAAI,yBAAyB,IAAI,eAAe,GAAG;AAC/C,oBAAI,MAAM;AACV,oBAAI,cAAc,iBAAiB,eAAe;AAClD,sBAAM,IAAI,cAAc,QAAQ,IAAI,KAAK,WAAW,CAAC;AAAA,cACzD;AAAA,YACJ;AAAA,UACJ;AAIA,cAAI,oBAAoB,UAAU;AAC9B,mBAAO,MAAM,WAAW,iBAAiB,aAAa;AAAA,UAC1D;AAAA,QACJ;AAGA,YAAI,mBAAmB,CAAAM,iBAAe;AAGlC,cAAI,eAAe,sBAAsBA,YAAW;AACpD,cAAI,CAAE,QAAQ,eAAe,YAAa,IAAI;AAI9C,cAAI,gBAAgB,CAAC;AACrB,cAAI;AACJ,qBAAS;AAGL,gBAAI,WAAW,QAAW;AACtB,qBAAO,KAAK,YAAYA,YAAW,CAAC;AACpC,qBAAOA,eAAc;AAAA,YACzB;AAIA,gBAAI,iBAAiB,QAAW;AAC5B,kBAAI,YAAY,KAAK,gBAAgB,QAAQ,GAAG;AAKhD,kBAAI,QAAQ,KAAK;AACjB,kBAAI,cAAc,KAAK,CAAC,MAAM,SAAS,cAAc,CAAC,CAAC,GAAG;AACtD,8BAAc,KAAK,CAAE,QAAQ,CAAC,GAAG,aAAc,CAAC;AAChD,oBAAI,OAAO,cAAc,CAAC;AAC1B,gCAAgB,OAAO,aAAa,CAAC;AACrC,oBAAI,mBAAmB,aAAa,MAAM,CAAC,KAAK;AAChD,oBAAI,gBAAgB,KAAK;AACzB,oBAAI,QAAQ,eAAe,aAAa,GAAG;AACvC,2BAAS,cAAc,aAAa;AACpC,iCAAe;AAAA,gBACnB,OAAO;AACH,sBAAI,MAAM;AACV,wBAAM,IAAI,cAAc,QAAQ,IAAI,KAAK,YAAY,CAAC;AAAA,gBAC1D;AAAA,cAIJ,WAAW,cAAc,GAAG;AACxB,uBAAOA,eAAc;AACrB,oBAAI,OAAO,CAAE,YAAa;AAC1B,8BAAc,KAAK,CAAE,QAAQ,MAAM,aAAc,CAAC;AAClD;AAAA,cAIJ,OAAO;AACH,oBAAI,MAAM;AACV,sBAAM,IAAI,cAAc,QAAQ,IAAI,KAAK,YAAY,CAAC;AAAA,cAC1D;AAAA,YAKJ,OAAO;AACH,kBAAI,QAAQA,eAAc;AAC1B,kBAAI,oBAAoB,oBAAoB,MAAM,KAAK;AACvD,kBAAI,YAAY,KAAK,gBAAgB,QAAQ,iBAAiB;AAC9D,qBAAO,QAAQ;AACf,kBAAI,OAAO,YAAY,MAAM,OAAO,IAAI;AACxC,4BAAc,KAAK,CAAE,QAAQ,MAAM,aAAc,CAAC;AAClD;AAAA,YACJ;AAAA,UACJ;AAIA,iBAAO,cAAc,MAAM;AAC3B,mBAAS,CAAEH,SAAQ,MAAMI,cAAc,KAAK,eAAe;AACvD,wBAAYJ,SAAQ,MAAMI,cAAa;AAAA,UAC3C;AACA,iBAAO;AAAA,QACX;AAIA,YAAI,cAAc,KAAK,wBAAwB;AAG/C,YAAI,sBAAsB,CAAAD,iBAAe;AAErC,cAAI,mBAAmB,oBAAoB,MAAMA,YAAW;AAC5D,cAAI,aAAa,KAAK,yBAAyB,aAAa,gBAAgB;AAI5E,mBAAS,IAAI,GAAG,IAAI,YAAY,UAAU,IAAI,WAAW,QAAQ,KAAK;AAClE,gBAAI,SAAS,YAAY,CAAC;AAC1B,gBAAI,YAAY,WAAW,CAAC;AAC5B,gBAAI,OAAO,YAAY,MAAMA,cAAaA,eAAc,SAAS;AACjE,YAAAA,gBAAe;AACf,wBAAY,QAAQ,IAAI;AAAA,UAC5B;AAIA,wBAAc,YAAY,MAAM,WAAW,MAAM;AACjD,iBAAOA;AAAA,QACX;AAIA,iBAAS,CAAC;AACV,YAAI,cAAc;AAClB,YAAI,0BAA0B,KAAK,IAAI,IAAI,GAAG,OAAO,KAAK,qBAAqB,EAAE,IAAI,MAAM,CAAC;AAC5F,eAAO,eAAe,yBAAyB;AAG3C,cAAI,2BAA2B,KAAK;AAAA,YAEhC,GAAG,OAAO,KAAK,qBAAqB,EAAE,IAAI,MAAM,EAAE,OAAO,WAAS,SAAS,WAAW;AAAA,UAC1F;AACA,cAAI,gBAAgB,0BAA0B;AAC1C,gBAAI,wBAAwB,oBAAoB,WAAW;AAI3D,gBAAI,wBAAwB,aAAa;AACrC,4BAAc;AACd;AAAA,YACJ,OAAO;AACH,4BAAc;AAAA,YAClB;AAAA,UACJ;AAIA,cAAI,EAAE,eAAe,wBAAwB;AACzC,gBAAI,UAAU,YAAY,MAAM,aAAa,wBAAwB;AACrE,qBAAS,OAAO,OAAO,OAAO;AAC9B,0BAAc;AAAA,UAClB;AAGA,wBAAc,iBAAiB,WAAW;AAAA,QAC9C;AAGA,YAAI,aAAa,oBAAoB,WAAW;AAGhD,iBAAS,OAAO,OAAO,YAAY,MAAM,UAAU,CAAC;AAIpD,YAAI,mBAAmB,CAAC;AACxB,iBAAS,UAAU,KAAK,UAAU;AAC9B,cAAI,CAAC,aAAa,IAAI,MAAM,GAAG;AAC3B,gBAAI,OAAO,UAAU;AACjB,+BAAiB,KAAK,iBAAiB,MAAM,CAAC;AAAA,YAClD,OAAO;AAKH,kBAAI,OAAO,YAAY,UACnB,OAAO,OAAO,YAAY,YAC1B,QAAQ,WAAW,OAAO,IAAI,KAC9B,OAAO,YAAY,QAAQ,WAAW,OAAO,IAAI,GAAG;AACpD;AAAA,kBAAQ;AAAA,kBAAW,OAAO;AAAA,kBAClB,KAAK,WAAW,QAAQ,OAAO,OAAO;AAAA,gBAAC;AAAA,cACnD;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,iBAAiB,QAAQ;AACzB,eAAK,MAAM;AAAA,YAAI;AAAA,YACJ,iBAAiB,KAAK,IAAI;AAAA,UAAC,CAAC;AAAA,QAC3C;AAGA,iBAAS,SAAS,KAAK,4BAA4B;AAC/C,cAAI,MAAM,UAAU;AAChB,gBAAI,kBAAkB;AACtB,qBAAS,UAAU,MAAM,gBAAgB;AACrC,kBAAI,yBAAyB,IAAI,MAAM,GAAG;AACtC,kCAAkB;AAClB;AAAA,cACJ;AAAA,YACJ;AAGA,gBAAI,iBAAiB;AACjB,kBAAI,QAAQ,MAAM,eACb,OAAO,YAAU,OAAO,SAAS,QAAQ,EACzC,IAAI,YAAU,iBAAiB,MAAM,CAAC;AAC3C,kBAAI,MAAM;AACV,mBAAK,MAAM,IAAI,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,YACxC;AAAA,UACJ;AAAA,QACJ;AAGA,eAAO,CAAE,WAAW,MAAO;AAAA,MAC/B;AAAA,MAEA,sBAAsB,aAAa;AAE/B,YAAI,kBAAkB,CAAC;AACvB,iBAAS,cAAc,aAAa;AAGhC,cAAI,CAAC,cAAc,CAAC,KAAK,sBAAsB,SAAS,WAAW,CAAC,CAAC,GAAG;AACpE,4BAAgB,KAAK,UAAU;AAAA,UAGnC,OAAO;AACH,gBAAI;AACA,kBAAI,YAAYZ,IAAG,aAAa,WAAW,MAAM,CAAC,GAAG,MAAM;AAC3D,kBAAIc,eAAc,CAAC;AACnB,uBAAS,YAAY,WAAW,SAAS,GAAG;AACxC,yBAAS,OAAO,KAAK,yBAAyB,QAAQ,GAAG;AACrD,kBAAAA,aAAY,KAAK,GAAG;AAAA,gBACxB;AAAA,cACJ;AACA,cAAAA,eAAc,KAAK,sBAAsBA,YAAW;AACpD,gCAAkB,gBAAgB,OAAOA,YAAW;AAAA,YACxD,SAAS,KAAK;AACV,mBAAK,MAAM,IAAI,OAAO;AAAA,YAC1B;AAAA,UACJ;AAAA,QACJ;AAGA,eAAO;AAAA,MACX;AAAA,MAEA,yBAAyB,UAAU;AAC/B,eAAO,CAAC,QAAQ;AAAA,MACpB;AAAA,MAEA,gBAAgB,QAAQ,qBAAqB;AAEzC,YAAI,gBAAgB,KAAK,mBAAmB,MAAM;AAClD,YAAIC,SAAQ,oBAAoB,MAAM,IAAI,OAAO,MAAM,aAAa,CAAC;AAGrE,YAAIA,WAAU,MAAM;AAChB,cAAI,eAAe;AAAA,YACf,WAAW;AAAA,YACX,CAAC,QAAQ,GAAG;AAAA,YACZ,CAAC,WAAW,GAAG;AAAA,UACnB;AACA,cAAI,MAAM,aAAa,OAAO,KAAK;AACnC,cAAI,QAAQ,QAAW;AACnB,kBAAM,IAAI,OAAO,UAAU,IAAI,yBAAyB,yBAAyB,OAAO,KAAK;AAAA,UACjG;AACA,gBAAM,IAAI,cAAc,QAAQ,GAAG;AAAA,QACvC;AAGA,eAAOA,OAAM,CAAC,EAAE;AAAA,MACpB;AAAA,MAEA,yBAAyB,SAAS,qBAAqB;AAGnD,YAAI,SAAS,CAAC;AACd,iBAAS,KAAK,MAAM,QAAQ,QAAQ,GAAG,EAAE,GAAG;AACxC,cAAI,gBAAgB,QAAQ,MAAM,GAAG,CAAC;AACtC,cAAI,UAAU,cAAc,IAAI,YAAU,KAAK,mBAAmB,MAAM,CAAC,EAAE,KAAK,EAAE;AAClF,cAAIA,SAAQ,oBAAoB,MAAM,IAAI,OAAO,MAAM,OAAO,CAAC;AAC/D,cAAIA,WAAU,MAAM;AAChB,qBAAS,OAAO,OAAOA,OAAM,MAAM,CAAC,EAAE,IAAI,YAAU,OAAO,MAAM,CAAC;AAClE;AAAA,UACJ;AAAA,QACJ;AAGA,eAAO;AAAA,MACX;AAAA,MAEA,gBAAgB,YAAY;AAExB,YAAI,CAAC,YAAY;AACb,iBAAO;AAAA,QACX;AAGA,YAAI,CAAC,KAAK,aAAa,SAAS,WAAW,CAAC,CAAC,GAAG;AAC5C,iBAAO;AAAA,QACX;AAGA,YAAI,cAAc,KAAK,wBAAwB;AAC3C,cAAI,SAAS,KAAK,uBAAuB,UAAU;AACnD,iBAAO,CAAE,QAAQ,YAAY,MAAU;AAAA,QAC3C;AAGA,YAAI,WAAW,WAAW,GAAG;AACzB,iBAAO;AAAA,QACX;AAGA,YAAI,WAAW,SAAS,GAAG,GAAG;AAC1B,cAAI,CAAE,eAAe,YAAa,IAAI,cAAc,YAAY,KAAK,CAAC;AACtE,cAAI,iBAAiB,KAAK,wBAAwB;AAC9C,gBAAI,SAAS,KAAK,uBAAuB,aAAa;AACtD,mBAAO,CAAE,QAAQ,eAAe,YAAa;AAAA,UACjD;AAAA,QACJ;AAIA,YAAI,gBAAgB,KAAK,mBAAmB,UAAU;AAGtD,YAAI,cAAc,SAAS,GAAG;AAC1B,cAAI,UAAU,cAAc,IAAI,CAAC;AAAA,YAAY;AAAA,YAAE;AAAA;AAAA,UAAgC,MAAM,aAAa,EAAE,KAAK,IAAI;AAC7G,cAAI,OAAO,EAAC,QAAQ,YAAY,SAAS,QAAO;AAChD,cAAI,MAAM;AACV,eAAK,MAAM,IAAI,KAAK,IAAI,CAAC;AAAA,QAI7B,WAAW,cAAc,WAAW,GAAG;AACnC,cAAI,CAAE,YAAa,IAAI;AACvB,iBAAO;AAAA,QACX;AAKA,YAAI,KAAK,yBAAyB,KAAK,UAAU,GAAG;AAChD,cAAI,CAAC,KAAK,+BAA+B,QAAQ;AAC7C,mBAAO;AAAA,UACX;AAAA,QACJ;AAGA,YAAI,WAAW,SAAS,GAAG,GAAG;AAC1B,iBAAO;AAAA,QACX;AAIA,eAAO,CAAE,QAAW,YAAY,MAAU;AAAA,MAC9C;AAAA,MAEA,mBAAmB,eAAe;AAC9B,YAAI,SAAS,CAAC;AAId,YAAI,QAAQ,KAAK;AACjB,YAAI,MAAM,SAAS,cAAc,CAAC,CAAC,KAAK,MAAM,SAAS,cAAc,CAAC,CAAC,GAAG;AACtE,cAAI,KAAK,cAAc;AACnB,gBAAI,eAAe;AACnB,gBAAI,cAAc,SAAS,GAAG,GAAG;AAC7B,eAAE,eAAe,YAAa,IAAI,cAAc,eAAe,KAAK,CAAC;AAAA,YACzE,OAAO;AACH,8BAAgB;AAChB,6BAAe;AAAA,YACnB;AACA,qBAASF,kBAAiB,OAAO,KAAK,KAAK,sBAAsB,GAAG;AAChE,kBAAIA,eAAc,WAAW,aAAa,GAAG;AACzC,oBAAI,SAAS,KAAK,uBAAuBA,cAAa;AACtD,oBAAI,MAAM,CAAE,QAAQA,gBAAe,YAAa;AAChD,uBAAO,KAAK,GAAG;AAAA,cACnB;AAAA,YACJ;AAAA,UACJ;AAAA,QAKJ,WAAW,MAAM,SAAS,cAAc,CAAC,CAAC,KAAK,CAAC,MAAM,SAAS,cAAc,CAAC,CAAC,GAAG;AAC9E,cAAI,gBAAgB;AACpB,cAAI,eAAe;AACnB,cAAI,sBAAsB,cAAc,MAAM,GAAG,CAAC;AAClD,cAAI,qBAAqB,cAAc,MAAM,CAAC;AAE9C,mBAASA,kBAAiB,OAAO,KAAK,KAAK,sBAAsB,GAAG;AAChE,gBAAIA,mBAAkB,qBAAqB;AACvC,kBAAI,SAAS,KAAK,uBAAuBA,cAAa;AACtD,kBAAI,MAAM,CAAE,QAAQA,gBAAe,kBAAmB;AACtD,qBAAO,KAAK,GAAG;AAAA,YACnB,WAAWA,eAAc,WAAW,aAAa,GAAG;AAChD,kBAAI,SAAS,KAAK,uBAAuBA,cAAa;AACtD,kBAAI,MAAM,CAAE,QAAQA,gBAAe,YAAa;AAChD,qBAAO,KAAK,GAAG;AAAA,YACnB;AAAA,UACJ;AAAA,QAGJ,OAAO;AACH,eAAK,MAAM,IAAI,gCAAgC,aAAa,CAAC;AAAA,QACjE;AAGA,eAAO;AAAA,MACX;AAAA,MAEA,mBAAmB,QAAQ;AAGvB,YAAI,QAAQ,OAAO;AACnB,YAAI;AAGJ,YAAI,UAAU,QAAW;AACrB,0BAAgB;AAAA,QAGpB,WAAW,UAAU,UAAU;AAC3B,0BAAgB;AAAA,QAGpB,WAAW,UAAU,cAAc;AAC/B,0BAAgB;AAAA,QAGpB,WAAW,UAAU,aAAa;AAC9B,0BAAgB;AAAA,QAGpB,WAAW,UAAU,WAAW;AAC5B,0BAAgB;AAAA,QAGpB,WAAW,UAAU,QAAQ;AACzB,0BAAgB;AAAA,QAGpB,WAAW,UAAU,UAAU;AAC3B,0BAAgB;AAAA,QAGpB,OAAO;AACH,0BAAgB,IAAI,YAAY,IAAI,OAAO,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA,QAC1E;AAGA,YAAI,OAAO,eAAe,QAAQ;AAC9B,0BAAgB,cAAc,QAAQ,QAAQ,EAAE;AAChD,0BAAgB,cAAc,QAAQ,MAAM,EAAE;AAAA,QAClD;AAGA,eAAO;AAAA,MACX;AAAA;AAAA;AAAA;AAAA,MAMA,sBAAsB,OAAO,QAAW,YAAY,QAAW;AAC3D,YAAI;AACJ,SAAE,MAAM,IAAK,IAAI,KAAK,4BAA4B,MAAM,SAAS;AACjE,YAAI,KAAK,QAAQ;AACb,cAAI,MAAM;AACV,eAAK,MAAM,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,QACvC;AACA,eAAO;AAAA,MACX;AAAA,MAEA,4BAA4B,OAAO,QAAW,YAAY,QAAW;AAajE,YAAI;AACJ,YAAI,cAAc,KAAK,wBAAwB;AAC/C,YAAI,IAAI,YAAY,OAAO,YAAU,CAAE,QAAQ,SAAU,EAAE,SAAS,OAAO,KAAK,CAAC;AACjF,YAAI,EAAE,QAAQ;AACV,gBAAM,IAAI,UAAU,IAAI,uDACkB,EAAE,CAAC,EAAE,KAAK,CAAC;AAAA,QACzD;AAEA,iBAAS,SAAS,KAAK,4BAA4B;AAC/C,mBAAS,UAAU,MAAM,gBAAgB;AACrC,gBAAI,YAAY,SAAS,MAAM,GAAG;AAC9B,oBAAM,IAAI,UAAU,6DACyB;AAAA,YACjD;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI;AACJ,YAAI;AACA,uBAAa,KAAK;AAClB,cAAI;AACJ,cAAI;AACA,gBAAI,KAAK,UAAU,QAAW;AAE1B,mBAAK,QAAQ,KAAK,aAAa,EAAE,MAAM,CAAC;AAAA,YAC5C;AACA,qBAAS,UAAU,aAAa;AAE5B,qBAAO,aAAa,OAAO;AAE3B,qBAAO,QAAQ;AACf,qBAAO,eAAe,OAAO;AAC7B,qBAAO,UAAU;AAAA,YACrB;AACA,aAAE,WAAW,cAAe,IAAI,KAAK;AAAA,cAAiB;AAAA,cACA;AAAA,YAAS;AAC/D,qBAAS,UAAU,aAAa;AAE5B,kBAAI,OAAO,QAAQ,WAAW,OAAO,IAAI;AACzC,kBAAI,MAAM,QAAQ,IAAI,KAAK,KAAK,WAAW,GAAG;AAE1C,wBAAQ,KAAK,IAAI,0BAA0B,OAAO,MAAM,SAAS,CAAC;AAClE,wBAAQ,WAAW,OAAO,IAAI;AAAA,cAClC;AAAA,YACJ;AAAA,UACJ,UAAE;AAEE,qBAAS,UAAU,aAAa;AAC5B,qBAAO,QAAQ,OAAO;AACtB,qBAAO,UAAU,OAAO;AAAA,YAC5B;AAAA,UACJ;AACA,cAAI,YAAY,KAAK,sBAAsB;AAC3C,cAAI;AAGA,qBAAS,UAAU,WAAW;AAC1B,qBAAO,gBAAgB,OAAO;AAC9B,qBAAO,WAAW;AAAA,YACtB;AACA,qBAAS,SAAS,KAAK,4BAA4B;AAC/C,oBAAM,gBAAgB,MAAM;AAC5B,oBAAM,WAAW;AAAA,YACrB;AACA,aAAE,WAAW,MAAO,IAAI,KAAK;AAAA,cAAiB;AAAA,cACA;AAAA,YAAS;AAAA,UAC3D,UAAE;AAEE,qBAAS,UAAU,WAAW;AAC1B,qBAAO,WAAW,OAAO;AAAA,YAC7B;AACA,qBAAS,SAAS,KAAK,4BAA4B;AAC/C,oBAAM,WAAW,MAAM;AAAA,YAC3B;AAAA,UACJ;AAAA,QACJ,UAAE;AACE,eAAK,QAAQ;AAAA,QACjB;AACA,eAAO,CAAE,WAAW,MAAO;AAAA,MAC/B;AAAA;AAAA;AAAA;AAAA,MAKA,YAAY,QAAQ,aAAa;AAE7B,YAAI,CAAC,CAAC,QAAQ,SAAS,EAAE,SAAS,OAAO,KAAK,GAAG;AAC7C,cAAI;AACA,0BAAc,aAAa,IAAI;AAAA,UACnC,SAAS,KAAK;AAAA,UAAC;AAAA,QACnB;AAEA,YAAI;AAEJ,YAAI,CAAC,YAAY,UAAU,OAAO,UAAU,UAAU;AAClD,cAAI,OAAO,eAAe,QAAQ;AAC9B,oBAAQ,OAAO;AAAA,UACnB,OAAO;AACH,oBAAQ,OAAO;AAAA,UACnB;AACA,cAAI,OAAO,UAAU,UAAU;AAC3B,oBAAQ,KAAK,WAAW,QAAQ,KAAK;AACrC,iBAAK,aAAa,QAAQ,KAAK;AAAA,UACnC;AAAA,QAIJ,WAAW,CAAC,YAAY,UAAU,OAAO,UAAU,gBAC7C,CAAC,OAAO,eAAe,QAAQ;AACjC,cAAI,OAAO,YAAY,QAAW;AAC9B,oBAAQ,OAAO;AAAA,UACnB,OAAO;AACH,oBAAQ;AAAA,UACZ;AACA,eAAK,aAAa,QAAQ,KAAK;AAAA,QAGnC,WAAW,YAAY,WAAW,KAAK,CAAC,QAAW,QAAQ,EAAE,SAAS,OAAO,KAAK,GAAG;AACjF,cAAI,aAAa,YAAY,CAAC;AAC9B,kBAAQ,KAAK,WAAW,QAAQ,UAAU;AAC1C,eAAK,aAAa,QAAQ,KAAK;AAAA,QAGnC,WAAW,OAAO,UAAU,WAAW;AACnC,kBAAQ,YAAY,IAAI,OAAK,KAAK,WAAW,QAAQ,CAAC,CAAC;AAAA,QAG3D,WAAW,OAAO,UAAU,QAAQ;AAChC,kBAAQ,YAAY,IAAI,OAAK,KAAK,WAAW,QAAQ,CAAC,CAAC;AACvD,eAAK,aAAa,QAAQ,MAAM,CAAC,CAAC;AAAA,QAGtC,WAAW,OAAO,UAAU,UAAU;AAClC,kBAAQ;AAAA,QAGZ,OAAO;AACH,kBAAQ,YAAY,IAAI,OAAK,KAAK,WAAW,QAAQ,CAAC,CAAC;AACvD,mBAAS,KAAK,OAAO;AACjB,iBAAK,aAAa,QAAQ,CAAC;AAAA,UAC/B;AAAA,QACJ;AAGA,eAAO;AAAA,MACX;AAAA,MAEA,WAAW,QAAQ,YAAY;AAC3B,YAAI,YAAY,KAAK,cAAc,QAAQ,OAAO,MAAM,OAAO,IAAI;AACnE,YAAI,OAAO,cAAc,YAAY;AACjC,cAAI,MAAM;AACV,gBAAM,IAAI,cAAc,QAAQ,IAAI,KAAK,SAAS,CAAC;AAAA,QACvD;AAGA,YAAI;AACJ,YAAI;AACA,cAAI;AACA,qBAAS,UAAU,UAAU;AAAA,UACjC,SAAS,KAAK;AAIV,gBAAI,eAAe,aACf,uDAAuD,KAAK,IAAI,OAAO,GAAG;AAE1E,uBAAS,IAAI,UAAU,UAAU;AAAA,YACrC,OAAO;AACH,oBAAM;AAAA,YACV;AAAA,UACJ;AAAA,QAEJ,SAAS,KAAK;AAEV,cAAI,eAAe,mBAAmB;AAElC,gBAAI,MAAM,IAAI;AACd,kBAAM,IAAI,cAAc,QAAQ,GAAG;AAAA,UAGvC,WAAW,eAAe,WAAW;AACjC,gBAAI,OAAO,QAAQ,OAAO,MAAM,QAAQ,KAAK,OAAO,IAAI,CAAC;AACzD,gBAAI,OAAO,EAAC,MAAM,MAAM,OAAO,WAAU;AACzC,gBAAI,MAAM;AACV,kBAAM,IAAI,cAAc,QAAQ,IAAI,KAAK,IAAI,CAAC;AAAA,UAClD,OAAO;AACH,kBAAM;AAAA,UACV;AAAA,QACJ;AAGA,eAAO;AAAA,MACX;AAAA,MAEA,aAAa,QAAQ,OAAO;AAExB,YAAI,OAAO,YAAY,UAAa,CAAC,kBAAkB,OAAO,OAAO,EAAE,SAAS,KAAK,GAAG;AACpF,cAAI,OAAO;AAAA,YAAC;AAAA,YACA,SAAS,kBAAkB,OAAO,OAAO,EAAE,IAAI,IAAI,EAAE,KAAK,IAAI;AAAA,UAAC;AAC3E,cAAI,MAAM;AACV,gBAAM,IAAI,cAAc,QAAQ,IAAI,KAAK,IAAI,CAAC;AAAA,QAClD;AAAA,MACJ;AAAA;AAAA;AAAA;AAAA,MAKA,eAAe;AACX,YAAI,YAAY,KAAK,eAAe;AACpC,kBAAU;AAAA,UAAU,KAAK;AAAA,UAAO,KAAK;AAAA,UACjB,KAAK;AAAA,QAA0B;AACnD,eAAO,UAAU,YAAY;AAAA,MACjC;AAAA,MAEA,cAAc;AACV,YAAI,YAAY,KAAK,eAAe;AAGpC,kBAAU;AAAA,UAAU,KAAK;AAAA,UAAO,KAAK;AAAA,UACjB,KAAK;AAAA,QAA0B;AAGnD,kBAAU,SAAS,KAAK,WAAW;AAGnC,iBAAS,gBAAgB,KAAK,gBAAgB;AAC1C,oBAAU,cAAc,aAAa,KAAK;AAC1C,oBAAU,SAAS,aAAa,WAAW;AAC3C,oBAAU,cAAc,aAAa,cAAc;AACnD,oBAAU,YAAY;AAAA,QAC1B;AAGA,kBAAU,SAAS,KAAK,MAAM;AAG9B,eAAO,UAAU,YAAY;AAAA,MACjC;AAAA,MAEA,iBAAiB;AAEb,eAAO,IAAI,KAAK,gBAAgB,EAAE,MAAM,KAAK,KAAK,CAAC;AAAA,MACvD;AAAA;AAAA;AAAA;AAAA,MAKA,YAAY,OAAO,QAAW;AAC1B,YAAI,SAAS;AAAW,iBAAO,QAAQ;AACvC,aAAK,eAAe,KAAK,aAAa,GAAG,IAAI;AAAA,MACjD;AAAA,MAEA,WAAW,OAAO,QAAW;AACzB,YAAI,SAAS;AAAW,iBAAO,QAAQ;AACvC,aAAK,eAAe,KAAK,YAAY,GAAG,IAAI;AAAA,MAChD;AAAA,MAEA,eAAe,SAAS,OAAO,QAAW;AACtC,YAAI,SAAS;AACT,cAAI,SAAS;AAAW,mBAAO,QAAQ;AACvC,eAAK,MAAM,OAAO;AAAA,QACtB;AAAA,MACJ;AAAA;AAAA;AAAA;AAAA,MAKA,KAAK,SAAS,GAAG,UAAU,QAAW;AAClC,YAAI,SAAS;AACT,eAAK,eAAe,SAAS,QAAQ,MAAM;AAAA,QAC/C;AACA,gBAAQ,KAAK,MAAM;AAAA,MACvB;AAAA,MAEA,MAAM,SAAS;AAYX,YAAI,KAAK,UAAU;AAAM,gBAAM,IAAI,MAAM,OAAO;AAEhD,aAAK,YAAY,QAAQ,MAAM;AAC/B,YAAI,OAAO,EAAC,MAAM,KAAK,MAAM,QAAgB;AAC7C,aAAK,KAAK,GAAG,IAAI,kCAAkC,IAAI,CAAC;AAAA,MAC5D;AAAA,IACJ,CAAC,CAAC;AAGF,WAAO,UAAU;AAAA,MACb,gBAAAH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAGA,WAAO,eAAe,OAAO,SAAS,SAAS;AAAA,MAC3C,MAAM;AACF,YAAI,SAAS,CAAC;AACd,eAAO,QAAQ,EAAE,aAAa,UAAU,QAAQ,WAAW,UAAU,aAAa,CAAC,EAAE,QAAQ,CAAC,CAAE,GAAG,CAAE,MAAM;AACvG,iBAAO,eAAe,QAAQ,GAAG;AAAA,YAC7B,MAAM;AACF,wBAAU,GAAG,IAAI,gDAAgD,GAAG,CAAC,CAAC;AACtE,qBAAO;AAAA,YACX;AAAA,UACJ,CAAC;AAAA,QACL,CAAC;AACD,eAAO,QAAQ,EAAE,wBAAwB,CAAC,EAAE,QAAQ,CAAC,CAAE,GAAG,CAAE,MAAM;AAC9D,iBAAO,eAAe,QAAQ,GAAG;AAAA,YAC7B,MAAM;AACF,wBAAU,GAAG,IAAI,2EAA2E,CAAC,CAAC;AAC9F,qBAAO;AAAA,YACX;AAAA,UACJ,CAAC;AAAA,QACL,CAAC;AACD,eAAO;AAAA,MACX;AAAA,MACA,YAAY;AAAA,IAChB,CAAC;AAAA;AAAA;;;ACznHD;AAAA;AAWA,QAAMM,MAAK,UAAQ,IAAI;AACvB,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAMC,UAAS,UAAQ,QAAQ;AAC/B,QAAM,KAAK,EAAE,IAAIH,IAAG,WAAW,IAAIC,IAAG,UAAU;AAKhD,QAEE,eAAe;AAFjB,QAIE,mBAAmB;AAJrB,QAME,gBAAgB;AANlB,QAQE,gBAAgB,GAAG,WAAW,GAAG,GAAG,YAAY,GAAG,UAAU,GAAG,GAAG,WAAW,GAAG,UAAU,GAAG,GAAG;AARnG,QAWE,WAAWA,IAAG,SAAS,MAAM;AAX/B,QAYE,QAAQ,GAAG,SAAS,GAAG,GAAG,MAAM;AAZlC,QAaE,SAAS,GAAG,UAAU,GAAG,GAAG,MAAM;AAbpC,QAeE,WAAW;AAfb,QAgBE,YAAY;AAhBd,QAkBE,OAAO;AAlBT,QAqBE,iBAAiB,CAAC;AArBpB,QAwBE,gBAAgBD,IAAG,UAAU,KAAKA,GAAE;AAEtC,QACE,mBAAmB;AASrB,aAAS,OAAO,SAAS,UAAU;AACjC,aAAOA,IAAG,GAAG,SAAS,EAAE,WAAW,KAAK,GAAG,QAAQ;AAAA,IACrD;AAQA,aAAS,eAAe,SAAS;AAC/B,aAAOA,IAAG,OAAO,SAAS,EAAE,WAAW,KAAK,CAAC;AAAA,IAC/C;AAQA,aAAS,QAAQ,SAAS,UAAU;AAClC,YACE,OAAO,gBAAgB,SAAS,QAAQ,GACxC,OAAO,KAAK,CAAC,GACb,KAAK,KAAK,CAAC;AAEb,UAAI;AACF,kCAA0B,IAAI;AAAA,MAChC,SAAS,KAAK;AACZ,eAAO,GAAG,GAAG;AAAA,MACf;AAEA,UAAI,QAAQ,KAAK;AACjB,OAAC,SAAS,iBAAiB;AACzB,YAAI;AACF,gBAAM,OAAO,iBAAiB,IAAI;AAGlC,UAAAA,IAAG,KAAK,MAAM,SAAU,KAAK;AAE3B,gBAAI,CAAC,KAAK;AAER,kBAAI,UAAU;AAAG,uBAAO,eAAe;AAEvC,qBAAO,GAAG,IAAI,MAAM,4DAA4D,IAAI,CAAC;AAAA,YACvF;AAEA,eAAG,MAAM,IAAI;AAAA,UACf,CAAC;AAAA,QACH,SAAS,KAAK;AACZ,aAAG,GAAG;AAAA,QACR;AAAA,MACF,GAAE;AAAA,IACJ;AASA,aAAS,YAAY,SAAS;AAC5B,YACE,OAAO,gBAAgB,OAAO,GAC9B,OAAO,KAAK,CAAC;AAEf,gCAA0B,IAAI;AAE9B,UAAI,QAAQ,KAAK;AACjB,SAAG;AACD,cAAM,OAAO,iBAAiB,IAAI;AAClC,YAAI;AACF,UAAAA,IAAG,SAAS,IAAI;AAAA,QAClB,SAAS,GAAG;AACV,iBAAO;AAAA,QACT;AAAA,MACF,SAAS,UAAU;AAEnB,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AAQA,aAAS,KAAK,SAAS,UAAU;AAC/B,YACE,OAAO,gBAAgB,SAAS,QAAQ,GACxC,OAAO,KAAK,CAAC,GACb,KAAK,KAAK,CAAC;AAGb,cAAQ,MAAM,SAAS,gBAAgB,KAAK,MAAM;AAEhD,YAAI;AAAK,iBAAO,GAAG,GAAG;AAGtB,QAAAA,IAAG,KAAK,MAAM,cAAc,KAAK,QAAQ,WAAW,SAAS,aAAaI,MAAK,IAAI;AAEjF,cAAIA;AAAK,mBAAO,GAAGA,IAAG;AAEtB,cAAI,KAAK,mBAAmB;AAC1B,mBAAOJ,IAAG,MAAM,IAAI,SAAS,iBAAiB,aAAa;AAEzD,qBAAO,GAAG,aAAa,MAAM,QAAW,8BAA8B,MAAM,IAAI,MAAM,KAAK,CAAC;AAAA,YAC9F,CAAC;AAAA,UACH,OAAO;AAGL,kBAAM,4BAA4B,KAAK,qBAAqB,KAAK;AACjE,eAAG,MAAM,MAAM,IAAI,8BAA8B,MAAM,4BAA4B,KAAK,IAAI,MAAM,KAAK,CAAC;AAAA,UAC1G;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AASA,aAAS,SAAS,SAAS;AACzB,YACE,OAAO,gBAAgB,OAAO,GAC9B,OAAO,KAAK,CAAC;AAEf,YAAM,4BAA4B,KAAK,qBAAqB,KAAK;AACjE,YAAM,OAAO,YAAY,IAAI;AAC7B,UAAI,KAAKA,IAAG,SAAS,MAAM,cAAc,KAAK,QAAQ,SAAS;AAE/D,UAAI,KAAK,mBAAmB;AAC1B,QAAAA,IAAG,UAAU,EAAE;AACf,aAAK;AAAA,MACP;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA,gBAAgB,8BAA8B,MAAM,4BAA4B,KAAK,IAAI,MAAM,IAAI;AAAA,MACrG;AAAA,IACF;AAQA,aAAS,IAAI,SAAS,UAAU;AAC9B,YACE,OAAO,gBAAgB,SAAS,QAAQ,GACxC,OAAO,KAAK,CAAC,GACb,KAAK,KAAK,CAAC;AAGb,cAAQ,MAAM,SAAS,gBAAgB,KAAK,MAAM;AAEhD,YAAI;AAAK,iBAAO,GAAG,GAAG;AAGtB,QAAAA,IAAG,MAAM,MAAM,KAAK,QAAQ,UAAU,SAAS,YAAYI,MAAK;AAE9D,cAAIA;AAAK,mBAAO,GAAGA,IAAG;AAEtB,aAAG,MAAM,MAAM,6BAA6B,MAAM,MAAM,KAAK,CAAC;AAAA,QAChE,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AASA,aAAS,QAAQ,SAAS;AACxB,YACE,OAAO,gBAAgB,OAAO,GAC9B,OAAO,KAAK,CAAC;AAEf,YAAM,OAAO,YAAY,IAAI;AAC7B,MAAAJ,IAAG,UAAU,MAAM,KAAK,QAAQ,QAAQ;AAExC,aAAO;AAAA,QACL;AAAA,QACA,gBAAgB,6BAA6B,MAAM,MAAM,IAAI;AAAA,MAC/D;AAAA,IACF;AASA,aAAS,iBAAiB,QAAQ,MAAM;AACtC,YAAM,WAAW,SAAU,KAAK;AAC9B,YAAI,OAAO,CAAC,UAAU,GAAG,GAAG;AAE1B,iBAAO,KAAK,GAAG;AAAA,QACjB;AACA,aAAK;AAAA,MACP;AAEA,UAAI,KAAK,OAAO,CAAC;AACf,QAAAA,IAAG,MAAM,OAAO,CAAC,GAAG,WAAY;AAC9B,UAAAA,IAAG,OAAO,OAAO,CAAC,GAAG,QAAQ;AAAA,QAC/B,CAAC;AAAA;AACE,QAAAA,IAAG,OAAO,OAAO,CAAC,GAAG,QAAQ;AAAA,IACpC;AAQA,aAAS,gBAAgB,QAAQ;AAC/B,UAAI,oBAAoB;AACxB,UAAI;AACF,YAAI,KAAK,OAAO,CAAC;AAAG,UAAAA,IAAG,UAAU,OAAO,CAAC,CAAC;AAAA,MAC5C,SAAS,GAAG;AAEV,YAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;AAAG,gBAAM;AAAA,MAC3C,UAAE;AACA,YAAI;AACF,UAAAA,IAAG,WAAW,OAAO,CAAC,CAAC;AAAA,QACzB,SACO,GAAG;AAER,cAAI,CAAC,UAAU,CAAC;AAAG,gCAAoB;AAAA,QACzC;AAAA,MACF;AACA,UAAI,sBAAsB,MAAM;AAC9B,cAAM;AAAA,MACR;AAAA,IACF;AAeA,aAAS,8BAA8B,MAAM,IAAI,MAAM,MAAM;AAC3D,YAAM,qBAAqB,uBAAuB,iBAAiB,CAAC,IAAI,IAAI,GAAG,IAAI;AACnF,YAAM,iBAAiB,uBAAuB,kBAAkB,CAAC,IAAI,IAAI,GAAG,MAAM,kBAAkB;AAEpG,UAAI,CAAC,KAAK;AAAM,uBAAe,QAAQ,kBAAkB;AAEzD,aAAO,OAAO,qBAAqB;AAAA,IACrC;AAcA,aAAS,6BAA6B,MAAM,MAAM,MAAM;AACtD,YAAM,iBAAiB,KAAK,gBAAgB,SAASA,IAAG,MAAM,KAAKA,GAAE;AACrE,YAAM,qBAAqB,KAAK,gBAAgB,iBAAiB;AACjE,YAAM,qBAAqB,uBAAuB,oBAAoB,MAAM,IAAI;AAChF,YAAM,iBAAiB,uBAAuB,gBAAgB,MAAM,MAAM,kBAAkB;AAC5F,UAAI,CAAC,KAAK;AAAM,uBAAe,QAAQ,kBAAkB;AAEzD,aAAO,OAAO,qBAAqB;AAAA,IACrC;AAeA,aAAS,uBAAuB,gBAAgB,eAAe,MAAM,qBAAqB;AACxF,UAAI,SAAS;AAGb,aAAO,SAAS,iBAAiB,MAAM;AAGrC,YAAI,CAAC,QAAQ;AAEX,gBAAM,WAAW,uBAAuB;AACxC,gBAAM,QAAQ,eAAe,QAAQ,QAAQ;AAE7C,cAAI,SAAS;AAAG,2BAAe,OAAO,OAAO,CAAC;AAE9C,mBAAS;AACT,cAAI,QAAQ,mBAAmB,iBAAiB,mBAAmB,gBAAgB;AACjF,mBAAO,eAAe,aAAa;AAAA,UACrC,OAAO;AACL,mBAAO,eAAe,eAAe,QAAQ,WAAW;AAAA,YAAC,CAAC;AAAA,UAC5D;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAOA,aAAS,oBAAoB;AAE3B,UAAI,CAAC;AAAkB;AAIvB,aAAO,eAAe,QAAQ;AAC5B,YAAI;AACF,yBAAe,CAAC,EAAE;AAAA,QACpB,SAAS,GAAG;AAAA,QAEZ;AAAA,MACF;AAAA,IACF;AAUA,aAAS,aAAa,SAAS;AAC7B,UACE,QAAQ,CAAC,GACT,MAAM;AAGR,UAAI;AACF,cAAMG,QAAO,YAAY,OAAO;AAAA,MAClC,SAAS,GAAG;AACV,cAAMA,QAAO,kBAAkB,OAAO;AAAA,MACxC;AAEA,eAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAChC,cAAM,KAAK,aAAa,IAAI,CAAC,IAAI,aAAa,MAAM,CAAC;AAAA,MACvD;AAEA,aAAO,MAAM,KAAK,EAAE;AAAA,IACtB;AASA,aAAS,SAAS,GAAG;AACnB,aAAO,MAAM,QAAQ,aAAa,CAAC,KAAK,CAAC,EAAE,KAAK;AAAA,IAClD;AASA,aAAS,aAAa,KAAK;AACzB,aAAO,OAAO,QAAQ;AAAA,IACxB;AAYA,aAAS,gBAAgB,SAAS,UAAU;AAE1C,UAAI,OAAO,YAAY,YAAY;AACjC,eAAO,CAAC,CAAC,GAAG,OAAO;AAAA,MACrB;AAGA,UAAI,aAAa,OAAO,GAAG;AACzB,eAAO,CAAC,CAAC,GAAG,QAAQ;AAAA,MACtB;AAGA,YAAM,gBAAgB,CAAC;AACvB,iBAAW,OAAO,OAAO,oBAAoB,OAAO,GAAG;AACrD,sBAAc,GAAG,IAAI,QAAQ,GAAG;AAAA,MAClC;AAEA,aAAO,CAAC,eAAe,QAAQ;AAAA,IACjC;AASA,aAAS,iBAAiB,MAAM;AAE9B,YAAM,SAAS,KAAK;AAGpB,UAAI,CAAC,aAAa,KAAK,IAAI;AACzB,eAAOD,MAAK,KAAK,QAAQ,KAAK,KAAK,KAAK,IAAI;AAG9C,UAAI,CAAC,aAAa,KAAK,QAAQ;AAC7B,eAAOA,MAAK,KAAK,QAAQ,KAAK,KAAK,KAAK,QAAQ,EAAE,QAAQ,kBAAkB,aAAa,CAAC,CAAC;AAG7F,YAAM,OAAO;AAAA,QACX,KAAK,SAAS,KAAK,SAAS;AAAA,QAC5B;AAAA,QACA,QAAQ;AAAA,QACR;AAAA,QACA,aAAa,EAAE;AAAA,QACf,KAAK,UAAU,MAAM,KAAK,UAAU;AAAA,MACtC,EAAE,KAAK,EAAE;AAET,aAAOA,MAAK,KAAK,QAAQ,KAAK,KAAK,IAAI;AAAA,IACzC;AASA,aAAS,0BAA0B,SAAS;AAE1C,cAAQ,SAAS,WAAW,OAAO;AAEnC,YAAM,SAAS,QAAQ;AAGvB,UAAI,CAAC,aAAa,QAAQ,IAAI;AAC5B,0BAAkB,QAAQ,MAAM,QAAQ,MAAM;AAEhD,UAAI,CAAC,aAAa,QAAQ,GAAG;AAC3B,0BAAkB,QAAQ,KAAK,OAAO,MAAM;AAE9C,UAAI,CAAC,aAAa,QAAQ,QAAQ,GAAG;AACnC,0BAAkB,QAAQ,UAAU,YAAY,MAAM;AACtD,YAAI,CAAC,QAAQ,SAAS,MAAM,gBAAgB;AAC1C,gBAAM,IAAI,MAAM,4BAA4B,QAAQ,QAAQ,IAAI;AAAA,MACpE;AAEA,UAAI,CAAC,aAAa,QAAQ,KAAK,KAAK,MAAM,QAAQ,KAAK,KAAK,QAAQ,QAAQ;AAC1E,cAAM,IAAI,MAAM,yBAAyB,QAAQ,KAAK,IAAI;AAG5D,cAAQ,QAAQ,aAAa,QAAQ,IAAI,IAAI,QAAQ,SAAS,gBAAgB;AAC9E,cAAQ,OAAO,CAAC,CAAC,QAAQ;AACzB,cAAQ,mBAAmB,CAAC,CAAC,QAAQ;AACrC,cAAQ,oBAAoB,CAAC,CAAC,QAAQ;AACtC,cAAQ,gBAAgB,CAAC,CAAC,QAAQ;AAGlC,cAAQ,MAAM,aAAa,QAAQ,GAAG,IAAI,KAAKA,MAAK,SAAS,QAAQ,aAAa,QAAQ,KAAK,MAAM,CAAC;AACtG,cAAQ,WAAW,aAAa,QAAQ,QAAQ,IAAI,SAAYA,MAAK,SAAS,QAAQ,aAAa,QAAQ,UAAU,MAAM,CAAC;AAE5H,cAAQ,WAAW,SAAS,QAAQ,QAAQ,IAAI,SAAYA,MAAK,SAAS,QAAQ,KAAK,QAAQ,QAAQ;AAGvG,cAAQ,OAAO,aAAa,QAAQ,IAAI,IAAI,SAAY,QAAQ;AAChE,cAAQ,SAAS,aAAa,QAAQ,MAAM,IAAI,KAAK,QAAQ;AAC7D,cAAQ,UAAU,aAAa,QAAQ,OAAO,IAAI,KAAK,QAAQ;AAAA,IACjE;AAaA,aAAS,aAAa,MAAM,QAAQ;AAClC,UAAI,KAAK,WAAW,MAAM,GAAG;AAC3B,eAAOA,MAAK,QAAQ,IAAI;AAAA,MAC1B,OAAO;AACL,eAAOA,MAAK,QAAQA,MAAK,KAAK,QAAQ,IAAI,CAAC;AAAA,MAC7C;AAAA,IACF;AAWA,aAAS,kBAAkB,MAAM,QAAQ,QAAQ;AAC/C,UAAI,WAAW,QAAQ;AAErB,YAAIA,MAAK,WAAW,IAAI;AACtB,gBAAM,IAAI,MAAM,GAAG,MAAM,qDAAqD,IAAI,IAAI;AAExF,YAAI,WAAWA,MAAK,SAAS,IAAI;AACjC,YAAI,aAAa,QAAQ,aAAa,OAAO,aAAa;AACxD,gBAAM,IAAI,MAAM,GAAG,MAAM,2CAA2C,IAAI,IAAI;AAAA,MAChF,OACK;AAEH,YAAIA,MAAK,WAAW,IAAI,KAAK,CAAC,KAAK,WAAW,MAAM,GAAG;AACrD,gBAAM,IAAI,MAAM,GAAG,MAAM,gCAAgC,MAAM,aAAa,IAAI,IAAI;AAAA,QACtF;AACA,YAAI,eAAe,aAAa,MAAM,MAAM;AAC5C,YAAI,CAAC,aAAa,WAAW,MAAM;AACjC,gBAAM,IAAI,MAAM,GAAG,MAAM,gCAAgC,MAAM,aAAa,YAAY,IAAI;AAAA,MAChG;AAAA,IACF;AAOA,aAAS,SAAS,OAAO;AACvB,aAAO,iBAAiB,OAAO,CAAC,OAAO,OAAO;AAAA,IAChD;AAOA,aAAS,UAAU,OAAO;AACxB,aAAO,iBAAiB,OAAO,CAAC,QAAQ,QAAQ;AAAA,IAClD;AAoBA,aAAS,iBAAiB,OAAO,OAAO,MAAM;AAC5C,aAAO,WAAW,MAAM,SAAS,OAAO,MAAM,SAAS,QAAQ,MAAM,UAAU;AAAA,IACjF;AASA,aAAS,qBAAqB;AAC5B,yBAAmB;AAAA,IACrB;AASA,aAAS,WAAW,SAAS;AAC3B,aAAOA,MAAK,QAAQ,WAAW,QAAQ,UAAUD,IAAG,OAAO,CAAC;AAAA,IAC9D;AAGA,YAAQ,YAAY,MAAM,iBAAiB;AA6F3C,WAAO,eAAe,OAAO,SAAS,UAAU;AAAA,MAC9C,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,KAAK,WAAY;AACf,eAAO,WAAW;AAAA,MACpB;AAAA,IACF,CAAC;AAED,WAAO,QAAQ,MAAM;AACrB,WAAO,QAAQ,UAAU;AAEzB,WAAO,QAAQ,OAAO;AACtB,WAAO,QAAQ,WAAW;AAE1B,WAAO,QAAQ,UAAU;AACzB,WAAO,QAAQ,cAAc;AAE7B,WAAO,QAAQ,qBAAqB;AAAA;AAAA;;;AC/wBpC;AAAA;AAAA;AAIA,QAAM,SAAS,oBAAI,IAAI;AAAA,MACrB,CAAC,KAAK,KAAK;AAAA,MACX,CAAC,KAAK,MAAM;AAAA,MACZ,CAAC,KAAK,MAAM;AAAA,MACZ,CAAC,KAAK,eAAe;AAAA,MACrB,CAAC,KAAK,QAAQ;AAAA,MACd,CAAC,oBAAoB,OAAO;AAAA,MAC5B,CAAC,mBAAmB,OAAO;AAAA,MAC3B,CAAC,cAAc,OAAO;AAAA,MACtB,CAAC,aAAa,OAAO;AAAA,MACrB,CAAC,oBAAoB,OAAO;AAAA,MAC5B,CAAC,kBAAkB,OAAO;AAAA,MAC1B,CAAC,KAAK,MAAM;AAAA,MACZ,CAAC,iBAAiB,MAAM;AAAA,MACxB,CAAC,gBAAgB,MAAM;AAAA,MACvB,CAAC,KAAK,SAAS;AAAA,MACf,CAAC,YAAY,SAAS;AAAA,MACtB,CAAC,KAAK,eAAe;AAAA,MACrB,CAAC,KAAK,QAAQ;AAAA,MACd,CAAC,KAAK,QAAQ;AAAA,IAChB,CAAC;AAED,WAAO,UAAU,SAAO,MAAM,OAAO,KAAK,GAAG,EAAE,IAAI,OAAK;AAAA,MACtD,OAAO,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI;AAAA,MAAG,IAAI,CAAC;AAAA,IAC1C,CAAC,EAAE,OAAO,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,MAAM,uBAAO,OAAO,IAAI,CAAC,IAAI,CAAC;AAAA;AAAA;;;AC5B1E;AAAA;AAAA;AACA,QAAM,OACJ,OAAO,YAAY,YAAY,UAC3B,UACA;AAAA,MACE,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AACN,QAAM,KAAK,UAAQ,QAAQ;AAC3B,QAAM,SAAS,UAAQ,QAAQ;AAC/B,QAAM,gBAAgB,UAAQ,gBAAgB;AAC9C,QAAM,KAAK,cAAc;AAEzB,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,iBAAiB,OAAO,cAAc;AAC5C,QAAM,cAAc,OAAO,YAAY;AACvC,QAAM,eAAe,OAAO,aAAa;AACzC,QAAM,gBAAgB,OAAO,cAAc;AAC3C,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,aAAa,OAAO,YAAY;AAEtC,QAAM,YAAY,OAAO,WAAW;AAEpC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,SAAS,OAAO,QAAQ;AAE9B,QAAM,QAAQ,QAAM,QAAQ,QAAQ,EAAE,KAAK,EAAE;AAG7C,QAAM,SAAS,OAAO,6BAA6B;AACnD,QAAM,gBACH,UAAU,OAAO,iBAAkB,OAAO,+BAA+B;AAC5E,QAAM,WACH,UAAU,OAAO,YAAa,OAAO,0BAA0B;AAKlE,QAAM,WAAW,QAAM,OAAO,SAAS,OAAO,YAAY,OAAO;AAEjE,QAAM,gBAAgB,OACpB,aAAa,eACZ,OAAO,MAAM,YACZ,EAAE,eACF,EAAE,YAAY,SAAS,iBACvB,EAAE,cAAc;AAEpB,QAAM,oBAAoB,OAAK,CAAC,OAAO,SAAS,CAAC,KAAK,YAAY,OAAO,CAAC;AAE1E,QAAM,OAAN,MAAW;AAAA,MACT,YAAY,KAAK,MAAM,MAAM;AAC3B,aAAK,MAAM;AACX,aAAK,OAAO;AACZ,aAAK,OAAO;AACZ,aAAK,UAAU,MAAM,IAAI,MAAM,EAAE;AACjC,aAAK,GAAG,SAAS,KAAK,OAAO;AAAA,MAC/B;AAAA,MACA,SAAS;AACP,aAAK,KAAK,eAAe,SAAS,KAAK,OAAO;AAAA,MAChD;AAAA;AAAA,MAEA,cAAc;AAAA,MAAC;AAAA,MACf,MAAM;AACJ,aAAK,OAAO;AACZ,YAAI,KAAK,KAAK;AAAK,eAAK,KAAK,IAAI;AAAA,MACnC;AAAA,IACF;AAEA,QAAM,kBAAN,cAA8B,KAAK;AAAA,MACjC,SAAS;AACP,aAAK,IAAI,eAAe,SAAS,KAAK,WAAW;AACjD,cAAM,OAAO;AAAA,MACf;AAAA,MACA,YAAY,KAAK,MAAM,MAAM;AAC3B,cAAM,KAAK,MAAM,IAAI;AACrB,aAAK,cAAc,QAAM,KAAK,KAAK,SAAS,EAAE;AAC9C,YAAI,GAAG,SAAS,KAAK,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,QAAM,WAAN,MAAM,kBAAiB,OAAO;AAAA,MAC5B,YAAY,SAAS;AACnB,cAAM;AACN,aAAK,OAAO,IAAI;AAEhB,aAAK,MAAM,IAAI;AACf,aAAK,KAAK,IAAI,CAAC;AACf,aAAK,MAAM,IAAI,CAAC;AAChB,aAAK,UAAU,IAAK,WAAW,QAAQ,cAAe;AACtD,YAAI,KAAK,UAAU;AAAG,eAAK,QAAQ,IAAI;AAAA;AAClC,eAAK,QAAQ,IAAK,WAAW,QAAQ,YAAa;AACvD,YAAI,KAAK,QAAQ,MAAM;AAAU,eAAK,QAAQ,IAAI;AAClD,aAAK,KAAK,IAAK,WAAW,CAAC,CAAC,QAAQ,SAAU;AAC9C,aAAK,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,KAAK,QAAQ,CAAC,IAAI;AAC1D,aAAK,GAAG,IAAI;AACZ,aAAK,WAAW,IAAI;AACpB,aAAK,YAAY,IAAI;AACrB,aAAK,MAAM,IAAI;AACf,aAAK,aAAa,IAAI;AACtB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,YAAY,IAAI;AACrB,aAAK,SAAS,IAAI;AAClB,YAAI,WAAW,QAAQ,sBAAsB,MAAM;AACjD,iBAAO,eAAe,MAAM,UAAU,EAAE,KAAK,MAAM,KAAK,MAAM,EAAE,CAAC;AAAA,QACnE;AACA,YAAI,WAAW,QAAQ,qBAAqB,MAAM;AAChD,iBAAO,eAAe,MAAM,SAAS,EAAE,KAAK,MAAM,KAAK,KAAK,EAAE,CAAC;AAAA,QACjE;AACA,aAAK,MAAM,IAAI,WAAW,QAAQ;AAClC,aAAK,OAAO,IAAI;AAChB,YAAI,KAAK,MAAM,GAAG;AAChB,eAAK,MAAM,EAAE,iBAAiB,SAAS,MAAM,KAAK,KAAK,EAAE,CAAC;AAC1D,cAAI,KAAK,MAAM,EAAE,SAAS;AACxB,iBAAK,KAAK,EAAE;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,eAAe;AACjB,eAAO,KAAK,YAAY;AAAA,MAC1B;AAAA,MAEA,IAAI,WAAW;AACb,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,MACA,IAAI,SAAS,KAAK;AAChB,YAAI,KAAK,UAAU;AAAG,gBAAM,IAAI,MAAM,mCAAmC;AAEzE,YACE,KAAK,QAAQ,KACb,QAAQ,KAAK,QAAQ,MACnB,KAAK,OAAO,KAAK,KAAK,OAAO,EAAE,YAAa,KAAK,YAAY;AAE/D,gBAAM,IAAI,MAAM,wBAAwB;AAE1C,YAAI,KAAK,QAAQ,MAAM,KAAK;AAC1B,eAAK,OAAO,IAAI,MAAM,IAAI,GAAG,GAAG,IAAI;AACpC,cAAI,KAAK,MAAM,EAAE;AACf,iBAAK,MAAM,IAAI,KAAK,MAAM,EAAE,IAAI,WAAS,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAAA,QACvE;AAEA,aAAK,QAAQ,IAAI;AAAA,MACnB;AAAA,MAEA,YAAY,KAAK;AACf,aAAK,WAAW;AAAA,MAClB;AAAA,MAEA,IAAI,aAAa;AACf,eAAO,KAAK,UAAU;AAAA,MACxB;AAAA,MACA,IAAI,WAAW,IAAI;AACjB,aAAK,UAAU,IAAI,KAAK,UAAU,KAAK,CAAC,CAAC;AAAA,MAC3C;AAAA,MAEA,KAAK,OAAO,IAAI;AACd,eAAO,KAAK,KAAK;AAAA,MACnB;AAAA,MACA,KAAK,OAAO,EAAE,GAAG;AACf,aAAK,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC;AAAA,MACjC;AAAA;AAAA,MAGA,CAAC,KAAK,IAAI;AACR,aAAK,OAAO,IAAI;AAChB,aAAK,KAAK,SAAS,KAAK,MAAM,EAAE,MAAM;AACtC,aAAK,QAAQ,KAAK,MAAM,EAAE,MAAM;AAAA,MAClC;AAAA,MAEA,IAAI,UAAU;AACZ,eAAO,KAAK,OAAO;AAAA,MACrB;AAAA,MACA,IAAI,QAAQ,GAAG;AAAA,MAAC;AAAA,MAEhB,MAAM,OAAO,UAAU,IAAI;AACzB,YAAI,KAAK,OAAO;AAAG,iBAAO;AAC1B,YAAI,KAAK,GAAG;AAAG,gBAAM,IAAI,MAAM,iBAAiB;AAEhD,YAAI,KAAK,SAAS,GAAG;AACnB,eAAK;AAAA,YACH;AAAA,YACA,OAAO;AAAA,cACL,IAAI,MAAM,gDAAgD;AAAA,cAC1D,EAAE,MAAM,uBAAuB;AAAA,YACjC;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,aAAa;AAAY,UAAC,KAAK,UAAY,WAAW;AAEjE,YAAI,CAAC;AAAU,qBAAW;AAE1B,cAAM,KAAK,KAAK,KAAK,IAAI,QAAQ,OAAK,EAAE;AAMxC,YAAI,CAAC,KAAK,UAAU,KAAK,CAAC,OAAO,SAAS,KAAK,GAAG;AAChD,cAAI,kBAAkB,KAAK;AACzB,oBAAQ,OAAO,KAAK,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,mBAC7D,cAAc,KAAK;AAAG,oBAAQ,OAAO,KAAK,KAAK;AAAA,mBAC/C,OAAO,UAAU;AAExB,iBAAK,aAAa;AAAA,QACtB;AAIA,YAAI,KAAK,UAAU,GAAG;AAEpB,cAAI,KAAK,WAAW,KAAK,YAAY,MAAM;AAAG,iBAAK,KAAK,EAAE,IAAI;AAE9D,cAAI,KAAK;AAAS,iBAAK,KAAK,QAAQ,KAAK;AAAA;AACpC,iBAAK,UAAU,EAAE,KAAK;AAE3B,cAAI,KAAK,YAAY,MAAM;AAAG,iBAAK,KAAK,UAAU;AAElD,cAAI;AAAI,eAAG,EAAE;AAEb,iBAAO,KAAK;AAAA,QACd;AAIA,YAAI,CAAC,MAAM,QAAQ;AACjB,cAAI,KAAK,YAAY,MAAM;AAAG,iBAAK,KAAK,UAAU;AAClD,cAAI;AAAI,eAAG,EAAE;AACb,iBAAO,KAAK;AAAA,QACd;AAIA,YACE,OAAO,UAAU;AAAA,QAEjB,EAAE,aAAa,KAAK,QAAQ,KAAK,CAAC,KAAK,OAAO,EAAE,WAChD;AACA,kBAAQ,OAAO,KAAK,OAAO,QAAQ;AAAA,QACrC;AAEA,YAAI,OAAO,SAAS,KAAK,KAAK,KAAK,QAAQ;AACzC,kBAAQ,KAAK,OAAO,EAAE,MAAM,KAAK;AAGnC,YAAI,KAAK,WAAW,KAAK,YAAY,MAAM;AAAG,eAAK,KAAK,EAAE,IAAI;AAE9D,YAAI,KAAK;AAAS,eAAK,KAAK,QAAQ,KAAK;AAAA;AACpC,eAAK,UAAU,EAAE,KAAK;AAE3B,YAAI,KAAK,YAAY,MAAM;AAAG,eAAK,KAAK,UAAU;AAElD,YAAI;AAAI,aAAG,EAAE;AAEb,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,KAAK,GAAG;AACN,YAAI,KAAK,SAAS;AAAG,iBAAO;AAE5B,YAAI,KAAK,YAAY,MAAM,KAAK,MAAM,KAAK,IAAI,KAAK,YAAY,GAAG;AACjE,eAAK,cAAc,EAAE;AACrB,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,UAAU;AAAG,cAAI;AAE1B,YAAI,KAAK,MAAM,EAAE,SAAS,KAAK,CAAC,KAAK,UAAU,GAAG;AAChD,cAAI,KAAK;AAAU,iBAAK,MAAM,IAAI,CAAC,KAAK,MAAM,EAAE,KAAK,EAAE,CAAC;AAAA;AACnD,iBAAK,MAAM,IAAI,CAAC,OAAO,OAAO,KAAK,MAAM,GAAG,KAAK,YAAY,CAAC,CAAC;AAAA,QACtE;AAEA,cAAM,MAAM,KAAK,IAAI,EAAE,KAAK,MAAM,KAAK,MAAM,EAAE,CAAC,CAAC;AACjD,aAAK,cAAc,EAAE;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,IAAI,EAAE,GAAG,OAAO;AACf,YAAI,MAAM,MAAM,UAAU,MAAM;AAAM,eAAK,WAAW,EAAE;AAAA,aACnD;AACH,eAAK,MAAM,EAAE,CAAC,IAAI,MAAM,MAAM,CAAC;AAC/B,kBAAQ,MAAM,MAAM,GAAG,CAAC;AACxB,eAAK,YAAY,KAAK;AAAA,QACxB;AAEA,aAAK,KAAK,QAAQ,KAAK;AAEvB,YAAI,CAAC,KAAK,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG;AAAG,eAAK,KAAK,OAAO;AAEzD,eAAO;AAAA,MACT;AAAA,MAEA,IAAI,OAAO,UAAU,IAAI;AACvB,YAAI,OAAO,UAAU;AAAY,UAAC,KAAK,OAAS,QAAQ;AACxD,YAAI,OAAO,aAAa;AAAY,UAAC,KAAK,UAAY,WAAW;AACjE,YAAI;AAAO,eAAK,MAAM,OAAO,QAAQ;AACrC,YAAI;AAAI,eAAK,KAAK,OAAO,EAAE;AAC3B,aAAK,GAAG,IAAI;AACZ,aAAK,WAAW;AAMhB,YAAI,KAAK,WAAW,CAAC,KAAK,MAAM;AAAG,eAAK,cAAc,EAAE;AACxD,eAAO;AAAA,MACT;AAAA;AAAA,MAGA,CAAC,MAAM,IAAI;AACT,YAAI,KAAK,SAAS;AAAG;AAErB,aAAK,MAAM,IAAI;AACf,aAAK,OAAO,IAAI;AAChB,aAAK,KAAK,QAAQ;AAClB,YAAI,KAAK,MAAM,EAAE;AAAQ,eAAK,KAAK,EAAE;AAAA,iBAC5B,KAAK,GAAG;AAAG,eAAK,cAAc,EAAE;AAAA;AACpC,eAAK,KAAK,OAAO;AAAA,MACxB;AAAA,MAEA,SAAS;AACP,eAAO,KAAK,MAAM,EAAE;AAAA,MACtB;AAAA,MAEA,QAAQ;AACN,aAAK,OAAO,IAAI;AAChB,aAAK,MAAM,IAAI;AAAA,MACjB;AAAA,MAEA,IAAI,YAAY;AACd,eAAO,KAAK,SAAS;AAAA,MACvB;AAAA,MAEA,IAAI,UAAU;AACZ,eAAO,KAAK,OAAO;AAAA,MACrB;AAAA,MAEA,IAAI,SAAS;AACX,eAAO,KAAK,MAAM;AAAA,MACpB;AAAA,MAEA,CAAC,UAAU,EAAE,OAAO;AAClB,YAAI,KAAK,UAAU;AAAG,eAAK,YAAY,KAAK;AAAA;AACvC,eAAK,YAAY,KAAK,MAAM;AACjC,aAAK,MAAM,EAAE,KAAK,KAAK;AAAA,MACzB;AAAA,MAEA,CAAC,WAAW,IAAI;AACd,YAAI,KAAK,UAAU;AAAG,eAAK,YAAY,KAAK;AAAA;AACvC,eAAK,YAAY,KAAK,KAAK,MAAM,EAAE,CAAC,EAAE;AAC3C,eAAO,KAAK,MAAM,EAAE,MAAM;AAAA,MAC5B;AAAA,MAEA,CAAC,KAAK,EAAE,SAAS;AACf,WAAG;AAAA,QAAC,SAAS,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,CAAC,KAAK,KAAK,MAAM,EAAE;AAEnE,YAAI,CAAC,WAAW,CAAC,KAAK,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG;AAAG,eAAK,KAAK,OAAO;AAAA,MACvE;AAAA,MAEA,CAAC,UAAU,EAAE,OAAO;AAClB,aAAK,KAAK,QAAQ,KAAK;AACvB,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,KAAK,MAAM,MAAM;AACf,YAAI,KAAK,SAAS;AAAG;AAErB,cAAM,QAAQ,KAAK,WAAW;AAC9B,eAAO,QAAQ,CAAC;AAChB,YAAI,SAAS,KAAK,UAAU,SAAS,KAAK;AAAQ,eAAK,MAAM;AAAA;AACxD,eAAK,MAAM,KAAK,QAAQ;AAC7B,aAAK,cAAc,CAAC,CAAC,KAAK;AAG1B,YAAI,OAAO;AACT,cAAI,KAAK;AAAK,iBAAK,IAAI;AAAA,QACzB,OAAO;AACL,eAAK,KAAK,EAAE;AAAA,YACV,CAAC,KAAK,cACF,IAAI,KAAK,MAAM,MAAM,IAAI,IACzB,IAAI,gBAAgB,MAAM,MAAM,IAAI;AAAA,UAC1C;AACA,cAAI,KAAK,KAAK;AAAG,kBAAM,MAAM,KAAK,MAAM,EAAE,CAAC;AAAA;AACtC,iBAAK,MAAM,EAAE;AAAA,QACpB;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,OAAO,MAAM;AACX,cAAM,IAAI,KAAK,KAAK,EAAE,KAAK,CAAAI,OAAKA,GAAE,SAAS,IAAI;AAC/C,YAAI,GAAG;AACL,eAAK,KAAK,EAAE,OAAO,KAAK,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC;AAC5C,YAAE,OAAO;AAAA,QACX;AAAA,MACF;AAAA,MAEA,YAAY,IAAI,IAAI;AAClB,eAAO,KAAK,GAAG,IAAI,EAAE;AAAA,MACvB;AAAA,MAEA,GAAG,IAAI,IAAI;AACT,cAAM,MAAM,MAAM,GAAG,IAAI,EAAE;AAC3B,YAAI,OAAO,UAAU,CAAC,KAAK,KAAK,EAAE,UAAU,CAAC,KAAK;AAAS,eAAK,MAAM,EAAE;AAAA,iBAC/D,OAAO,cAAc,KAAK,YAAY,MAAM;AACnD,gBAAM,KAAK,UAAU;AAAA,iBACd,SAAS,EAAE,KAAK,KAAK,WAAW,GAAG;AAC1C,gBAAM,KAAK,EAAE;AACb,eAAK,mBAAmB,EAAE;AAAA,QAC5B,WAAW,OAAO,WAAW,KAAK,aAAa,GAAG;AAChD,cAAI,KAAK,KAAK;AAAG,kBAAM,MAAM,GAAG,KAAK,MAAM,KAAK,aAAa,CAAC,CAAC;AAAA;AAC1D,eAAG,KAAK,MAAM,KAAK,aAAa,CAAC;AAAA,QACxC;AACA,eAAO;AAAA,MACT;AAAA,MAEA,IAAI,aAAa;AACf,eAAO,KAAK,WAAW;AAAA,MACzB;AAAA,MAEA,CAAC,cAAc,IAAI;AACjB,YACE,CAAC,KAAK,YAAY,KAClB,CAAC,KAAK,WAAW,KACjB,CAAC,KAAK,SAAS,KACf,KAAK,MAAM,EAAE,WAAW,KACxB,KAAK,GAAG,GACR;AACA,eAAK,YAAY,IAAI;AACrB,eAAK,KAAK,KAAK;AACf,eAAK,KAAK,WAAW;AACrB,eAAK,KAAK,QAAQ;AAClB,cAAI,KAAK,MAAM;AAAG,iBAAK,KAAK,OAAO;AACnC,eAAK,YAAY,IAAI;AAAA,QACvB;AAAA,MACF;AAAA,MAEA,KAAK,IAAI,SAAS,OAAO;AAEvB,YAAI,OAAO,WAAW,OAAO,WAAW,OAAO,aAAa,KAAK,SAAS;AACxE;AAAA,iBACO,OAAO,QAAQ;AACtB,iBAAO,CAAC,KAAK,UAAU,KAAK,CAAC,OACzB,QACA,KAAK,KAAK,IACV,MAAM,MAAM,KAAK,QAAQ,EAAE,IAAI,CAAC,IAChC,KAAK,QAAQ,EAAE,IAAI;AAAA,QACzB,WAAW,OAAO,OAAO;AACvB,iBAAO,KAAK,OAAO,EAAE;AAAA,QACvB,WAAW,OAAO,SAAS;AACzB,eAAK,MAAM,IAAI;AAEf,cAAI,CAAC,KAAK,WAAW,KAAK,CAAC,KAAK,SAAS;AAAG;AAC5C,gBAAMC,OAAM,MAAM,KAAK,OAAO;AAC9B,eAAK,mBAAmB,OAAO;AAC/B,iBAAOA;AAAA,QACT,WAAW,OAAO,SAAS;AACzB,eAAK,aAAa,IAAI;AACtB,gBAAM,KAAK,OAAO,IAAI;AACtB,gBAAMA,OACJ,CAAC,KAAK,MAAM,KAAK,KAAK,UAAU,OAAO,EAAE,SACrC,MAAM,KAAK,SAAS,IAAI,IACxB;AACN,eAAK,cAAc,EAAE;AACrB,iBAAOA;AAAA,QACT,WAAW,OAAO,UAAU;AAC1B,gBAAMA,OAAM,MAAM,KAAK,QAAQ;AAC/B,eAAK,cAAc,EAAE;AACrB,iBAAOA;AAAA,QACT,WAAW,OAAO,YAAY,OAAO,aAAa;AAChD,gBAAMA,OAAM,MAAM,KAAK,EAAE;AACzB,eAAK,mBAAmB,EAAE;AAC1B,iBAAOA;AAAA,QACT;AAGA,cAAM,MAAM,MAAM,KAAK,IAAI,MAAM,GAAG,KAAK;AACzC,aAAK,cAAc,EAAE;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,QAAQ,EAAE,MAAM;AACf,mBAAW,KAAK,KAAK,KAAK,GAAG;AAC3B,cAAI,EAAE,KAAK,MAAM,IAAI,MAAM;AAAO,iBAAK,MAAM;AAAA,QAC/C;AACA,cAAM,MAAM,MAAM,KAAK,QAAQ,IAAI;AACnC,aAAK,cAAc,EAAE;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,OAAO,IAAI;AACV,YAAI,KAAK,WAAW;AAAG;AAEvB,aAAK,WAAW,IAAI;AACpB,aAAK,WAAW;AAChB,YAAI,KAAK,KAAK;AAAG,gBAAM,MAAM,KAAK,QAAQ,EAAE,CAAC;AAAA;AACxC,eAAK,QAAQ,EAAE;AAAA,MACtB;AAAA,MAEA,CAAC,QAAQ,IAAI;AACX,YAAI,KAAK,OAAO,GAAG;AACjB,gBAAM,OAAO,KAAK,OAAO,EAAE,IAAI;AAC/B,cAAI,MAAM;AACR,uBAAW,KAAK,KAAK,KAAK,GAAG;AAC3B,gBAAE,KAAK,MAAM,IAAI;AAAA,YACnB;AACA,kBAAM,KAAK,QAAQ,IAAI;AAAA,UACzB;AAAA,QACF;AAEA,mBAAW,KAAK,KAAK,KAAK,GAAG;AAC3B,YAAE,IAAI;AAAA,QACR;AACA,cAAM,MAAM,MAAM,KAAK,KAAK;AAC5B,aAAK,mBAAmB,KAAK;AAC7B,eAAO;AAAA,MACT;AAAA;AAAA,MAGA,UAAU;AACR,cAAM,MAAM,CAAC;AACb,YAAI,CAAC,KAAK,UAAU;AAAG,cAAI,aAAa;AAGxC,cAAM,IAAI,KAAK,QAAQ;AACvB,aAAK,GAAG,QAAQ,OAAK;AACnB,cAAI,KAAK,CAAC;AACV,cAAI,CAAC,KAAK,UAAU;AAAG,gBAAI,cAAc,EAAE;AAAA,QAC7C,CAAC;AACD,eAAO,EAAE,KAAK,MAAM,GAAG;AAAA,MACzB;AAAA;AAAA,MAGA,SAAS;AACP,eAAO,KAAK,UAAU,IAClB,QAAQ,OAAO,IAAI,MAAM,6BAA6B,CAAC,IACvD,KAAK,QAAQ,EAAE;AAAA,UAAK,SAClB,KAAK,UAAU,IACX,QAAQ,OAAO,IAAI,MAAM,6BAA6B,CAAC,IACvD,KAAK,QAAQ,IACb,IAAI,KAAK,EAAE,IACX,OAAO,OAAO,KAAK,IAAI,UAAU;AAAA,QACvC;AAAA,MACN;AAAA;AAAA,MAGA,UAAU;AACR,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,eAAK,GAAG,WAAW,MAAM,OAAO,IAAI,MAAM,kBAAkB,CAAC,CAAC;AAC9D,eAAK,GAAG,SAAS,QAAM,OAAO,EAAE,CAAC;AACjC,eAAK,GAAG,OAAO,MAAM,QAAQ,CAAC;AAAA,QAChC,CAAC;AAAA,MACH;AAAA;AAAA,MAGA,CAAC,aAAa,IAAI;AAChB,YAAI,UAAU;AACd,cAAM,OAAO,MAAM;AACjB,eAAK,MAAM;AACX,oBAAU;AACV,iBAAO,QAAQ,QAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,QACvC;AACA,cAAM,OAAO,MAAM;AACjB,cAAI;AAAS,mBAAO,KAAK;AACzB,gBAAM,MAAM,KAAK,KAAK;AACtB,cAAI,QAAQ;AAAM,mBAAO,QAAQ,QAAQ,EAAE,MAAM,OAAO,OAAO,IAAI,CAAC;AAEpE,cAAI,KAAK,GAAG;AAAG,mBAAO,KAAK;AAE3B,cAAI,UAAU;AACd,cAAI,SAAS;AACb,gBAAM,QAAQ,QAAM;AAClB,iBAAK,eAAe,QAAQ,MAAM;AAClC,iBAAK,eAAe,OAAO,KAAK;AAChC,iBAAK,eAAe,WAAW,SAAS;AACxC,iBAAK;AACL,mBAAO,EAAE;AAAA,UACX;AACA,gBAAM,SAAS,WAAS;AACtB,iBAAK,eAAe,SAAS,KAAK;AAClC,iBAAK,eAAe,OAAO,KAAK;AAChC,iBAAK,eAAe,WAAW,SAAS;AACxC,iBAAK,MAAM;AACX,oBAAQ,EAAE,OAAc,MAAM,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AAAA,UAC7C;AACA,gBAAM,QAAQ,MAAM;AAClB,iBAAK,eAAe,SAAS,KAAK;AAClC,iBAAK,eAAe,QAAQ,MAAM;AAClC,iBAAK,eAAe,WAAW,SAAS;AACxC,iBAAK;AACL,oBAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,UACxB;AACA,gBAAM,YAAY,MAAM,MAAM,IAAI,MAAM,kBAAkB,CAAC;AAC3D,iBAAO,IAAI,QAAQ,CAACC,MAAK,QAAQ;AAC/B,qBAAS;AACT,sBAAUA;AACV,iBAAK,KAAK,WAAW,SAAS;AAC9B,iBAAK,KAAK,SAAS,KAAK;AACxB,iBAAK,KAAK,OAAO,KAAK;AACtB,iBAAK,KAAK,QAAQ,MAAM;AAAA,UAC1B,CAAC;AAAA,QACH;AAEA,eAAO;AAAA,UACL;AAAA,UACA,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,CAAC,aAAa,IAAI;AAChB,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA;AAAA,MAGA,CAAC,QAAQ,IAAI;AACX,YAAI,UAAU;AACd,cAAM,OAAO,MAAM;AACjB,eAAK,MAAM;AACX,eAAK,eAAe,OAAO,IAAI;AAC/B,eAAK,eAAe,WAAW,IAAI;AACnC,eAAK,eAAe,OAAO,IAAI;AAC/B,oBAAU;AACV,iBAAO,EAAE,MAAM,KAAK;AAAA,QACtB;AAEA,cAAM,OAAO,MAAM;AACjB,cAAI;AAAS,mBAAO,KAAK;AACzB,gBAAM,QAAQ,KAAK,KAAK;AACxB,iBAAO,UAAU,OAAO,KAAK,IAAI,EAAE,MAAM;AAAA,QAC3C;AACA,aAAK,KAAK,OAAO,IAAI;AACrB,aAAK,KAAK,OAAO,IAAI;AACrB,aAAK,KAAK,WAAW,IAAI;AAEzB,eAAO;AAAA,UACL;AAAA,UACA,OAAO;AAAA,UACP,QAAQ;AAAA,UACR,CAAC,QAAQ,IAAI;AACX,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MAEA,QAAQ,IAAI;AACV,YAAI,KAAK,SAAS,GAAG;AACnB,cAAI;AAAI,iBAAK,KAAK,SAAS,EAAE;AAAA;AACxB,iBAAK,KAAK,SAAS;AACxB,iBAAO;AAAA,QACT;AAEA,aAAK,SAAS,IAAI;AAGlB,aAAK,MAAM,EAAE,SAAS;AACtB,aAAK,YAAY,IAAI;AAErB,YAAI,OAAO,KAAK,UAAU,cAAc,CAAC,KAAK,MAAM;AAAG,eAAK,MAAM;AAElE,YAAI;AAAI,eAAK,KAAK,SAAS,EAAE;AAAA;AAExB,eAAK,KAAK,SAAS;AAExB,eAAO;AAAA,MACT;AAAA,MAEA,OAAO,SAAS,GAAG;AACjB,eACE,CAAC,CAAC,MACD,aAAa,aACZ,aAAa,UACZ,aAAa;AAAA,SAEX,OAAO,EAAE,SAAS;AAAA,QAEhB,OAAO,EAAE,UAAU,cAAc,OAAO,EAAE,QAAQ;AAAA,MAE7D;AAAA,IACF;AAEA,YAAQ,WAAW;AAAA;AAAA;;;AC7rBnB;AAAA;AAIA,QAAM,oBAAoB,UAAQ,MAAM,EAAE;AAAA,IACb,EAAE,aAAa,KAAK;AAEjD,WAAO,UAAU,OAAO,OAAO,OAAO,OAAO,uBAAO,OAAO,IAAI,GAAG;AAAA,MAChE,YAAY;AAAA,MACZ,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,cAAc;AAAA,MACd,UAAU;AAAA,MACV,SAAS;AAAA,MACT,MAAM;AAAA,MACN,cAAc;AAAA,MACd,aAAa;AAAA,MACb,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,cAAc;AAAA,MACd,aAAa;AAAA,MACb,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,kBAAkB;AAAA,MAClB,cAAc;AAAA,MACd,oBAAoB;AAAA,MACpB,uBAAuB;AAAA,MACvB,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,OAAO;AAAA,MACP,SAAS;AAAA,MACT,oBAAoB;AAAA,MACpB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,eAAe;AAAA,MACf,eAAe;AAAA,MACf,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,sBAAsB;AAAA,MACtB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,oBAAoB;AAAA,MACpB,aAAa;AAAA,MACb,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,0BAA0B;AAAA,MAC1B,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,MACzB,gCAAgC;AAAA,MAChC,qBAAqB;AAAA,MACrB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,qBAAqB;AAAA,MACrB,oBAAoB;AAAA,MACpB,oBAAoB;AAAA,MACpB,wBAAwB;AAAA,MACxB,wBAAwB;AAAA,MACxB,wBAAwB;AAAA,MACxB,8BAA8B;AAAA,MAC9B,uBAAuB;AAAA,MACvB,6BAA6B;AAAA,MAC7B,6BAA6B;AAAA,MAC7B,mBAAmB;AAAA,MACnB,sBAAsB;AAAA,MACtB,oBAAoB;AAAA,MACpB,sBAAsB;AAAA,MACtB,+CAA+C;AAAA,MAC/C,wBAAwB;AAAA,MACxB,2BAA2B;AAAA,MAC3B,uBAAuB;AAAA,MACvB,sBAAsB;AAAA,MACtB,6BAA6B;AAAA,MAC7B,+BAA+B;AAAA,MAC/B,wCAAwC;AAAA,MACxC,yCAAyC;AAAA,MACzC,uDAAuD;AAAA,MACvD,mCAAmC;AAAA,MACnC,yBAAyB;AAAA,MACzB,wBAAwB;AAAA,MACxB,iCAAiC;AAAA,MACjC,kCAAkC;AAAA,MAClC,8CAA8C;AAAA,MAC9C,sCAAsC;AAAA,MACtC,mDAAmD;AAAA,MACnD,qDAAqD;AAAA,MACrD,iDAAiD;AAAA,MACjD,sCAAsC;AAAA,MACtC,2CAA2C;AAAA,MAC3C,gDAAgD;AAAA,MAChD,4CAA4C;AAAA,MAC5C,4CAA4C;AAAA,MAC5C,uCAAuC;AAAA,MACvC,wCAAwC;AAAA,MACxC,yCAAyC;AAAA,MACzC,uCAAuC;AAAA,MACvC,uCAAuC;AAAA,MACvC,sCAAsC;AAAA,MACtC,yCAAyC;AAAA,MACzC,wCAAwC;AAAA,MACxC,0CAA0C;AAAA,MAC1C,wCAAwC;AAAA,MACxC,wCAAwC;AAAA,MACxC,0CAA0C;AAAA,MAC1C,0CAA0C;AAAA,MAC1C,6CAA6C;AAAA,MAC7C,kCAAkC;AAAA,IACpC,GAAG,iBAAiB,CAAC;AAAA;AAAA;;;AClHrB,IAAAC,oBAAA;AAAA;AAAA;AACA,QAAM,OAAO,OAAO,YAAY,YAAY,UAAU,UAAU;AAAA,MAC9D,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AACA,QAAM,KAAK,UAAQ,QAAQ;AAC3B,QAAM,SAAS,UAAQ,QAAQ;AAC/B,QAAM,KAAK,UAAQ,gBAAgB,EAAE;AAErC,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,iBAAiB,OAAO,cAAc;AAC5C,QAAM,cAAc,OAAO,YAAY;AACvC,QAAM,eAAe,OAAO,aAAa;AACzC,QAAM,gBAAgB,OAAO,cAAc;AAC3C,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,QAAQ,OAAO,OAAO;AAE5B,QAAM,QAAQ,QAAM,QAAQ,QAAQ,EAAE,KAAK,EAAE;AAG7C,QAAM,SAAS,OAAO,6BAA8B;AACpD,QAAM,gBAAgB,UAAU,OAAO,iBAClC,OAAO,+BAA+B;AAC3C,QAAM,WAAW,UAAU,OAAO,YAC7B,OAAO,0BAA0B;AAKtC,QAAM,WAAW,QACf,OAAO,SACP,OAAO,YACP,OAAO;AAET,QAAM,gBAAgB,OAAK,aAAa,eACtC,OAAO,MAAM,YACb,EAAE,eACF,EAAE,YAAY,SAAS,iBACvB,EAAE,cAAc;AAElB,QAAM,oBAAoB,OAAK,CAAC,OAAO,SAAS,CAAC,KAAK,YAAY,OAAO,CAAC;AAE1E,QAAM,OAAN,MAAW;AAAA,MACT,YAAa,KAAK,MAAM,MAAM;AAC5B,aAAK,MAAM;AACX,aAAK,OAAO;AACZ,aAAK,OAAO;AACZ,aAAK,UAAU,MAAM,IAAI,MAAM,EAAE;AACjC,aAAK,GAAG,SAAS,KAAK,OAAO;AAAA,MAC/B;AAAA,MACA,SAAU;AACR,aAAK,KAAK,eAAe,SAAS,KAAK,OAAO;AAAA,MAChD;AAAA;AAAA,MAEA,cAAe;AAAA,MAAC;AAAA,MAChB,MAAO;AACL,aAAK,OAAO;AACZ,YAAI,KAAK,KAAK;AACZ,eAAK,KAAK,IAAI;AAAA,MAClB;AAAA,IACF;AAEA,QAAM,kBAAN,cAA8B,KAAK;AAAA,MACjC,SAAU;AACR,aAAK,IAAI,eAAe,SAAS,KAAK,WAAW;AACjD,cAAM,OAAO;AAAA,MACf;AAAA,MACA,YAAa,KAAK,MAAM,MAAM;AAC5B,cAAM,KAAK,MAAM,IAAI;AACrB,aAAK,cAAc,QAAM,KAAK,KAAK,SAAS,EAAE;AAC9C,YAAI,GAAG,SAAS,KAAK,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,UAAU,MAAM,iBAAiB,OAAO;AAAA,MAC7C,YAAa,SAAS;AACpB,cAAM;AACN,aAAK,OAAO,IAAI;AAEhB,aAAK,MAAM,IAAI;AACf,aAAK,QAAQ,CAAC;AACd,aAAK,SAAS,CAAC;AACf,aAAK,UAAU,IAAI,WAAW,QAAQ,cAAc;AACpD,YAAI,KAAK,UAAU;AACjB,eAAK,QAAQ,IAAI;AAAA;AAEjB,eAAK,QAAQ,IAAI,WAAW,QAAQ,YAAY;AAClD,YAAI,KAAK,QAAQ,MAAM;AACrB,eAAK,QAAQ,IAAI;AACnB,aAAK,KAAK,IAAI,WAAW,CAAC,CAAC,QAAQ,SAAS;AAC5C,aAAK,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,KAAK,QAAQ,CAAC,IAAI;AAC1D,aAAK,GAAG,IAAI;AACZ,aAAK,WAAW,IAAI;AACpB,aAAK,YAAY,IAAI;AACrB,aAAK,MAAM,IAAI;AACf,aAAK,aAAa,IAAI;AACtB,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,YAAY,IAAI;AACrB,aAAK,SAAS,IAAI;AAAA,MACpB;AAAA,MAEA,IAAI,eAAgB;AAAE,eAAO,KAAK,YAAY;AAAA,MAAE;AAAA,MAEhD,IAAI,WAAY;AAAE,eAAO,KAAK,QAAQ;AAAA,MAAE;AAAA,MACxC,IAAI,SAAU,KAAK;AACjB,YAAI,KAAK,UAAU;AACjB,gBAAM,IAAI,MAAM,mCAAmC;AAErD,YAAI,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,MACtC,KAAK,OAAO,KAAK,KAAK,OAAO,EAAE,YAAY,KAAK,YAAY;AAC/D,gBAAM,IAAI,MAAM,wBAAwB;AAE1C,YAAI,KAAK,QAAQ,MAAM,KAAK;AAC1B,eAAK,OAAO,IAAI,MAAM,IAAI,GAAG,GAAG,IAAI;AACpC,cAAI,KAAK,OAAO;AACd,iBAAK,SAAS,KAAK,OAAO,IAAI,WAAS,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAAA,QACrE;AAEA,aAAK,QAAQ,IAAI;AAAA,MACnB;AAAA,MAEA,YAAa,KAAK;AAChB,aAAK,WAAW;AAAA,MAClB;AAAA,MAEA,IAAI,aAAc;AAAE,eAAO,KAAK,UAAU;AAAA,MAAE;AAAA,MAC5C,IAAI,WAAY,IAAI;AAAE,aAAK,UAAU,IAAI,KAAK,UAAU,KAAK,CAAC,CAAC;AAAA,MAAG;AAAA,MAElE,KAAK,OAAO,IAAK;AAAE,eAAO,KAAK,KAAK;AAAA,MAAE;AAAA,MACtC,KAAK,OAAO,EAAG,GAAG;AAAE,aAAK,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC;AAAA,MAAE;AAAA,MAErD,MAAO,OAAO,UAAU,IAAI;AAC1B,YAAI,KAAK,GAAG;AACV,gBAAM,IAAI,MAAM,iBAAiB;AAEnC,YAAI,KAAK,SAAS,GAAG;AACnB,eAAK,KAAK,SAAS,OAAO;AAAA,YACxB,IAAI,MAAM,gDAAgD;AAAA,YAC1D,EAAE,MAAM,uBAAuB;AAAA,UACjC,CAAC;AACD,iBAAO;AAAA,QACT;AAEA,YAAI,OAAO,aAAa;AACtB,eAAK,UAAU,WAAW;AAE5B,YAAI,CAAC;AACH,qBAAW;AAEb,cAAM,KAAK,KAAK,KAAK,IAAI,QAAQ,OAAK,EAAE;AAMxC,YAAI,CAAC,KAAK,UAAU,KAAK,CAAC,OAAO,SAAS,KAAK,GAAG;AAChD,cAAI,kBAAkB,KAAK;AACzB,oBAAQ,OAAO,KAAK,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAAA,mBAC7D,cAAc,KAAK;AAC1B,oBAAQ,OAAO,KAAK,KAAK;AAAA,mBAClB,OAAO,UAAU;AAExB,iBAAK,aAAa;AAAA,QACtB;AAIA,YAAI,KAAK,UAAU,GAAG;AAEpB,cAAI,KAAK,WAAW,KAAK,YAAY,MAAM;AACzC,iBAAK,KAAK,EAAE,IAAI;AAElB,cAAI,KAAK;AACP,iBAAK,KAAK,QAAQ,KAAK;AAAA;AAEvB,iBAAK,UAAU,EAAE,KAAK;AAExB,cAAI,KAAK,YAAY,MAAM;AACzB,iBAAK,KAAK,UAAU;AAEtB,cAAI;AACF,eAAG,EAAE;AAEP,iBAAO,KAAK;AAAA,QACd;AAIA,YAAI,CAAC,MAAM,QAAQ;AACjB,cAAI,KAAK,YAAY,MAAM;AACzB,iBAAK,KAAK,UAAU;AACtB,cAAI;AACF,eAAG,EAAE;AACP,iBAAO,KAAK;AAAA,QACd;AAIA,YAAI,OAAO,UAAU;AAAA,QAEjB,EAAE,aAAa,KAAK,QAAQ,KAAK,CAAC,KAAK,OAAO,EAAE,WAAW;AAC7D,kBAAQ,OAAO,KAAK,OAAO,QAAQ;AAAA,QACrC;AAEA,YAAI,OAAO,SAAS,KAAK,KAAK,KAAK,QAAQ;AACzC,kBAAQ,KAAK,OAAO,EAAE,MAAM,KAAK;AAGnC,YAAI,KAAK,WAAW,KAAK,YAAY,MAAM;AACzC,eAAK,KAAK,EAAE,IAAI;AAElB,YAAI,KAAK;AACP,eAAK,KAAK,QAAQ,KAAK;AAAA;AAEvB,eAAK,UAAU,EAAE,KAAK;AAExB,YAAI,KAAK,YAAY,MAAM;AACzB,eAAK,KAAK,UAAU;AAEtB,YAAI;AACF,aAAG,EAAE;AAEP,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,KAAM,GAAG;AACP,YAAI,KAAK,SAAS;AAChB,iBAAO;AAET,YAAI,KAAK,YAAY,MAAM,KAAK,MAAM,KAAK,IAAI,KAAK,YAAY,GAAG;AACjE,eAAK,cAAc,EAAE;AACrB,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,UAAU;AACjB,cAAI;AAEN,YAAI,KAAK,OAAO,SAAS,KAAK,CAAC,KAAK,UAAU,GAAG;AAC/C,cAAI,KAAK;AACP,iBAAK,SAAS,CAAC,KAAK,OAAO,KAAK,EAAE,CAAC;AAAA;AAEnC,iBAAK,SAAS,CAAC,OAAO,OAAO,KAAK,QAAQ,KAAK,YAAY,CAAC,CAAC;AAAA,QACjE;AAEA,cAAM,MAAM,KAAK,IAAI,EAAE,KAAK,MAAM,KAAK,OAAO,CAAC,CAAC;AAChD,aAAK,cAAc,EAAE;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,IAAI,EAAG,GAAG,OAAO;AAChB,YAAI,MAAM,MAAM,UAAU,MAAM;AAC9B,eAAK,WAAW,EAAE;AAAA,aACf;AACH,eAAK,OAAO,CAAC,IAAI,MAAM,MAAM,CAAC;AAC9B,kBAAQ,MAAM,MAAM,GAAG,CAAC;AACxB,eAAK,YAAY,KAAK;AAAA,QACxB;AAEA,aAAK,KAAK,QAAQ,KAAK;AAEvB,YAAI,CAAC,KAAK,OAAO,UAAU,CAAC,KAAK,GAAG;AAClC,eAAK,KAAK,OAAO;AAEnB,eAAO;AAAA,MACT;AAAA,MAEA,IAAK,OAAO,UAAU,IAAI;AACxB,YAAI,OAAO,UAAU;AACnB,eAAK,OAAO,QAAQ;AACtB,YAAI,OAAO,aAAa;AACtB,eAAK,UAAU,WAAW;AAC5B,YAAI;AACF,eAAK,MAAM,OAAO,QAAQ;AAC5B,YAAI;AACF,eAAK,KAAK,OAAO,EAAE;AACrB,aAAK,GAAG,IAAI;AACZ,aAAK,WAAW;AAMhB,YAAI,KAAK,WAAW,CAAC,KAAK,MAAM;AAC9B,eAAK,cAAc,EAAE;AACvB,eAAO;AAAA,MACT;AAAA;AAAA,MAGA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,SAAS;AAChB;AAEF,aAAK,MAAM,IAAI;AACf,aAAK,OAAO,IAAI;AAChB,aAAK,KAAK,QAAQ;AAClB,YAAI,KAAK,OAAO;AACd,eAAK,KAAK,EAAE;AAAA,iBACL,KAAK,GAAG;AACf,eAAK,cAAc,EAAE;AAAA;AAErB,eAAK,KAAK,OAAO;AAAA,MACrB;AAAA,MAEA,SAAU;AACR,eAAO,KAAK,MAAM,EAAE;AAAA,MACtB;AAAA,MAEA,QAAS;AACP,aAAK,OAAO,IAAI;AAChB,aAAK,MAAM,IAAI;AAAA,MACjB;AAAA,MAEA,IAAI,YAAa;AACf,eAAO,KAAK,SAAS;AAAA,MACvB;AAAA,MAEA,IAAI,UAAW;AACb,eAAO,KAAK,OAAO;AAAA,MACrB;AAAA,MAEA,IAAI,SAAU;AACZ,eAAO,KAAK,MAAM;AAAA,MACpB;AAAA,MAEA,CAAC,UAAU,EAAG,OAAO;AACnB,YAAI,KAAK,UAAU;AACjB,eAAK,YAAY,KAAK;AAAA;AAEtB,eAAK,YAAY,KAAK,MAAM;AAC9B,aAAK,OAAO,KAAK,KAAK;AAAA,MACxB;AAAA,MAEA,CAAC,WAAW,IAAK;AACf,YAAI,KAAK,OAAO,QAAQ;AACtB,cAAI,KAAK,UAAU;AACjB,iBAAK,YAAY,KAAK;AAAA;AAEtB,iBAAK,YAAY,KAAK,KAAK,OAAO,CAAC,EAAE;AAAA,QACzC;AACA,eAAO,KAAK,OAAO,MAAM;AAAA,MAC3B;AAAA,MAEA,CAAC,KAAK,EAAG,SAAS;AAChB,WAAG;AAAA,QAAC,SAAS,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,CAAC;AAEjD,YAAI,CAAC,WAAW,CAAC,KAAK,OAAO,UAAU,CAAC,KAAK,GAAG;AAC9C,eAAK,KAAK,OAAO;AAAA,MACrB;AAAA,MAEA,CAAC,UAAU,EAAG,OAAO;AACnB,eAAO,SAAS,KAAK,KAAK,QAAQ,KAAK,GAAG,KAAK,WAAW;AAAA,MAC5D;AAAA,MAEA,KAAM,MAAM,MAAM;AAChB,YAAI,KAAK,SAAS;AAChB;AAEF,cAAM,QAAQ,KAAK,WAAW;AAC9B,eAAO,QAAQ,CAAC;AAChB,YAAI,SAAS,KAAK,UAAU,SAAS,KAAK;AACxC,eAAK,MAAM;AAAA;AAEX,eAAK,MAAM,KAAK,QAAQ;AAC1B,aAAK,cAAc,CAAC,CAAC,KAAK;AAG1B,YAAI,OAAO;AACT,cAAI,KAAK;AACP,iBAAK,IAAI;AAAA,QACb,OAAO;AACL,eAAK,MAAM,KAAK,CAAC,KAAK,cAAc,IAAI,KAAK,MAAM,MAAM,IAAI,IACzD,IAAI,gBAAgB,MAAM,MAAM,IAAI,CAAC;AACzC,cAAI,KAAK,KAAK;AACZ,kBAAM,MAAM,KAAK,MAAM,EAAE,CAAC;AAAA;AAE1B,iBAAK,MAAM,EAAE;AAAA,QACjB;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,OAAQ,MAAM;AACZ,cAAM,IAAI,KAAK,MAAM,KAAK,CAAAC,OAAKA,GAAE,SAAS,IAAI;AAC9C,YAAI,GAAG;AACL,eAAK,MAAM,OAAO,KAAK,MAAM,QAAQ,CAAC,GAAG,CAAC;AAC1C,YAAE,OAAO;AAAA,QACX;AAAA,MACF;AAAA,MAEA,YAAa,IAAI,IAAI;AACnB,eAAO,KAAK,GAAG,IAAI,EAAE;AAAA,MACvB;AAAA,MAEA,GAAI,IAAI,IAAI;AACV,cAAM,MAAM,MAAM,GAAG,IAAI,EAAE;AAC3B,YAAI,OAAO,UAAU,CAAC,KAAK,MAAM,UAAU,CAAC,KAAK;AAC/C,eAAK,MAAM,EAAE;AAAA,iBACN,OAAO,cAAc,KAAK,YAAY,MAAM;AACnD,gBAAM,KAAK,UAAU;AAAA,iBACd,SAAS,EAAE,KAAK,KAAK,WAAW,GAAG;AAC1C,gBAAM,KAAK,EAAE;AACb,eAAK,mBAAmB,EAAE;AAAA,QAC5B,WAAW,OAAO,WAAW,KAAK,aAAa,GAAG;AAChD,cAAI,KAAK,KAAK;AACZ,kBAAM,MAAM,GAAG,KAAK,MAAM,KAAK,aAAa,CAAC,CAAC;AAAA;AAE9C,eAAG,KAAK,MAAM,KAAK,aAAa,CAAC;AAAA,QACrC;AACA,eAAO;AAAA,MACT;AAAA,MAEA,IAAI,aAAc;AAChB,eAAO,KAAK,WAAW;AAAA,MACzB;AAAA,MAEA,CAAC,cAAc,IAAK;AAClB,YAAI,CAAC,KAAK,YAAY,KAClB,CAAC,KAAK,WAAW,KACjB,CAAC,KAAK,SAAS,KACf,KAAK,OAAO,WAAW,KACvB,KAAK,GAAG,GAAG;AACb,eAAK,YAAY,IAAI;AACrB,eAAK,KAAK,KAAK;AACf,eAAK,KAAK,WAAW;AACrB,eAAK,KAAK,QAAQ;AAClB,cAAI,KAAK,MAAM;AACb,iBAAK,KAAK,OAAO;AACnB,eAAK,YAAY,IAAI;AAAA,QACvB;AAAA,MACF;AAAA,MAEA,KAAM,IAAI,SAAS,OAAO;AAExB,YAAI,OAAO,WAAW,OAAO,WAAW,OAAO,aAAa,KAAK,SAAS;AACxE;AAAA,iBACO,OAAO,QAAQ;AACtB,iBAAO,CAAC,OAAO,QACX,KAAK,KAAK,IAAI,MAAM,MAAM,KAAK,QAAQ,EAAE,IAAI,CAAC,IAC9C,KAAK,QAAQ,EAAE,IAAI;AAAA,QACzB,WAAW,OAAO,OAAO;AACvB,iBAAO,KAAK,OAAO,EAAE;AAAA,QACvB,WAAW,OAAO,SAAS;AACzB,eAAK,MAAM,IAAI;AAEf,cAAI,CAAC,KAAK,WAAW,KAAK,CAAC,KAAK,SAAS;AACvC;AACF,gBAAMC,OAAM,MAAM,KAAK,OAAO;AAC9B,eAAK,mBAAmB,OAAO;AAC/B,iBAAOA;AAAA,QACT,WAAW,OAAO,SAAS;AACzB,eAAK,aAAa,IAAI;AACtB,gBAAMA,OAAM,MAAM,KAAK,SAAS,IAAI;AACpC,eAAK,cAAc,EAAE;AACrB,iBAAOA;AAAA,QACT,WAAW,OAAO,UAAU;AAC1B,gBAAMA,OAAM,MAAM,KAAK,QAAQ;AAC/B,eAAK,cAAc,EAAE;AACrB,iBAAOA;AAAA,QACT,WAAW,OAAO,YAAY,OAAO,aAAa;AAChD,gBAAMA,OAAM,MAAM,KAAK,EAAE;AACzB,eAAK,mBAAmB,EAAE;AAC1B,iBAAOA;AAAA,QACT;AAGA,cAAM,MAAM,MAAM,KAAK,IAAI,MAAM,GAAG,KAAK;AACzC,aAAK,cAAc,EAAE;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,QAAQ,EAAG,MAAM;AAChB,mBAAW,KAAK,KAAK,OAAO;AAC1B,cAAI,EAAE,KAAK,MAAM,IAAI,MAAM;AACzB,iBAAK,MAAM;AAAA,QACf;AACA,cAAM,MAAM,MAAM,KAAK,QAAQ,IAAI;AACnC,aAAK,cAAc,EAAE;AACrB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,YAAI,KAAK,WAAW;AAClB;AAEF,aAAK,WAAW,IAAI;AACpB,aAAK,WAAW;AAChB,YAAI,KAAK,KAAK;AACZ,gBAAM,MAAM,KAAK,QAAQ,EAAE,CAAC;AAAA;AAE5B,eAAK,QAAQ,EAAE;AAAA,MACnB;AAAA,MAEA,CAAC,QAAQ,IAAK;AACZ,YAAI,KAAK,OAAO,GAAG;AACjB,gBAAM,OAAO,KAAK,OAAO,EAAE,IAAI;AAC/B,cAAI,MAAM;AACR,uBAAW,KAAK,KAAK,OAAO;AAC1B,gBAAE,KAAK,MAAM,IAAI;AAAA,YACnB;AACA,kBAAM,KAAK,QAAQ,IAAI;AAAA,UACzB;AAAA,QACF;AAEA,mBAAW,KAAK,KAAK,OAAO;AAC1B,YAAE,IAAI;AAAA,QACR;AACA,cAAM,MAAM,MAAM,KAAK,KAAK;AAC5B,aAAK,mBAAmB,KAAK;AAC7B,eAAO;AAAA,MACT;AAAA;AAAA,MAGA,UAAW;AACT,cAAM,MAAM,CAAC;AACb,YAAI,CAAC,KAAK,UAAU;AAClB,cAAI,aAAa;AAGnB,cAAM,IAAI,KAAK,QAAQ;AACvB,aAAK,GAAG,QAAQ,OAAK;AACnB,cAAI,KAAK,CAAC;AACV,cAAI,CAAC,KAAK,UAAU;AAClB,gBAAI,cAAc,EAAE;AAAA,QACxB,CAAC;AACD,eAAO,EAAE,KAAK,MAAM,GAAG;AAAA,MACzB;AAAA;AAAA,MAGA,SAAU;AACR,eAAO,KAAK,UAAU,IAClB,QAAQ,OAAO,IAAI,MAAM,6BAA6B,CAAC,IACvD,KAAK,QAAQ,EAAE,KAAK,SAClB,KAAK,UAAU,IACX,QAAQ,OAAO,IAAI,MAAM,6BAA6B,CAAC,IACvD,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,IAAI,OAAO,OAAO,KAAK,IAAI,UAAU,CAAC;AAAA,MAC9E;AAAA;AAAA,MAGA,UAAW;AACT,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,eAAK,GAAG,WAAW,MAAM,OAAO,IAAI,MAAM,kBAAkB,CAAC,CAAC;AAC9D,eAAK,GAAG,SAAS,QAAM,OAAO,EAAE,CAAC;AACjC,eAAK,GAAG,OAAO,MAAM,QAAQ,CAAC;AAAA,QAChC,CAAC;AAAA,MACH;AAAA;AAAA,MAGA,CAAC,aAAa,IAAK;AACjB,cAAM,OAAO,MAAM;AACjB,gBAAM,MAAM,KAAK,KAAK;AACtB,cAAI,QAAQ;AACV,mBAAO,QAAQ,QAAQ,EAAE,MAAM,OAAO,OAAO,IAAI,CAAC;AAEpD,cAAI,KAAK,GAAG;AACV,mBAAO,QAAQ,QAAQ,EAAE,MAAM,KAAK,CAAC;AAEvC,cAAI,UAAU;AACd,cAAI,SAAS;AACb,gBAAM,QAAQ,QAAM;AAClB,iBAAK,eAAe,QAAQ,MAAM;AAClC,iBAAK,eAAe,OAAO,KAAK;AAChC,mBAAO,EAAE;AAAA,UACX;AACA,gBAAM,SAAS,WAAS;AACtB,iBAAK,eAAe,SAAS,KAAK;AAClC,iBAAK,eAAe,OAAO,KAAK;AAChC,iBAAK,MAAM;AACX,oBAAQ,EAAE,OAAc,MAAM,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AAAA,UAC7C;AACA,gBAAM,QAAQ,MAAM;AAClB,iBAAK,eAAe,SAAS,KAAK;AAClC,iBAAK,eAAe,QAAQ,MAAM;AAClC,oBAAQ,EAAE,MAAM,KAAK,CAAC;AAAA,UACxB;AACA,gBAAM,YAAY,MAAM,MAAM,IAAI,MAAM,kBAAkB,CAAC;AAC3D,iBAAO,IAAI,QAAQ,CAACC,MAAK,QAAQ;AAC/B,qBAAS;AACT,sBAAUA;AACV,iBAAK,KAAK,WAAW,SAAS;AAC9B,iBAAK,KAAK,SAAS,KAAK;AACxB,iBAAK,KAAK,OAAO,KAAK;AACtB,iBAAK,KAAK,QAAQ,MAAM;AAAA,UAC1B,CAAC;AAAA,QACH;AAEA,eAAO,EAAE,KAAK;AAAA,MAChB;AAAA;AAAA,MAGA,CAAC,QAAQ,IAAK;AACZ,cAAM,OAAO,MAAM;AACjB,gBAAM,QAAQ,KAAK,KAAK;AACxB,gBAAM,OAAO,UAAU;AACvB,iBAAO,EAAE,OAAO,KAAK;AAAA,QACvB;AACA,eAAO,EAAE,KAAK;AAAA,MAChB;AAAA,MAEA,QAAS,IAAI;AACX,YAAI,KAAK,SAAS,GAAG;AACnB,cAAI;AACF,iBAAK,KAAK,SAAS,EAAE;AAAA;AAErB,iBAAK,KAAK,SAAS;AACrB,iBAAO;AAAA,QACT;AAEA,aAAK,SAAS,IAAI;AAGlB,aAAK,OAAO,SAAS;AACrB,aAAK,YAAY,IAAI;AAErB,YAAI,OAAO,KAAK,UAAU,cAAc,CAAC,KAAK,MAAM;AAClD,eAAK,MAAM;AAEb,YAAI;AACF,eAAK,KAAK,SAAS,EAAE;AAAA;AAErB,eAAK,KAAK,SAAS;AAErB,eAAO;AAAA,MACT;AAAA,MAEA,OAAO,SAAU,GAAG;AAClB,eAAO,CAAC,CAAC,MAAM,aAAa,YAAY,aAAa,UACnD,aAAa,OACX,OAAO,EAAE,SAAS;AAAA,QACjB,OAAO,EAAE,UAAU,cAAc,OAAO,EAAE,QAAQ;AAAA,MAEzD;AAAA,IACF;AAAA;AAAA;;;ACxoBA;AAAA;AAAA;AAEA,QAAM,SAAS,UAAQ,QAAQ;AAC/B,QAAMC,UAAS,UAAQ,QAAQ,EAAE;AACjC,QAAM,WAAW,UAAQ,MAAM;AAE/B,QAAMC,aAAY,QAAQ,YAAY;AACtC,QAAM,WAAW;AAEjB,QAAM,uBAAuBD,QAAO;AAEpC,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,YAAN,cAAwB,MAAM;AAAA,MAC5B,YAAa,KAAK;AAChB,cAAM,WAAW,IAAI,OAAO;AAC5B,aAAK,OAAO,IAAI;AAChB,aAAK,QAAQ,IAAI;AAEjB,YAAI,CAAC,KAAK;AACR,eAAK,OAAO;AAEd,aAAK,UAAU,WAAW,IAAI;AAC9B,cAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,MAChD;AAAA,MAEA,IAAI,OAAQ;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAMA,QAAM,QAAQ,OAAO,MAAM;AAC3B,QAAM,aAAa,OAAO,WAAW;AACrC,QAAM,mBAAmB,OAAO,iBAAiB;AACjD,QAAM,iBAAiB,OAAO,eAAe;AAC7C,QAAM,UAAU,OAAO,QAAQ;AAC/B,QAAM,WAAW,OAAO,SAAS;AACjC,QAAM,YAAY,OAAO,UAAU;AACnC,QAAM,SAAS,OAAO,OAAO;AAC7B,QAAM,YAAY,OAAO,UAAU;AACnC,QAAM,SAAS,OAAO,OAAO;AAC7B,QAAM,oBAAoB,OAAO,mBAAmB;AAEpD,QAAM,WAAN,cAAuB,SAAS;AAAA,MAC9B,YAAa,MAAM,MAAM;AACvB,YAAI,CAAC,QAAQ,OAAO,SAAS;AAC3B,gBAAM,IAAI,UAAU,0CAA0C;AAEhE,cAAM,IAAI;AACV,aAAK,SAAS,IAAI;AAClB,aAAK,MAAM,IAAI;AACf,aAAK,KAAK,IAAI;AAEd,aAAK,UAAU,IAAI,KAAK;AACxB,aAAK,gBAAgB,IAAI,KAAK;AAE9B,YAAI;AACF,eAAK,OAAO,IAAI,IAAI,SAAS,IAAI,EAAE,IAAI;AAAA,QACzC,SAAS,IAAI;AAEX,gBAAM,IAAI,UAAU,EAAE;AAAA,QACxB;AAEA,aAAK,QAAQ,IAAI,CAAC,QAAQ;AAExB,cAAI,KAAK,SAAS;AAChB;AAEF,eAAK,SAAS,IAAI;AAIlB,eAAK,MAAM;AACX,eAAK,KAAK,SAAS,GAAG;AAAA,QACxB;AAEA,aAAK,OAAO,EAAE,GAAG,SAAS,QAAM,KAAK,QAAQ,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;AACjE,aAAK,KAAK,OAAO,MAAM,KAAK,KAAK;AAAA,MACnC;AAAA,MAEA,QAAS;AACP,YAAI,KAAK,OAAO,GAAG;AACjB,eAAK,OAAO,EAAE,MAAM;AACpB,eAAK,OAAO,IAAI;AAChB,eAAK,KAAK,OAAO;AAAA,QACnB;AAAA,MACF;AAAA,MAEA,QAAS;AACP,YAAI,CAAC,KAAK,SAAS,GAAG;AACpB,iBAAO,KAAK,OAAO,GAAG,qBAAqB;AAC3C,iBAAO,KAAK,OAAO,EAAE,MAAM;AAAA,QAC7B;AAAA,MACF;AAAA,MAEA,MAAO,WAAW;AAChB,YAAI,KAAK;AACP;AAEF,YAAI,OAAO,cAAc;AACvB,sBAAY,KAAK,cAAc;AACjC,aAAK,MAAM,OAAO,OAAOA,QAAO,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;AAAA,MACxE;AAAA,MAEA,IAAK,OAAO,UAAU,IAAI;AACxB,YAAI;AACF,eAAK,MAAM,OAAO,QAAQ;AAC5B,aAAK,MAAM,KAAK,gBAAgB,CAAC;AACjC,aAAK,MAAM,IAAI;AACf,eAAO,MAAM,IAAI,MAAM,MAAM,EAAE;AAAA,MACjC;AAAA,MAEA,IAAI,QAAS;AACX,eAAO,KAAK,MAAM;AAAA,MACpB;AAAA,MAEA,MAAO,OAAO,UAAU,IAAI;AAG1B,YAAI,OAAO,aAAa;AACtB,eAAK,UAAU,WAAW;AAE5B,YAAI,OAAO,UAAU;AACnB,kBAAQA,QAAO,KAAK,OAAO,QAAQ;AAErC,YAAI,KAAK,SAAS;AAChB;AACF,eAAO,KAAK,OAAO,GAAG,qBAAqB;AAI3C,cAAM,eAAe,KAAK,OAAO,EAAE;AACnC,cAAM,sBAAsB,aAAa;AACzC,qBAAa,QAAQ,MAAM;AAAA,QAAC;AAC5B,cAAM,gBAAgB,KAAK,OAAO,EAAE;AACpC,aAAK,OAAO,EAAE,QAAQ,MAAM;AAAA,QAAC;AAG7B,QAAAA,QAAO,SAAS,CAAC,SAAS;AAC1B,YAAI;AACJ,YAAI;AACF,gBAAM,YAAY,OAAO,MAAM,UAAU,MAAM,WAC3C,MAAM,UAAU,IAAI,KAAK,UAAU;AACvC,mBAAS,KAAK,OAAO,EAAE,cAAc,OAAO,SAAS;AAErD,UAAAA,QAAO,SAAS;AAAA,QAClB,SAAS,KAAK;AAGZ,UAAAA,QAAO,SAAS;AAChB,eAAK,QAAQ,EAAE,IAAI,UAAU,GAAG,CAAC;AAAA,QACnC,UAAE;AACA,cAAI,KAAK,OAAO,GAAG;AAIjB,iBAAK,OAAO,EAAE,UAAU;AACxB,yBAAa,QAAQ;AACrB,iBAAK,OAAO,EAAE,QAAQ;AAGtB,iBAAK,OAAO,EAAE,mBAAmB,OAAO;AAAA,UAE1C;AAAA,QACF;AAEA,YAAI,KAAK,OAAO;AACd,eAAK,OAAO,EAAE,GAAG,SAAS,QAAM,KAAK,QAAQ,EAAE,IAAI,UAAU,EAAE,CAAC,CAAC;AAEnE,YAAI;AACJ,YAAI,QAAQ;AACV,cAAI,MAAM,QAAQ,MAAM,KAAK,OAAO,SAAS,GAAG;AAG9C,0BAAc,KAAK,WAAW,EAAEA,QAAO,KAAK,OAAO,CAAC,CAAC,CAAC;AACtD,qBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,4BAAc,KAAK,WAAW,EAAE,OAAO,CAAC,CAAC;AAAA,YAC3C;AAAA,UACF,OAAO;AACL,0BAAc,KAAK,WAAW,EAAEA,QAAO,KAAK,MAAM,CAAC;AAAA,UACrD;AAAA,QACF;AAEA,YAAI;AACF,aAAG;AACL,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,WAAW,EAAG,MAAM;AACnB,eAAO,MAAM,MAAM,IAAI;AAAA,MACzB;AAAA,IACF;AAEA,QAAM,OAAN,cAAmB,SAAS;AAAA,MAC1B,YAAa,MAAM,MAAM;AACvB,eAAO,QAAQ,CAAC;AAEhB,aAAK,QAAQ,KAAK,SAASC,WAAU;AACrC,aAAK,cAAc,KAAK,eAAeA,WAAU;AACjD,cAAM,MAAM,IAAI;AAEhB,aAAK,cAAc,IAAIA,WAAU;AACjC,aAAK,MAAM,IAAI,KAAK;AACpB,aAAK,SAAS,IAAI,KAAK;AAAA,MACzB;AAAA,MAEA,OAAQ,OAAO,UAAU;AACvB,YAAI,KAAK,SAAS;AAChB;AAEF,YAAI,CAAC,KAAK,OAAO;AACf,gBAAM,IAAI,MAAM,6CAA6C;AAI/D,YAAI,CAAC,KAAK,OAAO,EAAE;AACjB,gBAAM,IAAI,MAAM,sCAAsC;AAExD,YAAI,KAAK,MAAM,MAAM,SAAS,KAAK,SAAS,MAAM,UAAU;AAC1D,eAAK,MAAMA,WAAU,YAAY;AACjC,iBAAO,KAAK,OAAO,GAAG,qBAAqB;AAI3C,gBAAM,YAAY,KAAK,OAAO,EAAE;AAChC,eAAK,OAAO,EAAE,QAAQ,CAAC,WAAW,OAAO;AACvC,iBAAK,MAAM,SAAS;AACpB,eAAG;AAAA,UACL;AACA,cAAI;AACF,iBAAK,OAAO,EAAE,OAAO,OAAO,QAAQ;AAAA,UACtC,UAAE;AACA,iBAAK,OAAO,EAAE,QAAQ;AAAA,UACxB;AAEA,cAAI,KAAK,OAAO,GAAG;AACjB,iBAAK,MAAM,IAAI;AACf,iBAAK,SAAS,IAAI;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,QAAM,UAAN,cAAsB,KAAK;AAAA,MACzB,YAAa,MAAM;AACjB,cAAM,MAAM,SAAS;AAAA,MACvB;AAAA,IACF;AAEA,QAAM,UAAN,cAAsB,KAAK;AAAA,MACzB,YAAa,MAAM;AACjB,cAAM,MAAM,SAAS;AAAA,MACvB;AAAA,IACF;AAGA,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,OAAN,cAAmB,KAAK;AAAA,MACtB,YAAa,MAAM;AACjB,cAAM,MAAM,MAAM;AAClB,aAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,KAAK;AAAA,MACnC;AAAA,MAEA,CAAC,WAAW,EAAG,MAAM;AACnB,YAAI,CAAC,KAAK,SAAS;AACjB,iBAAO,MAAM,WAAW,EAAE,IAAI;AAIhC,aAAK,SAAS,IAAI;AAClB,aAAK,CAAC,IAAI;AACV,eAAO,MAAM,WAAW,EAAE,IAAI;AAAA,MAChC;AAAA,IACF;AAEA,QAAM,SAAN,cAAqB,KAAK;AAAA,MACxB,YAAa,MAAM;AACjB,cAAM,MAAM,QAAQ;AAAA,MACtB;AAAA,IACF;AAGA,QAAM,aAAN,cAAyB,KAAK;AAAA,MAC5B,YAAa,MAAM;AACjB,cAAM,MAAM,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,QAAM,aAAN,cAAyB,KAAK;AAAA,MAC5B,YAAa,MAAM;AACjB,cAAM,MAAM,YAAY;AAAA,MAC1B;AAAA,IACF;AAGA,QAAM,QAAN,cAAoB,KAAK;AAAA,MACvB,YAAa,MAAM;AACjB,cAAM,MAAM,OAAO;AAAA,MACrB;AAAA,IACF;AAEA,QAAM,SAAN,cAAqB,SAAS;AAAA,MAC5B,YAAa,MAAM,MAAM;AACvB,eAAO,QAAQ,CAAC;AAEhB,aAAK,QAAQ,KAAK,SAASA,WAAU;AACrC,aAAK,cAAc,KAAK,eAAeA,WAAU;AAEjD,cAAM,MAAM,IAAI;AAEhB,aAAK,cAAc,IAAIA,WAAU;AAAA,MACnC;AAAA,IACF;AAEA,QAAM,iBAAN,cAA6B,OAAO;AAAA,MAClC,YAAa,MAAM;AACjB,cAAM,MAAM,gBAAgB;AAAA,MAC9B;AAAA,IACF;AAEA,QAAM,mBAAN,cAA+B,OAAO;AAAA,MACpC,YAAa,MAAM;AACjB,cAAM,MAAM,kBAAkB;AAAA,MAChC;AAAA,IACF;AAEA,YAAQ,UAAU;AAClB,YAAQ,UAAU;AAClB,YAAQ,OAAO;AACf,YAAQ,SAAS;AACjB,YAAQ,aAAa;AACrB,YAAQ,aAAa;AACrB,YAAQ,QAAQ;AAEhB,QAAI,OAAO,SAAS,mBAAmB,YAAY;AACjD,cAAQ,iBAAiB;AACzB,cAAQ,mBAAmB;AAAA,IAC7B,OAAO;AACL,cAAQ,iBAAiB,QAAQ,mBAAmB,MAAM;AAAA,QACxD,cAAe;AACb,gBAAM,IAAI,MAAM,oDAAoD;AAAA,QACtE;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC3VA;AAAA;AAKA,QAAM,WAAW,QAAQ,IAAI,6BAA6B,QAAQ;AAClE,WAAO,UAAU,aAAa,UAAU,OAAK,IACzC,OAAK,KAAK,EAAE,QAAQ,OAAO,GAAG;AAAA;AAAA;;;ACPlC;AAAA;AAAA;AACA,QAAM,EAAE,SAAS,IAAI;AACrB,QAAM,WAAW;AAEjB,QAAM,QAAQ,OAAO,OAAO;AAC5B,WAAO,UAAU,MAAM,kBAAkB,SAAS;AAAA,MAChD,YAAa,QAAQ,IAAI,KAAK;AAC5B,cAAM;AAIN,aAAK,MAAM;AACX,aAAK,WAAW;AAChB,aAAK,iBAAiB;AACtB,aAAK,SAAS;AACd,aAAK,iBAAiB,MAAM,KAAK,KAAK,OAAO,OAAO,GAAG;AACvD,aAAK,cAAc,KAAK;AACxB,aAAK,SAAS,OAAO;AACrB,aAAK,OAAO,OAAO;AACnB,aAAK,OAAO;AACZ,aAAK,SAAS;AACd,gBAAQ,KAAK,MAAM;AAAA,UACjB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH;AAAA,UAEF,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,iBAAK,OAAO;AACZ;AAAA,UAIF;AACE,iBAAK,SAAS;AAAA,QAClB;AAEA,aAAK,OAAO,SAAS,OAAO,IAAI;AAChC,aAAK,OAAO,OAAO;AACnB,YAAI,KAAK,MAAM;AACb,eAAK,OAAO,KAAK,OAAO;AAAA,QAC1B;AACA,aAAK,MAAM,OAAO;AAClB,aAAK,MAAM,OAAO;AAClB,aAAK,QAAQ,OAAO;AACpB,aAAK,QAAQ,OAAO;AACpB,aAAK,OAAO,OAAO;AACnB,aAAK,QAAQ,OAAO;AACpB,aAAK,QAAQ,OAAO;AACpB,aAAK,QAAQ,OAAO;AACpB,aAAK,WAAW,SAAS,OAAO,QAAQ;AACxC,aAAK,QAAQ,OAAO;AACpB,aAAK,QAAQ,OAAO;AAEpB,YAAI,IAAI;AACN,eAAK,KAAK,EAAE,EAAE;AAAA,QAChB;AACA,YAAI,KAAK;AACP,eAAK,KAAK,EAAE,KAAK,IAAI;AAAA,QACvB;AAAA,MACF;AAAA,MAEA,MAAO,MAAM;AACX,cAAM,WAAW,KAAK;AACtB,YAAI,WAAW,KAAK,aAAa;AAC/B,gBAAM,IAAI,MAAM,2CAA2C;AAAA,QAC7D;AAEA,cAAM,IAAI,KAAK;AACf,cAAM,KAAK,KAAK;AAChB,aAAK,SAAS,KAAK,IAAI,GAAG,IAAI,QAAQ;AACtC,aAAK,cAAc,KAAK,IAAI,GAAG,KAAK,QAAQ;AAC5C,YAAI,KAAK,QAAQ;AACf,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,UAAU;AACjB,iBAAO,MAAM,MAAM,IAAI;AAAA,QACzB;AAGA,eAAO,MAAM,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC;AAAA,MACrC;AAAA,MAEA,CAAC,KAAK,EAAG,IAAIC,SAAQ;AACnB,mBAAW,KAAK,IAAI;AAGlB,cAAI,GAAG,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAM,UAC5B,EAAEA,WAAU,MAAM,SAAS;AAC7B,iBAAK,CAAC,IAAI,MAAM,UAAU,MAAM,aAAa,SAAS,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;AAAA,UACrE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;AC1GA;AAAA;AAAA;AAEA,YAAQ,OAAO,oBAAI,IAAI;AAAA,MACrB,CAAC,KAAK,MAAM;AAAA;AAAA,MAEZ,CAAC,IAAI,SAAS;AAAA,MACd,CAAC,KAAK,MAAM;AAAA,MACZ,CAAC,KAAK,cAAc;AAAA;AAAA;AAAA,MAGpB,CAAC,KAAK,iBAAiB;AAAA,MACvB,CAAC,KAAK,aAAa;AAAA,MACnB,CAAC,KAAK,WAAW;AAAA,MACjB,CAAC,KAAK,MAAM;AAAA;AAAA,MAEZ,CAAC,KAAK,gBAAgB;AAAA;AAAA,MAEtB,CAAC,KAAK,sBAAsB;AAAA,MAC5B,CAAC,KAAK,gBAAgB;AAAA;AAAA;AAAA,MAGtB,CAAC,KAAK,YAAY;AAAA;AAAA,MAElB,CAAC,KAAK,YAAY;AAAA;AAAA,MAElB,CAAC,KAAK,OAAO;AAAA;AAAA,MAEb,CAAC,KAAK,yBAAyB;AAAA;AAAA,MAE/B,CAAC,KAAK,qBAAqB;AAAA;AAAA,MAE3B,CAAC,KAAK,kBAAkB;AAAA;AAAA,MAExB,CAAC,KAAK,gBAAgB;AAAA;AAAA,MAEtB,CAAC,KAAK,YAAY;AAAA;AAAA,MAElB,CAAC,KAAK,kBAAkB;AAAA;AAAA,MAExB,CAAC,KAAK,mBAAmB;AAAA,IAC3B,CAAC;AAGD,YAAQ,OAAO,IAAI,IAAI,MAAM,KAAK,QAAQ,IAAI,EAAE,IAAI,QAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAAA;AAAA;;;AC3CzE;AAAA;AAAA;AAIA,QAAM,SAAS,CAAC,KAAK,QAAQ;AAC3B,UAAI,CAAC,OAAO,cAAc,GAAG,GAAG;AAG9B,cAAM,MAAM,+DAA+D;AAAA,MAC7E,WAAW,MAAM,GAAG;AAClB,uBAAe,KAAK,GAAG;AAAA,MACzB,OAAO;AACL,uBAAe,KAAK,GAAG;AAAA,MACzB;AACA,aAAO;AAAA,IACT;AAEA,QAAM,iBAAiB,CAAC,KAAK,QAAQ;AACnC,UAAI,CAAC,IAAI;AAET,eAAS,IAAI,IAAI,QAAQ,IAAI,GAAG,KAAK;AACnC,YAAI,IAAI,CAAC,IAAI,MAAM;AACnB,cAAM,KAAK,MAAM,MAAM,GAAK;AAAA,MAC9B;AAAA,IACF;AAEA,QAAM,iBAAiB,CAAC,KAAK,QAAQ;AACnC,UAAI,CAAC,IAAI;AACT,UAAI,UAAU;AACd,YAAM,MAAM;AACZ,eAAS,IAAI,IAAI,QAAQ,IAAI,GAAG,KAAK;AACnC,YAAI,OAAO,MAAM;AACjB,cAAM,KAAK,MAAM,MAAM,GAAK;AAC5B,YAAI,SAAS;AACX,cAAI,IAAI,CAAC,IAAI,SAAS,IAAI;AAAA,QAC5B,WAAW,SAAS,GAAG;AACrB,cAAI,IAAI,CAAC,IAAI;AAAA,QACf,OAAO;AACL,oBAAU;AACV,cAAI,IAAI,CAAC,IAAI,SAAS,IAAI;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAEA,QAAM,QAAQ,CAAC,QAAQ;AACrB,YAAM,MAAM,IAAI,CAAC;AACjB,YAAM,QAAQ,QAAQ,MAAO,IAAI,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,IACrD,QAAQ,MAAO,KAAK,GAAG,IACvB;AACJ,UAAI,UAAU,MAAM;AAClB,cAAM,MAAM,0BAA0B;AAAA,MACxC;AAEA,UAAI,CAAC,OAAO,cAAc,KAAK,GAAG;AAGhC,cAAM,MAAM,wDAAwD;AAAA,MACtE;AAEA,aAAO;AAAA,IACT;AAEA,QAAM,OAAO,CAAC,QAAQ;AACpB,UAAI,MAAM,IAAI;AACd,UAAI,MAAM;AACV,UAAI,UAAU;AACd,eAAS,IAAI,MAAM,GAAG,IAAI,IAAI,KAAK;AACjC,YAAI,OAAO,IAAI,CAAC;AAChB,YAAI;AACJ,YAAI,SAAS;AACX,cAAI,SAAS,IAAI;AAAA,QACnB,WAAW,SAAS,GAAG;AACrB,cAAI;AAAA,QACN,OAAO;AACL,oBAAU;AACV,cAAI,SAAS,IAAI;AAAA,QACnB;AACA,YAAI,MAAM,GAAG;AACX,iBAAO,IAAI,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;AAAA,QACtC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAM,MAAM,CAAC,QAAQ;AACnB,UAAI,MAAM,IAAI;AACd,UAAI,MAAM;AACV,eAAS,IAAI,MAAM,GAAG,IAAI,IAAI,KAAK;AACjC,YAAI,OAAO,IAAI,CAAC;AAChB,YAAI,SAAS,GAAG;AACd,iBAAO,OAAO,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;AAAA,QACzC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAM,WAAW,WAAS,MAAO,QAAQ;AAEzC,QAAM,WAAW,WAAU,MAAO,QAAQ,IAAK;AAE/C,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,IACF;AAAA;AAAA;;;ACvGA;AAAA;AAAA;AAMA,QAAM,QAAQ;AACd,QAAM,aAAa,UAAQ,MAAM,EAAE;AACnC,QAAM,QAAQ;AAEd,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,OAAO,OAAO,MAAM;AAE1B,QAAM,SAAN,MAAa;AAAA,MACX,YAAa,MAAM,KAAK,IAAI,KAAK;AAC/B,aAAK,aAAa;AAClB,aAAK,UAAU;AACf,aAAK,YAAY;AAEjB,aAAK,QAAQ;AACb,aAAK,OAAO;AACZ,aAAK,OAAO;AACZ,aAAK,MAAM;AACX,aAAK,MAAM;AACX,aAAK,OAAO;AACZ,aAAK,QAAQ;AACb,aAAK,QAAQ;AACb,aAAK,IAAI,IAAI;AACb,aAAK,WAAW;AAChB,aAAK,QAAQ;AACb,aAAK,QAAQ;AACb,aAAK,SAAS;AACd,aAAK,SAAS;AACd,aAAK,QAAQ;AACb,aAAK,QAAQ;AAEb,YAAI,OAAO,SAAS,IAAI,GAAG;AACzB,eAAK,OAAO,MAAM,OAAO,GAAG,IAAI,GAAG;AAAA,QACrC,WAAW,MAAM;AACf,eAAK,IAAI,IAAI;AAAA,QACf;AAAA,MACF;AAAA,MAEA,OAAQ,KAAK,KAAK,IAAI,KAAK;AACzB,YAAI,CAAC,KAAK;AACR,gBAAM;AAAA,QACR;AAEA,YAAI,CAAC,OAAO,EAAE,IAAI,UAAU,MAAM,MAAM;AACtC,gBAAM,IAAI,MAAM,2BAA2B;AAAA,QAC7C;AAEA,aAAK,OAAO,UAAU,KAAK,KAAK,GAAG;AACnC,aAAK,OAAO,UAAU,KAAK,MAAM,KAAK,CAAC;AACvC,aAAK,MAAM,UAAU,KAAK,MAAM,KAAK,CAAC;AACtC,aAAK,MAAM,UAAU,KAAK,MAAM,KAAK,CAAC;AACtC,aAAK,OAAO,UAAU,KAAK,MAAM,KAAK,EAAE;AACxC,aAAK,QAAQ,QAAQ,KAAK,MAAM,KAAK,EAAE;AACvC,aAAK,QAAQ,UAAU,KAAK,MAAM,KAAK,EAAE;AAIzC,aAAK,KAAK,EAAE,EAAE;AACd,aAAK,KAAK,EAAE,KAAK,IAAI;AAGrB,aAAK,IAAI,IAAI,UAAU,KAAK,MAAM,KAAK,CAAC;AACxC,YAAI,KAAK,IAAI,MAAM,IAAI;AACrB,eAAK,IAAI,IAAI;AAAA,QACf;AACA,YAAI,KAAK,IAAI,MAAM,OAAO,KAAK,KAAK,MAAM,EAAE,MAAM,KAAK;AACrD,eAAK,IAAI,IAAI;AAAA,QACf;AAOA,YAAI,KAAK,IAAI,MAAM,KAAK;AACtB,eAAK,OAAO;AAAA,QACd;AAEA,aAAK,WAAW,UAAU,KAAK,MAAM,KAAK,GAAG;AAC7C,YAAI,IAAI,MAAM,MAAM,KAAK,MAAM,GAAG,EAAE,SAAS,MAAM,eAAiB;AAClE,eAAK,QAAQ,UAAU,KAAK,MAAM,KAAK,EAAE;AACzC,eAAK,QAAQ,UAAU,KAAK,MAAM,KAAK,EAAE;AACzC,eAAK,SAAS,UAAU,KAAK,MAAM,KAAK,CAAC;AACzC,eAAK,SAAS,UAAU,KAAK,MAAM,KAAK,CAAC;AACzC,cAAI,IAAI,MAAM,GAAG,MAAM,GAAG;AAExB,kBAAMC,UAAS,UAAU,KAAK,MAAM,KAAK,GAAG;AAC5C,iBAAK,OAAOA,UAAS,MAAM,KAAK;AAAA,UAClC,OAAO;AACL,kBAAMA,UAAS,UAAU,KAAK,MAAM,KAAK,GAAG;AAC5C,gBAAIA,SAAQ;AACV,mBAAK,OAAOA,UAAS,MAAM,KAAK;AAAA,YAClC;AACA,iBAAK,QAAQ,QAAQ,KAAK,MAAM,KAAK,EAAE;AACvC,iBAAK,QAAQ,QAAQ,KAAK,MAAM,KAAK,EAAE;AAAA,UACzC;AAAA,QACF;AAEA,YAAI,MAAM,IAAI;AACd,iBAAS,IAAI,KAAK,IAAI,MAAM,KAAK,KAAK;AACpC,iBAAO,IAAI,CAAC;AAAA,QACd;AAEA,iBAAS,IAAI,MAAM,KAAK,IAAI,MAAM,KAAK,KAAK;AAC1C,iBAAO,IAAI,CAAC;AAAA,QACd;AAEA,aAAK,aAAa,QAAQ,KAAK;AAC/B,YAAI,KAAK,UAAU,QAAQ,QAAQ,IAAI,IAAM;AAC3C,eAAK,YAAY;AAAA,QACnB;AAAA,MACF;AAAA,MAEA,CAAC,KAAK,EAAG,IAAIC,SAAQ;AACnB,mBAAW,KAAK,IAAI;AAGlB,cAAI,GAAG,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAM,UAC5B,EAAEA,WAAU,MAAM,SAAS;AAC7B,iBAAK,CAAC,IAAI,GAAG,CAAC;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,OAAQ,KAAK,KAAK;AAChB,YAAI,CAAC,KAAK;AACR,gBAAM,KAAK,QAAQ,OAAO,MAAM,GAAG;AACnC,gBAAM;AAAA,QACR;AAEA,YAAI,CAAC,KAAK;AACR,gBAAM;AAAA,QACR;AAEA,YAAI,EAAE,IAAI,UAAU,MAAM,MAAM;AAC9B,gBAAM,IAAI,MAAM,2BAA2B;AAAA,QAC7C;AAEA,cAAM,aAAa,KAAK,SAAS,KAAK,QAAQ,MAAM;AACpD,cAAM,QAAQ,YAAY,KAAK,QAAQ,IAAI,UAAU;AACrD,cAAMC,QAAO,MAAM,CAAC;AACpB,cAAMF,UAAS,MAAM,CAAC;AACtB,aAAK,UAAU,MAAM,CAAC;AAEtB,aAAK,UAAU,UAAU,KAAK,KAAK,KAAKE,KAAI,KAAK,KAAK;AACtD,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,KAAK;AAC/D,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK;AAC9D,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK,GAAG,KAAK,KAAK;AAC9D,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK;AAChE,aAAK,UAAU,QAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/D,YAAI,MAAM,GAAG,IAAI,KAAK,IAAI,EAAE,WAAW,CAAC;AACxC,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,KAAK,KAAK,QAAQ,KAAK,KAAK;AACrE,YAAI,MAAM,eAAiB,MAAM,KAAK,CAAC;AACvC,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK;AACjE,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK;AACjE,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK,MAAM,KAAK,KAAK;AACjE,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,GAAG,KAAK,MAAM,KAAK,KAAK;AACjE,aAAK,UAAU,UAAU,KAAK,MAAM,KAAK,YAAYF,OAAM,KAAK,KAAK;AACrE,YAAI,IAAI,MAAM,GAAG,MAAM,GAAG;AACxB,eAAK,UAAU,UAAU,KAAK,MAAM,KAAK,KAAKA,OAAM,KAAK,KAAK;AAAA,QAChE,OAAO;AACL,eAAK,UAAU,UAAU,KAAK,MAAM,KAAK,KAAKA,OAAM,KAAK,KAAK;AAC9D,eAAK,UAAU,QAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/D,eAAK,UAAU,QAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK;AAAA,QACjE;AAEA,YAAI,MAAM,IAAI;AACd,iBAAS,IAAI,KAAK,IAAI,MAAM,KAAK,KAAK;AACpC,iBAAO,IAAI,CAAC;AAAA,QACd;AAEA,iBAAS,IAAI,MAAM,KAAK,IAAI,MAAM,KAAK,KAAK;AAC1C,iBAAO,IAAI,CAAC;AAAA,QACd;AAEA,aAAK,QAAQ;AACb,kBAAU,KAAK,MAAM,KAAK,GAAG,KAAK,KAAK;AACvC,aAAK,aAAa;AAElB,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,IAAK,MAAM;AACT,mBAAW,KAAK,MAAM;AACpB,cAAI,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,QAAW;AAC7C,iBAAK,CAAC,IAAI,KAAK,CAAC;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,OAAQ;AACV,eAAO,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI;AAAA,MAChD;AAAA,MAEA,IAAI,UAAW;AACb,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,MAEA,IAAI,KAAM,MAAM;AACd,YAAI,MAAM,KAAK,IAAI,IAAI,GAAG;AACxB,eAAK,IAAI,IAAI,MAAM,KAAK,IAAI,IAAI;AAAA,QAClC,OAAO;AACL,eAAK,IAAI,IAAI;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAEA,QAAM,cAAc,CAAC,GAAG,eAAe;AACrC,YAAM,WAAW;AACjB,UAAI,KAAK;AACT,UAAIA,UAAS;AACb,UAAI;AACJ,YAAM,OAAO,WAAW,MAAM,CAAC,EAAE,QAAQ;AAEzC,UAAI,OAAO,WAAW,EAAE,IAAI,UAAU;AACpC,cAAM,CAAC,IAAIA,SAAQ,KAAK;AAAA,MAC1B,OAAO;AAEL,QAAAA,UAAS,WAAW,QAAQ,EAAE;AAC9B,aAAK,WAAW,SAAS,EAAE;AAE3B,WAAG;AACD,cAAI,OAAO,WAAW,EAAE,KAAK,YACzB,OAAO,WAAWA,OAAM,KAAK,YAAY;AAE3C,kBAAM,CAAC,IAAIA,SAAQ,KAAK;AAAA,UAC1B,WAAW,OAAO,WAAW,EAAE,IAAI,YAC/B,OAAO,WAAWA,OAAM,KAAK,YAAY;AAE3C,kBAAM,CAAC,GAAG,MAAM,GAAG,WAAW,CAAC,GAAGA,SAAQ,IAAI;AAAA,UAChD,OAAO;AAEL,iBAAK,WAAW,KAAK,WAAW,SAASA,OAAM,GAAG,EAAE;AACpD,YAAAA,UAAS,WAAW,QAAQA,OAAM;AAAA,UACpC;AAAA,QACF,SAASA,YAAW,QAAQ,CAAC;AAG7B,YAAI,CAAC,KAAK;AACR,gBAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI,IAAI;AAAA,QAC3C;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAM,YAAY,CAAC,KAAK,KAAK,SAC3B,IAAI,MAAM,KAAK,MAAM,IAAI,EAAE,SAAS,MAAM,EAAE,QAAQ,QAAQ,EAAE;AAEhE,QAAM,UAAU,CAAC,KAAK,KAAK,SACzB,UAAU,UAAU,KAAK,KAAK,IAAI,CAAC;AAErC,QAAM,YAAY,SAAO,QAAQ,OAAO,OAAO,IAAI,KAAK,MAAM,GAAI;AAElE,QAAM,YAAY,CAAC,KAAK,KAAK,SAC3B,IAAI,GAAG,IAAI,MAAO,MAAM,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,IACtD,eAAe,KAAK,KAAK,IAAI;AAEjC,QAAM,UAAU,WAAS,MAAM,KAAK,IAAI,OAAO;AAE/C,QAAM,iBAAiB,CAAC,KAAK,KAAK,SAChC,QAAQ;AAAA,MACN,IAAI,MAAM,KAAK,MAAM,IAAI,EACtB,SAAS,MAAM,EAAE,QAAQ,SAAS,EAAE,EAAE,KAAK;AAAA,MAAG;AAAA,IAAC,CAAC;AAGvD,QAAM,SAAS;AAAA,MACb,IAAI;AAAA,MACJ,GAAG;AAAA,IACL;AAEA,QAAM,YAAY,CAAC,KAAK,KAAK,MAAM,WACjC,WAAW,OAAO,QAClB,SAAS,OAAO,IAAI,KAAK,SAAS,KAC7B,MAAM,OAAO,QAAQ,IAAI,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,SAClD,eAAe,KAAK,KAAK,MAAM,MAAM,GAAG;AAE/C,QAAM,iBAAiB,CAAC,KAAK,KAAK,MAAM,WACtC,IAAI,MAAM,YAAY,QAAQ,IAAI,GAAG,KAAK,MAAM,OAAO;AAEzD,QAAM,cAAc,CAAC,QAAQ,SAC3B,SAAS,KAAK,MAAM,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;AAE/C,QAAM,WAAW,CAAC,QAAQ,UACvB,OAAO,WAAW,OAAO,IAAI,SAC5B,IAAI,MAAM,OAAO,OAAO,SAAS,CAAC,EAAE,KAAK,GAAG,IAAI,SAAS,OAAO;AAEpE,QAAM,UAAU,CAAC,KAAK,KAAK,MAAM,SAC/B,SAAS,OAAO,QAChB,UAAU,KAAK,KAAK,MAAM,KAAK,QAAQ,IAAI,GAAI;AAGjD,QAAM,QAAQ,IAAI,MAAM,GAAG,EAAE,KAAK,IAAI;AAEtC,QAAM,YAAY,CAAC,KAAK,KAAK,MAAM,WACjC,WAAW,OAAO,SACjB,IAAI,MAAM,SAAS,OAAO,KAAK,MAAM,MAAM,GAC5C,OAAO,WAAW,OAAO,WAAW,MAAM,KAAK,OAAO,SAAS;AAEjE,WAAO,UAAU;AAAA;AAAA;;;AC/SjB;AAAA;AAAA;AACA,QAAM,SAAS;AACf,QAAMG,QAAO,UAAQ,MAAM;AAE3B,QAAM,MAAN,MAAU;AAAA,MACR,YAAa,KAAKC,SAAQ;AACxB,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,UAAU,IAAI,WAAW;AAC9B,aAAK,UAAU,IAAI,WAAW;AAC9B,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,MAAM,IAAI,OAAO;AACtB,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,WAAW,IAAI,YAAY;AAChC,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,MAAM,IAAI,OAAO;AACtB,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,MAAM,IAAI,OAAO;AACtB,aAAK,MAAM,IAAI,OAAO;AACtB,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,SAASA,WAAU;AAAA,MAC1B;AAAA,MAEA,SAAU;AACR,cAAM,OAAO,KAAK,WAAW;AAC7B,YAAI,SAAS,IAAI;AACf,iBAAO;AAAA,QACT;AAEA,cAAM,UAAU,OAAO,WAAW,IAAI;AAGtC,cAAM,SAAS,MAAM,KAAK,KAAK,IAAI,UAAU,GAAG;AAChD,cAAM,MAAM,OAAO,YAAY,MAAM;AAGrC,iBAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,cAAI,CAAC,IAAI;AAAA,QACX;AAEA,YAAI,OAAO;AAAA;AAAA;AAAA;AAAA,UAIT,OAAO,eAAeD,MAAK,SAAS,KAAK,IAAI,GAAG,MAAM,GAAG,EAAE;AAAA,UAC3D,MAAM,KAAK,QAAQ;AAAA,UACnB,KAAK,KAAK,OAAO;AAAA,UACjB,KAAK,KAAK,OAAO;AAAA,UACjB,MAAM;AAAA,UACN,OAAO,KAAK,SAAS;AAAA,UACrB,MAAM,KAAK,SAAS,yBAAyB;AAAA,UAC7C,UAAU;AAAA,UACV,OAAO,KAAK,SAAS;AAAA,UACrB,OAAO,KAAK,SAAS;AAAA,UACrB,QAAQ;AAAA,UACR,QAAQ;AAAA,UACR,OAAO,KAAK,SAAS;AAAA,UACrB,OAAO,KAAK,SAAS;AAAA,QACvB,CAAC,EAAE,OAAO,GAAG;AAEb,YAAI,MAAM,MAAM,KAAK,SAAS,MAAM;AAGpC,iBAAS,IAAI,UAAU,KAAK,IAAI,IAAI,QAAQ,KAAK;AAC/C,cAAI,CAAC,IAAI;AAAA,QACX;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,aAAc;AACZ,eACE,KAAK,YAAY,MAAM,IACvB,KAAK,YAAY,OAAO,IACxB,KAAK,YAAY,OAAO,IACxB,KAAK,YAAY,KAAK,IACtB,KAAK,YAAY,KAAK,IACtB,KAAK,YAAY,OAAO,IACxB,KAAK,YAAY,SAAS,IAC1B,KAAK,YAAY,SAAS,IAC1B,KAAK,YAAY,KAAK,IACtB,KAAK,YAAY,OAAO,IACxB,KAAK,YAAY,UAAU,IAC3B,KAAK,YAAY,OAAO,IACxB,KAAK,YAAY,MAAM,IACvB,KAAK,YAAY,KAAK,IACtB,KAAK,YAAY,OAAO;AAAA,MAE5B;AAAA,MAEA,YAAa,OAAO;AAClB,YAAI,KAAK,KAAK,MAAM,QAAQ,KAAK,KAAK,MAAM,QAAW;AACrD,iBAAO;AAAA,QACT;AACA,cAAM,IAAI,KAAK,KAAK,aAAa,OAAO,KAAK,KAAK,EAAE,QAAQ,IAAI,MAC5D,KAAK,KAAK;AACd,cAAM,IAAI,OACP,UAAU,SAAS,UAAU,SAAS,UAAU,UAC7C,YAAY,MAChB,QAAQ,MAAM,IAAI;AACpB,cAAM,UAAU,OAAO,WAAW,CAAC;AAInC,YAAI,SAAS,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI;AAC5D,YAAI,UAAU,UAAU,KAAK,IAAI,IAAI,MAAM,GAAG;AAC5C,oBAAU;AAAA,QACZ;AACA,cAAM,MAAM,SAAS;AACrB,eAAO,MAAM;AAAA,MACf;AAAA,IACF;AAEA,QAAI,QAAQ,CAAC,QAAQ,IAAI,MAAM,IAAI,IAAI,MAAM,QAAQ,MAAM,GAAG,EAAE,GAAG,CAAC;AAEpE,QAAM,QAAQ,CAAC,GAAG,MAChB,IAAI,OAAO,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI;AAE7D,QAAM,UAAU,YACd,OACG,QAAQ,OAAO,EAAE,EACjB,MAAM,IAAI,EACV,OAAO,aAAa,uBAAO,OAAO,IAAI,CAAC;AAE5C,QAAM,cAAc,CAAC,KAAK,SAAS;AACjC,YAAM,IAAI,SAAS,MAAM,EAAE;AAI3B,UAAI,MAAM,OAAO,WAAW,IAAI,IAAI,GAAG;AACrC,eAAO;AAAA,MACT;AAEA,aAAO,KAAK,OAAO,IAAI,KAAK,MAAM;AAClC,YAAM,KAAK,KAAK,MAAM,GAAG;AACzB,YAAM,IAAI,GAAG,MAAM,EAAE,QAAQ,4BAA4B,IAAI;AAC7D,UAAI,CAAC,GAAG;AACN,eAAO;AAAA,MACT;AAEA,YAAM,IAAI,GAAG,KAAK,GAAG;AACrB,UAAI,CAAC,IAAI,0CAA0C,KAAK,CAAC,IACrD,IAAI,KAAK,IAAI,GAAI,IACjB,WAAW,KAAK,CAAC,IAAI,CAAC,IACtB;AACJ,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACrJjB;AAAA;AAIA,WAAO,UAAU,SAAO;AACtB,UAAI,IAAI,IAAI,SAAS;AACrB,UAAI,eAAe;AACnB,aAAO,IAAI,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK;AACtC,uBAAe;AACf;AAAA,MACF;AACA,aAAO,iBAAiB,KAAK,MAAM,IAAI,MAAM,GAAG,YAAY;AAAA,IAC9D;AAAA;AAAA;;;ACZA;AAAA;AAAA;AACA,WAAO,UAAU,UAAQ,cAAc,KAAK;AAAA,MAC1C,KAAM,MAAM,SAAS,OAAO,CAAC,GAAG;AAC9B,YAAI,KAAK,MAAM;AACb,eAAK,OAAO,KAAK;AAAA,QACnB;AACA,YAAI,KAAK,KAAK;AACZ,eAAK,MAAM,KAAK;AAAA,QAClB;AACA,aAAK,OAAO,mBAAmB,SAAS,QAAQ,QAAQ;AACxD,aAAK,UAAU;AACf,YAAI,CAAC,KAAK,UAAU,KAAK,gBAAgB,OAAO;AAC9C,cAAI,mBAAmB,OAAO;AAC5B,mBAAO,OAAO,OAAO,SAAS,IAAI;AAClC,sBAAU,QAAQ;AAAA,UACpB;AACA,eAAK,KAAK,QAAQ,KAAK,SAAS,SAAS,IAAI;AAAA,QAC/C,WAAW,mBAAmB,OAAO;AACnC,eAAK,KAAK,SAAS,OAAO,OAAO,SAAS,IAAI,CAAC;AAAA,QACjD,OAAO;AACL,eAAK,KAAK,SAAS,OAAO,OAAO,IAAI,MAAM,GAAG,IAAI,KAAK,OAAO,EAAE,GAAG,IAAI,CAAC;AAAA,QAC1E;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACvBA;AAAA;AAAA;AAKA,QAAM,MAAM;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAM,MAAM,IAAI,IAAI,UAClB,OAAO,aAAa,QAAS,KAAK,WAAW,CAAC,CAAC,CAAC;AAElD,QAAM,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAM,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;AAE1D,WAAO,UAAU;AAAA,MACf,QAAQ,OAAK,IAAI,OAAO,CAACE,IAAG,MAAMA,GAAE,MAAM,CAAC,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;AAAA,MAClE,QAAQ,OAAK,IAAI,OAAO,CAACA,IAAG,MAAMA,GAAE,MAAM,CAAC,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;AAAA,IACpE;AAAA;AAAA;;;ACtBA;AAAA;AACA,QAAM,EAAE,YAAY,MAAM,IAAI,UAAQ,MAAM,EAAE;AAQ9C,WAAO,UAAU,CAAAC,UAAQ;AACvB,UAAI,IAAI;AAER,UAAI,SAAS,MAAMA,KAAI;AACvB,aAAO,WAAWA,KAAI,KAAK,OAAO,MAAM;AAGtC,cAAM,OAAOA,MAAK,OAAO,CAAC,MAAM,OAAOA,MAAK,MAAM,GAAG,CAAC,MAAM,SAAS,MACjE,OAAO;AACX,QAAAA,QAAOA,MAAK,MAAM,KAAK,MAAM;AAC7B,aAAK;AACL,iBAAS,MAAMA,KAAI;AAAA,MACrB;AACA,aAAO,CAAC,GAAGA,KAAI;AAAA,IACjB;AAAA;AAAA;;;ACvBA;AAAA;AAAA;AACA,WAAO,UAAU,CAAC,MAAM,OAAO,aAAa;AAC1C,cAAQ;AAOR,UAAI,UAAU;AACZ,gBAAQ,OAAO,OAAS,CAAC;AAAA,MAC3B;AAGA,UAAI,OAAO;AACT,YAAI,OAAO,KAAO;AAChB,kBAAQ;AAAA,QACV;AACA,YAAI,OAAO,IAAM;AACf,kBAAQ;AAAA,QACV;AACA,YAAI,OAAO,GAAK;AACd,kBAAQ;AAAA,QACV;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC1BA;AAAA;AAAA;AACA,QAAM,EAAE,SAAS,IAAI;AACrB,QAAM,MAAM;AACZ,QAAM,SAAS;AACf,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,WAAW;AACjB,QAAM,aAAa;AAEnB,QAAM,aAAa,CAACA,OAAMC,YAAW;AACnC,UAAI,CAACA,SAAQ;AACX,eAAO,SAASD,KAAI;AAAA,MACtB;AACA,MAAAA,QAAO,SAASA,KAAI,EAAE,QAAQ,aAAa,EAAE;AAC7C,aAAO,WAAWC,OAAM,IAAI,MAAMD;AAAA,IACpC;AAEA,QAAM,cAAc,KAAK,OAAO;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,YAAY,OAAO,UAAU;AACnC,QAAM,SAAS;AACf,QAAM,WAAW;AACjB,QAAM,oBAAoB;AAE1B,QAAM,UAAU;AAEhB,QAAM,aAAa,OAAO,MAAM,mBAAmB,SAAS;AAAA,MAC1D,YAAa,GAAG,KAAK;AACnB,cAAM,OAAO,CAAC;AACd,cAAM,GAAG;AACT,YAAI,OAAO,MAAM,UAAU;AACzB,gBAAM,IAAI,UAAU,kBAAkB;AAAA,QACxC;AACA,aAAK,OAAO,SAAS,CAAC;AAEtB,aAAK,WAAW,CAAC,CAAC,IAAI;AAEtB,aAAK,QAAQ,QAAQ,UAAU,QAAQ,OAAO,KAAK;AACnD,aAAK,SAAS,QAAQ,IAAI,QAAQ;AAClC,aAAK,cAAc,IAAI,eAAe;AACtC,aAAK,YAAY,IAAI,aAAa,oBAAI,IAAI;AAC1C,aAAK,YAAY,IAAI,aAAa,oBAAI,IAAI;AAC1C,aAAK,gBAAgB,CAAC,CAAC,IAAI;AAC3B,aAAK,MAAM,SAAS,IAAI,OAAO,QAAQ,IAAI,CAAC;AAC5C,aAAK,SAAS,CAAC,CAAC,IAAI;AACpB,aAAK,QAAQ,CAAC,CAAC,IAAI;AACnB,aAAK,UAAU,CAAC,CAAC,IAAI;AACrB,aAAK,QAAQ,IAAI,SAAS;AAC1B,aAAK,SAAS,IAAI,SAAS,SAAS,IAAI,MAAM,IAAI;AAElD,aAAK,KAAK;AACV,aAAK,WAAW;AAChB,aAAK,cAAc;AACnB,aAAK,MAAM;AACX,aAAK,SAAS;AACd,aAAK,SAAS;AACd,aAAK,MAAM;AACX,aAAK,SAAS;AAEd,YAAI,OAAO,IAAI,WAAW,YAAY;AACpC,eAAK,GAAG,QAAQ,IAAI,MAAM;AAAA,QAC5B;AAEA,YAAI,WAAW;AACf,YAAI,CAAC,KAAK,eAAe;AACvB,gBAAM,CAAC,MAAM,QAAQ,IAAI,kBAAkB,KAAK,IAAI;AACpD,cAAI,MAAM;AACR,iBAAK,OAAO;AACZ,uBAAW;AAAA,UACb;AAAA,QACF;AAEA,aAAK,QAAQ,CAAC,CAAC,IAAI,SAAS,QAAQ,aAAa;AACjD,YAAI,KAAK,OAAO;AAGd,eAAK,OAAO,SAAS,OAAO,KAAK,KAAK,QAAQ,OAAO,GAAG,CAAC;AACzD,cAAI,EAAE,QAAQ,OAAO,GAAG;AAAA,QAC1B;AAEA,aAAK,WAAW,SAAS,IAAI,YAAYA,MAAK,QAAQ,KAAK,KAAK,CAAC,CAAC;AAElE,YAAI,KAAK,SAAS,IAAI;AACpB,eAAK,OAAO;AAAA,QACd;AAEA,YAAI,UAAU;AACZ,eAAK,KAAK,kBAAkB,aAAa,QAAQ,uBAAuB;AAAA,YACtE,OAAO;AAAA,YACP,MAAM,WAAW,KAAK;AAAA,UACxB,CAAC;AAAA,QACH;AAEA,YAAI,KAAK,UAAU,IAAI,KAAK,QAAQ,GAAG;AACrC,eAAK,OAAO,EAAE,KAAK,UAAU,IAAI,KAAK,QAAQ,CAAC;AAAA,QACjD,OAAO;AACL,eAAK,KAAK,EAAE;AAAA,QACd;AAAA,MACF;AAAA,MAEA,KAAM,OAAO,MAAM;AACjB,YAAI,OAAO,SAAS;AAClB,eAAK,SAAS,IAAI;AAAA,QACpB;AACA,eAAO,MAAM,KAAK,IAAI,GAAG,IAAI;AAAA,MAC/B;AAAA,MAEA,CAAC,KAAK,IAAK;AACT,QAAAD,IAAG,MAAM,KAAK,UAAU,CAAC,IAAI,SAAS;AACpC,cAAI,IAAI;AACN,mBAAO,KAAK,KAAK,SAAS,EAAE;AAAA,UAC9B;AACA,eAAK,OAAO,EAAE,IAAI;AAAA,QACpB,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,OAAO,EAAG,MAAM;AACf,aAAK,UAAU,IAAI,KAAK,UAAU,IAAI;AACtC,aAAK,OAAO;AACZ,YAAI,CAAC,KAAK,OAAO,GAAG;AAClB,eAAK,OAAO;AAAA,QACd;AACA,aAAK,OAAO,QAAQ,IAAI;AACxB,aAAK,KAAK,QAAQ,IAAI;AACtB,aAAK,OAAO,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,gBAAQ,KAAK,MAAM;AAAA,UACjB,KAAK;AAAQ,mBAAO,KAAK,IAAI,EAAE;AAAA,UAC/B,KAAK;AAAa,mBAAO,KAAK,SAAS,EAAE;AAAA,UACzC,KAAK;AAAgB,mBAAO,KAAK,OAAO,EAAE;AAAA,UAE1C;AAAS,mBAAO,KAAK,IAAI;AAAA,QAC3B;AAAA,MACF;AAAA,MAEA,CAAC,IAAI,EAAG,MAAM;AACZ,eAAO,QAAQ,MAAM,KAAK,SAAS,aAAa,KAAK,QAAQ;AAAA,MAC/D;AAAA,MAEA,CAAC,MAAM,EAAGC,OAAM;AACd,eAAO,WAAWA,OAAM,KAAK,MAAM;AAAA,MACrC;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,SAAS,eAAe,KAAK,UAAU;AAC9C,eAAK,UAAU;AAAA,QACjB;AAEA,aAAK,SAAS,IAAI,OAAO;AAAA,UACvB,MAAM,KAAK,MAAM,EAAE,KAAK,IAAI;AAAA;AAAA,UAE5B,UAAU,KAAK,SAAS,SAAS,KAAK,MAAM,EAAE,KAAK,QAAQ,IACzD,KAAK;AAAA;AAAA;AAAA,UAGP,MAAM,KAAK,IAAI,EAAE,KAAK,KAAK,IAAI;AAAA,UAC/B,KAAK,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,UACtC,KAAK,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,UACtC,MAAM,KAAK,KAAK;AAAA,UAChB,OAAO,KAAK,UAAU,OAAO,KAAK,SAAS,KAAK,KAAK;AAAA,UACrD,MAAM,KAAK;AAAA,UACX,OAAO,KAAK,WAAW,OACvB,KAAK,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS;AAAA,UAC7C,OAAO,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,UACxC,OAAO,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,QAC1C,CAAC;AAED,YAAI,KAAK,OAAO,OAAO,KAAK,CAAC,KAAK,OAAO;AACvC,gBAAM,MAAM,IAAI,IAAI;AAAA,YAClB,OAAO,KAAK,WAAW,OAAO,KAAK,OAAO;AAAA,YAC1C,OAAO,KAAK,WAAW,OAAO,KAAK,OAAO;AAAA,YAC1C,KAAK,KAAK,WAAW,OAAO,KAAK,OAAO;AAAA,YACxC,OAAO,KAAK,UAAU,OAAO,KAAK,SAAS,KAAK,OAAO;AAAA,YACvD,MAAM,KAAK,MAAM,EAAE,KAAK,IAAI;AAAA,YAC5B,UAAU,KAAK,SAAS,SAAS,KAAK,MAAM,EAAE,KAAK,QAAQ,IACzD,KAAK;AAAA,YACP,MAAM,KAAK,OAAO;AAAA,YAClB,KAAK,KAAK,WAAW,OAAO,KAAK,OAAO;AAAA,YACxC,OAAO,KAAK,WAAW,OAAO,KAAK,OAAO;AAAA,YAC1C,KAAK,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,YACtC,KAAK,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,YACtC,OAAO,KAAK,WAAW,OAAO,KAAK,KAAK;AAAA,UAC1C,CAAC,EAAE,OAAO,CAAC;AAAA,QACb;AACA,cAAM,MAAM,KAAK,OAAO,KAAK;AAAA,MAC/B;AAAA,MAEA,CAAC,SAAS,IAAK;AACb,YAAI,KAAK,KAAK,MAAM,EAAE,MAAM,KAAK;AAC/B,eAAK,QAAQ;AAAA,QACf;AACA,aAAK,KAAK,OAAO;AACjB,aAAK,MAAM,EAAE;AACb,aAAK,IAAI;AAAA,MACX;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,QAAAD,IAAG,SAAS,KAAK,UAAU,CAAC,IAAI,aAAa;AAC3C,cAAI,IAAI;AACN,mBAAO,KAAK,KAAK,SAAS,EAAE;AAAA,UAC9B;AACA,eAAK,UAAU,EAAE,QAAQ;AAAA,QAC3B,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,UAAU,EAAG,UAAU;AACtB,aAAK,WAAW,SAAS,QAAQ;AACjC,aAAK,MAAM,EAAE;AACb,aAAK,IAAI;AAAA,MACX;AAAA,MAEA,CAAC,QAAQ,EAAG,UAAU;AACpB,aAAK,OAAO;AACZ,aAAK,WAAW,SAASC,MAAK,SAAS,KAAK,KAAK,QAAQ,CAAC;AAC1D,aAAK,KAAK,OAAO;AACjB,aAAK,MAAM,EAAE;AACb,aAAK,IAAI;AAAA,MACX;AAAA,MAEA,CAAC,IAAI,IAAK;AACR,YAAI,KAAK,KAAK,QAAQ,GAAG;AACvB,gBAAM,UAAU,KAAK,KAAK,MAAM,MAAM,KAAK,KAAK;AAChD,cAAI,KAAK,UAAU,IAAI,OAAO,GAAG;AAC/B,kBAAM,WAAW,KAAK,UAAU,IAAI,OAAO;AAC3C,gBAAI,SAAS,QAAQ,KAAK,GAAG,MAAM,GAAG;AACpC,qBAAO,KAAK,QAAQ,EAAE,QAAQ;AAAA,YAChC;AAAA,UACF;AACA,eAAK,UAAU,IAAI,SAAS,KAAK,QAAQ;AAAA,QAC3C;AAEA,aAAK,MAAM,EAAE;AACb,YAAI,KAAK,KAAK,SAAS,GAAG;AACxB,iBAAO,KAAK,IAAI;AAAA,QAClB;AAEA,aAAK,QAAQ,EAAE;AAAA,MACjB;AAAA,MAEA,CAAC,QAAQ,IAAK;AACZ,QAAAD,IAAG,KAAK,KAAK,UAAU,KAAK,CAAC,IAAI,OAAO;AACtC,cAAI,IAAI;AACN,mBAAO,KAAK,KAAK,SAAS,EAAE;AAAA,UAC9B;AACA,eAAK,UAAU,EAAE,EAAE;AAAA,QACrB,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,UAAU,EAAG,IAAI;AAChB,aAAK,KAAK;AACV,YAAI,KAAK,SAAS,GAAG;AACnB,iBAAO,KAAK,KAAK,EAAE;AAAA,QACrB;AAEA,aAAK,WAAW,MAAM,KAAK,KAAK,KAAK,KAAK,OAAO,GAAG;AACpD,aAAK,cAAc,KAAK;AACxB,cAAM,SAAS,KAAK,IAAI,KAAK,UAAU,KAAK,WAAW;AACvD,aAAK,MAAM,OAAO,YAAY,MAAM;AACpC,aAAK,SAAS;AACd,aAAK,MAAM;AACX,aAAK,SAAS,KAAK,KAAK;AACxB,aAAK,SAAS,KAAK,IAAI;AACvB,aAAK,IAAI,EAAE;AAAA,MACb;AAAA,MAEA,CAAC,IAAI,IAAK;AACR,cAAM,EAAE,IAAI,KAAK,QAAQ,QAAQ,IAAI,IAAI;AACzC,QAAAA,IAAG,KAAK,IAAI,KAAK,QAAQ,QAAQ,KAAK,CAAC,IAAI,cAAc;AACvD,cAAI,IAAI;AAGN,mBAAO,KAAK,KAAK,EAAE,MAAM,KAAK,KAAK,SAAS,EAAE,CAAC;AAAA,UACjD;AACA,eAAK,MAAM,EAAE,SAAS;AAAA,QACxB,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,KAAK,EAAG,IAAI;AACX,QAAAA,IAAG,MAAM,KAAK,IAAI,EAAE;AAAA,MACtB;AAAA,MAEA,CAAC,MAAM,EAAG,WAAW;AACnB,YAAI,aAAa,KAAK,KAAK,SAAS,GAAG;AACrC,gBAAM,KAAK,IAAI,MAAM,4BAA4B;AACjD,aAAG,OAAO,KAAK;AACf,aAAG,UAAU;AACb,aAAG,OAAO;AACV,iBAAO,KAAK,KAAK,EAAE,MAAM,KAAK,KAAK,SAAS,EAAE,CAAC;AAAA,QACjD;AAEA,YAAI,YAAY,KAAK,QAAQ;AAC3B,gBAAM,KAAK,IAAI,MAAM,gCAAgC;AACrD,aAAG,OAAO,KAAK;AACf,aAAG,UAAU;AACb,aAAG,OAAO;AACV,iBAAO,KAAK,KAAK,EAAE,MAAM,KAAK,KAAK,SAAS,EAAE,CAAC;AAAA,QACjD;AAQA,YAAI,cAAc,KAAK,QAAQ;AAC7B,mBAAS,IAAI,WAAW,IAAI,KAAK,UAAU,YAAY,KAAK,aAAa,KAAK;AAC5E,iBAAK,IAAI,IAAI,KAAK,MAAM,IAAI;AAC5B;AACA,iBAAK;AAAA,UACP;AAAA,QACF;AAEA,cAAM,WAAW,KAAK,WAAW,KAAK,cAAc,KAAK,IAAI,SAC3D,KAAK,MAAM,KAAK,IAAI,MAAM,KAAK,QAAQ,KAAK,SAAS,SAAS;AAEhE,cAAM,UAAU,KAAK,MAAM,QAAQ;AACnC,YAAI,CAAC,SAAS;AACZ,eAAK,UAAU,EAAE,MAAM,KAAK,OAAO,EAAE,CAAC;AAAA,QACxC,OAAO;AACL,eAAK,OAAO,EAAE;AAAA,QAChB;AAAA,MACF;AAAA,MAEA,CAAC,UAAU,EAAG,IAAI;AAChB,aAAK,KAAK,SAAS,EAAE;AAAA,MACvB;AAAA,MAEA,MAAO,UAAU;AACf,YAAI,KAAK,cAAc,SAAS,QAAQ;AACtC,gBAAM,KAAK,IAAI,MAAM,iCAAiC;AACtD,aAAG,OAAO,KAAK;AACf,iBAAO,KAAK,KAAK,SAAS,EAAE;AAAA,QAC9B;AACA,aAAK,UAAU,SAAS;AACxB,aAAK,eAAe,SAAS;AAC7B,aAAK,OAAO,SAAS;AACrB,aAAK,UAAU,SAAS;AACxB,eAAO,MAAM,MAAM,QAAQ;AAAA,MAC7B;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,YAAI,CAAC,KAAK,QAAQ;AAChB,cAAI,KAAK,aAAa;AACpB,kBAAM,MAAM,OAAO,MAAM,KAAK,WAAW,CAAC;AAAA,UAC5C;AACA,iBAAO,KAAK,KAAK,EAAE,QAAM,KAAK,KAAK,KAAK,SAAS,EAAE,IAAI,KAAK,IAAI,CAAC;AAAA,QACnE;AAEA,YAAI,KAAK,UAAU,KAAK,QAAQ;AAG9B,eAAK,MAAM,OAAO,YAAY,KAAK,IAAI,KAAK,aAAa,KAAK,IAAI,MAAM,CAAC;AACzE,eAAK,SAAS;AAAA,QAChB;AACA,aAAK,SAAS,KAAK,IAAI,SAAS,KAAK;AACrC,aAAK,IAAI,EAAE;AAAA,MACb;AAAA,IACF,CAAC;AAED,QAAM,iBAAN,cAA6B,WAAW;AAAA,MACtC,CAAC,KAAK,IAAK;AACT,aAAK,OAAO,EAAEA,IAAG,UAAU,KAAK,QAAQ,CAAC;AAAA,MAC3C;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,aAAK,UAAU,EAAEA,IAAG,aAAa,KAAK,QAAQ,CAAC;AAAA,MACjD;AAAA,MAEA,CAAC,QAAQ,IAAK;AACZ,aAAK,UAAU,EAAEA,IAAG,SAAS,KAAK,UAAU,GAAG,CAAC;AAAA,MAClD;AAAA,MAEA,CAAC,IAAI,IAAK;AACR,YAAI,QAAQ;AACZ,YAAI;AACF,gBAAM,EAAE,IAAI,KAAK,QAAQ,QAAQ,IAAI,IAAI;AACzC,gBAAM,YAAYA,IAAG,SAAS,IAAI,KAAK,QAAQ,QAAQ,GAAG;AAC1D,eAAK,MAAM,EAAE,SAAS;AACtB,kBAAQ;AAAA,QACV,UAAE;AAGA,cAAI,OAAO;AACT,gBAAI;AACF,mBAAK,KAAK,EAAE,MAAM;AAAA,cAAC,CAAC;AAAA,YACtB,SAAS,IAAI;AAAA,YAAC;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,CAAC,UAAU,EAAG,IAAI;AAChB,WAAG;AAAA,MACL;AAAA,MAEA,CAAC,KAAK,EAAG,IAAI;AACX,QAAAA,IAAG,UAAU,KAAK,EAAE;AACpB,WAAG;AAAA,MACL;AAAA,IACF;AAEA,QAAM,gBAAgB,OAAO,MAAM,sBAAsB,SAAS;AAAA,MAChE,YAAa,WAAW,KAAK;AAC3B,cAAM,OAAO,CAAC;AACd,cAAM,GAAG;AACT,aAAK,gBAAgB,CAAC,CAAC,IAAI;AAC3B,aAAK,WAAW,CAAC,CAAC,IAAI;AACtB,aAAK,SAAS,CAAC,CAAC,IAAI;AACpB,aAAK,QAAQ,CAAC,CAAC,IAAI;AACnB,aAAK,UAAU,CAAC,CAAC,IAAI;AAErB,aAAK,YAAY;AACjB,aAAK,OAAO,UAAU;AACtB,YAAI,KAAK,SAAS,eAAe,KAAK,UAAU;AAC9C,eAAK,UAAU;AAAA,QACjB;AAEA,aAAK,SAAS,IAAI,UAAU;AAE5B,aAAK,OAAO,SAAS,UAAU,IAAI;AACnC,aAAK,OAAO,KAAK,IAAI,EAAE,UAAU,IAAI;AACrC,aAAK,MAAM,KAAK,WAAW,OAAO,UAAU;AAC5C,aAAK,MAAM,KAAK,WAAW,OAAO,UAAU;AAC5C,aAAK,QAAQ,KAAK,WAAW,OAAO,UAAU;AAC9C,aAAK,QAAQ,KAAK,WAAW,OAAO,UAAU;AAC9C,aAAK,OAAO,UAAU;AACtB,aAAK,QAAQ,KAAK,UAAU,OAAO,IAAI,SAAS,UAAU;AAC1D,aAAK,QAAQ,KAAK,WAAW,OAAO,UAAU;AAC9C,aAAK,QAAQ,KAAK,WAAW,OAAO,UAAU;AAC9C,aAAK,WAAW,SAAS,UAAU,QAAQ;AAE3C,YAAI,OAAO,IAAI,WAAW,YAAY;AACpC,eAAK,GAAG,QAAQ,IAAI,MAAM;AAAA,QAC5B;AAEA,YAAI,WAAW;AACf,YAAI,CAAC,KAAK,eAAe;AACvB,gBAAM,CAAC,MAAM,QAAQ,IAAI,kBAAkB,KAAK,IAAI;AACpD,cAAI,MAAM;AACR,iBAAK,OAAO;AACZ,uBAAW;AAAA,UACb;AAAA,QACF;AAEA,aAAK,SAAS,UAAU;AACxB,aAAK,cAAc,UAAU;AAE7B,aAAK,SAAS,IAAI,OAAO;AAAA,UACvB,MAAM,KAAK,MAAM,EAAE,KAAK,IAAI;AAAA,UAC5B,UAAU,KAAK,SAAS,SAAS,KAAK,MAAM,EAAE,KAAK,QAAQ,IACzD,KAAK;AAAA;AAAA;AAAA,UAGP,MAAM,KAAK;AAAA,UACX,KAAK,KAAK,WAAW,OAAO,KAAK;AAAA,UACjC,KAAK,KAAK,WAAW,OAAO,KAAK;AAAA,UACjC,MAAM,KAAK;AAAA,UACX,OAAO,KAAK,UAAU,OAAO,KAAK;AAAA,UAClC,MAAM,KAAK;AAAA,UACX,OAAO,KAAK,WAAW,OAAO,KAAK;AAAA,UACnC,OAAO,KAAK,WAAW,OAAO,KAAK;AAAA,UACnC,OAAO,KAAK,WAAW,OAAO,KAAK;AAAA,QACrC,CAAC;AAED,YAAI,UAAU;AACZ,eAAK,KAAK,kBAAkB,aAAa,QAAQ,uBAAuB;AAAA,YACtE,OAAO;AAAA,YACP,MAAM,WAAW,KAAK;AAAA,UACxB,CAAC;AAAA,QACH;AAEA,YAAI,KAAK,OAAO,OAAO,KAAK,CAAC,KAAK,OAAO;AACvC,gBAAM,MAAM,IAAI,IAAI;AAAA,YAClB,OAAO,KAAK,WAAW,OAAO,KAAK;AAAA,YACnC,OAAO,KAAK,WAAW,OAAO,KAAK;AAAA,YACnC,KAAK,KAAK,WAAW,OAAO,KAAK;AAAA,YACjC,OAAO,KAAK,UAAU,OAAO,KAAK;AAAA,YAClC,MAAM,KAAK,MAAM,EAAE,KAAK,IAAI;AAAA,YAC5B,UAAU,KAAK,SAAS,SAAS,KAAK,MAAM,EAAE,KAAK,QAAQ,IACzD,KAAK;AAAA,YACP,MAAM,KAAK;AAAA,YACX,KAAK,KAAK,WAAW,OAAO,KAAK;AAAA,YACjC,OAAO,KAAK,WAAW,OAAO,KAAK;AAAA,YACnC,KAAK,KAAK,WAAW,OAAO,KAAK,UAAU;AAAA,YAC3C,KAAK,KAAK,WAAW,OAAO,KAAK,UAAU;AAAA,YAC3C,OAAO,KAAK,WAAW,OAAO,KAAK,UAAU;AAAA,UAC/C,CAAC,EAAE,OAAO,CAAC;AAAA,QACb;AAEA,cAAM,MAAM,KAAK,OAAO,KAAK;AAC7B,kBAAU,KAAK,IAAI;AAAA,MACrB;AAAA,MAEA,CAAC,MAAM,EAAGC,OAAM;AACd,eAAO,WAAWA,OAAM,KAAK,MAAM;AAAA,MACrC;AAAA,MAEA,CAAC,IAAI,EAAG,MAAM;AACZ,eAAO,QAAQ,MAAM,KAAK,SAAS,aAAa,KAAK,QAAQ;AAAA,MAC/D;AAAA,MAEA,MAAO,MAAM;AACX,cAAM,WAAW,KAAK;AACtB,YAAI,WAAW,KAAK,aAAa;AAC/B,gBAAM,IAAI,MAAM,2CAA2C;AAAA,QAC7D;AACA,aAAK,eAAe;AACpB,eAAO,MAAM,MAAM,IAAI;AAAA,MACzB;AAAA,MAEA,MAAO;AACL,YAAI,KAAK,aAAa;AACpB,gBAAM,MAAM,OAAO,MAAM,KAAK,WAAW,CAAC;AAAA,QAC5C;AACA,eAAO,MAAM,IAAI;AAAA,MACnB;AAAA,IACF,CAAC;AAED,eAAW,OAAO;AAClB,eAAW,MAAM;AAEjB,QAAM,UAAU,UACd,KAAK,OAAO,IAAI,SACd,KAAK,YAAY,IAAI,cACrB,KAAK,eAAe,IAAI,iBACxB;AAEJ,WAAO,UAAU;AAAA;AAAA;;;ACjiBjB;AAAA;AAAA;AACA,WAAO,UAAU,SAAU,SAAS;AAClC,cAAQ,UAAU,OAAO,QAAQ,IAAI,aAAa;AAChD,iBAAS,SAAS,KAAK,MAAM,QAAQ,SAAS,OAAO,MAAM;AACzD,gBAAM,OAAO;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACPA;AAAA;AAAA;AACA,WAAO,UAAU;AAEjB,YAAQ,OAAOE;AACf,YAAQ,SAAS;AAEjB,aAAS,QAAS,MAAM;AACtB,UAAI,OAAO;AACX,UAAI,EAAE,gBAAgB,UAAU;AAC9B,eAAO,IAAI,QAAQ;AAAA,MACrB;AAEA,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,WAAK,SAAS;AAEd,UAAI,QAAQ,OAAO,KAAK,YAAY,YAAY;AAC9C,aAAK,QAAQ,SAAU,MAAM;AAC3B,eAAK,KAAK,IAAI;AAAA,QAChB,CAAC;AAAA,MACH,WAAW,UAAU,SAAS,GAAG;AAC/B,iBAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,eAAK,KAAK,UAAU,CAAC,CAAC;AAAA,QACxB;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,aAAa,SAAU,MAAM;AAC7C,UAAI,KAAK,SAAS,MAAM;AACtB,cAAM,IAAI,MAAM,kDAAkD;AAAA,MACpE;AAEA,UAAI,OAAO,KAAK;AAChB,UAAI,OAAO,KAAK;AAEhB,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd;AAEA,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd;AAEA,UAAI,SAAS,KAAK,MAAM;AACtB,aAAK,OAAO;AAAA,MACd;AACA,UAAI,SAAS,KAAK,MAAM;AACtB,aAAK,OAAO;AAAA,MACd;AAEA,WAAK,KAAK;AACV,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,WAAK,OAAO;AAEZ,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,cAAc,SAAU,MAAM;AAC9C,UAAI,SAAS,KAAK,MAAM;AACtB;AAAA,MACF;AAEA,UAAI,KAAK,MAAM;AACb,aAAK,KAAK,WAAW,IAAI;AAAA,MAC3B;AAEA,UAAI,OAAO,KAAK;AAChB,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd;AAEA,WAAK,OAAO;AACZ,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,OAAO;AAAA,MACd;AACA,WAAK;AAAA,IACP;AAEA,YAAQ,UAAU,WAAW,SAAU,MAAM;AAC3C,UAAI,SAAS,KAAK,MAAM;AACtB;AAAA,MACF;AAEA,UAAI,KAAK,MAAM;AACb,aAAK,KAAK,WAAW,IAAI;AAAA,MAC3B;AAEA,UAAI,OAAO,KAAK;AAChB,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,UAAI,MAAM;AACR,aAAK,OAAO;AAAA,MACd;AAEA,WAAK,OAAO;AACZ,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,OAAO;AAAA,MACd;AACA,WAAK;AAAA,IACP;AAEA,YAAQ,UAAU,OAAO,WAAY;AACnC,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,aAAK,MAAM,UAAU,CAAC,CAAC;AAAA,MACzB;AACA,aAAO,KAAK;AAAA,IACd;AAEA,YAAQ,UAAU,UAAU,WAAY;AACtC,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,gBAAQ,MAAM,UAAU,CAAC,CAAC;AAAA,MAC5B;AACA,aAAO,KAAK;AAAA,IACd;AAEA,YAAQ,UAAU,MAAM,WAAY;AAClC,UAAI,CAAC,KAAK,MAAM;AACd,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,KAAK,KAAK;AACpB,WAAK,OAAO,KAAK,KAAK;AACtB,UAAI,KAAK,MAAM;AACb,aAAK,KAAK,OAAO;AAAA,MACnB,OAAO;AACL,aAAK,OAAO;AAAA,MACd;AACA,WAAK;AACL,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,QAAQ,WAAY;AACpC,UAAI,CAAC,KAAK,MAAM;AACd,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,KAAK,KAAK;AACpB,WAAK,OAAO,KAAK,KAAK;AACtB,UAAI,KAAK,MAAM;AACb,aAAK,KAAK,OAAO;AAAA,MACnB,OAAO;AACL,aAAK,OAAO;AAAA,MACd;AACA,WAAK;AACL,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,UAAU,SAAU,IAAI,OAAO;AAC/C,cAAQ,SAAS;AACjB,eAAS,SAAS,KAAK,MAAM,IAAI,GAAG,WAAW,MAAM,KAAK;AACxD,WAAG,KAAK,OAAO,OAAO,OAAO,GAAG,IAAI;AACpC,iBAAS,OAAO;AAAA,MAClB;AAAA,IACF;AAEA,YAAQ,UAAU,iBAAiB,SAAU,IAAI,OAAO;AACtD,cAAQ,SAAS;AACjB,eAAS,SAAS,KAAK,MAAM,IAAI,KAAK,SAAS,GAAG,WAAW,MAAM,KAAK;AACtE,WAAG,KAAK,OAAO,OAAO,OAAO,GAAG,IAAI;AACpC,iBAAS,OAAO;AAAA,MAClB;AAAA,IACF;AAEA,YAAQ,UAAU,MAAM,SAAU,GAAG;AACnC,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,GAAG,KAAK;AAEjE,iBAAS,OAAO;AAAA,MAClB;AACA,UAAI,MAAM,KAAK,WAAW,MAAM;AAC9B,eAAO,OAAO;AAAA,MAChB;AAAA,IACF;AAEA,YAAQ,UAAU,aAAa,SAAU,GAAG;AAC1C,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,GAAG,KAAK;AAEjE,iBAAS,OAAO;AAAA,MAClB;AACA,UAAI,MAAM,KAAK,WAAW,MAAM;AAC9B,eAAO,OAAO;AAAA,MAChB;AAAA,IACF;AAEA,YAAQ,UAAU,MAAM,SAAU,IAAI,OAAO;AAC3C,cAAQ,SAAS;AACjB,UAAI,MAAM,IAAI,QAAQ;AACtB,eAAS,SAAS,KAAK,MAAM,WAAW,QAAO;AAC7C,YAAI,KAAK,GAAG,KAAK,OAAO,OAAO,OAAO,IAAI,CAAC;AAC3C,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,aAAa,SAAU,IAAI,OAAO;AAClD,cAAQ,SAAS;AACjB,UAAI,MAAM,IAAI,QAAQ;AACtB,eAAS,SAAS,KAAK,MAAM,WAAW,QAAO;AAC7C,YAAI,KAAK,GAAG,KAAK,OAAO,OAAO,OAAO,IAAI,CAAC;AAC3C,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,SAAS,SAAU,IAAI,SAAS;AAChD,UAAI;AACJ,UAAI,SAAS,KAAK;AAClB,UAAI,UAAU,SAAS,GAAG;AACxB,cAAM;AAAA,MACR,WAAW,KAAK,MAAM;AACpB,iBAAS,KAAK,KAAK;AACnB,cAAM,KAAK,KAAK;AAAA,MAClB,OAAO;AACL,cAAM,IAAI,UAAU,4CAA4C;AAAA,MAClE;AAEA,eAAS,IAAI,GAAG,WAAW,MAAM,KAAK;AACpC,cAAM,GAAG,KAAK,OAAO,OAAO,CAAC;AAC7B,iBAAS,OAAO;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,gBAAgB,SAAU,IAAI,SAAS;AACvD,UAAI;AACJ,UAAI,SAAS,KAAK;AAClB,UAAI,UAAU,SAAS,GAAG;AACxB,cAAM;AAAA,MACR,WAAW,KAAK,MAAM;AACpB,iBAAS,KAAK,KAAK;AACnB,cAAM,KAAK,KAAK;AAAA,MAClB,OAAO;AACL,cAAM,IAAI,UAAU,4CAA4C;AAAA,MAClE;AAEA,eAAS,IAAI,KAAK,SAAS,GAAG,WAAW,MAAM,KAAK;AAClD,cAAM,GAAG,KAAK,OAAO,OAAO,CAAC;AAC7B,iBAAS,OAAO;AAAA,MAClB;AAEA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,UAAU,WAAY;AACtC,UAAI,MAAM,IAAI,MAAM,KAAK,MAAM;AAC/B,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,MAAM,KAAK;AACxD,YAAI,CAAC,IAAI,OAAO;AAChB,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,iBAAiB,WAAY;AAC7C,UAAI,MAAM,IAAI,MAAM,KAAK,MAAM;AAC/B,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,MAAM,KAAK;AACxD,YAAI,CAAC,IAAI,OAAO;AAChB,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,QAAQ,SAAU,MAAM,IAAI;AAC5C,WAAK,MAAM,KAAK;AAChB,UAAI,KAAK,GAAG;AACV,cAAM,KAAK;AAAA,MACb;AACA,aAAO,QAAQ;AACf,UAAI,OAAO,GAAG;AACZ,gBAAQ,KAAK;AAAA,MACf;AACA,UAAI,MAAM,IAAI,QAAQ;AACtB,UAAI,KAAK,QAAQ,KAAK,GAAG;AACvB,eAAO;AAAA,MACT;AACA,UAAI,OAAO,GAAG;AACZ,eAAO;AAAA,MACT;AACA,UAAI,KAAK,KAAK,QAAQ;AACpB,aAAK,KAAK;AAAA,MACZ;AACA,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,MAAM,KAAK;AACpE,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO,WAAW,QAAQ,IAAI,IAAI,KAAK,SAAS,OAAO,MAAM;AAC3D,YAAI,KAAK,OAAO,KAAK;AAAA,MACvB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,eAAe,SAAU,MAAM,IAAI;AACnD,WAAK,MAAM,KAAK;AAChB,UAAI,KAAK,GAAG;AACV,cAAM,KAAK;AAAA,MACb;AACA,aAAO,QAAQ;AACf,UAAI,OAAO,GAAG;AACZ,gBAAQ,KAAK;AAAA,MACf;AACA,UAAI,MAAM,IAAI,QAAQ;AACtB,UAAI,KAAK,QAAQ,KAAK,GAAG;AACvB,eAAO;AAAA,MACT;AACA,UAAI,OAAO,GAAG;AACZ,eAAO;AAAA,MACT;AACA,UAAI,KAAK,KAAK,QAAQ;AACpB,aAAK,KAAK;AAAA,MACZ;AACA,eAAS,IAAI,KAAK,QAAQ,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,IAAI,KAAK;AAC5E,iBAAS,OAAO;AAAA,MAClB;AACA,aAAO,WAAW,QAAQ,IAAI,MAAM,KAAK,SAAS,OAAO,MAAM;AAC7D,YAAI,KAAK,OAAO,KAAK;AAAA,MACvB;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,SAAS,SAAU,OAAO,gBAAgB,OAAO;AACjE,UAAI,QAAQ,KAAK,QAAQ;AACvB,gBAAQ,KAAK,SAAS;AAAA,MACxB;AACA,UAAI,QAAQ,GAAG;AACb,gBAAQ,KAAK,SAAS;AAAA,MACxB;AAEA,eAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,OAAO,KAAK;AACrE,iBAAS,OAAO;AAAA,MAClB;AAEA,UAAI,MAAM,CAAC;AACX,eAAS,IAAI,GAAG,UAAU,IAAI,aAAa,KAAK;AAC9C,YAAI,KAAK,OAAO,KAAK;AACrB,iBAAS,KAAK,WAAW,MAAM;AAAA,MACjC;AACA,UAAI,WAAW,MAAM;AACnB,iBAAS,KAAK;AAAA,MAChB;AAEA,UAAI,WAAW,KAAK,QAAQ,WAAW,KAAK,MAAM;AAChD,iBAAS,OAAO;AAAA,MAClB;AAEA,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,iBAAS,OAAO,MAAM,QAAQ,MAAM,CAAC,CAAC;AAAA,MACxC;AACA,aAAO;AAAA,IACT;AAEA,YAAQ,UAAU,UAAU,WAAY;AACtC,UAAI,OAAO,KAAK;AAChB,UAAI,OAAO,KAAK;AAChB,eAAS,SAAS,MAAM,WAAW,MAAM,SAAS,OAAO,MAAM;AAC7D,YAAI,IAAI,OAAO;AACf,eAAO,OAAO,OAAO;AACrB,eAAO,OAAO;AAAA,MAChB;AACA,WAAK,OAAO;AACZ,WAAK,OAAO;AACZ,aAAO;AAAA,IACT;AAEA,aAAS,OAAQ,MAAM,MAAM,OAAO;AAClC,UAAI,WAAW,SAAS,KAAK,OAC3B,IAAIA,MAAK,OAAO,MAAM,MAAM,IAAI,IAChC,IAAIA,MAAK,OAAO,MAAM,KAAK,MAAM,IAAI;AAEvC,UAAI,SAAS,SAAS,MAAM;AAC1B,aAAK,OAAO;AAAA,MACd;AACA,UAAI,SAAS,SAAS,MAAM;AAC1B,aAAK,OAAO;AAAA,MACd;AAEA,WAAK;AAEL,aAAO;AAAA,IACT;AAEA,aAAS,KAAM,MAAM,MAAM;AACzB,WAAK,OAAO,IAAIA,MAAK,MAAM,KAAK,MAAM,MAAM,IAAI;AAChD,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,OAAO,KAAK;AAAA,MACnB;AACA,WAAK;AAAA,IACP;AAEA,aAAS,QAAS,MAAM,MAAM;AAC5B,WAAK,OAAO,IAAIA,MAAK,MAAM,MAAM,KAAK,MAAM,IAAI;AAChD,UAAI,CAAC,KAAK,MAAM;AACd,aAAK,OAAO,KAAK;AAAA,MACnB;AACA,WAAK;AAAA,IACP;AAEA,aAASA,MAAM,OAAO,MAAM,MAAM,MAAM;AACtC,UAAI,EAAE,gBAAgBA,QAAO;AAC3B,eAAO,IAAIA,MAAK,OAAO,MAAM,MAAM,IAAI;AAAA,MACzC;AAEA,WAAK,OAAO;AACZ,WAAK,QAAQ;AAEb,UAAI,MAAM;AACR,aAAK,OAAO;AACZ,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,OAAO;AAAA,MACd;AAEA,UAAI,MAAM;AACR,aAAK,OAAO;AACZ,aAAK,OAAO;AAAA,MACd,OAAO;AACL,aAAK,OAAO;AAAA,MACd;AAAA,IACF;AAEA,QAAI;AAEF,yBAAyB,OAAO;AAAA,IAClC,SAAS,IAAI;AAAA,IAAC;AAAA;AAAA;;;ACzad;AAAA;AAAA;AAWA,QAAM,UAAN,MAAc;AAAA,MACZ,YAAaC,OAAM,UAAU;AAC3B,aAAK,OAAOA,SAAQ;AACpB,aAAK,WAAW;AAChB,aAAK,QAAQ;AACb,aAAK,OAAO;AACZ,aAAK,UAAU;AACf,aAAK,UAAU;AACf,aAAK,SAAS;AACd,aAAK,QAAQ;AAAA,MACf;AAAA,IACF;AAEA,QAAM,EAAE,SAAS,IAAI;AACrB,QAAM,OAAO;AACb,QAAM,YAAY;AAClB,QAAM,aAAa;AACnB,QAAM,iBAAiB,WAAW;AAClC,QAAM,gBAAgB,WAAW;AACjC,QAAM,UAAU;AAChB,QAAM,MAAM,OAAO,MAAM,IAAI;AAC7B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,kBAAkB,OAAO,iBAAiB;AAChD,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,UAAU,OAAO,SAAS;AAEhC,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAMD,QAAO,UAAQ,MAAM;AAC3B,QAAM,SAAS;AACf,QAAM,WAAW;AAEjB,QAAM,OAAO,OAAO,MAAM,aAAa,SAAS;AAAA,MAC9C,YAAa,KAAK;AAChB,cAAM,GAAG;AACT,cAAM,OAAO,uBAAO,OAAO,IAAI;AAC/B,aAAK,MAAM;AACX,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,MAAM,IAAI,OAAO,QAAQ,IAAI;AAClC,aAAK,cAAc,IAAI;AACvB,aAAK,gBAAgB,CAAC,CAAC,IAAI;AAC3B,aAAK,SAAS,CAAC,CAAC,IAAI;AACpB,aAAK,QAAQ,CAAC,CAAC,IAAI;AACnB,aAAK,SAAS,SAAS,IAAI,UAAU,EAAE;AACvC,aAAK,YAAY,IAAI,aAAa,oBAAI,IAAI;AAC1C,aAAK,YAAY,IAAI,aAAa,oBAAI,IAAI;AAC1C,aAAK,eAAe,IAAI,gBAAgB,oBAAI,IAAI;AAEhD,aAAK,eAAe,IAAI;AACxB,YAAI,OAAO,IAAI,WAAW,YAAY;AACpC,eAAK,GAAG,QAAQ,IAAI,MAAM;AAAA,QAC5B;AAEA,aAAK,WAAW,CAAC,CAAC,IAAI;AACtB,aAAK,MAAM;AAEX,YAAI,IAAI,QAAQ,IAAI,QAAQ;AAC1B,cAAI,IAAI,QAAQ,IAAI,QAAQ;AAC1B,kBAAM,IAAI,UAAU,wCAAwC;AAAA,UAC9D;AACA,cAAI,IAAI,MAAM;AACZ,gBAAI,OAAO,IAAI,SAAS,UAAU;AAChC,kBAAI,OAAO,CAAC;AAAA,YACd;AACA,gBAAI,KAAK,UAAU;AACjB,kBAAI,KAAK,WAAW;AAAA,YACtB;AACA,iBAAK,MAAM,IAAI,KAAK,KAAK,IAAI,IAAI;AAAA,UACnC;AACA,cAAI,IAAI,QAAQ;AACd,gBAAI,OAAO,IAAI,WAAW,UAAU;AAClC,kBAAI,SAAS,CAAC;AAAA,YAChB;AACA,iBAAK,MAAM,IAAI,KAAK,eAAe,IAAI,MAAM;AAAA,UAC/C;AACA,eAAK,IAAI,GAAG,QAAQ,WAAS,MAAM,MAAM,KAAK,CAAC;AAC/C,eAAK,IAAI,GAAG,OAAO,OAAK,MAAM,IAAI,CAAC;AACnC,eAAK,IAAI,GAAG,SAAS,OAAK,KAAK,OAAO,EAAE,CAAC;AACzC,eAAK,GAAG,UAAU,OAAK,KAAK,IAAI,OAAO,CAAC;AAAA,QAC1C,OAAO;AACL,eAAK,GAAG,SAAS,KAAK,OAAO,CAAC;AAAA,QAChC;AAEA,aAAK,eAAe,CAAC,CAAC,IAAI;AAC1B,aAAK,SAAS,CAAC,CAAC,IAAI;AACpB,aAAK,UAAU,CAAC,CAAC,IAAI;AACrB,aAAK,QAAQ,IAAI,SAAS;AAE1B,aAAK,SAAS,OAAO,IAAI,WAAW,aAAa,IAAI,SAAS,OAAK;AAEnE,aAAK,KAAK,IAAI,IAAI,QAAQ;AAC1B,aAAK,IAAI,IAAI;AACb,aAAK,OAAO,CAAC,IAAI,QAAQ;AACzB,aAAK,UAAU,IAAI;AACnB,aAAK,KAAK,IAAI;AAAA,MAChB;AAAA,MAEA,CAAC,KAAK,EAAG,OAAO;AACd,eAAO,MAAM,MAAM,KAAK;AAAA,MAC1B;AAAA,MAEA,IAAKA,OAAM;AACT,aAAK,MAAMA,KAAI;AACf,eAAO;AAAA,MACT;AAAA,MAEA,IAAKA,OAAM;AACT,YAAIA,OAAM;AACR,eAAK,MAAMA,KAAI;AAAA,QACjB;AACA,aAAK,KAAK,IAAI;AACd,aAAK,OAAO,EAAE;AACd,eAAO;AAAA,MACT;AAAA,MAEA,MAAOA,OAAM;AACX,YAAI,KAAK,KAAK,GAAG;AACf,gBAAM,IAAI,MAAM,iBAAiB;AAAA,QACnC;AAEA,YAAIA,iBAAgB,WAAW;AAC7B,eAAK,WAAW,EAAEA,KAAI;AAAA,QACxB,OAAO;AACL,eAAK,UAAU,EAAEA,KAAI;AAAA,QACvB;AACA,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,CAAC,WAAW,EAAG,GAAG;AAChB,cAAM,WAAW,SAASA,MAAK,QAAQ,KAAK,KAAK,EAAE,IAAI,CAAC;AAExD,YAAI,CAAC,KAAK,OAAO,EAAE,MAAM,CAAC,GAAG;AAC3B,YAAE,OAAO;AAAA,QACX,OAAO;AACL,gBAAM,MAAM,IAAI,QAAQ,EAAE,MAAM,UAAU,KAAK;AAC/C,cAAI,QAAQ,IAAI,cAAc,GAAG,KAAK,QAAQ,EAAE,GAAG,CAAC;AACpD,cAAI,MAAM,GAAG,OAAO,OAAK,KAAK,OAAO,EAAE,GAAG,CAAC;AAC3C,eAAK,IAAI,KAAK;AACd,eAAK,KAAK,EAAE,KAAK,GAAG;AAAA,QACtB;AAEA,aAAK,OAAO,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,UAAU,EAAG,GAAG;AACf,cAAM,WAAW,SAASA,MAAK,QAAQ,KAAK,KAAK,CAAC,CAAC;AACnD,aAAK,KAAK,EAAE,KAAK,IAAI,QAAQ,GAAG,QAAQ,CAAC;AACzC,aAAK,OAAO,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,IAAI,EAAG,KAAK;AACX,YAAI,UAAU;AACd,aAAK,IAAI,KAAK;AACd,cAAM,OAAO,KAAK,SAAS,SAAS;AACpC,QAAAC,IAAG,IAAI,EAAE,IAAI,UAAU,CAAC,IAAIC,UAAS;AACnC,cAAI,UAAU;AACd,eAAK,IAAI,KAAK;AACd,cAAI,IAAI;AACN,iBAAK,KAAK,SAAS,EAAE;AAAA,UACvB,OAAO;AACL,iBAAK,MAAM,EAAE,KAAKA,KAAI;AAAA,UACxB;AAAA,QACF,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,MAAM,EAAG,KAAK,MAAM;AACnB,aAAK,UAAU,IAAI,IAAI,UAAU,IAAI;AACrC,YAAI,OAAO;AAGX,YAAI,CAAC,KAAK,OAAO,IAAI,MAAM,IAAI,GAAG;AAChC,cAAI,SAAS;AAAA,QACf;AAEA,aAAK,OAAO,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,OAAO,EAAG,KAAK;AACd,YAAI,UAAU;AACd,aAAK,IAAI,KAAK;AACd,QAAAD,IAAG,QAAQ,IAAI,UAAU,CAAC,IAAI,YAAY;AACxC,cAAI,UAAU;AACd,eAAK,IAAI,KAAK;AACd,cAAI,IAAI;AACN,mBAAO,KAAK,KAAK,SAAS,EAAE;AAAA,UAC9B;AACA,eAAK,SAAS,EAAE,KAAK,OAAO;AAAA,QAC9B,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,SAAS,EAAG,KAAK,SAAS;AACzB,aAAK,aAAa,IAAI,IAAI,UAAU,OAAO;AAC3C,YAAI,UAAU;AACd,aAAK,OAAO,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,YAAI,KAAK,UAAU,GAAG;AACpB;AAAA,QACF;AAEA,aAAK,UAAU,IAAI;AACnB,iBAAS,IAAI,KAAK,KAAK,EAAE,MACvB,MAAM,QAAQ,KAAK,IAAI,IAAI,KAAK,MAChC,IAAI,EAAE,MAAM;AACZ,eAAK,UAAU,EAAE,EAAE,KAAK;AACxB,cAAI,EAAE,MAAM,QAAQ;AAClB,kBAAM,IAAI,EAAE;AACZ,iBAAK,KAAK,EAAE,WAAW,CAAC;AACxB,cAAE,OAAO;AAAA,UACX;AAAA,QACF;AAEA,aAAK,UAAU,IAAI;AAEnB,YAAI,KAAK,KAAK,KAAK,CAAC,KAAK,KAAK,EAAE,UAAU,KAAK,IAAI,MAAM,GAAG;AAC1D,cAAI,KAAK,KAAK;AACZ,iBAAK,IAAI,IAAI,GAAG;AAAA,UAClB,OAAO;AACL,kBAAM,MAAM,GAAG;AACf,kBAAM,IAAI;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,MAEA,KAAK,OAAO,IAAK;AACf,eAAO,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE,QAAQ,KAAK,KAAK,EAAE,KAAK;AAAA,MAC7D;AAAA,MAEA,CAAC,OAAO,EAAG,KAAK;AACd,aAAK,KAAK,EAAE,MAAM;AAClB,aAAK,IAAI,KAAK;AACd,aAAK,OAAO,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,UAAU,EAAG,KAAK;AACjB,YAAI,IAAI,SAAS;AACf;AAAA,QACF;AAEA,YAAI,IAAI,OAAO;AACb,cAAI,QAAQ,KAAK,OAAO,KAAK,CAAC,IAAI,OAAO;AACvC,iBAAK,IAAI,EAAE,GAAG;AAAA,UAChB;AACA;AAAA,QACF;AAEA,YAAI,CAAC,IAAI,MAAM;AACb,cAAI,KAAK,UAAU,IAAI,IAAI,QAAQ,GAAG;AACpC,iBAAK,MAAM,EAAE,KAAK,KAAK,UAAU,IAAI,IAAI,QAAQ,CAAC;AAAA,UACpD,OAAO;AACL,iBAAK,IAAI,EAAE,GAAG;AAAA,UAChB;AAAA,QACF;AACA,YAAI,CAAC,IAAI,MAAM;AACb;AAAA,QACF;AAGA,YAAI,IAAI,QAAQ;AACd;AAAA,QACF;AAEA,YAAI,CAAC,KAAK,gBAAgB,IAAI,KAAK,YAAY,KAAK,CAAC,IAAI,SAAS;AAChE,cAAI,KAAK,aAAa,IAAI,IAAI,QAAQ,GAAG;AACvC,iBAAK,SAAS,EAAE,KAAK,KAAK,aAAa,IAAI,IAAI,QAAQ,CAAC;AAAA,UAC1D,OAAO;AACL,iBAAK,OAAO,EAAE,GAAG;AAAA,UACnB;AACA,cAAI,CAAC,IAAI,SAAS;AAChB;AAAA,UACF;AAAA,QACF;AAGA,YAAI,QAAQ,KAAK,KAAK,EAAE,GAAG;AAC3B,YAAI,CAAC,IAAI,OAAO;AACd,cAAI,SAAS;AACb;AAAA,QACF;AAEA,YAAI,QAAQ,KAAK,OAAO,KAAK,CAAC,IAAI,OAAO;AACvC,eAAK,IAAI,EAAE,GAAG;AAAA,QAChB;AAAA,MACF;AAAA,MAEA,CAAC,QAAQ,EAAG,KAAK;AACf,eAAO;AAAA,UACL,QAAQ,CAAC,MAAM,KAAK,SAAS,KAAK,KAAK,MAAM,KAAK,IAAI;AAAA,UACtD,OAAO,KAAK;AAAA,UACZ,KAAK,KAAK;AAAA,UACV,UAAU,IAAI;AAAA,UACd,eAAe,KAAK;AAAA,UACpB,aAAa,KAAK;AAAA,UAClB,QAAQ,KAAK;AAAA,UACb,UAAU,KAAK;AAAA,UACf,WAAW,KAAK;AAAA,UAChB,WAAW,KAAK;AAAA,UAChB,SAAS,KAAK;AAAA,UACd,OAAO,KAAK;AAAA,UACZ,QAAQ,KAAK;AAAA,QACf;AAAA,MACF;AAAA,MAEA,CAAC,KAAK,EAAG,KAAK;AACZ,aAAK,IAAI,KAAK;AACd,YAAI;AACF,iBAAO,IAAI,KAAK,eAAe,EAAE,IAAI,MAAM,KAAK,QAAQ,EAAE,GAAG,CAAC,EAC3D,GAAG,OAAO,MAAM,KAAK,OAAO,EAAE,GAAG,CAAC,EAClC,GAAG,SAAS,QAAM,KAAK,KAAK,SAAS,EAAE,CAAC;AAAA,QAC7C,SAAS,IAAI;AACX,eAAK,KAAK,SAAS,EAAE;AAAA,QACvB;AAAA,MACF;AAAA,MAEA,CAAC,OAAO,IAAK;AACX,YAAI,KAAK,OAAO,KAAK,KAAK,OAAO,EAAE,OAAO;AACxC,eAAK,OAAO,EAAE,MAAM,OAAO;AAAA,QAC7B;AAAA,MACF;AAAA;AAAA,MAGA,CAAC,IAAI,EAAG,KAAK;AACX,YAAI,QAAQ;AAEZ,YAAI,IAAI,SAAS;AACf,cAAI,QAAQ,QAAQ,WAAS;AAC3B,kBAAM,IAAI,IAAI;AACd,kBAAM,OAAO,MAAM,OAAO,KAAK,EAAE,QAAQ,QAAQ,GAAG;AACpD,iBAAK,UAAU,EAAE,OAAO,KAAK;AAAA,UAC/B,CAAC;AAAA,QACH;AAEA,cAAM,SAAS,IAAI;AACnB,cAAM,MAAM,KAAK;AAEjB,YAAI,KAAK;AACP,iBAAO,GAAG,QAAQ,WAAS;AACzB,gBAAI,CAAC,IAAI,MAAM,KAAK,GAAG;AACrB,qBAAO,MAAM;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,GAAG,QAAQ,WAAS;AACzB,gBAAI,CAAC,MAAM,MAAM,KAAK,GAAG;AACvB,qBAAO,MAAM;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,MAEA,QAAS;AACP,YAAI,KAAK,KAAK;AACZ,eAAK,IAAI,MAAM;AAAA,QACjB;AACA,eAAO,MAAM,MAAM;AAAA,MACrB;AAAA,IACF,CAAC;AAED,QAAM,WAAN,cAAuB,KAAK;AAAA,MAC1B,YAAa,KAAK;AAChB,cAAM,GAAG;AACT,aAAK,eAAe,IAAI;AAAA,MAC1B;AAAA;AAAA,MAGA,QAAS;AAAA,MAAC;AAAA,MACV,SAAU;AAAA,MAAC;AAAA,MAEX,CAAC,IAAI,EAAG,KAAK;AACX,cAAM,OAAO,KAAK,SAAS,aAAa;AACxC,aAAK,MAAM,EAAE,KAAKA,IAAG,IAAI,EAAE,IAAI,QAAQ,CAAC;AAAA,MAC1C;AAAA,MAEA,CAAC,OAAO,EAAG,KAAK,MAAM;AACpB,aAAK,SAAS,EAAE,KAAKA,IAAG,YAAY,IAAI,QAAQ,CAAC;AAAA,MACnD;AAAA;AAAA,MAGA,CAAC,IAAI,EAAG,KAAK;AACX,cAAM,SAAS,IAAI;AACnB,cAAM,MAAM,KAAK;AAEjB,YAAI,IAAI,SAAS;AACf,cAAI,QAAQ,QAAQ,WAAS;AAC3B,kBAAM,IAAI,IAAI;AACd,kBAAM,OAAO,MAAM,OAAO,KAAK,EAAE,QAAQ,QAAQ,GAAG;AACpD,iBAAK,UAAU,EAAE,OAAO,KAAK;AAAA,UAC/B,CAAC;AAAA,QACH;AAEA,YAAI,KAAK;AACP,iBAAO,GAAG,QAAQ,WAAS;AACzB,gBAAI,MAAM,KAAK;AAAA,UACjB,CAAC;AAAA,QACH,OAAO;AACL,iBAAO,GAAG,QAAQ,WAAS;AACzB,kBAAM,KAAK,EAAE,KAAK;AAAA,UACpB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAEA,SAAK,OAAO;AAEZ,WAAO,UAAU;AAAA;AAAA;;;AC/ajB;AAAA;AAAA;AACA,QAAM,WAAW;AACjB,QAAM,KAAK,UAAQ,QAAQ,EAAE;AAC7B,QAAME,MAAK,UAAQ,IAAI;AAEvB,QAAI,SAASA,IAAG;AAEhB,QAAI,CAAC,QAAQ;AAGX,YAAM,UAAU,QAAQ,QAAQ,IAAI;AACpC,YAAM,YAAY,QAAQ,aAAa,QAAQ;AAE/C,eAAS,CAAC,IAAI,OAAO,KAAK,OAAO;AAC/B,cAAM,OAAO,CAAC,IAAI,OAAO,GAAG,IAAI,IAAI,KAAK;AACzC,cAAM,MAAM,IAAI,UAAU;AAC1B,YAAI,aAAa;AACjB,gBAAQ,aAAa,IAAI,OAAO,KAAK,GAAG;AAAA,MAC1C;AAAA,IACF;AAEA,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAMC,SAAQ,OAAO,OAAO;AAC5B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,WAAW,OAAO,UAAU;AAElC,QAAM,aAAN,cAAyB,SAAS;AAAA,MAChC,YAAaC,OAAM,KAAK;AACtB,cAAM,OAAO,CAAC;AACd,cAAM,GAAG;AAET,aAAK,WAAW;AAChB,aAAK,WAAW;AAEhB,YAAI,OAAOA,UAAS;AAClB,gBAAM,IAAI,UAAU,uBAAuB;AAE7C,aAAK,QAAQ,IAAI;AACjB,aAAK,GAAG,IAAI,OAAO,IAAI,OAAO,WAAW,IAAI,KAAK;AAClD,aAAK,KAAK,IAAIA;AACd,aAAK,SAAS,IAAI,IAAI,YAAY,KAAG,OAAK;AAC1C,aAAK,QAAQ,IAAI;AACjB,aAAKD,MAAK,IAAI,OAAO,IAAI,SAAS,WAAW,IAAI,OAAO;AACxD,aAAK,OAAO,IAAI,KAAKA,MAAK;AAC1B,aAAK,UAAU,IAAI,OAAO,IAAI,cAAc,YAC1C,IAAI,YAAY;AAElB,YAAI,OAAO,KAAK,GAAG,MAAM;AACvB,eAAK,KAAK,EAAE;AAAA;AAEZ,eAAK,KAAK,EAAE;AAAA,MAChB;AAAA,MAEA,IAAI,KAAM;AAAE,eAAO,KAAK,GAAG;AAAA,MAAE;AAAA,MAC7B,IAAI,OAAQ;AAAE,eAAO,KAAK,KAAK;AAAA,MAAE;AAAA,MAEjC,QAAS;AACP,cAAM,IAAI,UAAU,2BAA2B;AAAA,MACjD;AAAA,MAEA,MAAO;AACL,cAAM,IAAI,UAAU,2BAA2B;AAAA,MACjD;AAAA,MAEA,CAAC,KAAK,IAAK;AACT,QAAAD,IAAG,KAAK,KAAK,KAAK,GAAG,KAAK,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,IAAI,EAAE,CAAC;AAAA,MAC7D;AAAA,MAEA,CAAC,OAAO,EAAG,IAAI,IAAI;AACjB,YAAI;AACF,eAAK,QAAQ,EAAE,EAAE;AAAA,aACd;AACH,eAAK,GAAG,IAAI;AACZ,eAAK,KAAK,QAAQ,EAAE;AACpB,eAAK,KAAK,EAAE;AAAA,QACd;AAAA,MACF;AAAA,MAEA,CAAC,QAAQ,IAAK;AACZ,eAAO,OAAO,YAAY,KAAK,IAAI,KAAK,SAAS,GAAG,KAAK,OAAO,CAAC,CAAC;AAAA,MACpE;AAAA,MAEA,CAAC,KAAK,IAAK;AACT,YAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,eAAK,QAAQ,IAAI;AACjB,gBAAM,MAAM,KAAK,QAAQ,EAAE;AAE3B,cAAI,IAAI,WAAW;AACjB,mBAAO,QAAQ,SAAS,MAAM,KAAK,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;AAC3D,UAAAA,IAAG,KAAK,KAAK,GAAG,GAAG,KAAK,GAAG,IAAI,QAAQ,MAAM,CAAC,IAAI,IAAIG,SACpD,KAAK,OAAO,EAAE,IAAI,IAAIA,IAAG,CAAC;AAAA,QAC9B;AAAA,MACF;AAAA,MAEA,CAAC,OAAO,EAAG,IAAI,IAAI,KAAK;AACtB,aAAK,QAAQ,IAAI;AACjB,YAAI;AACF,eAAK,QAAQ,EAAE,EAAE;AAAA,iBACV,KAAK,YAAY,EAAE,IAAI,GAAG;AACjC,eAAK,KAAK,EAAE;AAAA,MAChB;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG,MAAM,UAAU;AACrD,gBAAM,KAAK,KAAK,GAAG;AACnB,eAAK,GAAG,IAAI;AACZ,UAAAH,IAAG,MAAM,IAAI,QAAM,KAAK,KAAK,KAAK,SAAS,EAAE,IAAI,KAAK,KAAK,OAAO,CAAC;AAAA,QACrE;AAAA,MACF;AAAA,MAEA,CAAC,QAAQ,EAAG,IAAI;AACd,aAAK,QAAQ,IAAI;AACjB,aAAK,MAAM,EAAE;AACb,aAAK,KAAK,SAAS,EAAE;AAAA,MACvB;AAAA,MAEA,CAAC,YAAY,EAAG,IAAI,KAAK;AACvB,YAAI,MAAM;AAEV,aAAK,OAAO,KAAK;AACjB,YAAI,KAAK;AACP,gBAAM,MAAM,MAAM,KAAK,IAAI,SAAS,IAAI,MAAM,GAAG,EAAE,IAAI,GAAG;AAE5D,YAAI,OAAO,KAAK,KAAK,OAAO,KAAK,GAAG;AAClC,gBAAM;AACN,eAAK,MAAM,EAAE;AACb,gBAAM,IAAI;AAAA,QACZ;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,KAAM,IAAI,MAAM;AACd,gBAAQ,IAAI;AAAA,UACV,KAAK;AAAA,UACL,KAAK;AACH;AAAA,UAEF,KAAK;AACH,gBAAI,OAAO,KAAK,GAAG,MAAM;AACvB,mBAAK,KAAK,EAAE;AACd;AAAA,UAEF,KAAK;AACH,gBAAI,KAAK,QAAQ;AACf;AACF,iBAAK,QAAQ,IAAI;AACjB,mBAAO,MAAM,KAAK,IAAI,IAAI;AAAA,UAE5B;AACE,mBAAO,MAAM,KAAK,IAAI,IAAI;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAEA,QAAM,iBAAN,cAA6B,WAAW;AAAA,MACtC,CAAC,KAAK,IAAK;AACT,YAAI,QAAQ;AACZ,YAAI;AACF,eAAK,OAAO,EAAE,MAAMA,IAAG,SAAS,KAAK,KAAK,GAAG,GAAG,CAAC;AACjD,kBAAQ;AAAA,QACV,UAAE;AACA,cAAI;AACF,iBAAK,MAAM,EAAE;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,CAAC,KAAK,IAAK;AACT,YAAI,QAAQ;AACZ,YAAI;AACF,cAAI,CAAC,KAAK,QAAQ,GAAG;AACnB,iBAAK,QAAQ,IAAI;AACjB,eAAG;AACD,oBAAM,MAAM,KAAK,QAAQ,EAAE;AAE3B,oBAAM,KAAK,IAAI,WAAW,IAAI,IAC1BA,IAAG,SAAS,KAAK,GAAG,GAAG,KAAK,GAAG,IAAI,QAAQ,IAAI;AACnD,kBAAI,CAAC,KAAK,YAAY,EAAE,IAAI,GAAG;AAC7B;AAAA,YACJ,SAAS;AACT,iBAAK,QAAQ,IAAI;AAAA,UACnB;AACA,kBAAQ;AAAA,QACV,UAAE;AACA,cAAI;AACF,iBAAK,MAAM,EAAE;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG,MAAM,UAAU;AACrD,gBAAM,KAAK,KAAK,GAAG;AACnB,eAAK,GAAG,IAAI;AACZ,UAAAA,IAAG,UAAU,EAAE;AACf,eAAK,KAAK,OAAO;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAEA,QAAM,cAAN,cAA0B,GAAG;AAAA,MAC3B,YAAaE,OAAM,KAAK;AACtB,cAAM,OAAO,CAAC;AACd,cAAM,GAAG;AACT,aAAK,WAAW;AAChB,aAAK,WAAW;AAChB,aAAK,QAAQ,IAAI;AACjB,aAAK,QAAQ,IAAI;AACjB,aAAK,MAAM,IAAI;AACf,aAAK,UAAU,IAAI;AACnB,aAAK,MAAM,IAAI,CAAC;AAChB,aAAK,KAAK,IAAIA;AACd,aAAK,GAAG,IAAI,OAAO,IAAI,OAAO,WAAW,IAAI,KAAK;AAClD,aAAK,KAAK,IAAI,IAAI,SAAS,SAAY,MAAQ,IAAI;AACnD,aAAK,IAAI,IAAI,OAAO,IAAI,UAAU,WAAW,IAAI,QAAQ;AACzD,aAAK,UAAU,IAAI,OAAO,IAAI,cAAc,YAC1C,IAAI,YAAY;AAGlB,cAAM,cAAc,KAAK,IAAI,MAAM,OAAO,OAAO;AACjD,aAAK,YAAY,IAAI,IAAI,UAAU;AACnC,aAAK,MAAM,IAAI,KAAK,YAAY,IAAI,cAAc,IAAI;AAEtD,YAAI,KAAK,GAAG,MAAM;AAChB,eAAK,KAAK,EAAE;AAAA,MAChB;AAAA,MAEA,KAAM,IAAI,MAAM;AACd,YAAI,OAAO,SAAS;AAClB,cAAI,KAAK,QAAQ;AACf;AACF,eAAK,QAAQ,IAAI;AAAA,QACnB;AACA,eAAO,MAAM,KAAK,IAAI,IAAI;AAAA,MAC5B;AAAA,MAGA,IAAI,KAAM;AAAE,eAAO,KAAK,GAAG;AAAA,MAAE;AAAA,MAC7B,IAAI,OAAQ;AAAE,eAAO,KAAK,KAAK;AAAA,MAAE;AAAA,MAEjC,CAAC,QAAQ,EAAG,IAAI;AACd,aAAK,MAAM,EAAE;AACb,aAAK,QAAQ,IAAI;AACjB,aAAK,KAAK,SAAS,EAAE;AAAA,MACvB;AAAA,MAEA,CAAC,KAAK,IAAK;AACT,QAAAF,IAAG;AAAA,UAAK,KAAK,KAAK;AAAA,UAAG,KAAK,MAAM;AAAA,UAAG,KAAK,KAAK;AAAA,UAC3C,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,IAAI,EAAE;AAAA,QAAC;AAAA,MACrC;AAAA,MAEA,CAAC,OAAO,EAAG,IAAI,IAAI;AACjB,YAAI,KAAK,YAAY,KACjB,KAAK,MAAM,MAAM,QACjB,MAAM,GAAG,SAAS,UAAU;AAC9B,eAAK,MAAM,IAAI;AACf,eAAK,KAAK,EAAE;AAAA,QACd,WAAW;AACT,eAAK,QAAQ,EAAE,EAAE;AAAA,aACd;AACH,eAAK,GAAG,IAAI;AACZ,eAAK,KAAK,QAAQ,EAAE;AACpB,eAAK,MAAM,EAAE;AAAA,QACf;AAAA,MACF;AAAA,MAEA,IAAK,KAAK,KAAK;AACb,YAAI;AACF,eAAK,MAAM,KAAK,GAAG;AAErB,aAAK,MAAM,IAAI;AAGf,YAAI,CAAC,KAAK,QAAQ,KAAK,CAAC,KAAK,MAAM,EAAE,UACjC,OAAO,KAAK,GAAG,MAAM;AACvB,eAAK,QAAQ,EAAE,MAAM,CAAC;AACxB,eAAO;AAAA,MACT;AAAA,MAEA,MAAO,KAAK,KAAK;AACf,YAAI,OAAO,QAAQ;AACjB,gBAAM,OAAO,KAAK,KAAK,GAAG;AAE5B,YAAI,KAAK,MAAM,GAAG;AAChB,eAAK,KAAK,SAAS,IAAI,MAAM,qBAAqB,CAAC;AACnD,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,GAAG,MAAM,QAAQ,KAAK,QAAQ,KAAK,KAAK,MAAM,EAAE,QAAQ;AAC/D,eAAK,MAAM,EAAE,KAAK,GAAG;AACrB,eAAK,UAAU,IAAI;AACnB,iBAAO;AAAA,QACT;AAEA,aAAK,QAAQ,IAAI;AACjB,aAAK,MAAM,EAAE,GAAG;AAChB,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,MAAM,EAAG,KAAK;AACb,QAAAA,IAAG,MAAM,KAAK,GAAG,GAAG,KAAK,GAAG,IAAI,QAAQ,KAAK,IAAI,GAAG,CAAC,IAAI,OACvD,KAAK,QAAQ,EAAE,IAAI,EAAE,CAAC;AAAA,MAC1B;AAAA,MAEA,CAAC,QAAQ,EAAG,IAAI,IAAI;AAClB,YAAI;AACF,eAAK,QAAQ,EAAE,EAAE;AAAA,aACd;AACH,cAAI,KAAK,IAAI,MAAM;AACjB,iBAAK,IAAI,KAAK;AAChB,cAAI,KAAK,MAAM,EAAE;AACf,iBAAK,MAAM,EAAE;AAAA,eACV;AACH,iBAAK,QAAQ,IAAI;AAEjB,gBAAI,KAAK,MAAM,KAAK,CAAC,KAAK,SAAS,GAAG;AACpC,mBAAK,SAAS,IAAI;AAClB,mBAAK,MAAM,EAAE;AACb,mBAAK,KAAK,QAAQ;AAAA,YACpB,WAAW,KAAK,UAAU,GAAG;AAC3B,mBAAK,UAAU,IAAI;AACnB,mBAAK,KAAK,OAAO;AAAA,YACnB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,MAAM,EAAE,WAAW,GAAG;AAC7B,cAAI,KAAK,MAAM;AACb,iBAAK,QAAQ,EAAE,MAAM,CAAC;AAAA,QAC1B,WAAW,KAAK,MAAM,EAAE,WAAW;AACjC,eAAK,MAAM,EAAE,KAAK,MAAM,EAAE,IAAI,CAAC;AAAA,aAC5B;AACH,gBAAM,QAAQ,KAAK,MAAM;AACzB,eAAK,MAAM,IAAI,CAAC;AAChB;AAAA,YAAO,KAAK,GAAG;AAAA,YAAG;AAAA,YAAO,KAAK,IAAI;AAAA,YAChC,CAAC,IAAI,OAAO,KAAK,QAAQ,EAAE,IAAI,EAAE;AAAA,UAAC;AAAA,QACtC;AAAA,MACF;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG,MAAM,UAAU;AACrD,gBAAM,KAAK,KAAK,GAAG;AACnB,eAAK,GAAG,IAAI;AACZ,UAAAA,IAAG,MAAM,IAAI,QAAM,KAAK,KAAK,KAAK,SAAS,EAAE,IAAI,KAAK,KAAK,OAAO,CAAC;AAAA,QACrE;AAAA,MACF;AAAA,IACF;AAEA,QAAM,kBAAN,cAA8B,YAAY;AAAA,MACxC,CAAC,KAAK,IAAK;AACT,YAAI;AAGJ,YAAI,KAAK,YAAY,KAAK,KAAK,MAAM,MAAM,MAAM;AAC/C,cAAI;AACF,iBAAKA,IAAG,SAAS,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK,KAAK,CAAC;AAAA,UACzD,SAAS,IAAI;AACX,gBAAI,GAAG,SAAS,UAAU;AACxB,mBAAK,MAAM,IAAI;AACf,qBAAO,KAAK,KAAK,EAAE;AAAA,YACrB;AACE,oBAAM;AAAA,UACV;AAAA,QACF;AACE,eAAKA,IAAG,SAAS,KAAK,KAAK,GAAG,KAAK,MAAM,GAAG,KAAK,KAAK,CAAC;AAEzD,aAAK,OAAO,EAAE,MAAM,EAAE;AAAA,MACxB;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,YAAI,KAAK,UAAU,KAAK,OAAO,KAAK,GAAG,MAAM,UAAU;AACrD,gBAAM,KAAK,KAAK,GAAG;AACnB,eAAK,GAAG,IAAI;AACZ,UAAAA,IAAG,UAAU,EAAE;AACf,eAAK,KAAK,OAAO;AAAA,QACnB;AAAA,MACF;AAAA,MAEA,CAAC,MAAM,EAAG,KAAK;AAEb,YAAI,QAAQ;AACZ,YAAI;AACF,eAAK,QAAQ;AAAA,YAAE;AAAA,YACbA,IAAG,UAAU,KAAK,GAAG,GAAG,KAAK,GAAG,IAAI,QAAQ,KAAK,IAAI,CAAC;AAAA,UAAC;AACzD,kBAAQ;AAAA,QACV,UAAE;AACA,cAAI;AACF,gBAAI;AAAE,mBAAK,MAAM,EAAE;AAAA,YAAE,SAAS,GAAG;AAAA,YAAC;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAEA,YAAQ,aAAa;AACrB,YAAQ,iBAAiB;AAEzB,YAAQ,cAAc;AACtB,YAAQ,kBAAkB;AAAA;AAAA;;;ACra1B;AAAA;AAAA;AAsBA,QAAM,SAAS;AACf,QAAM,SAAS;AACf,QAAM,KAAK,UAAQ,QAAQ;AAC3B,QAAM,UAAU;AAChB,QAAM,mBAAmB,OAAO;AAChC,QAAM,QAAQ;AACd,QAAM,MAAM;AACZ,QAAM,OAAO;AACb,QAAM,EAAE,SAAS,IAAI,UAAQ,SAAS;AAEtC,QAAM,aAAa,OAAO,KAAK,CAAC,IAAM,GAAI,CAAC;AAC3C,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,KAAK,OAAO,gBAAgB;AAClC,QAAM,MAAM,OAAO,sBAAsB;AACzC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,kBAAkB,OAAO,iBAAiB;AAChD,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,gBAAgB,OAAO,eAAe;AAC5C,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,eAAe,OAAO,cAAc;AAC1C,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,OAAO,OAAO,QAAQ;AAC5B,QAAM,kBAAkB,OAAO,eAAe;AAC9C,QAAM,iBAAiB,OAAO,cAAc;AAC5C,QAAM,UAAU,OAAO,QAAQ;AAC/B,QAAM,cAAc,OAAO,aAAa;AAExC,QAAMI,QAAO,OAAK;AAElB,WAAO,UAAU,OAAO,MAAM,eAAe,GAAG;AAAA,MAC9C,YAAa,KAAK;AAChB,cAAM,OAAO,CAAC;AACd,cAAM,GAAG;AAET,aAAK,OAAO,IAAI,QAAQ;AAIxB,aAAK,eAAe,IAAI;AAGxB,aAAK,GAAG,MAAM,OAAK;AACjB,cAAI,KAAK,KAAK,MAAM,WAAW,KAAK,eAAe,MAAM,OAAO;AAG9D,iBAAK,KAAK,mBAAmB,6BAA6B;AAAA,UAC5D;AAAA,QACF,CAAC;AAED,YAAI,IAAI,QAAQ;AACd,eAAK,GAAG,MAAM,IAAI,MAAM;AAAA,QAC1B,OAAO;AACL,eAAK,GAAG,MAAM,OAAK;AACjB,iBAAK,KAAK,WAAW;AACrB,iBAAK,KAAK,QAAQ;AAClB,iBAAK,KAAK,KAAK;AAAA,UACjB,CAAC;AAAA,QACH;AAEA,aAAK,SAAS,CAAC,CAAC,IAAI;AACpB,aAAK,mBAAmB,IAAI,oBAAoB;AAChD,aAAK,SAAS,OAAO,IAAI,WAAW,aAAa,IAAI,SAASA;AAI9D,cAAM,QAAS,IAAI,SACf,IAAI,KAAK,SAAS,SAAS,KAAK,IAAI,KAAK,SAAS,MAAM;AAG5D,aAAK,SAAS,CAAC,IAAI,QAAQ,IAAI,WAAW,SAAY,IAAI,SACtD,QAAQ,SACR;AAGJ,aAAK,WAAW;AAChB,aAAK,WAAW;AAEhB,aAAK,KAAK,IAAI,IAAI,QAAQ;AAC1B,aAAK,MAAM,IAAI;AACf,aAAK,SAAS,IAAI;AAClB,aAAK,UAAU,IAAI;AACnB,aAAK,KAAK,IAAI;AACd,aAAK,IAAI,IAAI;AACb,aAAK,EAAE,IAAI;AACX,aAAK,GAAG,IAAI;AACZ,aAAK,KAAK,IAAI;AACd,aAAK,KAAK,IAAI;AACd,aAAK,OAAO,IAAI;AAChB,aAAK,cAAc,IAAI;AACvB,aAAK,OAAO,IAAI;AAEhB,aAAK,GAAG,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;AAExC,YAAI,OAAO,IAAI,WAAW,YAAY;AACpC,eAAK,GAAG,QAAQ,IAAI,MAAM;AAAA,QAC5B;AACA,YAAI,OAAO,IAAI,YAAY,YAAY;AACrC,eAAK,GAAG,SAAS,IAAI,OAAO;AAAA,QAC9B;AAAA,MACF;AAAA,MAEA,CAAC,aAAa,EAAG,OAAO,UAAU;AAChC,YAAI,KAAK,eAAe,MAAM,MAAM;AAClC,eAAK,eAAe,IAAI;AAAA,QAC1B;AACA,YAAI;AACJ,YAAI;AACF,mBAAS,IAAI,OAAO,OAAO,UAAU,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;AAAA,QAC1D,SAAS,IAAI;AACX,iBAAO,KAAK,KAAK,qBAAqB,EAAE;AAAA,QAC1C;AAEA,YAAI,OAAO,WAAW;AACpB,cAAI,KAAK,cAAc,GAAG;AACxB,iBAAK,OAAO,IAAI;AAEhB,gBAAI,KAAK,KAAK,MAAM,SAAS;AAC3B,mBAAK,KAAK,IAAI;AAAA,YAChB;AACA,iBAAK,IAAI,EAAE,KAAK;AAAA,UAClB,OAAO;AACL,iBAAK,cAAc,IAAI;AACvB,iBAAK,IAAI,EAAE,WAAW;AAAA,UACxB;AAAA,QACF,OAAO;AACL,eAAK,cAAc,IAAI;AACvB,cAAI,CAAC,OAAO,YAAY;AACtB,iBAAK,KAAK,qBAAqB,oBAAoB,EAAE,OAAO,CAAC;AAAA,UAC/D,WAAW,CAAC,OAAO,MAAM;AACvB,iBAAK,KAAK,qBAAqB,oBAAoB,EAAE,OAAO,CAAC;AAAA,UAC/D,OAAO;AACL,kBAAM,OAAO,OAAO;AACpB,gBAAI,oBAAoB,KAAK,IAAI,KAAK,CAAC,OAAO,UAAU;AACtD,mBAAK,KAAK,qBAAqB,qBAAqB,EAAE,OAAO,CAAC;AAAA,YAChE,WAAW,CAAC,oBAAoB,KAAK,IAAI,KAAK,OAAO,UAAU;AAC7D,mBAAK,KAAK,qBAAqB,sBAAsB,EAAE,OAAO,CAAC;AAAA,YACjE,OAAO;AACL,oBAAM,QAAQ,KAAK,UAAU,IAAI,IAAI,MAAM,QAAQ,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC;AAItE,kBAAI,CAAC,KAAK,eAAe,GAAG;AAC1B,oBAAI,MAAM,QAAQ;AAEhB,wBAAM,QAAQ,MAAM;AAClB,wBAAI,CAAC,MAAM,SAAS;AAClB,2BAAK,eAAe,IAAI;AAAA,oBAC1B;AAAA,kBACF;AACA,wBAAM,GAAG,OAAO,KAAK;AAAA,gBACvB,OAAO;AACL,uBAAK,eAAe,IAAI;AAAA,gBAC1B;AAAA,cACF;AAEA,kBAAI,MAAM,MAAM;AACd,oBAAI,MAAM,OAAO,KAAK,kBAAkB;AACtC,wBAAM,SAAS;AACf,uBAAK,IAAI,EAAE,gBAAgB,KAAK;AAChC,uBAAK,KAAK,IAAI;AACd,wBAAM,OAAO;AAAA,gBACf,WAAW,MAAM,OAAO,GAAG;AACzB,uBAAK,IAAI,IAAI;AACb,wBAAM,GAAG,QAAQ,OAAK,KAAK,IAAI,KAAK,CAAC;AACrC,uBAAK,KAAK,IAAI;AAAA,gBAChB;AAAA,cACF,OAAO;AACL,qBAAK,EAAE,IAAI;AACX,sBAAM,SAAS,MAAM,UAAU,CAAC,KAAK,OAAO,MAAM,MAAM,KAAK;AAE7D,oBAAI,MAAM,QAAQ;AAEhB,uBAAK,IAAI,EAAE,gBAAgB,KAAK;AAChC,uBAAK,KAAK,IAAI,MAAM,SAAS,WAAW;AACxC,wBAAM,OAAO;AAAA,gBACf,OAAO;AACL,sBAAI,MAAM,QAAQ;AAChB,yBAAK,KAAK,IAAI;AAAA,kBAChB,OAAO;AACL,yBAAK,KAAK,IAAI;AACd,0BAAM,IAAI;AAAA,kBACZ;AAEA,sBAAI,CAAC,KAAK,SAAS,GAAG;AACpB,yBAAK,KAAK,EAAE,KAAK,KAAK;AACtB,yBAAK,SAAS,EAAE;AAAA,kBAClB,OAAO;AACL,yBAAK,KAAK,EAAE,KAAK,KAAK;AAAA,kBACxB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,CAAC,WAAW,IAAK;AACf,iBAAS,MAAM,KAAK,KAAK,OAAO,CAAC;AAAA,MACnC;AAAA,MAEA,CAAC,YAAY,EAAG,OAAO;AACrB,YAAI,KAAK;AAET,YAAI,CAAC,OAAO;AACV,eAAK,SAAS,IAAI;AAClB,eAAK;AAAA,QACP,WAAW,MAAM,QAAQ,KAAK,GAAG;AAC/B,eAAK,KAAK,MAAM,MAAM,KAAK;AAAA,QAC7B,OAAO;AACL,eAAK,SAAS,IAAI;AAClB,eAAK,KAAK,SAAS,KAAK;AACxB,cAAI,CAAC,MAAM,YAAY;AACrB,kBAAM,GAAG,OAAO,OAAK,KAAK,SAAS,EAAE,CAAC;AACtC,iBAAK;AAAA,UACP;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,SAAS,IAAK;AACb,WAAG;AAAA,QAAC,SAAS,KAAK,YAAY,EAAE,KAAK,KAAK,EAAE,MAAM,CAAC;AAEnD,YAAI,CAAC,KAAK,KAAK,EAAE,QAAQ;AAQvB,gBAAM,KAAK,KAAK,SAAS;AACzB,gBAAM,WAAW,CAAC,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG;AACrD,cAAI,UAAU;AACZ,gBAAI,CAAC,KAAK,OAAO,GAAG;AAClB,mBAAK,KAAK,OAAO;AAAA,YACnB;AAAA,UACF,OAAO;AACL,eAAG,KAAK,SAAS,OAAK,KAAK,KAAK,OAAO,CAAC;AAAA,UAC1C;AAAA,QACF;AAAA,MACF;AAAA,MAEA,CAAC,WAAW,EAAG,OAAO,UAAU;AAE9B,cAAM,QAAQ,KAAK,UAAU;AAC7B,cAAM,KAAK,MAAM;AACjB,cAAM,IAAK,MAAM,MAAM,UAAU,aAAa,IAAK,QAC/C,MAAM,MAAM,UAAU,WAAW,EAAE;AAEvC,cAAM,MAAM,CAAC;AAEb,YAAI,CAAC,MAAM,aAAa;AACtB,eAAK,KAAK,IAAI;AACd,eAAK,UAAU,IAAI;AACnB,gBAAM,IAAI;AAAA,QACZ;AAEA,eAAO,EAAE;AAAA,MACX;AAAA,MAEA,CAAC,WAAW,EAAG,OAAO,UAAU;AAC9B,cAAM,QAAQ,KAAK,UAAU;AAC7B,cAAM,MAAM,KAAK,WAAW,EAAE,OAAO,QAAQ;AAG7C,YAAI,CAAC,KAAK,UAAU,GAAG;AACrB,eAAK,QAAQ,EAAE,KAAK;AAAA,QACtB;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,IAAI,EAAG,IAAI,MAAM,OAAO;AACvB,YAAI,CAAC,KAAK,KAAK,EAAE,UAAU,CAAC,KAAK,SAAS,GAAG;AAC3C,eAAK,KAAK,IAAI,MAAM,KAAK;AAAA,QAC3B,OAAO;AACL,eAAK,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC;AAAA,QACpC;AAAA,MACF;AAAA,MAEA,CAAC,QAAQ,EAAG,OAAO;AACjB,aAAK,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;AAC7B,gBAAQ,MAAM,MAAM;AAAA,UAClB,KAAK;AAAA,UACL,KAAK;AACH,iBAAK,EAAE,IAAI,IAAI,MAAM,KAAK,IAAI,GAAG,KAAK,EAAE,GAAG,KAAK;AAChD;AAAA,UAEF,KAAK;AACH,iBAAK,GAAG,IAAI,IAAI,MAAM,KAAK,IAAI,GAAG,KAAK,GAAG,GAAG,IAAI;AACjD;AAAA,UAEF,KAAK;AAAA,UACL,KAAK;AACH,iBAAK,EAAE,IAAI,KAAK,EAAE,KAAK,uBAAO,OAAO,IAAI;AACzC,iBAAK,EAAE,EAAE,OAAO,KAAK,IAAI,EAAE,QAAQ,QAAQ,EAAE;AAC7C;AAAA,UAEF,KAAK;AACH,iBAAK,EAAE,IAAI,KAAK,EAAE,KAAK,uBAAO,OAAO,IAAI;AACzC,iBAAK,EAAE,EAAE,WAAW,KAAK,IAAI,EAAE,QAAQ,QAAQ,EAAE;AACjD;AAAA,UAGF;AAAS,kBAAM,IAAI,MAAM,mBAAmB,MAAM,IAAI;AAAA,QACxD;AAAA,MACF;AAAA,MAEA,MAAO,OAAO;AACZ,aAAK,OAAO,IAAI;AAChB,aAAK,KAAK,SAAS,KAAK;AAExB,aAAK,KAAK,aAAa,OAAO,EAAE,aAAa,MAAM,CAAC;AAAA,MACtD;AAAA,MAEA,MAAO,OAAO;AACZ,YAAI,KAAK,OAAO,GAAG;AACjB;AAAA,QACF;AAGA,cAAM,YAAY,KAAK,KAAK,MAAM,QAChC,KAAK,WAAW,UAAa,KAAK,KAAK,MAAM;AAC/C,YAAI,aAAa,OAAO;AACtB,cAAI,KAAK,MAAM,GAAG;AAChB,oBAAQ,OAAO,OAAO,CAAC,KAAK,MAAM,GAAG,KAAK,CAAC;AAC3C,iBAAK,MAAM,IAAI;AAAA,UACjB;AACA,cAAI,MAAM,SAAS,WAAW,QAAQ;AACpC,iBAAK,MAAM,IAAI;AACf,mBAAO;AAAA,UACT;AAGA,mBAAS,IAAI,GAAG,KAAK,KAAK,MAAM,QAAQ,IAAI,WAAW,QAAQ,KAAK;AAClE,gBAAI,MAAM,CAAC,MAAM,WAAW,CAAC,GAAG;AAC9B,mBAAK,KAAK,IAAI;AAAA,YAChB;AAAA,UACF;AAEA,gBAAM,cAAc,KAAK,WAAW;AACpC,cAAI,KAAK,KAAK,MAAM,SAAS,aAAa;AAKxC,gBAAI,MAAM,SAAS,KAAK;AACtB,kBAAI,KAAK,KAAK,GAAG;AACf,qBAAK,SAAS;AAAA,cAChB,OAAO;AACL,qBAAK,MAAM,IAAI;AACf,uBAAO;AAAA,cACT;AAAA,YACF,OAAO;AAGL,kBAAI;AACF,oBAAI,OAAO,MAAM,MAAM,GAAG,GAAG,CAAC;AAC9B,qBAAK,SAAS;AAAA,cAChB,SAAS,GAAG;AACV,qBAAK,SAAS;AAAA,cAChB;AAAA,YACF;AAAA,UACF;AAEA,cAAI,KAAK,KAAK,MAAM,QAAS,KAAK,KAAK,MAAM,SAAS,KAAK,QAAS;AAClE,kBAAM,QAAQ,KAAK,KAAK;AACxB,iBAAK,KAAK,IAAI;AACd,iBAAK,KAAK,IAAI,KAAK,KAAK,MAAM,OAC1B,IAAI,KAAK,MAAM,IACf,IAAI,KAAK,iBAAiB;AAC9B,iBAAK,KAAK,EAAE,GAAG,QAAQ,CAAAC,WAAS,KAAK,YAAY,EAAEA,MAAK,CAAC;AACzD,iBAAK,KAAK,EAAE,GAAG,SAAS,QAAM,KAAK,MAAM,EAAE,CAAC;AAC5C,iBAAK,KAAK,EAAE,GAAG,OAAO,OAAK;AACzB,mBAAK,KAAK,IAAI;AACd,mBAAK,YAAY,EAAE;AAAA,YACrB,CAAC;AACD,iBAAK,OAAO,IAAI;AAChB,kBAAMC,OAAM,KAAK,KAAK,EAAE,QAAQ,QAAQ,OAAO,EAAE,KAAK;AACtD,iBAAK,OAAO,IAAI;AAChB,mBAAOA;AAAA,UACT;AAAA,QACF;AAEA,aAAK,OAAO,IAAI;AAChB,YAAI,KAAK,KAAK,GAAG;AACf,eAAK,KAAK,EAAE,MAAM,KAAK;AAAA,QACzB,OAAO;AACL,eAAK,YAAY,EAAE,KAAK;AAAA,QAC1B;AACA,aAAK,OAAO,IAAI;AAGhB,cAAM,MACJ,KAAK,KAAK,EAAE,SAAS,QACrB,KAAK,SAAS,IAAI,KAAK,SAAS,EAAE,UAClC;AAGF,YAAI,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,QAAQ;AAC/B,eAAK,SAAS,EAAE,KAAK,SAAS,OAAK,KAAK,KAAK,OAAO,CAAC;AAAA,QACvD;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,YAAY,EAAG,GAAG;AACjB,YAAI,KAAK,CAAC,KAAK,OAAO,GAAG;AACvB,eAAK,MAAM,IAAI,KAAK,MAAM,IAAI,OAAO,OAAO,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,IAAI;AAAA,QACnE;AAAA,MACF;AAAA,MAEA,CAAC,QAAQ,IAAK;AACZ,YAAI,KAAK,KAAK,KACV,CAAC,KAAK,UAAU,KAChB,CAAC,KAAK,OAAO,KACb,CAAC,KAAK,SAAS,GAAG;AACpB,eAAK,UAAU,IAAI;AACnB,gBAAM,QAAQ,KAAK,UAAU;AAC7B,cAAI,SAAS,MAAM,aAAa;AAE9B,kBAAM,OAAO,KAAK,MAAM,IAAI,KAAK,MAAM,EAAE,SAAS;AAClD,iBAAK,KAAK,mBAAmB,2BAC3B,MAAM,WAAW,qBAAqB,IAAI,eAAe,EAAE,MAAM,CAAC;AACpE,gBAAI,KAAK,MAAM,GAAG;AAChB,oBAAM,MAAM,KAAK,MAAM,CAAC;AAAA,YAC1B;AACA,kBAAM,IAAI;AAAA,UACZ;AACA,eAAK,IAAI,EAAE,IAAI;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,CAAC,YAAY,EAAG,OAAO;AACrB,YAAI,KAAK,SAAS,GAAG;AACnB,eAAK,YAAY,EAAE,KAAK;AAAA,QAC1B,WAAW,CAAC,SAAS,CAAC,KAAK,MAAM,GAAG;AAClC,eAAK,QAAQ,EAAE;AAAA,QACjB,OAAO;AACL,eAAK,SAAS,IAAI;AAClB,cAAI,KAAK,MAAM,GAAG;AAChB,iBAAK,YAAY,EAAE,KAAK;AACxB,kBAAM,IAAI,KAAK,MAAM;AACrB,iBAAK,MAAM,IAAI;AACf,iBAAK,eAAe,EAAE,CAAC;AAAA,UACzB,OAAO;AACL,iBAAK,eAAe,EAAE,KAAK;AAAA,UAC7B;AAEA,iBAAO,KAAK,MAAM,KACd,KAAK,MAAM,EAAE,UAAU,OACvB,CAAC,KAAK,OAAO,KACb,CAAC,KAAK,OAAO,GAAG;AAClB,kBAAM,IAAI,KAAK,MAAM;AACrB,iBAAK,MAAM,IAAI;AACf,iBAAK,eAAe,EAAE,CAAC;AAAA,UACzB;AACA,eAAK,SAAS,IAAI;AAAA,QACpB;AAEA,YAAI,CAAC,KAAK,MAAM,KAAK,KAAK,KAAK,GAAG;AAChC,eAAK,QAAQ,EAAE;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,CAAC,eAAe,EAAG,OAAO;AAGxB,YAAI,WAAW;AACf,cAAM,SAAS,MAAM;AACrB,eAAO,WAAW,OAAO,UAAU,CAAC,KAAK,OAAO,KAAK,CAAC,KAAK,OAAO,GAAG;AACnE,kBAAQ,KAAK,KAAK,GAAG;AAAA,YACnB,KAAK;AAAA,YACL,KAAK;AACH,mBAAK,aAAa,EAAE,OAAO,QAAQ;AACnC,0BAAY;AACZ;AAAA,YAEF,KAAK;AAAA,YACL,KAAK;AACH,0BAAY,KAAK,WAAW,EAAE,OAAO,QAAQ;AAC7C;AAAA,YAEF,KAAK;AACH,0BAAY,KAAK,WAAW,EAAE,OAAO,QAAQ;AAC7C;AAAA,YAGF;AACE,oBAAM,IAAI,MAAM,oBAAoB,KAAK,KAAK,CAAC;AAAA,UACnD;AAAA,QACF;AAEA,YAAI,WAAW,QAAQ;AACrB,cAAI,KAAK,MAAM,GAAG;AAChB,iBAAK,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,MAAM,QAAQ,GAAG,KAAK,MAAM,CAAC,CAAC;AAAA,UACpE,OAAO;AACL,iBAAK,MAAM,IAAI,MAAM,MAAM,QAAQ;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAK,OAAO;AACV,YAAI,CAAC,KAAK,OAAO,GAAG;AAClB,cAAI,KAAK,KAAK,GAAG;AACf,iBAAK,KAAK,EAAE,IAAI,KAAK;AAAA,UACvB,OAAO;AACL,iBAAK,KAAK,IAAI;AACd,gBAAI,KAAK,WAAW;AAAW,sBAAQ,SAAS,OAAO,MAAM,CAAC;AAC9D,iBAAK,MAAM,KAAK;AAAA,UAClB;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA;AAAA;;;ACviBD;AAAA;AAAA;AAMA,QAAM,MAAM;AACZ,QAAM,SAAS;AACf,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAM,MAAM;AACZ,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,aAAa;AAEnB,WAAO,UAAU,CAAC,MAAM,OAAO,OAAO;AACpC,UAAI,OAAO,SAAS,YAAY;AAC9B,aAAK,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,MACnC,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC9B,gBAAQ,MAAM,OAAO,CAAC;AAAA,MACxB;AAEA,UAAI,OAAO,UAAU,YAAY;AAC/B,aAAK,OAAO,QAAQ;AAAA,MACtB;AAEA,UAAI,CAAC,OAAO;AACV,gBAAQ,CAAC;AAAA,MACX,OAAO;AACL,gBAAQ,MAAM,KAAK,KAAK;AAAA,MAC1B;AAEA,YAAM,MAAM,IAAI,IAAI;AAEpB,UAAI,IAAI,QAAQ,OAAO,OAAO,YAAY;AACxC,cAAM,IAAI,UAAU,+CAA+C;AAAA,MACrE;AAEA,UAAI,CAAC,IAAI,QAAQ,OAAO,OAAO,YAAY;AACzC,cAAM,IAAI,UAAU,0CAA0C;AAAA,MAChE;AAEA,UAAI,MAAM,QAAQ;AAChB,oBAAY,KAAK,KAAK;AAAA,MACxB;AAEA,UAAI,CAAC,IAAI,UAAU;AACjB,wBAAgB,GAAG;AAAA,MACrB;AAEA,aAAO,IAAI,QAAQ,IAAI,OAAO,aAAa,GAAG,IAC1C,IAAI,OAAO,SAAS,KAAK,EAAE,IAC3B,KAAK,GAAG;AAAA,IACd;AAEA,QAAM,kBAAkB,SAAO;AAC7B,YAAM,UAAU,IAAI;AACpB,UAAI,UAAU,UAAU,OAAK;AAC3B,gBAAQ,CAAC;AACT,UAAE,OAAO;AAAA,MACX,IAAI,OAAK,EAAE,OAAO;AAAA,IACpB;AAIA,QAAM,cAAc,CAAC,KAAK,UAAU;AAClC,YAAM,MAAM,IAAI,IAAI,MAAM,IAAI,OAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;AACzD,YAAM,SAAS,IAAI;AAEnB,YAAM,SAAS,CAAC,MAAM,MAAM;AAC1B,cAAM,OAAO,KAAKA,MAAK,MAAM,IAAI,EAAE,QAAQ;AAC3C,cAAM,MAAM,SAAS,OAAO,QACxB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5B,OAAOA,MAAK,QAAQ,IAAI,GAAG,IAAI;AAEnC,YAAI,IAAI,MAAM,GAAG;AACjB,eAAO;AAAA,MACT;AAEA,UAAI,SAAS,SACT,CAAC,MAAM,UAAU,OAAO,MAAM,KAAK,KAAK,OAAO,WAAW,IAAI,CAAC,IAC/D,UAAQ,OAAO,WAAW,IAAI,CAAC;AAAA,IACrC;AAEA,QAAM,eAAe,SAAO;AAC1B,YAAM,IAAI,KAAK,GAAG;AAClB,YAAM,OAAO,IAAI;AACjB,UAAI,QAAQ;AACZ,UAAI;AACJ,UAAI;AACF,cAAM,OAAOD,IAAG,SAAS,IAAI;AAC7B,cAAM,WAAW,IAAI,eAAe,KAAK,OAAO;AAChD,YAAI,KAAK,OAAO,UAAU;AACxB,YAAE,IAAIA,IAAG,aAAa,IAAI,CAAC;AAAA,QAC7B,OAAO;AACL,cAAI,MAAM;AACV,gBAAM,MAAM,OAAO,YAAY,QAAQ;AACvC,eAAKA,IAAG,SAAS,MAAM,GAAG;AAC1B,iBAAO,MAAM,KAAK,MAAM;AACtB,kBAAM,YAAYA,IAAG,SAAS,IAAI,KAAK,GAAG,UAAU,GAAG;AACvD,mBAAO;AACP,cAAE,MAAM,IAAI,MAAM,GAAG,SAAS,CAAC;AAAA,UACjC;AACA,YAAE,IAAI;AAAA,QACR;AACA,gBAAQ;AAAA,MACV,UAAE;AACA,YAAI,SAAS,IAAI;AACf,cAAI;AACF,YAAAA,IAAG,UAAU,EAAE;AAAA,UACjB,SAAS,IAAI;AAAA,UAAC;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAEA,QAAM,WAAW,CAAC,KAAK,OAAO;AAC5B,YAAM,QAAQ,IAAI,OAAO,GAAG;AAC5B,YAAM,WAAW,IAAI,eAAe,KAAK,OAAO;AAEhD,YAAM,OAAO,IAAI;AACjB,YAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,WAAW;AACzC,cAAM,GAAG,SAAS,MAAM;AACxB,cAAM,GAAG,OAAO,OAAO;AAEvB,QAAAA,IAAG,KAAK,MAAM,CAAC,IAAI,SAAS;AAC1B,cAAI,IAAI;AACN,mBAAO,EAAE;AAAA,UACX,OAAO;AACL,kBAAM,SAAS,IAAI,IAAI,WAAW,MAAM;AAAA,cACtC;AAAA,cACA,MAAM,KAAK;AAAA,YACb,CAAC;AACD,mBAAO,GAAG,SAAS,MAAM;AACzB,mBAAO,KAAK,KAAK;AAAA,UACnB;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,aAAO,KAAK,EAAE,KAAK,IAAI,EAAE,IAAI;AAAA,IAC/B;AAEA,QAAM,OAAO,SAAO,IAAI,OAAO,GAAG;AAAA;AAAA;;;AC1IlC;AAAA;AAAA;AAGA,QAAM,MAAM;AAEZ,QAAM,OAAO;AACb,QAAM,MAAM;AACZ,QAAM,IAAI;AACV,QAAME,QAAO,UAAQ,MAAM;AAE3B,WAAO,UAAU,CAAC,MAAM,OAAO,OAAO;AACpC,UAAI,OAAO,UAAU,YAAY;AAC/B,aAAK;AAAA,MACP;AAEA,UAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,gBAAQ,MAAM,OAAO,CAAC;AAAA,MACxB;AAEA,UAAI,CAAC,SAAS,CAAC,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,QAAQ;AACpD,cAAM,IAAI,UAAU,mCAAmC;AAAA,MACzD;AAEA,cAAQ,MAAM,KAAK,KAAK;AAExB,YAAM,MAAM,IAAI,IAAI;AAEpB,UAAI,IAAI,QAAQ,OAAO,OAAO,YAAY;AACxC,cAAM,IAAI,UAAU,+CAA+C;AAAA,MACrE;AAEA,UAAI,CAAC,IAAI,QAAQ,OAAO,OAAO,YAAY;AACzC,cAAM,IAAI,UAAU,0CAA0C;AAAA,MAChE;AAEA,aAAO,IAAI,QAAQ,IAAI,OAAO,eAAe,KAAK,KAAK,IACnD,IAAI,OAAO,WAAW,KAAK,OAAO,EAAE,IACpC,IAAI,OAAO,WAAW,KAAK,KAAK,IAChC,OAAO,KAAK,KAAK;AAAA,IACvB;AAEA,QAAM,iBAAiB,CAAC,KAAK,UAAU;AACrC,YAAM,IAAI,IAAI,KAAK,KAAK,GAAG;AAC3B,YAAM,SAAS,IAAI,IAAI,gBAAgB,IAAI,MAAM;AAAA,QAC/C,MAAM,IAAI,QAAQ;AAAA,MACpB,CAAC;AACD,QAAE,KAAK,MAAM;AACb,mBAAa,GAAG,KAAK;AAAA,IACvB;AAEA,QAAM,aAAa,CAAC,KAAK,OAAO,OAAO;AACrC,YAAM,IAAI,IAAI,KAAK,GAAG;AACtB,YAAM,SAAS,IAAI,IAAI,YAAY,IAAI,MAAM;AAAA,QAC3C,MAAM,IAAI,QAAQ;AAAA,MACpB,CAAC;AACD,QAAE,KAAK,MAAM;AAEb,YAAM,UAAU,IAAI,QAAQ,CAAC,KAAK,QAAQ;AACxC,eAAO,GAAG,SAAS,GAAG;AACtB,eAAO,GAAG,SAAS,GAAG;AACtB,UAAE,GAAG,SAAS,GAAG;AAAA,MACnB,CAAC;AAED,oBAAc,GAAG,KAAK;AAEtB,aAAO,KAAK,QAAQ,KAAK,IAAI,EAAE,IAAI;AAAA,IACrC;AAEA,QAAM,eAAe,CAAC,GAAG,UAAU;AACjC,YAAM,QAAQ,UAAQ;AACpB,YAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AAC1B,YAAE;AAAA,YACA,MAAMA,MAAK,QAAQ,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC;AAAA,YACvC,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,WAAS,EAAE,IAAI,KAAK;AAAA,UAC/B,CAAC;AAAA,QACH,OAAO;AACL,YAAE,IAAI,IAAI;AAAA,QACZ;AAAA,MACF,CAAC;AACD,QAAE,IAAI;AAAA,IACR;AAEA,QAAM,gBAAgB,CAAC,GAAG,UAAU;AAClC,aAAO,MAAM,QAAQ;AACnB,cAAM,OAAO,MAAM,MAAM;AACzB,YAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AAC1B,iBAAO,EAAE;AAAA,YACP,MAAMA,MAAK,QAAQ,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC;AAAA,YACvC,UAAU;AAAA,YACV,SAAS,WAAS,EAAE,IAAI,KAAK;AAAA,UAC/B,CAAC,EAAE,KAAK,OAAK,cAAc,GAAG,KAAK,CAAC;AAAA,QACtC,OAAO;AACL,YAAE,IAAI,IAAI;AAAA,QACZ;AAAA,MACF;AACA,QAAE,IAAI;AAAA,IACR;AAEA,QAAM,aAAa,CAAC,KAAK,UAAU;AACjC,YAAM,IAAI,IAAI,KAAK,KAAK,GAAG;AAC3B,mBAAa,GAAG,KAAK;AACrB,aAAO;AAAA,IACT;AAEA,QAAM,SAAS,CAAC,KAAK,UAAU;AAC7B,YAAM,IAAI,IAAI,KAAK,GAAG;AACtB,oBAAc,GAAG,KAAK;AACtB,aAAO;AAAA,IACT;AAAA;AAAA;;;AC9GA;AAAA;AAAA;AAGA,QAAM,MAAM;AACZ,QAAM,OAAO;AACb,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAM,MAAM;AACZ,QAAM,IAAI;AACV,QAAMC,QAAO,UAAQ,MAAM;AAQ3B,QAAM,SAAS;AAEf,WAAO,UAAU,CAAC,MAAM,OAAO,OAAO;AACpC,YAAM,MAAM,IAAI,IAAI;AAEpB,UAAI,CAAC,IAAI,MAAM;AACb,cAAM,IAAI,UAAU,kBAAkB;AAAA,MACxC;AAEA,UAAI,IAAI,QAAQ,IAAI,UAAU,IAAI,KAAK,SAAS,KAAK,KAAK,IAAI,KAAK,SAAS,MAAM,GAAG;AACnF,cAAM,IAAI,UAAU,sCAAsC;AAAA,MAC5D;AAEA,UAAI,CAAC,SAAS,CAAC,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,QAAQ;AACpD,cAAM,IAAI,UAAU,mCAAmC;AAAA,MACzD;AAEA,cAAQ,MAAM,KAAK,KAAK;AAExB,aAAO,IAAI,OAAO,YAAY,KAAK,KAAK,IACpC,QAAQ,KAAK,OAAO,EAAE;AAAA,IAC5B;AAEA,QAAM,cAAc,CAAC,KAAK,UAAU;AAClC,YAAM,IAAI,IAAI,KAAK,KAAK,GAAG;AAE3B,UAAI,QAAQ;AACZ,UAAI;AACJ,UAAI;AAEJ,UAAI;AACF,YAAI;AACF,eAAKD,IAAG,SAAS,IAAI,MAAM,IAAI;AAAA,QACjC,SAAS,IAAI;AACX,cAAI,GAAG,SAAS,UAAU;AACxB,iBAAKA,IAAG,SAAS,IAAI,MAAM,IAAI;AAAA,UACjC,OAAO;AACL,kBAAM;AAAA,UACR;AAAA,QACF;AAEA,cAAM,KAAKA,IAAG,UAAU,EAAE;AAC1B,cAAM,UAAU,OAAO,MAAM,GAAG;AAEhC;AAAU,eAAK,WAAW,GAAG,WAAW,GAAG,MAAM,YAAY,KAAK;AAChE,qBAAS,SAAS,GAAG,QAAQ,GAAG,SAAS,KAAK,UAAU,OAAO;AAC7D,sBAAQA,IAAG;AAAA,gBACT;AAAA,gBAAI;AAAA,gBAAS;AAAA,gBAAQ,QAAQ,SAAS;AAAA,gBAAQ,WAAW;AAAA,cAC3D;AAEA,kBAAI,aAAa,KAAK,QAAQ,CAAC,MAAM,MAAQ,QAAQ,CAAC,MAAM,KAAM;AAChE,sBAAM,IAAI,MAAM,sCAAsC;AAAA,cACxD;AAEA,kBAAI,CAAC,OAAO;AACV,sBAAM;AAAA,cACR;AAAA,YACF;AAEA,kBAAM,IAAI,IAAI,OAAO,OAAO;AAC5B,gBAAI,CAAC,EAAE,YAAY;AACjB;AAAA,YACF;AACA,kBAAM,iBAAiB,MAAM,KAAK,KAAK,EAAE,OAAO,GAAG;AACnD,gBAAI,WAAW,iBAAiB,MAAM,GAAG,MAAM;AAC7C;AAAA,YACF;AAGA,wBAAY;AACZ,gBAAI,IAAI,YAAY;AAClB,kBAAI,WAAW,IAAI,EAAE,MAAM,EAAE,KAAK;AAAA,YACpC;AAAA,UACF;AACA,gBAAQ;AAER,mBAAW,KAAK,GAAG,UAAU,IAAI,KAAK;AAAA,MACxC,UAAE;AACA,YAAI,OAAO;AACT,cAAI;AACF,YAAAA,IAAG,UAAU,EAAE;AAAA,UACjB,SAAS,IAAI;AAAA,UAAC;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAEA,QAAM,aAAa,CAAC,KAAK,GAAG,UAAU,IAAI,UAAU;AAClD,YAAM,SAAS,IAAI,IAAI,gBAAgB,IAAI,MAAM;AAAA,QAC/C;AAAA,QACA,OAAO;AAAA,MACT,CAAC;AACD,QAAE,KAAK,MAAM;AACb,mBAAa,GAAG,KAAK;AAAA,IACvB;AAEA,QAAM,UAAU,CAAC,KAAK,OAAO,OAAO;AAClC,cAAQ,MAAM,KAAK,KAAK;AACxB,YAAM,IAAI,IAAI,KAAK,GAAG;AAEtB,YAAM,SAAS,CAAC,IAAI,MAAM,QAAQ;AAChC,cAAME,MAAK,CAAC,IAAI,QAAQ;AACtB,cAAI,IAAI;AACN,YAAAF,IAAG,MAAM,IAAI,OAAK,IAAI,EAAE,CAAC;AAAA,UAC3B,OAAO;AACL,gBAAI,MAAM,GAAG;AAAA,UACf;AAAA,QACF;AAEA,YAAI,WAAW;AACf,YAAI,SAAS,GAAG;AACd,iBAAOE,IAAG,MAAM,CAAC;AAAA,QACnB;AAEA,YAAI,SAAS;AACb,cAAM,UAAU,OAAO,MAAM,GAAG;AAChC,cAAM,SAAS,CAAC,IAAI,UAAU;AAC5B,cAAI,IAAI;AACN,mBAAOA,IAAG,EAAE;AAAA,UACd;AACA,oBAAU;AACV,cAAI,SAAS,OAAO,OAAO;AACzB,mBAAOF,IAAG;AAAA,cACR;AAAA,cAAI;AAAA,cAAS;AAAA,cAAQ,QAAQ,SAAS;AAAA,cACtC,WAAW;AAAA,cAAQ;AAAA,YACrB;AAAA,UACF;AAEA,cAAI,aAAa,KAAK,QAAQ,CAAC,MAAM,MAAQ,QAAQ,CAAC,MAAM,KAAM;AAChE,mBAAOE,IAAG,IAAI,MAAM,sCAAsC,CAAC;AAAA,UAC7D;AAGA,cAAI,SAAS,KAAK;AAChB,mBAAOA,IAAG,MAAM,QAAQ;AAAA,UAC1B;AAEA,gBAAM,IAAI,IAAI,OAAO,OAAO;AAC5B,cAAI,CAAC,EAAE,YAAY;AACjB,mBAAOA,IAAG,MAAM,QAAQ;AAAA,UAC1B;AAEA,gBAAM,iBAAiB,MAAM,KAAK,KAAK,EAAE,OAAO,GAAG;AACnD,cAAI,WAAW,iBAAiB,MAAM,MAAM;AAC1C,mBAAOA,IAAG,MAAM,QAAQ;AAAA,UAC1B;AAEA,sBAAY,iBAAiB;AAC7B,cAAI,YAAY,MAAM;AACpB,mBAAOA,IAAG,MAAM,QAAQ;AAAA,UAC1B;AAEA,cAAI,IAAI,YAAY;AAClB,gBAAI,WAAW,IAAI,EAAE,MAAM,EAAE,KAAK;AAAA,UACpC;AACA,mBAAS;AACT,UAAAF,IAAG,KAAK,IAAI,SAAS,GAAG,KAAK,UAAU,MAAM;AAAA,QAC/C;AACA,QAAAA,IAAG,KAAK,IAAI,SAAS,GAAG,KAAK,UAAU,MAAM;AAAA,MAC/C;AAEA,YAAM,UAAU,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC/C,UAAE,GAAG,SAAS,MAAM;AACpB,YAAI,OAAO;AACX,cAAM,SAAS,CAAC,IAAI,OAAO;AACzB,cAAI,MAAM,GAAG,SAAS,YAAY,SAAS,MAAM;AAC/C,mBAAO;AACP,mBAAOA,IAAG,KAAK,IAAI,MAAM,MAAM,MAAM;AAAA,UACvC;AAEA,cAAI,IAAI;AACN,mBAAO,OAAO,EAAE;AAAA,UAClB;AAEA,UAAAA,IAAG,MAAM,IAAI,CAACG,KAAI,OAAO;AACvB,gBAAIA,KAAI;AACN,qBAAOH,IAAG,MAAM,IAAI,MAAM,OAAOG,GAAE,CAAC;AAAA,YACtC;AAEA,mBAAO,IAAI,GAAG,MAAM,CAACA,KAAI,aAAa;AACpC,kBAAIA,KAAI;AACN,uBAAO,OAAOA,GAAE;AAAA,cAClB;AACA,oBAAM,SAAS,IAAI,IAAI,YAAY,IAAI,MAAM;AAAA,gBAC3C;AAAA,gBACA,OAAO;AAAA,cACT,CAAC;AACD,gBAAE,KAAK,MAAM;AACb,qBAAO,GAAG,SAAS,MAAM;AACzB,qBAAO,GAAG,SAAS,OAAO;AAC1B,4BAAc,GAAG,KAAK;AAAA,YACxB,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AACA,QAAAH,IAAG,KAAK,IAAI,MAAM,MAAM,MAAM;AAAA,MAChC,CAAC;AAED,aAAO,KAAK,QAAQ,KAAK,IAAI,EAAE,IAAI;AAAA,IACrC;AAEA,QAAM,eAAe,CAAC,GAAG,UAAU;AACjC,YAAM,QAAQ,UAAQ;AACpB,YAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AAC1B,YAAE;AAAA,YACA,MAAMC,MAAK,QAAQ,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC;AAAA,YACvC,MAAM;AAAA,YACN,UAAU;AAAA,YACV,SAAS,WAAS,EAAE,IAAI,KAAK;AAAA,UAC/B,CAAC;AAAA,QACH,OAAO;AACL,YAAE,IAAI,IAAI;AAAA,QACZ;AAAA,MACF,CAAC;AACD,QAAE,IAAI;AAAA,IACR;AAEA,QAAM,gBAAgB,CAAC,GAAG,UAAU;AAClC,aAAO,MAAM,QAAQ;AACnB,cAAM,OAAO,MAAM,MAAM;AACzB,YAAI,KAAK,OAAO,CAAC,MAAM,KAAK;AAC1B,iBAAO,EAAE;AAAA,YACP,MAAMA,MAAK,QAAQ,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC;AAAA,YACvC,UAAU;AAAA,YACV,SAAS,WAAS,EAAE,IAAI,KAAK;AAAA,UAC/B,CAAC,EAAE,KAAK,OAAK,cAAc,GAAG,KAAK,CAAC;AAAA,QACtC,OAAO;AACL,YAAE,IAAI,IAAI;AAAA,QACZ;AAAA,MACF;AACA,QAAE,IAAI;AAAA,IACR;AAAA;AAAA;;;ACrPA;AAAA;AAAA;AAIA,QAAM,MAAM;AACZ,QAAM,IAAI;AAGV,WAAO,UAAU,CAAC,MAAM,OAAO,OAAO;AACpC,YAAM,MAAM,IAAI,IAAI;AAEpB,UAAI,CAAC,IAAI,MAAM;AACb,cAAM,IAAI,UAAU,kBAAkB;AAAA,MACxC;AAEA,UAAI,IAAI,QAAQ,IAAI,UAAU,IAAI,KAAK,SAAS,KAAK,KAAK,IAAI,KAAK,SAAS,MAAM,GAAG;AACnF,cAAM,IAAI,UAAU,sCAAsC;AAAA,MAC5D;AAEA,UAAI,CAAC,SAAS,CAAC,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,QAAQ;AACpD,cAAM,IAAI,UAAU,mCAAmC;AAAA,MACzD;AAEA,cAAQ,MAAM,KAAK,KAAK;AAExB,kBAAY,GAAG;AACf,aAAO,EAAE,KAAK,OAAO,EAAE;AAAA,IACzB;AAEA,QAAM,cAAc,SAAO;AACzB,YAAM,SAAS,IAAI;AAEnB,UAAI,CAAC,IAAI,YAAY;AACnB,YAAI,aAAa,oBAAI,IAAI;AAAA,MAC3B;AAEA,UAAI,SAAS,SAAS,CAACG,OAAM,SAC3B,OAAOA,OAAM,IAAI,KAAK,EAAE,IAAI,WAAW,IAAIA,KAAI,IAAI,KAAK,SACtD,CAACA,OAAM,SAAS,EAAE,IAAI,WAAW,IAAIA,KAAI,IAAI,KAAK;AAAA,IACxD;AAAA;AAAA;;;ACvCA;AAAA;AAAA,QAAM,EAAE,UAAU,IAAI,UAAQ,MAAM;AACpC,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAM,UAAU,UAAQ;AACtB,UAAI,CAAC;AACH,eAAO,EAAE,MAAM,KAAO,IAAAA,IAAG;AAAA,eAClB,OAAO,SAAS;AACvB,eAAO,EAAE,MAAM,KAAO,IAAAA,KAAI,GAAG,KAAK;AAAA,eAC3B,OAAO,SAAS;AACvB,eAAO,EAAE,MAAM,MAAM,IAAAA,IAAG;AAAA,eACjB,OAAO,SAAS;AACvB,eAAO,EAAE,MAAM,SAAS,MAAM,CAAC,GAAG,IAAAA,IAAG;AAAA;AAErC,cAAM,IAAI,UAAU,0BAA0B;AAEhD,WAAK,QAAQ,KAAK,SAAS,KAAK,GAAG,SAASA,IAAG;AAC/C,WAAK,aAAa,UAAU,KAAK,KAAK;AACtC,WAAK,OAAO,KAAK,QAAQ,KAAK,GAAG,QAAQA,IAAG;AAC5C,WAAK,YAAY,UAAU,KAAK,IAAI;AACpC,WAAK,WAAW,KAAK,YAAY,KAAK,GAAG,YAAYA,IAAG;AACxD,WAAK,YAAY,KAAK,aAAa,KAAK,GAAG,aAAaA,IAAG;AAC3D,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACtBjB;AAAA;AAAA,QAAM,WAAW,QAAQ,IAAI,+BAA+B,QAAQ;AACpE,QAAM,EAAE,SAAS,MAAM,IAAI,UAAQ,MAAM;AACzC,QAAM,UAAU,CAAAC,UAAQ;AACtB,UAAI,KAAK,KAAKA,KAAI,GAAG;AAEnB,cAAM,OAAO;AAAA,UACX,IAAI,UAAU,0CAA0C;AAAA,UACxD;AAAA,YACE,MAAAA;AAAA,YACA,MAAM;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,MAAAA,QAAO,QAAQA,KAAI;AACnB,UAAI,aAAa,SAAS;AACxB,cAAM,cAAc;AACpB,cAAM,EAAC,KAAI,IAAI,MAAMA,KAAI;AACzB,YAAI,YAAY,KAAKA,MAAK,OAAO,KAAK,MAAM,CAAC,GAAG;AAC9C,gBAAM,OAAO,OAAO,IAAI,MAAM,6BAA6B,GAAG;AAAA,YAC5D,MAAAA;AAAA,YACA,MAAM;AAAA,UACR,CAAC;AAAA,QACH;AAAA,MACF;AAEA,aAAOA;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;AC5BjB;AAAA;AAAA,QAAM,EAAC,QAAO,IAAI,UAAQ,MAAM;AAEhC,QAAM,WAAW,CAAC,MAAM,QAAQC,QAAO,WAAc;AAEnD,UAAIA,UAAS;AACX,eAAO,QAAQ,QAAQ;AAEzB,aAAO,KAAK,UAAU,MAAM,EAAE;AAAA,QAC5B,QAAM,GAAG,YAAY,IAAIA,QAAO;AAAA;AAAA,QAChC,QAAM,GAAG,SAAS,WACd,SAAS,MAAM,QAAQ,MAAM,GAAG,MAAM,IACtC;AAAA,MACN;AAAA,IACF;AAEA,QAAM,eAAe,CAAC,MAAM,QAAQA,QAAO,WAAc;AACvD,UAAIA,UAAS;AACX,eAAO;AAET,UAAI;AACF,eAAO,KAAK,SAAS,MAAM,EAAE,YAAY,IAAIA,QAAO;AAAA,MACtD,SAAS,IAAI;AACX,eAAO,GAAG,SAAS,WACf,aAAa,MAAM,QAAQ,MAAM,GAAG,MAAM,IAC1C;AAAA,MACN;AAAA,IACF;AAEA,WAAO,UAAU,EAAC,UAAU,aAAY;AAAA;AAAA;;;AC5BxC;AAAA;AAAA,QAAM,EAAC,QAAO,IAAI,UAAQ,MAAM;AAEhC,QAAM,eAAe,CAACC,OAAM,MAAM,SAAS;AACzC,WAAK,YAAY;AACjB,YAAM,SAAS,QAAQA,KAAI;AAC3B,UAAI,WAAWA,OAAM;AACnB,eAAO,KAAK,WAAWA,OAAM,IAAI,EAAE,MAAM,QAAM;AAG7C,cAAI,GAAG,SAAS;AACd,kBAAM;AAAA,QACV,CAAC;AAAA,MACH;AAEA,aAAO,KAAK,WAAWA,OAAM,IAAI,EAAE,KAAK,MAAM,QAAQA,OAAM,QAAM;AAChE,YAAI,GAAG,SAAS;AACd,iBAAO,aAAa,QAAQ,IAAI,EAC7B,KAAK,CAAAC,UAAQ,aAAaD,OAAM,MAAMC,KAAI,CAAC;AAChD,YAAI,GAAG,SAAS,YAAY,GAAG,SAAS;AACtC,gBAAM;AACR,eAAO,KAAK,UAAUD,KAAI,EAAE,KAAK,QAAM;AACrC,cAAI,GAAG,YAAY;AACjB,mBAAO;AAAA;AAEP,kBAAM;AAAA,QACV,GAAG,MAAM;AAAE,gBAAM;AAAA,QAAG,CAAC;AAAA,MACvB,CAAC;AAAA,IACH;AAEA,QAAM,mBAAmB,CAACA,OAAM,MAAM,SAAS;AAC7C,YAAM,SAAS,QAAQA,KAAI;AAC3B,WAAK,YAAY;AAEjB,UAAI,WAAWA,OAAM;AACnB,YAAI;AACF,iBAAO,KAAK,UAAUA,OAAM,IAAI;AAAA,QAClC,SAAS,IAAI;AAGX,cAAI,GAAG,SAAS;AACd,kBAAM;AAAA;AAEN;AAAA,QACJ;AAAA,MACF;AAEA,UAAI;AACF,aAAK,UAAUA,OAAM,IAAI;AACzB,eAAO,QAAQA;AAAA,MACjB,SAAS,IAAI;AACX,YAAI,GAAG,SAAS;AACd,iBAAO,iBAAiBA,OAAM,MAAM,iBAAiB,QAAQ,MAAM,IAAI,CAAC;AAC1E,YAAI,GAAG,SAAS,YAAY,GAAG,SAAS;AACtC,gBAAM;AACR,YAAI;AACF,cAAI,CAAC,KAAK,SAASA,KAAI,EAAE,YAAY;AACnC,kBAAM;AAAA,QACV,SAAS,GAAG;AACV,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,WAAO,UAAU,EAAC,cAAc,iBAAgB;AAAA;AAAA;;;AC/DhD;AAAA;AAAA,QAAM,EAAC,QAAO,IAAI,UAAQ,MAAM;AAChC,QAAM,EAAC,UAAU,aAAY,IAAI;AACjC,QAAM,EAAC,cAAc,iBAAgB,IAAI;AAEzC,QAAM,eAAe,CAACE,OAAM,SAAS;AACnC,WAAK,YAAY;AACjB,YAAM,SAAS,QAAQA,KAAI;AAC3B,UAAI,WAAWA;AACb,eAAO,KAAK,WAAWA,OAAM,IAAI;AAEnC,aAAO,SAAS,MAAMA,KAAI,EAAE,KAAK,UAC/B,KAAK,WAAWA,OAAM,IAAI,EAAE,KAAK,MAAM,IAAI,EAC1C,MAAM,QAAM;AACX,YAAI,GAAG,SAAS;AACd,iBAAO,aAAaA,OAAM,IAAI;AAAA;AAE9B,gBAAM;AAAA,MACV,CAAC,CAAC;AAAA,IACN;AAEA,QAAM,mBAAmB,CAACA,OAAM,SAAS;AACvC,WAAK,YAAY;AACjB,YAAM,SAAS,QAAQA,KAAI;AAC3B,UAAI,WAAWA;AACb,eAAO,KAAK,UAAUA,OAAM,IAAI;AAElC,YAAM,OAAO,aAAa,MAAMA,KAAI;AACpC,UAAI;AACF,aAAK,UAAUA,OAAM,IAAI;AACzB,eAAO;AAAA,MACT,SAAS,IAAI;AACX,YAAI,GAAG,SAAS;AACd,iBAAO,iBAAiBA,OAAM,IAAI;AAAA;AAElC,gBAAM;AAAA,MACV;AAAA,IACF;AAEA,WAAO,UAAU,EAAC,cAAc,iBAAgB;AAAA;AAAA;;;ACtChD;AAAA;AAAA,QAAMC,MAAK,UAAQ,IAAI;AAEvB,QAAMC,WAAU,QAAQ,IAAI,mCAAmC,QAAQ;AACvE,QAAM,UAAUA,SAAQ,QAAQ,MAAM,EAAE,EAAE,MAAM,GAAG;AACnD,QAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK;AAE3E,QAAM,YAAY,CAAC,YAAY,MAAM,QAAQ,UAAQ,KAAK,UAAUD,IAAG;AACvE,QAAM,gBAAgB,CAAC,YAAY,MAAM,QAAQ,UAAQ,KAAK,cAAcA,IAAG;AAE/E,WAAO,UAAU,EAAC,WAAW,cAAa;AAAA;AAAA;;;ACT1C;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,UAAU;AAEhB,QAAM,EAAC,cAAc,iBAAgB,IAAI;AACzC,QAAM,EAAC,cAAc,iBAAgB,IAAI;AACzC,QAAM,EAAC,WAAW,cAAa,IAAI;AAGnC,QAAM,SAAS,CAACE,OAAM,SAAS;AAC7B,MAAAA,QAAO,QAAQA,KAAI;AACnB,aAAO,QAAQ,IAAI;AACnB,aAAO,UAAU,IAAI,IACjB,aAAaA,OAAM,IAAI,IACvB,aAAaA,OAAM,IAAI;AAAA,IAC7B;AAEA,QAAM,aAAa,CAACA,OAAM,SAAS;AACjC,MAAAA,QAAO,QAAQA,KAAI;AACnB,aAAO,QAAQ,IAAI;AACnB,aAAO,cAAc,IAAI,IACrB,iBAAiBA,OAAM,IAAI,IAC3B,iBAAiBA,OAAM,IAAI;AAAA,IACjC;AAEA,WAAO,OAAO;AACd,WAAO,SAAS,CAACA,OAAM,SAAS,aAAa,QAAQA,KAAI,GAAG,QAAQ,IAAI,CAAC;AACzE,WAAO,SAAS,CAACA,OAAM,SAAS,aAAa,QAAQA,KAAI,GAAG,QAAQ,IAAI,CAAC;AACzE,WAAO,aAAa,CAACA,OAAM,SAAS,iBAAiB,QAAQA,KAAI,GAAG,QAAQ,IAAI,CAAC;AACjF,WAAO,aAAa,CAACA,OAAM,SAAS,iBAAiB,QAAQA,KAAI,GAAG,QAAQ,IAAI,CAAC;AAEjF,WAAO,UAAU;AAAA;AAAA;;;AC9BjB;AAAA;AAAA;AACA,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAMC,QAAO,UAAQ,MAAM;AAG3B,QAAM,SAASD,IAAG,SAAS,WAAW;AAEtC,QAAM,aAAaA,IAAG,aAAa,eAAe;AAGlD,QAAM,oBAAoBA,IAAG,UAC3B,CAAC,QAAQ,QAAQ,MAAM,YAAY,KACnC,CAAC,QAAQ,QAAQ,MAAM,YAAY;AAErC,QAAM,aAAa,CAACC,OAAM,KAAK,QAAQ;AACrC,UAAI;AACF,eAAOD,IAAG,UAAU,EAAEC,OAAM,KAAK,GAAG;AAAA,MACtC,SAAS,IAAI;AACX,YAAI,GAAG,SAAS;AACd,gBAAM;AAAA,MACV;AAAA,IACF;AAGA,QAAM,YAAY,CAACA,OAAM,KAAK,QAAQ;AACpC,UAAI;AACF,eAAOD,IAAG,UAAUC,OAAM,KAAK,GAAG;AAAA,MACpC,SAAS,IAAI;AACX,YAAI,GAAG,SAAS;AACd,gBAAM;AAAA,MACV;AAAA,IACF;AAGA,QAAM,eACJ,oBAAoB,CAACA,OAAM,KAAK,KAAK,OAAO,QAAM;AAIhD,UAAI,CAAC,MAAM,GAAG,SAAS;AACrB,WAAG,EAAE;AAAA;AAEL,QAAAD,IAAG,MAAMC,OAAM,KAAK,KAAK,EAAE;AAAA,IAC/B,IACE,CAAC,GAAG,IAAI,KAAK,OAAO;AAGxB,QAAM,mBACJ,oBAAoB,CAACA,OAAM,KAAK,QAAQ;AACtC,UAAI;AACF,eAAO,WAAWA,OAAM,KAAK,GAAG;AAAA,MAClC,SAAS,IAAI;AACX,YAAI,GAAG,SAAS;AACd,gBAAM;AACR,kBAAUA,OAAM,KAAK,GAAG;AAAA,MAC1B;AAAA,IACF,IACE,CAACA,OAAM,KAAK,QAAQ,WAAWA,OAAM,KAAK,GAAG;AAGjD,QAAM,cAAc,QAAQ;AAC5B,QAAI,UAAU,CAACA,OAAM,SAAS,OAAOD,IAAG,QAAQC,OAAM,SAAS,EAAE;AACjE,QAAI,cAAc,CAACA,OAAM,YAAYD,IAAG,YAAYC,OAAM,OAAO;AAEjE,QAAI,QAAQ,KAAK,WAAW;AAC1B,gBAAU,CAACA,OAAM,SAAS,OAAOD,IAAG,QAAQC,OAAM,EAAE;AAEtD,QAAM,QAAQ,CAAC,OAAO,KAAK,KAAK,OAAO;AACrC,MAAAD,IAAG,MAAM,EAAE,OAAO,KAAK,KAAK,aAAa,OAAO,KAAK,KAAK,QAAM;AAE9D,WAAG,MAAM,GAAG,SAAS,WAAW,KAAK,IAAI;AAAA,MAC3C,CAAC,CAAC;AAAA,IACJ;AAEA,QAAM,YAAY,CAAC,GAAG,OAAO,KAAK,KAAK,OAAO;AAC5C,UAAI,OAAO,UAAU;AACnB,eAAOA,IAAG,MAAMC,MAAK,QAAQ,GAAG,KAAK,GAAG,CAAC,IAAI,UAAU;AAErD,cAAI;AACF,mBAAO,GAAG,GAAG,SAAS,WAAW,KAAK,IAAI;AAC5C,gBAAM,OAAO;AACb,oBAAU,GAAG,OAAO,KAAK,KAAK,EAAE;AAAA,QAClC,CAAC;AAEH,UAAI,MAAM,YAAY,GAAG;AACvB,eAAOA,MAAK,QAAQ,GAAG,MAAM,IAAI,GAAG,KAAK,KAAK,QAAM;AAClD,cAAI;AACF,mBAAO,GAAG,EAAE;AACd,gBAAM,QAAQA,MAAK,QAAQ,GAAG,MAAM,IAAI;AACxC,gBAAM,OAAO,KAAK,KAAK,EAAE;AAAA,QAC3B,CAAC;AAAA,MACH,OAAO;AACL,cAAM,QAAQA,MAAK,QAAQ,GAAG,MAAM,IAAI;AACxC,cAAM,OAAO,KAAK,KAAK,EAAE;AAAA,MAC3B;AAAA,IACF;AAGA,QAAM,SAAS,CAAC,GAAG,KAAK,KAAK,OAAO;AAClC,cAAQ,GAAG,EAAE,eAAe,KAAK,GAAG,CAAC,IAAI,aAAa;AAGpD,YAAI,IAAI;AACN,cAAI,GAAG,SAAS;AACd,mBAAO,GAAG;AAAA,mBACH,GAAG,SAAS,aAAa,GAAG,SAAS;AAC5C,mBAAO,GAAG,EAAE;AAAA,QAChB;AACA,YAAI,MAAM,CAAC,SAAS;AAClB,iBAAO,MAAM,GAAG,KAAK,KAAK,EAAE;AAE9B,YAAI,MAAM,SAAS;AACnB,YAAI,WAAW;AACf,cAAM,OAAO,CAAAC,QAAM;AACjB,cAAI;AACF;AACF,cAAIA;AACF,mBAAO,GAAG,WAAWA,GAAE;AACzB,cAAI,EAAG,QAAQ;AACb,mBAAO,MAAM,GAAG,KAAK,KAAK,EAAE;AAAA,QAChC;AAEA,iBAAS,QAAQ,WAAS,UAAU,GAAG,OAAO,KAAK,KAAK,IAAI,CAAC;AAAA,MAC/D,CAAC;AAAA,IACH;AAEA,QAAM,gBAAgB,CAAC,GAAG,OAAO,KAAK,QAAQ;AAC5C,UAAI,OAAO,UAAU,UAAU;AAC7B,YAAI;AACF,gBAAM,QAAQF,IAAG,UAAUC,MAAK,QAAQ,GAAG,KAAK,CAAC;AACjD,gBAAM,OAAO;AACb,kBAAQ;AAAA,QACV,SAAS,IAAI;AACX,cAAI,GAAG,SAAS;AACd;AAAA;AAEA,kBAAM;AAAA,QACV;AAAA,MACF;AAEA,UAAI,MAAM,YAAY;AACpB,mBAAWA,MAAK,QAAQ,GAAG,MAAM,IAAI,GAAG,KAAK,GAAG;AAElD,uBAAiBA,MAAK,QAAQ,GAAG,MAAM,IAAI,GAAG,KAAK,GAAG;AAAA,IACxD;AAEA,QAAM,aAAa,CAAC,GAAG,KAAK,QAAQ;AAClC,UAAI;AACJ,UAAI;AACF,mBAAW,YAAY,GAAG,EAAE,eAAe,KAAK,CAAC;AAAA,MACnD,SAAS,IAAI;AACX,YAAI,GAAG,SAAS;AACd;AAAA,iBACO,GAAG,SAAS,aAAa,GAAG,SAAS;AAC5C,iBAAO,iBAAiB,GAAG,KAAK,GAAG;AAAA;AAEnC,gBAAM;AAAA,MACV;AAEA,UAAI,YAAY,SAAS;AACvB,iBAAS,QAAQ,WAAS,cAAc,GAAG,OAAO,KAAK,GAAG,CAAC;AAE7D,aAAO,iBAAiB,GAAG,KAAK,GAAG;AAAA,IACrC;AAEA,WAAO,UAAU;AACjB,WAAO,OAAO;AAAA;AAAA;;;ACtKd;AAAA;AAAA;AAMA,QAAM,SAAS;AACf,QAAME,MAAK,UAAQ,IAAI;AACvB,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,SAAS;AACf,QAAM,WAAW;AAEjB,QAAM,eAAN,cAA2B,MAAM;AAAA,MAC/B,YAAa,SAASA,OAAM;AAC1B,cAAM,sCAAsC;AAC5C,aAAK,OAAOA;AACZ,aAAK,UAAU;AAAA,MACjB;AAAA,MAEA,IAAI,OAAQ;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAM,WAAN,cAAuB,MAAM;AAAA,MAC3B,YAAaA,OAAM,MAAM;AACvB,cAAM,OAAO,uBAAwBA,QAAO,GAAI;AAChD,aAAK,OAAOA;AACZ,aAAK,OAAO;AAAA,MACd;AAAA,MAEA,IAAI,OAAQ;AACV,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAM,OAAO,CAACC,QAAO,QAAQA,OAAM,IAAI,SAAS,GAAG,CAAC;AACpD,QAAM,OAAO,CAACA,QAAO,KAAK,QAAQA,OAAM,IAAI,SAAS,GAAG,GAAG,GAAG;AAE9D,QAAM,WAAW,CAAC,KAAK,OAAO;AAC5B,MAAAF,IAAG,KAAK,KAAK,CAAC,IAAI,OAAO;AACvB,YAAI,MAAM,CAAC,GAAG,YAAY,GAAG;AAC3B,eAAK,IAAI,SAAS,KAAK,MAAM,GAAG,QAAQ,SAAS;AAAA,QACnD;AACA,WAAG,EAAE;AAAA,MACP,CAAC;AAAA,IACH;AAEA,WAAO,UAAU,CAAC,KAAK,KAAK,OAAO;AACjC,YAAM,SAAS,GAAG;AAIlB,YAAM,QAAQ,IAAI;AAClB,YAAM,OAAO,IAAI,OAAO;AACxB,YAAM,aAAa,OAAO,WAAW;AAErC,YAAM,MAAM,IAAI;AAChB,YAAM,MAAM,IAAI;AAChB,YAAM,UAAU,OAAO,QAAQ,YAC7B,OAAO,QAAQ,aACd,QAAQ,IAAI,cAAc,QAAQ,IAAI;AAEzC,YAAM,WAAW,IAAI;AACrB,YAAM,SAAS,IAAI;AACnB,YAAME,SAAQ,IAAI;AAClB,YAAM,MAAM,SAAS,IAAI,GAAG;AAE5B,YAAM,OAAO,CAAC,IAAI,YAAY;AAC5B,YAAI,IAAI;AACN,aAAG,EAAE;AAAA,QACP,OAAO;AACL,eAAKA,QAAO,KAAK,IAAI;AACrB,cAAI,WAAW,SAAS;AACtB,mBAAO,SAAS,KAAK,KAAK,CAAAC,QAAM,KAAKA,GAAE,CAAC;AAAA,UAC1C,WAAW,WAAW;AACpB,YAAAH,IAAG,MAAM,KAAK,MAAM,EAAE;AAAA,UACxB,OAAO;AACL,eAAG;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAEA,UAAIE,UAAS,KAAKA,QAAO,GAAG,MAAM,MAAM;AACtC,eAAO,KAAK;AAAA,MACd;AAEA,UAAI,QAAQ,KAAK;AACf,eAAO,SAAS,KAAK,IAAI;AAAA,MAC3B;AAEA,UAAI,UAAU;AACZ,eAAO,OAAO,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,UAAQ,KAAK,MAAM,IAAI,GAAG,IAAI;AAAA,MAClE;AAEA,YAAM,MAAM,SAASD,MAAK,SAAS,KAAK,GAAG,CAAC;AAC5C,YAAM,QAAQ,IAAI,MAAM,GAAG;AAC3B,aAAO,KAAK,OAAO,MAAMC,QAAO,QAAQ,KAAK,MAAM,IAAI;AAAA,IACzD;AAEA,QAAM,SAAS,CAAC,MAAM,OAAO,MAAMA,QAAO,QAAQ,KAAK,SAAS,OAAO;AACrE,UAAI,CAAC,MAAM,QAAQ;AACjB,eAAO,GAAG,MAAM,OAAO;AAAA,MACzB;AACA,YAAM,IAAI,MAAM,MAAM;AACtB,YAAM,OAAO,SAASD,MAAK,QAAQ,OAAO,MAAM,CAAC,CAAC;AAClD,UAAI,KAAKC,QAAO,IAAI,GAAG;AACrB,eAAO,OAAO,MAAM,OAAO,MAAMA,QAAO,QAAQ,KAAK,SAAS,EAAE;AAAA,MAClE;AACA,MAAAF,IAAG,MAAM,MAAM,MAAM,QAAQ,MAAM,OAAO,MAAME,QAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;AAAA,IAClF;AAEA,QAAM,UAAU,CAAC,MAAM,OAAO,MAAMA,QAAO,QAAQ,KAAK,SAAS,OAAO,QAAM;AAC5E,UAAI,IAAI;AACN,QAAAF,IAAG,MAAM,MAAM,CAAC,QAAQ,OAAO;AAC7B,cAAI,QAAQ;AACV,mBAAO,OAAO,OAAO,QAAQ,SAAS,OAAO,IAAI;AACjD,eAAG,MAAM;AAAA,UACX,WAAW,GAAG,YAAY,GAAG;AAC3B,mBAAO,MAAM,OAAO,MAAME,QAAO,QAAQ,KAAK,SAAS,EAAE;AAAA,UAC3D,WAAW,QAAQ;AACjB,YAAAF,IAAG,OAAO,MAAM,CAAAG,QAAM;AACpB,kBAAIA,KAAI;AACN,uBAAO,GAAGA,GAAE;AAAA,cACd;AACA,cAAAH,IAAG,MAAM,MAAM,MAAM,QAAQ,MAAM,OAAO,MAAME,QAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;AAAA,YAClF,CAAC;AAAA,UACH,WAAW,GAAG,eAAe,GAAG;AAC9B,mBAAO,GAAG,IAAI,aAAa,MAAM,OAAO,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC;AAAA,UAChE,OAAO;AACL,eAAG,EAAE;AAAA,UACP;AAAA,QACF,CAAC;AAAA,MACH,OAAO;AACL,kBAAU,WAAW;AACrB,eAAO,MAAM,OAAO,MAAMA,QAAO,QAAQ,KAAK,SAAS,EAAE;AAAA,MAC3D;AAAA,IACF;AAEA,QAAM,eAAe,SAAO;AAC1B,UAAI,KAAK;AACT,UAAI,OAAO;AACX,UAAI;AACF,aAAKF,IAAG,SAAS,GAAG,EAAE,YAAY;AAAA,MACpC,SAAS,IAAI;AACX,eAAO,GAAG;AAAA,MACZ,UAAE;AACA,YAAI,CAAC,IAAI;AACP,gBAAM,IAAI,SAAS,KAAK,IAAI;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAEA,WAAO,QAAQ,OAAO,CAAC,KAAK,QAAQ;AAClC,YAAM,SAAS,GAAG;AAGlB,YAAM,QAAQ,IAAI;AAClB,YAAM,OAAO,IAAI,OAAO;AACxB,YAAM,aAAa,OAAO,WAAW;AAErC,YAAM,MAAM,IAAI;AAChB,YAAM,MAAM,IAAI;AAChB,YAAM,UAAU,OAAO,QAAQ,YAC7B,OAAO,QAAQ,aACd,QAAQ,IAAI,cAAc,QAAQ,IAAI;AAEzC,YAAM,WAAW,IAAI;AACrB,YAAM,SAAS,IAAI;AACnB,YAAME,SAAQ,IAAI;AAClB,YAAM,MAAM,SAAS,IAAI,GAAG;AAE5B,YAAM,OAAO,CAACE,aAAY;AACxB,aAAKF,QAAO,KAAK,IAAI;AACrB,YAAIE,YAAW,SAAS;AACtB,iBAAO,KAAKA,UAAS,KAAK,GAAG;AAAA,QAC/B;AACA,YAAI,WAAW;AACb,UAAAJ,IAAG,UAAU,KAAK,IAAI;AAAA,QACxB;AAAA,MACF;AAEA,UAAIE,UAAS,KAAKA,QAAO,GAAG,MAAM,MAAM;AACtC,eAAO,KAAK;AAAA,MACd;AAEA,UAAI,QAAQ,KAAK;AACf,qBAAa,GAAG;AAChB,eAAO,KAAK;AAAA,MACd;AAEA,UAAI,UAAU;AACZ,eAAO,KAAK,OAAO,KAAK,KAAK,IAAI,CAAC;AAAA,MACpC;AAEA,YAAM,MAAM,SAASD,MAAK,SAAS,KAAK,GAAG,CAAC;AAC5C,YAAM,QAAQ,IAAI,MAAM,GAAG;AAC3B,UAAI,UAAU;AACd,eAAS,IAAI,MAAM,MAAM,GAAG,OAAO,KACjC,MAAM,QAAQ,MAAM,IACpB,IAAI,MAAM,MAAM,GAAG;AACnB,eAAO,SAASA,MAAK,QAAQ,IAAI,CAAC;AAClC,YAAI,KAAKC,QAAO,IAAI,GAAG;AACrB;AAAA,QACF;AAEA,YAAI;AACF,UAAAF,IAAG,UAAU,MAAM,IAAI;AACvB,oBAAU,WAAW;AACrB,eAAKE,QAAO,MAAM,IAAI;AAAA,QACxB,SAAS,IAAI;AACX,gBAAM,KAAKF,IAAG,UAAU,IAAI;AAC5B,cAAI,GAAG,YAAY,GAAG;AACpB,iBAAKE,QAAO,MAAM,IAAI;AACtB;AAAA,UACF,WAAW,QAAQ;AACjB,YAAAF,IAAG,WAAW,IAAI;AAClB,YAAAA,IAAG,UAAU,MAAM,IAAI;AACvB,sBAAU,WAAW;AACrB,iBAAKE,QAAO,MAAM,IAAI;AACtB;AAAA,UACF,WAAW,GAAG,eAAe,GAAG;AAC9B,mBAAO,IAAI,aAAa,MAAM,OAAO,MAAM,MAAM,KAAK,GAAG,CAAC;AAAA,UAC5D;AAAA,QACF;AAAA,MACF;AAEA,aAAO,KAAK,OAAO;AAAA,IACrB;AAAA;AAAA;;;ACpOA;AAAA;AAIA,QAAM,iBAAiB,uBAAO,OAAO,IAAI;AACzC,QAAM,EAAE,eAAe,IAAI,OAAO;AAClC,WAAO,UAAU,OAAK;AACpB,UAAI,CAAC,eAAe,KAAK,gBAAgB,CAAC,GAAG;AAC3C,uBAAe,CAAC,IAAI,EAAE,UAAU,KAAK;AAAA,MACvC;AACA,aAAO,eAAe,CAAC;AAAA,IACzB;AAAA;AAAA;;;ACXA;AAAA;AAQA,QAAM,SAAS,UAAQ,QAAQ;AAC/B,QAAMG,aAAY;AAClB,QAAM,eAAe;AACrB,QAAM,EAAE,KAAK,IAAI,UAAQ,MAAM;AAE/B,QAAM,WAAW,QAAQ,IAAI,6BAA6B,QAAQ;AAClE,QAAM,YAAY,aAAa;AAE/B,WAAO,UAAU,MAAM;AAIrB,YAAM,SAAS,oBAAI,IAAI;AAGvB,YAAM,eAAe,oBAAI,IAAI;AAI7B,YAAM,UAAU,CAAAC,UAAQ;AACtB,cAAM,OAAOA,MAAK,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,OAAO,CAAC,KAAKA,UAAS;AAC9D,cAAI,IAAI,QAAQ;AACd,YAAAA,QAAO,KAAK,IAAI,IAAI,SAAS,CAAC,GAAGA,KAAI;AAAA,UACvC;AACA,cAAI,KAAKA,SAAQ,GAAG;AACpB,iBAAO;AAAA,QACT,GAAG,CAAC,CAAC;AACL,eAAO;AAAA,MACT;AAGA,YAAM,UAAU,oBAAI,IAAI;AAIxB,YAAM,YAAY,QAAM;AACtB,cAAM,MAAM,aAAa,IAAI,EAAE;AAE/B,YAAI,CAAC,KAAK;AACR,gBAAM,IAAI,MAAM,8CAA8C;AAAA,QAChE;AACA,eAAO;AAAA,UACL,OAAO,IAAI,MAAM,IAAI,CAAAA,UAAQ,OAAO,IAAIA,KAAI,CAAC;AAAA,UAC7C,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,CAAAA,UAAQ,OAAO,IAAIA,KAAI,CAAC;AAAA,QAClD;AAAA,MACF;AAIA,YAAM,QAAQ,QAAM;AAClB,cAAM,EAAE,OAAO,KAAK,IAAI,UAAU,EAAE;AACpC,eAAO,MAAM,MAAM,OAAK,EAAE,CAAC,MAAM,EAAE,KACjC,KAAK,MAAM,OAAK,EAAE,CAAC,aAAa,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAAA,MACvD;AAGA,YAAMC,OAAM,QAAM;AAChB,YAAI,QAAQ,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG;AACjC,iBAAO;AAAA,QACT;AACA,gBAAQ,IAAI,EAAE;AACd,WAAG,MAAM,MAAM,EAAE,CAAC;AAClB,eAAO;AAAA,MACT;AAEA,YAAM,QAAQ,QAAM;AAClB,YAAI,CAAC,QAAQ,IAAI,EAAE,GAAG;AACpB,iBAAO;AAAA,QACT;AAEA,cAAM,EAAE,OAAO,KAAK,IAAI,aAAa,IAAI,EAAE;AAC3C,cAAM,OAAO,oBAAI,IAAI;AAErB,cAAM,QAAQ,CAAAD,UAAQ;AACpB,gBAAM,IAAI,OAAO,IAAIA,KAAI;AACzB,iBAAO,MAAM,EAAE,CAAC,GAAG,EAAE;AACrB,cAAI,EAAE,WAAW,GAAG;AAClB,mBAAO,OAAOA,KAAI;AAAA,UACpB,OAAO;AACL,cAAE,MAAM;AACR,gBAAI,OAAO,EAAE,CAAC,MAAM,YAAY;AAC9B,mBAAK,IAAI,EAAE,CAAC,CAAC;AAAA,YACf,OAAO;AACL,gBAAE,CAAC,EAAE,QAAQ,CAAAE,QAAM,KAAK,IAAIA,GAAE,CAAC;AAAA,YACjC;AAAA,UACF;AAAA,QACF,CAAC;AAED,aAAK,QAAQ,SAAO;AAClB,gBAAM,IAAI,OAAO,IAAI,GAAG;AACxB,iBAAO,EAAE,CAAC,aAAa,GAAG;AAC1B,cAAI,EAAE,CAAC,EAAE,SAAS,KAAK,EAAE,WAAW,GAAG;AACrC,mBAAO,OAAO,GAAG;AAAA,UACnB,WAAW,EAAE,CAAC,EAAE,SAAS,GAAG;AAC1B,cAAE,MAAM;AAGR,iBAAK,IAAI,EAAE,CAAC,CAAC;AAAA,UACf,OAAO;AACL,cAAE,CAAC,EAAE,OAAO,EAAE;AAAA,UAChB;AAAA,QACF,CAAC;AACD,gBAAQ,OAAO,EAAE;AAEjB,aAAK,QAAQ,CAAAA,QAAMD,KAAIC,GAAE,CAAC;AAC1B,eAAO;AAAA,MACT;AAEA,YAAM,UAAU,CAAC,OAAO,OAAO;AAO7B,gBAAQ,YAAY,CAAC,gCAAgC,IAAI,MAAM,IAAI,OAAK;AAEtE,iBAAO,aAAa,KAAKH,WAAU,CAAC,CAAC,CAAC,EAAE,YAAY;AAAA,QACtD,CAAC;AAED,cAAM,OAAO,IAAI;AAAA,UACf,MAAM,IAAI,CAAAC,UAAQ,QAAQA,KAAI,CAAC,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;AAAA,QAC/D;AACA,qBAAa,IAAI,IAAI,EAAE,MAAM,MAAM,CAAC;AACpC,cAAM,QAAQ,CAAAA,UAAQ;AACpB,gBAAM,IAAI,OAAO,IAAIA,KAAI;AACzB,cAAI,CAAC,GAAG;AACN,mBAAO,IAAIA,OAAM,CAAC,EAAE,CAAC;AAAA,UACvB,OAAO;AACL,cAAE,KAAK,EAAE;AAAA,UACX;AAAA,QACF,CAAC;AACD,aAAK,QAAQ,SAAO;AAClB,gBAAM,IAAI,OAAO,IAAI,GAAG;AACxB,cAAI,CAAC,GAAG;AACN,mBAAO,IAAI,KAAK,CAAC,oBAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAAA,UACjC,WAAW,EAAE,EAAE,SAAS,CAAC,aAAa,KAAK;AACzC,cAAE,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE;AAAA,UACxB,OAAO;AACL,cAAE,KAAK,oBAAI,IAAI,CAAC,EAAE,CAAC,CAAC;AAAA,UACtB;AAAA,QACF,CAAC;AAED,eAAOC,KAAI,EAAE;AAAA,MACf;AAEA,aAAO,EAAE,OAAO,QAAQ;AAAA,IAC1B;AAAA;AAAA;;;AC3JA;AAAA;AAQA,QAAM,WAAW,QAAQ,IAAI,qBAAqB,QAAQ;AAC1D,QAAM,YAAY,aAAa;AAC/B,QAAME,MAAK,OAAO,uBAAuB,UAAQ,IAAI;AAGrD,QAAM,EAAE,SAAS,SAAS,UAAU,kBAAkB,EAAE,IAAIA,IAAG;AAE/D,QAAM,cAAc,aAAa,CAAC,CAAC;AACnC,QAAM,YAAY,MAAM;AACxB,QAAM,WAAW,kBAAkB,UAAU,UAAU;AACvD,WAAO,UAAU,CAAC,cAAc,MAAM,MAClC,UAAQ,OAAO,YAAY,WAAW;AAAA;AAAA;;;ACnB1C;AAAA;AAAA;AAQA,QAAM,SAAS,UAAQ,QAAQ;AAC/B,QAAM,SAAS;AACf,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAM,MAAM;AACZ,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,QAAQ;AACd,QAAM,KAAK;AACX,QAAM,mBAAmB;AACzB,QAAM,oBAAoB;AAC1B,QAAM,WAAW;AACjB,QAAM,aAAa;AACnB,QAAMC,aAAY;AAElB,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,WAAW,OAAO,UAAU;AAClC,QAAM,cAAc,OAAO,aAAa;AACxC,QAAM,YAAY,OAAO,WAAW;AACpC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,aAAa,OAAO,YAAY;AACtC,QAAM,OAAO,OAAO,MAAM;AAC1B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,cAAc,OAAO,YAAY;AACvC,QAAMC,UAAS,UAAQ,QAAQ;AAC/B,QAAM,UAAU;AAChB,QAAM,WAAW,QAAQ,IAAI,6BAA6B,QAAQ;AAClE,QAAM,YAAY,aAAa;AAC/B,QAAM,oBAAoB;AAkB1B,QAAM,aAAa,CAACF,OAAM,OAAO;AAC/B,UAAI,CAAC,WAAW;AACd,eAAOD,IAAG,OAAOC,OAAM,EAAE;AAAA,MAC3B;AAEA,YAAM,OAAOA,QAAO,aAAaE,QAAO,YAAY,EAAE,EAAE,SAAS,KAAK;AACtE,MAAAH,IAAG,OAAOC,OAAM,MAAM,QAAM;AAC1B,YAAI,IAAI;AACN,iBAAO,GAAG,EAAE;AAAA,QACd;AACA,QAAAD,IAAG,OAAO,MAAM,EAAE;AAAA,MACpB,CAAC;AAAA,IACH;AAGA,QAAM,iBAAiB,CAAAC,UAAQ;AAC7B,UAAI,CAAC,WAAW;AACd,eAAOD,IAAG,WAAWC,KAAI;AAAA,MAC3B;AAEA,YAAM,OAAOA,QAAO,aAAaE,QAAO,YAAY,EAAE,EAAE,SAAS,KAAK;AACtE,MAAAH,IAAG,WAAWC,OAAM,IAAI;AACxB,MAAAD,IAAG,WAAW,IAAI;AAAA,IACpB;AAGA,QAAM,SAAS,CAAC,GAAG,GAAG,MACpB,MAAM,MAAM,IAAI,IACd,MAAM,MAAM,IAAI,IAChB;AAWJ,QAAM,oBAAoB,CAAAC,UAAQ,WAAW,SAASC,WAAUD,KAAI,CAAC,CAAC,EACnE,YAAY;AAEf,QAAM,aAAa,CAACG,QAAO,QAAQ;AACjC,YAAM,kBAAkB,GAAG;AAC3B,iBAAWH,SAAQG,OAAM,KAAK,GAAG;AAC/B,cAAM,QAAQ,kBAAkBH,KAAI;AACpC,YAAI,UAAU,OAAO,MAAM,QAAQ,MAAM,GAAG,MAAM,GAAG;AACnD,UAAAG,OAAM,OAAOH,KAAI;AAAA,QACnB;AAAA,MACF;AAAA,IACF;AAEA,QAAM,YAAY,CAAAG,WAAS;AACzB,iBAAW,OAAOA,OAAM,KAAK,GAAG;AAC9B,QAAAA,OAAM,OAAO,GAAG;AAAA,MAClB;AAAA,IACF;AAEA,QAAM,SAAN,cAAqB,OAAO;AAAA,MAC1B,YAAa,KAAK;AAChB,YAAI,CAAC,KAAK;AACR,gBAAM,CAAC;AAAA,QACT;AAEA,YAAI,SAAS,OAAK;AAChB,eAAK,KAAK,IAAI;AACd,eAAK,UAAU,EAAE;AAAA,QACnB;AAEA,cAAM,GAAG;AAET,aAAK,WAAW,IAAI;AAEpB,aAAK,eAAe,iBAAiB;AAErC,aAAK,YAAY,OAAO,IAAI,cAAc,aAAa,IAAI,YAAY;AAEvE,aAAK,WAAW;AAChB,aAAK,WAAW;AAEhB,aAAK,OAAO,IAAI;AAChB,aAAK,KAAK,IAAI;AAEd,aAAK,WAAW,IAAI,YAAY,oBAAI,IAAI;AAExC,YAAI,OAAO,IAAI,QAAQ,YAAY,OAAO,IAAI,QAAQ,UAAU;AAE9D,cAAI,OAAO,IAAI,QAAQ,YAAY,OAAO,IAAI,QAAQ,UAAU;AAC9D,kBAAM,IAAI,UAAU,6CAA6C;AAAA,UACnE;AACA,cAAI,IAAI,eAAe;AACrB,kBAAM,IAAI;AAAA,cACR;AAAA,YAAgE;AAAA,UACpE;AACA,eAAK,MAAM,IAAI;AACf,eAAK,MAAM,IAAI;AACf,eAAK,WAAW;AAAA,QAClB,OAAO;AACL,eAAK,MAAM;AACX,eAAK,MAAM;AACX,eAAK,WAAW;AAAA,QAClB;AAGA,YAAI,IAAI,kBAAkB,UAAa,OAAO,IAAI,QAAQ,UAAU;AAClE,eAAK,gBAAgB,QAAQ,UAAU,QAAQ,OAAO,MAAM;AAAA,QAC9D,OAAO;AACL,eAAK,gBAAgB,CAAC,CAAC,IAAI;AAAA,QAC7B;AAEA,aAAK,cAAc,KAAK,iBAAiB,KAAK,aAAa,QAAQ,SACjE,QAAQ,OAAO,IAAI;AACrB,aAAK,cAAc,KAAK,iBAAiB,KAAK,aAAa,QAAQ,SACjE,QAAQ,OAAO,IAAI;AAIrB,aAAK,WAAW,OAAO,IAAI,aAAa,WACpC,IAAI,WACJ;AAIJ,aAAK,aAAa,IAAI,eAAe;AAGrC,aAAK,QAAQ,CAAC,CAAC,IAAI,SAAS;AAG5B,aAAK,QAAQ,CAAC,CAAC,IAAI;AAGnB,aAAK,OAAO,CAAC,CAAC,IAAI;AAGlB,aAAK,UAAU,CAAC,CAAC,IAAI;AAKrB,aAAK,gBAAgB,CAAC,CAAC,IAAI;AAI3B,aAAK,SAAS,CAAC,CAAC,IAAI;AAEpB,aAAK,MAAM,SAASH,MAAK,QAAQ,IAAI,OAAO,QAAQ,IAAI,CAAC,CAAC;AAC1D,aAAK,QAAQ,CAAC,IAAI,SAAS;AAE3B,aAAK,eAAe,IAAI,UAAU,IAAI,QAAQ,MAAM;AACpD,aAAK,QAAQ,OAAO,IAAI,UAAU,WAAW,IAAI,QAAQ,KAAK;AAG9D,aAAK,QAAQ,IAAI,SAAU,MAAU,CAAC,KAAK;AAC3C,aAAK,QAAQ,IAAI,SAAU,MAAU,CAAC,KAAK;AAE3C,aAAK,GAAG,SAAS,WAAS,KAAK,OAAO,EAAE,KAAK,CAAC;AAAA,MAChD;AAAA;AAAA;AAAA;AAAA,MAKA,KAAM,MAAM,KAAK,OAAO,CAAC,GAAG;AAC1B,YAAI,SAAS,qBAAqB,SAAS,aAAa;AACtD,eAAK,cAAc;AAAA,QACrB;AACA,eAAO,MAAM,KAAK,MAAM,KAAK,IAAI;AAAA,MACnC;AAAA,MAEA,CAAC,UAAU,IAAK;AACd,YAAI,KAAK,KAAK,KAAK,KAAK,OAAO,MAAM,GAAG;AACtC,eAAK,KAAK,WAAW;AACrB,eAAK,KAAK,QAAQ;AAClB,eAAK,KAAK,KAAK;AAAA,QACjB;AAAA,MACF;AAAA,MAEA,CAAC,SAAS,EAAG,OAAO;AAClB,cAAM,IAAI,SAAS,MAAM,IAAI;AAC7B,cAAM,QAAQ,EAAE,MAAM,GAAG;AAEzB,YAAI,KAAK,OAAO;AACd,cAAI,MAAM,SAAS,KAAK,OAAO;AAC7B,mBAAO;AAAA,UACT;AACA,cAAI,MAAM,SAAS,QAAQ;AACzB,kBAAM,YAAY,SAAS,MAAM,QAAQ,EAAE,MAAM,GAAG;AACpD,gBAAI,UAAU,UAAU,KAAK,OAAO;AAClC,oBAAM,WAAW,UAAU,MAAM,KAAK,KAAK,EAAE,KAAK,GAAG;AAAA,YACvD,OAAO;AACL,qBAAO;AAAA,YACT;AAAA,UACF;AACA,gBAAM,OAAO,GAAG,KAAK,KAAK;AAC1B,gBAAM,OAAO,MAAM,KAAK,GAAG;AAAA,QAC7B;AAEA,YAAI,SAAS,KAAK,QAAQ,KAAK,MAAM,SAAS,KAAK,UAAU;AAC3D,eAAK,KAAK,mBAAmB,yBAAyB;AAAA,YACpD;AAAA,YACA,MAAM;AAAA,YACN,OAAO,MAAM;AAAA,YACb,UAAU,KAAK;AAAA,UACjB,CAAC;AACD,iBAAO;AAAA,QACT;AAEA,YAAI,CAAC,KAAK,eAAe;AACvB,cAAI,MAAM,SAAS,IAAI,KAAK,aAAa,gBAAgB,KAAK,MAAM,CAAC,CAAC,GAAG;AACvE,iBAAK,KAAK,mBAAmB,sBAAsB;AAAA,cACjD;AAAA,cACA,MAAM;AAAA,YACR,CAAC;AACD,mBAAO;AAAA,UACT;AAGA,gBAAM,CAAC,MAAM,QAAQ,IAAI,kBAAkB,CAAC;AAC5C,cAAI,MAAM;AACR,kBAAM,OAAO;AACb,iBAAK,KAAK,kBAAkB,aAAa,IAAI,uBAAuB;AAAA,cAClE;AAAA,cACA,MAAM;AAAA,YACR,CAAC;AAAA,UACH;AAAA,QACF;AAEA,YAAIA,MAAK,WAAW,MAAM,IAAI,GAAG;AAC/B,gBAAM,WAAW,SAASA,MAAK,QAAQ,MAAM,IAAI,CAAC;AAAA,QACpD,OAAO;AACL,gBAAM,WAAW,SAASA,MAAK,QAAQ,KAAK,KAAK,MAAM,IAAI,CAAC;AAAA,QAC9D;AAMA,YAAI,CAAC,KAAK,iBACN,MAAM,SAAS,QAAQ,KAAK,MAAM,GAAG,MAAM,KAC3C,MAAM,aAAa,KAAK,KAAK;AAC/B,eAAK,KAAK,mBAAmB,kCAAkC;AAAA,YAC7D;AAAA,YACA,MAAM,SAAS,MAAM,IAAI;AAAA,YACzB,cAAc,MAAM;AAAA,YACpB,KAAK,KAAK;AAAA,UACZ,CAAC;AACD,iBAAO;AAAA,QACT;AAIA,YAAI,MAAM,aAAa,KAAK,OACxB,MAAM,SAAS,eACf,MAAM,SAAS,cAAc;AAC/B,iBAAO;AAAA,QACT;AAGA,YAAI,KAAK,OAAO;AACd,gBAAM,EAAE,MAAM,MAAM,IAAIA,MAAK,MAAM,MAAM,MAAM,QAAQ;AACvD,gBAAM,WAAW,QAAQ,GAAG,OAAO,MAAM,SAAS,MAAM,MAAM,MAAM,CAAC;AACrE,gBAAM,EAAE,MAAM,MAAM,IAAIA,MAAK,MAAM,MAAM,MAAM,IAAI;AACnD,gBAAM,OAAO,QAAQ,GAAG,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,CAAC;AAAA,QAC/D;AAEA,eAAO;AAAA,MACT;AAAA,MAEA,CAAC,OAAO,EAAG,OAAO;AAChB,YAAI,CAAC,KAAK,SAAS,EAAE,KAAK,GAAG;AAC3B,iBAAO,MAAM,OAAO;AAAA,QACtB;AAEA,eAAO,MAAM,OAAO,MAAM,UAAU,QAAQ;AAE5C,gBAAQ,MAAM,MAAM;AAAA,UAClB,KAAK;AAAA,UACL,KAAK;AACH,gBAAI,MAAM,MAAM;AACd,oBAAM,OAAO,MAAM,OAAO;AAAA,YAC5B;AAAA,UAGF,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,KAAK,OAAO,EAAE,KAAK;AAAA,UAE5B,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL;AACE,mBAAO,KAAK,WAAW,EAAE,KAAK;AAAA,QAClC;AAAA,MACF;AAAA,MAEA,CAAC,OAAO,EAAG,IAAI,OAAO;AAIpB,YAAI,GAAG,SAAS,YAAY;AAC1B,eAAK,KAAK,SAAS,EAAE;AAAA,QACvB,OAAO;AACL,eAAK,KAAK,mBAAmB,IAAI,EAAE,MAAM,CAAC;AAC1C,eAAK,MAAM,EAAE;AACb,gBAAM,OAAO;AAAA,QACf;AAAA,MACF;AAAA,MAEA,CAAC,KAAK,EAAG,KAAK,MAAM,IAAI;AACtB,cAAM,SAAS,GAAG,GAAG;AAAA,UACnB,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA,UACV,YAAY,KAAK;AAAA,UACjB,YAAY,KAAK;AAAA,UACjB,OAAO,KAAK;AAAA,UACZ,UAAU,KAAK;AAAA,UACf,QAAQ,KAAK;AAAA,UACb,OAAO,KAAK;AAAA,UACZ,KAAK,KAAK;AAAA,UACV;AAAA,UACA,SAAS,KAAK;AAAA,QAChB,GAAG,EAAE;AAAA,MACP;AAAA,MAEA,CAAC,OAAO,EAAG,OAAO;AAGhB,eAAO,KAAK,cACV,KAAK,kBACJ,OAAO,MAAM,QAAQ,YAAY,MAAM,QAAQ,KAAK,cACnD,OAAO,MAAM,QAAQ,YAAY,MAAM,QAAQ,KAAK,gBAErD,OAAO,KAAK,QAAQ,YAAY,KAAK,QAAQ,KAAK,cACjD,OAAO,KAAK,QAAQ,YAAY,KAAK,QAAQ,KAAK;AAAA,MACxD;AAAA,MAEA,CAAC,GAAG,EAAG,OAAO;AACZ,eAAO,OAAO,KAAK,KAAK,MAAM,KAAK,KAAK,UAAU;AAAA,MACpD;AAAA,MAEA,CAAC,GAAG,EAAG,OAAO;AACZ,eAAO,OAAO,KAAK,KAAK,MAAM,KAAK,KAAK,UAAU;AAAA,MACpD;AAAA,MAEA,CAAC,IAAI,EAAG,OAAO,WAAW;AACxB,cAAM,OAAO,MAAM,OAAO,QAAU,KAAK;AACzC,cAAM,SAAS,IAAI,IAAI,YAAY,MAAM,UAAU;AAAA,UACjD,OAAO,QAAQ,MAAM,IAAI;AAAA,UACzB;AAAA,UACA,WAAW;AAAA,QACb,CAAC;AACD,eAAO,GAAG,SAAS,QAAM;AACvB,cAAI,OAAO,IAAI;AACb,YAAAD,IAAG,MAAM,OAAO,IAAI,MAAM;AAAA,YAAC,CAAC;AAAA,UAC9B;AAKA,iBAAO,QAAQ,MAAM;AACrB,eAAK,OAAO,EAAE,IAAI,KAAK;AACvB,oBAAU;AAAA,QACZ,CAAC;AAED,YAAI,UAAU;AACd,cAAM,OAAO,QAAM;AACjB,cAAI,IAAI;AAEN,gBAAI,OAAO,IAAI;AACb,cAAAA,IAAG,MAAM,OAAO,IAAI,MAAM;AAAA,cAAC,CAAC;AAAA,YAC9B;AAEA,iBAAK,OAAO,EAAE,IAAI,KAAK;AACvB,sBAAU;AACV;AAAA,UACF;AAEA,cAAI,EAAE,YAAY,GAAG;AACnB,YAAAA,IAAG,MAAM,OAAO,IAAI,CAAAK,QAAM;AACxB,kBAAIA,KAAI;AACN,qBAAK,OAAO,EAAEA,KAAI,KAAK;AAAA,cACzB,OAAO;AACL,qBAAK,MAAM,EAAE;AAAA,cACf;AACA,wBAAU;AAAA,YACZ,CAAC;AAAA,UACH;AAAA,QACF;AAEA,eAAO,GAAG,UAAU,OAAK;AAIvB,gBAAM,MAAM,MAAM;AAClB,gBAAM,KAAK,OAAO;AAElB,cAAI,MAAM,SAAS,CAAC,KAAK,SAAS;AAChC;AACA,kBAAM,QAAQ,MAAM,SAAS,oBAAI,KAAK;AACtC,kBAAM,QAAQ,MAAM;AACpB,YAAAL,IAAG,QAAQ,IAAI,OAAO,OAAO,QAC3B,KAAKA,IAAG,OAAO,KAAK,OAAO,OAAO,SAAO,KAAK,OAAO,EAAE,CAAC,IACtD,KAAK,CAAC;AAAA,UACZ;AAEA,cAAI,KAAK,OAAO,EAAE,KAAK,GAAG;AACxB;AACA,kBAAM,MAAM,KAAK,GAAG,EAAE,KAAK;AAC3B,kBAAM,MAAM,KAAK,GAAG,EAAE,KAAK;AAC3B,YAAAA,IAAG,OAAO,IAAI,KAAK,KAAK,QACtB,KAAKA,IAAG,MAAM,KAAK,KAAK,KAAK,SAAO,KAAK,OAAO,EAAE,CAAC,IACjD,KAAK,CAAC;AAAA,UACZ;AAEA,eAAK;AAAA,QACP,CAAC;AAED,cAAM,KAAK,KAAK,YAAY,KAAK,UAAU,KAAK,KAAK,QAAQ;AAC7D,YAAI,OAAO,OAAO;AAChB,aAAG,GAAG,SAAS,QAAM;AACnB,iBAAK,OAAO,EAAE,IAAI,KAAK;AACvB,sBAAU;AAAA,UACZ,CAAC;AACD,gBAAM,KAAK,EAAE;AAAA,QACf;AACA,WAAG,KAAK,MAAM;AAAA,MAChB;AAAA,MAEA,CAAC,SAAS,EAAG,OAAO,WAAW;AAC7B,cAAM,OAAO,MAAM,OAAO,QAAU,KAAK;AACzC,aAAK,KAAK,EAAE,MAAM,UAAU,MAAM,QAAM;AACtC,cAAI,IAAI;AACN,iBAAK,OAAO,EAAE,IAAI,KAAK;AACvB,sBAAU;AACV;AAAA,UACF;AAEA,cAAI,UAAU;AACd,gBAAM,OAAO,OAAK;AAChB,gBAAI,EAAE,YAAY,GAAG;AACnB,wBAAU;AACV,mBAAK,MAAM,EAAE;AACb,oBAAM,OAAO;AAAA,YACf;AAAA,UACF;AAEA,cAAI,MAAM,SAAS,CAAC,KAAK,SAAS;AAChC;AACA,YAAAA,IAAG,OAAO,MAAM,UAAU,MAAM,SAAS,oBAAI,KAAK,GAAG,MAAM,OAAO,IAAI;AAAA,UACxE;AAEA,cAAI,KAAK,OAAO,EAAE,KAAK,GAAG;AACxB;AACA,YAAAA,IAAG,MAAM,MAAM,UAAU,KAAK,GAAG,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE,KAAK,GAAG,IAAI;AAAA,UACnE;AAEA,eAAK;AAAA,QACP,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,WAAW,EAAG,OAAO;AACpB,cAAM,cAAc;AACpB,aAAK;AAAA,UAAK;AAAA,UACR,2BAA2B,MAAM,IAAI;AAAA,UAAI,EAAE,MAAM;AAAA,QAAC;AACpD,cAAM,OAAO;AAAA,MACf;AAAA,MAEA,CAAC,OAAO,EAAG,OAAO,MAAM;AACtB,aAAK,IAAI,EAAE,OAAO,MAAM,UAAU,WAAW,IAAI;AAAA,MACnD;AAAA,MAEA,CAAC,QAAQ,EAAG,OAAO,MAAM;AACvB,cAAM,WAAW,SAASC,MAAK,QAAQ,KAAK,KAAK,MAAM,QAAQ,CAAC;AAChE,aAAK,IAAI,EAAE,OAAO,UAAU,QAAQ,IAAI;AAAA,MAC1C;AAAA,MAEA,CAAC,IAAI,IAAK;AACR,aAAK,OAAO;AAAA,MACd;AAAA,MAEA,CAAC,MAAM,IAAK;AACV,aAAK,OAAO;AACZ,aAAK,UAAU,EAAE;AAAA,MACnB;AAAA,MAEA,CAAC,IAAI,EAAG,OAAO;AACb,aAAK,MAAM,EAAE;AACb,cAAM,OAAO;AAAA,MACf;AAAA;AAAA;AAAA;AAAA,MAKA,CAAC,UAAU,EAAG,OAAO,IAAI;AACvB,eAAO,MAAM,SAAS,UACpB,CAAC,KAAK,UACN,GAAG,OAAO,KACV,GAAG,SAAS,KACZ,CAAC;AAAA,MACL;AAAA;AAAA,MAGA,CAAC,OAAO,EAAG,OAAO;AAChB,aAAK,IAAI,EAAE;AACX,cAAM,QAAQ,CAAC,MAAM,IAAI;AACzB,YAAI,MAAM,UAAU;AAClB,gBAAM,KAAK,MAAM,QAAQ;AAAA,QAC3B;AACA,aAAK,aAAa,QAAQ,OAAO,UAAQ,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAC;AAAA,MACtE;AAAA,MAEA,CAAC,UAAU,EAAG,OAAO;AAWnB,YAAI,MAAM,SAAS,gBAAgB;AACjC,oBAAU,KAAK,QAAQ;AAAA,QACzB,WAAW,MAAM,SAAS,aAAa;AACrC,qBAAW,KAAK,UAAU,MAAM,QAAQ;AAAA,QAC1C;AAAA,MACF;AAAA,MAEA,CAAC,QAAQ,EAAG,OAAO,WAAW;AAC5B,aAAK,UAAU,EAAE,KAAK;AAEtB,cAAM,OAAO,QAAM;AACjB,eAAK,UAAU,EAAE,KAAK;AACtB,oBAAU,EAAE;AAAA,QACd;AAEA,cAAM,WAAW,MAAM;AACrB,eAAK,KAAK,EAAE,KAAK,KAAK,KAAK,OAAO,QAAM;AACtC,gBAAI,IAAI;AACN,mBAAK,OAAO,EAAE,IAAI,KAAK;AACvB,mBAAK;AACL;AAAA,YACF;AACA,iBAAK,WAAW,IAAI;AACpB,kBAAM;AAAA,UACR,CAAC;AAAA,QACH;AAEA,cAAM,QAAQ,MAAM;AAClB,cAAI,MAAM,aAAa,KAAK,KAAK;AAC/B,kBAAM,SAAS,SAASA,MAAK,QAAQ,MAAM,QAAQ,CAAC;AACpD,gBAAI,WAAW,KAAK,KAAK;AACvB,qBAAO,KAAK,KAAK,EAAE,QAAQ,KAAK,OAAO,QAAM;AAC3C,oBAAI,IAAI;AACN,uBAAK,OAAO,EAAE,IAAI,KAAK;AACvB,uBAAK;AACL;AAAA,gBACF;AACA,gCAAgB;AAAA,cAClB,CAAC;AAAA,YACH;AAAA,UACF;AACA,0BAAgB;AAAA,QAClB;AAEA,cAAM,kBAAkB,MAAM;AAC5B,UAAAD,IAAG,MAAM,MAAM,UAAU,CAAC,SAAS,OAAO;AACxC,gBAAI,OAAO,KAAK,QAAQ,KAAK,SAAS,GAAG,QAAQ,MAAM,QAAQ;AAC7D,mBAAK,IAAI,EAAE,KAAK;AAChB,mBAAK;AACL;AAAA,YACF;AACA,gBAAI,WAAW,KAAK,UAAU,EAAE,OAAO,EAAE,GAAG;AAC1C,qBAAO,KAAK,MAAM,EAAE,MAAM,OAAO,IAAI;AAAA,YACvC;AAEA,gBAAI,GAAG,YAAY,GAAG;AACpB,kBAAI,MAAM,SAAS,aAAa;AAC9B,sBAAM,YAAY,CAAC,KAAK,WACtB,MAAM,SACL,GAAG,OAAO,UAAY,MAAM;AAC/B,sBAAM,aAAa,QAAM,KAAK,MAAM,EAAE,IAAI,OAAO,IAAI;AACrD,oBAAI,CAAC,WAAW;AACd,yBAAO,WAAW;AAAA,gBACpB;AACA,uBAAOA,IAAG,MAAM,MAAM,UAAU,MAAM,MAAM,UAAU;AAAA,cACxD;AAQA,kBAAI,MAAM,aAAa,KAAK,KAAK;AAC/B,uBAAOA,IAAG,MAAM,MAAM,UAAU,QAC9B,KAAK,MAAM,EAAE,IAAI,OAAO,IAAI,CAAC;AAAA,cACjC;AAAA,YACF;AAIA,gBAAI,MAAM,aAAa,KAAK,KAAK;AAC/B,qBAAO,KAAK,MAAM,EAAE,MAAM,OAAO,IAAI;AAAA,YACvC;AAEA,uBAAW,MAAM,UAAU,QACzB,KAAK,MAAM,EAAE,IAAI,OAAO,IAAI,CAAC;AAAA,UACjC,CAAC;AAAA,QACH;AAEA,YAAI,KAAK,WAAW,GAAG;AACrB,gBAAM;AAAA,QACR,OAAO;AACL,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MAEA,CAAC,MAAM,EAAG,IAAI,OAAO,MAAM;AACzB,YAAI,IAAI;AACN,eAAK,OAAO,EAAE,IAAI,KAAK;AACvB,eAAK;AACL;AAAA,QACF;AAEA,gBAAQ,MAAM,MAAM;AAAA,UAClB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,KAAK,IAAI,EAAE,OAAO,IAAI;AAAA,UAE/B,KAAK;AACH,mBAAO,KAAK,QAAQ,EAAE,OAAO,IAAI;AAAA,UAEnC,KAAK;AACH,mBAAO,KAAK,OAAO,EAAE,OAAO,IAAI;AAAA,UAElC,KAAK;AAAA,UACL,KAAK;AACH,mBAAO,KAAK,SAAS,EAAE,OAAO,IAAI;AAAA,QACtC;AAAA,MACF;AAAA,MAEA,CAAC,IAAI,EAAG,OAAO,UAAU,MAAM,MAAM;AAEnC,QAAAA,IAAG,IAAI,EAAE,UAAU,MAAM,UAAU,QAAM;AACvC,cAAI,IAAI;AACN,iBAAK,OAAO,EAAE,IAAI,KAAK;AAAA,UACzB,OAAO;AACL,iBAAK,MAAM,EAAE;AACb,kBAAM,OAAO;AAAA,UACf;AACA,eAAK;AAAA,QACP,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAM,WAAW,QAAM;AACrB,UAAI;AACF,eAAO,CAAC,MAAM,GAAG,CAAC;AAAA,MACpB,SAAS,IAAI;AACX,eAAO,CAAC,IAAI,IAAI;AAAA,MAClB;AAAA,IACF;AACA,QAAM,aAAN,cAAyB,OAAO;AAAA,MAC9B,CAAC,MAAM,EAAG,IAAI,OAAO;AACnB,eAAO,MAAM,MAAM,EAAE,IAAI,OAAO,MAAM;AAAA,QAAC,CAAC;AAAA,MAC1C;AAAA,MAEA,CAAC,OAAO,EAAG,OAAO;AAChB,aAAK,UAAU,EAAE,KAAK;AAEtB,YAAI,CAAC,KAAK,WAAW,GAAG;AACtB,gBAAMK,MAAK,KAAK,KAAK,EAAE,KAAK,KAAK,KAAK,KAAK;AAC3C,cAAIA,KAAI;AACN,mBAAO,KAAK,OAAO,EAAEA,KAAI,KAAK;AAAA,UAChC;AACA,eAAK,WAAW,IAAI;AAAA,QACtB;AAIA,YAAI,MAAM,aAAa,KAAK,KAAK;AAC/B,gBAAM,SAAS,SAASJ,MAAK,QAAQ,MAAM,QAAQ,CAAC;AACpD,cAAI,WAAW,KAAK,KAAK;AACvB,kBAAM,WAAW,KAAK,KAAK,EAAE,QAAQ,KAAK,KAAK;AAC/C,gBAAI,UAAU;AACZ,qBAAO,KAAK,OAAO,EAAE,UAAU,KAAK;AAAA,YACtC;AAAA,UACF;AAAA,QACF;AAEA,cAAM,CAAC,SAAS,EAAE,IAAI,SAAS,MAAMD,IAAG,UAAU,MAAM,QAAQ,CAAC;AACjE,YAAI,OAAO,KAAK,QAAQ,KAAK,SAAS,GAAG,QAAQ,MAAM,QAAQ;AAC7D,iBAAO,KAAK,IAAI,EAAE,KAAK;AAAA,QACzB;AAEA,YAAI,WAAW,KAAK,UAAU,EAAE,OAAO,EAAE,GAAG;AAC1C,iBAAO,KAAK,MAAM,EAAE,MAAM,KAAK;AAAA,QACjC;AAEA,YAAI,GAAG,YAAY,GAAG;AACpB,cAAI,MAAM,SAAS,aAAa;AAC9B,kBAAM,YAAY,CAAC,KAAK,WACtB,MAAM,SACL,GAAG,OAAO,UAAY,MAAM;AAC/B,kBAAM,CAACK,GAAE,IAAI,YAAY,SAAS,MAAM;AACtC,cAAAL,IAAG,UAAU,MAAM,UAAU,MAAM,IAAI;AAAA,YACzC,CAAC,IAAI,CAAC;AACN,mBAAO,KAAK,MAAM,EAAEK,KAAI,KAAK;AAAA,UAC/B;AAEA,gBAAM,CAACA,GAAE,IAAI,SAAS,MAAML,IAAG,UAAU,MAAM,QAAQ,CAAC;AACxD,eAAK,MAAM,EAAEK,KAAI,KAAK;AAAA,QACxB;AAIA,cAAM,CAAC,EAAE,IAAI,MAAM,aAAa,KAAK,MAAM,CAAC,IACxC,SAAS,MAAM,eAAe,MAAM,QAAQ,CAAC;AACjD,aAAK,MAAM,EAAE,IAAI,KAAK;AAAA,MACxB;AAAA,MAEA,CAAC,IAAI,EAAG,OAAO,MAAM;AACnB,cAAM,OAAO,MAAM,OAAO,QAAU,KAAK;AAEzC,cAAM,OAAO,QAAM;AACjB,cAAI;AACJ,cAAI;AACF,YAAAL,IAAG,UAAU,EAAE;AAAA,UACjB,SAAS,GAAG;AACV,yBAAa;AAAA,UACf;AACA,cAAI,MAAM,YAAY;AACpB,iBAAK,OAAO,EAAE,MAAM,YAAY,KAAK;AAAA,UACvC;AACA,eAAK;AAAA,QACP;AAEA,YAAI;AACJ,YAAI;AACF,eAAKA,IAAG,SAAS,MAAM,UAAU,QAAQ,MAAM,IAAI,GAAG,IAAI;AAAA,QAC5D,SAAS,IAAI;AACX,iBAAO,KAAK,EAAE;AAAA,QAChB;AACA,cAAM,KAAK,KAAK,YAAY,KAAK,UAAU,KAAK,KAAK,QAAQ;AAC7D,YAAI,OAAO,OAAO;AAChB,aAAG,GAAG,SAAS,QAAM,KAAK,OAAO,EAAE,IAAI,KAAK,CAAC;AAC7C,gBAAM,KAAK,EAAE;AAAA,QACf;AAEA,WAAG,GAAG,QAAQ,WAAS;AACrB,cAAI;AACF,YAAAA,IAAG,UAAU,IAAI,OAAO,GAAG,MAAM,MAAM;AAAA,UACzC,SAAS,IAAI;AACX,iBAAK,EAAE;AAAA,UACT;AAAA,QACF,CAAC;AAED,WAAG,GAAG,OAAO,OAAK;AAChB,cAAI,KAAK;AAGT,cAAI,MAAM,SAAS,CAAC,KAAK,SAAS;AAChC,kBAAM,QAAQ,MAAM,SAAS,oBAAI,KAAK;AACtC,kBAAM,QAAQ,MAAM;AACpB,gBAAI;AACF,cAAAA,IAAG,YAAY,IAAI,OAAO,KAAK;AAAA,YACjC,SAAS,WAAW;AAClB,kBAAI;AACF,gBAAAA,IAAG,WAAW,MAAM,UAAU,OAAO,KAAK;AAAA,cAC5C,SAAS,UAAU;AACjB,qBAAK;AAAA,cACP;AAAA,YACF;AAAA,UACF;AAEA,cAAI,KAAK,OAAO,EAAE,KAAK,GAAG;AACxB,kBAAM,MAAM,KAAK,GAAG,EAAE,KAAK;AAC3B,kBAAM,MAAM,KAAK,GAAG,EAAE,KAAK;AAE3B,gBAAI;AACF,cAAAA,IAAG,WAAW,IAAI,KAAK,GAAG;AAAA,YAC5B,SAAS,UAAU;AACjB,kBAAI;AACF,gBAAAA,IAAG,UAAU,MAAM,UAAU,KAAK,GAAG;AAAA,cACvC,SAAS,SAAS;AAChB,qBAAK,MAAM;AAAA,cACb;AAAA,YACF;AAAA,UACF;AAEA,eAAK,EAAE;AAAA,QACT,CAAC;AAAA,MACH;AAAA,MAEA,CAAC,SAAS,EAAG,OAAO,MAAM;AACxB,cAAM,OAAO,MAAM,OAAO,QAAU,KAAK;AACzC,cAAM,KAAK,KAAK,KAAK,EAAE,MAAM,UAAU,IAAI;AAC3C,YAAI,IAAI;AACN,eAAK,OAAO,EAAE,IAAI,KAAK;AACvB,eAAK;AACL;AAAA,QACF;AACA,YAAI,MAAM,SAAS,CAAC,KAAK,SAAS;AAChC,cAAI;AACF,YAAAA,IAAG,WAAW,MAAM,UAAU,MAAM,SAAS,oBAAI,KAAK,GAAG,MAAM,KAAK;AAAA,UACtE,SAASK,KAAI;AAAA,UAAC;AAAA,QAChB;AACA,YAAI,KAAK,OAAO,EAAE,KAAK,GAAG;AACxB,cAAI;AACF,YAAAL,IAAG,UAAU,MAAM,UAAU,KAAK,GAAG,EAAE,KAAK,GAAG,KAAK,GAAG,EAAE,KAAK,CAAC;AAAA,UACjE,SAASK,KAAI;AAAA,UAAC;AAAA,QAChB;AACA,aAAK;AACL,cAAM,OAAO;AAAA,MACf;AAAA,MAEA,CAAC,KAAK,EAAG,KAAK,MAAM;AAClB,YAAI;AACF,iBAAO,MAAM,KAAK,SAAS,GAAG,GAAG;AAAA,YAC/B,KAAK,KAAK;AAAA,YACV,KAAK,KAAK;AAAA,YACV,YAAY,KAAK;AAAA,YACjB,YAAY,KAAK;AAAA,YACjB,OAAO,KAAK;AAAA,YACZ,UAAU,KAAK;AAAA,YACf,QAAQ,KAAK;AAAA,YACb,OAAO,KAAK;AAAA,YACZ,KAAK,KAAK;AAAA,YACV;AAAA,UACF,CAAC;AAAA,QACH,SAAS,IAAI;AACX,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEA,CAAC,IAAI,EAAG,OAAO,UAAU,MAAM,MAAM;AACnC,YAAI;AACF,UAAAL,IAAG,OAAO,MAAM,EAAE,UAAU,MAAM,QAAQ;AAC1C,eAAK;AACL,gBAAM,OAAO;AAAA,QACf,SAAS,IAAI;AACX,iBAAO,KAAK,OAAO,EAAE,IAAI,KAAK;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAEA,WAAO,OAAO;AACd,WAAO,UAAU;AAAA;AAAA;;;AC15BjB;AAAA;AAAA;AAGA,QAAM,MAAM;AACZ,QAAM,SAAS;AACf,QAAMM,MAAK,UAAQ,IAAI;AACvB,QAAM,MAAM;AACZ,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,aAAa;AAEnB,WAAO,UAAU,CAAC,MAAM,OAAO,OAAO;AACpC,UAAI,OAAO,SAAS,YAAY;AAC9B,aAAK,MAAM,QAAQ,MAAM,OAAO,CAAC;AAAA,MACnC,WAAW,MAAM,QAAQ,IAAI,GAAG;AAC9B,gBAAQ,MAAM,OAAO,CAAC;AAAA,MACxB;AAEA,UAAI,OAAO,UAAU,YAAY;AAC/B,aAAK,OAAO,QAAQ;AAAA,MACtB;AAEA,UAAI,CAAC,OAAO;AACV,gBAAQ,CAAC;AAAA,MACX,OAAO;AACL,gBAAQ,MAAM,KAAK,KAAK;AAAA,MAC1B;AAEA,YAAM,MAAM,IAAI,IAAI;AAEpB,UAAI,IAAI,QAAQ,OAAO,OAAO,YAAY;AACxC,cAAM,IAAI,UAAU,+CAA+C;AAAA,MACrE;AAEA,UAAI,CAAC,IAAI,QAAQ,OAAO,OAAO,YAAY;AACzC,cAAM,IAAI,UAAU,0CAA0C;AAAA,MAChE;AAEA,UAAI,MAAM,QAAQ;AAChB,oBAAY,KAAK,KAAK;AAAA,MACxB;AAEA,aAAO,IAAI,QAAQ,IAAI,OAAO,gBAAgB,GAAG,IAC7C,IAAI,OAAO,YAAY,KAAK,EAAE,IAC9B,IAAI,OAAO,YAAY,GAAG,IAC1B,QAAQ,GAAG;AAAA,IACjB;AAIA,QAAM,cAAc,CAAC,KAAK,UAAU;AAClC,YAAM,MAAM,IAAI,IAAI,MAAM,IAAI,OAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;AACzD,YAAM,SAAS,IAAI;AAEnB,YAAM,SAAS,CAAC,MAAM,MAAM;AAC1B,cAAM,OAAO,KAAKA,MAAK,MAAM,IAAI,EAAE,QAAQ;AAC3C,cAAM,MAAM,SAAS,OAAO,QACxB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAC5B,OAAOA,MAAK,QAAQ,IAAI,GAAG,IAAI;AAEnC,YAAI,IAAI,MAAM,GAAG;AACjB,eAAO;AAAA,MACT;AAEA,UAAI,SAAS,SACT,CAAC,MAAM,UAAU,OAAO,MAAM,KAAK,KAAK,OAAO,WAAW,IAAI,CAAC,IAC/D,UAAQ,OAAO,WAAW,IAAI,CAAC;AAAA,IACrC;AAEA,QAAM,kBAAkB,SAAO;AAC7B,YAAM,IAAI,IAAI,OAAO,KAAK,GAAG;AAE7B,YAAM,OAAO,IAAI;AACjB,YAAM,OAAOD,IAAG,SAAS,IAAI;AAG7B,YAAM,WAAW,IAAI,eAAe,KAAK,OAAO;AAChD,YAAM,SAAS,IAAI,IAAI,eAAe,MAAM;AAAA,QAC1C;AAAA,QACA,MAAM,KAAK;AAAA,MACb,CAAC;AACD,aAAO,KAAK,CAAC;AAAA,IACf;AAEA,QAAM,cAAc,CAAC,KAAK,OAAO;AAC/B,YAAM,IAAI,IAAI,OAAO,GAAG;AACxB,YAAM,WAAW,IAAI,eAAe,KAAK,OAAO;AAEhD,YAAM,OAAO,IAAI;AACjB,YAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,WAAW;AACzC,UAAE,GAAG,SAAS,MAAM;AACpB,UAAE,GAAG,SAAS,OAAO;AAIrB,QAAAA,IAAG,KAAK,MAAM,CAAC,IAAI,SAAS;AAC1B,cAAI,IAAI;AACN,mBAAO,EAAE;AAAA,UACX,OAAO;AACL,kBAAM,SAAS,IAAI,IAAI,WAAW,MAAM;AAAA,cACtC;AAAA,cACA,MAAM,KAAK;AAAA,YACb,CAAC;AACD,mBAAO,GAAG,SAAS,MAAM;AACzB,mBAAO,KAAK,CAAC;AAAA,UACf;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,aAAO,KAAK,EAAE,KAAK,IAAI,EAAE,IAAI;AAAA,IAC/B;AAEA,QAAM,cAAc,SAAO,IAAI,OAAO,KAAK,GAAG;AAE9C,QAAM,UAAU,SAAO,IAAI,OAAO,GAAG;AAAA;AAAA;;;AChHrC;AAAA;AAAA;AAGA,YAAQ,IAAI,QAAQ,SAAS;AAC7B,YAAQ,IAAI,QAAQ,UAAU;AAC9B,YAAQ,IAAI,QAAQ,OAAO;AAC3B,YAAQ,IAAI,QAAQ,SAAS;AAC7B,YAAQ,IAAI,QAAQ,UAAU;AAG9B,YAAQ,OAAO;AACf,YAAQ,SAAS;AACjB,YAAQ,QAAQ;AAChB,YAAQ,YAAY;AACpB,YAAQ,aAAa;AACrB,YAAQ,SAAS;AACjB,YAAQ,MAAM;AACd,YAAQ,QAAQ;AAAA;AAAA;;;ACjBhB,IAAAE,qBAAA;AAAA;AAEA,QAAM,sBAAsB;AAE5B,QAAM,aAAa;AACnB,QAAM,mBAAmB,OAAO;AAAA,IACL;AAG3B,QAAM,4BAA4B;AAIlC,QAAM,wBAAwB,aAAa;AAE3C,QAAM,gBAAgB;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,yBAAyB;AAAA,MACzB,YAAY;AAAA,IACd;AAAA;AAAA;;;AClCA;AAAA;AAAA,QAAM,QACJ,OAAO,YAAY,YACnB,QAAQ,OACR,QAAQ,IAAI,cACZ,cAAc,KAAK,QAAQ,IAAI,UAAU,IACvC,IAAI,SAAS,QAAQ,MAAM,UAAU,GAAG,IAAI,IAC5C,MAAM;AAAA,IAAC;AAEX,WAAO,UAAU;AAAA;AAAA;;;ACRjB;AAAA;AAAA,QAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAM,QAAQ;AACd,cAAU,OAAO,UAAU,CAAC;AAG5B,QAAM,KAAK,QAAQ,KAAK,CAAC;AACzB,QAAM,SAAS,QAAQ,SAAS,CAAC;AACjC,QAAM,MAAM,QAAQ,MAAM,CAAC;AAC3B,QAAM,IAAI,QAAQ,IAAI,CAAC;AACvB,QAAI,IAAI;AAER,QAAM,mBAAmB;AAQzB,QAAM,wBAAwB;AAAA,MAC5B,CAAC,OAAO,CAAC;AAAA,MACT,CAAC,OAAO,UAAU;AAAA,MAClB,CAAC,kBAAkB,qBAAqB;AAAA,IAC1C;AAEA,QAAM,gBAAgB,CAAC,UAAU;AAC/B,iBAAW,CAAC,OAAO,GAAG,KAAK,uBAAuB;AAChD,gBAAQ,MACL,MAAM,GAAG,KAAK,GAAG,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,EAC5C,MAAM,GAAG,KAAK,GAAG,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG;AAAA,MACjD;AACA,aAAO;AAAA,IACT;AAEA,QAAM,cAAc,CAAC,MAAM,OAAO,aAAa;AAC7C,YAAM,OAAO,cAAc,KAAK;AAChC,YAAM,QAAQ;AACd,YAAM,MAAM,OAAO,KAAK;AACxB,QAAE,IAAI,IAAI;AACV,UAAI,KAAK,IAAI;AACb,SAAG,KAAK,IAAI,IAAI,OAAO,OAAO,WAAW,MAAM,MAAS;AACxD,aAAO,KAAK,IAAI,IAAI,OAAO,MAAM,WAAW,MAAM,MAAS;AAAA,IAC7D;AAQA,gBAAY,qBAAqB,aAAa;AAC9C,gBAAY,0BAA0B,MAAM;AAM5C,gBAAY,wBAAwB,gBAAgB,gBAAgB,GAAG;AAKvE,gBAAY,eAAe,IAAI,IAAI,EAAE,iBAAiB,CAAC,QAChC,IAAI,EAAE,iBAAiB,CAAC,QACxB,IAAI,EAAE,iBAAiB,CAAC,GAAG;AAElD,gBAAY,oBAAoB,IAAI,IAAI,EAAE,sBAAsB,CAAC,QACrC,IAAI,EAAE,sBAAsB,CAAC,QAC7B,IAAI,EAAE,sBAAsB,CAAC,GAAG;AAK5D,gBAAY,wBAAwB,MAAM,IAAI,EAAE,iBAAiB,CACjE,IAAI,IAAI,EAAE,oBAAoB,CAAC,GAAG;AAElC,gBAAY,6BAA6B,MAAM,IAAI,EAAE,sBAAsB,CAC3E,IAAI,IAAI,EAAE,oBAAoB,CAAC,GAAG;AAMlC,gBAAY,cAAc,QAAQ,IAAI,EAAE,oBAAoB,CAC5D,SAAS,IAAI,EAAE,oBAAoB,CAAC,MAAM;AAE1C,gBAAY,mBAAmB,SAAS,IAAI,EAAE,yBAAyB,CACvE,SAAS,IAAI,EAAE,yBAAyB,CAAC,MAAM;AAK/C,gBAAY,mBAAmB,GAAG,gBAAgB,GAAG;AAMrD,gBAAY,SAAS,UAAU,IAAI,EAAE,eAAe,CACpD,SAAS,IAAI,EAAE,eAAe,CAAC,MAAM;AAWrC,gBAAY,aAAa,KAAK,IAAI,EAAE,WAAW,CAC/C,GAAG,IAAI,EAAE,UAAU,CAAC,IAClB,IAAI,EAAE,KAAK,CAAC,GAAG;AAEjB,gBAAY,QAAQ,IAAI,IAAI,EAAE,SAAS,CAAC,GAAG;AAK3C,gBAAY,cAAc,WAAW,IAAI,EAAE,gBAAgB,CAC3D,GAAG,IAAI,EAAE,eAAe,CAAC,IACvB,IAAI,EAAE,KAAK,CAAC,GAAG;AAEjB,gBAAY,SAAS,IAAI,IAAI,EAAE,UAAU,CAAC,GAAG;AAE7C,gBAAY,QAAQ,cAAc;AAKlC,gBAAY,yBAAyB,GAAG,IAAI,EAAE,sBAAsB,CAAC,UAAU;AAC/E,gBAAY,oBAAoB,GAAG,IAAI,EAAE,iBAAiB,CAAC,UAAU;AAErE,gBAAY,eAAe,YAAY,IAAI,EAAE,gBAAgB,CAAC,WACjC,IAAI,EAAE,gBAAgB,CAAC,WACvB,IAAI,EAAE,gBAAgB,CAAC,OAC3B,IAAI,EAAE,UAAU,CAAC,KACrB,IAAI,EAAE,KAAK,CAAC,OACR;AAEzB,gBAAY,oBAAoB,YAAY,IAAI,EAAE,qBAAqB,CAAC,WACtC,IAAI,EAAE,qBAAqB,CAAC,WAC5B,IAAI,EAAE,qBAAqB,CAAC,OAChC,IAAI,EAAE,eAAe,CAAC,KAC1B,IAAI,EAAE,KAAK,CAAC,OACR;AAE9B,gBAAY,UAAU,IAAI,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,WAAW,CAAC,GAAG;AACjE,gBAAY,eAAe,IAAI,IAAI,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,gBAAgB,CAAC,GAAG;AAI3E,gBAAY,eAAe,GAAG,mBACP,GAAG,yBAAyB,kBACrB,yBAAyB,oBACzB,yBAAyB,MAAM;AAC7D,gBAAY,UAAU,GAAG,IAAI,EAAE,WAAW,CAAC,cAAc;AACzD,gBAAY,cAAc,IAAI,EAAE,WAAW,IAC7B,MAAM,IAAI,EAAE,UAAU,CAAC,QACjB,IAAI,EAAE,KAAK,CAAC,gBACJ;AAC5B,gBAAY,aAAa,IAAI,EAAE,MAAM,GAAG,IAAI;AAC5C,gBAAY,iBAAiB,IAAI,EAAE,UAAU,GAAG,IAAI;AAIpD,gBAAY,aAAa,SAAS;AAElC,gBAAY,aAAa,SAAS,IAAI,EAAE,SAAS,CAAC,QAAQ,IAAI;AAC9D,YAAQ,mBAAmB;AAE3B,gBAAY,SAAS,IAAI,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,GAAG;AACjE,gBAAY,cAAc,IAAI,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,gBAAgB,CAAC,GAAG;AAI3E,gBAAY,aAAa,SAAS;AAElC,gBAAY,aAAa,SAAS,IAAI,EAAE,SAAS,CAAC,QAAQ,IAAI;AAC9D,YAAQ,mBAAmB;AAE3B,gBAAY,SAAS,IAAI,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,GAAG;AACjE,gBAAY,cAAc,IAAI,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,gBAAgB,CAAC,GAAG;AAG3E,gBAAY,mBAAmB,IAAI,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,UAAU,CAAC,OAAO;AAC9E,gBAAY,cAAc,IAAI,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,SAAS,CAAC,OAAO;AAIxE,gBAAY,kBAAkB,SAAS,IAAI,EAAE,IAAI,CACjD,QAAQ,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,EAAE,WAAW,CAAC,KAAK,IAAI;AACxD,YAAQ,wBAAwB;AAMhC,gBAAY,eAAe,SAAS,IAAI,EAAE,WAAW,CAAC,cAE/B,IAAI,EAAE,WAAW,CAAC,QACf;AAE1B,gBAAY,oBAAoB,SAAS,IAAI,EAAE,gBAAgB,CAAC,cAEpC,IAAI,EAAE,gBAAgB,CAAC,QACpB;AAG/B,gBAAY,QAAQ,iBAAiB;AAErC,gBAAY,QAAQ,2BAA2B;AAC/C,gBAAY,WAAW,6BAA6B;AAAA;AAAA;;;ACxNpD;AAAA;AACA,QAAM,cAAc,OAAO,OAAO,EAAE,OAAO,KAAK,CAAC;AACjD,QAAM,YAAY,OAAO,OAAO,CAAE,CAAC;AACnC,QAAM,eAAe,aAAW;AAC9B,UAAI,CAAC,SAAS;AACZ,eAAO;AAAA,MACT;AAEA,UAAI,OAAO,YAAY,UAAU;AAC/B,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACdjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,qBAAqB,CAAC,GAAG,MAAM;AACnC,YAAM,OAAO,QAAQ,KAAK,CAAC;AAC3B,YAAM,OAAO,QAAQ,KAAK,CAAC;AAE3B,UAAI,QAAQ,MAAM;AAChB,YAAI,CAAC;AACL,YAAI,CAAC;AAAA,MACP;AAEA,aAAO,MAAM,IAAI,IACZ,QAAQ,CAAC,OAAQ,KACjB,QAAQ,CAAC,OAAQ,IAClB,IAAI,IAAI,KACR;AAAA,IACN;AAEA,QAAM,sBAAsB,CAAC,GAAG,MAAM,mBAAmB,GAAG,CAAC;AAE7D,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,IACF;AAAA;AAAA;;;ACtBA;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,EAAE,YAAY,iBAAiB,IAAI;AACzC,QAAM,EAAE,QAAQ,IAAI,EAAE,IAAI;AAE1B,QAAM,eAAe;AACrB,QAAM,EAAE,mBAAmB,IAAI;AAC/B,QAAM,SAAN,MAAM,QAAO;AAAA,MACX,YAAaC,UAAS,SAAS;AAC7B,kBAAU,aAAa,OAAO;AAE9B,YAAIA,oBAAmB,SAAQ;AAC7B,cAAIA,SAAQ,UAAU,CAAC,CAAC,QAAQ,SAC5BA,SAAQ,sBAAsB,CAAC,CAAC,QAAQ,mBAAmB;AAC7D,mBAAOA;AAAA,UACT,OAAO;AACL,YAAAA,WAAUA,SAAQ;AAAA,UACpB;AAAA,QACF,WAAW,OAAOA,aAAY,UAAU;AACtC,gBAAM,IAAI,UAAU,gDAAgD,OAAOA,QAAO,IAAI;AAAA,QACxF;AAEA,YAAIA,SAAQ,SAAS,YAAY;AAC/B,gBAAM,IAAI;AAAA,YACR,0BAA0B,UAAU;AAAA,UACtC;AAAA,QACF;AAEA,cAAM,UAAUA,UAAS,OAAO;AAChC,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,QAAQ;AAGvB,aAAK,oBAAoB,CAAC,CAAC,QAAQ;AAEnC,cAAM,IAAIA,SAAQ,KAAK,EAAE,MAAM,QAAQ,QAAQ,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,IAAI,CAAC;AAEvE,YAAI,CAAC,GAAG;AACN,gBAAM,IAAI,UAAU,oBAAoBA,QAAO,EAAE;AAAA,QACnD;AAEA,aAAK,MAAMA;AAGX,aAAK,QAAQ,CAAC,EAAE,CAAC;AACjB,aAAK,QAAQ,CAAC,EAAE,CAAC;AACjB,aAAK,QAAQ,CAAC,EAAE,CAAC;AAEjB,YAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAEA,YAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAEA,YAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAGA,YAAI,CAAC,EAAE,CAAC,GAAG;AACT,eAAK,aAAa,CAAC;AAAA,QACrB,OAAO;AACL,eAAK,aAAa,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,CAAC,OAAO;AAC5C,gBAAI,WAAW,KAAK,EAAE,GAAG;AACvB,oBAAM,MAAM,CAAC;AACb,kBAAI,OAAO,KAAK,MAAM,kBAAkB;AACtC,uBAAO;AAAA,cACT;AAAA,YACF;AACA,mBAAO;AAAA,UACT,CAAC;AAAA,QACH;AAEA,aAAK,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;AACvC,aAAK,OAAO;AAAA,MACd;AAAA,MAEA,SAAU;AACR,aAAK,UAAU,GAAG,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK;AACxD,YAAI,KAAK,WAAW,QAAQ;AAC1B,eAAK,WAAW,IAAI,KAAK,WAAW,KAAK,GAAG,CAAC;AAAA,QAC/C;AACA,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAY;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,QAAS,OAAO;AACd,cAAM,kBAAkB,KAAK,SAAS,KAAK,SAAS,KAAK;AACzD,YAAI,EAAE,iBAAiB,UAAS;AAC9B,cAAI,OAAO,UAAU,YAAY,UAAU,KAAK,SAAS;AACvD,mBAAO;AAAA,UACT;AACA,kBAAQ,IAAI,QAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAEA,YAAI,MAAM,YAAY,KAAK,SAAS;AAClC,iBAAO;AAAA,QACT;AAEA,eAAO,KAAK,YAAY,KAAK,KAAK,KAAK,WAAW,KAAK;AAAA,MACzD;AAAA,MAEA,YAAa,OAAO;AAClB,YAAI,EAAE,iBAAiB,UAAS;AAC9B,kBAAQ,IAAI,QAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAEA,eACE,mBAAmB,KAAK,OAAO,MAAM,KAAK,KAC1C,mBAAmB,KAAK,OAAO,MAAM,KAAK,KAC1C,mBAAmB,KAAK,OAAO,MAAM,KAAK;AAAA,MAE9C;AAAA,MAEA,WAAY,OAAO;AACjB,YAAI,EAAE,iBAAiB,UAAS;AAC9B,kBAAQ,IAAI,QAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAGA,YAAI,KAAK,WAAW,UAAU,CAAC,MAAM,WAAW,QAAQ;AACtD,iBAAO;AAAA,QACT,WAAW,CAAC,KAAK,WAAW,UAAU,MAAM,WAAW,QAAQ;AAC7D,iBAAO;AAAA,QACT,WAAW,CAAC,KAAK,WAAW,UAAU,CAAC,MAAM,WAAW,QAAQ;AAC9D,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI;AACR,WAAG;AACD,gBAAM,IAAI,KAAK,WAAW,CAAC;AAC3B,gBAAM,IAAI,MAAM,WAAW,CAAC;AAC5B,gBAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,cAAI,MAAM,UAAa,MAAM,QAAW;AACtC,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,GAAG;AAClB;AAAA,UACF,OAAO;AACL,mBAAO,mBAAmB,GAAG,CAAC;AAAA,UAChC;AAAA,QACF,SAAS,EAAE;AAAA,MACb;AAAA,MAEA,aAAc,OAAO;AACnB,YAAI,EAAE,iBAAiB,UAAS;AAC9B,kBAAQ,IAAI,QAAO,OAAO,KAAK,OAAO;AAAA,QACxC;AAEA,YAAI,IAAI;AACR,WAAG;AACD,gBAAM,IAAI,KAAK,MAAM,CAAC;AACtB,gBAAM,IAAI,MAAM,MAAM,CAAC;AACvB,gBAAM,sBAAsB,GAAG,GAAG,CAAC;AACnC,cAAI,MAAM,UAAa,MAAM,QAAW;AACtC,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,QAAW;AAC1B,mBAAO;AAAA,UACT,WAAW,MAAM,GAAG;AAClB;AAAA,UACF,OAAO;AACL,mBAAO,mBAAmB,GAAG,CAAC;AAAA,UAChC;AAAA,QACF,SAAS,EAAE;AAAA,MACb;AAAA;AAAA;AAAA,MAIA,IAAK,SAAS,YAAY,gBAAgB;AACxC,gBAAQ,SAAS;AAAA,UACf,KAAK;AACH,iBAAK,WAAW,SAAS;AACzB,iBAAK,QAAQ;AACb,iBAAK,QAAQ;AACb,iBAAK;AACL,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UACF,KAAK;AACH,iBAAK,WAAW,SAAS;AACzB,iBAAK,QAAQ;AACb,iBAAK;AACL,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UACF,KAAK;AAIH,iBAAK,WAAW,SAAS;AACzB,iBAAK,IAAI,SAAS,YAAY,cAAc;AAC5C,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UAGF,KAAK;AACH,gBAAI,KAAK,WAAW,WAAW,GAAG;AAChC,mBAAK,IAAI,SAAS,YAAY,cAAc;AAAA,YAC9C;AACA,iBAAK,IAAI,OAAO,YAAY,cAAc;AAC1C;AAAA,UAEF,KAAK;AAKH,gBACE,KAAK,UAAU,KACf,KAAK,UAAU,KACf,KAAK,WAAW,WAAW,GAC3B;AACA,mBAAK;AAAA,YACP;AACA,iBAAK,QAAQ;AACb,iBAAK,QAAQ;AACb,iBAAK,aAAa,CAAC;AACnB;AAAA,UACF,KAAK;AAKH,gBAAI,KAAK,UAAU,KAAK,KAAK,WAAW,WAAW,GAAG;AACpD,mBAAK;AAAA,YACP;AACA,iBAAK,QAAQ;AACb,iBAAK,aAAa,CAAC;AACnB;AAAA,UACF,KAAK;AAKH,gBAAI,KAAK,WAAW,WAAW,GAAG;AAChC,mBAAK;AAAA,YACP;AACA,iBAAK,aAAa,CAAC;AACnB;AAAA,UAGF,KAAK,OAAO;AACV,kBAAM,OAAO,OAAO,cAAc,IAAI,IAAI;AAE1C,gBAAI,CAAC,cAAc,mBAAmB,OAAO;AAC3C,oBAAM,IAAI,MAAM,iDAAiD;AAAA,YACnE;AAEA,gBAAI,KAAK,WAAW,WAAW,GAAG;AAChC,mBAAK,aAAa,CAAC,IAAI;AAAA,YACzB,OAAO;AACL,kBAAI,IAAI,KAAK,WAAW;AACxB,qBAAO,EAAE,KAAK,GAAG;AACf,oBAAI,OAAO,KAAK,WAAW,CAAC,MAAM,UAAU;AAC1C,uBAAK,WAAW,CAAC;AACjB,sBAAI;AAAA,gBACN;AAAA,cACF;AACA,kBAAI,MAAM,IAAI;AAEZ,oBAAI,eAAe,KAAK,WAAW,KAAK,GAAG,KAAK,mBAAmB,OAAO;AACxE,wBAAM,IAAI,MAAM,uDAAuD;AAAA,gBACzE;AACA,qBAAK,WAAW,KAAK,IAAI;AAAA,cAC3B;AAAA,YACF;AACA,gBAAI,YAAY;AAGd,kBAAI,aAAa,CAAC,YAAY,IAAI;AAClC,kBAAI,mBAAmB,OAAO;AAC5B,6BAAa,CAAC,UAAU;AAAA,cAC1B;AACA,kBAAI,mBAAmB,KAAK,WAAW,CAAC,GAAG,UAAU,MAAM,GAAG;AAC5D,oBAAI,MAAM,KAAK,WAAW,CAAC,CAAC,GAAG;AAC7B,uBAAK,aAAa;AAAA,gBACpB;AAAA,cACF,OAAO;AACL,qBAAK,aAAa;AAAA,cACpB;AAAA,YACF;AACA;AAAA,UACF;AAAA,UACA;AACE,kBAAM,IAAI,MAAM,+BAA+B,OAAO,EAAE;AAAA,QAC5D;AACA,aAAK,MAAM,KAAK,OAAO;AACvB,YAAI,KAAK,MAAM,QAAQ;AACrB,eAAK,OAAO,IAAI,KAAK,MAAM,KAAK,GAAG,CAAC;AAAA,QACtC;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC7SjB,IAAAC,iBAAA;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAACC,UAAS,SAAS,cAAc,UAAU;AACvD,UAAIA,oBAAmB,QAAQ;AAC7B,eAAOA;AAAA,MACT;AACA,UAAI;AACF,eAAO,IAAI,OAAOA,UAAS,OAAO;AAAA,MACpC,SAAS,IAAI;AACX,YAAI,CAAC,aAAa;AAChB,iBAAO;AAAA,QACT;AACA,cAAM;AAAA,MACR;AAAA,IACF;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACfjB;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,QAAQ,CAACC,UAAS,YAAY;AAClC,YAAM,IAAI,MAAMA,UAAS,OAAO;AAChC,aAAO,IAAI,EAAE,UAAU;AAAA,IACzB;AACA,WAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,QAAQ,CAACC,UAAS,YAAY;AAClC,YAAM,IAAI,MAAMA,SAAQ,KAAK,EAAE,QAAQ,UAAU,EAAE,GAAG,OAAO;AAC7D,aAAO,IAAI,EAAE,UAAU;AAAA,IACzB;AACA,WAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,QAAM,SAAS;AAEf,QAAM,MAAM,CAACC,UAAS,SAAS,SAAS,YAAY,mBAAmB;AACrE,UAAI,OAAQ,YAAa,UAAU;AACjC,yBAAiB;AACjB,qBAAa;AACb,kBAAU;AAAA,MACZ;AAEA,UAAI;AACF,eAAO,IAAI;AAAA,UACTA,oBAAmB,SAASA,SAAQ,UAAUA;AAAA,UAC9C;AAAA,QACF,EAAE,IAAI,SAAS,YAAY,cAAc,EAAE;AAAA,MAC7C,SAAS,IAAI;AACX,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,UAAU;AAAA;AAAA;;;AClBjB;AAAA;AAAA,QAAM,QAAQ;AAEd,QAAM,OAAO,CAAC,UAAU,aAAa;AACnC,YAAM,KAAK,MAAM,UAAU,MAAM,IAAI;AACrC,YAAM,KAAK,MAAM,UAAU,MAAM,IAAI;AACrC,YAAM,aAAa,GAAG,QAAQ,EAAE;AAEhC,UAAI,eAAe,GAAG;AACpB,eAAO;AAAA,MACT;AAEA,YAAM,WAAW,aAAa;AAC9B,YAAM,cAAc,WAAW,KAAK;AACpC,YAAM,aAAa,WAAW,KAAK;AACnC,YAAM,aAAa,CAAC,CAAC,YAAY,WAAW;AAC5C,YAAM,YAAY,CAAC,CAAC,WAAW,WAAW;AAE1C,UAAI,aAAa,CAAC,YAAY;AAQ5B,YAAI,CAAC,WAAW,SAAS,CAAC,WAAW,OAAO;AAC1C,iBAAO;AAAA,QACT;AAIA,YAAI,YAAY,OAAO;AAErB,iBAAO;AAAA,QACT;AAEA,YAAI,YAAY,OAAO;AAErB,iBAAO;AAAA,QACT;AAGA,eAAO;AAAA,MACT;AAGA,YAAMC,UAAS,aAAa,QAAQ;AAEpC,UAAI,GAAG,UAAU,GAAG,OAAO;AACzB,eAAOA,UAAS;AAAA,MAClB;AAEA,UAAI,GAAG,UAAU,GAAG,OAAO;AACzB,eAAOA,UAAS;AAAA,MAClB;AAEA,UAAI,GAAG,UAAU,GAAG,OAAO;AACzB,eAAOA,UAAS;AAAA,MAClB;AAGA,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AAAA;AAAA;;;AChEjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAAC,GAAG,UAAU,IAAI,OAAO,GAAG,KAAK,EAAE;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAAC,GAAG,UAAU,IAAI,OAAO,GAAG,KAAK,EAAE;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ,CAAC,GAAG,UAAU,IAAI,OAAO,GAAG,KAAK,EAAE;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa,CAACC,UAAS,YAAY;AACvC,YAAM,SAAS,MAAMA,UAAS,OAAO;AACrC,aAAQ,UAAU,OAAO,WAAW,SAAU,OAAO,aAAa;AAAA,IACpE;AACA,WAAO,UAAU;AAAA;AAAA;;;ACLjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,UAAU,CAAC,GAAG,GAAG,UACrB,IAAI,OAAO,GAAG,KAAK,EAAE,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC;AAEnD,WAAO,UAAU;AAAA;AAAA;;;ACJjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,WAAW,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,eAAe,CAAC,GAAG,MAAM,QAAQ,GAAG,GAAG,IAAI;AACjD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,eAAe,CAAC,GAAG,GAAG,UAAU;AACpC,YAAM,WAAW,IAAI,OAAO,GAAG,KAAK;AACpC,YAAM,WAAW,IAAI,OAAO,GAAG,KAAK;AACpC,aAAO,SAAS,QAAQ,QAAQ,KAAK,SAAS,aAAa,QAAQ;AAAA,IACrE;AACA,WAAO,UAAU;AAAA;AAAA;;;ACNjB;AAAA;AAAA,QAAM,eAAe;AACrB,QAAM,OAAO,CAAC,MAAM,UAAU,KAAK,KAAK,CAAC,GAAG,MAAM,aAAa,GAAG,GAAG,KAAK,CAAC;AAC3E,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,eAAe;AACrB,QAAM,QAAQ,CAAC,MAAM,UAAU,KAAK,KAAK,CAAC,GAAG,MAAM,aAAa,GAAG,GAAG,KAAK,CAAC;AAC5E,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,KAAK,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,IAAI;AACnD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,KAAK,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,IAAI;AACnD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,KAAK,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,MAAM;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,MAAM;AACtD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,KAAK;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,UAAU;AAChB,QAAM,MAAM,CAAC,GAAG,GAAG,UAAU,QAAQ,GAAG,GAAG,KAAK,KAAK;AACrD,WAAO,UAAU;AAAA;AAAA;;;ACFjB;AAAA;AAAA,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,KAAK;AACX,QAAM,MAAM;AAEZ,QAAM,MAAM,CAAC,GAAG,IAAI,GAAG,UAAU;AAC/B,cAAQ,IAAI;AAAA,QACV,KAAK;AACH,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,iBAAO,MAAM;AAAA,QAEf,KAAK;AACH,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,cAAI,OAAO,MAAM,UAAU;AACzB,gBAAI,EAAE;AAAA,UACR;AACA,iBAAO,MAAM;AAAA,QAEf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB;AACE,gBAAM,IAAI,UAAU,qBAAqB,EAAE,EAAE;AAAA,MACjD;AAAA,IACF;AACA,WAAO,UAAU;AAAA;AAAA;;;ACnDjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,QAAM,EAAE,QAAQ,IAAI,EAAE,IAAI;AAE1B,QAAM,SAAS,CAACC,UAAS,YAAY;AACnC,UAAIA,oBAAmB,QAAQ;AAC7B,eAAOA;AAAA,MACT;AAEA,UAAI,OAAOA,aAAY,UAAU;AAC/B,QAAAA,WAAU,OAAOA,QAAO;AAAA,MAC1B;AAEA,UAAI,OAAOA,aAAY,UAAU;AAC/B,eAAO;AAAA,MACT;AAEA,gBAAU,WAAW,CAAC;AAEtB,UAAIC,SAAQ;AACZ,UAAI,CAAC,QAAQ,KAAK;AAChB,QAAAA,SAAQD,SAAQ,MAAM,QAAQ,oBAAoB,GAAG,EAAE,UAAU,IAAI,GAAG,EAAE,MAAM,CAAC;AAAA,MACnF,OAAO;AAUL,cAAM,iBAAiB,QAAQ,oBAAoB,GAAG,EAAE,aAAa,IAAI,GAAG,EAAE,SAAS;AACvF,YAAI;AACJ,gBAAQ,OAAO,eAAe,KAAKA,QAAO,OACrC,CAACC,UAASA,OAAM,QAAQA,OAAM,CAAC,EAAE,WAAWD,SAAQ,SACvD;AACA,cAAI,CAACC,UACC,KAAK,QAAQ,KAAK,CAAC,EAAE,WAAWA,OAAM,QAAQA,OAAM,CAAC,EAAE,QAAQ;AACnE,YAAAA,SAAQ;AAAA,UACV;AACA,yBAAe,YAAY,KAAK,QAAQ,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE;AAAA,QACnE;AAEA,uBAAe,YAAY;AAAA,MAC7B;AAEA,UAAIA,WAAU,MAAM;AAClB,eAAO;AAAA,MACT;AAEA,YAAM,QAAQA,OAAM,CAAC;AACrB,YAAM,QAAQA,OAAM,CAAC,KAAK;AAC1B,YAAM,QAAQA,OAAM,CAAC,KAAK;AAC1B,YAAM,aAAa,QAAQ,qBAAqBA,OAAM,CAAC,IAAI,IAAIA,OAAM,CAAC,CAAC,KAAK;AAC5E,YAAM,QAAQ,QAAQ,qBAAqBA,OAAM,CAAC,IAAI,IAAIA,OAAM,CAAC,CAAC,KAAK;AAEvE,aAAO,MAAM,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG,UAAU,GAAG,KAAK,IAAI,OAAO;AAAA,IACzE;AACA,WAAO,UAAU;AAAA;AAAA;;;AC3DjB;AAAA;AAAA;AAGA,QAAM,UAAU;AAEhB,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,oBAAoB,OAAO,kBAAkB;AACnD,QAAM,cAAc,OAAO,YAAY;AACvC,QAAM,UAAU,OAAO,QAAQ;AAC/B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,oBAAoB,OAAO,gBAAgB;AACjD,QAAM,WAAW,OAAO,SAAS;AACjC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,oBAAoB,OAAO,gBAAgB;AAEjD,QAAM,cAAc,MAAM;AAU1B,QAAM,WAAN,MAAe;AAAA,MACb,YAAa,SAAS;AACpB,YAAI,OAAO,YAAY;AACrB,oBAAU,EAAE,KAAK,QAAQ;AAE3B,YAAI,CAAC;AACH,oBAAU,CAAC;AAEb,YAAI,QAAQ,QAAQ,OAAO,QAAQ,QAAQ,YAAY,QAAQ,MAAM;AACnE,gBAAM,IAAI,UAAU,mCAAmC;AAEzD,cAAM,MAAM,KAAK,GAAG,IAAI,QAAQ,OAAO;AAEvC,cAAM,KAAK,QAAQ,UAAU;AAC7B,aAAK,iBAAiB,IAAK,OAAO,OAAO,aAAc,cAAc;AACrE,aAAK,WAAW,IAAI,QAAQ,SAAS;AACrC,YAAI,QAAQ,UAAU,OAAO,QAAQ,WAAW;AAC9C,gBAAM,IAAI,UAAU,yBAAyB;AAC/C,aAAK,OAAO,IAAI,QAAQ,UAAU;AAClC,aAAK,OAAO,IAAI,QAAQ;AACxB,aAAK,iBAAiB,IAAI,QAAQ,kBAAkB;AACpD,aAAK,iBAAiB,IAAI,QAAQ,kBAAkB;AACpD,aAAK,MAAM;AAAA,MACb;AAAA;AAAA,MAGA,IAAI,IAAK,IAAI;AACX,YAAI,OAAO,OAAO,YAAY,KAAK;AACjC,gBAAM,IAAI,UAAU,mCAAmC;AAEzD,aAAK,GAAG,IAAI,MAAM;AAClB,aAAK,IAAI;AAAA,MACX;AAAA,MACA,IAAI,MAAO;AACT,eAAO,KAAK,GAAG;AAAA,MACjB;AAAA,MAEA,IAAI,WAAY,YAAY;AAC1B,aAAK,WAAW,IAAI,CAAC,CAAC;AAAA,MACxB;AAAA,MACA,IAAI,aAAc;AAChB,eAAO,KAAK,WAAW;AAAA,MACzB;AAAA,MAEA,IAAI,OAAQ,IAAI;AACd,YAAI,OAAO,OAAO;AAChB,gBAAM,IAAI,UAAU,sCAAsC;AAE5D,aAAK,OAAO,IAAI;AAChB,aAAK,IAAI;AAAA,MACX;AAAA,MACA,IAAI,SAAU;AACZ,eAAO,KAAK,OAAO;AAAA,MACrB;AAAA;AAAA,MAGA,IAAI,iBAAkB,IAAI;AACxB,YAAI,OAAO,OAAO;AAChB,eAAK;AAEP,YAAI,OAAO,KAAK,iBAAiB,GAAG;AAClC,eAAK,iBAAiB,IAAI;AAC1B,eAAK,MAAM,IAAI;AACf,eAAK,QAAQ,EAAE,QAAQ,SAAO;AAC5B,gBAAI,SAAS,KAAK,iBAAiB,EAAE,IAAI,OAAO,IAAI,GAAG;AACvD,iBAAK,MAAM,KAAK,IAAI;AAAA,UACtB,CAAC;AAAA,QACH;AACA,aAAK,IAAI;AAAA,MACX;AAAA,MACA,IAAI,mBAAoB;AAAE,eAAO,KAAK,iBAAiB;AAAA,MAAE;AAAA,MAEzD,IAAI,SAAU;AAAE,eAAO,KAAK,MAAM;AAAA,MAAE;AAAA,MACpC,IAAI,YAAa;AAAE,eAAO,KAAK,QAAQ,EAAE;AAAA,MAAO;AAAA,MAEhD,SAAU,IAAI,OAAO;AACnB,gBAAQ,SAAS;AACjB,iBAAS,SAAS,KAAK,QAAQ,EAAE,MAAM,WAAW,QAAO;AACvD,gBAAM,OAAO,OAAO;AACpB,sBAAY,MAAM,IAAI,QAAQ,KAAK;AACnC,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MAEA,QAAS,IAAI,OAAO;AAClB,gBAAQ,SAAS;AACjB,iBAAS,SAAS,KAAK,QAAQ,EAAE,MAAM,WAAW,QAAO;AACvD,gBAAM,OAAO,OAAO;AACpB,sBAAY,MAAM,IAAI,QAAQ,KAAK;AACnC,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,MAEA,OAAQ;AACN,eAAO,KAAK,QAAQ,EAAE,QAAQ,EAAE,IAAI,OAAK,EAAE,GAAG;AAAA,MAChD;AAAA,MAEA,SAAU;AACR,eAAO,KAAK,QAAQ,EAAE,QAAQ,EAAE,IAAI,OAAK,EAAE,KAAK;AAAA,MAClD;AAAA,MAEA,QAAS;AACP,YAAI,KAAK,OAAO,KACZ,KAAK,QAAQ,KACb,KAAK,QAAQ,EAAE,QAAQ;AACzB,eAAK,QAAQ,EAAE,QAAQ,SAAO,KAAK,OAAO,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC;AAAA,QACjE;AAEA,aAAK,KAAK,IAAI,oBAAI,IAAI;AACtB,aAAK,QAAQ,IAAI,IAAI,QAAQ;AAC7B,aAAK,MAAM,IAAI;AAAA,MACjB;AAAA,MAEA,OAAQ;AACN,eAAO,KAAK,QAAQ,EAAE,IAAI,SACxB,QAAQ,MAAM,GAAG,IAAI,QAAQ;AAAA,UAC3B,GAAG,IAAI;AAAA,UACP,GAAG,IAAI;AAAA,UACP,GAAG,IAAI,OAAO,IAAI,UAAU;AAAA,QAC9B,CAAC,EAAE,QAAQ,EAAE,OAAO,OAAK,CAAC;AAAA,MAC9B;AAAA,MAEA,UAAW;AACT,eAAO,KAAK,QAAQ;AAAA,MACtB;AAAA,MAEA,IAAK,KAAK,OAAO,QAAQ;AACvB,iBAAS,UAAU,KAAK,OAAO;AAE/B,YAAI,UAAU,OAAO,WAAW;AAC9B,gBAAM,IAAI,UAAU,yBAAyB;AAE/C,cAAM,MAAM,SAAS,KAAK,IAAI,IAAI;AAClC,cAAM,MAAM,KAAK,iBAAiB,EAAE,OAAO,GAAG;AAE9C,YAAI,KAAK,KAAK,EAAE,IAAI,GAAG,GAAG;AACxB,cAAI,MAAM,KAAK,GAAG,GAAG;AACnB,gBAAI,MAAM,KAAK,KAAK,EAAE,IAAI,GAAG,CAAC;AAC9B,mBAAO;AAAA,UACT;AAEA,gBAAM,OAAO,KAAK,KAAK,EAAE,IAAI,GAAG;AAChC,gBAAM,OAAO,KAAK;AAIlB,cAAI,KAAK,OAAO,GAAG;AACjB,gBAAI,CAAC,KAAK,iBAAiB;AACzB,mBAAK,OAAO,EAAE,KAAK,KAAK,KAAK;AAAA,UACjC;AAEA,eAAK,MAAM;AACX,eAAK,SAAS;AACd,eAAK,QAAQ;AACb,eAAK,MAAM,KAAK,MAAM,KAAK;AAC3B,eAAK,SAAS;AACd,eAAK,IAAI,GAAG;AACZ,eAAK,IAAI;AACT,iBAAO;AAAA,QACT;AAEA,cAAM,MAAM,IAAI,MAAM,KAAK,OAAO,KAAK,KAAK,MAAM;AAGlD,YAAI,IAAI,SAAS,KAAK,GAAG,GAAG;AAC1B,cAAI,KAAK,OAAO;AACd,iBAAK,OAAO,EAAE,KAAK,KAAK;AAE1B,iBAAO;AAAA,QACT;AAEA,aAAK,MAAM,KAAK,IAAI;AACpB,aAAK,QAAQ,EAAE,QAAQ,GAAG;AAC1B,aAAK,KAAK,EAAE,IAAI,KAAK,KAAK,QAAQ,EAAE,IAAI;AACxC,aAAK,IAAI;AACT,eAAO;AAAA,MACT;AAAA,MAEA,IAAK,KAAK;AACR,YAAI,CAAC,KAAK,KAAK,EAAE,IAAI,GAAG;AAAG,iBAAO;AAClC,cAAM,MAAM,KAAK,KAAK,EAAE,IAAI,GAAG,EAAE;AACjC,eAAO,CAAC,QAAQ,MAAM,GAAG;AAAA,MAC3B;AAAA,MAEA,IAAK,KAAK;AACR,eAAO,IAAI,MAAM,KAAK,IAAI;AAAA,MAC5B;AAAA,MAEA,KAAM,KAAK;AACT,eAAO,IAAI,MAAM,KAAK,KAAK;AAAA,MAC7B;AAAA,MAEA,MAAO;AACL,cAAM,OAAO,KAAK,QAAQ,EAAE;AAC5B,YAAI,CAAC;AACH,iBAAO;AAET,YAAI,MAAM,IAAI;AACd,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,IAAK,KAAK;AACR,YAAI,MAAM,KAAK,KAAK,EAAE,IAAI,GAAG,CAAC;AAAA,MAChC;AAAA,MAEA,KAAM,KAAK;AAET,aAAK,MAAM;AAEX,cAAM,MAAM,KAAK,IAAI;AAErB,iBAAS,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK;AACxC,gBAAM,MAAM,IAAI,CAAC;AACjB,gBAAM,YAAY,IAAI,KAAK;AAC3B,cAAI,cAAc;AAEhB,iBAAK,IAAI,IAAI,GAAG,IAAI,CAAC;AAAA,eAClB;AACH,kBAAM,SAAS,YAAY;AAE3B,gBAAI,SAAS,GAAG;AACd,mBAAK,IAAI,IAAI,GAAG,IAAI,GAAG,MAAM;AAAA,YAC/B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,QAAS;AACP,aAAK,KAAK,EAAE,QAAQ,CAAC,OAAO,QAAQ,IAAI,MAAM,KAAK,KAAK,CAAC;AAAA,MAC3D;AAAA,IACF;AAEA,QAAM,MAAM,CAAC,MAAM,KAAK,UAAU;AAChC,YAAM,OAAO,KAAK,KAAK,EAAE,IAAI,GAAG;AAChC,UAAI,MAAM;AACR,cAAM,MAAM,KAAK;AACjB,YAAI,QAAQ,MAAM,GAAG,GAAG;AACtB,cAAI,MAAM,IAAI;AACd,cAAI,CAAC,KAAK,WAAW;AACnB,mBAAO;AAAA,QACX,OAAO;AACL,cAAI,OAAO;AACT,gBAAI,KAAK,iBAAiB;AACxB,mBAAK,MAAM,MAAM,KAAK,IAAI;AAC5B,iBAAK,QAAQ,EAAE,YAAY,IAAI;AAAA,UACjC;AAAA,QACF;AACA,eAAO,IAAI;AAAA,MACb;AAAA,IACF;AAEA,QAAM,UAAU,CAAC,MAAM,QAAQ;AAC7B,UAAI,CAAC,OAAQ,CAAC,IAAI,UAAU,CAAC,KAAK,OAAO;AACvC,eAAO;AAET,YAAM,OAAO,KAAK,IAAI,IAAI,IAAI;AAC9B,aAAO,IAAI,SAAS,OAAO,IAAI,SAC3B,KAAK,OAAO,KAAM,OAAO,KAAK,OAAO;AAAA,IAC3C;AAEA,QAAM,OAAO,UAAQ;AACnB,UAAI,KAAK,MAAM,IAAI,KAAK,GAAG,GAAG;AAC5B,iBAAS,SAAS,KAAK,QAAQ,EAAE,MAC/B,KAAK,MAAM,IAAI,KAAK,GAAG,KAAK,WAAW,QAAO;AAI9C,gBAAM,OAAO,OAAO;AACpB,cAAI,MAAM,MAAM;AAChB,mBAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAEA,QAAM,MAAM,CAAC,MAAM,SAAS;AAC1B,UAAI,MAAM;AACR,cAAM,MAAM,KAAK;AACjB,YAAI,KAAK,OAAO;AACd,eAAK,OAAO,EAAE,IAAI,KAAK,IAAI,KAAK;AAElC,aAAK,MAAM,KAAK,IAAI;AACpB,aAAK,KAAK,EAAE,OAAO,IAAI,GAAG;AAC1B,aAAK,QAAQ,EAAE,WAAW,IAAI;AAAA,MAChC;AAAA,IACF;AAEA,QAAM,QAAN,MAAY;AAAA,MACV,YAAa,KAAK,OAAO,QAAQ,KAAK,QAAQ;AAC5C,aAAK,MAAM;AACX,aAAK,QAAQ;AACb,aAAK,SAAS;AACd,aAAK,MAAM;AACX,aAAK,SAAS,UAAU;AAAA,MAC1B;AAAA,IACF;AAEA,QAAM,cAAc,CAAC,MAAM,IAAI,MAAM,UAAU;AAC7C,UAAI,MAAM,KAAK;AACf,UAAI,QAAQ,MAAM,GAAG,GAAG;AACtB,YAAI,MAAM,IAAI;AACd,YAAI,CAAC,KAAK,WAAW;AACnB,gBAAM;AAAA,MACV;AACA,UAAI;AACF,WAAG,KAAK,OAAO,IAAI,OAAO,IAAI,KAAK,IAAI;AAAA,IAC3C;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC7UjB;AAAA;AACA,QAAM,QAAN,MAAM,OAAM;AAAA,MACV,YAAa,OAAO,SAAS;AAC3B,kBAAU,aAAa,OAAO;AAE9B,YAAI,iBAAiB,QAAO;AAC1B,cACE,MAAM,UAAU,CAAC,CAAC,QAAQ,SAC1B,MAAM,sBAAsB,CAAC,CAAC,QAAQ,mBACtC;AACA,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO,IAAI,OAAM,MAAM,KAAK,OAAO;AAAA,UACrC;AAAA,QACF;AAEA,YAAI,iBAAiB,YAAY;AAE/B,eAAK,MAAM,MAAM;AACjB,eAAK,MAAM,CAAC,CAAC,KAAK,CAAC;AACnB,eAAK,OAAO;AACZ,iBAAO;AAAA,QACT;AAEA,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,QAAQ;AACvB,aAAK,oBAAoB,CAAC,CAAC,QAAQ;AAKnC,aAAK,MAAM,MACR,KAAK,EACL,MAAM,KAAK,EACX,KAAK,GAAG;AAGX,aAAK,MAAM,KAAK,IACb,MAAM,IAAI,EAEV,IAAI,OAAK,KAAK,WAAW,EAAE,KAAK,CAAC,CAAC,EAIlC,OAAO,OAAK,EAAE,MAAM;AAEvB,YAAI,CAAC,KAAK,IAAI,QAAQ;AACpB,gBAAM,IAAI,UAAU,yBAAyB,KAAK,GAAG,EAAE;AAAA,QACzD;AAGA,YAAI,KAAK,IAAI,SAAS,GAAG;AAEvB,gBAAM,QAAQ,KAAK,IAAI,CAAC;AACxB,eAAK,MAAM,KAAK,IAAI,OAAO,OAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAChD,cAAI,KAAK,IAAI,WAAW,GAAG;AACzB,iBAAK,MAAM,CAAC,KAAK;AAAA,UACnB,WAAW,KAAK,IAAI,SAAS,GAAG;AAE9B,uBAAW,KAAK,KAAK,KAAK;AACxB,kBAAI,EAAE,WAAW,KAAK,MAAM,EAAE,CAAC,CAAC,GAAG;AACjC,qBAAK,MAAM,CAAC,CAAC;AACb;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,aAAK,OAAO;AAAA,MACd;AAAA,MAEA,SAAU;AACR,aAAK,QAAQ,KAAK,IACf,IAAI,CAAC,UAAU,MAAM,KAAK,GAAG,EAAE,KAAK,CAAC,EACrC,KAAK,IAAI,EACT,KAAK;AACR,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAY;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,WAAY,OAAO;AAGjB,cAAM,YACH,KAAK,QAAQ,qBAAqB,4BAClC,KAAK,QAAQ,SAAS;AACzB,cAAM,UAAU,WAAW,MAAM;AACjC,cAAM,SAASC,OAAM,IAAI,OAAO;AAChC,YAAI,QAAQ;AACV,iBAAO;AAAA,QACT;AAEA,cAAM,QAAQ,KAAK,QAAQ;AAE3B,cAAM,KAAK,QAAQ,GAAG,EAAE,gBAAgB,IAAI,GAAG,EAAE,WAAW;AAC5D,gBAAQ,MAAM,QAAQ,IAAI,cAAc,KAAK,QAAQ,iBAAiB,CAAC;AACvE,cAAM,kBAAkB,KAAK;AAG7B,gBAAQ,MAAM,QAAQ,GAAG,EAAE,cAAc,GAAG,qBAAqB;AACjE,cAAM,mBAAmB,KAAK;AAG9B,gBAAQ,MAAM,QAAQ,GAAG,EAAE,SAAS,GAAG,gBAAgB;AACvD,cAAM,cAAc,KAAK;AAGzB,gBAAQ,MAAM,QAAQ,GAAG,EAAE,SAAS,GAAG,gBAAgB;AACvD,cAAM,cAAc,KAAK;AAKzB,YAAI,YAAY,MACb,MAAM,GAAG,EACT,IAAI,UAAQ,gBAAgB,MAAM,KAAK,OAAO,CAAC,EAC/C,KAAK,GAAG,EACR,MAAM,KAAK,EAEX,IAAI,UAAQ,YAAY,MAAM,KAAK,OAAO,CAAC;AAE9C,YAAI,OAAO;AAET,sBAAY,UAAU,OAAO,UAAQ;AACnC,kBAAM,wBAAwB,MAAM,KAAK,OAAO;AAChD,mBAAO,CAAC,CAAC,KAAK,MAAM,GAAG,EAAE,eAAe,CAAC;AAAA,UAC3C,CAAC;AAAA,QACH;AACA,cAAM,cAAc,SAAS;AAK7B,cAAM,WAAW,oBAAI,IAAI;AACzB,cAAM,cAAc,UAAU,IAAI,UAAQ,IAAI,WAAW,MAAM,KAAK,OAAO,CAAC;AAC5E,mBAAW,QAAQ,aAAa;AAC9B,cAAI,UAAU,IAAI,GAAG;AACnB,mBAAO,CAAC,IAAI;AAAA,UACd;AACA,mBAAS,IAAI,KAAK,OAAO,IAAI;AAAA,QAC/B;AACA,YAAI,SAAS,OAAO,KAAK,SAAS,IAAI,EAAE,GAAG;AACzC,mBAAS,OAAO,EAAE;AAAA,QACpB;AAEA,cAAM,SAAS,CAAC,GAAG,SAAS,OAAO,CAAC;AACpC,QAAAA,OAAM,IAAI,SAAS,MAAM;AACzB,eAAO;AAAA,MACT;AAAA,MAEA,WAAY,OAAO,SAAS;AAC1B,YAAI,EAAE,iBAAiB,SAAQ;AAC7B,gBAAM,IAAI,UAAU,qBAAqB;AAAA,QAC3C;AAEA,eAAO,KAAK,IAAI,KAAK,CAAC,oBAAoB;AACxC,iBACE,cAAc,iBAAiB,OAAO,KACtC,MAAM,IAAI,KAAK,CAAC,qBAAqB;AACnC,mBACE,cAAc,kBAAkB,OAAO,KACvC,gBAAgB,MAAM,CAAC,mBAAmB;AACxC,qBAAO,iBAAiB,MAAM,CAAC,oBAAoB;AACjD,uBAAO,eAAe,WAAW,iBAAiB,OAAO;AAAA,cAC3D,CAAC;AAAA,YACH,CAAC;AAAA,UAEL,CAAC;AAAA,QAEL,CAAC;AAAA,MACH;AAAA;AAAA,MAGA,KAAMC,UAAS;AACb,YAAI,CAACA,UAAS;AACZ,iBAAO;AAAA,QACT;AAEA,YAAI,OAAOA,aAAY,UAAU;AAC/B,cAAI;AACF,YAAAA,WAAU,IAAI,OAAOA,UAAS,KAAK,OAAO;AAAA,UAC5C,SAAS,IAAI;AACX,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,iBAAS,IAAI,GAAG,IAAI,KAAK,IAAI,QAAQ,KAAK;AACxC,cAAI,QAAQ,KAAK,IAAI,CAAC,GAAGA,UAAS,KAAK,OAAO,GAAG;AAC/C,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAEjB,QAAM,MAAM;AACZ,QAAMD,SAAQ,IAAI,IAAI,EAAE,KAAK,IAAK,CAAC;AAEnC,QAAM,eAAe;AACrB,QAAM,aAAa;AACnB,QAAM,QAAQ;AACd,QAAM,SAAS;AACf,QAAM;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AACJ,QAAM,EAAE,yBAAyB,WAAW,IAAI;AAEhD,QAAM,YAAY,OAAK,EAAE,UAAU;AACnC,QAAM,QAAQ,OAAK,EAAE,UAAU;AAI/B,QAAM,gBAAgB,CAAC,aAAa,YAAY;AAC9C,UAAI,SAAS;AACb,YAAM,uBAAuB,YAAY,MAAM;AAC/C,UAAI,iBAAiB,qBAAqB,IAAI;AAE9C,aAAO,UAAU,qBAAqB,QAAQ;AAC5C,iBAAS,qBAAqB,MAAM,CAAC,oBAAoB;AACvD,iBAAO,eAAe,WAAW,iBAAiB,OAAO;AAAA,QAC3D,CAAC;AAED,yBAAiB,qBAAqB,IAAI;AAAA,MAC5C;AAEA,aAAO;AAAA,IACT;AAKA,QAAM,kBAAkB,CAAC,MAAM,YAAY;AACzC,YAAM,QAAQ,MAAM,OAAO;AAC3B,aAAO,cAAc,MAAM,OAAO;AAClC,YAAM,SAAS,IAAI;AACnB,aAAO,cAAc,MAAM,OAAO;AAClC,YAAM,UAAU,IAAI;AACpB,aAAO,eAAe,MAAM,OAAO;AACnC,YAAM,UAAU,IAAI;AACpB,aAAO,aAAa,MAAM,OAAO;AACjC,YAAM,SAAS,IAAI;AACnB,aAAO;AAAA,IACT;AAEA,QAAM,MAAM,QAAM,CAAC,MAAM,GAAG,YAAY,MAAM,OAAO,OAAO;AAS5D,QAAM,gBAAgB,CAAC,MAAM,YAAY;AACvC,aAAO,KACJ,KAAK,EACL,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,EACnC,KAAK,GAAG;AAAA,IACb;AAEA,QAAM,eAAe,CAAC,MAAM,YAAY;AACtC,YAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,UAAU,IAAI,GAAG,EAAE,KAAK;AACvD,aAAO,KAAK,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,OAAO;AACzC,cAAM,SAAS,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE;AACnC,YAAI;AAEJ,YAAI,IAAI,CAAC,GAAG;AACV,gBAAM;AAAA,QACR,WAAW,IAAI,CAAC,GAAG;AACjB,gBAAM,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;AAAA,QAC7B,WAAW,IAAI,CAAC,GAAG;AAEjB,gBAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,QACrC,WAAW,IAAI;AACb,gBAAM,mBAAmB,EAAE;AAC3B,gBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,QAClB,OAAO;AAEL,gBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,QAClB;AAEA,cAAM,gBAAgB,GAAG;AACzB,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAUA,QAAM,gBAAgB,CAAC,MAAM,YAAY;AACvC,aAAO,KACJ,KAAK,EACL,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,EACnC,KAAK,GAAG;AAAA,IACb;AAEA,QAAM,eAAe,CAAC,MAAM,YAAY;AACtC,YAAM,SAAS,MAAM,OAAO;AAC5B,YAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,UAAU,IAAI,GAAG,EAAE,KAAK;AACvD,YAAM,IAAI,QAAQ,oBAAoB,OAAO;AAC7C,aAAO,KAAK,QAAQ,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,OAAO;AACzC,cAAM,SAAS,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE;AACnC,YAAI;AAEJ,YAAI,IAAI,CAAC,GAAG;AACV,gBAAM;AAAA,QACR,WAAW,IAAI,CAAC,GAAG;AACjB,gBAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;AAAA,QACjC,WAAW,IAAI,CAAC,GAAG;AACjB,cAAI,MAAM,KAAK;AACb,kBAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,UACzC,OAAO;AACL,kBAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAAA,UACpC;AAAA,QACF,WAAW,IAAI;AACb,gBAAM,mBAAmB,EAAE;AAC3B,cAAI,MAAM,KAAK;AACb,gBAAI,MAAM,KAAK;AACb,oBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,YACvB,OAAO;AACL,oBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAC1B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,YAClB;AAAA,UACF,OAAO;AACL,kBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAC1B,KAAK,CAAC,IAAI,CAAC;AAAA,UACb;AAAA,QACF,OAAO;AACL,gBAAM,OAAO;AACb,cAAI,MAAM,KAAK;AACb,gBAAI,MAAM,KAAK;AACb,oBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CACrB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,YAC3B,OAAO;AACL,oBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CACrB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,YACtB;AAAA,UACF,OAAO;AACL,kBAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CACrB,KAAK,CAAC,IAAI,CAAC;AAAA,UACb;AAAA,QACF;AAEA,cAAM,gBAAgB,GAAG;AACzB,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAEA,QAAM,iBAAiB,CAAC,MAAM,YAAY;AACxC,YAAM,kBAAkB,MAAM,OAAO;AACrC,aAAO,KACJ,MAAM,KAAK,EACX,IAAI,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,EACpC,KAAK,GAAG;AAAA,IACb;AAEA,QAAM,gBAAgB,CAAC,MAAM,YAAY;AACvC,aAAO,KAAK,KAAK;AACjB,YAAM,IAAI,QAAQ,QAAQ,GAAG,EAAE,WAAW,IAAI,GAAG,EAAE,MAAM;AACzD,aAAO,KAAK,QAAQ,GAAG,CAAC,KAAK,MAAM,GAAG,GAAG,GAAG,OAAO;AACjD,cAAM,UAAU,MAAM,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAC5C,cAAM,KAAK,IAAI,CAAC;AAChB,cAAM,KAAK,MAAM,IAAI,CAAC;AACtB,cAAM,KAAK,MAAM,IAAI,CAAC;AACtB,cAAM,OAAO;AAEb,YAAI,SAAS,OAAO,MAAM;AACxB,iBAAO;AAAA,QACT;AAIA,aAAK,QAAQ,oBAAoB,OAAO;AAExC,YAAI,IAAI;AACN,cAAI,SAAS,OAAO,SAAS,KAAK;AAEhC,kBAAM;AAAA,UACR,OAAO;AAEL,kBAAM;AAAA,UACR;AAAA,QACF,WAAW,QAAQ,MAAM;AAGvB,cAAI,IAAI;AACN,gBAAI;AAAA,UACN;AACA,cAAI;AAEJ,cAAI,SAAS,KAAK;AAGhB,mBAAO;AACP,gBAAI,IAAI;AACN,kBAAI,CAAC,IAAI;AACT,kBAAI;AACJ,kBAAI;AAAA,YACN,OAAO;AACL,kBAAI,CAAC,IAAI;AACT,kBAAI;AAAA,YACN;AAAA,UACF,WAAW,SAAS,MAAM;AAGxB,mBAAO;AACP,gBAAI,IAAI;AACN,kBAAI,CAAC,IAAI;AAAA,YACX,OAAO;AACL,kBAAI,CAAC,IAAI;AAAA,YACX;AAAA,UACF;AAEA,cAAI,SAAS,KAAK;AAChB,iBAAK;AAAA,UACP;AAEA,gBAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AAAA,QAClC,WAAW,IAAI;AACb,gBAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC;AAAA,QAClC,WAAW,IAAI;AACb,gBAAM,KAAK,CAAC,IAAI,CAAC,KAAK,EACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAAA,QAClB;AAEA,cAAM,iBAAiB,GAAG;AAE1B,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAIA,QAAM,eAAe,CAAC,MAAM,YAAY;AACtC,YAAM,gBAAgB,MAAM,OAAO;AAEnC,aAAO,KACJ,KAAK,EACL,QAAQ,GAAG,EAAE,IAAI,GAAG,EAAE;AAAA,IAC3B;AAEA,QAAM,cAAc,CAAC,MAAM,YAAY;AACrC,YAAM,eAAe,MAAM,OAAO;AAClC,aAAO,KACJ,KAAK,EACL,QAAQ,GAAG,QAAQ,oBAAoB,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE;AAAA,IACnE;AAOA,QAAM,gBAAgB,WAAS,CAAC,IAC9B,MAAM,IAAI,IAAI,IAAI,KAAK,IACvB,IAAI,IAAI,IAAI,IAAI,KAAK,OAAO;AAC5B,UAAI,IAAI,EAAE,GAAG;AACX,eAAO;AAAA,MACT,WAAW,IAAI,EAAE,GAAG;AAClB,eAAO,KAAK,EAAE,OAAO,QAAQ,OAAO,EAAE;AAAA,MACxC,WAAW,IAAI,EAAE,GAAG;AAClB,eAAO,KAAK,EAAE,IAAI,EAAE,KAAK,QAAQ,OAAO,EAAE;AAAA,MAC5C,WAAW,KAAK;AACd,eAAO,KAAK,IAAI;AAAA,MAClB,OAAO;AACL,eAAO,KAAK,IAAI,GAAG,QAAQ,OAAO,EAAE;AAAA,MACtC;AAEA,UAAI,IAAI,EAAE,GAAG;AACX,aAAK;AAAA,MACP,WAAW,IAAI,EAAE,GAAG;AAClB,aAAK,IAAI,CAAC,KAAK,CAAC;AAAA,MAClB,WAAW,IAAI,EAAE,GAAG;AAClB,aAAK,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;AAAA,MACxB,WAAW,KAAK;AACd,aAAK,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG;AAAA,MACjC,WAAW,OAAO;AAChB,aAAK,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;AAAA,MAC9B,OAAO;AACL,aAAK,KAAK,EAAE;AAAA,MACd;AAEA,aAAO,GAAG,IAAI,IAAI,EAAE,GAAG,KAAK;AAAA,IAC9B;AAEA,QAAM,UAAU,CAAC,KAAKC,UAAS,YAAY;AACzC,eAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,YAAI,CAAC,IAAI,CAAC,EAAE,KAAKA,QAAO,GAAG;AACzB,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAIA,SAAQ,WAAW,UAAU,CAAC,QAAQ,mBAAmB;AAM3D,iBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,gBAAM,IAAI,CAAC,EAAE,MAAM;AACnB,cAAI,IAAI,CAAC,EAAE,WAAW,WAAW,KAAK;AACpC;AAAA,UACF;AAEA,cAAI,IAAI,CAAC,EAAE,OAAO,WAAW,SAAS,GAAG;AACvC,kBAAM,UAAU,IAAI,CAAC,EAAE;AACvB,gBAAI,QAAQ,UAAUA,SAAQ,SAC1B,QAAQ,UAAUA,SAAQ,SAC1B,QAAQ,UAAUA,SAAQ,OAAO;AACnC,qBAAO;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAGA,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA;AAAA;;;AC1hBA;AAAA;AAAA,QAAM,MAAM,OAAO,YAAY;AAE/B,QAAM,aAAN,MAAM,YAAW;AAAA,MACf,WAAW,MAAO;AAChB,eAAO;AAAA,MACT;AAAA,MAEA,YAAa,MAAM,SAAS;AAC1B,kBAAU,aAAa,OAAO;AAE9B,YAAI,gBAAgB,aAAY;AAC9B,cAAI,KAAK,UAAU,CAAC,CAAC,QAAQ,OAAO;AAClC,mBAAO;AAAA,UACT,OAAO;AACL,mBAAO,KAAK;AAAA,UACd;AAAA,QACF;AAEA,eAAO,KAAK,KAAK,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG;AACxC,cAAM,cAAc,MAAM,OAAO;AACjC,aAAK,UAAU;AACf,aAAK,QAAQ,CAAC,CAAC,QAAQ;AACvB,aAAK,MAAM,IAAI;AAEf,YAAI,KAAK,WAAW,KAAK;AACvB,eAAK,QAAQ;AAAA,QACf,OAAO;AACL,eAAK,QAAQ,KAAK,WAAW,KAAK,OAAO;AAAA,QAC3C;AAEA,cAAM,QAAQ,IAAI;AAAA,MACpB;AAAA,MAEA,MAAO,MAAM;AACX,cAAM,IAAI,KAAK,QAAQ,QAAQ,GAAG,EAAE,eAAe,IAAI,GAAG,EAAE,UAAU;AACtE,cAAM,IAAI,KAAK,MAAM,CAAC;AAEtB,YAAI,CAAC,GAAG;AACN,gBAAM,IAAI,UAAU,uBAAuB,IAAI,EAAE;AAAA,QACnD;AAEA,aAAK,WAAW,EAAE,CAAC,MAAM,SAAY,EAAE,CAAC,IAAI;AAC5C,YAAI,KAAK,aAAa,KAAK;AACzB,eAAK,WAAW;AAAA,QAClB;AAGA,YAAI,CAAC,EAAE,CAAC,GAAG;AACT,eAAK,SAAS;AAAA,QAChB,OAAO;AACL,eAAK,SAAS,IAAI,OAAO,EAAE,CAAC,GAAG,KAAK,QAAQ,KAAK;AAAA,QACnD;AAAA,MACF;AAAA,MAEA,WAAY;AACV,eAAO,KAAK;AAAA,MACd;AAAA,MAEA,KAAMC,UAAS;AACb,cAAM,mBAAmBA,UAAS,KAAK,QAAQ,KAAK;AAEpD,YAAI,KAAK,WAAW,OAAOA,aAAY,KAAK;AAC1C,iBAAO;AAAA,QACT;AAEA,YAAI,OAAOA,aAAY,UAAU;AAC/B,cAAI;AACF,YAAAA,WAAU,IAAI,OAAOA,UAAS,KAAK,OAAO;AAAA,UAC5C,SAAS,IAAI;AACX,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO,IAAIA,UAAS,KAAK,UAAU,KAAK,QAAQ,KAAK,OAAO;AAAA,MAC9D;AAAA,MAEA,WAAY,MAAM,SAAS;AACzB,YAAI,EAAE,gBAAgB,cAAa;AACjC,gBAAM,IAAI,UAAU,0BAA0B;AAAA,QAChD;AAEA,YAAI,KAAK,aAAa,IAAI;AACxB,cAAI,KAAK,UAAU,IAAI;AACrB,mBAAO;AAAA,UACT;AACA,iBAAO,IAAI,MAAM,KAAK,OAAO,OAAO,EAAE,KAAK,KAAK,KAAK;AAAA,QACvD,WAAW,KAAK,aAAa,IAAI;AAC/B,cAAI,KAAK,UAAU,IAAI;AACrB,mBAAO;AAAA,UACT;AACA,iBAAO,IAAI,MAAM,KAAK,OAAO,OAAO,EAAE,KAAK,KAAK,MAAM;AAAA,QACxD;AAEA,kBAAU,aAAa,OAAO;AAG9B,YAAI,QAAQ,sBACT,KAAK,UAAU,cAAc,KAAK,UAAU,aAAa;AAC1D,iBAAO;AAAA,QACT;AACA,YAAI,CAAC,QAAQ,sBACV,KAAK,MAAM,WAAW,QAAQ,KAAK,KAAK,MAAM,WAAW,QAAQ,IAAI;AACtE,iBAAO;AAAA,QACT;AAGA,YAAI,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAClE,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAClE,iBAAO;AAAA,QACT;AAEA,YACG,KAAK,OAAO,YAAY,KAAK,OAAO,WACrC,KAAK,SAAS,SAAS,GAAG,KAAK,KAAK,SAAS,SAAS,GAAG,GAAG;AAC5D,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQ,OAAO,KAC5C,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAChE,iBAAO;AAAA,QACT;AAEA,YAAI,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQ,OAAO,KAC5C,KAAK,SAAS,WAAW,GAAG,KAAK,KAAK,SAAS,WAAW,GAAG,GAAG;AAChE,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO,UAAU;AAEjB,QAAM,eAAe;AACrB,QAAM,EAAE,QAAQ,IAAI,EAAE,IAAI;AAC1B,QAAM,MAAM;AACZ,QAAM,QAAQ;AACd,QAAM,SAAS;AACf,QAAM,QAAQ;AAAA;AAAA;;;AC5Id;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,YAAY,CAACC,UAAS,OAAO,YAAY;AAC7C,UAAI;AACF,gBAAQ,IAAI,MAAM,OAAO,OAAO;AAAA,MAClC,SAAS,IAAI;AACX,eAAO;AAAA,MACT;AACA,aAAO,MAAM,KAAKA,QAAO;AAAA,IAC3B;AACA,WAAO,UAAU;AAAA;AAAA;;;ACTjB;AAAA;AAAA,QAAM,QAAQ;AAGd,QAAM,gBAAgB,CAAC,OAAO,YAC5B,IAAI,MAAM,OAAO,OAAO,EAAE,IACvB,IAAI,UAAQ,KAAK,IAAI,OAAK,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;AAEnE,WAAO,UAAU;AAAA;AAAA;;;ACPjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AAEd,QAAM,gBAAgB,CAAC,UAAU,OAAO,YAAY;AAClD,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI,WAAW;AACf,UAAI;AACF,mBAAW,IAAI,MAAM,OAAO,OAAO;AAAA,MACrC,SAAS,IAAI;AACX,eAAO;AAAA,MACT;AACA,eAAS,QAAQ,CAAC,MAAM;AACtB,YAAI,SAAS,KAAK,CAAC,GAAG;AAEpB,cAAI,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,IAAI;AAEnC,kBAAM;AACN,oBAAQ,IAAI,OAAO,KAAK,OAAO;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACxBjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,QAAM,gBAAgB,CAAC,UAAU,OAAO,YAAY;AAClD,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI,WAAW;AACf,UAAI;AACF,mBAAW,IAAI,MAAM,OAAO,OAAO;AAAA,MACrC,SAAS,IAAI;AACX,eAAO;AAAA,MACT;AACA,eAAS,QAAQ,CAAC,MAAM;AACtB,YAAI,SAAS,KAAK,CAAC,GAAG;AAEpB,cAAI,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,GAAG;AAElC,kBAAM;AACN,oBAAQ,IAAI,OAAO,KAAK,OAAO;AAAA,UACjC;AAAA,QACF;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;ACvBjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,QAAQ;AACd,QAAM,KAAK;AAEX,QAAM,aAAa,CAAC,OAAO,UAAU;AACnC,cAAQ,IAAI,MAAM,OAAO,KAAK;AAE9B,UAAI,SAAS,IAAI,OAAO,OAAO;AAC/B,UAAI,MAAM,KAAK,MAAM,GAAG;AACtB,eAAO;AAAA,MACT;AAEA,eAAS,IAAI,OAAO,SAAS;AAC7B,UAAI,MAAM,KAAK,MAAM,GAAG;AACtB,eAAO;AAAA,MACT;AAEA,eAAS;AACT,eAAS,IAAI,GAAG,IAAI,MAAM,IAAI,QAAQ,EAAE,GAAG;AACzC,cAAM,cAAc,MAAM,IAAI,CAAC;AAE/B,YAAI,SAAS;AACb,oBAAY,QAAQ,CAAC,eAAe;AAElC,gBAAM,UAAU,IAAI,OAAO,WAAW,OAAO,OAAO;AACpD,kBAAQ,WAAW,UAAU;AAAA,YAC3B,KAAK;AACH,kBAAI,QAAQ,WAAW,WAAW,GAAG;AACnC,wBAAQ;AAAA,cACV,OAAO;AACL,wBAAQ,WAAW,KAAK,CAAC;AAAA,cAC3B;AACA,sBAAQ,MAAM,QAAQ,OAAO;AAAA,YAE/B,KAAK;AAAA,YACL,KAAK;AACH,kBAAI,CAAC,UAAU,GAAG,SAAS,MAAM,GAAG;AAClC,yBAAS;AAAA,cACX;AACA;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAEH;AAAA,YAEF;AACE,oBAAM,IAAI,MAAM,yBAAyB,WAAW,QAAQ,EAAE;AAAA,UAClE;AAAA,QACF,CAAC;AACD,YAAI,WAAW,CAAC,UAAU,GAAG,QAAQ,MAAM,IAAI;AAC7C,mBAAS;AAAA,QACX;AAAA,MACF;AAEA,UAAI,UAAU,MAAM,KAAK,MAAM,GAAG;AAChC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AACA,WAAO,UAAU;AAAA;AAAA;;;AC5DjB,IAAAC,iBAAA;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa,CAAC,OAAO,YAAY;AACrC,UAAI;AAGF,eAAO,IAAI,MAAM,OAAO,OAAO,EAAE,SAAS;AAAA,MAC5C,SAAS,IAAI;AACX,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO,UAAU;AAAA;AAAA;;;ACVjB;AAAA;AAAA,QAAM,SAAS;AACf,QAAM,aAAa;AACnB,QAAM,EAAE,IAAI,IAAI;AAChB,QAAM,QAAQ;AACd,QAAM,YAAY;AAClB,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,MAAM;AAEZ,QAAM,UAAU,CAACC,UAAS,OAAO,MAAM,YAAY;AACjD,MAAAA,WAAU,IAAI,OAAOA,UAAS,OAAO;AACrC,cAAQ,IAAI,MAAM,OAAO,OAAO;AAEhC,UAAI,MAAM,OAAO,MAAM,MAAM;AAC7B,cAAQ,MAAM;AAAA,QACZ,KAAK;AACH,iBAAO;AACP,kBAAQ;AACR,iBAAO;AACP,iBAAO;AACP,kBAAQ;AACR;AAAA,QACF,KAAK;AACH,iBAAO;AACP,kBAAQ;AACR,iBAAO;AACP,iBAAO;AACP,kBAAQ;AACR;AAAA,QACF;AACE,gBAAM,IAAI,UAAU,uCAAuC;AAAA,MAC/D;AAGA,UAAI,UAAUA,UAAS,OAAO,OAAO,GAAG;AACtC,eAAO;AAAA,MACT;AAKA,eAAS,IAAI,GAAG,IAAI,MAAM,IAAI,QAAQ,EAAE,GAAG;AACzC,cAAM,cAAc,MAAM,IAAI,CAAC;AAE/B,YAAI,OAAO;AACX,YAAI,MAAM;AAEV,oBAAY,QAAQ,CAAC,eAAe;AAClC,cAAI,WAAW,WAAW,KAAK;AAC7B,yBAAa,IAAI,WAAW,SAAS;AAAA,UACvC;AACA,iBAAO,QAAQ;AACf,gBAAM,OAAO;AACb,cAAI,KAAK,WAAW,QAAQ,KAAK,QAAQ,OAAO,GAAG;AACjD,mBAAO;AAAA,UACT,WAAW,KAAK,WAAW,QAAQ,IAAI,QAAQ,OAAO,GAAG;AACvD,kBAAM;AAAA,UACR;AAAA,QACF,CAAC;AAID,YAAI,KAAK,aAAa,QAAQ,KAAK,aAAa,OAAO;AACrD,iBAAO;AAAA,QACT;AAIA,aAAK,CAAC,IAAI,YAAY,IAAI,aAAa,SACnC,MAAMA,UAAS,IAAI,MAAM,GAAG;AAC9B,iBAAO;AAAA,QACT,WAAW,IAAI,aAAa,SAAS,KAAKA,UAAS,IAAI,MAAM,GAAG;AAC9D,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC/EjB;AAAA;AACA,QAAM,UAAU;AAChB,QAAM,MAAM,CAACC,UAAS,OAAO,YAAY,QAAQA,UAAS,OAAO,KAAK,OAAO;AAC7E,WAAO,UAAU;AAAA;AAAA;;;ACHjB;AAAA;AAAA,QAAM,UAAU;AAEhB,QAAM,MAAM,CAACC,UAAS,OAAO,YAAY,QAAQA,UAAS,OAAO,KAAK,OAAO;AAC7E,WAAO,UAAU;AAAA;AAAA;;;ACHjB;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa,CAAC,IAAI,IAAI,YAAY;AACtC,WAAK,IAAI,MAAM,IAAI,OAAO;AAC1B,WAAK,IAAI,MAAM,IAAI,OAAO;AAC1B,aAAO,GAAG,WAAW,IAAI,OAAO;AAAA,IAClC;AACA,WAAO,UAAU;AAAA;AAAA;;;ACNjB;AAAA;AAGA,QAAM,YAAY;AAClB,QAAM,UAAU;AAChB,WAAO,UAAU,CAAC,UAAU,OAAO,YAAY;AAC7C,YAAM,MAAM,CAAC;AACb,UAAI,QAAQ;AACZ,UAAI,OAAO;AACX,YAAM,IAAI,SAAS,KAAK,CAAC,GAAG,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC;AACxD,iBAAWC,YAAW,GAAG;AACvB,cAAM,WAAW,UAAUA,UAAS,OAAO,OAAO;AAClD,YAAI,UAAU;AACZ,iBAAOA;AACP,cAAI,CAAC,OAAO;AACV,oBAAQA;AAAA,UACV;AAAA,QACF,OAAO;AACL,cAAI,MAAM;AACR,gBAAI,KAAK,CAAC,OAAO,IAAI,CAAC;AAAA,UACxB;AACA,iBAAO;AACP,kBAAQ;AAAA,QACV;AAAA,MACF;AACA,UAAI,OAAO;AACT,YAAI,KAAK,CAAC,OAAO,IAAI,CAAC;AAAA,MACxB;AAEA,YAAM,SAAS,CAAC;AAChB,iBAAW,CAAC,KAAK,GAAG,KAAK,KAAK;AAC5B,YAAI,QAAQ,KAAK;AACf,iBAAO,KAAK,GAAG;AAAA,QACjB,WAAW,CAAC,OAAO,QAAQ,EAAE,CAAC,GAAG;AAC/B,iBAAO,KAAK,GAAG;AAAA,QACjB,WAAW,CAAC,KAAK;AACf,iBAAO,KAAK,KAAK,GAAG,EAAE;AAAA,QACxB,WAAW,QAAQ,EAAE,CAAC,GAAG;AACvB,iBAAO,KAAK,KAAK,GAAG,EAAE;AAAA,QACxB,OAAO;AACL,iBAAO,KAAK,GAAG,GAAG,MAAM,GAAG,EAAE;AAAA,QAC/B;AAAA,MACF;AACA,YAAM,aAAa,OAAO,KAAK,MAAM;AACrC,YAAM,WAAW,OAAO,MAAM,QAAQ,WAAW,MAAM,MAAM,OAAO,KAAK;AACzE,aAAO,WAAW,SAAS,SAAS,SAAS,aAAa;AAAA,IAC5D;AAAA;AAAA;;;AC9CA;AAAA;AAAA,QAAM,QAAQ;AACd,QAAM,aAAa;AACnB,QAAM,EAAE,IAAI,IAAI;AAChB,QAAM,YAAY;AAClB,QAAM,UAAU;AAsChB,QAAM,SAAS,CAAC,KAAK,KAAK,UAAU,CAAC,MAAM;AACzC,UAAI,QAAQ,KAAK;AACf,eAAO;AAAA,MACT;AAEA,YAAM,IAAI,MAAM,KAAK,OAAO;AAC5B,YAAM,IAAI,MAAM,KAAK,OAAO;AAC5B,UAAI,aAAa;AAEjB;AAAO,mBAAW,aAAa,IAAI,KAAK;AACtC,qBAAW,aAAa,IAAI,KAAK;AAC/B,kBAAM,QAAQ,aAAa,WAAW,WAAW,OAAO;AACxD,yBAAa,cAAc,UAAU;AACrC,gBAAI,OAAO;AACT,uBAAS;AAAA,YACX;AAAA,UACF;AAKA,cAAI,YAAY;AACd,mBAAO;AAAA,UACT;AAAA,QACF;AACA,aAAO;AAAA,IACT;AAEA,QAAM,+BAA+B,CAAC,IAAI,WAAW,WAAW,CAAC;AACjE,QAAM,iBAAiB,CAAC,IAAI,WAAW,SAAS,CAAC;AAEjD,QAAM,eAAe,CAAC,KAAK,KAAK,YAAY;AAC1C,UAAI,QAAQ,KAAK;AACf,eAAO;AAAA,MACT;AAEA,UAAI,IAAI,WAAW,KAAK,IAAI,CAAC,EAAE,WAAW,KAAK;AAC7C,YAAI,IAAI,WAAW,KAAK,IAAI,CAAC,EAAE,WAAW,KAAK;AAC7C,iBAAO;AAAA,QACT,WAAW,QAAQ,mBAAmB;AACpC,gBAAM;AAAA,QACR,OAAO;AACL,gBAAM;AAAA,QACR;AAAA,MACF;AAEA,UAAI,IAAI,WAAW,KAAK,IAAI,CAAC,EAAE,WAAW,KAAK;AAC7C,YAAI,QAAQ,mBAAmB;AAC7B,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM;AAAA,QACR;AAAA,MACF;AAEA,YAAM,QAAQ,oBAAI,IAAI;AACtB,UAAI,IAAI;AACR,iBAAW,KAAK,KAAK;AACnB,YAAI,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AAC7C,eAAK,SAAS,IAAI,GAAG,OAAO;AAAA,QAC9B,WAAW,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AACpD,eAAK,QAAQ,IAAI,GAAG,OAAO;AAAA,QAC7B,OAAO;AACL,gBAAM,IAAI,EAAE,MAAM;AAAA,QACpB;AAAA,MACF;AAEA,UAAI,MAAM,OAAO,GAAG;AAClB,eAAO;AAAA,MACT;AAEA,UAAI;AACJ,UAAI,MAAM,IAAI;AACZ,mBAAW,QAAQ,GAAG,QAAQ,GAAG,QAAQ,OAAO;AAChD,YAAI,WAAW,GAAG;AAChB,iBAAO;AAAA,QACT,WAAW,aAAa,MAAM,GAAG,aAAa,QAAQ,GAAG,aAAa,OAAO;AAC3E,iBAAO;AAAA,QACT;AAAA,MACF;AAGA,iBAAW,MAAM,OAAO;AACtB,YAAI,MAAM,CAAC,UAAU,IAAI,OAAO,EAAE,GAAG,OAAO,GAAG;AAC7C,iBAAO;AAAA,QACT;AAEA,YAAI,MAAM,CAAC,UAAU,IAAI,OAAO,EAAE,GAAG,OAAO,GAAG;AAC7C,iBAAO;AAAA,QACT;AAEA,mBAAW,KAAK,KAAK;AACnB,cAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,OAAO,GAAG;AACtC,mBAAO;AAAA,UACT;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,UAAI,QAAQ;AACZ,UAAI,UAAU;AAGd,UAAI,eAAe,MACjB,CAAC,QAAQ,qBACT,GAAG,OAAO,WAAW,SAAS,GAAG,SAAS;AAC5C,UAAI,eAAe,MACjB,CAAC,QAAQ,qBACT,GAAG,OAAO,WAAW,SAAS,GAAG,SAAS;AAE5C,UAAI,gBAAgB,aAAa,WAAW,WAAW,KACnD,GAAG,aAAa,OAAO,aAAa,WAAW,CAAC,MAAM,GAAG;AAC3D,uBAAe;AAAA,MACjB;AAEA,iBAAW,KAAK,KAAK;AACnB,mBAAW,YAAY,EAAE,aAAa,OAAO,EAAE,aAAa;AAC5D,mBAAW,YAAY,EAAE,aAAa,OAAO,EAAE,aAAa;AAC5D,YAAI,IAAI;AACN,cAAI,cAAc;AAChB,gBAAI,EAAE,OAAO,cAAc,EAAE,OAAO,WAAW,UAC3C,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,OAAO;AACzC,6BAAe;AAAA,YACjB;AAAA,UACF;AACA,cAAI,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AAC7C,qBAAS,SAAS,IAAI,GAAG,OAAO;AAChC,gBAAI,WAAW,KAAK,WAAW,IAAI;AACjC,qBAAO;AAAA,YACT;AAAA,UACF,WAAW,GAAG,aAAa,QAAQ,CAAC,UAAU,GAAG,QAAQ,OAAO,CAAC,GAAG,OAAO,GAAG;AAC5E,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,IAAI;AACN,cAAI,cAAc;AAChB,gBAAI,EAAE,OAAO,cAAc,EAAE,OAAO,WAAW,UAC3C,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,SAChC,EAAE,OAAO,UAAU,aAAa,OAAO;AACzC,6BAAe;AAAA,YACjB;AAAA,UACF;AACA,cAAI,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM;AAC7C,oBAAQ,QAAQ,IAAI,GAAG,OAAO;AAC9B,gBAAI,UAAU,KAAK,UAAU,IAAI;AAC/B,qBAAO;AAAA,YACT;AAAA,UACF,WAAW,GAAG,aAAa,QAAQ,CAAC,UAAU,GAAG,QAAQ,OAAO,CAAC,GAAG,OAAO,GAAG;AAC5E,mBAAO;AAAA,UACT;AAAA,QACF;AACA,YAAI,CAAC,EAAE,aAAa,MAAM,OAAO,aAAa,GAAG;AAC/C,iBAAO;AAAA,QACT;AAAA,MACF;AAKA,UAAI,MAAM,YAAY,CAAC,MAAM,aAAa,GAAG;AAC3C,eAAO;AAAA,MACT;AAEA,UAAI,MAAM,YAAY,CAAC,MAAM,aAAa,GAAG;AAC3C,eAAO;AAAA,MACT;AAKA,UAAI,gBAAgB,cAAc;AAChC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAGA,QAAM,WAAW,CAAC,GAAG,GAAG,YAAY;AAClC,UAAI,CAAC,GAAG;AACN,eAAO;AAAA,MACT;AACA,YAAM,OAAO,QAAQ,EAAE,QAAQ,EAAE,QAAQ,OAAO;AAChD,aAAO,OAAO,IAAI,IACd,OAAO,IAAI,IACX,EAAE,aAAa,OAAO,EAAE,aAAa,OAAO,IAC5C;AAAA,IACN;AAGA,QAAM,UAAU,CAAC,GAAG,GAAG,YAAY;AACjC,UAAI,CAAC,GAAG;AACN,eAAO;AAAA,MACT;AACA,YAAM,OAAO,QAAQ,EAAE,QAAQ,EAAE,QAAQ,OAAO;AAChD,aAAO,OAAO,IAAI,IACd,OAAO,IAAI,IACX,EAAE,aAAa,OAAO,EAAE,aAAa,OAAO,IAC5C;AAAA,IACN;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACtPjB,IAAAC,kBAAA;AAAA;AACA,QAAM,aAAa;AACnB,QAAMC,aAAY;AAClB,QAAM,SAAS;AACf,QAAM,cAAc;AACpB,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,MAAM;AACZ,QAAM,OAAO;AACb,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,QAAQ;AACd,QAAM,aAAa;AACnB,QAAM,UAAU;AAChB,QAAM,WAAW;AACjB,QAAM,eAAe;AACrB,QAAM,eAAe;AACrB,QAAM,OAAO;AACb,QAAM,QAAQ;AACd,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,KAAK;AACX,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,SAAS;AACf,QAAM,aAAa;AACnB,QAAM,QAAQ;AACd,QAAM,YAAY;AAClB,QAAM,gBAAgB;AACtB,QAAM,gBAAgB;AACtB,QAAM,gBAAgB;AACtB,QAAM,aAAa;AACnB,QAAM,aAAa;AACnB,QAAM,UAAU;AAChB,QAAM,MAAM;AACZ,QAAM,MAAM;AACZ,QAAM,aAAa;AACnB,QAAM,gBAAgB;AACtB,QAAM,SAAS;AACf,WAAO,UAAU;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI,WAAW;AAAA,MACf,KAAK,WAAW;AAAA,MAChB,QAAQ,WAAW;AAAA,MACnB,qBAAqBA,WAAU;AAAA,MAC/B,eAAeA,WAAU;AAAA,MACzB,oBAAoB,YAAY;AAAA,MAChC,qBAAqB,YAAY;AAAA,IACnC;AAAA;AAAA;;;ACxFA;AAAA;AAAA,WAAO,UAAU;AACjB,UAAM,OAAO;AAEb,QAAIC,MAAK,UAAQ,IAAI;AAErB,aAAS,aAAcC,OAAM,SAAS;AACpC,UAAI,UAAU,QAAQ,YAAY,SAChC,QAAQ,UAAU,QAAQ,IAAI;AAEhC,UAAI,CAAC,SAAS;AACZ,eAAO;AAAA,MACT;AAEA,gBAAU,QAAQ,MAAM,GAAG;AAC3B,UAAI,QAAQ,QAAQ,EAAE,MAAM,IAAI;AAC9B,eAAO;AAAA,MACT;AACA,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,YAAI,IAAI,QAAQ,CAAC,EAAE,YAAY;AAC/B,YAAI,KAAKA,MAAK,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,MAAM,GAAG;AACnD,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,aAAS,UAAW,MAAMA,OAAM,SAAS;AACvC,UAAI,CAAC,KAAK,eAAe,KAAK,CAAC,KAAK,OAAO,GAAG;AAC5C,eAAO;AAAA,MACT;AACA,aAAO,aAAaA,OAAM,OAAO;AAAA,IACnC;AAEA,aAAS,MAAOA,OAAM,SAAS,IAAI;AACjC,MAAAD,IAAG,KAAKC,OAAM,SAAU,IAAI,MAAM;AAChC,WAAG,IAAI,KAAK,QAAQ,UAAU,MAAMA,OAAM,OAAO,CAAC;AAAA,MACpD,CAAC;AAAA,IACH;AAEA,aAAS,KAAMA,OAAM,SAAS;AAC5B,aAAO,UAAUD,IAAG,SAASC,KAAI,GAAGA,OAAM,OAAO;AAAA,IACnD;AAAA;AAAA;;;ACzCA;AAAA;AAAA,WAAO,UAAU;AACjB,UAAM,OAAO;AAEb,QAAIC,MAAK,UAAQ,IAAI;AAErB,aAAS,MAAOC,OAAM,SAAS,IAAI;AACjC,MAAAD,IAAG,KAAKC,OAAM,SAAU,IAAI,MAAM;AAChC,WAAG,IAAI,KAAK,QAAQ,UAAU,MAAM,OAAO,CAAC;AAAA,MAC9C,CAAC;AAAA,IACH;AAEA,aAAS,KAAMA,OAAM,SAAS;AAC5B,aAAO,UAAUD,IAAG,SAASC,KAAI,GAAG,OAAO;AAAA,IAC7C;AAEA,aAAS,UAAW,MAAM,SAAS;AACjC,aAAO,KAAK,OAAO,KAAK,UAAU,MAAM,OAAO;AAAA,IACjD;AAEA,aAAS,UAAW,MAAM,SAAS;AACjC,UAAI,MAAM,KAAK;AACf,UAAI,MAAM,KAAK;AACf,UAAI,MAAM,KAAK;AAEf,UAAI,QAAQ,QAAQ,QAAQ,SAC1B,QAAQ,MAAM,QAAQ,UAAU,QAAQ,OAAO;AACjD,UAAI,QAAQ,QAAQ,QAAQ,SAC1B,QAAQ,MAAM,QAAQ,UAAU,QAAQ,OAAO;AAEjD,UAAI,IAAI,SAAS,OAAO,CAAC;AACzB,UAAI,IAAI,SAAS,OAAO,CAAC;AACzB,UAAI,IAAI,SAAS,OAAO,CAAC;AACzB,UAAI,KAAK,IAAI;AAEb,UAAI,MAAO,MAAM,KACd,MAAM,KAAM,QAAQ,SACpB,MAAM,KAAM,QAAQ,SACpB,MAAM,MAAO,UAAU;AAE1B,aAAO;AAAA,IACT;AAAA;AAAA;;;ACxCA;AAAA;AAAA,QAAIC,MAAK,UAAQ,IAAI;AACrB,QAAI;AACJ,QAAI,QAAQ,aAAa,WAAW,OAAO,iBAAiB;AAC1D,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAEA,WAAO,UAAU;AACjB,UAAM,OAAO;AAEb,aAAS,MAAOC,OAAM,SAAS,IAAI;AACjC,UAAI,OAAO,YAAY,YAAY;AACjC,aAAK;AACL,kBAAU,CAAC;AAAA,MACb;AAEA,UAAI,CAAC,IAAI;AACP,YAAI,OAAO,YAAY,YAAY;AACjC,gBAAM,IAAI,UAAU,uBAAuB;AAAA,QAC7C;AAEA,eAAO,IAAI,QAAQ,SAAU,SAAS,QAAQ;AAC5C,gBAAMA,OAAM,WAAW,CAAC,GAAG,SAAU,IAAI,IAAI;AAC3C,gBAAI,IAAI;AACN,qBAAO,EAAE;AAAA,YACX,OAAO;AACL,sBAAQ,EAAE;AAAA,YACZ;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAEA,WAAKA,OAAM,WAAW,CAAC,GAAG,SAAU,IAAI,IAAI;AAE1C,YAAI,IAAI;AACN,cAAI,GAAG,SAAS,YAAY,WAAW,QAAQ,cAAc;AAC3D,iBAAK;AACL,iBAAK;AAAA,UACP;AAAA,QACF;AACA,WAAG,IAAI,EAAE;AAAA,MACX,CAAC;AAAA,IACH;AAEA,aAAS,KAAMA,OAAM,SAAS;AAE5B,UAAI;AACF,eAAO,KAAK,KAAKA,OAAM,WAAW,CAAC,CAAC;AAAA,MACtC,SAAS,IAAI;AACX,YAAI,WAAW,QAAQ,gBAAgB,GAAG,SAAS,UAAU;AAC3D,iBAAO;AAAA,QACT,OAAO;AACL,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA;AAAA;;;ACxDA;AAAA;AAAA,QAAM,YAAY,QAAQ,aAAa,WACnC,QAAQ,IAAI,WAAW,YACvB,QAAQ,IAAI,WAAW;AAE3B,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,QAAQ,YAAY,MAAM;AAChC,QAAM,QAAQ;AAEd,QAAM,mBAAmB,CAAC,QACxB,OAAO,OAAO,IAAI,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAElE,QAAM,cAAc,CAAC,KAAK,QAAQ;AAChC,YAAM,QAAQ,IAAI,SAAS;AAI3B,YAAM,UAAU,IAAI,MAAM,IAAI,KAAK,aAAa,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,IAEjE;AAAA;AAAA,QAEE,GAAI,YAAY,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC;AAAA,QACnC,IAAI,IAAI,QAAQ,QAAQ,IAAI;AAAA,QACe,IAAI,MAAM,KAAK;AAAA,MAC5D;AAEJ,YAAM,aAAa,YACf,IAAI,WAAW,QAAQ,IAAI,WAAW,wBACtC;AACJ,YAAM,UAAU,YAAY,WAAW,MAAM,KAAK,IAAI,CAAC,EAAE;AAEzD,UAAI,WAAW;AACb,YAAI,IAAI,QAAQ,GAAG,MAAM,MAAM,QAAQ,CAAC,MAAM;AAC5C,kBAAQ,QAAQ,EAAE;AAAA,MACtB;AAEA,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAM,QAAQ,CAAC,KAAK,KAAK,OAAO;AAC9B,UAAI,OAAO,QAAQ,YAAY;AAC7B,aAAK;AACL,cAAM,CAAC;AAAA,MACT;AACA,UAAI,CAAC;AACH,cAAM,CAAC;AAET,YAAM,EAAE,SAAS,SAAS,WAAW,IAAI,YAAY,KAAK,GAAG;AAC7D,YAAM,QAAQ,CAAC;AAEf,YAAM,OAAO,OAAK,IAAI,QAAQ,CAAC,SAAS,WAAW;AACjD,YAAI,MAAM,QAAQ;AAChB,iBAAO,IAAI,OAAO,MAAM,SAAS,QAAQ,KAAK,IAC1C,OAAO,iBAAiB,GAAG,CAAC;AAElC,cAAM,QAAQ,QAAQ,CAAC;AACvB,cAAM,WAAW,SAAS,KAAK,KAAK,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI;AAE7D,cAAM,OAAOA,MAAK,KAAK,UAAU,GAAG;AACpC,cAAM,IAAI,CAAC,YAAY,YAAY,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,OAC7D;AAEJ,gBAAQ,QAAQ,GAAG,GAAG,CAAC,CAAC;AAAA,MAC1B,CAAC;AAED,YAAM,UAAU,CAAC,GAAG,GAAG,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC7D,YAAI,OAAO,QAAQ;AACjB,iBAAO,QAAQ,KAAK,IAAI,CAAC,CAAC;AAC5B,cAAM,MAAM,QAAQ,EAAE;AACtB,cAAM,IAAI,KAAK,EAAE,SAAS,WAAW,GAAG,CAAC,IAAI,OAAO;AAClD,cAAI,CAAC,MAAM,IAAI;AACb,gBAAI,IAAI;AACN,oBAAM,KAAK,IAAI,GAAG;AAAA;AAElB,qBAAO,QAAQ,IAAI,GAAG;AAAA,UAC1B;AACA,iBAAO,QAAQ,QAAQ,GAAG,GAAG,KAAK,CAAC,CAAC;AAAA,QACtC,CAAC;AAAA,MACH,CAAC;AAED,aAAO,KAAK,KAAK,CAAC,EAAE,KAAK,SAAO,GAAG,MAAM,GAAG,GAAG,EAAE,IAAI,KAAK,CAAC;AAAA,IAC7D;AAEA,QAAM,YAAY,CAAC,KAAK,QAAQ;AAC9B,YAAM,OAAO,CAAC;AAEd,YAAM,EAAE,SAAS,SAAS,WAAW,IAAI,YAAY,KAAK,GAAG;AAC7D,YAAM,QAAQ,CAAC;AAEf,eAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAM;AACxC,cAAM,QAAQ,QAAQ,CAAC;AACvB,cAAM,WAAW,SAAS,KAAK,KAAK,IAAI,MAAM,MAAM,GAAG,EAAE,IAAI;AAE7D,cAAM,OAAOA,MAAK,KAAK,UAAU,GAAG;AACpC,cAAM,IAAI,CAAC,YAAY,YAAY,KAAK,GAAG,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,OAC7D;AAEJ,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAM;AACxC,gBAAM,MAAM,IAAI,QAAQ,CAAC;AACzB,cAAI;AACF,kBAAM,KAAK,MAAM,KAAK,KAAK,EAAE,SAAS,WAAW,CAAC;AAClD,gBAAI,IAAI;AACN,kBAAI,IAAI;AACN,sBAAM,KAAK,GAAG;AAAA;AAEd,uBAAO;AAAA,YACX;AAAA,UACF,SAAS,IAAI;AAAA,UAAC;AAAA,QAChB;AAAA,MACF;AAEA,UAAI,IAAI,OAAO,MAAM;AACnB,eAAO;AAET,UAAI,IAAI;AACN,eAAO;AAET,YAAM,iBAAiB,GAAG;AAAA,IAC5B;AAEA,WAAO,UAAU;AACjB,UAAM,OAAO;AAAA;AAAA;;;AC5Hb;AAAA;AAAA;AAEA,QAAMC,WAAU,CAAC,UAAU,CAAC,MAAM;AACjC,YAAM,cAAc,QAAQ,OAAO,QAAQ;AAC3C,YAAM,WAAW,QAAQ,YAAY,QAAQ;AAE7C,UAAI,aAAa,SAAS;AACzB,eAAO;AAAA,MACR;AAEA,aAAO,OAAO,KAAK,WAAW,EAAE,QAAQ,EAAE,KAAK,SAAO,IAAI,YAAY,MAAM,MAAM,KAAK;AAAA,IACxF;AAEA,WAAO,UAAUA;AAEjB,WAAO,QAAQ,UAAUA;AAAA;AAAA;;;ACfzB;AAAA;AAAA;AAEA,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,QAAQ;AACd,QAAM,aAAa;AAEnB,aAAS,sBAAsB,QAAQ,gBAAgB;AACnD,YAAM,MAAM,OAAO,QAAQ,OAAO,QAAQ;AAC1C,YAAM,MAAM,QAAQ,IAAI;AACxB,YAAM,eAAe,OAAO,QAAQ,OAAO;AAE3C,YAAM,kBAAkB,gBAAgB,QAAQ,UAAU,UAAa,CAAC,QAAQ,MAAM;AAItF,UAAI,iBAAiB;AACjB,YAAI;AACA,kBAAQ,MAAM,OAAO,QAAQ,GAAG;AAAA,QACpC,SAAS,KAAK;AAAA,QAEd;AAAA,MACJ;AAEA,UAAI;AAEJ,UAAI;AACA,mBAAW,MAAM,KAAK,OAAO,SAAS;AAAA,UAClC,MAAM,IAAI,WAAW,EAAE,IAAI,CAAC,CAAC;AAAA,UAC7B,SAAS,iBAAiBA,MAAK,YAAY;AAAA,QAC/C,CAAC;AAAA,MACL,SAAS,GAAG;AAAA,MAEZ,UAAE;AACE,YAAI,iBAAiB;AACjB,kBAAQ,MAAM,GAAG;AAAA,QACrB;AAAA,MACJ;AAIA,UAAI,UAAU;AACV,mBAAWA,MAAK,QAAQ,eAAe,OAAO,QAAQ,MAAM,IAAI,QAAQ;AAAA,MAC5E;AAEA,aAAO;AAAA,IACX;AAEA,aAAS,eAAe,QAAQ;AAC5B,aAAO,sBAAsB,MAAM,KAAK,sBAAsB,QAAQ,IAAI;AAAA,IAC9E;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACnDjB;AAAA;AAAA;AAGA,QAAM,kBAAkB;AAExB,aAAS,cAAc,KAAK;AAExB,YAAM,IAAI,QAAQ,iBAAiB,KAAK;AAExC,aAAO;AAAA,IACX;AAEA,aAAS,eAAe,KAAK,uBAAuB;AAEhD,YAAM,GAAG,GAAG;AAMZ,YAAM,IAAI,QAAQ,WAAW,SAAS;AAKtC,YAAM,IAAI,QAAQ,UAAU,MAAM;AAKlC,YAAM,IAAI,GAAG;AAGb,YAAM,IAAI,QAAQ,iBAAiB,KAAK;AAGxC,UAAI,uBAAuB;AACvB,cAAM,IAAI,QAAQ,iBAAiB,KAAK;AAAA,MAC5C;AAEA,aAAO;AAAA,IACX;AAEA,WAAO,QAAQ,UAAU;AACzB,WAAO,QAAQ,WAAW;AAAA;AAAA;;;AC5C1B;AAAA;AAAA;AACA,WAAO,UAAU;AAAA;AAAA;;;ACDjB;AAAA;AAAA;AACA,QAAM,eAAe;AAErB,WAAO,UAAU,CAAC,SAAS,OAAO;AACjC,YAAMC,SAAQ,OAAO,MAAM,YAAY;AAEvC,UAAI,CAACA,QAAO;AACX,eAAO;AAAA,MACR;AAEA,YAAM,CAACC,OAAM,QAAQ,IAAID,OAAM,CAAC,EAAE,QAAQ,QAAQ,EAAE,EAAE,MAAM,GAAG;AAC/D,YAAM,SAASC,MAAK,MAAM,GAAG,EAAE,IAAI;AAEnC,UAAI,WAAW,OAAO;AACrB,eAAO;AAAA,MACR;AAEA,aAAO,WAAW,GAAG,MAAM,IAAI,QAAQ,KAAK;AAAA,IAC7C;AAAA;AAAA;;;AClBA;AAAA;AAAA;AAEA,QAAMC,MAAK,UAAQ,IAAI;AACvB,QAAM,iBAAiB;AAEvB,aAAS,YAAY,SAAS;AAE1B,YAAM,OAAO;AACb,YAAM,SAAS,OAAO,MAAM,IAAI;AAEhC,UAAI;AAEJ,UAAI;AACA,aAAKA,IAAG,SAAS,SAAS,GAAG;AAC7B,QAAAA,IAAG,SAAS,IAAI,QAAQ,GAAG,MAAM,CAAC;AAClC,QAAAA,IAAG,UAAU,EAAE;AAAA,MACnB,SAAS,GAAG;AAAA,MAAc;AAG1B,aAAO,eAAe,OAAO,SAAS,CAAC;AAAA,IAC3C;AAEA,WAAO,UAAU;AAAA;AAAA;;;ACtBjB,IAAAC,iBAAA;AAAA;AAAA;AAEA,QAAMC,QAAO,UAAQ,MAAM;AAC3B,QAAM,iBAAiB;AACvB,QAAMC,UAAS;AACf,QAAM,cAAc;AAEpB,QAAM,QAAQ,QAAQ,aAAa;AACnC,QAAM,qBAAqB;AAC3B,QAAM,kBAAkB;AAExB,aAAS,cAAc,QAAQ;AAC3B,aAAO,OAAO,eAAe,MAAM;AAEnC,YAAM,UAAU,OAAO,QAAQ,YAAY,OAAO,IAAI;AAEtD,UAAI,SAAS;AACT,eAAO,KAAK,QAAQ,OAAO,IAAI;AAC/B,eAAO,UAAU;AAEjB,eAAO,eAAe,MAAM;AAAA,MAChC;AAEA,aAAO,OAAO;AAAA,IAClB;AAEA,aAAS,cAAc,QAAQ;AAC3B,UAAI,CAAC,OAAO;AACR,eAAO;AAAA,MACX;AAGA,YAAM,cAAc,cAAc,MAAM;AAGxC,YAAM,aAAa,CAAC,mBAAmB,KAAK,WAAW;AAIvD,UAAI,OAAO,QAAQ,cAAc,YAAY;AAKzC,cAAM,6BAA6B,gBAAgB,KAAK,WAAW;AAInE,eAAO,UAAUD,MAAK,UAAU,OAAO,OAAO;AAG9C,eAAO,UAAUC,QAAO,QAAQ,OAAO,OAAO;AAC9C,eAAO,OAAO,OAAO,KAAK,IAAI,CAAC,QAAQA,QAAO,SAAS,KAAK,0BAA0B,CAAC;AAEvF,cAAM,eAAe,CAAC,OAAO,OAAO,EAAE,OAAO,OAAO,IAAI,EAAE,KAAK,GAAG;AAElE,eAAO,OAAO,CAAC,MAAM,MAAM,MAAM,IAAI,YAAY,GAAG;AACpD,eAAO,UAAU,QAAQ,IAAI,WAAW;AACxC,eAAO,QAAQ,2BAA2B;AAAA,MAC9C;AAEA,aAAO;AAAA,IACX;AAEA,aAAS,MAAM,SAAS,MAAM,SAAS;AAEnC,UAAI,QAAQ,CAAC,MAAM,QAAQ,IAAI,GAAG;AAC9B,kBAAU;AACV,eAAO;AAAA,MACX;AAEA,aAAO,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC;AAC/B,gBAAU,OAAO,OAAO,CAAC,GAAG,OAAO;AAGnC,YAAM,SAAS;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA,MAAM;AAAA,QACN,UAAU;AAAA,UACN;AAAA,UACA;AAAA,QACJ;AAAA,MACJ;AAGA,aAAO,QAAQ,QAAQ,SAAS,cAAc,MAAM;AAAA,IACxD;AAEA,WAAO,UAAU;AAAA;AAAA;;;AC1FjB;AAAA;AAAA;AAEA,QAAM,QAAQ,QAAQ,aAAa;AAEnC,aAAS,cAAc,UAAU,SAAS;AACtC,aAAO,OAAO,OAAO,IAAI,MAAM,GAAG,OAAO,IAAI,SAAS,OAAO,SAAS,GAAG;AAAA,QACrE,MAAM;AAAA,QACN,OAAO;AAAA,QACP,SAAS,GAAG,OAAO,IAAI,SAAS,OAAO;AAAA,QACvC,MAAM,SAAS;AAAA,QACf,WAAW,SAAS;AAAA,MACxB,CAAC;AAAA,IACL;AAEA,aAAS,iBAAiB,IAAI,QAAQ;AAClC,UAAI,CAAC,OAAO;AACR;AAAA,MACJ;AAEA,YAAM,eAAe,GAAG;AAExB,SAAG,OAAO,SAAU,MAAM,MAAM;AAI5B,YAAI,SAAS,QAAQ;AACjB,gBAAM,MAAM,aAAa,MAAM,QAAQ,OAAO;AAE9C,cAAI,KAAK;AACL,mBAAO,aAAa,KAAK,IAAI,SAAS,GAAG;AAAA,UAC7C;AAAA,QACJ;AAEA,eAAO,aAAa,MAAM,IAAI,SAAS;AAAA,MAC3C;AAAA,IACJ;AAEA,aAAS,aAAa,QAAQ,QAAQ;AAClC,UAAI,SAAS,WAAW,KAAK,CAAC,OAAO,MAAM;AACvC,eAAO,cAAc,OAAO,UAAU,OAAO;AAAA,MACjD;AAEA,aAAO;AAAA,IACX;AAEA,aAAS,iBAAiB,QAAQ,QAAQ;AACtC,UAAI,SAAS,WAAW,KAAK,CAAC,OAAO,MAAM;AACvC,eAAO,cAAc,OAAO,UAAU,WAAW;AAAA,MACrD;AAEA,aAAO;AAAA,IACX;AAEA,WAAO,UAAU;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA;AAAA;;;AC1DA;AAAA;AAAA;AAEA,QAAM,KAAK,UAAQ,eAAe;AAClC,QAAM,QAAQ;AACd,QAAM,SAAS;AAEf,aAAS,MAAM,SAAS,MAAM,SAAS;AAEnC,YAAM,SAAS,MAAM,SAAS,MAAM,OAAO;AAG3C,YAAM,UAAU,GAAG,MAAM,OAAO,SAAS,OAAO,MAAM,OAAO,OAAO;AAIpE,aAAO,iBAAiB,SAAS,MAAM;AAEvC,aAAO;AAAA,IACX;AAEA,aAAS,UAAU,SAAS,MAAM,SAAS;AAEvC,YAAM,SAAS,MAAM,SAAS,MAAM,OAAO;AAG3C,YAAM,SAAS,GAAG,UAAU,OAAO,SAAS,OAAO,MAAM,OAAO,OAAO;AAGvE,aAAO,QAAQ,OAAO,SAAS,OAAO,iBAAiB,OAAO,QAAQ,MAAM;AAE5E,aAAO;AAAA,IACX;AAEA,WAAO,UAAU;AACjB,WAAO,QAAQ,QAAQ;AACvB,WAAO,QAAQ,OAAO;AAEtB,WAAO,QAAQ,SAAS;AACxB,WAAO,QAAQ,UAAU;AAAA;AAAA;;;ACtCzB;AAAA;AAAA;AAEA,QAAM,EAAE,YAAY,IAAI,UAAQ,QAAQ;AAExC,WAAO,UAAU,WAA0B;AACzC,UAAI,UAAU,CAAC;AACf,UAAI,SAAU,IAAI,YAAY,EAAC,YAAY,KAAI,CAAC;AAEhD,aAAO,gBAAgB,CAAC;AAExB,aAAO,MAAM;AACb,aAAO,UAAUC;AAEjB,aAAO,GAAG,UAAU,MAAM;AAE1B,YAAM,UAAU,MAAM,KAAK,SAAS,EAAE,QAAQ,GAAG;AAEjD,aAAO;AAEP,eAAS,IAAK,QAAQ;AACpB,YAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,iBAAO,QAAQ,GAAG;AAClB,iBAAO;AAAA,QACT;AAEA,gBAAQ,KAAK,MAAM;AACnB,eAAO,KAAK,OAAO,OAAO,KAAK,MAAM,MAAM,CAAC;AAC5C,eAAO,KAAK,SAAS,OAAO,KAAK,KAAK,QAAQ,OAAO,CAAC;AACtD,eAAO,KAAK,QAAQ,EAAC,KAAK,MAAK,CAAC;AAChC,eAAO;AAAA,MACT;AAEA,eAASA,WAAW;AAClB,eAAO,QAAQ,UAAU;AAAA,MAC3B;AAEA,eAAS,OAAQ,QAAQ;AACvB,kBAAU,QAAQ,OAAO,SAAU,IAAI;AAAE,iBAAO,OAAO;AAAA,QAAO,CAAC;AAC/D,YAAI,CAAC,QAAQ,UAAU,OAAO,UAAU;AAAE,iBAAO,IAAI;AAAA,QAAE;AAAA,MACzD;AAAA,IACF;AAAA;AAAA;;;ACnCA,sBAA+B;AAH/B,SAAS,YAAY,qBAAAC,oBAAmB,gBAAAC,eAAc,YAAYC,WAAU;AAC5E,OAAOC,WAAU;AACjB,SAAS,iBAAAC,sBAAqB;;;ACJ9B,OAAOC,WAAU;;;ACAjB,OAAOC,cAAa;AACpB,OAAO,UAAU;AACjB,OAAO,MAAK,YAAY,kBAAiB;AACzC,SAAQ,qBAAoB;;;ACE5B,IAAM,OAAN,MAAW;AAAA,EACV;AAAA,EACA;AAAA,EAEA,YAAY,OAAO;AAClB,SAAK,QAAQ;AAAA,EACd;AACD;AAZA;AAcA,IAAqB,QAArB,MAA2B;AAAA,EAK1B,cAAc;AAJd;AACA;AACA;AAGC,SAAK,MAAM;AAAA,EACZ;AAAA,EAEA,QAAQ,OAAO;AACd,UAAM,OAAO,IAAI,KAAK,KAAK;AAE3B,QAAI,mBAAK,QAAO;AACf,yBAAK,OAAM,OAAO;AAClB,yBAAK,OAAQ;AAAA,IACd,OAAO;AACN,yBAAK,OAAQ;AACb,yBAAK,OAAQ;AAAA,IACd;AAEA,2BAAK,OAAL;AAAA,EACD;AAAA,EAEA,UAAU;AACT,UAAM,UAAU,mBAAK;AACrB,QAAI,CAAC,SAAS;AACb;AAAA,IACD;AAEA,uBAAK,OAAQ,mBAAK,OAAM;AACxB,2BAAK,OAAL;AACA,WAAO,QAAQ;AAAA,EAChB;AAAA,EAEA,QAAQ;AACP,uBAAK,OAAQ;AACb,uBAAK,OAAQ;AACb,uBAAK,OAAQ;AAAA,EACd;AAAA,EAEA,IAAI,OAAO;AACV,WAAO,mBAAK;AAAA,EACb;AAAA,EAEA,EAAG,OAAO,QAAQ,IAAI;AACrB,QAAI,UAAU,mBAAK;AAEnB,WAAO,SAAS;AACf,YAAM,QAAQ;AACd,gBAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AACD;AAnDC;AACA;AACA;;;ACfc,SAAR,OAAwB,aAAa;AAC3C,MAAI,GAAG,OAAO,UAAU,WAAW,KAAK,gBAAgB,OAAO,sBAAsB,cAAc,IAAI;AACtG,UAAM,IAAI,UAAU,qDAAqD;AAAA,EAC1E;AAEA,QAAM,QAAQ,IAAI,MAAM;AACxB,MAAI,cAAc;AAElB,QAAM,OAAO,MAAM;AAClB;AAEA,QAAI,MAAM,OAAO,GAAG;AACnB,YAAM,QAAQ,EAAE;AAAA,IACjB;AAAA,EACD;AAEA,QAAMC,OAAM,OAAO,IAAI,SAAS,SAAS;AACxC;AAEA,UAAM,UAAU,YAAY,GAAG,GAAG,IAAI,GAAG;AAEzC,YAAQ,MAAM;AAEd,QAAI;AACH,YAAM;AAAA,IACP,QAAQ;AAAA,IAAC;AAET,SAAK;AAAA,EACN;AAEA,QAAM,UAAU,CAAC,IAAI,SAAS,SAAS;AACtC,UAAM,QAAQA,KAAI,KAAK,QAAW,IAAI,SAAS,IAAI,CAAC;AAEpD,KAAC,YAAY;AAKZ,YAAM,QAAQ,QAAQ;AAEtB,UAAI,cAAc,eAAe,MAAM,OAAO,GAAG;AAChD,cAAM,QAAQ,EAAE;AAAA,MACjB;AAAA,IACD,GAAG;AAAA,EACJ;AAEA,QAAM,YAAY,CAAC,OAAO,SAAS,IAAI,QAAQ,aAAW;AACzD,YAAQ,IAAI,SAAS,IAAI;AAAA,EAC1B,CAAC;AAED,SAAO,iBAAiB,WAAW;AAAA,IAClC,aAAa;AAAA,MACZ,KAAK,MAAM;AAAA,IACZ;AAAA,IACA,cAAc;AAAA,MACb,KAAK,MAAM,MAAM;AAAA,IAClB;AAAA,IACA,YAAY;AAAA,MACX,OAAO,MAAM;AACZ,cAAM,MAAM;AAAA,MACb;AAAA,IACD;AAAA,EACD,CAAC;AAED,SAAO;AACR;;;ACjEA,IAAM,WAAN,cAAuB,MAAM;AAAA,EAC5B,YAAY,OAAO;AAClB,UAAM;AACN,SAAK,QAAQ;AAAA,EACd;AACD;AAGA,IAAM,cAAc,OAAO,SAAS,WAAW,OAAO,MAAM,OAAO;AAGnE,IAAM,SAAS,OAAM,YAAW;AAC/B,QAAM,SAAS,MAAM,QAAQ,IAAI,OAAO;AACxC,MAAI,OAAO,CAAC,MAAM,MAAM;AACvB,UAAM,IAAI,SAAS,OAAO,CAAC,CAAC;AAAA,EAC7B;AAEA,SAAO;AACR;AAEA,eAAO,QACN,UACA,QACA;AAAA,EACC,cAAc,OAAO;AAAA,EACrB,gBAAgB;AACjB,IAAI,CAAC,GACJ;AACD,QAAM,QAAQ,OAAO,WAAW;AAGhC,QAAM,QAAQ,CAAC,GAAG,QAAQ,EAAE,IAAI,aAAW,CAAC,SAAS,MAAM,aAAa,SAAS,MAAM,CAAC,CAAC;AAGzF,QAAM,aAAa,OAAO,gBAAgB,IAAI,OAAO,iBAAiB;AAEtE,MAAI;AACH,UAAM,QAAQ,IAAI,MAAM,IAAI,aAAW,WAAW,QAAQ,OAAO,CAAC,CAAC;AAAA,EACpE,SAAS,OAAO;AACf,QAAI,iBAAiB,UAAU;AAC9B,aAAO,MAAM;AAAA,IACd;AAEA,UAAM;AAAA,EACP;AACD;;;AHzCA,IAAM,eAAe;AAAA,EACpB,WAAW;AAAA,EACX,MAAM;AACP;AAEA,SAAS,UAAU,MAAM;AACxB,MAAI,OAAO,eAAe,KAAK,cAAc,IAAI,GAAG;AACnD;AAAA,EACD;AAEA,QAAM,IAAI,MAAM,2BAA2B,IAAI,EAAE;AAClD;AAEA,IAAM,YAAY,CAAC,MAAM,SAAS,KAAK,aAAa,IAAI,CAAC,EAAE;AAE3D,IAAM,SAAS,eAAa,qBAAqB,MAAM,cAAc,SAAS,IAAI;AAElF,eAAsB,WACrB,OACA;AAAA,EACC,MAAMC,SAAQ,IAAI;AAAA,EAClB,OAAO;AAAA,EACP,gBAAgB;AAAA,EAChB;AAAA,EACA;AACD,IAAI,CAAC,GACJ;AACD,YAAU,IAAI;AACd,QAAM,OAAO,GAAG;AAEhB,QAAM,eAAe,gBAAgB,WAAW,OAAO,WAAW;AAElE,SAAO,QAAQ,OAAO,OAAM,UAAS;AACpC,QAAI;AACH,YAAM,OAAO,MAAM,aAAa,KAAK,QAAQ,KAAK,KAAK,CAAC;AACxD,aAAO,UAAU,MAAM,IAAI;AAAA,IAC5B,QAAQ;AACP,aAAO;AAAA,IACR;AAAA,EACD,GAAG,EAAC,aAAa,cAAa,CAAC;AAChC;;;AI9CA,SAAQ,iBAAAC,sBAAoB;AAErB,SAASC,QAAO,WAAW;AACjC,SAAO,qBAAqB,MAAMD,eAAc,SAAS,IAAI;AAC9D;;;ALAO,IAAM,aAAa,OAAO,YAAY;AAE7C,eAAsB,eAAe,MAAM,UAAU,CAAC,GAAG;AACxD,MAAIE,aAAYC,MAAK,QAAQC,QAAO,QAAQ,GAAG,KAAK,EAAE;AACtD,QAAM,EAAC,KAAI,IAAID,MAAK,MAAMD,UAAS;AACnC,QAAM,SAASC,MAAK,QAAQD,YAAWE,QAAO,QAAQ,UAAU,IAAI,CAAC;AACrE,QAAM,QAAQ,QAAQ,SAAS,OAAO;AACtC,QAAM,QAAQ,CAAC,IAAI,EAAE,KAAK;AAE1B,QAAM,aAAa,OAAM,kBAAiB;AACzC,QAAI,OAAO,SAAS,YAAY;AAC/B,aAAO,WAAW,OAAO,aAAa;AAAA,IACvC;AAEA,UAAM,YAAY,MAAM,KAAK,cAAc,GAAG;AAC9C,QAAI,OAAO,cAAc,UAAU;AAClC,aAAO,WAAW,CAAC,SAAS,GAAG,aAAa;AAAA,IAC7C;AAEA,WAAO;AAAA,EACR;AAEA,QAAM,UAAU,CAAC;AAEjB,SAAO,MAAM;AAEZ,UAAM,YAAY,MAAM,WAAW,EAAC,GAAG,SAAS,KAAKF,WAAS,CAAC;AAE/D,QAAI,cAAc,YAAY;AAC7B;AAAA,IACD;AAEA,QAAI,WAAW;AACd,cAAQ,KAAKC,MAAK,QAAQD,YAAW,SAAS,CAAC;AAAA,IAChD;AAEA,QAAIA,eAAc,UAAU,QAAQ,UAAU,OAAO;AACpD;AAAA,IACD;AAEA,IAAAA,aAAYC,MAAK,QAAQD,UAAS;AAAA,EACnC;AAEA,SAAO;AACR;AA6CA,eAAsB,OAAO,MAAM,UAAU,CAAC,GAAG;AAChD,QAAM,UAAU,MAAM,eAAe,MAAM,EAAC,GAAG,SAAS,OAAO,EAAC,CAAC;AACjE,SAAO,QAAQ,CAAC;AACjB;;;ADzFA,iBAAgB;;;AOPhB,IAAI;AAAJ,IAAiB;AAAjB,IAAsC;AAAtC,IAAgD;AAAhD,IAAsD,QAAM;AAC5D,IAAI,OAAO,YAAY,aAAa;AACnC,GAAC,EAAE,aAAa,qBAAqB,UAAU,KAAK,IAAI,QAAQ,OAAO,CAAC;AACxE,UAAQ,QAAQ,UAAU,QAAQ,OAAO;AAC1C;AAEO,IAAM,IAAI;AAAA,EAChB,SAAS,CAAC,uBAAuB,YAAY,QAAQ,SAAS,WAC7D,eAAe,QAAQ,gBAAgB,OAAO;AAEhD;AAEA,SAAS,KAAK,GAAG,GAAG;AACnB,MAAI,MAAM,IAAI,OAAO,WAAW,CAAC,KAAK,GAAG;AACzC,MAAI,OAAO,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC;AAE1C,SAAO,SAAU,KAAK;AACrB,QAAI,CAAC,EAAE,WAAW,OAAO;AAAM,aAAO;AACtC,WAAO,QAAQ,CAAC,CAAC,EAAE,KAAG,KAAK,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,OAAO;AAAA,EACrF;AACD;AAGO,IAAM,QAAQ,KAAK,GAAG,CAAC;AACvB,IAAM,OAAO,KAAK,GAAG,EAAE;AACvB,IAAM,MAAM,KAAK,GAAG,EAAE;AACtB,IAAM,SAAS,KAAK,GAAG,EAAE;AACzB,IAAM,YAAY,KAAK,GAAG,EAAE;AAC5B,IAAM,UAAU,KAAK,GAAG,EAAE;AAC1B,IAAM,SAAS,KAAK,GAAG,EAAE;AACzB,IAAM,gBAAgB,KAAK,GAAG,EAAE;AAGhC,IAAM,QAAQ,KAAK,IAAI,EAAE;AACzB,IAAM,MAAM,KAAK,IAAI,EAAE;AACvB,IAAM,QAAQ,KAAK,IAAI,EAAE;AACzB,IAAM,SAAS,KAAK,IAAI,EAAE;AAC1B,IAAM,OAAO,KAAK,IAAI,EAAE;AACxB,IAAM,UAAU,KAAK,IAAI,EAAE;AAC3B,IAAM,OAAO,KAAK,IAAI,EAAE;AACxB,IAAM,QAAQ,KAAK,IAAI,EAAE;AACzB,IAAM,OAAO,KAAK,IAAI,EAAE;AACxB,IAAM,OAAO,KAAK,IAAI,EAAE;AAGxB,IAAM,UAAU,KAAK,IAAI,EAAE;AAC3B,IAAM,QAAQ,KAAK,IAAI,EAAE;AACzB,IAAM,UAAU,KAAK,IAAI,EAAE;AAC3B,IAAM,WAAW,KAAK,IAAI,EAAE;AAC5B,IAAM,SAAS,KAAK,IAAI,EAAE;AAC1B,IAAM,YAAY,KAAK,IAAI,EAAE;AAC7B,IAAM,SAAS,KAAK,IAAI,EAAE;AAC1B,IAAM,UAAU,KAAK,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpDlC,IAAA,qBAAAG,YAAA;EAAA,mCAAA,SAAA,QAAA;AAAA,WAAO,UAAU,SAAU,OAAO,MAAM;AACpC,UAAI,CAAC;AAAM,eAAO,CAAC;AACnB,UAAI,OAAO,KAAK,SAAS,SAAY,OAAO,KAAK;AACjD,UAAI,QAAQ,KAAK,SAAS,CAAC;AAC3B,UAAI,eAAe,KAAK,gBACjB,SAAU,GAAG;AAAE,eAAO,OAAO,CAAC,EAAE;MAAQ;AAG/C,UAAI,WAAW,OAAO,OAAO,SAAU,KAAK,KAAK;AAC7C,gBAAQ,KAAK,SAAU,GAAG,IAAI;AAC1B,cAAI,IAAI,SAAS,CAAC;AAClB,cAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE;AAAG,gBAAI,EAAE,IAAI;QAC3C,CAAC;AACD,eAAO;MACX,GAAG,CAAC,CAAC;AAEL,UAAI,OAAO,IAAI,OAAO,SAAU,KAAK;AACjC,eAAO,IAAI,KAAK,SAAU,IAAI,IAAI;AAC9B,cAAI,IAAI,OAAO,EAAE;AACjB,cAAI,MAAM,EAAE,MAAM,KAAK;AACnB,gBAAI,QAAQ,SAAS,CAAC;AACtB,gBAAI,OAAO,SAAS,EAAE,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,MACvC,aAAa,CAAC,IAAI;AAEzB,mBAAO,IAAI,MAAM,IAAI,EAAE,KAAK,GAAG;UACnC;AACK,mBAAO;QAChB,CAAC;MACL,CAAC;AAED,UAAI,QAAQ,OAAO,MAAM,SAAU,KAAK,KAAK;AACzC,gBAAQ,KAAK,SAAU,GAAG,IAAI;AAC1B,cAAI,IAAI,aAAa,CAAC;AACtB,cAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE;AAAG,gBAAI,EAAE,IAAI;QAC3C,CAAC;AACD,eAAO;MACX,GAAG,CAAC,CAAC;AAEL,aAAO,IAAI,MAAM,SAAU,KAAK;AAC5B,eAAO,IAAI,KAAK,SAAU,GAAG,IAAI;AAC7B,cAAI,IAAK,MAAM,EAAE,IAAI,aAAa,CAAC,KAAM;AACzC,cAAI,IAAI,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG;AAC1C,cAAI,MAAM,EAAE,MAAM,OAAO,MAAM,EAAE,MAAM,KAAK;AACxC,mBAAO,IAAI;UACf;AACA,cAAI,MAAM,EAAE,MAAM,KAAK;AACnB,mBAAO,MAAM,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,IACrC,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG;UAEnD;AAEA,iBAAO,IAAI;QACf,CAAC,EAAE,KAAK,IAAI,EAAE,QAAQ,QAAQ,EAAE;MACpC,CAAC,EAAE,KAAK,IAAI;IAChB;AAEA,aAAS,SAAU,GAAG;AAClB,UAAI,IAAI,WAAW,KAAK,CAAC;AACzB,aAAO,IAAI,EAAE,QAAQ,IAAI,EAAE;IAC/B;AAEA,aAAS,OAAQ,IAAI,GAAGC,OAAM;AAC1B,UAAI,GAAG;AAAQ,eAAO,GAAG,OAAO,GAAGA,KAAI;AACvC,UAAI,IAAI;AACR,UAAI,MAAM,UAAU,UAAU,IAAIA,QAAO,GAAG,GAAG;AAC/C,aAAO,IAAI,GAAG,QAAQ,KAAK;AACvB,UAAE,KAAK,GAAG,CAAC,GAAG,CAAC;MACnB;AACA,aAAO;IACX;AAEA,aAAS,QAAS,IAAI,GAAG;AACrB,UAAI,GAAG;AAAS,eAAO,GAAG,QAAQ,CAAC;AACnC,eAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK;AAChC,UAAE,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC;MACvB;IACJ;AAEA,aAAS,IAAK,IAAI,GAAG;AACjB,UAAI,GAAG;AAAK,eAAO,GAAG,IAAI,CAAC;AAC3B,UAAI,MAAM,CAAC;AACX,eAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK;AAChC,YAAI,KAAK,EAAE,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;MACjC;AACA,aAAO;IACX;EAAA;AAAA,CAAA;ACrFA,IAAA,oBAAoCC,SAAA,mBAAA,CAAA;ACI7B,IAAMC,SAAc;AACpB,IAAMC,QAAa;AACnB,IAAMC,OAAY;AAClB,IAAMC,aAAkB;AAExB,IAAMC,UAAe;AACrB,IAAMC,OAAY;ACVlB,IAAK,WAAL,kBAAKC,cAAL;AACNA,YAAAA,UAAA,KAAA,IAAM,CAAA,IAAN;AACAA,YAAAA,UAAA,MAAA,IAAO,CAAA,IAAP;AACAA,YAAAA,UAAA,OAAA,IAAQ,CAAA,IAAR;AAHW,SAAAA;AAAA,GAAA,YAAA,CAAA,CAAA;AFWZ,SAAS,UAAU,MAAc,OAAuB;AACvD,SAAO,UAAU,IAAI,OAAO,GAAG,IAAI;AACpC;AAMA,SAAS,iBAAiB,IAAoB;AAC7C,SAAO,GAAG,QAAQ,kBAAkB,CAAC,IAAI,IAAY,OAAsBJ,KAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;AAC9F;AAKA,SAAS,UAAU,MAAsB;AAExC,SAAO,KAAK,QAAQ,qBAAqB,EAAE;AAC5C;AAGO,SAAS,QAAQ,SAA2B;AAClD,MAAI,SAAS;AACb,MAAI,aAAa;AACjB,MAAI,eAAe;AACnB,MAAI,oBAAoB;AACxB,MAAI,sBAAsB;AAC1B,MAAI,eAAuCE;AAE3C,UAAQ,QAAQ,CAAC,WAAW;AAC3B,UAAM,WAAW,OAAO;AAExB,QAAI,SAAS,WAAW,GAAG;AAC1B;IACD;AAEA,kBAAc,OAAO;AACrB,oBAAgB,OAAO;AACvB,yBAAqB,OAAO;AAC5B,2BAAuB,OAAO;AAE9B,UAAM,OAAO,SAAS,IAAI,CAAC,YAAY;AACtC,UAAI;AAEJ,UAAI,QAAQ,QAAQ,KAAK,KAAK,QAAQ,aAAA,GAA6B;AAClE,sBAAqBC,KAAI,OAAO;AAChC,uBAAsBA;MACvB,OAAO;AACN,sBAAqBD,QAAO,SAAS;MACtC;AAEA,aAAO;QACN;QACA,QAAQ,QAAQ;QAChB,QAAQ,UAAU;QAClB;QACA,QAAQ,QAAQ,QAAQ,cAAc,IAAI;QAC1C,QAAQ,SAAgBF,KAAI,QAAQ,MAAM,IAAI;MAC/C;IACD,CAAC;AAED,UAAM,UAAmB;MACxB,OAAO,CAAC,KAAK,KAAK,GAAG;MACrB,aAAa,KAAqB;AACjC,eAAO,UAAU,GAAG,EAAE;MACvB;IACD;AACA,UAAM,kBAAA,GAAiB,kBAAAK,SAAM,MAAM,OAAO,EAAE,MAAM,IAAI,EAAE,IAAI,gBAAgB,EAAE,KAAK,IAAI;AAEvF,cAAU,GAAUJ,WAAU,OAAO,QAAQ,CAAC;;AAC9C,cAAU,GAAG,cAAc;;;EAC5B,CAAC;AAED,QAAM,QAAQ,aAAa;AAE3B,MAAI,QAAQ,GAAG;AACd,cAAU;MACFF;QACN;UACC;UACA;UACA,UAAU,YAAY,KAAK;UAC3B;UACA;UACA,UAAU,UAAU,UAAU;UAC9B;UACA;UACA,UAAU,YAAY,YAAY;UAClC;QACD,EAAE,KAAK,EAAE;MACV;IACD;AAEA,QAAI,oBAAoB,KAAK,sBAAsB,GAAG;AACrD,gBAAU;QACFA;UACN;YACC;YACA;YACA,UAAU,UAAU,iBAAiB;YACrC;YACA;YACA,UAAU,YAAY,mBAAmB;YACzC;UACD,EAAE,KAAK,EAAE;QACV;MACD;IACD;EACD;AAGA,SAAO,QAAQ,IAAWD,OAAM,MAAM,IAAI;AAC3C;;;AGzHO,SAAS,OAAO,MAAsB;AAC5C,SAAO,KAAK,QAAQ,MAAM,KAAK;AAChC;AAEO,SAAS,UAAUQ,OAAsB;AAC/C,SAAO,IAAI,OAAO,QAAQA,KAAI,GAAG;AAClC;AAEO,SAAS,UAAU,KAAqB;AAC9C,SAAO,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,GAAG;AACpC;AAEO,SAAS,SAASA,OAAsB;AAC9C,SAAO,IAAI,OAAO,QAAQ,OAAOA,KAAI,CAAC,GAAG;AAC1C;AAEO,SAAS,OAAO,MAAsB;AAC5C,SAAO,IAAI,OAAO,GAAG,OAAO,IAAI,CAAC,sCAAsC;AACxE;;;AClBA,IAAM,SAAmB;AAAA,EACxB,SAAS,eAAe;AAAA,EACxB,SAAS,gBAAgB;AAAA,EACzB,SAAS,gBAAgB;AAC1B;AAEA,IAAO,cAAQ;;;ACNf,IAAMC,UAAmB,CAAC,SAAS,MAAM,SAAS,gBAAgB,CAAC;AAEnE,IAAO,gBAAQA;;;ACFf,IAAMC,UAAmB;AAAA,EACxB,UAAU,cAAc;AAAA,EACxB,SAAS,eAAe;AAAA,EACxB,OAAO,WAAW;AAAA,EAClB,SAAS,kBAAkB;AAAA,EAC3B,SAAS,mBAAmB;AAAA,EAC5B,SAAS,mBAAmB;AAAA,EAC5B,SAAS,kBAAkB;AAC5B;AAEA,IAAO,iBAAQA;;;ACVf,IAAMC,UAAmB,CAAC,SAAS,oBAAoB,GAAG,OAAO,UAAU,CAAC;AAE5E,IAAO,uBAAQA;;;ACFf,IAAMC,UAAmB;AAAA,EACxB,SAAS,gBAAgB;AAAA,EACzB,SAAS,OAAO;AAAA,EAChB,SAAS,UAAU;AAAA,EACnB,SAAS,aAAa;AACvB;AAEA,IAAO,cAAQA;;;ACPf,IAAMC,UAAmB;AAAA,EACxB,UAAU,eAAe;AAAA,EACzB,UAAU,WAAW;AAAA,EACrB,UAAU,OAAO;AAAA,EACjB,UAAU,eAAe;AAAA,EACzB,UAAU,cAAc;AAAA,EACxB,UAAU,YAAY;AAAA,EACtB,UAAU,gBAAgB;AAAA,EAC1B,UAAU,eAAe;AAAA,EACzB,UAAU,cAAc;AAAA,EACxB,UAAU,YAAY;AAAA,EACtB,UAAU,gBAAgB;AAC3B;AAEA,IAAO,eAAQA;;;ACdf,IAAMC,UAAmB;AAAA,EACxB;AAAA,EACA,SAAS,sCAAsC;AAAA,EAC/C,SAAS,YAAY;AAAA,EACrB,SAAS,QAAQ;AAAA,EACjB,SAAS,QAAQ;AAAA,EACjB,SAAS,YAAY;AACtB;AAEA,IAAO,eAAQA;;;ACTf,IAAMC,UAAmB,CAAC,SAAS,iBAAiB,GAAG,OAAO,aAAa,CAAC;AAE5E,IAAO,mBAAQA;;;ACFf,IAAMC,UAAmB,CAAC,UAAU,cAAc,GAAG,SAAS,eAAe,CAAC;AAE9E,IAAO,qBAAQA;;;ACDf,IAAMC,WAAmB;AAAA,EACxB,SAAS,KAAK;AAAA,EACd,SAAS,KAAK;AAAA,EACd,SAAS,KAAK;AAAA,EACd,SAAS,KAAK;AAAA,EACd;AAAA,EACA;AACD;AAEA,IAAO,kBAAQA;;;ACAf,IAAM,YAAsB;AAAA;AAAA,EAE3B,UAAU,aAAa;AAAA,EACvB,UAAU,UAAU;AAAA,EACpB,UAAU,OAAO;AAAA,EACjB,UAAU,eAAe;AAAA,EACzB,SAAS,eAAe;AAAA,EACxB,SAAS,WAAW;AAAA,EACpB,SAAS,WAAW;AAAA,EACpB,SAAS,aAAa;AAAA,EACtB,OAAO,OAAO;AAAA,EACd,OAAO,QAAQ;AAAA;AAAA,EAGf,UAAU,WAAW;AAAA,EACrB,UAAU,MAAM;AAAA,EAChB,UAAU,QAAQ;AAAA,EAClB,SAAS,cAAc;AAAA,EACvB,SAAS,mBAAmB;AAAA,EAC5B,SAAS,oBAAoB;AAAA,EAC7B,SAAS,oBAAoB;AAAA,EAC7B,SAAS,mBAAmB;AAAA,EAC5B,SAAS,iBAAiB;AAAA,EAC1B,SAAS,YAAY;AAAA,EACrB,SAAS,sBAAsB;AAAA,EAC/B,SAAS,uBAAuB;AAAA,EAChC,SAAS,uBAAuB;AAAA,EAChC,SAAS,sBAAsB;AAAA,EAC/B,SAAS,SAAS;AAAA,EAClB,SAAS,aAAa;AAAA,EACtB,SAAS,YAAY;AAAA,EACrB,SAAS,mBAAmB;AAAA,EAC5B,SAAS,YAAY;AAAA;AAAA,EAGrB,SAAS,oBAAoB;AAAA,EAC7B,SAAS,eAAe;AAAA,EACxB,SAAS,aAAa;AAAA,EACtB,SAAS,aAAa;AAAA,EACtB,SAAS,YAAY;AAAA,EACrB,OAAO,SAAS;AAAA,EAChB,OAAO,WAAW;AAAA;AAAA,EAGlB,SAAS,kBAAkB;AAAA,EAC3B,SAAS,mBAAmB;AAAA;AAAA,EAG5B,SAAS,iBAAiB;AAAA,EAC1B,SAAS,mBAAmB;AAAA,EAC5B,SAAS,kBAAkB;AAAA,EAC3B,SAAS,mBAAmB;AAAA,EAC5B,SAAS,iBAAiB;AAAA,EAC1B,SAAS,eAAe;AAAA,EACxB,SAAS,gBAAgB;AAAA;AAAA,EAGzB;AAAA,EACA,UAAU,WAAW;AAAA,EACrB,UAAU,SAAS;AAAA,EACnB,UAAU,SAAS;AAAA,EACnB,UAAU,UAAU;AAAA,EACpB,SAAS,gBAAgB;AAAA,EACzB,SAAS,gBAAgB;AAAA,EACzB,SAAS,aAAa;AAAA,EACtB,SAAS,cAAc;AAAA,EACvB,SAAS,mBAAmB;AAAA,EAC5B,SAAS,aAAa;AAAA,EACtB,SAAS,0BAA0B;AAAA,EACnC,SAAS,cAAc;AAAA;AAAA,EAGvB;AAAA,EACA,UAAU,SAAS;AAAA,EACnB,UAAU,kBAAkB;AAAA,EAC5B,UAAU,oBAAoB;AAAA,EAC9B,SAAS,eAAe;AAAA,EACxB,SAAS,aAAa;AAAA,EACtB,SAAS,cAAc;AAAA,EACvB,UAAU,OAAO;AAAA,EACjB,SAAS,gBAAgB;AAAA;AAAA,EAGzB,UAAU,cAAc;AAAA,EACxB,UAAU,WAAW;AAAA,EACrB,UAAU,aAAa;AAAA;AAAA,EAGvB,UAAU,MAAM;AAAA,EAChB,UAAU,MAAM;AAAA;AAAA,EAGhB,UAAU,MAAM;AAAA,EAChB,UAAU,MAAM;AAAA,EAChB,UAAU,WAAW;AAAA,EACrB,UAAU,OAAO;AAAA;AAAA,EAGjB;AAAA,EACA,UAAU,MAAM;AAAA,EAChB,UAAU,MAAM;AAAA,EAChB,UAAU,MAAM;AAAA,EAChB,UAAU,MAAM;AAAA,EAChB,SAAS,MAAM;AAAA,EACf,SAAS,WAAW;AAAA,EACpB,SAAS,eAAe;AAAA,EACxB,SAAS,cAAc;AAAA,EACvB,SAAS,mBAAmB;AAAA,EAC5B,SAAS,aAAa;AAAA,EACtB,SAAS,aAAa;AAAA,EACtB,SAAS,YAAY;AAAA,EACrB,SAAS,sBAAsB;AAAA,EAC/B,SAAS,eAAe;AAAA,EACxB,SAAS,cAAc;AAAA,EACvB,SAAS,mBAAmB;AAAA,EAE5B,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACJ;AAEA,IAAO,oBAAQ;;;AC1IR,SAAS,eAAe,MAAoB;AAElD,oBAAU,KAAK,IAAI,OAAO,IAAI,IAAI,4BAA4B,CAAC;AAChE;AAEO,SAAS,cAAcC,WAA2B;AACxD,SAAO,kBAAU,KAAK,CAAC,UAAUA,UAAS,MAAM,KAAK,CAAC;AACvD;;;ACRA,iBAA2C;AAD3C,OAAOC,SAAQ;AAqBf,IAAM,SAAS;AAEf,SAAS,UAAUC,WAA0B;AAC5C,SAAOA,UAAS,QAAQ,YAAY,EAAE;AACvC;AAEA,eAAsB,YAAYA,WAAqC;AACtE,QAAM,UAAuB,CAAC;AAC9B,QAAM,WAAAC,QAAI,KAAK;AAAA,IACd,MAAMD;AAAA,IACN,QAAQ;AAAA,IACR,SAAS,CAAC,UAAqB,QAAQ,KAAK,KAAK;AAAA,EAClD,CAAC;AACD,SAAO,QAAQ,IAAI,CAAC,UAAU;AAC7B,UAAMA,YAAW,MAAM;AACvB,WAAO,UAAUA,SAAQ;AAAA,EAC1B,CAAC;AACF;AAEA,eAAsB,eACrB,SACA,WACkC;AAClC,QAAM,WAAmC,CAAC;AAE1C,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvC,UAAM,IAAI,IAAI,iBAAM;AAAA,MACnB,OAAO,OAAe,OAA+B;AACpD,eAAO,UAAU,SAAS,UAAU,MAAM,IAAI,CAAC;AAAA,MAChD;AAAA,IACD,CAAC;AACD,MAAE,GAAG,SAAS,CAAC,UAAyB;AACvC,YAAM,IAAI,UAAU,MAAM,IAAI;AAC9B,eAAS,CAAC,IAAI,OAAO,MAAM,CAAC;AAC5B,YAAM,GAAG,QAAQ,CAAC,SAAiB;AAClC,iBAAS,CAAC,IAAI,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AAAA,MAChD,CAAC;AACD,YAAM,GAAG,SAAS,CAAC,UAAU;AAE5B,eAAO,KAAK;AAAA,MACb,CAAC;AAAA,IACF,CAAC;AACD,MAAE,GAAG,OAAO,MAAM;AACjB,cAAQ,QAAQ;AAAA,IACjB,CAAC;AACD,UAAM,KAAKE,IAAG,iBAAiB,QAAQ,QAAQ;AAC/C,OAAG,KAAK,CAAC;AAAA,EACV,CAAC;AACF;AAEO,SAAS,iBAAiB,UAA8B;AAC9D,SAAO,SAAS,OAAO,aAAa;AACrC;AAEA,SAAS,uBACR,KACW;AACX,MAAI,OAAO,QAAQ,UAAU;AAC5B,WAAO,CAAC,GAAG;AAAA,EACZ,WAAW,MAAM,QAAQ,GAAG,GAAG;AAC9B,WAAO;AAAA,EACR,OAAO;AACN,WAAO,OAAO,OAAO,GAAG,EAAE,OAAO,CAAC,OAAO,OAAO,KAAK;AAAA,EACtD;AACD;AAEA,UAAU,mBACT,KACA,UAC0B;AAC1B,QAAM,QAAQ,uBAAuB,GAAG;AACxC,aAAWF,aAAY,OAAO;AAC7B,UAAM,EAAE,GAAG,UAAU,UAAAA,UAAS;AAAA,EAC/B;AACD;AAEA,UAAU,mBACT,SAC0B;AAC1B,MAAI,CAAC,SAAS;AACb;AAAA,EACD;AAEA,MAAI,OAAO,YAAY,UAAU;AAChC,UAAM;AAAA,MACL,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,IACX;AACA;AAAA,EACD;AAEA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,GAAG;AAEnD,QAAI,IAAI,SAAS,GAAG,GAAG;AACtB;AAAA,IACD;AACA,WAAO,mBAAmB,KAAK;AAAA,EAChC;AACD;AAEA,UAAU,cAAc,KAA2C;AAClE,SAAO,mBAAmB,IAAI,OAAO;AACrC,MAAI,IAAI,MAAM;AACb,WAAO,mBAAmB,IAAI,MAAM,EAAE,OAAO,QAAQ,OAAO,CAAC;AAAA,EAC9D;AACA,MAAI,IAAI,SAAS;AAChB,WAAO,mBAAmB,IAAI,SAAS,EAAE,OAAO,WAAW,OAAO,CAAC;AAAA,EACpE;AACA,MAAI,IAAI,QAAQ;AACf,WAAO,mBAAmB,IAAI,QAAQ,EAAE,OAAO,UAAU,OAAO,CAAC;AAAA,EAClE;AAEA,MAAI,IAAI,aAAa,GAAG;AACvB,WAAO,mBAAmB,IAAI,aAAa,GAAG;AAAA,MAC7C,OAAO;AAAA,MACP;AAAA,IACD,CAAC;AAAA,EACF;AACA,MAAI,IAAI,SAAS;AAChB,WAAO,mBAAmB,IAAI,SAAS,EAAE,OAAO,WAAW,QAAQ,qBAAqB,CAAC;AAAA,EAC1F;AACA,MAAI,IAAI,KAAK;AACZ,WAAO,mBAAmB,IAAI,KAAK,EAAE,OAAO,OAAO,QAAQ,oBAAoB,CAAC;AAAA,EACjF;AACA,MAAI,IAAI,KAAK;AACZ,WAAO,mBAAmB,IAAI,KAAK,EAAE,OAAO,OAAO,QAAQ,iBAAiB,CAAC;AAAA,EAC9E;AACD;AAEA,SAAS,WAAW,UAAoBA,WAA2B;AAElE,EAAAA,YAAWA,UAAS,QAAQ,SAAS,EAAE;AAGvC,MAAI,SAAS,SAASA,SAAQ,GAAG;AAChC,WAAO;AAAA,EACR;AAGA,MAAI,SAAS,SAAS,GAAGA,SAAQ,KAAK,GAAG;AACxC,WAAO;AAAA,EACR;AAGA,MAAI,SAAS,SAAS,GAAGA,UAAS,QAAQ,OAAO,EAAE,CAAC,WAAW,GAAG;AACjE,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AAMA,eAAsB,cAAc,KAAkB,SAAyC;AAC9F,QAAM,WAAsB,CAAC;AAC7B,QAAM,WAAW,MAAM,YAAY,QAAQ,QAAQ;AAEnD,aAAWA,aAAY,iBAAiB,QAAQ,GAAG;AAClD,aAAS,KAAK;AAAA,MACb,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,SAAS,GAAGA,SAAQ;AAAA,MACpB,MAAM;AAAA,MACN,QAAQ;AAAA,IACT,CAAC;AAAA,EACF;AAEA,aAAW,gBAAgB,cAAc,GAAG,GAAG;AAC9C,QAAI,CAAC,WAAW,UAAU,aAAa,QAAQ,GAAG;AACjD,eAAS,KAAK;AAAA,QACb,QAAQ,aAAa;AAAA,QACrB,UAAU;AAAA,QACV,SAAS,GAAG,aAAa,QAAQ,SAAS,aAAa,KAAK;AAAA,QAC5D,MAAM;AAAA,QACN,QAAQ;AAAA,MACT,CAAC;AAAA,IACF;AAAA,EACD;AAEA,MAAI,SAAS,WAAW,GAAG;AAC1B,WAAO,CAAC;AAAA,EACT;AAEA,SAAO;AAAA,IACN;AAAA,MACC;AAAA,MACA,UAAU,QAAQ,cAAc,QAAQ;AAAA,MACxC,YAAY,SAAS,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,EAAE;AAAA,MACvD,cAAc,SAAS,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,EAAE;AAAA,MACzD,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IACtB;AAAA,EACD;AACD;;;ACzNO,IAAM,kBAAN,cAA8B,MAAM;AAAA,EACnC;AAAA,EAEA,YAAY,WAAmB,SAAiB;AACtD,UAAM,OAAO;AACb,SAAK,YAAY;AAAA,EAClB;AACD;;;ACPA,SAAS,QAAQ,OAAqB;AAErC,SAAO,OAAO,UAAU,eAAe,UAAU,QAAQ,UAAU;AACpE;AAEO,SAAS,SAAS,KAAa,OAAsB;AAC3D,MAAI,QAAQ,KAAK,GAAG;AACnB,UAAM,IAAI,MAAM,IAAI,GAAG,qBAAqB;AAAA,EAC7C;AAGA,MAAI,OAAO,UAAU,UAAU;AAC9B;AAAA,EACD;AAGA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACzB,QAAI,MAAM,WAAW,GAAG;AACvB,YAAM,IAAI,MAAM,IAAI,GAAG,qBAAqB;AAAA,IAC7C;AAEA,eAAW,SAAS,OAAO;AAC1B,eAAS,GAAG,GAAG,IAAI,KAAK,KAAK,MAAM,KAAK,CAAC;AAAA,IAC1C;AACA;AAAA,EACD;AAGA,MAAI,SAAS,OAAO,UAAU,UAAU;AACvC,UAAM,SAAS,OAAO,OAAO,KAAK;AAClC,QAAI,OAAO,WAAW,GAAG;AACxB,YAAM,IAAI,MAAM,IAAI,GAAG,qBAAqB;AAAA,IAC7C;AAAA,EACD;AACD;;;AChCO,SAAS,QAAQ,KAAa,OAAkB;AACtD,MAAI,OAAO,UAAU,eAAe,UAAU,MAAM;AACnD,UAAM,IAAI,gBAAgB,QAAQ,MAAM,IAAI,GAAG,eAAe;AAAA,EAC/D;AACD;;;ACNO,SAAS,UAAU,KAAa,OAAkB;AACxD,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAC1B,UAAM,IAAI,MAAM,IAAI,GAAG,iBAAiB;AAAA,EACzC;AAEA,aAAW,SAAS,OAAO;AAC1B,QAAI,OAAO,MAAM,KAAK,MAAM,UAAU;AACrC,YAAM,IAAI,MAAM,IAAI,GAAG,IAAI,KAAK,mBAAmB;AAAA,IACpD;AAAA,EACD;AACD;;;ACVO,SAAS,WAAW,KAAa,OAAkB;AACzD,MAAI,OAAO,UAAU,UAAU;AAC9B,UAAM,IAAI,MAAM,IAAI,GAAG,kBAAkB;AAAA,EAC1C;AACD;;;ACJA,SAAS,aAAa,KAAa,OAAsB;AACxD,MAAI,OAAO,UAAU,UAAU;AAC9B,UAAM,IAAI,MAAM,IAAI,GAAG,yBAAyB;AAAA,EACjD;AACA,MAAI,UAAU,OAAO;AACpB,UAAM,IAAI,MAAM,IAAI,GAAG,sBAAsB;AAAA,EAC9C;AACD;AAEA,SAAS,YAAY,KAAa,OAAsB;AACvD,MAAI,OAAO,UAAU,UAAU;AAC9B,UAAM,IAAI,MAAM,IAAI,GAAG,wBAAwB;AAAA,EAChD;AACA,MAAI,MAAM,KAAK,MAAM,IAAI;AACxB,UAAM,IAAI,MAAM,IAAI,GAAG,yBAAyB;AAAA,EACjD;AACA,MAAI,UAAU,MAAM,KAAK,GAAG;AAC3B,UAAM,IAAI,MAAM,IAAI,GAAG,oDAAoD;AAAA,EAC5E;AACA,QAAMG,OAAM,IAAI,IAAI,KAAK;AACzB,MAAIA,KAAI,aAAa,eAAeA,KAAI,aAAa,SAAS;AAC7D,UAAM,IAAI,MAAM,IAAI,GAAG,oDAAoD;AAAA,EAC5E;AACA,MAAIA,KAAI,aAAa,cAAc;AAClC,UAAM,IAAI,MAAM,IAAI,GAAG,wCAAwC;AAAA,EAChE;AACA,MAAIA,KAAI,SAAS,IAAI;AACpB,UAAM,IAAI,MAAM,IAAI,GAAG,sBAAsB;AAAA,EAC9C;AACD;AAEA,SAAS,kBAAkB,KAAa,OAAsB;AAC7D,MAAI,OAAO,UAAU,UAAU;AAC9B,UAAM,IAAI,MAAM,IAAI,GAAG,8BAA8B;AAAA,EACtD;AACA,MAAI,MAAM,KAAK,MAAM,IAAI;AACxB,UAAM,IAAI;AAAA,MACT,IAAI,GAAG;AAAA,IACR;AAAA,EACD;AACD;AAEO,SAAS,aAAa,KAAa,OAAsB;AAC/D,MAAI,UAAU,QAAW;AACxB;AAAA,EACD;AACA,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAChD,UAAM,IAAI,MAAM,IAAI,GAAG,2CAA2C;AAAA,EACnE;AACA,MAAI,UAAU,OAAO;AACpB,iBAAa,KAAK,MAAM,IAAI;AAAA,EAC7B,OAAO;AACN,UAAM,IAAI,MAAM,IAAI,GAAG,uCAAuC;AAAA,EAC/D;AACA,MAAI,SAAS,OAAO;AACnB,gBAAY,KAAK,MAAM,GAAG;AAAA,EAC3B,OAAO;AACN,UAAM,IAAI,MAAM,IAAI,GAAG,sCAAsC;AAAA,EAC9D;AACA,MAAI,eAAe,OAAO;AACzB,sBAAkB,KAAK,MAAM,SAAS;AAAA,EACvC;AACD;;;AC9DO,SAAS,SAAS,KAAa,OAAkB;AACvD,MAAI,OAAO,UAAU,YAAY,MAAM,MAAM,gBAAgB,GAAG;AAC/D;AAAA,EACD,WAAW,+BAAO,KAAK;AACtB,aAAS,GAAG,GAAG,QAAQ,MAAM,GAAG;AAAA,EACjC,OAAO;AACN,UAAM,IAAI,MAAM,IAAI,GAAG,oCAAoC;AAAA,EAC5D;AACD;;;ACRA,oBAAmB;;;ACInB,yBAAuB;AAJvB,SAAQ,UAAAC,eAAa;AACrB,OAAOC,WAAU;AACjB,OAAO,kBAAkB;AACzB,OAAOC,cAAa;;;ACHL,SAAR,kBAAmC,OAAO;AAChD,QAAM,KAAK,OAAO,UAAU,WAAW,OAAO,KAAK,WAAW;AAC9D,QAAM,KAAK,OAAO,UAAU,WAAW,OAAO,KAAK,WAAW;AAE9D,MAAI,MAAM,MAAM,SAAS,CAAC,MAAM,IAAI;AACnC,YAAQ,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAEA,MAAI,MAAM,MAAM,SAAS,CAAC,MAAM,IAAI;AACnC,YAAQ,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AAEA,SAAO;AACR;;;ACbA,OAAOC,cAAa;AACpB,OAAOC,WAAU;AACjB,OAAO,SAAS;;;ACFD,SAAR,QAAyB,UAAU,CAAC,GAAG;AAC7C,QAAM;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,WAAW,QAAQ;AAAA,EACpB,IAAI;AAEJ,MAAI,aAAa,SAAS;AACzB,WAAO;AAAA,EACR;AAEA,SAAO,OAAO,KAAK,GAAG,EAAE,QAAQ,EAAE,KAAK,SAAO,IAAI,YAAY,MAAM,MAAM,KAAK;AAChF;;;ADNO,SAAS,WAAW,UAAU,CAAC,GAAG;AACxC,QAAM;AAAA,IACL,MAAMC,SAAQ,IAAI;AAAA,IAClB,MAAM,QAAQA,SAAQ,IAAI,QAAQ,CAAC;AAAA,IACnC,WAAWA,SAAQ;AAAA,EACpB,IAAI;AAEJ,MAAI;AACJ,QAAM,YAAY,eAAe,MAAM,IAAI,cAAc,GAAG,IAAI;AAChE,MAAI,UAAUC,MAAK,QAAQ,SAAS;AACpC,QAAM,SAAS,CAAC;AAEhB,SAAO,aAAa,SAAS;AAC5B,WAAO,KAAKA,MAAK,KAAK,SAAS,mBAAmB,CAAC;AACnD,eAAW;AACX,cAAUA,MAAK,QAAQ,SAAS,IAAI;AAAA,EACrC;AAGA,SAAO,KAAKA,MAAK,QAAQ,WAAW,UAAU,IAAI,CAAC;AAEnD,SAAO,CAAC,GAAG,QAAQ,KAAK,EAAE,KAAKA,MAAK,SAAS;AAC9C;AAEO,SAAS,cAAc,EAAC,MAAMD,SAAQ,KAAK,GAAG,QAAO,IAAI,CAAC,GAAG;AACnE,QAAM,EAAC,GAAG,IAAG;AAEb,QAAMC,QAAO,QAAQ,EAAC,IAAG,CAAC;AAC1B,UAAQ,OAAO,IAAIA,KAAI;AACvB,MAAIA,KAAI,IAAI,WAAW,OAAO;AAE9B,SAAO;AACR;;;AErCA,IAAM,eAAe,CAAC,IAAI,MAAM,UAAU,0BAA0B;AAGnE,MAAI,aAAa,YAAY,aAAa,aAAa;AACtD;AAAA,EACD;AAGA,MAAI,aAAa,eAAe,aAAa,UAAU;AACtD;AAAA,EACD;AAEA,QAAM,eAAe,OAAO,yBAAyB,IAAI,QAAQ;AACjE,QAAM,iBAAiB,OAAO,yBAAyB,MAAM,QAAQ;AAErE,MAAI,CAAC,gBAAgB,cAAc,cAAc,KAAK,uBAAuB;AAC5E;AAAA,EACD;AAEA,SAAO,eAAe,IAAI,UAAU,cAAc;AACnD;AAKA,IAAM,kBAAkB,SAAU,cAAc,gBAAgB;AAC/D,SAAO,iBAAiB,UAAa,aAAa,gBACjD,aAAa,aAAa,eAAe,YACzC,aAAa,eAAe,eAAe,cAC3C,aAAa,iBAAiB,eAAe,iBAC5C,aAAa,YAAY,aAAa,UAAU,eAAe;AAElE;AAEA,IAAM,kBAAkB,CAAC,IAAI,SAAS;AACrC,QAAM,gBAAgB,OAAO,eAAe,IAAI;AAChD,MAAI,kBAAkB,OAAO,eAAe,EAAE,GAAG;AAChD;AAAA,EACD;AAEA,SAAO,eAAe,IAAI,aAAa;AACxC;AAEA,IAAM,kBAAkB,CAAC,UAAU,aAAa,cAAc,QAAQ;AAAA,EAAO,QAAQ;AAErF,IAAM,qBAAqB,OAAO,yBAAyB,SAAS,WAAW,UAAU;AACzF,IAAM,eAAe,OAAO,yBAAyB,SAAS,UAAU,UAAU,MAAM;AAKxF,IAAM,iBAAiB,CAAC,IAAI,MAAM,SAAS;AAC1C,QAAM,WAAW,SAAS,KAAK,KAAK,QAAQ,KAAK,KAAK,CAAC;AACvD,QAAM,cAAc,gBAAgB,KAAK,MAAM,UAAU,KAAK,SAAS,CAAC;AAExE,SAAO,eAAe,aAAa,QAAQ,YAAY;AACvD,SAAO,eAAe,IAAI,YAAY,EAAC,GAAG,oBAAoB,OAAO,YAAW,CAAC;AAClF;AAEe,SAAR,cAA+B,IAAI,MAAM,EAAC,wBAAwB,MAAK,IAAI,CAAC,GAAG;AACrF,QAAM,EAAC,KAAI,IAAI;AAEf,aAAW,YAAY,QAAQ,QAAQ,IAAI,GAAG;AAC7C,iBAAa,IAAI,MAAM,UAAU,qBAAqB;AAAA,EACvD;AAEA,kBAAgB,IAAI,IAAI;AACxB,iBAAe,IAAI,MAAM,IAAI;AAE7B,SAAO;AACR;;;ACpEA,IAAM,kBAAkB,oBAAI,QAAQ;AAEpC,IAAM,UAAU,CAAC,WAAW,UAAU,CAAC,MAAM;AAC5C,MAAI,OAAO,cAAc,YAAY;AACpC,UAAM,IAAI,UAAU,qBAAqB;AAAA,EAC1C;AAEA,MAAI;AACJ,MAAI,YAAY;AAChB,QAAM,eAAe,UAAU,eAAe,UAAU,QAAQ;AAEhE,QAAMC,WAAU,YAAa,YAAY;AACxC,oBAAgB,IAAIA,UAAS,EAAE,SAAS;AAExC,QAAI,cAAc,GAAG;AACpB,oBAAc,UAAU,MAAM,MAAM,UAAU;AAC9C,kBAAY;AAAA,IACb,WAAW,QAAQ,UAAU,MAAM;AAClC,YAAM,IAAI,MAAM,cAAc,YAAY,4BAA4B;AAAA,IACvE;AAEA,WAAO;AAAA,EACR;AAEA,gBAAcA,UAAS,SAAS;AAChC,kBAAgB,IAAIA,UAAS,SAAS;AAEtC,SAAOA;AACR;AAEA,QAAQ,YAAY,eAAa;AAChC,MAAI,CAAC,gBAAgB,IAAI,SAAS,GAAG;AACpC,UAAM,IAAI,MAAM,wBAAwB,UAAU,IAAI,8CAA8C;AAAA,EACrG;AAEA,SAAO,gBAAgB,IAAI,SAAS;AACrC;AAEA,IAAO,kBAAQ;;;ACxCf,OAAOC,cAAa;;;ACApB,SAAO,aAAAC,kBAAc;;;ACCd,IAAM,qBAAmB,MAAI;AACpC,QAAM,SAAO,WAAS,WAAS;AAC/B,SAAO,MAAM,KAAK,EAAC,OAAM,GAAE,iBAAiB;AAC5C;AAEA,IAAM,oBAAkB,CAAC,OAAM,WAAS;AAAA,EACxC,MAAK,QAAQ,QAAM,CAAC;AAAA,EACpB,QAAO,WAAS;AAAA,EAChB,QAAO;AAAA,EACP,aAAY;AAAA,EACZ,UAAS;AACT;AAEA,IAAM,WAAS;AACR,IAAM,WAAS;;;ACftB,SAAO,iBAAc;;;ACEd,IAAM,UAAQ;AAAA,EACrB;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aACA;AAAA,IACA,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,IACT,QAAO;AAAA,EACP;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,IACT,QAAO;AAAA,EACP;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,IACT,QAAO;AAAA,EACP;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAA,EACA;AAAA,IACA,MAAK;AAAA,IACL,QAAO;AAAA,IACP,QAAO;AAAA,IACP,aAAY;AAAA,IACZ,UAAS;AAAA,EACT;AAAC;;;ADzQM,IAAM,aAAW,MAAI;AAC5B,QAAM,kBAAgB,mBAAmB;AACzC,QAAMC,WAAQ,CAAC,GAAG,SAAQ,GAAG,eAAe,EAAE,IAAI,eAAe;AACjE,SAAOA;AACP;AAQA,IAAM,kBAAgB,CAAC;AAAA,EACvB;AAAA,EACA,QAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA,SAAO;AAAA,EACP;AACA,MAAI;AACJ,QAAK;AAAA,IACL,SAAQ,EAAC,CAAC,IAAI,GAAE,eAAc;AAAA,EAC9B,IAAE;AACF,QAAM,YAAU,mBAAiB;AACjC,QAAM,SAAO,YAAU,iBAAe;AACtC,SAAM,EAAC,MAAK,QAAO,aAAY,WAAU,QAAO,QAAO,SAAQ;AAC/D;;;AF1BA,IAAM,mBAAiB,MAAI;AAC3B,QAAMC,WAAQ,WAAW;AACzB,SAAO,OAAO,YAAYA,SAAQ,IAAI,eAAe,CAAC;AACtD;AAEA,IAAM,kBAAgB,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACA,MAAI,CAAC,MAAK,EAAC,MAAK,QAAO,aAAY,WAAU,QAAO,QAAO,SAAQ,CAAC;AAE7D,IAAM,gBAAc,iBAAiB;AAK5C,IAAM,qBAAmB,MAAI;AAC7B,QAAMA,WAAQ,WAAW;AACzB,QAAM,SAAO,WAAS;AACtB,QAAM,WAAS,MAAM;AAAA,IAAK,EAAC,OAAM;AAAA,IAAE,CAAC,OAAM,WAC1C,kBAAkB,QAAOA,QAAO;AAAA,EAChC;AACA,SAAO,OAAO,OAAO,CAAC,GAAE,GAAG,QAAQ;AACnC;AAEA,IAAM,oBAAkB,CAAC,QAAOA,aAAU;AAC1C,QAAM,SAAO,mBAAmB,QAAOA,QAAO;AAE9C,MAAG,WAAS,QAAU;AACtB,WAAM,CAAC;AAAA,EACP;AAEA,QAAK,EAAC,MAAK,aAAY,WAAU,QAAO,QAAO,SAAQ,IAAE;AACzD,SAAM;AAAA,IACN,CAAC,MAAM,GAAE;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACA;AAAA,EACA;AACA;AAIA,IAAM,qBAAmB,CAAC,QAAOA,aAAU;AAC3C,QAAM,SAAOA,SAAQ,KAAK,CAAC,EAAC,KAAI,MAAIC,WAAU,QAAQ,IAAI,MAAI,MAAM;AAEpE,MAAG,WAAS,QAAU;AACtB,WAAO;AAAA,EACP;AAEA,SAAOD,SAAQ,KAAK,CAAC,YAAU,QAAQ,WAAS,MAAM;AACtD;AAEO,IAAM,kBAAgB,mBAAmB;;;ADlEhD,IAAM,iBAAiB,CAAC,EAAC,UAAU,SAAS,WAAW,QAAQ,mBAAmB,UAAU,WAAU,MAAM;AAC3G,MAAI,UAAU;AACb,WAAO,mBAAmB,OAAO;AAAA,EAClC;AAEA,MAAI,YAAY;AACf,WAAO;AAAA,EACR;AAEA,MAAI,cAAc,QAAW;AAC5B,WAAO,eAAe,SAAS;AAAA,EAChC;AAEA,MAAI,WAAW,QAAW;AACzB,WAAO,mBAAmB,MAAM,KAAK,iBAAiB;AAAA,EACvD;AAEA,MAAI,aAAa,QAAW;AAC3B,WAAO,yBAAyB,QAAQ;AAAA,EACzC;AAEA,SAAO;AACR;AAEO,IAAM,YAAY,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,EAAC,SAAS,EAAC,SAAS,MAAME,SAAQ,IAAI,EAAC,EAAC;AACjD,MAAM;AAGL,aAAW,aAAa,OAAO,SAAY;AAC3C,WAAS,WAAW,OAAO,SAAY;AACvC,QAAM,oBAAoB,WAAW,SAAY,SAAY,cAAc,MAAM,EAAE;AAEnF,QAAM,YAAY,SAAS,MAAM;AAEjC,QAAMC,UAAS,eAAe,EAAC,UAAU,SAAS,WAAW,QAAQ,mBAAmB,UAAU,WAAU,CAAC;AAC7G,QAAM,eAAe,WAAWA,OAAM,KAAK,OAAO;AAClD,QAAM,UAAU,OAAO,UAAU,SAAS,KAAK,KAAK,MAAM;AAC1D,QAAM,eAAe,UAAU,GAAG,YAAY;AAAA,EAAK,MAAM,OAAO,KAAK;AACrE,QAAM,UAAU,CAAC,cAAc,QAAQ,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAExE,MAAI,SAAS;AACZ,UAAM,kBAAkB,MAAM;AAC9B,UAAM,UAAU;AAAA,EACjB,OAAO;AACN,YAAQ,IAAI,MAAM,OAAO;AAAA,EAC1B;AAEA,QAAM,eAAe;AACrB,QAAM,UAAU;AAChB,QAAM,iBAAiB;AACvB,QAAM,WAAW;AACjB,QAAM,SAAS;AACf,QAAM,oBAAoB;AAC1B,QAAM,SAAS;AACf,QAAM,SAAS;AACf,QAAM,MAAM;AAEZ,MAAI,QAAQ,QAAW;AACtB,UAAM,MAAM;AAAA,EACb;AAEA,MAAI,kBAAkB,OAAO;AAC5B,WAAO,MAAM;AAAA,EACd;AAEA,QAAM,SAAS;AACf,QAAM,WAAW,QAAQ,QAAQ;AACjC,QAAM,aAAa;AACnB,QAAM,SAAS,UAAU,CAAC;AAE1B,SAAO;AACR;;;AKtFA,IAAM,UAAU,CAAC,SAAS,UAAU,QAAQ;AAE5C,IAAM,WAAW,aAAW,QAAQ,KAAK,WAAS,QAAQ,KAAK,MAAM,MAAS;AAEvE,IAAM,iBAAiB,aAAW;AACxC,MAAI,CAAC,SAAS;AACb;AAAA,EACD;AAEA,QAAM,EAAC,MAAK,IAAI;AAEhB,MAAI,UAAU,QAAW;AACxB,WAAO,QAAQ,IAAI,WAAS,QAAQ,KAAK,CAAC;AAAA,EAC3C;AAEA,MAAI,SAAS,OAAO,GAAG;AACtB,UAAM,IAAI,MAAM,qEAAqE,QAAQ,IAAI,WAAS,KAAK,KAAK,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,EACvI;AAEA,MAAI,OAAO,UAAU,UAAU;AAC9B,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AAC1B,UAAM,IAAI,UAAU,mEAAmE,OAAO,KAAK,IAAI;AAAA,EACxG;AAEA,QAAM,SAAS,KAAK,IAAI,MAAM,QAAQ,QAAQ,MAAM;AACpD,SAAO,MAAM,KAAK,EAAC,OAAM,GAAG,CAAC,OAAO,UAAU,MAAM,KAAK,CAAC;AAC3D;;;AC7BA,OAAO,QAAQ;;;AC0BR,IAAM,UAA4B,CAAA;AACzC,QAAQ,KAAK,UAAU,UAAU,SAAS;AAE1C,IAAI,QAAQ,aAAa,SAAS;AAChC,UAAQ;IACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;;;;;AAOJ,IAAI,QAAQ,aAAa,SAAS;AAChC,UAAQ,KAAK,SAAS,WAAW,UAAU,WAAW;;;;ACnCxD,IAAM,YAAY,CAACC,aACjB,CAAC,CAACA,YACF,OAAOA,aAAY,YACnB,OAAOA,SAAQ,mBAAmB,cAClC,OAAOA,SAAQ,SAAS,cACxB,OAAOA,SAAQ,eAAe,cAC9B,OAAOA,SAAQ,cAAc,cAC7B,OAAOA,SAAQ,SAAS,cACxB,OAAOA,SAAQ,QAAQ,YACvB,OAAOA,SAAQ,OAAO;AAExB,IAAM,eAAe,OAAO,IAAI,qBAAqB;AACrD,IAAMC,UAA2D;AACjE,IAAM,uBAAuB,OAAO,eAAe,KAAK,MAAM;AAyB9D,IAAM,UAAN,MAAa;EACX,UAAmB;IACjB,WAAW;IACX,MAAM;;EAGR,YAAuB;IACrB,WAAW,CAAA;IACX,MAAM,CAAA;;EAGR,QAAgB;EAChB,KAAa,KAAK,OAAM;EAExB,cAAA;AACE,QAAIA,QAAO,YAAY,GAAG;AACxB,aAAOA,QAAO,YAAY;;AAE5B,yBAAqBA,SAAQ,cAAc;MACzC,OAAO;MACP,UAAU;MACV,YAAY;MACZ,cAAc;KACf;EACH;EAEA,GAAG,IAAe,IAAW;AAC3B,SAAK,UAAU,EAAE,EAAE,KAAK,EAAE;EAC5B;EAEA,eAAe,IAAe,IAAW;AACvC,UAAM,OAAO,KAAK,UAAU,EAAE;AAC9B,UAAM,IAAI,KAAK,QAAQ,EAAE;AAEzB,QAAI,MAAM,IAAI;AACZ;;AAGF,QAAI,MAAM,KAAK,KAAK,WAAW,GAAG;AAChC,WAAK,SAAS;WACT;AACL,WAAK,OAAO,GAAG,CAAC;;EAEpB;EAEA,KACE,IACA,MACA,QAA6B;AAE7B,QAAI,KAAK,QAAQ,EAAE,GAAG;AACpB,aAAO;;AAET,SAAK,QAAQ,EAAE,IAAI;AACnB,QAAI,MAAe;AACnB,eAAW,MAAM,KAAK,UAAU,EAAE,GAAG;AACnC,YAAM,GAAG,MAAM,MAAM,MAAM,QAAQ;;AAErC,QAAI,OAAO,QAAQ;AACjB,YAAM,KAAK,KAAK,aAAa,MAAM,MAAM,KAAK;;AAEhD,WAAO;EACT;;AAGF,IAAe,iBAAf,MAA6B;;AAM7B,IAAM,iBAAiB,CAA2B,YAAc;AAC9D,SAAO;IACL,OAAO,IAAa,MAA+B;AACjD,aAAO,QAAQ,OAAO,IAAI,IAAI;IAChC;IACA,OAAI;AACF,aAAO,QAAQ,KAAI;IACrB;IACA,SAAM;AACJ,aAAO,QAAQ,OAAM;IACvB;;AAEJ;AAEA,IAAM,qBAAN,cAAiC,eAAc;EAC7C,SAAM;AACJ,WAAO,MAAK;IAAE;EAChB;EACA,OAAI;EAAI;EACR,SAAM;EAAI;;AA7IZ;AAgJA,IAAM,aAAN,cAAyB,eAAc;EAcrC,YAAYD,UAAkB;AAC5B,UAAK;AAuHP;AAeA;AAjJA;;;gCAAUA,SAAQ,aAAa,UAAU,WAAW;AAEpD;iCAAW,IAAI,QAAO;AACtB;AACA;AACA;AAEA,sCAAwD,CAAA;AACxD,gCAAmB;AAIjB,uBAAK,UAAWA;AAEhB,uBAAK,eAAgB,CAAA;AACrB,eAAW,OAAO,SAAS;AACzB,yBAAK,eAAc,GAAG,IAAI,MAAK;AAK7B,cAAM,YAAY,mBAAK,UAAS,UAAU,GAAG;AAC7C,YAAI,EAAE,MAAK,IAAK,mBAAK;AAQrB,cAAM,IAAIA;AAGV,YACE,OAAO,EAAE,4BAA4B,YACrC,OAAO,EAAE,wBAAwB,UAAU,UAC3C;AACA,mBAAS,EAAE,wBAAwB;;AAGrC,YAAI,UAAU,WAAW,OAAO;AAC9B,eAAK,OAAM;AACX,gBAAM,MAAM,mBAAK,UAAS,KAAK,QAAQ,MAAM,GAAG;AAEhD,gBAAM,IAAI,QAAQ,WAAW,mBAAK,WAAU;AAC5C,cAAI,CAAC;AAAK,YAAAA,SAAQ,KAAKA,SAAQ,KAAK,CAAC;;MAGzC;;AAGF,uBAAK,4BAA6BA,SAAQ;AAC1C,uBAAK,sBAAuBA,SAAQ;EACtC;EAEA,OAAO,IAAa,MAA+B;AAEjD,QAAI,CAAC,UAAU,mBAAK,SAAQ,GAAG;AAC7B,aAAO,MAAK;MAAE;;AAIhB,QAAI,mBAAK,aAAY,OAAO;AAC1B,WAAK,KAAI;;AAGX,UAAM,MAAK,6BAAM,cAAa,cAAc;AAC5C,uBAAK,UAAS,GAAG,IAAI,EAAE;AACvB,WAAO,MAAK;AACV,yBAAK,UAAS,eAAe,IAAI,EAAE;AACnC,UACE,mBAAK,UAAS,UAAU,MAAM,EAAE,WAAW,KAC3C,mBAAK,UAAS,UAAU,WAAW,EAAE,WAAW,GAChD;AACA,aAAK,OAAM;;IAEf;EACF;EAEA,OAAI;AACF,QAAI,mBAAK,UAAS;AAChB;;AAEF,uBAAK,SAAU;AAMf,uBAAK,UAAS,SAAS;AAEvB,eAAW,OAAO,SAAS;AACzB,UAAI;AACF,cAAM,KAAK,mBAAK,eAAc,GAAG;AACjC,YAAI;AAAI,6BAAK,UAAS,GAAG,KAAK,EAAE;eACzB,GAAG;MAAA;;AAGd,uBAAK,UAAS,OAAO,CAAC,OAAe,MAAY;AAC/C,aAAO,sBAAK,8BAAL,WAAkB,IAAI,GAAG;IAClC;AACA,uBAAK,UAAS,aAAa,CAAC,SAAoC;AAC9D,aAAO,sBAAK,0CAAL,WAAwB;IACjC;EACF;EAEA,SAAM;AACJ,QAAI,CAAC,mBAAK,UAAS;AACjB;;AAEF,uBAAK,SAAU;AAEf,YAAQ,QAAQ,SAAM;AACpB,YAAM,WAAW,mBAAK,eAAc,GAAG;AAEvC,UAAI,CAAC,UAAU;AACb,cAAM,IAAI,MAAM,sCAAsC,GAAG;;AAG3D,UAAI;AACF,2BAAK,UAAS,eAAe,KAAK,QAAQ;eAEnC,GAAG;MAAA;IAEd,CAAC;AACD,uBAAK,UAAS,OAAO,mBAAK;AAC1B,uBAAK,UAAS,aAAa,mBAAK;AAChC,uBAAK,UAAS,SAAS;EACzB;;AAhIA;AAEA;AACA;AACA;AACA;AAEA;AACA;AA0HA;uBAAkB,SAAC,MAAgC;AAEjD,MAAI,CAAC,UAAU,mBAAK,SAAQ,GAAG;AAC7B,WAAO;;AAET,qBAAK,UAAS,WAAW,QAAQ;AAGjC,qBAAK,UAAS,KAAK,QAAQ,mBAAK,UAAS,UAAU,IAAI;AACvD,SAAO,mBAAK,4BAA2B,KACrC,mBAAK,WACL,mBAAK,UAAS,QAAQ;AAE1B;AAEA;iBAAY,SAAC,OAAe,MAAW;AACrC,QAAM,KAAK,mBAAK;AAChB,MAAI,OAAO,UAAU,UAAU,mBAAK,SAAQ,GAAG;AAC7C,QAAI,OAAO,KAAK,CAAC,MAAM,UAAU;AAC/B,yBAAK,UAAS,WAAW,KAAK,CAAC;;AAIjC,UAAM,MAAM,GAAG,KAAK,mBAAK,WAAU,IAAI,GAAG,IAAI;AAE9C,uBAAK,UAAS,KAAK,QAAQ,mBAAK,UAAS,UAAU,IAAI;AAEvD,WAAO;SACF;AACL,WAAO,GAAG,KAAK,mBAAK,WAAU,IAAI,GAAG,IAAI;;AAE7C;AAGF,IAAMA,WAAU,WAAW;AAGpB,IAAM;;;;;;;;;;EAUX;;;;;;;;EASA;;;;;;;;EASA;AAAM,IACJ,eACF,UAAUA,QAAO,IAAI,IAAI,WAAWA,QAAO,IAAI,IAAI,mBAAkB,CAAE;;;AFtVzE,IAAM,6BAA6B,MAAO;AAGnC,IAAM,cAAc,CAAC,MAAM,SAAS,WAAW,UAAU,CAAC,MAAM;AACtE,QAAM,aAAa,KAAK,MAAM;AAC9B,iBAAe,MAAM,QAAQ,SAAS,UAAU;AAChD,SAAO;AACR;AAEA,IAAM,iBAAiB,CAAC,MAAM,QAAQ,SAAS,eAAe;AAC7D,MAAI,CAAC,gBAAgB,QAAQ,SAAS,UAAU,GAAG;AAClD;AAAA,EACD;AAEA,QAAM,UAAU,yBAAyB,OAAO;AAChD,QAAM,IAAI,WAAW,MAAM;AAC1B,SAAK,SAAS;AAAA,EACf,GAAG,OAAO;AAMV,MAAI,EAAE,OAAO;AACZ,MAAE,MAAM;AAAA,EACT;AACD;AAEA,IAAM,kBAAkB,CAAC,QAAQ,EAAC,sBAAqB,GAAG,eAAe,UAAU,MAAM,KAAK,0BAA0B,SAAS;AAEjI,IAAM,YAAY,YAAU,WAAW,GAAG,UAAU,QAAQ,WACtD,OAAO,WAAW,YAAY,OAAO,YAAY,MAAM;AAE7D,IAAM,2BAA2B,CAAC,EAAC,wBAAwB,KAAI,MAAM;AACpE,MAAI,0BAA0B,MAAM;AACnC,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,OAAO,SAAS,qBAAqB,KAAK,wBAAwB,GAAG;AACzE,UAAM,IAAI,UAAU,qFAAqF,qBAAqB,OAAO,OAAO,qBAAqB,GAAG;AAAA,EACrK;AAEA,SAAO;AACR;AAGO,IAAM,gBAAgB,CAAC,SAAS,YAAY;AAClD,QAAM,aAAa,QAAQ,KAAK;AAEhC,MAAI,YAAY;AACf,YAAQ,aAAa;AAAA,EACtB;AACD;AAEA,IAAM,cAAc,CAAC,SAAS,QAAQ,WAAW;AAChD,UAAQ,KAAK,MAAM;AACnB,SAAO,OAAO,OAAO,IAAI,MAAM,WAAW,GAAG,EAAC,UAAU,MAAM,OAAM,CAAC,CAAC;AACvE;AAGO,IAAM,eAAe,CAAC,SAAS,EAAC,SAAS,aAAa,UAAS,GAAG,mBAAmB;AAC3F,MAAI,YAAY,KAAK,YAAY,QAAW;AAC3C,WAAO;AAAA,EACR;AAEA,MAAI;AACJ,QAAM,iBAAiB,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvD,gBAAY,WAAW,MAAM;AAC5B,kBAAY,SAAS,YAAY,MAAM;AAAA,IACxC,GAAG,OAAO;AAAA,EACX,CAAC;AAED,QAAM,qBAAqB,eAAe,QAAQ,MAAM;AACvD,iBAAa,SAAS;AAAA,EACvB,CAAC;AAED,SAAO,QAAQ,KAAK,CAAC,gBAAgB,kBAAkB,CAAC;AACzD;AAEO,IAAM,kBAAkB,CAAC,EAAC,QAAO,MAAM;AAC7C,MAAI,YAAY,WAAc,CAAC,OAAO,SAAS,OAAO,KAAK,UAAU,IAAI;AACxE,UAAM,IAAI,UAAU,uEAAuE,OAAO,OAAO,OAAO,OAAO,GAAG;AAAA,EAC3H;AACD;AAGO,IAAM,iBAAiB,OAAO,SAAS,EAAC,SAAS,SAAQ,GAAG,iBAAiB;AACnF,MAAI,CAAC,WAAW,UAAU;AACzB,WAAO;AAAA,EACR;AAEA,QAAM,oBAAoB,OAAO,MAAM;AACtC,YAAQ,KAAK;AAAA,EACd,CAAC;AAED,SAAO,aAAa,QAAQ,MAAM;AACjC,sBAAkB;AAAA,EACnB,CAAC;AACF;;;AGrGA,SAAQ,yBAAwB;AAChC,SAAQ,oBAAmB;;;ACDpB,SAAS,SAAS,QAAQ;AAChC,SAAO,WAAW,QACd,OAAO,WAAW,YAClB,OAAO,OAAO,SAAS;AAC5B;AAEO,SAAS,iBAAiB,QAAQ;AACxC,SAAO,SAAS,MAAM,KAClB,OAAO,aAAa,SACpB,OAAO,OAAO,WAAW,cACzB,OAAO,OAAO,mBAAmB;AACtC;;;ADPA,IAAM,sBAAsB,YAAU,kBAAkB,gBAAgB,OAAO,OAAO,SAAS;AAE/F,IAAM,eAAe,CAAC,SAAS,YAAY,WAAW;AACrD,MAAI,OAAO,WAAW,UAAU;AAC/B,YAAQ,UAAU,EAAE,KAAK,kBAAkB,MAAM,CAAC;AAClD,WAAO;AAAA,EACR;AAEA,MAAI,iBAAiB,MAAM,GAAG;AAC7B,YAAQ,UAAU,EAAE,KAAK,MAAM;AAC/B,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,oBAAoB,MAAM,GAAG;AACjC,UAAM,IAAI,UAAU,2EAA2E;AAAA,EAChG;AAEA,MAAI,CAAC,iBAAiB,OAAO,KAAK,GAAG;AACpC,UAAM,IAAI,UAAU,qDAAsD;AAAA,EAC3E;AAEA,UAAQ,UAAU,EAAE,KAAK,OAAO,KAAK;AACrC,SAAO;AACR;AAEO,IAAM,iBAAiB,aAAW;AACxC,MAAI,QAAQ,WAAW,MAAM;AAC5B,YAAQ,aAAa,aAAa,KAAK,QAAW,SAAS,QAAQ;AAAA,EACpE;AAEA,MAAI,QAAQ,WAAW,MAAM;AAC5B,YAAQ,aAAa,aAAa,KAAK,QAAW,SAAS,QAAQ;AAAA,EACpE;AAEA,MAAI,QAAQ,QAAQ,QAAW;AAC9B,YAAQ,UAAU,aAAa,KAAK,QAAW,SAAS,KAAK;AAAA,EAC9D;AACD;;;AEzCA,SAAQ,kBAAkB,oBAAmB;AAC7C,SAAQ,cAAAE,mBAAiB;;;ACDlB,IAAM,oBAAoB,OAAO,QAAQ,EAAC,MAAAC,OAAM,cAAc,SAAS,eAAe,UAAU,eAAe,SAAQ,GAAG,EAAC,YAAY,OAAO,kBAAiB,IAAI,CAAC,MAAM;AAChL,MAAI,CAAC,gBAAgB,MAAM,GAAG;AAC7B,UAAM,IAAI,MAAM,gFAAgF;AAAA,EACjG;AAEA,QAAM,QAAQA,MAAK;AACnB,QAAM,SAAS;AAEf,MAAI;AACH,qBAAiB,SAAS,QAAQ;AACjC,YAAM,YAAY,aAAa,KAAK;AACpC,YAAM,iBAAiB,aAAa,SAAS,EAAE,OAAO,KAAK;AAC3D,kBAAY,EAAC,gBAAgB,OAAO,SAAS,eAAe,UAAU,UAAS,CAAC;AAAA,IACjF;AAEA,qBAAiB,EAAC,OAAO,cAAc,SAAS,eAAe,UAAU,eAAe,UAAS,CAAC;AAClG,WAAO,SAAS,KAAK;AAAA,EACtB,SAAS,OAAO;AACf,UAAM,eAAe,SAAS,KAAK;AACnC,UAAM;AAAA,EACP;AACD;AAEA,IAAM,mBAAmB,CAAC,EAAC,OAAO,SAAS,eAAe,UAAU,eAAe,UAAS,MAAM;AACjG,QAAM,iBAAiB,cAAc,KAAK;AAC1C,MAAI,mBAAmB,QAAW;AACjC,gBAAY,EAAC,gBAAgB,OAAO,SAAS,eAAe,UAAU,UAAS,CAAC;AAAA,EACjF;AACD;AAEA,IAAM,cAAc,CAAC,EAAC,gBAAgB,OAAO,SAAS,eAAe,UAAU,UAAS,MAAM;AAC7F,QAAM,YAAY,QAAQ,cAAc;AACxC,QAAM,YAAY,MAAM,SAAS;AAEjC,MAAI,aAAa,WAAW;AAC3B,gBAAY,gBAAgB,OAAO,UAAU,SAAS;AACtD;AAAA,EACD;AAEA,QAAM,iBAAiB,cAAc,gBAAgB,YAAY,MAAM,MAAM;AAE7E,MAAI,mBAAmB,QAAW;AACjC,gBAAY,gBAAgB,OAAO,UAAU,SAAS;AAAA,EACvD;AAEA,QAAM,IAAI,eAAe;AAC1B;AAEA,IAAM,cAAc,CAAC,gBAAgB,OAAO,UAAU,cAAc;AACnE,QAAM,WAAW,SAAS,gBAAgB,OAAO,SAAS;AAC1D,QAAM,SAAS;AAChB;AAEA,IAAM,kBAAkB,YAAU,OAAO,WAAW,YAAY,WAAW,QAAQ,OAAO,OAAO,OAAO,aAAa,MAAM;AAE3H,IAAM,eAAe,WAAS;AAvD9B;AAwDC,QAAM,cAAc,OAAO;AAE3B,MAAI,gBAAgB,UAAU;AAC7B,WAAO;AAAA,EACR;AAEA,MAAI,gBAAgB,YAAY,UAAU,MAAM;AAC/C,WAAO;AAAA,EACR;AAGA,OAAI,gBAAW,WAAX,mBAAmB,SAAS,QAAQ;AACvC,WAAO;AAAA,EACR;AAEA,QAAM,gBAAgB,eAAe,KAAK,KAAK;AAE/C,MAAI,kBAAkB,wBAAwB;AAC7C,WAAO;AAAA,EACR;AAEA,MAAI,kBAAkB,qBAAqB;AAC1C,WAAO;AAAA,EACR;AAEA,MACC,OAAO,UAAU,MAAM,UAAU,KAC9B,OAAO,UAAU,MAAM,UAAU,KACjC,eAAe,KAAK,MAAM,MAAM,MAAM,wBACxC;AACD,WAAO;AAAA,EACR;AAEA,SAAO;AACR;AAEA,IAAM,EAAC,UAAU,eAAc,IAAI,OAAO;AAEnC,IAAM,iBAAN,cAA6B,MAAM;AAAA,EACzC,OAAO;AAAA,EAEP,cAAc;AACb,UAAM,oBAAoB;AAAA,EAC3B;AACD;;;ACpGO,IAAM,WAAW,WAAS;AAE1B,IAAM,OAAO,MAAM;AAEnB,IAAM,kBAAkB,CAAC,EAAC,SAAQ,MAAM;AAExC,IAAM,oBAAoB,WAAS;AACzC,QAAM,IAAI,MAAM,6CAA6C,OAAO,KAAK,CAAC,EAAE;AAC7E;AAEO,IAAM,gBAAgB,oBAAkB,eAAe;;;ACP9D,eAAsB,uBAAuB,QAAQ,SAAS;AAC7D,SAAO,kBAAkB,QAAQ,oBAAoB,OAAO;AAC7D;AAEA,IAAM,kBAAkB,OAAO,EAAC,UAAU,IAAI,YAAY,CAAC,EAAC;AAE5D,IAAM,iBAAiB,WAAS,YAAY,OAAO,KAAK;AACxD,IAAM,cAAc,IAAI,YAAY;AAEpC,IAAM,gBAAgB,WAAS,IAAI,WAAW,KAAK;AAEnD,IAAM,0BAA0B,WAAS,IAAI,WAAW,MAAM,QAAQ,MAAM,YAAY,MAAM,UAAU;AAExG,IAAM,2BAA2B,CAAC,gBAAgB,cAAc,eAAe,MAAM,GAAG,SAAS;AAGjG,IAAM,sBAAsB,CAAC,gBAAgB,EAAC,UAAU,QAAQ,eAAc,GAAG,WAAW;AAC3F,QAAM,cAAc,qBAAqB,IAAI,kBAAkB,UAAU,MAAM,IAAI,sBAAsB,UAAU,MAAM;AACzH,MAAI,WAAW,WAAW,EAAE,IAAI,gBAAgB,cAAc;AAC9D,SAAO;AACR;AAKA,IAAM,wBAAwB,CAAC,UAAU,WAAW;AACnD,MAAI,UAAU,SAAS,YAAY;AAClC,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,IAAI,YAAY,qBAAqB,MAAM,CAAC;AAChE,MAAI,WAAW,WAAW,EAAE,IAAI,IAAI,WAAW,QAAQ,GAAG,CAAC;AAC3D,SAAO;AACR;AAMA,IAAM,oBAAoB,CAAC,UAAU,WAAW;AAC/C,MAAI,UAAU,SAAS,eAAe;AACrC,aAAS,OAAO,MAAM;AACtB,WAAO;AAAA,EACR;AAEA,QAAM,cAAc,IAAI,YAAY,QAAQ,EAAC,eAAe,qBAAqB,MAAM,EAAC,CAAC;AACzF,MAAI,WAAW,WAAW,EAAE,IAAI,IAAI,WAAW,QAAQ,GAAG,CAAC;AAC3D,SAAO;AACR;AAGA,IAAM,uBAAuB,YAAU,gBAAgB,KAAK,KAAK,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,YAAY,CAAC;AAE1G,IAAM,eAAe;AAErB,IAAM,sBAAsB,CAAC,EAAC,UAAU,OAAM,MAAM,qBAAqB,IAAI,WAAW,SAAS,MAAM,GAAG,MAAM;AAQhH,IAAM,uBAAuB,MAAM,YAAY,YAAY;AAE3D,IAAM,qBAAqB;AAAA,EAC1B,MAAM;AAAA,EACN,cAAc;AAAA,IACb,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,EACT;AAAA,EACA,SAAS;AAAA,EACT,eAAe;AAAA,EACf,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AACX;;;ACjFA,eAAsB,kBAAkB,QAAQ,SAAS;AACxD,MAAI,EAAE,YAAY,aAAa;AAC9B,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACnE;AAEA,MAAI;AACH,WAAO,wBAAwB,MAAM,uBAAuB,QAAQ,OAAO,CAAC;AAAA,EAC7E,SAAS,OAAO;AACf,QAAI,MAAM,iBAAiB,QAAW;AACrC,YAAM,eAAe,wBAAwB,MAAM,YAAY;AAAA,IAChE;AAEA,UAAM;AAAA,EACP;AACD;AAGA,IAAM,0BAA0B,iBAAe,WAAW,OAAO,KAAK,WAAW;;;AChBjF,eAAsB,kBAAkB,QAAQ,SAAS;AACxD,SAAO,kBAAkB,QAAQ,eAAe,OAAO;AACxD;AAEA,IAAM,aAAa,OAAO,EAAC,UAAU,IAAI,aAAa,IAAI,YAAY,EAAC;AAEvE,IAAM,iBAAiB,CAAC,OAAO,EAAC,YAAW,MAAM,YAAY,OAAO,OAAO,EAAC,QAAQ,KAAI,CAAC;AAEzF,IAAM,iBAAiB,CAAC,gBAAgB,EAAC,SAAQ,MAAM,WAAW;AAElE,IAAM,sBAAsB,CAAC,gBAAgB,cAAc,eAAe,MAAM,GAAG,SAAS;AAE5F,IAAM,sBAAsB,CAAC,EAAC,YAAW,MAAM;AAC9C,QAAM,aAAa,YAAY,OAAO;AACtC,SAAO,eAAe,KAAK,SAAY;AACxC;AAEA,IAAM,gBAAgB;AAAA,EACrB,MAAM;AAAA,EACN,cAAc;AAAA,IACb,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,EACT;AAAA,EACA,SAAS;AAAA,EACT,eAAe;AAAA,EACf,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AACX;;;AL/BA,0BAAwB;AAExB,IAAM,uBAAuB,WAAS;AACrC,MAAI,UAAU,QAAW;AACxB,UAAM,IAAI,UAAU,yDAAyD;AAAA,EAC9E;AACD;AAEA,IAAM,eAAe,CAAC,EAAC,OAAO,UAAS,MAAM;AAC5C,MAAI,OAAO,cAAc,UAAU;AAClC,WAAO;AAAA,EACR;AAEA,uBAAqB,KAAK;AAC1B,SAAO,aAAa,SAAS;AAC9B;AAGO,IAAM,kBAAkB,aAAW;AACzC,QAAM,QAAQ,aAAa,OAAO;AAElC,MAAI,SAAS,KAAK,GAAG;AACpB,UAAM,IAAI,UAAU,oDAAoD;AAAA,EACzE;AAEA,SAAO;AACR;AAEA,IAAM,WAAW,CAAC,EAAC,OAAO,UAAS,MAAM;AACxC,MAAI,OAAO,cAAc,UAAU;AAClC,WAAO;AAAA,EACR;AAEA,uBAAqB,KAAK;AAC1B,SAAO,iBAAiB,SAAS;AAClC;AAGO,IAAM,cAAc,CAAC,SAAS,YAAY;AAChD,QAAM,QAAQ,SAAS,OAAO;AAE9B,MAAI,UAAU,QAAW;AACxB;AAAA,EACD;AAEA,MAAI,SAAS,KAAK,GAAG;AACpB,UAAM,KAAK,QAAQ,KAAK;AAAA,EACzB,OAAO;AACN,YAAQ,MAAM,IAAI,KAAK;AAAA,EACxB;AACD;AAGO,IAAM,gBAAgB,CAAC,SAAS,EAAC,IAAG,MAAM;AAChD,MAAI,CAAC,OAAQ,CAAC,QAAQ,UAAU,CAAC,QAAQ,QAAS;AACjD;AAAA,EACD;AAEA,QAAM,YAAQ,oBAAAC,SAAY;AAE1B,MAAI,QAAQ,QAAQ;AACnB,UAAM,IAAI,QAAQ,MAAM;AAAA,EACzB;AAEA,MAAI,QAAQ,QAAQ;AACnB,UAAM,IAAI,QAAQ,MAAM;AAAA,EACzB;AAEA,SAAO;AACR;AAGA,IAAM,kBAAkB,OAAO,QAAQ,kBAAkB;AAExD,MAAI,CAAC,UAAU,kBAAkB,QAAW;AAC3C;AAAA,EACD;AAGA,QAAMC,YAAW,CAAC;AAElB,SAAO,QAAQ;AAEf,MAAI;AACH,WAAO,MAAM;AAAA,EACd,SAAS,OAAO;AACf,WAAO,MAAM;AAAA,EACd;AACD;AAEA,IAAM,mBAAmB,CAAC,QAAQ,EAAC,UAAU,QAAQ,UAAS,MAAM;AACnE,MAAI,CAAC,UAAU,CAAC,QAAQ;AACvB;AAAA,EACD;AAGA,MAAI,aAAa,UAAU,aAAa,SAAS;AAChD,WAAO,kBAAU,QAAQ,EAAC,UAAS,CAAC;AAAA,EACrC;AAEA,MAAI,aAAa,QAAQ,aAAa,UAAU;AAC/C,WAAO,kBAAkB,QAAQ,EAAC,UAAS,CAAC;AAAA,EAC7C;AAEA,SAAO,cAAc,QAAQ,WAAW,QAAQ;AACjD;AAEA,IAAM,gBAAgB,OAAO,QAAQ,WAAW,aAAa;AAC5D,QAAM,SAAS,MAAM,kBAAkB,QAAQ,EAAC,UAAS,CAAC;AAC1D,SAAO,OAAO,SAAS,QAAQ;AAChC;AAGO,IAAM,mBAAmB,OAAO,EAAC,QAAQ,QAAQ,IAAG,GAAG,EAAC,UAAU,QAAQ,UAAS,GAAG,gBAAgB;AAC5G,QAAM,gBAAgB,iBAAiB,QAAQ,EAAC,UAAU,QAAQ,UAAS,CAAC;AAC5E,QAAM,gBAAgB,iBAAiB,QAAQ,EAAC,UAAU,QAAQ,UAAS,CAAC;AAC5E,QAAM,aAAa,iBAAiB,KAAK,EAAC,UAAU,QAAQ,WAAW,YAAY,EAAC,CAAC;AAErF,MAAI;AACH,WAAO,MAAM,QAAQ,IAAI,CAAC,aAAa,eAAe,eAAe,UAAU,CAAC;AAAA,EACjF,SAAS,OAAO;AACf,WAAO,QAAQ,IAAI;AAAA,MAClB,EAAC,OAAO,QAAQ,MAAM,QAAQ,UAAU,MAAM,SAAQ;AAAA,MACtD,gBAAgB,QAAQ,aAAa;AAAA,MACrC,gBAAgB,QAAQ,aAAa;AAAA,MACrC,gBAAgB,KAAK,UAAU;AAAA,IAChC,CAAC;AAAA,EACF;AACD;;;AMnIA,IAAM,0BAA0B,YAAY;AAAC,GAAG,EAAE,YAAY;AAE9D,IAAM,cAAc,CAAC,QAAQ,SAAS,SAAS,EAAE,IAAI,cAAY;AAAA,EAChE;AAAA,EACA,QAAQ,yBAAyB,wBAAwB,QAAQ;AAClE,CAAC;AAGM,IAAM,eAAe,CAAC,SAAS,YAAY;AACjD,aAAW,CAAC,UAAU,UAAU,KAAK,aAAa;AAEjD,UAAM,QAAQ,OAAO,YAAY,aAC9B,IAAI,SAAS,QAAQ,MAAM,WAAW,OAAO,QAAQ,GAAG,IAAI,IAC5D,WAAW,MAAM,KAAK,OAAO;AAEhC,YAAQ,eAAe,SAAS,UAAU,EAAC,GAAG,YAAY,MAAK,CAAC;AAAA,EACjE;AACD;AAGO,IAAM,oBAAoB,aAAW,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC5E,UAAQ,GAAG,QAAQ,CAAC,UAAU,WAAW;AACxC,YAAQ,EAAC,UAAU,OAAM,CAAC;AAAA,EAC3B,CAAC;AAED,UAAQ,GAAG,SAAS,WAAS;AAC5B,WAAO,KAAK;AAAA,EACb,CAAC;AAED,MAAI,QAAQ,OAAO;AAClB,YAAQ,MAAM,GAAG,SAAS,WAAS;AAClC,aAAO,KAAK;AAAA,IACb,CAAC;AAAA,EACF;AACD,CAAC;;;ACnCD,SAAQ,UAAAC,eAAa;AACrB,SAAQ,gBAAAC,qBAAmB;AAE3B,IAAM,gBAAgB,CAAC,MAAM,OAAO,CAAC,MAAM;AAC1C,MAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACzB,WAAO,CAAC,IAAI;AAAA,EACb;AAEA,SAAO,CAAC,MAAM,GAAG,IAAI;AACtB;AAEA,IAAM,mBAAmB;AAEzB,IAAM,YAAY,SAAO;AACxB,MAAI,OAAO,QAAQ,YAAY,iBAAiB,KAAK,GAAG,GAAG;AAC1D,WAAO;AAAA,EACR;AAEA,SAAO,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC;AACtC;AAEO,IAAM,cAAc,CAAC,MAAM,SAAS,cAAc,MAAM,IAAI,EAAE,KAAK,GAAG;AAEtE,IAAM,oBAAoB,CAAC,MAAM,SAAS,cAAc,MAAM,IAAI,EAAE,IAAI,SAAO,UAAU,GAAG,CAAC,EAAE,KAAK,GAAG;AAE9G,IAAM,gBAAgB;AAmBtB,IAAM,kBAAkB,gBAAc;AACrC,QAAM,mBAAmB,OAAO;AAEhC,MAAI,qBAAqB,UAAU;AAClC,WAAO;AAAA,EACR;AAEA,MAAI,qBAAqB,UAAU;AAClC,WAAO,OAAO,UAAU;AAAA,EACzB;AAEA,MACC,qBAAqB,YAClB,eAAe,QACf,EAAE,sBAAsBC,kBACxB,YAAY,YACd;AACD,UAAM,eAAe,OAAO,WAAW;AAEvC,QAAI,iBAAiB,UAAU;AAC9B,aAAO,WAAW;AAAA,IACnB;AAEA,QAAIC,QAAO,SAAS,WAAW,MAAM,GAAG;AACvC,aAAO,WAAW,OAAO,SAAS;AAAA,IACnC;AAEA,UAAM,IAAI,UAAU,eAAe,YAAY,iCAAiC;AAAA,EACjF;AAEA,QAAM,IAAI,UAAU,eAAe,gBAAgB,0BAA0B;AAC9E;AAEA,IAAM,eAAe,CAAC,QAAQ,YAAY,UAAU,SAAS,OAAO,WAAW,KAAK,WAAW,WAAW,IACvG,CAAC,GAAG,QAAQ,GAAG,UAAU,IACzB;AAAA,EACD,GAAG,OAAO,MAAM,GAAG,EAAE;AAAA,EACrB,GAAG,OAAO,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;AAAA,EAChC,GAAG,WAAW,MAAM,CAAC;AACtB;AAED,IAAM,gBAAgB,CAAC,EAAC,WAAW,aAAa,QAAQ,OAAO,SAAQ,MAAM;AAC5E,QAAM,iBAAiB,YAAY,UAAU,IAAI,KAAK;AACtD,QAAM,iBAAiB,eAAe,MAAM,aAAa,EAAE,OAAO,OAAO;AACzE,QAAM,YAAY;AAAA,IACjB;AAAA,IACA;AAAA,IACA,eAAe,WAAW,GAAG;AAAA,EAC9B;AAEA,MAAI,UAAU,YAAY,QAAQ;AACjC,WAAO;AAAA,EACR;AAEA,QAAM,aAAa,YAAY,KAAK;AACpC,QAAM,mBAAmB,MAAM,QAAQ,UAAU,IAC9C,WAAW,IAAI,CAAAC,gBAAc,gBAAgBA,WAAU,CAAC,IACxD,CAAC,gBAAgB,UAAU,CAAC;AAC/B,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,eAAe,SAAS,GAAG;AAAA,EAC5B;AACD;AAEO,IAAM,iBAAiB,CAAC,WAAW,gBAAgB;AACzD,MAAI,SAAS,CAAC;AAEd,aAAW,CAAC,OAAO,QAAQ,KAAK,UAAU,QAAQ,GAAG;AACpD,aAAS,cAAc,EAAC,WAAW,aAAa,QAAQ,OAAO,SAAQ,CAAC;AAAA,EACzE;AAEA,SAAO;AACR;;;ACrHA,SAAQ,gBAAe;AACvB,OAAOC,cAAa;AAEb,IAAM,iBAAiB,SAAS,OAAO,EAAE;AAEhD,IAAM,WAAW,CAAC,OAAO,YAAY,OAAO,KAAK,EAAE,SAAS,SAAS,GAAG;AAExE,IAAM,eAAe,MAAM;AAC1B,QAAM,OAAO,oBAAI,KAAK;AACtB,SAAO,GAAG,SAAS,KAAK,SAAS,GAAG,CAAC,CAAC,IAAI,SAAS,KAAK,WAAW,GAAG,CAAC,CAAC,IAAI,SAAS,KAAK,WAAW,GAAG,CAAC,CAAC,IAAI,SAAS,KAAK,gBAAgB,GAAG,CAAC,CAAC;AAClJ;AAEO,IAAM,aAAa,CAAC,gBAAgB,EAAC,QAAO,MAAM;AACxD,MAAI,CAAC,SAAS;AACb;AAAA,EACD;AAEA,EAAAA,SAAQ,OAAO,MAAM,IAAI,aAAa,CAAC,KAAK,cAAc;AAAA,CAAI;AAC/D;;;AzBDA,IAAM,qBAAqB,MAAO,MAAO;AAEzC,IAAM,SAAS,CAAC,EAAC,KAAK,WAAW,WAAW,aAAa,UAAU,SAAQ,MAAM;AAChF,QAAM,MAAM,YAAY,EAAC,GAAGC,SAAQ,KAAK,GAAG,UAAS,IAAI;AAEzD,MAAI,aAAa;AAChB,WAAO,cAAc,EAAC,KAAK,KAAK,UAAU,SAAQ,CAAC;AAAA,EACpD;AAEA,SAAO;AACR;AAEA,IAAM,kBAAkB,CAAC,MAAM,MAAM,UAAU,CAAC,MAAM;AACrD,QAAM,SAAS,mBAAAC,QAAW,OAAO,MAAM,MAAM,OAAO;AACpD,SAAO,OAAO;AACd,SAAO,OAAO;AACd,YAAU,OAAO;AAEjB,YAAU;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,mBAAmB;AAAA,IACnB,WAAW;AAAA,IACX,aAAa;AAAA,IACb,UAAU,QAAQ,OAAOD,SAAQ,IAAI;AAAA,IACrC,UAAUA,SAAQ;AAAA,IAClB,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,KAAK;AAAA,IACL,aAAa;AAAA,IACb,SAAS;AAAA,IACT,GAAG;AAAA,EACJ;AAEA,UAAQ,MAAM,OAAO,OAAO;AAE5B,UAAQ,QAAQ,eAAe,OAAO;AAEtC,MAAIA,SAAQ,aAAa,WAAWE,MAAK,SAAS,MAAM,MAAM,MAAM,OAAO;AAE1E,SAAK,QAAQ,IAAI;AAAA,EAClB;AAEA,SAAO,EAAC,MAAM,MAAM,SAAS,OAAM;AACpC;AAEA,IAAM,eAAe,CAAC,SAAS,OAAO,UAAU;AAC/C,MAAI,OAAO,UAAU,YAAY,CAACC,QAAO,SAAS,KAAK,GAAG;AAEzD,WAAO,UAAU,SAAY,SAAY;AAAA,EAC1C;AAEA,MAAI,QAAQ,mBAAmB;AAC9B,WAAO,kBAAkB,KAAK;AAAA,EAC/B;AAEA,SAAO;AACR;AAEO,SAAS,MAAM,MAAM,MAAM,SAAS;AAC1C,QAAM,SAAS,gBAAgB,MAAM,MAAM,OAAO;AAClD,QAAM,UAAU,YAAY,MAAM,IAAI;AACtC,QAAM,iBAAiB,kBAAkB,MAAM,IAAI;AACnD,aAAW,gBAAgB,OAAO,OAAO;AAEzC,kBAAgB,OAAO,OAAO;AAE9B,MAAI;AACJ,MAAI;AACH,cAAU,aAAa,MAAM,OAAO,MAAM,OAAO,MAAM,OAAO,OAAO;AAAA,EACtE,SAAS,OAAO;AAEf,UAAM,eAAe,IAAI,aAAa,aAAa;AACnD,UAAM,eAAe,QAAQ,OAAO,UAAU;AAAA,MAC7C;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,IACT,CAAC,CAAC;AACF,iBAAa,cAAc,YAAY;AACvC,WAAO;AAAA,EACR;AAEA,QAAM,iBAAiB,kBAAkB,OAAO;AAChD,QAAM,eAAe,aAAa,SAAS,OAAO,SAAS,cAAc;AACzE,QAAM,cAAc,eAAe,SAAS,OAAO,SAAS,YAAY;AAExE,QAAM,UAAU,EAAC,YAAY,MAAK;AAElC,UAAQ,OAAO,YAAY,KAAK,MAAM,QAAQ,KAAK,KAAK,OAAO,CAAC;AAChE,UAAQ,SAAS,cAAc,KAAK,MAAM,SAAS,OAAO;AAE1D,QAAM,gBAAgB,YAAY;AACjC,UAAM,CAAC,EAAC,OAAO,UAAU,QAAQ,SAAQ,GAAG,cAAc,cAAc,SAAS,IAAI,MAAM,iBAAiB,SAAS,OAAO,SAAS,WAAW;AAChJ,UAAM,SAAS,aAAa,OAAO,SAAS,YAAY;AACxD,UAAM,SAAS,aAAa,OAAO,SAAS,YAAY;AACxD,UAAM,MAAM,aAAa,OAAO,SAAS,SAAS;AAElD,QAAI,SAAS,aAAa,KAAK,WAAW,MAAM;AAC/C,YAAM,gBAAgB,UAAU;AAAA,QAC/B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,YAAY,QAAQ,eAAe,OAAO,QAAQ,SAAS,OAAO,QAAQ,OAAO,UAAU;AAAA,QAC3F,QAAQ,QAAQ;AAAA,MACjB,CAAC;AAED,UAAI,CAAC,OAAO,QAAQ,QAAQ;AAC3B,eAAO;AAAA,MACR;AAEA,YAAM;AAAA,IACP;AAEA,WAAO;AAAA,MACN;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,IACT;AAAA,EACD;AAEA,QAAM,oBAAoB,gBAAQ,aAAa;AAE/C,cAAY,SAAS,OAAO,OAAO;AAEnC,UAAQ,MAAM,cAAc,SAAS,OAAO,OAAO;AAEnD,iBAAe,OAAO;AACtB,eAAa,SAAS,iBAAiB;AACvC,SAAO;AACR;AAEO,SAAS,UAAU,MAAM,MAAM,SAAS;AAC9C,QAAM,SAAS,gBAAgB,MAAM,MAAM,OAAO;AAClD,QAAM,UAAU,YAAY,MAAM,IAAI;AACtC,QAAM,iBAAiB,kBAAkB,MAAM,IAAI;AACnD,aAAW,gBAAgB,OAAO,OAAO;AAEzC,QAAM,QAAQ,gBAAgB,OAAO,OAAO;AAE5C,MAAI;AACJ,MAAI;AACH,aAAS,aAAa,UAAU,OAAO,MAAM,OAAO,MAAM,EAAC,GAAG,OAAO,SAAS,MAAK,CAAC;AAAA,EACrF,SAAS,OAAO;AACf,UAAM,UAAU;AAAA,MACf;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA,IACT,CAAC;AAAA,EACF;AAEA,QAAM,SAAS,aAAa,OAAO,SAAS,OAAO,QAAQ,OAAO,KAAK;AACvE,QAAM,SAAS,aAAa,OAAO,SAAS,OAAO,QAAQ,OAAO,KAAK;AAEvE,MAAI,OAAO,SAAS,OAAO,WAAW,KAAK,OAAO,WAAW,MAAM;AAClE,UAAM,QAAQ,UAAU;AAAA,MACvB;AAAA,MACA;AAAA,MACA,OAAO,OAAO;AAAA,MACd,QAAQ,OAAO;AAAA,MACf,UAAU,OAAO;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,OAAO,SAAS,OAAO,MAAM,SAAS;AAAA,MAChD,YAAY;AAAA,MACZ,QAAQ,OAAO,WAAW;AAAA,IAC3B,CAAC;AAED,QAAI,CAAC,OAAO,QAAQ,QAAQ;AAC3B,aAAO;AAAA,IACR;AAEA,UAAM;AAAA,EACP;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,QAAQ;AAAA,EACT;AACD;AAEA,IAAM,uBAAuB,CAAC,EAAC,OAAO,WAAW,MAAK,MAAM,UAAU,UAAa,cAAc,UAAa,UAAU,SACrH,EAAC,OAAO,UAAS,IACjB,CAAC;AAEJ,IAAM,yBAAyB,CAAC,UAAU,CAAC,OAAO;AAAA,EACjD,aAAa;AAAA,EACb,GAAG,qBAAqB,OAAO;AAAA,EAC/B,GAAG;AACJ;AAEA,SAAS,QAAQ,SAAS;AACzB,WAASC,GAAE,uBAAuB,aAAa;AAC9C,QAAI,CAAC,MAAM,QAAQ,kBAAkB,GAAG;AACvC,aAAO,QAAQ,EAAC,GAAG,SAAS,GAAG,mBAAkB,CAAC;AAAA,IACnD;AAEA,UAAM,CAAC,MAAM,GAAG,IAAI,IAAI,eAAe,oBAAoB,WAAW;AACtE,WAAO,MAAM,MAAM,MAAM,uBAAuB,OAAO,CAAC;AAAA,EACzD;AAEA,EAAAA,GAAE,OAAO,CAAC,cAAc,gBAAgB;AACvC,QAAI,CAAC,MAAM,QAAQ,SAAS,GAAG;AAC9B,YAAM,IAAI,UAAU,0EAA0E;AAAA,IAC/F;AAEA,UAAM,CAAC,MAAM,GAAG,IAAI,IAAI,eAAe,WAAW,WAAW;AAC7D,WAAO,UAAU,MAAM,MAAM,uBAAuB,OAAO,CAAC;AAAA,EAC7D;AAEA,SAAOA;AACR;AAEO,IAAMA,KAAI,QAAQ;;;A0B1QzB,OAAOC,SAAQ;AACf,OAAOC,WAAU;AACjB,OAAO,YAAY;AACnB,OAAOC,SAAQ;AAEf,IAAM,UAAUA,IAAG,SAAS,MAAM;AAClC,IAAM,YAAY,QAAQ,IAAI,kBAAkBD,MAAK,KAAKC,IAAG,QAAQ,GAAG,QAAQ;AAChF,IAAI,WAAWD,MAAK,KAAK,WAAW,cAAc;AAGlD,SAAS,YAAY,KAAqB;AACzC,QAAM,OAAO,OAAO,WAAW,KAAK,EAAE,OAAO,GAAG,EAAE,OAAO,KAAK;AAC9D,QAAME,YAAW,GAAG,KAAK,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;AACrD,SAAOF,MAAK,KAAK,UAAUE,SAAQ;AACpC;AAGA,eAAsB,iBAAiBC,YAAkC;AACxE,QAAMJ,IAAG,MAAMI,YAAW,EAAE,WAAW,KAAK,CAAC;AAC7C,aAAWA;AACZ;AAGA,eAAsB,mBAAmB,KAAsC;AAC9E,MAAI,CAAC,SAAS;AACb,WAAO;AAAA,EACR;AAEA,QAAM,WAAW,YAAY,GAAG;AAChC,MAAI;AACH,UAAM,UAAU,MAAMJ,IAAG,SAAS,UAAU,OAAO;AACnD,WAAO,KAAK,MAAM,OAAO;AAAA,EAC1B,SAAS,KAAc;AACtB,QAAI,eAAe,SAAS,UAAU,OAAO,IAAI,SAAS,UAAU;AACnE,aAAO;AAAA,IACR;AACA,UAAM;AAAA,EACP;AACD;AAGA,eAAsB,mBAAmB,KAAa,MAA8B;AACnF,MAAI,CAAC,SAAS;AACb;AAAA,EACD;AAEA,QAAM,WAAW,YAAY,GAAG;AAChC,QAAM,UAAU,KAAK,UAAU,MAAM,MAAM,CAAC;AAC5C,QAAMA,IAAG,MAAMC,MAAK,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAC1D,QAAMD,IAAG,UAAU,UAAU,SAAS,OAAO;AAC9C;;;AChCA,IAAM,QAAQ,oBAAI,IAAgC;AAElD,SAAS,aAAa,OAAqC;AAC1D,SAAO,QAAQ,SAAS,iBAAiB,SAAS,YAAY,KAAK;AACpE;AAEO,SAAS,eAAe,OAAuC;AACrE,SAAO,QAAQ,SAAS,iBAAiB,SAAS,aAAa,KAAK;AACrE;AAEA,SAAS,SAAS,WAAmD;AACpE,MAAI;AACH,WAAO,KAAK,MAAM,SAAS;AAAA,EAC5B,QAAQ;AACP,WAAO;AAAA,EACR;AACD;AAOA,eAAsB,QACrB,KACA,UAA0C,EAAE,mBAAmB,MAAM,GAC3B;AAC1C,QAAM,EAAE,kBAAkB,IAAI;AAC9B,QAAM,SAAS,MAAM,IAAI,GAAG;AAC5B,MAAI,WAAW,MAAM;AACpB,QAAI,mBAAmB;AACtB,aAAO;AAAA,IACR;AAAA,EACD,WAAW,QAAQ;AAClB,WAAO;AAAA,EACR;AAEA,QAAM,aAAa,MAAM,mBAAmB,GAAG;AAC/C,MAAI,YAAY;AACf,WAAO;AAAA,EACR;AAEA,MAAI;AACH,UAAM,SAAS,MAAM,MAAM,OAAO,CAAC,QAAQ,UAAU,GAAG,CAAC;AACzD,UAAM,UAAU,KAAK,MAAM,OAAO,MAAM;AACxC,UAAM,IAAI,KAAK,OAAO;AACtB,UAAM,mBAAmB,KAAK,OAAO;AACrC,WAAO;AAAA,EACR,SAAS,KAAc;AACtB,QAAI,CAAC,aAAa,GAAG,GAAG;AACvB,YAAM;AAAA,IACP;AACA,UAAM,SAAS,SAAS,IAAI,MAAM;AAClC,QAAI,CAAC,QAAQ;AACZ,YAAM;AAAA,IACP;AACA,UAAM,EAAE,MAAM,SAAS,OAAO,IAAI,OAAO;AAIzC,UAAM,IAAI,KAAK,IAAI;AAEnB,QAAI,qBAAqB,SAAS,QAAQ;AACzC,aAAO;AAAA,IACR;AAEA,UAAM,eAAe,IAAI,MAAM,SAAS,EAAE,OAAO,IAAI,CAAC;AACtD,iBAAa,OAAO;AACpB,iBAAa,UAAU;AACvB,iBAAa,SAAS;AACtB,UAAM;AAAA,EACP;AACD;;;A5BpFA,IAAMK,UAAS;AAEf,UAAU,gBAAgB,KAAqC;AAC9D,QAAM,EAAE,eAAe,CAAC,GAAG,kBAAkB,CAAC,GAAG,mBAAmB,CAAC,EAAE,IAAI;AAC3E,QAAM,kBAAkB,EAAE,GAAG,cAAc,GAAG,iBAAiB,GAAG,iBAAiB;AACnF,aAAW,CAAC,KAAKC,QAAO,KAAK,OAAO,QAAQ,eAAe,GAAG;AAK7D,QAAI,QAAQ,eAAe;AAC1B;AAAA,IACD;AAEA,UAAM,aAAa,cAAAC,QAAO,WAAWD,QAAO;AAC5C,UAAM,GAAG,GAAG,IAAI,aAAa,WAAW,UAAUA,QAAO;AAAA,EAC1D;AACD;AAEA,eAAsB,qBAAqB,KAAsC;AAChF,QAAM,WAAsB,CAAC;AAE7B,mBAAiB,cAAc,gBAAgB,GAAG,GAAG;AACpD,QAAI;AACH,YAAM,EAAE,WAAW,IAAI,MAAM,QAAQ,UAAU;AAC/C,UAAI,CAAC,YAAY;AAChB;AAAA,MACD;AAEA,eAAS,KAAK;AAAA,QACb,QAAAD;AAAA,QACA,UAAU;AAAA,QACV,SAAS,IAAI,UAAU;AAAA,QACvB,MAAM;AAAA,QACN,QAAQ;AAAA,MACT,CAAC;AAAA,IACF,SAAS,KAAc;AACtB,UAAI,eAAe,GAAG,KAAK,IAAI,SAAS,QAAQ;AAC/C,iBAAS,KAAK;AAAA,UACb,QAAAA;AAAA,UACA,UAAU;AAAA,UACV,SAAS,mBAAmB,UAAU;AAAA,UACtC,MAAM;AAAA,UACN,QAAQ;AAAA,QACT,CAAC;AACD;AAAA,MACD;AACA,YAAM;AAAA,IACP;AAAA,EACD;AAEA,SAAO;AACR;;;A6BtDA,SAAS,MAAM,MAAsB;AACpC,SAAO,IAAI,OAAO,IAAI,IAAI,GAAG;AAC9B;AACA,SAAS,MAAMG,QAAuB;AACrC,SAAO,IAAI,OAAO,IAAIA,MAAK,GAAG;AAC/B;AAEA,SAAS,OAAOC,SAAwB;AACvC,SAAO,IAAI,OAAO,IAAIA,OAAM,QAAQ;AACrC;AAEA,SAAS,aAAaA,SAAwB;AAC7C,SAAO,IAAI,OAAO,SAASA,OAAM,QAAQ;AAC1C;AAEA,IAAM,yBAAmC;AAAA,EACxC,MAAM,KAAK;AAAA,EACX,MAAM,MAAM;AAAA,EACZ,MAAM,KAAK;AAAA,EACX,MAAM,IAAI;AAAA,EACV,OAAO,YAAY;AAAA,EACnB,OAAO,SAAS;AAAA,EAChB,OAAO,OAAO;AAAA,EACd,OAAO,MAAM;AAAA,EACb,OAAO,eAAe;AAAA,EACtB,OAAO,SAAS;AAAA,EAChB,OAAO,OAAO;AAAA,EACd,OAAO,KAAK;AAAA,EACZ,OAAO,YAAY;AAAA,EACnB,OAAO,SAAS;AAAA,EAChB,OAAO,YAAY;AAAA,EACnB,OAAO,SAAS;AAAA,EAChB,MAAM,QAAQ;AAAA,EACd,MAAM,QAAQ;AACf;AAEA,IAAM,mBAA6B;AAAA,EAClC,MAAM,QAAQ;AAAA,EACd,OAAO,eAAe;AAAA,EACtB,OAAO,kBAAkB;AAAA,EACzB,OAAO,eAAe;AAAA,EACtB,aAAa,eAAe;AAAA,EAC5B,aAAa,kBAAkB;AAAA,EAC/B,aAAa,eAAe;AAC7B;AAEA,IAAM,iBAA2B;AAAA,EAChC,MAAM,MAAM;AAAA,EACZ,MAAM,YAAY;AAAA,EAClB,MAAM,SAAS;AAAA,EACf,OAAO,OAAO;AAAA,EACd,MAAM,OAAO;AACd;AAEA,IAAM,qBAA+B;AAAA,EACpC,MAAM,UAAU;AAAA,EAChB,OAAO,WAAW;AAAA,EAClB,aAAa,WAAW;AACzB;AAEA,IAAM,sBAAgC;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,SAAS,MAAM,MAAgB,YAA6B;AAC3D,SAAO,KAAK,KAAK,CAAC,OAAO,WAAW,MAAM,EAAE,CAAC;AAC9C;AAEO,SAAS,uBAAuB,KAAkB,YAA6B;AAErF,MAAI,oBAAoB,SAAS,UAAU,GAAG;AAC7C,WAAO;AAAA,EACR;AAEA,QAAM,WAAW,IAAI,YAAY,CAAC;AAGlC,MAAI,CAAC,SAAS,SAAS,QAAQ,KAAK,MAAM,kBAAkB,UAAU,GAAG;AACxE,WAAO;AAAA,EACR;AAGA,MAAI,CAAC,SAAS,SAAS,MAAM,KAAK,MAAM,gBAAgB,UAAU,GAAG;AACpE,WAAO;AAAA,EACR;AAGA,MAAI,CAAC,SAAS,SAAS,UAAU,KAAK,MAAM,oBAAoB,UAAU,GAAG;AAC5E,WAAO;AAAA,EACR;AAGA,SAAO,MAAM,wBAAwB,UAAU;AAChD;;;ACjGA,IAAM,WAAiC;AAAA,EACtC,EAAE,SAAS,YAAY,SAAS,0DAA0D;AAAA,EAC1F,EAAE,SAAS,UAAU,SAAS,0DAA0D;AAAA,EACxF,EAAE,SAAS,UAAU,SAAS,sDAAsD;AACrF;AAEO,SAAS,qBAAqB,YAAgD;AACpF,SAAO,SAAS,KAAK,CAAC,OAAO,GAAG,YAAY,UAAU,KAAK;AAC5D;;;ACTA,IAAMC,UAAS;AACf,IAAM,WAAW,SAAS;AAE1B,UAAU,cACT,OACAC,OACqB;AACrB,MAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACxC;AAAA,EACD;AAEA,QAAM,OAAO,OAAO,KAAK,KAAK;AAC9B,MAAI,KAAK,WAAW,GAAG;AACtB;AAAA,EACD;AAEA,MAAI,KAAK,SAAS,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS;AAClD,UAAM,WAAWA,MAAK,IAAI,CAAC,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;AACtD,UAAM;AAAA,MACL,QAAAD;AAAA,MACA;AAAA,MACA,SAAS,kDAAkD,QAAQ;AAAA,MACnE,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AAAA,EACD;AAEA,aAAW,OAAO,MAAM;AACvB,WAAO,cAAc,MAAM,GAAG,GAAG,CAAC,GAAGC,OAAM,GAAG,CAAC;AAAA,EAChD;AACD;AAEO,UAAU,kBAAkB,KAAsC;AACxE,MAAI,IAAI,SAAS;AAChB,WAAO,cAAc,IAAI,SAAS,CAAC,CAAC;AAAA,EACrC;AACD;;;ACxCA,IAAAC,iBAAmB;;;ACKZ,IAAM,eAAuD;AAAA,EACnE,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;AAAA,EAC/B,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;AAAA,EAC/B,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;AAAA,EAC/B,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;AAAA,EAC/B,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;AAAA,EAC/B,CAAC,SAAS,EAAE,KAAK,aAAa,CAAC;AAAA,EAC/B,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AAAA,EAChC,CAAC,UAAU,EAAE,KAAK,aAAa,CAAC;AACjC;;;ADhBA,IAAMC,UAAS;AACf,IAAMC,YAAW,SAAS;AAEnB,UAAU,gBAAgB,KAAsC;AATvE;AAUC,MAAI,GAAC,SAAI,YAAJ,mBAAa,OAAM;AACvB,UAAM;AAAA,MACL,QAAAD;AAAA,MACA,UAAAC;AAAA,MACA,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AACA;AAAA,EACD;AAEA,QAAM,QAAQ,IAAI,QAAQ;AAC1B,MAAI,CAAC,eAAAC,QAAO,WAAW,KAAK,GAAG;AAC9B,UAAM;AAAA,MACL,QAAAF;AAAA,MACA,UAAAC;AAAA,MACA,SAAS,iBAAiB,KAAK;AAAA,MAC/B,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AACA;AAAA,EACD;AAEA,aAAW,CAACE,UAAS,UAAU,KAAK,cAAc;AACjD,QAAI,CAAC,WAAW,KAAK;AACpB;AAAA,IACD;AAEA,UAAM,WAAWA,SAAQ,QAAQ,UAAU,KAAK;AAChD,UAAM,SAAS,eAAAD,QAAO,MAAM,QAAQ;AACpC,QAAI,CAAC,eAAAA,QAAO,UAAU,UAAU,KAAK,GAAG;AACvC;AAAA,IACD;AACA,UAAM,gBAAe,iCAAQ,UAAS,MAAM,MAAK,iCAAQ,UAAS,EAAE;AACpE,UAAM,UAAU,qCAAqC,WAAW,eAAe,WAAW,GAAG;AAC7F,UAAM;AAAA,MACL,QAAAF;AAAA,MACA,UAAAC;AAAA,MACA;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AACA;AAAA,EACD;AACD;;;AEtDA,IAAAG,iBAAoC;AAKpC,IAAMC,UAAS;AAEf,gBAAgB,oBAAoB,KAAkB,YAA6C;AAClG,QAAM,UAAU,aAAa,MAAM,QAAQ,YAAY,EAAE,mBAAmB,KAAK,CAAC,IAAI;AACtF,MAAI,CAAC,SAAS;AACb;AAAA,EACD;AACA,aAAW,CAAC,KAAKC,QAAO,KAAK,OAAO,QAAQ,QAAQ,gBAAgB,CAAC,CAAC,GAAG;AAKxE,QAAI,QAAQ,eAAe;AAC1B;AAAA,IACD;AAEA,UAAM,aAAa,eAAAC,QAAO,WAAWD,QAAO;AAC5C,UAAM,OAAO,GAAG,GAAG,IAAI,aAAa,WAAW,UAAUA,QAAO;AAEhE,UAAM;AACN,WAAO,oBAAoB,KAAK,IAAI;AAAA,EACrC;AACD;AAEA,eAAe,iBACd,YACA,aACA,oBAC0B;AAjC3B;AAkCC,QAAM,UAAU,MAAM,QAAQ,UAAU;AACxC,QAAM,cAAa,aAAQ,YAAR,mBAAiB;AACpC,MAAI,CAAC,YAAY;AAChB,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,eAAAC,QAAO,UAAU,aAAa,UAAU,GAAG;AAC/C,WAAO;AAAA,MACN,QAAAF;AAAA,MACA,UAAU;AAAA,MACV,SAAS,8BAA8B,UAAU,WAAW,UAAU,gDAAgD,kBAAkB;AAAA,MACxI,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AAAA,EACD;AAEA,SAAO;AACR;AAEA,eAAsB,uBAAuB,KAAsC;AArDnF;AAsDC,QAAM,sBAAqB,SAAI,YAAJ,mBAAa;AACxC,MAAI,CAAC,oBAAoB;AACxB,WAAO,CAAC;AAAA,EACT;AAEA,QAAM,cAAc,eAAAE,QAAO,WAAW,kBAAkB;AACxD,MAAI,CAAC,aAAa;AACjB,UAAM,IAAI,MAAM,sCAAsC,kBAAkB,GAAG;AAAA,EAC5E;AAEA,QAAM,WAAsB,CAAC;AAC7B,QAAM,UAAU,oBAAI,IAAY;AAEhC,mBAAiB,cAAc,oBAAoB,GAAG,GAAG;AACxD,QAAI,QAAQ,IAAI,UAAU,GAAG;AAC5B;AAAA,IACD;AAEA,YAAQ,IAAI,UAAU;AAEtB,QAAI;AACH,YAAM,UAAU,MAAM,iBAAiB,YAAY,aAAa,kBAAkB;AAClF,UAAI,SAAS;AACZ,iBAAS,KAAK,OAAO;AAAA,MACtB;AAAA,IACD,SAAS,KAAc;AACtB,UAAI,eAAe,GAAG,KAAK,IAAI,SAAS,QAAQ;AAC/C,iBAAS,KAAK;AAAA,UACb,QAAAF;AAAA,UACA,UAAU;AAAA,UACV,SAAS,8BAA8B,UAAU;AAAA,UACjD,MAAM;AAAA,UACN,QAAQ;AAAA,QACT,CAAC;AACD;AAAA,MACD;AACA,YAAM;AAAA,IACP;AAAA,EACD;AAEA,SAAO;AACR;;;AC/FA,IAAAG,iBAAmB;AAKnB,IAAMC,UAAS;AACf,IAAMC,YAAW,SAAS;AAEnB,UAAU,wBAAwB,KAAsC;AAR/E;AASC,MAAI,GAAC,SAAI,YAAJ,mBAAa,OAAM;AACvB;AAAA,EACD;AAEA,QAAM,qBAAqB;AAAA,IAC1B,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,IACP,GAAG,IAAI;AAAA,EACR;AACA,MAAI,CAAC,mBAAmB,aAAa,GAAG;AACvC;AAAA,EACD;AAEA,QAAM,kBAAkB,mBAAmB,aAAa;AACxD,MAAI,oBAAoB,UAAU;AACjC;AAAA,EACD;AAEA,QAAM,cAAc,eAAAC,QAAO,WAAW,IAAI,QAAQ,IAAI;AACtD,QAAM,eAAe,eAAAA,QAAO,WAAW,eAAe;AAEtD,MAAI,CAAC,eAAe,CAAC,cAAc;AAClC;AAAA,EACD;AAEA,MAAI,aAAa,UAAU,YAAY,OAAO;AAC7C,UAAM;AAAA,MACL,QAAAF;AAAA,MACA,UAAAC;AAAA,MACA,SAAS,gBAAgB,aAAa,KAAK,iCAAiC,YAAY,KAAK;AAAA,MAC7F,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AAAA,EACD;AACD;;;AChBA,IAAM,SAAsC;AAAA,EAC3C,aAAa,CAAC,SAAS,YAAY,QAAQ;AAAA,EAC3C,UAAU,CAAC,SAAS,WAAW,QAAQ;AAAA,EACvC,UAAU,CAAC,SAAS,YAAY,QAAQ;AAAA,EACxC,MAAM,CAAC,SAAS,QAAQ;AAAA,EACxB,SAAS,CAAC,SAAS,YAAY,QAAQ;AAAA,EACvC,QAAQ,CAAC,SAAS,QAAQ;AAAA,EAC1B,YAAY,CAAC,SAAS,YAAY;AACnC;AAEA,SAAS,aAAa,KAAkB,SAA8C;AACrF,QAAM,WAAsB,CAAC;AAE7B,aAAW,CAAC,OAAO,UAAU,KAAK,OAAO,QAAQ,MAAM,GAAG;AACzD,QAAI;AACH,iBAAW,aAAa,YAAY;AACnC,kBAAU,OAAO,IAAI,KAAK,CAAC;AAAA,MAC5B;AAAA,IACD,SAAS,OAAO;AACf,UACC,iBAAiB,mBACjB,MAAM,cAAc,QAAQ,QAC5B,QAAQ,qBACP;AACD;AAAA,MACD;AAEA,UAAI,iBAAiB,OAAO;AAC3B,iBAAS,KAAK;AAAA,UACb,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,SAAS,MAAM;AAAA,UACf,MAAM;AAAA,UACN,QAAQ;AAAA,QACT,CAAC;AAAA,MACF,OAAO;AACN,cAAM;AAAA,MACP;AAAA,IACD;AAAA,EACD;AAEA,SAAO;AACR;AAEA,SAAS,mBAAmB,KAAkB,SAA8C;AAC3F,QAAM,WAAsB,CAAC;AAC7B,QAAM,EAAE,eAAe,CAAC,GAAG,kBAAkB,CAAC,GAAG,mBAAmB,CAAC,EAAE,IAAI;AAC3E,QAAM,kBAAkB,EAAE,GAAG,cAAc,GAAG,iBAAiB,GAAG,iBAAiB;AAEnF,aAAW,cAAc,OAAO,KAAK,YAAY,GAAG;AAEnD,QAAI,QAAQ,0BAA0B,WAAW,MAAM,WAAW,GAAG;AACpE;AAAA,IACD;AAEA,QAAI,uBAAuB,KAAK,UAAU,GAAG;AAC5C,eAAS,KAAK;AAAA,QACb,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS,GAAG,UAAU;AAAA,QACtB,MAAM;AAAA,QACN,QAAQ;AAAA,MACT,CAAC;AAAA,IACF;AAAA,EACD;AAEA,aAAW,cAAc,OAAO,KAAK,eAAe,GAAG;AACtD,UAAME,YAAW,qBAAqB,UAAU;AAChD,QAAIA,WAAU;AACb,eAAS,KAAK;AAAA,QACb,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,SAAS,GAAG,UAAU,8CAA8CA,UAAS,OAAO;AAAA,QACpF,MAAM;AAAA,QACN,QAAQ;AAAA,MACT,CAAC;AAAA,IACF;AAAA,EACD;AAEA,SAAO;AACR;AAEA,eAAsB,kBACrB,KACA,UACA,UAAoC,CAAC,GACjB;AACpB,QAAM,WAAsB;AAAA,IAC3B,GAAI,MAAM,qBAAqB,GAAG;AAAA,IAClC,GAAI,MAAM,uBAAuB,GAAG;AAAA,IACpC,GAAG,kBAAkB,GAAG;AAAA,IACxB,GAAG,aAAa,KAAK,OAAO;AAAA,IAC5B,GAAG,mBAAmB,KAAK,OAAO;AAAA,IAClC,GAAG,gBAAgB,GAAG;AAAA,IACtB,GAAG,wBAAwB,GAAG;AAAA,EAC/B;AAEA,MAAI,SAAS,WAAW,GAAG;AAC1B,WAAO,CAAC;AAAA,EACT;AAEA,SAAO;AAAA,IACN;AAAA,MACC;AAAA,MACA;AAAA,MACA,YAAY,SAAS,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,EAAE;AAAA,MACvD,cAAc,SAAS,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC,EAAE;AAAA,MACzD,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IACtB;AAAA,EACD;AACD;;;ACtIA,SAAS,YAAY,KAA4B;AAChD,MAAI,CAAC,IAAI,KAAK;AACb,WAAO,CAAC;AAAA,EACT;AACA,SAAO,OAAO,IAAI,QAAQ,WAAW,CAAC,IAAI,GAAG,IAAI,OAAO,OAAO,IAAI,GAAG;AACvE;AAEA,eAAsB,cAAc,KAAkB,SAAyC;AAC9F,QAAM,UAAoB,CAAC;AAC3B,QAAM,WAAW,YAAY,GAAG;AAChC,QAAM,WAAW,MAAM,eAAe,SAAS,QAAQ;AAEvD,aAAW,CAAC,UAAU,OAAO,KAAK,OAAO,QAAQ,QAAQ,GAAG;AAC3D,UAAM,OAAO,QAAQ,SAAS,OAAO;AACrC,QAAI,KAAK,MAAM,aAAa,GAAG;AAC9B;AAAA,IACD;AACA,YAAQ,KAAK;AAAA,MACZ,UAAU;AAAA,QACT;AAAA,UACC,QAAQ;AAAA,UACR,UAAU;AAAA,UACV,SAAS;AAAA,UACT,MAAM;AAAA,UACN,QAAQ;AAAA,QACT;AAAA,MACD;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,mBAAmB;AAAA,MACnB,qBAAqB;AAAA,IACtB,CAAC;AAAA,EACF;AAEA,SAAO;AACR;;;AChCA,eAAsB,OACrB,KACA,SACA,SACA,UAAyB,CAAC,GACN;AACpB,SAAO;AAAA,IACN,GAAI,MAAM,cAAc,KAAK,OAAO;AAAA,IACpC,GAAI,MAAM,kBAAkB,KAAK,SAAS,OAAO;AAAA,IACjD,GAAI,MAAM,cAAc,KAAK,OAAO;AAAA,EACrC;AACD;;;ACnBA,OAAOC,WAAU;AAGjB,SAASC,WAAU,MAAsB;AACxC,SAAO,KAAK,QAAQ,KAAK,GAAG,EAAE,QAAQ,MAAM,EAAE;AAC/C;AAEO,SAAS,gBAAgB,KAAkB,SAAyB;AAC1E,QAAM,OAAOA,WAAU,IAAI,IAAI;AAC/B,SAAOD,MAAK,KAAKA,MAAK,QAAQ,OAAO,GAAG,GAAG,IAAI,IAAI,IAAI,OAAO,MAAM;AACrE;;;AxEMA,IAAM,cAAcE,eAAc,IAAI,IAAI,mBAAmB,YAAY,GAAG,CAAC;AAC7E,IAAM,EAAE,QAAQ,IAAI,KAAK,MAAMC,cAAa,aAAa,OAAO,CAAC;AAEjE,IAAM,eAAe;AAerB,eAAe,eAAgC;AAC9C,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACvC,eAAAC,QAAI,KAAK,CAAC,KAAKC,OAAM,OAAO;AAC3B,UAAI,KAAK;AACR,eAAO,GAAG;AACV;AAAA,MACD;AAEA,YAAM,KAAKC,mBAAkB,IAAI,EAAE,IAAI,WAAW,KAAK,CAAC;AACxD,cAAQ,MAAM,KAAK,EAAE;AACrB,SAAG,GAAG,UAAU,MAAM;AACrB,gBAAQD,KAAI;AAAA,MACb,CAAC;AACD,SAAG,GAAG,SAAS,CAACE,SAAQ;AACvB,eAAOA,IAAG;AAAA,MACX,CAAC;AAAA,IACF,CAAC;AAAA,EACF,CAAC;AACF;AAEA,eAAe,eACd,MACA,sBAC0E;AAE1E,MAAI,KAAK,SAAS;AACjB,WAAO;AAAA,MACN,KAAK,KAAK,MAAM,MAAMC,IAAG,SAAS,KAAK,SAAS,OAAO,CAAC;AAAA,MACxD,SAAS,KAAK;AAAA,IACf;AAAA,EACD;AAGA,MAAI,KAAK,SAAS;AACjB,UAAM,WAAW,MAAM,eAAe,EAAE,UAAU,KAAK,QAAQ,GAAG,CAAC,YAAY,CAAC;AAChF,UAAM,MAAM,KAAK,MAAM,SAAS,YAAY,EAAE,SAAS,OAAO,CAAC;AAC/D,WAAO;AAAA,MACN;AAAA,MACA,SAASH,MAAK;AAAA,QACb,uBAAuB,GAAG,IAAI,IAAI,IAAI,IAAI,OAAO,SAAS,KAAK;AAAA,QAC/D;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAGA,QAAM,UAAU,MAAM,OAAO,YAAY;AACzC,MAAI,SAAS;AACZ,UAAM,UAAUA,MAAK,SAAS,QAAQ,IAAI,GAAG,OAAO;AACpD,WAAO;AAAA,MACN,KAAK,KAAK,MAAM,MAAMG,IAAG,SAAS,SAAS,OAAO,CAAC;AAAA,MACnD,SAAS;AAAA,IACV;AAAA,EACD;AAEA,SAAO,EAAE,KAAK,QAAW,SAAS,OAAU;AAC7C;AAEA,eAAe,MAAqB;AACnC,QAAM,SAAS,IAAI,+BAAe;AAAA,IACjC,aAAa;AAAA,EACd,CAAC;AAED,SAAO,aAAa,MAAM,aAAa,EAAE,QAAQ,WAAW,QAAQ,CAAC;AACrE,SAAO,aAAa,MAAM,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC3E,SAAO,aAAa,MAAM,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAChF,SAAO,aAAa,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,SAAO,aAAa,8BAA8B;AAAA,IACjD,QAAQ;AAAA,IACR,MAAM;AAAA,EACP,CAAC;AACD,SAAO,aAAa,2BAA2B;AAAA,IAC9C,QAAQ;AAAA,IACR,MAAM;AAAA,EACP,CAAC;AAED,QAAM,OAAO,OAAO,WAAW;AAE/B,MAAI,KAAK,OAAO;AACf,UAAM,iBAAiB,KAAK,KAAK;AAAA,EAClC;AAKA,MAAI,uBAAuB;AAC3B,MAAI,KAAK,YAAY,KAAK;AACzB,SAAK,UAAU,MAAM,aAAa;AAClC,2BAAuB;AAAA,EACxB;AAEA,QAAM,EAAE,KAAK,QAAQ,IAAI,MAAM,eAAe,MAAM,oBAAoB;AAExE,MAAI,CAAC,KAAK;AACT,YAAQ,MAAM,+EAA+E;AAC7F,YAAQ,WAAW;AACnB;AAAA,EACD;AAEA,QAAM,UAAuB;AAAA,IAC5B,UAAU,KAAK,WAAW,gBAAgB,KAAK,OAAO;AAAA,IACtD,YAAY,uBAAuB,GAAG,IAAI,IAAI,IAAI,IAAI,OAAO,SAAS;AAAA,EACvE;AACA,MAAI,CAAC,WAAW,QAAQ,QAAQ,GAAG;AAClC,YAAQ,MAAM,IAAI,QAAQ,QAAQ,sDAAsD;AACxF,YAAQ,WAAW;AACnB;AAAA,EACD;AAEA,iBAAe,IAAI,IAAI;AAEvB,QAAM,UAAyB;AAAA,IAC9B,wBAAwB,KAAK;AAAA,IAC7B,qBAAqB,KAAK;AAAA,EAC3B;AAEA,QAAM,UAAU,MAAM,OAAO,KAAK,SAAS,SAAS,OAAO;AAC3D,QAAM,SAAS,QAAQ,OAAO;AAC9B,UAAQ,OAAO,MAAM,MAAM;AAE3B,QAAM,cAAc,QAAQ,OAAO,CAAC,KAAK,WAAW;AACnD,WAAO,MAAM,OAAO;AAAA,EACrB,GAAG,CAAC;AAEJ,UAAQ,WAAW,cAAc,IAAI,IAAI;AAC1C;AAEA,IAAI,EAAE,MAAM,CAAC,QAAQ;AACpB,UAAQ,MAAM,GAAG;AACjB,UAAQ,WAAW;AACpB,CAAC;",
6
+ "names": ["indent", "fs", "path", "renames", "key", "prefix", "lines", "version", "aliases", "args", "action", "ArgumentParser", "identity", "start_index", "option_string", "arg_strings", "match", "fs", "os", "path", "crypto", "err", "p", "ret", "res", "require_minipass", "p", "ret", "res", "Buffer", "constants", "global", "prefix", "global", "path", "path", "global", "s", "path", "fs", "path", "prefix", "Node", "path", "fs", "stat", "fs", "_size", "path", "buf", "noop", "chunk", "ret", "fs", "path", "path", "fs", "path", "cb", "er", "path", "fs", "path", "path", "path", "made", "path", "fs", "version", "path", "fs", "path", "er", "fs", "path", "cache", "er", "created", "normalize", "path", "run", "fn", "fs", "fs", "path", "normalize", "crypto", "cache", "er", "fs", "path", "require_constants", "version", "require_parse", "version", "version", "version", "version", "prefix", "version", "version", "match", "cache", "version", "version", "version", "require_valid", "version", "version", "version", "version", "require_semver", "constants", "fs", "path", "fs", "path", "fs", "path", "path", "pathKey", "path", "match", "path", "fs", "require_parse", "path", "escape", "isEmpty", "createWriteStream", "readFileSync", "fs", "path", "fileURLToPath", "path", "process", "run", "process", "fileURLToPath", "toPath", "directory", "path", "toPath", "__commonJS", "init", "__toESM", "reset", "bold", "dim", "underline", "yellow", "red", "Severity", "table", "path", "regexp", "regexp", "regexp", "regexp", "regexp", "regexp", "regexp", "regexp", "regexp", "filename", "fs", "filename", "tar", "fs", "url", "Buffer", "path", "process", "process", "path", "process", "path", "onetime", "process", "constants", "signals", "signals", "constants", "process", "prefix", "process", "global", "setTimeout", "init", "mergeStream", "setTimeout", "Buffer", "ChildProcess", "ChildProcess", "Buffer", "expression", "process", "process", "crossSpawn", "path", "Buffer", "$", "fs", "path", "os", "filename", "directory", "ruleId", "version", "semver", "scope", "prefix", "ruleId", "path", "import_semver", "ruleId", "severity", "semver", "version", "import_semver", "ruleId", "version", "semver", "import_semver", "ruleId", "severity", "semver", "obsolete", "path", "normalize", "fileURLToPath", "readFileSync", "tmp", "path", "createWriteStream", "err", "fs"]
7
7
  }