{
  "version": 3,
  "sources": ["../node_modules/argparse/lib/sub.js", "../node_modules/argparse/lib/textwrap.js", "../node_modules/argparse/argparse.js", "../node_modules/semver/internal/debug.js", "../node_modules/semver/internal/constants.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/internal/lrucache.js", "../node_modules/semver/functions/compare.js", "../node_modules/semver/functions/eq.js", "../node_modules/semver/functions/neq.js", "../node_modules/semver/functions/gt.js", "../node_modules/semver/functions/gte.js", "../node_modules/semver/functions/lt.js", "../node_modules/semver/functions/lte.js", "../node_modules/semver/functions/cmp.js", "../node_modules/semver/classes/comparator.js", "../node_modules/semver/classes/range.js", "../node_modules/semver/ranges/min-version.js", "../src/cli.ts", "../src/get-min-peer.ts", "../src/read-package-json.ts", "../node_modules/find-up/index.js", "../node_modules/locate-path/index.js", "../node_modules/yocto-queue/index.js", "../node_modules/p-limit/index.js", "../node_modules/p-locate/index.js", "../node_modules/unicorn-magic/node.js", "../src/locate-package-json.ts"],
  "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", "'use strict'\n\nconst debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n", "'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n  'major',\n  'premajor',\n  'minor',\n  'preminor',\n  'patch',\n  'prepatch',\n  'prerelease',\n]\n\nmodule.exports = {\n  MAX_LENGTH,\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_SAFE_INTEGER,\n  RELEASE_TYPES,\n  SEMVER_SPEC_VERSION,\n  FLAG_INCLUDE_PRERELEASE: 0b001,\n  FLAG_LOOSE: 0b010,\n}\n", "'use strict'\n\nconst {\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n  ['\\\\s', 1],\n  ['\\\\d', MAX_LENGTH],\n  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n  for (const [token, max] of safeRegexReplacements) {\n    value = value\n      .split(`${token}*`).join(`${token}{0,${max}}`)\n      .split(`${token}+`).join(`${token}{1,${max}}`)\n  }\n  return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n  const safe = makeSafeRegex(value)\n  const index = R++\n  debug(name, index, value)\n  t[name] = index\n  src[index] = value\n  safeSrc[index] = safe\n  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n  safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numeric identifiers include numeric identifiers but can be longer.\n// Therefore non-numeric identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange 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", "'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n  if (!options) {\n    return emptyOpts\n  }\n\n  if (typeof options !== 'object') {\n    return looseOption\n  }\n\n  return options\n}\nmodule.exports = parseOptions\n", "'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n  if (typeof a === 'number' && typeof b === 'number') {\n    return a === b ? 0 : a < b ? -1 : 1\n  }\n\n  const anum = numeric.test(a)\n  const bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n  compareIdentifiers,\n  rcompareIdentifiers,\n}\n", "'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n        version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    if (this.major < other.major) {\n      return -1\n    }\n    if (this.major > other.major) {\n      return 1\n    }\n    if (this.minor < other.minor) {\n      return -1\n    }\n    if (this.minor > other.minor) {\n      return 1\n    }\n    if (this.patch < other.patch) {\n      return -1\n    }\n    if (this.patch > other.patch) {\n      return 1\n    }\n    return 0\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('build compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier, identifierBase) {\n    if (release.startsWith('pre')) {\n      if (!identifier && identifierBase === false) {\n        throw new Error('invalid increment argument: identifier is empty')\n      }\n      // Avoid an invalid semver results\n      if (identifier) {\n        const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n        if (!match || match[1] !== identifier) {\n          throw new Error(`invalid identifier: ${identifier}`)\n        }\n      }\n    }\n\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier, identifierBase)\n        this.inc('pre', identifier, identifierBase)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier, identifierBase)\n        }\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'release':\n        if (this.prerelease.length === 0) {\n          throw new Error(`version ${this.raw} is not a prerelease`)\n        }\n        this.prerelease.length = 0\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre': {\n        const base = Number(identifierBase) ? 1 : 0\n\n        if (this.prerelease.length === 0) {\n          this.prerelease = [base]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            if (identifier === this.prerelease.join('.') && identifierBase === false) {\n              throw new Error('invalid increment argument: identifier already exists')\n            }\n            this.prerelease.push(base)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          let prerelease = [identifier, base]\n          if (identifierBase === false) {\n            prerelease = [identifier]\n          }\n          if (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", "'use strict'\n\nclass LRUCache {\n  constructor () {\n    this.max = 1000\n    this.map = new Map()\n  }\n\n  get (key) {\n    const value = this.map.get(key)\n    if (value === undefined) {\n      return undefined\n    } else {\n      // Remove the key from the map and add it to the end\n      this.map.delete(key)\n      this.map.set(key, value)\n      return value\n    }\n  }\n\n  delete (key) {\n    return this.map.delete(key)\n  }\n\n  set (key, value) {\n    const deleted = this.delete(key)\n\n    if (!deleted && value !== undefined) {\n      // If cache is full, delete the least recently used item\n      if (this.map.size >= this.max) {\n        const firstKey = this.map.keys().next().value\n        this.delete(firstKey)\n      }\n\n      this.map.set(key, value)\n    }\n\n    return this\n  }\n}\n\nmodule.exports = LRUCache\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n  switch (op) {\n    case '===':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a === b\n\n    case '!==':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a !== b\n\n    case '':\n    case '=':\n    case '==':\n      return eq(a, b, loose)\n\n    case '!=':\n      return neq(a, b, loose)\n\n    case '>':\n      return gt(a, b, loose)\n\n    case '>=':\n      return gte(a, b, loose)\n\n    case '<':\n      return lt(a, b, loose)\n\n    case '<=':\n      return lte(a, b, loose)\n\n    default:\n      throw new TypeError(`Invalid operator: ${op}`)\n  }\n}\nmodule.exports = cmp\n", "'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n  static get ANY () {\n    return ANY\n  }\n\n  constructor (comp, options) {\n    options = parseOptions(options)\n\n    if (comp instanceof Comparator) {\n      if (comp.loose === !!options.loose) {\n        return comp\n      } else {\n        comp = comp.value\n      }\n    }\n\n    comp = comp.trim().split(/\\s+/).join(' ')\n    debug('comparator', comp, options)\n    this.options = options\n    this.loose = !!options.loose\n    this.parse(comp)\n\n    if (this.semver === ANY) {\n      this.value = ''\n    } else {\n      this.value = this.operator + this.semver.version\n    }\n\n    debug('comp', this)\n  }\n\n  parse (comp) {\n    const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n    const m = comp.match(r)\n\n    if (!m) {\n      throw new TypeError(`Invalid comparator: ${comp}`)\n    }\n\n    this.operator = m[1] !== undefined ? m[1] : ''\n    if (this.operator === '=') {\n      this.operator = ''\n    }\n\n    // if it literally is just '>' or '' then allow anything.\n    if (!m[2]) {\n      this.semver = ANY\n    } else {\n      this.semver = new SemVer(m[2], this.options.loose)\n    }\n  }\n\n  toString () {\n    return this.value\n  }\n\n  test (version) {\n    debug('Comparator.test', version, this.options.loose)\n\n    if (this.semver === ANY || version === ANY) {\n      return true\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    return cmp(version, this.operator, this.semver, this.options)\n  }\n\n  intersects (comp, options) {\n    if (!(comp instanceof Comparator)) {\n      throw new TypeError('a Comparator is required')\n    }\n\n    if (this.operator === '') {\n      if (this.value === '') {\n        return true\n      }\n      return new Range(comp.value, options).test(this.value)\n    } else if (comp.operator === '') {\n      if (comp.value === '') {\n        return true\n      }\n      return new Range(this.value, options).test(comp.semver)\n    }\n\n    options = parseOptions(options)\n\n    // Special cases where nothing can possibly be lower\n    if (options.includePrerelease &&\n      (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n      return false\n    }\n    if (!options.includePrerelease &&\n      (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n      return false\n    }\n\n    // Same direction increasing (> or >=)\n    if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n      return true\n    }\n    // Same direction decreasing (< or <=)\n    if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // same SemVer and both sides are inclusive (<= or >=)\n    if (\n      (this.semver.version === comp.semver.version) &&\n      this.operator.includes('=') && comp.operator.includes('=')) {\n      return true\n    }\n    // opposite directions less than\n    if (cmp(this.semver, '<', comp.semver, options) &&\n      this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // opposite directions greater than\n    if (cmp(this.semver, '>', comp.semver, options) &&\n      this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n      return true\n    }\n    return false\n  }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n  constructor (range, options) {\n    options = parseOptions(options)\n\n    if (range instanceof Range) {\n      if (\n        range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease\n      ) {\n        return range\n      } else {\n        return new Range(range.raw, options)\n      }\n    }\n\n    if (range instanceof Comparator) {\n      // just put it in the set and return\n      this.raw = range.value\n      this.set = [[range]]\n      this.formatted = undefined\n      return this\n    }\n\n    this.options = options\n    this.loose = !!options.loose\n    this.includePrerelease = !!options.includePrerelease\n\n    // First reduce all whitespace as much as possible so we do not have to rely\n    // on potentially slow regexes like \\s*. This is then stored and used for\n    // future error messages as well.\n    this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n    // First, split on ||\n    this.set = this.raw\n      .split('||')\n      // map the range to a 2d array of comparators\n      .map(r => this.parseRange(r.trim()))\n      // throw out any comparator lists that are empty\n      // this generally means that it was not a valid range, which is allowed\n      // in loose mode, but will still throw if the WHOLE range is invalid.\n      .filter(c => c.length)\n\n    if (!this.set.length) {\n      throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n    }\n\n    // if we have any that are not the null set, throw out null sets.\n    if (this.set.length > 1) {\n      // keep the first one, in case they're all null sets\n      const first = this.set[0]\n      this.set = this.set.filter(c => !isNullSet(c[0]))\n      if (this.set.length === 0) {\n        this.set = [first]\n      } else if (this.set.length > 1) {\n        // if we have any that are *, then the range is just *\n        for (const c of this.set) {\n          if (c.length === 1 && isAny(c[0])) {\n            this.set = [c]\n            break\n          }\n        }\n      }\n    }\n\n    this.formatted = undefined\n  }\n\n  get range () {\n    if (this.formatted === undefined) {\n      this.formatted = ''\n      for (let i = 0; i < this.set.length; i++) {\n        if (i > 0) {\n          this.formatted += '||'\n        }\n        const comps = this.set[i]\n        for (let k = 0; k < comps.length; k++) {\n          if (k > 0) {\n            this.formatted += ' '\n          }\n          this.formatted += comps[k].toString().trim()\n        }\n      }\n    }\n    return this.formatted\n  }\n\n  format () {\n    return this.range\n  }\n\n  toString () {\n    return this.range\n  }\n\n  parseRange (range) {\n    // memoize range parsing for performance.\n    // this is a very hot path, and fully deterministic.\n    const memoOpts =\n      (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n      (this.options.loose && FLAG_LOOSE)\n    const memoKey = memoOpts + ':' + range\n    const cached = cache.get(memoKey)\n    if (cached) {\n      return cached\n    }\n\n    const loose = this.options.loose\n    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n    const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n    range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n    debug('hyphen replace', range)\n\n    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n    range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n    debug('comparator trim', range)\n\n    // `~ 1.2.3` => `~1.2.3`\n    range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n    debug('tilde trim', range)\n\n    // `^ 1.2.3` => `^1.2.3`\n    range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n    debug('caret trim', range)\n\n    // At this point, the range is completely trimmed and\n    // ready to be split into comparators.\n\n    let rangeList = range\n      .split(' ')\n      .map(comp => parseComparator(comp, this.options))\n      .join(' ')\n      .split(/\\s+/)\n      // >=0.0.0 is equivalent to *\n      .map(comp => replaceGTE0(comp, this.options))\n\n    if (loose) {\n      // in loose mode, throw out any that are not valid comparators\n      rangeList = rangeList.filter(comp => {\n        debug('loose invalid filter', comp, this.options)\n        return !!comp.match(re[t.COMPARATORLOOSE])\n      })\n    }\n    debug('range list', rangeList)\n\n    // if any comparators are the null set, then replace with JUST null set\n    // if more than one comparator, remove any * comparators\n    // also, don't include the same comparator more than once\n    const rangeMap = new Map()\n    const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n    for (const comp of comparators) {\n      if (isNullSet(comp)) {\n        return [comp]\n      }\n      rangeMap.set(comp.value, comp)\n    }\n    if (rangeMap.size > 1 && rangeMap.has('')) {\n      rangeMap.delete('')\n    }\n\n    const result = [...rangeMap.values()]\n    cache.set(memoKey, result)\n    return result\n  }\n\n  intersects (range, options) {\n    if (!(range instanceof Range)) {\n      throw new TypeError('a Range is required')\n    }\n\n    return this.set.some((thisComparators) => {\n      return (\n        isSatisfiable(thisComparators, options) &&\n        range.set.some((rangeComparators) => {\n          return (\n            isSatisfiable(rangeComparators, options) &&\n            thisComparators.every((thisComparator) => {\n              return rangeComparators.every((rangeComparator) => {\n                return thisComparator.intersects(rangeComparator, options)\n              })\n            })\n          )\n        })\n      )\n    })\n  }\n\n  // if ANY of the sets match ALL of its comparators, then pass\n  test (version) {\n    if (!version) {\n      return false\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    for (let i = 0; i < this.set.length; i++) {\n      if (testSet(this.set[i], version, this.options)) {\n        return true\n      }\n    }\n    return false\n  }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n  safeRe: re,\n  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  comp = comp.replace(re[t.BUILD], '')\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\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\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr) => {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n  } else if (isX(fp)) {\n    from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n  } else if (fpr) {\n    from = `>=${from}`\n  } else {\n    from = `>=${from}${incPr ? '-0' : ''}`\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = `<${+tM + 1}.0.0-0`\n  } else if (isX(tp)) {\n    to = `<${tM}.${+tm + 1}.0-0`\n  } else if (tpr) {\n    to = `<=${tM}.${tm}.${tp}-${tpr}`\n  } else if (incPr) {\n    to = `<${tM}.${tm}.${+tp + 1}-0`\n  } else {\n    to = `<=${to}`\n  }\n\n  return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n  for (let i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (let i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === Comparator.ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        const allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n", "'use strict'\n\nconst 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", "import { ArgumentParser } from \"argparse\";\nimport { getMinPeer } from \"./get-min-peer\";\n\n/* eslint-disable-next-line @typescript-eslint/no-require-imports -- technical debt, should be replaced with fs.readfile */\nconst { version, description } = require(\"../package.json\") as {\n\tversion: string;\n\tdescription: string;\n};\n\ninterface Args {\n\tpkgName: string;\n\tmajor?: string;\n\twithName?: boolean;\n}\n\n/**\n * @internal\n */\nexport async function cli(argv: string[]): Promise<number> {\n\tconst parser = new ArgumentParser({\n\t\tdescription,\n\t});\n\n\tparser.add_argument(\"-v\", \"--version\", { action: \"version\", version });\n\tparser.add_argument(\"--major\", { help: \"constrain version to this major\" });\n\tparser.add_argument(\"--with-name\", {\n\t\thelp: \"include package name in output\",\n\t\tdest: \"withName\",\n\t\taction: \"store_true\",\n\t});\n\tparser.add_argument(\"pkgName\", { help: \"package name to find version for\", metavar: \"PACKAGE\" });\n\n\tconst args = parser.parse_args(argv) as Args;\n\tconst result = await getMinPeer(args.pkgName, args);\n\tconsole.log(result); // eslint-disable-line no-console -- expected to log\n\treturn 0;\n}\n", "import minVersion from \"semver/ranges/min-version\";\nimport { readPackageJson } from \"./read-package-json\";\n\n/**\n * Options for [[getMinPeer]].\n *\n * @public\n */\nexport interface Options {\n\t/** If set it constraints the returned version to this version, i.e. the returned version will be between [N .. N+1] or an error if this major is not supported at all. */\n\tmajor?: string | number;\n\t/** If enabled the returned string will include the package name, useful when passing the result directly to `npm install` */\n\twithName?: boolean;\n\t/** Filename to read `package.json` from */\n\tpkgFile?: string;\n}\n\nfunction formatResult(pkgName: string, version: string, options: Options): string {\n\tif (options.withName) {\n\t\treturn `${pkgName}@${version}`;\n\t} else {\n\t\treturn version;\n\t}\n}\n\n/**\n * Get minimum version required by a peerDependency.\n *\n * @public\n * @param pkgName - Package name to get version for.\n * @param options - Options.\n */\nexport async function getMinPeer(pkgName: string, options: Options = {}): Promise<string> {\n\tconst { peerDependencies } = await readPackageJson(options.pkgFile);\n\tif (!peerDependencies) {\n\t\tthrow new Error(`\"peerDependencies\" not defined in \"package.json\"`);\n\t}\n\n\tconst expression = peerDependencies[pkgName];\n\tif (typeof expression === \"undefined\") {\n\t\tthrow new Error(`\"${pkgName}\" is not listed in \"peerDependencies\" in \"package.json\"`);\n\t}\n\n\tconst { major } = options;\n\tif (!major) {\n\t\tlet result;\n\t\ttry {\n\t\t\tresult = minVersion(expression);\n\t\t} catch {\n\t\t\tthrow new Error(`No version could be found for \"${expression}\"`);\n\t\t}\n\t\tif (!result) {\n\t\t\tthrow new Error(`No version could be found for \"${expression}\"`);\n\t\t}\n\t\treturn formatResult(pkgName, result.version, options);\n\t}\n\n\tfor (const range of expression.split(\"||\")) {\n\t\tconst result = minVersion(`${range.trim()} ^${String(major)}`);\n\t\tif (result) {\n\t\t\treturn formatResult(pkgName, result.version, options);\n\t\t}\n\t}\n\n\tthrow new Error(\n\t\t`No version could be found for \"${expression}\" that matches major \"${String(major)}\"`,\n\t);\n}\n", "import { promises as fs } from \"node:fs\";\nimport { locatePackageJson } from \"./locate-package-json\";\n\n/**\n * @internal\n */\nexport interface PkgJson {\n\tpeerDependencies?: Record<string, string>;\n}\n\n/**\n * @internal\n */\nexport async function readPackageJson(pkgFile?: string): Promise<PkgJson> {\n\tpkgFile ??= await locatePackageJson();\n\tconst content = await fs.readFile(pkgFile, \"utf-8\");\n\treturn JSON.parse(content) as PkgJson;\n}\n", "import path from 'node:path';\nimport fs from 'node:fs';\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\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\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\nasync function findDownDepthFirst(directory, paths, maxDepth, locateOptions, currentDepth = 0) {\n\tconst found = await locatePath(paths, {cwd: directory, ...locateOptions});\n\tif (found) {\n\t\treturn path.resolve(directory, found);\n\t}\n\n\tif (currentDepth >= maxDepth) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst entries = await fs.promises.readdir(directory, {withFileTypes: true});\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\t\tconst result = await findDownDepthFirst(\n\t\t\t\t\tpath.join(directory, entry.name),\n\t\t\t\t\tpaths,\n\t\t\t\t\tmaxDepth,\n\t\t\t\t\tlocateOptions,\n\t\t\t\t\tcurrentDepth + 1,\n\t\t\t\t);\n\t\t\t\tif (result) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {}\n\n\treturn undefined;\n}\n\nfunction findDownDepthFirstSync(directory, paths, maxDepth, locateOptions, currentDepth = 0) {\n\tconst found = locatePathSync(paths, {cwd: directory, ...locateOptions});\n\tif (found) {\n\t\treturn path.resolve(directory, found);\n\t}\n\n\tif (currentDepth >= maxDepth) {\n\t\treturn undefined;\n\t}\n\n\ttry {\n\t\tconst entries = fs.readdirSync(directory, {withFileTypes: true});\n\t\tfor (const entry of entries) {\n\t\t\tif (entry.isDirectory()) {\n\t\t\t\tconst result = findDownDepthFirstSync(\n\t\t\t\t\tpath.join(directory, entry.name),\n\t\t\t\t\tpaths,\n\t\t\t\t\tmaxDepth,\n\t\t\t\t\tlocateOptions,\n\t\t\t\t\tcurrentDepth + 1,\n\t\t\t\t);\n\t\t\t\tif (result) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {}\n\n\treturn undefined;\n}\n\nfunction prepareFindDownOptions(name, options) {\n\tconst startDirectory = path.resolve(toPath(options.cwd) ?? '');\n\tconst maxDepth = Math.max(0, options.depth ?? 1);\n\tconst paths = [name].flat();\n\tconst {type = 'file', allowSymlinks = true, strategy = 'breadth'} = options;\n\tconst locateOptions = {type, allowSymlinks};\n\treturn {\n\t\tstartDirectory,\n\t\tmaxDepth,\n\t\tpaths,\n\t\tlocateOptions,\n\t\tstrategy,\n\t};\n}\n\nasync function findDownBreadthFirst(startDirectory, paths, maxDepth, locateOptions) {\n\tconst queue = [{directory: startDirectory, depth: 0}];\n\n\twhile (queue.length > 0) {\n\t\tconst {directory, depth} = queue.shift();\n\n\t\t// eslint-disable-next-line no-await-in-loop\n\t\tconst found = await locatePath(paths, {cwd: directory, ...locateOptions});\n\t\tif (found) {\n\t\t\treturn path.resolve(directory, found);\n\t\t}\n\n\t\tif (depth >= maxDepth) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-await-in-loop\n\t\t\tconst entries = await fs.promises.readdir(directory, {withFileTypes: true});\n\t\t\tfor (const entry of entries) {\n\t\t\t\tif (entry.isDirectory()) {\n\t\t\t\t\tqueue.push({directory: path.join(directory, entry.name), depth: depth + 1});\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {}\n\t}\n\n\treturn undefined;\n}\n\nfunction findDownBreadthFirstSync(startDirectory, paths, maxDepth, locateOptions) {\n\tconst queue = [{directory: startDirectory, depth: 0}];\n\n\twhile (queue.length > 0) {\n\t\tconst {directory, depth} = queue.shift();\n\n\t\tconst found = locatePathSync(paths, {cwd: directory, ...locateOptions});\n\t\tif (found) {\n\t\t\treturn path.resolve(directory, found);\n\t\t}\n\n\t\tif (depth >= maxDepth) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttry {\n\t\t\tconst entries = fs.readdirSync(directory, {withFileTypes: true});\n\t\t\tfor (const entry of entries) {\n\t\t\t\tif (entry.isDirectory()) {\n\t\t\t\t\tqueue.push({directory: path.join(directory, entry.name), depth: depth + 1});\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {}\n\t}\n\n\treturn undefined;\n}\n\nexport async function findDown(name, options = {}) {\n\tconst {startDirectory, maxDepth, paths, locateOptions, strategy} = prepareFindDownOptions(name, options);\n\n\treturn strategy === 'depth'\n\t\t? findDownDepthFirst(startDirectory, paths, maxDepth, locateOptions)\n\t\t: findDownBreadthFirst(startDirectory, paths, maxDepth, locateOptions);\n}\n\nexport function findDownSync(name, options = {}) {\n\tconst {startDirectory, maxDepth, paths, locateOptions, strategy} = prepareFindDownOptions(name, options);\n\n\treturn strategy === 'depth'\n\t\t? findDownDepthFirstSync(startDirectory, paths, maxDepth, locateOptions)\n\t\t: findDownBreadthFirstSync(startDirectory, paths, maxDepth, locateOptions);\n}\n\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 (type === 'both' || Object.hasOwn(typeMappings, type)) {\n\t\treturn;\n\t}\n\n\tthrow new Error(`Invalid type specified: ${type}`);\n}\n\nconst matchType = (type, stat) => type === 'both' ? (stat.isFile() || stat.isDirectory()) : 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\n\t\t// Clean up tail reference when queue becomes empty\n\t\tif (!this.#head) {\n\t\t\tthis.#tail = undefined;\n\t\t}\n\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.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\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\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 {promisify} from 'node:util';\nimport {execFile as execFileCallback, execFileSync as execFileSyncOriginal} from 'node:child_process';\nimport path from 'node:path';\nimport {fileURLToPath} from 'node:url';\n\nconst execFileOriginal = promisify(execFileCallback);\n\nexport function toPath(urlOrPath) {\n\treturn urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;\n}\n\nexport function rootDirectory(pathInput) {\n\treturn path.parse(toPath(pathInput)).root;\n}\n\nexport function traversePathUp(startPath) {\n\treturn {\n\t\t* [Symbol.iterator]() {\n\t\t\tlet currentPath = path.resolve(toPath(startPath));\n\t\t\tlet previousPath;\n\n\t\t\twhile (previousPath !== currentPath) {\n\t\t\t\tyield currentPath;\n\t\t\t\tpreviousPath = currentPath;\n\t\t\t\tcurrentPath = path.resolve(currentPath, '..');\n\t\t\t}\n\t\t},\n\t};\n}\n\nconst TEN_MEGABYTES_IN_BYTES = 10 * 1024 * 1024;\n\nexport async function execFile(file, arguments_, options = {}) {\n\treturn execFileOriginal(file, arguments_, {\n\t\tmaxBuffer: TEN_MEGABYTES_IN_BYTES,\n\t\t...options,\n\t});\n}\n\nexport function execFileSync(file, arguments_ = [], options = {}) {\n\treturn execFileSyncOriginal(file, arguments_, {\n\t\tmaxBuffer: TEN_MEGABYTES_IN_BYTES,\n\t\tencoding: 'utf8',\n\t\tstdio: 'pipe',\n\t\t...options,\n\t});\n}\n\nexport * from './default.js';\n", "import { findUp } from \"find-up\";\n\n/**\n * @internal\n */\nexport async function locatePackageJson(): Promise<string> {\n\tconst result = await findUp(\"package.json\");\n\tif (result) {\n\t\treturn result;\n\t} else {\n\t\tthrow new Error(\"Failed to locate package.json\");\n\t}\n}\n"],
  "mappings": "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",
  "names": ["indent", "fs", "path", "renames", "key", "prefix", "lines", "version", "description", "args", "action", "ArgumentParser", "start_index", "option_string", "arg_strings", "version", "version", "version", "minVersion", "fs", "path", "process", "process", "fileURLToPath", "toPath", "path", "toPath", "fs", "version", "minVersion"]
}
