github.com/yogeshkumararora/slsa-github-generator@v1.10.1-0.20240520161934-11278bd5afb4/actions/delegator/setup-generic/dist/index.js (about)

     1  require('./sourcemap-register.js');/******/ (() => { // webpackBootstrap
     2  /******/ 	var __webpack_modules__ = ({
     3  
     4  /***/ 3109:
     5  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
     6  
     7  "use strict";
     8  
     9  /*
    10  Copyright 2022 SLSA Authors
    11  Licensed under the Apache License, Version 2.0 (the "License");
    12  you may not use this file except in compliance with the License.
    13  You may obtain a copy of the License at
    14      https://www.apache.org/licenses/LICENSE-2.0
    15  Unless required by applicable law or agreed to in writing, software
    16  distributed under the License is distributed on an "AS IS" BASIS,
    17  WIHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    18  See the License for the specific language governing permissions and
    19  limitations under the License.
    20  */
    21  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    22      if (k2 === undefined) k2 = k;
    23      var desc = Object.getOwnPropertyDescriptor(m, k);
    24      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
    25        desc = { enumerable: true, get: function() { return m[k]; } };
    26      }
    27      Object.defineProperty(o, k2, desc);
    28  }) : (function(o, m, k, k2) {
    29      if (k2 === undefined) k2 = k;
    30      o[k2] = m[k];
    31  }));
    32  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    33      Object.defineProperty(o, "default", { enumerable: true, value: v });
    34  }) : function(o, v) {
    35      o["default"] = v;
    36  });
    37  var __importStar = (this && this.__importStar) || function (mod) {
    38      if (mod && mod.__esModule) return mod;
    39      var result = {};
    40      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    41      __setModuleDefault(result, mod);
    42      return result;
    43  };
    44  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    45      function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    46      return new (P || (P = Promise))(function (resolve, reject) {
    47          function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
    48          function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
    49          function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
    50          step((generator = generator.apply(thisArg, _arguments || [])).next());
    51      });
    52  };
    53  Object.defineProperty(exports, "__esModule", ({ value: true }));
    54  const github = __importStar(__nccwpck_require__(95438));
    55  const core = __importStar(__nccwpck_require__(42186));
    56  const process = __importStar(__nccwpck_require__(77282));
    57  const sigstore_1 = __nccwpck_require__(99149);
    58  const tscommon = __importStar(__nccwpck_require__(86634));
    59  function run() {
    60      return __awaiter(this, void 0, void 0, function* () {
    61          try {
    62              /* Test locally:
    63                  $ env INPUT_SLSA-WORKFLOW-RECIPIENT="laurentsimon/slsa-delegated-tool" \
    64                  INPUT_SLSA-REKOR-LOG-PUBLIC=true \
    65                  INPUT_SLSA-RUNNER-LABEL="ubuntu-latest" \
    66                  INPUT_SLSA-BUILD-ACTION-PATH="./actions/build-artifacts-composite" \
    67                  INPUT_SLSA-WORKFLOW-INPUTS="{\"name1\":\"value1\",\"name2\":\"value2\",\"name3\":\"value3\",\"name4\":\"value4\"}" \
    68                  INPUT_SLSA-WORKFLOW-INPUTS-MASK="name2, name4" \
    69                  INPUT_SLSA-CHECKOUT-FETCH-DEPTH="2" \
    70                  INPUT_SLSA-CHECKOUT-REPOSITORY-SHA1="abcdef" \
    71                  INPUT_SLSA-VERSION="v1" \
    72                  nodejs ./dist/index.js
    73              */
    74              const slsaVersion = core.getInput("slsa-version");
    75              if (!["v1.0", "v0.2"].includes(slsaVersion)) {
    76                  throw new Error(`Unsupported slsa-version: ${slsaVersion}`);
    77              }
    78              const workflowRecipient = core.getInput("slsa-workflow-recipient");
    79              const rekorLogPublic = core.getInput("slsa-rekor-log-public");
    80              const runnerLabel = core.getInput("slsa-runner-label");
    81              // Checkout options.
    82              const checkoutDepth = core.getInput("slsa-checkout-fetch-depth");
    83              const checkoutSha1 = core.getInput("slsa-checkout-sha1");
    84              const buildArtifactsActionPath = core.getInput("slsa-build-action-path");
    85              const workflowsInputsMask = core.getInput("slsa-workflow-masked-inputs");
    86              // The workflow inputs are represented as a JSON object theselves.
    87              const workflowsInputsText = core.getInput("slsa-workflow-inputs");
    88              // Log the inputs for troubleshooting.
    89              core.debug(`workflowsInputsText: ${workflowsInputsText}`);
    90              core.debug(`workfowInputs: `);
    91              const workflowInputs = JSON.parse(workflowsInputsText);
    92              const workflowInputsMap = new Map(Object.entries(workflowInputs));
    93              for (const [key, value] of workflowInputsMap) {
    94                  core.info(` ${key}: ${value}`);
    95              }
    96              const workflowMaskedInputs = getMaskedInputs(workflowsInputsMask);
    97              core.info(`maskedInputs: `);
    98              for (const value of workflowMaskedInputs) {
    99                  core.info(` ${value}`);
   100              }
   101              const payload = JSON.stringify(github.context.payload, undefined, 2);
   102              core.debug(`The event payload: ${payload}`);
   103              // Construct an unsigned SLSA token.
   104              const unsignedSlsaToken = {
   105                  version: 1,
   106                  slsaVersion,
   107                  context: "SLSA delegator framework",
   108                  builder: {
   109                      rekor_log_public: rekorLogPublic,
   110                      runner_label: runnerLabel,
   111                      audience: workflowRecipient,
   112                  },
   113                  source: {
   114                      checkout: {
   115                          fetch_depth: checkoutDepth,
   116                          sha1: checkoutSha1,
   117                      },
   118                      // TODO(#2043): add digests.
   119                  },
   120                  github: {
   121                      actor_id: process.env.GITHUB_ACTOR_ID,
   122                      event_name: process.env.GITHUB_EVENT_NAME,
   123                      event_payload_sha256: tscommon.safeFileSha256(process.env.GITHUB_EVENT_PATH || ""),
   124                      base_ref: process.env.GITHUB_BASE_REF,
   125                      ref: process.env.GITHUB_REF,
   126                      ref_type: process.env.GITHUB_REF_TYPE,
   127                      repository: process.env.GITHUB_REPOSITORY,
   128                      repository_id: process.env.GITHUB_REPOSITORY_ID,
   129                      repository_owner_id: process.env.GITHUB_REPOSITORY_OWNER_ID,
   130                      run_attempt: process.env.GITHUB_RUN_ATTEMPT,
   131                      run_id: process.env.GITHUB_RUN_ID,
   132                      run_number: process.env.GITHUB_RUN_NUMBER,
   133                      sha: process.env.GITHUB_SHA,
   134                      workflow_ref: process.env.GITHUB_WORKFLOW_REF,
   135                      workflow_sha: process.env.GITHUB_WORKFLOW_SHA,
   136                  },
   137                  image: {
   138                      os: process.env.ImageOS,
   139                      version: process.env.ImageVersion,
   140                  },
   141                  runner: {
   142                      arch: process.env.RUNNER_ARCH,
   143                      name: process.env.RUNNER_NAME,
   144                      os: process.env.RUNNER_OS,
   145                  },
   146                  tool: {
   147                      actions: {
   148                          build_artifacts: {
   149                              path: buildArtifactsActionPath,
   150                          },
   151                      },
   152                      inputs: workflowInputs,
   153                      masked_inputs: workflowMaskedInputs,
   154                  },
   155              };
   156              // Prepare the base64 unsigned token.
   157              const unsignedToken = JSON.stringify(unsignedSlsaToken, undefined);
   158              const unsignedB64Token = Buffer.from(unsignedToken).toString("base64");
   159              core.info(`unsignedToken: ${unsignedToken}`);
   160              core.info(`unsignedB64Token: ${unsignedB64Token}`);
   161              // Sign and prepare the base64 bundle.
   162              const bundle = yield (0, sigstore_1.sign)(Buffer.from(unsignedB64Token));
   163              // Verify just to double check.
   164              // NOTE: this is an offline verification.
   165              // TODO(#1668): re-enable verification.
   166              // await sigstore.verify(bundle, Buffer.from(unsignedB64Token));
   167              const bundleStr = JSON.stringify(bundle);
   168              const bundleB64 = Buffer.from(bundleStr).toString("base64");
   169              core.info(`bundleStr: ${bundleStr}`);
   170              core.info(`bundleB64: ${bundleB64}`);
   171              // Output the signed token.
   172              core.info(`slsa-token: ${bundleB64}.${unsignedB64Token}`);
   173              core.setOutput("slsa-token", `${bundleB64}.${unsignedB64Token}`);
   174          }
   175          catch (error) {
   176              if (error instanceof Error) {
   177                  core.setFailed(error.message);
   178              }
   179              else {
   180                  core.setFailed(`Unexpected error: ${error}`);
   181              }
   182          }
   183      });
   184  }
   185  function getMaskedInputs(inputsStr) {
   186      const ret = [];
   187      const inputArr = inputsStr.split(",");
   188      for (const input of inputArr) {
   189          ret.push(input.trim());
   190      }
   191      return ret;
   192  }
   193  run();
   194  
   195  
   196  /***/ }),
   197  
   198  /***/ 87351:
   199  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   200  
   201  "use strict";
   202  
   203  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   204      if (k2 === undefined) k2 = k;
   205      Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   206  }) : (function(o, m, k, k2) {
   207      if (k2 === undefined) k2 = k;
   208      o[k2] = m[k];
   209  }));
   210  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   211      Object.defineProperty(o, "default", { enumerable: true, value: v });
   212  }) : function(o, v) {
   213      o["default"] = v;
   214  });
   215  var __importStar = (this && this.__importStar) || function (mod) {
   216      if (mod && mod.__esModule) return mod;
   217      var result = {};
   218      if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   219      __setModuleDefault(result, mod);
   220      return result;
   221  };
   222  Object.defineProperty(exports, "__esModule", ({ value: true }));
   223  exports.issue = exports.issueCommand = void 0;
   224  const os = __importStar(__nccwpck_require__(22037));
   225  const utils_1 = __nccwpck_require__(5278);
   226  /**
   227   * Commands
   228   *
   229   * Command Format:
   230   *   ::name key=value,key=value::message
   231   *
   232   * Examples:
   233   *   ::warning::This is the message
   234   *   ::set-env name=MY_VAR::some value
   235   */
   236  function issueCommand(command, properties, message) {
   237      const cmd = new Command(command, properties, message);
   238      process.stdout.write(cmd.toString() + os.EOL);
   239  }
   240  exports.issueCommand = issueCommand;
   241  function issue(name, message = '') {
   242      issueCommand(name, {}, message);
   243  }
   244  exports.issue = issue;
   245  const CMD_STRING = '::';
   246  class Command {
   247      constructor(command, properties, message) {
   248          if (!command) {
   249              command = 'missing.command';
   250          }
   251          this.command = command;
   252          this.properties = properties;
   253          this.message = message;
   254      }
   255      toString() {
   256          let cmdStr = CMD_STRING + this.command;
   257          if (this.properties && Object.keys(this.properties).length > 0) {
   258              cmdStr += ' ';
   259              let first = true;
   260              for (const key in this.properties) {
   261                  if (this.properties.hasOwnProperty(key)) {
   262                      const val = this.properties[key];
   263                      if (val) {
   264                          if (first) {
   265                              first = false;
   266                          }
   267                          else {
   268                              cmdStr += ',';
   269                          }
   270                          cmdStr += `${key}=${escapeProperty(val)}`;
   271                      }
   272                  }
   273              }
   274          }
   275          cmdStr += `${CMD_STRING}${escapeData(this.message)}`;
   276          return cmdStr;
   277      }
   278  }
   279  function escapeData(s) {
   280      return utils_1.toCommandValue(s)
   281          .replace(/%/g, '%25')
   282          .replace(/\r/g, '%0D')
   283          .replace(/\n/g, '%0A');
   284  }
   285  function escapeProperty(s) {
   286      return utils_1.toCommandValue(s)
   287          .replace(/%/g, '%25')
   288          .replace(/\r/g, '%0D')
   289          .replace(/\n/g, '%0A')
   290          .replace(/:/g, '%3A')
   291          .replace(/,/g, '%2C');
   292  }
   293  //# sourceMappingURL=command.js.map
   294  
   295  /***/ }),
   296  
   297  /***/ 42186:
   298  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   299  
   300  "use strict";
   301  
   302  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   303      if (k2 === undefined) k2 = k;
   304      Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   305  }) : (function(o, m, k, k2) {
   306      if (k2 === undefined) k2 = k;
   307      o[k2] = m[k];
   308  }));
   309  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   310      Object.defineProperty(o, "default", { enumerable: true, value: v });
   311  }) : function(o, v) {
   312      o["default"] = v;
   313  });
   314  var __importStar = (this && this.__importStar) || function (mod) {
   315      if (mod && mod.__esModule) return mod;
   316      var result = {};
   317      if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   318      __setModuleDefault(result, mod);
   319      return result;
   320  };
   321  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
   322      function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
   323      return new (P || (P = Promise))(function (resolve, reject) {
   324          function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   325          function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   326          function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
   327          step((generator = generator.apply(thisArg, _arguments || [])).next());
   328      });
   329  };
   330  Object.defineProperty(exports, "__esModule", ({ value: true }));
   331  exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;
   332  const command_1 = __nccwpck_require__(87351);
   333  const file_command_1 = __nccwpck_require__(717);
   334  const utils_1 = __nccwpck_require__(5278);
   335  const os = __importStar(__nccwpck_require__(22037));
   336  const path = __importStar(__nccwpck_require__(71017));
   337  const oidc_utils_1 = __nccwpck_require__(98041);
   338  /**
   339   * The code to exit an action
   340   */
   341  var ExitCode;
   342  (function (ExitCode) {
   343      /**
   344       * A code indicating that the action was successful
   345       */
   346      ExitCode[ExitCode["Success"] = 0] = "Success";
   347      /**
   348       * A code indicating that the action was a failure
   349       */
   350      ExitCode[ExitCode["Failure"] = 1] = "Failure";
   351  })(ExitCode = exports.ExitCode || (exports.ExitCode = {}));
   352  //-----------------------------------------------------------------------
   353  // Variables
   354  //-----------------------------------------------------------------------
   355  /**
   356   * Sets env variable for this action and future actions in the job
   357   * @param name the name of the variable to set
   358   * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify
   359   */
   360  // eslint-disable-next-line @typescript-eslint/no-explicit-any
   361  function exportVariable(name, val) {
   362      const convertedVal = utils_1.toCommandValue(val);
   363      process.env[name] = convertedVal;
   364      const filePath = process.env['GITHUB_ENV'] || '';
   365      if (filePath) {
   366          return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val));
   367      }
   368      command_1.issueCommand('set-env', { name }, convertedVal);
   369  }
   370  exports.exportVariable = exportVariable;
   371  /**
   372   * Registers a secret which will get masked from logs
   373   * @param secret value of the secret
   374   */
   375  function setSecret(secret) {
   376      command_1.issueCommand('add-mask', {}, secret);
   377  }
   378  exports.setSecret = setSecret;
   379  /**
   380   * Prepends inputPath to the PATH (for this action and future actions)
   381   * @param inputPath
   382   */
   383  function addPath(inputPath) {
   384      const filePath = process.env['GITHUB_PATH'] || '';
   385      if (filePath) {
   386          file_command_1.issueFileCommand('PATH', inputPath);
   387      }
   388      else {
   389          command_1.issueCommand('add-path', {}, inputPath);
   390      }
   391      process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;
   392  }
   393  exports.addPath = addPath;
   394  /**
   395   * Gets the value of an input.
   396   * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.
   397   * Returns an empty string if the value is not defined.
   398   *
   399   * @param     name     name of the input to get
   400   * @param     options  optional. See InputOptions.
   401   * @returns   string
   402   */
   403  function getInput(name, options) {
   404      const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';
   405      if (options && options.required && !val) {
   406          throw new Error(`Input required and not supplied: ${name}`);
   407      }
   408      if (options && options.trimWhitespace === false) {
   409          return val;
   410      }
   411      return val.trim();
   412  }
   413  exports.getInput = getInput;
   414  /**
   415   * Gets the values of an multiline input.  Each value is also trimmed.
   416   *
   417   * @param     name     name of the input to get
   418   * @param     options  optional. See InputOptions.
   419   * @returns   string[]
   420   *
   421   */
   422  function getMultilineInput(name, options) {
   423      const inputs = getInput(name, options)
   424          .split('\n')
   425          .filter(x => x !== '');
   426      if (options && options.trimWhitespace === false) {
   427          return inputs;
   428      }
   429      return inputs.map(input => input.trim());
   430  }
   431  exports.getMultilineInput = getMultilineInput;
   432  /**
   433   * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification.
   434   * Support boolean input list: `true | True | TRUE | false | False | FALSE` .
   435   * The return value is also in boolean type.
   436   * ref: https://yaml.org/spec/1.2/spec.html#id2804923
   437   *
   438   * @param     name     name of the input to get
   439   * @param     options  optional. See InputOptions.
   440   * @returns   boolean
   441   */
   442  function getBooleanInput(name, options) {
   443      const trueValue = ['true', 'True', 'TRUE'];
   444      const falseValue = ['false', 'False', 'FALSE'];
   445      const val = getInput(name, options);
   446      if (trueValue.includes(val))
   447          return true;
   448      if (falseValue.includes(val))
   449          return false;
   450      throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` +
   451          `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
   452  }
   453  exports.getBooleanInput = getBooleanInput;
   454  /**
   455   * Sets the value of an output.
   456   *
   457   * @param     name     name of the output to set
   458   * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify
   459   */
   460  // eslint-disable-next-line @typescript-eslint/no-explicit-any
   461  function setOutput(name, value) {
   462      const filePath = process.env['GITHUB_OUTPUT'] || '';
   463      if (filePath) {
   464          return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value));
   465      }
   466      process.stdout.write(os.EOL);
   467      command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value));
   468  }
   469  exports.setOutput = setOutput;
   470  /**
   471   * Enables or disables the echoing of commands into stdout for the rest of the step.
   472   * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.
   473   *
   474   */
   475  function setCommandEcho(enabled) {
   476      command_1.issue('echo', enabled ? 'on' : 'off');
   477  }
   478  exports.setCommandEcho = setCommandEcho;
   479  //-----------------------------------------------------------------------
   480  // Results
   481  //-----------------------------------------------------------------------
   482  /**
   483   * Sets the action status to failed.
   484   * When the action exits it will be with an exit code of 1
   485   * @param message add error issue message
   486   */
   487  function setFailed(message) {
   488      process.exitCode = ExitCode.Failure;
   489      error(message);
   490  }
   491  exports.setFailed = setFailed;
   492  //-----------------------------------------------------------------------
   493  // Logging Commands
   494  //-----------------------------------------------------------------------
   495  /**
   496   * Gets whether Actions Step Debug is on or not
   497   */
   498  function isDebug() {
   499      return process.env['RUNNER_DEBUG'] === '1';
   500  }
   501  exports.isDebug = isDebug;
   502  /**
   503   * Writes debug message to user log
   504   * @param message debug message
   505   */
   506  function debug(message) {
   507      command_1.issueCommand('debug', {}, message);
   508  }
   509  exports.debug = debug;
   510  /**
   511   * Adds an error issue
   512   * @param message error issue message. Errors will be converted to string via toString()
   513   * @param properties optional properties to add to the annotation.
   514   */
   515  function error(message, properties = {}) {
   516      command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
   517  }
   518  exports.error = error;
   519  /**
   520   * Adds a warning issue
   521   * @param message warning issue message. Errors will be converted to string via toString()
   522   * @param properties optional properties to add to the annotation.
   523   */
   524  function warning(message, properties = {}) {
   525      command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
   526  }
   527  exports.warning = warning;
   528  /**
   529   * Adds a notice issue
   530   * @param message notice issue message. Errors will be converted to string via toString()
   531   * @param properties optional properties to add to the annotation.
   532   */
   533  function notice(message, properties = {}) {
   534      command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);
   535  }
   536  exports.notice = notice;
   537  /**
   538   * Writes info to log with console.log.
   539   * @param message info message
   540   */
   541  function info(message) {
   542      process.stdout.write(message + os.EOL);
   543  }
   544  exports.info = info;
   545  /**
   546   * Begin an output group.
   547   *
   548   * Output until the next `groupEnd` will be foldable in this group
   549   *
   550   * @param name The name of the output group
   551   */
   552  function startGroup(name) {
   553      command_1.issue('group', name);
   554  }
   555  exports.startGroup = startGroup;
   556  /**
   557   * End an output group.
   558   */
   559  function endGroup() {
   560      command_1.issue('endgroup');
   561  }
   562  exports.endGroup = endGroup;
   563  /**
   564   * Wrap an asynchronous function call in a group.
   565   *
   566   * Returns the same type as the function itself.
   567   *
   568   * @param name The name of the group
   569   * @param fn The function to wrap in the group
   570   */
   571  function group(name, fn) {
   572      return __awaiter(this, void 0, void 0, function* () {
   573          startGroup(name);
   574          let result;
   575          try {
   576              result = yield fn();
   577          }
   578          finally {
   579              endGroup();
   580          }
   581          return result;
   582      });
   583  }
   584  exports.group = group;
   585  //-----------------------------------------------------------------------
   586  // Wrapper action state
   587  //-----------------------------------------------------------------------
   588  /**
   589   * Saves state for current action, the state can only be retrieved by this action's post job execution.
   590   *
   591   * @param     name     name of the state to store
   592   * @param     value    value to store. Non-string values will be converted to a string via JSON.stringify
   593   */
   594  // eslint-disable-next-line @typescript-eslint/no-explicit-any
   595  function saveState(name, value) {
   596      const filePath = process.env['GITHUB_STATE'] || '';
   597      if (filePath) {
   598          return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value));
   599      }
   600      command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value));
   601  }
   602  exports.saveState = saveState;
   603  /**
   604   * Gets the value of an state set by this action's main execution.
   605   *
   606   * @param     name     name of the state to get
   607   * @returns   string
   608   */
   609  function getState(name) {
   610      return process.env[`STATE_${name}`] || '';
   611  }
   612  exports.getState = getState;
   613  function getIDToken(aud) {
   614      return __awaiter(this, void 0, void 0, function* () {
   615          return yield oidc_utils_1.OidcClient.getIDToken(aud);
   616      });
   617  }
   618  exports.getIDToken = getIDToken;
   619  /**
   620   * Summary exports
   621   */
   622  var summary_1 = __nccwpck_require__(81327);
   623  Object.defineProperty(exports, "summary", ({ enumerable: true, get: function () { return summary_1.summary; } }));
   624  /**
   625   * @deprecated use core.summary
   626   */
   627  var summary_2 = __nccwpck_require__(81327);
   628  Object.defineProperty(exports, "markdownSummary", ({ enumerable: true, get: function () { return summary_2.markdownSummary; } }));
   629  /**
   630   * Path exports
   631   */
   632  var path_utils_1 = __nccwpck_require__(2981);
   633  Object.defineProperty(exports, "toPosixPath", ({ enumerable: true, get: function () { return path_utils_1.toPosixPath; } }));
   634  Object.defineProperty(exports, "toWin32Path", ({ enumerable: true, get: function () { return path_utils_1.toWin32Path; } }));
   635  Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: function () { return path_utils_1.toPlatformPath; } }));
   636  //# sourceMappingURL=core.js.map
   637  
   638  /***/ }),
   639  
   640  /***/ 717:
   641  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   642  
   643  "use strict";
   644  
   645  // For internal use, subject to change.
   646  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   647      if (k2 === undefined) k2 = k;
   648      Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   649  }) : (function(o, m, k, k2) {
   650      if (k2 === undefined) k2 = k;
   651      o[k2] = m[k];
   652  }));
   653  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   654      Object.defineProperty(o, "default", { enumerable: true, value: v });
   655  }) : function(o, v) {
   656      o["default"] = v;
   657  });
   658  var __importStar = (this && this.__importStar) || function (mod) {
   659      if (mod && mod.__esModule) return mod;
   660      var result = {};
   661      if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   662      __setModuleDefault(result, mod);
   663      return result;
   664  };
   665  Object.defineProperty(exports, "__esModule", ({ value: true }));
   666  exports.prepareKeyValueMessage = exports.issueFileCommand = void 0;
   667  // We use any as a valid input type
   668  /* eslint-disable @typescript-eslint/no-explicit-any */
   669  const fs = __importStar(__nccwpck_require__(57147));
   670  const os = __importStar(__nccwpck_require__(22037));
   671  const uuid_1 = __nccwpck_require__(75840);
   672  const utils_1 = __nccwpck_require__(5278);
   673  function issueFileCommand(command, message) {
   674      const filePath = process.env[`GITHUB_${command}`];
   675      if (!filePath) {
   676          throw new Error(`Unable to find environment variable for file command ${command}`);
   677      }
   678      if (!fs.existsSync(filePath)) {
   679          throw new Error(`Missing file at path: ${filePath}`);
   680      }
   681      fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {
   682          encoding: 'utf8'
   683      });
   684  }
   685  exports.issueFileCommand = issueFileCommand;
   686  function prepareKeyValueMessage(key, value) {
   687      const delimiter = `ghadelimiter_${uuid_1.v4()}`;
   688      const convertedValue = utils_1.toCommandValue(value);
   689      // These should realistically never happen, but just in case someone finds a
   690      // way to exploit uuid generation let's not allow keys or values that contain
   691      // the delimiter.
   692      if (key.includes(delimiter)) {
   693          throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`);
   694      }
   695      if (convertedValue.includes(delimiter)) {
   696          throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`);
   697      }
   698      return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;
   699  }
   700  exports.prepareKeyValueMessage = prepareKeyValueMessage;
   701  //# sourceMappingURL=file-command.js.map
   702  
   703  /***/ }),
   704  
   705  /***/ 98041:
   706  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   707  
   708  "use strict";
   709  
   710  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
   711      function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
   712      return new (P || (P = Promise))(function (resolve, reject) {
   713          function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   714          function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   715          function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
   716          step((generator = generator.apply(thisArg, _arguments || [])).next());
   717      });
   718  };
   719  Object.defineProperty(exports, "__esModule", ({ value: true }));
   720  exports.OidcClient = void 0;
   721  const http_client_1 = __nccwpck_require__(96255);
   722  const auth_1 = __nccwpck_require__(35526);
   723  const core_1 = __nccwpck_require__(42186);
   724  class OidcClient {
   725      static createHttpClient(allowRetry = true, maxRetry = 10) {
   726          const requestOptions = {
   727              allowRetries: allowRetry,
   728              maxRetries: maxRetry
   729          };
   730          return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);
   731      }
   732      static getRequestToken() {
   733          const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];
   734          if (!token) {
   735              throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');
   736          }
   737          return token;
   738      }
   739      static getIDTokenUrl() {
   740          const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];
   741          if (!runtimeUrl) {
   742              throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');
   743          }
   744          return runtimeUrl;
   745      }
   746      static getCall(id_token_url) {
   747          var _a;
   748          return __awaiter(this, void 0, void 0, function* () {
   749              const httpclient = OidcClient.createHttpClient();
   750              const res = yield httpclient
   751                  .getJson(id_token_url)
   752                  .catch(error => {
   753                  throw new Error(`Failed to get ID Token. \n 
   754          Error Code : ${error.statusCode}\n 
   755          Error Message: ${error.message}`);
   756              });
   757              const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;
   758              if (!id_token) {
   759                  throw new Error('Response json body do not have ID Token field');
   760              }
   761              return id_token;
   762          });
   763      }
   764      static getIDToken(audience) {
   765          return __awaiter(this, void 0, void 0, function* () {
   766              try {
   767                  // New ID Token is requested from action service
   768                  let id_token_url = OidcClient.getIDTokenUrl();
   769                  if (audience) {
   770                      const encodedAudience = encodeURIComponent(audience);
   771                      id_token_url = `${id_token_url}&audience=${encodedAudience}`;
   772                  }
   773                  core_1.debug(`ID token url is ${id_token_url}`);
   774                  const id_token = yield OidcClient.getCall(id_token_url);
   775                  core_1.setSecret(id_token);
   776                  return id_token;
   777              }
   778              catch (error) {
   779                  throw new Error(`Error message: ${error.message}`);
   780              }
   781          });
   782      }
   783  }
   784  exports.OidcClient = OidcClient;
   785  //# sourceMappingURL=oidc-utils.js.map
   786  
   787  /***/ }),
   788  
   789  /***/ 2981:
   790  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   791  
   792  "use strict";
   793  
   794  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
   795      if (k2 === undefined) k2 = k;
   796      Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
   797  }) : (function(o, m, k, k2) {
   798      if (k2 === undefined) k2 = k;
   799      o[k2] = m[k];
   800  }));
   801  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
   802      Object.defineProperty(o, "default", { enumerable: true, value: v });
   803  }) : function(o, v) {
   804      o["default"] = v;
   805  });
   806  var __importStar = (this && this.__importStar) || function (mod) {
   807      if (mod && mod.__esModule) return mod;
   808      var result = {};
   809      if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
   810      __setModuleDefault(result, mod);
   811      return result;
   812  };
   813  Object.defineProperty(exports, "__esModule", ({ value: true }));
   814  exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0;
   815  const path = __importStar(__nccwpck_require__(71017));
   816  /**
   817   * toPosixPath converts the given path to the posix form. On Windows, \\ will be
   818   * replaced with /.
   819   *
   820   * @param pth. Path to transform.
   821   * @return string Posix path.
   822   */
   823  function toPosixPath(pth) {
   824      return pth.replace(/[\\]/g, '/');
   825  }
   826  exports.toPosixPath = toPosixPath;
   827  /**
   828   * toWin32Path converts the given path to the win32 form. On Linux, / will be
   829   * replaced with \\.
   830   *
   831   * @param pth. Path to transform.
   832   * @return string Win32 path.
   833   */
   834  function toWin32Path(pth) {
   835      return pth.replace(/[/]/g, '\\');
   836  }
   837  exports.toWin32Path = toWin32Path;
   838  /**
   839   * toPlatformPath converts the given path to a platform-specific path. It does
   840   * this by replacing instances of / and \ with the platform-specific path
   841   * separator.
   842   *
   843   * @param pth The path to platformize.
   844   * @return string The platform-specific path.
   845   */
   846  function toPlatformPath(pth) {
   847      return pth.replace(/[/\\]/g, path.sep);
   848  }
   849  exports.toPlatformPath = toPlatformPath;
   850  //# sourceMappingURL=path-utils.js.map
   851  
   852  /***/ }),
   853  
   854  /***/ 81327:
   855  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
   856  
   857  "use strict";
   858  
   859  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
   860      function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
   861      return new (P || (P = Promise))(function (resolve, reject) {
   862          function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
   863          function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
   864          function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
   865          step((generator = generator.apply(thisArg, _arguments || [])).next());
   866      });
   867  };
   868  Object.defineProperty(exports, "__esModule", ({ value: true }));
   869  exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;
   870  const os_1 = __nccwpck_require__(22037);
   871  const fs_1 = __nccwpck_require__(57147);
   872  const { access, appendFile, writeFile } = fs_1.promises;
   873  exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';
   874  exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';
   875  class Summary {
   876      constructor() {
   877          this._buffer = '';
   878      }
   879      /**
   880       * Finds the summary file path from the environment, rejects if env var is not found or file does not exist
   881       * Also checks r/w permissions.
   882       *
   883       * @returns step summary file path
   884       */
   885      filePath() {
   886          return __awaiter(this, void 0, void 0, function* () {
   887              if (this._filePath) {
   888                  return this._filePath;
   889              }
   890              const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];
   891              if (!pathFromEnv) {
   892                  throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);
   893              }
   894              try {
   895                  yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);
   896              }
   897              catch (_a) {
   898                  throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);
   899              }
   900              this._filePath = pathFromEnv;
   901              return this._filePath;
   902          });
   903      }
   904      /**
   905       * Wraps content in an HTML tag, adding any HTML attributes
   906       *
   907       * @param {string} tag HTML tag to wrap
   908       * @param {string | null} content content within the tag
   909       * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add
   910       *
   911       * @returns {string} content wrapped in HTML element
   912       */
   913      wrap(tag, content, attrs = {}) {
   914          const htmlAttrs = Object.entries(attrs)
   915              .map(([key, value]) => ` ${key}="${value}"`)
   916              .join('');
   917          if (!content) {
   918              return `<${tag}${htmlAttrs}>`;
   919          }
   920          return `<${tag}${htmlAttrs}>${content}</${tag}>`;
   921      }
   922      /**
   923       * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.
   924       *
   925       * @param {SummaryWriteOptions} [options] (optional) options for write operation
   926       *
   927       * @returns {Promise<Summary>} summary instance
   928       */
   929      write(options) {
   930          return __awaiter(this, void 0, void 0, function* () {
   931              const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);
   932              const filePath = yield this.filePath();
   933              const writeFunc = overwrite ? writeFile : appendFile;
   934              yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });
   935              return this.emptyBuffer();
   936          });
   937      }
   938      /**
   939       * Clears the summary buffer and wipes the summary file
   940       *
   941       * @returns {Summary} summary instance
   942       */
   943      clear() {
   944          return __awaiter(this, void 0, void 0, function* () {
   945              return this.emptyBuffer().write({ overwrite: true });
   946          });
   947      }
   948      /**
   949       * Returns the current summary buffer as a string
   950       *
   951       * @returns {string} string of summary buffer
   952       */
   953      stringify() {
   954          return this._buffer;
   955      }
   956      /**
   957       * If the summary buffer is empty
   958       *
   959       * @returns {boolen} true if the buffer is empty
   960       */
   961      isEmptyBuffer() {
   962          return this._buffer.length === 0;
   963      }
   964      /**
   965       * Resets the summary buffer without writing to summary file
   966       *
   967       * @returns {Summary} summary instance
   968       */
   969      emptyBuffer() {
   970          this._buffer = '';
   971          return this;
   972      }
   973      /**
   974       * Adds raw text to the summary buffer
   975       *
   976       * @param {string} text content to add
   977       * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)
   978       *
   979       * @returns {Summary} summary instance
   980       */
   981      addRaw(text, addEOL = false) {
   982          this._buffer += text;
   983          return addEOL ? this.addEOL() : this;
   984      }
   985      /**
   986       * Adds the operating system-specific end-of-line marker to the buffer
   987       *
   988       * @returns {Summary} summary instance
   989       */
   990      addEOL() {
   991          return this.addRaw(os_1.EOL);
   992      }
   993      /**
   994       * Adds an HTML codeblock to the summary buffer
   995       *
   996       * @param {string} code content to render within fenced code block
   997       * @param {string} lang (optional) language to syntax highlight code
   998       *
   999       * @returns {Summary} summary instance
  1000       */
  1001      addCodeBlock(code, lang) {
  1002          const attrs = Object.assign({}, (lang && { lang }));
  1003          const element = this.wrap('pre', this.wrap('code', code), attrs);
  1004          return this.addRaw(element).addEOL();
  1005      }
  1006      /**
  1007       * Adds an HTML list to the summary buffer
  1008       *
  1009       * @param {string[]} items list of items to render
  1010       * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)
  1011       *
  1012       * @returns {Summary} summary instance
  1013       */
  1014      addList(items, ordered = false) {
  1015          const tag = ordered ? 'ol' : 'ul';
  1016          const listItems = items.map(item => this.wrap('li', item)).join('');
  1017          const element = this.wrap(tag, listItems);
  1018          return this.addRaw(element).addEOL();
  1019      }
  1020      /**
  1021       * Adds an HTML table to the summary buffer
  1022       *
  1023       * @param {SummaryTableCell[]} rows table rows
  1024       *
  1025       * @returns {Summary} summary instance
  1026       */
  1027      addTable(rows) {
  1028          const tableBody = rows
  1029              .map(row => {
  1030              const cells = row
  1031                  .map(cell => {
  1032                  if (typeof cell === 'string') {
  1033                      return this.wrap('td', cell);
  1034                  }
  1035                  const { header, data, colspan, rowspan } = cell;
  1036                  const tag = header ? 'th' : 'td';
  1037                  const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));
  1038                  return this.wrap(tag, data, attrs);
  1039              })
  1040                  .join('');
  1041              return this.wrap('tr', cells);
  1042          })
  1043              .join('');
  1044          const element = this.wrap('table', tableBody);
  1045          return this.addRaw(element).addEOL();
  1046      }
  1047      /**
  1048       * Adds a collapsable HTML details element to the summary buffer
  1049       *
  1050       * @param {string} label text for the closed state
  1051       * @param {string} content collapsable content
  1052       *
  1053       * @returns {Summary} summary instance
  1054       */
  1055      addDetails(label, content) {
  1056          const element = this.wrap('details', this.wrap('summary', label) + content);
  1057          return this.addRaw(element).addEOL();
  1058      }
  1059      /**
  1060       * Adds an HTML image tag to the summary buffer
  1061       *
  1062       * @param {string} src path to the image you to embed
  1063       * @param {string} alt text description of the image
  1064       * @param {SummaryImageOptions} options (optional) addition image attributes
  1065       *
  1066       * @returns {Summary} summary instance
  1067       */
  1068      addImage(src, alt, options) {
  1069          const { width, height } = options || {};
  1070          const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));
  1071          const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));
  1072          return this.addRaw(element).addEOL();
  1073      }
  1074      /**
  1075       * Adds an HTML section heading element
  1076       *
  1077       * @param {string} text heading text
  1078       * @param {number | string} [level=1] (optional) the heading level, default: 1
  1079       *
  1080       * @returns {Summary} summary instance
  1081       */
  1082      addHeading(text, level) {
  1083          const tag = `h${level}`;
  1084          const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)
  1085              ? tag
  1086              : 'h1';
  1087          const element = this.wrap(allowedTag, text);
  1088          return this.addRaw(element).addEOL();
  1089      }
  1090      /**
  1091       * Adds an HTML thematic break (<hr>) to the summary buffer
  1092       *
  1093       * @returns {Summary} summary instance
  1094       */
  1095      addSeparator() {
  1096          const element = this.wrap('hr', null);
  1097          return this.addRaw(element).addEOL();
  1098      }
  1099      /**
  1100       * Adds an HTML line break (<br>) to the summary buffer
  1101       *
  1102       * @returns {Summary} summary instance
  1103       */
  1104      addBreak() {
  1105          const element = this.wrap('br', null);
  1106          return this.addRaw(element).addEOL();
  1107      }
  1108      /**
  1109       * Adds an HTML blockquote to the summary buffer
  1110       *
  1111       * @param {string} text quote text
  1112       * @param {string} cite (optional) citation url
  1113       *
  1114       * @returns {Summary} summary instance
  1115       */
  1116      addQuote(text, cite) {
  1117          const attrs = Object.assign({}, (cite && { cite }));
  1118          const element = this.wrap('blockquote', text, attrs);
  1119          return this.addRaw(element).addEOL();
  1120      }
  1121      /**
  1122       * Adds an HTML anchor tag to the summary buffer
  1123       *
  1124       * @param {string} text link text/content
  1125       * @param {string} href hyperlink
  1126       *
  1127       * @returns {Summary} summary instance
  1128       */
  1129      addLink(text, href) {
  1130          const element = this.wrap('a', text, { href });
  1131          return this.addRaw(element).addEOL();
  1132      }
  1133  }
  1134  const _summary = new Summary();
  1135  /**
  1136   * @deprecated use `core.summary`
  1137   */
  1138  exports.markdownSummary = _summary;
  1139  exports.summary = _summary;
  1140  //# sourceMappingURL=summary.js.map
  1141  
  1142  /***/ }),
  1143  
  1144  /***/ 5278:
  1145  /***/ ((__unused_webpack_module, exports) => {
  1146  
  1147  "use strict";
  1148  
  1149  // We use any as a valid input type
  1150  /* eslint-disable @typescript-eslint/no-explicit-any */
  1151  Object.defineProperty(exports, "__esModule", ({ value: true }));
  1152  exports.toCommandProperties = exports.toCommandValue = void 0;
  1153  /**
  1154   * Sanitizes an input into a string so it can be passed into issueCommand safely
  1155   * @param input input to sanitize into a string
  1156   */
  1157  function toCommandValue(input) {
  1158      if (input === null || input === undefined) {
  1159          return '';
  1160      }
  1161      else if (typeof input === 'string' || input instanceof String) {
  1162          return input;
  1163      }
  1164      return JSON.stringify(input);
  1165  }
  1166  exports.toCommandValue = toCommandValue;
  1167  /**
  1168   *
  1169   * @param annotationProperties
  1170   * @returns The command properties to send with the actual annotation command
  1171   * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646
  1172   */
  1173  function toCommandProperties(annotationProperties) {
  1174      if (!Object.keys(annotationProperties).length) {
  1175          return {};
  1176      }
  1177      return {
  1178          title: annotationProperties.title,
  1179          file: annotationProperties.file,
  1180          line: annotationProperties.startLine,
  1181          endLine: annotationProperties.endLine,
  1182          col: annotationProperties.startColumn,
  1183          endColumn: annotationProperties.endColumn
  1184      };
  1185  }
  1186  exports.toCommandProperties = toCommandProperties;
  1187  //# sourceMappingURL=utils.js.map
  1188  
  1189  /***/ }),
  1190  
  1191  /***/ 74087:
  1192  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  1193  
  1194  "use strict";
  1195  
  1196  Object.defineProperty(exports, "__esModule", ({ value: true }));
  1197  exports.Context = void 0;
  1198  const fs_1 = __nccwpck_require__(57147);
  1199  const os_1 = __nccwpck_require__(22037);
  1200  class Context {
  1201      /**
  1202       * Hydrate the context from the environment
  1203       */
  1204      constructor() {
  1205          var _a, _b, _c;
  1206          this.payload = {};
  1207          if (process.env.GITHUB_EVENT_PATH) {
  1208              if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) {
  1209                  this.payload = JSON.parse((0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));
  1210              }
  1211              else {
  1212                  const path = process.env.GITHUB_EVENT_PATH;
  1213                  process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);
  1214              }
  1215          }
  1216          this.eventName = process.env.GITHUB_EVENT_NAME;
  1217          this.sha = process.env.GITHUB_SHA;
  1218          this.ref = process.env.GITHUB_REF;
  1219          this.workflow = process.env.GITHUB_WORKFLOW;
  1220          this.action = process.env.GITHUB_ACTION;
  1221          this.actor = process.env.GITHUB_ACTOR;
  1222          this.job = process.env.GITHUB_JOB;
  1223          this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);
  1224          this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);
  1225          this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`;
  1226          this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`;
  1227          this.graphqlUrl =
  1228              (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`;
  1229      }
  1230      get issue() {
  1231          const payload = this.payload;
  1232          return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });
  1233      }
  1234      get repo() {
  1235          if (process.env.GITHUB_REPOSITORY) {
  1236              const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');
  1237              return { owner, repo };
  1238          }
  1239          if (this.payload.repository) {
  1240              return {
  1241                  owner: this.payload.repository.owner.login,
  1242                  repo: this.payload.repository.name
  1243              };
  1244          }
  1245          throw new Error("context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'");
  1246      }
  1247  }
  1248  exports.Context = Context;
  1249  //# sourceMappingURL=context.js.map
  1250  
  1251  /***/ }),
  1252  
  1253  /***/ 95438:
  1254  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
  1255  
  1256  "use strict";
  1257  
  1258  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
  1259      if (k2 === undefined) k2 = k;
  1260      var desc = Object.getOwnPropertyDescriptor(m, k);
  1261      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
  1262        desc = { enumerable: true, get: function() { return m[k]; } };
  1263      }
  1264      Object.defineProperty(o, k2, desc);
  1265  }) : (function(o, m, k, k2) {
  1266      if (k2 === undefined) k2 = k;
  1267      o[k2] = m[k];
  1268  }));
  1269  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
  1270      Object.defineProperty(o, "default", { enumerable: true, value: v });
  1271  }) : function(o, v) {
  1272      o["default"] = v;
  1273  });
  1274  var __importStar = (this && this.__importStar) || function (mod) {
  1275      if (mod && mod.__esModule) return mod;
  1276      var result = {};
  1277      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
  1278      __setModuleDefault(result, mod);
  1279      return result;
  1280  };
  1281  Object.defineProperty(exports, "__esModule", ({ value: true }));
  1282  exports.getOctokit = exports.context = void 0;
  1283  const Context = __importStar(__nccwpck_require__(74087));
  1284  const utils_1 = __nccwpck_require__(73030);
  1285  exports.context = new Context.Context();
  1286  /**
  1287   * Returns a hydrated octokit ready to use for GitHub Actions
  1288   *
  1289   * @param     token    the repo PAT or GITHUB_TOKEN
  1290   * @param     options  other options to set
  1291   */
  1292  function getOctokit(token, options, ...additionalPlugins) {
  1293      const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins);
  1294      return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options));
  1295  }
  1296  exports.getOctokit = getOctokit;
  1297  //# sourceMappingURL=github.js.map
  1298  
  1299  /***/ }),
  1300  
  1301  /***/ 47914:
  1302  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
  1303  
  1304  "use strict";
  1305  
  1306  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
  1307      if (k2 === undefined) k2 = k;
  1308      var desc = Object.getOwnPropertyDescriptor(m, k);
  1309      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
  1310        desc = { enumerable: true, get: function() { return m[k]; } };
  1311      }
  1312      Object.defineProperty(o, k2, desc);
  1313  }) : (function(o, m, k, k2) {
  1314      if (k2 === undefined) k2 = k;
  1315      o[k2] = m[k];
  1316  }));
  1317  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
  1318      Object.defineProperty(o, "default", { enumerable: true, value: v });
  1319  }) : function(o, v) {
  1320      o["default"] = v;
  1321  });
  1322  var __importStar = (this && this.__importStar) || function (mod) {
  1323      if (mod && mod.__esModule) return mod;
  1324      var result = {};
  1325      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
  1326      __setModuleDefault(result, mod);
  1327      return result;
  1328  };
  1329  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  1330      function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  1331      return new (P || (P = Promise))(function (resolve, reject) {
  1332          function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  1333          function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  1334          function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  1335          step((generator = generator.apply(thisArg, _arguments || [])).next());
  1336      });
  1337  };
  1338  Object.defineProperty(exports, "__esModule", ({ value: true }));
  1339  exports.getApiBaseUrl = exports.getProxyFetch = exports.getProxyAgentDispatcher = exports.getProxyAgent = exports.getAuthString = void 0;
  1340  const httpClient = __importStar(__nccwpck_require__(96255));
  1341  const undici_1 = __nccwpck_require__(41773);
  1342  function getAuthString(token, options) {
  1343      if (!token && !options.auth) {
  1344          throw new Error('Parameter token or opts.auth is required');
  1345      }
  1346      else if (token && options.auth) {
  1347          throw new Error('Parameters token and opts.auth may not both be specified');
  1348      }
  1349      return typeof options.auth === 'string' ? options.auth : `token ${token}`;
  1350  }
  1351  exports.getAuthString = getAuthString;
  1352  function getProxyAgent(destinationUrl) {
  1353      const hc = new httpClient.HttpClient();
  1354      return hc.getAgent(destinationUrl);
  1355  }
  1356  exports.getProxyAgent = getProxyAgent;
  1357  function getProxyAgentDispatcher(destinationUrl) {
  1358      const hc = new httpClient.HttpClient();
  1359      return hc.getAgentDispatcher(destinationUrl);
  1360  }
  1361  exports.getProxyAgentDispatcher = getProxyAgentDispatcher;
  1362  function getProxyFetch(destinationUrl) {
  1363      const httpDispatcher = getProxyAgentDispatcher(destinationUrl);
  1364      const proxyFetch = (url, opts) => __awaiter(this, void 0, void 0, function* () {
  1365          return (0, undici_1.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher }));
  1366      });
  1367      return proxyFetch;
  1368  }
  1369  exports.getProxyFetch = getProxyFetch;
  1370  function getApiBaseUrl() {
  1371      return process.env['GITHUB_API_URL'] || 'https://api.github.com';
  1372  }
  1373  exports.getApiBaseUrl = getApiBaseUrl;
  1374  //# sourceMappingURL=utils.js.map
  1375  
  1376  /***/ }),
  1377  
  1378  /***/ 73030:
  1379  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
  1380  
  1381  "use strict";
  1382  
  1383  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
  1384      if (k2 === undefined) k2 = k;
  1385      var desc = Object.getOwnPropertyDescriptor(m, k);
  1386      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
  1387        desc = { enumerable: true, get: function() { return m[k]; } };
  1388      }
  1389      Object.defineProperty(o, k2, desc);
  1390  }) : (function(o, m, k, k2) {
  1391      if (k2 === undefined) k2 = k;
  1392      o[k2] = m[k];
  1393  }));
  1394  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
  1395      Object.defineProperty(o, "default", { enumerable: true, value: v });
  1396  }) : function(o, v) {
  1397      o["default"] = v;
  1398  });
  1399  var __importStar = (this && this.__importStar) || function (mod) {
  1400      if (mod && mod.__esModule) return mod;
  1401      var result = {};
  1402      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
  1403      __setModuleDefault(result, mod);
  1404      return result;
  1405  };
  1406  Object.defineProperty(exports, "__esModule", ({ value: true }));
  1407  exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0;
  1408  const Context = __importStar(__nccwpck_require__(74087));
  1409  const Utils = __importStar(__nccwpck_require__(47914));
  1410  // octokit + plugins
  1411  const core_1 = __nccwpck_require__(76762);
  1412  const plugin_rest_endpoint_methods_1 = __nccwpck_require__(83044);
  1413  const plugin_paginate_rest_1 = __nccwpck_require__(64193);
  1414  exports.context = new Context.Context();
  1415  const baseUrl = Utils.getApiBaseUrl();
  1416  exports.defaults = {
  1417      baseUrl,
  1418      request: {
  1419          agent: Utils.getProxyAgent(baseUrl),
  1420          fetch: Utils.getProxyFetch(baseUrl)
  1421      }
  1422  };
  1423  exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults);
  1424  /**
  1425   * Convience function to correctly format Octokit Options to pass into the constructor.
  1426   *
  1427   * @param     token    the repo PAT or GITHUB_TOKEN
  1428   * @param     options  other options to set
  1429   */
  1430  function getOctokitOptions(token, options) {
  1431      const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller
  1432      // Auth
  1433      const auth = Utils.getAuthString(token, opts);
  1434      if (auth) {
  1435          opts.auth = auth;
  1436      }
  1437      return opts;
  1438  }
  1439  exports.getOctokitOptions = getOctokitOptions;
  1440  //# sourceMappingURL=utils.js.map
  1441  
  1442  /***/ }),
  1443  
  1444  /***/ 35526:
  1445  /***/ (function(__unused_webpack_module, exports) {
  1446  
  1447  "use strict";
  1448  
  1449  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  1450      function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  1451      return new (P || (P = Promise))(function (resolve, reject) {
  1452          function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  1453          function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  1454          function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  1455          step((generator = generator.apply(thisArg, _arguments || [])).next());
  1456      });
  1457  };
  1458  Object.defineProperty(exports, "__esModule", ({ value: true }));
  1459  exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;
  1460  class BasicCredentialHandler {
  1461      constructor(username, password) {
  1462          this.username = username;
  1463          this.password = password;
  1464      }
  1465      prepareRequest(options) {
  1466          if (!options.headers) {
  1467              throw Error('The request has no headers');
  1468          }
  1469          options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;
  1470      }
  1471      // This handler cannot handle 401
  1472      canHandleAuthentication() {
  1473          return false;
  1474      }
  1475      handleAuthentication() {
  1476          return __awaiter(this, void 0, void 0, function* () {
  1477              throw new Error('not implemented');
  1478          });
  1479      }
  1480  }
  1481  exports.BasicCredentialHandler = BasicCredentialHandler;
  1482  class BearerCredentialHandler {
  1483      constructor(token) {
  1484          this.token = token;
  1485      }
  1486      // currently implements pre-authorization
  1487      // TODO: support preAuth = false where it hooks on 401
  1488      prepareRequest(options) {
  1489          if (!options.headers) {
  1490              throw Error('The request has no headers');
  1491          }
  1492          options.headers['Authorization'] = `Bearer ${this.token}`;
  1493      }
  1494      // This handler cannot handle 401
  1495      canHandleAuthentication() {
  1496          return false;
  1497      }
  1498      handleAuthentication() {
  1499          return __awaiter(this, void 0, void 0, function* () {
  1500              throw new Error('not implemented');
  1501          });
  1502      }
  1503  }
  1504  exports.BearerCredentialHandler = BearerCredentialHandler;
  1505  class PersonalAccessTokenCredentialHandler {
  1506      constructor(token) {
  1507          this.token = token;
  1508      }
  1509      // currently implements pre-authorization
  1510      // TODO: support preAuth = false where it hooks on 401
  1511      prepareRequest(options) {
  1512          if (!options.headers) {
  1513              throw Error('The request has no headers');
  1514          }
  1515          options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;
  1516      }
  1517      // This handler cannot handle 401
  1518      canHandleAuthentication() {
  1519          return false;
  1520      }
  1521      handleAuthentication() {
  1522          return __awaiter(this, void 0, void 0, function* () {
  1523              throw new Error('not implemented');
  1524          });
  1525      }
  1526  }
  1527  exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;
  1528  //# sourceMappingURL=auth.js.map
  1529  
  1530  /***/ }),
  1531  
  1532  /***/ 96255:
  1533  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
  1534  
  1535  "use strict";
  1536  
  1537  /* eslint-disable @typescript-eslint/no-explicit-any */
  1538  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
  1539      if (k2 === undefined) k2 = k;
  1540      var desc = Object.getOwnPropertyDescriptor(m, k);
  1541      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
  1542        desc = { enumerable: true, get: function() { return m[k]; } };
  1543      }
  1544      Object.defineProperty(o, k2, desc);
  1545  }) : (function(o, m, k, k2) {
  1546      if (k2 === undefined) k2 = k;
  1547      o[k2] = m[k];
  1548  }));
  1549  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
  1550      Object.defineProperty(o, "default", { enumerable: true, value: v });
  1551  }) : function(o, v) {
  1552      o["default"] = v;
  1553  });
  1554  var __importStar = (this && this.__importStar) || function (mod) {
  1555      if (mod && mod.__esModule) return mod;
  1556      var result = {};
  1557      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
  1558      __setModuleDefault(result, mod);
  1559      return result;
  1560  };
  1561  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  1562      function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  1563      return new (P || (P = Promise))(function (resolve, reject) {
  1564          function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  1565          function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  1566          function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  1567          step((generator = generator.apply(thisArg, _arguments || [])).next());
  1568      });
  1569  };
  1570  Object.defineProperty(exports, "__esModule", ({ value: true }));
  1571  exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;
  1572  const http = __importStar(__nccwpck_require__(13685));
  1573  const https = __importStar(__nccwpck_require__(95687));
  1574  const pm = __importStar(__nccwpck_require__(19835));
  1575  const tunnel = __importStar(__nccwpck_require__(74294));
  1576  const undici_1 = __nccwpck_require__(41773);
  1577  var HttpCodes;
  1578  (function (HttpCodes) {
  1579      HttpCodes[HttpCodes["OK"] = 200] = "OK";
  1580      HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices";
  1581      HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently";
  1582      HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved";
  1583      HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther";
  1584      HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified";
  1585      HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy";
  1586      HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy";
  1587      HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect";
  1588      HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect";
  1589      HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest";
  1590      HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized";
  1591      HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired";
  1592      HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden";
  1593      HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound";
  1594      HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed";
  1595      HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable";
  1596      HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
  1597      HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout";
  1598      HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict";
  1599      HttpCodes[HttpCodes["Gone"] = 410] = "Gone";
  1600      HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests";
  1601      HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError";
  1602      HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented";
  1603      HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway";
  1604      HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable";
  1605      HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout";
  1606  })(HttpCodes || (exports.HttpCodes = HttpCodes = {}));
  1607  var Headers;
  1608  (function (Headers) {
  1609      Headers["Accept"] = "accept";
  1610      Headers["ContentType"] = "content-type";
  1611  })(Headers || (exports.Headers = Headers = {}));
  1612  var MediaTypes;
  1613  (function (MediaTypes) {
  1614      MediaTypes["ApplicationJson"] = "application/json";
  1615  })(MediaTypes || (exports.MediaTypes = MediaTypes = {}));
  1616  /**
  1617   * Returns the proxy URL, depending upon the supplied url and proxy environment variables.
  1618   * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
  1619   */
  1620  function getProxyUrl(serverUrl) {
  1621      const proxyUrl = pm.getProxyUrl(new URL(serverUrl));
  1622      return proxyUrl ? proxyUrl.href : '';
  1623  }
  1624  exports.getProxyUrl = getProxyUrl;
  1625  const HttpRedirectCodes = [
  1626      HttpCodes.MovedPermanently,
  1627      HttpCodes.ResourceMoved,
  1628      HttpCodes.SeeOther,
  1629      HttpCodes.TemporaryRedirect,
  1630      HttpCodes.PermanentRedirect
  1631  ];
  1632  const HttpResponseRetryCodes = [
  1633      HttpCodes.BadGateway,
  1634      HttpCodes.ServiceUnavailable,
  1635      HttpCodes.GatewayTimeout
  1636  ];
  1637  const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];
  1638  const ExponentialBackoffCeiling = 10;
  1639  const ExponentialBackoffTimeSlice = 5;
  1640  class HttpClientError extends Error {
  1641      constructor(message, statusCode) {
  1642          super(message);
  1643          this.name = 'HttpClientError';
  1644          this.statusCode = statusCode;
  1645          Object.setPrototypeOf(this, HttpClientError.prototype);
  1646      }
  1647  }
  1648  exports.HttpClientError = HttpClientError;
  1649  class HttpClientResponse {
  1650      constructor(message) {
  1651          this.message = message;
  1652      }
  1653      readBody() {
  1654          return __awaiter(this, void 0, void 0, function* () {
  1655              return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
  1656                  let output = Buffer.alloc(0);
  1657                  this.message.on('data', (chunk) => {
  1658                      output = Buffer.concat([output, chunk]);
  1659                  });
  1660                  this.message.on('end', () => {
  1661                      resolve(output.toString());
  1662                  });
  1663              }));
  1664          });
  1665      }
  1666      readBodyBuffer() {
  1667          return __awaiter(this, void 0, void 0, function* () {
  1668              return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
  1669                  const chunks = [];
  1670                  this.message.on('data', (chunk) => {
  1671                      chunks.push(chunk);
  1672                  });
  1673                  this.message.on('end', () => {
  1674                      resolve(Buffer.concat(chunks));
  1675                  });
  1676              }));
  1677          });
  1678      }
  1679  }
  1680  exports.HttpClientResponse = HttpClientResponse;
  1681  function isHttps(requestUrl) {
  1682      const parsedUrl = new URL(requestUrl);
  1683      return parsedUrl.protocol === 'https:';
  1684  }
  1685  exports.isHttps = isHttps;
  1686  class HttpClient {
  1687      constructor(userAgent, handlers, requestOptions) {
  1688          this._ignoreSslError = false;
  1689          this._allowRedirects = true;
  1690          this._allowRedirectDowngrade = false;
  1691          this._maxRedirects = 50;
  1692          this._allowRetries = false;
  1693          this._maxRetries = 1;
  1694          this._keepAlive = false;
  1695          this._disposed = false;
  1696          this.userAgent = userAgent;
  1697          this.handlers = handlers || [];
  1698          this.requestOptions = requestOptions;
  1699          if (requestOptions) {
  1700              if (requestOptions.ignoreSslError != null) {
  1701                  this._ignoreSslError = requestOptions.ignoreSslError;
  1702              }
  1703              this._socketTimeout = requestOptions.socketTimeout;
  1704              if (requestOptions.allowRedirects != null) {
  1705                  this._allowRedirects = requestOptions.allowRedirects;
  1706              }
  1707              if (requestOptions.allowRedirectDowngrade != null) {
  1708                  this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;
  1709              }
  1710              if (requestOptions.maxRedirects != null) {
  1711                  this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);
  1712              }
  1713              if (requestOptions.keepAlive != null) {
  1714                  this._keepAlive = requestOptions.keepAlive;
  1715              }
  1716              if (requestOptions.allowRetries != null) {
  1717                  this._allowRetries = requestOptions.allowRetries;
  1718              }
  1719              if (requestOptions.maxRetries != null) {
  1720                  this._maxRetries = requestOptions.maxRetries;
  1721              }
  1722          }
  1723      }
  1724      options(requestUrl, additionalHeaders) {
  1725          return __awaiter(this, void 0, void 0, function* () {
  1726              return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});
  1727          });
  1728      }
  1729      get(requestUrl, additionalHeaders) {
  1730          return __awaiter(this, void 0, void 0, function* () {
  1731              return this.request('GET', requestUrl, null, additionalHeaders || {});
  1732          });
  1733      }
  1734      del(requestUrl, additionalHeaders) {
  1735          return __awaiter(this, void 0, void 0, function* () {
  1736              return this.request('DELETE', requestUrl, null, additionalHeaders || {});
  1737          });
  1738      }
  1739      post(requestUrl, data, additionalHeaders) {
  1740          return __awaiter(this, void 0, void 0, function* () {
  1741              return this.request('POST', requestUrl, data, additionalHeaders || {});
  1742          });
  1743      }
  1744      patch(requestUrl, data, additionalHeaders) {
  1745          return __awaiter(this, void 0, void 0, function* () {
  1746              return this.request('PATCH', requestUrl, data, additionalHeaders || {});
  1747          });
  1748      }
  1749      put(requestUrl, data, additionalHeaders) {
  1750          return __awaiter(this, void 0, void 0, function* () {
  1751              return this.request('PUT', requestUrl, data, additionalHeaders || {});
  1752          });
  1753      }
  1754      head(requestUrl, additionalHeaders) {
  1755          return __awaiter(this, void 0, void 0, function* () {
  1756              return this.request('HEAD', requestUrl, null, additionalHeaders || {});
  1757          });
  1758      }
  1759      sendStream(verb, requestUrl, stream, additionalHeaders) {
  1760          return __awaiter(this, void 0, void 0, function* () {
  1761              return this.request(verb, requestUrl, stream, additionalHeaders);
  1762          });
  1763      }
  1764      /**
  1765       * Gets a typed object from an endpoint
  1766       * Be aware that not found returns a null.  Other errors (4xx, 5xx) reject the promise
  1767       */
  1768      getJson(requestUrl, additionalHeaders = {}) {
  1769          return __awaiter(this, void 0, void 0, function* () {
  1770              additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
  1771              const res = yield this.get(requestUrl, additionalHeaders);
  1772              return this._processResponse(res, this.requestOptions);
  1773          });
  1774      }
  1775      postJson(requestUrl, obj, additionalHeaders = {}) {
  1776          return __awaiter(this, void 0, void 0, function* () {
  1777              const data = JSON.stringify(obj, null, 2);
  1778              additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
  1779              additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
  1780              const res = yield this.post(requestUrl, data, additionalHeaders);
  1781              return this._processResponse(res, this.requestOptions);
  1782          });
  1783      }
  1784      putJson(requestUrl, obj, additionalHeaders = {}) {
  1785          return __awaiter(this, void 0, void 0, function* () {
  1786              const data = JSON.stringify(obj, null, 2);
  1787              additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
  1788              additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
  1789              const res = yield this.put(requestUrl, data, additionalHeaders);
  1790              return this._processResponse(res, this.requestOptions);
  1791          });
  1792      }
  1793      patchJson(requestUrl, obj, additionalHeaders = {}) {
  1794          return __awaiter(this, void 0, void 0, function* () {
  1795              const data = JSON.stringify(obj, null, 2);
  1796              additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);
  1797              additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);
  1798              const res = yield this.patch(requestUrl, data, additionalHeaders);
  1799              return this._processResponse(res, this.requestOptions);
  1800          });
  1801      }
  1802      /**
  1803       * Makes a raw http request.
  1804       * All other methods such as get, post, patch, and request ultimately call this.
  1805       * Prefer get, del, post and patch
  1806       */
  1807      request(verb, requestUrl, data, headers) {
  1808          return __awaiter(this, void 0, void 0, function* () {
  1809              if (this._disposed) {
  1810                  throw new Error('Client has already been disposed.');
  1811              }
  1812              const parsedUrl = new URL(requestUrl);
  1813              let info = this._prepareRequest(verb, parsedUrl, headers);
  1814              // Only perform retries on reads since writes may not be idempotent.
  1815              const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)
  1816                  ? this._maxRetries + 1
  1817                  : 1;
  1818              let numTries = 0;
  1819              let response;
  1820              do {
  1821                  response = yield this.requestRaw(info, data);
  1822                  // Check if it's an authentication challenge
  1823                  if (response &&
  1824                      response.message &&
  1825                      response.message.statusCode === HttpCodes.Unauthorized) {
  1826                      let authenticationHandler;
  1827                      for (const handler of this.handlers) {
  1828                          if (handler.canHandleAuthentication(response)) {
  1829                              authenticationHandler = handler;
  1830                              break;
  1831                          }
  1832                      }
  1833                      if (authenticationHandler) {
  1834                          return authenticationHandler.handleAuthentication(this, info, data);
  1835                      }
  1836                      else {
  1837                          // We have received an unauthorized response but have no handlers to handle it.
  1838                          // Let the response return to the caller.
  1839                          return response;
  1840                      }
  1841                  }
  1842                  let redirectsRemaining = this._maxRedirects;
  1843                  while (response.message.statusCode &&
  1844                      HttpRedirectCodes.includes(response.message.statusCode) &&
  1845                      this._allowRedirects &&
  1846                      redirectsRemaining > 0) {
  1847                      const redirectUrl = response.message.headers['location'];
  1848                      if (!redirectUrl) {
  1849                          // if there's no location to redirect to, we won't
  1850                          break;
  1851                      }
  1852                      const parsedRedirectUrl = new URL(redirectUrl);
  1853                      if (parsedUrl.protocol === 'https:' &&
  1854                          parsedUrl.protocol !== parsedRedirectUrl.protocol &&
  1855                          !this._allowRedirectDowngrade) {
  1856                          throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');
  1857                      }
  1858                      // we need to finish reading the response before reassigning response
  1859                      // which will leak the open socket.
  1860                      yield response.readBody();
  1861                      // strip authorization header if redirected to a different hostname
  1862                      if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {
  1863                          for (const header in headers) {
  1864                              // header names are case insensitive
  1865                              if (header.toLowerCase() === 'authorization') {
  1866                                  delete headers[header];
  1867                              }
  1868                          }
  1869                      }
  1870                      // let's make the request with the new redirectUrl
  1871                      info = this._prepareRequest(verb, parsedRedirectUrl, headers);
  1872                      response = yield this.requestRaw(info, data);
  1873                      redirectsRemaining--;
  1874                  }
  1875                  if (!response.message.statusCode ||
  1876                      !HttpResponseRetryCodes.includes(response.message.statusCode)) {
  1877                      // If not a retry code, return immediately instead of retrying
  1878                      return response;
  1879                  }
  1880                  numTries += 1;
  1881                  if (numTries < maxTries) {
  1882                      yield response.readBody();
  1883                      yield this._performExponentialBackoff(numTries);
  1884                  }
  1885              } while (numTries < maxTries);
  1886              return response;
  1887          });
  1888      }
  1889      /**
  1890       * Needs to be called if keepAlive is set to true in request options.
  1891       */
  1892      dispose() {
  1893          if (this._agent) {
  1894              this._agent.destroy();
  1895          }
  1896          this._disposed = true;
  1897      }
  1898      /**
  1899       * Raw request.
  1900       * @param info
  1901       * @param data
  1902       */
  1903      requestRaw(info, data) {
  1904          return __awaiter(this, void 0, void 0, function* () {
  1905              return new Promise((resolve, reject) => {
  1906                  function callbackForResult(err, res) {
  1907                      if (err) {
  1908                          reject(err);
  1909                      }
  1910                      else if (!res) {
  1911                          // If `err` is not passed, then `res` must be passed.
  1912                          reject(new Error('Unknown error'));
  1913                      }
  1914                      else {
  1915                          resolve(res);
  1916                      }
  1917                  }
  1918                  this.requestRawWithCallback(info, data, callbackForResult);
  1919              });
  1920          });
  1921      }
  1922      /**
  1923       * Raw request with callback.
  1924       * @param info
  1925       * @param data
  1926       * @param onResult
  1927       */
  1928      requestRawWithCallback(info, data, onResult) {
  1929          if (typeof data === 'string') {
  1930              if (!info.options.headers) {
  1931                  info.options.headers = {};
  1932              }
  1933              info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');
  1934          }
  1935          let callbackCalled = false;
  1936          function handleResult(err, res) {
  1937              if (!callbackCalled) {
  1938                  callbackCalled = true;
  1939                  onResult(err, res);
  1940              }
  1941          }
  1942          const req = info.httpModule.request(info.options, (msg) => {
  1943              const res = new HttpClientResponse(msg);
  1944              handleResult(undefined, res);
  1945          });
  1946          let socket;
  1947          req.on('socket', sock => {
  1948              socket = sock;
  1949          });
  1950          // If we ever get disconnected, we want the socket to timeout eventually
  1951          req.setTimeout(this._socketTimeout || 3 * 60000, () => {
  1952              if (socket) {
  1953                  socket.end();
  1954              }
  1955              handleResult(new Error(`Request timeout: ${info.options.path}`));
  1956          });
  1957          req.on('error', function (err) {
  1958              // err has statusCode property
  1959              // res should have headers
  1960              handleResult(err);
  1961          });
  1962          if (data && typeof data === 'string') {
  1963              req.write(data, 'utf8');
  1964          }
  1965          if (data && typeof data !== 'string') {
  1966              data.on('close', function () {
  1967                  req.end();
  1968              });
  1969              data.pipe(req);
  1970          }
  1971          else {
  1972              req.end();
  1973          }
  1974      }
  1975      /**
  1976       * Gets an http agent. This function is useful when you need an http agent that handles
  1977       * routing through a proxy server - depending upon the url and proxy environment variables.
  1978       * @param serverUrl  The server URL where the request will be sent. For example, https://api.github.com
  1979       */
  1980      getAgent(serverUrl) {
  1981          const parsedUrl = new URL(serverUrl);
  1982          return this._getAgent(parsedUrl);
  1983      }
  1984      getAgentDispatcher(serverUrl) {
  1985          const parsedUrl = new URL(serverUrl);
  1986          const proxyUrl = pm.getProxyUrl(parsedUrl);
  1987          const useProxy = proxyUrl && proxyUrl.hostname;
  1988          if (!useProxy) {
  1989              return;
  1990          }
  1991          return this._getProxyAgentDispatcher(parsedUrl, proxyUrl);
  1992      }
  1993      _prepareRequest(method, requestUrl, headers) {
  1994          const info = {};
  1995          info.parsedUrl = requestUrl;
  1996          const usingSsl = info.parsedUrl.protocol === 'https:';
  1997          info.httpModule = usingSsl ? https : http;
  1998          const defaultPort = usingSsl ? 443 : 80;
  1999          info.options = {};
  2000          info.options.host = info.parsedUrl.hostname;
  2001          info.options.port = info.parsedUrl.port
  2002              ? parseInt(info.parsedUrl.port)
  2003              : defaultPort;
  2004          info.options.path =
  2005              (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');
  2006          info.options.method = method;
  2007          info.options.headers = this._mergeHeaders(headers);
  2008          if (this.userAgent != null) {
  2009              info.options.headers['user-agent'] = this.userAgent;
  2010          }
  2011          info.options.agent = this._getAgent(info.parsedUrl);
  2012          // gives handlers an opportunity to participate
  2013          if (this.handlers) {
  2014              for (const handler of this.handlers) {
  2015                  handler.prepareRequest(info.options);
  2016              }
  2017          }
  2018          return info;
  2019      }
  2020      _mergeHeaders(headers) {
  2021          if (this.requestOptions && this.requestOptions.headers) {
  2022              return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));
  2023          }
  2024          return lowercaseKeys(headers || {});
  2025      }
  2026      _getExistingOrDefaultHeader(additionalHeaders, header, _default) {
  2027          let clientHeader;
  2028          if (this.requestOptions && this.requestOptions.headers) {
  2029              clientHeader = lowercaseKeys(this.requestOptions.headers)[header];
  2030          }
  2031          return additionalHeaders[header] || clientHeader || _default;
  2032      }
  2033      _getAgent(parsedUrl) {
  2034          let agent;
  2035          const proxyUrl = pm.getProxyUrl(parsedUrl);
  2036          const useProxy = proxyUrl && proxyUrl.hostname;
  2037          if (this._keepAlive && useProxy) {
  2038              agent = this._proxyAgent;
  2039          }
  2040          if (!useProxy) {
  2041              agent = this._agent;
  2042          }
  2043          // if agent is already assigned use that agent.
  2044          if (agent) {
  2045              return agent;
  2046          }
  2047          const usingSsl = parsedUrl.protocol === 'https:';
  2048          let maxSockets = 100;
  2049          if (this.requestOptions) {
  2050              maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;
  2051          }
  2052          // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.
  2053          if (proxyUrl && proxyUrl.hostname) {
  2054              const agentOptions = {
  2055                  maxSockets,
  2056                  keepAlive: this._keepAlive,
  2057                  proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {
  2058                      proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`
  2059                  })), { host: proxyUrl.hostname, port: proxyUrl.port })
  2060              };
  2061              let tunnelAgent;
  2062              const overHttps = proxyUrl.protocol === 'https:';
  2063              if (usingSsl) {
  2064                  tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;
  2065              }
  2066              else {
  2067                  tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;
  2068              }
  2069              agent = tunnelAgent(agentOptions);
  2070              this._proxyAgent = agent;
  2071          }
  2072          // if tunneling agent isn't assigned create a new agent
  2073          if (!agent) {
  2074              const options = { keepAlive: this._keepAlive, maxSockets };
  2075              agent = usingSsl ? new https.Agent(options) : new http.Agent(options);
  2076              this._agent = agent;
  2077          }
  2078          if (usingSsl && this._ignoreSslError) {
  2079              // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
  2080              // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
  2081              // we have to cast it to any and change it directly
  2082              agent.options = Object.assign(agent.options || {}, {
  2083                  rejectUnauthorized: false
  2084              });
  2085          }
  2086          return agent;
  2087      }
  2088      _getProxyAgentDispatcher(parsedUrl, proxyUrl) {
  2089          let proxyAgent;
  2090          if (this._keepAlive) {
  2091              proxyAgent = this._proxyAgentDispatcher;
  2092          }
  2093          // if agent is already assigned use that agent.
  2094          if (proxyAgent) {
  2095              return proxyAgent;
  2096          }
  2097          const usingSsl = parsedUrl.protocol === 'https:';
  2098          proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && {
  2099              token: `${proxyUrl.username}:${proxyUrl.password}`
  2100          })));
  2101          this._proxyAgentDispatcher = proxyAgent;
  2102          if (usingSsl && this._ignoreSslError) {
  2103              // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process
  2104              // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options
  2105              // we have to cast it to any and change it directly
  2106              proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, {
  2107                  rejectUnauthorized: false
  2108              });
  2109          }
  2110          return proxyAgent;
  2111      }
  2112      _performExponentialBackoff(retryNumber) {
  2113          return __awaiter(this, void 0, void 0, function* () {
  2114              retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);
  2115              const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);
  2116              return new Promise(resolve => setTimeout(() => resolve(), ms));
  2117          });
  2118      }
  2119      _processResponse(res, options) {
  2120          return __awaiter(this, void 0, void 0, function* () {
  2121              return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
  2122                  const statusCode = res.message.statusCode || 0;
  2123                  const response = {
  2124                      statusCode,
  2125                      result: null,
  2126                      headers: {}
  2127                  };
  2128                  // not found leads to null obj returned
  2129                  if (statusCode === HttpCodes.NotFound) {
  2130                      resolve(response);
  2131                  }
  2132                  // get the result from the body
  2133                  function dateTimeDeserializer(key, value) {
  2134                      if (typeof value === 'string') {
  2135                          const a = new Date(value);
  2136                          if (!isNaN(a.valueOf())) {
  2137                              return a;
  2138                          }
  2139                      }
  2140                      return value;
  2141                  }
  2142                  let obj;
  2143                  let contents;
  2144                  try {
  2145                      contents = yield res.readBody();
  2146                      if (contents && contents.length > 0) {
  2147                          if (options && options.deserializeDates) {
  2148                              obj = JSON.parse(contents, dateTimeDeserializer);
  2149                          }
  2150                          else {
  2151                              obj = JSON.parse(contents);
  2152                          }
  2153                          response.result = obj;
  2154                      }
  2155                      response.headers = res.message.headers;
  2156                  }
  2157                  catch (err) {
  2158                      // Invalid resource (contents not json);  leaving result obj null
  2159                  }
  2160                  // note that 3xx redirects are handled by the http layer.
  2161                  if (statusCode > 299) {
  2162                      let msg;
  2163                      // if exception/error in body, attempt to get better error
  2164                      if (obj && obj.message) {
  2165                          msg = obj.message;
  2166                      }
  2167                      else if (contents && contents.length > 0) {
  2168                          // it may be the case that the exception is in the body message as string
  2169                          msg = contents;
  2170                      }
  2171                      else {
  2172                          msg = `Failed request: (${statusCode})`;
  2173                      }
  2174                      const err = new HttpClientError(msg, statusCode);
  2175                      err.result = response.result;
  2176                      reject(err);
  2177                  }
  2178                  else {
  2179                      resolve(response);
  2180                  }
  2181              }));
  2182          });
  2183      }
  2184  }
  2185  exports.HttpClient = HttpClient;
  2186  const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});
  2187  //# sourceMappingURL=index.js.map
  2188  
  2189  /***/ }),
  2190  
  2191  /***/ 19835:
  2192  /***/ ((__unused_webpack_module, exports) => {
  2193  
  2194  "use strict";
  2195  
  2196  Object.defineProperty(exports, "__esModule", ({ value: true }));
  2197  exports.checkBypass = exports.getProxyUrl = void 0;
  2198  function getProxyUrl(reqUrl) {
  2199      const usingSsl = reqUrl.protocol === 'https:';
  2200      if (checkBypass(reqUrl)) {
  2201          return undefined;
  2202      }
  2203      const proxyVar = (() => {
  2204          if (usingSsl) {
  2205              return process.env['https_proxy'] || process.env['HTTPS_PROXY'];
  2206          }
  2207          else {
  2208              return process.env['http_proxy'] || process.env['HTTP_PROXY'];
  2209          }
  2210      })();
  2211      if (proxyVar) {
  2212          try {
  2213              return new URL(proxyVar);
  2214          }
  2215          catch (_a) {
  2216              if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://'))
  2217                  return new URL(`http://${proxyVar}`);
  2218          }
  2219      }
  2220      else {
  2221          return undefined;
  2222      }
  2223  }
  2224  exports.getProxyUrl = getProxyUrl;
  2225  function checkBypass(reqUrl) {
  2226      if (!reqUrl.hostname) {
  2227          return false;
  2228      }
  2229      const reqHost = reqUrl.hostname;
  2230      if (isLoopbackAddress(reqHost)) {
  2231          return true;
  2232      }
  2233      const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';
  2234      if (!noProxy) {
  2235          return false;
  2236      }
  2237      // Determine the request port
  2238      let reqPort;
  2239      if (reqUrl.port) {
  2240          reqPort = Number(reqUrl.port);
  2241      }
  2242      else if (reqUrl.protocol === 'http:') {
  2243          reqPort = 80;
  2244      }
  2245      else if (reqUrl.protocol === 'https:') {
  2246          reqPort = 443;
  2247      }
  2248      // Format the request hostname and hostname with port
  2249      const upperReqHosts = [reqUrl.hostname.toUpperCase()];
  2250      if (typeof reqPort === 'number') {
  2251          upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);
  2252      }
  2253      // Compare request host against noproxy
  2254      for (const upperNoProxyItem of noProxy
  2255          .split(',')
  2256          .map(x => x.trim().toUpperCase())
  2257          .filter(x => x)) {
  2258          if (upperNoProxyItem === '*' ||
  2259              upperReqHosts.some(x => x === upperNoProxyItem ||
  2260                  x.endsWith(`.${upperNoProxyItem}`) ||
  2261                  (upperNoProxyItem.startsWith('.') &&
  2262                      x.endsWith(`${upperNoProxyItem}`)))) {
  2263              return true;
  2264          }
  2265      }
  2266      return false;
  2267  }
  2268  exports.checkBypass = checkBypass;
  2269  function isLoopbackAddress(host) {
  2270      const hostLower = host.toLowerCase();
  2271      return (hostLower === 'localhost' ||
  2272          hostLower.startsWith('127.') ||
  2273          hostLower.startsWith('[::1]') ||
  2274          hostLower.startsWith('[0:0:0:0:0:0:0:1]'));
  2275  }
  2276  //# sourceMappingURL=proxy.js.map
  2277  
  2278  /***/ }),
  2279  
  2280  /***/ 28520:
  2281  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  2282  
  2283  "use strict";
  2284  
  2285  
  2286  const net = __nccwpck_require__(41808)
  2287  const tls = __nccwpck_require__(24404)
  2288  const { once } = __nccwpck_require__(82361)
  2289  const timers = __nccwpck_require__(68670)
  2290  const { normalizeOptions, cacheOptions } = __nccwpck_require__(61709)
  2291  const { getProxy, getProxyAgent, proxyCache } = __nccwpck_require__(68443)
  2292  const Errors = __nccwpck_require__(74724)
  2293  const { Agent: AgentBase } = __nccwpck_require__(70694)
  2294  
  2295  module.exports = class Agent extends AgentBase {
  2296    #options
  2297    #timeouts
  2298    #proxy
  2299    #noProxy
  2300    #ProxyAgent
  2301  
  2302    constructor (options = {}) {
  2303      const { timeouts, proxy, noProxy, ...normalizedOptions } = normalizeOptions(options)
  2304  
  2305      super(normalizedOptions)
  2306  
  2307      this.#options = normalizedOptions
  2308      this.#timeouts = timeouts
  2309  
  2310      if (proxy) {
  2311        this.#proxy = new URL(proxy)
  2312        this.#noProxy = noProxy
  2313        this.#ProxyAgent = getProxyAgent(proxy)
  2314      }
  2315    }
  2316  
  2317    get proxy () {
  2318      return this.#proxy ? { url: this.#proxy } : {}
  2319    }
  2320  
  2321    #getProxy (options) {
  2322      if (!this.#proxy) {
  2323        return
  2324      }
  2325  
  2326      const proxy = getProxy(`${options.protocol}//${options.host}:${options.port}`, {
  2327        proxy: this.#proxy,
  2328        noProxy: this.#noProxy,
  2329      })
  2330  
  2331      if (!proxy) {
  2332        return
  2333      }
  2334  
  2335      const cacheKey = cacheOptions({
  2336        ...options,
  2337        ...this.#options,
  2338        timeouts: this.#timeouts,
  2339        proxy,
  2340      })
  2341  
  2342      if (proxyCache.has(cacheKey)) {
  2343        return proxyCache.get(cacheKey)
  2344      }
  2345  
  2346      let ProxyAgent = this.#ProxyAgent
  2347      if (Array.isArray(ProxyAgent)) {
  2348        ProxyAgent = this.isSecureEndpoint(options) ? ProxyAgent[1] : ProxyAgent[0]
  2349      }
  2350  
  2351      const proxyAgent = new ProxyAgent(proxy, this.#options)
  2352      proxyCache.set(cacheKey, proxyAgent)
  2353  
  2354      return proxyAgent
  2355    }
  2356  
  2357    // takes an array of promises and races them against the connection timeout
  2358    // which will throw the necessary error if it is hit. This will return the
  2359    // result of the promise race.
  2360    async #timeoutConnection ({ promises, options, timeout }, ac = new AbortController()) {
  2361      if (timeout) {
  2362        const connectionTimeout = timers.setTimeout(timeout, null, { signal: ac.signal })
  2363          .then(() => {
  2364            throw new Errors.ConnectionTimeoutError(`${options.host}:${options.port}`)
  2365          }).catch((err) => {
  2366            if (err.name === 'AbortError') {
  2367              return
  2368            }
  2369            throw err
  2370          })
  2371        promises.push(connectionTimeout)
  2372      }
  2373  
  2374      let result
  2375      try {
  2376        result = await Promise.race(promises)
  2377        ac.abort()
  2378      } catch (err) {
  2379        ac.abort()
  2380        throw err
  2381      }
  2382      return result
  2383    }
  2384  
  2385    async connect (request, options) {
  2386      // if the connection does not have its own lookup function
  2387      // set, then use the one from our options
  2388      options.lookup ??= this.#options.lookup
  2389  
  2390      let socket
  2391      let timeout = this.#timeouts.connection
  2392      const isSecureEndpoint = this.isSecureEndpoint(options)
  2393  
  2394      const proxy = this.#getProxy(options)
  2395      if (proxy) {
  2396        // some of the proxies will wait for the socket to fully connect before
  2397        // returning so we have to await this while also racing it against the
  2398        // connection timeout.
  2399        const start = Date.now()
  2400        socket = await this.#timeoutConnection({
  2401          options,
  2402          timeout,
  2403          promises: [proxy.connect(request, options)],
  2404        })
  2405        // see how much time proxy.connect took and subtract it from
  2406        // the timeout
  2407        if (timeout) {
  2408          timeout = timeout - (Date.now() - start)
  2409        }
  2410      } else {
  2411        socket = (isSecureEndpoint ? tls : net).connect(options)
  2412      }
  2413  
  2414      socket.setKeepAlive(this.keepAlive, this.keepAliveMsecs)
  2415      socket.setNoDelay(this.keepAlive)
  2416  
  2417      const abortController = new AbortController()
  2418      const { signal } = abortController
  2419  
  2420      const connectPromise = socket[isSecureEndpoint ? 'secureConnecting' : 'connecting']
  2421        ? once(socket, isSecureEndpoint ? 'secureConnect' : 'connect', { signal })
  2422        : Promise.resolve()
  2423  
  2424      await this.#timeoutConnection({
  2425        options,
  2426        timeout,
  2427        promises: [
  2428          connectPromise,
  2429          once(socket, 'error', { signal }).then((err) => {
  2430            throw err[0]
  2431          }),
  2432        ],
  2433      }, abortController)
  2434  
  2435      if (this.#timeouts.idle) {
  2436        socket.setTimeout(this.#timeouts.idle, () => {
  2437          socket.destroy(new Errors.IdleTimeoutError(`${options.host}:${options.port}`))
  2438        })
  2439      }
  2440  
  2441      return socket
  2442    }
  2443  
  2444    addRequest (request, options) {
  2445      const proxy = this.#getProxy(options)
  2446      // it would be better to call proxy.addRequest here but this causes the
  2447      // http-proxy-agent to call its super.addRequest which causes the request
  2448      // to be added to the agent twice. since we only support 3 agents
  2449      // currently (see the required agents in proxy.js) we have manually
  2450      // checked that the only public methods we need to call are called in the
  2451      // next block. this could change in the future and presumably we would get
  2452      // failing tests until we have properly called the necessary methods on
  2453      // each of our proxy agents
  2454      if (proxy?.setRequestProps) {
  2455        proxy.setRequestProps(request, options)
  2456      }
  2457  
  2458      request.setHeader('connection', this.keepAlive ? 'keep-alive' : 'close')
  2459  
  2460      if (this.#timeouts.response) {
  2461        let responseTimeout
  2462        request.once('finish', () => {
  2463          setTimeout(() => {
  2464            request.destroy(new Errors.ResponseTimeoutError(request, this.#proxy))
  2465          }, this.#timeouts.response)
  2466        })
  2467        request.once('response', () => {
  2468          clearTimeout(responseTimeout)
  2469        })
  2470      }
  2471  
  2472      if (this.#timeouts.transfer) {
  2473        let transferTimeout
  2474        request.once('response', (res) => {
  2475          setTimeout(() => {
  2476            res.destroy(new Errors.TransferTimeoutError(request, this.#proxy))
  2477          }, this.#timeouts.transfer)
  2478          res.once('close', () => {
  2479            clearTimeout(transferTimeout)
  2480          })
  2481        })
  2482      }
  2483  
  2484      return super.addRequest(request, options)
  2485    }
  2486  }
  2487  
  2488  
  2489  /***/ }),
  2490  
  2491  /***/ 92292:
  2492  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  2493  
  2494  "use strict";
  2495  
  2496  
  2497  const { LRUCache } = __nccwpck_require__(24446)
  2498  const dns = __nccwpck_require__(9523)
  2499  
  2500  // this is a factory so that each request can have its own opts (i.e. ttl)
  2501  // while still sharing the cache across all requests
  2502  const cache = new LRUCache({ max: 50 })
  2503  
  2504  const getOptions = ({
  2505    family = 0,
  2506    hints = dns.ADDRCONFIG,
  2507    all = false,
  2508    verbatim = undefined,
  2509    ttl = 5 * 60 * 1000,
  2510    lookup = dns.lookup,
  2511  }) => ({
  2512    // hints and lookup are returned since both are top level properties to (net|tls).connect
  2513    hints,
  2514    lookup: (hostname, ...args) => {
  2515      const callback = args.pop() // callback is always last arg
  2516      const lookupOptions = args[0] ?? {}
  2517  
  2518      const options = {
  2519        family,
  2520        hints,
  2521        all,
  2522        verbatim,
  2523        ...(typeof lookupOptions === 'number' ? { family: lookupOptions } : lookupOptions),
  2524      }
  2525  
  2526      const key = JSON.stringify({ hostname, ...options })
  2527  
  2528      if (cache.has(key)) {
  2529        const cached = cache.get(key)
  2530        return process.nextTick(callback, null, ...cached)
  2531      }
  2532  
  2533      lookup(hostname, options, (err, ...result) => {
  2534        if (err) {
  2535          return callback(err)
  2536        }
  2537  
  2538        cache.set(key, result, { ttl })
  2539        return callback(null, ...result)
  2540      })
  2541    },
  2542  })
  2543  
  2544  module.exports = {
  2545    cache,
  2546    getOptions,
  2547  }
  2548  
  2549  
  2550  /***/ }),
  2551  
  2552  /***/ 74724:
  2553  /***/ ((module) => {
  2554  
  2555  "use strict";
  2556  
  2557  
  2558  class InvalidProxyProtocolError extends Error {
  2559    constructor (url) {
  2560      super(`Invalid protocol \`${url.protocol}\` connecting to proxy \`${url.host}\``)
  2561      this.code = 'EINVALIDPROXY'
  2562      this.proxy = url
  2563    }
  2564  }
  2565  
  2566  class ConnectionTimeoutError extends Error {
  2567    constructor (host) {
  2568      super(`Timeout connecting to host \`${host}\``)
  2569      this.code = 'ECONNECTIONTIMEOUT'
  2570      this.host = host
  2571    }
  2572  }
  2573  
  2574  class IdleTimeoutError extends Error {
  2575    constructor (host) {
  2576      super(`Idle timeout reached for host \`${host}\``)
  2577      this.code = 'EIDLETIMEOUT'
  2578      this.host = host
  2579    }
  2580  }
  2581  
  2582  class ResponseTimeoutError extends Error {
  2583    constructor (request, proxy) {
  2584      let msg = 'Response timeout '
  2585      if (proxy) {
  2586        msg += `from proxy \`${proxy.host}\` `
  2587      }
  2588      msg += `connecting to host \`${request.host}\``
  2589      super(msg)
  2590      this.code = 'ERESPONSETIMEOUT'
  2591      this.proxy = proxy
  2592      this.request = request
  2593    }
  2594  }
  2595  
  2596  class TransferTimeoutError extends Error {
  2597    constructor (request, proxy) {
  2598      let msg = 'Transfer timeout '
  2599      if (proxy) {
  2600        msg += `from proxy \`${proxy.host}\` `
  2601      }
  2602      msg += `for \`${request.host}\``
  2603      super(msg)
  2604      this.code = 'ETRANSFERTIMEOUT'
  2605      this.proxy = proxy
  2606      this.request = request
  2607    }
  2608  }
  2609  
  2610  module.exports = {
  2611    InvalidProxyProtocolError,
  2612    ConnectionTimeoutError,
  2613    IdleTimeoutError,
  2614    ResponseTimeoutError,
  2615    TransferTimeoutError,
  2616  }
  2617  
  2618  
  2619  /***/ }),
  2620  
  2621  /***/ 79907:
  2622  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  2623  
  2624  "use strict";
  2625  
  2626  
  2627  const { LRUCache } = __nccwpck_require__(24446)
  2628  const { normalizeOptions, cacheOptions } = __nccwpck_require__(61709)
  2629  const { getProxy, proxyCache } = __nccwpck_require__(68443)
  2630  const dns = __nccwpck_require__(92292)
  2631  const Agent = __nccwpck_require__(28520)
  2632  
  2633  const agentCache = new LRUCache({ max: 20 })
  2634  
  2635  const getAgent = (url, { agent, proxy, noProxy, ...options } = {}) => {
  2636    // false has meaning so this can't be a simple truthiness check
  2637    if (agent != null) {
  2638      return agent
  2639    }
  2640  
  2641    url = new URL(url)
  2642  
  2643    const proxyForUrl = getProxy(url, { proxy, noProxy })
  2644    const normalizedOptions = {
  2645      ...normalizeOptions(options),
  2646      proxy: proxyForUrl,
  2647    }
  2648  
  2649    const cacheKey = cacheOptions({
  2650      ...normalizedOptions,
  2651      secureEndpoint: url.protocol === 'https:',
  2652    })
  2653  
  2654    if (agentCache.has(cacheKey)) {
  2655      return agentCache.get(cacheKey)
  2656    }
  2657  
  2658    const newAgent = new Agent(normalizedOptions)
  2659    agentCache.set(cacheKey, newAgent)
  2660  
  2661    return newAgent
  2662  }
  2663  
  2664  module.exports = {
  2665    getAgent,
  2666    Agent,
  2667    // these are exported for backwards compatability
  2668    HttpAgent: Agent,
  2669    HttpsAgent: Agent,
  2670    cache: {
  2671      proxy: proxyCache,
  2672      agent: agentCache,
  2673      dns: dns.cache,
  2674      clear: () => {
  2675        proxyCache.clear()
  2676        agentCache.clear()
  2677        dns.cache.clear()
  2678      },
  2679    },
  2680  }
  2681  
  2682  
  2683  /***/ }),
  2684  
  2685  /***/ 61709:
  2686  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  2687  
  2688  "use strict";
  2689  
  2690  
  2691  const dns = __nccwpck_require__(92292)
  2692  
  2693  const normalizeOptions = (opts) => {
  2694    const family = parseInt(opts.family ?? '0', 10)
  2695    const keepAlive = opts.keepAlive ?? true
  2696  
  2697    const normalized = {
  2698      // nodejs http agent options. these are all the defaults
  2699      // but kept here to increase the likelihood of cache hits
  2700      // https://nodejs.org/api/http.html#new-agentoptions
  2701      keepAliveMsecs: keepAlive ? 1000 : undefined,
  2702      maxSockets: opts.maxSockets ?? 15,
  2703      maxTotalSockets: Infinity,
  2704      maxFreeSockets: keepAlive ? 256 : undefined,
  2705      scheduling: 'fifo',
  2706      // then spread the rest of the options
  2707      ...opts,
  2708      // we already set these to their defaults that we want
  2709      family,
  2710      keepAlive,
  2711      // our custom timeout options
  2712      timeouts: {
  2713        // the standard timeout option is mapped to our idle timeout
  2714        // and then deleted below
  2715        idle: opts.timeout ?? 0,
  2716        connection: 0,
  2717        response: 0,
  2718        transfer: 0,
  2719        ...opts.timeouts,
  2720      },
  2721      // get the dns options that go at the top level of socket connection
  2722      ...dns.getOptions({ family, ...opts.dns }),
  2723    }
  2724  
  2725    // remove timeout since we already used it to set our own idle timeout
  2726    delete normalized.timeout
  2727  
  2728    return normalized
  2729  }
  2730  
  2731  const createKey = (obj) => {
  2732    let key = ''
  2733    const sorted = Object.entries(obj).sort((a, b) => a[0] - b[0])
  2734    for (let [k, v] of sorted) {
  2735      if (v == null) {
  2736        v = 'null'
  2737      } else if (v instanceof URL) {
  2738        v = v.toString()
  2739      } else if (typeof v === 'object') {
  2740        v = createKey(v)
  2741      }
  2742      key += `${k}:${v}:`
  2743    }
  2744    return key
  2745  }
  2746  
  2747  const cacheOptions = ({ secureEndpoint, ...options }) => createKey({
  2748    secureEndpoint: !!secureEndpoint,
  2749    // socket connect options
  2750    family: options.family,
  2751    hints: options.hints,
  2752    localAddress: options.localAddress,
  2753    // tls specific connect options
  2754    strictSsl: secureEndpoint ? !!options.rejectUnauthorized : false,
  2755    ca: secureEndpoint ? options.ca : null,
  2756    cert: secureEndpoint ? options.cert : null,
  2757    key: secureEndpoint ? options.key : null,
  2758    // http agent options
  2759    keepAlive: options.keepAlive,
  2760    keepAliveMsecs: options.keepAliveMsecs,
  2761    maxSockets: options.maxSockets,
  2762    maxTotalSockets: options.maxTotalSockets,
  2763    maxFreeSockets: options.maxFreeSockets,
  2764    scheduling: options.scheduling,
  2765    // timeout options
  2766    timeouts: options.timeouts,
  2767    // proxy
  2768    proxy: options.proxy,
  2769  })
  2770  
  2771  module.exports = {
  2772    normalizeOptions,
  2773    cacheOptions,
  2774  }
  2775  
  2776  
  2777  /***/ }),
  2778  
  2779  /***/ 68443:
  2780  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  2781  
  2782  "use strict";
  2783  
  2784  
  2785  const { HttpProxyAgent } = __nccwpck_require__(23764)
  2786  const { HttpsProxyAgent } = __nccwpck_require__(77219)
  2787  const { SocksProxyAgent } = __nccwpck_require__(25038)
  2788  const { LRUCache } = __nccwpck_require__(24446)
  2789  const { InvalidProxyProtocolError } = __nccwpck_require__(74724)
  2790  
  2791  const PROXY_CACHE = new LRUCache({ max: 20 })
  2792  
  2793  const SOCKS_PROTOCOLS = new Set(SocksProxyAgent.protocols)
  2794  
  2795  const PROXY_ENV_KEYS = new Set(['https_proxy', 'http_proxy', 'proxy', 'no_proxy'])
  2796  
  2797  const PROXY_ENV = Object.entries(process.env).reduce((acc, [key, value]) => {
  2798    key = key.toLowerCase()
  2799    if (PROXY_ENV_KEYS.has(key)) {
  2800      acc[key] = value
  2801    }
  2802    return acc
  2803  }, {})
  2804  
  2805  const getProxyAgent = (url) => {
  2806    url = new URL(url)
  2807  
  2808    const protocol = url.protocol.slice(0, -1)
  2809    if (SOCKS_PROTOCOLS.has(protocol)) {
  2810      return SocksProxyAgent
  2811    }
  2812    if (protocol === 'https' || protocol === 'http') {
  2813      return [HttpProxyAgent, HttpsProxyAgent]
  2814    }
  2815  
  2816    throw new InvalidProxyProtocolError(url)
  2817  }
  2818  
  2819  const isNoProxy = (url, noProxy) => {
  2820    if (typeof noProxy === 'string') {
  2821      noProxy = noProxy.split(',').map((p) => p.trim()).filter(Boolean)
  2822    }
  2823  
  2824    if (!noProxy || !noProxy.length) {
  2825      return false
  2826    }
  2827  
  2828    const hostSegments = url.hostname.split('.').reverse()
  2829  
  2830    return noProxy.some((no) => {
  2831      const noSegments = no.split('.').filter(Boolean).reverse()
  2832      if (!noSegments.length) {
  2833        return false
  2834      }
  2835  
  2836      for (let i = 0; i < noSegments.length; i++) {
  2837        if (hostSegments[i] !== noSegments[i]) {
  2838          return false
  2839        }
  2840      }
  2841  
  2842      return true
  2843    })
  2844  }
  2845  
  2846  const getProxy = (url, { proxy, noProxy }) => {
  2847    url = new URL(url)
  2848  
  2849    if (!proxy) {
  2850      proxy = url.protocol === 'https:'
  2851        ? PROXY_ENV.https_proxy
  2852        : PROXY_ENV.https_proxy || PROXY_ENV.http_proxy || PROXY_ENV.proxy
  2853    }
  2854  
  2855    if (!noProxy) {
  2856      noProxy = PROXY_ENV.no_proxy
  2857    }
  2858  
  2859    if (!proxy || isNoProxy(url, noProxy)) {
  2860      return null
  2861    }
  2862  
  2863    return new URL(proxy)
  2864  }
  2865  
  2866  module.exports = {
  2867    getProxyAgent,
  2868    getProxy,
  2869    proxyCache: PROXY_CACHE,
  2870  }
  2871  
  2872  
  2873  /***/ }),
  2874  
  2875  /***/ 91573:
  2876  /***/ ((module) => {
  2877  
  2878  // given an input that may or may not be an object, return an object that has
  2879  // a copy of every defined property listed in 'copy'. if the input is not an
  2880  // object, assign it to the property named by 'wrap'
  2881  const getOptions = (input, { copy, wrap }) => {
  2882    const result = {}
  2883  
  2884    if (input && typeof input === 'object') {
  2885      for (const prop of copy) {
  2886        if (input[prop] !== undefined) {
  2887          result[prop] = input[prop]
  2888        }
  2889      }
  2890    } else {
  2891      result[wrap] = input
  2892    }
  2893  
  2894    return result
  2895  }
  2896  
  2897  module.exports = getOptions
  2898  
  2899  
  2900  /***/ }),
  2901  
  2902  /***/ 32486:
  2903  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  2904  
  2905  const semver = __nccwpck_require__(11383)
  2906  
  2907  const satisfies = (range) => {
  2908    return semver.satisfies(process.version, range, { includePrerelease: true })
  2909  }
  2910  
  2911  module.exports = {
  2912    satisfies,
  2913  }
  2914  
  2915  
  2916  /***/ }),
  2917  
  2918  /***/ 68025:
  2919  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  2920  
  2921  "use strict";
  2922  
  2923  const { inspect } = __nccwpck_require__(73837)
  2924  
  2925  // adapted from node's internal/errors
  2926  // https://github.com/nodejs/node/blob/c8a04049/lib/internal/errors.js
  2927  
  2928  // close copy of node's internal SystemError class.
  2929  class SystemError {
  2930    constructor (code, prefix, context) {
  2931      // XXX context.code is undefined in all constructors used in cp/polyfill
  2932      // that may be a bug copied from node, maybe the constructor should use
  2933      // `code` not `errno`?  nodejs/node#41104
  2934      let message = `${prefix}: ${context.syscall} returned ` +
  2935                    `${context.code} (${context.message})`
  2936  
  2937      if (context.path !== undefined) {
  2938        message += ` ${context.path}`
  2939      }
  2940      if (context.dest !== undefined) {
  2941        message += ` => ${context.dest}`
  2942      }
  2943  
  2944      this.code = code
  2945      Object.defineProperties(this, {
  2946        name: {
  2947          value: 'SystemError',
  2948          enumerable: false,
  2949          writable: true,
  2950          configurable: true,
  2951        },
  2952        message: {
  2953          value: message,
  2954          enumerable: false,
  2955          writable: true,
  2956          configurable: true,
  2957        },
  2958        info: {
  2959          value: context,
  2960          enumerable: true,
  2961          configurable: true,
  2962          writable: false,
  2963        },
  2964        errno: {
  2965          get () {
  2966            return context.errno
  2967          },
  2968          set (value) {
  2969            context.errno = value
  2970          },
  2971          enumerable: true,
  2972          configurable: true,
  2973        },
  2974        syscall: {
  2975          get () {
  2976            return context.syscall
  2977          },
  2978          set (value) {
  2979            context.syscall = value
  2980          },
  2981          enumerable: true,
  2982          configurable: true,
  2983        },
  2984      })
  2985  
  2986      if (context.path !== undefined) {
  2987        Object.defineProperty(this, 'path', {
  2988          get () {
  2989            return context.path
  2990          },
  2991          set (value) {
  2992            context.path = value
  2993          },
  2994          enumerable: true,
  2995          configurable: true,
  2996        })
  2997      }
  2998  
  2999      if (context.dest !== undefined) {
  3000        Object.defineProperty(this, 'dest', {
  3001          get () {
  3002            return context.dest
  3003          },
  3004          set (value) {
  3005            context.dest = value
  3006          },
  3007          enumerable: true,
  3008          configurable: true,
  3009        })
  3010      }
  3011    }
  3012  
  3013    toString () {
  3014      return `${this.name} [${this.code}]: ${this.message}`
  3015    }
  3016  
  3017    [Symbol.for('nodejs.util.inspect.custom')] (_recurseTimes, ctx) {
  3018      return inspect(this, {
  3019        ...ctx,
  3020        getters: true,
  3021        customInspect: false,
  3022      })
  3023    }
  3024  }
  3025  
  3026  function E (code, message) {
  3027    module.exports[code] = class NodeError extends SystemError {
  3028      constructor (ctx) {
  3029        super(code, message, ctx)
  3030      }
  3031    }
  3032  }
  3033  
  3034  E('ERR_FS_CP_DIR_TO_NON_DIR', 'Cannot overwrite directory with non-directory')
  3035  E('ERR_FS_CP_EEXIST', 'Target already exists')
  3036  E('ERR_FS_CP_EINVAL', 'Invalid src or dest')
  3037  E('ERR_FS_CP_FIFO_PIPE', 'Cannot copy a FIFO pipe')
  3038  E('ERR_FS_CP_NON_DIR_TO_DIR', 'Cannot overwrite non-directory with directory')
  3039  E('ERR_FS_CP_SOCKET', 'Cannot copy a socket file')
  3040  E('ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY', 'Cannot overwrite symlink in subdirectory of self')
  3041  E('ERR_FS_CP_UNKNOWN', 'Cannot copy an unknown file type')
  3042  E('ERR_FS_EISDIR', 'Path is a directory')
  3043  
  3044  module.exports.ERR_INVALID_ARG_TYPE = class ERR_INVALID_ARG_TYPE extends Error {
  3045    constructor (name, expected, actual) {
  3046      super()
  3047      this.code = 'ERR_INVALID_ARG_TYPE'
  3048      this.message = `The ${name} argument must be ${expected}. Received ${typeof actual}`
  3049    }
  3050  }
  3051  
  3052  
  3053  /***/ }),
  3054  
  3055  /***/ 2702:
  3056  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  3057  
  3058  const fs = __nccwpck_require__(73292)
  3059  const getOptions = __nccwpck_require__(91573)
  3060  const node = __nccwpck_require__(32486)
  3061  const polyfill = __nccwpck_require__(52613)
  3062  
  3063  // node 16.7.0 added fs.cp
  3064  const useNative = node.satisfies('>=16.7.0')
  3065  
  3066  const cp = async (src, dest, opts) => {
  3067    const options = getOptions(opts, {
  3068      copy: ['dereference', 'errorOnExist', 'filter', 'force', 'preserveTimestamps', 'recursive'],
  3069    })
  3070  
  3071    // the polyfill is tested separately from this module, no need to hack
  3072    // process.version to try to trigger it just for coverage
  3073    // istanbul ignore next
  3074    return useNative
  3075      ? fs.cp(src, dest, options)
  3076      : polyfill(src, dest, options)
  3077  }
  3078  
  3079  module.exports = cp
  3080  
  3081  
  3082  /***/ }),
  3083  
  3084  /***/ 52613:
  3085  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  3086  
  3087  "use strict";
  3088  // this file is a modified version of the code in node 17.2.0
  3089  // which is, in turn, a modified version of the fs-extra module on npm
  3090  // node core changes:
  3091  // - Use of the assert module has been replaced with core's error system.
  3092  // - All code related to the glob dependency has been removed.
  3093  // - Bring your own custom fs module is not currently supported.
  3094  // - Some basic code cleanup.
  3095  // changes here:
  3096  // - remove all callback related code
  3097  // - drop sync support
  3098  // - change assertions back to non-internal methods (see options.js)
  3099  // - throws ENOTDIR when rmdir gets an ENOENT for a path that exists in Windows
  3100  
  3101  
  3102  const {
  3103    ERR_FS_CP_DIR_TO_NON_DIR,
  3104    ERR_FS_CP_EEXIST,
  3105    ERR_FS_CP_EINVAL,
  3106    ERR_FS_CP_FIFO_PIPE,
  3107    ERR_FS_CP_NON_DIR_TO_DIR,
  3108    ERR_FS_CP_SOCKET,
  3109    ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY,
  3110    ERR_FS_CP_UNKNOWN,
  3111    ERR_FS_EISDIR,
  3112    ERR_INVALID_ARG_TYPE,
  3113  } = __nccwpck_require__(68025)
  3114  const {
  3115    constants: {
  3116      errno: {
  3117        EEXIST,
  3118        EISDIR,
  3119        EINVAL,
  3120        ENOTDIR,
  3121      },
  3122    },
  3123  } = __nccwpck_require__(22037)
  3124  const {
  3125    chmod,
  3126    copyFile,
  3127    lstat,
  3128    mkdir,
  3129    readdir,
  3130    readlink,
  3131    stat,
  3132    symlink,
  3133    unlink,
  3134    utimes,
  3135  } = __nccwpck_require__(73292)
  3136  const {
  3137    dirname,
  3138    isAbsolute,
  3139    join,
  3140    parse,
  3141    resolve,
  3142    sep,
  3143    toNamespacedPath,
  3144  } = __nccwpck_require__(71017)
  3145  const { fileURLToPath } = __nccwpck_require__(57310)
  3146  
  3147  const defaultOptions = {
  3148    dereference: false,
  3149    errorOnExist: false,
  3150    filter: undefined,
  3151    force: true,
  3152    preserveTimestamps: false,
  3153    recursive: false,
  3154  }
  3155  
  3156  async function cp (src, dest, opts) {
  3157    if (opts != null && typeof opts !== 'object') {
  3158      throw new ERR_INVALID_ARG_TYPE('options', ['Object'], opts)
  3159    }
  3160    return cpFn(
  3161      toNamespacedPath(getValidatedPath(src)),
  3162      toNamespacedPath(getValidatedPath(dest)),
  3163      { ...defaultOptions, ...opts })
  3164  }
  3165  
  3166  function getValidatedPath (fileURLOrPath) {
  3167    const path = fileURLOrPath != null && fileURLOrPath.href
  3168        && fileURLOrPath.origin
  3169      ? fileURLToPath(fileURLOrPath)
  3170      : fileURLOrPath
  3171    return path
  3172  }
  3173  
  3174  async function cpFn (src, dest, opts) {
  3175    // Warn about using preserveTimestamps on 32-bit node
  3176    // istanbul ignore next
  3177    if (opts.preserveTimestamps && process.arch === 'ia32') {
  3178      const warning = 'Using the preserveTimestamps option in 32-bit ' +
  3179        'node is not recommended'
  3180      process.emitWarning(warning, 'TimestampPrecisionWarning')
  3181    }
  3182    const stats = await checkPaths(src, dest, opts)
  3183    const { srcStat, destStat } = stats
  3184    await checkParentPaths(src, srcStat, dest)
  3185    if (opts.filter) {
  3186      return handleFilter(checkParentDir, destStat, src, dest, opts)
  3187    }
  3188    return checkParentDir(destStat, src, dest, opts)
  3189  }
  3190  
  3191  async function checkPaths (src, dest, opts) {
  3192    const { 0: srcStat, 1: destStat } = await getStats(src, dest, opts)
  3193    if (destStat) {
  3194      if (areIdentical(srcStat, destStat)) {
  3195        throw new ERR_FS_CP_EINVAL({
  3196          message: 'src and dest cannot be the same',
  3197          path: dest,
  3198          syscall: 'cp',
  3199          errno: EINVAL,
  3200        })
  3201      }
  3202      if (srcStat.isDirectory() && !destStat.isDirectory()) {
  3203        throw new ERR_FS_CP_DIR_TO_NON_DIR({
  3204          message: `cannot overwrite directory ${src} ` +
  3205              `with non-directory ${dest}`,
  3206          path: dest,
  3207          syscall: 'cp',
  3208          errno: EISDIR,
  3209        })
  3210      }
  3211      if (!srcStat.isDirectory() && destStat.isDirectory()) {
  3212        throw new ERR_FS_CP_NON_DIR_TO_DIR({
  3213          message: `cannot overwrite non-directory ${src} ` +
  3214              `with directory ${dest}`,
  3215          path: dest,
  3216          syscall: 'cp',
  3217          errno: ENOTDIR,
  3218        })
  3219      }
  3220    }
  3221  
  3222    if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {
  3223      throw new ERR_FS_CP_EINVAL({
  3224        message: `cannot copy ${src} to a subdirectory of self ${dest}`,
  3225        path: dest,
  3226        syscall: 'cp',
  3227        errno: EINVAL,
  3228      })
  3229    }
  3230    return { srcStat, destStat }
  3231  }
  3232  
  3233  function areIdentical (srcStat, destStat) {
  3234    return destStat.ino && destStat.dev && destStat.ino === srcStat.ino &&
  3235      destStat.dev === srcStat.dev
  3236  }
  3237  
  3238  function getStats (src, dest, opts) {
  3239    const statFunc = opts.dereference ?
  3240      (file) => stat(file, { bigint: true }) :
  3241      (file) => lstat(file, { bigint: true })
  3242    return Promise.all([
  3243      statFunc(src),
  3244      statFunc(dest).catch((err) => {
  3245        // istanbul ignore next: unsure how to cover.
  3246        if (err.code === 'ENOENT') {
  3247          return null
  3248        }
  3249        // istanbul ignore next: unsure how to cover.
  3250        throw err
  3251      }),
  3252    ])
  3253  }
  3254  
  3255  async function checkParentDir (destStat, src, dest, opts) {
  3256    const destParent = dirname(dest)
  3257    const dirExists = await pathExists(destParent)
  3258    if (dirExists) {
  3259      return getStatsForCopy(destStat, src, dest, opts)
  3260    }
  3261    await mkdir(destParent, { recursive: true })
  3262    return getStatsForCopy(destStat, src, dest, opts)
  3263  }
  3264  
  3265  function pathExists (dest) {
  3266    return stat(dest).then(
  3267      () => true,
  3268      // istanbul ignore next: not sure when this would occur
  3269      (err) => (err.code === 'ENOENT' ? false : Promise.reject(err)))
  3270  }
  3271  
  3272  // Recursively check if dest parent is a subdirectory of src.
  3273  // It works for all file types including symlinks since it
  3274  // checks the src and dest inodes. It starts from the deepest
  3275  // parent and stops once it reaches the src parent or the root path.
  3276  async function checkParentPaths (src, srcStat, dest) {
  3277    const srcParent = resolve(dirname(src))
  3278    const destParent = resolve(dirname(dest))
  3279    if (destParent === srcParent || destParent === parse(destParent).root) {
  3280      return
  3281    }
  3282    let destStat
  3283    try {
  3284      destStat = await stat(destParent, { bigint: true })
  3285    } catch (err) {
  3286      // istanbul ignore else: not sure when this would occur
  3287      if (err.code === 'ENOENT') {
  3288        return
  3289      }
  3290      // istanbul ignore next: not sure when this would occur
  3291      throw err
  3292    }
  3293    if (areIdentical(srcStat, destStat)) {
  3294      throw new ERR_FS_CP_EINVAL({
  3295        message: `cannot copy ${src} to a subdirectory of self ${dest}`,
  3296        path: dest,
  3297        syscall: 'cp',
  3298        errno: EINVAL,
  3299      })
  3300    }
  3301    return checkParentPaths(src, srcStat, destParent)
  3302  }
  3303  
  3304  const normalizePathToArray = (path) =>
  3305    resolve(path).split(sep).filter(Boolean)
  3306  
  3307  // Return true if dest is a subdir of src, otherwise false.
  3308  // It only checks the path strings.
  3309  function isSrcSubdir (src, dest) {
  3310    const srcArr = normalizePathToArray(src)
  3311    const destArr = normalizePathToArray(dest)
  3312    return srcArr.every((cur, i) => destArr[i] === cur)
  3313  }
  3314  
  3315  async function handleFilter (onInclude, destStat, src, dest, opts, cb) {
  3316    const include = await opts.filter(src, dest)
  3317    if (include) {
  3318      return onInclude(destStat, src, dest, opts, cb)
  3319    }
  3320  }
  3321  
  3322  function startCopy (destStat, src, dest, opts) {
  3323    if (opts.filter) {
  3324      return handleFilter(getStatsForCopy, destStat, src, dest, opts)
  3325    }
  3326    return getStatsForCopy(destStat, src, dest, opts)
  3327  }
  3328  
  3329  async function getStatsForCopy (destStat, src, dest, opts) {
  3330    const statFn = opts.dereference ? stat : lstat
  3331    const srcStat = await statFn(src)
  3332    // istanbul ignore else: can't portably test FIFO
  3333    if (srcStat.isDirectory() && opts.recursive) {
  3334      return onDir(srcStat, destStat, src, dest, opts)
  3335    } else if (srcStat.isDirectory()) {
  3336      throw new ERR_FS_EISDIR({
  3337        message: `${src} is a directory (not copied)`,
  3338        path: src,
  3339        syscall: 'cp',
  3340        errno: EINVAL,
  3341      })
  3342    } else if (srcStat.isFile() ||
  3343              srcStat.isCharacterDevice() ||
  3344              srcStat.isBlockDevice()) {
  3345      return onFile(srcStat, destStat, src, dest, opts)
  3346    } else if (srcStat.isSymbolicLink()) {
  3347      return onLink(destStat, src, dest)
  3348    } else if (srcStat.isSocket()) {
  3349      throw new ERR_FS_CP_SOCKET({
  3350        message: `cannot copy a socket file: ${dest}`,
  3351        path: dest,
  3352        syscall: 'cp',
  3353        errno: EINVAL,
  3354      })
  3355    } else if (srcStat.isFIFO()) {
  3356      throw new ERR_FS_CP_FIFO_PIPE({
  3357        message: `cannot copy a FIFO pipe: ${dest}`,
  3358        path: dest,
  3359        syscall: 'cp',
  3360        errno: EINVAL,
  3361      })
  3362    }
  3363    // istanbul ignore next: should be unreachable
  3364    throw new ERR_FS_CP_UNKNOWN({
  3365      message: `cannot copy an unknown file type: ${dest}`,
  3366      path: dest,
  3367      syscall: 'cp',
  3368      errno: EINVAL,
  3369    })
  3370  }
  3371  
  3372  function onFile (srcStat, destStat, src, dest, opts) {
  3373    if (!destStat) {
  3374      return _copyFile(srcStat, src, dest, opts)
  3375    }
  3376    return mayCopyFile(srcStat, src, dest, opts)
  3377  }
  3378  
  3379  async function mayCopyFile (srcStat, src, dest, opts) {
  3380    if (opts.force) {
  3381      await unlink(dest)
  3382      return _copyFile(srcStat, src, dest, opts)
  3383    } else if (opts.errorOnExist) {
  3384      throw new ERR_FS_CP_EEXIST({
  3385        message: `${dest} already exists`,
  3386        path: dest,
  3387        syscall: 'cp',
  3388        errno: EEXIST,
  3389      })
  3390    }
  3391  }
  3392  
  3393  async function _copyFile (srcStat, src, dest, opts) {
  3394    await copyFile(src, dest)
  3395    if (opts.preserveTimestamps) {
  3396      return handleTimestampsAndMode(srcStat.mode, src, dest)
  3397    }
  3398    return setDestMode(dest, srcStat.mode)
  3399  }
  3400  
  3401  async function handleTimestampsAndMode (srcMode, src, dest) {
  3402    // Make sure the file is writable before setting the timestamp
  3403    // otherwise open fails with EPERM when invoked with 'r+'
  3404    // (through utimes call)
  3405    if (fileIsNotWritable(srcMode)) {
  3406      await makeFileWritable(dest, srcMode)
  3407      return setDestTimestampsAndMode(srcMode, src, dest)
  3408    }
  3409    return setDestTimestampsAndMode(srcMode, src, dest)
  3410  }
  3411  
  3412  function fileIsNotWritable (srcMode) {
  3413    return (srcMode & 0o200) === 0
  3414  }
  3415  
  3416  function makeFileWritable (dest, srcMode) {
  3417    return setDestMode(dest, srcMode | 0o200)
  3418  }
  3419  
  3420  async function setDestTimestampsAndMode (srcMode, src, dest) {
  3421    await setDestTimestamps(src, dest)
  3422    return setDestMode(dest, srcMode)
  3423  }
  3424  
  3425  function setDestMode (dest, srcMode) {
  3426    return chmod(dest, srcMode)
  3427  }
  3428  
  3429  async function setDestTimestamps (src, dest) {
  3430    // The initial srcStat.atime cannot be trusted
  3431    // because it is modified by the read(2) system call
  3432    // (See https://nodejs.org/api/fs.html#fs_stat_time_values)
  3433    const updatedSrcStat = await stat(src)
  3434    return utimes(dest, updatedSrcStat.atime, updatedSrcStat.mtime)
  3435  }
  3436  
  3437  function onDir (srcStat, destStat, src, dest, opts) {
  3438    if (!destStat) {
  3439      return mkDirAndCopy(srcStat.mode, src, dest, opts)
  3440    }
  3441    return copyDir(src, dest, opts)
  3442  }
  3443  
  3444  async function mkDirAndCopy (srcMode, src, dest, opts) {
  3445    await mkdir(dest)
  3446    await copyDir(src, dest, opts)
  3447    return setDestMode(dest, srcMode)
  3448  }
  3449  
  3450  async function copyDir (src, dest, opts) {
  3451    const dir = await readdir(src)
  3452    for (let i = 0; i < dir.length; i++) {
  3453      const item = dir[i]
  3454      const srcItem = join(src, item)
  3455      const destItem = join(dest, item)
  3456      const { destStat } = await checkPaths(srcItem, destItem, opts)
  3457      await startCopy(destStat, srcItem, destItem, opts)
  3458    }
  3459  }
  3460  
  3461  async function onLink (destStat, src, dest) {
  3462    let resolvedSrc = await readlink(src)
  3463    if (!isAbsolute(resolvedSrc)) {
  3464      resolvedSrc = resolve(dirname(src), resolvedSrc)
  3465    }
  3466    if (!destStat) {
  3467      return symlink(resolvedSrc, dest)
  3468    }
  3469    let resolvedDest
  3470    try {
  3471      resolvedDest = await readlink(dest)
  3472    } catch (err) {
  3473      // Dest exists and is a regular file or directory,
  3474      // Windows may throw UNKNOWN error. If dest already exists,
  3475      // fs throws error anyway, so no need to guard against it here.
  3476      // istanbul ignore next: can only test on windows
  3477      if (err.code === 'EINVAL' || err.code === 'UNKNOWN') {
  3478        return symlink(resolvedSrc, dest)
  3479      }
  3480      // istanbul ignore next: should not be possible
  3481      throw err
  3482    }
  3483    if (!isAbsolute(resolvedDest)) {
  3484      resolvedDest = resolve(dirname(dest), resolvedDest)
  3485    }
  3486    if (isSrcSubdir(resolvedSrc, resolvedDest)) {
  3487      throw new ERR_FS_CP_EINVAL({
  3488        message: `cannot copy ${resolvedSrc} to a subdirectory of self ` +
  3489              `${resolvedDest}`,
  3490        path: dest,
  3491        syscall: 'cp',
  3492        errno: EINVAL,
  3493      })
  3494    }
  3495    // Do not copy if src is a subdir of dest since unlinking
  3496    // dest in this case would result in removing src contents
  3497    // and therefore a broken symlink would be created.
  3498    const srcStat = await stat(src)
  3499    if (srcStat.isDirectory() && isSrcSubdir(resolvedDest, resolvedSrc)) {
  3500      throw new ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY({
  3501        message: `cannot overwrite ${resolvedDest} with ${resolvedSrc}`,
  3502        path: dest,
  3503        syscall: 'cp',
  3504        errno: EINVAL,
  3505      })
  3506    }
  3507    return copyLink(resolvedSrc, dest)
  3508  }
  3509  
  3510  async function copyLink (resolvedSrc, dest) {
  3511    await unlink(dest)
  3512    return symlink(resolvedSrc, dest)
  3513  }
  3514  
  3515  module.exports = cp
  3516  
  3517  
  3518  /***/ }),
  3519  
  3520  /***/ 10575:
  3521  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  3522  
  3523  "use strict";
  3524  
  3525  
  3526  const cp = __nccwpck_require__(2702)
  3527  const withTempDir = __nccwpck_require__(31045)
  3528  const readdirScoped = __nccwpck_require__(67339)
  3529  const moveFile = __nccwpck_require__(81690)
  3530  
  3531  module.exports = {
  3532    cp,
  3533    withTempDir,
  3534    readdirScoped,
  3535    moveFile,
  3536  }
  3537  
  3538  
  3539  /***/ }),
  3540  
  3541  /***/ 81690:
  3542  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  3543  
  3544  const { dirname, join, resolve, relative, isAbsolute } = __nccwpck_require__(71017)
  3545  const fs = __nccwpck_require__(73292)
  3546  
  3547  const pathExists = async path => {
  3548    try {
  3549      await fs.access(path)
  3550      return true
  3551    } catch (er) {
  3552      return er.code !== 'ENOENT'
  3553    }
  3554  }
  3555  
  3556  const moveFile = async (source, destination, options = {}, root = true, symlinks = []) => {
  3557    if (!source || !destination) {
  3558      throw new TypeError('`source` and `destination` file required')
  3559    }
  3560  
  3561    options = {
  3562      overwrite: true,
  3563      ...options,
  3564    }
  3565  
  3566    if (!options.overwrite && await pathExists(destination)) {
  3567      throw new Error(`The destination file exists: ${destination}`)
  3568    }
  3569  
  3570    await fs.mkdir(dirname(destination), { recursive: true })
  3571  
  3572    try {
  3573      await fs.rename(source, destination)
  3574    } catch (error) {
  3575      if (error.code === 'EXDEV' || error.code === 'EPERM') {
  3576        const sourceStat = await fs.lstat(source)
  3577        if (sourceStat.isDirectory()) {
  3578          const files = await fs.readdir(source)
  3579          await Promise.all(files.map((file) =>
  3580            moveFile(join(source, file), join(destination, file), options, false, symlinks)
  3581          ))
  3582        } else if (sourceStat.isSymbolicLink()) {
  3583          symlinks.push({ source, destination })
  3584        } else {
  3585          await fs.copyFile(source, destination)
  3586        }
  3587      } else {
  3588        throw error
  3589      }
  3590    }
  3591  
  3592    if (root) {
  3593      await Promise.all(symlinks.map(async ({ source: symSource, destination: symDestination }) => {
  3594        let target = await fs.readlink(symSource)
  3595        // junction symlinks in windows will be absolute paths, so we need to
  3596        // make sure they point to the symlink destination
  3597        if (isAbsolute(target)) {
  3598          target = resolve(symDestination, relative(symSource, target))
  3599        }
  3600        // try to determine what the actual file is so we can create the correct
  3601        // type of symlink in windows
  3602        let targetStat = 'file'
  3603        try {
  3604          targetStat = await fs.stat(resolve(dirname(symSource), target))
  3605          if (targetStat.isDirectory()) {
  3606            targetStat = 'junction'
  3607          }
  3608        } catch {
  3609          // targetStat remains 'file'
  3610        }
  3611        await fs.symlink(
  3612          target,
  3613          symDestination,
  3614          targetStat
  3615        )
  3616      }))
  3617      await fs.rm(source, { recursive: true, force: true })
  3618    }
  3619  }
  3620  
  3621  module.exports = moveFile
  3622  
  3623  
  3624  /***/ }),
  3625  
  3626  /***/ 67339:
  3627  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  3628  
  3629  const { readdir } = __nccwpck_require__(73292)
  3630  const { join } = __nccwpck_require__(71017)
  3631  
  3632  const readdirScoped = async (dir) => {
  3633    const results = []
  3634  
  3635    for (const item of await readdir(dir)) {
  3636      if (item.startsWith('@')) {
  3637        for (const scopedItem of await readdir(join(dir, item))) {
  3638          results.push(join(item, scopedItem))
  3639        }
  3640      } else {
  3641        results.push(item)
  3642      }
  3643    }
  3644  
  3645    return results
  3646  }
  3647  
  3648  module.exports = readdirScoped
  3649  
  3650  
  3651  /***/ }),
  3652  
  3653  /***/ 31045:
  3654  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  3655  
  3656  const { join, sep } = __nccwpck_require__(71017)
  3657  
  3658  const getOptions = __nccwpck_require__(91573)
  3659  const { mkdir, mkdtemp, rm } = __nccwpck_require__(73292)
  3660  
  3661  // create a temp directory, ensure its permissions match its parent, then call
  3662  // the supplied function passing it the path to the directory. clean up after
  3663  // the function finishes, whether it throws or not
  3664  const withTempDir = async (root, fn, opts) => {
  3665    const options = getOptions(opts, {
  3666      copy: ['tmpPrefix'],
  3667    })
  3668    // create the directory
  3669    await mkdir(root, { recursive: true })
  3670  
  3671    const target = await mkdtemp(join(`${root}${sep}`, options.tmpPrefix || ''))
  3672    let err
  3673    let result
  3674  
  3675    try {
  3676      result = await fn(target)
  3677    } catch (_err) {
  3678      err = _err
  3679    }
  3680  
  3681    try {
  3682      await rm(target, { force: true, recursive: true })
  3683    } catch {
  3684      // ignore errors
  3685    }
  3686  
  3687    if (err) {
  3688      throw err
  3689    }
  3690  
  3691    return result
  3692  }
  3693  
  3694  module.exports = withTempDir
  3695  
  3696  
  3697  /***/ }),
  3698  
  3699  /***/ 40334:
  3700  /***/ ((module) => {
  3701  
  3702  "use strict";
  3703  
  3704  var __defProp = Object.defineProperty;
  3705  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  3706  var __getOwnPropNames = Object.getOwnPropertyNames;
  3707  var __hasOwnProp = Object.prototype.hasOwnProperty;
  3708  var __export = (target, all) => {
  3709    for (var name in all)
  3710      __defProp(target, name, { get: all[name], enumerable: true });
  3711  };
  3712  var __copyProps = (to, from, except, desc) => {
  3713    if (from && typeof from === "object" || typeof from === "function") {
  3714      for (let key of __getOwnPropNames(from))
  3715        if (!__hasOwnProp.call(to, key) && key !== except)
  3716          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  3717    }
  3718    return to;
  3719  };
  3720  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  3721  
  3722  // pkg/dist-src/index.js
  3723  var dist_src_exports = {};
  3724  __export(dist_src_exports, {
  3725    createTokenAuth: () => createTokenAuth
  3726  });
  3727  module.exports = __toCommonJS(dist_src_exports);
  3728  
  3729  // pkg/dist-src/auth.js
  3730  var REGEX_IS_INSTALLATION_LEGACY = /^v1\./;
  3731  var REGEX_IS_INSTALLATION = /^ghs_/;
  3732  var REGEX_IS_USER_TO_SERVER = /^ghu_/;
  3733  async function auth(token) {
  3734    const isApp = token.split(/\./).length === 3;
  3735    const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);
  3736    const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);
  3737    const tokenType = isApp ? "app" : isInstallation ? "installation" : isUserToServer ? "user-to-server" : "oauth";
  3738    return {
  3739      type: "token",
  3740      token,
  3741      tokenType
  3742    };
  3743  }
  3744  
  3745  // pkg/dist-src/with-authorization-prefix.js
  3746  function withAuthorizationPrefix(token) {
  3747    if (token.split(/\./).length === 3) {
  3748      return `bearer ${token}`;
  3749    }
  3750    return `token ${token}`;
  3751  }
  3752  
  3753  // pkg/dist-src/hook.js
  3754  async function hook(token, request, route, parameters) {
  3755    const endpoint = request.endpoint.merge(
  3756      route,
  3757      parameters
  3758    );
  3759    endpoint.headers.authorization = withAuthorizationPrefix(token);
  3760    return request(endpoint);
  3761  }
  3762  
  3763  // pkg/dist-src/index.js
  3764  var createTokenAuth = function createTokenAuth2(token) {
  3765    if (!token) {
  3766      throw new Error("[@octokit/auth-token] No token passed to createTokenAuth");
  3767    }
  3768    if (typeof token !== "string") {
  3769      throw new Error(
  3770        "[@octokit/auth-token] Token passed to createTokenAuth is not a string"
  3771      );
  3772    }
  3773    token = token.replace(/^(token|bearer) +/i, "");
  3774    return Object.assign(auth.bind(null, token), {
  3775      hook: hook.bind(null, token)
  3776    });
  3777  };
  3778  // Annotate the CommonJS export names for ESM import in node:
  3779  0 && (0);
  3780  
  3781  
  3782  /***/ }),
  3783  
  3784  /***/ 76762:
  3785  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  3786  
  3787  "use strict";
  3788  
  3789  var __defProp = Object.defineProperty;
  3790  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  3791  var __getOwnPropNames = Object.getOwnPropertyNames;
  3792  var __hasOwnProp = Object.prototype.hasOwnProperty;
  3793  var __export = (target, all) => {
  3794    for (var name in all)
  3795      __defProp(target, name, { get: all[name], enumerable: true });
  3796  };
  3797  var __copyProps = (to, from, except, desc) => {
  3798    if (from && typeof from === "object" || typeof from === "function") {
  3799      for (let key of __getOwnPropNames(from))
  3800        if (!__hasOwnProp.call(to, key) && key !== except)
  3801          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  3802    }
  3803    return to;
  3804  };
  3805  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  3806  
  3807  // pkg/dist-src/index.js
  3808  var dist_src_exports = {};
  3809  __export(dist_src_exports, {
  3810    Octokit: () => Octokit
  3811  });
  3812  module.exports = __toCommonJS(dist_src_exports);
  3813  var import_universal_user_agent = __nccwpck_require__(45030);
  3814  var import_before_after_hook = __nccwpck_require__(83682);
  3815  var import_request = __nccwpck_require__(36234);
  3816  var import_graphql = __nccwpck_require__(88467);
  3817  var import_auth_token = __nccwpck_require__(40334);
  3818  
  3819  // pkg/dist-src/version.js
  3820  var VERSION = "5.2.0";
  3821  
  3822  // pkg/dist-src/index.js
  3823  var noop = () => {
  3824  };
  3825  var consoleWarn = console.warn.bind(console);
  3826  var consoleError = console.error.bind(console);
  3827  var userAgentTrail = `octokit-core.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;
  3828  var Octokit = class {
  3829    static {
  3830      this.VERSION = VERSION;
  3831    }
  3832    static defaults(defaults) {
  3833      const OctokitWithDefaults = class extends this {
  3834        constructor(...args) {
  3835          const options = args[0] || {};
  3836          if (typeof defaults === "function") {
  3837            super(defaults(options));
  3838            return;
  3839          }
  3840          super(
  3841            Object.assign(
  3842              {},
  3843              defaults,
  3844              options,
  3845              options.userAgent && defaults.userAgent ? {
  3846                userAgent: `${options.userAgent} ${defaults.userAgent}`
  3847              } : null
  3848            )
  3849          );
  3850        }
  3851      };
  3852      return OctokitWithDefaults;
  3853    }
  3854    static {
  3855      this.plugins = [];
  3856    }
  3857    /**
  3858     * Attach a plugin (or many) to your Octokit instance.
  3859     *
  3860     * @example
  3861     * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)
  3862     */
  3863    static plugin(...newPlugins) {
  3864      const currentPlugins = this.plugins;
  3865      const NewOctokit = class extends this {
  3866        static {
  3867          this.plugins = currentPlugins.concat(
  3868            newPlugins.filter((plugin) => !currentPlugins.includes(plugin))
  3869          );
  3870        }
  3871      };
  3872      return NewOctokit;
  3873    }
  3874    constructor(options = {}) {
  3875      const hook = new import_before_after_hook.Collection();
  3876      const requestDefaults = {
  3877        baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl,
  3878        headers: {},
  3879        request: Object.assign({}, options.request, {
  3880          // @ts-ignore internal usage only, no need to type
  3881          hook: hook.bind(null, "request")
  3882        }),
  3883        mediaType: {
  3884          previews: [],
  3885          format: ""
  3886        }
  3887      };
  3888      requestDefaults.headers["user-agent"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;
  3889      if (options.baseUrl) {
  3890        requestDefaults.baseUrl = options.baseUrl;
  3891      }
  3892      if (options.previews) {
  3893        requestDefaults.mediaType.previews = options.previews;
  3894      }
  3895      if (options.timeZone) {
  3896        requestDefaults.headers["time-zone"] = options.timeZone;
  3897      }
  3898      this.request = import_request.request.defaults(requestDefaults);
  3899      this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults(requestDefaults);
  3900      this.log = Object.assign(
  3901        {
  3902          debug: noop,
  3903          info: noop,
  3904          warn: consoleWarn,
  3905          error: consoleError
  3906        },
  3907        options.log
  3908      );
  3909      this.hook = hook;
  3910      if (!options.authStrategy) {
  3911        if (!options.auth) {
  3912          this.auth = async () => ({
  3913            type: "unauthenticated"
  3914          });
  3915        } else {
  3916          const auth = (0, import_auth_token.createTokenAuth)(options.auth);
  3917          hook.wrap("request", auth.hook);
  3918          this.auth = auth;
  3919        }
  3920      } else {
  3921        const { authStrategy, ...otherOptions } = options;
  3922        const auth = authStrategy(
  3923          Object.assign(
  3924            {
  3925              request: this.request,
  3926              log: this.log,
  3927              // we pass the current octokit instance as well as its constructor options
  3928              // to allow for authentication strategies that return a new octokit instance
  3929              // that shares the same internal state as the current one. The original
  3930              // requirement for this was the "event-octokit" authentication strategy
  3931              // of https://github.com/probot/octokit-auth-probot.
  3932              octokit: this,
  3933              octokitOptions: otherOptions
  3934            },
  3935            options.auth
  3936          )
  3937        );
  3938        hook.wrap("request", auth.hook);
  3939        this.auth = auth;
  3940      }
  3941      const classConstructor = this.constructor;
  3942      for (let i = 0; i < classConstructor.plugins.length; ++i) {
  3943        Object.assign(this, classConstructor.plugins[i](this, options));
  3944      }
  3945    }
  3946  };
  3947  // Annotate the CommonJS export names for ESM import in node:
  3948  0 && (0);
  3949  
  3950  
  3951  /***/ }),
  3952  
  3953  /***/ 59440:
  3954  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  3955  
  3956  "use strict";
  3957  
  3958  var __defProp = Object.defineProperty;
  3959  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  3960  var __getOwnPropNames = Object.getOwnPropertyNames;
  3961  var __hasOwnProp = Object.prototype.hasOwnProperty;
  3962  var __export = (target, all) => {
  3963    for (var name in all)
  3964      __defProp(target, name, { get: all[name], enumerable: true });
  3965  };
  3966  var __copyProps = (to, from, except, desc) => {
  3967    if (from && typeof from === "object" || typeof from === "function") {
  3968      for (let key of __getOwnPropNames(from))
  3969        if (!__hasOwnProp.call(to, key) && key !== except)
  3970          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  3971    }
  3972    return to;
  3973  };
  3974  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  3975  
  3976  // pkg/dist-src/index.js
  3977  var dist_src_exports = {};
  3978  __export(dist_src_exports, {
  3979    endpoint: () => endpoint
  3980  });
  3981  module.exports = __toCommonJS(dist_src_exports);
  3982  
  3983  // pkg/dist-src/defaults.js
  3984  var import_universal_user_agent = __nccwpck_require__(45030);
  3985  
  3986  // pkg/dist-src/version.js
  3987  var VERSION = "9.0.5";
  3988  
  3989  // pkg/dist-src/defaults.js
  3990  var userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;
  3991  var DEFAULTS = {
  3992    method: "GET",
  3993    baseUrl: "https://api.github.com",
  3994    headers: {
  3995      accept: "application/vnd.github.v3+json",
  3996      "user-agent": userAgent
  3997    },
  3998    mediaType: {
  3999      format: ""
  4000    }
  4001  };
  4002  
  4003  // pkg/dist-src/util/lowercase-keys.js
  4004  function lowercaseKeys(object) {
  4005    if (!object) {
  4006      return {};
  4007    }
  4008    return Object.keys(object).reduce((newObj, key) => {
  4009      newObj[key.toLowerCase()] = object[key];
  4010      return newObj;
  4011    }, {});
  4012  }
  4013  
  4014  // pkg/dist-src/util/is-plain-object.js
  4015  function isPlainObject(value) {
  4016    if (typeof value !== "object" || value === null)
  4017      return false;
  4018    if (Object.prototype.toString.call(value) !== "[object Object]")
  4019      return false;
  4020    const proto = Object.getPrototypeOf(value);
  4021    if (proto === null)
  4022      return true;
  4023    const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
  4024    return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
  4025  }
  4026  
  4027  // pkg/dist-src/util/merge-deep.js
  4028  function mergeDeep(defaults, options) {
  4029    const result = Object.assign({}, defaults);
  4030    Object.keys(options).forEach((key) => {
  4031      if (isPlainObject(options[key])) {
  4032        if (!(key in defaults))
  4033          Object.assign(result, { [key]: options[key] });
  4034        else
  4035          result[key] = mergeDeep(defaults[key], options[key]);
  4036      } else {
  4037        Object.assign(result, { [key]: options[key] });
  4038      }
  4039    });
  4040    return result;
  4041  }
  4042  
  4043  // pkg/dist-src/util/remove-undefined-properties.js
  4044  function removeUndefinedProperties(obj) {
  4045    for (const key in obj) {
  4046      if (obj[key] === void 0) {
  4047        delete obj[key];
  4048      }
  4049    }
  4050    return obj;
  4051  }
  4052  
  4053  // pkg/dist-src/merge.js
  4054  function merge(defaults, route, options) {
  4055    if (typeof route === "string") {
  4056      let [method, url] = route.split(" ");
  4057      options = Object.assign(url ? { method, url } : { url: method }, options);
  4058    } else {
  4059      options = Object.assign({}, route);
  4060    }
  4061    options.headers = lowercaseKeys(options.headers);
  4062    removeUndefinedProperties(options);
  4063    removeUndefinedProperties(options.headers);
  4064    const mergedOptions = mergeDeep(defaults || {}, options);
  4065    if (options.url === "/graphql") {
  4066      if (defaults && defaults.mediaType.previews?.length) {
  4067        mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(
  4068          (preview) => !mergedOptions.mediaType.previews.includes(preview)
  4069        ).concat(mergedOptions.mediaType.previews);
  4070      }
  4071      mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, ""));
  4072    }
  4073    return mergedOptions;
  4074  }
  4075  
  4076  // pkg/dist-src/util/add-query-parameters.js
  4077  function addQueryParameters(url, parameters) {
  4078    const separator = /\?/.test(url) ? "&" : "?";
  4079    const names = Object.keys(parameters);
  4080    if (names.length === 0) {
  4081      return url;
  4082    }
  4083    return url + separator + names.map((name) => {
  4084      if (name === "q") {
  4085        return "q=" + parameters.q.split("+").map(encodeURIComponent).join("+");
  4086      }
  4087      return `${name}=${encodeURIComponent(parameters[name])}`;
  4088    }).join("&");
  4089  }
  4090  
  4091  // pkg/dist-src/util/extract-url-variable-names.js
  4092  var urlVariableRegex = /\{[^}]+\}/g;
  4093  function removeNonChars(variableName) {
  4094    return variableName.replace(/^\W+|\W+$/g, "").split(/,/);
  4095  }
  4096  function extractUrlVariableNames(url) {
  4097    const matches = url.match(urlVariableRegex);
  4098    if (!matches) {
  4099      return [];
  4100    }
  4101    return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);
  4102  }
  4103  
  4104  // pkg/dist-src/util/omit.js
  4105  function omit(object, keysToOmit) {
  4106    const result = { __proto__: null };
  4107    for (const key of Object.keys(object)) {
  4108      if (keysToOmit.indexOf(key) === -1) {
  4109        result[key] = object[key];
  4110      }
  4111    }
  4112    return result;
  4113  }
  4114  
  4115  // pkg/dist-src/util/url-template.js
  4116  function encodeReserved(str) {
  4117    return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {
  4118      if (!/%[0-9A-Fa-f]/.test(part)) {
  4119        part = encodeURI(part).replace(/%5B/g, "[").replace(/%5D/g, "]");
  4120      }
  4121      return part;
  4122    }).join("");
  4123  }
  4124  function encodeUnreserved(str) {
  4125    return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
  4126      return "%" + c.charCodeAt(0).toString(16).toUpperCase();
  4127    });
  4128  }
  4129  function encodeValue(operator, value, key) {
  4130    value = operator === "+" || operator === "#" ? encodeReserved(value) : encodeUnreserved(value);
  4131    if (key) {
  4132      return encodeUnreserved(key) + "=" + value;
  4133    } else {
  4134      return value;
  4135    }
  4136  }
  4137  function isDefined(value) {
  4138    return value !== void 0 && value !== null;
  4139  }
  4140  function isKeyOperator(operator) {
  4141    return operator === ";" || operator === "&" || operator === "?";
  4142  }
  4143  function getValues(context, operator, key, modifier) {
  4144    var value = context[key], result = [];
  4145    if (isDefined(value) && value !== "") {
  4146      if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
  4147        value = value.toString();
  4148        if (modifier && modifier !== "*") {
  4149          value = value.substring(0, parseInt(modifier, 10));
  4150        }
  4151        result.push(
  4152          encodeValue(operator, value, isKeyOperator(operator) ? key : "")
  4153        );
  4154      } else {
  4155        if (modifier === "*") {
  4156          if (Array.isArray(value)) {
  4157            value.filter(isDefined).forEach(function(value2) {
  4158              result.push(
  4159                encodeValue(operator, value2, isKeyOperator(operator) ? key : "")
  4160              );
  4161            });
  4162          } else {
  4163            Object.keys(value).forEach(function(k) {
  4164              if (isDefined(value[k])) {
  4165                result.push(encodeValue(operator, value[k], k));
  4166              }
  4167            });
  4168          }
  4169        } else {
  4170          const tmp = [];
  4171          if (Array.isArray(value)) {
  4172            value.filter(isDefined).forEach(function(value2) {
  4173              tmp.push(encodeValue(operator, value2));
  4174            });
  4175          } else {
  4176            Object.keys(value).forEach(function(k) {
  4177              if (isDefined(value[k])) {
  4178                tmp.push(encodeUnreserved(k));
  4179                tmp.push(encodeValue(operator, value[k].toString()));
  4180              }
  4181            });
  4182          }
  4183          if (isKeyOperator(operator)) {
  4184            result.push(encodeUnreserved(key) + "=" + tmp.join(","));
  4185          } else if (tmp.length !== 0) {
  4186            result.push(tmp.join(","));
  4187          }
  4188        }
  4189      }
  4190    } else {
  4191      if (operator === ";") {
  4192        if (isDefined(value)) {
  4193          result.push(encodeUnreserved(key));
  4194        }
  4195      } else if (value === "" && (operator === "&" || operator === "?")) {
  4196        result.push(encodeUnreserved(key) + "=");
  4197      } else if (value === "") {
  4198        result.push("");
  4199      }
  4200    }
  4201    return result;
  4202  }
  4203  function parseUrl(template) {
  4204    return {
  4205      expand: expand.bind(null, template)
  4206    };
  4207  }
  4208  function expand(template, context) {
  4209    var operators = ["+", "#", ".", "/", ";", "?", "&"];
  4210    template = template.replace(
  4211      /\{([^\{\}]+)\}|([^\{\}]+)/g,
  4212      function(_, expression, literal) {
  4213        if (expression) {
  4214          let operator = "";
  4215          const values = [];
  4216          if (operators.indexOf(expression.charAt(0)) !== -1) {
  4217            operator = expression.charAt(0);
  4218            expression = expression.substr(1);
  4219          }
  4220          expression.split(/,/g).forEach(function(variable) {
  4221            var tmp = /([^:\*]*)(?::(\d+)|(\*))?/.exec(variable);
  4222            values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));
  4223          });
  4224          if (operator && operator !== "+") {
  4225            var separator = ",";
  4226            if (operator === "?") {
  4227              separator = "&";
  4228            } else if (operator !== "#") {
  4229              separator = operator;
  4230            }
  4231            return (values.length !== 0 ? operator : "") + values.join(separator);
  4232          } else {
  4233            return values.join(",");
  4234          }
  4235        } else {
  4236          return encodeReserved(literal);
  4237        }
  4238      }
  4239    );
  4240    if (template === "/") {
  4241      return template;
  4242    } else {
  4243      return template.replace(/\/$/, "");
  4244    }
  4245  }
  4246  
  4247  // pkg/dist-src/parse.js
  4248  function parse(options) {
  4249    let method = options.method.toUpperCase();
  4250    let url = (options.url || "/").replace(/:([a-z]\w+)/g, "{$1}");
  4251    let headers = Object.assign({}, options.headers);
  4252    let body;
  4253    let parameters = omit(options, [
  4254      "method",
  4255      "baseUrl",
  4256      "url",
  4257      "headers",
  4258      "request",
  4259      "mediaType"
  4260    ]);
  4261    const urlVariableNames = extractUrlVariableNames(url);
  4262    url = parseUrl(url).expand(parameters);
  4263    if (!/^http/.test(url)) {
  4264      url = options.baseUrl + url;
  4265    }
  4266    const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat("baseUrl");
  4267    const remainingParameters = omit(parameters, omittedParameters);
  4268    const isBinaryRequest = /application\/octet-stream/i.test(headers.accept);
  4269    if (!isBinaryRequest) {
  4270      if (options.mediaType.format) {
  4271        headers.accept = headers.accept.split(/,/).map(
  4272          (format) => format.replace(
  4273            /application\/vnd(\.\w+)(\.v3)?(\.\w+)?(\+json)?$/,
  4274            `application/vnd$1$2.${options.mediaType.format}`
  4275          )
  4276        ).join(",");
  4277      }
  4278      if (url.endsWith("/graphql")) {
  4279        if (options.mediaType.previews?.length) {
  4280          const previewsFromAcceptHeader = headers.accept.match(/[\w-]+(?=-preview)/g) || [];
  4281          headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {
  4282            const format = options.mediaType.format ? `.${options.mediaType.format}` : "+json";
  4283            return `application/vnd.github.${preview}-preview${format}`;
  4284          }).join(",");
  4285        }
  4286      }
  4287    }
  4288    if (["GET", "HEAD"].includes(method)) {
  4289      url = addQueryParameters(url, remainingParameters);
  4290    } else {
  4291      if ("data" in remainingParameters) {
  4292        body = remainingParameters.data;
  4293      } else {
  4294        if (Object.keys(remainingParameters).length) {
  4295          body = remainingParameters;
  4296        }
  4297      }
  4298    }
  4299    if (!headers["content-type"] && typeof body !== "undefined") {
  4300      headers["content-type"] = "application/json; charset=utf-8";
  4301    }
  4302    if (["PATCH", "PUT"].includes(method) && typeof body === "undefined") {
  4303      body = "";
  4304    }
  4305    return Object.assign(
  4306      { method, url, headers },
  4307      typeof body !== "undefined" ? { body } : null,
  4308      options.request ? { request: options.request } : null
  4309    );
  4310  }
  4311  
  4312  // pkg/dist-src/endpoint-with-defaults.js
  4313  function endpointWithDefaults(defaults, route, options) {
  4314    return parse(merge(defaults, route, options));
  4315  }
  4316  
  4317  // pkg/dist-src/with-defaults.js
  4318  function withDefaults(oldDefaults, newDefaults) {
  4319    const DEFAULTS2 = merge(oldDefaults, newDefaults);
  4320    const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);
  4321    return Object.assign(endpoint2, {
  4322      DEFAULTS: DEFAULTS2,
  4323      defaults: withDefaults.bind(null, DEFAULTS2),
  4324      merge: merge.bind(null, DEFAULTS2),
  4325      parse
  4326    });
  4327  }
  4328  
  4329  // pkg/dist-src/index.js
  4330  var endpoint = withDefaults(null, DEFAULTS);
  4331  // Annotate the CommonJS export names for ESM import in node:
  4332  0 && (0);
  4333  
  4334  
  4335  /***/ }),
  4336  
  4337  /***/ 88467:
  4338  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  4339  
  4340  "use strict";
  4341  
  4342  var __defProp = Object.defineProperty;
  4343  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  4344  var __getOwnPropNames = Object.getOwnPropertyNames;
  4345  var __hasOwnProp = Object.prototype.hasOwnProperty;
  4346  var __export = (target, all) => {
  4347    for (var name in all)
  4348      __defProp(target, name, { get: all[name], enumerable: true });
  4349  };
  4350  var __copyProps = (to, from, except, desc) => {
  4351    if (from && typeof from === "object" || typeof from === "function") {
  4352      for (let key of __getOwnPropNames(from))
  4353        if (!__hasOwnProp.call(to, key) && key !== except)
  4354          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  4355    }
  4356    return to;
  4357  };
  4358  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  4359  
  4360  // pkg/dist-src/index.js
  4361  var dist_src_exports = {};
  4362  __export(dist_src_exports, {
  4363    GraphqlResponseError: () => GraphqlResponseError,
  4364    graphql: () => graphql2,
  4365    withCustomRequest: () => withCustomRequest
  4366  });
  4367  module.exports = __toCommonJS(dist_src_exports);
  4368  var import_request3 = __nccwpck_require__(36234);
  4369  var import_universal_user_agent = __nccwpck_require__(45030);
  4370  
  4371  // pkg/dist-src/version.js
  4372  var VERSION = "7.1.0";
  4373  
  4374  // pkg/dist-src/with-defaults.js
  4375  var import_request2 = __nccwpck_require__(36234);
  4376  
  4377  // pkg/dist-src/graphql.js
  4378  var import_request = __nccwpck_require__(36234);
  4379  
  4380  // pkg/dist-src/error.js
  4381  function _buildMessageForResponseErrors(data) {
  4382    return `Request failed due to following response errors:
  4383  ` + data.errors.map((e) => ` - ${e.message}`).join("\n");
  4384  }
  4385  var GraphqlResponseError = class extends Error {
  4386    constructor(request2, headers, response) {
  4387      super(_buildMessageForResponseErrors(response));
  4388      this.request = request2;
  4389      this.headers = headers;
  4390      this.response = response;
  4391      this.name = "GraphqlResponseError";
  4392      this.errors = response.errors;
  4393      this.data = response.data;
  4394      if (Error.captureStackTrace) {
  4395        Error.captureStackTrace(this, this.constructor);
  4396      }
  4397    }
  4398  };
  4399  
  4400  // pkg/dist-src/graphql.js
  4401  var NON_VARIABLE_OPTIONS = [
  4402    "method",
  4403    "baseUrl",
  4404    "url",
  4405    "headers",
  4406    "request",
  4407    "query",
  4408    "mediaType"
  4409  ];
  4410  var FORBIDDEN_VARIABLE_OPTIONS = ["query", "method", "url"];
  4411  var GHES_V3_SUFFIX_REGEX = /\/api\/v3\/?$/;
  4412  function graphql(request2, query, options) {
  4413    if (options) {
  4414      if (typeof query === "string" && "query" in options) {
  4415        return Promise.reject(
  4416          new Error(`[@octokit/graphql] "query" cannot be used as variable name`)
  4417        );
  4418      }
  4419      for (const key in options) {
  4420        if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))
  4421          continue;
  4422        return Promise.reject(
  4423          new Error(
  4424            `[@octokit/graphql] "${key}" cannot be used as variable name`
  4425          )
  4426        );
  4427      }
  4428    }
  4429    const parsedOptions = typeof query === "string" ? Object.assign({ query }, options) : query;
  4430    const requestOptions = Object.keys(
  4431      parsedOptions
  4432    ).reduce((result, key) => {
  4433      if (NON_VARIABLE_OPTIONS.includes(key)) {
  4434        result[key] = parsedOptions[key];
  4435        return result;
  4436      }
  4437      if (!result.variables) {
  4438        result.variables = {};
  4439      }
  4440      result.variables[key] = parsedOptions[key];
  4441      return result;
  4442    }, {});
  4443    const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;
  4444    if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {
  4445      requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, "/api/graphql");
  4446    }
  4447    return request2(requestOptions).then((response) => {
  4448      if (response.data.errors) {
  4449        const headers = {};
  4450        for (const key of Object.keys(response.headers)) {
  4451          headers[key] = response.headers[key];
  4452        }
  4453        throw new GraphqlResponseError(
  4454          requestOptions,
  4455          headers,
  4456          response.data
  4457        );
  4458      }
  4459      return response.data.data;
  4460    });
  4461  }
  4462  
  4463  // pkg/dist-src/with-defaults.js
  4464  function withDefaults(request2, newDefaults) {
  4465    const newRequest = request2.defaults(newDefaults);
  4466    const newApi = (query, options) => {
  4467      return graphql(newRequest, query, options);
  4468    };
  4469    return Object.assign(newApi, {
  4470      defaults: withDefaults.bind(null, newRequest),
  4471      endpoint: newRequest.endpoint
  4472    });
  4473  }
  4474  
  4475  // pkg/dist-src/index.js
  4476  var graphql2 = withDefaults(import_request3.request, {
  4477    headers: {
  4478      "user-agent": `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
  4479    },
  4480    method: "POST",
  4481    url: "/graphql"
  4482  });
  4483  function withCustomRequest(customRequest) {
  4484    return withDefaults(customRequest, {
  4485      method: "POST",
  4486      url: "/graphql"
  4487    });
  4488  }
  4489  // Annotate the CommonJS export names for ESM import in node:
  4490  0 && (0);
  4491  
  4492  
  4493  /***/ }),
  4494  
  4495  /***/ 64193:
  4496  /***/ ((module) => {
  4497  
  4498  "use strict";
  4499  
  4500  var __defProp = Object.defineProperty;
  4501  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  4502  var __getOwnPropNames = Object.getOwnPropertyNames;
  4503  var __hasOwnProp = Object.prototype.hasOwnProperty;
  4504  var __export = (target, all) => {
  4505    for (var name in all)
  4506      __defProp(target, name, { get: all[name], enumerable: true });
  4507  };
  4508  var __copyProps = (to, from, except, desc) => {
  4509    if (from && typeof from === "object" || typeof from === "function") {
  4510      for (let key of __getOwnPropNames(from))
  4511        if (!__hasOwnProp.call(to, key) && key !== except)
  4512          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  4513    }
  4514    return to;
  4515  };
  4516  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  4517  
  4518  // pkg/dist-src/index.js
  4519  var dist_src_exports = {};
  4520  __export(dist_src_exports, {
  4521    composePaginateRest: () => composePaginateRest,
  4522    isPaginatingEndpoint: () => isPaginatingEndpoint,
  4523    paginateRest: () => paginateRest,
  4524    paginatingEndpoints: () => paginatingEndpoints
  4525  });
  4526  module.exports = __toCommonJS(dist_src_exports);
  4527  
  4528  // pkg/dist-src/version.js
  4529  var VERSION = "9.2.1";
  4530  
  4531  // pkg/dist-src/normalize-paginated-list-response.js
  4532  function normalizePaginatedListResponse(response) {
  4533    if (!response.data) {
  4534      return {
  4535        ...response,
  4536        data: []
  4537      };
  4538    }
  4539    const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
  4540    if (!responseNeedsNormalization)
  4541      return response;
  4542    const incompleteResults = response.data.incomplete_results;
  4543    const repositorySelection = response.data.repository_selection;
  4544    const totalCount = response.data.total_count;
  4545    delete response.data.incomplete_results;
  4546    delete response.data.repository_selection;
  4547    delete response.data.total_count;
  4548    const namespaceKey = Object.keys(response.data)[0];
  4549    const data = response.data[namespaceKey];
  4550    response.data = data;
  4551    if (typeof incompleteResults !== "undefined") {
  4552      response.data.incomplete_results = incompleteResults;
  4553    }
  4554    if (typeof repositorySelection !== "undefined") {
  4555      response.data.repository_selection = repositorySelection;
  4556    }
  4557    response.data.total_count = totalCount;
  4558    return response;
  4559  }
  4560  
  4561  // pkg/dist-src/iterator.js
  4562  function iterator(octokit, route, parameters) {
  4563    const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
  4564    const requestMethod = typeof route === "function" ? route : octokit.request;
  4565    const method = options.method;
  4566    const headers = options.headers;
  4567    let url = options.url;
  4568    return {
  4569      [Symbol.asyncIterator]: () => ({
  4570        async next() {
  4571          if (!url)
  4572            return { done: true };
  4573          try {
  4574            const response = await requestMethod({ method, url, headers });
  4575            const normalizedResponse = normalizePaginatedListResponse(response);
  4576            url = ((normalizedResponse.headers.link || "").match(
  4577              /<([^>]+)>;\s*rel="next"/
  4578            ) || [])[1];
  4579            return { value: normalizedResponse };
  4580          } catch (error) {
  4581            if (error.status !== 409)
  4582              throw error;
  4583            url = "";
  4584            return {
  4585              value: {
  4586                status: 200,
  4587                headers: {},
  4588                data: []
  4589              }
  4590            };
  4591          }
  4592        }
  4593      })
  4594    };
  4595  }
  4596  
  4597  // pkg/dist-src/paginate.js
  4598  function paginate(octokit, route, parameters, mapFn) {
  4599    if (typeof parameters === "function") {
  4600      mapFn = parameters;
  4601      parameters = void 0;
  4602    }
  4603    return gather(
  4604      octokit,
  4605      [],
  4606      iterator(octokit, route, parameters)[Symbol.asyncIterator](),
  4607      mapFn
  4608    );
  4609  }
  4610  function gather(octokit, results, iterator2, mapFn) {
  4611    return iterator2.next().then((result) => {
  4612      if (result.done) {
  4613        return results;
  4614      }
  4615      let earlyExit = false;
  4616      function done() {
  4617        earlyExit = true;
  4618      }
  4619      results = results.concat(
  4620        mapFn ? mapFn(result.value, done) : result.value.data
  4621      );
  4622      if (earlyExit) {
  4623        return results;
  4624      }
  4625      return gather(octokit, results, iterator2, mapFn);
  4626    });
  4627  }
  4628  
  4629  // pkg/dist-src/compose-paginate.js
  4630  var composePaginateRest = Object.assign(paginate, {
  4631    iterator
  4632  });
  4633  
  4634  // pkg/dist-src/generated/paginating-endpoints.js
  4635  var paginatingEndpoints = [
  4636    "GET /advisories",
  4637    "GET /app/hook/deliveries",
  4638    "GET /app/installation-requests",
  4639    "GET /app/installations",
  4640    "GET /assignments/{assignment_id}/accepted_assignments",
  4641    "GET /classrooms",
  4642    "GET /classrooms/{classroom_id}/assignments",
  4643    "GET /enterprises/{enterprise}/dependabot/alerts",
  4644    "GET /enterprises/{enterprise}/secret-scanning/alerts",
  4645    "GET /events",
  4646    "GET /gists",
  4647    "GET /gists/public",
  4648    "GET /gists/starred",
  4649    "GET /gists/{gist_id}/comments",
  4650    "GET /gists/{gist_id}/commits",
  4651    "GET /gists/{gist_id}/forks",
  4652    "GET /installation/repositories",
  4653    "GET /issues",
  4654    "GET /licenses",
  4655    "GET /marketplace_listing/plans",
  4656    "GET /marketplace_listing/plans/{plan_id}/accounts",
  4657    "GET /marketplace_listing/stubbed/plans",
  4658    "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts",
  4659    "GET /networks/{owner}/{repo}/events",
  4660    "GET /notifications",
  4661    "GET /organizations",
  4662    "GET /orgs/{org}/actions/cache/usage-by-repository",
  4663    "GET /orgs/{org}/actions/permissions/repositories",
  4664    "GET /orgs/{org}/actions/runners",
  4665    "GET /orgs/{org}/actions/secrets",
  4666    "GET /orgs/{org}/actions/secrets/{secret_name}/repositories",
  4667    "GET /orgs/{org}/actions/variables",
  4668    "GET /orgs/{org}/actions/variables/{name}/repositories",
  4669    "GET /orgs/{org}/blocks",
  4670    "GET /orgs/{org}/code-scanning/alerts",
  4671    "GET /orgs/{org}/codespaces",
  4672    "GET /orgs/{org}/codespaces/secrets",
  4673    "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories",
  4674    "GET /orgs/{org}/copilot/billing/seats",
  4675    "GET /orgs/{org}/dependabot/alerts",
  4676    "GET /orgs/{org}/dependabot/secrets",
  4677    "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories",
  4678    "GET /orgs/{org}/events",
  4679    "GET /orgs/{org}/failed_invitations",
  4680    "GET /orgs/{org}/hooks",
  4681    "GET /orgs/{org}/hooks/{hook_id}/deliveries",
  4682    "GET /orgs/{org}/installations",
  4683    "GET /orgs/{org}/invitations",
  4684    "GET /orgs/{org}/invitations/{invitation_id}/teams",
  4685    "GET /orgs/{org}/issues",
  4686    "GET /orgs/{org}/members",
  4687    "GET /orgs/{org}/members/{username}/codespaces",
  4688    "GET /orgs/{org}/migrations",
  4689    "GET /orgs/{org}/migrations/{migration_id}/repositories",
  4690    "GET /orgs/{org}/organization-roles/{role_id}/teams",
  4691    "GET /orgs/{org}/organization-roles/{role_id}/users",
  4692    "GET /orgs/{org}/outside_collaborators",
  4693    "GET /orgs/{org}/packages",
  4694    "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
  4695    "GET /orgs/{org}/personal-access-token-requests",
  4696    "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories",
  4697    "GET /orgs/{org}/personal-access-tokens",
  4698    "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories",
  4699    "GET /orgs/{org}/projects",
  4700    "GET /orgs/{org}/properties/values",
  4701    "GET /orgs/{org}/public_members",
  4702    "GET /orgs/{org}/repos",
  4703    "GET /orgs/{org}/rulesets",
  4704    "GET /orgs/{org}/rulesets/rule-suites",
  4705    "GET /orgs/{org}/secret-scanning/alerts",
  4706    "GET /orgs/{org}/security-advisories",
  4707    "GET /orgs/{org}/teams",
  4708    "GET /orgs/{org}/teams/{team_slug}/discussions",
  4709    "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments",
  4710    "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions",
  4711    "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions",
  4712    "GET /orgs/{org}/teams/{team_slug}/invitations",
  4713    "GET /orgs/{org}/teams/{team_slug}/members",
  4714    "GET /orgs/{org}/teams/{team_slug}/projects",
  4715    "GET /orgs/{org}/teams/{team_slug}/repos",
  4716    "GET /orgs/{org}/teams/{team_slug}/teams",
  4717    "GET /projects/columns/{column_id}/cards",
  4718    "GET /projects/{project_id}/collaborators",
  4719    "GET /projects/{project_id}/columns",
  4720    "GET /repos/{owner}/{repo}/actions/artifacts",
  4721    "GET /repos/{owner}/{repo}/actions/caches",
  4722    "GET /repos/{owner}/{repo}/actions/organization-secrets",
  4723    "GET /repos/{owner}/{repo}/actions/organization-variables",
  4724    "GET /repos/{owner}/{repo}/actions/runners",
  4725    "GET /repos/{owner}/{repo}/actions/runs",
  4726    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts",
  4727    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs",
  4728    "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs",
  4729    "GET /repos/{owner}/{repo}/actions/secrets",
  4730    "GET /repos/{owner}/{repo}/actions/variables",
  4731    "GET /repos/{owner}/{repo}/actions/workflows",
  4732    "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs",
  4733    "GET /repos/{owner}/{repo}/activity",
  4734    "GET /repos/{owner}/{repo}/assignees",
  4735    "GET /repos/{owner}/{repo}/branches",
  4736    "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations",
  4737    "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs",
  4738    "GET /repos/{owner}/{repo}/code-scanning/alerts",
  4739    "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
  4740    "GET /repos/{owner}/{repo}/code-scanning/analyses",
  4741    "GET /repos/{owner}/{repo}/codespaces",
  4742    "GET /repos/{owner}/{repo}/codespaces/devcontainers",
  4743    "GET /repos/{owner}/{repo}/codespaces/secrets",
  4744    "GET /repos/{owner}/{repo}/collaborators",
  4745    "GET /repos/{owner}/{repo}/comments",
  4746    "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions",
  4747    "GET /repos/{owner}/{repo}/commits",
  4748    "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments",
  4749    "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls",
  4750    "GET /repos/{owner}/{repo}/commits/{ref}/check-runs",
  4751    "GET /repos/{owner}/{repo}/commits/{ref}/check-suites",
  4752    "GET /repos/{owner}/{repo}/commits/{ref}/status",
  4753    "GET /repos/{owner}/{repo}/commits/{ref}/statuses",
  4754    "GET /repos/{owner}/{repo}/contributors",
  4755    "GET /repos/{owner}/{repo}/dependabot/alerts",
  4756    "GET /repos/{owner}/{repo}/dependabot/secrets",
  4757    "GET /repos/{owner}/{repo}/deployments",
  4758    "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses",
  4759    "GET /repos/{owner}/{repo}/environments",
  4760    "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies",
  4761    "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps",
  4762    "GET /repos/{owner}/{repo}/events",
  4763    "GET /repos/{owner}/{repo}/forks",
  4764    "GET /repos/{owner}/{repo}/hooks",
  4765    "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries",
  4766    "GET /repos/{owner}/{repo}/invitations",
  4767    "GET /repos/{owner}/{repo}/issues",
  4768    "GET /repos/{owner}/{repo}/issues/comments",
  4769    "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions",
  4770    "GET /repos/{owner}/{repo}/issues/events",
  4771    "GET /repos/{owner}/{repo}/issues/{issue_number}/comments",
  4772    "GET /repos/{owner}/{repo}/issues/{issue_number}/events",
  4773    "GET /repos/{owner}/{repo}/issues/{issue_number}/labels",
  4774    "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions",
  4775    "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline",
  4776    "GET /repos/{owner}/{repo}/keys",
  4777    "GET /repos/{owner}/{repo}/labels",
  4778    "GET /repos/{owner}/{repo}/milestones",
  4779    "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels",
  4780    "GET /repos/{owner}/{repo}/notifications",
  4781    "GET /repos/{owner}/{repo}/pages/builds",
  4782    "GET /repos/{owner}/{repo}/projects",
  4783    "GET /repos/{owner}/{repo}/pulls",
  4784    "GET /repos/{owner}/{repo}/pulls/comments",
  4785    "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions",
  4786    "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments",
  4787    "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits",
  4788    "GET /repos/{owner}/{repo}/pulls/{pull_number}/files",
  4789    "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews",
  4790    "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments",
  4791    "GET /repos/{owner}/{repo}/releases",
  4792    "GET /repos/{owner}/{repo}/releases/{release_id}/assets",
  4793    "GET /repos/{owner}/{repo}/releases/{release_id}/reactions",
  4794    "GET /repos/{owner}/{repo}/rules/branches/{branch}",
  4795    "GET /repos/{owner}/{repo}/rulesets",
  4796    "GET /repos/{owner}/{repo}/rulesets/rule-suites",
  4797    "GET /repos/{owner}/{repo}/secret-scanning/alerts",
  4798    "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations",
  4799    "GET /repos/{owner}/{repo}/security-advisories",
  4800    "GET /repos/{owner}/{repo}/stargazers",
  4801    "GET /repos/{owner}/{repo}/subscribers",
  4802    "GET /repos/{owner}/{repo}/tags",
  4803    "GET /repos/{owner}/{repo}/teams",
  4804    "GET /repos/{owner}/{repo}/topics",
  4805    "GET /repositories",
  4806    "GET /repositories/{repository_id}/environments/{environment_name}/secrets",
  4807    "GET /repositories/{repository_id}/environments/{environment_name}/variables",
  4808    "GET /search/code",
  4809    "GET /search/commits",
  4810    "GET /search/issues",
  4811    "GET /search/labels",
  4812    "GET /search/repositories",
  4813    "GET /search/topics",
  4814    "GET /search/users",
  4815    "GET /teams/{team_id}/discussions",
  4816    "GET /teams/{team_id}/discussions/{discussion_number}/comments",
  4817    "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions",
  4818    "GET /teams/{team_id}/discussions/{discussion_number}/reactions",
  4819    "GET /teams/{team_id}/invitations",
  4820    "GET /teams/{team_id}/members",
  4821    "GET /teams/{team_id}/projects",
  4822    "GET /teams/{team_id}/repos",
  4823    "GET /teams/{team_id}/teams",
  4824    "GET /user/blocks",
  4825    "GET /user/codespaces",
  4826    "GET /user/codespaces/secrets",
  4827    "GET /user/emails",
  4828    "GET /user/followers",
  4829    "GET /user/following",
  4830    "GET /user/gpg_keys",
  4831    "GET /user/installations",
  4832    "GET /user/installations/{installation_id}/repositories",
  4833    "GET /user/issues",
  4834    "GET /user/keys",
  4835    "GET /user/marketplace_purchases",
  4836    "GET /user/marketplace_purchases/stubbed",
  4837    "GET /user/memberships/orgs",
  4838    "GET /user/migrations",
  4839    "GET /user/migrations/{migration_id}/repositories",
  4840    "GET /user/orgs",
  4841    "GET /user/packages",
  4842    "GET /user/packages/{package_type}/{package_name}/versions",
  4843    "GET /user/public_emails",
  4844    "GET /user/repos",
  4845    "GET /user/repository_invitations",
  4846    "GET /user/social_accounts",
  4847    "GET /user/ssh_signing_keys",
  4848    "GET /user/starred",
  4849    "GET /user/subscriptions",
  4850    "GET /user/teams",
  4851    "GET /users",
  4852    "GET /users/{username}/events",
  4853    "GET /users/{username}/events/orgs/{org}",
  4854    "GET /users/{username}/events/public",
  4855    "GET /users/{username}/followers",
  4856    "GET /users/{username}/following",
  4857    "GET /users/{username}/gists",
  4858    "GET /users/{username}/gpg_keys",
  4859    "GET /users/{username}/keys",
  4860    "GET /users/{username}/orgs",
  4861    "GET /users/{username}/packages",
  4862    "GET /users/{username}/projects",
  4863    "GET /users/{username}/received_events",
  4864    "GET /users/{username}/received_events/public",
  4865    "GET /users/{username}/repos",
  4866    "GET /users/{username}/social_accounts",
  4867    "GET /users/{username}/ssh_signing_keys",
  4868    "GET /users/{username}/starred",
  4869    "GET /users/{username}/subscriptions"
  4870  ];
  4871  
  4872  // pkg/dist-src/paginating-endpoints.js
  4873  function isPaginatingEndpoint(arg) {
  4874    if (typeof arg === "string") {
  4875      return paginatingEndpoints.includes(arg);
  4876    } else {
  4877      return false;
  4878    }
  4879  }
  4880  
  4881  // pkg/dist-src/index.js
  4882  function paginateRest(octokit) {
  4883    return {
  4884      paginate: Object.assign(paginate.bind(null, octokit), {
  4885        iterator: iterator.bind(null, octokit)
  4886      })
  4887    };
  4888  }
  4889  paginateRest.VERSION = VERSION;
  4890  // Annotate the CommonJS export names for ESM import in node:
  4891  0 && (0);
  4892  
  4893  
  4894  /***/ }),
  4895  
  4896  /***/ 83044:
  4897  /***/ ((module) => {
  4898  
  4899  "use strict";
  4900  
  4901  var __defProp = Object.defineProperty;
  4902  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  4903  var __getOwnPropNames = Object.getOwnPropertyNames;
  4904  var __hasOwnProp = Object.prototype.hasOwnProperty;
  4905  var __export = (target, all) => {
  4906    for (var name in all)
  4907      __defProp(target, name, { get: all[name], enumerable: true });
  4908  };
  4909  var __copyProps = (to, from, except, desc) => {
  4910    if (from && typeof from === "object" || typeof from === "function") {
  4911      for (let key of __getOwnPropNames(from))
  4912        if (!__hasOwnProp.call(to, key) && key !== except)
  4913          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  4914    }
  4915    return to;
  4916  };
  4917  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  4918  
  4919  // pkg/dist-src/index.js
  4920  var dist_src_exports = {};
  4921  __export(dist_src_exports, {
  4922    legacyRestEndpointMethods: () => legacyRestEndpointMethods,
  4923    restEndpointMethods: () => restEndpointMethods
  4924  });
  4925  module.exports = __toCommonJS(dist_src_exports);
  4926  
  4927  // pkg/dist-src/version.js
  4928  var VERSION = "10.4.1";
  4929  
  4930  // pkg/dist-src/generated/endpoints.js
  4931  var Endpoints = {
  4932    actions: {
  4933      addCustomLabelsToSelfHostedRunnerForOrg: [
  4934        "POST /orgs/{org}/actions/runners/{runner_id}/labels"
  4935      ],
  4936      addCustomLabelsToSelfHostedRunnerForRepo: [
  4937        "POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
  4938      ],
  4939      addSelectedRepoToOrgSecret: [
  4940        "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"
  4941      ],
  4942      addSelectedRepoToOrgVariable: [
  4943        "PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"
  4944      ],
  4945      approveWorkflowRun: [
  4946        "POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve"
  4947      ],
  4948      cancelWorkflowRun: [
  4949        "POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel"
  4950      ],
  4951      createEnvironmentVariable: [
  4952        "POST /repositories/{repository_id}/environments/{environment_name}/variables"
  4953      ],
  4954      createOrUpdateEnvironmentSecret: [
  4955        "PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"
  4956      ],
  4957      createOrUpdateOrgSecret: ["PUT /orgs/{org}/actions/secrets/{secret_name}"],
  4958      createOrUpdateRepoSecret: [
  4959        "PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}"
  4960      ],
  4961      createOrgVariable: ["POST /orgs/{org}/actions/variables"],
  4962      createRegistrationTokenForOrg: [
  4963        "POST /orgs/{org}/actions/runners/registration-token"
  4964      ],
  4965      createRegistrationTokenForRepo: [
  4966        "POST /repos/{owner}/{repo}/actions/runners/registration-token"
  4967      ],
  4968      createRemoveTokenForOrg: ["POST /orgs/{org}/actions/runners/remove-token"],
  4969      createRemoveTokenForRepo: [
  4970        "POST /repos/{owner}/{repo}/actions/runners/remove-token"
  4971      ],
  4972      createRepoVariable: ["POST /repos/{owner}/{repo}/actions/variables"],
  4973      createWorkflowDispatch: [
  4974        "POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches"
  4975      ],
  4976      deleteActionsCacheById: [
  4977        "DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}"
  4978      ],
  4979      deleteActionsCacheByKey: [
  4980        "DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}"
  4981      ],
  4982      deleteArtifact: [
  4983        "DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"
  4984      ],
  4985      deleteEnvironmentSecret: [
  4986        "DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"
  4987      ],
  4988      deleteEnvironmentVariable: [
  4989        "DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}"
  4990      ],
  4991      deleteOrgSecret: ["DELETE /orgs/{org}/actions/secrets/{secret_name}"],
  4992      deleteOrgVariable: ["DELETE /orgs/{org}/actions/variables/{name}"],
  4993      deleteRepoSecret: [
  4994        "DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}"
  4995      ],
  4996      deleteRepoVariable: [
  4997        "DELETE /repos/{owner}/{repo}/actions/variables/{name}"
  4998      ],
  4999      deleteSelfHostedRunnerFromOrg: [
  5000        "DELETE /orgs/{org}/actions/runners/{runner_id}"
  5001      ],
  5002      deleteSelfHostedRunnerFromRepo: [
  5003        "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}"
  5004      ],
  5005      deleteWorkflowRun: ["DELETE /repos/{owner}/{repo}/actions/runs/{run_id}"],
  5006      deleteWorkflowRunLogs: [
  5007        "DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs"
  5008      ],
  5009      disableSelectedRepositoryGithubActionsOrganization: [
  5010        "DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}"
  5011      ],
  5012      disableWorkflow: [
  5013        "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable"
  5014      ],
  5015      downloadArtifact: [
  5016        "GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}"
  5017      ],
  5018      downloadJobLogsForWorkflowRun: [
  5019        "GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs"
  5020      ],
  5021      downloadWorkflowRunAttemptLogs: [
  5022        "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs"
  5023      ],
  5024      downloadWorkflowRunLogs: [
  5025        "GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs"
  5026      ],
  5027      enableSelectedRepositoryGithubActionsOrganization: [
  5028        "PUT /orgs/{org}/actions/permissions/repositories/{repository_id}"
  5029      ],
  5030      enableWorkflow: [
  5031        "PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable"
  5032      ],
  5033      forceCancelWorkflowRun: [
  5034        "POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel"
  5035      ],
  5036      generateRunnerJitconfigForOrg: [
  5037        "POST /orgs/{org}/actions/runners/generate-jitconfig"
  5038      ],
  5039      generateRunnerJitconfigForRepo: [
  5040        "POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig"
  5041      ],
  5042      getActionsCacheList: ["GET /repos/{owner}/{repo}/actions/caches"],
  5043      getActionsCacheUsage: ["GET /repos/{owner}/{repo}/actions/cache/usage"],
  5044      getActionsCacheUsageByRepoForOrg: [
  5045        "GET /orgs/{org}/actions/cache/usage-by-repository"
  5046      ],
  5047      getActionsCacheUsageForOrg: ["GET /orgs/{org}/actions/cache/usage"],
  5048      getAllowedActionsOrganization: [
  5049        "GET /orgs/{org}/actions/permissions/selected-actions"
  5050      ],
  5051      getAllowedActionsRepository: [
  5052        "GET /repos/{owner}/{repo}/actions/permissions/selected-actions"
  5053      ],
  5054      getArtifact: ["GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}"],
  5055      getCustomOidcSubClaimForRepo: [
  5056        "GET /repos/{owner}/{repo}/actions/oidc/customization/sub"
  5057      ],
  5058      getEnvironmentPublicKey: [
  5059        "GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key"
  5060      ],
  5061      getEnvironmentSecret: [
  5062        "GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}"
  5063      ],
  5064      getEnvironmentVariable: [
  5065        "GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}"
  5066      ],
  5067      getGithubActionsDefaultWorkflowPermissionsOrganization: [
  5068        "GET /orgs/{org}/actions/permissions/workflow"
  5069      ],
  5070      getGithubActionsDefaultWorkflowPermissionsRepository: [
  5071        "GET /repos/{owner}/{repo}/actions/permissions/workflow"
  5072      ],
  5073      getGithubActionsPermissionsOrganization: [
  5074        "GET /orgs/{org}/actions/permissions"
  5075      ],
  5076      getGithubActionsPermissionsRepository: [
  5077        "GET /repos/{owner}/{repo}/actions/permissions"
  5078      ],
  5079      getJobForWorkflowRun: ["GET /repos/{owner}/{repo}/actions/jobs/{job_id}"],
  5080      getOrgPublicKey: ["GET /orgs/{org}/actions/secrets/public-key"],
  5081      getOrgSecret: ["GET /orgs/{org}/actions/secrets/{secret_name}"],
  5082      getOrgVariable: ["GET /orgs/{org}/actions/variables/{name}"],
  5083      getPendingDeploymentsForRun: [
  5084        "GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"
  5085      ],
  5086      getRepoPermissions: [
  5087        "GET /repos/{owner}/{repo}/actions/permissions",
  5088        {},
  5089        { renamed: ["actions", "getGithubActionsPermissionsRepository"] }
  5090      ],
  5091      getRepoPublicKey: ["GET /repos/{owner}/{repo}/actions/secrets/public-key"],
  5092      getRepoSecret: ["GET /repos/{owner}/{repo}/actions/secrets/{secret_name}"],
  5093      getRepoVariable: ["GET /repos/{owner}/{repo}/actions/variables/{name}"],
  5094      getReviewsForRun: [
  5095        "GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals"
  5096      ],
  5097      getSelfHostedRunnerForOrg: ["GET /orgs/{org}/actions/runners/{runner_id}"],
  5098      getSelfHostedRunnerForRepo: [
  5099        "GET /repos/{owner}/{repo}/actions/runners/{runner_id}"
  5100      ],
  5101      getWorkflow: ["GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}"],
  5102      getWorkflowAccessToRepository: [
  5103        "GET /repos/{owner}/{repo}/actions/permissions/access"
  5104      ],
  5105      getWorkflowRun: ["GET /repos/{owner}/{repo}/actions/runs/{run_id}"],
  5106      getWorkflowRunAttempt: [
  5107        "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}"
  5108      ],
  5109      getWorkflowRunUsage: [
  5110        "GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing"
  5111      ],
  5112      getWorkflowUsage: [
  5113        "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing"
  5114      ],
  5115      listArtifactsForRepo: ["GET /repos/{owner}/{repo}/actions/artifacts"],
  5116      listEnvironmentSecrets: [
  5117        "GET /repositories/{repository_id}/environments/{environment_name}/secrets"
  5118      ],
  5119      listEnvironmentVariables: [
  5120        "GET /repositories/{repository_id}/environments/{environment_name}/variables"
  5121      ],
  5122      listJobsForWorkflowRun: [
  5123        "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs"
  5124      ],
  5125      listJobsForWorkflowRunAttempt: [
  5126        "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs"
  5127      ],
  5128      listLabelsForSelfHostedRunnerForOrg: [
  5129        "GET /orgs/{org}/actions/runners/{runner_id}/labels"
  5130      ],
  5131      listLabelsForSelfHostedRunnerForRepo: [
  5132        "GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
  5133      ],
  5134      listOrgSecrets: ["GET /orgs/{org}/actions/secrets"],
  5135      listOrgVariables: ["GET /orgs/{org}/actions/variables"],
  5136      listRepoOrganizationSecrets: [
  5137        "GET /repos/{owner}/{repo}/actions/organization-secrets"
  5138      ],
  5139      listRepoOrganizationVariables: [
  5140        "GET /repos/{owner}/{repo}/actions/organization-variables"
  5141      ],
  5142      listRepoSecrets: ["GET /repos/{owner}/{repo}/actions/secrets"],
  5143      listRepoVariables: ["GET /repos/{owner}/{repo}/actions/variables"],
  5144      listRepoWorkflows: ["GET /repos/{owner}/{repo}/actions/workflows"],
  5145      listRunnerApplicationsForOrg: ["GET /orgs/{org}/actions/runners/downloads"],
  5146      listRunnerApplicationsForRepo: [
  5147        "GET /repos/{owner}/{repo}/actions/runners/downloads"
  5148      ],
  5149      listSelectedReposForOrgSecret: [
  5150        "GET /orgs/{org}/actions/secrets/{secret_name}/repositories"
  5151      ],
  5152      listSelectedReposForOrgVariable: [
  5153        "GET /orgs/{org}/actions/variables/{name}/repositories"
  5154      ],
  5155      listSelectedRepositoriesEnabledGithubActionsOrganization: [
  5156        "GET /orgs/{org}/actions/permissions/repositories"
  5157      ],
  5158      listSelfHostedRunnersForOrg: ["GET /orgs/{org}/actions/runners"],
  5159      listSelfHostedRunnersForRepo: ["GET /repos/{owner}/{repo}/actions/runners"],
  5160      listWorkflowRunArtifacts: [
  5161        "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts"
  5162      ],
  5163      listWorkflowRuns: [
  5164        "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs"
  5165      ],
  5166      listWorkflowRunsForRepo: ["GET /repos/{owner}/{repo}/actions/runs"],
  5167      reRunJobForWorkflowRun: [
  5168        "POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun"
  5169      ],
  5170      reRunWorkflow: ["POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun"],
  5171      reRunWorkflowFailedJobs: [
  5172        "POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs"
  5173      ],
  5174      removeAllCustomLabelsFromSelfHostedRunnerForOrg: [
  5175        "DELETE /orgs/{org}/actions/runners/{runner_id}/labels"
  5176      ],
  5177      removeAllCustomLabelsFromSelfHostedRunnerForRepo: [
  5178        "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
  5179      ],
  5180      removeCustomLabelFromSelfHostedRunnerForOrg: [
  5181        "DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}"
  5182      ],
  5183      removeCustomLabelFromSelfHostedRunnerForRepo: [
  5184        "DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}"
  5185      ],
  5186      removeSelectedRepoFromOrgSecret: [
  5187        "DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}"
  5188      ],
  5189      removeSelectedRepoFromOrgVariable: [
  5190        "DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}"
  5191      ],
  5192      reviewCustomGatesForRun: [
  5193        "POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule"
  5194      ],
  5195      reviewPendingDeploymentsForRun: [
  5196        "POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments"
  5197      ],
  5198      setAllowedActionsOrganization: [
  5199        "PUT /orgs/{org}/actions/permissions/selected-actions"
  5200      ],
  5201      setAllowedActionsRepository: [
  5202        "PUT /repos/{owner}/{repo}/actions/permissions/selected-actions"
  5203      ],
  5204      setCustomLabelsForSelfHostedRunnerForOrg: [
  5205        "PUT /orgs/{org}/actions/runners/{runner_id}/labels"
  5206      ],
  5207      setCustomLabelsForSelfHostedRunnerForRepo: [
  5208        "PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels"
  5209      ],
  5210      setCustomOidcSubClaimForRepo: [
  5211        "PUT /repos/{owner}/{repo}/actions/oidc/customization/sub"
  5212      ],
  5213      setGithubActionsDefaultWorkflowPermissionsOrganization: [
  5214        "PUT /orgs/{org}/actions/permissions/workflow"
  5215      ],
  5216      setGithubActionsDefaultWorkflowPermissionsRepository: [
  5217        "PUT /repos/{owner}/{repo}/actions/permissions/workflow"
  5218      ],
  5219      setGithubActionsPermissionsOrganization: [
  5220        "PUT /orgs/{org}/actions/permissions"
  5221      ],
  5222      setGithubActionsPermissionsRepository: [
  5223        "PUT /repos/{owner}/{repo}/actions/permissions"
  5224      ],
  5225      setSelectedReposForOrgSecret: [
  5226        "PUT /orgs/{org}/actions/secrets/{secret_name}/repositories"
  5227      ],
  5228      setSelectedReposForOrgVariable: [
  5229        "PUT /orgs/{org}/actions/variables/{name}/repositories"
  5230      ],
  5231      setSelectedRepositoriesEnabledGithubActionsOrganization: [
  5232        "PUT /orgs/{org}/actions/permissions/repositories"
  5233      ],
  5234      setWorkflowAccessToRepository: [
  5235        "PUT /repos/{owner}/{repo}/actions/permissions/access"
  5236      ],
  5237      updateEnvironmentVariable: [
  5238        "PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}"
  5239      ],
  5240      updateOrgVariable: ["PATCH /orgs/{org}/actions/variables/{name}"],
  5241      updateRepoVariable: [
  5242        "PATCH /repos/{owner}/{repo}/actions/variables/{name}"
  5243      ]
  5244    },
  5245    activity: {
  5246      checkRepoIsStarredByAuthenticatedUser: ["GET /user/starred/{owner}/{repo}"],
  5247      deleteRepoSubscription: ["DELETE /repos/{owner}/{repo}/subscription"],
  5248      deleteThreadSubscription: [
  5249        "DELETE /notifications/threads/{thread_id}/subscription"
  5250      ],
  5251      getFeeds: ["GET /feeds"],
  5252      getRepoSubscription: ["GET /repos/{owner}/{repo}/subscription"],
  5253      getThread: ["GET /notifications/threads/{thread_id}"],
  5254      getThreadSubscriptionForAuthenticatedUser: [
  5255        "GET /notifications/threads/{thread_id}/subscription"
  5256      ],
  5257      listEventsForAuthenticatedUser: ["GET /users/{username}/events"],
  5258      listNotificationsForAuthenticatedUser: ["GET /notifications"],
  5259      listOrgEventsForAuthenticatedUser: [
  5260        "GET /users/{username}/events/orgs/{org}"
  5261      ],
  5262      listPublicEvents: ["GET /events"],
  5263      listPublicEventsForRepoNetwork: ["GET /networks/{owner}/{repo}/events"],
  5264      listPublicEventsForUser: ["GET /users/{username}/events/public"],
  5265      listPublicOrgEvents: ["GET /orgs/{org}/events"],
  5266      listReceivedEventsForUser: ["GET /users/{username}/received_events"],
  5267      listReceivedPublicEventsForUser: [
  5268        "GET /users/{username}/received_events/public"
  5269      ],
  5270      listRepoEvents: ["GET /repos/{owner}/{repo}/events"],
  5271      listRepoNotificationsForAuthenticatedUser: [
  5272        "GET /repos/{owner}/{repo}/notifications"
  5273      ],
  5274      listReposStarredByAuthenticatedUser: ["GET /user/starred"],
  5275      listReposStarredByUser: ["GET /users/{username}/starred"],
  5276      listReposWatchedByUser: ["GET /users/{username}/subscriptions"],
  5277      listStargazersForRepo: ["GET /repos/{owner}/{repo}/stargazers"],
  5278      listWatchedReposForAuthenticatedUser: ["GET /user/subscriptions"],
  5279      listWatchersForRepo: ["GET /repos/{owner}/{repo}/subscribers"],
  5280      markNotificationsAsRead: ["PUT /notifications"],
  5281      markRepoNotificationsAsRead: ["PUT /repos/{owner}/{repo}/notifications"],
  5282      markThreadAsDone: ["DELETE /notifications/threads/{thread_id}"],
  5283      markThreadAsRead: ["PATCH /notifications/threads/{thread_id}"],
  5284      setRepoSubscription: ["PUT /repos/{owner}/{repo}/subscription"],
  5285      setThreadSubscription: [
  5286        "PUT /notifications/threads/{thread_id}/subscription"
  5287      ],
  5288      starRepoForAuthenticatedUser: ["PUT /user/starred/{owner}/{repo}"],
  5289      unstarRepoForAuthenticatedUser: ["DELETE /user/starred/{owner}/{repo}"]
  5290    },
  5291    apps: {
  5292      addRepoToInstallation: [
  5293        "PUT /user/installations/{installation_id}/repositories/{repository_id}",
  5294        {},
  5295        { renamed: ["apps", "addRepoToInstallationForAuthenticatedUser"] }
  5296      ],
  5297      addRepoToInstallationForAuthenticatedUser: [
  5298        "PUT /user/installations/{installation_id}/repositories/{repository_id}"
  5299      ],
  5300      checkToken: ["POST /applications/{client_id}/token"],
  5301      createFromManifest: ["POST /app-manifests/{code}/conversions"],
  5302      createInstallationAccessToken: [
  5303        "POST /app/installations/{installation_id}/access_tokens"
  5304      ],
  5305      deleteAuthorization: ["DELETE /applications/{client_id}/grant"],
  5306      deleteInstallation: ["DELETE /app/installations/{installation_id}"],
  5307      deleteToken: ["DELETE /applications/{client_id}/token"],
  5308      getAuthenticated: ["GET /app"],
  5309      getBySlug: ["GET /apps/{app_slug}"],
  5310      getInstallation: ["GET /app/installations/{installation_id}"],
  5311      getOrgInstallation: ["GET /orgs/{org}/installation"],
  5312      getRepoInstallation: ["GET /repos/{owner}/{repo}/installation"],
  5313      getSubscriptionPlanForAccount: [
  5314        "GET /marketplace_listing/accounts/{account_id}"
  5315      ],
  5316      getSubscriptionPlanForAccountStubbed: [
  5317        "GET /marketplace_listing/stubbed/accounts/{account_id}"
  5318      ],
  5319      getUserInstallation: ["GET /users/{username}/installation"],
  5320      getWebhookConfigForApp: ["GET /app/hook/config"],
  5321      getWebhookDelivery: ["GET /app/hook/deliveries/{delivery_id}"],
  5322      listAccountsForPlan: ["GET /marketplace_listing/plans/{plan_id}/accounts"],
  5323      listAccountsForPlanStubbed: [
  5324        "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts"
  5325      ],
  5326      listInstallationReposForAuthenticatedUser: [
  5327        "GET /user/installations/{installation_id}/repositories"
  5328      ],
  5329      listInstallationRequestsForAuthenticatedApp: [
  5330        "GET /app/installation-requests"
  5331      ],
  5332      listInstallations: ["GET /app/installations"],
  5333      listInstallationsForAuthenticatedUser: ["GET /user/installations"],
  5334      listPlans: ["GET /marketplace_listing/plans"],
  5335      listPlansStubbed: ["GET /marketplace_listing/stubbed/plans"],
  5336      listReposAccessibleToInstallation: ["GET /installation/repositories"],
  5337      listSubscriptionsForAuthenticatedUser: ["GET /user/marketplace_purchases"],
  5338      listSubscriptionsForAuthenticatedUserStubbed: [
  5339        "GET /user/marketplace_purchases/stubbed"
  5340      ],
  5341      listWebhookDeliveries: ["GET /app/hook/deliveries"],
  5342      redeliverWebhookDelivery: [
  5343        "POST /app/hook/deliveries/{delivery_id}/attempts"
  5344      ],
  5345      removeRepoFromInstallation: [
  5346        "DELETE /user/installations/{installation_id}/repositories/{repository_id}",
  5347        {},
  5348        { renamed: ["apps", "removeRepoFromInstallationForAuthenticatedUser"] }
  5349      ],
  5350      removeRepoFromInstallationForAuthenticatedUser: [
  5351        "DELETE /user/installations/{installation_id}/repositories/{repository_id}"
  5352      ],
  5353      resetToken: ["PATCH /applications/{client_id}/token"],
  5354      revokeInstallationAccessToken: ["DELETE /installation/token"],
  5355      scopeToken: ["POST /applications/{client_id}/token/scoped"],
  5356      suspendInstallation: ["PUT /app/installations/{installation_id}/suspended"],
  5357      unsuspendInstallation: [
  5358        "DELETE /app/installations/{installation_id}/suspended"
  5359      ],
  5360      updateWebhookConfigForApp: ["PATCH /app/hook/config"]
  5361    },
  5362    billing: {
  5363      getGithubActionsBillingOrg: ["GET /orgs/{org}/settings/billing/actions"],
  5364      getGithubActionsBillingUser: [
  5365        "GET /users/{username}/settings/billing/actions"
  5366      ],
  5367      getGithubPackagesBillingOrg: ["GET /orgs/{org}/settings/billing/packages"],
  5368      getGithubPackagesBillingUser: [
  5369        "GET /users/{username}/settings/billing/packages"
  5370      ],
  5371      getSharedStorageBillingOrg: [
  5372        "GET /orgs/{org}/settings/billing/shared-storage"
  5373      ],
  5374      getSharedStorageBillingUser: [
  5375        "GET /users/{username}/settings/billing/shared-storage"
  5376      ]
  5377    },
  5378    checks: {
  5379      create: ["POST /repos/{owner}/{repo}/check-runs"],
  5380      createSuite: ["POST /repos/{owner}/{repo}/check-suites"],
  5381      get: ["GET /repos/{owner}/{repo}/check-runs/{check_run_id}"],
  5382      getSuite: ["GET /repos/{owner}/{repo}/check-suites/{check_suite_id}"],
  5383      listAnnotations: [
  5384        "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations"
  5385      ],
  5386      listForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-runs"],
  5387      listForSuite: [
  5388        "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs"
  5389      ],
  5390      listSuitesForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/check-suites"],
  5391      rerequestRun: [
  5392        "POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest"
  5393      ],
  5394      rerequestSuite: [
  5395        "POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest"
  5396      ],
  5397      setSuitesPreferences: [
  5398        "PATCH /repos/{owner}/{repo}/check-suites/preferences"
  5399      ],
  5400      update: ["PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}"]
  5401    },
  5402    codeScanning: {
  5403      deleteAnalysis: [
  5404        "DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}"
  5405      ],
  5406      getAlert: [
  5407        "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}",
  5408        {},
  5409        { renamedParameters: { alert_id: "alert_number" } }
  5410      ],
  5411      getAnalysis: [
  5412        "GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}"
  5413      ],
  5414      getCodeqlDatabase: [
  5415        "GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}"
  5416      ],
  5417      getDefaultSetup: ["GET /repos/{owner}/{repo}/code-scanning/default-setup"],
  5418      getSarif: ["GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}"],
  5419      listAlertInstances: [
  5420        "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances"
  5421      ],
  5422      listAlertsForOrg: ["GET /orgs/{org}/code-scanning/alerts"],
  5423      listAlertsForRepo: ["GET /repos/{owner}/{repo}/code-scanning/alerts"],
  5424      listAlertsInstances: [
  5425        "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances",
  5426        {},
  5427        { renamed: ["codeScanning", "listAlertInstances"] }
  5428      ],
  5429      listCodeqlDatabases: [
  5430        "GET /repos/{owner}/{repo}/code-scanning/codeql/databases"
  5431      ],
  5432      listRecentAnalyses: ["GET /repos/{owner}/{repo}/code-scanning/analyses"],
  5433      updateAlert: [
  5434        "PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}"
  5435      ],
  5436      updateDefaultSetup: [
  5437        "PATCH /repos/{owner}/{repo}/code-scanning/default-setup"
  5438      ],
  5439      uploadSarif: ["POST /repos/{owner}/{repo}/code-scanning/sarifs"]
  5440    },
  5441    codesOfConduct: {
  5442      getAllCodesOfConduct: ["GET /codes_of_conduct"],
  5443      getConductCode: ["GET /codes_of_conduct/{key}"]
  5444    },
  5445    codespaces: {
  5446      addRepositoryForSecretForAuthenticatedUser: [
  5447        "PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"
  5448      ],
  5449      addSelectedRepoToOrgSecret: [
  5450        "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"
  5451      ],
  5452      checkPermissionsForDevcontainer: [
  5453        "GET /repos/{owner}/{repo}/codespaces/permissions_check"
  5454      ],
  5455      codespaceMachinesForAuthenticatedUser: [
  5456        "GET /user/codespaces/{codespace_name}/machines"
  5457      ],
  5458      createForAuthenticatedUser: ["POST /user/codespaces"],
  5459      createOrUpdateOrgSecret: [
  5460        "PUT /orgs/{org}/codespaces/secrets/{secret_name}"
  5461      ],
  5462      createOrUpdateRepoSecret: [
  5463        "PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
  5464      ],
  5465      createOrUpdateSecretForAuthenticatedUser: [
  5466        "PUT /user/codespaces/secrets/{secret_name}"
  5467      ],
  5468      createWithPrForAuthenticatedUser: [
  5469        "POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces"
  5470      ],
  5471      createWithRepoForAuthenticatedUser: [
  5472        "POST /repos/{owner}/{repo}/codespaces"
  5473      ],
  5474      deleteForAuthenticatedUser: ["DELETE /user/codespaces/{codespace_name}"],
  5475      deleteFromOrganization: [
  5476        "DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}"
  5477      ],
  5478      deleteOrgSecret: ["DELETE /orgs/{org}/codespaces/secrets/{secret_name}"],
  5479      deleteRepoSecret: [
  5480        "DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
  5481      ],
  5482      deleteSecretForAuthenticatedUser: [
  5483        "DELETE /user/codespaces/secrets/{secret_name}"
  5484      ],
  5485      exportForAuthenticatedUser: [
  5486        "POST /user/codespaces/{codespace_name}/exports"
  5487      ],
  5488      getCodespacesForUserInOrg: [
  5489        "GET /orgs/{org}/members/{username}/codespaces"
  5490      ],
  5491      getExportDetailsForAuthenticatedUser: [
  5492        "GET /user/codespaces/{codespace_name}/exports/{export_id}"
  5493      ],
  5494      getForAuthenticatedUser: ["GET /user/codespaces/{codespace_name}"],
  5495      getOrgPublicKey: ["GET /orgs/{org}/codespaces/secrets/public-key"],
  5496      getOrgSecret: ["GET /orgs/{org}/codespaces/secrets/{secret_name}"],
  5497      getPublicKeyForAuthenticatedUser: [
  5498        "GET /user/codespaces/secrets/public-key"
  5499      ],
  5500      getRepoPublicKey: [
  5501        "GET /repos/{owner}/{repo}/codespaces/secrets/public-key"
  5502      ],
  5503      getRepoSecret: [
  5504        "GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}"
  5505      ],
  5506      getSecretForAuthenticatedUser: [
  5507        "GET /user/codespaces/secrets/{secret_name}"
  5508      ],
  5509      listDevcontainersInRepositoryForAuthenticatedUser: [
  5510        "GET /repos/{owner}/{repo}/codespaces/devcontainers"
  5511      ],
  5512      listForAuthenticatedUser: ["GET /user/codespaces"],
  5513      listInOrganization: [
  5514        "GET /orgs/{org}/codespaces",
  5515        {},
  5516        { renamedParameters: { org_id: "org" } }
  5517      ],
  5518      listInRepositoryForAuthenticatedUser: [
  5519        "GET /repos/{owner}/{repo}/codespaces"
  5520      ],
  5521      listOrgSecrets: ["GET /orgs/{org}/codespaces/secrets"],
  5522      listRepoSecrets: ["GET /repos/{owner}/{repo}/codespaces/secrets"],
  5523      listRepositoriesForSecretForAuthenticatedUser: [
  5524        "GET /user/codespaces/secrets/{secret_name}/repositories"
  5525      ],
  5526      listSecretsForAuthenticatedUser: ["GET /user/codespaces/secrets"],
  5527      listSelectedReposForOrgSecret: [
  5528        "GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories"
  5529      ],
  5530      preFlightWithRepoForAuthenticatedUser: [
  5531        "GET /repos/{owner}/{repo}/codespaces/new"
  5532      ],
  5533      publishForAuthenticatedUser: [
  5534        "POST /user/codespaces/{codespace_name}/publish"
  5535      ],
  5536      removeRepositoryForSecretForAuthenticatedUser: [
  5537        "DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}"
  5538      ],
  5539      removeSelectedRepoFromOrgSecret: [
  5540        "DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}"
  5541      ],
  5542      repoMachinesForAuthenticatedUser: [
  5543        "GET /repos/{owner}/{repo}/codespaces/machines"
  5544      ],
  5545      setRepositoriesForSecretForAuthenticatedUser: [
  5546        "PUT /user/codespaces/secrets/{secret_name}/repositories"
  5547      ],
  5548      setSelectedReposForOrgSecret: [
  5549        "PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories"
  5550      ],
  5551      startForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/start"],
  5552      stopForAuthenticatedUser: ["POST /user/codespaces/{codespace_name}/stop"],
  5553      stopInOrganization: [
  5554        "POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop"
  5555      ],
  5556      updateForAuthenticatedUser: ["PATCH /user/codespaces/{codespace_name}"]
  5557    },
  5558    copilot: {
  5559      addCopilotSeatsForTeams: [
  5560        "POST /orgs/{org}/copilot/billing/selected_teams"
  5561      ],
  5562      addCopilotSeatsForUsers: [
  5563        "POST /orgs/{org}/copilot/billing/selected_users"
  5564      ],
  5565      cancelCopilotSeatAssignmentForTeams: [
  5566        "DELETE /orgs/{org}/copilot/billing/selected_teams"
  5567      ],
  5568      cancelCopilotSeatAssignmentForUsers: [
  5569        "DELETE /orgs/{org}/copilot/billing/selected_users"
  5570      ],
  5571      getCopilotOrganizationDetails: ["GET /orgs/{org}/copilot/billing"],
  5572      getCopilotSeatDetailsForUser: [
  5573        "GET /orgs/{org}/members/{username}/copilot"
  5574      ],
  5575      listCopilotSeats: ["GET /orgs/{org}/copilot/billing/seats"]
  5576    },
  5577    dependabot: {
  5578      addSelectedRepoToOrgSecret: [
  5579        "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"
  5580      ],
  5581      createOrUpdateOrgSecret: [
  5582        "PUT /orgs/{org}/dependabot/secrets/{secret_name}"
  5583      ],
  5584      createOrUpdateRepoSecret: [
  5585        "PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
  5586      ],
  5587      deleteOrgSecret: ["DELETE /orgs/{org}/dependabot/secrets/{secret_name}"],
  5588      deleteRepoSecret: [
  5589        "DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
  5590      ],
  5591      getAlert: ["GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"],
  5592      getOrgPublicKey: ["GET /orgs/{org}/dependabot/secrets/public-key"],
  5593      getOrgSecret: ["GET /orgs/{org}/dependabot/secrets/{secret_name}"],
  5594      getRepoPublicKey: [
  5595        "GET /repos/{owner}/{repo}/dependabot/secrets/public-key"
  5596      ],
  5597      getRepoSecret: [
  5598        "GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}"
  5599      ],
  5600      listAlertsForEnterprise: [
  5601        "GET /enterprises/{enterprise}/dependabot/alerts"
  5602      ],
  5603      listAlertsForOrg: ["GET /orgs/{org}/dependabot/alerts"],
  5604      listAlertsForRepo: ["GET /repos/{owner}/{repo}/dependabot/alerts"],
  5605      listOrgSecrets: ["GET /orgs/{org}/dependabot/secrets"],
  5606      listRepoSecrets: ["GET /repos/{owner}/{repo}/dependabot/secrets"],
  5607      listSelectedReposForOrgSecret: [
  5608        "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories"
  5609      ],
  5610      removeSelectedRepoFromOrgSecret: [
  5611        "DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}"
  5612      ],
  5613      setSelectedReposForOrgSecret: [
  5614        "PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories"
  5615      ],
  5616      updateAlert: [
  5617        "PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}"
  5618      ]
  5619    },
  5620    dependencyGraph: {
  5621      createRepositorySnapshot: [
  5622        "POST /repos/{owner}/{repo}/dependency-graph/snapshots"
  5623      ],
  5624      diffRange: [
  5625        "GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}"
  5626      ],
  5627      exportSbom: ["GET /repos/{owner}/{repo}/dependency-graph/sbom"]
  5628    },
  5629    emojis: { get: ["GET /emojis"] },
  5630    gists: {
  5631      checkIsStarred: ["GET /gists/{gist_id}/star"],
  5632      create: ["POST /gists"],
  5633      createComment: ["POST /gists/{gist_id}/comments"],
  5634      delete: ["DELETE /gists/{gist_id}"],
  5635      deleteComment: ["DELETE /gists/{gist_id}/comments/{comment_id}"],
  5636      fork: ["POST /gists/{gist_id}/forks"],
  5637      get: ["GET /gists/{gist_id}"],
  5638      getComment: ["GET /gists/{gist_id}/comments/{comment_id}"],
  5639      getRevision: ["GET /gists/{gist_id}/{sha}"],
  5640      list: ["GET /gists"],
  5641      listComments: ["GET /gists/{gist_id}/comments"],
  5642      listCommits: ["GET /gists/{gist_id}/commits"],
  5643      listForUser: ["GET /users/{username}/gists"],
  5644      listForks: ["GET /gists/{gist_id}/forks"],
  5645      listPublic: ["GET /gists/public"],
  5646      listStarred: ["GET /gists/starred"],
  5647      star: ["PUT /gists/{gist_id}/star"],
  5648      unstar: ["DELETE /gists/{gist_id}/star"],
  5649      update: ["PATCH /gists/{gist_id}"],
  5650      updateComment: ["PATCH /gists/{gist_id}/comments/{comment_id}"]
  5651    },
  5652    git: {
  5653      createBlob: ["POST /repos/{owner}/{repo}/git/blobs"],
  5654      createCommit: ["POST /repos/{owner}/{repo}/git/commits"],
  5655      createRef: ["POST /repos/{owner}/{repo}/git/refs"],
  5656      createTag: ["POST /repos/{owner}/{repo}/git/tags"],
  5657      createTree: ["POST /repos/{owner}/{repo}/git/trees"],
  5658      deleteRef: ["DELETE /repos/{owner}/{repo}/git/refs/{ref}"],
  5659      getBlob: ["GET /repos/{owner}/{repo}/git/blobs/{file_sha}"],
  5660      getCommit: ["GET /repos/{owner}/{repo}/git/commits/{commit_sha}"],
  5661      getRef: ["GET /repos/{owner}/{repo}/git/ref/{ref}"],
  5662      getTag: ["GET /repos/{owner}/{repo}/git/tags/{tag_sha}"],
  5663      getTree: ["GET /repos/{owner}/{repo}/git/trees/{tree_sha}"],
  5664      listMatchingRefs: ["GET /repos/{owner}/{repo}/git/matching-refs/{ref}"],
  5665      updateRef: ["PATCH /repos/{owner}/{repo}/git/refs/{ref}"]
  5666    },
  5667    gitignore: {
  5668      getAllTemplates: ["GET /gitignore/templates"],
  5669      getTemplate: ["GET /gitignore/templates/{name}"]
  5670    },
  5671    interactions: {
  5672      getRestrictionsForAuthenticatedUser: ["GET /user/interaction-limits"],
  5673      getRestrictionsForOrg: ["GET /orgs/{org}/interaction-limits"],
  5674      getRestrictionsForRepo: ["GET /repos/{owner}/{repo}/interaction-limits"],
  5675      getRestrictionsForYourPublicRepos: [
  5676        "GET /user/interaction-limits",
  5677        {},
  5678        { renamed: ["interactions", "getRestrictionsForAuthenticatedUser"] }
  5679      ],
  5680      removeRestrictionsForAuthenticatedUser: ["DELETE /user/interaction-limits"],
  5681      removeRestrictionsForOrg: ["DELETE /orgs/{org}/interaction-limits"],
  5682      removeRestrictionsForRepo: [
  5683        "DELETE /repos/{owner}/{repo}/interaction-limits"
  5684      ],
  5685      removeRestrictionsForYourPublicRepos: [
  5686        "DELETE /user/interaction-limits",
  5687        {},
  5688        { renamed: ["interactions", "removeRestrictionsForAuthenticatedUser"] }
  5689      ],
  5690      setRestrictionsForAuthenticatedUser: ["PUT /user/interaction-limits"],
  5691      setRestrictionsForOrg: ["PUT /orgs/{org}/interaction-limits"],
  5692      setRestrictionsForRepo: ["PUT /repos/{owner}/{repo}/interaction-limits"],
  5693      setRestrictionsForYourPublicRepos: [
  5694        "PUT /user/interaction-limits",
  5695        {},
  5696        { renamed: ["interactions", "setRestrictionsForAuthenticatedUser"] }
  5697      ]
  5698    },
  5699    issues: {
  5700      addAssignees: [
  5701        "POST /repos/{owner}/{repo}/issues/{issue_number}/assignees"
  5702      ],
  5703      addLabels: ["POST /repos/{owner}/{repo}/issues/{issue_number}/labels"],
  5704      checkUserCanBeAssigned: ["GET /repos/{owner}/{repo}/assignees/{assignee}"],
  5705      checkUserCanBeAssignedToIssue: [
  5706        "GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}"
  5707      ],
  5708      create: ["POST /repos/{owner}/{repo}/issues"],
  5709      createComment: [
  5710        "POST /repos/{owner}/{repo}/issues/{issue_number}/comments"
  5711      ],
  5712      createLabel: ["POST /repos/{owner}/{repo}/labels"],
  5713      createMilestone: ["POST /repos/{owner}/{repo}/milestones"],
  5714      deleteComment: [
  5715        "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}"
  5716      ],
  5717      deleteLabel: ["DELETE /repos/{owner}/{repo}/labels/{name}"],
  5718      deleteMilestone: [
  5719        "DELETE /repos/{owner}/{repo}/milestones/{milestone_number}"
  5720      ],
  5721      get: ["GET /repos/{owner}/{repo}/issues/{issue_number}"],
  5722      getComment: ["GET /repos/{owner}/{repo}/issues/comments/{comment_id}"],
  5723      getEvent: ["GET /repos/{owner}/{repo}/issues/events/{event_id}"],
  5724      getLabel: ["GET /repos/{owner}/{repo}/labels/{name}"],
  5725      getMilestone: ["GET /repos/{owner}/{repo}/milestones/{milestone_number}"],
  5726      list: ["GET /issues"],
  5727      listAssignees: ["GET /repos/{owner}/{repo}/assignees"],
  5728      listComments: ["GET /repos/{owner}/{repo}/issues/{issue_number}/comments"],
  5729      listCommentsForRepo: ["GET /repos/{owner}/{repo}/issues/comments"],
  5730      listEvents: ["GET /repos/{owner}/{repo}/issues/{issue_number}/events"],
  5731      listEventsForRepo: ["GET /repos/{owner}/{repo}/issues/events"],
  5732      listEventsForTimeline: [
  5733        "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline"
  5734      ],
  5735      listForAuthenticatedUser: ["GET /user/issues"],
  5736      listForOrg: ["GET /orgs/{org}/issues"],
  5737      listForRepo: ["GET /repos/{owner}/{repo}/issues"],
  5738      listLabelsForMilestone: [
  5739        "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels"
  5740      ],
  5741      listLabelsForRepo: ["GET /repos/{owner}/{repo}/labels"],
  5742      listLabelsOnIssue: [
  5743        "GET /repos/{owner}/{repo}/issues/{issue_number}/labels"
  5744      ],
  5745      listMilestones: ["GET /repos/{owner}/{repo}/milestones"],
  5746      lock: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/lock"],
  5747      removeAllLabels: [
  5748        "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels"
  5749      ],
  5750      removeAssignees: [
  5751        "DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees"
  5752      ],
  5753      removeLabel: [
  5754        "DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}"
  5755      ],
  5756      setLabels: ["PUT /repos/{owner}/{repo}/issues/{issue_number}/labels"],
  5757      unlock: ["DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock"],
  5758      update: ["PATCH /repos/{owner}/{repo}/issues/{issue_number}"],
  5759      updateComment: ["PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}"],
  5760      updateLabel: ["PATCH /repos/{owner}/{repo}/labels/{name}"],
  5761      updateMilestone: [
  5762        "PATCH /repos/{owner}/{repo}/milestones/{milestone_number}"
  5763      ]
  5764    },
  5765    licenses: {
  5766      get: ["GET /licenses/{license}"],
  5767      getAllCommonlyUsed: ["GET /licenses"],
  5768      getForRepo: ["GET /repos/{owner}/{repo}/license"]
  5769    },
  5770    markdown: {
  5771      render: ["POST /markdown"],
  5772      renderRaw: [
  5773        "POST /markdown/raw",
  5774        { headers: { "content-type": "text/plain; charset=utf-8" } }
  5775      ]
  5776    },
  5777    meta: {
  5778      get: ["GET /meta"],
  5779      getAllVersions: ["GET /versions"],
  5780      getOctocat: ["GET /octocat"],
  5781      getZen: ["GET /zen"],
  5782      root: ["GET /"]
  5783    },
  5784    migrations: {
  5785      cancelImport: [
  5786        "DELETE /repos/{owner}/{repo}/import",
  5787        {},
  5788        {
  5789          deprecated: "octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import"
  5790        }
  5791      ],
  5792      deleteArchiveForAuthenticatedUser: [
  5793        "DELETE /user/migrations/{migration_id}/archive"
  5794      ],
  5795      deleteArchiveForOrg: [
  5796        "DELETE /orgs/{org}/migrations/{migration_id}/archive"
  5797      ],
  5798      downloadArchiveForOrg: [
  5799        "GET /orgs/{org}/migrations/{migration_id}/archive"
  5800      ],
  5801      getArchiveForAuthenticatedUser: [
  5802        "GET /user/migrations/{migration_id}/archive"
  5803      ],
  5804      getCommitAuthors: [
  5805        "GET /repos/{owner}/{repo}/import/authors",
  5806        {},
  5807        {
  5808          deprecated: "octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors"
  5809        }
  5810      ],
  5811      getImportStatus: [
  5812        "GET /repos/{owner}/{repo}/import",
  5813        {},
  5814        {
  5815          deprecated: "octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status"
  5816        }
  5817      ],
  5818      getLargeFiles: [
  5819        "GET /repos/{owner}/{repo}/import/large_files",
  5820        {},
  5821        {
  5822          deprecated: "octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files"
  5823        }
  5824      ],
  5825      getStatusForAuthenticatedUser: ["GET /user/migrations/{migration_id}"],
  5826      getStatusForOrg: ["GET /orgs/{org}/migrations/{migration_id}"],
  5827      listForAuthenticatedUser: ["GET /user/migrations"],
  5828      listForOrg: ["GET /orgs/{org}/migrations"],
  5829      listReposForAuthenticatedUser: [
  5830        "GET /user/migrations/{migration_id}/repositories"
  5831      ],
  5832      listReposForOrg: ["GET /orgs/{org}/migrations/{migration_id}/repositories"],
  5833      listReposForUser: [
  5834        "GET /user/migrations/{migration_id}/repositories",
  5835        {},
  5836        { renamed: ["migrations", "listReposForAuthenticatedUser"] }
  5837      ],
  5838      mapCommitAuthor: [
  5839        "PATCH /repos/{owner}/{repo}/import/authors/{author_id}",
  5840        {},
  5841        {
  5842          deprecated: "octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author"
  5843        }
  5844      ],
  5845      setLfsPreference: [
  5846        "PATCH /repos/{owner}/{repo}/import/lfs",
  5847        {},
  5848        {
  5849          deprecated: "octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference"
  5850        }
  5851      ],
  5852      startForAuthenticatedUser: ["POST /user/migrations"],
  5853      startForOrg: ["POST /orgs/{org}/migrations"],
  5854      startImport: [
  5855        "PUT /repos/{owner}/{repo}/import",
  5856        {},
  5857        {
  5858          deprecated: "octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import"
  5859        }
  5860      ],
  5861      unlockRepoForAuthenticatedUser: [
  5862        "DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock"
  5863      ],
  5864      unlockRepoForOrg: [
  5865        "DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock"
  5866      ],
  5867      updateImport: [
  5868        "PATCH /repos/{owner}/{repo}/import",
  5869        {},
  5870        {
  5871          deprecated: "octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import"
  5872        }
  5873      ]
  5874    },
  5875    oidc: {
  5876      getOidcCustomSubTemplateForOrg: [
  5877        "GET /orgs/{org}/actions/oidc/customization/sub"
  5878      ],
  5879      updateOidcCustomSubTemplateForOrg: [
  5880        "PUT /orgs/{org}/actions/oidc/customization/sub"
  5881      ]
  5882    },
  5883    orgs: {
  5884      addSecurityManagerTeam: [
  5885        "PUT /orgs/{org}/security-managers/teams/{team_slug}"
  5886      ],
  5887      assignTeamToOrgRole: [
  5888        "PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"
  5889      ],
  5890      assignUserToOrgRole: [
  5891        "PUT /orgs/{org}/organization-roles/users/{username}/{role_id}"
  5892      ],
  5893      blockUser: ["PUT /orgs/{org}/blocks/{username}"],
  5894      cancelInvitation: ["DELETE /orgs/{org}/invitations/{invitation_id}"],
  5895      checkBlockedUser: ["GET /orgs/{org}/blocks/{username}"],
  5896      checkMembershipForUser: ["GET /orgs/{org}/members/{username}"],
  5897      checkPublicMembershipForUser: ["GET /orgs/{org}/public_members/{username}"],
  5898      convertMemberToOutsideCollaborator: [
  5899        "PUT /orgs/{org}/outside_collaborators/{username}"
  5900      ],
  5901      createCustomOrganizationRole: ["POST /orgs/{org}/organization-roles"],
  5902      createInvitation: ["POST /orgs/{org}/invitations"],
  5903      createOrUpdateCustomProperties: ["PATCH /orgs/{org}/properties/schema"],
  5904      createOrUpdateCustomPropertiesValuesForRepos: [
  5905        "PATCH /orgs/{org}/properties/values"
  5906      ],
  5907      createOrUpdateCustomProperty: [
  5908        "PUT /orgs/{org}/properties/schema/{custom_property_name}"
  5909      ],
  5910      createWebhook: ["POST /orgs/{org}/hooks"],
  5911      delete: ["DELETE /orgs/{org}"],
  5912      deleteCustomOrganizationRole: [
  5913        "DELETE /orgs/{org}/organization-roles/{role_id}"
  5914      ],
  5915      deleteWebhook: ["DELETE /orgs/{org}/hooks/{hook_id}"],
  5916      enableOrDisableSecurityProductOnAllOrgRepos: [
  5917        "POST /orgs/{org}/{security_product}/{enablement}"
  5918      ],
  5919      get: ["GET /orgs/{org}"],
  5920      getAllCustomProperties: ["GET /orgs/{org}/properties/schema"],
  5921      getCustomProperty: [
  5922        "GET /orgs/{org}/properties/schema/{custom_property_name}"
  5923      ],
  5924      getMembershipForAuthenticatedUser: ["GET /user/memberships/orgs/{org}"],
  5925      getMembershipForUser: ["GET /orgs/{org}/memberships/{username}"],
  5926      getOrgRole: ["GET /orgs/{org}/organization-roles/{role_id}"],
  5927      getWebhook: ["GET /orgs/{org}/hooks/{hook_id}"],
  5928      getWebhookConfigForOrg: ["GET /orgs/{org}/hooks/{hook_id}/config"],
  5929      getWebhookDelivery: [
  5930        "GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}"
  5931      ],
  5932      list: ["GET /organizations"],
  5933      listAppInstallations: ["GET /orgs/{org}/installations"],
  5934      listBlockedUsers: ["GET /orgs/{org}/blocks"],
  5935      listCustomPropertiesValuesForRepos: ["GET /orgs/{org}/properties/values"],
  5936      listFailedInvitations: ["GET /orgs/{org}/failed_invitations"],
  5937      listForAuthenticatedUser: ["GET /user/orgs"],
  5938      listForUser: ["GET /users/{username}/orgs"],
  5939      listInvitationTeams: ["GET /orgs/{org}/invitations/{invitation_id}/teams"],
  5940      listMembers: ["GET /orgs/{org}/members"],
  5941      listMembershipsForAuthenticatedUser: ["GET /user/memberships/orgs"],
  5942      listOrgRoleTeams: ["GET /orgs/{org}/organization-roles/{role_id}/teams"],
  5943      listOrgRoleUsers: ["GET /orgs/{org}/organization-roles/{role_id}/users"],
  5944      listOrgRoles: ["GET /orgs/{org}/organization-roles"],
  5945      listOrganizationFineGrainedPermissions: [
  5946        "GET /orgs/{org}/organization-fine-grained-permissions"
  5947      ],
  5948      listOutsideCollaborators: ["GET /orgs/{org}/outside_collaborators"],
  5949      listPatGrantRepositories: [
  5950        "GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories"
  5951      ],
  5952      listPatGrantRequestRepositories: [
  5953        "GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories"
  5954      ],
  5955      listPatGrantRequests: ["GET /orgs/{org}/personal-access-token-requests"],
  5956      listPatGrants: ["GET /orgs/{org}/personal-access-tokens"],
  5957      listPendingInvitations: ["GET /orgs/{org}/invitations"],
  5958      listPublicMembers: ["GET /orgs/{org}/public_members"],
  5959      listSecurityManagerTeams: ["GET /orgs/{org}/security-managers"],
  5960      listWebhookDeliveries: ["GET /orgs/{org}/hooks/{hook_id}/deliveries"],
  5961      listWebhooks: ["GET /orgs/{org}/hooks"],
  5962      patchCustomOrganizationRole: [
  5963        "PATCH /orgs/{org}/organization-roles/{role_id}"
  5964      ],
  5965      pingWebhook: ["POST /orgs/{org}/hooks/{hook_id}/pings"],
  5966      redeliverWebhookDelivery: [
  5967        "POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
  5968      ],
  5969      removeCustomProperty: [
  5970        "DELETE /orgs/{org}/properties/schema/{custom_property_name}"
  5971      ],
  5972      removeMember: ["DELETE /orgs/{org}/members/{username}"],
  5973      removeMembershipForUser: ["DELETE /orgs/{org}/memberships/{username}"],
  5974      removeOutsideCollaborator: [
  5975        "DELETE /orgs/{org}/outside_collaborators/{username}"
  5976      ],
  5977      removePublicMembershipForAuthenticatedUser: [
  5978        "DELETE /orgs/{org}/public_members/{username}"
  5979      ],
  5980      removeSecurityManagerTeam: [
  5981        "DELETE /orgs/{org}/security-managers/teams/{team_slug}"
  5982      ],
  5983      reviewPatGrantRequest: [
  5984        "POST /orgs/{org}/personal-access-token-requests/{pat_request_id}"
  5985      ],
  5986      reviewPatGrantRequestsInBulk: [
  5987        "POST /orgs/{org}/personal-access-token-requests"
  5988      ],
  5989      revokeAllOrgRolesTeam: [
  5990        "DELETE /orgs/{org}/organization-roles/teams/{team_slug}"
  5991      ],
  5992      revokeAllOrgRolesUser: [
  5993        "DELETE /orgs/{org}/organization-roles/users/{username}"
  5994      ],
  5995      revokeOrgRoleTeam: [
  5996        "DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}"
  5997      ],
  5998      revokeOrgRoleUser: [
  5999        "DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}"
  6000      ],
  6001      setMembershipForUser: ["PUT /orgs/{org}/memberships/{username}"],
  6002      setPublicMembershipForAuthenticatedUser: [
  6003        "PUT /orgs/{org}/public_members/{username}"
  6004      ],
  6005      unblockUser: ["DELETE /orgs/{org}/blocks/{username}"],
  6006      update: ["PATCH /orgs/{org}"],
  6007      updateMembershipForAuthenticatedUser: [
  6008        "PATCH /user/memberships/orgs/{org}"
  6009      ],
  6010      updatePatAccess: ["POST /orgs/{org}/personal-access-tokens/{pat_id}"],
  6011      updatePatAccesses: ["POST /orgs/{org}/personal-access-tokens"],
  6012      updateWebhook: ["PATCH /orgs/{org}/hooks/{hook_id}"],
  6013      updateWebhookConfigForOrg: ["PATCH /orgs/{org}/hooks/{hook_id}/config"]
  6014    },
  6015    packages: {
  6016      deletePackageForAuthenticatedUser: [
  6017        "DELETE /user/packages/{package_type}/{package_name}"
  6018      ],
  6019      deletePackageForOrg: [
  6020        "DELETE /orgs/{org}/packages/{package_type}/{package_name}"
  6021      ],
  6022      deletePackageForUser: [
  6023        "DELETE /users/{username}/packages/{package_type}/{package_name}"
  6024      ],
  6025      deletePackageVersionForAuthenticatedUser: [
  6026        "DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}"
  6027      ],
  6028      deletePackageVersionForOrg: [
  6029        "DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"
  6030      ],
  6031      deletePackageVersionForUser: [
  6032        "DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"
  6033      ],
  6034      getAllPackageVersionsForAPackageOwnedByAnOrg: [
  6035        "GET /orgs/{org}/packages/{package_type}/{package_name}/versions",
  6036        {},
  6037        { renamed: ["packages", "getAllPackageVersionsForPackageOwnedByOrg"] }
  6038      ],
  6039      getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [
  6040        "GET /user/packages/{package_type}/{package_name}/versions",
  6041        {},
  6042        {
  6043          renamed: [
  6044            "packages",
  6045            "getAllPackageVersionsForPackageOwnedByAuthenticatedUser"
  6046          ]
  6047        }
  6048      ],
  6049      getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [
  6050        "GET /user/packages/{package_type}/{package_name}/versions"
  6051      ],
  6052      getAllPackageVersionsForPackageOwnedByOrg: [
  6053        "GET /orgs/{org}/packages/{package_type}/{package_name}/versions"
  6054      ],
  6055      getAllPackageVersionsForPackageOwnedByUser: [
  6056        "GET /users/{username}/packages/{package_type}/{package_name}/versions"
  6057      ],
  6058      getPackageForAuthenticatedUser: [
  6059        "GET /user/packages/{package_type}/{package_name}"
  6060      ],
  6061      getPackageForOrganization: [
  6062        "GET /orgs/{org}/packages/{package_type}/{package_name}"
  6063      ],
  6064      getPackageForUser: [
  6065        "GET /users/{username}/packages/{package_type}/{package_name}"
  6066      ],
  6067      getPackageVersionForAuthenticatedUser: [
  6068        "GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}"
  6069      ],
  6070      getPackageVersionForOrganization: [
  6071        "GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}"
  6072      ],
  6073      getPackageVersionForUser: [
  6074        "GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}"
  6075      ],
  6076      listDockerMigrationConflictingPackagesForAuthenticatedUser: [
  6077        "GET /user/docker/conflicts"
  6078      ],
  6079      listDockerMigrationConflictingPackagesForOrganization: [
  6080        "GET /orgs/{org}/docker/conflicts"
  6081      ],
  6082      listDockerMigrationConflictingPackagesForUser: [
  6083        "GET /users/{username}/docker/conflicts"
  6084      ],
  6085      listPackagesForAuthenticatedUser: ["GET /user/packages"],
  6086      listPackagesForOrganization: ["GET /orgs/{org}/packages"],
  6087      listPackagesForUser: ["GET /users/{username}/packages"],
  6088      restorePackageForAuthenticatedUser: [
  6089        "POST /user/packages/{package_type}/{package_name}/restore{?token}"
  6090      ],
  6091      restorePackageForOrg: [
  6092        "POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}"
  6093      ],
  6094      restorePackageForUser: [
  6095        "POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}"
  6096      ],
  6097      restorePackageVersionForAuthenticatedUser: [
  6098        "POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
  6099      ],
  6100      restorePackageVersionForOrg: [
  6101        "POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
  6102      ],
  6103      restorePackageVersionForUser: [
  6104        "POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore"
  6105      ]
  6106    },
  6107    projects: {
  6108      addCollaborator: ["PUT /projects/{project_id}/collaborators/{username}"],
  6109      createCard: ["POST /projects/columns/{column_id}/cards"],
  6110      createColumn: ["POST /projects/{project_id}/columns"],
  6111      createForAuthenticatedUser: ["POST /user/projects"],
  6112      createForOrg: ["POST /orgs/{org}/projects"],
  6113      createForRepo: ["POST /repos/{owner}/{repo}/projects"],
  6114      delete: ["DELETE /projects/{project_id}"],
  6115      deleteCard: ["DELETE /projects/columns/cards/{card_id}"],
  6116      deleteColumn: ["DELETE /projects/columns/{column_id}"],
  6117      get: ["GET /projects/{project_id}"],
  6118      getCard: ["GET /projects/columns/cards/{card_id}"],
  6119      getColumn: ["GET /projects/columns/{column_id}"],
  6120      getPermissionForUser: [
  6121        "GET /projects/{project_id}/collaborators/{username}/permission"
  6122      ],
  6123      listCards: ["GET /projects/columns/{column_id}/cards"],
  6124      listCollaborators: ["GET /projects/{project_id}/collaborators"],
  6125      listColumns: ["GET /projects/{project_id}/columns"],
  6126      listForOrg: ["GET /orgs/{org}/projects"],
  6127      listForRepo: ["GET /repos/{owner}/{repo}/projects"],
  6128      listForUser: ["GET /users/{username}/projects"],
  6129      moveCard: ["POST /projects/columns/cards/{card_id}/moves"],
  6130      moveColumn: ["POST /projects/columns/{column_id}/moves"],
  6131      removeCollaborator: [
  6132        "DELETE /projects/{project_id}/collaborators/{username}"
  6133      ],
  6134      update: ["PATCH /projects/{project_id}"],
  6135      updateCard: ["PATCH /projects/columns/cards/{card_id}"],
  6136      updateColumn: ["PATCH /projects/columns/{column_id}"]
  6137    },
  6138    pulls: {
  6139      checkIfMerged: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
  6140      create: ["POST /repos/{owner}/{repo}/pulls"],
  6141      createReplyForReviewComment: [
  6142        "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies"
  6143      ],
  6144      createReview: ["POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
  6145      createReviewComment: [
  6146        "POST /repos/{owner}/{repo}/pulls/{pull_number}/comments"
  6147      ],
  6148      deletePendingReview: [
  6149        "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
  6150      ],
  6151      deleteReviewComment: [
  6152        "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}"
  6153      ],
  6154      dismissReview: [
  6155        "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals"
  6156      ],
  6157      get: ["GET /repos/{owner}/{repo}/pulls/{pull_number}"],
  6158      getReview: [
  6159        "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
  6160      ],
  6161      getReviewComment: ["GET /repos/{owner}/{repo}/pulls/comments/{comment_id}"],
  6162      list: ["GET /repos/{owner}/{repo}/pulls"],
  6163      listCommentsForReview: [
  6164        "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments"
  6165      ],
  6166      listCommits: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/commits"],
  6167      listFiles: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/files"],
  6168      listRequestedReviewers: [
  6169        "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
  6170      ],
  6171      listReviewComments: [
  6172        "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments"
  6173      ],
  6174      listReviewCommentsForRepo: ["GET /repos/{owner}/{repo}/pulls/comments"],
  6175      listReviews: ["GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews"],
  6176      merge: ["PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge"],
  6177      removeRequestedReviewers: [
  6178        "DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
  6179      ],
  6180      requestReviewers: [
  6181        "POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers"
  6182      ],
  6183      submitReview: [
  6184        "POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events"
  6185      ],
  6186      update: ["PATCH /repos/{owner}/{repo}/pulls/{pull_number}"],
  6187      updateBranch: [
  6188        "PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch"
  6189      ],
  6190      updateReview: [
  6191        "PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}"
  6192      ],
  6193      updateReviewComment: [
  6194        "PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}"
  6195      ]
  6196    },
  6197    rateLimit: { get: ["GET /rate_limit"] },
  6198    reactions: {
  6199      createForCommitComment: [
  6200        "POST /repos/{owner}/{repo}/comments/{comment_id}/reactions"
  6201      ],
  6202      createForIssue: [
  6203        "POST /repos/{owner}/{repo}/issues/{issue_number}/reactions"
  6204      ],
  6205      createForIssueComment: [
  6206        "POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"
  6207      ],
  6208      createForPullRequestReviewComment: [
  6209        "POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"
  6210      ],
  6211      createForRelease: [
  6212        "POST /repos/{owner}/{repo}/releases/{release_id}/reactions"
  6213      ],
  6214      createForTeamDiscussionCommentInOrg: [
  6215        "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"
  6216      ],
  6217      createForTeamDiscussionInOrg: [
  6218        "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"
  6219      ],
  6220      deleteForCommitComment: [
  6221        "DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}"
  6222      ],
  6223      deleteForIssue: [
  6224        "DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}"
  6225      ],
  6226      deleteForIssueComment: [
  6227        "DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}"
  6228      ],
  6229      deleteForPullRequestComment: [
  6230        "DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}"
  6231      ],
  6232      deleteForRelease: [
  6233        "DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}"
  6234      ],
  6235      deleteForTeamDiscussion: [
  6236        "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}"
  6237      ],
  6238      deleteForTeamDiscussionComment: [
  6239        "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}"
  6240      ],
  6241      listForCommitComment: [
  6242        "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions"
  6243      ],
  6244      listForIssue: ["GET /repos/{owner}/{repo}/issues/{issue_number}/reactions"],
  6245      listForIssueComment: [
  6246        "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions"
  6247      ],
  6248      listForPullRequestReviewComment: [
  6249        "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions"
  6250      ],
  6251      listForRelease: [
  6252        "GET /repos/{owner}/{repo}/releases/{release_id}/reactions"
  6253      ],
  6254      listForTeamDiscussionCommentInOrg: [
  6255        "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions"
  6256      ],
  6257      listForTeamDiscussionInOrg: [
  6258        "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions"
  6259      ]
  6260    },
  6261    repos: {
  6262      acceptInvitation: [
  6263        "PATCH /user/repository_invitations/{invitation_id}",
  6264        {},
  6265        { renamed: ["repos", "acceptInvitationForAuthenticatedUser"] }
  6266      ],
  6267      acceptInvitationForAuthenticatedUser: [
  6268        "PATCH /user/repository_invitations/{invitation_id}"
  6269      ],
  6270      addAppAccessRestrictions: [
  6271        "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
  6272        {},
  6273        { mapToData: "apps" }
  6274      ],
  6275      addCollaborator: ["PUT /repos/{owner}/{repo}/collaborators/{username}"],
  6276      addStatusCheckContexts: [
  6277        "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
  6278        {},
  6279        { mapToData: "contexts" }
  6280      ],
  6281      addTeamAccessRestrictions: [
  6282        "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
  6283        {},
  6284        { mapToData: "teams" }
  6285      ],
  6286      addUserAccessRestrictions: [
  6287        "POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
  6288        {},
  6289        { mapToData: "users" }
  6290      ],
  6291      cancelPagesDeployment: [
  6292        "POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel"
  6293      ],
  6294      checkAutomatedSecurityFixes: [
  6295        "GET /repos/{owner}/{repo}/automated-security-fixes"
  6296      ],
  6297      checkCollaborator: ["GET /repos/{owner}/{repo}/collaborators/{username}"],
  6298      checkVulnerabilityAlerts: [
  6299        "GET /repos/{owner}/{repo}/vulnerability-alerts"
  6300      ],
  6301      codeownersErrors: ["GET /repos/{owner}/{repo}/codeowners/errors"],
  6302      compareCommits: ["GET /repos/{owner}/{repo}/compare/{base}...{head}"],
  6303      compareCommitsWithBasehead: [
  6304        "GET /repos/{owner}/{repo}/compare/{basehead}"
  6305      ],
  6306      createAutolink: ["POST /repos/{owner}/{repo}/autolinks"],
  6307      createCommitComment: [
  6308        "POST /repos/{owner}/{repo}/commits/{commit_sha}/comments"
  6309      ],
  6310      createCommitSignatureProtection: [
  6311        "POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
  6312      ],
  6313      createCommitStatus: ["POST /repos/{owner}/{repo}/statuses/{sha}"],
  6314      createDeployKey: ["POST /repos/{owner}/{repo}/keys"],
  6315      createDeployment: ["POST /repos/{owner}/{repo}/deployments"],
  6316      createDeploymentBranchPolicy: [
  6317        "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"
  6318      ],
  6319      createDeploymentProtectionRule: [
  6320        "POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"
  6321      ],
  6322      createDeploymentStatus: [
  6323        "POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"
  6324      ],
  6325      createDispatchEvent: ["POST /repos/{owner}/{repo}/dispatches"],
  6326      createForAuthenticatedUser: ["POST /user/repos"],
  6327      createFork: ["POST /repos/{owner}/{repo}/forks"],
  6328      createInOrg: ["POST /orgs/{org}/repos"],
  6329      createOrUpdateCustomPropertiesValues: [
  6330        "PATCH /repos/{owner}/{repo}/properties/values"
  6331      ],
  6332      createOrUpdateEnvironment: [
  6333        "PUT /repos/{owner}/{repo}/environments/{environment_name}"
  6334      ],
  6335      createOrUpdateFileContents: ["PUT /repos/{owner}/{repo}/contents/{path}"],
  6336      createOrgRuleset: ["POST /orgs/{org}/rulesets"],
  6337      createPagesDeployment: ["POST /repos/{owner}/{repo}/pages/deployments"],
  6338      createPagesSite: ["POST /repos/{owner}/{repo}/pages"],
  6339      createRelease: ["POST /repos/{owner}/{repo}/releases"],
  6340      createRepoRuleset: ["POST /repos/{owner}/{repo}/rulesets"],
  6341      createTagProtection: ["POST /repos/{owner}/{repo}/tags/protection"],
  6342      createUsingTemplate: [
  6343        "POST /repos/{template_owner}/{template_repo}/generate"
  6344      ],
  6345      createWebhook: ["POST /repos/{owner}/{repo}/hooks"],
  6346      declineInvitation: [
  6347        "DELETE /user/repository_invitations/{invitation_id}",
  6348        {},
  6349        { renamed: ["repos", "declineInvitationForAuthenticatedUser"] }
  6350      ],
  6351      declineInvitationForAuthenticatedUser: [
  6352        "DELETE /user/repository_invitations/{invitation_id}"
  6353      ],
  6354      delete: ["DELETE /repos/{owner}/{repo}"],
  6355      deleteAccessRestrictions: [
  6356        "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"
  6357      ],
  6358      deleteAdminBranchProtection: [
  6359        "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
  6360      ],
  6361      deleteAnEnvironment: [
  6362        "DELETE /repos/{owner}/{repo}/environments/{environment_name}"
  6363      ],
  6364      deleteAutolink: ["DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}"],
  6365      deleteBranchProtection: [
  6366        "DELETE /repos/{owner}/{repo}/branches/{branch}/protection"
  6367      ],
  6368      deleteCommitComment: ["DELETE /repos/{owner}/{repo}/comments/{comment_id}"],
  6369      deleteCommitSignatureProtection: [
  6370        "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
  6371      ],
  6372      deleteDeployKey: ["DELETE /repos/{owner}/{repo}/keys/{key_id}"],
  6373      deleteDeployment: [
  6374        "DELETE /repos/{owner}/{repo}/deployments/{deployment_id}"
  6375      ],
  6376      deleteDeploymentBranchPolicy: [
  6377        "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
  6378      ],
  6379      deleteFile: ["DELETE /repos/{owner}/{repo}/contents/{path}"],
  6380      deleteInvitation: [
  6381        "DELETE /repos/{owner}/{repo}/invitations/{invitation_id}"
  6382      ],
  6383      deleteOrgRuleset: ["DELETE /orgs/{org}/rulesets/{ruleset_id}"],
  6384      deletePagesSite: ["DELETE /repos/{owner}/{repo}/pages"],
  6385      deletePullRequestReviewProtection: [
  6386        "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
  6387      ],
  6388      deleteRelease: ["DELETE /repos/{owner}/{repo}/releases/{release_id}"],
  6389      deleteReleaseAsset: [
  6390        "DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}"
  6391      ],
  6392      deleteRepoRuleset: ["DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
  6393      deleteTagProtection: [
  6394        "DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}"
  6395      ],
  6396      deleteWebhook: ["DELETE /repos/{owner}/{repo}/hooks/{hook_id}"],
  6397      disableAutomatedSecurityFixes: [
  6398        "DELETE /repos/{owner}/{repo}/automated-security-fixes"
  6399      ],
  6400      disableDeploymentProtectionRule: [
  6401        "DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"
  6402      ],
  6403      disablePrivateVulnerabilityReporting: [
  6404        "DELETE /repos/{owner}/{repo}/private-vulnerability-reporting"
  6405      ],
  6406      disableVulnerabilityAlerts: [
  6407        "DELETE /repos/{owner}/{repo}/vulnerability-alerts"
  6408      ],
  6409      downloadArchive: [
  6410        "GET /repos/{owner}/{repo}/zipball/{ref}",
  6411        {},
  6412        { renamed: ["repos", "downloadZipballArchive"] }
  6413      ],
  6414      downloadTarballArchive: ["GET /repos/{owner}/{repo}/tarball/{ref}"],
  6415      downloadZipballArchive: ["GET /repos/{owner}/{repo}/zipball/{ref}"],
  6416      enableAutomatedSecurityFixes: [
  6417        "PUT /repos/{owner}/{repo}/automated-security-fixes"
  6418      ],
  6419      enablePrivateVulnerabilityReporting: [
  6420        "PUT /repos/{owner}/{repo}/private-vulnerability-reporting"
  6421      ],
  6422      enableVulnerabilityAlerts: [
  6423        "PUT /repos/{owner}/{repo}/vulnerability-alerts"
  6424      ],
  6425      generateReleaseNotes: [
  6426        "POST /repos/{owner}/{repo}/releases/generate-notes"
  6427      ],
  6428      get: ["GET /repos/{owner}/{repo}"],
  6429      getAccessRestrictions: [
  6430        "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions"
  6431      ],
  6432      getAdminBranchProtection: [
  6433        "GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
  6434      ],
  6435      getAllDeploymentProtectionRules: [
  6436        "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules"
  6437      ],
  6438      getAllEnvironments: ["GET /repos/{owner}/{repo}/environments"],
  6439      getAllStatusCheckContexts: [
  6440        "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts"
  6441      ],
  6442      getAllTopics: ["GET /repos/{owner}/{repo}/topics"],
  6443      getAppsWithAccessToProtectedBranch: [
  6444        "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps"
  6445      ],
  6446      getAutolink: ["GET /repos/{owner}/{repo}/autolinks/{autolink_id}"],
  6447      getBranch: ["GET /repos/{owner}/{repo}/branches/{branch}"],
  6448      getBranchProtection: [
  6449        "GET /repos/{owner}/{repo}/branches/{branch}/protection"
  6450      ],
  6451      getBranchRules: ["GET /repos/{owner}/{repo}/rules/branches/{branch}"],
  6452      getClones: ["GET /repos/{owner}/{repo}/traffic/clones"],
  6453      getCodeFrequencyStats: ["GET /repos/{owner}/{repo}/stats/code_frequency"],
  6454      getCollaboratorPermissionLevel: [
  6455        "GET /repos/{owner}/{repo}/collaborators/{username}/permission"
  6456      ],
  6457      getCombinedStatusForRef: ["GET /repos/{owner}/{repo}/commits/{ref}/status"],
  6458      getCommit: ["GET /repos/{owner}/{repo}/commits/{ref}"],
  6459      getCommitActivityStats: ["GET /repos/{owner}/{repo}/stats/commit_activity"],
  6460      getCommitComment: ["GET /repos/{owner}/{repo}/comments/{comment_id}"],
  6461      getCommitSignatureProtection: [
  6462        "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures"
  6463      ],
  6464      getCommunityProfileMetrics: ["GET /repos/{owner}/{repo}/community/profile"],
  6465      getContent: ["GET /repos/{owner}/{repo}/contents/{path}"],
  6466      getContributorsStats: ["GET /repos/{owner}/{repo}/stats/contributors"],
  6467      getCustomDeploymentProtectionRule: [
  6468        "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}"
  6469      ],
  6470      getCustomPropertiesValues: ["GET /repos/{owner}/{repo}/properties/values"],
  6471      getDeployKey: ["GET /repos/{owner}/{repo}/keys/{key_id}"],
  6472      getDeployment: ["GET /repos/{owner}/{repo}/deployments/{deployment_id}"],
  6473      getDeploymentBranchPolicy: [
  6474        "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
  6475      ],
  6476      getDeploymentStatus: [
  6477        "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}"
  6478      ],
  6479      getEnvironment: [
  6480        "GET /repos/{owner}/{repo}/environments/{environment_name}"
  6481      ],
  6482      getLatestPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/latest"],
  6483      getLatestRelease: ["GET /repos/{owner}/{repo}/releases/latest"],
  6484      getOrgRuleSuite: ["GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}"],
  6485      getOrgRuleSuites: ["GET /orgs/{org}/rulesets/rule-suites"],
  6486      getOrgRuleset: ["GET /orgs/{org}/rulesets/{ruleset_id}"],
  6487      getOrgRulesets: ["GET /orgs/{org}/rulesets"],
  6488      getPages: ["GET /repos/{owner}/{repo}/pages"],
  6489      getPagesBuild: ["GET /repos/{owner}/{repo}/pages/builds/{build_id}"],
  6490      getPagesDeployment: [
  6491        "GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}"
  6492      ],
  6493      getPagesHealthCheck: ["GET /repos/{owner}/{repo}/pages/health"],
  6494      getParticipationStats: ["GET /repos/{owner}/{repo}/stats/participation"],
  6495      getPullRequestReviewProtection: [
  6496        "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
  6497      ],
  6498      getPunchCardStats: ["GET /repos/{owner}/{repo}/stats/punch_card"],
  6499      getReadme: ["GET /repos/{owner}/{repo}/readme"],
  6500      getReadmeInDirectory: ["GET /repos/{owner}/{repo}/readme/{dir}"],
  6501      getRelease: ["GET /repos/{owner}/{repo}/releases/{release_id}"],
  6502      getReleaseAsset: ["GET /repos/{owner}/{repo}/releases/assets/{asset_id}"],
  6503      getReleaseByTag: ["GET /repos/{owner}/{repo}/releases/tags/{tag}"],
  6504      getRepoRuleSuite: [
  6505        "GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}"
  6506      ],
  6507      getRepoRuleSuites: ["GET /repos/{owner}/{repo}/rulesets/rule-suites"],
  6508      getRepoRuleset: ["GET /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
  6509      getRepoRulesets: ["GET /repos/{owner}/{repo}/rulesets"],
  6510      getStatusChecksProtection: [
  6511        "GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
  6512      ],
  6513      getTeamsWithAccessToProtectedBranch: [
  6514        "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams"
  6515      ],
  6516      getTopPaths: ["GET /repos/{owner}/{repo}/traffic/popular/paths"],
  6517      getTopReferrers: ["GET /repos/{owner}/{repo}/traffic/popular/referrers"],
  6518      getUsersWithAccessToProtectedBranch: [
  6519        "GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users"
  6520      ],
  6521      getViews: ["GET /repos/{owner}/{repo}/traffic/views"],
  6522      getWebhook: ["GET /repos/{owner}/{repo}/hooks/{hook_id}"],
  6523      getWebhookConfigForRepo: [
  6524        "GET /repos/{owner}/{repo}/hooks/{hook_id}/config"
  6525      ],
  6526      getWebhookDelivery: [
  6527        "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}"
  6528      ],
  6529      listActivities: ["GET /repos/{owner}/{repo}/activity"],
  6530      listAutolinks: ["GET /repos/{owner}/{repo}/autolinks"],
  6531      listBranches: ["GET /repos/{owner}/{repo}/branches"],
  6532      listBranchesForHeadCommit: [
  6533        "GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head"
  6534      ],
  6535      listCollaborators: ["GET /repos/{owner}/{repo}/collaborators"],
  6536      listCommentsForCommit: [
  6537        "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments"
  6538      ],
  6539      listCommitCommentsForRepo: ["GET /repos/{owner}/{repo}/comments"],
  6540      listCommitStatusesForRef: [
  6541        "GET /repos/{owner}/{repo}/commits/{ref}/statuses"
  6542      ],
  6543      listCommits: ["GET /repos/{owner}/{repo}/commits"],
  6544      listContributors: ["GET /repos/{owner}/{repo}/contributors"],
  6545      listCustomDeploymentRuleIntegrations: [
  6546        "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps"
  6547      ],
  6548      listDeployKeys: ["GET /repos/{owner}/{repo}/keys"],
  6549      listDeploymentBranchPolicies: [
  6550        "GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies"
  6551      ],
  6552      listDeploymentStatuses: [
  6553        "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses"
  6554      ],
  6555      listDeployments: ["GET /repos/{owner}/{repo}/deployments"],
  6556      listForAuthenticatedUser: ["GET /user/repos"],
  6557      listForOrg: ["GET /orgs/{org}/repos"],
  6558      listForUser: ["GET /users/{username}/repos"],
  6559      listForks: ["GET /repos/{owner}/{repo}/forks"],
  6560      listInvitations: ["GET /repos/{owner}/{repo}/invitations"],
  6561      listInvitationsForAuthenticatedUser: ["GET /user/repository_invitations"],
  6562      listLanguages: ["GET /repos/{owner}/{repo}/languages"],
  6563      listPagesBuilds: ["GET /repos/{owner}/{repo}/pages/builds"],
  6564      listPublic: ["GET /repositories"],
  6565      listPullRequestsAssociatedWithCommit: [
  6566        "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls"
  6567      ],
  6568      listReleaseAssets: [
  6569        "GET /repos/{owner}/{repo}/releases/{release_id}/assets"
  6570      ],
  6571      listReleases: ["GET /repos/{owner}/{repo}/releases"],
  6572      listTagProtection: ["GET /repos/{owner}/{repo}/tags/protection"],
  6573      listTags: ["GET /repos/{owner}/{repo}/tags"],
  6574      listTeams: ["GET /repos/{owner}/{repo}/teams"],
  6575      listWebhookDeliveries: [
  6576        "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries"
  6577      ],
  6578      listWebhooks: ["GET /repos/{owner}/{repo}/hooks"],
  6579      merge: ["POST /repos/{owner}/{repo}/merges"],
  6580      mergeUpstream: ["POST /repos/{owner}/{repo}/merge-upstream"],
  6581      pingWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/pings"],
  6582      redeliverWebhookDelivery: [
  6583        "POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts"
  6584      ],
  6585      removeAppAccessRestrictions: [
  6586        "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
  6587        {},
  6588        { mapToData: "apps" }
  6589      ],
  6590      removeCollaborator: [
  6591        "DELETE /repos/{owner}/{repo}/collaborators/{username}"
  6592      ],
  6593      removeStatusCheckContexts: [
  6594        "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
  6595        {},
  6596        { mapToData: "contexts" }
  6597      ],
  6598      removeStatusCheckProtection: [
  6599        "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
  6600      ],
  6601      removeTeamAccessRestrictions: [
  6602        "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
  6603        {},
  6604        { mapToData: "teams" }
  6605      ],
  6606      removeUserAccessRestrictions: [
  6607        "DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
  6608        {},
  6609        { mapToData: "users" }
  6610      ],
  6611      renameBranch: ["POST /repos/{owner}/{repo}/branches/{branch}/rename"],
  6612      replaceAllTopics: ["PUT /repos/{owner}/{repo}/topics"],
  6613      requestPagesBuild: ["POST /repos/{owner}/{repo}/pages/builds"],
  6614      setAdminBranchProtection: [
  6615        "POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins"
  6616      ],
  6617      setAppAccessRestrictions: [
  6618        "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps",
  6619        {},
  6620        { mapToData: "apps" }
  6621      ],
  6622      setStatusCheckContexts: [
  6623        "PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts",
  6624        {},
  6625        { mapToData: "contexts" }
  6626      ],
  6627      setTeamAccessRestrictions: [
  6628        "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams",
  6629        {},
  6630        { mapToData: "teams" }
  6631      ],
  6632      setUserAccessRestrictions: [
  6633        "PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users",
  6634        {},
  6635        { mapToData: "users" }
  6636      ],
  6637      testPushWebhook: ["POST /repos/{owner}/{repo}/hooks/{hook_id}/tests"],
  6638      transfer: ["POST /repos/{owner}/{repo}/transfer"],
  6639      update: ["PATCH /repos/{owner}/{repo}"],
  6640      updateBranchProtection: [
  6641        "PUT /repos/{owner}/{repo}/branches/{branch}/protection"
  6642      ],
  6643      updateCommitComment: ["PATCH /repos/{owner}/{repo}/comments/{comment_id}"],
  6644      updateDeploymentBranchPolicy: [
  6645        "PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}"
  6646      ],
  6647      updateInformationAboutPagesSite: ["PUT /repos/{owner}/{repo}/pages"],
  6648      updateInvitation: [
  6649        "PATCH /repos/{owner}/{repo}/invitations/{invitation_id}"
  6650      ],
  6651      updateOrgRuleset: ["PUT /orgs/{org}/rulesets/{ruleset_id}"],
  6652      updatePullRequestReviewProtection: [
  6653        "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews"
  6654      ],
  6655      updateRelease: ["PATCH /repos/{owner}/{repo}/releases/{release_id}"],
  6656      updateReleaseAsset: [
  6657        "PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}"
  6658      ],
  6659      updateRepoRuleset: ["PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}"],
  6660      updateStatusCheckPotection: [
  6661        "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks",
  6662        {},
  6663        { renamed: ["repos", "updateStatusCheckProtection"] }
  6664      ],
  6665      updateStatusCheckProtection: [
  6666        "PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks"
  6667      ],
  6668      updateWebhook: ["PATCH /repos/{owner}/{repo}/hooks/{hook_id}"],
  6669      updateWebhookConfigForRepo: [
  6670        "PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config"
  6671      ],
  6672      uploadReleaseAsset: [
  6673        "POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",
  6674        { baseUrl: "https://uploads.github.com" }
  6675      ]
  6676    },
  6677    search: {
  6678      code: ["GET /search/code"],
  6679      commits: ["GET /search/commits"],
  6680      issuesAndPullRequests: ["GET /search/issues"],
  6681      labels: ["GET /search/labels"],
  6682      repos: ["GET /search/repositories"],
  6683      topics: ["GET /search/topics"],
  6684      users: ["GET /search/users"]
  6685    },
  6686    secretScanning: {
  6687      getAlert: [
  6688        "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"
  6689      ],
  6690      listAlertsForEnterprise: [
  6691        "GET /enterprises/{enterprise}/secret-scanning/alerts"
  6692      ],
  6693      listAlertsForOrg: ["GET /orgs/{org}/secret-scanning/alerts"],
  6694      listAlertsForRepo: ["GET /repos/{owner}/{repo}/secret-scanning/alerts"],
  6695      listLocationsForAlert: [
  6696        "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations"
  6697      ],
  6698      updateAlert: [
  6699        "PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}"
  6700      ]
  6701    },
  6702    securityAdvisories: {
  6703      createFork: [
  6704        "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks"
  6705      ],
  6706      createPrivateVulnerabilityReport: [
  6707        "POST /repos/{owner}/{repo}/security-advisories/reports"
  6708      ],
  6709      createRepositoryAdvisory: [
  6710        "POST /repos/{owner}/{repo}/security-advisories"
  6711      ],
  6712      createRepositoryAdvisoryCveRequest: [
  6713        "POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve"
  6714      ],
  6715      getGlobalAdvisory: ["GET /advisories/{ghsa_id}"],
  6716      getRepositoryAdvisory: [
  6717        "GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}"
  6718      ],
  6719      listGlobalAdvisories: ["GET /advisories"],
  6720      listOrgRepositoryAdvisories: ["GET /orgs/{org}/security-advisories"],
  6721      listRepositoryAdvisories: ["GET /repos/{owner}/{repo}/security-advisories"],
  6722      updateRepositoryAdvisory: [
  6723        "PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}"
  6724      ]
  6725    },
  6726    teams: {
  6727      addOrUpdateMembershipForUserInOrg: [
  6728        "PUT /orgs/{org}/teams/{team_slug}/memberships/{username}"
  6729      ],
  6730      addOrUpdateProjectPermissionsInOrg: [
  6731        "PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}"
  6732      ],
  6733      addOrUpdateRepoPermissionsInOrg: [
  6734        "PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
  6735      ],
  6736      checkPermissionsForProjectInOrg: [
  6737        "GET /orgs/{org}/teams/{team_slug}/projects/{project_id}"
  6738      ],
  6739      checkPermissionsForRepoInOrg: [
  6740        "GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
  6741      ],
  6742      create: ["POST /orgs/{org}/teams"],
  6743      createDiscussionCommentInOrg: [
  6744        "POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"
  6745      ],
  6746      createDiscussionInOrg: ["POST /orgs/{org}/teams/{team_slug}/discussions"],
  6747      deleteDiscussionCommentInOrg: [
  6748        "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
  6749      ],
  6750      deleteDiscussionInOrg: [
  6751        "DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
  6752      ],
  6753      deleteInOrg: ["DELETE /orgs/{org}/teams/{team_slug}"],
  6754      getByName: ["GET /orgs/{org}/teams/{team_slug}"],
  6755      getDiscussionCommentInOrg: [
  6756        "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
  6757      ],
  6758      getDiscussionInOrg: [
  6759        "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
  6760      ],
  6761      getMembershipForUserInOrg: [
  6762        "GET /orgs/{org}/teams/{team_slug}/memberships/{username}"
  6763      ],
  6764      list: ["GET /orgs/{org}/teams"],
  6765      listChildInOrg: ["GET /orgs/{org}/teams/{team_slug}/teams"],
  6766      listDiscussionCommentsInOrg: [
  6767        "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments"
  6768      ],
  6769      listDiscussionsInOrg: ["GET /orgs/{org}/teams/{team_slug}/discussions"],
  6770      listForAuthenticatedUser: ["GET /user/teams"],
  6771      listMembersInOrg: ["GET /orgs/{org}/teams/{team_slug}/members"],
  6772      listPendingInvitationsInOrg: [
  6773        "GET /orgs/{org}/teams/{team_slug}/invitations"
  6774      ],
  6775      listProjectsInOrg: ["GET /orgs/{org}/teams/{team_slug}/projects"],
  6776      listReposInOrg: ["GET /orgs/{org}/teams/{team_slug}/repos"],
  6777      removeMembershipForUserInOrg: [
  6778        "DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}"
  6779      ],
  6780      removeProjectInOrg: [
  6781        "DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}"
  6782      ],
  6783      removeRepoInOrg: [
  6784        "DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}"
  6785      ],
  6786      updateDiscussionCommentInOrg: [
  6787        "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}"
  6788      ],
  6789      updateDiscussionInOrg: [
  6790        "PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}"
  6791      ],
  6792      updateInOrg: ["PATCH /orgs/{org}/teams/{team_slug}"]
  6793    },
  6794    users: {
  6795      addEmailForAuthenticated: [
  6796        "POST /user/emails",
  6797        {},
  6798        { renamed: ["users", "addEmailForAuthenticatedUser"] }
  6799      ],
  6800      addEmailForAuthenticatedUser: ["POST /user/emails"],
  6801      addSocialAccountForAuthenticatedUser: ["POST /user/social_accounts"],
  6802      block: ["PUT /user/blocks/{username}"],
  6803      checkBlocked: ["GET /user/blocks/{username}"],
  6804      checkFollowingForUser: ["GET /users/{username}/following/{target_user}"],
  6805      checkPersonIsFollowedByAuthenticated: ["GET /user/following/{username}"],
  6806      createGpgKeyForAuthenticated: [
  6807        "POST /user/gpg_keys",
  6808        {},
  6809        { renamed: ["users", "createGpgKeyForAuthenticatedUser"] }
  6810      ],
  6811      createGpgKeyForAuthenticatedUser: ["POST /user/gpg_keys"],
  6812      createPublicSshKeyForAuthenticated: [
  6813        "POST /user/keys",
  6814        {},
  6815        { renamed: ["users", "createPublicSshKeyForAuthenticatedUser"] }
  6816      ],
  6817      createPublicSshKeyForAuthenticatedUser: ["POST /user/keys"],
  6818      createSshSigningKeyForAuthenticatedUser: ["POST /user/ssh_signing_keys"],
  6819      deleteEmailForAuthenticated: [
  6820        "DELETE /user/emails",
  6821        {},
  6822        { renamed: ["users", "deleteEmailForAuthenticatedUser"] }
  6823      ],
  6824      deleteEmailForAuthenticatedUser: ["DELETE /user/emails"],
  6825      deleteGpgKeyForAuthenticated: [
  6826        "DELETE /user/gpg_keys/{gpg_key_id}",
  6827        {},
  6828        { renamed: ["users", "deleteGpgKeyForAuthenticatedUser"] }
  6829      ],
  6830      deleteGpgKeyForAuthenticatedUser: ["DELETE /user/gpg_keys/{gpg_key_id}"],
  6831      deletePublicSshKeyForAuthenticated: [
  6832        "DELETE /user/keys/{key_id}",
  6833        {},
  6834        { renamed: ["users", "deletePublicSshKeyForAuthenticatedUser"] }
  6835      ],
  6836      deletePublicSshKeyForAuthenticatedUser: ["DELETE /user/keys/{key_id}"],
  6837      deleteSocialAccountForAuthenticatedUser: ["DELETE /user/social_accounts"],
  6838      deleteSshSigningKeyForAuthenticatedUser: [
  6839        "DELETE /user/ssh_signing_keys/{ssh_signing_key_id}"
  6840      ],
  6841      follow: ["PUT /user/following/{username}"],
  6842      getAuthenticated: ["GET /user"],
  6843      getByUsername: ["GET /users/{username}"],
  6844      getContextForUser: ["GET /users/{username}/hovercard"],
  6845      getGpgKeyForAuthenticated: [
  6846        "GET /user/gpg_keys/{gpg_key_id}",
  6847        {},
  6848        { renamed: ["users", "getGpgKeyForAuthenticatedUser"] }
  6849      ],
  6850      getGpgKeyForAuthenticatedUser: ["GET /user/gpg_keys/{gpg_key_id}"],
  6851      getPublicSshKeyForAuthenticated: [
  6852        "GET /user/keys/{key_id}",
  6853        {},
  6854        { renamed: ["users", "getPublicSshKeyForAuthenticatedUser"] }
  6855      ],
  6856      getPublicSshKeyForAuthenticatedUser: ["GET /user/keys/{key_id}"],
  6857      getSshSigningKeyForAuthenticatedUser: [
  6858        "GET /user/ssh_signing_keys/{ssh_signing_key_id}"
  6859      ],
  6860      list: ["GET /users"],
  6861      listBlockedByAuthenticated: [
  6862        "GET /user/blocks",
  6863        {},
  6864        { renamed: ["users", "listBlockedByAuthenticatedUser"] }
  6865      ],
  6866      listBlockedByAuthenticatedUser: ["GET /user/blocks"],
  6867      listEmailsForAuthenticated: [
  6868        "GET /user/emails",
  6869        {},
  6870        { renamed: ["users", "listEmailsForAuthenticatedUser"] }
  6871      ],
  6872      listEmailsForAuthenticatedUser: ["GET /user/emails"],
  6873      listFollowedByAuthenticated: [
  6874        "GET /user/following",
  6875        {},
  6876        { renamed: ["users", "listFollowedByAuthenticatedUser"] }
  6877      ],
  6878      listFollowedByAuthenticatedUser: ["GET /user/following"],
  6879      listFollowersForAuthenticatedUser: ["GET /user/followers"],
  6880      listFollowersForUser: ["GET /users/{username}/followers"],
  6881      listFollowingForUser: ["GET /users/{username}/following"],
  6882      listGpgKeysForAuthenticated: [
  6883        "GET /user/gpg_keys",
  6884        {},
  6885        { renamed: ["users", "listGpgKeysForAuthenticatedUser"] }
  6886      ],
  6887      listGpgKeysForAuthenticatedUser: ["GET /user/gpg_keys"],
  6888      listGpgKeysForUser: ["GET /users/{username}/gpg_keys"],
  6889      listPublicEmailsForAuthenticated: [
  6890        "GET /user/public_emails",
  6891        {},
  6892        { renamed: ["users", "listPublicEmailsForAuthenticatedUser"] }
  6893      ],
  6894      listPublicEmailsForAuthenticatedUser: ["GET /user/public_emails"],
  6895      listPublicKeysForUser: ["GET /users/{username}/keys"],
  6896      listPublicSshKeysForAuthenticated: [
  6897        "GET /user/keys",
  6898        {},
  6899        { renamed: ["users", "listPublicSshKeysForAuthenticatedUser"] }
  6900      ],
  6901      listPublicSshKeysForAuthenticatedUser: ["GET /user/keys"],
  6902      listSocialAccountsForAuthenticatedUser: ["GET /user/social_accounts"],
  6903      listSocialAccountsForUser: ["GET /users/{username}/social_accounts"],
  6904      listSshSigningKeysForAuthenticatedUser: ["GET /user/ssh_signing_keys"],
  6905      listSshSigningKeysForUser: ["GET /users/{username}/ssh_signing_keys"],
  6906      setPrimaryEmailVisibilityForAuthenticated: [
  6907        "PATCH /user/email/visibility",
  6908        {},
  6909        { renamed: ["users", "setPrimaryEmailVisibilityForAuthenticatedUser"] }
  6910      ],
  6911      setPrimaryEmailVisibilityForAuthenticatedUser: [
  6912        "PATCH /user/email/visibility"
  6913      ],
  6914      unblock: ["DELETE /user/blocks/{username}"],
  6915      unfollow: ["DELETE /user/following/{username}"],
  6916      updateAuthenticated: ["PATCH /user"]
  6917    }
  6918  };
  6919  var endpoints_default = Endpoints;
  6920  
  6921  // pkg/dist-src/endpoints-to-methods.js
  6922  var endpointMethodsMap = /* @__PURE__ */ new Map();
  6923  for (const [scope, endpoints] of Object.entries(endpoints_default)) {
  6924    for (const [methodName, endpoint] of Object.entries(endpoints)) {
  6925      const [route, defaults, decorations] = endpoint;
  6926      const [method, url] = route.split(/ /);
  6927      const endpointDefaults = Object.assign(
  6928        {
  6929          method,
  6930          url
  6931        },
  6932        defaults
  6933      );
  6934      if (!endpointMethodsMap.has(scope)) {
  6935        endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());
  6936      }
  6937      endpointMethodsMap.get(scope).set(methodName, {
  6938        scope,
  6939        methodName,
  6940        endpointDefaults,
  6941        decorations
  6942      });
  6943    }
  6944  }
  6945  var handler = {
  6946    has({ scope }, methodName) {
  6947      return endpointMethodsMap.get(scope).has(methodName);
  6948    },
  6949    getOwnPropertyDescriptor(target, methodName) {
  6950      return {
  6951        value: this.get(target, methodName),
  6952        // ensures method is in the cache
  6953        configurable: true,
  6954        writable: true,
  6955        enumerable: true
  6956      };
  6957    },
  6958    defineProperty(target, methodName, descriptor) {
  6959      Object.defineProperty(target.cache, methodName, descriptor);
  6960      return true;
  6961    },
  6962    deleteProperty(target, methodName) {
  6963      delete target.cache[methodName];
  6964      return true;
  6965    },
  6966    ownKeys({ scope }) {
  6967      return [...endpointMethodsMap.get(scope).keys()];
  6968    },
  6969    set(target, methodName, value) {
  6970      return target.cache[methodName] = value;
  6971    },
  6972    get({ octokit, scope, cache }, methodName) {
  6973      if (cache[methodName]) {
  6974        return cache[methodName];
  6975      }
  6976      const method = endpointMethodsMap.get(scope).get(methodName);
  6977      if (!method) {
  6978        return void 0;
  6979      }
  6980      const { endpointDefaults, decorations } = method;
  6981      if (decorations) {
  6982        cache[methodName] = decorate(
  6983          octokit,
  6984          scope,
  6985          methodName,
  6986          endpointDefaults,
  6987          decorations
  6988        );
  6989      } else {
  6990        cache[methodName] = octokit.request.defaults(endpointDefaults);
  6991      }
  6992      return cache[methodName];
  6993    }
  6994  };
  6995  function endpointsToMethods(octokit) {
  6996    const newMethods = {};
  6997    for (const scope of endpointMethodsMap.keys()) {
  6998      newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);
  6999    }
  7000    return newMethods;
  7001  }
  7002  function decorate(octokit, scope, methodName, defaults, decorations) {
  7003    const requestWithDefaults = octokit.request.defaults(defaults);
  7004    function withDecorations(...args) {
  7005      let options = requestWithDefaults.endpoint.merge(...args);
  7006      if (decorations.mapToData) {
  7007        options = Object.assign({}, options, {
  7008          data: options[decorations.mapToData],
  7009          [decorations.mapToData]: void 0
  7010        });
  7011        return requestWithDefaults(options);
  7012      }
  7013      if (decorations.renamed) {
  7014        const [newScope, newMethodName] = decorations.renamed;
  7015        octokit.log.warn(
  7016          `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`
  7017        );
  7018      }
  7019      if (decorations.deprecated) {
  7020        octokit.log.warn(decorations.deprecated);
  7021      }
  7022      if (decorations.renamedParameters) {
  7023        const options2 = requestWithDefaults.endpoint.merge(...args);
  7024        for (const [name, alias] of Object.entries(
  7025          decorations.renamedParameters
  7026        )) {
  7027          if (name in options2) {
  7028            octokit.log.warn(
  7029              `"${name}" parameter is deprecated for "octokit.${scope}.${methodName}()". Use "${alias}" instead`
  7030            );
  7031            if (!(alias in options2)) {
  7032              options2[alias] = options2[name];
  7033            }
  7034            delete options2[name];
  7035          }
  7036        }
  7037        return requestWithDefaults(options2);
  7038      }
  7039      return requestWithDefaults(...args);
  7040    }
  7041    return Object.assign(withDecorations, requestWithDefaults);
  7042  }
  7043  
  7044  // pkg/dist-src/index.js
  7045  function restEndpointMethods(octokit) {
  7046    const api = endpointsToMethods(octokit);
  7047    return {
  7048      rest: api
  7049    };
  7050  }
  7051  restEndpointMethods.VERSION = VERSION;
  7052  function legacyRestEndpointMethods(octokit) {
  7053    const api = endpointsToMethods(octokit);
  7054    return {
  7055      ...api,
  7056      rest: api
  7057    };
  7058  }
  7059  legacyRestEndpointMethods.VERSION = VERSION;
  7060  // Annotate the CommonJS export names for ESM import in node:
  7061  0 && (0);
  7062  
  7063  
  7064  /***/ }),
  7065  
  7066  /***/ 10537:
  7067  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  7068  
  7069  "use strict";
  7070  
  7071  var __create = Object.create;
  7072  var __defProp = Object.defineProperty;
  7073  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  7074  var __getOwnPropNames = Object.getOwnPropertyNames;
  7075  var __getProtoOf = Object.getPrototypeOf;
  7076  var __hasOwnProp = Object.prototype.hasOwnProperty;
  7077  var __export = (target, all) => {
  7078    for (var name in all)
  7079      __defProp(target, name, { get: all[name], enumerable: true });
  7080  };
  7081  var __copyProps = (to, from, except, desc) => {
  7082    if (from && typeof from === "object" || typeof from === "function") {
  7083      for (let key of __getOwnPropNames(from))
  7084        if (!__hasOwnProp.call(to, key) && key !== except)
  7085          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  7086    }
  7087    return to;
  7088  };
  7089  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
  7090    // If the importer is in node compatibility mode or this is not an ESM
  7091    // file that has been converted to a CommonJS file using a Babel-
  7092    // compatible transform (i.e. "__esModule" has not been set), then set
  7093    // "default" to the CommonJS "module.exports" for node compatibility.
  7094    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
  7095    mod
  7096  ));
  7097  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  7098  
  7099  // pkg/dist-src/index.js
  7100  var dist_src_exports = {};
  7101  __export(dist_src_exports, {
  7102    RequestError: () => RequestError
  7103  });
  7104  module.exports = __toCommonJS(dist_src_exports);
  7105  var import_deprecation = __nccwpck_require__(58932);
  7106  var import_once = __toESM(__nccwpck_require__(1223));
  7107  var logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation));
  7108  var logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation));
  7109  var RequestError = class extends Error {
  7110    constructor(message, statusCode, options) {
  7111      super(message);
  7112      if (Error.captureStackTrace) {
  7113        Error.captureStackTrace(this, this.constructor);
  7114      }
  7115      this.name = "HttpError";
  7116      this.status = statusCode;
  7117      let headers;
  7118      if ("headers" in options && typeof options.headers !== "undefined") {
  7119        headers = options.headers;
  7120      }
  7121      if ("response" in options) {
  7122        this.response = options.response;
  7123        headers = options.response.headers;
  7124      }
  7125      const requestCopy = Object.assign({}, options.request);
  7126      if (options.request.headers.authorization) {
  7127        requestCopy.headers = Object.assign({}, options.request.headers, {
  7128          authorization: options.request.headers.authorization.replace(
  7129            / .*$/,
  7130            " [REDACTED]"
  7131          )
  7132        });
  7133      }
  7134      requestCopy.url = requestCopy.url.replace(/\bclient_secret=\w+/g, "client_secret=[REDACTED]").replace(/\baccess_token=\w+/g, "access_token=[REDACTED]");
  7135      this.request = requestCopy;
  7136      Object.defineProperty(this, "code", {
  7137        get() {
  7138          logOnceCode(
  7139            new import_deprecation.Deprecation(
  7140              "[@octokit/request-error] `error.code` is deprecated, use `error.status`."
  7141            )
  7142          );
  7143          return statusCode;
  7144        }
  7145      });
  7146      Object.defineProperty(this, "headers", {
  7147        get() {
  7148          logOnceHeaders(
  7149            new import_deprecation.Deprecation(
  7150              "[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`."
  7151            )
  7152          );
  7153          return headers || {};
  7154        }
  7155      });
  7156    }
  7157  };
  7158  // Annotate the CommonJS export names for ESM import in node:
  7159  0 && (0);
  7160  
  7161  
  7162  /***/ }),
  7163  
  7164  /***/ 36234:
  7165  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
  7166  
  7167  "use strict";
  7168  
  7169  var __defProp = Object.defineProperty;
  7170  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  7171  var __getOwnPropNames = Object.getOwnPropertyNames;
  7172  var __hasOwnProp = Object.prototype.hasOwnProperty;
  7173  var __export = (target, all) => {
  7174    for (var name in all)
  7175      __defProp(target, name, { get: all[name], enumerable: true });
  7176  };
  7177  var __copyProps = (to, from, except, desc) => {
  7178    if (from && typeof from === "object" || typeof from === "function") {
  7179      for (let key of __getOwnPropNames(from))
  7180        if (!__hasOwnProp.call(to, key) && key !== except)
  7181          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  7182    }
  7183    return to;
  7184  };
  7185  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
  7186  
  7187  // pkg/dist-src/index.js
  7188  var dist_src_exports = {};
  7189  __export(dist_src_exports, {
  7190    request: () => request
  7191  });
  7192  module.exports = __toCommonJS(dist_src_exports);
  7193  var import_endpoint = __nccwpck_require__(59440);
  7194  var import_universal_user_agent = __nccwpck_require__(45030);
  7195  
  7196  // pkg/dist-src/version.js
  7197  var VERSION = "8.4.0";
  7198  
  7199  // pkg/dist-src/is-plain-object.js
  7200  function isPlainObject(value) {
  7201    if (typeof value !== "object" || value === null)
  7202      return false;
  7203    if (Object.prototype.toString.call(value) !== "[object Object]")
  7204      return false;
  7205    const proto = Object.getPrototypeOf(value);
  7206    if (proto === null)
  7207      return true;
  7208    const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
  7209    return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
  7210  }
  7211  
  7212  // pkg/dist-src/fetch-wrapper.js
  7213  var import_request_error = __nccwpck_require__(10537);
  7214  
  7215  // pkg/dist-src/get-buffer-response.js
  7216  function getBufferResponse(response) {
  7217    return response.arrayBuffer();
  7218  }
  7219  
  7220  // pkg/dist-src/fetch-wrapper.js
  7221  function fetchWrapper(requestOptions) {
  7222    var _a, _b, _c, _d;
  7223    const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;
  7224    const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false;
  7225    if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
  7226      requestOptions.body = JSON.stringify(requestOptions.body);
  7227    }
  7228    let headers = {};
  7229    let status;
  7230    let url;
  7231    let { fetch } = globalThis;
  7232    if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) {
  7233      fetch = requestOptions.request.fetch;
  7234    }
  7235    if (!fetch) {
  7236      throw new Error(
  7237        "fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing"
  7238      );
  7239    }
  7240    return fetch(requestOptions.url, {
  7241      method: requestOptions.method,
  7242      body: requestOptions.body,
  7243      redirect: (_c = requestOptions.request) == null ? void 0 : _c.redirect,
  7244      headers: requestOptions.headers,
  7245      signal: (_d = requestOptions.request) == null ? void 0 : _d.signal,
  7246      // duplex must be set if request.body is ReadableStream or Async Iterables.
  7247      // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.
  7248      ...requestOptions.body && { duplex: "half" }
  7249    }).then(async (response) => {
  7250      url = response.url;
  7251      status = response.status;
  7252      for (const keyAndValue of response.headers) {
  7253        headers[keyAndValue[0]] = keyAndValue[1];
  7254      }
  7255      if ("deprecation" in headers) {
  7256        const matches = headers.link && headers.link.match(/<([^>]+)>; rel="deprecation"/);
  7257        const deprecationLink = matches && matches.pop();
  7258        log.warn(
  7259          `[@octokit/request] "${requestOptions.method} ${requestOptions.url}" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : ""}`
  7260        );
  7261      }
  7262      if (status === 204 || status === 205) {
  7263        return;
  7264      }
  7265      if (requestOptions.method === "HEAD") {
  7266        if (status < 400) {
  7267          return;
  7268        }
  7269        throw new import_request_error.RequestError(response.statusText, status, {
  7270          response: {
  7271            url,
  7272            status,
  7273            headers,
  7274            data: void 0
  7275          },
  7276          request: requestOptions
  7277        });
  7278      }
  7279      if (status === 304) {
  7280        throw new import_request_error.RequestError("Not modified", status, {
  7281          response: {
  7282            url,
  7283            status,
  7284            headers,
  7285            data: await getResponseData(response)
  7286          },
  7287          request: requestOptions
  7288        });
  7289      }
  7290      if (status >= 400) {
  7291        const data = await getResponseData(response);
  7292        const error = new import_request_error.RequestError(toErrorMessage(data), status, {
  7293          response: {
  7294            url,
  7295            status,
  7296            headers,
  7297            data
  7298          },
  7299          request: requestOptions
  7300        });
  7301        throw error;
  7302      }
  7303      return parseSuccessResponseBody ? await getResponseData(response) : response.body;
  7304    }).then((data) => {
  7305      return {
  7306        status,
  7307        url,
  7308        headers,
  7309        data
  7310      };
  7311    }).catch((error) => {
  7312      if (error instanceof import_request_error.RequestError)
  7313        throw error;
  7314      else if (error.name === "AbortError")
  7315        throw error;
  7316      let message = error.message;
  7317      if (error.name === "TypeError" && "cause" in error) {
  7318        if (error.cause instanceof Error) {
  7319          message = error.cause.message;
  7320        } else if (typeof error.cause === "string") {
  7321          message = error.cause;
  7322        }
  7323      }
  7324      throw new import_request_error.RequestError(message, 500, {
  7325        request: requestOptions
  7326      });
  7327    });
  7328  }
  7329  async function getResponseData(response) {
  7330    const contentType = response.headers.get("content-type");
  7331    if (/application\/json/.test(contentType)) {
  7332      return response.json().catch(() => response.text()).catch(() => "");
  7333    }
  7334    if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
  7335      return response.text();
  7336    }
  7337    return getBufferResponse(response);
  7338  }
  7339  function toErrorMessage(data) {
  7340    if (typeof data === "string")
  7341      return data;
  7342    let suffix;
  7343    if ("documentation_url" in data) {
  7344      suffix = ` - ${data.documentation_url}`;
  7345    } else {
  7346      suffix = "";
  7347    }
  7348    if ("message" in data) {
  7349      if (Array.isArray(data.errors)) {
  7350        return `${data.message}: ${data.errors.map(JSON.stringify).join(", ")}${suffix}`;
  7351      }
  7352      return `${data.message}${suffix}`;
  7353    }
  7354    return `Unknown error: ${JSON.stringify(data)}`;
  7355  }
  7356  
  7357  // pkg/dist-src/with-defaults.js
  7358  function withDefaults(oldEndpoint, newDefaults) {
  7359    const endpoint2 = oldEndpoint.defaults(newDefaults);
  7360    const newApi = function(route, parameters) {
  7361      const endpointOptions = endpoint2.merge(route, parameters);
  7362      if (!endpointOptions.request || !endpointOptions.request.hook) {
  7363        return fetchWrapper(endpoint2.parse(endpointOptions));
  7364      }
  7365      const request2 = (route2, parameters2) => {
  7366        return fetchWrapper(
  7367          endpoint2.parse(endpoint2.merge(route2, parameters2))
  7368        );
  7369      };
  7370      Object.assign(request2, {
  7371        endpoint: endpoint2,
  7372        defaults: withDefaults.bind(null, endpoint2)
  7373      });
  7374      return endpointOptions.request.hook(request2, endpointOptions);
  7375    };
  7376    return Object.assign(newApi, {
  7377      endpoint: endpoint2,
  7378      defaults: withDefaults.bind(null, endpoint2)
  7379    });
  7380  }
  7381  
  7382  // pkg/dist-src/index.js
  7383  var request = withDefaults(import_endpoint.endpoint, {
  7384    headers: {
  7385      "user-agent": `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`
  7386    }
  7387  });
  7388  // Annotate the CommonJS export names for ESM import in node:
  7389  0 && (0);
  7390  
  7391  
  7392  /***/ }),
  7393  
  7394  /***/ 66833:
  7395  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  7396  
  7397  "use strict";
  7398  
  7399  Object.defineProperty(exports, "__esModule", ({ value: true }));
  7400  exports.toDSSEBundle = exports.toMessageSignatureBundle = void 0;
  7401  /*
  7402  Copyright 2023 The Sigstore Authors.
  7403  
  7404  Licensed under the Apache License, Version 2.0 (the "License");
  7405  you may not use this file except in compliance with the License.
  7406  You may obtain a copy of the License at
  7407  
  7408      http://www.apache.org/licenses/LICENSE-2.0
  7409  
  7410  Unless required by applicable law or agreed to in writing, software
  7411  distributed under the License is distributed on an "AS IS" BASIS,
  7412  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  7413  See the License for the specific language governing permissions and
  7414  limitations under the License.
  7415  */
  7416  const protobuf_specs_1 = __nccwpck_require__(60530);
  7417  const bundle_1 = __nccwpck_require__(22712);
  7418  // Message signature bundle - $case: 'messageSignature'
  7419  function toMessageSignatureBundle(options) {
  7420      return {
  7421          mediaType: options.singleCertificate
  7422              ? bundle_1.BUNDLE_V03_MEDIA_TYPE
  7423              : bundle_1.BUNDLE_V02_MEDIA_TYPE,
  7424          content: {
  7425              $case: 'messageSignature',
  7426              messageSignature: {
  7427                  messageDigest: {
  7428                      algorithm: protobuf_specs_1.HashAlgorithm.SHA2_256,
  7429                      digest: options.digest,
  7430                  },
  7431                  signature: options.signature,
  7432              },
  7433          },
  7434          verificationMaterial: toVerificationMaterial(options),
  7435      };
  7436  }
  7437  exports.toMessageSignatureBundle = toMessageSignatureBundle;
  7438  // DSSE envelope bundle - $case: 'dsseEnvelope'
  7439  function toDSSEBundle(options) {
  7440      return {
  7441          mediaType: options.singleCertificate
  7442              ? bundle_1.BUNDLE_V03_MEDIA_TYPE
  7443              : bundle_1.BUNDLE_V02_MEDIA_TYPE,
  7444          content: {
  7445              $case: 'dsseEnvelope',
  7446              dsseEnvelope: toEnvelope(options),
  7447          },
  7448          verificationMaterial: toVerificationMaterial(options),
  7449      };
  7450  }
  7451  exports.toDSSEBundle = toDSSEBundle;
  7452  function toEnvelope(options) {
  7453      return {
  7454          payloadType: options.artifactType,
  7455          payload: options.artifact,
  7456          signatures: [toSignature(options)],
  7457      };
  7458  }
  7459  function toSignature(options) {
  7460      return {
  7461          keyid: options.keyHint || '',
  7462          sig: options.signature,
  7463      };
  7464  }
  7465  // Verification material
  7466  function toVerificationMaterial(options) {
  7467      return {
  7468          content: toKeyContent(options),
  7469          tlogEntries: [],
  7470          timestampVerificationData: { rfc3161Timestamps: [] },
  7471      };
  7472  }
  7473  function toKeyContent(options) {
  7474      if (options.certificate) {
  7475          if (options.singleCertificate) {
  7476              return {
  7477                  $case: 'certificate',
  7478                  certificate: { rawBytes: options.certificate },
  7479              };
  7480          }
  7481          else {
  7482              return {
  7483                  $case: 'x509CertificateChain',
  7484                  x509CertificateChain: {
  7485                      certificates: [{ rawBytes: options.certificate }],
  7486                  },
  7487              };
  7488          }
  7489      }
  7490      else {
  7491          return {
  7492              $case: 'publicKey',
  7493              publicKey: {
  7494                  hint: options.keyHint || '',
  7495              },
  7496          };
  7497      }
  7498  }
  7499  
  7500  
  7501  /***/ }),
  7502  
  7503  /***/ 22712:
  7504  /***/ ((__unused_webpack_module, exports) => {
  7505  
  7506  "use strict";
  7507  
  7508  Object.defineProperty(exports, "__esModule", ({ value: true }));
  7509  exports.isBundleWithDsseEnvelope = exports.isBundleWithMessageSignature = exports.isBundleWithPublicKey = exports.isBundleWithCertificateChain = exports.BUNDLE_V03_MEDIA_TYPE = exports.BUNDLE_V03_LEGACY_MEDIA_TYPE = exports.BUNDLE_V02_MEDIA_TYPE = exports.BUNDLE_V01_MEDIA_TYPE = void 0;
  7510  exports.BUNDLE_V01_MEDIA_TYPE = 'application/vnd.dev.sigstore.bundle+json;version=0.1';
  7511  exports.BUNDLE_V02_MEDIA_TYPE = 'application/vnd.dev.sigstore.bundle+json;version=0.2';
  7512  exports.BUNDLE_V03_LEGACY_MEDIA_TYPE = 'application/vnd.dev.sigstore.bundle+json;version=0.3';
  7513  exports.BUNDLE_V03_MEDIA_TYPE = 'application/vnd.dev.sigstore.bundle.v0.3+json';
  7514  // Type guards for bundle variants.
  7515  function isBundleWithCertificateChain(b) {
  7516      return b.verificationMaterial.content.$case === 'x509CertificateChain';
  7517  }
  7518  exports.isBundleWithCertificateChain = isBundleWithCertificateChain;
  7519  function isBundleWithPublicKey(b) {
  7520      return b.verificationMaterial.content.$case === 'publicKey';
  7521  }
  7522  exports.isBundleWithPublicKey = isBundleWithPublicKey;
  7523  function isBundleWithMessageSignature(b) {
  7524      return b.content.$case === 'messageSignature';
  7525  }
  7526  exports.isBundleWithMessageSignature = isBundleWithMessageSignature;
  7527  function isBundleWithDsseEnvelope(b) {
  7528      return b.content.$case === 'dsseEnvelope';
  7529  }
  7530  exports.isBundleWithDsseEnvelope = isBundleWithDsseEnvelope;
  7531  
  7532  
  7533  /***/ }),
  7534  
  7535  /***/ 63802:
  7536  /***/ ((__unused_webpack_module, exports) => {
  7537  
  7538  "use strict";
  7539  
  7540  Object.defineProperty(exports, "__esModule", ({ value: true }));
  7541  exports.ValidationError = void 0;
  7542  /*
  7543  Copyright 2023 The Sigstore Authors.
  7544  
  7545  Licensed under the Apache License, Version 2.0 (the "License");
  7546  you may not use this file except in compliance with the License.
  7547  You may obtain a copy of the License at
  7548  
  7549      http://www.apache.org/licenses/LICENSE-2.0
  7550  
  7551  Unless required by applicable law or agreed to in writing, software
  7552  distributed under the License is distributed on an "AS IS" BASIS,
  7553  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  7554  See the License for the specific language governing permissions and
  7555  limitations under the License.
  7556  */
  7557  class ValidationError extends Error {
  7558      constructor(message, fields) {
  7559          super(message);
  7560          this.fields = fields;
  7561      }
  7562  }
  7563  exports.ValidationError = ValidationError;
  7564  
  7565  
  7566  /***/ }),
  7567  
  7568  /***/ 29715:
  7569  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  7570  
  7571  "use strict";
  7572  
  7573  Object.defineProperty(exports, "__esModule", ({ value: true }));
  7574  exports.isBundleV01 = exports.assertBundleV02 = exports.assertBundleV01 = exports.assertBundleLatest = exports.assertBundle = exports.envelopeToJSON = exports.envelopeFromJSON = exports.bundleToJSON = exports.bundleFromJSON = exports.ValidationError = exports.isBundleWithPublicKey = exports.isBundleWithMessageSignature = exports.isBundleWithDsseEnvelope = exports.isBundleWithCertificateChain = exports.BUNDLE_V03_MEDIA_TYPE = exports.BUNDLE_V03_LEGACY_MEDIA_TYPE = exports.BUNDLE_V02_MEDIA_TYPE = exports.BUNDLE_V01_MEDIA_TYPE = exports.toMessageSignatureBundle = exports.toDSSEBundle = void 0;
  7575  /*
  7576  Copyright 2023 The Sigstore Authors.
  7577  
  7578  Licensed under the Apache License, Version 2.0 (the "License");
  7579  you may not use this file except in compliance with the License.
  7580  You may obtain a copy of the License at
  7581  
  7582      http://www.apache.org/licenses/LICENSE-2.0
  7583  
  7584  Unless required by applicable law or agreed to in writing, software
  7585  distributed under the License is distributed on an "AS IS" BASIS,
  7586  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  7587  See the License for the specific language governing permissions and
  7588  limitations under the License.
  7589  */
  7590  var build_1 = __nccwpck_require__(66833);
  7591  Object.defineProperty(exports, "toDSSEBundle", ({ enumerable: true, get: function () { return build_1.toDSSEBundle; } }));
  7592  Object.defineProperty(exports, "toMessageSignatureBundle", ({ enumerable: true, get: function () { return build_1.toMessageSignatureBundle; } }));
  7593  var bundle_1 = __nccwpck_require__(22712);
  7594  Object.defineProperty(exports, "BUNDLE_V01_MEDIA_TYPE", ({ enumerable: true, get: function () { return bundle_1.BUNDLE_V01_MEDIA_TYPE; } }));
  7595  Object.defineProperty(exports, "BUNDLE_V02_MEDIA_TYPE", ({ enumerable: true, get: function () { return bundle_1.BUNDLE_V02_MEDIA_TYPE; } }));
  7596  Object.defineProperty(exports, "BUNDLE_V03_LEGACY_MEDIA_TYPE", ({ enumerable: true, get: function () { return bundle_1.BUNDLE_V03_LEGACY_MEDIA_TYPE; } }));
  7597  Object.defineProperty(exports, "BUNDLE_V03_MEDIA_TYPE", ({ enumerable: true, get: function () { return bundle_1.BUNDLE_V03_MEDIA_TYPE; } }));
  7598  Object.defineProperty(exports, "isBundleWithCertificateChain", ({ enumerable: true, get: function () { return bundle_1.isBundleWithCertificateChain; } }));
  7599  Object.defineProperty(exports, "isBundleWithDsseEnvelope", ({ enumerable: true, get: function () { return bundle_1.isBundleWithDsseEnvelope; } }));
  7600  Object.defineProperty(exports, "isBundleWithMessageSignature", ({ enumerable: true, get: function () { return bundle_1.isBundleWithMessageSignature; } }));
  7601  Object.defineProperty(exports, "isBundleWithPublicKey", ({ enumerable: true, get: function () { return bundle_1.isBundleWithPublicKey; } }));
  7602  var error_1 = __nccwpck_require__(63802);
  7603  Object.defineProperty(exports, "ValidationError", ({ enumerable: true, get: function () { return error_1.ValidationError; } }));
  7604  var serialized_1 = __nccwpck_require__(39875);
  7605  Object.defineProperty(exports, "bundleFromJSON", ({ enumerable: true, get: function () { return serialized_1.bundleFromJSON; } }));
  7606  Object.defineProperty(exports, "bundleToJSON", ({ enumerable: true, get: function () { return serialized_1.bundleToJSON; } }));
  7607  Object.defineProperty(exports, "envelopeFromJSON", ({ enumerable: true, get: function () { return serialized_1.envelopeFromJSON; } }));
  7608  Object.defineProperty(exports, "envelopeToJSON", ({ enumerable: true, get: function () { return serialized_1.envelopeToJSON; } }));
  7609  var validate_1 = __nccwpck_require__(39599);
  7610  Object.defineProperty(exports, "assertBundle", ({ enumerable: true, get: function () { return validate_1.assertBundle; } }));
  7611  Object.defineProperty(exports, "assertBundleLatest", ({ enumerable: true, get: function () { return validate_1.assertBundleLatest; } }));
  7612  Object.defineProperty(exports, "assertBundleV01", ({ enumerable: true, get: function () { return validate_1.assertBundleV01; } }));
  7613  Object.defineProperty(exports, "assertBundleV02", ({ enumerable: true, get: function () { return validate_1.assertBundleV02; } }));
  7614  Object.defineProperty(exports, "isBundleV01", ({ enumerable: true, get: function () { return validate_1.isBundleV01; } }));
  7615  
  7616  
  7617  /***/ }),
  7618  
  7619  /***/ 39875:
  7620  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  7621  
  7622  "use strict";
  7623  
  7624  Object.defineProperty(exports, "__esModule", ({ value: true }));
  7625  exports.envelopeToJSON = exports.envelopeFromJSON = exports.bundleToJSON = exports.bundleFromJSON = void 0;
  7626  /*
  7627  Copyright 2023 The Sigstore Authors.
  7628  
  7629  Licensed under the Apache License, Version 2.0 (the "License");
  7630  you may not use this file except in compliance with the License.
  7631  You may obtain a copy of the License at
  7632  
  7633      http://www.apache.org/licenses/LICENSE-2.0
  7634  
  7635  Unless required by applicable law or agreed to in writing, software
  7636  distributed under the License is distributed on an "AS IS" BASIS,
  7637  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  7638  See the License for the specific language governing permissions and
  7639  limitations under the License.
  7640  */
  7641  const protobuf_specs_1 = __nccwpck_require__(60530);
  7642  const bundle_1 = __nccwpck_require__(22712);
  7643  const validate_1 = __nccwpck_require__(39599);
  7644  const bundleFromJSON = (obj) => {
  7645      const bundle = protobuf_specs_1.Bundle.fromJSON(obj);
  7646      switch (bundle.mediaType) {
  7647          case bundle_1.BUNDLE_V01_MEDIA_TYPE:
  7648              (0, validate_1.assertBundleV01)(bundle);
  7649              break;
  7650          case bundle_1.BUNDLE_V02_MEDIA_TYPE:
  7651              (0, validate_1.assertBundleV02)(bundle);
  7652              break;
  7653          default:
  7654              (0, validate_1.assertBundleLatest)(bundle);
  7655              break;
  7656      }
  7657      return bundle;
  7658  };
  7659  exports.bundleFromJSON = bundleFromJSON;
  7660  const bundleToJSON = (bundle) => {
  7661      return protobuf_specs_1.Bundle.toJSON(bundle);
  7662  };
  7663  exports.bundleToJSON = bundleToJSON;
  7664  const envelopeFromJSON = (obj) => {
  7665      return protobuf_specs_1.Envelope.fromJSON(obj);
  7666  };
  7667  exports.envelopeFromJSON = envelopeFromJSON;
  7668  const envelopeToJSON = (envelope) => {
  7669      return protobuf_specs_1.Envelope.toJSON(envelope);
  7670  };
  7671  exports.envelopeToJSON = envelopeToJSON;
  7672  
  7673  
  7674  /***/ }),
  7675  
  7676  /***/ 39599:
  7677  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  7678  
  7679  "use strict";
  7680  
  7681  Object.defineProperty(exports, "__esModule", ({ value: true }));
  7682  exports.assertBundleLatest = exports.assertBundleV02 = exports.isBundleV01 = exports.assertBundleV01 = exports.assertBundle = void 0;
  7683  /*
  7684  Copyright 2023 The Sigstore Authors.
  7685  
  7686  Licensed under the Apache License, Version 2.0 (the "License");
  7687  you may not use this file except in compliance with the License.
  7688  You may obtain a copy of the License at
  7689  
  7690      http://www.apache.org/licenses/LICENSE-2.0
  7691  
  7692  Unless required by applicable law or agreed to in writing, software
  7693  distributed under the License is distributed on an "AS IS" BASIS,
  7694  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  7695  See the License for the specific language governing permissions and
  7696  limitations under the License.
  7697  */
  7698  const error_1 = __nccwpck_require__(63802);
  7699  // Performs basic validation of a Sigstore bundle to ensure that all required
  7700  // fields are populated. This is not a complete validation of the bundle, but
  7701  // rather a check that the bundle is in a valid state to be processed by the
  7702  // rest of the code.
  7703  function assertBundle(b) {
  7704      const invalidValues = validateBundleBase(b);
  7705      if (invalidValues.length > 0) {
  7706          throw new error_1.ValidationError('invalid bundle', invalidValues);
  7707      }
  7708  }
  7709  exports.assertBundle = assertBundle;
  7710  // Asserts that the given bundle conforms to the v0.1 bundle format.
  7711  function assertBundleV01(b) {
  7712      const invalidValues = [];
  7713      invalidValues.push(...validateBundleBase(b));
  7714      invalidValues.push(...validateInclusionPromise(b));
  7715      if (invalidValues.length > 0) {
  7716          throw new error_1.ValidationError('invalid v0.1 bundle', invalidValues);
  7717      }
  7718  }
  7719  exports.assertBundleV01 = assertBundleV01;
  7720  // Type guard to determine if Bundle is a v0.1 bundle.
  7721  function isBundleV01(b) {
  7722      try {
  7723          assertBundleV01(b);
  7724          return true;
  7725      }
  7726      catch (e) {
  7727          return false;
  7728      }
  7729  }
  7730  exports.isBundleV01 = isBundleV01;
  7731  // Asserts that the given bundle conforms to the v0.2 bundle format.
  7732  function assertBundleV02(b) {
  7733      const invalidValues = [];
  7734      invalidValues.push(...validateBundleBase(b));
  7735      invalidValues.push(...validateInclusionProof(b));
  7736      if (invalidValues.length > 0) {
  7737          throw new error_1.ValidationError('invalid v0.2 bundle', invalidValues);
  7738      }
  7739  }
  7740  exports.assertBundleV02 = assertBundleV02;
  7741  // Asserts that the given bundle conforms to the newest (0.3) bundle format.
  7742  function assertBundleLatest(b) {
  7743      const invalidValues = [];
  7744      invalidValues.push(...validateBundleBase(b));
  7745      invalidValues.push(...validateInclusionProof(b));
  7746      invalidValues.push(...validateNoCertificateChain(b));
  7747      if (invalidValues.length > 0) {
  7748          throw new error_1.ValidationError('invalid bundle', invalidValues);
  7749      }
  7750  }
  7751  exports.assertBundleLatest = assertBundleLatest;
  7752  function validateBundleBase(b) {
  7753      const invalidValues = [];
  7754      // Media type validation
  7755      if (b.mediaType === undefined ||
  7756          (!b.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\+json;version=\d\.\d/) &&
  7757              !b.mediaType.match(/^application\/vnd\.dev\.sigstore\.bundle\.v\d\.\d\+json/))) {
  7758          invalidValues.push('mediaType');
  7759      }
  7760      // Content-related validation
  7761      if (b.content === undefined) {
  7762          invalidValues.push('content');
  7763      }
  7764      else {
  7765          switch (b.content.$case) {
  7766              case 'messageSignature':
  7767                  if (b.content.messageSignature.messageDigest === undefined) {
  7768                      invalidValues.push('content.messageSignature.messageDigest');
  7769                  }
  7770                  else {
  7771                      if (b.content.messageSignature.messageDigest.digest.length === 0) {
  7772                          invalidValues.push('content.messageSignature.messageDigest.digest');
  7773                      }
  7774                  }
  7775                  if (b.content.messageSignature.signature.length === 0) {
  7776                      invalidValues.push('content.messageSignature.signature');
  7777                  }
  7778                  break;
  7779              case 'dsseEnvelope':
  7780                  if (b.content.dsseEnvelope.payload.length === 0) {
  7781                      invalidValues.push('content.dsseEnvelope.payload');
  7782                  }
  7783                  if (b.content.dsseEnvelope.signatures.length !== 1) {
  7784                      invalidValues.push('content.dsseEnvelope.signatures');
  7785                  }
  7786                  else {
  7787                      if (b.content.dsseEnvelope.signatures[0].sig.length === 0) {
  7788                          invalidValues.push('content.dsseEnvelope.signatures[0].sig');
  7789                      }
  7790                  }
  7791                  break;
  7792          }
  7793      }
  7794      // Verification material-related validation
  7795      if (b.verificationMaterial === undefined) {
  7796          invalidValues.push('verificationMaterial');
  7797      }
  7798      else {
  7799          if (b.verificationMaterial.content === undefined) {
  7800              invalidValues.push('verificationMaterial.content');
  7801          }
  7802          else {
  7803              switch (b.verificationMaterial.content.$case) {
  7804                  case 'x509CertificateChain':
  7805                      if (b.verificationMaterial.content.x509CertificateChain.certificates
  7806                          .length === 0) {
  7807                          invalidValues.push('verificationMaterial.content.x509CertificateChain.certificates');
  7808                      }
  7809                      b.verificationMaterial.content.x509CertificateChain.certificates.forEach((cert, i) => {
  7810                          if (cert.rawBytes.length === 0) {
  7811                              invalidValues.push(`verificationMaterial.content.x509CertificateChain.certificates[${i}].rawBytes`);
  7812                          }
  7813                      });
  7814                      break;
  7815                  case 'certificate':
  7816                      if (b.verificationMaterial.content.certificate.rawBytes.length === 0) {
  7817                          invalidValues.push('verificationMaterial.content.certificate.rawBytes');
  7818                      }
  7819                      break;
  7820              }
  7821          }
  7822          if (b.verificationMaterial.tlogEntries === undefined) {
  7823              invalidValues.push('verificationMaterial.tlogEntries');
  7824          }
  7825          else {
  7826              if (b.verificationMaterial.tlogEntries.length > 0) {
  7827                  b.verificationMaterial.tlogEntries.forEach((entry, i) => {
  7828                      if (entry.logId === undefined) {
  7829                          invalidValues.push(`verificationMaterial.tlogEntries[${i}].logId`);
  7830                      }
  7831                      if (entry.kindVersion === undefined) {
  7832                          invalidValues.push(`verificationMaterial.tlogEntries[${i}].kindVersion`);
  7833                      }
  7834                  });
  7835              }
  7836          }
  7837      }
  7838      return invalidValues;
  7839  }
  7840  // Necessary for V01 bundles
  7841  function validateInclusionPromise(b) {
  7842      const invalidValues = [];
  7843      if (b.verificationMaterial &&
  7844          b.verificationMaterial.tlogEntries?.length > 0) {
  7845          b.verificationMaterial.tlogEntries.forEach((entry, i) => {
  7846              if (entry.inclusionPromise === undefined) {
  7847                  invalidValues.push(`verificationMaterial.tlogEntries[${i}].inclusionPromise`);
  7848              }
  7849          });
  7850      }
  7851      return invalidValues;
  7852  }
  7853  // Necessary for V02 and later bundles
  7854  function validateInclusionProof(b) {
  7855      const invalidValues = [];
  7856      if (b.verificationMaterial &&
  7857          b.verificationMaterial.tlogEntries?.length > 0) {
  7858          b.verificationMaterial.tlogEntries.forEach((entry, i) => {
  7859              if (entry.inclusionProof === undefined) {
  7860                  invalidValues.push(`verificationMaterial.tlogEntries[${i}].inclusionProof`);
  7861              }
  7862              else {
  7863                  if (entry.inclusionProof.checkpoint === undefined) {
  7864                      invalidValues.push(`verificationMaterial.tlogEntries[${i}].inclusionProof.checkpoint`);
  7865                  }
  7866              }
  7867          });
  7868      }
  7869      return invalidValues;
  7870  }
  7871  // Necessary for V03 and later bundles
  7872  function validateNoCertificateChain(b) {
  7873      const invalidValues = [];
  7874      if (b.verificationMaterial?.content?.$case === 'x509CertificateChain') {
  7875          invalidValues.push('verificationMaterial.content.$case');
  7876      }
  7877      return invalidValues;
  7878  }
  7879  
  7880  
  7881  /***/ }),
  7882  
  7883  /***/ 96136:
  7884  /***/ ((__unused_webpack_module, exports) => {
  7885  
  7886  "use strict";
  7887  
  7888  Object.defineProperty(exports, "__esModule", ({ value: true }));
  7889  exports.ASN1TypeError = exports.ASN1ParseError = void 0;
  7890  /*
  7891  Copyright 2023 The Sigstore Authors.
  7892  
  7893  Licensed under the Apache License, Version 2.0 (the "License");
  7894  you may not use this file except in compliance with the License.
  7895  You may obtain a copy of the License at
  7896  
  7897      http://www.apache.org/licenses/LICENSE-2.0
  7898  
  7899  Unless required by applicable law or agreed to in writing, software
  7900  distributed under the License is distributed on an "AS IS" BASIS,
  7901  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  7902  See the License for the specific language governing permissions and
  7903  limitations under the License.
  7904  */
  7905  class ASN1ParseError extends Error {
  7906  }
  7907  exports.ASN1ParseError = ASN1ParseError;
  7908  class ASN1TypeError extends Error {
  7909  }
  7910  exports.ASN1TypeError = ASN1TypeError;
  7911  
  7912  
  7913  /***/ }),
  7914  
  7915  /***/ 54095:
  7916  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  7917  
  7918  "use strict";
  7919  
  7920  Object.defineProperty(exports, "__esModule", ({ value: true }));
  7921  exports.ASN1Obj = void 0;
  7922  /*
  7923  Copyright 2023 The Sigstore Authors.
  7924  
  7925  Licensed under the Apache License, Version 2.0 (the "License");
  7926  you may not use this file except in compliance with the License.
  7927  You may obtain a copy of the License at
  7928  
  7929      http://www.apache.org/licenses/LICENSE-2.0
  7930  
  7931  Unless required by applicable law or agreed to in writing, software
  7932  distributed under the License is distributed on an "AS IS" BASIS,
  7933  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  7934  See the License for the specific language governing permissions and
  7935  limitations under the License.
  7936  */
  7937  var obj_1 = __nccwpck_require__(82988);
  7938  Object.defineProperty(exports, "ASN1Obj", ({ enumerable: true, get: function () { return obj_1.ASN1Obj; } }));
  7939  
  7940  
  7941  /***/ }),
  7942  
  7943  /***/ 25088:
  7944  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  7945  
  7946  "use strict";
  7947  
  7948  /*
  7949  Copyright 2023 The Sigstore Authors.
  7950  
  7951  Licensed under the Apache License, Version 2.0 (the "License");
  7952  you may not use this file except in compliance with the License.
  7953  You may obtain a copy of the License at
  7954  
  7955      http://www.apache.org/licenses/LICENSE-2.0
  7956  
  7957  Unless required by applicable law or agreed to in writing, software
  7958  distributed under the License is distributed on an "AS IS" BASIS,
  7959  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  7960  See the License for the specific language governing permissions and
  7961  limitations under the License.
  7962  */
  7963  Object.defineProperty(exports, "__esModule", ({ value: true }));
  7964  exports.encodeLength = exports.decodeLength = void 0;
  7965  const error_1 = __nccwpck_require__(96136);
  7966  // Decodes the length of a DER-encoded ANS.1 element from the supplied stream.
  7967  // https://learn.microsoft.com/en-us/windows/win32/seccertenroll/about-encoded-length-and-value-bytes
  7968  function decodeLength(stream) {
  7969      const buf = stream.getUint8();
  7970      // If the most significant bit is UNSET the length is just the value of the
  7971      // byte.
  7972      if ((buf & 0x80) === 0x00) {
  7973          return buf;
  7974      }
  7975      // Otherwise, the lower 7 bits of the first byte indicate the number of bytes
  7976      // that follow to encode the length.
  7977      const byteCount = buf & 0x7f;
  7978      // Ensure the encoded length can safely fit in a JS number.
  7979      if (byteCount > 6) {
  7980          throw new error_1.ASN1ParseError('length exceeds 6 byte limit');
  7981      }
  7982      // Iterate over the bytes that encode the length.
  7983      let len = 0;
  7984      for (let i = 0; i < byteCount; i++) {
  7985          len = len * 256 + stream.getUint8();
  7986      }
  7987      // This is a valid ASN.1 length encoding, but we don't support it.
  7988      if (len === 0) {
  7989          throw new error_1.ASN1ParseError('indefinite length encoding not supported');
  7990      }
  7991      return len;
  7992  }
  7993  exports.decodeLength = decodeLength;
  7994  // Translates the supplied value to a DER-encoded length.
  7995  function encodeLength(len) {
  7996      if (len < 128) {
  7997          return Buffer.from([len]);
  7998      }
  7999      // Bitwise operations on large numbers are not supported in JS, so we need to
  8000      // use BigInts.
  8001      let val = BigInt(len);
  8002      const bytes = [];
  8003      while (val > 0n) {
  8004          bytes.unshift(Number(val & 255n));
  8005          val = val >> 8n;
  8006      }
  8007      return Buffer.from([0x80 | bytes.length, ...bytes]);
  8008  }
  8009  exports.encodeLength = encodeLength;
  8010  
  8011  
  8012  /***/ }),
  8013  
  8014  /***/ 82988:
  8015  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  8016  
  8017  "use strict";
  8018  
  8019  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8020  exports.ASN1Obj = void 0;
  8021  /*
  8022  Copyright 2023 The Sigstore Authors.
  8023  
  8024  Licensed under the Apache License, Version 2.0 (the "License");
  8025  you may not use this file except in compliance with the License.
  8026  You may obtain a copy of the License at
  8027  
  8028      http://www.apache.org/licenses/LICENSE-2.0
  8029  
  8030  Unless required by applicable law or agreed to in writing, software
  8031  distributed under the License is distributed on an "AS IS" BASIS,
  8032  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  8033  See the License for the specific language governing permissions and
  8034  limitations under the License.
  8035  */
  8036  const stream_1 = __nccwpck_require__(52283);
  8037  const error_1 = __nccwpck_require__(96136);
  8038  const length_1 = __nccwpck_require__(25088);
  8039  const parse_1 = __nccwpck_require__(93947);
  8040  const tag_1 = __nccwpck_require__(13725);
  8041  class ASN1Obj {
  8042      constructor(tag, value, subs) {
  8043          this.tag = tag;
  8044          this.value = value;
  8045          this.subs = subs;
  8046      }
  8047      // Constructs an ASN.1 object from a Buffer of DER-encoded bytes.
  8048      static parseBuffer(buf) {
  8049          return parseStream(new stream_1.ByteStream(buf));
  8050      }
  8051      toDER() {
  8052          const valueStream = new stream_1.ByteStream();
  8053          if (this.subs.length > 0) {
  8054              for (const sub of this.subs) {
  8055                  valueStream.appendView(sub.toDER());
  8056              }
  8057          }
  8058          else {
  8059              valueStream.appendView(this.value);
  8060          }
  8061          const value = valueStream.buffer;
  8062          // Concat tag/length/value
  8063          const obj = new stream_1.ByteStream();
  8064          obj.appendChar(this.tag.toDER());
  8065          obj.appendView((0, length_1.encodeLength)(value.length));
  8066          obj.appendView(value);
  8067          return obj.buffer;
  8068      }
  8069      /////////////////////////////////////////////////////////////////////////////
  8070      // Convenience methods for parsing ASN.1 primitives into JS types
  8071      // Returns the ASN.1 object's value as a boolean. Throws an error if the
  8072      // object is not a boolean.
  8073      toBoolean() {
  8074          if (!this.tag.isBoolean()) {
  8075              throw new error_1.ASN1TypeError('not a boolean');
  8076          }
  8077          return (0, parse_1.parseBoolean)(this.value);
  8078      }
  8079      // Returns the ASN.1 object's value as a BigInt. Throws an error if the
  8080      // object is not an integer.
  8081      toInteger() {
  8082          if (!this.tag.isInteger()) {
  8083              throw new error_1.ASN1TypeError('not an integer');
  8084          }
  8085          return (0, parse_1.parseInteger)(this.value);
  8086      }
  8087      // Returns the ASN.1 object's value as an OID string. Throws an error if the
  8088      // object is not an OID.
  8089      toOID() {
  8090          if (!this.tag.isOID()) {
  8091              throw new error_1.ASN1TypeError('not an OID');
  8092          }
  8093          return (0, parse_1.parseOID)(this.value);
  8094      }
  8095      // Returns the ASN.1 object's value as a Date. Throws an error if the object
  8096      // is not either a UTCTime or a GeneralizedTime.
  8097      toDate() {
  8098          switch (true) {
  8099              case this.tag.isUTCTime():
  8100                  return (0, parse_1.parseTime)(this.value, true);
  8101              case this.tag.isGeneralizedTime():
  8102                  return (0, parse_1.parseTime)(this.value, false);
  8103              default:
  8104                  throw new error_1.ASN1TypeError('not a date');
  8105          }
  8106      }
  8107      // Returns the ASN.1 object's value as a number[] where each number is the
  8108      // value of a bit in the bit string. Throws an error if the object is not a
  8109      // bit string.
  8110      toBitString() {
  8111          if (!this.tag.isBitString()) {
  8112              throw new error_1.ASN1TypeError('not a bit string');
  8113          }
  8114          return (0, parse_1.parseBitString)(this.value);
  8115      }
  8116  }
  8117  exports.ASN1Obj = ASN1Obj;
  8118  /////////////////////////////////////////////////////////////////////////////
  8119  // Internal stream parsing functions
  8120  function parseStream(stream) {
  8121      // Parse tag, length, and value from stream
  8122      const tag = new tag_1.ASN1Tag(stream.getUint8());
  8123      const len = (0, length_1.decodeLength)(stream);
  8124      const value = stream.slice(stream.position, len);
  8125      const start = stream.position;
  8126      let subs = [];
  8127      // If the object is constructed, parse its children. Sometimes, children
  8128      // are embedded in OCTESTRING objects, so we need to check those
  8129      // for children as well.
  8130      if (tag.constructed) {
  8131          subs = collectSubs(stream, len);
  8132      }
  8133      else if (tag.isOctetString()) {
  8134          // Attempt to parse children of OCTETSTRING objects. If anything fails,
  8135          // assume the object is not constructed and treat as primitive.
  8136          try {
  8137              subs = collectSubs(stream, len);
  8138          }
  8139          catch (e) {
  8140              // Fail silently and treat as primitive
  8141          }
  8142      }
  8143      // If there are no children, move stream cursor to the end of the object
  8144      if (subs.length === 0) {
  8145          stream.seek(start + len);
  8146      }
  8147      return new ASN1Obj(tag, value, subs);
  8148  }
  8149  function collectSubs(stream, len) {
  8150      // Calculate end of object content
  8151      const end = stream.position + len;
  8152      // Make sure there are enough bytes left in the stream. This should never
  8153      // happen, cause it'll get caught when the stream is sliced in parseStream.
  8154      // Leaving as an extra check just in case.
  8155      /* istanbul ignore if */
  8156      if (end > stream.length) {
  8157          throw new error_1.ASN1ParseError('invalid length');
  8158      }
  8159      // Parse all children
  8160      const subs = [];
  8161      while (stream.position < end) {
  8162          subs.push(parseStream(stream));
  8163      }
  8164      // When we're done parsing children, we should be at the end of the object
  8165      if (stream.position !== end) {
  8166          throw new error_1.ASN1ParseError('invalid length');
  8167      }
  8168      return subs;
  8169  }
  8170  
  8171  
  8172  /***/ }),
  8173  
  8174  /***/ 93947:
  8175  /***/ ((__unused_webpack_module, exports) => {
  8176  
  8177  "use strict";
  8178  
  8179  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8180  exports.parseBitString = exports.parseBoolean = exports.parseOID = exports.parseTime = exports.parseStringASCII = exports.parseInteger = void 0;
  8181  /*
  8182  Copyright 2023 The Sigstore Authors.
  8183  
  8184  Licensed under the Apache License, Version 2.0 (the "License");
  8185  you may not use this file except in compliance with the License.
  8186  You may obtain a copy of the License at
  8187  
  8188      http://www.apache.org/licenses/LICENSE-2.0
  8189  
  8190  Unless required by applicable law or agreed to in writing, software
  8191  distributed under the License is distributed on an "AS IS" BASIS,
  8192  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  8193  See the License for the specific language governing permissions and
  8194  limitations under the License.
  8195  */
  8196  const RE_TIME_SHORT_YEAR = /^(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/;
  8197  const RE_TIME_LONG_YEAR = /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\.\d{3})?Z$/;
  8198  // Parse a BigInt from the DER-encoded buffer
  8199  // https://learn.microsoft.com/en-us/windows/win32/seccertenroll/about-integer
  8200  function parseInteger(buf) {
  8201      let pos = 0;
  8202      const end = buf.length;
  8203      let val = buf[pos];
  8204      const neg = val > 0x7f;
  8205      // Consume any padding bytes
  8206      const pad = neg ? 0xff : 0x00;
  8207      while (val == pad && ++pos < end) {
  8208          val = buf[pos];
  8209      }
  8210      // Calculate remaining bytes to read
  8211      const len = end - pos;
  8212      if (len === 0)
  8213          return BigInt(neg ? -1 : 0);
  8214      // Handle two's complement for negative numbers
  8215      val = neg ? val - 256 : val;
  8216      // Parse remaining bytes
  8217      let n = BigInt(val);
  8218      for (let i = pos + 1; i < end; ++i) {
  8219          n = n * BigInt(256) + BigInt(buf[i]);
  8220      }
  8221      return n;
  8222  }
  8223  exports.parseInteger = parseInteger;
  8224  // Parse an ASCII string from the DER-encoded buffer
  8225  // https://learn.microsoft.com/en-us/windows/win32/seccertenroll/about-basic-types#boolean
  8226  function parseStringASCII(buf) {
  8227      return buf.toString('ascii');
  8228  }
  8229  exports.parseStringASCII = parseStringASCII;
  8230  // Parse a Date from the DER-encoded buffer
  8231  // https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.5.1
  8232  function parseTime(buf, shortYear) {
  8233      const timeStr = parseStringASCII(buf);
  8234      // Parse the time string into matches - captured groups start at index 1
  8235      const m = shortYear
  8236          ? RE_TIME_SHORT_YEAR.exec(timeStr)
  8237          : RE_TIME_LONG_YEAR.exec(timeStr);
  8238      if (!m) {
  8239          throw new Error('invalid time');
  8240      }
  8241      // Translate dates with a 2-digit year to 4 digits per the spec
  8242      if (shortYear) {
  8243          let year = Number(m[1]);
  8244          year += year >= 50 ? 1900 : 2000;
  8245          m[1] = year.toString();
  8246      }
  8247      // Translate to ISO8601 format and parse
  8248      return new Date(`${m[1]}-${m[2]}-${m[3]}T${m[4]}:${m[5]}:${m[6]}Z`);
  8249  }
  8250  exports.parseTime = parseTime;
  8251  // Parse an OID from the DER-encoded buffer
  8252  // https://learn.microsoft.com/en-us/windows/win32/seccertenroll/about-object-identifier
  8253  function parseOID(buf) {
  8254      let pos = 0;
  8255      const end = buf.length;
  8256      // Consume first byte which encodes the first two OID components
  8257      let n = buf[pos++];
  8258      const first = Math.floor(n / 40);
  8259      const second = n % 40;
  8260      let oid = `${first}.${second}`;
  8261      // Consume remaining bytes
  8262      let val = 0;
  8263      for (; pos < end; ++pos) {
  8264          n = buf[pos];
  8265          val = (val << 7) + (n & 0x7f);
  8266          // If the left-most bit is NOT set, then this is the last byte in the
  8267          // sequence and we can add the value to the OID and reset the accumulator
  8268          if ((n & 0x80) === 0) {
  8269              oid += `.${val}`;
  8270              val = 0;
  8271          }
  8272      }
  8273      return oid;
  8274  }
  8275  exports.parseOID = parseOID;
  8276  // Parse a boolean from the DER-encoded buffer
  8277  // https://learn.microsoft.com/en-us/windows/win32/seccertenroll/about-basic-types#boolean
  8278  function parseBoolean(buf) {
  8279      return buf[0] !== 0;
  8280  }
  8281  exports.parseBoolean = parseBoolean;
  8282  // Parse a bit string from the DER-encoded buffer
  8283  // https://learn.microsoft.com/en-us/windows/win32/seccertenroll/about-bit-string
  8284  function parseBitString(buf) {
  8285      // First byte tell us how many unused bits are in the last byte
  8286      const unused = buf[0];
  8287      const start = 1;
  8288      const end = buf.length;
  8289      const bits = [];
  8290      for (let i = start; i < end; ++i) {
  8291          const byte = buf[i];
  8292          // The skip value is only used for the last byte
  8293          const skip = i === end - 1 ? unused : 0;
  8294          // Iterate over each bit in the byte (most significant first)
  8295          for (let j = 7; j >= skip; --j) {
  8296              // Read the bit and add it to the bit string
  8297              bits.push((byte >> j) & 0x01);
  8298          }
  8299      }
  8300      return bits;
  8301  }
  8302  exports.parseBitString = parseBitString;
  8303  
  8304  
  8305  /***/ }),
  8306  
  8307  /***/ 13725:
  8308  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  8309  
  8310  "use strict";
  8311  
  8312  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8313  exports.ASN1Tag = void 0;
  8314  /*
  8315  Copyright 2023 The Sigstore Authors.
  8316  
  8317  Licensed under the Apache License, Version 2.0 (the "License");
  8318  you may not use this file except in compliance with the License.
  8319  You may obtain a copy of the License at
  8320  
  8321      http://www.apache.org/licenses/LICENSE-2.0
  8322  
  8323  Unless required by applicable law or agreed to in writing, software
  8324  distributed under the License is distributed on an "AS IS" BASIS,
  8325  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  8326  See the License for the specific language governing permissions and
  8327  limitations under the License.
  8328  */
  8329  const error_1 = __nccwpck_require__(96136);
  8330  const UNIVERSAL_TAG = {
  8331      BOOLEAN: 0x01,
  8332      INTEGER: 0x02,
  8333      BIT_STRING: 0x03,
  8334      OCTET_STRING: 0x04,
  8335      OBJECT_IDENTIFIER: 0x06,
  8336      SEQUENCE: 0x10,
  8337      SET: 0x11,
  8338      PRINTABLE_STRING: 0x13,
  8339      UTC_TIME: 0x17,
  8340      GENERALIZED_TIME: 0x18,
  8341  };
  8342  const TAG_CLASS = {
  8343      UNIVERSAL: 0x00,
  8344      APPLICATION: 0x01,
  8345      CONTEXT_SPECIFIC: 0x02,
  8346      PRIVATE: 0x03,
  8347  };
  8348  // https://learn.microsoft.com/en-us/windows/win32/seccertenroll/about-encoded-tag-bytes
  8349  class ASN1Tag {
  8350      constructor(enc) {
  8351          // Bits 0 through 4 are the tag number
  8352          this.number = enc & 0x1f;
  8353          // Bit 5 is the constructed bit
  8354          this.constructed = (enc & 0x20) === 0x20;
  8355          // Bit 6 & 7 are the class
  8356          this.class = enc >> 6;
  8357          if (this.number === 0x1f) {
  8358              throw new error_1.ASN1ParseError('long form tags not supported');
  8359          }
  8360          if (this.class === TAG_CLASS.UNIVERSAL && this.number === 0x00) {
  8361              throw new error_1.ASN1ParseError('unsupported tag 0x00');
  8362          }
  8363      }
  8364      isUniversal() {
  8365          return this.class === TAG_CLASS.UNIVERSAL;
  8366      }
  8367      isContextSpecific(num) {
  8368          const res = this.class === TAG_CLASS.CONTEXT_SPECIFIC;
  8369          return num !== undefined ? res && this.number === num : res;
  8370      }
  8371      isBoolean() {
  8372          return this.isUniversal() && this.number === UNIVERSAL_TAG.BOOLEAN;
  8373      }
  8374      isInteger() {
  8375          return this.isUniversal() && this.number === UNIVERSAL_TAG.INTEGER;
  8376      }
  8377      isBitString() {
  8378          return this.isUniversal() && this.number === UNIVERSAL_TAG.BIT_STRING;
  8379      }
  8380      isOctetString() {
  8381          return this.isUniversal() && this.number === UNIVERSAL_TAG.OCTET_STRING;
  8382      }
  8383      isOID() {
  8384          return (this.isUniversal() && this.number === UNIVERSAL_TAG.OBJECT_IDENTIFIER);
  8385      }
  8386      isUTCTime() {
  8387          return this.isUniversal() && this.number === UNIVERSAL_TAG.UTC_TIME;
  8388      }
  8389      isGeneralizedTime() {
  8390          return this.isUniversal() && this.number === UNIVERSAL_TAG.GENERALIZED_TIME;
  8391      }
  8392      toDER() {
  8393          return this.number | (this.constructed ? 0x20 : 0x00) | (this.class << 6);
  8394      }
  8395  }
  8396  exports.ASN1Tag = ASN1Tag;
  8397  
  8398  
  8399  /***/ }),
  8400  
  8401  /***/ 83914:
  8402  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
  8403  
  8404  "use strict";
  8405  
  8406  var __importDefault = (this && this.__importDefault) || function (mod) {
  8407      return (mod && mod.__esModule) ? mod : { "default": mod };
  8408  };
  8409  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8410  exports.bufferEqual = exports.verify = exports.hash = exports.digest = exports.createPublicKey = void 0;
  8411  /*
  8412  Copyright 2023 The Sigstore Authors.
  8413  
  8414  Licensed under the Apache License, Version 2.0 (the "License");
  8415  you may not use this file except in compliance with the License.
  8416  You may obtain a copy of the License at
  8417  
  8418      http://www.apache.org/licenses/LICENSE-2.0
  8419  
  8420  Unless required by applicable law or agreed to in writing, software
  8421  distributed under the License is distributed on an "AS IS" BASIS,
  8422  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  8423  See the License for the specific language governing permissions and
  8424  limitations under the License.
  8425  */
  8426  const crypto_1 = __importDefault(__nccwpck_require__(6113));
  8427  const SHA256_ALGORITHM = 'sha256';
  8428  function createPublicKey(key, type = 'spki') {
  8429      if (typeof key === 'string') {
  8430          return crypto_1.default.createPublicKey(key);
  8431      }
  8432      else {
  8433          return crypto_1.default.createPublicKey({ key, format: 'der', type: type });
  8434      }
  8435  }
  8436  exports.createPublicKey = createPublicKey;
  8437  function digest(algorithm, ...data) {
  8438      const hash = crypto_1.default.createHash(algorithm);
  8439      for (const d of data) {
  8440          hash.update(d);
  8441      }
  8442      return hash.digest();
  8443  }
  8444  exports.digest = digest;
  8445  // TODO: deprecate this in favor of digest()
  8446  function hash(...data) {
  8447      const hash = crypto_1.default.createHash(SHA256_ALGORITHM);
  8448      for (const d of data) {
  8449          hash.update(d);
  8450      }
  8451      return hash.digest();
  8452  }
  8453  exports.hash = hash;
  8454  function verify(data, key, signature, algorithm) {
  8455      // The try/catch is to work around an issue in Node 14.x where verify throws
  8456      // an error in some scenarios if the signature is invalid.
  8457      try {
  8458          return crypto_1.default.verify(algorithm, data, key, signature);
  8459      }
  8460      catch (e) {
  8461          /* istanbul ignore next */
  8462          return false;
  8463      }
  8464  }
  8465  exports.verify = verify;
  8466  function bufferEqual(a, b) {
  8467      try {
  8468          return crypto_1.default.timingSafeEqual(a, b);
  8469      }
  8470      catch {
  8471          /* istanbul ignore next */
  8472          return false;
  8473      }
  8474  }
  8475  exports.bufferEqual = bufferEqual;
  8476  
  8477  
  8478  /***/ }),
  8479  
  8480  /***/ 29892:
  8481  /***/ ((__unused_webpack_module, exports) => {
  8482  
  8483  "use strict";
  8484  
  8485  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8486  exports.preAuthEncoding = void 0;
  8487  /*
  8488  Copyright 2023 The Sigstore Authors.
  8489  
  8490  Licensed under the Apache License, Version 2.0 (the "License");
  8491  you may not use this file except in compliance with the License.
  8492  You may obtain a copy of the License at
  8493  
  8494      http://www.apache.org/licenses/LICENSE-2.0
  8495  
  8496  Unless required by applicable law or agreed to in writing, software
  8497  distributed under the License is distributed on an "AS IS" BASIS,
  8498  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  8499  See the License for the specific language governing permissions and
  8500  limitations under the License.
  8501  */
  8502  const PAE_PREFIX = 'DSSEv1';
  8503  // DSSE Pre-Authentication Encoding
  8504  function preAuthEncoding(payloadType, payload) {
  8505      const prefix = [
  8506          PAE_PREFIX,
  8507          payloadType.length,
  8508          payloadType,
  8509          payload.length,
  8510          '',
  8511      ].join(' ');
  8512      return Buffer.concat([Buffer.from(prefix, 'ascii'), payload]);
  8513  }
  8514  exports.preAuthEncoding = preAuthEncoding;
  8515  
  8516  
  8517  /***/ }),
  8518  
  8519  /***/ 7496:
  8520  /***/ ((__unused_webpack_module, exports) => {
  8521  
  8522  "use strict";
  8523  
  8524  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8525  exports.base64Decode = exports.base64Encode = void 0;
  8526  /*
  8527  Copyright 2023 The Sigstore Authors.
  8528  
  8529  Licensed under the Apache License, Version 2.0 (the "License");
  8530  you may not use this file except in compliance with the License.
  8531  You may obtain a copy of the License at
  8532  
  8533      http://www.apache.org/licenses/LICENSE-2.0
  8534  
  8535  Unless required by applicable law or agreed to in writing, software
  8536  distributed under the License is distributed on an "AS IS" BASIS,
  8537  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  8538  See the License for the specific language governing permissions and
  8539  limitations under the License.
  8540  */
  8541  const BASE64_ENCODING = 'base64';
  8542  const UTF8_ENCODING = 'utf-8';
  8543  function base64Encode(str) {
  8544      return Buffer.from(str, UTF8_ENCODING).toString(BASE64_ENCODING);
  8545  }
  8546  exports.base64Encode = base64Encode;
  8547  function base64Decode(str) {
  8548      return Buffer.from(str, BASE64_ENCODING).toString(UTF8_ENCODING);
  8549  }
  8550  exports.base64Decode = base64Decode;
  8551  
  8552  
  8553  /***/ }),
  8554  
  8555  /***/ 3352:
  8556  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
  8557  
  8558  "use strict";
  8559  
  8560  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
  8561      if (k2 === undefined) k2 = k;
  8562      var desc = Object.getOwnPropertyDescriptor(m, k);
  8563      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
  8564        desc = { enumerable: true, get: function() { return m[k]; } };
  8565      }
  8566      Object.defineProperty(o, k2, desc);
  8567  }) : (function(o, m, k, k2) {
  8568      if (k2 === undefined) k2 = k;
  8569      o[k2] = m[k];
  8570  }));
  8571  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
  8572      Object.defineProperty(o, "default", { enumerable: true, value: v });
  8573  }) : function(o, v) {
  8574      o["default"] = v;
  8575  });
  8576  var __importStar = (this && this.__importStar) || function (mod) {
  8577      if (mod && mod.__esModule) return mod;
  8578      var result = {};
  8579      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
  8580      __setModuleDefault(result, mod);
  8581      return result;
  8582  };
  8583  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8584  exports.X509SCTExtension = exports.X509Certificate = exports.EXTENSION_OID_SCT = exports.ByteStream = exports.RFC3161Timestamp = exports.pem = exports.json = exports.encoding = exports.dsse = exports.crypto = exports.ASN1Obj = void 0;
  8585  /*
  8586  Copyright 2023 The Sigstore Authors.
  8587  
  8588  Licensed under the Apache License, Version 2.0 (the "License");
  8589  you may not use this file except in compliance with the License.
  8590  You may obtain a copy of the License at
  8591  
  8592      http://www.apache.org/licenses/LICENSE-2.0
  8593  
  8594  Unless required by applicable law or agreed to in writing, software
  8595  distributed under the License is distributed on an "AS IS" BASIS,
  8596  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  8597  See the License for the specific language governing permissions and
  8598  limitations under the License.
  8599  */
  8600  var asn1_1 = __nccwpck_require__(54095);
  8601  Object.defineProperty(exports, "ASN1Obj", ({ enumerable: true, get: function () { return asn1_1.ASN1Obj; } }));
  8602  exports.crypto = __importStar(__nccwpck_require__(83914));
  8603  exports.dsse = __importStar(__nccwpck_require__(29892));
  8604  exports.encoding = __importStar(__nccwpck_require__(7496));
  8605  exports.json = __importStar(__nccwpck_require__(89022));
  8606  exports.pem = __importStar(__nccwpck_require__(25225));
  8607  var rfc3161_1 = __nccwpck_require__(37411);
  8608  Object.defineProperty(exports, "RFC3161Timestamp", ({ enumerable: true, get: function () { return rfc3161_1.RFC3161Timestamp; } }));
  8609  var stream_1 = __nccwpck_require__(52283);
  8610  Object.defineProperty(exports, "ByteStream", ({ enumerable: true, get: function () { return stream_1.ByteStream; } }));
  8611  var x509_1 = __nccwpck_require__(75500);
  8612  Object.defineProperty(exports, "EXTENSION_OID_SCT", ({ enumerable: true, get: function () { return x509_1.EXTENSION_OID_SCT; } }));
  8613  Object.defineProperty(exports, "X509Certificate", ({ enumerable: true, get: function () { return x509_1.X509Certificate; } }));
  8614  Object.defineProperty(exports, "X509SCTExtension", ({ enumerable: true, get: function () { return x509_1.X509SCTExtension; } }));
  8615  
  8616  
  8617  /***/ }),
  8618  
  8619  /***/ 89022:
  8620  /***/ ((__unused_webpack_module, exports) => {
  8621  
  8622  "use strict";
  8623  
  8624  /*
  8625  Copyright 2023 The Sigstore Authors.
  8626  
  8627  Licensed under the Apache License, Version 2.0 (the "License");
  8628  you may not use this file except in compliance with the License.
  8629  You may obtain a copy of the License at
  8630  
  8631      http://www.apache.org/licenses/LICENSE-2.0
  8632  
  8633  Unless required by applicable law or agreed to in writing, software
  8634  distributed under the License is distributed on an "AS IS" BASIS,
  8635  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  8636  See the License for the specific language governing permissions and
  8637  limitations under the License.
  8638  */
  8639  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8640  exports.canonicalize = void 0;
  8641  // JSON canonicalization per https://github.com/cyberphone/json-canonicalization
  8642  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  8643  function canonicalize(object) {
  8644      let buffer = '';
  8645      if (object === null || typeof object !== 'object' || object.toJSON != null) {
  8646          // Primitives or toJSONable objects
  8647          buffer += JSON.stringify(object);
  8648      }
  8649      else if (Array.isArray(object)) {
  8650          // Array - maintain element order
  8651          buffer += '[';
  8652          let first = true;
  8653          object.forEach((element) => {
  8654              if (!first) {
  8655                  buffer += ',';
  8656              }
  8657              first = false;
  8658              // recursive call
  8659              buffer += canonicalize(element);
  8660          });
  8661          buffer += ']';
  8662      }
  8663      else {
  8664          // Object - Sort properties before serializing
  8665          buffer += '{';
  8666          let first = true;
  8667          Object.keys(object)
  8668              .sort()
  8669              .forEach((property) => {
  8670              if (!first) {
  8671                  buffer += ',';
  8672              }
  8673              first = false;
  8674              buffer += JSON.stringify(property);
  8675              buffer += ':';
  8676              // recursive call
  8677              buffer += canonicalize(object[property]);
  8678          });
  8679          buffer += '}';
  8680      }
  8681      return buffer;
  8682  }
  8683  exports.canonicalize = canonicalize;
  8684  
  8685  
  8686  /***/ }),
  8687  
  8688  /***/ 15960:
  8689  /***/ ((__unused_webpack_module, exports) => {
  8690  
  8691  "use strict";
  8692  
  8693  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8694  exports.SHA2_HASH_ALGOS = exports.ECDSA_SIGNATURE_ALGOS = void 0;
  8695  exports.ECDSA_SIGNATURE_ALGOS = {
  8696      '1.2.840.10045.4.3.1': 'sha224',
  8697      '1.2.840.10045.4.3.2': 'sha256',
  8698      '1.2.840.10045.4.3.3': 'sha384',
  8699      '1.2.840.10045.4.3.4': 'sha512',
  8700  };
  8701  exports.SHA2_HASH_ALGOS = {
  8702      '2.16.840.1.101.3.4.2.1': 'sha256',
  8703      '2.16.840.1.101.3.4.2.2': 'sha384',
  8704      '2.16.840.1.101.3.4.2.3': 'sha512',
  8705  };
  8706  
  8707  
  8708  /***/ }),
  8709  
  8710  /***/ 25225:
  8711  /***/ ((__unused_webpack_module, exports) => {
  8712  
  8713  "use strict";
  8714  
  8715  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8716  exports.fromDER = exports.toDER = void 0;
  8717  /*
  8718  Copyright 2023 The Sigstore Authors.
  8719  
  8720  Licensed under the Apache License, Version 2.0 (the "License");
  8721  you may not use this file except in compliance with the License.
  8722  You may obtain a copy of the License at
  8723  
  8724      http://www.apache.org/licenses/LICENSE-2.0
  8725  
  8726  Unless required by applicable law or agreed to in writing, software
  8727  distributed under the License is distributed on an "AS IS" BASIS,
  8728  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  8729  See the License for the specific language governing permissions and
  8730  limitations under the License.
  8731  */
  8732  const PEM_HEADER = /-----BEGIN (.*)-----/;
  8733  const PEM_FOOTER = /-----END (.*)-----/;
  8734  function toDER(certificate) {
  8735      let der = '';
  8736      certificate.split('\n').forEach((line) => {
  8737          if (line.match(PEM_HEADER) || line.match(PEM_FOOTER)) {
  8738              return;
  8739          }
  8740          der += line;
  8741      });
  8742      return Buffer.from(der, 'base64');
  8743  }
  8744  exports.toDER = toDER;
  8745  // Translates a DER-encoded buffer into a PEM-encoded string. Standard PEM
  8746  // encoding dictates that each certificate should have a trailing newline after
  8747  // the footer.
  8748  function fromDER(certificate, type = 'CERTIFICATE') {
  8749      // Base64-encode the certificate.
  8750      const der = certificate.toString('base64');
  8751      // Split the certificate into lines of 64 characters.
  8752      const lines = der.match(/.{1,64}/g) || '';
  8753      return [`-----BEGIN ${type}-----`, ...lines, `-----END ${type}-----`]
  8754          .join('\n')
  8755          .concat('\n');
  8756  }
  8757  exports.fromDER = fromDER;
  8758  
  8759  
  8760  /***/ }),
  8761  
  8762  /***/ 74526:
  8763  /***/ ((__unused_webpack_module, exports) => {
  8764  
  8765  "use strict";
  8766  
  8767  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8768  exports.RFC3161TimestampVerificationError = void 0;
  8769  /*
  8770  Copyright 2023 The Sigstore Authors.
  8771  
  8772  Licensed under the Apache License, Version 2.0 (the "License");
  8773  you may not use this file except in compliance with the License.
  8774  You may obtain a copy of the License at
  8775  
  8776      http://www.apache.org/licenses/LICENSE-2.0
  8777  
  8778  Unless required by applicable law or agreed to in writing, software
  8779  distributed under the License is distributed on an "AS IS" BASIS,
  8780  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  8781  See the License for the specific language governing permissions and
  8782  limitations under the License.
  8783  */
  8784  class RFC3161TimestampVerificationError extends Error {
  8785  }
  8786  exports.RFC3161TimestampVerificationError = RFC3161TimestampVerificationError;
  8787  
  8788  
  8789  /***/ }),
  8790  
  8791  /***/ 37411:
  8792  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  8793  
  8794  "use strict";
  8795  
  8796  /*
  8797  Copyright 2023 The Sigstore Authors.
  8798  
  8799  Licensed under the Apache License, Version 2.0 (the "License");
  8800  you may not use this file except in compliance with the License.
  8801  You may obtain a copy of the License at
  8802  
  8803      http://www.apache.org/licenses/LICENSE-2.0
  8804  
  8805  Unless required by applicable law or agreed to in writing, software
  8806  distributed under the License is distributed on an "AS IS" BASIS,
  8807  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  8808  See the License for the specific language governing permissions and
  8809  limitations under the License.
  8810  */
  8811  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8812  exports.RFC3161Timestamp = void 0;
  8813  var timestamp_1 = __nccwpck_require__(59180);
  8814  Object.defineProperty(exports, "RFC3161Timestamp", ({ enumerable: true, get: function () { return timestamp_1.RFC3161Timestamp; } }));
  8815  
  8816  
  8817  /***/ }),
  8818  
  8819  /***/ 59180:
  8820  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
  8821  
  8822  "use strict";
  8823  
  8824  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
  8825      if (k2 === undefined) k2 = k;
  8826      var desc = Object.getOwnPropertyDescriptor(m, k);
  8827      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
  8828        desc = { enumerable: true, get: function() { return m[k]; } };
  8829      }
  8830      Object.defineProperty(o, k2, desc);
  8831  }) : (function(o, m, k, k2) {
  8832      if (k2 === undefined) k2 = k;
  8833      o[k2] = m[k];
  8834  }));
  8835  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
  8836      Object.defineProperty(o, "default", { enumerable: true, value: v });
  8837  }) : function(o, v) {
  8838      o["default"] = v;
  8839  });
  8840  var __importStar = (this && this.__importStar) || function (mod) {
  8841      if (mod && mod.__esModule) return mod;
  8842      var result = {};
  8843      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
  8844      __setModuleDefault(result, mod);
  8845      return result;
  8846  };
  8847  Object.defineProperty(exports, "__esModule", ({ value: true }));
  8848  exports.RFC3161Timestamp = void 0;
  8849  /*
  8850  Copyright 2023 The Sigstore Authors.
  8851  
  8852  Licensed under the Apache License, Version 2.0 (the "License");
  8853  you may not use this file except in compliance with the License.
  8854  You may obtain a copy of the License at
  8855  
  8856      http://www.apache.org/licenses/LICENSE-2.0
  8857  
  8858  Unless required by applicable law or agreed to in writing, software
  8859  distributed under the License is distributed on an "AS IS" BASIS,
  8860  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  8861  See the License for the specific language governing permissions and
  8862  limitations under the License.
  8863  */
  8864  const asn1_1 = __nccwpck_require__(54095);
  8865  const crypto = __importStar(__nccwpck_require__(83914));
  8866  const oid_1 = __nccwpck_require__(15960);
  8867  const error_1 = __nccwpck_require__(74526);
  8868  const tstinfo_1 = __nccwpck_require__(80852);
  8869  const OID_PKCS9_CONTENT_TYPE_SIGNED_DATA = '1.2.840.113549.1.7.2';
  8870  const OID_PKCS9_CONTENT_TYPE_TSTINFO = '1.2.840.113549.1.9.16.1.4';
  8871  const OID_PKCS9_MESSAGE_DIGEST_KEY = '1.2.840.113549.1.9.4';
  8872  class RFC3161Timestamp {
  8873      constructor(asn1) {
  8874          this.root = asn1;
  8875      }
  8876      static parse(der) {
  8877          const asn1 = asn1_1.ASN1Obj.parseBuffer(der);
  8878          return new RFC3161Timestamp(asn1);
  8879      }
  8880      get status() {
  8881          return this.pkiStatusInfoObj.subs[0].toInteger();
  8882      }
  8883      get contentType() {
  8884          return this.contentTypeObj.toOID();
  8885      }
  8886      get eContentType() {
  8887          return this.eContentTypeObj.toOID();
  8888      }
  8889      get signingTime() {
  8890          return this.tstInfo.genTime;
  8891      }
  8892      get signerIssuer() {
  8893          return this.signerSidObj.subs[0].value;
  8894      }
  8895      get signerSerialNumber() {
  8896          return this.signerSidObj.subs[1].value;
  8897      }
  8898      get signerDigestAlgorithm() {
  8899          const oid = this.signerDigestAlgorithmObj.subs[0].toOID();
  8900          return oid_1.SHA2_HASH_ALGOS[oid];
  8901      }
  8902      get signatureAlgorithm() {
  8903          const oid = this.signatureAlgorithmObj.subs[0].toOID();
  8904          return oid_1.ECDSA_SIGNATURE_ALGOS[oid];
  8905      }
  8906      get signatureValue() {
  8907          return this.signatureValueObj.value;
  8908      }
  8909      get tstInfo() {
  8910          // Need to unpack tstInfo from an OCTET STRING
  8911          return new tstinfo_1.TSTInfo(this.eContentObj.subs[0].subs[0]);
  8912      }
  8913      verify(data, publicKey) {
  8914          if (!this.timeStampTokenObj) {
  8915              throw new error_1.RFC3161TimestampVerificationError('timeStampToken is missing');
  8916          }
  8917          // Check for expected ContentInfo content type
  8918          if (this.contentType !== OID_PKCS9_CONTENT_TYPE_SIGNED_DATA) {
  8919              throw new error_1.RFC3161TimestampVerificationError(`incorrect content type: ${this.contentType}`);
  8920          }
  8921          // Check for expected encapsulated content type
  8922          if (this.eContentType !== OID_PKCS9_CONTENT_TYPE_TSTINFO) {
  8923              throw new error_1.RFC3161TimestampVerificationError(`incorrect encapsulated content type: ${this.eContentType}`);
  8924          }
  8925          // Check that the tstInfo references the correct artifact
  8926          this.tstInfo.verify(data);
  8927          // Check that the signed message digest matches the tstInfo
  8928          this.verifyMessageDigest();
  8929          // Check that the signature is valid for the signed attributes
  8930          this.verifySignature(publicKey);
  8931      }
  8932      verifyMessageDigest() {
  8933          // Check that the tstInfo matches the signed data
  8934          const tstInfoDigest = crypto.digest(this.signerDigestAlgorithm, this.tstInfo.raw);
  8935          const expectedDigest = this.messageDigestAttributeObj.subs[1].subs[0].value;
  8936          if (!crypto.bufferEqual(tstInfoDigest, expectedDigest)) {
  8937              throw new error_1.RFC3161TimestampVerificationError('signed data does not match tstInfo');
  8938          }
  8939      }
  8940      verifySignature(key) {
  8941          // Encode the signed attributes for verification
  8942          const signedAttrs = this.signedAttrsObj.toDER();
  8943          signedAttrs[0] = 0x31; // Change context-specific tag to SET
  8944          // Check that the signature is valid for the signed attributes
  8945          const verified = crypto.verify(signedAttrs, key, this.signatureValue, this.signatureAlgorithm);
  8946          if (!verified) {
  8947              throw new error_1.RFC3161TimestampVerificationError('signature verification failed');
  8948          }
  8949      }
  8950      // https://www.rfc-editor.org/rfc/rfc3161#section-2.4.2
  8951      get pkiStatusInfoObj() {
  8952          // pkiStatusInfo is the first element of the timestamp response sequence
  8953          return this.root.subs[0];
  8954      }
  8955      // https://www.rfc-editor.org/rfc/rfc3161#section-2.4.2
  8956      get timeStampTokenObj() {
  8957          // timeStampToken is the first element of the timestamp response sequence
  8958          return this.root.subs[1];
  8959      }
  8960      // https://datatracker.ietf.org/doc/html/rfc5652#section-3
  8961      get contentTypeObj() {
  8962          return this.timeStampTokenObj.subs[0];
  8963      }
  8964      // https://www.rfc-editor.org/rfc/rfc5652#section-3
  8965      get signedDataObj() {
  8966          const obj = this.timeStampTokenObj.subs.find((sub) => sub.tag.isContextSpecific(0x00));
  8967          return obj.subs[0];
  8968      }
  8969      // https://datatracker.ietf.org/doc/html/rfc5652#section-5.1
  8970      get encapContentInfoObj() {
  8971          return this.signedDataObj.subs[2];
  8972      }
  8973      // https://datatracker.ietf.org/doc/html/rfc5652#section-5.1
  8974      get signerInfosObj() {
  8975          // SignerInfos is the last element of the signed data sequence
  8976          const sd = this.signedDataObj;
  8977          return sd.subs[sd.subs.length - 1];
  8978      }
  8979      // https://www.rfc-editor.org/rfc/rfc5652#section-5.1
  8980      get signerInfoObj() {
  8981          // Only supporting one signer
  8982          return this.signerInfosObj.subs[0];
  8983      }
  8984      // https://datatracker.ietf.org/doc/html/rfc5652#section-5.2
  8985      get eContentTypeObj() {
  8986          return this.encapContentInfoObj.subs[0];
  8987      }
  8988      // https://datatracker.ietf.org/doc/html/rfc5652#section-5.2
  8989      get eContentObj() {
  8990          return this.encapContentInfoObj.subs[1];
  8991      }
  8992      // https://datatracker.ietf.org/doc/html/rfc5652#section-5.3
  8993      get signedAttrsObj() {
  8994          const signedAttrs = this.signerInfoObj.subs.find((sub) => sub.tag.isContextSpecific(0x00));
  8995          return signedAttrs;
  8996      }
  8997      // https://datatracker.ietf.org/doc/html/rfc5652#section-5.3
  8998      get messageDigestAttributeObj() {
  8999          const messageDigest = this.signedAttrsObj.subs.find((sub) => sub.subs[0].tag.isOID() &&
  9000              sub.subs[0].toOID() === OID_PKCS9_MESSAGE_DIGEST_KEY);
  9001          return messageDigest;
  9002      }
  9003      // https://datatracker.ietf.org/doc/html/rfc5652#section-5.3
  9004      get signerSidObj() {
  9005          return this.signerInfoObj.subs[1];
  9006      }
  9007      // https://datatracker.ietf.org/doc/html/rfc5652#section-5.3
  9008      get signerDigestAlgorithmObj() {
  9009          // Signature is the 2nd element of the signerInfoObj object
  9010          return this.signerInfoObj.subs[2];
  9011      }
  9012      // https://datatracker.ietf.org/doc/html/rfc5652#section-5.3
  9013      get signatureAlgorithmObj() {
  9014          // Signature is the 4th element of the signerInfoObj object
  9015          return this.signerInfoObj.subs[4];
  9016      }
  9017      // https://datatracker.ietf.org/doc/html/rfc5652#section-5.3
  9018      get signatureValueObj() {
  9019          // Signature is the 6th element of the signerInfoObj object
  9020          return this.signerInfoObj.subs[5];
  9021      }
  9022  }
  9023  exports.RFC3161Timestamp = RFC3161Timestamp;
  9024  
  9025  
  9026  /***/ }),
  9027  
  9028  /***/ 80852:
  9029  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
  9030  
  9031  "use strict";
  9032  
  9033  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
  9034      if (k2 === undefined) k2 = k;
  9035      var desc = Object.getOwnPropertyDescriptor(m, k);
  9036      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
  9037        desc = { enumerable: true, get: function() { return m[k]; } };
  9038      }
  9039      Object.defineProperty(o, k2, desc);
  9040  }) : (function(o, m, k, k2) {
  9041      if (k2 === undefined) k2 = k;
  9042      o[k2] = m[k];
  9043  }));
  9044  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
  9045      Object.defineProperty(o, "default", { enumerable: true, value: v });
  9046  }) : function(o, v) {
  9047      o["default"] = v;
  9048  });
  9049  var __importStar = (this && this.__importStar) || function (mod) {
  9050      if (mod && mod.__esModule) return mod;
  9051      var result = {};
  9052      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
  9053      __setModuleDefault(result, mod);
  9054      return result;
  9055  };
  9056  Object.defineProperty(exports, "__esModule", ({ value: true }));
  9057  exports.TSTInfo = void 0;
  9058  const crypto = __importStar(__nccwpck_require__(83914));
  9059  const oid_1 = __nccwpck_require__(15960);
  9060  const error_1 = __nccwpck_require__(74526);
  9061  class TSTInfo {
  9062      constructor(asn1) {
  9063          this.root = asn1;
  9064      }
  9065      get version() {
  9066          return this.root.subs[0].toInteger();
  9067      }
  9068      get genTime() {
  9069          return this.root.subs[4].toDate();
  9070      }
  9071      get messageImprintHashAlgorithm() {
  9072          const oid = this.messageImprintObj.subs[0].subs[0].toOID();
  9073          return oid_1.SHA2_HASH_ALGOS[oid];
  9074      }
  9075      get messageImprintHashedMessage() {
  9076          return this.messageImprintObj.subs[1].value;
  9077      }
  9078      get raw() {
  9079          return this.root.toDER();
  9080      }
  9081      verify(data) {
  9082          const digest = crypto.digest(this.messageImprintHashAlgorithm, data);
  9083          if (!crypto.bufferEqual(digest, this.messageImprintHashedMessage)) {
  9084              throw new error_1.RFC3161TimestampVerificationError('message imprint does not match artifact');
  9085          }
  9086      }
  9087      // https://www.rfc-editor.org/rfc/rfc3161#section-2.4.2
  9088      get messageImprintObj() {
  9089          return this.root.subs[2];
  9090      }
  9091  }
  9092  exports.TSTInfo = TSTInfo;
  9093  
  9094  
  9095  /***/ }),
  9096  
  9097  /***/ 52283:
  9098  /***/ ((__unused_webpack_module, exports) => {
  9099  
  9100  "use strict";
  9101  
  9102  Object.defineProperty(exports, "__esModule", ({ value: true }));
  9103  exports.ByteStream = void 0;
  9104  /*
  9105  Copyright 2023 The Sigstore Authors.
  9106  
  9107  Licensed under the Apache License, Version 2.0 (the "License");
  9108  you may not use this file except in compliance with the License.
  9109  You may obtain a copy of the License at
  9110  
  9111      http://www.apache.org/licenses/LICENSE-2.0
  9112  
  9113  Unless required by applicable law or agreed to in writing, software
  9114  distributed under the License is distributed on an "AS IS" BASIS,
  9115  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  9116  See the License for the specific language governing permissions and
  9117  limitations under the License.
  9118  */
  9119  class StreamError extends Error {
  9120  }
  9121  class ByteStream {
  9122      constructor(buffer) {
  9123          this.start = 0;
  9124          if (buffer) {
  9125              this.buf = buffer;
  9126              this.view = Buffer.from(buffer);
  9127          }
  9128          else {
  9129              this.buf = new ArrayBuffer(0);
  9130              this.view = Buffer.from(this.buf);
  9131          }
  9132      }
  9133      get buffer() {
  9134          return this.view.subarray(0, this.start);
  9135      }
  9136      get length() {
  9137          return this.view.byteLength;
  9138      }
  9139      get position() {
  9140          return this.start;
  9141      }
  9142      seek(position) {
  9143          this.start = position;
  9144      }
  9145      // Returns a Buffer containing the specified number of bytes starting at the
  9146      // given start position.
  9147      slice(start, len) {
  9148          const end = start + len;
  9149          if (end > this.length) {
  9150              throw new StreamError('request past end of buffer');
  9151          }
  9152          return this.view.subarray(start, end);
  9153      }
  9154      appendChar(char) {
  9155          this.ensureCapacity(1);
  9156          this.view[this.start] = char;
  9157          this.start += 1;
  9158      }
  9159      appendUint16(num) {
  9160          this.ensureCapacity(2);
  9161          const value = new Uint16Array([num]);
  9162          const view = new Uint8Array(value.buffer);
  9163          this.view[this.start] = view[1];
  9164          this.view[this.start + 1] = view[0];
  9165          this.start += 2;
  9166      }
  9167      appendUint24(num) {
  9168          this.ensureCapacity(3);
  9169          const value = new Uint32Array([num]);
  9170          const view = new Uint8Array(value.buffer);
  9171          this.view[this.start] = view[2];
  9172          this.view[this.start + 1] = view[1];
  9173          this.view[this.start + 2] = view[0];
  9174          this.start += 3;
  9175      }
  9176      appendView(view) {
  9177          this.ensureCapacity(view.length);
  9178          this.view.set(view, this.start);
  9179          this.start += view.length;
  9180      }
  9181      getBlock(size) {
  9182          if (size <= 0) {
  9183              return Buffer.alloc(0);
  9184          }
  9185          if (this.start + size > this.view.length) {
  9186              throw new Error('request past end of buffer');
  9187          }
  9188          const result = this.view.subarray(this.start, this.start + size);
  9189          this.start += size;
  9190          return result;
  9191      }
  9192      getUint8() {
  9193          return this.getBlock(1)[0];
  9194      }
  9195      getUint16() {
  9196          const block = this.getBlock(2);
  9197          return (block[0] << 8) | block[1];
  9198      }
  9199      ensureCapacity(size) {
  9200          if (this.start + size > this.view.byteLength) {
  9201              const blockSize = ByteStream.BLOCK_SIZE + (size > ByteStream.BLOCK_SIZE ? size : 0);
  9202              this.realloc(this.view.byteLength + blockSize);
  9203          }
  9204      }
  9205      realloc(size) {
  9206          const newArray = new ArrayBuffer(size);
  9207          const newView = Buffer.from(newArray);
  9208          // Copy the old buffer into the new one
  9209          newView.set(this.view);
  9210          this.buf = newArray;
  9211          this.view = newView;
  9212      }
  9213  }
  9214  exports.ByteStream = ByteStream;
  9215  ByteStream.BLOCK_SIZE = 1024;
  9216  
  9217  
  9218  /***/ }),
  9219  
  9220  /***/ 26381:
  9221  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
  9222  
  9223  "use strict";
  9224  
  9225  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
  9226      if (k2 === undefined) k2 = k;
  9227      var desc = Object.getOwnPropertyDescriptor(m, k);
  9228      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
  9229        desc = { enumerable: true, get: function() { return m[k]; } };
  9230      }
  9231      Object.defineProperty(o, k2, desc);
  9232  }) : (function(o, m, k, k2) {
  9233      if (k2 === undefined) k2 = k;
  9234      o[k2] = m[k];
  9235  }));
  9236  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
  9237      Object.defineProperty(o, "default", { enumerable: true, value: v });
  9238  }) : function(o, v) {
  9239      o["default"] = v;
  9240  });
  9241  var __importStar = (this && this.__importStar) || function (mod) {
  9242      if (mod && mod.__esModule) return mod;
  9243      var result = {};
  9244      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
  9245      __setModuleDefault(result, mod);
  9246      return result;
  9247  };
  9248  Object.defineProperty(exports, "__esModule", ({ value: true }));
  9249  exports.X509Certificate = exports.EXTENSION_OID_SCT = void 0;
  9250  /*
  9251  Copyright 2023 The Sigstore Authors.
  9252  
  9253  Licensed under the Apache License, Version 2.0 (the "License");
  9254  you may not use this file except in compliance with the License.
  9255  You may obtain a copy of the License at
  9256  
  9257      http://www.apache.org/licenses/LICENSE-2.0
  9258  
  9259  Unless required by applicable law or agreed to in writing, software
  9260  distributed under the License is distributed on an "AS IS" BASIS,
  9261  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  9262  See the License for the specific language governing permissions and
  9263  limitations under the License.
  9264  */
  9265  const asn1_1 = __nccwpck_require__(54095);
  9266  const crypto = __importStar(__nccwpck_require__(83914));
  9267  const oid_1 = __nccwpck_require__(15960);
  9268  const pem = __importStar(__nccwpck_require__(25225));
  9269  const ext_1 = __nccwpck_require__(11292);
  9270  const EXTENSION_OID_SUBJECT_KEY_ID = '2.5.29.14';
  9271  const EXTENSION_OID_KEY_USAGE = '2.5.29.15';
  9272  const EXTENSION_OID_SUBJECT_ALT_NAME = '2.5.29.17';
  9273  const EXTENSION_OID_BASIC_CONSTRAINTS = '2.5.29.19';
  9274  const EXTENSION_OID_AUTHORITY_KEY_ID = '2.5.29.35';
  9275  exports.EXTENSION_OID_SCT = '1.3.6.1.4.1.11129.2.4.2';
  9276  class X509Certificate {
  9277      constructor(asn1) {
  9278          this.root = asn1;
  9279      }
  9280      static parse(cert) {
  9281          const der = typeof cert === 'string' ? pem.toDER(cert) : cert;
  9282          const asn1 = asn1_1.ASN1Obj.parseBuffer(der);
  9283          return new X509Certificate(asn1);
  9284      }
  9285      get tbsCertificate() {
  9286          return this.tbsCertificateObj;
  9287      }
  9288      get version() {
  9289          // version number is the first element of the version context specific tag
  9290          const ver = this.versionObj.subs[0].toInteger();
  9291          return `v${(ver + BigInt(1)).toString()}`;
  9292      }
  9293      get serialNumber() {
  9294          return this.serialNumberObj.value;
  9295      }
  9296      get notBefore() {
  9297          // notBefore is the first element of the validity sequence
  9298          return this.validityObj.subs[0].toDate();
  9299      }
  9300      get notAfter() {
  9301          // notAfter is the second element of the validity sequence
  9302          return this.validityObj.subs[1].toDate();
  9303      }
  9304      get issuer() {
  9305          return this.issuerObj.value;
  9306      }
  9307      get subject() {
  9308          return this.subjectObj.value;
  9309      }
  9310      get publicKey() {
  9311          return this.subjectPublicKeyInfoObj.toDER();
  9312      }
  9313      get signatureAlgorithm() {
  9314          const oid = this.signatureAlgorithmObj.subs[0].toOID();
  9315          return oid_1.ECDSA_SIGNATURE_ALGOS[oid];
  9316      }
  9317      get signatureValue() {
  9318          // Signature value is a bit string, so we need to skip the first byte
  9319          return this.signatureValueObj.value.subarray(1);
  9320      }
  9321      get subjectAltName() {
  9322          const ext = this.extSubjectAltName;
  9323          return ext?.uri || ext?.rfc822Name;
  9324      }
  9325      get extensions() {
  9326          // The extension list is the first (and only) element of the extensions
  9327          // context specific tag
  9328          const extSeq = this.extensionsObj?.subs[0];
  9329          return extSeq?.subs || /* istanbul ignore next */ [];
  9330      }
  9331      get extKeyUsage() {
  9332          const ext = this.findExtension(EXTENSION_OID_KEY_USAGE);
  9333          return ext ? new ext_1.X509KeyUsageExtension(ext) : undefined;
  9334      }
  9335      get extBasicConstraints() {
  9336          const ext = this.findExtension(EXTENSION_OID_BASIC_CONSTRAINTS);
  9337          return ext ? new ext_1.X509BasicConstraintsExtension(ext) : undefined;
  9338      }
  9339      get extSubjectAltName() {
  9340          const ext = this.findExtension(EXTENSION_OID_SUBJECT_ALT_NAME);
  9341          return ext ? new ext_1.X509SubjectAlternativeNameExtension(ext) : undefined;
  9342      }
  9343      get extAuthorityKeyID() {
  9344          const ext = this.findExtension(EXTENSION_OID_AUTHORITY_KEY_ID);
  9345          return ext ? new ext_1.X509AuthorityKeyIDExtension(ext) : undefined;
  9346      }
  9347      get extSubjectKeyID() {
  9348          const ext = this.findExtension(EXTENSION_OID_SUBJECT_KEY_ID);
  9349          return ext
  9350              ? new ext_1.X509SubjectKeyIDExtension(ext)
  9351              : /* istanbul ignore next */ undefined;
  9352      }
  9353      get extSCT() {
  9354          const ext = this.findExtension(exports.EXTENSION_OID_SCT);
  9355          return ext ? new ext_1.X509SCTExtension(ext) : undefined;
  9356      }
  9357      get isCA() {
  9358          const ca = this.extBasicConstraints?.isCA || false;
  9359          // If the KeyUsage extension is present, keyCertSign must be set
  9360          if (this.extKeyUsage) {
  9361              ca && this.extKeyUsage.keyCertSign;
  9362          }
  9363          return ca;
  9364      }
  9365      extension(oid) {
  9366          const ext = this.findExtension(oid);
  9367          return ext ? new ext_1.X509Extension(ext) : undefined;
  9368      }
  9369      verify(issuerCertificate) {
  9370          // Use the issuer's public key if provided, otherwise use the subject's
  9371          const publicKey = issuerCertificate?.publicKey || this.publicKey;
  9372          const key = crypto.createPublicKey(publicKey);
  9373          return crypto.verify(this.tbsCertificate.toDER(), key, this.signatureValue, this.signatureAlgorithm);
  9374      }
  9375      validForDate(date) {
  9376          return this.notBefore <= date && date <= this.notAfter;
  9377      }
  9378      equals(other) {
  9379          return this.root.toDER().equals(other.root.toDER());
  9380      }
  9381      // Creates a copy of the certificate with a new buffer
  9382      clone() {
  9383          const der = this.root.toDER();
  9384          const clone = Buffer.alloc(der.length);
  9385          der.copy(clone);
  9386          return X509Certificate.parse(clone);
  9387      }
  9388      findExtension(oid) {
  9389          // Find the extension with the given OID. The OID will always be the first
  9390          // element of the extension sequence
  9391          return this.extensions.find((ext) => ext.subs[0].toOID() === oid);
  9392      }
  9393      /////////////////////////////////////////////////////////////////////////////
  9394      // The following properties use the documented x509 structure to locate the
  9395      // desired ASN.1 object
  9396      // https://www.rfc-editor.org/rfc/rfc5280#section-4.1
  9397      // https://www.rfc-editor.org/rfc/rfc5280#section-4.1.1.1
  9398      get tbsCertificateObj() {
  9399          // tbsCertificate is the first element of the certificate sequence
  9400          return this.root.subs[0];
  9401      }
  9402      // https://www.rfc-editor.org/rfc/rfc5280#section-4.1.1.2
  9403      get signatureAlgorithmObj() {
  9404          // signatureAlgorithm is the second element of the certificate sequence
  9405          return this.root.subs[1];
  9406      }
  9407      // https://www.rfc-editor.org/rfc/rfc5280#section-4.1.1.3
  9408      get signatureValueObj() {
  9409          // signatureValue is the third element of the certificate sequence
  9410          return this.root.subs[2];
  9411      }
  9412      // https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.1
  9413      get versionObj() {
  9414          // version is the first element of the tbsCertificate sequence
  9415          return this.tbsCertificateObj.subs[0];
  9416      }
  9417      // https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.2
  9418      get serialNumberObj() {
  9419          // serialNumber is the second element of the tbsCertificate sequence
  9420          return this.tbsCertificateObj.subs[1];
  9421      }
  9422      // https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.4
  9423      get issuerObj() {
  9424          // issuer is the fourth element of the tbsCertificate sequence
  9425          return this.tbsCertificateObj.subs[3];
  9426      }
  9427      // https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.5
  9428      get validityObj() {
  9429          // version is the fifth element of the tbsCertificate sequence
  9430          return this.tbsCertificateObj.subs[4];
  9431      }
  9432      // https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.6
  9433      get subjectObj() {
  9434          // subject is the sixth element of the tbsCertificate sequence
  9435          return this.tbsCertificateObj.subs[5];
  9436      }
  9437      // https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.7
  9438      get subjectPublicKeyInfoObj() {
  9439          // subjectPublicKeyInfo is the seventh element of the tbsCertificate sequence
  9440          return this.tbsCertificateObj.subs[6];
  9441      }
  9442      // Extensions can't be located by index because their position varies. Instead,
  9443      // we need to find the extensions context specific tag
  9444      // https://www.rfc-editor.org/rfc/rfc5280#section-4.1.2.9
  9445      get extensionsObj() {
  9446          return this.tbsCertificateObj.subs.find((sub) => sub.tag.isContextSpecific(0x03));
  9447      }
  9448  }
  9449  exports.X509Certificate = X509Certificate;
  9450  
  9451  
  9452  /***/ }),
  9453  
  9454  /***/ 11292:
  9455  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  9456  
  9457  "use strict";
  9458  
  9459  Object.defineProperty(exports, "__esModule", ({ value: true }));
  9460  exports.X509SCTExtension = exports.X509SubjectKeyIDExtension = exports.X509AuthorityKeyIDExtension = exports.X509SubjectAlternativeNameExtension = exports.X509KeyUsageExtension = exports.X509BasicConstraintsExtension = exports.X509Extension = void 0;
  9461  const stream_1 = __nccwpck_require__(52283);
  9462  const sct_1 = __nccwpck_require__(30454);
  9463  // https://www.rfc-editor.org/rfc/rfc5280#section-4.1
  9464  class X509Extension {
  9465      constructor(asn1) {
  9466          this.root = asn1;
  9467      }
  9468      get oid() {
  9469          return this.root.subs[0].toOID();
  9470      }
  9471      get critical() {
  9472          // The critical field is optional and will be the second element of the
  9473          // extension sequence if present. Default to false if not present.
  9474          return this.root.subs.length === 3 ? this.root.subs[1].toBoolean() : false;
  9475      }
  9476      get value() {
  9477          return this.extnValueObj.value;
  9478      }
  9479      get valueObj() {
  9480          return this.extnValueObj;
  9481      }
  9482      get extnValueObj() {
  9483          // The extnValue field will be the last element of the extension sequence
  9484          return this.root.subs[this.root.subs.length - 1];
  9485      }
  9486  }
  9487  exports.X509Extension = X509Extension;
  9488  // https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.9
  9489  class X509BasicConstraintsExtension extends X509Extension {
  9490      get isCA() {
  9491          return this.sequence.subs[0]?.toBoolean() ?? false;
  9492      }
  9493      get pathLenConstraint() {
  9494          return this.sequence.subs.length > 1
  9495              ? this.sequence.subs[1].toInteger()
  9496              : undefined;
  9497      }
  9498      // The extnValue field contains a single sequence wrapping the isCA and
  9499      // pathLenConstraint.
  9500      get sequence() {
  9501          return this.extnValueObj.subs[0];
  9502      }
  9503  }
  9504  exports.X509BasicConstraintsExtension = X509BasicConstraintsExtension;
  9505  // https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.3
  9506  class X509KeyUsageExtension extends X509Extension {
  9507      get digitalSignature() {
  9508          return this.bitString[0] === 1;
  9509      }
  9510      get keyCertSign() {
  9511          return this.bitString[5] === 1;
  9512      }
  9513      get crlSign() {
  9514          return this.bitString[6] === 1;
  9515      }
  9516      // The extnValue field contains a single bit string which is a bit mask
  9517      // indicating which key usages are enabled.
  9518      get bitString() {
  9519          return this.extnValueObj.subs[0].toBitString();
  9520      }
  9521  }
  9522  exports.X509KeyUsageExtension = X509KeyUsageExtension;
  9523  // https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.6
  9524  class X509SubjectAlternativeNameExtension extends X509Extension {
  9525      get rfc822Name() {
  9526          return this.findGeneralName(0x01)?.value.toString('ascii');
  9527      }
  9528      get uri() {
  9529          return this.findGeneralName(0x06)?.value.toString('ascii');
  9530      }
  9531      // Retrieve the value of an otherName with the given OID.
  9532      otherName(oid) {
  9533          const otherName = this.findGeneralName(0x00);
  9534          if (otherName === undefined) {
  9535              return undefined;
  9536          }
  9537          // The otherName is a sequence containing an OID and a value.
  9538          // Need to check that the OID matches the one we're looking for.
  9539          const otherNameOID = otherName.subs[0].toOID();
  9540          if (otherNameOID !== oid) {
  9541              return undefined;
  9542          }
  9543          // The otherNameValue is a sequence containing the actual value.
  9544          const otherNameValue = otherName.subs[1];
  9545          return otherNameValue.subs[0].value.toString('ascii');
  9546      }
  9547      findGeneralName(tag) {
  9548          return this.generalNames.find((gn) => gn.tag.isContextSpecific(tag));
  9549      }
  9550      // The extnValue field contains a sequence of GeneralNames.
  9551      get generalNames() {
  9552          return this.extnValueObj.subs[0].subs;
  9553      }
  9554  }
  9555  exports.X509SubjectAlternativeNameExtension = X509SubjectAlternativeNameExtension;
  9556  // https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.1
  9557  class X509AuthorityKeyIDExtension extends X509Extension {
  9558      get keyIdentifier() {
  9559          return this.findSequenceMember(0x00)?.value;
  9560      }
  9561      findSequenceMember(tag) {
  9562          return this.sequence.subs.find((el) => el.tag.isContextSpecific(tag));
  9563      }
  9564      // The extnValue field contains a single sequence wrapping the keyIdentifier
  9565      get sequence() {
  9566          return this.extnValueObj.subs[0];
  9567      }
  9568  }
  9569  exports.X509AuthorityKeyIDExtension = X509AuthorityKeyIDExtension;
  9570  // https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.2
  9571  class X509SubjectKeyIDExtension extends X509Extension {
  9572      get keyIdentifier() {
  9573          return this.extnValueObj.subs[0].value;
  9574      }
  9575  }
  9576  exports.X509SubjectKeyIDExtension = X509SubjectKeyIDExtension;
  9577  // https://www.rfc-editor.org/rfc/rfc6962#section-3.3
  9578  class X509SCTExtension extends X509Extension {
  9579      constructor(asn1) {
  9580          super(asn1);
  9581      }
  9582      get signedCertificateTimestamps() {
  9583          const buf = this.extnValueObj.subs[0].value;
  9584          const stream = new stream_1.ByteStream(buf);
  9585          // The overall list length is encoded in the first two bytes -- note this
  9586          // is the length of the list in bytes, NOT the number of SCTs in the list
  9587          const end = stream.getUint16() + 2;
  9588          const sctList = [];
  9589          while (stream.position < end) {
  9590              // Read the length of the next SCT
  9591              const sctLength = stream.getUint16();
  9592              // Slice out the bytes for the next SCT and parse it
  9593              const sct = stream.getBlock(sctLength);
  9594              sctList.push(sct_1.SignedCertificateTimestamp.parse(sct));
  9595          }
  9596          if (stream.position !== end) {
  9597              throw new Error('SCT list length does not match actual length');
  9598          }
  9599          return sctList;
  9600      }
  9601  }
  9602  exports.X509SCTExtension = X509SCTExtension;
  9603  
  9604  
  9605  /***/ }),
  9606  
  9607  /***/ 75500:
  9608  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  9609  
  9610  "use strict";
  9611  
  9612  /*
  9613  Copyright 2023 The Sigstore Authors.
  9614  
  9615  Licensed under the Apache License, Version 2.0 (the "License");
  9616  you may not use this file except in compliance with the License.
  9617  You may obtain a copy of the License at
  9618  
  9619      http://www.apache.org/licenses/LICENSE-2.0
  9620  
  9621  Unless required by applicable law or agreed to in writing, software
  9622  distributed under the License is distributed on an "AS IS" BASIS,
  9623  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  9624  See the License for the specific language governing permissions and
  9625  limitations under the License.
  9626  */
  9627  Object.defineProperty(exports, "__esModule", ({ value: true }));
  9628  exports.X509SCTExtension = exports.X509Certificate = exports.EXTENSION_OID_SCT = void 0;
  9629  var cert_1 = __nccwpck_require__(26381);
  9630  Object.defineProperty(exports, "EXTENSION_OID_SCT", ({ enumerable: true, get: function () { return cert_1.EXTENSION_OID_SCT; } }));
  9631  Object.defineProperty(exports, "X509Certificate", ({ enumerable: true, get: function () { return cert_1.X509Certificate; } }));
  9632  var ext_1 = __nccwpck_require__(11292);
  9633  Object.defineProperty(exports, "X509SCTExtension", ({ enumerable: true, get: function () { return ext_1.X509SCTExtension; } }));
  9634  
  9635  
  9636  /***/ }),
  9637  
  9638  /***/ 30454:
  9639  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
  9640  
  9641  "use strict";
  9642  
  9643  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
  9644      if (k2 === undefined) k2 = k;
  9645      var desc = Object.getOwnPropertyDescriptor(m, k);
  9646      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
  9647        desc = { enumerable: true, get: function() { return m[k]; } };
  9648      }
  9649      Object.defineProperty(o, k2, desc);
  9650  }) : (function(o, m, k, k2) {
  9651      if (k2 === undefined) k2 = k;
  9652      o[k2] = m[k];
  9653  }));
  9654  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
  9655      Object.defineProperty(o, "default", { enumerable: true, value: v });
  9656  }) : function(o, v) {
  9657      o["default"] = v;
  9658  });
  9659  var __importStar = (this && this.__importStar) || function (mod) {
  9660      if (mod && mod.__esModule) return mod;
  9661      var result = {};
  9662      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
  9663      __setModuleDefault(result, mod);
  9664      return result;
  9665  };
  9666  Object.defineProperty(exports, "__esModule", ({ value: true }));
  9667  exports.SignedCertificateTimestamp = void 0;
  9668  /*
  9669  Copyright 2023 The Sigstore Authors.
  9670  
  9671  Licensed under the Apache License, Version 2.0 (the "License");
  9672  you may not use this file except in compliance with the License.
  9673  You may obtain a copy of the License at
  9674  
  9675      http://www.apache.org/licenses/LICENSE-2.0
  9676  
  9677  Unless required by applicable law or agreed to in writing, software
  9678  distributed under the License is distributed on an "AS IS" BASIS,
  9679  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  9680  See the License for the specific language governing permissions and
  9681  limitations under the License.
  9682  */
  9683  const crypto = __importStar(__nccwpck_require__(83914));
  9684  const stream_1 = __nccwpck_require__(52283);
  9685  class SignedCertificateTimestamp {
  9686      constructor(options) {
  9687          this.version = options.version;
  9688          this.logID = options.logID;
  9689          this.timestamp = options.timestamp;
  9690          this.extensions = options.extensions;
  9691          this.hashAlgorithm = options.hashAlgorithm;
  9692          this.signatureAlgorithm = options.signatureAlgorithm;
  9693          this.signature = options.signature;
  9694      }
  9695      get datetime() {
  9696          return new Date(Number(this.timestamp.readBigInt64BE()));
  9697      }
  9698      // Returns the hash algorithm used to generate the SCT's signature.
  9699      // https://www.rfc-editor.org/rfc/rfc5246#section-7.4.1.4.1
  9700      get algorithm() {
  9701          switch (this.hashAlgorithm) {
  9702              /* istanbul ignore next */
  9703              case 0:
  9704                  return 'none';
  9705              /* istanbul ignore next */
  9706              case 1:
  9707                  return 'md5';
  9708              /* istanbul ignore next */
  9709              case 2:
  9710                  return 'sha1';
  9711              /* istanbul ignore next */
  9712              case 3:
  9713                  return 'sha224';
  9714              case 4:
  9715                  return 'sha256';
  9716              /* istanbul ignore next */
  9717              case 5:
  9718                  return 'sha384';
  9719              /* istanbul ignore next */
  9720              case 6:
  9721                  return 'sha512';
  9722              /* istanbul ignore next */
  9723              default:
  9724                  return 'unknown';
  9725          }
  9726      }
  9727      verify(preCert, key) {
  9728          // Assemble the digitally-signed struct (the data over which the signature
  9729          // was generated).
  9730          // https://www.rfc-editor.org/rfc/rfc6962#section-3.2
  9731          const stream = new stream_1.ByteStream();
  9732          stream.appendChar(this.version);
  9733          stream.appendChar(0x00); // SignatureType = certificate_timestamp(0)
  9734          stream.appendView(this.timestamp);
  9735          stream.appendUint16(0x01); // LogEntryType = precert_entry(1)
  9736          stream.appendView(preCert);
  9737          stream.appendUint16(this.extensions.byteLength);
  9738          /* istanbul ignore next - extensions are very uncommon */
  9739          if (this.extensions.byteLength > 0) {
  9740              stream.appendView(this.extensions);
  9741          }
  9742          return crypto.verify(stream.buffer, key, this.signature, this.algorithm);
  9743      }
  9744      // Parses a SignedCertificateTimestamp from a buffer. SCTs are encoded using
  9745      // TLS encoding which means the fields and lengths of most fields are
  9746      // specified as part of the SCT and TLS specs.
  9747      // https://www.rfc-editor.org/rfc/rfc6962#section-3.2
  9748      // https://www.rfc-editor.org/rfc/rfc5246#section-7.4.1.4.1
  9749      static parse(buf) {
  9750          const stream = new stream_1.ByteStream(buf);
  9751          // Version - enum { v1(0), (255) }
  9752          const version = stream.getUint8();
  9753          // Log ID  - struct { opaque key_id[32]; }
  9754          const logID = stream.getBlock(32);
  9755          // Timestamp - uint64
  9756          const timestamp = stream.getBlock(8);
  9757          // Extensions - opaque extensions<0..2^16-1>;
  9758          const extenstionLength = stream.getUint16();
  9759          const extensions = stream.getBlock(extenstionLength);
  9760          // Hash algo - enum { sha256(4), . . . (255) }
  9761          const hashAlgorithm = stream.getUint8();
  9762          // Signature algo - enum { anonymous(0), rsa(1), dsa(2), ecdsa(3), (255) }
  9763          const signatureAlgorithm = stream.getUint8();
  9764          // Signature  - opaque signature<0..2^16-1>;
  9765          const sigLength = stream.getUint16();
  9766          const signature = stream.getBlock(sigLength);
  9767          // Check that we read the entire buffer
  9768          if (stream.position !== buf.length) {
  9769              throw new Error('SCT buffer length mismatch');
  9770          }
  9771          return new SignedCertificateTimestamp({
  9772              version,
  9773              logID,
  9774              timestamp,
  9775              extensions,
  9776              hashAlgorithm,
  9777              signatureAlgorithm,
  9778              signature,
  9779          });
  9780      }
  9781  }
  9782  exports.SignedCertificateTimestamp = SignedCertificateTimestamp;
  9783  
  9784  
  9785  /***/ }),
  9786  
  9787  /***/ 70714:
  9788  /***/ ((__unused_webpack_module, exports) => {
  9789  
  9790  "use strict";
  9791  
  9792  /* eslint-disable */
  9793  Object.defineProperty(exports, "__esModule", ({ value: true }));
  9794  exports.Signature = exports.Envelope = void 0;
  9795  function createBaseEnvelope() {
  9796      return { payload: Buffer.alloc(0), payloadType: "", signatures: [] };
  9797  }
  9798  exports.Envelope = {
  9799      fromJSON(object) {
  9800          return {
  9801              payload: isSet(object.payload) ? Buffer.from(bytesFromBase64(object.payload)) : Buffer.alloc(0),
  9802              payloadType: isSet(object.payloadType) ? String(object.payloadType) : "",
  9803              signatures: Array.isArray(object?.signatures) ? object.signatures.map((e) => exports.Signature.fromJSON(e)) : [],
  9804          };
  9805      },
  9806      toJSON(message) {
  9807          const obj = {};
  9808          message.payload !== undefined &&
  9809              (obj.payload = base64FromBytes(message.payload !== undefined ? message.payload : Buffer.alloc(0)));
  9810          message.payloadType !== undefined && (obj.payloadType = message.payloadType);
  9811          if (message.signatures) {
  9812              obj.signatures = message.signatures.map((e) => e ? exports.Signature.toJSON(e) : undefined);
  9813          }
  9814          else {
  9815              obj.signatures = [];
  9816          }
  9817          return obj;
  9818      },
  9819  };
  9820  function createBaseSignature() {
  9821      return { sig: Buffer.alloc(0), keyid: "" };
  9822  }
  9823  exports.Signature = {
  9824      fromJSON(object) {
  9825          return {
  9826              sig: isSet(object.sig) ? Buffer.from(bytesFromBase64(object.sig)) : Buffer.alloc(0),
  9827              keyid: isSet(object.keyid) ? String(object.keyid) : "",
  9828          };
  9829      },
  9830      toJSON(message) {
  9831          const obj = {};
  9832          message.sig !== undefined && (obj.sig = base64FromBytes(message.sig !== undefined ? message.sig : Buffer.alloc(0)));
  9833          message.keyid !== undefined && (obj.keyid = message.keyid);
  9834          return obj;
  9835      },
  9836  };
  9837  var tsProtoGlobalThis = (() => {
  9838      if (typeof globalThis !== "undefined") {
  9839          return globalThis;
  9840      }
  9841      if (typeof self !== "undefined") {
  9842          return self;
  9843      }
  9844      if (typeof window !== "undefined") {
  9845          return window;
  9846      }
  9847      if (typeof global !== "undefined") {
  9848          return global;
  9849      }
  9850      throw "Unable to locate global object";
  9851  })();
  9852  function bytesFromBase64(b64) {
  9853      if (tsProtoGlobalThis.Buffer) {
  9854          return Uint8Array.from(tsProtoGlobalThis.Buffer.from(b64, "base64"));
  9855      }
  9856      else {
  9857          const bin = tsProtoGlobalThis.atob(b64);
  9858          const arr = new Uint8Array(bin.length);
  9859          for (let i = 0; i < bin.length; ++i) {
  9860              arr[i] = bin.charCodeAt(i);
  9861          }
  9862          return arr;
  9863      }
  9864  }
  9865  function base64FromBytes(arr) {
  9866      if (tsProtoGlobalThis.Buffer) {
  9867          return tsProtoGlobalThis.Buffer.from(arr).toString("base64");
  9868      }
  9869      else {
  9870          const bin = [];
  9871          arr.forEach((byte) => {
  9872              bin.push(String.fromCharCode(byte));
  9873          });
  9874          return tsProtoGlobalThis.btoa(bin.join(""));
  9875      }
  9876  }
  9877  function isSet(value) {
  9878      return value !== null && value !== undefined;
  9879  }
  9880  
  9881  
  9882  /***/ }),
  9883  
  9884  /***/ 73027:
  9885  /***/ ((__unused_webpack_module, exports) => {
  9886  
  9887  "use strict";
  9888  
  9889  /* eslint-disable */
  9890  Object.defineProperty(exports, "__esModule", ({ value: true }));
  9891  exports.Timestamp = void 0;
  9892  function createBaseTimestamp() {
  9893      return { seconds: "0", nanos: 0 };
  9894  }
  9895  exports.Timestamp = {
  9896      fromJSON(object) {
  9897          return {
  9898              seconds: isSet(object.seconds) ? String(object.seconds) : "0",
  9899              nanos: isSet(object.nanos) ? Number(object.nanos) : 0,
  9900          };
  9901      },
  9902      toJSON(message) {
  9903          const obj = {};
  9904          message.seconds !== undefined && (obj.seconds = message.seconds);
  9905          message.nanos !== undefined && (obj.nanos = Math.round(message.nanos));
  9906          return obj;
  9907      },
  9908  };
  9909  function isSet(value) {
  9910      return value !== null && value !== undefined;
  9911  }
  9912  
  9913  
  9914  /***/ }),
  9915  
  9916  /***/ 28293:
  9917  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
  9918  
  9919  "use strict";
  9920  
  9921  Object.defineProperty(exports, "__esModule", ({ value: true }));
  9922  exports.Bundle = exports.VerificationMaterial = exports.TimestampVerificationData = void 0;
  9923  /* eslint-disable */
  9924  const envelope_1 = __nccwpck_require__(70714);
  9925  const sigstore_common_1 = __nccwpck_require__(82193);
  9926  const sigstore_rekor_1 = __nccwpck_require__(64951);
  9927  function createBaseTimestampVerificationData() {
  9928      return { rfc3161Timestamps: [] };
  9929  }
  9930  exports.TimestampVerificationData = {
  9931      fromJSON(object) {
  9932          return {
  9933              rfc3161Timestamps: Array.isArray(object?.rfc3161Timestamps)
  9934                  ? object.rfc3161Timestamps.map((e) => sigstore_common_1.RFC3161SignedTimestamp.fromJSON(e))
  9935                  : [],
  9936          };
  9937      },
  9938      toJSON(message) {
  9939          const obj = {};
  9940          if (message.rfc3161Timestamps) {
  9941              obj.rfc3161Timestamps = message.rfc3161Timestamps.map((e) => e ? sigstore_common_1.RFC3161SignedTimestamp.toJSON(e) : undefined);
  9942          }
  9943          else {
  9944              obj.rfc3161Timestamps = [];
  9945          }
  9946          return obj;
  9947      },
  9948  };
  9949  function createBaseVerificationMaterial() {
  9950      return { content: undefined, tlogEntries: [], timestampVerificationData: undefined };
  9951  }
  9952  exports.VerificationMaterial = {
  9953      fromJSON(object) {
  9954          return {
  9955              content: isSet(object.publicKey)
  9956                  ? { $case: "publicKey", publicKey: sigstore_common_1.PublicKeyIdentifier.fromJSON(object.publicKey) }
  9957                  : isSet(object.x509CertificateChain)
  9958                      ? {
  9959                          $case: "x509CertificateChain",
  9960                          x509CertificateChain: sigstore_common_1.X509CertificateChain.fromJSON(object.x509CertificateChain),
  9961                      }
  9962                      : isSet(object.certificate)
  9963                          ? { $case: "certificate", certificate: sigstore_common_1.X509Certificate.fromJSON(object.certificate) }
  9964                          : undefined,
  9965              tlogEntries: Array.isArray(object?.tlogEntries)
  9966                  ? object.tlogEntries.map((e) => sigstore_rekor_1.TransparencyLogEntry.fromJSON(e))
  9967                  : [],
  9968              timestampVerificationData: isSet(object.timestampVerificationData)
  9969                  ? exports.TimestampVerificationData.fromJSON(object.timestampVerificationData)
  9970                  : undefined,
  9971          };
  9972      },
  9973      toJSON(message) {
  9974          const obj = {};
  9975          message.content?.$case === "publicKey" &&
  9976              (obj.publicKey = message.content?.publicKey ? sigstore_common_1.PublicKeyIdentifier.toJSON(message.content?.publicKey) : undefined);
  9977          message.content?.$case === "x509CertificateChain" &&
  9978              (obj.x509CertificateChain = message.content?.x509CertificateChain
  9979                  ? sigstore_common_1.X509CertificateChain.toJSON(message.content?.x509CertificateChain)
  9980                  : undefined);
  9981          message.content?.$case === "certificate" &&
  9982              (obj.certificate = message.content?.certificate
  9983                  ? sigstore_common_1.X509Certificate.toJSON(message.content?.certificate)
  9984                  : undefined);
  9985          if (message.tlogEntries) {
  9986              obj.tlogEntries = message.tlogEntries.map((e) => e ? sigstore_rekor_1.TransparencyLogEntry.toJSON(e) : undefined);
  9987          }
  9988          else {
  9989              obj.tlogEntries = [];
  9990          }
  9991          message.timestampVerificationData !== undefined &&
  9992              (obj.timestampVerificationData = message.timestampVerificationData
  9993                  ? exports.TimestampVerificationData.toJSON(message.timestampVerificationData)
  9994                  : undefined);
  9995          return obj;
  9996      },
  9997  };
  9998  function createBaseBundle() {
  9999      return { mediaType: "", verificationMaterial: undefined, content: undefined };
 10000  }
 10001  exports.Bundle = {
 10002      fromJSON(object) {
 10003          return {
 10004              mediaType: isSet(object.mediaType) ? String(object.mediaType) : "",
 10005              verificationMaterial: isSet(object.verificationMaterial)
 10006                  ? exports.VerificationMaterial.fromJSON(object.verificationMaterial)
 10007                  : undefined,
 10008              content: isSet(object.messageSignature)
 10009                  ? { $case: "messageSignature", messageSignature: sigstore_common_1.MessageSignature.fromJSON(object.messageSignature) }
 10010                  : isSet(object.dsseEnvelope)
 10011                      ? { $case: "dsseEnvelope", dsseEnvelope: envelope_1.Envelope.fromJSON(object.dsseEnvelope) }
 10012                      : undefined,
 10013          };
 10014      },
 10015      toJSON(message) {
 10016          const obj = {};
 10017          message.mediaType !== undefined && (obj.mediaType = message.mediaType);
 10018          message.verificationMaterial !== undefined && (obj.verificationMaterial = message.verificationMaterial
 10019              ? exports.VerificationMaterial.toJSON(message.verificationMaterial)
 10020              : undefined);
 10021          message.content?.$case === "messageSignature" && (obj.messageSignature = message.content?.messageSignature
 10022              ? sigstore_common_1.MessageSignature.toJSON(message.content?.messageSignature)
 10023              : undefined);
 10024          message.content?.$case === "dsseEnvelope" &&
 10025              (obj.dsseEnvelope = message.content?.dsseEnvelope ? envelope_1.Envelope.toJSON(message.content?.dsseEnvelope) : undefined);
 10026          return obj;
 10027      },
 10028  };
 10029  function isSet(value) {
 10030      return value !== null && value !== undefined;
 10031  }
 10032  
 10033  
 10034  /***/ }),
 10035  
 10036  /***/ 82193:
 10037  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 10038  
 10039  "use strict";
 10040  
 10041  Object.defineProperty(exports, "__esModule", ({ value: true }));
 10042  exports.TimeRange = exports.X509CertificateChain = exports.SubjectAlternativeName = exports.X509Certificate = exports.DistinguishedName = exports.ObjectIdentifierValuePair = exports.ObjectIdentifier = exports.PublicKeyIdentifier = exports.PublicKey = exports.RFC3161SignedTimestamp = exports.LogId = exports.MessageSignature = exports.HashOutput = exports.subjectAlternativeNameTypeToJSON = exports.subjectAlternativeNameTypeFromJSON = exports.SubjectAlternativeNameType = exports.publicKeyDetailsToJSON = exports.publicKeyDetailsFromJSON = exports.PublicKeyDetails = exports.hashAlgorithmToJSON = exports.hashAlgorithmFromJSON = exports.HashAlgorithm = void 0;
 10043  /* eslint-disable */
 10044  const timestamp_1 = __nccwpck_require__(73027);
 10045  /**
 10046   * Only a subset of the secure hash standard algorithms are supported.
 10047   * See <https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf> for more
 10048   * details.
 10049   * UNSPECIFIED SHOULD not be used, primary reason for inclusion is to force
 10050   * any proto JSON serialization to emit the used hash algorithm, as default
 10051   * option is to *omit* the default value of an enum (which is the first
 10052   * value, represented by '0'.
 10053   */
 10054  var HashAlgorithm;
 10055  (function (HashAlgorithm) {
 10056      HashAlgorithm[HashAlgorithm["HASH_ALGORITHM_UNSPECIFIED"] = 0] = "HASH_ALGORITHM_UNSPECIFIED";
 10057      HashAlgorithm[HashAlgorithm["SHA2_256"] = 1] = "SHA2_256";
 10058      HashAlgorithm[HashAlgorithm["SHA2_384"] = 2] = "SHA2_384";
 10059      HashAlgorithm[HashAlgorithm["SHA2_512"] = 3] = "SHA2_512";
 10060      HashAlgorithm[HashAlgorithm["SHA3_256"] = 4] = "SHA3_256";
 10061      HashAlgorithm[HashAlgorithm["SHA3_384"] = 5] = "SHA3_384";
 10062  })(HashAlgorithm = exports.HashAlgorithm || (exports.HashAlgorithm = {}));
 10063  function hashAlgorithmFromJSON(object) {
 10064      switch (object) {
 10065          case 0:
 10066          case "HASH_ALGORITHM_UNSPECIFIED":
 10067              return HashAlgorithm.HASH_ALGORITHM_UNSPECIFIED;
 10068          case 1:
 10069          case "SHA2_256":
 10070              return HashAlgorithm.SHA2_256;
 10071          case 2:
 10072          case "SHA2_384":
 10073              return HashAlgorithm.SHA2_384;
 10074          case 3:
 10075          case "SHA2_512":
 10076              return HashAlgorithm.SHA2_512;
 10077          case 4:
 10078          case "SHA3_256":
 10079              return HashAlgorithm.SHA3_256;
 10080          case 5:
 10081          case "SHA3_384":
 10082              return HashAlgorithm.SHA3_384;
 10083          default:
 10084              throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum HashAlgorithm");
 10085      }
 10086  }
 10087  exports.hashAlgorithmFromJSON = hashAlgorithmFromJSON;
 10088  function hashAlgorithmToJSON(object) {
 10089      switch (object) {
 10090          case HashAlgorithm.HASH_ALGORITHM_UNSPECIFIED:
 10091              return "HASH_ALGORITHM_UNSPECIFIED";
 10092          case HashAlgorithm.SHA2_256:
 10093              return "SHA2_256";
 10094          case HashAlgorithm.SHA2_384:
 10095              return "SHA2_384";
 10096          case HashAlgorithm.SHA2_512:
 10097              return "SHA2_512";
 10098          case HashAlgorithm.SHA3_256:
 10099              return "SHA3_256";
 10100          case HashAlgorithm.SHA3_384:
 10101              return "SHA3_384";
 10102          default:
 10103              throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum HashAlgorithm");
 10104      }
 10105  }
 10106  exports.hashAlgorithmToJSON = hashAlgorithmToJSON;
 10107  /**
 10108   * Details of a specific public key, capturing the the key encoding method,
 10109   * and signature algorithm.
 10110   *
 10111   * PublicKeyDetails captures the public key/hash algorithm combinations
 10112   * recommended in the Sigstore ecosystem.
 10113   *
 10114   * This is modelled as a linear set as we want to provide a small number of
 10115   * opinionated options instead of allowing every possible permutation.
 10116   *
 10117   * Any changes to this enum MUST be reflected in the algorithm registry.
 10118   * See: docs/algorithm-registry.md
 10119   *
 10120   * To avoid the possibility of contradicting formats such as PKCS1 with
 10121   * ED25519 the valid permutations are listed as a linear set instead of a
 10122   * cartesian set (i.e one combined variable instead of two, one for encoding
 10123   * and one for the signature algorithm).
 10124   */
 10125  var PublicKeyDetails;
 10126  (function (PublicKeyDetails) {
 10127      PublicKeyDetails[PublicKeyDetails["PUBLIC_KEY_DETAILS_UNSPECIFIED"] = 0] = "PUBLIC_KEY_DETAILS_UNSPECIFIED";
 10128      /**
 10129       * PKCS1_RSA_PKCS1V5 - RSA
 10130       *
 10131       * @deprecated
 10132       */
 10133      PublicKeyDetails[PublicKeyDetails["PKCS1_RSA_PKCS1V5"] = 1] = "PKCS1_RSA_PKCS1V5";
 10134      /**
 10135       * PKCS1_RSA_PSS - See RFC8017
 10136       *
 10137       * @deprecated
 10138       */
 10139      PublicKeyDetails[PublicKeyDetails["PKCS1_RSA_PSS"] = 2] = "PKCS1_RSA_PSS";
 10140      /** @deprecated */
 10141      PublicKeyDetails[PublicKeyDetails["PKIX_RSA_PKCS1V5"] = 3] = "PKIX_RSA_PKCS1V5";
 10142      /** @deprecated */
 10143      PublicKeyDetails[PublicKeyDetails["PKIX_RSA_PSS"] = 4] = "PKIX_RSA_PSS";
 10144      /** PKIX_RSA_PKCS1V15_2048_SHA256 - RSA public key in PKIX format, PKCS#1v1.5 signature */
 10145      PublicKeyDetails[PublicKeyDetails["PKIX_RSA_PKCS1V15_2048_SHA256"] = 9] = "PKIX_RSA_PKCS1V15_2048_SHA256";
 10146      PublicKeyDetails[PublicKeyDetails["PKIX_RSA_PKCS1V15_3072_SHA256"] = 10] = "PKIX_RSA_PKCS1V15_3072_SHA256";
 10147      PublicKeyDetails[PublicKeyDetails["PKIX_RSA_PKCS1V15_4096_SHA256"] = 11] = "PKIX_RSA_PKCS1V15_4096_SHA256";
 10148      /** PKIX_RSA_PSS_2048_SHA256 - RSA public key in PKIX format, RSASSA-PSS signature */
 10149      PublicKeyDetails[PublicKeyDetails["PKIX_RSA_PSS_2048_SHA256"] = 16] = "PKIX_RSA_PSS_2048_SHA256";
 10150      PublicKeyDetails[PublicKeyDetails["PKIX_RSA_PSS_3072_SHA256"] = 17] = "PKIX_RSA_PSS_3072_SHA256";
 10151      PublicKeyDetails[PublicKeyDetails["PKIX_RSA_PSS_4096_SHA256"] = 18] = "PKIX_RSA_PSS_4096_SHA256";
 10152      /**
 10153       * PKIX_ECDSA_P256_HMAC_SHA_256 - ECDSA
 10154       *
 10155       * @deprecated
 10156       */
 10157      PublicKeyDetails[PublicKeyDetails["PKIX_ECDSA_P256_HMAC_SHA_256"] = 6] = "PKIX_ECDSA_P256_HMAC_SHA_256";
 10158      /** PKIX_ECDSA_P256_SHA_256 - See NIST FIPS 186-4 */
 10159      PublicKeyDetails[PublicKeyDetails["PKIX_ECDSA_P256_SHA_256"] = 5] = "PKIX_ECDSA_P256_SHA_256";
 10160      PublicKeyDetails[PublicKeyDetails["PKIX_ECDSA_P384_SHA_384"] = 12] = "PKIX_ECDSA_P384_SHA_384";
 10161      PublicKeyDetails[PublicKeyDetails["PKIX_ECDSA_P521_SHA_512"] = 13] = "PKIX_ECDSA_P521_SHA_512";
 10162      /** PKIX_ED25519 - Ed 25519 */
 10163      PublicKeyDetails[PublicKeyDetails["PKIX_ED25519"] = 7] = "PKIX_ED25519";
 10164      PublicKeyDetails[PublicKeyDetails["PKIX_ED25519_PH"] = 8] = "PKIX_ED25519_PH";
 10165      /**
 10166       * LMS_SHA256 - LMS and LM-OTS
 10167       *
 10168       * These keys and signatures may be used by private Sigstore
 10169       * deployments, but are not currently supported by the public
 10170       * good instance.
 10171       *
 10172       * USER WARNING: LMS and LM-OTS are both stateful signature schemes.
 10173       * Using them correctly requires discretion and careful consideration
 10174       * to ensure that individual secret keys are not used more than once.
 10175       * In addition, LM-OTS is a single-use scheme, meaning that it
 10176       * MUST NOT be used for more than one signature per LM-OTS key.
 10177       * If you cannot maintain these invariants, you MUST NOT use these
 10178       * schemes.
 10179       */
 10180      PublicKeyDetails[PublicKeyDetails["LMS_SHA256"] = 14] = "LMS_SHA256";
 10181      PublicKeyDetails[PublicKeyDetails["LMOTS_SHA256"] = 15] = "LMOTS_SHA256";
 10182  })(PublicKeyDetails = exports.PublicKeyDetails || (exports.PublicKeyDetails = {}));
 10183  function publicKeyDetailsFromJSON(object) {
 10184      switch (object) {
 10185          case 0:
 10186          case "PUBLIC_KEY_DETAILS_UNSPECIFIED":
 10187              return PublicKeyDetails.PUBLIC_KEY_DETAILS_UNSPECIFIED;
 10188          case 1:
 10189          case "PKCS1_RSA_PKCS1V5":
 10190              return PublicKeyDetails.PKCS1_RSA_PKCS1V5;
 10191          case 2:
 10192          case "PKCS1_RSA_PSS":
 10193              return PublicKeyDetails.PKCS1_RSA_PSS;
 10194          case 3:
 10195          case "PKIX_RSA_PKCS1V5":
 10196              return PublicKeyDetails.PKIX_RSA_PKCS1V5;
 10197          case 4:
 10198          case "PKIX_RSA_PSS":
 10199              return PublicKeyDetails.PKIX_RSA_PSS;
 10200          case 9:
 10201          case "PKIX_RSA_PKCS1V15_2048_SHA256":
 10202              return PublicKeyDetails.PKIX_RSA_PKCS1V15_2048_SHA256;
 10203          case 10:
 10204          case "PKIX_RSA_PKCS1V15_3072_SHA256":
 10205              return PublicKeyDetails.PKIX_RSA_PKCS1V15_3072_SHA256;
 10206          case 11:
 10207          case "PKIX_RSA_PKCS1V15_4096_SHA256":
 10208              return PublicKeyDetails.PKIX_RSA_PKCS1V15_4096_SHA256;
 10209          case 16:
 10210          case "PKIX_RSA_PSS_2048_SHA256":
 10211              return PublicKeyDetails.PKIX_RSA_PSS_2048_SHA256;
 10212          case 17:
 10213          case "PKIX_RSA_PSS_3072_SHA256":
 10214              return PublicKeyDetails.PKIX_RSA_PSS_3072_SHA256;
 10215          case 18:
 10216          case "PKIX_RSA_PSS_4096_SHA256":
 10217              return PublicKeyDetails.PKIX_RSA_PSS_4096_SHA256;
 10218          case 6:
 10219          case "PKIX_ECDSA_P256_HMAC_SHA_256":
 10220              return PublicKeyDetails.PKIX_ECDSA_P256_HMAC_SHA_256;
 10221          case 5:
 10222          case "PKIX_ECDSA_P256_SHA_256":
 10223              return PublicKeyDetails.PKIX_ECDSA_P256_SHA_256;
 10224          case 12:
 10225          case "PKIX_ECDSA_P384_SHA_384":
 10226              return PublicKeyDetails.PKIX_ECDSA_P384_SHA_384;
 10227          case 13:
 10228          case "PKIX_ECDSA_P521_SHA_512":
 10229              return PublicKeyDetails.PKIX_ECDSA_P521_SHA_512;
 10230          case 7:
 10231          case "PKIX_ED25519":
 10232              return PublicKeyDetails.PKIX_ED25519;
 10233          case 8:
 10234          case "PKIX_ED25519_PH":
 10235              return PublicKeyDetails.PKIX_ED25519_PH;
 10236          case 14:
 10237          case "LMS_SHA256":
 10238              return PublicKeyDetails.LMS_SHA256;
 10239          case 15:
 10240          case "LMOTS_SHA256":
 10241              return PublicKeyDetails.LMOTS_SHA256;
 10242          default:
 10243              throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum PublicKeyDetails");
 10244      }
 10245  }
 10246  exports.publicKeyDetailsFromJSON = publicKeyDetailsFromJSON;
 10247  function publicKeyDetailsToJSON(object) {
 10248      switch (object) {
 10249          case PublicKeyDetails.PUBLIC_KEY_DETAILS_UNSPECIFIED:
 10250              return "PUBLIC_KEY_DETAILS_UNSPECIFIED";
 10251          case PublicKeyDetails.PKCS1_RSA_PKCS1V5:
 10252              return "PKCS1_RSA_PKCS1V5";
 10253          case PublicKeyDetails.PKCS1_RSA_PSS:
 10254              return "PKCS1_RSA_PSS";
 10255          case PublicKeyDetails.PKIX_RSA_PKCS1V5:
 10256              return "PKIX_RSA_PKCS1V5";
 10257          case PublicKeyDetails.PKIX_RSA_PSS:
 10258              return "PKIX_RSA_PSS";
 10259          case PublicKeyDetails.PKIX_RSA_PKCS1V15_2048_SHA256:
 10260              return "PKIX_RSA_PKCS1V15_2048_SHA256";
 10261          case PublicKeyDetails.PKIX_RSA_PKCS1V15_3072_SHA256:
 10262              return "PKIX_RSA_PKCS1V15_3072_SHA256";
 10263          case PublicKeyDetails.PKIX_RSA_PKCS1V15_4096_SHA256:
 10264              return "PKIX_RSA_PKCS1V15_4096_SHA256";
 10265          case PublicKeyDetails.PKIX_RSA_PSS_2048_SHA256:
 10266              return "PKIX_RSA_PSS_2048_SHA256";
 10267          case PublicKeyDetails.PKIX_RSA_PSS_3072_SHA256:
 10268              return "PKIX_RSA_PSS_3072_SHA256";
 10269          case PublicKeyDetails.PKIX_RSA_PSS_4096_SHA256:
 10270              return "PKIX_RSA_PSS_4096_SHA256";
 10271          case PublicKeyDetails.PKIX_ECDSA_P256_HMAC_SHA_256:
 10272              return "PKIX_ECDSA_P256_HMAC_SHA_256";
 10273          case PublicKeyDetails.PKIX_ECDSA_P256_SHA_256:
 10274              return "PKIX_ECDSA_P256_SHA_256";
 10275          case PublicKeyDetails.PKIX_ECDSA_P384_SHA_384:
 10276              return "PKIX_ECDSA_P384_SHA_384";
 10277          case PublicKeyDetails.PKIX_ECDSA_P521_SHA_512:
 10278              return "PKIX_ECDSA_P521_SHA_512";
 10279          case PublicKeyDetails.PKIX_ED25519:
 10280              return "PKIX_ED25519";
 10281          case PublicKeyDetails.PKIX_ED25519_PH:
 10282              return "PKIX_ED25519_PH";
 10283          case PublicKeyDetails.LMS_SHA256:
 10284              return "LMS_SHA256";
 10285          case PublicKeyDetails.LMOTS_SHA256:
 10286              return "LMOTS_SHA256";
 10287          default:
 10288              throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum PublicKeyDetails");
 10289      }
 10290  }
 10291  exports.publicKeyDetailsToJSON = publicKeyDetailsToJSON;
 10292  var SubjectAlternativeNameType;
 10293  (function (SubjectAlternativeNameType) {
 10294      SubjectAlternativeNameType[SubjectAlternativeNameType["SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED"] = 0] = "SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED";
 10295      SubjectAlternativeNameType[SubjectAlternativeNameType["EMAIL"] = 1] = "EMAIL";
 10296      SubjectAlternativeNameType[SubjectAlternativeNameType["URI"] = 2] = "URI";
 10297      /**
 10298       * OTHER_NAME - OID 1.3.6.1.4.1.57264.1.7
 10299       * See https://github.com/sigstore/fulcio/blob/main/docs/oid-info.md#1361415726417--othername-san
 10300       * for more details.
 10301       */
 10302      SubjectAlternativeNameType[SubjectAlternativeNameType["OTHER_NAME"] = 3] = "OTHER_NAME";
 10303  })(SubjectAlternativeNameType = exports.SubjectAlternativeNameType || (exports.SubjectAlternativeNameType = {}));
 10304  function subjectAlternativeNameTypeFromJSON(object) {
 10305      switch (object) {
 10306          case 0:
 10307          case "SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED":
 10308              return SubjectAlternativeNameType.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED;
 10309          case 1:
 10310          case "EMAIL":
 10311              return SubjectAlternativeNameType.EMAIL;
 10312          case 2:
 10313          case "URI":
 10314              return SubjectAlternativeNameType.URI;
 10315          case 3:
 10316          case "OTHER_NAME":
 10317              return SubjectAlternativeNameType.OTHER_NAME;
 10318          default:
 10319              throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum SubjectAlternativeNameType");
 10320      }
 10321  }
 10322  exports.subjectAlternativeNameTypeFromJSON = subjectAlternativeNameTypeFromJSON;
 10323  function subjectAlternativeNameTypeToJSON(object) {
 10324      switch (object) {
 10325          case SubjectAlternativeNameType.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED:
 10326              return "SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED";
 10327          case SubjectAlternativeNameType.EMAIL:
 10328              return "EMAIL";
 10329          case SubjectAlternativeNameType.URI:
 10330              return "URI";
 10331          case SubjectAlternativeNameType.OTHER_NAME:
 10332              return "OTHER_NAME";
 10333          default:
 10334              throw new tsProtoGlobalThis.Error("Unrecognized enum value " + object + " for enum SubjectAlternativeNameType");
 10335      }
 10336  }
 10337  exports.subjectAlternativeNameTypeToJSON = subjectAlternativeNameTypeToJSON;
 10338  function createBaseHashOutput() {
 10339      return { algorithm: 0, digest: Buffer.alloc(0) };
 10340  }
 10341  exports.HashOutput = {
 10342      fromJSON(object) {
 10343          return {
 10344              algorithm: isSet(object.algorithm) ? hashAlgorithmFromJSON(object.algorithm) : 0,
 10345              digest: isSet(object.digest) ? Buffer.from(bytesFromBase64(object.digest)) : Buffer.alloc(0),
 10346          };
 10347      },
 10348      toJSON(message) {
 10349          const obj = {};
 10350          message.algorithm !== undefined && (obj.algorithm = hashAlgorithmToJSON(message.algorithm));
 10351          message.digest !== undefined &&
 10352              (obj.digest = base64FromBytes(message.digest !== undefined ? message.digest : Buffer.alloc(0)));
 10353          return obj;
 10354      },
 10355  };
 10356  function createBaseMessageSignature() {
 10357      return { messageDigest: undefined, signature: Buffer.alloc(0) };
 10358  }
 10359  exports.MessageSignature = {
 10360      fromJSON(object) {
 10361          return {
 10362              messageDigest: isSet(object.messageDigest) ? exports.HashOutput.fromJSON(object.messageDigest) : undefined,
 10363              signature: isSet(object.signature) ? Buffer.from(bytesFromBase64(object.signature)) : Buffer.alloc(0),
 10364          };
 10365      },
 10366      toJSON(message) {
 10367          const obj = {};
 10368          message.messageDigest !== undefined &&
 10369              (obj.messageDigest = message.messageDigest ? exports.HashOutput.toJSON(message.messageDigest) : undefined);
 10370          message.signature !== undefined &&
 10371              (obj.signature = base64FromBytes(message.signature !== undefined ? message.signature : Buffer.alloc(0)));
 10372          return obj;
 10373      },
 10374  };
 10375  function createBaseLogId() {
 10376      return { keyId: Buffer.alloc(0) };
 10377  }
 10378  exports.LogId = {
 10379      fromJSON(object) {
 10380          return { keyId: isSet(object.keyId) ? Buffer.from(bytesFromBase64(object.keyId)) : Buffer.alloc(0) };
 10381      },
 10382      toJSON(message) {
 10383          const obj = {};
 10384          message.keyId !== undefined &&
 10385              (obj.keyId = base64FromBytes(message.keyId !== undefined ? message.keyId : Buffer.alloc(0)));
 10386          return obj;
 10387      },
 10388  };
 10389  function createBaseRFC3161SignedTimestamp() {
 10390      return { signedTimestamp: Buffer.alloc(0) };
 10391  }
 10392  exports.RFC3161SignedTimestamp = {
 10393      fromJSON(object) {
 10394          return {
 10395              signedTimestamp: isSet(object.signedTimestamp)
 10396                  ? Buffer.from(bytesFromBase64(object.signedTimestamp))
 10397                  : Buffer.alloc(0),
 10398          };
 10399      },
 10400      toJSON(message) {
 10401          const obj = {};
 10402          message.signedTimestamp !== undefined &&
 10403              (obj.signedTimestamp = base64FromBytes(message.signedTimestamp !== undefined ? message.signedTimestamp : Buffer.alloc(0)));
 10404          return obj;
 10405      },
 10406  };
 10407  function createBasePublicKey() {
 10408      return { rawBytes: undefined, keyDetails: 0, validFor: undefined };
 10409  }
 10410  exports.PublicKey = {
 10411      fromJSON(object) {
 10412          return {
 10413              rawBytes: isSet(object.rawBytes) ? Buffer.from(bytesFromBase64(object.rawBytes)) : undefined,
 10414              keyDetails: isSet(object.keyDetails) ? publicKeyDetailsFromJSON(object.keyDetails) : 0,
 10415              validFor: isSet(object.validFor) ? exports.TimeRange.fromJSON(object.validFor) : undefined,
 10416          };
 10417      },
 10418      toJSON(message) {
 10419          const obj = {};
 10420          message.rawBytes !== undefined &&
 10421              (obj.rawBytes = message.rawBytes !== undefined ? base64FromBytes(message.rawBytes) : undefined);
 10422          message.keyDetails !== undefined && (obj.keyDetails = publicKeyDetailsToJSON(message.keyDetails));
 10423          message.validFor !== undefined &&
 10424              (obj.validFor = message.validFor ? exports.TimeRange.toJSON(message.validFor) : undefined);
 10425          return obj;
 10426      },
 10427  };
 10428  function createBasePublicKeyIdentifier() {
 10429      return { hint: "" };
 10430  }
 10431  exports.PublicKeyIdentifier = {
 10432      fromJSON(object) {
 10433          return { hint: isSet(object.hint) ? String(object.hint) : "" };
 10434      },
 10435      toJSON(message) {
 10436          const obj = {};
 10437          message.hint !== undefined && (obj.hint = message.hint);
 10438          return obj;
 10439      },
 10440  };
 10441  function createBaseObjectIdentifier() {
 10442      return { id: [] };
 10443  }
 10444  exports.ObjectIdentifier = {
 10445      fromJSON(object) {
 10446          return { id: Array.isArray(object?.id) ? object.id.map((e) => Number(e)) : [] };
 10447      },
 10448      toJSON(message) {
 10449          const obj = {};
 10450          if (message.id) {
 10451              obj.id = message.id.map((e) => Math.round(e));
 10452          }
 10453          else {
 10454              obj.id = [];
 10455          }
 10456          return obj;
 10457      },
 10458  };
 10459  function createBaseObjectIdentifierValuePair() {
 10460      return { oid: undefined, value: Buffer.alloc(0) };
 10461  }
 10462  exports.ObjectIdentifierValuePair = {
 10463      fromJSON(object) {
 10464          return {
 10465              oid: isSet(object.oid) ? exports.ObjectIdentifier.fromJSON(object.oid) : undefined,
 10466              value: isSet(object.value) ? Buffer.from(bytesFromBase64(object.value)) : Buffer.alloc(0),
 10467          };
 10468      },
 10469      toJSON(message) {
 10470          const obj = {};
 10471          message.oid !== undefined && (obj.oid = message.oid ? exports.ObjectIdentifier.toJSON(message.oid) : undefined);
 10472          message.value !== undefined &&
 10473              (obj.value = base64FromBytes(message.value !== undefined ? message.value : Buffer.alloc(0)));
 10474          return obj;
 10475      },
 10476  };
 10477  function createBaseDistinguishedName() {
 10478      return { organization: "", commonName: "" };
 10479  }
 10480  exports.DistinguishedName = {
 10481      fromJSON(object) {
 10482          return {
 10483              organization: isSet(object.organization) ? String(object.organization) : "",
 10484              commonName: isSet(object.commonName) ? String(object.commonName) : "",
 10485          };
 10486      },
 10487      toJSON(message) {
 10488          const obj = {};
 10489          message.organization !== undefined && (obj.organization = message.organization);
 10490          message.commonName !== undefined && (obj.commonName = message.commonName);
 10491          return obj;
 10492      },
 10493  };
 10494  function createBaseX509Certificate() {
 10495      return { rawBytes: Buffer.alloc(0) };
 10496  }
 10497  exports.X509Certificate = {
 10498      fromJSON(object) {
 10499          return { rawBytes: isSet(object.rawBytes) ? Buffer.from(bytesFromBase64(object.rawBytes)) : Buffer.alloc(0) };
 10500      },
 10501      toJSON(message) {
 10502          const obj = {};
 10503          message.rawBytes !== undefined &&
 10504              (obj.rawBytes = base64FromBytes(message.rawBytes !== undefined ? message.rawBytes : Buffer.alloc(0)));
 10505          return obj;
 10506      },
 10507  };
 10508  function createBaseSubjectAlternativeName() {
 10509      return { type: 0, identity: undefined };
 10510  }
 10511  exports.SubjectAlternativeName = {
 10512      fromJSON(object) {
 10513          return {
 10514              type: isSet(object.type) ? subjectAlternativeNameTypeFromJSON(object.type) : 0,
 10515              identity: isSet(object.regexp)
 10516                  ? { $case: "regexp", regexp: String(object.regexp) }
 10517                  : isSet(object.value)
 10518                      ? { $case: "value", value: String(object.value) }
 10519                      : undefined,
 10520          };
 10521      },
 10522      toJSON(message) {
 10523          const obj = {};
 10524          message.type !== undefined && (obj.type = subjectAlternativeNameTypeToJSON(message.type));
 10525          message.identity?.$case === "regexp" && (obj.regexp = message.identity?.regexp);
 10526          message.identity?.$case === "value" && (obj.value = message.identity?.value);
 10527          return obj;
 10528      },
 10529  };
 10530  function createBaseX509CertificateChain() {
 10531      return { certificates: [] };
 10532  }
 10533  exports.X509CertificateChain = {
 10534      fromJSON(object) {
 10535          return {
 10536              certificates: Array.isArray(object?.certificates)
 10537                  ? object.certificates.map((e) => exports.X509Certificate.fromJSON(e))
 10538                  : [],
 10539          };
 10540      },
 10541      toJSON(message) {
 10542          const obj = {};
 10543          if (message.certificates) {
 10544              obj.certificates = message.certificates.map((e) => e ? exports.X509Certificate.toJSON(e) : undefined);
 10545          }
 10546          else {
 10547              obj.certificates = [];
 10548          }
 10549          return obj;
 10550      },
 10551  };
 10552  function createBaseTimeRange() {
 10553      return { start: undefined, end: undefined };
 10554  }
 10555  exports.TimeRange = {
 10556      fromJSON(object) {
 10557          return {
 10558              start: isSet(object.start) ? fromJsonTimestamp(object.start) : undefined,
 10559              end: isSet(object.end) ? fromJsonTimestamp(object.end) : undefined,
 10560          };
 10561      },
 10562      toJSON(message) {
 10563          const obj = {};
 10564          message.start !== undefined && (obj.start = message.start.toISOString());
 10565          message.end !== undefined && (obj.end = message.end.toISOString());
 10566          return obj;
 10567      },
 10568  };
 10569  var tsProtoGlobalThis = (() => {
 10570      if (typeof globalThis !== "undefined") {
 10571          return globalThis;
 10572      }
 10573      if (typeof self !== "undefined") {
 10574          return self;
 10575      }
 10576      if (typeof window !== "undefined") {
 10577          return window;
 10578      }
 10579      if (typeof global !== "undefined") {
 10580          return global;
 10581      }
 10582      throw "Unable to locate global object";
 10583  })();
 10584  function bytesFromBase64(b64) {
 10585      if (tsProtoGlobalThis.Buffer) {
 10586          return Uint8Array.from(tsProtoGlobalThis.Buffer.from(b64, "base64"));
 10587      }
 10588      else {
 10589          const bin = tsProtoGlobalThis.atob(b64);
 10590          const arr = new Uint8Array(bin.length);
 10591          for (let i = 0; i < bin.length; ++i) {
 10592              arr[i] = bin.charCodeAt(i);
 10593          }
 10594          return arr;
 10595      }
 10596  }
 10597  function base64FromBytes(arr) {
 10598      if (tsProtoGlobalThis.Buffer) {
 10599          return tsProtoGlobalThis.Buffer.from(arr).toString("base64");
 10600      }
 10601      else {
 10602          const bin = [];
 10603          arr.forEach((byte) => {
 10604              bin.push(String.fromCharCode(byte));
 10605          });
 10606          return tsProtoGlobalThis.btoa(bin.join(""));
 10607      }
 10608  }
 10609  function fromTimestamp(t) {
 10610      let millis = Number(t.seconds) * 1000;
 10611      millis += t.nanos / 1000000;
 10612      return new Date(millis);
 10613  }
 10614  function fromJsonTimestamp(o) {
 10615      if (o instanceof Date) {
 10616          return o;
 10617      }
 10618      else if (typeof o === "string") {
 10619          return new Date(o);
 10620      }
 10621      else {
 10622          return fromTimestamp(timestamp_1.Timestamp.fromJSON(o));
 10623      }
 10624  }
 10625  function isSet(value) {
 10626      return value !== null && value !== undefined;
 10627  }
 10628  
 10629  
 10630  /***/ }),
 10631  
 10632  /***/ 64951:
 10633  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 10634  
 10635  "use strict";
 10636  
 10637  Object.defineProperty(exports, "__esModule", ({ value: true }));
 10638  exports.TransparencyLogEntry = exports.InclusionPromise = exports.InclusionProof = exports.Checkpoint = exports.KindVersion = void 0;
 10639  /* eslint-disable */
 10640  const sigstore_common_1 = __nccwpck_require__(82193);
 10641  function createBaseKindVersion() {
 10642      return { kind: "", version: "" };
 10643  }
 10644  exports.KindVersion = {
 10645      fromJSON(object) {
 10646          return {
 10647              kind: isSet(object.kind) ? String(object.kind) : "",
 10648              version: isSet(object.version) ? String(object.version) : "",
 10649          };
 10650      },
 10651      toJSON(message) {
 10652          const obj = {};
 10653          message.kind !== undefined && (obj.kind = message.kind);
 10654          message.version !== undefined && (obj.version = message.version);
 10655          return obj;
 10656      },
 10657  };
 10658  function createBaseCheckpoint() {
 10659      return { envelope: "" };
 10660  }
 10661  exports.Checkpoint = {
 10662      fromJSON(object) {
 10663          return { envelope: isSet(object.envelope) ? String(object.envelope) : "" };
 10664      },
 10665      toJSON(message) {
 10666          const obj = {};
 10667          message.envelope !== undefined && (obj.envelope = message.envelope);
 10668          return obj;
 10669      },
 10670  };
 10671  function createBaseInclusionProof() {
 10672      return { logIndex: "0", rootHash: Buffer.alloc(0), treeSize: "0", hashes: [], checkpoint: undefined };
 10673  }
 10674  exports.InclusionProof = {
 10675      fromJSON(object) {
 10676          return {
 10677              logIndex: isSet(object.logIndex) ? String(object.logIndex) : "0",
 10678              rootHash: isSet(object.rootHash) ? Buffer.from(bytesFromBase64(object.rootHash)) : Buffer.alloc(0),
 10679              treeSize: isSet(object.treeSize) ? String(object.treeSize) : "0",
 10680              hashes: Array.isArray(object?.hashes) ? object.hashes.map((e) => Buffer.from(bytesFromBase64(e))) : [],
 10681              checkpoint: isSet(object.checkpoint) ? exports.Checkpoint.fromJSON(object.checkpoint) : undefined,
 10682          };
 10683      },
 10684      toJSON(message) {
 10685          const obj = {};
 10686          message.logIndex !== undefined && (obj.logIndex = message.logIndex);
 10687          message.rootHash !== undefined &&
 10688              (obj.rootHash = base64FromBytes(message.rootHash !== undefined ? message.rootHash : Buffer.alloc(0)));
 10689          message.treeSize !== undefined && (obj.treeSize = message.treeSize);
 10690          if (message.hashes) {
 10691              obj.hashes = message.hashes.map((e) => base64FromBytes(e !== undefined ? e : Buffer.alloc(0)));
 10692          }
 10693          else {
 10694              obj.hashes = [];
 10695          }
 10696          message.checkpoint !== undefined &&
 10697              (obj.checkpoint = message.checkpoint ? exports.Checkpoint.toJSON(message.checkpoint) : undefined);
 10698          return obj;
 10699      },
 10700  };
 10701  function createBaseInclusionPromise() {
 10702      return { signedEntryTimestamp: Buffer.alloc(0) };
 10703  }
 10704  exports.InclusionPromise = {
 10705      fromJSON(object) {
 10706          return {
 10707              signedEntryTimestamp: isSet(object.signedEntryTimestamp)
 10708                  ? Buffer.from(bytesFromBase64(object.signedEntryTimestamp))
 10709                  : Buffer.alloc(0),
 10710          };
 10711      },
 10712      toJSON(message) {
 10713          const obj = {};
 10714          message.signedEntryTimestamp !== undefined &&
 10715              (obj.signedEntryTimestamp = base64FromBytes(message.signedEntryTimestamp !== undefined ? message.signedEntryTimestamp : Buffer.alloc(0)));
 10716          return obj;
 10717      },
 10718  };
 10719  function createBaseTransparencyLogEntry() {
 10720      return {
 10721          logIndex: "0",
 10722          logId: undefined,
 10723          kindVersion: undefined,
 10724          integratedTime: "0",
 10725          inclusionPromise: undefined,
 10726          inclusionProof: undefined,
 10727          canonicalizedBody: Buffer.alloc(0),
 10728      };
 10729  }
 10730  exports.TransparencyLogEntry = {
 10731      fromJSON(object) {
 10732          return {
 10733              logIndex: isSet(object.logIndex) ? String(object.logIndex) : "0",
 10734              logId: isSet(object.logId) ? sigstore_common_1.LogId.fromJSON(object.logId) : undefined,
 10735              kindVersion: isSet(object.kindVersion) ? exports.KindVersion.fromJSON(object.kindVersion) : undefined,
 10736              integratedTime: isSet(object.integratedTime) ? String(object.integratedTime) : "0",
 10737              inclusionPromise: isSet(object.inclusionPromise) ? exports.InclusionPromise.fromJSON(object.inclusionPromise) : undefined,
 10738              inclusionProof: isSet(object.inclusionProof) ? exports.InclusionProof.fromJSON(object.inclusionProof) : undefined,
 10739              canonicalizedBody: isSet(object.canonicalizedBody)
 10740                  ? Buffer.from(bytesFromBase64(object.canonicalizedBody))
 10741                  : Buffer.alloc(0),
 10742          };
 10743      },
 10744      toJSON(message) {
 10745          const obj = {};
 10746          message.logIndex !== undefined && (obj.logIndex = message.logIndex);
 10747          message.logId !== undefined && (obj.logId = message.logId ? sigstore_common_1.LogId.toJSON(message.logId) : undefined);
 10748          message.kindVersion !== undefined &&
 10749              (obj.kindVersion = message.kindVersion ? exports.KindVersion.toJSON(message.kindVersion) : undefined);
 10750          message.integratedTime !== undefined && (obj.integratedTime = message.integratedTime);
 10751          message.inclusionPromise !== undefined &&
 10752              (obj.inclusionPromise = message.inclusionPromise ? exports.InclusionPromise.toJSON(message.inclusionPromise) : undefined);
 10753          message.inclusionProof !== undefined &&
 10754              (obj.inclusionProof = message.inclusionProof ? exports.InclusionProof.toJSON(message.inclusionProof) : undefined);
 10755          message.canonicalizedBody !== undefined &&
 10756              (obj.canonicalizedBody = base64FromBytes(message.canonicalizedBody !== undefined ? message.canonicalizedBody : Buffer.alloc(0)));
 10757          return obj;
 10758      },
 10759  };
 10760  var tsProtoGlobalThis = (() => {
 10761      if (typeof globalThis !== "undefined") {
 10762          return globalThis;
 10763      }
 10764      if (typeof self !== "undefined") {
 10765          return self;
 10766      }
 10767      if (typeof window !== "undefined") {
 10768          return window;
 10769      }
 10770      if (typeof global !== "undefined") {
 10771          return global;
 10772      }
 10773      throw "Unable to locate global object";
 10774  })();
 10775  function bytesFromBase64(b64) {
 10776      if (tsProtoGlobalThis.Buffer) {
 10777          return Uint8Array.from(tsProtoGlobalThis.Buffer.from(b64, "base64"));
 10778      }
 10779      else {
 10780          const bin = tsProtoGlobalThis.atob(b64);
 10781          const arr = new Uint8Array(bin.length);
 10782          for (let i = 0; i < bin.length; ++i) {
 10783              arr[i] = bin.charCodeAt(i);
 10784          }
 10785          return arr;
 10786      }
 10787  }
 10788  function base64FromBytes(arr) {
 10789      if (tsProtoGlobalThis.Buffer) {
 10790          return tsProtoGlobalThis.Buffer.from(arr).toString("base64");
 10791      }
 10792      else {
 10793          const bin = [];
 10794          arr.forEach((byte) => {
 10795              bin.push(String.fromCharCode(byte));
 10796          });
 10797          return tsProtoGlobalThis.btoa(bin.join(""));
 10798      }
 10799  }
 10800  function isSet(value) {
 10801      return value !== null && value !== undefined;
 10802  }
 10803  
 10804  
 10805  /***/ }),
 10806  
 10807  /***/ 64012:
 10808  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 10809  
 10810  "use strict";
 10811  
 10812  Object.defineProperty(exports, "__esModule", ({ value: true }));
 10813  exports.ClientTrustConfig = exports.SigningConfig = exports.TrustedRoot = exports.CertificateAuthority = exports.TransparencyLogInstance = void 0;
 10814  /* eslint-disable */
 10815  const sigstore_common_1 = __nccwpck_require__(82193);
 10816  function createBaseTransparencyLogInstance() {
 10817      return { baseUrl: "", hashAlgorithm: 0, publicKey: undefined, logId: undefined, checkpointKeyId: undefined };
 10818  }
 10819  exports.TransparencyLogInstance = {
 10820      fromJSON(object) {
 10821          return {
 10822              baseUrl: isSet(object.baseUrl) ? String(object.baseUrl) : "",
 10823              hashAlgorithm: isSet(object.hashAlgorithm) ? (0, sigstore_common_1.hashAlgorithmFromJSON)(object.hashAlgorithm) : 0,
 10824              publicKey: isSet(object.publicKey) ? sigstore_common_1.PublicKey.fromJSON(object.publicKey) : undefined,
 10825              logId: isSet(object.logId) ? sigstore_common_1.LogId.fromJSON(object.logId) : undefined,
 10826              checkpointKeyId: isSet(object.checkpointKeyId) ? sigstore_common_1.LogId.fromJSON(object.checkpointKeyId) : undefined,
 10827          };
 10828      },
 10829      toJSON(message) {
 10830          const obj = {};
 10831          message.baseUrl !== undefined && (obj.baseUrl = message.baseUrl);
 10832          message.hashAlgorithm !== undefined && (obj.hashAlgorithm = (0, sigstore_common_1.hashAlgorithmToJSON)(message.hashAlgorithm));
 10833          message.publicKey !== undefined &&
 10834              (obj.publicKey = message.publicKey ? sigstore_common_1.PublicKey.toJSON(message.publicKey) : undefined);
 10835          message.logId !== undefined && (obj.logId = message.logId ? sigstore_common_1.LogId.toJSON(message.logId) : undefined);
 10836          message.checkpointKeyId !== undefined &&
 10837              (obj.checkpointKeyId = message.checkpointKeyId ? sigstore_common_1.LogId.toJSON(message.checkpointKeyId) : undefined);
 10838          return obj;
 10839      },
 10840  };
 10841  function createBaseCertificateAuthority() {
 10842      return { subject: undefined, uri: "", certChain: undefined, validFor: undefined };
 10843  }
 10844  exports.CertificateAuthority = {
 10845      fromJSON(object) {
 10846          return {
 10847              subject: isSet(object.subject) ? sigstore_common_1.DistinguishedName.fromJSON(object.subject) : undefined,
 10848              uri: isSet(object.uri) ? String(object.uri) : "",
 10849              certChain: isSet(object.certChain) ? sigstore_common_1.X509CertificateChain.fromJSON(object.certChain) : undefined,
 10850              validFor: isSet(object.validFor) ? sigstore_common_1.TimeRange.fromJSON(object.validFor) : undefined,
 10851          };
 10852      },
 10853      toJSON(message) {
 10854          const obj = {};
 10855          message.subject !== undefined &&
 10856              (obj.subject = message.subject ? sigstore_common_1.DistinguishedName.toJSON(message.subject) : undefined);
 10857          message.uri !== undefined && (obj.uri = message.uri);
 10858          message.certChain !== undefined &&
 10859              (obj.certChain = message.certChain ? sigstore_common_1.X509CertificateChain.toJSON(message.certChain) : undefined);
 10860          message.validFor !== undefined &&
 10861              (obj.validFor = message.validFor ? sigstore_common_1.TimeRange.toJSON(message.validFor) : undefined);
 10862          return obj;
 10863      },
 10864  };
 10865  function createBaseTrustedRoot() {
 10866      return { mediaType: "", tlogs: [], certificateAuthorities: [], ctlogs: [], timestampAuthorities: [] };
 10867  }
 10868  exports.TrustedRoot = {
 10869      fromJSON(object) {
 10870          return {
 10871              mediaType: isSet(object.mediaType) ? String(object.mediaType) : "",
 10872              tlogs: Array.isArray(object?.tlogs) ? object.tlogs.map((e) => exports.TransparencyLogInstance.fromJSON(e)) : [],
 10873              certificateAuthorities: Array.isArray(object?.certificateAuthorities)
 10874                  ? object.certificateAuthorities.map((e) => exports.CertificateAuthority.fromJSON(e))
 10875                  : [],
 10876              ctlogs: Array.isArray(object?.ctlogs)
 10877                  ? object.ctlogs.map((e) => exports.TransparencyLogInstance.fromJSON(e))
 10878                  : [],
 10879              timestampAuthorities: Array.isArray(object?.timestampAuthorities)
 10880                  ? object.timestampAuthorities.map((e) => exports.CertificateAuthority.fromJSON(e))
 10881                  : [],
 10882          };
 10883      },
 10884      toJSON(message) {
 10885          const obj = {};
 10886          message.mediaType !== undefined && (obj.mediaType = message.mediaType);
 10887          if (message.tlogs) {
 10888              obj.tlogs = message.tlogs.map((e) => e ? exports.TransparencyLogInstance.toJSON(e) : undefined);
 10889          }
 10890          else {
 10891              obj.tlogs = [];
 10892          }
 10893          if (message.certificateAuthorities) {
 10894              obj.certificateAuthorities = message.certificateAuthorities.map((e) => e ? exports.CertificateAuthority.toJSON(e) : undefined);
 10895          }
 10896          else {
 10897              obj.certificateAuthorities = [];
 10898          }
 10899          if (message.ctlogs) {
 10900              obj.ctlogs = message.ctlogs.map((e) => e ? exports.TransparencyLogInstance.toJSON(e) : undefined);
 10901          }
 10902          else {
 10903              obj.ctlogs = [];
 10904          }
 10905          if (message.timestampAuthorities) {
 10906              obj.timestampAuthorities = message.timestampAuthorities.map((e) => e ? exports.CertificateAuthority.toJSON(e) : undefined);
 10907          }
 10908          else {
 10909              obj.timestampAuthorities = [];
 10910          }
 10911          return obj;
 10912      },
 10913  };
 10914  function createBaseSigningConfig() {
 10915      return { caUrl: "", oidcUrl: "", tlogUrls: [], tsaUrls: [] };
 10916  }
 10917  exports.SigningConfig = {
 10918      fromJSON(object) {
 10919          return {
 10920              caUrl: isSet(object.caUrl) ? String(object.caUrl) : "",
 10921              oidcUrl: isSet(object.oidcUrl) ? String(object.oidcUrl) : "",
 10922              tlogUrls: Array.isArray(object?.tlogUrls) ? object.tlogUrls.map((e) => String(e)) : [],
 10923              tsaUrls: Array.isArray(object?.tsaUrls) ? object.tsaUrls.map((e) => String(e)) : [],
 10924          };
 10925      },
 10926      toJSON(message) {
 10927          const obj = {};
 10928          message.caUrl !== undefined && (obj.caUrl = message.caUrl);
 10929          message.oidcUrl !== undefined && (obj.oidcUrl = message.oidcUrl);
 10930          if (message.tlogUrls) {
 10931              obj.tlogUrls = message.tlogUrls.map((e) => e);
 10932          }
 10933          else {
 10934              obj.tlogUrls = [];
 10935          }
 10936          if (message.tsaUrls) {
 10937              obj.tsaUrls = message.tsaUrls.map((e) => e);
 10938          }
 10939          else {
 10940              obj.tsaUrls = [];
 10941          }
 10942          return obj;
 10943      },
 10944  };
 10945  function createBaseClientTrustConfig() {
 10946      return { mediaType: "", trustedRoot: undefined, signingConfig: undefined };
 10947  }
 10948  exports.ClientTrustConfig = {
 10949      fromJSON(object) {
 10950          return {
 10951              mediaType: isSet(object.mediaType) ? String(object.mediaType) : "",
 10952              trustedRoot: isSet(object.trustedRoot) ? exports.TrustedRoot.fromJSON(object.trustedRoot) : undefined,
 10953              signingConfig: isSet(object.signingConfig) ? exports.SigningConfig.fromJSON(object.signingConfig) : undefined,
 10954          };
 10955      },
 10956      toJSON(message) {
 10957          const obj = {};
 10958          message.mediaType !== undefined && (obj.mediaType = message.mediaType);
 10959          message.trustedRoot !== undefined &&
 10960              (obj.trustedRoot = message.trustedRoot ? exports.TrustedRoot.toJSON(message.trustedRoot) : undefined);
 10961          message.signingConfig !== undefined &&
 10962              (obj.signingConfig = message.signingConfig ? exports.SigningConfig.toJSON(message.signingConfig) : undefined);
 10963          return obj;
 10964      },
 10965  };
 10966  function isSet(value) {
 10967      return value !== null && value !== undefined;
 10968  }
 10969  
 10970  
 10971  /***/ }),
 10972  
 10973  /***/ 79980:
 10974  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 10975  
 10976  "use strict";
 10977  
 10978  Object.defineProperty(exports, "__esModule", ({ value: true }));
 10979  exports.Input = exports.Artifact = exports.ArtifactVerificationOptions_ObserverTimestampOptions = exports.ArtifactVerificationOptions_TlogIntegratedTimestampOptions = exports.ArtifactVerificationOptions_TimestampAuthorityOptions = exports.ArtifactVerificationOptions_CtlogOptions = exports.ArtifactVerificationOptions_TlogOptions = exports.ArtifactVerificationOptions = exports.PublicKeyIdentities = exports.CertificateIdentities = exports.CertificateIdentity = void 0;
 10980  /* eslint-disable */
 10981  const sigstore_bundle_1 = __nccwpck_require__(28293);
 10982  const sigstore_common_1 = __nccwpck_require__(82193);
 10983  const sigstore_trustroot_1 = __nccwpck_require__(64012);
 10984  function createBaseCertificateIdentity() {
 10985      return { issuer: "", san: undefined, oids: [] };
 10986  }
 10987  exports.CertificateIdentity = {
 10988      fromJSON(object) {
 10989          return {
 10990              issuer: isSet(object.issuer) ? String(object.issuer) : "",
 10991              san: isSet(object.san) ? sigstore_common_1.SubjectAlternativeName.fromJSON(object.san) : undefined,
 10992              oids: Array.isArray(object?.oids) ? object.oids.map((e) => sigstore_common_1.ObjectIdentifierValuePair.fromJSON(e)) : [],
 10993          };
 10994      },
 10995      toJSON(message) {
 10996          const obj = {};
 10997          message.issuer !== undefined && (obj.issuer = message.issuer);
 10998          message.san !== undefined && (obj.san = message.san ? sigstore_common_1.SubjectAlternativeName.toJSON(message.san) : undefined);
 10999          if (message.oids) {
 11000              obj.oids = message.oids.map((e) => e ? sigstore_common_1.ObjectIdentifierValuePair.toJSON(e) : undefined);
 11001          }
 11002          else {
 11003              obj.oids = [];
 11004          }
 11005          return obj;
 11006      },
 11007  };
 11008  function createBaseCertificateIdentities() {
 11009      return { identities: [] };
 11010  }
 11011  exports.CertificateIdentities = {
 11012      fromJSON(object) {
 11013          return {
 11014              identities: Array.isArray(object?.identities)
 11015                  ? object.identities.map((e) => exports.CertificateIdentity.fromJSON(e))
 11016                  : [],
 11017          };
 11018      },
 11019      toJSON(message) {
 11020          const obj = {};
 11021          if (message.identities) {
 11022              obj.identities = message.identities.map((e) => e ? exports.CertificateIdentity.toJSON(e) : undefined);
 11023          }
 11024          else {
 11025              obj.identities = [];
 11026          }
 11027          return obj;
 11028      },
 11029  };
 11030  function createBasePublicKeyIdentities() {
 11031      return { publicKeys: [] };
 11032  }
 11033  exports.PublicKeyIdentities = {
 11034      fromJSON(object) {
 11035          return {
 11036              publicKeys: Array.isArray(object?.publicKeys) ? object.publicKeys.map((e) => sigstore_common_1.PublicKey.fromJSON(e)) : [],
 11037          };
 11038      },
 11039      toJSON(message) {
 11040          const obj = {};
 11041          if (message.publicKeys) {
 11042              obj.publicKeys = message.publicKeys.map((e) => e ? sigstore_common_1.PublicKey.toJSON(e) : undefined);
 11043          }
 11044          else {
 11045              obj.publicKeys = [];
 11046          }
 11047          return obj;
 11048      },
 11049  };
 11050  function createBaseArtifactVerificationOptions() {
 11051      return {
 11052          signers: undefined,
 11053          tlogOptions: undefined,
 11054          ctlogOptions: undefined,
 11055          tsaOptions: undefined,
 11056          integratedTsOptions: undefined,
 11057          observerOptions: undefined,
 11058      };
 11059  }
 11060  exports.ArtifactVerificationOptions = {
 11061      fromJSON(object) {
 11062          return {
 11063              signers: isSet(object.certificateIdentities)
 11064                  ? {
 11065                      $case: "certificateIdentities",
 11066                      certificateIdentities: exports.CertificateIdentities.fromJSON(object.certificateIdentities),
 11067                  }
 11068                  : isSet(object.publicKeys)
 11069                      ? { $case: "publicKeys", publicKeys: exports.PublicKeyIdentities.fromJSON(object.publicKeys) }
 11070                      : undefined,
 11071              tlogOptions: isSet(object.tlogOptions)
 11072                  ? exports.ArtifactVerificationOptions_TlogOptions.fromJSON(object.tlogOptions)
 11073                  : undefined,
 11074              ctlogOptions: isSet(object.ctlogOptions)
 11075                  ? exports.ArtifactVerificationOptions_CtlogOptions.fromJSON(object.ctlogOptions)
 11076                  : undefined,
 11077              tsaOptions: isSet(object.tsaOptions)
 11078                  ? exports.ArtifactVerificationOptions_TimestampAuthorityOptions.fromJSON(object.tsaOptions)
 11079                  : undefined,
 11080              integratedTsOptions: isSet(object.integratedTsOptions)
 11081                  ? exports.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.fromJSON(object.integratedTsOptions)
 11082                  : undefined,
 11083              observerOptions: isSet(object.observerOptions)
 11084                  ? exports.ArtifactVerificationOptions_ObserverTimestampOptions.fromJSON(object.observerOptions)
 11085                  : undefined,
 11086          };
 11087      },
 11088      toJSON(message) {
 11089          const obj = {};
 11090          message.signers?.$case === "certificateIdentities" &&
 11091              (obj.certificateIdentities = message.signers?.certificateIdentities
 11092                  ? exports.CertificateIdentities.toJSON(message.signers?.certificateIdentities)
 11093                  : undefined);
 11094          message.signers?.$case === "publicKeys" && (obj.publicKeys = message.signers?.publicKeys
 11095              ? exports.PublicKeyIdentities.toJSON(message.signers?.publicKeys)
 11096              : undefined);
 11097          message.tlogOptions !== undefined && (obj.tlogOptions = message.tlogOptions
 11098              ? exports.ArtifactVerificationOptions_TlogOptions.toJSON(message.tlogOptions)
 11099              : undefined);
 11100          message.ctlogOptions !== undefined && (obj.ctlogOptions = message.ctlogOptions
 11101              ? exports.ArtifactVerificationOptions_CtlogOptions.toJSON(message.ctlogOptions)
 11102              : undefined);
 11103          message.tsaOptions !== undefined && (obj.tsaOptions = message.tsaOptions
 11104              ? exports.ArtifactVerificationOptions_TimestampAuthorityOptions.toJSON(message.tsaOptions)
 11105              : undefined);
 11106          message.integratedTsOptions !== undefined && (obj.integratedTsOptions = message.integratedTsOptions
 11107              ? exports.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.toJSON(message.integratedTsOptions)
 11108              : undefined);
 11109          message.observerOptions !== undefined && (obj.observerOptions = message.observerOptions
 11110              ? exports.ArtifactVerificationOptions_ObserverTimestampOptions.toJSON(message.observerOptions)
 11111              : undefined);
 11112          return obj;
 11113      },
 11114  };
 11115  function createBaseArtifactVerificationOptions_TlogOptions() {
 11116      return { threshold: 0, performOnlineVerification: false, disable: false };
 11117  }
 11118  exports.ArtifactVerificationOptions_TlogOptions = {
 11119      fromJSON(object) {
 11120          return {
 11121              threshold: isSet(object.threshold) ? Number(object.threshold) : 0,
 11122              performOnlineVerification: isSet(object.performOnlineVerification)
 11123                  ? Boolean(object.performOnlineVerification)
 11124                  : false,
 11125              disable: isSet(object.disable) ? Boolean(object.disable) : false,
 11126          };
 11127      },
 11128      toJSON(message) {
 11129          const obj = {};
 11130          message.threshold !== undefined && (obj.threshold = Math.round(message.threshold));
 11131          message.performOnlineVerification !== undefined &&
 11132              (obj.performOnlineVerification = message.performOnlineVerification);
 11133          message.disable !== undefined && (obj.disable = message.disable);
 11134          return obj;
 11135      },
 11136  };
 11137  function createBaseArtifactVerificationOptions_CtlogOptions() {
 11138      return { threshold: 0, disable: false };
 11139  }
 11140  exports.ArtifactVerificationOptions_CtlogOptions = {
 11141      fromJSON(object) {
 11142          return {
 11143              threshold: isSet(object.threshold) ? Number(object.threshold) : 0,
 11144              disable: isSet(object.disable) ? Boolean(object.disable) : false,
 11145          };
 11146      },
 11147      toJSON(message) {
 11148          const obj = {};
 11149          message.threshold !== undefined && (obj.threshold = Math.round(message.threshold));
 11150          message.disable !== undefined && (obj.disable = message.disable);
 11151          return obj;
 11152      },
 11153  };
 11154  function createBaseArtifactVerificationOptions_TimestampAuthorityOptions() {
 11155      return { threshold: 0, disable: false };
 11156  }
 11157  exports.ArtifactVerificationOptions_TimestampAuthorityOptions = {
 11158      fromJSON(object) {
 11159          return {
 11160              threshold: isSet(object.threshold) ? Number(object.threshold) : 0,
 11161              disable: isSet(object.disable) ? Boolean(object.disable) : false,
 11162          };
 11163      },
 11164      toJSON(message) {
 11165          const obj = {};
 11166          message.threshold !== undefined && (obj.threshold = Math.round(message.threshold));
 11167          message.disable !== undefined && (obj.disable = message.disable);
 11168          return obj;
 11169      },
 11170  };
 11171  function createBaseArtifactVerificationOptions_TlogIntegratedTimestampOptions() {
 11172      return { threshold: 0, disable: false };
 11173  }
 11174  exports.ArtifactVerificationOptions_TlogIntegratedTimestampOptions = {
 11175      fromJSON(object) {
 11176          return {
 11177              threshold: isSet(object.threshold) ? Number(object.threshold) : 0,
 11178              disable: isSet(object.disable) ? Boolean(object.disable) : false,
 11179          };
 11180      },
 11181      toJSON(message) {
 11182          const obj = {};
 11183          message.threshold !== undefined && (obj.threshold = Math.round(message.threshold));
 11184          message.disable !== undefined && (obj.disable = message.disable);
 11185          return obj;
 11186      },
 11187  };
 11188  function createBaseArtifactVerificationOptions_ObserverTimestampOptions() {
 11189      return { threshold: 0, disable: false };
 11190  }
 11191  exports.ArtifactVerificationOptions_ObserverTimestampOptions = {
 11192      fromJSON(object) {
 11193          return {
 11194              threshold: isSet(object.threshold) ? Number(object.threshold) : 0,
 11195              disable: isSet(object.disable) ? Boolean(object.disable) : false,
 11196          };
 11197      },
 11198      toJSON(message) {
 11199          const obj = {};
 11200          message.threshold !== undefined && (obj.threshold = Math.round(message.threshold));
 11201          message.disable !== undefined && (obj.disable = message.disable);
 11202          return obj;
 11203      },
 11204  };
 11205  function createBaseArtifact() {
 11206      return { data: undefined };
 11207  }
 11208  exports.Artifact = {
 11209      fromJSON(object) {
 11210          return {
 11211              data: isSet(object.artifactUri)
 11212                  ? { $case: "artifactUri", artifactUri: String(object.artifactUri) }
 11213                  : isSet(object.artifact)
 11214                      ? { $case: "artifact", artifact: Buffer.from(bytesFromBase64(object.artifact)) }
 11215                      : undefined,
 11216          };
 11217      },
 11218      toJSON(message) {
 11219          const obj = {};
 11220          message.data?.$case === "artifactUri" && (obj.artifactUri = message.data?.artifactUri);
 11221          message.data?.$case === "artifact" &&
 11222              (obj.artifact = message.data?.artifact !== undefined ? base64FromBytes(message.data?.artifact) : undefined);
 11223          return obj;
 11224      },
 11225  };
 11226  function createBaseInput() {
 11227      return {
 11228          artifactTrustRoot: undefined,
 11229          artifactVerificationOptions: undefined,
 11230          bundle: undefined,
 11231          artifact: undefined,
 11232      };
 11233  }
 11234  exports.Input = {
 11235      fromJSON(object) {
 11236          return {
 11237              artifactTrustRoot: isSet(object.artifactTrustRoot) ? sigstore_trustroot_1.TrustedRoot.fromJSON(object.artifactTrustRoot) : undefined,
 11238              artifactVerificationOptions: isSet(object.artifactVerificationOptions)
 11239                  ? exports.ArtifactVerificationOptions.fromJSON(object.artifactVerificationOptions)
 11240                  : undefined,
 11241              bundle: isSet(object.bundle) ? sigstore_bundle_1.Bundle.fromJSON(object.bundle) : undefined,
 11242              artifact: isSet(object.artifact) ? exports.Artifact.fromJSON(object.artifact) : undefined,
 11243          };
 11244      },
 11245      toJSON(message) {
 11246          const obj = {};
 11247          message.artifactTrustRoot !== undefined &&
 11248              (obj.artifactTrustRoot = message.artifactTrustRoot ? sigstore_trustroot_1.TrustedRoot.toJSON(message.artifactTrustRoot) : undefined);
 11249          message.artifactVerificationOptions !== undefined &&
 11250              (obj.artifactVerificationOptions = message.artifactVerificationOptions
 11251                  ? exports.ArtifactVerificationOptions.toJSON(message.artifactVerificationOptions)
 11252                  : undefined);
 11253          message.bundle !== undefined && (obj.bundle = message.bundle ? sigstore_bundle_1.Bundle.toJSON(message.bundle) : undefined);
 11254          message.artifact !== undefined && (obj.artifact = message.artifact ? exports.Artifact.toJSON(message.artifact) : undefined);
 11255          return obj;
 11256      },
 11257  };
 11258  var tsProtoGlobalThis = (() => {
 11259      if (typeof globalThis !== "undefined") {
 11260          return globalThis;
 11261      }
 11262      if (typeof self !== "undefined") {
 11263          return self;
 11264      }
 11265      if (typeof window !== "undefined") {
 11266          return window;
 11267      }
 11268      if (typeof global !== "undefined") {
 11269          return global;
 11270      }
 11271      throw "Unable to locate global object";
 11272  })();
 11273  function bytesFromBase64(b64) {
 11274      if (tsProtoGlobalThis.Buffer) {
 11275          return Uint8Array.from(tsProtoGlobalThis.Buffer.from(b64, "base64"));
 11276      }
 11277      else {
 11278          const bin = tsProtoGlobalThis.atob(b64);
 11279          const arr = new Uint8Array(bin.length);
 11280          for (let i = 0; i < bin.length; ++i) {
 11281              arr[i] = bin.charCodeAt(i);
 11282          }
 11283          return arr;
 11284      }
 11285  }
 11286  function base64FromBytes(arr) {
 11287      if (tsProtoGlobalThis.Buffer) {
 11288          return tsProtoGlobalThis.Buffer.from(arr).toString("base64");
 11289      }
 11290      else {
 11291          const bin = [];
 11292          arr.forEach((byte) => {
 11293              bin.push(String.fromCharCode(byte));
 11294          });
 11295          return tsProtoGlobalThis.btoa(bin.join(""));
 11296      }
 11297  }
 11298  function isSet(value) {
 11299      return value !== null && value !== undefined;
 11300  }
 11301  
 11302  
 11303  /***/ }),
 11304  
 11305  /***/ 60530:
 11306  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 11307  
 11308  "use strict";
 11309  
 11310  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 11311      if (k2 === undefined) k2 = k;
 11312      var desc = Object.getOwnPropertyDescriptor(m, k);
 11313      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 11314        desc = { enumerable: true, get: function() { return m[k]; } };
 11315      }
 11316      Object.defineProperty(o, k2, desc);
 11317  }) : (function(o, m, k, k2) {
 11318      if (k2 === undefined) k2 = k;
 11319      o[k2] = m[k];
 11320  }));
 11321  var __exportStar = (this && this.__exportStar) || function(m, exports) {
 11322      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
 11323  };
 11324  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11325  /*
 11326  Copyright 2023 The Sigstore Authors.
 11327  
 11328  Licensed under the Apache License, Version 2.0 (the "License");
 11329  you may not use this file except in compliance with the License.
 11330  You may obtain a copy of the License at
 11331  
 11332      http://www.apache.org/licenses/LICENSE-2.0
 11333  
 11334  Unless required by applicable law or agreed to in writing, software
 11335  distributed under the License is distributed on an "AS IS" BASIS,
 11336  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 11337  See the License for the specific language governing permissions and
 11338  limitations under the License.
 11339  */
 11340  __exportStar(__nccwpck_require__(70714), exports);
 11341  __exportStar(__nccwpck_require__(28293), exports);
 11342  __exportStar(__nccwpck_require__(82193), exports);
 11343  __exportStar(__nccwpck_require__(64951), exports);
 11344  __exportStar(__nccwpck_require__(64012), exports);
 11345  __exportStar(__nccwpck_require__(79980), exports);
 11346  
 11347  
 11348  /***/ }),
 11349  
 11350  /***/ 30005:
 11351  /***/ ((__unused_webpack_module, exports) => {
 11352  
 11353  "use strict";
 11354  
 11355  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11356  exports.BaseBundleBuilder = void 0;
 11357  // BaseBundleBuilder is a base class for BundleBuilder implementations. It
 11358  // provides a the basic wokflow for signing and witnessing an artifact.
 11359  // Subclasses must implement the `package` method to assemble a valid bundle
 11360  // with the generated signature and verification material.
 11361  class BaseBundleBuilder {
 11362      constructor(options) {
 11363          this.signer = options.signer;
 11364          this.witnesses = options.witnesses;
 11365      }
 11366      // Executes the signing/witnessing process for the given artifact.
 11367      async create(artifact) {
 11368          const signature = await this.prepare(artifact).then((blob) => this.signer.sign(blob));
 11369          const bundle = await this.package(artifact, signature);
 11370          // Invoke all of the witnesses in parallel
 11371          const verificationMaterials = await Promise.all(this.witnesses.map((witness) => witness.testify(bundle.content, publicKey(signature.key))));
 11372          // Collect the verification material from all of the witnesses
 11373          const tlogEntryList = [];
 11374          const timestampList = [];
 11375          verificationMaterials.forEach(({ tlogEntries, rfc3161Timestamps }) => {
 11376              tlogEntryList.push(...(tlogEntries ?? []));
 11377              timestampList.push(...(rfc3161Timestamps ?? []));
 11378          });
 11379          // Merge the collected verification material into the bundle
 11380          bundle.verificationMaterial.tlogEntries = tlogEntryList;
 11381          bundle.verificationMaterial.timestampVerificationData = {
 11382              rfc3161Timestamps: timestampList,
 11383          };
 11384          return bundle;
 11385      }
 11386      // Override this function to apply any pre-signing transformations to the
 11387      // artifact. The returned buffer will be signed by the signer. The default
 11388      // implementation simply returns the artifact data.
 11389      async prepare(artifact) {
 11390          return artifact.data;
 11391      }
 11392  }
 11393  exports.BaseBundleBuilder = BaseBundleBuilder;
 11394  // Extracts the public key from a KeyMaterial. Returns either the public key
 11395  // or the certificate, depending on the type of key material.
 11396  function publicKey(key) {
 11397      switch (key.$case) {
 11398          case 'publicKey':
 11399              return key.publicKey;
 11400          case 'x509Certificate':
 11401              return key.certificate;
 11402      }
 11403  }
 11404  
 11405  
 11406  /***/ }),
 11407  
 11408  /***/ 66947:
 11409  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 11410  
 11411  "use strict";
 11412  
 11413  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 11414      if (k2 === undefined) k2 = k;
 11415      var desc = Object.getOwnPropertyDescriptor(m, k);
 11416      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 11417        desc = { enumerable: true, get: function() { return m[k]; } };
 11418      }
 11419      Object.defineProperty(o, k2, desc);
 11420  }) : (function(o, m, k, k2) {
 11421      if (k2 === undefined) k2 = k;
 11422      o[k2] = m[k];
 11423  }));
 11424  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 11425      Object.defineProperty(o, "default", { enumerable: true, value: v });
 11426  }) : function(o, v) {
 11427      o["default"] = v;
 11428  });
 11429  var __importStar = (this && this.__importStar) || function (mod) {
 11430      if (mod && mod.__esModule) return mod;
 11431      var result = {};
 11432      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 11433      __setModuleDefault(result, mod);
 11434      return result;
 11435  };
 11436  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11437  exports.toDSSEBundle = exports.toMessageSignatureBundle = void 0;
 11438  /*
 11439  Copyright 2023 The Sigstore Authors.
 11440  
 11441  Licensed under the Apache License, Version 2.0 (the "License");
 11442  you may not use this file except in compliance with the License.
 11443  You may obtain a copy of the License at
 11444  
 11445      http://www.apache.org/licenses/LICENSE-2.0
 11446  
 11447  Unless required by applicable law or agreed to in writing, software
 11448  distributed under the License is distributed on an "AS IS" BASIS,
 11449  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 11450  See the License for the specific language governing permissions and
 11451  limitations under the License.
 11452  */
 11453  const sigstore = __importStar(__nccwpck_require__(29715));
 11454  const util_1 = __nccwpck_require__(90724);
 11455  // Helper functions for assembling the parts of a Sigstore bundle
 11456  // Message signature bundle - $case: 'messageSignature'
 11457  function toMessageSignatureBundle(artifact, signature) {
 11458      const digest = util_1.crypto.hash(artifact.data);
 11459      return sigstore.toMessageSignatureBundle({
 11460          digest,
 11461          signature: signature.signature,
 11462          certificate: signature.key.$case === 'x509Certificate'
 11463              ? util_1.pem.toDER(signature.key.certificate)
 11464              : undefined,
 11465          keyHint: signature.key.$case === 'publicKey' ? signature.key.hint : undefined,
 11466      });
 11467  }
 11468  exports.toMessageSignatureBundle = toMessageSignatureBundle;
 11469  // DSSE envelope bundle - $case: 'dsseEnvelope'
 11470  function toDSSEBundle(artifact, signature, singleCertificate) {
 11471      return sigstore.toDSSEBundle({
 11472          artifact: artifact.data,
 11473          artifactType: artifact.type,
 11474          signature: signature.signature,
 11475          certificate: signature.key.$case === 'x509Certificate'
 11476              ? util_1.pem.toDER(signature.key.certificate)
 11477              : undefined,
 11478          keyHint: signature.key.$case === 'publicKey' ? signature.key.hint : undefined,
 11479          singleCertificate,
 11480      });
 11481  }
 11482  exports.toDSSEBundle = toDSSEBundle;
 11483  
 11484  
 11485  /***/ }),
 11486  
 11487  /***/ 78791:
 11488  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 11489  
 11490  "use strict";
 11491  
 11492  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11493  exports.DSSEBundleBuilder = void 0;
 11494  /*
 11495  Copyright 2023 The Sigstore Authors.
 11496  
 11497  Licensed under the Apache License, Version 2.0 (the "License");
 11498  you may not use this file except in compliance with the License.
 11499  You may obtain a copy of the License at
 11500  
 11501      http://www.apache.org/licenses/LICENSE-2.0
 11502  
 11503  Unless required by applicable law or agreed to in writing, software
 11504  distributed under the License is distributed on an "AS IS" BASIS,
 11505  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 11506  See the License for the specific language governing permissions and
 11507  limitations under the License.
 11508  */
 11509  const util_1 = __nccwpck_require__(90724);
 11510  const base_1 = __nccwpck_require__(30005);
 11511  const bundle_1 = __nccwpck_require__(66947);
 11512  // BundleBuilder implementation for DSSE wrapped attestations
 11513  class DSSEBundleBuilder extends base_1.BaseBundleBuilder {
 11514      constructor(options) {
 11515          super(options);
 11516          this.singleCertificate = options.singleCertificate ?? false;
 11517      }
 11518      // DSSE requires the artifact to be pre-encoded with the payload type
 11519      // before the signature is generated.
 11520      async prepare(artifact) {
 11521          const a = artifactDefaults(artifact);
 11522          return util_1.dsse.preAuthEncoding(a.type, a.data);
 11523      }
 11524      // Packages the artifact and signature into a DSSE bundle
 11525      async package(artifact, signature) {
 11526          return (0, bundle_1.toDSSEBundle)(artifactDefaults(artifact), signature, this.singleCertificate);
 11527      }
 11528  }
 11529  exports.DSSEBundleBuilder = DSSEBundleBuilder;
 11530  // Defaults the artifact type to an empty string if not provided
 11531  function artifactDefaults(artifact) {
 11532      return {
 11533          ...artifact,
 11534          type: artifact.type ?? '',
 11535      };
 11536  }
 11537  
 11538  
 11539  /***/ }),
 11540  
 11541  /***/ 94929:
 11542  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 11543  
 11544  "use strict";
 11545  
 11546  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11547  exports.MessageSignatureBundleBuilder = exports.DSSEBundleBuilder = void 0;
 11548  var dsse_1 = __nccwpck_require__(78791);
 11549  Object.defineProperty(exports, "DSSEBundleBuilder", ({ enumerable: true, get: function () { return dsse_1.DSSEBundleBuilder; } }));
 11550  var message_1 = __nccwpck_require__(36258);
 11551  Object.defineProperty(exports, "MessageSignatureBundleBuilder", ({ enumerable: true, get: function () { return message_1.MessageSignatureBundleBuilder; } }));
 11552  
 11553  
 11554  /***/ }),
 11555  
 11556  /***/ 36258:
 11557  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 11558  
 11559  "use strict";
 11560  
 11561  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11562  exports.MessageSignatureBundleBuilder = void 0;
 11563  /*
 11564  Copyright 2023 The Sigstore Authors.
 11565  
 11566  Licensed under the Apache License, Version 2.0 (the "License");
 11567  you may not use this file except in compliance with the License.
 11568  You may obtain a copy of the License at
 11569  
 11570      http://www.apache.org/licenses/LICENSE-2.0
 11571  
 11572  Unless required by applicable law or agreed to in writing, software
 11573  distributed under the License is distributed on an "AS IS" BASIS,
 11574  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 11575  See the License for the specific language governing permissions and
 11576  limitations under the License.
 11577  */
 11578  const base_1 = __nccwpck_require__(30005);
 11579  const bundle_1 = __nccwpck_require__(66947);
 11580  // BundleBuilder implementation for raw message signatures
 11581  class MessageSignatureBundleBuilder extends base_1.BaseBundleBuilder {
 11582      constructor(options) {
 11583          super(options);
 11584      }
 11585      async package(artifact, signature) {
 11586          return (0, bundle_1.toMessageSignatureBundle)(artifact, signature);
 11587      }
 11588  }
 11589  exports.MessageSignatureBundleBuilder = MessageSignatureBundleBuilder;
 11590  
 11591  
 11592  /***/ }),
 11593  
 11594  /***/ 30532:
 11595  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 11596  
 11597  "use strict";
 11598  
 11599  /*
 11600  Copyright 2023 The Sigstore Authors.
 11601  
 11602  Licensed under the Apache License, Version 2.0 (the "License");
 11603  you may not use this file except in compliance with the License.
 11604  You may obtain a copy of the License at
 11605  
 11606      http://www.apache.org/licenses/LICENSE-2.0
 11607  
 11608  Unless required by applicable law or agreed to in writing, software
 11609  distributed under the License is distributed on an "AS IS" BASIS,
 11610  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 11611  See the License for the specific language governing permissions and
 11612  limitations under the License.
 11613  */
 11614  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11615  exports.internalError = exports.InternalError = void 0;
 11616  const error_1 = __nccwpck_require__(11294);
 11617  class InternalError extends Error {
 11618      constructor({ code, message, cause, }) {
 11619          super(message);
 11620          this.name = this.constructor.name;
 11621          this.cause = cause;
 11622          this.code = code;
 11623      }
 11624  }
 11625  exports.InternalError = InternalError;
 11626  function internalError(err, code, message) {
 11627      if (err instanceof error_1.HTTPError) {
 11628          message += ` - ${err.message}`;
 11629      }
 11630      throw new InternalError({
 11631          code: code,
 11632          message: message,
 11633          cause: err,
 11634      });
 11635  }
 11636  exports.internalError = internalError;
 11637  
 11638  
 11639  /***/ }),
 11640  
 11641  /***/ 11294:
 11642  /***/ ((__unused_webpack_module, exports) => {
 11643  
 11644  "use strict";
 11645  
 11646  /*
 11647  Copyright 2023 The Sigstore Authors.
 11648  
 11649  Licensed under the Apache License, Version 2.0 (the "License");
 11650  you may not use this file except in compliance with the License.
 11651  You may obtain a copy of the License at
 11652  
 11653      http://www.apache.org/licenses/LICENSE-2.0
 11654  
 11655  Unless required by applicable law or agreed to in writing, software
 11656  distributed under the License is distributed on an "AS IS" BASIS,
 11657  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 11658  See the License for the specific language governing permissions and
 11659  limitations under the License.
 11660  */
 11661  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11662  exports.HTTPError = void 0;
 11663  class HTTPError extends Error {
 11664      constructor({ status, message, location, }) {
 11665          super(`(${status}) ${message}`);
 11666          this.statusCode = status;
 11667          this.location = location;
 11668      }
 11669  }
 11670  exports.HTTPError = HTTPError;
 11671  
 11672  
 11673  /***/ }),
 11674  
 11675  /***/ 78509:
 11676  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 11677  
 11678  "use strict";
 11679  
 11680  var __importDefault = (this && this.__importDefault) || function (mod) {
 11681      return (mod && mod.__esModule) ? mod : { "default": mod };
 11682  };
 11683  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11684  exports.fetchWithRetry = void 0;
 11685  /*
 11686  Copyright 2023 The Sigstore Authors.
 11687  
 11688  Licensed under the Apache License, Version 2.0 (the "License");
 11689  you may not use this file except in compliance with the License.
 11690  You may obtain a copy of the License at
 11691  
 11692      http://www.apache.org/licenses/LICENSE-2.0
 11693  
 11694  Unless required by applicable law or agreed to in writing, software
 11695  distributed under the License is distributed on an "AS IS" BASIS,
 11696  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 11697  See the License for the specific language governing permissions and
 11698  limitations under the License.
 11699  */
 11700  const http2_1 = __nccwpck_require__(85158);
 11701  const make_fetch_happen_1 = __importDefault(__nccwpck_require__(9525));
 11702  const proc_log_1 = __nccwpck_require__(56528);
 11703  const promise_retry_1 = __importDefault(__nccwpck_require__(54742));
 11704  const util_1 = __nccwpck_require__(90724);
 11705  const error_1 = __nccwpck_require__(11294);
 11706  const { HTTP2_HEADER_LOCATION, HTTP2_HEADER_CONTENT_TYPE, HTTP2_HEADER_USER_AGENT, HTTP_STATUS_INTERNAL_SERVER_ERROR, HTTP_STATUS_TOO_MANY_REQUESTS, HTTP_STATUS_REQUEST_TIMEOUT, } = http2_1.constants;
 11707  async function fetchWithRetry(url, options) {
 11708      return (0, promise_retry_1.default)(async (retry, attemptNum) => {
 11709          const method = options.method || 'POST';
 11710          const headers = {
 11711              [HTTP2_HEADER_USER_AGENT]: util_1.ua.getUserAgent(),
 11712              ...options.headers,
 11713          };
 11714          const response = await (0, make_fetch_happen_1.default)(url, {
 11715              method,
 11716              headers,
 11717              body: options.body,
 11718              timeout: options.timeout,
 11719              retry: false, // We're handling retries ourselves
 11720          }).catch((reason) => {
 11721              proc_log_1.log.http('fetch', `${method} ${url} attempt ${attemptNum} failed with ${reason}`);
 11722              return retry(reason);
 11723          });
 11724          if (response.ok) {
 11725              return response;
 11726          }
 11727          else {
 11728              const error = await errorFromResponse(response);
 11729              proc_log_1.log.http('fetch', `${method} ${url} attempt ${attemptNum} failed with ${response.status}`);
 11730              if (retryable(response.status)) {
 11731                  return retry(error);
 11732              }
 11733              else {
 11734                  throw error;
 11735              }
 11736          }
 11737      }, retryOpts(options.retry));
 11738  }
 11739  exports.fetchWithRetry = fetchWithRetry;
 11740  // Translate a Response into an HTTPError instance. This will attempt to parse
 11741  // the response body for a message, but will default to the statusText if none
 11742  // is found.
 11743  const errorFromResponse = async (response) => {
 11744      let message = response.statusText;
 11745      const location = response.headers?.get(HTTP2_HEADER_LOCATION) || undefined;
 11746      const contentType = response.headers?.get(HTTP2_HEADER_CONTENT_TYPE);
 11747      // If response type is JSON, try to parse the body for a message
 11748      if (contentType?.includes('application/json')) {
 11749          try {
 11750              const body = await response.json();
 11751              message = body.message || message;
 11752          }
 11753          catch (e) {
 11754              // ignore
 11755          }
 11756      }
 11757      return new error_1.HTTPError({
 11758          status: response.status,
 11759          message: message,
 11760          location: location,
 11761      });
 11762  };
 11763  // Determine if a status code is retryable. This includes 5xx errors, 408, and
 11764  // 429.
 11765  const retryable = (status) => [HTTP_STATUS_REQUEST_TIMEOUT, HTTP_STATUS_TOO_MANY_REQUESTS].includes(status) || status >= HTTP_STATUS_INTERNAL_SERVER_ERROR;
 11766  // Normalize the retry options to the format expected by promise-retry
 11767  const retryOpts = (retry) => {
 11768      if (typeof retry === 'boolean') {
 11769          return { retries: retry ? 1 : 0 };
 11770      }
 11771      else if (typeof retry === 'number') {
 11772          return { retries: retry };
 11773      }
 11774      else {
 11775          return { retries: 0, ...retry };
 11776      }
 11777  };
 11778  
 11779  
 11780  /***/ }),
 11781  
 11782  /***/ 62960:
 11783  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 11784  
 11785  "use strict";
 11786  
 11787  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11788  exports.Fulcio = void 0;
 11789  /*
 11790  Copyright 2023 The Sigstore Authors.
 11791  
 11792  Licensed under the Apache License, Version 2.0 (the "License");
 11793  you may not use this file except in compliance with the License.
 11794  You may obtain a copy of the License at
 11795  
 11796      http://www.apache.org/licenses/LICENSE-2.0
 11797  
 11798  Unless required by applicable law or agreed to in writing, software
 11799  distributed under the License is distributed on an "AS IS" BASIS,
 11800  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 11801  See the License for the specific language governing permissions and
 11802  limitations under the License.
 11803  */
 11804  const fetch_1 = __nccwpck_require__(78509);
 11805  /**
 11806   * Fulcio API client.
 11807   */
 11808  class Fulcio {
 11809      constructor(options) {
 11810          this.options = options;
 11811      }
 11812      async createSigningCertificate(request) {
 11813          const { baseURL, retry, timeout } = this.options;
 11814          const url = `${baseURL}/api/v2/signingCert`;
 11815          const response = await (0, fetch_1.fetchWithRetry)(url, {
 11816              headers: {
 11817                  'Content-Type': 'application/json',
 11818              },
 11819              body: JSON.stringify(request),
 11820              timeout,
 11821              retry,
 11822          });
 11823          return response.json();
 11824      }
 11825  }
 11826  exports.Fulcio = Fulcio;
 11827  
 11828  
 11829  /***/ }),
 11830  
 11831  /***/ 56205:
 11832  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 11833  
 11834  "use strict";
 11835  
 11836  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11837  exports.Rekor = void 0;
 11838  /*
 11839  Copyright 2023 The Sigstore Authors.
 11840  
 11841  Licensed under the Apache License, Version 2.0 (the "License");
 11842  you may not use this file except in compliance with the License.
 11843  You may obtain a copy of the License at
 11844  
 11845      http://www.apache.org/licenses/LICENSE-2.0
 11846  
 11847  Unless required by applicable law or agreed to in writing, software
 11848  distributed under the License is distributed on an "AS IS" BASIS,
 11849  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 11850  See the License for the specific language governing permissions and
 11851  limitations under the License.
 11852  */
 11853  const fetch_1 = __nccwpck_require__(78509);
 11854  /**
 11855   * Rekor API client.
 11856   */
 11857  class Rekor {
 11858      constructor(options) {
 11859          this.options = options;
 11860      }
 11861      /**
 11862       * Create a new entry in the Rekor log.
 11863       * @param propsedEntry {ProposedEntry} Data to create a new entry
 11864       * @returns {Promise<Entry>} The created entry
 11865       */
 11866      async createEntry(propsedEntry) {
 11867          const { baseURL, timeout, retry } = this.options;
 11868          const url = `${baseURL}/api/v1/log/entries`;
 11869          const response = await (0, fetch_1.fetchWithRetry)(url, {
 11870              headers: {
 11871                  'Content-Type': 'application/json',
 11872                  Accept: 'application/json',
 11873              },
 11874              body: JSON.stringify(propsedEntry),
 11875              timeout,
 11876              retry,
 11877          });
 11878          const data = await response.json();
 11879          return entryFromResponse(data);
 11880      }
 11881      /**
 11882       * Get an entry from the Rekor log.
 11883       * @param uuid {string} The UUID of the entry to retrieve
 11884       * @returns {Promise<Entry>} The retrieved entry
 11885       */
 11886      async getEntry(uuid) {
 11887          const { baseURL, timeout, retry } = this.options;
 11888          const url = `${baseURL}/api/v1/log/entries/${uuid}`;
 11889          const response = await (0, fetch_1.fetchWithRetry)(url, {
 11890              method: 'GET',
 11891              headers: {
 11892                  Accept: 'application/json',
 11893              },
 11894              timeout,
 11895              retry,
 11896          });
 11897          const data = await response.json();
 11898          return entryFromResponse(data);
 11899      }
 11900  }
 11901  exports.Rekor = Rekor;
 11902  // Unpack the response from the Rekor API into a more convenient format.
 11903  function entryFromResponse(data) {
 11904      const entries = Object.entries(data);
 11905      if (entries.length != 1) {
 11906          throw new Error('Received multiple entries in Rekor response');
 11907      }
 11908      // Grab UUID and entry data from the response
 11909      const [uuid, entry] = entries[0];
 11910      return {
 11911          ...entry,
 11912          uuid,
 11913      };
 11914  }
 11915  
 11916  
 11917  /***/ }),
 11918  
 11919  /***/ 82759:
 11920  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 11921  
 11922  "use strict";
 11923  
 11924  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11925  exports.TimestampAuthority = void 0;
 11926  /*
 11927  Copyright 2023 The Sigstore Authors.
 11928  
 11929  Licensed under the Apache License, Version 2.0 (the "License");
 11930  you may not use this file except in compliance with the License.
 11931  You may obtain a copy of the License at
 11932  
 11933      http://www.apache.org/licenses/LICENSE-2.0
 11934  
 11935  Unless required by applicable law or agreed to in writing, software
 11936  distributed under the License is distributed on an "AS IS" BASIS,
 11937  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 11938  See the License for the specific language governing permissions and
 11939  limitations under the License.
 11940  */
 11941  const fetch_1 = __nccwpck_require__(78509);
 11942  class TimestampAuthority {
 11943      constructor(options) {
 11944          this.options = options;
 11945      }
 11946      async createTimestamp(request) {
 11947          const { baseURL, timeout, retry } = this.options;
 11948          const url = `${baseURL}/api/v1/timestamp`;
 11949          const response = await (0, fetch_1.fetchWithRetry)(url, {
 11950              headers: {
 11951                  'Content-Type': 'application/json',
 11952              },
 11953              body: JSON.stringify(request),
 11954              timeout,
 11955              retry,
 11956          });
 11957          return response.buffer();
 11958      }
 11959  }
 11960  exports.TimestampAuthority = TimestampAuthority;
 11961  
 11962  
 11963  /***/ }),
 11964  
 11965  /***/ 13110:
 11966  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 11967  
 11968  "use strict";
 11969  
 11970  var __importDefault = (this && this.__importDefault) || function (mod) {
 11971      return (mod && mod.__esModule) ? mod : { "default": mod };
 11972  };
 11973  Object.defineProperty(exports, "__esModule", ({ value: true }));
 11974  exports.CIContextProvider = void 0;
 11975  /*
 11976  Copyright 2023 The Sigstore Authors.
 11977  
 11978  Licensed under the Apache License, Version 2.0 (the "License");
 11979  you may not use this file except in compliance with the License.
 11980  You may obtain a copy of the License at
 11981  
 11982      http://www.apache.org/licenses/LICENSE-2.0
 11983  
 11984  Unless required by applicable law or agreed to in writing, software
 11985  distributed under the License is distributed on an "AS IS" BASIS,
 11986  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 11987  See the License for the specific language governing permissions and
 11988  limitations under the License.
 11989  */
 11990  const make_fetch_happen_1 = __importDefault(__nccwpck_require__(9525));
 11991  // Collection of all the CI-specific providers we have implemented
 11992  const providers = [getGHAToken, getEnv];
 11993  /**
 11994   * CIContextProvider is a composite identity provider which will iterate
 11995   * over all of the CI-specific providers and return the token from the first
 11996   * one that resolves.
 11997   */
 11998  class CIContextProvider {
 11999      /* istanbul ignore next */
 12000      constructor(audience = 'sigstore') {
 12001          this.audience = audience;
 12002      }
 12003      // Invoke all registered ProviderFuncs and return the value of whichever one
 12004      // resolves first.
 12005      async getToken() {
 12006          return Promise.any(providers.map((getToken) => getToken(this.audience))).catch(() => Promise.reject('CI: no tokens available'));
 12007      }
 12008  }
 12009  exports.CIContextProvider = CIContextProvider;
 12010  /**
 12011   * getGHAToken can retrieve an OIDC token when running in a GitHub Actions
 12012   * workflow
 12013   */
 12014  async function getGHAToken(audience) {
 12015      // Check to see if we're running in GitHub Actions
 12016      if (!process.env.ACTIONS_ID_TOKEN_REQUEST_URL ||
 12017          !process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN) {
 12018          return Promise.reject('no token available');
 12019      }
 12020      // Construct URL to request token w/ appropriate audience
 12021      const url = new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);
 12022      url.searchParams.append('audience', audience);
 12023      const response = await (0, make_fetch_happen_1.default)(url.href, {
 12024          retry: 2,
 12025          headers: {
 12026              Accept: 'application/json',
 12027              Authorization: `Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`,
 12028          },
 12029      });
 12030      return response.json().then((data) => data.value);
 12031  }
 12032  /**
 12033   * getEnv can retrieve an OIDC token from an environment variable.
 12034   * This matches the behavior of https://github.com/sigstore/cosign/tree/main/pkg/providers/envvar
 12035   */
 12036  async function getEnv() {
 12037      if (!process.env.SIGSTORE_ID_TOKEN) {
 12038          return Promise.reject('no token available');
 12039      }
 12040      return process.env.SIGSTORE_ID_TOKEN;
 12041  }
 12042  
 12043  
 12044  /***/ }),
 12045  
 12046  /***/ 44463:
 12047  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 12048  
 12049  "use strict";
 12050  
 12051  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12052  exports.CIContextProvider = void 0;
 12053  /*
 12054  Copyright 2023 The Sigstore Authors.
 12055  
 12056  Licensed under the Apache License, Version 2.0 (the "License");
 12057  you may not use this file except in compliance with the License.
 12058  You may obtain a copy of the License at
 12059  
 12060      http://www.apache.org/licenses/LICENSE-2.0
 12061  
 12062  Unless required by applicable law or agreed to in writing, software
 12063  distributed under the License is distributed on an "AS IS" BASIS,
 12064  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12065  See the License for the specific language governing permissions and
 12066  limitations under the License.
 12067  */
 12068  var ci_1 = __nccwpck_require__(13110);
 12069  Object.defineProperty(exports, "CIContextProvider", ({ enumerable: true, get: function () { return ci_1.CIContextProvider; } }));
 12070  
 12071  
 12072  /***/ }),
 12073  
 12074  /***/ 42071:
 12075  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 12076  
 12077  "use strict";
 12078  
 12079  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12080  exports.TSAWitness = exports.RekorWitness = exports.DEFAULT_REKOR_URL = exports.FulcioSigner = exports.DEFAULT_FULCIO_URL = exports.CIContextProvider = exports.InternalError = exports.MessageSignatureBundleBuilder = exports.DSSEBundleBuilder = void 0;
 12081  var bundler_1 = __nccwpck_require__(94929);
 12082  Object.defineProperty(exports, "DSSEBundleBuilder", ({ enumerable: true, get: function () { return bundler_1.DSSEBundleBuilder; } }));
 12083  Object.defineProperty(exports, "MessageSignatureBundleBuilder", ({ enumerable: true, get: function () { return bundler_1.MessageSignatureBundleBuilder; } }));
 12084  var error_1 = __nccwpck_require__(30532);
 12085  Object.defineProperty(exports, "InternalError", ({ enumerable: true, get: function () { return error_1.InternalError; } }));
 12086  var identity_1 = __nccwpck_require__(44463);
 12087  Object.defineProperty(exports, "CIContextProvider", ({ enumerable: true, get: function () { return identity_1.CIContextProvider; } }));
 12088  var signer_1 = __nccwpck_require__(17551);
 12089  Object.defineProperty(exports, "DEFAULT_FULCIO_URL", ({ enumerable: true, get: function () { return signer_1.DEFAULT_FULCIO_URL; } }));
 12090  Object.defineProperty(exports, "FulcioSigner", ({ enumerable: true, get: function () { return signer_1.FulcioSigner; } }));
 12091  var witness_1 = __nccwpck_require__(42170);
 12092  Object.defineProperty(exports, "DEFAULT_REKOR_URL", ({ enumerable: true, get: function () { return witness_1.DEFAULT_REKOR_URL; } }));
 12093  Object.defineProperty(exports, "RekorWitness", ({ enumerable: true, get: function () { return witness_1.RekorWitness; } }));
 12094  Object.defineProperty(exports, "TSAWitness", ({ enumerable: true, get: function () { return witness_1.TSAWitness; } }));
 12095  
 12096  
 12097  /***/ }),
 12098  
 12099  /***/ 90334:
 12100  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 12101  
 12102  "use strict";
 12103  
 12104  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12105  exports.CAClient = void 0;
 12106  /*
 12107  Copyright 2023 The Sigstore Authors.
 12108  
 12109  Licensed under the Apache License, Version 2.0 (the "License");
 12110  you may not use this file except in compliance with the License.
 12111  You may obtain a copy of the License at
 12112  
 12113      http://www.apache.org/licenses/LICENSE-2.0
 12114  
 12115  Unless required by applicable law or agreed to in writing, software
 12116  distributed under the License is distributed on an "AS IS" BASIS,
 12117  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12118  See the License for the specific language governing permissions and
 12119  limitations under the License.
 12120  */
 12121  const error_1 = __nccwpck_require__(30532);
 12122  const fulcio_1 = __nccwpck_require__(62960);
 12123  class CAClient {
 12124      constructor(options) {
 12125          this.fulcio = new fulcio_1.Fulcio({
 12126              baseURL: options.fulcioBaseURL,
 12127              retry: options.retry,
 12128              timeout: options.timeout,
 12129          });
 12130      }
 12131      async createSigningCertificate(identityToken, publicKey, challenge) {
 12132          const request = toCertificateRequest(identityToken, publicKey, challenge);
 12133          try {
 12134              const resp = await this.fulcio.createSigningCertificate(request);
 12135              // Account for the fact that the response may contain either a
 12136              // signedCertificateEmbeddedSct or a signedCertificateDetachedSct.
 12137              const cert = resp.signedCertificateEmbeddedSct
 12138                  ? resp.signedCertificateEmbeddedSct
 12139                  : resp.signedCertificateDetachedSct;
 12140              // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
 12141              return cert.chain.certificates;
 12142          }
 12143          catch (err) {
 12144              (0, error_1.internalError)(err, 'CA_CREATE_SIGNING_CERTIFICATE_ERROR', 'error creating signing certificate');
 12145          }
 12146      }
 12147  }
 12148  exports.CAClient = CAClient;
 12149  function toCertificateRequest(identityToken, publicKey, challenge) {
 12150      return {
 12151          credentials: {
 12152              oidcIdentityToken: identityToken,
 12153          },
 12154          publicKeyRequest: {
 12155              publicKey: {
 12156                  algorithm: 'ECDSA',
 12157                  content: publicKey,
 12158              },
 12159              proofOfPossession: challenge.toString('base64'),
 12160          },
 12161      };
 12162  }
 12163  
 12164  
 12165  /***/ }),
 12166  
 12167  /***/ 98489:
 12168  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 12169  
 12170  "use strict";
 12171  
 12172  var __importDefault = (this && this.__importDefault) || function (mod) {
 12173      return (mod && mod.__esModule) ? mod : { "default": mod };
 12174  };
 12175  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12176  exports.EphemeralSigner = void 0;
 12177  /*
 12178  Copyright 2023 The Sigstore Authors.
 12179  
 12180  Licensed under the Apache License, Version 2.0 (the "License");
 12181  you may not use this file except in compliance with the License.
 12182  You may obtain a copy of the License at
 12183  
 12184      http://www.apache.org/licenses/LICENSE-2.0
 12185  
 12186  Unless required by applicable law or agreed to in writing, software
 12187  distributed under the License is distributed on an "AS IS" BASIS,
 12188  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12189  See the License for the specific language governing permissions and
 12190  limitations under the License.
 12191  */
 12192  const crypto_1 = __importDefault(__nccwpck_require__(6113));
 12193  const EC_KEYPAIR_TYPE = 'ec';
 12194  const P256_CURVE = 'P-256';
 12195  // Signer implementation which uses an ephemeral keypair to sign artifacts.
 12196  // The private key lives only in memory and is tied to the lifetime of the
 12197  // EphemeralSigner instance.
 12198  class EphemeralSigner {
 12199      constructor() {
 12200          this.keypair = crypto_1.default.generateKeyPairSync(EC_KEYPAIR_TYPE, {
 12201              namedCurve: P256_CURVE,
 12202          });
 12203      }
 12204      async sign(data) {
 12205          const signature = crypto_1.default.sign(null, data, this.keypair.privateKey);
 12206          const publicKey = this.keypair.publicKey
 12207              .export({ format: 'pem', type: 'spki' })
 12208              .toString('ascii');
 12209          return {
 12210              signature: signature,
 12211              key: { $case: 'publicKey', publicKey },
 12212          };
 12213      }
 12214  }
 12215  exports.EphemeralSigner = EphemeralSigner;
 12216  
 12217  
 12218  /***/ }),
 12219  
 12220  /***/ 57328:
 12221  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 12222  
 12223  "use strict";
 12224  
 12225  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12226  exports.FulcioSigner = exports.DEFAULT_FULCIO_URL = void 0;
 12227  /*
 12228  Copyright 2023 The Sigstore Authors.
 12229  
 12230  Licensed under the Apache License, Version 2.0 (the "License");
 12231  you may not use this file except in compliance with the License.
 12232  You may obtain a copy of the License at
 12233  
 12234      http://www.apache.org/licenses/LICENSE-2.0
 12235  
 12236  Unless required by applicable law or agreed to in writing, software
 12237  distributed under the License is distributed on an "AS IS" BASIS,
 12238  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12239  See the License for the specific language governing permissions and
 12240  limitations under the License.
 12241  */
 12242  const error_1 = __nccwpck_require__(30532);
 12243  const util_1 = __nccwpck_require__(90724);
 12244  const ca_1 = __nccwpck_require__(90334);
 12245  const ephemeral_1 = __nccwpck_require__(98489);
 12246  exports.DEFAULT_FULCIO_URL = 'https://fulcio.sigstore.dev';
 12247  // Signer implementation which can be used to decorate another signer
 12248  // with a Fulcio-issued signing certificate for the signer's public key.
 12249  // Must be instantiated with an identity provider which can provide a JWT
 12250  // which represents the identity to be bound to the signing certificate.
 12251  class FulcioSigner {
 12252      constructor(options) {
 12253          this.ca = new ca_1.CAClient({
 12254              ...options,
 12255              fulcioBaseURL: options.fulcioBaseURL || /* istanbul ignore next */ exports.DEFAULT_FULCIO_URL,
 12256          });
 12257          this.identityProvider = options.identityProvider;
 12258          this.keyHolder = options.keyHolder || new ephemeral_1.EphemeralSigner();
 12259      }
 12260      async sign(data) {
 12261          // Retrieve identity token from the supplied identity provider
 12262          const identityToken = await this.getIdentityToken();
 12263          // Extract challenge claim from OIDC token
 12264          let subject;
 12265          try {
 12266              subject = util_1.oidc.extractJWTSubject(identityToken);
 12267          }
 12268          catch (err) {
 12269              throw new error_1.InternalError({
 12270                  code: 'IDENTITY_TOKEN_PARSE_ERROR',
 12271                  message: `invalid identity token: ${identityToken}`,
 12272                  cause: err,
 12273              });
 12274          }
 12275          // Construct challenge value by signing the subject claim
 12276          const challenge = await this.keyHolder.sign(Buffer.from(subject));
 12277          if (challenge.key.$case !== 'publicKey') {
 12278              throw new error_1.InternalError({
 12279                  code: 'CA_CREATE_SIGNING_CERTIFICATE_ERROR',
 12280                  message: 'unexpected format for signing key',
 12281              });
 12282          }
 12283          // Create signing certificate
 12284          const certificates = await this.ca.createSigningCertificate(identityToken, challenge.key.publicKey, challenge.signature);
 12285          // Generate artifact signature
 12286          const signature = await this.keyHolder.sign(data);
 12287          // Specifically returning only the first certificate in the chain
 12288          // as the key.
 12289          return {
 12290              signature: signature.signature,
 12291              key: {
 12292                  $case: 'x509Certificate',
 12293                  certificate: certificates[0],
 12294              },
 12295          };
 12296      }
 12297      async getIdentityToken() {
 12298          try {
 12299              return await this.identityProvider.getToken();
 12300          }
 12301          catch (err) {
 12302              throw new error_1.InternalError({
 12303                  code: 'IDENTITY_TOKEN_READ_ERROR',
 12304                  message: 'error retrieving identity token',
 12305                  cause: err,
 12306              });
 12307          }
 12308      }
 12309  }
 12310  exports.FulcioSigner = FulcioSigner;
 12311  
 12312  
 12313  /***/ }),
 12314  
 12315  /***/ 17551:
 12316  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 12317  
 12318  "use strict";
 12319  
 12320  /* istanbul ignore file */
 12321  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12322  exports.FulcioSigner = exports.DEFAULT_FULCIO_URL = void 0;
 12323  /*
 12324  Copyright 2023 The Sigstore Authors.
 12325  
 12326  Licensed under the Apache License, Version 2.0 (the "License");
 12327  you may not use this file except in compliance with the License.
 12328  You may obtain a copy of the License at
 12329  
 12330      http://www.apache.org/licenses/LICENSE-2.0
 12331  
 12332  Unless required by applicable law or agreed to in writing, software
 12333  distributed under the License is distributed on an "AS IS" BASIS,
 12334  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12335  See the License for the specific language governing permissions and
 12336  limitations under the License.
 12337  */
 12338  var fulcio_1 = __nccwpck_require__(57328);
 12339  Object.defineProperty(exports, "DEFAULT_FULCIO_URL", ({ enumerable: true, get: function () { return fulcio_1.DEFAULT_FULCIO_URL; } }));
 12340  Object.defineProperty(exports, "FulcioSigner", ({ enumerable: true, get: function () { return fulcio_1.FulcioSigner; } }));
 12341  
 12342  
 12343  /***/ }),
 12344  
 12345  /***/ 90724:
 12346  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 12347  
 12348  "use strict";
 12349  
 12350  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 12351      if (k2 === undefined) k2 = k;
 12352      var desc = Object.getOwnPropertyDescriptor(m, k);
 12353      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 12354        desc = { enumerable: true, get: function() { return m[k]; } };
 12355      }
 12356      Object.defineProperty(o, k2, desc);
 12357  }) : (function(o, m, k, k2) {
 12358      if (k2 === undefined) k2 = k;
 12359      o[k2] = m[k];
 12360  }));
 12361  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 12362      Object.defineProperty(o, "default", { enumerable: true, value: v });
 12363  }) : function(o, v) {
 12364      o["default"] = v;
 12365  });
 12366  var __importStar = (this && this.__importStar) || function (mod) {
 12367      if (mod && mod.__esModule) return mod;
 12368      var result = {};
 12369      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 12370      __setModuleDefault(result, mod);
 12371      return result;
 12372  };
 12373  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12374  exports.ua = exports.oidc = exports.pem = exports.json = exports.encoding = exports.dsse = exports.crypto = void 0;
 12375  /*
 12376  Copyright 2023 The Sigstore Authors.
 12377  
 12378  Licensed under the Apache License, Version 2.0 (the "License");
 12379  you may not use this file except in compliance with the License.
 12380  You may obtain a copy of the License at
 12381  
 12382      http://www.apache.org/licenses/LICENSE-2.0
 12383  
 12384  Unless required by applicable law or agreed to in writing, software
 12385  distributed under the License is distributed on an "AS IS" BASIS,
 12386  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12387  See the License for the specific language governing permissions and
 12388  limitations under the License.
 12389  */
 12390  var core_1 = __nccwpck_require__(3352);
 12391  Object.defineProperty(exports, "crypto", ({ enumerable: true, get: function () { return core_1.crypto; } }));
 12392  Object.defineProperty(exports, "dsse", ({ enumerable: true, get: function () { return core_1.dsse; } }));
 12393  Object.defineProperty(exports, "encoding", ({ enumerable: true, get: function () { return core_1.encoding; } }));
 12394  Object.defineProperty(exports, "json", ({ enumerable: true, get: function () { return core_1.json; } }));
 12395  Object.defineProperty(exports, "pem", ({ enumerable: true, get: function () { return core_1.pem; } }));
 12396  exports.oidc = __importStar(__nccwpck_require__(33397));
 12397  exports.ua = __importStar(__nccwpck_require__(46253));
 12398  
 12399  
 12400  /***/ }),
 12401  
 12402  /***/ 33397:
 12403  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 12404  
 12405  "use strict";
 12406  
 12407  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12408  exports.extractJWTSubject = void 0;
 12409  /*
 12410  Copyright 2023 The Sigstore Authors.
 12411  
 12412  Licensed under the Apache License, Version 2.0 (the "License");
 12413  you may not use this file except in compliance with the License.
 12414  You may obtain a copy of the License at
 12415  
 12416      http://www.apache.org/licenses/LICENSE-2.0
 12417  
 12418  Unless required by applicable law or agreed to in writing, software
 12419  distributed under the License is distributed on an "AS IS" BASIS,
 12420  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12421  See the License for the specific language governing permissions and
 12422  limitations under the License.
 12423  */
 12424  const core_1 = __nccwpck_require__(3352);
 12425  function extractJWTSubject(jwt) {
 12426      const parts = jwt.split('.', 3);
 12427      const payload = JSON.parse(core_1.encoding.base64Decode(parts[1]));
 12428      switch (payload.iss) {
 12429          case 'https://accounts.google.com':
 12430          case 'https://oauth2.sigstore.dev/auth':
 12431              return payload.email;
 12432          default:
 12433              return payload.sub;
 12434      }
 12435  }
 12436  exports.extractJWTSubject = extractJWTSubject;
 12437  
 12438  
 12439  /***/ }),
 12440  
 12441  /***/ 46253:
 12442  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 12443  
 12444  "use strict";
 12445  
 12446  var __importDefault = (this && this.__importDefault) || function (mod) {
 12447      return (mod && mod.__esModule) ? mod : { "default": mod };
 12448  };
 12449  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12450  exports.getUserAgent = void 0;
 12451  /*
 12452  Copyright 2023 The Sigstore Authors.
 12453  
 12454  Licensed under the Apache License, Version 2.0 (the "License");
 12455  you may not use this file except in compliance with the License.
 12456  You may obtain a copy of the License at
 12457  
 12458      http://www.apache.org/licenses/LICENSE-2.0
 12459  
 12460  Unless required by applicable law or agreed to in writing, software
 12461  distributed under the License is distributed on an "AS IS" BASIS,
 12462  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12463  See the License for the specific language governing permissions and
 12464  limitations under the License.
 12465  */
 12466  const os_1 = __importDefault(__nccwpck_require__(22037));
 12467  // Format User-Agent: <product> / <product-version> (<platform>)
 12468  // source: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent
 12469  const getUserAgent = () => {
 12470      // eslint-disable-next-line @typescript-eslint/no-var-requires
 12471      const packageVersion = (__nccwpck_require__(78992)/* .version */ .i8);
 12472      const nodeVersion = process.version;
 12473      const platformName = os_1.default.platform();
 12474      const archName = os_1.default.arch();
 12475      return `sigstore-js/${packageVersion} (Node ${nodeVersion}) (${platformName}/${archName})`;
 12476  };
 12477  exports.getUserAgent = getUserAgent;
 12478  
 12479  
 12480  /***/ }),
 12481  
 12482  /***/ 42170:
 12483  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 12484  
 12485  "use strict";
 12486  
 12487  /* istanbul ignore file */
 12488  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12489  exports.TSAWitness = exports.RekorWitness = exports.DEFAULT_REKOR_URL = void 0;
 12490  /*
 12491  Copyright 2023 The Sigstore Authors.
 12492  
 12493  Licensed under the Apache License, Version 2.0 (the "License");
 12494  you may not use this file except in compliance with the License.
 12495  You may obtain a copy of the License at
 12496  
 12497      http://www.apache.org/licenses/LICENSE-2.0
 12498  
 12499  Unless required by applicable law or agreed to in writing, software
 12500  distributed under the License is distributed on an "AS IS" BASIS,
 12501  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12502  See the License for the specific language governing permissions and
 12503  limitations under the License.
 12504  */
 12505  var tlog_1 = __nccwpck_require__(57843);
 12506  Object.defineProperty(exports, "DEFAULT_REKOR_URL", ({ enumerable: true, get: function () { return tlog_1.DEFAULT_REKOR_URL; } }));
 12507  Object.defineProperty(exports, "RekorWitness", ({ enumerable: true, get: function () { return tlog_1.RekorWitness; } }));
 12508  var tsa_1 = __nccwpck_require__(80049);
 12509  Object.defineProperty(exports, "TSAWitness", ({ enumerable: true, get: function () { return tsa_1.TSAWitness; } }));
 12510  
 12511  
 12512  /***/ }),
 12513  
 12514  /***/ 76737:
 12515  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 12516  
 12517  "use strict";
 12518  
 12519  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12520  exports.TLogClient = void 0;
 12521  /*
 12522  Copyright 2023 The Sigstore Authors.
 12523  
 12524  Licensed under the Apache License, Version 2.0 (the "License");
 12525  you may not use this file except in compliance with the License.
 12526  You may obtain a copy of the License at
 12527  
 12528      http://www.apache.org/licenses/LICENSE-2.0
 12529  
 12530  Unless required by applicable law or agreed to in writing, software
 12531  distributed under the License is distributed on an "AS IS" BASIS,
 12532  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12533  See the License for the specific language governing permissions and
 12534  limitations under the License.
 12535  */
 12536  const error_1 = __nccwpck_require__(30532);
 12537  const error_2 = __nccwpck_require__(11294);
 12538  const rekor_1 = __nccwpck_require__(56205);
 12539  class TLogClient {
 12540      constructor(options) {
 12541          this.fetchOnConflict = options.fetchOnConflict ?? false;
 12542          this.rekor = new rekor_1.Rekor({
 12543              baseURL: options.rekorBaseURL,
 12544              retry: options.retry,
 12545              timeout: options.timeout,
 12546          });
 12547      }
 12548      async createEntry(proposedEntry) {
 12549          let entry;
 12550          try {
 12551              entry = await this.rekor.createEntry(proposedEntry);
 12552          }
 12553          catch (err) {
 12554              // If the entry already exists, fetch it (if enabled)
 12555              if (entryExistsError(err) && this.fetchOnConflict) {
 12556                  // Grab the UUID of the existing entry from the location header
 12557                  /* istanbul ignore next */
 12558                  const uuid = err.location.split('/').pop() || '';
 12559                  try {
 12560                      entry = await this.rekor.getEntry(uuid);
 12561                  }
 12562                  catch (err) {
 12563                      (0, error_1.internalError)(err, 'TLOG_FETCH_ENTRY_ERROR', 'error fetching tlog entry');
 12564                  }
 12565              }
 12566              else {
 12567                  (0, error_1.internalError)(err, 'TLOG_CREATE_ENTRY_ERROR', 'error creating tlog entry');
 12568              }
 12569          }
 12570          return entry;
 12571      }
 12572  }
 12573  exports.TLogClient = TLogClient;
 12574  function entryExistsError(value) {
 12575      return (value instanceof error_2.HTTPError &&
 12576          value.statusCode === 409 &&
 12577          value.location !== undefined);
 12578  }
 12579  
 12580  
 12581  /***/ }),
 12582  
 12583  /***/ 23776:
 12584  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 12585  
 12586  "use strict";
 12587  
 12588  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12589  exports.toProposedEntry = void 0;
 12590  /*
 12591  Copyright 2023 The Sigstore Authors.
 12592  
 12593  Licensed under the Apache License, Version 2.0 (the "License");
 12594  you may not use this file except in compliance with the License.
 12595  You may obtain a copy of the License at
 12596  
 12597      http://www.apache.org/licenses/LICENSE-2.0
 12598  
 12599  Unless required by applicable law or agreed to in writing, software
 12600  distributed under the License is distributed on an "AS IS" BASIS,
 12601  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12602  See the License for the specific language governing permissions and
 12603  limitations under the License.
 12604  */
 12605  const bundle_1 = __nccwpck_require__(29715);
 12606  const util_1 = __nccwpck_require__(90724);
 12607  function toProposedEntry(content, publicKey, 
 12608  // TODO: Remove this parameter once have completely switched to 'dsse' entries
 12609  entryType = 'intoto') {
 12610      switch (content.$case) {
 12611          case 'dsseEnvelope':
 12612              // TODO: Remove this conditional once have completely switched to 'dsse' entries
 12613              if (entryType === 'dsse') {
 12614                  return toProposedDSSEEntry(content.dsseEnvelope, publicKey);
 12615              }
 12616              return toProposedIntotoEntry(content.dsseEnvelope, publicKey);
 12617          case 'messageSignature':
 12618              return toProposedHashedRekordEntry(content.messageSignature, publicKey);
 12619      }
 12620  }
 12621  exports.toProposedEntry = toProposedEntry;
 12622  // Returns a properly formatted Rekor "hashedrekord" entry for the given digest
 12623  // and signature
 12624  function toProposedHashedRekordEntry(messageSignature, publicKey) {
 12625      const hexDigest = messageSignature.messageDigest.digest.toString('hex');
 12626      const b64Signature = messageSignature.signature.toString('base64');
 12627      const b64Key = util_1.encoding.base64Encode(publicKey);
 12628      return {
 12629          apiVersion: '0.0.1',
 12630          kind: 'hashedrekord',
 12631          spec: {
 12632              data: {
 12633                  hash: {
 12634                      algorithm: 'sha256',
 12635                      value: hexDigest,
 12636                  },
 12637              },
 12638              signature: {
 12639                  content: b64Signature,
 12640                  publicKey: {
 12641                      content: b64Key,
 12642                  },
 12643              },
 12644          },
 12645      };
 12646  }
 12647  // Returns a properly formatted Rekor "dsse" entry for the given DSSE envelope
 12648  // and signature
 12649  function toProposedDSSEEntry(envelope, publicKey) {
 12650      const envelopeJSON = JSON.stringify((0, bundle_1.envelopeToJSON)(envelope));
 12651      const encodedKey = util_1.encoding.base64Encode(publicKey);
 12652      return {
 12653          apiVersion: '0.0.1',
 12654          kind: 'dsse',
 12655          spec: {
 12656              proposedContent: {
 12657                  envelope: envelopeJSON,
 12658                  verifiers: [encodedKey],
 12659              },
 12660          },
 12661      };
 12662  }
 12663  // Returns a properly formatted Rekor "intoto" entry for the given DSSE
 12664  // envelope and signature
 12665  function toProposedIntotoEntry(envelope, publicKey) {
 12666      // Calculate the value for the payloadHash field in the Rekor entry
 12667      const payloadHash = util_1.crypto.hash(envelope.payload).toString('hex');
 12668      // Calculate the value for the hash field in the Rekor entry
 12669      const envelopeHash = calculateDSSEHash(envelope, publicKey);
 12670      // Collect values for re-creating the DSSE envelope.
 12671      // Double-encode payload and signature cause that's what Rekor expects
 12672      const payload = util_1.encoding.base64Encode(envelope.payload.toString('base64'));
 12673      const sig = util_1.encoding.base64Encode(envelope.signatures[0].sig.toString('base64'));
 12674      const keyid = envelope.signatures[0].keyid;
 12675      const encodedKey = util_1.encoding.base64Encode(publicKey);
 12676      // Create the envelope portion of the entry. Note the inclusion of the
 12677      // publicKey in the signature struct is not a standard part of a DSSE
 12678      // envelope, but is required by Rekor.
 12679      const dsse = {
 12680          payloadType: envelope.payloadType,
 12681          payload: payload,
 12682          signatures: [{ sig, publicKey: encodedKey }],
 12683      };
 12684      // If the keyid is an empty string, Rekor seems to remove it altogether. We
 12685      // need to do the same here so that we can properly recreate the entry for
 12686      // verification.
 12687      if (keyid.length > 0) {
 12688          dsse.signatures[0].keyid = keyid;
 12689      }
 12690      return {
 12691          apiVersion: '0.0.2',
 12692          kind: 'intoto',
 12693          spec: {
 12694              content: {
 12695                  envelope: dsse,
 12696                  hash: { algorithm: 'sha256', value: envelopeHash },
 12697                  payloadHash: { algorithm: 'sha256', value: payloadHash },
 12698              },
 12699          },
 12700      };
 12701  }
 12702  // Calculates the hash of a DSSE envelope for inclusion in a Rekor entry.
 12703  // There is no standard way to do this, so the scheme we're using as as
 12704  // follows:
 12705  //  * payload is base64 encoded
 12706  //  * signature is base64 encoded (only the first signature is used)
 12707  //  * keyid is included ONLY if it is NOT an empty string
 12708  //  * The resulting JSON is canonicalized and hashed to a hex string
 12709  function calculateDSSEHash(envelope, publicKey) {
 12710      const dsse = {
 12711          payloadType: envelope.payloadType,
 12712          payload: envelope.payload.toString('base64'),
 12713          signatures: [
 12714              { sig: envelope.signatures[0].sig.toString('base64'), publicKey },
 12715          ],
 12716      };
 12717      // If the keyid is an empty string, Rekor seems to remove it altogether.
 12718      if (envelope.signatures[0].keyid.length > 0) {
 12719          dsse.signatures[0].keyid = envelope.signatures[0].keyid;
 12720      }
 12721      return util_1.crypto.hash(util_1.json.canonicalize(dsse)).toString('hex');
 12722  }
 12723  
 12724  
 12725  /***/ }),
 12726  
 12727  /***/ 57843:
 12728  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 12729  
 12730  "use strict";
 12731  
 12732  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12733  exports.RekorWitness = exports.DEFAULT_REKOR_URL = void 0;
 12734  /*
 12735  Copyright 2023 The Sigstore Authors.
 12736  
 12737  Licensed under the Apache License, Version 2.0 (the "License");
 12738  you may not use this file except in compliance with the License.
 12739  You may obtain a copy of the License at
 12740  
 12741      http://www.apache.org/licenses/LICENSE-2.0
 12742  
 12743  Unless required by applicable law or agreed to in writing, software
 12744  distributed under the License is distributed on an "AS IS" BASIS,
 12745  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12746  See the License for the specific language governing permissions and
 12747  limitations under the License.
 12748  */
 12749  const util_1 = __nccwpck_require__(90724);
 12750  const client_1 = __nccwpck_require__(76737);
 12751  const entry_1 = __nccwpck_require__(23776);
 12752  exports.DEFAULT_REKOR_URL = 'https://rekor.sigstore.dev';
 12753  class RekorWitness {
 12754      constructor(options) {
 12755          this.entryType = options.entryType;
 12756          this.tlog = new client_1.TLogClient({
 12757              ...options,
 12758              rekorBaseURL: options.rekorBaseURL || /* istanbul ignore next */ exports.DEFAULT_REKOR_URL,
 12759          });
 12760      }
 12761      async testify(content, publicKey) {
 12762          const proposedEntry = (0, entry_1.toProposedEntry)(content, publicKey, this.entryType);
 12763          const entry = await this.tlog.createEntry(proposedEntry);
 12764          return toTransparencyLogEntry(entry);
 12765      }
 12766  }
 12767  exports.RekorWitness = RekorWitness;
 12768  function toTransparencyLogEntry(entry) {
 12769      const logID = Buffer.from(entry.logID, 'hex');
 12770      // Parse entry body so we can extract the kind and version.
 12771      const bodyJSON = util_1.encoding.base64Decode(entry.body);
 12772      const entryBody = JSON.parse(bodyJSON);
 12773      const promise = entry?.verification?.signedEntryTimestamp
 12774          ? inclusionPromise(entry.verification.signedEntryTimestamp)
 12775          : undefined;
 12776      const proof = entry?.verification?.inclusionProof
 12777          ? inclusionProof(entry.verification.inclusionProof)
 12778          : undefined;
 12779      const tlogEntry = {
 12780          logIndex: entry.logIndex.toString(),
 12781          logId: {
 12782              keyId: logID,
 12783          },
 12784          integratedTime: entry.integratedTime.toString(),
 12785          kindVersion: {
 12786              kind: entryBody.kind,
 12787              version: entryBody.apiVersion,
 12788          },
 12789          inclusionPromise: promise,
 12790          inclusionProof: proof,
 12791          canonicalizedBody: Buffer.from(entry.body, 'base64'),
 12792      };
 12793      return {
 12794          tlogEntries: [tlogEntry],
 12795      };
 12796  }
 12797  function inclusionPromise(promise) {
 12798      return {
 12799          signedEntryTimestamp: Buffer.from(promise, 'base64'),
 12800      };
 12801  }
 12802  function inclusionProof(proof) {
 12803      return {
 12804          logIndex: proof.logIndex.toString(),
 12805          treeSize: proof.treeSize.toString(),
 12806          rootHash: Buffer.from(proof.rootHash, 'hex'),
 12807          hashes: proof.hashes.map((h) => Buffer.from(h, 'hex')),
 12808          checkpoint: {
 12809              envelope: proof.checkpoint,
 12810          },
 12811      };
 12812  }
 12813  
 12814  
 12815  /***/ }),
 12816  
 12817  /***/ 12239:
 12818  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 12819  
 12820  "use strict";
 12821  
 12822  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12823  exports.TSAClient = void 0;
 12824  /*
 12825  Copyright 2023 The Sigstore Authors.
 12826  
 12827  Licensed under the Apache License, Version 2.0 (the "License");
 12828  you may not use this file except in compliance with the License.
 12829  You may obtain a copy of the License at
 12830  
 12831      http://www.apache.org/licenses/LICENSE-2.0
 12832  
 12833  Unless required by applicable law or agreed to in writing, software
 12834  distributed under the License is distributed on an "AS IS" BASIS,
 12835  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12836  See the License for the specific language governing permissions and
 12837  limitations under the License.
 12838  */
 12839  const error_1 = __nccwpck_require__(30532);
 12840  const tsa_1 = __nccwpck_require__(82759);
 12841  const util_1 = __nccwpck_require__(90724);
 12842  class TSAClient {
 12843      constructor(options) {
 12844          this.tsa = new tsa_1.TimestampAuthority({
 12845              baseURL: options.tsaBaseURL,
 12846              retry: options.retry,
 12847              timeout: options.timeout,
 12848          });
 12849      }
 12850      async createTimestamp(signature) {
 12851          const request = {
 12852              artifactHash: util_1.crypto.hash(signature).toString('base64'),
 12853              hashAlgorithm: 'sha256',
 12854          };
 12855          try {
 12856              return await this.tsa.createTimestamp(request);
 12857          }
 12858          catch (err) {
 12859              (0, error_1.internalError)(err, 'TSA_CREATE_TIMESTAMP_ERROR', 'error creating timestamp');
 12860          }
 12861      }
 12862  }
 12863  exports.TSAClient = TSAClient;
 12864  
 12865  
 12866  /***/ }),
 12867  
 12868  /***/ 80049:
 12869  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 12870  
 12871  "use strict";
 12872  
 12873  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12874  exports.TSAWitness = void 0;
 12875  /*
 12876  Copyright 2023 The Sigstore Authors.
 12877  
 12878  Licensed under the Apache License, Version 2.0 (the "License");
 12879  you may not use this file except in compliance with the License.
 12880  You may obtain a copy of the License at
 12881  
 12882      http://www.apache.org/licenses/LICENSE-2.0
 12883  
 12884  Unless required by applicable law or agreed to in writing, software
 12885  distributed under the License is distributed on an "AS IS" BASIS,
 12886  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12887  See the License for the specific language governing permissions and
 12888  limitations under the License.
 12889  */
 12890  const client_1 = __nccwpck_require__(12239);
 12891  class TSAWitness {
 12892      constructor(options) {
 12893          this.tsa = new client_1.TSAClient({
 12894              tsaBaseURL: options.tsaBaseURL,
 12895              retry: options.retry,
 12896              timeout: options.timeout,
 12897          });
 12898      }
 12899      async testify(content) {
 12900          const signature = extractSignature(content);
 12901          const timestamp = await this.tsa.createTimestamp(signature);
 12902          return {
 12903              rfc3161Timestamps: [{ signedTimestamp: timestamp }],
 12904          };
 12905      }
 12906  }
 12907  exports.TSAWitness = TSAWitness;
 12908  function extractSignature(content) {
 12909      switch (content.$case) {
 12910          case 'dsseEnvelope':
 12911              return content.dsseEnvelope.signatures[0].sig;
 12912          case 'messageSignature':
 12913              return content.messageSignature.signature;
 12914      }
 12915  }
 12916  
 12917  
 12918  /***/ }),
 12919  
 12920  /***/ 68134:
 12921  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 12922  
 12923  "use strict";
 12924  
 12925  var __importDefault = (this && this.__importDefault) || function (mod) {
 12926      return (mod && mod.__esModule) ? mod : { "default": mod };
 12927  };
 12928  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12929  exports.appDataPath = void 0;
 12930  /*
 12931  Copyright 2023 The Sigstore Authors.
 12932  
 12933  Licensed under the Apache License, Version 2.0 (the "License");
 12934  you may not use this file except in compliance with the License.
 12935  You may obtain a copy of the License at
 12936  
 12937      http://www.apache.org/licenses/LICENSE-2.0
 12938  
 12939  Unless required by applicable law or agreed to in writing, software
 12940  distributed under the License is distributed on an "AS IS" BASIS,
 12941  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12942  See the License for the specific language governing permissions and
 12943  limitations under the License.
 12944  */
 12945  const os_1 = __importDefault(__nccwpck_require__(22037));
 12946  const path_1 = __importDefault(__nccwpck_require__(71017));
 12947  function appDataPath(name) {
 12948      const homedir = os_1.default.homedir();
 12949      switch (process.platform) {
 12950          /* istanbul ignore next */
 12951          case 'darwin': {
 12952              const appSupport = path_1.default.join(homedir, 'Library', 'Application Support');
 12953              return path_1.default.join(appSupport, name);
 12954          }
 12955          /* istanbul ignore next */
 12956          case 'win32': {
 12957              const localAppData = process.env.LOCALAPPDATA || path_1.default.join(homedir, 'AppData', 'Local');
 12958              return path_1.default.join(localAppData, name, 'Data');
 12959          }
 12960          /* istanbul ignore next */
 12961          default: {
 12962              const localData = process.env.XDG_DATA_HOME || path_1.default.join(homedir, '.local', 'share');
 12963              return path_1.default.join(localData, name);
 12964          }
 12965      }
 12966  }
 12967  exports.appDataPath = appDataPath;
 12968  
 12969  
 12970  /***/ }),
 12971  
 12972  /***/ 78447:
 12973  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 12974  
 12975  "use strict";
 12976  
 12977  var __importDefault = (this && this.__importDefault) || function (mod) {
 12978      return (mod && mod.__esModule) ? mod : { "default": mod };
 12979  };
 12980  Object.defineProperty(exports, "__esModule", ({ value: true }));
 12981  exports.TUFClient = void 0;
 12982  /*
 12983  Copyright 2023 The Sigstore Authors.
 12984  
 12985  Licensed under the Apache License, Version 2.0 (the "License");
 12986  you may not use this file except in compliance with the License.
 12987  You may obtain a copy of the License at
 12988  
 12989      http://www.apache.org/licenses/LICENSE-2.0
 12990  
 12991  Unless required by applicable law or agreed to in writing, software
 12992  distributed under the License is distributed on an "AS IS" BASIS,
 12993  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 12994  See the License for the specific language governing permissions and
 12995  limitations under the License.
 12996  */
 12997  const fs_1 = __importDefault(__nccwpck_require__(57147));
 12998  const path_1 = __importDefault(__nccwpck_require__(71017));
 12999  const tuf_js_1 = __nccwpck_require__(89475);
 13000  const _1 = __nccwpck_require__(88567);
 13001  const target_1 = __nccwpck_require__(51412);
 13002  const TARGETS_DIR_NAME = 'targets';
 13003  class TUFClient {
 13004      constructor(options) {
 13005          const url = new URL(options.mirrorURL);
 13006          const repoName = encodeURIComponent(url.host + url.pathname.replace(/\/$/, ''));
 13007          const cachePath = path_1.default.join(options.cachePath, repoName);
 13008          initTufCache(cachePath);
 13009          seedCache({
 13010              cachePath,
 13011              mirrorURL: options.mirrorURL,
 13012              tufRootPath: options.rootPath,
 13013              forceInit: options.forceInit,
 13014          });
 13015          this.updater = initClient({
 13016              mirrorURL: options.mirrorURL,
 13017              cachePath,
 13018              forceCache: options.forceCache,
 13019              retry: options.retry,
 13020              timeout: options.timeout,
 13021          });
 13022      }
 13023      async refresh() {
 13024          return this.updater.refresh();
 13025      }
 13026      getTarget(targetName) {
 13027          return (0, target_1.readTarget)(this.updater, targetName);
 13028      }
 13029  }
 13030  exports.TUFClient = TUFClient;
 13031  // Initializes the TUF cache directory structure including the initial
 13032  // root.json file. If the cache directory does not exist, it will be
 13033  // created. If the targets directory does not exist, it will be created.
 13034  // If the root.json file does not exist, it will be copied from the
 13035  // rootPath argument.
 13036  function initTufCache(cachePath) {
 13037      const targetsPath = path_1.default.join(cachePath, TARGETS_DIR_NAME);
 13038      if (!fs_1.default.existsSync(cachePath)) {
 13039          fs_1.default.mkdirSync(cachePath, { recursive: true });
 13040      }
 13041      if (!fs_1.default.existsSync(targetsPath)) {
 13042          fs_1.default.mkdirSync(targetsPath);
 13043      }
 13044  }
 13045  // Populates the TUF cache with the initial root.json file. If the root.json
 13046  // file does not exist (or we're forcing re-initialization), copy it from either
 13047  // the rootPath argument or from one of the repo seeds.
 13048  function seedCache({ cachePath, mirrorURL, tufRootPath, forceInit, }) {
 13049      const cachedRootPath = path_1.default.join(cachePath, 'root.json');
 13050      // If the root.json file does not exist (or we're forcing re-initialization),
 13051      // populate it either from the supplied rootPath or from one of the repo seeds.
 13052      if (!fs_1.default.existsSync(cachedRootPath) || forceInit) {
 13053          if (tufRootPath) {
 13054              fs_1.default.copyFileSync(tufRootPath, cachedRootPath);
 13055          }
 13056          else {
 13057              /* eslint-disable @typescript-eslint/no-var-requires */
 13058              const seeds = __nccwpck_require__(84998);
 13059              const repoSeed = seeds[mirrorURL];
 13060              if (!repoSeed) {
 13061                  throw new _1.TUFError({
 13062                      code: 'TUF_INIT_CACHE_ERROR',
 13063                      message: `No root.json found for mirror: ${mirrorURL}`,
 13064                  });
 13065              }
 13066              fs_1.default.writeFileSync(cachedRootPath, Buffer.from(repoSeed['root.json'], 'base64'));
 13067              // Copy any seed targets into the cache
 13068              Object.entries(repoSeed.targets).forEach(([targetName, target]) => {
 13069                  fs_1.default.writeFileSync(path_1.default.join(cachePath, TARGETS_DIR_NAME, targetName), Buffer.from(target, 'base64'));
 13070              });
 13071          }
 13072      }
 13073  }
 13074  function initClient(options) {
 13075      const config = {
 13076          fetchTimeout: options.timeout,
 13077          fetchRetry: options.retry,
 13078      };
 13079      return new tuf_js_1.Updater({
 13080          metadataBaseUrl: options.mirrorURL,
 13081          targetBaseUrl: `${options.mirrorURL}/targets`,
 13082          metadataDir: options.cachePath,
 13083          targetDir: path_1.default.join(options.cachePath, TARGETS_DIR_NAME),
 13084          forceCache: options.forceCache,
 13085          config,
 13086      });
 13087  }
 13088  
 13089  
 13090  /***/ }),
 13091  
 13092  /***/ 38624:
 13093  /***/ ((__unused_webpack_module, exports) => {
 13094  
 13095  "use strict";
 13096  
 13097  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13098  exports.TUFError = void 0;
 13099  class TUFError extends Error {
 13100      constructor({ code, message, cause, }) {
 13101          super(message);
 13102          this.code = code;
 13103          this.cause = cause;
 13104          this.name = this.constructor.name;
 13105      }
 13106  }
 13107  exports.TUFError = TUFError;
 13108  
 13109  
 13110  /***/ }),
 13111  
 13112  /***/ 88567:
 13113  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 13114  
 13115  "use strict";
 13116  
 13117  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13118  exports.TUFError = exports.initTUF = exports.getTrustedRoot = exports.DEFAULT_MIRROR_URL = void 0;
 13119  /*
 13120  Copyright 2023 The Sigstore Authors.
 13121  
 13122  Licensed under the Apache License, Version 2.0 (the "License");
 13123  you may not use this file except in compliance with the License.
 13124  You may obtain a copy of the License at
 13125  
 13126      http://www.apache.org/licenses/LICENSE-2.0
 13127  
 13128  Unless required by applicable law or agreed to in writing, software
 13129  distributed under the License is distributed on an "AS IS" BASIS,
 13130  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13131  See the License for the specific language governing permissions and
 13132  limitations under the License.
 13133  */
 13134  const protobuf_specs_1 = __nccwpck_require__(60530);
 13135  const appdata_1 = __nccwpck_require__(68134);
 13136  const client_1 = __nccwpck_require__(78447);
 13137  exports.DEFAULT_MIRROR_URL = 'https://tuf-repo-cdn.sigstore.dev';
 13138  const DEFAULT_CACHE_DIR = 'sigstore-js';
 13139  const DEFAULT_RETRY = { retries: 2 };
 13140  const DEFAULT_TIMEOUT = 5000;
 13141  const TRUSTED_ROOT_TARGET = 'trusted_root.json';
 13142  async function getTrustedRoot(
 13143  /* istanbul ignore next */
 13144  options = {}) {
 13145      const client = createClient(options);
 13146      const trustedRoot = await client.getTarget(TRUSTED_ROOT_TARGET);
 13147      return protobuf_specs_1.TrustedRoot.fromJSON(JSON.parse(trustedRoot));
 13148  }
 13149  exports.getTrustedRoot = getTrustedRoot;
 13150  async function initTUF(
 13151  /* istanbul ignore next */
 13152  options = {}) {
 13153      const client = createClient(options);
 13154      return client.refresh().then(() => client);
 13155  }
 13156  exports.initTUF = initTUF;
 13157  // Create a TUF client with default options
 13158  function createClient(options) {
 13159      /* istanbul ignore next */
 13160      return new client_1.TUFClient({
 13161          cachePath: options.cachePath || (0, appdata_1.appDataPath)(DEFAULT_CACHE_DIR),
 13162          rootPath: options.rootPath,
 13163          mirrorURL: options.mirrorURL || exports.DEFAULT_MIRROR_URL,
 13164          retry: options.retry ?? DEFAULT_RETRY,
 13165          timeout: options.timeout ?? DEFAULT_TIMEOUT,
 13166          forceCache: options.forceCache ?? false,
 13167          forceInit: options.forceInit ?? options.force ?? false,
 13168      });
 13169  }
 13170  var error_1 = __nccwpck_require__(38624);
 13171  Object.defineProperty(exports, "TUFError", ({ enumerable: true, get: function () { return error_1.TUFError; } }));
 13172  
 13173  
 13174  /***/ }),
 13175  
 13176  /***/ 51412:
 13177  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 13178  
 13179  "use strict";
 13180  
 13181  var __importDefault = (this && this.__importDefault) || function (mod) {
 13182      return (mod && mod.__esModule) ? mod : { "default": mod };
 13183  };
 13184  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13185  exports.readTarget = void 0;
 13186  /*
 13187  Copyright 2023 The Sigstore Authors.
 13188  
 13189  Licensed under the Apache License, Version 2.0 (the "License");
 13190  you may not use this file except in compliance with the License.
 13191  You may obtain a copy of the License at
 13192  
 13193      http://www.apache.org/licenses/LICENSE-2.0
 13194  
 13195  Unless required by applicable law or agreed to in writing, software
 13196  distributed under the License is distributed on an "AS IS" BASIS,
 13197  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13198  See the License for the specific language governing permissions and
 13199  limitations under the License.
 13200  */
 13201  const fs_1 = __importDefault(__nccwpck_require__(57147));
 13202  const error_1 = __nccwpck_require__(38624);
 13203  // Downloads and returns the specified target from the provided TUF Updater.
 13204  async function readTarget(tuf, targetPath) {
 13205      const path = await getTargetPath(tuf, targetPath);
 13206      return new Promise((resolve, reject) => {
 13207          fs_1.default.readFile(path, 'utf-8', (err, data) => {
 13208              if (err) {
 13209                  reject(new error_1.TUFError({
 13210                      code: 'TUF_READ_TARGET_ERROR',
 13211                      message: `error reading target ${path}`,
 13212                      cause: err,
 13213                  }));
 13214              }
 13215              else {
 13216                  resolve(data);
 13217              }
 13218          });
 13219      });
 13220  }
 13221  exports.readTarget = readTarget;
 13222  // Returns the local path to the specified target. If the target is not yet
 13223  // cached locally, the provided TUF Updater will be used to download and
 13224  // cache the target.
 13225  async function getTargetPath(tuf, target) {
 13226      let targetInfo;
 13227      try {
 13228          targetInfo = await tuf.getTargetInfo(target);
 13229      }
 13230      catch (err) {
 13231          throw new error_1.TUFError({
 13232              code: 'TUF_REFRESH_METADATA_ERROR',
 13233              message: 'error refreshing TUF metadata',
 13234              cause: err,
 13235          });
 13236      }
 13237      if (!targetInfo) {
 13238          throw new error_1.TUFError({
 13239              code: 'TUF_FIND_TARGET_ERROR',
 13240              message: `target ${target} not found`,
 13241          });
 13242      }
 13243      let path = await tuf.findCachedTarget(targetInfo);
 13244      // An empty path here means the target has not been cached locally, or is
 13245      // out of date. In either case, we need to download it.
 13246      if (!path) {
 13247          try {
 13248              path = await tuf.downloadTarget(targetInfo);
 13249          }
 13250          catch (err) {
 13251              throw new error_1.TUFError({
 13252                  code: 'TUF_DOWNLOAD_TARGET_ERROR',
 13253                  message: `error downloading target ${path}`,
 13254                  cause: err,
 13255              });
 13256          }
 13257      }
 13258      return path;
 13259  }
 13260  
 13261  
 13262  /***/ }),
 13263  
 13264  /***/ 6738:
 13265  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 13266  
 13267  "use strict";
 13268  
 13269  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13270  exports.DSSESignatureContent = void 0;
 13271  /*
 13272  Copyright 2023 The Sigstore Authors.
 13273  
 13274  Licensed under the Apache License, Version 2.0 (the "License");
 13275  you may not use this file except in compliance with the License.
 13276  You may obtain a copy of the License at
 13277  
 13278      http://www.apache.org/licenses/LICENSE-2.0
 13279  
 13280  Unless required by applicable law or agreed to in writing, software
 13281  distributed under the License is distributed on an "AS IS" BASIS,
 13282  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13283  See the License for the specific language governing permissions and
 13284  limitations under the License.
 13285  */
 13286  const core_1 = __nccwpck_require__(3352);
 13287  class DSSESignatureContent {
 13288      constructor(env) {
 13289          this.env = env;
 13290      }
 13291      compareDigest(digest) {
 13292          return core_1.crypto.bufferEqual(digest, core_1.crypto.hash(this.env.payload));
 13293      }
 13294      compareSignature(signature) {
 13295          return core_1.crypto.bufferEqual(signature, this.signature);
 13296      }
 13297      verifySignature(key) {
 13298          return core_1.crypto.verify(this.preAuthEncoding, key, this.signature);
 13299      }
 13300      get signature() {
 13301          return this.env.signatures.length > 0
 13302              ? this.env.signatures[0].sig
 13303              : Buffer.from('');
 13304      }
 13305      // DSSE Pre-Authentication Encoding
 13306      get preAuthEncoding() {
 13307          return core_1.dsse.preAuthEncoding(this.env.payloadType, this.env.payload);
 13308      }
 13309  }
 13310  exports.DSSESignatureContent = DSSESignatureContent;
 13311  
 13312  
 13313  /***/ }),
 13314  
 13315  /***/ 19045:
 13316  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 13317  
 13318  "use strict";
 13319  
 13320  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13321  exports.signatureContent = exports.toSignedEntity = void 0;
 13322  const core_1 = __nccwpck_require__(3352);
 13323  const dsse_1 = __nccwpck_require__(6738);
 13324  const message_1 = __nccwpck_require__(66843);
 13325  function toSignedEntity(bundle, artifact) {
 13326      const { tlogEntries, timestampVerificationData } = bundle.verificationMaterial;
 13327      const timestamps = [];
 13328      for (const entry of tlogEntries) {
 13329          timestamps.push({
 13330              $case: 'transparency-log',
 13331              tlogEntry: entry,
 13332          });
 13333      }
 13334      for (const ts of timestampVerificationData?.rfc3161Timestamps ?? []) {
 13335          timestamps.push({
 13336              $case: 'timestamp-authority',
 13337              timestamp: core_1.RFC3161Timestamp.parse(ts.signedTimestamp),
 13338          });
 13339      }
 13340      return {
 13341          signature: signatureContent(bundle, artifact),
 13342          key: key(bundle),
 13343          tlogEntries,
 13344          timestamps,
 13345      };
 13346  }
 13347  exports.toSignedEntity = toSignedEntity;
 13348  function signatureContent(bundle, artifact) {
 13349      switch (bundle.content.$case) {
 13350          case 'dsseEnvelope':
 13351              return new dsse_1.DSSESignatureContent(bundle.content.dsseEnvelope);
 13352          case 'messageSignature':
 13353              return new message_1.MessageSignatureContent(bundle.content.messageSignature, artifact);
 13354      }
 13355  }
 13356  exports.signatureContent = signatureContent;
 13357  function key(bundle) {
 13358      switch (bundle.verificationMaterial.content.$case) {
 13359          case 'publicKey':
 13360              return {
 13361                  $case: 'public-key',
 13362                  hint: bundle.verificationMaterial.content.publicKey.hint,
 13363              };
 13364          case 'x509CertificateChain':
 13365              return {
 13366                  $case: 'certificate',
 13367                  certificate: core_1.X509Certificate.parse(bundle.verificationMaterial.content.x509CertificateChain
 13368                      .certificates[0].rawBytes),
 13369              };
 13370          case 'certificate':
 13371              return {
 13372                  $case: 'certificate',
 13373                  certificate: core_1.X509Certificate.parse(bundle.verificationMaterial.content.certificate.rawBytes),
 13374              };
 13375      }
 13376  }
 13377  
 13378  
 13379  /***/ }),
 13380  
 13381  /***/ 66843:
 13382  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 13383  
 13384  "use strict";
 13385  
 13386  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13387  exports.MessageSignatureContent = void 0;
 13388  /*
 13389  Copyright 2023 The Sigstore Authors.
 13390  
 13391  Licensed under the Apache License, Version 2.0 (the "License");
 13392  you may not use this file except in compliance with the License.
 13393  You may obtain a copy of the License at
 13394  
 13395      http://www.apache.org/licenses/LICENSE-2.0
 13396  
 13397  Unless required by applicable law or agreed to in writing, software
 13398  distributed under the License is distributed on an "AS IS" BASIS,
 13399  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13400  See the License for the specific language governing permissions and
 13401  limitations under the License.
 13402  */
 13403  const core_1 = __nccwpck_require__(3352);
 13404  class MessageSignatureContent {
 13405      constructor(messageSignature, artifact) {
 13406          this.signature = messageSignature.signature;
 13407          this.messageDigest = messageSignature.messageDigest.digest;
 13408          this.artifact = artifact;
 13409      }
 13410      compareSignature(signature) {
 13411          return core_1.crypto.bufferEqual(signature, this.signature);
 13412      }
 13413      compareDigest(digest) {
 13414          return core_1.crypto.bufferEqual(digest, this.messageDigest);
 13415      }
 13416      verifySignature(key) {
 13417          return core_1.crypto.verify(this.artifact, key, this.signature);
 13418      }
 13419  }
 13420  exports.MessageSignatureContent = MessageSignatureContent;
 13421  
 13422  
 13423  /***/ }),
 13424  
 13425  /***/ 58948:
 13426  /***/ ((__unused_webpack_module, exports) => {
 13427  
 13428  "use strict";
 13429  
 13430  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13431  exports.PolicyError = exports.VerificationError = void 0;
 13432  /*
 13433  Copyright 2023 The Sigstore Authors.
 13434  
 13435  Licensed under the Apache License, Version 2.0 (the "License");
 13436  you may not use this file except in compliance with the License.
 13437  You may obtain a copy of the License at
 13438  
 13439      http://www.apache.org/licenses/LICENSE-2.0
 13440  
 13441  Unless required by applicable law or agreed to in writing, software
 13442  distributed under the License is distributed on an "AS IS" BASIS,
 13443  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13444  See the License for the specific language governing permissions and
 13445  limitations under the License.
 13446  */
 13447  class BaseError extends Error {
 13448      constructor({ code, message, cause, }) {
 13449          super(message);
 13450          this.code = code;
 13451          this.cause = cause;
 13452          this.name = this.constructor.name;
 13453      }
 13454  }
 13455  class VerificationError extends BaseError {
 13456  }
 13457  exports.VerificationError = VerificationError;
 13458  class PolicyError extends BaseError {
 13459  }
 13460  exports.PolicyError = PolicyError;
 13461  
 13462  
 13463  /***/ }),
 13464  
 13465  /***/ 10666:
 13466  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 13467  
 13468  "use strict";
 13469  
 13470  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13471  exports.Verifier = exports.toTrustMaterial = exports.VerificationError = exports.PolicyError = exports.toSignedEntity = void 0;
 13472  /* istanbul ignore file */
 13473  /*
 13474  Copyright 2023 The Sigstore Authors.
 13475  
 13476  Licensed under the Apache License, Version 2.0 (the "License");
 13477  you may not use this file except in compliance with the License.
 13478  You may obtain a copy of the License at
 13479  
 13480      http://www.apache.org/licenses/LICENSE-2.0
 13481  
 13482  Unless required by applicable law or agreed to in writing, software
 13483  distributed under the License is distributed on an "AS IS" BASIS,
 13484  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13485  See the License for the specific language governing permissions and
 13486  limitations under the License.
 13487  */
 13488  var bundle_1 = __nccwpck_require__(19045);
 13489  Object.defineProperty(exports, "toSignedEntity", ({ enumerable: true, get: function () { return bundle_1.toSignedEntity; } }));
 13490  var error_1 = __nccwpck_require__(58948);
 13491  Object.defineProperty(exports, "PolicyError", ({ enumerable: true, get: function () { return error_1.PolicyError; } }));
 13492  Object.defineProperty(exports, "VerificationError", ({ enumerable: true, get: function () { return error_1.VerificationError; } }));
 13493  var trust_1 = __nccwpck_require__(14503);
 13494  Object.defineProperty(exports, "toTrustMaterial", ({ enumerable: true, get: function () { return trust_1.toTrustMaterial; } }));
 13495  var verifier_1 = __nccwpck_require__(95456);
 13496  Object.defineProperty(exports, "Verifier", ({ enumerable: true, get: function () { return verifier_1.Verifier; } }));
 13497  
 13498  
 13499  /***/ }),
 13500  
 13501  /***/ 88766:
 13502  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 13503  
 13504  "use strict";
 13505  
 13506  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13507  exports.CertificateChainVerifier = exports.verifyCertificateChain = void 0;
 13508  const error_1 = __nccwpck_require__(58948);
 13509  const trust_1 = __nccwpck_require__(14503);
 13510  function verifyCertificateChain(leaf, certificateAuthorities) {
 13511      // Filter list of trusted CAs to those which are valid for the given
 13512      // leaf certificate.
 13513      const cas = (0, trust_1.filterCertAuthorities)(certificateAuthorities, {
 13514          start: leaf.notBefore,
 13515          end: leaf.notAfter,
 13516      });
 13517      /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
 13518      let error;
 13519      for (const ca of cas) {
 13520          try {
 13521              const verifier = new CertificateChainVerifier({
 13522                  trustedCerts: ca.certChain,
 13523                  untrustedCert: leaf,
 13524              });
 13525              return verifier.verify();
 13526          }
 13527          catch (err) {
 13528              error = err;
 13529          }
 13530      }
 13531      // If we failed to verify the certificate chain for all of the trusted
 13532      // CAs, throw the last error we encountered.
 13533      throw new error_1.VerificationError({
 13534          code: 'CERTIFICATE_ERROR',
 13535          message: 'Failed to verify certificate chain',
 13536          cause: error,
 13537      });
 13538  }
 13539  exports.verifyCertificateChain = verifyCertificateChain;
 13540  class CertificateChainVerifier {
 13541      constructor(opts) {
 13542          this.untrustedCert = opts.untrustedCert;
 13543          this.trustedCerts = opts.trustedCerts;
 13544          this.localCerts = dedupeCertificates([
 13545              ...opts.trustedCerts,
 13546              opts.untrustedCert,
 13547          ]);
 13548      }
 13549      verify() {
 13550          // Construct certificate path from leaf to root
 13551          const certificatePath = this.sort();
 13552          // Perform validation checks on each certificate in the path
 13553          this.checkPath(certificatePath);
 13554          // Return verified certificate path
 13555          return certificatePath;
 13556      }
 13557      sort() {
 13558          const leafCert = this.untrustedCert;
 13559          // Construct all possible paths from the leaf
 13560          let paths = this.buildPaths(leafCert);
 13561          // Filter for paths which contain a trusted certificate
 13562          paths = paths.filter((path) => path.some((cert) => this.trustedCerts.includes(cert)));
 13563          if (paths.length === 0) {
 13564              throw new error_1.VerificationError({
 13565                  code: 'CERTIFICATE_ERROR',
 13566                  message: 'no trusted certificate path found',
 13567              });
 13568          }
 13569          // Find the shortest of possible paths
 13570          /* istanbul ignore next */
 13571          const path = paths.reduce((prev, curr) => prev.length < curr.length ? prev : curr);
 13572          // Construct chain from shortest path
 13573          // Removes the last certificate in the path, which will be a second copy
 13574          // of the root certificate given that the root is self-signed.
 13575          return [leafCert, ...path].slice(0, -1);
 13576      }
 13577      // Recursively build all possible paths from the leaf to the root
 13578      buildPaths(certificate) {
 13579          const paths = [];
 13580          const issuers = this.findIssuer(certificate);
 13581          if (issuers.length === 0) {
 13582              throw new error_1.VerificationError({
 13583                  code: 'CERTIFICATE_ERROR',
 13584                  message: 'no valid certificate path found',
 13585              });
 13586          }
 13587          for (let i = 0; i < issuers.length; i++) {
 13588              const issuer = issuers[i];
 13589              // Base case - issuer is self
 13590              if (issuer.equals(certificate)) {
 13591                  paths.push([certificate]);
 13592                  continue;
 13593              }
 13594              // Recursively build path for the issuer
 13595              const subPaths = this.buildPaths(issuer);
 13596              // Construct paths by appending the issuer to each subpath
 13597              for (let j = 0; j < subPaths.length; j++) {
 13598                  paths.push([issuer, ...subPaths[j]]);
 13599              }
 13600          }
 13601          return paths;
 13602      }
 13603      // Return all possible issuers for the given certificate
 13604      findIssuer(certificate) {
 13605          let issuers = [];
 13606          let keyIdentifier;
 13607          // Exit early if the certificate is self-signed
 13608          if (certificate.subject.equals(certificate.issuer)) {
 13609              if (certificate.verify()) {
 13610                  return [certificate];
 13611              }
 13612          }
 13613          // If the certificate has an authority key identifier, use that
 13614          // to find the issuer
 13615          if (certificate.extAuthorityKeyID) {
 13616              keyIdentifier = certificate.extAuthorityKeyID.keyIdentifier;
 13617              // TODO: Add support for authorityCertIssuer/authorityCertSerialNumber
 13618              // though Fulcio doesn't appear to use these
 13619          }
 13620          // Find possible issuers by comparing the authorityKeyID/subjectKeyID
 13621          // or issuer/subject. Potential issuers are added to the result array.
 13622          this.localCerts.forEach((possibleIssuer) => {
 13623              if (keyIdentifier) {
 13624                  if (possibleIssuer.extSubjectKeyID) {
 13625                      if (possibleIssuer.extSubjectKeyID.keyIdentifier.equals(keyIdentifier)) {
 13626                          issuers.push(possibleIssuer);
 13627                      }
 13628                      return;
 13629                  }
 13630              }
 13631              // Fallback to comparing certificate issuer and subject if
 13632              // subjectKey/authorityKey extensions are not present
 13633              if (possibleIssuer.subject.equals(certificate.issuer)) {
 13634                  issuers.push(possibleIssuer);
 13635              }
 13636          });
 13637          // Remove any issuers which fail to verify the certificate
 13638          issuers = issuers.filter((issuer) => {
 13639              try {
 13640                  return certificate.verify(issuer);
 13641              }
 13642              catch (ex) {
 13643                  /* istanbul ignore next - should never error */
 13644                  return false;
 13645              }
 13646          });
 13647          return issuers;
 13648      }
 13649      checkPath(path) {
 13650          /* istanbul ignore if */
 13651          if (path.length < 1) {
 13652              throw new error_1.VerificationError({
 13653                  code: 'CERTIFICATE_ERROR',
 13654                  message: 'certificate chain must contain at least one certificate',
 13655              });
 13656          }
 13657          // Ensure that all certificates beyond the leaf are CAs
 13658          const validCAs = path.slice(1).every((cert) => cert.isCA);
 13659          if (!validCAs) {
 13660              throw new error_1.VerificationError({
 13661                  code: 'CERTIFICATE_ERROR',
 13662                  message: 'intermediate certificate is not a CA',
 13663              });
 13664          }
 13665          // Certificate's issuer must match the subject of the next certificate
 13666          // in the chain
 13667          for (let i = path.length - 2; i >= 0; i--) {
 13668              /* istanbul ignore if */
 13669              if (!path[i].issuer.equals(path[i + 1].subject)) {
 13670                  throw new error_1.VerificationError({
 13671                      code: 'CERTIFICATE_ERROR',
 13672                      message: 'incorrect certificate name chaining',
 13673                  });
 13674              }
 13675          }
 13676          // Check pathlength constraints
 13677          for (let i = 0; i < path.length; i++) {
 13678              const cert = path[i];
 13679              // If the certificate is a CA, check the path length
 13680              if (cert.extBasicConstraints?.isCA) {
 13681                  const pathLength = cert.extBasicConstraints.pathLenConstraint;
 13682                  // The path length, if set, indicates how many intermediate
 13683                  // certificates (NOT including the leaf) are allowed to follow. The
 13684                  // pathLength constraint of any intermediate CA certificate MUST be
 13685                  // greater than or equal to it's own depth in the chain (with an
 13686                  // adjustment for the leaf certificate)
 13687                  if (pathLength !== undefined && pathLength < i - 1) {
 13688                      throw new error_1.VerificationError({
 13689                          code: 'CERTIFICATE_ERROR',
 13690                          message: 'path length constraint exceeded',
 13691                      });
 13692                  }
 13693              }
 13694          }
 13695      }
 13696  }
 13697  exports.CertificateChainVerifier = CertificateChainVerifier;
 13698  // Remove duplicate certificates from the array
 13699  function dedupeCertificates(certs) {
 13700      for (let i = 0; i < certs.length; i++) {
 13701          for (let j = i + 1; j < certs.length; j++) {
 13702              if (certs[i].equals(certs[j])) {
 13703                  certs.splice(j, 1);
 13704                  j--;
 13705              }
 13706          }
 13707      }
 13708      return certs;
 13709  }
 13710  
 13711  
 13712  /***/ }),
 13713  
 13714  /***/ 96829:
 13715  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 13716  
 13717  "use strict";
 13718  
 13719  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13720  exports.verifyCertificate = exports.verifyPublicKey = void 0;
 13721  /*
 13722  Copyright 2023 The Sigstore Authors.
 13723  
 13724  Licensed under the Apache License, Version 2.0 (the "License");
 13725  you may not use this file except in compliance with the License.
 13726  You may obtain a copy of the License at
 13727  
 13728      http://www.apache.org/licenses/LICENSE-2.0
 13729  
 13730  Unless required by applicable law or agreed to in writing, software
 13731  distributed under the License is distributed on an "AS IS" BASIS,
 13732  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13733  See the License for the specific language governing permissions and
 13734  limitations under the License.
 13735  */
 13736  const core_1 = __nccwpck_require__(3352);
 13737  const error_1 = __nccwpck_require__(58948);
 13738  const certificate_1 = __nccwpck_require__(88766);
 13739  const sct_1 = __nccwpck_require__(8669);
 13740  const OID_FULCIO_ISSUER_V1 = '1.3.6.1.4.1.57264.1.1';
 13741  const OID_FULCIO_ISSUER_V2 = '1.3.6.1.4.1.57264.1.8';
 13742  function verifyPublicKey(hint, timestamps, trustMaterial) {
 13743      const key = trustMaterial.publicKey(hint);
 13744      timestamps.forEach((timestamp) => {
 13745          if (!key.validFor(timestamp)) {
 13746              throw new error_1.VerificationError({
 13747                  code: 'PUBLIC_KEY_ERROR',
 13748                  message: `Public key is not valid for timestamp: ${timestamp.toISOString()}`,
 13749              });
 13750          }
 13751      });
 13752      return { key: key.publicKey };
 13753  }
 13754  exports.verifyPublicKey = verifyPublicKey;
 13755  function verifyCertificate(leaf, timestamps, trustMaterial) {
 13756      // Check that leaf certificate chains to a trusted CA
 13757      const path = (0, certificate_1.verifyCertificateChain)(leaf, trustMaterial.certificateAuthorities);
 13758      // Check that ALL certificates are valid for ALL of the timestamps
 13759      const validForDate = timestamps.every((timestamp) => path.every((cert) => cert.validForDate(timestamp)));
 13760      if (!validForDate) {
 13761          throw new error_1.VerificationError({
 13762              code: 'CERTIFICATE_ERROR',
 13763              message: 'certificate is not valid or expired at the specified date',
 13764          });
 13765      }
 13766      return {
 13767          scts: (0, sct_1.verifySCTs)(path[0], path[1], trustMaterial.ctlogs),
 13768          signer: getSigner(path[0]),
 13769      };
 13770  }
 13771  exports.verifyCertificate = verifyCertificate;
 13772  function getSigner(cert) {
 13773      let issuer;
 13774      const issuerExtension = cert.extension(OID_FULCIO_ISSUER_V2);
 13775      if (issuerExtension) {
 13776          issuer = issuerExtension.valueObj.subs?.[0]?.value.toString('ascii');
 13777      }
 13778      else {
 13779          issuer = cert.extension(OID_FULCIO_ISSUER_V1)?.value.toString('ascii');
 13780      }
 13781      const identity = {
 13782          extensions: { issuer },
 13783          subjectAlternativeName: cert.subjectAltName,
 13784      };
 13785      return {
 13786          key: core_1.crypto.createPublicKey(cert.publicKey),
 13787          identity,
 13788      };
 13789  }
 13790  
 13791  
 13792  /***/ }),
 13793  
 13794  /***/ 8669:
 13795  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 13796  
 13797  "use strict";
 13798  
 13799  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13800  exports.verifySCTs = void 0;
 13801  /*
 13802  Copyright 2023 The Sigstore Authors.
 13803  
 13804  Licensed under the Apache License, Version 2.0 (the "License");
 13805  you may not use this file except in compliance with the License.
 13806  You may obtain a copy of the License at
 13807  
 13808      http://www.apache.org/licenses/LICENSE-2.0
 13809  
 13810  Unless required by applicable law or agreed to in writing, software
 13811  distributed under the License is distributed on an "AS IS" BASIS,
 13812  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13813  See the License for the specific language governing permissions and
 13814  limitations under the License.
 13815  */
 13816  const core_1 = __nccwpck_require__(3352);
 13817  const error_1 = __nccwpck_require__(58948);
 13818  const trust_1 = __nccwpck_require__(14503);
 13819  function verifySCTs(cert, issuer, ctlogs) {
 13820      let extSCT;
 13821      // Verifying the SCT requires that we remove the SCT extension and
 13822      // re-encode the TBS structure to DER -- this value is part of the data
 13823      // over which the signature is calculated. Since this is a destructive action
 13824      // we create a copy of the certificate so we can remove the SCT extension
 13825      // without affecting the original certificate.
 13826      const clone = cert.clone();
 13827      // Intentionally not using the findExtension method here because we want to
 13828      // remove the the SCT extension from the certificate before calculating the
 13829      // PreCert structure
 13830      for (let i = 0; i < clone.extensions.length; i++) {
 13831          const ext = clone.extensions[i];
 13832          if (ext.subs[0].toOID() === core_1.EXTENSION_OID_SCT) {
 13833              extSCT = new core_1.X509SCTExtension(ext);
 13834              // Remove the extension from the certificate
 13835              clone.extensions.splice(i, 1);
 13836              break;
 13837          }
 13838      }
 13839      // No SCT extension found to verify
 13840      if (!extSCT) {
 13841          return [];
 13842      }
 13843      // Found an SCT extension but it has no SCTs
 13844      /* istanbul ignore if -- too difficult to fabricate test case for this */
 13845      if (extSCT.signedCertificateTimestamps.length === 0) {
 13846          return [];
 13847      }
 13848      // Construct the PreCert structure
 13849      // https://www.rfc-editor.org/rfc/rfc6962#section-3.2
 13850      const preCert = new core_1.ByteStream();
 13851      // Calculate hash of the issuer's public key
 13852      const issuerId = core_1.crypto.hash(issuer.publicKey);
 13853      preCert.appendView(issuerId);
 13854      // Re-encodes the certificate to DER after removing the SCT extension
 13855      const tbs = clone.tbsCertificate.toDER();
 13856      preCert.appendUint24(tbs.length);
 13857      preCert.appendView(tbs);
 13858      // Calculate and return the verification results for each SCT
 13859      return extSCT.signedCertificateTimestamps.map((sct) => {
 13860          // Find the ctlog instance that corresponds to the SCT's logID
 13861          const validCTLogs = (0, trust_1.filterTLogAuthorities)(ctlogs, {
 13862              logID: sct.logID,
 13863              targetDate: sct.datetime,
 13864          });
 13865          // See if the SCT is valid for any of the CT logs
 13866          const verified = validCTLogs.some((log) => sct.verify(preCert.buffer, log.publicKey));
 13867          if (!verified) {
 13868              throw new error_1.VerificationError({
 13869                  code: 'CERTIFICATE_ERROR',
 13870                  message: 'SCT verification failed',
 13871              });
 13872          }
 13873          return sct.logID;
 13874      });
 13875  }
 13876  exports.verifySCTs = verifySCTs;
 13877  
 13878  
 13879  /***/ }),
 13880  
 13881  /***/ 83978:
 13882  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 13883  
 13884  "use strict";
 13885  
 13886  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13887  exports.verifyExtensions = exports.verifySubjectAlternativeName = void 0;
 13888  const error_1 = __nccwpck_require__(58948);
 13889  function verifySubjectAlternativeName(policyIdentity, signerIdentity) {
 13890      if (signerIdentity === undefined || !signerIdentity.match(policyIdentity)) {
 13891          throw new error_1.PolicyError({
 13892              code: 'UNTRUSTED_SIGNER_ERROR',
 13893              message: `certificate identity error - expected ${policyIdentity}, got ${signerIdentity}`,
 13894          });
 13895      }
 13896  }
 13897  exports.verifySubjectAlternativeName = verifySubjectAlternativeName;
 13898  function verifyExtensions(policyExtensions, signerExtensions = {}) {
 13899      let key;
 13900      for (key in policyExtensions) {
 13901          if (signerExtensions[key] !== policyExtensions[key]) {
 13902              throw new error_1.PolicyError({
 13903                  code: 'UNTRUSTED_SIGNER_ERROR',
 13904                  message: `invalid certificate extension - expected ${key}=${policyExtensions[key]}, got ${key}=${signerExtensions[key]}`,
 13905              });
 13906          }
 13907      }
 13908  }
 13909  exports.verifyExtensions = verifyExtensions;
 13910  
 13911  
 13912  /***/ }),
 13913  
 13914  /***/ 37339:
 13915  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 13916  
 13917  "use strict";
 13918  
 13919  Object.defineProperty(exports, "__esModule", ({ value: true }));
 13920  exports.verifyCheckpoint = void 0;
 13921  /*
 13922  Copyright 2023 The Sigstore Authors.
 13923  
 13924  Licensed under the Apache License, Version 2.0 (the "License");
 13925  you may not use this file except in compliance with the License.
 13926  You may obtain a copy of the License at
 13927  
 13928      http://www.apache.org/licenses/LICENSE-2.0
 13929  
 13930  Unless required by applicable law or agreed to in writing, software
 13931  distributed under the License is distributed on an "AS IS" BASIS,
 13932  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13933  See the License for the specific language governing permissions and
 13934  limitations under the License.
 13935  */
 13936  const core_1 = __nccwpck_require__(3352);
 13937  const error_1 = __nccwpck_require__(58948);
 13938  const trust_1 = __nccwpck_require__(14503);
 13939  // Separator between the note and the signatures in a checkpoint
 13940  const CHECKPOINT_SEPARATOR = '\n\n';
 13941  // Checkpoint signatures are of the following form:
 13942  // "– <identity> <key_hint+signature_bytes>\n"
 13943  // where:
 13944  // - the prefix is an emdash (U+2014).
 13945  // - <identity> gives a human-readable representation of the signing ID.
 13946  // - <key_hint+signature_bytes> is the first 4 bytes of the SHA256 hash of the
 13947  //   associated public key followed by the signature bytes.
 13948  const SIGNATURE_REGEX = /\u2014 (\S+) (\S+)\n/g;
 13949  // Verifies the checkpoint value in the given tlog entry. There are two steps
 13950  // to the verification:
 13951  // 1. Verify that all signatures in the checkpoint can be verified against a
 13952  //    trusted public key
 13953  // 2. Verify that the root hash in the checkpoint matches the root hash in the
 13954  //    inclusion proof
 13955  // See: https://github.com/transparency-dev/formats/blob/main/log/README.md
 13956  function verifyCheckpoint(entry, tlogs) {
 13957      // Filter tlog instances to just those which were valid at the time of the
 13958      // entry
 13959      const validTLogs = (0, trust_1.filterTLogAuthorities)(tlogs, {
 13960          targetDate: new Date(Number(entry.integratedTime) * 1000),
 13961      });
 13962      const inclusionProof = entry.inclusionProof;
 13963      const signedNote = SignedNote.fromString(inclusionProof.checkpoint.envelope);
 13964      const checkpoint = LogCheckpoint.fromString(signedNote.note);
 13965      // Verify that the signatures in the checkpoint are all valid
 13966      if (!verifySignedNote(signedNote, validTLogs)) {
 13967          throw new error_1.VerificationError({
 13968              code: 'TLOG_INCLUSION_PROOF_ERROR',
 13969              message: 'invalid checkpoint signature',
 13970          });
 13971      }
 13972      // Verify that the root hash from the checkpoint matches the root hash in the
 13973      // inclusion proof
 13974      if (!core_1.crypto.bufferEqual(checkpoint.logHash, inclusionProof.rootHash)) {
 13975          throw new error_1.VerificationError({
 13976              code: 'TLOG_INCLUSION_PROOF_ERROR',
 13977              message: 'root hash mismatch',
 13978          });
 13979      }
 13980  }
 13981  exports.verifyCheckpoint = verifyCheckpoint;
 13982  // Verifies the signatures in the SignedNote. For each signature, the
 13983  // corresponding transparency log is looked up by the key hint and the
 13984  // signature is verified against the public key in the transparency log.
 13985  // Throws an error if any of the signatures are invalid.
 13986  function verifySignedNote(signedNote, tlogs) {
 13987      const data = Buffer.from(signedNote.note, 'utf-8');
 13988      return signedNote.signatures.every((signature) => {
 13989          // Find the transparency log instance with the matching key hint
 13990          const tlog = tlogs.find((tlog) => core_1.crypto.bufferEqual(tlog.logID.subarray(0, 4), signature.keyHint));
 13991          if (!tlog) {
 13992              return false;
 13993          }
 13994          return core_1.crypto.verify(data, tlog.publicKey, signature.signature);
 13995      });
 13996  }
 13997  // SignedNote represents a signed note from a transparency log checkpoint. Consists
 13998  // of a body (or note) and one more signatures calculated over the body. See
 13999  // https://github.com/transparency-dev/formats/blob/main/log/README.md#signed-envelope
 14000  class SignedNote {
 14001      constructor(note, signatures) {
 14002          this.note = note;
 14003          this.signatures = signatures;
 14004      }
 14005      // Deserialize a SignedNote from a string
 14006      static fromString(envelope) {
 14007          if (!envelope.includes(CHECKPOINT_SEPARATOR)) {
 14008              throw new error_1.VerificationError({
 14009                  code: 'TLOG_INCLUSION_PROOF_ERROR',
 14010                  message: 'missing checkpoint separator',
 14011              });
 14012          }
 14013          // Split the note into the header and the data portions at the separator
 14014          const split = envelope.indexOf(CHECKPOINT_SEPARATOR);
 14015          const header = envelope.slice(0, split + 1);
 14016          const data = envelope.slice(split + CHECKPOINT_SEPARATOR.length);
 14017          // Find all the signature lines in the data portion
 14018          const matches = data.matchAll(SIGNATURE_REGEX);
 14019          // Parse each of the matched signature lines into the name and signature.
 14020          // The first four bytes of the signature are the key hint (should match the
 14021          // first four bytes of the log ID), and the rest is the signature itself.
 14022          const signatures = Array.from(matches, (match) => {
 14023              const [, name, signature] = match;
 14024              const sigBytes = Buffer.from(signature, 'base64');
 14025              if (sigBytes.length < 5) {
 14026                  throw new error_1.VerificationError({
 14027                      code: 'TLOG_INCLUSION_PROOF_ERROR',
 14028                      message: 'malformed checkpoint signature',
 14029                  });
 14030              }
 14031              return {
 14032                  name,
 14033                  keyHint: sigBytes.subarray(0, 4),
 14034                  signature: sigBytes.subarray(4),
 14035              };
 14036          });
 14037          if (signatures.length === 0) {
 14038              throw new error_1.VerificationError({
 14039                  code: 'TLOG_INCLUSION_PROOF_ERROR',
 14040                  message: 'no signatures found in checkpoint',
 14041              });
 14042          }
 14043          return new SignedNote(header, signatures);
 14044      }
 14045  }
 14046  // LogCheckpoint represents a transparency log checkpoint. Consists of the
 14047  // following:
 14048  //  - origin: the name of the transparency log
 14049  //  - logSize: the size of the log at the time of the checkpoint
 14050  //  - logHash: the root hash of the log at the time of the checkpoint
 14051  //  - rest: the rest of the checkpoint body, which is a list of log entries
 14052  // See:
 14053  // https://github.com/transparency-dev/formats/blob/main/log/README.md#checkpoint-body
 14054  class LogCheckpoint {
 14055      constructor(origin, logSize, logHash, rest) {
 14056          this.origin = origin;
 14057          this.logSize = logSize;
 14058          this.logHash = logHash;
 14059          this.rest = rest;
 14060      }
 14061      static fromString(note) {
 14062          const lines = note.trimEnd().split('\n');
 14063          if (lines.length < 3) {
 14064              throw new error_1.VerificationError({
 14065                  code: 'TLOG_INCLUSION_PROOF_ERROR',
 14066                  message: 'too few lines in checkpoint header',
 14067              });
 14068          }
 14069          const origin = lines[0];
 14070          const logSize = BigInt(lines[1]);
 14071          const rootHash = Buffer.from(lines[2], 'base64');
 14072          const rest = lines.slice(3);
 14073          return new LogCheckpoint(origin, logSize, rootHash, rest);
 14074      }
 14075  }
 14076  
 14077  
 14078  /***/ }),
 14079  
 14080  /***/ 29511:
 14081  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 14082  
 14083  "use strict";
 14084  
 14085  Object.defineProperty(exports, "__esModule", ({ value: true }));
 14086  exports.verifyTLogTimestamp = exports.verifyTSATimestamp = void 0;
 14087  const error_1 = __nccwpck_require__(58948);
 14088  const checkpoint_1 = __nccwpck_require__(37339);
 14089  const merkle_1 = __nccwpck_require__(11407);
 14090  const set_1 = __nccwpck_require__(67527);
 14091  const tsa_1 = __nccwpck_require__(2574);
 14092  function verifyTSATimestamp(timestamp, data, timestampAuthorities) {
 14093      (0, tsa_1.verifyRFC3161Timestamp)(timestamp, data, timestampAuthorities);
 14094      return {
 14095          type: 'timestamp-authority',
 14096          logID: timestamp.signerSerialNumber,
 14097          timestamp: timestamp.signingTime,
 14098      };
 14099  }
 14100  exports.verifyTSATimestamp = verifyTSATimestamp;
 14101  function verifyTLogTimestamp(entry, tlogAuthorities) {
 14102      let inclusionVerified = false;
 14103      if (isTLogEntryWithInclusionPromise(entry)) {
 14104          (0, set_1.verifyTLogSET)(entry, tlogAuthorities);
 14105          inclusionVerified = true;
 14106      }
 14107      if (isTLogEntryWithInclusionProof(entry)) {
 14108          (0, merkle_1.verifyMerkleInclusion)(entry);
 14109          (0, checkpoint_1.verifyCheckpoint)(entry, tlogAuthorities);
 14110          inclusionVerified = true;
 14111      }
 14112      if (!inclusionVerified) {
 14113          throw new error_1.VerificationError({
 14114              code: 'TLOG_MISSING_INCLUSION_ERROR',
 14115              message: 'inclusion could not be verified',
 14116          });
 14117      }
 14118      return {
 14119          type: 'transparency-log',
 14120          logID: entry.logId.keyId,
 14121          timestamp: new Date(Number(entry.integratedTime) * 1000),
 14122      };
 14123  }
 14124  exports.verifyTLogTimestamp = verifyTLogTimestamp;
 14125  function isTLogEntryWithInclusionPromise(entry) {
 14126      return entry.inclusionPromise !== undefined;
 14127  }
 14128  function isTLogEntryWithInclusionProof(entry) {
 14129      return entry.inclusionProof !== undefined;
 14130  }
 14131  
 14132  
 14133  /***/ }),
 14134  
 14135  /***/ 11407:
 14136  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 14137  
 14138  "use strict";
 14139  
 14140  Object.defineProperty(exports, "__esModule", ({ value: true }));
 14141  exports.verifyMerkleInclusion = void 0;
 14142  /*
 14143  Copyright 2023 The Sigstore Authors.
 14144  
 14145  Licensed under the Apache License, Version 2.0 (the "License");
 14146  you may not use this file except in compliance with the License.
 14147  You may obtain a copy of the License at
 14148  
 14149      http://www.apache.org/licenses/LICENSE-2.0
 14150  
 14151  Unless required by applicable law or agreed to in writing, software
 14152  distributed under the License is distributed on an "AS IS" BASIS,
 14153  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14154  See the License for the specific language governing permissions and
 14155  limitations under the License.
 14156  */
 14157  const core_1 = __nccwpck_require__(3352);
 14158  const error_1 = __nccwpck_require__(58948);
 14159  const RFC6962_LEAF_HASH_PREFIX = Buffer.from([0x00]);
 14160  const RFC6962_NODE_HASH_PREFIX = Buffer.from([0x01]);
 14161  function verifyMerkleInclusion(entry) {
 14162      const inclusionProof = entry.inclusionProof;
 14163      const logIndex = BigInt(inclusionProof.logIndex);
 14164      const treeSize = BigInt(inclusionProof.treeSize);
 14165      if (logIndex < 0n || logIndex >= treeSize) {
 14166          throw new error_1.VerificationError({
 14167              code: 'TLOG_INCLUSION_PROOF_ERROR',
 14168              message: `invalid index: ${logIndex}`,
 14169          });
 14170      }
 14171      // Figure out which subset of hashes corresponds to the inner and border
 14172      // nodes
 14173      const { inner, border } = decompInclProof(logIndex, treeSize);
 14174      if (inclusionProof.hashes.length !== inner + border) {
 14175          throw new error_1.VerificationError({
 14176              code: 'TLOG_INCLUSION_PROOF_ERROR',
 14177              message: 'invalid hash count',
 14178          });
 14179      }
 14180      const innerHashes = inclusionProof.hashes.slice(0, inner);
 14181      const borderHashes = inclusionProof.hashes.slice(inner);
 14182      // The entry's hash is the leaf hash
 14183      const leafHash = hashLeaf(entry.canonicalizedBody);
 14184      // Chain the hashes belonging to the inner and border portions
 14185      const calculatedHash = chainBorderRight(chainInner(leafHash, innerHashes, logIndex), borderHashes);
 14186      // Calculated hash should match the root hash in the inclusion proof
 14187      if (!core_1.crypto.bufferEqual(calculatedHash, inclusionProof.rootHash)) {
 14188          throw new error_1.VerificationError({
 14189              code: 'TLOG_INCLUSION_PROOF_ERROR',
 14190              message: 'calculated root hash does not match inclusion proof',
 14191          });
 14192      }
 14193  }
 14194  exports.verifyMerkleInclusion = verifyMerkleInclusion;
 14195  // Breaks down inclusion proof for a leaf at the specified index in a tree of
 14196  // the specified size. The split point is where paths to the index leaf and
 14197  // the (size - 1) leaf diverge. Returns lengths of the bottom and upper proof
 14198  // parts.
 14199  function decompInclProof(index, size) {
 14200      const inner = innerProofSize(index, size);
 14201      const border = onesCount(index >> BigInt(inner));
 14202      return { inner, border };
 14203  }
 14204  // Computes a subtree hash for a node on or below the tree's right border.
 14205  // Assumes the provided proof hashes are ordered from lower to higher levels
 14206  // and seed is the initial hash of the node specified by the index.
 14207  function chainInner(seed, hashes, index) {
 14208      return hashes.reduce((acc, h, i) => {
 14209          if ((index >> BigInt(i)) & BigInt(1)) {
 14210              return hashChildren(h, acc);
 14211          }
 14212          else {
 14213              return hashChildren(acc, h);
 14214          }
 14215      }, seed);
 14216  }
 14217  // Computes a subtree hash for nodes along the tree's right border.
 14218  function chainBorderRight(seed, hashes) {
 14219      return hashes.reduce((acc, h) => hashChildren(h, acc), seed);
 14220  }
 14221  function innerProofSize(index, size) {
 14222      return bitLength(index ^ (size - BigInt(1)));
 14223  }
 14224  // Counts the number of ones in the binary representation of the given number.
 14225  // https://en.wikipedia.org/wiki/Hamming_weight
 14226  function onesCount(num) {
 14227      return num.toString(2).split('1').length - 1;
 14228  }
 14229  // Returns the number of bits necessary to represent an integer in binary.
 14230  function bitLength(n) {
 14231      if (n === 0n) {
 14232          return 0;
 14233      }
 14234      return n.toString(2).length;
 14235  }
 14236  // Hashing logic according to RFC6962.
 14237  // https://datatracker.ietf.org/doc/html/rfc6962#section-2
 14238  function hashChildren(left, right) {
 14239      return core_1.crypto.hash(RFC6962_NODE_HASH_PREFIX, left, right);
 14240  }
 14241  function hashLeaf(leaf) {
 14242      return core_1.crypto.hash(RFC6962_LEAF_HASH_PREFIX, leaf);
 14243  }
 14244  
 14245  
 14246  /***/ }),
 14247  
 14248  /***/ 67527:
 14249  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 14250  
 14251  "use strict";
 14252  
 14253  Object.defineProperty(exports, "__esModule", ({ value: true }));
 14254  exports.verifyTLogSET = void 0;
 14255  /*
 14256  Copyright 2023 The Sigstore Authors.
 14257  
 14258  Licensed under the Apache License, Version 2.0 (the "License");
 14259  you may not use this file except in compliance with the License.
 14260  You may obtain a copy of the License at
 14261  
 14262      http://www.apache.org/licenses/LICENSE-2.0
 14263  
 14264  Unless required by applicable law or agreed to in writing, software
 14265  distributed under the License is distributed on an "AS IS" BASIS,
 14266  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14267  See the License for the specific language governing permissions and
 14268  limitations under the License.
 14269  */
 14270  const core_1 = __nccwpck_require__(3352);
 14271  const error_1 = __nccwpck_require__(58948);
 14272  const trust_1 = __nccwpck_require__(14503);
 14273  // Verifies the SET for the given entry against the list of trusted
 14274  // transparency logs. Returns true if the SET can be verified against at least
 14275  // one of the trusted logs; otherwise, returns false.
 14276  function verifyTLogSET(entry, tlogs) {
 14277      // Filter the list of tlog instances to only those which might be able to
 14278      // verify the SET
 14279      const validTLogs = (0, trust_1.filterTLogAuthorities)(tlogs, {
 14280          logID: entry.logId.keyId,
 14281          targetDate: new Date(Number(entry.integratedTime) * 1000),
 14282      });
 14283      // Check to see if we can verify the SET against any of the valid tlogs
 14284      const verified = validTLogs.some((tlog) => {
 14285          // Re-create the original Rekor verification payload
 14286          const payload = toVerificationPayload(entry);
 14287          // Canonicalize the payload and turn into a buffer for verification
 14288          const data = Buffer.from(core_1.json.canonicalize(payload), 'utf8');
 14289          // Extract the SET from the tlog entry
 14290          const signature = entry.inclusionPromise.signedEntryTimestamp;
 14291          return core_1.crypto.verify(data, tlog.publicKey, signature);
 14292      });
 14293      if (!verified) {
 14294          throw new error_1.VerificationError({
 14295              code: 'TLOG_INCLUSION_PROMISE_ERROR',
 14296              message: 'inclusion promise could not be verified',
 14297          });
 14298      }
 14299  }
 14300  exports.verifyTLogSET = verifyTLogSET;
 14301  // Returns a properly formatted "VerificationPayload" for one of the
 14302  // transaction log entires in the given bundle which can be used for SET
 14303  // verification.
 14304  function toVerificationPayload(entry) {
 14305      const { integratedTime, logIndex, logId, canonicalizedBody } = entry;
 14306      return {
 14307          body: canonicalizedBody.toString('base64'),
 14308          integratedTime: Number(integratedTime),
 14309          logIndex: Number(logIndex),
 14310          logID: logId.keyId.toString('hex'),
 14311      };
 14312  }
 14313  
 14314  
 14315  /***/ }),
 14316  
 14317  /***/ 2574:
 14318  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 14319  
 14320  "use strict";
 14321  
 14322  Object.defineProperty(exports, "__esModule", ({ value: true }));
 14323  exports.verifyRFC3161Timestamp = void 0;
 14324  const core_1 = __nccwpck_require__(3352);
 14325  const error_1 = __nccwpck_require__(58948);
 14326  const certificate_1 = __nccwpck_require__(88766);
 14327  const trust_1 = __nccwpck_require__(14503);
 14328  function verifyRFC3161Timestamp(timestamp, data, timestampAuthorities) {
 14329      const signingTime = timestamp.signingTime;
 14330      // Filter for CAs which were valid at the time of signing
 14331      timestampAuthorities = (0, trust_1.filterCertAuthorities)(timestampAuthorities, {
 14332          start: signingTime,
 14333          end: signingTime,
 14334      });
 14335      // Filter for CAs which match serial and issuer embedded in the timestamp
 14336      timestampAuthorities = filterCAsBySerialAndIssuer(timestampAuthorities, {
 14337          serialNumber: timestamp.signerSerialNumber,
 14338          issuer: timestamp.signerIssuer,
 14339      });
 14340      // Check that we can verify the timestamp with AT LEAST ONE of the remaining
 14341      // CAs
 14342      const verified = timestampAuthorities.some((ca) => {
 14343          try {
 14344              verifyTimestampForCA(timestamp, data, ca);
 14345              return true;
 14346          }
 14347          catch (e) {
 14348              return false;
 14349          }
 14350      });
 14351      if (!verified) {
 14352          throw new error_1.VerificationError({
 14353              code: 'TIMESTAMP_ERROR',
 14354              message: 'timestamp could not be verified',
 14355          });
 14356      }
 14357  }
 14358  exports.verifyRFC3161Timestamp = verifyRFC3161Timestamp;
 14359  function verifyTimestampForCA(timestamp, data, ca) {
 14360      const [leaf, ...cas] = ca.certChain;
 14361      const signingKey = core_1.crypto.createPublicKey(leaf.publicKey);
 14362      const signingTime = timestamp.signingTime;
 14363      // Verify the certificate chain for the provided CA
 14364      try {
 14365          new certificate_1.CertificateChainVerifier({
 14366              untrustedCert: leaf,
 14367              trustedCerts: cas,
 14368          }).verify();
 14369      }
 14370      catch (e) {
 14371          throw new error_1.VerificationError({
 14372              code: 'TIMESTAMP_ERROR',
 14373              message: 'invalid certificate chain',
 14374          });
 14375      }
 14376      // Check that all of the CA certs were valid at the time of signing
 14377      const validAtSigningTime = ca.certChain.every((cert) => cert.validForDate(signingTime));
 14378      if (!validAtSigningTime) {
 14379          throw new error_1.VerificationError({
 14380              code: 'TIMESTAMP_ERROR',
 14381              message: 'timestamp was signed with an expired certificate',
 14382          });
 14383      }
 14384      // Check that the signing certificate's key can be used to verify the
 14385      // timestamp signature.
 14386      timestamp.verify(data, signingKey);
 14387  }
 14388  // Filters the list of CAs to those which have a leaf signing certificate which
 14389  // matches the given serial number and issuer.
 14390  function filterCAsBySerialAndIssuer(timestampAuthorities, criteria) {
 14391      return timestampAuthorities.filter((ca) => ca.certChain.length > 0 &&
 14392          core_1.crypto.bufferEqual(ca.certChain[0].serialNumber, criteria.serialNumber) &&
 14393          core_1.crypto.bufferEqual(ca.certChain[0].issuer, criteria.issuer));
 14394  }
 14395  
 14396  
 14397  /***/ }),
 14398  
 14399  /***/ 4625:
 14400  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 14401  
 14402  "use strict";
 14403  
 14404  Object.defineProperty(exports, "__esModule", ({ value: true }));
 14405  exports.verifyDSSETLogBody = void 0;
 14406  /*
 14407  Copyright 2023 The Sigstore Authors.
 14408  
 14409  Licensed under the Apache License, Version 2.0 (the "License");
 14410  you may not use this file except in compliance with the License.
 14411  You may obtain a copy of the License at
 14412  
 14413      http://www.apache.org/licenses/LICENSE-2.0
 14414  
 14415  Unless required by applicable law or agreed to in writing, software
 14416  distributed under the License is distributed on an "AS IS" BASIS,
 14417  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14418  See the License for the specific language governing permissions and
 14419  limitations under the License.
 14420  */
 14421  const error_1 = __nccwpck_require__(58948);
 14422  // Compare the given intoto tlog entry to the given bundle
 14423  function verifyDSSETLogBody(tlogEntry, content) {
 14424      switch (tlogEntry.apiVersion) {
 14425          case '0.0.1':
 14426              return verifyDSSE001TLogBody(tlogEntry, content);
 14427          default:
 14428              throw new error_1.VerificationError({
 14429                  code: 'TLOG_BODY_ERROR',
 14430                  message: `unsupported dsse version: ${tlogEntry.apiVersion}`,
 14431              });
 14432      }
 14433  }
 14434  exports.verifyDSSETLogBody = verifyDSSETLogBody;
 14435  // Compare the given dsse v0.0.1 tlog entry to the given DSSE envelope.
 14436  function verifyDSSE001TLogBody(tlogEntry, content) {
 14437      // Ensure the bundle's DSSE only contains a single signature
 14438      if (tlogEntry.spec.signatures?.length !== 1) {
 14439          throw new error_1.VerificationError({
 14440              code: 'TLOG_BODY_ERROR',
 14441              message: 'signature count mismatch',
 14442          });
 14443      }
 14444      const tlogSig = tlogEntry.spec.signatures[0].signature;
 14445      // Ensure that the signature in the bundle's DSSE matches tlog entry
 14446      if (!content.compareSignature(Buffer.from(tlogSig, 'base64')))
 14447          throw new error_1.VerificationError({
 14448              code: 'TLOG_BODY_ERROR',
 14449              message: 'tlog entry signature mismatch',
 14450          });
 14451      // Ensure the digest of the bundle's DSSE payload matches the digest in the
 14452      // tlog entry
 14453      const tlogHash = tlogEntry.spec.payloadHash?.value || '';
 14454      if (!content.compareDigest(Buffer.from(tlogHash, 'hex'))) {
 14455          throw new error_1.VerificationError({
 14456              code: 'TLOG_BODY_ERROR',
 14457              message: 'DSSE payload hash mismatch',
 14458          });
 14459      }
 14460  }
 14461  
 14462  
 14463  /***/ }),
 14464  
 14465  /***/ 935:
 14466  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 14467  
 14468  "use strict";
 14469  
 14470  Object.defineProperty(exports, "__esModule", ({ value: true }));
 14471  exports.verifyHashedRekordTLogBody = void 0;
 14472  /*
 14473  Copyright 2023 The Sigstore Authors.
 14474  
 14475  Licensed under the Apache License, Version 2.0 (the "License");
 14476  you may not use this file except in compliance with the License.
 14477  You may obtain a copy of the License at
 14478  
 14479      http://www.apache.org/licenses/LICENSE-2.0
 14480  
 14481  Unless required by applicable law or agreed to in writing, software
 14482  distributed under the License is distributed on an "AS IS" BASIS,
 14483  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14484  See the License for the specific language governing permissions and
 14485  limitations under the License.
 14486  */
 14487  const error_1 = __nccwpck_require__(58948);
 14488  // Compare the given hashedrekord tlog entry to the given bundle
 14489  function verifyHashedRekordTLogBody(tlogEntry, content) {
 14490      switch (tlogEntry.apiVersion) {
 14491          case '0.0.1':
 14492              return verifyHashedrekord001TLogBody(tlogEntry, content);
 14493          default:
 14494              throw new error_1.VerificationError({
 14495                  code: 'TLOG_BODY_ERROR',
 14496                  message: `unsupported hashedrekord version: ${tlogEntry.apiVersion}`,
 14497              });
 14498      }
 14499  }
 14500  exports.verifyHashedRekordTLogBody = verifyHashedRekordTLogBody;
 14501  // Compare the given hashedrekord v0.0.1 tlog entry to the given message
 14502  // signature
 14503  function verifyHashedrekord001TLogBody(tlogEntry, content) {
 14504      // Ensure that the bundles message signature matches the tlog entry
 14505      const tlogSig = tlogEntry.spec.signature.content || '';
 14506      if (!content.compareSignature(Buffer.from(tlogSig, 'base64'))) {
 14507          throw new error_1.VerificationError({
 14508              code: 'TLOG_BODY_ERROR',
 14509              message: 'signature mismatch',
 14510          });
 14511      }
 14512      // Ensure that the bundle's message digest matches the tlog entry
 14513      const tlogDigest = tlogEntry.spec.data.hash?.value || '';
 14514      if (!content.compareDigest(Buffer.from(tlogDigest, 'hex'))) {
 14515          throw new error_1.VerificationError({
 14516              code: 'TLOG_BODY_ERROR',
 14517              message: 'digest mismatch',
 14518          });
 14519      }
 14520  }
 14521  
 14522  
 14523  /***/ }),
 14524  
 14525  /***/ 24566:
 14526  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 14527  
 14528  "use strict";
 14529  
 14530  Object.defineProperty(exports, "__esModule", ({ value: true }));
 14531  exports.verifyTLogBody = void 0;
 14532  /*
 14533  Copyright 2023 The Sigstore Authors.
 14534  
 14535  Licensed under the Apache License, Version 2.0 (the "License");
 14536  you may not use this file except in compliance with the License.
 14537  You may obtain a copy of the License at
 14538  
 14539      http://www.apache.org/licenses/LICENSE-2.0
 14540  
 14541  Unless required by applicable law or agreed to in writing, software
 14542  distributed under the License is distributed on an "AS IS" BASIS,
 14543  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14544  See the License for the specific language governing permissions and
 14545  limitations under the License.
 14546  */
 14547  const error_1 = __nccwpck_require__(58948);
 14548  const dsse_1 = __nccwpck_require__(4625);
 14549  const hashedrekord_1 = __nccwpck_require__(935);
 14550  const intoto_1 = __nccwpck_require__(23109);
 14551  // Verifies that the given tlog entry matches the supplied signature content.
 14552  function verifyTLogBody(entry, sigContent) {
 14553      const { kind, version } = entry.kindVersion;
 14554      const body = JSON.parse(entry.canonicalizedBody.toString('utf8'));
 14555      if (kind !== body.kind || version !== body.apiVersion) {
 14556          throw new error_1.VerificationError({
 14557              code: 'TLOG_BODY_ERROR',
 14558              message: `kind/version mismatch - expected: ${kind}/${version}, received: ${body.kind}/${body.apiVersion}`,
 14559          });
 14560      }
 14561      switch (body.kind) {
 14562          case 'dsse':
 14563              return (0, dsse_1.verifyDSSETLogBody)(body, sigContent);
 14564          case 'intoto':
 14565              return (0, intoto_1.verifyIntotoTLogBody)(body, sigContent);
 14566          case 'hashedrekord':
 14567              return (0, hashedrekord_1.verifyHashedRekordTLogBody)(body, sigContent);
 14568          /* istanbul ignore next */
 14569          default:
 14570              throw new error_1.VerificationError({
 14571                  code: 'TLOG_BODY_ERROR',
 14572                  message: `unsupported kind: ${kind}`,
 14573              });
 14574      }
 14575  }
 14576  exports.verifyTLogBody = verifyTLogBody;
 14577  
 14578  
 14579  /***/ }),
 14580  
 14581  /***/ 23109:
 14582  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 14583  
 14584  "use strict";
 14585  
 14586  Object.defineProperty(exports, "__esModule", ({ value: true }));
 14587  exports.verifyIntotoTLogBody = void 0;
 14588  /*
 14589  Copyright 2023 The Sigstore Authors.
 14590  
 14591  Licensed under the Apache License, Version 2.0 (the "License");
 14592  you may not use this file except in compliance with the License.
 14593  You may obtain a copy of the License at
 14594  
 14595      http://www.apache.org/licenses/LICENSE-2.0
 14596  
 14597  Unless required by applicable law or agreed to in writing, software
 14598  distributed under the License is distributed on an "AS IS" BASIS,
 14599  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14600  See the License for the specific language governing permissions and
 14601  limitations under the License.
 14602  */
 14603  const error_1 = __nccwpck_require__(58948);
 14604  // Compare the given intoto tlog entry to the given bundle
 14605  function verifyIntotoTLogBody(tlogEntry, content) {
 14606      switch (tlogEntry.apiVersion) {
 14607          case '0.0.2':
 14608              return verifyIntoto002TLogBody(tlogEntry, content);
 14609          default:
 14610              throw new error_1.VerificationError({
 14611                  code: 'TLOG_BODY_ERROR',
 14612                  message: `unsupported intoto version: ${tlogEntry.apiVersion}`,
 14613              });
 14614      }
 14615  }
 14616  exports.verifyIntotoTLogBody = verifyIntotoTLogBody;
 14617  // Compare the given intoto v0.0.2 tlog entry to the given DSSE envelope.
 14618  function verifyIntoto002TLogBody(tlogEntry, content) {
 14619      // Ensure the bundle's DSSE contains a single signature
 14620      if (tlogEntry.spec.content.envelope.signatures?.length !== 1) {
 14621          throw new error_1.VerificationError({
 14622              code: 'TLOG_BODY_ERROR',
 14623              message: 'signature count mismatch',
 14624          });
 14625      }
 14626      // Signature is double-base64-encoded in the tlog entry
 14627      const tlogSig = base64Decode(tlogEntry.spec.content.envelope.signatures[0].sig);
 14628      // Ensure that the signature in the bundle's DSSE matches tlog entry
 14629      if (!content.compareSignature(Buffer.from(tlogSig, 'base64'))) {
 14630          throw new error_1.VerificationError({
 14631              code: 'TLOG_BODY_ERROR',
 14632              message: 'tlog entry signature mismatch',
 14633          });
 14634      }
 14635      // Ensure the digest of the bundle's DSSE payload matches the digest in the
 14636      // tlog entry
 14637      const tlogHash = tlogEntry.spec.content.payloadHash?.value || '';
 14638      if (!content.compareDigest(Buffer.from(tlogHash, 'hex'))) {
 14639          throw new error_1.VerificationError({
 14640              code: 'TLOG_BODY_ERROR',
 14641              message: 'DSSE payload hash mismatch',
 14642          });
 14643      }
 14644  }
 14645  function base64Decode(str) {
 14646      return Buffer.from(str, 'base64').toString('utf-8');
 14647  }
 14648  
 14649  
 14650  /***/ }),
 14651  
 14652  /***/ 26906:
 14653  /***/ ((__unused_webpack_module, exports) => {
 14654  
 14655  "use strict";
 14656  
 14657  Object.defineProperty(exports, "__esModule", ({ value: true }));
 14658  exports.filterTLogAuthorities = exports.filterCertAuthorities = void 0;
 14659  function filterCertAuthorities(certAuthorities, criteria) {
 14660      return certAuthorities.filter((ca) => {
 14661          return (ca.validFor.start <= criteria.start && ca.validFor.end >= criteria.end);
 14662      });
 14663  }
 14664  exports.filterCertAuthorities = filterCertAuthorities;
 14665  // Filter the list of tlog instances to only those which match the given log
 14666  // ID and have public keys which are valid for the given integrated time.
 14667  function filterTLogAuthorities(tlogAuthorities, criteria) {
 14668      return tlogAuthorities.filter((tlog) => {
 14669          // If we're filtering by log ID and the log IDs don't match, we can't use
 14670          // this tlog
 14671          if (criteria.logID && !tlog.logID.equals(criteria.logID)) {
 14672              return false;
 14673          }
 14674          // Check that the integrated time is within the validFor range
 14675          return (tlog.validFor.start <= criteria.targetDate &&
 14676              criteria.targetDate <= tlog.validFor.end);
 14677      });
 14678  }
 14679  exports.filterTLogAuthorities = filterTLogAuthorities;
 14680  
 14681  
 14682  /***/ }),
 14683  
 14684  /***/ 14503:
 14685  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 14686  
 14687  "use strict";
 14688  
 14689  Object.defineProperty(exports, "__esModule", ({ value: true }));
 14690  exports.toTrustMaterial = exports.filterTLogAuthorities = exports.filterCertAuthorities = void 0;
 14691  /*
 14692  Copyright 2023 The Sigstore Authors.
 14693  
 14694  Licensed under the Apache License, Version 2.0 (the "License");
 14695  you may not use this file except in compliance with the License.
 14696  You may obtain a copy of the License at
 14697  
 14698      http://www.apache.org/licenses/LICENSE-2.0
 14699  
 14700  Unless required by applicable law or agreed to in writing, software
 14701  distributed under the License is distributed on an "AS IS" BASIS,
 14702  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14703  See the License for the specific language governing permissions and
 14704  limitations under the License.
 14705  */
 14706  const core_1 = __nccwpck_require__(3352);
 14707  const protobuf_specs_1 = __nccwpck_require__(60530);
 14708  const error_1 = __nccwpck_require__(58948);
 14709  const BEGINNING_OF_TIME = new Date(0);
 14710  const END_OF_TIME = new Date(8640000000000000);
 14711  var filter_1 = __nccwpck_require__(26906);
 14712  Object.defineProperty(exports, "filterCertAuthorities", ({ enumerable: true, get: function () { return filter_1.filterCertAuthorities; } }));
 14713  Object.defineProperty(exports, "filterTLogAuthorities", ({ enumerable: true, get: function () { return filter_1.filterTLogAuthorities; } }));
 14714  function toTrustMaterial(root, keys) {
 14715      const keyFinder = typeof keys === 'function' ? keys : keyLocator(keys);
 14716      return {
 14717          certificateAuthorities: root.certificateAuthorities.map(createCertAuthority),
 14718          timestampAuthorities: root.timestampAuthorities.map(createCertAuthority),
 14719          tlogs: root.tlogs.map(createTLogAuthority),
 14720          ctlogs: root.ctlogs.map(createTLogAuthority),
 14721          publicKey: keyFinder,
 14722      };
 14723  }
 14724  exports.toTrustMaterial = toTrustMaterial;
 14725  function createTLogAuthority(tlogInstance) {
 14726      const keyDetails = tlogInstance.publicKey.keyDetails;
 14727      const keyType = keyDetails === protobuf_specs_1.PublicKeyDetails.PKCS1_RSA_PKCS1V5 ||
 14728          keyDetails === protobuf_specs_1.PublicKeyDetails.PKIX_RSA_PKCS1V5 ||
 14729          keyDetails === protobuf_specs_1.PublicKeyDetails.PKIX_RSA_PKCS1V15_2048_SHA256 ||
 14730          keyDetails === protobuf_specs_1.PublicKeyDetails.PKIX_RSA_PKCS1V15_3072_SHA256 ||
 14731          keyDetails === protobuf_specs_1.PublicKeyDetails.PKIX_RSA_PKCS1V15_4096_SHA256
 14732          ? 'pkcs1'
 14733          : 'spki';
 14734      return {
 14735          logID: tlogInstance.logId.keyId,
 14736          publicKey: core_1.crypto.createPublicKey(tlogInstance.publicKey.rawBytes, keyType),
 14737          validFor: {
 14738              start: tlogInstance.publicKey.validFor?.start || BEGINNING_OF_TIME,
 14739              end: tlogInstance.publicKey.validFor?.end || END_OF_TIME,
 14740          },
 14741      };
 14742  }
 14743  function createCertAuthority(ca) {
 14744      return {
 14745          certChain: ca.certChain.certificates.map((cert) => {
 14746              return core_1.X509Certificate.parse(cert.rawBytes);
 14747          }),
 14748          validFor: {
 14749              start: ca.validFor?.start || BEGINNING_OF_TIME,
 14750              end: ca.validFor?.end || END_OF_TIME,
 14751          },
 14752      };
 14753  }
 14754  function keyLocator(keys) {
 14755      return (hint) => {
 14756          const key = (keys || {})[hint];
 14757          if (!key) {
 14758              throw new error_1.VerificationError({
 14759                  code: 'PUBLIC_KEY_ERROR',
 14760                  message: `key not found: ${hint}`,
 14761              });
 14762          }
 14763          return {
 14764              publicKey: core_1.crypto.createPublicKey(key.rawBytes),
 14765              validFor: (date) => {
 14766                  return ((key.validFor?.start || BEGINNING_OF_TIME) <= date &&
 14767                      (key.validFor?.end || END_OF_TIME) >= date);
 14768              },
 14769          };
 14770      };
 14771  }
 14772  
 14773  
 14774  /***/ }),
 14775  
 14776  /***/ 95456:
 14777  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 14778  
 14779  "use strict";
 14780  
 14781  Object.defineProperty(exports, "__esModule", ({ value: true }));
 14782  exports.Verifier = void 0;
 14783  /*
 14784  Copyright 2023 The Sigstore Authors.
 14785  
 14786  Licensed under the Apache License, Version 2.0 (the "License");
 14787  you may not use this file except in compliance with the License.
 14788  You may obtain a copy of the License at
 14789  
 14790      http://www.apache.org/licenses/LICENSE-2.0
 14791  
 14792  Unless required by applicable law or agreed to in writing, software
 14793  distributed under the License is distributed on an "AS IS" BASIS,
 14794  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14795  See the License for the specific language governing permissions and
 14796  limitations under the License.
 14797  */
 14798  const util_1 = __nccwpck_require__(73837);
 14799  const error_1 = __nccwpck_require__(58948);
 14800  const key_1 = __nccwpck_require__(96829);
 14801  const policy_1 = __nccwpck_require__(83978);
 14802  const timestamp_1 = __nccwpck_require__(29511);
 14803  const tlog_1 = __nccwpck_require__(24566);
 14804  class Verifier {
 14805      constructor(trustMaterial, options = {}) {
 14806          this.trustMaterial = trustMaterial;
 14807          this.options = {
 14808              ctlogThreshold: options.ctlogThreshold ?? 1,
 14809              tlogThreshold: options.tlogThreshold ?? 1,
 14810              tsaThreshold: options.tsaThreshold ?? 0,
 14811          };
 14812      }
 14813      verify(entity, policy) {
 14814          const timestamps = this.verifyTimestamps(entity);
 14815          const signer = this.verifySigningKey(entity, timestamps);
 14816          this.verifyTLogs(entity);
 14817          this.verifySignature(entity, signer);
 14818          if (policy) {
 14819              this.verifyPolicy(policy, signer.identity || {});
 14820          }
 14821          return signer;
 14822      }
 14823      // Checks that all of the timestamps in the entity are valid and returns them
 14824      verifyTimestamps(entity) {
 14825          let tlogCount = 0;
 14826          let tsaCount = 0;
 14827          const timestamps = entity.timestamps.map((timestamp) => {
 14828              switch (timestamp.$case) {
 14829                  case 'timestamp-authority':
 14830                      tsaCount++;
 14831                      return (0, timestamp_1.verifyTSATimestamp)(timestamp.timestamp, entity.signature.signature, this.trustMaterial.timestampAuthorities);
 14832                  case 'transparency-log':
 14833                      tlogCount++;
 14834                      return (0, timestamp_1.verifyTLogTimestamp)(timestamp.tlogEntry, this.trustMaterial.tlogs);
 14835              }
 14836          });
 14837          // Check for duplicate timestamps
 14838          if (containsDupes(timestamps)) {
 14839              throw new error_1.VerificationError({
 14840                  code: 'TIMESTAMP_ERROR',
 14841                  message: 'duplicate timestamp',
 14842              });
 14843          }
 14844          if (tlogCount < this.options.tlogThreshold) {
 14845              throw new error_1.VerificationError({
 14846                  code: 'TIMESTAMP_ERROR',
 14847                  message: `expected ${this.options.tlogThreshold} tlog timestamps, got ${tlogCount}`,
 14848              });
 14849          }
 14850          if (tsaCount < this.options.tsaThreshold) {
 14851              throw new error_1.VerificationError({
 14852                  code: 'TIMESTAMP_ERROR',
 14853                  message: `expected ${this.options.tsaThreshold} tsa timestamps, got ${tsaCount}`,
 14854              });
 14855          }
 14856          return timestamps.map((t) => t.timestamp);
 14857      }
 14858      // Checks that the signing key is valid for all of the the supplied timestamps
 14859      // and returns the signer.
 14860      verifySigningKey({ key }, timestamps) {
 14861          switch (key.$case) {
 14862              case 'public-key': {
 14863                  return (0, key_1.verifyPublicKey)(key.hint, timestamps, this.trustMaterial);
 14864              }
 14865              case 'certificate': {
 14866                  const result = (0, key_1.verifyCertificate)(key.certificate, timestamps, this.trustMaterial);
 14867                  /* istanbul ignore next - no fixture */
 14868                  if (containsDupes(result.scts)) {
 14869                      throw new error_1.VerificationError({
 14870                          code: 'CERTIFICATE_ERROR',
 14871                          message: 'duplicate SCT',
 14872                      });
 14873                  }
 14874                  if (result.scts.length < this.options.ctlogThreshold) {
 14875                      throw new error_1.VerificationError({
 14876                          code: 'CERTIFICATE_ERROR',
 14877                          message: `expected ${this.options.ctlogThreshold} SCTs, got ${result.scts.length}`,
 14878                      });
 14879                  }
 14880                  return result.signer;
 14881              }
 14882          }
 14883      }
 14884      // Checks that the tlog entries are valid for the supplied content
 14885      verifyTLogs({ signature: content, tlogEntries }) {
 14886          tlogEntries.forEach((entry) => (0, tlog_1.verifyTLogBody)(entry, content));
 14887      }
 14888      // Checks that the signature is valid for the supplied content
 14889      verifySignature(entity, signer) {
 14890          if (!entity.signature.verifySignature(signer.key)) {
 14891              throw new error_1.VerificationError({
 14892                  code: 'SIGNATURE_ERROR',
 14893                  message: 'signature verification failed',
 14894              });
 14895          }
 14896      }
 14897      verifyPolicy(policy, identity) {
 14898          // Check the subject alternative name of the signer matches the policy
 14899          if (policy.subjectAlternativeName) {
 14900              (0, policy_1.verifySubjectAlternativeName)(policy.subjectAlternativeName, identity.subjectAlternativeName);
 14901          }
 14902          // Check that the extensions of the signer match the policy
 14903          if (policy.extensions) {
 14904              (0, policy_1.verifyExtensions)(policy.extensions, identity.extensions);
 14905          }
 14906      }
 14907  }
 14908  exports.Verifier = Verifier;
 14909  // Checks for duplicate items in the array. Objects are compared using
 14910  // deep equality.
 14911  function containsDupes(arr) {
 14912      for (let i = 0; i < arr.length; i++) {
 14913          for (let j = i + 1; j < arr.length; j++) {
 14914              if ((0, util_1.isDeepStrictEqual)(arr[i], arr[j])) {
 14915                  return true;
 14916              }
 14917          }
 14918      }
 14919      return false;
 14920  }
 14921  
 14922  
 14923  /***/ }),
 14924  
 14925  /***/ 19652:
 14926  /***/ ((module) => {
 14927  
 14928  const COMMA = ',';
 14929  const COLON = ':';
 14930  const LEFT_SQUARE_BRACKET = '[';
 14931  const RIGHT_SQUARE_BRACKET = ']';
 14932  const LEFT_CURLY_BRACKET = '{';
 14933  const RIGHT_CURLY_BRACKET = '}';
 14934  
 14935  // Recursively encodes the supplied object according to the canonical JSON form
 14936  // as specified at http://wiki.laptop.org/go/Canonical_JSON. It's a restricted
 14937  // dialect of JSON in which keys are lexically sorted, floats are not allowed,
 14938  // and only double quotes and backslashes are escaped.
 14939  function canonicalize(object) {
 14940    const buffer = [];
 14941    if (typeof object === 'string') {
 14942      buffer.push(canonicalizeString(object));
 14943    } else if (typeof object === 'boolean') {
 14944      buffer.push(JSON.stringify(object));
 14945    } else if (Number.isInteger(object)) {
 14946      buffer.push(JSON.stringify(object));
 14947    } else if (object === null) {
 14948      buffer.push(JSON.stringify(object));
 14949    } else if (Array.isArray(object)) {
 14950      buffer.push(LEFT_SQUARE_BRACKET);
 14951      let first = true;
 14952      object.forEach((element) => {
 14953        if (!first) {
 14954          buffer.push(COMMA);
 14955        }
 14956        first = false;
 14957        buffer.push(canonicalize(element));
 14958      });
 14959      buffer.push(RIGHT_SQUARE_BRACKET);
 14960    } else if (typeof object === 'object') {
 14961      buffer.push(LEFT_CURLY_BRACKET);
 14962      let first = true;
 14963      Object.keys(object)
 14964        .sort()
 14965        .forEach((property) => {
 14966          if (!first) {
 14967            buffer.push(COMMA);
 14968          }
 14969          first = false;
 14970          buffer.push(canonicalizeString(property));
 14971          buffer.push(COLON);
 14972          buffer.push(canonicalize(object[property]));
 14973        });
 14974      buffer.push(RIGHT_CURLY_BRACKET);
 14975    } else {
 14976      throw new TypeError('cannot encode ' + object.toString());
 14977    }
 14978  
 14979    return buffer.join('');
 14980  }
 14981  
 14982  // String canonicalization consists of escaping backslash (\) and double
 14983  // quote (") characters and wrapping the resulting string in double quotes.
 14984  function canonicalizeString(string) {
 14985    const escapedString = string.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
 14986    return '"' + escapedString + '"';
 14987  }
 14988  
 14989  module.exports = {
 14990    canonicalize,
 14991  };
 14992  
 14993  
 14994  /***/ }),
 14995  
 14996  /***/ 60159:
 14997  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 14998  
 14999  "use strict";
 15000  
 15001  var __importDefault = (this && this.__importDefault) || function (mod) {
 15002      return (mod && mod.__esModule) ? mod : { "default": mod };
 15003  };
 15004  Object.defineProperty(exports, "__esModule", ({ value: true }));
 15005  exports.Signed = exports.isMetadataKind = exports.MetadataKind = void 0;
 15006  const util_1 = __importDefault(__nccwpck_require__(73837));
 15007  const error_1 = __nccwpck_require__(58448);
 15008  const utils_1 = __nccwpck_require__(45688);
 15009  const SPECIFICATION_VERSION = ['1', '0', '31'];
 15010  var MetadataKind;
 15011  (function (MetadataKind) {
 15012      MetadataKind["Root"] = "root";
 15013      MetadataKind["Timestamp"] = "timestamp";
 15014      MetadataKind["Snapshot"] = "snapshot";
 15015      MetadataKind["Targets"] = "targets";
 15016  })(MetadataKind || (exports.MetadataKind = MetadataKind = {}));
 15017  function isMetadataKind(value) {
 15018      return (typeof value === 'string' &&
 15019          Object.values(MetadataKind).includes(value));
 15020  }
 15021  exports.isMetadataKind = isMetadataKind;
 15022  /***
 15023   * A base class for the signed part of TUF metadata.
 15024   *
 15025   * Objects with base class Signed are usually included in a ``Metadata`` object
 15026   * on the signed attribute. This class provides attributes and methods that
 15027   * are common for all TUF metadata types (roles).
 15028   */
 15029  class Signed {
 15030      constructor(options) {
 15031          this.specVersion = options.specVersion || SPECIFICATION_VERSION.join('.');
 15032          const specList = this.specVersion.split('.');
 15033          if (!(specList.length === 2 || specList.length === 3) ||
 15034              !specList.every((item) => isNumeric(item))) {
 15035              throw new error_1.ValueError('Failed to parse specVersion');
 15036          }
 15037          // major version must match
 15038          if (specList[0] != SPECIFICATION_VERSION[0]) {
 15039              throw new error_1.ValueError('Unsupported specVersion');
 15040          }
 15041          this.expires = options.expires || new Date().toISOString();
 15042          this.version = options.version || 1;
 15043          this.unrecognizedFields = options.unrecognizedFields || {};
 15044      }
 15045      equals(other) {
 15046          if (!(other instanceof Signed)) {
 15047              return false;
 15048          }
 15049          return (this.specVersion === other.specVersion &&
 15050              this.expires === other.expires &&
 15051              this.version === other.version &&
 15052              util_1.default.isDeepStrictEqual(this.unrecognizedFields, other.unrecognizedFields));
 15053      }
 15054      isExpired(referenceTime) {
 15055          if (!referenceTime) {
 15056              referenceTime = new Date();
 15057          }
 15058          return referenceTime >= new Date(this.expires);
 15059      }
 15060      static commonFieldsFromJSON(data) {
 15061          const { spec_version, expires, version, ...rest } = data;
 15062          if (utils_1.guard.isDefined(spec_version) && !(typeof spec_version === 'string')) {
 15063              throw new TypeError('spec_version must be a string');
 15064          }
 15065          if (utils_1.guard.isDefined(expires) && !(typeof expires === 'string')) {
 15066              throw new TypeError('expires must be a string');
 15067          }
 15068          if (utils_1.guard.isDefined(version) && !(typeof version === 'number')) {
 15069              throw new TypeError('version must be a number');
 15070          }
 15071          return {
 15072              specVersion: spec_version,
 15073              expires,
 15074              version,
 15075              unrecognizedFields: rest,
 15076          };
 15077      }
 15078  }
 15079  exports.Signed = Signed;
 15080  function isNumeric(str) {
 15081      return !isNaN(Number(str));
 15082  }
 15083  
 15084  
 15085  /***/ }),
 15086  
 15087  /***/ 71662:
 15088  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 15089  
 15090  "use strict";
 15091  
 15092  var __importDefault = (this && this.__importDefault) || function (mod) {
 15093      return (mod && mod.__esModule) ? mod : { "default": mod };
 15094  };
 15095  Object.defineProperty(exports, "__esModule", ({ value: true }));
 15096  exports.Delegations = void 0;
 15097  const util_1 = __importDefault(__nccwpck_require__(73837));
 15098  const error_1 = __nccwpck_require__(58448);
 15099  const key_1 = __nccwpck_require__(66697);
 15100  const role_1 = __nccwpck_require__(49393);
 15101  const utils_1 = __nccwpck_require__(45688);
 15102  /**
 15103   * A container object storing information about all delegations.
 15104   *
 15105   * Targets roles that are trusted to provide signed metadata files
 15106   * describing targets with designated pathnames and/or further delegations.
 15107   */
 15108  class Delegations {
 15109      constructor(options) {
 15110          this.keys = options.keys;
 15111          this.unrecognizedFields = options.unrecognizedFields || {};
 15112          if (options.roles) {
 15113              if (Object.keys(options.roles).some((roleName) => role_1.TOP_LEVEL_ROLE_NAMES.includes(roleName))) {
 15114                  throw new error_1.ValueError('Delegated role name conflicts with top-level role name');
 15115              }
 15116          }
 15117          this.succinctRoles = options.succinctRoles;
 15118          this.roles = options.roles;
 15119      }
 15120      equals(other) {
 15121          if (!(other instanceof Delegations)) {
 15122              return false;
 15123          }
 15124          return (util_1.default.isDeepStrictEqual(this.keys, other.keys) &&
 15125              util_1.default.isDeepStrictEqual(this.roles, other.roles) &&
 15126              util_1.default.isDeepStrictEqual(this.unrecognizedFields, other.unrecognizedFields) &&
 15127              util_1.default.isDeepStrictEqual(this.succinctRoles, other.succinctRoles));
 15128      }
 15129      *rolesForTarget(targetPath) {
 15130          if (this.roles) {
 15131              for (const role of Object.values(this.roles)) {
 15132                  if (role.isDelegatedPath(targetPath)) {
 15133                      yield { role: role.name, terminating: role.terminating };
 15134                  }
 15135              }
 15136          }
 15137          else if (this.succinctRoles) {
 15138              yield {
 15139                  role: this.succinctRoles.getRoleForTarget(targetPath),
 15140                  terminating: true,
 15141              };
 15142          }
 15143      }
 15144      toJSON() {
 15145          const json = {
 15146              keys: keysToJSON(this.keys),
 15147              ...this.unrecognizedFields,
 15148          };
 15149          if (this.roles) {
 15150              json.roles = rolesToJSON(this.roles);
 15151          }
 15152          else if (this.succinctRoles) {
 15153              json.succinct_roles = this.succinctRoles.toJSON();
 15154          }
 15155          return json;
 15156      }
 15157      static fromJSON(data) {
 15158          const { keys, roles, succinct_roles, ...unrecognizedFields } = data;
 15159          let succinctRoles;
 15160          if (utils_1.guard.isObject(succinct_roles)) {
 15161              succinctRoles = role_1.SuccinctRoles.fromJSON(succinct_roles);
 15162          }
 15163          return new Delegations({
 15164              keys: keysFromJSON(keys),
 15165              roles: rolesFromJSON(roles),
 15166              unrecognizedFields,
 15167              succinctRoles,
 15168          });
 15169      }
 15170  }
 15171  exports.Delegations = Delegations;
 15172  function keysToJSON(keys) {
 15173      return Object.entries(keys).reduce((acc, [keyId, key]) => ({
 15174          ...acc,
 15175          [keyId]: key.toJSON(),
 15176      }), {});
 15177  }
 15178  function rolesToJSON(roles) {
 15179      return Object.values(roles).map((role) => role.toJSON());
 15180  }
 15181  function keysFromJSON(data) {
 15182      if (!utils_1.guard.isObjectRecord(data)) {
 15183          throw new TypeError('keys is malformed');
 15184      }
 15185      return Object.entries(data).reduce((acc, [keyID, keyData]) => ({
 15186          ...acc,
 15187          [keyID]: key_1.Key.fromJSON(keyID, keyData),
 15188      }), {});
 15189  }
 15190  function rolesFromJSON(data) {
 15191      let roleMap;
 15192      if (utils_1.guard.isDefined(data)) {
 15193          if (!utils_1.guard.isObjectArray(data)) {
 15194              throw new TypeError('roles is malformed');
 15195          }
 15196          roleMap = data.reduce((acc, role) => {
 15197              const delegatedRole = role_1.DelegatedRole.fromJSON(role);
 15198              return {
 15199                  ...acc,
 15200                  [delegatedRole.name]: delegatedRole,
 15201              };
 15202          }, {});
 15203      }
 15204      return roleMap;
 15205  }
 15206  
 15207  
 15208  /***/ }),
 15209  
 15210  /***/ 58448:
 15211  /***/ ((__unused_webpack_module, exports) => {
 15212  
 15213  "use strict";
 15214  
 15215  Object.defineProperty(exports, "__esModule", ({ value: true }));
 15216  exports.UnsupportedAlgorithmError = exports.CryptoError = exports.LengthOrHashMismatchError = exports.UnsignedMetadataError = exports.RepositoryError = exports.ValueError = void 0;
 15217  // An error about insufficient values
 15218  class ValueError extends Error {
 15219  }
 15220  exports.ValueError = ValueError;
 15221  // An error with a repository's state, such as a missing file.
 15222  // It covers all exceptions that come from the repository side when
 15223  // looking from the perspective of users of metadata API or ngclient.
 15224  class RepositoryError extends Error {
 15225  }
 15226  exports.RepositoryError = RepositoryError;
 15227  // An error about metadata object with insufficient threshold of signatures.
 15228  class UnsignedMetadataError extends RepositoryError {
 15229  }
 15230  exports.UnsignedMetadataError = UnsignedMetadataError;
 15231  // An error while checking the length and hash values of an object.
 15232  class LengthOrHashMismatchError extends RepositoryError {
 15233  }
 15234  exports.LengthOrHashMismatchError = LengthOrHashMismatchError;
 15235  class CryptoError extends Error {
 15236  }
 15237  exports.CryptoError = CryptoError;
 15238  class UnsupportedAlgorithmError extends CryptoError {
 15239  }
 15240  exports.UnsupportedAlgorithmError = UnsupportedAlgorithmError;
 15241  
 15242  
 15243  /***/ }),
 15244  
 15245  /***/ 51923:
 15246  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 15247  
 15248  "use strict";
 15249  
 15250  var __importDefault = (this && this.__importDefault) || function (mod) {
 15251      return (mod && mod.__esModule) ? mod : { "default": mod };
 15252  };
 15253  Object.defineProperty(exports, "__esModule", ({ value: true }));
 15254  exports.TargetFile = exports.MetaFile = void 0;
 15255  const crypto_1 = __importDefault(__nccwpck_require__(6113));
 15256  const util_1 = __importDefault(__nccwpck_require__(73837));
 15257  const error_1 = __nccwpck_require__(58448);
 15258  const utils_1 = __nccwpck_require__(45688);
 15259  // A container with information about a particular metadata file.
 15260  //
 15261  // This class is used for Timestamp and Snapshot metadata.
 15262  class MetaFile {
 15263      constructor(opts) {
 15264          if (opts.version <= 0) {
 15265              throw new error_1.ValueError('Metafile version must be at least 1');
 15266          }
 15267          if (opts.length !== undefined) {
 15268              validateLength(opts.length);
 15269          }
 15270          this.version = opts.version;
 15271          this.length = opts.length;
 15272          this.hashes = opts.hashes;
 15273          this.unrecognizedFields = opts.unrecognizedFields || {};
 15274      }
 15275      equals(other) {
 15276          if (!(other instanceof MetaFile)) {
 15277              return false;
 15278          }
 15279          return (this.version === other.version &&
 15280              this.length === other.length &&
 15281              util_1.default.isDeepStrictEqual(this.hashes, other.hashes) &&
 15282              util_1.default.isDeepStrictEqual(this.unrecognizedFields, other.unrecognizedFields));
 15283      }
 15284      verify(data) {
 15285          // Verifies that the given data matches the expected length.
 15286          if (this.length !== undefined) {
 15287              if (data.length !== this.length) {
 15288                  throw new error_1.LengthOrHashMismatchError(`Expected length ${this.length} but got ${data.length}`);
 15289              }
 15290          }
 15291          // Verifies that the given data matches the supplied hashes.
 15292          if (this.hashes) {
 15293              Object.entries(this.hashes).forEach(([key, value]) => {
 15294                  let hash;
 15295                  try {
 15296                      hash = crypto_1.default.createHash(key);
 15297                  }
 15298                  catch (e) {
 15299                      throw new error_1.LengthOrHashMismatchError(`Hash algorithm ${key} not supported`);
 15300                  }
 15301                  const observedHash = hash.update(data).digest('hex');
 15302                  if (observedHash !== value) {
 15303                      throw new error_1.LengthOrHashMismatchError(`Expected hash ${value} but got ${observedHash}`);
 15304                  }
 15305              });
 15306          }
 15307      }
 15308      toJSON() {
 15309          const json = {
 15310              version: this.version,
 15311              ...this.unrecognizedFields,
 15312          };
 15313          if (this.length !== undefined) {
 15314              json.length = this.length;
 15315          }
 15316          if (this.hashes) {
 15317              json.hashes = this.hashes;
 15318          }
 15319          return json;
 15320      }
 15321      static fromJSON(data) {
 15322          const { version, length, hashes, ...rest } = data;
 15323          if (typeof version !== 'number') {
 15324              throw new TypeError('version must be a number');
 15325          }
 15326          if (utils_1.guard.isDefined(length) && typeof length !== 'number') {
 15327              throw new TypeError('length must be a number');
 15328          }
 15329          if (utils_1.guard.isDefined(hashes) && !utils_1.guard.isStringRecord(hashes)) {
 15330              throw new TypeError('hashes must be string keys and values');
 15331          }
 15332          return new MetaFile({
 15333              version,
 15334              length,
 15335              hashes,
 15336              unrecognizedFields: rest,
 15337          });
 15338      }
 15339  }
 15340  exports.MetaFile = MetaFile;
 15341  // Container for info about a particular target file.
 15342  //
 15343  // This class is used for Target metadata.
 15344  class TargetFile {
 15345      constructor(opts) {
 15346          validateLength(opts.length);
 15347          this.length = opts.length;
 15348          this.path = opts.path;
 15349          this.hashes = opts.hashes;
 15350          this.unrecognizedFields = opts.unrecognizedFields || {};
 15351      }
 15352      get custom() {
 15353          const custom = this.unrecognizedFields['custom'];
 15354          if (!custom || Array.isArray(custom) || !(typeof custom === 'object')) {
 15355              return {};
 15356          }
 15357          return custom;
 15358      }
 15359      equals(other) {
 15360          if (!(other instanceof TargetFile)) {
 15361              return false;
 15362          }
 15363          return (this.length === other.length &&
 15364              this.path === other.path &&
 15365              util_1.default.isDeepStrictEqual(this.hashes, other.hashes) &&
 15366              util_1.default.isDeepStrictEqual(this.unrecognizedFields, other.unrecognizedFields));
 15367      }
 15368      async verify(stream) {
 15369          let observedLength = 0;
 15370          // Create a digest for each hash algorithm
 15371          const digests = Object.keys(this.hashes).reduce((acc, key) => {
 15372              try {
 15373                  acc[key] = crypto_1.default.createHash(key);
 15374              }
 15375              catch (e) {
 15376                  throw new error_1.LengthOrHashMismatchError(`Hash algorithm ${key} not supported`);
 15377              }
 15378              return acc;
 15379          }, {});
 15380          // Read stream chunk by chunk
 15381          for await (const chunk of stream) {
 15382              // Keep running tally of stream length
 15383              observedLength += chunk.length;
 15384              // Append chunk to each digest
 15385              Object.values(digests).forEach((digest) => {
 15386                  digest.update(chunk);
 15387              });
 15388          }
 15389          // Verify length matches expected value
 15390          if (observedLength !== this.length) {
 15391              throw new error_1.LengthOrHashMismatchError(`Expected length ${this.length} but got ${observedLength}`);
 15392          }
 15393          // Verify each digest matches expected value
 15394          Object.entries(digests).forEach(([key, value]) => {
 15395              const expected = this.hashes[key];
 15396              const actual = value.digest('hex');
 15397              if (actual !== expected) {
 15398                  throw new error_1.LengthOrHashMismatchError(`Expected hash ${expected} but got ${actual}`);
 15399              }
 15400          });
 15401      }
 15402      toJSON() {
 15403          return {
 15404              length: this.length,
 15405              hashes: this.hashes,
 15406              ...this.unrecognizedFields,
 15407          };
 15408      }
 15409      static fromJSON(path, data) {
 15410          const { length, hashes, ...rest } = data;
 15411          if (typeof length !== 'number') {
 15412              throw new TypeError('length must be a number');
 15413          }
 15414          if (!utils_1.guard.isStringRecord(hashes)) {
 15415              throw new TypeError('hashes must have string keys and values');
 15416          }
 15417          return new TargetFile({
 15418              length,
 15419              path,
 15420              hashes,
 15421              unrecognizedFields: rest,
 15422          });
 15423      }
 15424  }
 15425  exports.TargetFile = TargetFile;
 15426  // Check that supplied length if valid
 15427  function validateLength(length) {
 15428      if (length < 0) {
 15429          throw new error_1.ValueError('Length must be at least 0');
 15430      }
 15431  }
 15432  
 15433  
 15434  /***/ }),
 15435  
 15436  /***/ 75833:
 15437  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 15438  
 15439  "use strict";
 15440  
 15441  Object.defineProperty(exports, "__esModule", ({ value: true }));
 15442  exports.Timestamp = exports.Targets = exports.Snapshot = exports.Signature = exports.Root = exports.Metadata = exports.Key = exports.TargetFile = exports.MetaFile = exports.ValueError = exports.MetadataKind = void 0;
 15443  var base_1 = __nccwpck_require__(60159);
 15444  Object.defineProperty(exports, "MetadataKind", ({ enumerable: true, get: function () { return base_1.MetadataKind; } }));
 15445  var error_1 = __nccwpck_require__(58448);
 15446  Object.defineProperty(exports, "ValueError", ({ enumerable: true, get: function () { return error_1.ValueError; } }));
 15447  var file_1 = __nccwpck_require__(51923);
 15448  Object.defineProperty(exports, "MetaFile", ({ enumerable: true, get: function () { return file_1.MetaFile; } }));
 15449  Object.defineProperty(exports, "TargetFile", ({ enumerable: true, get: function () { return file_1.TargetFile; } }));
 15450  var key_1 = __nccwpck_require__(66697);
 15451  Object.defineProperty(exports, "Key", ({ enumerable: true, get: function () { return key_1.Key; } }));
 15452  var metadata_1 = __nccwpck_require__(1593);
 15453  Object.defineProperty(exports, "Metadata", ({ enumerable: true, get: function () { return metadata_1.Metadata; } }));
 15454  var root_1 = __nccwpck_require__(9392);
 15455  Object.defineProperty(exports, "Root", ({ enumerable: true, get: function () { return root_1.Root; } }));
 15456  var signature_1 = __nccwpck_require__(54222);
 15457  Object.defineProperty(exports, "Signature", ({ enumerable: true, get: function () { return signature_1.Signature; } }));
 15458  var snapshot_1 = __nccwpck_require__(92326);
 15459  Object.defineProperty(exports, "Snapshot", ({ enumerable: true, get: function () { return snapshot_1.Snapshot; } }));
 15460  var targets_1 = __nccwpck_require__(5799);
 15461  Object.defineProperty(exports, "Targets", ({ enumerable: true, get: function () { return targets_1.Targets; } }));
 15462  var timestamp_1 = __nccwpck_require__(4042);
 15463  Object.defineProperty(exports, "Timestamp", ({ enumerable: true, get: function () { return timestamp_1.Timestamp; } }));
 15464  
 15465  
 15466  /***/ }),
 15467  
 15468  /***/ 66697:
 15469  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 15470  
 15471  "use strict";
 15472  
 15473  var __importDefault = (this && this.__importDefault) || function (mod) {
 15474      return (mod && mod.__esModule) ? mod : { "default": mod };
 15475  };
 15476  Object.defineProperty(exports, "__esModule", ({ value: true }));
 15477  exports.Key = void 0;
 15478  const util_1 = __importDefault(__nccwpck_require__(73837));
 15479  const error_1 = __nccwpck_require__(58448);
 15480  const utils_1 = __nccwpck_require__(45688);
 15481  const key_1 = __nccwpck_require__(78725);
 15482  // A container class representing the public portion of a Key.
 15483  class Key {
 15484      constructor(options) {
 15485          const { keyID, keyType, scheme, keyVal, unrecognizedFields } = options;
 15486          this.keyID = keyID;
 15487          this.keyType = keyType;
 15488          this.scheme = scheme;
 15489          this.keyVal = keyVal;
 15490          this.unrecognizedFields = unrecognizedFields || {};
 15491      }
 15492      // Verifies the that the metadata.signatures contains a signature made with
 15493      // this key and is correctly signed.
 15494      verifySignature(metadata) {
 15495          const signature = metadata.signatures[this.keyID];
 15496          if (!signature)
 15497              throw new error_1.UnsignedMetadataError('no signature for key found in metadata');
 15498          if (!this.keyVal.public)
 15499              throw new error_1.UnsignedMetadataError('no public key found');
 15500          const publicKey = (0, key_1.getPublicKey)({
 15501              keyType: this.keyType,
 15502              scheme: this.scheme,
 15503              keyVal: this.keyVal.public,
 15504          });
 15505          const signedData = metadata.signed.toJSON();
 15506          try {
 15507              if (!utils_1.crypto.verifySignature(signedData, publicKey, signature.sig)) {
 15508                  throw new error_1.UnsignedMetadataError(`failed to verify ${this.keyID} signature`);
 15509              }
 15510          }
 15511          catch (error) {
 15512              if (error instanceof error_1.UnsignedMetadataError) {
 15513                  throw error;
 15514              }
 15515              throw new error_1.UnsignedMetadataError(`failed to verify ${this.keyID} signature`);
 15516          }
 15517      }
 15518      equals(other) {
 15519          if (!(other instanceof Key)) {
 15520              return false;
 15521          }
 15522          return (this.keyID === other.keyID &&
 15523              this.keyType === other.keyType &&
 15524              this.scheme === other.scheme &&
 15525              util_1.default.isDeepStrictEqual(this.keyVal, other.keyVal) &&
 15526              util_1.default.isDeepStrictEqual(this.unrecognizedFields, other.unrecognizedFields));
 15527      }
 15528      toJSON() {
 15529          return {
 15530              keytype: this.keyType,
 15531              scheme: this.scheme,
 15532              keyval: this.keyVal,
 15533              ...this.unrecognizedFields,
 15534          };
 15535      }
 15536      static fromJSON(keyID, data) {
 15537          const { keytype, scheme, keyval, ...rest } = data;
 15538          if (typeof keytype !== 'string') {
 15539              throw new TypeError('keytype must be a string');
 15540          }
 15541          if (typeof scheme !== 'string') {
 15542              throw new TypeError('scheme must be a string');
 15543          }
 15544          if (!utils_1.guard.isStringRecord(keyval)) {
 15545              throw new TypeError('keyval must be a string record');
 15546          }
 15547          return new Key({
 15548              keyID,
 15549              keyType: keytype,
 15550              scheme,
 15551              keyVal: keyval,
 15552              unrecognizedFields: rest,
 15553          });
 15554      }
 15555  }
 15556  exports.Key = Key;
 15557  
 15558  
 15559  /***/ }),
 15560  
 15561  /***/ 1593:
 15562  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 15563  
 15564  "use strict";
 15565  
 15566  var __importDefault = (this && this.__importDefault) || function (mod) {
 15567      return (mod && mod.__esModule) ? mod : { "default": mod };
 15568  };
 15569  Object.defineProperty(exports, "__esModule", ({ value: true }));
 15570  exports.Metadata = void 0;
 15571  const canonical_json_1 = __nccwpck_require__(19652);
 15572  const util_1 = __importDefault(__nccwpck_require__(73837));
 15573  const base_1 = __nccwpck_require__(60159);
 15574  const error_1 = __nccwpck_require__(58448);
 15575  const root_1 = __nccwpck_require__(9392);
 15576  const signature_1 = __nccwpck_require__(54222);
 15577  const snapshot_1 = __nccwpck_require__(92326);
 15578  const targets_1 = __nccwpck_require__(5799);
 15579  const timestamp_1 = __nccwpck_require__(4042);
 15580  const utils_1 = __nccwpck_require__(45688);
 15581  /***
 15582   * A container for signed TUF metadata.
 15583   *
 15584   * Provides methods to convert to and from json, read and write to and
 15585   * from JSON and to create and verify metadata signatures.
 15586   *
 15587   * ``Metadata[T]`` is a generic container type where T can be any one type of
 15588   * [``Root``, ``Timestamp``, ``Snapshot``, ``Targets``]. The purpose of this
 15589   * is to allow static type checking of the signed attribute in code using
 15590   * Metadata::
 15591   *
 15592   * root_md = Metadata[Root].fromJSON("root.json")
 15593   * # root_md type is now Metadata[Root]. This means signed and its
 15594   * # attributes like consistent_snapshot are now statically typed and the
 15595   * # types can be verified by static type checkers and shown by IDEs
 15596   *
 15597   * Using a type constraint is not required but not doing so means T is not a
 15598   * specific type so static typing cannot happen. Note that the type constraint
 15599   * ``[Root]`` is not validated at runtime (as pure annotations are not available
 15600   * then).
 15601   *
 15602   * Apart from ``expires`` all of the arguments to the inner constructors have
 15603   * reasonable default values for new metadata.
 15604   */
 15605  class Metadata {
 15606      constructor(signed, signatures, unrecognizedFields) {
 15607          this.signed = signed;
 15608          this.signatures = signatures || {};
 15609          this.unrecognizedFields = unrecognizedFields || {};
 15610      }
 15611      sign(signer, append = true) {
 15612          const bytes = Buffer.from((0, canonical_json_1.canonicalize)(this.signed.toJSON()));
 15613          const signature = signer(bytes);
 15614          if (!append) {
 15615              this.signatures = {};
 15616          }
 15617          this.signatures[signature.keyID] = signature;
 15618      }
 15619      verifyDelegate(delegatedRole, delegatedMetadata) {
 15620          let role;
 15621          let keys = {};
 15622          switch (this.signed.type) {
 15623              case base_1.MetadataKind.Root:
 15624                  keys = this.signed.keys;
 15625                  role = this.signed.roles[delegatedRole];
 15626                  break;
 15627              case base_1.MetadataKind.Targets:
 15628                  if (!this.signed.delegations) {
 15629                      throw new error_1.ValueError(`No delegations found for ${delegatedRole}`);
 15630                  }
 15631                  keys = this.signed.delegations.keys;
 15632                  if (this.signed.delegations.roles) {
 15633                      role = this.signed.delegations.roles[delegatedRole];
 15634                  }
 15635                  else if (this.signed.delegations.succinctRoles) {
 15636                      if (this.signed.delegations.succinctRoles.isDelegatedRole(delegatedRole)) {
 15637                          role = this.signed.delegations.succinctRoles;
 15638                      }
 15639                  }
 15640                  break;
 15641              default:
 15642                  throw new TypeError('invalid metadata type');
 15643          }
 15644          if (!role) {
 15645              throw new error_1.ValueError(`no delegation found for ${delegatedRole}`);
 15646          }
 15647          const signingKeys = new Set();
 15648          role.keyIDs.forEach((keyID) => {
 15649              const key = keys[keyID];
 15650              // If we dont' have the key, continue checking other keys
 15651              if (!key) {
 15652                  return;
 15653              }
 15654              try {
 15655                  key.verifySignature(delegatedMetadata);
 15656                  signingKeys.add(key.keyID);
 15657              }
 15658              catch (error) {
 15659                  // continue
 15660              }
 15661          });
 15662          if (signingKeys.size < role.threshold) {
 15663              throw new error_1.UnsignedMetadataError(`${delegatedRole} was signed by ${signingKeys.size}/${role.threshold} keys`);
 15664          }
 15665      }
 15666      equals(other) {
 15667          if (!(other instanceof Metadata)) {
 15668              return false;
 15669          }
 15670          return (this.signed.equals(other.signed) &&
 15671              util_1.default.isDeepStrictEqual(this.signatures, other.signatures) &&
 15672              util_1.default.isDeepStrictEqual(this.unrecognizedFields, other.unrecognizedFields));
 15673      }
 15674      toJSON() {
 15675          const signatures = Object.values(this.signatures).map((signature) => {
 15676              return signature.toJSON();
 15677          });
 15678          return {
 15679              signatures,
 15680              signed: this.signed.toJSON(),
 15681              ...this.unrecognizedFields,
 15682          };
 15683      }
 15684      static fromJSON(type, data) {
 15685          const { signed, signatures, ...rest } = data;
 15686          if (!utils_1.guard.isDefined(signed) || !utils_1.guard.isObject(signed)) {
 15687              throw new TypeError('signed is not defined');
 15688          }
 15689          if (type !== signed._type) {
 15690              throw new error_1.ValueError(`expected '${type}', got ${signed['_type']}`);
 15691          }
 15692          let signedObj;
 15693          switch (type) {
 15694              case base_1.MetadataKind.Root:
 15695                  signedObj = root_1.Root.fromJSON(signed);
 15696                  break;
 15697              case base_1.MetadataKind.Timestamp:
 15698                  signedObj = timestamp_1.Timestamp.fromJSON(signed);
 15699                  break;
 15700              case base_1.MetadataKind.Snapshot:
 15701                  signedObj = snapshot_1.Snapshot.fromJSON(signed);
 15702                  break;
 15703              case base_1.MetadataKind.Targets:
 15704                  signedObj = targets_1.Targets.fromJSON(signed);
 15705                  break;
 15706              default:
 15707                  throw new TypeError('invalid metadata type');
 15708          }
 15709          const sigMap = signaturesFromJSON(signatures);
 15710          return new Metadata(signedObj, sigMap, rest);
 15711      }
 15712  }
 15713  exports.Metadata = Metadata;
 15714  function signaturesFromJSON(data) {
 15715      if (!utils_1.guard.isObjectArray(data)) {
 15716          throw new TypeError('signatures is not an array');
 15717      }
 15718      return data.reduce((acc, sigData) => {
 15719          const signature = signature_1.Signature.fromJSON(sigData);
 15720          return { ...acc, [signature.keyID]: signature };
 15721      }, {});
 15722  }
 15723  
 15724  
 15725  /***/ }),
 15726  
 15727  /***/ 49393:
 15728  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 15729  
 15730  "use strict";
 15731  
 15732  var __importDefault = (this && this.__importDefault) || function (mod) {
 15733      return (mod && mod.__esModule) ? mod : { "default": mod };
 15734  };
 15735  Object.defineProperty(exports, "__esModule", ({ value: true }));
 15736  exports.SuccinctRoles = exports.DelegatedRole = exports.Role = exports.TOP_LEVEL_ROLE_NAMES = void 0;
 15737  const crypto_1 = __importDefault(__nccwpck_require__(6113));
 15738  const minimatch_1 = __nccwpck_require__(54878);
 15739  const util_1 = __importDefault(__nccwpck_require__(73837));
 15740  const error_1 = __nccwpck_require__(58448);
 15741  const utils_1 = __nccwpck_require__(45688);
 15742  exports.TOP_LEVEL_ROLE_NAMES = [
 15743      'root',
 15744      'targets',
 15745      'snapshot',
 15746      'timestamp',
 15747  ];
 15748  /**
 15749   * Container that defines which keys are required to sign roles metadata.
 15750   *
 15751   * Role defines how many keys are required to successfully sign the roles
 15752   * metadata, and which keys are accepted.
 15753   */
 15754  class Role {
 15755      constructor(options) {
 15756          const { keyIDs, threshold, unrecognizedFields } = options;
 15757          if (hasDuplicates(keyIDs)) {
 15758              throw new error_1.ValueError('duplicate key IDs found');
 15759          }
 15760          if (threshold < 1) {
 15761              throw new error_1.ValueError('threshold must be at least 1');
 15762          }
 15763          this.keyIDs = keyIDs;
 15764          this.threshold = threshold;
 15765          this.unrecognizedFields = unrecognizedFields || {};
 15766      }
 15767      equals(other) {
 15768          if (!(other instanceof Role)) {
 15769              return false;
 15770          }
 15771          return (this.threshold === other.threshold &&
 15772              util_1.default.isDeepStrictEqual(this.keyIDs, other.keyIDs) &&
 15773              util_1.default.isDeepStrictEqual(this.unrecognizedFields, other.unrecognizedFields));
 15774      }
 15775      toJSON() {
 15776          return {
 15777              keyids: this.keyIDs,
 15778              threshold: this.threshold,
 15779              ...this.unrecognizedFields,
 15780          };
 15781      }
 15782      static fromJSON(data) {
 15783          const { keyids, threshold, ...rest } = data;
 15784          if (!utils_1.guard.isStringArray(keyids)) {
 15785              throw new TypeError('keyids must be an array');
 15786          }
 15787          if (typeof threshold !== 'number') {
 15788              throw new TypeError('threshold must be a number');
 15789          }
 15790          return new Role({
 15791              keyIDs: keyids,
 15792              threshold,
 15793              unrecognizedFields: rest,
 15794          });
 15795      }
 15796  }
 15797  exports.Role = Role;
 15798  function hasDuplicates(array) {
 15799      return new Set(array).size !== array.length;
 15800  }
 15801  /**
 15802   * A container with information about a delegated role.
 15803   *
 15804   * A delegation can happen in two ways:
 15805   *   - ``paths`` is set: delegates targets matching any path pattern in ``paths``
 15806   *   - ``pathHashPrefixes`` is set: delegates targets whose target path hash
 15807   *      starts with any of the prefixes in ``pathHashPrefixes``
 15808   *
 15809   *   ``paths`` and ``pathHashPrefixes`` are mutually exclusive: both cannot be
 15810   *   set, at least one of them must be set.
 15811   */
 15812  class DelegatedRole extends Role {
 15813      constructor(opts) {
 15814          super(opts);
 15815          const { name, terminating, paths, pathHashPrefixes } = opts;
 15816          this.name = name;
 15817          this.terminating = terminating;
 15818          if (opts.paths && opts.pathHashPrefixes) {
 15819              throw new error_1.ValueError('paths and pathHashPrefixes are mutually exclusive');
 15820          }
 15821          this.paths = paths;
 15822          this.pathHashPrefixes = pathHashPrefixes;
 15823      }
 15824      equals(other) {
 15825          if (!(other instanceof DelegatedRole)) {
 15826              return false;
 15827          }
 15828          return (super.equals(other) &&
 15829              this.name === other.name &&
 15830              this.terminating === other.terminating &&
 15831              util_1.default.isDeepStrictEqual(this.paths, other.paths) &&
 15832              util_1.default.isDeepStrictEqual(this.pathHashPrefixes, other.pathHashPrefixes));
 15833      }
 15834      isDelegatedPath(targetFilepath) {
 15835          if (this.paths) {
 15836              return this.paths.some((pathPattern) => isTargetInPathPattern(targetFilepath, pathPattern));
 15837          }
 15838          if (this.pathHashPrefixes) {
 15839              const hasher = crypto_1.default.createHash('sha256');
 15840              const pathHash = hasher.update(targetFilepath).digest('hex');
 15841              return this.pathHashPrefixes.some((pathHashPrefix) => pathHash.startsWith(pathHashPrefix));
 15842          }
 15843          return false;
 15844      }
 15845      toJSON() {
 15846          const json = {
 15847              ...super.toJSON(),
 15848              name: this.name,
 15849              terminating: this.terminating,
 15850          };
 15851          if (this.paths) {
 15852              json.paths = this.paths;
 15853          }
 15854          if (this.pathHashPrefixes) {
 15855              json.path_hash_prefixes = this.pathHashPrefixes;
 15856          }
 15857          return json;
 15858      }
 15859      static fromJSON(data) {
 15860          const { keyids, threshold, name, terminating, paths, path_hash_prefixes, ...rest } = data;
 15861          if (!utils_1.guard.isStringArray(keyids)) {
 15862              throw new TypeError('keyids must be an array of strings');
 15863          }
 15864          if (typeof threshold !== 'number') {
 15865              throw new TypeError('threshold must be a number');
 15866          }
 15867          if (typeof name !== 'string') {
 15868              throw new TypeError('name must be a string');
 15869          }
 15870          if (typeof terminating !== 'boolean') {
 15871              throw new TypeError('terminating must be a boolean');
 15872          }
 15873          if (utils_1.guard.isDefined(paths) && !utils_1.guard.isStringArray(paths)) {
 15874              throw new TypeError('paths must be an array of strings');
 15875          }
 15876          if (utils_1.guard.isDefined(path_hash_prefixes) &&
 15877              !utils_1.guard.isStringArray(path_hash_prefixes)) {
 15878              throw new TypeError('path_hash_prefixes must be an array of strings');
 15879          }
 15880          return new DelegatedRole({
 15881              keyIDs: keyids,
 15882              threshold,
 15883              name,
 15884              terminating,
 15885              paths,
 15886              pathHashPrefixes: path_hash_prefixes,
 15887              unrecognizedFields: rest,
 15888          });
 15889      }
 15890  }
 15891  exports.DelegatedRole = DelegatedRole;
 15892  // JS version of Ruby's Array#zip
 15893  const zip = (a, b) => a.map((k, i) => [k, b[i]]);
 15894  function isTargetInPathPattern(target, pattern) {
 15895      const targetParts = target.split('/');
 15896      const patternParts = pattern.split('/');
 15897      if (patternParts.length != targetParts.length) {
 15898          return false;
 15899      }
 15900      return zip(targetParts, patternParts).every(([targetPart, patternPart]) => (0, minimatch_1.minimatch)(targetPart, patternPart));
 15901  }
 15902  /**
 15903   * Succinctly defines a hash bin delegation graph.
 15904   *
 15905   * A ``SuccinctRoles`` object describes a delegation graph that covers all
 15906   * targets, distributing them uniformly over the delegated roles (i.e. bins)
 15907   * in the graph.
 15908   *
 15909   * The total number of bins is 2 to the power of the passed ``bit_length``.
 15910   *
 15911   * Bin names are the concatenation of the passed ``name_prefix`` and a
 15912   * zero-padded hex representation of the bin index separated by a hyphen.
 15913   *
 15914   * The passed ``keyids`` and ``threshold`` is used for each bin, and each bin
 15915   * is 'terminating'.
 15916   *
 15917   * For details: https://github.com/theupdateframework/taps/blob/master/tap15.md
 15918   */
 15919  class SuccinctRoles extends Role {
 15920      constructor(opts) {
 15921          super(opts);
 15922          const { bitLength, namePrefix } = opts;
 15923          if (bitLength <= 0 || bitLength > 32) {
 15924              throw new error_1.ValueError('bitLength must be between 1 and 32');
 15925          }
 15926          this.bitLength = bitLength;
 15927          this.namePrefix = namePrefix;
 15928          // Calculate the suffix_len value based on the total number of bins in
 15929          // hex. If bit_length = 10 then number_of_bins = 1024 or bin names will
 15930          // have a suffix between "000" and "3ff" in hex and suffix_len will be 3
 15931          // meaning the third bin will have a suffix of "003".
 15932          this.numberOfBins = Math.pow(2, bitLength);
 15933          // suffix_len is calculated based on "number_of_bins - 1" as the name
 15934          // of the last bin contains the number "number_of_bins -1" as a suffix.
 15935          this.suffixLen = (this.numberOfBins - 1).toString(16).length;
 15936      }
 15937      equals(other) {
 15938          if (!(other instanceof SuccinctRoles)) {
 15939              return false;
 15940          }
 15941          return (super.equals(other) &&
 15942              this.bitLength === other.bitLength &&
 15943              this.namePrefix === other.namePrefix);
 15944      }
 15945      /***
 15946       * Calculates the name of the delegated role responsible for 'target_filepath'.
 15947       *
 15948       * The target at path ''target_filepath' is assigned to a bin by casting
 15949       * the left-most 'bit_length' of bits of the file path hash digest to
 15950       * int, using it as bin index between 0 and '2**bit_length - 1'.
 15951       *
 15952       * Args:
 15953       *  target_filepath: URL path to a target file, relative to a base
 15954       *  targets URL.
 15955       */
 15956      getRoleForTarget(targetFilepath) {
 15957          const hasher = crypto_1.default.createHash('sha256');
 15958          const hasherBuffer = hasher.update(targetFilepath).digest();
 15959          // can't ever need more than 4 bytes (32 bits).
 15960          const hashBytes = hasherBuffer.subarray(0, 4);
 15961          // Right shift hash bytes, so that we only have the leftmost
 15962          // bit_length bits that we care about.
 15963          const shiftValue = 32 - this.bitLength;
 15964          const binNumber = hashBytes.readUInt32BE() >>> shiftValue;
 15965          // Add zero padding if necessary and cast to hex the suffix.
 15966          const suffix = binNumber.toString(16).padStart(this.suffixLen, '0');
 15967          return `${this.namePrefix}-${suffix}`;
 15968      }
 15969      *getRoles() {
 15970          for (let i = 0; i < this.numberOfBins; i++) {
 15971              const suffix = i.toString(16).padStart(this.suffixLen, '0');
 15972              yield `${this.namePrefix}-${suffix}`;
 15973          }
 15974      }
 15975      /***
 15976       * Determines whether the given ``role_name`` is in one of
 15977       * the delegated roles that ``SuccinctRoles`` represents.
 15978       *
 15979       * Args:
 15980       *  role_name: The name of the role to check against.
 15981       */
 15982      isDelegatedRole(roleName) {
 15983          const desiredPrefix = this.namePrefix + '-';
 15984          if (!roleName.startsWith(desiredPrefix)) {
 15985              return false;
 15986          }
 15987          const suffix = roleName.slice(desiredPrefix.length, roleName.length);
 15988          if (suffix.length != this.suffixLen) {
 15989              return false;
 15990          }
 15991          // make sure the suffix is a hex string
 15992          if (!suffix.match(/^[0-9a-fA-F]+$/)) {
 15993              return false;
 15994          }
 15995          const num = parseInt(suffix, 16);
 15996          return 0 <= num && num < this.numberOfBins;
 15997      }
 15998      toJSON() {
 15999          const json = {
 16000              ...super.toJSON(),
 16001              bit_length: this.bitLength,
 16002              name_prefix: this.namePrefix,
 16003          };
 16004          return json;
 16005      }
 16006      static fromJSON(data) {
 16007          const { keyids, threshold, bit_length, name_prefix, ...rest } = data;
 16008          if (!utils_1.guard.isStringArray(keyids)) {
 16009              throw new TypeError('keyids must be an array of strings');
 16010          }
 16011          if (typeof threshold !== 'number') {
 16012              throw new TypeError('threshold must be a number');
 16013          }
 16014          if (typeof bit_length !== 'number') {
 16015              throw new TypeError('bit_length must be a number');
 16016          }
 16017          if (typeof name_prefix !== 'string') {
 16018              throw new TypeError('name_prefix must be a string');
 16019          }
 16020          return new SuccinctRoles({
 16021              keyIDs: keyids,
 16022              threshold,
 16023              bitLength: bit_length,
 16024              namePrefix: name_prefix,
 16025              unrecognizedFields: rest,
 16026          });
 16027      }
 16028  }
 16029  exports.SuccinctRoles = SuccinctRoles;
 16030  
 16031  
 16032  /***/ }),
 16033  
 16034  /***/ 9392:
 16035  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 16036  
 16037  "use strict";
 16038  
 16039  var __importDefault = (this && this.__importDefault) || function (mod) {
 16040      return (mod && mod.__esModule) ? mod : { "default": mod };
 16041  };
 16042  Object.defineProperty(exports, "__esModule", ({ value: true }));
 16043  exports.Root = void 0;
 16044  const util_1 = __importDefault(__nccwpck_require__(73837));
 16045  const base_1 = __nccwpck_require__(60159);
 16046  const error_1 = __nccwpck_require__(58448);
 16047  const key_1 = __nccwpck_require__(66697);
 16048  const role_1 = __nccwpck_require__(49393);
 16049  const utils_1 = __nccwpck_require__(45688);
 16050  /**
 16051   * A container for the signed part of root metadata.
 16052   *
 16053   * The top-level role and metadata file signed by the root keys.
 16054   * This role specifies trusted keys for all other top-level roles, which may further delegate trust.
 16055   */
 16056  class Root extends base_1.Signed {
 16057      constructor(options) {
 16058          super(options);
 16059          this.type = base_1.MetadataKind.Root;
 16060          this.keys = options.keys || {};
 16061          this.consistentSnapshot = options.consistentSnapshot ?? true;
 16062          if (!options.roles) {
 16063              this.roles = role_1.TOP_LEVEL_ROLE_NAMES.reduce((acc, role) => ({
 16064                  ...acc,
 16065                  [role]: new role_1.Role({ keyIDs: [], threshold: 1 }),
 16066              }), {});
 16067          }
 16068          else {
 16069              const roleNames = new Set(Object.keys(options.roles));
 16070              if (!role_1.TOP_LEVEL_ROLE_NAMES.every((role) => roleNames.has(role))) {
 16071                  throw new error_1.ValueError('missing top-level role');
 16072              }
 16073              this.roles = options.roles;
 16074          }
 16075      }
 16076      addKey(key, role) {
 16077          if (!this.roles[role]) {
 16078              throw new error_1.ValueError(`role ${role} does not exist`);
 16079          }
 16080          if (!this.roles[role].keyIDs.includes(key.keyID)) {
 16081              this.roles[role].keyIDs.push(key.keyID);
 16082          }
 16083          this.keys[key.keyID] = key;
 16084      }
 16085      equals(other) {
 16086          if (!(other instanceof Root)) {
 16087              return false;
 16088          }
 16089          return (super.equals(other) &&
 16090              this.consistentSnapshot === other.consistentSnapshot &&
 16091              util_1.default.isDeepStrictEqual(this.keys, other.keys) &&
 16092              util_1.default.isDeepStrictEqual(this.roles, other.roles));
 16093      }
 16094      toJSON() {
 16095          return {
 16096              _type: this.type,
 16097              spec_version: this.specVersion,
 16098              version: this.version,
 16099              expires: this.expires,
 16100              keys: keysToJSON(this.keys),
 16101              roles: rolesToJSON(this.roles),
 16102              consistent_snapshot: this.consistentSnapshot,
 16103              ...this.unrecognizedFields,
 16104          };
 16105      }
 16106      static fromJSON(data) {
 16107          const { unrecognizedFields, ...commonFields } = base_1.Signed.commonFieldsFromJSON(data);
 16108          const { keys, roles, consistent_snapshot, ...rest } = unrecognizedFields;
 16109          if (typeof consistent_snapshot !== 'boolean') {
 16110              throw new TypeError('consistent_snapshot must be a boolean');
 16111          }
 16112          return new Root({
 16113              ...commonFields,
 16114              keys: keysFromJSON(keys),
 16115              roles: rolesFromJSON(roles),
 16116              consistentSnapshot: consistent_snapshot,
 16117              unrecognizedFields: rest,
 16118          });
 16119      }
 16120  }
 16121  exports.Root = Root;
 16122  function keysToJSON(keys) {
 16123      return Object.entries(keys).reduce((acc, [keyID, key]) => ({ ...acc, [keyID]: key.toJSON() }), {});
 16124  }
 16125  function rolesToJSON(roles) {
 16126      return Object.entries(roles).reduce((acc, [roleName, role]) => ({ ...acc, [roleName]: role.toJSON() }), {});
 16127  }
 16128  function keysFromJSON(data) {
 16129      let keys;
 16130      if (utils_1.guard.isDefined(data)) {
 16131          if (!utils_1.guard.isObjectRecord(data)) {
 16132              throw new TypeError('keys must be an object');
 16133          }
 16134          keys = Object.entries(data).reduce((acc, [keyID, keyData]) => ({
 16135              ...acc,
 16136              [keyID]: key_1.Key.fromJSON(keyID, keyData),
 16137          }), {});
 16138      }
 16139      return keys;
 16140  }
 16141  function rolesFromJSON(data) {
 16142      let roles;
 16143      if (utils_1.guard.isDefined(data)) {
 16144          if (!utils_1.guard.isObjectRecord(data)) {
 16145              throw new TypeError('roles must be an object');
 16146          }
 16147          roles = Object.entries(data).reduce((acc, [roleName, roleData]) => ({
 16148              ...acc,
 16149              [roleName]: role_1.Role.fromJSON(roleData),
 16150          }), {});
 16151      }
 16152      return roles;
 16153  }
 16154  
 16155  
 16156  /***/ }),
 16157  
 16158  /***/ 54222:
 16159  /***/ ((__unused_webpack_module, exports) => {
 16160  
 16161  "use strict";
 16162  
 16163  Object.defineProperty(exports, "__esModule", ({ value: true }));
 16164  exports.Signature = void 0;
 16165  /**
 16166   * A container class containing information about a signature.
 16167   *
 16168   * Contains a signature and the keyid uniquely identifying the key used
 16169   * to generate the signature.
 16170   *
 16171   * Provide a `fromJSON` method to create a Signature from a JSON object.
 16172   */
 16173  class Signature {
 16174      constructor(options) {
 16175          const { keyID, sig } = options;
 16176          this.keyID = keyID;
 16177          this.sig = sig;
 16178      }
 16179      toJSON() {
 16180          return {
 16181              keyid: this.keyID,
 16182              sig: this.sig,
 16183          };
 16184      }
 16185      static fromJSON(data) {
 16186          const { keyid, sig } = data;
 16187          if (typeof keyid !== 'string') {
 16188              throw new TypeError('keyid must be a string');
 16189          }
 16190          if (typeof sig !== 'string') {
 16191              throw new TypeError('sig must be a string');
 16192          }
 16193          return new Signature({
 16194              keyID: keyid,
 16195              sig: sig,
 16196          });
 16197      }
 16198  }
 16199  exports.Signature = Signature;
 16200  
 16201  
 16202  /***/ }),
 16203  
 16204  /***/ 92326:
 16205  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 16206  
 16207  "use strict";
 16208  
 16209  var __importDefault = (this && this.__importDefault) || function (mod) {
 16210      return (mod && mod.__esModule) ? mod : { "default": mod };
 16211  };
 16212  Object.defineProperty(exports, "__esModule", ({ value: true }));
 16213  exports.Snapshot = void 0;
 16214  const util_1 = __importDefault(__nccwpck_require__(73837));
 16215  const base_1 = __nccwpck_require__(60159);
 16216  const file_1 = __nccwpck_require__(51923);
 16217  const utils_1 = __nccwpck_require__(45688);
 16218  /**
 16219   * A container for the signed part of snapshot metadata.
 16220   *
 16221   * Snapshot contains information about all target Metadata files.
 16222   * A top-level role that specifies the latest versions of all targets metadata files,
 16223   * and hence the latest versions of all targets (including any dependencies between them) on the repository.
 16224   */
 16225  class Snapshot extends base_1.Signed {
 16226      constructor(opts) {
 16227          super(opts);
 16228          this.type = base_1.MetadataKind.Snapshot;
 16229          this.meta = opts.meta || { 'targets.json': new file_1.MetaFile({ version: 1 }) };
 16230      }
 16231      equals(other) {
 16232          if (!(other instanceof Snapshot)) {
 16233              return false;
 16234          }
 16235          return super.equals(other) && util_1.default.isDeepStrictEqual(this.meta, other.meta);
 16236      }
 16237      toJSON() {
 16238          return {
 16239              _type: this.type,
 16240              meta: metaToJSON(this.meta),
 16241              spec_version: this.specVersion,
 16242              version: this.version,
 16243              expires: this.expires,
 16244              ...this.unrecognizedFields,
 16245          };
 16246      }
 16247      static fromJSON(data) {
 16248          const { unrecognizedFields, ...commonFields } = base_1.Signed.commonFieldsFromJSON(data);
 16249          const { meta, ...rest } = unrecognizedFields;
 16250          return new Snapshot({
 16251              ...commonFields,
 16252              meta: metaFromJSON(meta),
 16253              unrecognizedFields: rest,
 16254          });
 16255      }
 16256  }
 16257  exports.Snapshot = Snapshot;
 16258  function metaToJSON(meta) {
 16259      return Object.entries(meta).reduce((acc, [path, metadata]) => ({
 16260          ...acc,
 16261          [path]: metadata.toJSON(),
 16262      }), {});
 16263  }
 16264  function metaFromJSON(data) {
 16265      let meta;
 16266      if (utils_1.guard.isDefined(data)) {
 16267          if (!utils_1.guard.isObjectRecord(data)) {
 16268              throw new TypeError('meta field is malformed');
 16269          }
 16270          else {
 16271              meta = Object.entries(data).reduce((acc, [path, metadata]) => ({
 16272                  ...acc,
 16273                  [path]: file_1.MetaFile.fromJSON(metadata),
 16274              }), {});
 16275          }
 16276      }
 16277      return meta;
 16278  }
 16279  
 16280  
 16281  /***/ }),
 16282  
 16283  /***/ 5799:
 16284  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 16285  
 16286  "use strict";
 16287  
 16288  var __importDefault = (this && this.__importDefault) || function (mod) {
 16289      return (mod && mod.__esModule) ? mod : { "default": mod };
 16290  };
 16291  Object.defineProperty(exports, "__esModule", ({ value: true }));
 16292  exports.Targets = void 0;
 16293  const util_1 = __importDefault(__nccwpck_require__(73837));
 16294  const base_1 = __nccwpck_require__(60159);
 16295  const delegations_1 = __nccwpck_require__(71662);
 16296  const file_1 = __nccwpck_require__(51923);
 16297  const utils_1 = __nccwpck_require__(45688);
 16298  // Container for the signed part of targets metadata.
 16299  //
 16300  // Targets contains verifying information about target files and also delegates
 16301  // responsible to other Targets roles.
 16302  class Targets extends base_1.Signed {
 16303      constructor(options) {
 16304          super(options);
 16305          this.type = base_1.MetadataKind.Targets;
 16306          this.targets = options.targets || {};
 16307          this.delegations = options.delegations;
 16308      }
 16309      addTarget(target) {
 16310          this.targets[target.path] = target;
 16311      }
 16312      equals(other) {
 16313          if (!(other instanceof Targets)) {
 16314              return false;
 16315          }
 16316          return (super.equals(other) &&
 16317              util_1.default.isDeepStrictEqual(this.targets, other.targets) &&
 16318              util_1.default.isDeepStrictEqual(this.delegations, other.delegations));
 16319      }
 16320      toJSON() {
 16321          const json = {
 16322              _type: this.type,
 16323              spec_version: this.specVersion,
 16324              version: this.version,
 16325              expires: this.expires,
 16326              targets: targetsToJSON(this.targets),
 16327              ...this.unrecognizedFields,
 16328          };
 16329          if (this.delegations) {
 16330              json.delegations = this.delegations.toJSON();
 16331          }
 16332          return json;
 16333      }
 16334      static fromJSON(data) {
 16335          const { unrecognizedFields, ...commonFields } = base_1.Signed.commonFieldsFromJSON(data);
 16336          const { targets, delegations, ...rest } = unrecognizedFields;
 16337          return new Targets({
 16338              ...commonFields,
 16339              targets: targetsFromJSON(targets),
 16340              delegations: delegationsFromJSON(delegations),
 16341              unrecognizedFields: rest,
 16342          });
 16343      }
 16344  }
 16345  exports.Targets = Targets;
 16346  function targetsToJSON(targets) {
 16347      return Object.entries(targets).reduce((acc, [path, target]) => ({
 16348          ...acc,
 16349          [path]: target.toJSON(),
 16350      }), {});
 16351  }
 16352  function targetsFromJSON(data) {
 16353      let targets;
 16354      if (utils_1.guard.isDefined(data)) {
 16355          if (!utils_1.guard.isObjectRecord(data)) {
 16356              throw new TypeError('targets must be an object');
 16357          }
 16358          else {
 16359              targets = Object.entries(data).reduce((acc, [path, target]) => ({
 16360                  ...acc,
 16361                  [path]: file_1.TargetFile.fromJSON(path, target),
 16362              }), {});
 16363          }
 16364      }
 16365      return targets;
 16366  }
 16367  function delegationsFromJSON(data) {
 16368      let delegations;
 16369      if (utils_1.guard.isDefined(data)) {
 16370          if (!utils_1.guard.isObject(data)) {
 16371              throw new TypeError('delegations must be an object');
 16372          }
 16373          else {
 16374              delegations = delegations_1.Delegations.fromJSON(data);
 16375          }
 16376      }
 16377      return delegations;
 16378  }
 16379  
 16380  
 16381  /***/ }),
 16382  
 16383  /***/ 4042:
 16384  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 16385  
 16386  "use strict";
 16387  
 16388  Object.defineProperty(exports, "__esModule", ({ value: true }));
 16389  exports.Timestamp = void 0;
 16390  const base_1 = __nccwpck_require__(60159);
 16391  const file_1 = __nccwpck_require__(51923);
 16392  const utils_1 = __nccwpck_require__(45688);
 16393  /**
 16394   * A container for the signed part of timestamp metadata.
 16395   *
 16396   * A top-level that specifies the latest version of the snapshot role metadata file,
 16397   * and hence the latest versions of all metadata and targets on the repository.
 16398   */
 16399  class Timestamp extends base_1.Signed {
 16400      constructor(options) {
 16401          super(options);
 16402          this.type = base_1.MetadataKind.Timestamp;
 16403          this.snapshotMeta = options.snapshotMeta || new file_1.MetaFile({ version: 1 });
 16404      }
 16405      equals(other) {
 16406          if (!(other instanceof Timestamp)) {
 16407              return false;
 16408          }
 16409          return super.equals(other) && this.snapshotMeta.equals(other.snapshotMeta);
 16410      }
 16411      toJSON() {
 16412          return {
 16413              _type: this.type,
 16414              spec_version: this.specVersion,
 16415              version: this.version,
 16416              expires: this.expires,
 16417              meta: { 'snapshot.json': this.snapshotMeta.toJSON() },
 16418              ...this.unrecognizedFields,
 16419          };
 16420      }
 16421      static fromJSON(data) {
 16422          const { unrecognizedFields, ...commonFields } = base_1.Signed.commonFieldsFromJSON(data);
 16423          const { meta, ...rest } = unrecognizedFields;
 16424          return new Timestamp({
 16425              ...commonFields,
 16426              snapshotMeta: snapshotMetaFromJSON(meta),
 16427              unrecognizedFields: rest,
 16428          });
 16429      }
 16430  }
 16431  exports.Timestamp = Timestamp;
 16432  function snapshotMetaFromJSON(data) {
 16433      let snapshotMeta;
 16434      if (utils_1.guard.isDefined(data)) {
 16435          const snapshotData = data['snapshot.json'];
 16436          if (!utils_1.guard.isDefined(snapshotData) || !utils_1.guard.isObject(snapshotData)) {
 16437              throw new TypeError('missing snapshot.json in meta');
 16438          }
 16439          else {
 16440              snapshotMeta = file_1.MetaFile.fromJSON(snapshotData);
 16441          }
 16442      }
 16443      return snapshotMeta;
 16444  }
 16445  
 16446  
 16447  /***/ }),
 16448  
 16449  /***/ 27106:
 16450  /***/ ((__unused_webpack_module, exports) => {
 16451  
 16452  "use strict";
 16453  
 16454  Object.defineProperty(exports, "__esModule", ({ value: true }));
 16455  exports.isObjectRecord = exports.isStringRecord = exports.isObjectArray = exports.isStringArray = exports.isObject = exports.isDefined = void 0;
 16456  function isDefined(val) {
 16457      return val !== undefined;
 16458  }
 16459  exports.isDefined = isDefined;
 16460  function isObject(value) {
 16461      return typeof value === 'object' && value !== null;
 16462  }
 16463  exports.isObject = isObject;
 16464  function isStringArray(value) {
 16465      return Array.isArray(value) && value.every((v) => typeof v === 'string');
 16466  }
 16467  exports.isStringArray = isStringArray;
 16468  function isObjectArray(value) {
 16469      return Array.isArray(value) && value.every(isObject);
 16470  }
 16471  exports.isObjectArray = isObjectArray;
 16472  function isStringRecord(value) {
 16473      return (typeof value === 'object' &&
 16474          value !== null &&
 16475          Object.keys(value).every((k) => typeof k === 'string') &&
 16476          Object.values(value).every((v) => typeof v === 'string'));
 16477  }
 16478  exports.isStringRecord = isStringRecord;
 16479  function isObjectRecord(value) {
 16480      return (typeof value === 'object' &&
 16481          value !== null &&
 16482          Object.keys(value).every((k) => typeof k === 'string') &&
 16483          Object.values(value).every((v) => typeof v === 'object' && v !== null));
 16484  }
 16485  exports.isObjectRecord = isObjectRecord;
 16486  
 16487  
 16488  /***/ }),
 16489  
 16490  /***/ 45688:
 16491  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 16492  
 16493  "use strict";
 16494  
 16495  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 16496      if (k2 === undefined) k2 = k;
 16497      var desc = Object.getOwnPropertyDescriptor(m, k);
 16498      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 16499        desc = { enumerable: true, get: function() { return m[k]; } };
 16500      }
 16501      Object.defineProperty(o, k2, desc);
 16502  }) : (function(o, m, k, k2) {
 16503      if (k2 === undefined) k2 = k;
 16504      o[k2] = m[k];
 16505  }));
 16506  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 16507      Object.defineProperty(o, "default", { enumerable: true, value: v });
 16508  }) : function(o, v) {
 16509      o["default"] = v;
 16510  });
 16511  var __importStar = (this && this.__importStar) || function (mod) {
 16512      if (mod && mod.__esModule) return mod;
 16513      var result = {};
 16514      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 16515      __setModuleDefault(result, mod);
 16516      return result;
 16517  };
 16518  Object.defineProperty(exports, "__esModule", ({ value: true }));
 16519  exports.crypto = exports.guard = void 0;
 16520  exports.guard = __importStar(__nccwpck_require__(27106));
 16521  exports.crypto = __importStar(__nccwpck_require__(8430));
 16522  
 16523  
 16524  /***/ }),
 16525  
 16526  /***/ 78725:
 16527  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 16528  
 16529  "use strict";
 16530  
 16531  var __importDefault = (this && this.__importDefault) || function (mod) {
 16532      return (mod && mod.__esModule) ? mod : { "default": mod };
 16533  };
 16534  Object.defineProperty(exports, "__esModule", ({ value: true }));
 16535  exports.getPublicKey = void 0;
 16536  const crypto_1 = __importDefault(__nccwpck_require__(6113));
 16537  const error_1 = __nccwpck_require__(58448);
 16538  const oid_1 = __nccwpck_require__(68680);
 16539  const ASN1_TAG_SEQUENCE = 0x30;
 16540  const ANS1_TAG_BIT_STRING = 0x03;
 16541  const NULL_BYTE = 0x00;
 16542  const OID_EDDSA = '1.3.101.112';
 16543  const OID_EC_PUBLIC_KEY = '1.2.840.10045.2.1';
 16544  const OID_EC_CURVE_P256V1 = '1.2.840.10045.3.1.7';
 16545  const PEM_HEADER = '-----BEGIN PUBLIC KEY-----';
 16546  function getPublicKey(keyInfo) {
 16547      switch (keyInfo.keyType) {
 16548          case 'rsa':
 16549              return getRSAPublicKey(keyInfo);
 16550          case 'ed25519':
 16551              return getED25519PublicKey(keyInfo);
 16552          case 'ecdsa':
 16553          case 'ecdsa-sha2-nistp256':
 16554          case 'ecdsa-sha2-nistp384':
 16555              return getECDCSAPublicKey(keyInfo);
 16556          default:
 16557              throw new error_1.UnsupportedAlgorithmError(`Unsupported key type: ${keyInfo.keyType}`);
 16558      }
 16559  }
 16560  exports.getPublicKey = getPublicKey;
 16561  function getRSAPublicKey(keyInfo) {
 16562      // Only support PEM-encoded RSA keys
 16563      if (!keyInfo.keyVal.startsWith(PEM_HEADER)) {
 16564          throw new error_1.CryptoError('Invalid key format');
 16565      }
 16566      const key = crypto_1.default.createPublicKey(keyInfo.keyVal);
 16567      switch (keyInfo.scheme) {
 16568          case 'rsassa-pss-sha256':
 16569              return {
 16570                  key: key,
 16571                  padding: crypto_1.default.constants.RSA_PKCS1_PSS_PADDING,
 16572              };
 16573          default:
 16574              throw new error_1.UnsupportedAlgorithmError(`Unsupported RSA scheme: ${keyInfo.scheme}`);
 16575      }
 16576  }
 16577  function getED25519PublicKey(keyInfo) {
 16578      let key;
 16579      // If key is already PEM-encoded we can just parse it
 16580      if (keyInfo.keyVal.startsWith(PEM_HEADER)) {
 16581          key = crypto_1.default.createPublicKey(keyInfo.keyVal);
 16582      }
 16583      else {
 16584          // If key is not PEM-encoded it had better be hex
 16585          if (!isHex(keyInfo.keyVal)) {
 16586              throw new error_1.CryptoError('Invalid key format');
 16587          }
 16588          key = crypto_1.default.createPublicKey({
 16589              key: ed25519.hexToDER(keyInfo.keyVal),
 16590              format: 'der',
 16591              type: 'spki',
 16592          });
 16593      }
 16594      return { key };
 16595  }
 16596  function getECDCSAPublicKey(keyInfo) {
 16597      let key;
 16598      // If key is already PEM-encoded we can just parse it
 16599      if (keyInfo.keyVal.startsWith(PEM_HEADER)) {
 16600          key = crypto_1.default.createPublicKey(keyInfo.keyVal);
 16601      }
 16602      else {
 16603          // If key is not PEM-encoded it had better be hex
 16604          if (!isHex(keyInfo.keyVal)) {
 16605              throw new error_1.CryptoError('Invalid key format');
 16606          }
 16607          key = crypto_1.default.createPublicKey({
 16608              key: ecdsa.hexToDER(keyInfo.keyVal),
 16609              format: 'der',
 16610              type: 'spki',
 16611          });
 16612      }
 16613      return { key };
 16614  }
 16615  const ed25519 = {
 16616      // Translates a hex key into a crypto KeyObject
 16617      // https://keygen.sh/blog/how-to-use-hexadecimal-ed25519-keys-in-node/
 16618      hexToDER: (hex) => {
 16619          const key = Buffer.from(hex, 'hex');
 16620          const oid = (0, oid_1.encodeOIDString)(OID_EDDSA);
 16621          // Create a byte sequence containing the OID and key
 16622          const elements = Buffer.concat([
 16623              Buffer.concat([
 16624                  Buffer.from([ASN1_TAG_SEQUENCE]),
 16625                  Buffer.from([oid.length]),
 16626                  oid,
 16627              ]),
 16628              Buffer.concat([
 16629                  Buffer.from([ANS1_TAG_BIT_STRING]),
 16630                  Buffer.from([key.length + 1]),
 16631                  Buffer.from([NULL_BYTE]),
 16632                  key,
 16633              ]),
 16634          ]);
 16635          // Wrap up by creating a sequence of elements
 16636          const der = Buffer.concat([
 16637              Buffer.from([ASN1_TAG_SEQUENCE]),
 16638              Buffer.from([elements.length]),
 16639              elements,
 16640          ]);
 16641          return der;
 16642      },
 16643  };
 16644  const ecdsa = {
 16645      hexToDER: (hex) => {
 16646          const key = Buffer.from(hex, 'hex');
 16647          const bitString = Buffer.concat([
 16648              Buffer.from([ANS1_TAG_BIT_STRING]),
 16649              Buffer.from([key.length + 1]),
 16650              Buffer.from([NULL_BYTE]),
 16651              key,
 16652          ]);
 16653          const oids = Buffer.concat([
 16654              (0, oid_1.encodeOIDString)(OID_EC_PUBLIC_KEY),
 16655              (0, oid_1.encodeOIDString)(OID_EC_CURVE_P256V1),
 16656          ]);
 16657          const oidSequence = Buffer.concat([
 16658              Buffer.from([ASN1_TAG_SEQUENCE]),
 16659              Buffer.from([oids.length]),
 16660              oids,
 16661          ]);
 16662          // Wrap up by creating a sequence of elements
 16663          const der = Buffer.concat([
 16664              Buffer.from([ASN1_TAG_SEQUENCE]),
 16665              Buffer.from([oidSequence.length + bitString.length]),
 16666              oidSequence,
 16667              bitString,
 16668          ]);
 16669          return der;
 16670      },
 16671  };
 16672  const isHex = (key) => /^[0-9a-fA-F]+$/.test(key);
 16673  
 16674  
 16675  /***/ }),
 16676  
 16677  /***/ 68680:
 16678  /***/ ((__unused_webpack_module, exports) => {
 16679  
 16680  "use strict";
 16681  
 16682  Object.defineProperty(exports, "__esModule", ({ value: true }));
 16683  exports.encodeOIDString = void 0;
 16684  const ANS1_TAG_OID = 0x06;
 16685  function encodeOIDString(oid) {
 16686      const parts = oid.split('.');
 16687      // The first two subidentifiers are encoded into the first byte
 16688      const first = parseInt(parts[0], 10) * 40 + parseInt(parts[1], 10);
 16689      const rest = [];
 16690      parts.slice(2).forEach((part) => {
 16691          const bytes = encodeVariableLengthInteger(parseInt(part, 10));
 16692          rest.push(...bytes);
 16693      });
 16694      const der = Buffer.from([first, ...rest]);
 16695      return Buffer.from([ANS1_TAG_OID, der.length, ...der]);
 16696  }
 16697  exports.encodeOIDString = encodeOIDString;
 16698  function encodeVariableLengthInteger(value) {
 16699      const bytes = [];
 16700      let mask = 0x00;
 16701      while (value > 0) {
 16702          bytes.unshift((value & 0x7f) | mask);
 16703          value >>= 7;
 16704          mask = 0x80;
 16705      }
 16706      return bytes;
 16707  }
 16708  
 16709  
 16710  /***/ }),
 16711  
 16712  /***/ 8430:
 16713  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 16714  
 16715  "use strict";
 16716  
 16717  var __importDefault = (this && this.__importDefault) || function (mod) {
 16718      return (mod && mod.__esModule) ? mod : { "default": mod };
 16719  };
 16720  Object.defineProperty(exports, "__esModule", ({ value: true }));
 16721  exports.verifySignature = void 0;
 16722  const canonical_json_1 = __nccwpck_require__(19652);
 16723  const crypto_1 = __importDefault(__nccwpck_require__(6113));
 16724  const verifySignature = (metaDataSignedData, key, signature) => {
 16725      const canonicalData = Buffer.from((0, canonical_json_1.canonicalize)(metaDataSignedData));
 16726      return crypto_1.default.verify(undefined, canonicalData, key, Buffer.from(signature, 'hex'));
 16727  };
 16728  exports.verifySignature = verifySignature;
 16729  
 16730  
 16731  /***/ }),
 16732  
 16733  /***/ 14515:
 16734  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 16735  
 16736  var balanced = __nccwpck_require__(9417);
 16737  
 16738  module.exports = expandTop;
 16739  
 16740  var escSlash = '\0SLASH'+Math.random()+'\0';
 16741  var escOpen = '\0OPEN'+Math.random()+'\0';
 16742  var escClose = '\0CLOSE'+Math.random()+'\0';
 16743  var escComma = '\0COMMA'+Math.random()+'\0';
 16744  var escPeriod = '\0PERIOD'+Math.random()+'\0';
 16745  
 16746  function numeric(str) {
 16747    return parseInt(str, 10) == str
 16748      ? parseInt(str, 10)
 16749      : str.charCodeAt(0);
 16750  }
 16751  
 16752  function escapeBraces(str) {
 16753    return str.split('\\\\').join(escSlash)
 16754              .split('\\{').join(escOpen)
 16755              .split('\\}').join(escClose)
 16756              .split('\\,').join(escComma)
 16757              .split('\\.').join(escPeriod);
 16758  }
 16759  
 16760  function unescapeBraces(str) {
 16761    return str.split(escSlash).join('\\')
 16762              .split(escOpen).join('{')
 16763              .split(escClose).join('}')
 16764              .split(escComma).join(',')
 16765              .split(escPeriod).join('.');
 16766  }
 16767  
 16768  
 16769  // Basically just str.split(","), but handling cases
 16770  // where we have nested braced sections, which should be
 16771  // treated as individual members, like {a,{b,c},d}
 16772  function parseCommaParts(str) {
 16773    if (!str)
 16774      return [''];
 16775  
 16776    var parts = [];
 16777    var m = balanced('{', '}', str);
 16778  
 16779    if (!m)
 16780      return str.split(',');
 16781  
 16782    var pre = m.pre;
 16783    var body = m.body;
 16784    var post = m.post;
 16785    var p = pre.split(',');
 16786  
 16787    p[p.length-1] += '{' + body + '}';
 16788    var postParts = parseCommaParts(post);
 16789    if (post.length) {
 16790      p[p.length-1] += postParts.shift();
 16791      p.push.apply(p, postParts);
 16792    }
 16793  
 16794    parts.push.apply(parts, p);
 16795  
 16796    return parts;
 16797  }
 16798  
 16799  function expandTop(str) {
 16800    if (!str)
 16801      return [];
 16802  
 16803    // I don't know why Bash 4.3 does this, but it does.
 16804    // Anything starting with {} will have the first two bytes preserved
 16805    // but *only* at the top level, so {},a}b will not expand to anything,
 16806    // but a{},b}c will be expanded to [a}c,abc].
 16807    // One could argue that this is a bug in Bash, but since the goal of
 16808    // this module is to match Bash's rules, we escape a leading {}
 16809    if (str.substr(0, 2) === '{}') {
 16810      str = '\\{\\}' + str.substr(2);
 16811    }
 16812  
 16813    return expand(escapeBraces(str), true).map(unescapeBraces);
 16814  }
 16815  
 16816  function embrace(str) {
 16817    return '{' + str + '}';
 16818  }
 16819  function isPadded(el) {
 16820    return /^-?0\d/.test(el);
 16821  }
 16822  
 16823  function lte(i, y) {
 16824    return i <= y;
 16825  }
 16826  function gte(i, y) {
 16827    return i >= y;
 16828  }
 16829  
 16830  function expand(str, isTop) {
 16831    var expansions = [];
 16832  
 16833    var m = balanced('{', '}', str);
 16834    if (!m) return [str];
 16835  
 16836    // no need to expand pre, since it is guaranteed to be free of brace-sets
 16837    var pre = m.pre;
 16838    var post = m.post.length
 16839      ? expand(m.post, false)
 16840      : [''];
 16841  
 16842    if (/\$$/.test(m.pre)) {    
 16843      for (var k = 0; k < post.length; k++) {
 16844        var expansion = pre+ '{' + m.body + '}' + post[k];
 16845        expansions.push(expansion);
 16846      }
 16847    } else {
 16848      var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
 16849      var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
 16850      var isSequence = isNumericSequence || isAlphaSequence;
 16851      var isOptions = m.body.indexOf(',') >= 0;
 16852      if (!isSequence && !isOptions) {
 16853        // {a},b}
 16854        if (m.post.match(/,.*\}/)) {
 16855          str = m.pre + '{' + m.body + escClose + m.post;
 16856          return expand(str);
 16857        }
 16858        return [str];
 16859      }
 16860  
 16861      var n;
 16862      if (isSequence) {
 16863        n = m.body.split(/\.\./);
 16864      } else {
 16865        n = parseCommaParts(m.body);
 16866        if (n.length === 1) {
 16867          // x{{a,b}}y ==> x{a}y x{b}y
 16868          n = expand(n[0], false).map(embrace);
 16869          if (n.length === 1) {
 16870            return post.map(function(p) {
 16871              return m.pre + n[0] + p;
 16872            });
 16873          }
 16874        }
 16875      }
 16876  
 16877      // at this point, n is the parts, and we know it's not a comma set
 16878      // with a single entry.
 16879      var N;
 16880  
 16881      if (isSequence) {
 16882        var x = numeric(n[0]);
 16883        var y = numeric(n[1]);
 16884        var width = Math.max(n[0].length, n[1].length)
 16885        var incr = n.length == 3
 16886          ? Math.abs(numeric(n[2]))
 16887          : 1;
 16888        var test = lte;
 16889        var reverse = y < x;
 16890        if (reverse) {
 16891          incr *= -1;
 16892          test = gte;
 16893        }
 16894        var pad = n.some(isPadded);
 16895  
 16896        N = [];
 16897  
 16898        for (var i = x; test(i, y); i += incr) {
 16899          var c;
 16900          if (isAlphaSequence) {
 16901            c = String.fromCharCode(i);
 16902            if (c === '\\')
 16903              c = '';
 16904          } else {
 16905            c = String(i);
 16906            if (pad) {
 16907              var need = width - c.length;
 16908              if (need > 0) {
 16909                var z = new Array(need + 1).join('0');
 16910                if (i < 0)
 16911                  c = '-' + z + c.slice(1);
 16912                else
 16913                  c = z + c;
 16914              }
 16915            }
 16916          }
 16917          N.push(c);
 16918        }
 16919      } else {
 16920        N = [];
 16921  
 16922        for (var j = 0; j < n.length; j++) {
 16923          N.push.apply(N, expand(n[j], false));
 16924        }
 16925      }
 16926  
 16927      for (var j = 0; j < N.length; j++) {
 16928        for (var k = 0; k < post.length; k++) {
 16929          var expansion = pre + N[j] + post[k];
 16930          if (!isTop || isSequence || expansion)
 16931            expansions.push(expansion);
 16932        }
 16933      }
 16934    }
 16935  
 16936    return expansions;
 16937  }
 16938  
 16939  
 16940  
 16941  /***/ }),
 16942  
 16943  /***/ 8348:
 16944  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 16945  
 16946  "use strict";
 16947  
 16948  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 16949      if (k2 === undefined) k2 = k;
 16950      var desc = Object.getOwnPropertyDescriptor(m, k);
 16951      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 16952        desc = { enumerable: true, get: function() { return m[k]; } };
 16953      }
 16954      Object.defineProperty(o, k2, desc);
 16955  }) : (function(o, m, k, k2) {
 16956      if (k2 === undefined) k2 = k;
 16957      o[k2] = m[k];
 16958  }));
 16959  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 16960      Object.defineProperty(o, "default", { enumerable: true, value: v });
 16961  }) : function(o, v) {
 16962      o["default"] = v;
 16963  });
 16964  var __importStar = (this && this.__importStar) || function (mod) {
 16965      if (mod && mod.__esModule) return mod;
 16966      var result = {};
 16967      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 16968      __setModuleDefault(result, mod);
 16969      return result;
 16970  };
 16971  Object.defineProperty(exports, "__esModule", ({ value: true }));
 16972  exports.req = exports.json = exports.toBuffer = void 0;
 16973  const http = __importStar(__nccwpck_require__(13685));
 16974  const https = __importStar(__nccwpck_require__(95687));
 16975  async function toBuffer(stream) {
 16976      let length = 0;
 16977      const chunks = [];
 16978      for await (const chunk of stream) {
 16979          length += chunk.length;
 16980          chunks.push(chunk);
 16981      }
 16982      return Buffer.concat(chunks, length);
 16983  }
 16984  exports.toBuffer = toBuffer;
 16985  // eslint-disable-next-line @typescript-eslint/no-explicit-any
 16986  async function json(stream) {
 16987      const buf = await toBuffer(stream);
 16988      const str = buf.toString('utf8');
 16989      try {
 16990          return JSON.parse(str);
 16991      }
 16992      catch (_err) {
 16993          const err = _err;
 16994          err.message += ` (input: ${str})`;
 16995          throw err;
 16996      }
 16997  }
 16998  exports.json = json;
 16999  function req(url, opts = {}) {
 17000      const href = typeof url === 'string' ? url : url.href;
 17001      const req = (href.startsWith('https:') ? https : http).request(url, opts);
 17002      const promise = new Promise((resolve, reject) => {
 17003          req
 17004              .once('response', resolve)
 17005              .once('error', reject)
 17006              .end();
 17007      });
 17008      req.then = promise.then.bind(promise);
 17009      return req;
 17010  }
 17011  exports.req = req;
 17012  //# sourceMappingURL=helpers.js.map
 17013  
 17014  /***/ }),
 17015  
 17016  /***/ 70694:
 17017  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 17018  
 17019  "use strict";
 17020  
 17021  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 17022      if (k2 === undefined) k2 = k;
 17023      var desc = Object.getOwnPropertyDescriptor(m, k);
 17024      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 17025        desc = { enumerable: true, get: function() { return m[k]; } };
 17026      }
 17027      Object.defineProperty(o, k2, desc);
 17028  }) : (function(o, m, k, k2) {
 17029      if (k2 === undefined) k2 = k;
 17030      o[k2] = m[k];
 17031  }));
 17032  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 17033      Object.defineProperty(o, "default", { enumerable: true, value: v });
 17034  }) : function(o, v) {
 17035      o["default"] = v;
 17036  });
 17037  var __importStar = (this && this.__importStar) || function (mod) {
 17038      if (mod && mod.__esModule) return mod;
 17039      var result = {};
 17040      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 17041      __setModuleDefault(result, mod);
 17042      return result;
 17043  };
 17044  var __exportStar = (this && this.__exportStar) || function(m, exports) {
 17045      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
 17046  };
 17047  Object.defineProperty(exports, "__esModule", ({ value: true }));
 17048  exports.Agent = void 0;
 17049  const http = __importStar(__nccwpck_require__(13685));
 17050  __exportStar(__nccwpck_require__(8348), exports);
 17051  const INTERNAL = Symbol('AgentBaseInternalState');
 17052  class Agent extends http.Agent {
 17053      constructor(opts) {
 17054          super(opts);
 17055          this[INTERNAL] = {};
 17056      }
 17057      /**
 17058       * Determine whether this is an `http` or `https` request.
 17059       */
 17060      isSecureEndpoint(options) {
 17061          if (options) {
 17062              // First check the `secureEndpoint` property explicitly, since this
 17063              // means that a parent `Agent` is "passing through" to this instance.
 17064              // eslint-disable-next-line @typescript-eslint/no-explicit-any
 17065              if (typeof options.secureEndpoint === 'boolean') {
 17066                  return options.secureEndpoint;
 17067              }
 17068              // If no explicit `secure` endpoint, check if `protocol` property is
 17069              // set. This will usually be the case since using a full string URL
 17070              // or `URL` instance should be the most common usage.
 17071              if (typeof options.protocol === 'string') {
 17072                  return options.protocol === 'https:';
 17073              }
 17074          }
 17075          // Finally, if no `protocol` property was set, then fall back to
 17076          // checking the stack trace of the current call stack, and try to
 17077          // detect the "https" module.
 17078          const { stack } = new Error();
 17079          if (typeof stack !== 'string')
 17080              return false;
 17081          return stack
 17082              .split('\n')
 17083              .some((l) => l.indexOf('(https.js:') !== -1 ||
 17084              l.indexOf('node:https:') !== -1);
 17085      }
 17086      createSocket(req, options, cb) {
 17087          const connectOpts = {
 17088              ...options,
 17089              secureEndpoint: this.isSecureEndpoint(options),
 17090          };
 17091          Promise.resolve()
 17092              .then(() => this.connect(req, connectOpts))
 17093              .then((socket) => {
 17094              if (socket instanceof http.Agent) {
 17095                  // @ts-expect-error `addRequest()` isn't defined in `@types/node`
 17096                  return socket.addRequest(req, connectOpts);
 17097              }
 17098              this[INTERNAL].currentSocket = socket;
 17099              // @ts-expect-error `createSocket()` isn't defined in `@types/node`
 17100              super.createSocket(req, options, cb);
 17101          }, cb);
 17102      }
 17103      createConnection() {
 17104          const socket = this[INTERNAL].currentSocket;
 17105          this[INTERNAL].currentSocket = undefined;
 17106          if (!socket) {
 17107              throw new Error('No socket was returned in the `connect()` function');
 17108          }
 17109          return socket;
 17110      }
 17111      get defaultPort() {
 17112          return (this[INTERNAL].defaultPort ??
 17113              (this.protocol === 'https:' ? 443 : 80));
 17114      }
 17115      set defaultPort(v) {
 17116          if (this[INTERNAL]) {
 17117              this[INTERNAL].defaultPort = v;
 17118          }
 17119      }
 17120      get protocol() {
 17121          return (this[INTERNAL].protocol ??
 17122              (this.isSecureEndpoint() ? 'https:' : 'http:'));
 17123      }
 17124      set protocol(v) {
 17125          if (this[INTERNAL]) {
 17126              this[INTERNAL].protocol = v;
 17127          }
 17128      }
 17129  }
 17130  exports.Agent = Agent;
 17131  //# sourceMappingURL=index.js.map
 17132  
 17133  /***/ }),
 17134  
 17135  /***/ 61231:
 17136  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 17137  
 17138  "use strict";
 17139  
 17140  const indentString = __nccwpck_require__(98043);
 17141  const cleanStack = __nccwpck_require__(27972);
 17142  
 17143  const cleanInternalStack = stack => stack.replace(/\s+at .*aggregate-error\/index.js:\d+:\d+\)?/g, '');
 17144  
 17145  class AggregateError extends Error {
 17146  	constructor(errors) {
 17147  		if (!Array.isArray(errors)) {
 17148  			throw new TypeError(`Expected input to be an Array, got ${typeof errors}`);
 17149  		}
 17150  
 17151  		errors = [...errors].map(error => {
 17152  			if (error instanceof Error) {
 17153  				return error;
 17154  			}
 17155  
 17156  			if (error !== null && typeof error === 'object') {
 17157  				// Handle plain error objects with message property and/or possibly other metadata
 17158  				return Object.assign(new Error(error.message), error);
 17159  			}
 17160  
 17161  			return new Error(error);
 17162  		});
 17163  
 17164  		let message = errors
 17165  			.map(error => {
 17166  				// The `stack` property is not standardized, so we can't assume it exists
 17167  				return typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error);
 17168  			})
 17169  			.join('\n');
 17170  		message = '\n' + indentString(message, 4);
 17171  		super(message);
 17172  
 17173  		this.name = 'AggregateError';
 17174  
 17175  		Object.defineProperty(this, '_errors', {value: errors});
 17176  	}
 17177  
 17178  	* [Symbol.iterator]() {
 17179  		for (const error of this._errors) {
 17180  			yield error;
 17181  		}
 17182  	}
 17183  }
 17184  
 17185  module.exports = AggregateError;
 17186  
 17187  
 17188  /***/ }),
 17189  
 17190  /***/ 9417:
 17191  /***/ ((module) => {
 17192  
 17193  "use strict";
 17194  
 17195  module.exports = balanced;
 17196  function balanced(a, b, str) {
 17197    if (a instanceof RegExp) a = maybeMatch(a, str);
 17198    if (b instanceof RegExp) b = maybeMatch(b, str);
 17199  
 17200    var r = range(a, b, str);
 17201  
 17202    return r && {
 17203      start: r[0],
 17204      end: r[1],
 17205      pre: str.slice(0, r[0]),
 17206      body: str.slice(r[0] + a.length, r[1]),
 17207      post: str.slice(r[1] + b.length)
 17208    };
 17209  }
 17210  
 17211  function maybeMatch(reg, str) {
 17212    var m = str.match(reg);
 17213    return m ? m[0] : null;
 17214  }
 17215  
 17216  balanced.range = range;
 17217  function range(a, b, str) {
 17218    var begs, beg, left, right, result;
 17219    var ai = str.indexOf(a);
 17220    var bi = str.indexOf(b, ai + 1);
 17221    var i = ai;
 17222  
 17223    if (ai >= 0 && bi > 0) {
 17224      if(a===b) {
 17225        return [ai, bi];
 17226      }
 17227      begs = [];
 17228      left = str.length;
 17229  
 17230      while (i >= 0 && !result) {
 17231        if (i == ai) {
 17232          begs.push(i);
 17233          ai = str.indexOf(a, i + 1);
 17234        } else if (begs.length == 1) {
 17235          result = [ begs.pop(), bi ];
 17236        } else {
 17237          beg = begs.pop();
 17238          if (beg < left) {
 17239            left = beg;
 17240            right = bi;
 17241          }
 17242  
 17243          bi = str.indexOf(b, i + 1);
 17244        }
 17245  
 17246        i = ai < bi && ai >= 0 ? ai : bi;
 17247      }
 17248  
 17249      if (begs.length) {
 17250        result = [ left, right ];
 17251      }
 17252    }
 17253  
 17254    return result;
 17255  }
 17256  
 17257  
 17258  /***/ }),
 17259  
 17260  /***/ 83682:
 17261  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 17262  
 17263  var register = __nccwpck_require__(44670);
 17264  var addHook = __nccwpck_require__(5549);
 17265  var removeHook = __nccwpck_require__(6819);
 17266  
 17267  // bind with array of arguments: https://stackoverflow.com/a/21792913
 17268  var bind = Function.bind;
 17269  var bindable = bind.bind(bind);
 17270  
 17271  function bindApi(hook, state, name) {
 17272    var removeHookRef = bindable(removeHook, null).apply(
 17273      null,
 17274      name ? [state, name] : [state]
 17275    );
 17276    hook.api = { remove: removeHookRef };
 17277    hook.remove = removeHookRef;
 17278    ["before", "error", "after", "wrap"].forEach(function (kind) {
 17279      var args = name ? [state, kind, name] : [state, kind];
 17280      hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);
 17281    });
 17282  }
 17283  
 17284  function HookSingular() {
 17285    var singularHookName = "h";
 17286    var singularHookState = {
 17287      registry: {},
 17288    };
 17289    var singularHook = register.bind(null, singularHookState, singularHookName);
 17290    bindApi(singularHook, singularHookState, singularHookName);
 17291    return singularHook;
 17292  }
 17293  
 17294  function HookCollection() {
 17295    var state = {
 17296      registry: {},
 17297    };
 17298  
 17299    var hook = register.bind(null, state);
 17300    bindApi(hook, state);
 17301  
 17302    return hook;
 17303  }
 17304  
 17305  var collectionHookDeprecationMessageDisplayed = false;
 17306  function Hook() {
 17307    if (!collectionHookDeprecationMessageDisplayed) {
 17308      console.warn(
 17309        '[before-after-hook]: "Hook()" repurposing warning, use "Hook.Collection()". Read more: https://git.io/upgrade-before-after-hook-to-1.4'
 17310      );
 17311      collectionHookDeprecationMessageDisplayed = true;
 17312    }
 17313    return HookCollection();
 17314  }
 17315  
 17316  Hook.Singular = HookSingular.bind();
 17317  Hook.Collection = HookCollection.bind();
 17318  
 17319  module.exports = Hook;
 17320  // expose constructors as a named property for TypeScript
 17321  module.exports.Hook = Hook;
 17322  module.exports.Singular = Hook.Singular;
 17323  module.exports.Collection = Hook.Collection;
 17324  
 17325  
 17326  /***/ }),
 17327  
 17328  /***/ 5549:
 17329  /***/ ((module) => {
 17330  
 17331  module.exports = addHook;
 17332  
 17333  function addHook(state, kind, name, hook) {
 17334    var orig = hook;
 17335    if (!state.registry[name]) {
 17336      state.registry[name] = [];
 17337    }
 17338  
 17339    if (kind === "before") {
 17340      hook = function (method, options) {
 17341        return Promise.resolve()
 17342          .then(orig.bind(null, options))
 17343          .then(method.bind(null, options));
 17344      };
 17345    }
 17346  
 17347    if (kind === "after") {
 17348      hook = function (method, options) {
 17349        var result;
 17350        return Promise.resolve()
 17351          .then(method.bind(null, options))
 17352          .then(function (result_) {
 17353            result = result_;
 17354            return orig(result, options);
 17355          })
 17356          .then(function () {
 17357            return result;
 17358          });
 17359      };
 17360    }
 17361  
 17362    if (kind === "error") {
 17363      hook = function (method, options) {
 17364        return Promise.resolve()
 17365          .then(method.bind(null, options))
 17366          .catch(function (error) {
 17367            return orig(error, options);
 17368          });
 17369      };
 17370    }
 17371  
 17372    state.registry[name].push({
 17373      hook: hook,
 17374      orig: orig,
 17375    });
 17376  }
 17377  
 17378  
 17379  /***/ }),
 17380  
 17381  /***/ 44670:
 17382  /***/ ((module) => {
 17383  
 17384  module.exports = register;
 17385  
 17386  function register(state, name, method, options) {
 17387    if (typeof method !== "function") {
 17388      throw new Error("method for before hook must be a function");
 17389    }
 17390  
 17391    if (!options) {
 17392      options = {};
 17393    }
 17394  
 17395    if (Array.isArray(name)) {
 17396      return name.reverse().reduce(function (callback, name) {
 17397        return register.bind(null, state, name, callback, options);
 17398      }, method)();
 17399    }
 17400  
 17401    return Promise.resolve().then(function () {
 17402      if (!state.registry[name]) {
 17403        return method(options);
 17404      }
 17405  
 17406      return state.registry[name].reduce(function (method, registered) {
 17407        return registered.hook.bind(null, method, options);
 17408      }, method)();
 17409    });
 17410  }
 17411  
 17412  
 17413  /***/ }),
 17414  
 17415  /***/ 6819:
 17416  /***/ ((module) => {
 17417  
 17418  module.exports = removeHook;
 17419  
 17420  function removeHook(state, name, method) {
 17421    if (!state.registry[name]) {
 17422      return;
 17423    }
 17424  
 17425    var index = state.registry[name]
 17426      .map(function (registered) {
 17427        return registered.orig;
 17428      })
 17429      .indexOf(method);
 17430  
 17431    if (index === -1) {
 17432      return;
 17433    }
 17434  
 17435    state.registry[name].splice(index, 1);
 17436  }
 17437  
 17438  
 17439  /***/ }),
 17440  
 17441  /***/ 83491:
 17442  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 17443  
 17444  "use strict";
 17445  
 17446  
 17447  const contentVer = (__nccwpck_require__(51526)/* ["cache-version"].content */ .Jw.k)
 17448  const hashToSegments = __nccwpck_require__(12700)
 17449  const path = __nccwpck_require__(71017)
 17450  const ssri = __nccwpck_require__(4406)
 17451  
 17452  // Current format of content file path:
 17453  //
 17454  // sha512-BaSE64Hex= ->
 17455  // ~/.my-cache/content-v2/sha512/ba/da/55deadbeefc0ffee
 17456  //
 17457  module.exports = contentPath
 17458  
 17459  function contentPath (cache, integrity) {
 17460    const sri = ssri.parse(integrity, { single: true })
 17461    // contentPath is the *strongest* algo given
 17462    return path.join(
 17463      contentDir(cache),
 17464      sri.algorithm,
 17465      ...hashToSegments(sri.hexDigest())
 17466    )
 17467  }
 17468  
 17469  module.exports.contentDir = contentDir
 17470  
 17471  function contentDir (cache) {
 17472    return path.join(cache, `content-v${contentVer}`)
 17473  }
 17474  
 17475  
 17476  /***/ }),
 17477  
 17478  /***/ 99409:
 17479  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 17480  
 17481  "use strict";
 17482  
 17483  
 17484  const fs = __nccwpck_require__(73292)
 17485  const fsm = __nccwpck_require__(10968)
 17486  const ssri = __nccwpck_require__(4406)
 17487  const contentPath = __nccwpck_require__(83491)
 17488  const Pipeline = __nccwpck_require__(69891)
 17489  
 17490  module.exports = read
 17491  
 17492  const MAX_SINGLE_READ_SIZE = 64 * 1024 * 1024
 17493  async function read (cache, integrity, opts = {}) {
 17494    const { size } = opts
 17495    const { stat, cpath, sri } = await withContentSri(cache, integrity, async (cpath, sri) => {
 17496      // get size
 17497      const stat = size ? { size } : await fs.stat(cpath)
 17498      return { stat, cpath, sri }
 17499    })
 17500  
 17501    if (stat.size > MAX_SINGLE_READ_SIZE) {
 17502      return readPipeline(cpath, stat.size, sri, new Pipeline()).concat()
 17503    }
 17504  
 17505    const data = await fs.readFile(cpath, { encoding: null })
 17506  
 17507    if (stat.size !== data.length) {
 17508      throw sizeError(stat.size, data.length)
 17509    }
 17510  
 17511    if (!ssri.checkData(data, sri)) {
 17512      throw integrityError(sri, cpath)
 17513    }
 17514  
 17515    return data
 17516  }
 17517  
 17518  const readPipeline = (cpath, size, sri, stream) => {
 17519    stream.push(
 17520      new fsm.ReadStream(cpath, {
 17521        size,
 17522        readSize: MAX_SINGLE_READ_SIZE,
 17523      }),
 17524      ssri.integrityStream({
 17525        integrity: sri,
 17526        size,
 17527      })
 17528    )
 17529    return stream
 17530  }
 17531  
 17532  module.exports.stream = readStream
 17533  module.exports.readStream = readStream
 17534  
 17535  function readStream (cache, integrity, opts = {}) {
 17536    const { size } = opts
 17537    const stream = new Pipeline()
 17538    // Set all this up to run on the stream and then just return the stream
 17539    Promise.resolve().then(async () => {
 17540      const { stat, cpath, sri } = await withContentSri(cache, integrity, async (cpath, sri) => {
 17541        // get size
 17542        const stat = size ? { size } : await fs.stat(cpath)
 17543        return { stat, cpath, sri }
 17544      })
 17545  
 17546      return readPipeline(cpath, stat.size, sri, stream)
 17547    }).catch(err => stream.emit('error', err))
 17548  
 17549    return stream
 17550  }
 17551  
 17552  module.exports.copy = copy
 17553  
 17554  function copy (cache, integrity, dest) {
 17555    return withContentSri(cache, integrity, (cpath, sri) => {
 17556      return fs.copyFile(cpath, dest)
 17557    })
 17558  }
 17559  
 17560  module.exports.hasContent = hasContent
 17561  
 17562  async function hasContent (cache, integrity) {
 17563    if (!integrity) {
 17564      return false
 17565    }
 17566  
 17567    try {
 17568      return await withContentSri(cache, integrity, async (cpath, sri) => {
 17569        const stat = await fs.stat(cpath)
 17570        return { size: stat.size, sri, stat }
 17571      })
 17572    } catch (err) {
 17573      if (err.code === 'ENOENT') {
 17574        return false
 17575      }
 17576  
 17577      if (err.code === 'EPERM') {
 17578        /* istanbul ignore else */
 17579        if (process.platform !== 'win32') {
 17580          throw err
 17581        } else {
 17582          return false
 17583        }
 17584      }
 17585    }
 17586  }
 17587  
 17588  async function withContentSri (cache, integrity, fn) {
 17589    const sri = ssri.parse(integrity)
 17590    // If `integrity` has multiple entries, pick the first digest
 17591    // with available local data.
 17592    const algo = sri.pickAlgorithm()
 17593    const digests = sri[algo]
 17594  
 17595    if (digests.length <= 1) {
 17596      const cpath = contentPath(cache, digests[0])
 17597      return fn(cpath, digests[0])
 17598    } else {
 17599      // Can't use race here because a generic error can happen before
 17600      // a ENOENT error, and can happen before a valid result
 17601      const results = await Promise.all(digests.map(async (meta) => {
 17602        try {
 17603          return await withContentSri(cache, meta, fn)
 17604        } catch (err) {
 17605          if (err.code === 'ENOENT') {
 17606            return Object.assign(
 17607              new Error('No matching content found for ' + sri.toString()),
 17608              { code: 'ENOENT' }
 17609            )
 17610          }
 17611          return err
 17612        }
 17613      }))
 17614      // Return the first non error if it is found
 17615      const result = results.find((r) => !(r instanceof Error))
 17616      if (result) {
 17617        return result
 17618      }
 17619  
 17620      // Throw the No matching content found error
 17621      const enoentError = results.find((r) => r.code === 'ENOENT')
 17622      if (enoentError) {
 17623        throw enoentError
 17624      }
 17625  
 17626      // Throw generic error
 17627      throw results.find((r) => r instanceof Error)
 17628    }
 17629  }
 17630  
 17631  function sizeError (expected, found) {
 17632    /* eslint-disable-next-line max-len */
 17633    const err = new Error(`Bad data size: expected inserted data to be ${expected} bytes, but got ${found} instead`)
 17634    err.expected = expected
 17635    err.found = found
 17636    err.code = 'EBADSIZE'
 17637    return err
 17638  }
 17639  
 17640  function integrityError (sri, path) {
 17641    const err = new Error(`Integrity verification failed for ${sri} (${path})`)
 17642    err.code = 'EINTEGRITY'
 17643    err.sri = sri
 17644    err.path = path
 17645    return err
 17646  }
 17647  
 17648  
 17649  /***/ }),
 17650  
 17651  /***/ 51343:
 17652  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 17653  
 17654  "use strict";
 17655  
 17656  
 17657  const fs = __nccwpck_require__(73292)
 17658  const contentPath = __nccwpck_require__(83491)
 17659  const { hasContent } = __nccwpck_require__(99409)
 17660  
 17661  module.exports = rm
 17662  
 17663  async function rm (cache, integrity) {
 17664    const content = await hasContent(cache, integrity)
 17665    // ~pretty~ sure we can't end up with a content lacking sri, but be safe
 17666    if (content && content.sri) {
 17667      await fs.rm(contentPath(cache, content.sri), { recursive: true, force: true })
 17668      return true
 17669    } else {
 17670      return false
 17671    }
 17672  }
 17673  
 17674  
 17675  /***/ }),
 17676  
 17677  /***/ 73729:
 17678  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 17679  
 17680  "use strict";
 17681  
 17682  
 17683  const events = __nccwpck_require__(82361)
 17684  
 17685  const contentPath = __nccwpck_require__(83491)
 17686  const fs = __nccwpck_require__(73292)
 17687  const { moveFile } = __nccwpck_require__(10575)
 17688  const { Minipass } = __nccwpck_require__(14968)
 17689  const Pipeline = __nccwpck_require__(69891)
 17690  const Flush = __nccwpck_require__(4181)
 17691  const path = __nccwpck_require__(71017)
 17692  const ssri = __nccwpck_require__(4406)
 17693  const uniqueFilename = __nccwpck_require__(91747)
 17694  const fsm = __nccwpck_require__(10968)
 17695  
 17696  module.exports = write
 17697  
 17698  // Cache of move operations in process so we don't duplicate
 17699  const moveOperations = new Map()
 17700  
 17701  async function write (cache, data, opts = {}) {
 17702    const { algorithms, size, integrity } = opts
 17703  
 17704    if (typeof size === 'number' && data.length !== size) {
 17705      throw sizeError(size, data.length)
 17706    }
 17707  
 17708    const sri = ssri.fromData(data, algorithms ? { algorithms } : {})
 17709    if (integrity && !ssri.checkData(data, integrity, opts)) {
 17710      throw checksumError(integrity, sri)
 17711    }
 17712  
 17713    for (const algo in sri) {
 17714      const tmp = await makeTmp(cache, opts)
 17715      const hash = sri[algo].toString()
 17716      try {
 17717        await fs.writeFile(tmp.target, data, { flag: 'wx' })
 17718        await moveToDestination(tmp, cache, hash, opts)
 17719      } finally {
 17720        if (!tmp.moved) {
 17721          await fs.rm(tmp.target, { recursive: true, force: true })
 17722        }
 17723      }
 17724    }
 17725    return { integrity: sri, size: data.length }
 17726  }
 17727  
 17728  module.exports.stream = writeStream
 17729  
 17730  // writes proxied to the 'inputStream' that is passed to the Promise
 17731  // 'end' is deferred until content is handled.
 17732  class CacacheWriteStream extends Flush {
 17733    constructor (cache, opts) {
 17734      super()
 17735      this.opts = opts
 17736      this.cache = cache
 17737      this.inputStream = new Minipass()
 17738      this.inputStream.on('error', er => this.emit('error', er))
 17739      this.inputStream.on('drain', () => this.emit('drain'))
 17740      this.handleContentP = null
 17741    }
 17742  
 17743    write (chunk, encoding, cb) {
 17744      if (!this.handleContentP) {
 17745        this.handleContentP = handleContent(
 17746          this.inputStream,
 17747          this.cache,
 17748          this.opts
 17749        )
 17750        this.handleContentP.catch(error => this.emit('error', error))
 17751      }
 17752      return this.inputStream.write(chunk, encoding, cb)
 17753    }
 17754  
 17755    flush (cb) {
 17756      this.inputStream.end(() => {
 17757        if (!this.handleContentP) {
 17758          const e = new Error('Cache input stream was empty')
 17759          e.code = 'ENODATA'
 17760          // empty streams are probably emitting end right away.
 17761          // defer this one tick by rejecting a promise on it.
 17762          return Promise.reject(e).catch(cb)
 17763        }
 17764        // eslint-disable-next-line promise/catch-or-return
 17765        this.handleContentP.then(
 17766          (res) => {
 17767            res.integrity && this.emit('integrity', res.integrity)
 17768            // eslint-disable-next-line promise/always-return
 17769            res.size !== null && this.emit('size', res.size)
 17770            cb()
 17771          },
 17772          (er) => cb(er)
 17773        )
 17774      })
 17775    }
 17776  }
 17777  
 17778  function writeStream (cache, opts = {}) {
 17779    return new CacacheWriteStream(cache, opts)
 17780  }
 17781  
 17782  async function handleContent (inputStream, cache, opts) {
 17783    const tmp = await makeTmp(cache, opts)
 17784    try {
 17785      const res = await pipeToTmp(inputStream, cache, tmp.target, opts)
 17786      await moveToDestination(
 17787        tmp,
 17788        cache,
 17789        res.integrity,
 17790        opts
 17791      )
 17792      return res
 17793    } finally {
 17794      if (!tmp.moved) {
 17795        await fs.rm(tmp.target, { recursive: true, force: true })
 17796      }
 17797    }
 17798  }
 17799  
 17800  async function pipeToTmp (inputStream, cache, tmpTarget, opts) {
 17801    const outStream = new fsm.WriteStream(tmpTarget, {
 17802      flags: 'wx',
 17803    })
 17804  
 17805    if (opts.integrityEmitter) {
 17806      // we need to create these all simultaneously since they can fire in any order
 17807      const [integrity, size] = await Promise.all([
 17808        events.once(opts.integrityEmitter, 'integrity').then(res => res[0]),
 17809        events.once(opts.integrityEmitter, 'size').then(res => res[0]),
 17810        new Pipeline(inputStream, outStream).promise(),
 17811      ])
 17812      return { integrity, size }
 17813    }
 17814  
 17815    let integrity
 17816    let size
 17817    const hashStream = ssri.integrityStream({
 17818      integrity: opts.integrity,
 17819      algorithms: opts.algorithms,
 17820      size: opts.size,
 17821    })
 17822    hashStream.on('integrity', i => {
 17823      integrity = i
 17824    })
 17825    hashStream.on('size', s => {
 17826      size = s
 17827    })
 17828  
 17829    const pipeline = new Pipeline(inputStream, hashStream, outStream)
 17830    await pipeline.promise()
 17831    return { integrity, size }
 17832  }
 17833  
 17834  async function makeTmp (cache, opts) {
 17835    const tmpTarget = uniqueFilename(path.join(cache, 'tmp'), opts.tmpPrefix)
 17836    await fs.mkdir(path.dirname(tmpTarget), { recursive: true })
 17837    return {
 17838      target: tmpTarget,
 17839      moved: false,
 17840    }
 17841  }
 17842  
 17843  async function moveToDestination (tmp, cache, sri, opts) {
 17844    const destination = contentPath(cache, sri)
 17845    const destDir = path.dirname(destination)
 17846    if (moveOperations.has(destination)) {
 17847      return moveOperations.get(destination)
 17848    }
 17849    moveOperations.set(
 17850      destination,
 17851      fs.mkdir(destDir, { recursive: true })
 17852        .then(async () => {
 17853          await moveFile(tmp.target, destination, { overwrite: false })
 17854          tmp.moved = true
 17855          return tmp.moved
 17856        })
 17857        .catch(err => {
 17858          if (!err.message.startsWith('The destination file exists')) {
 17859            throw Object.assign(err, { code: 'EEXIST' })
 17860          }
 17861        }).finally(() => {
 17862          moveOperations.delete(destination)
 17863        })
 17864  
 17865    )
 17866    return moveOperations.get(destination)
 17867  }
 17868  
 17869  function sizeError (expected, found) {
 17870    /* eslint-disable-next-line max-len */
 17871    const err = new Error(`Bad data size: expected inserted data to be ${expected} bytes, but got ${found} instead`)
 17872    err.expected = expected
 17873    err.found = found
 17874    err.code = 'EBADSIZE'
 17875    return err
 17876  }
 17877  
 17878  function checksumError (expected, found) {
 17879    const err = new Error(`Integrity check failed:
 17880    Wanted: ${expected}
 17881     Found: ${found}`)
 17882    err.code = 'EINTEGRITY'
 17883    err.expected = expected
 17884    err.found = found
 17885    return err
 17886  }
 17887  
 17888  
 17889  /***/ }),
 17890  
 17891  /***/ 90595:
 17892  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 17893  
 17894  "use strict";
 17895  
 17896  
 17897  const crypto = __nccwpck_require__(6113)
 17898  const {
 17899    appendFile,
 17900    mkdir,
 17901    readFile,
 17902    readdir,
 17903    rm,
 17904    writeFile,
 17905  } = __nccwpck_require__(73292)
 17906  const { Minipass } = __nccwpck_require__(14968)
 17907  const path = __nccwpck_require__(71017)
 17908  const ssri = __nccwpck_require__(4406)
 17909  const uniqueFilename = __nccwpck_require__(91747)
 17910  
 17911  const contentPath = __nccwpck_require__(83491)
 17912  const hashToSegments = __nccwpck_require__(12700)
 17913  const indexV = (__nccwpck_require__(51526)/* ["cache-version"].index */ .Jw.K)
 17914  const { moveFile } = __nccwpck_require__(10575)
 17915  
 17916  module.exports.NotFoundError = class NotFoundError extends Error {
 17917    constructor (cache, key) {
 17918      super(`No cache entry for ${key} found in ${cache}`)
 17919      this.code = 'ENOENT'
 17920      this.cache = cache
 17921      this.key = key
 17922    }
 17923  }
 17924  
 17925  module.exports.compact = compact
 17926  
 17927  async function compact (cache, key, matchFn, opts = {}) {
 17928    const bucket = bucketPath(cache, key)
 17929    const entries = await bucketEntries(bucket)
 17930    const newEntries = []
 17931    // we loop backwards because the bottom-most result is the newest
 17932    // since we add new entries with appendFile
 17933    for (let i = entries.length - 1; i >= 0; --i) {
 17934      const entry = entries[i]
 17935      // a null integrity could mean either a delete was appended
 17936      // or the user has simply stored an index that does not map
 17937      // to any content. we determine if the user wants to keep the
 17938      // null integrity based on the validateEntry function passed in options.
 17939      // if the integrity is null and no validateEntry is provided, we break
 17940      // as we consider the null integrity to be a deletion of everything
 17941      // that came before it.
 17942      if (entry.integrity === null && !opts.validateEntry) {
 17943        break
 17944      }
 17945  
 17946      // if this entry is valid, and it is either the first entry or
 17947      // the newEntries array doesn't already include an entry that
 17948      // matches this one based on the provided matchFn, then we add
 17949      // it to the beginning of our list
 17950      if ((!opts.validateEntry || opts.validateEntry(entry) === true) &&
 17951        (newEntries.length === 0 ||
 17952          !newEntries.find((oldEntry) => matchFn(oldEntry, entry)))) {
 17953        newEntries.unshift(entry)
 17954      }
 17955    }
 17956  
 17957    const newIndex = '\n' + newEntries.map((entry) => {
 17958      const stringified = JSON.stringify(entry)
 17959      const hash = hashEntry(stringified)
 17960      return `${hash}\t${stringified}`
 17961    }).join('\n')
 17962  
 17963    const setup = async () => {
 17964      const target = uniqueFilename(path.join(cache, 'tmp'), opts.tmpPrefix)
 17965      await mkdir(path.dirname(target), { recursive: true })
 17966      return {
 17967        target,
 17968        moved: false,
 17969      }
 17970    }
 17971  
 17972    const teardown = async (tmp) => {
 17973      if (!tmp.moved) {
 17974        return rm(tmp.target, { recursive: true, force: true })
 17975      }
 17976    }
 17977  
 17978    const write = async (tmp) => {
 17979      await writeFile(tmp.target, newIndex, { flag: 'wx' })
 17980      await mkdir(path.dirname(bucket), { recursive: true })
 17981      // we use @npmcli/move-file directly here because we
 17982      // want to overwrite the existing file
 17983      await moveFile(tmp.target, bucket)
 17984      tmp.moved = true
 17985    }
 17986  
 17987    // write the file atomically
 17988    const tmp = await setup()
 17989    try {
 17990      await write(tmp)
 17991    } finally {
 17992      await teardown(tmp)
 17993    }
 17994  
 17995    // we reverse the list we generated such that the newest
 17996    // entries come first in order to make looping through them easier
 17997    // the true passed to formatEntry tells it to keep null
 17998    // integrity values, if they made it this far it's because
 17999    // validateEntry returned true, and as such we should return it
 18000    return newEntries.reverse().map((entry) => formatEntry(cache, entry, true))
 18001  }
 18002  
 18003  module.exports.insert = insert
 18004  
 18005  async function insert (cache, key, integrity, opts = {}) {
 18006    const { metadata, size, time } = opts
 18007    const bucket = bucketPath(cache, key)
 18008    const entry = {
 18009      key,
 18010      integrity: integrity && ssri.stringify(integrity),
 18011      time: time || Date.now(),
 18012      size,
 18013      metadata,
 18014    }
 18015    try {
 18016      await mkdir(path.dirname(bucket), { recursive: true })
 18017      const stringified = JSON.stringify(entry)
 18018      // NOTE - Cleverness ahoy!
 18019      //
 18020      // This works because it's tremendously unlikely for an entry to corrupt
 18021      // another while still preserving the string length of the JSON in
 18022      // question. So, we just slap the length in there and verify it on read.
 18023      //
 18024      // Thanks to @isaacs for the whiteboarding session that ended up with
 18025      // this.
 18026      await appendFile(bucket, `\n${hashEntry(stringified)}\t${stringified}`)
 18027    } catch (err) {
 18028      if (err.code === 'ENOENT') {
 18029        return undefined
 18030      }
 18031  
 18032      throw err
 18033    }
 18034    return formatEntry(cache, entry)
 18035  }
 18036  
 18037  module.exports.find = find
 18038  
 18039  async function find (cache, key) {
 18040    const bucket = bucketPath(cache, key)
 18041    try {
 18042      const entries = await bucketEntries(bucket)
 18043      return entries.reduce((latest, next) => {
 18044        if (next && next.key === key) {
 18045          return formatEntry(cache, next)
 18046        } else {
 18047          return latest
 18048        }
 18049      }, null)
 18050    } catch (err) {
 18051      if (err.code === 'ENOENT') {
 18052        return null
 18053      } else {
 18054        throw err
 18055      }
 18056    }
 18057  }
 18058  
 18059  module.exports["delete"] = del
 18060  
 18061  function del (cache, key, opts = {}) {
 18062    if (!opts.removeFully) {
 18063      return insert(cache, key, null, opts)
 18064    }
 18065  
 18066    const bucket = bucketPath(cache, key)
 18067    return rm(bucket, { recursive: true, force: true })
 18068  }
 18069  
 18070  module.exports.lsStream = lsStream
 18071  
 18072  function lsStream (cache) {
 18073    const indexDir = bucketDir(cache)
 18074    const stream = new Minipass({ objectMode: true })
 18075  
 18076    // Set all this up to run on the stream and then just return the stream
 18077    Promise.resolve().then(async () => {
 18078      const buckets = await readdirOrEmpty(indexDir)
 18079      await Promise.all(buckets.map(async (bucket) => {
 18080        const bucketPath = path.join(indexDir, bucket)
 18081        const subbuckets = await readdirOrEmpty(bucketPath)
 18082        await Promise.all(subbuckets.map(async (subbucket) => {
 18083          const subbucketPath = path.join(bucketPath, subbucket)
 18084  
 18085          // "/cachename/<bucket 0xFF>/<bucket 0xFF>./*"
 18086          const subbucketEntries = await readdirOrEmpty(subbucketPath)
 18087          await Promise.all(subbucketEntries.map(async (entry) => {
 18088            const entryPath = path.join(subbucketPath, entry)
 18089            try {
 18090              const entries = await bucketEntries(entryPath)
 18091              // using a Map here prevents duplicate keys from showing up
 18092              // twice, I guess?
 18093              const reduced = entries.reduce((acc, entry) => {
 18094                acc.set(entry.key, entry)
 18095                return acc
 18096              }, new Map())
 18097              // reduced is a map of key => entry
 18098              for (const entry of reduced.values()) {
 18099                const formatted = formatEntry(cache, entry)
 18100                if (formatted) {
 18101                  stream.write(formatted)
 18102                }
 18103              }
 18104            } catch (err) {
 18105              if (err.code === 'ENOENT') {
 18106                return undefined
 18107              }
 18108              throw err
 18109            }
 18110          }))
 18111        }))
 18112      }))
 18113      stream.end()
 18114      return stream
 18115    }).catch(err => stream.emit('error', err))
 18116  
 18117    return stream
 18118  }
 18119  
 18120  module.exports.ls = ls
 18121  
 18122  async function ls (cache) {
 18123    const entries = await lsStream(cache).collect()
 18124    return entries.reduce((acc, xs) => {
 18125      acc[xs.key] = xs
 18126      return acc
 18127    }, {})
 18128  }
 18129  
 18130  module.exports.bucketEntries = bucketEntries
 18131  
 18132  async function bucketEntries (bucket, filter) {
 18133    const data = await readFile(bucket, 'utf8')
 18134    return _bucketEntries(data, filter)
 18135  }
 18136  
 18137  function _bucketEntries (data, filter) {
 18138    const entries = []
 18139    data.split('\n').forEach((entry) => {
 18140      if (!entry) {
 18141        return
 18142      }
 18143  
 18144      const pieces = entry.split('\t')
 18145      if (!pieces[1] || hashEntry(pieces[1]) !== pieces[0]) {
 18146        // Hash is no good! Corruption or malice? Doesn't matter!
 18147        // EJECT EJECT
 18148        return
 18149      }
 18150      let obj
 18151      try {
 18152        obj = JSON.parse(pieces[1])
 18153      } catch (_) {
 18154        // eslint-ignore-next-line no-empty-block
 18155      }
 18156      // coverage disabled here, no need to test with an entry that parses to something falsey
 18157      // istanbul ignore else
 18158      if (obj) {
 18159        entries.push(obj)
 18160      }
 18161    })
 18162    return entries
 18163  }
 18164  
 18165  module.exports.bucketDir = bucketDir
 18166  
 18167  function bucketDir (cache) {
 18168    return path.join(cache, `index-v${indexV}`)
 18169  }
 18170  
 18171  module.exports.bucketPath = bucketPath
 18172  
 18173  function bucketPath (cache, key) {
 18174    const hashed = hashKey(key)
 18175    return path.join.apply(
 18176      path,
 18177      [bucketDir(cache)].concat(hashToSegments(hashed))
 18178    )
 18179  }
 18180  
 18181  module.exports.hashKey = hashKey
 18182  
 18183  function hashKey (key) {
 18184    return hash(key, 'sha256')
 18185  }
 18186  
 18187  module.exports.hashEntry = hashEntry
 18188  
 18189  function hashEntry (str) {
 18190    return hash(str, 'sha1')
 18191  }
 18192  
 18193  function hash (str, digest) {
 18194    return crypto
 18195      .createHash(digest)
 18196      .update(str)
 18197      .digest('hex')
 18198  }
 18199  
 18200  function formatEntry (cache, entry, keepAll) {
 18201    // Treat null digests as deletions. They'll shadow any previous entries.
 18202    if (!entry.integrity && !keepAll) {
 18203      return null
 18204    }
 18205  
 18206    return {
 18207      key: entry.key,
 18208      integrity: entry.integrity,
 18209      path: entry.integrity ? contentPath(cache, entry.integrity) : undefined,
 18210      size: entry.size,
 18211      time: entry.time,
 18212      metadata: entry.metadata,
 18213    }
 18214  }
 18215  
 18216  function readdirOrEmpty (dir) {
 18217    return readdir(dir).catch((err) => {
 18218      if (err.code === 'ENOENT' || err.code === 'ENOTDIR') {
 18219        return []
 18220      }
 18221  
 18222      throw err
 18223    })
 18224  }
 18225  
 18226  
 18227  /***/ }),
 18228  
 18229  /***/ 10408:
 18230  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 18231  
 18232  "use strict";
 18233  
 18234  
 18235  const Collect = __nccwpck_require__(74658)
 18236  const { Minipass } = __nccwpck_require__(14968)
 18237  const Pipeline = __nccwpck_require__(69891)
 18238  
 18239  const index = __nccwpck_require__(90595)
 18240  const memo = __nccwpck_require__(5575)
 18241  const read = __nccwpck_require__(99409)
 18242  
 18243  async function getData (cache, key, opts = {}) {
 18244    const { integrity, memoize, size } = opts
 18245    const memoized = memo.get(cache, key, opts)
 18246    if (memoized && memoize !== false) {
 18247      return {
 18248        metadata: memoized.entry.metadata,
 18249        data: memoized.data,
 18250        integrity: memoized.entry.integrity,
 18251        size: memoized.entry.size,
 18252      }
 18253    }
 18254  
 18255    const entry = await index.find(cache, key, opts)
 18256    if (!entry) {
 18257      throw new index.NotFoundError(cache, key)
 18258    }
 18259    const data = await read(cache, entry.integrity, { integrity, size })
 18260    if (memoize) {
 18261      memo.put(cache, entry, data, opts)
 18262    }
 18263  
 18264    return {
 18265      data,
 18266      metadata: entry.metadata,
 18267      size: entry.size,
 18268      integrity: entry.integrity,
 18269    }
 18270  }
 18271  module.exports = getData
 18272  
 18273  async function getDataByDigest (cache, key, opts = {}) {
 18274    const { integrity, memoize, size } = opts
 18275    const memoized = memo.get.byDigest(cache, key, opts)
 18276    if (memoized && memoize !== false) {
 18277      return memoized
 18278    }
 18279  
 18280    const res = await read(cache, key, { integrity, size })
 18281    if (memoize) {
 18282      memo.put.byDigest(cache, key, res, opts)
 18283    }
 18284    return res
 18285  }
 18286  module.exports.byDigest = getDataByDigest
 18287  
 18288  const getMemoizedStream = (memoized) => {
 18289    const stream = new Minipass()
 18290    stream.on('newListener', function (ev, cb) {
 18291      ev === 'metadata' && cb(memoized.entry.metadata)
 18292      ev === 'integrity' && cb(memoized.entry.integrity)
 18293      ev === 'size' && cb(memoized.entry.size)
 18294    })
 18295    stream.end(memoized.data)
 18296    return stream
 18297  }
 18298  
 18299  function getStream (cache, key, opts = {}) {
 18300    const { memoize, size } = opts
 18301    const memoized = memo.get(cache, key, opts)
 18302    if (memoized && memoize !== false) {
 18303      return getMemoizedStream(memoized)
 18304    }
 18305  
 18306    const stream = new Pipeline()
 18307    // Set all this up to run on the stream and then just return the stream
 18308    Promise.resolve().then(async () => {
 18309      const entry = await index.find(cache, key)
 18310      if (!entry) {
 18311        throw new index.NotFoundError(cache, key)
 18312      }
 18313  
 18314      stream.emit('metadata', entry.metadata)
 18315      stream.emit('integrity', entry.integrity)
 18316      stream.emit('size', entry.size)
 18317      stream.on('newListener', function (ev, cb) {
 18318        ev === 'metadata' && cb(entry.metadata)
 18319        ev === 'integrity' && cb(entry.integrity)
 18320        ev === 'size' && cb(entry.size)
 18321      })
 18322  
 18323      const src = read.readStream(
 18324        cache,
 18325        entry.integrity,
 18326        { ...opts, size: typeof size !== 'number' ? entry.size : size }
 18327      )
 18328  
 18329      if (memoize) {
 18330        const memoStream = new Collect.PassThrough()
 18331        memoStream.on('collect', data => memo.put(cache, entry, data, opts))
 18332        stream.unshift(memoStream)
 18333      }
 18334      stream.unshift(src)
 18335      return stream
 18336    }).catch((err) => stream.emit('error', err))
 18337  
 18338    return stream
 18339  }
 18340  
 18341  module.exports.stream = getStream
 18342  
 18343  function getStreamDigest (cache, integrity, opts = {}) {
 18344    const { memoize } = opts
 18345    const memoized = memo.get.byDigest(cache, integrity, opts)
 18346    if (memoized && memoize !== false) {
 18347      const stream = new Minipass()
 18348      stream.end(memoized)
 18349      return stream
 18350    } else {
 18351      const stream = read.readStream(cache, integrity, opts)
 18352      if (!memoize) {
 18353        return stream
 18354      }
 18355  
 18356      const memoStream = new Collect.PassThrough()
 18357      memoStream.on('collect', data => memo.put.byDigest(
 18358        cache,
 18359        integrity,
 18360        data,
 18361        opts
 18362      ))
 18363      return new Pipeline(stream, memoStream)
 18364    }
 18365  }
 18366  
 18367  module.exports.stream.byDigest = getStreamDigest
 18368  
 18369  function info (cache, key, opts = {}) {
 18370    const { memoize } = opts
 18371    const memoized = memo.get(cache, key, opts)
 18372    if (memoized && memoize !== false) {
 18373      return Promise.resolve(memoized.entry)
 18374    } else {
 18375      return index.find(cache, key)
 18376    }
 18377  }
 18378  module.exports.info = info
 18379  
 18380  async function copy (cache, key, dest, opts = {}) {
 18381    const entry = await index.find(cache, key, opts)
 18382    if (!entry) {
 18383      throw new index.NotFoundError(cache, key)
 18384    }
 18385    await read.copy(cache, entry.integrity, dest, opts)
 18386    return {
 18387      metadata: entry.metadata,
 18388      size: entry.size,
 18389      integrity: entry.integrity,
 18390    }
 18391  }
 18392  
 18393  module.exports.copy = copy
 18394  
 18395  async function copyByDigest (cache, key, dest, opts = {}) {
 18396    await read.copy(cache, key, dest, opts)
 18397    return key
 18398  }
 18399  
 18400  module.exports.copy.byDigest = copyByDigest
 18401  
 18402  module.exports.hasContent = read.hasContent
 18403  
 18404  
 18405  /***/ }),
 18406  
 18407  /***/ 85490:
 18408  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 18409  
 18410  "use strict";
 18411  
 18412  
 18413  const get = __nccwpck_require__(10408)
 18414  const put = __nccwpck_require__(70178)
 18415  const rm = __nccwpck_require__(70123)
 18416  const verify = __nccwpck_require__(70584)
 18417  const { clearMemoized } = __nccwpck_require__(5575)
 18418  const tmp = __nccwpck_require__(70644)
 18419  const index = __nccwpck_require__(90595)
 18420  
 18421  module.exports.index = {}
 18422  module.exports.index.compact = index.compact
 18423  module.exports.index.insert = index.insert
 18424  
 18425  module.exports.ls = index.ls
 18426  module.exports.ls.stream = index.lsStream
 18427  
 18428  module.exports.get = get
 18429  module.exports.get.byDigest = get.byDigest
 18430  module.exports.get.stream = get.stream
 18431  module.exports.get.stream.byDigest = get.stream.byDigest
 18432  module.exports.get.copy = get.copy
 18433  module.exports.get.copy.byDigest = get.copy.byDigest
 18434  module.exports.get.info = get.info
 18435  module.exports.get.hasContent = get.hasContent
 18436  
 18437  module.exports.put = put
 18438  module.exports.put.stream = put.stream
 18439  
 18440  module.exports.rm = rm.entry
 18441  module.exports.rm.all = rm.all
 18442  module.exports.rm.entry = module.exports.rm
 18443  module.exports.rm.content = rm.content
 18444  
 18445  module.exports.clearMemoized = clearMemoized
 18446  
 18447  module.exports.tmp = {}
 18448  module.exports.tmp.mkdir = tmp.mkdir
 18449  module.exports.tmp.withTmp = tmp.withTmp
 18450  
 18451  module.exports.verify = verify
 18452  module.exports.verify.lastRun = verify.lastRun
 18453  
 18454  
 18455  /***/ }),
 18456  
 18457  /***/ 5575:
 18458  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 18459  
 18460  "use strict";
 18461  
 18462  
 18463  const { LRUCache } = __nccwpck_require__(96874)
 18464  
 18465  const MEMOIZED = new LRUCache({
 18466    max: 500,
 18467    maxSize: 50 * 1024 * 1024, // 50MB
 18468    ttl: 3 * 60 * 1000, // 3 minutes
 18469    sizeCalculation: (entry, key) => key.startsWith('key:') ? entry.data.length : entry.length,
 18470  })
 18471  
 18472  module.exports.clearMemoized = clearMemoized
 18473  
 18474  function clearMemoized () {
 18475    const old = {}
 18476    MEMOIZED.forEach((v, k) => {
 18477      old[k] = v
 18478    })
 18479    MEMOIZED.clear()
 18480    return old
 18481  }
 18482  
 18483  module.exports.put = put
 18484  
 18485  function put (cache, entry, data, opts) {
 18486    pickMem(opts).set(`key:${cache}:${entry.key}`, { entry, data })
 18487    putDigest(cache, entry.integrity, data, opts)
 18488  }
 18489  
 18490  module.exports.put.byDigest = putDigest
 18491  
 18492  function putDigest (cache, integrity, data, opts) {
 18493    pickMem(opts).set(`digest:${cache}:${integrity}`, data)
 18494  }
 18495  
 18496  module.exports.get = get
 18497  
 18498  function get (cache, key, opts) {
 18499    return pickMem(opts).get(`key:${cache}:${key}`)
 18500  }
 18501  
 18502  module.exports.get.byDigest = getDigest
 18503  
 18504  function getDigest (cache, integrity, opts) {
 18505    return pickMem(opts).get(`digest:${cache}:${integrity}`)
 18506  }
 18507  
 18508  class ObjProxy {
 18509    constructor (obj) {
 18510      this.obj = obj
 18511    }
 18512  
 18513    get (key) {
 18514      return this.obj[key]
 18515    }
 18516  
 18517    set (key, val) {
 18518      this.obj[key] = val
 18519    }
 18520  }
 18521  
 18522  function pickMem (opts) {
 18523    if (!opts || !opts.memoize) {
 18524      return MEMOIZED
 18525    } else if (opts.memoize.get && opts.memoize.set) {
 18526      return opts.memoize
 18527    } else if (typeof opts.memoize === 'object') {
 18528      return new ObjProxy(opts.memoize)
 18529    } else {
 18530      return MEMOIZED
 18531    }
 18532  }
 18533  
 18534  
 18535  /***/ }),
 18536  
 18537  /***/ 70178:
 18538  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 18539  
 18540  "use strict";
 18541  
 18542  
 18543  const index = __nccwpck_require__(90595)
 18544  const memo = __nccwpck_require__(5575)
 18545  const write = __nccwpck_require__(73729)
 18546  const Flush = __nccwpck_require__(4181)
 18547  const { PassThrough } = __nccwpck_require__(74658)
 18548  const Pipeline = __nccwpck_require__(69891)
 18549  
 18550  const putOpts = (opts) => ({
 18551    algorithms: ['sha512'],
 18552    ...opts,
 18553  })
 18554  
 18555  module.exports = putData
 18556  
 18557  async function putData (cache, key, data, opts = {}) {
 18558    const { memoize } = opts
 18559    opts = putOpts(opts)
 18560    const res = await write(cache, data, opts)
 18561    const entry = await index.insert(cache, key, res.integrity, { ...opts, size: res.size })
 18562    if (memoize) {
 18563      memo.put(cache, entry, data, opts)
 18564    }
 18565  
 18566    return res.integrity
 18567  }
 18568  
 18569  module.exports.stream = putStream
 18570  
 18571  function putStream (cache, key, opts = {}) {
 18572    const { memoize } = opts
 18573    opts = putOpts(opts)
 18574    let integrity
 18575    let size
 18576    let error
 18577  
 18578    let memoData
 18579    const pipeline = new Pipeline()
 18580    // first item in the pipeline is the memoizer, because we need
 18581    // that to end first and get the collected data.
 18582    if (memoize) {
 18583      const memoizer = new PassThrough().on('collect', data => {
 18584        memoData = data
 18585      })
 18586      pipeline.push(memoizer)
 18587    }
 18588  
 18589    // contentStream is a write-only, not a passthrough
 18590    // no data comes out of it.
 18591    const contentStream = write.stream(cache, opts)
 18592      .on('integrity', (int) => {
 18593        integrity = int
 18594      })
 18595      .on('size', (s) => {
 18596        size = s
 18597      })
 18598      .on('error', (err) => {
 18599        error = err
 18600      })
 18601  
 18602    pipeline.push(contentStream)
 18603  
 18604    // last but not least, we write the index and emit hash and size,
 18605    // and memoize if we're doing that
 18606    pipeline.push(new Flush({
 18607      async flush () {
 18608        if (!error) {
 18609          const entry = await index.insert(cache, key, integrity, { ...opts, size })
 18610          if (memoize && memoData) {
 18611            memo.put(cache, entry, memoData, opts)
 18612          }
 18613          pipeline.emit('integrity', integrity)
 18614          pipeline.emit('size', size)
 18615        }
 18616      },
 18617    }))
 18618  
 18619    return pipeline
 18620  }
 18621  
 18622  
 18623  /***/ }),
 18624  
 18625  /***/ 70123:
 18626  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 18627  
 18628  "use strict";
 18629  
 18630  
 18631  const { rm } = __nccwpck_require__(73292)
 18632  const glob = __nccwpck_require__(98066)
 18633  const index = __nccwpck_require__(90595)
 18634  const memo = __nccwpck_require__(5575)
 18635  const path = __nccwpck_require__(71017)
 18636  const rmContent = __nccwpck_require__(51343)
 18637  
 18638  module.exports = entry
 18639  module.exports.entry = entry
 18640  
 18641  function entry (cache, key, opts) {
 18642    memo.clearMemoized()
 18643    return index.delete(cache, key, opts)
 18644  }
 18645  
 18646  module.exports.content = content
 18647  
 18648  function content (cache, integrity) {
 18649    memo.clearMemoized()
 18650    return rmContent(cache, integrity)
 18651  }
 18652  
 18653  module.exports.all = all
 18654  
 18655  async function all (cache) {
 18656    memo.clearMemoized()
 18657    const paths = await glob(path.join(cache, '*(content-*|index-*)'), { silent: true, nosort: true })
 18658    return Promise.all(paths.map((p) => rm(p, { recursive: true, force: true })))
 18659  }
 18660  
 18661  
 18662  /***/ }),
 18663  
 18664  /***/ 98066:
 18665  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 18666  
 18667  "use strict";
 18668  
 18669  
 18670  const { glob } = __nccwpck_require__(50836)
 18671  const path = __nccwpck_require__(71017)
 18672  
 18673  const globify = (pattern) => pattern.split(path.win32.sep).join(path.posix.sep)
 18674  module.exports = (path, options) => glob(globify(path), options)
 18675  
 18676  
 18677  /***/ }),
 18678  
 18679  /***/ 12700:
 18680  /***/ ((module) => {
 18681  
 18682  "use strict";
 18683  
 18684  
 18685  module.exports = hashToSegments
 18686  
 18687  function hashToSegments (hash) {
 18688    return [hash.slice(0, 2), hash.slice(2, 4), hash.slice(4)]
 18689  }
 18690  
 18691  
 18692  /***/ }),
 18693  
 18694  /***/ 70644:
 18695  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 18696  
 18697  "use strict";
 18698  
 18699  
 18700  const { withTempDir } = __nccwpck_require__(10575)
 18701  const fs = __nccwpck_require__(73292)
 18702  const path = __nccwpck_require__(71017)
 18703  
 18704  module.exports.mkdir = mktmpdir
 18705  
 18706  async function mktmpdir (cache, opts = {}) {
 18707    const { tmpPrefix } = opts
 18708    const tmpDir = path.join(cache, 'tmp')
 18709    await fs.mkdir(tmpDir, { recursive: true, owner: 'inherit' })
 18710    // do not use path.join(), it drops the trailing / if tmpPrefix is unset
 18711    const target = `${tmpDir}${path.sep}${tmpPrefix || ''}`
 18712    return fs.mkdtemp(target, { owner: 'inherit' })
 18713  }
 18714  
 18715  module.exports.withTmp = withTmp
 18716  
 18717  function withTmp (cache, opts, cb) {
 18718    if (!cb) {
 18719      cb = opts
 18720      opts = {}
 18721    }
 18722    return withTempDir(path.join(cache, 'tmp'), cb, opts)
 18723  }
 18724  
 18725  
 18726  /***/ }),
 18727  
 18728  /***/ 70584:
 18729  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 18730  
 18731  "use strict";
 18732  
 18733  
 18734  const {
 18735    mkdir,
 18736    readFile,
 18737    rm,
 18738    stat,
 18739    truncate,
 18740    writeFile,
 18741  } = __nccwpck_require__(73292)
 18742  const pMap = __nccwpck_require__(91855)
 18743  const contentPath = __nccwpck_require__(83491)
 18744  const fsm = __nccwpck_require__(10968)
 18745  const glob = __nccwpck_require__(98066)
 18746  const index = __nccwpck_require__(90595)
 18747  const path = __nccwpck_require__(71017)
 18748  const ssri = __nccwpck_require__(4406)
 18749  
 18750  const hasOwnProperty = (obj, key) =>
 18751    Object.prototype.hasOwnProperty.call(obj, key)
 18752  
 18753  const verifyOpts = (opts) => ({
 18754    concurrency: 20,
 18755    log: { silly () {} },
 18756    ...opts,
 18757  })
 18758  
 18759  module.exports = verify
 18760  
 18761  async function verify (cache, opts) {
 18762    opts = verifyOpts(opts)
 18763    opts.log.silly('verify', 'verifying cache at', cache)
 18764  
 18765    const steps = [
 18766      markStartTime,
 18767      fixPerms,
 18768      garbageCollect,
 18769      rebuildIndex,
 18770      cleanTmp,
 18771      writeVerifile,
 18772      markEndTime,
 18773    ]
 18774  
 18775    const stats = {}
 18776    for (const step of steps) {
 18777      const label = step.name
 18778      const start = new Date()
 18779      const s = await step(cache, opts)
 18780      if (s) {
 18781        Object.keys(s).forEach((k) => {
 18782          stats[k] = s[k]
 18783        })
 18784      }
 18785      const end = new Date()
 18786      if (!stats.runTime) {
 18787        stats.runTime = {}
 18788      }
 18789      stats.runTime[label] = end - start
 18790    }
 18791    stats.runTime.total = stats.endTime - stats.startTime
 18792    opts.log.silly(
 18793      'verify',
 18794      'verification finished for',
 18795      cache,
 18796      'in',
 18797      `${stats.runTime.total}ms`
 18798    )
 18799    return stats
 18800  }
 18801  
 18802  async function markStartTime (cache, opts) {
 18803    return { startTime: new Date() }
 18804  }
 18805  
 18806  async function markEndTime (cache, opts) {
 18807    return { endTime: new Date() }
 18808  }
 18809  
 18810  async function fixPerms (cache, opts) {
 18811    opts.log.silly('verify', 'fixing cache permissions')
 18812    await mkdir(cache, { recursive: true })
 18813    return null
 18814  }
 18815  
 18816  // Implements a naive mark-and-sweep tracing garbage collector.
 18817  //
 18818  // The algorithm is basically as follows:
 18819  // 1. Read (and filter) all index entries ("pointers")
 18820  // 2. Mark each integrity value as "live"
 18821  // 3. Read entire filesystem tree in `content-vX/` dir
 18822  // 4. If content is live, verify its checksum and delete it if it fails
 18823  // 5. If content is not marked as live, rm it.
 18824  //
 18825  async function garbageCollect (cache, opts) {
 18826    opts.log.silly('verify', 'garbage collecting content')
 18827    const indexStream = index.lsStream(cache)
 18828    const liveContent = new Set()
 18829    indexStream.on('data', (entry) => {
 18830      if (opts.filter && !opts.filter(entry)) {
 18831        return
 18832      }
 18833  
 18834      // integrity is stringified, re-parse it so we can get each hash
 18835      const integrity = ssri.parse(entry.integrity)
 18836      for (const algo in integrity) {
 18837        liveContent.add(integrity[algo].toString())
 18838      }
 18839    })
 18840    await new Promise((resolve, reject) => {
 18841      indexStream.on('end', resolve).on('error', reject)
 18842    })
 18843    const contentDir = contentPath.contentDir(cache)
 18844    const files = await glob(path.join(contentDir, '**'), {
 18845      follow: false,
 18846      nodir: true,
 18847      nosort: true,
 18848    })
 18849    const stats = {
 18850      verifiedContent: 0,
 18851      reclaimedCount: 0,
 18852      reclaimedSize: 0,
 18853      badContentCount: 0,
 18854      keptSize: 0,
 18855    }
 18856    await pMap(
 18857      files,
 18858      async (f) => {
 18859        const split = f.split(/[/\\]/)
 18860        const digest = split.slice(split.length - 3).join('')
 18861        const algo = split[split.length - 4]
 18862        const integrity = ssri.fromHex(digest, algo)
 18863        if (liveContent.has(integrity.toString())) {
 18864          const info = await verifyContent(f, integrity)
 18865          if (!info.valid) {
 18866            stats.reclaimedCount++
 18867            stats.badContentCount++
 18868            stats.reclaimedSize += info.size
 18869          } else {
 18870            stats.verifiedContent++
 18871            stats.keptSize += info.size
 18872          }
 18873        } else {
 18874          // No entries refer to this content. We can delete.
 18875          stats.reclaimedCount++
 18876          const s = await stat(f)
 18877          await rm(f, { recursive: true, force: true })
 18878          stats.reclaimedSize += s.size
 18879        }
 18880        return stats
 18881      },
 18882      { concurrency: opts.concurrency }
 18883    )
 18884    return stats
 18885  }
 18886  
 18887  async function verifyContent (filepath, sri) {
 18888    const contentInfo = {}
 18889    try {
 18890      const { size } = await stat(filepath)
 18891      contentInfo.size = size
 18892      contentInfo.valid = true
 18893      await ssri.checkStream(new fsm.ReadStream(filepath), sri)
 18894    } catch (err) {
 18895      if (err.code === 'ENOENT') {
 18896        return { size: 0, valid: false }
 18897      }
 18898      if (err.code !== 'EINTEGRITY') {
 18899        throw err
 18900      }
 18901  
 18902      await rm(filepath, { recursive: true, force: true })
 18903      contentInfo.valid = false
 18904    }
 18905    return contentInfo
 18906  }
 18907  
 18908  async function rebuildIndex (cache, opts) {
 18909    opts.log.silly('verify', 'rebuilding index')
 18910    const entries = await index.ls(cache)
 18911    const stats = {
 18912      missingContent: 0,
 18913      rejectedEntries: 0,
 18914      totalEntries: 0,
 18915    }
 18916    const buckets = {}
 18917    for (const k in entries) {
 18918      /* istanbul ignore else */
 18919      if (hasOwnProperty(entries, k)) {
 18920        const hashed = index.hashKey(k)
 18921        const entry = entries[k]
 18922        const excluded = opts.filter && !opts.filter(entry)
 18923        excluded && stats.rejectedEntries++
 18924        if (buckets[hashed] && !excluded) {
 18925          buckets[hashed].push(entry)
 18926        } else if (buckets[hashed] && excluded) {
 18927          // skip
 18928        } else if (excluded) {
 18929          buckets[hashed] = []
 18930          buckets[hashed]._path = index.bucketPath(cache, k)
 18931        } else {
 18932          buckets[hashed] = [entry]
 18933          buckets[hashed]._path = index.bucketPath(cache, k)
 18934        }
 18935      }
 18936    }
 18937    await pMap(
 18938      Object.keys(buckets),
 18939      (key) => {
 18940        return rebuildBucket(cache, buckets[key], stats, opts)
 18941      },
 18942      { concurrency: opts.concurrency }
 18943    )
 18944    return stats
 18945  }
 18946  
 18947  async function rebuildBucket (cache, bucket, stats, opts) {
 18948    await truncate(bucket._path)
 18949    // This needs to be serialized because cacache explicitly
 18950    // lets very racy bucket conflicts clobber each other.
 18951    for (const entry of bucket) {
 18952      const content = contentPath(cache, entry.integrity)
 18953      try {
 18954        await stat(content)
 18955        await index.insert(cache, entry.key, entry.integrity, {
 18956          metadata: entry.metadata,
 18957          size: entry.size,
 18958          time: entry.time,
 18959        })
 18960        stats.totalEntries++
 18961      } catch (err) {
 18962        if (err.code === 'ENOENT') {
 18963          stats.rejectedEntries++
 18964          stats.missingContent++
 18965        } else {
 18966          throw err
 18967        }
 18968      }
 18969    }
 18970  }
 18971  
 18972  function cleanTmp (cache, opts) {
 18973    opts.log.silly('verify', 'cleaning tmp directory')
 18974    return rm(path.join(cache, 'tmp'), { recursive: true, force: true })
 18975  }
 18976  
 18977  async function writeVerifile (cache, opts) {
 18978    const verifile = path.join(cache, '_lastverified')
 18979    opts.log.silly('verify', 'writing verifile to ' + verifile)
 18980    return writeFile(verifile, `${Date.now()}`)
 18981  }
 18982  
 18983  module.exports.lastRun = lastRun
 18984  
 18985  async function lastRun (cache) {
 18986    const data = await readFile(path.join(cache, '_lastverified'), { encoding: 'utf8' })
 18987    return new Date(+data)
 18988  }
 18989  
 18990  
 18991  /***/ }),
 18992  
 18993  /***/ 42443:
 18994  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 18995  
 18996  var balanced = __nccwpck_require__(9417);
 18997  
 18998  module.exports = expandTop;
 18999  
 19000  var escSlash = '\0SLASH'+Math.random()+'\0';
 19001  var escOpen = '\0OPEN'+Math.random()+'\0';
 19002  var escClose = '\0CLOSE'+Math.random()+'\0';
 19003  var escComma = '\0COMMA'+Math.random()+'\0';
 19004  var escPeriod = '\0PERIOD'+Math.random()+'\0';
 19005  
 19006  function numeric(str) {
 19007    return parseInt(str, 10) == str
 19008      ? parseInt(str, 10)
 19009      : str.charCodeAt(0);
 19010  }
 19011  
 19012  function escapeBraces(str) {
 19013    return str.split('\\\\').join(escSlash)
 19014              .split('\\{').join(escOpen)
 19015              .split('\\}').join(escClose)
 19016              .split('\\,').join(escComma)
 19017              .split('\\.').join(escPeriod);
 19018  }
 19019  
 19020  function unescapeBraces(str) {
 19021    return str.split(escSlash).join('\\')
 19022              .split(escOpen).join('{')
 19023              .split(escClose).join('}')
 19024              .split(escComma).join(',')
 19025              .split(escPeriod).join('.');
 19026  }
 19027  
 19028  
 19029  // Basically just str.split(","), but handling cases
 19030  // where we have nested braced sections, which should be
 19031  // treated as individual members, like {a,{b,c},d}
 19032  function parseCommaParts(str) {
 19033    if (!str)
 19034      return [''];
 19035  
 19036    var parts = [];
 19037    var m = balanced('{', '}', str);
 19038  
 19039    if (!m)
 19040      return str.split(',');
 19041  
 19042    var pre = m.pre;
 19043    var body = m.body;
 19044    var post = m.post;
 19045    var p = pre.split(',');
 19046  
 19047    p[p.length-1] += '{' + body + '}';
 19048    var postParts = parseCommaParts(post);
 19049    if (post.length) {
 19050      p[p.length-1] += postParts.shift();
 19051      p.push.apply(p, postParts);
 19052    }
 19053  
 19054    parts.push.apply(parts, p);
 19055  
 19056    return parts;
 19057  }
 19058  
 19059  function expandTop(str) {
 19060    if (!str)
 19061      return [];
 19062  
 19063    // I don't know why Bash 4.3 does this, but it does.
 19064    // Anything starting with {} will have the first two bytes preserved
 19065    // but *only* at the top level, so {},a}b will not expand to anything,
 19066    // but a{},b}c will be expanded to [a}c,abc].
 19067    // One could argue that this is a bug in Bash, but since the goal of
 19068    // this module is to match Bash's rules, we escape a leading {}
 19069    if (str.substr(0, 2) === '{}') {
 19070      str = '\\{\\}' + str.substr(2);
 19071    }
 19072  
 19073    return expand(escapeBraces(str), true).map(unescapeBraces);
 19074  }
 19075  
 19076  function embrace(str) {
 19077    return '{' + str + '}';
 19078  }
 19079  function isPadded(el) {
 19080    return /^-?0\d/.test(el);
 19081  }
 19082  
 19083  function lte(i, y) {
 19084    return i <= y;
 19085  }
 19086  function gte(i, y) {
 19087    return i >= y;
 19088  }
 19089  
 19090  function expand(str, isTop) {
 19091    var expansions = [];
 19092  
 19093    var m = balanced('{', '}', str);
 19094    if (!m) return [str];
 19095  
 19096    // no need to expand pre, since it is guaranteed to be free of brace-sets
 19097    var pre = m.pre;
 19098    var post = m.post.length
 19099      ? expand(m.post, false)
 19100      : [''];
 19101  
 19102    if (/\$$/.test(m.pre)) {    
 19103      for (var k = 0; k < post.length; k++) {
 19104        var expansion = pre+ '{' + m.body + '}' + post[k];
 19105        expansions.push(expansion);
 19106      }
 19107    } else {
 19108      var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
 19109      var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
 19110      var isSequence = isNumericSequence || isAlphaSequence;
 19111      var isOptions = m.body.indexOf(',') >= 0;
 19112      if (!isSequence && !isOptions) {
 19113        // {a},b}
 19114        if (m.post.match(/,.*\}/)) {
 19115          str = m.pre + '{' + m.body + escClose + m.post;
 19116          return expand(str);
 19117        }
 19118        return [str];
 19119      }
 19120  
 19121      var n;
 19122      if (isSequence) {
 19123        n = m.body.split(/\.\./);
 19124      } else {
 19125        n = parseCommaParts(m.body);
 19126        if (n.length === 1) {
 19127          // x{{a,b}}y ==> x{a}y x{b}y
 19128          n = expand(n[0], false).map(embrace);
 19129          if (n.length === 1) {
 19130            return post.map(function(p) {
 19131              return m.pre + n[0] + p;
 19132            });
 19133          }
 19134        }
 19135      }
 19136  
 19137      // at this point, n is the parts, and we know it's not a comma set
 19138      // with a single entry.
 19139      var N;
 19140  
 19141      if (isSequence) {
 19142        var x = numeric(n[0]);
 19143        var y = numeric(n[1]);
 19144        var width = Math.max(n[0].length, n[1].length)
 19145        var incr = n.length == 3
 19146          ? Math.abs(numeric(n[2]))
 19147          : 1;
 19148        var test = lte;
 19149        var reverse = y < x;
 19150        if (reverse) {
 19151          incr *= -1;
 19152          test = gte;
 19153        }
 19154        var pad = n.some(isPadded);
 19155  
 19156        N = [];
 19157  
 19158        for (var i = x; test(i, y); i += incr) {
 19159          var c;
 19160          if (isAlphaSequence) {
 19161            c = String.fromCharCode(i);
 19162            if (c === '\\')
 19163              c = '';
 19164          } else {
 19165            c = String(i);
 19166            if (pad) {
 19167              var need = width - c.length;
 19168              if (need > 0) {
 19169                var z = new Array(need + 1).join('0');
 19170                if (i < 0)
 19171                  c = '-' + z + c.slice(1);
 19172                else
 19173                  c = z + c;
 19174              }
 19175            }
 19176          }
 19177          N.push(c);
 19178        }
 19179      } else {
 19180        N = [];
 19181  
 19182        for (var j = 0; j < n.length; j++) {
 19183          N.push.apply(N, expand(n[j], false));
 19184        }
 19185      }
 19186  
 19187      for (var j = 0; j < N.length; j++) {
 19188        for (var k = 0; k < post.length; k++) {
 19189          var expansion = pre + N[j] + post[k];
 19190          if (!isTop || isSequence || expansion)
 19191            expansions.push(expansion);
 19192        }
 19193      }
 19194    }
 19195  
 19196    return expansions;
 19197  }
 19198  
 19199  
 19200  
 19201  /***/ }),
 19202  
 19203  /***/ 27972:
 19204  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 19205  
 19206  "use strict";
 19207  
 19208  const os = __nccwpck_require__(22037);
 19209  
 19210  const extractPathRegex = /\s+at.*(?:\(|\s)(.*)\)?/;
 19211  const pathRegex = /^(?:(?:(?:node|(?:internal\/[\w/]*|.*node_modules\/(?:babel-polyfill|pirates)\/.*)?\w+)\.js:\d+:\d+)|native)/;
 19212  const homeDir = typeof os.homedir === 'undefined' ? '' : os.homedir();
 19213  
 19214  module.exports = (stack, options) => {
 19215  	options = Object.assign({pretty: false}, options);
 19216  
 19217  	return stack.replace(/\\/g, '/')
 19218  		.split('\n')
 19219  		.filter(line => {
 19220  			const pathMatches = line.match(extractPathRegex);
 19221  			if (pathMatches === null || !pathMatches[1]) {
 19222  				return true;
 19223  			}
 19224  
 19225  			const match = pathMatches[1];
 19226  
 19227  			// Electron
 19228  			if (
 19229  				match.includes('.app/Contents/Resources/electron.asar') ||
 19230  				match.includes('.app/Contents/Resources/default_app.asar')
 19231  			) {
 19232  				return false;
 19233  			}
 19234  
 19235  			return !pathRegex.test(match);
 19236  		})
 19237  		.filter(line => line.trim() !== '')
 19238  		.map(line => {
 19239  			if (options.pretty) {
 19240  				return line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~')));
 19241  			}
 19242  
 19243  			return line;
 19244  		})
 19245  		.join('\n');
 19246  };
 19247  
 19248  
 19249  /***/ }),
 19250  
 19251  /***/ 28222:
 19252  /***/ ((module, exports, __nccwpck_require__) => {
 19253  
 19254  /* eslint-env browser */
 19255  
 19256  /**
 19257   * This is the web browser implementation of `debug()`.
 19258   */
 19259  
 19260  exports.formatArgs = formatArgs;
 19261  exports.save = save;
 19262  exports.load = load;
 19263  exports.useColors = useColors;
 19264  exports.storage = localstorage();
 19265  exports.destroy = (() => {
 19266  	let warned = false;
 19267  
 19268  	return () => {
 19269  		if (!warned) {
 19270  			warned = true;
 19271  			console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
 19272  		}
 19273  	};
 19274  })();
 19275  
 19276  /**
 19277   * Colors.
 19278   */
 19279  
 19280  exports.colors = [
 19281  	'#0000CC',
 19282  	'#0000FF',
 19283  	'#0033CC',
 19284  	'#0033FF',
 19285  	'#0066CC',
 19286  	'#0066FF',
 19287  	'#0099CC',
 19288  	'#0099FF',
 19289  	'#00CC00',
 19290  	'#00CC33',
 19291  	'#00CC66',
 19292  	'#00CC99',
 19293  	'#00CCCC',
 19294  	'#00CCFF',
 19295  	'#3300CC',
 19296  	'#3300FF',
 19297  	'#3333CC',
 19298  	'#3333FF',
 19299  	'#3366CC',
 19300  	'#3366FF',
 19301  	'#3399CC',
 19302  	'#3399FF',
 19303  	'#33CC00',
 19304  	'#33CC33',
 19305  	'#33CC66',
 19306  	'#33CC99',
 19307  	'#33CCCC',
 19308  	'#33CCFF',
 19309  	'#6600CC',
 19310  	'#6600FF',
 19311  	'#6633CC',
 19312  	'#6633FF',
 19313  	'#66CC00',
 19314  	'#66CC33',
 19315  	'#9900CC',
 19316  	'#9900FF',
 19317  	'#9933CC',
 19318  	'#9933FF',
 19319  	'#99CC00',
 19320  	'#99CC33',
 19321  	'#CC0000',
 19322  	'#CC0033',
 19323  	'#CC0066',
 19324  	'#CC0099',
 19325  	'#CC00CC',
 19326  	'#CC00FF',
 19327  	'#CC3300',
 19328  	'#CC3333',
 19329  	'#CC3366',
 19330  	'#CC3399',
 19331  	'#CC33CC',
 19332  	'#CC33FF',
 19333  	'#CC6600',
 19334  	'#CC6633',
 19335  	'#CC9900',
 19336  	'#CC9933',
 19337  	'#CCCC00',
 19338  	'#CCCC33',
 19339  	'#FF0000',
 19340  	'#FF0033',
 19341  	'#FF0066',
 19342  	'#FF0099',
 19343  	'#FF00CC',
 19344  	'#FF00FF',
 19345  	'#FF3300',
 19346  	'#FF3333',
 19347  	'#FF3366',
 19348  	'#FF3399',
 19349  	'#FF33CC',
 19350  	'#FF33FF',
 19351  	'#FF6600',
 19352  	'#FF6633',
 19353  	'#FF9900',
 19354  	'#FF9933',
 19355  	'#FFCC00',
 19356  	'#FFCC33'
 19357  ];
 19358  
 19359  /**
 19360   * Currently only WebKit-based Web Inspectors, Firefox >= v31,
 19361   * and the Firebug extension (any Firefox version) are known
 19362   * to support "%c" CSS customizations.
 19363   *
 19364   * TODO: add a `localStorage` variable to explicitly enable/disable colors
 19365   */
 19366  
 19367  // eslint-disable-next-line complexity
 19368  function useColors() {
 19369  	// NB: In an Electron preload script, document will be defined but not fully
 19370  	// initialized. Since we know we're in Chrome, we'll just detect this case
 19371  	// explicitly
 19372  	if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {
 19373  		return true;
 19374  	}
 19375  
 19376  	// Internet Explorer and Edge do not support colors.
 19377  	if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
 19378  		return false;
 19379  	}
 19380  
 19381  	// Is webkit? http://stackoverflow.com/a/16459606/376773
 19382  	// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
 19383  	return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
 19384  		// Is firebug? http://stackoverflow.com/a/398120/376773
 19385  		(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
 19386  		// Is firefox >= v31?
 19387  		// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
 19388  		(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
 19389  		// Double check webkit in userAgent just in case we are in a worker
 19390  		(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
 19391  }
 19392  
 19393  /**
 19394   * Colorize log arguments if enabled.
 19395   *
 19396   * @api public
 19397   */
 19398  
 19399  function formatArgs(args) {
 19400  	args[0] = (this.useColors ? '%c' : '') +
 19401  		this.namespace +
 19402  		(this.useColors ? ' %c' : ' ') +
 19403  		args[0] +
 19404  		(this.useColors ? '%c ' : ' ') +
 19405  		'+' + module.exports.humanize(this.diff);
 19406  
 19407  	if (!this.useColors) {
 19408  		return;
 19409  	}
 19410  
 19411  	const c = 'color: ' + this.color;
 19412  	args.splice(1, 0, c, 'color: inherit');
 19413  
 19414  	// The final "%c" is somewhat tricky, because there could be other
 19415  	// arguments passed either before or after the %c, so we need to
 19416  	// figure out the correct index to insert the CSS into
 19417  	let index = 0;
 19418  	let lastC = 0;
 19419  	args[0].replace(/%[a-zA-Z%]/g, match => {
 19420  		if (match === '%%') {
 19421  			return;
 19422  		}
 19423  		index++;
 19424  		if (match === '%c') {
 19425  			// We only are interested in the *last* %c
 19426  			// (the user may have provided their own)
 19427  			lastC = index;
 19428  		}
 19429  	});
 19430  
 19431  	args.splice(lastC, 0, c);
 19432  }
 19433  
 19434  /**
 19435   * Invokes `console.debug()` when available.
 19436   * No-op when `console.debug` is not a "function".
 19437   * If `console.debug` is not available, falls back
 19438   * to `console.log`.
 19439   *
 19440   * @api public
 19441   */
 19442  exports.log = console.debug || console.log || (() => {});
 19443  
 19444  /**
 19445   * Save `namespaces`.
 19446   *
 19447   * @param {String} namespaces
 19448   * @api private
 19449   */
 19450  function save(namespaces) {
 19451  	try {
 19452  		if (namespaces) {
 19453  			exports.storage.setItem('debug', namespaces);
 19454  		} else {
 19455  			exports.storage.removeItem('debug');
 19456  		}
 19457  	} catch (error) {
 19458  		// Swallow
 19459  		// XXX (@Qix-) should we be logging these?
 19460  	}
 19461  }
 19462  
 19463  /**
 19464   * Load `namespaces`.
 19465   *
 19466   * @return {String} returns the previously persisted debug modes
 19467   * @api private
 19468   */
 19469  function load() {
 19470  	let r;
 19471  	try {
 19472  		r = exports.storage.getItem('debug');
 19473  	} catch (error) {
 19474  		// Swallow
 19475  		// XXX (@Qix-) should we be logging these?
 19476  	}
 19477  
 19478  	// If debug isn't set in LS, and we're in Electron, try to load $DEBUG
 19479  	if (!r && typeof process !== 'undefined' && 'env' in process) {
 19480  		r = process.env.DEBUG;
 19481  	}
 19482  
 19483  	return r;
 19484  }
 19485  
 19486  /**
 19487   * Localstorage attempts to return the localstorage.
 19488   *
 19489   * This is necessary because safari throws
 19490   * when a user disables cookies/localstorage
 19491   * and you attempt to access it.
 19492   *
 19493   * @return {LocalStorage}
 19494   * @api private
 19495   */
 19496  
 19497  function localstorage() {
 19498  	try {
 19499  		// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context
 19500  		// The Browser also has localStorage in the global context.
 19501  		return localStorage;
 19502  	} catch (error) {
 19503  		// Swallow
 19504  		// XXX (@Qix-) should we be logging these?
 19505  	}
 19506  }
 19507  
 19508  module.exports = __nccwpck_require__(46243)(exports);
 19509  
 19510  const {formatters} = module.exports;
 19511  
 19512  /**
 19513   * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
 19514   */
 19515  
 19516  formatters.j = function (v) {
 19517  	try {
 19518  		return JSON.stringify(v);
 19519  	} catch (error) {
 19520  		return '[UnexpectedJSONParseError]: ' + error.message;
 19521  	}
 19522  };
 19523  
 19524  
 19525  /***/ }),
 19526  
 19527  /***/ 46243:
 19528  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 19529  
 19530  
 19531  /**
 19532   * This is the common logic for both the Node.js and web browser
 19533   * implementations of `debug()`.
 19534   */
 19535  
 19536  function setup(env) {
 19537  	createDebug.debug = createDebug;
 19538  	createDebug.default = createDebug;
 19539  	createDebug.coerce = coerce;
 19540  	createDebug.disable = disable;
 19541  	createDebug.enable = enable;
 19542  	createDebug.enabled = enabled;
 19543  	createDebug.humanize = __nccwpck_require__(80900);
 19544  	createDebug.destroy = destroy;
 19545  
 19546  	Object.keys(env).forEach(key => {
 19547  		createDebug[key] = env[key];
 19548  	});
 19549  
 19550  	/**
 19551  	* The currently active debug mode names, and names to skip.
 19552  	*/
 19553  
 19554  	createDebug.names = [];
 19555  	createDebug.skips = [];
 19556  
 19557  	/**
 19558  	* Map of special "%n" handling functions, for the debug "format" argument.
 19559  	*
 19560  	* Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
 19561  	*/
 19562  	createDebug.formatters = {};
 19563  
 19564  	/**
 19565  	* Selects a color for a debug namespace
 19566  	* @param {String} namespace The namespace string for the debug instance to be colored
 19567  	* @return {Number|String} An ANSI color code for the given namespace
 19568  	* @api private
 19569  	*/
 19570  	function selectColor(namespace) {
 19571  		let hash = 0;
 19572  
 19573  		for (let i = 0; i < namespace.length; i++) {
 19574  			hash = ((hash << 5) - hash) + namespace.charCodeAt(i);
 19575  			hash |= 0; // Convert to 32bit integer
 19576  		}
 19577  
 19578  		return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
 19579  	}
 19580  	createDebug.selectColor = selectColor;
 19581  
 19582  	/**
 19583  	* Create a debugger with the given `namespace`.
 19584  	*
 19585  	* @param {String} namespace
 19586  	* @return {Function}
 19587  	* @api public
 19588  	*/
 19589  	function createDebug(namespace) {
 19590  		let prevTime;
 19591  		let enableOverride = null;
 19592  		let namespacesCache;
 19593  		let enabledCache;
 19594  
 19595  		function debug(...args) {
 19596  			// Disabled?
 19597  			if (!debug.enabled) {
 19598  				return;
 19599  			}
 19600  
 19601  			const self = debug;
 19602  
 19603  			// Set `diff` timestamp
 19604  			const curr = Number(new Date());
 19605  			const ms = curr - (prevTime || curr);
 19606  			self.diff = ms;
 19607  			self.prev = prevTime;
 19608  			self.curr = curr;
 19609  			prevTime = curr;
 19610  
 19611  			args[0] = createDebug.coerce(args[0]);
 19612  
 19613  			if (typeof args[0] !== 'string') {
 19614  				// Anything else let's inspect with %O
 19615  				args.unshift('%O');
 19616  			}
 19617  
 19618  			// Apply any `formatters` transformations
 19619  			let index = 0;
 19620  			args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {
 19621  				// If we encounter an escaped % then don't increase the array index
 19622  				if (match === '%%') {
 19623  					return '%';
 19624  				}
 19625  				index++;
 19626  				const formatter = createDebug.formatters[format];
 19627  				if (typeof formatter === 'function') {
 19628  					const val = args[index];
 19629  					match = formatter.call(self, val);
 19630  
 19631  					// Now we need to remove `args[index]` since it's inlined in the `format`
 19632  					args.splice(index, 1);
 19633  					index--;
 19634  				}
 19635  				return match;
 19636  			});
 19637  
 19638  			// Apply env-specific formatting (colors, etc.)
 19639  			createDebug.formatArgs.call(self, args);
 19640  
 19641  			const logFn = self.log || createDebug.log;
 19642  			logFn.apply(self, args);
 19643  		}
 19644  
 19645  		debug.namespace = namespace;
 19646  		debug.useColors = createDebug.useColors();
 19647  		debug.color = createDebug.selectColor(namespace);
 19648  		debug.extend = extend;
 19649  		debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.
 19650  
 19651  		Object.defineProperty(debug, 'enabled', {
 19652  			enumerable: true,
 19653  			configurable: false,
 19654  			get: () => {
 19655  				if (enableOverride !== null) {
 19656  					return enableOverride;
 19657  				}
 19658  				if (namespacesCache !== createDebug.namespaces) {
 19659  					namespacesCache = createDebug.namespaces;
 19660  					enabledCache = createDebug.enabled(namespace);
 19661  				}
 19662  
 19663  				return enabledCache;
 19664  			},
 19665  			set: v => {
 19666  				enableOverride = v;
 19667  			}
 19668  		});
 19669  
 19670  		// Env-specific initialization logic for debug instances
 19671  		if (typeof createDebug.init === 'function') {
 19672  			createDebug.init(debug);
 19673  		}
 19674  
 19675  		return debug;
 19676  	}
 19677  
 19678  	function extend(namespace, delimiter) {
 19679  		const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);
 19680  		newDebug.log = this.log;
 19681  		return newDebug;
 19682  	}
 19683  
 19684  	/**
 19685  	* Enables a debug mode by namespaces. This can include modes
 19686  	* separated by a colon and wildcards.
 19687  	*
 19688  	* @param {String} namespaces
 19689  	* @api public
 19690  	*/
 19691  	function enable(namespaces) {
 19692  		createDebug.save(namespaces);
 19693  		createDebug.namespaces = namespaces;
 19694  
 19695  		createDebug.names = [];
 19696  		createDebug.skips = [];
 19697  
 19698  		let i;
 19699  		const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
 19700  		const len = split.length;
 19701  
 19702  		for (i = 0; i < len; i++) {
 19703  			if (!split[i]) {
 19704  				// ignore empty strings
 19705  				continue;
 19706  			}
 19707  
 19708  			namespaces = split[i].replace(/\*/g, '.*?');
 19709  
 19710  			if (namespaces[0] === '-') {
 19711  				createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));
 19712  			} else {
 19713  				createDebug.names.push(new RegExp('^' + namespaces + '$'));
 19714  			}
 19715  		}
 19716  	}
 19717  
 19718  	/**
 19719  	* Disable debug output.
 19720  	*
 19721  	* @return {String} namespaces
 19722  	* @api public
 19723  	*/
 19724  	function disable() {
 19725  		const namespaces = [
 19726  			...createDebug.names.map(toNamespace),
 19727  			...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)
 19728  		].join(',');
 19729  		createDebug.enable('');
 19730  		return namespaces;
 19731  	}
 19732  
 19733  	/**
 19734  	* Returns true if the given mode name is enabled, false otherwise.
 19735  	*
 19736  	* @param {String} name
 19737  	* @return {Boolean}
 19738  	* @api public
 19739  	*/
 19740  	function enabled(name) {
 19741  		if (name[name.length - 1] === '*') {
 19742  			return true;
 19743  		}
 19744  
 19745  		let i;
 19746  		let len;
 19747  
 19748  		for (i = 0, len = createDebug.skips.length; i < len; i++) {
 19749  			if (createDebug.skips[i].test(name)) {
 19750  				return false;
 19751  			}
 19752  		}
 19753  
 19754  		for (i = 0, len = createDebug.names.length; i < len; i++) {
 19755  			if (createDebug.names[i].test(name)) {
 19756  				return true;
 19757  			}
 19758  		}
 19759  
 19760  		return false;
 19761  	}
 19762  
 19763  	/**
 19764  	* Convert regexp to namespace
 19765  	*
 19766  	* @param {RegExp} regxep
 19767  	* @return {String} namespace
 19768  	* @api private
 19769  	*/
 19770  	function toNamespace(regexp) {
 19771  		return regexp.toString()
 19772  			.substring(2, regexp.toString().length - 2)
 19773  			.replace(/\.\*\?$/, '*');
 19774  	}
 19775  
 19776  	/**
 19777  	* Coerce `val`.
 19778  	*
 19779  	* @param {Mixed} val
 19780  	* @return {Mixed}
 19781  	* @api private
 19782  	*/
 19783  	function coerce(val) {
 19784  		if (val instanceof Error) {
 19785  			return val.stack || val.message;
 19786  		}
 19787  		return val;
 19788  	}
 19789  
 19790  	/**
 19791  	* XXX DO NOT USE. This is a temporary stub function.
 19792  	* XXX It WILL be removed in the next major release.
 19793  	*/
 19794  	function destroy() {
 19795  		console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
 19796  	}
 19797  
 19798  	createDebug.enable(createDebug.load());
 19799  
 19800  	return createDebug;
 19801  }
 19802  
 19803  module.exports = setup;
 19804  
 19805  
 19806  /***/ }),
 19807  
 19808  /***/ 38237:
 19809  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 19810  
 19811  /**
 19812   * Detect Electron renderer / nwjs process, which is node, but we should
 19813   * treat as a browser.
 19814   */
 19815  
 19816  if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {
 19817  	module.exports = __nccwpck_require__(28222);
 19818  } else {
 19819  	module.exports = __nccwpck_require__(35332);
 19820  }
 19821  
 19822  
 19823  /***/ }),
 19824  
 19825  /***/ 35332:
 19826  /***/ ((module, exports, __nccwpck_require__) => {
 19827  
 19828  /**
 19829   * Module dependencies.
 19830   */
 19831  
 19832  const tty = __nccwpck_require__(76224);
 19833  const util = __nccwpck_require__(73837);
 19834  
 19835  /**
 19836   * This is the Node.js implementation of `debug()`.
 19837   */
 19838  
 19839  exports.init = init;
 19840  exports.log = log;
 19841  exports.formatArgs = formatArgs;
 19842  exports.save = save;
 19843  exports.load = load;
 19844  exports.useColors = useColors;
 19845  exports.destroy = util.deprecate(
 19846  	() => {},
 19847  	'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'
 19848  );
 19849  
 19850  /**
 19851   * Colors.
 19852   */
 19853  
 19854  exports.colors = [6, 2, 3, 4, 5, 1];
 19855  
 19856  try {
 19857  	// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)
 19858  	// eslint-disable-next-line import/no-extraneous-dependencies
 19859  	const supportsColor = __nccwpck_require__(59318);
 19860  
 19861  	if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {
 19862  		exports.colors = [
 19863  			20,
 19864  			21,
 19865  			26,
 19866  			27,
 19867  			32,
 19868  			33,
 19869  			38,
 19870  			39,
 19871  			40,
 19872  			41,
 19873  			42,
 19874  			43,
 19875  			44,
 19876  			45,
 19877  			56,
 19878  			57,
 19879  			62,
 19880  			63,
 19881  			68,
 19882  			69,
 19883  			74,
 19884  			75,
 19885  			76,
 19886  			77,
 19887  			78,
 19888  			79,
 19889  			80,
 19890  			81,
 19891  			92,
 19892  			93,
 19893  			98,
 19894  			99,
 19895  			112,
 19896  			113,
 19897  			128,
 19898  			129,
 19899  			134,
 19900  			135,
 19901  			148,
 19902  			149,
 19903  			160,
 19904  			161,
 19905  			162,
 19906  			163,
 19907  			164,
 19908  			165,
 19909  			166,
 19910  			167,
 19911  			168,
 19912  			169,
 19913  			170,
 19914  			171,
 19915  			172,
 19916  			173,
 19917  			178,
 19918  			179,
 19919  			184,
 19920  			185,
 19921  			196,
 19922  			197,
 19923  			198,
 19924  			199,
 19925  			200,
 19926  			201,
 19927  			202,
 19928  			203,
 19929  			204,
 19930  			205,
 19931  			206,
 19932  			207,
 19933  			208,
 19934  			209,
 19935  			214,
 19936  			215,
 19937  			220,
 19938  			221
 19939  		];
 19940  	}
 19941  } catch (error) {
 19942  	// Swallow - we only care if `supports-color` is available; it doesn't have to be.
 19943  }
 19944  
 19945  /**
 19946   * Build up the default `inspectOpts` object from the environment variables.
 19947   *
 19948   *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js
 19949   */
 19950  
 19951  exports.inspectOpts = Object.keys(process.env).filter(key => {
 19952  	return /^debug_/i.test(key);
 19953  }).reduce((obj, key) => {
 19954  	// Camel-case
 19955  	const prop = key
 19956  		.substring(6)
 19957  		.toLowerCase()
 19958  		.replace(/_([a-z])/g, (_, k) => {
 19959  			return k.toUpperCase();
 19960  		});
 19961  
 19962  	// Coerce string value into JS value
 19963  	let val = process.env[key];
 19964  	if (/^(yes|on|true|enabled)$/i.test(val)) {
 19965  		val = true;
 19966  	} else if (/^(no|off|false|disabled)$/i.test(val)) {
 19967  		val = false;
 19968  	} else if (val === 'null') {
 19969  		val = null;
 19970  	} else {
 19971  		val = Number(val);
 19972  	}
 19973  
 19974  	obj[prop] = val;
 19975  	return obj;
 19976  }, {});
 19977  
 19978  /**
 19979   * Is stdout a TTY? Colored output is enabled when `true`.
 19980   */
 19981  
 19982  function useColors() {
 19983  	return 'colors' in exports.inspectOpts ?
 19984  		Boolean(exports.inspectOpts.colors) :
 19985  		tty.isatty(process.stderr.fd);
 19986  }
 19987  
 19988  /**
 19989   * Adds ANSI color escape codes if enabled.
 19990   *
 19991   * @api public
 19992   */
 19993  
 19994  function formatArgs(args) {
 19995  	const {namespace: name, useColors} = this;
 19996  
 19997  	if (useColors) {
 19998  		const c = this.color;
 19999  		const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c);
 20000  		const prefix = `  ${colorCode};1m${name} \u001B[0m`;
 20001  
 20002  		args[0] = prefix + args[0].split('\n').join('\n' + prefix);
 20003  		args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m');
 20004  	} else {
 20005  		args[0] = getDate() + name + ' ' + args[0];
 20006  	}
 20007  }
 20008  
 20009  function getDate() {
 20010  	if (exports.inspectOpts.hideDate) {
 20011  		return '';
 20012  	}
 20013  	return new Date().toISOString() + ' ';
 20014  }
 20015  
 20016  /**
 20017   * Invokes `util.format()` with the specified arguments and writes to stderr.
 20018   */
 20019  
 20020  function log(...args) {
 20021  	return process.stderr.write(util.format(...args) + '\n');
 20022  }
 20023  
 20024  /**
 20025   * Save `namespaces`.
 20026   *
 20027   * @param {String} namespaces
 20028   * @api private
 20029   */
 20030  function save(namespaces) {
 20031  	if (namespaces) {
 20032  		process.env.DEBUG = namespaces;
 20033  	} else {
 20034  		// If you set a process.env field to null or undefined, it gets cast to the
 20035  		// string 'null' or 'undefined'. Just delete instead.
 20036  		delete process.env.DEBUG;
 20037  	}
 20038  }
 20039  
 20040  /**
 20041   * Load `namespaces`.
 20042   *
 20043   * @return {String} returns the previously persisted debug modes
 20044   * @api private
 20045   */
 20046  
 20047  function load() {
 20048  	return process.env.DEBUG;
 20049  }
 20050  
 20051  /**
 20052   * Init logic for `debug` instances.
 20053   *
 20054   * Create a new `inspectOpts` object in case `useColors` is set
 20055   * differently for a particular `debug` instance.
 20056   */
 20057  
 20058  function init(debug) {
 20059  	debug.inspectOpts = {};
 20060  
 20061  	const keys = Object.keys(exports.inspectOpts);
 20062  	for (let i = 0; i < keys.length; i++) {
 20063  		debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
 20064  	}
 20065  }
 20066  
 20067  module.exports = __nccwpck_require__(46243)(exports);
 20068  
 20069  const {formatters} = module.exports;
 20070  
 20071  /**
 20072   * Map %o to `util.inspect()`, all on a single line.
 20073   */
 20074  
 20075  formatters.o = function (v) {
 20076  	this.inspectOpts.colors = this.useColors;
 20077  	return util.inspect(v, this.inspectOpts)
 20078  		.split('\n')
 20079  		.map(str => str.trim())
 20080  		.join(' ');
 20081  };
 20082  
 20083  /**
 20084   * Map %O to `util.inspect()`, allowing multiple lines if needed.
 20085   */
 20086  
 20087  formatters.O = function (v) {
 20088  	this.inspectOpts.colors = this.useColors;
 20089  	return util.inspect(v, this.inspectOpts);
 20090  };
 20091  
 20092  
 20093  /***/ }),
 20094  
 20095  /***/ 58932:
 20096  /***/ ((__unused_webpack_module, exports) => {
 20097  
 20098  "use strict";
 20099  
 20100  
 20101  Object.defineProperty(exports, "__esModule", ({ value: true }));
 20102  
 20103  class Deprecation extends Error {
 20104    constructor(message) {
 20105      super(message); // Maintains proper stack trace (only available on V8)
 20106  
 20107      /* istanbul ignore next */
 20108  
 20109      if (Error.captureStackTrace) {
 20110        Error.captureStackTrace(this, this.constructor);
 20111      }
 20112  
 20113      this.name = 'Deprecation';
 20114    }
 20115  
 20116  }
 20117  
 20118  exports.Deprecation = Deprecation;
 20119  
 20120  
 20121  /***/ }),
 20122  
 20123  /***/ 28685:
 20124  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 20125  
 20126  "use strict";
 20127  
 20128  
 20129  var iconvLite = __nccwpck_require__(19032);
 20130  
 20131  // Expose to the world
 20132  module.exports.O = convert;
 20133  
 20134  /**
 20135   * Convert encoding of an UTF-8 string or a buffer
 20136   *
 20137   * @param {String|Buffer} str String to be converted
 20138   * @param {String} to Encoding to be converted to
 20139   * @param {String} [from='UTF-8'] Encoding to be converted from
 20140   * @return {Buffer} Encoded string
 20141   */
 20142  function convert(str, to, from) {
 20143      from = checkEncoding(from || 'UTF-8');
 20144      to = checkEncoding(to || 'UTF-8');
 20145      str = str || '';
 20146  
 20147      var result;
 20148  
 20149      if (from !== 'UTF-8' && typeof str === 'string') {
 20150          str = Buffer.from(str, 'binary');
 20151      }
 20152  
 20153      if (from === to) {
 20154          if (typeof str === 'string') {
 20155              result = Buffer.from(str);
 20156          } else {
 20157              result = str;
 20158          }
 20159      } else {
 20160          try {
 20161              result = convertIconvLite(str, to, from);
 20162          } catch (E) {
 20163              console.error(E);
 20164              result = str;
 20165          }
 20166      }
 20167  
 20168      if (typeof result === 'string') {
 20169          result = Buffer.from(result, 'utf-8');
 20170      }
 20171  
 20172      return result;
 20173  }
 20174  
 20175  /**
 20176   * Convert encoding of astring with iconv-lite
 20177   *
 20178   * @param {String|Buffer} str String to be converted
 20179   * @param {String} to Encoding to be converted to
 20180   * @param {String} [from='UTF-8'] Encoding to be converted from
 20181   * @return {Buffer} Encoded string
 20182   */
 20183  function convertIconvLite(str, to, from) {
 20184      if (to === 'UTF-8') {
 20185          return iconvLite.decode(str, from);
 20186      } else if (from === 'UTF-8') {
 20187          return iconvLite.encode(str, to);
 20188      } else {
 20189          return iconvLite.encode(iconvLite.decode(str, from), to);
 20190      }
 20191  }
 20192  
 20193  /**
 20194   * Converts charset name if needed
 20195   *
 20196   * @param {String} name Character set
 20197   * @return {String} Character set name
 20198   */
 20199  function checkEncoding(name) {
 20200      return (name || '')
 20201          .toString()
 20202          .trim()
 20203          .replace(/^latin[\-_]?(\d+)$/i, 'ISO-8859-$1')
 20204          .replace(/^win(?:dows)?[\-_]?(\d+)$/i, 'WINDOWS-$1')
 20205          .replace(/^utf[\-_]?(\d+)$/i, 'UTF-$1')
 20206          .replace(/^ks_c_5601\-1987$/i, 'CP949')
 20207          .replace(/^us[\-_]?ascii$/i, 'ASCII')
 20208          .toUpperCase();
 20209  }
 20210  
 20211  
 20212  /***/ }),
 20213  
 20214  /***/ 52997:
 20215  /***/ ((module) => {
 20216  
 20217  "use strict";
 20218  
 20219  
 20220  function assign(obj, props) {
 20221      for (const key in props) {
 20222          Object.defineProperty(obj, key, {
 20223              value: props[key],
 20224              enumerable: true,
 20225              configurable: true,
 20226          });
 20227      }
 20228  
 20229      return obj;
 20230  }
 20231  
 20232  function createError(err, code, props) {
 20233      if (!err || typeof err === 'string') {
 20234          throw new TypeError('Please pass an Error to err-code');
 20235      }
 20236  
 20237      if (!props) {
 20238          props = {};
 20239      }
 20240  
 20241      if (typeof code === 'object') {
 20242          props = code;
 20243          code = undefined;
 20244      }
 20245  
 20246      if (code != null) {
 20247          props.code = code;
 20248      }
 20249  
 20250      try {
 20251          return assign(err, props);
 20252      } catch (_) {
 20253          props.message = err.message;
 20254          props.stack = err.stack;
 20255  
 20256          const ErrClass = function () {};
 20257  
 20258          ErrClass.prototype = Object.create(Object.getPrototypeOf(err));
 20259  
 20260          return assign(new ErrClass(), props);
 20261      }
 20262  }
 20263  
 20264  module.exports = createError;
 20265  
 20266  
 20267  /***/ }),
 20268  
 20269  /***/ 10968:
 20270  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 20271  
 20272  "use strict";
 20273  
 20274  const { Minipass } = __nccwpck_require__(14968)
 20275  const EE = (__nccwpck_require__(82361).EventEmitter)
 20276  const fs = __nccwpck_require__(57147)
 20277  
 20278  const writev = fs.writev
 20279  
 20280  const _autoClose = Symbol('_autoClose')
 20281  const _close = Symbol('_close')
 20282  const _ended = Symbol('_ended')
 20283  const _fd = Symbol('_fd')
 20284  const _finished = Symbol('_finished')
 20285  const _flags = Symbol('_flags')
 20286  const _flush = Symbol('_flush')
 20287  const _handleChunk = Symbol('_handleChunk')
 20288  const _makeBuf = Symbol('_makeBuf')
 20289  const _mode = Symbol('_mode')
 20290  const _needDrain = Symbol('_needDrain')
 20291  const _onerror = Symbol('_onerror')
 20292  const _onopen = Symbol('_onopen')
 20293  const _onread = Symbol('_onread')
 20294  const _onwrite = Symbol('_onwrite')
 20295  const _open = Symbol('_open')
 20296  const _path = Symbol('_path')
 20297  const _pos = Symbol('_pos')
 20298  const _queue = Symbol('_queue')
 20299  const _read = Symbol('_read')
 20300  const _readSize = Symbol('_readSize')
 20301  const _reading = Symbol('_reading')
 20302  const _remain = Symbol('_remain')
 20303  const _size = Symbol('_size')
 20304  const _write = Symbol('_write')
 20305  const _writing = Symbol('_writing')
 20306  const _defaultFlag = Symbol('_defaultFlag')
 20307  const _errored = Symbol('_errored')
 20308  
 20309  class ReadStream extends Minipass {
 20310    constructor (path, opt) {
 20311      opt = opt || {}
 20312      super(opt)
 20313  
 20314      this.readable = true
 20315      this.writable = false
 20316  
 20317      if (typeof path !== 'string') {
 20318        throw new TypeError('path must be a string')
 20319      }
 20320  
 20321      this[_errored] = false
 20322      this[_fd] = typeof opt.fd === 'number' ? opt.fd : null
 20323      this[_path] = path
 20324      this[_readSize] = opt.readSize || 16 * 1024 * 1024
 20325      this[_reading] = false
 20326      this[_size] = typeof opt.size === 'number' ? opt.size : Infinity
 20327      this[_remain] = this[_size]
 20328      this[_autoClose] = typeof opt.autoClose === 'boolean' ?
 20329        opt.autoClose : true
 20330  
 20331      if (typeof this[_fd] === 'number') {
 20332        this[_read]()
 20333      } else {
 20334        this[_open]()
 20335      }
 20336    }
 20337  
 20338    get fd () {
 20339      return this[_fd]
 20340    }
 20341  
 20342    get path () {
 20343      return this[_path]
 20344    }
 20345  
 20346    write () {
 20347      throw new TypeError('this is a readable stream')
 20348    }
 20349  
 20350    end () {
 20351      throw new TypeError('this is a readable stream')
 20352    }
 20353  
 20354    [_open] () {
 20355      fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))
 20356    }
 20357  
 20358    [_onopen] (er, fd) {
 20359      if (er) {
 20360        this[_onerror](er)
 20361      } else {
 20362        this[_fd] = fd
 20363        this.emit('open', fd)
 20364        this[_read]()
 20365      }
 20366    }
 20367  
 20368    [_makeBuf] () {
 20369      return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))
 20370    }
 20371  
 20372    [_read] () {
 20373      if (!this[_reading]) {
 20374        this[_reading] = true
 20375        const buf = this[_makeBuf]()
 20376        /* istanbul ignore if */
 20377        if (buf.length === 0) {
 20378          return process.nextTick(() => this[_onread](null, 0, buf))
 20379        }
 20380        fs.read(this[_fd], buf, 0, buf.length, null, (er, br, b) =>
 20381          this[_onread](er, br, b))
 20382      }
 20383    }
 20384  
 20385    [_onread] (er, br, buf) {
 20386      this[_reading] = false
 20387      if (er) {
 20388        this[_onerror](er)
 20389      } else if (this[_handleChunk](br, buf)) {
 20390        this[_read]()
 20391      }
 20392    }
 20393  
 20394    [_close] () {
 20395      if (this[_autoClose] && typeof this[_fd] === 'number') {
 20396        const fd = this[_fd]
 20397        this[_fd] = null
 20398        fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))
 20399      }
 20400    }
 20401  
 20402    [_onerror] (er) {
 20403      this[_reading] = true
 20404      this[_close]()
 20405      this.emit('error', er)
 20406    }
 20407  
 20408    [_handleChunk] (br, buf) {
 20409      let ret = false
 20410      // no effect if infinite
 20411      this[_remain] -= br
 20412      if (br > 0) {
 20413        ret = super.write(br < buf.length ? buf.slice(0, br) : buf)
 20414      }
 20415  
 20416      if (br === 0 || this[_remain] <= 0) {
 20417        ret = false
 20418        this[_close]()
 20419        super.end()
 20420      }
 20421  
 20422      return ret
 20423    }
 20424  
 20425    emit (ev, data) {
 20426      switch (ev) {
 20427        case 'prefinish':
 20428        case 'finish':
 20429          break
 20430  
 20431        case 'drain':
 20432          if (typeof this[_fd] === 'number') {
 20433            this[_read]()
 20434          }
 20435          break
 20436  
 20437        case 'error':
 20438          if (this[_errored]) {
 20439            return
 20440          }
 20441          this[_errored] = true
 20442          return super.emit(ev, data)
 20443  
 20444        default:
 20445          return super.emit(ev, data)
 20446      }
 20447    }
 20448  }
 20449  
 20450  class ReadStreamSync extends ReadStream {
 20451    [_open] () {
 20452      let threw = true
 20453      try {
 20454        this[_onopen](null, fs.openSync(this[_path], 'r'))
 20455        threw = false
 20456      } finally {
 20457        if (threw) {
 20458          this[_close]()
 20459        }
 20460      }
 20461    }
 20462  
 20463    [_read] () {
 20464      let threw = true
 20465      try {
 20466        if (!this[_reading]) {
 20467          this[_reading] = true
 20468          do {
 20469            const buf = this[_makeBuf]()
 20470            /* istanbul ignore next */
 20471            const br = buf.length === 0 ? 0
 20472              : fs.readSync(this[_fd], buf, 0, buf.length, null)
 20473            if (!this[_handleChunk](br, buf)) {
 20474              break
 20475            }
 20476          } while (true)
 20477          this[_reading] = false
 20478        }
 20479        threw = false
 20480      } finally {
 20481        if (threw) {
 20482          this[_close]()
 20483        }
 20484      }
 20485    }
 20486  
 20487    [_close] () {
 20488      if (this[_autoClose] && typeof this[_fd] === 'number') {
 20489        const fd = this[_fd]
 20490        this[_fd] = null
 20491        fs.closeSync(fd)
 20492        this.emit('close')
 20493      }
 20494    }
 20495  }
 20496  
 20497  class WriteStream extends EE {
 20498    constructor (path, opt) {
 20499      opt = opt || {}
 20500      super(opt)
 20501      this.readable = false
 20502      this.writable = true
 20503      this[_errored] = false
 20504      this[_writing] = false
 20505      this[_ended] = false
 20506      this[_needDrain] = false
 20507      this[_queue] = []
 20508      this[_path] = path
 20509      this[_fd] = typeof opt.fd === 'number' ? opt.fd : null
 20510      this[_mode] = opt.mode === undefined ? 0o666 : opt.mode
 20511      this[_pos] = typeof opt.start === 'number' ? opt.start : null
 20512      this[_autoClose] = typeof opt.autoClose === 'boolean' ?
 20513        opt.autoClose : true
 20514  
 20515      // truncating makes no sense when writing into the middle
 20516      const defaultFlag = this[_pos] !== null ? 'r+' : 'w'
 20517      this[_defaultFlag] = opt.flags === undefined
 20518      this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags
 20519  
 20520      if (this[_fd] === null) {
 20521        this[_open]()
 20522      }
 20523    }
 20524  
 20525    emit (ev, data) {
 20526      if (ev === 'error') {
 20527        if (this[_errored]) {
 20528          return
 20529        }
 20530        this[_errored] = true
 20531      }
 20532      return super.emit(ev, data)
 20533    }
 20534  
 20535    get fd () {
 20536      return this[_fd]
 20537    }
 20538  
 20539    get path () {
 20540      return this[_path]
 20541    }
 20542  
 20543    [_onerror] (er) {
 20544      this[_close]()
 20545      this[_writing] = true
 20546      this.emit('error', er)
 20547    }
 20548  
 20549    [_open] () {
 20550      fs.open(this[_path], this[_flags], this[_mode],
 20551        (er, fd) => this[_onopen](er, fd))
 20552    }
 20553  
 20554    [_onopen] (er, fd) {
 20555      if (this[_defaultFlag] &&
 20556          this[_flags] === 'r+' &&
 20557          er && er.code === 'ENOENT') {
 20558        this[_flags] = 'w'
 20559        this[_open]()
 20560      } else if (er) {
 20561        this[_onerror](er)
 20562      } else {
 20563        this[_fd] = fd
 20564        this.emit('open', fd)
 20565        if (!this[_writing]) {
 20566          this[_flush]()
 20567        }
 20568      }
 20569    }
 20570  
 20571    end (buf, enc) {
 20572      if (buf) {
 20573        this.write(buf, enc)
 20574      }
 20575  
 20576      this[_ended] = true
 20577  
 20578      // synthetic after-write logic, where drain/finish live
 20579      if (!this[_writing] && !this[_queue].length &&
 20580          typeof this[_fd] === 'number') {
 20581        this[_onwrite](null, 0)
 20582      }
 20583      return this
 20584    }
 20585  
 20586    write (buf, enc) {
 20587      if (typeof buf === 'string') {
 20588        buf = Buffer.from(buf, enc)
 20589      }
 20590  
 20591      if (this[_ended]) {
 20592        this.emit('error', new Error('write() after end()'))
 20593        return false
 20594      }
 20595  
 20596      if (this[_fd] === null || this[_writing] || this[_queue].length) {
 20597        this[_queue].push(buf)
 20598        this[_needDrain] = true
 20599        return false
 20600      }
 20601  
 20602      this[_writing] = true
 20603      this[_write](buf)
 20604      return true
 20605    }
 20606  
 20607    [_write] (buf) {
 20608      fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>
 20609        this[_onwrite](er, bw))
 20610    }
 20611  
 20612    [_onwrite] (er, bw) {
 20613      if (er) {
 20614        this[_onerror](er)
 20615      } else {
 20616        if (this[_pos] !== null) {
 20617          this[_pos] += bw
 20618        }
 20619        if (this[_queue].length) {
 20620          this[_flush]()
 20621        } else {
 20622          this[_writing] = false
 20623  
 20624          if (this[_ended] && !this[_finished]) {
 20625            this[_finished] = true
 20626            this[_close]()
 20627            this.emit('finish')
 20628          } else if (this[_needDrain]) {
 20629            this[_needDrain] = false
 20630            this.emit('drain')
 20631          }
 20632        }
 20633      }
 20634    }
 20635  
 20636    [_flush] () {
 20637      if (this[_queue].length === 0) {
 20638        if (this[_ended]) {
 20639          this[_onwrite](null, 0)
 20640        }
 20641      } else if (this[_queue].length === 1) {
 20642        this[_write](this[_queue].pop())
 20643      } else {
 20644        const iovec = this[_queue]
 20645        this[_queue] = []
 20646        writev(this[_fd], iovec, this[_pos],
 20647          (er, bw) => this[_onwrite](er, bw))
 20648      }
 20649    }
 20650  
 20651    [_close] () {
 20652      if (this[_autoClose] && typeof this[_fd] === 'number') {
 20653        const fd = this[_fd]
 20654        this[_fd] = null
 20655        fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))
 20656      }
 20657    }
 20658  }
 20659  
 20660  class WriteStreamSync extends WriteStream {
 20661    [_open] () {
 20662      let fd
 20663      // only wrap in a try{} block if we know we'll retry, to avoid
 20664      // the rethrow obscuring the error's source frame in most cases.
 20665      if (this[_defaultFlag] && this[_flags] === 'r+') {
 20666        try {
 20667          fd = fs.openSync(this[_path], this[_flags], this[_mode])
 20668        } catch (er) {
 20669          if (er.code === 'ENOENT') {
 20670            this[_flags] = 'w'
 20671            return this[_open]()
 20672          } else {
 20673            throw er
 20674          }
 20675        }
 20676      } else {
 20677        fd = fs.openSync(this[_path], this[_flags], this[_mode])
 20678      }
 20679  
 20680      this[_onopen](null, fd)
 20681    }
 20682  
 20683    [_close] () {
 20684      if (this[_autoClose] && typeof this[_fd] === 'number') {
 20685        const fd = this[_fd]
 20686        this[_fd] = null
 20687        fs.closeSync(fd)
 20688        this.emit('close')
 20689      }
 20690    }
 20691  
 20692    [_write] (buf) {
 20693      // throw the original, but try to close if it fails
 20694      let threw = true
 20695      try {
 20696        this[_onwrite](null,
 20697          fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))
 20698        threw = false
 20699      } finally {
 20700        if (threw) {
 20701          try {
 20702            this[_close]()
 20703          } catch {
 20704            // ok error
 20705          }
 20706        }
 20707      }
 20708    }
 20709  }
 20710  
 20711  exports.ReadStream = ReadStream
 20712  exports.ReadStreamSync = ReadStreamSync
 20713  
 20714  exports.WriteStream = WriteStream
 20715  exports.WriteStreamSync = WriteStreamSync
 20716  
 20717  
 20718  /***/ }),
 20719  
 20720  /***/ 31621:
 20721  /***/ ((module) => {
 20722  
 20723  "use strict";
 20724  
 20725  
 20726  module.exports = (flag, argv = process.argv) => {
 20727  	const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');
 20728  	const position = argv.indexOf(prefix + flag);
 20729  	const terminatorPosition = argv.indexOf('--');
 20730  	return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
 20731  };
 20732  
 20733  
 20734  /***/ }),
 20735  
 20736  /***/ 61002:
 20737  /***/ ((module) => {
 20738  
 20739  "use strict";
 20740  
 20741  // rfc7231 6.1
 20742  const statusCodeCacheableByDefault = new Set([
 20743      200,
 20744      203,
 20745      204,
 20746      206,
 20747      300,
 20748      301,
 20749      308,
 20750      404,
 20751      405,
 20752      410,
 20753      414,
 20754      501,
 20755  ]);
 20756  
 20757  // This implementation does not understand partial responses (206)
 20758  const understoodStatuses = new Set([
 20759      200,
 20760      203,
 20761      204,
 20762      300,
 20763      301,
 20764      302,
 20765      303,
 20766      307,
 20767      308,
 20768      404,
 20769      405,
 20770      410,
 20771      414,
 20772      501,
 20773  ]);
 20774  
 20775  const errorStatusCodes = new Set([
 20776      500,
 20777      502,
 20778      503, 
 20779      504,
 20780  ]);
 20781  
 20782  const hopByHopHeaders = {
 20783      date: true, // included, because we add Age update Date
 20784      connection: true,
 20785      'keep-alive': true,
 20786      'proxy-authenticate': true,
 20787      'proxy-authorization': true,
 20788      te: true,
 20789      trailer: true,
 20790      'transfer-encoding': true,
 20791      upgrade: true,
 20792  };
 20793  
 20794  const excludedFromRevalidationUpdate = {
 20795      // Since the old body is reused, it doesn't make sense to change properties of the body
 20796      'content-length': true,
 20797      'content-encoding': true,
 20798      'transfer-encoding': true,
 20799      'content-range': true,
 20800  };
 20801  
 20802  function toNumberOrZero(s) {
 20803      const n = parseInt(s, 10);
 20804      return isFinite(n) ? n : 0;
 20805  }
 20806  
 20807  // RFC 5861
 20808  function isErrorResponse(response) {
 20809      // consider undefined response as faulty
 20810      if(!response) {
 20811          return true
 20812      }
 20813      return errorStatusCodes.has(response.status);
 20814  }
 20815  
 20816  function parseCacheControl(header) {
 20817      const cc = {};
 20818      if (!header) return cc;
 20819  
 20820      // TODO: When there is more than one value present for a given directive (e.g., two Expires header fields, multiple Cache-Control: max-age directives),
 20821      // the directive's value is considered invalid. Caches are encouraged to consider responses that have invalid freshness information to be stale
 20822      const parts = header.trim().split(/,/);
 20823      for (const part of parts) {
 20824          const [k, v] = part.split(/=/, 2);
 20825          cc[k.trim()] = v === undefined ? true : v.trim().replace(/^"|"$/g, '');
 20826      }
 20827  
 20828      return cc;
 20829  }
 20830  
 20831  function formatCacheControl(cc) {
 20832      let parts = [];
 20833      for (const k in cc) {
 20834          const v = cc[k];
 20835          parts.push(v === true ? k : k + '=' + v);
 20836      }
 20837      if (!parts.length) {
 20838          return undefined;
 20839      }
 20840      return parts.join(', ');
 20841  }
 20842  
 20843  module.exports = class CachePolicy {
 20844      constructor(
 20845          req,
 20846          res,
 20847          {
 20848              shared,
 20849              cacheHeuristic,
 20850              immutableMinTimeToLive,
 20851              ignoreCargoCult,
 20852              _fromObject,
 20853          } = {}
 20854      ) {
 20855          if (_fromObject) {
 20856              this._fromObject(_fromObject);
 20857              return;
 20858          }
 20859  
 20860          if (!res || !res.headers) {
 20861              throw Error('Response headers missing');
 20862          }
 20863          this._assertRequestHasHeaders(req);
 20864  
 20865          this._responseTime = this.now();
 20866          this._isShared = shared !== false;
 20867          this._cacheHeuristic =
 20868              undefined !== cacheHeuristic ? cacheHeuristic : 0.1; // 10% matches IE
 20869          this._immutableMinTtl =
 20870              undefined !== immutableMinTimeToLive
 20871                  ? immutableMinTimeToLive
 20872                  : 24 * 3600 * 1000;
 20873  
 20874          this._status = 'status' in res ? res.status : 200;
 20875          this._resHeaders = res.headers;
 20876          this._rescc = parseCacheControl(res.headers['cache-control']);
 20877          this._method = 'method' in req ? req.method : 'GET';
 20878          this._url = req.url;
 20879          this._host = req.headers.host;
 20880          this._noAuthorization = !req.headers.authorization;
 20881          this._reqHeaders = res.headers.vary ? req.headers : null; // Don't keep all request headers if they won't be used
 20882          this._reqcc = parseCacheControl(req.headers['cache-control']);
 20883  
 20884          // Assume that if someone uses legacy, non-standard uncecessary options they don't understand caching,
 20885          // so there's no point stricly adhering to the blindly copy&pasted directives.
 20886          if (
 20887              ignoreCargoCult &&
 20888              'pre-check' in this._rescc &&
 20889              'post-check' in this._rescc
 20890          ) {
 20891              delete this._rescc['pre-check'];
 20892              delete this._rescc['post-check'];
 20893              delete this._rescc['no-cache'];
 20894              delete this._rescc['no-store'];
 20895              delete this._rescc['must-revalidate'];
 20896              this._resHeaders = Object.assign({}, this._resHeaders, {
 20897                  'cache-control': formatCacheControl(this._rescc),
 20898              });
 20899              delete this._resHeaders.expires;
 20900              delete this._resHeaders.pragma;
 20901          }
 20902  
 20903          // When the Cache-Control header field is not present in a request, caches MUST consider the no-cache request pragma-directive
 20904          // as having the same effect as if "Cache-Control: no-cache" were present (see Section 5.2.1).
 20905          if (
 20906              res.headers['cache-control'] == null &&
 20907              /no-cache/.test(res.headers.pragma)
 20908          ) {
 20909              this._rescc['no-cache'] = true;
 20910          }
 20911      }
 20912  
 20913      now() {
 20914          return Date.now();
 20915      }
 20916  
 20917      storable() {
 20918          // The "no-store" request directive indicates that a cache MUST NOT store any part of either this request or any response to it.
 20919          return !!(
 20920              !this._reqcc['no-store'] &&
 20921              // A cache MUST NOT store a response to any request, unless:
 20922              // The request method is understood by the cache and defined as being cacheable, and
 20923              ('GET' === this._method ||
 20924                  'HEAD' === this._method ||
 20925                  ('POST' === this._method && this._hasExplicitExpiration())) &&
 20926              // the response status code is understood by the cache, and
 20927              understoodStatuses.has(this._status) &&
 20928              // the "no-store" cache directive does not appear in request or response header fields, and
 20929              !this._rescc['no-store'] &&
 20930              // the "private" response directive does not appear in the response, if the cache is shared, and
 20931              (!this._isShared || !this._rescc.private) &&
 20932              // the Authorization header field does not appear in the request, if the cache is shared,
 20933              (!this._isShared ||
 20934                  this._noAuthorization ||
 20935                  this._allowsStoringAuthenticated()) &&
 20936              // the response either:
 20937              // contains an Expires header field, or
 20938              (this._resHeaders.expires ||
 20939                  // contains a max-age response directive, or
 20940                  // contains a s-maxage response directive and the cache is shared, or
 20941                  // contains a public response directive.
 20942                  this._rescc['max-age'] ||
 20943                  (this._isShared && this._rescc['s-maxage']) ||
 20944                  this._rescc.public ||
 20945                  // has a status code that is defined as cacheable by default
 20946                  statusCodeCacheableByDefault.has(this._status))
 20947          );
 20948      }
 20949  
 20950      _hasExplicitExpiration() {
 20951          // 4.2.1 Calculating Freshness Lifetime
 20952          return (
 20953              (this._isShared && this._rescc['s-maxage']) ||
 20954              this._rescc['max-age'] ||
 20955              this._resHeaders.expires
 20956          );
 20957      }
 20958  
 20959      _assertRequestHasHeaders(req) {
 20960          if (!req || !req.headers) {
 20961              throw Error('Request headers missing');
 20962          }
 20963      }
 20964  
 20965      satisfiesWithoutRevalidation(req) {
 20966          this._assertRequestHasHeaders(req);
 20967  
 20968          // When presented with a request, a cache MUST NOT reuse a stored response, unless:
 20969          // the presented request does not contain the no-cache pragma (Section 5.4), nor the no-cache cache directive,
 20970          // unless the stored response is successfully validated (Section 4.3), and
 20971          const requestCC = parseCacheControl(req.headers['cache-control']);
 20972          if (requestCC['no-cache'] || /no-cache/.test(req.headers.pragma)) {
 20973              return false;
 20974          }
 20975  
 20976          if (requestCC['max-age'] && this.age() > requestCC['max-age']) {
 20977              return false;
 20978          }
 20979  
 20980          if (
 20981              requestCC['min-fresh'] &&
 20982              this.timeToLive() < 1000 * requestCC['min-fresh']
 20983          ) {
 20984              return false;
 20985          }
 20986  
 20987          // the stored response is either:
 20988          // fresh, or allowed to be served stale
 20989          if (this.stale()) {
 20990              const allowsStale =
 20991                  requestCC['max-stale'] &&
 20992                  !this._rescc['must-revalidate'] &&
 20993                  (true === requestCC['max-stale'] ||
 20994                      requestCC['max-stale'] > this.age() - this.maxAge());
 20995              if (!allowsStale) {
 20996                  return false;
 20997              }
 20998          }
 20999  
 21000          return this._requestMatches(req, false);
 21001      }
 21002  
 21003      _requestMatches(req, allowHeadMethod) {
 21004          // The presented effective request URI and that of the stored response match, and
 21005          return (
 21006              (!this._url || this._url === req.url) &&
 21007              this._host === req.headers.host &&
 21008              // the request method associated with the stored response allows it to be used for the presented request, and
 21009              (!req.method ||
 21010                  this._method === req.method ||
 21011                  (allowHeadMethod && 'HEAD' === req.method)) &&
 21012              // selecting header fields nominated by the stored response (if any) match those presented, and
 21013              this._varyMatches(req)
 21014          );
 21015      }
 21016  
 21017      _allowsStoringAuthenticated() {
 21018          //  following Cache-Control response directives (Section 5.2.2) have such an effect: must-revalidate, public, and s-maxage.
 21019          return (
 21020              this._rescc['must-revalidate'] ||
 21021              this._rescc.public ||
 21022              this._rescc['s-maxage']
 21023          );
 21024      }
 21025  
 21026      _varyMatches(req) {
 21027          if (!this._resHeaders.vary) {
 21028              return true;
 21029          }
 21030  
 21031          // A Vary header field-value of "*" always fails to match
 21032          if (this._resHeaders.vary === '*') {
 21033              return false;
 21034          }
 21035  
 21036          const fields = this._resHeaders.vary
 21037              .trim()
 21038              .toLowerCase()
 21039              .split(/\s*,\s*/);
 21040          for (const name of fields) {
 21041              if (req.headers[name] !== this._reqHeaders[name]) return false;
 21042          }
 21043          return true;
 21044      }
 21045  
 21046      _copyWithoutHopByHopHeaders(inHeaders) {
 21047          const headers = {};
 21048          for (const name in inHeaders) {
 21049              if (hopByHopHeaders[name]) continue;
 21050              headers[name] = inHeaders[name];
 21051          }
 21052          // 9.1.  Connection
 21053          if (inHeaders.connection) {
 21054              const tokens = inHeaders.connection.trim().split(/\s*,\s*/);
 21055              for (const name of tokens) {
 21056                  delete headers[name];
 21057              }
 21058          }
 21059          if (headers.warning) {
 21060              const warnings = headers.warning.split(/,/).filter(warning => {
 21061                  return !/^\s*1[0-9][0-9]/.test(warning);
 21062              });
 21063              if (!warnings.length) {
 21064                  delete headers.warning;
 21065              } else {
 21066                  headers.warning = warnings.join(',').trim();
 21067              }
 21068          }
 21069          return headers;
 21070      }
 21071  
 21072      responseHeaders() {
 21073          const headers = this._copyWithoutHopByHopHeaders(this._resHeaders);
 21074          const age = this.age();
 21075  
 21076          // A cache SHOULD generate 113 warning if it heuristically chose a freshness
 21077          // lifetime greater than 24 hours and the response's age is greater than 24 hours.
 21078          if (
 21079              age > 3600 * 24 &&
 21080              !this._hasExplicitExpiration() &&
 21081              this.maxAge() > 3600 * 24
 21082          ) {
 21083              headers.warning =
 21084                  (headers.warning ? `${headers.warning}, ` : '') +
 21085                  '113 - "rfc7234 5.5.4"';
 21086          }
 21087          headers.age = `${Math.round(age)}`;
 21088          headers.date = new Date(this.now()).toUTCString();
 21089          return headers;
 21090      }
 21091  
 21092      /**
 21093       * Value of the Date response header or current time if Date was invalid
 21094       * @return timestamp
 21095       */
 21096      date() {
 21097          const serverDate = Date.parse(this._resHeaders.date);
 21098          if (isFinite(serverDate)) {
 21099              return serverDate;
 21100          }
 21101          return this._responseTime;
 21102      }
 21103  
 21104      /**
 21105       * Value of the Age header, in seconds, updated for the current time.
 21106       * May be fractional.
 21107       *
 21108       * @return Number
 21109       */
 21110      age() {
 21111          let age = this._ageValue();
 21112  
 21113          const residentTime = (this.now() - this._responseTime) / 1000;
 21114          return age + residentTime;
 21115      }
 21116  
 21117      _ageValue() {
 21118          return toNumberOrZero(this._resHeaders.age);
 21119      }
 21120  
 21121      /**
 21122       * Value of applicable max-age (or heuristic equivalent) in seconds. This counts since response's `Date`.
 21123       *
 21124       * For an up-to-date value, see `timeToLive()`.
 21125       *
 21126       * @return Number
 21127       */
 21128      maxAge() {
 21129          if (!this.storable() || this._rescc['no-cache']) {
 21130              return 0;
 21131          }
 21132  
 21133          // Shared responses with cookies are cacheable according to the RFC, but IMHO it'd be unwise to do so by default
 21134          // so this implementation requires explicit opt-in via public header
 21135          if (
 21136              this._isShared &&
 21137              (this._resHeaders['set-cookie'] &&
 21138                  !this._rescc.public &&
 21139                  !this._rescc.immutable)
 21140          ) {
 21141              return 0;
 21142          }
 21143  
 21144          if (this._resHeaders.vary === '*') {
 21145              return 0;
 21146          }
 21147  
 21148          if (this._isShared) {
 21149              if (this._rescc['proxy-revalidate']) {
 21150                  return 0;
 21151              }
 21152              // if a response includes the s-maxage directive, a shared cache recipient MUST ignore the Expires field.
 21153              if (this._rescc['s-maxage']) {
 21154                  return toNumberOrZero(this._rescc['s-maxage']);
 21155              }
 21156          }
 21157  
 21158          // If a response includes a Cache-Control field with the max-age directive, a recipient MUST ignore the Expires field.
 21159          if (this._rescc['max-age']) {
 21160              return toNumberOrZero(this._rescc['max-age']);
 21161          }
 21162  
 21163          const defaultMinTtl = this._rescc.immutable ? this._immutableMinTtl : 0;
 21164  
 21165          const serverDate = this.date();
 21166          if (this._resHeaders.expires) {
 21167              const expires = Date.parse(this._resHeaders.expires);
 21168              // A cache recipient MUST interpret invalid date formats, especially the value "0", as representing a time in the past (i.e., "already expired").
 21169              if (Number.isNaN(expires) || expires < serverDate) {
 21170                  return 0;
 21171              }
 21172              return Math.max(defaultMinTtl, (expires - serverDate) / 1000);
 21173          }
 21174  
 21175          if (this._resHeaders['last-modified']) {
 21176              const lastModified = Date.parse(this._resHeaders['last-modified']);
 21177              if (isFinite(lastModified) && serverDate > lastModified) {
 21178                  return Math.max(
 21179                      defaultMinTtl,
 21180                      ((serverDate - lastModified) / 1000) * this._cacheHeuristic
 21181                  );
 21182              }
 21183          }
 21184  
 21185          return defaultMinTtl;
 21186      }
 21187  
 21188      timeToLive() {
 21189          const age = this.maxAge() - this.age();
 21190          const staleIfErrorAge = age + toNumberOrZero(this._rescc['stale-if-error']);
 21191          const staleWhileRevalidateAge = age + toNumberOrZero(this._rescc['stale-while-revalidate']);
 21192          return Math.max(0, age, staleIfErrorAge, staleWhileRevalidateAge) * 1000;
 21193      }
 21194  
 21195      stale() {
 21196          return this.maxAge() <= this.age();
 21197      }
 21198  
 21199      _useStaleIfError() {
 21200          return this.maxAge() + toNumberOrZero(this._rescc['stale-if-error']) > this.age();
 21201      }
 21202  
 21203      useStaleWhileRevalidate() {
 21204          return this.maxAge() + toNumberOrZero(this._rescc['stale-while-revalidate']) > this.age();
 21205      }
 21206  
 21207      static fromObject(obj) {
 21208          return new this(undefined, undefined, { _fromObject: obj });
 21209      }
 21210  
 21211      _fromObject(obj) {
 21212          if (this._responseTime) throw Error('Reinitialized');
 21213          if (!obj || obj.v !== 1) throw Error('Invalid serialization');
 21214  
 21215          this._responseTime = obj.t;
 21216          this._isShared = obj.sh;
 21217          this._cacheHeuristic = obj.ch;
 21218          this._immutableMinTtl =
 21219              obj.imm !== undefined ? obj.imm : 24 * 3600 * 1000;
 21220          this._status = obj.st;
 21221          this._resHeaders = obj.resh;
 21222          this._rescc = obj.rescc;
 21223          this._method = obj.m;
 21224          this._url = obj.u;
 21225          this._host = obj.h;
 21226          this._noAuthorization = obj.a;
 21227          this._reqHeaders = obj.reqh;
 21228          this._reqcc = obj.reqcc;
 21229      }
 21230  
 21231      toObject() {
 21232          return {
 21233              v: 1,
 21234              t: this._responseTime,
 21235              sh: this._isShared,
 21236              ch: this._cacheHeuristic,
 21237              imm: this._immutableMinTtl,
 21238              st: this._status,
 21239              resh: this._resHeaders,
 21240              rescc: this._rescc,
 21241              m: this._method,
 21242              u: this._url,
 21243              h: this._host,
 21244              a: this._noAuthorization,
 21245              reqh: this._reqHeaders,
 21246              reqcc: this._reqcc,
 21247          };
 21248      }
 21249  
 21250      /**
 21251       * Headers for sending to the origin server to revalidate stale response.
 21252       * Allows server to return 304 to allow reuse of the previous response.
 21253       *
 21254       * Hop by hop headers are always stripped.
 21255       * Revalidation headers may be added or removed, depending on request.
 21256       */
 21257      revalidationHeaders(incomingReq) {
 21258          this._assertRequestHasHeaders(incomingReq);
 21259          const headers = this._copyWithoutHopByHopHeaders(incomingReq.headers);
 21260  
 21261          // This implementation does not understand range requests
 21262          delete headers['if-range'];
 21263  
 21264          if (!this._requestMatches(incomingReq, true) || !this.storable()) {
 21265              // revalidation allowed via HEAD
 21266              // not for the same resource, or wasn't allowed to be cached anyway
 21267              delete headers['if-none-match'];
 21268              delete headers['if-modified-since'];
 21269              return headers;
 21270          }
 21271  
 21272          /* MUST send that entity-tag in any cache validation request (using If-Match or If-None-Match) if an entity-tag has been provided by the origin server. */
 21273          if (this._resHeaders.etag) {
 21274              headers['if-none-match'] = headers['if-none-match']
 21275                  ? `${headers['if-none-match']}, ${this._resHeaders.etag}`
 21276                  : this._resHeaders.etag;
 21277          }
 21278  
 21279          // Clients MAY issue simple (non-subrange) GET requests with either weak validators or strong validators. Clients MUST NOT use weak validators in other forms of request.
 21280          const forbidsWeakValidators =
 21281              headers['accept-ranges'] ||
 21282              headers['if-match'] ||
 21283              headers['if-unmodified-since'] ||
 21284              (this._method && this._method != 'GET');
 21285  
 21286          /* SHOULD send the Last-Modified value in non-subrange cache validation requests (using If-Modified-Since) if only a Last-Modified value has been provided by the origin server.
 21287          Note: This implementation does not understand partial responses (206) */
 21288          if (forbidsWeakValidators) {
 21289              delete headers['if-modified-since'];
 21290  
 21291              if (headers['if-none-match']) {
 21292                  const etags = headers['if-none-match']
 21293                      .split(/,/)
 21294                      .filter(etag => {
 21295                          return !/^\s*W\//.test(etag);
 21296                      });
 21297                  if (!etags.length) {
 21298                      delete headers['if-none-match'];
 21299                  } else {
 21300                      headers['if-none-match'] = etags.join(',').trim();
 21301                  }
 21302              }
 21303          } else if (
 21304              this._resHeaders['last-modified'] &&
 21305              !headers['if-modified-since']
 21306          ) {
 21307              headers['if-modified-since'] = this._resHeaders['last-modified'];
 21308          }
 21309  
 21310          return headers;
 21311      }
 21312  
 21313      /**
 21314       * Creates new CachePolicy with information combined from the previews response,
 21315       * and the new revalidation response.
 21316       *
 21317       * Returns {policy, modified} where modified is a boolean indicating
 21318       * whether the response body has been modified, and old cached body can't be used.
 21319       *
 21320       * @return {Object} {policy: CachePolicy, modified: Boolean}
 21321       */
 21322      revalidatedPolicy(request, response) {
 21323          this._assertRequestHasHeaders(request);
 21324          if(this._useStaleIfError() && isErrorResponse(response)) {  // I consider the revalidation request unsuccessful
 21325            return {
 21326              modified: false,
 21327              matches: false,
 21328              policy: this,
 21329            };
 21330          }
 21331          if (!response || !response.headers) {
 21332              throw Error('Response headers missing');
 21333          }
 21334  
 21335          // These aren't going to be supported exactly, since one CachePolicy object
 21336          // doesn't know about all the other cached objects.
 21337          let matches = false;
 21338          if (response.status !== undefined && response.status != 304) {
 21339              matches = false;
 21340          } else if (
 21341              response.headers.etag &&
 21342              !/^\s*W\//.test(response.headers.etag)
 21343          ) {
 21344              // "All of the stored responses with the same strong validator are selected.
 21345              // If none of the stored responses contain the same strong validator,
 21346              // then the cache MUST NOT use the new response to update any stored responses."
 21347              matches =
 21348                  this._resHeaders.etag &&
 21349                  this._resHeaders.etag.replace(/^\s*W\//, '') ===
 21350                      response.headers.etag;
 21351          } else if (this._resHeaders.etag && response.headers.etag) {
 21352              // "If the new response contains a weak validator and that validator corresponds
 21353              // to one of the cache's stored responses,
 21354              // then the most recent of those matching stored responses is selected for update."
 21355              matches =
 21356                  this._resHeaders.etag.replace(/^\s*W\//, '') ===
 21357                  response.headers.etag.replace(/^\s*W\//, '');
 21358          } else if (this._resHeaders['last-modified']) {
 21359              matches =
 21360                  this._resHeaders['last-modified'] ===
 21361                  response.headers['last-modified'];
 21362          } else {
 21363              // If the new response does not include any form of validator (such as in the case where
 21364              // a client generates an If-Modified-Since request from a source other than the Last-Modified
 21365              // response header field), and there is only one stored response, and that stored response also
 21366              // lacks a validator, then that stored response is selected for update.
 21367              if (
 21368                  !this._resHeaders.etag &&
 21369                  !this._resHeaders['last-modified'] &&
 21370                  !response.headers.etag &&
 21371                  !response.headers['last-modified']
 21372              ) {
 21373                  matches = true;
 21374              }
 21375          }
 21376  
 21377          if (!matches) {
 21378              return {
 21379                  policy: new this.constructor(request, response),
 21380                  // Client receiving 304 without body, even if it's invalid/mismatched has no option
 21381                  // but to reuse a cached body. We don't have a good way to tell clients to do
 21382                  // error recovery in such case.
 21383                  modified: response.status != 304,
 21384                  matches: false,
 21385              };
 21386          }
 21387  
 21388          // use other header fields provided in the 304 (Not Modified) response to replace all instances
 21389          // of the corresponding header fields in the stored response.
 21390          const headers = {};
 21391          for (const k in this._resHeaders) {
 21392              headers[k] =
 21393                  k in response.headers && !excludedFromRevalidationUpdate[k]
 21394                      ? response.headers[k]
 21395                      : this._resHeaders[k];
 21396          }
 21397  
 21398          const newResponse = Object.assign({}, response, {
 21399              status: this._status,
 21400              method: this._method,
 21401              headers,
 21402          });
 21403          return {
 21404              policy: new this.constructor(request, newResponse, {
 21405                  shared: this._isShared,
 21406                  cacheHeuristic: this._cacheHeuristic,
 21407                  immutableMinTimeToLive: this._immutableMinTtl,
 21408              }),
 21409              modified: false,
 21410              matches: true,
 21411          };
 21412      }
 21413  };
 21414  
 21415  
 21416  /***/ }),
 21417  
 21418  /***/ 23764:
 21419  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 21420  
 21421  "use strict";
 21422  
 21423  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 21424      if (k2 === undefined) k2 = k;
 21425      var desc = Object.getOwnPropertyDescriptor(m, k);
 21426      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 21427        desc = { enumerable: true, get: function() { return m[k]; } };
 21428      }
 21429      Object.defineProperty(o, k2, desc);
 21430  }) : (function(o, m, k, k2) {
 21431      if (k2 === undefined) k2 = k;
 21432      o[k2] = m[k];
 21433  }));
 21434  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 21435      Object.defineProperty(o, "default", { enumerable: true, value: v });
 21436  }) : function(o, v) {
 21437      o["default"] = v;
 21438  });
 21439  var __importStar = (this && this.__importStar) || function (mod) {
 21440      if (mod && mod.__esModule) return mod;
 21441      var result = {};
 21442      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 21443      __setModuleDefault(result, mod);
 21444      return result;
 21445  };
 21446  var __importDefault = (this && this.__importDefault) || function (mod) {
 21447      return (mod && mod.__esModule) ? mod : { "default": mod };
 21448  };
 21449  Object.defineProperty(exports, "__esModule", ({ value: true }));
 21450  exports.HttpProxyAgent = void 0;
 21451  const net = __importStar(__nccwpck_require__(41808));
 21452  const tls = __importStar(__nccwpck_require__(24404));
 21453  const debug_1 = __importDefault(__nccwpck_require__(38237));
 21454  const events_1 = __nccwpck_require__(82361);
 21455  const agent_base_1 = __nccwpck_require__(70694);
 21456  const url_1 = __nccwpck_require__(57310);
 21457  const debug = (0, debug_1.default)('http-proxy-agent');
 21458  /**
 21459   * The `HttpProxyAgent` implements an HTTP Agent subclass that connects
 21460   * to the specified "HTTP proxy server" in order to proxy HTTP requests.
 21461   */
 21462  class HttpProxyAgent extends agent_base_1.Agent {
 21463      constructor(proxy, opts) {
 21464          super(opts);
 21465          this.proxy = typeof proxy === 'string' ? new url_1.URL(proxy) : proxy;
 21466          this.proxyHeaders = opts?.headers ?? {};
 21467          debug('Creating new HttpProxyAgent instance: %o', this.proxy.href);
 21468          // Trim off the brackets from IPv6 addresses
 21469          const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, '');
 21470          const port = this.proxy.port
 21471              ? parseInt(this.proxy.port, 10)
 21472              : this.proxy.protocol === 'https:'
 21473                  ? 443
 21474                  : 80;
 21475          this.connectOpts = {
 21476              ...(opts ? omit(opts, 'headers') : null),
 21477              host,
 21478              port,
 21479          };
 21480      }
 21481      addRequest(req, opts) {
 21482          req._header = null;
 21483          this.setRequestProps(req, opts);
 21484          // @ts-expect-error `addRequest()` isn't defined in `@types/node`
 21485          super.addRequest(req, opts);
 21486      }
 21487      setRequestProps(req, opts) {
 21488          const { proxy } = this;
 21489          const protocol = opts.secureEndpoint ? 'https:' : 'http:';
 21490          const hostname = req.getHeader('host') || 'localhost';
 21491          const base = `${protocol}//${hostname}`;
 21492          const url = new url_1.URL(req.path, base);
 21493          if (opts.port !== 80) {
 21494              url.port = String(opts.port);
 21495          }
 21496          // Change the `http.ClientRequest` instance's "path" field
 21497          // to the absolute path of the URL that will be requested.
 21498          req.path = String(url);
 21499          // Inject the `Proxy-Authorization` header if necessary.
 21500          const headers = typeof this.proxyHeaders === 'function'
 21501              ? this.proxyHeaders()
 21502              : { ...this.proxyHeaders };
 21503          if (proxy.username || proxy.password) {
 21504              const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;
 21505              headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;
 21506          }
 21507          if (!headers['Proxy-Connection']) {
 21508              headers['Proxy-Connection'] = this.keepAlive
 21509                  ? 'Keep-Alive'
 21510                  : 'close';
 21511          }
 21512          for (const name of Object.keys(headers)) {
 21513              const value = headers[name];
 21514              if (value) {
 21515                  req.setHeader(name, value);
 21516              }
 21517          }
 21518      }
 21519      async connect(req, opts) {
 21520          req._header = null;
 21521          if (!req.path.includes('://')) {
 21522              this.setRequestProps(req, opts);
 21523          }
 21524          // At this point, the http ClientRequest's internal `_header` field
 21525          // might have already been set. If this is the case then we'll need
 21526          // to re-generate the string since we just changed the `req.path`.
 21527          let first;
 21528          let endOfHeaders;
 21529          debug('Regenerating stored HTTP header string for request');
 21530          req._implicitHeader();
 21531          if (req.outputData && req.outputData.length > 0) {
 21532              debug('Patching connection write() output buffer with updated header');
 21533              first = req.outputData[0].data;
 21534              endOfHeaders = first.indexOf('\r\n\r\n') + 4;
 21535              req.outputData[0].data =
 21536                  req._header + first.substring(endOfHeaders);
 21537              debug('Output buffer: %o', req.outputData[0].data);
 21538          }
 21539          // Create a socket connection to the proxy server.
 21540          let socket;
 21541          if (this.proxy.protocol === 'https:') {
 21542              debug('Creating `tls.Socket`: %o', this.connectOpts);
 21543              socket = tls.connect(this.connectOpts);
 21544          }
 21545          else {
 21546              debug('Creating `net.Socket`: %o', this.connectOpts);
 21547              socket = net.connect(this.connectOpts);
 21548          }
 21549          // Wait for the socket's `connect` event, so that this `callback()`
 21550          // function throws instead of the `http` request machinery. This is
 21551          // important for i.e. `PacProxyAgent` which determines a failed proxy
 21552          // connection via the `callback()` function throwing.
 21553          await (0, events_1.once)(socket, 'connect');
 21554          return socket;
 21555      }
 21556  }
 21557  HttpProxyAgent.protocols = ['http', 'https'];
 21558  exports.HttpProxyAgent = HttpProxyAgent;
 21559  function omit(obj, ...keys) {
 21560      const ret = {};
 21561      let key;
 21562      for (key in obj) {
 21563          if (!keys.includes(key)) {
 21564              ret[key] = obj[key];
 21565          }
 21566      }
 21567      return ret;
 21568  }
 21569  //# sourceMappingURL=index.js.map
 21570  
 21571  /***/ }),
 21572  
 21573  /***/ 77219:
 21574  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 21575  
 21576  "use strict";
 21577  
 21578  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 21579      if (k2 === undefined) k2 = k;
 21580      var desc = Object.getOwnPropertyDescriptor(m, k);
 21581      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 21582        desc = { enumerable: true, get: function() { return m[k]; } };
 21583      }
 21584      Object.defineProperty(o, k2, desc);
 21585  }) : (function(o, m, k, k2) {
 21586      if (k2 === undefined) k2 = k;
 21587      o[k2] = m[k];
 21588  }));
 21589  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 21590      Object.defineProperty(o, "default", { enumerable: true, value: v });
 21591  }) : function(o, v) {
 21592      o["default"] = v;
 21593  });
 21594  var __importStar = (this && this.__importStar) || function (mod) {
 21595      if (mod && mod.__esModule) return mod;
 21596      var result = {};
 21597      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 21598      __setModuleDefault(result, mod);
 21599      return result;
 21600  };
 21601  var __importDefault = (this && this.__importDefault) || function (mod) {
 21602      return (mod && mod.__esModule) ? mod : { "default": mod };
 21603  };
 21604  Object.defineProperty(exports, "__esModule", ({ value: true }));
 21605  exports.HttpsProxyAgent = void 0;
 21606  const net = __importStar(__nccwpck_require__(41808));
 21607  const tls = __importStar(__nccwpck_require__(24404));
 21608  const assert_1 = __importDefault(__nccwpck_require__(39491));
 21609  const debug_1 = __importDefault(__nccwpck_require__(38237));
 21610  const agent_base_1 = __nccwpck_require__(70694);
 21611  const url_1 = __nccwpck_require__(57310);
 21612  const parse_proxy_response_1 = __nccwpck_require__(595);
 21613  const debug = (0, debug_1.default)('https-proxy-agent');
 21614  /**
 21615   * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to
 21616   * the specified "HTTP(s) proxy server" in order to proxy HTTPS requests.
 21617   *
 21618   * Outgoing HTTP requests are first tunneled through the proxy server using the
 21619   * `CONNECT` HTTP request method to establish a connection to the proxy server,
 21620   * and then the proxy server connects to the destination target and issues the
 21621   * HTTP request from the proxy server.
 21622   *
 21623   * `https:` requests have their socket connection upgraded to TLS once
 21624   * the connection to the proxy server has been established.
 21625   */
 21626  class HttpsProxyAgent extends agent_base_1.Agent {
 21627      constructor(proxy, opts) {
 21628          super(opts);
 21629          this.options = { path: undefined };
 21630          this.proxy = typeof proxy === 'string' ? new url_1.URL(proxy) : proxy;
 21631          this.proxyHeaders = opts?.headers ?? {};
 21632          debug('Creating new HttpsProxyAgent instance: %o', this.proxy.href);
 21633          // Trim off the brackets from IPv6 addresses
 21634          const host = (this.proxy.hostname || this.proxy.host).replace(/^\[|\]$/g, '');
 21635          const port = this.proxy.port
 21636              ? parseInt(this.proxy.port, 10)
 21637              : this.proxy.protocol === 'https:'
 21638                  ? 443
 21639                  : 80;
 21640          this.connectOpts = {
 21641              // Attempt to negotiate http/1.1 for proxy servers that support http/2
 21642              ALPNProtocols: ['http/1.1'],
 21643              ...(opts ? omit(opts, 'headers') : null),
 21644              host,
 21645              port,
 21646          };
 21647      }
 21648      /**
 21649       * Called when the node-core HTTP client library is creating a
 21650       * new HTTP request.
 21651       */
 21652      async connect(req, opts) {
 21653          const { proxy } = this;
 21654          if (!opts.host) {
 21655              throw new TypeError('No "host" provided');
 21656          }
 21657          // Create a socket connection to the proxy server.
 21658          let socket;
 21659          if (proxy.protocol === 'https:') {
 21660              debug('Creating `tls.Socket`: %o', this.connectOpts);
 21661              const servername = this.connectOpts.servername || this.connectOpts.host;
 21662              socket = tls.connect({
 21663                  ...this.connectOpts,
 21664                  servername: servername && net.isIP(servername) ? undefined : servername,
 21665              });
 21666          }
 21667          else {
 21668              debug('Creating `net.Socket`: %o', this.connectOpts);
 21669              socket = net.connect(this.connectOpts);
 21670          }
 21671          const headers = typeof this.proxyHeaders === 'function'
 21672              ? this.proxyHeaders()
 21673              : { ...this.proxyHeaders };
 21674          const host = net.isIPv6(opts.host) ? `[${opts.host}]` : opts.host;
 21675          let payload = `CONNECT ${host}:${opts.port} HTTP/1.1\r\n`;
 21676          // Inject the `Proxy-Authorization` header if necessary.
 21677          if (proxy.username || proxy.password) {
 21678              const auth = `${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;
 21679              headers['Proxy-Authorization'] = `Basic ${Buffer.from(auth).toString('base64')}`;
 21680          }
 21681          headers.Host = `${host}:${opts.port}`;
 21682          if (!headers['Proxy-Connection']) {
 21683              headers['Proxy-Connection'] = this.keepAlive
 21684                  ? 'Keep-Alive'
 21685                  : 'close';
 21686          }
 21687          for (const name of Object.keys(headers)) {
 21688              payload += `${name}: ${headers[name]}\r\n`;
 21689          }
 21690          const proxyResponsePromise = (0, parse_proxy_response_1.parseProxyResponse)(socket);
 21691          socket.write(`${payload}\r\n`);
 21692          const { connect, buffered } = await proxyResponsePromise;
 21693          req.emit('proxyConnect', connect);
 21694          this.emit('proxyConnect', connect, req);
 21695          if (connect.statusCode === 200) {
 21696              req.once('socket', resume);
 21697              if (opts.secureEndpoint) {
 21698                  // The proxy is connecting to a TLS server, so upgrade
 21699                  // this socket connection to a TLS connection.
 21700                  debug('Upgrading socket connection to TLS');
 21701                  const servername = opts.servername || opts.host;
 21702                  return tls.connect({
 21703                      ...omit(opts, 'host', 'path', 'port'),
 21704                      socket,
 21705                      servername: net.isIP(servername) ? undefined : servername,
 21706                  });
 21707              }
 21708              return socket;
 21709          }
 21710          // Some other status code that's not 200... need to re-play the HTTP
 21711          // header "data" events onto the socket once the HTTP machinery is
 21712          // attached so that the node core `http` can parse and handle the
 21713          // error status code.
 21714          // Close the original socket, and a new "fake" socket is returned
 21715          // instead, so that the proxy doesn't get the HTTP request
 21716          // written to it (which may contain `Authorization` headers or other
 21717          // sensitive data).
 21718          //
 21719          // See: https://hackerone.com/reports/541502
 21720          socket.destroy();
 21721          const fakeSocket = new net.Socket({ writable: false });
 21722          fakeSocket.readable = true;
 21723          // Need to wait for the "socket" event to re-play the "data" events.
 21724          req.once('socket', (s) => {
 21725              debug('Replaying proxy buffer for failed request');
 21726              (0, assert_1.default)(s.listenerCount('data') > 0);
 21727              // Replay the "buffered" Buffer onto the fake `socket`, since at
 21728              // this point the HTTP module machinery has been hooked up for
 21729              // the user.
 21730              s.push(buffered);
 21731              s.push(null);
 21732          });
 21733          return fakeSocket;
 21734      }
 21735  }
 21736  HttpsProxyAgent.protocols = ['http', 'https'];
 21737  exports.HttpsProxyAgent = HttpsProxyAgent;
 21738  function resume(socket) {
 21739      socket.resume();
 21740  }
 21741  function omit(obj, ...keys) {
 21742      const ret = {};
 21743      let key;
 21744      for (key in obj) {
 21745          if (!keys.includes(key)) {
 21746              ret[key] = obj[key];
 21747          }
 21748      }
 21749      return ret;
 21750  }
 21751  //# sourceMappingURL=index.js.map
 21752  
 21753  /***/ }),
 21754  
 21755  /***/ 595:
 21756  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 21757  
 21758  "use strict";
 21759  
 21760  var __importDefault = (this && this.__importDefault) || function (mod) {
 21761      return (mod && mod.__esModule) ? mod : { "default": mod };
 21762  };
 21763  Object.defineProperty(exports, "__esModule", ({ value: true }));
 21764  exports.parseProxyResponse = void 0;
 21765  const debug_1 = __importDefault(__nccwpck_require__(38237));
 21766  const debug = (0, debug_1.default)('https-proxy-agent:parse-proxy-response');
 21767  function parseProxyResponse(socket) {
 21768      return new Promise((resolve, reject) => {
 21769          // we need to buffer any HTTP traffic that happens with the proxy before we get
 21770          // the CONNECT response, so that if the response is anything other than an "200"
 21771          // response code, then we can re-play the "data" events on the socket once the
 21772          // HTTP parser is hooked up...
 21773          let buffersLength = 0;
 21774          const buffers = [];
 21775          function read() {
 21776              const b = socket.read();
 21777              if (b)
 21778                  ondata(b);
 21779              else
 21780                  socket.once('readable', read);
 21781          }
 21782          function cleanup() {
 21783              socket.removeListener('end', onend);
 21784              socket.removeListener('error', onerror);
 21785              socket.removeListener('readable', read);
 21786          }
 21787          function onend() {
 21788              cleanup();
 21789              debug('onend');
 21790              reject(new Error('Proxy connection ended before receiving CONNECT response'));
 21791          }
 21792          function onerror(err) {
 21793              cleanup();
 21794              debug('onerror %o', err);
 21795              reject(err);
 21796          }
 21797          function ondata(b) {
 21798              buffers.push(b);
 21799              buffersLength += b.length;
 21800              const buffered = Buffer.concat(buffers, buffersLength);
 21801              const endOfHeaders = buffered.indexOf('\r\n\r\n');
 21802              if (endOfHeaders === -1) {
 21803                  // keep buffering
 21804                  debug('have not received end of HTTP headers yet...');
 21805                  read();
 21806                  return;
 21807              }
 21808              const headerParts = buffered
 21809                  .slice(0, endOfHeaders)
 21810                  .toString('ascii')
 21811                  .split('\r\n');
 21812              const firstLine = headerParts.shift();
 21813              if (!firstLine) {
 21814                  socket.destroy();
 21815                  return reject(new Error('No header received from proxy CONNECT response'));
 21816              }
 21817              const firstLineParts = firstLine.split(' ');
 21818              const statusCode = +firstLineParts[1];
 21819              const statusText = firstLineParts.slice(2).join(' ');
 21820              const headers = {};
 21821              for (const header of headerParts) {
 21822                  if (!header)
 21823                      continue;
 21824                  const firstColon = header.indexOf(':');
 21825                  if (firstColon === -1) {
 21826                      socket.destroy();
 21827                      return reject(new Error(`Invalid header from proxy CONNECT response: "${header}"`));
 21828                  }
 21829                  const key = header.slice(0, firstColon).toLowerCase();
 21830                  const value = header.slice(firstColon + 1).trimStart();
 21831                  const current = headers[key];
 21832                  if (typeof current === 'string') {
 21833                      headers[key] = [current, value];
 21834                  }
 21835                  else if (Array.isArray(current)) {
 21836                      current.push(value);
 21837                  }
 21838                  else {
 21839                      headers[key] = value;
 21840                  }
 21841              }
 21842              debug('got proxy server response: %o %o', firstLine, headers);
 21843              cleanup();
 21844              resolve({
 21845                  connect: {
 21846                      statusCode,
 21847                      statusText,
 21848                      headers,
 21849                  },
 21850                  buffered,
 21851              });
 21852          }
 21853          socket.on('error', onerror);
 21854          socket.on('end', onend);
 21855          read();
 21856      });
 21857  }
 21858  exports.parseProxyResponse = parseProxyResponse;
 21859  //# sourceMappingURL=parse-proxy-response.js.map
 21860  
 21861  /***/ }),
 21862  
 21863  /***/ 39695:
 21864  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 21865  
 21866  "use strict";
 21867  
 21868  var Buffer = (__nccwpck_require__(15118).Buffer);
 21869  
 21870  // Multibyte codec. In this scheme, a character is represented by 1 or more bytes.
 21871  // Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.
 21872  // To save memory and loading time, we read table files only when requested.
 21873  
 21874  exports._dbcs = DBCSCodec;
 21875  
 21876  var UNASSIGNED = -1,
 21877      GB18030_CODE = -2,
 21878      SEQ_START  = -10,
 21879      NODE_START = -1000,
 21880      UNASSIGNED_NODE = new Array(0x100),
 21881      DEF_CHAR = -1;
 21882  
 21883  for (var i = 0; i < 0x100; i++)
 21884      UNASSIGNED_NODE[i] = UNASSIGNED;
 21885  
 21886  
 21887  // Class DBCSCodec reads and initializes mapping tables.
 21888  function DBCSCodec(codecOptions, iconv) {
 21889      this.encodingName = codecOptions.encodingName;
 21890      if (!codecOptions)
 21891          throw new Error("DBCS codec is called without the data.")
 21892      if (!codecOptions.table)
 21893          throw new Error("Encoding '" + this.encodingName + "' has no data.");
 21894  
 21895      // Load tables.
 21896      var mappingTable = codecOptions.table();
 21897  
 21898  
 21899      // Decode tables: MBCS -> Unicode.
 21900  
 21901      // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.
 21902      // Trie root is decodeTables[0].
 21903      // Values: >=  0 -> unicode character code. can be > 0xFFFF
 21904      //         == UNASSIGNED -> unknown/unassigned sequence.
 21905      //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.
 21906      //         <= NODE_START -> index of the next node in our trie to process next byte.
 21907      //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.
 21908      this.decodeTables = [];
 21909      this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.
 21910  
 21911      // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. 
 21912      this.decodeTableSeq = [];
 21913  
 21914      // Actual mapping tables consist of chunks. Use them to fill up decode tables.
 21915      for (var i = 0; i < mappingTable.length; i++)
 21916          this._addDecodeChunk(mappingTable[i]);
 21917  
 21918      // Load & create GB18030 tables when needed.
 21919      if (typeof codecOptions.gb18030 === 'function') {
 21920          this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.
 21921  
 21922          // Add GB18030 common decode nodes.
 21923          var commonThirdByteNodeIdx = this.decodeTables.length;
 21924          this.decodeTables.push(UNASSIGNED_NODE.slice(0));
 21925  
 21926          var commonFourthByteNodeIdx = this.decodeTables.length;
 21927          this.decodeTables.push(UNASSIGNED_NODE.slice(0));
 21928  
 21929          // Fill out the tree
 21930          var firstByteNode = this.decodeTables[0];
 21931          for (var i = 0x81; i <= 0xFE; i++) {
 21932              var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]];
 21933              for (var j = 0x30; j <= 0x39; j++) {
 21934                  if (secondByteNode[j] === UNASSIGNED) {
 21935                      secondByteNode[j] = NODE_START - commonThirdByteNodeIdx;
 21936                  } else if (secondByteNode[j] > NODE_START) {
 21937                      throw new Error("gb18030 decode tables conflict at byte 2");
 21938                  }
 21939  
 21940                  var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]];
 21941                  for (var k = 0x81; k <= 0xFE; k++) {
 21942                      if (thirdByteNode[k] === UNASSIGNED) {
 21943                          thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx;
 21944                      } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {
 21945                          continue;
 21946                      } else if (thirdByteNode[k] > NODE_START) {
 21947                          throw new Error("gb18030 decode tables conflict at byte 3");
 21948                      }
 21949  
 21950                      var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]];
 21951                      for (var l = 0x30; l <= 0x39; l++) {
 21952                          if (fourthByteNode[l] === UNASSIGNED)
 21953                              fourthByteNode[l] = GB18030_CODE;
 21954                      }
 21955                  }
 21956              }
 21957          }
 21958      }
 21959  
 21960      this.defaultCharUnicode = iconv.defaultCharUnicode;
 21961  
 21962      
 21963      // Encode tables: Unicode -> DBCS.
 21964  
 21965      // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.
 21966      // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.
 21967      // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).
 21968      //         == UNASSIGNED -> no conversion found. Output a default char.
 21969      //         <= SEQ_START  -> it's an index in encodeTableSeq, see below. The character starts a sequence.
 21970      this.encodeTable = [];
 21971      
 21972      // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of
 21973      // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key
 21974      // means end of sequence (needed when one sequence is a strict subsequence of another).
 21975      // Objects are kept separately from encodeTable to increase performance.
 21976      this.encodeTableSeq = [];
 21977  
 21978      // Some chars can be decoded, but need not be encoded.
 21979      var skipEncodeChars = {};
 21980      if (codecOptions.encodeSkipVals)
 21981          for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {
 21982              var val = codecOptions.encodeSkipVals[i];
 21983              if (typeof val === 'number')
 21984                  skipEncodeChars[val] = true;
 21985              else
 21986                  for (var j = val.from; j <= val.to; j++)
 21987                      skipEncodeChars[j] = true;
 21988          }
 21989          
 21990      // Use decode trie to recursively fill out encode tables.
 21991      this._fillEncodeTable(0, 0, skipEncodeChars);
 21992  
 21993      // Add more encoding pairs when needed.
 21994      if (codecOptions.encodeAdd) {
 21995          for (var uChar in codecOptions.encodeAdd)
 21996              if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))
 21997                  this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);
 21998      }
 21999  
 22000      this.defCharSB  = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];
 22001      if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];
 22002      if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0);
 22003  }
 22004  
 22005  DBCSCodec.prototype.encoder = DBCSEncoder;
 22006  DBCSCodec.prototype.decoder = DBCSDecoder;
 22007  
 22008  // Decoder helpers
 22009  DBCSCodec.prototype._getDecodeTrieNode = function(addr) {
 22010      var bytes = [];
 22011      for (; addr > 0; addr >>>= 8)
 22012          bytes.push(addr & 0xFF);
 22013      if (bytes.length == 0)
 22014          bytes.push(0);
 22015  
 22016      var node = this.decodeTables[0];
 22017      for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.
 22018          var val = node[bytes[i]];
 22019  
 22020          if (val == UNASSIGNED) { // Create new node.
 22021              node[bytes[i]] = NODE_START - this.decodeTables.length;
 22022              this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));
 22023          }
 22024          else if (val <= NODE_START) { // Existing node.
 22025              node = this.decodeTables[NODE_START - val];
 22026          }
 22027          else
 22028              throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16));
 22029      }
 22030      return node;
 22031  }
 22032  
 22033  
 22034  DBCSCodec.prototype._addDecodeChunk = function(chunk) {
 22035      // First element of chunk is the hex mbcs code where we start.
 22036      var curAddr = parseInt(chunk[0], 16);
 22037  
 22038      // Choose the decoding node where we'll write our chars.
 22039      var writeTable = this._getDecodeTrieNode(curAddr);
 22040      curAddr = curAddr & 0xFF;
 22041  
 22042      // Write all other elements of the chunk to the table.
 22043      for (var k = 1; k < chunk.length; k++) {
 22044          var part = chunk[k];
 22045          if (typeof part === "string") { // String, write as-is.
 22046              for (var l = 0; l < part.length;) {
 22047                  var code = part.charCodeAt(l++);
 22048                  if (0xD800 <= code && code < 0xDC00) { // Decode surrogate
 22049                      var codeTrail = part.charCodeAt(l++);
 22050                      if (0xDC00 <= codeTrail && codeTrail < 0xE000)
 22051                          writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);
 22052                      else
 22053                          throw new Error("Incorrect surrogate pair in "  + this.encodingName + " at chunk " + chunk[0]);
 22054                  }
 22055                  else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)
 22056                      var len = 0xFFF - code + 2;
 22057                      var seq = [];
 22058                      for (var m = 0; m < len; m++)
 22059                          seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.
 22060  
 22061                      writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;
 22062                      this.decodeTableSeq.push(seq);
 22063                  }
 22064                  else
 22065                      writeTable[curAddr++] = code; // Basic char
 22066              }
 22067          } 
 22068          else if (typeof part === "number") { // Integer, meaning increasing sequence starting with prev character.
 22069              var charCode = writeTable[curAddr - 1] + 1;
 22070              for (var l = 0; l < part; l++)
 22071                  writeTable[curAddr++] = charCode++;
 22072          }
 22073          else
 22074              throw new Error("Incorrect type '" + typeof part + "' given in "  + this.encodingName + " at chunk " + chunk[0]);
 22075      }
 22076      if (curAddr > 0xFF)
 22077          throw new Error("Incorrect chunk in "  + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr);
 22078  }
 22079  
 22080  // Encoder helpers
 22081  DBCSCodec.prototype._getEncodeBucket = function(uCode) {
 22082      var high = uCode >> 8; // This could be > 0xFF because of astral characters.
 22083      if (this.encodeTable[high] === undefined)
 22084          this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.
 22085      return this.encodeTable[high];
 22086  }
 22087  
 22088  DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {
 22089      var bucket = this._getEncodeBucket(uCode);
 22090      var low = uCode & 0xFF;
 22091      if (bucket[low] <= SEQ_START)
 22092          this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.
 22093      else if (bucket[low] == UNASSIGNED)
 22094          bucket[low] = dbcsCode;
 22095  }
 22096  
 22097  DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {
 22098      
 22099      // Get the root of character tree according to first character of the sequence.
 22100      var uCode = seq[0];
 22101      var bucket = this._getEncodeBucket(uCode);
 22102      var low = uCode & 0xFF;
 22103  
 22104      var node;
 22105      if (bucket[low] <= SEQ_START) {
 22106          // There's already a sequence with  - use it.
 22107          node = this.encodeTableSeq[SEQ_START-bucket[low]];
 22108      }
 22109      else {
 22110          // There was no sequence object - allocate a new one.
 22111          node = {};
 22112          if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.
 22113          bucket[low] = SEQ_START - this.encodeTableSeq.length;
 22114          this.encodeTableSeq.push(node);
 22115      }
 22116  
 22117      // Traverse the character tree, allocating new nodes as needed.
 22118      for (var j = 1; j < seq.length-1; j++) {
 22119          var oldVal = node[uCode];
 22120          if (typeof oldVal === 'object')
 22121              node = oldVal;
 22122          else {
 22123              node = node[uCode] = {}
 22124              if (oldVal !== undefined)
 22125                  node[DEF_CHAR] = oldVal
 22126          }
 22127      }
 22128  
 22129      // Set the leaf to given dbcsCode.
 22130      uCode = seq[seq.length-1];
 22131      node[uCode] = dbcsCode;
 22132  }
 22133  
 22134  DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {
 22135      var node = this.decodeTables[nodeIdx];
 22136      var hasValues = false;
 22137      var subNodeEmpty = {};
 22138      for (var i = 0; i < 0x100; i++) {
 22139          var uCode = node[i];
 22140          var mbCode = prefix + i;
 22141          if (skipEncodeChars[mbCode])
 22142              continue;
 22143  
 22144          if (uCode >= 0) {
 22145              this._setEncodeChar(uCode, mbCode);
 22146              hasValues = true;
 22147          } else if (uCode <= NODE_START) {
 22148              var subNodeIdx = NODE_START - uCode;
 22149              if (!subNodeEmpty[subNodeIdx]) {  // Skip empty subtrees (they are too large in gb18030).
 22150                  var newPrefix = (mbCode << 8) >>> 0;  // NOTE: '>>> 0' keeps 32-bit num positive.
 22151                  if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars))
 22152                      hasValues = true;
 22153                  else
 22154                      subNodeEmpty[subNodeIdx] = true;
 22155              }
 22156          } else if (uCode <= SEQ_START) {
 22157              this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);
 22158              hasValues = true;
 22159          }
 22160      }
 22161      return hasValues;
 22162  }
 22163  
 22164  
 22165  
 22166  // == Encoder ==================================================================
 22167  
 22168  function DBCSEncoder(options, codec) {
 22169      // Encoder state
 22170      this.leadSurrogate = -1;
 22171      this.seqObj = undefined;
 22172      
 22173      // Static data
 22174      this.encodeTable = codec.encodeTable;
 22175      this.encodeTableSeq = codec.encodeTableSeq;
 22176      this.defaultCharSingleByte = codec.defCharSB;
 22177      this.gb18030 = codec.gb18030;
 22178  }
 22179  
 22180  DBCSEncoder.prototype.write = function(str) {
 22181      var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),
 22182          leadSurrogate = this.leadSurrogate,
 22183          seqObj = this.seqObj, nextChar = -1,
 22184          i = 0, j = 0;
 22185  
 22186      while (true) {
 22187          // 0. Get next character.
 22188          if (nextChar === -1) {
 22189              if (i == str.length) break;
 22190              var uCode = str.charCodeAt(i++);
 22191          }
 22192          else {
 22193              var uCode = nextChar;
 22194              nextChar = -1;    
 22195          }
 22196  
 22197          // 1. Handle surrogates.
 22198          if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.
 22199              if (uCode < 0xDC00) { // We've got lead surrogate.
 22200                  if (leadSurrogate === -1) {
 22201                      leadSurrogate = uCode;
 22202                      continue;
 22203                  } else {
 22204                      leadSurrogate = uCode;
 22205                      // Double lead surrogate found.
 22206                      uCode = UNASSIGNED;
 22207                  }
 22208              } else { // We've got trail surrogate.
 22209                  if (leadSurrogate !== -1) {
 22210                      uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);
 22211                      leadSurrogate = -1;
 22212                  } else {
 22213                      // Incomplete surrogate pair - only trail surrogate found.
 22214                      uCode = UNASSIGNED;
 22215                  }
 22216                  
 22217              }
 22218          }
 22219          else if (leadSurrogate !== -1) {
 22220              // Incomplete surrogate pair - only lead surrogate found.
 22221              nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.
 22222              leadSurrogate = -1;
 22223          }
 22224  
 22225          // 2. Convert uCode character.
 22226          var dbcsCode = UNASSIGNED;
 22227          if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence
 22228              var resCode = seqObj[uCode];
 22229              if (typeof resCode === 'object') { // Sequence continues.
 22230                  seqObj = resCode;
 22231                  continue;
 22232  
 22233              } else if (typeof resCode == 'number') { // Sequence finished. Write it.
 22234                  dbcsCode = resCode;
 22235  
 22236              } else if (resCode == undefined) { // Current character is not part of the sequence.
 22237  
 22238                  // Try default character for this sequence
 22239                  resCode = seqObj[DEF_CHAR];
 22240                  if (resCode !== undefined) {
 22241                      dbcsCode = resCode; // Found. Write it.
 22242                      nextChar = uCode; // Current character will be written too in the next iteration.
 22243  
 22244                  } else {
 22245                      // TODO: What if we have no default? (resCode == undefined)
 22246                      // Then, we should write first char of the sequence as-is and try the rest recursively.
 22247                      // Didn't do it for now because no encoding has this situation yet.
 22248                      // Currently, just skip the sequence and write current char.
 22249                  }
 22250              }
 22251              seqObj = undefined;
 22252          }
 22253          else if (uCode >= 0) {  // Regular character
 22254              var subtable = this.encodeTable[uCode >> 8];
 22255              if (subtable !== undefined)
 22256                  dbcsCode = subtable[uCode & 0xFF];
 22257              
 22258              if (dbcsCode <= SEQ_START) { // Sequence start
 22259                  seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];
 22260                  continue;
 22261              }
 22262  
 22263              if (dbcsCode == UNASSIGNED && this.gb18030) {
 22264                  // Use GB18030 algorithm to find character(s) to write.
 22265                  var idx = findIdx(this.gb18030.uChars, uCode);
 22266                  if (idx != -1) {
 22267                      var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);
 22268                      newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;
 22269                      newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;
 22270                      newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;
 22271                      newBuf[j++] = 0x30 + dbcsCode;
 22272                      continue;
 22273                  }
 22274              }
 22275          }
 22276  
 22277          // 3. Write dbcsCode character.
 22278          if (dbcsCode === UNASSIGNED)
 22279              dbcsCode = this.defaultCharSingleByte;
 22280          
 22281          if (dbcsCode < 0x100) {
 22282              newBuf[j++] = dbcsCode;
 22283          }
 22284          else if (dbcsCode < 0x10000) {
 22285              newBuf[j++] = dbcsCode >> 8;   // high byte
 22286              newBuf[j++] = dbcsCode & 0xFF; // low byte
 22287          }
 22288          else if (dbcsCode < 0x1000000) {
 22289              newBuf[j++] = dbcsCode >> 16;
 22290              newBuf[j++] = (dbcsCode >> 8) & 0xFF;
 22291              newBuf[j++] = dbcsCode & 0xFF;
 22292          } else {
 22293              newBuf[j++] = dbcsCode >>> 24;
 22294              newBuf[j++] = (dbcsCode >>> 16) & 0xFF;
 22295              newBuf[j++] = (dbcsCode >>> 8) & 0xFF;
 22296              newBuf[j++] = dbcsCode & 0xFF;
 22297          }
 22298      }
 22299  
 22300      this.seqObj = seqObj;
 22301      this.leadSurrogate = leadSurrogate;
 22302      return newBuf.slice(0, j);
 22303  }
 22304  
 22305  DBCSEncoder.prototype.end = function() {
 22306      if (this.leadSurrogate === -1 && this.seqObj === undefined)
 22307          return; // All clean. Most often case.
 22308  
 22309      var newBuf = Buffer.alloc(10), j = 0;
 22310  
 22311      if (this.seqObj) { // We're in the sequence.
 22312          var dbcsCode = this.seqObj[DEF_CHAR];
 22313          if (dbcsCode !== undefined) { // Write beginning of the sequence.
 22314              if (dbcsCode < 0x100) {
 22315                  newBuf[j++] = dbcsCode;
 22316              }
 22317              else {
 22318                  newBuf[j++] = dbcsCode >> 8;   // high byte
 22319                  newBuf[j++] = dbcsCode & 0xFF; // low byte
 22320              }
 22321          } else {
 22322              // See todo above.
 22323          }
 22324          this.seqObj = undefined;
 22325      }
 22326  
 22327      if (this.leadSurrogate !== -1) {
 22328          // Incomplete surrogate pair - only lead surrogate found.
 22329          newBuf[j++] = this.defaultCharSingleByte;
 22330          this.leadSurrogate = -1;
 22331      }
 22332      
 22333      return newBuf.slice(0, j);
 22334  }
 22335  
 22336  // Export for testing
 22337  DBCSEncoder.prototype.findIdx = findIdx;
 22338  
 22339  
 22340  // == Decoder ==================================================================
 22341  
 22342  function DBCSDecoder(options, codec) {
 22343      // Decoder state
 22344      this.nodeIdx = 0;
 22345      this.prevBytes = [];
 22346  
 22347      // Static data
 22348      this.decodeTables = codec.decodeTables;
 22349      this.decodeTableSeq = codec.decodeTableSeq;
 22350      this.defaultCharUnicode = codec.defaultCharUnicode;
 22351      this.gb18030 = codec.gb18030;
 22352  }
 22353  
 22354  DBCSDecoder.prototype.write = function(buf) {
 22355      var newBuf = Buffer.alloc(buf.length*2),
 22356          nodeIdx = this.nodeIdx, 
 22357          prevBytes = this.prevBytes, prevOffset = this.prevBytes.length,
 22358          seqStart = -this.prevBytes.length, // idx of the start of current parsed sequence.
 22359          uCode;
 22360  
 22361      for (var i = 0, j = 0; i < buf.length; i++) {
 22362          var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset];
 22363  
 22364          // Lookup in current trie node.
 22365          var uCode = this.decodeTables[nodeIdx][curByte];
 22366  
 22367          if (uCode >= 0) { 
 22368              // Normal character, just use it.
 22369          }
 22370          else if (uCode === UNASSIGNED) { // Unknown char.
 22371              // TODO: Callback with seq.
 22372              uCode = this.defaultCharUnicode.charCodeAt(0);
 22373              i = seqStart; // Skip one byte ('i' will be incremented by the for loop) and try to parse again.
 22374          }
 22375          else if (uCode === GB18030_CODE) {
 22376              if (i >= 3) {
 22377                  var ptr = (buf[i-3]-0x81)*12600 + (buf[i-2]-0x30)*1260 + (buf[i-1]-0x81)*10 + (curByte-0x30);
 22378              } else {
 22379                  var ptr = (prevBytes[i-3+prevOffset]-0x81)*12600 + 
 22380                            (((i-2 >= 0) ? buf[i-2] : prevBytes[i-2+prevOffset])-0x30)*1260 + 
 22381                            (((i-1 >= 0) ? buf[i-1] : prevBytes[i-1+prevOffset])-0x81)*10 + 
 22382                            (curByte-0x30);
 22383              }
 22384              var idx = findIdx(this.gb18030.gbChars, ptr);
 22385              uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];
 22386          }
 22387          else if (uCode <= NODE_START) { // Go to next trie node.
 22388              nodeIdx = NODE_START - uCode;
 22389              continue;
 22390          }
 22391          else if (uCode <= SEQ_START) { // Output a sequence of chars.
 22392              var seq = this.decodeTableSeq[SEQ_START - uCode];
 22393              for (var k = 0; k < seq.length - 1; k++) {
 22394                  uCode = seq[k];
 22395                  newBuf[j++] = uCode & 0xFF;
 22396                  newBuf[j++] = uCode >> 8;
 22397              }
 22398              uCode = seq[seq.length-1];
 22399          }
 22400          else
 22401              throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte);
 22402  
 22403          // Write the character to buffer, handling higher planes using surrogate pair.
 22404          if (uCode >= 0x10000) { 
 22405              uCode -= 0x10000;
 22406              var uCodeLead = 0xD800 | (uCode >> 10);
 22407              newBuf[j++] = uCodeLead & 0xFF;
 22408              newBuf[j++] = uCodeLead >> 8;
 22409  
 22410              uCode = 0xDC00 | (uCode & 0x3FF);
 22411          }
 22412          newBuf[j++] = uCode & 0xFF;
 22413          newBuf[j++] = uCode >> 8;
 22414  
 22415          // Reset trie node.
 22416          nodeIdx = 0; seqStart = i+1;
 22417      }
 22418  
 22419      this.nodeIdx = nodeIdx;
 22420      this.prevBytes = (seqStart >= 0)
 22421          ? Array.prototype.slice.call(buf, seqStart)
 22422          : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf));
 22423  
 22424      return newBuf.slice(0, j).toString('ucs2');
 22425  }
 22426  
 22427  DBCSDecoder.prototype.end = function() {
 22428      var ret = '';
 22429  
 22430      // Try to parse all remaining chars.
 22431      while (this.prevBytes.length > 0) {
 22432          // Skip 1 character in the buffer.
 22433          ret += this.defaultCharUnicode;
 22434          var bytesArr = this.prevBytes.slice(1);
 22435  
 22436          // Parse remaining as usual.
 22437          this.prevBytes = [];
 22438          this.nodeIdx = 0;
 22439          if (bytesArr.length > 0)
 22440              ret += this.write(bytesArr);
 22441      }
 22442  
 22443      this.prevBytes = [];
 22444      this.nodeIdx = 0;
 22445      return ret;
 22446  }
 22447  
 22448  // Binary search for GB18030. Returns largest i such that table[i] <= val.
 22449  function findIdx(table, val) {
 22450      if (table[0] > val)
 22451          return -1;
 22452  
 22453      var l = 0, r = table.length;
 22454      while (l < r-1) { // always table[l] <= val < table[r]
 22455          var mid = l + ((r-l+1) >> 1);
 22456          if (table[mid] <= val)
 22457              l = mid;
 22458          else
 22459              r = mid;
 22460      }
 22461      return l;
 22462  }
 22463  
 22464  
 22465  
 22466  /***/ }),
 22467  
 22468  /***/ 91386:
 22469  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 22470  
 22471  "use strict";
 22472  
 22473  
 22474  // Description of supported double byte encodings and aliases.
 22475  // Tables are not require()-d until they are needed to speed up library load.
 22476  // require()-s are direct to support Browserify.
 22477  
 22478  module.exports = {
 22479      
 22480      // == Japanese/ShiftJIS ====================================================
 22481      // All japanese encodings are based on JIS X set of standards:
 22482      // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF.
 22483      // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. 
 22484      //              Has several variations in 1978, 1983, 1990 and 1997.
 22485      // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.
 22486      // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.
 22487      //              2 planes, first is superset of 0208, second - revised 0212.
 22488      //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)
 22489  
 22490      // Byte encodings are:
 22491      //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte
 22492      //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.
 22493      //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.
 22494      //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.
 22495      //               0x00-0x7F       - lower part of 0201
 22496      //               0x8E, 0xA1-0xDF - upper part of 0201
 22497      //               (0xA1-0xFE)x2   - 0208 plane (94x94).
 22498      //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).
 22499      //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.
 22500      //               Used as-is in ISO2022 family.
 22501      //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, 
 22502      //                0201-1976 Roman, 0208-1978, 0208-1983.
 22503      //  * ISO2022-JP-1: Adds esc seq for 0212-1990.
 22504      //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.
 22505      //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.
 22506      //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.
 22507      //
 22508      // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.
 22509      //
 22510      // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html
 22511  
 22512      'shiftjis': {
 22513          type: '_dbcs',
 22514          table: function() { return __nccwpck_require__(27014) },
 22515          encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
 22516          encodeSkipVals: [{from: 0xED40, to: 0xF940}],
 22517      },
 22518      'csshiftjis': 'shiftjis',
 22519      'mskanji': 'shiftjis',
 22520      'sjis': 'shiftjis',
 22521      'windows31j': 'shiftjis',
 22522      'ms31j': 'shiftjis',
 22523      'xsjis': 'shiftjis',
 22524      'windows932': 'shiftjis',
 22525      'ms932': 'shiftjis',
 22526      '932': 'shiftjis',
 22527      'cp932': 'shiftjis',
 22528  
 22529      'eucjp': {
 22530          type: '_dbcs',
 22531          table: function() { return __nccwpck_require__(31532) },
 22532          encodeAdd: {'\u00a5': 0x5C, '\u203E': 0x7E},
 22533      },
 22534  
 22535      // TODO: KDDI extension to Shift_JIS
 22536      // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.
 22537      // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.
 22538  
 22539  
 22540      // == Chinese/GBK ==========================================================
 22541      // http://en.wikipedia.org/wiki/GBK
 22542      // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder
 22543  
 22544      // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936
 22545      'gb2312': 'cp936',
 22546      'gb231280': 'cp936',
 22547      'gb23121980': 'cp936',
 22548      'csgb2312': 'cp936',
 22549      'csiso58gb231280': 'cp936',
 22550      'euccn': 'cp936',
 22551  
 22552      // Microsoft's CP936 is a subset and approximation of GBK.
 22553      'windows936': 'cp936',
 22554      'ms936': 'cp936',
 22555      '936': 'cp936',
 22556      'cp936': {
 22557          type: '_dbcs',
 22558          table: function() { return __nccwpck_require__(13336) },
 22559      },
 22560  
 22561      // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.
 22562      'gbk': {
 22563          type: '_dbcs',
 22564          table: function() { return (__nccwpck_require__(13336).concat)(__nccwpck_require__(44346)) },
 22565      },
 22566      'xgbk': 'gbk',
 22567      'isoir58': 'gbk',
 22568  
 22569      // GB18030 is an algorithmic extension of GBK.
 22570      // Main source: https://www.w3.org/TR/encoding/#gbk-encoder
 22571      // http://icu-project.org/docs/papers/gb18030.html
 22572      // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml
 22573      // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0
 22574      'gb18030': {
 22575          type: '_dbcs',
 22576          table: function() { return (__nccwpck_require__(13336).concat)(__nccwpck_require__(44346)) },
 22577          gb18030: function() { return __nccwpck_require__(83121) },
 22578          encodeSkipVals: [0x80],
 22579          encodeAdd: {'€': 0xA2E3},
 22580      },
 22581  
 22582      'chinese': 'gb18030',
 22583  
 22584  
 22585      // == Korean ===============================================================
 22586      // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.
 22587      'windows949': 'cp949',
 22588      'ms949': 'cp949',
 22589      '949': 'cp949',
 22590      'cp949': {
 22591          type: '_dbcs',
 22592          table: function() { return __nccwpck_require__(77348) },
 22593      },
 22594  
 22595      'cseuckr': 'cp949',
 22596      'csksc56011987': 'cp949',
 22597      'euckr': 'cp949',
 22598      'isoir149': 'cp949',
 22599      'korean': 'cp949',
 22600      'ksc56011987': 'cp949',
 22601      'ksc56011989': 'cp949',
 22602      'ksc5601': 'cp949',
 22603  
 22604  
 22605      // == Big5/Taiwan/Hong Kong ================================================
 22606      // There are lots of tables for Big5 and cp950. Please see the following links for history:
 22607      // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html
 22608      // Variations, in roughly number of defined chars:
 22609      //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
 22610      //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/
 22611      //  * Big5-2003 (Taiwan standard) almost superset of cp950.
 22612      //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.
 22613      //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. 
 22614      //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.
 22615      //    Plus, it has 4 combining sequences.
 22616      //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299
 22617      //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.
 22618      //    Implementations are not consistent within browsers; sometimes labeled as just big5.
 22619      //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.
 22620      //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31
 22621      //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.
 22622      //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt
 22623      //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt
 22624      // 
 22625      // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder
 22626      // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.
 22627  
 22628      'windows950': 'cp950',
 22629      'ms950': 'cp950',
 22630      '950': 'cp950',
 22631      'cp950': {
 22632          type: '_dbcs',
 22633          table: function() { return __nccwpck_require__(74284) },
 22634      },
 22635  
 22636      // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.
 22637      'big5': 'big5hkscs',
 22638      'big5hkscs': {
 22639          type: '_dbcs',
 22640          table: function() { return (__nccwpck_require__(74284).concat)(__nccwpck_require__(63480)) },
 22641          encodeSkipVals: [
 22642              // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of
 22643              // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.
 22644              // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.
 22645              0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,
 22646              0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,
 22647              0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,
 22648              0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,
 22649              0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,
 22650  
 22651              // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345
 22652              0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce,
 22653          ],
 22654      },
 22655  
 22656      'cnbig5': 'big5hkscs',
 22657      'csbig5': 'big5hkscs',
 22658      'xxbig5': 'big5hkscs',
 22659  };
 22660  
 22661  
 22662  /***/ }),
 22663  
 22664  /***/ 82733:
 22665  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 22666  
 22667  "use strict";
 22668  
 22669  
 22670  // Update this array if you add/rename/remove files in this directory.
 22671  // We support Browserify by skipping automatic module discovery and requiring modules directly.
 22672  var modules = [
 22673      __nccwpck_require__(12376),
 22674      __nccwpck_require__(59557),
 22675      __nccwpck_require__(11155),
 22676      __nccwpck_require__(51644),
 22677      __nccwpck_require__(26657),
 22678      __nccwpck_require__(41080),
 22679      __nccwpck_require__(21012),
 22680      __nccwpck_require__(39695),
 22681      __nccwpck_require__(91386),
 22682  ];
 22683  
 22684  // Put all encoding/alias/codec definitions to single object and export it.
 22685  for (var i = 0; i < modules.length; i++) {
 22686      var module = modules[i];
 22687      for (var enc in module)
 22688          if (Object.prototype.hasOwnProperty.call(module, enc))
 22689              exports[enc] = module[enc];
 22690  }
 22691  
 22692  
 22693  /***/ }),
 22694  
 22695  /***/ 12376:
 22696  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 22697  
 22698  "use strict";
 22699  
 22700  var Buffer = (__nccwpck_require__(15118).Buffer);
 22701  
 22702  // Export Node.js internal encodings.
 22703  
 22704  module.exports = {
 22705      // Encodings
 22706      utf8:   { type: "_internal", bomAware: true},
 22707      cesu8:  { type: "_internal", bomAware: true},
 22708      unicode11utf8: "utf8",
 22709  
 22710      ucs2:   { type: "_internal", bomAware: true},
 22711      utf16le: "ucs2",
 22712  
 22713      binary: { type: "_internal" },
 22714      base64: { type: "_internal" },
 22715      hex:    { type: "_internal" },
 22716  
 22717      // Codec.
 22718      _internal: InternalCodec,
 22719  };
 22720  
 22721  //------------------------------------------------------------------------------
 22722  
 22723  function InternalCodec(codecOptions, iconv) {
 22724      this.enc = codecOptions.encodingName;
 22725      this.bomAware = codecOptions.bomAware;
 22726  
 22727      if (this.enc === "base64")
 22728          this.encoder = InternalEncoderBase64;
 22729      else if (this.enc === "cesu8") {
 22730          this.enc = "utf8"; // Use utf8 for decoding.
 22731          this.encoder = InternalEncoderCesu8;
 22732  
 22733          // Add decoder for versions of Node not supporting CESU-8
 22734          if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '💩') {
 22735              this.decoder = InternalDecoderCesu8;
 22736              this.defaultCharUnicode = iconv.defaultCharUnicode;
 22737          }
 22738      }
 22739  }
 22740  
 22741  InternalCodec.prototype.encoder = InternalEncoder;
 22742  InternalCodec.prototype.decoder = InternalDecoder;
 22743  
 22744  //------------------------------------------------------------------------------
 22745  
 22746  // We use node.js internal decoder. Its signature is the same as ours.
 22747  var StringDecoder = (__nccwpck_require__(71576).StringDecoder);
 22748  
 22749  if (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.
 22750      StringDecoder.prototype.end = function() {};
 22751  
 22752  
 22753  function InternalDecoder(options, codec) {
 22754      this.decoder = new StringDecoder(codec.enc);
 22755  }
 22756  
 22757  InternalDecoder.prototype.write = function(buf) {
 22758      if (!Buffer.isBuffer(buf)) {
 22759          buf = Buffer.from(buf);
 22760      }
 22761  
 22762      return this.decoder.write(buf);
 22763  }
 22764  
 22765  InternalDecoder.prototype.end = function() {
 22766      return this.decoder.end();
 22767  }
 22768  
 22769  
 22770  //------------------------------------------------------------------------------
 22771  // Encoder is mostly trivial
 22772  
 22773  function InternalEncoder(options, codec) {
 22774      this.enc = codec.enc;
 22775  }
 22776  
 22777  InternalEncoder.prototype.write = function(str) {
 22778      return Buffer.from(str, this.enc);
 22779  }
 22780  
 22781  InternalEncoder.prototype.end = function() {
 22782  }
 22783  
 22784  
 22785  //------------------------------------------------------------------------------
 22786  // Except base64 encoder, which must keep its state.
 22787  
 22788  function InternalEncoderBase64(options, codec) {
 22789      this.prevStr = '';
 22790  }
 22791  
 22792  InternalEncoderBase64.prototype.write = function(str) {
 22793      str = this.prevStr + str;
 22794      var completeQuads = str.length - (str.length % 4);
 22795      this.prevStr = str.slice(completeQuads);
 22796      str = str.slice(0, completeQuads);
 22797  
 22798      return Buffer.from(str, "base64");
 22799  }
 22800  
 22801  InternalEncoderBase64.prototype.end = function() {
 22802      return Buffer.from(this.prevStr, "base64");
 22803  }
 22804  
 22805  
 22806  //------------------------------------------------------------------------------
 22807  // CESU-8 encoder is also special.
 22808  
 22809  function InternalEncoderCesu8(options, codec) {
 22810  }
 22811  
 22812  InternalEncoderCesu8.prototype.write = function(str) {
 22813      var buf = Buffer.alloc(str.length * 3), bufIdx = 0;
 22814      for (var i = 0; i < str.length; i++) {
 22815          var charCode = str.charCodeAt(i);
 22816          // Naive implementation, but it works because CESU-8 is especially easy
 22817          // to convert from UTF-16 (which all JS strings are encoded in).
 22818          if (charCode < 0x80)
 22819              buf[bufIdx++] = charCode;
 22820          else if (charCode < 0x800) {
 22821              buf[bufIdx++] = 0xC0 + (charCode >>> 6);
 22822              buf[bufIdx++] = 0x80 + (charCode & 0x3f);
 22823          }
 22824          else { // charCode will always be < 0x10000 in javascript.
 22825              buf[bufIdx++] = 0xE0 + (charCode >>> 12);
 22826              buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);
 22827              buf[bufIdx++] = 0x80 + (charCode & 0x3f);
 22828          }
 22829      }
 22830      return buf.slice(0, bufIdx);
 22831  }
 22832  
 22833  InternalEncoderCesu8.prototype.end = function() {
 22834  }
 22835  
 22836  //------------------------------------------------------------------------------
 22837  // CESU-8 decoder is not implemented in Node v4.0+
 22838  
 22839  function InternalDecoderCesu8(options, codec) {
 22840      this.acc = 0;
 22841      this.contBytes = 0;
 22842      this.accBytes = 0;
 22843      this.defaultCharUnicode = codec.defaultCharUnicode;
 22844  }
 22845  
 22846  InternalDecoderCesu8.prototype.write = function(buf) {
 22847      var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, 
 22848          res = '';
 22849      for (var i = 0; i < buf.length; i++) {
 22850          var curByte = buf[i];
 22851          if ((curByte & 0xC0) !== 0x80) { // Leading byte
 22852              if (contBytes > 0) { // Previous code is invalid
 22853                  res += this.defaultCharUnicode;
 22854                  contBytes = 0;
 22855              }
 22856  
 22857              if (curByte < 0x80) { // Single-byte code
 22858                  res += String.fromCharCode(curByte);
 22859              } else if (curByte < 0xE0) { // Two-byte code
 22860                  acc = curByte & 0x1F;
 22861                  contBytes = 1; accBytes = 1;
 22862              } else if (curByte < 0xF0) { // Three-byte code
 22863                  acc = curByte & 0x0F;
 22864                  contBytes = 2; accBytes = 1;
 22865              } else { // Four or more are not supported for CESU-8.
 22866                  res += this.defaultCharUnicode;
 22867              }
 22868          } else { // Continuation byte
 22869              if (contBytes > 0) { // We're waiting for it.
 22870                  acc = (acc << 6) | (curByte & 0x3f);
 22871                  contBytes--; accBytes++;
 22872                  if (contBytes === 0) {
 22873                      // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)
 22874                      if (accBytes === 2 && acc < 0x80 && acc > 0)
 22875                          res += this.defaultCharUnicode;
 22876                      else if (accBytes === 3 && acc < 0x800)
 22877                          res += this.defaultCharUnicode;
 22878                      else
 22879                          // Actually add character.
 22880                          res += String.fromCharCode(acc);
 22881                  }
 22882              } else { // Unexpected continuation byte
 22883                  res += this.defaultCharUnicode;
 22884              }
 22885          }
 22886      }
 22887      this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;
 22888      return res;
 22889  }
 22890  
 22891  InternalDecoderCesu8.prototype.end = function() {
 22892      var res = 0;
 22893      if (this.contBytes > 0)
 22894          res += this.defaultCharUnicode;
 22895      return res;
 22896  }
 22897  
 22898  
 22899  /***/ }),
 22900  
 22901  /***/ 26657:
 22902  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 22903  
 22904  "use strict";
 22905  
 22906  var Buffer = (__nccwpck_require__(15118).Buffer);
 22907  
 22908  // Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that
 22909  // correspond to encoded bytes (if 128 - then lower half is ASCII). 
 22910  
 22911  exports._sbcs = SBCSCodec;
 22912  function SBCSCodec(codecOptions, iconv) {
 22913      if (!codecOptions)
 22914          throw new Error("SBCS codec is called without the data.")
 22915      
 22916      // Prepare char buffer for decoding.
 22917      if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))
 22918          throw new Error("Encoding '"+codecOptions.type+"' has incorrect 'chars' (must be of len 128 or 256)");
 22919      
 22920      if (codecOptions.chars.length === 128) {
 22921          var asciiString = "";
 22922          for (var i = 0; i < 128; i++)
 22923              asciiString += String.fromCharCode(i);
 22924          codecOptions.chars = asciiString + codecOptions.chars;
 22925      }
 22926  
 22927      this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');
 22928      
 22929      // Encoding buffer.
 22930      var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));
 22931  
 22932      for (var i = 0; i < codecOptions.chars.length; i++)
 22933          encodeBuf[codecOptions.chars.charCodeAt(i)] = i;
 22934  
 22935      this.encodeBuf = encodeBuf;
 22936  }
 22937  
 22938  SBCSCodec.prototype.encoder = SBCSEncoder;
 22939  SBCSCodec.prototype.decoder = SBCSDecoder;
 22940  
 22941  
 22942  function SBCSEncoder(options, codec) {
 22943      this.encodeBuf = codec.encodeBuf;
 22944  }
 22945  
 22946  SBCSEncoder.prototype.write = function(str) {
 22947      var buf = Buffer.alloc(str.length);
 22948      for (var i = 0; i < str.length; i++)
 22949          buf[i] = this.encodeBuf[str.charCodeAt(i)];
 22950      
 22951      return buf;
 22952  }
 22953  
 22954  SBCSEncoder.prototype.end = function() {
 22955  }
 22956  
 22957  
 22958  function SBCSDecoder(options, codec) {
 22959      this.decodeBuf = codec.decodeBuf;
 22960  }
 22961  
 22962  SBCSDecoder.prototype.write = function(buf) {
 22963      // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.
 22964      var decodeBuf = this.decodeBuf;
 22965      var newBuf = Buffer.alloc(buf.length*2);
 22966      var idx1 = 0, idx2 = 0;
 22967      for (var i = 0; i < buf.length; i++) {
 22968          idx1 = buf[i]*2; idx2 = i*2;
 22969          newBuf[idx2] = decodeBuf[idx1];
 22970          newBuf[idx2+1] = decodeBuf[idx1+1];
 22971      }
 22972      return newBuf.toString('ucs2');
 22973  }
 22974  
 22975  SBCSDecoder.prototype.end = function() {
 22976  }
 22977  
 22978  
 22979  /***/ }),
 22980  
 22981  /***/ 21012:
 22982  /***/ ((module) => {
 22983  
 22984  "use strict";
 22985  
 22986  
 22987  // Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.
 22988  module.exports = {
 22989    "437": "cp437",
 22990    "737": "cp737",
 22991    "775": "cp775",
 22992    "850": "cp850",
 22993    "852": "cp852",
 22994    "855": "cp855",
 22995    "856": "cp856",
 22996    "857": "cp857",
 22997    "858": "cp858",
 22998    "860": "cp860",
 22999    "861": "cp861",
 23000    "862": "cp862",
 23001    "863": "cp863",
 23002    "864": "cp864",
 23003    "865": "cp865",
 23004    "866": "cp866",
 23005    "869": "cp869",
 23006    "874": "windows874",
 23007    "922": "cp922",
 23008    "1046": "cp1046",
 23009    "1124": "cp1124",
 23010    "1125": "cp1125",
 23011    "1129": "cp1129",
 23012    "1133": "cp1133",
 23013    "1161": "cp1161",
 23014    "1162": "cp1162",
 23015    "1163": "cp1163",
 23016    "1250": "windows1250",
 23017    "1251": "windows1251",
 23018    "1252": "windows1252",
 23019    "1253": "windows1253",
 23020    "1254": "windows1254",
 23021    "1255": "windows1255",
 23022    "1256": "windows1256",
 23023    "1257": "windows1257",
 23024    "1258": "windows1258",
 23025    "28591": "iso88591",
 23026    "28592": "iso88592",
 23027    "28593": "iso88593",
 23028    "28594": "iso88594",
 23029    "28595": "iso88595",
 23030    "28596": "iso88596",
 23031    "28597": "iso88597",
 23032    "28598": "iso88598",
 23033    "28599": "iso88599",
 23034    "28600": "iso885910",
 23035    "28601": "iso885911",
 23036    "28603": "iso885913",
 23037    "28604": "iso885914",
 23038    "28605": "iso885915",
 23039    "28606": "iso885916",
 23040    "windows874": {
 23041      "type": "_sbcs",
 23042      "chars": "€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
 23043    },
 23044    "win874": "windows874",
 23045    "cp874": "windows874",
 23046    "windows1250": {
 23047      "type": "_sbcs",
 23048      "chars": "€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
 23049    },
 23050    "win1250": "windows1250",
 23051    "cp1250": "windows1250",
 23052    "windows1251": {
 23053      "type": "_sbcs",
 23054      "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
 23055    },
 23056    "win1251": "windows1251",
 23057    "cp1251": "windows1251",
 23058    "windows1252": {
 23059      "type": "_sbcs",
 23060      "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
 23061    },
 23062    "win1252": "windows1252",
 23063    "cp1252": "windows1252",
 23064    "windows1253": {
 23065      "type": "_sbcs",
 23066      "chars": "€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"
 23067    },
 23068    "win1253": "windows1253",
 23069    "cp1253": "windows1253",
 23070    "windows1254": {
 23071      "type": "_sbcs",
 23072      "chars": "€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
 23073    },
 23074    "win1254": "windows1254",
 23075    "cp1254": "windows1254",
 23076    "windows1255": {
 23077      "type": "_sbcs",
 23078      "chars": "€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹֺֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"
 23079    },
 23080    "win1255": "windows1255",
 23081    "cp1255": "windows1255",
 23082    "windows1256": {
 23083      "type": "_sbcs",
 23084      "chars": "€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے"
 23085    },
 23086    "win1256": "windows1256",
 23087    "cp1256": "windows1256",
 23088    "windows1257": {
 23089      "type": "_sbcs",
 23090      "chars": "€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙"
 23091    },
 23092    "win1257": "windows1257",
 23093    "cp1257": "windows1257",
 23094    "windows1258": {
 23095      "type": "_sbcs",
 23096      "chars": "€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
 23097    },
 23098    "win1258": "windows1258",
 23099    "cp1258": "windows1258",
 23100    "iso88591": {
 23101      "type": "_sbcs",
 23102      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
 23103    },
 23104    "cp28591": "iso88591",
 23105    "iso88592": {
 23106      "type": "_sbcs",
 23107      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙"
 23108    },
 23109    "cp28592": "iso88592",
 23110    "iso88593": {
 23111      "type": "_sbcs",
 23112      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�ݰħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙"
 23113    },
 23114    "cp28593": "iso88593",
 23115    "iso88594": {
 23116      "type": "_sbcs",
 23117      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤Ĩϧ¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩšēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖרŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙"
 23118    },
 23119    "cp28594": "iso88594",
 23120    "iso88595": {
 23121      "type": "_sbcs",
 23122      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ"
 23123    },
 23124    "cp28595": "iso88595",
 23125    "iso88596": {
 23126      "type": "_sbcs",
 23127      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������"
 23128    },
 23129    "cp28596": "iso88596",
 23130    "iso88597": {
 23131      "type": "_sbcs",
 23132      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�"
 23133    },
 23134    "cp28597": "iso88597",
 23135    "iso88598": {
 23136      "type": "_sbcs",
 23137      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�"
 23138    },
 23139    "cp28598": "iso88598",
 23140    "iso88599": {
 23141      "type": "_sbcs",
 23142      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖרÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ"
 23143    },
 23144    "cp28599": "iso88599",
 23145    "iso885910": {
 23146      "type": "_sbcs",
 23147      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨͧĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ"
 23148    },
 23149    "cp28600": "iso885910",
 23150    "iso885911": {
 23151      "type": "_sbcs",
 23152      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
 23153    },
 23154    "cp28601": "iso885911",
 23155    "iso885913": {
 23156      "type": "_sbcs",
 23157      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’"
 23158    },
 23159    "cp28603": "iso885913",
 23160    "iso885914": {
 23161      "type": "_sbcs",
 23162      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ"
 23163    },
 23164    "cp28604": "iso885914",
 23165    "iso885915": {
 23166      "type": "_sbcs",
 23167      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
 23168    },
 23169    "cp28605": "iso885915",
 23170    "iso885916": {
 23171      "type": "_sbcs",
 23172      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ"
 23173    },
 23174    "cp28606": "iso885916",
 23175    "cp437": {
 23176      "type": "_sbcs",
 23177      "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
 23178    },
 23179    "ibm437": "cp437",
 23180    "csibm437": "cp437",
 23181    "cp737": {
 23182      "type": "_sbcs",
 23183      "chars": "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ "
 23184    },
 23185    "ibm737": "cp737",
 23186    "csibm737": "cp737",
 23187    "cp775": {
 23188      "type": "_sbcs",
 23189      "chars": "ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ "
 23190    },
 23191    "ibm775": "cp775",
 23192    "csibm775": "cp775",
 23193    "cp850": {
 23194      "type": "_sbcs",
 23195      "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ "
 23196    },
 23197    "ibm850": "cp850",
 23198    "csibm850": "cp850",
 23199    "cp852": {
 23200      "type": "_sbcs",
 23201      "chars": "ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ "
 23202    },
 23203    "ibm852": "cp852",
 23204    "csibm852": "cp852",
 23205    "cp855": {
 23206      "type": "_sbcs",
 23207      "chars": "ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ "
 23208    },
 23209    "ibm855": "cp855",
 23210    "csibm855": "cp855",
 23211    "cp856": {
 23212      "type": "_sbcs",
 23213      "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת�£�×����������®¬½¼�«»░▒▓│┤���©╣║╗╝¢¥┐└┴┬├─┼��╚╔╩╦╠═╬¤���������┘┌█▄¦�▀������µ�������¯´­±‗¾¶§÷¸°¨·¹³²■ "
 23214    },
 23215    "ibm856": "cp856",
 23216    "csibm856": "cp856",
 23217    "cp857": {
 23218      "type": "_sbcs",
 23219      "chars": "ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ "
 23220    },
 23221    "ibm857": "cp857",
 23222    "csibm857": "cp857",
 23223    "cp858": {
 23224      "type": "_sbcs",
 23225      "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ "
 23226    },
 23227    "ibm858": "cp858",
 23228    "csibm858": "cp858",
 23229    "cp860": {
 23230      "type": "_sbcs",
 23231      "chars": "ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
 23232    },
 23233    "ibm860": "cp860",
 23234    "csibm860": "cp860",
 23235    "cp861": {
 23236      "type": "_sbcs",
 23237      "chars": "ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
 23238    },
 23239    "ibm861": "cp861",
 23240    "csibm861": "cp861",
 23241    "cp862": {
 23242      "type": "_sbcs",
 23243      "chars": "אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
 23244    },
 23245    "ibm862": "cp862",
 23246    "csibm862": "cp862",
 23247    "cp863": {
 23248      "type": "_sbcs",
 23249      "chars": "ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
 23250    },
 23251    "ibm863": "cp863",
 23252    "csibm863": "cp863",
 23253    "cp864": {
 23254      "type": "_sbcs",
 23255      "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"
 23256    },
 23257    "ibm864": "cp864",
 23258    "csibm864": "cp864",
 23259    "cp865": {
 23260      "type": "_sbcs",
 23261      "chars": "ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
 23262    },
 23263    "ibm865": "cp865",
 23264    "csibm865": "cp865",
 23265    "cp866": {
 23266      "type": "_sbcs",
 23267      "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "
 23268    },
 23269    "ibm866": "cp866",
 23270    "csibm866": "cp866",
 23271    "cp869": {
 23272      "type": "_sbcs",
 23273      "chars": "������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "
 23274    },
 23275    "ibm869": "cp869",
 23276    "csibm869": "cp869",
 23277    "cp922": {
 23278      "type": "_sbcs",
 23279      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"
 23280    },
 23281    "ibm922": "cp922",
 23282    "csibm922": "cp922",
 23283    "cp1046": {
 23284      "type": "_sbcs",
 23285      "chars": "ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"
 23286    },
 23287    "ibm1046": "cp1046",
 23288    "csibm1046": "cp1046",
 23289    "cp1124": {
 23290      "type": "_sbcs",
 23291      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"
 23292    },
 23293    "ibm1124": "cp1124",
 23294    "csibm1124": "cp1124",
 23295    "cp1125": {
 23296      "type": "_sbcs",
 23297      "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "
 23298    },
 23299    "ibm1125": "cp1125",
 23300    "csibm1125": "cp1125",
 23301    "cp1129": {
 23302      "type": "_sbcs",
 23303      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
 23304    },
 23305    "ibm1129": "cp1129",
 23306    "csibm1129": "cp1129",
 23307    "cp1133": {
 23308      "type": "_sbcs",
 23309      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"
 23310    },
 23311    "ibm1133": "cp1133",
 23312    "csibm1133": "cp1133",
 23313    "cp1161": {
 23314      "type": "_sbcs",
 23315      "chars": "��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "
 23316    },
 23317    "ibm1161": "cp1161",
 23318    "csibm1161": "cp1161",
 23319    "cp1162": {
 23320      "type": "_sbcs",
 23321      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
 23322    },
 23323    "ibm1162": "cp1162",
 23324    "csibm1162": "cp1162",
 23325    "cp1163": {
 23326      "type": "_sbcs",
 23327      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"
 23328    },
 23329    "ibm1163": "cp1163",
 23330    "csibm1163": "cp1163",
 23331    "maccroatian": {
 23332      "type": "_sbcs",
 23333      "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"
 23334    },
 23335    "maccyrillic": {
 23336      "type": "_sbcs",
 23337      "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
 23338    },
 23339    "macgreek": {
 23340      "type": "_sbcs",
 23341      "chars": "Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"
 23342    },
 23343    "maciceland": {
 23344      "type": "_sbcs",
 23345      "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
 23346    },
 23347    "macroman": {
 23348      "type": "_sbcs",
 23349      "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
 23350    },
 23351    "macromania": {
 23352      "type": "_sbcs",
 23353      "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
 23354    },
 23355    "macthai": {
 23356      "type": "_sbcs",
 23357      "chars": "«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"
 23358    },
 23359    "macturkish": {
 23360      "type": "_sbcs",
 23361      "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"
 23362    },
 23363    "macukraine": {
 23364      "type": "_sbcs",
 23365      "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"
 23366    },
 23367    "koi8r": {
 23368      "type": "_sbcs",
 23369      "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
 23370    },
 23371    "koi8u": {
 23372      "type": "_sbcs",
 23373      "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
 23374    },
 23375    "koi8ru": {
 23376      "type": "_sbcs",
 23377      "chars": "─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
 23378    },
 23379    "koi8t": {
 23380      "type": "_sbcs",
 23381      "chars": "қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
 23382    },
 23383    "armscii8": {
 23384      "type": "_sbcs",
 23385      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"
 23386    },
 23387    "rk1048": {
 23388      "type": "_sbcs",
 23389      "chars": "ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
 23390    },
 23391    "tcvn": {
 23392      "type": "_sbcs",
 23393      "chars": "\u0000ÚỤ\u0003ỪỬỮ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010ỨỰỲỶỸÝỴ\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"
 23394    },
 23395    "georgianacademy": {
 23396      "type": "_sbcs",
 23397      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
 23398    },
 23399    "georgianps": {
 23400      "type": "_sbcs",
 23401      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"
 23402    },
 23403    "pt154": {
 23404      "type": "_sbcs",
 23405      "chars": "ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"
 23406    },
 23407    "viscii": {
 23408      "type": "_sbcs",
 23409      "chars": "\u0000\u0001Ẳ\u0003\u0004ẴẪ\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013Ỷ\u0015\u0016\u0017\u0018Ỹ\u001a\u001b\u001c\u001dỴ\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"
 23410    },
 23411    "iso646cn": {
 23412      "type": "_sbcs",
 23413      "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"
 23414    },
 23415    "iso646jp": {
 23416      "type": "_sbcs",
 23417      "chars": "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"
 23418    },
 23419    "hproman8": {
 23420      "type": "_sbcs",
 23421      "chars": "€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"
 23422    },
 23423    "macintosh": {
 23424      "type": "_sbcs",
 23425      "chars": "ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"
 23426    },
 23427    "ascii": {
 23428      "type": "_sbcs",
 23429      "chars": "��������������������������������������������������������������������������������������������������������������������������������"
 23430    },
 23431    "tis620": {
 23432      "type": "_sbcs",
 23433      "chars": "���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"
 23434    }
 23435  }
 23436  
 23437  /***/ }),
 23438  
 23439  /***/ 41080:
 23440  /***/ ((module) => {
 23441  
 23442  "use strict";
 23443  
 23444  
 23445  // Manually added data to be used by sbcs codec in addition to generated one.
 23446  
 23447  module.exports = {
 23448      // Not supported by iconv, not sure why.
 23449      "10029": "maccenteuro",
 23450      "maccenteuro": {
 23451          "type": "_sbcs",
 23452          "chars": "ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ"
 23453      },
 23454  
 23455      "808": "cp808",
 23456      "ibm808": "cp808",
 23457      "cp808": {
 23458          "type": "_sbcs",
 23459          "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ "
 23460      },
 23461  
 23462      "mik": {
 23463          "type": "_sbcs",
 23464          "chars": "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя└┴┬├─┼╣║╚╔╩╦╠═╬┐░▒▓│┤№§╗╝┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "
 23465      },
 23466  
 23467      "cp720": {
 23468          "type": "_sbcs",
 23469          "chars": "\x80\x81éâ\x84à\x86çêëèïî\x8d\x8e\x8f\x90\u0651\u0652ô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡\u064b\u064c\u064d\u064e\u064f\u0650≈°∙·√ⁿ²■\u00a0"
 23470      },
 23471  
 23472      // Aliases of generated encodings.
 23473      "ascii8bit": "ascii",
 23474      "usascii": "ascii",
 23475      "ansix34": "ascii",
 23476      "ansix341968": "ascii",
 23477      "ansix341986": "ascii",
 23478      "csascii": "ascii",
 23479      "cp367": "ascii",
 23480      "ibm367": "ascii",
 23481      "isoir6": "ascii",
 23482      "iso646us": "ascii",
 23483      "iso646irv": "ascii",
 23484      "us": "ascii",
 23485  
 23486      "latin1": "iso88591",
 23487      "latin2": "iso88592",
 23488      "latin3": "iso88593",
 23489      "latin4": "iso88594",
 23490      "latin5": "iso88599",
 23491      "latin6": "iso885910",
 23492      "latin7": "iso885913",
 23493      "latin8": "iso885914",
 23494      "latin9": "iso885915",
 23495      "latin10": "iso885916",
 23496  
 23497      "csisolatin1": "iso88591",
 23498      "csisolatin2": "iso88592",
 23499      "csisolatin3": "iso88593",
 23500      "csisolatin4": "iso88594",
 23501      "csisolatincyrillic": "iso88595",
 23502      "csisolatinarabic": "iso88596",
 23503      "csisolatingreek" : "iso88597",
 23504      "csisolatinhebrew": "iso88598",
 23505      "csisolatin5": "iso88599",
 23506      "csisolatin6": "iso885910",
 23507  
 23508      "l1": "iso88591",
 23509      "l2": "iso88592",
 23510      "l3": "iso88593",
 23511      "l4": "iso88594",
 23512      "l5": "iso88599",
 23513      "l6": "iso885910",
 23514      "l7": "iso885913",
 23515      "l8": "iso885914",
 23516      "l9": "iso885915",
 23517      "l10": "iso885916",
 23518  
 23519      "isoir14": "iso646jp",
 23520      "isoir57": "iso646cn",
 23521      "isoir100": "iso88591",
 23522      "isoir101": "iso88592",
 23523      "isoir109": "iso88593",
 23524      "isoir110": "iso88594",
 23525      "isoir144": "iso88595",
 23526      "isoir127": "iso88596",
 23527      "isoir126": "iso88597",
 23528      "isoir138": "iso88598",
 23529      "isoir148": "iso88599",
 23530      "isoir157": "iso885910",
 23531      "isoir166": "tis620",
 23532      "isoir179": "iso885913",
 23533      "isoir199": "iso885914",
 23534      "isoir203": "iso885915",
 23535      "isoir226": "iso885916",
 23536  
 23537      "cp819": "iso88591",
 23538      "ibm819": "iso88591",
 23539  
 23540      "cyrillic": "iso88595",
 23541  
 23542      "arabic": "iso88596",
 23543      "arabic8": "iso88596",
 23544      "ecma114": "iso88596",
 23545      "asmo708": "iso88596",
 23546  
 23547      "greek" : "iso88597",
 23548      "greek8" : "iso88597",
 23549      "ecma118" : "iso88597",
 23550      "elot928" : "iso88597",
 23551  
 23552      "hebrew": "iso88598",
 23553      "hebrew8": "iso88598",
 23554  
 23555      "turkish": "iso88599",
 23556      "turkish8": "iso88599",
 23557  
 23558      "thai": "iso885911",
 23559      "thai8": "iso885911",
 23560  
 23561      "celtic": "iso885914",
 23562      "celtic8": "iso885914",
 23563      "isoceltic": "iso885914",
 23564  
 23565      "tis6200": "tis620",
 23566      "tis62025291": "tis620",
 23567      "tis62025330": "tis620",
 23568  
 23569      "10000": "macroman",
 23570      "10006": "macgreek",
 23571      "10007": "maccyrillic",
 23572      "10079": "maciceland",
 23573      "10081": "macturkish",
 23574  
 23575      "cspc8codepage437": "cp437",
 23576      "cspc775baltic": "cp775",
 23577      "cspc850multilingual": "cp850",
 23578      "cspcp852": "cp852",
 23579      "cspc862latinhebrew": "cp862",
 23580      "cpgr": "cp869",
 23581  
 23582      "msee": "cp1250",
 23583      "mscyrl": "cp1251",
 23584      "msansi": "cp1252",
 23585      "msgreek": "cp1253",
 23586      "msturk": "cp1254",
 23587      "mshebr": "cp1255",
 23588      "msarab": "cp1256",
 23589      "winbaltrim": "cp1257",
 23590  
 23591      "cp20866": "koi8r",
 23592      "20866": "koi8r",
 23593      "ibm878": "koi8r",
 23594      "cskoi8r": "koi8r",
 23595  
 23596      "cp21866": "koi8u",
 23597      "21866": "koi8u",
 23598      "ibm1168": "koi8u",
 23599  
 23600      "strk10482002": "rk1048",
 23601  
 23602      "tcvn5712": "tcvn",
 23603      "tcvn57121": "tcvn",
 23604  
 23605      "gb198880": "iso646cn",
 23606      "cn": "iso646cn",
 23607  
 23608      "csiso14jisc6220ro": "iso646jp",
 23609      "jisc62201969ro": "iso646jp",
 23610      "jp": "iso646jp",
 23611  
 23612      "cshproman8": "hproman8",
 23613      "r8": "hproman8",
 23614      "roman8": "hproman8",
 23615      "xroman8": "hproman8",
 23616      "ibm1051": "hproman8",
 23617  
 23618      "mac": "macintosh",
 23619      "csmacintosh": "macintosh",
 23620  };
 23621  
 23622  
 23623  
 23624  /***/ }),
 23625  
 23626  /***/ 11155:
 23627  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 23628  
 23629  "use strict";
 23630  
 23631  var Buffer = (__nccwpck_require__(15118).Buffer);
 23632  
 23633  // Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js
 23634  
 23635  // == UTF16-BE codec. ==========================================================
 23636  
 23637  exports.utf16be = Utf16BECodec;
 23638  function Utf16BECodec() {
 23639  }
 23640  
 23641  Utf16BECodec.prototype.encoder = Utf16BEEncoder;
 23642  Utf16BECodec.prototype.decoder = Utf16BEDecoder;
 23643  Utf16BECodec.prototype.bomAware = true;
 23644  
 23645  
 23646  // -- Encoding
 23647  
 23648  function Utf16BEEncoder() {
 23649  }
 23650  
 23651  Utf16BEEncoder.prototype.write = function(str) {
 23652      var buf = Buffer.from(str, 'ucs2');
 23653      for (var i = 0; i < buf.length; i += 2) {
 23654          var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;
 23655      }
 23656      return buf;
 23657  }
 23658  
 23659  Utf16BEEncoder.prototype.end = function() {
 23660  }
 23661  
 23662  
 23663  // -- Decoding
 23664  
 23665  function Utf16BEDecoder() {
 23666      this.overflowByte = -1;
 23667  }
 23668  
 23669  Utf16BEDecoder.prototype.write = function(buf) {
 23670      if (buf.length == 0)
 23671          return '';
 23672  
 23673      var buf2 = Buffer.alloc(buf.length + 1),
 23674          i = 0, j = 0;
 23675  
 23676      if (this.overflowByte !== -1) {
 23677          buf2[0] = buf[0];
 23678          buf2[1] = this.overflowByte;
 23679          i = 1; j = 2;
 23680      }
 23681  
 23682      for (; i < buf.length-1; i += 2, j+= 2) {
 23683          buf2[j] = buf[i+1];
 23684          buf2[j+1] = buf[i];
 23685      }
 23686  
 23687      this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;
 23688  
 23689      return buf2.slice(0, j).toString('ucs2');
 23690  }
 23691  
 23692  Utf16BEDecoder.prototype.end = function() {
 23693      this.overflowByte = -1;
 23694  }
 23695  
 23696  
 23697  // == UTF-16 codec =============================================================
 23698  // Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.
 23699  // Defaults to UTF-16LE, as it's prevalent and default in Node.
 23700  // http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le
 23701  // Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});
 23702  
 23703  // Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).
 23704  
 23705  exports.utf16 = Utf16Codec;
 23706  function Utf16Codec(codecOptions, iconv) {
 23707      this.iconv = iconv;
 23708  }
 23709  
 23710  Utf16Codec.prototype.encoder = Utf16Encoder;
 23711  Utf16Codec.prototype.decoder = Utf16Decoder;
 23712  
 23713  
 23714  // -- Encoding (pass-through)
 23715  
 23716  function Utf16Encoder(options, codec) {
 23717      options = options || {};
 23718      if (options.addBOM === undefined)
 23719          options.addBOM = true;
 23720      this.encoder = codec.iconv.getEncoder('utf-16le', options);
 23721  }
 23722  
 23723  Utf16Encoder.prototype.write = function(str) {
 23724      return this.encoder.write(str);
 23725  }
 23726  
 23727  Utf16Encoder.prototype.end = function() {
 23728      return this.encoder.end();
 23729  }
 23730  
 23731  
 23732  // -- Decoding
 23733  
 23734  function Utf16Decoder(options, codec) {
 23735      this.decoder = null;
 23736      this.initialBufs = [];
 23737      this.initialBufsLen = 0;
 23738  
 23739      this.options = options || {};
 23740      this.iconv = codec.iconv;
 23741  }
 23742  
 23743  Utf16Decoder.prototype.write = function(buf) {
 23744      if (!this.decoder) {
 23745          // Codec is not chosen yet. Accumulate initial bytes.
 23746          this.initialBufs.push(buf);
 23747          this.initialBufsLen += buf.length;
 23748          
 23749          if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)
 23750              return '';
 23751  
 23752          // We have enough bytes -> detect endianness.
 23753          var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
 23754          this.decoder = this.iconv.getDecoder(encoding, this.options);
 23755  
 23756          var resStr = '';
 23757          for (var i = 0; i < this.initialBufs.length; i++)
 23758              resStr += this.decoder.write(this.initialBufs[i]);
 23759  
 23760          this.initialBufs.length = this.initialBufsLen = 0;
 23761          return resStr;
 23762      }
 23763  
 23764      return this.decoder.write(buf);
 23765  }
 23766  
 23767  Utf16Decoder.prototype.end = function() {
 23768      if (!this.decoder) {
 23769          var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
 23770          this.decoder = this.iconv.getDecoder(encoding, this.options);
 23771  
 23772          var resStr = '';
 23773          for (var i = 0; i < this.initialBufs.length; i++)
 23774              resStr += this.decoder.write(this.initialBufs[i]);
 23775  
 23776          var trail = this.decoder.end();
 23777          if (trail)
 23778              resStr += trail;
 23779  
 23780          this.initialBufs.length = this.initialBufsLen = 0;
 23781          return resStr;
 23782      }
 23783      return this.decoder.end();
 23784  }
 23785  
 23786  function detectEncoding(bufs, defaultEncoding) {
 23787      var b = [];
 23788      var charsProcessed = 0;
 23789      var asciiCharsLE = 0, asciiCharsBE = 0; // Number of ASCII chars when decoded as LE or BE.
 23790  
 23791      outer_loop:
 23792      for (var i = 0; i < bufs.length; i++) {
 23793          var buf = bufs[i];
 23794          for (var j = 0; j < buf.length; j++) {
 23795              b.push(buf[j]);
 23796              if (b.length === 2) {
 23797                  if (charsProcessed === 0) {
 23798                      // Check BOM first.
 23799                      if (b[0] === 0xFF && b[1] === 0xFE) return 'utf-16le';
 23800                      if (b[0] === 0xFE && b[1] === 0xFF) return 'utf-16be';
 23801                  }
 23802  
 23803                  if (b[0] === 0 && b[1] !== 0) asciiCharsBE++;
 23804                  if (b[0] !== 0 && b[1] === 0) asciiCharsLE++;
 23805  
 23806                  b.length = 0;
 23807                  charsProcessed++;
 23808  
 23809                  if (charsProcessed >= 100) {
 23810                      break outer_loop;
 23811                  }
 23812              }
 23813          }
 23814      }
 23815  
 23816      // Make decisions.
 23817      // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.
 23818      // So, we count ASCII as if it was LE or BE, and decide from that.
 23819      if (asciiCharsBE > asciiCharsLE) return 'utf-16be';
 23820      if (asciiCharsBE < asciiCharsLE) return 'utf-16le';
 23821  
 23822      // Couldn't decide (likely all zeros or not enough data).
 23823      return defaultEncoding || 'utf-16le';
 23824  }
 23825  
 23826  
 23827  
 23828  
 23829  /***/ }),
 23830  
 23831  /***/ 59557:
 23832  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 23833  
 23834  "use strict";
 23835  
 23836  
 23837  var Buffer = (__nccwpck_require__(15118).Buffer);
 23838  
 23839  // == UTF32-LE/BE codec. ==========================================================
 23840  
 23841  exports._utf32 = Utf32Codec;
 23842  
 23843  function Utf32Codec(codecOptions, iconv) {
 23844      this.iconv = iconv;
 23845      this.bomAware = true;
 23846      this.isLE = codecOptions.isLE;
 23847  }
 23848  
 23849  exports.utf32le = { type: '_utf32', isLE: true };
 23850  exports.utf32be = { type: '_utf32', isLE: false };
 23851  
 23852  // Aliases
 23853  exports.ucs4le = 'utf32le';
 23854  exports.ucs4be = 'utf32be';
 23855  
 23856  Utf32Codec.prototype.encoder = Utf32Encoder;
 23857  Utf32Codec.prototype.decoder = Utf32Decoder;
 23858  
 23859  // -- Encoding
 23860  
 23861  function Utf32Encoder(options, codec) {
 23862      this.isLE = codec.isLE;
 23863      this.highSurrogate = 0;
 23864  }
 23865  
 23866  Utf32Encoder.prototype.write = function(str) {
 23867      var src = Buffer.from(str, 'ucs2');
 23868      var dst = Buffer.alloc(src.length * 2);
 23869      var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE;
 23870      var offset = 0;
 23871  
 23872      for (var i = 0; i < src.length; i += 2) {
 23873          var code = src.readUInt16LE(i);
 23874          var isHighSurrogate = (0xD800 <= code && code < 0xDC00);
 23875          var isLowSurrogate = (0xDC00 <= code && code < 0xE000);
 23876  
 23877          if (this.highSurrogate) {
 23878              if (isHighSurrogate || !isLowSurrogate) {
 23879                  // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low
 23880                  // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character
 23881                  // (technically wrong, but expected by some applications, like Windows file names).
 23882                  write32.call(dst, this.highSurrogate, offset);
 23883                  offset += 4;
 23884              }
 23885              else {
 23886                  // Create 32-bit value from high and low surrogates;
 23887                  var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000;
 23888  
 23889                  write32.call(dst, codepoint, offset);
 23890                  offset += 4;
 23891                  this.highSurrogate = 0;
 23892  
 23893                  continue;
 23894              }
 23895          }
 23896  
 23897          if (isHighSurrogate)
 23898              this.highSurrogate = code;
 23899          else {
 23900              // Even if the current character is a low surrogate, with no previous high surrogate, we'll
 23901              // encode it as a semi-invalid stand-alone character for the same reasons expressed above for
 23902              // unpaired high surrogates.
 23903              write32.call(dst, code, offset);
 23904              offset += 4;
 23905              this.highSurrogate = 0;
 23906          }
 23907      }
 23908  
 23909      if (offset < dst.length)
 23910          dst = dst.slice(0, offset);
 23911  
 23912      return dst;
 23913  };
 23914  
 23915  Utf32Encoder.prototype.end = function() {
 23916      // Treat any leftover high surrogate as a semi-valid independent character.
 23917      if (!this.highSurrogate)
 23918          return;
 23919  
 23920      var buf = Buffer.alloc(4);
 23921  
 23922      if (this.isLE)
 23923          buf.writeUInt32LE(this.highSurrogate, 0);
 23924      else
 23925          buf.writeUInt32BE(this.highSurrogate, 0);
 23926  
 23927      this.highSurrogate = 0;
 23928  
 23929      return buf;
 23930  };
 23931  
 23932  // -- Decoding
 23933  
 23934  function Utf32Decoder(options, codec) {
 23935      this.isLE = codec.isLE;
 23936      this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0);
 23937      this.overflow = [];
 23938  }
 23939  
 23940  Utf32Decoder.prototype.write = function(src) {
 23941      if (src.length === 0)
 23942          return '';
 23943  
 23944      var i = 0;
 23945      var codepoint = 0;
 23946      var dst = Buffer.alloc(src.length + 4);
 23947      var offset = 0;
 23948      var isLE = this.isLE;
 23949      var overflow = this.overflow;
 23950      var badChar = this.badChar;
 23951  
 23952      if (overflow.length > 0) {
 23953          for (; i < src.length && overflow.length < 4; i++)
 23954              overflow.push(src[i]);
 23955          
 23956          if (overflow.length === 4) {
 23957              // NOTE: codepoint is a signed int32 and can be negative.
 23958              // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).
 23959              if (isLE) {
 23960                  codepoint = overflow[i] | (overflow[i+1] << 8) | (overflow[i+2] << 16) | (overflow[i+3] << 24);
 23961              } else {
 23962                  codepoint = overflow[i+3] | (overflow[i+2] << 8) | (overflow[i+1] << 16) | (overflow[i] << 24);
 23963              }
 23964              overflow.length = 0;
 23965  
 23966              offset = _writeCodepoint(dst, offset, codepoint, badChar);
 23967          }
 23968      }
 23969  
 23970      // Main loop. Should be as optimized as possible.
 23971      for (; i < src.length - 3; i += 4) {
 23972          // NOTE: codepoint is a signed int32 and can be negative.
 23973          if (isLE) {
 23974              codepoint = src[i] | (src[i+1] << 8) | (src[i+2] << 16) | (src[i+3] << 24);
 23975          } else {
 23976              codepoint = src[i+3] | (src[i+2] << 8) | (src[i+1] << 16) | (src[i] << 24);
 23977          }
 23978          offset = _writeCodepoint(dst, offset, codepoint, badChar);
 23979      }
 23980  
 23981      // Keep overflowing bytes.
 23982      for (; i < src.length; i++) {
 23983          overflow.push(src[i]);
 23984      }
 23985  
 23986      return dst.slice(0, offset).toString('ucs2');
 23987  };
 23988  
 23989  function _writeCodepoint(dst, offset, codepoint, badChar) {
 23990      // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.
 23991      if (codepoint < 0 || codepoint > 0x10FFFF) {
 23992          // Not a valid Unicode codepoint
 23993          codepoint = badChar;
 23994      } 
 23995  
 23996      // Ephemeral Planes: Write high surrogate.
 23997      if (codepoint >= 0x10000) {
 23998          codepoint -= 0x10000;
 23999  
 24000          var high = 0xD800 | (codepoint >> 10);
 24001          dst[offset++] = high & 0xff;
 24002          dst[offset++] = high >> 8;
 24003  
 24004          // Low surrogate is written below.
 24005          var codepoint = 0xDC00 | (codepoint & 0x3FF);
 24006      }
 24007  
 24008      // Write BMP char or low surrogate.
 24009      dst[offset++] = codepoint & 0xff;
 24010      dst[offset++] = codepoint >> 8;
 24011  
 24012      return offset;
 24013  };
 24014  
 24015  Utf32Decoder.prototype.end = function() {
 24016      this.overflow.length = 0;
 24017  };
 24018  
 24019  // == UTF-32 Auto codec =============================================================
 24020  // Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.
 24021  // Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32
 24022  // Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});
 24023  
 24024  // Encoder prepends BOM (which can be overridden with (addBOM: false}).
 24025  
 24026  exports.utf32 = Utf32AutoCodec;
 24027  exports.ucs4 = 'utf32';
 24028  
 24029  function Utf32AutoCodec(options, iconv) {
 24030      this.iconv = iconv;
 24031  }
 24032  
 24033  Utf32AutoCodec.prototype.encoder = Utf32AutoEncoder;
 24034  Utf32AutoCodec.prototype.decoder = Utf32AutoDecoder;
 24035  
 24036  // -- Encoding
 24037  
 24038  function Utf32AutoEncoder(options, codec) {
 24039      options = options || {};
 24040  
 24041      if (options.addBOM === undefined)
 24042          options.addBOM = true;
 24043  
 24044      this.encoder = codec.iconv.getEncoder(options.defaultEncoding || 'utf-32le', options);
 24045  }
 24046  
 24047  Utf32AutoEncoder.prototype.write = function(str) {
 24048      return this.encoder.write(str);
 24049  };
 24050  
 24051  Utf32AutoEncoder.prototype.end = function() {
 24052      return this.encoder.end();
 24053  };
 24054  
 24055  // -- Decoding
 24056  
 24057  function Utf32AutoDecoder(options, codec) {
 24058      this.decoder = null;
 24059      this.initialBufs = [];
 24060      this.initialBufsLen = 0;
 24061      this.options = options || {};
 24062      this.iconv = codec.iconv;
 24063  }
 24064  
 24065  Utf32AutoDecoder.prototype.write = function(buf) {
 24066      if (!this.decoder) { 
 24067          // Codec is not chosen yet. Accumulate initial bytes.
 24068          this.initialBufs.push(buf);
 24069          this.initialBufsLen += buf.length;
 24070  
 24071          if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)
 24072              return '';
 24073  
 24074          // We have enough bytes -> detect endianness.
 24075          var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
 24076          this.decoder = this.iconv.getDecoder(encoding, this.options);
 24077  
 24078          var resStr = '';
 24079          for (var i = 0; i < this.initialBufs.length; i++)
 24080              resStr += this.decoder.write(this.initialBufs[i]);
 24081  
 24082          this.initialBufs.length = this.initialBufsLen = 0;
 24083          return resStr;
 24084      }
 24085  
 24086      return this.decoder.write(buf);
 24087  };
 24088  
 24089  Utf32AutoDecoder.prototype.end = function() {
 24090      if (!this.decoder) {
 24091          var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding);
 24092          this.decoder = this.iconv.getDecoder(encoding, this.options);
 24093  
 24094          var resStr = '';
 24095          for (var i = 0; i < this.initialBufs.length; i++)
 24096              resStr += this.decoder.write(this.initialBufs[i]);
 24097  
 24098          var trail = this.decoder.end();
 24099          if (trail)
 24100              resStr += trail;
 24101  
 24102          this.initialBufs.length = this.initialBufsLen = 0;
 24103          return resStr;
 24104      }
 24105  
 24106      return this.decoder.end();
 24107  };
 24108  
 24109  function detectEncoding(bufs, defaultEncoding) {
 24110      var b = [];
 24111      var charsProcessed = 0;
 24112      var invalidLE = 0, invalidBE = 0;   // Number of invalid chars when decoded as LE or BE.
 24113      var bmpCharsLE = 0, bmpCharsBE = 0; // Number of BMP chars when decoded as LE or BE.
 24114  
 24115      outer_loop:
 24116      for (var i = 0; i < bufs.length; i++) {
 24117          var buf = bufs[i];
 24118          for (var j = 0; j < buf.length; j++) {
 24119              b.push(buf[j]);
 24120              if (b.length === 4) {
 24121                  if (charsProcessed === 0) {
 24122                      // Check BOM first.
 24123                      if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {
 24124                          return 'utf-32le';
 24125                      }
 24126                      if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {
 24127                          return 'utf-32be';
 24128                      }
 24129                  }
 24130  
 24131                  if (b[0] !== 0 || b[1] > 0x10) invalidBE++;
 24132                  if (b[3] !== 0 || b[2] > 0x10) invalidLE++;
 24133  
 24134                  if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++;
 24135                  if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++;
 24136  
 24137                  b.length = 0;
 24138                  charsProcessed++;
 24139  
 24140                  if (charsProcessed >= 100) {
 24141                      break outer_loop;
 24142                  }
 24143              }
 24144          }
 24145      }
 24146  
 24147      // Make decisions.
 24148      if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE)  return 'utf-32be';
 24149      if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE)  return 'utf-32le';
 24150  
 24151      // Couldn't decide (likely all zeros or not enough data).
 24152      return defaultEncoding || 'utf-32le';
 24153  }
 24154  
 24155  
 24156  /***/ }),
 24157  
 24158  /***/ 51644:
 24159  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 24160  
 24161  "use strict";
 24162  
 24163  var Buffer = (__nccwpck_require__(15118).Buffer);
 24164  
 24165  // UTF-7 codec, according to https://tools.ietf.org/html/rfc2152
 24166  // See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3
 24167  
 24168  exports.utf7 = Utf7Codec;
 24169  exports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7
 24170  function Utf7Codec(codecOptions, iconv) {
 24171      this.iconv = iconv;
 24172  };
 24173  
 24174  Utf7Codec.prototype.encoder = Utf7Encoder;
 24175  Utf7Codec.prototype.decoder = Utf7Decoder;
 24176  Utf7Codec.prototype.bomAware = true;
 24177  
 24178  
 24179  // -- Encoding
 24180  
 24181  var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;
 24182  
 24183  function Utf7Encoder(options, codec) {
 24184      this.iconv = codec.iconv;
 24185  }
 24186  
 24187  Utf7Encoder.prototype.write = function(str) {
 24188      // Naive implementation.
 24189      // Non-direct chars are encoded as "+<base64>-"; single "+" char is encoded as "+-".
 24190      return Buffer.from(str.replace(nonDirectChars, function(chunk) {
 24191          return "+" + (chunk === '+' ? '' : 
 24192              this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) 
 24193              + "-";
 24194      }.bind(this)));
 24195  }
 24196  
 24197  Utf7Encoder.prototype.end = function() {
 24198  }
 24199  
 24200  
 24201  // -- Decoding
 24202  
 24203  function Utf7Decoder(options, codec) {
 24204      this.iconv = codec.iconv;
 24205      this.inBase64 = false;
 24206      this.base64Accum = '';
 24207  }
 24208  
 24209  var base64Regex = /[A-Za-z0-9\/+]/;
 24210  var base64Chars = [];
 24211  for (var i = 0; i < 256; i++)
 24212      base64Chars[i] = base64Regex.test(String.fromCharCode(i));
 24213  
 24214  var plusChar = '+'.charCodeAt(0), 
 24215      minusChar = '-'.charCodeAt(0),
 24216      andChar = '&'.charCodeAt(0);
 24217  
 24218  Utf7Decoder.prototype.write = function(buf) {
 24219      var res = "", lastI = 0,
 24220          inBase64 = this.inBase64,
 24221          base64Accum = this.base64Accum;
 24222  
 24223      // The decoder is more involved as we must handle chunks in stream.
 24224  
 24225      for (var i = 0; i < buf.length; i++) {
 24226          if (!inBase64) { // We're in direct mode.
 24227              // Write direct chars until '+'
 24228              if (buf[i] == plusChar) {
 24229                  res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars.
 24230                  lastI = i+1;
 24231                  inBase64 = true;
 24232              }
 24233          } else { // We decode base64.
 24234              if (!base64Chars[buf[i]]) { // Base64 ended.
 24235                  if (i == lastI && buf[i] == minusChar) {// "+-" -> "+"
 24236                      res += "+";
 24237                  } else {
 24238                      var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii");
 24239                      res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
 24240                  }
 24241  
 24242                  if (buf[i] != minusChar) // Minus is absorbed after base64.
 24243                      i--;
 24244  
 24245                  lastI = i+1;
 24246                  inBase64 = false;
 24247                  base64Accum = '';
 24248              }
 24249          }
 24250      }
 24251  
 24252      if (!inBase64) {
 24253          res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars.
 24254      } else {
 24255          var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii");
 24256  
 24257          var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
 24258          base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.
 24259          b64str = b64str.slice(0, canBeDecoded);
 24260  
 24261          res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
 24262      }
 24263  
 24264      this.inBase64 = inBase64;
 24265      this.base64Accum = base64Accum;
 24266  
 24267      return res;
 24268  }
 24269  
 24270  Utf7Decoder.prototype.end = function() {
 24271      var res = "";
 24272      if (this.inBase64 && this.base64Accum.length > 0)
 24273          res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be");
 24274  
 24275      this.inBase64 = false;
 24276      this.base64Accum = '';
 24277      return res;
 24278  }
 24279  
 24280  
 24281  // UTF-7-IMAP codec.
 24282  // RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)
 24283  // Differences:
 24284  //  * Base64 part is started by "&" instead of "+"
 24285  //  * Direct characters are 0x20-0x7E, except "&" (0x26)
 24286  //  * In Base64, "," is used instead of "/"
 24287  //  * Base64 must not be used to represent direct characters.
 24288  //  * No implicit shift back from Base64 (should always end with '-')
 24289  //  * String must end in non-shifted position.
 24290  //  * "-&" while in base64 is not allowed.
 24291  
 24292  
 24293  exports.utf7imap = Utf7IMAPCodec;
 24294  function Utf7IMAPCodec(codecOptions, iconv) {
 24295      this.iconv = iconv;
 24296  };
 24297  
 24298  Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;
 24299  Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;
 24300  Utf7IMAPCodec.prototype.bomAware = true;
 24301  
 24302  
 24303  // -- Encoding
 24304  
 24305  function Utf7IMAPEncoder(options, codec) {
 24306      this.iconv = codec.iconv;
 24307      this.inBase64 = false;
 24308      this.base64Accum = Buffer.alloc(6);
 24309      this.base64AccumIdx = 0;
 24310  }
 24311  
 24312  Utf7IMAPEncoder.prototype.write = function(str) {
 24313      var inBase64 = this.inBase64,
 24314          base64Accum = this.base64Accum,
 24315          base64AccumIdx = this.base64AccumIdx,
 24316          buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;
 24317  
 24318      for (var i = 0; i < str.length; i++) {
 24319          var uChar = str.charCodeAt(i);
 24320          if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.
 24321              if (inBase64) {
 24322                  if (base64AccumIdx > 0) {
 24323                      bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx);
 24324                      base64AccumIdx = 0;
 24325                  }
 24326  
 24327                  buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.
 24328                  inBase64 = false;
 24329              }
 24330  
 24331              if (!inBase64) {
 24332                  buf[bufIdx++] = uChar; // Write direct character
 24333  
 24334                  if (uChar === andChar)  // Ampersand -> '&-'
 24335                      buf[bufIdx++] = minusChar;
 24336              }
 24337  
 24338          } else { // Non-direct character
 24339              if (!inBase64) {
 24340                  buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.
 24341                  inBase64 = true;
 24342              }
 24343              if (inBase64) {
 24344                  base64Accum[base64AccumIdx++] = uChar >> 8;
 24345                  base64Accum[base64AccumIdx++] = uChar & 0xFF;
 24346  
 24347                  if (base64AccumIdx == base64Accum.length) {
 24348                      bufIdx += buf.write(base64Accum.toString('base64').replace(/\//g, ','), bufIdx);
 24349                      base64AccumIdx = 0;
 24350                  }
 24351              }
 24352          }
 24353      }
 24354  
 24355      this.inBase64 = inBase64;
 24356      this.base64AccumIdx = base64AccumIdx;
 24357  
 24358      return buf.slice(0, bufIdx);
 24359  }
 24360  
 24361  Utf7IMAPEncoder.prototype.end = function() {
 24362      var buf = Buffer.alloc(10), bufIdx = 0;
 24363      if (this.inBase64) {
 24364          if (this.base64AccumIdx > 0) {
 24365              bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\//g, ',').replace(/=+$/, ''), bufIdx);
 24366              this.base64AccumIdx = 0;
 24367          }
 24368  
 24369          buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.
 24370          this.inBase64 = false;
 24371      }
 24372  
 24373      return buf.slice(0, bufIdx);
 24374  }
 24375  
 24376  
 24377  // -- Decoding
 24378  
 24379  function Utf7IMAPDecoder(options, codec) {
 24380      this.iconv = codec.iconv;
 24381      this.inBase64 = false;
 24382      this.base64Accum = '';
 24383  }
 24384  
 24385  var base64IMAPChars = base64Chars.slice();
 24386  base64IMAPChars[','.charCodeAt(0)] = true;
 24387  
 24388  Utf7IMAPDecoder.prototype.write = function(buf) {
 24389      var res = "", lastI = 0,
 24390          inBase64 = this.inBase64,
 24391          base64Accum = this.base64Accum;
 24392  
 24393      // The decoder is more involved as we must handle chunks in stream.
 24394      // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).
 24395  
 24396      for (var i = 0; i < buf.length; i++) {
 24397          if (!inBase64) { // We're in direct mode.
 24398              // Write direct chars until '&'
 24399              if (buf[i] == andChar) {
 24400                  res += this.iconv.decode(buf.slice(lastI, i), "ascii"); // Write direct chars.
 24401                  lastI = i+1;
 24402                  inBase64 = true;
 24403              }
 24404          } else { // We decode base64.
 24405              if (!base64IMAPChars[buf[i]]) { // Base64 ended.
 24406                  if (i == lastI && buf[i] == minusChar) { // "&-" -> "&"
 24407                      res += "&";
 24408                  } else {
 24409                      var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), "ascii").replace(/,/g, '/');
 24410                      res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
 24411                  }
 24412  
 24413                  if (buf[i] != minusChar) // Minus may be absorbed after base64.
 24414                      i--;
 24415  
 24416                  lastI = i+1;
 24417                  inBase64 = false;
 24418                  base64Accum = '';
 24419              }
 24420          }
 24421      }
 24422  
 24423      if (!inBase64) {
 24424          res += this.iconv.decode(buf.slice(lastI), "ascii"); // Write direct chars.
 24425      } else {
 24426          var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), "ascii").replace(/,/g, '/');
 24427  
 24428          var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.
 24429          base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.
 24430          b64str = b64str.slice(0, canBeDecoded);
 24431  
 24432          res += this.iconv.decode(Buffer.from(b64str, 'base64'), "utf16-be");
 24433      }
 24434  
 24435      this.inBase64 = inBase64;
 24436      this.base64Accum = base64Accum;
 24437  
 24438      return res;
 24439  }
 24440  
 24441  Utf7IMAPDecoder.prototype.end = function() {
 24442      var res = "";
 24443      if (this.inBase64 && this.base64Accum.length > 0)
 24444          res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), "utf16-be");
 24445  
 24446      this.inBase64 = false;
 24447      this.base64Accum = '';
 24448      return res;
 24449  }
 24450  
 24451  
 24452  
 24453  
 24454  /***/ }),
 24455  
 24456  /***/ 67961:
 24457  /***/ ((__unused_webpack_module, exports) => {
 24458  
 24459  "use strict";
 24460  
 24461  
 24462  var BOMChar = '\uFEFF';
 24463  
 24464  exports.PrependBOM = PrependBOMWrapper
 24465  function PrependBOMWrapper(encoder, options) {
 24466      this.encoder = encoder;
 24467      this.addBOM = true;
 24468  }
 24469  
 24470  PrependBOMWrapper.prototype.write = function(str) {
 24471      if (this.addBOM) {
 24472          str = BOMChar + str;
 24473          this.addBOM = false;
 24474      }
 24475  
 24476      return this.encoder.write(str);
 24477  }
 24478  
 24479  PrependBOMWrapper.prototype.end = function() {
 24480      return this.encoder.end();
 24481  }
 24482  
 24483  
 24484  //------------------------------------------------------------------------------
 24485  
 24486  exports.StripBOM = StripBOMWrapper;
 24487  function StripBOMWrapper(decoder, options) {
 24488      this.decoder = decoder;
 24489      this.pass = false;
 24490      this.options = options || {};
 24491  }
 24492  
 24493  StripBOMWrapper.prototype.write = function(buf) {
 24494      var res = this.decoder.write(buf);
 24495      if (this.pass || !res)
 24496          return res;
 24497  
 24498      if (res[0] === BOMChar) {
 24499          res = res.slice(1);
 24500          if (typeof this.options.stripBOM === 'function')
 24501              this.options.stripBOM();
 24502      }
 24503  
 24504      this.pass = true;
 24505      return res;
 24506  }
 24507  
 24508  StripBOMWrapper.prototype.end = function() {
 24509      return this.decoder.end();
 24510  }
 24511  
 24512  
 24513  
 24514  /***/ }),
 24515  
 24516  /***/ 19032:
 24517  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 24518  
 24519  "use strict";
 24520  
 24521  
 24522  var Buffer = (__nccwpck_require__(15118).Buffer);
 24523  
 24524  var bomHandling = __nccwpck_require__(67961),
 24525      iconv = module.exports;
 24526  
 24527  // All codecs and aliases are kept here, keyed by encoding name/alias.
 24528  // They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.
 24529  iconv.encodings = null;
 24530  
 24531  // Characters emitted in case of error.
 24532  iconv.defaultCharUnicode = '�';
 24533  iconv.defaultCharSingleByte = '?';
 24534  
 24535  // Public API.
 24536  iconv.encode = function encode(str, encoding, options) {
 24537      str = "" + (str || ""); // Ensure string.
 24538  
 24539      var encoder = iconv.getEncoder(encoding, options);
 24540  
 24541      var res = encoder.write(str);
 24542      var trail = encoder.end();
 24543      
 24544      return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;
 24545  }
 24546  
 24547  iconv.decode = function decode(buf, encoding, options) {
 24548      if (typeof buf === 'string') {
 24549          if (!iconv.skipDecodeWarning) {
 24550              console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');
 24551              iconv.skipDecodeWarning = true;
 24552          }
 24553  
 24554          buf = Buffer.from("" + (buf || ""), "binary"); // Ensure buffer.
 24555      }
 24556  
 24557      var decoder = iconv.getDecoder(encoding, options);
 24558  
 24559      var res = decoder.write(buf);
 24560      var trail = decoder.end();
 24561  
 24562      return trail ? (res + trail) : res;
 24563  }
 24564  
 24565  iconv.encodingExists = function encodingExists(enc) {
 24566      try {
 24567          iconv.getCodec(enc);
 24568          return true;
 24569      } catch (e) {
 24570          return false;
 24571      }
 24572  }
 24573  
 24574  // Legacy aliases to convert functions
 24575  iconv.toEncoding = iconv.encode;
 24576  iconv.fromEncoding = iconv.decode;
 24577  
 24578  // Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.
 24579  iconv._codecDataCache = {};
 24580  iconv.getCodec = function getCodec(encoding) {
 24581      if (!iconv.encodings)
 24582          iconv.encodings = __nccwpck_require__(82733); // Lazy load all encoding definitions.
 24583      
 24584      // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.
 24585      var enc = iconv._canonicalizeEncoding(encoding);
 24586  
 24587      // Traverse iconv.encodings to find actual codec.
 24588      var codecOptions = {};
 24589      while (true) {
 24590          var codec = iconv._codecDataCache[enc];
 24591          if (codec)
 24592              return codec;
 24593  
 24594          var codecDef = iconv.encodings[enc];
 24595  
 24596          switch (typeof codecDef) {
 24597              case "string": // Direct alias to other encoding.
 24598                  enc = codecDef;
 24599                  break;
 24600  
 24601              case "object": // Alias with options. Can be layered.
 24602                  for (var key in codecDef)
 24603                      codecOptions[key] = codecDef[key];
 24604  
 24605                  if (!codecOptions.encodingName)
 24606                      codecOptions.encodingName = enc;
 24607                  
 24608                  enc = codecDef.type;
 24609                  break;
 24610  
 24611              case "function": // Codec itself.
 24612                  if (!codecOptions.encodingName)
 24613                      codecOptions.encodingName = enc;
 24614  
 24615                  // The codec function must load all tables and return object with .encoder and .decoder methods.
 24616                  // It'll be called only once (for each different options object).
 24617                  codec = new codecDef(codecOptions, iconv);
 24618  
 24619                  iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.
 24620                  return codec;
 24621  
 24622              default:
 24623                  throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '"+enc+"')");
 24624          }
 24625      }
 24626  }
 24627  
 24628  iconv._canonicalizeEncoding = function(encoding) {
 24629      // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.
 24630      return (''+encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, "");
 24631  }
 24632  
 24633  iconv.getEncoder = function getEncoder(encoding, options) {
 24634      var codec = iconv.getCodec(encoding),
 24635          encoder = new codec.encoder(options, codec);
 24636  
 24637      if (codec.bomAware && options && options.addBOM)
 24638          encoder = new bomHandling.PrependBOM(encoder, options);
 24639  
 24640      return encoder;
 24641  }
 24642  
 24643  iconv.getDecoder = function getDecoder(encoding, options) {
 24644      var codec = iconv.getCodec(encoding),
 24645          decoder = new codec.decoder(options, codec);
 24646  
 24647      if (codec.bomAware && !(options && options.stripBOM === false))
 24648          decoder = new bomHandling.StripBOM(decoder, options);
 24649  
 24650      return decoder;
 24651  }
 24652  
 24653  // Streaming API
 24654  // NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add
 24655  // up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.
 24656  // If you would like to enable it explicitly, please add the following code to your app:
 24657  // > iconv.enableStreamingAPI(require('stream'));
 24658  iconv.enableStreamingAPI = function enableStreamingAPI(stream_module) {
 24659      if (iconv.supportsStreams)
 24660          return;
 24661  
 24662      // Dependency-inject stream module to create IconvLite stream classes.
 24663      var streams = __nccwpck_require__(76409)(stream_module);
 24664  
 24665      // Not public API yet, but expose the stream classes.
 24666      iconv.IconvLiteEncoderStream = streams.IconvLiteEncoderStream;
 24667      iconv.IconvLiteDecoderStream = streams.IconvLiteDecoderStream;
 24668  
 24669      // Streaming API.
 24670      iconv.encodeStream = function encodeStream(encoding, options) {
 24671          return new iconv.IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);
 24672      }
 24673  
 24674      iconv.decodeStream = function decodeStream(encoding, options) {
 24675          return new iconv.IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);
 24676      }
 24677  
 24678      iconv.supportsStreams = true;
 24679  }
 24680  
 24681  // Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).
 24682  var stream_module;
 24683  try {
 24684      stream_module = __nccwpck_require__(12781);
 24685  } catch (e) {}
 24686  
 24687  if (stream_module && stream_module.Transform) {
 24688      iconv.enableStreamingAPI(stream_module);
 24689  
 24690  } else {
 24691      // In rare cases where 'stream' module is not available by default, throw a helpful exception.
 24692      iconv.encodeStream = iconv.decodeStream = function() {
 24693          throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.");
 24694      };
 24695  }
 24696  
 24697  if (false) {}
 24698  
 24699  
 24700  /***/ }),
 24701  
 24702  /***/ 76409:
 24703  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 24704  
 24705  "use strict";
 24706  
 24707  
 24708  var Buffer = (__nccwpck_require__(15118).Buffer);
 24709  
 24710  // NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments), 
 24711  // we opt to dependency-inject it instead of creating a hard dependency.
 24712  module.exports = function(stream_module) {
 24713      var Transform = stream_module.Transform;
 24714  
 24715      // == Encoder stream =======================================================
 24716  
 24717      function IconvLiteEncoderStream(conv, options) {
 24718          this.conv = conv;
 24719          options = options || {};
 24720          options.decodeStrings = false; // We accept only strings, so we don't need to decode them.
 24721          Transform.call(this, options);
 24722      }
 24723  
 24724      IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {
 24725          constructor: { value: IconvLiteEncoderStream }
 24726      });
 24727  
 24728      IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {
 24729          if (typeof chunk != 'string')
 24730              return done(new Error("Iconv encoding stream needs strings as its input."));
 24731          try {
 24732              var res = this.conv.write(chunk);
 24733              if (res && res.length) this.push(res);
 24734              done();
 24735          }
 24736          catch (e) {
 24737              done(e);
 24738          }
 24739      }
 24740  
 24741      IconvLiteEncoderStream.prototype._flush = function(done) {
 24742          try {
 24743              var res = this.conv.end();
 24744              if (res && res.length) this.push(res);
 24745              done();
 24746          }
 24747          catch (e) {
 24748              done(e);
 24749          }
 24750      }
 24751  
 24752      IconvLiteEncoderStream.prototype.collect = function(cb) {
 24753          var chunks = [];
 24754          this.on('error', cb);
 24755          this.on('data', function(chunk) { chunks.push(chunk); });
 24756          this.on('end', function() {
 24757              cb(null, Buffer.concat(chunks));
 24758          });
 24759          return this;
 24760      }
 24761  
 24762  
 24763      // == Decoder stream =======================================================
 24764  
 24765      function IconvLiteDecoderStream(conv, options) {
 24766          this.conv = conv;
 24767          options = options || {};
 24768          options.encoding = this.encoding = 'utf8'; // We output strings.
 24769          Transform.call(this, options);
 24770      }
 24771  
 24772      IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {
 24773          constructor: { value: IconvLiteDecoderStream }
 24774      });
 24775  
 24776      IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {
 24777          if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array))
 24778              return done(new Error("Iconv decoding stream needs buffers as its input."));
 24779          try {
 24780              var res = this.conv.write(chunk);
 24781              if (res && res.length) this.push(res, this.encoding);
 24782              done();
 24783          }
 24784          catch (e) {
 24785              done(e);
 24786          }
 24787      }
 24788  
 24789      IconvLiteDecoderStream.prototype._flush = function(done) {
 24790          try {
 24791              var res = this.conv.end();
 24792              if (res && res.length) this.push(res, this.encoding);                
 24793              done();
 24794          }
 24795          catch (e) {
 24796              done(e);
 24797          }
 24798      }
 24799  
 24800      IconvLiteDecoderStream.prototype.collect = function(cb) {
 24801          var res = '';
 24802          this.on('error', cb);
 24803          this.on('data', function(chunk) { res += chunk; });
 24804          this.on('end', function() {
 24805              cb(null, res);
 24806          });
 24807          return this;
 24808      }
 24809  
 24810      return {
 24811          IconvLiteEncoderStream: IconvLiteEncoderStream,
 24812          IconvLiteDecoderStream: IconvLiteDecoderStream,
 24813      };
 24814  };
 24815  
 24816  
 24817  /***/ }),
 24818  
 24819  /***/ 52527:
 24820  /***/ ((module) => {
 24821  
 24822  /**
 24823   * @preserve
 24824   * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013)
 24825   *
 24826   * @author <a href="mailto:jensyt@gmail.com">Jens Taylor</a>
 24827   * @see http://github.com/homebrewing/brauhaus-diff
 24828   * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
 24829   * @see http://github.com/garycourt/murmurhash-js
 24830   * @author <a href="mailto:aappleby@gmail.com">Austin Appleby</a>
 24831   * @see http://sites.google.com/site/murmurhash/
 24832   */
 24833  (function(){
 24834      var cache;
 24835  
 24836      // Call this function without `new` to use the cached object (good for
 24837      // single-threaded environments), or with `new` to create a new object.
 24838      //
 24839      // @param {string} key A UTF-16 or ASCII string
 24840      // @param {number} seed An optional positive integer
 24841      // @return {object} A MurmurHash3 object for incremental hashing
 24842      function MurmurHash3(key, seed) {
 24843          var m = this instanceof MurmurHash3 ? this : cache;
 24844          m.reset(seed)
 24845          if (typeof key === 'string' && key.length > 0) {
 24846              m.hash(key);
 24847          }
 24848  
 24849          if (m !== this) {
 24850              return m;
 24851          }
 24852      };
 24853  
 24854      // Incrementally add a string to this hash
 24855      //
 24856      // @param {string} key A UTF-16 or ASCII string
 24857      // @return {object} this
 24858      MurmurHash3.prototype.hash = function(key) {
 24859          var h1, k1, i, top, len;
 24860  
 24861          len = key.length;
 24862          this.len += len;
 24863  
 24864          k1 = this.k1;
 24865          i = 0;
 24866          switch (this.rem) {
 24867              case 0: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) : 0;
 24868              case 1: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 8 : 0;
 24869              case 2: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 16 : 0;
 24870              case 3:
 24871                  k1 ^= len > i ? (key.charCodeAt(i) & 0xff) << 24 : 0;
 24872                  k1 ^= len > i ? (key.charCodeAt(i++) & 0xff00) >> 8 : 0;
 24873          }
 24874  
 24875          this.rem = (len + this.rem) & 3; // & 3 is same as % 4
 24876          len -= this.rem;
 24877          if (len > 0) {
 24878              h1 = this.h1;
 24879              while (1) {
 24880                  k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;
 24881                  k1 = (k1 << 15) | (k1 >>> 17);
 24882                  k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;
 24883  
 24884                  h1 ^= k1;
 24885                  h1 = (h1 << 13) | (h1 >>> 19);
 24886                  h1 = (h1 * 5 + 0xe6546b64) & 0xffffffff;
 24887  
 24888                  if (i >= len) {
 24889                      break;
 24890                  }
 24891  
 24892                  k1 = ((key.charCodeAt(i++) & 0xffff)) ^
 24893                       ((key.charCodeAt(i++) & 0xffff) << 8) ^
 24894                       ((key.charCodeAt(i++) & 0xffff) << 16);
 24895                  top = key.charCodeAt(i++);
 24896                  k1 ^= ((top & 0xff) << 24) ^
 24897                        ((top & 0xff00) >> 8);
 24898              }
 24899  
 24900              k1 = 0;
 24901              switch (this.rem) {
 24902                  case 3: k1 ^= (key.charCodeAt(i + 2) & 0xffff) << 16;
 24903                  case 2: k1 ^= (key.charCodeAt(i + 1) & 0xffff) << 8;
 24904                  case 1: k1 ^= (key.charCodeAt(i) & 0xffff);
 24905              }
 24906  
 24907              this.h1 = h1;
 24908          }
 24909  
 24910          this.k1 = k1;
 24911          return this;
 24912      };
 24913  
 24914      // Get the result of this hash
 24915      //
 24916      // @return {number} The 32-bit hash
 24917      MurmurHash3.prototype.result = function() {
 24918          var k1, h1;
 24919          
 24920          k1 = this.k1;
 24921          h1 = this.h1;
 24922  
 24923          if (k1 > 0) {
 24924              k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;
 24925              k1 = (k1 << 15) | (k1 >>> 17);
 24926              k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;
 24927              h1 ^= k1;
 24928          }
 24929  
 24930          h1 ^= this.len;
 24931  
 24932          h1 ^= h1 >>> 16;
 24933          h1 = (h1 * 0xca6b + (h1 & 0xffff) * 0x85eb0000) & 0xffffffff;
 24934          h1 ^= h1 >>> 13;
 24935          h1 = (h1 * 0xae35 + (h1 & 0xffff) * 0xc2b20000) & 0xffffffff;
 24936          h1 ^= h1 >>> 16;
 24937  
 24938          return h1 >>> 0;
 24939      };
 24940  
 24941      // Reset the hash object for reuse
 24942      //
 24943      // @param {number} seed An optional positive integer
 24944      MurmurHash3.prototype.reset = function(seed) {
 24945          this.h1 = typeof seed === 'number' ? seed : 0;
 24946          this.rem = this.k1 = this.len = 0;
 24947          return this;
 24948      };
 24949  
 24950      // A cached object to use. This can be safely used if you're in a single-
 24951      // threaded environment, otherwise you need to create new hashes to use.
 24952      cache = new MurmurHash3();
 24953  
 24954      if (true) {
 24955          module.exports = MurmurHash3;
 24956      } else {}
 24957  }());
 24958  
 24959  
 24960  /***/ }),
 24961  
 24962  /***/ 98043:
 24963  /***/ ((module) => {
 24964  
 24965  "use strict";
 24966  
 24967  
 24968  module.exports = (string, count = 1, options) => {
 24969  	options = {
 24970  		indent: ' ',
 24971  		includeEmptyLines: false,
 24972  		...options
 24973  	};
 24974  
 24975  	if (typeof string !== 'string') {
 24976  		throw new TypeError(
 24977  			`Expected \`input\` to be a \`string\`, got \`${typeof string}\``
 24978  		);
 24979  	}
 24980  
 24981  	if (typeof count !== 'number') {
 24982  		throw new TypeError(
 24983  			`Expected \`count\` to be a \`number\`, got \`${typeof count}\``
 24984  		);
 24985  	}
 24986  
 24987  	if (typeof options.indent !== 'string') {
 24988  		throw new TypeError(
 24989  			`Expected \`options.indent\` to be a \`string\`, got \`${typeof options.indent}\``
 24990  		);
 24991  	}
 24992  
 24993  	if (count === 0) {
 24994  		return string;
 24995  	}
 24996  
 24997  	const regex = options.includeEmptyLines ? /^/gm : /^(?!\s*$)/gm;
 24998  
 24999  	return string.replace(regex, options.indent.repeat(count));
 25000  };
 25001  
 25002  
 25003  /***/ }),
 25004  
 25005  /***/ 50903:
 25006  /***/ ((__unused_webpack_module, exports) => {
 25007  
 25008  "use strict";
 25009  
 25010  Object.defineProperty(exports, "__esModule", ({ value: true }));
 25011  exports.AddressError = void 0;
 25012  class AddressError extends Error {
 25013      constructor(message, parseMessage) {
 25014          super(message);
 25015          this.name = 'AddressError';
 25016          if (parseMessage !== null) {
 25017              this.parseMessage = parseMessage;
 25018          }
 25019      }
 25020  }
 25021  exports.AddressError = AddressError;
 25022  //# sourceMappingURL=address-error.js.map
 25023  
 25024  /***/ }),
 25025  
 25026  /***/ 53233:
 25027  /***/ ((__unused_webpack_module, exports) => {
 25028  
 25029  "use strict";
 25030  
 25031  Object.defineProperty(exports, "__esModule", ({ value: true }));
 25032  exports.isCorrect = exports.isInSubnet = void 0;
 25033  function isInSubnet(address) {
 25034      if (this.subnetMask < address.subnetMask) {
 25035          return false;
 25036      }
 25037      if (this.mask(address.subnetMask) === address.mask()) {
 25038          return true;
 25039      }
 25040      return false;
 25041  }
 25042  exports.isInSubnet = isInSubnet;
 25043  function isCorrect(defaultBits) {
 25044      return function () {
 25045          if (this.addressMinusSuffix !== this.correctForm()) {
 25046              return false;
 25047          }
 25048          if (this.subnetMask === defaultBits && !this.parsedSubnet) {
 25049              return true;
 25050          }
 25051          return this.parsedSubnet === String(this.subnetMask);
 25052      };
 25053  }
 25054  exports.isCorrect = isCorrect;
 25055  //# sourceMappingURL=common.js.map
 25056  
 25057  /***/ }),
 25058  
 25059  /***/ 78953:
 25060  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 25061  
 25062  "use strict";
 25063  
 25064  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 25065      if (k2 === undefined) k2 = k;
 25066      var desc = Object.getOwnPropertyDescriptor(m, k);
 25067      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 25068        desc = { enumerable: true, get: function() { return m[k]; } };
 25069      }
 25070      Object.defineProperty(o, k2, desc);
 25071  }) : (function(o, m, k, k2) {
 25072      if (k2 === undefined) k2 = k;
 25073      o[k2] = m[k];
 25074  }));
 25075  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 25076      Object.defineProperty(o, "default", { enumerable: true, value: v });
 25077  }) : function(o, v) {
 25078      o["default"] = v;
 25079  });
 25080  var __importStar = (this && this.__importStar) || function (mod) {
 25081      if (mod && mod.__esModule) return mod;
 25082      var result = {};
 25083      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 25084      __setModuleDefault(result, mod);
 25085      return result;
 25086  };
 25087  Object.defineProperty(exports, "__esModule", ({ value: true }));
 25088  exports.v6 = exports.AddressError = exports.Address6 = exports.Address4 = void 0;
 25089  const ipv4_1 = __nccwpck_require__(50753);
 25090  Object.defineProperty(exports, "Address4", ({ enumerable: true, get: function () { return ipv4_1.Address4; } }));
 25091  const ipv6_1 = __nccwpck_require__(88292);
 25092  Object.defineProperty(exports, "Address6", ({ enumerable: true, get: function () { return ipv6_1.Address6; } }));
 25093  const address_error_1 = __nccwpck_require__(50903);
 25094  Object.defineProperty(exports, "AddressError", ({ enumerable: true, get: function () { return address_error_1.AddressError; } }));
 25095  const helpers = __importStar(__nccwpck_require__(10945));
 25096  exports.v6 = { helpers };
 25097  //# sourceMappingURL=ip-address.js.map
 25098  
 25099  /***/ }),
 25100  
 25101  /***/ 50753:
 25102  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 25103  
 25104  "use strict";
 25105  
 25106  /* eslint-disable no-param-reassign */
 25107  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 25108      if (k2 === undefined) k2 = k;
 25109      var desc = Object.getOwnPropertyDescriptor(m, k);
 25110      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 25111        desc = { enumerable: true, get: function() { return m[k]; } };
 25112      }
 25113      Object.defineProperty(o, k2, desc);
 25114  }) : (function(o, m, k, k2) {
 25115      if (k2 === undefined) k2 = k;
 25116      o[k2] = m[k];
 25117  }));
 25118  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 25119      Object.defineProperty(o, "default", { enumerable: true, value: v });
 25120  }) : function(o, v) {
 25121      o["default"] = v;
 25122  });
 25123  var __importStar = (this && this.__importStar) || function (mod) {
 25124      if (mod && mod.__esModule) return mod;
 25125      var result = {};
 25126      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 25127      __setModuleDefault(result, mod);
 25128      return result;
 25129  };
 25130  Object.defineProperty(exports, "__esModule", ({ value: true }));
 25131  exports.Address4 = void 0;
 25132  const common = __importStar(__nccwpck_require__(53233));
 25133  const constants = __importStar(__nccwpck_require__(66417));
 25134  const address_error_1 = __nccwpck_require__(50903);
 25135  const jsbn_1 = __nccwpck_require__(85587);
 25136  const sprintf_js_1 = __nccwpck_require__(33988);
 25137  /**
 25138   * Represents an IPv4 address
 25139   * @class Address4
 25140   * @param {string} address - An IPv4 address string
 25141   */
 25142  class Address4 {
 25143      constructor(address) {
 25144          this.groups = constants.GROUPS;
 25145          this.parsedAddress = [];
 25146          this.parsedSubnet = '';
 25147          this.subnet = '/32';
 25148          this.subnetMask = 32;
 25149          this.v4 = true;
 25150          /**
 25151           * Returns true if the address is correct, false otherwise
 25152           * @memberof Address4
 25153           * @instance
 25154           * @returns {Boolean}
 25155           */
 25156          this.isCorrect = common.isCorrect(constants.BITS);
 25157          /**
 25158           * Returns true if the given address is in the subnet of the current address
 25159           * @memberof Address4
 25160           * @instance
 25161           * @returns {boolean}
 25162           */
 25163          this.isInSubnet = common.isInSubnet;
 25164          this.address = address;
 25165          const subnet = constants.RE_SUBNET_STRING.exec(address);
 25166          if (subnet) {
 25167              this.parsedSubnet = subnet[0].replace('/', '');
 25168              this.subnetMask = parseInt(this.parsedSubnet, 10);
 25169              this.subnet = `/${this.subnetMask}`;
 25170              if (this.subnetMask < 0 || this.subnetMask > constants.BITS) {
 25171                  throw new address_error_1.AddressError('Invalid subnet mask.');
 25172              }
 25173              address = address.replace(constants.RE_SUBNET_STRING, '');
 25174          }
 25175          this.addressMinusSuffix = address;
 25176          this.parsedAddress = this.parse(address);
 25177      }
 25178      static isValid(address) {
 25179          try {
 25180              // eslint-disable-next-line no-new
 25181              new Address4(address);
 25182              return true;
 25183          }
 25184          catch (e) {
 25185              return false;
 25186          }
 25187      }
 25188      /*
 25189       * Parses a v4 address
 25190       */
 25191      parse(address) {
 25192          const groups = address.split('.');
 25193          if (!address.match(constants.RE_ADDRESS)) {
 25194              throw new address_error_1.AddressError('Invalid IPv4 address.');
 25195          }
 25196          return groups;
 25197      }
 25198      /**
 25199       * Returns the correct form of an address
 25200       * @memberof Address4
 25201       * @instance
 25202       * @returns {String}
 25203       */
 25204      correctForm() {
 25205          return this.parsedAddress.map((part) => parseInt(part, 10)).join('.');
 25206      }
 25207      /**
 25208       * Converts a hex string to an IPv4 address object
 25209       * @memberof Address4
 25210       * @static
 25211       * @param {string} hex - a hex string to convert
 25212       * @returns {Address4}
 25213       */
 25214      static fromHex(hex) {
 25215          const padded = hex.replace(/:/g, '').padStart(8, '0');
 25216          const groups = [];
 25217          let i;
 25218          for (i = 0; i < 8; i += 2) {
 25219              const h = padded.slice(i, i + 2);
 25220              groups.push(parseInt(h, 16));
 25221          }
 25222          return new Address4(groups.join('.'));
 25223      }
 25224      /**
 25225       * Converts an integer into a IPv4 address object
 25226       * @memberof Address4
 25227       * @static
 25228       * @param {integer} integer - a number to convert
 25229       * @returns {Address4}
 25230       */
 25231      static fromInteger(integer) {
 25232          return Address4.fromHex(integer.toString(16));
 25233      }
 25234      /**
 25235       * Return an address from in-addr.arpa form
 25236       * @memberof Address4
 25237       * @static
 25238       * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address
 25239       * @returns {Adress4}
 25240       * @example
 25241       * var address = Address4.fromArpa(42.2.0.192.in-addr.arpa.)
 25242       * address.correctForm(); // '192.0.2.42'
 25243       */
 25244      static fromArpa(arpaFormAddress) {
 25245          // remove ending ".in-addr.arpa." or just "."
 25246          const leader = arpaFormAddress.replace(/(\.in-addr\.arpa)?\.$/, '');
 25247          const address = leader.split('.').reverse().join('.');
 25248          return new Address4(address);
 25249      }
 25250      /**
 25251       * Converts an IPv4 address object to a hex string
 25252       * @memberof Address4
 25253       * @instance
 25254       * @returns {String}
 25255       */
 25256      toHex() {
 25257          return this.parsedAddress.map((part) => (0, sprintf_js_1.sprintf)('%02x', parseInt(part, 10))).join(':');
 25258      }
 25259      /**
 25260       * Converts an IPv4 address object to an array of bytes
 25261       * @memberof Address4
 25262       * @instance
 25263       * @returns {Array}
 25264       */
 25265      toArray() {
 25266          return this.parsedAddress.map((part) => parseInt(part, 10));
 25267      }
 25268      /**
 25269       * Converts an IPv4 address object to an IPv6 address group
 25270       * @memberof Address4
 25271       * @instance
 25272       * @returns {String}
 25273       */
 25274      toGroup6() {
 25275          const output = [];
 25276          let i;
 25277          for (i = 0; i < constants.GROUPS; i += 2) {
 25278              const hex = (0, sprintf_js_1.sprintf)('%02x%02x', parseInt(this.parsedAddress[i], 10), parseInt(this.parsedAddress[i + 1], 10));
 25279              output.push((0, sprintf_js_1.sprintf)('%x', parseInt(hex, 16)));
 25280          }
 25281          return output.join(':');
 25282      }
 25283      /**
 25284       * Returns the address as a BigInteger
 25285       * @memberof Address4
 25286       * @instance
 25287       * @returns {BigInteger}
 25288       */
 25289      bigInteger() {
 25290          return new jsbn_1.BigInteger(this.parsedAddress.map((n) => (0, sprintf_js_1.sprintf)('%02x', parseInt(n, 10))).join(''), 16);
 25291      }
 25292      /**
 25293       * Helper function getting start address.
 25294       * @memberof Address4
 25295       * @instance
 25296       * @returns {BigInteger}
 25297       */
 25298      _startAddress() {
 25299          return new jsbn_1.BigInteger(this.mask() + '0'.repeat(constants.BITS - this.subnetMask), 2);
 25300      }
 25301      /**
 25302       * The first address in the range given by this address' subnet.
 25303       * Often referred to as the Network Address.
 25304       * @memberof Address4
 25305       * @instance
 25306       * @returns {Address4}
 25307       */
 25308      startAddress() {
 25309          return Address4.fromBigInteger(this._startAddress());
 25310      }
 25311      /**
 25312       * The first host address in the range given by this address's subnet ie
 25313       * the first address after the Network Address
 25314       * @memberof Address4
 25315       * @instance
 25316       * @returns {Address4}
 25317       */
 25318      startAddressExclusive() {
 25319          const adjust = new jsbn_1.BigInteger('1');
 25320          return Address4.fromBigInteger(this._startAddress().add(adjust));
 25321      }
 25322      /**
 25323       * Helper function getting end address.
 25324       * @memberof Address4
 25325       * @instance
 25326       * @returns {BigInteger}
 25327       */
 25328      _endAddress() {
 25329          return new jsbn_1.BigInteger(this.mask() + '1'.repeat(constants.BITS - this.subnetMask), 2);
 25330      }
 25331      /**
 25332       * The last address in the range given by this address' subnet
 25333       * Often referred to as the Broadcast
 25334       * @memberof Address4
 25335       * @instance
 25336       * @returns {Address4}
 25337       */
 25338      endAddress() {
 25339          return Address4.fromBigInteger(this._endAddress());
 25340      }
 25341      /**
 25342       * The last host address in the range given by this address's subnet ie
 25343       * the last address prior to the Broadcast Address
 25344       * @memberof Address4
 25345       * @instance
 25346       * @returns {Address4}
 25347       */
 25348      endAddressExclusive() {
 25349          const adjust = new jsbn_1.BigInteger('1');
 25350          return Address4.fromBigInteger(this._endAddress().subtract(adjust));
 25351      }
 25352      /**
 25353       * Converts a BigInteger to a v4 address object
 25354       * @memberof Address4
 25355       * @static
 25356       * @param {BigInteger} bigInteger - a BigInteger to convert
 25357       * @returns {Address4}
 25358       */
 25359      static fromBigInteger(bigInteger) {
 25360          return Address4.fromInteger(parseInt(bigInteger.toString(), 10));
 25361      }
 25362      /**
 25363       * Returns the first n bits of the address, defaulting to the
 25364       * subnet mask
 25365       * @memberof Address4
 25366       * @instance
 25367       * @returns {String}
 25368       */
 25369      mask(mask) {
 25370          if (mask === undefined) {
 25371              mask = this.subnetMask;
 25372          }
 25373          return this.getBitsBase2(0, mask);
 25374      }
 25375      /**
 25376       * Returns the bits in the given range as a base-2 string
 25377       * @memberof Address4
 25378       * @instance
 25379       * @returns {string}
 25380       */
 25381      getBitsBase2(start, end) {
 25382          return this.binaryZeroPad().slice(start, end);
 25383      }
 25384      /**
 25385       * Return the reversed ip6.arpa form of the address
 25386       * @memberof Address4
 25387       * @param {Object} options
 25388       * @param {boolean} options.omitSuffix - omit the "in-addr.arpa" suffix
 25389       * @instance
 25390       * @returns {String}
 25391       */
 25392      reverseForm(options) {
 25393          if (!options) {
 25394              options = {};
 25395          }
 25396          const reversed = this.correctForm().split('.').reverse().join('.');
 25397          if (options.omitSuffix) {
 25398              return reversed;
 25399          }
 25400          return (0, sprintf_js_1.sprintf)('%s.in-addr.arpa.', reversed);
 25401      }
 25402      /**
 25403       * Returns true if the given address is a multicast address
 25404       * @memberof Address4
 25405       * @instance
 25406       * @returns {boolean}
 25407       */
 25408      isMulticast() {
 25409          return this.isInSubnet(new Address4('224.0.0.0/4'));
 25410      }
 25411      /**
 25412       * Returns a zero-padded base-2 string representation of the address
 25413       * @memberof Address4
 25414       * @instance
 25415       * @returns {string}
 25416       */
 25417      binaryZeroPad() {
 25418          return this.bigInteger().toString(2).padStart(constants.BITS, '0');
 25419      }
 25420      /**
 25421       * Groups an IPv4 address for inclusion at the end of an IPv6 address
 25422       * @returns {String}
 25423       */
 25424      groupForV6() {
 25425          const segments = this.parsedAddress;
 25426          return this.address.replace(constants.RE_ADDRESS, (0, sprintf_js_1.sprintf)('<span class="hover-group group-v4 group-6">%s</span>.<span class="hover-group group-v4 group-7">%s</span>', segments.slice(0, 2).join('.'), segments.slice(2, 4).join('.')));
 25427      }
 25428  }
 25429  exports.Address4 = Address4;
 25430  //# sourceMappingURL=ipv4.js.map
 25431  
 25432  /***/ }),
 25433  
 25434  /***/ 88292:
 25435  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 25436  
 25437  "use strict";
 25438  
 25439  /* eslint-disable prefer-destructuring */
 25440  /* eslint-disable no-param-reassign */
 25441  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 25442      if (k2 === undefined) k2 = k;
 25443      var desc = Object.getOwnPropertyDescriptor(m, k);
 25444      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 25445        desc = { enumerable: true, get: function() { return m[k]; } };
 25446      }
 25447      Object.defineProperty(o, k2, desc);
 25448  }) : (function(o, m, k, k2) {
 25449      if (k2 === undefined) k2 = k;
 25450      o[k2] = m[k];
 25451  }));
 25452  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 25453      Object.defineProperty(o, "default", { enumerable: true, value: v });
 25454  }) : function(o, v) {
 25455      o["default"] = v;
 25456  });
 25457  var __importStar = (this && this.__importStar) || function (mod) {
 25458      if (mod && mod.__esModule) return mod;
 25459      var result = {};
 25460      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 25461      __setModuleDefault(result, mod);
 25462      return result;
 25463  };
 25464  Object.defineProperty(exports, "__esModule", ({ value: true }));
 25465  exports.Address6 = void 0;
 25466  const common = __importStar(__nccwpck_require__(53233));
 25467  const constants4 = __importStar(__nccwpck_require__(66417));
 25468  const constants6 = __importStar(__nccwpck_require__(31078));
 25469  const helpers = __importStar(__nccwpck_require__(10945));
 25470  const ipv4_1 = __nccwpck_require__(50753);
 25471  const regular_expressions_1 = __nccwpck_require__(46738);
 25472  const address_error_1 = __nccwpck_require__(50903);
 25473  const jsbn_1 = __nccwpck_require__(85587);
 25474  const sprintf_js_1 = __nccwpck_require__(33988);
 25475  function assert(condition) {
 25476      if (!condition) {
 25477          throw new Error('Assertion failed.');
 25478      }
 25479  }
 25480  function addCommas(number) {
 25481      const r = /(\d+)(\d{3})/;
 25482      while (r.test(number)) {
 25483          number = number.replace(r, '$1,$2');
 25484      }
 25485      return number;
 25486  }
 25487  function spanLeadingZeroes4(n) {
 25488      n = n.replace(/^(0{1,})([1-9]+)$/, '<span class="parse-error">$1</span>$2');
 25489      n = n.replace(/^(0{1,})(0)$/, '<span class="parse-error">$1</span>$2');
 25490      return n;
 25491  }
 25492  /*
 25493   * A helper function to compact an array
 25494   */
 25495  function compact(address, slice) {
 25496      const s1 = [];
 25497      const s2 = [];
 25498      let i;
 25499      for (i = 0; i < address.length; i++) {
 25500          if (i < slice[0]) {
 25501              s1.push(address[i]);
 25502          }
 25503          else if (i > slice[1]) {
 25504              s2.push(address[i]);
 25505          }
 25506      }
 25507      return s1.concat(['compact']).concat(s2);
 25508  }
 25509  function paddedHex(octet) {
 25510      return (0, sprintf_js_1.sprintf)('%04x', parseInt(octet, 16));
 25511  }
 25512  function unsignByte(b) {
 25513      // eslint-disable-next-line no-bitwise
 25514      return b & 0xff;
 25515  }
 25516  /**
 25517   * Represents an IPv6 address
 25518   * @class Address6
 25519   * @param {string} address - An IPv6 address string
 25520   * @param {number} [groups=8] - How many octets to parse
 25521   * @example
 25522   * var address = new Address6('2001::/32');
 25523   */
 25524  class Address6 {
 25525      constructor(address, optionalGroups) {
 25526          this.addressMinusSuffix = '';
 25527          this.parsedSubnet = '';
 25528          this.subnet = '/128';
 25529          this.subnetMask = 128;
 25530          this.v4 = false;
 25531          this.zone = '';
 25532          // #region Attributes
 25533          /**
 25534           * Returns true if the given address is in the subnet of the current address
 25535           * @memberof Address6
 25536           * @instance
 25537           * @returns {boolean}
 25538           */
 25539          this.isInSubnet = common.isInSubnet;
 25540          /**
 25541           * Returns true if the address is correct, false otherwise
 25542           * @memberof Address6
 25543           * @instance
 25544           * @returns {boolean}
 25545           */
 25546          this.isCorrect = common.isCorrect(constants6.BITS);
 25547          if (optionalGroups === undefined) {
 25548              this.groups = constants6.GROUPS;
 25549          }
 25550          else {
 25551              this.groups = optionalGroups;
 25552          }
 25553          this.address = address;
 25554          const subnet = constants6.RE_SUBNET_STRING.exec(address);
 25555          if (subnet) {
 25556              this.parsedSubnet = subnet[0].replace('/', '');
 25557              this.subnetMask = parseInt(this.parsedSubnet, 10);
 25558              this.subnet = `/${this.subnetMask}`;
 25559              if (Number.isNaN(this.subnetMask) ||
 25560                  this.subnetMask < 0 ||
 25561                  this.subnetMask > constants6.BITS) {
 25562                  throw new address_error_1.AddressError('Invalid subnet mask.');
 25563              }
 25564              address = address.replace(constants6.RE_SUBNET_STRING, '');
 25565          }
 25566          else if (/\//.test(address)) {
 25567              throw new address_error_1.AddressError('Invalid subnet mask.');
 25568          }
 25569          const zone = constants6.RE_ZONE_STRING.exec(address);
 25570          if (zone) {
 25571              this.zone = zone[0];
 25572              address = address.replace(constants6.RE_ZONE_STRING, '');
 25573          }
 25574          this.addressMinusSuffix = address;
 25575          this.parsedAddress = this.parse(this.addressMinusSuffix);
 25576      }
 25577      static isValid(address) {
 25578          try {
 25579              // eslint-disable-next-line no-new
 25580              new Address6(address);
 25581              return true;
 25582          }
 25583          catch (e) {
 25584              return false;
 25585          }
 25586      }
 25587      /**
 25588       * Convert a BigInteger to a v6 address object
 25589       * @memberof Address6
 25590       * @static
 25591       * @param {BigInteger} bigInteger - a BigInteger to convert
 25592       * @returns {Address6}
 25593       * @example
 25594       * var bigInteger = new BigInteger('1000000000000');
 25595       * var address = Address6.fromBigInteger(bigInteger);
 25596       * address.correctForm(); // '::e8:d4a5:1000'
 25597       */
 25598      static fromBigInteger(bigInteger) {
 25599          const hex = bigInteger.toString(16).padStart(32, '0');
 25600          const groups = [];
 25601          let i;
 25602          for (i = 0; i < constants6.GROUPS; i++) {
 25603              groups.push(hex.slice(i * 4, (i + 1) * 4));
 25604          }
 25605          return new Address6(groups.join(':'));
 25606      }
 25607      /**
 25608       * Convert a URL (with optional port number) to an address object
 25609       * @memberof Address6
 25610       * @static
 25611       * @param {string} url - a URL with optional port number
 25612       * @example
 25613       * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/');
 25614       * addressAndPort.address.correctForm(); // 'ffff::'
 25615       * addressAndPort.port; // 8080
 25616       */
 25617      static fromURL(url) {
 25618          let host;
 25619          let port = null;
 25620          let result;
 25621          // If we have brackets parse them and find a port
 25622          if (url.indexOf('[') !== -1 && url.indexOf(']:') !== -1) {
 25623              result = constants6.RE_URL_WITH_PORT.exec(url);
 25624              if (result === null) {
 25625                  return {
 25626                      error: 'failed to parse address with port',
 25627                      address: null,
 25628                      port: null,
 25629                  };
 25630              }
 25631              host = result[1];
 25632              port = result[2];
 25633              // If there's a URL extract the address
 25634          }
 25635          else if (url.indexOf('/') !== -1) {
 25636              // Remove the protocol prefix
 25637              url = url.replace(/^[a-z0-9]+:\/\//, '');
 25638              // Parse the address
 25639              result = constants6.RE_URL.exec(url);
 25640              if (result === null) {
 25641                  return {
 25642                      error: 'failed to parse address from URL',
 25643                      address: null,
 25644                      port: null,
 25645                  };
 25646              }
 25647              host = result[1];
 25648              // Otherwise just assign the URL to the host and let the library parse it
 25649          }
 25650          else {
 25651              host = url;
 25652          }
 25653          // If there's a port convert it to an integer
 25654          if (port) {
 25655              port = parseInt(port, 10);
 25656              // squelch out of range ports
 25657              if (port < 0 || port > 65536) {
 25658                  port = null;
 25659              }
 25660          }
 25661          else {
 25662              // Standardize `undefined` to `null`
 25663              port = null;
 25664          }
 25665          return {
 25666              address: new Address6(host),
 25667              port,
 25668          };
 25669      }
 25670      /**
 25671       * Create an IPv6-mapped address given an IPv4 address
 25672       * @memberof Address6
 25673       * @static
 25674       * @param {string} address - An IPv4 address string
 25675       * @returns {Address6}
 25676       * @example
 25677       * var address = Address6.fromAddress4('192.168.0.1');
 25678       * address.correctForm(); // '::ffff:c0a8:1'
 25679       * address.to4in6(); // '::ffff:192.168.0.1'
 25680       */
 25681      static fromAddress4(address) {
 25682          const address4 = new ipv4_1.Address4(address);
 25683          const mask6 = constants6.BITS - (constants4.BITS - address4.subnetMask);
 25684          return new Address6(`::ffff:${address4.correctForm()}/${mask6}`);
 25685      }
 25686      /**
 25687       * Return an address from ip6.arpa form
 25688       * @memberof Address6
 25689       * @static
 25690       * @param {string} arpaFormAddress - an 'ip6.arpa' form address
 25691       * @returns {Adress6}
 25692       * @example
 25693       * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.)
 25694       * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe'
 25695       */
 25696      static fromArpa(arpaFormAddress) {
 25697          // remove ending ".ip6.arpa." or just "."
 25698          let address = arpaFormAddress.replace(/(\.ip6\.arpa)?\.$/, '');
 25699          const semicolonAmount = 7;
 25700          // correct ip6.arpa form with ending removed will be 63 characters
 25701          if (address.length !== 63) {
 25702              throw new address_error_1.AddressError("Invalid 'ip6.arpa' form.");
 25703          }
 25704          const parts = address.split('.').reverse();
 25705          for (let i = semicolonAmount; i > 0; i--) {
 25706              const insertIndex = i * 4;
 25707              parts.splice(insertIndex, 0, ':');
 25708          }
 25709          address = parts.join('');
 25710          return new Address6(address);
 25711      }
 25712      /**
 25713       * Return the Microsoft UNC transcription of the address
 25714       * @memberof Address6
 25715       * @instance
 25716       * @returns {String} the Microsoft UNC transcription of the address
 25717       */
 25718      microsoftTranscription() {
 25719          return (0, sprintf_js_1.sprintf)('%s.ipv6-literal.net', this.correctForm().replace(/:/g, '-'));
 25720      }
 25721      /**
 25722       * Return the first n bits of the address, defaulting to the subnet mask
 25723       * @memberof Address6
 25724       * @instance
 25725       * @param {number} [mask=subnet] - the number of bits to mask
 25726       * @returns {String} the first n bits of the address as a string
 25727       */
 25728      mask(mask = this.subnetMask) {
 25729          return this.getBitsBase2(0, mask);
 25730      }
 25731      /**
 25732       * Return the number of possible subnets of a given size in the address
 25733       * @memberof Address6
 25734       * @instance
 25735       * @param {number} [size=128] - the subnet size
 25736       * @returns {String}
 25737       */
 25738      // TODO: probably useful to have a numeric version of this too
 25739      possibleSubnets(subnetSize = 128) {
 25740          const availableBits = constants6.BITS - this.subnetMask;
 25741          const subnetBits = Math.abs(subnetSize - constants6.BITS);
 25742          const subnetPowers = availableBits - subnetBits;
 25743          if (subnetPowers < 0) {
 25744              return '0';
 25745          }
 25746          return addCommas(new jsbn_1.BigInteger('2', 10).pow(subnetPowers).toString(10));
 25747      }
 25748      /**
 25749       * Helper function getting start address.
 25750       * @memberof Address6
 25751       * @instance
 25752       * @returns {BigInteger}
 25753       */
 25754      _startAddress() {
 25755          return new jsbn_1.BigInteger(this.mask() + '0'.repeat(constants6.BITS - this.subnetMask), 2);
 25756      }
 25757      /**
 25758       * The first address in the range given by this address' subnet
 25759       * Often referred to as the Network Address.
 25760       * @memberof Address6
 25761       * @instance
 25762       * @returns {Address6}
 25763       */
 25764      startAddress() {
 25765          return Address6.fromBigInteger(this._startAddress());
 25766      }
 25767      /**
 25768       * The first host address in the range given by this address's subnet ie
 25769       * the first address after the Network Address
 25770       * @memberof Address6
 25771       * @instance
 25772       * @returns {Address6}
 25773       */
 25774      startAddressExclusive() {
 25775          const adjust = new jsbn_1.BigInteger('1');
 25776          return Address6.fromBigInteger(this._startAddress().add(adjust));
 25777      }
 25778      /**
 25779       * Helper function getting end address.
 25780       * @memberof Address6
 25781       * @instance
 25782       * @returns {BigInteger}
 25783       */
 25784      _endAddress() {
 25785          return new jsbn_1.BigInteger(this.mask() + '1'.repeat(constants6.BITS - this.subnetMask), 2);
 25786      }
 25787      /**
 25788       * The last address in the range given by this address' subnet
 25789       * Often referred to as the Broadcast
 25790       * @memberof Address6
 25791       * @instance
 25792       * @returns {Address6}
 25793       */
 25794      endAddress() {
 25795          return Address6.fromBigInteger(this._endAddress());
 25796      }
 25797      /**
 25798       * The last host address in the range given by this address's subnet ie
 25799       * the last address prior to the Broadcast Address
 25800       * @memberof Address6
 25801       * @instance
 25802       * @returns {Address6}
 25803       */
 25804      endAddressExclusive() {
 25805          const adjust = new jsbn_1.BigInteger('1');
 25806          return Address6.fromBigInteger(this._endAddress().subtract(adjust));
 25807      }
 25808      /**
 25809       * Return the scope of the address
 25810       * @memberof Address6
 25811       * @instance
 25812       * @returns {String}
 25813       */
 25814      getScope() {
 25815          let scope = constants6.SCOPES[this.getBits(12, 16).intValue()];
 25816          if (this.getType() === 'Global unicast' && scope !== 'Link local') {
 25817              scope = 'Global';
 25818          }
 25819          return scope || 'Unknown';
 25820      }
 25821      /**
 25822       * Return the type of the address
 25823       * @memberof Address6
 25824       * @instance
 25825       * @returns {String}
 25826       */
 25827      getType() {
 25828          for (const subnet of Object.keys(constants6.TYPES)) {
 25829              if (this.isInSubnet(new Address6(subnet))) {
 25830                  return constants6.TYPES[subnet];
 25831              }
 25832          }
 25833          return 'Global unicast';
 25834      }
 25835      /**
 25836       * Return the bits in the given range as a BigInteger
 25837       * @memberof Address6
 25838       * @instance
 25839       * @returns {BigInteger}
 25840       */
 25841      getBits(start, end) {
 25842          return new jsbn_1.BigInteger(this.getBitsBase2(start, end), 2);
 25843      }
 25844      /**
 25845       * Return the bits in the given range as a base-2 string
 25846       * @memberof Address6
 25847       * @instance
 25848       * @returns {String}
 25849       */
 25850      getBitsBase2(start, end) {
 25851          return this.binaryZeroPad().slice(start, end);
 25852      }
 25853      /**
 25854       * Return the bits in the given range as a base-16 string
 25855       * @memberof Address6
 25856       * @instance
 25857       * @returns {String}
 25858       */
 25859      getBitsBase16(start, end) {
 25860          const length = end - start;
 25861          if (length % 4 !== 0) {
 25862              throw new Error('Length of bits to retrieve must be divisible by four');
 25863          }
 25864          return this.getBits(start, end)
 25865              .toString(16)
 25866              .padStart(length / 4, '0');
 25867      }
 25868      /**
 25869       * Return the bits that are set past the subnet mask length
 25870       * @memberof Address6
 25871       * @instance
 25872       * @returns {String}
 25873       */
 25874      getBitsPastSubnet() {
 25875          return this.getBitsBase2(this.subnetMask, constants6.BITS);
 25876      }
 25877      /**
 25878       * Return the reversed ip6.arpa form of the address
 25879       * @memberof Address6
 25880       * @param {Object} options
 25881       * @param {boolean} options.omitSuffix - omit the "ip6.arpa" suffix
 25882       * @instance
 25883       * @returns {String}
 25884       */
 25885      reverseForm(options) {
 25886          if (!options) {
 25887              options = {};
 25888          }
 25889          const characters = Math.floor(this.subnetMask / 4);
 25890          const reversed = this.canonicalForm()
 25891              .replace(/:/g, '')
 25892              .split('')
 25893              .slice(0, characters)
 25894              .reverse()
 25895              .join('.');
 25896          if (characters > 0) {
 25897              if (options.omitSuffix) {
 25898                  return reversed;
 25899              }
 25900              return (0, sprintf_js_1.sprintf)('%s.ip6.arpa.', reversed);
 25901          }
 25902          if (options.omitSuffix) {
 25903              return '';
 25904          }
 25905          return 'ip6.arpa.';
 25906      }
 25907      /**
 25908       * Return the correct form of the address
 25909       * @memberof Address6
 25910       * @instance
 25911       * @returns {String}
 25912       */
 25913      correctForm() {
 25914          let i;
 25915          let groups = [];
 25916          let zeroCounter = 0;
 25917          const zeroes = [];
 25918          for (i = 0; i < this.parsedAddress.length; i++) {
 25919              const value = parseInt(this.parsedAddress[i], 16);
 25920              if (value === 0) {
 25921                  zeroCounter++;
 25922              }
 25923              if (value !== 0 && zeroCounter > 0) {
 25924                  if (zeroCounter > 1) {
 25925                      zeroes.push([i - zeroCounter, i - 1]);
 25926                  }
 25927                  zeroCounter = 0;
 25928              }
 25929          }
 25930          // Do we end with a string of zeroes?
 25931          if (zeroCounter > 1) {
 25932              zeroes.push([this.parsedAddress.length - zeroCounter, this.parsedAddress.length - 1]);
 25933          }
 25934          const zeroLengths = zeroes.map((n) => n[1] - n[0] + 1);
 25935          if (zeroes.length > 0) {
 25936              const index = zeroLengths.indexOf(Math.max(...zeroLengths));
 25937              groups = compact(this.parsedAddress, zeroes[index]);
 25938          }
 25939          else {
 25940              groups = this.parsedAddress;
 25941          }
 25942          for (i = 0; i < groups.length; i++) {
 25943              if (groups[i] !== 'compact') {
 25944                  groups[i] = parseInt(groups[i], 16).toString(16);
 25945              }
 25946          }
 25947          let correct = groups.join(':');
 25948          correct = correct.replace(/^compact$/, '::');
 25949          correct = correct.replace(/^compact|compact$/, ':');
 25950          correct = correct.replace(/compact/, '');
 25951          return correct;
 25952      }
 25953      /**
 25954       * Return a zero-padded base-2 string representation of the address
 25955       * @memberof Address6
 25956       * @instance
 25957       * @returns {String}
 25958       * @example
 25959       * var address = new Address6('2001:4860:4001:803::1011');
 25960       * address.binaryZeroPad();
 25961       * // '0010000000000001010010000110000001000000000000010000100000000011
 25962       * //  0000000000000000000000000000000000000000000000000001000000010001'
 25963       */
 25964      binaryZeroPad() {
 25965          return this.bigInteger().toString(2).padStart(constants6.BITS, '0');
 25966      }
 25967      // TODO: Improve the semantics of this helper function
 25968      parse4in6(address) {
 25969          const groups = address.split(':');
 25970          const lastGroup = groups.slice(-1)[0];
 25971          const address4 = lastGroup.match(constants4.RE_ADDRESS);
 25972          if (address4) {
 25973              this.parsedAddress4 = address4[0];
 25974              this.address4 = new ipv4_1.Address4(this.parsedAddress4);
 25975              for (let i = 0; i < this.address4.groups; i++) {
 25976                  if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) {
 25977                      throw new address_error_1.AddressError("IPv4 addresses can't have leading zeroes.", address.replace(constants4.RE_ADDRESS, this.address4.parsedAddress.map(spanLeadingZeroes4).join('.')));
 25978                  }
 25979              }
 25980              this.v4 = true;
 25981              groups[groups.length - 1] = this.address4.toGroup6();
 25982              address = groups.join(':');
 25983          }
 25984          return address;
 25985      }
 25986      // TODO: Make private?
 25987      parse(address) {
 25988          address = this.parse4in6(address);
 25989          const badCharacters = address.match(constants6.RE_BAD_CHARACTERS);
 25990          if (badCharacters) {
 25991              throw new address_error_1.AddressError((0, sprintf_js_1.sprintf)('Bad character%s detected in address: %s', badCharacters.length > 1 ? 's' : '', badCharacters.join('')), address.replace(constants6.RE_BAD_CHARACTERS, '<span class="parse-error">$1</span>'));
 25992          }
 25993          const badAddress = address.match(constants6.RE_BAD_ADDRESS);
 25994          if (badAddress) {
 25995              throw new address_error_1.AddressError((0, sprintf_js_1.sprintf)('Address failed regex: %s', badAddress.join('')), address.replace(constants6.RE_BAD_ADDRESS, '<span class="parse-error">$1</span>'));
 25996          }
 25997          let groups = [];
 25998          const halves = address.split('::');
 25999          if (halves.length === 2) {
 26000              let first = halves[0].split(':');
 26001              let last = halves[1].split(':');
 26002              if (first.length === 1 && first[0] === '') {
 26003                  first = [];
 26004              }
 26005              if (last.length === 1 && last[0] === '') {
 26006                  last = [];
 26007              }
 26008              const remaining = this.groups - (first.length + last.length);
 26009              if (!remaining) {
 26010                  throw new address_error_1.AddressError('Error parsing groups');
 26011              }
 26012              this.elidedGroups = remaining;
 26013              this.elisionBegin = first.length;
 26014              this.elisionEnd = first.length + this.elidedGroups;
 26015              groups = groups.concat(first);
 26016              for (let i = 0; i < remaining; i++) {
 26017                  groups.push('0');
 26018              }
 26019              groups = groups.concat(last);
 26020          }
 26021          else if (halves.length === 1) {
 26022              groups = address.split(':');
 26023              this.elidedGroups = 0;
 26024          }
 26025          else {
 26026              throw new address_error_1.AddressError('Too many :: groups found');
 26027          }
 26028          groups = groups.map((group) => (0, sprintf_js_1.sprintf)('%x', parseInt(group, 16)));
 26029          if (groups.length !== this.groups) {
 26030              throw new address_error_1.AddressError('Incorrect number of groups found');
 26031          }
 26032          return groups;
 26033      }
 26034      /**
 26035       * Return the canonical form of the address
 26036       * @memberof Address6
 26037       * @instance
 26038       * @returns {String}
 26039       */
 26040      canonicalForm() {
 26041          return this.parsedAddress.map(paddedHex).join(':');
 26042      }
 26043      /**
 26044       * Return the decimal form of the address
 26045       * @memberof Address6
 26046       * @instance
 26047       * @returns {String}
 26048       */
 26049      decimal() {
 26050          return this.parsedAddress.map((n) => (0, sprintf_js_1.sprintf)('%05d', parseInt(n, 16))).join(':');
 26051      }
 26052      /**
 26053       * Return the address as a BigInteger
 26054       * @memberof Address6
 26055       * @instance
 26056       * @returns {BigInteger}
 26057       */
 26058      bigInteger() {
 26059          return new jsbn_1.BigInteger(this.parsedAddress.map(paddedHex).join(''), 16);
 26060      }
 26061      /**
 26062       * Return the last two groups of this address as an IPv4 address string
 26063       * @memberof Address6
 26064       * @instance
 26065       * @returns {Address4}
 26066       * @example
 26067       * var address = new Address6('2001:4860:4001::1825:bf11');
 26068       * address.to4().correctForm(); // '24.37.191.17'
 26069       */
 26070      to4() {
 26071          const binary = this.binaryZeroPad().split('');
 26072          return ipv4_1.Address4.fromHex(new jsbn_1.BigInteger(binary.slice(96, 128).join(''), 2).toString(16));
 26073      }
 26074      /**
 26075       * Return the v4-in-v6 form of the address
 26076       * @memberof Address6
 26077       * @instance
 26078       * @returns {String}
 26079       */
 26080      to4in6() {
 26081          const address4 = this.to4();
 26082          const address6 = new Address6(this.parsedAddress.slice(0, 6).join(':'), 6);
 26083          const correct = address6.correctForm();
 26084          let infix = '';
 26085          if (!/:$/.test(correct)) {
 26086              infix = ':';
 26087          }
 26088          return correct + infix + address4.address;
 26089      }
 26090      /**
 26091       * Return an object containing the Teredo properties of the address
 26092       * @memberof Address6
 26093       * @instance
 26094       * @returns {Object}
 26095       */
 26096      inspectTeredo() {
 26097          /*
 26098          - Bits 0 to 31 are set to the Teredo prefix (normally 2001:0000::/32).
 26099          - Bits 32 to 63 embed the primary IPv4 address of the Teredo server that
 26100            is used.
 26101          - Bits 64 to 79 can be used to define some flags. Currently only the
 26102            higher order bit is used; it is set to 1 if the Teredo client is
 26103            located behind a cone NAT, 0 otherwise. For Microsoft's Windows Vista
 26104            and Windows Server 2008 implementations, more bits are used. In those
 26105            implementations, the format for these 16 bits is "CRAAAAUG AAAAAAAA",
 26106            where "C" remains the "Cone" flag. The "R" bit is reserved for future
 26107            use. The "U" bit is for the Universal/Local flag (set to 0). The "G" bit
 26108            is Individual/Group flag (set to 0). The A bits are set to a 12-bit
 26109            randomly generated number chosen by the Teredo client to introduce
 26110            additional protection for the Teredo node against IPv6-based scanning
 26111            attacks.
 26112          - Bits 80 to 95 contains the obfuscated UDP port number. This is the
 26113            port number that is mapped by the NAT to the Teredo client with all
 26114            bits inverted.
 26115          - Bits 96 to 127 contains the obfuscated IPv4 address. This is the
 26116            public IPv4 address of the NAT with all bits inverted.
 26117          */
 26118          const prefix = this.getBitsBase16(0, 32);
 26119          const udpPort = this.getBits(80, 96).xor(new jsbn_1.BigInteger('ffff', 16)).toString();
 26120          const server4 = ipv4_1.Address4.fromHex(this.getBitsBase16(32, 64));
 26121          const client4 = ipv4_1.Address4.fromHex(this.getBits(96, 128).xor(new jsbn_1.BigInteger('ffffffff', 16)).toString(16));
 26122          const flags = this.getBits(64, 80);
 26123          const flagsBase2 = this.getBitsBase2(64, 80);
 26124          const coneNat = flags.testBit(15);
 26125          const reserved = flags.testBit(14);
 26126          const groupIndividual = flags.testBit(8);
 26127          const universalLocal = flags.testBit(9);
 26128          const nonce = new jsbn_1.BigInteger(flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16), 2).toString(10);
 26129          return {
 26130              prefix: (0, sprintf_js_1.sprintf)('%s:%s', prefix.slice(0, 4), prefix.slice(4, 8)),
 26131              server4: server4.address,
 26132              client4: client4.address,
 26133              flags: flagsBase2,
 26134              coneNat,
 26135              microsoft: {
 26136                  reserved,
 26137                  universalLocal,
 26138                  groupIndividual,
 26139                  nonce,
 26140              },
 26141              udpPort,
 26142          };
 26143      }
 26144      /**
 26145       * Return an object containing the 6to4 properties of the address
 26146       * @memberof Address6
 26147       * @instance
 26148       * @returns {Object}
 26149       */
 26150      inspect6to4() {
 26151          /*
 26152          - Bits 0 to 15 are set to the 6to4 prefix (2002::/16).
 26153          - Bits 16 to 48 embed the IPv4 address of the 6to4 gateway that is used.
 26154          */
 26155          const prefix = this.getBitsBase16(0, 16);
 26156          const gateway = ipv4_1.Address4.fromHex(this.getBitsBase16(16, 48));
 26157          return {
 26158              prefix: (0, sprintf_js_1.sprintf)('%s', prefix.slice(0, 4)),
 26159              gateway: gateway.address,
 26160          };
 26161      }
 26162      /**
 26163       * Return a v6 6to4 address from a v6 v4inv6 address
 26164       * @memberof Address6
 26165       * @instance
 26166       * @returns {Address6}
 26167       */
 26168      to6to4() {
 26169          if (!this.is4()) {
 26170              return null;
 26171          }
 26172          const addr6to4 = [
 26173              '2002',
 26174              this.getBitsBase16(96, 112),
 26175              this.getBitsBase16(112, 128),
 26176              '',
 26177              '/16',
 26178          ].join(':');
 26179          return new Address6(addr6to4);
 26180      }
 26181      /**
 26182       * Return a byte array
 26183       * @memberof Address6
 26184       * @instance
 26185       * @returns {Array}
 26186       */
 26187      toByteArray() {
 26188          const byteArray = this.bigInteger().toByteArray();
 26189          // work around issue where `toByteArray` returns a leading 0 element
 26190          if (byteArray.length === 17 && byteArray[0] === 0) {
 26191              return byteArray.slice(1);
 26192          }
 26193          return byteArray;
 26194      }
 26195      /**
 26196       * Return an unsigned byte array
 26197       * @memberof Address6
 26198       * @instance
 26199       * @returns {Array}
 26200       */
 26201      toUnsignedByteArray() {
 26202          return this.toByteArray().map(unsignByte);
 26203      }
 26204      /**
 26205       * Convert a byte array to an Address6 object
 26206       * @memberof Address6
 26207       * @static
 26208       * @returns {Address6}
 26209       */
 26210      static fromByteArray(bytes) {
 26211          return this.fromUnsignedByteArray(bytes.map(unsignByte));
 26212      }
 26213      /**
 26214       * Convert an unsigned byte array to an Address6 object
 26215       * @memberof Address6
 26216       * @static
 26217       * @returns {Address6}
 26218       */
 26219      static fromUnsignedByteArray(bytes) {
 26220          const BYTE_MAX = new jsbn_1.BigInteger('256', 10);
 26221          let result = new jsbn_1.BigInteger('0', 10);
 26222          let multiplier = new jsbn_1.BigInteger('1', 10);
 26223          for (let i = bytes.length - 1; i >= 0; i--) {
 26224              result = result.add(multiplier.multiply(new jsbn_1.BigInteger(bytes[i].toString(10), 10)));
 26225              multiplier = multiplier.multiply(BYTE_MAX);
 26226          }
 26227          return Address6.fromBigInteger(result);
 26228      }
 26229      /**
 26230       * Returns true if the address is in the canonical form, false otherwise
 26231       * @memberof Address6
 26232       * @instance
 26233       * @returns {boolean}
 26234       */
 26235      isCanonical() {
 26236          return this.addressMinusSuffix === this.canonicalForm();
 26237      }
 26238      /**
 26239       * Returns true if the address is a link local address, false otherwise
 26240       * @memberof Address6
 26241       * @instance
 26242       * @returns {boolean}
 26243       */
 26244      isLinkLocal() {
 26245          // Zeroes are required, i.e. we can't check isInSubnet with 'fe80::/10'
 26246          if (this.getBitsBase2(0, 64) ===
 26247              '1111111010000000000000000000000000000000000000000000000000000000') {
 26248              return true;
 26249          }
 26250          return false;
 26251      }
 26252      /**
 26253       * Returns true if the address is a multicast address, false otherwise
 26254       * @memberof Address6
 26255       * @instance
 26256       * @returns {boolean}
 26257       */
 26258      isMulticast() {
 26259          return this.getType() === 'Multicast';
 26260      }
 26261      /**
 26262       * Returns true if the address is a v4-in-v6 address, false otherwise
 26263       * @memberof Address6
 26264       * @instance
 26265       * @returns {boolean}
 26266       */
 26267      is4() {
 26268          return this.v4;
 26269      }
 26270      /**
 26271       * Returns true if the address is a Teredo address, false otherwise
 26272       * @memberof Address6
 26273       * @instance
 26274       * @returns {boolean}
 26275       */
 26276      isTeredo() {
 26277          return this.isInSubnet(new Address6('2001::/32'));
 26278      }
 26279      /**
 26280       * Returns true if the address is a 6to4 address, false otherwise
 26281       * @memberof Address6
 26282       * @instance
 26283       * @returns {boolean}
 26284       */
 26285      is6to4() {
 26286          return this.isInSubnet(new Address6('2002::/16'));
 26287      }
 26288      /**
 26289       * Returns true if the address is a loopback address, false otherwise
 26290       * @memberof Address6
 26291       * @instance
 26292       * @returns {boolean}
 26293       */
 26294      isLoopback() {
 26295          return this.getType() === 'Loopback';
 26296      }
 26297      // #endregion
 26298      // #region HTML
 26299      /**
 26300       * @returns {String} the address in link form with a default port of 80
 26301       */
 26302      href(optionalPort) {
 26303          if (optionalPort === undefined) {
 26304              optionalPort = '';
 26305          }
 26306          else {
 26307              optionalPort = (0, sprintf_js_1.sprintf)(':%s', optionalPort);
 26308          }
 26309          return (0, sprintf_js_1.sprintf)('http://[%s]%s/', this.correctForm(), optionalPort);
 26310      }
 26311      /**
 26312       * @returns {String} a link suitable for conveying the address via a URL hash
 26313       */
 26314      link(options) {
 26315          if (!options) {
 26316              options = {};
 26317          }
 26318          if (options.className === undefined) {
 26319              options.className = '';
 26320          }
 26321          if (options.prefix === undefined) {
 26322              options.prefix = '/#address=';
 26323          }
 26324          if (options.v4 === undefined) {
 26325              options.v4 = false;
 26326          }
 26327          let formFunction = this.correctForm;
 26328          if (options.v4) {
 26329              formFunction = this.to4in6;
 26330          }
 26331          if (options.className) {
 26332              return (0, sprintf_js_1.sprintf)('<a href="%1$s%2$s" class="%3$s">%2$s</a>', options.prefix, formFunction.call(this), options.className);
 26333          }
 26334          return (0, sprintf_js_1.sprintf)('<a href="%1$s%2$s">%2$s</a>', options.prefix, formFunction.call(this));
 26335      }
 26336      /**
 26337       * Groups an address
 26338       * @returns {String}
 26339       */
 26340      group() {
 26341          if (this.elidedGroups === 0) {
 26342              // The simple case
 26343              return helpers.simpleGroup(this.address).join(':');
 26344          }
 26345          assert(typeof this.elidedGroups === 'number');
 26346          assert(typeof this.elisionBegin === 'number');
 26347          // The elided case
 26348          const output = [];
 26349          const [left, right] = this.address.split('::');
 26350          if (left.length) {
 26351              output.push(...helpers.simpleGroup(left));
 26352          }
 26353          else {
 26354              output.push('');
 26355          }
 26356          const classes = ['hover-group'];
 26357          for (let i = this.elisionBegin; i < this.elisionBegin + this.elidedGroups; i++) {
 26358              classes.push((0, sprintf_js_1.sprintf)('group-%d', i));
 26359          }
 26360          output.push((0, sprintf_js_1.sprintf)('<span class="%s"></span>', classes.join(' ')));
 26361          if (right.length) {
 26362              output.push(...helpers.simpleGroup(right, this.elisionEnd));
 26363          }
 26364          else {
 26365              output.push('');
 26366          }
 26367          if (this.is4()) {
 26368              assert(this.address4 instanceof ipv4_1.Address4);
 26369              output.pop();
 26370              output.push(this.address4.groupForV6());
 26371          }
 26372          return output.join(':');
 26373      }
 26374      // #endregion
 26375      // #region Regular expressions
 26376      /**
 26377       * Generate a regular expression string that can be used to find or validate
 26378       * all variations of this address
 26379       * @memberof Address6
 26380       * @instance
 26381       * @param {boolean} substringSearch
 26382       * @returns {string}
 26383       */
 26384      regularExpressionString(substringSearch = false) {
 26385          let output = [];
 26386          // TODO: revisit why this is necessary
 26387          const address6 = new Address6(this.correctForm());
 26388          if (address6.elidedGroups === 0) {
 26389              // The simple case
 26390              output.push((0, regular_expressions_1.simpleRegularExpression)(address6.parsedAddress));
 26391          }
 26392          else if (address6.elidedGroups === constants6.GROUPS) {
 26393              // A completely elided address
 26394              output.push((0, regular_expressions_1.possibleElisions)(constants6.GROUPS));
 26395          }
 26396          else {
 26397              // A partially elided address
 26398              const halves = address6.address.split('::');
 26399              if (halves[0].length) {
 26400                  output.push((0, regular_expressions_1.simpleRegularExpression)(halves[0].split(':')));
 26401              }
 26402              assert(typeof address6.elidedGroups === 'number');
 26403              output.push((0, regular_expressions_1.possibleElisions)(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0));
 26404              if (halves[1].length) {
 26405                  output.push((0, regular_expressions_1.simpleRegularExpression)(halves[1].split(':')));
 26406              }
 26407              output = [output.join(':')];
 26408          }
 26409          if (!substringSearch) {
 26410              output = [
 26411                  '(?=^|',
 26412                  regular_expressions_1.ADDRESS_BOUNDARY,
 26413                  '|[^\\w\\:])(',
 26414                  ...output,
 26415                  ')(?=[^\\w\\:]|',
 26416                  regular_expressions_1.ADDRESS_BOUNDARY,
 26417                  '|$)',
 26418              ];
 26419          }
 26420          return output.join('');
 26421      }
 26422      /**
 26423       * Generate a regular expression that can be used to find or validate all
 26424       * variations of this address.
 26425       * @memberof Address6
 26426       * @instance
 26427       * @param {boolean} substringSearch
 26428       * @returns {RegExp}
 26429       */
 26430      regularExpression(substringSearch = false) {
 26431          return new RegExp(this.regularExpressionString(substringSearch), 'i');
 26432      }
 26433  }
 26434  exports.Address6 = Address6;
 26435  //# sourceMappingURL=ipv6.js.map
 26436  
 26437  /***/ }),
 26438  
 26439  /***/ 66417:
 26440  /***/ ((__unused_webpack_module, exports) => {
 26441  
 26442  "use strict";
 26443  
 26444  Object.defineProperty(exports, "__esModule", ({ value: true }));
 26445  exports.RE_SUBNET_STRING = exports.RE_ADDRESS = exports.GROUPS = exports.BITS = void 0;
 26446  exports.BITS = 32;
 26447  exports.GROUPS = 4;
 26448  exports.RE_ADDRESS = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g;
 26449  exports.RE_SUBNET_STRING = /\/\d{1,2}$/;
 26450  //# sourceMappingURL=constants.js.map
 26451  
 26452  /***/ }),
 26453  
 26454  /***/ 31078:
 26455  /***/ ((__unused_webpack_module, exports) => {
 26456  
 26457  "use strict";
 26458  
 26459  Object.defineProperty(exports, "__esModule", ({ value: true }));
 26460  exports.RE_URL_WITH_PORT = exports.RE_URL = exports.RE_ZONE_STRING = exports.RE_SUBNET_STRING = exports.RE_BAD_ADDRESS = exports.RE_BAD_CHARACTERS = exports.TYPES = exports.SCOPES = exports.GROUPS = exports.BITS = void 0;
 26461  exports.BITS = 128;
 26462  exports.GROUPS = 8;
 26463  /**
 26464   * Represents IPv6 address scopes
 26465   * @memberof Address6
 26466   * @static
 26467   */
 26468  exports.SCOPES = {
 26469      0: 'Reserved',
 26470      1: 'Interface local',
 26471      2: 'Link local',
 26472      4: 'Admin local',
 26473      5: 'Site local',
 26474      8: 'Organization local',
 26475      14: 'Global',
 26476      15: 'Reserved',
 26477  };
 26478  /**
 26479   * Represents IPv6 address types
 26480   * @memberof Address6
 26481   * @static
 26482   */
 26483  exports.TYPES = {
 26484      'ff01::1/128': 'Multicast (All nodes on this interface)',
 26485      'ff01::2/128': 'Multicast (All routers on this interface)',
 26486      'ff02::1/128': 'Multicast (All nodes on this link)',
 26487      'ff02::2/128': 'Multicast (All routers on this link)',
 26488      'ff05::2/128': 'Multicast (All routers in this site)',
 26489      'ff02::5/128': 'Multicast (OSPFv3 AllSPF routers)',
 26490      'ff02::6/128': 'Multicast (OSPFv3 AllDR routers)',
 26491      'ff02::9/128': 'Multicast (RIP routers)',
 26492      'ff02::a/128': 'Multicast (EIGRP routers)',
 26493      'ff02::d/128': 'Multicast (PIM routers)',
 26494      'ff02::16/128': 'Multicast (MLDv2 reports)',
 26495      'ff01::fb/128': 'Multicast (mDNSv6)',
 26496      'ff02::fb/128': 'Multicast (mDNSv6)',
 26497      'ff05::fb/128': 'Multicast (mDNSv6)',
 26498      'ff02::1:2/128': 'Multicast (All DHCP servers and relay agents on this link)',
 26499      'ff05::1:2/128': 'Multicast (All DHCP servers and relay agents in this site)',
 26500      'ff02::1:3/128': 'Multicast (All DHCP servers on this link)',
 26501      'ff05::1:3/128': 'Multicast (All DHCP servers in this site)',
 26502      '::/128': 'Unspecified',
 26503      '::1/128': 'Loopback',
 26504      'ff00::/8': 'Multicast',
 26505      'fe80::/10': 'Link-local unicast',
 26506  };
 26507  /**
 26508   * A regular expression that matches bad characters in an IPv6 address
 26509   * @memberof Address6
 26510   * @static
 26511   */
 26512  exports.RE_BAD_CHARACTERS = /([^0-9a-f:/%])/gi;
 26513  /**
 26514   * A regular expression that matches an incorrect IPv6 address
 26515   * @memberof Address6
 26516   * @static
 26517   */
 26518  exports.RE_BAD_ADDRESS = /([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi;
 26519  /**
 26520   * A regular expression that matches an IPv6 subnet
 26521   * @memberof Address6
 26522   * @static
 26523   */
 26524  exports.RE_SUBNET_STRING = /\/\d{1,3}(?=%|$)/;
 26525  /**
 26526   * A regular expression that matches an IPv6 zone
 26527   * @memberof Address6
 26528   * @static
 26529   */
 26530  exports.RE_ZONE_STRING = /%.*$/;
 26531  exports.RE_URL = new RegExp(/^\[{0,1}([0-9a-f:]+)\]{0,1}/);
 26532  exports.RE_URL_WITH_PORT = new RegExp(/\[([0-9a-f:]+)\]:([0-9]{1,5})/);
 26533  //# sourceMappingURL=constants.js.map
 26534  
 26535  /***/ }),
 26536  
 26537  /***/ 10945:
 26538  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 26539  
 26540  "use strict";
 26541  
 26542  Object.defineProperty(exports, "__esModule", ({ value: true }));
 26543  exports.simpleGroup = exports.spanLeadingZeroes = exports.spanAll = exports.spanAllZeroes = void 0;
 26544  const sprintf_js_1 = __nccwpck_require__(33988);
 26545  /**
 26546   * @returns {String} the string with all zeroes contained in a <span>
 26547   */
 26548  function spanAllZeroes(s) {
 26549      return s.replace(/(0+)/g, '<span class="zero">$1</span>');
 26550  }
 26551  exports.spanAllZeroes = spanAllZeroes;
 26552  /**
 26553   * @returns {String} the string with each character contained in a <span>
 26554   */
 26555  function spanAll(s, offset = 0) {
 26556      const letters = s.split('');
 26557      return letters
 26558          .map((n, i) => (0, sprintf_js_1.sprintf)('<span class="digit value-%s position-%d">%s</span>', n, i + offset, spanAllZeroes(n)) // XXX Use #base-2 .value-0 instead?
 26559      )
 26560          .join('');
 26561  }
 26562  exports.spanAll = spanAll;
 26563  function spanLeadingZeroesSimple(group) {
 26564      return group.replace(/^(0+)/, '<span class="zero">$1</span>');
 26565  }
 26566  /**
 26567   * @returns {String} the string with leading zeroes contained in a <span>
 26568   */
 26569  function spanLeadingZeroes(address) {
 26570      const groups = address.split(':');
 26571      return groups.map((g) => spanLeadingZeroesSimple(g)).join(':');
 26572  }
 26573  exports.spanLeadingZeroes = spanLeadingZeroes;
 26574  /**
 26575   * Groups an address
 26576   * @returns {String} a grouped address
 26577   */
 26578  function simpleGroup(addressString, offset = 0) {
 26579      const groups = addressString.split(':');
 26580      return groups.map((g, i) => {
 26581          if (/group-v4/.test(g)) {
 26582              return g;
 26583          }
 26584          return (0, sprintf_js_1.sprintf)('<span class="hover-group group-%d">%s</span>', i + offset, spanLeadingZeroesSimple(g));
 26585      });
 26586  }
 26587  exports.simpleGroup = simpleGroup;
 26588  //# sourceMappingURL=helpers.js.map
 26589  
 26590  /***/ }),
 26591  
 26592  /***/ 46738:
 26593  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 26594  
 26595  "use strict";
 26596  
 26597  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 26598      if (k2 === undefined) k2 = k;
 26599      var desc = Object.getOwnPropertyDescriptor(m, k);
 26600      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 26601        desc = { enumerable: true, get: function() { return m[k]; } };
 26602      }
 26603      Object.defineProperty(o, k2, desc);
 26604  }) : (function(o, m, k, k2) {
 26605      if (k2 === undefined) k2 = k;
 26606      o[k2] = m[k];
 26607  }));
 26608  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 26609      Object.defineProperty(o, "default", { enumerable: true, value: v });
 26610  }) : function(o, v) {
 26611      o["default"] = v;
 26612  });
 26613  var __importStar = (this && this.__importStar) || function (mod) {
 26614      if (mod && mod.__esModule) return mod;
 26615      var result = {};
 26616      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 26617      __setModuleDefault(result, mod);
 26618      return result;
 26619  };
 26620  Object.defineProperty(exports, "__esModule", ({ value: true }));
 26621  exports.possibleElisions = exports.simpleRegularExpression = exports.ADDRESS_BOUNDARY = exports.padGroup = exports.groupPossibilities = void 0;
 26622  const v6 = __importStar(__nccwpck_require__(31078));
 26623  const sprintf_js_1 = __nccwpck_require__(33988);
 26624  function groupPossibilities(possibilities) {
 26625      return (0, sprintf_js_1.sprintf)('(%s)', possibilities.join('|'));
 26626  }
 26627  exports.groupPossibilities = groupPossibilities;
 26628  function padGroup(group) {
 26629      if (group.length < 4) {
 26630          return (0, sprintf_js_1.sprintf)('0{0,%d}%s', 4 - group.length, group);
 26631      }
 26632      return group;
 26633  }
 26634  exports.padGroup = padGroup;
 26635  exports.ADDRESS_BOUNDARY = '[^A-Fa-f0-9:]';
 26636  function simpleRegularExpression(groups) {
 26637      const zeroIndexes = [];
 26638      groups.forEach((group, i) => {
 26639          const groupInteger = parseInt(group, 16);
 26640          if (groupInteger === 0) {
 26641              zeroIndexes.push(i);
 26642          }
 26643      });
 26644      // You can technically elide a single 0, this creates the regular expressions
 26645      // to match that eventuality
 26646      const possibilities = zeroIndexes.map((zeroIndex) => groups
 26647          .map((group, i) => {
 26648          if (i === zeroIndex) {
 26649              const elision = i === 0 || i === v6.GROUPS - 1 ? ':' : '';
 26650              return groupPossibilities([padGroup(group), elision]);
 26651          }
 26652          return padGroup(group);
 26653      })
 26654          .join(':'));
 26655      // The simplest case
 26656      possibilities.push(groups.map(padGroup).join(':'));
 26657      return groupPossibilities(possibilities);
 26658  }
 26659  exports.simpleRegularExpression = simpleRegularExpression;
 26660  function possibleElisions(elidedGroups, moreLeft, moreRight) {
 26661      const left = moreLeft ? '' : ':';
 26662      const right = moreRight ? '' : ':';
 26663      const possibilities = [];
 26664      // 1. elision of everything (::)
 26665      if (!moreLeft && !moreRight) {
 26666          possibilities.push('::');
 26667      }
 26668      // 2. complete elision of the middle
 26669      if (moreLeft && moreRight) {
 26670          possibilities.push('');
 26671      }
 26672      if ((moreRight && !moreLeft) || (!moreRight && moreLeft)) {
 26673          // 3. complete elision of one side
 26674          possibilities.push(':');
 26675      }
 26676      // 4. elision from the left side
 26677      possibilities.push((0, sprintf_js_1.sprintf)('%s(:0{1,4}){1,%d}', left, elidedGroups - 1));
 26678      // 5. elision from the right side
 26679      possibilities.push((0, sprintf_js_1.sprintf)('(0{1,4}:){1,%d}%s', elidedGroups - 1, right));
 26680      // 6. no elision
 26681      possibilities.push((0, sprintf_js_1.sprintf)('(0{1,4}:){%d}0{1,4}', elidedGroups - 1));
 26682      // 7. elision (including sloppy elision) from the middle
 26683      for (let groups = 1; groups < elidedGroups - 1; groups++) {
 26684          for (let position = 1; position < elidedGroups - groups; position++) {
 26685              possibilities.push((0, sprintf_js_1.sprintf)('(0{1,4}:){%d}:(0{1,4}:){%d}0{1,4}', position, elidedGroups - position - groups - 1));
 26686          }
 26687      }
 26688      return groupPossibilities(possibilities);
 26689  }
 26690  exports.possibleElisions = possibleElisions;
 26691  //# sourceMappingURL=regular-expressions.js.map
 26692  
 26693  /***/ }),
 26694  
 26695  /***/ 85587:
 26696  /***/ (function(module, exports) {
 26697  
 26698  (function(){
 26699  
 26700      // Copyright (c) 2005  Tom Wu
 26701      // All Rights Reserved.
 26702      // See "LICENSE" for details.
 26703  
 26704      // Basic JavaScript BN library - subset useful for RSA encryption.
 26705  
 26706      // Bits per digit
 26707      var dbits;
 26708  
 26709      // JavaScript engine analysis
 26710      var canary = 0xdeadbeefcafe;
 26711      var j_lm = ((canary&0xffffff)==0xefcafe);
 26712  
 26713      // (public) Constructor
 26714      function BigInteger(a,b,c) {
 26715        if(a != null)
 26716          if("number" == typeof a) this.fromNumber(a,b,c);
 26717          else if(b == null && "string" != typeof a) this.fromString(a,256);
 26718          else this.fromString(a,b);
 26719      }
 26720  
 26721      // return new, unset BigInteger
 26722      function nbi() { return new BigInteger(null); }
 26723  
 26724      // am: Compute w_j += (x*this_i), propagate carries,
 26725      // c is initial carry, returns final carry.
 26726      // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
 26727      // We need to select the fastest one that works in this environment.
 26728  
 26729      // am1: use a single mult and divide to get the high bits,
 26730      // max digit bits should be 26 because
 26731      // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
 26732      function am1(i,x,w,j,c,n) {
 26733        while(--n >= 0) {
 26734          var v = x*this[i++]+w[j]+c;
 26735          c = Math.floor(v/0x4000000);
 26736          w[j++] = v&0x3ffffff;
 26737        }
 26738        return c;
 26739      }
 26740      // am2 avoids a big mult-and-extract completely.
 26741      // Max digit bits should be <= 30 because we do bitwise ops
 26742      // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
 26743      function am2(i,x,w,j,c,n) {
 26744        var xl = x&0x7fff, xh = x>>15;
 26745        while(--n >= 0) {
 26746          var l = this[i]&0x7fff;
 26747          var h = this[i++]>>15;
 26748          var m = xh*l+h*xl;
 26749          l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);
 26750          c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
 26751          w[j++] = l&0x3fffffff;
 26752        }
 26753        return c;
 26754      }
 26755      // Alternately, set max digit bits to 28 since some
 26756      // browsers slow down when dealing with 32-bit numbers.
 26757      function am3(i,x,w,j,c,n) {
 26758        var xl = x&0x3fff, xh = x>>14;
 26759        while(--n >= 0) {
 26760          var l = this[i]&0x3fff;
 26761          var h = this[i++]>>14;
 26762          var m = xh*l+h*xl;
 26763          l = xl*l+((m&0x3fff)<<14)+w[j]+c;
 26764          c = (l>>28)+(m>>14)+xh*h;
 26765          w[j++] = l&0xfffffff;
 26766        }
 26767        return c;
 26768      }
 26769      var inBrowser = typeof navigator !== "undefined";
 26770      if(inBrowser && j_lm && (navigator.appName == "Microsoft Internet Explorer")) {
 26771        BigInteger.prototype.am = am2;
 26772        dbits = 30;
 26773      }
 26774      else if(inBrowser && j_lm && (navigator.appName != "Netscape")) {
 26775        BigInteger.prototype.am = am1;
 26776        dbits = 26;
 26777      }
 26778      else { // Mozilla/Netscape seems to prefer am3
 26779        BigInteger.prototype.am = am3;
 26780        dbits = 28;
 26781      }
 26782  
 26783      BigInteger.prototype.DB = dbits;
 26784      BigInteger.prototype.DM = ((1<<dbits)-1);
 26785      BigInteger.prototype.DV = (1<<dbits);
 26786  
 26787      var BI_FP = 52;
 26788      BigInteger.prototype.FV = Math.pow(2,BI_FP);
 26789      BigInteger.prototype.F1 = BI_FP-dbits;
 26790      BigInteger.prototype.F2 = 2*dbits-BI_FP;
 26791  
 26792      // Digit conversions
 26793      var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
 26794      var BI_RC = new Array();
 26795      var rr,vv;
 26796      rr = "0".charCodeAt(0);
 26797      for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
 26798      rr = "a".charCodeAt(0);
 26799      for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
 26800      rr = "A".charCodeAt(0);
 26801      for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
 26802  
 26803      function int2char(n) { return BI_RM.charAt(n); }
 26804      function intAt(s,i) {
 26805        var c = BI_RC[s.charCodeAt(i)];
 26806        return (c==null)?-1:c;
 26807      }
 26808  
 26809      // (protected) copy this to r
 26810      function bnpCopyTo(r) {
 26811        for(var i = this.t-1; i >= 0; --i) r[i] = this[i];
 26812        r.t = this.t;
 26813        r.s = this.s;
 26814      }
 26815  
 26816      // (protected) set from integer value x, -DV <= x < DV
 26817      function bnpFromInt(x) {
 26818        this.t = 1;
 26819        this.s = (x<0)?-1:0;
 26820        if(x > 0) this[0] = x;
 26821        else if(x < -1) this[0] = x+this.DV;
 26822        else this.t = 0;
 26823      }
 26824  
 26825      // return bigint initialized to value
 26826      function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
 26827  
 26828      // (protected) set from string and radix
 26829      function bnpFromString(s,b) {
 26830        var k;
 26831        if(b == 16) k = 4;
 26832        else if(b == 8) k = 3;
 26833        else if(b == 256) k = 8; // byte array
 26834        else if(b == 2) k = 1;
 26835        else if(b == 32) k = 5;
 26836        else if(b == 4) k = 2;
 26837        else { this.fromRadix(s,b); return; }
 26838        this.t = 0;
 26839        this.s = 0;
 26840        var i = s.length, mi = false, sh = 0;
 26841        while(--i >= 0) {
 26842          var x = (k==8)?s[i]&0xff:intAt(s,i);
 26843          if(x < 0) {
 26844            if(s.charAt(i) == "-") mi = true;
 26845            continue;
 26846          }
 26847          mi = false;
 26848          if(sh == 0)
 26849            this[this.t++] = x;
 26850          else if(sh+k > this.DB) {
 26851            this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;
 26852            this[this.t++] = (x>>(this.DB-sh));
 26853          }
 26854          else
 26855            this[this.t-1] |= x<<sh;
 26856          sh += k;
 26857          if(sh >= this.DB) sh -= this.DB;
 26858        }
 26859        if(k == 8 && (s[0]&0x80) != 0) {
 26860          this.s = -1;
 26861          if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;
 26862        }
 26863        this.clamp();
 26864        if(mi) BigInteger.ZERO.subTo(this,this);
 26865      }
 26866  
 26867      // (protected) clamp off excess high words
 26868      function bnpClamp() {
 26869        var c = this.s&this.DM;
 26870        while(this.t > 0 && this[this.t-1] == c) --this.t;
 26871      }
 26872  
 26873      // (public) return string representation in given radix
 26874      function bnToString(b) {
 26875        if(this.s < 0) return "-"+this.negate().toString(b);
 26876        var k;
 26877        if(b == 16) k = 4;
 26878        else if(b == 8) k = 3;
 26879        else if(b == 2) k = 1;
 26880        else if(b == 32) k = 5;
 26881        else if(b == 4) k = 2;
 26882        else return this.toRadix(b);
 26883        var km = (1<<k)-1, d, m = false, r = "", i = this.t;
 26884        var p = this.DB-(i*this.DB)%k;
 26885        if(i-- > 0) {
 26886          if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }
 26887          while(i >= 0) {
 26888            if(p < k) {
 26889              d = (this[i]&((1<<p)-1))<<(k-p);
 26890              d |= this[--i]>>(p+=this.DB-k);
 26891            }
 26892            else {
 26893              d = (this[i]>>(p-=k))&km;
 26894              if(p <= 0) { p += this.DB; --i; }
 26895            }
 26896            if(d > 0) m = true;
 26897            if(m) r += int2char(d);
 26898          }
 26899        }
 26900        return m?r:"0";
 26901      }
 26902  
 26903      // (public) -this
 26904      function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
 26905  
 26906      // (public) |this|
 26907      function bnAbs() { return (this.s<0)?this.negate():this; }
 26908  
 26909      // (public) return + if this > a, - if this < a, 0 if equal
 26910      function bnCompareTo(a) {
 26911        var r = this.s-a.s;
 26912        if(r != 0) return r;
 26913        var i = this.t;
 26914        r = i-a.t;
 26915        if(r != 0) return (this.s<0)?-r:r;
 26916        while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;
 26917        return 0;
 26918      }
 26919  
 26920      // returns bit length of the integer x
 26921      function nbits(x) {
 26922        var r = 1, t;
 26923        if((t=x>>>16) != 0) { x = t; r += 16; }
 26924        if((t=x>>8) != 0) { x = t; r += 8; }
 26925        if((t=x>>4) != 0) { x = t; r += 4; }
 26926        if((t=x>>2) != 0) { x = t; r += 2; }
 26927        if((t=x>>1) != 0) { x = t; r += 1; }
 26928        return r;
 26929      }
 26930  
 26931      // (public) return the number of bits in "this"
 26932      function bnBitLength() {
 26933        if(this.t <= 0) return 0;
 26934        return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));
 26935      }
 26936  
 26937      // (protected) r = this << n*DB
 26938      function bnpDLShiftTo(n,r) {
 26939        var i;
 26940        for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];
 26941        for(i = n-1; i >= 0; --i) r[i] = 0;
 26942        r.t = this.t+n;
 26943        r.s = this.s;
 26944      }
 26945  
 26946      // (protected) r = this >> n*DB
 26947      function bnpDRShiftTo(n,r) {
 26948        for(var i = n; i < this.t; ++i) r[i-n] = this[i];
 26949        r.t = Math.max(this.t-n,0);
 26950        r.s = this.s;
 26951      }
 26952  
 26953      // (protected) r = this << n
 26954      function bnpLShiftTo(n,r) {
 26955        var bs = n%this.DB;
 26956        var cbs = this.DB-bs;
 26957        var bm = (1<<cbs)-1;
 26958        var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;
 26959        for(i = this.t-1; i >= 0; --i) {
 26960          r[i+ds+1] = (this[i]>>cbs)|c;
 26961          c = (this[i]&bm)<<bs;
 26962        }
 26963        for(i = ds-1; i >= 0; --i) r[i] = 0;
 26964        r[ds] = c;
 26965        r.t = this.t+ds+1;
 26966        r.s = this.s;
 26967        r.clamp();
 26968      }
 26969  
 26970      // (protected) r = this >> n
 26971      function bnpRShiftTo(n,r) {
 26972        r.s = this.s;
 26973        var ds = Math.floor(n/this.DB);
 26974        if(ds >= this.t) { r.t = 0; return; }
 26975        var bs = n%this.DB;
 26976        var cbs = this.DB-bs;
 26977        var bm = (1<<bs)-1;
 26978        r[0] = this[ds]>>bs;
 26979        for(var i = ds+1; i < this.t; ++i) {
 26980          r[i-ds-1] |= (this[i]&bm)<<cbs;
 26981          r[i-ds] = this[i]>>bs;
 26982        }
 26983        if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;
 26984        r.t = this.t-ds;
 26985        r.clamp();
 26986      }
 26987  
 26988      // (protected) r = this - a
 26989      function bnpSubTo(a,r) {
 26990        var i = 0, c = 0, m = Math.min(a.t,this.t);
 26991        while(i < m) {
 26992          c += this[i]-a[i];
 26993          r[i++] = c&this.DM;
 26994          c >>= this.DB;
 26995        }
 26996        if(a.t < this.t) {
 26997          c -= a.s;
 26998          while(i < this.t) {
 26999            c += this[i];
 27000            r[i++] = c&this.DM;
 27001            c >>= this.DB;
 27002          }
 27003          c += this.s;
 27004        }
 27005        else {
 27006          c += this.s;
 27007          while(i < a.t) {
 27008            c -= a[i];
 27009            r[i++] = c&this.DM;
 27010            c >>= this.DB;
 27011          }
 27012          c -= a.s;
 27013        }
 27014        r.s = (c<0)?-1:0;
 27015        if(c < -1) r[i++] = this.DV+c;
 27016        else if(c > 0) r[i++] = c;
 27017        r.t = i;
 27018        r.clamp();
 27019      }
 27020  
 27021      // (protected) r = this * a, r != this,a (HAC 14.12)
 27022      // "this" should be the larger one if appropriate.
 27023      function bnpMultiplyTo(a,r) {
 27024        var x = this.abs(), y = a.abs();
 27025        var i = x.t;
 27026        r.t = i+y.t;
 27027        while(--i >= 0) r[i] = 0;
 27028        for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);
 27029        r.s = 0;
 27030        r.clamp();
 27031        if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
 27032      }
 27033  
 27034      // (protected) r = this^2, r != this (HAC 14.16)
 27035      function bnpSquareTo(r) {
 27036        var x = this.abs();
 27037        var i = r.t = 2*x.t;
 27038        while(--i >= 0) r[i] = 0;
 27039        for(i = 0; i < x.t-1; ++i) {
 27040          var c = x.am(i,x[i],r,2*i,0,1);
 27041          if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {
 27042            r[i+x.t] -= x.DV;
 27043            r[i+x.t+1] = 1;
 27044          }
 27045        }
 27046        if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);
 27047        r.s = 0;
 27048        r.clamp();
 27049      }
 27050  
 27051      // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
 27052      // r != q, this != m.  q or r may be null.
 27053      function bnpDivRemTo(m,q,r) {
 27054        var pm = m.abs();
 27055        if(pm.t <= 0) return;
 27056        var pt = this.abs();
 27057        if(pt.t < pm.t) {
 27058          if(q != null) q.fromInt(0);
 27059          if(r != null) this.copyTo(r);
 27060          return;
 27061        }
 27062        if(r == null) r = nbi();
 27063        var y = nbi(), ts = this.s, ms = m.s;
 27064        var nsh = this.DB-nbits(pm[pm.t-1]);   // normalize modulus
 27065        if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
 27066        else { pm.copyTo(y); pt.copyTo(r); }
 27067        var ys = y.t;
 27068        var y0 = y[ys-1];
 27069        if(y0 == 0) return;
 27070        var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);
 27071        var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;
 27072        var i = r.t, j = i-ys, t = (q==null)?nbi():q;
 27073        y.dlShiftTo(j,t);
 27074        if(r.compareTo(t) >= 0) {
 27075          r[r.t++] = 1;
 27076          r.subTo(t,r);
 27077        }
 27078        BigInteger.ONE.dlShiftTo(ys,t);
 27079        t.subTo(y,y);  // "negative" y so we can replace sub with am later
 27080        while(y.t < ys) y[y.t++] = 0;
 27081        while(--j >= 0) {
 27082          // Estimate quotient digit
 27083          var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);
 27084          if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) {   // Try it out
 27085            y.dlShiftTo(j,t);
 27086            r.subTo(t,r);
 27087            while(r[i] < --qd) r.subTo(t,r);
 27088          }
 27089        }
 27090        if(q != null) {
 27091          r.drShiftTo(ys,q);
 27092          if(ts != ms) BigInteger.ZERO.subTo(q,q);
 27093        }
 27094        r.t = ys;
 27095        r.clamp();
 27096        if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder
 27097        if(ts < 0) BigInteger.ZERO.subTo(r,r);
 27098      }
 27099  
 27100      // (public) this mod a
 27101      function bnMod(a) {
 27102        var r = nbi();
 27103        this.abs().divRemTo(a,null,r);
 27104        if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
 27105        return r;
 27106      }
 27107  
 27108      // Modular reduction using "classic" algorithm
 27109      function Classic(m) { this.m = m; }
 27110      function cConvert(x) {
 27111        if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
 27112        else return x;
 27113      }
 27114      function cRevert(x) { return x; }
 27115      function cReduce(x) { x.divRemTo(this.m,null,x); }
 27116      function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
 27117      function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
 27118  
 27119      Classic.prototype.convert = cConvert;
 27120      Classic.prototype.revert = cRevert;
 27121      Classic.prototype.reduce = cReduce;
 27122      Classic.prototype.mulTo = cMulTo;
 27123      Classic.prototype.sqrTo = cSqrTo;
 27124  
 27125      // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
 27126      // justification:
 27127      //         xy == 1 (mod m)
 27128      //         xy =  1+km
 27129      //   xy(2-xy) = (1+km)(1-km)
 27130      // x[y(2-xy)] = 1-k^2m^2
 27131      // x[y(2-xy)] == 1 (mod m^2)
 27132      // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
 27133      // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
 27134      // JS multiply "overflows" differently from C/C++, so care is needed here.
 27135      function bnpInvDigit() {
 27136        if(this.t < 1) return 0;
 27137        var x = this[0];
 27138        if((x&1) == 0) return 0;
 27139        var y = x&3;       // y == 1/x mod 2^2
 27140        y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4
 27141        y = (y*(2-(x&0xff)*y))&0xff;   // y == 1/x mod 2^8
 27142        y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;    // y == 1/x mod 2^16
 27143        // last step - calculate inverse mod DV directly;
 27144        // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
 27145        y = (y*(2-x*y%this.DV))%this.DV;       // y == 1/x mod 2^dbits
 27146        // we really want the negative inverse, and -DV < y < DV
 27147        return (y>0)?this.DV-y:-y;
 27148      }
 27149  
 27150      // Montgomery reduction
 27151      function Montgomery(m) {
 27152        this.m = m;
 27153        this.mp = m.invDigit();
 27154        this.mpl = this.mp&0x7fff;
 27155        this.mph = this.mp>>15;
 27156        this.um = (1<<(m.DB-15))-1;
 27157        this.mt2 = 2*m.t;
 27158      }
 27159  
 27160      // xR mod m
 27161      function montConvert(x) {
 27162        var r = nbi();
 27163        x.abs().dlShiftTo(this.m.t,r);
 27164        r.divRemTo(this.m,null,r);
 27165        if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
 27166        return r;
 27167      }
 27168  
 27169      // x/R mod m
 27170      function montRevert(x) {
 27171        var r = nbi();
 27172        x.copyTo(r);
 27173        this.reduce(r);
 27174        return r;
 27175      }
 27176  
 27177      // x = x/R mod m (HAC 14.32)
 27178      function montReduce(x) {
 27179        while(x.t <= this.mt2) // pad x so am has enough room later
 27180          x[x.t++] = 0;
 27181        for(var i = 0; i < this.m.t; ++i) {
 27182          // faster way of calculating u0 = x[i]*mp mod DV
 27183          var j = x[i]&0x7fff;
 27184          var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;
 27185          // use am to combine the multiply-shift-add into one call
 27186          j = i+this.m.t;
 27187          x[j] += this.m.am(0,u0,x,i,0,this.m.t);
 27188          // propagate carry
 27189          while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }
 27190        }
 27191        x.clamp();
 27192        x.drShiftTo(this.m.t,x);
 27193        if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
 27194      }
 27195  
 27196      // r = "x^2/R mod m"; x != r
 27197      function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
 27198  
 27199      // r = "xy/R mod m"; x,y != r
 27200      function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
 27201  
 27202      Montgomery.prototype.convert = montConvert;
 27203      Montgomery.prototype.revert = montRevert;
 27204      Montgomery.prototype.reduce = montReduce;
 27205      Montgomery.prototype.mulTo = montMulTo;
 27206      Montgomery.prototype.sqrTo = montSqrTo;
 27207  
 27208      // (protected) true iff this is even
 27209      function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }
 27210  
 27211      // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
 27212      function bnpExp(e,z) {
 27213        if(e > 0xffffffff || e < 1) return BigInteger.ONE;
 27214        var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
 27215        g.copyTo(r);
 27216        while(--i >= 0) {
 27217          z.sqrTo(r,r2);
 27218          if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
 27219          else { var t = r; r = r2; r2 = t; }
 27220        }
 27221        return z.revert(r);
 27222      }
 27223  
 27224      // (public) this^e % m, 0 <= e < 2^32
 27225      function bnModPowInt(e,m) {
 27226        var z;
 27227        if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
 27228        return this.exp(e,z);
 27229      }
 27230  
 27231      // protected
 27232      BigInteger.prototype.copyTo = bnpCopyTo;
 27233      BigInteger.prototype.fromInt = bnpFromInt;
 27234      BigInteger.prototype.fromString = bnpFromString;
 27235      BigInteger.prototype.clamp = bnpClamp;
 27236      BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
 27237      BigInteger.prototype.drShiftTo = bnpDRShiftTo;
 27238      BigInteger.prototype.lShiftTo = bnpLShiftTo;
 27239      BigInteger.prototype.rShiftTo = bnpRShiftTo;
 27240      BigInteger.prototype.subTo = bnpSubTo;
 27241      BigInteger.prototype.multiplyTo = bnpMultiplyTo;
 27242      BigInteger.prototype.squareTo = bnpSquareTo;
 27243      BigInteger.prototype.divRemTo = bnpDivRemTo;
 27244      BigInteger.prototype.invDigit = bnpInvDigit;
 27245      BigInteger.prototype.isEven = bnpIsEven;
 27246      BigInteger.prototype.exp = bnpExp;
 27247  
 27248      // public
 27249      BigInteger.prototype.toString = bnToString;
 27250      BigInteger.prototype.negate = bnNegate;
 27251      BigInteger.prototype.abs = bnAbs;
 27252      BigInteger.prototype.compareTo = bnCompareTo;
 27253      BigInteger.prototype.bitLength = bnBitLength;
 27254      BigInteger.prototype.mod = bnMod;
 27255      BigInteger.prototype.modPowInt = bnModPowInt;
 27256  
 27257      // "constants"
 27258      BigInteger.ZERO = nbv(0);
 27259      BigInteger.ONE = nbv(1);
 27260  
 27261      // Copyright (c) 2005-2009  Tom Wu
 27262      // All Rights Reserved.
 27263      // See "LICENSE" for details.
 27264  
 27265      // Extended JavaScript BN functions, required for RSA private ops.
 27266  
 27267      // Version 1.1: new BigInteger("0", 10) returns "proper" zero
 27268      // Version 1.2: square() API, isProbablePrime fix
 27269  
 27270      // (public)
 27271      function bnClone() { var r = nbi(); this.copyTo(r); return r; }
 27272  
 27273      // (public) return value as integer
 27274      function bnIntValue() {
 27275        if(this.s < 0) {
 27276          if(this.t == 1) return this[0]-this.DV;
 27277          else if(this.t == 0) return -1;
 27278        }
 27279        else if(this.t == 1) return this[0];
 27280        else if(this.t == 0) return 0;
 27281        // assumes 16 < DB < 32
 27282        return ((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];
 27283      }
 27284  
 27285      // (public) return value as byte
 27286      function bnByteValue() { return (this.t==0)?this.s:(this[0]<<24)>>24; }
 27287  
 27288      // (public) return value as short (assumes DB>=16)
 27289      function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }
 27290  
 27291      // (protected) return x s.t. r^x < DV
 27292      function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }
 27293  
 27294      // (public) 0 if this == 0, 1 if this > 0
 27295      function bnSigNum() {
 27296        if(this.s < 0) return -1;
 27297        else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;
 27298        else return 1;
 27299      }
 27300  
 27301      // (protected) convert to radix string
 27302      function bnpToRadix(b) {
 27303        if(b == null) b = 10;
 27304        if(this.signum() == 0 || b < 2 || b > 36) return "0";
 27305        var cs = this.chunkSize(b);
 27306        var a = Math.pow(b,cs);
 27307        var d = nbv(a), y = nbi(), z = nbi(), r = "";
 27308        this.divRemTo(d,y,z);
 27309        while(y.signum() > 0) {
 27310          r = (a+z.intValue()).toString(b).substr(1) + r;
 27311          y.divRemTo(d,y,z);
 27312        }
 27313        return z.intValue().toString(b) + r;
 27314      }
 27315  
 27316      // (protected) convert from radix string
 27317      function bnpFromRadix(s,b) {
 27318        this.fromInt(0);
 27319        if(b == null) b = 10;
 27320        var cs = this.chunkSize(b);
 27321        var d = Math.pow(b,cs), mi = false, j = 0, w = 0;
 27322        for(var i = 0; i < s.length; ++i) {
 27323          var x = intAt(s,i);
 27324          if(x < 0) {
 27325            if(s.charAt(i) == "-" && this.signum() == 0) mi = true;
 27326            continue;
 27327          }
 27328          w = b*w+x;
 27329          if(++j >= cs) {
 27330            this.dMultiply(d);
 27331            this.dAddOffset(w,0);
 27332            j = 0;
 27333            w = 0;
 27334          }
 27335        }
 27336        if(j > 0) {
 27337          this.dMultiply(Math.pow(b,j));
 27338          this.dAddOffset(w,0);
 27339        }
 27340        if(mi) BigInteger.ZERO.subTo(this,this);
 27341      }
 27342  
 27343      // (protected) alternate constructor
 27344      function bnpFromNumber(a,b,c) {
 27345        if("number" == typeof b) {
 27346          // new BigInteger(int,int,RNG)
 27347          if(a < 2) this.fromInt(1);
 27348          else {
 27349            this.fromNumber(a,c);
 27350            if(!this.testBit(a-1))    // force MSB set
 27351              this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);
 27352            if(this.isEven()) this.dAddOffset(1,0); // force odd
 27353            while(!this.isProbablePrime(b)) {
 27354              this.dAddOffset(2,0);
 27355              if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);
 27356            }
 27357          }
 27358        }
 27359        else {
 27360          // new BigInteger(int,RNG)
 27361          var x = new Array(), t = a&7;
 27362          x.length = (a>>3)+1;
 27363          b.nextBytes(x);
 27364          if(t > 0) x[0] &= ((1<<t)-1); else x[0] = 0;
 27365          this.fromString(x,256);
 27366        }
 27367      }
 27368  
 27369      // (public) convert to bigendian byte array
 27370      function bnToByteArray() {
 27371        var i = this.t, r = new Array();
 27372        r[0] = this.s;
 27373        var p = this.DB-(i*this.DB)%8, d, k = 0;
 27374        if(i-- > 0) {
 27375          if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)
 27376            r[k++] = d|(this.s<<(this.DB-p));
 27377          while(i >= 0) {
 27378            if(p < 8) {
 27379              d = (this[i]&((1<<p)-1))<<(8-p);
 27380              d |= this[--i]>>(p+=this.DB-8);
 27381            }
 27382            else {
 27383              d = (this[i]>>(p-=8))&0xff;
 27384              if(p <= 0) { p += this.DB; --i; }
 27385            }
 27386            if((d&0x80) != 0) d |= -256;
 27387            if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;
 27388            if(k > 0 || d != this.s) r[k++] = d;
 27389          }
 27390        }
 27391        return r;
 27392      }
 27393  
 27394      function bnEquals(a) { return(this.compareTo(a)==0); }
 27395      function bnMin(a) { return(this.compareTo(a)<0)?this:a; }
 27396      function bnMax(a) { return(this.compareTo(a)>0)?this:a; }
 27397  
 27398      // (protected) r = this op a (bitwise)
 27399      function bnpBitwiseTo(a,op,r) {
 27400        var i, f, m = Math.min(a.t,this.t);
 27401        for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);
 27402        if(a.t < this.t) {
 27403          f = a.s&this.DM;
 27404          for(i = m; i < this.t; ++i) r[i] = op(this[i],f);
 27405          r.t = this.t;
 27406        }
 27407        else {
 27408          f = this.s&this.DM;
 27409          for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);
 27410          r.t = a.t;
 27411        }
 27412        r.s = op(this.s,a.s);
 27413        r.clamp();
 27414      }
 27415  
 27416      // (public) this & a
 27417      function op_and(x,y) { return x&y; }
 27418      function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }
 27419  
 27420      // (public) this | a
 27421      function op_or(x,y) { return x|y; }
 27422      function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }
 27423  
 27424      // (public) this ^ a
 27425      function op_xor(x,y) { return x^y; }
 27426      function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }
 27427  
 27428      // (public) this & ~a
 27429      function op_andnot(x,y) { return x&~y; }
 27430      function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }
 27431  
 27432      // (public) ~this
 27433      function bnNot() {
 27434        var r = nbi();
 27435        for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];
 27436        r.t = this.t;
 27437        r.s = ~this.s;
 27438        return r;
 27439      }
 27440  
 27441      // (public) this << n
 27442      function bnShiftLeft(n) {
 27443        var r = nbi();
 27444        if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);
 27445        return r;
 27446      }
 27447  
 27448      // (public) this >> n
 27449      function bnShiftRight(n) {
 27450        var r = nbi();
 27451        if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);
 27452        return r;
 27453      }
 27454  
 27455      // return index of lowest 1-bit in x, x < 2^31
 27456      function lbit(x) {
 27457        if(x == 0) return -1;
 27458        var r = 0;
 27459        if((x&0xffff) == 0) { x >>= 16; r += 16; }
 27460        if((x&0xff) == 0) { x >>= 8; r += 8; }
 27461        if((x&0xf) == 0) { x >>= 4; r += 4; }
 27462        if((x&3) == 0) { x >>= 2; r += 2; }
 27463        if((x&1) == 0) ++r;
 27464        return r;
 27465      }
 27466  
 27467      // (public) returns index of lowest 1-bit (or -1 if none)
 27468      function bnGetLowestSetBit() {
 27469        for(var i = 0; i < this.t; ++i)
 27470          if(this[i] != 0) return i*this.DB+lbit(this[i]);
 27471        if(this.s < 0) return this.t*this.DB;
 27472        return -1;
 27473      }
 27474  
 27475      // return number of 1 bits in x
 27476      function cbit(x) {
 27477        var r = 0;
 27478        while(x != 0) { x &= x-1; ++r; }
 27479        return r;
 27480      }
 27481  
 27482      // (public) return number of set bits
 27483      function bnBitCount() {
 27484        var r = 0, x = this.s&this.DM;
 27485        for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);
 27486        return r;
 27487      }
 27488  
 27489      // (public) true iff nth bit is set
 27490      function bnTestBit(n) {
 27491        var j = Math.floor(n/this.DB);
 27492        if(j >= this.t) return(this.s!=0);
 27493        return((this[j]&(1<<(n%this.DB)))!=0);
 27494      }
 27495  
 27496      // (protected) this op (1<<n)
 27497      function bnpChangeBit(n,op) {
 27498        var r = BigInteger.ONE.shiftLeft(n);
 27499        this.bitwiseTo(r,op,r);
 27500        return r;
 27501      }
 27502  
 27503      // (public) this | (1<<n)
 27504      function bnSetBit(n) { return this.changeBit(n,op_or); }
 27505  
 27506      // (public) this & ~(1<<n)
 27507      function bnClearBit(n) { return this.changeBit(n,op_andnot); }
 27508  
 27509      // (public) this ^ (1<<n)
 27510      function bnFlipBit(n) { return this.changeBit(n,op_xor); }
 27511  
 27512      // (protected) r = this + a
 27513      function bnpAddTo(a,r) {
 27514        var i = 0, c = 0, m = Math.min(a.t,this.t);
 27515        while(i < m) {
 27516          c += this[i]+a[i];
 27517          r[i++] = c&this.DM;
 27518          c >>= this.DB;
 27519        }
 27520        if(a.t < this.t) {
 27521          c += a.s;
 27522          while(i < this.t) {
 27523            c += this[i];
 27524            r[i++] = c&this.DM;
 27525            c >>= this.DB;
 27526          }
 27527          c += this.s;
 27528        }
 27529        else {
 27530          c += this.s;
 27531          while(i < a.t) {
 27532            c += a[i];
 27533            r[i++] = c&this.DM;
 27534            c >>= this.DB;
 27535          }
 27536          c += a.s;
 27537        }
 27538        r.s = (c<0)?-1:0;
 27539        if(c > 0) r[i++] = c;
 27540        else if(c < -1) r[i++] = this.DV+c;
 27541        r.t = i;
 27542        r.clamp();
 27543      }
 27544  
 27545      // (public) this + a
 27546      function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }
 27547  
 27548      // (public) this - a
 27549      function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }
 27550  
 27551      // (public) this * a
 27552      function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }
 27553  
 27554      // (public) this^2
 27555      function bnSquare() { var r = nbi(); this.squareTo(r); return r; }
 27556  
 27557      // (public) this / a
 27558      function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }
 27559  
 27560      // (public) this % a
 27561      function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }
 27562  
 27563      // (public) [this/a,this%a]
 27564      function bnDivideAndRemainder(a) {
 27565        var q = nbi(), r = nbi();
 27566        this.divRemTo(a,q,r);
 27567        return new Array(q,r);
 27568      }
 27569  
 27570      // (protected) this *= n, this >= 0, 1 < n < DV
 27571      function bnpDMultiply(n) {
 27572        this[this.t] = this.am(0,n-1,this,0,0,this.t);
 27573        ++this.t;
 27574        this.clamp();
 27575      }
 27576  
 27577      // (protected) this += n << w words, this >= 0
 27578      function bnpDAddOffset(n,w) {
 27579        if(n == 0) return;
 27580        while(this.t <= w) this[this.t++] = 0;
 27581        this[w] += n;
 27582        while(this[w] >= this.DV) {
 27583          this[w] -= this.DV;
 27584          if(++w >= this.t) this[this.t++] = 0;
 27585          ++this[w];
 27586        }
 27587      }
 27588  
 27589      // A "null" reducer
 27590      function NullExp() {}
 27591      function nNop(x) { return x; }
 27592      function nMulTo(x,y,r) { x.multiplyTo(y,r); }
 27593      function nSqrTo(x,r) { x.squareTo(r); }
 27594  
 27595      NullExp.prototype.convert = nNop;
 27596      NullExp.prototype.revert = nNop;
 27597      NullExp.prototype.mulTo = nMulTo;
 27598      NullExp.prototype.sqrTo = nSqrTo;
 27599  
 27600      // (public) this^e
 27601      function bnPow(e) { return this.exp(e,new NullExp()); }
 27602  
 27603      // (protected) r = lower n words of "this * a", a.t <= n
 27604      // "this" should be the larger one if appropriate.
 27605      function bnpMultiplyLowerTo(a,n,r) {
 27606        var i = Math.min(this.t+a.t,n);
 27607        r.s = 0; // assumes a,this >= 0
 27608        r.t = i;
 27609        while(i > 0) r[--i] = 0;
 27610        var j;
 27611        for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);
 27612        for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);
 27613        r.clamp();
 27614      }
 27615  
 27616      // (protected) r = "this * a" without lower n words, n > 0
 27617      // "this" should be the larger one if appropriate.
 27618      function bnpMultiplyUpperTo(a,n,r) {
 27619        --n;
 27620        var i = r.t = this.t+a.t-n;
 27621        r.s = 0; // assumes a,this >= 0
 27622        while(--i >= 0) r[i] = 0;
 27623        for(i = Math.max(n-this.t,0); i < a.t; ++i)
 27624          r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);
 27625        r.clamp();
 27626        r.drShiftTo(1,r);
 27627      }
 27628  
 27629      // Barrett modular reduction
 27630      function Barrett(m) {
 27631        // setup Barrett
 27632        this.r2 = nbi();
 27633        this.q3 = nbi();
 27634        BigInteger.ONE.dlShiftTo(2*m.t,this.r2);
 27635        this.mu = this.r2.divide(m);
 27636        this.m = m;
 27637      }
 27638  
 27639      function barrettConvert(x) {
 27640        if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);
 27641        else if(x.compareTo(this.m) < 0) return x;
 27642        else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }
 27643      }
 27644  
 27645      function barrettRevert(x) { return x; }
 27646  
 27647      // x = x mod m (HAC 14.42)
 27648      function barrettReduce(x) {
 27649        x.drShiftTo(this.m.t-1,this.r2);
 27650        if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }
 27651        this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);
 27652        this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);
 27653        while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);
 27654        x.subTo(this.r2,x);
 27655        while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
 27656      }
 27657  
 27658      // r = x^2 mod m; x != r
 27659      function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
 27660  
 27661      // r = x*y mod m; x,y != r
 27662      function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
 27663  
 27664      Barrett.prototype.convert = barrettConvert;
 27665      Barrett.prototype.revert = barrettRevert;
 27666      Barrett.prototype.reduce = barrettReduce;
 27667      Barrett.prototype.mulTo = barrettMulTo;
 27668      Barrett.prototype.sqrTo = barrettSqrTo;
 27669  
 27670      // (public) this^e % m (HAC 14.85)
 27671      function bnModPow(e,m) {
 27672        var i = e.bitLength(), k, r = nbv(1), z;
 27673        if(i <= 0) return r;
 27674        else if(i < 18) k = 1;
 27675        else if(i < 48) k = 3;
 27676        else if(i < 144) k = 4;
 27677        else if(i < 768) k = 5;
 27678        else k = 6;
 27679        if(i < 8)
 27680          z = new Classic(m);
 27681        else if(m.isEven())
 27682          z = new Barrett(m);
 27683        else
 27684          z = new Montgomery(m);
 27685  
 27686        // precomputation
 27687        var g = new Array(), n = 3, k1 = k-1, km = (1<<k)-1;
 27688        g[1] = z.convert(this);
 27689        if(k > 1) {
 27690          var g2 = nbi();
 27691          z.sqrTo(g[1],g2);
 27692          while(n <= km) {
 27693            g[n] = nbi();
 27694            z.mulTo(g2,g[n-2],g[n]);
 27695            n += 2;
 27696          }
 27697        }
 27698  
 27699        var j = e.t-1, w, is1 = true, r2 = nbi(), t;
 27700        i = nbits(e[j])-1;
 27701        while(j >= 0) {
 27702          if(i >= k1) w = (e[j]>>(i-k1))&km;
 27703          else {
 27704            w = (e[j]&((1<<(i+1))-1))<<(k1-i);
 27705            if(j > 0) w |= e[j-1]>>(this.DB+i-k1);
 27706          }
 27707  
 27708          n = k;
 27709          while((w&1) == 0) { w >>= 1; --n; }
 27710          if((i -= n) < 0) { i += this.DB; --j; }
 27711          if(is1) {    // ret == 1, don't bother squaring or multiplying it
 27712            g[w].copyTo(r);
 27713            is1 = false;
 27714          }
 27715          else {
 27716            while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }
 27717            if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }
 27718            z.mulTo(r2,g[w],r);
 27719          }
 27720  
 27721          while(j >= 0 && (e[j]&(1<<i)) == 0) {
 27722            z.sqrTo(r,r2); t = r; r = r2; r2 = t;
 27723            if(--i < 0) { i = this.DB-1; --j; }
 27724          }
 27725        }
 27726        return z.revert(r);
 27727      }
 27728  
 27729      // (public) gcd(this,a) (HAC 14.54)
 27730      function bnGCD(a) {
 27731        var x = (this.s<0)?this.negate():this.clone();
 27732        var y = (a.s<0)?a.negate():a.clone();
 27733        if(x.compareTo(y) < 0) { var t = x; x = y; y = t; }
 27734        var i = x.getLowestSetBit(), g = y.getLowestSetBit();
 27735        if(g < 0) return x;
 27736        if(i < g) g = i;
 27737        if(g > 0) {
 27738          x.rShiftTo(g,x);
 27739          y.rShiftTo(g,y);
 27740        }
 27741        while(x.signum() > 0) {
 27742          if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);
 27743          if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);
 27744          if(x.compareTo(y) >= 0) {
 27745            x.subTo(y,x);
 27746            x.rShiftTo(1,x);
 27747          }
 27748          else {
 27749            y.subTo(x,y);
 27750            y.rShiftTo(1,y);
 27751          }
 27752        }
 27753        if(g > 0) y.lShiftTo(g,y);
 27754        return y;
 27755      }
 27756  
 27757      // (protected) this % n, n < 2^26
 27758      function bnpModInt(n) {
 27759        if(n <= 0) return 0;
 27760        var d = this.DV%n, r = (this.s<0)?n-1:0;
 27761        if(this.t > 0)
 27762          if(d == 0) r = this[0]%n;
 27763          else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;
 27764        return r;
 27765      }
 27766  
 27767      // (public) 1/this % m (HAC 14.61)
 27768      function bnModInverse(m) {
 27769        var ac = m.isEven();
 27770        if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;
 27771        var u = m.clone(), v = this.clone();
 27772        var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);
 27773        while(u.signum() != 0) {
 27774          while(u.isEven()) {
 27775            u.rShiftTo(1,u);
 27776            if(ac) {
 27777              if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }
 27778              a.rShiftTo(1,a);
 27779            }
 27780            else if(!b.isEven()) b.subTo(m,b);
 27781            b.rShiftTo(1,b);
 27782          }
 27783          while(v.isEven()) {
 27784            v.rShiftTo(1,v);
 27785            if(ac) {
 27786              if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }
 27787              c.rShiftTo(1,c);
 27788            }
 27789            else if(!d.isEven()) d.subTo(m,d);
 27790            d.rShiftTo(1,d);
 27791          }
 27792          if(u.compareTo(v) >= 0) {
 27793            u.subTo(v,u);
 27794            if(ac) a.subTo(c,a);
 27795            b.subTo(d,b);
 27796          }
 27797          else {
 27798            v.subTo(u,v);
 27799            if(ac) c.subTo(a,c);
 27800            d.subTo(b,d);
 27801          }
 27802        }
 27803        if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;
 27804        if(d.compareTo(m) >= 0) return d.subtract(m);
 27805        if(d.signum() < 0) d.addTo(m,d); else return d;
 27806        if(d.signum() < 0) return d.add(m); else return d;
 27807      }
 27808  
 27809      var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];
 27810      var lplim = (1<<26)/lowprimes[lowprimes.length-1];
 27811  
 27812      // (public) test primality with certainty >= 1-.5^t
 27813      function bnIsProbablePrime(t) {
 27814        var i, x = this.abs();
 27815        if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {
 27816          for(i = 0; i < lowprimes.length; ++i)
 27817            if(x[0] == lowprimes[i]) return true;
 27818          return false;
 27819        }
 27820        if(x.isEven()) return false;
 27821        i = 1;
 27822        while(i < lowprimes.length) {
 27823          var m = lowprimes[i], j = i+1;
 27824          while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];
 27825          m = x.modInt(m);
 27826          while(i < j) if(m%lowprimes[i++] == 0) return false;
 27827        }
 27828        return x.millerRabin(t);
 27829      }
 27830  
 27831      // (protected) true if probably prime (HAC 4.24, Miller-Rabin)
 27832      function bnpMillerRabin(t) {
 27833        var n1 = this.subtract(BigInteger.ONE);
 27834        var k = n1.getLowestSetBit();
 27835        if(k <= 0) return false;
 27836        var r = n1.shiftRight(k);
 27837        t = (t+1)>>1;
 27838        if(t > lowprimes.length) t = lowprimes.length;
 27839        var a = nbi();
 27840        for(var i = 0; i < t; ++i) {
 27841          //Pick bases at random, instead of starting at 2
 27842          a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);
 27843          var y = a.modPow(r,this);
 27844          if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {
 27845            var j = 1;
 27846            while(j++ < k && y.compareTo(n1) != 0) {
 27847              y = y.modPowInt(2,this);
 27848              if(y.compareTo(BigInteger.ONE) == 0) return false;
 27849            }
 27850            if(y.compareTo(n1) != 0) return false;
 27851          }
 27852        }
 27853        return true;
 27854      }
 27855  
 27856      // protected
 27857      BigInteger.prototype.chunkSize = bnpChunkSize;
 27858      BigInteger.prototype.toRadix = bnpToRadix;
 27859      BigInteger.prototype.fromRadix = bnpFromRadix;
 27860      BigInteger.prototype.fromNumber = bnpFromNumber;
 27861      BigInteger.prototype.bitwiseTo = bnpBitwiseTo;
 27862      BigInteger.prototype.changeBit = bnpChangeBit;
 27863      BigInteger.prototype.addTo = bnpAddTo;
 27864      BigInteger.prototype.dMultiply = bnpDMultiply;
 27865      BigInteger.prototype.dAddOffset = bnpDAddOffset;
 27866      BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;
 27867      BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;
 27868      BigInteger.prototype.modInt = bnpModInt;
 27869      BigInteger.prototype.millerRabin = bnpMillerRabin;
 27870  
 27871      // public
 27872      BigInteger.prototype.clone = bnClone;
 27873      BigInteger.prototype.intValue = bnIntValue;
 27874      BigInteger.prototype.byteValue = bnByteValue;
 27875      BigInteger.prototype.shortValue = bnShortValue;
 27876      BigInteger.prototype.signum = bnSigNum;
 27877      BigInteger.prototype.toByteArray = bnToByteArray;
 27878      BigInteger.prototype.equals = bnEquals;
 27879      BigInteger.prototype.min = bnMin;
 27880      BigInteger.prototype.max = bnMax;
 27881      BigInteger.prototype.and = bnAnd;
 27882      BigInteger.prototype.or = bnOr;
 27883      BigInteger.prototype.xor = bnXor;
 27884      BigInteger.prototype.andNot = bnAndNot;
 27885      BigInteger.prototype.not = bnNot;
 27886      BigInteger.prototype.shiftLeft = bnShiftLeft;
 27887      BigInteger.prototype.shiftRight = bnShiftRight;
 27888      BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;
 27889      BigInteger.prototype.bitCount = bnBitCount;
 27890      BigInteger.prototype.testBit = bnTestBit;
 27891      BigInteger.prototype.setBit = bnSetBit;
 27892      BigInteger.prototype.clearBit = bnClearBit;
 27893      BigInteger.prototype.flipBit = bnFlipBit;
 27894      BigInteger.prototype.add = bnAdd;
 27895      BigInteger.prototype.subtract = bnSubtract;
 27896      BigInteger.prototype.multiply = bnMultiply;
 27897      BigInteger.prototype.divide = bnDivide;
 27898      BigInteger.prototype.remainder = bnRemainder;
 27899      BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;
 27900      BigInteger.prototype.modPow = bnModPow;
 27901      BigInteger.prototype.modInverse = bnModInverse;
 27902      BigInteger.prototype.pow = bnPow;
 27903      BigInteger.prototype.gcd = bnGCD;
 27904      BigInteger.prototype.isProbablePrime = bnIsProbablePrime;
 27905  
 27906      // JSBN-specific extension
 27907      BigInteger.prototype.square = bnSquare;
 27908  
 27909      // Expose the Barrett function
 27910      BigInteger.prototype.Barrett = Barrett
 27911  
 27912      // BigInteger interfaces not implemented in jsbn:
 27913  
 27914      // BigInteger(int signum, byte[] magnitude)
 27915      // double doubleValue()
 27916      // float floatValue()
 27917      // int hashCode()
 27918      // long longValue()
 27919      // static BigInteger valueOf(long val)
 27920  
 27921      // Random number generator - requires a PRNG backend, e.g. prng4.js
 27922  
 27923      // For best results, put code like
 27924      // <body onClick='rng_seed_time();' onKeyPress='rng_seed_time();'>
 27925      // in your main HTML document.
 27926  
 27927      var rng_state;
 27928      var rng_pool;
 27929      var rng_pptr;
 27930  
 27931      // Mix in a 32-bit integer into the pool
 27932      function rng_seed_int(x) {
 27933        rng_pool[rng_pptr++] ^= x & 255;
 27934        rng_pool[rng_pptr++] ^= (x >> 8) & 255;
 27935        rng_pool[rng_pptr++] ^= (x >> 16) & 255;
 27936        rng_pool[rng_pptr++] ^= (x >> 24) & 255;
 27937        if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;
 27938      }
 27939  
 27940      // Mix in the current time (w/milliseconds) into the pool
 27941      function rng_seed_time() {
 27942        rng_seed_int(new Date().getTime());
 27943      }
 27944  
 27945      // Initialize the pool with junk if needed.
 27946      if(rng_pool == null) {
 27947        rng_pool = new Array();
 27948        rng_pptr = 0;
 27949        var t;
 27950        if(typeof window !== "undefined" && window.crypto) {
 27951          if (window.crypto.getRandomValues) {
 27952            // Use webcrypto if available
 27953            var ua = new Uint8Array(32);
 27954            window.crypto.getRandomValues(ua);
 27955            for(t = 0; t < 32; ++t)
 27956              rng_pool[rng_pptr++] = ua[t];
 27957          }
 27958          else if(navigator.appName == "Netscape" && navigator.appVersion < "5") {
 27959            // Extract entropy (256 bits) from NS4 RNG if available
 27960            var z = window.crypto.random(32);
 27961            for(t = 0; t < z.length; ++t)
 27962              rng_pool[rng_pptr++] = z.charCodeAt(t) & 255;
 27963          }
 27964        }
 27965        while(rng_pptr < rng_psize) {  // extract some randomness from Math.random()
 27966          t = Math.floor(65536 * Math.random());
 27967          rng_pool[rng_pptr++] = t >>> 8;
 27968          rng_pool[rng_pptr++] = t & 255;
 27969        }
 27970        rng_pptr = 0;
 27971        rng_seed_time();
 27972        //rng_seed_int(window.screenX);
 27973        //rng_seed_int(window.screenY);
 27974      }
 27975  
 27976      function rng_get_byte() {
 27977        if(rng_state == null) {
 27978          rng_seed_time();
 27979          rng_state = prng_newstate();
 27980          rng_state.init(rng_pool);
 27981          for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)
 27982            rng_pool[rng_pptr] = 0;
 27983          rng_pptr = 0;
 27984          //rng_pool = null;
 27985        }
 27986        // TODO: allow reseeding after first request
 27987        return rng_state.next();
 27988      }
 27989  
 27990      function rng_get_bytes(ba) {
 27991        var i;
 27992        for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();
 27993      }
 27994  
 27995      function SecureRandom() {}
 27996  
 27997      SecureRandom.prototype.nextBytes = rng_get_bytes;
 27998  
 27999      // prng4.js - uses Arcfour as a PRNG
 28000  
 28001      function Arcfour() {
 28002        this.i = 0;
 28003        this.j = 0;
 28004        this.S = new Array();
 28005      }
 28006  
 28007      // Initialize arcfour context from key, an array of ints, each from [0..255]
 28008      function ARC4init(key) {
 28009        var i, j, t;
 28010        for(i = 0; i < 256; ++i)
 28011          this.S[i] = i;
 28012        j = 0;
 28013        for(i = 0; i < 256; ++i) {
 28014          j = (j + this.S[i] + key[i % key.length]) & 255;
 28015          t = this.S[i];
 28016          this.S[i] = this.S[j];
 28017          this.S[j] = t;
 28018        }
 28019        this.i = 0;
 28020        this.j = 0;
 28021      }
 28022  
 28023      function ARC4next() {
 28024        var t;
 28025        this.i = (this.i + 1) & 255;
 28026        this.j = (this.j + this.S[this.i]) & 255;
 28027        t = this.S[this.i];
 28028        this.S[this.i] = this.S[this.j];
 28029        this.S[this.j] = t;
 28030        return this.S[(t + this.S[this.i]) & 255];
 28031      }
 28032  
 28033      Arcfour.prototype.init = ARC4init;
 28034      Arcfour.prototype.next = ARC4next;
 28035  
 28036      // Plug in your RNG constructor here
 28037      function prng_newstate() {
 28038        return new Arcfour();
 28039      }
 28040  
 28041      // Pool size must be a multiple of 4 and greater than 32.
 28042      // An array of bytes the size of the pool will be passed to init()
 28043      var rng_psize = 256;
 28044  
 28045      if (true) {
 28046          exports = module.exports = {
 28047              default: BigInteger,
 28048              BigInteger: BigInteger,
 28049              SecureRandom: SecureRandom,
 28050          };
 28051      } else {}
 28052  
 28053  }).call(this);
 28054  
 28055  
 28056  /***/ }),
 28057  
 28058  /***/ 7129:
 28059  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 28060  
 28061  "use strict";
 28062  
 28063  
 28064  // A linked list to keep track of recently-used-ness
 28065  const Yallist = __nccwpck_require__(40665)
 28066  
 28067  const MAX = Symbol('max')
 28068  const LENGTH = Symbol('length')
 28069  const LENGTH_CALCULATOR = Symbol('lengthCalculator')
 28070  const ALLOW_STALE = Symbol('allowStale')
 28071  const MAX_AGE = Symbol('maxAge')
 28072  const DISPOSE = Symbol('dispose')
 28073  const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')
 28074  const LRU_LIST = Symbol('lruList')
 28075  const CACHE = Symbol('cache')
 28076  const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')
 28077  
 28078  const naiveLength = () => 1
 28079  
 28080  // lruList is a yallist where the head is the youngest
 28081  // item, and the tail is the oldest.  the list contains the Hit
 28082  // objects as the entries.
 28083  // Each Hit object has a reference to its Yallist.Node.  This
 28084  // never changes.
 28085  //
 28086  // cache is a Map (or PseudoMap) that matches the keys to
 28087  // the Yallist.Node object.
 28088  class LRUCache {
 28089    constructor (options) {
 28090      if (typeof options === 'number')
 28091        options = { max: options }
 28092  
 28093      if (!options)
 28094        options = {}
 28095  
 28096      if (options.max && (typeof options.max !== 'number' || options.max < 0))
 28097        throw new TypeError('max must be a non-negative number')
 28098      // Kind of weird to have a default max of Infinity, but oh well.
 28099      const max = this[MAX] = options.max || Infinity
 28100  
 28101      const lc = options.length || naiveLength
 28102      this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc
 28103      this[ALLOW_STALE] = options.stale || false
 28104      if (options.maxAge && typeof options.maxAge !== 'number')
 28105        throw new TypeError('maxAge must be a number')
 28106      this[MAX_AGE] = options.maxAge || 0
 28107      this[DISPOSE] = options.dispose
 28108      this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false
 28109      this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false
 28110      this.reset()
 28111    }
 28112  
 28113    // resize the cache when the max changes.
 28114    set max (mL) {
 28115      if (typeof mL !== 'number' || mL < 0)
 28116        throw new TypeError('max must be a non-negative number')
 28117  
 28118      this[MAX] = mL || Infinity
 28119      trim(this)
 28120    }
 28121    get max () {
 28122      return this[MAX]
 28123    }
 28124  
 28125    set allowStale (allowStale) {
 28126      this[ALLOW_STALE] = !!allowStale
 28127    }
 28128    get allowStale () {
 28129      return this[ALLOW_STALE]
 28130    }
 28131  
 28132    set maxAge (mA) {
 28133      if (typeof mA !== 'number')
 28134        throw new TypeError('maxAge must be a non-negative number')
 28135  
 28136      this[MAX_AGE] = mA
 28137      trim(this)
 28138    }
 28139    get maxAge () {
 28140      return this[MAX_AGE]
 28141    }
 28142  
 28143    // resize the cache when the lengthCalculator changes.
 28144    set lengthCalculator (lC) {
 28145      if (typeof lC !== 'function')
 28146        lC = naiveLength
 28147  
 28148      if (lC !== this[LENGTH_CALCULATOR]) {
 28149        this[LENGTH_CALCULATOR] = lC
 28150        this[LENGTH] = 0
 28151        this[LRU_LIST].forEach(hit => {
 28152          hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)
 28153          this[LENGTH] += hit.length
 28154        })
 28155      }
 28156      trim(this)
 28157    }
 28158    get lengthCalculator () { return this[LENGTH_CALCULATOR] }
 28159  
 28160    get length () { return this[LENGTH] }
 28161    get itemCount () { return this[LRU_LIST].length }
 28162  
 28163    rforEach (fn, thisp) {
 28164      thisp = thisp || this
 28165      for (let walker = this[LRU_LIST].tail; walker !== null;) {
 28166        const prev = walker.prev
 28167        forEachStep(this, fn, walker, thisp)
 28168        walker = prev
 28169      }
 28170    }
 28171  
 28172    forEach (fn, thisp) {
 28173      thisp = thisp || this
 28174      for (let walker = this[LRU_LIST].head; walker !== null;) {
 28175        const next = walker.next
 28176        forEachStep(this, fn, walker, thisp)
 28177        walker = next
 28178      }
 28179    }
 28180  
 28181    keys () {
 28182      return this[LRU_LIST].toArray().map(k => k.key)
 28183    }
 28184  
 28185    values () {
 28186      return this[LRU_LIST].toArray().map(k => k.value)
 28187    }
 28188  
 28189    reset () {
 28190      if (this[DISPOSE] &&
 28191          this[LRU_LIST] &&
 28192          this[LRU_LIST].length) {
 28193        this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))
 28194      }
 28195  
 28196      this[CACHE] = new Map() // hash of items by key
 28197      this[LRU_LIST] = new Yallist() // list of items in order of use recency
 28198      this[LENGTH] = 0 // length of items in the list
 28199    }
 28200  
 28201    dump () {
 28202      return this[LRU_LIST].map(hit =>
 28203        isStale(this, hit) ? false : {
 28204          k: hit.key,
 28205          v: hit.value,
 28206          e: hit.now + (hit.maxAge || 0)
 28207        }).toArray().filter(h => h)
 28208    }
 28209  
 28210    dumpLru () {
 28211      return this[LRU_LIST]
 28212    }
 28213  
 28214    set (key, value, maxAge) {
 28215      maxAge = maxAge || this[MAX_AGE]
 28216  
 28217      if (maxAge && typeof maxAge !== 'number')
 28218        throw new TypeError('maxAge must be a number')
 28219  
 28220      const now = maxAge ? Date.now() : 0
 28221      const len = this[LENGTH_CALCULATOR](value, key)
 28222  
 28223      if (this[CACHE].has(key)) {
 28224        if (len > this[MAX]) {
 28225          del(this, this[CACHE].get(key))
 28226          return false
 28227        }
 28228  
 28229        const node = this[CACHE].get(key)
 28230        const item = node.value
 28231  
 28232        // dispose of the old one before overwriting
 28233        // split out into 2 ifs for better coverage tracking
 28234        if (this[DISPOSE]) {
 28235          if (!this[NO_DISPOSE_ON_SET])
 28236            this[DISPOSE](key, item.value)
 28237        }
 28238  
 28239        item.now = now
 28240        item.maxAge = maxAge
 28241        item.value = value
 28242        this[LENGTH] += len - item.length
 28243        item.length = len
 28244        this.get(key)
 28245        trim(this)
 28246        return true
 28247      }
 28248  
 28249      const hit = new Entry(key, value, len, now, maxAge)
 28250  
 28251      // oversized objects fall out of cache automatically.
 28252      if (hit.length > this[MAX]) {
 28253        if (this[DISPOSE])
 28254          this[DISPOSE](key, value)
 28255  
 28256        return false
 28257      }
 28258  
 28259      this[LENGTH] += hit.length
 28260      this[LRU_LIST].unshift(hit)
 28261      this[CACHE].set(key, this[LRU_LIST].head)
 28262      trim(this)
 28263      return true
 28264    }
 28265  
 28266    has (key) {
 28267      if (!this[CACHE].has(key)) return false
 28268      const hit = this[CACHE].get(key).value
 28269      return !isStale(this, hit)
 28270    }
 28271  
 28272    get (key) {
 28273      return get(this, key, true)
 28274    }
 28275  
 28276    peek (key) {
 28277      return get(this, key, false)
 28278    }
 28279  
 28280    pop () {
 28281      const node = this[LRU_LIST].tail
 28282      if (!node)
 28283        return null
 28284  
 28285      del(this, node)
 28286      return node.value
 28287    }
 28288  
 28289    del (key) {
 28290      del(this, this[CACHE].get(key))
 28291    }
 28292  
 28293    load (arr) {
 28294      // reset the cache
 28295      this.reset()
 28296  
 28297      const now = Date.now()
 28298      // A previous serialized cache has the most recent items first
 28299      for (let l = arr.length - 1; l >= 0; l--) {
 28300        const hit = arr[l]
 28301        const expiresAt = hit.e || 0
 28302        if (expiresAt === 0)
 28303          // the item was created without expiration in a non aged cache
 28304          this.set(hit.k, hit.v)
 28305        else {
 28306          const maxAge = expiresAt - now
 28307          // dont add already expired items
 28308          if (maxAge > 0) {
 28309            this.set(hit.k, hit.v, maxAge)
 28310          }
 28311        }
 28312      }
 28313    }
 28314  
 28315    prune () {
 28316      this[CACHE].forEach((value, key) => get(this, key, false))
 28317    }
 28318  }
 28319  
 28320  const get = (self, key, doUse) => {
 28321    const node = self[CACHE].get(key)
 28322    if (node) {
 28323      const hit = node.value
 28324      if (isStale(self, hit)) {
 28325        del(self, node)
 28326        if (!self[ALLOW_STALE])
 28327          return undefined
 28328      } else {
 28329        if (doUse) {
 28330          if (self[UPDATE_AGE_ON_GET])
 28331            node.value.now = Date.now()
 28332          self[LRU_LIST].unshiftNode(node)
 28333        }
 28334      }
 28335      return hit.value
 28336    }
 28337  }
 28338  
 28339  const isStale = (self, hit) => {
 28340    if (!hit || (!hit.maxAge && !self[MAX_AGE]))
 28341      return false
 28342  
 28343    const diff = Date.now() - hit.now
 28344    return hit.maxAge ? diff > hit.maxAge
 28345      : self[MAX_AGE] && (diff > self[MAX_AGE])
 28346  }
 28347  
 28348  const trim = self => {
 28349    if (self[LENGTH] > self[MAX]) {
 28350      for (let walker = self[LRU_LIST].tail;
 28351        self[LENGTH] > self[MAX] && walker !== null;) {
 28352        // We know that we're about to delete this one, and also
 28353        // what the next least recently used key will be, so just
 28354        // go ahead and set it now.
 28355        const prev = walker.prev
 28356        del(self, walker)
 28357        walker = prev
 28358      }
 28359    }
 28360  }
 28361  
 28362  const del = (self, node) => {
 28363    if (node) {
 28364      const hit = node.value
 28365      if (self[DISPOSE])
 28366        self[DISPOSE](hit.key, hit.value)
 28367  
 28368      self[LENGTH] -= hit.length
 28369      self[CACHE].delete(hit.key)
 28370      self[LRU_LIST].removeNode(node)
 28371    }
 28372  }
 28373  
 28374  class Entry {
 28375    constructor (key, value, length, now, maxAge) {
 28376      this.key = key
 28377      this.value = value
 28378      this.length = length
 28379      this.now = now
 28380      this.maxAge = maxAge || 0
 28381    }
 28382  }
 28383  
 28384  const forEachStep = (self, fn, node, thisp) => {
 28385    let hit = node.value
 28386    if (isStale(self, hit)) {
 28387      del(self, node)
 28388      if (!self[ALLOW_STALE])
 28389        hit = undefined
 28390    }
 28391    if (hit)
 28392      fn.call(thisp, hit.value, hit.key, self)
 28393  }
 28394  
 28395  module.exports = LRUCache
 28396  
 28397  
 28398  /***/ }),
 28399  
 28400  /***/ 37943:
 28401  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 28402  
 28403  const { Request, Response } = __nccwpck_require__(68998)
 28404  const { Minipass } = __nccwpck_require__(14968)
 28405  const MinipassFlush = __nccwpck_require__(4181)
 28406  const cacache = __nccwpck_require__(85490)
 28407  const url = __nccwpck_require__(57310)
 28408  
 28409  const CachingMinipassPipeline = __nccwpck_require__(61064)
 28410  const CachePolicy = __nccwpck_require__(97986)
 28411  const cacheKey = __nccwpck_require__(42147)
 28412  const remote = __nccwpck_require__(32619)
 28413  
 28414  const hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)
 28415  
 28416  // allow list for request headers that will be written to the cache index
 28417  // note: we will also store any request headers
 28418  // that are named in a response's vary header
 28419  const KEEP_REQUEST_HEADERS = [
 28420    'accept-charset',
 28421    'accept-encoding',
 28422    'accept-language',
 28423    'accept',
 28424    'cache-control',
 28425  ]
 28426  
 28427  // allow list for response headers that will be written to the cache index
 28428  // note: we must not store the real response's age header, or when we load
 28429  // a cache policy based on the metadata it will think the cached response
 28430  // is always stale
 28431  const KEEP_RESPONSE_HEADERS = [
 28432    'cache-control',
 28433    'content-encoding',
 28434    'content-language',
 28435    'content-type',
 28436    'date',
 28437    'etag',
 28438    'expires',
 28439    'last-modified',
 28440    'link',
 28441    'location',
 28442    'pragma',
 28443    'vary',
 28444  ]
 28445  
 28446  // return an object containing all metadata to be written to the index
 28447  const getMetadata = (request, response, options) => {
 28448    const metadata = {
 28449      time: Date.now(),
 28450      url: request.url,
 28451      reqHeaders: {},
 28452      resHeaders: {},
 28453  
 28454      // options on which we must match the request and vary the response
 28455      options: {
 28456        compress: options.compress != null ? options.compress : request.compress,
 28457      },
 28458    }
 28459  
 28460    // only save the status if it's not a 200 or 304
 28461    if (response.status !== 200 && response.status !== 304) {
 28462      metadata.status = response.status
 28463    }
 28464  
 28465    for (const name of KEEP_REQUEST_HEADERS) {
 28466      if (request.headers.has(name)) {
 28467        metadata.reqHeaders[name] = request.headers.get(name)
 28468      }
 28469    }
 28470  
 28471    // if the request's host header differs from the host in the url
 28472    // we need to keep it, otherwise it's just noise and we ignore it
 28473    const host = request.headers.get('host')
 28474    const parsedUrl = new url.URL(request.url)
 28475    if (host && parsedUrl.host !== host) {
 28476      metadata.reqHeaders.host = host
 28477    }
 28478  
 28479    // if the response has a vary header, make sure
 28480    // we store the relevant request headers too
 28481    if (response.headers.has('vary')) {
 28482      const vary = response.headers.get('vary')
 28483      // a vary of "*" means every header causes a different response.
 28484      // in that scenario, we do not include any additional headers
 28485      // as the freshness check will always fail anyway and we don't
 28486      // want to bloat the cache indexes
 28487      if (vary !== '*') {
 28488        // copy any other request headers that will vary the response
 28489        const varyHeaders = vary.trim().toLowerCase().split(/\s*,\s*/)
 28490        for (const name of varyHeaders) {
 28491          if (request.headers.has(name)) {
 28492            metadata.reqHeaders[name] = request.headers.get(name)
 28493          }
 28494        }
 28495      }
 28496    }
 28497  
 28498    for (const name of KEEP_RESPONSE_HEADERS) {
 28499      if (response.headers.has(name)) {
 28500        metadata.resHeaders[name] = response.headers.get(name)
 28501      }
 28502    }
 28503  
 28504    for (const name of options.cacheAdditionalHeaders) {
 28505      if (response.headers.has(name)) {
 28506        metadata.resHeaders[name] = response.headers.get(name)
 28507      }
 28508    }
 28509  
 28510    return metadata
 28511  }
 28512  
 28513  // symbols used to hide objects that may be lazily evaluated in a getter
 28514  const _request = Symbol('request')
 28515  const _response = Symbol('response')
 28516  const _policy = Symbol('policy')
 28517  
 28518  class CacheEntry {
 28519    constructor ({ entry, request, response, options }) {
 28520      if (entry) {
 28521        this.key = entry.key
 28522        this.entry = entry
 28523        // previous versions of this module didn't write an explicit timestamp in
 28524        // the metadata, so fall back to the entry's timestamp. we can't use the
 28525        // entry timestamp to determine staleness because cacache will update it
 28526        // when it verifies its data
 28527        this.entry.metadata.time = this.entry.metadata.time || this.entry.time
 28528      } else {
 28529        this.key = cacheKey(request)
 28530      }
 28531  
 28532      this.options = options
 28533  
 28534      // these properties are behind getters that lazily evaluate
 28535      this[_request] = request
 28536      this[_response] = response
 28537      this[_policy] = null
 28538    }
 28539  
 28540    // returns a CacheEntry instance that satisfies the given request
 28541    // or undefined if no existing entry satisfies
 28542    static async find (request, options) {
 28543      try {
 28544        // compacts the index and returns an array of unique entries
 28545        var matches = await cacache.index.compact(options.cachePath, cacheKey(request), (A, B) => {
 28546          const entryA = new CacheEntry({ entry: A, options })
 28547          const entryB = new CacheEntry({ entry: B, options })
 28548          return entryA.policy.satisfies(entryB.request)
 28549        }, {
 28550          validateEntry: (entry) => {
 28551            // clean out entries with a buggy content-encoding value
 28552            if (entry.metadata &&
 28553                entry.metadata.resHeaders &&
 28554                entry.metadata.resHeaders['content-encoding'] === null) {
 28555              return false
 28556            }
 28557  
 28558            // if an integrity is null, it needs to have a status specified
 28559            if (entry.integrity === null) {
 28560              return !!(entry.metadata && entry.metadata.status)
 28561            }
 28562  
 28563            return true
 28564          },
 28565        })
 28566      } catch (err) {
 28567        // if the compact request fails, ignore the error and return
 28568        return
 28569      }
 28570  
 28571      // a cache mode of 'reload' means to behave as though we have no cache
 28572      // on the way to the network. return undefined to allow cacheFetch to
 28573      // create a brand new request no matter what.
 28574      if (options.cache === 'reload') {
 28575        return
 28576      }
 28577  
 28578      // find the specific entry that satisfies the request
 28579      let match
 28580      for (const entry of matches) {
 28581        const _entry = new CacheEntry({
 28582          entry,
 28583          options,
 28584        })
 28585  
 28586        if (_entry.policy.satisfies(request)) {
 28587          match = _entry
 28588          break
 28589        }
 28590      }
 28591  
 28592      return match
 28593    }
 28594  
 28595    // if the user made a PUT/POST/PATCH then we invalidate our
 28596    // cache for the same url by deleting the index entirely
 28597    static async invalidate (request, options) {
 28598      const key = cacheKey(request)
 28599      try {
 28600        await cacache.rm.entry(options.cachePath, key, { removeFully: true })
 28601      } catch (err) {
 28602        // ignore errors
 28603      }
 28604    }
 28605  
 28606    get request () {
 28607      if (!this[_request]) {
 28608        this[_request] = new Request(this.entry.metadata.url, {
 28609          method: 'GET',
 28610          headers: this.entry.metadata.reqHeaders,
 28611          ...this.entry.metadata.options,
 28612        })
 28613      }
 28614  
 28615      return this[_request]
 28616    }
 28617  
 28618    get response () {
 28619      if (!this[_response]) {
 28620        this[_response] = new Response(null, {
 28621          url: this.entry.metadata.url,
 28622          counter: this.options.counter,
 28623          status: this.entry.metadata.status || 200,
 28624          headers: {
 28625            ...this.entry.metadata.resHeaders,
 28626            'content-length': this.entry.size,
 28627          },
 28628        })
 28629      }
 28630  
 28631      return this[_response]
 28632    }
 28633  
 28634    get policy () {
 28635      if (!this[_policy]) {
 28636        this[_policy] = new CachePolicy({
 28637          entry: this.entry,
 28638          request: this.request,
 28639          response: this.response,
 28640          options: this.options,
 28641        })
 28642      }
 28643  
 28644      return this[_policy]
 28645    }
 28646  
 28647    // wraps the response in a pipeline that stores the data
 28648    // in the cache while the user consumes it
 28649    async store (status) {
 28650      // if we got a status other than 200, 301, or 308,
 28651      // or the CachePolicy forbid storage, append the
 28652      // cache status header and return it untouched
 28653      if (
 28654        this.request.method !== 'GET' ||
 28655        ![200, 301, 308].includes(this.response.status) ||
 28656        !this.policy.storable()
 28657      ) {
 28658        this.response.headers.set('x-local-cache-status', 'skip')
 28659        return this.response
 28660      }
 28661  
 28662      const size = this.response.headers.get('content-length')
 28663      const cacheOpts = {
 28664        algorithms: this.options.algorithms,
 28665        metadata: getMetadata(this.request, this.response, this.options),
 28666        size,
 28667        integrity: this.options.integrity,
 28668        integrityEmitter: this.response.body.hasIntegrityEmitter && this.response.body,
 28669      }
 28670  
 28671      let body = null
 28672      // we only set a body if the status is a 200, redirects are
 28673      // stored as metadata only
 28674      if (this.response.status === 200) {
 28675        let cacheWriteResolve, cacheWriteReject
 28676        const cacheWritePromise = new Promise((resolve, reject) => {
 28677          cacheWriteResolve = resolve
 28678          cacheWriteReject = reject
 28679        }).catch((err) => {
 28680          body.emit('error', err)
 28681        })
 28682  
 28683        body = new CachingMinipassPipeline({ events: ['integrity', 'size'] }, new MinipassFlush({
 28684          flush () {
 28685            return cacheWritePromise
 28686          },
 28687        }))
 28688        // this is always true since if we aren't reusing the one from the remote fetch, we
 28689        // are using the one from cacache
 28690        body.hasIntegrityEmitter = true
 28691  
 28692        const onResume = () => {
 28693          const tee = new Minipass()
 28694          const cacheStream = cacache.put.stream(this.options.cachePath, this.key, cacheOpts)
 28695          // re-emit the integrity and size events on our new response body so they can be reused
 28696          cacheStream.on('integrity', i => body.emit('integrity', i))
 28697          cacheStream.on('size', s => body.emit('size', s))
 28698          // stick a flag on here so downstream users will know if they can expect integrity events
 28699          tee.pipe(cacheStream)
 28700          // TODO if the cache write fails, log a warning but return the response anyway
 28701          // eslint-disable-next-line promise/catch-or-return
 28702          cacheStream.promise().then(cacheWriteResolve, cacheWriteReject)
 28703          body.unshift(tee)
 28704          body.unshift(this.response.body)
 28705        }
 28706  
 28707        body.once('resume', onResume)
 28708        body.once('end', () => body.removeListener('resume', onResume))
 28709      } else {
 28710        await cacache.index.insert(this.options.cachePath, this.key, null, cacheOpts)
 28711      }
 28712  
 28713      // note: we do not set the x-local-cache-hash header because we do not know
 28714      // the hash value until after the write to the cache completes, which doesn't
 28715      // happen until after the response has been sent and it's too late to write
 28716      // the header anyway
 28717      this.response.headers.set('x-local-cache', encodeURIComponent(this.options.cachePath))
 28718      this.response.headers.set('x-local-cache-key', encodeURIComponent(this.key))
 28719      this.response.headers.set('x-local-cache-mode', 'stream')
 28720      this.response.headers.set('x-local-cache-status', status)
 28721      this.response.headers.set('x-local-cache-time', new Date().toISOString())
 28722      const newResponse = new Response(body, {
 28723        url: this.response.url,
 28724        status: this.response.status,
 28725        headers: this.response.headers,
 28726        counter: this.options.counter,
 28727      })
 28728      return newResponse
 28729    }
 28730  
 28731    // use the cached data to create a response and return it
 28732    async respond (method, options, status) {
 28733      let response
 28734      if (method === 'HEAD' || [301, 308].includes(this.response.status)) {
 28735        // if the request is a HEAD, or the response is a redirect,
 28736        // then the metadata in the entry already includes everything
 28737        // we need to build a response
 28738        response = this.response
 28739      } else {
 28740        // we're responding with a full cached response, so create a body
 28741        // that reads from cacache and attach it to a new Response
 28742        const body = new Minipass()
 28743        const headers = { ...this.policy.responseHeaders() }
 28744  
 28745        const onResume = () => {
 28746          const cacheStream = cacache.get.stream.byDigest(
 28747            this.options.cachePath, this.entry.integrity, { memoize: this.options.memoize }
 28748          )
 28749          cacheStream.on('error', async (err) => {
 28750            cacheStream.pause()
 28751            if (err.code === 'EINTEGRITY') {
 28752              await cacache.rm.content(
 28753                this.options.cachePath, this.entry.integrity, { memoize: this.options.memoize }
 28754              )
 28755            }
 28756            if (err.code === 'ENOENT' || err.code === 'EINTEGRITY') {
 28757              await CacheEntry.invalidate(this.request, this.options)
 28758            }
 28759            body.emit('error', err)
 28760            cacheStream.resume()
 28761          })
 28762          // emit the integrity and size events based on our metadata so we're consistent
 28763          body.emit('integrity', this.entry.integrity)
 28764          body.emit('size', Number(headers['content-length']))
 28765          cacheStream.pipe(body)
 28766        }
 28767  
 28768        body.once('resume', onResume)
 28769        body.once('end', () => body.removeListener('resume', onResume))
 28770        response = new Response(body, {
 28771          url: this.entry.metadata.url,
 28772          counter: options.counter,
 28773          status: 200,
 28774          headers,
 28775        })
 28776      }
 28777  
 28778      response.headers.set('x-local-cache', encodeURIComponent(this.options.cachePath))
 28779      response.headers.set('x-local-cache-hash', encodeURIComponent(this.entry.integrity))
 28780      response.headers.set('x-local-cache-key', encodeURIComponent(this.key))
 28781      response.headers.set('x-local-cache-mode', 'stream')
 28782      response.headers.set('x-local-cache-status', status)
 28783      response.headers.set('x-local-cache-time', new Date(this.entry.metadata.time).toUTCString())
 28784      return response
 28785    }
 28786  
 28787    // use the provided request along with this cache entry to
 28788    // revalidate the stored response. returns a response, either
 28789    // from the cache or from the update
 28790    async revalidate (request, options) {
 28791      const revalidateRequest = new Request(request, {
 28792        headers: this.policy.revalidationHeaders(request),
 28793      })
 28794  
 28795      try {
 28796        // NOTE: be sure to remove the headers property from the
 28797        // user supplied options, since we have already defined
 28798        // them on the new request object. if they're still in the
 28799        // options then those will overwrite the ones from the policy
 28800        var response = await remote(revalidateRequest, {
 28801          ...options,
 28802          headers: undefined,
 28803        })
 28804      } catch (err) {
 28805        // if the network fetch fails, return the stale
 28806        // cached response unless it has a cache-control
 28807        // of 'must-revalidate'
 28808        if (!this.policy.mustRevalidate) {
 28809          return this.respond(request.method, options, 'stale')
 28810        }
 28811  
 28812        throw err
 28813      }
 28814  
 28815      if (this.policy.revalidated(revalidateRequest, response)) {
 28816        // we got a 304, write a new index to the cache and respond from cache
 28817        const metadata = getMetadata(request, response, options)
 28818        // 304 responses do not include headers that are specific to the response data
 28819        // since they do not include a body, so we copy values for headers that were
 28820        // in the old cache entry to the new one, if the new metadata does not already
 28821        // include that header
 28822        for (const name of KEEP_RESPONSE_HEADERS) {
 28823          if (
 28824            !hasOwnProperty(metadata.resHeaders, name) &&
 28825            hasOwnProperty(this.entry.metadata.resHeaders, name)
 28826          ) {
 28827            metadata.resHeaders[name] = this.entry.metadata.resHeaders[name]
 28828          }
 28829        }
 28830  
 28831        for (const name of options.cacheAdditionalHeaders) {
 28832          const inMeta = hasOwnProperty(metadata.resHeaders, name)
 28833          const inEntry = hasOwnProperty(this.entry.metadata.resHeaders, name)
 28834          const inPolicy = hasOwnProperty(this.policy.response.headers, name)
 28835  
 28836          // if the header is in the existing entry, but it is not in the metadata
 28837          // then we need to write it to the metadata as this will refresh the on-disk cache
 28838          if (!inMeta && inEntry) {
 28839            metadata.resHeaders[name] = this.entry.metadata.resHeaders[name]
 28840          }
 28841          // if the header is in the metadata, but not in the policy, then we need to set
 28842          // it in the policy so that it's included in the immediate response. future
 28843          // responses will load a new cache entry, so we don't need to change that
 28844          if (!inPolicy && inMeta) {
 28845            this.policy.response.headers[name] = metadata.resHeaders[name]
 28846          }
 28847        }
 28848  
 28849        try {
 28850          await cacache.index.insert(options.cachePath, this.key, this.entry.integrity, {
 28851            size: this.entry.size,
 28852            metadata,
 28853          })
 28854        } catch (err) {
 28855          // if updating the cache index fails, we ignore it and
 28856          // respond anyway
 28857        }
 28858        return this.respond(request.method, options, 'revalidated')
 28859      }
 28860  
 28861      // if we got a modified response, create a new entry based on it
 28862      const newEntry = new CacheEntry({
 28863        request,
 28864        response,
 28865        options,
 28866      })
 28867  
 28868      // respond with the new entry while writing it to the cache
 28869      return newEntry.store('updated')
 28870    }
 28871  }
 28872  
 28873  module.exports = CacheEntry
 28874  
 28875  
 28876  /***/ }),
 28877  
 28878  /***/ 93104:
 28879  /***/ ((module) => {
 28880  
 28881  class NotCachedError extends Error {
 28882    constructor (url) {
 28883      /* eslint-disable-next-line max-len */
 28884      super(`request to ${url} failed: cache mode is 'only-if-cached' but no cached response is available.`)
 28885      this.code = 'ENOTCACHED'
 28886    }
 28887  }
 28888  
 28889  module.exports = {
 28890    NotCachedError,
 28891  }
 28892  
 28893  
 28894  /***/ }),
 28895  
 28896  /***/ 43189:
 28897  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 28898  
 28899  const { NotCachedError } = __nccwpck_require__(93104)
 28900  const CacheEntry = __nccwpck_require__(37943)
 28901  const remote = __nccwpck_require__(32619)
 28902  
 28903  // do whatever is necessary to get a Response and return it
 28904  const cacheFetch = async (request, options) => {
 28905    // try to find a cached entry that satisfies this request
 28906    const entry = await CacheEntry.find(request, options)
 28907    if (!entry) {
 28908      // no cached result, if the cache mode is 'only-if-cached' that's a failure
 28909      if (options.cache === 'only-if-cached') {
 28910        throw new NotCachedError(request.url)
 28911      }
 28912  
 28913      // otherwise, we make a request, store it and return it
 28914      const response = await remote(request, options)
 28915      const newEntry = new CacheEntry({ request, response, options })
 28916      return newEntry.store('miss')
 28917    }
 28918  
 28919    // we have a cached response that satisfies this request, however if the cache
 28920    // mode is 'no-cache' then we send the revalidation request no matter what
 28921    if (options.cache === 'no-cache') {
 28922      return entry.revalidate(request, options)
 28923    }
 28924  
 28925    // if the cached entry is not stale, or if the cache mode is 'force-cache' or
 28926    // 'only-if-cached' we can respond with the cached entry. set the status
 28927    // based on the result of needsRevalidation and respond
 28928    const _needsRevalidation = entry.policy.needsRevalidation(request)
 28929    if (options.cache === 'force-cache' ||
 28930        options.cache === 'only-if-cached' ||
 28931        !_needsRevalidation) {
 28932      return entry.respond(request.method, options, _needsRevalidation ? 'stale' : 'hit')
 28933    }
 28934  
 28935    // if we got here, the cache entry is stale so revalidate it
 28936    return entry.revalidate(request, options)
 28937  }
 28938  
 28939  cacheFetch.invalidate = async (request, options) => {
 28940    if (!options.cachePath) {
 28941      return
 28942    }
 28943  
 28944    return CacheEntry.invalidate(request, options)
 28945  }
 28946  
 28947  module.exports = cacheFetch
 28948  
 28949  
 28950  /***/ }),
 28951  
 28952  /***/ 42147:
 28953  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 28954  
 28955  const { URL, format } = __nccwpck_require__(57310)
 28956  
 28957  // options passed to url.format() when generating a key
 28958  const formatOptions = {
 28959    auth: false,
 28960    fragment: false,
 28961    search: true,
 28962    unicode: false,
 28963  }
 28964  
 28965  // returns a string to be used as the cache key for the Request
 28966  const cacheKey = (request) => {
 28967    const parsed = new URL(request.url)
 28968    return `make-fetch-happen:request-cache:${format(parsed, formatOptions)}`
 28969  }
 28970  
 28971  module.exports = cacheKey
 28972  
 28973  
 28974  /***/ }),
 28975  
 28976  /***/ 97986:
 28977  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 28978  
 28979  const CacheSemantics = __nccwpck_require__(61002)
 28980  const Negotiator = __nccwpck_require__(95385)
 28981  const ssri = __nccwpck_require__(4406)
 28982  
 28983  // options passed to http-cache-semantics constructor
 28984  const policyOptions = {
 28985    shared: false,
 28986    ignoreCargoCult: true,
 28987  }
 28988  
 28989  // a fake empty response, used when only testing the
 28990  // request for storability
 28991  const emptyResponse = { status: 200, headers: {} }
 28992  
 28993  // returns a plain object representation of the Request
 28994  const requestObject = (request) => {
 28995    const _obj = {
 28996      method: request.method,
 28997      url: request.url,
 28998      headers: {},
 28999      compress: request.compress,
 29000    }
 29001  
 29002    request.headers.forEach((value, key) => {
 29003      _obj.headers[key] = value
 29004    })
 29005  
 29006    return _obj
 29007  }
 29008  
 29009  // returns a plain object representation of the Response
 29010  const responseObject = (response) => {
 29011    const _obj = {
 29012      status: response.status,
 29013      headers: {},
 29014    }
 29015  
 29016    response.headers.forEach((value, key) => {
 29017      _obj.headers[key] = value
 29018    })
 29019  
 29020    return _obj
 29021  }
 29022  
 29023  class CachePolicy {
 29024    constructor ({ entry, request, response, options }) {
 29025      this.entry = entry
 29026      this.request = requestObject(request)
 29027      this.response = responseObject(response)
 29028      this.options = options
 29029      this.policy = new CacheSemantics(this.request, this.response, policyOptions)
 29030  
 29031      if (this.entry) {
 29032        // if we have an entry, copy the timestamp to the _responseTime
 29033        // this is necessary because the CacheSemantics constructor forces
 29034        // the value to Date.now() which means a policy created from a
 29035        // cache entry is likely to always identify itself as stale
 29036        this.policy._responseTime = this.entry.metadata.time
 29037      }
 29038    }
 29039  
 29040    // static method to quickly determine if a request alone is storable
 29041    static storable (request, options) {
 29042      // no cachePath means no caching
 29043      if (!options.cachePath) {
 29044        return false
 29045      }
 29046  
 29047      // user explicitly asked not to cache
 29048      if (options.cache === 'no-store') {
 29049        return false
 29050      }
 29051  
 29052      // we only cache GET and HEAD requests
 29053      if (!['GET', 'HEAD'].includes(request.method)) {
 29054        return false
 29055      }
 29056  
 29057      // otherwise, let http-cache-semantics make the decision
 29058      // based on the request's headers
 29059      const policy = new CacheSemantics(requestObject(request), emptyResponse, policyOptions)
 29060      return policy.storable()
 29061    }
 29062  
 29063    // returns true if the policy satisfies the request
 29064    satisfies (request) {
 29065      const _req = requestObject(request)
 29066      if (this.request.headers.host !== _req.headers.host) {
 29067        return false
 29068      }
 29069  
 29070      if (this.request.compress !== _req.compress) {
 29071        return false
 29072      }
 29073  
 29074      const negotiatorA = new Negotiator(this.request)
 29075      const negotiatorB = new Negotiator(_req)
 29076  
 29077      if (JSON.stringify(negotiatorA.mediaTypes()) !== JSON.stringify(negotiatorB.mediaTypes())) {
 29078        return false
 29079      }
 29080  
 29081      if (JSON.stringify(negotiatorA.languages()) !== JSON.stringify(negotiatorB.languages())) {
 29082        return false
 29083      }
 29084  
 29085      if (JSON.stringify(negotiatorA.encodings()) !== JSON.stringify(negotiatorB.encodings())) {
 29086        return false
 29087      }
 29088  
 29089      if (this.options.integrity) {
 29090        return ssri.parse(this.options.integrity).match(this.entry.integrity)
 29091      }
 29092  
 29093      return true
 29094    }
 29095  
 29096    // returns true if the request and response allow caching
 29097    storable () {
 29098      return this.policy.storable()
 29099    }
 29100  
 29101    // NOTE: this is a hack to avoid parsing the cache-control
 29102    // header ourselves, it returns true if the response's
 29103    // cache-control contains must-revalidate
 29104    get mustRevalidate () {
 29105      return !!this.policy._rescc['must-revalidate']
 29106    }
 29107  
 29108    // returns true if the cached response requires revalidation
 29109    // for the given request
 29110    needsRevalidation (request) {
 29111      const _req = requestObject(request)
 29112      // force method to GET because we only cache GETs
 29113      // but can serve a HEAD from a cached GET
 29114      _req.method = 'GET'
 29115      return !this.policy.satisfiesWithoutRevalidation(_req)
 29116    }
 29117  
 29118    responseHeaders () {
 29119      return this.policy.responseHeaders()
 29120    }
 29121  
 29122    // returns a new object containing the appropriate headers
 29123    // to send a revalidation request
 29124    revalidationHeaders (request) {
 29125      const _req = requestObject(request)
 29126      return this.policy.revalidationHeaders(_req)
 29127    }
 29128  
 29129    // returns true if the request/response was revalidated
 29130    // successfully. returns false if a new response was received
 29131    revalidated (request, response) {
 29132      const _req = requestObject(request)
 29133      const _res = responseObject(response)
 29134      const policy = this.policy.revalidatedPolicy(_req, _res)
 29135      return !policy.modified
 29136    }
 29137  }
 29138  
 29139  module.exports = CachePolicy
 29140  
 29141  
 29142  /***/ }),
 29143  
 29144  /***/ 11371:
 29145  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 29146  
 29147  "use strict";
 29148  
 29149  
 29150  const { FetchError, Request, isRedirect } = __nccwpck_require__(68998)
 29151  const url = __nccwpck_require__(57310)
 29152  
 29153  const CachePolicy = __nccwpck_require__(97986)
 29154  const cache = __nccwpck_require__(43189)
 29155  const remote = __nccwpck_require__(32619)
 29156  
 29157  // given a Request, a Response and user options
 29158  // return true if the response is a redirect that
 29159  // can be followed. we throw errors that will result
 29160  // in the fetch being rejected if the redirect is
 29161  // possible but invalid for some reason
 29162  const canFollowRedirect = (request, response, options) => {
 29163    if (!isRedirect(response.status)) {
 29164      return false
 29165    }
 29166  
 29167    if (options.redirect === 'manual') {
 29168      return false
 29169    }
 29170  
 29171    if (options.redirect === 'error') {
 29172      throw new FetchError(`redirect mode is set to error: ${request.url}`,
 29173        'no-redirect', { code: 'ENOREDIRECT' })
 29174    }
 29175  
 29176    if (!response.headers.has('location')) {
 29177      throw new FetchError(`redirect location header missing for: ${request.url}`,
 29178        'no-location', { code: 'EINVALIDREDIRECT' })
 29179    }
 29180  
 29181    if (request.counter >= request.follow) {
 29182      throw new FetchError(`maximum redirect reached at: ${request.url}`,
 29183        'max-redirect', { code: 'EMAXREDIRECT' })
 29184    }
 29185  
 29186    return true
 29187  }
 29188  
 29189  // given a Request, a Response, and the user's options return an object
 29190  // with a new Request and a new options object that will be used for
 29191  // following the redirect
 29192  const getRedirect = (request, response, options) => {
 29193    const _opts = { ...options }
 29194    const location = response.headers.get('location')
 29195    const redirectUrl = new url.URL(location, /^https?:/.test(location) ? undefined : request.url)
 29196    // Comment below is used under the following license:
 29197    /**
 29198     * @license
 29199     * Copyright (c) 2010-2012 Mikeal Rogers
 29200     * Licensed under the Apache License, Version 2.0 (the "License");
 29201     * you may not use this file except in compliance with the License.
 29202     * You may obtain a copy of the License at
 29203     * http://www.apache.org/licenses/LICENSE-2.0
 29204     * Unless required by applicable law or agreed to in writing,
 29205     * software distributed under the License is distributed on an "AS
 29206     * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 29207     * express or implied. See the License for the specific language
 29208     * governing permissions and limitations under the License.
 29209     */
 29210  
 29211    // Remove authorization if changing hostnames (but not if just
 29212    // changing ports or protocols).  This matches the behavior of request:
 29213    // https://github.com/request/request/blob/b12a6245/lib/redirect.js#L134-L138
 29214    if (new url.URL(request.url).hostname !== redirectUrl.hostname) {
 29215      request.headers.delete('authorization')
 29216      request.headers.delete('cookie')
 29217    }
 29218  
 29219    // for POST request with 301/302 response, or any request with 303 response,
 29220    // use GET when following redirect
 29221    if (
 29222      response.status === 303 ||
 29223      (request.method === 'POST' && [301, 302].includes(response.status))
 29224    ) {
 29225      _opts.method = 'GET'
 29226      _opts.body = null
 29227      request.headers.delete('content-length')
 29228    }
 29229  
 29230    _opts.headers = {}
 29231    request.headers.forEach((value, key) => {
 29232      _opts.headers[key] = value
 29233    })
 29234  
 29235    _opts.counter = ++request.counter
 29236    const redirectReq = new Request(url.format(redirectUrl), _opts)
 29237    return {
 29238      request: redirectReq,
 29239      options: _opts,
 29240    }
 29241  }
 29242  
 29243  const fetch = async (request, options) => {
 29244    const response = CachePolicy.storable(request, options)
 29245      ? await cache(request, options)
 29246      : await remote(request, options)
 29247  
 29248    // if the request wasn't a GET or HEAD, and the response
 29249    // status is between 200 and 399 inclusive, invalidate the
 29250    // request url
 29251    if (!['GET', 'HEAD'].includes(request.method) &&
 29252        response.status >= 200 &&
 29253        response.status <= 399) {
 29254      await cache.invalidate(request, options)
 29255    }
 29256  
 29257    if (!canFollowRedirect(request, response, options)) {
 29258      return response
 29259    }
 29260  
 29261    const redirect = getRedirect(request, response, options)
 29262    return fetch(redirect.request, redirect.options)
 29263  }
 29264  
 29265  module.exports = fetch
 29266  
 29267  
 29268  /***/ }),
 29269  
 29270  /***/ 9525:
 29271  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 29272  
 29273  const { FetchError, Headers, Request, Response } = __nccwpck_require__(68998)
 29274  
 29275  const configureOptions = __nccwpck_require__(35530)
 29276  const fetch = __nccwpck_require__(11371)
 29277  
 29278  const makeFetchHappen = (url, opts) => {
 29279    const options = configureOptions(opts)
 29280  
 29281    const request = new Request(url, options)
 29282    return fetch(request, options)
 29283  }
 29284  
 29285  makeFetchHappen.defaults = (defaultUrl, defaultOptions = {}, wrappedFetch = makeFetchHappen) => {
 29286    if (typeof defaultUrl === 'object') {
 29287      defaultOptions = defaultUrl
 29288      defaultUrl = null
 29289    }
 29290  
 29291    const defaultedFetch = (url, options = {}) => {
 29292      const finalUrl = url || defaultUrl
 29293      const finalOptions = {
 29294        ...defaultOptions,
 29295        ...options,
 29296        headers: {
 29297          ...defaultOptions.headers,
 29298          ...options.headers,
 29299        },
 29300      }
 29301      return wrappedFetch(finalUrl, finalOptions)
 29302    }
 29303  
 29304    defaultedFetch.defaults = (defaultUrl1, defaultOptions1 = {}) =>
 29305      makeFetchHappen.defaults(defaultUrl1, defaultOptions1, defaultedFetch)
 29306    return defaultedFetch
 29307  }
 29308  
 29309  module.exports = makeFetchHappen
 29310  module.exports.FetchError = FetchError
 29311  module.exports.Headers = Headers
 29312  module.exports.Request = Request
 29313  module.exports.Response = Response
 29314  
 29315  
 29316  /***/ }),
 29317  
 29318  /***/ 35530:
 29319  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 29320  
 29321  const dns = __nccwpck_require__(9523)
 29322  
 29323  const conditionalHeaders = [
 29324    'if-modified-since',
 29325    'if-none-match',
 29326    'if-unmodified-since',
 29327    'if-match',
 29328    'if-range',
 29329  ]
 29330  
 29331  const configureOptions = (opts) => {
 29332    const { strictSSL, ...options } = { ...opts }
 29333    options.method = options.method ? options.method.toUpperCase() : 'GET'
 29334    options.rejectUnauthorized = strictSSL !== false
 29335  
 29336    if (!options.retry) {
 29337      options.retry = { retries: 0 }
 29338    } else if (typeof options.retry === 'string') {
 29339      const retries = parseInt(options.retry, 10)
 29340      if (isFinite(retries)) {
 29341        options.retry = { retries }
 29342      } else {
 29343        options.retry = { retries: 0 }
 29344      }
 29345    } else if (typeof options.retry === 'number') {
 29346      options.retry = { retries: options.retry }
 29347    } else {
 29348      options.retry = { retries: 0, ...options.retry }
 29349    }
 29350  
 29351    options.dns = { ttl: 5 * 60 * 1000, lookup: dns.lookup, ...options.dns }
 29352  
 29353    options.cache = options.cache || 'default'
 29354    if (options.cache === 'default') {
 29355      const hasConditionalHeader = Object.keys(options.headers || {}).some((name) => {
 29356        return conditionalHeaders.includes(name.toLowerCase())
 29357      })
 29358      if (hasConditionalHeader) {
 29359        options.cache = 'no-store'
 29360      }
 29361    }
 29362  
 29363    options.cacheAdditionalHeaders = options.cacheAdditionalHeaders || []
 29364  
 29365    // cacheManager is deprecated, but if it's set and
 29366    // cachePath is not we should copy it to the new field
 29367    if (options.cacheManager && !options.cachePath) {
 29368      options.cachePath = options.cacheManager
 29369    }
 29370  
 29371    return options
 29372  }
 29373  
 29374  module.exports = configureOptions
 29375  
 29376  
 29377  /***/ }),
 29378  
 29379  /***/ 61064:
 29380  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 29381  
 29382  "use strict";
 29383  
 29384  
 29385  const MinipassPipeline = __nccwpck_require__(69891)
 29386  
 29387  class CachingMinipassPipeline extends MinipassPipeline {
 29388    #events = []
 29389    #data = new Map()
 29390  
 29391    constructor (opts, ...streams) {
 29392      // CRITICAL: do NOT pass the streams to the call to super(), this will start
 29393      // the flow of data and potentially cause the events we need to catch to emit
 29394      // before we've finished our own setup. instead we call super() with no args,
 29395      // finish our setup, and then push the streams into ourselves to start the
 29396      // data flow
 29397      super()
 29398      this.#events = opts.events
 29399  
 29400      /* istanbul ignore next - coverage disabled because this is pointless to test here */
 29401      if (streams.length) {
 29402        this.push(...streams)
 29403      }
 29404    }
 29405  
 29406    on (event, handler) {
 29407      if (this.#events.includes(event) && this.#data.has(event)) {
 29408        return handler(...this.#data.get(event))
 29409      }
 29410  
 29411      return super.on(event, handler)
 29412    }
 29413  
 29414    emit (event, ...data) {
 29415      if (this.#events.includes(event)) {
 29416        this.#data.set(event, data)
 29417      }
 29418  
 29419      return super.emit(event, ...data)
 29420    }
 29421  }
 29422  
 29423  module.exports = CachingMinipassPipeline
 29424  
 29425  
 29426  /***/ }),
 29427  
 29428  /***/ 32619:
 29429  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 29430  
 29431  const { Minipass } = __nccwpck_require__(14968)
 29432  const fetch = __nccwpck_require__(68998)
 29433  const promiseRetry = __nccwpck_require__(54742)
 29434  const ssri = __nccwpck_require__(4406)
 29435  const { log } = __nccwpck_require__(56528)
 29436  
 29437  const CachingMinipassPipeline = __nccwpck_require__(61064)
 29438  const { getAgent } = __nccwpck_require__(79907)
 29439  const pkg = __nccwpck_require__(80557)
 29440  
 29441  const USER_AGENT = `${pkg.name}/${pkg.version} (+https://npm.im/${pkg.name})`
 29442  
 29443  const RETRY_ERRORS = [
 29444    'ECONNRESET', // remote socket closed on us
 29445    'ECONNREFUSED', // remote host refused to open connection
 29446    'EADDRINUSE', // failed to bind to a local port (proxy?)
 29447    'ETIMEDOUT', // someone in the transaction is WAY TOO SLOW
 29448    // from @npmcli/agent
 29449    'ECONNECTIONTIMEOUT',
 29450    'EIDLETIMEOUT',
 29451    'ERESPONSETIMEOUT',
 29452    'ETRANSFERTIMEOUT',
 29453    // Known codes we do NOT retry on:
 29454    // ENOTFOUND (getaddrinfo failure. Either bad hostname, or offline)
 29455    // EINVALIDPROXY // invalid protocol from @npmcli/agent
 29456    // EINVALIDRESPONSE // invalid status code from @npmcli/agent
 29457  ]
 29458  
 29459  const RETRY_TYPES = [
 29460    'request-timeout',
 29461  ]
 29462  
 29463  // make a request directly to the remote source,
 29464  // retrying certain classes of errors as well as
 29465  // following redirects (through the cache if necessary)
 29466  // and verifying response integrity
 29467  const remoteFetch = (request, options) => {
 29468    const agent = getAgent(request.url, options)
 29469    if (!request.headers.has('connection')) {
 29470      request.headers.set('connection', agent ? 'keep-alive' : 'close')
 29471    }
 29472  
 29473    if (!request.headers.has('user-agent')) {
 29474      request.headers.set('user-agent', USER_AGENT)
 29475    }
 29476  
 29477    // keep our own options since we're overriding the agent
 29478    // and the redirect mode
 29479    const _opts = {
 29480      ...options,
 29481      agent,
 29482      redirect: 'manual',
 29483    }
 29484  
 29485    return promiseRetry(async (retryHandler, attemptNum) => {
 29486      const req = new fetch.Request(request, _opts)
 29487      try {
 29488        let res = await fetch(req, _opts)
 29489        if (_opts.integrity && res.status === 200) {
 29490          // we got a 200 response and the user has specified an expected
 29491          // integrity value, so wrap the response in an ssri stream to verify it
 29492          const integrityStream = ssri.integrityStream({
 29493            algorithms: _opts.algorithms,
 29494            integrity: _opts.integrity,
 29495            size: _opts.size,
 29496          })
 29497          const pipeline = new CachingMinipassPipeline({
 29498            events: ['integrity', 'size'],
 29499          }, res.body, integrityStream)
 29500          // we also propagate the integrity and size events out to the pipeline so we can use
 29501          // this new response body as an integrityEmitter for cacache
 29502          integrityStream.on('integrity', i => pipeline.emit('integrity', i))
 29503          integrityStream.on('size', s => pipeline.emit('size', s))
 29504          res = new fetch.Response(pipeline, res)
 29505          // set an explicit flag so we know if our response body will emit integrity and size
 29506          res.body.hasIntegrityEmitter = true
 29507        }
 29508  
 29509        res.headers.set('x-fetch-attempts', attemptNum)
 29510  
 29511        // do not retry POST requests, or requests with a streaming body
 29512        // do retry requests with a 408, 420, 429 or 500+ status in the response
 29513        const isStream = Minipass.isStream(req.body)
 29514        const isRetriable = req.method !== 'POST' &&
 29515            !isStream &&
 29516            ([408, 420, 429].includes(res.status) || res.status >= 500)
 29517  
 29518        if (isRetriable) {
 29519          if (typeof options.onRetry === 'function') {
 29520            options.onRetry(res)
 29521          }
 29522  
 29523          /* eslint-disable-next-line max-len */
 29524          log.http('fetch', `${req.method} ${req.url} attempt ${attemptNum} failed with ${res.status}`)
 29525          return retryHandler(res)
 29526        }
 29527  
 29528        return res
 29529      } catch (err) {
 29530        const code = (err.code === 'EPROMISERETRY')
 29531          ? err.retried.code
 29532          : err.code
 29533  
 29534        // err.retried will be the thing that was thrown from above
 29535        // if it's a response, we just got a bad status code and we
 29536        // can re-throw to allow the retry
 29537        const isRetryError = err.retried instanceof fetch.Response ||
 29538          (RETRY_ERRORS.includes(code) && RETRY_TYPES.includes(err.type))
 29539  
 29540        if (req.method === 'POST' || isRetryError) {
 29541          throw err
 29542        }
 29543  
 29544        if (typeof options.onRetry === 'function') {
 29545          options.onRetry(err)
 29546        }
 29547  
 29548        log.http('fetch', `${req.method} ${req.url} attempt ${attemptNum} failed with ${err.code}`)
 29549        return retryHandler(err)
 29550      }
 29551    }, options.retry).catch((err) => {
 29552      // don't reject for http errors, just return them
 29553      if (err.status >= 400 && err.type !== 'system') {
 29554        return err
 29555      }
 29556  
 29557      throw err
 29558    })
 29559  }
 29560  
 29561  module.exports = remoteFetch
 29562  
 29563  
 29564  /***/ }),
 29565  
 29566  /***/ 74658:
 29567  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 29568  
 29569  const { Minipass } = __nccwpck_require__(14968)
 29570  const _data = Symbol('_data')
 29571  const _length = Symbol('_length')
 29572  class Collect extends Minipass {
 29573    constructor (options) {
 29574      super(options)
 29575      this[_data] = []
 29576      this[_length] = 0
 29577    }
 29578    write (chunk, encoding, cb) {
 29579      if (typeof encoding === 'function')
 29580        cb = encoding, encoding = 'utf8'
 29581  
 29582      if (!encoding)
 29583        encoding = 'utf8'
 29584  
 29585      const c = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, encoding)
 29586      this[_data].push(c)
 29587      this[_length] += c.length
 29588      if (cb)
 29589        cb()
 29590      return true
 29591    }
 29592    end (chunk, encoding, cb) {
 29593      if (typeof chunk === 'function')
 29594        cb = chunk, chunk = null
 29595      if (typeof encoding === 'function')
 29596        cb = encoding, encoding = 'utf8'
 29597      if (chunk)
 29598        this.write(chunk, encoding)
 29599      const result = Buffer.concat(this[_data], this[_length])
 29600      super.write(result)
 29601      return super.end(cb)
 29602    }
 29603  }
 29604  module.exports = Collect
 29605  
 29606  // it would be possible to DRY this a bit by doing something like
 29607  // this.collector = new Collect() and listening on its data event,
 29608  // but it's not much code, and we may as well save the extra obj
 29609  class CollectPassThrough extends Minipass {
 29610    constructor (options) {
 29611      super(options)
 29612      this[_data] = []
 29613      this[_length] = 0
 29614    }
 29615    write (chunk, encoding, cb) {
 29616      if (typeof encoding === 'function')
 29617        cb = encoding, encoding = 'utf8'
 29618  
 29619      if (!encoding)
 29620        encoding = 'utf8'
 29621  
 29622      const c = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, encoding)
 29623      this[_data].push(c)
 29624      this[_length] += c.length
 29625      return super.write(chunk, encoding, cb)
 29626    }
 29627    end (chunk, encoding, cb) {
 29628      if (typeof chunk === 'function')
 29629        cb = chunk, chunk = null
 29630      if (typeof encoding === 'function')
 29631        cb = encoding, encoding = 'utf8'
 29632      if (chunk)
 29633        this.write(chunk, encoding)
 29634      const result = Buffer.concat(this[_data], this[_length])
 29635      this.emit('collect', result)
 29636      return super.end(cb)
 29637    }
 29638  }
 29639  module.exports.PassThrough = CollectPassThrough
 29640  
 29641  
 29642  /***/ }),
 29643  
 29644  /***/ 11078:
 29645  /***/ ((module) => {
 29646  
 29647  "use strict";
 29648  
 29649  class AbortError extends Error {
 29650    constructor (message) {
 29651      super(message)
 29652      this.code = 'FETCH_ABORTED'
 29653      this.type = 'aborted'
 29654      Error.captureStackTrace(this, this.constructor)
 29655    }
 29656  
 29657    get name () {
 29658      return 'AbortError'
 29659    }
 29660  
 29661    // don't allow name to be overridden, but don't throw either
 29662    set name (s) {}
 29663  }
 29664  module.exports = AbortError
 29665  
 29666  
 29667  /***/ }),
 29668  
 29669  /***/ 67911:
 29670  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 29671  
 29672  "use strict";
 29673  
 29674  const { Minipass } = __nccwpck_require__(14968)
 29675  const TYPE = Symbol('type')
 29676  const BUFFER = Symbol('buffer')
 29677  
 29678  class Blob {
 29679    constructor (blobParts, options) {
 29680      this[TYPE] = ''
 29681  
 29682      const buffers = []
 29683      let size = 0
 29684  
 29685      if (blobParts) {
 29686        const a = blobParts
 29687        const length = Number(a.length)
 29688        for (let i = 0; i < length; i++) {
 29689          const element = a[i]
 29690          const buffer = element instanceof Buffer ? element
 29691            : ArrayBuffer.isView(element)
 29692              ? Buffer.from(element.buffer, element.byteOffset, element.byteLength)
 29693              : element instanceof ArrayBuffer ? Buffer.from(element)
 29694              : element instanceof Blob ? element[BUFFER]
 29695              : typeof element === 'string' ? Buffer.from(element)
 29696              : Buffer.from(String(element))
 29697          size += buffer.length
 29698          buffers.push(buffer)
 29699        }
 29700      }
 29701  
 29702      this[BUFFER] = Buffer.concat(buffers, size)
 29703  
 29704      const type = options && options.type !== undefined
 29705        && String(options.type).toLowerCase()
 29706      if (type && !/[^\u0020-\u007E]/.test(type)) {
 29707        this[TYPE] = type
 29708      }
 29709    }
 29710  
 29711    get size () {
 29712      return this[BUFFER].length
 29713    }
 29714  
 29715    get type () {
 29716      return this[TYPE]
 29717    }
 29718  
 29719    text () {
 29720      return Promise.resolve(this[BUFFER].toString())
 29721    }
 29722  
 29723    arrayBuffer () {
 29724      const buf = this[BUFFER]
 29725      const off = buf.byteOffset
 29726      const len = buf.byteLength
 29727      const ab = buf.buffer.slice(off, off + len)
 29728      return Promise.resolve(ab)
 29729    }
 29730  
 29731    stream () {
 29732      return new Minipass().end(this[BUFFER])
 29733    }
 29734  
 29735    slice (start, end, type) {
 29736      const size = this.size
 29737      const relativeStart = start === undefined ? 0
 29738        : start < 0 ? Math.max(size + start, 0)
 29739        : Math.min(start, size)
 29740      const relativeEnd = end === undefined ? size
 29741        : end < 0 ? Math.max(size + end, 0)
 29742        : Math.min(end, size)
 29743      const span = Math.max(relativeEnd - relativeStart, 0)
 29744  
 29745      const buffer = this[BUFFER]
 29746      const slicedBuffer = buffer.slice(
 29747        relativeStart,
 29748        relativeStart + span
 29749      )
 29750      const blob = new Blob([], { type })
 29751      blob[BUFFER] = slicedBuffer
 29752      return blob
 29753    }
 29754  
 29755    get [Symbol.toStringTag] () {
 29756      return 'Blob'
 29757    }
 29758  
 29759    static get BUFFER () {
 29760      return BUFFER
 29761    }
 29762  }
 29763  
 29764  Object.defineProperties(Blob.prototype, {
 29765    size: { enumerable: true },
 29766    type: { enumerable: true },
 29767  })
 29768  
 29769  module.exports = Blob
 29770  
 29771  
 29772  /***/ }),
 29773  
 29774  /***/ 57223:
 29775  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 29776  
 29777  "use strict";
 29778  
 29779  const { Minipass } = __nccwpck_require__(14968)
 29780  const MinipassSized = __nccwpck_require__(55952)
 29781  
 29782  const Blob = __nccwpck_require__(67911)
 29783  const { BUFFER } = Blob
 29784  const FetchError = __nccwpck_require__(92899)
 29785  
 29786  // optional dependency on 'encoding'
 29787  let convert
 29788  try {
 29789    convert = (__nccwpck_require__(28685)/* .convert */ .O)
 29790  } catch (e) {
 29791    // defer error until textConverted is called
 29792  }
 29793  
 29794  const INTERNALS = Symbol('Body internals')
 29795  const CONSUME_BODY = Symbol('consumeBody')
 29796  
 29797  class Body {
 29798    constructor (bodyArg, options = {}) {
 29799      const { size = 0, timeout = 0 } = options
 29800      const body = bodyArg === undefined || bodyArg === null ? null
 29801        : isURLSearchParams(bodyArg) ? Buffer.from(bodyArg.toString())
 29802        : isBlob(bodyArg) ? bodyArg
 29803        : Buffer.isBuffer(bodyArg) ? bodyArg
 29804        : Object.prototype.toString.call(bodyArg) === '[object ArrayBuffer]'
 29805          ? Buffer.from(bodyArg)
 29806          : ArrayBuffer.isView(bodyArg)
 29807            ? Buffer.from(bodyArg.buffer, bodyArg.byteOffset, bodyArg.byteLength)
 29808            : Minipass.isStream(bodyArg) ? bodyArg
 29809            : Buffer.from(String(bodyArg))
 29810  
 29811      this[INTERNALS] = {
 29812        body,
 29813        disturbed: false,
 29814        error: null,
 29815      }
 29816  
 29817      this.size = size
 29818      this.timeout = timeout
 29819  
 29820      if (Minipass.isStream(body)) {
 29821        body.on('error', er => {
 29822          const error = er.name === 'AbortError' ? er
 29823            : new FetchError(`Invalid response while trying to fetch ${
 29824              this.url}: ${er.message}`, 'system', er)
 29825          this[INTERNALS].error = error
 29826        })
 29827      }
 29828    }
 29829  
 29830    get body () {
 29831      return this[INTERNALS].body
 29832    }
 29833  
 29834    get bodyUsed () {
 29835      return this[INTERNALS].disturbed
 29836    }
 29837  
 29838    arrayBuffer () {
 29839      return this[CONSUME_BODY]().then(buf =>
 29840        buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength))
 29841    }
 29842  
 29843    blob () {
 29844      const ct = this.headers && this.headers.get('content-type') || ''
 29845      return this[CONSUME_BODY]().then(buf => Object.assign(
 29846        new Blob([], { type: ct.toLowerCase() }),
 29847        { [BUFFER]: buf }
 29848      ))
 29849    }
 29850  
 29851    async json () {
 29852      const buf = await this[CONSUME_BODY]()
 29853      try {
 29854        return JSON.parse(buf.toString())
 29855      } catch (er) {
 29856        throw new FetchError(
 29857          `invalid json response body at ${this.url} reason: ${er.message}`,
 29858          'invalid-json'
 29859        )
 29860      }
 29861    }
 29862  
 29863    text () {
 29864      return this[CONSUME_BODY]().then(buf => buf.toString())
 29865    }
 29866  
 29867    buffer () {
 29868      return this[CONSUME_BODY]()
 29869    }
 29870  
 29871    textConverted () {
 29872      return this[CONSUME_BODY]().then(buf => convertBody(buf, this.headers))
 29873    }
 29874  
 29875    [CONSUME_BODY] () {
 29876      if (this[INTERNALS].disturbed) {
 29877        return Promise.reject(new TypeError(`body used already for: ${
 29878          this.url}`))
 29879      }
 29880  
 29881      this[INTERNALS].disturbed = true
 29882  
 29883      if (this[INTERNALS].error) {
 29884        return Promise.reject(this[INTERNALS].error)
 29885      }
 29886  
 29887      // body is null
 29888      if (this.body === null) {
 29889        return Promise.resolve(Buffer.alloc(0))
 29890      }
 29891  
 29892      if (Buffer.isBuffer(this.body)) {
 29893        return Promise.resolve(this.body)
 29894      }
 29895  
 29896      const upstream = isBlob(this.body) ? this.body.stream() : this.body
 29897  
 29898      /* istanbul ignore if: should never happen */
 29899      if (!Minipass.isStream(upstream)) {
 29900        return Promise.resolve(Buffer.alloc(0))
 29901      }
 29902  
 29903      const stream = this.size && upstream instanceof MinipassSized ? upstream
 29904        : !this.size && upstream instanceof Minipass &&
 29905          !(upstream instanceof MinipassSized) ? upstream
 29906        : this.size ? new MinipassSized({ size: this.size })
 29907        : new Minipass()
 29908  
 29909      // allow timeout on slow response body, but only if the stream is still writable. this
 29910      // makes the timeout center on the socket stream from lib/index.js rather than the
 29911      // intermediary minipass stream we create to receive the data
 29912      const resTimeout = this.timeout && stream.writable ? setTimeout(() => {
 29913        stream.emit('error', new FetchError(
 29914          `Response timeout while trying to fetch ${
 29915            this.url} (over ${this.timeout}ms)`, 'body-timeout'))
 29916      }, this.timeout) : null
 29917  
 29918      // do not keep the process open just for this timeout, even
 29919      // though we expect it'll get cleared eventually.
 29920      if (resTimeout && resTimeout.unref) {
 29921        resTimeout.unref()
 29922      }
 29923  
 29924      // do the pipe in the promise, because the pipe() can send too much
 29925      // data through right away and upset the MP Sized object
 29926      return new Promise((resolve, reject) => {
 29927        // if the stream is some other kind of stream, then pipe through a MP
 29928        // so we can collect it more easily.
 29929        if (stream !== upstream) {
 29930          upstream.on('error', er => stream.emit('error', er))
 29931          upstream.pipe(stream)
 29932        }
 29933        resolve()
 29934      }).then(() => stream.concat()).then(buf => {
 29935        clearTimeout(resTimeout)
 29936        return buf
 29937      }).catch(er => {
 29938        clearTimeout(resTimeout)
 29939        // request was aborted, reject with this Error
 29940        if (er.name === 'AbortError' || er.name === 'FetchError') {
 29941          throw er
 29942        } else if (er.name === 'RangeError') {
 29943          throw new FetchError(`Could not create Buffer from response body for ${
 29944            this.url}: ${er.message}`, 'system', er)
 29945        } else {
 29946          // other errors, such as incorrect content-encoding or content-length
 29947          throw new FetchError(`Invalid response body while trying to fetch ${
 29948            this.url}: ${er.message}`, 'system', er)
 29949        }
 29950      })
 29951    }
 29952  
 29953    static clone (instance) {
 29954      if (instance.bodyUsed) {
 29955        throw new Error('cannot clone body after it is used')
 29956      }
 29957  
 29958      const body = instance.body
 29959  
 29960      // check that body is a stream and not form-data object
 29961      // NB: can't clone the form-data object without having it as a dependency
 29962      if (Minipass.isStream(body) && typeof body.getBoundary !== 'function') {
 29963        // create a dedicated tee stream so that we don't lose data
 29964        // potentially sitting in the body stream's buffer by writing it
 29965        // immediately to p1 and not having it for p2.
 29966        const tee = new Minipass()
 29967        const p1 = new Minipass()
 29968        const p2 = new Minipass()
 29969        tee.on('error', er => {
 29970          p1.emit('error', er)
 29971          p2.emit('error', er)
 29972        })
 29973        body.on('error', er => tee.emit('error', er))
 29974        tee.pipe(p1)
 29975        tee.pipe(p2)
 29976        body.pipe(tee)
 29977        // set instance body to one fork, return the other
 29978        instance[INTERNALS].body = p1
 29979        return p2
 29980      } else {
 29981        return instance.body
 29982      }
 29983    }
 29984  
 29985    static extractContentType (body) {
 29986      return body === null || body === undefined ? null
 29987        : typeof body === 'string' ? 'text/plain;charset=UTF-8'
 29988        : isURLSearchParams(body)
 29989          ? 'application/x-www-form-urlencoded;charset=UTF-8'
 29990          : isBlob(body) ? body.type || null
 29991          : Buffer.isBuffer(body) ? null
 29992          : Object.prototype.toString.call(body) === '[object ArrayBuffer]' ? null
 29993          : ArrayBuffer.isView(body) ? null
 29994          : typeof body.getBoundary === 'function'
 29995            ? `multipart/form-data;boundary=${body.getBoundary()}`
 29996            : Minipass.isStream(body) ? null
 29997            : 'text/plain;charset=UTF-8'
 29998    }
 29999  
 30000    static getTotalBytes (instance) {
 30001      const { body } = instance
 30002      return (body === null || body === undefined) ? 0
 30003        : isBlob(body) ? body.size
 30004        : Buffer.isBuffer(body) ? body.length
 30005        : body && typeof body.getLengthSync === 'function' && (
 30006          // detect form data input from form-data module
 30007          body._lengthRetrievers &&
 30008          /* istanbul ignore next */ body._lengthRetrievers.length === 0 || // 1.x
 30009          body.hasKnownLength && body.hasKnownLength()) // 2.x
 30010          ? body.getLengthSync()
 30011          : null
 30012    }
 30013  
 30014    static writeToStream (dest, instance) {
 30015      const { body } = instance
 30016  
 30017      if (body === null || body === undefined) {
 30018        dest.end()
 30019      } else if (Buffer.isBuffer(body) || typeof body === 'string') {
 30020        dest.end(body)
 30021      } else {
 30022        // body is stream or blob
 30023        const stream = isBlob(body) ? body.stream() : body
 30024        stream.on('error', er => dest.emit('error', er)).pipe(dest)
 30025      }
 30026  
 30027      return dest
 30028    }
 30029  }
 30030  
 30031  Object.defineProperties(Body.prototype, {
 30032    body: { enumerable: true },
 30033    bodyUsed: { enumerable: true },
 30034    arrayBuffer: { enumerable: true },
 30035    blob: { enumerable: true },
 30036    json: { enumerable: true },
 30037    text: { enumerable: true },
 30038  })
 30039  
 30040  const isURLSearchParams = obj =>
 30041    // Duck-typing as a necessary condition.
 30042    (typeof obj !== 'object' ||
 30043      typeof obj.append !== 'function' ||
 30044      typeof obj.delete !== 'function' ||
 30045      typeof obj.get !== 'function' ||
 30046      typeof obj.getAll !== 'function' ||
 30047      typeof obj.has !== 'function' ||
 30048      typeof obj.set !== 'function') ? false
 30049    // Brand-checking and more duck-typing as optional condition.
 30050    : obj.constructor.name === 'URLSearchParams' ||
 30051      Object.prototype.toString.call(obj) === '[object URLSearchParams]' ||
 30052      typeof obj.sort === 'function'
 30053  
 30054  const isBlob = obj =>
 30055    typeof obj === 'object' &&
 30056    typeof obj.arrayBuffer === 'function' &&
 30057    typeof obj.type === 'string' &&
 30058    typeof obj.stream === 'function' &&
 30059    typeof obj.constructor === 'function' &&
 30060    typeof obj.constructor.name === 'string' &&
 30061    /^(Blob|File)$/.test(obj.constructor.name) &&
 30062    /^(Blob|File)$/.test(obj[Symbol.toStringTag])
 30063  
 30064  const convertBody = (buffer, headers) => {
 30065    /* istanbul ignore if */
 30066    if (typeof convert !== 'function') {
 30067      throw new Error('The package `encoding` must be installed to use the textConverted() function')
 30068    }
 30069  
 30070    const ct = headers && headers.get('content-type')
 30071    let charset = 'utf-8'
 30072    let res
 30073  
 30074    // header
 30075    if (ct) {
 30076      res = /charset=([^;]*)/i.exec(ct)
 30077    }
 30078  
 30079    // no charset in content type, peek at response body for at most 1024 bytes
 30080    const str = buffer.slice(0, 1024).toString()
 30081  
 30082    // html5
 30083    if (!res && str) {
 30084      res = /<meta.+?charset=(['"])(.+?)\1/i.exec(str)
 30085    }
 30086  
 30087    // html4
 30088    if (!res && str) {
 30089      res = /<meta[\s]+?http-equiv=(['"])content-type\1[\s]+?content=(['"])(.+?)\2/i.exec(str)
 30090  
 30091      if (!res) {
 30092        res = /<meta[\s]+?content=(['"])(.+?)\1[\s]+?http-equiv=(['"])content-type\3/i.exec(str)
 30093        if (res) {
 30094          res.pop()
 30095        } // drop last quote
 30096      }
 30097  
 30098      if (res) {
 30099        res = /charset=(.*)/i.exec(res.pop())
 30100      }
 30101    }
 30102  
 30103    // xml
 30104    if (!res && str) {
 30105      res = /<\?xml.+?encoding=(['"])(.+?)\1/i.exec(str)
 30106    }
 30107  
 30108    // found charset
 30109    if (res) {
 30110      charset = res.pop()
 30111  
 30112      // prevent decode issues when sites use incorrect encoding
 30113      // ref: https://hsivonen.fi/encoding-menu/
 30114      if (charset === 'gb2312' || charset === 'gbk') {
 30115        charset = 'gb18030'
 30116      }
 30117    }
 30118  
 30119    // turn raw buffers into a single utf-8 buffer
 30120    return convert(
 30121      buffer,
 30122      'UTF-8',
 30123      charset
 30124    ).toString()
 30125  }
 30126  
 30127  module.exports = Body
 30128  
 30129  
 30130  /***/ }),
 30131  
 30132  /***/ 92899:
 30133  /***/ ((module) => {
 30134  
 30135  "use strict";
 30136  
 30137  class FetchError extends Error {
 30138    constructor (message, type, systemError) {
 30139      super(message)
 30140      this.code = 'FETCH_ERROR'
 30141  
 30142      // pick up code, expected, path, ...
 30143      if (systemError) {
 30144        Object.assign(this, systemError)
 30145      }
 30146  
 30147      this.errno = this.code
 30148  
 30149      // override anything the system error might've clobbered
 30150      this.type = this.code === 'EBADSIZE' && this.found > this.expect
 30151        ? 'max-size' : type
 30152      this.message = message
 30153      Error.captureStackTrace(this, this.constructor)
 30154    }
 30155  
 30156    get name () {
 30157      return 'FetchError'
 30158    }
 30159  
 30160    // don't allow name to be overwritten
 30161    set name (n) {}
 30162  
 30163    get [Symbol.toStringTag] () {
 30164      return 'FetchError'
 30165    }
 30166  }
 30167  module.exports = FetchError
 30168  
 30169  
 30170  /***/ }),
 30171  
 30172  /***/ 41504:
 30173  /***/ ((module) => {
 30174  
 30175  "use strict";
 30176  
 30177  const invalidTokenRegex = /[^^_`a-zA-Z\-0-9!#$%&'*+.|~]/
 30178  const invalidHeaderCharRegex = /[^\t\x20-\x7e\x80-\xff]/
 30179  
 30180  const validateName = name => {
 30181    name = `${name}`
 30182    if (invalidTokenRegex.test(name) || name === '') {
 30183      throw new TypeError(`${name} is not a legal HTTP header name`)
 30184    }
 30185  }
 30186  
 30187  const validateValue = value => {
 30188    value = `${value}`
 30189    if (invalidHeaderCharRegex.test(value)) {
 30190      throw new TypeError(`${value} is not a legal HTTP header value`)
 30191    }
 30192  }
 30193  
 30194  const find = (map, name) => {
 30195    name = name.toLowerCase()
 30196    for (const key in map) {
 30197      if (key.toLowerCase() === name) {
 30198        return key
 30199      }
 30200    }
 30201    return undefined
 30202  }
 30203  
 30204  const MAP = Symbol('map')
 30205  class Headers {
 30206    constructor (init = undefined) {
 30207      this[MAP] = Object.create(null)
 30208      if (init instanceof Headers) {
 30209        const rawHeaders = init.raw()
 30210        const headerNames = Object.keys(rawHeaders)
 30211        for (const headerName of headerNames) {
 30212          for (const value of rawHeaders[headerName]) {
 30213            this.append(headerName, value)
 30214          }
 30215        }
 30216        return
 30217      }
 30218  
 30219      // no-op
 30220      if (init === undefined || init === null) {
 30221        return
 30222      }
 30223  
 30224      if (typeof init === 'object') {
 30225        const method = init[Symbol.iterator]
 30226        if (method !== null && method !== undefined) {
 30227          if (typeof method !== 'function') {
 30228            throw new TypeError('Header pairs must be iterable')
 30229          }
 30230  
 30231          // sequence<sequence<ByteString>>
 30232          // Note: per spec we have to first exhaust the lists then process them
 30233          const pairs = []
 30234          for (const pair of init) {
 30235            if (typeof pair !== 'object' ||
 30236                typeof pair[Symbol.iterator] !== 'function') {
 30237              throw new TypeError('Each header pair must be iterable')
 30238            }
 30239            const arrPair = Array.from(pair)
 30240            if (arrPair.length !== 2) {
 30241              throw new TypeError('Each header pair must be a name/value tuple')
 30242            }
 30243            pairs.push(arrPair)
 30244          }
 30245  
 30246          for (const pair of pairs) {
 30247            this.append(pair[0], pair[1])
 30248          }
 30249        } else {
 30250          // record<ByteString, ByteString>
 30251          for (const key of Object.keys(init)) {
 30252            this.append(key, init[key])
 30253          }
 30254        }
 30255      } else {
 30256        throw new TypeError('Provided initializer must be an object')
 30257      }
 30258    }
 30259  
 30260    get (name) {
 30261      name = `${name}`
 30262      validateName(name)
 30263      const key = find(this[MAP], name)
 30264      if (key === undefined) {
 30265        return null
 30266      }
 30267  
 30268      return this[MAP][key].join(', ')
 30269    }
 30270  
 30271    forEach (callback, thisArg = undefined) {
 30272      let pairs = getHeaders(this)
 30273      for (let i = 0; i < pairs.length; i++) {
 30274        const [name, value] = pairs[i]
 30275        callback.call(thisArg, value, name, this)
 30276        // refresh in case the callback added more headers
 30277        pairs = getHeaders(this)
 30278      }
 30279    }
 30280  
 30281    set (name, value) {
 30282      name = `${name}`
 30283      value = `${value}`
 30284      validateName(name)
 30285      validateValue(value)
 30286      const key = find(this[MAP], name)
 30287      this[MAP][key !== undefined ? key : name] = [value]
 30288    }
 30289  
 30290    append (name, value) {
 30291      name = `${name}`
 30292      value = `${value}`
 30293      validateName(name)
 30294      validateValue(value)
 30295      const key = find(this[MAP], name)
 30296      if (key !== undefined) {
 30297        this[MAP][key].push(value)
 30298      } else {
 30299        this[MAP][name] = [value]
 30300      }
 30301    }
 30302  
 30303    has (name) {
 30304      name = `${name}`
 30305      validateName(name)
 30306      return find(this[MAP], name) !== undefined
 30307    }
 30308  
 30309    delete (name) {
 30310      name = `${name}`
 30311      validateName(name)
 30312      const key = find(this[MAP], name)
 30313      if (key !== undefined) {
 30314        delete this[MAP][key]
 30315      }
 30316    }
 30317  
 30318    raw () {
 30319      return this[MAP]
 30320    }
 30321  
 30322    keys () {
 30323      return new HeadersIterator(this, 'key')
 30324    }
 30325  
 30326    values () {
 30327      return new HeadersIterator(this, 'value')
 30328    }
 30329  
 30330    [Symbol.iterator] () {
 30331      return new HeadersIterator(this, 'key+value')
 30332    }
 30333  
 30334    entries () {
 30335      return new HeadersIterator(this, 'key+value')
 30336    }
 30337  
 30338    get [Symbol.toStringTag] () {
 30339      return 'Headers'
 30340    }
 30341  
 30342    static exportNodeCompatibleHeaders (headers) {
 30343      const obj = Object.assign(Object.create(null), headers[MAP])
 30344  
 30345      // http.request() only supports string as Host header. This hack makes
 30346      // specifying custom Host header possible.
 30347      const hostHeaderKey = find(headers[MAP], 'Host')
 30348      if (hostHeaderKey !== undefined) {
 30349        obj[hostHeaderKey] = obj[hostHeaderKey][0]
 30350      }
 30351  
 30352      return obj
 30353    }
 30354  
 30355    static createHeadersLenient (obj) {
 30356      const headers = new Headers()
 30357      for (const name of Object.keys(obj)) {
 30358        if (invalidTokenRegex.test(name)) {
 30359          continue
 30360        }
 30361  
 30362        if (Array.isArray(obj[name])) {
 30363          for (const val of obj[name]) {
 30364            if (invalidHeaderCharRegex.test(val)) {
 30365              continue
 30366            }
 30367  
 30368            if (headers[MAP][name] === undefined) {
 30369              headers[MAP][name] = [val]
 30370            } else {
 30371              headers[MAP][name].push(val)
 30372            }
 30373          }
 30374        } else if (!invalidHeaderCharRegex.test(obj[name])) {
 30375          headers[MAP][name] = [obj[name]]
 30376        }
 30377      }
 30378      return headers
 30379    }
 30380  }
 30381  
 30382  Object.defineProperties(Headers.prototype, {
 30383    get: { enumerable: true },
 30384    forEach: { enumerable: true },
 30385    set: { enumerable: true },
 30386    append: { enumerable: true },
 30387    has: { enumerable: true },
 30388    delete: { enumerable: true },
 30389    keys: { enumerable: true },
 30390    values: { enumerable: true },
 30391    entries: { enumerable: true },
 30392  })
 30393  
 30394  const getHeaders = (headers, kind = 'key+value') =>
 30395    Object.keys(headers[MAP]).sort().map(
 30396      kind === 'key' ? k => k.toLowerCase()
 30397      : kind === 'value' ? k => headers[MAP][k].join(', ')
 30398      : k => [k.toLowerCase(), headers[MAP][k].join(', ')]
 30399    )
 30400  
 30401  const INTERNAL = Symbol('internal')
 30402  
 30403  class HeadersIterator {
 30404    constructor (target, kind) {
 30405      this[INTERNAL] = {
 30406        target,
 30407        kind,
 30408        index: 0,
 30409      }
 30410    }
 30411  
 30412    get [Symbol.toStringTag] () {
 30413      return 'HeadersIterator'
 30414    }
 30415  
 30416    next () {
 30417      /* istanbul ignore if: should be impossible */
 30418      if (!this || Object.getPrototypeOf(this) !== HeadersIterator.prototype) {
 30419        throw new TypeError('Value of `this` is not a HeadersIterator')
 30420      }
 30421  
 30422      const { target, kind, index } = this[INTERNAL]
 30423      const values = getHeaders(target, kind)
 30424      const len = values.length
 30425      if (index >= len) {
 30426        return {
 30427          value: undefined,
 30428          done: true,
 30429        }
 30430      }
 30431  
 30432      this[INTERNAL].index++
 30433  
 30434      return { value: values[index], done: false }
 30435    }
 30436  }
 30437  
 30438  // manually extend because 'extends' requires a ctor
 30439  Object.setPrototypeOf(HeadersIterator.prototype,
 30440    Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())))
 30441  
 30442  module.exports = Headers
 30443  
 30444  
 30445  /***/ }),
 30446  
 30447  /***/ 68998:
 30448  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 30449  
 30450  "use strict";
 30451  
 30452  const { URL } = __nccwpck_require__(57310)
 30453  const http = __nccwpck_require__(13685)
 30454  const https = __nccwpck_require__(95687)
 30455  const zlib = __nccwpck_require__(33486)
 30456  const { Minipass } = __nccwpck_require__(14968)
 30457  
 30458  const Body = __nccwpck_require__(57223)
 30459  const { writeToStream, getTotalBytes } = Body
 30460  const Response = __nccwpck_require__(72587)
 30461  const Headers = __nccwpck_require__(41504)
 30462  const { createHeadersLenient } = Headers
 30463  const Request = __nccwpck_require__(44410)
 30464  const { getNodeRequestOptions } = Request
 30465  const FetchError = __nccwpck_require__(92899)
 30466  const AbortError = __nccwpck_require__(11078)
 30467  
 30468  // XXX this should really be split up and unit-ized for easier testing
 30469  // and better DRY implementation of data/http request aborting
 30470  const fetch = async (url, opts) => {
 30471    if (/^data:/.test(url)) {
 30472      const request = new Request(url, opts)
 30473      // delay 1 promise tick so that the consumer can abort right away
 30474      return Promise.resolve().then(() => new Promise((resolve, reject) => {
 30475        let type, data
 30476        try {
 30477          const { pathname, search } = new URL(url)
 30478          const split = pathname.split(',')
 30479          if (split.length < 2) {
 30480            throw new Error('invalid data: URI')
 30481          }
 30482          const mime = split.shift()
 30483          const base64 = /;base64$/.test(mime)
 30484          type = base64 ? mime.slice(0, -1 * ';base64'.length) : mime
 30485          const rawData = decodeURIComponent(split.join(',') + search)
 30486          data = base64 ? Buffer.from(rawData, 'base64') : Buffer.from(rawData)
 30487        } catch (er) {
 30488          return reject(new FetchError(`[${request.method}] ${
 30489            request.url} invalid URL, ${er.message}`, 'system', er))
 30490        }
 30491  
 30492        const { signal } = request
 30493        if (signal && signal.aborted) {
 30494          return reject(new AbortError('The user aborted a request.'))
 30495        }
 30496  
 30497        const headers = { 'Content-Length': data.length }
 30498        if (type) {
 30499          headers['Content-Type'] = type
 30500        }
 30501        return resolve(new Response(data, { headers }))
 30502      }))
 30503    }
 30504  
 30505    return new Promise((resolve, reject) => {
 30506      // build request object
 30507      const request = new Request(url, opts)
 30508      let options
 30509      try {
 30510        options = getNodeRequestOptions(request)
 30511      } catch (er) {
 30512        return reject(er)
 30513      }
 30514  
 30515      const send = (options.protocol === 'https:' ? https : http).request
 30516      const { signal } = request
 30517      let response = null
 30518      const abort = () => {
 30519        const error = new AbortError('The user aborted a request.')
 30520        reject(error)
 30521        if (Minipass.isStream(request.body) &&
 30522            typeof request.body.destroy === 'function') {
 30523          request.body.destroy(error)
 30524        }
 30525        if (response && response.body) {
 30526          response.body.emit('error', error)
 30527        }
 30528      }
 30529  
 30530      if (signal && signal.aborted) {
 30531        return abort()
 30532      }
 30533  
 30534      const abortAndFinalize = () => {
 30535        abort()
 30536        finalize()
 30537      }
 30538  
 30539      const finalize = () => {
 30540        req.abort()
 30541        if (signal) {
 30542          signal.removeEventListener('abort', abortAndFinalize)
 30543        }
 30544        clearTimeout(reqTimeout)
 30545      }
 30546  
 30547      // send request
 30548      const req = send(options)
 30549  
 30550      if (signal) {
 30551        signal.addEventListener('abort', abortAndFinalize)
 30552      }
 30553  
 30554      let reqTimeout = null
 30555      if (request.timeout) {
 30556        req.once('socket', socket => {
 30557          reqTimeout = setTimeout(() => {
 30558            reject(new FetchError(`network timeout at: ${
 30559              request.url}`, 'request-timeout'))
 30560            finalize()
 30561          }, request.timeout)
 30562        })
 30563      }
 30564  
 30565      req.on('error', er => {
 30566        // if a 'response' event is emitted before the 'error' event, then by the
 30567        // time this handler is run it's too late to reject the Promise for the
 30568        // response. instead, we forward the error event to the response stream
 30569        // so that the error will surface to the user when they try to consume
 30570        // the body. this is done as a side effect of aborting the request except
 30571        // for in windows, where we must forward the event manually, otherwise
 30572        // there is no longer a ref'd socket attached to the request and the
 30573        // stream never ends so the event loop runs out of work and the process
 30574        // exits without warning.
 30575        // coverage skipped here due to the difficulty in testing
 30576        // istanbul ignore next
 30577        if (req.res) {
 30578          req.res.emit('error', er)
 30579        }
 30580        reject(new FetchError(`request to ${request.url} failed, reason: ${
 30581          er.message}`, 'system', er))
 30582        finalize()
 30583      })
 30584  
 30585      req.on('response', res => {
 30586        clearTimeout(reqTimeout)
 30587  
 30588        const headers = createHeadersLenient(res.headers)
 30589  
 30590        // HTTP fetch step 5
 30591        if (fetch.isRedirect(res.statusCode)) {
 30592          // HTTP fetch step 5.2
 30593          const location = headers.get('Location')
 30594  
 30595          // HTTP fetch step 5.3
 30596          let locationURL = null
 30597          try {
 30598            locationURL = location === null ? null : new URL(location, request.url).toString()
 30599          } catch {
 30600            // error here can only be invalid URL in Location: header
 30601            // do not throw when options.redirect == manual
 30602            // let the user extract the errorneous redirect URL
 30603            if (request.redirect !== 'manual') {
 30604              /* eslint-disable-next-line max-len */
 30605              reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'))
 30606              finalize()
 30607              return
 30608            }
 30609          }
 30610  
 30611          // HTTP fetch step 5.5
 30612          if (request.redirect === 'error') {
 30613            reject(new FetchError('uri requested responds with a redirect, ' +
 30614              `redirect mode is set to error: ${request.url}`, 'no-redirect'))
 30615            finalize()
 30616            return
 30617          } else if (request.redirect === 'manual') {
 30618            // node-fetch-specific step: make manual redirect a bit easier to
 30619            // use by setting the Location header value to the resolved URL.
 30620            if (locationURL !== null) {
 30621              // handle corrupted header
 30622              try {
 30623                headers.set('Location', locationURL)
 30624              } catch (err) {
 30625                /* istanbul ignore next: nodejs server prevent invalid
 30626                   response headers, we can't test this through normal
 30627                   request */
 30628                reject(err)
 30629              }
 30630            }
 30631          } else if (request.redirect === 'follow' && locationURL !== null) {
 30632            // HTTP-redirect fetch step 5
 30633            if (request.counter >= request.follow) {
 30634              reject(new FetchError(`maximum redirect reached at: ${
 30635                request.url}`, 'max-redirect'))
 30636              finalize()
 30637              return
 30638            }
 30639  
 30640            // HTTP-redirect fetch step 9
 30641            if (res.statusCode !== 303 &&
 30642                request.body &&
 30643                getTotalBytes(request) === null) {
 30644              reject(new FetchError(
 30645                'Cannot follow redirect with body being a readable stream',
 30646                'unsupported-redirect'
 30647              ))
 30648              finalize()
 30649              return
 30650            }
 30651  
 30652            // Update host due to redirection
 30653            request.headers.set('host', (new URL(locationURL)).host)
 30654  
 30655            // HTTP-redirect fetch step 6 (counter increment)
 30656            // Create a new Request object.
 30657            const requestOpts = {
 30658              headers: new Headers(request.headers),
 30659              follow: request.follow,
 30660              counter: request.counter + 1,
 30661              agent: request.agent,
 30662              compress: request.compress,
 30663              method: request.method,
 30664              body: request.body,
 30665              signal: request.signal,
 30666              timeout: request.timeout,
 30667            }
 30668  
 30669            // if the redirect is to a new hostname, strip the authorization and cookie headers
 30670            const parsedOriginal = new URL(request.url)
 30671            const parsedRedirect = new URL(locationURL)
 30672            if (parsedOriginal.hostname !== parsedRedirect.hostname) {
 30673              requestOpts.headers.delete('authorization')
 30674              requestOpts.headers.delete('cookie')
 30675            }
 30676  
 30677            // HTTP-redirect fetch step 11
 30678            if (res.statusCode === 303 || (
 30679              (res.statusCode === 301 || res.statusCode === 302) &&
 30680                request.method === 'POST'
 30681            )) {
 30682              requestOpts.method = 'GET'
 30683              requestOpts.body = undefined
 30684              requestOpts.headers.delete('content-length')
 30685            }
 30686  
 30687            // HTTP-redirect fetch step 15
 30688            resolve(fetch(new Request(locationURL, requestOpts)))
 30689            finalize()
 30690            return
 30691          }
 30692        } // end if(isRedirect)
 30693  
 30694        // prepare response
 30695        res.once('end', () =>
 30696          signal && signal.removeEventListener('abort', abortAndFinalize))
 30697  
 30698        const body = new Minipass()
 30699        // if an error occurs, either on the response stream itself, on one of the
 30700        // decoder streams, or a response length timeout from the Body class, we
 30701        // forward the error through to our internal body stream. If we see an
 30702        // error event on that, we call finalize to abort the request and ensure
 30703        // we don't leave a socket believing a request is in flight.
 30704        // this is difficult to test, so lacks specific coverage.
 30705        body.on('error', finalize)
 30706        // exceedingly rare that the stream would have an error,
 30707        // but just in case we proxy it to the stream in use.
 30708        res.on('error', /* istanbul ignore next */ er => body.emit('error', er))
 30709        res.on('data', (chunk) => body.write(chunk))
 30710        res.on('end', () => body.end())
 30711  
 30712        const responseOptions = {
 30713          url: request.url,
 30714          status: res.statusCode,
 30715          statusText: res.statusMessage,
 30716          headers: headers,
 30717          size: request.size,
 30718          timeout: request.timeout,
 30719          counter: request.counter,
 30720          trailer: new Promise(resolveTrailer =>
 30721            res.on('end', () => resolveTrailer(createHeadersLenient(res.trailers)))),
 30722        }
 30723  
 30724        // HTTP-network fetch step 12.1.1.3
 30725        const codings = headers.get('Content-Encoding')
 30726  
 30727        // HTTP-network fetch step 12.1.1.4: handle content codings
 30728  
 30729        // in following scenarios we ignore compression support
 30730        // 1. compression support is disabled
 30731        // 2. HEAD request
 30732        // 3. no Content-Encoding header
 30733        // 4. no content response (204)
 30734        // 5. content not modified response (304)
 30735        if (!request.compress ||
 30736            request.method === 'HEAD' ||
 30737            codings === null ||
 30738            res.statusCode === 204 ||
 30739            res.statusCode === 304) {
 30740          response = new Response(body, responseOptions)
 30741          resolve(response)
 30742          return
 30743        }
 30744  
 30745        // Be less strict when decoding compressed responses, since sometimes
 30746        // servers send slightly invalid responses that are still accepted
 30747        // by common browsers.
 30748        // Always using Z_SYNC_FLUSH is what cURL does.
 30749        const zlibOptions = {
 30750          flush: zlib.constants.Z_SYNC_FLUSH,
 30751          finishFlush: zlib.constants.Z_SYNC_FLUSH,
 30752        }
 30753  
 30754        // for gzip
 30755        if (codings === 'gzip' || codings === 'x-gzip') {
 30756          const unzip = new zlib.Gunzip(zlibOptions)
 30757          response = new Response(
 30758            // exceedingly rare that the stream would have an error,
 30759            // but just in case we proxy it to the stream in use.
 30760            body.on('error', /* istanbul ignore next */ er => unzip.emit('error', er)).pipe(unzip),
 30761            responseOptions
 30762          )
 30763          resolve(response)
 30764          return
 30765        }
 30766  
 30767        // for deflate
 30768        if (codings === 'deflate' || codings === 'x-deflate') {
 30769          // handle the infamous raw deflate response from old servers
 30770          // a hack for old IIS and Apache servers
 30771          const raw = res.pipe(new Minipass())
 30772          raw.once('data', chunk => {
 30773            // see http://stackoverflow.com/questions/37519828
 30774            const decoder = (chunk[0] & 0x0F) === 0x08
 30775              ? new zlib.Inflate()
 30776              : new zlib.InflateRaw()
 30777            // exceedingly rare that the stream would have an error,
 30778            // but just in case we proxy it to the stream in use.
 30779            body.on('error', /* istanbul ignore next */ er => decoder.emit('error', er)).pipe(decoder)
 30780            response = new Response(decoder, responseOptions)
 30781            resolve(response)
 30782          })
 30783          return
 30784        }
 30785  
 30786        // for br
 30787        if (codings === 'br') {
 30788          // ignoring coverage so tests don't have to fake support (or lack of) for brotli
 30789          // istanbul ignore next
 30790          try {
 30791            var decoder = new zlib.BrotliDecompress()
 30792          } catch (err) {
 30793            reject(err)
 30794            finalize()
 30795            return
 30796          }
 30797          // exceedingly rare that the stream would have an error,
 30798          // but just in case we proxy it to the stream in use.
 30799          body.on('error', /* istanbul ignore next */ er => decoder.emit('error', er)).pipe(decoder)
 30800          response = new Response(decoder, responseOptions)
 30801          resolve(response)
 30802          return
 30803        }
 30804  
 30805        // otherwise, use response as-is
 30806        response = new Response(body, responseOptions)
 30807        resolve(response)
 30808      })
 30809  
 30810      writeToStream(req, request)
 30811    })
 30812  }
 30813  
 30814  module.exports = fetch
 30815  
 30816  fetch.isRedirect = code =>
 30817    code === 301 ||
 30818    code === 302 ||
 30819    code === 303 ||
 30820    code === 307 ||
 30821    code === 308
 30822  
 30823  fetch.Headers = Headers
 30824  fetch.Request = Request
 30825  fetch.Response = Response
 30826  fetch.FetchError = FetchError
 30827  fetch.AbortError = AbortError
 30828  
 30829  
 30830  /***/ }),
 30831  
 30832  /***/ 44410:
 30833  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 30834  
 30835  "use strict";
 30836  
 30837  const { URL } = __nccwpck_require__(57310)
 30838  const { Minipass } = __nccwpck_require__(14968)
 30839  const Headers = __nccwpck_require__(41504)
 30840  const { exportNodeCompatibleHeaders } = Headers
 30841  const Body = __nccwpck_require__(57223)
 30842  const { clone, extractContentType, getTotalBytes } = Body
 30843  
 30844  const version = (__nccwpck_require__(40500)/* .version */ .i8)
 30845  const defaultUserAgent =
 30846    `minipass-fetch/${version} (+https://github.com/isaacs/minipass-fetch)`
 30847  
 30848  const INTERNALS = Symbol('Request internals')
 30849  
 30850  const isRequest = input =>
 30851    typeof input === 'object' && typeof input[INTERNALS] === 'object'
 30852  
 30853  const isAbortSignal = signal => {
 30854    const proto = (
 30855      signal
 30856      && typeof signal === 'object'
 30857      && Object.getPrototypeOf(signal)
 30858    )
 30859    return !!(proto && proto.constructor.name === 'AbortSignal')
 30860  }
 30861  
 30862  class Request extends Body {
 30863    constructor (input, init = {}) {
 30864      const parsedURL = isRequest(input) ? new URL(input.url)
 30865        : input && input.href ? new URL(input.href)
 30866        : new URL(`${input}`)
 30867  
 30868      if (isRequest(input)) {
 30869        init = { ...input[INTERNALS], ...init }
 30870      } else if (!input || typeof input === 'string') {
 30871        input = {}
 30872      }
 30873  
 30874      const method = (init.method || input.method || 'GET').toUpperCase()
 30875      const isGETHEAD = method === 'GET' || method === 'HEAD'
 30876  
 30877      if ((init.body !== null && init.body !== undefined ||
 30878          isRequest(input) && input.body !== null) && isGETHEAD) {
 30879        throw new TypeError('Request with GET/HEAD method cannot have body')
 30880      }
 30881  
 30882      const inputBody = init.body !== null && init.body !== undefined ? init.body
 30883        : isRequest(input) && input.body !== null ? clone(input)
 30884        : null
 30885  
 30886      super(inputBody, {
 30887        timeout: init.timeout || input.timeout || 0,
 30888        size: init.size || input.size || 0,
 30889      })
 30890  
 30891      const headers = new Headers(init.headers || input.headers || {})
 30892  
 30893      if (inputBody !== null && inputBody !== undefined &&
 30894          !headers.has('Content-Type')) {
 30895        const contentType = extractContentType(inputBody)
 30896        if (contentType) {
 30897          headers.append('Content-Type', contentType)
 30898        }
 30899      }
 30900  
 30901      const signal = 'signal' in init ? init.signal
 30902        : null
 30903  
 30904      if (signal !== null && signal !== undefined && !isAbortSignal(signal)) {
 30905        throw new TypeError('Expected signal must be an instanceof AbortSignal')
 30906      }
 30907  
 30908      // TLS specific options that are handled by node
 30909      const {
 30910        ca,
 30911        cert,
 30912        ciphers,
 30913        clientCertEngine,
 30914        crl,
 30915        dhparam,
 30916        ecdhCurve,
 30917        family,
 30918        honorCipherOrder,
 30919        key,
 30920        passphrase,
 30921        pfx,
 30922        rejectUnauthorized = process.env.NODE_TLS_REJECT_UNAUTHORIZED !== '0',
 30923        secureOptions,
 30924        secureProtocol,
 30925        servername,
 30926        sessionIdContext,
 30927      } = init
 30928  
 30929      this[INTERNALS] = {
 30930        method,
 30931        redirect: init.redirect || input.redirect || 'follow',
 30932        headers,
 30933        parsedURL,
 30934        signal,
 30935        ca,
 30936        cert,
 30937        ciphers,
 30938        clientCertEngine,
 30939        crl,
 30940        dhparam,
 30941        ecdhCurve,
 30942        family,
 30943        honorCipherOrder,
 30944        key,
 30945        passphrase,
 30946        pfx,
 30947        rejectUnauthorized,
 30948        secureOptions,
 30949        secureProtocol,
 30950        servername,
 30951        sessionIdContext,
 30952      }
 30953  
 30954      // node-fetch-only options
 30955      this.follow = init.follow !== undefined ? init.follow
 30956        : input.follow !== undefined ? input.follow
 30957        : 20
 30958      this.compress = init.compress !== undefined ? init.compress
 30959        : input.compress !== undefined ? input.compress
 30960        : true
 30961      this.counter = init.counter || input.counter || 0
 30962      this.agent = init.agent || input.agent
 30963    }
 30964  
 30965    get method () {
 30966      return this[INTERNALS].method
 30967    }
 30968  
 30969    get url () {
 30970      return this[INTERNALS].parsedURL.toString()
 30971    }
 30972  
 30973    get headers () {
 30974      return this[INTERNALS].headers
 30975    }
 30976  
 30977    get redirect () {
 30978      return this[INTERNALS].redirect
 30979    }
 30980  
 30981    get signal () {
 30982      return this[INTERNALS].signal
 30983    }
 30984  
 30985    clone () {
 30986      return new Request(this)
 30987    }
 30988  
 30989    get [Symbol.toStringTag] () {
 30990      return 'Request'
 30991    }
 30992  
 30993    static getNodeRequestOptions (request) {
 30994      const parsedURL = request[INTERNALS].parsedURL
 30995      const headers = new Headers(request[INTERNALS].headers)
 30996  
 30997      // fetch step 1.3
 30998      if (!headers.has('Accept')) {
 30999        headers.set('Accept', '*/*')
 31000      }
 31001  
 31002      // Basic fetch
 31003      if (!/^https?:$/.test(parsedURL.protocol)) {
 31004        throw new TypeError('Only HTTP(S) protocols are supported')
 31005      }
 31006  
 31007      if (request.signal &&
 31008          Minipass.isStream(request.body) &&
 31009          typeof request.body.destroy !== 'function') {
 31010        throw new Error(
 31011          'Cancellation of streamed requests with AbortSignal is not supported')
 31012      }
 31013  
 31014      // HTTP-network-or-cache fetch steps 2.4-2.7
 31015      const contentLengthValue =
 31016        (request.body === null || request.body === undefined) &&
 31017          /^(POST|PUT)$/i.test(request.method) ? '0'
 31018        : request.body !== null && request.body !== undefined
 31019          ? getTotalBytes(request)
 31020          : null
 31021  
 31022      if (contentLengthValue) {
 31023        headers.set('Content-Length', contentLengthValue + '')
 31024      }
 31025  
 31026      // HTTP-network-or-cache fetch step 2.11
 31027      if (!headers.has('User-Agent')) {
 31028        headers.set('User-Agent', defaultUserAgent)
 31029      }
 31030  
 31031      // HTTP-network-or-cache fetch step 2.15
 31032      if (request.compress && !headers.has('Accept-Encoding')) {
 31033        headers.set('Accept-Encoding', 'gzip,deflate')
 31034      }
 31035  
 31036      const agent = typeof request.agent === 'function'
 31037        ? request.agent(parsedURL)
 31038        : request.agent
 31039  
 31040      if (!headers.has('Connection') && !agent) {
 31041        headers.set('Connection', 'close')
 31042      }
 31043  
 31044      // TLS specific options that are handled by node
 31045      const {
 31046        ca,
 31047        cert,
 31048        ciphers,
 31049        clientCertEngine,
 31050        crl,
 31051        dhparam,
 31052        ecdhCurve,
 31053        family,
 31054        honorCipherOrder,
 31055        key,
 31056        passphrase,
 31057        pfx,
 31058        rejectUnauthorized,
 31059        secureOptions,
 31060        secureProtocol,
 31061        servername,
 31062        sessionIdContext,
 31063      } = request[INTERNALS]
 31064  
 31065      // HTTP-network fetch step 4.2
 31066      // chunked encoding is handled by Node.js
 31067  
 31068      // we cannot spread parsedURL directly, so we have to read each property one-by-one
 31069      // and map them to the equivalent https?.request() method options
 31070      const urlProps = {
 31071        auth: parsedURL.username || parsedURL.password
 31072          ? `${parsedURL.username}:${parsedURL.password}`
 31073          : '',
 31074        host: parsedURL.host,
 31075        hostname: parsedURL.hostname,
 31076        path: `${parsedURL.pathname}${parsedURL.search}`,
 31077        port: parsedURL.port,
 31078        protocol: parsedURL.protocol,
 31079      }
 31080  
 31081      return {
 31082        ...urlProps,
 31083        method: request.method,
 31084        headers: exportNodeCompatibleHeaders(headers),
 31085        agent,
 31086        ca,
 31087        cert,
 31088        ciphers,
 31089        clientCertEngine,
 31090        crl,
 31091        dhparam,
 31092        ecdhCurve,
 31093        family,
 31094        honorCipherOrder,
 31095        key,
 31096        passphrase,
 31097        pfx,
 31098        rejectUnauthorized,
 31099        secureOptions,
 31100        secureProtocol,
 31101        servername,
 31102        sessionIdContext,
 31103        timeout: request.timeout,
 31104      }
 31105    }
 31106  }
 31107  
 31108  module.exports = Request
 31109  
 31110  Object.defineProperties(Request.prototype, {
 31111    method: { enumerable: true },
 31112    url: { enumerable: true },
 31113    headers: { enumerable: true },
 31114    redirect: { enumerable: true },
 31115    clone: { enumerable: true },
 31116    signal: { enumerable: true },
 31117  })
 31118  
 31119  
 31120  /***/ }),
 31121  
 31122  /***/ 72587:
 31123  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 31124  
 31125  "use strict";
 31126  
 31127  const http = __nccwpck_require__(13685)
 31128  const { STATUS_CODES } = http
 31129  
 31130  const Headers = __nccwpck_require__(41504)
 31131  const Body = __nccwpck_require__(57223)
 31132  const { clone, extractContentType } = Body
 31133  
 31134  const INTERNALS = Symbol('Response internals')
 31135  
 31136  class Response extends Body {
 31137    constructor (body = null, opts = {}) {
 31138      super(body, opts)
 31139  
 31140      const status = opts.status || 200
 31141      const headers = new Headers(opts.headers)
 31142  
 31143      if (body !== null && body !== undefined && !headers.has('Content-Type')) {
 31144        const contentType = extractContentType(body)
 31145        if (contentType) {
 31146          headers.append('Content-Type', contentType)
 31147        }
 31148      }
 31149  
 31150      this[INTERNALS] = {
 31151        url: opts.url,
 31152        status,
 31153        statusText: opts.statusText || STATUS_CODES[status],
 31154        headers,
 31155        counter: opts.counter,
 31156        trailer: Promise.resolve(opts.trailer || new Headers()),
 31157      }
 31158    }
 31159  
 31160    get trailer () {
 31161      return this[INTERNALS].trailer
 31162    }
 31163  
 31164    get url () {
 31165      return this[INTERNALS].url || ''
 31166    }
 31167  
 31168    get status () {
 31169      return this[INTERNALS].status
 31170    }
 31171  
 31172    get ok () {
 31173      return this[INTERNALS].status >= 200 && this[INTERNALS].status < 300
 31174    }
 31175  
 31176    get redirected () {
 31177      return this[INTERNALS].counter > 0
 31178    }
 31179  
 31180    get statusText () {
 31181      return this[INTERNALS].statusText
 31182    }
 31183  
 31184    get headers () {
 31185      return this[INTERNALS].headers
 31186    }
 31187  
 31188    clone () {
 31189      return new Response(clone(this), {
 31190        url: this.url,
 31191        status: this.status,
 31192        statusText: this.statusText,
 31193        headers: this.headers,
 31194        ok: this.ok,
 31195        redirected: this.redirected,
 31196        trailer: this.trailer,
 31197      })
 31198    }
 31199  
 31200    get [Symbol.toStringTag] () {
 31201      return 'Response'
 31202    }
 31203  }
 31204  
 31205  module.exports = Response
 31206  
 31207  Object.defineProperties(Response.prototype, {
 31208    url: { enumerable: true },
 31209    status: { enumerable: true },
 31210    ok: { enumerable: true },
 31211    redirected: { enumerable: true },
 31212    statusText: { enumerable: true },
 31213    headers: { enumerable: true },
 31214    clone: { enumerable: true },
 31215  })
 31216  
 31217  
 31218  /***/ }),
 31219  
 31220  /***/ 4181:
 31221  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 31222  
 31223  const Minipass = __nccwpck_require__(27818)
 31224  const _flush = Symbol('_flush')
 31225  const _flushed = Symbol('_flushed')
 31226  const _flushing = Symbol('_flushing')
 31227  class Flush extends Minipass {
 31228    constructor (opt = {}) {
 31229      if (typeof opt === 'function')
 31230        opt = { flush: opt }
 31231  
 31232      super(opt)
 31233  
 31234      // or extend this class and provide a 'flush' method in your subclass
 31235      if (typeof opt.flush !== 'function' && typeof this.flush !== 'function')
 31236        throw new TypeError('must provide flush function in options')
 31237  
 31238      this[_flush] = opt.flush || this.flush
 31239    }
 31240  
 31241    emit (ev, ...data) {
 31242      if ((ev !== 'end' && ev !== 'finish') || this[_flushed])
 31243        return super.emit(ev, ...data)
 31244  
 31245      if (this[_flushing])
 31246        return
 31247  
 31248      this[_flushing] = true
 31249  
 31250      const afterFlush = er => {
 31251        this[_flushed] = true
 31252        er ? super.emit('error', er) : super.emit('end')
 31253      }
 31254  
 31255      const ret = this[_flush](afterFlush)
 31256      if (ret && ret.then)
 31257        ret.then(() => afterFlush(), er => afterFlush(er))
 31258    }
 31259  }
 31260  
 31261  module.exports = Flush
 31262  
 31263  
 31264  /***/ }),
 31265  
 31266  /***/ 27818:
 31267  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 31268  
 31269  "use strict";
 31270  
 31271  const proc = typeof process === 'object' && process ? process : {
 31272    stdout: null,
 31273    stderr: null,
 31274  }
 31275  const EE = __nccwpck_require__(82361)
 31276  const Stream = __nccwpck_require__(12781)
 31277  const SD = (__nccwpck_require__(71576).StringDecoder)
 31278  
 31279  const EOF = Symbol('EOF')
 31280  const MAYBE_EMIT_END = Symbol('maybeEmitEnd')
 31281  const EMITTED_END = Symbol('emittedEnd')
 31282  const EMITTING_END = Symbol('emittingEnd')
 31283  const EMITTED_ERROR = Symbol('emittedError')
 31284  const CLOSED = Symbol('closed')
 31285  const READ = Symbol('read')
 31286  const FLUSH = Symbol('flush')
 31287  const FLUSHCHUNK = Symbol('flushChunk')
 31288  const ENCODING = Symbol('encoding')
 31289  const DECODER = Symbol('decoder')
 31290  const FLOWING = Symbol('flowing')
 31291  const PAUSED = Symbol('paused')
 31292  const RESUME = Symbol('resume')
 31293  const BUFFERLENGTH = Symbol('bufferLength')
 31294  const BUFFERPUSH = Symbol('bufferPush')
 31295  const BUFFERSHIFT = Symbol('bufferShift')
 31296  const OBJECTMODE = Symbol('objectMode')
 31297  const DESTROYED = Symbol('destroyed')
 31298  const EMITDATA = Symbol('emitData')
 31299  const EMITEND = Symbol('emitEnd')
 31300  const EMITEND2 = Symbol('emitEnd2')
 31301  const ASYNC = Symbol('async')
 31302  
 31303  const defer = fn => Promise.resolve().then(fn)
 31304  
 31305  // TODO remove when Node v8 support drops
 31306  const doIter = global._MP_NO_ITERATOR_SYMBOLS_  !== '1'
 31307  const ASYNCITERATOR = doIter && Symbol.asyncIterator
 31308    || Symbol('asyncIterator not implemented')
 31309  const ITERATOR = doIter && Symbol.iterator
 31310    || Symbol('iterator not implemented')
 31311  
 31312  // events that mean 'the stream is over'
 31313  // these are treated specially, and re-emitted
 31314  // if they are listened for after emitting.
 31315  const isEndish = ev =>
 31316    ev === 'end' ||
 31317    ev === 'finish' ||
 31318    ev === 'prefinish'
 31319  
 31320  const isArrayBuffer = b => b instanceof ArrayBuffer ||
 31321    typeof b === 'object' &&
 31322    b.constructor &&
 31323    b.constructor.name === 'ArrayBuffer' &&
 31324    b.byteLength >= 0
 31325  
 31326  const isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)
 31327  
 31328  class Pipe {
 31329    constructor (src, dest, opts) {
 31330      this.src = src
 31331      this.dest = dest
 31332      this.opts = opts
 31333      this.ondrain = () => src[RESUME]()
 31334      dest.on('drain', this.ondrain)
 31335    }
 31336    unpipe () {
 31337      this.dest.removeListener('drain', this.ondrain)
 31338    }
 31339    // istanbul ignore next - only here for the prototype
 31340    proxyErrors () {}
 31341    end () {
 31342      this.unpipe()
 31343      if (this.opts.end)
 31344        this.dest.end()
 31345    }
 31346  }
 31347  
 31348  class PipeProxyErrors extends Pipe {
 31349    unpipe () {
 31350      this.src.removeListener('error', this.proxyErrors)
 31351      super.unpipe()
 31352    }
 31353    constructor (src, dest, opts) {
 31354      super(src, dest, opts)
 31355      this.proxyErrors = er => dest.emit('error', er)
 31356      src.on('error', this.proxyErrors)
 31357    }
 31358  }
 31359  
 31360  module.exports = class Minipass extends Stream {
 31361    constructor (options) {
 31362      super()
 31363      this[FLOWING] = false
 31364      // whether we're explicitly paused
 31365      this[PAUSED] = false
 31366      this.pipes = []
 31367      this.buffer = []
 31368      this[OBJECTMODE] = options && options.objectMode || false
 31369      if (this[OBJECTMODE])
 31370        this[ENCODING] = null
 31371      else
 31372        this[ENCODING] = options && options.encoding || null
 31373      if (this[ENCODING] === 'buffer')
 31374        this[ENCODING] = null
 31375      this[ASYNC] = options && !!options.async || false
 31376      this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null
 31377      this[EOF] = false
 31378      this[EMITTED_END] = false
 31379      this[EMITTING_END] = false
 31380      this[CLOSED] = false
 31381      this[EMITTED_ERROR] = null
 31382      this.writable = true
 31383      this.readable = true
 31384      this[BUFFERLENGTH] = 0
 31385      this[DESTROYED] = false
 31386    }
 31387  
 31388    get bufferLength () { return this[BUFFERLENGTH] }
 31389  
 31390    get encoding () { return this[ENCODING] }
 31391    set encoding (enc) {
 31392      if (this[OBJECTMODE])
 31393        throw new Error('cannot set encoding in objectMode')
 31394  
 31395      if (this[ENCODING] && enc !== this[ENCODING] &&
 31396          (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))
 31397        throw new Error('cannot change encoding')
 31398  
 31399      if (this[ENCODING] !== enc) {
 31400        this[DECODER] = enc ? new SD(enc) : null
 31401        if (this.buffer.length)
 31402          this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))
 31403      }
 31404  
 31405      this[ENCODING] = enc
 31406    }
 31407  
 31408    setEncoding (enc) {
 31409      this.encoding = enc
 31410    }
 31411  
 31412    get objectMode () { return this[OBJECTMODE] }
 31413    set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }
 31414  
 31415    get ['async'] () { return this[ASYNC] }
 31416    set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }
 31417  
 31418    write (chunk, encoding, cb) {
 31419      if (this[EOF])
 31420        throw new Error('write after end')
 31421  
 31422      if (this[DESTROYED]) {
 31423        this.emit('error', Object.assign(
 31424          new Error('Cannot call write after a stream was destroyed'),
 31425          { code: 'ERR_STREAM_DESTROYED' }
 31426        ))
 31427        return true
 31428      }
 31429  
 31430      if (typeof encoding === 'function')
 31431        cb = encoding, encoding = 'utf8'
 31432  
 31433      if (!encoding)
 31434        encoding = 'utf8'
 31435  
 31436      const fn = this[ASYNC] ? defer : f => f()
 31437  
 31438      // convert array buffers and typed array views into buffers
 31439      // at some point in the future, we may want to do the opposite!
 31440      // leave strings and buffers as-is
 31441      // anything else switches us into object mode
 31442      if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
 31443        if (isArrayBufferView(chunk))
 31444          chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)
 31445        else if (isArrayBuffer(chunk))
 31446          chunk = Buffer.from(chunk)
 31447        else if (typeof chunk !== 'string')
 31448          // use the setter so we throw if we have encoding set
 31449          this.objectMode = true
 31450      }
 31451  
 31452      // handle object mode up front, since it's simpler
 31453      // this yields better performance, fewer checks later.
 31454      if (this[OBJECTMODE]) {
 31455        /* istanbul ignore if - maybe impossible? */
 31456        if (this.flowing && this[BUFFERLENGTH] !== 0)
 31457          this[FLUSH](true)
 31458  
 31459        if (this.flowing)
 31460          this.emit('data', chunk)
 31461        else
 31462          this[BUFFERPUSH](chunk)
 31463  
 31464        if (this[BUFFERLENGTH] !== 0)
 31465          this.emit('readable')
 31466  
 31467        if (cb)
 31468          fn(cb)
 31469  
 31470        return this.flowing
 31471      }
 31472  
 31473      // at this point the chunk is a buffer or string
 31474      // don't buffer it up or send it to the decoder
 31475      if (!chunk.length) {
 31476        if (this[BUFFERLENGTH] !== 0)
 31477          this.emit('readable')
 31478        if (cb)
 31479          fn(cb)
 31480        return this.flowing
 31481      }
 31482  
 31483      // fast-path writing strings of same encoding to a stream with
 31484      // an empty buffer, skipping the buffer/decoder dance
 31485      if (typeof chunk === 'string' &&
 31486          // unless it is a string already ready for us to use
 31487          !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {
 31488        chunk = Buffer.from(chunk, encoding)
 31489      }
 31490  
 31491      if (Buffer.isBuffer(chunk) && this[ENCODING])
 31492        chunk = this[DECODER].write(chunk)
 31493  
 31494      // Note: flushing CAN potentially switch us into not-flowing mode
 31495      if (this.flowing && this[BUFFERLENGTH] !== 0)
 31496        this[FLUSH](true)
 31497  
 31498      if (this.flowing)
 31499        this.emit('data', chunk)
 31500      else
 31501        this[BUFFERPUSH](chunk)
 31502  
 31503      if (this[BUFFERLENGTH] !== 0)
 31504        this.emit('readable')
 31505  
 31506      if (cb)
 31507        fn(cb)
 31508  
 31509      return this.flowing
 31510    }
 31511  
 31512    read (n) {
 31513      if (this[DESTROYED])
 31514        return null
 31515  
 31516      if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {
 31517        this[MAYBE_EMIT_END]()
 31518        return null
 31519      }
 31520  
 31521      if (this[OBJECTMODE])
 31522        n = null
 31523  
 31524      if (this.buffer.length > 1 && !this[OBJECTMODE]) {
 31525        if (this.encoding)
 31526          this.buffer = [this.buffer.join('')]
 31527        else
 31528          this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]
 31529      }
 31530  
 31531      const ret = this[READ](n || null, this.buffer[0])
 31532      this[MAYBE_EMIT_END]()
 31533      return ret
 31534    }
 31535  
 31536    [READ] (n, chunk) {
 31537      if (n === chunk.length || n === null)
 31538        this[BUFFERSHIFT]()
 31539      else {
 31540        this.buffer[0] = chunk.slice(n)
 31541        chunk = chunk.slice(0, n)
 31542        this[BUFFERLENGTH] -= n
 31543      }
 31544  
 31545      this.emit('data', chunk)
 31546  
 31547      if (!this.buffer.length && !this[EOF])
 31548        this.emit('drain')
 31549  
 31550      return chunk
 31551    }
 31552  
 31553    end (chunk, encoding, cb) {
 31554      if (typeof chunk === 'function')
 31555        cb = chunk, chunk = null
 31556      if (typeof encoding === 'function')
 31557        cb = encoding, encoding = 'utf8'
 31558      if (chunk)
 31559        this.write(chunk, encoding)
 31560      if (cb)
 31561        this.once('end', cb)
 31562      this[EOF] = true
 31563      this.writable = false
 31564  
 31565      // if we haven't written anything, then go ahead and emit,
 31566      // even if we're not reading.
 31567      // we'll re-emit if a new 'end' listener is added anyway.
 31568      // This makes MP more suitable to write-only use cases.
 31569      if (this.flowing || !this[PAUSED])
 31570        this[MAYBE_EMIT_END]()
 31571      return this
 31572    }
 31573  
 31574    // don't let the internal resume be overwritten
 31575    [RESUME] () {
 31576      if (this[DESTROYED])
 31577        return
 31578  
 31579      this[PAUSED] = false
 31580      this[FLOWING] = true
 31581      this.emit('resume')
 31582      if (this.buffer.length)
 31583        this[FLUSH]()
 31584      else if (this[EOF])
 31585        this[MAYBE_EMIT_END]()
 31586      else
 31587        this.emit('drain')
 31588    }
 31589  
 31590    resume () {
 31591      return this[RESUME]()
 31592    }
 31593  
 31594    pause () {
 31595      this[FLOWING] = false
 31596      this[PAUSED] = true
 31597    }
 31598  
 31599    get destroyed () {
 31600      return this[DESTROYED]
 31601    }
 31602  
 31603    get flowing () {
 31604      return this[FLOWING]
 31605    }
 31606  
 31607    get paused () {
 31608      return this[PAUSED]
 31609    }
 31610  
 31611    [BUFFERPUSH] (chunk) {
 31612      if (this[OBJECTMODE])
 31613        this[BUFFERLENGTH] += 1
 31614      else
 31615        this[BUFFERLENGTH] += chunk.length
 31616      this.buffer.push(chunk)
 31617    }
 31618  
 31619    [BUFFERSHIFT] () {
 31620      if (this.buffer.length) {
 31621        if (this[OBJECTMODE])
 31622          this[BUFFERLENGTH] -= 1
 31623        else
 31624          this[BUFFERLENGTH] -= this.buffer[0].length
 31625      }
 31626      return this.buffer.shift()
 31627    }
 31628  
 31629    [FLUSH] (noDrain) {
 31630      do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))
 31631  
 31632      if (!noDrain && !this.buffer.length && !this[EOF])
 31633        this.emit('drain')
 31634    }
 31635  
 31636    [FLUSHCHUNK] (chunk) {
 31637      return chunk ? (this.emit('data', chunk), this.flowing) : false
 31638    }
 31639  
 31640    pipe (dest, opts) {
 31641      if (this[DESTROYED])
 31642        return
 31643  
 31644      const ended = this[EMITTED_END]
 31645      opts = opts || {}
 31646      if (dest === proc.stdout || dest === proc.stderr)
 31647        opts.end = false
 31648      else
 31649        opts.end = opts.end !== false
 31650      opts.proxyErrors = !!opts.proxyErrors
 31651  
 31652      // piping an ended stream ends immediately
 31653      if (ended) {
 31654        if (opts.end)
 31655          dest.end()
 31656      } else {
 31657        this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)
 31658          : new PipeProxyErrors(this, dest, opts))
 31659        if (this[ASYNC])
 31660          defer(() => this[RESUME]())
 31661        else
 31662          this[RESUME]()
 31663      }
 31664  
 31665      return dest
 31666    }
 31667  
 31668    unpipe (dest) {
 31669      const p = this.pipes.find(p => p.dest === dest)
 31670      if (p) {
 31671        this.pipes.splice(this.pipes.indexOf(p), 1)
 31672        p.unpipe()
 31673      }
 31674    }
 31675  
 31676    addListener (ev, fn) {
 31677      return this.on(ev, fn)
 31678    }
 31679  
 31680    on (ev, fn) {
 31681      const ret = super.on(ev, fn)
 31682      if (ev === 'data' && !this.pipes.length && !this.flowing)
 31683        this[RESUME]()
 31684      else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)
 31685        super.emit('readable')
 31686      else if (isEndish(ev) && this[EMITTED_END]) {
 31687        super.emit(ev)
 31688        this.removeAllListeners(ev)
 31689      } else if (ev === 'error' && this[EMITTED_ERROR]) {
 31690        if (this[ASYNC])
 31691          defer(() => fn.call(this, this[EMITTED_ERROR]))
 31692        else
 31693          fn.call(this, this[EMITTED_ERROR])
 31694      }
 31695      return ret
 31696    }
 31697  
 31698    get emittedEnd () {
 31699      return this[EMITTED_END]
 31700    }
 31701  
 31702    [MAYBE_EMIT_END] () {
 31703      if (!this[EMITTING_END] &&
 31704          !this[EMITTED_END] &&
 31705          !this[DESTROYED] &&
 31706          this.buffer.length === 0 &&
 31707          this[EOF]) {
 31708        this[EMITTING_END] = true
 31709        this.emit('end')
 31710        this.emit('prefinish')
 31711        this.emit('finish')
 31712        if (this[CLOSED])
 31713          this.emit('close')
 31714        this[EMITTING_END] = false
 31715      }
 31716    }
 31717  
 31718    emit (ev, data, ...extra) {
 31719      // error and close are only events allowed after calling destroy()
 31720      if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])
 31721        return
 31722      else if (ev === 'data') {
 31723        return !data ? false
 31724          : this[ASYNC] ? defer(() => this[EMITDATA](data))
 31725          : this[EMITDATA](data)
 31726      } else if (ev === 'end') {
 31727        return this[EMITEND]()
 31728      } else if (ev === 'close') {
 31729        this[CLOSED] = true
 31730        // don't emit close before 'end' and 'finish'
 31731        if (!this[EMITTED_END] && !this[DESTROYED])
 31732          return
 31733        const ret = super.emit('close')
 31734        this.removeAllListeners('close')
 31735        return ret
 31736      } else if (ev === 'error') {
 31737        this[EMITTED_ERROR] = data
 31738        const ret = super.emit('error', data)
 31739        this[MAYBE_EMIT_END]()
 31740        return ret
 31741      } else if (ev === 'resume') {
 31742        const ret = super.emit('resume')
 31743        this[MAYBE_EMIT_END]()
 31744        return ret
 31745      } else if (ev === 'finish' || ev === 'prefinish') {
 31746        const ret = super.emit(ev)
 31747        this.removeAllListeners(ev)
 31748        return ret
 31749      }
 31750  
 31751      // Some other unknown event
 31752      const ret = super.emit(ev, data, ...extra)
 31753      this[MAYBE_EMIT_END]()
 31754      return ret
 31755    }
 31756  
 31757    [EMITDATA] (data) {
 31758      for (const p of this.pipes) {
 31759        if (p.dest.write(data) === false)
 31760          this.pause()
 31761      }
 31762      const ret = super.emit('data', data)
 31763      this[MAYBE_EMIT_END]()
 31764      return ret
 31765    }
 31766  
 31767    [EMITEND] () {
 31768      if (this[EMITTED_END])
 31769        return
 31770  
 31771      this[EMITTED_END] = true
 31772      this.readable = false
 31773      if (this[ASYNC])
 31774        defer(() => this[EMITEND2]())
 31775      else
 31776        this[EMITEND2]()
 31777    }
 31778  
 31779    [EMITEND2] () {
 31780      if (this[DECODER]) {
 31781        const data = this[DECODER].end()
 31782        if (data) {
 31783          for (const p of this.pipes) {
 31784            p.dest.write(data)
 31785          }
 31786          super.emit('data', data)
 31787        }
 31788      }
 31789  
 31790      for (const p of this.pipes) {
 31791        p.end()
 31792      }
 31793      const ret = super.emit('end')
 31794      this.removeAllListeners('end')
 31795      return ret
 31796    }
 31797  
 31798    // const all = await stream.collect()
 31799    collect () {
 31800      const buf = []
 31801      if (!this[OBJECTMODE])
 31802        buf.dataLength = 0
 31803      // set the promise first, in case an error is raised
 31804      // by triggering the flow here.
 31805      const p = this.promise()
 31806      this.on('data', c => {
 31807        buf.push(c)
 31808        if (!this[OBJECTMODE])
 31809          buf.dataLength += c.length
 31810      })
 31811      return p.then(() => buf)
 31812    }
 31813  
 31814    // const data = await stream.concat()
 31815    concat () {
 31816      return this[OBJECTMODE]
 31817        ? Promise.reject(new Error('cannot concat in objectMode'))
 31818        : this.collect().then(buf =>
 31819            this[OBJECTMODE]
 31820              ? Promise.reject(new Error('cannot concat in objectMode'))
 31821              : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))
 31822    }
 31823  
 31824    // stream.promise().then(() => done, er => emitted error)
 31825    promise () {
 31826      return new Promise((resolve, reject) => {
 31827        this.on(DESTROYED, () => reject(new Error('stream destroyed')))
 31828        this.on('error', er => reject(er))
 31829        this.on('end', () => resolve())
 31830      })
 31831    }
 31832  
 31833    // for await (let chunk of stream)
 31834    [ASYNCITERATOR] () {
 31835      const next = () => {
 31836        const res = this.read()
 31837        if (res !== null)
 31838          return Promise.resolve({ done: false, value: res })
 31839  
 31840        if (this[EOF])
 31841          return Promise.resolve({ done: true })
 31842  
 31843        let resolve = null
 31844        let reject = null
 31845        const onerr = er => {
 31846          this.removeListener('data', ondata)
 31847          this.removeListener('end', onend)
 31848          reject(er)
 31849        }
 31850        const ondata = value => {
 31851          this.removeListener('error', onerr)
 31852          this.removeListener('end', onend)
 31853          this.pause()
 31854          resolve({ value: value, done: !!this[EOF] })
 31855        }
 31856        const onend = () => {
 31857          this.removeListener('error', onerr)
 31858          this.removeListener('data', ondata)
 31859          resolve({ done: true })
 31860        }
 31861        const ondestroy = () => onerr(new Error('stream destroyed'))
 31862        return new Promise((res, rej) => {
 31863          reject = rej
 31864          resolve = res
 31865          this.once(DESTROYED, ondestroy)
 31866          this.once('error', onerr)
 31867          this.once('end', onend)
 31868          this.once('data', ondata)
 31869        })
 31870      }
 31871  
 31872      return { next }
 31873    }
 31874  
 31875    // for (let chunk of stream)
 31876    [ITERATOR] () {
 31877      const next = () => {
 31878        const value = this.read()
 31879        const done = value === null
 31880        return { value, done }
 31881      }
 31882      return { next }
 31883    }
 31884  
 31885    destroy (er) {
 31886      if (this[DESTROYED]) {
 31887        if (er)
 31888          this.emit('error', er)
 31889        else
 31890          this.emit(DESTROYED)
 31891        return this
 31892      }
 31893  
 31894      this[DESTROYED] = true
 31895  
 31896      // throw away all buffered data, it's never coming out
 31897      this.buffer.length = 0
 31898      this[BUFFERLENGTH] = 0
 31899  
 31900      if (typeof this.close === 'function' && !this[CLOSED])
 31901        this.close()
 31902  
 31903      if (er)
 31904        this.emit('error', er)
 31905      else // if no error to emit, still reject pending promises
 31906        this.emit(DESTROYED)
 31907  
 31908      return this
 31909    }
 31910  
 31911    static isStream (s) {
 31912      return !!s && (s instanceof Minipass || s instanceof Stream ||
 31913        s instanceof EE && (
 31914          typeof s.pipe === 'function' || // readable
 31915          (typeof s.write === 'function' && typeof s.end === 'function') // writable
 31916        ))
 31917    }
 31918  }
 31919  
 31920  
 31921  /***/ }),
 31922  
 31923  /***/ 69891:
 31924  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 31925  
 31926  const Minipass = __nccwpck_require__(33392)
 31927  const EE = __nccwpck_require__(82361)
 31928  const isStream = s => s && s instanceof EE && (
 31929    typeof s.pipe === 'function' || // readable
 31930    (typeof s.write === 'function' && typeof s.end === 'function') // writable
 31931  )
 31932  
 31933  const _head = Symbol('_head')
 31934  const _tail = Symbol('_tail')
 31935  const _linkStreams = Symbol('_linkStreams')
 31936  const _setHead = Symbol('_setHead')
 31937  const _setTail = Symbol('_setTail')
 31938  const _onError = Symbol('_onError')
 31939  const _onData = Symbol('_onData')
 31940  const _onEnd = Symbol('_onEnd')
 31941  const _onDrain = Symbol('_onDrain')
 31942  const _streams = Symbol('_streams')
 31943  class Pipeline extends Minipass {
 31944    constructor (opts, ...streams) {
 31945      if (isStream(opts)) {
 31946        streams.unshift(opts)
 31947        opts = {}
 31948      }
 31949  
 31950      super(opts)
 31951      this[_streams] = []
 31952      if (streams.length)
 31953        this.push(...streams)
 31954    }
 31955  
 31956    [_linkStreams] (streams) {
 31957      // reduce takes (left,right), and we return right to make it the
 31958      // new left value.
 31959      return streams.reduce((src, dest) => {
 31960        src.on('error', er => dest.emit('error', er))
 31961        src.pipe(dest)
 31962        return dest
 31963      })
 31964    }
 31965  
 31966    push (...streams) {
 31967      this[_streams].push(...streams)
 31968      if (this[_tail])
 31969        streams.unshift(this[_tail])
 31970  
 31971      const linkRet = this[_linkStreams](streams)
 31972  
 31973      this[_setTail](linkRet)
 31974      if (!this[_head])
 31975        this[_setHead](streams[0])
 31976    }
 31977  
 31978    unshift (...streams) {
 31979      this[_streams].unshift(...streams)
 31980      if (this[_head])
 31981        streams.push(this[_head])
 31982  
 31983      const linkRet = this[_linkStreams](streams)
 31984      this[_setHead](streams[0])
 31985      if (!this[_tail])
 31986        this[_setTail](linkRet)
 31987    }
 31988  
 31989    destroy (er) {
 31990      // set fire to the whole thing.
 31991      this[_streams].forEach(s =>
 31992        typeof s.destroy === 'function' && s.destroy())
 31993      return super.destroy(er)
 31994    }
 31995  
 31996    // readable interface -> tail
 31997    [_setTail] (stream) {
 31998      this[_tail] = stream
 31999      stream.on('error', er => this[_onError](stream, er))
 32000      stream.on('data', chunk => this[_onData](stream, chunk))
 32001      stream.on('end', () => this[_onEnd](stream))
 32002      stream.on('finish', () => this[_onEnd](stream))
 32003    }
 32004  
 32005    // errors proxied down the pipeline
 32006    // they're considered part of the "read" interface
 32007    [_onError] (stream, er) {
 32008      if (stream === this[_tail])
 32009        this.emit('error', er)
 32010    }
 32011    [_onData] (stream, chunk) {
 32012      if (stream === this[_tail])
 32013        super.write(chunk)
 32014    }
 32015    [_onEnd] (stream) {
 32016      if (stream === this[_tail])
 32017        super.end()
 32018    }
 32019    pause () {
 32020      super.pause()
 32021      return this[_tail] && this[_tail].pause && this[_tail].pause()
 32022    }
 32023  
 32024    // NB: Minipass calls its internal private [RESUME] method during
 32025    // pipe drains, to avoid hazards where stream.resume() is overridden.
 32026    // Thus, we need to listen to the resume *event*, not override the
 32027    // resume() method, and proxy *that* to the tail.
 32028    emit (ev, ...args) {
 32029      if (ev === 'resume' && this[_tail] && this[_tail].resume)
 32030        this[_tail].resume()
 32031      return super.emit(ev, ...args)
 32032    }
 32033  
 32034    // writable interface -> head
 32035    [_setHead] (stream) {
 32036      this[_head] = stream
 32037      stream.on('drain', () => this[_onDrain](stream))
 32038    }
 32039    [_onDrain] (stream) {
 32040      if (stream === this[_head])
 32041        this.emit('drain')
 32042    }
 32043    write (chunk, enc, cb) {
 32044      return this[_head].write(chunk, enc, cb) &&
 32045        (this.flowing || this.buffer.length === 0)
 32046    }
 32047    end (chunk, enc, cb) {
 32048      this[_head].end(chunk, enc, cb)
 32049      return this
 32050    }
 32051  }
 32052  
 32053  module.exports = Pipeline
 32054  
 32055  
 32056  /***/ }),
 32057  
 32058  /***/ 33392:
 32059  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 32060  
 32061  "use strict";
 32062  
 32063  const proc = typeof process === 'object' && process ? process : {
 32064    stdout: null,
 32065    stderr: null,
 32066  }
 32067  const EE = __nccwpck_require__(82361)
 32068  const Stream = __nccwpck_require__(12781)
 32069  const SD = (__nccwpck_require__(71576).StringDecoder)
 32070  
 32071  const EOF = Symbol('EOF')
 32072  const MAYBE_EMIT_END = Symbol('maybeEmitEnd')
 32073  const EMITTED_END = Symbol('emittedEnd')
 32074  const EMITTING_END = Symbol('emittingEnd')
 32075  const EMITTED_ERROR = Symbol('emittedError')
 32076  const CLOSED = Symbol('closed')
 32077  const READ = Symbol('read')
 32078  const FLUSH = Symbol('flush')
 32079  const FLUSHCHUNK = Symbol('flushChunk')
 32080  const ENCODING = Symbol('encoding')
 32081  const DECODER = Symbol('decoder')
 32082  const FLOWING = Symbol('flowing')
 32083  const PAUSED = Symbol('paused')
 32084  const RESUME = Symbol('resume')
 32085  const BUFFERLENGTH = Symbol('bufferLength')
 32086  const BUFFERPUSH = Symbol('bufferPush')
 32087  const BUFFERSHIFT = Symbol('bufferShift')
 32088  const OBJECTMODE = Symbol('objectMode')
 32089  const DESTROYED = Symbol('destroyed')
 32090  const EMITDATA = Symbol('emitData')
 32091  const EMITEND = Symbol('emitEnd')
 32092  const EMITEND2 = Symbol('emitEnd2')
 32093  const ASYNC = Symbol('async')
 32094  
 32095  const defer = fn => Promise.resolve().then(fn)
 32096  
 32097  // TODO remove when Node v8 support drops
 32098  const doIter = global._MP_NO_ITERATOR_SYMBOLS_  !== '1'
 32099  const ASYNCITERATOR = doIter && Symbol.asyncIterator
 32100    || Symbol('asyncIterator not implemented')
 32101  const ITERATOR = doIter && Symbol.iterator
 32102    || Symbol('iterator not implemented')
 32103  
 32104  // events that mean 'the stream is over'
 32105  // these are treated specially, and re-emitted
 32106  // if they are listened for after emitting.
 32107  const isEndish = ev =>
 32108    ev === 'end' ||
 32109    ev === 'finish' ||
 32110    ev === 'prefinish'
 32111  
 32112  const isArrayBuffer = b => b instanceof ArrayBuffer ||
 32113    typeof b === 'object' &&
 32114    b.constructor &&
 32115    b.constructor.name === 'ArrayBuffer' &&
 32116    b.byteLength >= 0
 32117  
 32118  const isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)
 32119  
 32120  class Pipe {
 32121    constructor (src, dest, opts) {
 32122      this.src = src
 32123      this.dest = dest
 32124      this.opts = opts
 32125      this.ondrain = () => src[RESUME]()
 32126      dest.on('drain', this.ondrain)
 32127    }
 32128    unpipe () {
 32129      this.dest.removeListener('drain', this.ondrain)
 32130    }
 32131    // istanbul ignore next - only here for the prototype
 32132    proxyErrors () {}
 32133    end () {
 32134      this.unpipe()
 32135      if (this.opts.end)
 32136        this.dest.end()
 32137    }
 32138  }
 32139  
 32140  class PipeProxyErrors extends Pipe {
 32141    unpipe () {
 32142      this.src.removeListener('error', this.proxyErrors)
 32143      super.unpipe()
 32144    }
 32145    constructor (src, dest, opts) {
 32146      super(src, dest, opts)
 32147      this.proxyErrors = er => dest.emit('error', er)
 32148      src.on('error', this.proxyErrors)
 32149    }
 32150  }
 32151  
 32152  module.exports = class Minipass extends Stream {
 32153    constructor (options) {
 32154      super()
 32155      this[FLOWING] = false
 32156      // whether we're explicitly paused
 32157      this[PAUSED] = false
 32158      this.pipes = []
 32159      this.buffer = []
 32160      this[OBJECTMODE] = options && options.objectMode || false
 32161      if (this[OBJECTMODE])
 32162        this[ENCODING] = null
 32163      else
 32164        this[ENCODING] = options && options.encoding || null
 32165      if (this[ENCODING] === 'buffer')
 32166        this[ENCODING] = null
 32167      this[ASYNC] = options && !!options.async || false
 32168      this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null
 32169      this[EOF] = false
 32170      this[EMITTED_END] = false
 32171      this[EMITTING_END] = false
 32172      this[CLOSED] = false
 32173      this[EMITTED_ERROR] = null
 32174      this.writable = true
 32175      this.readable = true
 32176      this[BUFFERLENGTH] = 0
 32177      this[DESTROYED] = false
 32178    }
 32179  
 32180    get bufferLength () { return this[BUFFERLENGTH] }
 32181  
 32182    get encoding () { return this[ENCODING] }
 32183    set encoding (enc) {
 32184      if (this[OBJECTMODE])
 32185        throw new Error('cannot set encoding in objectMode')
 32186  
 32187      if (this[ENCODING] && enc !== this[ENCODING] &&
 32188          (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))
 32189        throw new Error('cannot change encoding')
 32190  
 32191      if (this[ENCODING] !== enc) {
 32192        this[DECODER] = enc ? new SD(enc) : null
 32193        if (this.buffer.length)
 32194          this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))
 32195      }
 32196  
 32197      this[ENCODING] = enc
 32198    }
 32199  
 32200    setEncoding (enc) {
 32201      this.encoding = enc
 32202    }
 32203  
 32204    get objectMode () { return this[OBJECTMODE] }
 32205    set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }
 32206  
 32207    get ['async'] () { return this[ASYNC] }
 32208    set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }
 32209  
 32210    write (chunk, encoding, cb) {
 32211      if (this[EOF])
 32212        throw new Error('write after end')
 32213  
 32214      if (this[DESTROYED]) {
 32215        this.emit('error', Object.assign(
 32216          new Error('Cannot call write after a stream was destroyed'),
 32217          { code: 'ERR_STREAM_DESTROYED' }
 32218        ))
 32219        return true
 32220      }
 32221  
 32222      if (typeof encoding === 'function')
 32223        cb = encoding, encoding = 'utf8'
 32224  
 32225      if (!encoding)
 32226        encoding = 'utf8'
 32227  
 32228      const fn = this[ASYNC] ? defer : f => f()
 32229  
 32230      // convert array buffers and typed array views into buffers
 32231      // at some point in the future, we may want to do the opposite!
 32232      // leave strings and buffers as-is
 32233      // anything else switches us into object mode
 32234      if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
 32235        if (isArrayBufferView(chunk))
 32236          chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)
 32237        else if (isArrayBuffer(chunk))
 32238          chunk = Buffer.from(chunk)
 32239        else if (typeof chunk !== 'string')
 32240          // use the setter so we throw if we have encoding set
 32241          this.objectMode = true
 32242      }
 32243  
 32244      // handle object mode up front, since it's simpler
 32245      // this yields better performance, fewer checks later.
 32246      if (this[OBJECTMODE]) {
 32247        /* istanbul ignore if - maybe impossible? */
 32248        if (this.flowing && this[BUFFERLENGTH] !== 0)
 32249          this[FLUSH](true)
 32250  
 32251        if (this.flowing)
 32252          this.emit('data', chunk)
 32253        else
 32254          this[BUFFERPUSH](chunk)
 32255  
 32256        if (this[BUFFERLENGTH] !== 0)
 32257          this.emit('readable')
 32258  
 32259        if (cb)
 32260          fn(cb)
 32261  
 32262        return this.flowing
 32263      }
 32264  
 32265      // at this point the chunk is a buffer or string
 32266      // don't buffer it up or send it to the decoder
 32267      if (!chunk.length) {
 32268        if (this[BUFFERLENGTH] !== 0)
 32269          this.emit('readable')
 32270        if (cb)
 32271          fn(cb)
 32272        return this.flowing
 32273      }
 32274  
 32275      // fast-path writing strings of same encoding to a stream with
 32276      // an empty buffer, skipping the buffer/decoder dance
 32277      if (typeof chunk === 'string' &&
 32278          // unless it is a string already ready for us to use
 32279          !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {
 32280        chunk = Buffer.from(chunk, encoding)
 32281      }
 32282  
 32283      if (Buffer.isBuffer(chunk) && this[ENCODING])
 32284        chunk = this[DECODER].write(chunk)
 32285  
 32286      // Note: flushing CAN potentially switch us into not-flowing mode
 32287      if (this.flowing && this[BUFFERLENGTH] !== 0)
 32288        this[FLUSH](true)
 32289  
 32290      if (this.flowing)
 32291        this.emit('data', chunk)
 32292      else
 32293        this[BUFFERPUSH](chunk)
 32294  
 32295      if (this[BUFFERLENGTH] !== 0)
 32296        this.emit('readable')
 32297  
 32298      if (cb)
 32299        fn(cb)
 32300  
 32301      return this.flowing
 32302    }
 32303  
 32304    read (n) {
 32305      if (this[DESTROYED])
 32306        return null
 32307  
 32308      if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {
 32309        this[MAYBE_EMIT_END]()
 32310        return null
 32311      }
 32312  
 32313      if (this[OBJECTMODE])
 32314        n = null
 32315  
 32316      if (this.buffer.length > 1 && !this[OBJECTMODE]) {
 32317        if (this.encoding)
 32318          this.buffer = [this.buffer.join('')]
 32319        else
 32320          this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]
 32321      }
 32322  
 32323      const ret = this[READ](n || null, this.buffer[0])
 32324      this[MAYBE_EMIT_END]()
 32325      return ret
 32326    }
 32327  
 32328    [READ] (n, chunk) {
 32329      if (n === chunk.length || n === null)
 32330        this[BUFFERSHIFT]()
 32331      else {
 32332        this.buffer[0] = chunk.slice(n)
 32333        chunk = chunk.slice(0, n)
 32334        this[BUFFERLENGTH] -= n
 32335      }
 32336  
 32337      this.emit('data', chunk)
 32338  
 32339      if (!this.buffer.length && !this[EOF])
 32340        this.emit('drain')
 32341  
 32342      return chunk
 32343    }
 32344  
 32345    end (chunk, encoding, cb) {
 32346      if (typeof chunk === 'function')
 32347        cb = chunk, chunk = null
 32348      if (typeof encoding === 'function')
 32349        cb = encoding, encoding = 'utf8'
 32350      if (chunk)
 32351        this.write(chunk, encoding)
 32352      if (cb)
 32353        this.once('end', cb)
 32354      this[EOF] = true
 32355      this.writable = false
 32356  
 32357      // if we haven't written anything, then go ahead and emit,
 32358      // even if we're not reading.
 32359      // we'll re-emit if a new 'end' listener is added anyway.
 32360      // This makes MP more suitable to write-only use cases.
 32361      if (this.flowing || !this[PAUSED])
 32362        this[MAYBE_EMIT_END]()
 32363      return this
 32364    }
 32365  
 32366    // don't let the internal resume be overwritten
 32367    [RESUME] () {
 32368      if (this[DESTROYED])
 32369        return
 32370  
 32371      this[PAUSED] = false
 32372      this[FLOWING] = true
 32373      this.emit('resume')
 32374      if (this.buffer.length)
 32375        this[FLUSH]()
 32376      else if (this[EOF])
 32377        this[MAYBE_EMIT_END]()
 32378      else
 32379        this.emit('drain')
 32380    }
 32381  
 32382    resume () {
 32383      return this[RESUME]()
 32384    }
 32385  
 32386    pause () {
 32387      this[FLOWING] = false
 32388      this[PAUSED] = true
 32389    }
 32390  
 32391    get destroyed () {
 32392      return this[DESTROYED]
 32393    }
 32394  
 32395    get flowing () {
 32396      return this[FLOWING]
 32397    }
 32398  
 32399    get paused () {
 32400      return this[PAUSED]
 32401    }
 32402  
 32403    [BUFFERPUSH] (chunk) {
 32404      if (this[OBJECTMODE])
 32405        this[BUFFERLENGTH] += 1
 32406      else
 32407        this[BUFFERLENGTH] += chunk.length
 32408      this.buffer.push(chunk)
 32409    }
 32410  
 32411    [BUFFERSHIFT] () {
 32412      if (this.buffer.length) {
 32413        if (this[OBJECTMODE])
 32414          this[BUFFERLENGTH] -= 1
 32415        else
 32416          this[BUFFERLENGTH] -= this.buffer[0].length
 32417      }
 32418      return this.buffer.shift()
 32419    }
 32420  
 32421    [FLUSH] (noDrain) {
 32422      do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))
 32423  
 32424      if (!noDrain && !this.buffer.length && !this[EOF])
 32425        this.emit('drain')
 32426    }
 32427  
 32428    [FLUSHCHUNK] (chunk) {
 32429      return chunk ? (this.emit('data', chunk), this.flowing) : false
 32430    }
 32431  
 32432    pipe (dest, opts) {
 32433      if (this[DESTROYED])
 32434        return
 32435  
 32436      const ended = this[EMITTED_END]
 32437      opts = opts || {}
 32438      if (dest === proc.stdout || dest === proc.stderr)
 32439        opts.end = false
 32440      else
 32441        opts.end = opts.end !== false
 32442      opts.proxyErrors = !!opts.proxyErrors
 32443  
 32444      // piping an ended stream ends immediately
 32445      if (ended) {
 32446        if (opts.end)
 32447          dest.end()
 32448      } else {
 32449        this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)
 32450          : new PipeProxyErrors(this, dest, opts))
 32451        if (this[ASYNC])
 32452          defer(() => this[RESUME]())
 32453        else
 32454          this[RESUME]()
 32455      }
 32456  
 32457      return dest
 32458    }
 32459  
 32460    unpipe (dest) {
 32461      const p = this.pipes.find(p => p.dest === dest)
 32462      if (p) {
 32463        this.pipes.splice(this.pipes.indexOf(p), 1)
 32464        p.unpipe()
 32465      }
 32466    }
 32467  
 32468    addListener (ev, fn) {
 32469      return this.on(ev, fn)
 32470    }
 32471  
 32472    on (ev, fn) {
 32473      const ret = super.on(ev, fn)
 32474      if (ev === 'data' && !this.pipes.length && !this.flowing)
 32475        this[RESUME]()
 32476      else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)
 32477        super.emit('readable')
 32478      else if (isEndish(ev) && this[EMITTED_END]) {
 32479        super.emit(ev)
 32480        this.removeAllListeners(ev)
 32481      } else if (ev === 'error' && this[EMITTED_ERROR]) {
 32482        if (this[ASYNC])
 32483          defer(() => fn.call(this, this[EMITTED_ERROR]))
 32484        else
 32485          fn.call(this, this[EMITTED_ERROR])
 32486      }
 32487      return ret
 32488    }
 32489  
 32490    get emittedEnd () {
 32491      return this[EMITTED_END]
 32492    }
 32493  
 32494    [MAYBE_EMIT_END] () {
 32495      if (!this[EMITTING_END] &&
 32496          !this[EMITTED_END] &&
 32497          !this[DESTROYED] &&
 32498          this.buffer.length === 0 &&
 32499          this[EOF]) {
 32500        this[EMITTING_END] = true
 32501        this.emit('end')
 32502        this.emit('prefinish')
 32503        this.emit('finish')
 32504        if (this[CLOSED])
 32505          this.emit('close')
 32506        this[EMITTING_END] = false
 32507      }
 32508    }
 32509  
 32510    emit (ev, data, ...extra) {
 32511      // error and close are only events allowed after calling destroy()
 32512      if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])
 32513        return
 32514      else if (ev === 'data') {
 32515        return !data ? false
 32516          : this[ASYNC] ? defer(() => this[EMITDATA](data))
 32517          : this[EMITDATA](data)
 32518      } else if (ev === 'end') {
 32519        return this[EMITEND]()
 32520      } else if (ev === 'close') {
 32521        this[CLOSED] = true
 32522        // don't emit close before 'end' and 'finish'
 32523        if (!this[EMITTED_END] && !this[DESTROYED])
 32524          return
 32525        const ret = super.emit('close')
 32526        this.removeAllListeners('close')
 32527        return ret
 32528      } else if (ev === 'error') {
 32529        this[EMITTED_ERROR] = data
 32530        const ret = super.emit('error', data)
 32531        this[MAYBE_EMIT_END]()
 32532        return ret
 32533      } else if (ev === 'resume') {
 32534        const ret = super.emit('resume')
 32535        this[MAYBE_EMIT_END]()
 32536        return ret
 32537      } else if (ev === 'finish' || ev === 'prefinish') {
 32538        const ret = super.emit(ev)
 32539        this.removeAllListeners(ev)
 32540        return ret
 32541      }
 32542  
 32543      // Some other unknown event
 32544      const ret = super.emit(ev, data, ...extra)
 32545      this[MAYBE_EMIT_END]()
 32546      return ret
 32547    }
 32548  
 32549    [EMITDATA] (data) {
 32550      for (const p of this.pipes) {
 32551        if (p.dest.write(data) === false)
 32552          this.pause()
 32553      }
 32554      const ret = super.emit('data', data)
 32555      this[MAYBE_EMIT_END]()
 32556      return ret
 32557    }
 32558  
 32559    [EMITEND] () {
 32560      if (this[EMITTED_END])
 32561        return
 32562  
 32563      this[EMITTED_END] = true
 32564      this.readable = false
 32565      if (this[ASYNC])
 32566        defer(() => this[EMITEND2]())
 32567      else
 32568        this[EMITEND2]()
 32569    }
 32570  
 32571    [EMITEND2] () {
 32572      if (this[DECODER]) {
 32573        const data = this[DECODER].end()
 32574        if (data) {
 32575          for (const p of this.pipes) {
 32576            p.dest.write(data)
 32577          }
 32578          super.emit('data', data)
 32579        }
 32580      }
 32581  
 32582      for (const p of this.pipes) {
 32583        p.end()
 32584      }
 32585      const ret = super.emit('end')
 32586      this.removeAllListeners('end')
 32587      return ret
 32588    }
 32589  
 32590    // const all = await stream.collect()
 32591    collect () {
 32592      const buf = []
 32593      if (!this[OBJECTMODE])
 32594        buf.dataLength = 0
 32595      // set the promise first, in case an error is raised
 32596      // by triggering the flow here.
 32597      const p = this.promise()
 32598      this.on('data', c => {
 32599        buf.push(c)
 32600        if (!this[OBJECTMODE])
 32601          buf.dataLength += c.length
 32602      })
 32603      return p.then(() => buf)
 32604    }
 32605  
 32606    // const data = await stream.concat()
 32607    concat () {
 32608      return this[OBJECTMODE]
 32609        ? Promise.reject(new Error('cannot concat in objectMode'))
 32610        : this.collect().then(buf =>
 32611            this[OBJECTMODE]
 32612              ? Promise.reject(new Error('cannot concat in objectMode'))
 32613              : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))
 32614    }
 32615  
 32616    // stream.promise().then(() => done, er => emitted error)
 32617    promise () {
 32618      return new Promise((resolve, reject) => {
 32619        this.on(DESTROYED, () => reject(new Error('stream destroyed')))
 32620        this.on('error', er => reject(er))
 32621        this.on('end', () => resolve())
 32622      })
 32623    }
 32624  
 32625    // for await (let chunk of stream)
 32626    [ASYNCITERATOR] () {
 32627      const next = () => {
 32628        const res = this.read()
 32629        if (res !== null)
 32630          return Promise.resolve({ done: false, value: res })
 32631  
 32632        if (this[EOF])
 32633          return Promise.resolve({ done: true })
 32634  
 32635        let resolve = null
 32636        let reject = null
 32637        const onerr = er => {
 32638          this.removeListener('data', ondata)
 32639          this.removeListener('end', onend)
 32640          reject(er)
 32641        }
 32642        const ondata = value => {
 32643          this.removeListener('error', onerr)
 32644          this.removeListener('end', onend)
 32645          this.pause()
 32646          resolve({ value: value, done: !!this[EOF] })
 32647        }
 32648        const onend = () => {
 32649          this.removeListener('error', onerr)
 32650          this.removeListener('data', ondata)
 32651          resolve({ done: true })
 32652        }
 32653        const ondestroy = () => onerr(new Error('stream destroyed'))
 32654        return new Promise((res, rej) => {
 32655          reject = rej
 32656          resolve = res
 32657          this.once(DESTROYED, ondestroy)
 32658          this.once('error', onerr)
 32659          this.once('end', onend)
 32660          this.once('data', ondata)
 32661        })
 32662      }
 32663  
 32664      return { next }
 32665    }
 32666  
 32667    // for (let chunk of stream)
 32668    [ITERATOR] () {
 32669      const next = () => {
 32670        const value = this.read()
 32671        const done = value === null
 32672        return { value, done }
 32673      }
 32674      return { next }
 32675    }
 32676  
 32677    destroy (er) {
 32678      if (this[DESTROYED]) {
 32679        if (er)
 32680          this.emit('error', er)
 32681        else
 32682          this.emit(DESTROYED)
 32683        return this
 32684      }
 32685  
 32686      this[DESTROYED] = true
 32687  
 32688      // throw away all buffered data, it's never coming out
 32689      this.buffer.length = 0
 32690      this[BUFFERLENGTH] = 0
 32691  
 32692      if (typeof this.close === 'function' && !this[CLOSED])
 32693        this.close()
 32694  
 32695      if (er)
 32696        this.emit('error', er)
 32697      else // if no error to emit, still reject pending promises
 32698        this.emit(DESTROYED)
 32699  
 32700      return this
 32701    }
 32702  
 32703    static isStream (s) {
 32704      return !!s && (s instanceof Minipass || s instanceof Stream ||
 32705        s instanceof EE && (
 32706          typeof s.pipe === 'function' || // readable
 32707          (typeof s.write === 'function' && typeof s.end === 'function') // writable
 32708        ))
 32709    }
 32710  }
 32711  
 32712  
 32713  /***/ }),
 32714  
 32715  /***/ 55952:
 32716  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 32717  
 32718  const Minipass = __nccwpck_require__(38024)
 32719  
 32720  class SizeError extends Error {
 32721    constructor (found, expect) {
 32722      super(`Bad data size: expected ${expect} bytes, but got ${found}`)
 32723      this.expect = expect
 32724      this.found = found
 32725      this.code = 'EBADSIZE'
 32726  	  Error.captureStackTrace(this, this.constructor)
 32727    }
 32728    get name () {
 32729      return 'SizeError'
 32730    }
 32731  }
 32732  
 32733  class MinipassSized extends Minipass {
 32734    constructor (options = {}) {
 32735      super(options)
 32736  
 32737      if (options.objectMode)
 32738        throw new TypeError(`${
 32739          this.constructor.name
 32740        } streams only work with string and buffer data`)
 32741  
 32742      this.found = 0
 32743      this.expect = options.size
 32744      if (typeof this.expect !== 'number' ||
 32745          this.expect > Number.MAX_SAFE_INTEGER ||
 32746          isNaN(this.expect) ||
 32747          this.expect < 0 ||
 32748          !isFinite(this.expect) ||
 32749          this.expect !== Math.floor(this.expect))
 32750        throw new Error('invalid expected size: ' + this.expect)
 32751    }
 32752  
 32753    write (chunk, encoding, cb) {
 32754      const buffer = Buffer.isBuffer(chunk) ? chunk
 32755        : typeof chunk === 'string' ?
 32756          Buffer.from(chunk, typeof encoding === 'string' ? encoding : 'utf8')
 32757        : chunk
 32758  
 32759      if (!Buffer.isBuffer(buffer)) {
 32760        this.emit('error', new TypeError(`${
 32761          this.constructor.name
 32762        } streams only work with string and buffer data`))
 32763        return false
 32764      }
 32765  
 32766      this.found += buffer.length
 32767      if (this.found > this.expect)
 32768        this.emit('error', new SizeError(this.found, this.expect))
 32769  
 32770      return super.write(chunk, encoding, cb)
 32771    }
 32772  
 32773    emit (ev, ...data) {
 32774      if (ev === 'end') {
 32775        if (this.found !== this.expect)
 32776          this.emit('error', new SizeError(this.found, this.expect))
 32777      }
 32778      return super.emit(ev, ...data)
 32779    }
 32780  }
 32781  
 32782  MinipassSized.SizeError = SizeError
 32783  
 32784  module.exports = MinipassSized
 32785  
 32786  
 32787  /***/ }),
 32788  
 32789  /***/ 38024:
 32790  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 32791  
 32792  "use strict";
 32793  
 32794  const proc = typeof process === 'object' && process ? process : {
 32795    stdout: null,
 32796    stderr: null,
 32797  }
 32798  const EE = __nccwpck_require__(82361)
 32799  const Stream = __nccwpck_require__(12781)
 32800  const SD = (__nccwpck_require__(71576).StringDecoder)
 32801  
 32802  const EOF = Symbol('EOF')
 32803  const MAYBE_EMIT_END = Symbol('maybeEmitEnd')
 32804  const EMITTED_END = Symbol('emittedEnd')
 32805  const EMITTING_END = Symbol('emittingEnd')
 32806  const EMITTED_ERROR = Symbol('emittedError')
 32807  const CLOSED = Symbol('closed')
 32808  const READ = Symbol('read')
 32809  const FLUSH = Symbol('flush')
 32810  const FLUSHCHUNK = Symbol('flushChunk')
 32811  const ENCODING = Symbol('encoding')
 32812  const DECODER = Symbol('decoder')
 32813  const FLOWING = Symbol('flowing')
 32814  const PAUSED = Symbol('paused')
 32815  const RESUME = Symbol('resume')
 32816  const BUFFERLENGTH = Symbol('bufferLength')
 32817  const BUFFERPUSH = Symbol('bufferPush')
 32818  const BUFFERSHIFT = Symbol('bufferShift')
 32819  const OBJECTMODE = Symbol('objectMode')
 32820  const DESTROYED = Symbol('destroyed')
 32821  const EMITDATA = Symbol('emitData')
 32822  const EMITEND = Symbol('emitEnd')
 32823  const EMITEND2 = Symbol('emitEnd2')
 32824  const ASYNC = Symbol('async')
 32825  
 32826  const defer = fn => Promise.resolve().then(fn)
 32827  
 32828  // TODO remove when Node v8 support drops
 32829  const doIter = global._MP_NO_ITERATOR_SYMBOLS_  !== '1'
 32830  const ASYNCITERATOR = doIter && Symbol.asyncIterator
 32831    || Symbol('asyncIterator not implemented')
 32832  const ITERATOR = doIter && Symbol.iterator
 32833    || Symbol('iterator not implemented')
 32834  
 32835  // events that mean 'the stream is over'
 32836  // these are treated specially, and re-emitted
 32837  // if they are listened for after emitting.
 32838  const isEndish = ev =>
 32839    ev === 'end' ||
 32840    ev === 'finish' ||
 32841    ev === 'prefinish'
 32842  
 32843  const isArrayBuffer = b => b instanceof ArrayBuffer ||
 32844    typeof b === 'object' &&
 32845    b.constructor &&
 32846    b.constructor.name === 'ArrayBuffer' &&
 32847    b.byteLength >= 0
 32848  
 32849  const isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)
 32850  
 32851  class Pipe {
 32852    constructor (src, dest, opts) {
 32853      this.src = src
 32854      this.dest = dest
 32855      this.opts = opts
 32856      this.ondrain = () => src[RESUME]()
 32857      dest.on('drain', this.ondrain)
 32858    }
 32859    unpipe () {
 32860      this.dest.removeListener('drain', this.ondrain)
 32861    }
 32862    // istanbul ignore next - only here for the prototype
 32863    proxyErrors () {}
 32864    end () {
 32865      this.unpipe()
 32866      if (this.opts.end)
 32867        this.dest.end()
 32868    }
 32869  }
 32870  
 32871  class PipeProxyErrors extends Pipe {
 32872    unpipe () {
 32873      this.src.removeListener('error', this.proxyErrors)
 32874      super.unpipe()
 32875    }
 32876    constructor (src, dest, opts) {
 32877      super(src, dest, opts)
 32878      this.proxyErrors = er => dest.emit('error', er)
 32879      src.on('error', this.proxyErrors)
 32880    }
 32881  }
 32882  
 32883  module.exports = class Minipass extends Stream {
 32884    constructor (options) {
 32885      super()
 32886      this[FLOWING] = false
 32887      // whether we're explicitly paused
 32888      this[PAUSED] = false
 32889      this.pipes = []
 32890      this.buffer = []
 32891      this[OBJECTMODE] = options && options.objectMode || false
 32892      if (this[OBJECTMODE])
 32893        this[ENCODING] = null
 32894      else
 32895        this[ENCODING] = options && options.encoding || null
 32896      if (this[ENCODING] === 'buffer')
 32897        this[ENCODING] = null
 32898      this[ASYNC] = options && !!options.async || false
 32899      this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null
 32900      this[EOF] = false
 32901      this[EMITTED_END] = false
 32902      this[EMITTING_END] = false
 32903      this[CLOSED] = false
 32904      this[EMITTED_ERROR] = null
 32905      this.writable = true
 32906      this.readable = true
 32907      this[BUFFERLENGTH] = 0
 32908      this[DESTROYED] = false
 32909    }
 32910  
 32911    get bufferLength () { return this[BUFFERLENGTH] }
 32912  
 32913    get encoding () { return this[ENCODING] }
 32914    set encoding (enc) {
 32915      if (this[OBJECTMODE])
 32916        throw new Error('cannot set encoding in objectMode')
 32917  
 32918      if (this[ENCODING] && enc !== this[ENCODING] &&
 32919          (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))
 32920        throw new Error('cannot change encoding')
 32921  
 32922      if (this[ENCODING] !== enc) {
 32923        this[DECODER] = enc ? new SD(enc) : null
 32924        if (this.buffer.length)
 32925          this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))
 32926      }
 32927  
 32928      this[ENCODING] = enc
 32929    }
 32930  
 32931    setEncoding (enc) {
 32932      this.encoding = enc
 32933    }
 32934  
 32935    get objectMode () { return this[OBJECTMODE] }
 32936    set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }
 32937  
 32938    get ['async'] () { return this[ASYNC] }
 32939    set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }
 32940  
 32941    write (chunk, encoding, cb) {
 32942      if (this[EOF])
 32943        throw new Error('write after end')
 32944  
 32945      if (this[DESTROYED]) {
 32946        this.emit('error', Object.assign(
 32947          new Error('Cannot call write after a stream was destroyed'),
 32948          { code: 'ERR_STREAM_DESTROYED' }
 32949        ))
 32950        return true
 32951      }
 32952  
 32953      if (typeof encoding === 'function')
 32954        cb = encoding, encoding = 'utf8'
 32955  
 32956      if (!encoding)
 32957        encoding = 'utf8'
 32958  
 32959      const fn = this[ASYNC] ? defer : f => f()
 32960  
 32961      // convert array buffers and typed array views into buffers
 32962      // at some point in the future, we may want to do the opposite!
 32963      // leave strings and buffers as-is
 32964      // anything else switches us into object mode
 32965      if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
 32966        if (isArrayBufferView(chunk))
 32967          chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)
 32968        else if (isArrayBuffer(chunk))
 32969          chunk = Buffer.from(chunk)
 32970        else if (typeof chunk !== 'string')
 32971          // use the setter so we throw if we have encoding set
 32972          this.objectMode = true
 32973      }
 32974  
 32975      // handle object mode up front, since it's simpler
 32976      // this yields better performance, fewer checks later.
 32977      if (this[OBJECTMODE]) {
 32978        /* istanbul ignore if - maybe impossible? */
 32979        if (this.flowing && this[BUFFERLENGTH] !== 0)
 32980          this[FLUSH](true)
 32981  
 32982        if (this.flowing)
 32983          this.emit('data', chunk)
 32984        else
 32985          this[BUFFERPUSH](chunk)
 32986  
 32987        if (this[BUFFERLENGTH] !== 0)
 32988          this.emit('readable')
 32989  
 32990        if (cb)
 32991          fn(cb)
 32992  
 32993        return this.flowing
 32994      }
 32995  
 32996      // at this point the chunk is a buffer or string
 32997      // don't buffer it up or send it to the decoder
 32998      if (!chunk.length) {
 32999        if (this[BUFFERLENGTH] !== 0)
 33000          this.emit('readable')
 33001        if (cb)
 33002          fn(cb)
 33003        return this.flowing
 33004      }
 33005  
 33006      // fast-path writing strings of same encoding to a stream with
 33007      // an empty buffer, skipping the buffer/decoder dance
 33008      if (typeof chunk === 'string' &&
 33009          // unless it is a string already ready for us to use
 33010          !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {
 33011        chunk = Buffer.from(chunk, encoding)
 33012      }
 33013  
 33014      if (Buffer.isBuffer(chunk) && this[ENCODING])
 33015        chunk = this[DECODER].write(chunk)
 33016  
 33017      // Note: flushing CAN potentially switch us into not-flowing mode
 33018      if (this.flowing && this[BUFFERLENGTH] !== 0)
 33019        this[FLUSH](true)
 33020  
 33021      if (this.flowing)
 33022        this.emit('data', chunk)
 33023      else
 33024        this[BUFFERPUSH](chunk)
 33025  
 33026      if (this[BUFFERLENGTH] !== 0)
 33027        this.emit('readable')
 33028  
 33029      if (cb)
 33030        fn(cb)
 33031  
 33032      return this.flowing
 33033    }
 33034  
 33035    read (n) {
 33036      if (this[DESTROYED])
 33037        return null
 33038  
 33039      if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {
 33040        this[MAYBE_EMIT_END]()
 33041        return null
 33042      }
 33043  
 33044      if (this[OBJECTMODE])
 33045        n = null
 33046  
 33047      if (this.buffer.length > 1 && !this[OBJECTMODE]) {
 33048        if (this.encoding)
 33049          this.buffer = [this.buffer.join('')]
 33050        else
 33051          this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]
 33052      }
 33053  
 33054      const ret = this[READ](n || null, this.buffer[0])
 33055      this[MAYBE_EMIT_END]()
 33056      return ret
 33057    }
 33058  
 33059    [READ] (n, chunk) {
 33060      if (n === chunk.length || n === null)
 33061        this[BUFFERSHIFT]()
 33062      else {
 33063        this.buffer[0] = chunk.slice(n)
 33064        chunk = chunk.slice(0, n)
 33065        this[BUFFERLENGTH] -= n
 33066      }
 33067  
 33068      this.emit('data', chunk)
 33069  
 33070      if (!this.buffer.length && !this[EOF])
 33071        this.emit('drain')
 33072  
 33073      return chunk
 33074    }
 33075  
 33076    end (chunk, encoding, cb) {
 33077      if (typeof chunk === 'function')
 33078        cb = chunk, chunk = null
 33079      if (typeof encoding === 'function')
 33080        cb = encoding, encoding = 'utf8'
 33081      if (chunk)
 33082        this.write(chunk, encoding)
 33083      if (cb)
 33084        this.once('end', cb)
 33085      this[EOF] = true
 33086      this.writable = false
 33087  
 33088      // if we haven't written anything, then go ahead and emit,
 33089      // even if we're not reading.
 33090      // we'll re-emit if a new 'end' listener is added anyway.
 33091      // This makes MP more suitable to write-only use cases.
 33092      if (this.flowing || !this[PAUSED])
 33093        this[MAYBE_EMIT_END]()
 33094      return this
 33095    }
 33096  
 33097    // don't let the internal resume be overwritten
 33098    [RESUME] () {
 33099      if (this[DESTROYED])
 33100        return
 33101  
 33102      this[PAUSED] = false
 33103      this[FLOWING] = true
 33104      this.emit('resume')
 33105      if (this.buffer.length)
 33106        this[FLUSH]()
 33107      else if (this[EOF])
 33108        this[MAYBE_EMIT_END]()
 33109      else
 33110        this.emit('drain')
 33111    }
 33112  
 33113    resume () {
 33114      return this[RESUME]()
 33115    }
 33116  
 33117    pause () {
 33118      this[FLOWING] = false
 33119      this[PAUSED] = true
 33120    }
 33121  
 33122    get destroyed () {
 33123      return this[DESTROYED]
 33124    }
 33125  
 33126    get flowing () {
 33127      return this[FLOWING]
 33128    }
 33129  
 33130    get paused () {
 33131      return this[PAUSED]
 33132    }
 33133  
 33134    [BUFFERPUSH] (chunk) {
 33135      if (this[OBJECTMODE])
 33136        this[BUFFERLENGTH] += 1
 33137      else
 33138        this[BUFFERLENGTH] += chunk.length
 33139      this.buffer.push(chunk)
 33140    }
 33141  
 33142    [BUFFERSHIFT] () {
 33143      if (this.buffer.length) {
 33144        if (this[OBJECTMODE])
 33145          this[BUFFERLENGTH] -= 1
 33146        else
 33147          this[BUFFERLENGTH] -= this.buffer[0].length
 33148      }
 33149      return this.buffer.shift()
 33150    }
 33151  
 33152    [FLUSH] (noDrain) {
 33153      do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))
 33154  
 33155      if (!noDrain && !this.buffer.length && !this[EOF])
 33156        this.emit('drain')
 33157    }
 33158  
 33159    [FLUSHCHUNK] (chunk) {
 33160      return chunk ? (this.emit('data', chunk), this.flowing) : false
 33161    }
 33162  
 33163    pipe (dest, opts) {
 33164      if (this[DESTROYED])
 33165        return
 33166  
 33167      const ended = this[EMITTED_END]
 33168      opts = opts || {}
 33169      if (dest === proc.stdout || dest === proc.stderr)
 33170        opts.end = false
 33171      else
 33172        opts.end = opts.end !== false
 33173      opts.proxyErrors = !!opts.proxyErrors
 33174  
 33175      // piping an ended stream ends immediately
 33176      if (ended) {
 33177        if (opts.end)
 33178          dest.end()
 33179      } else {
 33180        this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)
 33181          : new PipeProxyErrors(this, dest, opts))
 33182        if (this[ASYNC])
 33183          defer(() => this[RESUME]())
 33184        else
 33185          this[RESUME]()
 33186      }
 33187  
 33188      return dest
 33189    }
 33190  
 33191    unpipe (dest) {
 33192      const p = this.pipes.find(p => p.dest === dest)
 33193      if (p) {
 33194        this.pipes.splice(this.pipes.indexOf(p), 1)
 33195        p.unpipe()
 33196      }
 33197    }
 33198  
 33199    addListener (ev, fn) {
 33200      return this.on(ev, fn)
 33201    }
 33202  
 33203    on (ev, fn) {
 33204      const ret = super.on(ev, fn)
 33205      if (ev === 'data' && !this.pipes.length && !this.flowing)
 33206        this[RESUME]()
 33207      else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)
 33208        super.emit('readable')
 33209      else if (isEndish(ev) && this[EMITTED_END]) {
 33210        super.emit(ev)
 33211        this.removeAllListeners(ev)
 33212      } else if (ev === 'error' && this[EMITTED_ERROR]) {
 33213        if (this[ASYNC])
 33214          defer(() => fn.call(this, this[EMITTED_ERROR]))
 33215        else
 33216          fn.call(this, this[EMITTED_ERROR])
 33217      }
 33218      return ret
 33219    }
 33220  
 33221    get emittedEnd () {
 33222      return this[EMITTED_END]
 33223    }
 33224  
 33225    [MAYBE_EMIT_END] () {
 33226      if (!this[EMITTING_END] &&
 33227          !this[EMITTED_END] &&
 33228          !this[DESTROYED] &&
 33229          this.buffer.length === 0 &&
 33230          this[EOF]) {
 33231        this[EMITTING_END] = true
 33232        this.emit('end')
 33233        this.emit('prefinish')
 33234        this.emit('finish')
 33235        if (this[CLOSED])
 33236          this.emit('close')
 33237        this[EMITTING_END] = false
 33238      }
 33239    }
 33240  
 33241    emit (ev, data, ...extra) {
 33242      // error and close are only events allowed after calling destroy()
 33243      if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])
 33244        return
 33245      else if (ev === 'data') {
 33246        return !data ? false
 33247          : this[ASYNC] ? defer(() => this[EMITDATA](data))
 33248          : this[EMITDATA](data)
 33249      } else if (ev === 'end') {
 33250        return this[EMITEND]()
 33251      } else if (ev === 'close') {
 33252        this[CLOSED] = true
 33253        // don't emit close before 'end' and 'finish'
 33254        if (!this[EMITTED_END] && !this[DESTROYED])
 33255          return
 33256        const ret = super.emit('close')
 33257        this.removeAllListeners('close')
 33258        return ret
 33259      } else if (ev === 'error') {
 33260        this[EMITTED_ERROR] = data
 33261        const ret = super.emit('error', data)
 33262        this[MAYBE_EMIT_END]()
 33263        return ret
 33264      } else if (ev === 'resume') {
 33265        const ret = super.emit('resume')
 33266        this[MAYBE_EMIT_END]()
 33267        return ret
 33268      } else if (ev === 'finish' || ev === 'prefinish') {
 33269        const ret = super.emit(ev)
 33270        this.removeAllListeners(ev)
 33271        return ret
 33272      }
 33273  
 33274      // Some other unknown event
 33275      const ret = super.emit(ev, data, ...extra)
 33276      this[MAYBE_EMIT_END]()
 33277      return ret
 33278    }
 33279  
 33280    [EMITDATA] (data) {
 33281      for (const p of this.pipes) {
 33282        if (p.dest.write(data) === false)
 33283          this.pause()
 33284      }
 33285      const ret = super.emit('data', data)
 33286      this[MAYBE_EMIT_END]()
 33287      return ret
 33288    }
 33289  
 33290    [EMITEND] () {
 33291      if (this[EMITTED_END])
 33292        return
 33293  
 33294      this[EMITTED_END] = true
 33295      this.readable = false
 33296      if (this[ASYNC])
 33297        defer(() => this[EMITEND2]())
 33298      else
 33299        this[EMITEND2]()
 33300    }
 33301  
 33302    [EMITEND2] () {
 33303      if (this[DECODER]) {
 33304        const data = this[DECODER].end()
 33305        if (data) {
 33306          for (const p of this.pipes) {
 33307            p.dest.write(data)
 33308          }
 33309          super.emit('data', data)
 33310        }
 33311      }
 33312  
 33313      for (const p of this.pipes) {
 33314        p.end()
 33315      }
 33316      const ret = super.emit('end')
 33317      this.removeAllListeners('end')
 33318      return ret
 33319    }
 33320  
 33321    // const all = await stream.collect()
 33322    collect () {
 33323      const buf = []
 33324      if (!this[OBJECTMODE])
 33325        buf.dataLength = 0
 33326      // set the promise first, in case an error is raised
 33327      // by triggering the flow here.
 33328      const p = this.promise()
 33329      this.on('data', c => {
 33330        buf.push(c)
 33331        if (!this[OBJECTMODE])
 33332          buf.dataLength += c.length
 33333      })
 33334      return p.then(() => buf)
 33335    }
 33336  
 33337    // const data = await stream.concat()
 33338    concat () {
 33339      return this[OBJECTMODE]
 33340        ? Promise.reject(new Error('cannot concat in objectMode'))
 33341        : this.collect().then(buf =>
 33342            this[OBJECTMODE]
 33343              ? Promise.reject(new Error('cannot concat in objectMode'))
 33344              : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))
 33345    }
 33346  
 33347    // stream.promise().then(() => done, er => emitted error)
 33348    promise () {
 33349      return new Promise((resolve, reject) => {
 33350        this.on(DESTROYED, () => reject(new Error('stream destroyed')))
 33351        this.on('error', er => reject(er))
 33352        this.on('end', () => resolve())
 33353      })
 33354    }
 33355  
 33356    // for await (let chunk of stream)
 33357    [ASYNCITERATOR] () {
 33358      const next = () => {
 33359        const res = this.read()
 33360        if (res !== null)
 33361          return Promise.resolve({ done: false, value: res })
 33362  
 33363        if (this[EOF])
 33364          return Promise.resolve({ done: true })
 33365  
 33366        let resolve = null
 33367        let reject = null
 33368        const onerr = er => {
 33369          this.removeListener('data', ondata)
 33370          this.removeListener('end', onend)
 33371          reject(er)
 33372        }
 33373        const ondata = value => {
 33374          this.removeListener('error', onerr)
 33375          this.removeListener('end', onend)
 33376          this.pause()
 33377          resolve({ value: value, done: !!this[EOF] })
 33378        }
 33379        const onend = () => {
 33380          this.removeListener('error', onerr)
 33381          this.removeListener('data', ondata)
 33382          resolve({ done: true })
 33383        }
 33384        const ondestroy = () => onerr(new Error('stream destroyed'))
 33385        return new Promise((res, rej) => {
 33386          reject = rej
 33387          resolve = res
 33388          this.once(DESTROYED, ondestroy)
 33389          this.once('error', onerr)
 33390          this.once('end', onend)
 33391          this.once('data', ondata)
 33392        })
 33393      }
 33394  
 33395      return { next }
 33396    }
 33397  
 33398    // for (let chunk of stream)
 33399    [ITERATOR] () {
 33400      const next = () => {
 33401        const value = this.read()
 33402        const done = value === null
 33403        return { value, done }
 33404      }
 33405      return { next }
 33406    }
 33407  
 33408    destroy (er) {
 33409      if (this[DESTROYED]) {
 33410        if (er)
 33411          this.emit('error', er)
 33412        else
 33413          this.emit(DESTROYED)
 33414        return this
 33415      }
 33416  
 33417      this[DESTROYED] = true
 33418  
 33419      // throw away all buffered data, it's never coming out
 33420      this.buffer.length = 0
 33421      this[BUFFERLENGTH] = 0
 33422  
 33423      if (typeof this.close === 'function' && !this[CLOSED])
 33424        this.close()
 33425  
 33426      if (er)
 33427        this.emit('error', er)
 33428      else // if no error to emit, still reject pending promises
 33429        this.emit(DESTROYED)
 33430  
 33431      return this
 33432    }
 33433  
 33434    static isStream (s) {
 33435      return !!s && (s instanceof Minipass || s instanceof Stream ||
 33436        s instanceof EE && (
 33437          typeof s.pipe === 'function' || // readable
 33438          (typeof s.write === 'function' && typeof s.end === 'function') // writable
 33439        ))
 33440    }
 33441  }
 33442  
 33443  
 33444  /***/ }),
 33445  
 33446  /***/ 6769:
 33447  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 33448  
 33449  // Update with any zlib constants that are added or changed in the future.
 33450  // Node v6 didn't export this, so we just hard code the version and rely
 33451  // on all the other hard-coded values from zlib v4736.  When node v6
 33452  // support drops, we can just export the realZlibConstants object.
 33453  const realZlibConstants = (__nccwpck_require__(59796).constants) ||
 33454    /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }
 33455  
 33456  module.exports = Object.freeze(Object.assign(Object.create(null), {
 33457    Z_NO_FLUSH: 0,
 33458    Z_PARTIAL_FLUSH: 1,
 33459    Z_SYNC_FLUSH: 2,
 33460    Z_FULL_FLUSH: 3,
 33461    Z_FINISH: 4,
 33462    Z_BLOCK: 5,
 33463    Z_OK: 0,
 33464    Z_STREAM_END: 1,
 33465    Z_NEED_DICT: 2,
 33466    Z_ERRNO: -1,
 33467    Z_STREAM_ERROR: -2,
 33468    Z_DATA_ERROR: -3,
 33469    Z_MEM_ERROR: -4,
 33470    Z_BUF_ERROR: -5,
 33471    Z_VERSION_ERROR: -6,
 33472    Z_NO_COMPRESSION: 0,
 33473    Z_BEST_SPEED: 1,
 33474    Z_BEST_COMPRESSION: 9,
 33475    Z_DEFAULT_COMPRESSION: -1,
 33476    Z_FILTERED: 1,
 33477    Z_HUFFMAN_ONLY: 2,
 33478    Z_RLE: 3,
 33479    Z_FIXED: 4,
 33480    Z_DEFAULT_STRATEGY: 0,
 33481    DEFLATE: 1,
 33482    INFLATE: 2,
 33483    GZIP: 3,
 33484    GUNZIP: 4,
 33485    DEFLATERAW: 5,
 33486    INFLATERAW: 6,
 33487    UNZIP: 7,
 33488    BROTLI_DECODE: 8,
 33489    BROTLI_ENCODE: 9,
 33490    Z_MIN_WINDOWBITS: 8,
 33491    Z_MAX_WINDOWBITS: 15,
 33492    Z_DEFAULT_WINDOWBITS: 15,
 33493    Z_MIN_CHUNK: 64,
 33494    Z_MAX_CHUNK: Infinity,
 33495    Z_DEFAULT_CHUNK: 16384,
 33496    Z_MIN_MEMLEVEL: 1,
 33497    Z_MAX_MEMLEVEL: 9,
 33498    Z_DEFAULT_MEMLEVEL: 8,
 33499    Z_MIN_LEVEL: -1,
 33500    Z_MAX_LEVEL: 9,
 33501    Z_DEFAULT_LEVEL: -1,
 33502    BROTLI_OPERATION_PROCESS: 0,
 33503    BROTLI_OPERATION_FLUSH: 1,
 33504    BROTLI_OPERATION_FINISH: 2,
 33505    BROTLI_OPERATION_EMIT_METADATA: 3,
 33506    BROTLI_MODE_GENERIC: 0,
 33507    BROTLI_MODE_TEXT: 1,
 33508    BROTLI_MODE_FONT: 2,
 33509    BROTLI_DEFAULT_MODE: 0,
 33510    BROTLI_MIN_QUALITY: 0,
 33511    BROTLI_MAX_QUALITY: 11,
 33512    BROTLI_DEFAULT_QUALITY: 11,
 33513    BROTLI_MIN_WINDOW_BITS: 10,
 33514    BROTLI_MAX_WINDOW_BITS: 24,
 33515    BROTLI_LARGE_MAX_WINDOW_BITS: 30,
 33516    BROTLI_DEFAULT_WINDOW: 22,
 33517    BROTLI_MIN_INPUT_BLOCK_BITS: 16,
 33518    BROTLI_MAX_INPUT_BLOCK_BITS: 24,
 33519    BROTLI_PARAM_MODE: 0,
 33520    BROTLI_PARAM_QUALITY: 1,
 33521    BROTLI_PARAM_LGWIN: 2,
 33522    BROTLI_PARAM_LGBLOCK: 3,
 33523    BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,
 33524    BROTLI_PARAM_SIZE_HINT: 5,
 33525    BROTLI_PARAM_LARGE_WINDOW: 6,
 33526    BROTLI_PARAM_NPOSTFIX: 7,
 33527    BROTLI_PARAM_NDIRECT: 8,
 33528    BROTLI_DECODER_RESULT_ERROR: 0,
 33529    BROTLI_DECODER_RESULT_SUCCESS: 1,
 33530    BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,
 33531    BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,
 33532    BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,
 33533    BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,
 33534    BROTLI_DECODER_NO_ERROR: 0,
 33535    BROTLI_DECODER_SUCCESS: 1,
 33536    BROTLI_DECODER_NEEDS_MORE_INPUT: 2,
 33537    BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,
 33538    BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,
 33539    BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,
 33540    BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,
 33541    BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,
 33542    BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,
 33543    BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,
 33544    BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,
 33545    BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,
 33546    BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,
 33547    BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,
 33548    BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,
 33549    BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,
 33550    BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,
 33551    BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,
 33552    BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,
 33553    BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,
 33554    BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,
 33555    BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,
 33556    BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,
 33557    BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,
 33558    BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,
 33559    BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,
 33560    BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,
 33561    BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,
 33562    BROTLI_DECODER_ERROR_UNREACHABLE: -31,
 33563  }, realZlibConstants))
 33564  
 33565  
 33566  /***/ }),
 33567  
 33568  /***/ 33486:
 33569  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 33570  
 33571  "use strict";
 33572  
 33573  
 33574  const assert = __nccwpck_require__(39491)
 33575  const Buffer = (__nccwpck_require__(14300).Buffer)
 33576  const realZlib = __nccwpck_require__(59796)
 33577  
 33578  const constants = exports.constants = __nccwpck_require__(6769)
 33579  const Minipass = __nccwpck_require__(47557)
 33580  
 33581  const OriginalBufferConcat = Buffer.concat
 33582  
 33583  const _superWrite = Symbol('_superWrite')
 33584  class ZlibError extends Error {
 33585    constructor (err) {
 33586      super('zlib: ' + err.message)
 33587      this.code = err.code
 33588      this.errno = err.errno
 33589      /* istanbul ignore if */
 33590      if (!this.code)
 33591        this.code = 'ZLIB_ERROR'
 33592  
 33593      this.message = 'zlib: ' + err.message
 33594      Error.captureStackTrace(this, this.constructor)
 33595    }
 33596  
 33597    get name () {
 33598      return 'ZlibError'
 33599    }
 33600  }
 33601  
 33602  // the Zlib class they all inherit from
 33603  // This thing manages the queue of requests, and returns
 33604  // true or false if there is anything in the queue when
 33605  // you call the .write() method.
 33606  const _opts = Symbol('opts')
 33607  const _flushFlag = Symbol('flushFlag')
 33608  const _finishFlushFlag = Symbol('finishFlushFlag')
 33609  const _fullFlushFlag = Symbol('fullFlushFlag')
 33610  const _handle = Symbol('handle')
 33611  const _onError = Symbol('onError')
 33612  const _sawError = Symbol('sawError')
 33613  const _level = Symbol('level')
 33614  const _strategy = Symbol('strategy')
 33615  const _ended = Symbol('ended')
 33616  const _defaultFullFlush = Symbol('_defaultFullFlush')
 33617  
 33618  class ZlibBase extends Minipass {
 33619    constructor (opts, mode) {
 33620      if (!opts || typeof opts !== 'object')
 33621        throw new TypeError('invalid options for ZlibBase constructor')
 33622  
 33623      super(opts)
 33624      this[_sawError] = false
 33625      this[_ended] = false
 33626      this[_opts] = opts
 33627  
 33628      this[_flushFlag] = opts.flush
 33629      this[_finishFlushFlag] = opts.finishFlush
 33630      // this will throw if any options are invalid for the class selected
 33631      try {
 33632        this[_handle] = new realZlib[mode](opts)
 33633      } catch (er) {
 33634        // make sure that all errors get decorated properly
 33635        throw new ZlibError(er)
 33636      }
 33637  
 33638      this[_onError] = (err) => {
 33639        // no sense raising multiple errors, since we abort on the first one.
 33640        if (this[_sawError])
 33641          return
 33642  
 33643        this[_sawError] = true
 33644  
 33645        // there is no way to cleanly recover.
 33646        // continuing only obscures problems.
 33647        this.close()
 33648        this.emit('error', err)
 33649      }
 33650  
 33651      this[_handle].on('error', er => this[_onError](new ZlibError(er)))
 33652      this.once('end', () => this.close)
 33653    }
 33654  
 33655    close () {
 33656      if (this[_handle]) {
 33657        this[_handle].close()
 33658        this[_handle] = null
 33659        this.emit('close')
 33660      }
 33661    }
 33662  
 33663    reset () {
 33664      if (!this[_sawError]) {
 33665        assert(this[_handle], 'zlib binding closed')
 33666        return this[_handle].reset()
 33667      }
 33668    }
 33669  
 33670    flush (flushFlag) {
 33671      if (this.ended)
 33672        return
 33673  
 33674      if (typeof flushFlag !== 'number')
 33675        flushFlag = this[_fullFlushFlag]
 33676      this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))
 33677    }
 33678  
 33679    end (chunk, encoding, cb) {
 33680      if (chunk)
 33681        this.write(chunk, encoding)
 33682      this.flush(this[_finishFlushFlag])
 33683      this[_ended] = true
 33684      return super.end(null, null, cb)
 33685    }
 33686  
 33687    get ended () {
 33688      return this[_ended]
 33689    }
 33690  
 33691    write (chunk, encoding, cb) {
 33692      // process the chunk using the sync process
 33693      // then super.write() all the outputted chunks
 33694      if (typeof encoding === 'function')
 33695        cb = encoding, encoding = 'utf8'
 33696  
 33697      if (typeof chunk === 'string')
 33698        chunk = Buffer.from(chunk, encoding)
 33699  
 33700      if (this[_sawError])
 33701        return
 33702      assert(this[_handle], 'zlib binding closed')
 33703  
 33704      // _processChunk tries to .close() the native handle after it's done, so we
 33705      // intercept that by temporarily making it a no-op.
 33706      const nativeHandle = this[_handle]._handle
 33707      const originalNativeClose = nativeHandle.close
 33708      nativeHandle.close = () => {}
 33709      const originalClose = this[_handle].close
 33710      this[_handle].close = () => {}
 33711      // It also calls `Buffer.concat()` at the end, which may be convenient
 33712      // for some, but which we are not interested in as it slows us down.
 33713      Buffer.concat = (args) => args
 33714      let result
 33715      try {
 33716        const flushFlag = typeof chunk[_flushFlag] === 'number'
 33717          ? chunk[_flushFlag] : this[_flushFlag]
 33718        result = this[_handle]._processChunk(chunk, flushFlag)
 33719        // if we don't throw, reset it back how it was
 33720        Buffer.concat = OriginalBufferConcat
 33721      } catch (err) {
 33722        // or if we do, put Buffer.concat() back before we emit error
 33723        // Error events call into user code, which may call Buffer.concat()
 33724        Buffer.concat = OriginalBufferConcat
 33725        this[_onError](new ZlibError(err))
 33726      } finally {
 33727        if (this[_handle]) {
 33728          // Core zlib resets `_handle` to null after attempting to close the
 33729          // native handle. Our no-op handler prevented actual closure, but we
 33730          // need to restore the `._handle` property.
 33731          this[_handle]._handle = nativeHandle
 33732          nativeHandle.close = originalNativeClose
 33733          this[_handle].close = originalClose
 33734          // `_processChunk()` adds an 'error' listener. If we don't remove it
 33735          // after each call, these handlers start piling up.
 33736          this[_handle].removeAllListeners('error')
 33737          // make sure OUR error listener is still attached tho
 33738        }
 33739      }
 33740  
 33741      if (this[_handle])
 33742        this[_handle].on('error', er => this[_onError](new ZlibError(er)))
 33743  
 33744      let writeReturn
 33745      if (result) {
 33746        if (Array.isArray(result) && result.length > 0) {
 33747          // The first buffer is always `handle._outBuffer`, which would be
 33748          // re-used for later invocations; so, we always have to copy that one.
 33749          writeReturn = this[_superWrite](Buffer.from(result[0]))
 33750          for (let i = 1; i < result.length; i++) {
 33751            writeReturn = this[_superWrite](result[i])
 33752          }
 33753        } else {
 33754          writeReturn = this[_superWrite](Buffer.from(result))
 33755        }
 33756      }
 33757  
 33758      if (cb)
 33759        cb()
 33760      return writeReturn
 33761    }
 33762  
 33763    [_superWrite] (data) {
 33764      return super.write(data)
 33765    }
 33766  }
 33767  
 33768  class Zlib extends ZlibBase {
 33769    constructor (opts, mode) {
 33770      opts = opts || {}
 33771  
 33772      opts.flush = opts.flush || constants.Z_NO_FLUSH
 33773      opts.finishFlush = opts.finishFlush || constants.Z_FINISH
 33774      super(opts, mode)
 33775  
 33776      this[_fullFlushFlag] = constants.Z_FULL_FLUSH
 33777      this[_level] = opts.level
 33778      this[_strategy] = opts.strategy
 33779    }
 33780  
 33781    params (level, strategy) {
 33782      if (this[_sawError])
 33783        return
 33784  
 33785      if (!this[_handle])
 33786        throw new Error('cannot switch params when binding is closed')
 33787  
 33788      // no way to test this without also not supporting params at all
 33789      /* istanbul ignore if */
 33790      if (!this[_handle].params)
 33791        throw new Error('not supported in this implementation')
 33792  
 33793      if (this[_level] !== level || this[_strategy] !== strategy) {
 33794        this.flush(constants.Z_SYNC_FLUSH)
 33795        assert(this[_handle], 'zlib binding closed')
 33796        // .params() calls .flush(), but the latter is always async in the
 33797        // core zlib. We override .flush() temporarily to intercept that and
 33798        // flush synchronously.
 33799        const origFlush = this[_handle].flush
 33800        this[_handle].flush = (flushFlag, cb) => {
 33801          this.flush(flushFlag)
 33802          cb()
 33803        }
 33804        try {
 33805          this[_handle].params(level, strategy)
 33806        } finally {
 33807          this[_handle].flush = origFlush
 33808        }
 33809        /* istanbul ignore else */
 33810        if (this[_handle]) {
 33811          this[_level] = level
 33812          this[_strategy] = strategy
 33813        }
 33814      }
 33815    }
 33816  }
 33817  
 33818  // minimal 2-byte header
 33819  class Deflate extends Zlib {
 33820    constructor (opts) {
 33821      super(opts, 'Deflate')
 33822    }
 33823  }
 33824  
 33825  class Inflate extends Zlib {
 33826    constructor (opts) {
 33827      super(opts, 'Inflate')
 33828    }
 33829  }
 33830  
 33831  // gzip - bigger header, same deflate compression
 33832  const _portable = Symbol('_portable')
 33833  class Gzip extends Zlib {
 33834    constructor (opts) {
 33835      super(opts, 'Gzip')
 33836      this[_portable] = opts && !!opts.portable
 33837    }
 33838  
 33839    [_superWrite] (data) {
 33840      if (!this[_portable])
 33841        return super[_superWrite](data)
 33842  
 33843      // we'll always get the header emitted in one first chunk
 33844      // overwrite the OS indicator byte with 0xFF
 33845      this[_portable] = false
 33846      data[9] = 255
 33847      return super[_superWrite](data)
 33848    }
 33849  }
 33850  
 33851  class Gunzip extends Zlib {
 33852    constructor (opts) {
 33853      super(opts, 'Gunzip')
 33854    }
 33855  }
 33856  
 33857  // raw - no header
 33858  class DeflateRaw extends Zlib {
 33859    constructor (opts) {
 33860      super(opts, 'DeflateRaw')
 33861    }
 33862  }
 33863  
 33864  class InflateRaw extends Zlib {
 33865    constructor (opts) {
 33866      super(opts, 'InflateRaw')
 33867    }
 33868  }
 33869  
 33870  // auto-detect header.
 33871  class Unzip extends Zlib {
 33872    constructor (opts) {
 33873      super(opts, 'Unzip')
 33874    }
 33875  }
 33876  
 33877  class Brotli extends ZlibBase {
 33878    constructor (opts, mode) {
 33879      opts = opts || {}
 33880  
 33881      opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS
 33882      opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH
 33883  
 33884      super(opts, mode)
 33885  
 33886      this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH
 33887    }
 33888  }
 33889  
 33890  class BrotliCompress extends Brotli {
 33891    constructor (opts) {
 33892      super(opts, 'BrotliCompress')
 33893    }
 33894  }
 33895  
 33896  class BrotliDecompress extends Brotli {
 33897    constructor (opts) {
 33898      super(opts, 'BrotliDecompress')
 33899    }
 33900  }
 33901  
 33902  exports.Deflate = Deflate
 33903  exports.Inflate = Inflate
 33904  exports.Gzip = Gzip
 33905  exports.Gunzip = Gunzip
 33906  exports.DeflateRaw = DeflateRaw
 33907  exports.InflateRaw = InflateRaw
 33908  exports.Unzip = Unzip
 33909  /* istanbul ignore else */
 33910  if (typeof realZlib.BrotliCompress === 'function') {
 33911    exports.BrotliCompress = BrotliCompress
 33912    exports.BrotliDecompress = BrotliDecompress
 33913  } else {
 33914    exports.BrotliCompress = exports.BrotliDecompress = class {
 33915      constructor () {
 33916        throw new Error('Brotli is not supported in this version of Node.js')
 33917      }
 33918    }
 33919  }
 33920  
 33921  
 33922  /***/ }),
 33923  
 33924  /***/ 47557:
 33925  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 33926  
 33927  "use strict";
 33928  
 33929  const proc = typeof process === 'object' && process ? process : {
 33930    stdout: null,
 33931    stderr: null,
 33932  }
 33933  const EE = __nccwpck_require__(82361)
 33934  const Stream = __nccwpck_require__(12781)
 33935  const SD = (__nccwpck_require__(71576).StringDecoder)
 33936  
 33937  const EOF = Symbol('EOF')
 33938  const MAYBE_EMIT_END = Symbol('maybeEmitEnd')
 33939  const EMITTED_END = Symbol('emittedEnd')
 33940  const EMITTING_END = Symbol('emittingEnd')
 33941  const EMITTED_ERROR = Symbol('emittedError')
 33942  const CLOSED = Symbol('closed')
 33943  const READ = Symbol('read')
 33944  const FLUSH = Symbol('flush')
 33945  const FLUSHCHUNK = Symbol('flushChunk')
 33946  const ENCODING = Symbol('encoding')
 33947  const DECODER = Symbol('decoder')
 33948  const FLOWING = Symbol('flowing')
 33949  const PAUSED = Symbol('paused')
 33950  const RESUME = Symbol('resume')
 33951  const BUFFERLENGTH = Symbol('bufferLength')
 33952  const BUFFERPUSH = Symbol('bufferPush')
 33953  const BUFFERSHIFT = Symbol('bufferShift')
 33954  const OBJECTMODE = Symbol('objectMode')
 33955  const DESTROYED = Symbol('destroyed')
 33956  const EMITDATA = Symbol('emitData')
 33957  const EMITEND = Symbol('emitEnd')
 33958  const EMITEND2 = Symbol('emitEnd2')
 33959  const ASYNC = Symbol('async')
 33960  
 33961  const defer = fn => Promise.resolve().then(fn)
 33962  
 33963  // TODO remove when Node v8 support drops
 33964  const doIter = global._MP_NO_ITERATOR_SYMBOLS_  !== '1'
 33965  const ASYNCITERATOR = doIter && Symbol.asyncIterator
 33966    || Symbol('asyncIterator not implemented')
 33967  const ITERATOR = doIter && Symbol.iterator
 33968    || Symbol('iterator not implemented')
 33969  
 33970  // events that mean 'the stream is over'
 33971  // these are treated specially, and re-emitted
 33972  // if they are listened for after emitting.
 33973  const isEndish = ev =>
 33974    ev === 'end' ||
 33975    ev === 'finish' ||
 33976    ev === 'prefinish'
 33977  
 33978  const isArrayBuffer = b => b instanceof ArrayBuffer ||
 33979    typeof b === 'object' &&
 33980    b.constructor &&
 33981    b.constructor.name === 'ArrayBuffer' &&
 33982    b.byteLength >= 0
 33983  
 33984  const isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)
 33985  
 33986  class Pipe {
 33987    constructor (src, dest, opts) {
 33988      this.src = src
 33989      this.dest = dest
 33990      this.opts = opts
 33991      this.ondrain = () => src[RESUME]()
 33992      dest.on('drain', this.ondrain)
 33993    }
 33994    unpipe () {
 33995      this.dest.removeListener('drain', this.ondrain)
 33996    }
 33997    // istanbul ignore next - only here for the prototype
 33998    proxyErrors () {}
 33999    end () {
 34000      this.unpipe()
 34001      if (this.opts.end)
 34002        this.dest.end()
 34003    }
 34004  }
 34005  
 34006  class PipeProxyErrors extends Pipe {
 34007    unpipe () {
 34008      this.src.removeListener('error', this.proxyErrors)
 34009      super.unpipe()
 34010    }
 34011    constructor (src, dest, opts) {
 34012      super(src, dest, opts)
 34013      this.proxyErrors = er => dest.emit('error', er)
 34014      src.on('error', this.proxyErrors)
 34015    }
 34016  }
 34017  
 34018  module.exports = class Minipass extends Stream {
 34019    constructor (options) {
 34020      super()
 34021      this[FLOWING] = false
 34022      // whether we're explicitly paused
 34023      this[PAUSED] = false
 34024      this.pipes = []
 34025      this.buffer = []
 34026      this[OBJECTMODE] = options && options.objectMode || false
 34027      if (this[OBJECTMODE])
 34028        this[ENCODING] = null
 34029      else
 34030        this[ENCODING] = options && options.encoding || null
 34031      if (this[ENCODING] === 'buffer')
 34032        this[ENCODING] = null
 34033      this[ASYNC] = options && !!options.async || false
 34034      this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null
 34035      this[EOF] = false
 34036      this[EMITTED_END] = false
 34037      this[EMITTING_END] = false
 34038      this[CLOSED] = false
 34039      this[EMITTED_ERROR] = null
 34040      this.writable = true
 34041      this.readable = true
 34042      this[BUFFERLENGTH] = 0
 34043      this[DESTROYED] = false
 34044    }
 34045  
 34046    get bufferLength () { return this[BUFFERLENGTH] }
 34047  
 34048    get encoding () { return this[ENCODING] }
 34049    set encoding (enc) {
 34050      if (this[OBJECTMODE])
 34051        throw new Error('cannot set encoding in objectMode')
 34052  
 34053      if (this[ENCODING] && enc !== this[ENCODING] &&
 34054          (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))
 34055        throw new Error('cannot change encoding')
 34056  
 34057      if (this[ENCODING] !== enc) {
 34058        this[DECODER] = enc ? new SD(enc) : null
 34059        if (this.buffer.length)
 34060          this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))
 34061      }
 34062  
 34063      this[ENCODING] = enc
 34064    }
 34065  
 34066    setEncoding (enc) {
 34067      this.encoding = enc
 34068    }
 34069  
 34070    get objectMode () { return this[OBJECTMODE] }
 34071    set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }
 34072  
 34073    get ['async'] () { return this[ASYNC] }
 34074    set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }
 34075  
 34076    write (chunk, encoding, cb) {
 34077      if (this[EOF])
 34078        throw new Error('write after end')
 34079  
 34080      if (this[DESTROYED]) {
 34081        this.emit('error', Object.assign(
 34082          new Error('Cannot call write after a stream was destroyed'),
 34083          { code: 'ERR_STREAM_DESTROYED' }
 34084        ))
 34085        return true
 34086      }
 34087  
 34088      if (typeof encoding === 'function')
 34089        cb = encoding, encoding = 'utf8'
 34090  
 34091      if (!encoding)
 34092        encoding = 'utf8'
 34093  
 34094      const fn = this[ASYNC] ? defer : f => f()
 34095  
 34096      // convert array buffers and typed array views into buffers
 34097      // at some point in the future, we may want to do the opposite!
 34098      // leave strings and buffers as-is
 34099      // anything else switches us into object mode
 34100      if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
 34101        if (isArrayBufferView(chunk))
 34102          chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)
 34103        else if (isArrayBuffer(chunk))
 34104          chunk = Buffer.from(chunk)
 34105        else if (typeof chunk !== 'string')
 34106          // use the setter so we throw if we have encoding set
 34107          this.objectMode = true
 34108      }
 34109  
 34110      // handle object mode up front, since it's simpler
 34111      // this yields better performance, fewer checks later.
 34112      if (this[OBJECTMODE]) {
 34113        /* istanbul ignore if - maybe impossible? */
 34114        if (this.flowing && this[BUFFERLENGTH] !== 0)
 34115          this[FLUSH](true)
 34116  
 34117        if (this.flowing)
 34118          this.emit('data', chunk)
 34119        else
 34120          this[BUFFERPUSH](chunk)
 34121  
 34122        if (this[BUFFERLENGTH] !== 0)
 34123          this.emit('readable')
 34124  
 34125        if (cb)
 34126          fn(cb)
 34127  
 34128        return this.flowing
 34129      }
 34130  
 34131      // at this point the chunk is a buffer or string
 34132      // don't buffer it up or send it to the decoder
 34133      if (!chunk.length) {
 34134        if (this[BUFFERLENGTH] !== 0)
 34135          this.emit('readable')
 34136        if (cb)
 34137          fn(cb)
 34138        return this.flowing
 34139      }
 34140  
 34141      // fast-path writing strings of same encoding to a stream with
 34142      // an empty buffer, skipping the buffer/decoder dance
 34143      if (typeof chunk === 'string' &&
 34144          // unless it is a string already ready for us to use
 34145          !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {
 34146        chunk = Buffer.from(chunk, encoding)
 34147      }
 34148  
 34149      if (Buffer.isBuffer(chunk) && this[ENCODING])
 34150        chunk = this[DECODER].write(chunk)
 34151  
 34152      // Note: flushing CAN potentially switch us into not-flowing mode
 34153      if (this.flowing && this[BUFFERLENGTH] !== 0)
 34154        this[FLUSH](true)
 34155  
 34156      if (this.flowing)
 34157        this.emit('data', chunk)
 34158      else
 34159        this[BUFFERPUSH](chunk)
 34160  
 34161      if (this[BUFFERLENGTH] !== 0)
 34162        this.emit('readable')
 34163  
 34164      if (cb)
 34165        fn(cb)
 34166  
 34167      return this.flowing
 34168    }
 34169  
 34170    read (n) {
 34171      if (this[DESTROYED])
 34172        return null
 34173  
 34174      if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {
 34175        this[MAYBE_EMIT_END]()
 34176        return null
 34177      }
 34178  
 34179      if (this[OBJECTMODE])
 34180        n = null
 34181  
 34182      if (this.buffer.length > 1 && !this[OBJECTMODE]) {
 34183        if (this.encoding)
 34184          this.buffer = [this.buffer.join('')]
 34185        else
 34186          this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]
 34187      }
 34188  
 34189      const ret = this[READ](n || null, this.buffer[0])
 34190      this[MAYBE_EMIT_END]()
 34191      return ret
 34192    }
 34193  
 34194    [READ] (n, chunk) {
 34195      if (n === chunk.length || n === null)
 34196        this[BUFFERSHIFT]()
 34197      else {
 34198        this.buffer[0] = chunk.slice(n)
 34199        chunk = chunk.slice(0, n)
 34200        this[BUFFERLENGTH] -= n
 34201      }
 34202  
 34203      this.emit('data', chunk)
 34204  
 34205      if (!this.buffer.length && !this[EOF])
 34206        this.emit('drain')
 34207  
 34208      return chunk
 34209    }
 34210  
 34211    end (chunk, encoding, cb) {
 34212      if (typeof chunk === 'function')
 34213        cb = chunk, chunk = null
 34214      if (typeof encoding === 'function')
 34215        cb = encoding, encoding = 'utf8'
 34216      if (chunk)
 34217        this.write(chunk, encoding)
 34218      if (cb)
 34219        this.once('end', cb)
 34220      this[EOF] = true
 34221      this.writable = false
 34222  
 34223      // if we haven't written anything, then go ahead and emit,
 34224      // even if we're not reading.
 34225      // we'll re-emit if a new 'end' listener is added anyway.
 34226      // This makes MP more suitable to write-only use cases.
 34227      if (this.flowing || !this[PAUSED])
 34228        this[MAYBE_EMIT_END]()
 34229      return this
 34230    }
 34231  
 34232    // don't let the internal resume be overwritten
 34233    [RESUME] () {
 34234      if (this[DESTROYED])
 34235        return
 34236  
 34237      this[PAUSED] = false
 34238      this[FLOWING] = true
 34239      this.emit('resume')
 34240      if (this.buffer.length)
 34241        this[FLUSH]()
 34242      else if (this[EOF])
 34243        this[MAYBE_EMIT_END]()
 34244      else
 34245        this.emit('drain')
 34246    }
 34247  
 34248    resume () {
 34249      return this[RESUME]()
 34250    }
 34251  
 34252    pause () {
 34253      this[FLOWING] = false
 34254      this[PAUSED] = true
 34255    }
 34256  
 34257    get destroyed () {
 34258      return this[DESTROYED]
 34259    }
 34260  
 34261    get flowing () {
 34262      return this[FLOWING]
 34263    }
 34264  
 34265    get paused () {
 34266      return this[PAUSED]
 34267    }
 34268  
 34269    [BUFFERPUSH] (chunk) {
 34270      if (this[OBJECTMODE])
 34271        this[BUFFERLENGTH] += 1
 34272      else
 34273        this[BUFFERLENGTH] += chunk.length
 34274      this.buffer.push(chunk)
 34275    }
 34276  
 34277    [BUFFERSHIFT] () {
 34278      if (this.buffer.length) {
 34279        if (this[OBJECTMODE])
 34280          this[BUFFERLENGTH] -= 1
 34281        else
 34282          this[BUFFERLENGTH] -= this.buffer[0].length
 34283      }
 34284      return this.buffer.shift()
 34285    }
 34286  
 34287    [FLUSH] (noDrain) {
 34288      do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))
 34289  
 34290      if (!noDrain && !this.buffer.length && !this[EOF])
 34291        this.emit('drain')
 34292    }
 34293  
 34294    [FLUSHCHUNK] (chunk) {
 34295      return chunk ? (this.emit('data', chunk), this.flowing) : false
 34296    }
 34297  
 34298    pipe (dest, opts) {
 34299      if (this[DESTROYED])
 34300        return
 34301  
 34302      const ended = this[EMITTED_END]
 34303      opts = opts || {}
 34304      if (dest === proc.stdout || dest === proc.stderr)
 34305        opts.end = false
 34306      else
 34307        opts.end = opts.end !== false
 34308      opts.proxyErrors = !!opts.proxyErrors
 34309  
 34310      // piping an ended stream ends immediately
 34311      if (ended) {
 34312        if (opts.end)
 34313          dest.end()
 34314      } else {
 34315        this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)
 34316          : new PipeProxyErrors(this, dest, opts))
 34317        if (this[ASYNC])
 34318          defer(() => this[RESUME]())
 34319        else
 34320          this[RESUME]()
 34321      }
 34322  
 34323      return dest
 34324    }
 34325  
 34326    unpipe (dest) {
 34327      const p = this.pipes.find(p => p.dest === dest)
 34328      if (p) {
 34329        this.pipes.splice(this.pipes.indexOf(p), 1)
 34330        p.unpipe()
 34331      }
 34332    }
 34333  
 34334    addListener (ev, fn) {
 34335      return this.on(ev, fn)
 34336    }
 34337  
 34338    on (ev, fn) {
 34339      const ret = super.on(ev, fn)
 34340      if (ev === 'data' && !this.pipes.length && !this.flowing)
 34341        this[RESUME]()
 34342      else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)
 34343        super.emit('readable')
 34344      else if (isEndish(ev) && this[EMITTED_END]) {
 34345        super.emit(ev)
 34346        this.removeAllListeners(ev)
 34347      } else if (ev === 'error' && this[EMITTED_ERROR]) {
 34348        if (this[ASYNC])
 34349          defer(() => fn.call(this, this[EMITTED_ERROR]))
 34350        else
 34351          fn.call(this, this[EMITTED_ERROR])
 34352      }
 34353      return ret
 34354    }
 34355  
 34356    get emittedEnd () {
 34357      return this[EMITTED_END]
 34358    }
 34359  
 34360    [MAYBE_EMIT_END] () {
 34361      if (!this[EMITTING_END] &&
 34362          !this[EMITTED_END] &&
 34363          !this[DESTROYED] &&
 34364          this.buffer.length === 0 &&
 34365          this[EOF]) {
 34366        this[EMITTING_END] = true
 34367        this.emit('end')
 34368        this.emit('prefinish')
 34369        this.emit('finish')
 34370        if (this[CLOSED])
 34371          this.emit('close')
 34372        this[EMITTING_END] = false
 34373      }
 34374    }
 34375  
 34376    emit (ev, data, ...extra) {
 34377      // error and close are only events allowed after calling destroy()
 34378      if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])
 34379        return
 34380      else if (ev === 'data') {
 34381        return !data ? false
 34382          : this[ASYNC] ? defer(() => this[EMITDATA](data))
 34383          : this[EMITDATA](data)
 34384      } else if (ev === 'end') {
 34385        return this[EMITEND]()
 34386      } else if (ev === 'close') {
 34387        this[CLOSED] = true
 34388        // don't emit close before 'end' and 'finish'
 34389        if (!this[EMITTED_END] && !this[DESTROYED])
 34390          return
 34391        const ret = super.emit('close')
 34392        this.removeAllListeners('close')
 34393        return ret
 34394      } else if (ev === 'error') {
 34395        this[EMITTED_ERROR] = data
 34396        const ret = super.emit('error', data)
 34397        this[MAYBE_EMIT_END]()
 34398        return ret
 34399      } else if (ev === 'resume') {
 34400        const ret = super.emit('resume')
 34401        this[MAYBE_EMIT_END]()
 34402        return ret
 34403      } else if (ev === 'finish' || ev === 'prefinish') {
 34404        const ret = super.emit(ev)
 34405        this.removeAllListeners(ev)
 34406        return ret
 34407      }
 34408  
 34409      // Some other unknown event
 34410      const ret = super.emit(ev, data, ...extra)
 34411      this[MAYBE_EMIT_END]()
 34412      return ret
 34413    }
 34414  
 34415    [EMITDATA] (data) {
 34416      for (const p of this.pipes) {
 34417        if (p.dest.write(data) === false)
 34418          this.pause()
 34419      }
 34420      const ret = super.emit('data', data)
 34421      this[MAYBE_EMIT_END]()
 34422      return ret
 34423    }
 34424  
 34425    [EMITEND] () {
 34426      if (this[EMITTED_END])
 34427        return
 34428  
 34429      this[EMITTED_END] = true
 34430      this.readable = false
 34431      if (this[ASYNC])
 34432        defer(() => this[EMITEND2]())
 34433      else
 34434        this[EMITEND2]()
 34435    }
 34436  
 34437    [EMITEND2] () {
 34438      if (this[DECODER]) {
 34439        const data = this[DECODER].end()
 34440        if (data) {
 34441          for (const p of this.pipes) {
 34442            p.dest.write(data)
 34443          }
 34444          super.emit('data', data)
 34445        }
 34446      }
 34447  
 34448      for (const p of this.pipes) {
 34449        p.end()
 34450      }
 34451      const ret = super.emit('end')
 34452      this.removeAllListeners('end')
 34453      return ret
 34454    }
 34455  
 34456    // const all = await stream.collect()
 34457    collect () {
 34458      const buf = []
 34459      if (!this[OBJECTMODE])
 34460        buf.dataLength = 0
 34461      // set the promise first, in case an error is raised
 34462      // by triggering the flow here.
 34463      const p = this.promise()
 34464      this.on('data', c => {
 34465        buf.push(c)
 34466        if (!this[OBJECTMODE])
 34467          buf.dataLength += c.length
 34468      })
 34469      return p.then(() => buf)
 34470    }
 34471  
 34472    // const data = await stream.concat()
 34473    concat () {
 34474      return this[OBJECTMODE]
 34475        ? Promise.reject(new Error('cannot concat in objectMode'))
 34476        : this.collect().then(buf =>
 34477            this[OBJECTMODE]
 34478              ? Promise.reject(new Error('cannot concat in objectMode'))
 34479              : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))
 34480    }
 34481  
 34482    // stream.promise().then(() => done, er => emitted error)
 34483    promise () {
 34484      return new Promise((resolve, reject) => {
 34485        this.on(DESTROYED, () => reject(new Error('stream destroyed')))
 34486        this.on('error', er => reject(er))
 34487        this.on('end', () => resolve())
 34488      })
 34489    }
 34490  
 34491    // for await (let chunk of stream)
 34492    [ASYNCITERATOR] () {
 34493      const next = () => {
 34494        const res = this.read()
 34495        if (res !== null)
 34496          return Promise.resolve({ done: false, value: res })
 34497  
 34498        if (this[EOF])
 34499          return Promise.resolve({ done: true })
 34500  
 34501        let resolve = null
 34502        let reject = null
 34503        const onerr = er => {
 34504          this.removeListener('data', ondata)
 34505          this.removeListener('end', onend)
 34506          reject(er)
 34507        }
 34508        const ondata = value => {
 34509          this.removeListener('error', onerr)
 34510          this.removeListener('end', onend)
 34511          this.pause()
 34512          resolve({ value: value, done: !!this[EOF] })
 34513        }
 34514        const onend = () => {
 34515          this.removeListener('error', onerr)
 34516          this.removeListener('data', ondata)
 34517          resolve({ done: true })
 34518        }
 34519        const ondestroy = () => onerr(new Error('stream destroyed'))
 34520        return new Promise((res, rej) => {
 34521          reject = rej
 34522          resolve = res
 34523          this.once(DESTROYED, ondestroy)
 34524          this.once('error', onerr)
 34525          this.once('end', onend)
 34526          this.once('data', ondata)
 34527        })
 34528      }
 34529  
 34530      return { next }
 34531    }
 34532  
 34533    // for (let chunk of stream)
 34534    [ITERATOR] () {
 34535      const next = () => {
 34536        const value = this.read()
 34537        const done = value === null
 34538        return { value, done }
 34539      }
 34540      return { next }
 34541    }
 34542  
 34543    destroy (er) {
 34544      if (this[DESTROYED]) {
 34545        if (er)
 34546          this.emit('error', er)
 34547        else
 34548          this.emit(DESTROYED)
 34549        return this
 34550      }
 34551  
 34552      this[DESTROYED] = true
 34553  
 34554      // throw away all buffered data, it's never coming out
 34555      this.buffer.length = 0
 34556      this[BUFFERLENGTH] = 0
 34557  
 34558      if (typeof this.close === 'function' && !this[CLOSED])
 34559        this.close()
 34560  
 34561      if (er)
 34562        this.emit('error', er)
 34563      else // if no error to emit, still reject pending promises
 34564        this.emit(DESTROYED)
 34565  
 34566      return this
 34567    }
 34568  
 34569    static isStream (s) {
 34570      return !!s && (s instanceof Minipass || s instanceof Stream ||
 34571        s instanceof EE && (
 34572          typeof s.pipe === 'function' || // readable
 34573          (typeof s.write === 'function' && typeof s.end === 'function') // writable
 34574        ))
 34575    }
 34576  }
 34577  
 34578  
 34579  /***/ }),
 34580  
 34581  /***/ 80900:
 34582  /***/ ((module) => {
 34583  
 34584  /**
 34585   * Helpers.
 34586   */
 34587  
 34588  var s = 1000;
 34589  var m = s * 60;
 34590  var h = m * 60;
 34591  var d = h * 24;
 34592  var w = d * 7;
 34593  var y = d * 365.25;
 34594  
 34595  /**
 34596   * Parse or format the given `val`.
 34597   *
 34598   * Options:
 34599   *
 34600   *  - `long` verbose formatting [false]
 34601   *
 34602   * @param {String|Number} val
 34603   * @param {Object} [options]
 34604   * @throws {Error} throw an error if val is not a non-empty string or a number
 34605   * @return {String|Number}
 34606   * @api public
 34607   */
 34608  
 34609  module.exports = function(val, options) {
 34610    options = options || {};
 34611    var type = typeof val;
 34612    if (type === 'string' && val.length > 0) {
 34613      return parse(val);
 34614    } else if (type === 'number' && isFinite(val)) {
 34615      return options.long ? fmtLong(val) : fmtShort(val);
 34616    }
 34617    throw new Error(
 34618      'val is not a non-empty string or a valid number. val=' +
 34619        JSON.stringify(val)
 34620    );
 34621  };
 34622  
 34623  /**
 34624   * Parse the given `str` and return milliseconds.
 34625   *
 34626   * @param {String} str
 34627   * @return {Number}
 34628   * @api private
 34629   */
 34630  
 34631  function parse(str) {
 34632    str = String(str);
 34633    if (str.length > 100) {
 34634      return;
 34635    }
 34636    var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
 34637      str
 34638    );
 34639    if (!match) {
 34640      return;
 34641    }
 34642    var n = parseFloat(match[1]);
 34643    var type = (match[2] || 'ms').toLowerCase();
 34644    switch (type) {
 34645      case 'years':
 34646      case 'year':
 34647      case 'yrs':
 34648      case 'yr':
 34649      case 'y':
 34650        return n * y;
 34651      case 'weeks':
 34652      case 'week':
 34653      case 'w':
 34654        return n * w;
 34655      case 'days':
 34656      case 'day':
 34657      case 'd':
 34658        return n * d;
 34659      case 'hours':
 34660      case 'hour':
 34661      case 'hrs':
 34662      case 'hr':
 34663      case 'h':
 34664        return n * h;
 34665      case 'minutes':
 34666      case 'minute':
 34667      case 'mins':
 34668      case 'min':
 34669      case 'm':
 34670        return n * m;
 34671      case 'seconds':
 34672      case 'second':
 34673      case 'secs':
 34674      case 'sec':
 34675      case 's':
 34676        return n * s;
 34677      case 'milliseconds':
 34678      case 'millisecond':
 34679      case 'msecs':
 34680      case 'msec':
 34681      case 'ms':
 34682        return n;
 34683      default:
 34684        return undefined;
 34685    }
 34686  }
 34687  
 34688  /**
 34689   * Short format for `ms`.
 34690   *
 34691   * @param {Number} ms
 34692   * @return {String}
 34693   * @api private
 34694   */
 34695  
 34696  function fmtShort(ms) {
 34697    var msAbs = Math.abs(ms);
 34698    if (msAbs >= d) {
 34699      return Math.round(ms / d) + 'd';
 34700    }
 34701    if (msAbs >= h) {
 34702      return Math.round(ms / h) + 'h';
 34703    }
 34704    if (msAbs >= m) {
 34705      return Math.round(ms / m) + 'm';
 34706    }
 34707    if (msAbs >= s) {
 34708      return Math.round(ms / s) + 's';
 34709    }
 34710    return ms + 'ms';
 34711  }
 34712  
 34713  /**
 34714   * Long format for `ms`.
 34715   *
 34716   * @param {Number} ms
 34717   * @return {String}
 34718   * @api private
 34719   */
 34720  
 34721  function fmtLong(ms) {
 34722    var msAbs = Math.abs(ms);
 34723    if (msAbs >= d) {
 34724      return plural(ms, msAbs, d, 'day');
 34725    }
 34726    if (msAbs >= h) {
 34727      return plural(ms, msAbs, h, 'hour');
 34728    }
 34729    if (msAbs >= m) {
 34730      return plural(ms, msAbs, m, 'minute');
 34731    }
 34732    if (msAbs >= s) {
 34733      return plural(ms, msAbs, s, 'second');
 34734    }
 34735    return ms + ' ms';
 34736  }
 34737  
 34738  /**
 34739   * Pluralization helper.
 34740   */
 34741  
 34742  function plural(ms, msAbs, n, name) {
 34743    var isPlural = msAbs >= n * 1.5;
 34744    return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
 34745  }
 34746  
 34747  
 34748  /***/ }),
 34749  
 34750  /***/ 95385:
 34751  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 34752  
 34753  "use strict";
 34754  /*!
 34755   * negotiator
 34756   * Copyright(c) 2012 Federico Romero
 34757   * Copyright(c) 2012-2014 Isaac Z. Schlueter
 34758   * Copyright(c) 2015 Douglas Christopher Wilson
 34759   * MIT Licensed
 34760   */
 34761  
 34762  
 34763  
 34764  var preferredCharsets = __nccwpck_require__(99296)
 34765  var preferredEncodings = __nccwpck_require__(25297)
 34766  var preferredLanguages = __nccwpck_require__(19722)
 34767  var preferredMediaTypes = __nccwpck_require__(62563)
 34768  
 34769  /**
 34770   * Module exports.
 34771   * @public
 34772   */
 34773  
 34774  module.exports = Negotiator;
 34775  module.exports.Negotiator = Negotiator;
 34776  
 34777  /**
 34778   * Create a Negotiator instance from a request.
 34779   * @param {object} request
 34780   * @public
 34781   */
 34782  
 34783  function Negotiator(request) {
 34784    if (!(this instanceof Negotiator)) {
 34785      return new Negotiator(request);
 34786    }
 34787  
 34788    this.request = request;
 34789  }
 34790  
 34791  Negotiator.prototype.charset = function charset(available) {
 34792    var set = this.charsets(available);
 34793    return set && set[0];
 34794  };
 34795  
 34796  Negotiator.prototype.charsets = function charsets(available) {
 34797    return preferredCharsets(this.request.headers['accept-charset'], available);
 34798  };
 34799  
 34800  Negotiator.prototype.encoding = function encoding(available) {
 34801    var set = this.encodings(available);
 34802    return set && set[0];
 34803  };
 34804  
 34805  Negotiator.prototype.encodings = function encodings(available) {
 34806    return preferredEncodings(this.request.headers['accept-encoding'], available);
 34807  };
 34808  
 34809  Negotiator.prototype.language = function language(available) {
 34810    var set = this.languages(available);
 34811    return set && set[0];
 34812  };
 34813  
 34814  Negotiator.prototype.languages = function languages(available) {
 34815    return preferredLanguages(this.request.headers['accept-language'], available);
 34816  };
 34817  
 34818  Negotiator.prototype.mediaType = function mediaType(available) {
 34819    var set = this.mediaTypes(available);
 34820    return set && set[0];
 34821  };
 34822  
 34823  Negotiator.prototype.mediaTypes = function mediaTypes(available) {
 34824    return preferredMediaTypes(this.request.headers.accept, available);
 34825  };
 34826  
 34827  // Backwards compatibility
 34828  Negotiator.prototype.preferredCharset = Negotiator.prototype.charset;
 34829  Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets;
 34830  Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding;
 34831  Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings;
 34832  Negotiator.prototype.preferredLanguage = Negotiator.prototype.language;
 34833  Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages;
 34834  Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;
 34835  Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;
 34836  
 34837  
 34838  /***/ }),
 34839  
 34840  /***/ 99296:
 34841  /***/ ((module) => {
 34842  
 34843  "use strict";
 34844  /**
 34845   * negotiator
 34846   * Copyright(c) 2012 Isaac Z. Schlueter
 34847   * Copyright(c) 2014 Federico Romero
 34848   * Copyright(c) 2014-2015 Douglas Christopher Wilson
 34849   * MIT Licensed
 34850   */
 34851  
 34852  
 34853  
 34854  /**
 34855   * Module exports.
 34856   * @public
 34857   */
 34858  
 34859  module.exports = preferredCharsets;
 34860  module.exports.preferredCharsets = preferredCharsets;
 34861  
 34862  /**
 34863   * Module variables.
 34864   * @private
 34865   */
 34866  
 34867  var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/;
 34868  
 34869  /**
 34870   * Parse the Accept-Charset header.
 34871   * @private
 34872   */
 34873  
 34874  function parseAcceptCharset(accept) {
 34875    var accepts = accept.split(',');
 34876  
 34877    for (var i = 0, j = 0; i < accepts.length; i++) {
 34878      var charset = parseCharset(accepts[i].trim(), i);
 34879  
 34880      if (charset) {
 34881        accepts[j++] = charset;
 34882      }
 34883    }
 34884  
 34885    // trim accepts
 34886    accepts.length = j;
 34887  
 34888    return accepts;
 34889  }
 34890  
 34891  /**
 34892   * Parse a charset from the Accept-Charset header.
 34893   * @private
 34894   */
 34895  
 34896  function parseCharset(str, i) {
 34897    var match = simpleCharsetRegExp.exec(str);
 34898    if (!match) return null;
 34899  
 34900    var charset = match[1];
 34901    var q = 1;
 34902    if (match[2]) {
 34903      var params = match[2].split(';')
 34904      for (var j = 0; j < params.length; j++) {
 34905        var p = params[j].trim().split('=');
 34906        if (p[0] === 'q') {
 34907          q = parseFloat(p[1]);
 34908          break;
 34909        }
 34910      }
 34911    }
 34912  
 34913    return {
 34914      charset: charset,
 34915      q: q,
 34916      i: i
 34917    };
 34918  }
 34919  
 34920  /**
 34921   * Get the priority of a charset.
 34922   * @private
 34923   */
 34924  
 34925  function getCharsetPriority(charset, accepted, index) {
 34926    var priority = {o: -1, q: 0, s: 0};
 34927  
 34928    for (var i = 0; i < accepted.length; i++) {
 34929      var spec = specify(charset, accepted[i], index);
 34930  
 34931      if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
 34932        priority = spec;
 34933      }
 34934    }
 34935  
 34936    return priority;
 34937  }
 34938  
 34939  /**
 34940   * Get the specificity of the charset.
 34941   * @private
 34942   */
 34943  
 34944  function specify(charset, spec, index) {
 34945    var s = 0;
 34946    if(spec.charset.toLowerCase() === charset.toLowerCase()){
 34947      s |= 1;
 34948    } else if (spec.charset !== '*' ) {
 34949      return null
 34950    }
 34951  
 34952    return {
 34953      i: index,
 34954      o: spec.i,
 34955      q: spec.q,
 34956      s: s
 34957    }
 34958  }
 34959  
 34960  /**
 34961   * Get the preferred charsets from an Accept-Charset header.
 34962   * @public
 34963   */
 34964  
 34965  function preferredCharsets(accept, provided) {
 34966    // RFC 2616 sec 14.2: no header = *
 34967    var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');
 34968  
 34969    if (!provided) {
 34970      // sorted list of all charsets
 34971      return accepts
 34972        .filter(isQuality)
 34973        .sort(compareSpecs)
 34974        .map(getFullCharset);
 34975    }
 34976  
 34977    var priorities = provided.map(function getPriority(type, index) {
 34978      return getCharsetPriority(type, accepts, index);
 34979    });
 34980  
 34981    // sorted list of accepted charsets
 34982    return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {
 34983      return provided[priorities.indexOf(priority)];
 34984    });
 34985  }
 34986  
 34987  /**
 34988   * Compare two specs.
 34989   * @private
 34990   */
 34991  
 34992  function compareSpecs(a, b) {
 34993    return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
 34994  }
 34995  
 34996  /**
 34997   * Get full charset string.
 34998   * @private
 34999   */
 35000  
 35001  function getFullCharset(spec) {
 35002    return spec.charset;
 35003  }
 35004  
 35005  /**
 35006   * Check if a spec has any quality.
 35007   * @private
 35008   */
 35009  
 35010  function isQuality(spec) {
 35011    return spec.q > 0;
 35012  }
 35013  
 35014  
 35015  /***/ }),
 35016  
 35017  /***/ 25297:
 35018  /***/ ((module) => {
 35019  
 35020  "use strict";
 35021  /**
 35022   * negotiator
 35023   * Copyright(c) 2012 Isaac Z. Schlueter
 35024   * Copyright(c) 2014 Federico Romero
 35025   * Copyright(c) 2014-2015 Douglas Christopher Wilson
 35026   * MIT Licensed
 35027   */
 35028  
 35029  
 35030  
 35031  /**
 35032   * Module exports.
 35033   * @public
 35034   */
 35035  
 35036  module.exports = preferredEncodings;
 35037  module.exports.preferredEncodings = preferredEncodings;
 35038  
 35039  /**
 35040   * Module variables.
 35041   * @private
 35042   */
 35043  
 35044  var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/;
 35045  
 35046  /**
 35047   * Parse the Accept-Encoding header.
 35048   * @private
 35049   */
 35050  
 35051  function parseAcceptEncoding(accept) {
 35052    var accepts = accept.split(',');
 35053    var hasIdentity = false;
 35054    var minQuality = 1;
 35055  
 35056    for (var i = 0, j = 0; i < accepts.length; i++) {
 35057      var encoding = parseEncoding(accepts[i].trim(), i);
 35058  
 35059      if (encoding) {
 35060        accepts[j++] = encoding;
 35061        hasIdentity = hasIdentity || specify('identity', encoding);
 35062        minQuality = Math.min(minQuality, encoding.q || 1);
 35063      }
 35064    }
 35065  
 35066    if (!hasIdentity) {
 35067      /*
 35068       * If identity doesn't explicitly appear in the accept-encoding header,
 35069       * it's added to the list of acceptable encoding with the lowest q
 35070       */
 35071      accepts[j++] = {
 35072        encoding: 'identity',
 35073        q: minQuality,
 35074        i: i
 35075      };
 35076    }
 35077  
 35078    // trim accepts
 35079    accepts.length = j;
 35080  
 35081    return accepts;
 35082  }
 35083  
 35084  /**
 35085   * Parse an encoding from the Accept-Encoding header.
 35086   * @private
 35087   */
 35088  
 35089  function parseEncoding(str, i) {
 35090    var match = simpleEncodingRegExp.exec(str);
 35091    if (!match) return null;
 35092  
 35093    var encoding = match[1];
 35094    var q = 1;
 35095    if (match[2]) {
 35096      var params = match[2].split(';');
 35097      for (var j = 0; j < params.length; j++) {
 35098        var p = params[j].trim().split('=');
 35099        if (p[0] === 'q') {
 35100          q = parseFloat(p[1]);
 35101          break;
 35102        }
 35103      }
 35104    }
 35105  
 35106    return {
 35107      encoding: encoding,
 35108      q: q,
 35109      i: i
 35110    };
 35111  }
 35112  
 35113  /**
 35114   * Get the priority of an encoding.
 35115   * @private
 35116   */
 35117  
 35118  function getEncodingPriority(encoding, accepted, index) {
 35119    var priority = {o: -1, q: 0, s: 0};
 35120  
 35121    for (var i = 0; i < accepted.length; i++) {
 35122      var spec = specify(encoding, accepted[i], index);
 35123  
 35124      if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
 35125        priority = spec;
 35126      }
 35127    }
 35128  
 35129    return priority;
 35130  }
 35131  
 35132  /**
 35133   * Get the specificity of the encoding.
 35134   * @private
 35135   */
 35136  
 35137  function specify(encoding, spec, index) {
 35138    var s = 0;
 35139    if(spec.encoding.toLowerCase() === encoding.toLowerCase()){
 35140      s |= 1;
 35141    } else if (spec.encoding !== '*' ) {
 35142      return null
 35143    }
 35144  
 35145    return {
 35146      i: index,
 35147      o: spec.i,
 35148      q: spec.q,
 35149      s: s
 35150    }
 35151  };
 35152  
 35153  /**
 35154   * Get the preferred encodings from an Accept-Encoding header.
 35155   * @public
 35156   */
 35157  
 35158  function preferredEncodings(accept, provided) {
 35159    var accepts = parseAcceptEncoding(accept || '');
 35160  
 35161    if (!provided) {
 35162      // sorted list of all encodings
 35163      return accepts
 35164        .filter(isQuality)
 35165        .sort(compareSpecs)
 35166        .map(getFullEncoding);
 35167    }
 35168  
 35169    var priorities = provided.map(function getPriority(type, index) {
 35170      return getEncodingPriority(type, accepts, index);
 35171    });
 35172  
 35173    // sorted list of accepted encodings
 35174    return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) {
 35175      return provided[priorities.indexOf(priority)];
 35176    });
 35177  }
 35178  
 35179  /**
 35180   * Compare two specs.
 35181   * @private
 35182   */
 35183  
 35184  function compareSpecs(a, b) {
 35185    return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
 35186  }
 35187  
 35188  /**
 35189   * Get full encoding string.
 35190   * @private
 35191   */
 35192  
 35193  function getFullEncoding(spec) {
 35194    return spec.encoding;
 35195  }
 35196  
 35197  /**
 35198   * Check if a spec has any quality.
 35199   * @private
 35200   */
 35201  
 35202  function isQuality(spec) {
 35203    return spec.q > 0;
 35204  }
 35205  
 35206  
 35207  /***/ }),
 35208  
 35209  /***/ 19722:
 35210  /***/ ((module) => {
 35211  
 35212  "use strict";
 35213  /**
 35214   * negotiator
 35215   * Copyright(c) 2012 Isaac Z. Schlueter
 35216   * Copyright(c) 2014 Federico Romero
 35217   * Copyright(c) 2014-2015 Douglas Christopher Wilson
 35218   * MIT Licensed
 35219   */
 35220  
 35221  
 35222  
 35223  /**
 35224   * Module exports.
 35225   * @public
 35226   */
 35227  
 35228  module.exports = preferredLanguages;
 35229  module.exports.preferredLanguages = preferredLanguages;
 35230  
 35231  /**
 35232   * Module variables.
 35233   * @private
 35234   */
 35235  
 35236  var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/;
 35237  
 35238  /**
 35239   * Parse the Accept-Language header.
 35240   * @private
 35241   */
 35242  
 35243  function parseAcceptLanguage(accept) {
 35244    var accepts = accept.split(',');
 35245  
 35246    for (var i = 0, j = 0; i < accepts.length; i++) {
 35247      var language = parseLanguage(accepts[i].trim(), i);
 35248  
 35249      if (language) {
 35250        accepts[j++] = language;
 35251      }
 35252    }
 35253  
 35254    // trim accepts
 35255    accepts.length = j;
 35256  
 35257    return accepts;
 35258  }
 35259  
 35260  /**
 35261   * Parse a language from the Accept-Language header.
 35262   * @private
 35263   */
 35264  
 35265  function parseLanguage(str, i) {
 35266    var match = simpleLanguageRegExp.exec(str);
 35267    if (!match) return null;
 35268  
 35269    var prefix = match[1]
 35270    var suffix = match[2]
 35271    var full = prefix
 35272  
 35273    if (suffix) full += "-" + suffix;
 35274  
 35275    var q = 1;
 35276    if (match[3]) {
 35277      var params = match[3].split(';')
 35278      for (var j = 0; j < params.length; j++) {
 35279        var p = params[j].split('=');
 35280        if (p[0] === 'q') q = parseFloat(p[1]);
 35281      }
 35282    }
 35283  
 35284    return {
 35285      prefix: prefix,
 35286      suffix: suffix,
 35287      q: q,
 35288      i: i,
 35289      full: full
 35290    };
 35291  }
 35292  
 35293  /**
 35294   * Get the priority of a language.
 35295   * @private
 35296   */
 35297  
 35298  function getLanguagePriority(language, accepted, index) {
 35299    var priority = {o: -1, q: 0, s: 0};
 35300  
 35301    for (var i = 0; i < accepted.length; i++) {
 35302      var spec = specify(language, accepted[i], index);
 35303  
 35304      if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
 35305        priority = spec;
 35306      }
 35307    }
 35308  
 35309    return priority;
 35310  }
 35311  
 35312  /**
 35313   * Get the specificity of the language.
 35314   * @private
 35315   */
 35316  
 35317  function specify(language, spec, index) {
 35318    var p = parseLanguage(language)
 35319    if (!p) return null;
 35320    var s = 0;
 35321    if(spec.full.toLowerCase() === p.full.toLowerCase()){
 35322      s |= 4;
 35323    } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) {
 35324      s |= 2;
 35325    } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {
 35326      s |= 1;
 35327    } else if (spec.full !== '*' ) {
 35328      return null
 35329    }
 35330  
 35331    return {
 35332      i: index,
 35333      o: spec.i,
 35334      q: spec.q,
 35335      s: s
 35336    }
 35337  };
 35338  
 35339  /**
 35340   * Get the preferred languages from an Accept-Language header.
 35341   * @public
 35342   */
 35343  
 35344  function preferredLanguages(accept, provided) {
 35345    // RFC 2616 sec 14.4: no header = *
 35346    var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');
 35347  
 35348    if (!provided) {
 35349      // sorted list of all languages
 35350      return accepts
 35351        .filter(isQuality)
 35352        .sort(compareSpecs)
 35353        .map(getFullLanguage);
 35354    }
 35355  
 35356    var priorities = provided.map(function getPriority(type, index) {
 35357      return getLanguagePriority(type, accepts, index);
 35358    });
 35359  
 35360    // sorted list of accepted languages
 35361    return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {
 35362      return provided[priorities.indexOf(priority)];
 35363    });
 35364  }
 35365  
 35366  /**
 35367   * Compare two specs.
 35368   * @private
 35369   */
 35370  
 35371  function compareSpecs(a, b) {
 35372    return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
 35373  }
 35374  
 35375  /**
 35376   * Get full language string.
 35377   * @private
 35378   */
 35379  
 35380  function getFullLanguage(spec) {
 35381    return spec.full;
 35382  }
 35383  
 35384  /**
 35385   * Check if a spec has any quality.
 35386   * @private
 35387   */
 35388  
 35389  function isQuality(spec) {
 35390    return spec.q > 0;
 35391  }
 35392  
 35393  
 35394  /***/ }),
 35395  
 35396  /***/ 62563:
 35397  /***/ ((module) => {
 35398  
 35399  "use strict";
 35400  /**
 35401   * negotiator
 35402   * Copyright(c) 2012 Isaac Z. Schlueter
 35403   * Copyright(c) 2014 Federico Romero
 35404   * Copyright(c) 2014-2015 Douglas Christopher Wilson
 35405   * MIT Licensed
 35406   */
 35407  
 35408  
 35409  
 35410  /**
 35411   * Module exports.
 35412   * @public
 35413   */
 35414  
 35415  module.exports = preferredMediaTypes;
 35416  module.exports.preferredMediaTypes = preferredMediaTypes;
 35417  
 35418  /**
 35419   * Module variables.
 35420   * @private
 35421   */
 35422  
 35423  var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/;
 35424  
 35425  /**
 35426   * Parse the Accept header.
 35427   * @private
 35428   */
 35429  
 35430  function parseAccept(accept) {
 35431    var accepts = splitMediaTypes(accept);
 35432  
 35433    for (var i = 0, j = 0; i < accepts.length; i++) {
 35434      var mediaType = parseMediaType(accepts[i].trim(), i);
 35435  
 35436      if (mediaType) {
 35437        accepts[j++] = mediaType;
 35438      }
 35439    }
 35440  
 35441    // trim accepts
 35442    accepts.length = j;
 35443  
 35444    return accepts;
 35445  }
 35446  
 35447  /**
 35448   * Parse a media type from the Accept header.
 35449   * @private
 35450   */
 35451  
 35452  function parseMediaType(str, i) {
 35453    var match = simpleMediaTypeRegExp.exec(str);
 35454    if (!match) return null;
 35455  
 35456    var params = Object.create(null);
 35457    var q = 1;
 35458    var subtype = match[2];
 35459    var type = match[1];
 35460  
 35461    if (match[3]) {
 35462      var kvps = splitParameters(match[3]).map(splitKeyValuePair);
 35463  
 35464      for (var j = 0; j < kvps.length; j++) {
 35465        var pair = kvps[j];
 35466        var key = pair[0].toLowerCase();
 35467        var val = pair[1];
 35468  
 35469        // get the value, unwrapping quotes
 35470        var value = val && val[0] === '"' && val[val.length - 1] === '"'
 35471          ? val.substr(1, val.length - 2)
 35472          : val;
 35473  
 35474        if (key === 'q') {
 35475          q = parseFloat(value);
 35476          break;
 35477        }
 35478  
 35479        // store parameter
 35480        params[key] = value;
 35481      }
 35482    }
 35483  
 35484    return {
 35485      type: type,
 35486      subtype: subtype,
 35487      params: params,
 35488      q: q,
 35489      i: i
 35490    };
 35491  }
 35492  
 35493  /**
 35494   * Get the priority of a media type.
 35495   * @private
 35496   */
 35497  
 35498  function getMediaTypePriority(type, accepted, index) {
 35499    var priority = {o: -1, q: 0, s: 0};
 35500  
 35501    for (var i = 0; i < accepted.length; i++) {
 35502      var spec = specify(type, accepted[i], index);
 35503  
 35504      if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {
 35505        priority = spec;
 35506      }
 35507    }
 35508  
 35509    return priority;
 35510  }
 35511  
 35512  /**
 35513   * Get the specificity of the media type.
 35514   * @private
 35515   */
 35516  
 35517  function specify(type, spec, index) {
 35518    var p = parseMediaType(type);
 35519    var s = 0;
 35520  
 35521    if (!p) {
 35522      return null;
 35523    }
 35524  
 35525    if(spec.type.toLowerCase() == p.type.toLowerCase()) {
 35526      s |= 4
 35527    } else if(spec.type != '*') {
 35528      return null;
 35529    }
 35530  
 35531    if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {
 35532      s |= 2
 35533    } else if(spec.subtype != '*') {
 35534      return null;
 35535    }
 35536  
 35537    var keys = Object.keys(spec.params);
 35538    if (keys.length > 0) {
 35539      if (keys.every(function (k) {
 35540        return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase();
 35541      })) {
 35542        s |= 1
 35543      } else {
 35544        return null
 35545      }
 35546    }
 35547  
 35548    return {
 35549      i: index,
 35550      o: spec.i,
 35551      q: spec.q,
 35552      s: s,
 35553    }
 35554  }
 35555  
 35556  /**
 35557   * Get the preferred media types from an Accept header.
 35558   * @public
 35559   */
 35560  
 35561  function preferredMediaTypes(accept, provided) {
 35562    // RFC 2616 sec 14.2: no header = */*
 35563    var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');
 35564  
 35565    if (!provided) {
 35566      // sorted list of all types
 35567      return accepts
 35568        .filter(isQuality)
 35569        .sort(compareSpecs)
 35570        .map(getFullType);
 35571    }
 35572  
 35573    var priorities = provided.map(function getPriority(type, index) {
 35574      return getMediaTypePriority(type, accepts, index);
 35575    });
 35576  
 35577    // sorted list of accepted types
 35578    return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {
 35579      return provided[priorities.indexOf(priority)];
 35580    });
 35581  }
 35582  
 35583  /**
 35584   * Compare two specs.
 35585   * @private
 35586   */
 35587  
 35588  function compareSpecs(a, b) {
 35589    return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;
 35590  }
 35591  
 35592  /**
 35593   * Get full type string.
 35594   * @private
 35595   */
 35596  
 35597  function getFullType(spec) {
 35598    return spec.type + '/' + spec.subtype;
 35599  }
 35600  
 35601  /**
 35602   * Check if a spec has any quality.
 35603   * @private
 35604   */
 35605  
 35606  function isQuality(spec) {
 35607    return spec.q > 0;
 35608  }
 35609  
 35610  /**
 35611   * Count the number of quotes in a string.
 35612   * @private
 35613   */
 35614  
 35615  function quoteCount(string) {
 35616    var count = 0;
 35617    var index = 0;
 35618  
 35619    while ((index = string.indexOf('"', index)) !== -1) {
 35620      count++;
 35621      index++;
 35622    }
 35623  
 35624    return count;
 35625  }
 35626  
 35627  /**
 35628   * Split a key value pair.
 35629   * @private
 35630   */
 35631  
 35632  function splitKeyValuePair(str) {
 35633    var index = str.indexOf('=');
 35634    var key;
 35635    var val;
 35636  
 35637    if (index === -1) {
 35638      key = str;
 35639    } else {
 35640      key = str.substr(0, index);
 35641      val = str.substr(index + 1);
 35642    }
 35643  
 35644    return [key, val];
 35645  }
 35646  
 35647  /**
 35648   * Split an Accept header into media types.
 35649   * @private
 35650   */
 35651  
 35652  function splitMediaTypes(accept) {
 35653    var accepts = accept.split(',');
 35654  
 35655    for (var i = 1, j = 0; i < accepts.length; i++) {
 35656      if (quoteCount(accepts[j]) % 2 == 0) {
 35657        accepts[++j] = accepts[i];
 35658      } else {
 35659        accepts[j] += ',' + accepts[i];
 35660      }
 35661    }
 35662  
 35663    // trim accepts
 35664    accepts.length = j + 1;
 35665  
 35666    return accepts;
 35667  }
 35668  
 35669  /**
 35670   * Split a string of parameters.
 35671   * @private
 35672   */
 35673  
 35674  function splitParameters(str) {
 35675    var parameters = str.split(';');
 35676  
 35677    for (var i = 1, j = 0; i < parameters.length; i++) {
 35678      if (quoteCount(parameters[j]) % 2 == 0) {
 35679        parameters[++j] = parameters[i];
 35680      } else {
 35681        parameters[j] += ';' + parameters[i];
 35682      }
 35683    }
 35684  
 35685    // trim parameters
 35686    parameters.length = j + 1;
 35687  
 35688    for (var i = 0; i < parameters.length; i++) {
 35689      parameters[i] = parameters[i].trim();
 35690    }
 35691  
 35692    return parameters;
 35693  }
 35694  
 35695  
 35696  /***/ }),
 35697  
 35698  /***/ 1223:
 35699  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 35700  
 35701  var wrappy = __nccwpck_require__(62940)
 35702  module.exports = wrappy(once)
 35703  module.exports.strict = wrappy(onceStrict)
 35704  
 35705  once.proto = once(function () {
 35706    Object.defineProperty(Function.prototype, 'once', {
 35707      value: function () {
 35708        return once(this)
 35709      },
 35710      configurable: true
 35711    })
 35712  
 35713    Object.defineProperty(Function.prototype, 'onceStrict', {
 35714      value: function () {
 35715        return onceStrict(this)
 35716      },
 35717      configurable: true
 35718    })
 35719  })
 35720  
 35721  function once (fn) {
 35722    var f = function () {
 35723      if (f.called) return f.value
 35724      f.called = true
 35725      return f.value = fn.apply(this, arguments)
 35726    }
 35727    f.called = false
 35728    return f
 35729  }
 35730  
 35731  function onceStrict (fn) {
 35732    var f = function () {
 35733      if (f.called)
 35734        throw new Error(f.onceError)
 35735      f.called = true
 35736      return f.value = fn.apply(this, arguments)
 35737    }
 35738    var name = fn.name || 'Function wrapped with `once`'
 35739    f.onceError = name + " shouldn't be called more than once"
 35740    f.called = false
 35741    return f
 35742  }
 35743  
 35744  
 35745  /***/ }),
 35746  
 35747  /***/ 91855:
 35748  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 35749  
 35750  "use strict";
 35751  
 35752  const AggregateError = __nccwpck_require__(61231);
 35753  
 35754  module.exports = async (
 35755  	iterable,
 35756  	mapper,
 35757  	{
 35758  		concurrency = Infinity,
 35759  		stopOnError = true
 35760  	} = {}
 35761  ) => {
 35762  	return new Promise((resolve, reject) => {
 35763  		if (typeof mapper !== 'function') {
 35764  			throw new TypeError('Mapper function is required');
 35765  		}
 35766  
 35767  		if (!((Number.isSafeInteger(concurrency) || concurrency === Infinity) && concurrency >= 1)) {
 35768  			throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${concurrency}\` (${typeof concurrency})`);
 35769  		}
 35770  
 35771  		const result = [];
 35772  		const errors = [];
 35773  		const iterator = iterable[Symbol.iterator]();
 35774  		let isRejected = false;
 35775  		let isIterableDone = false;
 35776  		let resolvingCount = 0;
 35777  		let currentIndex = 0;
 35778  
 35779  		const next = () => {
 35780  			if (isRejected) {
 35781  				return;
 35782  			}
 35783  
 35784  			const nextItem = iterator.next();
 35785  			const index = currentIndex;
 35786  			currentIndex++;
 35787  
 35788  			if (nextItem.done) {
 35789  				isIterableDone = true;
 35790  
 35791  				if (resolvingCount === 0) {
 35792  					if (!stopOnError && errors.length !== 0) {
 35793  						reject(new AggregateError(errors));
 35794  					} else {
 35795  						resolve(result);
 35796  					}
 35797  				}
 35798  
 35799  				return;
 35800  			}
 35801  
 35802  			resolvingCount++;
 35803  
 35804  			(async () => {
 35805  				try {
 35806  					const element = await nextItem.value;
 35807  					result[index] = await mapper(element, index);
 35808  					resolvingCount--;
 35809  					next();
 35810  				} catch (error) {
 35811  					if (stopOnError) {
 35812  						isRejected = true;
 35813  						reject(error);
 35814  					} else {
 35815  						errors.push(error);
 35816  						resolvingCount--;
 35817  						next();
 35818  					}
 35819  				}
 35820  			})();
 35821  		};
 35822  
 35823  		for (let i = 0; i < concurrency; i++) {
 35824  			next();
 35825  
 35826  			if (isIterableDone) {
 35827  				break;
 35828  			}
 35829  		}
 35830  	});
 35831  };
 35832  
 35833  
 35834  /***/ }),
 35835  
 35836  /***/ 56528:
 35837  /***/ ((module) => {
 35838  
 35839  const META = Symbol('proc-log.meta')
 35840  module.exports = {
 35841    META: META,
 35842    output: {
 35843      LEVELS: [
 35844        'standard',
 35845        'error',
 35846        'buffer',
 35847        'flush',
 35848      ],
 35849      KEYS: {
 35850        standard: 'standard',
 35851        error: 'error',
 35852        buffer: 'buffer',
 35853        flush: 'flush',
 35854      },
 35855      standard: function (...args) {
 35856        return process.emit('output', 'standard', ...args)
 35857      },
 35858      error: function (...args) {
 35859        return process.emit('output', 'error', ...args)
 35860      },
 35861      buffer: function (...args) {
 35862        return process.emit('output', 'buffer', ...args)
 35863      },
 35864      flush: function (...args) {
 35865        return process.emit('output', 'flush', ...args)
 35866      },
 35867    },
 35868    log: {
 35869      LEVELS: [
 35870        'notice',
 35871        'error',
 35872        'warn',
 35873        'info',
 35874        'verbose',
 35875        'http',
 35876        'silly',
 35877        'timing',
 35878        'pause',
 35879        'resume',
 35880      ],
 35881      KEYS: {
 35882        notice: 'notice',
 35883        error: 'error',
 35884        warn: 'warn',
 35885        info: 'info',
 35886        verbose: 'verbose',
 35887        http: 'http',
 35888        silly: 'silly',
 35889        timing: 'timing',
 35890        pause: 'pause',
 35891        resume: 'resume',
 35892      },
 35893      error: function (...args) {
 35894        return process.emit('log', 'error', ...args)
 35895      },
 35896      notice: function (...args) {
 35897        return process.emit('log', 'notice', ...args)
 35898      },
 35899      warn: function (...args) {
 35900        return process.emit('log', 'warn', ...args)
 35901      },
 35902      info: function (...args) {
 35903        return process.emit('log', 'info', ...args)
 35904      },
 35905      verbose: function (...args) {
 35906        return process.emit('log', 'verbose', ...args)
 35907      },
 35908      http: function (...args) {
 35909        return process.emit('log', 'http', ...args)
 35910      },
 35911      silly: function (...args) {
 35912        return process.emit('log', 'silly', ...args)
 35913      },
 35914      timing: function (...args) {
 35915        return process.emit('log', 'timing', ...args)
 35916      },
 35917      pause: function () {
 35918        return process.emit('log', 'pause')
 35919      },
 35920      resume: function () {
 35921        return process.emit('log', 'resume')
 35922      },
 35923    },
 35924    time: {
 35925      LEVELS: [
 35926        'start',
 35927        'end',
 35928      ],
 35929      KEYS: {
 35930        start: 'start',
 35931        end: 'end',
 35932      },
 35933      start: function (name, fn) {
 35934        process.emit('time', 'start', name)
 35935        function end () {
 35936          return process.emit('time', 'end', name)
 35937        }
 35938        if (typeof fn === 'function') {
 35939          const res = fn()
 35940          if (res && res.finally) {
 35941            return res.finally(end)
 35942          }
 35943          end()
 35944          return res
 35945        }
 35946        return end
 35947      },
 35948      end: function (name) {
 35949        return process.emit('time', 'end', name)
 35950      },
 35951    },
 35952    input: {
 35953      LEVELS: [
 35954        'start',
 35955        'end',
 35956        'read',
 35957      ],
 35958      KEYS: {
 35959        start: 'start',
 35960        end: 'end',
 35961        read: 'read',
 35962      },
 35963      start: function (fn) {
 35964        process.emit('input', 'start')
 35965        function end () {
 35966          return process.emit('input', 'end')
 35967        }
 35968        if (typeof fn === 'function') {
 35969          const res = fn()
 35970          if (res && res.finally) {
 35971            return res.finally(end)
 35972          }
 35973          end()
 35974          return res
 35975        }
 35976        return end
 35977      },
 35978      end: function () {
 35979        return process.emit('input', 'end')
 35980      },
 35981      read: function (...args) {
 35982        let resolve, reject
 35983        const promise = new Promise((_resolve, _reject) => {
 35984          resolve = _resolve
 35985          reject = _reject
 35986        })
 35987        process.emit('input', 'read', resolve, reject, ...args)
 35988        return promise
 35989      },
 35990    },
 35991  }
 35992  
 35993  
 35994  /***/ }),
 35995  
 35996  /***/ 54742:
 35997  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 35998  
 35999  "use strict";
 36000  
 36001  
 36002  var errcode = __nccwpck_require__(52997);
 36003  var retry = __nccwpck_require__(71604);
 36004  
 36005  var hasOwn = Object.prototype.hasOwnProperty;
 36006  
 36007  function isRetryError(err) {
 36008      return err && err.code === 'EPROMISERETRY' && hasOwn.call(err, 'retried');
 36009  }
 36010  
 36011  function promiseRetry(fn, options) {
 36012      var temp;
 36013      var operation;
 36014  
 36015      if (typeof fn === 'object' && typeof options === 'function') {
 36016          // Swap options and fn when using alternate signature (options, fn)
 36017          temp = options;
 36018          options = fn;
 36019          fn = temp;
 36020      }
 36021  
 36022      operation = retry.operation(options);
 36023  
 36024      return new Promise(function (resolve, reject) {
 36025          operation.attempt(function (number) {
 36026              Promise.resolve()
 36027              .then(function () {
 36028                  return fn(function (err) {
 36029                      if (isRetryError(err)) {
 36030                          err = err.retried;
 36031                      }
 36032  
 36033                      throw errcode(new Error('Retrying'), 'EPROMISERETRY', { retried: err });
 36034                  }, number);
 36035              })
 36036              .then(resolve, function (err) {
 36037                  if (isRetryError(err)) {
 36038                      err = err.retried;
 36039  
 36040                      if (operation.retry(err || new Error())) {
 36041                          return;
 36042                      }
 36043                  }
 36044  
 36045                  reject(err);
 36046              });
 36047          });
 36048      });
 36049  }
 36050  
 36051  module.exports = promiseRetry;
 36052  
 36053  
 36054  /***/ }),
 36055  
 36056  /***/ 71604:
 36057  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 36058  
 36059  module.exports = __nccwpck_require__(56244);
 36060  
 36061  /***/ }),
 36062  
 36063  /***/ 56244:
 36064  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 36065  
 36066  var RetryOperation = __nccwpck_require__(45369);
 36067  
 36068  exports.operation = function(options) {
 36069    var timeouts = exports.timeouts(options);
 36070    return new RetryOperation(timeouts, {
 36071        forever: options && options.forever,
 36072        unref: options && options.unref,
 36073        maxRetryTime: options && options.maxRetryTime
 36074    });
 36075  };
 36076  
 36077  exports.timeouts = function(options) {
 36078    if (options instanceof Array) {
 36079      return [].concat(options);
 36080    }
 36081  
 36082    var opts = {
 36083      retries: 10,
 36084      factor: 2,
 36085      minTimeout: 1 * 1000,
 36086      maxTimeout: Infinity,
 36087      randomize: false
 36088    };
 36089    for (var key in options) {
 36090      opts[key] = options[key];
 36091    }
 36092  
 36093    if (opts.minTimeout > opts.maxTimeout) {
 36094      throw new Error('minTimeout is greater than maxTimeout');
 36095    }
 36096  
 36097    var timeouts = [];
 36098    for (var i = 0; i < opts.retries; i++) {
 36099      timeouts.push(this.createTimeout(i, opts));
 36100    }
 36101  
 36102    if (options && options.forever && !timeouts.length) {
 36103      timeouts.push(this.createTimeout(i, opts));
 36104    }
 36105  
 36106    // sort the array numerically ascending
 36107    timeouts.sort(function(a,b) {
 36108      return a - b;
 36109    });
 36110  
 36111    return timeouts;
 36112  };
 36113  
 36114  exports.createTimeout = function(attempt, opts) {
 36115    var random = (opts.randomize)
 36116      ? (Math.random() + 1)
 36117      : 1;
 36118  
 36119    var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));
 36120    timeout = Math.min(timeout, opts.maxTimeout);
 36121  
 36122    return timeout;
 36123  };
 36124  
 36125  exports.wrap = function(obj, options, methods) {
 36126    if (options instanceof Array) {
 36127      methods = options;
 36128      options = null;
 36129    }
 36130  
 36131    if (!methods) {
 36132      methods = [];
 36133      for (var key in obj) {
 36134        if (typeof obj[key] === 'function') {
 36135          methods.push(key);
 36136        }
 36137      }
 36138    }
 36139  
 36140    for (var i = 0; i < methods.length; i++) {
 36141      var method   = methods[i];
 36142      var original = obj[method];
 36143  
 36144      obj[method] = function retryWrapper(original) {
 36145        var op       = exports.operation(options);
 36146        var args     = Array.prototype.slice.call(arguments, 1);
 36147        var callback = args.pop();
 36148  
 36149        args.push(function(err) {
 36150          if (op.retry(err)) {
 36151            return;
 36152          }
 36153          if (err) {
 36154            arguments[0] = op.mainError();
 36155          }
 36156          callback.apply(this, arguments);
 36157        });
 36158  
 36159        op.attempt(function() {
 36160          original.apply(obj, args);
 36161        });
 36162      }.bind(obj, original);
 36163      obj[method].options = options;
 36164    }
 36165  };
 36166  
 36167  
 36168  /***/ }),
 36169  
 36170  /***/ 45369:
 36171  /***/ ((module) => {
 36172  
 36173  function RetryOperation(timeouts, options) {
 36174    // Compatibility for the old (timeouts, retryForever) signature
 36175    if (typeof options === 'boolean') {
 36176      options = { forever: options };
 36177    }
 36178  
 36179    this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));
 36180    this._timeouts = timeouts;
 36181    this._options = options || {};
 36182    this._maxRetryTime = options && options.maxRetryTime || Infinity;
 36183    this._fn = null;
 36184    this._errors = [];
 36185    this._attempts = 1;
 36186    this._operationTimeout = null;
 36187    this._operationTimeoutCb = null;
 36188    this._timeout = null;
 36189    this._operationStart = null;
 36190  
 36191    if (this._options.forever) {
 36192      this._cachedTimeouts = this._timeouts.slice(0);
 36193    }
 36194  }
 36195  module.exports = RetryOperation;
 36196  
 36197  RetryOperation.prototype.reset = function() {
 36198    this._attempts = 1;
 36199    this._timeouts = this._originalTimeouts;
 36200  }
 36201  
 36202  RetryOperation.prototype.stop = function() {
 36203    if (this._timeout) {
 36204      clearTimeout(this._timeout);
 36205    }
 36206  
 36207    this._timeouts       = [];
 36208    this._cachedTimeouts = null;
 36209  };
 36210  
 36211  RetryOperation.prototype.retry = function(err) {
 36212    if (this._timeout) {
 36213      clearTimeout(this._timeout);
 36214    }
 36215  
 36216    if (!err) {
 36217      return false;
 36218    }
 36219    var currentTime = new Date().getTime();
 36220    if (err && currentTime - this._operationStart >= this._maxRetryTime) {
 36221      this._errors.unshift(new Error('RetryOperation timeout occurred'));
 36222      return false;
 36223    }
 36224  
 36225    this._errors.push(err);
 36226  
 36227    var timeout = this._timeouts.shift();
 36228    if (timeout === undefined) {
 36229      if (this._cachedTimeouts) {
 36230        // retry forever, only keep last error
 36231        this._errors.splice(this._errors.length - 1, this._errors.length);
 36232        this._timeouts = this._cachedTimeouts.slice(0);
 36233        timeout = this._timeouts.shift();
 36234      } else {
 36235        return false;
 36236      }
 36237    }
 36238  
 36239    var self = this;
 36240    var timer = setTimeout(function() {
 36241      self._attempts++;
 36242  
 36243      if (self._operationTimeoutCb) {
 36244        self._timeout = setTimeout(function() {
 36245          self._operationTimeoutCb(self._attempts);
 36246        }, self._operationTimeout);
 36247  
 36248        if (self._options.unref) {
 36249            self._timeout.unref();
 36250        }
 36251      }
 36252  
 36253      self._fn(self._attempts);
 36254    }, timeout);
 36255  
 36256    if (this._options.unref) {
 36257        timer.unref();
 36258    }
 36259  
 36260    return true;
 36261  };
 36262  
 36263  RetryOperation.prototype.attempt = function(fn, timeoutOps) {
 36264    this._fn = fn;
 36265  
 36266    if (timeoutOps) {
 36267      if (timeoutOps.timeout) {
 36268        this._operationTimeout = timeoutOps.timeout;
 36269      }
 36270      if (timeoutOps.cb) {
 36271        this._operationTimeoutCb = timeoutOps.cb;
 36272      }
 36273    }
 36274  
 36275    var self = this;
 36276    if (this._operationTimeoutCb) {
 36277      this._timeout = setTimeout(function() {
 36278        self._operationTimeoutCb();
 36279      }, self._operationTimeout);
 36280    }
 36281  
 36282    this._operationStart = new Date().getTime();
 36283  
 36284    this._fn(this._attempts);
 36285  };
 36286  
 36287  RetryOperation.prototype.try = function(fn) {
 36288    console.log('Using RetryOperation.try() is deprecated');
 36289    this.attempt(fn);
 36290  };
 36291  
 36292  RetryOperation.prototype.start = function(fn) {
 36293    console.log('Using RetryOperation.start() is deprecated');
 36294    this.attempt(fn);
 36295  };
 36296  
 36297  RetryOperation.prototype.start = RetryOperation.prototype.try;
 36298  
 36299  RetryOperation.prototype.errors = function() {
 36300    return this._errors;
 36301  };
 36302  
 36303  RetryOperation.prototype.attempts = function() {
 36304    return this._attempts;
 36305  };
 36306  
 36307  RetryOperation.prototype.mainError = function() {
 36308    if (this._errors.length === 0) {
 36309      return null;
 36310    }
 36311  
 36312    var counts = {};
 36313    var mainError = null;
 36314    var mainErrorCount = 0;
 36315  
 36316    for (var i = 0; i < this._errors.length; i++) {
 36317      var error = this._errors[i];
 36318      var message = error.message;
 36319      var count = (counts[message] || 0) + 1;
 36320  
 36321      counts[message] = count;
 36322  
 36323      if (count >= mainErrorCount) {
 36324        mainError = error;
 36325        mainErrorCount = count;
 36326      }
 36327    }
 36328  
 36329    return mainError;
 36330  };
 36331  
 36332  
 36333  /***/ }),
 36334  
 36335  /***/ 15118:
 36336  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 36337  
 36338  "use strict";
 36339  /* eslint-disable node/no-deprecated-api */
 36340  
 36341  
 36342  
 36343  var buffer = __nccwpck_require__(14300)
 36344  var Buffer = buffer.Buffer
 36345  
 36346  var safer = {}
 36347  
 36348  var key
 36349  
 36350  for (key in buffer) {
 36351    if (!buffer.hasOwnProperty(key)) continue
 36352    if (key === 'SlowBuffer' || key === 'Buffer') continue
 36353    safer[key] = buffer[key]
 36354  }
 36355  
 36356  var Safer = safer.Buffer = {}
 36357  for (key in Buffer) {
 36358    if (!Buffer.hasOwnProperty(key)) continue
 36359    if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue
 36360    Safer[key] = Buffer[key]
 36361  }
 36362  
 36363  safer.Buffer.prototype = Buffer.prototype
 36364  
 36365  if (!Safer.from || Safer.from === Uint8Array.from) {
 36366    Safer.from = function (value, encodingOrOffset, length) {
 36367      if (typeof value === 'number') {
 36368        throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value)
 36369      }
 36370      if (value && typeof value.length === 'undefined') {
 36371        throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)
 36372      }
 36373      return Buffer(value, encodingOrOffset, length)
 36374    }
 36375  }
 36376  
 36377  if (!Safer.alloc) {
 36378    Safer.alloc = function (size, fill, encoding) {
 36379      if (typeof size !== 'number') {
 36380        throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size)
 36381      }
 36382      if (size < 0 || size >= 2 * (1 << 30)) {
 36383        throw new RangeError('The value "' + size + '" is invalid for option "size"')
 36384      }
 36385      var buf = Buffer(size)
 36386      if (!fill || fill.length === 0) {
 36387        buf.fill(0)
 36388      } else if (typeof encoding === 'string') {
 36389        buf.fill(fill, encoding)
 36390      } else {
 36391        buf.fill(fill)
 36392      }
 36393      return buf
 36394    }
 36395  }
 36396  
 36397  if (!safer.kStringMaxLength) {
 36398    try {
 36399      safer.kStringMaxLength = process.binding('buffer').kStringMaxLength
 36400    } catch (e) {
 36401      // we can't determine kStringMaxLength in environments where process.binding
 36402      // is unsupported, so let's not set it
 36403    }
 36404  }
 36405  
 36406  if (!safer.constants) {
 36407    safer.constants = {
 36408      MAX_LENGTH: safer.kMaxLength
 36409    }
 36410    if (safer.kStringMaxLength) {
 36411      safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength
 36412    }
 36413  }
 36414  
 36415  module.exports = safer
 36416  
 36417  
 36418  /***/ }),
 36419  
 36420  /***/ 91532:
 36421  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 36422  
 36423  const ANY = Symbol('SemVer ANY')
 36424  // hoisted class for cyclic dependency
 36425  class Comparator {
 36426    static get ANY () {
 36427      return ANY
 36428    }
 36429  
 36430    constructor (comp, options) {
 36431      options = parseOptions(options)
 36432  
 36433      if (comp instanceof Comparator) {
 36434        if (comp.loose === !!options.loose) {
 36435          return comp
 36436        } else {
 36437          comp = comp.value
 36438        }
 36439      }
 36440  
 36441      comp = comp.trim().split(/\s+/).join(' ')
 36442      debug('comparator', comp, options)
 36443      this.options = options
 36444      this.loose = !!options.loose
 36445      this.parse(comp)
 36446  
 36447      if (this.semver === ANY) {
 36448        this.value = ''
 36449      } else {
 36450        this.value = this.operator + this.semver.version
 36451      }
 36452  
 36453      debug('comp', this)
 36454    }
 36455  
 36456    parse (comp) {
 36457      const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]
 36458      const m = comp.match(r)
 36459  
 36460      if (!m) {
 36461        throw new TypeError(`Invalid comparator: ${comp}`)
 36462      }
 36463  
 36464      this.operator = m[1] !== undefined ? m[1] : ''
 36465      if (this.operator === '=') {
 36466        this.operator = ''
 36467      }
 36468  
 36469      // if it literally is just '>' or '' then allow anything.
 36470      if (!m[2]) {
 36471        this.semver = ANY
 36472      } else {
 36473        this.semver = new SemVer(m[2], this.options.loose)
 36474      }
 36475    }
 36476  
 36477    toString () {
 36478      return this.value
 36479    }
 36480  
 36481    test (version) {
 36482      debug('Comparator.test', version, this.options.loose)
 36483  
 36484      if (this.semver === ANY || version === ANY) {
 36485        return true
 36486      }
 36487  
 36488      if (typeof version === 'string') {
 36489        try {
 36490          version = new SemVer(version, this.options)
 36491        } catch (er) {
 36492          return false
 36493        }
 36494      }
 36495  
 36496      return cmp(version, this.operator, this.semver, this.options)
 36497    }
 36498  
 36499    intersects (comp, options) {
 36500      if (!(comp instanceof Comparator)) {
 36501        throw new TypeError('a Comparator is required')
 36502      }
 36503  
 36504      if (this.operator === '') {
 36505        if (this.value === '') {
 36506          return true
 36507        }
 36508        return new Range(comp.value, options).test(this.value)
 36509      } else if (comp.operator === '') {
 36510        if (comp.value === '') {
 36511          return true
 36512        }
 36513        return new Range(this.value, options).test(comp.semver)
 36514      }
 36515  
 36516      options = parseOptions(options)
 36517  
 36518      // Special cases where nothing can possibly be lower
 36519      if (options.includePrerelease &&
 36520        (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {
 36521        return false
 36522      }
 36523      if (!options.includePrerelease &&
 36524        (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {
 36525        return false
 36526      }
 36527  
 36528      // Same direction increasing (> or >=)
 36529      if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {
 36530        return true
 36531      }
 36532      // Same direction decreasing (< or <=)
 36533      if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {
 36534        return true
 36535      }
 36536      // same SemVer and both sides are inclusive (<= or >=)
 36537      if (
 36538        (this.semver.version === comp.semver.version) &&
 36539        this.operator.includes('=') && comp.operator.includes('=')) {
 36540        return true
 36541      }
 36542      // opposite directions less than
 36543      if (cmp(this.semver, '<', comp.semver, options) &&
 36544        this.operator.startsWith('>') && comp.operator.startsWith('<')) {
 36545        return true
 36546      }
 36547      // opposite directions greater than
 36548      if (cmp(this.semver, '>', comp.semver, options) &&
 36549        this.operator.startsWith('<') && comp.operator.startsWith('>')) {
 36550        return true
 36551      }
 36552      return false
 36553    }
 36554  }
 36555  
 36556  module.exports = Comparator
 36557  
 36558  const parseOptions = __nccwpck_require__(40785)
 36559  const { safeRe: re, t } = __nccwpck_require__(92566)
 36560  const cmp = __nccwpck_require__(75098)
 36561  const debug = __nccwpck_require__(50427)
 36562  const SemVer = __nccwpck_require__(48088)
 36563  const Range = __nccwpck_require__(9828)
 36564  
 36565  
 36566  /***/ }),
 36567  
 36568  /***/ 9828:
 36569  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 36570  
 36571  // hoisted class for cyclic dependency
 36572  class Range {
 36573    constructor (range, options) {
 36574      options = parseOptions(options)
 36575  
 36576      if (range instanceof Range) {
 36577        if (
 36578          range.loose === !!options.loose &&
 36579          range.includePrerelease === !!options.includePrerelease
 36580        ) {
 36581          return range
 36582        } else {
 36583          return new Range(range.raw, options)
 36584        }
 36585      }
 36586  
 36587      if (range instanceof Comparator) {
 36588        // just put it in the set and return
 36589        this.raw = range.value
 36590        this.set = [[range]]
 36591        this.format()
 36592        return this
 36593      }
 36594  
 36595      this.options = options
 36596      this.loose = !!options.loose
 36597      this.includePrerelease = !!options.includePrerelease
 36598  
 36599      // First reduce all whitespace as much as possible so we do not have to rely
 36600      // on potentially slow regexes like \s*. This is then stored and used for
 36601      // future error messages as well.
 36602      this.raw = range
 36603        .trim()
 36604        .split(/\s+/)
 36605        .join(' ')
 36606  
 36607      // First, split on ||
 36608      this.set = this.raw
 36609        .split('||')
 36610        // map the range to a 2d array of comparators
 36611        .map(r => this.parseRange(r.trim()))
 36612        // throw out any comparator lists that are empty
 36613        // this generally means that it was not a valid range, which is allowed
 36614        // in loose mode, but will still throw if the WHOLE range is invalid.
 36615        .filter(c => c.length)
 36616  
 36617      if (!this.set.length) {
 36618        throw new TypeError(`Invalid SemVer Range: ${this.raw}`)
 36619      }
 36620  
 36621      // if we have any that are not the null set, throw out null sets.
 36622      if (this.set.length > 1) {
 36623        // keep the first one, in case they're all null sets
 36624        const first = this.set[0]
 36625        this.set = this.set.filter(c => !isNullSet(c[0]))
 36626        if (this.set.length === 0) {
 36627          this.set = [first]
 36628        } else if (this.set.length > 1) {
 36629          // if we have any that are *, then the range is just *
 36630          for (const c of this.set) {
 36631            if (c.length === 1 && isAny(c[0])) {
 36632              this.set = [c]
 36633              break
 36634            }
 36635          }
 36636        }
 36637      }
 36638  
 36639      this.format()
 36640    }
 36641  
 36642    format () {
 36643      this.range = this.set
 36644        .map((comps) => comps.join(' ').trim())
 36645        .join('||')
 36646        .trim()
 36647      return this.range
 36648    }
 36649  
 36650    toString () {
 36651      return this.range
 36652    }
 36653  
 36654    parseRange (range) {
 36655      // memoize range parsing for performance.
 36656      // this is a very hot path, and fully deterministic.
 36657      const memoOpts =
 36658        (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |
 36659        (this.options.loose && FLAG_LOOSE)
 36660      const memoKey = memoOpts + ':' + range
 36661      const cached = cache.get(memoKey)
 36662      if (cached) {
 36663        return cached
 36664      }
 36665  
 36666      const loose = this.options.loose
 36667      // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
 36668      const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]
 36669      range = range.replace(hr, hyphenReplace(this.options.includePrerelease))
 36670      debug('hyphen replace', range)
 36671  
 36672      // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
 36673      range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)
 36674      debug('comparator trim', range)
 36675  
 36676      // `~ 1.2.3` => `~1.2.3`
 36677      range = range.replace(re[t.TILDETRIM], tildeTrimReplace)
 36678      debug('tilde trim', range)
 36679  
 36680      // `^ 1.2.3` => `^1.2.3`
 36681      range = range.replace(re[t.CARETTRIM], caretTrimReplace)
 36682      debug('caret trim', range)
 36683  
 36684      // At this point, the range is completely trimmed and
 36685      // ready to be split into comparators.
 36686  
 36687      let rangeList = range
 36688        .split(' ')
 36689        .map(comp => parseComparator(comp, this.options))
 36690        .join(' ')
 36691        .split(/\s+/)
 36692        // >=0.0.0 is equivalent to *
 36693        .map(comp => replaceGTE0(comp, this.options))
 36694  
 36695      if (loose) {
 36696        // in loose mode, throw out any that are not valid comparators
 36697        rangeList = rangeList.filter(comp => {
 36698          debug('loose invalid filter', comp, this.options)
 36699          return !!comp.match(re[t.COMPARATORLOOSE])
 36700        })
 36701      }
 36702      debug('range list', rangeList)
 36703  
 36704      // if any comparators are the null set, then replace with JUST null set
 36705      // if more than one comparator, remove any * comparators
 36706      // also, don't include the same comparator more than once
 36707      const rangeMap = new Map()
 36708      const comparators = rangeList.map(comp => new Comparator(comp, this.options))
 36709      for (const comp of comparators) {
 36710        if (isNullSet(comp)) {
 36711          return [comp]
 36712        }
 36713        rangeMap.set(comp.value, comp)
 36714      }
 36715      if (rangeMap.size > 1 && rangeMap.has('')) {
 36716        rangeMap.delete('')
 36717      }
 36718  
 36719      const result = [...rangeMap.values()]
 36720      cache.set(memoKey, result)
 36721      return result
 36722    }
 36723  
 36724    intersects (range, options) {
 36725      if (!(range instanceof Range)) {
 36726        throw new TypeError('a Range is required')
 36727      }
 36728  
 36729      return this.set.some((thisComparators) => {
 36730        return (
 36731          isSatisfiable(thisComparators, options) &&
 36732          range.set.some((rangeComparators) => {
 36733            return (
 36734              isSatisfiable(rangeComparators, options) &&
 36735              thisComparators.every((thisComparator) => {
 36736                return rangeComparators.every((rangeComparator) => {
 36737                  return thisComparator.intersects(rangeComparator, options)
 36738                })
 36739              })
 36740            )
 36741          })
 36742        )
 36743      })
 36744    }
 36745  
 36746    // if ANY of the sets match ALL of its comparators, then pass
 36747    test (version) {
 36748      if (!version) {
 36749        return false
 36750      }
 36751  
 36752      if (typeof version === 'string') {
 36753        try {
 36754          version = new SemVer(version, this.options)
 36755        } catch (er) {
 36756          return false
 36757        }
 36758      }
 36759  
 36760      for (let i = 0; i < this.set.length; i++) {
 36761        if (testSet(this.set[i], version, this.options)) {
 36762          return true
 36763        }
 36764      }
 36765      return false
 36766    }
 36767  }
 36768  
 36769  module.exports = Range
 36770  
 36771  const LRU = __nccwpck_require__(7129)
 36772  const cache = new LRU({ max: 1000 })
 36773  
 36774  const parseOptions = __nccwpck_require__(40785)
 36775  const Comparator = __nccwpck_require__(91532)
 36776  const debug = __nccwpck_require__(50427)
 36777  const SemVer = __nccwpck_require__(48088)
 36778  const {
 36779    safeRe: re,
 36780    t,
 36781    comparatorTrimReplace,
 36782    tildeTrimReplace,
 36783    caretTrimReplace,
 36784  } = __nccwpck_require__(92566)
 36785  const { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = __nccwpck_require__(42293)
 36786  
 36787  const isNullSet = c => c.value === '<0.0.0-0'
 36788  const isAny = c => c.value === ''
 36789  
 36790  // take a set of comparators and determine whether there
 36791  // exists a version which can satisfy it
 36792  const isSatisfiable = (comparators, options) => {
 36793    let result = true
 36794    const remainingComparators = comparators.slice()
 36795    let testComparator = remainingComparators.pop()
 36796  
 36797    while (result && remainingComparators.length) {
 36798      result = remainingComparators.every((otherComparator) => {
 36799        return testComparator.intersects(otherComparator, options)
 36800      })
 36801  
 36802      testComparator = remainingComparators.pop()
 36803    }
 36804  
 36805    return result
 36806  }
 36807  
 36808  // comprised of xranges, tildes, stars, and gtlt's at this point.
 36809  // already replaced the hyphen ranges
 36810  // turn into a set of JUST comparators.
 36811  const parseComparator = (comp, options) => {
 36812    debug('comp', comp, options)
 36813    comp = replaceCarets(comp, options)
 36814    debug('caret', comp)
 36815    comp = replaceTildes(comp, options)
 36816    debug('tildes', comp)
 36817    comp = replaceXRanges(comp, options)
 36818    debug('xrange', comp)
 36819    comp = replaceStars(comp, options)
 36820    debug('stars', comp)
 36821    return comp
 36822  }
 36823  
 36824  const isX = id => !id || id.toLowerCase() === 'x' || id === '*'
 36825  
 36826  // ~, ~> --> * (any, kinda silly)
 36827  // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0
 36828  // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0
 36829  // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0
 36830  // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0
 36831  // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0
 36832  // ~0.0.1 --> >=0.0.1 <0.1.0-0
 36833  const replaceTildes = (comp, options) => {
 36834    return comp
 36835      .trim()
 36836      .split(/\s+/)
 36837      .map((c) => replaceTilde(c, options))
 36838      .join(' ')
 36839  }
 36840  
 36841  const replaceTilde = (comp, options) => {
 36842    const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]
 36843    return comp.replace(r, (_, M, m, p, pr) => {
 36844      debug('tilde', comp, _, M, m, p, pr)
 36845      let ret
 36846  
 36847      if (isX(M)) {
 36848        ret = ''
 36849      } else if (isX(m)) {
 36850        ret = `>=${M}.0.0 <${+M + 1}.0.0-0`
 36851      } else if (isX(p)) {
 36852        // ~1.2 == >=1.2.0 <1.3.0-0
 36853        ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`
 36854      } else if (pr) {
 36855        debug('replaceTilde pr', pr)
 36856        ret = `>=${M}.${m}.${p}-${pr
 36857        } <${M}.${+m + 1}.0-0`
 36858      } else {
 36859        // ~1.2.3 == >=1.2.3 <1.3.0-0
 36860        ret = `>=${M}.${m}.${p
 36861        } <${M}.${+m + 1}.0-0`
 36862      }
 36863  
 36864      debug('tilde return', ret)
 36865      return ret
 36866    })
 36867  }
 36868  
 36869  // ^ --> * (any, kinda silly)
 36870  // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0
 36871  // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0
 36872  // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0
 36873  // ^1.2.3 --> >=1.2.3 <2.0.0-0
 36874  // ^1.2.0 --> >=1.2.0 <2.0.0-0
 36875  // ^0.0.1 --> >=0.0.1 <0.0.2-0
 36876  // ^0.1.0 --> >=0.1.0 <0.2.0-0
 36877  const replaceCarets = (comp, options) => {
 36878    return comp
 36879      .trim()
 36880      .split(/\s+/)
 36881      .map((c) => replaceCaret(c, options))
 36882      .join(' ')
 36883  }
 36884  
 36885  const replaceCaret = (comp, options) => {
 36886    debug('caret', comp, options)
 36887    const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]
 36888    const z = options.includePrerelease ? '-0' : ''
 36889    return comp.replace(r, (_, M, m, p, pr) => {
 36890      debug('caret', comp, _, M, m, p, pr)
 36891      let ret
 36892  
 36893      if (isX(M)) {
 36894        ret = ''
 36895      } else if (isX(m)) {
 36896        ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`
 36897      } else if (isX(p)) {
 36898        if (M === '0') {
 36899          ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`
 36900        } else {
 36901          ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`
 36902        }
 36903      } else if (pr) {
 36904        debug('replaceCaret pr', pr)
 36905        if (M === '0') {
 36906          if (m === '0') {
 36907            ret = `>=${M}.${m}.${p}-${pr
 36908            } <${M}.${m}.${+p + 1}-0`
 36909          } else {
 36910            ret = `>=${M}.${m}.${p}-${pr
 36911            } <${M}.${+m + 1}.0-0`
 36912          }
 36913        } else {
 36914          ret = `>=${M}.${m}.${p}-${pr
 36915          } <${+M + 1}.0.0-0`
 36916        }
 36917      } else {
 36918        debug('no pr')
 36919        if (M === '0') {
 36920          if (m === '0') {
 36921            ret = `>=${M}.${m}.${p
 36922            }${z} <${M}.${m}.${+p + 1}-0`
 36923          } else {
 36924            ret = `>=${M}.${m}.${p
 36925            }${z} <${M}.${+m + 1}.0-0`
 36926          }
 36927        } else {
 36928          ret = `>=${M}.${m}.${p
 36929          } <${+M + 1}.0.0-0`
 36930        }
 36931      }
 36932  
 36933      debug('caret return', ret)
 36934      return ret
 36935    })
 36936  }
 36937  
 36938  const replaceXRanges = (comp, options) => {
 36939    debug('replaceXRanges', comp, options)
 36940    return comp
 36941      .split(/\s+/)
 36942      .map((c) => replaceXRange(c, options))
 36943      .join(' ')
 36944  }
 36945  
 36946  const replaceXRange = (comp, options) => {
 36947    comp = comp.trim()
 36948    const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]
 36949    return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
 36950      debug('xRange', comp, ret, gtlt, M, m, p, pr)
 36951      const xM = isX(M)
 36952      const xm = xM || isX(m)
 36953      const xp = xm || isX(p)
 36954      const anyX = xp
 36955  
 36956      if (gtlt === '=' && anyX) {
 36957        gtlt = ''
 36958      }
 36959  
 36960      // if we're including prereleases in the match, then we need
 36961      // to fix this to -0, the lowest possible prerelease value
 36962      pr = options.includePrerelease ? '-0' : ''
 36963  
 36964      if (xM) {
 36965        if (gtlt === '>' || gtlt === '<') {
 36966          // nothing is allowed
 36967          ret = '<0.0.0-0'
 36968        } else {
 36969          // nothing is forbidden
 36970          ret = '*'
 36971        }
 36972      } else if (gtlt && anyX) {
 36973        // we know patch is an x, because we have any x at all.
 36974        // replace X with 0
 36975        if (xm) {
 36976          m = 0
 36977        }
 36978        p = 0
 36979  
 36980        if (gtlt === '>') {
 36981          // >1 => >=2.0.0
 36982          // >1.2 => >=1.3.0
 36983          gtlt = '>='
 36984          if (xm) {
 36985            M = +M + 1
 36986            m = 0
 36987            p = 0
 36988          } else {
 36989            m = +m + 1
 36990            p = 0
 36991          }
 36992        } else if (gtlt === '<=') {
 36993          // <=0.7.x is actually <0.8.0, since any 0.7.x should
 36994          // pass.  Similarly, <=7.x is actually <8.0.0, etc.
 36995          gtlt = '<'
 36996          if (xm) {
 36997            M = +M + 1
 36998          } else {
 36999            m = +m + 1
 37000          }
 37001        }
 37002  
 37003        if (gtlt === '<') {
 37004          pr = '-0'
 37005        }
 37006  
 37007        ret = `${gtlt + M}.${m}.${p}${pr}`
 37008      } else if (xm) {
 37009        ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`
 37010      } else if (xp) {
 37011        ret = `>=${M}.${m}.0${pr
 37012        } <${M}.${+m + 1}.0-0`
 37013      }
 37014  
 37015      debug('xRange return', ret)
 37016  
 37017      return ret
 37018    })
 37019  }
 37020  
 37021  // Because * is AND-ed with everything else in the comparator,
 37022  // and '' means "any version", just remove the *s entirely.
 37023  const replaceStars = (comp, options) => {
 37024    debug('replaceStars', comp, options)
 37025    // Looseness is ignored here.  star is always as loose as it gets!
 37026    return comp
 37027      .trim()
 37028      .replace(re[t.STAR], '')
 37029  }
 37030  
 37031  const replaceGTE0 = (comp, options) => {
 37032    debug('replaceGTE0', comp, options)
 37033    return comp
 37034      .trim()
 37035      .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')
 37036  }
 37037  
 37038  // This function is passed to string.replace(re[t.HYPHENRANGE])
 37039  // M, m, patch, prerelease, build
 37040  // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
 37041  // 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do
 37042  // 1.2 - 3.4 => >=1.2.0 <3.5.0-0
 37043  const hyphenReplace = incPr => ($0,
 37044    from, fM, fm, fp, fpr, fb,
 37045    to, tM, tm, tp, tpr, tb) => {
 37046    if (isX(fM)) {
 37047      from = ''
 37048    } else if (isX(fm)) {
 37049      from = `>=${fM}.0.0${incPr ? '-0' : ''}`
 37050    } else if (isX(fp)) {
 37051      from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`
 37052    } else if (fpr) {
 37053      from = `>=${from}`
 37054    } else {
 37055      from = `>=${from}${incPr ? '-0' : ''}`
 37056    }
 37057  
 37058    if (isX(tM)) {
 37059      to = ''
 37060    } else if (isX(tm)) {
 37061      to = `<${+tM + 1}.0.0-0`
 37062    } else if (isX(tp)) {
 37063      to = `<${tM}.${+tm + 1}.0-0`
 37064    } else if (tpr) {
 37065      to = `<=${tM}.${tm}.${tp}-${tpr}`
 37066    } else if (incPr) {
 37067      to = `<${tM}.${tm}.${+tp + 1}-0`
 37068    } else {
 37069      to = `<=${to}`
 37070    }
 37071  
 37072    return `${from} ${to}`.trim()
 37073  }
 37074  
 37075  const testSet = (set, version, options) => {
 37076    for (let i = 0; i < set.length; i++) {
 37077      if (!set[i].test(version)) {
 37078        return false
 37079      }
 37080    }
 37081  
 37082    if (version.prerelease.length && !options.includePrerelease) {
 37083      // Find the set of versions that are allowed to have prereleases
 37084      // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
 37085      // That should allow `1.2.3-pr.2` to pass.
 37086      // However, `1.2.4-alpha.notready` should NOT be allowed,
 37087      // even though it's within the range set by the comparators.
 37088      for (let i = 0; i < set.length; i++) {
 37089        debug(set[i].semver)
 37090        if (set[i].semver === Comparator.ANY) {
 37091          continue
 37092        }
 37093  
 37094        if (set[i].semver.prerelease.length > 0) {
 37095          const allowed = set[i].semver
 37096          if (allowed.major === version.major &&
 37097              allowed.minor === version.minor &&
 37098              allowed.patch === version.patch) {
 37099            return true
 37100          }
 37101        }
 37102      }
 37103  
 37104      // Version has a -pre, but it's not one of the ones we like.
 37105      return false
 37106    }
 37107  
 37108    return true
 37109  }
 37110  
 37111  
 37112  /***/ }),
 37113  
 37114  /***/ 48088:
 37115  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37116  
 37117  const debug = __nccwpck_require__(50427)
 37118  const { MAX_LENGTH, MAX_SAFE_INTEGER } = __nccwpck_require__(42293)
 37119  const { safeRe: re, t } = __nccwpck_require__(92566)
 37120  
 37121  const parseOptions = __nccwpck_require__(40785)
 37122  const { compareIdentifiers } = __nccwpck_require__(92463)
 37123  class SemVer {
 37124    constructor (version, options) {
 37125      options = parseOptions(options)
 37126  
 37127      if (version instanceof SemVer) {
 37128        if (version.loose === !!options.loose &&
 37129            version.includePrerelease === !!options.includePrerelease) {
 37130          return version
 37131        } else {
 37132          version = version.version
 37133        }
 37134      } else if (typeof version !== 'string') {
 37135        throw new TypeError(`Invalid version. Must be a string. Got type "${typeof version}".`)
 37136      }
 37137  
 37138      if (version.length > MAX_LENGTH) {
 37139        throw new TypeError(
 37140          `version is longer than ${MAX_LENGTH} characters`
 37141        )
 37142      }
 37143  
 37144      debug('SemVer', version, options)
 37145      this.options = options
 37146      this.loose = !!options.loose
 37147      // this isn't actually relevant for versions, but keep it so that we
 37148      // don't run into trouble passing this.options around.
 37149      this.includePrerelease = !!options.includePrerelease
 37150  
 37151      const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])
 37152  
 37153      if (!m) {
 37154        throw new TypeError(`Invalid Version: ${version}`)
 37155      }
 37156  
 37157      this.raw = version
 37158  
 37159      // these are actually numbers
 37160      this.major = +m[1]
 37161      this.minor = +m[2]
 37162      this.patch = +m[3]
 37163  
 37164      if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
 37165        throw new TypeError('Invalid major version')
 37166      }
 37167  
 37168      if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
 37169        throw new TypeError('Invalid minor version')
 37170      }
 37171  
 37172      if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
 37173        throw new TypeError('Invalid patch version')
 37174      }
 37175  
 37176      // numberify any prerelease numeric ids
 37177      if (!m[4]) {
 37178        this.prerelease = []
 37179      } else {
 37180        this.prerelease = m[4].split('.').map((id) => {
 37181          if (/^[0-9]+$/.test(id)) {
 37182            const num = +id
 37183            if (num >= 0 && num < MAX_SAFE_INTEGER) {
 37184              return num
 37185            }
 37186          }
 37187          return id
 37188        })
 37189      }
 37190  
 37191      this.build = m[5] ? m[5].split('.') : []
 37192      this.format()
 37193    }
 37194  
 37195    format () {
 37196      this.version = `${this.major}.${this.minor}.${this.patch}`
 37197      if (this.prerelease.length) {
 37198        this.version += `-${this.prerelease.join('.')}`
 37199      }
 37200      return this.version
 37201    }
 37202  
 37203    toString () {
 37204      return this.version
 37205    }
 37206  
 37207    compare (other) {
 37208      debug('SemVer.compare', this.version, this.options, other)
 37209      if (!(other instanceof SemVer)) {
 37210        if (typeof other === 'string' && other === this.version) {
 37211          return 0
 37212        }
 37213        other = new SemVer(other, this.options)
 37214      }
 37215  
 37216      if (other.version === this.version) {
 37217        return 0
 37218      }
 37219  
 37220      return this.compareMain(other) || this.comparePre(other)
 37221    }
 37222  
 37223    compareMain (other) {
 37224      if (!(other instanceof SemVer)) {
 37225        other = new SemVer(other, this.options)
 37226      }
 37227  
 37228      return (
 37229        compareIdentifiers(this.major, other.major) ||
 37230        compareIdentifiers(this.minor, other.minor) ||
 37231        compareIdentifiers(this.patch, other.patch)
 37232      )
 37233    }
 37234  
 37235    comparePre (other) {
 37236      if (!(other instanceof SemVer)) {
 37237        other = new SemVer(other, this.options)
 37238      }
 37239  
 37240      // NOT having a prerelease is > having one
 37241      if (this.prerelease.length && !other.prerelease.length) {
 37242        return -1
 37243      } else if (!this.prerelease.length && other.prerelease.length) {
 37244        return 1
 37245      } else if (!this.prerelease.length && !other.prerelease.length) {
 37246        return 0
 37247      }
 37248  
 37249      let i = 0
 37250      do {
 37251        const a = this.prerelease[i]
 37252        const b = other.prerelease[i]
 37253        debug('prerelease compare', i, a, b)
 37254        if (a === undefined && b === undefined) {
 37255          return 0
 37256        } else if (b === undefined) {
 37257          return 1
 37258        } else if (a === undefined) {
 37259          return -1
 37260        } else if (a === b) {
 37261          continue
 37262        } else {
 37263          return compareIdentifiers(a, b)
 37264        }
 37265      } while (++i)
 37266    }
 37267  
 37268    compareBuild (other) {
 37269      if (!(other instanceof SemVer)) {
 37270        other = new SemVer(other, this.options)
 37271      }
 37272  
 37273      let i = 0
 37274      do {
 37275        const a = this.build[i]
 37276        const b = other.build[i]
 37277        debug('prerelease compare', i, a, b)
 37278        if (a === undefined && b === undefined) {
 37279          return 0
 37280        } else if (b === undefined) {
 37281          return 1
 37282        } else if (a === undefined) {
 37283          return -1
 37284        } else if (a === b) {
 37285          continue
 37286        } else {
 37287          return compareIdentifiers(a, b)
 37288        }
 37289      } while (++i)
 37290    }
 37291  
 37292    // preminor will bump the version up to the next minor release, and immediately
 37293    // down to pre-release. premajor and prepatch work the same way.
 37294    inc (release, identifier, identifierBase) {
 37295      switch (release) {
 37296        case 'premajor':
 37297          this.prerelease.length = 0
 37298          this.patch = 0
 37299          this.minor = 0
 37300          this.major++
 37301          this.inc('pre', identifier, identifierBase)
 37302          break
 37303        case 'preminor':
 37304          this.prerelease.length = 0
 37305          this.patch = 0
 37306          this.minor++
 37307          this.inc('pre', identifier, identifierBase)
 37308          break
 37309        case 'prepatch':
 37310          // If this is already a prerelease, it will bump to the next version
 37311          // drop any prereleases that might already exist, since they are not
 37312          // relevant at this point.
 37313          this.prerelease.length = 0
 37314          this.inc('patch', identifier, identifierBase)
 37315          this.inc('pre', identifier, identifierBase)
 37316          break
 37317        // If the input is a non-prerelease version, this acts the same as
 37318        // prepatch.
 37319        case 'prerelease':
 37320          if (this.prerelease.length === 0) {
 37321            this.inc('patch', identifier, identifierBase)
 37322          }
 37323          this.inc('pre', identifier, identifierBase)
 37324          break
 37325  
 37326        case 'major':
 37327          // If this is a pre-major version, bump up to the same major version.
 37328          // Otherwise increment major.
 37329          // 1.0.0-5 bumps to 1.0.0
 37330          // 1.1.0 bumps to 2.0.0
 37331          if (
 37332            this.minor !== 0 ||
 37333            this.patch !== 0 ||
 37334            this.prerelease.length === 0
 37335          ) {
 37336            this.major++
 37337          }
 37338          this.minor = 0
 37339          this.patch = 0
 37340          this.prerelease = []
 37341          break
 37342        case 'minor':
 37343          // If this is a pre-minor version, bump up to the same minor version.
 37344          // Otherwise increment minor.
 37345          // 1.2.0-5 bumps to 1.2.0
 37346          // 1.2.1 bumps to 1.3.0
 37347          if (this.patch !== 0 || this.prerelease.length === 0) {
 37348            this.minor++
 37349          }
 37350          this.patch = 0
 37351          this.prerelease = []
 37352          break
 37353        case 'patch':
 37354          // If this is not a pre-release version, it will increment the patch.
 37355          // If it is a pre-release it will bump up to the same patch version.
 37356          // 1.2.0-5 patches to 1.2.0
 37357          // 1.2.0 patches to 1.2.1
 37358          if (this.prerelease.length === 0) {
 37359            this.patch++
 37360          }
 37361          this.prerelease = []
 37362          break
 37363        // This probably shouldn't be used publicly.
 37364        // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
 37365        case 'pre': {
 37366          const base = Number(identifierBase) ? 1 : 0
 37367  
 37368          if (!identifier && identifierBase === false) {
 37369            throw new Error('invalid increment argument: identifier is empty')
 37370          }
 37371  
 37372          if (this.prerelease.length === 0) {
 37373            this.prerelease = [base]
 37374          } else {
 37375            let i = this.prerelease.length
 37376            while (--i >= 0) {
 37377              if (typeof this.prerelease[i] === 'number') {
 37378                this.prerelease[i]++
 37379                i = -2
 37380              }
 37381            }
 37382            if (i === -1) {
 37383              // didn't increment anything
 37384              if (identifier === this.prerelease.join('.') && identifierBase === false) {
 37385                throw new Error('invalid increment argument: identifier already exists')
 37386              }
 37387              this.prerelease.push(base)
 37388            }
 37389          }
 37390          if (identifier) {
 37391            // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
 37392            // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
 37393            let prerelease = [identifier, base]
 37394            if (identifierBase === false) {
 37395              prerelease = [identifier]
 37396            }
 37397            if (compareIdentifiers(this.prerelease[0], identifier) === 0) {
 37398              if (isNaN(this.prerelease[1])) {
 37399                this.prerelease = prerelease
 37400              }
 37401            } else {
 37402              this.prerelease = prerelease
 37403            }
 37404          }
 37405          break
 37406        }
 37407        default:
 37408          throw new Error(`invalid increment argument: ${release}`)
 37409      }
 37410      this.raw = this.format()
 37411      if (this.build.length) {
 37412        this.raw += `+${this.build.join('.')}`
 37413      }
 37414      return this
 37415    }
 37416  }
 37417  
 37418  module.exports = SemVer
 37419  
 37420  
 37421  /***/ }),
 37422  
 37423  /***/ 48848:
 37424  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37425  
 37426  const parse = __nccwpck_require__(75925)
 37427  const clean = (version, options) => {
 37428    const s = parse(version.trim().replace(/^[=v]+/, ''), options)
 37429    return s ? s.version : null
 37430  }
 37431  module.exports = clean
 37432  
 37433  
 37434  /***/ }),
 37435  
 37436  /***/ 75098:
 37437  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37438  
 37439  const eq = __nccwpck_require__(91898)
 37440  const neq = __nccwpck_require__(6017)
 37441  const gt = __nccwpck_require__(84123)
 37442  const gte = __nccwpck_require__(15522)
 37443  const lt = __nccwpck_require__(80194)
 37444  const lte = __nccwpck_require__(77520)
 37445  
 37446  const cmp = (a, op, b, loose) => {
 37447    switch (op) {
 37448      case '===':
 37449        if (typeof a === 'object') {
 37450          a = a.version
 37451        }
 37452        if (typeof b === 'object') {
 37453          b = b.version
 37454        }
 37455        return a === b
 37456  
 37457      case '!==':
 37458        if (typeof a === 'object') {
 37459          a = a.version
 37460        }
 37461        if (typeof b === 'object') {
 37462          b = b.version
 37463        }
 37464        return a !== b
 37465  
 37466      case '':
 37467      case '=':
 37468      case '==':
 37469        return eq(a, b, loose)
 37470  
 37471      case '!=':
 37472        return neq(a, b, loose)
 37473  
 37474      case '>':
 37475        return gt(a, b, loose)
 37476  
 37477      case '>=':
 37478        return gte(a, b, loose)
 37479  
 37480      case '<':
 37481        return lt(a, b, loose)
 37482  
 37483      case '<=':
 37484        return lte(a, b, loose)
 37485  
 37486      default:
 37487        throw new TypeError(`Invalid operator: ${op}`)
 37488    }
 37489  }
 37490  module.exports = cmp
 37491  
 37492  
 37493  /***/ }),
 37494  
 37495  /***/ 13466:
 37496  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37497  
 37498  const SemVer = __nccwpck_require__(48088)
 37499  const parse = __nccwpck_require__(75925)
 37500  const { safeRe: re, t } = __nccwpck_require__(92566)
 37501  
 37502  const coerce = (version, options) => {
 37503    if (version instanceof SemVer) {
 37504      return version
 37505    }
 37506  
 37507    if (typeof version === 'number') {
 37508      version = String(version)
 37509    }
 37510  
 37511    if (typeof version !== 'string') {
 37512      return null
 37513    }
 37514  
 37515    options = options || {}
 37516  
 37517    let match = null
 37518    if (!options.rtl) {
 37519      match = version.match(re[t.COERCE])
 37520    } else {
 37521      // Find the right-most coercible string that does not share
 37522      // a terminus with a more left-ward coercible string.
 37523      // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
 37524      //
 37525      // Walk through the string checking with a /g regexp
 37526      // Manually set the index so as to pick up overlapping matches.
 37527      // Stop when we get a match that ends at the string end, since no
 37528      // coercible string can be more right-ward without the same terminus.
 37529      let next
 37530      while ((next = re[t.COERCERTL].exec(version)) &&
 37531          (!match || match.index + match[0].length !== version.length)
 37532      ) {
 37533        if (!match ||
 37534              next.index + next[0].length !== match.index + match[0].length) {
 37535          match = next
 37536        }
 37537        re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length
 37538      }
 37539      // leave it in a clean state
 37540      re[t.COERCERTL].lastIndex = -1
 37541    }
 37542  
 37543    if (match === null) {
 37544      return null
 37545    }
 37546  
 37547    return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options)
 37548  }
 37549  module.exports = coerce
 37550  
 37551  
 37552  /***/ }),
 37553  
 37554  /***/ 92156:
 37555  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37556  
 37557  const SemVer = __nccwpck_require__(48088)
 37558  const compareBuild = (a, b, loose) => {
 37559    const versionA = new SemVer(a, loose)
 37560    const versionB = new SemVer(b, loose)
 37561    return versionA.compare(versionB) || versionA.compareBuild(versionB)
 37562  }
 37563  module.exports = compareBuild
 37564  
 37565  
 37566  /***/ }),
 37567  
 37568  /***/ 62804:
 37569  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37570  
 37571  const compare = __nccwpck_require__(44309)
 37572  const compareLoose = (a, b) => compare(a, b, true)
 37573  module.exports = compareLoose
 37574  
 37575  
 37576  /***/ }),
 37577  
 37578  /***/ 44309:
 37579  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37580  
 37581  const SemVer = __nccwpck_require__(48088)
 37582  const compare = (a, b, loose) =>
 37583    new SemVer(a, loose).compare(new SemVer(b, loose))
 37584  
 37585  module.exports = compare
 37586  
 37587  
 37588  /***/ }),
 37589  
 37590  /***/ 64297:
 37591  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37592  
 37593  const parse = __nccwpck_require__(75925)
 37594  
 37595  const diff = (version1, version2) => {
 37596    const v1 = parse(version1, null, true)
 37597    const v2 = parse(version2, null, true)
 37598    const comparison = v1.compare(v2)
 37599  
 37600    if (comparison === 0) {
 37601      return null
 37602    }
 37603  
 37604    const v1Higher = comparison > 0
 37605    const highVersion = v1Higher ? v1 : v2
 37606    const lowVersion = v1Higher ? v2 : v1
 37607    const highHasPre = !!highVersion.prerelease.length
 37608    const lowHasPre = !!lowVersion.prerelease.length
 37609  
 37610    if (lowHasPre && !highHasPre) {
 37611      // Going from prerelease -> no prerelease requires some special casing
 37612  
 37613      // If the low version has only a major, then it will always be a major
 37614      // Some examples:
 37615      // 1.0.0-1 -> 1.0.0
 37616      // 1.0.0-1 -> 1.1.1
 37617      // 1.0.0-1 -> 2.0.0
 37618      if (!lowVersion.patch && !lowVersion.minor) {
 37619        return 'major'
 37620      }
 37621  
 37622      // Otherwise it can be determined by checking the high version
 37623  
 37624      if (highVersion.patch) {
 37625        // anything higher than a patch bump would result in the wrong version
 37626        return 'patch'
 37627      }
 37628  
 37629      if (highVersion.minor) {
 37630        // anything higher than a minor bump would result in the wrong version
 37631        return 'minor'
 37632      }
 37633  
 37634      // bumping major/minor/patch all have same result
 37635      return 'major'
 37636    }
 37637  
 37638    // add the `pre` prefix if we are going to a prerelease version
 37639    const prefix = highHasPre ? 'pre' : ''
 37640  
 37641    if (v1.major !== v2.major) {
 37642      return prefix + 'major'
 37643    }
 37644  
 37645    if (v1.minor !== v2.minor) {
 37646      return prefix + 'minor'
 37647    }
 37648  
 37649    if (v1.patch !== v2.patch) {
 37650      return prefix + 'patch'
 37651    }
 37652  
 37653    // high and low are preleases
 37654    return 'prerelease'
 37655  }
 37656  
 37657  module.exports = diff
 37658  
 37659  
 37660  /***/ }),
 37661  
 37662  /***/ 91898:
 37663  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37664  
 37665  const compare = __nccwpck_require__(44309)
 37666  const eq = (a, b, loose) => compare(a, b, loose) === 0
 37667  module.exports = eq
 37668  
 37669  
 37670  /***/ }),
 37671  
 37672  /***/ 84123:
 37673  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37674  
 37675  const compare = __nccwpck_require__(44309)
 37676  const gt = (a, b, loose) => compare(a, b, loose) > 0
 37677  module.exports = gt
 37678  
 37679  
 37680  /***/ }),
 37681  
 37682  /***/ 15522:
 37683  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37684  
 37685  const compare = __nccwpck_require__(44309)
 37686  const gte = (a, b, loose) => compare(a, b, loose) >= 0
 37687  module.exports = gte
 37688  
 37689  
 37690  /***/ }),
 37691  
 37692  /***/ 30900:
 37693  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37694  
 37695  const SemVer = __nccwpck_require__(48088)
 37696  
 37697  const inc = (version, release, options, identifier, identifierBase) => {
 37698    if (typeof (options) === 'string') {
 37699      identifierBase = identifier
 37700      identifier = options
 37701      options = undefined
 37702    }
 37703  
 37704    try {
 37705      return new SemVer(
 37706        version instanceof SemVer ? version.version : version,
 37707        options
 37708      ).inc(release, identifier, identifierBase).version
 37709    } catch (er) {
 37710      return null
 37711    }
 37712  }
 37713  module.exports = inc
 37714  
 37715  
 37716  /***/ }),
 37717  
 37718  /***/ 80194:
 37719  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37720  
 37721  const compare = __nccwpck_require__(44309)
 37722  const lt = (a, b, loose) => compare(a, b, loose) < 0
 37723  module.exports = lt
 37724  
 37725  
 37726  /***/ }),
 37727  
 37728  /***/ 77520:
 37729  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37730  
 37731  const compare = __nccwpck_require__(44309)
 37732  const lte = (a, b, loose) => compare(a, b, loose) <= 0
 37733  module.exports = lte
 37734  
 37735  
 37736  /***/ }),
 37737  
 37738  /***/ 76688:
 37739  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37740  
 37741  const SemVer = __nccwpck_require__(48088)
 37742  const major = (a, loose) => new SemVer(a, loose).major
 37743  module.exports = major
 37744  
 37745  
 37746  /***/ }),
 37747  
 37748  /***/ 38447:
 37749  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37750  
 37751  const SemVer = __nccwpck_require__(48088)
 37752  const minor = (a, loose) => new SemVer(a, loose).minor
 37753  module.exports = minor
 37754  
 37755  
 37756  /***/ }),
 37757  
 37758  /***/ 6017:
 37759  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37760  
 37761  const compare = __nccwpck_require__(44309)
 37762  const neq = (a, b, loose) => compare(a, b, loose) !== 0
 37763  module.exports = neq
 37764  
 37765  
 37766  /***/ }),
 37767  
 37768  /***/ 75925:
 37769  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37770  
 37771  const SemVer = __nccwpck_require__(48088)
 37772  const parse = (version, options, throwErrors = false) => {
 37773    if (version instanceof SemVer) {
 37774      return version
 37775    }
 37776    try {
 37777      return new SemVer(version, options)
 37778    } catch (er) {
 37779      if (!throwErrors) {
 37780        return null
 37781      }
 37782      throw er
 37783    }
 37784  }
 37785  
 37786  module.exports = parse
 37787  
 37788  
 37789  /***/ }),
 37790  
 37791  /***/ 42866:
 37792  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37793  
 37794  const SemVer = __nccwpck_require__(48088)
 37795  const patch = (a, loose) => new SemVer(a, loose).patch
 37796  module.exports = patch
 37797  
 37798  
 37799  /***/ }),
 37800  
 37801  /***/ 24016:
 37802  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37803  
 37804  const parse = __nccwpck_require__(75925)
 37805  const prerelease = (version, options) => {
 37806    const parsed = parse(version, options)
 37807    return (parsed && parsed.prerelease.length) ? parsed.prerelease : null
 37808  }
 37809  module.exports = prerelease
 37810  
 37811  
 37812  /***/ }),
 37813  
 37814  /***/ 76417:
 37815  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37816  
 37817  const compare = __nccwpck_require__(44309)
 37818  const rcompare = (a, b, loose) => compare(b, a, loose)
 37819  module.exports = rcompare
 37820  
 37821  
 37822  /***/ }),
 37823  
 37824  /***/ 8701:
 37825  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37826  
 37827  const compareBuild = __nccwpck_require__(92156)
 37828  const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))
 37829  module.exports = rsort
 37830  
 37831  
 37832  /***/ }),
 37833  
 37834  /***/ 6055:
 37835  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37836  
 37837  const Range = __nccwpck_require__(9828)
 37838  const satisfies = (version, range, options) => {
 37839    try {
 37840      range = new Range(range, options)
 37841    } catch (er) {
 37842      return false
 37843    }
 37844    return range.test(version)
 37845  }
 37846  module.exports = satisfies
 37847  
 37848  
 37849  /***/ }),
 37850  
 37851  /***/ 61426:
 37852  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37853  
 37854  const compareBuild = __nccwpck_require__(92156)
 37855  const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))
 37856  module.exports = sort
 37857  
 37858  
 37859  /***/ }),
 37860  
 37861  /***/ 19601:
 37862  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37863  
 37864  const parse = __nccwpck_require__(75925)
 37865  const valid = (version, options) => {
 37866    const v = parse(version, options)
 37867    return v ? v.version : null
 37868  }
 37869  module.exports = valid
 37870  
 37871  
 37872  /***/ }),
 37873  
 37874  /***/ 11383:
 37875  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 37876  
 37877  // just pre-load all the stuff that index.js lazily exports
 37878  const internalRe = __nccwpck_require__(92566)
 37879  const constants = __nccwpck_require__(42293)
 37880  const SemVer = __nccwpck_require__(48088)
 37881  const identifiers = __nccwpck_require__(92463)
 37882  const parse = __nccwpck_require__(75925)
 37883  const valid = __nccwpck_require__(19601)
 37884  const clean = __nccwpck_require__(48848)
 37885  const inc = __nccwpck_require__(30900)
 37886  const diff = __nccwpck_require__(64297)
 37887  const major = __nccwpck_require__(76688)
 37888  const minor = __nccwpck_require__(38447)
 37889  const patch = __nccwpck_require__(42866)
 37890  const prerelease = __nccwpck_require__(24016)
 37891  const compare = __nccwpck_require__(44309)
 37892  const rcompare = __nccwpck_require__(76417)
 37893  const compareLoose = __nccwpck_require__(62804)
 37894  const compareBuild = __nccwpck_require__(92156)
 37895  const sort = __nccwpck_require__(61426)
 37896  const rsort = __nccwpck_require__(8701)
 37897  const gt = __nccwpck_require__(84123)
 37898  const lt = __nccwpck_require__(80194)
 37899  const eq = __nccwpck_require__(91898)
 37900  const neq = __nccwpck_require__(6017)
 37901  const gte = __nccwpck_require__(15522)
 37902  const lte = __nccwpck_require__(77520)
 37903  const cmp = __nccwpck_require__(75098)
 37904  const coerce = __nccwpck_require__(13466)
 37905  const Comparator = __nccwpck_require__(91532)
 37906  const Range = __nccwpck_require__(9828)
 37907  const satisfies = __nccwpck_require__(6055)
 37908  const toComparators = __nccwpck_require__(52706)
 37909  const maxSatisfying = __nccwpck_require__(20579)
 37910  const minSatisfying = __nccwpck_require__(10832)
 37911  const minVersion = __nccwpck_require__(34179)
 37912  const validRange = __nccwpck_require__(2098)
 37913  const outside = __nccwpck_require__(60420)
 37914  const gtr = __nccwpck_require__(9380)
 37915  const ltr = __nccwpck_require__(33323)
 37916  const intersects = __nccwpck_require__(27008)
 37917  const simplifyRange = __nccwpck_require__(75297)
 37918  const subset = __nccwpck_require__(7863)
 37919  module.exports = {
 37920    parse,
 37921    valid,
 37922    clean,
 37923    inc,
 37924    diff,
 37925    major,
 37926    minor,
 37927    patch,
 37928    prerelease,
 37929    compare,
 37930    rcompare,
 37931    compareLoose,
 37932    compareBuild,
 37933    sort,
 37934    rsort,
 37935    gt,
 37936    lt,
 37937    eq,
 37938    neq,
 37939    gte,
 37940    lte,
 37941    cmp,
 37942    coerce,
 37943    Comparator,
 37944    Range,
 37945    satisfies,
 37946    toComparators,
 37947    maxSatisfying,
 37948    minSatisfying,
 37949    minVersion,
 37950    validRange,
 37951    outside,
 37952    gtr,
 37953    ltr,
 37954    intersects,
 37955    simplifyRange,
 37956    subset,
 37957    SemVer,
 37958    re: internalRe.re,
 37959    src: internalRe.src,
 37960    tokens: internalRe.t,
 37961    SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,
 37962    RELEASE_TYPES: constants.RELEASE_TYPES,
 37963    compareIdentifiers: identifiers.compareIdentifiers,
 37964    rcompareIdentifiers: identifiers.rcompareIdentifiers,
 37965  }
 37966  
 37967  
 37968  /***/ }),
 37969  
 37970  /***/ 42293:
 37971  /***/ ((module) => {
 37972  
 37973  // Note: this is the semver.org version of the spec that it implements
 37974  // Not necessarily the package version of this code.
 37975  const SEMVER_SPEC_VERSION = '2.0.0'
 37976  
 37977  const MAX_LENGTH = 256
 37978  const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
 37979  /* istanbul ignore next */ 9007199254740991
 37980  
 37981  // Max safe segment length for coercion.
 37982  const MAX_SAFE_COMPONENT_LENGTH = 16
 37983  
 37984  // Max safe length for a build identifier. The max length minus 6 characters for
 37985  // the shortest version with a build 0.0.0+BUILD.
 37986  const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6
 37987  
 37988  const RELEASE_TYPES = [
 37989    'major',
 37990    'premajor',
 37991    'minor',
 37992    'preminor',
 37993    'patch',
 37994    'prepatch',
 37995    'prerelease',
 37996  ]
 37997  
 37998  module.exports = {
 37999    MAX_LENGTH,
 38000    MAX_SAFE_COMPONENT_LENGTH,
 38001    MAX_SAFE_BUILD_LENGTH,
 38002    MAX_SAFE_INTEGER,
 38003    RELEASE_TYPES,
 38004    SEMVER_SPEC_VERSION,
 38005    FLAG_INCLUDE_PRERELEASE: 0b001,
 38006    FLAG_LOOSE: 0b010,
 38007  }
 38008  
 38009  
 38010  /***/ }),
 38011  
 38012  /***/ 50427:
 38013  /***/ ((module) => {
 38014  
 38015  const debug = (
 38016    typeof process === 'object' &&
 38017    process.env &&
 38018    process.env.NODE_DEBUG &&
 38019    /\bsemver\b/i.test(process.env.NODE_DEBUG)
 38020  ) ? (...args) => console.error('SEMVER', ...args)
 38021    : () => {}
 38022  
 38023  module.exports = debug
 38024  
 38025  
 38026  /***/ }),
 38027  
 38028  /***/ 92463:
 38029  /***/ ((module) => {
 38030  
 38031  const numeric = /^[0-9]+$/
 38032  const compareIdentifiers = (a, b) => {
 38033    const anum = numeric.test(a)
 38034    const bnum = numeric.test(b)
 38035  
 38036    if (anum && bnum) {
 38037      a = +a
 38038      b = +b
 38039    }
 38040  
 38041    return a === b ? 0
 38042      : (anum && !bnum) ? -1
 38043      : (bnum && !anum) ? 1
 38044      : a < b ? -1
 38045      : 1
 38046  }
 38047  
 38048  const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)
 38049  
 38050  module.exports = {
 38051    compareIdentifiers,
 38052    rcompareIdentifiers,
 38053  }
 38054  
 38055  
 38056  /***/ }),
 38057  
 38058  /***/ 40785:
 38059  /***/ ((module) => {
 38060  
 38061  // parse out just the options we care about
 38062  const looseOption = Object.freeze({ loose: true })
 38063  const emptyOpts = Object.freeze({ })
 38064  const parseOptions = options => {
 38065    if (!options) {
 38066      return emptyOpts
 38067    }
 38068  
 38069    if (typeof options !== 'object') {
 38070      return looseOption
 38071    }
 38072  
 38073    return options
 38074  }
 38075  module.exports = parseOptions
 38076  
 38077  
 38078  /***/ }),
 38079  
 38080  /***/ 92566:
 38081  /***/ ((module, exports, __nccwpck_require__) => {
 38082  
 38083  const {
 38084    MAX_SAFE_COMPONENT_LENGTH,
 38085    MAX_SAFE_BUILD_LENGTH,
 38086    MAX_LENGTH,
 38087  } = __nccwpck_require__(42293)
 38088  const debug = __nccwpck_require__(50427)
 38089  exports = module.exports = {}
 38090  
 38091  // The actual regexps go on exports.re
 38092  const re = exports.re = []
 38093  const safeRe = exports.safeRe = []
 38094  const src = exports.src = []
 38095  const t = exports.t = {}
 38096  let R = 0
 38097  
 38098  const LETTERDASHNUMBER = '[a-zA-Z0-9-]'
 38099  
 38100  // Replace some greedy regex tokens to prevent regex dos issues. These regex are
 38101  // used internally via the safeRe object since all inputs in this library get
 38102  // normalized first to trim and collapse all extra whitespace. The original
 38103  // regexes are exported for userland consumption and lower level usage. A
 38104  // future breaking change could export the safer regex only with a note that
 38105  // all input should have extra whitespace removed.
 38106  const safeRegexReplacements = [
 38107    ['\\s', 1],
 38108    ['\\d', MAX_LENGTH],
 38109    [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],
 38110  ]
 38111  
 38112  const makeSafeRegex = (value) => {
 38113    for (const [token, max] of safeRegexReplacements) {
 38114      value = value
 38115        .split(`${token}*`).join(`${token}{0,${max}}`)
 38116        .split(`${token}+`).join(`${token}{1,${max}}`)
 38117    }
 38118    return value
 38119  }
 38120  
 38121  const createToken = (name, value, isGlobal) => {
 38122    const safe = makeSafeRegex(value)
 38123    const index = R++
 38124    debug(name, index, value)
 38125    t[name] = index
 38126    src[index] = value
 38127    re[index] = new RegExp(value, isGlobal ? 'g' : undefined)
 38128    safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)
 38129  }
 38130  
 38131  // The following Regular Expressions can be used for tokenizing,
 38132  // validating, and parsing SemVer version strings.
 38133  
 38134  // ## Numeric Identifier
 38135  // A single `0`, or a non-zero digit followed by zero or more digits.
 38136  
 38137  createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*')
 38138  createToken('NUMERICIDENTIFIERLOOSE', '\\d+')
 38139  
 38140  // ## Non-numeric Identifier
 38141  // Zero or more digits, followed by a letter or hyphen, and then zero or
 38142  // more letters, digits, or hyphens.
 38143  
 38144  createToken('NONNUMERICIDENTIFIER', `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)
 38145  
 38146  // ## Main Version
 38147  // Three dot-separated numeric identifiers.
 38148  
 38149  createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` +
 38150                     `(${src[t.NUMERICIDENTIFIER]})\\.` +
 38151                     `(${src[t.NUMERICIDENTIFIER]})`)
 38152  
 38153  createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
 38154                          `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` +
 38155                          `(${src[t.NUMERICIDENTIFIERLOOSE]})`)
 38156  
 38157  // ## Pre-release Version Identifier
 38158  // A numeric identifier, or a non-numeric identifier.
 38159  
 38160  createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]
 38161  }|${src[t.NONNUMERICIDENTIFIER]})`)
 38162  
 38163  createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]
 38164  }|${src[t.NONNUMERICIDENTIFIER]})`)
 38165  
 38166  // ## Pre-release Version
 38167  // Hyphen, followed by one or more dot-separated pre-release version
 38168  // identifiers.
 38169  
 38170  createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]
 38171  }(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`)
 38172  
 38173  createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]
 38174  }(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)
 38175  
 38176  // ## Build Metadata Identifier
 38177  // Any combination of digits, letters, or hyphens.
 38178  
 38179  createToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)
 38180  
 38181  // ## Build Metadata
 38182  // Plus sign, followed by one or more period-separated build metadata
 38183  // identifiers.
 38184  
 38185  createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER]
 38186  }(?:\\.${src[t.BUILDIDENTIFIER]})*))`)
 38187  
 38188  // ## Full Version String
 38189  // A main version, followed optionally by a pre-release version and
 38190  // build metadata.
 38191  
 38192  // Note that the only major, minor, patch, and pre-release sections of
 38193  // the version string are capturing groups.  The build metadata is not a
 38194  // capturing group, because it should not ever be used in version
 38195  // comparison.
 38196  
 38197  createToken('FULLPLAIN', `v?${src[t.MAINVERSION]
 38198  }${src[t.PRERELEASE]}?${
 38199    src[t.BUILD]}?`)
 38200  
 38201  createToken('FULL', `^${src[t.FULLPLAIN]}$`)
 38202  
 38203  // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
 38204  // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
 38205  // common in the npm registry.
 38206  createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE]
 38207  }${src[t.PRERELEASELOOSE]}?${
 38208    src[t.BUILD]}?`)
 38209  
 38210  createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)
 38211  
 38212  createToken('GTLT', '((?:<|>)?=?)')
 38213  
 38214  // Something like "2.*" or "1.2.x".
 38215  // Note that "x.x" is a valid xRange identifer, meaning "any version"
 38216  // Only the first item is strictly required.
 38217  createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`)
 38218  createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`)
 38219  
 38220  createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` +
 38221                     `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
 38222                     `(?:\\.(${src[t.XRANGEIDENTIFIER]})` +
 38223                     `(?:${src[t.PRERELEASE]})?${
 38224                       src[t.BUILD]}?` +
 38225                     `)?)?`)
 38226  
 38227  createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +
 38228                          `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
 38229                          `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +
 38230                          `(?:${src[t.PRERELEASELOOSE]})?${
 38231                            src[t.BUILD]}?` +
 38232                          `)?)?`)
 38233  
 38234  createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`)
 38235  createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`)
 38236  
 38237  // Coercion.
 38238  // Extract anything that could conceivably be a part of a valid semver
 38239  createToken('COERCE', `${'(^|[^\\d])' +
 38240                '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +
 38241                `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
 38242                `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +
 38243                `(?:$|[^\\d])`)
 38244  createToken('COERCERTL', src[t.COERCE], true)
 38245  
 38246  // Tilde ranges.
 38247  // Meaning is "reasonably at or greater than"
 38248  createToken('LONETILDE', '(?:~>?)')
 38249  
 38250  createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true)
 38251  exports.tildeTrimReplace = '$1~'
 38252  
 38253  createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)
 38254  createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)
 38255  
 38256  // Caret ranges.
 38257  // Meaning is "at least and backwards compatible with"
 38258  createToken('LONECARET', '(?:\\^)')
 38259  
 38260  createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true)
 38261  exports.caretTrimReplace = '$1^'
 38262  
 38263  createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)
 38264  createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)
 38265  
 38266  // A simple gt/lt/eq thing, or just "" to indicate "any version"
 38267  createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`)
 38268  createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`)
 38269  
 38270  // An expression to strip any whitespace between the gtlt and the thing
 38271  // it modifies, so that `> 1.2.3` ==> `>1.2.3`
 38272  createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT]
 38273  }\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)
 38274  exports.comparatorTrimReplace = '$1$2$3'
 38275  
 38276  // Something like `1.2.3 - 1.2.4`
 38277  // Note that these all use the loose form, because they'll be
 38278  // checked against either the strict or loose comparator form
 38279  // later.
 38280  createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` +
 38281                     `\\s+-\\s+` +
 38282                     `(${src[t.XRANGEPLAIN]})` +
 38283                     `\\s*$`)
 38284  
 38285  createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` +
 38286                          `\\s+-\\s+` +
 38287                          `(${src[t.XRANGEPLAINLOOSE]})` +
 38288                          `\\s*$`)
 38289  
 38290  // Star ranges basically just allow anything at all.
 38291  createToken('STAR', '(<|>)?=?\\s*\\*')
 38292  // >=0.0.0 is like a star
 38293  createToken('GTE0', '^\\s*>=\\s*0\\.0\\.0\\s*$')
 38294  createToken('GTE0PRE', '^\\s*>=\\s*0\\.0\\.0-0\\s*$')
 38295  
 38296  
 38297  /***/ }),
 38298  
 38299  /***/ 9380:
 38300  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 38301  
 38302  // Determine if version is greater than all the versions possible in the range.
 38303  const outside = __nccwpck_require__(60420)
 38304  const gtr = (version, range, options) => outside(version, range, '>', options)
 38305  module.exports = gtr
 38306  
 38307  
 38308  /***/ }),
 38309  
 38310  /***/ 27008:
 38311  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 38312  
 38313  const Range = __nccwpck_require__(9828)
 38314  const intersects = (r1, r2, options) => {
 38315    r1 = new Range(r1, options)
 38316    r2 = new Range(r2, options)
 38317    return r1.intersects(r2, options)
 38318  }
 38319  module.exports = intersects
 38320  
 38321  
 38322  /***/ }),
 38323  
 38324  /***/ 33323:
 38325  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 38326  
 38327  const outside = __nccwpck_require__(60420)
 38328  // Determine if version is less than all the versions possible in the range
 38329  const ltr = (version, range, options) => outside(version, range, '<', options)
 38330  module.exports = ltr
 38331  
 38332  
 38333  /***/ }),
 38334  
 38335  /***/ 20579:
 38336  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 38337  
 38338  const SemVer = __nccwpck_require__(48088)
 38339  const Range = __nccwpck_require__(9828)
 38340  
 38341  const maxSatisfying = (versions, range, options) => {
 38342    let max = null
 38343    let maxSV = null
 38344    let rangeObj = null
 38345    try {
 38346      rangeObj = new Range(range, options)
 38347    } catch (er) {
 38348      return null
 38349    }
 38350    versions.forEach((v) => {
 38351      if (rangeObj.test(v)) {
 38352        // satisfies(v, range, options)
 38353        if (!max || maxSV.compare(v) === -1) {
 38354          // compare(max, v, true)
 38355          max = v
 38356          maxSV = new SemVer(max, options)
 38357        }
 38358      }
 38359    })
 38360    return max
 38361  }
 38362  module.exports = maxSatisfying
 38363  
 38364  
 38365  /***/ }),
 38366  
 38367  /***/ 10832:
 38368  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 38369  
 38370  const SemVer = __nccwpck_require__(48088)
 38371  const Range = __nccwpck_require__(9828)
 38372  const minSatisfying = (versions, range, options) => {
 38373    let min = null
 38374    let minSV = null
 38375    let rangeObj = null
 38376    try {
 38377      rangeObj = new Range(range, options)
 38378    } catch (er) {
 38379      return null
 38380    }
 38381    versions.forEach((v) => {
 38382      if (rangeObj.test(v)) {
 38383        // satisfies(v, range, options)
 38384        if (!min || minSV.compare(v) === 1) {
 38385          // compare(min, v, true)
 38386          min = v
 38387          minSV = new SemVer(min, options)
 38388        }
 38389      }
 38390    })
 38391    return min
 38392  }
 38393  module.exports = minSatisfying
 38394  
 38395  
 38396  /***/ }),
 38397  
 38398  /***/ 34179:
 38399  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 38400  
 38401  const SemVer = __nccwpck_require__(48088)
 38402  const Range = __nccwpck_require__(9828)
 38403  const gt = __nccwpck_require__(84123)
 38404  
 38405  const minVersion = (range, loose) => {
 38406    range = new Range(range, loose)
 38407  
 38408    let minver = new SemVer('0.0.0')
 38409    if (range.test(minver)) {
 38410      return minver
 38411    }
 38412  
 38413    minver = new SemVer('0.0.0-0')
 38414    if (range.test(minver)) {
 38415      return minver
 38416    }
 38417  
 38418    minver = null
 38419    for (let i = 0; i < range.set.length; ++i) {
 38420      const comparators = range.set[i]
 38421  
 38422      let setMin = null
 38423      comparators.forEach((comparator) => {
 38424        // Clone to avoid manipulating the comparator's semver object.
 38425        const compver = new SemVer(comparator.semver.version)
 38426        switch (comparator.operator) {
 38427          case '>':
 38428            if (compver.prerelease.length === 0) {
 38429              compver.patch++
 38430            } else {
 38431              compver.prerelease.push(0)
 38432            }
 38433            compver.raw = compver.format()
 38434            /* fallthrough */
 38435          case '':
 38436          case '>=':
 38437            if (!setMin || gt(compver, setMin)) {
 38438              setMin = compver
 38439            }
 38440            break
 38441          case '<':
 38442          case '<=':
 38443            /* Ignore maximum versions */
 38444            break
 38445          /* istanbul ignore next */
 38446          default:
 38447            throw new Error(`Unexpected operation: ${comparator.operator}`)
 38448        }
 38449      })
 38450      if (setMin && (!minver || gt(minver, setMin))) {
 38451        minver = setMin
 38452      }
 38453    }
 38454  
 38455    if (minver && range.test(minver)) {
 38456      return minver
 38457    }
 38458  
 38459    return null
 38460  }
 38461  module.exports = minVersion
 38462  
 38463  
 38464  /***/ }),
 38465  
 38466  /***/ 60420:
 38467  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 38468  
 38469  const SemVer = __nccwpck_require__(48088)
 38470  const Comparator = __nccwpck_require__(91532)
 38471  const { ANY } = Comparator
 38472  const Range = __nccwpck_require__(9828)
 38473  const satisfies = __nccwpck_require__(6055)
 38474  const gt = __nccwpck_require__(84123)
 38475  const lt = __nccwpck_require__(80194)
 38476  const lte = __nccwpck_require__(77520)
 38477  const gte = __nccwpck_require__(15522)
 38478  
 38479  const outside = (version, range, hilo, options) => {
 38480    version = new SemVer(version, options)
 38481    range = new Range(range, options)
 38482  
 38483    let gtfn, ltefn, ltfn, comp, ecomp
 38484    switch (hilo) {
 38485      case '>':
 38486        gtfn = gt
 38487        ltefn = lte
 38488        ltfn = lt
 38489        comp = '>'
 38490        ecomp = '>='
 38491        break
 38492      case '<':
 38493        gtfn = lt
 38494        ltefn = gte
 38495        ltfn = gt
 38496        comp = '<'
 38497        ecomp = '<='
 38498        break
 38499      default:
 38500        throw new TypeError('Must provide a hilo val of "<" or ">"')
 38501    }
 38502  
 38503    // If it satisfies the range it is not outside
 38504    if (satisfies(version, range, options)) {
 38505      return false
 38506    }
 38507  
 38508    // From now on, variable terms are as if we're in "gtr" mode.
 38509    // but note that everything is flipped for the "ltr" function.
 38510  
 38511    for (let i = 0; i < range.set.length; ++i) {
 38512      const comparators = range.set[i]
 38513  
 38514      let high = null
 38515      let low = null
 38516  
 38517      comparators.forEach((comparator) => {
 38518        if (comparator.semver === ANY) {
 38519          comparator = new Comparator('>=0.0.0')
 38520        }
 38521        high = high || comparator
 38522        low = low || comparator
 38523        if (gtfn(comparator.semver, high.semver, options)) {
 38524          high = comparator
 38525        } else if (ltfn(comparator.semver, low.semver, options)) {
 38526          low = comparator
 38527        }
 38528      })
 38529  
 38530      // If the edge version comparator has a operator then our version
 38531      // isn't outside it
 38532      if (high.operator === comp || high.operator === ecomp) {
 38533        return false
 38534      }
 38535  
 38536      // If the lowest version comparator has an operator and our version
 38537      // is less than it then it isn't higher than the range
 38538      if ((!low.operator || low.operator === comp) &&
 38539          ltefn(version, low.semver)) {
 38540        return false
 38541      } else if (low.operator === ecomp && ltfn(version, low.semver)) {
 38542        return false
 38543      }
 38544    }
 38545    return true
 38546  }
 38547  
 38548  module.exports = outside
 38549  
 38550  
 38551  /***/ }),
 38552  
 38553  /***/ 75297:
 38554  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 38555  
 38556  // given a set of versions and a range, create a "simplified" range
 38557  // that includes the same versions that the original range does
 38558  // If the original range is shorter than the simplified one, return that.
 38559  const satisfies = __nccwpck_require__(6055)
 38560  const compare = __nccwpck_require__(44309)
 38561  module.exports = (versions, range, options) => {
 38562    const set = []
 38563    let first = null
 38564    let prev = null
 38565    const v = versions.sort((a, b) => compare(a, b, options))
 38566    for (const version of v) {
 38567      const included = satisfies(version, range, options)
 38568      if (included) {
 38569        prev = version
 38570        if (!first) {
 38571          first = version
 38572        }
 38573      } else {
 38574        if (prev) {
 38575          set.push([first, prev])
 38576        }
 38577        prev = null
 38578        first = null
 38579      }
 38580    }
 38581    if (first) {
 38582      set.push([first, null])
 38583    }
 38584  
 38585    const ranges = []
 38586    for (const [min, max] of set) {
 38587      if (min === max) {
 38588        ranges.push(min)
 38589      } else if (!max && min === v[0]) {
 38590        ranges.push('*')
 38591      } else if (!max) {
 38592        ranges.push(`>=${min}`)
 38593      } else if (min === v[0]) {
 38594        ranges.push(`<=${max}`)
 38595      } else {
 38596        ranges.push(`${min} - ${max}`)
 38597      }
 38598    }
 38599    const simplified = ranges.join(' || ')
 38600    const original = typeof range.raw === 'string' ? range.raw : String(range)
 38601    return simplified.length < original.length ? simplified : range
 38602  }
 38603  
 38604  
 38605  /***/ }),
 38606  
 38607  /***/ 7863:
 38608  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 38609  
 38610  const Range = __nccwpck_require__(9828)
 38611  const Comparator = __nccwpck_require__(91532)
 38612  const { ANY } = Comparator
 38613  const satisfies = __nccwpck_require__(6055)
 38614  const compare = __nccwpck_require__(44309)
 38615  
 38616  // Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:
 38617  // - Every simple range `r1, r2, ...` is a null set, OR
 38618  // - Every simple range `r1, r2, ...` which is not a null set is a subset of
 38619  //   some `R1, R2, ...`
 38620  //
 38621  // Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:
 38622  // - If c is only the ANY comparator
 38623  //   - If C is only the ANY comparator, return true
 38624  //   - Else if in prerelease mode, return false
 38625  //   - else replace c with `[>=0.0.0]`
 38626  // - If C is only the ANY comparator
 38627  //   - if in prerelease mode, return true
 38628  //   - else replace C with `[>=0.0.0]`
 38629  // - Let EQ be the set of = comparators in c
 38630  // - If EQ is more than one, return true (null set)
 38631  // - Let GT be the highest > or >= comparator in c
 38632  // - Let LT be the lowest < or <= comparator in c
 38633  // - If GT and LT, and GT.semver > LT.semver, return true (null set)
 38634  // - If any C is a = range, and GT or LT are set, return false
 38635  // - If EQ
 38636  //   - If GT, and EQ does not satisfy GT, return true (null set)
 38637  //   - If LT, and EQ does not satisfy LT, return true (null set)
 38638  //   - If EQ satisfies every C, return true
 38639  //   - Else return false
 38640  // - If GT
 38641  //   - If GT.semver is lower than any > or >= comp in C, return false
 38642  //   - If GT is >=, and GT.semver does not satisfy every C, return false
 38643  //   - If GT.semver has a prerelease, and not in prerelease mode
 38644  //     - If no C has a prerelease and the GT.semver tuple, return false
 38645  // - If LT
 38646  //   - If LT.semver is greater than any < or <= comp in C, return false
 38647  //   - If LT is <=, and LT.semver does not satisfy every C, return false
 38648  //   - If GT.semver has a prerelease, and not in prerelease mode
 38649  //     - If no C has a prerelease and the LT.semver tuple, return false
 38650  // - Else return true
 38651  
 38652  const subset = (sub, dom, options = {}) => {
 38653    if (sub === dom) {
 38654      return true
 38655    }
 38656  
 38657    sub = new Range(sub, options)
 38658    dom = new Range(dom, options)
 38659    let sawNonNull = false
 38660  
 38661    OUTER: for (const simpleSub of sub.set) {
 38662      for (const simpleDom of dom.set) {
 38663        const isSub = simpleSubset(simpleSub, simpleDom, options)
 38664        sawNonNull = sawNonNull || isSub !== null
 38665        if (isSub) {
 38666          continue OUTER
 38667        }
 38668      }
 38669      // the null set is a subset of everything, but null simple ranges in
 38670      // a complex range should be ignored.  so if we saw a non-null range,
 38671      // then we know this isn't a subset, but if EVERY simple range was null,
 38672      // then it is a subset.
 38673      if (sawNonNull) {
 38674        return false
 38675      }
 38676    }
 38677    return true
 38678  }
 38679  
 38680  const minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]
 38681  const minimumVersion = [new Comparator('>=0.0.0')]
 38682  
 38683  const simpleSubset = (sub, dom, options) => {
 38684    if (sub === dom) {
 38685      return true
 38686    }
 38687  
 38688    if (sub.length === 1 && sub[0].semver === ANY) {
 38689      if (dom.length === 1 && dom[0].semver === ANY) {
 38690        return true
 38691      } else if (options.includePrerelease) {
 38692        sub = minimumVersionWithPreRelease
 38693      } else {
 38694        sub = minimumVersion
 38695      }
 38696    }
 38697  
 38698    if (dom.length === 1 && dom[0].semver === ANY) {
 38699      if (options.includePrerelease) {
 38700        return true
 38701      } else {
 38702        dom = minimumVersion
 38703      }
 38704    }
 38705  
 38706    const eqSet = new Set()
 38707    let gt, lt
 38708    for (const c of sub) {
 38709      if (c.operator === '>' || c.operator === '>=') {
 38710        gt = higherGT(gt, c, options)
 38711      } else if (c.operator === '<' || c.operator === '<=') {
 38712        lt = lowerLT(lt, c, options)
 38713      } else {
 38714        eqSet.add(c.semver)
 38715      }
 38716    }
 38717  
 38718    if (eqSet.size > 1) {
 38719      return null
 38720    }
 38721  
 38722    let gtltComp
 38723    if (gt && lt) {
 38724      gtltComp = compare(gt.semver, lt.semver, options)
 38725      if (gtltComp > 0) {
 38726        return null
 38727      } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {
 38728        return null
 38729      }
 38730    }
 38731  
 38732    // will iterate one or zero times
 38733    for (const eq of eqSet) {
 38734      if (gt && !satisfies(eq, String(gt), options)) {
 38735        return null
 38736      }
 38737  
 38738      if (lt && !satisfies(eq, String(lt), options)) {
 38739        return null
 38740      }
 38741  
 38742      for (const c of dom) {
 38743        if (!satisfies(eq, String(c), options)) {
 38744          return false
 38745        }
 38746      }
 38747  
 38748      return true
 38749    }
 38750  
 38751    let higher, lower
 38752    let hasDomLT, hasDomGT
 38753    // if the subset has a prerelease, we need a comparator in the superset
 38754    // with the same tuple and a prerelease, or it's not a subset
 38755    let needDomLTPre = lt &&
 38756      !options.includePrerelease &&
 38757      lt.semver.prerelease.length ? lt.semver : false
 38758    let needDomGTPre = gt &&
 38759      !options.includePrerelease &&
 38760      gt.semver.prerelease.length ? gt.semver : false
 38761    // exception: <1.2.3-0 is the same as <1.2.3
 38762    if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&
 38763        lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {
 38764      needDomLTPre = false
 38765    }
 38766  
 38767    for (const c of dom) {
 38768      hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='
 38769      hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='
 38770      if (gt) {
 38771        if (needDomGTPre) {
 38772          if (c.semver.prerelease && c.semver.prerelease.length &&
 38773              c.semver.major === needDomGTPre.major &&
 38774              c.semver.minor === needDomGTPre.minor &&
 38775              c.semver.patch === needDomGTPre.patch) {
 38776            needDomGTPre = false
 38777          }
 38778        }
 38779        if (c.operator === '>' || c.operator === '>=') {
 38780          higher = higherGT(gt, c, options)
 38781          if (higher === c && higher !== gt) {
 38782            return false
 38783          }
 38784        } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {
 38785          return false
 38786        }
 38787      }
 38788      if (lt) {
 38789        if (needDomLTPre) {
 38790          if (c.semver.prerelease && c.semver.prerelease.length &&
 38791              c.semver.major === needDomLTPre.major &&
 38792              c.semver.minor === needDomLTPre.minor &&
 38793              c.semver.patch === needDomLTPre.patch) {
 38794            needDomLTPre = false
 38795          }
 38796        }
 38797        if (c.operator === '<' || c.operator === '<=') {
 38798          lower = lowerLT(lt, c, options)
 38799          if (lower === c && lower !== lt) {
 38800            return false
 38801          }
 38802        } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {
 38803          return false
 38804        }
 38805      }
 38806      if (!c.operator && (lt || gt) && gtltComp !== 0) {
 38807        return false
 38808      }
 38809    }
 38810  
 38811    // if there was a < or >, and nothing in the dom, then must be false
 38812    // UNLESS it was limited by another range in the other direction.
 38813    // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0
 38814    if (gt && hasDomLT && !lt && gtltComp !== 0) {
 38815      return false
 38816    }
 38817  
 38818    if (lt && hasDomGT && !gt && gtltComp !== 0) {
 38819      return false
 38820    }
 38821  
 38822    // we needed a prerelease range in a specific tuple, but didn't get one
 38823    // then this isn't a subset.  eg >=1.2.3-pre is not a subset of >=1.0.0,
 38824    // because it includes prereleases in the 1.2.3 tuple
 38825    if (needDomGTPre || needDomLTPre) {
 38826      return false
 38827    }
 38828  
 38829    return true
 38830  }
 38831  
 38832  // >=1.2.3 is lower than >1.2.3
 38833  const higherGT = (a, b, options) => {
 38834    if (!a) {
 38835      return b
 38836    }
 38837    const comp = compare(a.semver, b.semver, options)
 38838    return comp > 0 ? a
 38839      : comp < 0 ? b
 38840      : b.operator === '>' && a.operator === '>=' ? b
 38841      : a
 38842  }
 38843  
 38844  // <=1.2.3 is higher than <1.2.3
 38845  const lowerLT = (a, b, options) => {
 38846    if (!a) {
 38847      return b
 38848    }
 38849    const comp = compare(a.semver, b.semver, options)
 38850    return comp < 0 ? a
 38851      : comp > 0 ? b
 38852      : b.operator === '<' && a.operator === '<=' ? b
 38853      : a
 38854  }
 38855  
 38856  module.exports = subset
 38857  
 38858  
 38859  /***/ }),
 38860  
 38861  /***/ 52706:
 38862  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 38863  
 38864  const Range = __nccwpck_require__(9828)
 38865  
 38866  // Mostly just for testing and legacy API reasons
 38867  const toComparators = (range, options) =>
 38868    new Range(range, options).set
 38869      .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))
 38870  
 38871  module.exports = toComparators
 38872  
 38873  
 38874  /***/ }),
 38875  
 38876  /***/ 2098:
 38877  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 38878  
 38879  const Range = __nccwpck_require__(9828)
 38880  const validRange = (range, options) => {
 38881    try {
 38882      // Return '*' instead of '' so that truthiness works.
 38883      // This will throw if it's invalid anyway
 38884      return new Range(range, options).range || '*'
 38885    } catch (er) {
 38886      return null
 38887    }
 38888  }
 38889  module.exports = validRange
 38890  
 38891  
 38892  /***/ }),
 38893  
 38894  /***/ 63430:
 38895  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 38896  
 38897  "use strict";
 38898  
 38899  Object.defineProperty(exports, "__esModule", ({ value: true }));
 38900  exports.createVerificationPolicy = exports.createKeyFinder = exports.createBundleBuilder = exports.DEFAULT_TIMEOUT = exports.DEFAULT_RETRY = void 0;
 38901  /*
 38902  Copyright 2023 The Sigstore Authors.
 38903  
 38904  Licensed under the Apache License, Version 2.0 (the "License");
 38905  you may not use this file except in compliance with the License.
 38906  You may obtain a copy of the License at
 38907  
 38908      http://www.apache.org/licenses/LICENSE-2.0
 38909  
 38910  Unless required by applicable law or agreed to in writing, software
 38911  distributed under the License is distributed on an "AS IS" BASIS,
 38912  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 38913  See the License for the specific language governing permissions and
 38914  limitations under the License.
 38915  */
 38916  const core_1 = __nccwpck_require__(3352);
 38917  const sign_1 = __nccwpck_require__(42071);
 38918  const verify_1 = __nccwpck_require__(10666);
 38919  exports.DEFAULT_RETRY = { retries: 2 };
 38920  exports.DEFAULT_TIMEOUT = 5000;
 38921  function createBundleBuilder(bundleType, options) {
 38922      const bundlerOptions = {
 38923          signer: initSigner(options),
 38924          witnesses: initWitnesses(options),
 38925      };
 38926      switch (bundleType) {
 38927          case 'messageSignature':
 38928              return new sign_1.MessageSignatureBundleBuilder(bundlerOptions);
 38929          case 'dsseEnvelope':
 38930              return new sign_1.DSSEBundleBuilder(bundlerOptions);
 38931      }
 38932  }
 38933  exports.createBundleBuilder = createBundleBuilder;
 38934  // Translates the public KeySelector type into the KeyFinderFunc type needed by
 38935  // the verifier.
 38936  function createKeyFinder(keySelector) {
 38937      return (hint) => {
 38938          const key = keySelector(hint);
 38939          if (!key) {
 38940              throw new verify_1.VerificationError({
 38941                  code: 'PUBLIC_KEY_ERROR',
 38942                  message: `key not found: ${hint}`,
 38943              });
 38944          }
 38945          return {
 38946              publicKey: core_1.crypto.createPublicKey(key),
 38947              validFor: () => true,
 38948          };
 38949      };
 38950  }
 38951  exports.createKeyFinder = createKeyFinder;
 38952  function createVerificationPolicy(options) {
 38953      const policy = {};
 38954      const san = options.certificateIdentityEmail || options.certificateIdentityURI;
 38955      if (san) {
 38956          policy.subjectAlternativeName = san;
 38957      }
 38958      if (options.certificateIssuer) {
 38959          policy.extensions = { issuer: options.certificateIssuer };
 38960      }
 38961      return policy;
 38962  }
 38963  exports.createVerificationPolicy = createVerificationPolicy;
 38964  // Instantiate the FulcioSigner based on the supplied options.
 38965  function initSigner(options) {
 38966      return new sign_1.FulcioSigner({
 38967          fulcioBaseURL: options.fulcioURL,
 38968          identityProvider: options.identityProvider || initIdentityProvider(options),
 38969          retry: options.retry ?? exports.DEFAULT_RETRY,
 38970          timeout: options.timeout ?? exports.DEFAULT_TIMEOUT,
 38971      });
 38972  }
 38973  // Instantiate an identity provider based on the supplied options. If an
 38974  // explicit identity token is provided, use that. Otherwise, use the CI
 38975  // context provider.
 38976  function initIdentityProvider(options) {
 38977      const token = options.identityToken;
 38978      if (token) {
 38979          /* istanbul ignore next */
 38980          return { getToken: () => Promise.resolve(token) };
 38981      }
 38982      else {
 38983          return new sign_1.CIContextProvider('sigstore');
 38984      }
 38985  }
 38986  // Instantiate a collection of witnesses based on the supplied options.
 38987  function initWitnesses(options) {
 38988      const witnesses = [];
 38989      if (isRekorEnabled(options)) {
 38990          witnesses.push(new sign_1.RekorWitness({
 38991              rekorBaseURL: options.rekorURL,
 38992              fetchOnConflict: false,
 38993              retry: options.retry ?? exports.DEFAULT_RETRY,
 38994              timeout: options.timeout ?? exports.DEFAULT_TIMEOUT,
 38995          }));
 38996      }
 38997      if (isTSAEnabled(options)) {
 38998          witnesses.push(new sign_1.TSAWitness({
 38999              tsaBaseURL: options.tsaServerURL,
 39000              retry: options.retry ?? exports.DEFAULT_RETRY,
 39001              timeout: options.timeout ?? exports.DEFAULT_TIMEOUT,
 39002          }));
 39003      }
 39004      return witnesses;
 39005  }
 39006  // Type assertion to ensure that Rekor is enabled
 39007  function isRekorEnabled(options) {
 39008      return options.tlogUpload !== false;
 39009  }
 39010  // Type assertion to ensure that TSA is enabled
 39011  function isTSAEnabled(options) {
 39012      return options.tsaServerURL !== undefined;
 39013  }
 39014  
 39015  
 39016  /***/ }),
 39017  
 39018  /***/ 99149:
 39019  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 39020  
 39021  "use strict";
 39022  
 39023  Object.defineProperty(exports, "__esModule", ({ value: true }));
 39024  exports.verify = exports.sign = exports.createVerifier = exports.attest = exports.VerificationError = exports.PolicyError = exports.TUFError = exports.InternalError = exports.DEFAULT_REKOR_URL = exports.DEFAULT_FULCIO_URL = exports.ValidationError = void 0;
 39025  /*
 39026  Copyright 2022 The Sigstore Authors.
 39027  
 39028  Licensed under the Apache License, Version 2.0 (the "License");
 39029  you may not use this file except in compliance with the License.
 39030  You may obtain a copy of the License at
 39031  
 39032      http://www.apache.org/licenses/LICENSE-2.0
 39033  
 39034  Unless required by applicable law or agreed to in writing, software
 39035  distributed under the License is distributed on an "AS IS" BASIS,
 39036  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 39037  See the License for the specific language governing permissions and
 39038  limitations under the License.
 39039  */
 39040  var bundle_1 = __nccwpck_require__(29715);
 39041  Object.defineProperty(exports, "ValidationError", ({ enumerable: true, get: function () { return bundle_1.ValidationError; } }));
 39042  var sign_1 = __nccwpck_require__(42071);
 39043  Object.defineProperty(exports, "DEFAULT_FULCIO_URL", ({ enumerable: true, get: function () { return sign_1.DEFAULT_FULCIO_URL; } }));
 39044  Object.defineProperty(exports, "DEFAULT_REKOR_URL", ({ enumerable: true, get: function () { return sign_1.DEFAULT_REKOR_URL; } }));
 39045  Object.defineProperty(exports, "InternalError", ({ enumerable: true, get: function () { return sign_1.InternalError; } }));
 39046  var tuf_1 = __nccwpck_require__(88567);
 39047  Object.defineProperty(exports, "TUFError", ({ enumerable: true, get: function () { return tuf_1.TUFError; } }));
 39048  var verify_1 = __nccwpck_require__(10666);
 39049  Object.defineProperty(exports, "PolicyError", ({ enumerable: true, get: function () { return verify_1.PolicyError; } }));
 39050  Object.defineProperty(exports, "VerificationError", ({ enumerable: true, get: function () { return verify_1.VerificationError; } }));
 39051  var sigstore_1 = __nccwpck_require__(51111);
 39052  Object.defineProperty(exports, "attest", ({ enumerable: true, get: function () { return sigstore_1.attest; } }));
 39053  Object.defineProperty(exports, "createVerifier", ({ enumerable: true, get: function () { return sigstore_1.createVerifier; } }));
 39054  Object.defineProperty(exports, "sign", ({ enumerable: true, get: function () { return sigstore_1.sign; } }));
 39055  Object.defineProperty(exports, "verify", ({ enumerable: true, get: function () { return sigstore_1.verify; } }));
 39056  
 39057  
 39058  /***/ }),
 39059  
 39060  /***/ 51111:
 39061  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 39062  
 39063  "use strict";
 39064  
 39065  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 39066      if (k2 === undefined) k2 = k;
 39067      var desc = Object.getOwnPropertyDescriptor(m, k);
 39068      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 39069        desc = { enumerable: true, get: function() { return m[k]; } };
 39070      }
 39071      Object.defineProperty(o, k2, desc);
 39072  }) : (function(o, m, k, k2) {
 39073      if (k2 === undefined) k2 = k;
 39074      o[k2] = m[k];
 39075  }));
 39076  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 39077      Object.defineProperty(o, "default", { enumerable: true, value: v });
 39078  }) : function(o, v) {
 39079      o["default"] = v;
 39080  });
 39081  var __importStar = (this && this.__importStar) || function (mod) {
 39082      if (mod && mod.__esModule) return mod;
 39083      var result = {};
 39084      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 39085      __setModuleDefault(result, mod);
 39086      return result;
 39087  };
 39088  Object.defineProperty(exports, "__esModule", ({ value: true }));
 39089  exports.createVerifier = exports.verify = exports.attest = exports.sign = void 0;
 39090  /*
 39091  Copyright 2023 The Sigstore Authors.
 39092  
 39093  Licensed under the Apache License, Version 2.0 (the "License");
 39094  you may not use this file except in compliance with the License.
 39095  You may obtain a copy of the License at
 39096  
 39097      http://www.apache.org/licenses/LICENSE-2.0
 39098  
 39099  Unless required by applicable law or agreed to in writing, software
 39100  distributed under the License is distributed on an "AS IS" BASIS,
 39101  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 39102  See the License for the specific language governing permissions and
 39103  limitations under the License.
 39104  */
 39105  const bundle_1 = __nccwpck_require__(29715);
 39106  const tuf = __importStar(__nccwpck_require__(88567));
 39107  const verify_1 = __nccwpck_require__(10666);
 39108  const config = __importStar(__nccwpck_require__(63430));
 39109  async function sign(payload, 
 39110  /* istanbul ignore next */
 39111  options = {}) {
 39112      const bundler = config.createBundleBuilder('messageSignature', options);
 39113      const bundle = await bundler.create({ data: payload });
 39114      return (0, bundle_1.bundleToJSON)(bundle);
 39115  }
 39116  exports.sign = sign;
 39117  async function attest(payload, payloadType, 
 39118  /* istanbul ignore next */
 39119  options = {}) {
 39120      const bundler = config.createBundleBuilder('dsseEnvelope', options);
 39121      const bundle = await bundler.create({ data: payload, type: payloadType });
 39122      return (0, bundle_1.bundleToJSON)(bundle);
 39123  }
 39124  exports.attest = attest;
 39125  async function verify(bundle, dataOrOptions, options) {
 39126      let data;
 39127      if (Buffer.isBuffer(dataOrOptions)) {
 39128          data = dataOrOptions;
 39129      }
 39130      else {
 39131          options = dataOrOptions;
 39132      }
 39133      return createVerifier(options).then((verifier) => verifier.verify(bundle, data));
 39134  }
 39135  exports.verify = verify;
 39136  async function createVerifier(
 39137  /* istanbul ignore next */
 39138  options = {}) {
 39139      const trustedRoot = await tuf.getTrustedRoot({
 39140          mirrorURL: options.tufMirrorURL,
 39141          rootPath: options.tufRootPath,
 39142          cachePath: options.tufCachePath,
 39143          forceCache: options.tufForceCache,
 39144          retry: options.retry ?? config.DEFAULT_RETRY,
 39145          timeout: options.timeout ?? config.DEFAULT_TIMEOUT,
 39146      });
 39147      const keyFinder = options.keySelector
 39148          ? config.createKeyFinder(options.keySelector)
 39149          : undefined;
 39150      const trustMaterial = (0, verify_1.toTrustMaterial)(trustedRoot, keyFinder);
 39151      const verifierOptions = {
 39152          ctlogThreshold: options.ctLogThreshold,
 39153          tlogThreshold: options.tlogThreshold,
 39154      };
 39155      const verifier = new verify_1.Verifier(trustMaterial, verifierOptions);
 39156      const policy = config.createVerificationPolicy(options);
 39157      return {
 39158          verify: (bundle, payload) => {
 39159              const deserializedBundle = (0, bundle_1.bundleFromJSON)(bundle);
 39160              const signedEntity = (0, verify_1.toSignedEntity)(deserializedBundle, payload);
 39161              verifier.verify(signedEntity, policy);
 39162              return;
 39163          },
 39164      };
 39165  }
 39166  exports.createVerifier = createVerifier;
 39167  
 39168  
 39169  /***/ }),
 39170  
 39171  /***/ 71062:
 39172  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 39173  
 39174  "use strict";
 39175  
 39176  Object.defineProperty(exports, "__esModule", ({ value: true }));
 39177  const utils_1 = __nccwpck_require__(98132);
 39178  // The default Buffer size if one is not provided.
 39179  const DEFAULT_SMARTBUFFER_SIZE = 4096;
 39180  // The default string encoding to use for reading/writing strings.
 39181  const DEFAULT_SMARTBUFFER_ENCODING = 'utf8';
 39182  class SmartBuffer {
 39183      /**
 39184       * Creates a new SmartBuffer instance.
 39185       *
 39186       * @param options { SmartBufferOptions } The SmartBufferOptions to apply to this instance.
 39187       */
 39188      constructor(options) {
 39189          this.length = 0;
 39190          this._encoding = DEFAULT_SMARTBUFFER_ENCODING;
 39191          this._writeOffset = 0;
 39192          this._readOffset = 0;
 39193          if (SmartBuffer.isSmartBufferOptions(options)) {
 39194              // Checks for encoding
 39195              if (options.encoding) {
 39196                  utils_1.checkEncoding(options.encoding);
 39197                  this._encoding = options.encoding;
 39198              }
 39199              // Checks for initial size length
 39200              if (options.size) {
 39201                  if (utils_1.isFiniteInteger(options.size) && options.size > 0) {
 39202                      this._buff = Buffer.allocUnsafe(options.size);
 39203                  }
 39204                  else {
 39205                      throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_SIZE);
 39206                  }
 39207                  // Check for initial Buffer
 39208              }
 39209              else if (options.buff) {
 39210                  if (Buffer.isBuffer(options.buff)) {
 39211                      this._buff = options.buff;
 39212                      this.length = options.buff.length;
 39213                  }
 39214                  else {
 39215                      throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_BUFFER);
 39216                  }
 39217              }
 39218              else {
 39219                  this._buff = Buffer.allocUnsafe(DEFAULT_SMARTBUFFER_SIZE);
 39220              }
 39221          }
 39222          else {
 39223              // If something was passed but it's not a SmartBufferOptions object
 39224              if (typeof options !== 'undefined') {
 39225                  throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_OBJECT);
 39226              }
 39227              // Otherwise default to sane options
 39228              this._buff = Buffer.allocUnsafe(DEFAULT_SMARTBUFFER_SIZE);
 39229          }
 39230      }
 39231      /**
 39232       * Creates a new SmartBuffer instance with the provided internal Buffer size and optional encoding.
 39233       *
 39234       * @param size { Number } The size of the internal Buffer.
 39235       * @param encoding { String } The BufferEncoding to use for strings.
 39236       *
 39237       * @return { SmartBuffer }
 39238       */
 39239      static fromSize(size, encoding) {
 39240          return new this({
 39241              size: size,
 39242              encoding: encoding
 39243          });
 39244      }
 39245      /**
 39246       * Creates a new SmartBuffer instance with the provided Buffer and optional encoding.
 39247       *
 39248       * @param buffer { Buffer } The Buffer to use as the internal Buffer value.
 39249       * @param encoding { String } The BufferEncoding to use for strings.
 39250       *
 39251       * @return { SmartBuffer }
 39252       */
 39253      static fromBuffer(buff, encoding) {
 39254          return new this({
 39255              buff: buff,
 39256              encoding: encoding
 39257          });
 39258      }
 39259      /**
 39260       * Creates a new SmartBuffer instance with the provided SmartBufferOptions options.
 39261       *
 39262       * @param options { SmartBufferOptions } The options to use when creating the SmartBuffer instance.
 39263       */
 39264      static fromOptions(options) {
 39265          return new this(options);
 39266      }
 39267      /**
 39268       * Type checking function that determines if an object is a SmartBufferOptions object.
 39269       */
 39270      static isSmartBufferOptions(options) {
 39271          const castOptions = options;
 39272          return (castOptions &&
 39273              (castOptions.encoding !== undefined || castOptions.size !== undefined || castOptions.buff !== undefined));
 39274      }
 39275      // Signed integers
 39276      /**
 39277       * Reads an Int8 value from the current read position or an optionally provided offset.
 39278       *
 39279       * @param offset { Number } The offset to read data from (optional)
 39280       * @return { Number }
 39281       */
 39282      readInt8(offset) {
 39283          return this._readNumberValue(Buffer.prototype.readInt8, 1, offset);
 39284      }
 39285      /**
 39286       * Reads an Int16BE value from the current read position or an optionally provided offset.
 39287       *
 39288       * @param offset { Number } The offset to read data from (optional)
 39289       * @return { Number }
 39290       */
 39291      readInt16BE(offset) {
 39292          return this._readNumberValue(Buffer.prototype.readInt16BE, 2, offset);
 39293      }
 39294      /**
 39295       * Reads an Int16LE value from the current read position or an optionally provided offset.
 39296       *
 39297       * @param offset { Number } The offset to read data from (optional)
 39298       * @return { Number }
 39299       */
 39300      readInt16LE(offset) {
 39301          return this._readNumberValue(Buffer.prototype.readInt16LE, 2, offset);
 39302      }
 39303      /**
 39304       * Reads an Int32BE value from the current read position or an optionally provided offset.
 39305       *
 39306       * @param offset { Number } The offset to read data from (optional)
 39307       * @return { Number }
 39308       */
 39309      readInt32BE(offset) {
 39310          return this._readNumberValue(Buffer.prototype.readInt32BE, 4, offset);
 39311      }
 39312      /**
 39313       * Reads an Int32LE value from the current read position or an optionally provided offset.
 39314       *
 39315       * @param offset { Number } The offset to read data from (optional)
 39316       * @return { Number }
 39317       */
 39318      readInt32LE(offset) {
 39319          return this._readNumberValue(Buffer.prototype.readInt32LE, 4, offset);
 39320      }
 39321      /**
 39322       * Reads a BigInt64BE value from the current read position or an optionally provided offset.
 39323       *
 39324       * @param offset { Number } The offset to read data from (optional)
 39325       * @return { BigInt }
 39326       */
 39327      readBigInt64BE(offset) {
 39328          utils_1.bigIntAndBufferInt64Check('readBigInt64BE');
 39329          return this._readNumberValue(Buffer.prototype.readBigInt64BE, 8, offset);
 39330      }
 39331      /**
 39332       * Reads a BigInt64LE value from the current read position or an optionally provided offset.
 39333       *
 39334       * @param offset { Number } The offset to read data from (optional)
 39335       * @return { BigInt }
 39336       */
 39337      readBigInt64LE(offset) {
 39338          utils_1.bigIntAndBufferInt64Check('readBigInt64LE');
 39339          return this._readNumberValue(Buffer.prototype.readBigInt64LE, 8, offset);
 39340      }
 39341      /**
 39342       * Writes an Int8 value to the current write position (or at optional offset).
 39343       *
 39344       * @param value { Number } The value to write.
 39345       * @param offset { Number } The offset to write the value at.
 39346       *
 39347       * @return this
 39348       */
 39349      writeInt8(value, offset) {
 39350          this._writeNumberValue(Buffer.prototype.writeInt8, 1, value, offset);
 39351          return this;
 39352      }
 39353      /**
 39354       * Inserts an Int8 value at the given offset value.
 39355       *
 39356       * @param value { Number } The value to insert.
 39357       * @param offset { Number } The offset to insert the value at.
 39358       *
 39359       * @return this
 39360       */
 39361      insertInt8(value, offset) {
 39362          return this._insertNumberValue(Buffer.prototype.writeInt8, 1, value, offset);
 39363      }
 39364      /**
 39365       * Writes an Int16BE value to the current write position (or at optional offset).
 39366       *
 39367       * @param value { Number } The value to write.
 39368       * @param offset { Number } The offset to write the value at.
 39369       *
 39370       * @return this
 39371       */
 39372      writeInt16BE(value, offset) {
 39373          return this._writeNumberValue(Buffer.prototype.writeInt16BE, 2, value, offset);
 39374      }
 39375      /**
 39376       * Inserts an Int16BE value at the given offset value.
 39377       *
 39378       * @param value { Number } The value to insert.
 39379       * @param offset { Number } The offset to insert the value at.
 39380       *
 39381       * @return this
 39382       */
 39383      insertInt16BE(value, offset) {
 39384          return this._insertNumberValue(Buffer.prototype.writeInt16BE, 2, value, offset);
 39385      }
 39386      /**
 39387       * Writes an Int16LE value to the current write position (or at optional offset).
 39388       *
 39389       * @param value { Number } The value to write.
 39390       * @param offset { Number } The offset to write the value at.
 39391       *
 39392       * @return this
 39393       */
 39394      writeInt16LE(value, offset) {
 39395          return this._writeNumberValue(Buffer.prototype.writeInt16LE, 2, value, offset);
 39396      }
 39397      /**
 39398       * Inserts an Int16LE value at the given offset value.
 39399       *
 39400       * @param value { Number } The value to insert.
 39401       * @param offset { Number } The offset to insert the value at.
 39402       *
 39403       * @return this
 39404       */
 39405      insertInt16LE(value, offset) {
 39406          return this._insertNumberValue(Buffer.prototype.writeInt16LE, 2, value, offset);
 39407      }
 39408      /**
 39409       * Writes an Int32BE value to the current write position (or at optional offset).
 39410       *
 39411       * @param value { Number } The value to write.
 39412       * @param offset { Number } The offset to write the value at.
 39413       *
 39414       * @return this
 39415       */
 39416      writeInt32BE(value, offset) {
 39417          return this._writeNumberValue(Buffer.prototype.writeInt32BE, 4, value, offset);
 39418      }
 39419      /**
 39420       * Inserts an Int32BE value at the given offset value.
 39421       *
 39422       * @param value { Number } The value to insert.
 39423       * @param offset { Number } The offset to insert the value at.
 39424       *
 39425       * @return this
 39426       */
 39427      insertInt32BE(value, offset) {
 39428          return this._insertNumberValue(Buffer.prototype.writeInt32BE, 4, value, offset);
 39429      }
 39430      /**
 39431       * Writes an Int32LE value to the current write position (or at optional offset).
 39432       *
 39433       * @param value { Number } The value to write.
 39434       * @param offset { Number } The offset to write the value at.
 39435       *
 39436       * @return this
 39437       */
 39438      writeInt32LE(value, offset) {
 39439          return this._writeNumberValue(Buffer.prototype.writeInt32LE, 4, value, offset);
 39440      }
 39441      /**
 39442       * Inserts an Int32LE value at the given offset value.
 39443       *
 39444       * @param value { Number } The value to insert.
 39445       * @param offset { Number } The offset to insert the value at.
 39446       *
 39447       * @return this
 39448       */
 39449      insertInt32LE(value, offset) {
 39450          return this._insertNumberValue(Buffer.prototype.writeInt32LE, 4, value, offset);
 39451      }
 39452      /**
 39453       * Writes a BigInt64BE value to the current write position (or at optional offset).
 39454       *
 39455       * @param value { BigInt } The value to write.
 39456       * @param offset { Number } The offset to write the value at.
 39457       *
 39458       * @return this
 39459       */
 39460      writeBigInt64BE(value, offset) {
 39461          utils_1.bigIntAndBufferInt64Check('writeBigInt64BE');
 39462          return this._writeNumberValue(Buffer.prototype.writeBigInt64BE, 8, value, offset);
 39463      }
 39464      /**
 39465       * Inserts a BigInt64BE value at the given offset value.
 39466       *
 39467       * @param value { BigInt } The value to insert.
 39468       * @param offset { Number } The offset to insert the value at.
 39469       *
 39470       * @return this
 39471       */
 39472      insertBigInt64BE(value, offset) {
 39473          utils_1.bigIntAndBufferInt64Check('writeBigInt64BE');
 39474          return this._insertNumberValue(Buffer.prototype.writeBigInt64BE, 8, value, offset);
 39475      }
 39476      /**
 39477       * Writes a BigInt64LE value to the current write position (or at optional offset).
 39478       *
 39479       * @param value { BigInt } The value to write.
 39480       * @param offset { Number } The offset to write the value at.
 39481       *
 39482       * @return this
 39483       */
 39484      writeBigInt64LE(value, offset) {
 39485          utils_1.bigIntAndBufferInt64Check('writeBigInt64LE');
 39486          return this._writeNumberValue(Buffer.prototype.writeBigInt64LE, 8, value, offset);
 39487      }
 39488      /**
 39489       * Inserts a Int64LE value at the given offset value.
 39490       *
 39491       * @param value { BigInt } The value to insert.
 39492       * @param offset { Number } The offset to insert the value at.
 39493       *
 39494       * @return this
 39495       */
 39496      insertBigInt64LE(value, offset) {
 39497          utils_1.bigIntAndBufferInt64Check('writeBigInt64LE');
 39498          return this._insertNumberValue(Buffer.prototype.writeBigInt64LE, 8, value, offset);
 39499      }
 39500      // Unsigned Integers
 39501      /**
 39502       * Reads an UInt8 value from the current read position or an optionally provided offset.
 39503       *
 39504       * @param offset { Number } The offset to read data from (optional)
 39505       * @return { Number }
 39506       */
 39507      readUInt8(offset) {
 39508          return this._readNumberValue(Buffer.prototype.readUInt8, 1, offset);
 39509      }
 39510      /**
 39511       * Reads an UInt16BE value from the current read position or an optionally provided offset.
 39512       *
 39513       * @param offset { Number } The offset to read data from (optional)
 39514       * @return { Number }
 39515       */
 39516      readUInt16BE(offset) {
 39517          return this._readNumberValue(Buffer.prototype.readUInt16BE, 2, offset);
 39518      }
 39519      /**
 39520       * Reads an UInt16LE value from the current read position or an optionally provided offset.
 39521       *
 39522       * @param offset { Number } The offset to read data from (optional)
 39523       * @return { Number }
 39524       */
 39525      readUInt16LE(offset) {
 39526          return this._readNumberValue(Buffer.prototype.readUInt16LE, 2, offset);
 39527      }
 39528      /**
 39529       * Reads an UInt32BE value from the current read position or an optionally provided offset.
 39530       *
 39531       * @param offset { Number } The offset to read data from (optional)
 39532       * @return { Number }
 39533       */
 39534      readUInt32BE(offset) {
 39535          return this._readNumberValue(Buffer.prototype.readUInt32BE, 4, offset);
 39536      }
 39537      /**
 39538       * Reads an UInt32LE value from the current read position or an optionally provided offset.
 39539       *
 39540       * @param offset { Number } The offset to read data from (optional)
 39541       * @return { Number }
 39542       */
 39543      readUInt32LE(offset) {
 39544          return this._readNumberValue(Buffer.prototype.readUInt32LE, 4, offset);
 39545      }
 39546      /**
 39547       * Reads a BigUInt64BE value from the current read position or an optionally provided offset.
 39548       *
 39549       * @param offset { Number } The offset to read data from (optional)
 39550       * @return { BigInt }
 39551       */
 39552      readBigUInt64BE(offset) {
 39553          utils_1.bigIntAndBufferInt64Check('readBigUInt64BE');
 39554          return this._readNumberValue(Buffer.prototype.readBigUInt64BE, 8, offset);
 39555      }
 39556      /**
 39557       * Reads a BigUInt64LE value from the current read position or an optionally provided offset.
 39558       *
 39559       * @param offset { Number } The offset to read data from (optional)
 39560       * @return { BigInt }
 39561       */
 39562      readBigUInt64LE(offset) {
 39563          utils_1.bigIntAndBufferInt64Check('readBigUInt64LE');
 39564          return this._readNumberValue(Buffer.prototype.readBigUInt64LE, 8, offset);
 39565      }
 39566      /**
 39567       * Writes an UInt8 value to the current write position (or at optional offset).
 39568       *
 39569       * @param value { Number } The value to write.
 39570       * @param offset { Number } The offset to write the value at.
 39571       *
 39572       * @return this
 39573       */
 39574      writeUInt8(value, offset) {
 39575          return this._writeNumberValue(Buffer.prototype.writeUInt8, 1, value, offset);
 39576      }
 39577      /**
 39578       * Inserts an UInt8 value at the given offset value.
 39579       *
 39580       * @param value { Number } The value to insert.
 39581       * @param offset { Number } The offset to insert the value at.
 39582       *
 39583       * @return this
 39584       */
 39585      insertUInt8(value, offset) {
 39586          return this._insertNumberValue(Buffer.prototype.writeUInt8, 1, value, offset);
 39587      }
 39588      /**
 39589       * Writes an UInt16BE value to the current write position (or at optional offset).
 39590       *
 39591       * @param value { Number } The value to write.
 39592       * @param offset { Number } The offset to write the value at.
 39593       *
 39594       * @return this
 39595       */
 39596      writeUInt16BE(value, offset) {
 39597          return this._writeNumberValue(Buffer.prototype.writeUInt16BE, 2, value, offset);
 39598      }
 39599      /**
 39600       * Inserts an UInt16BE value at the given offset value.
 39601       *
 39602       * @param value { Number } The value to insert.
 39603       * @param offset { Number } The offset to insert the value at.
 39604       *
 39605       * @return this
 39606       */
 39607      insertUInt16BE(value, offset) {
 39608          return this._insertNumberValue(Buffer.prototype.writeUInt16BE, 2, value, offset);
 39609      }
 39610      /**
 39611       * Writes an UInt16LE value to the current write position (or at optional offset).
 39612       *
 39613       * @param value { Number } The value to write.
 39614       * @param offset { Number } The offset to write the value at.
 39615       *
 39616       * @return this
 39617       */
 39618      writeUInt16LE(value, offset) {
 39619          return this._writeNumberValue(Buffer.prototype.writeUInt16LE, 2, value, offset);
 39620      }
 39621      /**
 39622       * Inserts an UInt16LE value at the given offset value.
 39623       *
 39624       * @param value { Number } The value to insert.
 39625       * @param offset { Number } The offset to insert the value at.
 39626       *
 39627       * @return this
 39628       */
 39629      insertUInt16LE(value, offset) {
 39630          return this._insertNumberValue(Buffer.prototype.writeUInt16LE, 2, value, offset);
 39631      }
 39632      /**
 39633       * Writes an UInt32BE value to the current write position (or at optional offset).
 39634       *
 39635       * @param value { Number } The value to write.
 39636       * @param offset { Number } The offset to write the value at.
 39637       *
 39638       * @return this
 39639       */
 39640      writeUInt32BE(value, offset) {
 39641          return this._writeNumberValue(Buffer.prototype.writeUInt32BE, 4, value, offset);
 39642      }
 39643      /**
 39644       * Inserts an UInt32BE value at the given offset value.
 39645       *
 39646       * @param value { Number } The value to insert.
 39647       * @param offset { Number } The offset to insert the value at.
 39648       *
 39649       * @return this
 39650       */
 39651      insertUInt32BE(value, offset) {
 39652          return this._insertNumberValue(Buffer.prototype.writeUInt32BE, 4, value, offset);
 39653      }
 39654      /**
 39655       * Writes an UInt32LE value to the current write position (or at optional offset).
 39656       *
 39657       * @param value { Number } The value to write.
 39658       * @param offset { Number } The offset to write the value at.
 39659       *
 39660       * @return this
 39661       */
 39662      writeUInt32LE(value, offset) {
 39663          return this._writeNumberValue(Buffer.prototype.writeUInt32LE, 4, value, offset);
 39664      }
 39665      /**
 39666       * Inserts an UInt32LE value at the given offset value.
 39667       *
 39668       * @param value { Number } The value to insert.
 39669       * @param offset { Number } The offset to insert the value at.
 39670       *
 39671       * @return this
 39672       */
 39673      insertUInt32LE(value, offset) {
 39674          return this._insertNumberValue(Buffer.prototype.writeUInt32LE, 4, value, offset);
 39675      }
 39676      /**
 39677       * Writes a BigUInt64BE value to the current write position (or at optional offset).
 39678       *
 39679       * @param value { Number } The value to write.
 39680       * @param offset { Number } The offset to write the value at.
 39681       *
 39682       * @return this
 39683       */
 39684      writeBigUInt64BE(value, offset) {
 39685          utils_1.bigIntAndBufferInt64Check('writeBigUInt64BE');
 39686          return this._writeNumberValue(Buffer.prototype.writeBigUInt64BE, 8, value, offset);
 39687      }
 39688      /**
 39689       * Inserts a BigUInt64BE value at the given offset value.
 39690       *
 39691       * @param value { Number } The value to insert.
 39692       * @param offset { Number } The offset to insert the value at.
 39693       *
 39694       * @return this
 39695       */
 39696      insertBigUInt64BE(value, offset) {
 39697          utils_1.bigIntAndBufferInt64Check('writeBigUInt64BE');
 39698          return this._insertNumberValue(Buffer.prototype.writeBigUInt64BE, 8, value, offset);
 39699      }
 39700      /**
 39701       * Writes a BigUInt64LE value to the current write position (or at optional offset).
 39702       *
 39703       * @param value { Number } The value to write.
 39704       * @param offset { Number } The offset to write the value at.
 39705       *
 39706       * @return this
 39707       */
 39708      writeBigUInt64LE(value, offset) {
 39709          utils_1.bigIntAndBufferInt64Check('writeBigUInt64LE');
 39710          return this._writeNumberValue(Buffer.prototype.writeBigUInt64LE, 8, value, offset);
 39711      }
 39712      /**
 39713       * Inserts a BigUInt64LE value at the given offset value.
 39714       *
 39715       * @param value { Number } The value to insert.
 39716       * @param offset { Number } The offset to insert the value at.
 39717       *
 39718       * @return this
 39719       */
 39720      insertBigUInt64LE(value, offset) {
 39721          utils_1.bigIntAndBufferInt64Check('writeBigUInt64LE');
 39722          return this._insertNumberValue(Buffer.prototype.writeBigUInt64LE, 8, value, offset);
 39723      }
 39724      // Floating Point
 39725      /**
 39726       * Reads an FloatBE value from the current read position or an optionally provided offset.
 39727       *
 39728       * @param offset { Number } The offset to read data from (optional)
 39729       * @return { Number }
 39730       */
 39731      readFloatBE(offset) {
 39732          return this._readNumberValue(Buffer.prototype.readFloatBE, 4, offset);
 39733      }
 39734      /**
 39735       * Reads an FloatLE value from the current read position or an optionally provided offset.
 39736       *
 39737       * @param offset { Number } The offset to read data from (optional)
 39738       * @return { Number }
 39739       */
 39740      readFloatLE(offset) {
 39741          return this._readNumberValue(Buffer.prototype.readFloatLE, 4, offset);
 39742      }
 39743      /**
 39744       * Writes a FloatBE value to the current write position (or at optional offset).
 39745       *
 39746       * @param value { Number } The value to write.
 39747       * @param offset { Number } The offset to write the value at.
 39748       *
 39749       * @return this
 39750       */
 39751      writeFloatBE(value, offset) {
 39752          return this._writeNumberValue(Buffer.prototype.writeFloatBE, 4, value, offset);
 39753      }
 39754      /**
 39755       * Inserts a FloatBE value at the given offset value.
 39756       *
 39757       * @param value { Number } The value to insert.
 39758       * @param offset { Number } The offset to insert the value at.
 39759       *
 39760       * @return this
 39761       */
 39762      insertFloatBE(value, offset) {
 39763          return this._insertNumberValue(Buffer.prototype.writeFloatBE, 4, value, offset);
 39764      }
 39765      /**
 39766       * Writes a FloatLE value to the current write position (or at optional offset).
 39767       *
 39768       * @param value { Number } The value to write.
 39769       * @param offset { Number } The offset to write the value at.
 39770       *
 39771       * @return this
 39772       */
 39773      writeFloatLE(value, offset) {
 39774          return this._writeNumberValue(Buffer.prototype.writeFloatLE, 4, value, offset);
 39775      }
 39776      /**
 39777       * Inserts a FloatLE value at the given offset value.
 39778       *
 39779       * @param value { Number } The value to insert.
 39780       * @param offset { Number } The offset to insert the value at.
 39781       *
 39782       * @return this
 39783       */
 39784      insertFloatLE(value, offset) {
 39785          return this._insertNumberValue(Buffer.prototype.writeFloatLE, 4, value, offset);
 39786      }
 39787      // Double Floating Point
 39788      /**
 39789       * Reads an DoublEBE value from the current read position or an optionally provided offset.
 39790       *
 39791       * @param offset { Number } The offset to read data from (optional)
 39792       * @return { Number }
 39793       */
 39794      readDoubleBE(offset) {
 39795          return this._readNumberValue(Buffer.prototype.readDoubleBE, 8, offset);
 39796      }
 39797      /**
 39798       * Reads an DoubleLE value from the current read position or an optionally provided offset.
 39799       *
 39800       * @param offset { Number } The offset to read data from (optional)
 39801       * @return { Number }
 39802       */
 39803      readDoubleLE(offset) {
 39804          return this._readNumberValue(Buffer.prototype.readDoubleLE, 8, offset);
 39805      }
 39806      /**
 39807       * Writes a DoubleBE value to the current write position (or at optional offset).
 39808       *
 39809       * @param value { Number } The value to write.
 39810       * @param offset { Number } The offset to write the value at.
 39811       *
 39812       * @return this
 39813       */
 39814      writeDoubleBE(value, offset) {
 39815          return this._writeNumberValue(Buffer.prototype.writeDoubleBE, 8, value, offset);
 39816      }
 39817      /**
 39818       * Inserts a DoubleBE value at the given offset value.
 39819       *
 39820       * @param value { Number } The value to insert.
 39821       * @param offset { Number } The offset to insert the value at.
 39822       *
 39823       * @return this
 39824       */
 39825      insertDoubleBE(value, offset) {
 39826          return this._insertNumberValue(Buffer.prototype.writeDoubleBE, 8, value, offset);
 39827      }
 39828      /**
 39829       * Writes a DoubleLE value to the current write position (or at optional offset).
 39830       *
 39831       * @param value { Number } The value to write.
 39832       * @param offset { Number } The offset to write the value at.
 39833       *
 39834       * @return this
 39835       */
 39836      writeDoubleLE(value, offset) {
 39837          return this._writeNumberValue(Buffer.prototype.writeDoubleLE, 8, value, offset);
 39838      }
 39839      /**
 39840       * Inserts a DoubleLE value at the given offset value.
 39841       *
 39842       * @param value { Number } The value to insert.
 39843       * @param offset { Number } The offset to insert the value at.
 39844       *
 39845       * @return this
 39846       */
 39847      insertDoubleLE(value, offset) {
 39848          return this._insertNumberValue(Buffer.prototype.writeDoubleLE, 8, value, offset);
 39849      }
 39850      // Strings
 39851      /**
 39852       * Reads a String from the current read position.
 39853       *
 39854       * @param arg1 { Number | String } The number of bytes to read as a String, or the BufferEncoding to use for
 39855       *             the string (Defaults to instance level encoding).
 39856       * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding).
 39857       *
 39858       * @return { String }
 39859       */
 39860      readString(arg1, encoding) {
 39861          let lengthVal;
 39862          // Length provided
 39863          if (typeof arg1 === 'number') {
 39864              utils_1.checkLengthValue(arg1);
 39865              lengthVal = Math.min(arg1, this.length - this._readOffset);
 39866          }
 39867          else {
 39868              encoding = arg1;
 39869              lengthVal = this.length - this._readOffset;
 39870          }
 39871          // Check encoding
 39872          if (typeof encoding !== 'undefined') {
 39873              utils_1.checkEncoding(encoding);
 39874          }
 39875          const value = this._buff.slice(this._readOffset, this._readOffset + lengthVal).toString(encoding || this._encoding);
 39876          this._readOffset += lengthVal;
 39877          return value;
 39878      }
 39879      /**
 39880       * Inserts a String
 39881       *
 39882       * @param value { String } The String value to insert.
 39883       * @param offset { Number } The offset to insert the string at.
 39884       * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding).
 39885       *
 39886       * @return this
 39887       */
 39888      insertString(value, offset, encoding) {
 39889          utils_1.checkOffsetValue(offset);
 39890          return this._handleString(value, true, offset, encoding);
 39891      }
 39892      /**
 39893       * Writes a String
 39894       *
 39895       * @param value { String } The String value to write.
 39896       * @param arg2 { Number | String } The offset to write the string at, or the BufferEncoding to use.
 39897       * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding).
 39898       *
 39899       * @return this
 39900       */
 39901      writeString(value, arg2, encoding) {
 39902          return this._handleString(value, false, arg2, encoding);
 39903      }
 39904      /**
 39905       * Reads a null-terminated String from the current read position.
 39906       *
 39907       * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding).
 39908       *
 39909       * @return { String }
 39910       */
 39911      readStringNT(encoding) {
 39912          if (typeof encoding !== 'undefined') {
 39913              utils_1.checkEncoding(encoding);
 39914          }
 39915          // Set null character position to the end SmartBuffer instance.
 39916          let nullPos = this.length;
 39917          // Find next null character (if one is not found, default from above is used)
 39918          for (let i = this._readOffset; i < this.length; i++) {
 39919              if (this._buff[i] === 0x00) {
 39920                  nullPos = i;
 39921                  break;
 39922              }
 39923          }
 39924          // Read string value
 39925          const value = this._buff.slice(this._readOffset, nullPos);
 39926          // Increment internal Buffer read offset
 39927          this._readOffset = nullPos + 1;
 39928          return value.toString(encoding || this._encoding);
 39929      }
 39930      /**
 39931       * Inserts a null-terminated String.
 39932       *
 39933       * @param value { String } The String value to write.
 39934       * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use.
 39935       * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding).
 39936       *
 39937       * @return this
 39938       */
 39939      insertStringNT(value, offset, encoding) {
 39940          utils_1.checkOffsetValue(offset);
 39941          // Write Values
 39942          this.insertString(value, offset, encoding);
 39943          this.insertUInt8(0x00, offset + value.length);
 39944          return this;
 39945      }
 39946      /**
 39947       * Writes a null-terminated String.
 39948       *
 39949       * @param value { String } The String value to write.
 39950       * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use.
 39951       * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding).
 39952       *
 39953       * @return this
 39954       */
 39955      writeStringNT(value, arg2, encoding) {
 39956          // Write Values
 39957          this.writeString(value, arg2, encoding);
 39958          this.writeUInt8(0x00, typeof arg2 === 'number' ? arg2 + value.length : this.writeOffset);
 39959          return this;
 39960      }
 39961      // Buffers
 39962      /**
 39963       * Reads a Buffer from the internal read position.
 39964       *
 39965       * @param length { Number } The length of data to read as a Buffer.
 39966       *
 39967       * @return { Buffer }
 39968       */
 39969      readBuffer(length) {
 39970          if (typeof length !== 'undefined') {
 39971              utils_1.checkLengthValue(length);
 39972          }
 39973          const lengthVal = typeof length === 'number' ? length : this.length;
 39974          const endPoint = Math.min(this.length, this._readOffset + lengthVal);
 39975          // Read buffer value
 39976          const value = this._buff.slice(this._readOffset, endPoint);
 39977          // Increment internal Buffer read offset
 39978          this._readOffset = endPoint;
 39979          return value;
 39980      }
 39981      /**
 39982       * Writes a Buffer to the current write position.
 39983       *
 39984       * @param value { Buffer } The Buffer to write.
 39985       * @param offset { Number } The offset to write the Buffer to.
 39986       *
 39987       * @return this
 39988       */
 39989      insertBuffer(value, offset) {
 39990          utils_1.checkOffsetValue(offset);
 39991          return this._handleBuffer(value, true, offset);
 39992      }
 39993      /**
 39994       * Writes a Buffer to the current write position.
 39995       *
 39996       * @param value { Buffer } The Buffer to write.
 39997       * @param offset { Number } The offset to write the Buffer to.
 39998       *
 39999       * @return this
 40000       */
 40001      writeBuffer(value, offset) {
 40002          return this._handleBuffer(value, false, offset);
 40003      }
 40004      /**
 40005       * Reads a null-terminated Buffer from the current read poisiton.
 40006       *
 40007       * @return { Buffer }
 40008       */
 40009      readBufferNT() {
 40010          // Set null character position to the end SmartBuffer instance.
 40011          let nullPos = this.length;
 40012          // Find next null character (if one is not found, default from above is used)
 40013          for (let i = this._readOffset; i < this.length; i++) {
 40014              if (this._buff[i] === 0x00) {
 40015                  nullPos = i;
 40016                  break;
 40017              }
 40018          }
 40019          // Read value
 40020          const value = this._buff.slice(this._readOffset, nullPos);
 40021          // Increment internal Buffer read offset
 40022          this._readOffset = nullPos + 1;
 40023          return value;
 40024      }
 40025      /**
 40026       * Inserts a null-terminated Buffer.
 40027       *
 40028       * @param value { Buffer } The Buffer to write.
 40029       * @param offset { Number } The offset to write the Buffer to.
 40030       *
 40031       * @return this
 40032       */
 40033      insertBufferNT(value, offset) {
 40034          utils_1.checkOffsetValue(offset);
 40035          // Write Values
 40036          this.insertBuffer(value, offset);
 40037          this.insertUInt8(0x00, offset + value.length);
 40038          return this;
 40039      }
 40040      /**
 40041       * Writes a null-terminated Buffer.
 40042       *
 40043       * @param value { Buffer } The Buffer to write.
 40044       * @param offset { Number } The offset to write the Buffer to.
 40045       *
 40046       * @return this
 40047       */
 40048      writeBufferNT(value, offset) {
 40049          // Checks for valid numberic value;
 40050          if (typeof offset !== 'undefined') {
 40051              utils_1.checkOffsetValue(offset);
 40052          }
 40053          // Write Values
 40054          this.writeBuffer(value, offset);
 40055          this.writeUInt8(0x00, typeof offset === 'number' ? offset + value.length : this._writeOffset);
 40056          return this;
 40057      }
 40058      /**
 40059       * Clears the SmartBuffer instance to its original empty state.
 40060       */
 40061      clear() {
 40062          this._writeOffset = 0;
 40063          this._readOffset = 0;
 40064          this.length = 0;
 40065          return this;
 40066      }
 40067      /**
 40068       * Gets the remaining data left to be read from the SmartBuffer instance.
 40069       *
 40070       * @return { Number }
 40071       */
 40072      remaining() {
 40073          return this.length - this._readOffset;
 40074      }
 40075      /**
 40076       * Gets the current read offset value of the SmartBuffer instance.
 40077       *
 40078       * @return { Number }
 40079       */
 40080      get readOffset() {
 40081          return this._readOffset;
 40082      }
 40083      /**
 40084       * Sets the read offset value of the SmartBuffer instance.
 40085       *
 40086       * @param offset { Number } - The offset value to set.
 40087       */
 40088      set readOffset(offset) {
 40089          utils_1.checkOffsetValue(offset);
 40090          // Check for bounds.
 40091          utils_1.checkTargetOffset(offset, this);
 40092          this._readOffset = offset;
 40093      }
 40094      /**
 40095       * Gets the current write offset value of the SmartBuffer instance.
 40096       *
 40097       * @return { Number }
 40098       */
 40099      get writeOffset() {
 40100          return this._writeOffset;
 40101      }
 40102      /**
 40103       * Sets the write offset value of the SmartBuffer instance.
 40104       *
 40105       * @param offset { Number } - The offset value to set.
 40106       */
 40107      set writeOffset(offset) {
 40108          utils_1.checkOffsetValue(offset);
 40109          // Check for bounds.
 40110          utils_1.checkTargetOffset(offset, this);
 40111          this._writeOffset = offset;
 40112      }
 40113      /**
 40114       * Gets the currently set string encoding of the SmartBuffer instance.
 40115       *
 40116       * @return { BufferEncoding } The string Buffer encoding currently set.
 40117       */
 40118      get encoding() {
 40119          return this._encoding;
 40120      }
 40121      /**
 40122       * Sets the string encoding of the SmartBuffer instance.
 40123       *
 40124       * @param encoding { BufferEncoding } The string Buffer encoding to set.
 40125       */
 40126      set encoding(encoding) {
 40127          utils_1.checkEncoding(encoding);
 40128          this._encoding = encoding;
 40129      }
 40130      /**
 40131       * Gets the underlying internal Buffer. (This includes unmanaged data in the Buffer)
 40132       *
 40133       * @return { Buffer } The Buffer value.
 40134       */
 40135      get internalBuffer() {
 40136          return this._buff;
 40137      }
 40138      /**
 40139       * Gets the value of the internal managed Buffer (Includes managed data only)
 40140       *
 40141       * @param { Buffer }
 40142       */
 40143      toBuffer() {
 40144          return this._buff.slice(0, this.length);
 40145      }
 40146      /**
 40147       * Gets the String value of the internal managed Buffer
 40148       *
 40149       * @param encoding { String } The BufferEncoding to display the Buffer as (defaults to instance level encoding).
 40150       */
 40151      toString(encoding) {
 40152          const encodingVal = typeof encoding === 'string' ? encoding : this._encoding;
 40153          // Check for invalid encoding.
 40154          utils_1.checkEncoding(encodingVal);
 40155          return this._buff.toString(encodingVal, 0, this.length);
 40156      }
 40157      /**
 40158       * Destroys the SmartBuffer instance.
 40159       */
 40160      destroy() {
 40161          this.clear();
 40162          return this;
 40163      }
 40164      /**
 40165       * Handles inserting and writing strings.
 40166       *
 40167       * @param value { String } The String value to insert.
 40168       * @param isInsert { Boolean } True if inserting a string, false if writing.
 40169       * @param arg2 { Number | String } The offset to insert the string at, or the BufferEncoding to use.
 40170       * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding).
 40171       */
 40172      _handleString(value, isInsert, arg3, encoding) {
 40173          let offsetVal = this._writeOffset;
 40174          let encodingVal = this._encoding;
 40175          // Check for offset
 40176          if (typeof arg3 === 'number') {
 40177              offsetVal = arg3;
 40178              // Check for encoding
 40179          }
 40180          else if (typeof arg3 === 'string') {
 40181              utils_1.checkEncoding(arg3);
 40182              encodingVal = arg3;
 40183          }
 40184          // Check for encoding (third param)
 40185          if (typeof encoding === 'string') {
 40186              utils_1.checkEncoding(encoding);
 40187              encodingVal = encoding;
 40188          }
 40189          // Calculate bytelength of string.
 40190          const byteLength = Buffer.byteLength(value, encodingVal);
 40191          // Ensure there is enough internal Buffer capacity.
 40192          if (isInsert) {
 40193              this.ensureInsertable(byteLength, offsetVal);
 40194          }
 40195          else {
 40196              this._ensureWriteable(byteLength, offsetVal);
 40197          }
 40198          // Write value
 40199          this._buff.write(value, offsetVal, byteLength, encodingVal);
 40200          // Increment internal Buffer write offset;
 40201          if (isInsert) {
 40202              this._writeOffset += byteLength;
 40203          }
 40204          else {
 40205              // If an offset was given, check to see if we wrote beyond the current writeOffset.
 40206              if (typeof arg3 === 'number') {
 40207                  this._writeOffset = Math.max(this._writeOffset, offsetVal + byteLength);
 40208              }
 40209              else {
 40210                  // If no offset was given, we wrote to the end of the SmartBuffer so increment writeOffset.
 40211                  this._writeOffset += byteLength;
 40212              }
 40213          }
 40214          return this;
 40215      }
 40216      /**
 40217       * Handles writing or insert of a Buffer.
 40218       *
 40219       * @param value { Buffer } The Buffer to write.
 40220       * @param offset { Number } The offset to write the Buffer to.
 40221       */
 40222      _handleBuffer(value, isInsert, offset) {
 40223          const offsetVal = typeof offset === 'number' ? offset : this._writeOffset;
 40224          // Ensure there is enough internal Buffer capacity.
 40225          if (isInsert) {
 40226              this.ensureInsertable(value.length, offsetVal);
 40227          }
 40228          else {
 40229              this._ensureWriteable(value.length, offsetVal);
 40230          }
 40231          // Write buffer value
 40232          value.copy(this._buff, offsetVal);
 40233          // Increment internal Buffer write offset;
 40234          if (isInsert) {
 40235              this._writeOffset += value.length;
 40236          }
 40237          else {
 40238              // If an offset was given, check to see if we wrote beyond the current writeOffset.
 40239              if (typeof offset === 'number') {
 40240                  this._writeOffset = Math.max(this._writeOffset, offsetVal + value.length);
 40241              }
 40242              else {
 40243                  // If no offset was given, we wrote to the end of the SmartBuffer so increment writeOffset.
 40244                  this._writeOffset += value.length;
 40245              }
 40246          }
 40247          return this;
 40248      }
 40249      /**
 40250       * Ensures that the internal Buffer is large enough to read data.
 40251       *
 40252       * @param length { Number } The length of the data that needs to be read.
 40253       * @param offset { Number } The offset of the data that needs to be read.
 40254       */
 40255      ensureReadable(length, offset) {
 40256          // Offset value defaults to managed read offset.
 40257          let offsetVal = this._readOffset;
 40258          // If an offset was provided, use it.
 40259          if (typeof offset !== 'undefined') {
 40260              // Checks for valid numberic value;
 40261              utils_1.checkOffsetValue(offset);
 40262              // Overide with custom offset.
 40263              offsetVal = offset;
 40264          }
 40265          // Checks if offset is below zero, or the offset+length offset is beyond the total length of the managed data.
 40266          if (offsetVal < 0 || offsetVal + length > this.length) {
 40267              throw new Error(utils_1.ERRORS.INVALID_READ_BEYOND_BOUNDS);
 40268          }
 40269      }
 40270      /**
 40271       * Ensures that the internal Buffer is large enough to insert data.
 40272       *
 40273       * @param dataLength { Number } The length of the data that needs to be written.
 40274       * @param offset { Number } The offset of the data to be written.
 40275       */
 40276      ensureInsertable(dataLength, offset) {
 40277          // Checks for valid numberic value;
 40278          utils_1.checkOffsetValue(offset);
 40279          // Ensure there is enough internal Buffer capacity.
 40280          this._ensureCapacity(this.length + dataLength);
 40281          // If an offset was provided and its not the very end of the buffer, copy data into appropriate location in regards to the offset.
 40282          if (offset < this.length) {
 40283              this._buff.copy(this._buff, offset + dataLength, offset, this._buff.length);
 40284          }
 40285          // Adjust tracked smart buffer length
 40286          if (offset + dataLength > this.length) {
 40287              this.length = offset + dataLength;
 40288          }
 40289          else {
 40290              this.length += dataLength;
 40291          }
 40292      }
 40293      /**
 40294       * Ensures that the internal Buffer is large enough to write data.
 40295       *
 40296       * @param dataLength { Number } The length of the data that needs to be written.
 40297       * @param offset { Number } The offset of the data to be written (defaults to writeOffset).
 40298       */
 40299      _ensureWriteable(dataLength, offset) {
 40300          const offsetVal = typeof offset === 'number' ? offset : this._writeOffset;
 40301          // Ensure enough capacity to write data.
 40302          this._ensureCapacity(offsetVal + dataLength);
 40303          // Adjust SmartBuffer length (if offset + length is larger than managed length, adjust length)
 40304          if (offsetVal + dataLength > this.length) {
 40305              this.length = offsetVal + dataLength;
 40306          }
 40307      }
 40308      /**
 40309       * Ensures that the internal Buffer is large enough to write at least the given amount of data.
 40310       *
 40311       * @param minLength { Number } The minimum length of the data needs to be written.
 40312       */
 40313      _ensureCapacity(minLength) {
 40314          const oldLength = this._buff.length;
 40315          if (minLength > oldLength) {
 40316              let data = this._buff;
 40317              let newLength = (oldLength * 3) / 2 + 1;
 40318              if (newLength < minLength) {
 40319                  newLength = minLength;
 40320              }
 40321              this._buff = Buffer.allocUnsafe(newLength);
 40322              data.copy(this._buff, 0, 0, oldLength);
 40323          }
 40324      }
 40325      /**
 40326       * Reads a numeric number value using the provided function.
 40327       *
 40328       * @typeparam T { number | bigint } The type of the value to be read
 40329       *
 40330       * @param func { Function(offset: number) => number } The function to read data on the internal Buffer with.
 40331       * @param byteSize { Number } The number of bytes read.
 40332       * @param offset { Number } The offset to read from (optional). When this is not provided, the managed readOffset is used instead.
 40333       *
 40334       * @returns { T } the number value
 40335       */
 40336      _readNumberValue(func, byteSize, offset) {
 40337          this.ensureReadable(byteSize, offset);
 40338          // Call Buffer.readXXXX();
 40339          const value = func.call(this._buff, typeof offset === 'number' ? offset : this._readOffset);
 40340          // Adjust internal read offset if an optional read offset was not provided.
 40341          if (typeof offset === 'undefined') {
 40342              this._readOffset += byteSize;
 40343          }
 40344          return value;
 40345      }
 40346      /**
 40347       * Inserts a numeric number value based on the given offset and value.
 40348       *
 40349       * @typeparam T { number | bigint } The type of the value to be written
 40350       *
 40351       * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with.
 40352       * @param byteSize { Number } The number of bytes written.
 40353       * @param value { T } The number value to write.
 40354       * @param offset { Number } the offset to write the number at (REQUIRED).
 40355       *
 40356       * @returns SmartBuffer this buffer
 40357       */
 40358      _insertNumberValue(func, byteSize, value, offset) {
 40359          // Check for invalid offset values.
 40360          utils_1.checkOffsetValue(offset);
 40361          // Ensure there is enough internal Buffer capacity. (raw offset is passed)
 40362          this.ensureInsertable(byteSize, offset);
 40363          // Call buffer.writeXXXX();
 40364          func.call(this._buff, value, offset);
 40365          // Adjusts internally managed write offset.
 40366          this._writeOffset += byteSize;
 40367          return this;
 40368      }
 40369      /**
 40370       * Writes a numeric number value based on the given offset and value.
 40371       *
 40372       * @typeparam T { number | bigint } The type of the value to be written
 40373       *
 40374       * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with.
 40375       * @param byteSize { Number } The number of bytes written.
 40376       * @param value { T } The number value to write.
 40377       * @param offset { Number } the offset to write the number at (REQUIRED).
 40378       *
 40379       * @returns SmartBuffer this buffer
 40380       */
 40381      _writeNumberValue(func, byteSize, value, offset) {
 40382          // If an offset was provided, validate it.
 40383          if (typeof offset === 'number') {
 40384              // Check if we're writing beyond the bounds of the managed data.
 40385              if (offset < 0) {
 40386                  throw new Error(utils_1.ERRORS.INVALID_WRITE_BEYOND_BOUNDS);
 40387              }
 40388              utils_1.checkOffsetValue(offset);
 40389          }
 40390          // Default to writeOffset if no offset value was given.
 40391          const offsetVal = typeof offset === 'number' ? offset : this._writeOffset;
 40392          // Ensure there is enough internal Buffer capacity. (raw offset is passed)
 40393          this._ensureWriteable(byteSize, offsetVal);
 40394          func.call(this._buff, value, offsetVal);
 40395          // If an offset was given, check to see if we wrote beyond the current writeOffset.
 40396          if (typeof offset === 'number') {
 40397              this._writeOffset = Math.max(this._writeOffset, offsetVal + byteSize);
 40398          }
 40399          else {
 40400              // If no numeric offset was given, we wrote to the end of the SmartBuffer so increment writeOffset.
 40401              this._writeOffset += byteSize;
 40402          }
 40403          return this;
 40404      }
 40405  }
 40406  exports.SmartBuffer = SmartBuffer;
 40407  //# sourceMappingURL=smartbuffer.js.map
 40408  
 40409  /***/ }),
 40410  
 40411  /***/ 98132:
 40412  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 40413  
 40414  "use strict";
 40415  
 40416  Object.defineProperty(exports, "__esModule", ({ value: true }));
 40417  const buffer_1 = __nccwpck_require__(14300);
 40418  /**
 40419   * Error strings
 40420   */
 40421  const ERRORS = {
 40422      INVALID_ENCODING: 'Invalid encoding provided. Please specify a valid encoding the internal Node.js Buffer supports.',
 40423      INVALID_SMARTBUFFER_SIZE: 'Invalid size provided. Size must be a valid integer greater than zero.',
 40424      INVALID_SMARTBUFFER_BUFFER: 'Invalid Buffer provided in SmartBufferOptions.',
 40425      INVALID_SMARTBUFFER_OBJECT: 'Invalid SmartBufferOptions object supplied to SmartBuffer constructor or factory methods.',
 40426      INVALID_OFFSET: 'An invalid offset value was provided.',
 40427      INVALID_OFFSET_NON_NUMBER: 'An invalid offset value was provided. A numeric value is required.',
 40428      INVALID_LENGTH: 'An invalid length value was provided.',
 40429      INVALID_LENGTH_NON_NUMBER: 'An invalid length value was provived. A numeric value is required.',
 40430      INVALID_TARGET_OFFSET: 'Target offset is beyond the bounds of the internal SmartBuffer data.',
 40431      INVALID_TARGET_LENGTH: 'Specified length value moves cursor beyong the bounds of the internal SmartBuffer data.',
 40432      INVALID_READ_BEYOND_BOUNDS: 'Attempted to read beyond the bounds of the managed data.',
 40433      INVALID_WRITE_BEYOND_BOUNDS: 'Attempted to write beyond the bounds of the managed data.'
 40434  };
 40435  exports.ERRORS = ERRORS;
 40436  /**
 40437   * Checks if a given encoding is a valid Buffer encoding. (Throws an exception if check fails)
 40438   *
 40439   * @param { String } encoding The encoding string to check.
 40440   */
 40441  function checkEncoding(encoding) {
 40442      if (!buffer_1.Buffer.isEncoding(encoding)) {
 40443          throw new Error(ERRORS.INVALID_ENCODING);
 40444      }
 40445  }
 40446  exports.checkEncoding = checkEncoding;
 40447  /**
 40448   * Checks if a given number is a finite integer. (Throws an exception if check fails)
 40449   *
 40450   * @param { Number } value The number value to check.
 40451   */
 40452  function isFiniteInteger(value) {
 40453      return typeof value === 'number' && isFinite(value) && isInteger(value);
 40454  }
 40455  exports.isFiniteInteger = isFiniteInteger;
 40456  /**
 40457   * Checks if an offset/length value is valid. (Throws an exception if check fails)
 40458   *
 40459   * @param value The value to check.
 40460   * @param offset True if checking an offset, false if checking a length.
 40461   */
 40462  function checkOffsetOrLengthValue(value, offset) {
 40463      if (typeof value === 'number') {
 40464          // Check for non finite/non integers
 40465          if (!isFiniteInteger(value) || value < 0) {
 40466              throw new Error(offset ? ERRORS.INVALID_OFFSET : ERRORS.INVALID_LENGTH);
 40467          }
 40468      }
 40469      else {
 40470          throw new Error(offset ? ERRORS.INVALID_OFFSET_NON_NUMBER : ERRORS.INVALID_LENGTH_NON_NUMBER);
 40471      }
 40472  }
 40473  /**
 40474   * Checks if a length value is valid. (Throws an exception if check fails)
 40475   *
 40476   * @param { Number } length The value to check.
 40477   */
 40478  function checkLengthValue(length) {
 40479      checkOffsetOrLengthValue(length, false);
 40480  }
 40481  exports.checkLengthValue = checkLengthValue;
 40482  /**
 40483   * Checks if a offset value is valid. (Throws an exception if check fails)
 40484   *
 40485   * @param { Number } offset The value to check.
 40486   */
 40487  function checkOffsetValue(offset) {
 40488      checkOffsetOrLengthValue(offset, true);
 40489  }
 40490  exports.checkOffsetValue = checkOffsetValue;
 40491  /**
 40492   * Checks if a target offset value is out of bounds. (Throws an exception if check fails)
 40493   *
 40494   * @param { Number } offset The offset value to check.
 40495   * @param { SmartBuffer } buff The SmartBuffer instance to check against.
 40496   */
 40497  function checkTargetOffset(offset, buff) {
 40498      if (offset < 0 || offset > buff.length) {
 40499          throw new Error(ERRORS.INVALID_TARGET_OFFSET);
 40500      }
 40501  }
 40502  exports.checkTargetOffset = checkTargetOffset;
 40503  /**
 40504   * Determines whether a given number is a integer.
 40505   * @param value The number to check.
 40506   */
 40507  function isInteger(value) {
 40508      return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
 40509  }
 40510  /**
 40511   * Throws if Node.js version is too low to support bigint
 40512   */
 40513  function bigIntAndBufferInt64Check(bufferMethod) {
 40514      if (typeof BigInt === 'undefined') {
 40515          throw new Error('Platform does not support JS BigInt type.');
 40516      }
 40517      if (typeof buffer_1.Buffer.prototype[bufferMethod] === 'undefined') {
 40518          throw new Error(`Platform does not support Buffer.prototype.${bufferMethod}.`);
 40519      }
 40520  }
 40521  exports.bigIntAndBufferInt64Check = bigIntAndBufferInt64Check;
 40522  //# sourceMappingURL=utils.js.map
 40523  
 40524  /***/ }),
 40525  
 40526  /***/ 25038:
 40527  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 40528  
 40529  "use strict";
 40530  
 40531  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 40532      if (k2 === undefined) k2 = k;
 40533      var desc = Object.getOwnPropertyDescriptor(m, k);
 40534      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 40535        desc = { enumerable: true, get: function() { return m[k]; } };
 40536      }
 40537      Object.defineProperty(o, k2, desc);
 40538  }) : (function(o, m, k, k2) {
 40539      if (k2 === undefined) k2 = k;
 40540      o[k2] = m[k];
 40541  }));
 40542  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 40543      Object.defineProperty(o, "default", { enumerable: true, value: v });
 40544  }) : function(o, v) {
 40545      o["default"] = v;
 40546  });
 40547  var __importStar = (this && this.__importStar) || function (mod) {
 40548      if (mod && mod.__esModule) return mod;
 40549      var result = {};
 40550      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 40551      __setModuleDefault(result, mod);
 40552      return result;
 40553  };
 40554  var __importDefault = (this && this.__importDefault) || function (mod) {
 40555      return (mod && mod.__esModule) ? mod : { "default": mod };
 40556  };
 40557  Object.defineProperty(exports, "__esModule", ({ value: true }));
 40558  exports.SocksProxyAgent = void 0;
 40559  const socks_1 = __nccwpck_require__(54754);
 40560  const agent_base_1 = __nccwpck_require__(70694);
 40561  const debug_1 = __importDefault(__nccwpck_require__(38237));
 40562  const dns = __importStar(__nccwpck_require__(9523));
 40563  const net = __importStar(__nccwpck_require__(41808));
 40564  const tls = __importStar(__nccwpck_require__(24404));
 40565  const url_1 = __nccwpck_require__(57310);
 40566  const debug = (0, debug_1.default)('socks-proxy-agent');
 40567  function parseSocksURL(url) {
 40568      let lookup = false;
 40569      let type = 5;
 40570      const host = url.hostname;
 40571      // From RFC 1928, Section 3: https://tools.ietf.org/html/rfc1928#section-3
 40572      // "The SOCKS service is conventionally located on TCP port 1080"
 40573      const port = parseInt(url.port, 10) || 1080;
 40574      // figure out if we want socks v4 or v5, based on the "protocol" used.
 40575      // Defaults to 5.
 40576      switch (url.protocol.replace(':', '')) {
 40577          case 'socks4':
 40578              lookup = true;
 40579              type = 4;
 40580              break;
 40581          // pass through
 40582          case 'socks4a':
 40583              type = 4;
 40584              break;
 40585          case 'socks5':
 40586              lookup = true;
 40587              type = 5;
 40588              break;
 40589          // pass through
 40590          case 'socks': // no version specified, default to 5h
 40591              type = 5;
 40592              break;
 40593          case 'socks5h':
 40594              type = 5;
 40595              break;
 40596          default:
 40597              throw new TypeError(`A "socks" protocol must be specified! Got: ${String(url.protocol)}`);
 40598      }
 40599      const proxy = {
 40600          host,
 40601          port,
 40602          type,
 40603      };
 40604      if (url.username) {
 40605          Object.defineProperty(proxy, 'userId', {
 40606              value: decodeURIComponent(url.username),
 40607              enumerable: false,
 40608          });
 40609      }
 40610      if (url.password != null) {
 40611          Object.defineProperty(proxy, 'password', {
 40612              value: decodeURIComponent(url.password),
 40613              enumerable: false,
 40614          });
 40615      }
 40616      return { lookup, proxy };
 40617  }
 40618  class SocksProxyAgent extends agent_base_1.Agent {
 40619      constructor(uri, opts) {
 40620          super(opts);
 40621          const url = typeof uri === 'string' ? new url_1.URL(uri) : uri;
 40622          const { proxy, lookup } = parseSocksURL(url);
 40623          this.shouldLookup = lookup;
 40624          this.proxy = proxy;
 40625          this.timeout = opts?.timeout ?? null;
 40626      }
 40627      /**
 40628       * Initiates a SOCKS connection to the specified SOCKS proxy server,
 40629       * which in turn connects to the specified remote host and port.
 40630       */
 40631      async connect(req, opts) {
 40632          const { shouldLookup, proxy, timeout } = this;
 40633          if (!opts.host) {
 40634              throw new Error('No `host` defined!');
 40635          }
 40636          let { host } = opts;
 40637          const { port, lookup: lookupFn = dns.lookup } = opts;
 40638          if (shouldLookup) {
 40639              // Client-side DNS resolution for "4" and "5" socks proxy versions.
 40640              host = await new Promise((resolve, reject) => {
 40641                  // Use the request's custom lookup, if one was configured:
 40642                  lookupFn(host, {}, (err, res) => {
 40643                      if (err) {
 40644                          reject(err);
 40645                      }
 40646                      else {
 40647                          resolve(res);
 40648                      }
 40649                  });
 40650              });
 40651          }
 40652          const socksOpts = {
 40653              proxy,
 40654              destination: {
 40655                  host,
 40656                  port: typeof port === 'number' ? port : parseInt(port, 10),
 40657              },
 40658              command: 'connect',
 40659              timeout: timeout ?? undefined,
 40660          };
 40661          const cleanup = (tlsSocket) => {
 40662              req.destroy();
 40663              socket.destroy();
 40664              if (tlsSocket)
 40665                  tlsSocket.destroy();
 40666          };
 40667          debug('Creating socks proxy connection: %o', socksOpts);
 40668          const { socket } = await socks_1.SocksClient.createConnection(socksOpts);
 40669          debug('Successfully created socks proxy connection');
 40670          if (timeout !== null) {
 40671              socket.setTimeout(timeout);
 40672              socket.on('timeout', () => cleanup());
 40673          }
 40674          if (opts.secureEndpoint) {
 40675              // The proxy is connecting to a TLS server, so upgrade
 40676              // this socket connection to a TLS connection.
 40677              debug('Upgrading socket connection to TLS');
 40678              const servername = opts.servername || opts.host;
 40679              const tlsSocket = tls.connect({
 40680                  ...omit(opts, 'host', 'path', 'port'),
 40681                  socket,
 40682                  servername: net.isIP(servername) ? undefined : servername,
 40683              });
 40684              tlsSocket.once('error', (error) => {
 40685                  debug('Socket TLS error', error.message);
 40686                  cleanup(tlsSocket);
 40687              });
 40688              return tlsSocket;
 40689          }
 40690          return socket;
 40691      }
 40692  }
 40693  SocksProxyAgent.protocols = [
 40694      'socks',
 40695      'socks4',
 40696      'socks4a',
 40697      'socks5',
 40698      'socks5h',
 40699  ];
 40700  exports.SocksProxyAgent = SocksProxyAgent;
 40701  function omit(obj, ...keys) {
 40702      const ret = {};
 40703      let key;
 40704      for (key in obj) {
 40705          if (!keys.includes(key)) {
 40706              ret[key] = obj[key];
 40707          }
 40708      }
 40709      return ret;
 40710  }
 40711  //# sourceMappingURL=index.js.map
 40712  
 40713  /***/ }),
 40714  
 40715  /***/ 36127:
 40716  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 40717  
 40718  "use strict";
 40719  
 40720  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 40721      function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
 40722      return new (P || (P = Promise))(function (resolve, reject) {
 40723          function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 40724          function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 40725          function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
 40726          step((generator = generator.apply(thisArg, _arguments || [])).next());
 40727      });
 40728  };
 40729  Object.defineProperty(exports, "__esModule", ({ value: true }));
 40730  exports.SocksClientError = exports.SocksClient = void 0;
 40731  const events_1 = __nccwpck_require__(82361);
 40732  const net = __nccwpck_require__(41808);
 40733  const smart_buffer_1 = __nccwpck_require__(71062);
 40734  const constants_1 = __nccwpck_require__(49647);
 40735  const helpers_1 = __nccwpck_require__(74324);
 40736  const receivebuffer_1 = __nccwpck_require__(39740);
 40737  const util_1 = __nccwpck_require__(75523);
 40738  Object.defineProperty(exports, "SocksClientError", ({ enumerable: true, get: function () { return util_1.SocksClientError; } }));
 40739  const ip_address_1 = __nccwpck_require__(78953);
 40740  class SocksClient extends events_1.EventEmitter {
 40741      constructor(options) {
 40742          super();
 40743          this.options = Object.assign({}, options);
 40744          // Validate SocksClientOptions
 40745          (0, helpers_1.validateSocksClientOptions)(options);
 40746          // Default state
 40747          this.setState(constants_1.SocksClientState.Created);
 40748      }
 40749      /**
 40750       * Creates a new SOCKS connection.
 40751       *
 40752       * Note: Supports callbacks and promises. Only supports the connect command.
 40753       * @param options { SocksClientOptions } Options.
 40754       * @param callback { Function } An optional callback function.
 40755       * @returns { Promise }
 40756       */
 40757      static createConnection(options, callback) {
 40758          return new Promise((resolve, reject) => {
 40759              // Validate SocksClientOptions
 40760              try {
 40761                  (0, helpers_1.validateSocksClientOptions)(options, ['connect']);
 40762              }
 40763              catch (err) {
 40764                  if (typeof callback === 'function') {
 40765                      callback(err);
 40766                      // eslint-disable-next-line @typescript-eslint/no-explicit-any
 40767                      return resolve(err); // Resolves pending promise (prevents memory leaks).
 40768                  }
 40769                  else {
 40770                      return reject(err);
 40771                  }
 40772              }
 40773              const client = new SocksClient(options);
 40774              client.connect(options.existing_socket);
 40775              client.once('established', (info) => {
 40776                  client.removeAllListeners();
 40777                  if (typeof callback === 'function') {
 40778                      callback(null, info);
 40779                      resolve(info); // Resolves pending promise (prevents memory leaks).
 40780                  }
 40781                  else {
 40782                      resolve(info);
 40783                  }
 40784              });
 40785              // Error occurred, failed to establish connection.
 40786              client.once('error', (err) => {
 40787                  client.removeAllListeners();
 40788                  if (typeof callback === 'function') {
 40789                      callback(err);
 40790                      // eslint-disable-next-line @typescript-eslint/no-explicit-any
 40791                      resolve(err); // Resolves pending promise (prevents memory leaks).
 40792                  }
 40793                  else {
 40794                      reject(err);
 40795                  }
 40796              });
 40797          });
 40798      }
 40799      /**
 40800       * Creates a new SOCKS connection chain to a destination host through 2 or more SOCKS proxies.
 40801       *
 40802       * Note: Supports callbacks and promises. Only supports the connect method.
 40803       * Note: Implemented via createConnection() factory function.
 40804       * @param options { SocksClientChainOptions } Options
 40805       * @param callback { Function } An optional callback function.
 40806       * @returns { Promise }
 40807       */
 40808      static createConnectionChain(options, callback) {
 40809          // eslint-disable-next-line no-async-promise-executor
 40810          return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
 40811              // Validate SocksClientChainOptions
 40812              try {
 40813                  (0, helpers_1.validateSocksClientChainOptions)(options);
 40814              }
 40815              catch (err) {
 40816                  if (typeof callback === 'function') {
 40817                      callback(err);
 40818                      // eslint-disable-next-line @typescript-eslint/no-explicit-any
 40819                      return resolve(err); // Resolves pending promise (prevents memory leaks).
 40820                  }
 40821                  else {
 40822                      return reject(err);
 40823                  }
 40824              }
 40825              // Shuffle proxies
 40826              if (options.randomizeChain) {
 40827                  (0, util_1.shuffleArray)(options.proxies);
 40828              }
 40829              try {
 40830                  let sock;
 40831                  for (let i = 0; i < options.proxies.length; i++) {
 40832                      const nextProxy = options.proxies[i];
 40833                      // If we've reached the last proxy in the chain, the destination is the actual destination, otherwise it's the next proxy.
 40834                      const nextDestination = i === options.proxies.length - 1
 40835                          ? options.destination
 40836                          : {
 40837                              host: options.proxies[i + 1].host ||
 40838                                  options.proxies[i + 1].ipaddress,
 40839                              port: options.proxies[i + 1].port,
 40840                          };
 40841                      // Creates the next connection in the chain.
 40842                      const result = yield SocksClient.createConnection({
 40843                          command: 'connect',
 40844                          proxy: nextProxy,
 40845                          destination: nextDestination,
 40846                          existing_socket: sock,
 40847                      });
 40848                      // If sock is undefined, assign it here.
 40849                      sock = sock || result.socket;
 40850                  }
 40851                  if (typeof callback === 'function') {
 40852                      callback(null, { socket: sock });
 40853                      resolve({ socket: sock }); // Resolves pending promise (prevents memory leaks).
 40854                  }
 40855                  else {
 40856                      resolve({ socket: sock });
 40857                  }
 40858              }
 40859              catch (err) {
 40860                  if (typeof callback === 'function') {
 40861                      callback(err);
 40862                      // eslint-disable-next-line @typescript-eslint/no-explicit-any
 40863                      resolve(err); // Resolves pending promise (prevents memory leaks).
 40864                  }
 40865                  else {
 40866                      reject(err);
 40867                  }
 40868              }
 40869          }));
 40870      }
 40871      /**
 40872       * Creates a SOCKS UDP Frame.
 40873       * @param options
 40874       */
 40875      static createUDPFrame(options) {
 40876          const buff = new smart_buffer_1.SmartBuffer();
 40877          buff.writeUInt16BE(0);
 40878          buff.writeUInt8(options.frameNumber || 0);
 40879          // IPv4/IPv6/Hostname
 40880          if (net.isIPv4(options.remoteHost.host)) {
 40881              buff.writeUInt8(constants_1.Socks5HostType.IPv4);
 40882              buff.writeUInt32BE((0, helpers_1.ipv4ToInt32)(options.remoteHost.host));
 40883          }
 40884          else if (net.isIPv6(options.remoteHost.host)) {
 40885              buff.writeUInt8(constants_1.Socks5HostType.IPv6);
 40886              buff.writeBuffer((0, helpers_1.ipToBuffer)(options.remoteHost.host));
 40887          }
 40888          else {
 40889              buff.writeUInt8(constants_1.Socks5HostType.Hostname);
 40890              buff.writeUInt8(Buffer.byteLength(options.remoteHost.host));
 40891              buff.writeString(options.remoteHost.host);
 40892          }
 40893          // Port
 40894          buff.writeUInt16BE(options.remoteHost.port);
 40895          // Data
 40896          buff.writeBuffer(options.data);
 40897          return buff.toBuffer();
 40898      }
 40899      /**
 40900       * Parses a SOCKS UDP frame.
 40901       * @param data
 40902       */
 40903      static parseUDPFrame(data) {
 40904          const buff = smart_buffer_1.SmartBuffer.fromBuffer(data);
 40905          buff.readOffset = 2;
 40906          const frameNumber = buff.readUInt8();
 40907          const hostType = buff.readUInt8();
 40908          let remoteHost;
 40909          if (hostType === constants_1.Socks5HostType.IPv4) {
 40910              remoteHost = (0, helpers_1.int32ToIpv4)(buff.readUInt32BE());
 40911          }
 40912          else if (hostType === constants_1.Socks5HostType.IPv6) {
 40913              remoteHost = ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm();
 40914          }
 40915          else {
 40916              remoteHost = buff.readString(buff.readUInt8());
 40917          }
 40918          const remotePort = buff.readUInt16BE();
 40919          return {
 40920              frameNumber,
 40921              remoteHost: {
 40922                  host: remoteHost,
 40923                  port: remotePort,
 40924              },
 40925              data: buff.readBuffer(),
 40926          };
 40927      }
 40928      /**
 40929       * Internal state setter. If the SocksClient is in an error state, it cannot be changed to a non error state.
 40930       */
 40931      setState(newState) {
 40932          if (this.state !== constants_1.SocksClientState.Error) {
 40933              this.state = newState;
 40934          }
 40935      }
 40936      /**
 40937       * Starts the connection establishment to the proxy and destination.
 40938       * @param existingSocket Connected socket to use instead of creating a new one (internal use).
 40939       */
 40940      connect(existingSocket) {
 40941          this.onDataReceived = (data) => this.onDataReceivedHandler(data);
 40942          this.onClose = () => this.onCloseHandler();
 40943          this.onError = (err) => this.onErrorHandler(err);
 40944          this.onConnect = () => this.onConnectHandler();
 40945          // Start timeout timer (defaults to 30 seconds)
 40946          const timer = setTimeout(() => this.onEstablishedTimeout(), this.options.timeout || constants_1.DEFAULT_TIMEOUT);
 40947          // check whether unref is available as it differs from browser to NodeJS (#33)
 40948          if (timer.unref && typeof timer.unref === 'function') {
 40949              timer.unref();
 40950          }
 40951          // If an existing socket is provided, use it to negotiate SOCKS handshake. Otherwise create a new Socket.
 40952          if (existingSocket) {
 40953              this.socket = existingSocket;
 40954          }
 40955          else {
 40956              this.socket = new net.Socket();
 40957          }
 40958          // Attach Socket error handlers.
 40959          this.socket.once('close', this.onClose);
 40960          this.socket.once('error', this.onError);
 40961          this.socket.once('connect', this.onConnect);
 40962          this.socket.on('data', this.onDataReceived);
 40963          this.setState(constants_1.SocksClientState.Connecting);
 40964          this.receiveBuffer = new receivebuffer_1.ReceiveBuffer();
 40965          if (existingSocket) {
 40966              this.socket.emit('connect');
 40967          }
 40968          else {
 40969              this.socket.connect(this.getSocketOptions());
 40970              if (this.options.set_tcp_nodelay !== undefined &&
 40971                  this.options.set_tcp_nodelay !== null) {
 40972                  this.socket.setNoDelay(!!this.options.set_tcp_nodelay);
 40973              }
 40974          }
 40975          // Listen for established event so we can re-emit any excess data received during handshakes.
 40976          this.prependOnceListener('established', (info) => {
 40977              setImmediate(() => {
 40978                  if (this.receiveBuffer.length > 0) {
 40979                      const excessData = this.receiveBuffer.get(this.receiveBuffer.length);
 40980                      info.socket.emit('data', excessData);
 40981                  }
 40982                  info.socket.resume();
 40983              });
 40984          });
 40985      }
 40986      // Socket options (defaults host/port to options.proxy.host/options.proxy.port)
 40987      getSocketOptions() {
 40988          return Object.assign(Object.assign({}, this.options.socket_options), { host: this.options.proxy.host || this.options.proxy.ipaddress, port: this.options.proxy.port });
 40989      }
 40990      /**
 40991       * Handles internal Socks timeout callback.
 40992       * Note: If the Socks client is not BoundWaitingForConnection or Established, the connection will be closed.
 40993       */
 40994      onEstablishedTimeout() {
 40995          if (this.state !== constants_1.SocksClientState.Established &&
 40996              this.state !== constants_1.SocksClientState.BoundWaitingForConnection) {
 40997              this.closeSocket(constants_1.ERRORS.ProxyConnectionTimedOut);
 40998          }
 40999      }
 41000      /**
 41001       * Handles Socket connect event.
 41002       */
 41003      onConnectHandler() {
 41004          this.setState(constants_1.SocksClientState.Connected);
 41005          // Send initial handshake.
 41006          if (this.options.proxy.type === 4) {
 41007              this.sendSocks4InitialHandshake();
 41008          }
 41009          else {
 41010              this.sendSocks5InitialHandshake();
 41011          }
 41012          this.setState(constants_1.SocksClientState.SentInitialHandshake);
 41013      }
 41014      /**
 41015       * Handles Socket data event.
 41016       * @param data
 41017       */
 41018      onDataReceivedHandler(data) {
 41019          /*
 41020            All received data is appended to a ReceiveBuffer.
 41021            This makes sure that all the data we need is received before we attempt to process it.
 41022          */
 41023          this.receiveBuffer.append(data);
 41024          // Process data that we have.
 41025          this.processData();
 41026      }
 41027      /**
 41028       * Handles processing of the data we have received.
 41029       */
 41030      processData() {
 41031          // If we have enough data to process the next step in the SOCKS handshake, proceed.
 41032          while (this.state !== constants_1.SocksClientState.Established &&
 41033              this.state !== constants_1.SocksClientState.Error &&
 41034              this.receiveBuffer.length >= this.nextRequiredPacketBufferSize) {
 41035              // Sent initial handshake, waiting for response.
 41036              if (this.state === constants_1.SocksClientState.SentInitialHandshake) {
 41037                  if (this.options.proxy.type === 4) {
 41038                      // Socks v4 only has one handshake response.
 41039                      this.handleSocks4FinalHandshakeResponse();
 41040                  }
 41041                  else {
 41042                      // Socks v5 has two handshakes, handle initial one here.
 41043                      this.handleInitialSocks5HandshakeResponse();
 41044                  }
 41045                  // Sent auth request for Socks v5, waiting for response.
 41046              }
 41047              else if (this.state === constants_1.SocksClientState.SentAuthentication) {
 41048                  this.handleInitialSocks5AuthenticationHandshakeResponse();
 41049                  // Sent final Socks v5 handshake, waiting for final response.
 41050              }
 41051              else if (this.state === constants_1.SocksClientState.SentFinalHandshake) {
 41052                  this.handleSocks5FinalHandshakeResponse();
 41053                  // Socks BIND established. Waiting for remote connection via proxy.
 41054              }
 41055              else if (this.state === constants_1.SocksClientState.BoundWaitingForConnection) {
 41056                  if (this.options.proxy.type === 4) {
 41057                      this.handleSocks4IncomingConnectionResponse();
 41058                  }
 41059                  else {
 41060                      this.handleSocks5IncomingConnectionResponse();
 41061                  }
 41062              }
 41063              else {
 41064                  this.closeSocket(constants_1.ERRORS.InternalError);
 41065                  break;
 41066              }
 41067          }
 41068      }
 41069      /**
 41070       * Handles Socket close event.
 41071       * @param had_error
 41072       */
 41073      onCloseHandler() {
 41074          this.closeSocket(constants_1.ERRORS.SocketClosed);
 41075      }
 41076      /**
 41077       * Handles Socket error event.
 41078       * @param err
 41079       */
 41080      onErrorHandler(err) {
 41081          this.closeSocket(err.message);
 41082      }
 41083      /**
 41084       * Removes internal event listeners on the underlying Socket.
 41085       */
 41086      removeInternalSocketHandlers() {
 41087          // Pauses data flow of the socket (this is internally resumed after 'established' is emitted)
 41088          this.socket.pause();
 41089          this.socket.removeListener('data', this.onDataReceived);
 41090          this.socket.removeListener('close', this.onClose);
 41091          this.socket.removeListener('error', this.onError);
 41092          this.socket.removeListener('connect', this.onConnect);
 41093      }
 41094      /**
 41095       * Closes and destroys the underlying Socket. Emits an error event.
 41096       * @param err { String } An error string to include in error event.
 41097       */
 41098      closeSocket(err) {
 41099          // Make sure only one 'error' event is fired for the lifetime of this SocksClient instance.
 41100          if (this.state !== constants_1.SocksClientState.Error) {
 41101              // Set internal state to Error.
 41102              this.setState(constants_1.SocksClientState.Error);
 41103              // Destroy Socket
 41104              this.socket.destroy();
 41105              // Remove internal listeners
 41106              this.removeInternalSocketHandlers();
 41107              // Fire 'error' event.
 41108              this.emit('error', new util_1.SocksClientError(err, this.options));
 41109          }
 41110      }
 41111      /**
 41112       * Sends initial Socks v4 handshake request.
 41113       */
 41114      sendSocks4InitialHandshake() {
 41115          const userId = this.options.proxy.userId || '';
 41116          const buff = new smart_buffer_1.SmartBuffer();
 41117          buff.writeUInt8(0x04);
 41118          buff.writeUInt8(constants_1.SocksCommand[this.options.command]);
 41119          buff.writeUInt16BE(this.options.destination.port);
 41120          // Socks 4 (IPv4)
 41121          if (net.isIPv4(this.options.destination.host)) {
 41122              buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host));
 41123              buff.writeStringNT(userId);
 41124              // Socks 4a (hostname)
 41125          }
 41126          else {
 41127              buff.writeUInt8(0x00);
 41128              buff.writeUInt8(0x00);
 41129              buff.writeUInt8(0x00);
 41130              buff.writeUInt8(0x01);
 41131              buff.writeStringNT(userId);
 41132              buff.writeStringNT(this.options.destination.host);
 41133          }
 41134          this.nextRequiredPacketBufferSize =
 41135              constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks4Response;
 41136          this.socket.write(buff.toBuffer());
 41137      }
 41138      /**
 41139       * Handles Socks v4 handshake response.
 41140       * @param data
 41141       */
 41142      handleSocks4FinalHandshakeResponse() {
 41143          const data = this.receiveBuffer.get(8);
 41144          if (data[1] !== constants_1.Socks4Response.Granted) {
 41145              this.closeSocket(`${constants_1.ERRORS.Socks4ProxyRejectedConnection} - (${constants_1.Socks4Response[data[1]]})`);
 41146          }
 41147          else {
 41148              // Bind response
 41149              if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.bind) {
 41150                  const buff = smart_buffer_1.SmartBuffer.fromBuffer(data);
 41151                  buff.readOffset = 2;
 41152                  const remoteHost = {
 41153                      port: buff.readUInt16BE(),
 41154                      host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()),
 41155                  };
 41156                  // If host is 0.0.0.0, set to proxy host.
 41157                  if (remoteHost.host === '0.0.0.0') {
 41158                      remoteHost.host = this.options.proxy.ipaddress;
 41159                  }
 41160                  this.setState(constants_1.SocksClientState.BoundWaitingForConnection);
 41161                  this.emit('bound', { remoteHost, socket: this.socket });
 41162                  // Connect response
 41163              }
 41164              else {
 41165                  this.setState(constants_1.SocksClientState.Established);
 41166                  this.removeInternalSocketHandlers();
 41167                  this.emit('established', { socket: this.socket });
 41168              }
 41169          }
 41170      }
 41171      /**
 41172       * Handles Socks v4 incoming connection request (BIND)
 41173       * @param data
 41174       */
 41175      handleSocks4IncomingConnectionResponse() {
 41176          const data = this.receiveBuffer.get(8);
 41177          if (data[1] !== constants_1.Socks4Response.Granted) {
 41178              this.closeSocket(`${constants_1.ERRORS.Socks4ProxyRejectedIncomingBoundConnection} - (${constants_1.Socks4Response[data[1]]})`);
 41179          }
 41180          else {
 41181              const buff = smart_buffer_1.SmartBuffer.fromBuffer(data);
 41182              buff.readOffset = 2;
 41183              const remoteHost = {
 41184                  port: buff.readUInt16BE(),
 41185                  host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()),
 41186              };
 41187              this.setState(constants_1.SocksClientState.Established);
 41188              this.removeInternalSocketHandlers();
 41189              this.emit('established', { remoteHost, socket: this.socket });
 41190          }
 41191      }
 41192      /**
 41193       * Sends initial Socks v5 handshake request.
 41194       */
 41195      sendSocks5InitialHandshake() {
 41196          const buff = new smart_buffer_1.SmartBuffer();
 41197          // By default we always support no auth.
 41198          const supportedAuthMethods = [constants_1.Socks5Auth.NoAuth];
 41199          // We should only tell the proxy we support user/pass auth if auth info is actually provided.
 41200          // Note: As of Tor v0.3.5.7+, if user/pass auth is an option from the client, by default it will always take priority.
 41201          if (this.options.proxy.userId || this.options.proxy.password) {
 41202              supportedAuthMethods.push(constants_1.Socks5Auth.UserPass);
 41203          }
 41204          // Custom auth method?
 41205          if (this.options.proxy.custom_auth_method !== undefined) {
 41206              supportedAuthMethods.push(this.options.proxy.custom_auth_method);
 41207          }
 41208          // Build handshake packet
 41209          buff.writeUInt8(0x05);
 41210          buff.writeUInt8(supportedAuthMethods.length);
 41211          for (const authMethod of supportedAuthMethods) {
 41212              buff.writeUInt8(authMethod);
 41213          }
 41214          this.nextRequiredPacketBufferSize =
 41215              constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5InitialHandshakeResponse;
 41216          this.socket.write(buff.toBuffer());
 41217          this.setState(constants_1.SocksClientState.SentInitialHandshake);
 41218      }
 41219      /**
 41220       * Handles initial Socks v5 handshake response.
 41221       * @param data
 41222       */
 41223      handleInitialSocks5HandshakeResponse() {
 41224          const data = this.receiveBuffer.get(2);
 41225          if (data[0] !== 0x05) {
 41226              this.closeSocket(constants_1.ERRORS.InvalidSocks5IntiailHandshakeSocksVersion);
 41227          }
 41228          else if (data[1] === constants_1.SOCKS5_NO_ACCEPTABLE_AUTH) {
 41229              this.closeSocket(constants_1.ERRORS.InvalidSocks5InitialHandshakeNoAcceptedAuthType);
 41230          }
 41231          else {
 41232              // If selected Socks v5 auth method is no auth, send final handshake request.
 41233              if (data[1] === constants_1.Socks5Auth.NoAuth) {
 41234                  this.socks5ChosenAuthType = constants_1.Socks5Auth.NoAuth;
 41235                  this.sendSocks5CommandRequest();
 41236                  // If selected Socks v5 auth method is user/password, send auth handshake.
 41237              }
 41238              else if (data[1] === constants_1.Socks5Auth.UserPass) {
 41239                  this.socks5ChosenAuthType = constants_1.Socks5Auth.UserPass;
 41240                  this.sendSocks5UserPassAuthentication();
 41241                  // If selected Socks v5 auth method is the custom_auth_method, send custom handshake.
 41242              }
 41243              else if (data[1] === this.options.proxy.custom_auth_method) {
 41244                  this.socks5ChosenAuthType = this.options.proxy.custom_auth_method;
 41245                  this.sendSocks5CustomAuthentication();
 41246              }
 41247              else {
 41248                  this.closeSocket(constants_1.ERRORS.InvalidSocks5InitialHandshakeUnknownAuthType);
 41249              }
 41250          }
 41251      }
 41252      /**
 41253       * Sends Socks v5 user & password auth handshake.
 41254       *
 41255       * Note: No auth and user/pass are currently supported.
 41256       */
 41257      sendSocks5UserPassAuthentication() {
 41258          const userId = this.options.proxy.userId || '';
 41259          const password = this.options.proxy.password || '';
 41260          const buff = new smart_buffer_1.SmartBuffer();
 41261          buff.writeUInt8(0x01);
 41262          buff.writeUInt8(Buffer.byteLength(userId));
 41263          buff.writeString(userId);
 41264          buff.writeUInt8(Buffer.byteLength(password));
 41265          buff.writeString(password);
 41266          this.nextRequiredPacketBufferSize =
 41267              constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5UserPassAuthenticationResponse;
 41268          this.socket.write(buff.toBuffer());
 41269          this.setState(constants_1.SocksClientState.SentAuthentication);
 41270      }
 41271      sendSocks5CustomAuthentication() {
 41272          return __awaiter(this, void 0, void 0, function* () {
 41273              this.nextRequiredPacketBufferSize =
 41274                  this.options.proxy.custom_auth_response_size;
 41275              this.socket.write(yield this.options.proxy.custom_auth_request_handler());
 41276              this.setState(constants_1.SocksClientState.SentAuthentication);
 41277          });
 41278      }
 41279      handleSocks5CustomAuthHandshakeResponse(data) {
 41280          return __awaiter(this, void 0, void 0, function* () {
 41281              return yield this.options.proxy.custom_auth_response_handler(data);
 41282          });
 41283      }
 41284      handleSocks5AuthenticationNoAuthHandshakeResponse(data) {
 41285          return __awaiter(this, void 0, void 0, function* () {
 41286              return data[1] === 0x00;
 41287          });
 41288      }
 41289      handleSocks5AuthenticationUserPassHandshakeResponse(data) {
 41290          return __awaiter(this, void 0, void 0, function* () {
 41291              return data[1] === 0x00;
 41292          });
 41293      }
 41294      /**
 41295       * Handles Socks v5 auth handshake response.
 41296       * @param data
 41297       */
 41298      handleInitialSocks5AuthenticationHandshakeResponse() {
 41299          return __awaiter(this, void 0, void 0, function* () {
 41300              this.setState(constants_1.SocksClientState.ReceivedAuthenticationResponse);
 41301              let authResult = false;
 41302              if (this.socks5ChosenAuthType === constants_1.Socks5Auth.NoAuth) {
 41303                  authResult = yield this.handleSocks5AuthenticationNoAuthHandshakeResponse(this.receiveBuffer.get(2));
 41304              }
 41305              else if (this.socks5ChosenAuthType === constants_1.Socks5Auth.UserPass) {
 41306                  authResult =
 41307                      yield this.handleSocks5AuthenticationUserPassHandshakeResponse(this.receiveBuffer.get(2));
 41308              }
 41309              else if (this.socks5ChosenAuthType === this.options.proxy.custom_auth_method) {
 41310                  authResult = yield this.handleSocks5CustomAuthHandshakeResponse(this.receiveBuffer.get(this.options.proxy.custom_auth_response_size));
 41311              }
 41312              if (!authResult) {
 41313                  this.closeSocket(constants_1.ERRORS.Socks5AuthenticationFailed);
 41314              }
 41315              else {
 41316                  this.sendSocks5CommandRequest();
 41317              }
 41318          });
 41319      }
 41320      /**
 41321       * Sends Socks v5 final handshake request.
 41322       */
 41323      sendSocks5CommandRequest() {
 41324          const buff = new smart_buffer_1.SmartBuffer();
 41325          buff.writeUInt8(0x05);
 41326          buff.writeUInt8(constants_1.SocksCommand[this.options.command]);
 41327          buff.writeUInt8(0x00);
 41328          // ipv4, ipv6, domain?
 41329          if (net.isIPv4(this.options.destination.host)) {
 41330              buff.writeUInt8(constants_1.Socks5HostType.IPv4);
 41331              buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host));
 41332          }
 41333          else if (net.isIPv6(this.options.destination.host)) {
 41334              buff.writeUInt8(constants_1.Socks5HostType.IPv6);
 41335              buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host));
 41336          }
 41337          else {
 41338              buff.writeUInt8(constants_1.Socks5HostType.Hostname);
 41339              buff.writeUInt8(this.options.destination.host.length);
 41340              buff.writeString(this.options.destination.host);
 41341          }
 41342          buff.writeUInt16BE(this.options.destination.port);
 41343          this.nextRequiredPacketBufferSize =
 41344              constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHeader;
 41345          this.socket.write(buff.toBuffer());
 41346          this.setState(constants_1.SocksClientState.SentFinalHandshake);
 41347      }
 41348      /**
 41349       * Handles Socks v5 final handshake response.
 41350       * @param data
 41351       */
 41352      handleSocks5FinalHandshakeResponse() {
 41353          // Peek at available data (we need at least 5 bytes to get the hostname length)
 41354          const header = this.receiveBuffer.peek(5);
 41355          if (header[0] !== 0x05 || header[1] !== constants_1.Socks5Response.Granted) {
 41356              this.closeSocket(`${constants_1.ERRORS.InvalidSocks5FinalHandshakeRejected} - ${constants_1.Socks5Response[header[1]]}`);
 41357          }
 41358          else {
 41359              // Read address type
 41360              const addressType = header[3];
 41361              let remoteHost;
 41362              let buff;
 41363              // IPv4
 41364              if (addressType === constants_1.Socks5HostType.IPv4) {
 41365                  // Check if data is available.
 41366                  const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv4;
 41367                  if (this.receiveBuffer.length < dataNeeded) {
 41368                      this.nextRequiredPacketBufferSize = dataNeeded;
 41369                      return;
 41370                  }
 41371                  buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4));
 41372                  remoteHost = {
 41373                      host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()),
 41374                      port: buff.readUInt16BE(),
 41375                  };
 41376                  // If given host is 0.0.0.0, assume remote proxy ip instead.
 41377                  if (remoteHost.host === '0.0.0.0') {
 41378                      remoteHost.host = this.options.proxy.ipaddress;
 41379                  }
 41380                  // Hostname
 41381              }
 41382              else if (addressType === constants_1.Socks5HostType.Hostname) {
 41383                  const hostLength = header[4];
 41384                  const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHostname(hostLength); // header + host length + host + port
 41385                  // Check if data is available.
 41386                  if (this.receiveBuffer.length < dataNeeded) {
 41387                      this.nextRequiredPacketBufferSize = dataNeeded;
 41388                      return;
 41389                  }
 41390                  buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(5));
 41391                  remoteHost = {
 41392                      host: buff.readString(hostLength),
 41393                      port: buff.readUInt16BE(),
 41394                  };
 41395                  // IPv6
 41396              }
 41397              else if (addressType === constants_1.Socks5HostType.IPv6) {
 41398                  // Check if data is available.
 41399                  const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv6;
 41400                  if (this.receiveBuffer.length < dataNeeded) {
 41401                      this.nextRequiredPacketBufferSize = dataNeeded;
 41402                      return;
 41403                  }
 41404                  buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4));
 41405                  remoteHost = {
 41406                      host: ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(),
 41407                      port: buff.readUInt16BE(),
 41408                  };
 41409              }
 41410              // We have everything we need
 41411              this.setState(constants_1.SocksClientState.ReceivedFinalResponse);
 41412              // If using CONNECT, the client is now in the established state.
 41413              if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.connect) {
 41414                  this.setState(constants_1.SocksClientState.Established);
 41415                  this.removeInternalSocketHandlers();
 41416                  this.emit('established', { remoteHost, socket: this.socket });
 41417              }
 41418              else if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.bind) {
 41419                  /* If using BIND, the Socks client is now in BoundWaitingForConnection state.
 41420                     This means that the remote proxy server is waiting for a remote connection to the bound port. */
 41421                  this.setState(constants_1.SocksClientState.BoundWaitingForConnection);
 41422                  this.nextRequiredPacketBufferSize =
 41423                      constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHeader;
 41424                  this.emit('bound', { remoteHost, socket: this.socket });
 41425                  /*
 41426                    If using Associate, the Socks client is now Established. And the proxy server is now accepting UDP packets at the
 41427                    given bound port. This initial Socks TCP connection must remain open for the UDP relay to continue to work.
 41428                  */
 41429              }
 41430              else if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.associate) {
 41431                  this.setState(constants_1.SocksClientState.Established);
 41432                  this.removeInternalSocketHandlers();
 41433                  this.emit('established', {
 41434                      remoteHost,
 41435                      socket: this.socket,
 41436                  });
 41437              }
 41438          }
 41439      }
 41440      /**
 41441       * Handles Socks v5 incoming connection request (BIND).
 41442       */
 41443      handleSocks5IncomingConnectionResponse() {
 41444          // Peek at available data (we need at least 5 bytes to get the hostname length)
 41445          const header = this.receiveBuffer.peek(5);
 41446          if (header[0] !== 0x05 || header[1] !== constants_1.Socks5Response.Granted) {
 41447              this.closeSocket(`${constants_1.ERRORS.Socks5ProxyRejectedIncomingBoundConnection} - ${constants_1.Socks5Response[header[1]]}`);
 41448          }
 41449          else {
 41450              // Read address type
 41451              const addressType = header[3];
 41452              let remoteHost;
 41453              let buff;
 41454              // IPv4
 41455              if (addressType === constants_1.Socks5HostType.IPv4) {
 41456                  // Check if data is available.
 41457                  const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv4;
 41458                  if (this.receiveBuffer.length < dataNeeded) {
 41459                      this.nextRequiredPacketBufferSize = dataNeeded;
 41460                      return;
 41461                  }
 41462                  buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4));
 41463                  remoteHost = {
 41464                      host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()),
 41465                      port: buff.readUInt16BE(),
 41466                  };
 41467                  // If given host is 0.0.0.0, assume remote proxy ip instead.
 41468                  if (remoteHost.host === '0.0.0.0') {
 41469                      remoteHost.host = this.options.proxy.ipaddress;
 41470                  }
 41471                  // Hostname
 41472              }
 41473              else if (addressType === constants_1.Socks5HostType.Hostname) {
 41474                  const hostLength = header[4];
 41475                  const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHostname(hostLength); // header + host length + port
 41476                  // Check if data is available.
 41477                  if (this.receiveBuffer.length < dataNeeded) {
 41478                      this.nextRequiredPacketBufferSize = dataNeeded;
 41479                      return;
 41480                  }
 41481                  buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(5));
 41482                  remoteHost = {
 41483                      host: buff.readString(hostLength),
 41484                      port: buff.readUInt16BE(),
 41485                  };
 41486                  // IPv6
 41487              }
 41488              else if (addressType === constants_1.Socks5HostType.IPv6) {
 41489                  // Check if data is available.
 41490                  const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv6;
 41491                  if (this.receiveBuffer.length < dataNeeded) {
 41492                      this.nextRequiredPacketBufferSize = dataNeeded;
 41493                      return;
 41494                  }
 41495                  buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4));
 41496                  remoteHost = {
 41497                      host: ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(),
 41498                      port: buff.readUInt16BE(),
 41499                  };
 41500              }
 41501              this.setState(constants_1.SocksClientState.Established);
 41502              this.removeInternalSocketHandlers();
 41503              this.emit('established', { remoteHost, socket: this.socket });
 41504          }
 41505      }
 41506      get socksClientOptions() {
 41507          return Object.assign({}, this.options);
 41508      }
 41509  }
 41510  exports.SocksClient = SocksClient;
 41511  //# sourceMappingURL=socksclient.js.map
 41512  
 41513  /***/ }),
 41514  
 41515  /***/ 49647:
 41516  /***/ ((__unused_webpack_module, exports) => {
 41517  
 41518  "use strict";
 41519  
 41520  Object.defineProperty(exports, "__esModule", ({ value: true }));
 41521  exports.SOCKS5_NO_ACCEPTABLE_AUTH = exports.SOCKS5_CUSTOM_AUTH_END = exports.SOCKS5_CUSTOM_AUTH_START = exports.SOCKS_INCOMING_PACKET_SIZES = exports.SocksClientState = exports.Socks5Response = exports.Socks5HostType = exports.Socks5Auth = exports.Socks4Response = exports.SocksCommand = exports.ERRORS = exports.DEFAULT_TIMEOUT = void 0;
 41522  const DEFAULT_TIMEOUT = 30000;
 41523  exports.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT;
 41524  // prettier-ignore
 41525  const ERRORS = {
 41526      InvalidSocksCommand: 'An invalid SOCKS command was provided. Valid options are connect, bind, and associate.',
 41527      InvalidSocksCommandForOperation: 'An invalid SOCKS command was provided. Only a subset of commands are supported for this operation.',
 41528      InvalidSocksCommandChain: 'An invalid SOCKS command was provided. Chaining currently only supports the connect command.',
 41529      InvalidSocksClientOptionsDestination: 'An invalid destination host was provided.',
 41530      InvalidSocksClientOptionsExistingSocket: 'An invalid existing socket was provided. This should be an instance of stream.Duplex.',
 41531      InvalidSocksClientOptionsProxy: 'Invalid SOCKS proxy details were provided.',
 41532      InvalidSocksClientOptionsTimeout: 'An invalid timeout value was provided. Please enter a value above 0 (in ms).',
 41533      InvalidSocksClientOptionsProxiesLength: 'At least two socks proxies must be provided for chaining.',
 41534      InvalidSocksClientOptionsCustomAuthRange: 'Custom auth must be a value between 0x80 and 0xFE.',
 41535      InvalidSocksClientOptionsCustomAuthOptions: 'When a custom_auth_method is provided, custom_auth_request_handler, custom_auth_response_size, and custom_auth_response_handler must also be provided and valid.',
 41536      NegotiationError: 'Negotiation error',
 41537      SocketClosed: 'Socket closed',
 41538      ProxyConnectionTimedOut: 'Proxy connection timed out',
 41539      InternalError: 'SocksClient internal error (this should not happen)',
 41540      InvalidSocks4HandshakeResponse: 'Received invalid Socks4 handshake response',
 41541      Socks4ProxyRejectedConnection: 'Socks4 Proxy rejected connection',
 41542      InvalidSocks4IncomingConnectionResponse: 'Socks4 invalid incoming connection response',
 41543      Socks4ProxyRejectedIncomingBoundConnection: 'Socks4 Proxy rejected incoming bound connection',
 41544      InvalidSocks5InitialHandshakeResponse: 'Received invalid Socks5 initial handshake response',
 41545      InvalidSocks5IntiailHandshakeSocksVersion: 'Received invalid Socks5 initial handshake (invalid socks version)',
 41546      InvalidSocks5InitialHandshakeNoAcceptedAuthType: 'Received invalid Socks5 initial handshake (no accepted authentication type)',
 41547      InvalidSocks5InitialHandshakeUnknownAuthType: 'Received invalid Socks5 initial handshake (unknown authentication type)',
 41548      Socks5AuthenticationFailed: 'Socks5 Authentication failed',
 41549      InvalidSocks5FinalHandshake: 'Received invalid Socks5 final handshake response',
 41550      InvalidSocks5FinalHandshakeRejected: 'Socks5 proxy rejected connection',
 41551      InvalidSocks5IncomingConnectionResponse: 'Received invalid Socks5 incoming connection response',
 41552      Socks5ProxyRejectedIncomingBoundConnection: 'Socks5 Proxy rejected incoming bound connection',
 41553  };
 41554  exports.ERRORS = ERRORS;
 41555  const SOCKS_INCOMING_PACKET_SIZES = {
 41556      Socks5InitialHandshakeResponse: 2,
 41557      Socks5UserPassAuthenticationResponse: 2,
 41558      // Command response + incoming connection (bind)
 41559      Socks5ResponseHeader: 5, // We need at least 5 to read the hostname length, then we wait for the address+port information.
 41560      Socks5ResponseIPv4: 10, // 4 header + 4 ip + 2 port
 41561      Socks5ResponseIPv6: 22, // 4 header + 16 ip + 2 port
 41562      Socks5ResponseHostname: (hostNameLength) => hostNameLength + 7, // 4 header + 1 host length + host + 2 port
 41563      // Command response + incoming connection (bind)
 41564      Socks4Response: 8, // 2 header + 2 port + 4 ip
 41565  };
 41566  exports.SOCKS_INCOMING_PACKET_SIZES = SOCKS_INCOMING_PACKET_SIZES;
 41567  var SocksCommand;
 41568  (function (SocksCommand) {
 41569      SocksCommand[SocksCommand["connect"] = 1] = "connect";
 41570      SocksCommand[SocksCommand["bind"] = 2] = "bind";
 41571      SocksCommand[SocksCommand["associate"] = 3] = "associate";
 41572  })(SocksCommand || (exports.SocksCommand = SocksCommand = {}));
 41573  var Socks4Response;
 41574  (function (Socks4Response) {
 41575      Socks4Response[Socks4Response["Granted"] = 90] = "Granted";
 41576      Socks4Response[Socks4Response["Failed"] = 91] = "Failed";
 41577      Socks4Response[Socks4Response["Rejected"] = 92] = "Rejected";
 41578      Socks4Response[Socks4Response["RejectedIdent"] = 93] = "RejectedIdent";
 41579  })(Socks4Response || (exports.Socks4Response = Socks4Response = {}));
 41580  var Socks5Auth;
 41581  (function (Socks5Auth) {
 41582      Socks5Auth[Socks5Auth["NoAuth"] = 0] = "NoAuth";
 41583      Socks5Auth[Socks5Auth["GSSApi"] = 1] = "GSSApi";
 41584      Socks5Auth[Socks5Auth["UserPass"] = 2] = "UserPass";
 41585  })(Socks5Auth || (exports.Socks5Auth = Socks5Auth = {}));
 41586  const SOCKS5_CUSTOM_AUTH_START = 0x80;
 41587  exports.SOCKS5_CUSTOM_AUTH_START = SOCKS5_CUSTOM_AUTH_START;
 41588  const SOCKS5_CUSTOM_AUTH_END = 0xfe;
 41589  exports.SOCKS5_CUSTOM_AUTH_END = SOCKS5_CUSTOM_AUTH_END;
 41590  const SOCKS5_NO_ACCEPTABLE_AUTH = 0xff;
 41591  exports.SOCKS5_NO_ACCEPTABLE_AUTH = SOCKS5_NO_ACCEPTABLE_AUTH;
 41592  var Socks5Response;
 41593  (function (Socks5Response) {
 41594      Socks5Response[Socks5Response["Granted"] = 0] = "Granted";
 41595      Socks5Response[Socks5Response["Failure"] = 1] = "Failure";
 41596      Socks5Response[Socks5Response["NotAllowed"] = 2] = "NotAllowed";
 41597      Socks5Response[Socks5Response["NetworkUnreachable"] = 3] = "NetworkUnreachable";
 41598      Socks5Response[Socks5Response["HostUnreachable"] = 4] = "HostUnreachable";
 41599      Socks5Response[Socks5Response["ConnectionRefused"] = 5] = "ConnectionRefused";
 41600      Socks5Response[Socks5Response["TTLExpired"] = 6] = "TTLExpired";
 41601      Socks5Response[Socks5Response["CommandNotSupported"] = 7] = "CommandNotSupported";
 41602      Socks5Response[Socks5Response["AddressNotSupported"] = 8] = "AddressNotSupported";
 41603  })(Socks5Response || (exports.Socks5Response = Socks5Response = {}));
 41604  var Socks5HostType;
 41605  (function (Socks5HostType) {
 41606      Socks5HostType[Socks5HostType["IPv4"] = 1] = "IPv4";
 41607      Socks5HostType[Socks5HostType["Hostname"] = 3] = "Hostname";
 41608      Socks5HostType[Socks5HostType["IPv6"] = 4] = "IPv6";
 41609  })(Socks5HostType || (exports.Socks5HostType = Socks5HostType = {}));
 41610  var SocksClientState;
 41611  (function (SocksClientState) {
 41612      SocksClientState[SocksClientState["Created"] = 0] = "Created";
 41613      SocksClientState[SocksClientState["Connecting"] = 1] = "Connecting";
 41614      SocksClientState[SocksClientState["Connected"] = 2] = "Connected";
 41615      SocksClientState[SocksClientState["SentInitialHandshake"] = 3] = "SentInitialHandshake";
 41616      SocksClientState[SocksClientState["ReceivedInitialHandshakeResponse"] = 4] = "ReceivedInitialHandshakeResponse";
 41617      SocksClientState[SocksClientState["SentAuthentication"] = 5] = "SentAuthentication";
 41618      SocksClientState[SocksClientState["ReceivedAuthenticationResponse"] = 6] = "ReceivedAuthenticationResponse";
 41619      SocksClientState[SocksClientState["SentFinalHandshake"] = 7] = "SentFinalHandshake";
 41620      SocksClientState[SocksClientState["ReceivedFinalResponse"] = 8] = "ReceivedFinalResponse";
 41621      SocksClientState[SocksClientState["BoundWaitingForConnection"] = 9] = "BoundWaitingForConnection";
 41622      SocksClientState[SocksClientState["Established"] = 10] = "Established";
 41623      SocksClientState[SocksClientState["Disconnected"] = 11] = "Disconnected";
 41624      SocksClientState[SocksClientState["Error"] = 99] = "Error";
 41625  })(SocksClientState || (exports.SocksClientState = SocksClientState = {}));
 41626  //# sourceMappingURL=constants.js.map
 41627  
 41628  /***/ }),
 41629  
 41630  /***/ 74324:
 41631  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 41632  
 41633  "use strict";
 41634  
 41635  Object.defineProperty(exports, "__esModule", ({ value: true }));
 41636  exports.ipToBuffer = exports.int32ToIpv4 = exports.ipv4ToInt32 = exports.validateSocksClientChainOptions = exports.validateSocksClientOptions = void 0;
 41637  const util_1 = __nccwpck_require__(75523);
 41638  const constants_1 = __nccwpck_require__(49647);
 41639  const stream = __nccwpck_require__(12781);
 41640  const ip_address_1 = __nccwpck_require__(78953);
 41641  const net = __nccwpck_require__(41808);
 41642  /**
 41643   * Validates the provided SocksClientOptions
 41644   * @param options { SocksClientOptions }
 41645   * @param acceptedCommands { string[] } A list of accepted SocksProxy commands.
 41646   */
 41647  function validateSocksClientOptions(options, acceptedCommands = ['connect', 'bind', 'associate']) {
 41648      // Check SOCKs command option.
 41649      if (!constants_1.SocksCommand[options.command]) {
 41650          throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommand, options);
 41651      }
 41652      // Check SocksCommand for acceptable command.
 41653      if (acceptedCommands.indexOf(options.command) === -1) {
 41654          throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommandForOperation, options);
 41655      }
 41656      // Check destination
 41657      if (!isValidSocksRemoteHost(options.destination)) {
 41658          throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsDestination, options);
 41659      }
 41660      // Check SOCKS proxy to use
 41661      if (!isValidSocksProxy(options.proxy)) {
 41662          throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxy, options);
 41663      }
 41664      // Validate custom auth (if set)
 41665      validateCustomProxyAuth(options.proxy, options);
 41666      // Check timeout
 41667      if (options.timeout && !isValidTimeoutValue(options.timeout)) {
 41668          throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsTimeout, options);
 41669      }
 41670      // Check existing_socket (if provided)
 41671      if (options.existing_socket &&
 41672          !(options.existing_socket instanceof stream.Duplex)) {
 41673          throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsExistingSocket, options);
 41674      }
 41675  }
 41676  exports.validateSocksClientOptions = validateSocksClientOptions;
 41677  /**
 41678   * Validates the SocksClientChainOptions
 41679   * @param options { SocksClientChainOptions }
 41680   */
 41681  function validateSocksClientChainOptions(options) {
 41682      // Only connect is supported when chaining.
 41683      if (options.command !== 'connect') {
 41684          throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommandChain, options);
 41685      }
 41686      // Check destination
 41687      if (!isValidSocksRemoteHost(options.destination)) {
 41688          throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsDestination, options);
 41689      }
 41690      // Validate proxies (length)
 41691      if (!(options.proxies &&
 41692          Array.isArray(options.proxies) &&
 41693          options.proxies.length >= 2)) {
 41694          throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxiesLength, options);
 41695      }
 41696      // Validate proxies
 41697      options.proxies.forEach((proxy) => {
 41698          if (!isValidSocksProxy(proxy)) {
 41699              throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxy, options);
 41700          }
 41701          // Validate custom auth (if set)
 41702          validateCustomProxyAuth(proxy, options);
 41703      });
 41704      // Check timeout
 41705      if (options.timeout && !isValidTimeoutValue(options.timeout)) {
 41706          throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsTimeout, options);
 41707      }
 41708  }
 41709  exports.validateSocksClientChainOptions = validateSocksClientChainOptions;
 41710  function validateCustomProxyAuth(proxy, options) {
 41711      if (proxy.custom_auth_method !== undefined) {
 41712          // Invalid auth method range
 41713          if (proxy.custom_auth_method < constants_1.SOCKS5_CUSTOM_AUTH_START ||
 41714              proxy.custom_auth_method > constants_1.SOCKS5_CUSTOM_AUTH_END) {
 41715              throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthRange, options);
 41716          }
 41717          // Missing custom_auth_request_handler
 41718          if (proxy.custom_auth_request_handler === undefined ||
 41719              typeof proxy.custom_auth_request_handler !== 'function') {
 41720              throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options);
 41721          }
 41722          // Missing custom_auth_response_size
 41723          if (proxy.custom_auth_response_size === undefined) {
 41724              throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options);
 41725          }
 41726          // Missing/invalid custom_auth_response_handler
 41727          if (proxy.custom_auth_response_handler === undefined ||
 41728              typeof proxy.custom_auth_response_handler !== 'function') {
 41729              throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options);
 41730          }
 41731      }
 41732  }
 41733  /**
 41734   * Validates a SocksRemoteHost
 41735   * @param remoteHost { SocksRemoteHost }
 41736   */
 41737  function isValidSocksRemoteHost(remoteHost) {
 41738      return (remoteHost &&
 41739          typeof remoteHost.host === 'string' &&
 41740          typeof remoteHost.port === 'number' &&
 41741          remoteHost.port >= 0 &&
 41742          remoteHost.port <= 65535);
 41743  }
 41744  /**
 41745   * Validates a SocksProxy
 41746   * @param proxy { SocksProxy }
 41747   */
 41748  function isValidSocksProxy(proxy) {
 41749      return (proxy &&
 41750          (typeof proxy.host === 'string' || typeof proxy.ipaddress === 'string') &&
 41751          typeof proxy.port === 'number' &&
 41752          proxy.port >= 0 &&
 41753          proxy.port <= 65535 &&
 41754          (proxy.type === 4 || proxy.type === 5));
 41755  }
 41756  /**
 41757   * Validates a timeout value.
 41758   * @param value { Number }
 41759   */
 41760  function isValidTimeoutValue(value) {
 41761      return typeof value === 'number' && value > 0;
 41762  }
 41763  function ipv4ToInt32(ip) {
 41764      const address = new ip_address_1.Address4(ip);
 41765      // Convert the IPv4 address parts to an integer
 41766      return address.toArray().reduce((acc, part) => (acc << 8) + part, 0);
 41767  }
 41768  exports.ipv4ToInt32 = ipv4ToInt32;
 41769  function int32ToIpv4(int32) {
 41770      // Extract each byte (octet) from the 32-bit integer
 41771      const octet1 = (int32 >>> 24) & 0xff;
 41772      const octet2 = (int32 >>> 16) & 0xff;
 41773      const octet3 = (int32 >>> 8) & 0xff;
 41774      const octet4 = int32 & 0xff;
 41775      // Combine the octets into a string in IPv4 format
 41776      return [octet1, octet2, octet3, octet4].join('.');
 41777  }
 41778  exports.int32ToIpv4 = int32ToIpv4;
 41779  function ipToBuffer(ip) {
 41780      if (net.isIPv4(ip)) {
 41781          // Handle IPv4 addresses
 41782          const address = new ip_address_1.Address4(ip);
 41783          return Buffer.from(address.toArray());
 41784      }
 41785      else if (net.isIPv6(ip)) {
 41786          // Handle IPv6 addresses
 41787          const address = new ip_address_1.Address6(ip);
 41788          return Buffer.from(address.toByteArray());
 41789      }
 41790      else {
 41791          throw new Error('Invalid IP address format');
 41792      }
 41793  }
 41794  exports.ipToBuffer = ipToBuffer;
 41795  //# sourceMappingURL=helpers.js.map
 41796  
 41797  /***/ }),
 41798  
 41799  /***/ 39740:
 41800  /***/ ((__unused_webpack_module, exports) => {
 41801  
 41802  "use strict";
 41803  
 41804  Object.defineProperty(exports, "__esModule", ({ value: true }));
 41805  exports.ReceiveBuffer = void 0;
 41806  class ReceiveBuffer {
 41807      constructor(size = 4096) {
 41808          this.buffer = Buffer.allocUnsafe(size);
 41809          this.offset = 0;
 41810          this.originalSize = size;
 41811      }
 41812      get length() {
 41813          return this.offset;
 41814      }
 41815      append(data) {
 41816          if (!Buffer.isBuffer(data)) {
 41817              throw new Error('Attempted to append a non-buffer instance to ReceiveBuffer.');
 41818          }
 41819          if (this.offset + data.length >= this.buffer.length) {
 41820              const tmp = this.buffer;
 41821              this.buffer = Buffer.allocUnsafe(Math.max(this.buffer.length + this.originalSize, this.buffer.length + data.length));
 41822              tmp.copy(this.buffer);
 41823          }
 41824          data.copy(this.buffer, this.offset);
 41825          return (this.offset += data.length);
 41826      }
 41827      peek(length) {
 41828          if (length > this.offset) {
 41829              throw new Error('Attempted to read beyond the bounds of the managed internal data.');
 41830          }
 41831          return this.buffer.slice(0, length);
 41832      }
 41833      get(length) {
 41834          if (length > this.offset) {
 41835              throw new Error('Attempted to read beyond the bounds of the managed internal data.');
 41836          }
 41837          const value = Buffer.allocUnsafe(length);
 41838          this.buffer.slice(0, length).copy(value);
 41839          this.buffer.copyWithin(0, length, length + this.offset - length);
 41840          this.offset -= length;
 41841          return value;
 41842      }
 41843  }
 41844  exports.ReceiveBuffer = ReceiveBuffer;
 41845  //# sourceMappingURL=receivebuffer.js.map
 41846  
 41847  /***/ }),
 41848  
 41849  /***/ 75523:
 41850  /***/ ((__unused_webpack_module, exports) => {
 41851  
 41852  "use strict";
 41853  
 41854  Object.defineProperty(exports, "__esModule", ({ value: true }));
 41855  exports.shuffleArray = exports.SocksClientError = void 0;
 41856  /**
 41857   * Error wrapper for SocksClient
 41858   */
 41859  class SocksClientError extends Error {
 41860      constructor(message, options) {
 41861          super(message);
 41862          this.options = options;
 41863      }
 41864  }
 41865  exports.SocksClientError = SocksClientError;
 41866  /**
 41867   * Shuffles a given array.
 41868   * @param array The array to shuffle.
 41869   */
 41870  function shuffleArray(array) {
 41871      for (let i = array.length - 1; i > 0; i--) {
 41872          const j = Math.floor(Math.random() * (i + 1));
 41873          [array[i], array[j]] = [array[j], array[i]];
 41874      }
 41875  }
 41876  exports.shuffleArray = shuffleArray;
 41877  //# sourceMappingURL=util.js.map
 41878  
 41879  /***/ }),
 41880  
 41881  /***/ 54754:
 41882  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 41883  
 41884  "use strict";
 41885  
 41886  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 41887      if (k2 === undefined) k2 = k;
 41888      var desc = Object.getOwnPropertyDescriptor(m, k);
 41889      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 41890        desc = { enumerable: true, get: function() { return m[k]; } };
 41891      }
 41892      Object.defineProperty(o, k2, desc);
 41893  }) : (function(o, m, k, k2) {
 41894      if (k2 === undefined) k2 = k;
 41895      o[k2] = m[k];
 41896  }));
 41897  var __exportStar = (this && this.__exportStar) || function(m, exports) {
 41898      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
 41899  };
 41900  Object.defineProperty(exports, "__esModule", ({ value: true }));
 41901  __exportStar(__nccwpck_require__(36127), exports);
 41902  //# sourceMappingURL=index.js.map
 41903  
 41904  /***/ }),
 41905  
 41906  /***/ 33988:
 41907  /***/ ((__unused_webpack_module, exports) => {
 41908  
 41909  /* global window, exports, define */
 41910  
 41911  !function() {
 41912      'use strict'
 41913  
 41914      var re = {
 41915          not_string: /[^s]/,
 41916          not_bool: /[^t]/,
 41917          not_type: /[^T]/,
 41918          not_primitive: /[^v]/,
 41919          number: /[diefg]/,
 41920          numeric_arg: /[bcdiefguxX]/,
 41921          json: /[j]/,
 41922          not_json: /[^j]/,
 41923          text: /^[^\x25]+/,
 41924          modulo: /^\x25{2}/,
 41925          placeholder: /^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,
 41926          key: /^([a-z_][a-z_\d]*)/i,
 41927          key_access: /^\.([a-z_][a-z_\d]*)/i,
 41928          index_access: /^\[(\d+)\]/,
 41929          sign: /^[+-]/
 41930      }
 41931  
 41932      function sprintf(key) {
 41933          // `arguments` is not an array, but should be fine for this call
 41934          return sprintf_format(sprintf_parse(key), arguments)
 41935      }
 41936  
 41937      function vsprintf(fmt, argv) {
 41938          return sprintf.apply(null, [fmt].concat(argv || []))
 41939      }
 41940  
 41941      function sprintf_format(parse_tree, argv) {
 41942          var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign
 41943          for (i = 0; i < tree_length; i++) {
 41944              if (typeof parse_tree[i] === 'string') {
 41945                  output += parse_tree[i]
 41946              }
 41947              else if (typeof parse_tree[i] === 'object') {
 41948                  ph = parse_tree[i] // convenience purposes only
 41949                  if (ph.keys) { // keyword argument
 41950                      arg = argv[cursor]
 41951                      for (k = 0; k < ph.keys.length; k++) {
 41952                          if (arg == undefined) {
 41953                              throw new Error(sprintf('[sprintf] Cannot access property "%s" of undefined value "%s"', ph.keys[k], ph.keys[k-1]))
 41954                          }
 41955                          arg = arg[ph.keys[k]]
 41956                      }
 41957                  }
 41958                  else if (ph.param_no) { // positional argument (explicit)
 41959                      arg = argv[ph.param_no]
 41960                  }
 41961                  else { // positional argument (implicit)
 41962                      arg = argv[cursor++]
 41963                  }
 41964  
 41965                  if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {
 41966                      arg = arg()
 41967                  }
 41968  
 41969                  if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {
 41970                      throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))
 41971                  }
 41972  
 41973                  if (re.number.test(ph.type)) {
 41974                      is_positive = arg >= 0
 41975                  }
 41976  
 41977                  switch (ph.type) {
 41978                      case 'b':
 41979                          arg = parseInt(arg, 10).toString(2)
 41980                          break
 41981                      case 'c':
 41982                          arg = String.fromCharCode(parseInt(arg, 10))
 41983                          break
 41984                      case 'd':
 41985                      case 'i':
 41986                          arg = parseInt(arg, 10)
 41987                          break
 41988                      case 'j':
 41989                          arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)
 41990                          break
 41991                      case 'e':
 41992                          arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()
 41993                          break
 41994                      case 'f':
 41995                          arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)
 41996                          break
 41997                      case 'g':
 41998                          arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)
 41999                          break
 42000                      case 'o':
 42001                          arg = (parseInt(arg, 10) >>> 0).toString(8)
 42002                          break
 42003                      case 's':
 42004                          arg = String(arg)
 42005                          arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
 42006                          break
 42007                      case 't':
 42008                          arg = String(!!arg)
 42009                          arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
 42010                          break
 42011                      case 'T':
 42012                          arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()
 42013                          arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
 42014                          break
 42015                      case 'u':
 42016                          arg = parseInt(arg, 10) >>> 0
 42017                          break
 42018                      case 'v':
 42019                          arg = arg.valueOf()
 42020                          arg = (ph.precision ? arg.substring(0, ph.precision) : arg)
 42021                          break
 42022                      case 'x':
 42023                          arg = (parseInt(arg, 10) >>> 0).toString(16)
 42024                          break
 42025                      case 'X':
 42026                          arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()
 42027                          break
 42028                  }
 42029                  if (re.json.test(ph.type)) {
 42030                      output += arg
 42031                  }
 42032                  else {
 42033                      if (re.number.test(ph.type) && (!is_positive || ph.sign)) {
 42034                          sign = is_positive ? '+' : '-'
 42035                          arg = arg.toString().replace(re.sign, '')
 42036                      }
 42037                      else {
 42038                          sign = ''
 42039                      }
 42040                      pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '
 42041                      pad_length = ph.width - (sign + arg).length
 42042                      pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''
 42043                      output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)
 42044                  }
 42045              }
 42046          }
 42047          return output
 42048      }
 42049  
 42050      var sprintf_cache = Object.create(null)
 42051  
 42052      function sprintf_parse(fmt) {
 42053          if (sprintf_cache[fmt]) {
 42054              return sprintf_cache[fmt]
 42055          }
 42056  
 42057          var _fmt = fmt, match, parse_tree = [], arg_names = 0
 42058          while (_fmt) {
 42059              if ((match = re.text.exec(_fmt)) !== null) {
 42060                  parse_tree.push(match[0])
 42061              }
 42062              else if ((match = re.modulo.exec(_fmt)) !== null) {
 42063                  parse_tree.push('%')
 42064              }
 42065              else if ((match = re.placeholder.exec(_fmt)) !== null) {
 42066                  if (match[2]) {
 42067                      arg_names |= 1
 42068                      var field_list = [], replacement_field = match[2], field_match = []
 42069                      if ((field_match = re.key.exec(replacement_field)) !== null) {
 42070                          field_list.push(field_match[1])
 42071                          while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
 42072                              if ((field_match = re.key_access.exec(replacement_field)) !== null) {
 42073                                  field_list.push(field_match[1])
 42074                              }
 42075                              else if ((field_match = re.index_access.exec(replacement_field)) !== null) {
 42076                                  field_list.push(field_match[1])
 42077                              }
 42078                              else {
 42079                                  throw new SyntaxError('[sprintf] failed to parse named argument key')
 42080                              }
 42081                          }
 42082                      }
 42083                      else {
 42084                          throw new SyntaxError('[sprintf] failed to parse named argument key')
 42085                      }
 42086                      match[2] = field_list
 42087                  }
 42088                  else {
 42089                      arg_names |= 2
 42090                  }
 42091                  if (arg_names === 3) {
 42092                      throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')
 42093                  }
 42094  
 42095                  parse_tree.push(
 42096                      {
 42097                          placeholder: match[0],
 42098                          param_no:    match[1],
 42099                          keys:        match[2],
 42100                          sign:        match[3],
 42101                          pad_char:    match[4],
 42102                          align:       match[5],
 42103                          width:       match[6],
 42104                          precision:   match[7],
 42105                          type:        match[8]
 42106                      }
 42107                  )
 42108              }
 42109              else {
 42110                  throw new SyntaxError('[sprintf] unexpected placeholder')
 42111              }
 42112              _fmt = _fmt.substring(match[0].length)
 42113          }
 42114          return sprintf_cache[fmt] = parse_tree
 42115      }
 42116  
 42117      /**
 42118       * export to either browser or node.js
 42119       */
 42120      /* eslint-disable quote-props */
 42121      if (true) {
 42122          exports.sprintf = sprintf
 42123          exports.vsprintf = vsprintf
 42124      }
 42125      if (typeof window !== 'undefined') {
 42126          window['sprintf'] = sprintf
 42127          window['vsprintf'] = vsprintf
 42128  
 42129          if (typeof define === 'function' && define['amd']) {
 42130              define(function() {
 42131                  return {
 42132                      'sprintf': sprintf,
 42133                      'vsprintf': vsprintf
 42134                  }
 42135              })
 42136          }
 42137      }
 42138      /* eslint-enable quote-props */
 42139  }(); // eslint-disable-line
 42140  
 42141  
 42142  /***/ }),
 42143  
 42144  /***/ 4406:
 42145  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 42146  
 42147  "use strict";
 42148  
 42149  
 42150  const crypto = __nccwpck_require__(6113)
 42151  const { Minipass } = __nccwpck_require__(14968)
 42152  
 42153  const SPEC_ALGORITHMS = ['sha512', 'sha384', 'sha256']
 42154  const DEFAULT_ALGORITHMS = ['sha512']
 42155  
 42156  // TODO: this should really be a hardcoded list of algorithms we support,
 42157  // rather than [a-z0-9].
 42158  const BASE64_REGEX = /^[a-z0-9+/]+(?:=?=?)$/i
 42159  const SRI_REGEX = /^([a-z0-9]+)-([^?]+)([?\S*]*)$/
 42160  const STRICT_SRI_REGEX = /^([a-z0-9]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)?$/
 42161  const VCHAR_REGEX = /^[\x21-\x7E]+$/
 42162  
 42163  const getOptString = options => options?.length ? `?${options.join('?')}` : ''
 42164  
 42165  class IntegrityStream extends Minipass {
 42166    #emittedIntegrity
 42167    #emittedSize
 42168    #emittedVerified
 42169  
 42170    constructor (opts) {
 42171      super()
 42172      this.size = 0
 42173      this.opts = opts
 42174  
 42175      // may be overridden later, but set now for class consistency
 42176      this.#getOptions()
 42177  
 42178      // options used for calculating stream.  can't be changed.
 42179      if (opts?.algorithms) {
 42180        this.algorithms = [...opts.algorithms]
 42181      } else {
 42182        this.algorithms = [...DEFAULT_ALGORITHMS]
 42183      }
 42184      if (this.algorithm !== null && !this.algorithms.includes(this.algorithm)) {
 42185        this.algorithms.push(this.algorithm)
 42186      }
 42187  
 42188      this.hashes = this.algorithms.map(crypto.createHash)
 42189    }
 42190  
 42191    #getOptions () {
 42192      // For verification
 42193      this.sri = this.opts?.integrity ? parse(this.opts?.integrity, this.opts) : null
 42194      this.expectedSize = this.opts?.size
 42195  
 42196      if (!this.sri) {
 42197        this.algorithm = null
 42198      } else if (this.sri.isHash) {
 42199        this.goodSri = true
 42200        this.algorithm = this.sri.algorithm
 42201      } else {
 42202        this.goodSri = !this.sri.isEmpty()
 42203        this.algorithm = this.sri.pickAlgorithm(this.opts)
 42204      }
 42205  
 42206      this.digests = this.goodSri ? this.sri[this.algorithm] : null
 42207      this.optString = getOptString(this.opts?.options)
 42208    }
 42209  
 42210    on (ev, handler) {
 42211      if (ev === 'size' && this.#emittedSize) {
 42212        return handler(this.#emittedSize)
 42213      }
 42214  
 42215      if (ev === 'integrity' && this.#emittedIntegrity) {
 42216        return handler(this.#emittedIntegrity)
 42217      }
 42218  
 42219      if (ev === 'verified' && this.#emittedVerified) {
 42220        return handler(this.#emittedVerified)
 42221      }
 42222  
 42223      return super.on(ev, handler)
 42224    }
 42225  
 42226    emit (ev, data) {
 42227      if (ev === 'end') {
 42228        this.#onEnd()
 42229      }
 42230      return super.emit(ev, data)
 42231    }
 42232  
 42233    write (data) {
 42234      this.size += data.length
 42235      this.hashes.forEach(h => h.update(data))
 42236      return super.write(data)
 42237    }
 42238  
 42239    #onEnd () {
 42240      if (!this.goodSri) {
 42241        this.#getOptions()
 42242      }
 42243      const newSri = parse(this.hashes.map((h, i) => {
 42244        return `${this.algorithms[i]}-${h.digest('base64')}${this.optString}`
 42245      }).join(' '), this.opts)
 42246      // Integrity verification mode
 42247      const match = this.goodSri && newSri.match(this.sri, this.opts)
 42248      if (typeof this.expectedSize === 'number' && this.size !== this.expectedSize) {
 42249        /* eslint-disable-next-line max-len */
 42250        const err = new Error(`stream size mismatch when checking ${this.sri}.\n  Wanted: ${this.expectedSize}\n  Found: ${this.size}`)
 42251        err.code = 'EBADSIZE'
 42252        err.found = this.size
 42253        err.expected = this.expectedSize
 42254        err.sri = this.sri
 42255        this.emit('error', err)
 42256      } else if (this.sri && !match) {
 42257        /* eslint-disable-next-line max-len */
 42258        const err = new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${newSri}. (${this.size} bytes)`)
 42259        err.code = 'EINTEGRITY'
 42260        err.found = newSri
 42261        err.expected = this.digests
 42262        err.algorithm = this.algorithm
 42263        err.sri = this.sri
 42264        this.emit('error', err)
 42265      } else {
 42266        this.#emittedSize = this.size
 42267        this.emit('size', this.size)
 42268        this.#emittedIntegrity = newSri
 42269        this.emit('integrity', newSri)
 42270        if (match) {
 42271          this.#emittedVerified = match
 42272          this.emit('verified', match)
 42273        }
 42274      }
 42275    }
 42276  }
 42277  
 42278  class Hash {
 42279    get isHash () {
 42280      return true
 42281    }
 42282  
 42283    constructor (hash, opts) {
 42284      const strict = opts?.strict
 42285      this.source = hash.trim()
 42286  
 42287      // set default values so that we make V8 happy to
 42288      // always see a familiar object template.
 42289      this.digest = ''
 42290      this.algorithm = ''
 42291      this.options = []
 42292  
 42293      // 3.1. Integrity metadata (called "Hash" by ssri)
 42294      // https://w3c.github.io/webappsec-subresource-integrity/#integrity-metadata-description
 42295      const match = this.source.match(
 42296        strict
 42297          ? STRICT_SRI_REGEX
 42298          : SRI_REGEX
 42299      )
 42300      if (!match) {
 42301        return
 42302      }
 42303      if (strict && !SPEC_ALGORITHMS.includes(match[1])) {
 42304        return
 42305      }
 42306      this.algorithm = match[1]
 42307      this.digest = match[2]
 42308  
 42309      const rawOpts = match[3]
 42310      if (rawOpts) {
 42311        this.options = rawOpts.slice(1).split('?')
 42312      }
 42313    }
 42314  
 42315    hexDigest () {
 42316      return this.digest && Buffer.from(this.digest, 'base64').toString('hex')
 42317    }
 42318  
 42319    toJSON () {
 42320      return this.toString()
 42321    }
 42322  
 42323    match (integrity, opts) {
 42324      const other = parse(integrity, opts)
 42325      if (!other) {
 42326        return false
 42327      }
 42328      if (other.isIntegrity) {
 42329        const algo = other.pickAlgorithm(opts, [this.algorithm])
 42330  
 42331        if (!algo) {
 42332          return false
 42333        }
 42334  
 42335        const foundHash = other[algo].find(hash => hash.digest === this.digest)
 42336  
 42337        if (foundHash) {
 42338          return foundHash
 42339        }
 42340  
 42341        return false
 42342      }
 42343      return other.digest === this.digest ? other : false
 42344    }
 42345  
 42346    toString (opts) {
 42347      if (opts?.strict) {
 42348        // Strict mode enforces the standard as close to the foot of the
 42349        // letter as it can.
 42350        if (!(
 42351          // The spec has very restricted productions for algorithms.
 42352          // https://www.w3.org/TR/CSP2/#source-list-syntax
 42353          SPEC_ALGORITHMS.includes(this.algorithm) &&
 42354          // Usually, if someone insists on using a "different" base64, we
 42355          // leave it as-is, since there's multiple standards, and the
 42356          // specified is not a URL-safe variant.
 42357          // https://www.w3.org/TR/CSP2/#base64_value
 42358          this.digest.match(BASE64_REGEX) &&
 42359          // Option syntax is strictly visual chars.
 42360          // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-option-expression
 42361          // https://tools.ietf.org/html/rfc5234#appendix-B.1
 42362          this.options.every(opt => opt.match(VCHAR_REGEX))
 42363        )) {
 42364          return ''
 42365        }
 42366      }
 42367      return `${this.algorithm}-${this.digest}${getOptString(this.options)}`
 42368    }
 42369  }
 42370  
 42371  function integrityHashToString (toString, sep, opts, hashes) {
 42372    const toStringIsNotEmpty = toString !== ''
 42373  
 42374    let shouldAddFirstSep = false
 42375    let complement = ''
 42376  
 42377    const lastIndex = hashes.length - 1
 42378  
 42379    for (let i = 0; i < lastIndex; i++) {
 42380      const hashString = Hash.prototype.toString.call(hashes[i], opts)
 42381  
 42382      if (hashString) {
 42383        shouldAddFirstSep = true
 42384  
 42385        complement += hashString
 42386        complement += sep
 42387      }
 42388    }
 42389  
 42390    const finalHashString = Hash.prototype.toString.call(hashes[lastIndex], opts)
 42391  
 42392    if (finalHashString) {
 42393      shouldAddFirstSep = true
 42394      complement += finalHashString
 42395    }
 42396  
 42397    if (toStringIsNotEmpty && shouldAddFirstSep) {
 42398      return toString + sep + complement
 42399    }
 42400  
 42401    return toString + complement
 42402  }
 42403  
 42404  class Integrity {
 42405    get isIntegrity () {
 42406      return true
 42407    }
 42408  
 42409    toJSON () {
 42410      return this.toString()
 42411    }
 42412  
 42413    isEmpty () {
 42414      return Object.keys(this).length === 0
 42415    }
 42416  
 42417    toString (opts) {
 42418      let sep = opts?.sep || ' '
 42419      let toString = ''
 42420  
 42421      if (opts?.strict) {
 42422        // Entries must be separated by whitespace, according to spec.
 42423        sep = sep.replace(/\S+/g, ' ')
 42424  
 42425        for (const hash of SPEC_ALGORITHMS) {
 42426          if (this[hash]) {
 42427            toString = integrityHashToString(toString, sep, opts, this[hash])
 42428          }
 42429        }
 42430      } else {
 42431        for (const hash of Object.keys(this)) {
 42432          toString = integrityHashToString(toString, sep, opts, this[hash])
 42433        }
 42434      }
 42435  
 42436      return toString
 42437    }
 42438  
 42439    concat (integrity, opts) {
 42440      const other = typeof integrity === 'string'
 42441        ? integrity
 42442        : stringify(integrity, opts)
 42443      return parse(`${this.toString(opts)} ${other}`, opts)
 42444    }
 42445  
 42446    hexDigest () {
 42447      return parse(this, { single: true }).hexDigest()
 42448    }
 42449  
 42450    // add additional hashes to an integrity value, but prevent
 42451    // *changing* an existing integrity hash.
 42452    merge (integrity, opts) {
 42453      const other = parse(integrity, opts)
 42454      for (const algo in other) {
 42455        if (this[algo]) {
 42456          if (!this[algo].find(hash =>
 42457            other[algo].find(otherhash =>
 42458              hash.digest === otherhash.digest))) {
 42459            throw new Error('hashes do not match, cannot update integrity')
 42460          }
 42461        } else {
 42462          this[algo] = other[algo]
 42463        }
 42464      }
 42465    }
 42466  
 42467    match (integrity, opts) {
 42468      const other = parse(integrity, opts)
 42469      if (!other) {
 42470        return false
 42471      }
 42472      const algo = other.pickAlgorithm(opts, Object.keys(this))
 42473      return (
 42474        !!algo &&
 42475        this[algo] &&
 42476        other[algo] &&
 42477        this[algo].find(hash =>
 42478          other[algo].find(otherhash =>
 42479            hash.digest === otherhash.digest
 42480          )
 42481        )
 42482      ) || false
 42483    }
 42484  
 42485    // Pick the highest priority algorithm present, optionally also limited to a
 42486    // set of hashes found in another integrity.  When limiting it may return
 42487    // nothing.
 42488    pickAlgorithm (opts, hashes) {
 42489      const pickAlgorithm = opts?.pickAlgorithm || getPrioritizedHash
 42490      const keys = Object.keys(this).filter(k => {
 42491        if (hashes?.length) {
 42492          return hashes.includes(k)
 42493        }
 42494        return true
 42495      })
 42496      if (keys.length) {
 42497        return keys.reduce((acc, algo) => pickAlgorithm(acc, algo) || acc)
 42498      }
 42499      // no intersection between this and hashes,
 42500      return null
 42501    }
 42502  }
 42503  
 42504  module.exports.parse = parse
 42505  function parse (sri, opts) {
 42506    if (!sri) {
 42507      return null
 42508    }
 42509    if (typeof sri === 'string') {
 42510      return _parse(sri, opts)
 42511    } else if (sri.algorithm && sri.digest) {
 42512      const fullSri = new Integrity()
 42513      fullSri[sri.algorithm] = [sri]
 42514      return _parse(stringify(fullSri, opts), opts)
 42515    } else {
 42516      return _parse(stringify(sri, opts), opts)
 42517    }
 42518  }
 42519  
 42520  function _parse (integrity, opts) {
 42521    // 3.4.3. Parse metadata
 42522    // https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
 42523    if (opts?.single) {
 42524      return new Hash(integrity, opts)
 42525    }
 42526    const hashes = integrity.trim().split(/\s+/).reduce((acc, string) => {
 42527      const hash = new Hash(string, opts)
 42528      if (hash.algorithm && hash.digest) {
 42529        const algo = hash.algorithm
 42530        if (!acc[algo]) {
 42531          acc[algo] = []
 42532        }
 42533        acc[algo].push(hash)
 42534      }
 42535      return acc
 42536    }, new Integrity())
 42537    return hashes.isEmpty() ? null : hashes
 42538  }
 42539  
 42540  module.exports.stringify = stringify
 42541  function stringify (obj, opts) {
 42542    if (obj.algorithm && obj.digest) {
 42543      return Hash.prototype.toString.call(obj, opts)
 42544    } else if (typeof obj === 'string') {
 42545      return stringify(parse(obj, opts), opts)
 42546    } else {
 42547      return Integrity.prototype.toString.call(obj, opts)
 42548    }
 42549  }
 42550  
 42551  module.exports.fromHex = fromHex
 42552  function fromHex (hexDigest, algorithm, opts) {
 42553    const optString = getOptString(opts?.options)
 42554    return parse(
 42555      `${algorithm}-${
 42556        Buffer.from(hexDigest, 'hex').toString('base64')
 42557      }${optString}`, opts
 42558    )
 42559  }
 42560  
 42561  module.exports.fromData = fromData
 42562  function fromData (data, opts) {
 42563    const algorithms = opts?.algorithms || [...DEFAULT_ALGORITHMS]
 42564    const optString = getOptString(opts?.options)
 42565    return algorithms.reduce((acc, algo) => {
 42566      const digest = crypto.createHash(algo).update(data).digest('base64')
 42567      const hash = new Hash(
 42568        `${algo}-${digest}${optString}`,
 42569        opts
 42570      )
 42571      /* istanbul ignore else - it would be VERY strange if the string we
 42572       * just calculated with an algo did not have an algo or digest.
 42573       */
 42574      if (hash.algorithm && hash.digest) {
 42575        const hashAlgo = hash.algorithm
 42576        if (!acc[hashAlgo]) {
 42577          acc[hashAlgo] = []
 42578        }
 42579        acc[hashAlgo].push(hash)
 42580      }
 42581      return acc
 42582    }, new Integrity())
 42583  }
 42584  
 42585  module.exports.fromStream = fromStream
 42586  function fromStream (stream, opts) {
 42587    const istream = integrityStream(opts)
 42588    return new Promise((resolve, reject) => {
 42589      stream.pipe(istream)
 42590      stream.on('error', reject)
 42591      istream.on('error', reject)
 42592      let sri
 42593      istream.on('integrity', s => {
 42594        sri = s
 42595      })
 42596      istream.on('end', () => resolve(sri))
 42597      istream.resume()
 42598    })
 42599  }
 42600  
 42601  module.exports.checkData = checkData
 42602  function checkData (data, sri, opts) {
 42603    sri = parse(sri, opts)
 42604    if (!sri || !Object.keys(sri).length) {
 42605      if (opts?.error) {
 42606        throw Object.assign(
 42607          new Error('No valid integrity hashes to check against'), {
 42608            code: 'EINTEGRITY',
 42609          }
 42610        )
 42611      } else {
 42612        return false
 42613      }
 42614    }
 42615    const algorithm = sri.pickAlgorithm(opts)
 42616    const digest = crypto.createHash(algorithm).update(data).digest('base64')
 42617    const newSri = parse({ algorithm, digest })
 42618    const match = newSri.match(sri, opts)
 42619    opts = opts || {}
 42620    if (match || !(opts.error)) {
 42621      return match
 42622    } else if (typeof opts.size === 'number' && (data.length !== opts.size)) {
 42623      /* eslint-disable-next-line max-len */
 42624      const err = new Error(`data size mismatch when checking ${sri}.\n  Wanted: ${opts.size}\n  Found: ${data.length}`)
 42625      err.code = 'EBADSIZE'
 42626      err.found = data.length
 42627      err.expected = opts.size
 42628      err.sri = sri
 42629      throw err
 42630    } else {
 42631      /* eslint-disable-next-line max-len */
 42632      const err = new Error(`Integrity checksum failed when using ${algorithm}: Wanted ${sri}, but got ${newSri}. (${data.length} bytes)`)
 42633      err.code = 'EINTEGRITY'
 42634      err.found = newSri
 42635      err.expected = sri
 42636      err.algorithm = algorithm
 42637      err.sri = sri
 42638      throw err
 42639    }
 42640  }
 42641  
 42642  module.exports.checkStream = checkStream
 42643  function checkStream (stream, sri, opts) {
 42644    opts = opts || Object.create(null)
 42645    opts.integrity = sri
 42646    sri = parse(sri, opts)
 42647    if (!sri || !Object.keys(sri).length) {
 42648      return Promise.reject(Object.assign(
 42649        new Error('No valid integrity hashes to check against'), {
 42650          code: 'EINTEGRITY',
 42651        }
 42652      ))
 42653    }
 42654    const checker = integrityStream(opts)
 42655    return new Promise((resolve, reject) => {
 42656      stream.pipe(checker)
 42657      stream.on('error', reject)
 42658      checker.on('error', reject)
 42659      let verified
 42660      checker.on('verified', s => {
 42661        verified = s
 42662      })
 42663      checker.on('end', () => resolve(verified))
 42664      checker.resume()
 42665    })
 42666  }
 42667  
 42668  module.exports.integrityStream = integrityStream
 42669  function integrityStream (opts = Object.create(null)) {
 42670    return new IntegrityStream(opts)
 42671  }
 42672  
 42673  module.exports.create = createIntegrity
 42674  function createIntegrity (opts) {
 42675    const algorithms = opts?.algorithms || [...DEFAULT_ALGORITHMS]
 42676    const optString = getOptString(opts?.options)
 42677  
 42678    const hashes = algorithms.map(crypto.createHash)
 42679  
 42680    return {
 42681      update: function (chunk, enc) {
 42682        hashes.forEach(h => h.update(chunk, enc))
 42683        return this
 42684      },
 42685      digest: function (enc) {
 42686        const integrity = algorithms.reduce((acc, algo) => {
 42687          const digest = hashes.shift().digest('base64')
 42688          const hash = new Hash(
 42689            `${algo}-${digest}${optString}`,
 42690            opts
 42691          )
 42692          /* istanbul ignore else - it would be VERY strange if the hash we
 42693           * just calculated with an algo did not have an algo or digest.
 42694           */
 42695          if (hash.algorithm && hash.digest) {
 42696            const hashAlgo = hash.algorithm
 42697            if (!acc[hashAlgo]) {
 42698              acc[hashAlgo] = []
 42699            }
 42700            acc[hashAlgo].push(hash)
 42701          }
 42702          return acc
 42703        }, new Integrity())
 42704  
 42705        return integrity
 42706      },
 42707    }
 42708  }
 42709  
 42710  const NODE_HASHES = crypto.getHashes()
 42711  
 42712  // This is a Best Effort™ at a reasonable priority for hash algos
 42713  const DEFAULT_PRIORITY = [
 42714    'md5', 'whirlpool', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512',
 42715    // TODO - it's unclear _which_ of these Node will actually use as its name
 42716    //        for the algorithm, so we guesswork it based on the OpenSSL names.
 42717    'sha3',
 42718    'sha3-256', 'sha3-384', 'sha3-512',
 42719    'sha3_256', 'sha3_384', 'sha3_512',
 42720  ].filter(algo => NODE_HASHES.includes(algo))
 42721  
 42722  function getPrioritizedHash (algo1, algo2) {
 42723    /* eslint-disable-next-line max-len */
 42724    return DEFAULT_PRIORITY.indexOf(algo1.toLowerCase()) >= DEFAULT_PRIORITY.indexOf(algo2.toLowerCase())
 42725      ? algo1
 42726      : algo2
 42727  }
 42728  
 42729  
 42730  /***/ }),
 42731  
 42732  /***/ 59318:
 42733  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 42734  
 42735  "use strict";
 42736  
 42737  const os = __nccwpck_require__(22037);
 42738  const tty = __nccwpck_require__(76224);
 42739  const hasFlag = __nccwpck_require__(31621);
 42740  
 42741  const {env} = process;
 42742  
 42743  let forceColor;
 42744  if (hasFlag('no-color') ||
 42745  	hasFlag('no-colors') ||
 42746  	hasFlag('color=false') ||
 42747  	hasFlag('color=never')) {
 42748  	forceColor = 0;
 42749  } else if (hasFlag('color') ||
 42750  	hasFlag('colors') ||
 42751  	hasFlag('color=true') ||
 42752  	hasFlag('color=always')) {
 42753  	forceColor = 1;
 42754  }
 42755  
 42756  if ('FORCE_COLOR' in env) {
 42757  	if (env.FORCE_COLOR === 'true') {
 42758  		forceColor = 1;
 42759  	} else if (env.FORCE_COLOR === 'false') {
 42760  		forceColor = 0;
 42761  	} else {
 42762  		forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);
 42763  	}
 42764  }
 42765  
 42766  function translateLevel(level) {
 42767  	if (level === 0) {
 42768  		return false;
 42769  	}
 42770  
 42771  	return {
 42772  		level,
 42773  		hasBasic: true,
 42774  		has256: level >= 2,
 42775  		has16m: level >= 3
 42776  	};
 42777  }
 42778  
 42779  function supportsColor(haveStream, streamIsTTY) {
 42780  	if (forceColor === 0) {
 42781  		return 0;
 42782  	}
 42783  
 42784  	if (hasFlag('color=16m') ||
 42785  		hasFlag('color=full') ||
 42786  		hasFlag('color=truecolor')) {
 42787  		return 3;
 42788  	}
 42789  
 42790  	if (hasFlag('color=256')) {
 42791  		return 2;
 42792  	}
 42793  
 42794  	if (haveStream && !streamIsTTY && forceColor === undefined) {
 42795  		return 0;
 42796  	}
 42797  
 42798  	const min = forceColor || 0;
 42799  
 42800  	if (env.TERM === 'dumb') {
 42801  		return min;
 42802  	}
 42803  
 42804  	if (process.platform === 'win32') {
 42805  		// Windows 10 build 10586 is the first Windows release that supports 256 colors.
 42806  		// Windows 10 build 14931 is the first release that supports 16m/TrueColor.
 42807  		const osRelease = os.release().split('.');
 42808  		if (
 42809  			Number(osRelease[0]) >= 10 &&
 42810  			Number(osRelease[2]) >= 10586
 42811  		) {
 42812  			return Number(osRelease[2]) >= 14931 ? 3 : 2;
 42813  		}
 42814  
 42815  		return 1;
 42816  	}
 42817  
 42818  	if ('CI' in env) {
 42819  		if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {
 42820  			return 1;
 42821  		}
 42822  
 42823  		return min;
 42824  	}
 42825  
 42826  	if ('TEAMCITY_VERSION' in env) {
 42827  		return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
 42828  	}
 42829  
 42830  	if (env.COLORTERM === 'truecolor') {
 42831  		return 3;
 42832  	}
 42833  
 42834  	if ('TERM_PROGRAM' in env) {
 42835  		const version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
 42836  
 42837  		switch (env.TERM_PROGRAM) {
 42838  			case 'iTerm.app':
 42839  				return version >= 3 ? 3 : 2;
 42840  			case 'Apple_Terminal':
 42841  				return 2;
 42842  			// No default
 42843  		}
 42844  	}
 42845  
 42846  	if (/-256(color)?$/i.test(env.TERM)) {
 42847  		return 2;
 42848  	}
 42849  
 42850  	if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
 42851  		return 1;
 42852  	}
 42853  
 42854  	if ('COLORTERM' in env) {
 42855  		return 1;
 42856  	}
 42857  
 42858  	return min;
 42859  }
 42860  
 42861  function getSupportLevel(stream) {
 42862  	const level = supportsColor(stream, stream && stream.isTTY);
 42863  	return translateLevel(level);
 42864  }
 42865  
 42866  module.exports = {
 42867  	supportsColor: getSupportLevel,
 42868  	stdout: translateLevel(supportsColor(true, tty.isatty(1))),
 42869  	stderr: translateLevel(supportsColor(true, tty.isatty(2)))
 42870  };
 42871  
 42872  
 42873  /***/ }),
 42874  
 42875  /***/ 56484:
 42876  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 42877  
 42878  "use strict";
 42879  
 42880  // Copyright 2023 SLSA Authors
 42881  //
 42882  // Licensed under the Apache License, Version 2.0 (the "License");
 42883  // you may not use this file except in compliance with the License.
 42884  // You may obtain a copy of the License at
 42885  //
 42886  //      http://www.apache.org/licenses/LICENSE-2.0
 42887  //
 42888  // Unless required by applicable law or agreed to in writing, software
 42889  // distributed under the License is distributed on an "AS IS" BASIS,
 42890  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 42891  // See the License for the specific language governing permissions and
 42892  // limitations under the License.
 42893  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 42894      if (k2 === undefined) k2 = k;
 42895      var desc = Object.getOwnPropertyDescriptor(m, k);
 42896      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 42897        desc = { enumerable: true, get: function() { return m[k]; } };
 42898      }
 42899      Object.defineProperty(o, k2, desc);
 42900  }) : (function(o, m, k, k2) {
 42901      if (k2 === undefined) k2 = k;
 42902      o[k2] = m[k];
 42903  }));
 42904  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 42905      Object.defineProperty(o, "default", { enumerable: true, value: v });
 42906  }) : function(o, v) {
 42907      o["default"] = v;
 42908  });
 42909  var __importStar = (this && this.__importStar) || function (mod) {
 42910      if (mod && mod.__esModule) return mod;
 42911      var result = {};
 42912      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 42913      __setModuleDefault(result, mod);
 42914      return result;
 42915  };
 42916  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 42917      function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
 42918      return new (P || (P = Promise))(function (resolve, reject) {
 42919          function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 42920          function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 42921          function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
 42922          step((generator = generator.apply(thisArg, _arguments || [])).next());
 42923      });
 42924  };
 42925  var __importDefault = (this && this.__importDefault) || function (mod) {
 42926      return (mod && mod.__esModule) ? mod : { "default": mod };
 42927  };
 42928  Object.defineProperty(exports, "__esModule", ({ value: true }));
 42929  exports.safePromises_stat = exports.safePromises_readdir = exports.safeExistsSync = exports.safeRmdirSync = exports.safeUnlinkSync = exports.safeReadFileSync = exports.safeMkdirSync = exports.safeWriteFileSync = exports.resolvePathInput = exports.safeFileSha256 = exports.getGitHubWorkspace = void 0;
 42930  const crypto = __importStar(__nccwpck_require__(6113));
 42931  const fs_1 = __importDefault(__nccwpck_require__(57147));
 42932  const path_1 = __importDefault(__nccwpck_require__(71017));
 42933  const process_1 = __importDefault(__nccwpck_require__(77282));
 42934  // This function is for unit tests.
 42935  // We need to set the working directory to the tscommon/ directory
 42936  // instead of the GITHUB_WORKSPACE.
 42937  function getGitHubWorkspace() {
 42938      const wdt = process_1.default.env.UNIT_TESTS_WD || "";
 42939      if (wdt) {
 42940          return wdt;
 42941      }
 42942      return process_1.default.env.GITHUB_WORKSPACE || "";
 42943  }
 42944  exports.getGitHubWorkspace = getGitHubWorkspace;
 42945  // safeFileSha256 returns the hex-formatted sha256 sum of the contents of an
 42946  // untrusted file path.
 42947  function safeFileSha256(untrustedPath) {
 42948      const untrustedFile = safeReadFileSync(untrustedPath);
 42949      return crypto.createHash("sha256").update(untrustedFile).digest("hex");
 42950  }
 42951  exports.safeFileSha256 = safeFileSha256;
 42952  // Detect directory traversal for input file.
 42953  // This function is exported for unit tests only.
 42954  function resolvePathInput(input, write) {
 42955      const wd = getGitHubWorkspace();
 42956      const resolvedInput = path_1.default.resolve(input);
 42957      // Allowed files for read only.
 42958      const allowedReadFiles = [process_1.default.env.GITHUB_EVENT_PATH || ""];
 42959      for (const allowedReadFile of allowedReadFiles) {
 42960          if (allowedReadFile === resolvedInput) {
 42961              if (write) {
 42962                  throw Error(`unsafe write path ${resolvedInput}`);
 42963              }
 42964              return resolvedInput;
 42965          }
 42966      }
 42967      // Allowed directories for read and write.
 42968      const allowedDirs = [wd, "/tmp", process_1.default.env.RUNNER_TEMP || ""];
 42969      for (const allowedDir of allowedDirs) {
 42970          // NOTE: we call 'resolve' to normalize the directory name.
 42971          const resolvedAllowedDir = path_1.default.resolve(allowedDir);
 42972          if ((resolvedInput + path_1.default.sep).startsWith(resolvedAllowedDir + path_1.default.sep)) {
 42973              return resolvedInput;
 42974          }
 42975      }
 42976      throw Error(`unsafe path ${resolvedInput}`);
 42977  }
 42978  exports.resolvePathInput = resolvePathInput;
 42979  // Safe write function.
 42980  function safeWriteFileSync(outputFn, data) {
 42981      const safeOutputFn = resolvePathInput(outputFn, true);
 42982      // WARNING: if the call fails, the type of the error is not 'Error'.
 42983      fs_1.default.writeFileSync(safeOutputFn, data, {
 42984          flag: "wx",
 42985          mode: 0o600,
 42986      });
 42987  }
 42988  exports.safeWriteFileSync = safeWriteFileSync;
 42989  // Safe mkdir function.
 42990  function safeMkdirSync(outputFn, options) {
 42991      const safeOutputFn = resolvePathInput(outputFn, true);
 42992      fs_1.default.mkdirSync(safeOutputFn, options);
 42993  }
 42994  exports.safeMkdirSync = safeMkdirSync;
 42995  // Safe read file function.
 42996  function safeReadFileSync(inputFn) {
 42997      const safeInputFn = resolvePathInput(inputFn, false);
 42998      return fs_1.default.readFileSync(safeInputFn);
 42999  }
 43000  exports.safeReadFileSync = safeReadFileSync;
 43001  // Safe unlink function.
 43002  function safeUnlinkSync(inputFn) {
 43003      const safeInputFn = resolvePathInput(inputFn, true);
 43004      return fs_1.default.unlinkSync(safeInputFn);
 43005  }
 43006  exports.safeUnlinkSync = safeUnlinkSync;
 43007  // Safe remove directory function.
 43008  function safeRmdirSync(dir, options) {
 43009      const safeDir = resolvePathInput(dir, true);
 43010      return fs_1.default.rmdirSync(safeDir, options);
 43011  }
 43012  exports.safeRmdirSync = safeRmdirSync;
 43013  // Safe exist function.
 43014  function safeExistsSync(inputFn) {
 43015      const safeInputFn = resolvePathInput(inputFn, false);
 43016      return fs_1.default.existsSync(safeInputFn);
 43017  }
 43018  exports.safeExistsSync = safeExistsSync;
 43019  // Safe readdir function.
 43020  function safePromises_readdir(inputFn) {
 43021      return __awaiter(this, void 0, void 0, function* () {
 43022          const safeInputFn = resolvePathInput(inputFn, false);
 43023          return fs_1.default.promises.readdir(safeInputFn);
 43024      });
 43025  }
 43026  exports.safePromises_readdir = safePromises_readdir;
 43027  // Safe stat function.
 43028  function safePromises_stat(inputFn) {
 43029      return __awaiter(this, void 0, void 0, function* () {
 43030          const safeInputFn = resolvePathInput(inputFn, true);
 43031          return fs_1.default.promises.stat(safeInputFn);
 43032      });
 43033  }
 43034  exports.safePromises_stat = safePromises_stat;
 43035  
 43036  
 43037  /***/ }),
 43038  
 43039  /***/ 86634:
 43040  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 43041  
 43042  "use strict";
 43043  
 43044  // Copyright 2023 SLSA Authors
 43045  //
 43046  // Licensed under the Apache License, Version 2.0 (the "License");
 43047  // you may not use this file except in compliance with the License.
 43048  // You may obtain a copy of the License at
 43049  //
 43050  //      http://www.apache.org/licenses/LICENSE-2.0
 43051  //
 43052  // Unless required by applicable law or agreed to in writing, software
 43053  // distributed under the License is distributed on an "AS IS" BASIS,
 43054  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 43055  // See the License for the specific language governing permissions and
 43056  // limitations under the License.
 43057  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 43058      if (k2 === undefined) k2 = k;
 43059      var desc = Object.getOwnPropertyDescriptor(m, k);
 43060      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 43061        desc = { enumerable: true, get: function() { return m[k]; } };
 43062      }
 43063      Object.defineProperty(o, k2, desc);
 43064  }) : (function(o, m, k, k2) {
 43065      if (k2 === undefined) k2 = k;
 43066      o[k2] = m[k];
 43067  }));
 43068  var __exportStar = (this && this.__exportStar) || function(m, exports) {
 43069      for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
 43070  };
 43071  Object.defineProperty(exports, "__esModule", ({ value: true }));
 43072  __exportStar(__nccwpck_require__(56484), exports);
 43073  
 43074  
 43075  /***/ }),
 43076  
 43077  /***/ 29530:
 43078  /***/ ((__unused_webpack_module, exports) => {
 43079  
 43080  "use strict";
 43081  
 43082  Object.defineProperty(exports, "__esModule", ({ value: true }));
 43083  exports.defaultConfig = void 0;
 43084  exports.defaultConfig = {
 43085      maxRootRotations: 32,
 43086      maxDelegations: 32,
 43087      rootMaxLength: 512000, //bytes
 43088      timestampMaxLength: 16384, // bytes
 43089      snapshotMaxLength: 2000000, // bytes
 43090      targetsMaxLength: 5000000, // bytes
 43091      prefixTargetsWithHash: true,
 43092      fetchTimeout: 100000, // milliseconds
 43093      fetchRetries: undefined,
 43094      fetchRetry: 2,
 43095  };
 43096  
 43097  
 43098  /***/ }),
 43099  
 43100  /***/ 27040:
 43101  /***/ ((__unused_webpack_module, exports) => {
 43102  
 43103  "use strict";
 43104  
 43105  Object.defineProperty(exports, "__esModule", ({ value: true }));
 43106  exports.DownloadHTTPError = exports.DownloadLengthMismatchError = exports.DownloadError = exports.ExpiredMetadataError = exports.EqualVersionError = exports.BadVersionError = exports.RepositoryError = exports.PersistError = exports.RuntimeError = exports.ValueError = void 0;
 43107  // An error about insufficient values
 43108  class ValueError extends Error {
 43109  }
 43110  exports.ValueError = ValueError;
 43111  class RuntimeError extends Error {
 43112  }
 43113  exports.RuntimeError = RuntimeError;
 43114  class PersistError extends Error {
 43115  }
 43116  exports.PersistError = PersistError;
 43117  // An error with a repository's state, such as a missing file.
 43118  // It covers all exceptions that come from the repository side when
 43119  // looking from the perspective of users of metadata API or ngclient.
 43120  class RepositoryError extends Error {
 43121  }
 43122  exports.RepositoryError = RepositoryError;
 43123  // An error for metadata that contains an invalid version number.
 43124  class BadVersionError extends RepositoryError {
 43125  }
 43126  exports.BadVersionError = BadVersionError;
 43127  // An error for metadata containing a previously verified version number.
 43128  class EqualVersionError extends BadVersionError {
 43129  }
 43130  exports.EqualVersionError = EqualVersionError;
 43131  // Indicate that a TUF Metadata file has expired.
 43132  class ExpiredMetadataError extends RepositoryError {
 43133  }
 43134  exports.ExpiredMetadataError = ExpiredMetadataError;
 43135  //----- Download Errors -------------------------------------------------------
 43136  // An error occurred while attempting to download a file.
 43137  class DownloadError extends Error {
 43138  }
 43139  exports.DownloadError = DownloadError;
 43140  // Indicate that a mismatch of lengths was seen while downloading a file
 43141  class DownloadLengthMismatchError extends DownloadError {
 43142  }
 43143  exports.DownloadLengthMismatchError = DownloadLengthMismatchError;
 43144  // Returned by FetcherInterface implementations for HTTP errors.
 43145  class DownloadHTTPError extends DownloadError {
 43146      constructor(message, statusCode) {
 43147          super(message);
 43148          this.statusCode = statusCode;
 43149      }
 43150  }
 43151  exports.DownloadHTTPError = DownloadHTTPError;
 43152  
 43153  
 43154  /***/ }),
 43155  
 43156  /***/ 5991:
 43157  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 43158  
 43159  "use strict";
 43160  
 43161  var __importDefault = (this && this.__importDefault) || function (mod) {
 43162      return (mod && mod.__esModule) ? mod : { "default": mod };
 43163  };
 43164  Object.defineProperty(exports, "__esModule", ({ value: true }));
 43165  exports.DefaultFetcher = exports.BaseFetcher = void 0;
 43166  const debug_1 = __importDefault(__nccwpck_require__(38237));
 43167  const fs_1 = __importDefault(__nccwpck_require__(57147));
 43168  const make_fetch_happen_1 = __importDefault(__nccwpck_require__(9525));
 43169  const util_1 = __importDefault(__nccwpck_require__(73837));
 43170  const error_1 = __nccwpck_require__(27040);
 43171  const tmpfile_1 = __nccwpck_require__(26400);
 43172  const log = (0, debug_1.default)('tuf:fetch');
 43173  class BaseFetcher {
 43174      // Download file from given URL. The file is downloaded to a temporary
 43175      // location and then passed to the given handler. The handler is responsible
 43176      // for moving the file to its final location. The temporary file is deleted
 43177      // after the handler returns.
 43178      async downloadFile(url, maxLength, handler) {
 43179          return (0, tmpfile_1.withTempFile)(async (tmpFile) => {
 43180              const reader = await this.fetch(url);
 43181              let numberOfBytesReceived = 0;
 43182              const fileStream = fs_1.default.createWriteStream(tmpFile);
 43183              // Read the stream a chunk at a time so that we can check
 43184              // the length of the file as we go
 43185              try {
 43186                  for await (const chunk of reader) {
 43187                      const bufferChunk = Buffer.from(chunk);
 43188                      numberOfBytesReceived += bufferChunk.length;
 43189                      if (numberOfBytesReceived > maxLength) {
 43190                          throw new error_1.DownloadLengthMismatchError('Max length reached');
 43191                      }
 43192                      await writeBufferToStream(fileStream, bufferChunk);
 43193                  }
 43194              }
 43195              finally {
 43196                  // Make sure we always close the stream
 43197                  await util_1.default.promisify(fileStream.close).bind(fileStream)();
 43198              }
 43199              return handler(tmpFile);
 43200          });
 43201      }
 43202      // Download bytes from given URL.
 43203      async downloadBytes(url, maxLength) {
 43204          return this.downloadFile(url, maxLength, async (file) => {
 43205              const stream = fs_1.default.createReadStream(file);
 43206              const chunks = [];
 43207              for await (const chunk of stream) {
 43208                  chunks.push(chunk);
 43209              }
 43210              return Buffer.concat(chunks);
 43211          });
 43212      }
 43213  }
 43214  exports.BaseFetcher = BaseFetcher;
 43215  class DefaultFetcher extends BaseFetcher {
 43216      constructor(options = {}) {
 43217          super();
 43218          this.timeout = options.timeout;
 43219          this.retry = options.retry;
 43220      }
 43221      async fetch(url) {
 43222          log('GET %s', url);
 43223          const response = await (0, make_fetch_happen_1.default)(url, {
 43224              timeout: this.timeout,
 43225              retry: this.retry,
 43226          });
 43227          if (!response.ok || !response?.body) {
 43228              throw new error_1.DownloadHTTPError('Failed to download', response.status);
 43229          }
 43230          return response.body;
 43231      }
 43232  }
 43233  exports.DefaultFetcher = DefaultFetcher;
 43234  const writeBufferToStream = async (stream, buffer) => {
 43235      return new Promise((resolve, reject) => {
 43236          stream.write(buffer, (err) => {
 43237              if (err) {
 43238                  reject(err);
 43239              }
 43240              resolve(true);
 43241          });
 43242      });
 43243  };
 43244  
 43245  
 43246  /***/ }),
 43247  
 43248  /***/ 89475:
 43249  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 43250  
 43251  "use strict";
 43252  
 43253  Object.defineProperty(exports, "__esModule", ({ value: true }));
 43254  exports.Updater = exports.BaseFetcher = exports.TargetFile = void 0;
 43255  var models_1 = __nccwpck_require__(75833);
 43256  Object.defineProperty(exports, "TargetFile", ({ enumerable: true, get: function () { return models_1.TargetFile; } }));
 43257  var fetcher_1 = __nccwpck_require__(5991);
 43258  Object.defineProperty(exports, "BaseFetcher", ({ enumerable: true, get: function () { return fetcher_1.BaseFetcher; } }));
 43259  var updater_1 = __nccwpck_require__(7977);
 43260  Object.defineProperty(exports, "Updater", ({ enumerable: true, get: function () { return updater_1.Updater; } }));
 43261  
 43262  
 43263  /***/ }),
 43264  
 43265  /***/ 77001:
 43266  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 43267  
 43268  "use strict";
 43269  
 43270  Object.defineProperty(exports, "__esModule", ({ value: true }));
 43271  exports.TrustedMetadataStore = void 0;
 43272  const models_1 = __nccwpck_require__(75833);
 43273  const error_1 = __nccwpck_require__(27040);
 43274  class TrustedMetadataStore {
 43275      constructor(rootData) {
 43276          this.trustedSet = {};
 43277          // Client workflow 5.1: record fixed update start time
 43278          this.referenceTime = new Date();
 43279          // Client workflow 5.2: load trusted root metadata
 43280          this.loadTrustedRoot(rootData);
 43281      }
 43282      get root() {
 43283          if (!this.trustedSet.root) {
 43284              throw new ReferenceError('No trusted root metadata');
 43285          }
 43286          return this.trustedSet.root;
 43287      }
 43288      get timestamp() {
 43289          return this.trustedSet.timestamp;
 43290      }
 43291      get snapshot() {
 43292          return this.trustedSet.snapshot;
 43293      }
 43294      get targets() {
 43295          return this.trustedSet.targets;
 43296      }
 43297      getRole(name) {
 43298          return this.trustedSet[name];
 43299      }
 43300      updateRoot(bytesBuffer) {
 43301          const data = JSON.parse(bytesBuffer.toString('utf8'));
 43302          const newRoot = models_1.Metadata.fromJSON(models_1.MetadataKind.Root, data);
 43303          if (newRoot.signed.type != models_1.MetadataKind.Root) {
 43304              throw new error_1.RepositoryError(`Expected 'root', got ${newRoot.signed.type}`);
 43305          }
 43306          // Client workflow 5.4: check for arbitrary software attack
 43307          this.root.verifyDelegate(models_1.MetadataKind.Root, newRoot);
 43308          // Client workflow 5.5: check for rollback attack
 43309          if (newRoot.signed.version != this.root.signed.version + 1) {
 43310              throw new error_1.BadVersionError(`Expected version ${this.root.signed.version + 1}, got ${newRoot.signed.version}`);
 43311          }
 43312          // Check that new root is signed by self
 43313          newRoot.verifyDelegate(models_1.MetadataKind.Root, newRoot);
 43314          // Client workflow 5.7: set new root as trusted root
 43315          this.trustedSet.root = newRoot;
 43316          return newRoot;
 43317      }
 43318      updateTimestamp(bytesBuffer) {
 43319          if (this.snapshot) {
 43320              throw new error_1.RuntimeError('Cannot update timestamp after snapshot');
 43321          }
 43322          if (this.root.signed.isExpired(this.referenceTime)) {
 43323              throw new error_1.ExpiredMetadataError('Final root.json is expired');
 43324          }
 43325          const data = JSON.parse(bytesBuffer.toString('utf8'));
 43326          const newTimestamp = models_1.Metadata.fromJSON(models_1.MetadataKind.Timestamp, data);
 43327          if (newTimestamp.signed.type != models_1.MetadataKind.Timestamp) {
 43328              throw new error_1.RepositoryError(`Expected 'timestamp', got ${newTimestamp.signed.type}`);
 43329          }
 43330          // Client workflow 5.4.2: check for arbitrary software attack
 43331          this.root.verifyDelegate(models_1.MetadataKind.Timestamp, newTimestamp);
 43332          if (this.timestamp) {
 43333              // Prevent rolling back timestamp version
 43334              // Client workflow 5.4.3.1: check for rollback attack
 43335              if (newTimestamp.signed.version < this.timestamp.signed.version) {
 43336                  throw new error_1.BadVersionError(`New timestamp version ${newTimestamp.signed.version} is less than current version ${this.timestamp.signed.version}`);
 43337              }
 43338              //  Keep using old timestamp if versions are equal.
 43339              if (newTimestamp.signed.version === this.timestamp.signed.version) {
 43340                  throw new error_1.EqualVersionError(`New timestamp version ${newTimestamp.signed.version} is equal to current version ${this.timestamp.signed.version}`);
 43341              }
 43342              // Prevent rolling back snapshot version
 43343              // Client workflow 5.4.3.2: check for rollback attack
 43344              const snapshotMeta = this.timestamp.signed.snapshotMeta;
 43345              const newSnapshotMeta = newTimestamp.signed.snapshotMeta;
 43346              if (newSnapshotMeta.version < snapshotMeta.version) {
 43347                  throw new error_1.BadVersionError(`New snapshot version ${newSnapshotMeta.version} is less than current version ${snapshotMeta.version}`);
 43348              }
 43349          }
 43350          // expiry not checked to allow old timestamp to be used for rollback
 43351          // protection of new timestamp: expiry is checked in update_snapshot
 43352          this.trustedSet.timestamp = newTimestamp;
 43353          // Client workflow 5.4.4: check for freeze attack
 43354          this.checkFinalTimestamp();
 43355          return newTimestamp;
 43356      }
 43357      updateSnapshot(bytesBuffer, trusted = false) {
 43358          if (!this.timestamp) {
 43359              throw new error_1.RuntimeError('Cannot update snapshot before timestamp');
 43360          }
 43361          if (this.targets) {
 43362              throw new error_1.RuntimeError('Cannot update snapshot after targets');
 43363          }
 43364          // Snapshot cannot be loaded if final timestamp is expired
 43365          this.checkFinalTimestamp();
 43366          const snapshotMeta = this.timestamp.signed.snapshotMeta;
 43367          // Verify non-trusted data against the hashes in timestamp, if any.
 43368          // Trusted snapshot data has already been verified once.
 43369          // Client workflow 5.5.2: check against timestamp role's snaphsot hash
 43370          if (!trusted) {
 43371              snapshotMeta.verify(bytesBuffer);
 43372          }
 43373          const data = JSON.parse(bytesBuffer.toString('utf8'));
 43374          const newSnapshot = models_1.Metadata.fromJSON(models_1.MetadataKind.Snapshot, data);
 43375          if (newSnapshot.signed.type != models_1.MetadataKind.Snapshot) {
 43376              throw new error_1.RepositoryError(`Expected 'snapshot', got ${newSnapshot.signed.type}`);
 43377          }
 43378          // Client workflow 5.5.3: check for arbitrary software attack
 43379          this.root.verifyDelegate(models_1.MetadataKind.Snapshot, newSnapshot);
 43380          // version check against meta version (5.5.4) is deferred to allow old
 43381          // snapshot to be used in rollback protection
 43382          // Client workflow 5.5.5: check for rollback attack
 43383          if (this.snapshot) {
 43384              Object.entries(this.snapshot.signed.meta).forEach(([fileName, fileInfo]) => {
 43385                  const newFileInfo = newSnapshot.signed.meta[fileName];
 43386                  if (!newFileInfo) {
 43387                      throw new error_1.RepositoryError(`Missing file ${fileName} in new snapshot`);
 43388                  }
 43389                  if (newFileInfo.version < fileInfo.version) {
 43390                      throw new error_1.BadVersionError(`New version ${newFileInfo.version} of ${fileName} is less than current version ${fileInfo.version}`);
 43391                  }
 43392              });
 43393          }
 43394          this.trustedSet.snapshot = newSnapshot;
 43395          // snapshot is loaded, but we raise if it's not valid _final_ snapshot
 43396          // Client workflow 5.5.4 & 5.5.6
 43397          this.checkFinalSnapsnot();
 43398          return newSnapshot;
 43399      }
 43400      updateDelegatedTargets(bytesBuffer, roleName, delegatorName) {
 43401          if (!this.snapshot) {
 43402              throw new error_1.RuntimeError('Cannot update delegated targets before snapshot');
 43403          }
 43404          // Targets cannot be loaded if final snapshot is expired or its version
 43405          // does not match meta version in timestamp.
 43406          this.checkFinalSnapsnot();
 43407          const delegator = this.trustedSet[delegatorName];
 43408          if (!delegator) {
 43409              throw new error_1.RuntimeError(`No trusted ${delegatorName} metadata`);
 43410          }
 43411          // Extract metadata for the delegated role from snapshot
 43412          const meta = this.snapshot.signed.meta?.[`${roleName}.json`];
 43413          if (!meta) {
 43414              throw new error_1.RepositoryError(`Missing ${roleName}.json in snapshot`);
 43415          }
 43416          // Client workflow 5.6.2: check against snapshot role's targets hash
 43417          meta.verify(bytesBuffer);
 43418          const data = JSON.parse(bytesBuffer.toString('utf8'));
 43419          const newDelegate = models_1.Metadata.fromJSON(models_1.MetadataKind.Targets, data);
 43420          if (newDelegate.signed.type != models_1.MetadataKind.Targets) {
 43421              throw new error_1.RepositoryError(`Expected 'targets', got ${newDelegate.signed.type}`);
 43422          }
 43423          // Client workflow 5.6.3: check for arbitrary software attack
 43424          delegator.verifyDelegate(roleName, newDelegate);
 43425          // Client workflow 5.6.4: Check against snapshot role’s targets version
 43426          const version = newDelegate.signed.version;
 43427          if (version != meta.version) {
 43428              throw new error_1.BadVersionError(`Version ${version} of ${roleName} does not match snapshot version ${meta.version}`);
 43429          }
 43430          // Client workflow 5.6.5: check for a freeze attack
 43431          if (newDelegate.signed.isExpired(this.referenceTime)) {
 43432              throw new error_1.ExpiredMetadataError(`${roleName}.json is expired`);
 43433          }
 43434          this.trustedSet[roleName] = newDelegate;
 43435      }
 43436      // Verifies and loads data as trusted root metadata.
 43437      // Note that an expired initial root is still considered valid.
 43438      loadTrustedRoot(bytesBuffer) {
 43439          const data = JSON.parse(bytesBuffer.toString('utf8'));
 43440          const root = models_1.Metadata.fromJSON(models_1.MetadataKind.Root, data);
 43441          if (root.signed.type != models_1.MetadataKind.Root) {
 43442              throw new error_1.RepositoryError(`Expected 'root', got ${root.signed.type}`);
 43443          }
 43444          root.verifyDelegate(models_1.MetadataKind.Root, root);
 43445          this.trustedSet['root'] = root;
 43446      }
 43447      checkFinalTimestamp() {
 43448          // Timestamp MUST be loaded
 43449          if (!this.timestamp) {
 43450              throw new ReferenceError('No trusted timestamp metadata');
 43451          }
 43452          // Client workflow 5.4.4: check for freeze attack
 43453          if (this.timestamp.signed.isExpired(this.referenceTime)) {
 43454              throw new error_1.ExpiredMetadataError('Final timestamp.json is expired');
 43455          }
 43456      }
 43457      checkFinalSnapsnot() {
 43458          // Snapshot and timestamp MUST be loaded
 43459          if (!this.snapshot) {
 43460              throw new ReferenceError('No trusted snapshot metadata');
 43461          }
 43462          if (!this.timestamp) {
 43463              throw new ReferenceError('No trusted timestamp metadata');
 43464          }
 43465          // Client workflow 5.5.6: check for freeze attack
 43466          if (this.snapshot.signed.isExpired(this.referenceTime)) {
 43467              throw new error_1.ExpiredMetadataError('snapshot.json is expired');
 43468          }
 43469          // Client workflow 5.5.4: check against timestamp role’s snapshot version
 43470          const snapshotMeta = this.timestamp.signed.snapshotMeta;
 43471          if (this.snapshot.signed.version !== snapshotMeta.version) {
 43472              throw new error_1.BadVersionError("Snapshot version doesn't match timestamp");
 43473          }
 43474      }
 43475  }
 43476  exports.TrustedMetadataStore = TrustedMetadataStore;
 43477  
 43478  
 43479  /***/ }),
 43480  
 43481  /***/ 7977:
 43482  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 43483  
 43484  "use strict";
 43485  
 43486  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 43487      if (k2 === undefined) k2 = k;
 43488      var desc = Object.getOwnPropertyDescriptor(m, k);
 43489      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 43490        desc = { enumerable: true, get: function() { return m[k]; } };
 43491      }
 43492      Object.defineProperty(o, k2, desc);
 43493  }) : (function(o, m, k, k2) {
 43494      if (k2 === undefined) k2 = k;
 43495      o[k2] = m[k];
 43496  }));
 43497  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 43498      Object.defineProperty(o, "default", { enumerable: true, value: v });
 43499  }) : function(o, v) {
 43500      o["default"] = v;
 43501  });
 43502  var __importStar = (this && this.__importStar) || function (mod) {
 43503      if (mod && mod.__esModule) return mod;
 43504      var result = {};
 43505      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 43506      __setModuleDefault(result, mod);
 43507      return result;
 43508  };
 43509  var __importDefault = (this && this.__importDefault) || function (mod) {
 43510      return (mod && mod.__esModule) ? mod : { "default": mod };
 43511  };
 43512  Object.defineProperty(exports, "__esModule", ({ value: true }));
 43513  exports.Updater = void 0;
 43514  const models_1 = __nccwpck_require__(75833);
 43515  const debug_1 = __importDefault(__nccwpck_require__(38237));
 43516  const fs = __importStar(__nccwpck_require__(57147));
 43517  const path = __importStar(__nccwpck_require__(71017));
 43518  const config_1 = __nccwpck_require__(29530);
 43519  const error_1 = __nccwpck_require__(27040);
 43520  const fetcher_1 = __nccwpck_require__(5991);
 43521  const store_1 = __nccwpck_require__(77001);
 43522  const url = __importStar(__nccwpck_require__(95961));
 43523  const log = (0, debug_1.default)('tuf:cache');
 43524  class Updater {
 43525      constructor(options) {
 43526          const { metadataDir, metadataBaseUrl, targetDir, targetBaseUrl, fetcher, config, } = options;
 43527          this.dir = metadataDir;
 43528          this.metadataBaseUrl = metadataBaseUrl;
 43529          this.targetDir = targetDir;
 43530          this.targetBaseUrl = targetBaseUrl;
 43531          this.forceCache = options.forceCache ?? false;
 43532          const data = this.loadLocalMetadata(models_1.MetadataKind.Root);
 43533          this.trustedSet = new store_1.TrustedMetadataStore(data);
 43534          this.config = { ...config_1.defaultConfig, ...config };
 43535          this.fetcher =
 43536              fetcher ||
 43537                  new fetcher_1.DefaultFetcher({
 43538                      timeout: this.config.fetchTimeout,
 43539                      retry: this.config.fetchRetries ?? this.config.fetchRetry,
 43540                  });
 43541      }
 43542      // refresh and load the metadata before downloading the target
 43543      // refresh should be called once after the client is initialized
 43544      async refresh() {
 43545          // If forceCache is true, try to load the timestamp from local storage
 43546          // without fetching it from the remote. Otherwise, load the root and
 43547          // timestamp from the remote per the TUF spec.
 43548          if (this.forceCache) {
 43549              // If anything fails, load the root and timestamp from the remote. This
 43550              // should cover any situation where the local metadata is corrupted or
 43551              // expired.
 43552              try {
 43553                  await this.loadTimestamp({ checkRemote: false });
 43554              }
 43555              catch (error) {
 43556                  await this.loadRoot();
 43557                  await this.loadTimestamp();
 43558              }
 43559          }
 43560          else {
 43561              await this.loadRoot();
 43562              await this.loadTimestamp();
 43563          }
 43564          await this.loadSnapshot();
 43565          await this.loadTargets(models_1.MetadataKind.Targets, models_1.MetadataKind.Root);
 43566      }
 43567      // Returns the TargetFile instance with information for the given target path.
 43568      //
 43569      // Implicitly calls refresh if it hasn't already been called.
 43570      async getTargetInfo(targetPath) {
 43571          if (!this.trustedSet.targets) {
 43572              await this.refresh();
 43573          }
 43574          return this.preorderDepthFirstWalk(targetPath);
 43575      }
 43576      async downloadTarget(targetInfo, filePath, targetBaseUrl) {
 43577          const targetPath = filePath || this.generateTargetPath(targetInfo);
 43578          if (!targetBaseUrl) {
 43579              if (!this.targetBaseUrl) {
 43580                  throw new error_1.ValueError('Target base URL not set');
 43581              }
 43582              targetBaseUrl = this.targetBaseUrl;
 43583          }
 43584          let targetFilePath = targetInfo.path;
 43585          const consistentSnapshot = this.trustedSet.root.signed.consistentSnapshot;
 43586          if (consistentSnapshot && this.config.prefixTargetsWithHash) {
 43587              const hashes = Object.values(targetInfo.hashes);
 43588              const { dir, base } = path.parse(targetFilePath);
 43589              const filename = `${hashes[0]}.${base}`;
 43590              targetFilePath = dir ? `${dir}/${filename}` : filename;
 43591          }
 43592          const targetUrl = url.join(targetBaseUrl, targetFilePath);
 43593          // Client workflow 5.7.3: download target file
 43594          await this.fetcher.downloadFile(targetUrl, targetInfo.length, async (fileName) => {
 43595              // Verify hashes and length of downloaded file
 43596              await targetInfo.verify(fs.createReadStream(fileName));
 43597              // Copy file to target path
 43598              log('WRITE %s', targetPath);
 43599              fs.copyFileSync(fileName, targetPath);
 43600          });
 43601          return targetPath;
 43602      }
 43603      async findCachedTarget(targetInfo, filePath) {
 43604          if (!filePath) {
 43605              filePath = this.generateTargetPath(targetInfo);
 43606          }
 43607          try {
 43608              if (fs.existsSync(filePath)) {
 43609                  await targetInfo.verify(fs.createReadStream(filePath));
 43610                  return filePath;
 43611              }
 43612          }
 43613          catch (error) {
 43614              return; // File not found
 43615          }
 43616          return; // File not found
 43617      }
 43618      loadLocalMetadata(fileName) {
 43619          const filePath = path.join(this.dir, `${fileName}.json`);
 43620          log('READ %s', filePath);
 43621          return fs.readFileSync(filePath);
 43622      }
 43623      // Sequentially load and persist on local disk every newer root metadata
 43624      // version available on the remote.
 43625      // Client workflow 5.3: update root role
 43626      async loadRoot() {
 43627          // Client workflow 5.3.2: version of trusted root metadata file
 43628          const rootVersion = this.trustedSet.root.signed.version;
 43629          const lowerBound = rootVersion + 1;
 43630          const upperBound = lowerBound + this.config.maxRootRotations;
 43631          for (let version = lowerBound; version <= upperBound; version++) {
 43632              const rootUrl = url.join(this.metadataBaseUrl, `${version}.root.json`);
 43633              try {
 43634                  // Client workflow 5.3.3: download new root metadata file
 43635                  const bytesData = await this.fetcher.downloadBytes(rootUrl, this.config.rootMaxLength);
 43636                  // Client workflow 5.3.4 - 5.4.7
 43637                  this.trustedSet.updateRoot(bytesData);
 43638                  // Client workflow 5.3.8: persist root metadata file
 43639                  this.persistMetadata(models_1.MetadataKind.Root, bytesData);
 43640              }
 43641              catch (error) {
 43642                  break;
 43643              }
 43644          }
 43645      }
 43646      // Load local and remote timestamp metadata.
 43647      // Client workflow 5.4: update timestamp role
 43648      async loadTimestamp({ checkRemote } = { checkRemote: true }) {
 43649          // Load local and remote timestamp metadata
 43650          try {
 43651              const data = this.loadLocalMetadata(models_1.MetadataKind.Timestamp);
 43652              this.trustedSet.updateTimestamp(data);
 43653              // If checkRemote is disabled, return here to avoid fetching the remote
 43654              // timestamp metadata.
 43655              if (!checkRemote) {
 43656                  return;
 43657              }
 43658          }
 43659          catch (error) {
 43660              // continue
 43661          }
 43662          //Load from remote (whether local load succeeded or not)
 43663          const timestampUrl = url.join(this.metadataBaseUrl, 'timestamp.json');
 43664          // Client workflow 5.4.1: download timestamp metadata file
 43665          const bytesData = await this.fetcher.downloadBytes(timestampUrl, this.config.timestampMaxLength);
 43666          try {
 43667              // Client workflow 5.4.2 - 5.4.4
 43668              this.trustedSet.updateTimestamp(bytesData);
 43669          }
 43670          catch (error) {
 43671              // If new timestamp version is same as current, discardd the new one.
 43672              // This is normal and should NOT raise an error.
 43673              if (error instanceof error_1.EqualVersionError) {
 43674                  return;
 43675              }
 43676              // Re-raise any other error
 43677              throw error;
 43678          }
 43679          // Client workflow 5.4.5: persist timestamp metadata
 43680          this.persistMetadata(models_1.MetadataKind.Timestamp, bytesData);
 43681      }
 43682      // Load local and remote snapshot metadata.
 43683      // Client workflow 5.5: update snapshot role
 43684      async loadSnapshot() {
 43685          //Load local (and if needed remote) snapshot metadata
 43686          try {
 43687              const data = this.loadLocalMetadata(models_1.MetadataKind.Snapshot);
 43688              this.trustedSet.updateSnapshot(data, true);
 43689          }
 43690          catch (error) {
 43691              if (!this.trustedSet.timestamp) {
 43692                  throw new ReferenceError('No timestamp metadata');
 43693              }
 43694              const snapshotMeta = this.trustedSet.timestamp.signed.snapshotMeta;
 43695              const maxLength = snapshotMeta.length || this.config.snapshotMaxLength;
 43696              const version = this.trustedSet.root.signed.consistentSnapshot
 43697                  ? snapshotMeta.version
 43698                  : undefined;
 43699              const snapshotUrl = url.join(this.metadataBaseUrl, version ? `${version}.snapshot.json` : 'snapshot.json');
 43700              try {
 43701                  // Client workflow 5.5.1: download snapshot metadata file
 43702                  const bytesData = await this.fetcher.downloadBytes(snapshotUrl, maxLength);
 43703                  // Client workflow 5.5.2 - 5.5.6
 43704                  this.trustedSet.updateSnapshot(bytesData);
 43705                  // Client workflow 5.5.7: persist snapshot metadata file
 43706                  this.persistMetadata(models_1.MetadataKind.Snapshot, bytesData);
 43707              }
 43708              catch (error) {
 43709                  throw new error_1.RuntimeError(`Unable to load snapshot metadata error ${error}`);
 43710              }
 43711          }
 43712      }
 43713      // Load local and remote targets metadata.
 43714      // Client workflow 5.6: update targets role
 43715      async loadTargets(role, parentRole) {
 43716          if (this.trustedSet.getRole(role)) {
 43717              return this.trustedSet.getRole(role);
 43718          }
 43719          try {
 43720              const buffer = this.loadLocalMetadata(role);
 43721              this.trustedSet.updateDelegatedTargets(buffer, role, parentRole);
 43722          }
 43723          catch (error) {
 43724              // Local 'role' does not exist or is invalid: update from remote
 43725              if (!this.trustedSet.snapshot) {
 43726                  throw new ReferenceError('No snapshot metadata');
 43727              }
 43728              const metaInfo = this.trustedSet.snapshot.signed.meta[`${role}.json`];
 43729              // TODO: use length for fetching
 43730              const maxLength = metaInfo.length || this.config.targetsMaxLength;
 43731              const version = this.trustedSet.root.signed.consistentSnapshot
 43732                  ? metaInfo.version
 43733                  : undefined;
 43734              const metadataUrl = url.join(this.metadataBaseUrl, version ? `${version}.${role}.json` : `${role}.json`);
 43735              try {
 43736                  // Client workflow 5.6.1: download targets metadata file
 43737                  const bytesData = await this.fetcher.downloadBytes(metadataUrl, maxLength);
 43738                  // Client workflow 5.6.2 - 5.6.6
 43739                  this.trustedSet.updateDelegatedTargets(bytesData, role, parentRole);
 43740                  // Client workflow 5.6.7: persist targets metadata file
 43741                  this.persistMetadata(role, bytesData);
 43742              }
 43743              catch (error) {
 43744                  throw new error_1.RuntimeError(`Unable to load targets error ${error}`);
 43745              }
 43746          }
 43747          return this.trustedSet.getRole(role);
 43748      }
 43749      async preorderDepthFirstWalk(targetPath) {
 43750          // Interrogates the tree of target delegations in order of appearance
 43751          // (which implicitly order trustworthiness), and returns the matching
 43752          // target found in the most trusted role.
 43753          // List of delegations to be interrogated. A (role, parent role) pair
 43754          // is needed to load and verify the delegated targets metadata.
 43755          const delegationsToVisit = [
 43756              {
 43757                  roleName: models_1.MetadataKind.Targets,
 43758                  parentRoleName: models_1.MetadataKind.Root,
 43759              },
 43760          ];
 43761          const visitedRoleNames = new Set();
 43762          // Client workflow 5.6.7: preorder depth-first traversal of the graph of
 43763          // target delegations
 43764          while (visitedRoleNames.size <= this.config.maxDelegations &&
 43765              delegationsToVisit.length > 0) {
 43766              //  Pop the role name from the top of the stack.
 43767              // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
 43768              const { roleName, parentRoleName } = delegationsToVisit.pop();
 43769              // Skip any visited current role to prevent cycles.
 43770              // Client workflow 5.6.7.1: skip already-visited roles
 43771              if (visitedRoleNames.has(roleName)) {
 43772                  continue;
 43773              }
 43774              // The metadata for 'role_name' must be downloaded/updated before
 43775              // its targets, delegations, and child roles can be inspected.
 43776              const targets = (await this.loadTargets(roleName, parentRoleName))
 43777                  ?.signed;
 43778              if (!targets) {
 43779                  continue;
 43780              }
 43781              const target = targets.targets?.[targetPath];
 43782              if (target) {
 43783                  return target;
 43784              }
 43785              // After preorder check, add current role to set of visited roles.
 43786              visitedRoleNames.add(roleName);
 43787              if (targets.delegations) {
 43788                  const childRolesToVisit = [];
 43789                  // NOTE: This may be a slow operation if there are many delegated roles.
 43790                  const rolesForTarget = targets.delegations.rolesForTarget(targetPath);
 43791                  for (const { role: childName, terminating } of rolesForTarget) {
 43792                      childRolesToVisit.push({
 43793                          roleName: childName,
 43794                          parentRoleName: roleName,
 43795                      });
 43796                      // Client workflow 5.6.7.2.1
 43797                      if (terminating) {
 43798                          delegationsToVisit.splice(0); // empty the array
 43799                          break;
 43800                      }
 43801                  }
 43802                  childRolesToVisit.reverse();
 43803                  delegationsToVisit.push(...childRolesToVisit);
 43804              }
 43805          }
 43806          return; // no matching target found
 43807      }
 43808      generateTargetPath(targetInfo) {
 43809          if (!this.targetDir) {
 43810              throw new error_1.ValueError('Target directory not set');
 43811          }
 43812          // URL encode target path
 43813          const filePath = encodeURIComponent(targetInfo.path);
 43814          return path.join(this.targetDir, filePath);
 43815      }
 43816      persistMetadata(metaDataName, bytesData) {
 43817          try {
 43818              const filePath = path.join(this.dir, `${metaDataName}.json`);
 43819              log('WRITE %s', filePath);
 43820              fs.writeFileSync(filePath, bytesData.toString('utf8'));
 43821          }
 43822          catch (error) {
 43823              throw new error_1.PersistError(`Failed to persist metadata ${metaDataName} error: ${error}`);
 43824          }
 43825      }
 43826  }
 43827  exports.Updater = Updater;
 43828  
 43829  
 43830  /***/ }),
 43831  
 43832  /***/ 26400:
 43833  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 43834  
 43835  "use strict";
 43836  
 43837  var __importDefault = (this && this.__importDefault) || function (mod) {
 43838      return (mod && mod.__esModule) ? mod : { "default": mod };
 43839  };
 43840  Object.defineProperty(exports, "__esModule", ({ value: true }));
 43841  exports.withTempFile = void 0;
 43842  const promises_1 = __importDefault(__nccwpck_require__(73292));
 43843  const os_1 = __importDefault(__nccwpck_require__(22037));
 43844  const path_1 = __importDefault(__nccwpck_require__(71017));
 43845  // Invokes the given handler with the path to a temporary file. The file
 43846  // is deleted after the handler returns.
 43847  const withTempFile = async (handler) => withTempDir(async (dir) => handler(path_1.default.join(dir, 'tempfile')));
 43848  exports.withTempFile = withTempFile;
 43849  // Invokes the given handler with a temporary directory. The directory is
 43850  // deleted after the handler returns.
 43851  const withTempDir = async (handler) => {
 43852      const tmpDir = await promises_1.default.realpath(os_1.default.tmpdir());
 43853      const dir = await promises_1.default.mkdtemp(tmpDir + path_1.default.sep);
 43854      try {
 43855          return await handler(dir);
 43856      }
 43857      finally {
 43858          await promises_1.default.rm(dir, { force: true, recursive: true, maxRetries: 3 });
 43859      }
 43860  };
 43861  
 43862  
 43863  /***/ }),
 43864  
 43865  /***/ 95961:
 43866  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 43867  
 43868  "use strict";
 43869  
 43870  Object.defineProperty(exports, "__esModule", ({ value: true }));
 43871  exports.join = void 0;
 43872  const url_1 = __nccwpck_require__(57310);
 43873  function join(base, path) {
 43874      return new url_1.URL(ensureTrailingSlash(base) + removeLeadingSlash(path)).toString();
 43875  }
 43876  exports.join = join;
 43877  function ensureTrailingSlash(path) {
 43878      return path.endsWith('/') ? path : path + '/';
 43879  }
 43880  function removeLeadingSlash(path) {
 43881      return path.startsWith('/') ? path.slice(1) : path;
 43882  }
 43883  
 43884  
 43885  /***/ }),
 43886  
 43887  /***/ 74294:
 43888  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 43889  
 43890  module.exports = __nccwpck_require__(54219);
 43891  
 43892  
 43893  /***/ }),
 43894  
 43895  /***/ 54219:
 43896  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 43897  
 43898  "use strict";
 43899  
 43900  
 43901  var net = __nccwpck_require__(41808);
 43902  var tls = __nccwpck_require__(24404);
 43903  var http = __nccwpck_require__(13685);
 43904  var https = __nccwpck_require__(95687);
 43905  var events = __nccwpck_require__(82361);
 43906  var assert = __nccwpck_require__(39491);
 43907  var util = __nccwpck_require__(73837);
 43908  
 43909  
 43910  exports.httpOverHttp = httpOverHttp;
 43911  exports.httpsOverHttp = httpsOverHttp;
 43912  exports.httpOverHttps = httpOverHttps;
 43913  exports.httpsOverHttps = httpsOverHttps;
 43914  
 43915  
 43916  function httpOverHttp(options) {
 43917    var agent = new TunnelingAgent(options);
 43918    agent.request = http.request;
 43919    return agent;
 43920  }
 43921  
 43922  function httpsOverHttp(options) {
 43923    var agent = new TunnelingAgent(options);
 43924    agent.request = http.request;
 43925    agent.createSocket = createSecureSocket;
 43926    agent.defaultPort = 443;
 43927    return agent;
 43928  }
 43929  
 43930  function httpOverHttps(options) {
 43931    var agent = new TunnelingAgent(options);
 43932    agent.request = https.request;
 43933    return agent;
 43934  }
 43935  
 43936  function httpsOverHttps(options) {
 43937    var agent = new TunnelingAgent(options);
 43938    agent.request = https.request;
 43939    agent.createSocket = createSecureSocket;
 43940    agent.defaultPort = 443;
 43941    return agent;
 43942  }
 43943  
 43944  
 43945  function TunnelingAgent(options) {
 43946    var self = this;
 43947    self.options = options || {};
 43948    self.proxyOptions = self.options.proxy || {};
 43949    self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;
 43950    self.requests = [];
 43951    self.sockets = [];
 43952  
 43953    self.on('free', function onFree(socket, host, port, localAddress) {
 43954      var options = toOptions(host, port, localAddress);
 43955      for (var i = 0, len = self.requests.length; i < len; ++i) {
 43956        var pending = self.requests[i];
 43957        if (pending.host === options.host && pending.port === options.port) {
 43958          // Detect the request to connect same origin server,
 43959          // reuse the connection.
 43960          self.requests.splice(i, 1);
 43961          pending.request.onSocket(socket);
 43962          return;
 43963        }
 43964      }
 43965      socket.destroy();
 43966      self.removeSocket(socket);
 43967    });
 43968  }
 43969  util.inherits(TunnelingAgent, events.EventEmitter);
 43970  
 43971  TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {
 43972    var self = this;
 43973    var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));
 43974  
 43975    if (self.sockets.length >= this.maxSockets) {
 43976      // We are over limit so we'll add it to the queue.
 43977      self.requests.push(options);
 43978      return;
 43979    }
 43980  
 43981    // If we are under maxSockets create a new one.
 43982    self.createSocket(options, function(socket) {
 43983      socket.on('free', onFree);
 43984      socket.on('close', onCloseOrRemove);
 43985      socket.on('agentRemove', onCloseOrRemove);
 43986      req.onSocket(socket);
 43987  
 43988      function onFree() {
 43989        self.emit('free', socket, options);
 43990      }
 43991  
 43992      function onCloseOrRemove(err) {
 43993        self.removeSocket(socket);
 43994        socket.removeListener('free', onFree);
 43995        socket.removeListener('close', onCloseOrRemove);
 43996        socket.removeListener('agentRemove', onCloseOrRemove);
 43997      }
 43998    });
 43999  };
 44000  
 44001  TunnelingAgent.prototype.createSocket = function createSocket(options, cb) {
 44002    var self = this;
 44003    var placeholder = {};
 44004    self.sockets.push(placeholder);
 44005  
 44006    var connectOptions = mergeOptions({}, self.proxyOptions, {
 44007      method: 'CONNECT',
 44008      path: options.host + ':' + options.port,
 44009      agent: false,
 44010      headers: {
 44011        host: options.host + ':' + options.port
 44012      }
 44013    });
 44014    if (options.localAddress) {
 44015      connectOptions.localAddress = options.localAddress;
 44016    }
 44017    if (connectOptions.proxyAuth) {
 44018      connectOptions.headers = connectOptions.headers || {};
 44019      connectOptions.headers['Proxy-Authorization'] = 'Basic ' +
 44020          new Buffer(connectOptions.proxyAuth).toString('base64');
 44021    }
 44022  
 44023    debug('making CONNECT request');
 44024    var connectReq = self.request(connectOptions);
 44025    connectReq.useChunkedEncodingByDefault = false; // for v0.6
 44026    connectReq.once('response', onResponse); // for v0.6
 44027    connectReq.once('upgrade', onUpgrade);   // for v0.6
 44028    connectReq.once('connect', onConnect);   // for v0.7 or later
 44029    connectReq.once('error', onError);
 44030    connectReq.end();
 44031  
 44032    function onResponse(res) {
 44033      // Very hacky. This is necessary to avoid http-parser leaks.
 44034      res.upgrade = true;
 44035    }
 44036  
 44037    function onUpgrade(res, socket, head) {
 44038      // Hacky.
 44039      process.nextTick(function() {
 44040        onConnect(res, socket, head);
 44041      });
 44042    }
 44043  
 44044    function onConnect(res, socket, head) {
 44045      connectReq.removeAllListeners();
 44046      socket.removeAllListeners();
 44047  
 44048      if (res.statusCode !== 200) {
 44049        debug('tunneling socket could not be established, statusCode=%d',
 44050          res.statusCode);
 44051        socket.destroy();
 44052        var error = new Error('tunneling socket could not be established, ' +
 44053          'statusCode=' + res.statusCode);
 44054        error.code = 'ECONNRESET';
 44055        options.request.emit('error', error);
 44056        self.removeSocket(placeholder);
 44057        return;
 44058      }
 44059      if (head.length > 0) {
 44060        debug('got illegal response body from proxy');
 44061        socket.destroy();
 44062        var error = new Error('got illegal response body from proxy');
 44063        error.code = 'ECONNRESET';
 44064        options.request.emit('error', error);
 44065        self.removeSocket(placeholder);
 44066        return;
 44067      }
 44068      debug('tunneling connection has established');
 44069      self.sockets[self.sockets.indexOf(placeholder)] = socket;
 44070      return cb(socket);
 44071    }
 44072  
 44073    function onError(cause) {
 44074      connectReq.removeAllListeners();
 44075  
 44076      debug('tunneling socket could not be established, cause=%s\n',
 44077            cause.message, cause.stack);
 44078      var error = new Error('tunneling socket could not be established, ' +
 44079                            'cause=' + cause.message);
 44080      error.code = 'ECONNRESET';
 44081      options.request.emit('error', error);
 44082      self.removeSocket(placeholder);
 44083    }
 44084  };
 44085  
 44086  TunnelingAgent.prototype.removeSocket = function removeSocket(socket) {
 44087    var pos = this.sockets.indexOf(socket)
 44088    if (pos === -1) {
 44089      return;
 44090    }
 44091    this.sockets.splice(pos, 1);
 44092  
 44093    var pending = this.requests.shift();
 44094    if (pending) {
 44095      // If we have pending requests and a socket gets closed a new one
 44096      // needs to be created to take over in the pool for the one that closed.
 44097      this.createSocket(pending, function(socket) {
 44098        pending.request.onSocket(socket);
 44099      });
 44100    }
 44101  };
 44102  
 44103  function createSecureSocket(options, cb) {
 44104    var self = this;
 44105    TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {
 44106      var hostHeader = options.request.getHeader('host');
 44107      var tlsOptions = mergeOptions({}, self.options, {
 44108        socket: socket,
 44109        servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host
 44110      });
 44111  
 44112      // 0 is dummy port for v0.6
 44113      var secureSocket = tls.connect(0, tlsOptions);
 44114      self.sockets[self.sockets.indexOf(socket)] = secureSocket;
 44115      cb(secureSocket);
 44116    });
 44117  }
 44118  
 44119  
 44120  function toOptions(host, port, localAddress) {
 44121    if (typeof host === 'string') { // since v0.10
 44122      return {
 44123        host: host,
 44124        port: port,
 44125        localAddress: localAddress
 44126      };
 44127    }
 44128    return host; // for v0.11 or later
 44129  }
 44130  
 44131  function mergeOptions(target) {
 44132    for (var i = 1, len = arguments.length; i < len; ++i) {
 44133      var overrides = arguments[i];
 44134      if (typeof overrides === 'object') {
 44135        var keys = Object.keys(overrides);
 44136        for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {
 44137          var k = keys[j];
 44138          if (overrides[k] !== undefined) {
 44139            target[k] = overrides[k];
 44140          }
 44141        }
 44142      }
 44143    }
 44144    return target;
 44145  }
 44146  
 44147  
 44148  var debug;
 44149  if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
 44150    debug = function() {
 44151      var args = Array.prototype.slice.call(arguments);
 44152      if (typeof args[0] === 'string') {
 44153        args[0] = 'TUNNEL: ' + args[0];
 44154      } else {
 44155        args.unshift('TUNNEL:');
 44156      }
 44157      console.error.apply(console, args);
 44158    }
 44159  } else {
 44160    debug = function() {};
 44161  }
 44162  exports.debug = debug; // for test
 44163  
 44164  
 44165  /***/ }),
 44166  
 44167  /***/ 41773:
 44168  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 44169  
 44170  "use strict";
 44171  
 44172  
 44173  const Client = __nccwpck_require__(33598)
 44174  const Dispatcher = __nccwpck_require__(60412)
 44175  const errors = __nccwpck_require__(48045)
 44176  const Pool = __nccwpck_require__(4634)
 44177  const BalancedPool = __nccwpck_require__(37931)
 44178  const Agent = __nccwpck_require__(7890)
 44179  const util = __nccwpck_require__(83983)
 44180  const { InvalidArgumentError } = errors
 44181  const api = __nccwpck_require__(44059)
 44182  const buildConnector = __nccwpck_require__(82067)
 44183  const MockClient = __nccwpck_require__(58687)
 44184  const MockAgent = __nccwpck_require__(66771)
 44185  const MockPool = __nccwpck_require__(26193)
 44186  const mockErrors = __nccwpck_require__(50888)
 44187  const ProxyAgent = __nccwpck_require__(97858)
 44188  const RetryHandler = __nccwpck_require__(82286)
 44189  const { getGlobalDispatcher, setGlobalDispatcher } = __nccwpck_require__(21892)
 44190  const DecoratorHandler = __nccwpck_require__(46930)
 44191  const RedirectHandler = __nccwpck_require__(72860)
 44192  const createRedirectInterceptor = __nccwpck_require__(38861)
 44193  
 44194  let hasCrypto
 44195  try {
 44196    __nccwpck_require__(6113)
 44197    hasCrypto = true
 44198  } catch {
 44199    hasCrypto = false
 44200  }
 44201  
 44202  Object.assign(Dispatcher.prototype, api)
 44203  
 44204  module.exports.Dispatcher = Dispatcher
 44205  module.exports.Client = Client
 44206  module.exports.Pool = Pool
 44207  module.exports.BalancedPool = BalancedPool
 44208  module.exports.Agent = Agent
 44209  module.exports.ProxyAgent = ProxyAgent
 44210  module.exports.RetryHandler = RetryHandler
 44211  
 44212  module.exports.DecoratorHandler = DecoratorHandler
 44213  module.exports.RedirectHandler = RedirectHandler
 44214  module.exports.createRedirectInterceptor = createRedirectInterceptor
 44215  
 44216  module.exports.buildConnector = buildConnector
 44217  module.exports.errors = errors
 44218  
 44219  function makeDispatcher (fn) {
 44220    return (url, opts, handler) => {
 44221      if (typeof opts === 'function') {
 44222        handler = opts
 44223        opts = null
 44224      }
 44225  
 44226      if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {
 44227        throw new InvalidArgumentError('invalid url')
 44228      }
 44229  
 44230      if (opts != null && typeof opts !== 'object') {
 44231        throw new InvalidArgumentError('invalid opts')
 44232      }
 44233  
 44234      if (opts && opts.path != null) {
 44235        if (typeof opts.path !== 'string') {
 44236          throw new InvalidArgumentError('invalid opts.path')
 44237        }
 44238  
 44239        let path = opts.path
 44240        if (!opts.path.startsWith('/')) {
 44241          path = `/${path}`
 44242        }
 44243  
 44244        url = new URL(util.parseOrigin(url).origin + path)
 44245      } else {
 44246        if (!opts) {
 44247          opts = typeof url === 'object' ? url : {}
 44248        }
 44249  
 44250        url = util.parseURL(url)
 44251      }
 44252  
 44253      const { agent, dispatcher = getGlobalDispatcher() } = opts
 44254  
 44255      if (agent) {
 44256        throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')
 44257      }
 44258  
 44259      return fn.call(dispatcher, {
 44260        ...opts,
 44261        origin: url.origin,
 44262        path: url.search ? `${url.pathname}${url.search}` : url.pathname,
 44263        method: opts.method || (opts.body ? 'PUT' : 'GET')
 44264      }, handler)
 44265    }
 44266  }
 44267  
 44268  module.exports.setGlobalDispatcher = setGlobalDispatcher
 44269  module.exports.getGlobalDispatcher = getGlobalDispatcher
 44270  
 44271  if (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) {
 44272    let fetchImpl = null
 44273    module.exports.fetch = async function fetch (resource) {
 44274      if (!fetchImpl) {
 44275        fetchImpl = (__nccwpck_require__(74881).fetch)
 44276      }
 44277  
 44278      try {
 44279        return await fetchImpl(...arguments)
 44280      } catch (err) {
 44281        if (typeof err === 'object') {
 44282          Error.captureStackTrace(err, this)
 44283        }
 44284  
 44285        throw err
 44286      }
 44287    }
 44288    module.exports.Headers = __nccwpck_require__(10554).Headers
 44289    module.exports.Response = __nccwpck_require__(27823).Response
 44290    module.exports.Request = __nccwpck_require__(48359).Request
 44291    module.exports.FormData = __nccwpck_require__(72015).FormData
 44292    module.exports.File = __nccwpck_require__(78511).File
 44293    module.exports.FileReader = __nccwpck_require__(1446).FileReader
 44294  
 44295    const { setGlobalOrigin, getGlobalOrigin } = __nccwpck_require__(71246)
 44296  
 44297    module.exports.setGlobalOrigin = setGlobalOrigin
 44298    module.exports.getGlobalOrigin = getGlobalOrigin
 44299  
 44300    const { CacheStorage } = __nccwpck_require__(37907)
 44301    const { kConstruct } = __nccwpck_require__(29174)
 44302  
 44303    // Cache & CacheStorage are tightly coupled with fetch. Even if it may run
 44304    // in an older version of Node, it doesn't have any use without fetch.
 44305    module.exports.caches = new CacheStorage(kConstruct)
 44306  }
 44307  
 44308  if (util.nodeMajor >= 16) {
 44309    const { deleteCookie, getCookies, getSetCookies, setCookie } = __nccwpck_require__(41724)
 44310  
 44311    module.exports.deleteCookie = deleteCookie
 44312    module.exports.getCookies = getCookies
 44313    module.exports.getSetCookies = getSetCookies
 44314    module.exports.setCookie = setCookie
 44315  
 44316    const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685)
 44317  
 44318    module.exports.parseMIMEType = parseMIMEType
 44319    module.exports.serializeAMimeType = serializeAMimeType
 44320  }
 44321  
 44322  if (util.nodeMajor >= 18 && hasCrypto) {
 44323    const { WebSocket } = __nccwpck_require__(54284)
 44324  
 44325    module.exports.WebSocket = WebSocket
 44326  }
 44327  
 44328  module.exports.request = makeDispatcher(api.request)
 44329  module.exports.stream = makeDispatcher(api.stream)
 44330  module.exports.pipeline = makeDispatcher(api.pipeline)
 44331  module.exports.connect = makeDispatcher(api.connect)
 44332  module.exports.upgrade = makeDispatcher(api.upgrade)
 44333  
 44334  module.exports.MockClient = MockClient
 44335  module.exports.MockPool = MockPool
 44336  module.exports.MockAgent = MockAgent
 44337  module.exports.mockErrors = mockErrors
 44338  
 44339  
 44340  /***/ }),
 44341  
 44342  /***/ 7890:
 44343  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 44344  
 44345  "use strict";
 44346  
 44347  
 44348  const { InvalidArgumentError } = __nccwpck_require__(48045)
 44349  const { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = __nccwpck_require__(72785)
 44350  const DispatcherBase = __nccwpck_require__(74839)
 44351  const Pool = __nccwpck_require__(4634)
 44352  const Client = __nccwpck_require__(33598)
 44353  const util = __nccwpck_require__(83983)
 44354  const createRedirectInterceptor = __nccwpck_require__(38861)
 44355  const { WeakRef, FinalizationRegistry } = __nccwpck_require__(56436)()
 44356  
 44357  const kOnConnect = Symbol('onConnect')
 44358  const kOnDisconnect = Symbol('onDisconnect')
 44359  const kOnConnectionError = Symbol('onConnectionError')
 44360  const kMaxRedirections = Symbol('maxRedirections')
 44361  const kOnDrain = Symbol('onDrain')
 44362  const kFactory = Symbol('factory')
 44363  const kFinalizer = Symbol('finalizer')
 44364  const kOptions = Symbol('options')
 44365  
 44366  function defaultFactory (origin, opts) {
 44367    return opts && opts.connections === 1
 44368      ? new Client(origin, opts)
 44369      : new Pool(origin, opts)
 44370  }
 44371  
 44372  class Agent extends DispatcherBase {
 44373    constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {
 44374      super()
 44375  
 44376      if (typeof factory !== 'function') {
 44377        throw new InvalidArgumentError('factory must be a function.')
 44378      }
 44379  
 44380      if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {
 44381        throw new InvalidArgumentError('connect must be a function or an object')
 44382      }
 44383  
 44384      if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {
 44385        throw new InvalidArgumentError('maxRedirections must be a positive number')
 44386      }
 44387  
 44388      if (connect && typeof connect !== 'function') {
 44389        connect = { ...connect }
 44390      }
 44391  
 44392      this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent)
 44393        ? options.interceptors.Agent
 44394        : [createRedirectInterceptor({ maxRedirections })]
 44395  
 44396      this[kOptions] = { ...util.deepClone(options), connect }
 44397      this[kOptions].interceptors = options.interceptors
 44398        ? { ...options.interceptors }
 44399        : undefined
 44400      this[kMaxRedirections] = maxRedirections
 44401      this[kFactory] = factory
 44402      this[kClients] = new Map()
 44403      this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => {
 44404        const ref = this[kClients].get(key)
 44405        if (ref !== undefined && ref.deref() === undefined) {
 44406          this[kClients].delete(key)
 44407        }
 44408      })
 44409  
 44410      const agent = this
 44411  
 44412      this[kOnDrain] = (origin, targets) => {
 44413        agent.emit('drain', origin, [agent, ...targets])
 44414      }
 44415  
 44416      this[kOnConnect] = (origin, targets) => {
 44417        agent.emit('connect', origin, [agent, ...targets])
 44418      }
 44419  
 44420      this[kOnDisconnect] = (origin, targets, err) => {
 44421        agent.emit('disconnect', origin, [agent, ...targets], err)
 44422      }
 44423  
 44424      this[kOnConnectionError] = (origin, targets, err) => {
 44425        agent.emit('connectionError', origin, [agent, ...targets], err)
 44426      }
 44427    }
 44428  
 44429    get [kRunning] () {
 44430      let ret = 0
 44431      for (const ref of this[kClients].values()) {
 44432        const client = ref.deref()
 44433        /* istanbul ignore next: gc is undeterministic */
 44434        if (client) {
 44435          ret += client[kRunning]
 44436        }
 44437      }
 44438      return ret
 44439    }
 44440  
 44441    [kDispatch] (opts, handler) {
 44442      let key
 44443      if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) {
 44444        key = String(opts.origin)
 44445      } else {
 44446        throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')
 44447      }
 44448  
 44449      const ref = this[kClients].get(key)
 44450  
 44451      let dispatcher = ref ? ref.deref() : null
 44452      if (!dispatcher) {
 44453        dispatcher = this[kFactory](opts.origin, this[kOptions])
 44454          .on('drain', this[kOnDrain])
 44455          .on('connect', this[kOnConnect])
 44456          .on('disconnect', this[kOnDisconnect])
 44457          .on('connectionError', this[kOnConnectionError])
 44458  
 44459        this[kClients].set(key, new WeakRef(dispatcher))
 44460        this[kFinalizer].register(dispatcher, key)
 44461      }
 44462  
 44463      return dispatcher.dispatch(opts, handler)
 44464    }
 44465  
 44466    async [kClose] () {
 44467      const closePromises = []
 44468      for (const ref of this[kClients].values()) {
 44469        const client = ref.deref()
 44470        /* istanbul ignore else: gc is undeterministic */
 44471        if (client) {
 44472          closePromises.push(client.close())
 44473        }
 44474      }
 44475  
 44476      await Promise.all(closePromises)
 44477    }
 44478  
 44479    async [kDestroy] (err) {
 44480      const destroyPromises = []
 44481      for (const ref of this[kClients].values()) {
 44482        const client = ref.deref()
 44483        /* istanbul ignore else: gc is undeterministic */
 44484        if (client) {
 44485          destroyPromises.push(client.destroy(err))
 44486        }
 44487      }
 44488  
 44489      await Promise.all(destroyPromises)
 44490    }
 44491  }
 44492  
 44493  module.exports = Agent
 44494  
 44495  
 44496  /***/ }),
 44497  
 44498  /***/ 7032:
 44499  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 44500  
 44501  const { addAbortListener } = __nccwpck_require__(83983)
 44502  const { RequestAbortedError } = __nccwpck_require__(48045)
 44503  
 44504  const kListener = Symbol('kListener')
 44505  const kSignal = Symbol('kSignal')
 44506  
 44507  function abort (self) {
 44508    if (self.abort) {
 44509      self.abort()
 44510    } else {
 44511      self.onError(new RequestAbortedError())
 44512    }
 44513  }
 44514  
 44515  function addSignal (self, signal) {
 44516    self[kSignal] = null
 44517    self[kListener] = null
 44518  
 44519    if (!signal) {
 44520      return
 44521    }
 44522  
 44523    if (signal.aborted) {
 44524      abort(self)
 44525      return
 44526    }
 44527  
 44528    self[kSignal] = signal
 44529    self[kListener] = () => {
 44530      abort(self)
 44531    }
 44532  
 44533    addAbortListener(self[kSignal], self[kListener])
 44534  }
 44535  
 44536  function removeSignal (self) {
 44537    if (!self[kSignal]) {
 44538      return
 44539    }
 44540  
 44541    if ('removeEventListener' in self[kSignal]) {
 44542      self[kSignal].removeEventListener('abort', self[kListener])
 44543    } else {
 44544      self[kSignal].removeListener('abort', self[kListener])
 44545    }
 44546  
 44547    self[kSignal] = null
 44548    self[kListener] = null
 44549  }
 44550  
 44551  module.exports = {
 44552    addSignal,
 44553    removeSignal
 44554  }
 44555  
 44556  
 44557  /***/ }),
 44558  
 44559  /***/ 29744:
 44560  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 44561  
 44562  "use strict";
 44563  
 44564  
 44565  const { AsyncResource } = __nccwpck_require__(50852)
 44566  const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(48045)
 44567  const util = __nccwpck_require__(83983)
 44568  const { addSignal, removeSignal } = __nccwpck_require__(7032)
 44569  
 44570  class ConnectHandler extends AsyncResource {
 44571    constructor (opts, callback) {
 44572      if (!opts || typeof opts !== 'object') {
 44573        throw new InvalidArgumentError('invalid opts')
 44574      }
 44575  
 44576      if (typeof callback !== 'function') {
 44577        throw new InvalidArgumentError('invalid callback')
 44578      }
 44579  
 44580      const { signal, opaque, responseHeaders } = opts
 44581  
 44582      if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {
 44583        throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')
 44584      }
 44585  
 44586      super('UNDICI_CONNECT')
 44587  
 44588      this.opaque = opaque || null
 44589      this.responseHeaders = responseHeaders || null
 44590      this.callback = callback
 44591      this.abort = null
 44592  
 44593      addSignal(this, signal)
 44594    }
 44595  
 44596    onConnect (abort, context) {
 44597      if (!this.callback) {
 44598        throw new RequestAbortedError()
 44599      }
 44600  
 44601      this.abort = abort
 44602      this.context = context
 44603    }
 44604  
 44605    onHeaders () {
 44606      throw new SocketError('bad connect', null)
 44607    }
 44608  
 44609    onUpgrade (statusCode, rawHeaders, socket) {
 44610      const { callback, opaque, context } = this
 44611  
 44612      removeSignal(this)
 44613  
 44614      this.callback = null
 44615  
 44616      let headers = rawHeaders
 44617      // Indicates is an HTTP2Session
 44618      if (headers != null) {
 44619        headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)
 44620      }
 44621  
 44622      this.runInAsyncScope(callback, null, null, {
 44623        statusCode,
 44624        headers,
 44625        socket,
 44626        opaque,
 44627        context
 44628      })
 44629    }
 44630  
 44631    onError (err) {
 44632      const { callback, opaque } = this
 44633  
 44634      removeSignal(this)
 44635  
 44636      if (callback) {
 44637        this.callback = null
 44638        queueMicrotask(() => {
 44639          this.runInAsyncScope(callback, null, err, { opaque })
 44640        })
 44641      }
 44642    }
 44643  }
 44644  
 44645  function connect (opts, callback) {
 44646    if (callback === undefined) {
 44647      return new Promise((resolve, reject) => {
 44648        connect.call(this, opts, (err, data) => {
 44649          return err ? reject(err) : resolve(data)
 44650        })
 44651      })
 44652    }
 44653  
 44654    try {
 44655      const connectHandler = new ConnectHandler(opts, callback)
 44656      this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler)
 44657    } catch (err) {
 44658      if (typeof callback !== 'function') {
 44659        throw err
 44660      }
 44661      const opaque = opts && opts.opaque
 44662      queueMicrotask(() => callback(err, { opaque }))
 44663    }
 44664  }
 44665  
 44666  module.exports = connect
 44667  
 44668  
 44669  /***/ }),
 44670  
 44671  /***/ 28752:
 44672  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 44673  
 44674  "use strict";
 44675  
 44676  
 44677  const {
 44678    Readable,
 44679    Duplex,
 44680    PassThrough
 44681  } = __nccwpck_require__(12781)
 44682  const {
 44683    InvalidArgumentError,
 44684    InvalidReturnValueError,
 44685    RequestAbortedError
 44686  } = __nccwpck_require__(48045)
 44687  const util = __nccwpck_require__(83983)
 44688  const { AsyncResource } = __nccwpck_require__(50852)
 44689  const { addSignal, removeSignal } = __nccwpck_require__(7032)
 44690  const assert = __nccwpck_require__(39491)
 44691  
 44692  const kResume = Symbol('resume')
 44693  
 44694  class PipelineRequest extends Readable {
 44695    constructor () {
 44696      super({ autoDestroy: true })
 44697  
 44698      this[kResume] = null
 44699    }
 44700  
 44701    _read () {
 44702      const { [kResume]: resume } = this
 44703  
 44704      if (resume) {
 44705        this[kResume] = null
 44706        resume()
 44707      }
 44708    }
 44709  
 44710    _destroy (err, callback) {
 44711      this._read()
 44712  
 44713      callback(err)
 44714    }
 44715  }
 44716  
 44717  class PipelineResponse extends Readable {
 44718    constructor (resume) {
 44719      super({ autoDestroy: true })
 44720      this[kResume] = resume
 44721    }
 44722  
 44723    _read () {
 44724      this[kResume]()
 44725    }
 44726  
 44727    _destroy (err, callback) {
 44728      if (!err && !this._readableState.endEmitted) {
 44729        err = new RequestAbortedError()
 44730      }
 44731  
 44732      callback(err)
 44733    }
 44734  }
 44735  
 44736  class PipelineHandler extends AsyncResource {
 44737    constructor (opts, handler) {
 44738      if (!opts || typeof opts !== 'object') {
 44739        throw new InvalidArgumentError('invalid opts')
 44740      }
 44741  
 44742      if (typeof handler !== 'function') {
 44743        throw new InvalidArgumentError('invalid handler')
 44744      }
 44745  
 44746      const { signal, method, opaque, onInfo, responseHeaders } = opts
 44747  
 44748      if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {
 44749        throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')
 44750      }
 44751  
 44752      if (method === 'CONNECT') {
 44753        throw new InvalidArgumentError('invalid method')
 44754      }
 44755  
 44756      if (onInfo && typeof onInfo !== 'function') {
 44757        throw new InvalidArgumentError('invalid onInfo callback')
 44758      }
 44759  
 44760      super('UNDICI_PIPELINE')
 44761  
 44762      this.opaque = opaque || null
 44763      this.responseHeaders = responseHeaders || null
 44764      this.handler = handler
 44765      this.abort = null
 44766      this.context = null
 44767      this.onInfo = onInfo || null
 44768  
 44769      this.req = new PipelineRequest().on('error', util.nop)
 44770  
 44771      this.ret = new Duplex({
 44772        readableObjectMode: opts.objectMode,
 44773        autoDestroy: true,
 44774        read: () => {
 44775          const { body } = this
 44776  
 44777          if (body && body.resume) {
 44778            body.resume()
 44779          }
 44780        },
 44781        write: (chunk, encoding, callback) => {
 44782          const { req } = this
 44783  
 44784          if (req.push(chunk, encoding) || req._readableState.destroyed) {
 44785            callback()
 44786          } else {
 44787            req[kResume] = callback
 44788          }
 44789        },
 44790        destroy: (err, callback) => {
 44791          const { body, req, res, ret, abort } = this
 44792  
 44793          if (!err && !ret._readableState.endEmitted) {
 44794            err = new RequestAbortedError()
 44795          }
 44796  
 44797          if (abort && err) {
 44798            abort()
 44799          }
 44800  
 44801          util.destroy(body, err)
 44802          util.destroy(req, err)
 44803          util.destroy(res, err)
 44804  
 44805          removeSignal(this)
 44806  
 44807          callback(err)
 44808        }
 44809      }).on('prefinish', () => {
 44810        const { req } = this
 44811  
 44812        // Node < 15 does not call _final in same tick.
 44813        req.push(null)
 44814      })
 44815  
 44816      this.res = null
 44817  
 44818      addSignal(this, signal)
 44819    }
 44820  
 44821    onConnect (abort, context) {
 44822      const { ret, res } = this
 44823  
 44824      assert(!res, 'pipeline cannot be retried')
 44825  
 44826      if (ret.destroyed) {
 44827        throw new RequestAbortedError()
 44828      }
 44829  
 44830      this.abort = abort
 44831      this.context = context
 44832    }
 44833  
 44834    onHeaders (statusCode, rawHeaders, resume) {
 44835      const { opaque, handler, context } = this
 44836  
 44837      if (statusCode < 200) {
 44838        if (this.onInfo) {
 44839          const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)
 44840          this.onInfo({ statusCode, headers })
 44841        }
 44842        return
 44843      }
 44844  
 44845      this.res = new PipelineResponse(resume)
 44846  
 44847      let body
 44848      try {
 44849        this.handler = null
 44850        const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)
 44851        body = this.runInAsyncScope(handler, null, {
 44852          statusCode,
 44853          headers,
 44854          opaque,
 44855          body: this.res,
 44856          context
 44857        })
 44858      } catch (err) {
 44859        this.res.on('error', util.nop)
 44860        throw err
 44861      }
 44862  
 44863      if (!body || typeof body.on !== 'function') {
 44864        throw new InvalidReturnValueError('expected Readable')
 44865      }
 44866  
 44867      body
 44868        .on('data', (chunk) => {
 44869          const { ret, body } = this
 44870  
 44871          if (!ret.push(chunk) && body.pause) {
 44872            body.pause()
 44873          }
 44874        })
 44875        .on('error', (err) => {
 44876          const { ret } = this
 44877  
 44878          util.destroy(ret, err)
 44879        })
 44880        .on('end', () => {
 44881          const { ret } = this
 44882  
 44883          ret.push(null)
 44884        })
 44885        .on('close', () => {
 44886          const { ret } = this
 44887  
 44888          if (!ret._readableState.ended) {
 44889            util.destroy(ret, new RequestAbortedError())
 44890          }
 44891        })
 44892  
 44893      this.body = body
 44894    }
 44895  
 44896    onData (chunk) {
 44897      const { res } = this
 44898      return res.push(chunk)
 44899    }
 44900  
 44901    onComplete (trailers) {
 44902      const { res } = this
 44903      res.push(null)
 44904    }
 44905  
 44906    onError (err) {
 44907      const { ret } = this
 44908      this.handler = null
 44909      util.destroy(ret, err)
 44910    }
 44911  }
 44912  
 44913  function pipeline (opts, handler) {
 44914    try {
 44915      const pipelineHandler = new PipelineHandler(opts, handler)
 44916      this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler)
 44917      return pipelineHandler.ret
 44918    } catch (err) {
 44919      return new PassThrough().destroy(err)
 44920    }
 44921  }
 44922  
 44923  module.exports = pipeline
 44924  
 44925  
 44926  /***/ }),
 44927  
 44928  /***/ 55448:
 44929  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 44930  
 44931  "use strict";
 44932  
 44933  
 44934  const Readable = __nccwpck_require__(73858)
 44935  const {
 44936    InvalidArgumentError,
 44937    RequestAbortedError
 44938  } = __nccwpck_require__(48045)
 44939  const util = __nccwpck_require__(83983)
 44940  const { getResolveErrorBodyCallback } = __nccwpck_require__(77474)
 44941  const { AsyncResource } = __nccwpck_require__(50852)
 44942  const { addSignal, removeSignal } = __nccwpck_require__(7032)
 44943  
 44944  class RequestHandler extends AsyncResource {
 44945    constructor (opts, callback) {
 44946      if (!opts || typeof opts !== 'object') {
 44947        throw new InvalidArgumentError('invalid opts')
 44948      }
 44949  
 44950      const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts
 44951  
 44952      try {
 44953        if (typeof callback !== 'function') {
 44954          throw new InvalidArgumentError('invalid callback')
 44955        }
 44956  
 44957        if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) {
 44958          throw new InvalidArgumentError('invalid highWaterMark')
 44959        }
 44960  
 44961        if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {
 44962          throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')
 44963        }
 44964  
 44965        if (method === 'CONNECT') {
 44966          throw new InvalidArgumentError('invalid method')
 44967        }
 44968  
 44969        if (onInfo && typeof onInfo !== 'function') {
 44970          throw new InvalidArgumentError('invalid onInfo callback')
 44971        }
 44972  
 44973        super('UNDICI_REQUEST')
 44974      } catch (err) {
 44975        if (util.isStream(body)) {
 44976          util.destroy(body.on('error', util.nop), err)
 44977        }
 44978        throw err
 44979      }
 44980  
 44981      this.responseHeaders = responseHeaders || null
 44982      this.opaque = opaque || null
 44983      this.callback = callback
 44984      this.res = null
 44985      this.abort = null
 44986      this.body = body
 44987      this.trailers = {}
 44988      this.context = null
 44989      this.onInfo = onInfo || null
 44990      this.throwOnError = throwOnError
 44991      this.highWaterMark = highWaterMark
 44992  
 44993      if (util.isStream(body)) {
 44994        body.on('error', (err) => {
 44995          this.onError(err)
 44996        })
 44997      }
 44998  
 44999      addSignal(this, signal)
 45000    }
 45001  
 45002    onConnect (abort, context) {
 45003      if (!this.callback) {
 45004        throw new RequestAbortedError()
 45005      }
 45006  
 45007      this.abort = abort
 45008      this.context = context
 45009    }
 45010  
 45011    onHeaders (statusCode, rawHeaders, resume, statusMessage) {
 45012      const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this
 45013  
 45014      const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)
 45015  
 45016      if (statusCode < 200) {
 45017        if (this.onInfo) {
 45018          this.onInfo({ statusCode, headers })
 45019        }
 45020        return
 45021      }
 45022  
 45023      const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers
 45024      const contentType = parsedHeaders['content-type']
 45025      const body = new Readable({ resume, abort, contentType, highWaterMark })
 45026  
 45027      this.callback = null
 45028      this.res = body
 45029      if (callback !== null) {
 45030        if (this.throwOnError && statusCode >= 400) {
 45031          this.runInAsyncScope(getResolveErrorBodyCallback, null,
 45032            { callback, body, contentType, statusCode, statusMessage, headers }
 45033          )
 45034        } else {
 45035          this.runInAsyncScope(callback, null, null, {
 45036            statusCode,
 45037            headers,
 45038            trailers: this.trailers,
 45039            opaque,
 45040            body,
 45041            context
 45042          })
 45043        }
 45044      }
 45045    }
 45046  
 45047    onData (chunk) {
 45048      const { res } = this
 45049      return res.push(chunk)
 45050    }
 45051  
 45052    onComplete (trailers) {
 45053      const { res } = this
 45054  
 45055      removeSignal(this)
 45056  
 45057      util.parseHeaders(trailers, this.trailers)
 45058  
 45059      res.push(null)
 45060    }
 45061  
 45062    onError (err) {
 45063      const { res, callback, body, opaque } = this
 45064  
 45065      removeSignal(this)
 45066  
 45067      if (callback) {
 45068        // TODO: Does this need queueMicrotask?
 45069        this.callback = null
 45070        queueMicrotask(() => {
 45071          this.runInAsyncScope(callback, null, err, { opaque })
 45072        })
 45073      }
 45074  
 45075      if (res) {
 45076        this.res = null
 45077        // Ensure all queued handlers are invoked before destroying res.
 45078        queueMicrotask(() => {
 45079          util.destroy(res, err)
 45080        })
 45081      }
 45082  
 45083      if (body) {
 45084        this.body = null
 45085        util.destroy(body, err)
 45086      }
 45087    }
 45088  }
 45089  
 45090  function request (opts, callback) {
 45091    if (callback === undefined) {
 45092      return new Promise((resolve, reject) => {
 45093        request.call(this, opts, (err, data) => {
 45094          return err ? reject(err) : resolve(data)
 45095        })
 45096      })
 45097    }
 45098  
 45099    try {
 45100      this.dispatch(opts, new RequestHandler(opts, callback))
 45101    } catch (err) {
 45102      if (typeof callback !== 'function') {
 45103        throw err
 45104      }
 45105      const opaque = opts && opts.opaque
 45106      queueMicrotask(() => callback(err, { opaque }))
 45107    }
 45108  }
 45109  
 45110  module.exports = request
 45111  module.exports.RequestHandler = RequestHandler
 45112  
 45113  
 45114  /***/ }),
 45115  
 45116  /***/ 75395:
 45117  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 45118  
 45119  "use strict";
 45120  
 45121  
 45122  const { finished, PassThrough } = __nccwpck_require__(12781)
 45123  const {
 45124    InvalidArgumentError,
 45125    InvalidReturnValueError,
 45126    RequestAbortedError
 45127  } = __nccwpck_require__(48045)
 45128  const util = __nccwpck_require__(83983)
 45129  const { getResolveErrorBodyCallback } = __nccwpck_require__(77474)
 45130  const { AsyncResource } = __nccwpck_require__(50852)
 45131  const { addSignal, removeSignal } = __nccwpck_require__(7032)
 45132  
 45133  class StreamHandler extends AsyncResource {
 45134    constructor (opts, factory, callback) {
 45135      if (!opts || typeof opts !== 'object') {
 45136        throw new InvalidArgumentError('invalid opts')
 45137      }
 45138  
 45139      const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts
 45140  
 45141      try {
 45142        if (typeof callback !== 'function') {
 45143          throw new InvalidArgumentError('invalid callback')
 45144        }
 45145  
 45146        if (typeof factory !== 'function') {
 45147          throw new InvalidArgumentError('invalid factory')
 45148        }
 45149  
 45150        if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {
 45151          throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')
 45152        }
 45153  
 45154        if (method === 'CONNECT') {
 45155          throw new InvalidArgumentError('invalid method')
 45156        }
 45157  
 45158        if (onInfo && typeof onInfo !== 'function') {
 45159          throw new InvalidArgumentError('invalid onInfo callback')
 45160        }
 45161  
 45162        super('UNDICI_STREAM')
 45163      } catch (err) {
 45164        if (util.isStream(body)) {
 45165          util.destroy(body.on('error', util.nop), err)
 45166        }
 45167        throw err
 45168      }
 45169  
 45170      this.responseHeaders = responseHeaders || null
 45171      this.opaque = opaque || null
 45172      this.factory = factory
 45173      this.callback = callback
 45174      this.res = null
 45175      this.abort = null
 45176      this.context = null
 45177      this.trailers = null
 45178      this.body = body
 45179      this.onInfo = onInfo || null
 45180      this.throwOnError = throwOnError || false
 45181  
 45182      if (util.isStream(body)) {
 45183        body.on('error', (err) => {
 45184          this.onError(err)
 45185        })
 45186      }
 45187  
 45188      addSignal(this, signal)
 45189    }
 45190  
 45191    onConnect (abort, context) {
 45192      if (!this.callback) {
 45193        throw new RequestAbortedError()
 45194      }
 45195  
 45196      this.abort = abort
 45197      this.context = context
 45198    }
 45199  
 45200    onHeaders (statusCode, rawHeaders, resume, statusMessage) {
 45201      const { factory, opaque, context, callback, responseHeaders } = this
 45202  
 45203      const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)
 45204  
 45205      if (statusCode < 200) {
 45206        if (this.onInfo) {
 45207          this.onInfo({ statusCode, headers })
 45208        }
 45209        return
 45210      }
 45211  
 45212      this.factory = null
 45213  
 45214      let res
 45215  
 45216      if (this.throwOnError && statusCode >= 400) {
 45217        const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers
 45218        const contentType = parsedHeaders['content-type']
 45219        res = new PassThrough()
 45220  
 45221        this.callback = null
 45222        this.runInAsyncScope(getResolveErrorBodyCallback, null,
 45223          { callback, body: res, contentType, statusCode, statusMessage, headers }
 45224        )
 45225      } else {
 45226        if (factory === null) {
 45227          return
 45228        }
 45229  
 45230        res = this.runInAsyncScope(factory, null, {
 45231          statusCode,
 45232          headers,
 45233          opaque,
 45234          context
 45235        })
 45236  
 45237        if (
 45238          !res ||
 45239          typeof res.write !== 'function' ||
 45240          typeof res.end !== 'function' ||
 45241          typeof res.on !== 'function'
 45242        ) {
 45243          throw new InvalidReturnValueError('expected Writable')
 45244        }
 45245  
 45246        // TODO: Avoid finished. It registers an unnecessary amount of listeners.
 45247        finished(res, { readable: false }, (err) => {
 45248          const { callback, res, opaque, trailers, abort } = this
 45249  
 45250          this.res = null
 45251          if (err || !res.readable) {
 45252            util.destroy(res, err)
 45253          }
 45254  
 45255          this.callback = null
 45256          this.runInAsyncScope(callback, null, err || null, { opaque, trailers })
 45257  
 45258          if (err) {
 45259            abort()
 45260          }
 45261        })
 45262      }
 45263  
 45264      res.on('drain', resume)
 45265  
 45266      this.res = res
 45267  
 45268      const needDrain = res.writableNeedDrain !== undefined
 45269        ? res.writableNeedDrain
 45270        : res._writableState && res._writableState.needDrain
 45271  
 45272      return needDrain !== true
 45273    }
 45274  
 45275    onData (chunk) {
 45276      const { res } = this
 45277  
 45278      return res ? res.write(chunk) : true
 45279    }
 45280  
 45281    onComplete (trailers) {
 45282      const { res } = this
 45283  
 45284      removeSignal(this)
 45285  
 45286      if (!res) {
 45287        return
 45288      }
 45289  
 45290      this.trailers = util.parseHeaders(trailers)
 45291  
 45292      res.end()
 45293    }
 45294  
 45295    onError (err) {
 45296      const { res, callback, opaque, body } = this
 45297  
 45298      removeSignal(this)
 45299  
 45300      this.factory = null
 45301  
 45302      if (res) {
 45303        this.res = null
 45304        util.destroy(res, err)
 45305      } else if (callback) {
 45306        this.callback = null
 45307        queueMicrotask(() => {
 45308          this.runInAsyncScope(callback, null, err, { opaque })
 45309        })
 45310      }
 45311  
 45312      if (body) {
 45313        this.body = null
 45314        util.destroy(body, err)
 45315      }
 45316    }
 45317  }
 45318  
 45319  function stream (opts, factory, callback) {
 45320    if (callback === undefined) {
 45321      return new Promise((resolve, reject) => {
 45322        stream.call(this, opts, factory, (err, data) => {
 45323          return err ? reject(err) : resolve(data)
 45324        })
 45325      })
 45326    }
 45327  
 45328    try {
 45329      this.dispatch(opts, new StreamHandler(opts, factory, callback))
 45330    } catch (err) {
 45331      if (typeof callback !== 'function') {
 45332        throw err
 45333      }
 45334      const opaque = opts && opts.opaque
 45335      queueMicrotask(() => callback(err, { opaque }))
 45336    }
 45337  }
 45338  
 45339  module.exports = stream
 45340  
 45341  
 45342  /***/ }),
 45343  
 45344  /***/ 36923:
 45345  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 45346  
 45347  "use strict";
 45348  
 45349  
 45350  const { InvalidArgumentError, RequestAbortedError, SocketError } = __nccwpck_require__(48045)
 45351  const { AsyncResource } = __nccwpck_require__(50852)
 45352  const util = __nccwpck_require__(83983)
 45353  const { addSignal, removeSignal } = __nccwpck_require__(7032)
 45354  const assert = __nccwpck_require__(39491)
 45355  
 45356  class UpgradeHandler extends AsyncResource {
 45357    constructor (opts, callback) {
 45358      if (!opts || typeof opts !== 'object') {
 45359        throw new InvalidArgumentError('invalid opts')
 45360      }
 45361  
 45362      if (typeof callback !== 'function') {
 45363        throw new InvalidArgumentError('invalid callback')
 45364      }
 45365  
 45366      const { signal, opaque, responseHeaders } = opts
 45367  
 45368      if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {
 45369        throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')
 45370      }
 45371  
 45372      super('UNDICI_UPGRADE')
 45373  
 45374      this.responseHeaders = responseHeaders || null
 45375      this.opaque = opaque || null
 45376      this.callback = callback
 45377      this.abort = null
 45378      this.context = null
 45379  
 45380      addSignal(this, signal)
 45381    }
 45382  
 45383    onConnect (abort, context) {
 45384      if (!this.callback) {
 45385        throw new RequestAbortedError()
 45386      }
 45387  
 45388      this.abort = abort
 45389      this.context = null
 45390    }
 45391  
 45392    onHeaders () {
 45393      throw new SocketError('bad upgrade', null)
 45394    }
 45395  
 45396    onUpgrade (statusCode, rawHeaders, socket) {
 45397      const { callback, opaque, context } = this
 45398  
 45399      assert.strictEqual(statusCode, 101)
 45400  
 45401      removeSignal(this)
 45402  
 45403      this.callback = null
 45404      const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)
 45405      this.runInAsyncScope(callback, null, null, {
 45406        headers,
 45407        socket,
 45408        opaque,
 45409        context
 45410      })
 45411    }
 45412  
 45413    onError (err) {
 45414      const { callback, opaque } = this
 45415  
 45416      removeSignal(this)
 45417  
 45418      if (callback) {
 45419        this.callback = null
 45420        queueMicrotask(() => {
 45421          this.runInAsyncScope(callback, null, err, { opaque })
 45422        })
 45423      }
 45424    }
 45425  }
 45426  
 45427  function upgrade (opts, callback) {
 45428    if (callback === undefined) {
 45429      return new Promise((resolve, reject) => {
 45430        upgrade.call(this, opts, (err, data) => {
 45431          return err ? reject(err) : resolve(data)
 45432        })
 45433      })
 45434    }
 45435  
 45436    try {
 45437      const upgradeHandler = new UpgradeHandler(opts, callback)
 45438      this.dispatch({
 45439        ...opts,
 45440        method: opts.method || 'GET',
 45441        upgrade: opts.protocol || 'Websocket'
 45442      }, upgradeHandler)
 45443    } catch (err) {
 45444      if (typeof callback !== 'function') {
 45445        throw err
 45446      }
 45447      const opaque = opts && opts.opaque
 45448      queueMicrotask(() => callback(err, { opaque }))
 45449    }
 45450  }
 45451  
 45452  module.exports = upgrade
 45453  
 45454  
 45455  /***/ }),
 45456  
 45457  /***/ 44059:
 45458  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 45459  
 45460  "use strict";
 45461  
 45462  
 45463  module.exports.request = __nccwpck_require__(55448)
 45464  module.exports.stream = __nccwpck_require__(75395)
 45465  module.exports.pipeline = __nccwpck_require__(28752)
 45466  module.exports.upgrade = __nccwpck_require__(36923)
 45467  module.exports.connect = __nccwpck_require__(29744)
 45468  
 45469  
 45470  /***/ }),
 45471  
 45472  /***/ 73858:
 45473  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 45474  
 45475  "use strict";
 45476  // Ported from https://github.com/nodejs/undici/pull/907
 45477  
 45478  
 45479  
 45480  const assert = __nccwpck_require__(39491)
 45481  const { Readable } = __nccwpck_require__(12781)
 45482  const { RequestAbortedError, NotSupportedError, InvalidArgumentError } = __nccwpck_require__(48045)
 45483  const util = __nccwpck_require__(83983)
 45484  const { ReadableStreamFrom, toUSVString } = __nccwpck_require__(83983)
 45485  
 45486  let Blob
 45487  
 45488  const kConsume = Symbol('kConsume')
 45489  const kReading = Symbol('kReading')
 45490  const kBody = Symbol('kBody')
 45491  const kAbort = Symbol('abort')
 45492  const kContentType = Symbol('kContentType')
 45493  
 45494  const noop = () => {}
 45495  
 45496  module.exports = class BodyReadable extends Readable {
 45497    constructor ({
 45498      resume,
 45499      abort,
 45500      contentType = '',
 45501      highWaterMark = 64 * 1024 // Same as nodejs fs streams.
 45502    }) {
 45503      super({
 45504        autoDestroy: true,
 45505        read: resume,
 45506        highWaterMark
 45507      })
 45508  
 45509      this._readableState.dataEmitted = false
 45510  
 45511      this[kAbort] = abort
 45512      this[kConsume] = null
 45513      this[kBody] = null
 45514      this[kContentType] = contentType
 45515  
 45516      // Is stream being consumed through Readable API?
 45517      // This is an optimization so that we avoid checking
 45518      // for 'data' and 'readable' listeners in the hot path
 45519      // inside push().
 45520      this[kReading] = false
 45521    }
 45522  
 45523    destroy (err) {
 45524      if (this.destroyed) {
 45525        // Node < 16
 45526        return this
 45527      }
 45528  
 45529      if (!err && !this._readableState.endEmitted) {
 45530        err = new RequestAbortedError()
 45531      }
 45532  
 45533      if (err) {
 45534        this[kAbort]()
 45535      }
 45536  
 45537      return super.destroy(err)
 45538    }
 45539  
 45540    emit (ev, ...args) {
 45541      if (ev === 'data') {
 45542        // Node < 16.7
 45543        this._readableState.dataEmitted = true
 45544      } else if (ev === 'error') {
 45545        // Node < 16
 45546        this._readableState.errorEmitted = true
 45547      }
 45548      return super.emit(ev, ...args)
 45549    }
 45550  
 45551    on (ev, ...args) {
 45552      if (ev === 'data' || ev === 'readable') {
 45553        this[kReading] = true
 45554      }
 45555      return super.on(ev, ...args)
 45556    }
 45557  
 45558    addListener (ev, ...args) {
 45559      return this.on(ev, ...args)
 45560    }
 45561  
 45562    off (ev, ...args) {
 45563      const ret = super.off(ev, ...args)
 45564      if (ev === 'data' || ev === 'readable') {
 45565        this[kReading] = (
 45566          this.listenerCount('data') > 0 ||
 45567          this.listenerCount('readable') > 0
 45568        )
 45569      }
 45570      return ret
 45571    }
 45572  
 45573    removeListener (ev, ...args) {
 45574      return this.off(ev, ...args)
 45575    }
 45576  
 45577    push (chunk) {
 45578      if (this[kConsume] && chunk !== null && this.readableLength === 0) {
 45579        consumePush(this[kConsume], chunk)
 45580        return this[kReading] ? super.push(chunk) : true
 45581      }
 45582      return super.push(chunk)
 45583    }
 45584  
 45585    // https://fetch.spec.whatwg.org/#dom-body-text
 45586    async text () {
 45587      return consume(this, 'text')
 45588    }
 45589  
 45590    // https://fetch.spec.whatwg.org/#dom-body-json
 45591    async json () {
 45592      return consume(this, 'json')
 45593    }
 45594  
 45595    // https://fetch.spec.whatwg.org/#dom-body-blob
 45596    async blob () {
 45597      return consume(this, 'blob')
 45598    }
 45599  
 45600    // https://fetch.spec.whatwg.org/#dom-body-arraybuffer
 45601    async arrayBuffer () {
 45602      return consume(this, 'arrayBuffer')
 45603    }
 45604  
 45605    // https://fetch.spec.whatwg.org/#dom-body-formdata
 45606    async formData () {
 45607      // TODO: Implement.
 45608      throw new NotSupportedError()
 45609    }
 45610  
 45611    // https://fetch.spec.whatwg.org/#dom-body-bodyused
 45612    get bodyUsed () {
 45613      return util.isDisturbed(this)
 45614    }
 45615  
 45616    // https://fetch.spec.whatwg.org/#dom-body-body
 45617    get body () {
 45618      if (!this[kBody]) {
 45619        this[kBody] = ReadableStreamFrom(this)
 45620        if (this[kConsume]) {
 45621          // TODO: Is this the best way to force a lock?
 45622          this[kBody].getReader() // Ensure stream is locked.
 45623          assert(this[kBody].locked)
 45624        }
 45625      }
 45626      return this[kBody]
 45627    }
 45628  
 45629    dump (opts) {
 45630      let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144
 45631      const signal = opts && opts.signal
 45632  
 45633      if (signal) {
 45634        try {
 45635          if (typeof signal !== 'object' || !('aborted' in signal)) {
 45636            throw new InvalidArgumentError('signal must be an AbortSignal')
 45637          }
 45638          util.throwIfAborted(signal)
 45639        } catch (err) {
 45640          return Promise.reject(err)
 45641        }
 45642      }
 45643  
 45644      if (this.closed) {
 45645        return Promise.resolve(null)
 45646      }
 45647  
 45648      return new Promise((resolve, reject) => {
 45649        const signalListenerCleanup = signal
 45650          ? util.addAbortListener(signal, () => {
 45651            this.destroy()
 45652          })
 45653          : noop
 45654  
 45655        this
 45656          .on('close', function () {
 45657            signalListenerCleanup()
 45658            if (signal && signal.aborted) {
 45659              reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))
 45660            } else {
 45661              resolve(null)
 45662            }
 45663          })
 45664          .on('error', noop)
 45665          .on('data', function (chunk) {
 45666            limit -= chunk.length
 45667            if (limit <= 0) {
 45668              this.destroy()
 45669            }
 45670          })
 45671          .resume()
 45672      })
 45673    }
 45674  }
 45675  
 45676  // https://streams.spec.whatwg.org/#readablestream-locked
 45677  function isLocked (self) {
 45678    // Consume is an implicit lock.
 45679    return (self[kBody] && self[kBody].locked === true) || self[kConsume]
 45680  }
 45681  
 45682  // https://fetch.spec.whatwg.org/#body-unusable
 45683  function isUnusable (self) {
 45684    return util.isDisturbed(self) || isLocked(self)
 45685  }
 45686  
 45687  async function consume (stream, type) {
 45688    if (isUnusable(stream)) {
 45689      throw new TypeError('unusable')
 45690    }
 45691  
 45692    assert(!stream[kConsume])
 45693  
 45694    return new Promise((resolve, reject) => {
 45695      stream[kConsume] = {
 45696        type,
 45697        stream,
 45698        resolve,
 45699        reject,
 45700        length: 0,
 45701        body: []
 45702      }
 45703  
 45704      stream
 45705        .on('error', function (err) {
 45706          consumeFinish(this[kConsume], err)
 45707        })
 45708        .on('close', function () {
 45709          if (this[kConsume].body !== null) {
 45710            consumeFinish(this[kConsume], new RequestAbortedError())
 45711          }
 45712        })
 45713  
 45714      process.nextTick(consumeStart, stream[kConsume])
 45715    })
 45716  }
 45717  
 45718  function consumeStart (consume) {
 45719    if (consume.body === null) {
 45720      return
 45721    }
 45722  
 45723    const { _readableState: state } = consume.stream
 45724  
 45725    for (const chunk of state.buffer) {
 45726      consumePush(consume, chunk)
 45727    }
 45728  
 45729    if (state.endEmitted) {
 45730      consumeEnd(this[kConsume])
 45731    } else {
 45732      consume.stream.on('end', function () {
 45733        consumeEnd(this[kConsume])
 45734      })
 45735    }
 45736  
 45737    consume.stream.resume()
 45738  
 45739    while (consume.stream.read() != null) {
 45740      // Loop
 45741    }
 45742  }
 45743  
 45744  function consumeEnd (consume) {
 45745    const { type, body, resolve, stream, length } = consume
 45746  
 45747    try {
 45748      if (type === 'text') {
 45749        resolve(toUSVString(Buffer.concat(body)))
 45750      } else if (type === 'json') {
 45751        resolve(JSON.parse(Buffer.concat(body)))
 45752      } else if (type === 'arrayBuffer') {
 45753        const dst = new Uint8Array(length)
 45754  
 45755        let pos = 0
 45756        for (const buf of body) {
 45757          dst.set(buf, pos)
 45758          pos += buf.byteLength
 45759        }
 45760  
 45761        resolve(dst.buffer)
 45762      } else if (type === 'blob') {
 45763        if (!Blob) {
 45764          Blob = (__nccwpck_require__(14300).Blob)
 45765        }
 45766        resolve(new Blob(body, { type: stream[kContentType] }))
 45767      }
 45768  
 45769      consumeFinish(consume)
 45770    } catch (err) {
 45771      stream.destroy(err)
 45772    }
 45773  }
 45774  
 45775  function consumePush (consume, chunk) {
 45776    consume.length += chunk.length
 45777    consume.body.push(chunk)
 45778  }
 45779  
 45780  function consumeFinish (consume, err) {
 45781    if (consume.body === null) {
 45782      return
 45783    }
 45784  
 45785    if (err) {
 45786      consume.reject(err)
 45787    } else {
 45788      consume.resolve()
 45789    }
 45790  
 45791    consume.type = null
 45792    consume.stream = null
 45793    consume.resolve = null
 45794    consume.reject = null
 45795    consume.length = 0
 45796    consume.body = null
 45797  }
 45798  
 45799  
 45800  /***/ }),
 45801  
 45802  /***/ 77474:
 45803  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 45804  
 45805  const assert = __nccwpck_require__(39491)
 45806  const {
 45807    ResponseStatusCodeError
 45808  } = __nccwpck_require__(48045)
 45809  const { toUSVString } = __nccwpck_require__(83983)
 45810  
 45811  async function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) {
 45812    assert(body)
 45813  
 45814    let chunks = []
 45815    let limit = 0
 45816  
 45817    for await (const chunk of body) {
 45818      chunks.push(chunk)
 45819      limit += chunk.length
 45820      if (limit > 128 * 1024) {
 45821        chunks = null
 45822        break
 45823      }
 45824    }
 45825  
 45826    if (statusCode === 204 || !contentType || !chunks) {
 45827      process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))
 45828      return
 45829    }
 45830  
 45831    try {
 45832      if (contentType.startsWith('application/json')) {
 45833        const payload = JSON.parse(toUSVString(Buffer.concat(chunks)))
 45834        process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))
 45835        return
 45836      }
 45837  
 45838      if (contentType.startsWith('text/')) {
 45839        const payload = toUSVString(Buffer.concat(chunks))
 45840        process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))
 45841        return
 45842      }
 45843    } catch (err) {
 45844      // Process in a fallback if error
 45845    }
 45846  
 45847    process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))
 45848  }
 45849  
 45850  module.exports = { getResolveErrorBodyCallback }
 45851  
 45852  
 45853  /***/ }),
 45854  
 45855  /***/ 37931:
 45856  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 45857  
 45858  "use strict";
 45859  
 45860  
 45861  const {
 45862    BalancedPoolMissingUpstreamError,
 45863    InvalidArgumentError
 45864  } = __nccwpck_require__(48045)
 45865  const {
 45866    PoolBase,
 45867    kClients,
 45868    kNeedDrain,
 45869    kAddClient,
 45870    kRemoveClient,
 45871    kGetDispatcher
 45872  } = __nccwpck_require__(73198)
 45873  const Pool = __nccwpck_require__(4634)
 45874  const { kUrl, kInterceptors } = __nccwpck_require__(72785)
 45875  const { parseOrigin } = __nccwpck_require__(83983)
 45876  const kFactory = Symbol('factory')
 45877  
 45878  const kOptions = Symbol('options')
 45879  const kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor')
 45880  const kCurrentWeight = Symbol('kCurrentWeight')
 45881  const kIndex = Symbol('kIndex')
 45882  const kWeight = Symbol('kWeight')
 45883  const kMaxWeightPerServer = Symbol('kMaxWeightPerServer')
 45884  const kErrorPenalty = Symbol('kErrorPenalty')
 45885  
 45886  function getGreatestCommonDivisor (a, b) {
 45887    if (b === 0) return a
 45888    return getGreatestCommonDivisor(b, a % b)
 45889  }
 45890  
 45891  function defaultFactory (origin, opts) {
 45892    return new Pool(origin, opts)
 45893  }
 45894  
 45895  class BalancedPool extends PoolBase {
 45896    constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) {
 45897      super()
 45898  
 45899      this[kOptions] = opts
 45900      this[kIndex] = -1
 45901      this[kCurrentWeight] = 0
 45902  
 45903      this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100
 45904      this[kErrorPenalty] = this[kOptions].errorPenalty || 15
 45905  
 45906      if (!Array.isArray(upstreams)) {
 45907        upstreams = [upstreams]
 45908      }
 45909  
 45910      if (typeof factory !== 'function') {
 45911        throw new InvalidArgumentError('factory must be a function.')
 45912      }
 45913  
 45914      this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool)
 45915        ? opts.interceptors.BalancedPool
 45916        : []
 45917      this[kFactory] = factory
 45918  
 45919      for (const upstream of upstreams) {
 45920        this.addUpstream(upstream)
 45921      }
 45922      this._updateBalancedPoolStats()
 45923    }
 45924  
 45925    addUpstream (upstream) {
 45926      const upstreamOrigin = parseOrigin(upstream).origin
 45927  
 45928      if (this[kClients].find((pool) => (
 45929        pool[kUrl].origin === upstreamOrigin &&
 45930        pool.closed !== true &&
 45931        pool.destroyed !== true
 45932      ))) {
 45933        return this
 45934      }
 45935      const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))
 45936  
 45937      this[kAddClient](pool)
 45938      pool.on('connect', () => {
 45939        pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty])
 45940      })
 45941  
 45942      pool.on('connectionError', () => {
 45943        pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])
 45944        this._updateBalancedPoolStats()
 45945      })
 45946  
 45947      pool.on('disconnect', (...args) => {
 45948        const err = args[2]
 45949        if (err && err.code === 'UND_ERR_SOCKET') {
 45950          // decrease the weight of the pool.
 45951          pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])
 45952          this._updateBalancedPoolStats()
 45953        }
 45954      })
 45955  
 45956      for (const client of this[kClients]) {
 45957        client[kWeight] = this[kMaxWeightPerServer]
 45958      }
 45959  
 45960      this._updateBalancedPoolStats()
 45961  
 45962      return this
 45963    }
 45964  
 45965    _updateBalancedPoolStats () {
 45966      this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0)
 45967    }
 45968  
 45969    removeUpstream (upstream) {
 45970      const upstreamOrigin = parseOrigin(upstream).origin
 45971  
 45972      const pool = this[kClients].find((pool) => (
 45973        pool[kUrl].origin === upstreamOrigin &&
 45974        pool.closed !== true &&
 45975        pool.destroyed !== true
 45976      ))
 45977  
 45978      if (pool) {
 45979        this[kRemoveClient](pool)
 45980      }
 45981  
 45982      return this
 45983    }
 45984  
 45985    get upstreams () {
 45986      return this[kClients]
 45987        .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true)
 45988        .map((p) => p[kUrl].origin)
 45989    }
 45990  
 45991    [kGetDispatcher] () {
 45992      // We validate that pools is greater than 0,
 45993      // otherwise we would have to wait until an upstream
 45994      // is added, which might never happen.
 45995      if (this[kClients].length === 0) {
 45996        throw new BalancedPoolMissingUpstreamError()
 45997      }
 45998  
 45999      const dispatcher = this[kClients].find(dispatcher => (
 46000        !dispatcher[kNeedDrain] &&
 46001        dispatcher.closed !== true &&
 46002        dispatcher.destroyed !== true
 46003      ))
 46004  
 46005      if (!dispatcher) {
 46006        return
 46007      }
 46008  
 46009      const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true)
 46010  
 46011      if (allClientsBusy) {
 46012        return
 46013      }
 46014  
 46015      let counter = 0
 46016  
 46017      let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain])
 46018  
 46019      while (counter++ < this[kClients].length) {
 46020        this[kIndex] = (this[kIndex] + 1) % this[kClients].length
 46021        const pool = this[kClients][this[kIndex]]
 46022  
 46023        // find pool index with the largest weight
 46024        if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) {
 46025          maxWeightIndex = this[kIndex]
 46026        }
 46027  
 46028        // decrease the current weight every `this[kClients].length`.
 46029        if (this[kIndex] === 0) {
 46030          // Set the current weight to the next lower weight.
 46031          this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]
 46032  
 46033          if (this[kCurrentWeight] <= 0) {
 46034            this[kCurrentWeight] = this[kMaxWeightPerServer]
 46035          }
 46036        }
 46037        if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) {
 46038          return pool
 46039        }
 46040      }
 46041  
 46042      this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]
 46043      this[kIndex] = maxWeightIndex
 46044      return this[kClients][maxWeightIndex]
 46045    }
 46046  }
 46047  
 46048  module.exports = BalancedPool
 46049  
 46050  
 46051  /***/ }),
 46052  
 46053  /***/ 66101:
 46054  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 46055  
 46056  "use strict";
 46057  
 46058  
 46059  const { kConstruct } = __nccwpck_require__(29174)
 46060  const { urlEquals, fieldValues: getFieldValues } = __nccwpck_require__(82396)
 46061  const { kEnumerableProperty, isDisturbed } = __nccwpck_require__(83983)
 46062  const { kHeadersList } = __nccwpck_require__(72785)
 46063  const { webidl } = __nccwpck_require__(21744)
 46064  const { Response, cloneResponse } = __nccwpck_require__(27823)
 46065  const { Request } = __nccwpck_require__(48359)
 46066  const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(15861)
 46067  const { fetching } = __nccwpck_require__(74881)
 46068  const { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = __nccwpck_require__(52538)
 46069  const assert = __nccwpck_require__(39491)
 46070  const { getGlobalDispatcher } = __nccwpck_require__(21892)
 46071  
 46072  /**
 46073   * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation
 46074   * @typedef {Object} CacheBatchOperation
 46075   * @property {'delete' | 'put'} type
 46076   * @property {any} request
 46077   * @property {any} response
 46078   * @property {import('../../types/cache').CacheQueryOptions} options
 46079   */
 46080  
 46081  /**
 46082   * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list
 46083   * @typedef {[any, any][]} requestResponseList
 46084   */
 46085  
 46086  class Cache {
 46087    /**
 46088     * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list
 46089     * @type {requestResponseList}
 46090     */
 46091    #relevantRequestResponseList
 46092  
 46093    constructor () {
 46094      if (arguments[0] !== kConstruct) {
 46095        webidl.illegalConstructor()
 46096      }
 46097  
 46098      this.#relevantRequestResponseList = arguments[1]
 46099    }
 46100  
 46101    async match (request, options = {}) {
 46102      webidl.brandCheck(this, Cache)
 46103      webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' })
 46104  
 46105      request = webidl.converters.RequestInfo(request)
 46106      options = webidl.converters.CacheQueryOptions(options)
 46107  
 46108      const p = await this.matchAll(request, options)
 46109  
 46110      if (p.length === 0) {
 46111        return
 46112      }
 46113  
 46114      return p[0]
 46115    }
 46116  
 46117    async matchAll (request = undefined, options = {}) {
 46118      webidl.brandCheck(this, Cache)
 46119  
 46120      if (request !== undefined) request = webidl.converters.RequestInfo(request)
 46121      options = webidl.converters.CacheQueryOptions(options)
 46122  
 46123      // 1.
 46124      let r = null
 46125  
 46126      // 2.
 46127      if (request !== undefined) {
 46128        if (request instanceof Request) {
 46129          // 2.1.1
 46130          r = request[kState]
 46131  
 46132          // 2.1.2
 46133          if (r.method !== 'GET' && !options.ignoreMethod) {
 46134            return []
 46135          }
 46136        } else if (typeof request === 'string') {
 46137          // 2.2.1
 46138          r = new Request(request)[kState]
 46139        }
 46140      }
 46141  
 46142      // 5.
 46143      // 5.1
 46144      const responses = []
 46145  
 46146      // 5.2
 46147      if (request === undefined) {
 46148        // 5.2.1
 46149        for (const requestResponse of this.#relevantRequestResponseList) {
 46150          responses.push(requestResponse[1])
 46151        }
 46152      } else { // 5.3
 46153        // 5.3.1
 46154        const requestResponses = this.#queryCache(r, options)
 46155  
 46156        // 5.3.2
 46157        for (const requestResponse of requestResponses) {
 46158          responses.push(requestResponse[1])
 46159        }
 46160      }
 46161  
 46162      // 5.4
 46163      // We don't implement CORs so we don't need to loop over the responses, yay!
 46164  
 46165      // 5.5.1
 46166      const responseList = []
 46167  
 46168      // 5.5.2
 46169      for (const response of responses) {
 46170        // 5.5.2.1
 46171        const responseObject = new Response(response.body?.source ?? null)
 46172        const body = responseObject[kState].body
 46173        responseObject[kState] = response
 46174        responseObject[kState].body = body
 46175        responseObject[kHeaders][kHeadersList] = response.headersList
 46176        responseObject[kHeaders][kGuard] = 'immutable'
 46177  
 46178        responseList.push(responseObject)
 46179      }
 46180  
 46181      // 6.
 46182      return Object.freeze(responseList)
 46183    }
 46184  
 46185    async add (request) {
 46186      webidl.brandCheck(this, Cache)
 46187      webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' })
 46188  
 46189      request = webidl.converters.RequestInfo(request)
 46190  
 46191      // 1.
 46192      const requests = [request]
 46193  
 46194      // 2.
 46195      const responseArrayPromise = this.addAll(requests)
 46196  
 46197      // 3.
 46198      return await responseArrayPromise
 46199    }
 46200  
 46201    async addAll (requests) {
 46202      webidl.brandCheck(this, Cache)
 46203      webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' })
 46204  
 46205      requests = webidl.converters['sequence<RequestInfo>'](requests)
 46206  
 46207      // 1.
 46208      const responsePromises = []
 46209  
 46210      // 2.
 46211      const requestList = []
 46212  
 46213      // 3.
 46214      for (const request of requests) {
 46215        if (typeof request === 'string') {
 46216          continue
 46217        }
 46218  
 46219        // 3.1
 46220        const r = request[kState]
 46221  
 46222        // 3.2
 46223        if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') {
 46224          throw webidl.errors.exception({
 46225            header: 'Cache.addAll',
 46226            message: 'Expected http/s scheme when method is not GET.'
 46227          })
 46228        }
 46229      }
 46230  
 46231      // 4.
 46232      /** @type {ReturnType<typeof fetching>[]} */
 46233      const fetchControllers = []
 46234  
 46235      // 5.
 46236      for (const request of requests) {
 46237        // 5.1
 46238        const r = new Request(request)[kState]
 46239  
 46240        // 5.2
 46241        if (!urlIsHttpHttpsScheme(r.url)) {
 46242          throw webidl.errors.exception({
 46243            header: 'Cache.addAll',
 46244            message: 'Expected http/s scheme.'
 46245          })
 46246        }
 46247  
 46248        // 5.4
 46249        r.initiator = 'fetch'
 46250        r.destination = 'subresource'
 46251  
 46252        // 5.5
 46253        requestList.push(r)
 46254  
 46255        // 5.6
 46256        const responsePromise = createDeferredPromise()
 46257  
 46258        // 5.7
 46259        fetchControllers.push(fetching({
 46260          request: r,
 46261          dispatcher: getGlobalDispatcher(),
 46262          processResponse (response) {
 46263            // 1.
 46264            if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) {
 46265              responsePromise.reject(webidl.errors.exception({
 46266                header: 'Cache.addAll',
 46267                message: 'Received an invalid status code or the request failed.'
 46268              }))
 46269            } else if (response.headersList.contains('vary')) { // 2.
 46270              // 2.1
 46271              const fieldValues = getFieldValues(response.headersList.get('vary'))
 46272  
 46273              // 2.2
 46274              for (const fieldValue of fieldValues) {
 46275                // 2.2.1
 46276                if (fieldValue === '*') {
 46277                  responsePromise.reject(webidl.errors.exception({
 46278                    header: 'Cache.addAll',
 46279                    message: 'invalid vary field value'
 46280                  }))
 46281  
 46282                  for (const controller of fetchControllers) {
 46283                    controller.abort()
 46284                  }
 46285  
 46286                  return
 46287                }
 46288              }
 46289            }
 46290          },
 46291          processResponseEndOfBody (response) {
 46292            // 1.
 46293            if (response.aborted) {
 46294              responsePromise.reject(new DOMException('aborted', 'AbortError'))
 46295              return
 46296            }
 46297  
 46298            // 2.
 46299            responsePromise.resolve(response)
 46300          }
 46301        }))
 46302  
 46303        // 5.8
 46304        responsePromises.push(responsePromise.promise)
 46305      }
 46306  
 46307      // 6.
 46308      const p = Promise.all(responsePromises)
 46309  
 46310      // 7.
 46311      const responses = await p
 46312  
 46313      // 7.1
 46314      const operations = []
 46315  
 46316      // 7.2
 46317      let index = 0
 46318  
 46319      // 7.3
 46320      for (const response of responses) {
 46321        // 7.3.1
 46322        /** @type {CacheBatchOperation} */
 46323        const operation = {
 46324          type: 'put', // 7.3.2
 46325          request: requestList[index], // 7.3.3
 46326          response // 7.3.4
 46327        }
 46328  
 46329        operations.push(operation) // 7.3.5
 46330  
 46331        index++ // 7.3.6
 46332      }
 46333  
 46334      // 7.5
 46335      const cacheJobPromise = createDeferredPromise()
 46336  
 46337      // 7.6.1
 46338      let errorData = null
 46339  
 46340      // 7.6.2
 46341      try {
 46342        this.#batchCacheOperations(operations)
 46343      } catch (e) {
 46344        errorData = e
 46345      }
 46346  
 46347      // 7.6.3
 46348      queueMicrotask(() => {
 46349        // 7.6.3.1
 46350        if (errorData === null) {
 46351          cacheJobPromise.resolve(undefined)
 46352        } else {
 46353          // 7.6.3.2
 46354          cacheJobPromise.reject(errorData)
 46355        }
 46356      })
 46357  
 46358      // 7.7
 46359      return cacheJobPromise.promise
 46360    }
 46361  
 46362    async put (request, response) {
 46363      webidl.brandCheck(this, Cache)
 46364      webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' })
 46365  
 46366      request = webidl.converters.RequestInfo(request)
 46367      response = webidl.converters.Response(response)
 46368  
 46369      // 1.
 46370      let innerRequest = null
 46371  
 46372      // 2.
 46373      if (request instanceof Request) {
 46374        innerRequest = request[kState]
 46375      } else { // 3.
 46376        innerRequest = new Request(request)[kState]
 46377      }
 46378  
 46379      // 4.
 46380      if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') {
 46381        throw webidl.errors.exception({
 46382          header: 'Cache.put',
 46383          message: 'Expected an http/s scheme when method is not GET'
 46384        })
 46385      }
 46386  
 46387      // 5.
 46388      const innerResponse = response[kState]
 46389  
 46390      // 6.
 46391      if (innerResponse.status === 206) {
 46392        throw webidl.errors.exception({
 46393          header: 'Cache.put',
 46394          message: 'Got 206 status'
 46395        })
 46396      }
 46397  
 46398      // 7.
 46399      if (innerResponse.headersList.contains('vary')) {
 46400        // 7.1.
 46401        const fieldValues = getFieldValues(innerResponse.headersList.get('vary'))
 46402  
 46403        // 7.2.
 46404        for (const fieldValue of fieldValues) {
 46405          // 7.2.1
 46406          if (fieldValue === '*') {
 46407            throw webidl.errors.exception({
 46408              header: 'Cache.put',
 46409              message: 'Got * vary field value'
 46410            })
 46411          }
 46412        }
 46413      }
 46414  
 46415      // 8.
 46416      if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) {
 46417        throw webidl.errors.exception({
 46418          header: 'Cache.put',
 46419          message: 'Response body is locked or disturbed'
 46420        })
 46421      }
 46422  
 46423      // 9.
 46424      const clonedResponse = cloneResponse(innerResponse)
 46425  
 46426      // 10.
 46427      const bodyReadPromise = createDeferredPromise()
 46428  
 46429      // 11.
 46430      if (innerResponse.body != null) {
 46431        // 11.1
 46432        const stream = innerResponse.body.stream
 46433  
 46434        // 11.2
 46435        const reader = stream.getReader()
 46436  
 46437        // 11.3
 46438        readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject)
 46439      } else {
 46440        bodyReadPromise.resolve(undefined)
 46441      }
 46442  
 46443      // 12.
 46444      /** @type {CacheBatchOperation[]} */
 46445      const operations = []
 46446  
 46447      // 13.
 46448      /** @type {CacheBatchOperation} */
 46449      const operation = {
 46450        type: 'put', // 14.
 46451        request: innerRequest, // 15.
 46452        response: clonedResponse // 16.
 46453      }
 46454  
 46455      // 17.
 46456      operations.push(operation)
 46457  
 46458      // 19.
 46459      const bytes = await bodyReadPromise.promise
 46460  
 46461      if (clonedResponse.body != null) {
 46462        clonedResponse.body.source = bytes
 46463      }
 46464  
 46465      // 19.1
 46466      const cacheJobPromise = createDeferredPromise()
 46467  
 46468      // 19.2.1
 46469      let errorData = null
 46470  
 46471      // 19.2.2
 46472      try {
 46473        this.#batchCacheOperations(operations)
 46474      } catch (e) {
 46475        errorData = e
 46476      }
 46477  
 46478      // 19.2.3
 46479      queueMicrotask(() => {
 46480        // 19.2.3.1
 46481        if (errorData === null) {
 46482          cacheJobPromise.resolve()
 46483        } else { // 19.2.3.2
 46484          cacheJobPromise.reject(errorData)
 46485        }
 46486      })
 46487  
 46488      return cacheJobPromise.promise
 46489    }
 46490  
 46491    async delete (request, options = {}) {
 46492      webidl.brandCheck(this, Cache)
 46493      webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' })
 46494  
 46495      request = webidl.converters.RequestInfo(request)
 46496      options = webidl.converters.CacheQueryOptions(options)
 46497  
 46498      /**
 46499       * @type {Request}
 46500       */
 46501      let r = null
 46502  
 46503      if (request instanceof Request) {
 46504        r = request[kState]
 46505  
 46506        if (r.method !== 'GET' && !options.ignoreMethod) {
 46507          return false
 46508        }
 46509      } else {
 46510        assert(typeof request === 'string')
 46511  
 46512        r = new Request(request)[kState]
 46513      }
 46514  
 46515      /** @type {CacheBatchOperation[]} */
 46516      const operations = []
 46517  
 46518      /** @type {CacheBatchOperation} */
 46519      const operation = {
 46520        type: 'delete',
 46521        request: r,
 46522        options
 46523      }
 46524  
 46525      operations.push(operation)
 46526  
 46527      const cacheJobPromise = createDeferredPromise()
 46528  
 46529      let errorData = null
 46530      let requestResponses
 46531  
 46532      try {
 46533        requestResponses = this.#batchCacheOperations(operations)
 46534      } catch (e) {
 46535        errorData = e
 46536      }
 46537  
 46538      queueMicrotask(() => {
 46539        if (errorData === null) {
 46540          cacheJobPromise.resolve(!!requestResponses?.length)
 46541        } else {
 46542          cacheJobPromise.reject(errorData)
 46543        }
 46544      })
 46545  
 46546      return cacheJobPromise.promise
 46547    }
 46548  
 46549    /**
 46550     * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys
 46551     * @param {any} request
 46552     * @param {import('../../types/cache').CacheQueryOptions} options
 46553     * @returns {readonly Request[]}
 46554     */
 46555    async keys (request = undefined, options = {}) {
 46556      webidl.brandCheck(this, Cache)
 46557  
 46558      if (request !== undefined) request = webidl.converters.RequestInfo(request)
 46559      options = webidl.converters.CacheQueryOptions(options)
 46560  
 46561      // 1.
 46562      let r = null
 46563  
 46564      // 2.
 46565      if (request !== undefined) {
 46566        // 2.1
 46567        if (request instanceof Request) {
 46568          // 2.1.1
 46569          r = request[kState]
 46570  
 46571          // 2.1.2
 46572          if (r.method !== 'GET' && !options.ignoreMethod) {
 46573            return []
 46574          }
 46575        } else if (typeof request === 'string') { // 2.2
 46576          r = new Request(request)[kState]
 46577        }
 46578      }
 46579  
 46580      // 4.
 46581      const promise = createDeferredPromise()
 46582  
 46583      // 5.
 46584      // 5.1
 46585      const requests = []
 46586  
 46587      // 5.2
 46588      if (request === undefined) {
 46589        // 5.2.1
 46590        for (const requestResponse of this.#relevantRequestResponseList) {
 46591          // 5.2.1.1
 46592          requests.push(requestResponse[0])
 46593        }
 46594      } else { // 5.3
 46595        // 5.3.1
 46596        const requestResponses = this.#queryCache(r, options)
 46597  
 46598        // 5.3.2
 46599        for (const requestResponse of requestResponses) {
 46600          // 5.3.2.1
 46601          requests.push(requestResponse[0])
 46602        }
 46603      }
 46604  
 46605      // 5.4
 46606      queueMicrotask(() => {
 46607        // 5.4.1
 46608        const requestList = []
 46609  
 46610        // 5.4.2
 46611        for (const request of requests) {
 46612          const requestObject = new Request('https://a')
 46613          requestObject[kState] = request
 46614          requestObject[kHeaders][kHeadersList] = request.headersList
 46615          requestObject[kHeaders][kGuard] = 'immutable'
 46616          requestObject[kRealm] = request.client
 46617  
 46618          // 5.4.2.1
 46619          requestList.push(requestObject)
 46620        }
 46621  
 46622        // 5.4.3
 46623        promise.resolve(Object.freeze(requestList))
 46624      })
 46625  
 46626      return promise.promise
 46627    }
 46628  
 46629    /**
 46630     * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm
 46631     * @param {CacheBatchOperation[]} operations
 46632     * @returns {requestResponseList}
 46633     */
 46634    #batchCacheOperations (operations) {
 46635      // 1.
 46636      const cache = this.#relevantRequestResponseList
 46637  
 46638      // 2.
 46639      const backupCache = [...cache]
 46640  
 46641      // 3.
 46642      const addedItems = []
 46643  
 46644      // 4.1
 46645      const resultList = []
 46646  
 46647      try {
 46648        // 4.2
 46649        for (const operation of operations) {
 46650          // 4.2.1
 46651          if (operation.type !== 'delete' && operation.type !== 'put') {
 46652            throw webidl.errors.exception({
 46653              header: 'Cache.#batchCacheOperations',
 46654              message: 'operation type does not match "delete" or "put"'
 46655            })
 46656          }
 46657  
 46658          // 4.2.2
 46659          if (operation.type === 'delete' && operation.response != null) {
 46660            throw webidl.errors.exception({
 46661              header: 'Cache.#batchCacheOperations',
 46662              message: 'delete operation should not have an associated response'
 46663            })
 46664          }
 46665  
 46666          // 4.2.3
 46667          if (this.#queryCache(operation.request, operation.options, addedItems).length) {
 46668            throw new DOMException('???', 'InvalidStateError')
 46669          }
 46670  
 46671          // 4.2.4
 46672          let requestResponses
 46673  
 46674          // 4.2.5
 46675          if (operation.type === 'delete') {
 46676            // 4.2.5.1
 46677            requestResponses = this.#queryCache(operation.request, operation.options)
 46678  
 46679            // TODO: the spec is wrong, this is needed to pass WPTs
 46680            if (requestResponses.length === 0) {
 46681              return []
 46682            }
 46683  
 46684            // 4.2.5.2
 46685            for (const requestResponse of requestResponses) {
 46686              const idx = cache.indexOf(requestResponse)
 46687              assert(idx !== -1)
 46688  
 46689              // 4.2.5.2.1
 46690              cache.splice(idx, 1)
 46691            }
 46692          } else if (operation.type === 'put') { // 4.2.6
 46693            // 4.2.6.1
 46694            if (operation.response == null) {
 46695              throw webidl.errors.exception({
 46696                header: 'Cache.#batchCacheOperations',
 46697                message: 'put operation should have an associated response'
 46698              })
 46699            }
 46700  
 46701            // 4.2.6.2
 46702            const r = operation.request
 46703  
 46704            // 4.2.6.3
 46705            if (!urlIsHttpHttpsScheme(r.url)) {
 46706              throw webidl.errors.exception({
 46707                header: 'Cache.#batchCacheOperations',
 46708                message: 'expected http or https scheme'
 46709              })
 46710            }
 46711  
 46712            // 4.2.6.4
 46713            if (r.method !== 'GET') {
 46714              throw webidl.errors.exception({
 46715                header: 'Cache.#batchCacheOperations',
 46716                message: 'not get method'
 46717              })
 46718            }
 46719  
 46720            // 4.2.6.5
 46721            if (operation.options != null) {
 46722              throw webidl.errors.exception({
 46723                header: 'Cache.#batchCacheOperations',
 46724                message: 'options must not be defined'
 46725              })
 46726            }
 46727  
 46728            // 4.2.6.6
 46729            requestResponses = this.#queryCache(operation.request)
 46730  
 46731            // 4.2.6.7
 46732            for (const requestResponse of requestResponses) {
 46733              const idx = cache.indexOf(requestResponse)
 46734              assert(idx !== -1)
 46735  
 46736              // 4.2.6.7.1
 46737              cache.splice(idx, 1)
 46738            }
 46739  
 46740            // 4.2.6.8
 46741            cache.push([operation.request, operation.response])
 46742  
 46743            // 4.2.6.10
 46744            addedItems.push([operation.request, operation.response])
 46745          }
 46746  
 46747          // 4.2.7
 46748          resultList.push([operation.request, operation.response])
 46749        }
 46750  
 46751        // 4.3
 46752        return resultList
 46753      } catch (e) { // 5.
 46754        // 5.1
 46755        this.#relevantRequestResponseList.length = 0
 46756  
 46757        // 5.2
 46758        this.#relevantRequestResponseList = backupCache
 46759  
 46760        // 5.3
 46761        throw e
 46762      }
 46763    }
 46764  
 46765    /**
 46766     * @see https://w3c.github.io/ServiceWorker/#query-cache
 46767     * @param {any} requestQuery
 46768     * @param {import('../../types/cache').CacheQueryOptions} options
 46769     * @param {requestResponseList} targetStorage
 46770     * @returns {requestResponseList}
 46771     */
 46772    #queryCache (requestQuery, options, targetStorage) {
 46773      /** @type {requestResponseList} */
 46774      const resultList = []
 46775  
 46776      const storage = targetStorage ?? this.#relevantRequestResponseList
 46777  
 46778      for (const requestResponse of storage) {
 46779        const [cachedRequest, cachedResponse] = requestResponse
 46780        if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) {
 46781          resultList.push(requestResponse)
 46782        }
 46783      }
 46784  
 46785      return resultList
 46786    }
 46787  
 46788    /**
 46789     * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm
 46790     * @param {any} requestQuery
 46791     * @param {any} request
 46792     * @param {any | null} response
 46793     * @param {import('../../types/cache').CacheQueryOptions | undefined} options
 46794     * @returns {boolean}
 46795     */
 46796    #requestMatchesCachedItem (requestQuery, request, response = null, options) {
 46797      // if (options?.ignoreMethod === false && request.method === 'GET') {
 46798      //   return false
 46799      // }
 46800  
 46801      const queryURL = new URL(requestQuery.url)
 46802  
 46803      const cachedURL = new URL(request.url)
 46804  
 46805      if (options?.ignoreSearch) {
 46806        cachedURL.search = ''
 46807  
 46808        queryURL.search = ''
 46809      }
 46810  
 46811      if (!urlEquals(queryURL, cachedURL, true)) {
 46812        return false
 46813      }
 46814  
 46815      if (
 46816        response == null ||
 46817        options?.ignoreVary ||
 46818        !response.headersList.contains('vary')
 46819      ) {
 46820        return true
 46821      }
 46822  
 46823      const fieldValues = getFieldValues(response.headersList.get('vary'))
 46824  
 46825      for (const fieldValue of fieldValues) {
 46826        if (fieldValue === '*') {
 46827          return false
 46828        }
 46829  
 46830        const requestValue = request.headersList.get(fieldValue)
 46831        const queryValue = requestQuery.headersList.get(fieldValue)
 46832  
 46833        // If one has the header and the other doesn't, or one has
 46834        // a different value than the other, return false
 46835        if (requestValue !== queryValue) {
 46836          return false
 46837        }
 46838      }
 46839  
 46840      return true
 46841    }
 46842  }
 46843  
 46844  Object.defineProperties(Cache.prototype, {
 46845    [Symbol.toStringTag]: {
 46846      value: 'Cache',
 46847      configurable: true
 46848    },
 46849    match: kEnumerableProperty,
 46850    matchAll: kEnumerableProperty,
 46851    add: kEnumerableProperty,
 46852    addAll: kEnumerableProperty,
 46853    put: kEnumerableProperty,
 46854    delete: kEnumerableProperty,
 46855    keys: kEnumerableProperty
 46856  })
 46857  
 46858  const cacheQueryOptionConverters = [
 46859    {
 46860      key: 'ignoreSearch',
 46861      converter: webidl.converters.boolean,
 46862      defaultValue: false
 46863    },
 46864    {
 46865      key: 'ignoreMethod',
 46866      converter: webidl.converters.boolean,
 46867      defaultValue: false
 46868    },
 46869    {
 46870      key: 'ignoreVary',
 46871      converter: webidl.converters.boolean,
 46872      defaultValue: false
 46873    }
 46874  ]
 46875  
 46876  webidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters)
 46877  
 46878  webidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([
 46879    ...cacheQueryOptionConverters,
 46880    {
 46881      key: 'cacheName',
 46882      converter: webidl.converters.DOMString
 46883    }
 46884  ])
 46885  
 46886  webidl.converters.Response = webidl.interfaceConverter(Response)
 46887  
 46888  webidl.converters['sequence<RequestInfo>'] = webidl.sequenceConverter(
 46889    webidl.converters.RequestInfo
 46890  )
 46891  
 46892  module.exports = {
 46893    Cache
 46894  }
 46895  
 46896  
 46897  /***/ }),
 46898  
 46899  /***/ 37907:
 46900  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 46901  
 46902  "use strict";
 46903  
 46904  
 46905  const { kConstruct } = __nccwpck_require__(29174)
 46906  const { Cache } = __nccwpck_require__(66101)
 46907  const { webidl } = __nccwpck_require__(21744)
 46908  const { kEnumerableProperty } = __nccwpck_require__(83983)
 46909  
 46910  class CacheStorage {
 46911    /**
 46912     * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map
 46913     * @type {Map<string, import('./cache').requestResponseList}
 46914     */
 46915    #caches = new Map()
 46916  
 46917    constructor () {
 46918      if (arguments[0] !== kConstruct) {
 46919        webidl.illegalConstructor()
 46920      }
 46921    }
 46922  
 46923    async match (request, options = {}) {
 46924      webidl.brandCheck(this, CacheStorage)
 46925      webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.match' })
 46926  
 46927      request = webidl.converters.RequestInfo(request)
 46928      options = webidl.converters.MultiCacheQueryOptions(options)
 46929  
 46930      // 1.
 46931      if (options.cacheName != null) {
 46932        // 1.1.1.1
 46933        if (this.#caches.has(options.cacheName)) {
 46934          // 1.1.1.1.1
 46935          const cacheList = this.#caches.get(options.cacheName)
 46936          const cache = new Cache(kConstruct, cacheList)
 46937  
 46938          return await cache.match(request, options)
 46939        }
 46940      } else { // 2.
 46941        // 2.2
 46942        for (const cacheList of this.#caches.values()) {
 46943          const cache = new Cache(kConstruct, cacheList)
 46944  
 46945          // 2.2.1.2
 46946          const response = await cache.match(request, options)
 46947  
 46948          if (response !== undefined) {
 46949            return response
 46950          }
 46951        }
 46952      }
 46953    }
 46954  
 46955    /**
 46956     * @see https://w3c.github.io/ServiceWorker/#cache-storage-has
 46957     * @param {string} cacheName
 46958     * @returns {Promise<boolean>}
 46959     */
 46960    async has (cacheName) {
 46961      webidl.brandCheck(this, CacheStorage)
 46962      webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' })
 46963  
 46964      cacheName = webidl.converters.DOMString(cacheName)
 46965  
 46966      // 2.1.1
 46967      // 2.2
 46968      return this.#caches.has(cacheName)
 46969    }
 46970  
 46971    /**
 46972     * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open
 46973     * @param {string} cacheName
 46974     * @returns {Promise<Cache>}
 46975     */
 46976    async open (cacheName) {
 46977      webidl.brandCheck(this, CacheStorage)
 46978      webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' })
 46979  
 46980      cacheName = webidl.converters.DOMString(cacheName)
 46981  
 46982      // 2.1
 46983      if (this.#caches.has(cacheName)) {
 46984        // await caches.open('v1') !== await caches.open('v1')
 46985  
 46986        // 2.1.1
 46987        const cache = this.#caches.get(cacheName)
 46988  
 46989        // 2.1.1.1
 46990        return new Cache(kConstruct, cache)
 46991      }
 46992  
 46993      // 2.2
 46994      const cache = []
 46995  
 46996      // 2.3
 46997      this.#caches.set(cacheName, cache)
 46998  
 46999      // 2.4
 47000      return new Cache(kConstruct, cache)
 47001    }
 47002  
 47003    /**
 47004     * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete
 47005     * @param {string} cacheName
 47006     * @returns {Promise<boolean>}
 47007     */
 47008    async delete (cacheName) {
 47009      webidl.brandCheck(this, CacheStorage)
 47010      webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' })
 47011  
 47012      cacheName = webidl.converters.DOMString(cacheName)
 47013  
 47014      return this.#caches.delete(cacheName)
 47015    }
 47016  
 47017    /**
 47018     * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys
 47019     * @returns {string[]}
 47020     */
 47021    async keys () {
 47022      webidl.brandCheck(this, CacheStorage)
 47023  
 47024      // 2.1
 47025      const keys = this.#caches.keys()
 47026  
 47027      // 2.2
 47028      return [...keys]
 47029    }
 47030  }
 47031  
 47032  Object.defineProperties(CacheStorage.prototype, {
 47033    [Symbol.toStringTag]: {
 47034      value: 'CacheStorage',
 47035      configurable: true
 47036    },
 47037    match: kEnumerableProperty,
 47038    has: kEnumerableProperty,
 47039    open: kEnumerableProperty,
 47040    delete: kEnumerableProperty,
 47041    keys: kEnumerableProperty
 47042  })
 47043  
 47044  module.exports = {
 47045    CacheStorage
 47046  }
 47047  
 47048  
 47049  /***/ }),
 47050  
 47051  /***/ 29174:
 47052  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 47053  
 47054  "use strict";
 47055  
 47056  
 47057  module.exports = {
 47058    kConstruct: (__nccwpck_require__(72785).kConstruct)
 47059  }
 47060  
 47061  
 47062  /***/ }),
 47063  
 47064  /***/ 82396:
 47065  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 47066  
 47067  "use strict";
 47068  
 47069  
 47070  const assert = __nccwpck_require__(39491)
 47071  const { URLSerializer } = __nccwpck_require__(685)
 47072  const { isValidHeaderName } = __nccwpck_require__(52538)
 47073  
 47074  /**
 47075   * @see https://url.spec.whatwg.org/#concept-url-equals
 47076   * @param {URL} A
 47077   * @param {URL} B
 47078   * @param {boolean | undefined} excludeFragment
 47079   * @returns {boolean}
 47080   */
 47081  function urlEquals (A, B, excludeFragment = false) {
 47082    const serializedA = URLSerializer(A, excludeFragment)
 47083  
 47084    const serializedB = URLSerializer(B, excludeFragment)
 47085  
 47086    return serializedA === serializedB
 47087  }
 47088  
 47089  /**
 47090   * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262
 47091   * @param {string} header
 47092   */
 47093  function fieldValues (header) {
 47094    assert(header !== null)
 47095  
 47096    const values = []
 47097  
 47098    for (let value of header.split(',')) {
 47099      value = value.trim()
 47100  
 47101      if (!value.length) {
 47102        continue
 47103      } else if (!isValidHeaderName(value)) {
 47104        continue
 47105      }
 47106  
 47107      values.push(value)
 47108    }
 47109  
 47110    return values
 47111  }
 47112  
 47113  module.exports = {
 47114    urlEquals,
 47115    fieldValues
 47116  }
 47117  
 47118  
 47119  /***/ }),
 47120  
 47121  /***/ 33598:
 47122  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 47123  
 47124  "use strict";
 47125  // @ts-check
 47126  
 47127  
 47128  
 47129  /* global WebAssembly */
 47130  
 47131  const assert = __nccwpck_require__(39491)
 47132  const net = __nccwpck_require__(41808)
 47133  const http = __nccwpck_require__(13685)
 47134  const { pipeline } = __nccwpck_require__(12781)
 47135  const util = __nccwpck_require__(83983)
 47136  const timers = __nccwpck_require__(29459)
 47137  const Request = __nccwpck_require__(62905)
 47138  const DispatcherBase = __nccwpck_require__(74839)
 47139  const {
 47140    RequestContentLengthMismatchError,
 47141    ResponseContentLengthMismatchError,
 47142    InvalidArgumentError,
 47143    RequestAbortedError,
 47144    HeadersTimeoutError,
 47145    HeadersOverflowError,
 47146    SocketError,
 47147    InformationalError,
 47148    BodyTimeoutError,
 47149    HTTPParserError,
 47150    ResponseExceededMaxSizeError,
 47151    ClientDestroyedError
 47152  } = __nccwpck_require__(48045)
 47153  const buildConnector = __nccwpck_require__(82067)
 47154  const {
 47155    kUrl,
 47156    kReset,
 47157    kServerName,
 47158    kClient,
 47159    kBusy,
 47160    kParser,
 47161    kConnect,
 47162    kBlocking,
 47163    kResuming,
 47164    kRunning,
 47165    kPending,
 47166    kSize,
 47167    kWriting,
 47168    kQueue,
 47169    kConnected,
 47170    kConnecting,
 47171    kNeedDrain,
 47172    kNoRef,
 47173    kKeepAliveDefaultTimeout,
 47174    kHostHeader,
 47175    kPendingIdx,
 47176    kRunningIdx,
 47177    kError,
 47178    kPipelining,
 47179    kSocket,
 47180    kKeepAliveTimeoutValue,
 47181    kMaxHeadersSize,
 47182    kKeepAliveMaxTimeout,
 47183    kKeepAliveTimeoutThreshold,
 47184    kHeadersTimeout,
 47185    kBodyTimeout,
 47186    kStrictContentLength,
 47187    kConnector,
 47188    kMaxRedirections,
 47189    kMaxRequests,
 47190    kCounter,
 47191    kClose,
 47192    kDestroy,
 47193    kDispatch,
 47194    kInterceptors,
 47195    kLocalAddress,
 47196    kMaxResponseSize,
 47197    kHTTPConnVersion,
 47198    // HTTP2
 47199    kHost,
 47200    kHTTP2Session,
 47201    kHTTP2SessionState,
 47202    kHTTP2BuildRequest,
 47203    kHTTP2CopyHeaders,
 47204    kHTTP1BuildRequest
 47205  } = __nccwpck_require__(72785)
 47206  
 47207  /** @type {import('http2')} */
 47208  let http2
 47209  try {
 47210    http2 = __nccwpck_require__(85158)
 47211  } catch {
 47212    // @ts-ignore
 47213    http2 = { constants: {} }
 47214  }
 47215  
 47216  const {
 47217    constants: {
 47218      HTTP2_HEADER_AUTHORITY,
 47219      HTTP2_HEADER_METHOD,
 47220      HTTP2_HEADER_PATH,
 47221      HTTP2_HEADER_SCHEME,
 47222      HTTP2_HEADER_CONTENT_LENGTH,
 47223      HTTP2_HEADER_EXPECT,
 47224      HTTP2_HEADER_STATUS
 47225    }
 47226  } = http2
 47227  
 47228  // Experimental
 47229  let h2ExperimentalWarned = false
 47230  
 47231  const FastBuffer = Buffer[Symbol.species]
 47232  
 47233  const kClosedResolve = Symbol('kClosedResolve')
 47234  
 47235  const channels = {}
 47236  
 47237  try {
 47238    const diagnosticsChannel = __nccwpck_require__(67643)
 47239    channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders')
 47240    channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect')
 47241    channels.connectError = diagnosticsChannel.channel('undici:client:connectError')
 47242    channels.connected = diagnosticsChannel.channel('undici:client:connected')
 47243  } catch {
 47244    channels.sendHeaders = { hasSubscribers: false }
 47245    channels.beforeConnect = { hasSubscribers: false }
 47246    channels.connectError = { hasSubscribers: false }
 47247    channels.connected = { hasSubscribers: false }
 47248  }
 47249  
 47250  /**
 47251   * @type {import('../types/client').default}
 47252   */
 47253  class Client extends DispatcherBase {
 47254    /**
 47255     *
 47256     * @param {string|URL} url
 47257     * @param {import('../types/client').Client.Options} options
 47258     */
 47259    constructor (url, {
 47260      interceptors,
 47261      maxHeaderSize,
 47262      headersTimeout,
 47263      socketTimeout,
 47264      requestTimeout,
 47265      connectTimeout,
 47266      bodyTimeout,
 47267      idleTimeout,
 47268      keepAlive,
 47269      keepAliveTimeout,
 47270      maxKeepAliveTimeout,
 47271      keepAliveMaxTimeout,
 47272      keepAliveTimeoutThreshold,
 47273      socketPath,
 47274      pipelining,
 47275      tls,
 47276      strictContentLength,
 47277      maxCachedSessions,
 47278      maxRedirections,
 47279      connect,
 47280      maxRequestsPerClient,
 47281      localAddress,
 47282      maxResponseSize,
 47283      autoSelectFamily,
 47284      autoSelectFamilyAttemptTimeout,
 47285      // h2
 47286      allowH2,
 47287      maxConcurrentStreams
 47288    } = {}) {
 47289      super()
 47290  
 47291      if (keepAlive !== undefined) {
 47292        throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')
 47293      }
 47294  
 47295      if (socketTimeout !== undefined) {
 47296        throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead')
 47297      }
 47298  
 47299      if (requestTimeout !== undefined) {
 47300        throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead')
 47301      }
 47302  
 47303      if (idleTimeout !== undefined) {
 47304        throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead')
 47305      }
 47306  
 47307      if (maxKeepAliveTimeout !== undefined) {
 47308        throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead')
 47309      }
 47310  
 47311      if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {
 47312        throw new InvalidArgumentError('invalid maxHeaderSize')
 47313      }
 47314  
 47315      if (socketPath != null && typeof socketPath !== 'string') {
 47316        throw new InvalidArgumentError('invalid socketPath')
 47317      }
 47318  
 47319      if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {
 47320        throw new InvalidArgumentError('invalid connectTimeout')
 47321      }
 47322  
 47323      if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {
 47324        throw new InvalidArgumentError('invalid keepAliveTimeout')
 47325      }
 47326  
 47327      if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {
 47328        throw new InvalidArgumentError('invalid keepAliveMaxTimeout')
 47329      }
 47330  
 47331      if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {
 47332        throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold')
 47333      }
 47334  
 47335      if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {
 47336        throw new InvalidArgumentError('headersTimeout must be a positive integer or zero')
 47337      }
 47338  
 47339      if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {
 47340        throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero')
 47341      }
 47342  
 47343      if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {
 47344        throw new InvalidArgumentError('connect must be a function or an object')
 47345      }
 47346  
 47347      if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {
 47348        throw new InvalidArgumentError('maxRedirections must be a positive number')
 47349      }
 47350  
 47351      if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {
 47352        throw new InvalidArgumentError('maxRequestsPerClient must be a positive number')
 47353      }
 47354  
 47355      if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) {
 47356        throw new InvalidArgumentError('localAddress must be valid string IP address')
 47357      }
 47358  
 47359      if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {
 47360        throw new InvalidArgumentError('maxResponseSize must be a positive number')
 47361      }
 47362  
 47363      if (
 47364        autoSelectFamilyAttemptTimeout != null &&
 47365        (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)
 47366      ) {
 47367        throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number')
 47368      }
 47369  
 47370      // h2
 47371      if (allowH2 != null && typeof allowH2 !== 'boolean') {
 47372        throw new InvalidArgumentError('allowH2 must be a valid boolean value')
 47373      }
 47374  
 47375      if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {
 47376        throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0')
 47377      }
 47378  
 47379      if (typeof connect !== 'function') {
 47380        connect = buildConnector({
 47381          ...tls,
 47382          maxCachedSessions,
 47383          allowH2,
 47384          socketPath,
 47385          timeout: connectTimeout,
 47386          ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),
 47387          ...connect
 47388        })
 47389      }
 47390  
 47391      this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client)
 47392        ? interceptors.Client
 47393        : [createRedirectInterceptor({ maxRedirections })]
 47394      this[kUrl] = util.parseOrigin(url)
 47395      this[kConnector] = connect
 47396      this[kSocket] = null
 47397      this[kPipelining] = pipelining != null ? pipelining : 1
 47398      this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize
 47399      this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout
 47400      this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout
 47401      this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold
 47402      this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]
 47403      this[kServerName] = null
 47404      this[kLocalAddress] = localAddress != null ? localAddress : null
 47405      this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming
 47406      this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming
 47407      this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\r\n`
 47408      this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3
 47409      this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3
 47410      this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength
 47411      this[kMaxRedirections] = maxRedirections
 47412      this[kMaxRequests] = maxRequestsPerClient
 47413      this[kClosedResolve] = null
 47414      this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1
 47415      this[kHTTPConnVersion] = 'h1'
 47416  
 47417      // HTTP/2
 47418      this[kHTTP2Session] = null
 47419      this[kHTTP2SessionState] = !allowH2
 47420        ? null
 47421        : {
 47422          // streams: null, // Fixed queue of streams - For future support of `push`
 47423            openStreams: 0, // Keep track of them to decide wether or not unref the session
 47424            maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server
 47425          }
 47426      this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`
 47427  
 47428      // kQueue is built up of 3 sections separated by
 47429      // the kRunningIdx and kPendingIdx indices.
 47430      // |   complete   |   running   |   pending   |
 47431      //                ^ kRunningIdx ^ kPendingIdx ^ kQueue.length
 47432      // kRunningIdx points to the first running element.
 47433      // kPendingIdx points to the first pending element.
 47434      // This implements a fast queue with an amortized
 47435      // time of O(1).
 47436  
 47437      this[kQueue] = []
 47438      this[kRunningIdx] = 0
 47439      this[kPendingIdx] = 0
 47440    }
 47441  
 47442    get pipelining () {
 47443      return this[kPipelining]
 47444    }
 47445  
 47446    set pipelining (value) {
 47447      this[kPipelining] = value
 47448      resume(this, true)
 47449    }
 47450  
 47451    get [kPending] () {
 47452      return this[kQueue].length - this[kPendingIdx]
 47453    }
 47454  
 47455    get [kRunning] () {
 47456      return this[kPendingIdx] - this[kRunningIdx]
 47457    }
 47458  
 47459    get [kSize] () {
 47460      return this[kQueue].length - this[kRunningIdx]
 47461    }
 47462  
 47463    get [kConnected] () {
 47464      return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed
 47465    }
 47466  
 47467    get [kBusy] () {
 47468      const socket = this[kSocket]
 47469      return (
 47470        (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) ||
 47471        (this[kSize] >= (this[kPipelining] || 1)) ||
 47472        this[kPending] > 0
 47473      )
 47474    }
 47475  
 47476    /* istanbul ignore: only used for test */
 47477    [kConnect] (cb) {
 47478      connect(this)
 47479      this.once('connect', cb)
 47480    }
 47481  
 47482    [kDispatch] (opts, handler) {
 47483      const origin = opts.origin || this[kUrl].origin
 47484  
 47485      const request = this[kHTTPConnVersion] === 'h2'
 47486        ? Request[kHTTP2BuildRequest](origin, opts, handler)
 47487        : Request[kHTTP1BuildRequest](origin, opts, handler)
 47488  
 47489      this[kQueue].push(request)
 47490      if (this[kResuming]) {
 47491        // Do nothing.
 47492      } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {
 47493        // Wait a tick in case stream/iterator is ended in the same tick.
 47494        this[kResuming] = 1
 47495        process.nextTick(resume, this)
 47496      } else {
 47497        resume(this, true)
 47498      }
 47499  
 47500      if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {
 47501        this[kNeedDrain] = 2
 47502      }
 47503  
 47504      return this[kNeedDrain] < 2
 47505    }
 47506  
 47507    async [kClose] () {
 47508      // TODO: for H2 we need to gracefully flush the remaining enqueued
 47509      // request and close each stream.
 47510      return new Promise((resolve) => {
 47511        if (!this[kSize]) {
 47512          resolve(null)
 47513        } else {
 47514          this[kClosedResolve] = resolve
 47515        }
 47516      })
 47517    }
 47518  
 47519    async [kDestroy] (err) {
 47520      return new Promise((resolve) => {
 47521        const requests = this[kQueue].splice(this[kPendingIdx])
 47522        for (let i = 0; i < requests.length; i++) {
 47523          const request = requests[i]
 47524          errorRequest(this, request, err)
 47525        }
 47526  
 47527        const callback = () => {
 47528          if (this[kClosedResolve]) {
 47529            // TODO (fix): Should we error here with ClientDestroyedError?
 47530            this[kClosedResolve]()
 47531            this[kClosedResolve] = null
 47532          }
 47533          resolve()
 47534        }
 47535  
 47536        if (this[kHTTP2Session] != null) {
 47537          util.destroy(this[kHTTP2Session], err)
 47538          this[kHTTP2Session] = null
 47539          this[kHTTP2SessionState] = null
 47540        }
 47541  
 47542        if (!this[kSocket]) {
 47543          queueMicrotask(callback)
 47544        } else {
 47545          util.destroy(this[kSocket].on('close', callback), err)
 47546        }
 47547  
 47548        resume(this)
 47549      })
 47550    }
 47551  }
 47552  
 47553  function onHttp2SessionError (err) {
 47554    assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')
 47555  
 47556    this[kSocket][kError] = err
 47557  
 47558    onError(this[kClient], err)
 47559  }
 47560  
 47561  function onHttp2FrameError (type, code, id) {
 47562    const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`)
 47563  
 47564    if (id === 0) {
 47565      this[kSocket][kError] = err
 47566      onError(this[kClient], err)
 47567    }
 47568  }
 47569  
 47570  function onHttp2SessionEnd () {
 47571    util.destroy(this, new SocketError('other side closed'))
 47572    util.destroy(this[kSocket], new SocketError('other side closed'))
 47573  }
 47574  
 47575  function onHTTP2GoAway (code) {
 47576    const client = this[kClient]
 47577    const err = new InformationalError(`HTTP/2: "GOAWAY" frame received with code ${code}`)
 47578    client[kSocket] = null
 47579    client[kHTTP2Session] = null
 47580  
 47581    if (client.destroyed) {
 47582      assert(this[kPending] === 0)
 47583  
 47584      // Fail entire queue.
 47585      const requests = client[kQueue].splice(client[kRunningIdx])
 47586      for (let i = 0; i < requests.length; i++) {
 47587        const request = requests[i]
 47588        errorRequest(this, request, err)
 47589      }
 47590    } else if (client[kRunning] > 0) {
 47591      // Fail head of pipeline.
 47592      const request = client[kQueue][client[kRunningIdx]]
 47593      client[kQueue][client[kRunningIdx]++] = null
 47594  
 47595      errorRequest(client, request, err)
 47596    }
 47597  
 47598    client[kPendingIdx] = client[kRunningIdx]
 47599  
 47600    assert(client[kRunning] === 0)
 47601  
 47602    client.emit('disconnect',
 47603      client[kUrl],
 47604      [client],
 47605      err
 47606    )
 47607  
 47608    resume(client)
 47609  }
 47610  
 47611  const constants = __nccwpck_require__(30953)
 47612  const createRedirectInterceptor = __nccwpck_require__(38861)
 47613  const EMPTY_BUF = Buffer.alloc(0)
 47614  
 47615  async function lazyllhttp () {
 47616    const llhttpWasmData = process.env.JEST_WORKER_ID ? __nccwpck_require__(61145) : undefined
 47617  
 47618    let mod
 47619    try {
 47620      mod = await WebAssembly.compile(Buffer.from(__nccwpck_require__(95627), 'base64'))
 47621    } catch (e) {
 47622      /* istanbul ignore next */
 47623  
 47624      // We could check if the error was caused by the simd option not
 47625      // being enabled, but the occurring of this other error
 47626      // * https://github.com/emscripten-core/emscripten/issues/11495
 47627      // got me to remove that check to avoid breaking Node 12.
 47628      mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || __nccwpck_require__(61145), 'base64'))
 47629    }
 47630  
 47631    return await WebAssembly.instantiate(mod, {
 47632      env: {
 47633        /* eslint-disable camelcase */
 47634  
 47635        wasm_on_url: (p, at, len) => {
 47636          /* istanbul ignore next */
 47637          return 0
 47638        },
 47639        wasm_on_status: (p, at, len) => {
 47640          assert.strictEqual(currentParser.ptr, p)
 47641          const start = at - currentBufferPtr + currentBufferRef.byteOffset
 47642          return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
 47643        },
 47644        wasm_on_message_begin: (p) => {
 47645          assert.strictEqual(currentParser.ptr, p)
 47646          return currentParser.onMessageBegin() || 0
 47647        },
 47648        wasm_on_header_field: (p, at, len) => {
 47649          assert.strictEqual(currentParser.ptr, p)
 47650          const start = at - currentBufferPtr + currentBufferRef.byteOffset
 47651          return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
 47652        },
 47653        wasm_on_header_value: (p, at, len) => {
 47654          assert.strictEqual(currentParser.ptr, p)
 47655          const start = at - currentBufferPtr + currentBufferRef.byteOffset
 47656          return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
 47657        },
 47658        wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {
 47659          assert.strictEqual(currentParser.ptr, p)
 47660          return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0
 47661        },
 47662        wasm_on_body: (p, at, len) => {
 47663          assert.strictEqual(currentParser.ptr, p)
 47664          const start = at - currentBufferPtr + currentBufferRef.byteOffset
 47665          return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0
 47666        },
 47667        wasm_on_message_complete: (p) => {
 47668          assert.strictEqual(currentParser.ptr, p)
 47669          return currentParser.onMessageComplete() || 0
 47670        }
 47671  
 47672        /* eslint-enable camelcase */
 47673      }
 47674    })
 47675  }
 47676  
 47677  let llhttpInstance = null
 47678  let llhttpPromise = lazyllhttp()
 47679  llhttpPromise.catch()
 47680  
 47681  let currentParser = null
 47682  let currentBufferRef = null
 47683  let currentBufferSize = 0
 47684  let currentBufferPtr = null
 47685  
 47686  const TIMEOUT_HEADERS = 1
 47687  const TIMEOUT_BODY = 2
 47688  const TIMEOUT_IDLE = 3
 47689  
 47690  class Parser {
 47691    constructor (client, socket, { exports }) {
 47692      assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0)
 47693  
 47694      this.llhttp = exports
 47695      this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)
 47696      this.client = client
 47697      this.socket = socket
 47698      this.timeout = null
 47699      this.timeoutValue = null
 47700      this.timeoutType = null
 47701      this.statusCode = null
 47702      this.statusText = ''
 47703      this.upgrade = false
 47704      this.headers = []
 47705      this.headersSize = 0
 47706      this.headersMaxSize = client[kMaxHeadersSize]
 47707      this.shouldKeepAlive = false
 47708      this.paused = false
 47709      this.resume = this.resume.bind(this)
 47710  
 47711      this.bytesRead = 0
 47712  
 47713      this.keepAlive = ''
 47714      this.contentLength = ''
 47715      this.connection = ''
 47716      this.maxResponseSize = client[kMaxResponseSize]
 47717    }
 47718  
 47719    setTimeout (value, type) {
 47720      this.timeoutType = type
 47721      if (value !== this.timeoutValue) {
 47722        timers.clearTimeout(this.timeout)
 47723        if (value) {
 47724          this.timeout = timers.setTimeout(onParserTimeout, value, this)
 47725          // istanbul ignore else: only for jest
 47726          if (this.timeout.unref) {
 47727            this.timeout.unref()
 47728          }
 47729        } else {
 47730          this.timeout = null
 47731        }
 47732        this.timeoutValue = value
 47733      } else if (this.timeout) {
 47734        // istanbul ignore else: only for jest
 47735        if (this.timeout.refresh) {
 47736          this.timeout.refresh()
 47737        }
 47738      }
 47739    }
 47740  
 47741    resume () {
 47742      if (this.socket.destroyed || !this.paused) {
 47743        return
 47744      }
 47745  
 47746      assert(this.ptr != null)
 47747      assert(currentParser == null)
 47748  
 47749      this.llhttp.llhttp_resume(this.ptr)
 47750  
 47751      assert(this.timeoutType === TIMEOUT_BODY)
 47752      if (this.timeout) {
 47753        // istanbul ignore else: only for jest
 47754        if (this.timeout.refresh) {
 47755          this.timeout.refresh()
 47756        }
 47757      }
 47758  
 47759      this.paused = false
 47760      this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.
 47761      this.readMore()
 47762    }
 47763  
 47764    readMore () {
 47765      while (!this.paused && this.ptr) {
 47766        const chunk = this.socket.read()
 47767        if (chunk === null) {
 47768          break
 47769        }
 47770        this.execute(chunk)
 47771      }
 47772    }
 47773  
 47774    execute (data) {
 47775      assert(this.ptr != null)
 47776      assert(currentParser == null)
 47777      assert(!this.paused)
 47778  
 47779      const { socket, llhttp } = this
 47780  
 47781      if (data.length > currentBufferSize) {
 47782        if (currentBufferPtr) {
 47783          llhttp.free(currentBufferPtr)
 47784        }
 47785        currentBufferSize = Math.ceil(data.length / 4096) * 4096
 47786        currentBufferPtr = llhttp.malloc(currentBufferSize)
 47787      }
 47788  
 47789      new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data)
 47790  
 47791      // Call `execute` on the wasm parser.
 47792      // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,
 47793      // and finally the length of bytes to parse.
 47794      // The return value is an error code or `constants.ERROR.OK`.
 47795      try {
 47796        let ret
 47797  
 47798        try {
 47799          currentBufferRef = data
 47800          currentParser = this
 47801          ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length)
 47802          /* eslint-disable-next-line no-useless-catch */
 47803        } catch (err) {
 47804          /* istanbul ignore next: difficult to make a test case for */
 47805          throw err
 47806        } finally {
 47807          currentParser = null
 47808          currentBufferRef = null
 47809        }
 47810  
 47811        const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr
 47812  
 47813        if (ret === constants.ERROR.PAUSED_UPGRADE) {
 47814          this.onUpgrade(data.slice(offset))
 47815        } else if (ret === constants.ERROR.PAUSED) {
 47816          this.paused = true
 47817          socket.unshift(data.slice(offset))
 47818        } else if (ret !== constants.ERROR.OK) {
 47819          const ptr = llhttp.llhttp_get_error_reason(this.ptr)
 47820          let message = ''
 47821          /* istanbul ignore else: difficult to make a test case for */
 47822          if (ptr) {
 47823            const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)
 47824            message =
 47825              'Response does not match the HTTP/1.1 protocol (' +
 47826              Buffer.from(llhttp.memory.buffer, ptr, len).toString() +
 47827              ')'
 47828          }
 47829          throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset))
 47830        }
 47831      } catch (err) {
 47832        util.destroy(socket, err)
 47833      }
 47834    }
 47835  
 47836    destroy () {
 47837      assert(this.ptr != null)
 47838      assert(currentParser == null)
 47839  
 47840      this.llhttp.llhttp_free(this.ptr)
 47841      this.ptr = null
 47842  
 47843      timers.clearTimeout(this.timeout)
 47844      this.timeout = null
 47845      this.timeoutValue = null
 47846      this.timeoutType = null
 47847  
 47848      this.paused = false
 47849    }
 47850  
 47851    onStatus (buf) {
 47852      this.statusText = buf.toString()
 47853    }
 47854  
 47855    onMessageBegin () {
 47856      const { socket, client } = this
 47857  
 47858      /* istanbul ignore next: difficult to make a test case for */
 47859      if (socket.destroyed) {
 47860        return -1
 47861      }
 47862  
 47863      const request = client[kQueue][client[kRunningIdx]]
 47864      if (!request) {
 47865        return -1
 47866      }
 47867    }
 47868  
 47869    onHeaderField (buf) {
 47870      const len = this.headers.length
 47871  
 47872      if ((len & 1) === 0) {
 47873        this.headers.push(buf)
 47874      } else {
 47875        this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])
 47876      }
 47877  
 47878      this.trackHeader(buf.length)
 47879    }
 47880  
 47881    onHeaderValue (buf) {
 47882      let len = this.headers.length
 47883  
 47884      if ((len & 1) === 1) {
 47885        this.headers.push(buf)
 47886        len += 1
 47887      } else {
 47888        this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])
 47889      }
 47890  
 47891      const key = this.headers[len - 2]
 47892      if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') {
 47893        this.keepAlive += buf.toString()
 47894      } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') {
 47895        this.connection += buf.toString()
 47896      } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') {
 47897        this.contentLength += buf.toString()
 47898      }
 47899  
 47900      this.trackHeader(buf.length)
 47901    }
 47902  
 47903    trackHeader (len) {
 47904      this.headersSize += len
 47905      if (this.headersSize >= this.headersMaxSize) {
 47906        util.destroy(this.socket, new HeadersOverflowError())
 47907      }
 47908    }
 47909  
 47910    onUpgrade (head) {
 47911      const { upgrade, client, socket, headers, statusCode } = this
 47912  
 47913      assert(upgrade)
 47914  
 47915      const request = client[kQueue][client[kRunningIdx]]
 47916      assert(request)
 47917  
 47918      assert(!socket.destroyed)
 47919      assert(socket === client[kSocket])
 47920      assert(!this.paused)
 47921      assert(request.upgrade || request.method === 'CONNECT')
 47922  
 47923      this.statusCode = null
 47924      this.statusText = ''
 47925      this.shouldKeepAlive = null
 47926  
 47927      assert(this.headers.length % 2 === 0)
 47928      this.headers = []
 47929      this.headersSize = 0
 47930  
 47931      socket.unshift(head)
 47932  
 47933      socket[kParser].destroy()
 47934      socket[kParser] = null
 47935  
 47936      socket[kClient] = null
 47937      socket[kError] = null
 47938      socket
 47939        .removeListener('error', onSocketError)
 47940        .removeListener('readable', onSocketReadable)
 47941        .removeListener('end', onSocketEnd)
 47942        .removeListener('close', onSocketClose)
 47943  
 47944      client[kSocket] = null
 47945      client[kQueue][client[kRunningIdx]++] = null
 47946      client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))
 47947  
 47948      try {
 47949        request.onUpgrade(statusCode, headers, socket)
 47950      } catch (err) {
 47951        util.destroy(socket, err)
 47952      }
 47953  
 47954      resume(client)
 47955    }
 47956  
 47957    onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {
 47958      const { client, socket, headers, statusText } = this
 47959  
 47960      /* istanbul ignore next: difficult to make a test case for */
 47961      if (socket.destroyed) {
 47962        return -1
 47963      }
 47964  
 47965      const request = client[kQueue][client[kRunningIdx]]
 47966  
 47967      /* istanbul ignore next: difficult to make a test case for */
 47968      if (!request) {
 47969        return -1
 47970      }
 47971  
 47972      assert(!this.upgrade)
 47973      assert(this.statusCode < 200)
 47974  
 47975      if (statusCode === 100) {
 47976        util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))
 47977        return -1
 47978      }
 47979  
 47980      /* this can only happen if server is misbehaving */
 47981      if (upgrade && !request.upgrade) {
 47982        util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))
 47983        return -1
 47984      }
 47985  
 47986      assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS)
 47987  
 47988      this.statusCode = statusCode
 47989      this.shouldKeepAlive = (
 47990        shouldKeepAlive ||
 47991        // Override llhttp value which does not allow keepAlive for HEAD.
 47992        (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')
 47993      )
 47994  
 47995      if (this.statusCode >= 200) {
 47996        const bodyTimeout = request.bodyTimeout != null
 47997          ? request.bodyTimeout
 47998          : client[kBodyTimeout]
 47999        this.setTimeout(bodyTimeout, TIMEOUT_BODY)
 48000      } else if (this.timeout) {
 48001        // istanbul ignore else: only for jest
 48002        if (this.timeout.refresh) {
 48003          this.timeout.refresh()
 48004        }
 48005      }
 48006  
 48007      if (request.method === 'CONNECT') {
 48008        assert(client[kRunning] === 1)
 48009        this.upgrade = true
 48010        return 2
 48011      }
 48012  
 48013      if (upgrade) {
 48014        assert(client[kRunning] === 1)
 48015        this.upgrade = true
 48016        return 2
 48017      }
 48018  
 48019      assert(this.headers.length % 2 === 0)
 48020      this.headers = []
 48021      this.headersSize = 0
 48022  
 48023      if (this.shouldKeepAlive && client[kPipelining]) {
 48024        const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null
 48025  
 48026        if (keepAliveTimeout != null) {
 48027          const timeout = Math.min(
 48028            keepAliveTimeout - client[kKeepAliveTimeoutThreshold],
 48029            client[kKeepAliveMaxTimeout]
 48030          )
 48031          if (timeout <= 0) {
 48032            socket[kReset] = true
 48033          } else {
 48034            client[kKeepAliveTimeoutValue] = timeout
 48035          }
 48036        } else {
 48037          client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]
 48038        }
 48039      } else {
 48040        // Stop more requests from being dispatched.
 48041        socket[kReset] = true
 48042      }
 48043  
 48044      const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false
 48045  
 48046      if (request.aborted) {
 48047        return -1
 48048      }
 48049  
 48050      if (request.method === 'HEAD') {
 48051        return 1
 48052      }
 48053  
 48054      if (statusCode < 200) {
 48055        return 1
 48056      }
 48057  
 48058      if (socket[kBlocking]) {
 48059        socket[kBlocking] = false
 48060        resume(client)
 48061      }
 48062  
 48063      return pause ? constants.ERROR.PAUSED : 0
 48064    }
 48065  
 48066    onBody (buf) {
 48067      const { client, socket, statusCode, maxResponseSize } = this
 48068  
 48069      if (socket.destroyed) {
 48070        return -1
 48071      }
 48072  
 48073      const request = client[kQueue][client[kRunningIdx]]
 48074      assert(request)
 48075  
 48076      assert.strictEqual(this.timeoutType, TIMEOUT_BODY)
 48077      if (this.timeout) {
 48078        // istanbul ignore else: only for jest
 48079        if (this.timeout.refresh) {
 48080          this.timeout.refresh()
 48081        }
 48082      }
 48083  
 48084      assert(statusCode >= 200)
 48085  
 48086      if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {
 48087        util.destroy(socket, new ResponseExceededMaxSizeError())
 48088        return -1
 48089      }
 48090  
 48091      this.bytesRead += buf.length
 48092  
 48093      if (request.onData(buf) === false) {
 48094        return constants.ERROR.PAUSED
 48095      }
 48096    }
 48097  
 48098    onMessageComplete () {
 48099      const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this
 48100  
 48101      if (socket.destroyed && (!statusCode || shouldKeepAlive)) {
 48102        return -1
 48103      }
 48104  
 48105      if (upgrade) {
 48106        return
 48107      }
 48108  
 48109      const request = client[kQueue][client[kRunningIdx]]
 48110      assert(request)
 48111  
 48112      assert(statusCode >= 100)
 48113  
 48114      this.statusCode = null
 48115      this.statusText = ''
 48116      this.bytesRead = 0
 48117      this.contentLength = ''
 48118      this.keepAlive = ''
 48119      this.connection = ''
 48120  
 48121      assert(this.headers.length % 2 === 0)
 48122      this.headers = []
 48123      this.headersSize = 0
 48124  
 48125      if (statusCode < 200) {
 48126        return
 48127      }
 48128  
 48129      /* istanbul ignore next: should be handled by llhttp? */
 48130      if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {
 48131        util.destroy(socket, new ResponseContentLengthMismatchError())
 48132        return -1
 48133      }
 48134  
 48135      request.onComplete(headers)
 48136  
 48137      client[kQueue][client[kRunningIdx]++] = null
 48138  
 48139      if (socket[kWriting]) {
 48140        assert.strictEqual(client[kRunning], 0)
 48141        // Response completed before request.
 48142        util.destroy(socket, new InformationalError('reset'))
 48143        return constants.ERROR.PAUSED
 48144      } else if (!shouldKeepAlive) {
 48145        util.destroy(socket, new InformationalError('reset'))
 48146        return constants.ERROR.PAUSED
 48147      } else if (socket[kReset] && client[kRunning] === 0) {
 48148        // Destroy socket once all requests have completed.
 48149        // The request at the tail of the pipeline is the one
 48150        // that requested reset and no further requests should
 48151        // have been queued since then.
 48152        util.destroy(socket, new InformationalError('reset'))
 48153        return constants.ERROR.PAUSED
 48154      } else if (client[kPipelining] === 1) {
 48155        // We must wait a full event loop cycle to reuse this socket to make sure
 48156        // that non-spec compliant servers are not closing the connection even if they
 48157        // said they won't.
 48158        setImmediate(resume, client)
 48159      } else {
 48160        resume(client)
 48161      }
 48162    }
 48163  }
 48164  
 48165  function onParserTimeout (parser) {
 48166    const { socket, timeoutType, client } = parser
 48167  
 48168    /* istanbul ignore else */
 48169    if (timeoutType === TIMEOUT_HEADERS) {
 48170      if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {
 48171        assert(!parser.paused, 'cannot be paused while waiting for headers')
 48172        util.destroy(socket, new HeadersTimeoutError())
 48173      }
 48174    } else if (timeoutType === TIMEOUT_BODY) {
 48175      if (!parser.paused) {
 48176        util.destroy(socket, new BodyTimeoutError())
 48177      }
 48178    } else if (timeoutType === TIMEOUT_IDLE) {
 48179      assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])
 48180      util.destroy(socket, new InformationalError('socket idle timeout'))
 48181    }
 48182  }
 48183  
 48184  function onSocketReadable () {
 48185    const { [kParser]: parser } = this
 48186    if (parser) {
 48187      parser.readMore()
 48188    }
 48189  }
 48190  
 48191  function onSocketError (err) {
 48192    const { [kClient]: client, [kParser]: parser } = this
 48193  
 48194    assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')
 48195  
 48196    if (client[kHTTPConnVersion] !== 'h2') {
 48197      // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded
 48198      // to the user.
 48199      if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {
 48200        // We treat all incoming data so for as a valid response.
 48201        parser.onMessageComplete()
 48202        return
 48203      }
 48204    }
 48205  
 48206    this[kError] = err
 48207  
 48208    onError(this[kClient], err)
 48209  }
 48210  
 48211  function onError (client, err) {
 48212    if (
 48213      client[kRunning] === 0 &&
 48214      err.code !== 'UND_ERR_INFO' &&
 48215      err.code !== 'UND_ERR_SOCKET'
 48216    ) {
 48217      // Error is not caused by running request and not a recoverable
 48218      // socket error.
 48219  
 48220      assert(client[kPendingIdx] === client[kRunningIdx])
 48221  
 48222      const requests = client[kQueue].splice(client[kRunningIdx])
 48223      for (let i = 0; i < requests.length; i++) {
 48224        const request = requests[i]
 48225        errorRequest(client, request, err)
 48226      }
 48227      assert(client[kSize] === 0)
 48228    }
 48229  }
 48230  
 48231  function onSocketEnd () {
 48232    const { [kParser]: parser, [kClient]: client } = this
 48233  
 48234    if (client[kHTTPConnVersion] !== 'h2') {
 48235      if (parser.statusCode && !parser.shouldKeepAlive) {
 48236        // We treat all incoming data so far as a valid response.
 48237        parser.onMessageComplete()
 48238        return
 48239      }
 48240    }
 48241  
 48242    util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))
 48243  }
 48244  
 48245  function onSocketClose () {
 48246    const { [kClient]: client, [kParser]: parser } = this
 48247  
 48248    if (client[kHTTPConnVersion] === 'h1' && parser) {
 48249      if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {
 48250        // We treat all incoming data so far as a valid response.
 48251        parser.onMessageComplete()
 48252      }
 48253  
 48254      this[kParser].destroy()
 48255      this[kParser] = null
 48256    }
 48257  
 48258    const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))
 48259  
 48260    client[kSocket] = null
 48261  
 48262    if (client.destroyed) {
 48263      assert(client[kPending] === 0)
 48264  
 48265      // Fail entire queue.
 48266      const requests = client[kQueue].splice(client[kRunningIdx])
 48267      for (let i = 0; i < requests.length; i++) {
 48268        const request = requests[i]
 48269        errorRequest(client, request, err)
 48270      }
 48271    } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {
 48272      // Fail head of pipeline.
 48273      const request = client[kQueue][client[kRunningIdx]]
 48274      client[kQueue][client[kRunningIdx]++] = null
 48275  
 48276      errorRequest(client, request, err)
 48277    }
 48278  
 48279    client[kPendingIdx] = client[kRunningIdx]
 48280  
 48281    assert(client[kRunning] === 0)
 48282  
 48283    client.emit('disconnect', client[kUrl], [client], err)
 48284  
 48285    resume(client)
 48286  }
 48287  
 48288  async function connect (client) {
 48289    assert(!client[kConnecting])
 48290    assert(!client[kSocket])
 48291  
 48292    let { host, hostname, protocol, port } = client[kUrl]
 48293  
 48294    // Resolve ipv6
 48295    if (hostname[0] === '[') {
 48296      const idx = hostname.indexOf(']')
 48297  
 48298      assert(idx !== -1)
 48299      const ip = hostname.substring(1, idx)
 48300  
 48301      assert(net.isIP(ip))
 48302      hostname = ip
 48303    }
 48304  
 48305    client[kConnecting] = true
 48306  
 48307    if (channels.beforeConnect.hasSubscribers) {
 48308      channels.beforeConnect.publish({
 48309        connectParams: {
 48310          host,
 48311          hostname,
 48312          protocol,
 48313          port,
 48314          servername: client[kServerName],
 48315          localAddress: client[kLocalAddress]
 48316        },
 48317        connector: client[kConnector]
 48318      })
 48319    }
 48320  
 48321    try {
 48322      const socket = await new Promise((resolve, reject) => {
 48323        client[kConnector]({
 48324          host,
 48325          hostname,
 48326          protocol,
 48327          port,
 48328          servername: client[kServerName],
 48329          localAddress: client[kLocalAddress]
 48330        }, (err, socket) => {
 48331          if (err) {
 48332            reject(err)
 48333          } else {
 48334            resolve(socket)
 48335          }
 48336        })
 48337      })
 48338  
 48339      if (client.destroyed) {
 48340        util.destroy(socket.on('error', () => {}), new ClientDestroyedError())
 48341        return
 48342      }
 48343  
 48344      client[kConnecting] = false
 48345  
 48346      assert(socket)
 48347  
 48348      const isH2 = socket.alpnProtocol === 'h2'
 48349      if (isH2) {
 48350        if (!h2ExperimentalWarned) {
 48351          h2ExperimentalWarned = true
 48352          process.emitWarning('H2 support is experimental, expect them to change at any time.', {
 48353            code: 'UNDICI-H2'
 48354          })
 48355        }
 48356  
 48357        const session = http2.connect(client[kUrl], {
 48358          createConnection: () => socket,
 48359          peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams
 48360        })
 48361  
 48362        client[kHTTPConnVersion] = 'h2'
 48363        session[kClient] = client
 48364        session[kSocket] = socket
 48365        session.on('error', onHttp2SessionError)
 48366        session.on('frameError', onHttp2FrameError)
 48367        session.on('end', onHttp2SessionEnd)
 48368        session.on('goaway', onHTTP2GoAway)
 48369        session.on('close', onSocketClose)
 48370        session.unref()
 48371  
 48372        client[kHTTP2Session] = session
 48373        socket[kHTTP2Session] = session
 48374      } else {
 48375        if (!llhttpInstance) {
 48376          llhttpInstance = await llhttpPromise
 48377          llhttpPromise = null
 48378        }
 48379  
 48380        socket[kNoRef] = false
 48381        socket[kWriting] = false
 48382        socket[kReset] = false
 48383        socket[kBlocking] = false
 48384        socket[kParser] = new Parser(client, socket, llhttpInstance)
 48385      }
 48386  
 48387      socket[kCounter] = 0
 48388      socket[kMaxRequests] = client[kMaxRequests]
 48389      socket[kClient] = client
 48390      socket[kError] = null
 48391  
 48392      socket
 48393        .on('error', onSocketError)
 48394        .on('readable', onSocketReadable)
 48395        .on('end', onSocketEnd)
 48396        .on('close', onSocketClose)
 48397  
 48398      client[kSocket] = socket
 48399  
 48400      if (channels.connected.hasSubscribers) {
 48401        channels.connected.publish({
 48402          connectParams: {
 48403            host,
 48404            hostname,
 48405            protocol,
 48406            port,
 48407            servername: client[kServerName],
 48408            localAddress: client[kLocalAddress]
 48409          },
 48410          connector: client[kConnector],
 48411          socket
 48412        })
 48413      }
 48414      client.emit('connect', client[kUrl], [client])
 48415    } catch (err) {
 48416      if (client.destroyed) {
 48417        return
 48418      }
 48419  
 48420      client[kConnecting] = false
 48421  
 48422      if (channels.connectError.hasSubscribers) {
 48423        channels.connectError.publish({
 48424          connectParams: {
 48425            host,
 48426            hostname,
 48427            protocol,
 48428            port,
 48429            servername: client[kServerName],
 48430            localAddress: client[kLocalAddress]
 48431          },
 48432          connector: client[kConnector],
 48433          error: err
 48434        })
 48435      }
 48436  
 48437      if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {
 48438        assert(client[kRunning] === 0)
 48439        while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {
 48440          const request = client[kQueue][client[kPendingIdx]++]
 48441          errorRequest(client, request, err)
 48442        }
 48443      } else {
 48444        onError(client, err)
 48445      }
 48446  
 48447      client.emit('connectionError', client[kUrl], [client], err)
 48448    }
 48449  
 48450    resume(client)
 48451  }
 48452  
 48453  function emitDrain (client) {
 48454    client[kNeedDrain] = 0
 48455    client.emit('drain', client[kUrl], [client])
 48456  }
 48457  
 48458  function resume (client, sync) {
 48459    if (client[kResuming] === 2) {
 48460      return
 48461    }
 48462  
 48463    client[kResuming] = 2
 48464  
 48465    _resume(client, sync)
 48466    client[kResuming] = 0
 48467  
 48468    if (client[kRunningIdx] > 256) {
 48469      client[kQueue].splice(0, client[kRunningIdx])
 48470      client[kPendingIdx] -= client[kRunningIdx]
 48471      client[kRunningIdx] = 0
 48472    }
 48473  }
 48474  
 48475  function _resume (client, sync) {
 48476    while (true) {
 48477      if (client.destroyed) {
 48478        assert(client[kPending] === 0)
 48479        return
 48480      }
 48481  
 48482      if (client[kClosedResolve] && !client[kSize]) {
 48483        client[kClosedResolve]()
 48484        client[kClosedResolve] = null
 48485        return
 48486      }
 48487  
 48488      const socket = client[kSocket]
 48489  
 48490      if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') {
 48491        if (client[kSize] === 0) {
 48492          if (!socket[kNoRef] && socket.unref) {
 48493            socket.unref()
 48494            socket[kNoRef] = true
 48495          }
 48496        } else if (socket[kNoRef] && socket.ref) {
 48497          socket.ref()
 48498          socket[kNoRef] = false
 48499        }
 48500  
 48501        if (client[kSize] === 0) {
 48502          if (socket[kParser].timeoutType !== TIMEOUT_IDLE) {
 48503            socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE)
 48504          }
 48505        } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {
 48506          if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {
 48507            const request = client[kQueue][client[kRunningIdx]]
 48508            const headersTimeout = request.headersTimeout != null
 48509              ? request.headersTimeout
 48510              : client[kHeadersTimeout]
 48511            socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)
 48512          }
 48513        }
 48514      }
 48515  
 48516      if (client[kBusy]) {
 48517        client[kNeedDrain] = 2
 48518      } else if (client[kNeedDrain] === 2) {
 48519        if (sync) {
 48520          client[kNeedDrain] = 1
 48521          process.nextTick(emitDrain, client)
 48522        } else {
 48523          emitDrain(client)
 48524        }
 48525        continue
 48526      }
 48527  
 48528      if (client[kPending] === 0) {
 48529        return
 48530      }
 48531  
 48532      if (client[kRunning] >= (client[kPipelining] || 1)) {
 48533        return
 48534      }
 48535  
 48536      const request = client[kQueue][client[kPendingIdx]]
 48537  
 48538      if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) {
 48539        if (client[kRunning] > 0) {
 48540          return
 48541        }
 48542  
 48543        client[kServerName] = request.servername
 48544  
 48545        if (socket && socket.servername !== request.servername) {
 48546          util.destroy(socket, new InformationalError('servername changed'))
 48547          return
 48548        }
 48549      }
 48550  
 48551      if (client[kConnecting]) {
 48552        return
 48553      }
 48554  
 48555      if (!socket && !client[kHTTP2Session]) {
 48556        connect(client)
 48557        return
 48558      }
 48559  
 48560      if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) {
 48561        return
 48562      }
 48563  
 48564      if (client[kRunning] > 0 && !request.idempotent) {
 48565        // Non-idempotent request cannot be retried.
 48566        // Ensure that no other requests are inflight and
 48567        // could cause failure.
 48568        return
 48569      }
 48570  
 48571      if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {
 48572        // Don't dispatch an upgrade until all preceding requests have completed.
 48573        // A misbehaving server might upgrade the connection before all pipelined
 48574        // request has completed.
 48575        return
 48576      }
 48577  
 48578      if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&
 48579        (util.isStream(request.body) || util.isAsyncIterable(request.body))) {
 48580        // Request with stream or iterator body can error while other requests
 48581        // are inflight and indirectly error those as well.
 48582        // Ensure this doesn't happen by waiting for inflight
 48583        // to complete before dispatching.
 48584  
 48585        // Request with stream or iterator body cannot be retried.
 48586        // Ensure that no other requests are inflight and
 48587        // could cause failure.
 48588        return
 48589      }
 48590  
 48591      if (!request.aborted && write(client, request)) {
 48592        client[kPendingIdx]++
 48593      } else {
 48594        client[kQueue].splice(client[kPendingIdx], 1)
 48595      }
 48596    }
 48597  }
 48598  
 48599  // https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2
 48600  function shouldSendContentLength (method) {
 48601    return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'
 48602  }
 48603  
 48604  function write (client, request) {
 48605    if (client[kHTTPConnVersion] === 'h2') {
 48606      writeH2(client, client[kHTTP2Session], request)
 48607      return
 48608    }
 48609  
 48610    const { body, method, path, host, upgrade, headers, blocking, reset } = request
 48611  
 48612    // https://tools.ietf.org/html/rfc7231#section-4.3.1
 48613    // https://tools.ietf.org/html/rfc7231#section-4.3.2
 48614    // https://tools.ietf.org/html/rfc7231#section-4.3.5
 48615  
 48616    // Sending a payload body on a request that does not
 48617    // expect it can cause undefined behavior on some
 48618    // servers and corrupt connection state. Do not
 48619    // re-use the connection for further requests.
 48620  
 48621    const expectsPayload = (
 48622      method === 'PUT' ||
 48623      method === 'POST' ||
 48624      method === 'PATCH'
 48625    )
 48626  
 48627    if (body && typeof body.read === 'function') {
 48628      // Try to read EOF in order to get length.
 48629      body.read(0)
 48630    }
 48631  
 48632    const bodyLength = util.bodyLength(body)
 48633  
 48634    let contentLength = bodyLength
 48635  
 48636    if (contentLength === null) {
 48637      contentLength = request.contentLength
 48638    }
 48639  
 48640    if (contentLength === 0 && !expectsPayload) {
 48641      // https://tools.ietf.org/html/rfc7230#section-3.3.2
 48642      // A user agent SHOULD NOT send a Content-Length header field when
 48643      // the request message does not contain a payload body and the method
 48644      // semantics do not anticipate such a body.
 48645  
 48646      contentLength = null
 48647    }
 48648  
 48649    // https://github.com/nodejs/undici/issues/2046
 48650    // A user agent may send a Content-Length header with 0 value, this should be allowed.
 48651    if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {
 48652      if (client[kStrictContentLength]) {
 48653        errorRequest(client, request, new RequestContentLengthMismatchError())
 48654        return false
 48655      }
 48656  
 48657      process.emitWarning(new RequestContentLengthMismatchError())
 48658    }
 48659  
 48660    const socket = client[kSocket]
 48661  
 48662    try {
 48663      request.onConnect((err) => {
 48664        if (request.aborted || request.completed) {
 48665          return
 48666        }
 48667  
 48668        errorRequest(client, request, err || new RequestAbortedError())
 48669  
 48670        util.destroy(socket, new InformationalError('aborted'))
 48671      })
 48672    } catch (err) {
 48673      errorRequest(client, request, err)
 48674    }
 48675  
 48676    if (request.aborted) {
 48677      return false
 48678    }
 48679  
 48680    if (method === 'HEAD') {
 48681      // https://github.com/mcollina/undici/issues/258
 48682      // Close after a HEAD request to interop with misbehaving servers
 48683      // that may send a body in the response.
 48684  
 48685      socket[kReset] = true
 48686    }
 48687  
 48688    if (upgrade || method === 'CONNECT') {
 48689      // On CONNECT or upgrade, block pipeline from dispatching further
 48690      // requests on this connection.
 48691  
 48692      socket[kReset] = true
 48693    }
 48694  
 48695    if (reset != null) {
 48696      socket[kReset] = reset
 48697    }
 48698  
 48699    if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {
 48700      socket[kReset] = true
 48701    }
 48702  
 48703    if (blocking) {
 48704      socket[kBlocking] = true
 48705    }
 48706  
 48707    let header = `${method} ${path} HTTP/1.1\r\n`
 48708  
 48709    if (typeof host === 'string') {
 48710      header += `host: ${host}\r\n`
 48711    } else {
 48712      header += client[kHostHeader]
 48713    }
 48714  
 48715    if (upgrade) {
 48716      header += `connection: upgrade\r\nupgrade: ${upgrade}\r\n`
 48717    } else if (client[kPipelining] && !socket[kReset]) {
 48718      header += 'connection: keep-alive\r\n'
 48719    } else {
 48720      header += 'connection: close\r\n'
 48721    }
 48722  
 48723    if (headers) {
 48724      header += headers
 48725    }
 48726  
 48727    if (channels.sendHeaders.hasSubscribers) {
 48728      channels.sendHeaders.publish({ request, headers: header, socket })
 48729    }
 48730  
 48731    /* istanbul ignore else: assertion */
 48732    if (!body || bodyLength === 0) {
 48733      if (contentLength === 0) {
 48734        socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1')
 48735      } else {
 48736        assert(contentLength === null, 'no body must not have content length')
 48737        socket.write(`${header}\r\n`, 'latin1')
 48738      }
 48739      request.onRequestSent()
 48740    } else if (util.isBuffer(body)) {
 48741      assert(contentLength === body.byteLength, 'buffer body must have content length')
 48742  
 48743      socket.cork()
 48744      socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1')
 48745      socket.write(body)
 48746      socket.uncork()
 48747      request.onBodySent(body)
 48748      request.onRequestSent()
 48749      if (!expectsPayload) {
 48750        socket[kReset] = true
 48751      }
 48752    } else if (util.isBlobLike(body)) {
 48753      if (typeof body.stream === 'function') {
 48754        writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload })
 48755      } else {
 48756        writeBlob({ body, client, request, socket, contentLength, header, expectsPayload })
 48757      }
 48758    } else if (util.isStream(body)) {
 48759      writeStream({ body, client, request, socket, contentLength, header, expectsPayload })
 48760    } else if (util.isIterable(body)) {
 48761      writeIterable({ body, client, request, socket, contentLength, header, expectsPayload })
 48762    } else {
 48763      assert(false)
 48764    }
 48765  
 48766    return true
 48767  }
 48768  
 48769  function writeH2 (client, session, request) {
 48770    const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request
 48771  
 48772    let headers
 48773    if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim())
 48774    else headers = reqHeaders
 48775  
 48776    if (upgrade) {
 48777      errorRequest(client, request, new Error('Upgrade not supported for H2'))
 48778      return false
 48779    }
 48780  
 48781    try {
 48782      // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event?
 48783      request.onConnect((err) => {
 48784        if (request.aborted || request.completed) {
 48785          return
 48786        }
 48787  
 48788        errorRequest(client, request, err || new RequestAbortedError())
 48789      })
 48790    } catch (err) {
 48791      errorRequest(client, request, err)
 48792    }
 48793  
 48794    if (request.aborted) {
 48795      return false
 48796    }
 48797  
 48798    /** @type {import('node:http2').ClientHttp2Stream} */
 48799    let stream
 48800    const h2State = client[kHTTP2SessionState]
 48801  
 48802    headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]
 48803    headers[HTTP2_HEADER_METHOD] = method
 48804  
 48805    if (method === 'CONNECT') {
 48806      session.ref()
 48807      // we are already connected, streams are pending, first request
 48808      // will create a new stream. We trigger a request to create the stream and wait until
 48809      // `ready` event is triggered
 48810      // We disabled endStream to allow the user to write to the stream
 48811      stream = session.request(headers, { endStream: false, signal })
 48812  
 48813      if (stream.id && !stream.pending) {
 48814        request.onUpgrade(null, null, stream)
 48815        ++h2State.openStreams
 48816      } else {
 48817        stream.once('ready', () => {
 48818          request.onUpgrade(null, null, stream)
 48819          ++h2State.openStreams
 48820        })
 48821      }
 48822  
 48823      stream.once('close', () => {
 48824        h2State.openStreams -= 1
 48825        // TODO(HTTP/2): unref only if current streams count is 0
 48826        if (h2State.openStreams === 0) session.unref()
 48827      })
 48828  
 48829      return true
 48830    }
 48831  
 48832    // https://tools.ietf.org/html/rfc7540#section-8.3
 48833    // :path and :scheme headers must be omited when sending CONNECT
 48834  
 48835    headers[HTTP2_HEADER_PATH] = path
 48836    headers[HTTP2_HEADER_SCHEME] = 'https'
 48837  
 48838    // https://tools.ietf.org/html/rfc7231#section-4.3.1
 48839    // https://tools.ietf.org/html/rfc7231#section-4.3.2
 48840    // https://tools.ietf.org/html/rfc7231#section-4.3.5
 48841  
 48842    // Sending a payload body on a request that does not
 48843    // expect it can cause undefined behavior on some
 48844    // servers and corrupt connection state. Do not
 48845    // re-use the connection for further requests.
 48846  
 48847    const expectsPayload = (
 48848      method === 'PUT' ||
 48849      method === 'POST' ||
 48850      method === 'PATCH'
 48851    )
 48852  
 48853    if (body && typeof body.read === 'function') {
 48854      // Try to read EOF in order to get length.
 48855      body.read(0)
 48856    }
 48857  
 48858    let contentLength = util.bodyLength(body)
 48859  
 48860    if (contentLength == null) {
 48861      contentLength = request.contentLength
 48862    }
 48863  
 48864    if (contentLength === 0 || !expectsPayload) {
 48865      // https://tools.ietf.org/html/rfc7230#section-3.3.2
 48866      // A user agent SHOULD NOT send a Content-Length header field when
 48867      // the request message does not contain a payload body and the method
 48868      // semantics do not anticipate such a body.
 48869  
 48870      contentLength = null
 48871    }
 48872  
 48873    // https://github.com/nodejs/undici/issues/2046
 48874    // A user agent may send a Content-Length header with 0 value, this should be allowed.
 48875    if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {
 48876      if (client[kStrictContentLength]) {
 48877        errorRequest(client, request, new RequestContentLengthMismatchError())
 48878        return false
 48879      }
 48880  
 48881      process.emitWarning(new RequestContentLengthMismatchError())
 48882    }
 48883  
 48884    if (contentLength != null) {
 48885      assert(body, 'no body must not have content length')
 48886      headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`
 48887    }
 48888  
 48889    session.ref()
 48890  
 48891    const shouldEndStream = method === 'GET' || method === 'HEAD'
 48892    if (expectContinue) {
 48893      headers[HTTP2_HEADER_EXPECT] = '100-continue'
 48894      stream = session.request(headers, { endStream: shouldEndStream, signal })
 48895  
 48896      stream.once('continue', writeBodyH2)
 48897    } else {
 48898      stream = session.request(headers, {
 48899        endStream: shouldEndStream,
 48900        signal
 48901      })
 48902      writeBodyH2()
 48903    }
 48904  
 48905    // Increment counter as we have new several streams open
 48906    ++h2State.openStreams
 48907  
 48908    stream.once('response', headers => {
 48909      const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers
 48910  
 48911      if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) {
 48912        stream.pause()
 48913      }
 48914    })
 48915  
 48916    stream.once('end', () => {
 48917      request.onComplete([])
 48918    })
 48919  
 48920    stream.on('data', (chunk) => {
 48921      if (request.onData(chunk) === false) {
 48922        stream.pause()
 48923      }
 48924    })
 48925  
 48926    stream.once('close', () => {
 48927      h2State.openStreams -= 1
 48928      // TODO(HTTP/2): unref only if current streams count is 0
 48929      if (h2State.openStreams === 0) {
 48930        session.unref()
 48931      }
 48932    })
 48933  
 48934    stream.once('error', function (err) {
 48935      if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {
 48936        h2State.streams -= 1
 48937        util.destroy(stream, err)
 48938      }
 48939    })
 48940  
 48941    stream.once('frameError', (type, code) => {
 48942      const err = new InformationalError(`HTTP/2: "frameError" received - type ${type}, code ${code}`)
 48943      errorRequest(client, request, err)
 48944  
 48945      if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {
 48946        h2State.streams -= 1
 48947        util.destroy(stream, err)
 48948      }
 48949    })
 48950  
 48951    // stream.on('aborted', () => {
 48952    //   // TODO(HTTP/2): Support aborted
 48953    // })
 48954  
 48955    // stream.on('timeout', () => {
 48956    //   // TODO(HTTP/2): Support timeout
 48957    // })
 48958  
 48959    // stream.on('push', headers => {
 48960    //   // TODO(HTTP/2): Suppor push
 48961    // })
 48962  
 48963    // stream.on('trailers', headers => {
 48964    //   // TODO(HTTP/2): Support trailers
 48965    // })
 48966  
 48967    return true
 48968  
 48969    function writeBodyH2 () {
 48970      /* istanbul ignore else: assertion */
 48971      if (!body) {
 48972        request.onRequestSent()
 48973      } else if (util.isBuffer(body)) {
 48974        assert(contentLength === body.byteLength, 'buffer body must have content length')
 48975        stream.cork()
 48976        stream.write(body)
 48977        stream.uncork()
 48978        stream.end()
 48979        request.onBodySent(body)
 48980        request.onRequestSent()
 48981      } else if (util.isBlobLike(body)) {
 48982        if (typeof body.stream === 'function') {
 48983          writeIterable({
 48984            client,
 48985            request,
 48986            contentLength,
 48987            h2stream: stream,
 48988            expectsPayload,
 48989            body: body.stream(),
 48990            socket: client[kSocket],
 48991            header: ''
 48992          })
 48993        } else {
 48994          writeBlob({
 48995            body,
 48996            client,
 48997            request,
 48998            contentLength,
 48999            expectsPayload,
 49000            h2stream: stream,
 49001            header: '',
 49002            socket: client[kSocket]
 49003          })
 49004        }
 49005      } else if (util.isStream(body)) {
 49006        writeStream({
 49007          body,
 49008          client,
 49009          request,
 49010          contentLength,
 49011          expectsPayload,
 49012          socket: client[kSocket],
 49013          h2stream: stream,
 49014          header: ''
 49015        })
 49016      } else if (util.isIterable(body)) {
 49017        writeIterable({
 49018          body,
 49019          client,
 49020          request,
 49021          contentLength,
 49022          expectsPayload,
 49023          header: '',
 49024          h2stream: stream,
 49025          socket: client[kSocket]
 49026        })
 49027      } else {
 49028        assert(false)
 49029      }
 49030    }
 49031  }
 49032  
 49033  function writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {
 49034    assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')
 49035  
 49036    if (client[kHTTPConnVersion] === 'h2') {
 49037      // For HTTP/2, is enough to pipe the stream
 49038      const pipe = pipeline(
 49039        body,
 49040        h2stream,
 49041        (err) => {
 49042          if (err) {
 49043            util.destroy(body, err)
 49044            util.destroy(h2stream, err)
 49045          } else {
 49046            request.onRequestSent()
 49047          }
 49048        }
 49049      )
 49050  
 49051      pipe.on('data', onPipeData)
 49052      pipe.once('end', () => {
 49053        pipe.removeListener('data', onPipeData)
 49054        util.destroy(pipe)
 49055      })
 49056  
 49057      function onPipeData (chunk) {
 49058        request.onBodySent(chunk)
 49059      }
 49060  
 49061      return
 49062    }
 49063  
 49064    let finished = false
 49065  
 49066    const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })
 49067  
 49068    const onData = function (chunk) {
 49069      if (finished) {
 49070        return
 49071      }
 49072  
 49073      try {
 49074        if (!writer.write(chunk) && this.pause) {
 49075          this.pause()
 49076        }
 49077      } catch (err) {
 49078        util.destroy(this, err)
 49079      }
 49080    }
 49081    const onDrain = function () {
 49082      if (finished) {
 49083        return
 49084      }
 49085  
 49086      if (body.resume) {
 49087        body.resume()
 49088      }
 49089    }
 49090    const onAbort = function () {
 49091      if (finished) {
 49092        return
 49093      }
 49094      const err = new RequestAbortedError()
 49095      queueMicrotask(() => onFinished(err))
 49096    }
 49097    const onFinished = function (err) {
 49098      if (finished) {
 49099        return
 49100      }
 49101  
 49102      finished = true
 49103  
 49104      assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))
 49105  
 49106      socket
 49107        .off('drain', onDrain)
 49108        .off('error', onFinished)
 49109  
 49110      body
 49111        .removeListener('data', onData)
 49112        .removeListener('end', onFinished)
 49113        .removeListener('error', onFinished)
 49114        .removeListener('close', onAbort)
 49115  
 49116      if (!err) {
 49117        try {
 49118          writer.end()
 49119        } catch (er) {
 49120          err = er
 49121        }
 49122      }
 49123  
 49124      writer.destroy(err)
 49125  
 49126      if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {
 49127        util.destroy(body, err)
 49128      } else {
 49129        util.destroy(body)
 49130      }
 49131    }
 49132  
 49133    body
 49134      .on('data', onData)
 49135      .on('end', onFinished)
 49136      .on('error', onFinished)
 49137      .on('close', onAbort)
 49138  
 49139    if (body.resume) {
 49140      body.resume()
 49141    }
 49142  
 49143    socket
 49144      .on('drain', onDrain)
 49145      .on('error', onFinished)
 49146  }
 49147  
 49148  async function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {
 49149    assert(contentLength === body.size, 'blob body must have content length')
 49150  
 49151    const isH2 = client[kHTTPConnVersion] === 'h2'
 49152    try {
 49153      if (contentLength != null && contentLength !== body.size) {
 49154        throw new RequestContentLengthMismatchError()
 49155      }
 49156  
 49157      const buffer = Buffer.from(await body.arrayBuffer())
 49158  
 49159      if (isH2) {
 49160        h2stream.cork()
 49161        h2stream.write(buffer)
 49162        h2stream.uncork()
 49163      } else {
 49164        socket.cork()
 49165        socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1')
 49166        socket.write(buffer)
 49167        socket.uncork()
 49168      }
 49169  
 49170      request.onBodySent(buffer)
 49171      request.onRequestSent()
 49172  
 49173      if (!expectsPayload) {
 49174        socket[kReset] = true
 49175      }
 49176  
 49177      resume(client)
 49178    } catch (err) {
 49179      util.destroy(isH2 ? h2stream : socket, err)
 49180    }
 49181  }
 49182  
 49183  async function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {
 49184    assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')
 49185  
 49186    let callback = null
 49187    function onDrain () {
 49188      if (callback) {
 49189        const cb = callback
 49190        callback = null
 49191        cb()
 49192      }
 49193    }
 49194  
 49195    const waitForDrain = () => new Promise((resolve, reject) => {
 49196      assert(callback === null)
 49197  
 49198      if (socket[kError]) {
 49199        reject(socket[kError])
 49200      } else {
 49201        callback = resolve
 49202      }
 49203    })
 49204  
 49205    if (client[kHTTPConnVersion] === 'h2') {
 49206      h2stream
 49207        .on('close', onDrain)
 49208        .on('drain', onDrain)
 49209  
 49210      try {
 49211        // It's up to the user to somehow abort the async iterable.
 49212        for await (const chunk of body) {
 49213          if (socket[kError]) {
 49214            throw socket[kError]
 49215          }
 49216  
 49217          const res = h2stream.write(chunk)
 49218          request.onBodySent(chunk)
 49219          if (!res) {
 49220            await waitForDrain()
 49221          }
 49222        }
 49223      } catch (err) {
 49224        h2stream.destroy(err)
 49225      } finally {
 49226        request.onRequestSent()
 49227        h2stream.end()
 49228        h2stream
 49229          .off('close', onDrain)
 49230          .off('drain', onDrain)
 49231      }
 49232  
 49233      return
 49234    }
 49235  
 49236    socket
 49237      .on('close', onDrain)
 49238      .on('drain', onDrain)
 49239  
 49240    const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })
 49241    try {
 49242      // It's up to the user to somehow abort the async iterable.
 49243      for await (const chunk of body) {
 49244        if (socket[kError]) {
 49245          throw socket[kError]
 49246        }
 49247  
 49248        if (!writer.write(chunk)) {
 49249          await waitForDrain()
 49250        }
 49251      }
 49252  
 49253      writer.end()
 49254    } catch (err) {
 49255      writer.destroy(err)
 49256    } finally {
 49257      socket
 49258        .off('close', onDrain)
 49259        .off('drain', onDrain)
 49260    }
 49261  }
 49262  
 49263  class AsyncWriter {
 49264    constructor ({ socket, request, contentLength, client, expectsPayload, header }) {
 49265      this.socket = socket
 49266      this.request = request
 49267      this.contentLength = contentLength
 49268      this.client = client
 49269      this.bytesWritten = 0
 49270      this.expectsPayload = expectsPayload
 49271      this.header = header
 49272  
 49273      socket[kWriting] = true
 49274    }
 49275  
 49276    write (chunk) {
 49277      const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this
 49278  
 49279      if (socket[kError]) {
 49280        throw socket[kError]
 49281      }
 49282  
 49283      if (socket.destroyed) {
 49284        return false
 49285      }
 49286  
 49287      const len = Buffer.byteLength(chunk)
 49288      if (!len) {
 49289        return true
 49290      }
 49291  
 49292      // We should defer writing chunks.
 49293      if (contentLength !== null && bytesWritten + len > contentLength) {
 49294        if (client[kStrictContentLength]) {
 49295          throw new RequestContentLengthMismatchError()
 49296        }
 49297  
 49298        process.emitWarning(new RequestContentLengthMismatchError())
 49299      }
 49300  
 49301      socket.cork()
 49302  
 49303      if (bytesWritten === 0) {
 49304        if (!expectsPayload) {
 49305          socket[kReset] = true
 49306        }
 49307  
 49308        if (contentLength === null) {
 49309          socket.write(`${header}transfer-encoding: chunked\r\n`, 'latin1')
 49310        } else {
 49311          socket.write(`${header}content-length: ${contentLength}\r\n\r\n`, 'latin1')
 49312        }
 49313      }
 49314  
 49315      if (contentLength === null) {
 49316        socket.write(`\r\n${len.toString(16)}\r\n`, 'latin1')
 49317      }
 49318  
 49319      this.bytesWritten += len
 49320  
 49321      const ret = socket.write(chunk)
 49322  
 49323      socket.uncork()
 49324  
 49325      request.onBodySent(chunk)
 49326  
 49327      if (!ret) {
 49328        if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
 49329          // istanbul ignore else: only for jest
 49330          if (socket[kParser].timeout.refresh) {
 49331            socket[kParser].timeout.refresh()
 49332          }
 49333        }
 49334      }
 49335  
 49336      return ret
 49337    }
 49338  
 49339    end () {
 49340      const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this
 49341      request.onRequestSent()
 49342  
 49343      socket[kWriting] = false
 49344  
 49345      if (socket[kError]) {
 49346        throw socket[kError]
 49347      }
 49348  
 49349      if (socket.destroyed) {
 49350        return
 49351      }
 49352  
 49353      if (bytesWritten === 0) {
 49354        if (expectsPayload) {
 49355          // https://tools.ietf.org/html/rfc7230#section-3.3.2
 49356          // A user agent SHOULD send a Content-Length in a request message when
 49357          // no Transfer-Encoding is sent and the request method defines a meaning
 49358          // for an enclosed payload body.
 49359  
 49360          socket.write(`${header}content-length: 0\r\n\r\n`, 'latin1')
 49361        } else {
 49362          socket.write(`${header}\r\n`, 'latin1')
 49363        }
 49364      } else if (contentLength === null) {
 49365        socket.write('\r\n0\r\n\r\n', 'latin1')
 49366      }
 49367  
 49368      if (contentLength !== null && bytesWritten !== contentLength) {
 49369        if (client[kStrictContentLength]) {
 49370          throw new RequestContentLengthMismatchError()
 49371        } else {
 49372          process.emitWarning(new RequestContentLengthMismatchError())
 49373        }
 49374      }
 49375  
 49376      if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {
 49377        // istanbul ignore else: only for jest
 49378        if (socket[kParser].timeout.refresh) {
 49379          socket[kParser].timeout.refresh()
 49380        }
 49381      }
 49382  
 49383      resume(client)
 49384    }
 49385  
 49386    destroy (err) {
 49387      const { socket, client } = this
 49388  
 49389      socket[kWriting] = false
 49390  
 49391      if (err) {
 49392        assert(client[kRunning] <= 1, 'pipeline should only contain this request')
 49393        util.destroy(socket, err)
 49394      }
 49395    }
 49396  }
 49397  
 49398  function errorRequest (client, request, err) {
 49399    try {
 49400      request.onError(err)
 49401      assert(request.aborted)
 49402    } catch (err) {
 49403      client.emit('error', err)
 49404    }
 49405  }
 49406  
 49407  module.exports = Client
 49408  
 49409  
 49410  /***/ }),
 49411  
 49412  /***/ 56436:
 49413  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 49414  
 49415  "use strict";
 49416  
 49417  
 49418  /* istanbul ignore file: only for Node 12 */
 49419  
 49420  const { kConnected, kSize } = __nccwpck_require__(72785)
 49421  
 49422  class CompatWeakRef {
 49423    constructor (value) {
 49424      this.value = value
 49425    }
 49426  
 49427    deref () {
 49428      return this.value[kConnected] === 0 && this.value[kSize] === 0
 49429        ? undefined
 49430        : this.value
 49431    }
 49432  }
 49433  
 49434  class CompatFinalizer {
 49435    constructor (finalizer) {
 49436      this.finalizer = finalizer
 49437    }
 49438  
 49439    register (dispatcher, key) {
 49440      if (dispatcher.on) {
 49441        dispatcher.on('disconnect', () => {
 49442          if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {
 49443            this.finalizer(key)
 49444          }
 49445        })
 49446      }
 49447    }
 49448  }
 49449  
 49450  module.exports = function () {
 49451    // FIXME: remove workaround when the Node bug is fixed
 49452    // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308
 49453    if (process.env.NODE_V8_COVERAGE) {
 49454      return {
 49455        WeakRef: CompatWeakRef,
 49456        FinalizationRegistry: CompatFinalizer
 49457      }
 49458    }
 49459    return {
 49460      WeakRef: global.WeakRef || CompatWeakRef,
 49461      FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer
 49462    }
 49463  }
 49464  
 49465  
 49466  /***/ }),
 49467  
 49468  /***/ 20663:
 49469  /***/ ((module) => {
 49470  
 49471  "use strict";
 49472  
 49473  
 49474  // https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size
 49475  const maxAttributeValueSize = 1024
 49476  
 49477  // https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size
 49478  const maxNameValuePairSize = 4096
 49479  
 49480  module.exports = {
 49481    maxAttributeValueSize,
 49482    maxNameValuePairSize
 49483  }
 49484  
 49485  
 49486  /***/ }),
 49487  
 49488  /***/ 41724:
 49489  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 49490  
 49491  "use strict";
 49492  
 49493  
 49494  const { parseSetCookie } = __nccwpck_require__(24408)
 49495  const { stringify, getHeadersList } = __nccwpck_require__(43121)
 49496  const { webidl } = __nccwpck_require__(21744)
 49497  const { Headers } = __nccwpck_require__(10554)
 49498  
 49499  /**
 49500   * @typedef {Object} Cookie
 49501   * @property {string} name
 49502   * @property {string} value
 49503   * @property {Date|number|undefined} expires
 49504   * @property {number|undefined} maxAge
 49505   * @property {string|undefined} domain
 49506   * @property {string|undefined} path
 49507   * @property {boolean|undefined} secure
 49508   * @property {boolean|undefined} httpOnly
 49509   * @property {'Strict'|'Lax'|'None'} sameSite
 49510   * @property {string[]} unparsed
 49511   */
 49512  
 49513  /**
 49514   * @param {Headers} headers
 49515   * @returns {Record<string, string>}
 49516   */
 49517  function getCookies (headers) {
 49518    webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' })
 49519  
 49520    webidl.brandCheck(headers, Headers, { strict: false })
 49521  
 49522    const cookie = headers.get('cookie')
 49523    const out = {}
 49524  
 49525    if (!cookie) {
 49526      return out
 49527    }
 49528  
 49529    for (const piece of cookie.split(';')) {
 49530      const [name, ...value] = piece.split('=')
 49531  
 49532      out[name.trim()] = value.join('=')
 49533    }
 49534  
 49535    return out
 49536  }
 49537  
 49538  /**
 49539   * @param {Headers} headers
 49540   * @param {string} name
 49541   * @param {{ path?: string, domain?: string }|undefined} attributes
 49542   * @returns {void}
 49543   */
 49544  function deleteCookie (headers, name, attributes) {
 49545    webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' })
 49546  
 49547    webidl.brandCheck(headers, Headers, { strict: false })
 49548  
 49549    name = webidl.converters.DOMString(name)
 49550    attributes = webidl.converters.DeleteCookieAttributes(attributes)
 49551  
 49552    // Matches behavior of
 49553    // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278
 49554    setCookie(headers, {
 49555      name,
 49556      value: '',
 49557      expires: new Date(0),
 49558      ...attributes
 49559    })
 49560  }
 49561  
 49562  /**
 49563   * @param {Headers} headers
 49564   * @returns {Cookie[]}
 49565   */
 49566  function getSetCookies (headers) {
 49567    webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' })
 49568  
 49569    webidl.brandCheck(headers, Headers, { strict: false })
 49570  
 49571    const cookies = getHeadersList(headers).cookies
 49572  
 49573    if (!cookies) {
 49574      return []
 49575    }
 49576  
 49577    // In older versions of undici, cookies is a list of name:value.
 49578    return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))
 49579  }
 49580  
 49581  /**
 49582   * @param {Headers} headers
 49583   * @param {Cookie} cookie
 49584   * @returns {void}
 49585   */
 49586  function setCookie (headers, cookie) {
 49587    webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' })
 49588  
 49589    webidl.brandCheck(headers, Headers, { strict: false })
 49590  
 49591    cookie = webidl.converters.Cookie(cookie)
 49592  
 49593    const str = stringify(cookie)
 49594  
 49595    if (str) {
 49596      headers.append('Set-Cookie', stringify(cookie))
 49597    }
 49598  }
 49599  
 49600  webidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([
 49601    {
 49602      converter: webidl.nullableConverter(webidl.converters.DOMString),
 49603      key: 'path',
 49604      defaultValue: null
 49605    },
 49606    {
 49607      converter: webidl.nullableConverter(webidl.converters.DOMString),
 49608      key: 'domain',
 49609      defaultValue: null
 49610    }
 49611  ])
 49612  
 49613  webidl.converters.Cookie = webidl.dictionaryConverter([
 49614    {
 49615      converter: webidl.converters.DOMString,
 49616      key: 'name'
 49617    },
 49618    {
 49619      converter: webidl.converters.DOMString,
 49620      key: 'value'
 49621    },
 49622    {
 49623      converter: webidl.nullableConverter((value) => {
 49624        if (typeof value === 'number') {
 49625          return webidl.converters['unsigned long long'](value)
 49626        }
 49627  
 49628        return new Date(value)
 49629      }),
 49630      key: 'expires',
 49631      defaultValue: null
 49632    },
 49633    {
 49634      converter: webidl.nullableConverter(webidl.converters['long long']),
 49635      key: 'maxAge',
 49636      defaultValue: null
 49637    },
 49638    {
 49639      converter: webidl.nullableConverter(webidl.converters.DOMString),
 49640      key: 'domain',
 49641      defaultValue: null
 49642    },
 49643    {
 49644      converter: webidl.nullableConverter(webidl.converters.DOMString),
 49645      key: 'path',
 49646      defaultValue: null
 49647    },
 49648    {
 49649      converter: webidl.nullableConverter(webidl.converters.boolean),
 49650      key: 'secure',
 49651      defaultValue: null
 49652    },
 49653    {
 49654      converter: webidl.nullableConverter(webidl.converters.boolean),
 49655      key: 'httpOnly',
 49656      defaultValue: null
 49657    },
 49658    {
 49659      converter: webidl.converters.USVString,
 49660      key: 'sameSite',
 49661      allowedValues: ['Strict', 'Lax', 'None']
 49662    },
 49663    {
 49664      converter: webidl.sequenceConverter(webidl.converters.DOMString),
 49665      key: 'unparsed',
 49666      defaultValue: []
 49667    }
 49668  ])
 49669  
 49670  module.exports = {
 49671    getCookies,
 49672    deleteCookie,
 49673    getSetCookies,
 49674    setCookie
 49675  }
 49676  
 49677  
 49678  /***/ }),
 49679  
 49680  /***/ 24408:
 49681  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 49682  
 49683  "use strict";
 49684  
 49685  
 49686  const { maxNameValuePairSize, maxAttributeValueSize } = __nccwpck_require__(20663)
 49687  const { isCTLExcludingHtab } = __nccwpck_require__(43121)
 49688  const { collectASequenceOfCodePointsFast } = __nccwpck_require__(685)
 49689  const assert = __nccwpck_require__(39491)
 49690  
 49691  /**
 49692   * @description Parses the field-value attributes of a set-cookie header string.
 49693   * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4
 49694   * @param {string} header
 49695   * @returns if the header is invalid, null will be returned
 49696   */
 49697  function parseSetCookie (header) {
 49698    // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F
 49699    //    character (CTL characters excluding HTAB): Abort these steps and
 49700    //    ignore the set-cookie-string entirely.
 49701    if (isCTLExcludingHtab(header)) {
 49702      return null
 49703    }
 49704  
 49705    let nameValuePair = ''
 49706    let unparsedAttributes = ''
 49707    let name = ''
 49708    let value = ''
 49709  
 49710    // 2. If the set-cookie-string contains a %x3B (";") character:
 49711    if (header.includes(';')) {
 49712      // 1. The name-value-pair string consists of the characters up to,
 49713      //    but not including, the first %x3B (";"), and the unparsed-
 49714      //    attributes consist of the remainder of the set-cookie-string
 49715      //    (including the %x3B (";") in question).
 49716      const position = { position: 0 }
 49717  
 49718      nameValuePair = collectASequenceOfCodePointsFast(';', header, position)
 49719      unparsedAttributes = header.slice(position.position)
 49720    } else {
 49721      // Otherwise:
 49722  
 49723      // 1. The name-value-pair string consists of all the characters
 49724      //    contained in the set-cookie-string, and the unparsed-
 49725      //    attributes is the empty string.
 49726      nameValuePair = header
 49727    }
 49728  
 49729    // 3. If the name-value-pair string lacks a %x3D ("=") character, then
 49730    //    the name string is empty, and the value string is the value of
 49731    //    name-value-pair.
 49732    if (!nameValuePair.includes('=')) {
 49733      value = nameValuePair
 49734    } else {
 49735      //    Otherwise, the name string consists of the characters up to, but
 49736      //    not including, the first %x3D ("=") character, and the (possibly
 49737      //    empty) value string consists of the characters after the first
 49738      //    %x3D ("=") character.
 49739      const position = { position: 0 }
 49740      name = collectASequenceOfCodePointsFast(
 49741        '=',
 49742        nameValuePair,
 49743        position
 49744      )
 49745      value = nameValuePair.slice(position.position + 1)
 49746    }
 49747  
 49748    // 4. Remove any leading or trailing WSP characters from the name
 49749    //    string and the value string.
 49750    name = name.trim()
 49751    value = value.trim()
 49752  
 49753    // 5. If the sum of the lengths of the name string and the value string
 49754    //    is more than 4096 octets, abort these steps and ignore the set-
 49755    //    cookie-string entirely.
 49756    if (name.length + value.length > maxNameValuePairSize) {
 49757      return null
 49758    }
 49759  
 49760    // 6. The cookie-name is the name string, and the cookie-value is the
 49761    //    value string.
 49762    return {
 49763      name, value, ...parseUnparsedAttributes(unparsedAttributes)
 49764    }
 49765  }
 49766  
 49767  /**
 49768   * Parses the remaining attributes of a set-cookie header
 49769   * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4
 49770   * @param {string} unparsedAttributes
 49771   * @param {[Object.<string, unknown>]={}} cookieAttributeList
 49772   */
 49773  function parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) {
 49774    // 1. If the unparsed-attributes string is empty, skip the rest of
 49775    //    these steps.
 49776    if (unparsedAttributes.length === 0) {
 49777      return cookieAttributeList
 49778    }
 49779  
 49780    // 2. Discard the first character of the unparsed-attributes (which
 49781    //    will be a %x3B (";") character).
 49782    assert(unparsedAttributes[0] === ';')
 49783    unparsedAttributes = unparsedAttributes.slice(1)
 49784  
 49785    let cookieAv = ''
 49786  
 49787    // 3. If the remaining unparsed-attributes contains a %x3B (";")
 49788    //    character:
 49789    if (unparsedAttributes.includes(';')) {
 49790      // 1. Consume the characters of the unparsed-attributes up to, but
 49791      //    not including, the first %x3B (";") character.
 49792      cookieAv = collectASequenceOfCodePointsFast(
 49793        ';',
 49794        unparsedAttributes,
 49795        { position: 0 }
 49796      )
 49797      unparsedAttributes = unparsedAttributes.slice(cookieAv.length)
 49798    } else {
 49799      // Otherwise:
 49800  
 49801      // 1. Consume the remainder of the unparsed-attributes.
 49802      cookieAv = unparsedAttributes
 49803      unparsedAttributes = ''
 49804    }
 49805  
 49806    // Let the cookie-av string be the characters consumed in this step.
 49807  
 49808    let attributeName = ''
 49809    let attributeValue = ''
 49810  
 49811    // 4. If the cookie-av string contains a %x3D ("=") character:
 49812    if (cookieAv.includes('=')) {
 49813      // 1. The (possibly empty) attribute-name string consists of the
 49814      //    characters up to, but not including, the first %x3D ("=")
 49815      //    character, and the (possibly empty) attribute-value string
 49816      //    consists of the characters after the first %x3D ("=")
 49817      //    character.
 49818      const position = { position: 0 }
 49819  
 49820      attributeName = collectASequenceOfCodePointsFast(
 49821        '=',
 49822        cookieAv,
 49823        position
 49824      )
 49825      attributeValue = cookieAv.slice(position.position + 1)
 49826    } else {
 49827      // Otherwise:
 49828  
 49829      // 1. The attribute-name string consists of the entire cookie-av
 49830      //    string, and the attribute-value string is empty.
 49831      attributeName = cookieAv
 49832    }
 49833  
 49834    // 5. Remove any leading or trailing WSP characters from the attribute-
 49835    //    name string and the attribute-value string.
 49836    attributeName = attributeName.trim()
 49837    attributeValue = attributeValue.trim()
 49838  
 49839    // 6. If the attribute-value is longer than 1024 octets, ignore the
 49840    //    cookie-av string and return to Step 1 of this algorithm.
 49841    if (attributeValue.length > maxAttributeValueSize) {
 49842      return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)
 49843    }
 49844  
 49845    // 7. Process the attribute-name and attribute-value according to the
 49846    //    requirements in the following subsections.  (Notice that
 49847    //    attributes with unrecognized attribute-names are ignored.)
 49848    const attributeNameLowercase = attributeName.toLowerCase()
 49849  
 49850    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1
 49851    // If the attribute-name case-insensitively matches the string
 49852    // "Expires", the user agent MUST process the cookie-av as follows.
 49853    if (attributeNameLowercase === 'expires') {
 49854      // 1. Let the expiry-time be the result of parsing the attribute-value
 49855      //    as cookie-date (see Section 5.1.1).
 49856      const expiryTime = new Date(attributeValue)
 49857  
 49858      // 2. If the attribute-value failed to parse as a cookie date, ignore
 49859      //    the cookie-av.
 49860  
 49861      cookieAttributeList.expires = expiryTime
 49862    } else if (attributeNameLowercase === 'max-age') {
 49863      // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2
 49864      // If the attribute-name case-insensitively matches the string "Max-
 49865      // Age", the user agent MUST process the cookie-av as follows.
 49866  
 49867      // 1. If the first character of the attribute-value is not a DIGIT or a
 49868      //    "-" character, ignore the cookie-av.
 49869      const charCode = attributeValue.charCodeAt(0)
 49870  
 49871      if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') {
 49872        return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)
 49873      }
 49874  
 49875      // 2. If the remainder of attribute-value contains a non-DIGIT
 49876      //    character, ignore the cookie-av.
 49877      if (!/^\d+$/.test(attributeValue)) {
 49878        return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)
 49879      }
 49880  
 49881      // 3. Let delta-seconds be the attribute-value converted to an integer.
 49882      const deltaSeconds = Number(attributeValue)
 49883  
 49884      // 4. Let cookie-age-limit be the maximum age of the cookie (which
 49885      //    SHOULD be 400 days or less, see Section 4.1.2.2).
 49886  
 49887      // 5. Set delta-seconds to the smaller of its present value and cookie-
 49888      //    age-limit.
 49889      // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs)
 49890  
 49891      // 6. If delta-seconds is less than or equal to zero (0), let expiry-
 49892      //    time be the earliest representable date and time.  Otherwise, let
 49893      //    the expiry-time be the current date and time plus delta-seconds
 49894      //    seconds.
 49895      // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds
 49896  
 49897      // 7. Append an attribute to the cookie-attribute-list with an
 49898      //    attribute-name of Max-Age and an attribute-value of expiry-time.
 49899      cookieAttributeList.maxAge = deltaSeconds
 49900    } else if (attributeNameLowercase === 'domain') {
 49901      // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3
 49902      // If the attribute-name case-insensitively matches the string "Domain",
 49903      // the user agent MUST process the cookie-av as follows.
 49904  
 49905      // 1. Let cookie-domain be the attribute-value.
 49906      let cookieDomain = attributeValue
 49907  
 49908      // 2. If cookie-domain starts with %x2E ("."), let cookie-domain be
 49909      //    cookie-domain without its leading %x2E (".").
 49910      if (cookieDomain[0] === '.') {
 49911        cookieDomain = cookieDomain.slice(1)
 49912      }
 49913  
 49914      // 3. Convert the cookie-domain to lower case.
 49915      cookieDomain = cookieDomain.toLowerCase()
 49916  
 49917      // 4. Append an attribute to the cookie-attribute-list with an
 49918      //    attribute-name of Domain and an attribute-value of cookie-domain.
 49919      cookieAttributeList.domain = cookieDomain
 49920    } else if (attributeNameLowercase === 'path') {
 49921      // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4
 49922      // If the attribute-name case-insensitively matches the string "Path",
 49923      // the user agent MUST process the cookie-av as follows.
 49924  
 49925      // 1. If the attribute-value is empty or if the first character of the
 49926      //    attribute-value is not %x2F ("/"):
 49927      let cookiePath = ''
 49928      if (attributeValue.length === 0 || attributeValue[0] !== '/') {
 49929        // 1. Let cookie-path be the default-path.
 49930        cookiePath = '/'
 49931      } else {
 49932        // Otherwise:
 49933  
 49934        // 1. Let cookie-path be the attribute-value.
 49935        cookiePath = attributeValue
 49936      }
 49937  
 49938      // 2. Append an attribute to the cookie-attribute-list with an
 49939      //    attribute-name of Path and an attribute-value of cookie-path.
 49940      cookieAttributeList.path = cookiePath
 49941    } else if (attributeNameLowercase === 'secure') {
 49942      // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5
 49943      // If the attribute-name case-insensitively matches the string "Secure",
 49944      // the user agent MUST append an attribute to the cookie-attribute-list
 49945      // with an attribute-name of Secure and an empty attribute-value.
 49946  
 49947      cookieAttributeList.secure = true
 49948    } else if (attributeNameLowercase === 'httponly') {
 49949      // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6
 49950      // If the attribute-name case-insensitively matches the string
 49951      // "HttpOnly", the user agent MUST append an attribute to the cookie-
 49952      // attribute-list with an attribute-name of HttpOnly and an empty
 49953      // attribute-value.
 49954  
 49955      cookieAttributeList.httpOnly = true
 49956    } else if (attributeNameLowercase === 'samesite') {
 49957      // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7
 49958      // If the attribute-name case-insensitively matches the string
 49959      // "SameSite", the user agent MUST process the cookie-av as follows:
 49960  
 49961      // 1. Let enforcement be "Default".
 49962      let enforcement = 'Default'
 49963  
 49964      const attributeValueLowercase = attributeValue.toLowerCase()
 49965      // 2. If cookie-av's attribute-value is a case-insensitive match for
 49966      //    "None", set enforcement to "None".
 49967      if (attributeValueLowercase.includes('none')) {
 49968        enforcement = 'None'
 49969      }
 49970  
 49971      // 3. If cookie-av's attribute-value is a case-insensitive match for
 49972      //    "Strict", set enforcement to "Strict".
 49973      if (attributeValueLowercase.includes('strict')) {
 49974        enforcement = 'Strict'
 49975      }
 49976  
 49977      // 4. If cookie-av's attribute-value is a case-insensitive match for
 49978      //    "Lax", set enforcement to "Lax".
 49979      if (attributeValueLowercase.includes('lax')) {
 49980        enforcement = 'Lax'
 49981      }
 49982  
 49983      // 5. Append an attribute to the cookie-attribute-list with an
 49984      //    attribute-name of "SameSite" and an attribute-value of
 49985      //    enforcement.
 49986      cookieAttributeList.sameSite = enforcement
 49987    } else {
 49988      cookieAttributeList.unparsed ??= []
 49989  
 49990      cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)
 49991    }
 49992  
 49993    // 8. Return to Step 1 of this algorithm.
 49994    return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)
 49995  }
 49996  
 49997  module.exports = {
 49998    parseSetCookie,
 49999    parseUnparsedAttributes
 50000  }
 50001  
 50002  
 50003  /***/ }),
 50004  
 50005  /***/ 43121:
 50006  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 50007  
 50008  "use strict";
 50009  
 50010  
 50011  const assert = __nccwpck_require__(39491)
 50012  const { kHeadersList } = __nccwpck_require__(72785)
 50013  
 50014  function isCTLExcludingHtab (value) {
 50015    if (value.length === 0) {
 50016      return false
 50017    }
 50018  
 50019    for (const char of value) {
 50020      const code = char.charCodeAt(0)
 50021  
 50022      if (
 50023        (code >= 0x00 || code <= 0x08) ||
 50024        (code >= 0x0A || code <= 0x1F) ||
 50025        code === 0x7F
 50026      ) {
 50027        return false
 50028      }
 50029    }
 50030  }
 50031  
 50032  /**
 50033   CHAR           = <any US-ASCII character (octets 0 - 127)>
 50034   token          = 1*<any CHAR except CTLs or separators>
 50035   separators     = "(" | ")" | "<" | ">" | "@"
 50036                  | "," | ";" | ":" | "\" | <">
 50037                  | "/" | "[" | "]" | "?" | "="
 50038                  | "{" | "}" | SP | HT
 50039   * @param {string} name
 50040   */
 50041  function validateCookieName (name) {
 50042    for (const char of name) {
 50043      const code = char.charCodeAt(0)
 50044  
 50045      if (
 50046        (code <= 0x20 || code > 0x7F) ||
 50047        char === '(' ||
 50048        char === ')' ||
 50049        char === '>' ||
 50050        char === '<' ||
 50051        char === '@' ||
 50052        char === ',' ||
 50053        char === ';' ||
 50054        char === ':' ||
 50055        char === '\\' ||
 50056        char === '"' ||
 50057        char === '/' ||
 50058        char === '[' ||
 50059        char === ']' ||
 50060        char === '?' ||
 50061        char === '=' ||
 50062        char === '{' ||
 50063        char === '}'
 50064      ) {
 50065        throw new Error('Invalid cookie name')
 50066      }
 50067    }
 50068  }
 50069  
 50070  /**
 50071   cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )
 50072   cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
 50073                         ; US-ASCII characters excluding CTLs,
 50074                         ; whitespace DQUOTE, comma, semicolon,
 50075                         ; and backslash
 50076   * @param {string} value
 50077   */
 50078  function validateCookieValue (value) {
 50079    for (const char of value) {
 50080      const code = char.charCodeAt(0)
 50081  
 50082      if (
 50083        code < 0x21 || // exclude CTLs (0-31)
 50084        code === 0x22 ||
 50085        code === 0x2C ||
 50086        code === 0x3B ||
 50087        code === 0x5C ||
 50088        code > 0x7E // non-ascii
 50089      ) {
 50090        throw new Error('Invalid header value')
 50091      }
 50092    }
 50093  }
 50094  
 50095  /**
 50096   * path-value        = <any CHAR except CTLs or ";">
 50097   * @param {string} path
 50098   */
 50099  function validateCookiePath (path) {
 50100    for (const char of path) {
 50101      const code = char.charCodeAt(0)
 50102  
 50103      if (code < 0x21 || char === ';') {
 50104        throw new Error('Invalid cookie path')
 50105      }
 50106    }
 50107  }
 50108  
 50109  /**
 50110   * I have no idea why these values aren't allowed to be honest,
 50111   * but Deno tests these. - Khafra
 50112   * @param {string} domain
 50113   */
 50114  function validateCookieDomain (domain) {
 50115    if (
 50116      domain.startsWith('-') ||
 50117      domain.endsWith('.') ||
 50118      domain.endsWith('-')
 50119    ) {
 50120      throw new Error('Invalid cookie domain')
 50121    }
 50122  }
 50123  
 50124  /**
 50125   * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1
 50126   * @param {number|Date} date
 50127    IMF-fixdate  = day-name "," SP date1 SP time-of-day SP GMT
 50128    ; fixed length/zone/capitalization subset of the format
 50129    ; see Section 3.3 of [RFC5322]
 50130  
 50131    day-name     = %x4D.6F.6E ; "Mon", case-sensitive
 50132                / %x54.75.65 ; "Tue", case-sensitive
 50133                / %x57.65.64 ; "Wed", case-sensitive
 50134                / %x54.68.75 ; "Thu", case-sensitive
 50135                / %x46.72.69 ; "Fri", case-sensitive
 50136                / %x53.61.74 ; "Sat", case-sensitive
 50137                / %x53.75.6E ; "Sun", case-sensitive
 50138    date1        = day SP month SP year
 50139                    ; e.g., 02 Jun 1982
 50140  
 50141    day          = 2DIGIT
 50142    month        = %x4A.61.6E ; "Jan", case-sensitive
 50143                / %x46.65.62 ; "Feb", case-sensitive
 50144                / %x4D.61.72 ; "Mar", case-sensitive
 50145                / %x41.70.72 ; "Apr", case-sensitive
 50146                / %x4D.61.79 ; "May", case-sensitive
 50147                / %x4A.75.6E ; "Jun", case-sensitive
 50148                / %x4A.75.6C ; "Jul", case-sensitive
 50149                / %x41.75.67 ; "Aug", case-sensitive
 50150                / %x53.65.70 ; "Sep", case-sensitive
 50151                / %x4F.63.74 ; "Oct", case-sensitive
 50152                / %x4E.6F.76 ; "Nov", case-sensitive
 50153                / %x44.65.63 ; "Dec", case-sensitive
 50154    year         = 4DIGIT
 50155  
 50156    GMT          = %x47.4D.54 ; "GMT", case-sensitive
 50157  
 50158    time-of-day  = hour ":" minute ":" second
 50159                ; 00:00:00 - 23:59:60 (leap second)
 50160  
 50161    hour         = 2DIGIT
 50162    minute       = 2DIGIT
 50163    second       = 2DIGIT
 50164   */
 50165  function toIMFDate (date) {
 50166    if (typeof date === 'number') {
 50167      date = new Date(date)
 50168    }
 50169  
 50170    const days = [
 50171      'Sun', 'Mon', 'Tue', 'Wed',
 50172      'Thu', 'Fri', 'Sat'
 50173    ]
 50174  
 50175    const months = [
 50176      'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
 50177      'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
 50178    ]
 50179  
 50180    const dayName = days[date.getUTCDay()]
 50181    const day = date.getUTCDate().toString().padStart(2, '0')
 50182    const month = months[date.getUTCMonth()]
 50183    const year = date.getUTCFullYear()
 50184    const hour = date.getUTCHours().toString().padStart(2, '0')
 50185    const minute = date.getUTCMinutes().toString().padStart(2, '0')
 50186    const second = date.getUTCSeconds().toString().padStart(2, '0')
 50187  
 50188    return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`
 50189  }
 50190  
 50191  /**
 50192   max-age-av        = "Max-Age=" non-zero-digit *DIGIT
 50193                         ; In practice, both expires-av and max-age-av
 50194                         ; are limited to dates representable by the
 50195                         ; user agent.
 50196   * @param {number} maxAge
 50197   */
 50198  function validateCookieMaxAge (maxAge) {
 50199    if (maxAge < 0) {
 50200      throw new Error('Invalid cookie max-age')
 50201    }
 50202  }
 50203  
 50204  /**
 50205   * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1
 50206   * @param {import('./index').Cookie} cookie
 50207   */
 50208  function stringify (cookie) {
 50209    if (cookie.name.length === 0) {
 50210      return null
 50211    }
 50212  
 50213    validateCookieName(cookie.name)
 50214    validateCookieValue(cookie.value)
 50215  
 50216    const out = [`${cookie.name}=${cookie.value}`]
 50217  
 50218    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1
 50219    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2
 50220    if (cookie.name.startsWith('__Secure-')) {
 50221      cookie.secure = true
 50222    }
 50223  
 50224    if (cookie.name.startsWith('__Host-')) {
 50225      cookie.secure = true
 50226      cookie.domain = null
 50227      cookie.path = '/'
 50228    }
 50229  
 50230    if (cookie.secure) {
 50231      out.push('Secure')
 50232    }
 50233  
 50234    if (cookie.httpOnly) {
 50235      out.push('HttpOnly')
 50236    }
 50237  
 50238    if (typeof cookie.maxAge === 'number') {
 50239      validateCookieMaxAge(cookie.maxAge)
 50240      out.push(`Max-Age=${cookie.maxAge}`)
 50241    }
 50242  
 50243    if (cookie.domain) {
 50244      validateCookieDomain(cookie.domain)
 50245      out.push(`Domain=${cookie.domain}`)
 50246    }
 50247  
 50248    if (cookie.path) {
 50249      validateCookiePath(cookie.path)
 50250      out.push(`Path=${cookie.path}`)
 50251    }
 50252  
 50253    if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') {
 50254      out.push(`Expires=${toIMFDate(cookie.expires)}`)
 50255    }
 50256  
 50257    if (cookie.sameSite) {
 50258      out.push(`SameSite=${cookie.sameSite}`)
 50259    }
 50260  
 50261    for (const part of cookie.unparsed) {
 50262      if (!part.includes('=')) {
 50263        throw new Error('Invalid unparsed')
 50264      }
 50265  
 50266      const [key, ...value] = part.split('=')
 50267  
 50268      out.push(`${key.trim()}=${value.join('=')}`)
 50269    }
 50270  
 50271    return out.join('; ')
 50272  }
 50273  
 50274  let kHeadersListNode
 50275  
 50276  function getHeadersList (headers) {
 50277    if (headers[kHeadersList]) {
 50278      return headers[kHeadersList]
 50279    }
 50280  
 50281    if (!kHeadersListNode) {
 50282      kHeadersListNode = Object.getOwnPropertySymbols(headers).find(
 50283        (symbol) => symbol.description === 'headers list'
 50284      )
 50285  
 50286      assert(kHeadersListNode, 'Headers cannot be parsed')
 50287    }
 50288  
 50289    const headersList = headers[kHeadersListNode]
 50290    assert(headersList)
 50291  
 50292    return headersList
 50293  }
 50294  
 50295  module.exports = {
 50296    isCTLExcludingHtab,
 50297    stringify,
 50298    getHeadersList
 50299  }
 50300  
 50301  
 50302  /***/ }),
 50303  
 50304  /***/ 82067:
 50305  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 50306  
 50307  "use strict";
 50308  
 50309  
 50310  const net = __nccwpck_require__(41808)
 50311  const assert = __nccwpck_require__(39491)
 50312  const util = __nccwpck_require__(83983)
 50313  const { InvalidArgumentError, ConnectTimeoutError } = __nccwpck_require__(48045)
 50314  
 50315  let tls // include tls conditionally since it is not always available
 50316  
 50317  // TODO: session re-use does not wait for the first
 50318  // connection to resolve the session and might therefore
 50319  // resolve the same servername multiple times even when
 50320  // re-use is enabled.
 50321  
 50322  let SessionCache
 50323  // FIXME: remove workaround when the Node bug is fixed
 50324  // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308
 50325  if (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) {
 50326    SessionCache = class WeakSessionCache {
 50327      constructor (maxCachedSessions) {
 50328        this._maxCachedSessions = maxCachedSessions
 50329        this._sessionCache = new Map()
 50330        this._sessionRegistry = new global.FinalizationRegistry((key) => {
 50331          if (this._sessionCache.size < this._maxCachedSessions) {
 50332            return
 50333          }
 50334  
 50335          const ref = this._sessionCache.get(key)
 50336          if (ref !== undefined && ref.deref() === undefined) {
 50337            this._sessionCache.delete(key)
 50338          }
 50339        })
 50340      }
 50341  
 50342      get (sessionKey) {
 50343        const ref = this._sessionCache.get(sessionKey)
 50344        return ref ? ref.deref() : null
 50345      }
 50346  
 50347      set (sessionKey, session) {
 50348        if (this._maxCachedSessions === 0) {
 50349          return
 50350        }
 50351  
 50352        this._sessionCache.set(sessionKey, new WeakRef(session))
 50353        this._sessionRegistry.register(session, sessionKey)
 50354      }
 50355    }
 50356  } else {
 50357    SessionCache = class SimpleSessionCache {
 50358      constructor (maxCachedSessions) {
 50359        this._maxCachedSessions = maxCachedSessions
 50360        this._sessionCache = new Map()
 50361      }
 50362  
 50363      get (sessionKey) {
 50364        return this._sessionCache.get(sessionKey)
 50365      }
 50366  
 50367      set (sessionKey, session) {
 50368        if (this._maxCachedSessions === 0) {
 50369          return
 50370        }
 50371  
 50372        if (this._sessionCache.size >= this._maxCachedSessions) {
 50373          // remove the oldest session
 50374          const { value: oldestKey } = this._sessionCache.keys().next()
 50375          this._sessionCache.delete(oldestKey)
 50376        }
 50377  
 50378        this._sessionCache.set(sessionKey, session)
 50379      }
 50380    }
 50381  }
 50382  
 50383  function buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) {
 50384    if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {
 50385      throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')
 50386    }
 50387  
 50388    const options = { path: socketPath, ...opts }
 50389    const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)
 50390    timeout = timeout == null ? 10e3 : timeout
 50391    allowH2 = allowH2 != null ? allowH2 : false
 50392    return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {
 50393      let socket
 50394      if (protocol === 'https:') {
 50395        if (!tls) {
 50396          tls = __nccwpck_require__(24404)
 50397        }
 50398        servername = servername || options.servername || util.getServerName(host) || null
 50399  
 50400        const sessionKey = servername || hostname
 50401        const session = sessionCache.get(sessionKey) || null
 50402  
 50403        assert(sessionKey)
 50404  
 50405        socket = tls.connect({
 50406          highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...
 50407          ...options,
 50408          servername,
 50409          session,
 50410          localAddress,
 50411          // TODO(HTTP/2): Add support for h2c
 50412          ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],
 50413          socket: httpSocket, // upgrade socket connection
 50414          port: port || 443,
 50415          host: hostname
 50416        })
 50417  
 50418        socket
 50419          .on('session', function (session) {
 50420            // TODO (fix): Can a session become invalid once established? Don't think so?
 50421            sessionCache.set(sessionKey, session)
 50422          })
 50423      } else {
 50424        assert(!httpSocket, 'httpSocket can only be sent on TLS update')
 50425        socket = net.connect({
 50426          highWaterMark: 64 * 1024, // Same as nodejs fs streams.
 50427          ...options,
 50428          localAddress,
 50429          port: port || 80,
 50430          host: hostname
 50431        })
 50432      }
 50433  
 50434      // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket
 50435      if (options.keepAlive == null || options.keepAlive) {
 50436        const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay
 50437        socket.setKeepAlive(true, keepAliveInitialDelay)
 50438      }
 50439  
 50440      const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout)
 50441  
 50442      socket
 50443        .setNoDelay(true)
 50444        .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {
 50445          cancelTimeout()
 50446  
 50447          if (callback) {
 50448            const cb = callback
 50449            callback = null
 50450            cb(null, this)
 50451          }
 50452        })
 50453        .on('error', function (err) {
 50454          cancelTimeout()
 50455  
 50456          if (callback) {
 50457            const cb = callback
 50458            callback = null
 50459            cb(err)
 50460          }
 50461        })
 50462  
 50463      return socket
 50464    }
 50465  }
 50466  
 50467  function setupTimeout (onConnectTimeout, timeout) {
 50468    if (!timeout) {
 50469      return () => {}
 50470    }
 50471  
 50472    let s1 = null
 50473    let s2 = null
 50474    const timeoutId = setTimeout(() => {
 50475      // setImmediate is added to make sure that we priotorise socket error events over timeouts
 50476      s1 = setImmediate(() => {
 50477        if (process.platform === 'win32') {
 50478          // Windows needs an extra setImmediate probably due to implementation differences in the socket logic
 50479          s2 = setImmediate(() => onConnectTimeout())
 50480        } else {
 50481          onConnectTimeout()
 50482        }
 50483      })
 50484    }, timeout)
 50485    return () => {
 50486      clearTimeout(timeoutId)
 50487      clearImmediate(s1)
 50488      clearImmediate(s2)
 50489    }
 50490  }
 50491  
 50492  function onConnectTimeout (socket) {
 50493    util.destroy(socket, new ConnectTimeoutError())
 50494  }
 50495  
 50496  module.exports = buildConnector
 50497  
 50498  
 50499  /***/ }),
 50500  
 50501  /***/ 14462:
 50502  /***/ ((module) => {
 50503  
 50504  "use strict";
 50505  
 50506  
 50507  /** @type {Record<string, string | undefined>} */
 50508  const headerNameLowerCasedRecord = {}
 50509  
 50510  // https://developer.mozilla.org/docs/Web/HTTP/Headers
 50511  const wellknownHeaderNames = [
 50512    'Accept',
 50513    'Accept-Encoding',
 50514    'Accept-Language',
 50515    'Accept-Ranges',
 50516    'Access-Control-Allow-Credentials',
 50517    'Access-Control-Allow-Headers',
 50518    'Access-Control-Allow-Methods',
 50519    'Access-Control-Allow-Origin',
 50520    'Access-Control-Expose-Headers',
 50521    'Access-Control-Max-Age',
 50522    'Access-Control-Request-Headers',
 50523    'Access-Control-Request-Method',
 50524    'Age',
 50525    'Allow',
 50526    'Alt-Svc',
 50527    'Alt-Used',
 50528    'Authorization',
 50529    'Cache-Control',
 50530    'Clear-Site-Data',
 50531    'Connection',
 50532    'Content-Disposition',
 50533    'Content-Encoding',
 50534    'Content-Language',
 50535    'Content-Length',
 50536    'Content-Location',
 50537    'Content-Range',
 50538    'Content-Security-Policy',
 50539    'Content-Security-Policy-Report-Only',
 50540    'Content-Type',
 50541    'Cookie',
 50542    'Cross-Origin-Embedder-Policy',
 50543    'Cross-Origin-Opener-Policy',
 50544    'Cross-Origin-Resource-Policy',
 50545    'Date',
 50546    'Device-Memory',
 50547    'Downlink',
 50548    'ECT',
 50549    'ETag',
 50550    'Expect',
 50551    'Expect-CT',
 50552    'Expires',
 50553    'Forwarded',
 50554    'From',
 50555    'Host',
 50556    'If-Match',
 50557    'If-Modified-Since',
 50558    'If-None-Match',
 50559    'If-Range',
 50560    'If-Unmodified-Since',
 50561    'Keep-Alive',
 50562    'Last-Modified',
 50563    'Link',
 50564    'Location',
 50565    'Max-Forwards',
 50566    'Origin',
 50567    'Permissions-Policy',
 50568    'Pragma',
 50569    'Proxy-Authenticate',
 50570    'Proxy-Authorization',
 50571    'RTT',
 50572    'Range',
 50573    'Referer',
 50574    'Referrer-Policy',
 50575    'Refresh',
 50576    'Retry-After',
 50577    'Sec-WebSocket-Accept',
 50578    'Sec-WebSocket-Extensions',
 50579    'Sec-WebSocket-Key',
 50580    'Sec-WebSocket-Protocol',
 50581    'Sec-WebSocket-Version',
 50582    'Server',
 50583    'Server-Timing',
 50584    'Service-Worker-Allowed',
 50585    'Service-Worker-Navigation-Preload',
 50586    'Set-Cookie',
 50587    'SourceMap',
 50588    'Strict-Transport-Security',
 50589    'Supports-Loading-Mode',
 50590    'TE',
 50591    'Timing-Allow-Origin',
 50592    'Trailer',
 50593    'Transfer-Encoding',
 50594    'Upgrade',
 50595    'Upgrade-Insecure-Requests',
 50596    'User-Agent',
 50597    'Vary',
 50598    'Via',
 50599    'WWW-Authenticate',
 50600    'X-Content-Type-Options',
 50601    'X-DNS-Prefetch-Control',
 50602    'X-Frame-Options',
 50603    'X-Permitted-Cross-Domain-Policies',
 50604    'X-Powered-By',
 50605    'X-Requested-With',
 50606    'X-XSS-Protection'
 50607  ]
 50608  
 50609  for (let i = 0; i < wellknownHeaderNames.length; ++i) {
 50610    const key = wellknownHeaderNames[i]
 50611    const lowerCasedKey = key.toLowerCase()
 50612    headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =
 50613      lowerCasedKey
 50614  }
 50615  
 50616  // Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.
 50617  Object.setPrototypeOf(headerNameLowerCasedRecord, null)
 50618  
 50619  module.exports = {
 50620    wellknownHeaderNames,
 50621    headerNameLowerCasedRecord
 50622  }
 50623  
 50624  
 50625  /***/ }),
 50626  
 50627  /***/ 48045:
 50628  /***/ ((module) => {
 50629  
 50630  "use strict";
 50631  
 50632  
 50633  class UndiciError extends Error {
 50634    constructor (message) {
 50635      super(message)
 50636      this.name = 'UndiciError'
 50637      this.code = 'UND_ERR'
 50638    }
 50639  }
 50640  
 50641  class ConnectTimeoutError extends UndiciError {
 50642    constructor (message) {
 50643      super(message)
 50644      Error.captureStackTrace(this, ConnectTimeoutError)
 50645      this.name = 'ConnectTimeoutError'
 50646      this.message = message || 'Connect Timeout Error'
 50647      this.code = 'UND_ERR_CONNECT_TIMEOUT'
 50648    }
 50649  }
 50650  
 50651  class HeadersTimeoutError extends UndiciError {
 50652    constructor (message) {
 50653      super(message)
 50654      Error.captureStackTrace(this, HeadersTimeoutError)
 50655      this.name = 'HeadersTimeoutError'
 50656      this.message = message || 'Headers Timeout Error'
 50657      this.code = 'UND_ERR_HEADERS_TIMEOUT'
 50658    }
 50659  }
 50660  
 50661  class HeadersOverflowError extends UndiciError {
 50662    constructor (message) {
 50663      super(message)
 50664      Error.captureStackTrace(this, HeadersOverflowError)
 50665      this.name = 'HeadersOverflowError'
 50666      this.message = message || 'Headers Overflow Error'
 50667      this.code = 'UND_ERR_HEADERS_OVERFLOW'
 50668    }
 50669  }
 50670  
 50671  class BodyTimeoutError extends UndiciError {
 50672    constructor (message) {
 50673      super(message)
 50674      Error.captureStackTrace(this, BodyTimeoutError)
 50675      this.name = 'BodyTimeoutError'
 50676      this.message = message || 'Body Timeout Error'
 50677      this.code = 'UND_ERR_BODY_TIMEOUT'
 50678    }
 50679  }
 50680  
 50681  class ResponseStatusCodeError extends UndiciError {
 50682    constructor (message, statusCode, headers, body) {
 50683      super(message)
 50684      Error.captureStackTrace(this, ResponseStatusCodeError)
 50685      this.name = 'ResponseStatusCodeError'
 50686      this.message = message || 'Response Status Code Error'
 50687      this.code = 'UND_ERR_RESPONSE_STATUS_CODE'
 50688      this.body = body
 50689      this.status = statusCode
 50690      this.statusCode = statusCode
 50691      this.headers = headers
 50692    }
 50693  }
 50694  
 50695  class InvalidArgumentError extends UndiciError {
 50696    constructor (message) {
 50697      super(message)
 50698      Error.captureStackTrace(this, InvalidArgumentError)
 50699      this.name = 'InvalidArgumentError'
 50700      this.message = message || 'Invalid Argument Error'
 50701      this.code = 'UND_ERR_INVALID_ARG'
 50702    }
 50703  }
 50704  
 50705  class InvalidReturnValueError extends UndiciError {
 50706    constructor (message) {
 50707      super(message)
 50708      Error.captureStackTrace(this, InvalidReturnValueError)
 50709      this.name = 'InvalidReturnValueError'
 50710      this.message = message || 'Invalid Return Value Error'
 50711      this.code = 'UND_ERR_INVALID_RETURN_VALUE'
 50712    }
 50713  }
 50714  
 50715  class RequestAbortedError extends UndiciError {
 50716    constructor (message) {
 50717      super(message)
 50718      Error.captureStackTrace(this, RequestAbortedError)
 50719      this.name = 'AbortError'
 50720      this.message = message || 'Request aborted'
 50721      this.code = 'UND_ERR_ABORTED'
 50722    }
 50723  }
 50724  
 50725  class InformationalError extends UndiciError {
 50726    constructor (message) {
 50727      super(message)
 50728      Error.captureStackTrace(this, InformationalError)
 50729      this.name = 'InformationalError'
 50730      this.message = message || 'Request information'
 50731      this.code = 'UND_ERR_INFO'
 50732    }
 50733  }
 50734  
 50735  class RequestContentLengthMismatchError extends UndiciError {
 50736    constructor (message) {
 50737      super(message)
 50738      Error.captureStackTrace(this, RequestContentLengthMismatchError)
 50739      this.name = 'RequestContentLengthMismatchError'
 50740      this.message = message || 'Request body length does not match content-length header'
 50741      this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'
 50742    }
 50743  }
 50744  
 50745  class ResponseContentLengthMismatchError extends UndiciError {
 50746    constructor (message) {
 50747      super(message)
 50748      Error.captureStackTrace(this, ResponseContentLengthMismatchError)
 50749      this.name = 'ResponseContentLengthMismatchError'
 50750      this.message = message || 'Response body length does not match content-length header'
 50751      this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'
 50752    }
 50753  }
 50754  
 50755  class ClientDestroyedError extends UndiciError {
 50756    constructor (message) {
 50757      super(message)
 50758      Error.captureStackTrace(this, ClientDestroyedError)
 50759      this.name = 'ClientDestroyedError'
 50760      this.message = message || 'The client is destroyed'
 50761      this.code = 'UND_ERR_DESTROYED'
 50762    }
 50763  }
 50764  
 50765  class ClientClosedError extends UndiciError {
 50766    constructor (message) {
 50767      super(message)
 50768      Error.captureStackTrace(this, ClientClosedError)
 50769      this.name = 'ClientClosedError'
 50770      this.message = message || 'The client is closed'
 50771      this.code = 'UND_ERR_CLOSED'
 50772    }
 50773  }
 50774  
 50775  class SocketError extends UndiciError {
 50776    constructor (message, socket) {
 50777      super(message)
 50778      Error.captureStackTrace(this, SocketError)
 50779      this.name = 'SocketError'
 50780      this.message = message || 'Socket error'
 50781      this.code = 'UND_ERR_SOCKET'
 50782      this.socket = socket
 50783    }
 50784  }
 50785  
 50786  class NotSupportedError extends UndiciError {
 50787    constructor (message) {
 50788      super(message)
 50789      Error.captureStackTrace(this, NotSupportedError)
 50790      this.name = 'NotSupportedError'
 50791      this.message = message || 'Not supported error'
 50792      this.code = 'UND_ERR_NOT_SUPPORTED'
 50793    }
 50794  }
 50795  
 50796  class BalancedPoolMissingUpstreamError extends UndiciError {
 50797    constructor (message) {
 50798      super(message)
 50799      Error.captureStackTrace(this, NotSupportedError)
 50800      this.name = 'MissingUpstreamError'
 50801      this.message = message || 'No upstream has been added to the BalancedPool'
 50802      this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'
 50803    }
 50804  }
 50805  
 50806  class HTTPParserError extends Error {
 50807    constructor (message, code, data) {
 50808      super(message)
 50809      Error.captureStackTrace(this, HTTPParserError)
 50810      this.name = 'HTTPParserError'
 50811      this.code = code ? `HPE_${code}` : undefined
 50812      this.data = data ? data.toString() : undefined
 50813    }
 50814  }
 50815  
 50816  class ResponseExceededMaxSizeError extends UndiciError {
 50817    constructor (message) {
 50818      super(message)
 50819      Error.captureStackTrace(this, ResponseExceededMaxSizeError)
 50820      this.name = 'ResponseExceededMaxSizeError'
 50821      this.message = message || 'Response content exceeded max size'
 50822      this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'
 50823    }
 50824  }
 50825  
 50826  class RequestRetryError extends UndiciError {
 50827    constructor (message, code, { headers, data }) {
 50828      super(message)
 50829      Error.captureStackTrace(this, RequestRetryError)
 50830      this.name = 'RequestRetryError'
 50831      this.message = message || 'Request retry error'
 50832      this.code = 'UND_ERR_REQ_RETRY'
 50833      this.statusCode = code
 50834      this.data = data
 50835      this.headers = headers
 50836    }
 50837  }
 50838  
 50839  module.exports = {
 50840    HTTPParserError,
 50841    UndiciError,
 50842    HeadersTimeoutError,
 50843    HeadersOverflowError,
 50844    BodyTimeoutError,
 50845    RequestContentLengthMismatchError,
 50846    ConnectTimeoutError,
 50847    ResponseStatusCodeError,
 50848    InvalidArgumentError,
 50849    InvalidReturnValueError,
 50850    RequestAbortedError,
 50851    ClientDestroyedError,
 50852    ClientClosedError,
 50853    InformationalError,
 50854    SocketError,
 50855    NotSupportedError,
 50856    ResponseContentLengthMismatchError,
 50857    BalancedPoolMissingUpstreamError,
 50858    ResponseExceededMaxSizeError,
 50859    RequestRetryError
 50860  }
 50861  
 50862  
 50863  /***/ }),
 50864  
 50865  /***/ 62905:
 50866  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 50867  
 50868  "use strict";
 50869  
 50870  
 50871  const {
 50872    InvalidArgumentError,
 50873    NotSupportedError
 50874  } = __nccwpck_require__(48045)
 50875  const assert = __nccwpck_require__(39491)
 50876  const { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = __nccwpck_require__(72785)
 50877  const util = __nccwpck_require__(83983)
 50878  
 50879  // tokenRegExp and headerCharRegex have been lifted from
 50880  // https://github.com/nodejs/node/blob/main/lib/_http_common.js
 50881  
 50882  /**
 50883   * Verifies that the given val is a valid HTTP token
 50884   * per the rules defined in RFC 7230
 50885   * See https://tools.ietf.org/html/rfc7230#section-3.2.6
 50886   */
 50887  const tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/
 50888  
 50889  /**
 50890   * Matches if val contains an invalid field-vchar
 50891   *  field-value    = *( field-content / obs-fold )
 50892   *  field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]
 50893   *  field-vchar    = VCHAR / obs-text
 50894   */
 50895  const headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/
 50896  
 50897  // Verifies that a given path is valid does not contain control chars \x00 to \x20
 50898  const invalidPathRegex = /[^\u0021-\u00ff]/
 50899  
 50900  const kHandler = Symbol('handler')
 50901  
 50902  const channels = {}
 50903  
 50904  let extractBody
 50905  
 50906  try {
 50907    const diagnosticsChannel = __nccwpck_require__(67643)
 50908    channels.create = diagnosticsChannel.channel('undici:request:create')
 50909    channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent')
 50910    channels.headers = diagnosticsChannel.channel('undici:request:headers')
 50911    channels.trailers = diagnosticsChannel.channel('undici:request:trailers')
 50912    channels.error = diagnosticsChannel.channel('undici:request:error')
 50913  } catch {
 50914    channels.create = { hasSubscribers: false }
 50915    channels.bodySent = { hasSubscribers: false }
 50916    channels.headers = { hasSubscribers: false }
 50917    channels.trailers = { hasSubscribers: false }
 50918    channels.error = { hasSubscribers: false }
 50919  }
 50920  
 50921  class Request {
 50922    constructor (origin, {
 50923      path,
 50924      method,
 50925      body,
 50926      headers,
 50927      query,
 50928      idempotent,
 50929      blocking,
 50930      upgrade,
 50931      headersTimeout,
 50932      bodyTimeout,
 50933      reset,
 50934      throwOnError,
 50935      expectContinue
 50936    }, handler) {
 50937      if (typeof path !== 'string') {
 50938        throw new InvalidArgumentError('path must be a string')
 50939      } else if (
 50940        path[0] !== '/' &&
 50941        !(path.startsWith('http://') || path.startsWith('https://')) &&
 50942        method !== 'CONNECT'
 50943      ) {
 50944        throw new InvalidArgumentError('path must be an absolute URL or start with a slash')
 50945      } else if (invalidPathRegex.exec(path) !== null) {
 50946        throw new InvalidArgumentError('invalid request path')
 50947      }
 50948  
 50949      if (typeof method !== 'string') {
 50950        throw new InvalidArgumentError('method must be a string')
 50951      } else if (tokenRegExp.exec(method) === null) {
 50952        throw new InvalidArgumentError('invalid request method')
 50953      }
 50954  
 50955      if (upgrade && typeof upgrade !== 'string') {
 50956        throw new InvalidArgumentError('upgrade must be a string')
 50957      }
 50958  
 50959      if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {
 50960        throw new InvalidArgumentError('invalid headersTimeout')
 50961      }
 50962  
 50963      if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {
 50964        throw new InvalidArgumentError('invalid bodyTimeout')
 50965      }
 50966  
 50967      if (reset != null && typeof reset !== 'boolean') {
 50968        throw new InvalidArgumentError('invalid reset')
 50969      }
 50970  
 50971      if (expectContinue != null && typeof expectContinue !== 'boolean') {
 50972        throw new InvalidArgumentError('invalid expectContinue')
 50973      }
 50974  
 50975      this.headersTimeout = headersTimeout
 50976  
 50977      this.bodyTimeout = bodyTimeout
 50978  
 50979      this.throwOnError = throwOnError === true
 50980  
 50981      this.method = method
 50982  
 50983      this.abort = null
 50984  
 50985      if (body == null) {
 50986        this.body = null
 50987      } else if (util.isStream(body)) {
 50988        this.body = body
 50989  
 50990        const rState = this.body._readableState
 50991        if (!rState || !rState.autoDestroy) {
 50992          this.endHandler = function autoDestroy () {
 50993            util.destroy(this)
 50994          }
 50995          this.body.on('end', this.endHandler)
 50996        }
 50997  
 50998        this.errorHandler = err => {
 50999          if (this.abort) {
 51000            this.abort(err)
 51001          } else {
 51002            this.error = err
 51003          }
 51004        }
 51005        this.body.on('error', this.errorHandler)
 51006      } else if (util.isBuffer(body)) {
 51007        this.body = body.byteLength ? body : null
 51008      } else if (ArrayBuffer.isView(body)) {
 51009        this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null
 51010      } else if (body instanceof ArrayBuffer) {
 51011        this.body = body.byteLength ? Buffer.from(body) : null
 51012      } else if (typeof body === 'string') {
 51013        this.body = body.length ? Buffer.from(body) : null
 51014      } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) {
 51015        this.body = body
 51016      } else {
 51017        throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable')
 51018      }
 51019  
 51020      this.completed = false
 51021  
 51022      this.aborted = false
 51023  
 51024      this.upgrade = upgrade || null
 51025  
 51026      this.path = query ? util.buildURL(path, query) : path
 51027  
 51028      this.origin = origin
 51029  
 51030      this.idempotent = idempotent == null
 51031        ? method === 'HEAD' || method === 'GET'
 51032        : idempotent
 51033  
 51034      this.blocking = blocking == null ? false : blocking
 51035  
 51036      this.reset = reset == null ? null : reset
 51037  
 51038      this.host = null
 51039  
 51040      this.contentLength = null
 51041  
 51042      this.contentType = null
 51043  
 51044      this.headers = ''
 51045  
 51046      // Only for H2
 51047      this.expectContinue = expectContinue != null ? expectContinue : false
 51048  
 51049      if (Array.isArray(headers)) {
 51050        if (headers.length % 2 !== 0) {
 51051          throw new InvalidArgumentError('headers array must be even')
 51052        }
 51053        for (let i = 0; i < headers.length; i += 2) {
 51054          processHeader(this, headers[i], headers[i + 1])
 51055        }
 51056      } else if (headers && typeof headers === 'object') {
 51057        const keys = Object.keys(headers)
 51058        for (let i = 0; i < keys.length; i++) {
 51059          const key = keys[i]
 51060          processHeader(this, key, headers[key])
 51061        }
 51062      } else if (headers != null) {
 51063        throw new InvalidArgumentError('headers must be an object or an array')
 51064      }
 51065  
 51066      if (util.isFormDataLike(this.body)) {
 51067        if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) {
 51068          throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.')
 51069        }
 51070  
 51071        if (!extractBody) {
 51072          extractBody = (__nccwpck_require__(41472).extractBody)
 51073        }
 51074  
 51075        const [bodyStream, contentType] = extractBody(body)
 51076        if (this.contentType == null) {
 51077          this.contentType = contentType
 51078          this.headers += `content-type: ${contentType}\r\n`
 51079        }
 51080        this.body = bodyStream.stream
 51081        this.contentLength = bodyStream.length
 51082      } else if (util.isBlobLike(body) && this.contentType == null && body.type) {
 51083        this.contentType = body.type
 51084        this.headers += `content-type: ${body.type}\r\n`
 51085      }
 51086  
 51087      util.validateHandler(handler, method, upgrade)
 51088  
 51089      this.servername = util.getServerName(this.host)
 51090  
 51091      this[kHandler] = handler
 51092  
 51093      if (channels.create.hasSubscribers) {
 51094        channels.create.publish({ request: this })
 51095      }
 51096    }
 51097  
 51098    onBodySent (chunk) {
 51099      if (this[kHandler].onBodySent) {
 51100        try {
 51101          return this[kHandler].onBodySent(chunk)
 51102        } catch (err) {
 51103          this.abort(err)
 51104        }
 51105      }
 51106    }
 51107  
 51108    onRequestSent () {
 51109      if (channels.bodySent.hasSubscribers) {
 51110        channels.bodySent.publish({ request: this })
 51111      }
 51112  
 51113      if (this[kHandler].onRequestSent) {
 51114        try {
 51115          return this[kHandler].onRequestSent()
 51116        } catch (err) {
 51117          this.abort(err)
 51118        }
 51119      }
 51120    }
 51121  
 51122    onConnect (abort) {
 51123      assert(!this.aborted)
 51124      assert(!this.completed)
 51125  
 51126      if (this.error) {
 51127        abort(this.error)
 51128      } else {
 51129        this.abort = abort
 51130        return this[kHandler].onConnect(abort)
 51131      }
 51132    }
 51133  
 51134    onHeaders (statusCode, headers, resume, statusText) {
 51135      assert(!this.aborted)
 51136      assert(!this.completed)
 51137  
 51138      if (channels.headers.hasSubscribers) {
 51139        channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })
 51140      }
 51141  
 51142      try {
 51143        return this[kHandler].onHeaders(statusCode, headers, resume, statusText)
 51144      } catch (err) {
 51145        this.abort(err)
 51146      }
 51147    }
 51148  
 51149    onData (chunk) {
 51150      assert(!this.aborted)
 51151      assert(!this.completed)
 51152  
 51153      try {
 51154        return this[kHandler].onData(chunk)
 51155      } catch (err) {
 51156        this.abort(err)
 51157        return false
 51158      }
 51159    }
 51160  
 51161    onUpgrade (statusCode, headers, socket) {
 51162      assert(!this.aborted)
 51163      assert(!this.completed)
 51164  
 51165      return this[kHandler].onUpgrade(statusCode, headers, socket)
 51166    }
 51167  
 51168    onComplete (trailers) {
 51169      this.onFinally()
 51170  
 51171      assert(!this.aborted)
 51172  
 51173      this.completed = true
 51174      if (channels.trailers.hasSubscribers) {
 51175        channels.trailers.publish({ request: this, trailers })
 51176      }
 51177  
 51178      try {
 51179        return this[kHandler].onComplete(trailers)
 51180      } catch (err) {
 51181        // TODO (fix): This might be a bad idea?
 51182        this.onError(err)
 51183      }
 51184    }
 51185  
 51186    onError (error) {
 51187      this.onFinally()
 51188  
 51189      if (channels.error.hasSubscribers) {
 51190        channels.error.publish({ request: this, error })
 51191      }
 51192  
 51193      if (this.aborted) {
 51194        return
 51195      }
 51196      this.aborted = true
 51197  
 51198      return this[kHandler].onError(error)
 51199    }
 51200  
 51201    onFinally () {
 51202      if (this.errorHandler) {
 51203        this.body.off('error', this.errorHandler)
 51204        this.errorHandler = null
 51205      }
 51206  
 51207      if (this.endHandler) {
 51208        this.body.off('end', this.endHandler)
 51209        this.endHandler = null
 51210      }
 51211    }
 51212  
 51213    // TODO: adjust to support H2
 51214    addHeader (key, value) {
 51215      processHeader(this, key, value)
 51216      return this
 51217    }
 51218  
 51219    static [kHTTP1BuildRequest] (origin, opts, handler) {
 51220      // TODO: Migrate header parsing here, to make Requests
 51221      // HTTP agnostic
 51222      return new Request(origin, opts, handler)
 51223    }
 51224  
 51225    static [kHTTP2BuildRequest] (origin, opts, handler) {
 51226      const headers = opts.headers
 51227      opts = { ...opts, headers: null }
 51228  
 51229      const request = new Request(origin, opts, handler)
 51230  
 51231      request.headers = {}
 51232  
 51233      if (Array.isArray(headers)) {
 51234        if (headers.length % 2 !== 0) {
 51235          throw new InvalidArgumentError('headers array must be even')
 51236        }
 51237        for (let i = 0; i < headers.length; i += 2) {
 51238          processHeader(request, headers[i], headers[i + 1], true)
 51239        }
 51240      } else if (headers && typeof headers === 'object') {
 51241        const keys = Object.keys(headers)
 51242        for (let i = 0; i < keys.length; i++) {
 51243          const key = keys[i]
 51244          processHeader(request, key, headers[key], true)
 51245        }
 51246      } else if (headers != null) {
 51247        throw new InvalidArgumentError('headers must be an object or an array')
 51248      }
 51249  
 51250      return request
 51251    }
 51252  
 51253    static [kHTTP2CopyHeaders] (raw) {
 51254      const rawHeaders = raw.split('\r\n')
 51255      const headers = {}
 51256  
 51257      for (const header of rawHeaders) {
 51258        const [key, value] = header.split(': ')
 51259  
 51260        if (value == null || value.length === 0) continue
 51261  
 51262        if (headers[key]) headers[key] += `,${value}`
 51263        else headers[key] = value
 51264      }
 51265  
 51266      return headers
 51267    }
 51268  }
 51269  
 51270  function processHeaderValue (key, val, skipAppend) {
 51271    if (val && typeof val === 'object') {
 51272      throw new InvalidArgumentError(`invalid ${key} header`)
 51273    }
 51274  
 51275    val = val != null ? `${val}` : ''
 51276  
 51277    if (headerCharRegex.exec(val) !== null) {
 51278      throw new InvalidArgumentError(`invalid ${key} header`)
 51279    }
 51280  
 51281    return skipAppend ? val : `${key}: ${val}\r\n`
 51282  }
 51283  
 51284  function processHeader (request, key, val, skipAppend = false) {
 51285    if (val && (typeof val === 'object' && !Array.isArray(val))) {
 51286      throw new InvalidArgumentError(`invalid ${key} header`)
 51287    } else if (val === undefined) {
 51288      return
 51289    }
 51290  
 51291    if (
 51292      request.host === null &&
 51293      key.length === 4 &&
 51294      key.toLowerCase() === 'host'
 51295    ) {
 51296      if (headerCharRegex.exec(val) !== null) {
 51297        throw new InvalidArgumentError(`invalid ${key} header`)
 51298      }
 51299      // Consumed by Client
 51300      request.host = val
 51301    } else if (
 51302      request.contentLength === null &&
 51303      key.length === 14 &&
 51304      key.toLowerCase() === 'content-length'
 51305    ) {
 51306      request.contentLength = parseInt(val, 10)
 51307      if (!Number.isFinite(request.contentLength)) {
 51308        throw new InvalidArgumentError('invalid content-length header')
 51309      }
 51310    } else if (
 51311      request.contentType === null &&
 51312      key.length === 12 &&
 51313      key.toLowerCase() === 'content-type'
 51314    ) {
 51315      request.contentType = val
 51316      if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)
 51317      else request.headers += processHeaderValue(key, val)
 51318    } else if (
 51319      key.length === 17 &&
 51320      key.toLowerCase() === 'transfer-encoding'
 51321    ) {
 51322      throw new InvalidArgumentError('invalid transfer-encoding header')
 51323    } else if (
 51324      key.length === 10 &&
 51325      key.toLowerCase() === 'connection'
 51326    ) {
 51327      const value = typeof val === 'string' ? val.toLowerCase() : null
 51328      if (value !== 'close' && value !== 'keep-alive') {
 51329        throw new InvalidArgumentError('invalid connection header')
 51330      } else if (value === 'close') {
 51331        request.reset = true
 51332      }
 51333    } else if (
 51334      key.length === 10 &&
 51335      key.toLowerCase() === 'keep-alive'
 51336    ) {
 51337      throw new InvalidArgumentError('invalid keep-alive header')
 51338    } else if (
 51339      key.length === 7 &&
 51340      key.toLowerCase() === 'upgrade'
 51341    ) {
 51342      throw new InvalidArgumentError('invalid upgrade header')
 51343    } else if (
 51344      key.length === 6 &&
 51345      key.toLowerCase() === 'expect'
 51346    ) {
 51347      throw new NotSupportedError('expect header not supported')
 51348    } else if (tokenRegExp.exec(key) === null) {
 51349      throw new InvalidArgumentError('invalid header key')
 51350    } else {
 51351      if (Array.isArray(val)) {
 51352        for (let i = 0; i < val.length; i++) {
 51353          if (skipAppend) {
 51354            if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`
 51355            else request.headers[key] = processHeaderValue(key, val[i], skipAppend)
 51356          } else {
 51357            request.headers += processHeaderValue(key, val[i])
 51358          }
 51359        }
 51360      } else {
 51361        if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)
 51362        else request.headers += processHeaderValue(key, val)
 51363      }
 51364    }
 51365  }
 51366  
 51367  module.exports = Request
 51368  
 51369  
 51370  /***/ }),
 51371  
 51372  /***/ 72785:
 51373  /***/ ((module) => {
 51374  
 51375  module.exports = {
 51376    kClose: Symbol('close'),
 51377    kDestroy: Symbol('destroy'),
 51378    kDispatch: Symbol('dispatch'),
 51379    kUrl: Symbol('url'),
 51380    kWriting: Symbol('writing'),
 51381    kResuming: Symbol('resuming'),
 51382    kQueue: Symbol('queue'),
 51383    kConnect: Symbol('connect'),
 51384    kConnecting: Symbol('connecting'),
 51385    kHeadersList: Symbol('headers list'),
 51386    kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),
 51387    kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),
 51388    kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),
 51389    kKeepAliveTimeoutValue: Symbol('keep alive timeout'),
 51390    kKeepAlive: Symbol('keep alive'),
 51391    kHeadersTimeout: Symbol('headers timeout'),
 51392    kBodyTimeout: Symbol('body timeout'),
 51393    kServerName: Symbol('server name'),
 51394    kLocalAddress: Symbol('local address'),
 51395    kHost: Symbol('host'),
 51396    kNoRef: Symbol('no ref'),
 51397    kBodyUsed: Symbol('used'),
 51398    kRunning: Symbol('running'),
 51399    kBlocking: Symbol('blocking'),
 51400    kPending: Symbol('pending'),
 51401    kSize: Symbol('size'),
 51402    kBusy: Symbol('busy'),
 51403    kQueued: Symbol('queued'),
 51404    kFree: Symbol('free'),
 51405    kConnected: Symbol('connected'),
 51406    kClosed: Symbol('closed'),
 51407    kNeedDrain: Symbol('need drain'),
 51408    kReset: Symbol('reset'),
 51409    kDestroyed: Symbol.for('nodejs.stream.destroyed'),
 51410    kMaxHeadersSize: Symbol('max headers size'),
 51411    kRunningIdx: Symbol('running index'),
 51412    kPendingIdx: Symbol('pending index'),
 51413    kError: Symbol('error'),
 51414    kClients: Symbol('clients'),
 51415    kClient: Symbol('client'),
 51416    kParser: Symbol('parser'),
 51417    kOnDestroyed: Symbol('destroy callbacks'),
 51418    kPipelining: Symbol('pipelining'),
 51419    kSocket: Symbol('socket'),
 51420    kHostHeader: Symbol('host header'),
 51421    kConnector: Symbol('connector'),
 51422    kStrictContentLength: Symbol('strict content length'),
 51423    kMaxRedirections: Symbol('maxRedirections'),
 51424    kMaxRequests: Symbol('maxRequestsPerClient'),
 51425    kProxy: Symbol('proxy agent options'),
 51426    kCounter: Symbol('socket request counter'),
 51427    kInterceptors: Symbol('dispatch interceptors'),
 51428    kMaxResponseSize: Symbol('max response size'),
 51429    kHTTP2Session: Symbol('http2Session'),
 51430    kHTTP2SessionState: Symbol('http2Session state'),
 51431    kHTTP2BuildRequest: Symbol('http2 build request'),
 51432    kHTTP1BuildRequest: Symbol('http1 build request'),
 51433    kHTTP2CopyHeaders: Symbol('http2 copy headers'),
 51434    kHTTPConnVersion: Symbol('http connection version'),
 51435    kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),
 51436    kConstruct: Symbol('constructable')
 51437  }
 51438  
 51439  
 51440  /***/ }),
 51441  
 51442  /***/ 83983:
 51443  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 51444  
 51445  "use strict";
 51446  
 51447  
 51448  const assert = __nccwpck_require__(39491)
 51449  const { kDestroyed, kBodyUsed } = __nccwpck_require__(72785)
 51450  const { IncomingMessage } = __nccwpck_require__(13685)
 51451  const stream = __nccwpck_require__(12781)
 51452  const net = __nccwpck_require__(41808)
 51453  const { InvalidArgumentError } = __nccwpck_require__(48045)
 51454  const { Blob } = __nccwpck_require__(14300)
 51455  const nodeUtil = __nccwpck_require__(73837)
 51456  const { stringify } = __nccwpck_require__(63477)
 51457  const { headerNameLowerCasedRecord } = __nccwpck_require__(14462)
 51458  
 51459  const [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))
 51460  
 51461  function nop () {}
 51462  
 51463  function isStream (obj) {
 51464    return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'
 51465  }
 51466  
 51467  // based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License)
 51468  function isBlobLike (object) {
 51469    return (Blob && object instanceof Blob) || (
 51470      object &&
 51471      typeof object === 'object' &&
 51472      (typeof object.stream === 'function' ||
 51473        typeof object.arrayBuffer === 'function') &&
 51474      /^(Blob|File)$/.test(object[Symbol.toStringTag])
 51475    )
 51476  }
 51477  
 51478  function buildURL (url, queryParams) {
 51479    if (url.includes('?') || url.includes('#')) {
 51480      throw new Error('Query params cannot be passed when url already contains "?" or "#".')
 51481    }
 51482  
 51483    const stringified = stringify(queryParams)
 51484  
 51485    if (stringified) {
 51486      url += '?' + stringified
 51487    }
 51488  
 51489    return url
 51490  }
 51491  
 51492  function parseURL (url) {
 51493    if (typeof url === 'string') {
 51494      url = new URL(url)
 51495  
 51496      if (!/^https?:/.test(url.origin || url.protocol)) {
 51497        throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')
 51498      }
 51499  
 51500      return url
 51501    }
 51502  
 51503    if (!url || typeof url !== 'object') {
 51504      throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.')
 51505    }
 51506  
 51507    if (!/^https?:/.test(url.origin || url.protocol)) {
 51508      throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')
 51509    }
 51510  
 51511    if (!(url instanceof URL)) {
 51512      if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) {
 51513        throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.')
 51514      }
 51515  
 51516      if (url.path != null && typeof url.path !== 'string') {
 51517        throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.')
 51518      }
 51519  
 51520      if (url.pathname != null && typeof url.pathname !== 'string') {
 51521        throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.')
 51522      }
 51523  
 51524      if (url.hostname != null && typeof url.hostname !== 'string') {
 51525        throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.')
 51526      }
 51527  
 51528      if (url.origin != null && typeof url.origin !== 'string') {
 51529        throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.')
 51530      }
 51531  
 51532      const port = url.port != null
 51533        ? url.port
 51534        : (url.protocol === 'https:' ? 443 : 80)
 51535      let origin = url.origin != null
 51536        ? url.origin
 51537        : `${url.protocol}//${url.hostname}:${port}`
 51538      let path = url.path != null
 51539        ? url.path
 51540        : `${url.pathname || ''}${url.search || ''}`
 51541  
 51542      if (origin.endsWith('/')) {
 51543        origin = origin.substring(0, origin.length - 1)
 51544      }
 51545  
 51546      if (path && !path.startsWith('/')) {
 51547        path = `/${path}`
 51548      }
 51549      // new URL(path, origin) is unsafe when `path` contains an absolute URL
 51550      // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL:
 51551      // If first parameter is a relative URL, second param is required, and will be used as the base URL.
 51552      // If first parameter is an absolute URL, a given second param will be ignored.
 51553      url = new URL(origin + path)
 51554    }
 51555  
 51556    return url
 51557  }
 51558  
 51559  function parseOrigin (url) {
 51560    url = parseURL(url)
 51561  
 51562    if (url.pathname !== '/' || url.search || url.hash) {
 51563      throw new InvalidArgumentError('invalid url')
 51564    }
 51565  
 51566    return url
 51567  }
 51568  
 51569  function getHostname (host) {
 51570    if (host[0] === '[') {
 51571      const idx = host.indexOf(']')
 51572  
 51573      assert(idx !== -1)
 51574      return host.substring(1, idx)
 51575    }
 51576  
 51577    const idx = host.indexOf(':')
 51578    if (idx === -1) return host
 51579  
 51580    return host.substring(0, idx)
 51581  }
 51582  
 51583  // IP addresses are not valid server names per RFC6066
 51584  // > Currently, the only server names supported are DNS hostnames
 51585  function getServerName (host) {
 51586    if (!host) {
 51587      return null
 51588    }
 51589  
 51590    assert.strictEqual(typeof host, 'string')
 51591  
 51592    const servername = getHostname(host)
 51593    if (net.isIP(servername)) {
 51594      return ''
 51595    }
 51596  
 51597    return servername
 51598  }
 51599  
 51600  function deepClone (obj) {
 51601    return JSON.parse(JSON.stringify(obj))
 51602  }
 51603  
 51604  function isAsyncIterable (obj) {
 51605    return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function')
 51606  }
 51607  
 51608  function isIterable (obj) {
 51609    return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function'))
 51610  }
 51611  
 51612  function bodyLength (body) {
 51613    if (body == null) {
 51614      return 0
 51615    } else if (isStream(body)) {
 51616      const state = body._readableState
 51617      return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length)
 51618        ? state.length
 51619        : null
 51620    } else if (isBlobLike(body)) {
 51621      return body.size != null ? body.size : null
 51622    } else if (isBuffer(body)) {
 51623      return body.byteLength
 51624    }
 51625  
 51626    return null
 51627  }
 51628  
 51629  function isDestroyed (stream) {
 51630    return !stream || !!(stream.destroyed || stream[kDestroyed])
 51631  }
 51632  
 51633  function isReadableAborted (stream) {
 51634    const state = stream && stream._readableState
 51635    return isDestroyed(stream) && state && !state.endEmitted
 51636  }
 51637  
 51638  function destroy (stream, err) {
 51639    if (stream == null || !isStream(stream) || isDestroyed(stream)) {
 51640      return
 51641    }
 51642  
 51643    if (typeof stream.destroy === 'function') {
 51644      if (Object.getPrototypeOf(stream).constructor === IncomingMessage) {
 51645        // See: https://github.com/nodejs/node/pull/38505/files
 51646        stream.socket = null
 51647      }
 51648  
 51649      stream.destroy(err)
 51650    } else if (err) {
 51651      process.nextTick((stream, err) => {
 51652        stream.emit('error', err)
 51653      }, stream, err)
 51654    }
 51655  
 51656    if (stream.destroyed !== true) {
 51657      stream[kDestroyed] = true
 51658    }
 51659  }
 51660  
 51661  const KEEPALIVE_TIMEOUT_EXPR = /timeout=(\d+)/
 51662  function parseKeepAliveTimeout (val) {
 51663    const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR)
 51664    return m ? parseInt(m[1], 10) * 1000 : null
 51665  }
 51666  
 51667  /**
 51668   * Retrieves a header name and returns its lowercase value.
 51669   * @param {string | Buffer} value Header name
 51670   * @returns {string}
 51671   */
 51672  function headerNameToString (value) {
 51673    return headerNameLowerCasedRecord[value] || value.toLowerCase()
 51674  }
 51675  
 51676  function parseHeaders (headers, obj = {}) {
 51677    // For H2 support
 51678    if (!Array.isArray(headers)) return headers
 51679  
 51680    for (let i = 0; i < headers.length; i += 2) {
 51681      const key = headers[i].toString().toLowerCase()
 51682      let val = obj[key]
 51683  
 51684      if (!val) {
 51685        if (Array.isArray(headers[i + 1])) {
 51686          obj[key] = headers[i + 1].map(x => x.toString('utf8'))
 51687        } else {
 51688          obj[key] = headers[i + 1].toString('utf8')
 51689        }
 51690      } else {
 51691        if (!Array.isArray(val)) {
 51692          val = [val]
 51693          obj[key] = val
 51694        }
 51695        val.push(headers[i + 1].toString('utf8'))
 51696      }
 51697    }
 51698  
 51699    // See https://github.com/nodejs/node/pull/46528
 51700    if ('content-length' in obj && 'content-disposition' in obj) {
 51701      obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1')
 51702    }
 51703  
 51704    return obj
 51705  }
 51706  
 51707  function parseRawHeaders (headers) {
 51708    const ret = []
 51709    let hasContentLength = false
 51710    let contentDispositionIdx = -1
 51711  
 51712    for (let n = 0; n < headers.length; n += 2) {
 51713      const key = headers[n + 0].toString()
 51714      const val = headers[n + 1].toString('utf8')
 51715  
 51716      if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) {
 51717        ret.push(key, val)
 51718        hasContentLength = true
 51719      } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) {
 51720        contentDispositionIdx = ret.push(key, val) - 1
 51721      } else {
 51722        ret.push(key, val)
 51723      }
 51724    }
 51725  
 51726    // See https://github.com/nodejs/node/pull/46528
 51727    if (hasContentLength && contentDispositionIdx !== -1) {
 51728      ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1')
 51729    }
 51730  
 51731    return ret
 51732  }
 51733  
 51734  function isBuffer (buffer) {
 51735    // See, https://github.com/mcollina/undici/pull/319
 51736    return buffer instanceof Uint8Array || Buffer.isBuffer(buffer)
 51737  }
 51738  
 51739  function validateHandler (handler, method, upgrade) {
 51740    if (!handler || typeof handler !== 'object') {
 51741      throw new InvalidArgumentError('handler must be an object')
 51742    }
 51743  
 51744    if (typeof handler.onConnect !== 'function') {
 51745      throw new InvalidArgumentError('invalid onConnect method')
 51746    }
 51747  
 51748    if (typeof handler.onError !== 'function') {
 51749      throw new InvalidArgumentError('invalid onError method')
 51750    }
 51751  
 51752    if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) {
 51753      throw new InvalidArgumentError('invalid onBodySent method')
 51754    }
 51755  
 51756    if (upgrade || method === 'CONNECT') {
 51757      if (typeof handler.onUpgrade !== 'function') {
 51758        throw new InvalidArgumentError('invalid onUpgrade method')
 51759      }
 51760    } else {
 51761      if (typeof handler.onHeaders !== 'function') {
 51762        throw new InvalidArgumentError('invalid onHeaders method')
 51763      }
 51764  
 51765      if (typeof handler.onData !== 'function') {
 51766        throw new InvalidArgumentError('invalid onData method')
 51767      }
 51768  
 51769      if (typeof handler.onComplete !== 'function') {
 51770        throw new InvalidArgumentError('invalid onComplete method')
 51771      }
 51772    }
 51773  }
 51774  
 51775  // A body is disturbed if it has been read from and it cannot
 51776  // be re-used without losing state or data.
 51777  function isDisturbed (body) {
 51778    return !!(body && (
 51779      stream.isDisturbed
 51780        ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed?
 51781        : body[kBodyUsed] ||
 51782          body.readableDidRead ||
 51783          (body._readableState && body._readableState.dataEmitted) ||
 51784          isReadableAborted(body)
 51785    ))
 51786  }
 51787  
 51788  function isErrored (body) {
 51789    return !!(body && (
 51790      stream.isErrored
 51791        ? stream.isErrored(body)
 51792        : /state: 'errored'/.test(nodeUtil.inspect(body)
 51793        )))
 51794  }
 51795  
 51796  function isReadable (body) {
 51797    return !!(body && (
 51798      stream.isReadable
 51799        ? stream.isReadable(body)
 51800        : /state: 'readable'/.test(nodeUtil.inspect(body)
 51801        )))
 51802  }
 51803  
 51804  function getSocketInfo (socket) {
 51805    return {
 51806      localAddress: socket.localAddress,
 51807      localPort: socket.localPort,
 51808      remoteAddress: socket.remoteAddress,
 51809      remotePort: socket.remotePort,
 51810      remoteFamily: socket.remoteFamily,
 51811      timeout: socket.timeout,
 51812      bytesWritten: socket.bytesWritten,
 51813      bytesRead: socket.bytesRead
 51814    }
 51815  }
 51816  
 51817  async function * convertIterableToBuffer (iterable) {
 51818    for await (const chunk of iterable) {
 51819      yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)
 51820    }
 51821  }
 51822  
 51823  let ReadableStream
 51824  function ReadableStreamFrom (iterable) {
 51825    if (!ReadableStream) {
 51826      ReadableStream = (__nccwpck_require__(35356).ReadableStream)
 51827    }
 51828  
 51829    if (ReadableStream.from) {
 51830      return ReadableStream.from(convertIterableToBuffer(iterable))
 51831    }
 51832  
 51833    let iterator
 51834    return new ReadableStream(
 51835      {
 51836        async start () {
 51837          iterator = iterable[Symbol.asyncIterator]()
 51838        },
 51839        async pull (controller) {
 51840          const { done, value } = await iterator.next()
 51841          if (done) {
 51842            queueMicrotask(() => {
 51843              controller.close()
 51844            })
 51845          } else {
 51846            const buf = Buffer.isBuffer(value) ? value : Buffer.from(value)
 51847            controller.enqueue(new Uint8Array(buf))
 51848          }
 51849          return controller.desiredSize > 0
 51850        },
 51851        async cancel (reason) {
 51852          await iterator.return()
 51853        }
 51854      },
 51855      0
 51856    )
 51857  }
 51858  
 51859  // The chunk should be a FormData instance and contains
 51860  // all the required methods.
 51861  function isFormDataLike (object) {
 51862    return (
 51863      object &&
 51864      typeof object === 'object' &&
 51865      typeof object.append === 'function' &&
 51866      typeof object.delete === 'function' &&
 51867      typeof object.get === 'function' &&
 51868      typeof object.getAll === 'function' &&
 51869      typeof object.has === 'function' &&
 51870      typeof object.set === 'function' &&
 51871      object[Symbol.toStringTag] === 'FormData'
 51872    )
 51873  }
 51874  
 51875  function throwIfAborted (signal) {
 51876    if (!signal) { return }
 51877    if (typeof signal.throwIfAborted === 'function') {
 51878      signal.throwIfAborted()
 51879    } else {
 51880      if (signal.aborted) {
 51881        // DOMException not available < v17.0.0
 51882        const err = new Error('The operation was aborted')
 51883        err.name = 'AbortError'
 51884        throw err
 51885      }
 51886    }
 51887  }
 51888  
 51889  function addAbortListener (signal, listener) {
 51890    if ('addEventListener' in signal) {
 51891      signal.addEventListener('abort', listener, { once: true })
 51892      return () => signal.removeEventListener('abort', listener)
 51893    }
 51894    signal.addListener('abort', listener)
 51895    return () => signal.removeListener('abort', listener)
 51896  }
 51897  
 51898  const hasToWellFormed = !!String.prototype.toWellFormed
 51899  
 51900  /**
 51901   * @param {string} val
 51902   */
 51903  function toUSVString (val) {
 51904    if (hasToWellFormed) {
 51905      return `${val}`.toWellFormed()
 51906    } else if (nodeUtil.toUSVString) {
 51907      return nodeUtil.toUSVString(val)
 51908    }
 51909  
 51910    return `${val}`
 51911  }
 51912  
 51913  // Parsed accordingly to RFC 9110
 51914  // https://www.rfc-editor.org/rfc/rfc9110#field.content-range
 51915  function parseRangeHeader (range) {
 51916    if (range == null || range === '') return { start: 0, end: null, size: null }
 51917  
 51918    const m = range ? range.match(/^bytes (\d+)-(\d+)\/(\d+)?$/) : null
 51919    return m
 51920      ? {
 51921          start: parseInt(m[1]),
 51922          end: m[2] ? parseInt(m[2]) : null,
 51923          size: m[3] ? parseInt(m[3]) : null
 51924        }
 51925      : null
 51926  }
 51927  
 51928  const kEnumerableProperty = Object.create(null)
 51929  kEnumerableProperty.enumerable = true
 51930  
 51931  module.exports = {
 51932    kEnumerableProperty,
 51933    nop,
 51934    isDisturbed,
 51935    isErrored,
 51936    isReadable,
 51937    toUSVString,
 51938    isReadableAborted,
 51939    isBlobLike,
 51940    parseOrigin,
 51941    parseURL,
 51942    getServerName,
 51943    isStream,
 51944    isIterable,
 51945    isAsyncIterable,
 51946    isDestroyed,
 51947    headerNameToString,
 51948    parseRawHeaders,
 51949    parseHeaders,
 51950    parseKeepAliveTimeout,
 51951    destroy,
 51952    bodyLength,
 51953    deepClone,
 51954    ReadableStreamFrom,
 51955    isBuffer,
 51956    validateHandler,
 51957    getSocketInfo,
 51958    isFormDataLike,
 51959    buildURL,
 51960    throwIfAborted,
 51961    addAbortListener,
 51962    parseRangeHeader,
 51963    nodeMajor,
 51964    nodeMinor,
 51965    nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13),
 51966    safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE']
 51967  }
 51968  
 51969  
 51970  /***/ }),
 51971  
 51972  /***/ 74839:
 51973  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 51974  
 51975  "use strict";
 51976  
 51977  
 51978  const Dispatcher = __nccwpck_require__(60412)
 51979  const {
 51980    ClientDestroyedError,
 51981    ClientClosedError,
 51982    InvalidArgumentError
 51983  } = __nccwpck_require__(48045)
 51984  const { kDestroy, kClose, kDispatch, kInterceptors } = __nccwpck_require__(72785)
 51985  
 51986  const kDestroyed = Symbol('destroyed')
 51987  const kClosed = Symbol('closed')
 51988  const kOnDestroyed = Symbol('onDestroyed')
 51989  const kOnClosed = Symbol('onClosed')
 51990  const kInterceptedDispatch = Symbol('Intercepted Dispatch')
 51991  
 51992  class DispatcherBase extends Dispatcher {
 51993    constructor () {
 51994      super()
 51995  
 51996      this[kDestroyed] = false
 51997      this[kOnDestroyed] = null
 51998      this[kClosed] = false
 51999      this[kOnClosed] = []
 52000    }
 52001  
 52002    get destroyed () {
 52003      return this[kDestroyed]
 52004    }
 52005  
 52006    get closed () {
 52007      return this[kClosed]
 52008    }
 52009  
 52010    get interceptors () {
 52011      return this[kInterceptors]
 52012    }
 52013  
 52014    set interceptors (newInterceptors) {
 52015      if (newInterceptors) {
 52016        for (let i = newInterceptors.length - 1; i >= 0; i--) {
 52017          const interceptor = this[kInterceptors][i]
 52018          if (typeof interceptor !== 'function') {
 52019            throw new InvalidArgumentError('interceptor must be an function')
 52020          }
 52021        }
 52022      }
 52023  
 52024      this[kInterceptors] = newInterceptors
 52025    }
 52026  
 52027    close (callback) {
 52028      if (callback === undefined) {
 52029        return new Promise((resolve, reject) => {
 52030          this.close((err, data) => {
 52031            return err ? reject(err) : resolve(data)
 52032          })
 52033        })
 52034      }
 52035  
 52036      if (typeof callback !== 'function') {
 52037        throw new InvalidArgumentError('invalid callback')
 52038      }
 52039  
 52040      if (this[kDestroyed]) {
 52041        queueMicrotask(() => callback(new ClientDestroyedError(), null))
 52042        return
 52043      }
 52044  
 52045      if (this[kClosed]) {
 52046        if (this[kOnClosed]) {
 52047          this[kOnClosed].push(callback)
 52048        } else {
 52049          queueMicrotask(() => callback(null, null))
 52050        }
 52051        return
 52052      }
 52053  
 52054      this[kClosed] = true
 52055      this[kOnClosed].push(callback)
 52056  
 52057      const onClosed = () => {
 52058        const callbacks = this[kOnClosed]
 52059        this[kOnClosed] = null
 52060        for (let i = 0; i < callbacks.length; i++) {
 52061          callbacks[i](null, null)
 52062        }
 52063      }
 52064  
 52065      // Should not error.
 52066      this[kClose]()
 52067        .then(() => this.destroy())
 52068        .then(() => {
 52069          queueMicrotask(onClosed)
 52070        })
 52071    }
 52072  
 52073    destroy (err, callback) {
 52074      if (typeof err === 'function') {
 52075        callback = err
 52076        err = null
 52077      }
 52078  
 52079      if (callback === undefined) {
 52080        return new Promise((resolve, reject) => {
 52081          this.destroy(err, (err, data) => {
 52082            return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data)
 52083          })
 52084        })
 52085      }
 52086  
 52087      if (typeof callback !== 'function') {
 52088        throw new InvalidArgumentError('invalid callback')
 52089      }
 52090  
 52091      if (this[kDestroyed]) {
 52092        if (this[kOnDestroyed]) {
 52093          this[kOnDestroyed].push(callback)
 52094        } else {
 52095          queueMicrotask(() => callback(null, null))
 52096        }
 52097        return
 52098      }
 52099  
 52100      if (!err) {
 52101        err = new ClientDestroyedError()
 52102      }
 52103  
 52104      this[kDestroyed] = true
 52105      this[kOnDestroyed] = this[kOnDestroyed] || []
 52106      this[kOnDestroyed].push(callback)
 52107  
 52108      const onDestroyed = () => {
 52109        const callbacks = this[kOnDestroyed]
 52110        this[kOnDestroyed] = null
 52111        for (let i = 0; i < callbacks.length; i++) {
 52112          callbacks[i](null, null)
 52113        }
 52114      }
 52115  
 52116      // Should not error.
 52117      this[kDestroy](err).then(() => {
 52118        queueMicrotask(onDestroyed)
 52119      })
 52120    }
 52121  
 52122    [kInterceptedDispatch] (opts, handler) {
 52123      if (!this[kInterceptors] || this[kInterceptors].length === 0) {
 52124        this[kInterceptedDispatch] = this[kDispatch]
 52125        return this[kDispatch](opts, handler)
 52126      }
 52127  
 52128      let dispatch = this[kDispatch].bind(this)
 52129      for (let i = this[kInterceptors].length - 1; i >= 0; i--) {
 52130        dispatch = this[kInterceptors][i](dispatch)
 52131      }
 52132      this[kInterceptedDispatch] = dispatch
 52133      return dispatch(opts, handler)
 52134    }
 52135  
 52136    dispatch (opts, handler) {
 52137      if (!handler || typeof handler !== 'object') {
 52138        throw new InvalidArgumentError('handler must be an object')
 52139      }
 52140  
 52141      try {
 52142        if (!opts || typeof opts !== 'object') {
 52143          throw new InvalidArgumentError('opts must be an object.')
 52144        }
 52145  
 52146        if (this[kDestroyed] || this[kOnDestroyed]) {
 52147          throw new ClientDestroyedError()
 52148        }
 52149  
 52150        if (this[kClosed]) {
 52151          throw new ClientClosedError()
 52152        }
 52153  
 52154        return this[kInterceptedDispatch](opts, handler)
 52155      } catch (err) {
 52156        if (typeof handler.onError !== 'function') {
 52157          throw new InvalidArgumentError('invalid onError method')
 52158        }
 52159  
 52160        handler.onError(err)
 52161  
 52162        return false
 52163      }
 52164    }
 52165  }
 52166  
 52167  module.exports = DispatcherBase
 52168  
 52169  
 52170  /***/ }),
 52171  
 52172  /***/ 60412:
 52173  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 52174  
 52175  "use strict";
 52176  
 52177  
 52178  const EventEmitter = __nccwpck_require__(82361)
 52179  
 52180  class Dispatcher extends EventEmitter {
 52181    dispatch () {
 52182      throw new Error('not implemented')
 52183    }
 52184  
 52185    close () {
 52186      throw new Error('not implemented')
 52187    }
 52188  
 52189    destroy () {
 52190      throw new Error('not implemented')
 52191    }
 52192  }
 52193  
 52194  module.exports = Dispatcher
 52195  
 52196  
 52197  /***/ }),
 52198  
 52199  /***/ 41472:
 52200  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 52201  
 52202  "use strict";
 52203  
 52204  
 52205  const Busboy = __nccwpck_require__(50727)
 52206  const util = __nccwpck_require__(83983)
 52207  const {
 52208    ReadableStreamFrom,
 52209    isBlobLike,
 52210    isReadableStreamLike,
 52211    readableStreamClose,
 52212    createDeferredPromise,
 52213    fullyReadBody
 52214  } = __nccwpck_require__(52538)
 52215  const { FormData } = __nccwpck_require__(72015)
 52216  const { kState } = __nccwpck_require__(15861)
 52217  const { webidl } = __nccwpck_require__(21744)
 52218  const { DOMException, structuredClone } = __nccwpck_require__(41037)
 52219  const { Blob, File: NativeFile } = __nccwpck_require__(14300)
 52220  const { kBodyUsed } = __nccwpck_require__(72785)
 52221  const assert = __nccwpck_require__(39491)
 52222  const { isErrored } = __nccwpck_require__(83983)
 52223  const { isUint8Array, isArrayBuffer } = __nccwpck_require__(29830)
 52224  const { File: UndiciFile } = __nccwpck_require__(78511)
 52225  const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685)
 52226  
 52227  let ReadableStream = globalThis.ReadableStream
 52228  
 52229  /** @type {globalThis['File']} */
 52230  const File = NativeFile ?? UndiciFile
 52231  const textEncoder = new TextEncoder()
 52232  const textDecoder = new TextDecoder()
 52233  
 52234  // https://fetch.spec.whatwg.org/#concept-bodyinit-extract
 52235  function extractBody (object, keepalive = false) {
 52236    if (!ReadableStream) {
 52237      ReadableStream = (__nccwpck_require__(35356).ReadableStream)
 52238    }
 52239  
 52240    // 1. Let stream be null.
 52241    let stream = null
 52242  
 52243    // 2. If object is a ReadableStream object, then set stream to object.
 52244    if (object instanceof ReadableStream) {
 52245      stream = object
 52246    } else if (isBlobLike(object)) {
 52247      // 3. Otherwise, if object is a Blob object, set stream to the
 52248      //    result of running object’s get stream.
 52249      stream = object.stream()
 52250    } else {
 52251      // 4. Otherwise, set stream to a new ReadableStream object, and set
 52252      //    up stream.
 52253      stream = new ReadableStream({
 52254        async pull (controller) {
 52255          controller.enqueue(
 52256            typeof source === 'string' ? textEncoder.encode(source) : source
 52257          )
 52258          queueMicrotask(() => readableStreamClose(controller))
 52259        },
 52260        start () {},
 52261        type: undefined
 52262      })
 52263    }
 52264  
 52265    // 5. Assert: stream is a ReadableStream object.
 52266    assert(isReadableStreamLike(stream))
 52267  
 52268    // 6. Let action be null.
 52269    let action = null
 52270  
 52271    // 7. Let source be null.
 52272    let source = null
 52273  
 52274    // 8. Let length be null.
 52275    let length = null
 52276  
 52277    // 9. Let type be null.
 52278    let type = null
 52279  
 52280    // 10. Switch on object:
 52281    if (typeof object === 'string') {
 52282      // Set source to the UTF-8 encoding of object.
 52283      // Note: setting source to a Uint8Array here breaks some mocking assumptions.
 52284      source = object
 52285  
 52286      // Set type to `text/plain;charset=UTF-8`.
 52287      type = 'text/plain;charset=UTF-8'
 52288    } else if (object instanceof URLSearchParams) {
 52289      // URLSearchParams
 52290  
 52291      // spec says to run application/x-www-form-urlencoded on body.list
 52292      // this is implemented in Node.js as apart of an URLSearchParams instance toString method
 52293      // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490
 52294      // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100
 52295  
 52296      // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list.
 52297      source = object.toString()
 52298  
 52299      // Set type to `application/x-www-form-urlencoded;charset=UTF-8`.
 52300      type = 'application/x-www-form-urlencoded;charset=UTF-8'
 52301    } else if (isArrayBuffer(object)) {
 52302      // BufferSource/ArrayBuffer
 52303  
 52304      // Set source to a copy of the bytes held by object.
 52305      source = new Uint8Array(object.slice())
 52306    } else if (ArrayBuffer.isView(object)) {
 52307      // BufferSource/ArrayBufferView
 52308  
 52309      // Set source to a copy of the bytes held by object.
 52310      source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))
 52311    } else if (util.isFormDataLike(object)) {
 52312      const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, '0')}`
 52313      const prefix = `--${boundary}\r\nContent-Disposition: form-data`
 52314  
 52315      /*! formdata-polyfill. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource> */
 52316      const escape = (str) =>
 52317        str.replace(/\n/g, '%0A').replace(/\r/g, '%0D').replace(/"/g, '%22')
 52318      const normalizeLinefeeds = (value) => value.replace(/\r?\n|\r/g, '\r\n')
 52319  
 52320      // Set action to this step: run the multipart/form-data
 52321      // encoding algorithm, with object’s entry list and UTF-8.
 52322      // - This ensures that the body is immutable and can't be changed afterwords
 52323      // - That the content-length is calculated in advance.
 52324      // - And that all parts are pre-encoded and ready to be sent.
 52325  
 52326      const blobParts = []
 52327      const rn = new Uint8Array([13, 10]) // '\r\n'
 52328      length = 0
 52329      let hasUnknownSizeValue = false
 52330  
 52331      for (const [name, value] of object) {
 52332        if (typeof value === 'string') {
 52333          const chunk = textEncoder.encode(prefix +
 52334            `; name="${escape(normalizeLinefeeds(name))}"` +
 52335            `\r\n\r\n${normalizeLinefeeds(value)}\r\n`)
 52336          blobParts.push(chunk)
 52337          length += chunk.byteLength
 52338        } else {
 52339          const chunk = textEncoder.encode(`${prefix}; name="${escape(normalizeLinefeeds(name))}"` +
 52340            (value.name ? `; filename="${escape(value.name)}"` : '') + '\r\n' +
 52341            `Content-Type: ${
 52342              value.type || 'application/octet-stream'
 52343            }\r\n\r\n`)
 52344          blobParts.push(chunk, value, rn)
 52345          if (typeof value.size === 'number') {
 52346            length += chunk.byteLength + value.size + rn.byteLength
 52347          } else {
 52348            hasUnknownSizeValue = true
 52349          }
 52350        }
 52351      }
 52352  
 52353      const chunk = textEncoder.encode(`--${boundary}--`)
 52354      blobParts.push(chunk)
 52355      length += chunk.byteLength
 52356      if (hasUnknownSizeValue) {
 52357        length = null
 52358      }
 52359  
 52360      // Set source to object.
 52361      source = object
 52362  
 52363      action = async function * () {
 52364        for (const part of blobParts) {
 52365          if (part.stream) {
 52366            yield * part.stream()
 52367          } else {
 52368            yield part
 52369          }
 52370        }
 52371      }
 52372  
 52373      // Set type to `multipart/form-data; boundary=`,
 52374      // followed by the multipart/form-data boundary string generated
 52375      // by the multipart/form-data encoding algorithm.
 52376      type = 'multipart/form-data; boundary=' + boundary
 52377    } else if (isBlobLike(object)) {
 52378      // Blob
 52379  
 52380      // Set source to object.
 52381      source = object
 52382  
 52383      // Set length to object’s size.
 52384      length = object.size
 52385  
 52386      // If object’s type attribute is not the empty byte sequence, set
 52387      // type to its value.
 52388      if (object.type) {
 52389        type = object.type
 52390      }
 52391    } else if (typeof object[Symbol.asyncIterator] === 'function') {
 52392      // If keepalive is true, then throw a TypeError.
 52393      if (keepalive) {
 52394        throw new TypeError('keepalive')
 52395      }
 52396  
 52397      // If object is disturbed or locked, then throw a TypeError.
 52398      if (util.isDisturbed(object) || object.locked) {
 52399        throw new TypeError(
 52400          'Response body object should not be disturbed or locked'
 52401        )
 52402      }
 52403  
 52404      stream =
 52405        object instanceof ReadableStream ? object : ReadableStreamFrom(object)
 52406    }
 52407  
 52408    // 11. If source is a byte sequence, then set action to a
 52409    // step that returns source and length to source’s length.
 52410    if (typeof source === 'string' || util.isBuffer(source)) {
 52411      length = Buffer.byteLength(source)
 52412    }
 52413  
 52414    // 12. If action is non-null, then run these steps in in parallel:
 52415    if (action != null) {
 52416      // Run action.
 52417      let iterator
 52418      stream = new ReadableStream({
 52419        async start () {
 52420          iterator = action(object)[Symbol.asyncIterator]()
 52421        },
 52422        async pull (controller) {
 52423          const { value, done } = await iterator.next()
 52424          if (done) {
 52425            // When running action is done, close stream.
 52426            queueMicrotask(() => {
 52427              controller.close()
 52428            })
 52429          } else {
 52430            // Whenever one or more bytes are available and stream is not errored,
 52431            // enqueue a Uint8Array wrapping an ArrayBuffer containing the available
 52432            // bytes into stream.
 52433            if (!isErrored(stream)) {
 52434              controller.enqueue(new Uint8Array(value))
 52435            }
 52436          }
 52437          return controller.desiredSize > 0
 52438        },
 52439        async cancel (reason) {
 52440          await iterator.return()
 52441        },
 52442        type: undefined
 52443      })
 52444    }
 52445  
 52446    // 13. Let body be a body whose stream is stream, source is source,
 52447    // and length is length.
 52448    const body = { stream, source, length }
 52449  
 52450    // 14. Return (body, type).
 52451    return [body, type]
 52452  }
 52453  
 52454  // https://fetch.spec.whatwg.org/#bodyinit-safely-extract
 52455  function safelyExtractBody (object, keepalive = false) {
 52456    if (!ReadableStream) {
 52457      // istanbul ignore next
 52458      ReadableStream = (__nccwpck_require__(35356).ReadableStream)
 52459    }
 52460  
 52461    // To safely extract a body and a `Content-Type` value from
 52462    // a byte sequence or BodyInit object object, run these steps:
 52463  
 52464    // 1. If object is a ReadableStream object, then:
 52465    if (object instanceof ReadableStream) {
 52466      // Assert: object is neither disturbed nor locked.
 52467      // istanbul ignore next
 52468      assert(!util.isDisturbed(object), 'The body has already been consumed.')
 52469      // istanbul ignore next
 52470      assert(!object.locked, 'The stream is locked.')
 52471    }
 52472  
 52473    // 2. Return the results of extracting object.
 52474    return extractBody(object, keepalive)
 52475  }
 52476  
 52477  function cloneBody (body) {
 52478    // To clone a body body, run these steps:
 52479  
 52480    // https://fetch.spec.whatwg.org/#concept-body-clone
 52481  
 52482    // 1. Let « out1, out2 » be the result of teeing body’s stream.
 52483    const [out1, out2] = body.stream.tee()
 52484    const out2Clone = structuredClone(out2, { transfer: [out2] })
 52485    // This, for whatever reasons, unrefs out2Clone which allows
 52486    // the process to exit by itself.
 52487    const [, finalClone] = out2Clone.tee()
 52488  
 52489    // 2. Set body’s stream to out1.
 52490    body.stream = out1
 52491  
 52492    // 3. Return a body whose stream is out2 and other members are copied from body.
 52493    return {
 52494      stream: finalClone,
 52495      length: body.length,
 52496      source: body.source
 52497    }
 52498  }
 52499  
 52500  async function * consumeBody (body) {
 52501    if (body) {
 52502      if (isUint8Array(body)) {
 52503        yield body
 52504      } else {
 52505        const stream = body.stream
 52506  
 52507        if (util.isDisturbed(stream)) {
 52508          throw new TypeError('The body has already been consumed.')
 52509        }
 52510  
 52511        if (stream.locked) {
 52512          throw new TypeError('The stream is locked.')
 52513        }
 52514  
 52515        // Compat.
 52516        stream[kBodyUsed] = true
 52517  
 52518        yield * stream
 52519      }
 52520    }
 52521  }
 52522  
 52523  function throwIfAborted (state) {
 52524    if (state.aborted) {
 52525      throw new DOMException('The operation was aborted.', 'AbortError')
 52526    }
 52527  }
 52528  
 52529  function bodyMixinMethods (instance) {
 52530    const methods = {
 52531      blob () {
 52532        // The blob() method steps are to return the result of
 52533        // running consume body with this and the following step
 52534        // given a byte sequence bytes: return a Blob whose
 52535        // contents are bytes and whose type attribute is this’s
 52536        // MIME type.
 52537        return specConsumeBody(this, (bytes) => {
 52538          let mimeType = bodyMimeType(this)
 52539  
 52540          if (mimeType === 'failure') {
 52541            mimeType = ''
 52542          } else if (mimeType) {
 52543            mimeType = serializeAMimeType(mimeType)
 52544          }
 52545  
 52546          // Return a Blob whose contents are bytes and type attribute
 52547          // is mimeType.
 52548          return new Blob([bytes], { type: mimeType })
 52549        }, instance)
 52550      },
 52551  
 52552      arrayBuffer () {
 52553        // The arrayBuffer() method steps are to return the result
 52554        // of running consume body with this and the following step
 52555        // given a byte sequence bytes: return a new ArrayBuffer
 52556        // whose contents are bytes.
 52557        return specConsumeBody(this, (bytes) => {
 52558          return new Uint8Array(bytes).buffer
 52559        }, instance)
 52560      },
 52561  
 52562      text () {
 52563        // The text() method steps are to return the result of running
 52564        // consume body with this and UTF-8 decode.
 52565        return specConsumeBody(this, utf8DecodeBytes, instance)
 52566      },
 52567  
 52568      json () {
 52569        // The json() method steps are to return the result of running
 52570        // consume body with this and parse JSON from bytes.
 52571        return specConsumeBody(this, parseJSONFromBytes, instance)
 52572      },
 52573  
 52574      async formData () {
 52575        webidl.brandCheck(this, instance)
 52576  
 52577        throwIfAborted(this[kState])
 52578  
 52579        const contentType = this.headers.get('Content-Type')
 52580  
 52581        // If mimeType’s essence is "multipart/form-data", then:
 52582        if (/multipart\/form-data/.test(contentType)) {
 52583          const headers = {}
 52584          for (const [key, value] of this.headers) headers[key.toLowerCase()] = value
 52585  
 52586          const responseFormData = new FormData()
 52587  
 52588          let busboy
 52589  
 52590          try {
 52591            busboy = new Busboy({
 52592              headers,
 52593              preservePath: true
 52594            })
 52595          } catch (err) {
 52596            throw new DOMException(`${err}`, 'AbortError')
 52597          }
 52598  
 52599          busboy.on('field', (name, value) => {
 52600            responseFormData.append(name, value)
 52601          })
 52602          busboy.on('file', (name, value, filename, encoding, mimeType) => {
 52603            const chunks = []
 52604  
 52605            if (encoding === 'base64' || encoding.toLowerCase() === 'base64') {
 52606              let base64chunk = ''
 52607  
 52608              value.on('data', (chunk) => {
 52609                base64chunk += chunk.toString().replace(/[\r\n]/gm, '')
 52610  
 52611                const end = base64chunk.length - base64chunk.length % 4
 52612                chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64'))
 52613  
 52614                base64chunk = base64chunk.slice(end)
 52615              })
 52616              value.on('end', () => {
 52617                chunks.push(Buffer.from(base64chunk, 'base64'))
 52618                responseFormData.append(name, new File(chunks, filename, { type: mimeType }))
 52619              })
 52620            } else {
 52621              value.on('data', (chunk) => {
 52622                chunks.push(chunk)
 52623              })
 52624              value.on('end', () => {
 52625                responseFormData.append(name, new File(chunks, filename, { type: mimeType }))
 52626              })
 52627            }
 52628          })
 52629  
 52630          const busboyResolve = new Promise((resolve, reject) => {
 52631            busboy.on('finish', resolve)
 52632            busboy.on('error', (err) => reject(new TypeError(err)))
 52633          })
 52634  
 52635          if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk)
 52636          busboy.end()
 52637          await busboyResolve
 52638  
 52639          return responseFormData
 52640        } else if (/application\/x-www-form-urlencoded/.test(contentType)) {
 52641          // Otherwise, if mimeType’s essence is "application/x-www-form-urlencoded", then:
 52642  
 52643          // 1. Let entries be the result of parsing bytes.
 52644          let entries
 52645          try {
 52646            let text = ''
 52647            // application/x-www-form-urlencoded parser will keep the BOM.
 52648            // https://url.spec.whatwg.org/#concept-urlencoded-parser
 52649            // Note that streaming decoder is stateful and cannot be reused
 52650            const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true })
 52651  
 52652            for await (const chunk of consumeBody(this[kState].body)) {
 52653              if (!isUint8Array(chunk)) {
 52654                throw new TypeError('Expected Uint8Array chunk')
 52655              }
 52656              text += streamingDecoder.decode(chunk, { stream: true })
 52657            }
 52658            text += streamingDecoder.decode()
 52659            entries = new URLSearchParams(text)
 52660          } catch (err) {
 52661            // istanbul ignore next: Unclear when new URLSearchParams can fail on a string.
 52662            // 2. If entries is failure, then throw a TypeError.
 52663            throw Object.assign(new TypeError(), { cause: err })
 52664          }
 52665  
 52666          // 3. Return a new FormData object whose entries are entries.
 52667          const formData = new FormData()
 52668          for (const [name, value] of entries) {
 52669            formData.append(name, value)
 52670          }
 52671          return formData
 52672        } else {
 52673          // Wait a tick before checking if the request has been aborted.
 52674          // Otherwise, a TypeError can be thrown when an AbortError should.
 52675          await Promise.resolve()
 52676  
 52677          throwIfAborted(this[kState])
 52678  
 52679          // Otherwise, throw a TypeError.
 52680          throw webidl.errors.exception({
 52681            header: `${instance.name}.formData`,
 52682            message: 'Could not parse content as FormData.'
 52683          })
 52684        }
 52685      }
 52686    }
 52687  
 52688    return methods
 52689  }
 52690  
 52691  function mixinBody (prototype) {
 52692    Object.assign(prototype.prototype, bodyMixinMethods(prototype))
 52693  }
 52694  
 52695  /**
 52696   * @see https://fetch.spec.whatwg.org/#concept-body-consume-body
 52697   * @param {Response|Request} object
 52698   * @param {(value: unknown) => unknown} convertBytesToJSValue
 52699   * @param {Response|Request} instance
 52700   */
 52701  async function specConsumeBody (object, convertBytesToJSValue, instance) {
 52702    webidl.brandCheck(object, instance)
 52703  
 52704    throwIfAborted(object[kState])
 52705  
 52706    // 1. If object is unusable, then return a promise rejected
 52707    //    with a TypeError.
 52708    if (bodyUnusable(object[kState].body)) {
 52709      throw new TypeError('Body is unusable')
 52710    }
 52711  
 52712    // 2. Let promise be a new promise.
 52713    const promise = createDeferredPromise()
 52714  
 52715    // 3. Let errorSteps given error be to reject promise with error.
 52716    const errorSteps = (error) => promise.reject(error)
 52717  
 52718    // 4. Let successSteps given a byte sequence data be to resolve
 52719    //    promise with the result of running convertBytesToJSValue
 52720    //    with data. If that threw an exception, then run errorSteps
 52721    //    with that exception.
 52722    const successSteps = (data) => {
 52723      try {
 52724        promise.resolve(convertBytesToJSValue(data))
 52725      } catch (e) {
 52726        errorSteps(e)
 52727      }
 52728    }
 52729  
 52730    // 5. If object’s body is null, then run successSteps with an
 52731    //    empty byte sequence.
 52732    if (object[kState].body == null) {
 52733      successSteps(new Uint8Array())
 52734      return promise.promise
 52735    }
 52736  
 52737    // 6. Otherwise, fully read object’s body given successSteps,
 52738    //    errorSteps, and object’s relevant global object.
 52739    await fullyReadBody(object[kState].body, successSteps, errorSteps)
 52740  
 52741    // 7. Return promise.
 52742    return promise.promise
 52743  }
 52744  
 52745  // https://fetch.spec.whatwg.org/#body-unusable
 52746  function bodyUnusable (body) {
 52747    // An object including the Body interface mixin is
 52748    // said to be unusable if its body is non-null and
 52749    // its body’s stream is disturbed or locked.
 52750    return body != null && (body.stream.locked || util.isDisturbed(body.stream))
 52751  }
 52752  
 52753  /**
 52754   * @see https://encoding.spec.whatwg.org/#utf-8-decode
 52755   * @param {Buffer} buffer
 52756   */
 52757  function utf8DecodeBytes (buffer) {
 52758    if (buffer.length === 0) {
 52759      return ''
 52760    }
 52761  
 52762    // 1. Let buffer be the result of peeking three bytes from
 52763    //    ioQueue, converted to a byte sequence.
 52764  
 52765    // 2. If buffer is 0xEF 0xBB 0xBF, then read three
 52766    //    bytes from ioQueue. (Do nothing with those bytes.)
 52767    if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {
 52768      buffer = buffer.subarray(3)
 52769    }
 52770  
 52771    // 3. Process a queue with an instance of UTF-8’s
 52772    //    decoder, ioQueue, output, and "replacement".
 52773    const output = textDecoder.decode(buffer)
 52774  
 52775    // 4. Return output.
 52776    return output
 52777  }
 52778  
 52779  /**
 52780   * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value
 52781   * @param {Uint8Array} bytes
 52782   */
 52783  function parseJSONFromBytes (bytes) {
 52784    return JSON.parse(utf8DecodeBytes(bytes))
 52785  }
 52786  
 52787  /**
 52788   * @see https://fetch.spec.whatwg.org/#concept-body-mime-type
 52789   * @param {import('./response').Response|import('./request').Request} object
 52790   */
 52791  function bodyMimeType (object) {
 52792    const { headersList } = object[kState]
 52793    const contentType = headersList.get('content-type')
 52794  
 52795    if (contentType === null) {
 52796      return 'failure'
 52797    }
 52798  
 52799    return parseMIMEType(contentType)
 52800  }
 52801  
 52802  module.exports = {
 52803    extractBody,
 52804    safelyExtractBody,
 52805    cloneBody,
 52806    mixinBody
 52807  }
 52808  
 52809  
 52810  /***/ }),
 52811  
 52812  /***/ 41037:
 52813  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 52814  
 52815  "use strict";
 52816  
 52817  
 52818  const { MessageChannel, receiveMessageOnPort } = __nccwpck_require__(71267)
 52819  
 52820  const corsSafeListedMethods = ['GET', 'HEAD', 'POST']
 52821  const corsSafeListedMethodsSet = new Set(corsSafeListedMethods)
 52822  
 52823  const nullBodyStatus = [101, 204, 205, 304]
 52824  
 52825  const redirectStatus = [301, 302, 303, 307, 308]
 52826  const redirectStatusSet = new Set(redirectStatus)
 52827  
 52828  // https://fetch.spec.whatwg.org/#block-bad-port
 52829  const badPorts = [
 52830    '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79',
 52831    '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137',
 52832    '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532',
 52833    '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723',
 52834    '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697',
 52835    '10080'
 52836  ]
 52837  
 52838  const badPortsSet = new Set(badPorts)
 52839  
 52840  // https://w3c.github.io/webappsec-referrer-policy/#referrer-policies
 52841  const referrerPolicy = [
 52842    '',
 52843    'no-referrer',
 52844    'no-referrer-when-downgrade',
 52845    'same-origin',
 52846    'origin',
 52847    'strict-origin',
 52848    'origin-when-cross-origin',
 52849    'strict-origin-when-cross-origin',
 52850    'unsafe-url'
 52851  ]
 52852  const referrerPolicySet = new Set(referrerPolicy)
 52853  
 52854  const requestRedirect = ['follow', 'manual', 'error']
 52855  
 52856  const safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']
 52857  const safeMethodsSet = new Set(safeMethods)
 52858  
 52859  const requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']
 52860  
 52861  const requestCredentials = ['omit', 'same-origin', 'include']
 52862  
 52863  const requestCache = [
 52864    'default',
 52865    'no-store',
 52866    'reload',
 52867    'no-cache',
 52868    'force-cache',
 52869    'only-if-cached'
 52870  ]
 52871  
 52872  // https://fetch.spec.whatwg.org/#request-body-header-name
 52873  const requestBodyHeader = [
 52874    'content-encoding',
 52875    'content-language',
 52876    'content-location',
 52877    'content-type',
 52878    // See https://github.com/nodejs/undici/issues/2021
 52879    // 'Content-Length' is a forbidden header name, which is typically
 52880    // removed in the Headers implementation. However, undici doesn't
 52881    // filter out headers, so we add it here.
 52882    'content-length'
 52883  ]
 52884  
 52885  // https://fetch.spec.whatwg.org/#enumdef-requestduplex
 52886  const requestDuplex = [
 52887    'half'
 52888  ]
 52889  
 52890  // http://fetch.spec.whatwg.org/#forbidden-method
 52891  const forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']
 52892  const forbiddenMethodsSet = new Set(forbiddenMethods)
 52893  
 52894  const subresource = [
 52895    'audio',
 52896    'audioworklet',
 52897    'font',
 52898    'image',
 52899    'manifest',
 52900    'paintworklet',
 52901    'script',
 52902    'style',
 52903    'track',
 52904    'video',
 52905    'xslt',
 52906    ''
 52907  ]
 52908  const subresourceSet = new Set(subresource)
 52909  
 52910  /** @type {globalThis['DOMException']} */
 52911  const DOMException = globalThis.DOMException ?? (() => {
 52912    // DOMException was only made a global in Node v17.0.0,
 52913    // but fetch supports >= v16.8.
 52914    try {
 52915      atob('~')
 52916    } catch (err) {
 52917      return Object.getPrototypeOf(err).constructor
 52918    }
 52919  })()
 52920  
 52921  let channel
 52922  
 52923  /** @type {globalThis['structuredClone']} */
 52924  const structuredClone =
 52925    globalThis.structuredClone ??
 52926    // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js
 52927    // structuredClone was added in v17.0.0, but fetch supports v16.8
 52928    function structuredClone (value, options = undefined) {
 52929      if (arguments.length === 0) {
 52930        throw new TypeError('missing argument')
 52931      }
 52932  
 52933      if (!channel) {
 52934        channel = new MessageChannel()
 52935      }
 52936      channel.port1.unref()
 52937      channel.port2.unref()
 52938      channel.port1.postMessage(value, options?.transfer)
 52939      return receiveMessageOnPort(channel.port2).message
 52940    }
 52941  
 52942  module.exports = {
 52943    DOMException,
 52944    structuredClone,
 52945    subresource,
 52946    forbiddenMethods,
 52947    requestBodyHeader,
 52948    referrerPolicy,
 52949    requestRedirect,
 52950    requestMode,
 52951    requestCredentials,
 52952    requestCache,
 52953    redirectStatus,
 52954    corsSafeListedMethods,
 52955    nullBodyStatus,
 52956    safeMethods,
 52957    badPorts,
 52958    requestDuplex,
 52959    subresourceSet,
 52960    badPortsSet,
 52961    redirectStatusSet,
 52962    corsSafeListedMethodsSet,
 52963    safeMethodsSet,
 52964    forbiddenMethodsSet,
 52965    referrerPolicySet
 52966  }
 52967  
 52968  
 52969  /***/ }),
 52970  
 52971  /***/ 685:
 52972  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 52973  
 52974  const assert = __nccwpck_require__(39491)
 52975  const { atob } = __nccwpck_require__(14300)
 52976  const { isomorphicDecode } = __nccwpck_require__(52538)
 52977  
 52978  const encoder = new TextEncoder()
 52979  
 52980  /**
 52981   * @see https://mimesniff.spec.whatwg.org/#http-token-code-point
 52982   */
 52983  const HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/
 52984  const HTTP_WHITESPACE_REGEX = /(\u000A|\u000D|\u0009|\u0020)/ // eslint-disable-line
 52985  /**
 52986   * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point
 52987   */
 52988  const HTTP_QUOTED_STRING_TOKENS = /[\u0009|\u0020-\u007E|\u0080-\u00FF]/ // eslint-disable-line
 52989  
 52990  // https://fetch.spec.whatwg.org/#data-url-processor
 52991  /** @param {URL} dataURL */
 52992  function dataURLProcessor (dataURL) {
 52993    // 1. Assert: dataURL’s scheme is "data".
 52994    assert(dataURL.protocol === 'data:')
 52995  
 52996    // 2. Let input be the result of running the URL
 52997    // serializer on dataURL with exclude fragment
 52998    // set to true.
 52999    let input = URLSerializer(dataURL, true)
 53000  
 53001    // 3. Remove the leading "data:" string from input.
 53002    input = input.slice(5)
 53003  
 53004    // 4. Let position point at the start of input.
 53005    const position = { position: 0 }
 53006  
 53007    // 5. Let mimeType be the result of collecting a
 53008    // sequence of code points that are not equal
 53009    // to U+002C (,), given position.
 53010    let mimeType = collectASequenceOfCodePointsFast(
 53011      ',',
 53012      input,
 53013      position
 53014    )
 53015  
 53016    // 6. Strip leading and trailing ASCII whitespace
 53017    // from mimeType.
 53018    // Undici implementation note: we need to store the
 53019    // length because if the mimetype has spaces removed,
 53020    // the wrong amount will be sliced from the input in
 53021    // step #9
 53022    const mimeTypeLength = mimeType.length
 53023    mimeType = removeASCIIWhitespace(mimeType, true, true)
 53024  
 53025    // 7. If position is past the end of input, then
 53026    // return failure
 53027    if (position.position >= input.length) {
 53028      return 'failure'
 53029    }
 53030  
 53031    // 8. Advance position by 1.
 53032    position.position++
 53033  
 53034    // 9. Let encodedBody be the remainder of input.
 53035    const encodedBody = input.slice(mimeTypeLength + 1)
 53036  
 53037    // 10. Let body be the percent-decoding of encodedBody.
 53038    let body = stringPercentDecode(encodedBody)
 53039  
 53040    // 11. If mimeType ends with U+003B (;), followed by
 53041    // zero or more U+0020 SPACE, followed by an ASCII
 53042    // case-insensitive match for "base64", then:
 53043    if (/;(\u0020){0,}base64$/i.test(mimeType)) {
 53044      // 1. Let stringBody be the isomorphic decode of body.
 53045      const stringBody = isomorphicDecode(body)
 53046  
 53047      // 2. Set body to the forgiving-base64 decode of
 53048      // stringBody.
 53049      body = forgivingBase64(stringBody)
 53050  
 53051      // 3. If body is failure, then return failure.
 53052      if (body === 'failure') {
 53053        return 'failure'
 53054      }
 53055  
 53056      // 4. Remove the last 6 code points from mimeType.
 53057      mimeType = mimeType.slice(0, -6)
 53058  
 53059      // 5. Remove trailing U+0020 SPACE code points from mimeType,
 53060      // if any.
 53061      mimeType = mimeType.replace(/(\u0020)+$/, '')
 53062  
 53063      // 6. Remove the last U+003B (;) code point from mimeType.
 53064      mimeType = mimeType.slice(0, -1)
 53065    }
 53066  
 53067    // 12. If mimeType starts with U+003B (;), then prepend
 53068    // "text/plain" to mimeType.
 53069    if (mimeType.startsWith(';')) {
 53070      mimeType = 'text/plain' + mimeType
 53071    }
 53072  
 53073    // 13. Let mimeTypeRecord be the result of parsing
 53074    // mimeType.
 53075    let mimeTypeRecord = parseMIMEType(mimeType)
 53076  
 53077    // 14. If mimeTypeRecord is failure, then set
 53078    // mimeTypeRecord to text/plain;charset=US-ASCII.
 53079    if (mimeTypeRecord === 'failure') {
 53080      mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII')
 53081    }
 53082  
 53083    // 15. Return a new data: URL struct whose MIME
 53084    // type is mimeTypeRecord and body is body.
 53085    // https://fetch.spec.whatwg.org/#data-url-struct
 53086    return { mimeType: mimeTypeRecord, body }
 53087  }
 53088  
 53089  // https://url.spec.whatwg.org/#concept-url-serializer
 53090  /**
 53091   * @param {URL} url
 53092   * @param {boolean} excludeFragment
 53093   */
 53094  function URLSerializer (url, excludeFragment = false) {
 53095    if (!excludeFragment) {
 53096      return url.href
 53097    }
 53098  
 53099    const href = url.href
 53100    const hashLength = url.hash.length
 53101  
 53102    return hashLength === 0 ? href : href.substring(0, href.length - hashLength)
 53103  }
 53104  
 53105  // https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points
 53106  /**
 53107   * @param {(char: string) => boolean} condition
 53108   * @param {string} input
 53109   * @param {{ position: number }} position
 53110   */
 53111  function collectASequenceOfCodePoints (condition, input, position) {
 53112    // 1. Let result be the empty string.
 53113    let result = ''
 53114  
 53115    // 2. While position doesn’t point past the end of input and the
 53116    // code point at position within input meets the condition condition:
 53117    while (position.position < input.length && condition(input[position.position])) {
 53118      // 1. Append that code point to the end of result.
 53119      result += input[position.position]
 53120  
 53121      // 2. Advance position by 1.
 53122      position.position++
 53123    }
 53124  
 53125    // 3. Return result.
 53126    return result
 53127  }
 53128  
 53129  /**
 53130   * A faster collectASequenceOfCodePoints that only works when comparing a single character.
 53131   * @param {string} char
 53132   * @param {string} input
 53133   * @param {{ position: number }} position
 53134   */
 53135  function collectASequenceOfCodePointsFast (char, input, position) {
 53136    const idx = input.indexOf(char, position.position)
 53137    const start = position.position
 53138  
 53139    if (idx === -1) {
 53140      position.position = input.length
 53141      return input.slice(start)
 53142    }
 53143  
 53144    position.position = idx
 53145    return input.slice(start, position.position)
 53146  }
 53147  
 53148  // https://url.spec.whatwg.org/#string-percent-decode
 53149  /** @param {string} input */
 53150  function stringPercentDecode (input) {
 53151    // 1. Let bytes be the UTF-8 encoding of input.
 53152    const bytes = encoder.encode(input)
 53153  
 53154    // 2. Return the percent-decoding of bytes.
 53155    return percentDecode(bytes)
 53156  }
 53157  
 53158  // https://url.spec.whatwg.org/#percent-decode
 53159  /** @param {Uint8Array} input */
 53160  function percentDecode (input) {
 53161    // 1. Let output be an empty byte sequence.
 53162    /** @type {number[]} */
 53163    const output = []
 53164  
 53165    // 2. For each byte byte in input:
 53166    for (let i = 0; i < input.length; i++) {
 53167      const byte = input[i]
 53168  
 53169      // 1. If byte is not 0x25 (%), then append byte to output.
 53170      if (byte !== 0x25) {
 53171        output.push(byte)
 53172  
 53173      // 2. Otherwise, if byte is 0x25 (%) and the next two bytes
 53174      // after byte in input are not in the ranges
 53175      // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F),
 53176      // and 0x61 (a) to 0x66 (f), all inclusive, append byte
 53177      // to output.
 53178      } else if (
 53179        byte === 0x25 &&
 53180        !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))
 53181      ) {
 53182        output.push(0x25)
 53183  
 53184      // 3. Otherwise:
 53185      } else {
 53186        // 1. Let bytePoint be the two bytes after byte in input,
 53187        // decoded, and then interpreted as hexadecimal number.
 53188        const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2])
 53189        const bytePoint = Number.parseInt(nextTwoBytes, 16)
 53190  
 53191        // 2. Append a byte whose value is bytePoint to output.
 53192        output.push(bytePoint)
 53193  
 53194        // 3. Skip the next two bytes in input.
 53195        i += 2
 53196      }
 53197    }
 53198  
 53199    // 3. Return output.
 53200    return Uint8Array.from(output)
 53201  }
 53202  
 53203  // https://mimesniff.spec.whatwg.org/#parse-a-mime-type
 53204  /** @param {string} input */
 53205  function parseMIMEType (input) {
 53206    // 1. Remove any leading and trailing HTTP whitespace
 53207    // from input.
 53208    input = removeHTTPWhitespace(input, true, true)
 53209  
 53210    // 2. Let position be a position variable for input,
 53211    // initially pointing at the start of input.
 53212    const position = { position: 0 }
 53213  
 53214    // 3. Let type be the result of collecting a sequence
 53215    // of code points that are not U+002F (/) from
 53216    // input, given position.
 53217    const type = collectASequenceOfCodePointsFast(
 53218      '/',
 53219      input,
 53220      position
 53221    )
 53222  
 53223    // 4. If type is the empty string or does not solely
 53224    // contain HTTP token code points, then return failure.
 53225    // https://mimesniff.spec.whatwg.org/#http-token-code-point
 53226    if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {
 53227      return 'failure'
 53228    }
 53229  
 53230    // 5. If position is past the end of input, then return
 53231    // failure
 53232    if (position.position > input.length) {
 53233      return 'failure'
 53234    }
 53235  
 53236    // 6. Advance position by 1. (This skips past U+002F (/).)
 53237    position.position++
 53238  
 53239    // 7. Let subtype be the result of collecting a sequence of
 53240    // code points that are not U+003B (;) from input, given
 53241    // position.
 53242    let subtype = collectASequenceOfCodePointsFast(
 53243      ';',
 53244      input,
 53245      position
 53246    )
 53247  
 53248    // 8. Remove any trailing HTTP whitespace from subtype.
 53249    subtype = removeHTTPWhitespace(subtype, false, true)
 53250  
 53251    // 9. If subtype is the empty string or does not solely
 53252    // contain HTTP token code points, then return failure.
 53253    if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {
 53254      return 'failure'
 53255    }
 53256  
 53257    const typeLowercase = type.toLowerCase()
 53258    const subtypeLowercase = subtype.toLowerCase()
 53259  
 53260    // 10. Let mimeType be a new MIME type record whose type
 53261    // is type, in ASCII lowercase, and subtype is subtype,
 53262    // in ASCII lowercase.
 53263    // https://mimesniff.spec.whatwg.org/#mime-type
 53264    const mimeType = {
 53265      type: typeLowercase,
 53266      subtype: subtypeLowercase,
 53267      /** @type {Map<string, string>} */
 53268      parameters: new Map(),
 53269      // https://mimesniff.spec.whatwg.org/#mime-type-essence
 53270      essence: `${typeLowercase}/${subtypeLowercase}`
 53271    }
 53272  
 53273    // 11. While position is not past the end of input:
 53274    while (position.position < input.length) {
 53275      // 1. Advance position by 1. (This skips past U+003B (;).)
 53276      position.position++
 53277  
 53278      // 2. Collect a sequence of code points that are HTTP
 53279      // whitespace from input given position.
 53280      collectASequenceOfCodePoints(
 53281        // https://fetch.spec.whatwg.org/#http-whitespace
 53282        char => HTTP_WHITESPACE_REGEX.test(char),
 53283        input,
 53284        position
 53285      )
 53286  
 53287      // 3. Let parameterName be the result of collecting a
 53288      // sequence of code points that are not U+003B (;)
 53289      // or U+003D (=) from input, given position.
 53290      let parameterName = collectASequenceOfCodePoints(
 53291        (char) => char !== ';' && char !== '=',
 53292        input,
 53293        position
 53294      )
 53295  
 53296      // 4. Set parameterName to parameterName, in ASCII
 53297      // lowercase.
 53298      parameterName = parameterName.toLowerCase()
 53299  
 53300      // 5. If position is not past the end of input, then:
 53301      if (position.position < input.length) {
 53302        // 1. If the code point at position within input is
 53303        // U+003B (;), then continue.
 53304        if (input[position.position] === ';') {
 53305          continue
 53306        }
 53307  
 53308        // 2. Advance position by 1. (This skips past U+003D (=).)
 53309        position.position++
 53310      }
 53311  
 53312      // 6. If position is past the end of input, then break.
 53313      if (position.position > input.length) {
 53314        break
 53315      }
 53316  
 53317      // 7. Let parameterValue be null.
 53318      let parameterValue = null
 53319  
 53320      // 8. If the code point at position within input is
 53321      // U+0022 ("), then:
 53322      if (input[position.position] === '"') {
 53323        // 1. Set parameterValue to the result of collecting
 53324        // an HTTP quoted string from input, given position
 53325        // and the extract-value flag.
 53326        parameterValue = collectAnHTTPQuotedString(input, position, true)
 53327  
 53328        // 2. Collect a sequence of code points that are not
 53329        // U+003B (;) from input, given position.
 53330        collectASequenceOfCodePointsFast(
 53331          ';',
 53332          input,
 53333          position
 53334        )
 53335  
 53336      // 9. Otherwise:
 53337      } else {
 53338        // 1. Set parameterValue to the result of collecting
 53339        // a sequence of code points that are not U+003B (;)
 53340        // from input, given position.
 53341        parameterValue = collectASequenceOfCodePointsFast(
 53342          ';',
 53343          input,
 53344          position
 53345        )
 53346  
 53347        // 2. Remove any trailing HTTP whitespace from parameterValue.
 53348        parameterValue = removeHTTPWhitespace(parameterValue, false, true)
 53349  
 53350        // 3. If parameterValue is the empty string, then continue.
 53351        if (parameterValue.length === 0) {
 53352          continue
 53353        }
 53354      }
 53355  
 53356      // 10. If all of the following are true
 53357      // - parameterName is not the empty string
 53358      // - parameterName solely contains HTTP token code points
 53359      // - parameterValue solely contains HTTP quoted-string token code points
 53360      // - mimeType’s parameters[parameterName] does not exist
 53361      // then set mimeType’s parameters[parameterName] to parameterValue.
 53362      if (
 53363        parameterName.length !== 0 &&
 53364        HTTP_TOKEN_CODEPOINTS.test(parameterName) &&
 53365        (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) &&
 53366        !mimeType.parameters.has(parameterName)
 53367      ) {
 53368        mimeType.parameters.set(parameterName, parameterValue)
 53369      }
 53370    }
 53371  
 53372    // 12. Return mimeType.
 53373    return mimeType
 53374  }
 53375  
 53376  // https://infra.spec.whatwg.org/#forgiving-base64-decode
 53377  /** @param {string} data */
 53378  function forgivingBase64 (data) {
 53379    // 1. Remove all ASCII whitespace from data.
 53380    data = data.replace(/[\u0009\u000A\u000C\u000D\u0020]/g, '')  // eslint-disable-line
 53381  
 53382    // 2. If data’s code point length divides by 4 leaving
 53383    // no remainder, then:
 53384    if (data.length % 4 === 0) {
 53385      // 1. If data ends with one or two U+003D (=) code points,
 53386      // then remove them from data.
 53387      data = data.replace(/=?=$/, '')
 53388    }
 53389  
 53390    // 3. If data’s code point length divides by 4 leaving
 53391    // a remainder of 1, then return failure.
 53392    if (data.length % 4 === 1) {
 53393      return 'failure'
 53394    }
 53395  
 53396    // 4. If data contains a code point that is not one of
 53397    //  U+002B (+)
 53398    //  U+002F (/)
 53399    //  ASCII alphanumeric
 53400    // then return failure.
 53401    if (/[^+/0-9A-Za-z]/.test(data)) {
 53402      return 'failure'
 53403    }
 53404  
 53405    const binary = atob(data)
 53406    const bytes = new Uint8Array(binary.length)
 53407  
 53408    for (let byte = 0; byte < binary.length; byte++) {
 53409      bytes[byte] = binary.charCodeAt(byte)
 53410    }
 53411  
 53412    return bytes
 53413  }
 53414  
 53415  // https://fetch.spec.whatwg.org/#collect-an-http-quoted-string
 53416  // tests: https://fetch.spec.whatwg.org/#example-http-quoted-string
 53417  /**
 53418   * @param {string} input
 53419   * @param {{ position: number }} position
 53420   * @param {boolean?} extractValue
 53421   */
 53422  function collectAnHTTPQuotedString (input, position, extractValue) {
 53423    // 1. Let positionStart be position.
 53424    const positionStart = position.position
 53425  
 53426    // 2. Let value be the empty string.
 53427    let value = ''
 53428  
 53429    // 3. Assert: the code point at position within input
 53430    // is U+0022 (").
 53431    assert(input[position.position] === '"')
 53432  
 53433    // 4. Advance position by 1.
 53434    position.position++
 53435  
 53436    // 5. While true:
 53437    while (true) {
 53438      // 1. Append the result of collecting a sequence of code points
 53439      // that are not U+0022 (") or U+005C (\) from input, given
 53440      // position, to value.
 53441      value += collectASequenceOfCodePoints(
 53442        (char) => char !== '"' && char !== '\\',
 53443        input,
 53444        position
 53445      )
 53446  
 53447      // 2. If position is past the end of input, then break.
 53448      if (position.position >= input.length) {
 53449        break
 53450      }
 53451  
 53452      // 3. Let quoteOrBackslash be the code point at position within
 53453      // input.
 53454      const quoteOrBackslash = input[position.position]
 53455  
 53456      // 4. Advance position by 1.
 53457      position.position++
 53458  
 53459      // 5. If quoteOrBackslash is U+005C (\), then:
 53460      if (quoteOrBackslash === '\\') {
 53461        // 1. If position is past the end of input, then append
 53462        // U+005C (\) to value and break.
 53463        if (position.position >= input.length) {
 53464          value += '\\'
 53465          break
 53466        }
 53467  
 53468        // 2. Append the code point at position within input to value.
 53469        value += input[position.position]
 53470  
 53471        // 3. Advance position by 1.
 53472        position.position++
 53473  
 53474      // 6. Otherwise:
 53475      } else {
 53476        // 1. Assert: quoteOrBackslash is U+0022 (").
 53477        assert(quoteOrBackslash === '"')
 53478  
 53479        // 2. Break.
 53480        break
 53481      }
 53482    }
 53483  
 53484    // 6. If the extract-value flag is set, then return value.
 53485    if (extractValue) {
 53486      return value
 53487    }
 53488  
 53489    // 7. Return the code points from positionStart to position,
 53490    // inclusive, within input.
 53491    return input.slice(positionStart, position.position)
 53492  }
 53493  
 53494  /**
 53495   * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type
 53496   */
 53497  function serializeAMimeType (mimeType) {
 53498    assert(mimeType !== 'failure')
 53499    const { parameters, essence } = mimeType
 53500  
 53501    // 1. Let serialization be the concatenation of mimeType’s
 53502    //    type, U+002F (/), and mimeType’s subtype.
 53503    let serialization = essence
 53504  
 53505    // 2. For each name → value of mimeType’s parameters:
 53506    for (let [name, value] of parameters.entries()) {
 53507      // 1. Append U+003B (;) to serialization.
 53508      serialization += ';'
 53509  
 53510      // 2. Append name to serialization.
 53511      serialization += name
 53512  
 53513      // 3. Append U+003D (=) to serialization.
 53514      serialization += '='
 53515  
 53516      // 4. If value does not solely contain HTTP token code
 53517      //    points or value is the empty string, then:
 53518      if (!HTTP_TOKEN_CODEPOINTS.test(value)) {
 53519        // 1. Precede each occurence of U+0022 (") or
 53520        //    U+005C (\) in value with U+005C (\).
 53521        value = value.replace(/(\\|")/g, '\\$1')
 53522  
 53523        // 2. Prepend U+0022 (") to value.
 53524        value = '"' + value
 53525  
 53526        // 3. Append U+0022 (") to value.
 53527        value += '"'
 53528      }
 53529  
 53530      // 5. Append value to serialization.
 53531      serialization += value
 53532    }
 53533  
 53534    // 3. Return serialization.
 53535    return serialization
 53536  }
 53537  
 53538  /**
 53539   * @see https://fetch.spec.whatwg.org/#http-whitespace
 53540   * @param {string} char
 53541   */
 53542  function isHTTPWhiteSpace (char) {
 53543    return char === '\r' || char === '\n' || char === '\t' || char === ' '
 53544  }
 53545  
 53546  /**
 53547   * @see https://fetch.spec.whatwg.org/#http-whitespace
 53548   * @param {string} str
 53549   */
 53550  function removeHTTPWhitespace (str, leading = true, trailing = true) {
 53551    let lead = 0
 53552    let trail = str.length - 1
 53553  
 53554    if (leading) {
 53555      for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++);
 53556    }
 53557  
 53558    if (trailing) {
 53559      for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--);
 53560    }
 53561  
 53562    return str.slice(lead, trail + 1)
 53563  }
 53564  
 53565  /**
 53566   * @see https://infra.spec.whatwg.org/#ascii-whitespace
 53567   * @param {string} char
 53568   */
 53569  function isASCIIWhitespace (char) {
 53570    return char === '\r' || char === '\n' || char === '\t' || char === '\f' || char === ' '
 53571  }
 53572  
 53573  /**
 53574   * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace
 53575   */
 53576  function removeASCIIWhitespace (str, leading = true, trailing = true) {
 53577    let lead = 0
 53578    let trail = str.length - 1
 53579  
 53580    if (leading) {
 53581      for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++);
 53582    }
 53583  
 53584    if (trailing) {
 53585      for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--);
 53586    }
 53587  
 53588    return str.slice(lead, trail + 1)
 53589  }
 53590  
 53591  module.exports = {
 53592    dataURLProcessor,
 53593    URLSerializer,
 53594    collectASequenceOfCodePoints,
 53595    collectASequenceOfCodePointsFast,
 53596    stringPercentDecode,
 53597    parseMIMEType,
 53598    collectAnHTTPQuotedString,
 53599    serializeAMimeType
 53600  }
 53601  
 53602  
 53603  /***/ }),
 53604  
 53605  /***/ 78511:
 53606  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 53607  
 53608  "use strict";
 53609  
 53610  
 53611  const { Blob, File: NativeFile } = __nccwpck_require__(14300)
 53612  const { types } = __nccwpck_require__(73837)
 53613  const { kState } = __nccwpck_require__(15861)
 53614  const { isBlobLike } = __nccwpck_require__(52538)
 53615  const { webidl } = __nccwpck_require__(21744)
 53616  const { parseMIMEType, serializeAMimeType } = __nccwpck_require__(685)
 53617  const { kEnumerableProperty } = __nccwpck_require__(83983)
 53618  const encoder = new TextEncoder()
 53619  
 53620  class File extends Blob {
 53621    constructor (fileBits, fileName, options = {}) {
 53622      // The File constructor is invoked with two or three parameters, depending
 53623      // on whether the optional dictionary parameter is used. When the File()
 53624      // constructor is invoked, user agents must run the following steps:
 53625      webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' })
 53626  
 53627      fileBits = webidl.converters['sequence<BlobPart>'](fileBits)
 53628      fileName = webidl.converters.USVString(fileName)
 53629      options = webidl.converters.FilePropertyBag(options)
 53630  
 53631      // 1. Let bytes be the result of processing blob parts given fileBits and
 53632      // options.
 53633      // Note: Blob handles this for us
 53634  
 53635      // 2. Let n be the fileName argument to the constructor.
 53636      const n = fileName
 53637  
 53638      // 3. Process FilePropertyBag dictionary argument by running the following
 53639      // substeps:
 53640  
 53641      //    1. If the type member is provided and is not the empty string, let t
 53642      //    be set to the type dictionary member. If t contains any characters
 53643      //    outside the range U+0020 to U+007E, then set t to the empty string
 53644      //    and return from these substeps.
 53645      //    2. Convert every character in t to ASCII lowercase.
 53646      let t = options.type
 53647      let d
 53648  
 53649      // eslint-disable-next-line no-labels
 53650      substep: {
 53651        if (t) {
 53652          t = parseMIMEType(t)
 53653  
 53654          if (t === 'failure') {
 53655            t = ''
 53656            // eslint-disable-next-line no-labels
 53657            break substep
 53658          }
 53659  
 53660          t = serializeAMimeType(t).toLowerCase()
 53661        }
 53662  
 53663        //    3. If the lastModified member is provided, let d be set to the
 53664        //    lastModified dictionary member. If it is not provided, set d to the
 53665        //    current date and time represented as the number of milliseconds since
 53666        //    the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).
 53667        d = options.lastModified
 53668      }
 53669  
 53670      // 4. Return a new File object F such that:
 53671      // F refers to the bytes byte sequence.
 53672      // F.size is set to the number of total bytes in bytes.
 53673      // F.name is set to n.
 53674      // F.type is set to t.
 53675      // F.lastModified is set to d.
 53676  
 53677      super(processBlobParts(fileBits, options), { type: t })
 53678      this[kState] = {
 53679        name: n,
 53680        lastModified: d,
 53681        type: t
 53682      }
 53683    }
 53684  
 53685    get name () {
 53686      webidl.brandCheck(this, File)
 53687  
 53688      return this[kState].name
 53689    }
 53690  
 53691    get lastModified () {
 53692      webidl.brandCheck(this, File)
 53693  
 53694      return this[kState].lastModified
 53695    }
 53696  
 53697    get type () {
 53698      webidl.brandCheck(this, File)
 53699  
 53700      return this[kState].type
 53701    }
 53702  }
 53703  
 53704  class FileLike {
 53705    constructor (blobLike, fileName, options = {}) {
 53706      // TODO: argument idl type check
 53707  
 53708      // The File constructor is invoked with two or three parameters, depending
 53709      // on whether the optional dictionary parameter is used. When the File()
 53710      // constructor is invoked, user agents must run the following steps:
 53711  
 53712      // 1. Let bytes be the result of processing blob parts given fileBits and
 53713      // options.
 53714  
 53715      // 2. Let n be the fileName argument to the constructor.
 53716      const n = fileName
 53717  
 53718      // 3. Process FilePropertyBag dictionary argument by running the following
 53719      // substeps:
 53720  
 53721      //    1. If the type member is provided and is not the empty string, let t
 53722      //    be set to the type dictionary member. If t contains any characters
 53723      //    outside the range U+0020 to U+007E, then set t to the empty string
 53724      //    and return from these substeps.
 53725      //    TODO
 53726      const t = options.type
 53727  
 53728      //    2. Convert every character in t to ASCII lowercase.
 53729      //    TODO
 53730  
 53731      //    3. If the lastModified member is provided, let d be set to the
 53732      //    lastModified dictionary member. If it is not provided, set d to the
 53733      //    current date and time represented as the number of milliseconds since
 53734      //    the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).
 53735      const d = options.lastModified ?? Date.now()
 53736  
 53737      // 4. Return a new File object F such that:
 53738      // F refers to the bytes byte sequence.
 53739      // F.size is set to the number of total bytes in bytes.
 53740      // F.name is set to n.
 53741      // F.type is set to t.
 53742      // F.lastModified is set to d.
 53743  
 53744      this[kState] = {
 53745        blobLike,
 53746        name: n,
 53747        type: t,
 53748        lastModified: d
 53749      }
 53750    }
 53751  
 53752    stream (...args) {
 53753      webidl.brandCheck(this, FileLike)
 53754  
 53755      return this[kState].blobLike.stream(...args)
 53756    }
 53757  
 53758    arrayBuffer (...args) {
 53759      webidl.brandCheck(this, FileLike)
 53760  
 53761      return this[kState].blobLike.arrayBuffer(...args)
 53762    }
 53763  
 53764    slice (...args) {
 53765      webidl.brandCheck(this, FileLike)
 53766  
 53767      return this[kState].blobLike.slice(...args)
 53768    }
 53769  
 53770    text (...args) {
 53771      webidl.brandCheck(this, FileLike)
 53772  
 53773      return this[kState].blobLike.text(...args)
 53774    }
 53775  
 53776    get size () {
 53777      webidl.brandCheck(this, FileLike)
 53778  
 53779      return this[kState].blobLike.size
 53780    }
 53781  
 53782    get type () {
 53783      webidl.brandCheck(this, FileLike)
 53784  
 53785      return this[kState].blobLike.type
 53786    }
 53787  
 53788    get name () {
 53789      webidl.brandCheck(this, FileLike)
 53790  
 53791      return this[kState].name
 53792    }
 53793  
 53794    get lastModified () {
 53795      webidl.brandCheck(this, FileLike)
 53796  
 53797      return this[kState].lastModified
 53798    }
 53799  
 53800    get [Symbol.toStringTag] () {
 53801      return 'File'
 53802    }
 53803  }
 53804  
 53805  Object.defineProperties(File.prototype, {
 53806    [Symbol.toStringTag]: {
 53807      value: 'File',
 53808      configurable: true
 53809    },
 53810    name: kEnumerableProperty,
 53811    lastModified: kEnumerableProperty
 53812  })
 53813  
 53814  webidl.converters.Blob = webidl.interfaceConverter(Blob)
 53815  
 53816  webidl.converters.BlobPart = function (V, opts) {
 53817    if (webidl.util.Type(V) === 'Object') {
 53818      if (isBlobLike(V)) {
 53819        return webidl.converters.Blob(V, { strict: false })
 53820      }
 53821  
 53822      if (
 53823        ArrayBuffer.isView(V) ||
 53824        types.isAnyArrayBuffer(V)
 53825      ) {
 53826        return webidl.converters.BufferSource(V, opts)
 53827      }
 53828    }
 53829  
 53830    return webidl.converters.USVString(V, opts)
 53831  }
 53832  
 53833  webidl.converters['sequence<BlobPart>'] = webidl.sequenceConverter(
 53834    webidl.converters.BlobPart
 53835  )
 53836  
 53837  // https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag
 53838  webidl.converters.FilePropertyBag = webidl.dictionaryConverter([
 53839    {
 53840      key: 'lastModified',
 53841      converter: webidl.converters['long long'],
 53842      get defaultValue () {
 53843        return Date.now()
 53844      }
 53845    },
 53846    {
 53847      key: 'type',
 53848      converter: webidl.converters.DOMString,
 53849      defaultValue: ''
 53850    },
 53851    {
 53852      key: 'endings',
 53853      converter: (value) => {
 53854        value = webidl.converters.DOMString(value)
 53855        value = value.toLowerCase()
 53856  
 53857        if (value !== 'native') {
 53858          value = 'transparent'
 53859        }
 53860  
 53861        return value
 53862      },
 53863      defaultValue: 'transparent'
 53864    }
 53865  ])
 53866  
 53867  /**
 53868   * @see https://www.w3.org/TR/FileAPI/#process-blob-parts
 53869   * @param {(NodeJS.TypedArray|Blob|string)[]} parts
 53870   * @param {{ type: string, endings: string }} options
 53871   */
 53872  function processBlobParts (parts, options) {
 53873    // 1. Let bytes be an empty sequence of bytes.
 53874    /** @type {NodeJS.TypedArray[]} */
 53875    const bytes = []
 53876  
 53877    // 2. For each element in parts:
 53878    for (const element of parts) {
 53879      // 1. If element is a USVString, run the following substeps:
 53880      if (typeof element === 'string') {
 53881        // 1. Let s be element.
 53882        let s = element
 53883  
 53884        // 2. If the endings member of options is "native", set s
 53885        //    to the result of converting line endings to native
 53886        //    of element.
 53887        if (options.endings === 'native') {
 53888          s = convertLineEndingsNative(s)
 53889        }
 53890  
 53891        // 3. Append the result of UTF-8 encoding s to bytes.
 53892        bytes.push(encoder.encode(s))
 53893      } else if (
 53894        types.isAnyArrayBuffer(element) ||
 53895        types.isTypedArray(element)
 53896      ) {
 53897        // 2. If element is a BufferSource, get a copy of the
 53898        //    bytes held by the buffer source, and append those
 53899        //    bytes to bytes.
 53900        if (!element.buffer) { // ArrayBuffer
 53901          bytes.push(new Uint8Array(element))
 53902        } else {
 53903          bytes.push(
 53904            new Uint8Array(element.buffer, element.byteOffset, element.byteLength)
 53905          )
 53906        }
 53907      } else if (isBlobLike(element)) {
 53908        // 3. If element is a Blob, append the bytes it represents
 53909        //    to bytes.
 53910        bytes.push(element)
 53911      }
 53912    }
 53913  
 53914    // 3. Return bytes.
 53915    return bytes
 53916  }
 53917  
 53918  /**
 53919   * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native
 53920   * @param {string} s
 53921   */
 53922  function convertLineEndingsNative (s) {
 53923    // 1. Let native line ending be be the code point U+000A LF.
 53924    let nativeLineEnding = '\n'
 53925  
 53926    // 2. If the underlying platform’s conventions are to
 53927    //    represent newlines as a carriage return and line feed
 53928    //    sequence, set native line ending to the code point
 53929    //    U+000D CR followed by the code point U+000A LF.
 53930    if (process.platform === 'win32') {
 53931      nativeLineEnding = '\r\n'
 53932    }
 53933  
 53934    return s.replace(/\r?\n/g, nativeLineEnding)
 53935  }
 53936  
 53937  // If this function is moved to ./util.js, some tools (such as
 53938  // rollup) will warn about circular dependencies. See:
 53939  // https://github.com/nodejs/undici/issues/1629
 53940  function isFileLike (object) {
 53941    return (
 53942      (NativeFile && object instanceof NativeFile) ||
 53943      object instanceof File || (
 53944        object &&
 53945        (typeof object.stream === 'function' ||
 53946        typeof object.arrayBuffer === 'function') &&
 53947        object[Symbol.toStringTag] === 'File'
 53948      )
 53949    )
 53950  }
 53951  
 53952  module.exports = { File, FileLike, isFileLike }
 53953  
 53954  
 53955  /***/ }),
 53956  
 53957  /***/ 72015:
 53958  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 53959  
 53960  "use strict";
 53961  
 53962  
 53963  const { isBlobLike, toUSVString, makeIterator } = __nccwpck_require__(52538)
 53964  const { kState } = __nccwpck_require__(15861)
 53965  const { File: UndiciFile, FileLike, isFileLike } = __nccwpck_require__(78511)
 53966  const { webidl } = __nccwpck_require__(21744)
 53967  const { Blob, File: NativeFile } = __nccwpck_require__(14300)
 53968  
 53969  /** @type {globalThis['File']} */
 53970  const File = NativeFile ?? UndiciFile
 53971  
 53972  // https://xhr.spec.whatwg.org/#formdata
 53973  class FormData {
 53974    constructor (form) {
 53975      if (form !== undefined) {
 53976        throw webidl.errors.conversionFailed({
 53977          prefix: 'FormData constructor',
 53978          argument: 'Argument 1',
 53979          types: ['undefined']
 53980        })
 53981      }
 53982  
 53983      this[kState] = []
 53984    }
 53985  
 53986    append (name, value, filename = undefined) {
 53987      webidl.brandCheck(this, FormData)
 53988  
 53989      webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' })
 53990  
 53991      if (arguments.length === 3 && !isBlobLike(value)) {
 53992        throw new TypeError(
 53993          "Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'"
 53994        )
 53995      }
 53996  
 53997      // 1. Let value be value if given; otherwise blobValue.
 53998  
 53999      name = webidl.converters.USVString(name)
 54000      value = isBlobLike(value)
 54001        ? webidl.converters.Blob(value, { strict: false })
 54002        : webidl.converters.USVString(value)
 54003      filename = arguments.length === 3
 54004        ? webidl.converters.USVString(filename)
 54005        : undefined
 54006  
 54007      // 2. Let entry be the result of creating an entry with
 54008      // name, value, and filename if given.
 54009      const entry = makeEntry(name, value, filename)
 54010  
 54011      // 3. Append entry to this’s entry list.
 54012      this[kState].push(entry)
 54013    }
 54014  
 54015    delete (name) {
 54016      webidl.brandCheck(this, FormData)
 54017  
 54018      webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' })
 54019  
 54020      name = webidl.converters.USVString(name)
 54021  
 54022      // The delete(name) method steps are to remove all entries whose name
 54023      // is name from this’s entry list.
 54024      this[kState] = this[kState].filter(entry => entry.name !== name)
 54025    }
 54026  
 54027    get (name) {
 54028      webidl.brandCheck(this, FormData)
 54029  
 54030      webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' })
 54031  
 54032      name = webidl.converters.USVString(name)
 54033  
 54034      // 1. If there is no entry whose name is name in this’s entry list,
 54035      // then return null.
 54036      const idx = this[kState].findIndex((entry) => entry.name === name)
 54037      if (idx === -1) {
 54038        return null
 54039      }
 54040  
 54041      // 2. Return the value of the first entry whose name is name from
 54042      // this’s entry list.
 54043      return this[kState][idx].value
 54044    }
 54045  
 54046    getAll (name) {
 54047      webidl.brandCheck(this, FormData)
 54048  
 54049      webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' })
 54050  
 54051      name = webidl.converters.USVString(name)
 54052  
 54053      // 1. If there is no entry whose name is name in this’s entry list,
 54054      // then return the empty list.
 54055      // 2. Return the values of all entries whose name is name, in order,
 54056      // from this’s entry list.
 54057      return this[kState]
 54058        .filter((entry) => entry.name === name)
 54059        .map((entry) => entry.value)
 54060    }
 54061  
 54062    has (name) {
 54063      webidl.brandCheck(this, FormData)
 54064  
 54065      webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' })
 54066  
 54067      name = webidl.converters.USVString(name)
 54068  
 54069      // The has(name) method steps are to return true if there is an entry
 54070      // whose name is name in this’s entry list; otherwise false.
 54071      return this[kState].findIndex((entry) => entry.name === name) !== -1
 54072    }
 54073  
 54074    set (name, value, filename = undefined) {
 54075      webidl.brandCheck(this, FormData)
 54076  
 54077      webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' })
 54078  
 54079      if (arguments.length === 3 && !isBlobLike(value)) {
 54080        throw new TypeError(
 54081          "Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'"
 54082        )
 54083      }
 54084  
 54085      // The set(name, value) and set(name, blobValue, filename) method steps
 54086      // are:
 54087  
 54088      // 1. Let value be value if given; otherwise blobValue.
 54089  
 54090      name = webidl.converters.USVString(name)
 54091      value = isBlobLike(value)
 54092        ? webidl.converters.Blob(value, { strict: false })
 54093        : webidl.converters.USVString(value)
 54094      filename = arguments.length === 3
 54095        ? toUSVString(filename)
 54096        : undefined
 54097  
 54098      // 2. Let entry be the result of creating an entry with name, value, and
 54099      // filename if given.
 54100      const entry = makeEntry(name, value, filename)
 54101  
 54102      // 3. If there are entries in this’s entry list whose name is name, then
 54103      // replace the first such entry with entry and remove the others.
 54104      const idx = this[kState].findIndex((entry) => entry.name === name)
 54105      if (idx !== -1) {
 54106        this[kState] = [
 54107          ...this[kState].slice(0, idx),
 54108          entry,
 54109          ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name)
 54110        ]
 54111      } else {
 54112        // 4. Otherwise, append entry to this’s entry list.
 54113        this[kState].push(entry)
 54114      }
 54115    }
 54116  
 54117    entries () {
 54118      webidl.brandCheck(this, FormData)
 54119  
 54120      return makeIterator(
 54121        () => this[kState].map(pair => [pair.name, pair.value]),
 54122        'FormData',
 54123        'key+value'
 54124      )
 54125    }
 54126  
 54127    keys () {
 54128      webidl.brandCheck(this, FormData)
 54129  
 54130      return makeIterator(
 54131        () => this[kState].map(pair => [pair.name, pair.value]),
 54132        'FormData',
 54133        'key'
 54134      )
 54135    }
 54136  
 54137    values () {
 54138      webidl.brandCheck(this, FormData)
 54139  
 54140      return makeIterator(
 54141        () => this[kState].map(pair => [pair.name, pair.value]),
 54142        'FormData',
 54143        'value'
 54144      )
 54145    }
 54146  
 54147    /**
 54148     * @param {(value: string, key: string, self: FormData) => void} callbackFn
 54149     * @param {unknown} thisArg
 54150     */
 54151    forEach (callbackFn, thisArg = globalThis) {
 54152      webidl.brandCheck(this, FormData)
 54153  
 54154      webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' })
 54155  
 54156      if (typeof callbackFn !== 'function') {
 54157        throw new TypeError(
 54158          "Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'."
 54159        )
 54160      }
 54161  
 54162      for (const [key, value] of this) {
 54163        callbackFn.apply(thisArg, [value, key, this])
 54164      }
 54165    }
 54166  }
 54167  
 54168  FormData.prototype[Symbol.iterator] = FormData.prototype.entries
 54169  
 54170  Object.defineProperties(FormData.prototype, {
 54171    [Symbol.toStringTag]: {
 54172      value: 'FormData',
 54173      configurable: true
 54174    }
 54175  })
 54176  
 54177  /**
 54178   * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry
 54179   * @param {string} name
 54180   * @param {string|Blob} value
 54181   * @param {?string} filename
 54182   * @returns
 54183   */
 54184  function makeEntry (name, value, filename) {
 54185    // 1. Set name to the result of converting name into a scalar value string.
 54186    // "To convert a string into a scalar value string, replace any surrogates
 54187    //  with U+FFFD."
 54188    // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end
 54189    name = Buffer.from(name).toString('utf8')
 54190  
 54191    // 2. If value is a string, then set value to the result of converting
 54192    //    value into a scalar value string.
 54193    if (typeof value === 'string') {
 54194      value = Buffer.from(value).toString('utf8')
 54195    } else {
 54196      // 3. Otherwise:
 54197  
 54198      // 1. If value is not a File object, then set value to a new File object,
 54199      //    representing the same bytes, whose name attribute value is "blob"
 54200      if (!isFileLike(value)) {
 54201        value = value instanceof Blob
 54202          ? new File([value], 'blob', { type: value.type })
 54203          : new FileLike(value, 'blob', { type: value.type })
 54204      }
 54205  
 54206      // 2. If filename is given, then set value to a new File object,
 54207      //    representing the same bytes, whose name attribute is filename.
 54208      if (filename !== undefined) {
 54209        /** @type {FilePropertyBag} */
 54210        const options = {
 54211          type: value.type,
 54212          lastModified: value.lastModified
 54213        }
 54214  
 54215        value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile
 54216          ? new File([value], filename, options)
 54217          : new FileLike(value, filename, options)
 54218      }
 54219    }
 54220  
 54221    // 4. Return an entry whose name is name and whose value is value.
 54222    return { name, value }
 54223  }
 54224  
 54225  module.exports = { FormData }
 54226  
 54227  
 54228  /***/ }),
 54229  
 54230  /***/ 71246:
 54231  /***/ ((module) => {
 54232  
 54233  "use strict";
 54234  
 54235  
 54236  // In case of breaking changes, increase the version
 54237  // number to avoid conflicts.
 54238  const globalOrigin = Symbol.for('undici.globalOrigin.1')
 54239  
 54240  function getGlobalOrigin () {
 54241    return globalThis[globalOrigin]
 54242  }
 54243  
 54244  function setGlobalOrigin (newOrigin) {
 54245    if (newOrigin === undefined) {
 54246      Object.defineProperty(globalThis, globalOrigin, {
 54247        value: undefined,
 54248        writable: true,
 54249        enumerable: false,
 54250        configurable: false
 54251      })
 54252  
 54253      return
 54254    }
 54255  
 54256    const parsedURL = new URL(newOrigin)
 54257  
 54258    if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {
 54259      throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`)
 54260    }
 54261  
 54262    Object.defineProperty(globalThis, globalOrigin, {
 54263      value: parsedURL,
 54264      writable: true,
 54265      enumerable: false,
 54266      configurable: false
 54267    })
 54268  }
 54269  
 54270  module.exports = {
 54271    getGlobalOrigin,
 54272    setGlobalOrigin
 54273  }
 54274  
 54275  
 54276  /***/ }),
 54277  
 54278  /***/ 10554:
 54279  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 54280  
 54281  "use strict";
 54282  // https://github.com/Ethan-Arrowood/undici-fetch
 54283  
 54284  
 54285  
 54286  const { kHeadersList, kConstruct } = __nccwpck_require__(72785)
 54287  const { kGuard } = __nccwpck_require__(15861)
 54288  const { kEnumerableProperty } = __nccwpck_require__(83983)
 54289  const {
 54290    makeIterator,
 54291    isValidHeaderName,
 54292    isValidHeaderValue
 54293  } = __nccwpck_require__(52538)
 54294  const { webidl } = __nccwpck_require__(21744)
 54295  const assert = __nccwpck_require__(39491)
 54296  
 54297  const kHeadersMap = Symbol('headers map')
 54298  const kHeadersSortedMap = Symbol('headers map sorted')
 54299  
 54300  /**
 54301   * @param {number} code
 54302   */
 54303  function isHTTPWhiteSpaceCharCode (code) {
 54304    return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020
 54305  }
 54306  
 54307  /**
 54308   * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize
 54309   * @param {string} potentialValue
 54310   */
 54311  function headerValueNormalize (potentialValue) {
 54312    //  To normalize a byte sequence potentialValue, remove
 54313    //  any leading and trailing HTTP whitespace bytes from
 54314    //  potentialValue.
 54315    let i = 0; let j = potentialValue.length
 54316  
 54317    while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j
 54318    while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i
 54319  
 54320    return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)
 54321  }
 54322  
 54323  function fill (headers, object) {
 54324    // To fill a Headers object headers with a given object object, run these steps:
 54325  
 54326    // 1. If object is a sequence, then for each header in object:
 54327    // Note: webidl conversion to array has already been done.
 54328    if (Array.isArray(object)) {
 54329      for (let i = 0; i < object.length; ++i) {
 54330        const header = object[i]
 54331        // 1. If header does not contain exactly two items, then throw a TypeError.
 54332        if (header.length !== 2) {
 54333          throw webidl.errors.exception({
 54334            header: 'Headers constructor',
 54335            message: `expected name/value pair to be length 2, found ${header.length}.`
 54336          })
 54337        }
 54338  
 54339        // 2. Append (header’s first item, header’s second item) to headers.
 54340        appendHeader(headers, header[0], header[1])
 54341      }
 54342    } else if (typeof object === 'object' && object !== null) {
 54343      // Note: null should throw
 54344  
 54345      // 2. Otherwise, object is a record, then for each key → value in object,
 54346      //    append (key, value) to headers
 54347      const keys = Object.keys(object)
 54348      for (let i = 0; i < keys.length; ++i) {
 54349        appendHeader(headers, keys[i], object[keys[i]])
 54350      }
 54351    } else {
 54352      throw webidl.errors.conversionFailed({
 54353        prefix: 'Headers constructor',
 54354        argument: 'Argument 1',
 54355        types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>']
 54356      })
 54357    }
 54358  }
 54359  
 54360  /**
 54361   * @see https://fetch.spec.whatwg.org/#concept-headers-append
 54362   */
 54363  function appendHeader (headers, name, value) {
 54364    // 1. Normalize value.
 54365    value = headerValueNormalize(value)
 54366  
 54367    // 2. If name is not a header name or value is not a
 54368    //    header value, then throw a TypeError.
 54369    if (!isValidHeaderName(name)) {
 54370      throw webidl.errors.invalidArgument({
 54371        prefix: 'Headers.append',
 54372        value: name,
 54373        type: 'header name'
 54374      })
 54375    } else if (!isValidHeaderValue(value)) {
 54376      throw webidl.errors.invalidArgument({
 54377        prefix: 'Headers.append',
 54378        value,
 54379        type: 'header value'
 54380      })
 54381    }
 54382  
 54383    // 3. If headers’s guard is "immutable", then throw a TypeError.
 54384    // 4. Otherwise, if headers’s guard is "request" and name is a
 54385    //    forbidden header name, return.
 54386    // Note: undici does not implement forbidden header names
 54387    if (headers[kGuard] === 'immutable') {
 54388      throw new TypeError('immutable')
 54389    } else if (headers[kGuard] === 'request-no-cors') {
 54390      // 5. Otherwise, if headers’s guard is "request-no-cors":
 54391      // TODO
 54392    }
 54393  
 54394    // 6. Otherwise, if headers’s guard is "response" and name is a
 54395    //    forbidden response-header name, return.
 54396  
 54397    // 7. Append (name, value) to headers’s header list.
 54398    return headers[kHeadersList].append(name, value)
 54399  
 54400    // 8. If headers’s guard is "request-no-cors", then remove
 54401    //    privileged no-CORS request headers from headers
 54402  }
 54403  
 54404  class HeadersList {
 54405    /** @type {[string, string][]|null} */
 54406    cookies = null
 54407  
 54408    constructor (init) {
 54409      if (init instanceof HeadersList) {
 54410        this[kHeadersMap] = new Map(init[kHeadersMap])
 54411        this[kHeadersSortedMap] = init[kHeadersSortedMap]
 54412        this.cookies = init.cookies === null ? null : [...init.cookies]
 54413      } else {
 54414        this[kHeadersMap] = new Map(init)
 54415        this[kHeadersSortedMap] = null
 54416      }
 54417    }
 54418  
 54419    // https://fetch.spec.whatwg.org/#header-list-contains
 54420    contains (name) {
 54421      // A header list list contains a header name name if list
 54422      // contains a header whose name is a byte-case-insensitive
 54423      // match for name.
 54424      name = name.toLowerCase()
 54425  
 54426      return this[kHeadersMap].has(name)
 54427    }
 54428  
 54429    clear () {
 54430      this[kHeadersMap].clear()
 54431      this[kHeadersSortedMap] = null
 54432      this.cookies = null
 54433    }
 54434  
 54435    // https://fetch.spec.whatwg.org/#concept-header-list-append
 54436    append (name, value) {
 54437      this[kHeadersSortedMap] = null
 54438  
 54439      // 1. If list contains name, then set name to the first such
 54440      //    header’s name.
 54441      const lowercaseName = name.toLowerCase()
 54442      const exists = this[kHeadersMap].get(lowercaseName)
 54443  
 54444      // 2. Append (name, value) to list.
 54445      if (exists) {
 54446        const delimiter = lowercaseName === 'cookie' ? '; ' : ', '
 54447        this[kHeadersMap].set(lowercaseName, {
 54448          name: exists.name,
 54449          value: `${exists.value}${delimiter}${value}`
 54450        })
 54451      } else {
 54452        this[kHeadersMap].set(lowercaseName, { name, value })
 54453      }
 54454  
 54455      if (lowercaseName === 'set-cookie') {
 54456        this.cookies ??= []
 54457        this.cookies.push(value)
 54458      }
 54459    }
 54460  
 54461    // https://fetch.spec.whatwg.org/#concept-header-list-set
 54462    set (name, value) {
 54463      this[kHeadersSortedMap] = null
 54464      const lowercaseName = name.toLowerCase()
 54465  
 54466      if (lowercaseName === 'set-cookie') {
 54467        this.cookies = [value]
 54468      }
 54469  
 54470      // 1. If list contains name, then set the value of
 54471      //    the first such header to value and remove the
 54472      //    others.
 54473      // 2. Otherwise, append header (name, value) to list.
 54474      this[kHeadersMap].set(lowercaseName, { name, value })
 54475    }
 54476  
 54477    // https://fetch.spec.whatwg.org/#concept-header-list-delete
 54478    delete (name) {
 54479      this[kHeadersSortedMap] = null
 54480  
 54481      name = name.toLowerCase()
 54482  
 54483      if (name === 'set-cookie') {
 54484        this.cookies = null
 54485      }
 54486  
 54487      this[kHeadersMap].delete(name)
 54488    }
 54489  
 54490    // https://fetch.spec.whatwg.org/#concept-header-list-get
 54491    get (name) {
 54492      const value = this[kHeadersMap].get(name.toLowerCase())
 54493  
 54494      // 1. If list does not contain name, then return null.
 54495      // 2. Return the values of all headers in list whose name
 54496      //    is a byte-case-insensitive match for name,
 54497      //    separated from each other by 0x2C 0x20, in order.
 54498      return value === undefined ? null : value.value
 54499    }
 54500  
 54501    * [Symbol.iterator] () {
 54502      // use the lowercased name
 54503      for (const [name, { value }] of this[kHeadersMap]) {
 54504        yield [name, value]
 54505      }
 54506    }
 54507  
 54508    get entries () {
 54509      const headers = {}
 54510  
 54511      if (this[kHeadersMap].size) {
 54512        for (const { name, value } of this[kHeadersMap].values()) {
 54513          headers[name] = value
 54514        }
 54515      }
 54516  
 54517      return headers
 54518    }
 54519  }
 54520  
 54521  // https://fetch.spec.whatwg.org/#headers-class
 54522  class Headers {
 54523    constructor (init = undefined) {
 54524      if (init === kConstruct) {
 54525        return
 54526      }
 54527      this[kHeadersList] = new HeadersList()
 54528  
 54529      // The new Headers(init) constructor steps are:
 54530  
 54531      // 1. Set this’s guard to "none".
 54532      this[kGuard] = 'none'
 54533  
 54534      // 2. If init is given, then fill this with init.
 54535      if (init !== undefined) {
 54536        init = webidl.converters.HeadersInit(init)
 54537        fill(this, init)
 54538      }
 54539    }
 54540  
 54541    // https://fetch.spec.whatwg.org/#dom-headers-append
 54542    append (name, value) {
 54543      webidl.brandCheck(this, Headers)
 54544  
 54545      webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' })
 54546  
 54547      name = webidl.converters.ByteString(name)
 54548      value = webidl.converters.ByteString(value)
 54549  
 54550      return appendHeader(this, name, value)
 54551    }
 54552  
 54553    // https://fetch.spec.whatwg.org/#dom-headers-delete
 54554    delete (name) {
 54555      webidl.brandCheck(this, Headers)
 54556  
 54557      webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' })
 54558  
 54559      name = webidl.converters.ByteString(name)
 54560  
 54561      // 1. If name is not a header name, then throw a TypeError.
 54562      if (!isValidHeaderName(name)) {
 54563        throw webidl.errors.invalidArgument({
 54564          prefix: 'Headers.delete',
 54565          value: name,
 54566          type: 'header name'
 54567        })
 54568      }
 54569  
 54570      // 2. If this’s guard is "immutable", then throw a TypeError.
 54571      // 3. Otherwise, if this’s guard is "request" and name is a
 54572      //    forbidden header name, return.
 54573      // 4. Otherwise, if this’s guard is "request-no-cors", name
 54574      //    is not a no-CORS-safelisted request-header name, and
 54575      //    name is not a privileged no-CORS request-header name,
 54576      //    return.
 54577      // 5. Otherwise, if this’s guard is "response" and name is
 54578      //    a forbidden response-header name, return.
 54579      // Note: undici does not implement forbidden header names
 54580      if (this[kGuard] === 'immutable') {
 54581        throw new TypeError('immutable')
 54582      } else if (this[kGuard] === 'request-no-cors') {
 54583        // TODO
 54584      }
 54585  
 54586      // 6. If this’s header list does not contain name, then
 54587      //    return.
 54588      if (!this[kHeadersList].contains(name)) {
 54589        return
 54590      }
 54591  
 54592      // 7. Delete name from this’s header list.
 54593      // 8. If this’s guard is "request-no-cors", then remove
 54594      //    privileged no-CORS request headers from this.
 54595      this[kHeadersList].delete(name)
 54596    }
 54597  
 54598    // https://fetch.spec.whatwg.org/#dom-headers-get
 54599    get (name) {
 54600      webidl.brandCheck(this, Headers)
 54601  
 54602      webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' })
 54603  
 54604      name = webidl.converters.ByteString(name)
 54605  
 54606      // 1. If name is not a header name, then throw a TypeError.
 54607      if (!isValidHeaderName(name)) {
 54608        throw webidl.errors.invalidArgument({
 54609          prefix: 'Headers.get',
 54610          value: name,
 54611          type: 'header name'
 54612        })
 54613      }
 54614  
 54615      // 2. Return the result of getting name from this’s header
 54616      //    list.
 54617      return this[kHeadersList].get(name)
 54618    }
 54619  
 54620    // https://fetch.spec.whatwg.org/#dom-headers-has
 54621    has (name) {
 54622      webidl.brandCheck(this, Headers)
 54623  
 54624      webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' })
 54625  
 54626      name = webidl.converters.ByteString(name)
 54627  
 54628      // 1. If name is not a header name, then throw a TypeError.
 54629      if (!isValidHeaderName(name)) {
 54630        throw webidl.errors.invalidArgument({
 54631          prefix: 'Headers.has',
 54632          value: name,
 54633          type: 'header name'
 54634        })
 54635      }
 54636  
 54637      // 2. Return true if this’s header list contains name;
 54638      //    otherwise false.
 54639      return this[kHeadersList].contains(name)
 54640    }
 54641  
 54642    // https://fetch.spec.whatwg.org/#dom-headers-set
 54643    set (name, value) {
 54644      webidl.brandCheck(this, Headers)
 54645  
 54646      webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' })
 54647  
 54648      name = webidl.converters.ByteString(name)
 54649      value = webidl.converters.ByteString(value)
 54650  
 54651      // 1. Normalize value.
 54652      value = headerValueNormalize(value)
 54653  
 54654      // 2. If name is not a header name or value is not a
 54655      //    header value, then throw a TypeError.
 54656      if (!isValidHeaderName(name)) {
 54657        throw webidl.errors.invalidArgument({
 54658          prefix: 'Headers.set',
 54659          value: name,
 54660          type: 'header name'
 54661        })
 54662      } else if (!isValidHeaderValue(value)) {
 54663        throw webidl.errors.invalidArgument({
 54664          prefix: 'Headers.set',
 54665          value,
 54666          type: 'header value'
 54667        })
 54668      }
 54669  
 54670      // 3. If this’s guard is "immutable", then throw a TypeError.
 54671      // 4. Otherwise, if this’s guard is "request" and name is a
 54672      //    forbidden header name, return.
 54673      // 5. Otherwise, if this’s guard is "request-no-cors" and
 54674      //    name/value is not a no-CORS-safelisted request-header,
 54675      //    return.
 54676      // 6. Otherwise, if this’s guard is "response" and name is a
 54677      //    forbidden response-header name, return.
 54678      // Note: undici does not implement forbidden header names
 54679      if (this[kGuard] === 'immutable') {
 54680        throw new TypeError('immutable')
 54681      } else if (this[kGuard] === 'request-no-cors') {
 54682        // TODO
 54683      }
 54684  
 54685      // 7. Set (name, value) in this’s header list.
 54686      // 8. If this’s guard is "request-no-cors", then remove
 54687      //    privileged no-CORS request headers from this
 54688      this[kHeadersList].set(name, value)
 54689    }
 54690  
 54691    // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie
 54692    getSetCookie () {
 54693      webidl.brandCheck(this, Headers)
 54694  
 54695      // 1. If this’s header list does not contain `Set-Cookie`, then return « ».
 54696      // 2. Return the values of all headers in this’s header list whose name is
 54697      //    a byte-case-insensitive match for `Set-Cookie`, in order.
 54698  
 54699      const list = this[kHeadersList].cookies
 54700  
 54701      if (list) {
 54702        return [...list]
 54703      }
 54704  
 54705      return []
 54706    }
 54707  
 54708    // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine
 54709    get [kHeadersSortedMap] () {
 54710      if (this[kHeadersList][kHeadersSortedMap]) {
 54711        return this[kHeadersList][kHeadersSortedMap]
 54712      }
 54713  
 54714      // 1. Let headers be an empty list of headers with the key being the name
 54715      //    and value the value.
 54716      const headers = []
 54717  
 54718      // 2. Let names be the result of convert header names to a sorted-lowercase
 54719      //    set with all the names of the headers in list.
 54720      const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1)
 54721      const cookies = this[kHeadersList].cookies
 54722  
 54723      // 3. For each name of names:
 54724      for (let i = 0; i < names.length; ++i) {
 54725        const [name, value] = names[i]
 54726        // 1. If name is `set-cookie`, then:
 54727        if (name === 'set-cookie') {
 54728          // 1. Let values be a list of all values of headers in list whose name
 54729          //    is a byte-case-insensitive match for name, in order.
 54730  
 54731          // 2. For each value of values:
 54732          // 1. Append (name, value) to headers.
 54733          for (let j = 0; j < cookies.length; ++j) {
 54734            headers.push([name, cookies[j]])
 54735          }
 54736        } else {
 54737          // 2. Otherwise:
 54738  
 54739          // 1. Let value be the result of getting name from list.
 54740  
 54741          // 2. Assert: value is non-null.
 54742          assert(value !== null)
 54743  
 54744          // 3. Append (name, value) to headers.
 54745          headers.push([name, value])
 54746        }
 54747      }
 54748  
 54749      this[kHeadersList][kHeadersSortedMap] = headers
 54750  
 54751      // 4. Return headers.
 54752      return headers
 54753    }
 54754  
 54755    keys () {
 54756      webidl.brandCheck(this, Headers)
 54757  
 54758      if (this[kGuard] === 'immutable') {
 54759        const value = this[kHeadersSortedMap]
 54760        return makeIterator(() => value, 'Headers',
 54761          'key')
 54762      }
 54763  
 54764      return makeIterator(
 54765        () => [...this[kHeadersSortedMap].values()],
 54766        'Headers',
 54767        'key'
 54768      )
 54769    }
 54770  
 54771    values () {
 54772      webidl.brandCheck(this, Headers)
 54773  
 54774      if (this[kGuard] === 'immutable') {
 54775        const value = this[kHeadersSortedMap]
 54776        return makeIterator(() => value, 'Headers',
 54777          'value')
 54778      }
 54779  
 54780      return makeIterator(
 54781        () => [...this[kHeadersSortedMap].values()],
 54782        'Headers',
 54783        'value'
 54784      )
 54785    }
 54786  
 54787    entries () {
 54788      webidl.brandCheck(this, Headers)
 54789  
 54790      if (this[kGuard] === 'immutable') {
 54791        const value = this[kHeadersSortedMap]
 54792        return makeIterator(() => value, 'Headers',
 54793          'key+value')
 54794      }
 54795  
 54796      return makeIterator(
 54797        () => [...this[kHeadersSortedMap].values()],
 54798        'Headers',
 54799        'key+value'
 54800      )
 54801    }
 54802  
 54803    /**
 54804     * @param {(value: string, key: string, self: Headers) => void} callbackFn
 54805     * @param {unknown} thisArg
 54806     */
 54807    forEach (callbackFn, thisArg = globalThis) {
 54808      webidl.brandCheck(this, Headers)
 54809  
 54810      webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' })
 54811  
 54812      if (typeof callbackFn !== 'function') {
 54813        throw new TypeError(
 54814          "Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'."
 54815        )
 54816      }
 54817  
 54818      for (const [key, value] of this) {
 54819        callbackFn.apply(thisArg, [value, key, this])
 54820      }
 54821    }
 54822  
 54823    [Symbol.for('nodejs.util.inspect.custom')] () {
 54824      webidl.brandCheck(this, Headers)
 54825  
 54826      return this[kHeadersList]
 54827    }
 54828  }
 54829  
 54830  Headers.prototype[Symbol.iterator] = Headers.prototype.entries
 54831  
 54832  Object.defineProperties(Headers.prototype, {
 54833    append: kEnumerableProperty,
 54834    delete: kEnumerableProperty,
 54835    get: kEnumerableProperty,
 54836    has: kEnumerableProperty,
 54837    set: kEnumerableProperty,
 54838    getSetCookie: kEnumerableProperty,
 54839    keys: kEnumerableProperty,
 54840    values: kEnumerableProperty,
 54841    entries: kEnumerableProperty,
 54842    forEach: kEnumerableProperty,
 54843    [Symbol.iterator]: { enumerable: false },
 54844    [Symbol.toStringTag]: {
 54845      value: 'Headers',
 54846      configurable: true
 54847    }
 54848  })
 54849  
 54850  webidl.converters.HeadersInit = function (V) {
 54851    if (webidl.util.Type(V) === 'Object') {
 54852      if (V[Symbol.iterator]) {
 54853        return webidl.converters['sequence<sequence<ByteString>>'](V)
 54854      }
 54855  
 54856      return webidl.converters['record<ByteString, ByteString>'](V)
 54857    }
 54858  
 54859    throw webidl.errors.conversionFailed({
 54860      prefix: 'Headers constructor',
 54861      argument: 'Argument 1',
 54862      types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>']
 54863    })
 54864  }
 54865  
 54866  module.exports = {
 54867    fill,
 54868    Headers,
 54869    HeadersList
 54870  }
 54871  
 54872  
 54873  /***/ }),
 54874  
 54875  /***/ 74881:
 54876  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 54877  
 54878  "use strict";
 54879  // https://github.com/Ethan-Arrowood/undici-fetch
 54880  
 54881  
 54882  
 54883  const {
 54884    Response,
 54885    makeNetworkError,
 54886    makeAppropriateNetworkError,
 54887    filterResponse,
 54888    makeResponse
 54889  } = __nccwpck_require__(27823)
 54890  const { Headers } = __nccwpck_require__(10554)
 54891  const { Request, makeRequest } = __nccwpck_require__(48359)
 54892  const zlib = __nccwpck_require__(59796)
 54893  const {
 54894    bytesMatch,
 54895    makePolicyContainer,
 54896    clonePolicyContainer,
 54897    requestBadPort,
 54898    TAOCheck,
 54899    appendRequestOriginHeader,
 54900    responseLocationURL,
 54901    requestCurrentURL,
 54902    setRequestReferrerPolicyOnRedirect,
 54903    tryUpgradeRequestToAPotentiallyTrustworthyURL,
 54904    createOpaqueTimingInfo,
 54905    appendFetchMetadata,
 54906    corsCheck,
 54907    crossOriginResourcePolicyCheck,
 54908    determineRequestsReferrer,
 54909    coarsenedSharedCurrentTime,
 54910    createDeferredPromise,
 54911    isBlobLike,
 54912    sameOrigin,
 54913    isCancelled,
 54914    isAborted,
 54915    isErrorLike,
 54916    fullyReadBody,
 54917    readableStreamClose,
 54918    isomorphicEncode,
 54919    urlIsLocal,
 54920    urlIsHttpHttpsScheme,
 54921    urlHasHttpsScheme
 54922  } = __nccwpck_require__(52538)
 54923  const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(15861)
 54924  const assert = __nccwpck_require__(39491)
 54925  const { safelyExtractBody } = __nccwpck_require__(41472)
 54926  const {
 54927    redirectStatusSet,
 54928    nullBodyStatus,
 54929    safeMethodsSet,
 54930    requestBodyHeader,
 54931    subresourceSet,
 54932    DOMException
 54933  } = __nccwpck_require__(41037)
 54934  const { kHeadersList } = __nccwpck_require__(72785)
 54935  const EE = __nccwpck_require__(82361)
 54936  const { Readable, pipeline } = __nccwpck_require__(12781)
 54937  const { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = __nccwpck_require__(83983)
 54938  const { dataURLProcessor, serializeAMimeType } = __nccwpck_require__(685)
 54939  const { TransformStream } = __nccwpck_require__(35356)
 54940  const { getGlobalDispatcher } = __nccwpck_require__(21892)
 54941  const { webidl } = __nccwpck_require__(21744)
 54942  const { STATUS_CODES } = __nccwpck_require__(13685)
 54943  const GET_OR_HEAD = ['GET', 'HEAD']
 54944  
 54945  /** @type {import('buffer').resolveObjectURL} */
 54946  let resolveObjectURL
 54947  let ReadableStream = globalThis.ReadableStream
 54948  
 54949  class Fetch extends EE {
 54950    constructor (dispatcher) {
 54951      super()
 54952  
 54953      this.dispatcher = dispatcher
 54954      this.connection = null
 54955      this.dump = false
 54956      this.state = 'ongoing'
 54957      // 2 terminated listeners get added per request,
 54958      // but only 1 gets removed. If there are 20 redirects,
 54959      // 21 listeners will be added.
 54960      // See https://github.com/nodejs/undici/issues/1711
 54961      // TODO (fix): Find and fix root cause for leaked listener.
 54962      this.setMaxListeners(21)
 54963    }
 54964  
 54965    terminate (reason) {
 54966      if (this.state !== 'ongoing') {
 54967        return
 54968      }
 54969  
 54970      this.state = 'terminated'
 54971      this.connection?.destroy(reason)
 54972      this.emit('terminated', reason)
 54973    }
 54974  
 54975    // https://fetch.spec.whatwg.org/#fetch-controller-abort
 54976    abort (error) {
 54977      if (this.state !== 'ongoing') {
 54978        return
 54979      }
 54980  
 54981      // 1. Set controller’s state to "aborted".
 54982      this.state = 'aborted'
 54983  
 54984      // 2. Let fallbackError be an "AbortError" DOMException.
 54985      // 3. Set error to fallbackError if it is not given.
 54986      if (!error) {
 54987        error = new DOMException('The operation was aborted.', 'AbortError')
 54988      }
 54989  
 54990      // 4. Let serializedError be StructuredSerialize(error).
 54991      //    If that threw an exception, catch it, and let
 54992      //    serializedError be StructuredSerialize(fallbackError).
 54993  
 54994      // 5. Set controller’s serialized abort reason to serializedError.
 54995      this.serializedAbortReason = error
 54996  
 54997      this.connection?.destroy(error)
 54998      this.emit('terminated', error)
 54999    }
 55000  }
 55001  
 55002  // https://fetch.spec.whatwg.org/#fetch-method
 55003  function fetch (input, init = {}) {
 55004    webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })
 55005  
 55006    // 1. Let p be a new promise.
 55007    const p = createDeferredPromise()
 55008  
 55009    // 2. Let requestObject be the result of invoking the initial value of
 55010    // Request as constructor with input and init as arguments. If this throws
 55011    // an exception, reject p with it and return p.
 55012    let requestObject
 55013  
 55014    try {
 55015      requestObject = new Request(input, init)
 55016    } catch (e) {
 55017      p.reject(e)
 55018      return p.promise
 55019    }
 55020  
 55021    // 3. Let request be requestObject’s request.
 55022    const request = requestObject[kState]
 55023  
 55024    // 4. If requestObject’s signal’s aborted flag is set, then:
 55025    if (requestObject.signal.aborted) {
 55026      // 1. Abort the fetch() call with p, request, null, and
 55027      //    requestObject’s signal’s abort reason.
 55028      abortFetch(p, request, null, requestObject.signal.reason)
 55029  
 55030      // 2. Return p.
 55031      return p.promise
 55032    }
 55033  
 55034    // 5. Let globalObject be request’s client’s global object.
 55035    const globalObject = request.client.globalObject
 55036  
 55037    // 6. If globalObject is a ServiceWorkerGlobalScope object, then set
 55038    // request’s service-workers mode to "none".
 55039    if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') {
 55040      request.serviceWorkers = 'none'
 55041    }
 55042  
 55043    // 7. Let responseObject be null.
 55044    let responseObject = null
 55045  
 55046    // 8. Let relevantRealm be this’s relevant Realm.
 55047    const relevantRealm = null
 55048  
 55049    // 9. Let locallyAborted be false.
 55050    let locallyAborted = false
 55051  
 55052    // 10. Let controller be null.
 55053    let controller = null
 55054  
 55055    // 11. Add the following abort steps to requestObject’s signal:
 55056    addAbortListener(
 55057      requestObject.signal,
 55058      () => {
 55059        // 1. Set locallyAborted to true.
 55060        locallyAborted = true
 55061  
 55062        // 2. Assert: controller is non-null.
 55063        assert(controller != null)
 55064  
 55065        // 3. Abort controller with requestObject’s signal’s abort reason.
 55066        controller.abort(requestObject.signal.reason)
 55067  
 55068        // 4. Abort the fetch() call with p, request, responseObject,
 55069        //    and requestObject’s signal’s abort reason.
 55070        abortFetch(p, request, responseObject, requestObject.signal.reason)
 55071      }
 55072    )
 55073  
 55074    // 12. Let handleFetchDone given response response be to finalize and
 55075    // report timing with response, globalObject, and "fetch".
 55076    const handleFetchDone = (response) =>
 55077      finalizeAndReportTiming(response, 'fetch')
 55078  
 55079    // 13. Set controller to the result of calling fetch given request,
 55080    // with processResponseEndOfBody set to handleFetchDone, and processResponse
 55081    // given response being these substeps:
 55082  
 55083    const processResponse = (response) => {
 55084      // 1. If locallyAborted is true, terminate these substeps.
 55085      if (locallyAborted) {
 55086        return Promise.resolve()
 55087      }
 55088  
 55089      // 2. If response’s aborted flag is set, then:
 55090      if (response.aborted) {
 55091        // 1. Let deserializedError be the result of deserialize a serialized
 55092        //    abort reason given controller’s serialized abort reason and
 55093        //    relevantRealm.
 55094  
 55095        // 2. Abort the fetch() call with p, request, responseObject, and
 55096        //    deserializedError.
 55097  
 55098        abortFetch(p, request, responseObject, controller.serializedAbortReason)
 55099        return Promise.resolve()
 55100      }
 55101  
 55102      // 3. If response is a network error, then reject p with a TypeError
 55103      // and terminate these substeps.
 55104      if (response.type === 'error') {
 55105        p.reject(
 55106          Object.assign(new TypeError('fetch failed'), { cause: response.error })
 55107        )
 55108        return Promise.resolve()
 55109      }
 55110  
 55111      // 4. Set responseObject to the result of creating a Response object,
 55112      // given response, "immutable", and relevantRealm.
 55113      responseObject = new Response()
 55114      responseObject[kState] = response
 55115      responseObject[kRealm] = relevantRealm
 55116      responseObject[kHeaders][kHeadersList] = response.headersList
 55117      responseObject[kHeaders][kGuard] = 'immutable'
 55118      responseObject[kHeaders][kRealm] = relevantRealm
 55119  
 55120      // 5. Resolve p with responseObject.
 55121      p.resolve(responseObject)
 55122    }
 55123  
 55124    controller = fetching({
 55125      request,
 55126      processResponseEndOfBody: handleFetchDone,
 55127      processResponse,
 55128      dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici
 55129    })
 55130  
 55131    // 14. Return p.
 55132    return p.promise
 55133  }
 55134  
 55135  // https://fetch.spec.whatwg.org/#finalize-and-report-timing
 55136  function finalizeAndReportTiming (response, initiatorType = 'other') {
 55137    // 1. If response is an aborted network error, then return.
 55138    if (response.type === 'error' && response.aborted) {
 55139      return
 55140    }
 55141  
 55142    // 2. If response’s URL list is null or empty, then return.
 55143    if (!response.urlList?.length) {
 55144      return
 55145    }
 55146  
 55147    // 3. Let originalURL be response’s URL list[0].
 55148    const originalURL = response.urlList[0]
 55149  
 55150    // 4. Let timingInfo be response’s timing info.
 55151    let timingInfo = response.timingInfo
 55152  
 55153    // 5. Let cacheState be response’s cache state.
 55154    let cacheState = response.cacheState
 55155  
 55156    // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return.
 55157    if (!urlIsHttpHttpsScheme(originalURL)) {
 55158      return
 55159    }
 55160  
 55161    // 7. If timingInfo is null, then return.
 55162    if (timingInfo === null) {
 55163      return
 55164    }
 55165  
 55166    // 8. If response’s timing allow passed flag is not set, then:
 55167    if (!response.timingAllowPassed) {
 55168      //  1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.
 55169      timingInfo = createOpaqueTimingInfo({
 55170        startTime: timingInfo.startTime
 55171      })
 55172  
 55173      //  2. Set cacheState to the empty string.
 55174      cacheState = ''
 55175    }
 55176  
 55177    // 9. Set timingInfo’s end time to the coarsened shared current time
 55178    // given global’s relevant settings object’s cross-origin isolated
 55179    // capability.
 55180    // TODO: given global’s relevant settings object’s cross-origin isolated
 55181    // capability?
 55182    timingInfo.endTime = coarsenedSharedCurrentTime()
 55183  
 55184    // 10. Set response’s timing info to timingInfo.
 55185    response.timingInfo = timingInfo
 55186  
 55187    // 11. Mark resource timing for timingInfo, originalURL, initiatorType,
 55188    // global, and cacheState.
 55189    markResourceTiming(
 55190      timingInfo,
 55191      originalURL,
 55192      initiatorType,
 55193      globalThis,
 55194      cacheState
 55195    )
 55196  }
 55197  
 55198  // https://w3c.github.io/resource-timing/#dfn-mark-resource-timing
 55199  function markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) {
 55200    if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) {
 55201      performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState)
 55202    }
 55203  }
 55204  
 55205  // https://fetch.spec.whatwg.org/#abort-fetch
 55206  function abortFetch (p, request, responseObject, error) {
 55207    // Note: AbortSignal.reason was added in node v17.2.0
 55208    // which would give us an undefined error to reject with.
 55209    // Remove this once node v16 is no longer supported.
 55210    if (!error) {
 55211      error = new DOMException('The operation was aborted.', 'AbortError')
 55212    }
 55213  
 55214    // 1. Reject promise with error.
 55215    p.reject(error)
 55216  
 55217    // 2. If request’s body is not null and is readable, then cancel request’s
 55218    // body with error.
 55219    if (request.body != null && isReadable(request.body?.stream)) {
 55220      request.body.stream.cancel(error).catch((err) => {
 55221        if (err.code === 'ERR_INVALID_STATE') {
 55222          // Node bug?
 55223          return
 55224        }
 55225        throw err
 55226      })
 55227    }
 55228  
 55229    // 3. If responseObject is null, then return.
 55230    if (responseObject == null) {
 55231      return
 55232    }
 55233  
 55234    // 4. Let response be responseObject’s response.
 55235    const response = responseObject[kState]
 55236  
 55237    // 5. If response’s body is not null and is readable, then error response’s
 55238    // body with error.
 55239    if (response.body != null && isReadable(response.body?.stream)) {
 55240      response.body.stream.cancel(error).catch((err) => {
 55241        if (err.code === 'ERR_INVALID_STATE') {
 55242          // Node bug?
 55243          return
 55244        }
 55245        throw err
 55246      })
 55247    }
 55248  }
 55249  
 55250  // https://fetch.spec.whatwg.org/#fetching
 55251  function fetching ({
 55252    request,
 55253    processRequestBodyChunkLength,
 55254    processRequestEndOfBody,
 55255    processResponse,
 55256    processResponseEndOfBody,
 55257    processResponseConsumeBody,
 55258    useParallelQueue = false,
 55259    dispatcher // undici
 55260  }) {
 55261    // 1. Let taskDestination be null.
 55262    let taskDestination = null
 55263  
 55264    // 2. Let crossOriginIsolatedCapability be false.
 55265    let crossOriginIsolatedCapability = false
 55266  
 55267    // 3. If request’s client is non-null, then:
 55268    if (request.client != null) {
 55269      // 1. Set taskDestination to request’s client’s global object.
 55270      taskDestination = request.client.globalObject
 55271  
 55272      // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin
 55273      // isolated capability.
 55274      crossOriginIsolatedCapability =
 55275        request.client.crossOriginIsolatedCapability
 55276    }
 55277  
 55278    // 4. If useParallelQueue is true, then set taskDestination to the result of
 55279    // starting a new parallel queue.
 55280    // TODO
 55281  
 55282    // 5. Let timingInfo be a new fetch timing info whose start time and
 55283    // post-redirect start time are the coarsened shared current time given
 55284    // crossOriginIsolatedCapability.
 55285    const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability)
 55286    const timingInfo = createOpaqueTimingInfo({
 55287      startTime: currenTime
 55288    })
 55289  
 55290    // 6. Let fetchParams be a new fetch params whose
 55291    // request is request,
 55292    // timing info is timingInfo,
 55293    // process request body chunk length is processRequestBodyChunkLength,
 55294    // process request end-of-body is processRequestEndOfBody,
 55295    // process response is processResponse,
 55296    // process response consume body is processResponseConsumeBody,
 55297    // process response end-of-body is processResponseEndOfBody,
 55298    // task destination is taskDestination,
 55299    // and cross-origin isolated capability is crossOriginIsolatedCapability.
 55300    const fetchParams = {
 55301      controller: new Fetch(dispatcher),
 55302      request,
 55303      timingInfo,
 55304      processRequestBodyChunkLength,
 55305      processRequestEndOfBody,
 55306      processResponse,
 55307      processResponseConsumeBody,
 55308      processResponseEndOfBody,
 55309      taskDestination,
 55310      crossOriginIsolatedCapability
 55311    }
 55312  
 55313    // 7. If request’s body is a byte sequence, then set request’s body to
 55314    //    request’s body as a body.
 55315    // NOTE: Since fetching is only called from fetch, body should already be
 55316    // extracted.
 55317    assert(!request.body || request.body.stream)
 55318  
 55319    // 8. If request’s window is "client", then set request’s window to request’s
 55320    // client, if request’s client’s global object is a Window object; otherwise
 55321    // "no-window".
 55322    if (request.window === 'client') {
 55323      // TODO: What if request.client is null?
 55324      request.window =
 55325        request.client?.globalObject?.constructor?.name === 'Window'
 55326          ? request.client
 55327          : 'no-window'
 55328    }
 55329  
 55330    // 9. If request’s origin is "client", then set request’s origin to request’s
 55331    // client’s origin.
 55332    if (request.origin === 'client') {
 55333      // TODO: What if request.client is null?
 55334      request.origin = request.client?.origin
 55335    }
 55336  
 55337    // 10. If all of the following conditions are true:
 55338    // TODO
 55339  
 55340    // 11. If request’s policy container is "client", then:
 55341    if (request.policyContainer === 'client') {
 55342      // 1. If request’s client is non-null, then set request’s policy
 55343      // container to a clone of request’s client’s policy container. [HTML]
 55344      if (request.client != null) {
 55345        request.policyContainer = clonePolicyContainer(
 55346          request.client.policyContainer
 55347        )
 55348      } else {
 55349        // 2. Otherwise, set request’s policy container to a new policy
 55350        // container.
 55351        request.policyContainer = makePolicyContainer()
 55352      }
 55353    }
 55354  
 55355    // 12. If request’s header list does not contain `Accept`, then:
 55356    if (!request.headersList.contains('accept')) {
 55357      // 1. Let value be `*/*`.
 55358      const value = '*/*'
 55359  
 55360      // 2. A user agent should set value to the first matching statement, if
 55361      // any, switching on request’s destination:
 55362      // "document"
 55363      // "frame"
 55364      // "iframe"
 55365      // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`
 55366      // "image"
 55367      // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5`
 55368      // "style"
 55369      // `text/css,*/*;q=0.1`
 55370      // TODO
 55371  
 55372      // 3. Append `Accept`/value to request’s header list.
 55373      request.headersList.append('accept', value)
 55374    }
 55375  
 55376    // 13. If request’s header list does not contain `Accept-Language`, then
 55377    // user agents should append `Accept-Language`/an appropriate value to
 55378    // request’s header list.
 55379    if (!request.headersList.contains('accept-language')) {
 55380      request.headersList.append('accept-language', '*')
 55381    }
 55382  
 55383    // 14. If request’s priority is null, then use request’s initiator and
 55384    // destination appropriately in setting request’s priority to a
 55385    // user-agent-defined object.
 55386    if (request.priority === null) {
 55387      // TODO
 55388    }
 55389  
 55390    // 15. If request is a subresource request, then:
 55391    if (subresourceSet.has(request.destination)) {
 55392      // TODO
 55393    }
 55394  
 55395    // 16. Run main fetch given fetchParams.
 55396    mainFetch(fetchParams)
 55397      .catch(err => {
 55398        fetchParams.controller.terminate(err)
 55399      })
 55400  
 55401    // 17. Return fetchParam's controller
 55402    return fetchParams.controller
 55403  }
 55404  
 55405  // https://fetch.spec.whatwg.org/#concept-main-fetch
 55406  async function mainFetch (fetchParams, recursive = false) {
 55407    // 1. Let request be fetchParams’s request.
 55408    const request = fetchParams.request
 55409  
 55410    // 2. Let response be null.
 55411    let response = null
 55412  
 55413    // 3. If request’s local-URLs-only flag is set and request’s current URL is
 55414    // not local, then set response to a network error.
 55415    if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {
 55416      response = makeNetworkError('local URLs only')
 55417    }
 55418  
 55419    // 4. Run report Content Security Policy violations for request.
 55420    // TODO
 55421  
 55422    // 5. Upgrade request to a potentially trustworthy URL, if appropriate.
 55423    tryUpgradeRequestToAPotentiallyTrustworthyURL(request)
 55424  
 55425    // 6. If should request be blocked due to a bad port, should fetching request
 55426    // be blocked as mixed content, or should request be blocked by Content
 55427    // Security Policy returns blocked, then set response to a network error.
 55428    if (requestBadPort(request) === 'blocked') {
 55429      response = makeNetworkError('bad port')
 55430    }
 55431    // TODO: should fetching request be blocked as mixed content?
 55432    // TODO: should request be blocked by Content Security Policy?
 55433  
 55434    // 7. If request’s referrer policy is the empty string, then set request’s
 55435    // referrer policy to request’s policy container’s referrer policy.
 55436    if (request.referrerPolicy === '') {
 55437      request.referrerPolicy = request.policyContainer.referrerPolicy
 55438    }
 55439  
 55440    // 8. If request’s referrer is not "no-referrer", then set request’s
 55441    // referrer to the result of invoking determine request’s referrer.
 55442    if (request.referrer !== 'no-referrer') {
 55443      request.referrer = determineRequestsReferrer(request)
 55444    }
 55445  
 55446    // 9. Set request’s current URL’s scheme to "https" if all of the following
 55447    // conditions are true:
 55448    // - request’s current URL’s scheme is "http"
 55449    // - request’s current URL’s host is a domain
 55450    // - Matching request’s current URL’s host per Known HSTS Host Domain Name
 55451    //   Matching results in either a superdomain match with an asserted
 55452    //   includeSubDomains directive or a congruent match (with or without an
 55453    //   asserted includeSubDomains directive). [HSTS]
 55454    // TODO
 55455  
 55456    // 10. If recursive is false, then run the remaining steps in parallel.
 55457    // TODO
 55458  
 55459    // 11. If response is null, then set response to the result of running
 55460    // the steps corresponding to the first matching statement:
 55461    if (response === null) {
 55462      response = await (async () => {
 55463        const currentURL = requestCurrentURL(request)
 55464  
 55465        if (
 55466          // - request’s current URL’s origin is same origin with request’s origin,
 55467          //   and request’s response tainting is "basic"
 55468          (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') ||
 55469          // request’s current URL’s scheme is "data"
 55470          (currentURL.protocol === 'data:') ||
 55471          // - request’s mode is "navigate" or "websocket"
 55472          (request.mode === 'navigate' || request.mode === 'websocket')
 55473        ) {
 55474          // 1. Set request’s response tainting to "basic".
 55475          request.responseTainting = 'basic'
 55476  
 55477          // 2. Return the result of running scheme fetch given fetchParams.
 55478          return await schemeFetch(fetchParams)
 55479        }
 55480  
 55481        // request’s mode is "same-origin"
 55482        if (request.mode === 'same-origin') {
 55483          // 1. Return a network error.
 55484          return makeNetworkError('request mode cannot be "same-origin"')
 55485        }
 55486  
 55487        // request’s mode is "no-cors"
 55488        if (request.mode === 'no-cors') {
 55489          // 1. If request’s redirect mode is not "follow", then return a network
 55490          // error.
 55491          if (request.redirect !== 'follow') {
 55492            return makeNetworkError(
 55493              'redirect mode cannot be "follow" for "no-cors" request'
 55494            )
 55495          }
 55496  
 55497          // 2. Set request’s response tainting to "opaque".
 55498          request.responseTainting = 'opaque'
 55499  
 55500          // 3. Return the result of running scheme fetch given fetchParams.
 55501          return await schemeFetch(fetchParams)
 55502        }
 55503  
 55504        // request’s current URL’s scheme is not an HTTP(S) scheme
 55505        if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {
 55506          // Return a network error.
 55507          return makeNetworkError('URL scheme must be a HTTP(S) scheme')
 55508        }
 55509  
 55510        // - request’s use-CORS-preflight flag is set
 55511        // - request’s unsafe-request flag is set and either request’s method is
 55512        //   not a CORS-safelisted method or CORS-unsafe request-header names with
 55513        //   request’s header list is not empty
 55514        //    1. Set request’s response tainting to "cors".
 55515        //    2. Let corsWithPreflightResponse be the result of running HTTP fetch
 55516        //    given fetchParams and true.
 55517        //    3. If corsWithPreflightResponse is a network error, then clear cache
 55518        //    entries using request.
 55519        //    4. Return corsWithPreflightResponse.
 55520        // TODO
 55521  
 55522        // Otherwise
 55523        //    1. Set request’s response tainting to "cors".
 55524        request.responseTainting = 'cors'
 55525  
 55526        //    2. Return the result of running HTTP fetch given fetchParams.
 55527        return await httpFetch(fetchParams)
 55528      })()
 55529    }
 55530  
 55531    // 12. If recursive is true, then return response.
 55532    if (recursive) {
 55533      return response
 55534    }
 55535  
 55536    // 13. If response is not a network error and response is not a filtered
 55537    // response, then:
 55538    if (response.status !== 0 && !response.internalResponse) {
 55539      // If request’s response tainting is "cors", then:
 55540      if (request.responseTainting === 'cors') {
 55541        // 1. Let headerNames be the result of extracting header list values
 55542        // given `Access-Control-Expose-Headers` and response’s header list.
 55543        // TODO
 55544        // 2. If request’s credentials mode is not "include" and headerNames
 55545        // contains `*`, then set response’s CORS-exposed header-name list to
 55546        // all unique header names in response’s header list.
 55547        // TODO
 55548        // 3. Otherwise, if headerNames is not null or failure, then set
 55549        // response’s CORS-exposed header-name list to headerNames.
 55550        // TODO
 55551      }
 55552  
 55553      // Set response to the following filtered response with response as its
 55554      // internal response, depending on request’s response tainting:
 55555      if (request.responseTainting === 'basic') {
 55556        response = filterResponse(response, 'basic')
 55557      } else if (request.responseTainting === 'cors') {
 55558        response = filterResponse(response, 'cors')
 55559      } else if (request.responseTainting === 'opaque') {
 55560        response = filterResponse(response, 'opaque')
 55561      } else {
 55562        assert(false)
 55563      }
 55564    }
 55565  
 55566    // 14. Let internalResponse be response, if response is a network error,
 55567    // and response’s internal response otherwise.
 55568    let internalResponse =
 55569      response.status === 0 ? response : response.internalResponse
 55570  
 55571    // 15. If internalResponse’s URL list is empty, then set it to a clone of
 55572    // request’s URL list.
 55573    if (internalResponse.urlList.length === 0) {
 55574      internalResponse.urlList.push(...request.urlList)
 55575    }
 55576  
 55577    // 16. If request’s timing allow failed flag is unset, then set
 55578    // internalResponse’s timing allow passed flag.
 55579    if (!request.timingAllowFailed) {
 55580      response.timingAllowPassed = true
 55581    }
 55582  
 55583    // 17. If response is not a network error and any of the following returns
 55584    // blocked
 55585    // - should internalResponse to request be blocked as mixed content
 55586    // - should internalResponse to request be blocked by Content Security Policy
 55587    // - should internalResponse to request be blocked due to its MIME type
 55588    // - should internalResponse to request be blocked due to nosniff
 55589    // TODO
 55590  
 55591    // 18. If response’s type is "opaque", internalResponse’s status is 206,
 55592    // internalResponse’s range-requested flag is set, and request’s header
 55593    // list does not contain `Range`, then set response and internalResponse
 55594    // to a network error.
 55595    if (
 55596      response.type === 'opaque' &&
 55597      internalResponse.status === 206 &&
 55598      internalResponse.rangeRequested &&
 55599      !request.headers.contains('range')
 55600    ) {
 55601      response = internalResponse = makeNetworkError()
 55602    }
 55603  
 55604    // 19. If response is not a network error and either request’s method is
 55605    // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status,
 55606    // set internalResponse’s body to null and disregard any enqueuing toward
 55607    // it (if any).
 55608    if (
 55609      response.status !== 0 &&
 55610      (request.method === 'HEAD' ||
 55611        request.method === 'CONNECT' ||
 55612        nullBodyStatus.includes(internalResponse.status))
 55613    ) {
 55614      internalResponse.body = null
 55615      fetchParams.controller.dump = true
 55616    }
 55617  
 55618    // 20. If request’s integrity metadata is not the empty string, then:
 55619    if (request.integrity) {
 55620      // 1. Let processBodyError be this step: run fetch finale given fetchParams
 55621      // and a network error.
 55622      const processBodyError = (reason) =>
 55623        fetchFinale(fetchParams, makeNetworkError(reason))
 55624  
 55625      // 2. If request’s response tainting is "opaque", or response’s body is null,
 55626      // then run processBodyError and abort these steps.
 55627      if (request.responseTainting === 'opaque' || response.body == null) {
 55628        processBodyError(response.error)
 55629        return
 55630      }
 55631  
 55632      // 3. Let processBody given bytes be these steps:
 55633      const processBody = (bytes) => {
 55634        // 1. If bytes do not match request’s integrity metadata,
 55635        // then run processBodyError and abort these steps. [SRI]
 55636        if (!bytesMatch(bytes, request.integrity)) {
 55637          processBodyError('integrity mismatch')
 55638          return
 55639        }
 55640  
 55641        // 2. Set response’s body to bytes as a body.
 55642        response.body = safelyExtractBody(bytes)[0]
 55643  
 55644        // 3. Run fetch finale given fetchParams and response.
 55645        fetchFinale(fetchParams, response)
 55646      }
 55647  
 55648      // 4. Fully read response’s body given processBody and processBodyError.
 55649      await fullyReadBody(response.body, processBody, processBodyError)
 55650    } else {
 55651      // 21. Otherwise, run fetch finale given fetchParams and response.
 55652      fetchFinale(fetchParams, response)
 55653    }
 55654  }
 55655  
 55656  // https://fetch.spec.whatwg.org/#concept-scheme-fetch
 55657  // given a fetch params fetchParams
 55658  function schemeFetch (fetchParams) {
 55659    // Note: since the connection is destroyed on redirect, which sets fetchParams to a
 55660    // cancelled state, we do not want this condition to trigger *unless* there have been
 55661    // no redirects. See https://github.com/nodejs/undici/issues/1776
 55662    // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.
 55663    if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {
 55664      return Promise.resolve(makeAppropriateNetworkError(fetchParams))
 55665    }
 55666  
 55667    // 2. Let request be fetchParams’s request.
 55668    const { request } = fetchParams
 55669  
 55670    const { protocol: scheme } = requestCurrentURL(request)
 55671  
 55672    // 3. Switch on request’s current URL’s scheme and run the associated steps:
 55673    switch (scheme) {
 55674      case 'about:': {
 55675        // If request’s current URL’s path is the string "blank", then return a new response
 55676        // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) »,
 55677        // and body is the empty byte sequence as a body.
 55678  
 55679        // Otherwise, return a network error.
 55680        return Promise.resolve(makeNetworkError('about scheme is not supported'))
 55681      }
 55682      case 'blob:': {
 55683        if (!resolveObjectURL) {
 55684          resolveObjectURL = (__nccwpck_require__(14300).resolveObjectURL)
 55685        }
 55686  
 55687        // 1. Let blobURLEntry be request’s current URL’s blob URL entry.
 55688        const blobURLEntry = requestCurrentURL(request)
 55689  
 55690        // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56
 55691        // Buffer.resolveObjectURL does not ignore URL queries.
 55692        if (blobURLEntry.search.length !== 0) {
 55693          return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))
 55694        }
 55695  
 55696        const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())
 55697  
 55698        // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s
 55699        //    object is not a Blob object, then return a network error.
 55700        if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {
 55701          return Promise.resolve(makeNetworkError('invalid method'))
 55702        }
 55703  
 55704        // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object.
 55705        const bodyWithType = safelyExtractBody(blobURLEntryObject)
 55706  
 55707        // 4. Let body be bodyWithType’s body.
 55708        const body = bodyWithType[0]
 55709  
 55710        // 5. Let length be body’s length, serialized and isomorphic encoded.
 55711        const length = isomorphicEncode(`${body.length}`)
 55712  
 55713        // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence.
 55714        const type = bodyWithType[1] ?? ''
 55715  
 55716        // 7. Return a new response whose status message is `OK`, header list is
 55717        //    « (`Content-Length`, length), (`Content-Type`, type) », and body is body.
 55718        const response = makeResponse({
 55719          statusText: 'OK',
 55720          headersList: [
 55721            ['content-length', { name: 'Content-Length', value: length }],
 55722            ['content-type', { name: 'Content-Type', value: type }]
 55723          ]
 55724        })
 55725  
 55726        response.body = body
 55727  
 55728        return Promise.resolve(response)
 55729      }
 55730      case 'data:': {
 55731        // 1. Let dataURLStruct be the result of running the
 55732        //    data: URL processor on request’s current URL.
 55733        const currentURL = requestCurrentURL(request)
 55734        const dataURLStruct = dataURLProcessor(currentURL)
 55735  
 55736        // 2. If dataURLStruct is failure, then return a
 55737        //    network error.
 55738        if (dataURLStruct === 'failure') {
 55739          return Promise.resolve(makeNetworkError('failed to fetch the data URL'))
 55740        }
 55741  
 55742        // 3. Let mimeType be dataURLStruct’s MIME type, serialized.
 55743        const mimeType = serializeAMimeType(dataURLStruct.mimeType)
 55744  
 55745        // 4. Return a response whose status message is `OK`,
 55746        //    header list is « (`Content-Type`, mimeType) »,
 55747        //    and body is dataURLStruct’s body as a body.
 55748        return Promise.resolve(makeResponse({
 55749          statusText: 'OK',
 55750          headersList: [
 55751            ['content-type', { name: 'Content-Type', value: mimeType }]
 55752          ],
 55753          body: safelyExtractBody(dataURLStruct.body)[0]
 55754        }))
 55755      }
 55756      case 'file:': {
 55757        // For now, unfortunate as it is, file URLs are left as an exercise for the reader.
 55758        // When in doubt, return a network error.
 55759        return Promise.resolve(makeNetworkError('not implemented... yet...'))
 55760      }
 55761      case 'http:':
 55762      case 'https:': {
 55763        // Return the result of running HTTP fetch given fetchParams.
 55764  
 55765        return httpFetch(fetchParams)
 55766          .catch((err) => makeNetworkError(err))
 55767      }
 55768      default: {
 55769        return Promise.resolve(makeNetworkError('unknown scheme'))
 55770      }
 55771    }
 55772  }
 55773  
 55774  // https://fetch.spec.whatwg.org/#finalize-response
 55775  function finalizeResponse (fetchParams, response) {
 55776    // 1. Set fetchParams’s request’s done flag.
 55777    fetchParams.request.done = true
 55778  
 55779    // 2, If fetchParams’s process response done is not null, then queue a fetch
 55780    // task to run fetchParams’s process response done given response, with
 55781    // fetchParams’s task destination.
 55782    if (fetchParams.processResponseDone != null) {
 55783      queueMicrotask(() => fetchParams.processResponseDone(response))
 55784    }
 55785  }
 55786  
 55787  // https://fetch.spec.whatwg.org/#fetch-finale
 55788  function fetchFinale (fetchParams, response) {
 55789    // 1. If response is a network error, then:
 55790    if (response.type === 'error') {
 55791      // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ».
 55792      response.urlList = [fetchParams.request.urlList[0]]
 55793  
 55794      // 2. Set response’s timing info to the result of creating an opaque timing
 55795      // info for fetchParams’s timing info.
 55796      response.timingInfo = createOpaqueTimingInfo({
 55797        startTime: fetchParams.timingInfo.startTime
 55798      })
 55799    }
 55800  
 55801    // 2. Let processResponseEndOfBody be the following steps:
 55802    const processResponseEndOfBody = () => {
 55803      // 1. Set fetchParams’s request’s done flag.
 55804      fetchParams.request.done = true
 55805  
 55806      // If fetchParams’s process response end-of-body is not null,
 55807      // then queue a fetch task to run fetchParams’s process response
 55808      // end-of-body given response with fetchParams’s task destination.
 55809      if (fetchParams.processResponseEndOfBody != null) {
 55810        queueMicrotask(() => fetchParams.processResponseEndOfBody(response))
 55811      }
 55812    }
 55813  
 55814    // 3. If fetchParams’s process response is non-null, then queue a fetch task
 55815    // to run fetchParams’s process response given response, with fetchParams’s
 55816    // task destination.
 55817    if (fetchParams.processResponse != null) {
 55818      queueMicrotask(() => fetchParams.processResponse(response))
 55819    }
 55820  
 55821    // 4. If response’s body is null, then run processResponseEndOfBody.
 55822    if (response.body == null) {
 55823      processResponseEndOfBody()
 55824    } else {
 55825    // 5. Otherwise:
 55826  
 55827      // 1. Let transformStream be a new a TransformStream.
 55828  
 55829      // 2. Let identityTransformAlgorithm be an algorithm which, given chunk,
 55830      // enqueues chunk in transformStream.
 55831      const identityTransformAlgorithm = (chunk, controller) => {
 55832        controller.enqueue(chunk)
 55833      }
 55834  
 55835      // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm
 55836      // and flushAlgorithm set to processResponseEndOfBody.
 55837      const transformStream = new TransformStream({
 55838        start () {},
 55839        transform: identityTransformAlgorithm,
 55840        flush: processResponseEndOfBody
 55841      }, {
 55842        size () {
 55843          return 1
 55844        }
 55845      }, {
 55846        size () {
 55847          return 1
 55848        }
 55849      })
 55850  
 55851      // 4. Set response’s body to the result of piping response’s body through transformStream.
 55852      response.body = { stream: response.body.stream.pipeThrough(transformStream) }
 55853    }
 55854  
 55855    // 6. If fetchParams’s process response consume body is non-null, then:
 55856    if (fetchParams.processResponseConsumeBody != null) {
 55857      // 1. Let processBody given nullOrBytes be this step: run fetchParams’s
 55858      // process response consume body given response and nullOrBytes.
 55859      const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes)
 55860  
 55861      // 2. Let processBodyError be this step: run fetchParams’s process
 55862      // response consume body given response and failure.
 55863      const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure)
 55864  
 55865      // 3. If response’s body is null, then queue a fetch task to run processBody
 55866      // given null, with fetchParams’s task destination.
 55867      if (response.body == null) {
 55868        queueMicrotask(() => processBody(null))
 55869      } else {
 55870        // 4. Otherwise, fully read response’s body given processBody, processBodyError,
 55871        // and fetchParams’s task destination.
 55872        return fullyReadBody(response.body, processBody, processBodyError)
 55873      }
 55874      return Promise.resolve()
 55875    }
 55876  }
 55877  
 55878  // https://fetch.spec.whatwg.org/#http-fetch
 55879  async function httpFetch (fetchParams) {
 55880    // 1. Let request be fetchParams’s request.
 55881    const request = fetchParams.request
 55882  
 55883    // 2. Let response be null.
 55884    let response = null
 55885  
 55886    // 3. Let actualResponse be null.
 55887    let actualResponse = null
 55888  
 55889    // 4. Let timingInfo be fetchParams’s timing info.
 55890    const timingInfo = fetchParams.timingInfo
 55891  
 55892    // 5. If request’s service-workers mode is "all", then:
 55893    if (request.serviceWorkers === 'all') {
 55894      // TODO
 55895    }
 55896  
 55897    // 6. If response is null, then:
 55898    if (response === null) {
 55899      // 1. If makeCORSPreflight is true and one of these conditions is true:
 55900      // TODO
 55901  
 55902      // 2. If request’s redirect mode is "follow", then set request’s
 55903      // service-workers mode to "none".
 55904      if (request.redirect === 'follow') {
 55905        request.serviceWorkers = 'none'
 55906      }
 55907  
 55908      // 3. Set response and actualResponse to the result of running
 55909      // HTTP-network-or-cache fetch given fetchParams.
 55910      actualResponse = response = await httpNetworkOrCacheFetch(fetchParams)
 55911  
 55912      // 4. If request’s response tainting is "cors" and a CORS check
 55913      // for request and response returns failure, then return a network error.
 55914      if (
 55915        request.responseTainting === 'cors' &&
 55916        corsCheck(request, response) === 'failure'
 55917      ) {
 55918        return makeNetworkError('cors failure')
 55919      }
 55920  
 55921      // 5. If the TAO check for request and response returns failure, then set
 55922      // request’s timing allow failed flag.
 55923      if (TAOCheck(request, response) === 'failure') {
 55924        request.timingAllowFailed = true
 55925      }
 55926    }
 55927  
 55928    // 7. If either request’s response tainting or response’s type
 55929    // is "opaque", and the cross-origin resource policy check with
 55930    // request’s origin, request’s client, request’s destination,
 55931    // and actualResponse returns blocked, then return a network error.
 55932    if (
 55933      (request.responseTainting === 'opaque' || response.type === 'opaque') &&
 55934      crossOriginResourcePolicyCheck(
 55935        request.origin,
 55936        request.client,
 55937        request.destination,
 55938        actualResponse
 55939      ) === 'blocked'
 55940    ) {
 55941      return makeNetworkError('blocked')
 55942    }
 55943  
 55944    // 8. If actualResponse’s status is a redirect status, then:
 55945    if (redirectStatusSet.has(actualResponse.status)) {
 55946      // 1. If actualResponse’s status is not 303, request’s body is not null,
 55947      // and the connection uses HTTP/2, then user agents may, and are even
 55948      // encouraged to, transmit an RST_STREAM frame.
 55949      // See, https://github.com/whatwg/fetch/issues/1288
 55950      if (request.redirect !== 'manual') {
 55951        fetchParams.controller.connection.destroy()
 55952      }
 55953  
 55954      // 2. Switch on request’s redirect mode:
 55955      if (request.redirect === 'error') {
 55956        // Set response to a network error.
 55957        response = makeNetworkError('unexpected redirect')
 55958      } else if (request.redirect === 'manual') {
 55959        // Set response to an opaque-redirect filtered response whose internal
 55960        // response is actualResponse.
 55961        // NOTE(spec): On the web this would return an `opaqueredirect` response,
 55962        // but that doesn't make sense server side.
 55963        // See https://github.com/nodejs/undici/issues/1193.
 55964        response = actualResponse
 55965      } else if (request.redirect === 'follow') {
 55966        // Set response to the result of running HTTP-redirect fetch given
 55967        // fetchParams and response.
 55968        response = await httpRedirectFetch(fetchParams, response)
 55969      } else {
 55970        assert(false)
 55971      }
 55972    }
 55973  
 55974    // 9. Set response’s timing info to timingInfo.
 55975    response.timingInfo = timingInfo
 55976  
 55977    // 10. Return response.
 55978    return response
 55979  }
 55980  
 55981  // https://fetch.spec.whatwg.org/#http-redirect-fetch
 55982  function httpRedirectFetch (fetchParams, response) {
 55983    // 1. Let request be fetchParams’s request.
 55984    const request = fetchParams.request
 55985  
 55986    // 2. Let actualResponse be response, if response is not a filtered response,
 55987    // and response’s internal response otherwise.
 55988    const actualResponse = response.internalResponse
 55989      ? response.internalResponse
 55990      : response
 55991  
 55992    // 3. Let locationURL be actualResponse’s location URL given request’s current
 55993    // URL’s fragment.
 55994    let locationURL
 55995  
 55996    try {
 55997      locationURL = responseLocationURL(
 55998        actualResponse,
 55999        requestCurrentURL(request).hash
 56000      )
 56001  
 56002      // 4. If locationURL is null, then return response.
 56003      if (locationURL == null) {
 56004        return response
 56005      }
 56006    } catch (err) {
 56007      // 5. If locationURL is failure, then return a network error.
 56008      return Promise.resolve(makeNetworkError(err))
 56009    }
 56010  
 56011    // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network
 56012    // error.
 56013    if (!urlIsHttpHttpsScheme(locationURL)) {
 56014      return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))
 56015    }
 56016  
 56017    // 7. If request’s redirect count is 20, then return a network error.
 56018    if (request.redirectCount === 20) {
 56019      return Promise.resolve(makeNetworkError('redirect count exceeded'))
 56020    }
 56021  
 56022    // 8. Increase request’s redirect count by 1.
 56023    request.redirectCount += 1
 56024  
 56025    // 9. If request’s mode is "cors", locationURL includes credentials, and
 56026    // request’s origin is not same origin with locationURL’s origin, then return
 56027    //  a network error.
 56028    if (
 56029      request.mode === 'cors' &&
 56030      (locationURL.username || locationURL.password) &&
 56031      !sameOrigin(request, locationURL)
 56032    ) {
 56033      return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'))
 56034    }
 56035  
 56036    // 10. If request’s response tainting is "cors" and locationURL includes
 56037    // credentials, then return a network error.
 56038    if (
 56039      request.responseTainting === 'cors' &&
 56040      (locationURL.username || locationURL.password)
 56041    ) {
 56042      return Promise.resolve(makeNetworkError(
 56043        'URL cannot contain credentials for request mode "cors"'
 56044      ))
 56045    }
 56046  
 56047    // 11. If actualResponse’s status is not 303, request’s body is non-null,
 56048    // and request’s body’s source is null, then return a network error.
 56049    if (
 56050      actualResponse.status !== 303 &&
 56051      request.body != null &&
 56052      request.body.source == null
 56053    ) {
 56054      return Promise.resolve(makeNetworkError())
 56055    }
 56056  
 56057    // 12. If one of the following is true
 56058    // - actualResponse’s status is 301 or 302 and request’s method is `POST`
 56059    // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD`
 56060    if (
 56061      ([301, 302].includes(actualResponse.status) && request.method === 'POST') ||
 56062      (actualResponse.status === 303 &&
 56063        !GET_OR_HEAD.includes(request.method))
 56064    ) {
 56065      // then:
 56066      // 1. Set request’s method to `GET` and request’s body to null.
 56067      request.method = 'GET'
 56068      request.body = null
 56069  
 56070      // 2. For each headerName of request-body-header name, delete headerName from
 56071      // request’s header list.
 56072      for (const headerName of requestBodyHeader) {
 56073        request.headersList.delete(headerName)
 56074      }
 56075    }
 56076  
 56077    // 13. If request’s current URL’s origin is not same origin with locationURL’s
 56078    //     origin, then for each headerName of CORS non-wildcard request-header name,
 56079    //     delete headerName from request’s header list.
 56080    if (!sameOrigin(requestCurrentURL(request), locationURL)) {
 56081      // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name
 56082      request.headersList.delete('authorization')
 56083  
 56084      // https://fetch.spec.whatwg.org/#authentication-entries
 56085      request.headersList.delete('proxy-authorization', true)
 56086  
 56087      // "Cookie" and "Host" are forbidden request-headers, which undici doesn't implement.
 56088      request.headersList.delete('cookie')
 56089      request.headersList.delete('host')
 56090    }
 56091  
 56092    // 14. If request’s body is non-null, then set request’s body to the first return
 56093    // value of safely extracting request’s body’s source.
 56094    if (request.body != null) {
 56095      assert(request.body.source != null)
 56096      request.body = safelyExtractBody(request.body.source)[0]
 56097    }
 56098  
 56099    // 15. Let timingInfo be fetchParams’s timing info.
 56100    const timingInfo = fetchParams.timingInfo
 56101  
 56102    // 16. Set timingInfo’s redirect end time and post-redirect start time to the
 56103    // coarsened shared current time given fetchParams’s cross-origin isolated
 56104    // capability.
 56105    timingInfo.redirectEndTime = timingInfo.postRedirectStartTime =
 56106      coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)
 56107  
 56108    // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s
 56109    //  redirect start time to timingInfo’s start time.
 56110    if (timingInfo.redirectStartTime === 0) {
 56111      timingInfo.redirectStartTime = timingInfo.startTime
 56112    }
 56113  
 56114    // 18. Append locationURL to request’s URL list.
 56115    request.urlList.push(locationURL)
 56116  
 56117    // 19. Invoke set request’s referrer policy on redirect on request and
 56118    // actualResponse.
 56119    setRequestReferrerPolicyOnRedirect(request, actualResponse)
 56120  
 56121    // 20. Return the result of running main fetch given fetchParams and true.
 56122    return mainFetch(fetchParams, true)
 56123  }
 56124  
 56125  // https://fetch.spec.whatwg.org/#http-network-or-cache-fetch
 56126  async function httpNetworkOrCacheFetch (
 56127    fetchParams,
 56128    isAuthenticationFetch = false,
 56129    isNewConnectionFetch = false
 56130  ) {
 56131    // 1. Let request be fetchParams’s request.
 56132    const request = fetchParams.request
 56133  
 56134    // 2. Let httpFetchParams be null.
 56135    let httpFetchParams = null
 56136  
 56137    // 3. Let httpRequest be null.
 56138    let httpRequest = null
 56139  
 56140    // 4. Let response be null.
 56141    let response = null
 56142  
 56143    // 5. Let storedResponse be null.
 56144    // TODO: cache
 56145  
 56146    // 6. Let httpCache be null.
 56147    const httpCache = null
 56148  
 56149    // 7. Let the revalidatingFlag be unset.
 56150    const revalidatingFlag = false
 56151  
 56152    // 8. Run these steps, but abort when the ongoing fetch is terminated:
 56153  
 56154    //    1. If request’s window is "no-window" and request’s redirect mode is
 56155    //    "error", then set httpFetchParams to fetchParams and httpRequest to
 56156    //    request.
 56157    if (request.window === 'no-window' && request.redirect === 'error') {
 56158      httpFetchParams = fetchParams
 56159      httpRequest = request
 56160    } else {
 56161      // Otherwise:
 56162  
 56163      // 1. Set httpRequest to a clone of request.
 56164      httpRequest = makeRequest(request)
 56165  
 56166      // 2. Set httpFetchParams to a copy of fetchParams.
 56167      httpFetchParams = { ...fetchParams }
 56168  
 56169      // 3. Set httpFetchParams’s request to httpRequest.
 56170      httpFetchParams.request = httpRequest
 56171    }
 56172  
 56173    //    3. Let includeCredentials be true if one of
 56174    const includeCredentials =
 56175      request.credentials === 'include' ||
 56176      (request.credentials === 'same-origin' &&
 56177        request.responseTainting === 'basic')
 56178  
 56179    //    4. Let contentLength be httpRequest’s body’s length, if httpRequest’s
 56180    //    body is non-null; otherwise null.
 56181    const contentLength = httpRequest.body ? httpRequest.body.length : null
 56182  
 56183    //    5. Let contentLengthHeaderValue be null.
 56184    let contentLengthHeaderValue = null
 56185  
 56186    //    6. If httpRequest’s body is null and httpRequest’s method is `POST` or
 56187    //    `PUT`, then set contentLengthHeaderValue to `0`.
 56188    if (
 56189      httpRequest.body == null &&
 56190      ['POST', 'PUT'].includes(httpRequest.method)
 56191    ) {
 56192      contentLengthHeaderValue = '0'
 56193    }
 56194  
 56195    //    7. If contentLength is non-null, then set contentLengthHeaderValue to
 56196    //    contentLength, serialized and isomorphic encoded.
 56197    if (contentLength != null) {
 56198      contentLengthHeaderValue = isomorphicEncode(`${contentLength}`)
 56199    }
 56200  
 56201    //    8. If contentLengthHeaderValue is non-null, then append
 56202    //    `Content-Length`/contentLengthHeaderValue to httpRequest’s header
 56203    //    list.
 56204    if (contentLengthHeaderValue != null) {
 56205      httpRequest.headersList.append('content-length', contentLengthHeaderValue)
 56206    }
 56207  
 56208    //    9. If contentLengthHeaderValue is non-null, then append (`Content-Length`,
 56209    //    contentLengthHeaderValue) to httpRequest’s header list.
 56210  
 56211    //    10. If contentLength is non-null and httpRequest’s keepalive is true,
 56212    //    then:
 56213    if (contentLength != null && httpRequest.keepalive) {
 56214      // NOTE: keepalive is a noop outside of browser context.
 56215    }
 56216  
 56217    //    11. If httpRequest’s referrer is a URL, then append
 56218    //    `Referer`/httpRequest’s referrer, serialized and isomorphic encoded,
 56219    //     to httpRequest’s header list.
 56220    if (httpRequest.referrer instanceof URL) {
 56221      httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href))
 56222    }
 56223  
 56224    //    12. Append a request `Origin` header for httpRequest.
 56225    appendRequestOriginHeader(httpRequest)
 56226  
 56227    //    13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA]
 56228    appendFetchMetadata(httpRequest)
 56229  
 56230    //    14. If httpRequest’s header list does not contain `User-Agent`, then
 56231    //    user agents should append `User-Agent`/default `User-Agent` value to
 56232    //    httpRequest’s header list.
 56233    if (!httpRequest.headersList.contains('user-agent')) {
 56234      httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node')
 56235    }
 56236  
 56237    //    15. If httpRequest’s cache mode is "default" and httpRequest’s header
 56238    //    list contains `If-Modified-Since`, `If-None-Match`,
 56239    //    `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set
 56240    //    httpRequest’s cache mode to "no-store".
 56241    if (
 56242      httpRequest.cache === 'default' &&
 56243      (httpRequest.headersList.contains('if-modified-since') ||
 56244        httpRequest.headersList.contains('if-none-match') ||
 56245        httpRequest.headersList.contains('if-unmodified-since') ||
 56246        httpRequest.headersList.contains('if-match') ||
 56247        httpRequest.headersList.contains('if-range'))
 56248    ) {
 56249      httpRequest.cache = 'no-store'
 56250    }
 56251  
 56252    //    16. If httpRequest’s cache mode is "no-cache", httpRequest’s prevent
 56253    //    no-cache cache-control header modification flag is unset, and
 56254    //    httpRequest’s header list does not contain `Cache-Control`, then append
 56255    //    `Cache-Control`/`max-age=0` to httpRequest’s header list.
 56256    if (
 56257      httpRequest.cache === 'no-cache' &&
 56258      !httpRequest.preventNoCacheCacheControlHeaderModification &&
 56259      !httpRequest.headersList.contains('cache-control')
 56260    ) {
 56261      httpRequest.headersList.append('cache-control', 'max-age=0')
 56262    }
 56263  
 56264    //    17. If httpRequest’s cache mode is "no-store" or "reload", then:
 56265    if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') {
 56266      // 1. If httpRequest’s header list does not contain `Pragma`, then append
 56267      // `Pragma`/`no-cache` to httpRequest’s header list.
 56268      if (!httpRequest.headersList.contains('pragma')) {
 56269        httpRequest.headersList.append('pragma', 'no-cache')
 56270      }
 56271  
 56272      // 2. If httpRequest’s header list does not contain `Cache-Control`,
 56273      // then append `Cache-Control`/`no-cache` to httpRequest’s header list.
 56274      if (!httpRequest.headersList.contains('cache-control')) {
 56275        httpRequest.headersList.append('cache-control', 'no-cache')
 56276      }
 56277    }
 56278  
 56279    //    18. If httpRequest’s header list contains `Range`, then append
 56280    //    `Accept-Encoding`/`identity` to httpRequest’s header list.
 56281    if (httpRequest.headersList.contains('range')) {
 56282      httpRequest.headersList.append('accept-encoding', 'identity')
 56283    }
 56284  
 56285    //    19. Modify httpRequest’s header list per HTTP. Do not append a given
 56286    //    header if httpRequest’s header list contains that header’s name.
 56287    //    TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129
 56288    if (!httpRequest.headersList.contains('accept-encoding')) {
 56289      if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {
 56290        httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate')
 56291      } else {
 56292        httpRequest.headersList.append('accept-encoding', 'gzip, deflate')
 56293      }
 56294    }
 56295  
 56296    httpRequest.headersList.delete('host')
 56297  
 56298    //    20. If includeCredentials is true, then:
 56299    if (includeCredentials) {
 56300      // 1. If the user agent is not configured to block cookies for httpRequest
 56301      // (see section 7 of [COOKIES]), then:
 56302      // TODO: credentials
 56303      // 2. If httpRequest’s header list does not contain `Authorization`, then:
 56304      // TODO: credentials
 56305    }
 56306  
 56307    //    21. If there’s a proxy-authentication entry, use it as appropriate.
 56308    //    TODO: proxy-authentication
 56309  
 56310    //    22. Set httpCache to the result of determining the HTTP cache
 56311    //    partition, given httpRequest.
 56312    //    TODO: cache
 56313  
 56314    //    23. If httpCache is null, then set httpRequest’s cache mode to
 56315    //    "no-store".
 56316    if (httpCache == null) {
 56317      httpRequest.cache = 'no-store'
 56318    }
 56319  
 56320    //    24. If httpRequest’s cache mode is neither "no-store" nor "reload",
 56321    //    then:
 56322    if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') {
 56323      // TODO: cache
 56324    }
 56325  
 56326    // 9. If aborted, then return the appropriate network error for fetchParams.
 56327    // TODO
 56328  
 56329    // 10. If response is null, then:
 56330    if (response == null) {
 56331      // 1. If httpRequest’s cache mode is "only-if-cached", then return a
 56332      // network error.
 56333      if (httpRequest.mode === 'only-if-cached') {
 56334        return makeNetworkError('only if cached')
 56335      }
 56336  
 56337      // 2. Let forwardResponse be the result of running HTTP-network fetch
 56338      // given httpFetchParams, includeCredentials, and isNewConnectionFetch.
 56339      const forwardResponse = await httpNetworkFetch(
 56340        httpFetchParams,
 56341        includeCredentials,
 56342        isNewConnectionFetch
 56343      )
 56344  
 56345      // 3. If httpRequest’s method is unsafe and forwardResponse’s status is
 56346      // in the range 200 to 399, inclusive, invalidate appropriate stored
 56347      // responses in httpCache, as per the "Invalidation" chapter of HTTP
 56348      // Caching, and set storedResponse to null. [HTTP-CACHING]
 56349      if (
 56350        !safeMethodsSet.has(httpRequest.method) &&
 56351        forwardResponse.status >= 200 &&
 56352        forwardResponse.status <= 399
 56353      ) {
 56354        // TODO: cache
 56355      }
 56356  
 56357      // 4. If the revalidatingFlag is set and forwardResponse’s status is 304,
 56358      // then:
 56359      if (revalidatingFlag && forwardResponse.status === 304) {
 56360        // TODO: cache
 56361      }
 56362  
 56363      // 5. If response is null, then:
 56364      if (response == null) {
 56365        // 1. Set response to forwardResponse.
 56366        response = forwardResponse
 56367  
 56368        // 2. Store httpRequest and forwardResponse in httpCache, as per the
 56369        // "Storing Responses in Caches" chapter of HTTP Caching. [HTTP-CACHING]
 56370        // TODO: cache
 56371      }
 56372    }
 56373  
 56374    // 11. Set response’s URL list to a clone of httpRequest’s URL list.
 56375    response.urlList = [...httpRequest.urlList]
 56376  
 56377    // 12. If httpRequest’s header list contains `Range`, then set response’s
 56378    // range-requested flag.
 56379    if (httpRequest.headersList.contains('range')) {
 56380      response.rangeRequested = true
 56381    }
 56382  
 56383    // 13. Set response’s request-includes-credentials to includeCredentials.
 56384    response.requestIncludesCredentials = includeCredentials
 56385  
 56386    // 14. If response’s status is 401, httpRequest’s response tainting is not
 56387    // "cors", includeCredentials is true, and request’s window is an environment
 56388    // settings object, then:
 56389    // TODO
 56390  
 56391    // 15. If response’s status is 407, then:
 56392    if (response.status === 407) {
 56393      // 1. If request’s window is "no-window", then return a network error.
 56394      if (request.window === 'no-window') {
 56395        return makeNetworkError()
 56396      }
 56397  
 56398      // 2. ???
 56399  
 56400      // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams.
 56401      if (isCancelled(fetchParams)) {
 56402        return makeAppropriateNetworkError(fetchParams)
 56403      }
 56404  
 56405      // 4. Prompt the end user as appropriate in request’s window and store
 56406      // the result as a proxy-authentication entry. [HTTP-AUTH]
 56407      // TODO: Invoke some kind of callback?
 56408  
 56409      // 5. Set response to the result of running HTTP-network-or-cache fetch given
 56410      // fetchParams.
 56411      // TODO
 56412      return makeNetworkError('proxy authentication required')
 56413    }
 56414  
 56415    // 16. If all of the following are true
 56416    if (
 56417      // response’s status is 421
 56418      response.status === 421 &&
 56419      // isNewConnectionFetch is false
 56420      !isNewConnectionFetch &&
 56421      // request’s body is null, or request’s body is non-null and request’s body’s source is non-null
 56422      (request.body == null || request.body.source != null)
 56423    ) {
 56424      // then:
 56425  
 56426      // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.
 56427      if (isCancelled(fetchParams)) {
 56428        return makeAppropriateNetworkError(fetchParams)
 56429      }
 56430  
 56431      // 2. Set response to the result of running HTTP-network-or-cache
 56432      // fetch given fetchParams, isAuthenticationFetch, and true.
 56433  
 56434      // TODO (spec): The spec doesn't specify this but we need to cancel
 56435      // the active response before we can start a new one.
 56436      // https://github.com/whatwg/fetch/issues/1293
 56437      fetchParams.controller.connection.destroy()
 56438  
 56439      response = await httpNetworkOrCacheFetch(
 56440        fetchParams,
 56441        isAuthenticationFetch,
 56442        true
 56443      )
 56444    }
 56445  
 56446    // 17. If isAuthenticationFetch is true, then create an authentication entry
 56447    if (isAuthenticationFetch) {
 56448      // TODO
 56449    }
 56450  
 56451    // 18. Return response.
 56452    return response
 56453  }
 56454  
 56455  // https://fetch.spec.whatwg.org/#http-network-fetch
 56456  async function httpNetworkFetch (
 56457    fetchParams,
 56458    includeCredentials = false,
 56459    forceNewConnection = false
 56460  ) {
 56461    assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed)
 56462  
 56463    fetchParams.controller.connection = {
 56464      abort: null,
 56465      destroyed: false,
 56466      destroy (err) {
 56467        if (!this.destroyed) {
 56468          this.destroyed = true
 56469          this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError'))
 56470        }
 56471      }
 56472    }
 56473  
 56474    // 1. Let request be fetchParams’s request.
 56475    const request = fetchParams.request
 56476  
 56477    // 2. Let response be null.
 56478    let response = null
 56479  
 56480    // 3. Let timingInfo be fetchParams’s timing info.
 56481    const timingInfo = fetchParams.timingInfo
 56482  
 56483    // 4. Let httpCache be the result of determining the HTTP cache partition,
 56484    // given request.
 56485    // TODO: cache
 56486    const httpCache = null
 56487  
 56488    // 5. If httpCache is null, then set request’s cache mode to "no-store".
 56489    if (httpCache == null) {
 56490      request.cache = 'no-store'
 56491    }
 56492  
 56493    // 6. Let networkPartitionKey be the result of determining the network
 56494    // partition key given request.
 56495    // TODO
 56496  
 56497    // 7. Let newConnection be "yes" if forceNewConnection is true; otherwise
 56498    // "no".
 56499    const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars
 56500  
 56501    // 8. Switch on request’s mode:
 56502    if (request.mode === 'websocket') {
 56503      // Let connection be the result of obtaining a WebSocket connection,
 56504      // given request’s current URL.
 56505      // TODO
 56506    } else {
 56507      // Let connection be the result of obtaining a connection, given
 56508      // networkPartitionKey, request’s current URL’s origin,
 56509      // includeCredentials, and forceNewConnection.
 56510      // TODO
 56511    }
 56512  
 56513    // 9. Run these steps, but abort when the ongoing fetch is terminated:
 56514  
 56515    //    1. If connection is failure, then return a network error.
 56516  
 56517    //    2. Set timingInfo’s final connection timing info to the result of
 56518    //    calling clamp and coarsen connection timing info with connection’s
 56519    //    timing info, timingInfo’s post-redirect start time, and fetchParams’s
 56520    //    cross-origin isolated capability.
 56521  
 56522    //    3. If connection is not an HTTP/2 connection, request’s body is non-null,
 56523    //    and request’s body’s source is null, then append (`Transfer-Encoding`,
 56524    //    `chunked`) to request’s header list.
 56525  
 56526    //    4. Set timingInfo’s final network-request start time to the coarsened
 56527    //    shared current time given fetchParams’s cross-origin isolated
 56528    //    capability.
 56529  
 56530    //    5. Set response to the result of making an HTTP request over connection
 56531    //    using request with the following caveats:
 56532  
 56533    //        - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS]
 56534    //        [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH]
 56535  
 56536    //        - If request’s body is non-null, and request’s body’s source is null,
 56537    //        then the user agent may have a buffer of up to 64 kibibytes and store
 56538    //        a part of request’s body in that buffer. If the user agent reads from
 56539    //        request’s body beyond that buffer’s size and the user agent needs to
 56540    //        resend request, then instead return a network error.
 56541  
 56542    //        - Set timingInfo’s final network-response start time to the coarsened
 56543    //        shared current time given fetchParams’s cross-origin isolated capability,
 56544    //        immediately after the user agent’s HTTP parser receives the first byte
 56545    //        of the response (e.g., frame header bytes for HTTP/2 or response status
 56546    //        line for HTTP/1.x).
 56547  
 56548    //        - Wait until all the headers are transmitted.
 56549  
 56550    //        - Any responses whose status is in the range 100 to 199, inclusive,
 56551    //        and is not 101, are to be ignored, except for the purposes of setting
 56552    //        timingInfo’s final network-response start time above.
 56553  
 56554    //    - If request’s header list contains `Transfer-Encoding`/`chunked` and
 56555    //    response is transferred via HTTP/1.0 or older, then return a network
 56556    //    error.
 56557  
 56558    //    - If the HTTP request results in a TLS client certificate dialog, then:
 56559  
 56560    //        1. If request’s window is an environment settings object, make the
 56561    //        dialog available in request’s window.
 56562  
 56563    //        2. Otherwise, return a network error.
 56564  
 56565    // To transmit request’s body body, run these steps:
 56566    let requestBody = null
 56567    // 1. If body is null and fetchParams’s process request end-of-body is
 56568    // non-null, then queue a fetch task given fetchParams’s process request
 56569    // end-of-body and fetchParams’s task destination.
 56570    if (request.body == null && fetchParams.processRequestEndOfBody) {
 56571      queueMicrotask(() => fetchParams.processRequestEndOfBody())
 56572    } else if (request.body != null) {
 56573      // 2. Otherwise, if body is non-null:
 56574  
 56575      //    1. Let processBodyChunk given bytes be these steps:
 56576      const processBodyChunk = async function * (bytes) {
 56577        // 1. If the ongoing fetch is terminated, then abort these steps.
 56578        if (isCancelled(fetchParams)) {
 56579          return
 56580        }
 56581  
 56582        // 2. Run this step in parallel: transmit bytes.
 56583        yield bytes
 56584  
 56585        // 3. If fetchParams’s process request body is non-null, then run
 56586        // fetchParams’s process request body given bytes’s length.
 56587        fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)
 56588      }
 56589  
 56590      // 2. Let processEndOfBody be these steps:
 56591      const processEndOfBody = () => {
 56592        // 1. If fetchParams is canceled, then abort these steps.
 56593        if (isCancelled(fetchParams)) {
 56594          return
 56595        }
 56596  
 56597        // 2. If fetchParams’s process request end-of-body is non-null,
 56598        // then run fetchParams’s process request end-of-body.
 56599        if (fetchParams.processRequestEndOfBody) {
 56600          fetchParams.processRequestEndOfBody()
 56601        }
 56602      }
 56603  
 56604      // 3. Let processBodyError given e be these steps:
 56605      const processBodyError = (e) => {
 56606        // 1. If fetchParams is canceled, then abort these steps.
 56607        if (isCancelled(fetchParams)) {
 56608          return
 56609        }
 56610  
 56611        // 2. If e is an "AbortError" DOMException, then abort fetchParams’s controller.
 56612        if (e.name === 'AbortError') {
 56613          fetchParams.controller.abort()
 56614        } else {
 56615          fetchParams.controller.terminate(e)
 56616        }
 56617      }
 56618  
 56619      // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody,
 56620      // processBodyError, and fetchParams’s task destination.
 56621      requestBody = (async function * () {
 56622        try {
 56623          for await (const bytes of request.body.stream) {
 56624            yield * processBodyChunk(bytes)
 56625          }
 56626          processEndOfBody()
 56627        } catch (err) {
 56628          processBodyError(err)
 56629        }
 56630      })()
 56631    }
 56632  
 56633    try {
 56634      // socket is only provided for websockets
 56635      const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody })
 56636  
 56637      if (socket) {
 56638        response = makeResponse({ status, statusText, headersList, socket })
 56639      } else {
 56640        const iterator = body[Symbol.asyncIterator]()
 56641        fetchParams.controller.next = () => iterator.next()
 56642  
 56643        response = makeResponse({ status, statusText, headersList })
 56644      }
 56645    } catch (err) {
 56646      // 10. If aborted, then:
 56647      if (err.name === 'AbortError') {
 56648        // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame.
 56649        fetchParams.controller.connection.destroy()
 56650  
 56651        // 2. Return the appropriate network error for fetchParams.
 56652        return makeAppropriateNetworkError(fetchParams, err)
 56653      }
 56654  
 56655      return makeNetworkError(err)
 56656    }
 56657  
 56658    // 11. Let pullAlgorithm be an action that resumes the ongoing fetch
 56659    // if it is suspended.
 56660    const pullAlgorithm = () => {
 56661      fetchParams.controller.resume()
 56662    }
 56663  
 56664    // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s
 56665    // controller with reason, given reason.
 56666    const cancelAlgorithm = (reason) => {
 56667      fetchParams.controller.abort(reason)
 56668    }
 56669  
 56670    // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by
 56671    // the user agent.
 56672    // TODO
 56673  
 56674    // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object
 56675    // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent.
 56676    // TODO
 56677  
 56678    // 15. Let stream be a new ReadableStream.
 56679    // 16. Set up stream with pullAlgorithm set to pullAlgorithm,
 56680    // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to
 56681    // highWaterMark, and sizeAlgorithm set to sizeAlgorithm.
 56682    if (!ReadableStream) {
 56683      ReadableStream = (__nccwpck_require__(35356).ReadableStream)
 56684    }
 56685  
 56686    const stream = new ReadableStream(
 56687      {
 56688        async start (controller) {
 56689          fetchParams.controller.controller = controller
 56690        },
 56691        async pull (controller) {
 56692          await pullAlgorithm(controller)
 56693        },
 56694        async cancel (reason) {
 56695          await cancelAlgorithm(reason)
 56696        }
 56697      },
 56698      {
 56699        highWaterMark: 0,
 56700        size () {
 56701          return 1
 56702        }
 56703      }
 56704    )
 56705  
 56706    // 17. Run these steps, but abort when the ongoing fetch is terminated:
 56707  
 56708    //    1. Set response’s body to a new body whose stream is stream.
 56709    response.body = { stream }
 56710  
 56711    //    2. If response is not a network error and request’s cache mode is
 56712    //    not "no-store", then update response in httpCache for request.
 56713    //    TODO
 56714  
 56715    //    3. If includeCredentials is true and the user agent is not configured
 56716    //    to block cookies for request (see section 7 of [COOKIES]), then run the
 56717    //    "set-cookie-string" parsing algorithm (see section 5.2 of [COOKIES]) on
 56718    //    the value of each header whose name is a byte-case-insensitive match for
 56719    //    `Set-Cookie` in response’s header list, if any, and request’s current URL.
 56720    //    TODO
 56721  
 56722    // 18. If aborted, then:
 56723    // TODO
 56724  
 56725    // 19. Run these steps in parallel:
 56726  
 56727    //    1. Run these steps, but abort when fetchParams is canceled:
 56728    fetchParams.controller.on('terminated', onAborted)
 56729    fetchParams.controller.resume = async () => {
 56730      // 1. While true
 56731      while (true) {
 56732        // 1-3. See onData...
 56733  
 56734        // 4. Set bytes to the result of handling content codings given
 56735        // codings and bytes.
 56736        let bytes
 56737        let isFailure
 56738        try {
 56739          const { done, value } = await fetchParams.controller.next()
 56740  
 56741          if (isAborted(fetchParams)) {
 56742            break
 56743          }
 56744  
 56745          bytes = done ? undefined : value
 56746        } catch (err) {
 56747          if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {
 56748            // zlib doesn't like empty streams.
 56749            bytes = undefined
 56750          } else {
 56751            bytes = err
 56752  
 56753            // err may be propagated from the result of calling readablestream.cancel,
 56754            // which might not be an error. https://github.com/nodejs/undici/issues/2009
 56755            isFailure = true
 56756          }
 56757        }
 56758  
 56759        if (bytes === undefined) {
 56760          // 2. Otherwise, if the bytes transmission for response’s message
 56761          // body is done normally and stream is readable, then close
 56762          // stream, finalize response for fetchParams and response, and
 56763          // abort these in-parallel steps.
 56764          readableStreamClose(fetchParams.controller.controller)
 56765  
 56766          finalizeResponse(fetchParams, response)
 56767  
 56768          return
 56769        }
 56770  
 56771        // 5. Increase timingInfo’s decoded body size by bytes’s length.
 56772        timingInfo.decodedBodySize += bytes?.byteLength ?? 0
 56773  
 56774        // 6. If bytes is failure, then terminate fetchParams’s controller.
 56775        if (isFailure) {
 56776          fetchParams.controller.terminate(bytes)
 56777          return
 56778        }
 56779  
 56780        // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes
 56781        // into stream.
 56782        fetchParams.controller.controller.enqueue(new Uint8Array(bytes))
 56783  
 56784        // 8. If stream is errored, then terminate the ongoing fetch.
 56785        if (isErrored(stream)) {
 56786          fetchParams.controller.terminate()
 56787          return
 56788        }
 56789  
 56790        // 9. If stream doesn’t need more data ask the user agent to suspend
 56791        // the ongoing fetch.
 56792        if (!fetchParams.controller.controller.desiredSize) {
 56793          return
 56794        }
 56795      }
 56796    }
 56797  
 56798    //    2. If aborted, then:
 56799    function onAborted (reason) {
 56800      // 2. If fetchParams is aborted, then:
 56801      if (isAborted(fetchParams)) {
 56802        // 1. Set response’s aborted flag.
 56803        response.aborted = true
 56804  
 56805        // 2. If stream is readable, then error stream with the result of
 56806        //    deserialize a serialized abort reason given fetchParams’s
 56807        //    controller’s serialized abort reason and an
 56808        //    implementation-defined realm.
 56809        if (isReadable(stream)) {
 56810          fetchParams.controller.controller.error(
 56811            fetchParams.controller.serializedAbortReason
 56812          )
 56813        }
 56814      } else {
 56815        // 3. Otherwise, if stream is readable, error stream with a TypeError.
 56816        if (isReadable(stream)) {
 56817          fetchParams.controller.controller.error(new TypeError('terminated', {
 56818            cause: isErrorLike(reason) ? reason : undefined
 56819          }))
 56820        }
 56821      }
 56822  
 56823      // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame.
 56824      // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so.
 56825      fetchParams.controller.connection.destroy()
 56826    }
 56827  
 56828    // 20. Return response.
 56829    return response
 56830  
 56831    async function dispatch ({ body }) {
 56832      const url = requestCurrentURL(request)
 56833      /** @type {import('../..').Agent} */
 56834      const agent = fetchParams.controller.dispatcher
 56835  
 56836      return new Promise((resolve, reject) => agent.dispatch(
 56837        {
 56838          path: url.pathname + url.search,
 56839          origin: url.origin,
 56840          method: request.method,
 56841          body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body,
 56842          headers: request.headersList.entries,
 56843          maxRedirections: 0,
 56844          upgrade: request.mode === 'websocket' ? 'websocket' : undefined
 56845        },
 56846        {
 56847          body: null,
 56848          abort: null,
 56849  
 56850          onConnect (abort) {
 56851            // TODO (fix): Do we need connection here?
 56852            const { connection } = fetchParams.controller
 56853  
 56854            if (connection.destroyed) {
 56855              abort(new DOMException('The operation was aborted.', 'AbortError'))
 56856            } else {
 56857              fetchParams.controller.on('terminated', abort)
 56858              this.abort = connection.abort = abort
 56859            }
 56860          },
 56861  
 56862          onHeaders (status, headersList, resume, statusText) {
 56863            if (status < 200) {
 56864              return
 56865            }
 56866  
 56867            let codings = []
 56868            let location = ''
 56869  
 56870            const headers = new Headers()
 56871  
 56872            // For H2, the headers are a plain JS object
 56873            // We distinguish between them and iterate accordingly
 56874            if (Array.isArray(headersList)) {
 56875              for (let n = 0; n < headersList.length; n += 2) {
 56876                const key = headersList[n + 0].toString('latin1')
 56877                const val = headersList[n + 1].toString('latin1')
 56878                if (key.toLowerCase() === 'content-encoding') {
 56879                  // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1
 56880                  // "All content-coding values are case-insensitive..."
 56881                  codings = val.toLowerCase().split(',').map((x) => x.trim())
 56882                } else if (key.toLowerCase() === 'location') {
 56883                  location = val
 56884                }
 56885  
 56886                headers[kHeadersList].append(key, val)
 56887              }
 56888            } else {
 56889              const keys = Object.keys(headersList)
 56890              for (const key of keys) {
 56891                const val = headersList[key]
 56892                if (key.toLowerCase() === 'content-encoding') {
 56893                  // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1
 56894                  // "All content-coding values are case-insensitive..."
 56895                  codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse()
 56896                } else if (key.toLowerCase() === 'location') {
 56897                  location = val
 56898                }
 56899  
 56900                headers[kHeadersList].append(key, val)
 56901              }
 56902            }
 56903  
 56904            this.body = new Readable({ read: resume })
 56905  
 56906            const decoders = []
 56907  
 56908            const willFollow = request.redirect === 'follow' &&
 56909              location &&
 56910              redirectStatusSet.has(status)
 56911  
 56912            // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding
 56913            if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {
 56914              for (const coding of codings) {
 56915                // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2
 56916                if (coding === 'x-gzip' || coding === 'gzip') {
 56917                  decoders.push(zlib.createGunzip({
 56918                    // Be less strict when decoding compressed responses, since sometimes
 56919                    // servers send slightly invalid responses that are still accepted
 56920                    // by common browsers.
 56921                    // Always using Z_SYNC_FLUSH is what cURL does.
 56922                    flush: zlib.constants.Z_SYNC_FLUSH,
 56923                    finishFlush: zlib.constants.Z_SYNC_FLUSH
 56924                  }))
 56925                } else if (coding === 'deflate') {
 56926                  decoders.push(zlib.createInflate())
 56927                } else if (coding === 'br') {
 56928                  decoders.push(zlib.createBrotliDecompress())
 56929                } else {
 56930                  decoders.length = 0
 56931                  break
 56932                }
 56933              }
 56934            }
 56935  
 56936            resolve({
 56937              status,
 56938              statusText,
 56939              headersList: headers[kHeadersList],
 56940              body: decoders.length
 56941                ? pipeline(this.body, ...decoders, () => { })
 56942                : this.body.on('error', () => {})
 56943            })
 56944  
 56945            return true
 56946          },
 56947  
 56948          onData (chunk) {
 56949            if (fetchParams.controller.dump) {
 56950              return
 56951            }
 56952  
 56953            // 1. If one or more bytes have been transmitted from response’s
 56954            // message body, then:
 56955  
 56956            //  1. Let bytes be the transmitted bytes.
 56957            const bytes = chunk
 56958  
 56959            //  2. Let codings be the result of extracting header list values
 56960            //  given `Content-Encoding` and response’s header list.
 56961            //  See pullAlgorithm.
 56962  
 56963            //  3. Increase timingInfo’s encoded body size by bytes’s length.
 56964            timingInfo.encodedBodySize += bytes.byteLength
 56965  
 56966            //  4. See pullAlgorithm...
 56967  
 56968            return this.body.push(bytes)
 56969          },
 56970  
 56971          onComplete () {
 56972            if (this.abort) {
 56973              fetchParams.controller.off('terminated', this.abort)
 56974            }
 56975  
 56976            fetchParams.controller.ended = true
 56977  
 56978            this.body.push(null)
 56979          },
 56980  
 56981          onError (error) {
 56982            if (this.abort) {
 56983              fetchParams.controller.off('terminated', this.abort)
 56984            }
 56985  
 56986            this.body?.destroy(error)
 56987  
 56988            fetchParams.controller.terminate(error)
 56989  
 56990            reject(error)
 56991          },
 56992  
 56993          onUpgrade (status, headersList, socket) {
 56994            if (status !== 101) {
 56995              return
 56996            }
 56997  
 56998            const headers = new Headers()
 56999  
 57000            for (let n = 0; n < headersList.length; n += 2) {
 57001              const key = headersList[n + 0].toString('latin1')
 57002              const val = headersList[n + 1].toString('latin1')
 57003  
 57004              headers[kHeadersList].append(key, val)
 57005            }
 57006  
 57007            resolve({
 57008              status,
 57009              statusText: STATUS_CODES[status],
 57010              headersList: headers[kHeadersList],
 57011              socket
 57012            })
 57013  
 57014            return true
 57015          }
 57016        }
 57017      ))
 57018    }
 57019  }
 57020  
 57021  module.exports = {
 57022    fetch,
 57023    Fetch,
 57024    fetching,
 57025    finalizeAndReportTiming
 57026  }
 57027  
 57028  
 57029  /***/ }),
 57030  
 57031  /***/ 48359:
 57032  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 57033  
 57034  "use strict";
 57035  /* globals AbortController */
 57036  
 57037  
 57038  
 57039  const { extractBody, mixinBody, cloneBody } = __nccwpck_require__(41472)
 57040  const { Headers, fill: fillHeaders, HeadersList } = __nccwpck_require__(10554)
 57041  const { FinalizationRegistry } = __nccwpck_require__(56436)()
 57042  const util = __nccwpck_require__(83983)
 57043  const {
 57044    isValidHTTPToken,
 57045    sameOrigin,
 57046    normalizeMethod,
 57047    makePolicyContainer,
 57048    normalizeMethodRecord
 57049  } = __nccwpck_require__(52538)
 57050  const {
 57051    forbiddenMethodsSet,
 57052    corsSafeListedMethodsSet,
 57053    referrerPolicy,
 57054    requestRedirect,
 57055    requestMode,
 57056    requestCredentials,
 57057    requestCache,
 57058    requestDuplex
 57059  } = __nccwpck_require__(41037)
 57060  const { kEnumerableProperty } = util
 57061  const { kHeaders, kSignal, kState, kGuard, kRealm } = __nccwpck_require__(15861)
 57062  const { webidl } = __nccwpck_require__(21744)
 57063  const { getGlobalOrigin } = __nccwpck_require__(71246)
 57064  const { URLSerializer } = __nccwpck_require__(685)
 57065  const { kHeadersList, kConstruct } = __nccwpck_require__(72785)
 57066  const assert = __nccwpck_require__(39491)
 57067  const { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = __nccwpck_require__(82361)
 57068  
 57069  let TransformStream = globalThis.TransformStream
 57070  
 57071  const kAbortController = Symbol('abortController')
 57072  
 57073  const requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {
 57074    signal.removeEventListener('abort', abort)
 57075  })
 57076  
 57077  // https://fetch.spec.whatwg.org/#request-class
 57078  class Request {
 57079    // https://fetch.spec.whatwg.org/#dom-request
 57080    constructor (input, init = {}) {
 57081      if (input === kConstruct) {
 57082        return
 57083      }
 57084  
 57085      webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' })
 57086  
 57087      input = webidl.converters.RequestInfo(input)
 57088      init = webidl.converters.RequestInit(init)
 57089  
 57090      // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object
 57091      this[kRealm] = {
 57092        settingsObject: {
 57093          baseUrl: getGlobalOrigin(),
 57094          get origin () {
 57095            return this.baseUrl?.origin
 57096          },
 57097          policyContainer: makePolicyContainer()
 57098        }
 57099      }
 57100  
 57101      // 1. Let request be null.
 57102      let request = null
 57103  
 57104      // 2. Let fallbackMode be null.
 57105      let fallbackMode = null
 57106  
 57107      // 3. Let baseURL be this’s relevant settings object’s API base URL.
 57108      const baseUrl = this[kRealm].settingsObject.baseUrl
 57109  
 57110      // 4. Let signal be null.
 57111      let signal = null
 57112  
 57113      // 5. If input is a string, then:
 57114      if (typeof input === 'string') {
 57115        // 1. Let parsedURL be the result of parsing input with baseURL.
 57116        // 2. If parsedURL is failure, then throw a TypeError.
 57117        let parsedURL
 57118        try {
 57119          parsedURL = new URL(input, baseUrl)
 57120        } catch (err) {
 57121          throw new TypeError('Failed to parse URL from ' + input, { cause: err })
 57122        }
 57123  
 57124        // 3. If parsedURL includes credentials, then throw a TypeError.
 57125        if (parsedURL.username || parsedURL.password) {
 57126          throw new TypeError(
 57127            'Request cannot be constructed from a URL that includes credentials: ' +
 57128              input
 57129          )
 57130        }
 57131  
 57132        // 4. Set request to a new request whose URL is parsedURL.
 57133        request = makeRequest({ urlList: [parsedURL] })
 57134  
 57135        // 5. Set fallbackMode to "cors".
 57136        fallbackMode = 'cors'
 57137      } else {
 57138        // 6. Otherwise:
 57139  
 57140        // 7. Assert: input is a Request object.
 57141        assert(input instanceof Request)
 57142  
 57143        // 8. Set request to input’s request.
 57144        request = input[kState]
 57145  
 57146        // 9. Set signal to input’s signal.
 57147        signal = input[kSignal]
 57148      }
 57149  
 57150      // 7. Let origin be this’s relevant settings object’s origin.
 57151      const origin = this[kRealm].settingsObject.origin
 57152  
 57153      // 8. Let window be "client".
 57154      let window = 'client'
 57155  
 57156      // 9. If request’s window is an environment settings object and its origin
 57157      // is same origin with origin, then set window to request’s window.
 57158      if (
 57159        request.window?.constructor?.name === 'EnvironmentSettingsObject' &&
 57160        sameOrigin(request.window, origin)
 57161      ) {
 57162        window = request.window
 57163      }
 57164  
 57165      // 10. If init["window"] exists and is non-null, then throw a TypeError.
 57166      if (init.window != null) {
 57167        throw new TypeError(`'window' option '${window}' must be null`)
 57168      }
 57169  
 57170      // 11. If init["window"] exists, then set window to "no-window".
 57171      if ('window' in init) {
 57172        window = 'no-window'
 57173      }
 57174  
 57175      // 12. Set request to a new request with the following properties:
 57176      request = makeRequest({
 57177        // URL request’s URL.
 57178        // undici implementation note: this is set as the first item in request's urlList in makeRequest
 57179        // method request’s method.
 57180        method: request.method,
 57181        // header list A copy of request’s header list.
 57182        // undici implementation note: headersList is cloned in makeRequest
 57183        headersList: request.headersList,
 57184        // unsafe-request flag Set.
 57185        unsafeRequest: request.unsafeRequest,
 57186        // client This’s relevant settings object.
 57187        client: this[kRealm].settingsObject,
 57188        // window window.
 57189        window,
 57190        // priority request’s priority.
 57191        priority: request.priority,
 57192        // origin request’s origin. The propagation of the origin is only significant for navigation requests
 57193        // being handled by a service worker. In this scenario a request can have an origin that is different
 57194        // from the current client.
 57195        origin: request.origin,
 57196        // referrer request’s referrer.
 57197        referrer: request.referrer,
 57198        // referrer policy request’s referrer policy.
 57199        referrerPolicy: request.referrerPolicy,
 57200        // mode request’s mode.
 57201        mode: request.mode,
 57202        // credentials mode request’s credentials mode.
 57203        credentials: request.credentials,
 57204        // cache mode request’s cache mode.
 57205        cache: request.cache,
 57206        // redirect mode request’s redirect mode.
 57207        redirect: request.redirect,
 57208        // integrity metadata request’s integrity metadata.
 57209        integrity: request.integrity,
 57210        // keepalive request’s keepalive.
 57211        keepalive: request.keepalive,
 57212        // reload-navigation flag request’s reload-navigation flag.
 57213        reloadNavigation: request.reloadNavigation,
 57214        // history-navigation flag request’s history-navigation flag.
 57215        historyNavigation: request.historyNavigation,
 57216        // URL list A clone of request’s URL list.
 57217        urlList: [...request.urlList]
 57218      })
 57219  
 57220      const initHasKey = Object.keys(init).length !== 0
 57221  
 57222      // 13. If init is not empty, then:
 57223      if (initHasKey) {
 57224        // 1. If request’s mode is "navigate", then set it to "same-origin".
 57225        if (request.mode === 'navigate') {
 57226          request.mode = 'same-origin'
 57227        }
 57228  
 57229        // 2. Unset request’s reload-navigation flag.
 57230        request.reloadNavigation = false
 57231  
 57232        // 3. Unset request’s history-navigation flag.
 57233        request.historyNavigation = false
 57234  
 57235        // 4. Set request’s origin to "client".
 57236        request.origin = 'client'
 57237  
 57238        // 5. Set request’s referrer to "client"
 57239        request.referrer = 'client'
 57240  
 57241        // 6. Set request’s referrer policy to the empty string.
 57242        request.referrerPolicy = ''
 57243  
 57244        // 7. Set request’s URL to request’s current URL.
 57245        request.url = request.urlList[request.urlList.length - 1]
 57246  
 57247        // 8. Set request’s URL list to « request’s URL ».
 57248        request.urlList = [request.url]
 57249      }
 57250  
 57251      // 14. If init["referrer"] exists, then:
 57252      if (init.referrer !== undefined) {
 57253        // 1. Let referrer be init["referrer"].
 57254        const referrer = init.referrer
 57255  
 57256        // 2. If referrer is the empty string, then set request’s referrer to "no-referrer".
 57257        if (referrer === '') {
 57258          request.referrer = 'no-referrer'
 57259        } else {
 57260          // 1. Let parsedReferrer be the result of parsing referrer with
 57261          // baseURL.
 57262          // 2. If parsedReferrer is failure, then throw a TypeError.
 57263          let parsedReferrer
 57264          try {
 57265            parsedReferrer = new URL(referrer, baseUrl)
 57266          } catch (err) {
 57267            throw new TypeError(`Referrer "${referrer}" is not a valid URL.`, { cause: err })
 57268          }
 57269  
 57270          // 3. If one of the following is true
 57271          // - parsedReferrer’s scheme is "about" and path is the string "client"
 57272          // - parsedReferrer’s origin is not same origin with origin
 57273          // then set request’s referrer to "client".
 57274          if (
 57275            (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') ||
 57276            (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl))
 57277          ) {
 57278            request.referrer = 'client'
 57279          } else {
 57280            // 4. Otherwise, set request’s referrer to parsedReferrer.
 57281            request.referrer = parsedReferrer
 57282          }
 57283        }
 57284      }
 57285  
 57286      // 15. If init["referrerPolicy"] exists, then set request’s referrer policy
 57287      // to it.
 57288      if (init.referrerPolicy !== undefined) {
 57289        request.referrerPolicy = init.referrerPolicy
 57290      }
 57291  
 57292      // 16. Let mode be init["mode"] if it exists, and fallbackMode otherwise.
 57293      let mode
 57294      if (init.mode !== undefined) {
 57295        mode = init.mode
 57296      } else {
 57297        mode = fallbackMode
 57298      }
 57299  
 57300      // 17. If mode is "navigate", then throw a TypeError.
 57301      if (mode === 'navigate') {
 57302        throw webidl.errors.exception({
 57303          header: 'Request constructor',
 57304          message: 'invalid request mode navigate.'
 57305        })
 57306      }
 57307  
 57308      // 18. If mode is non-null, set request’s mode to mode.
 57309      if (mode != null) {
 57310        request.mode = mode
 57311      }
 57312  
 57313      // 19. If init["credentials"] exists, then set request’s credentials mode
 57314      // to it.
 57315      if (init.credentials !== undefined) {
 57316        request.credentials = init.credentials
 57317      }
 57318  
 57319      // 18. If init["cache"] exists, then set request’s cache mode to it.
 57320      if (init.cache !== undefined) {
 57321        request.cache = init.cache
 57322      }
 57323  
 57324      // 21. If request’s cache mode is "only-if-cached" and request’s mode is
 57325      // not "same-origin", then throw a TypeError.
 57326      if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {
 57327        throw new TypeError(
 57328          "'only-if-cached' can be set only with 'same-origin' mode"
 57329        )
 57330      }
 57331  
 57332      // 22. If init["redirect"] exists, then set request’s redirect mode to it.
 57333      if (init.redirect !== undefined) {
 57334        request.redirect = init.redirect
 57335      }
 57336  
 57337      // 23. If init["integrity"] exists, then set request’s integrity metadata to it.
 57338      if (init.integrity != null) {
 57339        request.integrity = String(init.integrity)
 57340      }
 57341  
 57342      // 24. If init["keepalive"] exists, then set request’s keepalive to it.
 57343      if (init.keepalive !== undefined) {
 57344        request.keepalive = Boolean(init.keepalive)
 57345      }
 57346  
 57347      // 25. If init["method"] exists, then:
 57348      if (init.method !== undefined) {
 57349        // 1. Let method be init["method"].
 57350        let method = init.method
 57351  
 57352        // 2. If method is not a method or method is a forbidden method, then
 57353        // throw a TypeError.
 57354        if (!isValidHTTPToken(method)) {
 57355          throw new TypeError(`'${method}' is not a valid HTTP method.`)
 57356        }
 57357  
 57358        if (forbiddenMethodsSet.has(method.toUpperCase())) {
 57359          throw new TypeError(`'${method}' HTTP method is unsupported.`)
 57360        }
 57361  
 57362        // 3. Normalize method.
 57363        method = normalizeMethodRecord[method] ?? normalizeMethod(method)
 57364  
 57365        // 4. Set request’s method to method.
 57366        request.method = method
 57367      }
 57368  
 57369      // 26. If init["signal"] exists, then set signal to it.
 57370      if (init.signal !== undefined) {
 57371        signal = init.signal
 57372      }
 57373  
 57374      // 27. Set this’s request to request.
 57375      this[kState] = request
 57376  
 57377      // 28. Set this’s signal to a new AbortSignal object with this’s relevant
 57378      // Realm.
 57379      // TODO: could this be simplified with AbortSignal.any
 57380      // (https://dom.spec.whatwg.org/#dom-abortsignal-any)
 57381      const ac = new AbortController()
 57382      this[kSignal] = ac.signal
 57383      this[kSignal][kRealm] = this[kRealm]
 57384  
 57385      // 29. If signal is not null, then make this’s signal follow signal.
 57386      if (signal != null) {
 57387        if (
 57388          !signal ||
 57389          typeof signal.aborted !== 'boolean' ||
 57390          typeof signal.addEventListener !== 'function'
 57391        ) {
 57392          throw new TypeError(
 57393            "Failed to construct 'Request': member signal is not of type AbortSignal."
 57394          )
 57395        }
 57396  
 57397        if (signal.aborted) {
 57398          ac.abort(signal.reason)
 57399        } else {
 57400          // Keep a strong ref to ac while request object
 57401          // is alive. This is needed to prevent AbortController
 57402          // from being prematurely garbage collected.
 57403          // See, https://github.com/nodejs/undici/issues/1926.
 57404          this[kAbortController] = ac
 57405  
 57406          const acRef = new WeakRef(ac)
 57407          const abort = function () {
 57408            const ac = acRef.deref()
 57409            if (ac !== undefined) {
 57410              ac.abort(this.reason)
 57411            }
 57412          }
 57413  
 57414          // Third-party AbortControllers may not work with these.
 57415          // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619.
 57416          try {
 57417            // If the max amount of listeners is equal to the default, increase it
 57418            // This is only available in node >= v19.9.0
 57419            if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) {
 57420              setMaxListeners(100, signal)
 57421            } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) {
 57422              setMaxListeners(100, signal)
 57423            }
 57424          } catch {}
 57425  
 57426          util.addAbortListener(signal, abort)
 57427          requestFinalizer.register(ac, { signal, abort })
 57428        }
 57429      }
 57430  
 57431      // 30. Set this’s headers to a new Headers object with this’s relevant
 57432      // Realm, whose header list is request’s header list and guard is
 57433      // "request".
 57434      this[kHeaders] = new Headers(kConstruct)
 57435      this[kHeaders][kHeadersList] = request.headersList
 57436      this[kHeaders][kGuard] = 'request'
 57437      this[kHeaders][kRealm] = this[kRealm]
 57438  
 57439      // 31. If this’s request’s mode is "no-cors", then:
 57440      if (mode === 'no-cors') {
 57441        // 1. If this’s request’s method is not a CORS-safelisted method,
 57442        // then throw a TypeError.
 57443        if (!corsSafeListedMethodsSet.has(request.method)) {
 57444          throw new TypeError(
 57445            `'${request.method} is unsupported in no-cors mode.`
 57446          )
 57447        }
 57448  
 57449        // 2. Set this’s headers’s guard to "request-no-cors".
 57450        this[kHeaders][kGuard] = 'request-no-cors'
 57451      }
 57452  
 57453      // 32. If init is not empty, then:
 57454      if (initHasKey) {
 57455        /** @type {HeadersList} */
 57456        const headersList = this[kHeaders][kHeadersList]
 57457        // 1. Let headers be a copy of this’s headers and its associated header
 57458        // list.
 57459        // 2. If init["headers"] exists, then set headers to init["headers"].
 57460        const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)
 57461  
 57462        // 3. Empty this’s headers’s header list.
 57463        headersList.clear()
 57464  
 57465        // 4. If headers is a Headers object, then for each header in its header
 57466        // list, append header’s name/header’s value to this’s headers.
 57467        if (headers instanceof HeadersList) {
 57468          for (const [key, val] of headers) {
 57469            headersList.append(key, val)
 57470          }
 57471          // Note: Copy the `set-cookie` meta-data.
 57472          headersList.cookies = headers.cookies
 57473        } else {
 57474          // 5. Otherwise, fill this’s headers with headers.
 57475          fillHeaders(this[kHeaders], headers)
 57476        }
 57477      }
 57478  
 57479      // 33. Let inputBody be input’s request’s body if input is a Request
 57480      // object; otherwise null.
 57481      const inputBody = input instanceof Request ? input[kState].body : null
 57482  
 57483      // 34. If either init["body"] exists and is non-null or inputBody is
 57484      // non-null, and request’s method is `GET` or `HEAD`, then throw a
 57485      // TypeError.
 57486      if (
 57487        (init.body != null || inputBody != null) &&
 57488        (request.method === 'GET' || request.method === 'HEAD')
 57489      ) {
 57490        throw new TypeError('Request with GET/HEAD method cannot have body.')
 57491      }
 57492  
 57493      // 35. Let initBody be null.
 57494      let initBody = null
 57495  
 57496      // 36. If init["body"] exists and is non-null, then:
 57497      if (init.body != null) {
 57498        // 1. Let Content-Type be null.
 57499        // 2. Set initBody and Content-Type to the result of extracting
 57500        // init["body"], with keepalive set to request’s keepalive.
 57501        const [extractedBody, contentType] = extractBody(
 57502          init.body,
 57503          request.keepalive
 57504        )
 57505        initBody = extractedBody
 57506  
 57507        // 3, If Content-Type is non-null and this’s headers’s header list does
 57508        // not contain `Content-Type`, then append `Content-Type`/Content-Type to
 57509        // this’s headers.
 57510        if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) {
 57511          this[kHeaders].append('content-type', contentType)
 57512        }
 57513      }
 57514  
 57515      // 37. Let inputOrInitBody be initBody if it is non-null; otherwise
 57516      // inputBody.
 57517      const inputOrInitBody = initBody ?? inputBody
 57518  
 57519      // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is
 57520      // null, then:
 57521      if (inputOrInitBody != null && inputOrInitBody.source == null) {
 57522        // 1. If initBody is non-null and init["duplex"] does not exist,
 57523        //    then throw a TypeError.
 57524        if (initBody != null && init.duplex == null) {
 57525          throw new TypeError('RequestInit: duplex option is required when sending a body.')
 57526        }
 57527  
 57528        // 2. If this’s request’s mode is neither "same-origin" nor "cors",
 57529        // then throw a TypeError.
 57530        if (request.mode !== 'same-origin' && request.mode !== 'cors') {
 57531          throw new TypeError(
 57532            'If request is made from ReadableStream, mode should be "same-origin" or "cors"'
 57533          )
 57534        }
 57535  
 57536        // 3. Set this’s request’s use-CORS-preflight flag.
 57537        request.useCORSPreflightFlag = true
 57538      }
 57539  
 57540      // 39. Let finalBody be inputOrInitBody.
 57541      let finalBody = inputOrInitBody
 57542  
 57543      // 40. If initBody is null and inputBody is non-null, then:
 57544      if (initBody == null && inputBody != null) {
 57545        // 1. If input is unusable, then throw a TypeError.
 57546        if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) {
 57547          throw new TypeError(
 57548            'Cannot construct a Request with a Request object that has already been used.'
 57549          )
 57550        }
 57551  
 57552        // 2. Set finalBody to the result of creating a proxy for inputBody.
 57553        if (!TransformStream) {
 57554          TransformStream = (__nccwpck_require__(35356).TransformStream)
 57555        }
 57556  
 57557        // https://streams.spec.whatwg.org/#readablestream-create-a-proxy
 57558        const identityTransform = new TransformStream()
 57559        inputBody.stream.pipeThrough(identityTransform)
 57560        finalBody = {
 57561          source: inputBody.source,
 57562          length: inputBody.length,
 57563          stream: identityTransform.readable
 57564        }
 57565      }
 57566  
 57567      // 41. Set this’s request’s body to finalBody.
 57568      this[kState].body = finalBody
 57569    }
 57570  
 57571    // Returns request’s HTTP method, which is "GET" by default.
 57572    get method () {
 57573      webidl.brandCheck(this, Request)
 57574  
 57575      // The method getter steps are to return this’s request’s method.
 57576      return this[kState].method
 57577    }
 57578  
 57579    // Returns the URL of request as a string.
 57580    get url () {
 57581      webidl.brandCheck(this, Request)
 57582  
 57583      // The url getter steps are to return this’s request’s URL, serialized.
 57584      return URLSerializer(this[kState].url)
 57585    }
 57586  
 57587    // Returns a Headers object consisting of the headers associated with request.
 57588    // Note that headers added in the network layer by the user agent will not
 57589    // be accounted for in this object, e.g., the "Host" header.
 57590    get headers () {
 57591      webidl.brandCheck(this, Request)
 57592  
 57593      // The headers getter steps are to return this’s headers.
 57594      return this[kHeaders]
 57595    }
 57596  
 57597    // Returns the kind of resource requested by request, e.g., "document"
 57598    // or "script".
 57599    get destination () {
 57600      webidl.brandCheck(this, Request)
 57601  
 57602      // The destination getter are to return this’s request’s destination.
 57603      return this[kState].destination
 57604    }
 57605  
 57606    // Returns the referrer of request. Its value can be a same-origin URL if
 57607    // explicitly set in init, the empty string to indicate no referrer, and
 57608    // "about:client" when defaulting to the global’s default. This is used
 57609    // during fetching to determine the value of the `Referer` header of the
 57610    // request being made.
 57611    get referrer () {
 57612      webidl.brandCheck(this, Request)
 57613  
 57614      // 1. If this’s request’s referrer is "no-referrer", then return the
 57615      // empty string.
 57616      if (this[kState].referrer === 'no-referrer') {
 57617        return ''
 57618      }
 57619  
 57620      // 2. If this’s request’s referrer is "client", then return
 57621      // "about:client".
 57622      if (this[kState].referrer === 'client') {
 57623        return 'about:client'
 57624      }
 57625  
 57626      // Return this’s request’s referrer, serialized.
 57627      return this[kState].referrer.toString()
 57628    }
 57629  
 57630    // Returns the referrer policy associated with request.
 57631    // This is used during fetching to compute the value of the request’s
 57632    // referrer.
 57633    get referrerPolicy () {
 57634      webidl.brandCheck(this, Request)
 57635  
 57636      // The referrerPolicy getter steps are to return this’s request’s referrer policy.
 57637      return this[kState].referrerPolicy
 57638    }
 57639  
 57640    // Returns the mode associated with request, which is a string indicating
 57641    // whether the request will use CORS, or will be restricted to same-origin
 57642    // URLs.
 57643    get mode () {
 57644      webidl.brandCheck(this, Request)
 57645  
 57646      // The mode getter steps are to return this’s request’s mode.
 57647      return this[kState].mode
 57648    }
 57649  
 57650    // Returns the credentials mode associated with request,
 57651    // which is a string indicating whether credentials will be sent with the
 57652    // request always, never, or only when sent to a same-origin URL.
 57653    get credentials () {
 57654      // The credentials getter steps are to return this’s request’s credentials mode.
 57655      return this[kState].credentials
 57656    }
 57657  
 57658    // Returns the cache mode associated with request,
 57659    // which is a string indicating how the request will
 57660    // interact with the browser’s cache when fetching.
 57661    get cache () {
 57662      webidl.brandCheck(this, Request)
 57663  
 57664      // The cache getter steps are to return this’s request’s cache mode.
 57665      return this[kState].cache
 57666    }
 57667  
 57668    // Returns the redirect mode associated with request,
 57669    // which is a string indicating how redirects for the
 57670    // request will be handled during fetching. A request
 57671    // will follow redirects by default.
 57672    get redirect () {
 57673      webidl.brandCheck(this, Request)
 57674  
 57675      // The redirect getter steps are to return this’s request’s redirect mode.
 57676      return this[kState].redirect
 57677    }
 57678  
 57679    // Returns request’s subresource integrity metadata, which is a
 57680    // cryptographic hash of the resource being fetched. Its value
 57681    // consists of multiple hashes separated by whitespace. [SRI]
 57682    get integrity () {
 57683      webidl.brandCheck(this, Request)
 57684  
 57685      // The integrity getter steps are to return this’s request’s integrity
 57686      // metadata.
 57687      return this[kState].integrity
 57688    }
 57689  
 57690    // Returns a boolean indicating whether or not request can outlive the
 57691    // global in which it was created.
 57692    get keepalive () {
 57693      webidl.brandCheck(this, Request)
 57694  
 57695      // The keepalive getter steps are to return this’s request’s keepalive.
 57696      return this[kState].keepalive
 57697    }
 57698  
 57699    // Returns a boolean indicating whether or not request is for a reload
 57700    // navigation.
 57701    get isReloadNavigation () {
 57702      webidl.brandCheck(this, Request)
 57703  
 57704      // The isReloadNavigation getter steps are to return true if this’s
 57705      // request’s reload-navigation flag is set; otherwise false.
 57706      return this[kState].reloadNavigation
 57707    }
 57708  
 57709    // Returns a boolean indicating whether or not request is for a history
 57710    // navigation (a.k.a. back-foward navigation).
 57711    get isHistoryNavigation () {
 57712      webidl.brandCheck(this, Request)
 57713  
 57714      // The isHistoryNavigation getter steps are to return true if this’s request’s
 57715      // history-navigation flag is set; otherwise false.
 57716      return this[kState].historyNavigation
 57717    }
 57718  
 57719    // Returns the signal associated with request, which is an AbortSignal
 57720    // object indicating whether or not request has been aborted, and its
 57721    // abort event handler.
 57722    get signal () {
 57723      webidl.brandCheck(this, Request)
 57724  
 57725      // The signal getter steps are to return this’s signal.
 57726      return this[kSignal]
 57727    }
 57728  
 57729    get body () {
 57730      webidl.brandCheck(this, Request)
 57731  
 57732      return this[kState].body ? this[kState].body.stream : null
 57733    }
 57734  
 57735    get bodyUsed () {
 57736      webidl.brandCheck(this, Request)
 57737  
 57738      return !!this[kState].body && util.isDisturbed(this[kState].body.stream)
 57739    }
 57740  
 57741    get duplex () {
 57742      webidl.brandCheck(this, Request)
 57743  
 57744      return 'half'
 57745    }
 57746  
 57747    // Returns a clone of request.
 57748    clone () {
 57749      webidl.brandCheck(this, Request)
 57750  
 57751      // 1. If this is unusable, then throw a TypeError.
 57752      if (this.bodyUsed || this.body?.locked) {
 57753        throw new TypeError('unusable')
 57754      }
 57755  
 57756      // 2. Let clonedRequest be the result of cloning this’s request.
 57757      const clonedRequest = cloneRequest(this[kState])
 57758  
 57759      // 3. Let clonedRequestObject be the result of creating a Request object,
 57760      // given clonedRequest, this’s headers’s guard, and this’s relevant Realm.
 57761      const clonedRequestObject = new Request(kConstruct)
 57762      clonedRequestObject[kState] = clonedRequest
 57763      clonedRequestObject[kRealm] = this[kRealm]
 57764      clonedRequestObject[kHeaders] = new Headers(kConstruct)
 57765      clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList
 57766      clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]
 57767      clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]
 57768  
 57769      // 4. Make clonedRequestObject’s signal follow this’s signal.
 57770      const ac = new AbortController()
 57771      if (this.signal.aborted) {
 57772        ac.abort(this.signal.reason)
 57773      } else {
 57774        util.addAbortListener(
 57775          this.signal,
 57776          () => {
 57777            ac.abort(this.signal.reason)
 57778          }
 57779        )
 57780      }
 57781      clonedRequestObject[kSignal] = ac.signal
 57782  
 57783      // 4. Return clonedRequestObject.
 57784      return clonedRequestObject
 57785    }
 57786  }
 57787  
 57788  mixinBody(Request)
 57789  
 57790  function makeRequest (init) {
 57791    // https://fetch.spec.whatwg.org/#requests
 57792    const request = {
 57793      method: 'GET',
 57794      localURLsOnly: false,
 57795      unsafeRequest: false,
 57796      body: null,
 57797      client: null,
 57798      reservedClient: null,
 57799      replacesClientId: '',
 57800      window: 'client',
 57801      keepalive: false,
 57802      serviceWorkers: 'all',
 57803      initiator: '',
 57804      destination: '',
 57805      priority: null,
 57806      origin: 'client',
 57807      policyContainer: 'client',
 57808      referrer: 'client',
 57809      referrerPolicy: '',
 57810      mode: 'no-cors',
 57811      useCORSPreflightFlag: false,
 57812      credentials: 'same-origin',
 57813      useCredentials: false,
 57814      cache: 'default',
 57815      redirect: 'follow',
 57816      integrity: '',
 57817      cryptoGraphicsNonceMetadata: '',
 57818      parserMetadata: '',
 57819      reloadNavigation: false,
 57820      historyNavigation: false,
 57821      userActivation: false,
 57822      taintedOrigin: false,
 57823      redirectCount: 0,
 57824      responseTainting: 'basic',
 57825      preventNoCacheCacheControlHeaderModification: false,
 57826      done: false,
 57827      timingAllowFailed: false,
 57828      ...init,
 57829      headersList: init.headersList
 57830        ? new HeadersList(init.headersList)
 57831        : new HeadersList()
 57832    }
 57833    request.url = request.urlList[0]
 57834    return request
 57835  }
 57836  
 57837  // https://fetch.spec.whatwg.org/#concept-request-clone
 57838  function cloneRequest (request) {
 57839    // To clone a request request, run these steps:
 57840  
 57841    // 1. Let newRequest be a copy of request, except for its body.
 57842    const newRequest = makeRequest({ ...request, body: null })
 57843  
 57844    // 2. If request’s body is non-null, set newRequest’s body to the
 57845    // result of cloning request’s body.
 57846    if (request.body != null) {
 57847      newRequest.body = cloneBody(request.body)
 57848    }
 57849  
 57850    // 3. Return newRequest.
 57851    return newRequest
 57852  }
 57853  
 57854  Object.defineProperties(Request.prototype, {
 57855    method: kEnumerableProperty,
 57856    url: kEnumerableProperty,
 57857    headers: kEnumerableProperty,
 57858    redirect: kEnumerableProperty,
 57859    clone: kEnumerableProperty,
 57860    signal: kEnumerableProperty,
 57861    duplex: kEnumerableProperty,
 57862    destination: kEnumerableProperty,
 57863    body: kEnumerableProperty,
 57864    bodyUsed: kEnumerableProperty,
 57865    isHistoryNavigation: kEnumerableProperty,
 57866    isReloadNavigation: kEnumerableProperty,
 57867    keepalive: kEnumerableProperty,
 57868    integrity: kEnumerableProperty,
 57869    cache: kEnumerableProperty,
 57870    credentials: kEnumerableProperty,
 57871    attribute: kEnumerableProperty,
 57872    referrerPolicy: kEnumerableProperty,
 57873    referrer: kEnumerableProperty,
 57874    mode: kEnumerableProperty,
 57875    [Symbol.toStringTag]: {
 57876      value: 'Request',
 57877      configurable: true
 57878    }
 57879  })
 57880  
 57881  webidl.converters.Request = webidl.interfaceConverter(
 57882    Request
 57883  )
 57884  
 57885  // https://fetch.spec.whatwg.org/#requestinfo
 57886  webidl.converters.RequestInfo = function (V) {
 57887    if (typeof V === 'string') {
 57888      return webidl.converters.USVString(V)
 57889    }
 57890  
 57891    if (V instanceof Request) {
 57892      return webidl.converters.Request(V)
 57893    }
 57894  
 57895    return webidl.converters.USVString(V)
 57896  }
 57897  
 57898  webidl.converters.AbortSignal = webidl.interfaceConverter(
 57899    AbortSignal
 57900  )
 57901  
 57902  // https://fetch.spec.whatwg.org/#requestinit
 57903  webidl.converters.RequestInit = webidl.dictionaryConverter([
 57904    {
 57905      key: 'method',
 57906      converter: webidl.converters.ByteString
 57907    },
 57908    {
 57909      key: 'headers',
 57910      converter: webidl.converters.HeadersInit
 57911    },
 57912    {
 57913      key: 'body',
 57914      converter: webidl.nullableConverter(
 57915        webidl.converters.BodyInit
 57916      )
 57917    },
 57918    {
 57919      key: 'referrer',
 57920      converter: webidl.converters.USVString
 57921    },
 57922    {
 57923      key: 'referrerPolicy',
 57924      converter: webidl.converters.DOMString,
 57925      // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy
 57926      allowedValues: referrerPolicy
 57927    },
 57928    {
 57929      key: 'mode',
 57930      converter: webidl.converters.DOMString,
 57931      // https://fetch.spec.whatwg.org/#concept-request-mode
 57932      allowedValues: requestMode
 57933    },
 57934    {
 57935      key: 'credentials',
 57936      converter: webidl.converters.DOMString,
 57937      // https://fetch.spec.whatwg.org/#requestcredentials
 57938      allowedValues: requestCredentials
 57939    },
 57940    {
 57941      key: 'cache',
 57942      converter: webidl.converters.DOMString,
 57943      // https://fetch.spec.whatwg.org/#requestcache
 57944      allowedValues: requestCache
 57945    },
 57946    {
 57947      key: 'redirect',
 57948      converter: webidl.converters.DOMString,
 57949      // https://fetch.spec.whatwg.org/#requestredirect
 57950      allowedValues: requestRedirect
 57951    },
 57952    {
 57953      key: 'integrity',
 57954      converter: webidl.converters.DOMString
 57955    },
 57956    {
 57957      key: 'keepalive',
 57958      converter: webidl.converters.boolean
 57959    },
 57960    {
 57961      key: 'signal',
 57962      converter: webidl.nullableConverter(
 57963        (signal) => webidl.converters.AbortSignal(
 57964          signal,
 57965          { strict: false }
 57966        )
 57967      )
 57968    },
 57969    {
 57970      key: 'window',
 57971      converter: webidl.converters.any
 57972    },
 57973    {
 57974      key: 'duplex',
 57975      converter: webidl.converters.DOMString,
 57976      allowedValues: requestDuplex
 57977    }
 57978  ])
 57979  
 57980  module.exports = { Request, makeRequest }
 57981  
 57982  
 57983  /***/ }),
 57984  
 57985  /***/ 27823:
 57986  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 57987  
 57988  "use strict";
 57989  
 57990  
 57991  const { Headers, HeadersList, fill } = __nccwpck_require__(10554)
 57992  const { extractBody, cloneBody, mixinBody } = __nccwpck_require__(41472)
 57993  const util = __nccwpck_require__(83983)
 57994  const { kEnumerableProperty } = util
 57995  const {
 57996    isValidReasonPhrase,
 57997    isCancelled,
 57998    isAborted,
 57999    isBlobLike,
 58000    serializeJavascriptValueToJSONString,
 58001    isErrorLike,
 58002    isomorphicEncode
 58003  } = __nccwpck_require__(52538)
 58004  const {
 58005    redirectStatusSet,
 58006    nullBodyStatus,
 58007    DOMException
 58008  } = __nccwpck_require__(41037)
 58009  const { kState, kHeaders, kGuard, kRealm } = __nccwpck_require__(15861)
 58010  const { webidl } = __nccwpck_require__(21744)
 58011  const { FormData } = __nccwpck_require__(72015)
 58012  const { getGlobalOrigin } = __nccwpck_require__(71246)
 58013  const { URLSerializer } = __nccwpck_require__(685)
 58014  const { kHeadersList, kConstruct } = __nccwpck_require__(72785)
 58015  const assert = __nccwpck_require__(39491)
 58016  const { types } = __nccwpck_require__(73837)
 58017  
 58018  const ReadableStream = globalThis.ReadableStream || (__nccwpck_require__(35356).ReadableStream)
 58019  const textEncoder = new TextEncoder('utf-8')
 58020  
 58021  // https://fetch.spec.whatwg.org/#response-class
 58022  class Response {
 58023    // Creates network error Response.
 58024    static error () {
 58025      // TODO
 58026      const relevantRealm = { settingsObject: {} }
 58027  
 58028      // The static error() method steps are to return the result of creating a
 58029      // Response object, given a new network error, "immutable", and this’s
 58030      // relevant Realm.
 58031      const responseObject = new Response()
 58032      responseObject[kState] = makeNetworkError()
 58033      responseObject[kRealm] = relevantRealm
 58034      responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList
 58035      responseObject[kHeaders][kGuard] = 'immutable'
 58036      responseObject[kHeaders][kRealm] = relevantRealm
 58037      return responseObject
 58038    }
 58039  
 58040    // https://fetch.spec.whatwg.org/#dom-response-json
 58041    static json (data, init = {}) {
 58042      webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' })
 58043  
 58044      if (init !== null) {
 58045        init = webidl.converters.ResponseInit(init)
 58046      }
 58047  
 58048      // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.
 58049      const bytes = textEncoder.encode(
 58050        serializeJavascriptValueToJSONString(data)
 58051      )
 58052  
 58053      // 2. Let body be the result of extracting bytes.
 58054      const body = extractBody(bytes)
 58055  
 58056      // 3. Let responseObject be the result of creating a Response object, given a new response,
 58057      //    "response", and this’s relevant Realm.
 58058      const relevantRealm = { settingsObject: {} }
 58059      const responseObject = new Response()
 58060      responseObject[kRealm] = relevantRealm
 58061      responseObject[kHeaders][kGuard] = 'response'
 58062      responseObject[kHeaders][kRealm] = relevantRealm
 58063  
 58064      // 4. Perform initialize a response given responseObject, init, and (body, "application/json").
 58065      initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })
 58066  
 58067      // 5. Return responseObject.
 58068      return responseObject
 58069    }
 58070  
 58071    // Creates a redirect Response that redirects to url with status status.
 58072    static redirect (url, status = 302) {
 58073      const relevantRealm = { settingsObject: {} }
 58074  
 58075      webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' })
 58076  
 58077      url = webidl.converters.USVString(url)
 58078      status = webidl.converters['unsigned short'](status)
 58079  
 58080      // 1. Let parsedURL be the result of parsing url with current settings
 58081      // object’s API base URL.
 58082      // 2. If parsedURL is failure, then throw a TypeError.
 58083      // TODO: base-URL?
 58084      let parsedURL
 58085      try {
 58086        parsedURL = new URL(url, getGlobalOrigin())
 58087      } catch (err) {
 58088        throw Object.assign(new TypeError('Failed to parse URL from ' + url), {
 58089          cause: err
 58090        })
 58091      }
 58092  
 58093      // 3. If status is not a redirect status, then throw a RangeError.
 58094      if (!redirectStatusSet.has(status)) {
 58095        throw new RangeError('Invalid status code ' + status)
 58096      }
 58097  
 58098      // 4. Let responseObject be the result of creating a Response object,
 58099      // given a new response, "immutable", and this’s relevant Realm.
 58100      const responseObject = new Response()
 58101      responseObject[kRealm] = relevantRealm
 58102      responseObject[kHeaders][kGuard] = 'immutable'
 58103      responseObject[kHeaders][kRealm] = relevantRealm
 58104  
 58105      // 5. Set responseObject’s response’s status to status.
 58106      responseObject[kState].status = status
 58107  
 58108      // 6. Let value be parsedURL, serialized and isomorphic encoded.
 58109      const value = isomorphicEncode(URLSerializer(parsedURL))
 58110  
 58111      // 7. Append `Location`/value to responseObject’s response’s header list.
 58112      responseObject[kState].headersList.append('location', value)
 58113  
 58114      // 8. Return responseObject.
 58115      return responseObject
 58116    }
 58117  
 58118    // https://fetch.spec.whatwg.org/#dom-response
 58119    constructor (body = null, init = {}) {
 58120      if (body !== null) {
 58121        body = webidl.converters.BodyInit(body)
 58122      }
 58123  
 58124      init = webidl.converters.ResponseInit(init)
 58125  
 58126      // TODO
 58127      this[kRealm] = { settingsObject: {} }
 58128  
 58129      // 1. Set this’s response to a new response.
 58130      this[kState] = makeResponse({})
 58131  
 58132      // 2. Set this’s headers to a new Headers object with this’s relevant
 58133      // Realm, whose header list is this’s response’s header list and guard
 58134      // is "response".
 58135      this[kHeaders] = new Headers(kConstruct)
 58136      this[kHeaders][kGuard] = 'response'
 58137      this[kHeaders][kHeadersList] = this[kState].headersList
 58138      this[kHeaders][kRealm] = this[kRealm]
 58139  
 58140      // 3. Let bodyWithType be null.
 58141      let bodyWithType = null
 58142  
 58143      // 4. If body is non-null, then set bodyWithType to the result of extracting body.
 58144      if (body != null) {
 58145        const [extractedBody, type] = extractBody(body)
 58146        bodyWithType = { body: extractedBody, type }
 58147      }
 58148  
 58149      // 5. Perform initialize a response given this, init, and bodyWithType.
 58150      initializeResponse(this, init, bodyWithType)
 58151    }
 58152  
 58153    // Returns response’s type, e.g., "cors".
 58154    get type () {
 58155      webidl.brandCheck(this, Response)
 58156  
 58157      // The type getter steps are to return this’s response’s type.
 58158      return this[kState].type
 58159    }
 58160  
 58161    // Returns response’s URL, if it has one; otherwise the empty string.
 58162    get url () {
 58163      webidl.brandCheck(this, Response)
 58164  
 58165      const urlList = this[kState].urlList
 58166  
 58167      // The url getter steps are to return the empty string if this’s
 58168      // response’s URL is null; otherwise this’s response’s URL,
 58169      // serialized with exclude fragment set to true.
 58170      const url = urlList[urlList.length - 1] ?? null
 58171  
 58172      if (url === null) {
 58173        return ''
 58174      }
 58175  
 58176      return URLSerializer(url, true)
 58177    }
 58178  
 58179    // Returns whether response was obtained through a redirect.
 58180    get redirected () {
 58181      webidl.brandCheck(this, Response)
 58182  
 58183      // The redirected getter steps are to return true if this’s response’s URL
 58184      // list has more than one item; otherwise false.
 58185      return this[kState].urlList.length > 1
 58186    }
 58187  
 58188    // Returns response’s status.
 58189    get status () {
 58190      webidl.brandCheck(this, Response)
 58191  
 58192      // The status getter steps are to return this’s response’s status.
 58193      return this[kState].status
 58194    }
 58195  
 58196    // Returns whether response’s status is an ok status.
 58197    get ok () {
 58198      webidl.brandCheck(this, Response)
 58199  
 58200      // The ok getter steps are to return true if this’s response’s status is an
 58201      // ok status; otherwise false.
 58202      return this[kState].status >= 200 && this[kState].status <= 299
 58203    }
 58204  
 58205    // Returns response’s status message.
 58206    get statusText () {
 58207      webidl.brandCheck(this, Response)
 58208  
 58209      // The statusText getter steps are to return this’s response’s status
 58210      // message.
 58211      return this[kState].statusText
 58212    }
 58213  
 58214    // Returns response’s headers as Headers.
 58215    get headers () {
 58216      webidl.brandCheck(this, Response)
 58217  
 58218      // The headers getter steps are to return this’s headers.
 58219      return this[kHeaders]
 58220    }
 58221  
 58222    get body () {
 58223      webidl.brandCheck(this, Response)
 58224  
 58225      return this[kState].body ? this[kState].body.stream : null
 58226    }
 58227  
 58228    get bodyUsed () {
 58229      webidl.brandCheck(this, Response)
 58230  
 58231      return !!this[kState].body && util.isDisturbed(this[kState].body.stream)
 58232    }
 58233  
 58234    // Returns a clone of response.
 58235    clone () {
 58236      webidl.brandCheck(this, Response)
 58237  
 58238      // 1. If this is unusable, then throw a TypeError.
 58239      if (this.bodyUsed || (this.body && this.body.locked)) {
 58240        throw webidl.errors.exception({
 58241          header: 'Response.clone',
 58242          message: 'Body has already been consumed.'
 58243        })
 58244      }
 58245  
 58246      // 2. Let clonedResponse be the result of cloning this’s response.
 58247      const clonedResponse = cloneResponse(this[kState])
 58248  
 58249      // 3. Return the result of creating a Response object, given
 58250      // clonedResponse, this’s headers’s guard, and this’s relevant Realm.
 58251      const clonedResponseObject = new Response()
 58252      clonedResponseObject[kState] = clonedResponse
 58253      clonedResponseObject[kRealm] = this[kRealm]
 58254      clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList
 58255      clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]
 58256      clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]
 58257  
 58258      return clonedResponseObject
 58259    }
 58260  }
 58261  
 58262  mixinBody(Response)
 58263  
 58264  Object.defineProperties(Response.prototype, {
 58265    type: kEnumerableProperty,
 58266    url: kEnumerableProperty,
 58267    status: kEnumerableProperty,
 58268    ok: kEnumerableProperty,
 58269    redirected: kEnumerableProperty,
 58270    statusText: kEnumerableProperty,
 58271    headers: kEnumerableProperty,
 58272    clone: kEnumerableProperty,
 58273    body: kEnumerableProperty,
 58274    bodyUsed: kEnumerableProperty,
 58275    [Symbol.toStringTag]: {
 58276      value: 'Response',
 58277      configurable: true
 58278    }
 58279  })
 58280  
 58281  Object.defineProperties(Response, {
 58282    json: kEnumerableProperty,
 58283    redirect: kEnumerableProperty,
 58284    error: kEnumerableProperty
 58285  })
 58286  
 58287  // https://fetch.spec.whatwg.org/#concept-response-clone
 58288  function cloneResponse (response) {
 58289    // To clone a response response, run these steps:
 58290  
 58291    // 1. If response is a filtered response, then return a new identical
 58292    // filtered response whose internal response is a clone of response’s
 58293    // internal response.
 58294    if (response.internalResponse) {
 58295      return filterResponse(
 58296        cloneResponse(response.internalResponse),
 58297        response.type
 58298      )
 58299    }
 58300  
 58301    // 2. Let newResponse be a copy of response, except for its body.
 58302    const newResponse = makeResponse({ ...response, body: null })
 58303  
 58304    // 3. If response’s body is non-null, then set newResponse’s body to the
 58305    // result of cloning response’s body.
 58306    if (response.body != null) {
 58307      newResponse.body = cloneBody(response.body)
 58308    }
 58309  
 58310    // 4. Return newResponse.
 58311    return newResponse
 58312  }
 58313  
 58314  function makeResponse (init) {
 58315    return {
 58316      aborted: false,
 58317      rangeRequested: false,
 58318      timingAllowPassed: false,
 58319      requestIncludesCredentials: false,
 58320      type: 'default',
 58321      status: 200,
 58322      timingInfo: null,
 58323      cacheState: '',
 58324      statusText: '',
 58325      ...init,
 58326      headersList: init.headersList
 58327        ? new HeadersList(init.headersList)
 58328        : new HeadersList(),
 58329      urlList: init.urlList ? [...init.urlList] : []
 58330    }
 58331  }
 58332  
 58333  function makeNetworkError (reason) {
 58334    const isError = isErrorLike(reason)
 58335    return makeResponse({
 58336      type: 'error',
 58337      status: 0,
 58338      error: isError
 58339        ? reason
 58340        : new Error(reason ? String(reason) : reason),
 58341      aborted: reason && reason.name === 'AbortError'
 58342    })
 58343  }
 58344  
 58345  function makeFilteredResponse (response, state) {
 58346    state = {
 58347      internalResponse: response,
 58348      ...state
 58349    }
 58350  
 58351    return new Proxy(response, {
 58352      get (target, p) {
 58353        return p in state ? state[p] : target[p]
 58354      },
 58355      set (target, p, value) {
 58356        assert(!(p in state))
 58357        target[p] = value
 58358        return true
 58359      }
 58360    })
 58361  }
 58362  
 58363  // https://fetch.spec.whatwg.org/#concept-filtered-response
 58364  function filterResponse (response, type) {
 58365    // Set response to the following filtered response with response as its
 58366    // internal response, depending on request’s response tainting:
 58367    if (type === 'basic') {
 58368      // A basic filtered response is a filtered response whose type is "basic"
 58369      // and header list excludes any headers in internal response’s header list
 58370      // whose name is a forbidden response-header name.
 58371  
 58372      // Note: undici does not implement forbidden response-header names
 58373      return makeFilteredResponse(response, {
 58374        type: 'basic',
 58375        headersList: response.headersList
 58376      })
 58377    } else if (type === 'cors') {
 58378      // A CORS filtered response is a filtered response whose type is "cors"
 58379      // and header list excludes any headers in internal response’s header
 58380      // list whose name is not a CORS-safelisted response-header name, given
 58381      // internal response’s CORS-exposed header-name list.
 58382  
 58383      // Note: undici does not implement CORS-safelisted response-header names
 58384      return makeFilteredResponse(response, {
 58385        type: 'cors',
 58386        headersList: response.headersList
 58387      })
 58388    } else if (type === 'opaque') {
 58389      // An opaque filtered response is a filtered response whose type is
 58390      // "opaque", URL list is the empty list, status is 0, status message
 58391      // is the empty byte sequence, header list is empty, and body is null.
 58392  
 58393      return makeFilteredResponse(response, {
 58394        type: 'opaque',
 58395        urlList: Object.freeze([]),
 58396        status: 0,
 58397        statusText: '',
 58398        body: null
 58399      })
 58400    } else if (type === 'opaqueredirect') {
 58401      // An opaque-redirect filtered response is a filtered response whose type
 58402      // is "opaqueredirect", status is 0, status message is the empty byte
 58403      // sequence, header list is empty, and body is null.
 58404  
 58405      return makeFilteredResponse(response, {
 58406        type: 'opaqueredirect',
 58407        status: 0,
 58408        statusText: '',
 58409        headersList: [],
 58410        body: null
 58411      })
 58412    } else {
 58413      assert(false)
 58414    }
 58415  }
 58416  
 58417  // https://fetch.spec.whatwg.org/#appropriate-network-error
 58418  function makeAppropriateNetworkError (fetchParams, err = null) {
 58419    // 1. Assert: fetchParams is canceled.
 58420    assert(isCancelled(fetchParams))
 58421  
 58422    // 2. Return an aborted network error if fetchParams is aborted;
 58423    // otherwise return a network error.
 58424    return isAborted(fetchParams)
 58425      ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err }))
 58426      : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err }))
 58427  }
 58428  
 58429  // https://whatpr.org/fetch/1392.html#initialize-a-response
 58430  function initializeResponse (response, init, body) {
 58431    // 1. If init["status"] is not in the range 200 to 599, inclusive, then
 58432    //    throw a RangeError.
 58433    if (init.status !== null && (init.status < 200 || init.status > 599)) {
 58434      throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.')
 58435    }
 58436  
 58437    // 2. If init["statusText"] does not match the reason-phrase token production,
 58438    //    then throw a TypeError.
 58439    if ('statusText' in init && init.statusText != null) {
 58440      // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2:
 58441      //   reason-phrase  = *( HTAB / SP / VCHAR / obs-text )
 58442      if (!isValidReasonPhrase(String(init.statusText))) {
 58443        throw new TypeError('Invalid statusText')
 58444      }
 58445    }
 58446  
 58447    // 3. Set response’s response’s status to init["status"].
 58448    if ('status' in init && init.status != null) {
 58449      response[kState].status = init.status
 58450    }
 58451  
 58452    // 4. Set response’s response’s status message to init["statusText"].
 58453    if ('statusText' in init && init.statusText != null) {
 58454      response[kState].statusText = init.statusText
 58455    }
 58456  
 58457    // 5. If init["headers"] exists, then fill response’s headers with init["headers"].
 58458    if ('headers' in init && init.headers != null) {
 58459      fill(response[kHeaders], init.headers)
 58460    }
 58461  
 58462    // 6. If body was given, then:
 58463    if (body) {
 58464      // 1. If response's status is a null body status, then throw a TypeError.
 58465      if (nullBodyStatus.includes(response.status)) {
 58466        throw webidl.errors.exception({
 58467          header: 'Response constructor',
 58468          message: 'Invalid response status code ' + response.status
 58469        })
 58470      }
 58471  
 58472      // 2. Set response's body to body's body.
 58473      response[kState].body = body.body
 58474  
 58475      // 3. If body's type is non-null and response's header list does not contain
 58476      //    `Content-Type`, then append (`Content-Type`, body's type) to response's header list.
 58477      if (body.type != null && !response[kState].headersList.contains('Content-Type')) {
 58478        response[kState].headersList.append('content-type', body.type)
 58479      }
 58480    }
 58481  }
 58482  
 58483  webidl.converters.ReadableStream = webidl.interfaceConverter(
 58484    ReadableStream
 58485  )
 58486  
 58487  webidl.converters.FormData = webidl.interfaceConverter(
 58488    FormData
 58489  )
 58490  
 58491  webidl.converters.URLSearchParams = webidl.interfaceConverter(
 58492    URLSearchParams
 58493  )
 58494  
 58495  // https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit
 58496  webidl.converters.XMLHttpRequestBodyInit = function (V) {
 58497    if (typeof V === 'string') {
 58498      return webidl.converters.USVString(V)
 58499    }
 58500  
 58501    if (isBlobLike(V)) {
 58502      return webidl.converters.Blob(V, { strict: false })
 58503    }
 58504  
 58505    if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) {
 58506      return webidl.converters.BufferSource(V)
 58507    }
 58508  
 58509    if (util.isFormDataLike(V)) {
 58510      return webidl.converters.FormData(V, { strict: false })
 58511    }
 58512  
 58513    if (V instanceof URLSearchParams) {
 58514      return webidl.converters.URLSearchParams(V)
 58515    }
 58516  
 58517    return webidl.converters.DOMString(V)
 58518  }
 58519  
 58520  // https://fetch.spec.whatwg.org/#bodyinit
 58521  webidl.converters.BodyInit = function (V) {
 58522    if (V instanceof ReadableStream) {
 58523      return webidl.converters.ReadableStream(V)
 58524    }
 58525  
 58526    // Note: the spec doesn't include async iterables,
 58527    // this is an undici extension.
 58528    if (V?.[Symbol.asyncIterator]) {
 58529      return V
 58530    }
 58531  
 58532    return webidl.converters.XMLHttpRequestBodyInit(V)
 58533  }
 58534  
 58535  webidl.converters.ResponseInit = webidl.dictionaryConverter([
 58536    {
 58537      key: 'status',
 58538      converter: webidl.converters['unsigned short'],
 58539      defaultValue: 200
 58540    },
 58541    {
 58542      key: 'statusText',
 58543      converter: webidl.converters.ByteString,
 58544      defaultValue: ''
 58545    },
 58546    {
 58547      key: 'headers',
 58548      converter: webidl.converters.HeadersInit
 58549    }
 58550  ])
 58551  
 58552  module.exports = {
 58553    makeNetworkError,
 58554    makeResponse,
 58555    makeAppropriateNetworkError,
 58556    filterResponse,
 58557    Response,
 58558    cloneResponse
 58559  }
 58560  
 58561  
 58562  /***/ }),
 58563  
 58564  /***/ 15861:
 58565  /***/ ((module) => {
 58566  
 58567  "use strict";
 58568  
 58569  
 58570  module.exports = {
 58571    kUrl: Symbol('url'),
 58572    kHeaders: Symbol('headers'),
 58573    kSignal: Symbol('signal'),
 58574    kState: Symbol('state'),
 58575    kGuard: Symbol('guard'),
 58576    kRealm: Symbol('realm')
 58577  }
 58578  
 58579  
 58580  /***/ }),
 58581  
 58582  /***/ 52538:
 58583  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 58584  
 58585  "use strict";
 58586  
 58587  
 58588  const { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = __nccwpck_require__(41037)
 58589  const { getGlobalOrigin } = __nccwpck_require__(71246)
 58590  const { performance } = __nccwpck_require__(4074)
 58591  const { isBlobLike, toUSVString, ReadableStreamFrom } = __nccwpck_require__(83983)
 58592  const assert = __nccwpck_require__(39491)
 58593  const { isUint8Array } = __nccwpck_require__(29830)
 58594  
 58595  let supportedHashes = []
 58596  
 58597  // https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable
 58598  /** @type {import('crypto')|undefined} */
 58599  let crypto
 58600  
 58601  try {
 58602    crypto = __nccwpck_require__(6113)
 58603    const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']
 58604    supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))
 58605  /* c8 ignore next 3 */
 58606  } catch {
 58607  }
 58608  
 58609  function responseURL (response) {
 58610    // https://fetch.spec.whatwg.org/#responses
 58611    // A response has an associated URL. It is a pointer to the last URL
 58612    // in response’s URL list and null if response’s URL list is empty.
 58613    const urlList = response.urlList
 58614    const length = urlList.length
 58615    return length === 0 ? null : urlList[length - 1].toString()
 58616  }
 58617  
 58618  // https://fetch.spec.whatwg.org/#concept-response-location-url
 58619  function responseLocationURL (response, requestFragment) {
 58620    // 1. If response’s status is not a redirect status, then return null.
 58621    if (!redirectStatusSet.has(response.status)) {
 58622      return null
 58623    }
 58624  
 58625    // 2. Let location be the result of extracting header list values given
 58626    // `Location` and response’s header list.
 58627    let location = response.headersList.get('location')
 58628  
 58629    // 3. If location is a header value, then set location to the result of
 58630    //    parsing location with response’s URL.
 58631    if (location !== null && isValidHeaderValue(location)) {
 58632      location = new URL(location, responseURL(response))
 58633    }
 58634  
 58635    // 4. If location is a URL whose fragment is null, then set location’s
 58636    // fragment to requestFragment.
 58637    if (location && !location.hash) {
 58638      location.hash = requestFragment
 58639    }
 58640  
 58641    // 5. Return location.
 58642    return location
 58643  }
 58644  
 58645  /** @returns {URL} */
 58646  function requestCurrentURL (request) {
 58647    return request.urlList[request.urlList.length - 1]
 58648  }
 58649  
 58650  function requestBadPort (request) {
 58651    // 1. Let url be request’s current URL.
 58652    const url = requestCurrentURL(request)
 58653  
 58654    // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port,
 58655    // then return blocked.
 58656    if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {
 58657      return 'blocked'
 58658    }
 58659  
 58660    // 3. Return allowed.
 58661    return 'allowed'
 58662  }
 58663  
 58664  function isErrorLike (object) {
 58665    return object instanceof Error || (
 58666      object?.constructor?.name === 'Error' ||
 58667      object?.constructor?.name === 'DOMException'
 58668    )
 58669  }
 58670  
 58671  // Check whether |statusText| is a ByteString and
 58672  // matches the Reason-Phrase token production.
 58673  // RFC 2616: https://tools.ietf.org/html/rfc2616
 58674  // RFC 7230: https://tools.ietf.org/html/rfc7230
 58675  // "reason-phrase = *( HTAB / SP / VCHAR / obs-text )"
 58676  // https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116
 58677  function isValidReasonPhrase (statusText) {
 58678    for (let i = 0; i < statusText.length; ++i) {
 58679      const c = statusText.charCodeAt(i)
 58680      if (
 58681        !(
 58682          (
 58683            c === 0x09 || // HTAB
 58684            (c >= 0x20 && c <= 0x7e) || // SP / VCHAR
 58685            (c >= 0x80 && c <= 0xff)
 58686          ) // obs-text
 58687        )
 58688      ) {
 58689        return false
 58690      }
 58691    }
 58692    return true
 58693  }
 58694  
 58695  /**
 58696   * @see https://tools.ietf.org/html/rfc7230#section-3.2.6
 58697   * @param {number} c
 58698   */
 58699  function isTokenCharCode (c) {
 58700    switch (c) {
 58701      case 0x22:
 58702      case 0x28:
 58703      case 0x29:
 58704      case 0x2c:
 58705      case 0x2f:
 58706      case 0x3a:
 58707      case 0x3b:
 58708      case 0x3c:
 58709      case 0x3d:
 58710      case 0x3e:
 58711      case 0x3f:
 58712      case 0x40:
 58713      case 0x5b:
 58714      case 0x5c:
 58715      case 0x5d:
 58716      case 0x7b:
 58717      case 0x7d:
 58718        // DQUOTE and "(),/:;<=>?@[\]{}"
 58719        return false
 58720      default:
 58721        // VCHAR %x21-7E
 58722        return c >= 0x21 && c <= 0x7e
 58723    }
 58724  }
 58725  
 58726  /**
 58727   * @param {string} characters
 58728   */
 58729  function isValidHTTPToken (characters) {
 58730    if (characters.length === 0) {
 58731      return false
 58732    }
 58733    for (let i = 0; i < characters.length; ++i) {
 58734      if (!isTokenCharCode(characters.charCodeAt(i))) {
 58735        return false
 58736      }
 58737    }
 58738    return true
 58739  }
 58740  
 58741  /**
 58742   * @see https://fetch.spec.whatwg.org/#header-name
 58743   * @param {string} potentialValue
 58744   */
 58745  function isValidHeaderName (potentialValue) {
 58746    return isValidHTTPToken(potentialValue)
 58747  }
 58748  
 58749  /**
 58750   * @see https://fetch.spec.whatwg.org/#header-value
 58751   * @param {string} potentialValue
 58752   */
 58753  function isValidHeaderValue (potentialValue) {
 58754    // - Has no leading or trailing HTTP tab or space bytes.
 58755    // - Contains no 0x00 (NUL) or HTTP newline bytes.
 58756    if (
 58757      potentialValue.startsWith('\t') ||
 58758      potentialValue.startsWith(' ') ||
 58759      potentialValue.endsWith('\t') ||
 58760      potentialValue.endsWith(' ')
 58761    ) {
 58762      return false
 58763    }
 58764  
 58765    if (
 58766      potentialValue.includes('\0') ||
 58767      potentialValue.includes('\r') ||
 58768      potentialValue.includes('\n')
 58769    ) {
 58770      return false
 58771    }
 58772  
 58773    return true
 58774  }
 58775  
 58776  // https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect
 58777  function setRequestReferrerPolicyOnRedirect (request, actualResponse) {
 58778    //  Given a request request and a response actualResponse, this algorithm
 58779    //  updates request’s referrer policy according to the Referrer-Policy
 58780    //  header (if any) in actualResponse.
 58781  
 58782    // 1. Let policy be the result of executing § 8.1 Parse a referrer policy
 58783    // from a Referrer-Policy header on actualResponse.
 58784  
 58785    // 8.1 Parse a referrer policy from a Referrer-Policy header
 58786    // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list.
 58787    const { headersList } = actualResponse
 58788    // 2. Let policy be the empty string.
 58789    // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.
 58790    // 4. Return policy.
 58791    const policyHeader = (headersList.get('referrer-policy') ?? '').split(',')
 58792  
 58793    // Note: As the referrer-policy can contain multiple policies
 58794    // separated by comma, we need to loop through all of them
 58795    // and pick the first valid one.
 58796    // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy
 58797    let policy = ''
 58798    if (policyHeader.length > 0) {
 58799      // The right-most policy takes precedence.
 58800      // The left-most policy is the fallback.
 58801      for (let i = policyHeader.length; i !== 0; i--) {
 58802        const token = policyHeader[i - 1].trim()
 58803        if (referrerPolicyTokens.has(token)) {
 58804          policy = token
 58805          break
 58806        }
 58807      }
 58808    }
 58809  
 58810    // 2. If policy is not the empty string, then set request’s referrer policy to policy.
 58811    if (policy !== '') {
 58812      request.referrerPolicy = policy
 58813    }
 58814  }
 58815  
 58816  // https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check
 58817  function crossOriginResourcePolicyCheck () {
 58818    // TODO
 58819    return 'allowed'
 58820  }
 58821  
 58822  // https://fetch.spec.whatwg.org/#concept-cors-check
 58823  function corsCheck () {
 58824    // TODO
 58825    return 'success'
 58826  }
 58827  
 58828  // https://fetch.spec.whatwg.org/#concept-tao-check
 58829  function TAOCheck () {
 58830    // TODO
 58831    return 'success'
 58832  }
 58833  
 58834  function appendFetchMetadata (httpRequest) {
 58835    //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header
 58836    //  TODO
 58837  
 58838    //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header
 58839  
 58840    //  1. Assert: r’s url is a potentially trustworthy URL.
 58841    //  TODO
 58842  
 58843    //  2. Let header be a Structured Header whose value is a token.
 58844    let header = null
 58845  
 58846    //  3. Set header’s value to r’s mode.
 58847    header = httpRequest.mode
 58848  
 58849    //  4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list.
 58850    httpRequest.headersList.set('sec-fetch-mode', header)
 58851  
 58852    //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header
 58853    //  TODO
 58854  
 58855    //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header
 58856    //  TODO
 58857  }
 58858  
 58859  // https://fetch.spec.whatwg.org/#append-a-request-origin-header
 58860  function appendRequestOriginHeader (request) {
 58861    // 1. Let serializedOrigin be the result of byte-serializing a request origin with request.
 58862    let serializedOrigin = request.origin
 58863  
 58864    // 2. If request’s response tainting is "cors" or request’s mode is "websocket", then append (`Origin`, serializedOrigin) to request’s header list.
 58865    if (request.responseTainting === 'cors' || request.mode === 'websocket') {
 58866      if (serializedOrigin) {
 58867        request.headersList.append('origin', serializedOrigin)
 58868      }
 58869  
 58870    // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then:
 58871    } else if (request.method !== 'GET' && request.method !== 'HEAD') {
 58872      // 1. Switch on request’s referrer policy:
 58873      switch (request.referrerPolicy) {
 58874        case 'no-referrer':
 58875          // Set serializedOrigin to `null`.
 58876          serializedOrigin = null
 58877          break
 58878        case 'no-referrer-when-downgrade':
 58879        case 'strict-origin':
 58880        case 'strict-origin-when-cross-origin':
 58881          // If request’s origin is a tuple origin, its scheme is "https", and request’s current URL’s scheme is not "https", then set serializedOrigin to `null`.
 58882          if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {
 58883            serializedOrigin = null
 58884          }
 58885          break
 58886        case 'same-origin':
 58887          // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`.
 58888          if (!sameOrigin(request, requestCurrentURL(request))) {
 58889            serializedOrigin = null
 58890          }
 58891          break
 58892        default:
 58893          // Do nothing.
 58894      }
 58895  
 58896      if (serializedOrigin) {
 58897        // 2. Append (`Origin`, serializedOrigin) to request’s header list.
 58898        request.headersList.append('origin', serializedOrigin)
 58899      }
 58900    }
 58901  }
 58902  
 58903  function coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {
 58904    // TODO
 58905    return performance.now()
 58906  }
 58907  
 58908  // https://fetch.spec.whatwg.org/#create-an-opaque-timing-info
 58909  function createOpaqueTimingInfo (timingInfo) {
 58910    return {
 58911      startTime: timingInfo.startTime ?? 0,
 58912      redirectStartTime: 0,
 58913      redirectEndTime: 0,
 58914      postRedirectStartTime: timingInfo.startTime ?? 0,
 58915      finalServiceWorkerStartTime: 0,
 58916      finalNetworkResponseStartTime: 0,
 58917      finalNetworkRequestStartTime: 0,
 58918      endTime: 0,
 58919      encodedBodySize: 0,
 58920      decodedBodySize: 0,
 58921      finalConnectionTimingInfo: null
 58922    }
 58923  }
 58924  
 58925  // https://html.spec.whatwg.org/multipage/origin.html#policy-container
 58926  function makePolicyContainer () {
 58927    // Note: the fetch spec doesn't make use of embedder policy or CSP list
 58928    return {
 58929      referrerPolicy: 'strict-origin-when-cross-origin'
 58930    }
 58931  }
 58932  
 58933  // https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container
 58934  function clonePolicyContainer (policyContainer) {
 58935    return {
 58936      referrerPolicy: policyContainer.referrerPolicy
 58937    }
 58938  }
 58939  
 58940  // https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer
 58941  function determineRequestsReferrer (request) {
 58942    // 1. Let policy be request's referrer policy.
 58943    const policy = request.referrerPolicy
 58944  
 58945    // Note: policy cannot (shouldn't) be null or an empty string.
 58946    assert(policy)
 58947  
 58948    // 2. Let environment be request’s client.
 58949  
 58950    let referrerSource = null
 58951  
 58952    // 3. Switch on request’s referrer:
 58953    if (request.referrer === 'client') {
 58954      // Note: node isn't a browser and doesn't implement document/iframes,
 58955      // so we bypass this step and replace it with our own.
 58956  
 58957      const globalOrigin = getGlobalOrigin()
 58958  
 58959      if (!globalOrigin || globalOrigin.origin === 'null') {
 58960        return 'no-referrer'
 58961      }
 58962  
 58963      // note: we need to clone it as it's mutated
 58964      referrerSource = new URL(globalOrigin)
 58965    } else if (request.referrer instanceof URL) {
 58966      // Let referrerSource be request’s referrer.
 58967      referrerSource = request.referrer
 58968    }
 58969  
 58970    // 4. Let request’s referrerURL be the result of stripping referrerSource for
 58971    //    use as a referrer.
 58972    let referrerURL = stripURLForReferrer(referrerSource)
 58973  
 58974    // 5. Let referrerOrigin be the result of stripping referrerSource for use as
 58975    //    a referrer, with the origin-only flag set to true.
 58976    const referrerOrigin = stripURLForReferrer(referrerSource, true)
 58977  
 58978    // 6. If the result of serializing referrerURL is a string whose length is
 58979    //    greater than 4096, set referrerURL to referrerOrigin.
 58980    if (referrerURL.toString().length > 4096) {
 58981      referrerURL = referrerOrigin
 58982    }
 58983  
 58984    const areSameOrigin = sameOrigin(request, referrerURL)
 58985    const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) &&
 58986      !isURLPotentiallyTrustworthy(request.url)
 58987  
 58988    // 8. Execute the switch statements corresponding to the value of policy:
 58989    switch (policy) {
 58990      case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true)
 58991      case 'unsafe-url': return referrerURL
 58992      case 'same-origin':
 58993        return areSameOrigin ? referrerOrigin : 'no-referrer'
 58994      case 'origin-when-cross-origin':
 58995        return areSameOrigin ? referrerURL : referrerOrigin
 58996      case 'strict-origin-when-cross-origin': {
 58997        const currentURL = requestCurrentURL(request)
 58998  
 58999        // 1. If the origin of referrerURL and the origin of request’s current
 59000        //    URL are the same, then return referrerURL.
 59001        if (sameOrigin(referrerURL, currentURL)) {
 59002          return referrerURL
 59003        }
 59004  
 59005        // 2. If referrerURL is a potentially trustworthy URL and request’s
 59006        //    current URL is not a potentially trustworthy URL, then return no
 59007        //    referrer.
 59008        if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {
 59009          return 'no-referrer'
 59010        }
 59011  
 59012        // 3. Return referrerOrigin.
 59013        return referrerOrigin
 59014      }
 59015      case 'strict-origin': // eslint-disable-line
 59016        /**
 59017           * 1. If referrerURL is a potentially trustworthy URL and
 59018           * request’s current URL is not a potentially trustworthy URL,
 59019           * then return no referrer.
 59020           * 2. Return referrerOrigin
 59021          */
 59022      case 'no-referrer-when-downgrade': // eslint-disable-line
 59023        /**
 59024         * 1. If referrerURL is a potentially trustworthy URL and
 59025         * request’s current URL is not a potentially trustworthy URL,
 59026         * then return no referrer.
 59027         * 2. Return referrerOrigin
 59028        */
 59029  
 59030      default: // eslint-disable-line
 59031        return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin
 59032    }
 59033  }
 59034  
 59035  /**
 59036   * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url
 59037   * @param {URL} url
 59038   * @param {boolean|undefined} originOnly
 59039   */
 59040  function stripURLForReferrer (url, originOnly) {
 59041    // 1. Assert: url is a URL.
 59042    assert(url instanceof URL)
 59043  
 59044    // 2. If url’s scheme is a local scheme, then return no referrer.
 59045    if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') {
 59046      return 'no-referrer'
 59047    }
 59048  
 59049    // 3. Set url’s username to the empty string.
 59050    url.username = ''
 59051  
 59052    // 4. Set url’s password to the empty string.
 59053    url.password = ''
 59054  
 59055    // 5. Set url’s fragment to null.
 59056    url.hash = ''
 59057  
 59058    // 6. If the origin-only flag is true, then:
 59059    if (originOnly) {
 59060      // 1. Set url’s path to « the empty string ».
 59061      url.pathname = ''
 59062  
 59063      // 2. Set url’s query to null.
 59064      url.search = ''
 59065    }
 59066  
 59067    // 7. Return url.
 59068    return url
 59069  }
 59070  
 59071  function isURLPotentiallyTrustworthy (url) {
 59072    if (!(url instanceof URL)) {
 59073      return false
 59074    }
 59075  
 59076    // If child of about, return true
 59077    if (url.href === 'about:blank' || url.href === 'about:srcdoc') {
 59078      return true
 59079    }
 59080  
 59081    // If scheme is data, return true
 59082    if (url.protocol === 'data:') return true
 59083  
 59084    // If file, return true
 59085    if (url.protocol === 'file:') return true
 59086  
 59087    return isOriginPotentiallyTrustworthy(url.origin)
 59088  
 59089    function isOriginPotentiallyTrustworthy (origin) {
 59090      // If origin is explicitly null, return false
 59091      if (origin == null || origin === 'null') return false
 59092  
 59093      const originAsURL = new URL(origin)
 59094  
 59095      // If secure, return true
 59096      if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') {
 59097        return true
 59098      }
 59099  
 59100      // If localhost or variants, return true
 59101      if (/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(originAsURL.hostname) ||
 59102       (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) ||
 59103       (originAsURL.hostname.endsWith('.localhost'))) {
 59104        return true
 59105      }
 59106  
 59107      // If any other, return false
 59108      return false
 59109    }
 59110  }
 59111  
 59112  /**
 59113   * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist
 59114   * @param {Uint8Array} bytes
 59115   * @param {string} metadataList
 59116   */
 59117  function bytesMatch (bytes, metadataList) {
 59118    // If node is not built with OpenSSL support, we cannot check
 59119    // a request's integrity, so allow it by default (the spec will
 59120    // allow requests if an invalid hash is given, as precedence).
 59121    /* istanbul ignore if: only if node is built with --without-ssl */
 59122    if (crypto === undefined) {
 59123      return true
 59124    }
 59125  
 59126    // 1. Let parsedMetadata be the result of parsing metadataList.
 59127    const parsedMetadata = parseMetadata(metadataList)
 59128  
 59129    // 2. If parsedMetadata is no metadata, return true.
 59130    if (parsedMetadata === 'no metadata') {
 59131      return true
 59132    }
 59133  
 59134    // 3. If response is not eligible for integrity validation, return false.
 59135    // TODO
 59136  
 59137    // 4. If parsedMetadata is the empty set, return true.
 59138    if (parsedMetadata.length === 0) {
 59139      return true
 59140    }
 59141  
 59142    // 5. Let metadata be the result of getting the strongest
 59143    //    metadata from parsedMetadata.
 59144    const strongest = getStrongestMetadata(parsedMetadata)
 59145    const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)
 59146  
 59147    // 6. For each item in metadata:
 59148    for (const item of metadata) {
 59149      // 1. Let algorithm be the alg component of item.
 59150      const algorithm = item.algo
 59151  
 59152      // 2. Let expectedValue be the val component of item.
 59153      const expectedValue = item.hash
 59154  
 59155      // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e
 59156      // "be liberal with padding". This is annoying, and it's not even in the spec.
 59157  
 59158      // 3. Let actualValue be the result of applying algorithm to bytes.
 59159      let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')
 59160  
 59161      if (actualValue[actualValue.length - 1] === '=') {
 59162        if (actualValue[actualValue.length - 2] === '=') {
 59163          actualValue = actualValue.slice(0, -2)
 59164        } else {
 59165          actualValue = actualValue.slice(0, -1)
 59166        }
 59167      }
 59168  
 59169      // 4. If actualValue is a case-sensitive match for expectedValue,
 59170      //    return true.
 59171      if (compareBase64Mixed(actualValue, expectedValue)) {
 59172        return true
 59173      }
 59174    }
 59175  
 59176    // 7. Return false.
 59177    return false
 59178  }
 59179  
 59180  // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options
 59181  // https://www.w3.org/TR/CSP2/#source-list-syntax
 59182  // https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1
 59183  const parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i
 59184  
 59185  /**
 59186   * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata
 59187   * @param {string} metadata
 59188   */
 59189  function parseMetadata (metadata) {
 59190    // 1. Let result be the empty set.
 59191    /** @type {{ algo: string, hash: string }[]} */
 59192    const result = []
 59193  
 59194    // 2. Let empty be equal to true.
 59195    let empty = true
 59196  
 59197    // 3. For each token returned by splitting metadata on spaces:
 59198    for (const token of metadata.split(' ')) {
 59199      // 1. Set empty to false.
 59200      empty = false
 59201  
 59202      // 2. Parse token as a hash-with-options.
 59203      const parsedToken = parseHashWithOptions.exec(token)
 59204  
 59205      // 3. If token does not parse, continue to the next token.
 59206      if (
 59207        parsedToken === null ||
 59208        parsedToken.groups === undefined ||
 59209        parsedToken.groups.algo === undefined
 59210      ) {
 59211        // Note: Chromium blocks the request at this point, but Firefox
 59212        // gives a warning that an invalid integrity was given. The
 59213        // correct behavior is to ignore these, and subsequently not
 59214        // check the integrity of the resource.
 59215        continue
 59216      }
 59217  
 59218      // 4. Let algorithm be the hash-algo component of token.
 59219      const algorithm = parsedToken.groups.algo.toLowerCase()
 59220  
 59221      // 5. If algorithm is a hash function recognized by the user
 59222      //    agent, add the parsed token to result.
 59223      if (supportedHashes.includes(algorithm)) {
 59224        result.push(parsedToken.groups)
 59225      }
 59226    }
 59227  
 59228    // 4. Return no metadata if empty is true, otherwise return result.
 59229    if (empty === true) {
 59230      return 'no metadata'
 59231    }
 59232  
 59233    return result
 59234  }
 59235  
 59236  /**
 59237   * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList
 59238   */
 59239  function getStrongestMetadata (metadataList) {
 59240    // Let algorithm be the algo component of the first item in metadataList.
 59241    // Can be sha256
 59242    let algorithm = metadataList[0].algo
 59243    // If the algorithm is sha512, then it is the strongest
 59244    // and we can return immediately
 59245    if (algorithm[3] === '5') {
 59246      return algorithm
 59247    }
 59248  
 59249    for (let i = 1; i < metadataList.length; ++i) {
 59250      const metadata = metadataList[i]
 59251      // If the algorithm is sha512, then it is the strongest
 59252      // and we can break the loop immediately
 59253      if (metadata.algo[3] === '5') {
 59254        algorithm = 'sha512'
 59255        break
 59256      // If the algorithm is sha384, then a potential sha256 or sha384 is ignored
 59257      } else if (algorithm[3] === '3') {
 59258        continue
 59259      // algorithm is sha256, check if algorithm is sha384 and if so, set it as
 59260      // the strongest
 59261      } else if (metadata.algo[3] === '3') {
 59262        algorithm = 'sha384'
 59263      }
 59264    }
 59265    return algorithm
 59266  }
 59267  
 59268  function filterMetadataListByAlgorithm (metadataList, algorithm) {
 59269    if (metadataList.length === 1) {
 59270      return metadataList
 59271    }
 59272  
 59273    let pos = 0
 59274    for (let i = 0; i < metadataList.length; ++i) {
 59275      if (metadataList[i].algo === algorithm) {
 59276        metadataList[pos++] = metadataList[i]
 59277      }
 59278    }
 59279  
 59280    metadataList.length = pos
 59281  
 59282    return metadataList
 59283  }
 59284  
 59285  /**
 59286   * Compares two base64 strings, allowing for base64url
 59287   * in the second string.
 59288   *
 59289  * @param {string} actualValue always base64
 59290   * @param {string} expectedValue base64 or base64url
 59291   * @returns {boolean}
 59292   */
 59293  function compareBase64Mixed (actualValue, expectedValue) {
 59294    if (actualValue.length !== expectedValue.length) {
 59295      return false
 59296    }
 59297    for (let i = 0; i < actualValue.length; ++i) {
 59298      if (actualValue[i] !== expectedValue[i]) {
 59299        if (
 59300          (actualValue[i] === '+' && expectedValue[i] === '-') ||
 59301          (actualValue[i] === '/' && expectedValue[i] === '_')
 59302        ) {
 59303          continue
 59304        }
 59305        return false
 59306      }
 59307    }
 59308  
 59309    return true
 59310  }
 59311  
 59312  // https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request
 59313  function tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {
 59314    // TODO
 59315  }
 59316  
 59317  /**
 59318   * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin}
 59319   * @param {URL} A
 59320   * @param {URL} B
 59321   */
 59322  function sameOrigin (A, B) {
 59323    // 1. If A and B are the same opaque origin, then return true.
 59324    if (A.origin === B.origin && A.origin === 'null') {
 59325      return true
 59326    }
 59327  
 59328    // 2. If A and B are both tuple origins and their schemes,
 59329    //    hosts, and port are identical, then return true.
 59330    if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {
 59331      return true
 59332    }
 59333  
 59334    // 3. Return false.
 59335    return false
 59336  }
 59337  
 59338  function createDeferredPromise () {
 59339    let res
 59340    let rej
 59341    const promise = new Promise((resolve, reject) => {
 59342      res = resolve
 59343      rej = reject
 59344    })
 59345  
 59346    return { promise, resolve: res, reject: rej }
 59347  }
 59348  
 59349  function isAborted (fetchParams) {
 59350    return fetchParams.controller.state === 'aborted'
 59351  }
 59352  
 59353  function isCancelled (fetchParams) {
 59354    return fetchParams.controller.state === 'aborted' ||
 59355      fetchParams.controller.state === 'terminated'
 59356  }
 59357  
 59358  const normalizeMethodRecord = {
 59359    delete: 'DELETE',
 59360    DELETE: 'DELETE',
 59361    get: 'GET',
 59362    GET: 'GET',
 59363    head: 'HEAD',
 59364    HEAD: 'HEAD',
 59365    options: 'OPTIONS',
 59366    OPTIONS: 'OPTIONS',
 59367    post: 'POST',
 59368    POST: 'POST',
 59369    put: 'PUT',
 59370    PUT: 'PUT'
 59371  }
 59372  
 59373  // Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.
 59374  Object.setPrototypeOf(normalizeMethodRecord, null)
 59375  
 59376  /**
 59377   * @see https://fetch.spec.whatwg.org/#concept-method-normalize
 59378   * @param {string} method
 59379   */
 59380  function normalizeMethod (method) {
 59381    return normalizeMethodRecord[method.toLowerCase()] ?? method
 59382  }
 59383  
 59384  // https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string
 59385  function serializeJavascriptValueToJSONString (value) {
 59386    // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »).
 59387    const result = JSON.stringify(value)
 59388  
 59389    // 2. If result is undefined, then throw a TypeError.
 59390    if (result === undefined) {
 59391      throw new TypeError('Value is not JSON serializable')
 59392    }
 59393  
 59394    // 3. Assert: result is a string.
 59395    assert(typeof result === 'string')
 59396  
 59397    // 4. Return result.
 59398    return result
 59399  }
 59400  
 59401  // https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object
 59402  const esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))
 59403  
 59404  /**
 59405   * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object
 59406   * @param {() => unknown[]} iterator
 59407   * @param {string} name name of the instance
 59408   * @param {'key'|'value'|'key+value'} kind
 59409   */
 59410  function makeIterator (iterator, name, kind) {
 59411    const object = {
 59412      index: 0,
 59413      kind,
 59414      target: iterator
 59415    }
 59416  
 59417    const i = {
 59418      next () {
 59419        // 1. Let interface be the interface for which the iterator prototype object exists.
 59420  
 59421        // 2. Let thisValue be the this value.
 59422  
 59423        // 3. Let object be ? ToObject(thisValue).
 59424  
 59425        // 4. If object is a platform object, then perform a security
 59426        //    check, passing:
 59427  
 59428        // 5. If object is not a default iterator object for interface,
 59429        //    then throw a TypeError.
 59430        if (Object.getPrototypeOf(this) !== i) {
 59431          throw new TypeError(
 59432            `'next' called on an object that does not implement interface ${name} Iterator.`
 59433          )
 59434        }
 59435  
 59436        // 6. Let index be object’s index.
 59437        // 7. Let kind be object’s kind.
 59438        // 8. Let values be object’s target's value pairs to iterate over.
 59439        const { index, kind, target } = object
 59440        const values = target()
 59441  
 59442        // 9. Let len be the length of values.
 59443        const len = values.length
 59444  
 59445        // 10. If index is greater than or equal to len, then return
 59446        //     CreateIterResultObject(undefined, true).
 59447        if (index >= len) {
 59448          return { value: undefined, done: true }
 59449        }
 59450  
 59451        // 11. Let pair be the entry in values at index index.
 59452        const pair = values[index]
 59453  
 59454        // 12. Set object’s index to index + 1.
 59455        object.index = index + 1
 59456  
 59457        // 13. Return the iterator result for pair and kind.
 59458        return iteratorResult(pair, kind)
 59459      },
 59460      // The class string of an iterator prototype object for a given interface is the
 59461      // result of concatenating the identifier of the interface and the string " Iterator".
 59462      [Symbol.toStringTag]: `${name} Iterator`
 59463    }
 59464  
 59465    // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%.
 59466    Object.setPrototypeOf(i, esIteratorPrototype)
 59467    // esIteratorPrototype needs to be the prototype of i
 59468    // which is the prototype of an empty object. Yes, it's confusing.
 59469    return Object.setPrototypeOf({}, i)
 59470  }
 59471  
 59472  // https://webidl.spec.whatwg.org/#iterator-result
 59473  function iteratorResult (pair, kind) {
 59474    let result
 59475  
 59476    // 1. Let result be a value determined by the value of kind:
 59477    switch (kind) {
 59478      case 'key': {
 59479        // 1. Let idlKey be pair’s key.
 59480        // 2. Let key be the result of converting idlKey to an
 59481        //    ECMAScript value.
 59482        // 3. result is key.
 59483        result = pair[0]
 59484        break
 59485      }
 59486      case 'value': {
 59487        // 1. Let idlValue be pair’s value.
 59488        // 2. Let value be the result of converting idlValue to
 59489        //    an ECMAScript value.
 59490        // 3. result is value.
 59491        result = pair[1]
 59492        break
 59493      }
 59494      case 'key+value': {
 59495        // 1. Let idlKey be pair’s key.
 59496        // 2. Let idlValue be pair’s value.
 59497        // 3. Let key be the result of converting idlKey to an
 59498        //    ECMAScript value.
 59499        // 4. Let value be the result of converting idlValue to
 59500        //    an ECMAScript value.
 59501        // 5. Let array be ! ArrayCreate(2).
 59502        // 6. Call ! CreateDataProperty(array, "0", key).
 59503        // 7. Call ! CreateDataProperty(array, "1", value).
 59504        // 8. result is array.
 59505        result = pair
 59506        break
 59507      }
 59508    }
 59509  
 59510    // 2. Return CreateIterResultObject(result, false).
 59511    return { value: result, done: false }
 59512  }
 59513  
 59514  /**
 59515   * @see https://fetch.spec.whatwg.org/#body-fully-read
 59516   */
 59517  async function fullyReadBody (body, processBody, processBodyError) {
 59518    // 1. If taskDestination is null, then set taskDestination to
 59519    //    the result of starting a new parallel queue.
 59520  
 59521    // 2. Let successSteps given a byte sequence bytes be to queue a
 59522    //    fetch task to run processBody given bytes, with taskDestination.
 59523    const successSteps = processBody
 59524  
 59525    // 3. Let errorSteps be to queue a fetch task to run processBodyError,
 59526    //    with taskDestination.
 59527    const errorSteps = processBodyError
 59528  
 59529    // 4. Let reader be the result of getting a reader for body’s stream.
 59530    //    If that threw an exception, then run errorSteps with that
 59531    //    exception and return.
 59532    let reader
 59533  
 59534    try {
 59535      reader = body.stream.getReader()
 59536    } catch (e) {
 59537      errorSteps(e)
 59538      return
 59539    }
 59540  
 59541    // 5. Read all bytes from reader, given successSteps and errorSteps.
 59542    try {
 59543      const result = await readAllBytes(reader)
 59544      successSteps(result)
 59545    } catch (e) {
 59546      errorSteps(e)
 59547    }
 59548  }
 59549  
 59550  /** @type {ReadableStream} */
 59551  let ReadableStream = globalThis.ReadableStream
 59552  
 59553  function isReadableStreamLike (stream) {
 59554    if (!ReadableStream) {
 59555      ReadableStream = (__nccwpck_require__(35356).ReadableStream)
 59556    }
 59557  
 59558    return stream instanceof ReadableStream || (
 59559      stream[Symbol.toStringTag] === 'ReadableStream' &&
 59560      typeof stream.tee === 'function'
 59561    )
 59562  }
 59563  
 59564  const MAXIMUM_ARGUMENT_LENGTH = 65535
 59565  
 59566  /**
 59567   * @see https://infra.spec.whatwg.org/#isomorphic-decode
 59568   * @param {number[]|Uint8Array} input
 59569   */
 59570  function isomorphicDecode (input) {
 59571    // 1. To isomorphic decode a byte sequence input, return a string whose code point
 59572    //    length is equal to input’s length and whose code points have the same values
 59573    //    as the values of input’s bytes, in the same order.
 59574  
 59575    if (input.length < MAXIMUM_ARGUMENT_LENGTH) {
 59576      return String.fromCharCode(...input)
 59577    }
 59578  
 59579    return input.reduce((previous, current) => previous + String.fromCharCode(current), '')
 59580  }
 59581  
 59582  /**
 59583   * @param {ReadableStreamController<Uint8Array>} controller
 59584   */
 59585  function readableStreamClose (controller) {
 59586    try {
 59587      controller.close()
 59588    } catch (err) {
 59589      // TODO: add comment explaining why this error occurs.
 59590      if (!err.message.includes('Controller is already closed')) {
 59591        throw err
 59592      }
 59593    }
 59594  }
 59595  
 59596  /**
 59597   * @see https://infra.spec.whatwg.org/#isomorphic-encode
 59598   * @param {string} input
 59599   */
 59600  function isomorphicEncode (input) {
 59601    // 1. Assert: input contains no code points greater than U+00FF.
 59602    for (let i = 0; i < input.length; i++) {
 59603      assert(input.charCodeAt(i) <= 0xFF)
 59604    }
 59605  
 59606    // 2. Return a byte sequence whose length is equal to input’s code
 59607    //    point length and whose bytes have the same values as the
 59608    //    values of input’s code points, in the same order
 59609    return input
 59610  }
 59611  
 59612  /**
 59613   * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes
 59614   * @see https://streams.spec.whatwg.org/#read-loop
 59615   * @param {ReadableStreamDefaultReader} reader
 59616   */
 59617  async function readAllBytes (reader) {
 59618    const bytes = []
 59619    let byteLength = 0
 59620  
 59621    while (true) {
 59622      const { done, value: chunk } = await reader.read()
 59623  
 59624      if (done) {
 59625        // 1. Call successSteps with bytes.
 59626        return Buffer.concat(bytes, byteLength)
 59627      }
 59628  
 59629      // 1. If chunk is not a Uint8Array object, call failureSteps
 59630      //    with a TypeError and abort these steps.
 59631      if (!isUint8Array(chunk)) {
 59632        throw new TypeError('Received non-Uint8Array chunk')
 59633      }
 59634  
 59635      // 2. Append the bytes represented by chunk to bytes.
 59636      bytes.push(chunk)
 59637      byteLength += chunk.length
 59638  
 59639      // 3. Read-loop given reader, bytes, successSteps, and failureSteps.
 59640    }
 59641  }
 59642  
 59643  /**
 59644   * @see https://fetch.spec.whatwg.org/#is-local
 59645   * @param {URL} url
 59646   */
 59647  function urlIsLocal (url) {
 59648    assert('protocol' in url) // ensure it's a url object
 59649  
 59650    const protocol = url.protocol
 59651  
 59652    return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'
 59653  }
 59654  
 59655  /**
 59656   * @param {string|URL} url
 59657   */
 59658  function urlHasHttpsScheme (url) {
 59659    if (typeof url === 'string') {
 59660      return url.startsWith('https:')
 59661    }
 59662  
 59663    return url.protocol === 'https:'
 59664  }
 59665  
 59666  /**
 59667   * @see https://fetch.spec.whatwg.org/#http-scheme
 59668   * @param {URL} url
 59669   */
 59670  function urlIsHttpHttpsScheme (url) {
 59671    assert('protocol' in url) // ensure it's a url object
 59672  
 59673    const protocol = url.protocol
 59674  
 59675    return protocol === 'http:' || protocol === 'https:'
 59676  }
 59677  
 59678  /**
 59679   * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0.
 59680   */
 59681  const hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key))
 59682  
 59683  module.exports = {
 59684    isAborted,
 59685    isCancelled,
 59686    createDeferredPromise,
 59687    ReadableStreamFrom,
 59688    toUSVString,
 59689    tryUpgradeRequestToAPotentiallyTrustworthyURL,
 59690    coarsenedSharedCurrentTime,
 59691    determineRequestsReferrer,
 59692    makePolicyContainer,
 59693    clonePolicyContainer,
 59694    appendFetchMetadata,
 59695    appendRequestOriginHeader,
 59696    TAOCheck,
 59697    corsCheck,
 59698    crossOriginResourcePolicyCheck,
 59699    createOpaqueTimingInfo,
 59700    setRequestReferrerPolicyOnRedirect,
 59701    isValidHTTPToken,
 59702    requestBadPort,
 59703    requestCurrentURL,
 59704    responseURL,
 59705    responseLocationURL,
 59706    isBlobLike,
 59707    isURLPotentiallyTrustworthy,
 59708    isValidReasonPhrase,
 59709    sameOrigin,
 59710    normalizeMethod,
 59711    serializeJavascriptValueToJSONString,
 59712    makeIterator,
 59713    isValidHeaderName,
 59714    isValidHeaderValue,
 59715    hasOwn,
 59716    isErrorLike,
 59717    fullyReadBody,
 59718    bytesMatch,
 59719    isReadableStreamLike,
 59720    readableStreamClose,
 59721    isomorphicEncode,
 59722    isomorphicDecode,
 59723    urlIsLocal,
 59724    urlHasHttpsScheme,
 59725    urlIsHttpHttpsScheme,
 59726    readAllBytes,
 59727    normalizeMethodRecord,
 59728    parseMetadata
 59729  }
 59730  
 59731  
 59732  /***/ }),
 59733  
 59734  /***/ 21744:
 59735  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 59736  
 59737  "use strict";
 59738  
 59739  
 59740  const { types } = __nccwpck_require__(73837)
 59741  const { hasOwn, toUSVString } = __nccwpck_require__(52538)
 59742  
 59743  /** @type {import('../../types/webidl').Webidl} */
 59744  const webidl = {}
 59745  webidl.converters = {}
 59746  webidl.util = {}
 59747  webidl.errors = {}
 59748  
 59749  webidl.errors.exception = function (message) {
 59750    return new TypeError(`${message.header}: ${message.message}`)
 59751  }
 59752  
 59753  webidl.errors.conversionFailed = function (context) {
 59754    const plural = context.types.length === 1 ? '' : ' one of'
 59755    const message =
 59756      `${context.argument} could not be converted to` +
 59757      `${plural}: ${context.types.join(', ')}.`
 59758  
 59759    return webidl.errors.exception({
 59760      header: context.prefix,
 59761      message
 59762    })
 59763  }
 59764  
 59765  webidl.errors.invalidArgument = function (context) {
 59766    return webidl.errors.exception({
 59767      header: context.prefix,
 59768      message: `"${context.value}" is an invalid ${context.type}.`
 59769    })
 59770  }
 59771  
 59772  // https://webidl.spec.whatwg.org/#implements
 59773  webidl.brandCheck = function (V, I, opts = undefined) {
 59774    if (opts?.strict !== false && !(V instanceof I)) {
 59775      throw new TypeError('Illegal invocation')
 59776    } else {
 59777      return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]
 59778    }
 59779  }
 59780  
 59781  webidl.argumentLengthCheck = function ({ length }, min, ctx) {
 59782    if (length < min) {
 59783      throw webidl.errors.exception({
 59784        message: `${min} argument${min !== 1 ? 's' : ''} required, ` +
 59785                 `but${length ? ' only' : ''} ${length} found.`,
 59786        ...ctx
 59787      })
 59788    }
 59789  }
 59790  
 59791  webidl.illegalConstructor = function () {
 59792    throw webidl.errors.exception({
 59793      header: 'TypeError',
 59794      message: 'Illegal constructor'
 59795    })
 59796  }
 59797  
 59798  // https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values
 59799  webidl.util.Type = function (V) {
 59800    switch (typeof V) {
 59801      case 'undefined': return 'Undefined'
 59802      case 'boolean': return 'Boolean'
 59803      case 'string': return 'String'
 59804      case 'symbol': return 'Symbol'
 59805      case 'number': return 'Number'
 59806      case 'bigint': return 'BigInt'
 59807      case 'function':
 59808      case 'object': {
 59809        if (V === null) {
 59810          return 'Null'
 59811        }
 59812  
 59813        return 'Object'
 59814      }
 59815    }
 59816  }
 59817  
 59818  // https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
 59819  webidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) {
 59820    let upperBound
 59821    let lowerBound
 59822  
 59823    // 1. If bitLength is 64, then:
 59824    if (bitLength === 64) {
 59825      // 1. Let upperBound be 2^53 − 1.
 59826      upperBound = Math.pow(2, 53) - 1
 59827  
 59828      // 2. If signedness is "unsigned", then let lowerBound be 0.
 59829      if (signedness === 'unsigned') {
 59830        lowerBound = 0
 59831      } else {
 59832        // 3. Otherwise let lowerBound be −2^53 + 1.
 59833        lowerBound = Math.pow(-2, 53) + 1
 59834      }
 59835    } else if (signedness === 'unsigned') {
 59836      // 2. Otherwise, if signedness is "unsigned", then:
 59837  
 59838      // 1. Let lowerBound be 0.
 59839      lowerBound = 0
 59840  
 59841      // 2. Let upperBound be 2^bitLength − 1.
 59842      upperBound = Math.pow(2, bitLength) - 1
 59843    } else {
 59844      // 3. Otherwise:
 59845  
 59846      // 1. Let lowerBound be -2^bitLength − 1.
 59847      lowerBound = Math.pow(-2, bitLength) - 1
 59848  
 59849      // 2. Let upperBound be 2^bitLength − 1 − 1.
 59850      upperBound = Math.pow(2, bitLength - 1) - 1
 59851    }
 59852  
 59853    // 4. Let x be ? ToNumber(V).
 59854    let x = Number(V)
 59855  
 59856    // 5. If x is −0, then set x to +0.
 59857    if (x === 0) {
 59858      x = 0
 59859    }
 59860  
 59861    // 6. If the conversion is to an IDL type associated
 59862    //    with the [EnforceRange] extended attribute, then:
 59863    if (opts.enforceRange === true) {
 59864      // 1. If x is NaN, +∞, or −∞, then throw a TypeError.
 59865      if (
 59866        Number.isNaN(x) ||
 59867        x === Number.POSITIVE_INFINITY ||
 59868        x === Number.NEGATIVE_INFINITY
 59869      ) {
 59870        throw webidl.errors.exception({
 59871          header: 'Integer conversion',
 59872          message: `Could not convert ${V} to an integer.`
 59873        })
 59874      }
 59875  
 59876      // 2. Set x to IntegerPart(x).
 59877      x = webidl.util.IntegerPart(x)
 59878  
 59879      // 3. If x < lowerBound or x > upperBound, then
 59880      //    throw a TypeError.
 59881      if (x < lowerBound || x > upperBound) {
 59882        throw webidl.errors.exception({
 59883          header: 'Integer conversion',
 59884          message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`
 59885        })
 59886      }
 59887  
 59888      // 4. Return x.
 59889      return x
 59890    }
 59891  
 59892    // 7. If x is not NaN and the conversion is to an IDL
 59893    //    type associated with the [Clamp] extended
 59894    //    attribute, then:
 59895    if (!Number.isNaN(x) && opts.clamp === true) {
 59896      // 1. Set x to min(max(x, lowerBound), upperBound).
 59897      x = Math.min(Math.max(x, lowerBound), upperBound)
 59898  
 59899      // 2. Round x to the nearest integer, choosing the
 59900      //    even integer if it lies halfway between two,
 59901      //    and choosing +0 rather than −0.
 59902      if (Math.floor(x) % 2 === 0) {
 59903        x = Math.floor(x)
 59904      } else {
 59905        x = Math.ceil(x)
 59906      }
 59907  
 59908      // 3. Return x.
 59909      return x
 59910    }
 59911  
 59912    // 8. If x is NaN, +0, +∞, or −∞, then return +0.
 59913    if (
 59914      Number.isNaN(x) ||
 59915      (x === 0 && Object.is(0, x)) ||
 59916      x === Number.POSITIVE_INFINITY ||
 59917      x === Number.NEGATIVE_INFINITY
 59918    ) {
 59919      return 0
 59920    }
 59921  
 59922    // 9. Set x to IntegerPart(x).
 59923    x = webidl.util.IntegerPart(x)
 59924  
 59925    // 10. Set x to x modulo 2^bitLength.
 59926    x = x % Math.pow(2, bitLength)
 59927  
 59928    // 11. If signedness is "signed" and x ≥ 2^bitLength − 1,
 59929    //    then return x − 2^bitLength.
 59930    if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) {
 59931      return x - Math.pow(2, bitLength)
 59932    }
 59933  
 59934    // 12. Otherwise, return x.
 59935    return x
 59936  }
 59937  
 59938  // https://webidl.spec.whatwg.org/#abstract-opdef-integerpart
 59939  webidl.util.IntegerPart = function (n) {
 59940    // 1. Let r be floor(abs(n)).
 59941    const r = Math.floor(Math.abs(n))
 59942  
 59943    // 2. If n < 0, then return -1 × r.
 59944    if (n < 0) {
 59945      return -1 * r
 59946    }
 59947  
 59948    // 3. Otherwise, return r.
 59949    return r
 59950  }
 59951  
 59952  // https://webidl.spec.whatwg.org/#es-sequence
 59953  webidl.sequenceConverter = function (converter) {
 59954    return (V) => {
 59955      // 1. If Type(V) is not Object, throw a TypeError.
 59956      if (webidl.util.Type(V) !== 'Object') {
 59957        throw webidl.errors.exception({
 59958          header: 'Sequence',
 59959          message: `Value of type ${webidl.util.Type(V)} is not an Object.`
 59960        })
 59961      }
 59962  
 59963      // 2. Let method be ? GetMethod(V, @@iterator).
 59964      /** @type {Generator} */
 59965      const method = V?.[Symbol.iterator]?.()
 59966      const seq = []
 59967  
 59968      // 3. If method is undefined, throw a TypeError.
 59969      if (
 59970        method === undefined ||
 59971        typeof method.next !== 'function'
 59972      ) {
 59973        throw webidl.errors.exception({
 59974          header: 'Sequence',
 59975          message: 'Object is not an iterator.'
 59976        })
 59977      }
 59978  
 59979      // https://webidl.spec.whatwg.org/#create-sequence-from-iterable
 59980      while (true) {
 59981        const { done, value } = method.next()
 59982  
 59983        if (done) {
 59984          break
 59985        }
 59986  
 59987        seq.push(converter(value))
 59988      }
 59989  
 59990      return seq
 59991    }
 59992  }
 59993  
 59994  // https://webidl.spec.whatwg.org/#es-to-record
 59995  webidl.recordConverter = function (keyConverter, valueConverter) {
 59996    return (O) => {
 59997      // 1. If Type(O) is not Object, throw a TypeError.
 59998      if (webidl.util.Type(O) !== 'Object') {
 59999        throw webidl.errors.exception({
 60000          header: 'Record',
 60001          message: `Value of type ${webidl.util.Type(O)} is not an Object.`
 60002        })
 60003      }
 60004  
 60005      // 2. Let result be a new empty instance of record<K, V>.
 60006      const result = {}
 60007  
 60008      if (!types.isProxy(O)) {
 60009        // Object.keys only returns enumerable properties
 60010        const keys = Object.keys(O)
 60011  
 60012        for (const key of keys) {
 60013          // 1. Let typedKey be key converted to an IDL value of type K.
 60014          const typedKey = keyConverter(key)
 60015  
 60016          // 2. Let value be ? Get(O, key).
 60017          // 3. Let typedValue be value converted to an IDL value of type V.
 60018          const typedValue = valueConverter(O[key])
 60019  
 60020          // 4. Set result[typedKey] to typedValue.
 60021          result[typedKey] = typedValue
 60022        }
 60023  
 60024        // 5. Return result.
 60025        return result
 60026      }
 60027  
 60028      // 3. Let keys be ? O.[[OwnPropertyKeys]]().
 60029      const keys = Reflect.ownKeys(O)
 60030  
 60031      // 4. For each key of keys.
 60032      for (const key of keys) {
 60033        // 1. Let desc be ? O.[[GetOwnProperty]](key).
 60034        const desc = Reflect.getOwnPropertyDescriptor(O, key)
 60035  
 60036        // 2. If desc is not undefined and desc.[[Enumerable]] is true:
 60037        if (desc?.enumerable) {
 60038          // 1. Let typedKey be key converted to an IDL value of type K.
 60039          const typedKey = keyConverter(key)
 60040  
 60041          // 2. Let value be ? Get(O, key).
 60042          // 3. Let typedValue be value converted to an IDL value of type V.
 60043          const typedValue = valueConverter(O[key])
 60044  
 60045          // 4. Set result[typedKey] to typedValue.
 60046          result[typedKey] = typedValue
 60047        }
 60048      }
 60049  
 60050      // 5. Return result.
 60051      return result
 60052    }
 60053  }
 60054  
 60055  webidl.interfaceConverter = function (i) {
 60056    return (V, opts = {}) => {
 60057      if (opts.strict !== false && !(V instanceof i)) {
 60058        throw webidl.errors.exception({
 60059          header: i.name,
 60060          message: `Expected ${V} to be an instance of ${i.name}.`
 60061        })
 60062      }
 60063  
 60064      return V
 60065    }
 60066  }
 60067  
 60068  webidl.dictionaryConverter = function (converters) {
 60069    return (dictionary) => {
 60070      const type = webidl.util.Type(dictionary)
 60071      const dict = {}
 60072  
 60073      if (type === 'Null' || type === 'Undefined') {
 60074        return dict
 60075      } else if (type !== 'Object') {
 60076        throw webidl.errors.exception({
 60077          header: 'Dictionary',
 60078          message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`
 60079        })
 60080      }
 60081  
 60082      for (const options of converters) {
 60083        const { key, defaultValue, required, converter } = options
 60084  
 60085        if (required === true) {
 60086          if (!hasOwn(dictionary, key)) {
 60087            throw webidl.errors.exception({
 60088              header: 'Dictionary',
 60089              message: `Missing required key "${key}".`
 60090            })
 60091          }
 60092        }
 60093  
 60094        let value = dictionary[key]
 60095        const hasDefault = hasOwn(options, 'defaultValue')
 60096  
 60097        // Only use defaultValue if value is undefined and
 60098        // a defaultValue options was provided.
 60099        if (hasDefault && value !== null) {
 60100          value = value ?? defaultValue
 60101        }
 60102  
 60103        // A key can be optional and have no default value.
 60104        // When this happens, do not perform a conversion,
 60105        // and do not assign the key a value.
 60106        if (required || hasDefault || value !== undefined) {
 60107          value = converter(value)
 60108  
 60109          if (
 60110            options.allowedValues &&
 60111            !options.allowedValues.includes(value)
 60112          ) {
 60113            throw webidl.errors.exception({
 60114              header: 'Dictionary',
 60115              message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.`
 60116            })
 60117          }
 60118  
 60119          dict[key] = value
 60120        }
 60121      }
 60122  
 60123      return dict
 60124    }
 60125  }
 60126  
 60127  webidl.nullableConverter = function (converter) {
 60128    return (V) => {
 60129      if (V === null) {
 60130        return V
 60131      }
 60132  
 60133      return converter(V)
 60134    }
 60135  }
 60136  
 60137  // https://webidl.spec.whatwg.org/#es-DOMString
 60138  webidl.converters.DOMString = function (V, opts = {}) {
 60139    // 1. If V is null and the conversion is to an IDL type
 60140    //    associated with the [LegacyNullToEmptyString]
 60141    //    extended attribute, then return the DOMString value
 60142    //    that represents the empty string.
 60143    if (V === null && opts.legacyNullToEmptyString) {
 60144      return ''
 60145    }
 60146  
 60147    // 2. Let x be ? ToString(V).
 60148    if (typeof V === 'symbol') {
 60149      throw new TypeError('Could not convert argument of type symbol to string.')
 60150    }
 60151  
 60152    // 3. Return the IDL DOMString value that represents the
 60153    //    same sequence of code units as the one the
 60154    //    ECMAScript String value x represents.
 60155    return String(V)
 60156  }
 60157  
 60158  // https://webidl.spec.whatwg.org/#es-ByteString
 60159  webidl.converters.ByteString = function (V) {
 60160    // 1. Let x be ? ToString(V).
 60161    // Note: DOMString converter perform ? ToString(V)
 60162    const x = webidl.converters.DOMString(V)
 60163  
 60164    // 2. If the value of any element of x is greater than
 60165    //    255, then throw a TypeError.
 60166    for (let index = 0; index < x.length; index++) {
 60167      if (x.charCodeAt(index) > 255) {
 60168        throw new TypeError(
 60169          'Cannot convert argument to a ByteString because the character at ' +
 60170          `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`
 60171        )
 60172      }
 60173    }
 60174  
 60175    // 3. Return an IDL ByteString value whose length is the
 60176    //    length of x, and where the value of each element is
 60177    //    the value of the corresponding element of x.
 60178    return x
 60179  }
 60180  
 60181  // https://webidl.spec.whatwg.org/#es-USVString
 60182  webidl.converters.USVString = toUSVString
 60183  
 60184  // https://webidl.spec.whatwg.org/#es-boolean
 60185  webidl.converters.boolean = function (V) {
 60186    // 1. Let x be the result of computing ToBoolean(V).
 60187    const x = Boolean(V)
 60188  
 60189    // 2. Return the IDL boolean value that is the one that represents
 60190    //    the same truth value as the ECMAScript Boolean value x.
 60191    return x
 60192  }
 60193  
 60194  // https://webidl.spec.whatwg.org/#es-any
 60195  webidl.converters.any = function (V) {
 60196    return V
 60197  }
 60198  
 60199  // https://webidl.spec.whatwg.org/#es-long-long
 60200  webidl.converters['long long'] = function (V) {
 60201    // 1. Let x be ? ConvertToInt(V, 64, "signed").
 60202    const x = webidl.util.ConvertToInt(V, 64, 'signed')
 60203  
 60204    // 2. Return the IDL long long value that represents
 60205    //    the same numeric value as x.
 60206    return x
 60207  }
 60208  
 60209  // https://webidl.spec.whatwg.org/#es-unsigned-long-long
 60210  webidl.converters['unsigned long long'] = function (V) {
 60211    // 1. Let x be ? ConvertToInt(V, 64, "unsigned").
 60212    const x = webidl.util.ConvertToInt(V, 64, 'unsigned')
 60213  
 60214    // 2. Return the IDL unsigned long long value that
 60215    //    represents the same numeric value as x.
 60216    return x
 60217  }
 60218  
 60219  // https://webidl.spec.whatwg.org/#es-unsigned-long
 60220  webidl.converters['unsigned long'] = function (V) {
 60221    // 1. Let x be ? ConvertToInt(V, 32, "unsigned").
 60222    const x = webidl.util.ConvertToInt(V, 32, 'unsigned')
 60223  
 60224    // 2. Return the IDL unsigned long value that
 60225    //    represents the same numeric value as x.
 60226    return x
 60227  }
 60228  
 60229  // https://webidl.spec.whatwg.org/#es-unsigned-short
 60230  webidl.converters['unsigned short'] = function (V, opts) {
 60231    // 1. Let x be ? ConvertToInt(V, 16, "unsigned").
 60232    const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts)
 60233  
 60234    // 2. Return the IDL unsigned short value that represents
 60235    //    the same numeric value as x.
 60236    return x
 60237  }
 60238  
 60239  // https://webidl.spec.whatwg.org/#idl-ArrayBuffer
 60240  webidl.converters.ArrayBuffer = function (V, opts = {}) {
 60241    // 1. If Type(V) is not Object, or V does not have an
 60242    //    [[ArrayBufferData]] internal slot, then throw a
 60243    //    TypeError.
 60244    // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances
 60245    // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances
 60246    if (
 60247      webidl.util.Type(V) !== 'Object' ||
 60248      !types.isAnyArrayBuffer(V)
 60249    ) {
 60250      throw webidl.errors.conversionFailed({
 60251        prefix: `${V}`,
 60252        argument: `${V}`,
 60253        types: ['ArrayBuffer']
 60254      })
 60255    }
 60256  
 60257    // 2. If the conversion is not to an IDL type associated
 60258    //    with the [AllowShared] extended attribute, and
 60259    //    IsSharedArrayBuffer(V) is true, then throw a
 60260    //    TypeError.
 60261    if (opts.allowShared === false && types.isSharedArrayBuffer(V)) {
 60262      throw webidl.errors.exception({
 60263        header: 'ArrayBuffer',
 60264        message: 'SharedArrayBuffer is not allowed.'
 60265      })
 60266    }
 60267  
 60268    // 3. If the conversion is not to an IDL type associated
 60269    //    with the [AllowResizable] extended attribute, and
 60270    //    IsResizableArrayBuffer(V) is true, then throw a
 60271    //    TypeError.
 60272    // Note: resizable ArrayBuffers are currently a proposal.
 60273  
 60274    // 4. Return the IDL ArrayBuffer value that is a
 60275    //    reference to the same object as V.
 60276    return V
 60277  }
 60278  
 60279  webidl.converters.TypedArray = function (V, T, opts = {}) {
 60280    // 1. Let T be the IDL type V is being converted to.
 60281  
 60282    // 2. If Type(V) is not Object, or V does not have a
 60283    //    [[TypedArrayName]] internal slot with a value
 60284    //    equal to T’s name, then throw a TypeError.
 60285    if (
 60286      webidl.util.Type(V) !== 'Object' ||
 60287      !types.isTypedArray(V) ||
 60288      V.constructor.name !== T.name
 60289    ) {
 60290      throw webidl.errors.conversionFailed({
 60291        prefix: `${T.name}`,
 60292        argument: `${V}`,
 60293        types: [T.name]
 60294      })
 60295    }
 60296  
 60297    // 3. If the conversion is not to an IDL type associated
 60298    //    with the [AllowShared] extended attribute, and
 60299    //    IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is
 60300    //    true, then throw a TypeError.
 60301    if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
 60302      throw webidl.errors.exception({
 60303        header: 'ArrayBuffer',
 60304        message: 'SharedArrayBuffer is not allowed.'
 60305      })
 60306    }
 60307  
 60308    // 4. If the conversion is not to an IDL type associated
 60309    //    with the [AllowResizable] extended attribute, and
 60310    //    IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is
 60311    //    true, then throw a TypeError.
 60312    // Note: resizable array buffers are currently a proposal
 60313  
 60314    // 5. Return the IDL value of type T that is a reference
 60315    //    to the same object as V.
 60316    return V
 60317  }
 60318  
 60319  webidl.converters.DataView = function (V, opts = {}) {
 60320    // 1. If Type(V) is not Object, or V does not have a
 60321    //    [[DataView]] internal slot, then throw a TypeError.
 60322    if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) {
 60323      throw webidl.errors.exception({
 60324        header: 'DataView',
 60325        message: 'Object is not a DataView.'
 60326      })
 60327    }
 60328  
 60329    // 2. If the conversion is not to an IDL type associated
 60330    //    with the [AllowShared] extended attribute, and
 60331    //    IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true,
 60332    //    then throw a TypeError.
 60333    if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {
 60334      throw webidl.errors.exception({
 60335        header: 'ArrayBuffer',
 60336        message: 'SharedArrayBuffer is not allowed.'
 60337      })
 60338    }
 60339  
 60340    // 3. If the conversion is not to an IDL type associated
 60341    //    with the [AllowResizable] extended attribute, and
 60342    //    IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is
 60343    //    true, then throw a TypeError.
 60344    // Note: resizable ArrayBuffers are currently a proposal
 60345  
 60346    // 4. Return the IDL DataView value that is a reference
 60347    //    to the same object as V.
 60348    return V
 60349  }
 60350  
 60351  // https://webidl.spec.whatwg.org/#BufferSource
 60352  webidl.converters.BufferSource = function (V, opts = {}) {
 60353    if (types.isAnyArrayBuffer(V)) {
 60354      return webidl.converters.ArrayBuffer(V, opts)
 60355    }
 60356  
 60357    if (types.isTypedArray(V)) {
 60358      return webidl.converters.TypedArray(V, V.constructor)
 60359    }
 60360  
 60361    if (types.isDataView(V)) {
 60362      return webidl.converters.DataView(V, opts)
 60363    }
 60364  
 60365    throw new TypeError(`Could not convert ${V} to a BufferSource.`)
 60366  }
 60367  
 60368  webidl.converters['sequence<ByteString>'] = webidl.sequenceConverter(
 60369    webidl.converters.ByteString
 60370  )
 60371  
 60372  webidl.converters['sequence<sequence<ByteString>>'] = webidl.sequenceConverter(
 60373    webidl.converters['sequence<ByteString>']
 60374  )
 60375  
 60376  webidl.converters['record<ByteString, ByteString>'] = webidl.recordConverter(
 60377    webidl.converters.ByteString,
 60378    webidl.converters.ByteString
 60379  )
 60380  
 60381  module.exports = {
 60382    webidl
 60383  }
 60384  
 60385  
 60386  /***/ }),
 60387  
 60388  /***/ 84854:
 60389  /***/ ((module) => {
 60390  
 60391  "use strict";
 60392  
 60393  
 60394  /**
 60395   * @see https://encoding.spec.whatwg.org/#concept-encoding-get
 60396   * @param {string|undefined} label
 60397   */
 60398  function getEncoding (label) {
 60399    if (!label) {
 60400      return 'failure'
 60401    }
 60402  
 60403    // 1. Remove any leading and trailing ASCII whitespace from label.
 60404    // 2. If label is an ASCII case-insensitive match for any of the
 60405    //    labels listed in the table below, then return the
 60406    //    corresponding encoding; otherwise return failure.
 60407    switch (label.trim().toLowerCase()) {
 60408      case 'unicode-1-1-utf-8':
 60409      case 'unicode11utf8':
 60410      case 'unicode20utf8':
 60411      case 'utf-8':
 60412      case 'utf8':
 60413      case 'x-unicode20utf8':
 60414        return 'UTF-8'
 60415      case '866':
 60416      case 'cp866':
 60417      case 'csibm866':
 60418      case 'ibm866':
 60419        return 'IBM866'
 60420      case 'csisolatin2':
 60421      case 'iso-8859-2':
 60422      case 'iso-ir-101':
 60423      case 'iso8859-2':
 60424      case 'iso88592':
 60425      case 'iso_8859-2':
 60426      case 'iso_8859-2:1987':
 60427      case 'l2':
 60428      case 'latin2':
 60429        return 'ISO-8859-2'
 60430      case 'csisolatin3':
 60431      case 'iso-8859-3':
 60432      case 'iso-ir-109':
 60433      case 'iso8859-3':
 60434      case 'iso88593':
 60435      case 'iso_8859-3':
 60436      case 'iso_8859-3:1988':
 60437      case 'l3':
 60438      case 'latin3':
 60439        return 'ISO-8859-3'
 60440      case 'csisolatin4':
 60441      case 'iso-8859-4':
 60442      case 'iso-ir-110':
 60443      case 'iso8859-4':
 60444      case 'iso88594':
 60445      case 'iso_8859-4':
 60446      case 'iso_8859-4:1988':
 60447      case 'l4':
 60448      case 'latin4':
 60449        return 'ISO-8859-4'
 60450      case 'csisolatincyrillic':
 60451      case 'cyrillic':
 60452      case 'iso-8859-5':
 60453      case 'iso-ir-144':
 60454      case 'iso8859-5':
 60455      case 'iso88595':
 60456      case 'iso_8859-5':
 60457      case 'iso_8859-5:1988':
 60458        return 'ISO-8859-5'
 60459      case 'arabic':
 60460      case 'asmo-708':
 60461      case 'csiso88596e':
 60462      case 'csiso88596i':
 60463      case 'csisolatinarabic':
 60464      case 'ecma-114':
 60465      case 'iso-8859-6':
 60466      case 'iso-8859-6-e':
 60467      case 'iso-8859-6-i':
 60468      case 'iso-ir-127':
 60469      case 'iso8859-6':
 60470      case 'iso88596':
 60471      case 'iso_8859-6':
 60472      case 'iso_8859-6:1987':
 60473        return 'ISO-8859-6'
 60474      case 'csisolatingreek':
 60475      case 'ecma-118':
 60476      case 'elot_928':
 60477      case 'greek':
 60478      case 'greek8':
 60479      case 'iso-8859-7':
 60480      case 'iso-ir-126':
 60481      case 'iso8859-7':
 60482      case 'iso88597':
 60483      case 'iso_8859-7':
 60484      case 'iso_8859-7:1987':
 60485      case 'sun_eu_greek':
 60486        return 'ISO-8859-7'
 60487      case 'csiso88598e':
 60488      case 'csisolatinhebrew':
 60489      case 'hebrew':
 60490      case 'iso-8859-8':
 60491      case 'iso-8859-8-e':
 60492      case 'iso-ir-138':
 60493      case 'iso8859-8':
 60494      case 'iso88598':
 60495      case 'iso_8859-8':
 60496      case 'iso_8859-8:1988':
 60497      case 'visual':
 60498        return 'ISO-8859-8'
 60499      case 'csiso88598i':
 60500      case 'iso-8859-8-i':
 60501      case 'logical':
 60502        return 'ISO-8859-8-I'
 60503      case 'csisolatin6':
 60504      case 'iso-8859-10':
 60505      case 'iso-ir-157':
 60506      case 'iso8859-10':
 60507      case 'iso885910':
 60508      case 'l6':
 60509      case 'latin6':
 60510        return 'ISO-8859-10'
 60511      case 'iso-8859-13':
 60512      case 'iso8859-13':
 60513      case 'iso885913':
 60514        return 'ISO-8859-13'
 60515      case 'iso-8859-14':
 60516      case 'iso8859-14':
 60517      case 'iso885914':
 60518        return 'ISO-8859-14'
 60519      case 'csisolatin9':
 60520      case 'iso-8859-15':
 60521      case 'iso8859-15':
 60522      case 'iso885915':
 60523      case 'iso_8859-15':
 60524      case 'l9':
 60525        return 'ISO-8859-15'
 60526      case 'iso-8859-16':
 60527        return 'ISO-8859-16'
 60528      case 'cskoi8r':
 60529      case 'koi':
 60530      case 'koi8':
 60531      case 'koi8-r':
 60532      case 'koi8_r':
 60533        return 'KOI8-R'
 60534      case 'koi8-ru':
 60535      case 'koi8-u':
 60536        return 'KOI8-U'
 60537      case 'csmacintosh':
 60538      case 'mac':
 60539      case 'macintosh':
 60540      case 'x-mac-roman':
 60541        return 'macintosh'
 60542      case 'iso-8859-11':
 60543      case 'iso8859-11':
 60544      case 'iso885911':
 60545      case 'tis-620':
 60546      case 'windows-874':
 60547        return 'windows-874'
 60548      case 'cp1250':
 60549      case 'windows-1250':
 60550      case 'x-cp1250':
 60551        return 'windows-1250'
 60552      case 'cp1251':
 60553      case 'windows-1251':
 60554      case 'x-cp1251':
 60555        return 'windows-1251'
 60556      case 'ansi_x3.4-1968':
 60557      case 'ascii':
 60558      case 'cp1252':
 60559      case 'cp819':
 60560      case 'csisolatin1':
 60561      case 'ibm819':
 60562      case 'iso-8859-1':
 60563      case 'iso-ir-100':
 60564      case 'iso8859-1':
 60565      case 'iso88591':
 60566      case 'iso_8859-1':
 60567      case 'iso_8859-1:1987':
 60568      case 'l1':
 60569      case 'latin1':
 60570      case 'us-ascii':
 60571      case 'windows-1252':
 60572      case 'x-cp1252':
 60573        return 'windows-1252'
 60574      case 'cp1253':
 60575      case 'windows-1253':
 60576      case 'x-cp1253':
 60577        return 'windows-1253'
 60578      case 'cp1254':
 60579      case 'csisolatin5':
 60580      case 'iso-8859-9':
 60581      case 'iso-ir-148':
 60582      case 'iso8859-9':
 60583      case 'iso88599':
 60584      case 'iso_8859-9':
 60585      case 'iso_8859-9:1989':
 60586      case 'l5':
 60587      case 'latin5':
 60588      case 'windows-1254':
 60589      case 'x-cp1254':
 60590        return 'windows-1254'
 60591      case 'cp1255':
 60592      case 'windows-1255':
 60593      case 'x-cp1255':
 60594        return 'windows-1255'
 60595      case 'cp1256':
 60596      case 'windows-1256':
 60597      case 'x-cp1256':
 60598        return 'windows-1256'
 60599      case 'cp1257':
 60600      case 'windows-1257':
 60601      case 'x-cp1257':
 60602        return 'windows-1257'
 60603      case 'cp1258':
 60604      case 'windows-1258':
 60605      case 'x-cp1258':
 60606        return 'windows-1258'
 60607      case 'x-mac-cyrillic':
 60608      case 'x-mac-ukrainian':
 60609        return 'x-mac-cyrillic'
 60610      case 'chinese':
 60611      case 'csgb2312':
 60612      case 'csiso58gb231280':
 60613      case 'gb2312':
 60614      case 'gb_2312':
 60615      case 'gb_2312-80':
 60616      case 'gbk':
 60617      case 'iso-ir-58':
 60618      case 'x-gbk':
 60619        return 'GBK'
 60620      case 'gb18030':
 60621        return 'gb18030'
 60622      case 'big5':
 60623      case 'big5-hkscs':
 60624      case 'cn-big5':
 60625      case 'csbig5':
 60626      case 'x-x-big5':
 60627        return 'Big5'
 60628      case 'cseucpkdfmtjapanese':
 60629      case 'euc-jp':
 60630      case 'x-euc-jp':
 60631        return 'EUC-JP'
 60632      case 'csiso2022jp':
 60633      case 'iso-2022-jp':
 60634        return 'ISO-2022-JP'
 60635      case 'csshiftjis':
 60636      case 'ms932':
 60637      case 'ms_kanji':
 60638      case 'shift-jis':
 60639      case 'shift_jis':
 60640      case 'sjis':
 60641      case 'windows-31j':
 60642      case 'x-sjis':
 60643        return 'Shift_JIS'
 60644      case 'cseuckr':
 60645      case 'csksc56011987':
 60646      case 'euc-kr':
 60647      case 'iso-ir-149':
 60648      case 'korean':
 60649      case 'ks_c_5601-1987':
 60650      case 'ks_c_5601-1989':
 60651      case 'ksc5601':
 60652      case 'ksc_5601':
 60653      case 'windows-949':
 60654        return 'EUC-KR'
 60655      case 'csiso2022kr':
 60656      case 'hz-gb-2312':
 60657      case 'iso-2022-cn':
 60658      case 'iso-2022-cn-ext':
 60659      case 'iso-2022-kr':
 60660      case 'replacement':
 60661        return 'replacement'
 60662      case 'unicodefffe':
 60663      case 'utf-16be':
 60664        return 'UTF-16BE'
 60665      case 'csunicode':
 60666      case 'iso-10646-ucs-2':
 60667      case 'ucs-2':
 60668      case 'unicode':
 60669      case 'unicodefeff':
 60670      case 'utf-16':
 60671      case 'utf-16le':
 60672        return 'UTF-16LE'
 60673      case 'x-user-defined':
 60674        return 'x-user-defined'
 60675      default: return 'failure'
 60676    }
 60677  }
 60678  
 60679  module.exports = {
 60680    getEncoding
 60681  }
 60682  
 60683  
 60684  /***/ }),
 60685  
 60686  /***/ 1446:
 60687  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 60688  
 60689  "use strict";
 60690  
 60691  
 60692  const {
 60693    staticPropertyDescriptors,
 60694    readOperation,
 60695    fireAProgressEvent
 60696  } = __nccwpck_require__(87530)
 60697  const {
 60698    kState,
 60699    kError,
 60700    kResult,
 60701    kEvents,
 60702    kAborted
 60703  } = __nccwpck_require__(29054)
 60704  const { webidl } = __nccwpck_require__(21744)
 60705  const { kEnumerableProperty } = __nccwpck_require__(83983)
 60706  
 60707  class FileReader extends EventTarget {
 60708    constructor () {
 60709      super()
 60710  
 60711      this[kState] = 'empty'
 60712      this[kResult] = null
 60713      this[kError] = null
 60714      this[kEvents] = {
 60715        loadend: null,
 60716        error: null,
 60717        abort: null,
 60718        load: null,
 60719        progress: null,
 60720        loadstart: null
 60721      }
 60722    }
 60723  
 60724    /**
 60725     * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer
 60726     * @param {import('buffer').Blob} blob
 60727     */
 60728    readAsArrayBuffer (blob) {
 60729      webidl.brandCheck(this, FileReader)
 60730  
 60731      webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' })
 60732  
 60733      blob = webidl.converters.Blob(blob, { strict: false })
 60734  
 60735      // The readAsArrayBuffer(blob) method, when invoked,
 60736      // must initiate a read operation for blob with ArrayBuffer.
 60737      readOperation(this, blob, 'ArrayBuffer')
 60738    }
 60739  
 60740    /**
 60741     * @see https://w3c.github.io/FileAPI/#readAsBinaryString
 60742     * @param {import('buffer').Blob} blob
 60743     */
 60744    readAsBinaryString (blob) {
 60745      webidl.brandCheck(this, FileReader)
 60746  
 60747      webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' })
 60748  
 60749      blob = webidl.converters.Blob(blob, { strict: false })
 60750  
 60751      // The readAsBinaryString(blob) method, when invoked,
 60752      // must initiate a read operation for blob with BinaryString.
 60753      readOperation(this, blob, 'BinaryString')
 60754    }
 60755  
 60756    /**
 60757     * @see https://w3c.github.io/FileAPI/#readAsDataText
 60758     * @param {import('buffer').Blob} blob
 60759     * @param {string?} encoding
 60760     */
 60761    readAsText (blob, encoding = undefined) {
 60762      webidl.brandCheck(this, FileReader)
 60763  
 60764      webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' })
 60765  
 60766      blob = webidl.converters.Blob(blob, { strict: false })
 60767  
 60768      if (encoding !== undefined) {
 60769        encoding = webidl.converters.DOMString(encoding)
 60770      }
 60771  
 60772      // The readAsText(blob, encoding) method, when invoked,
 60773      // must initiate a read operation for blob with Text and encoding.
 60774      readOperation(this, blob, 'Text', encoding)
 60775    }
 60776  
 60777    /**
 60778     * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL
 60779     * @param {import('buffer').Blob} blob
 60780     */
 60781    readAsDataURL (blob) {
 60782      webidl.brandCheck(this, FileReader)
 60783  
 60784      webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' })
 60785  
 60786      blob = webidl.converters.Blob(blob, { strict: false })
 60787  
 60788      // The readAsDataURL(blob) method, when invoked, must
 60789      // initiate a read operation for blob with DataURL.
 60790      readOperation(this, blob, 'DataURL')
 60791    }
 60792  
 60793    /**
 60794     * @see https://w3c.github.io/FileAPI/#dfn-abort
 60795     */
 60796    abort () {
 60797      // 1. If this's state is "empty" or if this's state is
 60798      //    "done" set this's result to null and terminate
 60799      //    this algorithm.
 60800      if (this[kState] === 'empty' || this[kState] === 'done') {
 60801        this[kResult] = null
 60802        return
 60803      }
 60804  
 60805      // 2. If this's state is "loading" set this's state to
 60806      //    "done" and set this's result to null.
 60807      if (this[kState] === 'loading') {
 60808        this[kState] = 'done'
 60809        this[kResult] = null
 60810      }
 60811  
 60812      // 3. If there are any tasks from this on the file reading
 60813      //    task source in an affiliated task queue, then remove
 60814      //    those tasks from that task queue.
 60815      this[kAborted] = true
 60816  
 60817      // 4. Terminate the algorithm for the read method being processed.
 60818      // TODO
 60819  
 60820      // 5. Fire a progress event called abort at this.
 60821      fireAProgressEvent('abort', this)
 60822  
 60823      // 6. If this's state is not "loading", fire a progress
 60824      //    event called loadend at this.
 60825      if (this[kState] !== 'loading') {
 60826        fireAProgressEvent('loadend', this)
 60827      }
 60828    }
 60829  
 60830    /**
 60831     * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate
 60832     */
 60833    get readyState () {
 60834      webidl.brandCheck(this, FileReader)
 60835  
 60836      switch (this[kState]) {
 60837        case 'empty': return this.EMPTY
 60838        case 'loading': return this.LOADING
 60839        case 'done': return this.DONE
 60840      }
 60841    }
 60842  
 60843    /**
 60844     * @see https://w3c.github.io/FileAPI/#dom-filereader-result
 60845     */
 60846    get result () {
 60847      webidl.brandCheck(this, FileReader)
 60848  
 60849      // The result attribute’s getter, when invoked, must return
 60850      // this's result.
 60851      return this[kResult]
 60852    }
 60853  
 60854    /**
 60855     * @see https://w3c.github.io/FileAPI/#dom-filereader-error
 60856     */
 60857    get error () {
 60858      webidl.brandCheck(this, FileReader)
 60859  
 60860      // The error attribute’s getter, when invoked, must return
 60861      // this's error.
 60862      return this[kError]
 60863    }
 60864  
 60865    get onloadend () {
 60866      webidl.brandCheck(this, FileReader)
 60867  
 60868      return this[kEvents].loadend
 60869    }
 60870  
 60871    set onloadend (fn) {
 60872      webidl.brandCheck(this, FileReader)
 60873  
 60874      if (this[kEvents].loadend) {
 60875        this.removeEventListener('loadend', this[kEvents].loadend)
 60876      }
 60877  
 60878      if (typeof fn === 'function') {
 60879        this[kEvents].loadend = fn
 60880        this.addEventListener('loadend', fn)
 60881      } else {
 60882        this[kEvents].loadend = null
 60883      }
 60884    }
 60885  
 60886    get onerror () {
 60887      webidl.brandCheck(this, FileReader)
 60888  
 60889      return this[kEvents].error
 60890    }
 60891  
 60892    set onerror (fn) {
 60893      webidl.brandCheck(this, FileReader)
 60894  
 60895      if (this[kEvents].error) {
 60896        this.removeEventListener('error', this[kEvents].error)
 60897      }
 60898  
 60899      if (typeof fn === 'function') {
 60900        this[kEvents].error = fn
 60901        this.addEventListener('error', fn)
 60902      } else {
 60903        this[kEvents].error = null
 60904      }
 60905    }
 60906  
 60907    get onloadstart () {
 60908      webidl.brandCheck(this, FileReader)
 60909  
 60910      return this[kEvents].loadstart
 60911    }
 60912  
 60913    set onloadstart (fn) {
 60914      webidl.brandCheck(this, FileReader)
 60915  
 60916      if (this[kEvents].loadstart) {
 60917        this.removeEventListener('loadstart', this[kEvents].loadstart)
 60918      }
 60919  
 60920      if (typeof fn === 'function') {
 60921        this[kEvents].loadstart = fn
 60922        this.addEventListener('loadstart', fn)
 60923      } else {
 60924        this[kEvents].loadstart = null
 60925      }
 60926    }
 60927  
 60928    get onprogress () {
 60929      webidl.brandCheck(this, FileReader)
 60930  
 60931      return this[kEvents].progress
 60932    }
 60933  
 60934    set onprogress (fn) {
 60935      webidl.brandCheck(this, FileReader)
 60936  
 60937      if (this[kEvents].progress) {
 60938        this.removeEventListener('progress', this[kEvents].progress)
 60939      }
 60940  
 60941      if (typeof fn === 'function') {
 60942        this[kEvents].progress = fn
 60943        this.addEventListener('progress', fn)
 60944      } else {
 60945        this[kEvents].progress = null
 60946      }
 60947    }
 60948  
 60949    get onload () {
 60950      webidl.brandCheck(this, FileReader)
 60951  
 60952      return this[kEvents].load
 60953    }
 60954  
 60955    set onload (fn) {
 60956      webidl.brandCheck(this, FileReader)
 60957  
 60958      if (this[kEvents].load) {
 60959        this.removeEventListener('load', this[kEvents].load)
 60960      }
 60961  
 60962      if (typeof fn === 'function') {
 60963        this[kEvents].load = fn
 60964        this.addEventListener('load', fn)
 60965      } else {
 60966        this[kEvents].load = null
 60967      }
 60968    }
 60969  
 60970    get onabort () {
 60971      webidl.brandCheck(this, FileReader)
 60972  
 60973      return this[kEvents].abort
 60974    }
 60975  
 60976    set onabort (fn) {
 60977      webidl.brandCheck(this, FileReader)
 60978  
 60979      if (this[kEvents].abort) {
 60980        this.removeEventListener('abort', this[kEvents].abort)
 60981      }
 60982  
 60983      if (typeof fn === 'function') {
 60984        this[kEvents].abort = fn
 60985        this.addEventListener('abort', fn)
 60986      } else {
 60987        this[kEvents].abort = null
 60988      }
 60989    }
 60990  }
 60991  
 60992  // https://w3c.github.io/FileAPI/#dom-filereader-empty
 60993  FileReader.EMPTY = FileReader.prototype.EMPTY = 0
 60994  // https://w3c.github.io/FileAPI/#dom-filereader-loading
 60995  FileReader.LOADING = FileReader.prototype.LOADING = 1
 60996  // https://w3c.github.io/FileAPI/#dom-filereader-done
 60997  FileReader.DONE = FileReader.prototype.DONE = 2
 60998  
 60999  Object.defineProperties(FileReader.prototype, {
 61000    EMPTY: staticPropertyDescriptors,
 61001    LOADING: staticPropertyDescriptors,
 61002    DONE: staticPropertyDescriptors,
 61003    readAsArrayBuffer: kEnumerableProperty,
 61004    readAsBinaryString: kEnumerableProperty,
 61005    readAsText: kEnumerableProperty,
 61006    readAsDataURL: kEnumerableProperty,
 61007    abort: kEnumerableProperty,
 61008    readyState: kEnumerableProperty,
 61009    result: kEnumerableProperty,
 61010    error: kEnumerableProperty,
 61011    onloadstart: kEnumerableProperty,
 61012    onprogress: kEnumerableProperty,
 61013    onload: kEnumerableProperty,
 61014    onabort: kEnumerableProperty,
 61015    onerror: kEnumerableProperty,
 61016    onloadend: kEnumerableProperty,
 61017    [Symbol.toStringTag]: {
 61018      value: 'FileReader',
 61019      writable: false,
 61020      enumerable: false,
 61021      configurable: true
 61022    }
 61023  })
 61024  
 61025  Object.defineProperties(FileReader, {
 61026    EMPTY: staticPropertyDescriptors,
 61027    LOADING: staticPropertyDescriptors,
 61028    DONE: staticPropertyDescriptors
 61029  })
 61030  
 61031  module.exports = {
 61032    FileReader
 61033  }
 61034  
 61035  
 61036  /***/ }),
 61037  
 61038  /***/ 55504:
 61039  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 61040  
 61041  "use strict";
 61042  
 61043  
 61044  const { webidl } = __nccwpck_require__(21744)
 61045  
 61046  const kState = Symbol('ProgressEvent state')
 61047  
 61048  /**
 61049   * @see https://xhr.spec.whatwg.org/#progressevent
 61050   */
 61051  class ProgressEvent extends Event {
 61052    constructor (type, eventInitDict = {}) {
 61053      type = webidl.converters.DOMString(type)
 61054      eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {})
 61055  
 61056      super(type, eventInitDict)
 61057  
 61058      this[kState] = {
 61059        lengthComputable: eventInitDict.lengthComputable,
 61060        loaded: eventInitDict.loaded,
 61061        total: eventInitDict.total
 61062      }
 61063    }
 61064  
 61065    get lengthComputable () {
 61066      webidl.brandCheck(this, ProgressEvent)
 61067  
 61068      return this[kState].lengthComputable
 61069    }
 61070  
 61071    get loaded () {
 61072      webidl.brandCheck(this, ProgressEvent)
 61073  
 61074      return this[kState].loaded
 61075    }
 61076  
 61077    get total () {
 61078      webidl.brandCheck(this, ProgressEvent)
 61079  
 61080      return this[kState].total
 61081    }
 61082  }
 61083  
 61084  webidl.converters.ProgressEventInit = webidl.dictionaryConverter([
 61085    {
 61086      key: 'lengthComputable',
 61087      converter: webidl.converters.boolean,
 61088      defaultValue: false
 61089    },
 61090    {
 61091      key: 'loaded',
 61092      converter: webidl.converters['unsigned long long'],
 61093      defaultValue: 0
 61094    },
 61095    {
 61096      key: 'total',
 61097      converter: webidl.converters['unsigned long long'],
 61098      defaultValue: 0
 61099    },
 61100    {
 61101      key: 'bubbles',
 61102      converter: webidl.converters.boolean,
 61103      defaultValue: false
 61104    },
 61105    {
 61106      key: 'cancelable',
 61107      converter: webidl.converters.boolean,
 61108      defaultValue: false
 61109    },
 61110    {
 61111      key: 'composed',
 61112      converter: webidl.converters.boolean,
 61113      defaultValue: false
 61114    }
 61115  ])
 61116  
 61117  module.exports = {
 61118    ProgressEvent
 61119  }
 61120  
 61121  
 61122  /***/ }),
 61123  
 61124  /***/ 29054:
 61125  /***/ ((module) => {
 61126  
 61127  "use strict";
 61128  
 61129  
 61130  module.exports = {
 61131    kState: Symbol('FileReader state'),
 61132    kResult: Symbol('FileReader result'),
 61133    kError: Symbol('FileReader error'),
 61134    kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'),
 61135    kEvents: Symbol('FileReader events'),
 61136    kAborted: Symbol('FileReader aborted')
 61137  }
 61138  
 61139  
 61140  /***/ }),
 61141  
 61142  /***/ 87530:
 61143  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 61144  
 61145  "use strict";
 61146  
 61147  
 61148  const {
 61149    kState,
 61150    kError,
 61151    kResult,
 61152    kAborted,
 61153    kLastProgressEventFired
 61154  } = __nccwpck_require__(29054)
 61155  const { ProgressEvent } = __nccwpck_require__(55504)
 61156  const { getEncoding } = __nccwpck_require__(84854)
 61157  const { DOMException } = __nccwpck_require__(41037)
 61158  const { serializeAMimeType, parseMIMEType } = __nccwpck_require__(685)
 61159  const { types } = __nccwpck_require__(73837)
 61160  const { StringDecoder } = __nccwpck_require__(71576)
 61161  const { btoa } = __nccwpck_require__(14300)
 61162  
 61163  /** @type {PropertyDescriptor} */
 61164  const staticPropertyDescriptors = {
 61165    enumerable: true,
 61166    writable: false,
 61167    configurable: false
 61168  }
 61169  
 61170  /**
 61171   * @see https://w3c.github.io/FileAPI/#readOperation
 61172   * @param {import('./filereader').FileReader} fr
 61173   * @param {import('buffer').Blob} blob
 61174   * @param {string} type
 61175   * @param {string?} encodingName
 61176   */
 61177  function readOperation (fr, blob, type, encodingName) {
 61178    // 1. If fr’s state is "loading", throw an InvalidStateError
 61179    //    DOMException.
 61180    if (fr[kState] === 'loading') {
 61181      throw new DOMException('Invalid state', 'InvalidStateError')
 61182    }
 61183  
 61184    // 2. Set fr’s state to "loading".
 61185    fr[kState] = 'loading'
 61186  
 61187    // 3. Set fr’s result to null.
 61188    fr[kResult] = null
 61189  
 61190    // 4. Set fr’s error to null.
 61191    fr[kError] = null
 61192  
 61193    // 5. Let stream be the result of calling get stream on blob.
 61194    /** @type {import('stream/web').ReadableStream} */
 61195    const stream = blob.stream()
 61196  
 61197    // 6. Let reader be the result of getting a reader from stream.
 61198    const reader = stream.getReader()
 61199  
 61200    // 7. Let bytes be an empty byte sequence.
 61201    /** @type {Uint8Array[]} */
 61202    const bytes = []
 61203  
 61204    // 8. Let chunkPromise be the result of reading a chunk from
 61205    //    stream with reader.
 61206    let chunkPromise = reader.read()
 61207  
 61208    // 9. Let isFirstChunk be true.
 61209    let isFirstChunk = true
 61210  
 61211    // 10. In parallel, while true:
 61212    // Note: "In parallel" just means non-blocking
 61213    // Note 2: readOperation itself cannot be async as double
 61214    // reading the body would then reject the promise, instead
 61215    // of throwing an error.
 61216    ;(async () => {
 61217      while (!fr[kAborted]) {
 61218        // 1. Wait for chunkPromise to be fulfilled or rejected.
 61219        try {
 61220          const { done, value } = await chunkPromise
 61221  
 61222          // 2. If chunkPromise is fulfilled, and isFirstChunk is
 61223          //    true, queue a task to fire a progress event called
 61224          //    loadstart at fr.
 61225          if (isFirstChunk && !fr[kAborted]) {
 61226            queueMicrotask(() => {
 61227              fireAProgressEvent('loadstart', fr)
 61228            })
 61229          }
 61230  
 61231          // 3. Set isFirstChunk to false.
 61232          isFirstChunk = false
 61233  
 61234          // 4. If chunkPromise is fulfilled with an object whose
 61235          //    done property is false and whose value property is
 61236          //    a Uint8Array object, run these steps:
 61237          if (!done && types.isUint8Array(value)) {
 61238            // 1. Let bs be the byte sequence represented by the
 61239            //    Uint8Array object.
 61240  
 61241            // 2. Append bs to bytes.
 61242            bytes.push(value)
 61243  
 61244            // 3. If roughly 50ms have passed since these steps
 61245            //    were last invoked, queue a task to fire a
 61246            //    progress event called progress at fr.
 61247            if (
 61248              (
 61249                fr[kLastProgressEventFired] === undefined ||
 61250                Date.now() - fr[kLastProgressEventFired] >= 50
 61251              ) &&
 61252              !fr[kAborted]
 61253            ) {
 61254              fr[kLastProgressEventFired] = Date.now()
 61255              queueMicrotask(() => {
 61256                fireAProgressEvent('progress', fr)
 61257              })
 61258            }
 61259  
 61260            // 4. Set chunkPromise to the result of reading a
 61261            //    chunk from stream with reader.
 61262            chunkPromise = reader.read()
 61263          } else if (done) {
 61264            // 5. Otherwise, if chunkPromise is fulfilled with an
 61265            //    object whose done property is true, queue a task
 61266            //    to run the following steps and abort this algorithm:
 61267            queueMicrotask(() => {
 61268              // 1. Set fr’s state to "done".
 61269              fr[kState] = 'done'
 61270  
 61271              // 2. Let result be the result of package data given
 61272              //    bytes, type, blob’s type, and encodingName.
 61273              try {
 61274                const result = packageData(bytes, type, blob.type, encodingName)
 61275  
 61276                // 4. Else:
 61277  
 61278                if (fr[kAborted]) {
 61279                  return
 61280                }
 61281  
 61282                // 1. Set fr’s result to result.
 61283                fr[kResult] = result
 61284  
 61285                // 2. Fire a progress event called load at the fr.
 61286                fireAProgressEvent('load', fr)
 61287              } catch (error) {
 61288                // 3. If package data threw an exception error:
 61289  
 61290                // 1. Set fr’s error to error.
 61291                fr[kError] = error
 61292  
 61293                // 2. Fire a progress event called error at fr.
 61294                fireAProgressEvent('error', fr)
 61295              }
 61296  
 61297              // 5. If fr’s state is not "loading", fire a progress
 61298              //    event called loadend at the fr.
 61299              if (fr[kState] !== 'loading') {
 61300                fireAProgressEvent('loadend', fr)
 61301              }
 61302            })
 61303  
 61304            break
 61305          }
 61306        } catch (error) {
 61307          if (fr[kAborted]) {
 61308            return
 61309          }
 61310  
 61311          // 6. Otherwise, if chunkPromise is rejected with an
 61312          //    error error, queue a task to run the following
 61313          //    steps and abort this algorithm:
 61314          queueMicrotask(() => {
 61315            // 1. Set fr’s state to "done".
 61316            fr[kState] = 'done'
 61317  
 61318            // 2. Set fr’s error to error.
 61319            fr[kError] = error
 61320  
 61321            // 3. Fire a progress event called error at fr.
 61322            fireAProgressEvent('error', fr)
 61323  
 61324            // 4. If fr’s state is not "loading", fire a progress
 61325            //    event called loadend at fr.
 61326            if (fr[kState] !== 'loading') {
 61327              fireAProgressEvent('loadend', fr)
 61328            }
 61329          })
 61330  
 61331          break
 61332        }
 61333      }
 61334    })()
 61335  }
 61336  
 61337  /**
 61338   * @see https://w3c.github.io/FileAPI/#fire-a-progress-event
 61339   * @see https://dom.spec.whatwg.org/#concept-event-fire
 61340   * @param {string} e The name of the event
 61341   * @param {import('./filereader').FileReader} reader
 61342   */
 61343  function fireAProgressEvent (e, reader) {
 61344    // The progress event e does not bubble. e.bubbles must be false
 61345    // The progress event e is NOT cancelable. e.cancelable must be false
 61346    const event = new ProgressEvent(e, {
 61347      bubbles: false,
 61348      cancelable: false
 61349    })
 61350  
 61351    reader.dispatchEvent(event)
 61352  }
 61353  
 61354  /**
 61355   * @see https://w3c.github.io/FileAPI/#blob-package-data
 61356   * @param {Uint8Array[]} bytes
 61357   * @param {string} type
 61358   * @param {string?} mimeType
 61359   * @param {string?} encodingName
 61360   */
 61361  function packageData (bytes, type, mimeType, encodingName) {
 61362    // 1. A Blob has an associated package data algorithm, given
 61363    //    bytes, a type, a optional mimeType, and a optional
 61364    //    encodingName, which switches on type and runs the
 61365    //    associated steps:
 61366  
 61367    switch (type) {
 61368      case 'DataURL': {
 61369        // 1. Return bytes as a DataURL [RFC2397] subject to
 61370        //    the considerations below:
 61371        //  * Use mimeType as part of the Data URL if it is
 61372        //    available in keeping with the Data URL
 61373        //    specification [RFC2397].
 61374        //  * If mimeType is not available return a Data URL
 61375        //    without a media-type. [RFC2397].
 61376  
 61377        // https://datatracker.ietf.org/doc/html/rfc2397#section-3
 61378        // dataurl    := "data:" [ mediatype ] [ ";base64" ] "," data
 61379        // mediatype  := [ type "/" subtype ] *( ";" parameter )
 61380        // data       := *urlchar
 61381        // parameter  := attribute "=" value
 61382        let dataURL = 'data:'
 61383  
 61384        const parsed = parseMIMEType(mimeType || 'application/octet-stream')
 61385  
 61386        if (parsed !== 'failure') {
 61387          dataURL += serializeAMimeType(parsed)
 61388        }
 61389  
 61390        dataURL += ';base64,'
 61391  
 61392        const decoder = new StringDecoder('latin1')
 61393  
 61394        for (const chunk of bytes) {
 61395          dataURL += btoa(decoder.write(chunk))
 61396        }
 61397  
 61398        dataURL += btoa(decoder.end())
 61399  
 61400        return dataURL
 61401      }
 61402      case 'Text': {
 61403        // 1. Let encoding be failure
 61404        let encoding = 'failure'
 61405  
 61406        // 2. If the encodingName is present, set encoding to the
 61407        //    result of getting an encoding from encodingName.
 61408        if (encodingName) {
 61409          encoding = getEncoding(encodingName)
 61410        }
 61411  
 61412        // 3. If encoding is failure, and mimeType is present:
 61413        if (encoding === 'failure' && mimeType) {
 61414          // 1. Let type be the result of parse a MIME type
 61415          //    given mimeType.
 61416          const type = parseMIMEType(mimeType)
 61417  
 61418          // 2. If type is not failure, set encoding to the result
 61419          //    of getting an encoding from type’s parameters["charset"].
 61420          if (type !== 'failure') {
 61421            encoding = getEncoding(type.parameters.get('charset'))
 61422          }
 61423        }
 61424  
 61425        // 4. If encoding is failure, then set encoding to UTF-8.
 61426        if (encoding === 'failure') {
 61427          encoding = 'UTF-8'
 61428        }
 61429  
 61430        // 5. Decode bytes using fallback encoding encoding, and
 61431        //    return the result.
 61432        return decode(bytes, encoding)
 61433      }
 61434      case 'ArrayBuffer': {
 61435        // Return a new ArrayBuffer whose contents are bytes.
 61436        const sequence = combineByteSequences(bytes)
 61437  
 61438        return sequence.buffer
 61439      }
 61440      case 'BinaryString': {
 61441        // Return bytes as a binary string, in which every byte
 61442        //  is represented by a code unit of equal value [0..255].
 61443        let binaryString = ''
 61444  
 61445        const decoder = new StringDecoder('latin1')
 61446  
 61447        for (const chunk of bytes) {
 61448          binaryString += decoder.write(chunk)
 61449        }
 61450  
 61451        binaryString += decoder.end()
 61452  
 61453        return binaryString
 61454      }
 61455    }
 61456  }
 61457  
 61458  /**
 61459   * @see https://encoding.spec.whatwg.org/#decode
 61460   * @param {Uint8Array[]} ioQueue
 61461   * @param {string} encoding
 61462   */
 61463  function decode (ioQueue, encoding) {
 61464    const bytes = combineByteSequences(ioQueue)
 61465  
 61466    // 1. Let BOMEncoding be the result of BOM sniffing ioQueue.
 61467    const BOMEncoding = BOMSniffing(bytes)
 61468  
 61469    let slice = 0
 61470  
 61471    // 2. If BOMEncoding is non-null:
 61472    if (BOMEncoding !== null) {
 61473      // 1. Set encoding to BOMEncoding.
 61474      encoding = BOMEncoding
 61475  
 61476      // 2. Read three bytes from ioQueue, if BOMEncoding is
 61477      //    UTF-8; otherwise read two bytes.
 61478      //    (Do nothing with those bytes.)
 61479      slice = BOMEncoding === 'UTF-8' ? 3 : 2
 61480    }
 61481  
 61482    // 3. Process a queue with an instance of encoding’s
 61483    //    decoder, ioQueue, output, and "replacement".
 61484  
 61485    // 4. Return output.
 61486  
 61487    const sliced = bytes.slice(slice)
 61488    return new TextDecoder(encoding).decode(sliced)
 61489  }
 61490  
 61491  /**
 61492   * @see https://encoding.spec.whatwg.org/#bom-sniff
 61493   * @param {Uint8Array} ioQueue
 61494   */
 61495  function BOMSniffing (ioQueue) {
 61496    // 1. Let BOM be the result of peeking 3 bytes from ioQueue,
 61497    //    converted to a byte sequence.
 61498    const [a, b, c] = ioQueue
 61499  
 61500    // 2. For each of the rows in the table below, starting with
 61501    //    the first one and going down, if BOM starts with the
 61502    //    bytes given in the first column, then return the
 61503    //    encoding given in the cell in the second column of that
 61504    //    row. Otherwise, return null.
 61505    if (a === 0xEF && b === 0xBB && c === 0xBF) {
 61506      return 'UTF-8'
 61507    } else if (a === 0xFE && b === 0xFF) {
 61508      return 'UTF-16BE'
 61509    } else if (a === 0xFF && b === 0xFE) {
 61510      return 'UTF-16LE'
 61511    }
 61512  
 61513    return null
 61514  }
 61515  
 61516  /**
 61517   * @param {Uint8Array[]} sequences
 61518   */
 61519  function combineByteSequences (sequences) {
 61520    const size = sequences.reduce((a, b) => {
 61521      return a + b.byteLength
 61522    }, 0)
 61523  
 61524    let offset = 0
 61525  
 61526    return sequences.reduce((a, b) => {
 61527      a.set(b, offset)
 61528      offset += b.byteLength
 61529      return a
 61530    }, new Uint8Array(size))
 61531  }
 61532  
 61533  module.exports = {
 61534    staticPropertyDescriptors,
 61535    readOperation,
 61536    fireAProgressEvent
 61537  }
 61538  
 61539  
 61540  /***/ }),
 61541  
 61542  /***/ 21892:
 61543  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 61544  
 61545  "use strict";
 61546  
 61547  
 61548  // We include a version number for the Dispatcher API. In case of breaking changes,
 61549  // this version number must be increased to avoid conflicts.
 61550  const globalDispatcher = Symbol.for('undici.globalDispatcher.1')
 61551  const { InvalidArgumentError } = __nccwpck_require__(48045)
 61552  const Agent = __nccwpck_require__(7890)
 61553  
 61554  if (getGlobalDispatcher() === undefined) {
 61555    setGlobalDispatcher(new Agent())
 61556  }
 61557  
 61558  function setGlobalDispatcher (agent) {
 61559    if (!agent || typeof agent.dispatch !== 'function') {
 61560      throw new InvalidArgumentError('Argument agent must implement Agent')
 61561    }
 61562    Object.defineProperty(globalThis, globalDispatcher, {
 61563      value: agent,
 61564      writable: true,
 61565      enumerable: false,
 61566      configurable: false
 61567    })
 61568  }
 61569  
 61570  function getGlobalDispatcher () {
 61571    return globalThis[globalDispatcher]
 61572  }
 61573  
 61574  module.exports = {
 61575    setGlobalDispatcher,
 61576    getGlobalDispatcher
 61577  }
 61578  
 61579  
 61580  /***/ }),
 61581  
 61582  /***/ 46930:
 61583  /***/ ((module) => {
 61584  
 61585  "use strict";
 61586  
 61587  
 61588  module.exports = class DecoratorHandler {
 61589    constructor (handler) {
 61590      this.handler = handler
 61591    }
 61592  
 61593    onConnect (...args) {
 61594      return this.handler.onConnect(...args)
 61595    }
 61596  
 61597    onError (...args) {
 61598      return this.handler.onError(...args)
 61599    }
 61600  
 61601    onUpgrade (...args) {
 61602      return this.handler.onUpgrade(...args)
 61603    }
 61604  
 61605    onHeaders (...args) {
 61606      return this.handler.onHeaders(...args)
 61607    }
 61608  
 61609    onData (...args) {
 61610      return this.handler.onData(...args)
 61611    }
 61612  
 61613    onComplete (...args) {
 61614      return this.handler.onComplete(...args)
 61615    }
 61616  
 61617    onBodySent (...args) {
 61618      return this.handler.onBodySent(...args)
 61619    }
 61620  }
 61621  
 61622  
 61623  /***/ }),
 61624  
 61625  /***/ 72860:
 61626  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 61627  
 61628  "use strict";
 61629  
 61630  
 61631  const util = __nccwpck_require__(83983)
 61632  const { kBodyUsed } = __nccwpck_require__(72785)
 61633  const assert = __nccwpck_require__(39491)
 61634  const { InvalidArgumentError } = __nccwpck_require__(48045)
 61635  const EE = __nccwpck_require__(82361)
 61636  
 61637  const redirectableStatusCodes = [300, 301, 302, 303, 307, 308]
 61638  
 61639  const kBody = Symbol('body')
 61640  
 61641  class BodyAsyncIterable {
 61642    constructor (body) {
 61643      this[kBody] = body
 61644      this[kBodyUsed] = false
 61645    }
 61646  
 61647    async * [Symbol.asyncIterator] () {
 61648      assert(!this[kBodyUsed], 'disturbed')
 61649      this[kBodyUsed] = true
 61650      yield * this[kBody]
 61651    }
 61652  }
 61653  
 61654  class RedirectHandler {
 61655    constructor (dispatch, maxRedirections, opts, handler) {
 61656      if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {
 61657        throw new InvalidArgumentError('maxRedirections must be a positive number')
 61658      }
 61659  
 61660      util.validateHandler(handler, opts.method, opts.upgrade)
 61661  
 61662      this.dispatch = dispatch
 61663      this.location = null
 61664      this.abort = null
 61665      this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy
 61666      this.maxRedirections = maxRedirections
 61667      this.handler = handler
 61668      this.history = []
 61669  
 61670      if (util.isStream(this.opts.body)) {
 61671        // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp
 61672        // so that it can be dispatched again?
 61673        // TODO (fix): Do we need 100-expect support to provide a way to do this properly?
 61674        if (util.bodyLength(this.opts.body) === 0) {
 61675          this.opts.body
 61676            .on('data', function () {
 61677              assert(false)
 61678            })
 61679        }
 61680  
 61681        if (typeof this.opts.body.readableDidRead !== 'boolean') {
 61682          this.opts.body[kBodyUsed] = false
 61683          EE.prototype.on.call(this.opts.body, 'data', function () {
 61684            this[kBodyUsed] = true
 61685          })
 61686        }
 61687      } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') {
 61688        // TODO (fix): We can't access ReadableStream internal state
 61689        // to determine whether or not it has been disturbed. This is just
 61690        // a workaround.
 61691        this.opts.body = new BodyAsyncIterable(this.opts.body)
 61692      } else if (
 61693        this.opts.body &&
 61694        typeof this.opts.body !== 'string' &&
 61695        !ArrayBuffer.isView(this.opts.body) &&
 61696        util.isIterable(this.opts.body)
 61697      ) {
 61698        // TODO: Should we allow re-using iterable if !this.opts.idempotent
 61699        // or through some other flag?
 61700        this.opts.body = new BodyAsyncIterable(this.opts.body)
 61701      }
 61702    }
 61703  
 61704    onConnect (abort) {
 61705      this.abort = abort
 61706      this.handler.onConnect(abort, { history: this.history })
 61707    }
 61708  
 61709    onUpgrade (statusCode, headers, socket) {
 61710      this.handler.onUpgrade(statusCode, headers, socket)
 61711    }
 61712  
 61713    onError (error) {
 61714      this.handler.onError(error)
 61715    }
 61716  
 61717    onHeaders (statusCode, headers, resume, statusText) {
 61718      this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body)
 61719        ? null
 61720        : parseLocation(statusCode, headers)
 61721  
 61722      if (this.opts.origin) {
 61723        this.history.push(new URL(this.opts.path, this.opts.origin))
 61724      }
 61725  
 61726      if (!this.location) {
 61727        return this.handler.onHeaders(statusCode, headers, resume, statusText)
 61728      }
 61729  
 61730      const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)))
 61731      const path = search ? `${pathname}${search}` : pathname
 61732  
 61733      // Remove headers referring to the original URL.
 61734      // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers.
 61735      // https://tools.ietf.org/html/rfc7231#section-6.4
 61736      this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin)
 61737      this.opts.path = path
 61738      this.opts.origin = origin
 61739      this.opts.maxRedirections = 0
 61740      this.opts.query = null
 61741  
 61742      // https://tools.ietf.org/html/rfc7231#section-6.4.4
 61743      // In case of HTTP 303, always replace method to be either HEAD or GET
 61744      if (statusCode === 303 && this.opts.method !== 'HEAD') {
 61745        this.opts.method = 'GET'
 61746        this.opts.body = null
 61747      }
 61748    }
 61749  
 61750    onData (chunk) {
 61751      if (this.location) {
 61752        /*
 61753          https://tools.ietf.org/html/rfc7231#section-6.4
 61754  
 61755          TLDR: undici always ignores 3xx response bodies.
 61756  
 61757          Redirection is used to serve the requested resource from another URL, so it is assumes that
 61758          no body is generated (and thus can be ignored). Even though generating a body is not prohibited.
 61759  
 61760          For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually
 61761          (which means it's optional and not mandated) contain just an hyperlink to the value of
 61762          the Location response header, so the body can be ignored safely.
 61763  
 61764          For status 300, which is "Multiple Choices", the spec mentions both generating a Location
 61765          response header AND a response body with the other possible location to follow.
 61766          Since the spec explicitily chooses not to specify a format for such body and leave it to
 61767          servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it.
 61768        */
 61769      } else {
 61770        return this.handler.onData(chunk)
 61771      }
 61772    }
 61773  
 61774    onComplete (trailers) {
 61775      if (this.location) {
 61776        /*
 61777          https://tools.ietf.org/html/rfc7231#section-6.4
 61778  
 61779          TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections
 61780          and neither are useful if present.
 61781  
 61782          See comment on onData method above for more detailed informations.
 61783        */
 61784  
 61785        this.location = null
 61786        this.abort = null
 61787  
 61788        this.dispatch(this.opts, this)
 61789      } else {
 61790        this.handler.onComplete(trailers)
 61791      }
 61792    }
 61793  
 61794    onBodySent (chunk) {
 61795      if (this.handler.onBodySent) {
 61796        this.handler.onBodySent(chunk)
 61797      }
 61798    }
 61799  }
 61800  
 61801  function parseLocation (statusCode, headers) {
 61802    if (redirectableStatusCodes.indexOf(statusCode) === -1) {
 61803      return null
 61804    }
 61805  
 61806    for (let i = 0; i < headers.length; i += 2) {
 61807      if (headers[i].toString().toLowerCase() === 'location') {
 61808        return headers[i + 1]
 61809      }
 61810    }
 61811  }
 61812  
 61813  // https://tools.ietf.org/html/rfc7231#section-6.4.4
 61814  function shouldRemoveHeader (header, removeContent, unknownOrigin) {
 61815    if (header.length === 4) {
 61816      return util.headerNameToString(header) === 'host'
 61817    }
 61818    if (removeContent && util.headerNameToString(header).startsWith('content-')) {
 61819      return true
 61820    }
 61821    if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {
 61822      const name = util.headerNameToString(header)
 61823      return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'
 61824    }
 61825    return false
 61826  }
 61827  
 61828  // https://tools.ietf.org/html/rfc7231#section-6.4
 61829  function cleanRequestHeaders (headers, removeContent, unknownOrigin) {
 61830    const ret = []
 61831    if (Array.isArray(headers)) {
 61832      for (let i = 0; i < headers.length; i += 2) {
 61833        if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {
 61834          ret.push(headers[i], headers[i + 1])
 61835        }
 61836      }
 61837    } else if (headers && typeof headers === 'object') {
 61838      for (const key of Object.keys(headers)) {
 61839        if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {
 61840          ret.push(key, headers[key])
 61841        }
 61842      }
 61843    } else {
 61844      assert(headers == null, 'headers must be an object or an array')
 61845    }
 61846    return ret
 61847  }
 61848  
 61849  module.exports = RedirectHandler
 61850  
 61851  
 61852  /***/ }),
 61853  
 61854  /***/ 82286:
 61855  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 61856  
 61857  const assert = __nccwpck_require__(39491)
 61858  
 61859  const { kRetryHandlerDefaultRetry } = __nccwpck_require__(72785)
 61860  const { RequestRetryError } = __nccwpck_require__(48045)
 61861  const { isDisturbed, parseHeaders, parseRangeHeader } = __nccwpck_require__(83983)
 61862  
 61863  function calculateRetryAfterHeader (retryAfter) {
 61864    const current = Date.now()
 61865    const diff = new Date(retryAfter).getTime() - current
 61866  
 61867    return diff
 61868  }
 61869  
 61870  class RetryHandler {
 61871    constructor (opts, handlers) {
 61872      const { retryOptions, ...dispatchOpts } = opts
 61873      const {
 61874        // Retry scoped
 61875        retry: retryFn,
 61876        maxRetries,
 61877        maxTimeout,
 61878        minTimeout,
 61879        timeoutFactor,
 61880        // Response scoped
 61881        methods,
 61882        errorCodes,
 61883        retryAfter,
 61884        statusCodes
 61885      } = retryOptions ?? {}
 61886  
 61887      this.dispatch = handlers.dispatch
 61888      this.handler = handlers.handler
 61889      this.opts = dispatchOpts
 61890      this.abort = null
 61891      this.aborted = false
 61892      this.retryOpts = {
 61893        retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],
 61894        retryAfter: retryAfter ?? true,
 61895        maxTimeout: maxTimeout ?? 30 * 1000, // 30s,
 61896        timeout: minTimeout ?? 500, // .5s
 61897        timeoutFactor: timeoutFactor ?? 2,
 61898        maxRetries: maxRetries ?? 5,
 61899        // What errors we should retry
 61900        methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],
 61901        // Indicates which errors to retry
 61902        statusCodes: statusCodes ?? [500, 502, 503, 504, 429],
 61903        // List of errors to retry
 61904        errorCodes: errorCodes ?? [
 61905          'ECONNRESET',
 61906          'ECONNREFUSED',
 61907          'ENOTFOUND',
 61908          'ENETDOWN',
 61909          'ENETUNREACH',
 61910          'EHOSTDOWN',
 61911          'EHOSTUNREACH',
 61912          'EPIPE'
 61913        ]
 61914      }
 61915  
 61916      this.retryCount = 0
 61917      this.start = 0
 61918      this.end = null
 61919      this.etag = null
 61920      this.resume = null
 61921  
 61922      // Handle possible onConnect duplication
 61923      this.handler.onConnect(reason => {
 61924        this.aborted = true
 61925        if (this.abort) {
 61926          this.abort(reason)
 61927        } else {
 61928          this.reason = reason
 61929        }
 61930      })
 61931    }
 61932  
 61933    onRequestSent () {
 61934      if (this.handler.onRequestSent) {
 61935        this.handler.onRequestSent()
 61936      }
 61937    }
 61938  
 61939    onUpgrade (statusCode, headers, socket) {
 61940      if (this.handler.onUpgrade) {
 61941        this.handler.onUpgrade(statusCode, headers, socket)
 61942      }
 61943    }
 61944  
 61945    onConnect (abort) {
 61946      if (this.aborted) {
 61947        abort(this.reason)
 61948      } else {
 61949        this.abort = abort
 61950      }
 61951    }
 61952  
 61953    onBodySent (chunk) {
 61954      if (this.handler.onBodySent) return this.handler.onBodySent(chunk)
 61955    }
 61956  
 61957    static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {
 61958      const { statusCode, code, headers } = err
 61959      const { method, retryOptions } = opts
 61960      const {
 61961        maxRetries,
 61962        timeout,
 61963        maxTimeout,
 61964        timeoutFactor,
 61965        statusCodes,
 61966        errorCodes,
 61967        methods
 61968      } = retryOptions
 61969      let { counter, currentTimeout } = state
 61970  
 61971      currentTimeout =
 61972        currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout
 61973  
 61974      // Any code that is not a Undici's originated and allowed to retry
 61975      if (
 61976        code &&
 61977        code !== 'UND_ERR_REQ_RETRY' &&
 61978        code !== 'UND_ERR_SOCKET' &&
 61979        !errorCodes.includes(code)
 61980      ) {
 61981        cb(err)
 61982        return
 61983      }
 61984  
 61985      // If a set of method are provided and the current method is not in the list
 61986      if (Array.isArray(methods) && !methods.includes(method)) {
 61987        cb(err)
 61988        return
 61989      }
 61990  
 61991      // If a set of status code are provided and the current status code is not in the list
 61992      if (
 61993        statusCode != null &&
 61994        Array.isArray(statusCodes) &&
 61995        !statusCodes.includes(statusCode)
 61996      ) {
 61997        cb(err)
 61998        return
 61999      }
 62000  
 62001      // If we reached the max number of retries
 62002      if (counter > maxRetries) {
 62003        cb(err)
 62004        return
 62005      }
 62006  
 62007      let retryAfterHeader = headers != null && headers['retry-after']
 62008      if (retryAfterHeader) {
 62009        retryAfterHeader = Number(retryAfterHeader)
 62010        retryAfterHeader = isNaN(retryAfterHeader)
 62011          ? calculateRetryAfterHeader(retryAfterHeader)
 62012          : retryAfterHeader * 1e3 // Retry-After is in seconds
 62013      }
 62014  
 62015      const retryTimeout =
 62016        retryAfterHeader > 0
 62017          ? Math.min(retryAfterHeader, maxTimeout)
 62018          : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout)
 62019  
 62020      state.currentTimeout = retryTimeout
 62021  
 62022      setTimeout(() => cb(null), retryTimeout)
 62023    }
 62024  
 62025    onHeaders (statusCode, rawHeaders, resume, statusMessage) {
 62026      const headers = parseHeaders(rawHeaders)
 62027  
 62028      this.retryCount += 1
 62029  
 62030      if (statusCode >= 300) {
 62031        this.abort(
 62032          new RequestRetryError('Request failed', statusCode, {
 62033            headers,
 62034            count: this.retryCount
 62035          })
 62036        )
 62037        return false
 62038      }
 62039  
 62040      // Checkpoint for resume from where we left it
 62041      if (this.resume != null) {
 62042        this.resume = null
 62043  
 62044        if (statusCode !== 206) {
 62045          return true
 62046        }
 62047  
 62048        const contentRange = parseRangeHeader(headers['content-range'])
 62049        // If no content range
 62050        if (!contentRange) {
 62051          this.abort(
 62052            new RequestRetryError('Content-Range mismatch', statusCode, {
 62053              headers,
 62054              count: this.retryCount
 62055            })
 62056          )
 62057          return false
 62058        }
 62059  
 62060        // Let's start with a weak etag check
 62061        if (this.etag != null && this.etag !== headers.etag) {
 62062          this.abort(
 62063            new RequestRetryError('ETag mismatch', statusCode, {
 62064              headers,
 62065              count: this.retryCount
 62066            })
 62067          )
 62068          return false
 62069        }
 62070  
 62071        const { start, size, end = size } = contentRange
 62072  
 62073        assert(this.start === start, 'content-range mismatch')
 62074        assert(this.end == null || this.end === end, 'content-range mismatch')
 62075  
 62076        this.resume = resume
 62077        return true
 62078      }
 62079  
 62080      if (this.end == null) {
 62081        if (statusCode === 206) {
 62082          // First time we receive 206
 62083          const range = parseRangeHeader(headers['content-range'])
 62084  
 62085          if (range == null) {
 62086            return this.handler.onHeaders(
 62087              statusCode,
 62088              rawHeaders,
 62089              resume,
 62090              statusMessage
 62091            )
 62092          }
 62093  
 62094          const { start, size, end = size } = range
 62095  
 62096          assert(
 62097            start != null && Number.isFinite(start) && this.start !== start,
 62098            'content-range mismatch'
 62099          )
 62100          assert(Number.isFinite(start))
 62101          assert(
 62102            end != null && Number.isFinite(end) && this.end !== end,
 62103            'invalid content-length'
 62104          )
 62105  
 62106          this.start = start
 62107          this.end = end
 62108        }
 62109  
 62110        // We make our best to checkpoint the body for further range headers
 62111        if (this.end == null) {
 62112          const contentLength = headers['content-length']
 62113          this.end = contentLength != null ? Number(contentLength) : null
 62114        }
 62115  
 62116        assert(Number.isFinite(this.start))
 62117        assert(
 62118          this.end == null || Number.isFinite(this.end),
 62119          'invalid content-length'
 62120        )
 62121  
 62122        this.resume = resume
 62123        this.etag = headers.etag != null ? headers.etag : null
 62124  
 62125        return this.handler.onHeaders(
 62126          statusCode,
 62127          rawHeaders,
 62128          resume,
 62129          statusMessage
 62130        )
 62131      }
 62132  
 62133      const err = new RequestRetryError('Request failed', statusCode, {
 62134        headers,
 62135        count: this.retryCount
 62136      })
 62137  
 62138      this.abort(err)
 62139  
 62140      return false
 62141    }
 62142  
 62143    onData (chunk) {
 62144      this.start += chunk.length
 62145  
 62146      return this.handler.onData(chunk)
 62147    }
 62148  
 62149    onComplete (rawTrailers) {
 62150      this.retryCount = 0
 62151      return this.handler.onComplete(rawTrailers)
 62152    }
 62153  
 62154    onError (err) {
 62155      if (this.aborted || isDisturbed(this.opts.body)) {
 62156        return this.handler.onError(err)
 62157      }
 62158  
 62159      this.retryOpts.retry(
 62160        err,
 62161        {
 62162          state: { counter: this.retryCount++, currentTimeout: this.retryAfter },
 62163          opts: { retryOptions: this.retryOpts, ...this.opts }
 62164        },
 62165        onRetry.bind(this)
 62166      )
 62167  
 62168      function onRetry (err) {
 62169        if (err != null || this.aborted || isDisturbed(this.opts.body)) {
 62170          return this.handler.onError(err)
 62171        }
 62172  
 62173        if (this.start !== 0) {
 62174          this.opts = {
 62175            ...this.opts,
 62176            headers: {
 62177              ...this.opts.headers,
 62178              range: `bytes=${this.start}-${this.end ?? ''}`
 62179            }
 62180          }
 62181        }
 62182  
 62183        try {
 62184          this.dispatch(this.opts, this)
 62185        } catch (err) {
 62186          this.handler.onError(err)
 62187        }
 62188      }
 62189    }
 62190  }
 62191  
 62192  module.exports = RetryHandler
 62193  
 62194  
 62195  /***/ }),
 62196  
 62197  /***/ 38861:
 62198  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 62199  
 62200  "use strict";
 62201  
 62202  
 62203  const RedirectHandler = __nccwpck_require__(72860)
 62204  
 62205  function createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) {
 62206    return (dispatch) => {
 62207      return function Intercept (opts, handler) {
 62208        const { maxRedirections = defaultMaxRedirections } = opts
 62209  
 62210        if (!maxRedirections) {
 62211          return dispatch(opts, handler)
 62212        }
 62213  
 62214        const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler)
 62215        opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting.
 62216        return dispatch(opts, redirectHandler)
 62217      }
 62218    }
 62219  }
 62220  
 62221  module.exports = createRedirectInterceptor
 62222  
 62223  
 62224  /***/ }),
 62225  
 62226  /***/ 30953:
 62227  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 62228  
 62229  "use strict";
 62230  
 62231  Object.defineProperty(exports, "__esModule", ({ value: true }));
 62232  exports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;
 62233  const utils_1 = __nccwpck_require__(41891);
 62234  // C headers
 62235  var ERROR;
 62236  (function (ERROR) {
 62237      ERROR[ERROR["OK"] = 0] = "OK";
 62238      ERROR[ERROR["INTERNAL"] = 1] = "INTERNAL";
 62239      ERROR[ERROR["STRICT"] = 2] = "STRICT";
 62240      ERROR[ERROR["LF_EXPECTED"] = 3] = "LF_EXPECTED";
 62241      ERROR[ERROR["UNEXPECTED_CONTENT_LENGTH"] = 4] = "UNEXPECTED_CONTENT_LENGTH";
 62242      ERROR[ERROR["CLOSED_CONNECTION"] = 5] = "CLOSED_CONNECTION";
 62243      ERROR[ERROR["INVALID_METHOD"] = 6] = "INVALID_METHOD";
 62244      ERROR[ERROR["INVALID_URL"] = 7] = "INVALID_URL";
 62245      ERROR[ERROR["INVALID_CONSTANT"] = 8] = "INVALID_CONSTANT";
 62246      ERROR[ERROR["INVALID_VERSION"] = 9] = "INVALID_VERSION";
 62247      ERROR[ERROR["INVALID_HEADER_TOKEN"] = 10] = "INVALID_HEADER_TOKEN";
 62248      ERROR[ERROR["INVALID_CONTENT_LENGTH"] = 11] = "INVALID_CONTENT_LENGTH";
 62249      ERROR[ERROR["INVALID_CHUNK_SIZE"] = 12] = "INVALID_CHUNK_SIZE";
 62250      ERROR[ERROR["INVALID_STATUS"] = 13] = "INVALID_STATUS";
 62251      ERROR[ERROR["INVALID_EOF_STATE"] = 14] = "INVALID_EOF_STATE";
 62252      ERROR[ERROR["INVALID_TRANSFER_ENCODING"] = 15] = "INVALID_TRANSFER_ENCODING";
 62253      ERROR[ERROR["CB_MESSAGE_BEGIN"] = 16] = "CB_MESSAGE_BEGIN";
 62254      ERROR[ERROR["CB_HEADERS_COMPLETE"] = 17] = "CB_HEADERS_COMPLETE";
 62255      ERROR[ERROR["CB_MESSAGE_COMPLETE"] = 18] = "CB_MESSAGE_COMPLETE";
 62256      ERROR[ERROR["CB_CHUNK_HEADER"] = 19] = "CB_CHUNK_HEADER";
 62257      ERROR[ERROR["CB_CHUNK_COMPLETE"] = 20] = "CB_CHUNK_COMPLETE";
 62258      ERROR[ERROR["PAUSED"] = 21] = "PAUSED";
 62259      ERROR[ERROR["PAUSED_UPGRADE"] = 22] = "PAUSED_UPGRADE";
 62260      ERROR[ERROR["PAUSED_H2_UPGRADE"] = 23] = "PAUSED_H2_UPGRADE";
 62261      ERROR[ERROR["USER"] = 24] = "USER";
 62262  })(ERROR = exports.ERROR || (exports.ERROR = {}));
 62263  var TYPE;
 62264  (function (TYPE) {
 62265      TYPE[TYPE["BOTH"] = 0] = "BOTH";
 62266      TYPE[TYPE["REQUEST"] = 1] = "REQUEST";
 62267      TYPE[TYPE["RESPONSE"] = 2] = "RESPONSE";
 62268  })(TYPE = exports.TYPE || (exports.TYPE = {}));
 62269  var FLAGS;
 62270  (function (FLAGS) {
 62271      FLAGS[FLAGS["CONNECTION_KEEP_ALIVE"] = 1] = "CONNECTION_KEEP_ALIVE";
 62272      FLAGS[FLAGS["CONNECTION_CLOSE"] = 2] = "CONNECTION_CLOSE";
 62273      FLAGS[FLAGS["CONNECTION_UPGRADE"] = 4] = "CONNECTION_UPGRADE";
 62274      FLAGS[FLAGS["CHUNKED"] = 8] = "CHUNKED";
 62275      FLAGS[FLAGS["UPGRADE"] = 16] = "UPGRADE";
 62276      FLAGS[FLAGS["CONTENT_LENGTH"] = 32] = "CONTENT_LENGTH";
 62277      FLAGS[FLAGS["SKIPBODY"] = 64] = "SKIPBODY";
 62278      FLAGS[FLAGS["TRAILING"] = 128] = "TRAILING";
 62279      // 1 << 8 is unused
 62280      FLAGS[FLAGS["TRANSFER_ENCODING"] = 512] = "TRANSFER_ENCODING";
 62281  })(FLAGS = exports.FLAGS || (exports.FLAGS = {}));
 62282  var LENIENT_FLAGS;
 62283  (function (LENIENT_FLAGS) {
 62284      LENIENT_FLAGS[LENIENT_FLAGS["HEADERS"] = 1] = "HEADERS";
 62285      LENIENT_FLAGS[LENIENT_FLAGS["CHUNKED_LENGTH"] = 2] = "CHUNKED_LENGTH";
 62286      LENIENT_FLAGS[LENIENT_FLAGS["KEEP_ALIVE"] = 4] = "KEEP_ALIVE";
 62287  })(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}));
 62288  var METHODS;
 62289  (function (METHODS) {
 62290      METHODS[METHODS["DELETE"] = 0] = "DELETE";
 62291      METHODS[METHODS["GET"] = 1] = "GET";
 62292      METHODS[METHODS["HEAD"] = 2] = "HEAD";
 62293      METHODS[METHODS["POST"] = 3] = "POST";
 62294      METHODS[METHODS["PUT"] = 4] = "PUT";
 62295      /* pathological */
 62296      METHODS[METHODS["CONNECT"] = 5] = "CONNECT";
 62297      METHODS[METHODS["OPTIONS"] = 6] = "OPTIONS";
 62298      METHODS[METHODS["TRACE"] = 7] = "TRACE";
 62299      /* WebDAV */
 62300      METHODS[METHODS["COPY"] = 8] = "COPY";
 62301      METHODS[METHODS["LOCK"] = 9] = "LOCK";
 62302      METHODS[METHODS["MKCOL"] = 10] = "MKCOL";
 62303      METHODS[METHODS["MOVE"] = 11] = "MOVE";
 62304      METHODS[METHODS["PROPFIND"] = 12] = "PROPFIND";
 62305      METHODS[METHODS["PROPPATCH"] = 13] = "PROPPATCH";
 62306      METHODS[METHODS["SEARCH"] = 14] = "SEARCH";
 62307      METHODS[METHODS["UNLOCK"] = 15] = "UNLOCK";
 62308      METHODS[METHODS["BIND"] = 16] = "BIND";
 62309      METHODS[METHODS["REBIND"] = 17] = "REBIND";
 62310      METHODS[METHODS["UNBIND"] = 18] = "UNBIND";
 62311      METHODS[METHODS["ACL"] = 19] = "ACL";
 62312      /* subversion */
 62313      METHODS[METHODS["REPORT"] = 20] = "REPORT";
 62314      METHODS[METHODS["MKACTIVITY"] = 21] = "MKACTIVITY";
 62315      METHODS[METHODS["CHECKOUT"] = 22] = "CHECKOUT";
 62316      METHODS[METHODS["MERGE"] = 23] = "MERGE";
 62317      /* upnp */
 62318      METHODS[METHODS["M-SEARCH"] = 24] = "M-SEARCH";
 62319      METHODS[METHODS["NOTIFY"] = 25] = "NOTIFY";
 62320      METHODS[METHODS["SUBSCRIBE"] = 26] = "SUBSCRIBE";
 62321      METHODS[METHODS["UNSUBSCRIBE"] = 27] = "UNSUBSCRIBE";
 62322      /* RFC-5789 */
 62323      METHODS[METHODS["PATCH"] = 28] = "PATCH";
 62324      METHODS[METHODS["PURGE"] = 29] = "PURGE";
 62325      /* CalDAV */
 62326      METHODS[METHODS["MKCALENDAR"] = 30] = "MKCALENDAR";
 62327      /* RFC-2068, section 19.6.1.2 */
 62328      METHODS[METHODS["LINK"] = 31] = "LINK";
 62329      METHODS[METHODS["UNLINK"] = 32] = "UNLINK";
 62330      /* icecast */
 62331      METHODS[METHODS["SOURCE"] = 33] = "SOURCE";
 62332      /* RFC-7540, section 11.6 */
 62333      METHODS[METHODS["PRI"] = 34] = "PRI";
 62334      /* RFC-2326 RTSP */
 62335      METHODS[METHODS["DESCRIBE"] = 35] = "DESCRIBE";
 62336      METHODS[METHODS["ANNOUNCE"] = 36] = "ANNOUNCE";
 62337      METHODS[METHODS["SETUP"] = 37] = "SETUP";
 62338      METHODS[METHODS["PLAY"] = 38] = "PLAY";
 62339      METHODS[METHODS["PAUSE"] = 39] = "PAUSE";
 62340      METHODS[METHODS["TEARDOWN"] = 40] = "TEARDOWN";
 62341      METHODS[METHODS["GET_PARAMETER"] = 41] = "GET_PARAMETER";
 62342      METHODS[METHODS["SET_PARAMETER"] = 42] = "SET_PARAMETER";
 62343      METHODS[METHODS["REDIRECT"] = 43] = "REDIRECT";
 62344      METHODS[METHODS["RECORD"] = 44] = "RECORD";
 62345      /* RAOP */
 62346      METHODS[METHODS["FLUSH"] = 45] = "FLUSH";
 62347  })(METHODS = exports.METHODS || (exports.METHODS = {}));
 62348  exports.METHODS_HTTP = [
 62349      METHODS.DELETE,
 62350      METHODS.GET,
 62351      METHODS.HEAD,
 62352      METHODS.POST,
 62353      METHODS.PUT,
 62354      METHODS.CONNECT,
 62355      METHODS.OPTIONS,
 62356      METHODS.TRACE,
 62357      METHODS.COPY,
 62358      METHODS.LOCK,
 62359      METHODS.MKCOL,
 62360      METHODS.MOVE,
 62361      METHODS.PROPFIND,
 62362      METHODS.PROPPATCH,
 62363      METHODS.SEARCH,
 62364      METHODS.UNLOCK,
 62365      METHODS.BIND,
 62366      METHODS.REBIND,
 62367      METHODS.UNBIND,
 62368      METHODS.ACL,
 62369      METHODS.REPORT,
 62370      METHODS.MKACTIVITY,
 62371      METHODS.CHECKOUT,
 62372      METHODS.MERGE,
 62373      METHODS['M-SEARCH'],
 62374      METHODS.NOTIFY,
 62375      METHODS.SUBSCRIBE,
 62376      METHODS.UNSUBSCRIBE,
 62377      METHODS.PATCH,
 62378      METHODS.PURGE,
 62379      METHODS.MKCALENDAR,
 62380      METHODS.LINK,
 62381      METHODS.UNLINK,
 62382      METHODS.PRI,
 62383      // TODO(indutny): should we allow it with HTTP?
 62384      METHODS.SOURCE,
 62385  ];
 62386  exports.METHODS_ICE = [
 62387      METHODS.SOURCE,
 62388  ];
 62389  exports.METHODS_RTSP = [
 62390      METHODS.OPTIONS,
 62391      METHODS.DESCRIBE,
 62392      METHODS.ANNOUNCE,
 62393      METHODS.SETUP,
 62394      METHODS.PLAY,
 62395      METHODS.PAUSE,
 62396      METHODS.TEARDOWN,
 62397      METHODS.GET_PARAMETER,
 62398      METHODS.SET_PARAMETER,
 62399      METHODS.REDIRECT,
 62400      METHODS.RECORD,
 62401      METHODS.FLUSH,
 62402      // For AirPlay
 62403      METHODS.GET,
 62404      METHODS.POST,
 62405  ];
 62406  exports.METHOD_MAP = utils_1.enumToMap(METHODS);
 62407  exports.H_METHOD_MAP = {};
 62408  Object.keys(exports.METHOD_MAP).forEach((key) => {
 62409      if (/^H/.test(key)) {
 62410          exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key];
 62411      }
 62412  });
 62413  var FINISH;
 62414  (function (FINISH) {
 62415      FINISH[FINISH["SAFE"] = 0] = "SAFE";
 62416      FINISH[FINISH["SAFE_WITH_CB"] = 1] = "SAFE_WITH_CB";
 62417      FINISH[FINISH["UNSAFE"] = 2] = "UNSAFE";
 62418  })(FINISH = exports.FINISH || (exports.FINISH = {}));
 62419  exports.ALPHA = [];
 62420  for (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {
 62421      // Upper case
 62422      exports.ALPHA.push(String.fromCharCode(i));
 62423      // Lower case
 62424      exports.ALPHA.push(String.fromCharCode(i + 0x20));
 62425  }
 62426  exports.NUM_MAP = {
 62427      0: 0, 1: 1, 2: 2, 3: 3, 4: 4,
 62428      5: 5, 6: 6, 7: 7, 8: 8, 9: 9,
 62429  };
 62430  exports.HEX_MAP = {
 62431      0: 0, 1: 1, 2: 2, 3: 3, 4: 4,
 62432      5: 5, 6: 6, 7: 7, 8: 8, 9: 9,
 62433      A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF,
 62434      a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf,
 62435  };
 62436  exports.NUM = [
 62437      '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
 62438  ];
 62439  exports.ALPHANUM = exports.ALPHA.concat(exports.NUM);
 62440  exports.MARK = ['-', '_', '.', '!', '~', '*', '\'', '(', ')'];
 62441  exports.USERINFO_CHARS = exports.ALPHANUM
 62442      .concat(exports.MARK)
 62443      .concat(['%', ';', ':', '&', '=', '+', '$', ',']);
 62444  // TODO(indutny): use RFC
 62445  exports.STRICT_URL_CHAR = [
 62446      '!', '"', '$', '%', '&', '\'',
 62447      '(', ')', '*', '+', ',', '-', '.', '/',
 62448      ':', ';', '<', '=', '>',
 62449      '@', '[', '\\', ']', '^', '_',
 62450      '`',
 62451      '{', '|', '}', '~',
 62452  ].concat(exports.ALPHANUM);
 62453  exports.URL_CHAR = exports.STRICT_URL_CHAR
 62454      .concat(['\t', '\f']);
 62455  // All characters with 0x80 bit set to 1
 62456  for (let i = 0x80; i <= 0xff; i++) {
 62457      exports.URL_CHAR.push(i);
 62458  }
 62459  exports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']);
 62460  /* Tokens as defined by rfc 2616. Also lowercases them.
 62461   *        token       = 1*<any CHAR except CTLs or separators>
 62462   *     separators     = "(" | ")" | "<" | ">" | "@"
 62463   *                    | "," | ";" | ":" | "\" | <">
 62464   *                    | "/" | "[" | "]" | "?" | "="
 62465   *                    | "{" | "}" | SP | HT
 62466   */
 62467  exports.STRICT_TOKEN = [
 62468      '!', '#', '$', '%', '&', '\'',
 62469      '*', '+', '-', '.',
 62470      '^', '_', '`',
 62471      '|', '~',
 62472  ].concat(exports.ALPHANUM);
 62473  exports.TOKEN = exports.STRICT_TOKEN.concat([' ']);
 62474  /*
 62475   * Verify that a char is a valid visible (printable) US-ASCII
 62476   * character or %x80-FF
 62477   */
 62478  exports.HEADER_CHARS = ['\t'];
 62479  for (let i = 32; i <= 255; i++) {
 62480      if (i !== 127) {
 62481          exports.HEADER_CHARS.push(i);
 62482      }
 62483  }
 62484  // ',' = \x44
 62485  exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);
 62486  exports.MAJOR = exports.NUM_MAP;
 62487  exports.MINOR = exports.MAJOR;
 62488  var HEADER_STATE;
 62489  (function (HEADER_STATE) {
 62490      HEADER_STATE[HEADER_STATE["GENERAL"] = 0] = "GENERAL";
 62491      HEADER_STATE[HEADER_STATE["CONNECTION"] = 1] = "CONNECTION";
 62492      HEADER_STATE[HEADER_STATE["CONTENT_LENGTH"] = 2] = "CONTENT_LENGTH";
 62493      HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING"] = 3] = "TRANSFER_ENCODING";
 62494      HEADER_STATE[HEADER_STATE["UPGRADE"] = 4] = "UPGRADE";
 62495      HEADER_STATE[HEADER_STATE["CONNECTION_KEEP_ALIVE"] = 5] = "CONNECTION_KEEP_ALIVE";
 62496      HEADER_STATE[HEADER_STATE["CONNECTION_CLOSE"] = 6] = "CONNECTION_CLOSE";
 62497      HEADER_STATE[HEADER_STATE["CONNECTION_UPGRADE"] = 7] = "CONNECTION_UPGRADE";
 62498      HEADER_STATE[HEADER_STATE["TRANSFER_ENCODING_CHUNKED"] = 8] = "TRANSFER_ENCODING_CHUNKED";
 62499  })(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}));
 62500  exports.SPECIAL_HEADERS = {
 62501      'connection': HEADER_STATE.CONNECTION,
 62502      'content-length': HEADER_STATE.CONTENT_LENGTH,
 62503      'proxy-connection': HEADER_STATE.CONNECTION,
 62504      'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING,
 62505      'upgrade': HEADER_STATE.UPGRADE,
 62506  };
 62507  //# sourceMappingURL=constants.js.map
 62508  
 62509  /***/ }),
 62510  
 62511  /***/ 61145:
 62512  /***/ ((module) => {
 62513  
 62514  module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJsbGh0dHBfc3RhdHVzX25hbWUAIRpsbGh0dHBfc2V0X2xlbmllbnRfaGVhZGVycwAiIWxsaHR0cF9zZXRfbGVuaWVudF9jaHVua2VkX2xlbmd0aAAjHWxsaHR0cF9zZXRfbGVuaWVudF9rZWVwX2FsaXZlACQkbGxodHRwX3NldF9sZW5pZW50X3RyYW5zZmVyX2VuY29kaW5nACUYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mAD8JFwEAQQELEQECAwQFCwYHNTk3MS8tJyspCsLgAkUCAAsIABCIgICAAAsZACAAEMKAgIAAGiAAIAI2AjggACABOgAoCxwAIAAgAC8BMiAALQAuIAAQwYCAgAAQgICAgAALKgEBf0HAABDGgICAACIBEMKAgIAAGiABQYCIgIAANgI4IAEgADoAKCABCwoAIAAQyICAgAALBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LRQEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABDCgICAABogACAENgI4IAAgAzoAKCAAIAI6AC0gACABNgIYCxEAIAAgASABIAJqEMOAgIAACxAAIABBAEHcABDMgICAABoLZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI4IgFFDQAgASgCLCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQyoCAgAAACyAAQcOWgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQdGbgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBJEkNABDKgICAAAALIABBAnRBoLOAgABqKAIACyIAAkAgAEEuSQ0AEMqAgIAAAAsgAEECdEGwtICAAGooAgAL7gsBAX9B66iAgAAhAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABBnH9qDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0Hhp4CAAA8LQaShgIAADwtBy6yAgAAPC0H+sYCAAA8LQcCkgIAADwtBq6SAgAAPC0GNqICAAA8LQeKmgIAADwtBgLCAgAAPC0G5r4CAAA8LQdekgIAADwtB75+AgAAPC0Hhn4CAAA8LQfqfgIAADwtB8qCAgAAPC0Gor4CAAA8LQa6ygIAADwtBiLCAgAAPC0Hsp4CAAA8LQYKigIAADwtBjp2AgAAPC0HQroCAAA8LQcqjgIAADwtBxbKAgAAPC0HfnICAAA8LQdKcgIAADwtBxKCAgAAPC0HXoICAAA8LQaKfgIAADwtB7a6AgAAPC0GrsICAAA8LQdSlgIAADwtBzK6AgAAPC0H6roCAAA8LQfyrgIAADwtB0rCAgAAPC0HxnYCAAA8LQbuggIAADwtB96uAgAAPC0GQsYCAAA8LQdexgIAADwtBoq2AgAAPC0HUp4CAAA8LQeCrgIAADwtBn6yAgAAPC0HrsYCAAA8LQdWfgIAADwtByrGAgAAPC0HepYCAAA8LQdSegIAADwtB9JyAgAAPC0GnsoCAAA8LQbGdgIAADwtBoJ2AgAAPC0G5sYCAAA8LQbywgIAADwtBkqGAgAAPC0GzpoCAAA8LQemsgIAADwtBrJ6AgAAPC0HUq4CAAA8LQfemgIAADwtBgKaAgAAPC0GwoYCAAA8LQf6egIAADwtBjaOAgAAPC0GJrYCAAA8LQfeigIAADwtBoLGAgAAPC0Gun4CAAA8LQcalgIAADwtB6J6AgAAPC0GTooCAAA8LQcKvgIAADwtBw52AgAAPC0GLrICAAA8LQeGdgIAADwtBja+AgAAPC0HqoYCAAA8LQbStgIAADwtB0q+AgAAPC0HfsoCAAA8LQdKygIAADwtB8LCAgAAPC0GpooCAAA8LQfmjgIAADwtBmZ6AgAAPC0G1rICAAA8LQZuwgIAADwtBkrKAgAAPC0G2q4CAAA8LQcKigIAADwtB+LKAgAAPC0GepYCAAA8LQdCigIAADwtBup6AgAAPC0GBnoCAAA8LEMqAgIAAAAtB1qGAgAAhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcaRgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIwIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2ioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCNCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZqAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAjgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZWQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAI8IgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAhQiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEGqm4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCQCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAigiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2iICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCUCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIcIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBwpmAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCICIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZSUgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAJMIgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAlQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCWCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL/gEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARB//8DcSIDQQhxDQACQCADQYAEcUUNAAJAIAAtAChBAUcNACAALQAtQQpxDQBBBQ8LQQQPCwJAIANBIHENAAJAIAAtAChBAUYNACAALwEyQf//A3EiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQShxRQ0CIANBiARxQYAERg0CC0EADwtBAEEDIAApAyBQGyEFCyAFC2IBAn9BACEBAkAgAC0AKEEBRg0AIAAvATJB//8DcSICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6cBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMkH//wNxIgVBnH9qQeQASQ0AIAVBzAFGDQAgBUGwAkYNACAEQcAAcQ0AQQAhAyAEQYgEcUGABEYNACAEQShxQQBHIQMLIABBADsBMCAAQQA6AC8gAwuZAQECfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEBIAAvATAiAkECcUUNAQwCC0EAIQEgAC8BMCICQQFxRQ0BC0EBIQEgAC0AKEEBRg0AIAAvATJB//8DcSIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC1kAIABBGGpCADcDACAAQgA3AwAgAEE4akIANwMAIABBMGpCADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwHLAcoBuAHJAbkByAG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAQDcAQtBACEQDMYBC0EOIRAMxQELQQ0hEAzEAQtBDyEQDMMBC0EQIRAMwgELQRMhEAzBAQtBFCEQDMABC0EVIRAMvwELQRYhEAy+AQtBFyEQDL0BC0EYIRAMvAELQRkhEAy7AQtBGiEQDLoBC0EbIRAMuQELQRwhEAy4AQtBCCEQDLcBC0EdIRAMtgELQSAhEAy1AQtBHyEQDLQBC0EHIRAMswELQSEhEAyyAQtBIiEQDLEBC0EeIRAMsAELQSMhEAyvAQtBEiEQDK4BC0ERIRAMrQELQSQhEAysAQtBJSEQDKsBC0EmIRAMqgELQSchEAypAQtBwwEhEAyoAQtBKSEQDKcBC0ErIRAMpgELQSwhEAylAQtBLSEQDKQBC0EuIRAMowELQS8hEAyiAQtBxAEhEAyhAQtBMCEQDKABC0E0IRAMnwELQQwhEAyeAQtBMSEQDJ0BC0EyIRAMnAELQTMhEAybAQtBOSEQDJoBC0E1IRAMmQELQcUBIRAMmAELQQshEAyXAQtBOiEQDJYBC0E2IRAMlQELQQohEAyUAQtBNyEQDJMBC0E4IRAMkgELQTwhEAyRAQtBOyEQDJABC0E9IRAMjwELQQkhEAyOAQtBKCEQDI0BC0E+IRAMjAELQT8hEAyLAQtBwAAhEAyKAQtBwQAhEAyJAQtBwgAhEAyIAQtBwwAhEAyHAQtBxAAhEAyGAQtBxQAhEAyFAQtBxgAhEAyEAQtBKiEQDIMBC0HHACEQDIIBC0HIACEQDIEBC0HJACEQDIABC0HKACEQDH8LQcsAIRAMfgtBzQAhEAx9C0HMACEQDHwLQc4AIRAMewtBzwAhEAx6C0HQACEQDHkLQdEAIRAMeAtB0gAhEAx3C0HTACEQDHYLQdQAIRAMdQtB1gAhEAx0C0HVACEQDHMLQQYhEAxyC0HXACEQDHELQQUhEAxwC0HYACEQDG8LQQQhEAxuC0HZACEQDG0LQdoAIRAMbAtB2wAhEAxrC0HcACEQDGoLQQMhEAxpC0HdACEQDGgLQd4AIRAMZwtB3wAhEAxmC0HhACEQDGULQeAAIRAMZAtB4gAhEAxjC0HjACEQDGILQQIhEAxhC0HkACEQDGALQeUAIRAMXwtB5gAhEAxeC0HnACEQDF0LQegAIRAMXAtB6QAhEAxbC0HqACEQDFoLQesAIRAMWQtB7AAhEAxYC0HtACEQDFcLQe4AIRAMVgtB7wAhEAxVC0HwACEQDFQLQfEAIRAMUwtB8gAhEAxSC0HzACEQDFELQfQAIRAMUAtB9QAhEAxPC0H2ACEQDE4LQfcAIRAMTQtB+AAhEAxMC0H5ACEQDEsLQfoAIRAMSgtB+wAhEAxJC0H8ACEQDEgLQf0AIRAMRwtB/gAhEAxGC0H/ACEQDEULQYABIRAMRAtBgQEhEAxDC0GCASEQDEILQYMBIRAMQQtBhAEhEAxAC0GFASEQDD8LQYYBIRAMPgtBhwEhEAw9C0GIASEQDDwLQYkBIRAMOwtBigEhEAw6C0GLASEQDDkLQYwBIRAMOAtBjQEhEAw3C0GOASEQDDYLQY8BIRAMNQtBkAEhEAw0C0GRASEQDDMLQZIBIRAMMgtBkwEhEAwxC0GUASEQDDALQZUBIRAMLwtBlgEhEAwuC0GXASEQDC0LQZgBIRAMLAtBmQEhEAwrC0GaASEQDCoLQZsBIRAMKQtBnAEhEAwoC0GdASEQDCcLQZ4BIRAMJgtBnwEhEAwlC0GgASEQDCQLQaEBIRAMIwtBogEhEAwiC0GjASEQDCELQaQBIRAMIAtBpQEhEAwfC0GmASEQDB4LQacBIRAMHQtBqAEhEAwcC0GpASEQDBsLQaoBIRAMGgtBqwEhEAwZC0GsASEQDBgLQa0BIRAMFwtBrgEhEAwWC0EBIRAMFQtBrwEhEAwUC0GwASEQDBMLQbEBIRAMEgtBswEhEAwRC0GyASEQDBALQbQBIRAMDwtBtQEhEAwOC0G2ASEQDA0LQbcBIRAMDAtBuAEhEAwLC0G5ASEQDAoLQboBIRAMCQtBuwEhEAwIC0HGASEQDAcLQbwBIRAMBgtBvQEhEAwFC0G+ASEQDAQLQb8BIRAMAwtBwAEhEAwCC0HCASEQDAELQcEBIRALA0ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQDscBAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxweHyAhIyUoP0BBREVGR0hJSktMTU9QUVJT3gNXWVtcXWBiZWZnaGlqa2xtb3BxcnN0dXZ3eHl6e3x9foABggGFAYYBhwGJAYsBjAGNAY4BjwGQAZEBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAZkCpAKwAv4C/gILIAEiBCACRw3zAUHdASEQDP8DCyABIhAgAkcN3QFBwwEhEAz+AwsgASIBIAJHDZABQfcAIRAM/QMLIAEiASACRw2GAUHvACEQDPwDCyABIgEgAkcNf0HqACEQDPsDCyABIgEgAkcNe0HoACEQDPoDCyABIgEgAkcNeEHmACEQDPkDCyABIgEgAkcNGkEYIRAM+AMLIAEiASACRw0UQRIhEAz3AwsgASIBIAJHDVlBxQAhEAz2AwsgASIBIAJHDUpBPyEQDPUDCyABIgEgAkcNSEE8IRAM9AMLIAEiASACRw1BQTEhEAzzAwsgAC0ALkEBRg3rAwyHAgsgACABIgEgAhDAgICAAEEBRw3mASAAQgA3AyAM5wELIAAgASIBIAIQtICAgAAiEA3nASABIQEM9QILAkAgASIBIAJHDQBBBiEQDPADCyAAIAFBAWoiASACELuAgIAAIhAN6AEgASEBDDELIABCADcDIEESIRAM1QMLIAEiECACRw0rQR0hEAztAwsCQCABIgEgAkYNACABQQFqIQFBECEQDNQDC0EHIRAM7AMLIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN5QFBCCEQDOsDCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEUIRAM0gMLQQkhEAzqAwsgASEBIAApAyBQDeQBIAEhAQzyAgsCQCABIgEgAkcNAEELIRAM6QMLIAAgAUEBaiIBIAIQtoCAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3lASABIQEM8gILIAAgASIBIAIQuICAgAAiEA3mASABIQEMDQsgACABIgEgAhC6gICAACIQDecBIAEhAQzwAgsCQCABIgEgAkcNAEEPIRAM5QMLIAEtAAAiEEE7Rg0IIBBBDUcN6AEgAUEBaiEBDO8CCyAAIAEiASACELqAgIAAIhAN6AEgASEBDPICCwNAAkAgAS0AAEHwtYCAAGotAAAiEEEBRg0AIBBBAkcN6wEgACgCBCEQIABBADYCBCAAIBAgAUEBaiIBELmAgIAAIhAN6gEgASEBDPQCCyABQQFqIgEgAkcNAAtBEiEQDOIDCyAAIAEiASACELqAgIAAIhAN6QEgASEBDAoLIAEiASACRw0GQRshEAzgAwsCQCABIgEgAkcNAEEWIRAM4AMLIABBioCAgAA2AgggACABNgIEIAAgASACELiAgIAAIhAN6gEgASEBQSAhEAzGAwsCQCABIgEgAkYNAANAAkAgAS0AAEHwt4CAAGotAAAiEEECRg0AAkAgEEF/ag4E5QHsAQDrAewBCyABQQFqIQFBCCEQDMgDCyABQQFqIgEgAkcNAAtBFSEQDN8DC0EVIRAM3gMLA0ACQCABLQAAQfC5gIAAai0AACIQQQJGDQAgEEF/ag4E3gHsAeAB6wHsAQsgAUEBaiIBIAJHDQALQRghEAzdAwsCQCABIgEgAkYNACAAQYuAgIAANgIIIAAgATYCBCABIQFBByEQDMQDC0EZIRAM3AMLIAFBAWohAQwCCwJAIAEiFCACRw0AQRohEAzbAwsgFCEBAkAgFC0AAEFzag4U3QLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gIA7gILQQAhECAAQQA2AhwgAEGvi4CAADYCECAAQQI2AgwgACAUQQFqNgIUDNoDCwJAIAEtAAAiEEE7Rg0AIBBBDUcN6AEgAUEBaiEBDOUCCyABQQFqIQELQSIhEAy/AwsCQCABIhAgAkcNAEEcIRAM2AMLQgAhESAQIQEgEC0AAEFQag435wHmAQECAwQFBgcIAAAAAAAAAAkKCwwNDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADxAREhMUAAtBHiEQDL0DC0ICIREM5QELQgMhEQzkAQtCBCERDOMBC0IFIREM4gELQgYhEQzhAQtCByERDOABC0IIIREM3wELQgkhEQzeAQtCCiERDN0BC0ILIREM3AELQgwhEQzbAQtCDSERDNoBC0IOIREM2QELQg8hEQzYAQtCCiERDNcBC0ILIREM1gELQgwhEQzVAQtCDSERDNQBC0IOIREM0wELQg8hEQzSAQtCACERAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAQLQAAQVBqDjflAeQBAAECAwQFBgfmAeYB5gHmAeYB5gHmAQgJCgsMDeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gEODxAREhPmAQtCAiERDOQBC0IDIREM4wELQgQhEQziAQtCBSERDOEBC0IGIREM4AELQgchEQzfAQtCCCERDN4BC0IJIREM3QELQgohEQzcAQtCCyERDNsBC0IMIREM2gELQg0hEQzZAQtCDiERDNgBC0IPIREM1wELQgohEQzWAQtCCyERDNUBC0IMIREM1AELQg0hEQzTAQtCDiERDNIBC0IPIREM0QELIABCACAAKQMgIhEgAiABIhBrrSISfSITIBMgEVYbNwMgIBEgElYiFEUN0gFBHyEQDMADCwJAIAEiASACRg0AIABBiYCAgAA2AgggACABNgIEIAEhAUEkIRAMpwMLQSAhEAy/AwsgACABIhAgAhC+gICAAEF/ag4FtgEAxQIB0QHSAQtBESEQDKQDCyAAQQE6AC8gECEBDLsDCyABIgEgAkcN0gFBJCEQDLsDCyABIg0gAkcNHkHGACEQDLoDCyAAIAEiASACELKAgIAAIhAN1AEgASEBDLUBCyABIhAgAkcNJkHQACEQDLgDCwJAIAEiASACRw0AQSghEAy4AwsgAEEANgIEIABBjICAgAA2AgggACABIAEQsYCAgAAiEA3TASABIQEM2AELAkAgASIQIAJHDQBBKSEQDLcDCyAQLQAAIgFBIEYNFCABQQlHDdMBIBBBAWohAQwVCwJAIAEiASACRg0AIAFBAWohAQwXC0EqIRAMtQMLAkAgASIQIAJHDQBBKyEQDLUDCwJAIBAtAAAiAUEJRg0AIAFBIEcN1QELIAAtACxBCEYN0wEgECEBDJEDCwJAIAEiASACRw0AQSwhEAy0AwsgAS0AAEEKRw3VASABQQFqIQEMyQILIAEiDiACRw3VAUEvIRAMsgMLA0ACQCABLQAAIhBBIEYNAAJAIBBBdmoOBADcAdwBANoBCyABIQEM4AELIAFBAWoiASACRw0AC0ExIRAMsQMLQTIhECABIhQgAkYNsAMgAiAUayAAKAIAIgFqIRUgFCABa0EDaiEWAkADQCAULQAAIhdBIHIgFyAXQb9/akH/AXFBGkkbQf8BcSABQfC7gIAAai0AAEcNAQJAIAFBA0cNAEEGIQEMlgMLIAFBAWohASAUQQFqIhQgAkcNAAsgACAVNgIADLEDCyAAQQA2AgAgFCEBDNkBC0EzIRAgASIUIAJGDa8DIAIgFGsgACgCACIBaiEVIBQgAWtBCGohFgJAA0AgFC0AACIXQSByIBcgF0G/f2pB/wFxQRpJG0H/AXEgAUH0u4CAAGotAABHDQECQCABQQhHDQBBBSEBDJUDCyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFTYCAAywAwsgAEEANgIAIBQhAQzYAQtBNCEQIAEiFCACRg2uAyACIBRrIAAoAgAiAWohFSAUIAFrQQVqIRYCQANAIBQtAAAiF0EgciAXIBdBv39qQf8BcUEaSRtB/wFxIAFB0MKAgABqLQAARw0BAkAgAUEFRw0AQQchAQyUAwsgAUEBaiEBIBRBAWoiFCACRw0ACyAAIBU2AgAMrwMLIABBADYCACAUIQEM1wELAkAgASIBIAJGDQADQAJAIAEtAABBgL6AgABqLQAAIhBBAUYNACAQQQJGDQogASEBDN0BCyABQQFqIgEgAkcNAAtBMCEQDK4DC0EwIRAMrQMLAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgRg0AIBBBdmoOBNkB2gHaAdkB2gELIAFBAWoiASACRw0AC0E4IRAMrQMLQTghEAysAwsDQAJAIAEtAAAiEEEgRg0AIBBBCUcNAwsgAUEBaiIBIAJHDQALQTwhEAyrAwsDQAJAIAEtAAAiEEEgRg0AAkACQCAQQXZqDgTaAQEB2gEACyAQQSxGDdsBCyABIQEMBAsgAUEBaiIBIAJHDQALQT8hEAyqAwsgASEBDNsBC0HAACEQIAEiFCACRg2oAyACIBRrIAAoAgAiAWohFiAUIAFrQQZqIRcCQANAIBQtAABBIHIgAUGAwICAAGotAABHDQEgAUEGRg2OAyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAypAwsgAEEANgIAIBQhAQtBNiEQDI4DCwJAIAEiDyACRw0AQcEAIRAMpwMLIABBjICAgAA2AgggACAPNgIEIA8hASAALQAsQX9qDgTNAdUB1wHZAYcDCyABQQFqIQEMzAELAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgciAQIBBBv39qQf8BcUEaSRtB/wFxIhBBCUYNACAQQSBGDQACQAJAAkACQCAQQZ1/ag4TAAMDAwMDAwMBAwMDAwMDAwMDAgMLIAFBAWohAUExIRAMkQMLIAFBAWohAUEyIRAMkAMLIAFBAWohAUEzIRAMjwMLIAEhAQzQAQsgAUEBaiIBIAJHDQALQTUhEAylAwtBNSEQDKQDCwJAIAEiASACRg0AA0ACQCABLQAAQYC8gIAAai0AAEEBRg0AIAEhAQzTAQsgAUEBaiIBIAJHDQALQT0hEAykAwtBPSEQDKMDCyAAIAEiASACELCAgIAAIhAN1gEgASEBDAELIBBBAWohAQtBPCEQDIcDCwJAIAEiASACRw0AQcIAIRAMoAMLAkADQAJAIAEtAABBd2oOGAAC/gL+AoQD/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4CAP4CCyABQQFqIgEgAkcNAAtBwgAhEAygAwsgAUEBaiEBIAAtAC1BAXFFDb0BIAEhAQtBLCEQDIUDCyABIgEgAkcN0wFBxAAhEAydAwsDQAJAIAEtAABBkMCAgABqLQAAQQFGDQAgASEBDLcCCyABQQFqIgEgAkcNAAtBxQAhEAycAwsgDS0AACIQQSBGDbMBIBBBOkcNgQMgACgCBCEBIABBADYCBCAAIAEgDRCvgICAACIBDdABIA1BAWohAQyzAgtBxwAhECABIg0gAkYNmgMgAiANayAAKAIAIgFqIRYgDSABa0EFaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGQwoCAAGotAABHDYADIAFBBUYN9AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMmgMLQcgAIRAgASINIAJGDZkDIAIgDWsgACgCACIBaiEWIA0gAWtBCWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBlsKAgABqLQAARw3/AgJAIAFBCUcNAEECIQEM9QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJkDCwJAIAEiDSACRw0AQckAIRAMmQMLAkACQCANLQAAIgFBIHIgASABQb9/akH/AXFBGkkbQf8BcUGSf2oOBwCAA4ADgAOAA4ADAYADCyANQQFqIQFBPiEQDIADCyANQQFqIQFBPyEQDP8CC0HKACEQIAEiDSACRg2XAyACIA1rIAAoAgAiAWohFiANIAFrQQFqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQaDCgIAAai0AAEcN/QIgAUEBRg3wAiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyXAwtBywAhECABIg0gAkYNlgMgAiANayAAKAIAIgFqIRYgDSABa0EOaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGiwoCAAGotAABHDfwCIAFBDkYN8AIgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMlgMLQcwAIRAgASINIAJGDZUDIAIgDWsgACgCACIBaiEWIA0gAWtBD2ohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBwMKAgABqLQAARw37AgJAIAFBD0cNAEEDIQEM8QILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJUDC0HNACEQIAEiDSACRg2UAyACIA1rIAAoAgAiAWohFiANIAFrQQVqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQdDCgIAAai0AAEcN+gICQCABQQVHDQBBBCEBDPACCyABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyUAwsCQCABIg0gAkcNAEHOACEQDJQDCwJAAkACQAJAIA0tAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZ1/ag4TAP0C/QL9Av0C/QL9Av0C/QL9Av0C/QL9AgH9Av0C/QICA/0CCyANQQFqIQFBwQAhEAz9AgsgDUEBaiEBQcIAIRAM/AILIA1BAWohAUHDACEQDPsCCyANQQFqIQFBxAAhEAz6AgsCQCABIgEgAkYNACAAQY2AgIAANgIIIAAgATYCBCABIQFBxQAhEAz6AgtBzwAhEAySAwsgECEBAkACQCAQLQAAQXZqDgQBqAKoAgCoAgsgEEEBaiEBC0EnIRAM+AILAkAgASIBIAJHDQBB0QAhEAyRAwsCQCABLQAAQSBGDQAgASEBDI0BCyABQQFqIQEgAC0ALUEBcUUNxwEgASEBDIwBCyABIhcgAkcNyAFB0gAhEAyPAwtB0wAhECABIhQgAkYNjgMgAiAUayAAKAIAIgFqIRYgFCABa0EBaiEXA0AgFC0AACABQdbCgIAAai0AAEcNzAEgAUEBRg3HASABQQFqIQEgFEEBaiIUIAJHDQALIAAgFjYCAAyOAwsCQCABIgEgAkcNAEHVACEQDI4DCyABLQAAQQpHDcwBIAFBAWohAQzHAQsCQCABIgEgAkcNAEHWACEQDI0DCwJAAkAgAS0AAEF2ag4EAM0BzQEBzQELIAFBAWohAQzHAQsgAUEBaiEBQcoAIRAM8wILIAAgASIBIAIQroCAgAAiEA3LASABIQFBzQAhEAzyAgsgAC0AKUEiRg2FAwymAgsCQCABIgEgAkcNAEHbACEQDIoDC0EAIRRBASEXQQEhFkEAIRACQAJAAkACQAJAAkACQAJAAkAgAS0AAEFQag4K1AHTAQABAgMEBQYI1QELQQIhEAwGC0EDIRAMBQtBBCEQDAQLQQUhEAwDC0EGIRAMAgtBByEQDAELQQghEAtBACEXQQAhFkEAIRQMzAELQQkhEEEBIRRBACEXQQAhFgzLAQsCQCABIgEgAkcNAEHdACEQDIkDCyABLQAAQS5HDcwBIAFBAWohAQymAgsgASIBIAJHDcwBQd8AIRAMhwMLAkAgASIBIAJGDQAgAEGOgICAADYCCCAAIAE2AgQgASEBQdAAIRAM7gILQeAAIRAMhgMLQeEAIRAgASIBIAJGDYUDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHiwoCAAGotAABHDc0BIBRBA0YNzAEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhQMLQeIAIRAgASIBIAJGDYQDIAIgAWsgACgCACIUaiEWIAEgFGtBAmohFwNAIAEtAAAgFEHmwoCAAGotAABHDcwBIBRBAkYNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMhAMLQeMAIRAgASIBIAJGDYMDIAIgAWsgACgCACIUaiEWIAEgFGtBA2ohFwNAIAEtAAAgFEHpwoCAAGotAABHDcsBIBRBA0YNzgEgFEEBaiEUIAFBAWoiASACRw0ACyAAIBY2AgAMgwMLAkAgASIBIAJHDQBB5QAhEAyDAwsgACABQQFqIgEgAhCogICAACIQDc0BIAEhAUHWACEQDOkCCwJAIAEiASACRg0AA0ACQCABLQAAIhBBIEYNAAJAAkACQCAQQbh/ag4LAAHPAc8BzwHPAc8BzwHPAc8BAs8BCyABQQFqIQFB0gAhEAztAgsgAUEBaiEBQdMAIRAM7AILIAFBAWohAUHUACEQDOsCCyABQQFqIgEgAkcNAAtB5AAhEAyCAwtB5AAhEAyBAwsDQAJAIAEtAABB8MKAgABqLQAAIhBBAUYNACAQQX5qDgPPAdAB0QHSAQsgAUEBaiIBIAJHDQALQeYAIRAMgAMLAkAgASIBIAJGDQAgAUEBaiEBDAMLQecAIRAM/wILA0ACQCABLQAAQfDEgIAAai0AACIQQQFGDQACQCAQQX5qDgTSAdMB1AEA1QELIAEhAUHXACEQDOcCCyABQQFqIgEgAkcNAAtB6AAhEAz+AgsCQCABIgEgAkcNAEHpACEQDP4CCwJAIAEtAAAiEEF2ag4augHVAdUBvAHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHKAdUB1QEA0wELIAFBAWohAQtBBiEQDOMCCwNAAkAgAS0AAEHwxoCAAGotAABBAUYNACABIQEMngILIAFBAWoiASACRw0AC0HqACEQDPsCCwJAIAEiASACRg0AIAFBAWohAQwDC0HrACEQDPoCCwJAIAEiASACRw0AQewAIRAM+gILIAFBAWohAQwBCwJAIAEiASACRw0AQe0AIRAM+QILIAFBAWohAQtBBCEQDN4CCwJAIAEiFCACRw0AQe4AIRAM9wILIBQhAQJAAkACQCAULQAAQfDIgIAAai0AAEF/ag4H1AHVAdYBAJwCAQLXAQsgFEEBaiEBDAoLIBRBAWohAQzNAQtBACEQIABBADYCHCAAQZuSgIAANgIQIABBBzYCDCAAIBRBAWo2AhQM9gILAkADQAJAIAEtAABB8MiAgABqLQAAIhBBBEYNAAJAAkAgEEF/ag4H0gHTAdQB2QEABAHZAQsgASEBQdoAIRAM4AILIAFBAWohAUHcACEQDN8CCyABQQFqIgEgAkcNAAtB7wAhEAz2AgsgAUEBaiEBDMsBCwJAIAEiFCACRw0AQfAAIRAM9QILIBQtAABBL0cN1AEgFEEBaiEBDAYLAkAgASIUIAJHDQBB8QAhEAz0AgsCQCAULQAAIgFBL0cNACAUQQFqIQFB3QAhEAzbAgsgAUF2aiIEQRZLDdMBQQEgBHRBiYCAAnFFDdMBDMoCCwJAIAEiASACRg0AIAFBAWohAUHeACEQDNoCC0HyACEQDPICCwJAIAEiFCACRw0AQfQAIRAM8gILIBQhAQJAIBQtAABB8MyAgABqLQAAQX9qDgPJApQCANQBC0HhACEQDNgCCwJAIAEiFCACRg0AA0ACQCAULQAAQfDKgIAAai0AACIBQQNGDQACQCABQX9qDgLLAgDVAQsgFCEBQd8AIRAM2gILIBRBAWoiFCACRw0AC0HzACEQDPECC0HzACEQDPACCwJAIAEiASACRg0AIABBj4CAgAA2AgggACABNgIEIAEhAUHgACEQDNcCC0H1ACEQDO8CCwJAIAEiASACRw0AQfYAIRAM7wILIABBj4CAgAA2AgggACABNgIEIAEhAQtBAyEQDNQCCwNAIAEtAABBIEcNwwIgAUEBaiIBIAJHDQALQfcAIRAM7AILAkAgASIBIAJHDQBB+AAhEAzsAgsgAS0AAEEgRw3OASABQQFqIQEM7wELIAAgASIBIAIQrICAgAAiEA3OASABIQEMjgILAkAgASIEIAJHDQBB+gAhEAzqAgsgBC0AAEHMAEcN0QEgBEEBaiEBQRMhEAzPAQsCQCABIgQgAkcNAEH7ACEQDOkCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRADQCAELQAAIAFB8M6AgABqLQAARw3QASABQQVGDc4BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQfsAIRAM6AILAkAgASIEIAJHDQBB/AAhEAzoAgsCQAJAIAQtAABBvX9qDgwA0QHRAdEB0QHRAdEB0QHRAdEB0QEB0QELIARBAWohAUHmACEQDM8CCyAEQQFqIQFB5wAhEAzOAgsCQCABIgQgAkcNAEH9ACEQDOcCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDc8BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH9ACEQDOcCCyAAQQA2AgAgEEEBaiEBQRAhEAzMAQsCQCABIgQgAkcNAEH+ACEQDOYCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUH2zoCAAGotAABHDc4BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH+ACEQDOYCCyAAQQA2AgAgEEEBaiEBQRYhEAzLAQsCQCABIgQgAkcNAEH/ACEQDOUCCyACIARrIAAoAgAiAWohFCAEIAFrQQNqIRACQANAIAQtAAAgAUH8zoCAAGotAABHDc0BIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEH/ACEQDOUCCyAAQQA2AgAgEEEBaiEBQQUhEAzKAQsCQCABIgQgAkcNAEGAASEQDOQCCyAELQAAQdkARw3LASAEQQFqIQFBCCEQDMkBCwJAIAEiBCACRw0AQYEBIRAM4wILAkACQCAELQAAQbJ/ag4DAMwBAcwBCyAEQQFqIQFB6wAhEAzKAgsgBEEBaiEBQewAIRAMyQILAkAgASIEIAJHDQBBggEhEAziAgsCQAJAIAQtAABBuH9qDggAywHLAcsBywHLAcsBAcsBCyAEQQFqIQFB6gAhEAzJAgsgBEEBaiEBQe0AIRAMyAILAkAgASIEIAJHDQBBgwEhEAzhAgsgAiAEayAAKAIAIgFqIRAgBCABa0ECaiEUAkADQCAELQAAIAFBgM+AgABqLQAARw3JASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBA2AgBBgwEhEAzhAgtBACEQIABBADYCACAUQQFqIQEMxgELAkAgASIEIAJHDQBBhAEhEAzgAgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBg8+AgABqLQAARw3IASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBhAEhEAzgAgsgAEEANgIAIBBBAWohAUEjIRAMxQELAkAgASIEIAJHDQBBhQEhEAzfAgsCQAJAIAQtAABBtH9qDggAyAHIAcgByAHIAcgBAcgBCyAEQQFqIQFB7wAhEAzGAgsgBEEBaiEBQfAAIRAMxQILAkAgASIEIAJHDQBBhgEhEAzeAgsgBC0AAEHFAEcNxQEgBEEBaiEBDIMCCwJAIAEiBCACRw0AQYcBIRAM3QILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQYjPgIAAai0AAEcNxQEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYcBIRAM3QILIABBADYCACAQQQFqIQFBLSEQDMIBCwJAIAEiBCACRw0AQYgBIRAM3AILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNxAEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYgBIRAM3AILIABBADYCACAQQQFqIQFBKSEQDMEBCwJAIAEiASACRw0AQYkBIRAM2wILQQEhECABLQAAQd8ARw3AASABQQFqIQEMgQILAkAgASIEIAJHDQBBigEhEAzaAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQA0AgBC0AACABQYzPgIAAai0AAEcNwQEgAUEBRg2vAiABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGKASEQDNkCCwJAIAEiBCACRw0AQYsBIRAM2QILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQY7PgIAAai0AAEcNwQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYsBIRAM2QILIABBADYCACAQQQFqIQFBAiEQDL4BCwJAIAEiBCACRw0AQYwBIRAM2AILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNwAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYwBIRAM2AILIABBADYCACAQQQFqIQFBHyEQDL0BCwJAIAEiBCACRw0AQY0BIRAM1wILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfLPgIAAai0AAEcNvwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQY0BIRAM1wILIABBADYCACAQQQFqIQFBCSEQDLwBCwJAIAEiBCACRw0AQY4BIRAM1gILAkACQCAELQAAQbd/ag4HAL8BvwG/Ab8BvwEBvwELIARBAWohAUH4ACEQDL0CCyAEQQFqIQFB+QAhEAy8AgsCQCABIgQgAkcNAEGPASEQDNUCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGRz4CAAGotAABHDb0BIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGPASEQDNUCCyAAQQA2AgAgEEEBaiEBQRghEAy6AQsCQCABIgQgAkcNAEGQASEQDNQCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUGXz4CAAGotAABHDbwBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGQASEQDNQCCyAAQQA2AgAgEEEBaiEBQRchEAy5AQsCQCABIgQgAkcNAEGRASEQDNMCCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUGaz4CAAGotAABHDbsBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGRASEQDNMCCyAAQQA2AgAgEEEBaiEBQRUhEAy4AQsCQCABIgQgAkcNAEGSASEQDNICCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGhz4CAAGotAABHDboBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGSASEQDNICCyAAQQA2AgAgEEEBaiEBQR4hEAy3AQsCQCABIgQgAkcNAEGTASEQDNECCyAELQAAQcwARw24ASAEQQFqIQFBCiEQDLYBCwJAIAQgAkcNAEGUASEQDNACCwJAAkAgBC0AAEG/f2oODwC5AbkBuQG5AbkBuQG5AbkBuQG5AbkBuQG5AQG5AQsgBEEBaiEBQf4AIRAMtwILIARBAWohAUH/ACEQDLYCCwJAIAQgAkcNAEGVASEQDM8CCwJAAkAgBC0AAEG/f2oOAwC4AQG4AQsgBEEBaiEBQf0AIRAMtgILIARBAWohBEGAASEQDLUCCwJAIAQgAkcNAEGWASEQDM4CCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUGnz4CAAGotAABHDbYBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGWASEQDM4CCyAAQQA2AgAgEEEBaiEBQQshEAyzAQsCQCAEIAJHDQBBlwEhEAzNAgsCQAJAAkACQCAELQAAQVNqDiMAuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AQG4AbgBuAG4AbgBArgBuAG4AQO4AQsgBEEBaiEBQfsAIRAMtgILIARBAWohAUH8ACEQDLUCCyAEQQFqIQRBgQEhEAy0AgsgBEEBaiEEQYIBIRAMswILAkAgBCACRw0AQZgBIRAMzAILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQanPgIAAai0AAEcNtAEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZgBIRAMzAILIABBADYCACAQQQFqIQFBGSEQDLEBCwJAIAQgAkcNAEGZASEQDMsCCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUGuz4CAAGotAABHDbMBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGZASEQDMsCCyAAQQA2AgAgEEEBaiEBQQYhEAywAQsCQCAEIAJHDQBBmgEhEAzKAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBtM+AgABqLQAARw2yASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmgEhEAzKAgsgAEEANgIAIBBBAWohAUEcIRAMrwELAkAgBCACRw0AQZsBIRAMyQILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbbPgIAAai0AAEcNsQEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZsBIRAMyQILIABBADYCACAQQQFqIQFBJyEQDK4BCwJAIAQgAkcNAEGcASEQDMgCCwJAAkAgBC0AAEGsf2oOAgABsQELIARBAWohBEGGASEQDK8CCyAEQQFqIQRBhwEhEAyuAgsCQCAEIAJHDQBBnQEhEAzHAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBuM+AgABqLQAARw2vASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBnQEhEAzHAgsgAEEANgIAIBBBAWohAUEmIRAMrAELAkAgBCACRw0AQZ4BIRAMxgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQbrPgIAAai0AAEcNrgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZ4BIRAMxgILIABBADYCACAQQQFqIQFBAyEQDKsBCwJAIAQgAkcNAEGfASEQDMUCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDa0BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGfASEQDMUCCyAAQQA2AgAgEEEBaiEBQQwhEAyqAQsCQCAEIAJHDQBBoAEhEAzEAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFBvM+AgABqLQAARw2sASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBoAEhEAzEAgsgAEEANgIAIBBBAWohAUENIRAMqQELAkAgBCACRw0AQaEBIRAMwwILAkACQCAELQAAQbp/ag4LAKwBrAGsAawBrAGsAawBrAGsAQGsAQsgBEEBaiEEQYsBIRAMqgILIARBAWohBEGMASEQDKkCCwJAIAQgAkcNAEGiASEQDMICCyAELQAAQdAARw2pASAEQQFqIQQM6QELAkAgBCACRw0AQaMBIRAMwQILAkACQCAELQAAQbd/ag4HAaoBqgGqAaoBqgEAqgELIARBAWohBEGOASEQDKgCCyAEQQFqIQFBIiEQDKYBCwJAIAQgAkcNAEGkASEQDMACCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHAz4CAAGotAABHDagBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGkASEQDMACCyAAQQA2AgAgEEEBaiEBQR0hEAylAQsCQCAEIAJHDQBBpQEhEAy/AgsCQAJAIAQtAABBrn9qDgMAqAEBqAELIARBAWohBEGQASEQDKYCCyAEQQFqIQFBBCEQDKQBCwJAIAQgAkcNAEGmASEQDL4CCwJAAkACQAJAAkAgBC0AAEG/f2oOFQCqAaoBqgGqAaoBqgGqAaoBqgGqAQGqAaoBAqoBqgEDqgGqAQSqAQsgBEEBaiEEQYgBIRAMqAILIARBAWohBEGJASEQDKcCCyAEQQFqIQRBigEhEAymAgsgBEEBaiEEQY8BIRAMpQILIARBAWohBEGRASEQDKQCCwJAIAQgAkcNAEGnASEQDL0CCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDaUBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGnASEQDL0CCyAAQQA2AgAgEEEBaiEBQREhEAyiAQsCQCAEIAJHDQBBqAEhEAy8AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBws+AgABqLQAARw2kASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBqAEhEAy8AgsgAEEANgIAIBBBAWohAUEsIRAMoQELAkAgBCACRw0AQakBIRAMuwILIAIgBGsgACgCACIBaiEUIAQgAWtBBGohEAJAA0AgBC0AACABQcXPgIAAai0AAEcNowEgAUEERg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQakBIRAMuwILIABBADYCACAQQQFqIQFBKyEQDKABCwJAIAQgAkcNAEGqASEQDLoCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHKz4CAAGotAABHDaIBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGqASEQDLoCCyAAQQA2AgAgEEEBaiEBQRQhEAyfAQsCQCAEIAJHDQBBqwEhEAy5AgsCQAJAAkACQCAELQAAQb5/ag4PAAECpAGkAaQBpAGkAaQBpAGkAaQBpAGkAQOkAQsgBEEBaiEEQZMBIRAMogILIARBAWohBEGUASEQDKECCyAEQQFqIQRBlQEhEAygAgsgBEEBaiEEQZYBIRAMnwILAkAgBCACRw0AQawBIRAMuAILIAQtAABBxQBHDZ8BIARBAWohBAzgAQsCQCAEIAJHDQBBrQEhEAy3AgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBzc+AgABqLQAARw2fASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBrQEhEAy3AgsgAEEANgIAIBBBAWohAUEOIRAMnAELAkAgBCACRw0AQa4BIRAMtgILIAQtAABB0ABHDZ0BIARBAWohAUElIRAMmwELAkAgBCACRw0AQa8BIRAMtQILIAIgBGsgACgCACIBaiEUIAQgAWtBCGohEAJAA0AgBC0AACABQdDPgIAAai0AAEcNnQEgAUEIRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQa8BIRAMtQILIABBADYCACAQQQFqIQFBKiEQDJoBCwJAIAQgAkcNAEGwASEQDLQCCwJAAkAgBC0AAEGrf2oOCwCdAZ0BnQGdAZ0BnQGdAZ0BnQEBnQELIARBAWohBEGaASEQDJsCCyAEQQFqIQRBmwEhEAyaAgsCQCAEIAJHDQBBsQEhEAyzAgsCQAJAIAQtAABBv39qDhQAnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBAZwBCyAEQQFqIQRBmQEhEAyaAgsgBEEBaiEEQZwBIRAMmQILAkAgBCACRw0AQbIBIRAMsgILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQdnPgIAAai0AAEcNmgEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbIBIRAMsgILIABBADYCACAQQQFqIQFBISEQDJcBCwJAIAQgAkcNAEGzASEQDLECCyACIARrIAAoAgAiAWohFCAEIAFrQQZqIRACQANAIAQtAAAgAUHdz4CAAGotAABHDZkBIAFBBkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGzASEQDLECCyAAQQA2AgAgEEEBaiEBQRohEAyWAQsCQCAEIAJHDQBBtAEhEAywAgsCQAJAAkAgBC0AAEG7f2oOEQCaAZoBmgGaAZoBmgGaAZoBmgEBmgGaAZoBmgGaAQKaAQsgBEEBaiEEQZ0BIRAMmAILIARBAWohBEGeASEQDJcCCyAEQQFqIQRBnwEhEAyWAgsCQCAEIAJHDQBBtQEhEAyvAgsgAiAEayAAKAIAIgFqIRQgBCABa0EFaiEQAkADQCAELQAAIAFB5M+AgABqLQAARw2XASABQQVGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBtQEhEAyvAgsgAEEANgIAIBBBAWohAUEoIRAMlAELAkAgBCACRw0AQbYBIRAMrgILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQerPgIAAai0AAEcNlgEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbYBIRAMrgILIABBADYCACAQQQFqIQFBByEQDJMBCwJAIAQgAkcNAEG3ASEQDK0CCwJAAkAgBC0AAEG7f2oODgCWAZYBlgGWAZYBlgGWAZYBlgGWAZYBlgEBlgELIARBAWohBEGhASEQDJQCCyAEQQFqIQRBogEhEAyTAgsCQCAEIAJHDQBBuAEhEAysAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFB7c+AgABqLQAARw2UASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBuAEhEAysAgsgAEEANgIAIBBBAWohAUESIRAMkQELAkAgBCACRw0AQbkBIRAMqwILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfDPgIAAai0AAEcNkwEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbkBIRAMqwILIABBADYCACAQQQFqIQFBICEQDJABCwJAIAQgAkcNAEG6ASEQDKoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUHyz4CAAGotAABHDZIBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG6ASEQDKoCCyAAQQA2AgAgEEEBaiEBQQ8hEAyPAQsCQCAEIAJHDQBBuwEhEAypAgsCQAJAIAQtAABBt39qDgcAkgGSAZIBkgGSAQGSAQsgBEEBaiEEQaUBIRAMkAILIARBAWohBEGmASEQDI8CCwJAIAQgAkcNAEG8ASEQDKgCCyACIARrIAAoAgAiAWohFCAEIAFrQQdqIRACQANAIAQtAAAgAUH0z4CAAGotAABHDZABIAFBB0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG8ASEQDKgCCyAAQQA2AgAgEEEBaiEBQRshEAyNAQsCQCAEIAJHDQBBvQEhEAynAgsCQAJAAkAgBC0AAEG+f2oOEgCRAZEBkQGRAZEBkQGRAZEBkQEBkQGRAZEBkQGRAZEBApEBCyAEQQFqIQRBpAEhEAyPAgsgBEEBaiEEQacBIRAMjgILIARBAWohBEGoASEQDI0CCwJAIAQgAkcNAEG+ASEQDKYCCyAELQAAQc4ARw2NASAEQQFqIQQMzwELAkAgBCACRw0AQb8BIRAMpQILAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AAEG/f2oOFQABAgOcAQQFBpwBnAGcAQcICQoLnAEMDQ4PnAELIARBAWohAUHoACEQDJoCCyAEQQFqIQFB6QAhEAyZAgsgBEEBaiEBQe4AIRAMmAILIARBAWohAUHyACEQDJcCCyAEQQFqIQFB8wAhEAyWAgsgBEEBaiEBQfYAIRAMlQILIARBAWohAUH3ACEQDJQCCyAEQQFqIQFB+gAhEAyTAgsgBEEBaiEEQYMBIRAMkgILIARBAWohBEGEASEQDJECCyAEQQFqIQRBhQEhEAyQAgsgBEEBaiEEQZIBIRAMjwILIARBAWohBEGYASEQDI4CCyAEQQFqIQRBoAEhEAyNAgsgBEEBaiEEQaMBIRAMjAILIARBAWohBEGqASEQDIsCCwJAIAQgAkYNACAAQZCAgIAANgIIIAAgBDYCBEGrASEQDIsCC0HAASEQDKMCCyAAIAUgAhCqgICAACIBDYsBIAUhAQxcCwJAIAYgAkYNACAGQQFqIQUMjQELQcIBIRAMoQILA0ACQCAQLQAAQXZqDgSMAQAAjwEACyAQQQFqIhAgAkcNAAtBwwEhEAygAgsCQCAHIAJGDQAgAEGRgICAADYCCCAAIAc2AgQgByEBQQEhEAyHAgtBxAEhEAyfAgsCQCAHIAJHDQBBxQEhEAyfAgsCQAJAIActAABBdmoOBAHOAc4BAM4BCyAHQQFqIQYMjQELIAdBAWohBQyJAQsCQCAHIAJHDQBBxgEhEAyeAgsCQAJAIActAABBdmoOFwGPAY8BAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAQCPAQsgB0EBaiEHC0GwASEQDIQCCwJAIAggAkcNAEHIASEQDJ0CCyAILQAAQSBHDY0BIABBADsBMiAIQQFqIQFBswEhEAyDAgsgASEXAkADQCAXIgcgAkYNASAHLQAAQVBqQf8BcSIQQQpPDcwBAkAgAC8BMiIUQZkzSw0AIAAgFEEKbCIUOwEyIBBB//8DcyAUQf7/A3FJDQAgB0EBaiEXIAAgFCAQaiIQOwEyIBBB//8DcUHoB0kNAQsLQQAhECAAQQA2AhwgAEHBiYCAADYCECAAQQ02AgwgACAHQQFqNgIUDJwCC0HHASEQDJsCCyAAIAggAhCugICAACIQRQ3KASAQQRVHDYwBIABByAE2AhwgACAINgIUIABByZeAgAA2AhAgAEEVNgIMQQAhEAyaAgsCQCAJIAJHDQBBzAEhEAyaAgtBACEUQQEhF0EBIRZBACEQAkACQAJAAkACQAJAAkACQAJAIAktAABBUGoOCpYBlQEAAQIDBAUGCJcBC0ECIRAMBgtBAyEQDAULQQQhEAwEC0EFIRAMAwtBBiEQDAILQQchEAwBC0EIIRALQQAhF0EAIRZBACEUDI4BC0EJIRBBASEUQQAhF0EAIRYMjQELAkAgCiACRw0AQc4BIRAMmQILIAotAABBLkcNjgEgCkEBaiEJDMoBCyALIAJHDY4BQdABIRAMlwILAkAgCyACRg0AIABBjoCAgAA2AgggACALNgIEQbcBIRAM/gELQdEBIRAMlgILAkAgBCACRw0AQdIBIRAMlgILIAIgBGsgACgCACIQaiEUIAQgEGtBBGohCwNAIAQtAAAgEEH8z4CAAGotAABHDY4BIBBBBEYN6QEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB0gEhEAyVAgsgACAMIAIQrICAgAAiAQ2NASAMIQEMuAELAkAgBCACRw0AQdQBIRAMlAILIAIgBGsgACgCACIQaiEUIAQgEGtBAWohDANAIAQtAAAgEEGB0ICAAGotAABHDY8BIBBBAUYNjgEgEEEBaiEQIARBAWoiBCACRw0ACyAAIBQ2AgBB1AEhEAyTAgsCQCAEIAJHDQBB1gEhEAyTAgsgAiAEayAAKAIAIhBqIRQgBCAQa0ECaiELA0AgBC0AACAQQYPQgIAAai0AAEcNjgEgEEECRg2QASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHWASEQDJICCwJAIAQgAkcNAEHXASEQDJICCwJAAkAgBC0AAEG7f2oOEACPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BAY8BCyAEQQFqIQRBuwEhEAz5AQsgBEEBaiEEQbwBIRAM+AELAkAgBCACRw0AQdgBIRAMkQILIAQtAABByABHDYwBIARBAWohBAzEAQsCQCAEIAJGDQAgAEGQgICAADYCCCAAIAQ2AgRBvgEhEAz3AQtB2QEhEAyPAgsCQCAEIAJHDQBB2gEhEAyPAgsgBC0AAEHIAEYNwwEgAEEBOgAoDLkBCyAAQQI6AC8gACAEIAIQpoCAgAAiEA2NAUHCASEQDPQBCyAALQAoQX9qDgK3AbkBuAELA0ACQCAELQAAQXZqDgQAjgGOAQCOAQsgBEEBaiIEIAJHDQALQd0BIRAMiwILIABBADoALyAALQAtQQRxRQ2EAgsgAEEAOgAvIABBAToANCABIQEMjAELIBBBFUYN2gEgAEEANgIcIAAgATYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAMiAILAkAgACAQIAIQtICAgAAiBA0AIBAhAQyBAgsCQCAEQRVHDQAgAEEDNgIcIAAgEDYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMiAILIABBADYCHCAAIBA2AhQgAEGnjoCAADYCECAAQRI2AgxBACEQDIcCCyAQQRVGDdYBIABBADYCHCAAIAE2AhQgAEHajYCAADYCECAAQRQ2AgxBACEQDIYCCyAAKAIEIRcgAEEANgIEIBAgEadqIhYhASAAIBcgECAWIBQbIhAQtYCAgAAiFEUNjQEgAEEHNgIcIAAgEDYCFCAAIBQ2AgxBACEQDIUCCyAAIAAvATBBgAFyOwEwIAEhAQtBKiEQDOoBCyAQQRVGDdEBIABBADYCHCAAIAE2AhQgAEGDjICAADYCECAAQRM2AgxBACEQDIICCyAQQRVGDc8BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDIECCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyNAQsgAEEMNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDIACCyAQQRVGDcwBIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDP8BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyMAQsgAEENNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDP4BCyAQQRVGDckBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDP0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyLAQsgAEEONgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPwBCyAAQQA2AhwgACABNgIUIABBwJWAgAA2AhAgAEECNgIMQQAhEAz7AQsgEEEVRg3FASAAQQA2AhwgACABNgIUIABBxoyAgAA2AhAgAEEjNgIMQQAhEAz6AQsgAEEQNgIcIAAgATYCFCAAIBA2AgxBACEQDPkBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQzxAQsgAEERNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPgBCyAQQRVGDcEBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDPcBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQuYCAgAAiEA0AIAFBAWohAQyIAQsgAEETNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPYBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQuYCAgAAiBA0AIAFBAWohAQztAQsgAEEUNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPUBCyAQQRVGDb0BIABBADYCHCAAIAE2AhQgAEGaj4CAADYCECAAQSI2AgxBACEQDPQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQt4CAgAAiEA0AIAFBAWohAQyGAQsgAEEWNgIcIAAgEDYCDCAAIAFBAWo2AhRBACEQDPMBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQt4CAgAAiBA0AIAFBAWohAQzpAQsgAEEXNgIcIAAgBDYCDCAAIAFBAWo2AhRBACEQDPIBCyAAQQA2AhwgACABNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzxAQtCASERCyAQQQFqIQECQCAAKQMgIhJC//////////8PVg0AIAAgEkIEhiARhDcDICABIQEMhAELIABBADYCHCAAIAE2AhQgAEGtiYCAADYCECAAQQw2AgxBACEQDO8BCyAAQQA2AhwgACAQNgIUIABBzZOAgAA2AhAgAEEMNgIMQQAhEAzuAQsgACgCBCEXIABBADYCBCAQIBGnaiIWIQEgACAXIBAgFiAUGyIQELWAgIAAIhRFDXMgAEEFNgIcIAAgEDYCFCAAIBQ2AgxBACEQDO0BCyAAQQA2AhwgACAQNgIUIABBqpyAgAA2AhAgAEEPNgIMQQAhEAzsAQsgACAQIAIQtICAgAAiAQ0BIBAhAQtBDiEQDNEBCwJAIAFBFUcNACAAQQI2AhwgACAQNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAzqAQsgAEEANgIcIAAgEDYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAM6QELIAFBAWohEAJAIAAvATAiAUGAAXFFDQACQCAAIBAgAhC7gICAACIBDQAgECEBDHALIAFBFUcNugEgAEEFNgIcIAAgEDYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAM6QELAkAgAUGgBHFBoARHDQAgAC0ALUECcQ0AIABBADYCHCAAIBA2AhQgAEGWk4CAADYCECAAQQQ2AgxBACEQDOkBCyAAIBAgAhC9gICAABogECEBAkACQAJAAkACQCAAIBAgAhCzgICAAA4WAgEABAQEBAQEBAQEBAQEBAQEBAQEAwQLIABBAToALgsgACAALwEwQcAAcjsBMCAQIQELQSYhEAzRAQsgAEEjNgIcIAAgEDYCFCAAQaWWgIAANgIQIABBFTYCDEEAIRAM6QELIABBADYCHCAAIBA2AhQgAEHVi4CAADYCECAAQRE2AgxBACEQDOgBCyAALQAtQQFxRQ0BQcMBIRAMzgELAkAgDSACRg0AA0ACQCANLQAAQSBGDQAgDSEBDMQBCyANQQFqIg0gAkcNAAtBJSEQDOcBC0ElIRAM5gELIAAoAgQhBCAAQQA2AgQgACAEIA0Qr4CAgAAiBEUNrQEgAEEmNgIcIAAgBDYCDCAAIA1BAWo2AhRBACEQDOUBCyAQQRVGDasBIABBADYCHCAAIAE2AhQgAEH9jYCAADYCECAAQR02AgxBACEQDOQBCyAAQSc2AhwgACABNgIUIAAgEDYCDEEAIRAM4wELIBAhAUEBIRQCQAJAAkACQAJAAkACQCAALQAsQX5qDgcGBQUDAQIABQsgACAALwEwQQhyOwEwDAMLQQIhFAwBC0EEIRQLIABBAToALCAAIAAvATAgFHI7ATALIBAhAQtBKyEQDMoBCyAAQQA2AhwgACAQNgIUIABBq5KAgAA2AhAgAEELNgIMQQAhEAziAQsgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDEEAIRAM4QELIABBADoALCAQIQEMvQELIBAhAUEBIRQCQAJAAkACQAJAIAAtACxBe2oOBAMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEUDAELQQQhFAsgAEEBOgAsIAAgAC8BMCAUcjsBMAsgECEBC0EpIRAMxQELIABBADYCHCAAIAE2AhQgAEHwlICAADYCECAAQQM2AgxBACEQDN0BCwJAIA4tAABBDUcNACAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA5BAWohAQx1CyAAQSw2AhwgACABNgIMIAAgDkEBajYCFEEAIRAM3QELIAAtAC1BAXFFDQFBxAEhEAzDAQsCQCAOIAJHDQBBLSEQDNwBCwJAAkADQAJAIA4tAABBdmoOBAIAAAMACyAOQQFqIg4gAkcNAAtBLSEQDN0BCyAAKAIEIQEgAEEANgIEAkAgACABIA4QsYCAgAAiAQ0AIA4hAQx0CyAAQSw2AhwgACAONgIUIAAgATYCDEEAIRAM3AELIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDkEBaiEBDHMLIABBLDYCHCAAIAE2AgwgACAOQQFqNgIUQQAhEAzbAQsgACgCBCEEIABBADYCBCAAIAQgDhCxgICAACIEDaABIA4hAQzOAQsgEEEsRw0BIAFBAWohEEEBIQECQAJAAkACQAJAIAAtACxBe2oOBAMBAgQACyAQIQEMBAtBAiEBDAELQQQhAQsgAEEBOgAsIAAgAC8BMCABcjsBMCAQIQEMAQsgACAALwEwQQhyOwEwIBAhAQtBOSEQDL8BCyAAQQA6ACwgASEBC0E0IRAMvQELIAAgAC8BMEEgcjsBMCABIQEMAgsgACgCBCEEIABBADYCBAJAIAAgBCABELGAgIAAIgQNACABIQEMxwELIABBNzYCHCAAIAE2AhQgACAENgIMQQAhEAzUAQsgAEEIOgAsIAEhAQtBMCEQDLkBCwJAIAAtAChBAUYNACABIQEMBAsgAC0ALUEIcUUNkwEgASEBDAMLIAAtADBBIHENlAFBxQEhEAy3AQsCQCAPIAJGDQACQANAAkAgDy0AAEFQaiIBQf8BcUEKSQ0AIA8hAUE1IRAMugELIAApAyAiEUKZs+bMmbPmzBlWDQEgACARQgp+IhE3AyAgESABrUL/AYMiEkJ/hVYNASAAIBEgEnw3AyAgD0EBaiIPIAJHDQALQTkhEAzRAQsgACgCBCECIABBADYCBCAAIAIgD0EBaiIEELGAgIAAIgINlQEgBCEBDMMBC0E5IRAMzwELAkAgAC8BMCIBQQhxRQ0AIAAtAChBAUcNACAALQAtQQhxRQ2QAQsgACABQff7A3FBgARyOwEwIA8hAQtBNyEQDLQBCyAAIAAvATBBEHI7ATAMqwELIBBBFUYNiwEgAEEANgIcIAAgATYCFCAAQfCOgIAANgIQIABBHDYCDEEAIRAMywELIABBwwA2AhwgACABNgIMIAAgDUEBajYCFEEAIRAMygELAkAgAS0AAEE6Rw0AIAAoAgQhECAAQQA2AgQCQCAAIBAgARCvgICAACIQDQAgAUEBaiEBDGMLIABBwwA2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAMygELIABBADYCHCAAIAE2AhQgAEGxkYCAADYCECAAQQo2AgxBACEQDMkBCyAAQQA2AhwgACABNgIUIABBoJmAgAA2AhAgAEEeNgIMQQAhEAzIAQsgAEEANgIACyAAQYASOwEqIAAgF0EBaiIBIAIQqICAgAAiEA0BIAEhAQtBxwAhEAysAQsgEEEVRw2DASAAQdEANgIcIAAgATYCFCAAQeOXgIAANgIQIABBFTYCDEEAIRAMxAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDF4LIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMwwELIABBADYCHCAAIBQ2AhQgAEHBqICAADYCECAAQQc2AgwgAEEANgIAQQAhEAzCAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMXQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAzBAQtBACEQIABBADYCHCAAIAE2AhQgAEGAkYCAADYCECAAQQk2AgwMwAELIBBBFUYNfSAAQQA2AhwgACABNgIUIABBlI2AgAA2AhAgAEEhNgIMQQAhEAy/AQtBASEWQQAhF0EAIRRBASEQCyAAIBA6ACsgAUEBaiEBAkACQCAALQAtQRBxDQACQAJAAkAgAC0AKg4DAQACBAsgFkUNAwwCCyAUDQEMAgsgF0UNAQsgACgCBCEQIABBADYCBAJAIAAgECABEK2AgIAAIhANACABIQEMXAsgAEHYADYCHCAAIAE2AhQgACAQNgIMQQAhEAy+AQsgACgCBCEEIABBADYCBAJAIAAgBCABEK2AgIAAIgQNACABIQEMrQELIABB2QA2AhwgACABNgIUIAAgBDYCDEEAIRAMvQELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKsBCyAAQdoANgIcIAAgATYCFCAAIAQ2AgxBACEQDLwBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQypAQsgAEHcADYCHCAAIAE2AhQgACAENgIMQQAhEAy7AQsCQCABLQAAQVBqIhBB/wFxQQpPDQAgACAQOgAqIAFBAWohAUHPACEQDKIBCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQynAQsgAEHeADYCHCAAIAE2AhQgACAENgIMQQAhEAy6AQsgAEEANgIAIBdBAWohAQJAIAAtAClBI08NACABIQEMWQsgAEEANgIcIAAgATYCFCAAQdOJgIAANgIQIABBCDYCDEEAIRAMuQELIABBADYCAAtBACEQIABBADYCHCAAIAE2AhQgAEGQs4CAADYCECAAQQg2AgwMtwELIABBADYCACAXQQFqIQECQCAALQApQSFHDQAgASEBDFYLIABBADYCHCAAIAE2AhQgAEGbioCAADYCECAAQQg2AgxBACEQDLYBCyAAQQA2AgAgF0EBaiEBAkAgAC0AKSIQQV1qQQtPDQAgASEBDFULAkAgEEEGSw0AQQEgEHRBygBxRQ0AIAEhAQxVC0EAIRAgAEEANgIcIAAgATYCFCAAQfeJgIAANgIQIABBCDYCDAy1AQsgEEEVRg1xIABBADYCHCAAIAE2AhQgAEG5jYCAADYCECAAQRo2AgxBACEQDLQBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxUCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLMBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdIANgIcIAAgATYCFCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAUNgIUIAAgATYCDEEAIRAMogELIABBADYCHCAAIBQ2AhQgAEHDj4CAADYCECAAQQc2AgxBACEQDKEBCyAAQQA2AhwgACABNgIUIABBw4+AgAA2AhAgAEEHNgIMQQAhEAygAQtBACEQIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgwMnwELIABBADYCHCAAIBQ2AhQgAEGMnICAADYCECAAQQc2AgxBACEQDJ4BCyAAQQA2AhwgACAUNgIUIABB/pGAgAA2AhAgAEEHNgIMQQAhEAydAQsgAEEANgIcIAAgATYCFCAAQY6bgIAANgIQIABBBjYCDEEAIRAMnAELIBBBFUYNVyAAQQA2AhwgACABNgIUIABBzI6AgAA2AhAgAEEgNgIMQQAhEAybAQsgAEEANgIAIBBBAWohAUEkIRALIAAgEDoAKSAAKAIEIRAgAEEANgIEIAAgECABEKuAgIAAIhANVCABIQEMPgsgAEEANgIAC0EAIRAgAEEANgIcIAAgBDYCFCAAQfGbgIAANgIQIABBBjYCDAyXAQsgAUEVRg1QIABBADYCHCAAIAU2AhQgAEHwjICAADYCECAAQRs2AgxBACEQDJYBCyAAKAIEIQUgAEEANgIEIAAgBSAQEKmAgIAAIgUNASAQQQFqIQULQa0BIRAMewsgAEHBATYCHCAAIAU2AgwgACAQQQFqNgIUQQAhEAyTAQsgACgCBCEGIABBADYCBCAAIAYgEBCpgICAACIGDQEgEEEBaiEGC0GuASEQDHgLIABBwgE2AhwgACAGNgIMIAAgEEEBajYCFEEAIRAMkAELIABBADYCHCAAIAc2AhQgAEGXi4CAADYCECAAQQ02AgxBACEQDI8BCyAAQQA2AhwgACAINgIUIABB45CAgAA2AhAgAEEJNgIMQQAhEAyOAQsgAEEANgIcIAAgCDYCFCAAQZSNgIAANgIQIABBITYCDEEAIRAMjQELQQEhFkEAIRdBACEUQQEhEAsgACAQOgArIAlBAWohCAJAAkAgAC0ALUEQcQ0AAkACQAJAIAAtACoOAwEAAgQLIBZFDQMMAgsgFA0BDAILIBdFDQELIAAoAgQhECAAQQA2AgQgACAQIAgQrYCAgAAiEEUNPSAAQckBNgIcIAAgCDYCFCAAIBA2AgxBACEQDIwBCyAAKAIEIQQgAEEANgIEIAAgBCAIEK2AgIAAIgRFDXYgAEHKATYCHCAAIAg2AhQgACAENgIMQQAhEAyLAQsgACgCBCEEIABBADYCBCAAIAQgCRCtgICAACIERQ10IABBywE2AhwgACAJNgIUIAAgBDYCDEEAIRAMigELIAAoAgQhBCAAQQA2AgQgACAEIAoQrYCAgAAiBEUNciAAQc0BNgIcIAAgCjYCFCAAIAQ2AgxBACEQDIkBCwJAIAstAABBUGoiEEH/AXFBCk8NACAAIBA6ACogC0EBaiEKQbYBIRAMcAsgACgCBCEEIABBADYCBCAAIAQgCxCtgICAACIERQ1wIABBzwE2AhwgACALNgIUIAAgBDYCDEEAIRAMiAELIABBADYCHCAAIAQ2AhQgAEGQs4CAADYCECAAQQg2AgwgAEEANgIAQQAhEAyHAQsgAUEVRg0/IABBADYCHCAAIAw2AhQgAEHMjoCAADYCECAAQSA2AgxBACEQDIYBCyAAQYEEOwEoIAAoAgQhECAAQgA3AwAgACAQIAxBAWoiDBCrgICAACIQRQ04IABB0wE2AhwgACAMNgIUIAAgEDYCDEEAIRAMhQELIABBADYCAAtBACEQIABBADYCHCAAIAQ2AhQgAEHYm4CAADYCECAAQQg2AgwMgwELIAAoAgQhECAAQgA3AwAgACAQIAtBAWoiCxCrgICAACIQDQFBxgEhEAxpCyAAQQI6ACgMVQsgAEHVATYCHCAAIAs2AhQgACAQNgIMQQAhEAyAAQsgEEEVRg03IABBADYCHCAAIAQ2AhQgAEGkjICAADYCECAAQRA2AgxBACEQDH8LIAAtADRBAUcNNCAAIAQgAhC8gICAACIQRQ00IBBBFUcNNSAAQdwBNgIcIAAgBDYCFCAAQdWWgIAANgIQIABBFTYCDEEAIRAMfgtBACEQIABBADYCHCAAQa+LgIAANgIQIABBAjYCDCAAIBRBAWo2AhQMfQtBACEQDGMLQQIhEAxiC0ENIRAMYQtBDyEQDGALQSUhEAxfC0ETIRAMXgtBFSEQDF0LQRYhEAxcC0EXIRAMWwtBGCEQDFoLQRkhEAxZC0EaIRAMWAtBGyEQDFcLQRwhEAxWC0EdIRAMVQtBHyEQDFQLQSEhEAxTC0EjIRAMUgtBxgAhEAxRC0EuIRAMUAtBLyEQDE8LQTshEAxOC0E9IRAMTQtByAAhEAxMC0HJACEQDEsLQcsAIRAMSgtBzAAhEAxJC0HOACEQDEgLQdEAIRAMRwtB1QAhEAxGC0HYACEQDEULQdkAIRAMRAtB2wAhEAxDC0HkACEQDEILQeUAIRAMQQtB8QAhEAxAC0H0ACEQDD8LQY0BIRAMPgtBlwEhEAw9C0GpASEQDDwLQawBIRAMOwtBwAEhEAw6C0G5ASEQDDkLQa8BIRAMOAtBsQEhEAw3C0GyASEQDDYLQbQBIRAMNQtBtQEhEAw0C0G6ASEQDDMLQb0BIRAMMgtBvwEhEAwxC0HBASEQDDALIABBADYCHCAAIAQ2AhQgAEHpi4CAADYCECAAQR82AgxBACEQDEgLIABB2wE2AhwgACAENgIUIABB+paAgAA2AhAgAEEVNgIMQQAhEAxHCyAAQfgANgIcIAAgDDYCFCAAQcqYgIAANgIQIABBFTYCDEEAIRAMRgsgAEHRADYCHCAAIAU2AhQgAEGwl4CAADYCECAAQRU2AgxBACEQDEULIABB+QA2AhwgACABNgIUIAAgEDYCDEEAIRAMRAsgAEH4ADYCHCAAIAE2AhQgAEHKmICAADYCECAAQRU2AgxBACEQDEMLIABB5AA2AhwgACABNgIUIABB45eAgAA2AhAgAEEVNgIMQQAhEAxCCyAAQdcANgIcIAAgATYCFCAAQcmXgIAANgIQIABBFTYCDEEAIRAMQQsgAEEANgIcIAAgATYCFCAAQbmNgIAANgIQIABBGjYCDEEAIRAMQAsgAEHCADYCHCAAIAE2AhQgAEHjmICAADYCECAAQRU2AgxBACEQDD8LIABBADYCBCAAIA8gDxCxgICAACIERQ0BIABBOjYCHCAAIAQ2AgwgACAPQQFqNgIUQQAhEAw+CyAAKAIEIQQgAEEANgIEAkAgACAEIAEQsYCAgAAiBEUNACAAQTs2AhwgACAENgIMIAAgAUEBajYCFEEAIRAMPgsgAUEBaiEBDC0LIA9BAWohAQwtCyAAQQA2AhwgACAPNgIUIABB5JKAgAA2AhAgAEEENgIMQQAhEAw7CyAAQTY2AhwgACAENgIUIAAgAjYCDEEAIRAMOgsgAEEuNgIcIAAgDjYCFCAAIAQ2AgxBACEQDDkLIABB0AA2AhwgACABNgIUIABBkZiAgAA2AhAgAEEVNgIMQQAhEAw4CyANQQFqIQEMLAsgAEEVNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMNgsgAEEbNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNQsgAEEPNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMNAsgAEELNgIcIAAgATYCFCAAQZGXgIAANgIQIABBFTYCDEEAIRAMMwsgAEEaNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMgsgAEELNgIcIAAgATYCFCAAQYKZgIAANgIQIABBFTYCDEEAIRAMMQsgAEEKNgIcIAAgATYCFCAAQeSWgIAANgIQIABBFTYCDEEAIRAMMAsgAEEeNgIcIAAgATYCFCAAQfmXgIAANgIQIABBFTYCDEEAIRAMLwsgAEEANgIcIAAgEDYCFCAAQdqNgIAANgIQIABBFDYCDEEAIRAMLgsgAEEENgIcIAAgATYCFCAAQbCYgIAANgIQIABBFTYCDEEAIRAMLQsgAEEANgIAIAtBAWohCwtBuAEhEAwSCyAAQQA2AgAgEEEBaiEBQfUAIRAMEQsgASEBAkAgAC0AKUEFRw0AQeMAIRAMEQtB4gAhEAwQC0EAIRAgAEEANgIcIABB5JGAgAA2AhAgAEEHNgIMIAAgFEEBajYCFAwoCyAAQQA2AgAgF0EBaiEBQcAAIRAMDgtBASEBCyAAIAE6ACwgAEEANgIAIBdBAWohAQtBKCEQDAsLIAEhAQtBOCEQDAkLAkAgASIPIAJGDQADQAJAIA8tAABBgL6AgABqLQAAIgFBAUYNACABQQJHDQMgD0EBaiEBDAQLIA9BAWoiDyACRw0AC0E+IRAMIgtBPiEQDCELIABBADoALCAPIQEMAQtBCyEQDAYLQTohEAwFCyABQQFqIQFBLSEQDAQLIAAgAToALCAAQQA2AgAgFkEBaiEBQQwhEAwDCyAAQQA2AgAgF0EBaiEBQQohEAwCCyAAQQA2AgALIABBADoALCANIQFBCSEQDAALC0EAIRAgAEEANgIcIAAgCzYCFCAAQc2QgIAANgIQIABBCTYCDAwXC0EAIRAgAEEANgIcIAAgCjYCFCAAQemKgIAANgIQIABBCTYCDAwWC0EAIRAgAEEANgIcIAAgCTYCFCAAQbeQgIAANgIQIABBCTYCDAwVC0EAIRAgAEEANgIcIAAgCDYCFCAAQZyRgIAANgIQIABBCTYCDAwUC0EAIRAgAEEANgIcIAAgATYCFCAAQc2QgIAANgIQIABBCTYCDAwTC0EAIRAgAEEANgIcIAAgATYCFCAAQemKgIAANgIQIABBCTYCDAwSC0EAIRAgAEEANgIcIAAgATYCFCAAQbeQgIAANgIQIABBCTYCDAwRC0EAIRAgAEEANgIcIAAgATYCFCAAQZyRgIAANgIQIABBCTYCDAwQC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwPC0EAIRAgAEEANgIcIAAgATYCFCAAQZeVgIAANgIQIABBDzYCDAwOC0EAIRAgAEEANgIcIAAgATYCFCAAQcCSgIAANgIQIABBCzYCDAwNC0EAIRAgAEEANgIcIAAgATYCFCAAQZWJgIAANgIQIABBCzYCDAwMC0EAIRAgAEEANgIcIAAgATYCFCAAQeGPgIAANgIQIABBCjYCDAwLC0EAIRAgAEEANgIcIAAgATYCFCAAQfuPgIAANgIQIABBCjYCDAwKC0EAIRAgAEEANgIcIAAgATYCFCAAQfGZgIAANgIQIABBAjYCDAwJC0EAIRAgAEEANgIcIAAgATYCFCAAQcSUgIAANgIQIABBAjYCDAwIC0EAIRAgAEEANgIcIAAgATYCFCAAQfKVgIAANgIQIABBAjYCDAwHCyAAQQI2AhwgACABNgIUIABBnJqAgAA2AhAgAEEWNgIMQQAhEAwGC0EBIRAMBQtB1AAhECABIgQgAkYNBCADQQhqIAAgBCACQdjCgIAAQQoQxYCAgAAgAygCDCEEIAMoAggOAwEEAgALEMqAgIAAAAsgAEEANgIcIABBtZqAgAA2AhAgAEEXNgIMIAAgBEEBajYCFEEAIRAMAgsgAEEANgIcIAAgBDYCFCAAQcqagIAANgIQIABBCTYCDEEAIRAMAQsCQCABIgQgAkcNAEEiIRAMAQsgAEGJgICAADYCCCAAIAQ2AgRBISEQCyADQRBqJICAgIAAIBALrwEBAn8gASgCACEGAkACQCACIANGDQAgBCAGaiEEIAYgA2ogAmshByACIAZBf3MgBWoiBmohBQNAAkAgAi0AACAELQAARg0AQQIhBAwDCwJAIAYNAEEAIQQgBSECDAMLIAZBf2ohBiAEQQFqIQQgAkEBaiICIANHDQALIAchBiADIQILIABBATYCACABIAY2AgAgACACNgIEDwsgAUEANgIAIAAgBDYCACAAIAI2AgQLCgAgABDHgICAAAvyNgELfyOAgICAAEEQayIBJICAgIAAAkBBACgCoNCAgAANAEEAEMuAgIAAQYDUhIAAayICQdkASQ0AQQAhAwJAQQAoAuDTgIAAIgQNAEEAQn83AuzTgIAAQQBCgICEgICAwAA3AuTTgIAAQQAgAUEIakFwcUHYqtWqBXMiBDYC4NOAgABBAEEANgL004CAAEEAQQA2AsTTgIAAC0EAIAI2AszTgIAAQQBBgNSEgAA2AsjTgIAAQQBBgNSEgAA2ApjQgIAAQQAgBDYCrNCAgABBAEF/NgKo0ICAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALQYDUhIAAQXhBgNSEgABrQQ9xQQBBgNSEgABBCGpBD3EbIgNqIgRBBGogAkFIaiIFIANrIgNBAXI2AgBBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAQYDUhIAAIAVqQTg2AgQLAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB7AFLDQACQEEAKAKI0ICAACIGQRAgAEETakFwcSAAQQtJGyICQQN2IgR2IgNBA3FFDQACQAJAIANBAXEgBHJBAXMiBUEDdCIEQbDQgIAAaiIDIARBuNCAgABqKAIAIgQoAggiAkcNAEEAIAZBfiAFd3E2AojQgIAADAELIAMgAjYCCCACIAM2AgwLIARBCGohAyAEIAVBA3QiBUEDcjYCBCAEIAVqIgQgBCgCBEEBcjYCBAwMCyACQQAoApDQgIAAIgdNDQECQCADRQ0AAkACQCADIAR0QQIgBHQiA0EAIANrcnEiA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqIgRBA3QiA0Gw0ICAAGoiBSADQbjQgIAAaigCACIDKAIIIgBHDQBBACAGQX4gBHdxIgY2AojQgIAADAELIAUgADYCCCAAIAU2AgwLIAMgAkEDcjYCBCADIARBA3QiBGogBCACayIFNgIAIAMgAmoiACAFQQFyNgIEAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQQCQAJAIAZBASAHQQN2dCIIcQ0AQQAgBiAIcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCAENgIMIAIgBDYCCCAEIAI2AgwgBCAINgIICyADQQhqIQNBACAANgKc0ICAAEEAIAU2ApDQgIAADAwLQQAoAozQgIAAIglFDQEgCUEAIAlrcUF/aiIDIANBDHZBEHEiA3YiBEEFdkEIcSIFIANyIAQgBXYiA0ECdkEEcSIEciADIAR2IgNBAXZBAnEiBHIgAyAEdiIDQQF2QQFxIgRyIAMgBHZqQQJ0QbjSgIAAaigCACIAKAIEQXhxIAJrIQQgACEFAkADQAJAIAUoAhAiAw0AIAVBFGooAgAiA0UNAgsgAygCBEF4cSACayIFIAQgBSAESSIFGyEEIAMgACAFGyEAIAMhBQwACwsgACgCGCEKAkAgACgCDCIIIABGDQAgACgCCCIDQQAoApjQgIAASRogCCADNgIIIAMgCDYCDAwLCwJAIABBFGoiBSgCACIDDQAgACgCECIDRQ0DIABBEGohBQsDQCAFIQsgAyIIQRRqIgUoAgAiAw0AIAhBEGohBSAIKAIQIgMNAAsgC0EANgIADAoLQX8hAiAAQb9/Sw0AIABBE2oiA0FwcSECQQAoAozQgIAAIgdFDQBBACELAkAgAkGAAkkNAEEfIQsgAkH///8HSw0AIANBCHYiAyADQYD+P2pBEHZBCHEiA3QiBCAEQYDgH2pBEHZBBHEiBHQiBSAFQYCAD2pBEHZBAnEiBXRBD3YgAyAEciAFcmsiA0EBdCACIANBFWp2QQFxckEcaiELC0EAIAJrIQQCQAJAAkACQCALQQJ0QbjSgIAAaigCACIFDQBBACEDQQAhCAwBC0EAIQMgAkEAQRkgC0EBdmsgC0EfRht0IQBBACEIA0ACQCAFKAIEQXhxIAJrIgYgBE8NACAGIQQgBSEIIAYNAEEAIQQgBSEIIAUhAwwDCyADIAVBFGooAgAiBiAGIAUgAEEddkEEcWpBEGooAgAiBUYbIAMgBhshAyAAQQF0IQAgBQ0ACwsCQCADIAhyDQBBACEIQQIgC3QiA0EAIANrciAHcSIDRQ0DIANBACADa3FBf2oiAyADQQx2QRBxIgN2IgVBBXZBCHEiACADciAFIAB2IgNBAnZBBHEiBXIgAyAFdiIDQQF2QQJxIgVyIAMgBXYiA0EBdkEBcSIFciADIAV2akECdEG40oCAAGooAgAhAwsgA0UNAQsDQCADKAIEQXhxIAJrIgYgBEkhAAJAIAMoAhAiBQ0AIANBFGooAgAhBQsgBiAEIAAbIQQgAyAIIAAbIQggBSEDIAUNAAsLIAhFDQAgBEEAKAKQ0ICAACACa08NACAIKAIYIQsCQCAIKAIMIgAgCEYNACAIKAIIIgNBACgCmNCAgABJGiAAIAM2AgggAyAANgIMDAkLAkAgCEEUaiIFKAIAIgMNACAIKAIQIgNFDQMgCEEQaiEFCwNAIAUhBiADIgBBFGoiBSgCACIDDQAgAEEQaiEFIAAoAhAiAw0ACyAGQQA2AgAMCAsCQEEAKAKQ0ICAACIDIAJJDQBBACgCnNCAgAAhBAJAAkAgAyACayIFQRBJDQAgBCACaiIAIAVBAXI2AgRBACAFNgKQ0ICAAEEAIAA2ApzQgIAAIAQgA2ogBTYCACAEIAJBA3I2AgQMAQsgBCADQQNyNgIEIAQgA2oiAyADKAIEQQFyNgIEQQBBADYCnNCAgABBAEEANgKQ0ICAAAsgBEEIaiEDDAoLAkBBACgClNCAgAAiACACTQ0AQQAoAqDQgIAAIgMgAmoiBCAAIAJrIgVBAXI2AgRBACAFNgKU0ICAAEEAIAQ2AqDQgIAAIAMgAkEDcjYCBCADQQhqIQMMCgsCQAJAQQAoAuDTgIAARQ0AQQAoAujTgIAAIQQMAQtBAEJ/NwLs04CAAEEAQoCAhICAgMAANwLk04CAAEEAIAFBDGpBcHFB2KrVqgVzNgLg04CAAEEAQQA2AvTTgIAAQQBBADYCxNOAgABBgIAEIQQLQQAhAwJAIAQgAkHHAGoiB2oiBkEAIARrIgtxIgggAksNAEEAQTA2AvjTgIAADAoLAkBBACgCwNOAgAAiA0UNAAJAQQAoArjTgIAAIgQgCGoiBSAETQ0AIAUgA00NAQtBACEDQQBBMDYC+NOAgAAMCgtBAC0AxNOAgABBBHENBAJAAkACQEEAKAKg0ICAACIERQ0AQcjTgIAAIQMDQAJAIAMoAgAiBSAESw0AIAUgAygCBGogBEsNAwsgAygCCCIDDQALC0EAEMuAgIAAIgBBf0YNBSAIIQYCQEEAKALk04CAACIDQX9qIgQgAHFFDQAgCCAAayAEIABqQQAgA2txaiEGCyAGIAJNDQUgBkH+////B0sNBQJAQQAoAsDTgIAAIgNFDQBBACgCuNOAgAAiBCAGaiIFIARNDQYgBSADSw0GCyAGEMuAgIAAIgMgAEcNAQwHCyAGIABrIAtxIgZB/v///wdLDQQgBhDLgICAACIAIAMoAgAgAygCBGpGDQMgACEDCwJAIANBf0YNACACQcgAaiAGTQ0AAkAgByAGa0EAKALo04CAACIEakEAIARrcSIEQf7///8HTQ0AIAMhAAwHCwJAIAQQy4CAgABBf0YNACAEIAZqIQYgAyEADAcLQQAgBmsQy4CAgAAaDAQLIAMhACADQX9HDQUMAwtBACEIDAcLQQAhAAwFCyAAQX9HDQILQQBBACgCxNOAgABBBHI2AsTTgIAACyAIQf7///8HSw0BIAgQy4CAgAAhAEEAEMuAgIAAIQMgAEF/Rg0BIANBf0YNASAAIANPDQEgAyAAayIGIAJBOGpNDQELQQBBACgCuNOAgAAgBmoiAzYCuNOAgAACQCADQQAoArzTgIAATQ0AQQAgAzYCvNOAgAALAkACQAJAAkBBACgCoNCAgAAiBEUNAEHI04CAACEDA0AgACADKAIAIgUgAygCBCIIakYNAiADKAIIIgMNAAwDCwsCQAJAQQAoApjQgIAAIgNFDQAgACADTw0BC0EAIAA2ApjQgIAAC0EAIQNBACAGNgLM04CAAEEAIAA2AsjTgIAAQQBBfzYCqNCAgABBAEEAKALg04CAADYCrNCAgABBAEEANgLU04CAAANAIANBxNCAgABqIANBuNCAgABqIgQ2AgAgBCADQbDQgIAAaiIFNgIAIANBvNCAgABqIAU2AgAgA0HM0ICAAGogA0HA0ICAAGoiBTYCACAFIAQ2AgAgA0HU0ICAAGogA0HI0ICAAGoiBDYCACAEIAU2AgAgA0HQ0ICAAGogBDYCACADQSBqIgNBgAJHDQALIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgQgBkFIaiIFIANrIgNBAXI2AgRBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAQ2AqDQgIAAIAAgBWpBODYCBAwCCyADLQAMQQhxDQAgBCAFSQ0AIAQgAE8NACAEQXggBGtBD3FBACAEQQhqQQ9xGyIFaiIAQQAoApTQgIAAIAZqIgsgBWsiBUEBcjYCBCADIAggBmo2AgRBAEEAKALw04CAADYCpNCAgABBACAFNgKU0ICAAEEAIAA2AqDQgIAAIAQgC2pBODYCBAwBCwJAIABBACgCmNCAgAAiCE8NAEEAIAA2ApjQgIAAIAAhCAsgACAGaiEFQcjTgIAAIQMCQAJAAkACQAJAAkACQANAIAMoAgAgBUYNASADKAIIIgMNAAwCCwsgAy0ADEEIcUUNAQtByNOAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiIFIARLDQMLIAMoAgghAwwACwsgAyAANgIAIAMgAygCBCAGajYCBCAAQXggAGtBD3FBACAAQQhqQQ9xG2oiCyACQQNyNgIEIAVBeCAFa0EPcUEAIAVBCGpBD3EbaiIGIAsgAmoiAmshAwJAIAYgBEcNAEEAIAI2AqDQgIAAQQBBACgClNCAgAAgA2oiAzYClNCAgAAgAiADQQFyNgIEDAMLAkAgBkEAKAKc0ICAAEcNAEEAIAI2ApzQgIAAQQBBACgCkNCAgAAgA2oiAzYCkNCAgAAgAiADQQFyNgIEIAIgA2ogAzYCAAwDCwJAIAYoAgQiBEEDcUEBRw0AIARBeHEhBwJAAkAgBEH/AUsNACAGKAIIIgUgBEEDdiIIQQN0QbDQgIAAaiIARhoCQCAGKAIMIgQgBUcNAEEAQQAoAojQgIAAQX4gCHdxNgKI0ICAAAwCCyAEIABGGiAEIAU2AgggBSAENgIMDAELIAYoAhghCQJAAkAgBigCDCIAIAZGDQAgBigCCCIEIAhJGiAAIAQ2AgggBCAANgIMDAELAkAgBkEUaiIEKAIAIgUNACAGQRBqIgQoAgAiBQ0AQQAhAAwBCwNAIAQhCCAFIgBBFGoiBCgCACIFDQAgAEEQaiEEIAAoAhAiBQ0ACyAIQQA2AgALIAlFDQACQAJAIAYgBigCHCIFQQJ0QbjSgIAAaiIEKAIARw0AIAQgADYCACAADQFBAEEAKAKM0ICAAEF+IAV3cTYCjNCAgAAMAgsgCUEQQRQgCSgCECAGRhtqIAA2AgAgAEUNAQsgACAJNgIYAkAgBigCECIERQ0AIAAgBDYCECAEIAA2AhgLIAYoAhQiBEUNACAAQRRqIAQ2AgAgBCAANgIYCyAHIANqIQMgBiAHaiIGKAIEIQQLIAYgBEF+cTYCBCACIANqIAM2AgAgAiADQQFyNgIEAkAgA0H/AUsNACADQXhxQbDQgIAAaiEEAkACQEEAKAKI0ICAACIFQQEgA0EDdnQiA3ENAEEAIAUgA3I2AojQgIAAIAQhAwwBCyAEKAIIIQMLIAMgAjYCDCAEIAI2AgggAiAENgIMIAIgAzYCCAwDC0EfIQQCQCADQf///wdLDQAgA0EIdiIEIARBgP4/akEQdkEIcSIEdCIFIAVBgOAfakEQdkEEcSIFdCIAIABBgIAPakEQdkECcSIAdEEPdiAEIAVyIAByayIEQQF0IAMgBEEVanZBAXFyQRxqIQQLIAIgBDYCHCACQgA3AhAgBEECdEG40oCAAGohBQJAQQAoAozQgIAAIgBBASAEdCIIcQ0AIAUgAjYCAEEAIAAgCHI2AozQgIAAIAIgBTYCGCACIAI2AgggAiACNgIMDAMLIANBAEEZIARBAXZrIARBH0YbdCEEIAUoAgAhAANAIAAiBSgCBEF4cSADRg0CIARBHXYhACAEQQF0IQQgBSAAQQRxakEQaiIIKAIAIgANAAsgCCACNgIAIAIgBTYCGCACIAI2AgwgAiACNgIIDAILIABBeCAAa0EPcUEAIABBCGpBD3EbIgNqIgsgBkFIaiIIIANrIgNBAXI2AgQgACAIakE4NgIEIAQgBUE3IAVrQQ9xQQAgBUFJakEPcRtqQUFqIgggCCAEQRBqSRsiCEEjNgIEQQBBACgC8NOAgAA2AqTQgIAAQQAgAzYClNCAgABBACALNgKg0ICAACAIQRBqQQApAtDTgIAANwIAIAhBACkCyNOAgAA3AghBACAIQQhqNgLQ04CAAEEAIAY2AszTgIAAQQAgADYCyNOAgABBAEEANgLU04CAACAIQSRqIQMDQCADQQc2AgAgA0EEaiIDIAVJDQALIAggBEYNAyAIIAgoAgRBfnE2AgQgCCAIIARrIgA2AgAgBCAAQQFyNgIEAkAgAEH/AUsNACAAQXhxQbDQgIAAaiEDAkACQEEAKAKI0ICAACIFQQEgAEEDdnQiAHENAEEAIAUgAHI2AojQgIAAIAMhBQwBCyADKAIIIQULIAUgBDYCDCADIAQ2AgggBCADNgIMIAQgBTYCCAwEC0EfIQMCQCAAQf///wdLDQAgAEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCIIIAhBgIAPakEQdkECcSIIdEEPdiADIAVyIAhyayIDQQF0IAAgA0EVanZBAXFyQRxqIQMLIAQgAzYCHCAEQgA3AhAgA0ECdEG40oCAAGohBQJAQQAoAozQgIAAIghBASADdCIGcQ0AIAUgBDYCAEEAIAggBnI2AozQgIAAIAQgBTYCGCAEIAQ2AgggBCAENgIMDAQLIABBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhCANAIAgiBSgCBEF4cSAARg0DIANBHXYhCCADQQF0IQMgBSAIQQRxakEQaiIGKAIAIggNAAsgBiAENgIAIAQgBTYCGCAEIAQ2AgwgBCAENgIIDAMLIAUoAggiAyACNgIMIAUgAjYCCCACQQA2AhggAiAFNgIMIAIgAzYCCAsgC0EIaiEDDAULIAUoAggiAyAENgIMIAUgBDYCCCAEQQA2AhggBCAFNgIMIAQgAzYCCAtBACgClNCAgAAiAyACTQ0AQQAoAqDQgIAAIgQgAmoiBSADIAJrIgNBAXI2AgRBACADNgKU0ICAAEEAIAU2AqDQgIAAIAQgAkEDcjYCBCAEQQhqIQMMAwtBACEDQQBBMDYC+NOAgAAMAgsCQCALRQ0AAkACQCAIIAgoAhwiBUECdEG40oCAAGoiAygCAEcNACADIAA2AgAgAA0BQQAgB0F+IAV3cSIHNgKM0ICAAAwCCyALQRBBFCALKAIQIAhGG2ogADYCACAARQ0BCyAAIAs2AhgCQCAIKAIQIgNFDQAgACADNgIQIAMgADYCGAsgCEEUaigCACIDRQ0AIABBFGogAzYCACADIAA2AhgLAkACQCAEQQ9LDQAgCCAEIAJqIgNBA3I2AgQgCCADaiIDIAMoAgRBAXI2AgQMAQsgCCACaiIAIARBAXI2AgQgCCACQQNyNgIEIAAgBGogBDYCAAJAIARB/wFLDQAgBEF4cUGw0ICAAGohAwJAAkBBACgCiNCAgAAiBUEBIARBA3Z0IgRxDQBBACAFIARyNgKI0ICAACADIQQMAQsgAygCCCEECyAEIAA2AgwgAyAANgIIIAAgAzYCDCAAIAQ2AggMAQtBHyEDAkAgBEH///8HSw0AIARBCHYiAyADQYD+P2pBEHZBCHEiA3QiBSAFQYDgH2pBEHZBBHEiBXQiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAFciACcmsiA0EBdCAEIANBFWp2QQFxckEcaiEDCyAAIAM2AhwgAEIANwIQIANBAnRBuNKAgABqIQUCQCAHQQEgA3QiAnENACAFIAA2AgBBACAHIAJyNgKM0ICAACAAIAU2AhggACAANgIIIAAgADYCDAwBCyAEQQBBGSADQQF2ayADQR9GG3QhAyAFKAIAIQICQANAIAIiBSgCBEF4cSAERg0BIANBHXYhAiADQQF0IQMgBSACQQRxakEQaiIGKAIAIgINAAsgBiAANgIAIAAgBTYCGCAAIAA2AgwgACAANgIIDAELIAUoAggiAyAANgIMIAUgADYCCCAAQQA2AhggACAFNgIMIAAgAzYCCAsgCEEIaiEDDAELAkAgCkUNAAJAAkAgACAAKAIcIgVBAnRBuNKAgABqIgMoAgBHDQAgAyAINgIAIAgNAUEAIAlBfiAFd3E2AozQgIAADAILIApBEEEUIAooAhAgAEYbaiAINgIAIAhFDQELIAggCjYCGAJAIAAoAhAiA0UNACAIIAM2AhAgAyAINgIYCyAAQRRqKAIAIgNFDQAgCEEUaiADNgIAIAMgCDYCGAsCQAJAIARBD0sNACAAIAQgAmoiA0EDcjYCBCAAIANqIgMgAygCBEEBcjYCBAwBCyAAIAJqIgUgBEEBcjYCBCAAIAJBA3I2AgQgBSAEaiAENgIAAkAgB0UNACAHQXhxQbDQgIAAaiECQQAoApzQgIAAIQMCQAJAQQEgB0EDdnQiCCAGcQ0AQQAgCCAGcjYCiNCAgAAgAiEIDAELIAIoAgghCAsgCCADNgIMIAIgAzYCCCADIAI2AgwgAyAINgIIC0EAIAU2ApzQgIAAQQAgBDYCkNCAgAALIABBCGohAwsgAUEQaiSAgICAACADCwoAIAAQyYCAgAAL4g0BB38CQCAARQ0AIABBeGoiASAAQXxqKAIAIgJBeHEiAGohAwJAIAJBAXENACACQQNxRQ0BIAEgASgCACICayIBQQAoApjQgIAAIgRJDQEgAiAAaiEAAkAgAUEAKAKc0ICAAEYNAAJAIAJB/wFLDQAgASgCCCIEIAJBA3YiBUEDdEGw0ICAAGoiBkYaAkAgASgCDCICIARHDQBBAEEAKAKI0ICAAEF+IAV3cTYCiNCAgAAMAwsgAiAGRhogAiAENgIIIAQgAjYCDAwCCyABKAIYIQcCQAJAIAEoAgwiBiABRg0AIAEoAggiAiAESRogBiACNgIIIAIgBjYCDAwBCwJAIAFBFGoiAigCACIEDQAgAUEQaiICKAIAIgQNAEEAIQYMAQsDQCACIQUgBCIGQRRqIgIoAgAiBA0AIAZBEGohAiAGKAIQIgQNAAsgBUEANgIACyAHRQ0BAkACQCABIAEoAhwiBEECdEG40oCAAGoiAigCAEcNACACIAY2AgAgBg0BQQBBACgCjNCAgABBfiAEd3E2AozQgIAADAMLIAdBEEEUIAcoAhAgAUYbaiAGNgIAIAZFDQILIAYgBzYCGAJAIAEoAhAiAkUNACAGIAI2AhAgAiAGNgIYCyABKAIUIgJFDQEgBkEUaiACNgIAIAIgBjYCGAwBCyADKAIEIgJBA3FBA0cNACADIAJBfnE2AgRBACAANgKQ0ICAACABIABqIAA2AgAgASAAQQFyNgIEDwsgASADTw0AIAMoAgQiAkEBcUUNAAJAAkAgAkECcQ0AAkAgA0EAKAKg0ICAAEcNAEEAIAE2AqDQgIAAQQBBACgClNCAgAAgAGoiADYClNCAgAAgASAAQQFyNgIEIAFBACgCnNCAgABHDQNBAEEANgKQ0ICAAEEAQQA2ApzQgIAADwsCQCADQQAoApzQgIAARw0AQQAgATYCnNCAgABBAEEAKAKQ0ICAACAAaiIANgKQ0ICAACABIABBAXI2AgQgASAAaiAANgIADwsgAkF4cSAAaiEAAkACQCACQf8BSw0AIAMoAggiBCACQQN2IgVBA3RBsNCAgABqIgZGGgJAIAMoAgwiAiAERw0AQQBBACgCiNCAgABBfiAFd3E2AojQgIAADAILIAIgBkYaIAIgBDYCCCAEIAI2AgwMAQsgAygCGCEHAkACQCADKAIMIgYgA0YNACADKAIIIgJBACgCmNCAgABJGiAGIAI2AgggAiAGNgIMDAELAkAgA0EUaiICKAIAIgQNACADQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQACQAJAIAMgAygCHCIEQQJ0QbjSgIAAaiICKAIARw0AIAIgBjYCACAGDQFBAEEAKAKM0ICAAEF+IAR3cTYCjNCAgAAMAgsgB0EQQRQgBygCECADRhtqIAY2AgAgBkUNAQsgBiAHNgIYAkAgAygCECICRQ0AIAYgAjYCECACIAY2AhgLIAMoAhQiAkUNACAGQRRqIAI2AgAgAiAGNgIYCyABIABqIAA2AgAgASAAQQFyNgIEIAFBACgCnNCAgABHDQFBACAANgKQ0ICAAA8LIAMgAkF+cTYCBCABIABqIAA2AgAgASAAQQFyNgIECwJAIABB/wFLDQAgAEF4cUGw0ICAAGohAgJAAkBBACgCiNCAgAAiBEEBIABBA3Z0IgBxDQBBACAEIAByNgKI0ICAACACIQAMAQsgAigCCCEACyAAIAE2AgwgAiABNgIIIAEgAjYCDCABIAA2AggPC0EfIQICQCAAQf///wdLDQAgAEEIdiICIAJBgP4/akEQdkEIcSICdCIEIARBgOAfakEQdkEEcSIEdCIGIAZBgIAPakEQdkECcSIGdEEPdiACIARyIAZyayICQQF0IAAgAkEVanZBAXFyQRxqIQILIAEgAjYCHCABQgA3AhAgAkECdEG40oCAAGohBAJAAkBBACgCjNCAgAAiBkEBIAJ0IgNxDQAgBCABNgIAQQAgBiADcjYCjNCAgAAgASAENgIYIAEgATYCCCABIAE2AgwMAQsgAEEAQRkgAkEBdmsgAkEfRht0IQIgBCgCACEGAkADQCAGIgQoAgRBeHEgAEYNASACQR12IQYgAkEBdCECIAQgBkEEcWpBEGoiAygCACIGDQALIAMgATYCACABIAQ2AhggASABNgIMIAEgATYCCAwBCyAEKAIIIgAgATYCDCAEIAE2AgggAUEANgIYIAEgBDYCDCABIAA2AggLQQBBACgCqNCAgABBf2oiAUF/IAEbNgKo0ICAAAsLBAAAAAtOAAJAIAANAD8AQRB0DwsCQCAAQf//A3ENACAAQX9MDQACQCAAQRB2QAAiAEF/Rw0AQQBBMDYC+NOAgABBfw8LIABBEHQPCxDKgICAAAAL8gICA38BfgJAIAJFDQAgACABOgAAIAIgAGoiA0F/aiABOgAAIAJBA0kNACAAIAE6AAIgACABOgABIANBfWogAToAACADQX5qIAE6AAAgAkEHSQ0AIAAgAToAAyADQXxqIAE6AAAgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIFayICQSBJDQAgAa1CgYCAgBB+IQYgAyAFaiEBA0AgASAGNwMYIAEgBjcDECABIAY3AwggASAGNwMAIAFBIGohASACQWBqIgJBH0sNAAsLIAALC45IAQBBgAgLhkgBAAAAAgAAAAMAAAAAAAAAAAAAAAQAAAAFAAAAAAAAAAAAAAAGAAAABwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEludmFsaWQgY2hhciBpbiB1cmwgcXVlcnkAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9ib2R5AENvbnRlbnQtTGVuZ3RoIG92ZXJmbG93AENodW5rIHNpemUgb3ZlcmZsb3cAUmVzcG9uc2Ugb3ZlcmZsb3cASW52YWxpZCBtZXRob2QgZm9yIEhUVFAveC54IHJlcXVlc3QASW52YWxpZCBtZXRob2QgZm9yIFJUU1AveC54IHJlcXVlc3QARXhwZWN0ZWQgU09VUkNFIG1ldGhvZCBmb3IgSUNFL3gueCByZXF1ZXN0AEludmFsaWQgY2hhciBpbiB1cmwgZnJhZ21lbnQgc3RhcnQARXhwZWN0ZWQgZG90AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fc3RhdHVzAEludmFsaWQgcmVzcG9uc2Ugc3RhdHVzAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMAVXNlciBjYWxsYmFjayBlcnJvcgBgb25fcmVzZXRgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19oZWFkZXJgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='
 62515  
 62516  
 62517  /***/ }),
 62518  
 62519  /***/ 95627:
 62520  /***/ ((module) => {
 62521  
 62522  module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJsbGh0dHBfc3RhdHVzX25hbWUAIRpsbGh0dHBfc2V0X2xlbmllbnRfaGVhZGVycwAiIWxsaHR0cF9zZXRfbGVuaWVudF9jaHVua2VkX2xlbmd0aAAjHWxsaHR0cF9zZXRfbGVuaWVudF9rZWVwX2FsaXZlACQkbGxodHRwX3NldF9sZW5pZW50X3RyYW5zZmVyX2VuY29kaW5nACUYbGxodHRwX21lc3NhZ2VfbmVlZHNfZW9mAD8JFwEAQQELEQECAwQFCwYHNTk3MS8tJyspCrLgAkUCAAsIABCIgICAAAsZACAAEMKAgIAAGiAAIAI2AjggACABOgAoCxwAIAAgAC8BMiAALQAuIAAQwYCAgAAQgICAgAALKgEBf0HAABDGgICAACIBEMKAgIAAGiABQYCIgIAANgI4IAEgADoAKCABCwoAIAAQyICAgAALBwAgAC0AKAsHACAALQAqCwcAIAAtACsLBwAgAC0AKQsHACAALwEyCwcAIAAtAC4LRQEEfyAAKAIYIQEgAC0ALSECIAAtACghAyAAKAI4IQQgABDCgICAABogACAENgI4IAAgAzoAKCAAIAI6AC0gACABNgIYCxEAIAAgASABIAJqEMOAgIAACxAAIABBAEHcABDMgICAABoLZwEBf0EAIQECQCAAKAIMDQACQAJAAkACQCAALQAvDgMBAAMCCyAAKAI4IgFFDQAgASgCLCIBRQ0AIAAgARGAgICAAAAiAQ0DC0EADwsQyoCAgAAACyAAQcOWgIAANgIQQQ4hAQsgAQseAAJAIAAoAgwNACAAQdGbgIAANgIQIABBFTYCDAsLFgACQCAAKAIMQRVHDQAgAEEANgIMCwsWAAJAIAAoAgxBFkcNACAAQQA2AgwLCwcAIAAoAgwLBwAgACgCEAsJACAAIAE2AhALBwAgACgCFAsiAAJAIABBJEkNABDKgICAAAALIABBAnRBoLOAgABqKAIACyIAAkAgAEEuSQ0AEMqAgIAAAAsgAEECdEGwtICAAGooAgAL7gsBAX9B66iAgAAhAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABBnH9qDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0Hhp4CAAA8LQaShgIAADwtBy6yAgAAPC0H+sYCAAA8LQcCkgIAADwtBq6SAgAAPC0GNqICAAA8LQeKmgIAADwtBgLCAgAAPC0G5r4CAAA8LQdekgIAADwtB75+AgAAPC0Hhn4CAAA8LQfqfgIAADwtB8qCAgAAPC0Gor4CAAA8LQa6ygIAADwtBiLCAgAAPC0Hsp4CAAA8LQYKigIAADwtBjp2AgAAPC0HQroCAAA8LQcqjgIAADwtBxbKAgAAPC0HfnICAAA8LQdKcgIAADwtBxKCAgAAPC0HXoICAAA8LQaKfgIAADwtB7a6AgAAPC0GrsICAAA8LQdSlgIAADwtBzK6AgAAPC0H6roCAAA8LQfyrgIAADwtB0rCAgAAPC0HxnYCAAA8LQbuggIAADwtB96uAgAAPC0GQsYCAAA8LQdexgIAADwtBoq2AgAAPC0HUp4CAAA8LQeCrgIAADwtBn6yAgAAPC0HrsYCAAA8LQdWfgIAADwtByrGAgAAPC0HepYCAAA8LQdSegIAADwtB9JyAgAAPC0GnsoCAAA8LQbGdgIAADwtBoJ2AgAAPC0G5sYCAAA8LQbywgIAADwtBkqGAgAAPC0GzpoCAAA8LQemsgIAADwtBrJ6AgAAPC0HUq4CAAA8LQfemgIAADwtBgKaAgAAPC0GwoYCAAA8LQf6egIAADwtBjaOAgAAPC0GJrYCAAA8LQfeigIAADwtBoLGAgAAPC0Gun4CAAA8LQcalgIAADwtB6J6AgAAPC0GTooCAAA8LQcKvgIAADwtBw52AgAAPC0GLrICAAA8LQeGdgIAADwtBja+AgAAPC0HqoYCAAA8LQbStgIAADwtB0q+AgAAPC0HfsoCAAA8LQdKygIAADwtB8LCAgAAPC0GpooCAAA8LQfmjgIAADwtBmZ6AgAAPC0G1rICAAA8LQZuwgIAADwtBkrKAgAAPC0G2q4CAAA8LQcKigIAADwtB+LKAgAAPC0GepYCAAA8LQdCigIAADwtBup6AgAAPC0GBnoCAAA8LEMqAgIAAAAtB1qGAgAAhAQsgAQsWACAAIAAtAC1B/gFxIAFBAEdyOgAtCxkAIAAgAC0ALUH9AXEgAUEAR0EBdHI6AC0LGQAgACAALQAtQfsBcSABQQBHQQJ0cjoALQsZACAAIAAtAC1B9wFxIAFBAEdBA3RyOgAtCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAgAiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCBCIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQcaRgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIwIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAggiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2ioCAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCNCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIMIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZqAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAjgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCECIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZWQgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAI8IgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAhQiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEGqm4CAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCQCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIYIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABB7ZOAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCJCIERQ0AIAAgBBGAgICAAAAhAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIsIgRFDQAgACAEEYCAgIAAACEDCyADC0kBAn9BACEDAkAgACgCOCIERQ0AIAQoAigiBEUNACAAIAEgAiABayAEEYGAgIAAACIDQX9HDQAgAEH2iICAADYCEEEYIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCUCIERQ0AIAAgBBGAgICAAAAhAwsgAwtJAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAIcIgRFDQAgACABIAIgAWsgBBGBgICAAAAiA0F/Rw0AIABBwpmAgAA2AhBBGCEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAkgiBEUNACAAIAQRgICAgAAAIQMLIAMLSQECf0EAIQMCQCAAKAI4IgRFDQAgBCgCICIERQ0AIAAgASACIAFrIAQRgYCAgAAAIgNBf0cNACAAQZSUgIAANgIQQRghAwsgAwsuAQJ/QQAhAwJAIAAoAjgiBEUNACAEKAJMIgRFDQAgACAEEYCAgIAAACEDCyADCy4BAn9BACEDAkAgACgCOCIERQ0AIAQoAlQiBEUNACAAIAQRgICAgAAAIQMLIAMLLgECf0EAIQMCQCAAKAI4IgRFDQAgBCgCWCIERQ0AIAAgBBGAgICAAAAhAwsgAwtFAQF/AkACQCAALwEwQRRxQRRHDQBBASEDIAAtAChBAUYNASAALwEyQeUARiEDDAELIAAtAClBBUYhAwsgACADOgAuQQAL/gEBA39BASEDAkAgAC8BMCIEQQhxDQAgACkDIEIAUiEDCwJAAkAgAC0ALkUNAEEBIQUgAC0AKUEFRg0BQQEhBSAEQcAAcUUgA3FBAUcNAQtBACEFIARBwABxDQBBAiEFIARB//8DcSIDQQhxDQACQCADQYAEcUUNAAJAIAAtAChBAUcNACAALQAtQQpxDQBBBQ8LQQQPCwJAIANBIHENAAJAIAAtAChBAUYNACAALwEyQf//A3EiAEGcf2pB5ABJDQAgAEHMAUYNACAAQbACRg0AQQQhBSAEQShxRQ0CIANBiARxQYAERg0CC0EADwtBAEEDIAApAyBQGyEFCyAFC2IBAn9BACEBAkAgAC0AKEEBRg0AIAAvATJB//8DcSICQZx/akHkAEkNACACQcwBRg0AIAJBsAJGDQAgAC8BMCIAQcAAcQ0AQQEhASAAQYgEcUGABEYNACAAQShxRSEBCyABC6cBAQN/AkACQAJAIAAtACpFDQAgAC0AK0UNAEEAIQMgAC8BMCIEQQJxRQ0BDAILQQAhAyAALwEwIgRBAXFFDQELQQEhAyAALQAoQQFGDQAgAC8BMkH//wNxIgVBnH9qQeQASQ0AIAVBzAFGDQAgBUGwAkYNACAEQcAAcQ0AQQAhAyAEQYgEcUGABEYNACAEQShxQQBHIQMLIABBADsBMCAAQQA6AC8gAwuZAQECfwJAAkACQCAALQAqRQ0AIAAtACtFDQBBACEBIAAvATAiAkECcUUNAQwCC0EAIQEgAC8BMCICQQFxRQ0BC0EBIQEgAC0AKEEBRg0AIAAvATJB//8DcSIAQZx/akHkAEkNACAAQcwBRg0AIABBsAJGDQAgAkHAAHENAEEAIQEgAkGIBHFBgARGDQAgAkEocUEARyEBCyABC0kBAXsgAEEQav0MAAAAAAAAAAAAAAAAAAAAACIB/QsDACAAIAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AcsBygG4AckBuQHIAboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBANwBC0EAIRAMxgELQQ4hEAzFAQtBDSEQDMQBC0EPIRAMwwELQRAhEAzCAQtBEyEQDMEBC0EUIRAMwAELQRUhEAy/AQtBFiEQDL4BC0EXIRAMvQELQRghEAy8AQtBGSEQDLsBC0EaIRAMugELQRshEAy5AQtBHCEQDLgBC0EIIRAMtwELQR0hEAy2AQtBICEQDLUBC0EfIRAMtAELQQchEAyzAQtBISEQDLIBC0EiIRAMsQELQR4hEAywAQtBIyEQDK8BC0ESIRAMrgELQREhEAytAQtBJCEQDKwBC0ElIRAMqwELQSYhEAyqAQtBJyEQDKkBC0HDASEQDKgBC0EpIRAMpwELQSshEAymAQtBLCEQDKUBC0EtIRAMpAELQS4hEAyjAQtBLyEQDKIBC0HEASEQDKEBC0EwIRAMoAELQTQhEAyfAQtBDCEQDJ4BC0ExIRAMnQELQTIhEAycAQtBMyEQDJsBC0E5IRAMmgELQTUhEAyZAQtBxQEhEAyYAQtBCyEQDJcBC0E6IRAMlgELQTYhEAyVAQtBCiEQDJQBC0E3IRAMkwELQTghEAySAQtBPCEQDJEBC0E7IRAMkAELQT0hEAyPAQtBCSEQDI4BC0EoIRAMjQELQT4hEAyMAQtBPyEQDIsBC0HAACEQDIoBC0HBACEQDIkBC0HCACEQDIgBC0HDACEQDIcBC0HEACEQDIYBC0HFACEQDIUBC0HGACEQDIQBC0EqIRAMgwELQccAIRAMggELQcgAIRAMgQELQckAIRAMgAELQcoAIRAMfwtBywAhEAx+C0HNACEQDH0LQcwAIRAMfAtBzgAhEAx7C0HPACEQDHoLQdAAIRAMeQtB0QAhEAx4C0HSACEQDHcLQdMAIRAMdgtB1AAhEAx1C0HWACEQDHQLQdUAIRAMcwtBBiEQDHILQdcAIRAMcQtBBSEQDHALQdgAIRAMbwtBBCEQDG4LQdkAIRAMbQtB2gAhEAxsC0HbACEQDGsLQdwAIRAMagtBAyEQDGkLQd0AIRAMaAtB3gAhEAxnC0HfACEQDGYLQeEAIRAMZQtB4AAhEAxkC0HiACEQDGMLQeMAIRAMYgtBAiEQDGELQeQAIRAMYAtB5QAhEAxfC0HmACEQDF4LQecAIRAMXQtB6AAhEAxcC0HpACEQDFsLQeoAIRAMWgtB6wAhEAxZC0HsACEQDFgLQe0AIRAMVwtB7gAhEAxWC0HvACEQDFULQfAAIRAMVAtB8QAhEAxTC0HyACEQDFILQfMAIRAMUQtB9AAhEAxQC0H1ACEQDE8LQfYAIRAMTgtB9wAhEAxNC0H4ACEQDEwLQfkAIRAMSwtB+gAhEAxKC0H7ACEQDEkLQfwAIRAMSAtB/QAhEAxHC0H+ACEQDEYLQf8AIRAMRQtBgAEhEAxEC0GBASEQDEMLQYIBIRAMQgtBgwEhEAxBC0GEASEQDEALQYUBIRAMPwtBhgEhEAw+C0GHASEQDD0LQYgBIRAMPAtBiQEhEAw7C0GKASEQDDoLQYsBIRAMOQtBjAEhEAw4C0GNASEQDDcLQY4BIRAMNgtBjwEhEAw1C0GQASEQDDQLQZEBIRAMMwtBkgEhEAwyC0GTASEQDDELQZQBIRAMMAtBlQEhEAwvC0GWASEQDC4LQZcBIRAMLQtBmAEhEAwsC0GZASEQDCsLQZoBIRAMKgtBmwEhEAwpC0GcASEQDCgLQZ0BIRAMJwtBngEhEAwmC0GfASEQDCULQaABIRAMJAtBoQEhEAwjC0GiASEQDCILQaMBIRAMIQtBpAEhEAwgC0GlASEQDB8LQaYBIRAMHgtBpwEhEAwdC0GoASEQDBwLQakBIRAMGwtBqgEhEAwaC0GrASEQDBkLQawBIRAMGAtBrQEhEAwXC0GuASEQDBYLQQEhEAwVC0GvASEQDBQLQbABIRAMEwtBsQEhEAwSC0GzASEQDBELQbIBIRAMEAtBtAEhEAwPC0G1ASEQDA4LQbYBIRAMDQtBtwEhEAwMC0G4ASEQDAsLQbkBIRAMCgtBugEhEAwJC0G7ASEQDAgLQcYBIRAMBwtBvAEhEAwGC0G9ASEQDAULQb4BIRAMBAtBvwEhEAwDC0HAASEQDAILQcIBIRAMAQtBwQEhEAsDQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB4fICEjJSg/QEFERUZHSElKS0xNT1BRUlPeA1dZW1xdYGJlZmdoaWprbG1vcHFyc3R1dnd4eXp7fH1+gAGCAYUBhgGHAYkBiwGMAY0BjgGPAZABkQGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMBmQKkArAC/gL+AgsgASIEIAJHDfMBQd0BIRAM/wMLIAEiECACRw3dAUHDASEQDP4DCyABIgEgAkcNkAFB9wAhEAz9AwsgASIBIAJHDYYBQe8AIRAM/AMLIAEiASACRw1/QeoAIRAM+wMLIAEiASACRw17QegAIRAM+gMLIAEiASACRw14QeYAIRAM+QMLIAEiASACRw0aQRghEAz4AwsgASIBIAJHDRRBEiEQDPcDCyABIgEgAkcNWUHFACEQDPYDCyABIgEgAkcNSkE/IRAM9QMLIAEiASACRw1IQTwhEAz0AwsgASIBIAJHDUFBMSEQDPMDCyAALQAuQQFGDesDDIcCCyAAIAEiASACEMCAgIAAQQFHDeYBIABCADcDIAznAQsgACABIgEgAhC0gICAACIQDecBIAEhAQz1AgsCQCABIgEgAkcNAEEGIRAM8AMLIAAgAUEBaiIBIAIQu4CAgAAiEA3oASABIQEMMQsgAEIANwMgQRIhEAzVAwsgASIQIAJHDStBHSEQDO0DCwJAIAEiASACRg0AIAFBAWohAUEQIRAM1AMLQQchEAzsAwsgAEIAIAApAyAiESACIAEiEGutIhJ9IhMgEyARVhs3AyAgESASViIURQ3lAUEIIRAM6wMLAkAgASIBIAJGDQAgAEGJgICAADYCCCAAIAE2AgQgASEBQRQhEAzSAwtBCSEQDOoDCyABIQEgACkDIFAN5AEgASEBDPICCwJAIAEiASACRw0AQQshEAzpAwsgACABQQFqIgEgAhC2gICAACIQDeUBIAEhAQzyAgsgACABIgEgAhC4gICAACIQDeUBIAEhAQzyAgsgACABIgEgAhC4gICAACIQDeYBIAEhAQwNCyAAIAEiASACELqAgIAAIhAN5wEgASEBDPACCwJAIAEiASACRw0AQQ8hEAzlAwsgAS0AACIQQTtGDQggEEENRw3oASABQQFqIQEM7wILIAAgASIBIAIQuoCAgAAiEA3oASABIQEM8gILA0ACQCABLQAAQfC1gIAAai0AACIQQQFGDQAgEEECRw3rASAAKAIEIRAgAEEANgIEIAAgECABQQFqIgEQuYCAgAAiEA3qASABIQEM9AILIAFBAWoiASACRw0AC0ESIRAM4gMLIAAgASIBIAIQuoCAgAAiEA3pASABIQEMCgsgASIBIAJHDQZBGyEQDOADCwJAIAEiASACRw0AQRYhEAzgAwsgAEGKgICAADYCCCAAIAE2AgQgACABIAIQuICAgAAiEA3qASABIQFBICEQDMYDCwJAIAEiASACRg0AA0ACQCABLQAAQfC3gIAAai0AACIQQQJGDQACQCAQQX9qDgTlAewBAOsB7AELIAFBAWohAUEIIRAMyAMLIAFBAWoiASACRw0AC0EVIRAM3wMLQRUhEAzeAwsDQAJAIAEtAABB8LmAgABqLQAAIhBBAkYNACAQQX9qDgTeAewB4AHrAewBCyABQQFqIgEgAkcNAAtBGCEQDN0DCwJAIAEiASACRg0AIABBi4CAgAA2AgggACABNgIEIAEhAUEHIRAMxAMLQRkhEAzcAwsgAUEBaiEBDAILAkAgASIUIAJHDQBBGiEQDNsDCyAUIQECQCAULQAAQXNqDhTdAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAu4C7gLuAgDuAgtBACEQIABBADYCHCAAQa+LgIAANgIQIABBAjYCDCAAIBRBAWo2AhQM2gMLAkAgAS0AACIQQTtGDQAgEEENRw3oASABQQFqIQEM5QILIAFBAWohAQtBIiEQDL8DCwJAIAEiECACRw0AQRwhEAzYAwtCACERIBAhASAQLQAAQVBqDjfnAeYBAQIDBAUGBwgAAAAAAAAACQoLDA0OAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPEBESExQAC0EeIRAMvQMLQgIhEQzlAQtCAyERDOQBC0IEIREM4wELQgUhEQziAQtCBiERDOEBC0IHIREM4AELQgghEQzfAQtCCSERDN4BC0IKIREM3QELQgshEQzcAQtCDCERDNsBC0INIREM2gELQg4hEQzZAQtCDyERDNgBC0IKIREM1wELQgshEQzWAQtCDCERDNUBC0INIREM1AELQg4hEQzTAQtCDyERDNIBC0IAIRECQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAtAABBUGoON+UB5AEAAQIDBAUGB+YB5gHmAeYB5gHmAeYBCAkKCwwN5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAeYB5gHmAQ4PEBESE+YBC0ICIREM5AELQgMhEQzjAQtCBCERDOIBC0IFIREM4QELQgYhEQzgAQtCByERDN8BC0IIIREM3gELQgkhEQzdAQtCCiERDNwBC0ILIREM2wELQgwhEQzaAQtCDSERDNkBC0IOIREM2AELQg8hEQzXAQtCCiERDNYBC0ILIREM1QELQgwhEQzUAQtCDSERDNMBC0IOIREM0gELQg8hEQzRAQsgAEIAIAApAyAiESACIAEiEGutIhJ9IhMgEyARVhs3AyAgESASViIURQ3SAUEfIRAMwAMLAkAgASIBIAJGDQAgAEGJgICAADYCCCAAIAE2AgQgASEBQSQhEAynAwtBICEQDL8DCyAAIAEiECACEL6AgIAAQX9qDgW2AQDFAgHRAdIBC0ERIRAMpAMLIABBAToALyAQIQEMuwMLIAEiASACRw3SAUEkIRAMuwMLIAEiDSACRw0eQcYAIRAMugMLIAAgASIBIAIQsoCAgAAiEA3UASABIQEMtQELIAEiECACRw0mQdAAIRAMuAMLAkAgASIBIAJHDQBBKCEQDLgDCyAAQQA2AgQgAEGMgICAADYCCCAAIAEgARCxgICAACIQDdMBIAEhAQzYAQsCQCABIhAgAkcNAEEpIRAMtwMLIBAtAAAiAUEgRg0UIAFBCUcN0wEgEEEBaiEBDBULAkAgASIBIAJGDQAgAUEBaiEBDBcLQSohEAy1AwsCQCABIhAgAkcNAEErIRAMtQMLAkAgEC0AACIBQQlGDQAgAUEgRw3VAQsgAC0ALEEIRg3TASAQIQEMkQMLAkAgASIBIAJHDQBBLCEQDLQDCyABLQAAQQpHDdUBIAFBAWohAQzJAgsgASIOIAJHDdUBQS8hEAyyAwsDQAJAIAEtAAAiEEEgRg0AAkAgEEF2ag4EANwB3AEA2gELIAEhAQzgAQsgAUEBaiIBIAJHDQALQTEhEAyxAwtBMiEQIAEiFCACRg2wAyACIBRrIAAoAgAiAWohFSAUIAFrQQNqIRYCQANAIBQtAAAiF0EgciAXIBdBv39qQf8BcUEaSRtB/wFxIAFB8LuAgABqLQAARw0BAkAgAUEDRw0AQQYhAQyWAwsgAUEBaiEBIBRBAWoiFCACRw0ACyAAIBU2AgAMsQMLIABBADYCACAUIQEM2QELQTMhECABIhQgAkYNrwMgAiAUayAAKAIAIgFqIRUgFCABa0EIaiEWAkADQCAULQAAIhdBIHIgFyAXQb9/akH/AXFBGkkbQf8BcSABQfS7gIAAai0AAEcNAQJAIAFBCEcNAEEFIQEMlQMLIAFBAWohASAUQQFqIhQgAkcNAAsgACAVNgIADLADCyAAQQA2AgAgFCEBDNgBC0E0IRAgASIUIAJGDa4DIAIgFGsgACgCACIBaiEVIBQgAWtBBWohFgJAA0AgFC0AACIXQSByIBcgF0G/f2pB/wFxQRpJG0H/AXEgAUHQwoCAAGotAABHDQECQCABQQVHDQBBByEBDJQDCyABQQFqIQEgFEEBaiIUIAJHDQALIAAgFTYCAAyvAwsgAEEANgIAIBQhAQzXAQsCQCABIgEgAkYNAANAAkAgAS0AAEGAvoCAAGotAAAiEEEBRg0AIBBBAkYNCiABIQEM3QELIAFBAWoiASACRw0AC0EwIRAMrgMLQTAhEAytAwsCQCABIgEgAkYNAANAAkAgAS0AACIQQSBGDQAgEEF2ag4E2QHaAdoB2QHaAQsgAUEBaiIBIAJHDQALQTghEAytAwtBOCEQDKwDCwNAAkAgAS0AACIQQSBGDQAgEEEJRw0DCyABQQFqIgEgAkcNAAtBPCEQDKsDCwNAAkAgAS0AACIQQSBGDQACQAJAIBBBdmoOBNoBAQHaAQALIBBBLEYN2wELIAEhAQwECyABQQFqIgEgAkcNAAtBPyEQDKoDCyABIQEM2wELQcAAIRAgASIUIAJGDagDIAIgFGsgACgCACIBaiEWIBQgAWtBBmohFwJAA0AgFC0AAEEgciABQYDAgIAAai0AAEcNASABQQZGDY4DIAFBAWohASAUQQFqIhQgAkcNAAsgACAWNgIADKkDCyAAQQA2AgAgFCEBC0E2IRAMjgMLAkAgASIPIAJHDQBBwQAhEAynAwsgAEGMgICAADYCCCAAIA82AgQgDyEBIAAtACxBf2oOBM0B1QHXAdkBhwMLIAFBAWohAQzMAQsCQCABIgEgAkYNAANAAkAgAS0AACIQQSByIBAgEEG/f2pB/wFxQRpJG0H/AXEiEEEJRg0AIBBBIEYNAAJAAkACQAJAIBBBnX9qDhMAAwMDAwMDAwEDAwMDAwMDAwMCAwsgAUEBaiEBQTEhEAyRAwsgAUEBaiEBQTIhEAyQAwsgAUEBaiEBQTMhEAyPAwsgASEBDNABCyABQQFqIgEgAkcNAAtBNSEQDKUDC0E1IRAMpAMLAkAgASIBIAJGDQADQAJAIAEtAABBgLyAgABqLQAAQQFGDQAgASEBDNMBCyABQQFqIgEgAkcNAAtBPSEQDKQDC0E9IRAMowMLIAAgASIBIAIQsICAgAAiEA3WASABIQEMAQsgEEEBaiEBC0E8IRAMhwMLAkAgASIBIAJHDQBBwgAhEAygAwsCQANAAkAgAS0AAEF3ag4YAAL+Av4ChAP+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gL+Av4C/gIA/gILIAFBAWoiASACRw0AC0HCACEQDKADCyABQQFqIQEgAC0ALUEBcUUNvQEgASEBC0EsIRAMhQMLIAEiASACRw3TAUHEACEQDJ0DCwNAAkAgAS0AAEGQwICAAGotAABBAUYNACABIQEMtwILIAFBAWoiASACRw0AC0HFACEQDJwDCyANLQAAIhBBIEYNswEgEEE6Rw2BAyAAKAIEIQEgAEEANgIEIAAgASANEK+AgIAAIgEN0AEgDUEBaiEBDLMCC0HHACEQIAEiDSACRg2aAyACIA1rIAAoAgAiAWohFiANIAFrQQVqIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQZDCgIAAai0AAEcNgAMgAUEFRg30AiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyaAwtByAAhECABIg0gAkYNmQMgAiANayAAKAIAIgFqIRYgDSABa0EJaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUGWwoCAAGotAABHDf8CAkAgAUEJRw0AQQIhAQz1AgsgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMmQMLAkAgASINIAJHDQBByQAhEAyZAwsCQAJAIA0tAAAiAUEgciABIAFBv39qQf8BcUEaSRtB/wFxQZJ/ag4HAIADgAOAA4ADgAMBgAMLIA1BAWohAUE+IRAMgAMLIA1BAWohAUE/IRAM/wILQcoAIRAgASINIAJGDZcDIAIgDWsgACgCACIBaiEWIA0gAWtBAWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFBoMKAgABqLQAARw39AiABQQFGDfACIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJcDC0HLACEQIAEiDSACRg2WAyACIA1rIAAoAgAiAWohFiANIAFrQQ5qIRcDQCANLQAAIhRBIHIgFCAUQb9/akH/AXFBGkkbQf8BcSABQaLCgIAAai0AAEcN/AIgAUEORg3wAiABQQFqIQEgDUEBaiINIAJHDQALIAAgFjYCAAyWAwtBzAAhECABIg0gAkYNlQMgAiANayAAKAIAIgFqIRYgDSABa0EPaiEXA0AgDS0AACIUQSByIBQgFEG/f2pB/wFxQRpJG0H/AXEgAUHAwoCAAGotAABHDfsCAkAgAUEPRw0AQQMhAQzxAgsgAUEBaiEBIA1BAWoiDSACRw0ACyAAIBY2AgAMlQMLQc0AIRAgASINIAJGDZQDIAIgDWsgACgCACIBaiEWIA0gAWtBBWohFwNAIA0tAAAiFEEgciAUIBRBv39qQf8BcUEaSRtB/wFxIAFB0MKAgABqLQAARw36AgJAIAFBBUcNAEEEIQEM8AILIAFBAWohASANQQFqIg0gAkcNAAsgACAWNgIADJQDCwJAIAEiDSACRw0AQc4AIRAMlAMLAkACQAJAAkAgDS0AACIBQSByIAEgAUG/f2pB/wFxQRpJG0H/AXFBnX9qDhMA/QL9Av0C/QL9Av0C/QL9Av0C/QL9Av0CAf0C/QL9AgID/QILIA1BAWohAUHBACEQDP0CCyANQQFqIQFBwgAhEAz8AgsgDUEBaiEBQcMAIRAM+wILIA1BAWohAUHEACEQDPoCCwJAIAEiASACRg0AIABBjYCAgAA2AgggACABNgIEIAEhAUHFACEQDPoCC0HPACEQDJIDCyAQIQECQAJAIBAtAABBdmoOBAGoAqgCAKgCCyAQQQFqIQELQSchEAz4AgsCQCABIgEgAkcNAEHRACEQDJEDCwJAIAEtAABBIEYNACABIQEMjQELIAFBAWohASAALQAtQQFxRQ3HASABIQEMjAELIAEiFyACRw3IAUHSACEQDI8DC0HTACEQIAEiFCACRg2OAyACIBRrIAAoAgAiAWohFiAUIAFrQQFqIRcDQCAULQAAIAFB1sKAgABqLQAARw3MASABQQFGDccBIAFBAWohASAUQQFqIhQgAkcNAAsgACAWNgIADI4DCwJAIAEiASACRw0AQdUAIRAMjgMLIAEtAABBCkcNzAEgAUEBaiEBDMcBCwJAIAEiASACRw0AQdYAIRAMjQMLAkACQCABLQAAQXZqDgQAzQHNAQHNAQsgAUEBaiEBDMcBCyABQQFqIQFBygAhEAzzAgsgACABIgEgAhCugICAACIQDcsBIAEhAUHNACEQDPICCyAALQApQSJGDYUDDKYCCwJAIAEiASACRw0AQdsAIRAMigMLQQAhFEEBIRdBASEWQQAhEAJAAkACQAJAAkACQAJAAkACQCABLQAAQVBqDgrUAdMBAAECAwQFBgjVAQtBAiEQDAYLQQMhEAwFC0EEIRAMBAtBBSEQDAMLQQYhEAwCC0EHIRAMAQtBCCEQC0EAIRdBACEWQQAhFAzMAQtBCSEQQQEhFEEAIRdBACEWDMsBCwJAIAEiASACRw0AQd0AIRAMiQMLIAEtAABBLkcNzAEgAUEBaiEBDKYCCyABIgEgAkcNzAFB3wAhEAyHAwsCQCABIgEgAkYNACAAQY6AgIAANgIIIAAgATYCBCABIQFB0AAhEAzuAgtB4AAhEAyGAwtB4QAhECABIgEgAkYNhQMgAiABayAAKAIAIhRqIRYgASAUa0EDaiEXA0AgAS0AACAUQeLCgIAAai0AAEcNzQEgFEEDRg3MASAUQQFqIRQgAUEBaiIBIAJHDQALIAAgFjYCAAyFAwtB4gAhECABIgEgAkYNhAMgAiABayAAKAIAIhRqIRYgASAUa0ECaiEXA0AgAS0AACAUQebCgIAAai0AAEcNzAEgFEECRg3OASAUQQFqIRQgAUEBaiIBIAJHDQALIAAgFjYCAAyEAwtB4wAhECABIgEgAkYNgwMgAiABayAAKAIAIhRqIRYgASAUa0EDaiEXA0AgAS0AACAUQenCgIAAai0AAEcNywEgFEEDRg3OASAUQQFqIRQgAUEBaiIBIAJHDQALIAAgFjYCAAyDAwsCQCABIgEgAkcNAEHlACEQDIMDCyAAIAFBAWoiASACEKiAgIAAIhANzQEgASEBQdYAIRAM6QILAkAgASIBIAJGDQADQAJAIAEtAAAiEEEgRg0AAkACQAJAIBBBuH9qDgsAAc8BzwHPAc8BzwHPAc8BzwECzwELIAFBAWohAUHSACEQDO0CCyABQQFqIQFB0wAhEAzsAgsgAUEBaiEBQdQAIRAM6wILIAFBAWoiASACRw0AC0HkACEQDIIDC0HkACEQDIEDCwNAAkAgAS0AAEHwwoCAAGotAAAiEEEBRg0AIBBBfmoOA88B0AHRAdIBCyABQQFqIgEgAkcNAAtB5gAhEAyAAwsCQCABIgEgAkYNACABQQFqIQEMAwtB5wAhEAz/AgsDQAJAIAEtAABB8MSAgABqLQAAIhBBAUYNAAJAIBBBfmoOBNIB0wHUAQDVAQsgASEBQdcAIRAM5wILIAFBAWoiASACRw0AC0HoACEQDP4CCwJAIAEiASACRw0AQekAIRAM/gILAkAgAS0AACIQQXZqDhq6AdUB1QG8AdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAdUB1QHVAcoB1QHVAQDTAQsgAUEBaiEBC0EGIRAM4wILA0ACQCABLQAAQfDGgIAAai0AAEEBRg0AIAEhAQyeAgsgAUEBaiIBIAJHDQALQeoAIRAM+wILAkAgASIBIAJGDQAgAUEBaiEBDAMLQesAIRAM+gILAkAgASIBIAJHDQBB7AAhEAz6AgsgAUEBaiEBDAELAkAgASIBIAJHDQBB7QAhEAz5AgsgAUEBaiEBC0EEIRAM3gILAkAgASIUIAJHDQBB7gAhEAz3AgsgFCEBAkACQAJAIBQtAABB8MiAgABqLQAAQX9qDgfUAdUB1gEAnAIBAtcBCyAUQQFqIQEMCgsgFEEBaiEBDM0BC0EAIRAgAEEANgIcIABBm5KAgAA2AhAgAEEHNgIMIAAgFEEBajYCFAz2AgsCQANAAkAgAS0AAEHwyICAAGotAAAiEEEERg0AAkACQCAQQX9qDgfSAdMB1AHZAQAEAdkBCyABIQFB2gAhEAzgAgsgAUEBaiEBQdwAIRAM3wILIAFBAWoiASACRw0AC0HvACEQDPYCCyABQQFqIQEMywELAkAgASIUIAJHDQBB8AAhEAz1AgsgFC0AAEEvRw3UASAUQQFqIQEMBgsCQCABIhQgAkcNAEHxACEQDPQCCwJAIBQtAAAiAUEvRw0AIBRBAWohAUHdACEQDNsCCyABQXZqIgRBFksN0wFBASAEdEGJgIACcUUN0wEMygILAkAgASIBIAJGDQAgAUEBaiEBQd4AIRAM2gILQfIAIRAM8gILAkAgASIUIAJHDQBB9AAhEAzyAgsgFCEBAkAgFC0AAEHwzICAAGotAABBf2oOA8kClAIA1AELQeEAIRAM2AILAkAgASIUIAJGDQADQAJAIBQtAABB8MqAgABqLQAAIgFBA0YNAAJAIAFBf2oOAssCANUBCyAUIQFB3wAhEAzaAgsgFEEBaiIUIAJHDQALQfMAIRAM8QILQfMAIRAM8AILAkAgASIBIAJGDQAgAEGPgICAADYCCCAAIAE2AgQgASEBQeAAIRAM1wILQfUAIRAM7wILAkAgASIBIAJHDQBB9gAhEAzvAgsgAEGPgICAADYCCCAAIAE2AgQgASEBC0EDIRAM1AILA0AgAS0AAEEgRw3DAiABQQFqIgEgAkcNAAtB9wAhEAzsAgsCQCABIgEgAkcNAEH4ACEQDOwCCyABLQAAQSBHDc4BIAFBAWohAQzvAQsgACABIgEgAhCsgICAACIQDc4BIAEhAQyOAgsCQCABIgQgAkcNAEH6ACEQDOoCCyAELQAAQcwARw3RASAEQQFqIQFBEyEQDM8BCwJAIAEiBCACRw0AQfsAIRAM6QILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEANAIAQtAAAgAUHwzoCAAGotAABHDdABIAFBBUYNzgEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBB+wAhEAzoAgsCQCABIgQgAkcNAEH8ACEQDOgCCwJAAkAgBC0AAEG9f2oODADRAdEB0QHRAdEB0QHRAdEB0QHRAQHRAQsgBEEBaiEBQeYAIRAMzwILIARBAWohAUHnACEQDM4CCwJAIAEiBCACRw0AQf0AIRAM5wILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQe3PgIAAai0AAEcNzwEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQf0AIRAM5wILIABBADYCACAQQQFqIQFBECEQDMwBCwJAIAEiBCACRw0AQf4AIRAM5gILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEAJAA0AgBC0AACABQfbOgIAAai0AAEcNzgEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQf4AIRAM5gILIABBADYCACAQQQFqIQFBFiEQDMsBCwJAIAEiBCACRw0AQf8AIRAM5QILIAIgBGsgACgCACIBaiEUIAQgAWtBA2ohEAJAA0AgBC0AACABQfzOgIAAai0AAEcNzQEgAUEDRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQf8AIRAM5QILIABBADYCACAQQQFqIQFBBSEQDMoBCwJAIAEiBCACRw0AQYABIRAM5AILIAQtAABB2QBHDcsBIARBAWohAUEIIRAMyQELAkAgASIEIAJHDQBBgQEhEAzjAgsCQAJAIAQtAABBsn9qDgMAzAEBzAELIARBAWohAUHrACEQDMoCCyAEQQFqIQFB7AAhEAzJAgsCQCABIgQgAkcNAEGCASEQDOICCwJAAkAgBC0AAEG4f2oOCADLAcsBywHLAcsBywEBywELIARBAWohAUHqACEQDMkCCyAEQQFqIQFB7QAhEAzIAgsCQCABIgQgAkcNAEGDASEQDOECCyACIARrIAAoAgAiAWohECAEIAFrQQJqIRQCQANAIAQtAAAgAUGAz4CAAGotAABHDckBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgEDYCAEGDASEQDOECC0EAIRAgAEEANgIAIBRBAWohAQzGAQsCQCABIgQgAkcNAEGEASEQDOACCyACIARrIAAoAgAiAWohFCAEIAFrQQRqIRACQANAIAQtAAAgAUGDz4CAAGotAABHDcgBIAFBBEYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGEASEQDOACCyAAQQA2AgAgEEEBaiEBQSMhEAzFAQsCQCABIgQgAkcNAEGFASEQDN8CCwJAAkAgBC0AAEG0f2oOCADIAcgByAHIAcgByAEByAELIARBAWohAUHvACEQDMYCCyAEQQFqIQFB8AAhEAzFAgsCQCABIgQgAkcNAEGGASEQDN4CCyAELQAAQcUARw3FASAEQQFqIQEMgwILAkAgASIEIAJHDQBBhwEhEAzdAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFBiM+AgABqLQAARw3FASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBhwEhEAzdAgsgAEEANgIAIBBBAWohAUEtIRAMwgELAkAgASIEIAJHDQBBiAEhEAzcAgsgAiAEayAAKAIAIgFqIRQgBCABa0EIaiEQAkADQCAELQAAIAFB0M+AgABqLQAARw3EASABQQhGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBiAEhEAzcAgsgAEEANgIAIBBBAWohAUEpIRAMwQELAkAgASIBIAJHDQBBiQEhEAzbAgtBASEQIAEtAABB3wBHDcABIAFBAWohAQyBAgsCQCABIgQgAkcNAEGKASEQDNoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRADQCAELQAAIAFBjM+AgABqLQAARw3BASABQQFGDa8CIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQYoBIRAM2QILAkAgASIEIAJHDQBBiwEhEAzZAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFBjs+AgABqLQAARw3BASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBiwEhEAzZAgsgAEEANgIAIBBBAWohAUECIRAMvgELAkAgASIEIAJHDQBBjAEhEAzYAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFB8M+AgABqLQAARw3AASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBjAEhEAzYAgsgAEEANgIAIBBBAWohAUEfIRAMvQELAkAgASIEIAJHDQBBjQEhEAzXAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFB8s+AgABqLQAARw2/ASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBjQEhEAzXAgsgAEEANgIAIBBBAWohAUEJIRAMvAELAkAgASIEIAJHDQBBjgEhEAzWAgsCQAJAIAQtAABBt39qDgcAvwG/Ab8BvwG/AQG/AQsgBEEBaiEBQfgAIRAMvQILIARBAWohAUH5ACEQDLwCCwJAIAEiBCACRw0AQY8BIRAM1QILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEAJAA0AgBC0AACABQZHPgIAAai0AAEcNvQEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQY8BIRAM1QILIABBADYCACAQQQFqIQFBGCEQDLoBCwJAIAEiBCACRw0AQZABIRAM1AILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQZfPgIAAai0AAEcNvAEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZABIRAM1AILIABBADYCACAQQQFqIQFBFyEQDLkBCwJAIAEiBCACRw0AQZEBIRAM0wILIAIgBGsgACgCACIBaiEUIAQgAWtBBmohEAJAA0AgBC0AACABQZrPgIAAai0AAEcNuwEgAUEGRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZEBIRAM0wILIABBADYCACAQQQFqIQFBFSEQDLgBCwJAIAEiBCACRw0AQZIBIRAM0gILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEAJAA0AgBC0AACABQaHPgIAAai0AAEcNugEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZIBIRAM0gILIABBADYCACAQQQFqIQFBHiEQDLcBCwJAIAEiBCACRw0AQZMBIRAM0QILIAQtAABBzABHDbgBIARBAWohAUEKIRAMtgELAkAgBCACRw0AQZQBIRAM0AILAkACQCAELQAAQb9/ag4PALkBuQG5AbkBuQG5AbkBuQG5AbkBuQG5AbkBAbkBCyAEQQFqIQFB/gAhEAy3AgsgBEEBaiEBQf8AIRAMtgILAkAgBCACRw0AQZUBIRAMzwILAkACQCAELQAAQb9/ag4DALgBAbgBCyAEQQFqIQFB/QAhEAy2AgsgBEEBaiEEQYABIRAMtQILAkAgBCACRw0AQZYBIRAMzgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQafPgIAAai0AAEcNtgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZYBIRAMzgILIABBADYCACAQQQFqIQFBCyEQDLMBCwJAIAQgAkcNAEGXASEQDM0CCwJAAkACQAJAIAQtAABBU2oOIwC4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBuAG4AbgBAbgBuAG4AbgBuAECuAG4AbgBA7gBCyAEQQFqIQFB+wAhEAy2AgsgBEEBaiEBQfwAIRAMtQILIARBAWohBEGBASEQDLQCCyAEQQFqIQRBggEhEAyzAgsCQCAEIAJHDQBBmAEhEAzMAgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBqc+AgABqLQAARw20ASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmAEhEAzMAgsgAEEANgIAIBBBAWohAUEZIRAMsQELAkAgBCACRw0AQZkBIRAMywILIAIgBGsgACgCACIBaiEUIAQgAWtBBWohEAJAA0AgBC0AACABQa7PgIAAai0AAEcNswEgAUEFRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZkBIRAMywILIABBADYCACAQQQFqIQFBBiEQDLABCwJAIAQgAkcNAEGaASEQDMoCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUG0z4CAAGotAABHDbIBIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGaASEQDMoCCyAAQQA2AgAgEEEBaiEBQRwhEAyvAQsCQCAEIAJHDQBBmwEhEAzJAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBts+AgABqLQAARw2xASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBmwEhEAzJAgsgAEEANgIAIBBBAWohAUEnIRAMrgELAkAgBCACRw0AQZwBIRAMyAILAkACQCAELQAAQax/ag4CAAGxAQsgBEEBaiEEQYYBIRAMrwILIARBAWohBEGHASEQDK4CCwJAIAQgAkcNAEGdASEQDMcCCyACIARrIAAoAgAiAWohFCAEIAFrQQFqIRACQANAIAQtAAAgAUG4z4CAAGotAABHDa8BIAFBAUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGdASEQDMcCCyAAQQA2AgAgEEEBaiEBQSYhEAysAQsCQCAEIAJHDQBBngEhEAzGAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFBus+AgABqLQAARw2uASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBngEhEAzGAgsgAEEANgIAIBBBAWohAUEDIRAMqwELAkAgBCACRw0AQZ8BIRAMxQILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQe3PgIAAai0AAEcNrQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQZ8BIRAMxQILIABBADYCACAQQQFqIQFBDCEQDKoBCwJAIAQgAkcNAEGgASEQDMQCCyACIARrIAAoAgAiAWohFCAEIAFrQQNqIRACQANAIAQtAAAgAUG8z4CAAGotAABHDawBIAFBA0YNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGgASEQDMQCCyAAQQA2AgAgEEEBaiEBQQ0hEAypAQsCQCAEIAJHDQBBoQEhEAzDAgsCQAJAIAQtAABBun9qDgsArAGsAawBrAGsAawBrAGsAawBAawBCyAEQQFqIQRBiwEhEAyqAgsgBEEBaiEEQYwBIRAMqQILAkAgBCACRw0AQaIBIRAMwgILIAQtAABB0ABHDakBIARBAWohBAzpAQsCQCAEIAJHDQBBowEhEAzBAgsCQAJAIAQtAABBt39qDgcBqgGqAaoBqgGqAQCqAQsgBEEBaiEEQY4BIRAMqAILIARBAWohAUEiIRAMpgELAkAgBCACRw0AQaQBIRAMwAILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQcDPgIAAai0AAEcNqAEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQaQBIRAMwAILIABBADYCACAQQQFqIQFBHSEQDKUBCwJAIAQgAkcNAEGlASEQDL8CCwJAAkAgBC0AAEGuf2oOAwCoAQGoAQsgBEEBaiEEQZABIRAMpgILIARBAWohAUEEIRAMpAELAkAgBCACRw0AQaYBIRAMvgILAkACQAJAAkACQCAELQAAQb9/ag4VAKoBqgGqAaoBqgGqAaoBqgGqAaoBAaoBqgECqgGqAQOqAaoBBKoBCyAEQQFqIQRBiAEhEAyoAgsgBEEBaiEEQYkBIRAMpwILIARBAWohBEGKASEQDKYCCyAEQQFqIQRBjwEhEAylAgsgBEEBaiEEQZEBIRAMpAILAkAgBCACRw0AQacBIRAMvQILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQe3PgIAAai0AAEcNpQEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQacBIRAMvQILIABBADYCACAQQQFqIQFBESEQDKIBCwJAIAQgAkcNAEGoASEQDLwCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHCz4CAAGotAABHDaQBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGoASEQDLwCCyAAQQA2AgAgEEEBaiEBQSwhEAyhAQsCQCAEIAJHDQBBqQEhEAy7AgsgAiAEayAAKAIAIgFqIRQgBCABa0EEaiEQAkADQCAELQAAIAFBxc+AgABqLQAARw2jASABQQRGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBqQEhEAy7AgsgAEEANgIAIBBBAWohAUErIRAMoAELAkAgBCACRw0AQaoBIRAMugILIAIgBGsgACgCACIBaiEUIAQgAWtBAmohEAJAA0AgBC0AACABQcrPgIAAai0AAEcNogEgAUECRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQaoBIRAMugILIABBADYCACAQQQFqIQFBFCEQDJ8BCwJAIAQgAkcNAEGrASEQDLkCCwJAAkACQAJAIAQtAABBvn9qDg8AAQKkAaQBpAGkAaQBpAGkAaQBpAGkAaQBA6QBCyAEQQFqIQRBkwEhEAyiAgsgBEEBaiEEQZQBIRAMoQILIARBAWohBEGVASEQDKACCyAEQQFqIQRBlgEhEAyfAgsCQCAEIAJHDQBBrAEhEAy4AgsgBC0AAEHFAEcNnwEgBEEBaiEEDOABCwJAIAQgAkcNAEGtASEQDLcCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHNz4CAAGotAABHDZ8BIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEGtASEQDLcCCyAAQQA2AgAgEEEBaiEBQQ4hEAycAQsCQCAEIAJHDQBBrgEhEAy2AgsgBC0AAEHQAEcNnQEgBEEBaiEBQSUhEAybAQsCQCAEIAJHDQBBrwEhEAy1AgsgAiAEayAAKAIAIgFqIRQgBCABa0EIaiEQAkADQCAELQAAIAFB0M+AgABqLQAARw2dASABQQhGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBrwEhEAy1AgsgAEEANgIAIBBBAWohAUEqIRAMmgELAkAgBCACRw0AQbABIRAMtAILAkACQCAELQAAQat/ag4LAJ0BnQGdAZ0BnQGdAZ0BnQGdAQGdAQsgBEEBaiEEQZoBIRAMmwILIARBAWohBEGbASEQDJoCCwJAIAQgAkcNAEGxASEQDLMCCwJAAkAgBC0AAEG/f2oOFACcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAGcAZwBnAEBnAELIARBAWohBEGZASEQDJoCCyAEQQFqIQRBnAEhEAyZAgsCQCAEIAJHDQBBsgEhEAyyAgsgAiAEayAAKAIAIgFqIRQgBCABa0EDaiEQAkADQCAELQAAIAFB2c+AgABqLQAARw2aASABQQNGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBsgEhEAyyAgsgAEEANgIAIBBBAWohAUEhIRAMlwELAkAgBCACRw0AQbMBIRAMsQILIAIgBGsgACgCACIBaiEUIAQgAWtBBmohEAJAA0AgBC0AACABQd3PgIAAai0AAEcNmQEgAUEGRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbMBIRAMsQILIABBADYCACAQQQFqIQFBGiEQDJYBCwJAIAQgAkcNAEG0ASEQDLACCwJAAkACQCAELQAAQbt/ag4RAJoBmgGaAZoBmgGaAZoBmgGaAQGaAZoBmgGaAZoBApoBCyAEQQFqIQRBnQEhEAyYAgsgBEEBaiEEQZ4BIRAMlwILIARBAWohBEGfASEQDJYCCwJAIAQgAkcNAEG1ASEQDK8CCyACIARrIAAoAgAiAWohFCAEIAFrQQVqIRACQANAIAQtAAAgAUHkz4CAAGotAABHDZcBIAFBBUYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG1ASEQDK8CCyAAQQA2AgAgEEEBaiEBQSghEAyUAQsCQCAEIAJHDQBBtgEhEAyuAgsgAiAEayAAKAIAIgFqIRQgBCABa0ECaiEQAkADQCAELQAAIAFB6s+AgABqLQAARw2WASABQQJGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBtgEhEAyuAgsgAEEANgIAIBBBAWohAUEHIRAMkwELAkAgBCACRw0AQbcBIRAMrQILAkACQCAELQAAQbt/ag4OAJYBlgGWAZYBlgGWAZYBlgGWAZYBlgGWAQGWAQsgBEEBaiEEQaEBIRAMlAILIARBAWohBEGiASEQDJMCCwJAIAQgAkcNAEG4ASEQDKwCCyACIARrIAAoAgAiAWohFCAEIAFrQQJqIRACQANAIAQtAAAgAUHtz4CAAGotAABHDZQBIAFBAkYNASABQQFqIQEgBEEBaiIEIAJHDQALIAAgFDYCAEG4ASEQDKwCCyAAQQA2AgAgEEEBaiEBQRIhEAyRAQsCQCAEIAJHDQBBuQEhEAyrAgsgAiAEayAAKAIAIgFqIRQgBCABa0EBaiEQAkADQCAELQAAIAFB8M+AgABqLQAARw2TASABQQFGDQEgAUEBaiEBIARBAWoiBCACRw0ACyAAIBQ2AgBBuQEhEAyrAgsgAEEANgIAIBBBAWohAUEgIRAMkAELAkAgBCACRw0AQboBIRAMqgILIAIgBGsgACgCACIBaiEUIAQgAWtBAWohEAJAA0AgBC0AACABQfLPgIAAai0AAEcNkgEgAUEBRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQboBIRAMqgILIABBADYCACAQQQFqIQFBDyEQDI8BCwJAIAQgAkcNAEG7ASEQDKkCCwJAAkAgBC0AAEG3f2oOBwCSAZIBkgGSAZIBAZIBCyAEQQFqIQRBpQEhEAyQAgsgBEEBaiEEQaYBIRAMjwILAkAgBCACRw0AQbwBIRAMqAILIAIgBGsgACgCACIBaiEUIAQgAWtBB2ohEAJAA0AgBC0AACABQfTPgIAAai0AAEcNkAEgAUEHRg0BIAFBAWohASAEQQFqIgQgAkcNAAsgACAUNgIAQbwBIRAMqAILIABBADYCACAQQQFqIQFBGyEQDI0BCwJAIAQgAkcNAEG9ASEQDKcCCwJAAkACQCAELQAAQb5/ag4SAJEBkQGRAZEBkQGRAZEBkQGRAQGRAZEBkQGRAZEBkQECkQELIARBAWohBEGkASEQDI8CCyAEQQFqIQRBpwEhEAyOAgsgBEEBaiEEQagBIRAMjQILAkAgBCACRw0AQb4BIRAMpgILIAQtAABBzgBHDY0BIARBAWohBAzPAQsCQCAEIAJHDQBBvwEhEAylAgsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAELQAAQb9/ag4VAAECA5wBBAUGnAGcAZwBBwgJCgucAQwNDg+cAQsgBEEBaiEBQegAIRAMmgILIARBAWohAUHpACEQDJkCCyAEQQFqIQFB7gAhEAyYAgsgBEEBaiEBQfIAIRAMlwILIARBAWohAUHzACEQDJYCCyAEQQFqIQFB9gAhEAyVAgsgBEEBaiEBQfcAIRAMlAILIARBAWohAUH6ACEQDJMCCyAEQQFqIQRBgwEhEAySAgsgBEEBaiEEQYQBIRAMkQILIARBAWohBEGFASEQDJACCyAEQQFqIQRBkgEhEAyPAgsgBEEBaiEEQZgBIRAMjgILIARBAWohBEGgASEQDI0CCyAEQQFqIQRBowEhEAyMAgsgBEEBaiEEQaoBIRAMiwILAkAgBCACRg0AIABBkICAgAA2AgggACAENgIEQasBIRAMiwILQcABIRAMowILIAAgBSACEKqAgIAAIgENiwEgBSEBDFwLAkAgBiACRg0AIAZBAWohBQyNAQtBwgEhEAyhAgsDQAJAIBAtAABBdmoOBIwBAACPAQALIBBBAWoiECACRw0AC0HDASEQDKACCwJAIAcgAkYNACAAQZGAgIAANgIIIAAgBzYCBCAHIQFBASEQDIcCC0HEASEQDJ8CCwJAIAcgAkcNAEHFASEQDJ8CCwJAAkAgBy0AAEF2ag4EAc4BzgEAzgELIAdBAWohBgyNAQsgB0EBaiEFDIkBCwJAIAcgAkcNAEHGASEQDJ4CCwJAAkAgBy0AAEF2ag4XAY8BjwEBjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BAI8BCyAHQQFqIQcLQbABIRAMhAILAkAgCCACRw0AQcgBIRAMnQILIAgtAABBIEcNjQEgAEEAOwEyIAhBAWohAUGzASEQDIMCCyABIRcCQANAIBciByACRg0BIActAABBUGpB/wFxIhBBCk8NzAECQCAALwEyIhRBmTNLDQAgACAUQQpsIhQ7ATIgEEH//wNzIBRB/v8DcUkNACAHQQFqIRcgACAUIBBqIhA7ATIgEEH//wNxQegHSQ0BCwtBACEQIABBADYCHCAAQcGJgIAANgIQIABBDTYCDCAAIAdBAWo2AhQMnAILQccBIRAMmwILIAAgCCACEK6AgIAAIhBFDcoBIBBBFUcNjAEgAEHIATYCHCAAIAg2AhQgAEHJl4CAADYCECAAQRU2AgxBACEQDJoCCwJAIAkgAkcNAEHMASEQDJoCC0EAIRRBASEXQQEhFkEAIRACQAJAAkACQAJAAkACQAJAAkAgCS0AAEFQag4KlgGVAQABAgMEBQYIlwELQQIhEAwGC0EDIRAMBQtBBCEQDAQLQQUhEAwDC0EGIRAMAgtBByEQDAELQQghEAtBACEXQQAhFkEAIRQMjgELQQkhEEEBIRRBACEXQQAhFgyNAQsCQCAKIAJHDQBBzgEhEAyZAgsgCi0AAEEuRw2OASAKQQFqIQkMygELIAsgAkcNjgFB0AEhEAyXAgsCQCALIAJGDQAgAEGOgICAADYCCCAAIAs2AgRBtwEhEAz+AQtB0QEhEAyWAgsCQCAEIAJHDQBB0gEhEAyWAgsgAiAEayAAKAIAIhBqIRQgBCAQa0EEaiELA0AgBC0AACAQQfzPgIAAai0AAEcNjgEgEEEERg3pASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHSASEQDJUCCyAAIAwgAhCsgICAACIBDY0BIAwhAQy4AQsCQCAEIAJHDQBB1AEhEAyUAgsgAiAEayAAKAIAIhBqIRQgBCAQa0EBaiEMA0AgBC0AACAQQYHQgIAAai0AAEcNjwEgEEEBRg2OASAQQQFqIRAgBEEBaiIEIAJHDQALIAAgFDYCAEHUASEQDJMCCwJAIAQgAkcNAEHWASEQDJMCCyACIARrIAAoAgAiEGohFCAEIBBrQQJqIQsDQCAELQAAIBBBg9CAgABqLQAARw2OASAQQQJGDZABIBBBAWohECAEQQFqIgQgAkcNAAsgACAUNgIAQdYBIRAMkgILAkAgBCACRw0AQdcBIRAMkgILAkACQCAELQAAQbt/ag4QAI8BjwGPAY8BjwGPAY8BjwGPAY8BjwGPAY8BjwEBjwELIARBAWohBEG7ASEQDPkBCyAEQQFqIQRBvAEhEAz4AQsCQCAEIAJHDQBB2AEhEAyRAgsgBC0AAEHIAEcNjAEgBEEBaiEEDMQBCwJAIAQgAkYNACAAQZCAgIAANgIIIAAgBDYCBEG+ASEQDPcBC0HZASEQDI8CCwJAIAQgAkcNAEHaASEQDI8CCyAELQAAQcgARg3DASAAQQE6ACgMuQELIABBAjoALyAAIAQgAhCmgICAACIQDY0BQcIBIRAM9AELIAAtAChBf2oOArcBuQG4AQsDQAJAIAQtAABBdmoOBACOAY4BAI4BCyAEQQFqIgQgAkcNAAtB3QEhEAyLAgsgAEEAOgAvIAAtAC1BBHFFDYQCCyAAQQA6AC8gAEEBOgA0IAEhAQyMAQsgEEEVRg3aASAAQQA2AhwgACABNgIUIABBp46AgAA2AhAgAEESNgIMQQAhEAyIAgsCQCAAIBAgAhC0gICAACIEDQAgECEBDIECCwJAIARBFUcNACAAQQM2AhwgACAQNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAyIAgsgAEEANgIcIAAgEDYCFCAAQaeOgIAANgIQIABBEjYCDEEAIRAMhwILIBBBFUYN1gEgAEEANgIcIAAgATYCFCAAQdqNgIAANgIQIABBFDYCDEEAIRAMhgILIAAoAgQhFyAAQQA2AgQgECARp2oiFiEBIAAgFyAQIBYgFBsiEBC1gICAACIURQ2NASAAQQc2AhwgACAQNgIUIAAgFDYCDEEAIRAMhQILIAAgAC8BMEGAAXI7ATAgASEBC0EqIRAM6gELIBBBFUYN0QEgAEEANgIcIAAgATYCFCAAQYOMgIAANgIQIABBEzYCDEEAIRAMggILIBBBFUYNzwEgAEEANgIcIAAgATYCFCAAQZqPgIAANgIQIABBIjYCDEEAIRAMgQILIAAoAgQhECAAQQA2AgQCQCAAIBAgARC3gICAACIQDQAgAUEBaiEBDI0BCyAAQQw2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAMgAILIBBBFUYNzAEgAEEANgIcIAAgATYCFCAAQZqPgIAANgIQIABBIjYCDEEAIRAM/wELIAAoAgQhECAAQQA2AgQCQCAAIBAgARC3gICAACIQDQAgAUEBaiEBDIwBCyAAQQ02AhwgACAQNgIMIAAgAUEBajYCFEEAIRAM/gELIBBBFUYNyQEgAEEANgIcIAAgATYCFCAAQcaMgIAANgIQIABBIzYCDEEAIRAM/QELIAAoAgQhECAAQQA2AgQCQCAAIBAgARC5gICAACIQDQAgAUEBaiEBDIsBCyAAQQ42AhwgACAQNgIMIAAgAUEBajYCFEEAIRAM/AELIABBADYCHCAAIAE2AhQgAEHAlYCAADYCECAAQQI2AgxBACEQDPsBCyAQQRVGDcUBIABBADYCHCAAIAE2AhQgAEHGjICAADYCECAAQSM2AgxBACEQDPoBCyAAQRA2AhwgACABNgIUIAAgEDYCDEEAIRAM+QELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARC5gICAACIEDQAgAUEBaiEBDPEBCyAAQRE2AhwgACAENgIMIAAgAUEBajYCFEEAIRAM+AELIBBBFUYNwQEgAEEANgIcIAAgATYCFCAAQcaMgIAANgIQIABBIzYCDEEAIRAM9wELIAAoAgQhECAAQQA2AgQCQCAAIBAgARC5gICAACIQDQAgAUEBaiEBDIgBCyAAQRM2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAM9gELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARC5gICAACIEDQAgAUEBaiEBDO0BCyAAQRQ2AhwgACAENgIMIAAgAUEBajYCFEEAIRAM9QELIBBBFUYNvQEgAEEANgIcIAAgATYCFCAAQZqPgIAANgIQIABBIjYCDEEAIRAM9AELIAAoAgQhECAAQQA2AgQCQCAAIBAgARC3gICAACIQDQAgAUEBaiEBDIYBCyAAQRY2AhwgACAQNgIMIAAgAUEBajYCFEEAIRAM8wELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARC3gICAACIEDQAgAUEBaiEBDOkBCyAAQRc2AhwgACAENgIMIAAgAUEBajYCFEEAIRAM8gELIABBADYCHCAAIAE2AhQgAEHNk4CAADYCECAAQQw2AgxBACEQDPEBC0IBIRELIBBBAWohAQJAIAApAyAiEkL//////////w9WDQAgACASQgSGIBGENwMgIAEhAQyEAQsgAEEANgIcIAAgATYCFCAAQa2JgIAANgIQIABBDDYCDEEAIRAM7wELIABBADYCHCAAIBA2AhQgAEHNk4CAADYCECAAQQw2AgxBACEQDO4BCyAAKAIEIRcgAEEANgIEIBAgEadqIhYhASAAIBcgECAWIBQbIhAQtYCAgAAiFEUNcyAAQQU2AhwgACAQNgIUIAAgFDYCDEEAIRAM7QELIABBADYCHCAAIBA2AhQgAEGqnICAADYCECAAQQ82AgxBACEQDOwBCyAAIBAgAhC0gICAACIBDQEgECEBC0EOIRAM0QELAkAgAUEVRw0AIABBAjYCHCAAIBA2AhQgAEGwmICAADYCECAAQRU2AgxBACEQDOoBCyAAQQA2AhwgACAQNgIUIABBp46AgAA2AhAgAEESNgIMQQAhEAzpAQsgAUEBaiEQAkAgAC8BMCIBQYABcUUNAAJAIAAgECACELuAgIAAIgENACAQIQEMcAsgAUEVRw26ASAAQQU2AhwgACAQNgIUIABB+ZeAgAA2AhAgAEEVNgIMQQAhEAzpAQsCQCABQaAEcUGgBEcNACAALQAtQQJxDQAgAEEANgIcIAAgEDYCFCAAQZaTgIAANgIQIABBBDYCDEEAIRAM6QELIAAgECACEL2AgIAAGiAQIQECQAJAAkACQAJAIAAgECACELOAgIAADhYCAQAEBAQEBAQEBAQEBAQEBAQEBAQDBAsgAEEBOgAuCyAAIAAvATBBwAByOwEwIBAhAQtBJiEQDNEBCyAAQSM2AhwgACAQNgIUIABBpZaAgAA2AhAgAEEVNgIMQQAhEAzpAQsgAEEANgIcIAAgEDYCFCAAQdWLgIAANgIQIABBETYCDEEAIRAM6AELIAAtAC1BAXFFDQFBwwEhEAzOAQsCQCANIAJGDQADQAJAIA0tAABBIEYNACANIQEMxAELIA1BAWoiDSACRw0AC0ElIRAM5wELQSUhEAzmAQsgACgCBCEEIABBADYCBCAAIAQgDRCvgICAACIERQ2tASAAQSY2AhwgACAENgIMIAAgDUEBajYCFEEAIRAM5QELIBBBFUYNqwEgAEEANgIcIAAgATYCFCAAQf2NgIAANgIQIABBHTYCDEEAIRAM5AELIABBJzYCHCAAIAE2AhQgACAQNgIMQQAhEAzjAQsgECEBQQEhFAJAAkACQAJAAkACQAJAIAAtACxBfmoOBwYFBQMBAgAFCyAAIAAvATBBCHI7ATAMAwtBAiEUDAELQQQhFAsgAEEBOgAsIAAgAC8BMCAUcjsBMAsgECEBC0ErIRAMygELIABBADYCHCAAIBA2AhQgAEGrkoCAADYCECAAQQs2AgxBACEQDOIBCyAAQQA2AhwgACABNgIUIABB4Y+AgAA2AhAgAEEKNgIMQQAhEAzhAQsgAEEAOgAsIBAhAQy9AQsgECEBQQEhFAJAAkACQAJAAkAgAC0ALEF7ag4EAwECAAULIAAgAC8BMEEIcjsBMAwDC0ECIRQMAQtBBCEUCyAAQQE6ACwgACAALwEwIBRyOwEwCyAQIQELQSkhEAzFAQsgAEEANgIcIAAgATYCFCAAQfCUgIAANgIQIABBAzYCDEEAIRAM3QELAkAgDi0AAEENRw0AIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDkEBaiEBDHULIABBLDYCHCAAIAE2AgwgACAOQQFqNgIUQQAhEAzdAQsgAC0ALUEBcUUNAUHEASEQDMMBCwJAIA4gAkcNAEEtIRAM3AELAkACQANAAkAgDi0AAEF2ag4EAgAAAwALIA5BAWoiDiACRw0AC0EtIRAM3QELIAAoAgQhASAAQQA2AgQCQCAAIAEgDhCxgICAACIBDQAgDiEBDHQLIABBLDYCHCAAIA42AhQgACABNgIMQQAhEAzcAQsgACgCBCEBIABBADYCBAJAIAAgASAOELGAgIAAIgENACAOQQFqIQEMcwsgAEEsNgIcIAAgATYCDCAAIA5BAWo2AhRBACEQDNsBCyAAKAIEIQQgAEEANgIEIAAgBCAOELGAgIAAIgQNoAEgDiEBDM4BCyAQQSxHDQEgAUEBaiEQQQEhAQJAAkACQAJAAkAgAC0ALEF7ag4EAwECBAALIBAhAQwEC0ECIQEMAQtBBCEBCyAAQQE6ACwgACAALwEwIAFyOwEwIBAhAQwBCyAAIAAvATBBCHI7ATAgECEBC0E5IRAMvwELIABBADoALCABIQELQTQhEAy9AQsgACAALwEwQSByOwEwIAEhAQwCCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQsYCAgAAiBA0AIAEhAQzHAQsgAEE3NgIcIAAgATYCFCAAIAQ2AgxBACEQDNQBCyAAQQg6ACwgASEBC0EwIRAMuQELAkAgAC0AKEEBRg0AIAEhAQwECyAALQAtQQhxRQ2TASABIQEMAwsgAC0AMEEgcQ2UAUHFASEQDLcBCwJAIA8gAkYNAAJAA0ACQCAPLQAAQVBqIgFB/wFxQQpJDQAgDyEBQTUhEAy6AQsgACkDICIRQpmz5syZs+bMGVYNASAAIBFCCn4iETcDICARIAGtQv8BgyISQn+FVg0BIAAgESASfDcDICAPQQFqIg8gAkcNAAtBOSEQDNEBCyAAKAIEIQIgAEEANgIEIAAgAiAPQQFqIgQQsYCAgAAiAg2VASAEIQEMwwELQTkhEAzPAQsCQCAALwEwIgFBCHFFDQAgAC0AKEEBRw0AIAAtAC1BCHFFDZABCyAAIAFB9/sDcUGABHI7ATAgDyEBC0E3IRAMtAELIAAgAC8BMEEQcjsBMAyrAQsgEEEVRg2LASAAQQA2AhwgACABNgIUIABB8I6AgAA2AhAgAEEcNgIMQQAhEAzLAQsgAEHDADYCHCAAIAE2AgwgACANQQFqNgIUQQAhEAzKAQsCQCABLQAAQTpHDQAgACgCBCEQIABBADYCBAJAIAAgECABEK+AgIAAIhANACABQQFqIQEMYwsgAEHDADYCHCAAIBA2AgwgACABQQFqNgIUQQAhEAzKAQsgAEEANgIcIAAgATYCFCAAQbGRgIAANgIQIABBCjYCDEEAIRAMyQELIABBADYCHCAAIAE2AhQgAEGgmYCAADYCECAAQR42AgxBACEQDMgBCyAAQQA2AgALIABBgBI7ASogACAXQQFqIgEgAhCogICAACIQDQEgASEBC0HHACEQDKwBCyAQQRVHDYMBIABB0QA2AhwgACABNgIUIABB45eAgAA2AhAgAEEVNgIMQQAhEAzEAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMXgsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAzDAQsgAEEANgIcIAAgFDYCFCAAQcGogIAANgIQIABBBzYCDCAAQQA2AgBBACEQDMIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxdCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDMEBC0EAIRAgAEEANgIcIAAgATYCFCAAQYCRgIAANgIQIABBCTYCDAzAAQsgEEEVRg19IABBADYCHCAAIAE2AhQgAEGUjYCAADYCECAAQSE2AgxBACEQDL8BC0EBIRZBACEXQQAhFEEBIRALIAAgEDoAKyABQQFqIQECQAJAIAAtAC1BEHENAAJAAkACQCAALQAqDgMBAAIECyAWRQ0DDAILIBQNAQwCCyAXRQ0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQrYCAgAAiEA0AIAEhAQxcCyAAQdgANgIcIAAgATYCFCAAIBA2AgxBACEQDL4BCyAAKAIEIQQgAEEANgIEAkAgACAEIAEQrYCAgAAiBA0AIAEhAQytAQsgAEHZADYCHCAAIAE2AhQgACAENgIMQQAhEAy9AQsgACgCBCEEIABBADYCBAJAIAAgBCABEK2AgIAAIgQNACABIQEMqwELIABB2gA2AhwgACABNgIUIAAgBDYCDEEAIRAMvAELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKkBCyAAQdwANgIcIAAgATYCFCAAIAQ2AgxBACEQDLsBCwJAIAEtAABBUGoiEEH/AXFBCk8NACAAIBA6ACogAUEBaiEBQc8AIRAMogELIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCtgICAACIEDQAgASEBDKcBCyAAQd4ANgIcIAAgATYCFCAAIAQ2AgxBACEQDLoBCyAAQQA2AgAgF0EBaiEBAkAgAC0AKUEjTw0AIAEhAQxZCyAAQQA2AhwgACABNgIUIABB04mAgAA2AhAgAEEINgIMQQAhEAy5AQsgAEEANgIAC0EAIRAgAEEANgIcIAAgATYCFCAAQZCzgIAANgIQIABBCDYCDAy3AQsgAEEANgIAIBdBAWohAQJAIAAtAClBIUcNACABIQEMVgsgAEEANgIcIAAgATYCFCAAQZuKgIAANgIQIABBCDYCDEEAIRAMtgELIABBADYCACAXQQFqIQECQCAALQApIhBBXWpBC08NACABIQEMVQsCQCAQQQZLDQBBASAQdEHKAHFFDQAgASEBDFULQQAhECAAQQA2AhwgACABNgIUIABB94mAgAA2AhAgAEEINgIMDLUBCyAQQRVGDXEgAEEANgIcIAAgATYCFCAAQbmNgIAANgIQIABBGjYCDEEAIRAMtAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDFQLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMswELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDE0LIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMsgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDE0LIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMsQELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDFELIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMsAELIABBADYCHCAAIAE2AhQgAEHGioCAADYCECAAQQc2AgxBACEQDK8BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxJCyAAQdIANgIcIAAgATYCFCAAIBA2AgxBACEQDK4BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxJCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDK0BCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDKwBCyAAQQA2AhwgACABNgIUIABB3IiAgAA2AhAgAEEHNgIMQQAhEAyrAQsgEEE/Rw0BIAFBAWohAQtBBSEQDJABC0EAIRAgAEEANgIcIAAgATYCFCAAQf2SgIAANgIQIABBBzYCDAyoAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMQgsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAynAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMQgsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAymAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMRgsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAylAQsgACgCBCEBIABBADYCBAJAIAAgASAUEKeAgIAAIgENACAUIQEMPwsgAEHSADYCHCAAIBQ2AhQgACABNgIMQQAhEAykAQsgACgCBCEBIABBADYCBAJAIAAgASAUEKeAgIAAIgENACAUIQEMPwsgAEHTADYCHCAAIBQ2AhQgACABNgIMQQAhEAyjAQsgACgCBCEBIABBADYCBAJAIAAgASAUEKeAgIAAIgENACAUIQEMQwsgAEHlADYCHCAAIBQ2AhQgACABNgIMQQAhEAyiAQsgAEEANgIcIAAgFDYCFCAAQcOPgIAANgIQIABBBzYCDEEAIRAMoQELIABBADYCHCAAIAE2AhQgAEHDj4CAADYCECAAQQc2AgxBACEQDKABC0EAIRAgAEEANgIcIAAgFDYCFCAAQYycgIAANgIQIABBBzYCDAyfAQsgAEEANgIcIAAgFDYCFCAAQYycgIAANgIQIABBBzYCDEEAIRAMngELIABBADYCHCAAIBQ2AhQgAEH+kYCAADYCECAAQQc2AgxBACEQDJ0BCyAAQQA2AhwgACABNgIUIABBjpuAgAA2AhAgAEEGNgIMQQAhEAycAQsgEEEVRg1XIABBADYCHCAAIAE2AhQgAEHMjoCAADYCECAAQSA2AgxBACEQDJsBCyAAQQA2AgAgEEEBaiEBQSQhEAsgACAQOgApIAAoAgQhECAAQQA2AgQgACAQIAEQq4CAgAAiEA1UIAEhAQw+CyAAQQA2AgALQQAhECAAQQA2AhwgACAENgIUIABB8ZuAgAA2AhAgAEEGNgIMDJcBCyABQRVGDVAgAEEANgIcIAAgBTYCFCAAQfCMgIAANgIQIABBGzYCDEEAIRAMlgELIAAoAgQhBSAAQQA2AgQgACAFIBAQqYCAgAAiBQ0BIBBBAWohBQtBrQEhEAx7CyAAQcEBNgIcIAAgBTYCDCAAIBBBAWo2AhRBACEQDJMBCyAAKAIEIQYgAEEANgIEIAAgBiAQEKmAgIAAIgYNASAQQQFqIQYLQa4BIRAMeAsgAEHCATYCHCAAIAY2AgwgACAQQQFqNgIUQQAhEAyQAQsgAEEANgIcIAAgBzYCFCAAQZeLgIAANgIQIABBDTYCDEEAIRAMjwELIABBADYCHCAAIAg2AhQgAEHjkICAADYCECAAQQk2AgxBACEQDI4BCyAAQQA2AhwgACAINgIUIABBlI2AgAA2AhAgAEEhNgIMQQAhEAyNAQtBASEWQQAhF0EAIRRBASEQCyAAIBA6ACsgCUEBaiEIAkACQCAALQAtQRBxDQACQAJAAkAgAC0AKg4DAQACBAsgFkUNAwwCCyAUDQEMAgsgF0UNAQsgACgCBCEQIABBADYCBCAAIBAgCBCtgICAACIQRQ09IABByQE2AhwgACAINgIUIAAgEDYCDEEAIRAMjAELIAAoAgQhBCAAQQA2AgQgACAEIAgQrYCAgAAiBEUNdiAAQcoBNgIcIAAgCDYCFCAAIAQ2AgxBACEQDIsBCyAAKAIEIQQgAEEANgIEIAAgBCAJEK2AgIAAIgRFDXQgAEHLATYCHCAAIAk2AhQgACAENgIMQQAhEAyKAQsgACgCBCEEIABBADYCBCAAIAQgChCtgICAACIERQ1yIABBzQE2AhwgACAKNgIUIAAgBDYCDEEAIRAMiQELAkAgCy0AAEFQaiIQQf8BcUEKTw0AIAAgEDoAKiALQQFqIQpBtgEhEAxwCyAAKAIEIQQgAEEANgIEIAAgBCALEK2AgIAAIgRFDXAgAEHPATYCHCAAIAs2AhQgACAENgIMQQAhEAyIAQsgAEEANgIcIAAgBDYCFCAAQZCzgIAANgIQIABBCDYCDCAAQQA2AgBBACEQDIcBCyABQRVGDT8gAEEANgIcIAAgDDYCFCAAQcyOgIAANgIQIABBIDYCDEEAIRAMhgELIABBgQQ7ASggACgCBCEQIABCADcDACAAIBAgDEEBaiIMEKuAgIAAIhBFDTggAEHTATYCHCAAIAw2AhQgACAQNgIMQQAhEAyFAQsgAEEANgIAC0EAIRAgAEEANgIcIAAgBDYCFCAAQdibgIAANgIQIABBCDYCDAyDAQsgACgCBCEQIABCADcDACAAIBAgC0EBaiILEKuAgIAAIhANAUHGASEQDGkLIABBAjoAKAxVCyAAQdUBNgIcIAAgCzYCFCAAIBA2AgxBACEQDIABCyAQQRVGDTcgAEEANgIcIAAgBDYCFCAAQaSMgIAANgIQIABBEDYCDEEAIRAMfwsgAC0ANEEBRw00IAAgBCACELyAgIAAIhBFDTQgEEEVRw01IABB3AE2AhwgACAENgIUIABB1ZaAgAA2AhAgAEEVNgIMQQAhEAx+C0EAIRAgAEEANgIcIABBr4uAgAA2AhAgAEECNgIMIAAgFEEBajYCFAx9C0EAIRAMYwtBAiEQDGILQQ0hEAxhC0EPIRAMYAtBJSEQDF8LQRMhEAxeC0EVIRAMXQtBFiEQDFwLQRchEAxbC0EYIRAMWgtBGSEQDFkLQRohEAxYC0EbIRAMVwtBHCEQDFYLQR0hEAxVC0EfIRAMVAtBISEQDFMLQSMhEAxSC0HGACEQDFELQS4hEAxQC0EvIRAMTwtBOyEQDE4LQT0hEAxNC0HIACEQDEwLQckAIRAMSwtBywAhEAxKC0HMACEQDEkLQc4AIRAMSAtB0QAhEAxHC0HVACEQDEYLQdgAIRAMRQtB2QAhEAxEC0HbACEQDEMLQeQAIRAMQgtB5QAhEAxBC0HxACEQDEALQfQAIRAMPwtBjQEhEAw+C0GXASEQDD0LQakBIRAMPAtBrAEhEAw7C0HAASEQDDoLQbkBIRAMOQtBrwEhEAw4C0GxASEQDDcLQbIBIRAMNgtBtAEhEAw1C0G1ASEQDDQLQboBIRAMMwtBvQEhEAwyC0G/ASEQDDELQcEBIRAMMAsgAEEANgIcIAAgBDYCFCAAQemLgIAANgIQIABBHzYCDEEAIRAMSAsgAEHbATYCHCAAIAQ2AhQgAEH6loCAADYCECAAQRU2AgxBACEQDEcLIABB+AA2AhwgACAMNgIUIABBypiAgAA2AhAgAEEVNgIMQQAhEAxGCyAAQdEANgIcIAAgBTYCFCAAQbCXgIAANgIQIABBFTYCDEEAIRAMRQsgAEH5ADYCHCAAIAE2AhQgACAQNgIMQQAhEAxECyAAQfgANgIcIAAgATYCFCAAQcqYgIAANgIQIABBFTYCDEEAIRAMQwsgAEHkADYCHCAAIAE2AhQgAEHjl4CAADYCECAAQRU2AgxBACEQDEILIABB1wA2AhwgACABNgIUIABByZeAgAA2AhAgAEEVNgIMQQAhEAxBCyAAQQA2AhwgACABNgIUIABBuY2AgAA2AhAgAEEaNgIMQQAhEAxACyAAQcIANgIcIAAgATYCFCAAQeOYgIAANgIQIABBFTYCDEEAIRAMPwsgAEEANgIEIAAgDyAPELGAgIAAIgRFDQEgAEE6NgIcIAAgBDYCDCAAIA9BAWo2AhRBACEQDD4LIAAoAgQhBCAAQQA2AgQCQCAAIAQgARCxgICAACIERQ0AIABBOzYCHCAAIAQ2AgwgACABQQFqNgIUQQAhEAw+CyABQQFqIQEMLQsgD0EBaiEBDC0LIABBADYCHCAAIA82AhQgAEHkkoCAADYCECAAQQQ2AgxBACEQDDsLIABBNjYCHCAAIAQ2AhQgACACNgIMQQAhEAw6CyAAQS42AhwgACAONgIUIAAgBDYCDEEAIRAMOQsgAEHQADYCHCAAIAE2AhQgAEGRmICAADYCECAAQRU2AgxBACEQDDgLIA1BAWohAQwsCyAAQRU2AhwgACABNgIUIABBgpmAgAA2AhAgAEEVNgIMQQAhEAw2CyAAQRs2AhwgACABNgIUIABBkZeAgAA2AhAgAEEVNgIMQQAhEAw1CyAAQQ82AhwgACABNgIUIABBkZeAgAA2AhAgAEEVNgIMQQAhEAw0CyAAQQs2AhwgACABNgIUIABBkZeAgAA2AhAgAEEVNgIMQQAhEAwzCyAAQRo2AhwgACABNgIUIABBgpmAgAA2AhAgAEEVNgIMQQAhEAwyCyAAQQs2AhwgACABNgIUIABBgpmAgAA2AhAgAEEVNgIMQQAhEAwxCyAAQQo2AhwgACABNgIUIABB5JaAgAA2AhAgAEEVNgIMQQAhEAwwCyAAQR42AhwgACABNgIUIABB+ZeAgAA2AhAgAEEVNgIMQQAhEAwvCyAAQQA2AhwgACAQNgIUIABB2o2AgAA2AhAgAEEUNgIMQQAhEAwuCyAAQQQ2AhwgACABNgIUIABBsJiAgAA2AhAgAEEVNgIMQQAhEAwtCyAAQQA2AgAgC0EBaiELC0G4ASEQDBILIABBADYCACAQQQFqIQFB9QAhEAwRCyABIQECQCAALQApQQVHDQBB4wAhEAwRC0HiACEQDBALQQAhECAAQQA2AhwgAEHkkYCAADYCECAAQQc2AgwgACAUQQFqNgIUDCgLIABBADYCACAXQQFqIQFBwAAhEAwOC0EBIQELIAAgAToALCAAQQA2AgAgF0EBaiEBC0EoIRAMCwsgASEBC0E4IRAMCQsCQCABIg8gAkYNAANAAkAgDy0AAEGAvoCAAGotAAAiAUEBRg0AIAFBAkcNAyAPQQFqIQEMBAsgD0EBaiIPIAJHDQALQT4hEAwiC0E+IRAMIQsgAEEAOgAsIA8hAQwBC0ELIRAMBgtBOiEQDAULIAFBAWohAUEtIRAMBAsgACABOgAsIABBADYCACAWQQFqIQFBDCEQDAMLIABBADYCACAXQQFqIQFBCiEQDAILIABBADYCAAsgAEEAOgAsIA0hAUEJIRAMAAsLQQAhECAAQQA2AhwgACALNgIUIABBzZCAgAA2AhAgAEEJNgIMDBcLQQAhECAAQQA2AhwgACAKNgIUIABB6YqAgAA2AhAgAEEJNgIMDBYLQQAhECAAQQA2AhwgACAJNgIUIABBt5CAgAA2AhAgAEEJNgIMDBULQQAhECAAQQA2AhwgACAINgIUIABBnJGAgAA2AhAgAEEJNgIMDBQLQQAhECAAQQA2AhwgACABNgIUIABBzZCAgAA2AhAgAEEJNgIMDBMLQQAhECAAQQA2AhwgACABNgIUIABB6YqAgAA2AhAgAEEJNgIMDBILQQAhECAAQQA2AhwgACABNgIUIABBt5CAgAA2AhAgAEEJNgIMDBELQQAhECAAQQA2AhwgACABNgIUIABBnJGAgAA2AhAgAEEJNgIMDBALQQAhECAAQQA2AhwgACABNgIUIABBl5WAgAA2AhAgAEEPNgIMDA8LQQAhECAAQQA2AhwgACABNgIUIABBl5WAgAA2AhAgAEEPNgIMDA4LQQAhECAAQQA2AhwgACABNgIUIABBwJKAgAA2AhAgAEELNgIMDA0LQQAhECAAQQA2AhwgACABNgIUIABBlYmAgAA2AhAgAEELNgIMDAwLQQAhECAAQQA2AhwgACABNgIUIABB4Y+AgAA2AhAgAEEKNgIMDAsLQQAhECAAQQA2AhwgACABNgIUIABB+4+AgAA2AhAgAEEKNgIMDAoLQQAhECAAQQA2AhwgACABNgIUIABB8ZmAgAA2AhAgAEECNgIMDAkLQQAhECAAQQA2AhwgACABNgIUIABBxJSAgAA2AhAgAEECNgIMDAgLQQAhECAAQQA2AhwgACABNgIUIABB8pWAgAA2AhAgAEECNgIMDAcLIABBAjYCHCAAIAE2AhQgAEGcmoCAADYCECAAQRY2AgxBACEQDAYLQQEhEAwFC0HUACEQIAEiBCACRg0EIANBCGogACAEIAJB2MKAgABBChDFgICAACADKAIMIQQgAygCCA4DAQQCAAsQyoCAgAAACyAAQQA2AhwgAEG1moCAADYCECAAQRc2AgwgACAEQQFqNgIUQQAhEAwCCyAAQQA2AhwgACAENgIUIABBypqAgAA2AhAgAEEJNgIMQQAhEAwBCwJAIAEiBCACRw0AQSIhEAwBCyAAQYmAgIAANgIIIAAgBDYCBEEhIRALIANBEGokgICAgAAgEAuvAQECfyABKAIAIQYCQAJAIAIgA0YNACAEIAZqIQQgBiADaiACayEHIAIgBkF/cyAFaiIGaiEFA0ACQCACLQAAIAQtAABGDQBBAiEEDAMLAkAgBg0AQQAhBCAFIQIMAwsgBkF/aiEGIARBAWohBCACQQFqIgIgA0cNAAsgByEGIAMhAgsgAEEBNgIAIAEgBjYCACAAIAI2AgQPCyABQQA2AgAgACAENgIAIAAgAjYCBAsKACAAEMeAgIAAC/I2AQt/I4CAgIAAQRBrIgEkgICAgAACQEEAKAKg0ICAAA0AQQAQy4CAgABBgNSEgABrIgJB2QBJDQBBACEDAkBBACgC4NOAgAAiBA0AQQBCfzcC7NOAgABBAEKAgISAgIDAADcC5NOAgABBACABQQhqQXBxQdiq1aoFcyIENgLg04CAAEEAQQA2AvTTgIAAQQBBADYCxNOAgAALQQAgAjYCzNOAgABBAEGA1ISAADYCyNOAgABBAEGA1ISAADYCmNCAgABBACAENgKs0ICAAEEAQX82AqjQgIAAA0AgA0HE0ICAAGogA0G40ICAAGoiBDYCACAEIANBsNCAgABqIgU2AgAgA0G80ICAAGogBTYCACADQczQgIAAaiADQcDQgIAAaiIFNgIAIAUgBDYCACADQdTQgIAAaiADQcjQgIAAaiIENgIAIAQgBTYCACADQdDQgIAAaiAENgIAIANBIGoiA0GAAkcNAAtBgNSEgABBeEGA1ISAAGtBD3FBAEGA1ISAAEEIakEPcRsiA2oiBEEEaiACQUhqIgUgA2siA0EBcjYCAEEAQQAoAvDTgIAANgKk0ICAAEEAIAM2ApTQgIAAQQAgBDYCoNCAgABBgNSEgAAgBWpBODYCBAsCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAEHsAUsNAAJAQQAoAojQgIAAIgZBECAAQRNqQXBxIABBC0kbIgJBA3YiBHYiA0EDcUUNAAJAAkAgA0EBcSAEckEBcyIFQQN0IgRBsNCAgABqIgMgBEG40ICAAGooAgAiBCgCCCICRw0AQQAgBkF+IAV3cTYCiNCAgAAMAQsgAyACNgIIIAIgAzYCDAsgBEEIaiEDIAQgBUEDdCIFQQNyNgIEIAQgBWoiBCAEKAIEQQFyNgIEDAwLIAJBACgCkNCAgAAiB00NAQJAIANFDQACQAJAIAMgBHRBAiAEdCIDQQAgA2tycSIDQQAgA2txQX9qIgMgA0EMdkEQcSIDdiIEQQV2QQhxIgUgA3IgBCAFdiIDQQJ2QQRxIgRyIAMgBHYiA0EBdkECcSIEciADIAR2IgNBAXZBAXEiBHIgAyAEdmoiBEEDdCIDQbDQgIAAaiIFIANBuNCAgABqKAIAIgMoAggiAEcNAEEAIAZBfiAEd3EiBjYCiNCAgAAMAQsgBSAANgIIIAAgBTYCDAsgAyACQQNyNgIEIAMgBEEDdCIEaiAEIAJrIgU2AgAgAyACaiIAIAVBAXI2AgQCQCAHRQ0AIAdBeHFBsNCAgABqIQJBACgCnNCAgAAhBAJAAkAgBkEBIAdBA3Z0IghxDQBBACAGIAhyNgKI0ICAACACIQgMAQsgAigCCCEICyAIIAQ2AgwgAiAENgIIIAQgAjYCDCAEIAg2AggLIANBCGohA0EAIAA2ApzQgIAAQQAgBTYCkNCAgAAMDAtBACgCjNCAgAAiCUUNASAJQQAgCWtxQX9qIgMgA0EMdkEQcSIDdiIEQQV2QQhxIgUgA3IgBCAFdiIDQQJ2QQRxIgRyIAMgBHYiA0EBdkECcSIEciADIAR2IgNBAXZBAXEiBHIgAyAEdmpBAnRBuNKAgABqKAIAIgAoAgRBeHEgAmshBCAAIQUCQANAAkAgBSgCECIDDQAgBUEUaigCACIDRQ0CCyADKAIEQXhxIAJrIgUgBCAFIARJIgUbIQQgAyAAIAUbIQAgAyEFDAALCyAAKAIYIQoCQCAAKAIMIgggAEYNACAAKAIIIgNBACgCmNCAgABJGiAIIAM2AgggAyAINgIMDAsLAkAgAEEUaiIFKAIAIgMNACAAKAIQIgNFDQMgAEEQaiEFCwNAIAUhCyADIghBFGoiBSgCACIDDQAgCEEQaiEFIAgoAhAiAw0ACyALQQA2AgAMCgtBfyECIABBv39LDQAgAEETaiIDQXBxIQJBACgCjNCAgAAiB0UNAEEAIQsCQCACQYACSQ0AQR8hCyACQf///wdLDQAgA0EIdiIDIANBgP4/akEQdkEIcSIDdCIEIARBgOAfakEQdkEEcSIEdCIFIAVBgIAPakEQdkECcSIFdEEPdiADIARyIAVyayIDQQF0IAIgA0EVanZBAXFyQRxqIQsLQQAgAmshBAJAAkACQAJAIAtBAnRBuNKAgABqKAIAIgUNAEEAIQNBACEIDAELQQAhAyACQQBBGSALQQF2ayALQR9GG3QhAEEAIQgDQAJAIAUoAgRBeHEgAmsiBiAETw0AIAYhBCAFIQggBg0AQQAhBCAFIQggBSEDDAMLIAMgBUEUaigCACIGIAYgBSAAQR12QQRxakEQaigCACIFRhsgAyAGGyEDIABBAXQhACAFDQALCwJAIAMgCHINAEEAIQhBAiALdCIDQQAgA2tyIAdxIgNFDQMgA0EAIANrcUF/aiIDIANBDHZBEHEiA3YiBUEFdkEIcSIAIANyIAUgAHYiA0ECdkEEcSIFciADIAV2IgNBAXZBAnEiBXIgAyAFdiIDQQF2QQFxIgVyIAMgBXZqQQJ0QbjSgIAAaigCACEDCyADRQ0BCwNAIAMoAgRBeHEgAmsiBiAESSEAAkAgAygCECIFDQAgA0EUaigCACEFCyAGIAQgABshBCADIAggABshCCAFIQMgBQ0ACwsgCEUNACAEQQAoApDQgIAAIAJrTw0AIAgoAhghCwJAIAgoAgwiACAIRg0AIAgoAggiA0EAKAKY0ICAAEkaIAAgAzYCCCADIAA2AgwMCQsCQCAIQRRqIgUoAgAiAw0AIAgoAhAiA0UNAyAIQRBqIQULA0AgBSEGIAMiAEEUaiIFKAIAIgMNACAAQRBqIQUgACgCECIDDQALIAZBADYCAAwICwJAQQAoApDQgIAAIgMgAkkNAEEAKAKc0ICAACEEAkACQCADIAJrIgVBEEkNACAEIAJqIgAgBUEBcjYCBEEAIAU2ApDQgIAAQQAgADYCnNCAgAAgBCADaiAFNgIAIAQgAkEDcjYCBAwBCyAEIANBA3I2AgQgBCADaiIDIAMoAgRBAXI2AgRBAEEANgKc0ICAAEEAQQA2ApDQgIAACyAEQQhqIQMMCgsCQEEAKAKU0ICAACIAIAJNDQBBACgCoNCAgAAiAyACaiIEIAAgAmsiBUEBcjYCBEEAIAU2ApTQgIAAQQAgBDYCoNCAgAAgAyACQQNyNgIEIANBCGohAwwKCwJAAkBBACgC4NOAgABFDQBBACgC6NOAgAAhBAwBC0EAQn83AuzTgIAAQQBCgICEgICAwAA3AuTTgIAAQQAgAUEMakFwcUHYqtWqBXM2AuDTgIAAQQBBADYC9NOAgABBAEEANgLE04CAAEGAgAQhBAtBACEDAkAgBCACQccAaiIHaiIGQQAgBGsiC3EiCCACSw0AQQBBMDYC+NOAgAAMCgsCQEEAKALA04CAACIDRQ0AAkBBACgCuNOAgAAiBCAIaiIFIARNDQAgBSADTQ0BC0EAIQNBAEEwNgL404CAAAwKC0EALQDE04CAAEEEcQ0EAkACQAJAQQAoAqDQgIAAIgRFDQBByNOAgAAhAwNAAkAgAygCACIFIARLDQAgBSADKAIEaiAESw0DCyADKAIIIgMNAAsLQQAQy4CAgAAiAEF/Rg0FIAghBgJAQQAoAuTTgIAAIgNBf2oiBCAAcUUNACAIIABrIAQgAGpBACADa3FqIQYLIAYgAk0NBSAGQf7///8HSw0FAkBBACgCwNOAgAAiA0UNAEEAKAK404CAACIEIAZqIgUgBE0NBiAFIANLDQYLIAYQy4CAgAAiAyAARw0BDAcLIAYgAGsgC3EiBkH+////B0sNBCAGEMuAgIAAIgAgAygCACADKAIEakYNAyAAIQMLAkAgA0F/Rg0AIAJByABqIAZNDQACQCAHIAZrQQAoAujTgIAAIgRqQQAgBGtxIgRB/v///wdNDQAgAyEADAcLAkAgBBDLgICAAEF/Rg0AIAQgBmohBiADIQAMBwtBACAGaxDLgICAABoMBAsgAyEAIANBf0cNBQwDC0EAIQgMBwtBACEADAULIABBf0cNAgtBAEEAKALE04CAAEEEcjYCxNOAgAALIAhB/v///wdLDQEgCBDLgICAACEAQQAQy4CAgAAhAyAAQX9GDQEgA0F/Rg0BIAAgA08NASADIABrIgYgAkE4ak0NAQtBAEEAKAK404CAACAGaiIDNgK404CAAAJAIANBACgCvNOAgABNDQBBACADNgK804CAAAsCQAJAAkACQEEAKAKg0ICAACIERQ0AQcjTgIAAIQMDQCAAIAMoAgAiBSADKAIEIghqRg0CIAMoAggiAw0ADAMLCwJAAkBBACgCmNCAgAAiA0UNACAAIANPDQELQQAgADYCmNCAgAALQQAhA0EAIAY2AszTgIAAQQAgADYCyNOAgABBAEF/NgKo0ICAAEEAQQAoAuDTgIAANgKs0ICAAEEAQQA2AtTTgIAAA0AgA0HE0ICAAGogA0G40ICAAGoiBDYCACAEIANBsNCAgABqIgU2AgAgA0G80ICAAGogBTYCACADQczQgIAAaiADQcDQgIAAaiIFNgIAIAUgBDYCACADQdTQgIAAaiADQcjQgIAAaiIENgIAIAQgBTYCACADQdDQgIAAaiAENgIAIANBIGoiA0GAAkcNAAsgAEF4IABrQQ9xQQAgAEEIakEPcRsiA2oiBCAGQUhqIgUgA2siA0EBcjYCBEEAQQAoAvDTgIAANgKk0ICAAEEAIAM2ApTQgIAAQQAgBDYCoNCAgAAgACAFakE4NgIEDAILIAMtAAxBCHENACAEIAVJDQAgBCAATw0AIARBeCAEa0EPcUEAIARBCGpBD3EbIgVqIgBBACgClNCAgAAgBmoiCyAFayIFQQFyNgIEIAMgCCAGajYCBEEAQQAoAvDTgIAANgKk0ICAAEEAIAU2ApTQgIAAQQAgADYCoNCAgAAgBCALakE4NgIEDAELAkAgAEEAKAKY0ICAACIITw0AQQAgADYCmNCAgAAgACEICyAAIAZqIQVByNOAgAAhAwJAAkACQAJAAkACQAJAA0AgAygCACAFRg0BIAMoAggiAw0ADAILCyADLQAMQQhxRQ0BC0HI04CAACEDA0ACQCADKAIAIgUgBEsNACAFIAMoAgRqIgUgBEsNAwsgAygCCCEDDAALCyADIAA2AgAgAyADKAIEIAZqNgIEIABBeCAAa0EPcUEAIABBCGpBD3EbaiILIAJBA3I2AgQgBUF4IAVrQQ9xQQAgBUEIakEPcRtqIgYgCyACaiICayEDAkAgBiAERw0AQQAgAjYCoNCAgABBAEEAKAKU0ICAACADaiIDNgKU0ICAACACIANBAXI2AgQMAwsCQCAGQQAoApzQgIAARw0AQQAgAjYCnNCAgABBAEEAKAKQ0ICAACADaiIDNgKQ0ICAACACIANBAXI2AgQgAiADaiADNgIADAMLAkAgBigCBCIEQQNxQQFHDQAgBEF4cSEHAkACQCAEQf8BSw0AIAYoAggiBSAEQQN2IghBA3RBsNCAgABqIgBGGgJAIAYoAgwiBCAFRw0AQQBBACgCiNCAgABBfiAId3E2AojQgIAADAILIAQgAEYaIAQgBTYCCCAFIAQ2AgwMAQsgBigCGCEJAkACQCAGKAIMIgAgBkYNACAGKAIIIgQgCEkaIAAgBDYCCCAEIAA2AgwMAQsCQCAGQRRqIgQoAgAiBQ0AIAZBEGoiBCgCACIFDQBBACEADAELA0AgBCEIIAUiAEEUaiIEKAIAIgUNACAAQRBqIQQgACgCECIFDQALIAhBADYCAAsgCUUNAAJAAkAgBiAGKAIcIgVBAnRBuNKAgABqIgQoAgBHDQAgBCAANgIAIAANAUEAQQAoAozQgIAAQX4gBXdxNgKM0ICAAAwCCyAJQRBBFCAJKAIQIAZGG2ogADYCACAARQ0BCyAAIAk2AhgCQCAGKAIQIgRFDQAgACAENgIQIAQgADYCGAsgBigCFCIERQ0AIABBFGogBDYCACAEIAA2AhgLIAcgA2ohAyAGIAdqIgYoAgQhBAsgBiAEQX5xNgIEIAIgA2ogAzYCACACIANBAXI2AgQCQCADQf8BSw0AIANBeHFBsNCAgABqIQQCQAJAQQAoAojQgIAAIgVBASADQQN2dCIDcQ0AQQAgBSADcjYCiNCAgAAgBCEDDAELIAQoAgghAwsgAyACNgIMIAQgAjYCCCACIAQ2AgwgAiADNgIIDAMLQR8hBAJAIANB////B0sNACADQQh2IgQgBEGA/j9qQRB2QQhxIgR0IgUgBUGA4B9qQRB2QQRxIgV0IgAgAEGAgA9qQRB2QQJxIgB0QQ92IAQgBXIgAHJrIgRBAXQgAyAEQRVqdkEBcXJBHGohBAsgAiAENgIcIAJCADcCECAEQQJ0QbjSgIAAaiEFAkBBACgCjNCAgAAiAEEBIAR0IghxDQAgBSACNgIAQQAgACAIcjYCjNCAgAAgAiAFNgIYIAIgAjYCCCACIAI2AgwMAwsgA0EAQRkgBEEBdmsgBEEfRht0IQQgBSgCACEAA0AgACIFKAIEQXhxIANGDQIgBEEddiEAIARBAXQhBCAFIABBBHFqQRBqIggoAgAiAA0ACyAIIAI2AgAgAiAFNgIYIAIgAjYCDCACIAI2AggMAgsgAEF4IABrQQ9xQQAgAEEIakEPcRsiA2oiCyAGQUhqIgggA2siA0EBcjYCBCAAIAhqQTg2AgQgBCAFQTcgBWtBD3FBACAFQUlqQQ9xG2pBQWoiCCAIIARBEGpJGyIIQSM2AgRBAEEAKALw04CAADYCpNCAgABBACADNgKU0ICAAEEAIAs2AqDQgIAAIAhBEGpBACkC0NOAgAA3AgAgCEEAKQLI04CAADcCCEEAIAhBCGo2AtDTgIAAQQAgBjYCzNOAgABBACAANgLI04CAAEEAQQA2AtTTgIAAIAhBJGohAwNAIANBBzYCACADQQRqIgMgBUkNAAsgCCAERg0DIAggCCgCBEF+cTYCBCAIIAggBGsiADYCACAEIABBAXI2AgQCQCAAQf8BSw0AIABBeHFBsNCAgABqIQMCQAJAQQAoAojQgIAAIgVBASAAQQN2dCIAcQ0AQQAgBSAAcjYCiNCAgAAgAyEFDAELIAMoAgghBQsgBSAENgIMIAMgBDYCCCAEIAM2AgwgBCAFNgIIDAQLQR8hAwJAIABB////B0sNACAAQQh2IgMgA0GA/j9qQRB2QQhxIgN0IgUgBUGA4B9qQRB2QQRxIgV0IgggCEGAgA9qQRB2QQJxIgh0QQ92IAMgBXIgCHJrIgNBAXQgACADQRVqdkEBcXJBHGohAwsgBCADNgIcIARCADcCECADQQJ0QbjSgIAAaiEFAkBBACgCjNCAgAAiCEEBIAN0IgZxDQAgBSAENgIAQQAgCCAGcjYCjNCAgAAgBCAFNgIYIAQgBDYCCCAEIAQ2AgwMBAsgAEEAQRkgA0EBdmsgA0EfRht0IQMgBSgCACEIA0AgCCIFKAIEQXhxIABGDQMgA0EddiEIIANBAXQhAyAFIAhBBHFqQRBqIgYoAgAiCA0ACyAGIAQ2AgAgBCAFNgIYIAQgBDYCDCAEIAQ2AggMAwsgBSgCCCIDIAI2AgwgBSACNgIIIAJBADYCGCACIAU2AgwgAiADNgIICyALQQhqIQMMBQsgBSgCCCIDIAQ2AgwgBSAENgIIIARBADYCGCAEIAU2AgwgBCADNgIIC0EAKAKU0ICAACIDIAJNDQBBACgCoNCAgAAiBCACaiIFIAMgAmsiA0EBcjYCBEEAIAM2ApTQgIAAQQAgBTYCoNCAgAAgBCACQQNyNgIEIARBCGohAwwDC0EAIQNBAEEwNgL404CAAAwCCwJAIAtFDQACQAJAIAggCCgCHCIFQQJ0QbjSgIAAaiIDKAIARw0AIAMgADYCACAADQFBACAHQX4gBXdxIgc2AozQgIAADAILIAtBEEEUIAsoAhAgCEYbaiAANgIAIABFDQELIAAgCzYCGAJAIAgoAhAiA0UNACAAIAM2AhAgAyAANgIYCyAIQRRqKAIAIgNFDQAgAEEUaiADNgIAIAMgADYCGAsCQAJAIARBD0sNACAIIAQgAmoiA0EDcjYCBCAIIANqIgMgAygCBEEBcjYCBAwBCyAIIAJqIgAgBEEBcjYCBCAIIAJBA3I2AgQgACAEaiAENgIAAkAgBEH/AUsNACAEQXhxQbDQgIAAaiEDAkACQEEAKAKI0ICAACIFQQEgBEEDdnQiBHENAEEAIAUgBHI2AojQgIAAIAMhBAwBCyADKAIIIQQLIAQgADYCDCADIAA2AgggACADNgIMIAAgBDYCCAwBC0EfIQMCQCAEQf///wdLDQAgBEEIdiIDIANBgP4/akEQdkEIcSIDdCIFIAVBgOAfakEQdkEEcSIFdCICIAJBgIAPakEQdkECcSICdEEPdiADIAVyIAJyayIDQQF0IAQgA0EVanZBAXFyQRxqIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEG40oCAAGohBQJAIAdBASADdCICcQ0AIAUgADYCAEEAIAcgAnI2AozQgIAAIAAgBTYCGCAAIAA2AgggACAANgIMDAELIARBAEEZIANBAXZrIANBH0YbdCEDIAUoAgAhAgJAA0AgAiIFKAIEQXhxIARGDQEgA0EddiECIANBAXQhAyAFIAJBBHFqQRBqIgYoAgAiAg0ACyAGIAA2AgAgACAFNgIYIAAgADYCDCAAIAA2AggMAQsgBSgCCCIDIAA2AgwgBSAANgIIIABBADYCGCAAIAU2AgwgACADNgIICyAIQQhqIQMMAQsCQCAKRQ0AAkACQCAAIAAoAhwiBUECdEG40oCAAGoiAygCAEcNACADIAg2AgAgCA0BQQAgCUF+IAV3cTYCjNCAgAAMAgsgCkEQQRQgCigCECAARhtqIAg2AgAgCEUNAQsgCCAKNgIYAkAgACgCECIDRQ0AIAggAzYCECADIAg2AhgLIABBFGooAgAiA0UNACAIQRRqIAM2AgAgAyAINgIYCwJAAkAgBEEPSw0AIAAgBCACaiIDQQNyNgIEIAAgA2oiAyADKAIEQQFyNgIEDAELIAAgAmoiBSAEQQFyNgIEIAAgAkEDcjYCBCAFIARqIAQ2AgACQCAHRQ0AIAdBeHFBsNCAgABqIQJBACgCnNCAgAAhAwJAAkBBASAHQQN2dCIIIAZxDQBBACAIIAZyNgKI0ICAACACIQgMAQsgAigCCCEICyAIIAM2AgwgAiADNgIIIAMgAjYCDCADIAg2AggLQQAgBTYCnNCAgABBACAENgKQ0ICAAAsgAEEIaiEDCyABQRBqJICAgIAAIAMLCgAgABDJgICAAAviDQEHfwJAIABFDQAgAEF4aiIBIABBfGooAgAiAkF4cSIAaiEDAkAgAkEBcQ0AIAJBA3FFDQEgASABKAIAIgJrIgFBACgCmNCAgAAiBEkNASACIABqIQACQCABQQAoApzQgIAARg0AAkAgAkH/AUsNACABKAIIIgQgAkEDdiIFQQN0QbDQgIAAaiIGRhoCQCABKAIMIgIgBEcNAEEAQQAoAojQgIAAQX4gBXdxNgKI0ICAAAwDCyACIAZGGiACIAQ2AgggBCACNgIMDAILIAEoAhghBwJAAkAgASgCDCIGIAFGDQAgASgCCCICIARJGiAGIAI2AgggAiAGNgIMDAELAkAgAUEUaiICKAIAIgQNACABQRBqIgIoAgAiBA0AQQAhBgwBCwNAIAIhBSAEIgZBFGoiAigCACIEDQAgBkEQaiECIAYoAhAiBA0ACyAFQQA2AgALIAdFDQECQAJAIAEgASgCHCIEQQJ0QbjSgIAAaiICKAIARw0AIAIgBjYCACAGDQFBAEEAKAKM0ICAAEF+IAR3cTYCjNCAgAAMAwsgB0EQQRQgBygCECABRhtqIAY2AgAgBkUNAgsgBiAHNgIYAkAgASgCECICRQ0AIAYgAjYCECACIAY2AhgLIAEoAhQiAkUNASAGQRRqIAI2AgAgAiAGNgIYDAELIAMoAgQiAkEDcUEDRw0AIAMgAkF+cTYCBEEAIAA2ApDQgIAAIAEgAGogADYCACABIABBAXI2AgQPCyABIANPDQAgAygCBCICQQFxRQ0AAkACQCACQQJxDQACQCADQQAoAqDQgIAARw0AQQAgATYCoNCAgABBAEEAKAKU0ICAACAAaiIANgKU0ICAACABIABBAXI2AgQgAUEAKAKc0ICAAEcNA0EAQQA2ApDQgIAAQQBBADYCnNCAgAAPCwJAIANBACgCnNCAgABHDQBBACABNgKc0ICAAEEAQQAoApDQgIAAIABqIgA2ApDQgIAAIAEgAEEBcjYCBCABIABqIAA2AgAPCyACQXhxIABqIQACQAJAIAJB/wFLDQAgAygCCCIEIAJBA3YiBUEDdEGw0ICAAGoiBkYaAkAgAygCDCICIARHDQBBAEEAKAKI0ICAAEF+IAV3cTYCiNCAgAAMAgsgAiAGRhogAiAENgIIIAQgAjYCDAwBCyADKAIYIQcCQAJAIAMoAgwiBiADRg0AIAMoAggiAkEAKAKY0ICAAEkaIAYgAjYCCCACIAY2AgwMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEGDAELA0AgAiEFIAQiBkEUaiICKAIAIgQNACAGQRBqIQIgBigCECIEDQALIAVBADYCAAsgB0UNAAJAAkAgAyADKAIcIgRBAnRBuNKAgABqIgIoAgBHDQAgAiAGNgIAIAYNAUEAQQAoAozQgIAAQX4gBHdxNgKM0ICAAAwCCyAHQRBBFCAHKAIQIANGG2ogBjYCACAGRQ0BCyAGIAc2AhgCQCADKAIQIgJFDQAgBiACNgIQIAIgBjYCGAsgAygCFCICRQ0AIAZBFGogAjYCACACIAY2AhgLIAEgAGogADYCACABIABBAXI2AgQgAUEAKAKc0ICAAEcNAUEAIAA2ApDQgIAADwsgAyACQX5xNgIEIAEgAGogADYCACABIABBAXI2AgQLAkAgAEH/AUsNACAAQXhxQbDQgIAAaiECAkACQEEAKAKI0ICAACIEQQEgAEEDdnQiAHENAEEAIAQgAHI2AojQgIAAIAIhAAwBCyACKAIIIQALIAAgATYCDCACIAE2AgggASACNgIMIAEgADYCCA8LQR8hAgJAIABB////B0sNACAAQQh2IgIgAkGA/j9qQRB2QQhxIgJ0IgQgBEGA4B9qQRB2QQRxIgR0IgYgBkGAgA9qQRB2QQJxIgZ0QQ92IAIgBHIgBnJrIgJBAXQgACACQRVqdkEBcXJBHGohAgsgASACNgIcIAFCADcCECACQQJ0QbjSgIAAaiEEAkACQEEAKAKM0ICAACIGQQEgAnQiA3ENACAEIAE2AgBBACAGIANyNgKM0ICAACABIAQ2AhggASABNgIIIAEgATYCDAwBCyAAQQBBGSACQQF2ayACQR9GG3QhAiAEKAIAIQYCQANAIAYiBCgCBEF4cSAARg0BIAJBHXYhBiACQQF0IQIgBCAGQQRxakEQaiIDKAIAIgYNAAsgAyABNgIAIAEgBDYCGCABIAE2AgwgASABNgIIDAELIAQoAggiACABNgIMIAQgATYCCCABQQA2AhggASAENgIMIAEgADYCCAtBAEEAKAKo0ICAAEF/aiIBQX8gARs2AqjQgIAACwsEAAAAC04AAkAgAA0APwBBEHQPCwJAIABB//8DcQ0AIABBf0wNAAJAIABBEHZAACIAQX9HDQBBAEEwNgL404CAAEF/DwsgAEEQdA8LEMqAgIAAAAvyAgIDfwF+AkAgAkUNACAAIAE6AAAgAiAAaiIDQX9qIAE6AAAgAkEDSQ0AIAAgAToAAiAAIAE6AAEgA0F9aiABOgAAIANBfmogAToAACACQQdJDQAgACABOgADIANBfGogAToAACACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkF8aiABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBeGogATYCACACQXRqIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQXBqIAE2AgAgAkFsaiABNgIAIAJBaGogATYCACACQWRqIAE2AgAgBCADQQRxQRhyIgVrIgJBIEkNACABrUKBgICAEH4hBiADIAVqIQEDQCABIAY3AxggASAGNwMQIAEgBjcDCCABIAY3AwAgAUEgaiEBIAJBYGoiAkEfSw0ACwsgAAsLjkgBAEGACAuGSAEAAAACAAAAAwAAAAAAAAAAAAAABAAAAAUAAAAAAAAAAAAAAAYAAAAHAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=='
 62523  
 62524  
 62525  /***/ }),
 62526  
 62527  /***/ 41891:
 62528  /***/ ((__unused_webpack_module, exports) => {
 62529  
 62530  "use strict";
 62531  
 62532  Object.defineProperty(exports, "__esModule", ({ value: true }));
 62533  exports.enumToMap = void 0;
 62534  function enumToMap(obj) {
 62535      const res = {};
 62536      Object.keys(obj).forEach((key) => {
 62537          const value = obj[key];
 62538          if (typeof value === 'number') {
 62539              res[key] = value;
 62540          }
 62541      });
 62542      return res;
 62543  }
 62544  exports.enumToMap = enumToMap;
 62545  //# sourceMappingURL=utils.js.map
 62546  
 62547  /***/ }),
 62548  
 62549  /***/ 66771:
 62550  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 62551  
 62552  "use strict";
 62553  
 62554  
 62555  const { kClients } = __nccwpck_require__(72785)
 62556  const Agent = __nccwpck_require__(7890)
 62557  const {
 62558    kAgent,
 62559    kMockAgentSet,
 62560    kMockAgentGet,
 62561    kDispatches,
 62562    kIsMockActive,
 62563    kNetConnect,
 62564    kGetNetConnect,
 62565    kOptions,
 62566    kFactory
 62567  } = __nccwpck_require__(24347)
 62568  const MockClient = __nccwpck_require__(58687)
 62569  const MockPool = __nccwpck_require__(26193)
 62570  const { matchValue, buildMockOptions } = __nccwpck_require__(79323)
 62571  const { InvalidArgumentError, UndiciError } = __nccwpck_require__(48045)
 62572  const Dispatcher = __nccwpck_require__(60412)
 62573  const Pluralizer = __nccwpck_require__(78891)
 62574  const PendingInterceptorsFormatter = __nccwpck_require__(86823)
 62575  
 62576  class FakeWeakRef {
 62577    constructor (value) {
 62578      this.value = value
 62579    }
 62580  
 62581    deref () {
 62582      return this.value
 62583    }
 62584  }
 62585  
 62586  class MockAgent extends Dispatcher {
 62587    constructor (opts) {
 62588      super(opts)
 62589  
 62590      this[kNetConnect] = true
 62591      this[kIsMockActive] = true
 62592  
 62593      // Instantiate Agent and encapsulate
 62594      if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) {
 62595        throw new InvalidArgumentError('Argument opts.agent must implement Agent')
 62596      }
 62597      const agent = opts && opts.agent ? opts.agent : new Agent(opts)
 62598      this[kAgent] = agent
 62599  
 62600      this[kClients] = agent[kClients]
 62601      this[kOptions] = buildMockOptions(opts)
 62602    }
 62603  
 62604    get (origin) {
 62605      let dispatcher = this[kMockAgentGet](origin)
 62606  
 62607      if (!dispatcher) {
 62608        dispatcher = this[kFactory](origin)
 62609        this[kMockAgentSet](origin, dispatcher)
 62610      }
 62611      return dispatcher
 62612    }
 62613  
 62614    dispatch (opts, handler) {
 62615      // Call MockAgent.get to perform additional setup before dispatching as normal
 62616      this.get(opts.origin)
 62617      return this[kAgent].dispatch(opts, handler)
 62618    }
 62619  
 62620    async close () {
 62621      await this[kAgent].close()
 62622      this[kClients].clear()
 62623    }
 62624  
 62625    deactivate () {
 62626      this[kIsMockActive] = false
 62627    }
 62628  
 62629    activate () {
 62630      this[kIsMockActive] = true
 62631    }
 62632  
 62633    enableNetConnect (matcher) {
 62634      if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) {
 62635        if (Array.isArray(this[kNetConnect])) {
 62636          this[kNetConnect].push(matcher)
 62637        } else {
 62638          this[kNetConnect] = [matcher]
 62639        }
 62640      } else if (typeof matcher === 'undefined') {
 62641        this[kNetConnect] = true
 62642      } else {
 62643        throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.')
 62644      }
 62645    }
 62646  
 62647    disableNetConnect () {
 62648      this[kNetConnect] = false
 62649    }
 62650  
 62651    // This is required to bypass issues caused by using global symbols - see:
 62652    // https://github.com/nodejs/undici/issues/1447
 62653    get isMockActive () {
 62654      return this[kIsMockActive]
 62655    }
 62656  
 62657    [kMockAgentSet] (origin, dispatcher) {
 62658      this[kClients].set(origin, new FakeWeakRef(dispatcher))
 62659    }
 62660  
 62661    [kFactory] (origin) {
 62662      const mockOptions = Object.assign({ agent: this }, this[kOptions])
 62663      return this[kOptions] && this[kOptions].connections === 1
 62664        ? new MockClient(origin, mockOptions)
 62665        : new MockPool(origin, mockOptions)
 62666    }
 62667  
 62668    [kMockAgentGet] (origin) {
 62669      // First check if we can immediately find it
 62670      const ref = this[kClients].get(origin)
 62671      if (ref) {
 62672        return ref.deref()
 62673      }
 62674  
 62675      // If the origin is not a string create a dummy parent pool and return to user
 62676      if (typeof origin !== 'string') {
 62677        const dispatcher = this[kFactory]('http://localhost:9999')
 62678        this[kMockAgentSet](origin, dispatcher)
 62679        return dispatcher
 62680      }
 62681  
 62682      // If we match, create a pool and assign the same dispatches
 62683      for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) {
 62684        const nonExplicitDispatcher = nonExplicitRef.deref()
 62685        if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {
 62686          const dispatcher = this[kFactory](origin)
 62687          this[kMockAgentSet](origin, dispatcher)
 62688          dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]
 62689          return dispatcher
 62690        }
 62691      }
 62692    }
 62693  
 62694    [kGetNetConnect] () {
 62695      return this[kNetConnect]
 62696    }
 62697  
 62698    pendingInterceptors () {
 62699      const mockAgentClients = this[kClients]
 62700  
 62701      return Array.from(mockAgentClients.entries())
 62702        .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin })))
 62703        .filter(({ pending }) => pending)
 62704    }
 62705  
 62706    assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {
 62707      const pending = this.pendingInterceptors()
 62708  
 62709      if (pending.length === 0) {
 62710        return
 62711      }
 62712  
 62713      const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length)
 62714  
 62715      throw new UndiciError(`
 62716  ${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending:
 62717  
 62718  ${pendingInterceptorsFormatter.format(pending)}
 62719  `.trim())
 62720    }
 62721  }
 62722  
 62723  module.exports = MockAgent
 62724  
 62725  
 62726  /***/ }),
 62727  
 62728  /***/ 58687:
 62729  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 62730  
 62731  "use strict";
 62732  
 62733  
 62734  const { promisify } = __nccwpck_require__(73837)
 62735  const Client = __nccwpck_require__(33598)
 62736  const { buildMockDispatch } = __nccwpck_require__(79323)
 62737  const {
 62738    kDispatches,
 62739    kMockAgent,
 62740    kClose,
 62741    kOriginalClose,
 62742    kOrigin,
 62743    kOriginalDispatch,
 62744    kConnected
 62745  } = __nccwpck_require__(24347)
 62746  const { MockInterceptor } = __nccwpck_require__(90410)
 62747  const Symbols = __nccwpck_require__(72785)
 62748  const { InvalidArgumentError } = __nccwpck_require__(48045)
 62749  
 62750  /**
 62751   * MockClient provides an API that extends the Client to influence the mockDispatches.
 62752   */
 62753  class MockClient extends Client {
 62754    constructor (origin, opts) {
 62755      super(origin, opts)
 62756  
 62757      if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {
 62758        throw new InvalidArgumentError('Argument opts.agent must implement Agent')
 62759      }
 62760  
 62761      this[kMockAgent] = opts.agent
 62762      this[kOrigin] = origin
 62763      this[kDispatches] = []
 62764      this[kConnected] = 1
 62765      this[kOriginalDispatch] = this.dispatch
 62766      this[kOriginalClose] = this.close.bind(this)
 62767  
 62768      this.dispatch = buildMockDispatch.call(this)
 62769      this.close = this[kClose]
 62770    }
 62771  
 62772    get [Symbols.kConnected] () {
 62773      return this[kConnected]
 62774    }
 62775  
 62776    /**
 62777     * Sets up the base interceptor for mocking replies from undici.
 62778     */
 62779    intercept (opts) {
 62780      return new MockInterceptor(opts, this[kDispatches])
 62781    }
 62782  
 62783    async [kClose] () {
 62784      await promisify(this[kOriginalClose])()
 62785      this[kConnected] = 0
 62786      this[kMockAgent][Symbols.kClients].delete(this[kOrigin])
 62787    }
 62788  }
 62789  
 62790  module.exports = MockClient
 62791  
 62792  
 62793  /***/ }),
 62794  
 62795  /***/ 50888:
 62796  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 62797  
 62798  "use strict";
 62799  
 62800  
 62801  const { UndiciError } = __nccwpck_require__(48045)
 62802  
 62803  class MockNotMatchedError extends UndiciError {
 62804    constructor (message) {
 62805      super(message)
 62806      Error.captureStackTrace(this, MockNotMatchedError)
 62807      this.name = 'MockNotMatchedError'
 62808      this.message = message || 'The request does not match any registered mock dispatches'
 62809      this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'
 62810    }
 62811  }
 62812  
 62813  module.exports = {
 62814    MockNotMatchedError
 62815  }
 62816  
 62817  
 62818  /***/ }),
 62819  
 62820  /***/ 90410:
 62821  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 62822  
 62823  "use strict";
 62824  
 62825  
 62826  const { getResponseData, buildKey, addMockDispatch } = __nccwpck_require__(79323)
 62827  const {
 62828    kDispatches,
 62829    kDispatchKey,
 62830    kDefaultHeaders,
 62831    kDefaultTrailers,
 62832    kContentLength,
 62833    kMockDispatch
 62834  } = __nccwpck_require__(24347)
 62835  const { InvalidArgumentError } = __nccwpck_require__(48045)
 62836  const { buildURL } = __nccwpck_require__(83983)
 62837  
 62838  /**
 62839   * Defines the scope API for an interceptor reply
 62840   */
 62841  class MockScope {
 62842    constructor (mockDispatch) {
 62843      this[kMockDispatch] = mockDispatch
 62844    }
 62845  
 62846    /**
 62847     * Delay a reply by a set amount in ms.
 62848     */
 62849    delay (waitInMs) {
 62850      if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) {
 62851        throw new InvalidArgumentError('waitInMs must be a valid integer > 0')
 62852      }
 62853  
 62854      this[kMockDispatch].delay = waitInMs
 62855      return this
 62856    }
 62857  
 62858    /**
 62859     * For a defined reply, never mark as consumed.
 62860     */
 62861    persist () {
 62862      this[kMockDispatch].persist = true
 62863      return this
 62864    }
 62865  
 62866    /**
 62867     * Allow one to define a reply for a set amount of matching requests.
 62868     */
 62869    times (repeatTimes) {
 62870      if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) {
 62871        throw new InvalidArgumentError('repeatTimes must be a valid integer > 0')
 62872      }
 62873  
 62874      this[kMockDispatch].times = repeatTimes
 62875      return this
 62876    }
 62877  }
 62878  
 62879  /**
 62880   * Defines an interceptor for a Mock
 62881   */
 62882  class MockInterceptor {
 62883    constructor (opts, mockDispatches) {
 62884      if (typeof opts !== 'object') {
 62885        throw new InvalidArgumentError('opts must be an object')
 62886      }
 62887      if (typeof opts.path === 'undefined') {
 62888        throw new InvalidArgumentError('opts.path must be defined')
 62889      }
 62890      if (typeof opts.method === 'undefined') {
 62891        opts.method = 'GET'
 62892      }
 62893      // See https://github.com/nodejs/undici/issues/1245
 62894      // As per RFC 3986, clients are not supposed to send URI
 62895      // fragments to servers when they retrieve a document,
 62896      if (typeof opts.path === 'string') {
 62897        if (opts.query) {
 62898          opts.path = buildURL(opts.path, opts.query)
 62899        } else {
 62900          // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811
 62901          const parsedURL = new URL(opts.path, 'data://')
 62902          opts.path = parsedURL.pathname + parsedURL.search
 62903        }
 62904      }
 62905      if (typeof opts.method === 'string') {
 62906        opts.method = opts.method.toUpperCase()
 62907      }
 62908  
 62909      this[kDispatchKey] = buildKey(opts)
 62910      this[kDispatches] = mockDispatches
 62911      this[kDefaultHeaders] = {}
 62912      this[kDefaultTrailers] = {}
 62913      this[kContentLength] = false
 62914    }
 62915  
 62916    createMockScopeDispatchData (statusCode, data, responseOptions = {}) {
 62917      const responseData = getResponseData(data)
 62918      const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}
 62919      const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }
 62920      const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }
 62921  
 62922      return { statusCode, data, headers, trailers }
 62923    }
 62924  
 62925    validateReplyParameters (statusCode, data, responseOptions) {
 62926      if (typeof statusCode === 'undefined') {
 62927        throw new InvalidArgumentError('statusCode must be defined')
 62928      }
 62929      if (typeof data === 'undefined') {
 62930        throw new InvalidArgumentError('data must be defined')
 62931      }
 62932      if (typeof responseOptions !== 'object') {
 62933        throw new InvalidArgumentError('responseOptions must be an object')
 62934      }
 62935    }
 62936  
 62937    /**
 62938     * Mock an undici request with a defined reply.
 62939     */
 62940    reply (replyData) {
 62941      // Values of reply aren't available right now as they
 62942      // can only be available when the reply callback is invoked.
 62943      if (typeof replyData === 'function') {
 62944        // We'll first wrap the provided callback in another function,
 62945        // this function will properly resolve the data from the callback
 62946        // when invoked.
 62947        const wrappedDefaultsCallback = (opts) => {
 62948          // Our reply options callback contains the parameter for statusCode, data and options.
 62949          const resolvedData = replyData(opts)
 62950  
 62951          // Check if it is in the right format
 62952          if (typeof resolvedData !== 'object') {
 62953            throw new InvalidArgumentError('reply options callback must return an object')
 62954          }
 62955  
 62956          const { statusCode, data = '', responseOptions = {} } = resolvedData
 62957          this.validateReplyParameters(statusCode, data, responseOptions)
 62958          // Since the values can be obtained immediately we return them
 62959          // from this higher order function that will be resolved later.
 62960          return {
 62961            ...this.createMockScopeDispatchData(statusCode, data, responseOptions)
 62962          }
 62963        }
 62964  
 62965        // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.
 62966        const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback)
 62967        return new MockScope(newMockDispatch)
 62968      }
 62969  
 62970      // We can have either one or three parameters, if we get here,
 62971      // we should have 1-3 parameters. So we spread the arguments of
 62972      // this function to obtain the parameters, since replyData will always
 62973      // just be the statusCode.
 62974      const [statusCode, data = '', responseOptions = {}] = [...arguments]
 62975      this.validateReplyParameters(statusCode, data, responseOptions)
 62976  
 62977      // Send in-already provided data like usual
 62978      const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions)
 62979      const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData)
 62980      return new MockScope(newMockDispatch)
 62981    }
 62982  
 62983    /**
 62984     * Mock an undici request with a defined error.
 62985     */
 62986    replyWithError (error) {
 62987      if (typeof error === 'undefined') {
 62988        throw new InvalidArgumentError('error must be defined')
 62989      }
 62990  
 62991      const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error })
 62992      return new MockScope(newMockDispatch)
 62993    }
 62994  
 62995    /**
 62996     * Set default reply headers on the interceptor for subsequent replies
 62997     */
 62998    defaultReplyHeaders (headers) {
 62999      if (typeof headers === 'undefined') {
 63000        throw new InvalidArgumentError('headers must be defined')
 63001      }
 63002  
 63003      this[kDefaultHeaders] = headers
 63004      return this
 63005    }
 63006  
 63007    /**
 63008     * Set default reply trailers on the interceptor for subsequent replies
 63009     */
 63010    defaultReplyTrailers (trailers) {
 63011      if (typeof trailers === 'undefined') {
 63012        throw new InvalidArgumentError('trailers must be defined')
 63013      }
 63014  
 63015      this[kDefaultTrailers] = trailers
 63016      return this
 63017    }
 63018  
 63019    /**
 63020     * Set reply content length header for replies on the interceptor
 63021     */
 63022    replyContentLength () {
 63023      this[kContentLength] = true
 63024      return this
 63025    }
 63026  }
 63027  
 63028  module.exports.MockInterceptor = MockInterceptor
 63029  module.exports.MockScope = MockScope
 63030  
 63031  
 63032  /***/ }),
 63033  
 63034  /***/ 26193:
 63035  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 63036  
 63037  "use strict";
 63038  
 63039  
 63040  const { promisify } = __nccwpck_require__(73837)
 63041  const Pool = __nccwpck_require__(4634)
 63042  const { buildMockDispatch } = __nccwpck_require__(79323)
 63043  const {
 63044    kDispatches,
 63045    kMockAgent,
 63046    kClose,
 63047    kOriginalClose,
 63048    kOrigin,
 63049    kOriginalDispatch,
 63050    kConnected
 63051  } = __nccwpck_require__(24347)
 63052  const { MockInterceptor } = __nccwpck_require__(90410)
 63053  const Symbols = __nccwpck_require__(72785)
 63054  const { InvalidArgumentError } = __nccwpck_require__(48045)
 63055  
 63056  /**
 63057   * MockPool provides an API that extends the Pool to influence the mockDispatches.
 63058   */
 63059  class MockPool extends Pool {
 63060    constructor (origin, opts) {
 63061      super(origin, opts)
 63062  
 63063      if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {
 63064        throw new InvalidArgumentError('Argument opts.agent must implement Agent')
 63065      }
 63066  
 63067      this[kMockAgent] = opts.agent
 63068      this[kOrigin] = origin
 63069      this[kDispatches] = []
 63070      this[kConnected] = 1
 63071      this[kOriginalDispatch] = this.dispatch
 63072      this[kOriginalClose] = this.close.bind(this)
 63073  
 63074      this.dispatch = buildMockDispatch.call(this)
 63075      this.close = this[kClose]
 63076    }
 63077  
 63078    get [Symbols.kConnected] () {
 63079      return this[kConnected]
 63080    }
 63081  
 63082    /**
 63083     * Sets up the base interceptor for mocking replies from undici.
 63084     */
 63085    intercept (opts) {
 63086      return new MockInterceptor(opts, this[kDispatches])
 63087    }
 63088  
 63089    async [kClose] () {
 63090      await promisify(this[kOriginalClose])()
 63091      this[kConnected] = 0
 63092      this[kMockAgent][Symbols.kClients].delete(this[kOrigin])
 63093    }
 63094  }
 63095  
 63096  module.exports = MockPool
 63097  
 63098  
 63099  /***/ }),
 63100  
 63101  /***/ 24347:
 63102  /***/ ((module) => {
 63103  
 63104  "use strict";
 63105  
 63106  
 63107  module.exports = {
 63108    kAgent: Symbol('agent'),
 63109    kOptions: Symbol('options'),
 63110    kFactory: Symbol('factory'),
 63111    kDispatches: Symbol('dispatches'),
 63112    kDispatchKey: Symbol('dispatch key'),
 63113    kDefaultHeaders: Symbol('default headers'),
 63114    kDefaultTrailers: Symbol('default trailers'),
 63115    kContentLength: Symbol('content length'),
 63116    kMockAgent: Symbol('mock agent'),
 63117    kMockAgentSet: Symbol('mock agent set'),
 63118    kMockAgentGet: Symbol('mock agent get'),
 63119    kMockDispatch: Symbol('mock dispatch'),
 63120    kClose: Symbol('close'),
 63121    kOriginalClose: Symbol('original agent close'),
 63122    kOrigin: Symbol('origin'),
 63123    kIsMockActive: Symbol('is mock active'),
 63124    kNetConnect: Symbol('net connect'),
 63125    kGetNetConnect: Symbol('get net connect'),
 63126    kConnected: Symbol('connected')
 63127  }
 63128  
 63129  
 63130  /***/ }),
 63131  
 63132  /***/ 79323:
 63133  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 63134  
 63135  "use strict";
 63136  
 63137  
 63138  const { MockNotMatchedError } = __nccwpck_require__(50888)
 63139  const {
 63140    kDispatches,
 63141    kMockAgent,
 63142    kOriginalDispatch,
 63143    kOrigin,
 63144    kGetNetConnect
 63145  } = __nccwpck_require__(24347)
 63146  const { buildURL, nop } = __nccwpck_require__(83983)
 63147  const { STATUS_CODES } = __nccwpck_require__(13685)
 63148  const {
 63149    types: {
 63150      isPromise
 63151    }
 63152  } = __nccwpck_require__(73837)
 63153  
 63154  function matchValue (match, value) {
 63155    if (typeof match === 'string') {
 63156      return match === value
 63157    }
 63158    if (match instanceof RegExp) {
 63159      return match.test(value)
 63160    }
 63161    if (typeof match === 'function') {
 63162      return match(value) === true
 63163    }
 63164    return false
 63165  }
 63166  
 63167  function lowerCaseEntries (headers) {
 63168    return Object.fromEntries(
 63169      Object.entries(headers).map(([headerName, headerValue]) => {
 63170        return [headerName.toLocaleLowerCase(), headerValue]
 63171      })
 63172    )
 63173  }
 63174  
 63175  /**
 63176   * @param {import('../../index').Headers|string[]|Record<string, string>} headers
 63177   * @param {string} key
 63178   */
 63179  function getHeaderByName (headers, key) {
 63180    if (Array.isArray(headers)) {
 63181      for (let i = 0; i < headers.length; i += 2) {
 63182        if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {
 63183          return headers[i + 1]
 63184        }
 63185      }
 63186  
 63187      return undefined
 63188    } else if (typeof headers.get === 'function') {
 63189      return headers.get(key)
 63190    } else {
 63191      return lowerCaseEntries(headers)[key.toLocaleLowerCase()]
 63192    }
 63193  }
 63194  
 63195  /** @param {string[]} headers */
 63196  function buildHeadersFromArray (headers) { // fetch HeadersList
 63197    const clone = headers.slice()
 63198    const entries = []
 63199    for (let index = 0; index < clone.length; index += 2) {
 63200      entries.push([clone[index], clone[index + 1]])
 63201    }
 63202    return Object.fromEntries(entries)
 63203  }
 63204  
 63205  function matchHeaders (mockDispatch, headers) {
 63206    if (typeof mockDispatch.headers === 'function') {
 63207      if (Array.isArray(headers)) { // fetch HeadersList
 63208        headers = buildHeadersFromArray(headers)
 63209      }
 63210      return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {})
 63211    }
 63212    if (typeof mockDispatch.headers === 'undefined') {
 63213      return true
 63214    }
 63215    if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') {
 63216      return false
 63217    }
 63218  
 63219    for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) {
 63220      const headerValue = getHeaderByName(headers, matchHeaderName)
 63221  
 63222      if (!matchValue(matchHeaderValue, headerValue)) {
 63223        return false
 63224      }
 63225    }
 63226    return true
 63227  }
 63228  
 63229  function safeUrl (path) {
 63230    if (typeof path !== 'string') {
 63231      return path
 63232    }
 63233  
 63234    const pathSegments = path.split('?')
 63235  
 63236    if (pathSegments.length !== 2) {
 63237      return path
 63238    }
 63239  
 63240    const qp = new URLSearchParams(pathSegments.pop())
 63241    qp.sort()
 63242    return [...pathSegments, qp.toString()].join('?')
 63243  }
 63244  
 63245  function matchKey (mockDispatch, { path, method, body, headers }) {
 63246    const pathMatch = matchValue(mockDispatch.path, path)
 63247    const methodMatch = matchValue(mockDispatch.method, method)
 63248    const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true
 63249    const headersMatch = matchHeaders(mockDispatch, headers)
 63250    return pathMatch && methodMatch && bodyMatch && headersMatch
 63251  }
 63252  
 63253  function getResponseData (data) {
 63254    if (Buffer.isBuffer(data)) {
 63255      return data
 63256    } else if (typeof data === 'object') {
 63257      return JSON.stringify(data)
 63258    } else {
 63259      return data.toString()
 63260    }
 63261  }
 63262  
 63263  function getMockDispatch (mockDispatches, key) {
 63264    const basePath = key.query ? buildURL(key.path, key.query) : key.path
 63265    const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath
 63266  
 63267    // Match path
 63268    let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath))
 63269    if (matchedMockDispatches.length === 0) {
 63270      throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`)
 63271    }
 63272  
 63273    // Match method
 63274    matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method))
 63275    if (matchedMockDispatches.length === 0) {
 63276      throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`)
 63277    }
 63278  
 63279    // Match body
 63280    matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true)
 63281    if (matchedMockDispatches.length === 0) {
 63282      throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`)
 63283    }
 63284  
 63285    // Match headers
 63286    matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers))
 63287    if (matchedMockDispatches.length === 0) {
 63288      throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`)
 63289    }
 63290  
 63291    return matchedMockDispatches[0]
 63292  }
 63293  
 63294  function addMockDispatch (mockDispatches, key, data) {
 63295    const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }
 63296    const replyData = typeof data === 'function' ? { callback: data } : { ...data }
 63297    const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }
 63298    mockDispatches.push(newMockDispatch)
 63299    return newMockDispatch
 63300  }
 63301  
 63302  function deleteMockDispatch (mockDispatches, key) {
 63303    const index = mockDispatches.findIndex(dispatch => {
 63304      if (!dispatch.consumed) {
 63305        return false
 63306      }
 63307      return matchKey(dispatch, key)
 63308    })
 63309    if (index !== -1) {
 63310      mockDispatches.splice(index, 1)
 63311    }
 63312  }
 63313  
 63314  function buildKey (opts) {
 63315    const { path, method, body, headers, query } = opts
 63316    return {
 63317      path,
 63318      method,
 63319      body,
 63320      headers,
 63321      query
 63322    }
 63323  }
 63324  
 63325  function generateKeyValues (data) {
 63326    return Object.entries(data).reduce((keyValuePairs, [key, value]) => [
 63327      ...keyValuePairs,
 63328      Buffer.from(`${key}`),
 63329      Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`)
 63330    ], [])
 63331  }
 63332  
 63333  /**
 63334   * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
 63335   * @param {number} statusCode
 63336   */
 63337  function getStatusText (statusCode) {
 63338    return STATUS_CODES[statusCode] || 'unknown'
 63339  }
 63340  
 63341  async function getResponse (body) {
 63342    const buffers = []
 63343    for await (const data of body) {
 63344      buffers.push(data)
 63345    }
 63346    return Buffer.concat(buffers).toString('utf8')
 63347  }
 63348  
 63349  /**
 63350   * Mock dispatch function used to simulate undici dispatches
 63351   */
 63352  function mockDispatch (opts, handler) {
 63353    // Get mock dispatch from built key
 63354    const key = buildKey(opts)
 63355    const mockDispatch = getMockDispatch(this[kDispatches], key)
 63356  
 63357    mockDispatch.timesInvoked++
 63358  
 63359    // Here's where we resolve a callback if a callback is present for the dispatch data.
 63360    if (mockDispatch.data.callback) {
 63361      mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }
 63362    }
 63363  
 63364    // Parse mockDispatch data
 63365    const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch
 63366    const { timesInvoked, times } = mockDispatch
 63367  
 63368    // If it's used up and not persistent, mark as consumed
 63369    mockDispatch.consumed = !persist && timesInvoked >= times
 63370    mockDispatch.pending = timesInvoked < times
 63371  
 63372    // If specified, trigger dispatch error
 63373    if (error !== null) {
 63374      deleteMockDispatch(this[kDispatches], key)
 63375      handler.onError(error)
 63376      return true
 63377    }
 63378  
 63379    // Handle the request with a delay if necessary
 63380    if (typeof delay === 'number' && delay > 0) {
 63381      setTimeout(() => {
 63382        handleReply(this[kDispatches])
 63383      }, delay)
 63384    } else {
 63385      handleReply(this[kDispatches])
 63386    }
 63387  
 63388    function handleReply (mockDispatches, _data = data) {
 63389      // fetch's HeadersList is a 1D string array
 63390      const optsHeaders = Array.isArray(opts.headers)
 63391        ? buildHeadersFromArray(opts.headers)
 63392        : opts.headers
 63393      const body = typeof _data === 'function'
 63394        ? _data({ ...opts, headers: optsHeaders })
 63395        : _data
 63396  
 63397      // util.types.isPromise is likely needed for jest.
 63398      if (isPromise(body)) {
 63399        // If handleReply is asynchronous, throwing an error
 63400        // in the callback will reject the promise, rather than
 63401        // synchronously throw the error, which breaks some tests.
 63402        // Rather, we wait for the callback to resolve if it is a
 63403        // promise, and then re-run handleReply with the new body.
 63404        body.then((newData) => handleReply(mockDispatches, newData))
 63405        return
 63406      }
 63407  
 63408      const responseData = getResponseData(body)
 63409      const responseHeaders = generateKeyValues(headers)
 63410      const responseTrailers = generateKeyValues(trailers)
 63411  
 63412      handler.abort = nop
 63413      handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode))
 63414      handler.onData(Buffer.from(responseData))
 63415      handler.onComplete(responseTrailers)
 63416      deleteMockDispatch(mockDispatches, key)
 63417    }
 63418  
 63419    function resume () {}
 63420  
 63421    return true
 63422  }
 63423  
 63424  function buildMockDispatch () {
 63425    const agent = this[kMockAgent]
 63426    const origin = this[kOrigin]
 63427    const originalDispatch = this[kOriginalDispatch]
 63428  
 63429    return function dispatch (opts, handler) {
 63430      if (agent.isMockActive) {
 63431        try {
 63432          mockDispatch.call(this, opts, handler)
 63433        } catch (error) {
 63434          if (error instanceof MockNotMatchedError) {
 63435            const netConnect = agent[kGetNetConnect]()
 63436            if (netConnect === false) {
 63437              throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`)
 63438            }
 63439            if (checkNetConnect(netConnect, origin)) {
 63440              originalDispatch.call(this, opts, handler)
 63441            } else {
 63442              throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`)
 63443            }
 63444          } else {
 63445            throw error
 63446          }
 63447        }
 63448      } else {
 63449        originalDispatch.call(this, opts, handler)
 63450      }
 63451    }
 63452  }
 63453  
 63454  function checkNetConnect (netConnect, origin) {
 63455    const url = new URL(origin)
 63456    if (netConnect === true) {
 63457      return true
 63458    } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) {
 63459      return true
 63460    }
 63461    return false
 63462  }
 63463  
 63464  function buildMockOptions (opts) {
 63465    if (opts) {
 63466      const { agent, ...mockOptions } = opts
 63467      return mockOptions
 63468    }
 63469  }
 63470  
 63471  module.exports = {
 63472    getResponseData,
 63473    getMockDispatch,
 63474    addMockDispatch,
 63475    deleteMockDispatch,
 63476    buildKey,
 63477    generateKeyValues,
 63478    matchValue,
 63479    getResponse,
 63480    getStatusText,
 63481    mockDispatch,
 63482    buildMockDispatch,
 63483    checkNetConnect,
 63484    buildMockOptions,
 63485    getHeaderByName
 63486  }
 63487  
 63488  
 63489  /***/ }),
 63490  
 63491  /***/ 86823:
 63492  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 63493  
 63494  "use strict";
 63495  
 63496  
 63497  const { Transform } = __nccwpck_require__(12781)
 63498  const { Console } = __nccwpck_require__(96206)
 63499  
 63500  /**
 63501   * Gets the output of `console.table(…)` as a string.
 63502   */
 63503  module.exports = class PendingInterceptorsFormatter {
 63504    constructor ({ disableColors } = {}) {
 63505      this.transform = new Transform({
 63506        transform (chunk, _enc, cb) {
 63507          cb(null, chunk)
 63508        }
 63509      })
 63510  
 63511      this.logger = new Console({
 63512        stdout: this.transform,
 63513        inspectOptions: {
 63514          colors: !disableColors && !process.env.CI
 63515        }
 63516      })
 63517    }
 63518  
 63519    format (pendingInterceptors) {
 63520      const withPrettyHeaders = pendingInterceptors.map(
 63521        ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({
 63522          Method: method,
 63523          Origin: origin,
 63524          Path: path,
 63525          'Status code': statusCode,
 63526          Persistent: persist ? '✅' : '❌',
 63527          Invocations: timesInvoked,
 63528          Remaining: persist ? Infinity : times - timesInvoked
 63529        }))
 63530  
 63531      this.logger.table(withPrettyHeaders)
 63532      return this.transform.read().toString()
 63533    }
 63534  }
 63535  
 63536  
 63537  /***/ }),
 63538  
 63539  /***/ 78891:
 63540  /***/ ((module) => {
 63541  
 63542  "use strict";
 63543  
 63544  
 63545  const singulars = {
 63546    pronoun: 'it',
 63547    is: 'is',
 63548    was: 'was',
 63549    this: 'this'
 63550  }
 63551  
 63552  const plurals = {
 63553    pronoun: 'they',
 63554    is: 'are',
 63555    was: 'were',
 63556    this: 'these'
 63557  }
 63558  
 63559  module.exports = class Pluralizer {
 63560    constructor (singular, plural) {
 63561      this.singular = singular
 63562      this.plural = plural
 63563    }
 63564  
 63565    pluralize (count) {
 63566      const one = count === 1
 63567      const keys = one ? singulars : plurals
 63568      const noun = one ? this.singular : this.plural
 63569      return { ...keys, count, noun }
 63570    }
 63571  }
 63572  
 63573  
 63574  /***/ }),
 63575  
 63576  /***/ 68266:
 63577  /***/ ((module) => {
 63578  
 63579  "use strict";
 63580  /* eslint-disable */
 63581  
 63582  
 63583  
 63584  // Extracted from node/lib/internal/fixed_queue.js
 63585  
 63586  // Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two.
 63587  const kSize = 2048;
 63588  const kMask = kSize - 1;
 63589  
 63590  // The FixedQueue is implemented as a singly-linked list of fixed-size
 63591  // circular buffers. It looks something like this:
 63592  //
 63593  //  head                                                       tail
 63594  //    |                                                          |
 63595  //    v                                                          v
 63596  // +-----------+ <-----\       +-----------+ <------\         +-----------+
 63597  // |  [null]   |        \----- |   next    |         \------- |   next    |
 63598  // +-----------+               +-----------+                  +-----------+
 63599  // |   item    | <-- bottom    |   item    | <-- bottom       |  [empty]  |
 63600  // |   item    |               |   item    |                  |  [empty]  |
 63601  // |   item    |               |   item    |                  |  [empty]  |
 63602  // |   item    |               |   item    |                  |  [empty]  |
 63603  // |   item    |               |   item    |       bottom --> |   item    |
 63604  // |   item    |               |   item    |                  |   item    |
 63605  // |    ...    |               |    ...    |                  |    ...    |
 63606  // |   item    |               |   item    |                  |   item    |
 63607  // |   item    |               |   item    |                  |   item    |
 63608  // |  [empty]  | <-- top       |   item    |                  |   item    |
 63609  // |  [empty]  |               |   item    |                  |   item    |
 63610  // |  [empty]  |               |  [empty]  | <-- top  top --> |  [empty]  |
 63611  // +-----------+               +-----------+                  +-----------+
 63612  //
 63613  // Or, if there is only one circular buffer, it looks something
 63614  // like either of these:
 63615  //
 63616  //  head   tail                                 head   tail
 63617  //    |     |                                     |     |
 63618  //    v     v                                     v     v
 63619  // +-----------+                               +-----------+
 63620  // |  [null]   |                               |  [null]   |
 63621  // +-----------+                               +-----------+
 63622  // |  [empty]  |                               |   item    |
 63623  // |  [empty]  |                               |   item    |
 63624  // |   item    | <-- bottom            top --> |  [empty]  |
 63625  // |   item    |                               |  [empty]  |
 63626  // |  [empty]  | <-- top            bottom --> |   item    |
 63627  // |  [empty]  |                               |   item    |
 63628  // +-----------+                               +-----------+
 63629  //
 63630  // Adding a value means moving `top` forward by one, removing means
 63631  // moving `bottom` forward by one. After reaching the end, the queue
 63632  // wraps around.
 63633  //
 63634  // When `top === bottom` the current queue is empty and when
 63635  // `top + 1 === bottom` it's full. This wastes a single space of storage
 63636  // but allows much quicker checks.
 63637  
 63638  class FixedCircularBuffer {
 63639    constructor() {
 63640      this.bottom = 0;
 63641      this.top = 0;
 63642      this.list = new Array(kSize);
 63643      this.next = null;
 63644    }
 63645  
 63646    isEmpty() {
 63647      return this.top === this.bottom;
 63648    }
 63649  
 63650    isFull() {
 63651      return ((this.top + 1) & kMask) === this.bottom;
 63652    }
 63653  
 63654    push(data) {
 63655      this.list[this.top] = data;
 63656      this.top = (this.top + 1) & kMask;
 63657    }
 63658  
 63659    shift() {
 63660      const nextItem = this.list[this.bottom];
 63661      if (nextItem === undefined)
 63662        return null;
 63663      this.list[this.bottom] = undefined;
 63664      this.bottom = (this.bottom + 1) & kMask;
 63665      return nextItem;
 63666    }
 63667  }
 63668  
 63669  module.exports = class FixedQueue {
 63670    constructor() {
 63671      this.head = this.tail = new FixedCircularBuffer();
 63672    }
 63673  
 63674    isEmpty() {
 63675      return this.head.isEmpty();
 63676    }
 63677  
 63678    push(data) {
 63679      if (this.head.isFull()) {
 63680        // Head is full: Creates a new queue, sets the old queue's `.next` to it,
 63681        // and sets it as the new main queue.
 63682        this.head = this.head.next = new FixedCircularBuffer();
 63683      }
 63684      this.head.push(data);
 63685    }
 63686  
 63687    shift() {
 63688      const tail = this.tail;
 63689      const next = tail.shift();
 63690      if (tail.isEmpty() && tail.next !== null) {
 63691        // If there is another queue, it forms the new tail.
 63692        this.tail = tail.next;
 63693      }
 63694      return next;
 63695    }
 63696  };
 63697  
 63698  
 63699  /***/ }),
 63700  
 63701  /***/ 73198:
 63702  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 63703  
 63704  "use strict";
 63705  
 63706  
 63707  const DispatcherBase = __nccwpck_require__(74839)
 63708  const FixedQueue = __nccwpck_require__(68266)
 63709  const { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = __nccwpck_require__(72785)
 63710  const PoolStats = __nccwpck_require__(39689)
 63711  
 63712  const kClients = Symbol('clients')
 63713  const kNeedDrain = Symbol('needDrain')
 63714  const kQueue = Symbol('queue')
 63715  const kClosedResolve = Symbol('closed resolve')
 63716  const kOnDrain = Symbol('onDrain')
 63717  const kOnConnect = Symbol('onConnect')
 63718  const kOnDisconnect = Symbol('onDisconnect')
 63719  const kOnConnectionError = Symbol('onConnectionError')
 63720  const kGetDispatcher = Symbol('get dispatcher')
 63721  const kAddClient = Symbol('add client')
 63722  const kRemoveClient = Symbol('remove client')
 63723  const kStats = Symbol('stats')
 63724  
 63725  class PoolBase extends DispatcherBase {
 63726    constructor () {
 63727      super()
 63728  
 63729      this[kQueue] = new FixedQueue()
 63730      this[kClients] = []
 63731      this[kQueued] = 0
 63732  
 63733      const pool = this
 63734  
 63735      this[kOnDrain] = function onDrain (origin, targets) {
 63736        const queue = pool[kQueue]
 63737  
 63738        let needDrain = false
 63739  
 63740        while (!needDrain) {
 63741          const item = queue.shift()
 63742          if (!item) {
 63743            break
 63744          }
 63745          pool[kQueued]--
 63746          needDrain = !this.dispatch(item.opts, item.handler)
 63747        }
 63748  
 63749        this[kNeedDrain] = needDrain
 63750  
 63751        if (!this[kNeedDrain] && pool[kNeedDrain]) {
 63752          pool[kNeedDrain] = false
 63753          pool.emit('drain', origin, [pool, ...targets])
 63754        }
 63755  
 63756        if (pool[kClosedResolve] && queue.isEmpty()) {
 63757          Promise
 63758            .all(pool[kClients].map(c => c.close()))
 63759            .then(pool[kClosedResolve])
 63760        }
 63761      }
 63762  
 63763      this[kOnConnect] = (origin, targets) => {
 63764        pool.emit('connect', origin, [pool, ...targets])
 63765      }
 63766  
 63767      this[kOnDisconnect] = (origin, targets, err) => {
 63768        pool.emit('disconnect', origin, [pool, ...targets], err)
 63769      }
 63770  
 63771      this[kOnConnectionError] = (origin, targets, err) => {
 63772        pool.emit('connectionError', origin, [pool, ...targets], err)
 63773      }
 63774  
 63775      this[kStats] = new PoolStats(this)
 63776    }
 63777  
 63778    get [kBusy] () {
 63779      return this[kNeedDrain]
 63780    }
 63781  
 63782    get [kConnected] () {
 63783      return this[kClients].filter(client => client[kConnected]).length
 63784    }
 63785  
 63786    get [kFree] () {
 63787      return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length
 63788    }
 63789  
 63790    get [kPending] () {
 63791      let ret = this[kQueued]
 63792      for (const { [kPending]: pending } of this[kClients]) {
 63793        ret += pending
 63794      }
 63795      return ret
 63796    }
 63797  
 63798    get [kRunning] () {
 63799      let ret = 0
 63800      for (const { [kRunning]: running } of this[kClients]) {
 63801        ret += running
 63802      }
 63803      return ret
 63804    }
 63805  
 63806    get [kSize] () {
 63807      let ret = this[kQueued]
 63808      for (const { [kSize]: size } of this[kClients]) {
 63809        ret += size
 63810      }
 63811      return ret
 63812    }
 63813  
 63814    get stats () {
 63815      return this[kStats]
 63816    }
 63817  
 63818    async [kClose] () {
 63819      if (this[kQueue].isEmpty()) {
 63820        return Promise.all(this[kClients].map(c => c.close()))
 63821      } else {
 63822        return new Promise((resolve) => {
 63823          this[kClosedResolve] = resolve
 63824        })
 63825      }
 63826    }
 63827  
 63828    async [kDestroy] (err) {
 63829      while (true) {
 63830        const item = this[kQueue].shift()
 63831        if (!item) {
 63832          break
 63833        }
 63834        item.handler.onError(err)
 63835      }
 63836  
 63837      return Promise.all(this[kClients].map(c => c.destroy(err)))
 63838    }
 63839  
 63840    [kDispatch] (opts, handler) {
 63841      const dispatcher = this[kGetDispatcher]()
 63842  
 63843      if (!dispatcher) {
 63844        this[kNeedDrain] = true
 63845        this[kQueue].push({ opts, handler })
 63846        this[kQueued]++
 63847      } else if (!dispatcher.dispatch(opts, handler)) {
 63848        dispatcher[kNeedDrain] = true
 63849        this[kNeedDrain] = !this[kGetDispatcher]()
 63850      }
 63851  
 63852      return !this[kNeedDrain]
 63853    }
 63854  
 63855    [kAddClient] (client) {
 63856      client
 63857        .on('drain', this[kOnDrain])
 63858        .on('connect', this[kOnConnect])
 63859        .on('disconnect', this[kOnDisconnect])
 63860        .on('connectionError', this[kOnConnectionError])
 63861  
 63862      this[kClients].push(client)
 63863  
 63864      if (this[kNeedDrain]) {
 63865        process.nextTick(() => {
 63866          if (this[kNeedDrain]) {
 63867            this[kOnDrain](client[kUrl], [this, client])
 63868          }
 63869        })
 63870      }
 63871  
 63872      return this
 63873    }
 63874  
 63875    [kRemoveClient] (client) {
 63876      client.close(() => {
 63877        const idx = this[kClients].indexOf(client)
 63878        if (idx !== -1) {
 63879          this[kClients].splice(idx, 1)
 63880        }
 63881      })
 63882  
 63883      this[kNeedDrain] = this[kClients].some(dispatcher => (
 63884        !dispatcher[kNeedDrain] &&
 63885        dispatcher.closed !== true &&
 63886        dispatcher.destroyed !== true
 63887      ))
 63888    }
 63889  }
 63890  
 63891  module.exports = {
 63892    PoolBase,
 63893    kClients,
 63894    kNeedDrain,
 63895    kAddClient,
 63896    kRemoveClient,
 63897    kGetDispatcher
 63898  }
 63899  
 63900  
 63901  /***/ }),
 63902  
 63903  /***/ 39689:
 63904  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 63905  
 63906  const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = __nccwpck_require__(72785)
 63907  const kPool = Symbol('pool')
 63908  
 63909  class PoolStats {
 63910    constructor (pool) {
 63911      this[kPool] = pool
 63912    }
 63913  
 63914    get connected () {
 63915      return this[kPool][kConnected]
 63916    }
 63917  
 63918    get free () {
 63919      return this[kPool][kFree]
 63920    }
 63921  
 63922    get pending () {
 63923      return this[kPool][kPending]
 63924    }
 63925  
 63926    get queued () {
 63927      return this[kPool][kQueued]
 63928    }
 63929  
 63930    get running () {
 63931      return this[kPool][kRunning]
 63932    }
 63933  
 63934    get size () {
 63935      return this[kPool][kSize]
 63936    }
 63937  }
 63938  
 63939  module.exports = PoolStats
 63940  
 63941  
 63942  /***/ }),
 63943  
 63944  /***/ 4634:
 63945  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 63946  
 63947  "use strict";
 63948  
 63949  
 63950  const {
 63951    PoolBase,
 63952    kClients,
 63953    kNeedDrain,
 63954    kAddClient,
 63955    kGetDispatcher
 63956  } = __nccwpck_require__(73198)
 63957  const Client = __nccwpck_require__(33598)
 63958  const {
 63959    InvalidArgumentError
 63960  } = __nccwpck_require__(48045)
 63961  const util = __nccwpck_require__(83983)
 63962  const { kUrl, kInterceptors } = __nccwpck_require__(72785)
 63963  const buildConnector = __nccwpck_require__(82067)
 63964  
 63965  const kOptions = Symbol('options')
 63966  const kConnections = Symbol('connections')
 63967  const kFactory = Symbol('factory')
 63968  
 63969  function defaultFactory (origin, opts) {
 63970    return new Client(origin, opts)
 63971  }
 63972  
 63973  class Pool extends PoolBase {
 63974    constructor (origin, {
 63975      connections,
 63976      factory = defaultFactory,
 63977      connect,
 63978      connectTimeout,
 63979      tls,
 63980      maxCachedSessions,
 63981      socketPath,
 63982      autoSelectFamily,
 63983      autoSelectFamilyAttemptTimeout,
 63984      allowH2,
 63985      ...options
 63986    } = {}) {
 63987      super()
 63988  
 63989      if (connections != null && (!Number.isFinite(connections) || connections < 0)) {
 63990        throw new InvalidArgumentError('invalid connections')
 63991      }
 63992  
 63993      if (typeof factory !== 'function') {
 63994        throw new InvalidArgumentError('factory must be a function.')
 63995      }
 63996  
 63997      if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {
 63998        throw new InvalidArgumentError('connect must be a function or an object')
 63999      }
 64000  
 64001      if (typeof connect !== 'function') {
 64002        connect = buildConnector({
 64003          ...tls,
 64004          maxCachedSessions,
 64005          allowH2,
 64006          socketPath,
 64007          timeout: connectTimeout,
 64008          ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),
 64009          ...connect
 64010        })
 64011      }
 64012  
 64013      this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool)
 64014        ? options.interceptors.Pool
 64015        : []
 64016      this[kConnections] = connections || null
 64017      this[kUrl] = util.parseOrigin(origin)
 64018      this[kOptions] = { ...util.deepClone(options), connect, allowH2 }
 64019      this[kOptions].interceptors = options.interceptors
 64020        ? { ...options.interceptors }
 64021        : undefined
 64022      this[kFactory] = factory
 64023    }
 64024  
 64025    [kGetDispatcher] () {
 64026      let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain])
 64027  
 64028      if (dispatcher) {
 64029        return dispatcher
 64030      }
 64031  
 64032      if (!this[kConnections] || this[kClients].length < this[kConnections]) {
 64033        dispatcher = this[kFactory](this[kUrl], this[kOptions])
 64034        this[kAddClient](dispatcher)
 64035      }
 64036  
 64037      return dispatcher
 64038    }
 64039  }
 64040  
 64041  module.exports = Pool
 64042  
 64043  
 64044  /***/ }),
 64045  
 64046  /***/ 97858:
 64047  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 64048  
 64049  "use strict";
 64050  
 64051  
 64052  const { kProxy, kClose, kDestroy, kInterceptors } = __nccwpck_require__(72785)
 64053  const { URL } = __nccwpck_require__(57310)
 64054  const Agent = __nccwpck_require__(7890)
 64055  const Pool = __nccwpck_require__(4634)
 64056  const DispatcherBase = __nccwpck_require__(74839)
 64057  const { InvalidArgumentError, RequestAbortedError } = __nccwpck_require__(48045)
 64058  const buildConnector = __nccwpck_require__(82067)
 64059  
 64060  const kAgent = Symbol('proxy agent')
 64061  const kClient = Symbol('proxy client')
 64062  const kProxyHeaders = Symbol('proxy headers')
 64063  const kRequestTls = Symbol('request tls settings')
 64064  const kProxyTls = Symbol('proxy tls settings')
 64065  const kConnectEndpoint = Symbol('connect endpoint function')
 64066  
 64067  function defaultProtocolPort (protocol) {
 64068    return protocol === 'https:' ? 443 : 80
 64069  }
 64070  
 64071  function buildProxyOptions (opts) {
 64072    if (typeof opts === 'string') {
 64073      opts = { uri: opts }
 64074    }
 64075  
 64076    if (!opts || !opts.uri) {
 64077      throw new InvalidArgumentError('Proxy opts.uri is mandatory')
 64078    }
 64079  
 64080    return {
 64081      uri: opts.uri,
 64082      protocol: opts.protocol || 'https'
 64083    }
 64084  }
 64085  
 64086  function defaultFactory (origin, opts) {
 64087    return new Pool(origin, opts)
 64088  }
 64089  
 64090  class ProxyAgent extends DispatcherBase {
 64091    constructor (opts) {
 64092      super(opts)
 64093      this[kProxy] = buildProxyOptions(opts)
 64094      this[kAgent] = new Agent(opts)
 64095      this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent)
 64096        ? opts.interceptors.ProxyAgent
 64097        : []
 64098  
 64099      if (typeof opts === 'string') {
 64100        opts = { uri: opts }
 64101      }
 64102  
 64103      if (!opts || !opts.uri) {
 64104        throw new InvalidArgumentError('Proxy opts.uri is mandatory')
 64105      }
 64106  
 64107      const { clientFactory = defaultFactory } = opts
 64108  
 64109      if (typeof clientFactory !== 'function') {
 64110        throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')
 64111      }
 64112  
 64113      this[kRequestTls] = opts.requestTls
 64114      this[kProxyTls] = opts.proxyTls
 64115      this[kProxyHeaders] = opts.headers || {}
 64116  
 64117      const resolvedUrl = new URL(opts.uri)
 64118      const { origin, port, host, username, password } = resolvedUrl
 64119  
 64120      if (opts.auth && opts.token) {
 64121        throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')
 64122      } else if (opts.auth) {
 64123        /* @deprecated in favour of opts.token */
 64124        this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`
 64125      } else if (opts.token) {
 64126        this[kProxyHeaders]['proxy-authorization'] = opts.token
 64127      } else if (username && password) {
 64128        this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`
 64129      }
 64130  
 64131      const connect = buildConnector({ ...opts.proxyTls })
 64132      this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })
 64133      this[kClient] = clientFactory(resolvedUrl, { connect })
 64134      this[kAgent] = new Agent({
 64135        ...opts,
 64136        connect: async (opts, callback) => {
 64137          let requestedHost = opts.host
 64138          if (!opts.port) {
 64139            requestedHost += `:${defaultProtocolPort(opts.protocol)}`
 64140          }
 64141          try {
 64142            const { socket, statusCode } = await this[kClient].connect({
 64143              origin,
 64144              port,
 64145              path: requestedHost,
 64146              signal: opts.signal,
 64147              headers: {
 64148                ...this[kProxyHeaders],
 64149                host
 64150              }
 64151            })
 64152            if (statusCode !== 200) {
 64153              socket.on('error', () => {}).destroy()
 64154              callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))
 64155            }
 64156            if (opts.protocol !== 'https:') {
 64157              callback(null, socket)
 64158              return
 64159            }
 64160            let servername
 64161            if (this[kRequestTls]) {
 64162              servername = this[kRequestTls].servername
 64163            } else {
 64164              servername = opts.servername
 64165            }
 64166            this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback)
 64167          } catch (err) {
 64168            callback(err)
 64169          }
 64170        }
 64171      })
 64172    }
 64173  
 64174    dispatch (opts, handler) {
 64175      const { host } = new URL(opts.origin)
 64176      const headers = buildHeaders(opts.headers)
 64177      throwIfProxyAuthIsSent(headers)
 64178      return this[kAgent].dispatch(
 64179        {
 64180          ...opts,
 64181          headers: {
 64182            ...headers,
 64183            host
 64184          }
 64185        },
 64186        handler
 64187      )
 64188    }
 64189  
 64190    async [kClose] () {
 64191      await this[kAgent].close()
 64192      await this[kClient].close()
 64193    }
 64194  
 64195    async [kDestroy] () {
 64196      await this[kAgent].destroy()
 64197      await this[kClient].destroy()
 64198    }
 64199  }
 64200  
 64201  /**
 64202   * @param {string[] | Record<string, string>} headers
 64203   * @returns {Record<string, string>}
 64204   */
 64205  function buildHeaders (headers) {
 64206    // When using undici.fetch, the headers list is stored
 64207    // as an array.
 64208    if (Array.isArray(headers)) {
 64209      /** @type {Record<string, string>} */
 64210      const headersPair = {}
 64211  
 64212      for (let i = 0; i < headers.length; i += 2) {
 64213        headersPair[headers[i]] = headers[i + 1]
 64214      }
 64215  
 64216      return headersPair
 64217    }
 64218  
 64219    return headers
 64220  }
 64221  
 64222  /**
 64223   * @param {Record<string, string>} headers
 64224   *
 64225   * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers
 64226   * Nevertheless, it was changed and to avoid a security vulnerability by end users
 64227   * this check was created.
 64228   * It should be removed in the next major version for performance reasons
 64229   */
 64230  function throwIfProxyAuthIsSent (headers) {
 64231    const existProxyAuth = headers && Object.keys(headers)
 64232      .find((key) => key.toLowerCase() === 'proxy-authorization')
 64233    if (existProxyAuth) {
 64234      throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor')
 64235    }
 64236  }
 64237  
 64238  module.exports = ProxyAgent
 64239  
 64240  
 64241  /***/ }),
 64242  
 64243  /***/ 29459:
 64244  /***/ ((module) => {
 64245  
 64246  "use strict";
 64247  
 64248  
 64249  let fastNow = Date.now()
 64250  let fastNowTimeout
 64251  
 64252  const fastTimers = []
 64253  
 64254  function onTimeout () {
 64255    fastNow = Date.now()
 64256  
 64257    let len = fastTimers.length
 64258    let idx = 0
 64259    while (idx < len) {
 64260      const timer = fastTimers[idx]
 64261  
 64262      if (timer.state === 0) {
 64263        timer.state = fastNow + timer.delay
 64264      } else if (timer.state > 0 && fastNow >= timer.state) {
 64265        timer.state = -1
 64266        timer.callback(timer.opaque)
 64267      }
 64268  
 64269      if (timer.state === -1) {
 64270        timer.state = -2
 64271        if (idx !== len - 1) {
 64272          fastTimers[idx] = fastTimers.pop()
 64273        } else {
 64274          fastTimers.pop()
 64275        }
 64276        len -= 1
 64277      } else {
 64278        idx += 1
 64279      }
 64280    }
 64281  
 64282    if (fastTimers.length > 0) {
 64283      refreshTimeout()
 64284    }
 64285  }
 64286  
 64287  function refreshTimeout () {
 64288    if (fastNowTimeout && fastNowTimeout.refresh) {
 64289      fastNowTimeout.refresh()
 64290    } else {
 64291      clearTimeout(fastNowTimeout)
 64292      fastNowTimeout = setTimeout(onTimeout, 1e3)
 64293      if (fastNowTimeout.unref) {
 64294        fastNowTimeout.unref()
 64295      }
 64296    }
 64297  }
 64298  
 64299  class Timeout {
 64300    constructor (callback, delay, opaque) {
 64301      this.callback = callback
 64302      this.delay = delay
 64303      this.opaque = opaque
 64304  
 64305      //  -2 not in timer list
 64306      //  -1 in timer list but inactive
 64307      //   0 in timer list waiting for time
 64308      // > 0 in timer list waiting for time to expire
 64309      this.state = -2
 64310  
 64311      this.refresh()
 64312    }
 64313  
 64314    refresh () {
 64315      if (this.state === -2) {
 64316        fastTimers.push(this)
 64317        if (!fastNowTimeout || fastTimers.length === 1) {
 64318          refreshTimeout()
 64319        }
 64320      }
 64321  
 64322      this.state = 0
 64323    }
 64324  
 64325    clear () {
 64326      this.state = -1
 64327    }
 64328  }
 64329  
 64330  module.exports = {
 64331    setTimeout (callback, delay, opaque) {
 64332      return delay < 1e3
 64333        ? setTimeout(callback, delay, opaque)
 64334        : new Timeout(callback, delay, opaque)
 64335    },
 64336    clearTimeout (timeout) {
 64337      if (timeout instanceof Timeout) {
 64338        timeout.clear()
 64339      } else {
 64340        clearTimeout(timeout)
 64341      }
 64342    }
 64343  }
 64344  
 64345  
 64346  /***/ }),
 64347  
 64348  /***/ 35354:
 64349  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 64350  
 64351  "use strict";
 64352  
 64353  
 64354  const diagnosticsChannel = __nccwpck_require__(67643)
 64355  const { uid, states } = __nccwpck_require__(19188)
 64356  const {
 64357    kReadyState,
 64358    kSentClose,
 64359    kByteParser,
 64360    kReceivedClose
 64361  } = __nccwpck_require__(37578)
 64362  const { fireEvent, failWebsocketConnection } = __nccwpck_require__(25515)
 64363  const { CloseEvent } = __nccwpck_require__(52611)
 64364  const { makeRequest } = __nccwpck_require__(48359)
 64365  const { fetching } = __nccwpck_require__(74881)
 64366  const { Headers } = __nccwpck_require__(10554)
 64367  const { getGlobalDispatcher } = __nccwpck_require__(21892)
 64368  const { kHeadersList } = __nccwpck_require__(72785)
 64369  
 64370  const channels = {}
 64371  channels.open = diagnosticsChannel.channel('undici:websocket:open')
 64372  channels.close = diagnosticsChannel.channel('undici:websocket:close')
 64373  channels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error')
 64374  
 64375  /** @type {import('crypto')} */
 64376  let crypto
 64377  try {
 64378    crypto = __nccwpck_require__(6113)
 64379  } catch {
 64380  
 64381  }
 64382  
 64383  /**
 64384   * @see https://websockets.spec.whatwg.org/#concept-websocket-establish
 64385   * @param {URL} url
 64386   * @param {string|string[]} protocols
 64387   * @param {import('./websocket').WebSocket} ws
 64388   * @param {(response: any) => void} onEstablish
 64389   * @param {Partial<import('../../types/websocket').WebSocketInit>} options
 64390   */
 64391  function establishWebSocketConnection (url, protocols, ws, onEstablish, options) {
 64392    // 1. Let requestURL be a copy of url, with its scheme set to "http", if url’s
 64393    //    scheme is "ws", and to "https" otherwise.
 64394    const requestURL = url
 64395  
 64396    requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'
 64397  
 64398    // 2. Let request be a new request, whose URL is requestURL, client is client,
 64399    //    service-workers mode is "none", referrer is "no-referrer", mode is
 64400    //    "websocket", credentials mode is "include", cache mode is "no-store" ,
 64401    //    and redirect mode is "error".
 64402    const request = makeRequest({
 64403      urlList: [requestURL],
 64404      serviceWorkers: 'none',
 64405      referrer: 'no-referrer',
 64406      mode: 'websocket',
 64407      credentials: 'include',
 64408      cache: 'no-store',
 64409      redirect: 'error'
 64410    })
 64411  
 64412    // Note: undici extension, allow setting custom headers.
 64413    if (options.headers) {
 64414      const headersList = new Headers(options.headers)[kHeadersList]
 64415  
 64416      request.headersList = headersList
 64417    }
 64418  
 64419    // 3. Append (`Upgrade`, `websocket`) to request’s header list.
 64420    // 4. Append (`Connection`, `Upgrade`) to request’s header list.
 64421    // Note: both of these are handled by undici currently.
 64422    // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397
 64423  
 64424    // 5. Let keyValue be a nonce consisting of a randomly selected
 64425    //    16-byte value that has been forgiving-base64-encoded and
 64426    //    isomorphic encoded.
 64427    const keyValue = crypto.randomBytes(16).toString('base64')
 64428  
 64429    // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s
 64430    //    header list.
 64431    request.headersList.append('sec-websocket-key', keyValue)
 64432  
 64433    // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s
 64434    //    header list.
 64435    request.headersList.append('sec-websocket-version', '13')
 64436  
 64437    // 8. For each protocol in protocols, combine
 64438    //    (`Sec-WebSocket-Protocol`, protocol) in request’s header
 64439    //    list.
 64440    for (const protocol of protocols) {
 64441      request.headersList.append('sec-websocket-protocol', protocol)
 64442    }
 64443  
 64444    // 9. Let permessageDeflate be a user-agent defined
 64445    //    "permessage-deflate" extension header value.
 64446    // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673
 64447    // TODO: enable once permessage-deflate is supported
 64448    const permessageDeflate = '' // 'permessage-deflate; 15'
 64449  
 64450    // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to
 64451    //     request’s header list.
 64452    // request.headersList.append('sec-websocket-extensions', permessageDeflate)
 64453  
 64454    // 11. Fetch request with useParallelQueue set to true, and
 64455    //     processResponse given response being these steps:
 64456    const controller = fetching({
 64457      request,
 64458      useParallelQueue: true,
 64459      dispatcher: options.dispatcher ?? getGlobalDispatcher(),
 64460      processResponse (response) {
 64461        // 1. If response is a network error or its status is not 101,
 64462        //    fail the WebSocket connection.
 64463        if (response.type === 'error' || response.status !== 101) {
 64464          failWebsocketConnection(ws, 'Received network error or non-101 status code.')
 64465          return
 64466        }
 64467  
 64468        // 2. If protocols is not the empty list and extracting header
 64469        //    list values given `Sec-WebSocket-Protocol` and response’s
 64470        //    header list results in null, failure, or the empty byte
 64471        //    sequence, then fail the WebSocket connection.
 64472        if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {
 64473          failWebsocketConnection(ws, 'Server did not respond with sent protocols.')
 64474          return
 64475        }
 64476  
 64477        // 3. Follow the requirements stated step 2 to step 6, inclusive,
 64478        //    of the last set of steps in section 4.1 of The WebSocket
 64479        //    Protocol to validate response. This either results in fail
 64480        //    the WebSocket connection or the WebSocket connection is
 64481        //    established.
 64482  
 64483        // 2. If the response lacks an |Upgrade| header field or the |Upgrade|
 64484        //    header field contains a value that is not an ASCII case-
 64485        //    insensitive match for the value "websocket", the client MUST
 64486        //    _Fail the WebSocket Connection_.
 64487        if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {
 64488          failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".')
 64489          return
 64490        }
 64491  
 64492        // 3. If the response lacks a |Connection| header field or the
 64493        //    |Connection| header field doesn't contain a token that is an
 64494        //    ASCII case-insensitive match for the value "Upgrade", the client
 64495        //    MUST _Fail the WebSocket Connection_.
 64496        if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {
 64497          failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".')
 64498          return
 64499        }
 64500  
 64501        // 4. If the response lacks a |Sec-WebSocket-Accept| header field or
 64502        //    the |Sec-WebSocket-Accept| contains a value other than the
 64503        //    base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-
 64504        //    Key| (as a string, not base64-decoded) with the string "258EAFA5-
 64505        //    E914-47DA-95CA-C5AB0DC85B11" but ignoring any leading and
 64506        //    trailing whitespace, the client MUST _Fail the WebSocket
 64507        //    Connection_.
 64508        const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')
 64509        const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64')
 64510        if (secWSAccept !== digest) {
 64511          failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.')
 64512          return
 64513        }
 64514  
 64515        // 5. If the response includes a |Sec-WebSocket-Extensions| header
 64516        //    field and this header field indicates the use of an extension
 64517        //    that was not present in the client's handshake (the server has
 64518        //    indicated an extension not requested by the client), the client
 64519        //    MUST _Fail the WebSocket Connection_.  (The parsing of this
 64520        //    header field to determine which extensions are requested is
 64521        //    discussed in Section 9.1.)
 64522        const secExtension = response.headersList.get('Sec-WebSocket-Extensions')
 64523  
 64524        if (secExtension !== null && secExtension !== permessageDeflate) {
 64525          failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.')
 64526          return
 64527        }
 64528  
 64529        // 6. If the response includes a |Sec-WebSocket-Protocol| header field
 64530        //    and this header field indicates the use of a subprotocol that was
 64531        //    not present in the client's handshake (the server has indicated a
 64532        //    subprotocol not requested by the client), the client MUST _Fail
 64533        //    the WebSocket Connection_.
 64534        const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')
 64535  
 64536        if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) {
 64537          failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')
 64538          return
 64539        }
 64540  
 64541        response.socket.on('data', onSocketData)
 64542        response.socket.on('close', onSocketClose)
 64543        response.socket.on('error', onSocketError)
 64544  
 64545        if (channels.open.hasSubscribers) {
 64546          channels.open.publish({
 64547            address: response.socket.address(),
 64548            protocol: secProtocol,
 64549            extensions: secExtension
 64550          })
 64551        }
 64552  
 64553        onEstablish(response)
 64554      }
 64555    })
 64556  
 64557    return controller
 64558  }
 64559  
 64560  /**
 64561   * @param {Buffer} chunk
 64562   */
 64563  function onSocketData (chunk) {
 64564    if (!this.ws[kByteParser].write(chunk)) {
 64565      this.pause()
 64566    }
 64567  }
 64568  
 64569  /**
 64570   * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol
 64571   * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4
 64572   */
 64573  function onSocketClose () {
 64574    const { ws } = this
 64575  
 64576    // If the TCP connection was closed after the
 64577    // WebSocket closing handshake was completed, the WebSocket connection
 64578    // is said to have been closed _cleanly_.
 64579    const wasClean = ws[kSentClose] && ws[kReceivedClose]
 64580  
 64581    let code = 1005
 64582    let reason = ''
 64583  
 64584    const result = ws[kByteParser].closingInfo
 64585  
 64586    if (result) {
 64587      code = result.code ?? 1005
 64588      reason = result.reason
 64589    } else if (!ws[kSentClose]) {
 64590      // If _The WebSocket
 64591      // Connection is Closed_ and no Close control frame was received by the
 64592      // endpoint (such as could occur if the underlying transport connection
 64593      // is lost), _The WebSocket Connection Close Code_ is considered to be
 64594      // 1006.
 64595      code = 1006
 64596    }
 64597  
 64598    // 1. Change the ready state to CLOSED (3).
 64599    ws[kReadyState] = states.CLOSED
 64600  
 64601    // 2. If the user agent was required to fail the WebSocket
 64602    //    connection, or if the WebSocket connection was closed
 64603    //    after being flagged as full, fire an event named error
 64604    //    at the WebSocket object.
 64605    // TODO
 64606  
 64607    // 3. Fire an event named close at the WebSocket object,
 64608    //    using CloseEvent, with the wasClean attribute
 64609    //    initialized to true if the connection closed cleanly
 64610    //    and false otherwise, the code attribute initialized to
 64611    //    the WebSocket connection close code, and the reason
 64612    //    attribute initialized to the result of applying UTF-8
 64613    //    decode without BOM to the WebSocket connection close
 64614    //    reason.
 64615    fireEvent('close', ws, CloseEvent, {
 64616      wasClean, code, reason
 64617    })
 64618  
 64619    if (channels.close.hasSubscribers) {
 64620      channels.close.publish({
 64621        websocket: ws,
 64622        code,
 64623        reason
 64624      })
 64625    }
 64626  }
 64627  
 64628  function onSocketError (error) {
 64629    const { ws } = this
 64630  
 64631    ws[kReadyState] = states.CLOSING
 64632  
 64633    if (channels.socketError.hasSubscribers) {
 64634      channels.socketError.publish(error)
 64635    }
 64636  
 64637    this.destroy()
 64638  }
 64639  
 64640  module.exports = {
 64641    establishWebSocketConnection
 64642  }
 64643  
 64644  
 64645  /***/ }),
 64646  
 64647  /***/ 19188:
 64648  /***/ ((module) => {
 64649  
 64650  "use strict";
 64651  
 64652  
 64653  // This is a Globally Unique Identifier unique used
 64654  // to validate that the endpoint accepts websocket
 64655  // connections.
 64656  // See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3
 64657  const uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'
 64658  
 64659  /** @type {PropertyDescriptor} */
 64660  const staticPropertyDescriptors = {
 64661    enumerable: true,
 64662    writable: false,
 64663    configurable: false
 64664  }
 64665  
 64666  const states = {
 64667    CONNECTING: 0,
 64668    OPEN: 1,
 64669    CLOSING: 2,
 64670    CLOSED: 3
 64671  }
 64672  
 64673  const opcodes = {
 64674    CONTINUATION: 0x0,
 64675    TEXT: 0x1,
 64676    BINARY: 0x2,
 64677    CLOSE: 0x8,
 64678    PING: 0x9,
 64679    PONG: 0xA
 64680  }
 64681  
 64682  const maxUnsigned16Bit = 2 ** 16 - 1 // 65535
 64683  
 64684  const parserStates = {
 64685    INFO: 0,
 64686    PAYLOADLENGTH_16: 2,
 64687    PAYLOADLENGTH_64: 3,
 64688    READ_DATA: 4
 64689  }
 64690  
 64691  const emptyBuffer = Buffer.allocUnsafe(0)
 64692  
 64693  module.exports = {
 64694    uid,
 64695    staticPropertyDescriptors,
 64696    states,
 64697    opcodes,
 64698    maxUnsigned16Bit,
 64699    parserStates,
 64700    emptyBuffer
 64701  }
 64702  
 64703  
 64704  /***/ }),
 64705  
 64706  /***/ 52611:
 64707  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 64708  
 64709  "use strict";
 64710  
 64711  
 64712  const { webidl } = __nccwpck_require__(21744)
 64713  const { kEnumerableProperty } = __nccwpck_require__(83983)
 64714  const { MessagePort } = __nccwpck_require__(71267)
 64715  
 64716  /**
 64717   * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent
 64718   */
 64719  class MessageEvent extends Event {
 64720    #eventInit
 64721  
 64722    constructor (type, eventInitDict = {}) {
 64723      webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' })
 64724  
 64725      type = webidl.converters.DOMString(type)
 64726      eventInitDict = webidl.converters.MessageEventInit(eventInitDict)
 64727  
 64728      super(type, eventInitDict)
 64729  
 64730      this.#eventInit = eventInitDict
 64731    }
 64732  
 64733    get data () {
 64734      webidl.brandCheck(this, MessageEvent)
 64735  
 64736      return this.#eventInit.data
 64737    }
 64738  
 64739    get origin () {
 64740      webidl.brandCheck(this, MessageEvent)
 64741  
 64742      return this.#eventInit.origin
 64743    }
 64744  
 64745    get lastEventId () {
 64746      webidl.brandCheck(this, MessageEvent)
 64747  
 64748      return this.#eventInit.lastEventId
 64749    }
 64750  
 64751    get source () {
 64752      webidl.brandCheck(this, MessageEvent)
 64753  
 64754      return this.#eventInit.source
 64755    }
 64756  
 64757    get ports () {
 64758      webidl.brandCheck(this, MessageEvent)
 64759  
 64760      if (!Object.isFrozen(this.#eventInit.ports)) {
 64761        Object.freeze(this.#eventInit.ports)
 64762      }
 64763  
 64764      return this.#eventInit.ports
 64765    }
 64766  
 64767    initMessageEvent (
 64768      type,
 64769      bubbles = false,
 64770      cancelable = false,
 64771      data = null,
 64772      origin = '',
 64773      lastEventId = '',
 64774      source = null,
 64775      ports = []
 64776    ) {
 64777      webidl.brandCheck(this, MessageEvent)
 64778  
 64779      webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' })
 64780  
 64781      return new MessageEvent(type, {
 64782        bubbles, cancelable, data, origin, lastEventId, source, ports
 64783      })
 64784    }
 64785  }
 64786  
 64787  /**
 64788   * @see https://websockets.spec.whatwg.org/#the-closeevent-interface
 64789   */
 64790  class CloseEvent extends Event {
 64791    #eventInit
 64792  
 64793    constructor (type, eventInitDict = {}) {
 64794      webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' })
 64795  
 64796      type = webidl.converters.DOMString(type)
 64797      eventInitDict = webidl.converters.CloseEventInit(eventInitDict)
 64798  
 64799      super(type, eventInitDict)
 64800  
 64801      this.#eventInit = eventInitDict
 64802    }
 64803  
 64804    get wasClean () {
 64805      webidl.brandCheck(this, CloseEvent)
 64806  
 64807      return this.#eventInit.wasClean
 64808    }
 64809  
 64810    get code () {
 64811      webidl.brandCheck(this, CloseEvent)
 64812  
 64813      return this.#eventInit.code
 64814    }
 64815  
 64816    get reason () {
 64817      webidl.brandCheck(this, CloseEvent)
 64818  
 64819      return this.#eventInit.reason
 64820    }
 64821  }
 64822  
 64823  // https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface
 64824  class ErrorEvent extends Event {
 64825    #eventInit
 64826  
 64827    constructor (type, eventInitDict) {
 64828      webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' })
 64829  
 64830      super(type, eventInitDict)
 64831  
 64832      type = webidl.converters.DOMString(type)
 64833      eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {})
 64834  
 64835      this.#eventInit = eventInitDict
 64836    }
 64837  
 64838    get message () {
 64839      webidl.brandCheck(this, ErrorEvent)
 64840  
 64841      return this.#eventInit.message
 64842    }
 64843  
 64844    get filename () {
 64845      webidl.brandCheck(this, ErrorEvent)
 64846  
 64847      return this.#eventInit.filename
 64848    }
 64849  
 64850    get lineno () {
 64851      webidl.brandCheck(this, ErrorEvent)
 64852  
 64853      return this.#eventInit.lineno
 64854    }
 64855  
 64856    get colno () {
 64857      webidl.brandCheck(this, ErrorEvent)
 64858  
 64859      return this.#eventInit.colno
 64860    }
 64861  
 64862    get error () {
 64863      webidl.brandCheck(this, ErrorEvent)
 64864  
 64865      return this.#eventInit.error
 64866    }
 64867  }
 64868  
 64869  Object.defineProperties(MessageEvent.prototype, {
 64870    [Symbol.toStringTag]: {
 64871      value: 'MessageEvent',
 64872      configurable: true
 64873    },
 64874    data: kEnumerableProperty,
 64875    origin: kEnumerableProperty,
 64876    lastEventId: kEnumerableProperty,
 64877    source: kEnumerableProperty,
 64878    ports: kEnumerableProperty,
 64879    initMessageEvent: kEnumerableProperty
 64880  })
 64881  
 64882  Object.defineProperties(CloseEvent.prototype, {
 64883    [Symbol.toStringTag]: {
 64884      value: 'CloseEvent',
 64885      configurable: true
 64886    },
 64887    reason: kEnumerableProperty,
 64888    code: kEnumerableProperty,
 64889    wasClean: kEnumerableProperty
 64890  })
 64891  
 64892  Object.defineProperties(ErrorEvent.prototype, {
 64893    [Symbol.toStringTag]: {
 64894      value: 'ErrorEvent',
 64895      configurable: true
 64896    },
 64897    message: kEnumerableProperty,
 64898    filename: kEnumerableProperty,
 64899    lineno: kEnumerableProperty,
 64900    colno: kEnumerableProperty,
 64901    error: kEnumerableProperty
 64902  })
 64903  
 64904  webidl.converters.MessagePort = webidl.interfaceConverter(MessagePort)
 64905  
 64906  webidl.converters['sequence<MessagePort>'] = webidl.sequenceConverter(
 64907    webidl.converters.MessagePort
 64908  )
 64909  
 64910  const eventInit = [
 64911    {
 64912      key: 'bubbles',
 64913      converter: webidl.converters.boolean,
 64914      defaultValue: false
 64915    },
 64916    {
 64917      key: 'cancelable',
 64918      converter: webidl.converters.boolean,
 64919      defaultValue: false
 64920    },
 64921    {
 64922      key: 'composed',
 64923      converter: webidl.converters.boolean,
 64924      defaultValue: false
 64925    }
 64926  ]
 64927  
 64928  webidl.converters.MessageEventInit = webidl.dictionaryConverter([
 64929    ...eventInit,
 64930    {
 64931      key: 'data',
 64932      converter: webidl.converters.any,
 64933      defaultValue: null
 64934    },
 64935    {
 64936      key: 'origin',
 64937      converter: webidl.converters.USVString,
 64938      defaultValue: ''
 64939    },
 64940    {
 64941      key: 'lastEventId',
 64942      converter: webidl.converters.DOMString,
 64943      defaultValue: ''
 64944    },
 64945    {
 64946      key: 'source',
 64947      // Node doesn't implement WindowProxy or ServiceWorker, so the only
 64948      // valid value for source is a MessagePort.
 64949      converter: webidl.nullableConverter(webidl.converters.MessagePort),
 64950      defaultValue: null
 64951    },
 64952    {
 64953      key: 'ports',
 64954      converter: webidl.converters['sequence<MessagePort>'],
 64955      get defaultValue () {
 64956        return []
 64957      }
 64958    }
 64959  ])
 64960  
 64961  webidl.converters.CloseEventInit = webidl.dictionaryConverter([
 64962    ...eventInit,
 64963    {
 64964      key: 'wasClean',
 64965      converter: webidl.converters.boolean,
 64966      defaultValue: false
 64967    },
 64968    {
 64969      key: 'code',
 64970      converter: webidl.converters['unsigned short'],
 64971      defaultValue: 0
 64972    },
 64973    {
 64974      key: 'reason',
 64975      converter: webidl.converters.USVString,
 64976      defaultValue: ''
 64977    }
 64978  ])
 64979  
 64980  webidl.converters.ErrorEventInit = webidl.dictionaryConverter([
 64981    ...eventInit,
 64982    {
 64983      key: 'message',
 64984      converter: webidl.converters.DOMString,
 64985      defaultValue: ''
 64986    },
 64987    {
 64988      key: 'filename',
 64989      converter: webidl.converters.USVString,
 64990      defaultValue: ''
 64991    },
 64992    {
 64993      key: 'lineno',
 64994      converter: webidl.converters['unsigned long'],
 64995      defaultValue: 0
 64996    },
 64997    {
 64998      key: 'colno',
 64999      converter: webidl.converters['unsigned long'],
 65000      defaultValue: 0
 65001    },
 65002    {
 65003      key: 'error',
 65004      converter: webidl.converters.any
 65005    }
 65006  ])
 65007  
 65008  module.exports = {
 65009    MessageEvent,
 65010    CloseEvent,
 65011    ErrorEvent
 65012  }
 65013  
 65014  
 65015  /***/ }),
 65016  
 65017  /***/ 25444:
 65018  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 65019  
 65020  "use strict";
 65021  
 65022  
 65023  const { maxUnsigned16Bit } = __nccwpck_require__(19188)
 65024  
 65025  /** @type {import('crypto')} */
 65026  let crypto
 65027  try {
 65028    crypto = __nccwpck_require__(6113)
 65029  } catch {
 65030  
 65031  }
 65032  
 65033  class WebsocketFrameSend {
 65034    /**
 65035     * @param {Buffer|undefined} data
 65036     */
 65037    constructor (data) {
 65038      this.frameData = data
 65039      this.maskKey = crypto.randomBytes(4)
 65040    }
 65041  
 65042    createFrame (opcode) {
 65043      const bodyLength = this.frameData?.byteLength ?? 0
 65044  
 65045      /** @type {number} */
 65046      let payloadLength = bodyLength // 0-125
 65047      let offset = 6
 65048  
 65049      if (bodyLength > maxUnsigned16Bit) {
 65050        offset += 8 // payload length is next 8 bytes
 65051        payloadLength = 127
 65052      } else if (bodyLength > 125) {
 65053        offset += 2 // payload length is next 2 bytes
 65054        payloadLength = 126
 65055      }
 65056  
 65057      const buffer = Buffer.allocUnsafe(bodyLength + offset)
 65058  
 65059      // Clear first 2 bytes, everything else is overwritten
 65060      buffer[0] = buffer[1] = 0
 65061      buffer[0] |= 0x80 // FIN
 65062      buffer[0] = (buffer[0] & 0xF0) + opcode // opcode
 65063  
 65064      /*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */
 65065      buffer[offset - 4] = this.maskKey[0]
 65066      buffer[offset - 3] = this.maskKey[1]
 65067      buffer[offset - 2] = this.maskKey[2]
 65068      buffer[offset - 1] = this.maskKey[3]
 65069  
 65070      buffer[1] = payloadLength
 65071  
 65072      if (payloadLength === 126) {
 65073        buffer.writeUInt16BE(bodyLength, 2)
 65074      } else if (payloadLength === 127) {
 65075        // Clear extended payload length
 65076        buffer[2] = buffer[3] = 0
 65077        buffer.writeUIntBE(bodyLength, 4, 6)
 65078      }
 65079  
 65080      buffer[1] |= 0x80 // MASK
 65081  
 65082      // mask body
 65083      for (let i = 0; i < bodyLength; i++) {
 65084        buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]
 65085      }
 65086  
 65087      return buffer
 65088    }
 65089  }
 65090  
 65091  module.exports = {
 65092    WebsocketFrameSend
 65093  }
 65094  
 65095  
 65096  /***/ }),
 65097  
 65098  /***/ 11688:
 65099  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 65100  
 65101  "use strict";
 65102  
 65103  
 65104  const { Writable } = __nccwpck_require__(12781)
 65105  const diagnosticsChannel = __nccwpck_require__(67643)
 65106  const { parserStates, opcodes, states, emptyBuffer } = __nccwpck_require__(19188)
 65107  const { kReadyState, kSentClose, kResponse, kReceivedClose } = __nccwpck_require__(37578)
 65108  const { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = __nccwpck_require__(25515)
 65109  const { WebsocketFrameSend } = __nccwpck_require__(25444)
 65110  
 65111  // This code was influenced by ws released under the MIT license.
 65112  // Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com>
 65113  // Copyright (c) 2013 Arnout Kazemier and contributors
 65114  // Copyright (c) 2016 Luigi Pinca and contributors
 65115  
 65116  const channels = {}
 65117  channels.ping = diagnosticsChannel.channel('undici:websocket:ping')
 65118  channels.pong = diagnosticsChannel.channel('undici:websocket:pong')
 65119  
 65120  class ByteParser extends Writable {
 65121    #buffers = []
 65122    #byteOffset = 0
 65123  
 65124    #state = parserStates.INFO
 65125  
 65126    #info = {}
 65127    #fragments = []
 65128  
 65129    constructor (ws) {
 65130      super()
 65131  
 65132      this.ws = ws
 65133    }
 65134  
 65135    /**
 65136     * @param {Buffer} chunk
 65137     * @param {() => void} callback
 65138     */
 65139    _write (chunk, _, callback) {
 65140      this.#buffers.push(chunk)
 65141      this.#byteOffset += chunk.length
 65142  
 65143      this.run(callback)
 65144    }
 65145  
 65146    /**
 65147     * Runs whenever a new chunk is received.
 65148     * Callback is called whenever there are no more chunks buffering,
 65149     * or not enough bytes are buffered to parse.
 65150     */
 65151    run (callback) {
 65152      while (true) {
 65153        if (this.#state === parserStates.INFO) {
 65154          // If there aren't enough bytes to parse the payload length, etc.
 65155          if (this.#byteOffset < 2) {
 65156            return callback()
 65157          }
 65158  
 65159          const buffer = this.consume(2)
 65160  
 65161          this.#info.fin = (buffer[0] & 0x80) !== 0
 65162          this.#info.opcode = buffer[0] & 0x0F
 65163  
 65164          // If we receive a fragmented message, we use the type of the first
 65165          // frame to parse the full message as binary/text, when it's terminated
 65166          this.#info.originalOpcode ??= this.#info.opcode
 65167  
 65168          this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION
 65169  
 65170          if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) {
 65171            // Only text and binary frames can be fragmented
 65172            failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.')
 65173            return
 65174          }
 65175  
 65176          const payloadLength = buffer[1] & 0x7F
 65177  
 65178          if (payloadLength <= 125) {
 65179            this.#info.payloadLength = payloadLength
 65180            this.#state = parserStates.READ_DATA
 65181          } else if (payloadLength === 126) {
 65182            this.#state = parserStates.PAYLOADLENGTH_16
 65183          } else if (payloadLength === 127) {
 65184            this.#state = parserStates.PAYLOADLENGTH_64
 65185          }
 65186  
 65187          if (this.#info.fragmented && payloadLength > 125) {
 65188            // A fragmented frame can't be fragmented itself
 65189            failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.')
 65190            return
 65191          } else if (
 65192            (this.#info.opcode === opcodes.PING ||
 65193              this.#info.opcode === opcodes.PONG ||
 65194              this.#info.opcode === opcodes.CLOSE) &&
 65195            payloadLength > 125
 65196          ) {
 65197            // Control frames can have a payload length of 125 bytes MAX
 65198            failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.')
 65199            return
 65200          } else if (this.#info.opcode === opcodes.CLOSE) {
 65201            if (payloadLength === 1) {
 65202              failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.')
 65203              return
 65204            }
 65205  
 65206            const body = this.consume(payloadLength)
 65207  
 65208            this.#info.closeInfo = this.parseCloseBody(false, body)
 65209  
 65210            if (!this.ws[kSentClose]) {
 65211              // If an endpoint receives a Close frame and did not previously send a
 65212              // Close frame, the endpoint MUST send a Close frame in response.  (When
 65213              // sending a Close frame in response, the endpoint typically echos the
 65214              // status code it received.)
 65215              const body = Buffer.allocUnsafe(2)
 65216              body.writeUInt16BE(this.#info.closeInfo.code, 0)
 65217              const closeFrame = new WebsocketFrameSend(body)
 65218  
 65219              this.ws[kResponse].socket.write(
 65220                closeFrame.createFrame(opcodes.CLOSE),
 65221                (err) => {
 65222                  if (!err) {
 65223                    this.ws[kSentClose] = true
 65224                  }
 65225                }
 65226              )
 65227            }
 65228  
 65229            // Upon either sending or receiving a Close control frame, it is said
 65230            // that _The WebSocket Closing Handshake is Started_ and that the
 65231            // WebSocket connection is in the CLOSING state.
 65232            this.ws[kReadyState] = states.CLOSING
 65233            this.ws[kReceivedClose] = true
 65234  
 65235            this.end()
 65236  
 65237            return
 65238          } else if (this.#info.opcode === opcodes.PING) {
 65239            // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in
 65240            // response, unless it already received a Close frame.
 65241            // A Pong frame sent in response to a Ping frame must have identical
 65242            // "Application data"
 65243  
 65244            const body = this.consume(payloadLength)
 65245  
 65246            if (!this.ws[kReceivedClose]) {
 65247              const frame = new WebsocketFrameSend(body)
 65248  
 65249              this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG))
 65250  
 65251              if (channels.ping.hasSubscribers) {
 65252                channels.ping.publish({
 65253                  payload: body
 65254                })
 65255              }
 65256            }
 65257  
 65258            this.#state = parserStates.INFO
 65259  
 65260            if (this.#byteOffset > 0) {
 65261              continue
 65262            } else {
 65263              callback()
 65264              return
 65265            }
 65266          } else if (this.#info.opcode === opcodes.PONG) {
 65267            // A Pong frame MAY be sent unsolicited.  This serves as a
 65268            // unidirectional heartbeat.  A response to an unsolicited Pong frame is
 65269            // not expected.
 65270  
 65271            const body = this.consume(payloadLength)
 65272  
 65273            if (channels.pong.hasSubscribers) {
 65274              channels.pong.publish({
 65275                payload: body
 65276              })
 65277            }
 65278  
 65279            if (this.#byteOffset > 0) {
 65280              continue
 65281            } else {
 65282              callback()
 65283              return
 65284            }
 65285          }
 65286        } else if (this.#state === parserStates.PAYLOADLENGTH_16) {
 65287          if (this.#byteOffset < 2) {
 65288            return callback()
 65289          }
 65290  
 65291          const buffer = this.consume(2)
 65292  
 65293          this.#info.payloadLength = buffer.readUInt16BE(0)
 65294          this.#state = parserStates.READ_DATA
 65295        } else if (this.#state === parserStates.PAYLOADLENGTH_64) {
 65296          if (this.#byteOffset < 8) {
 65297            return callback()
 65298          }
 65299  
 65300          const buffer = this.consume(8)
 65301          const upper = buffer.readUInt32BE(0)
 65302  
 65303          // 2^31 is the maxinimum bytes an arraybuffer can contain
 65304          // on 32-bit systems. Although, on 64-bit systems, this is
 65305          // 2^53-1 bytes.
 65306          // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length
 65307          // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275
 65308          // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e
 65309          if (upper > 2 ** 31 - 1) {
 65310            failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.')
 65311            return
 65312          }
 65313  
 65314          const lower = buffer.readUInt32BE(4)
 65315  
 65316          this.#info.payloadLength = (upper << 8) + lower
 65317          this.#state = parserStates.READ_DATA
 65318        } else if (this.#state === parserStates.READ_DATA) {
 65319          if (this.#byteOffset < this.#info.payloadLength) {
 65320            // If there is still more data in this chunk that needs to be read
 65321            return callback()
 65322          } else if (this.#byteOffset >= this.#info.payloadLength) {
 65323            // If the server sent multiple frames in a single chunk
 65324  
 65325            const body = this.consume(this.#info.payloadLength)
 65326  
 65327            this.#fragments.push(body)
 65328  
 65329            // If the frame is unfragmented, or a fragmented frame was terminated,
 65330            // a message was received
 65331            if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) {
 65332              const fullMessage = Buffer.concat(this.#fragments)
 65333  
 65334              websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage)
 65335  
 65336              this.#info = {}
 65337              this.#fragments.length = 0
 65338            }
 65339  
 65340            this.#state = parserStates.INFO
 65341          }
 65342        }
 65343  
 65344        if (this.#byteOffset > 0) {
 65345          continue
 65346        } else {
 65347          callback()
 65348          break
 65349        }
 65350      }
 65351    }
 65352  
 65353    /**
 65354     * Take n bytes from the buffered Buffers
 65355     * @param {number} n
 65356     * @returns {Buffer|null}
 65357     */
 65358    consume (n) {
 65359      if (n > this.#byteOffset) {
 65360        return null
 65361      } else if (n === 0) {
 65362        return emptyBuffer
 65363      }
 65364  
 65365      if (this.#buffers[0].length === n) {
 65366        this.#byteOffset -= this.#buffers[0].length
 65367        return this.#buffers.shift()
 65368      }
 65369  
 65370      const buffer = Buffer.allocUnsafe(n)
 65371      let offset = 0
 65372  
 65373      while (offset !== n) {
 65374        const next = this.#buffers[0]
 65375        const { length } = next
 65376  
 65377        if (length + offset === n) {
 65378          buffer.set(this.#buffers.shift(), offset)
 65379          break
 65380        } else if (length + offset > n) {
 65381          buffer.set(next.subarray(0, n - offset), offset)
 65382          this.#buffers[0] = next.subarray(n - offset)
 65383          break
 65384        } else {
 65385          buffer.set(this.#buffers.shift(), offset)
 65386          offset += next.length
 65387        }
 65388      }
 65389  
 65390      this.#byteOffset -= n
 65391  
 65392      return buffer
 65393    }
 65394  
 65395    parseCloseBody (onlyCode, data) {
 65396      // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5
 65397      /** @type {number|undefined} */
 65398      let code
 65399  
 65400      if (data.length >= 2) {
 65401        // _The WebSocket Connection Close Code_ is
 65402        // defined as the status code (Section 7.4) contained in the first Close
 65403        // control frame received by the application
 65404        code = data.readUInt16BE(0)
 65405      }
 65406  
 65407      if (onlyCode) {
 65408        if (!isValidStatusCode(code)) {
 65409          return null
 65410        }
 65411  
 65412        return { code }
 65413      }
 65414  
 65415      // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6
 65416      /** @type {Buffer} */
 65417      let reason = data.subarray(2)
 65418  
 65419      // Remove BOM
 65420      if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) {
 65421        reason = reason.subarray(3)
 65422      }
 65423  
 65424      if (code !== undefined && !isValidStatusCode(code)) {
 65425        return null
 65426      }
 65427  
 65428      try {
 65429        // TODO: optimize this
 65430        reason = new TextDecoder('utf-8', { fatal: true }).decode(reason)
 65431      } catch {
 65432        return null
 65433      }
 65434  
 65435      return { code, reason }
 65436    }
 65437  
 65438    get closingInfo () {
 65439      return this.#info.closeInfo
 65440    }
 65441  }
 65442  
 65443  module.exports = {
 65444    ByteParser
 65445  }
 65446  
 65447  
 65448  /***/ }),
 65449  
 65450  /***/ 37578:
 65451  /***/ ((module) => {
 65452  
 65453  "use strict";
 65454  
 65455  
 65456  module.exports = {
 65457    kWebSocketURL: Symbol('url'),
 65458    kReadyState: Symbol('ready state'),
 65459    kController: Symbol('controller'),
 65460    kResponse: Symbol('response'),
 65461    kBinaryType: Symbol('binary type'),
 65462    kSentClose: Symbol('sent close'),
 65463    kReceivedClose: Symbol('received close'),
 65464    kByteParser: Symbol('byte parser')
 65465  }
 65466  
 65467  
 65468  /***/ }),
 65469  
 65470  /***/ 25515:
 65471  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 65472  
 65473  "use strict";
 65474  
 65475  
 65476  const { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = __nccwpck_require__(37578)
 65477  const { states, opcodes } = __nccwpck_require__(19188)
 65478  const { MessageEvent, ErrorEvent } = __nccwpck_require__(52611)
 65479  
 65480  /* globals Blob */
 65481  
 65482  /**
 65483   * @param {import('./websocket').WebSocket} ws
 65484   */
 65485  function isEstablished (ws) {
 65486    // If the server's response is validated as provided for above, it is
 65487    // said that _The WebSocket Connection is Established_ and that the
 65488    // WebSocket Connection is in the OPEN state.
 65489    return ws[kReadyState] === states.OPEN
 65490  }
 65491  
 65492  /**
 65493   * @param {import('./websocket').WebSocket} ws
 65494   */
 65495  function isClosing (ws) {
 65496    // Upon either sending or receiving a Close control frame, it is said
 65497    // that _The WebSocket Closing Handshake is Started_ and that the
 65498    // WebSocket connection is in the CLOSING state.
 65499    return ws[kReadyState] === states.CLOSING
 65500  }
 65501  
 65502  /**
 65503   * @param {import('./websocket').WebSocket} ws
 65504   */
 65505  function isClosed (ws) {
 65506    return ws[kReadyState] === states.CLOSED
 65507  }
 65508  
 65509  /**
 65510   * @see https://dom.spec.whatwg.org/#concept-event-fire
 65511   * @param {string} e
 65512   * @param {EventTarget} target
 65513   * @param {EventInit | undefined} eventInitDict
 65514   */
 65515  function fireEvent (e, target, eventConstructor = Event, eventInitDict) {
 65516    // 1. If eventConstructor is not given, then let eventConstructor be Event.
 65517  
 65518    // 2. Let event be the result of creating an event given eventConstructor,
 65519    //    in the relevant realm of target.
 65520    // 3. Initialize event’s type attribute to e.
 65521    const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap
 65522  
 65523    // 4. Initialize any other IDL attributes of event as described in the
 65524    //    invocation of this algorithm.
 65525  
 65526    // 5. Return the result of dispatching event at target, with legacy target
 65527    //    override flag set if set.
 65528    target.dispatchEvent(event)
 65529  }
 65530  
 65531  /**
 65532   * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol
 65533   * @param {import('./websocket').WebSocket} ws
 65534   * @param {number} type Opcode
 65535   * @param {Buffer} data application data
 65536   */
 65537  function websocketMessageReceived (ws, type, data) {
 65538    // 1. If ready state is not OPEN (1), then return.
 65539    if (ws[kReadyState] !== states.OPEN) {
 65540      return
 65541    }
 65542  
 65543    // 2. Let dataForEvent be determined by switching on type and binary type:
 65544    let dataForEvent
 65545  
 65546    if (type === opcodes.TEXT) {
 65547      // -> type indicates that the data is Text
 65548      //      a new DOMString containing data
 65549      try {
 65550        dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data)
 65551      } catch {
 65552        failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.')
 65553        return
 65554      }
 65555    } else if (type === opcodes.BINARY) {
 65556      if (ws[kBinaryType] === 'blob') {
 65557        // -> type indicates that the data is Binary and binary type is "blob"
 65558        //      a new Blob object, created in the relevant Realm of the WebSocket
 65559        //      object, that represents data as its raw data
 65560        dataForEvent = new Blob([data])
 65561      } else {
 65562        // -> type indicates that the data is Binary and binary type is "arraybuffer"
 65563        //      a new ArrayBuffer object, created in the relevant Realm of the
 65564        //      WebSocket object, whose contents are data
 65565        dataForEvent = new Uint8Array(data).buffer
 65566      }
 65567    }
 65568  
 65569    // 3. Fire an event named message at the WebSocket object, using MessageEvent,
 65570    //    with the origin attribute initialized to the serialization of the WebSocket
 65571    //    object’s url's origin, and the data attribute initialized to dataForEvent.
 65572    fireEvent('message', ws, MessageEvent, {
 65573      origin: ws[kWebSocketURL].origin,
 65574      data: dataForEvent
 65575    })
 65576  }
 65577  
 65578  /**
 65579   * @see https://datatracker.ietf.org/doc/html/rfc6455
 65580   * @see https://datatracker.ietf.org/doc/html/rfc2616
 65581   * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407
 65582   * @param {string} protocol
 65583   */
 65584  function isValidSubprotocol (protocol) {
 65585    // If present, this value indicates one
 65586    // or more comma-separated subprotocol the client wishes to speak,
 65587    // ordered by preference.  The elements that comprise this value
 65588    // MUST be non-empty strings with characters in the range U+0021 to
 65589    // U+007E not including separator characters as defined in
 65590    // [RFC2616] and MUST all be unique strings.
 65591    if (protocol.length === 0) {
 65592      return false
 65593    }
 65594  
 65595    for (const char of protocol) {
 65596      const code = char.charCodeAt(0)
 65597  
 65598      if (
 65599        code < 0x21 ||
 65600        code > 0x7E ||
 65601        char === '(' ||
 65602        char === ')' ||
 65603        char === '<' ||
 65604        char === '>' ||
 65605        char === '@' ||
 65606        char === ',' ||
 65607        char === ';' ||
 65608        char === ':' ||
 65609        char === '\\' ||
 65610        char === '"' ||
 65611        char === '/' ||
 65612        char === '[' ||
 65613        char === ']' ||
 65614        char === '?' ||
 65615        char === '=' ||
 65616        char === '{' ||
 65617        char === '}' ||
 65618        code === 32 || // SP
 65619        code === 9 // HT
 65620      ) {
 65621        return false
 65622      }
 65623    }
 65624  
 65625    return true
 65626  }
 65627  
 65628  /**
 65629   * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4
 65630   * @param {number} code
 65631   */
 65632  function isValidStatusCode (code) {
 65633    if (code >= 1000 && code < 1015) {
 65634      return (
 65635        code !== 1004 && // reserved
 65636        code !== 1005 && // "MUST NOT be set as a status code"
 65637        code !== 1006 // "MUST NOT be set as a status code"
 65638      )
 65639    }
 65640  
 65641    return code >= 3000 && code <= 4999
 65642  }
 65643  
 65644  /**
 65645   * @param {import('./websocket').WebSocket} ws
 65646   * @param {string|undefined} reason
 65647   */
 65648  function failWebsocketConnection (ws, reason) {
 65649    const { [kController]: controller, [kResponse]: response } = ws
 65650  
 65651    controller.abort()
 65652  
 65653    if (response?.socket && !response.socket.destroyed) {
 65654      response.socket.destroy()
 65655    }
 65656  
 65657    if (reason) {
 65658      fireEvent('error', ws, ErrorEvent, {
 65659        error: new Error(reason)
 65660      })
 65661    }
 65662  }
 65663  
 65664  module.exports = {
 65665    isEstablished,
 65666    isClosing,
 65667    isClosed,
 65668    fireEvent,
 65669    isValidSubprotocol,
 65670    isValidStatusCode,
 65671    failWebsocketConnection,
 65672    websocketMessageReceived
 65673  }
 65674  
 65675  
 65676  /***/ }),
 65677  
 65678  /***/ 54284:
 65679  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 65680  
 65681  "use strict";
 65682  
 65683  
 65684  const { webidl } = __nccwpck_require__(21744)
 65685  const { DOMException } = __nccwpck_require__(41037)
 65686  const { URLSerializer } = __nccwpck_require__(685)
 65687  const { getGlobalOrigin } = __nccwpck_require__(71246)
 65688  const { staticPropertyDescriptors, states, opcodes, emptyBuffer } = __nccwpck_require__(19188)
 65689  const {
 65690    kWebSocketURL,
 65691    kReadyState,
 65692    kController,
 65693    kBinaryType,
 65694    kResponse,
 65695    kSentClose,
 65696    kByteParser
 65697  } = __nccwpck_require__(37578)
 65698  const { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = __nccwpck_require__(25515)
 65699  const { establishWebSocketConnection } = __nccwpck_require__(35354)
 65700  const { WebsocketFrameSend } = __nccwpck_require__(25444)
 65701  const { ByteParser } = __nccwpck_require__(11688)
 65702  const { kEnumerableProperty, isBlobLike } = __nccwpck_require__(83983)
 65703  const { getGlobalDispatcher } = __nccwpck_require__(21892)
 65704  const { types } = __nccwpck_require__(73837)
 65705  
 65706  let experimentalWarned = false
 65707  
 65708  // https://websockets.spec.whatwg.org/#interface-definition
 65709  class WebSocket extends EventTarget {
 65710    #events = {
 65711      open: null,
 65712      error: null,
 65713      close: null,
 65714      message: null
 65715    }
 65716  
 65717    #bufferedAmount = 0
 65718    #protocol = ''
 65719    #extensions = ''
 65720  
 65721    /**
 65722     * @param {string} url
 65723     * @param {string|string[]} protocols
 65724     */
 65725    constructor (url, protocols = []) {
 65726      super()
 65727  
 65728      webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' })
 65729  
 65730      if (!experimentalWarned) {
 65731        experimentalWarned = true
 65732        process.emitWarning('WebSockets are experimental, expect them to change at any time.', {
 65733          code: 'UNDICI-WS'
 65734        })
 65735      }
 65736  
 65737      const options = webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'](protocols)
 65738  
 65739      url = webidl.converters.USVString(url)
 65740      protocols = options.protocols
 65741  
 65742      // 1. Let baseURL be this's relevant settings object's API base URL.
 65743      const baseURL = getGlobalOrigin()
 65744  
 65745      // 1. Let urlRecord be the result of applying the URL parser to url with baseURL.
 65746      let urlRecord
 65747  
 65748      try {
 65749        urlRecord = new URL(url, baseURL)
 65750      } catch (e) {
 65751        // 3. If urlRecord is failure, then throw a "SyntaxError" DOMException.
 65752        throw new DOMException(e, 'SyntaxError')
 65753      }
 65754  
 65755      // 4. If urlRecord’s scheme is "http", then set urlRecord’s scheme to "ws".
 65756      if (urlRecord.protocol === 'http:') {
 65757        urlRecord.protocol = 'ws:'
 65758      } else if (urlRecord.protocol === 'https:') {
 65759        // 5. Otherwise, if urlRecord’s scheme is "https", set urlRecord’s scheme to "wss".
 65760        urlRecord.protocol = 'wss:'
 65761      }
 65762  
 65763      // 6. If urlRecord’s scheme is not "ws" or "wss", then throw a "SyntaxError" DOMException.
 65764      if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') {
 65765        throw new DOMException(
 65766          `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`,
 65767          'SyntaxError'
 65768        )
 65769      }
 65770  
 65771      // 7. If urlRecord’s fragment is non-null, then throw a "SyntaxError"
 65772      //    DOMException.
 65773      if (urlRecord.hash || urlRecord.href.endsWith('#')) {
 65774        throw new DOMException('Got fragment', 'SyntaxError')
 65775      }
 65776  
 65777      // 8. If protocols is a string, set protocols to a sequence consisting
 65778      //    of just that string.
 65779      if (typeof protocols === 'string') {
 65780        protocols = [protocols]
 65781      }
 65782  
 65783      // 9. If any of the values in protocols occur more than once or otherwise
 65784      //    fail to match the requirements for elements that comprise the value
 65785      //    of `Sec-WebSocket-Protocol` fields as defined by The WebSocket
 65786      //    protocol, then throw a "SyntaxError" DOMException.
 65787      if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {
 65788        throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')
 65789      }
 65790  
 65791      if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {
 65792        throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')
 65793      }
 65794  
 65795      // 10. Set this's url to urlRecord.
 65796      this[kWebSocketURL] = new URL(urlRecord.href)
 65797  
 65798      // 11. Let client be this's relevant settings object.
 65799  
 65800      // 12. Run this step in parallel:
 65801  
 65802      //    1. Establish a WebSocket connection given urlRecord, protocols,
 65803      //       and client.
 65804      this[kController] = establishWebSocketConnection(
 65805        urlRecord,
 65806        protocols,
 65807        this,
 65808        (response) => this.#onConnectionEstablished(response),
 65809        options
 65810      )
 65811  
 65812      // Each WebSocket object has an associated ready state, which is a
 65813      // number representing the state of the connection. Initially it must
 65814      // be CONNECTING (0).
 65815      this[kReadyState] = WebSocket.CONNECTING
 65816  
 65817      // The extensions attribute must initially return the empty string.
 65818  
 65819      // The protocol attribute must initially return the empty string.
 65820  
 65821      // Each WebSocket object has an associated binary type, which is a
 65822      // BinaryType. Initially it must be "blob".
 65823      this[kBinaryType] = 'blob'
 65824    }
 65825  
 65826    /**
 65827     * @see https://websockets.spec.whatwg.org/#dom-websocket-close
 65828     * @param {number|undefined} code
 65829     * @param {string|undefined} reason
 65830     */
 65831    close (code = undefined, reason = undefined) {
 65832      webidl.brandCheck(this, WebSocket)
 65833  
 65834      if (code !== undefined) {
 65835        code = webidl.converters['unsigned short'](code, { clamp: true })
 65836      }
 65837  
 65838      if (reason !== undefined) {
 65839        reason = webidl.converters.USVString(reason)
 65840      }
 65841  
 65842      // 1. If code is present, but is neither an integer equal to 1000 nor an
 65843      //    integer in the range 3000 to 4999, inclusive, throw an
 65844      //    "InvalidAccessError" DOMException.
 65845      if (code !== undefined) {
 65846        if (code !== 1000 && (code < 3000 || code > 4999)) {
 65847          throw new DOMException('invalid code', 'InvalidAccessError')
 65848        }
 65849      }
 65850  
 65851      let reasonByteLength = 0
 65852  
 65853      // 2. If reason is present, then run these substeps:
 65854      if (reason !== undefined) {
 65855        // 1. Let reasonBytes be the result of encoding reason.
 65856        // 2. If reasonBytes is longer than 123 bytes, then throw a
 65857        //    "SyntaxError" DOMException.
 65858        reasonByteLength = Buffer.byteLength(reason)
 65859  
 65860        if (reasonByteLength > 123) {
 65861          throw new DOMException(
 65862            `Reason must be less than 123 bytes; received ${reasonByteLength}`,
 65863            'SyntaxError'
 65864          )
 65865        }
 65866      }
 65867  
 65868      // 3. Run the first matching steps from the following list:
 65869      if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) {
 65870        // If this's ready state is CLOSING (2) or CLOSED (3)
 65871        // Do nothing.
 65872      } else if (!isEstablished(this)) {
 65873        // If the WebSocket connection is not yet established
 65874        // Fail the WebSocket connection and set this's ready state
 65875        // to CLOSING (2).
 65876        failWebsocketConnection(this, 'Connection was closed before it was established.')
 65877        this[kReadyState] = WebSocket.CLOSING
 65878      } else if (!isClosing(this)) {
 65879        // If the WebSocket closing handshake has not yet been started
 65880        // Start the WebSocket closing handshake and set this's ready
 65881        // state to CLOSING (2).
 65882        // - If neither code nor reason is present, the WebSocket Close
 65883        //   message must not have a body.
 65884        // - If code is present, then the status code to use in the
 65885        //   WebSocket Close message must be the integer given by code.
 65886        // - If reason is also present, then reasonBytes must be
 65887        //   provided in the Close message after the status code.
 65888  
 65889        const frame = new WebsocketFrameSend()
 65890  
 65891        // If neither code nor reason is present, the WebSocket Close
 65892        // message must not have a body.
 65893  
 65894        // If code is present, then the status code to use in the
 65895        // WebSocket Close message must be the integer given by code.
 65896        if (code !== undefined && reason === undefined) {
 65897          frame.frameData = Buffer.allocUnsafe(2)
 65898          frame.frameData.writeUInt16BE(code, 0)
 65899        } else if (code !== undefined && reason !== undefined) {
 65900          // If reason is also present, then reasonBytes must be
 65901          // provided in the Close message after the status code.
 65902          frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength)
 65903          frame.frameData.writeUInt16BE(code, 0)
 65904          // the body MAY contain UTF-8-encoded data with value /reason/
 65905          frame.frameData.write(reason, 2, 'utf-8')
 65906        } else {
 65907          frame.frameData = emptyBuffer
 65908        }
 65909  
 65910        /** @type {import('stream').Duplex} */
 65911        const socket = this[kResponse].socket
 65912  
 65913        socket.write(frame.createFrame(opcodes.CLOSE), (err) => {
 65914          if (!err) {
 65915            this[kSentClose] = true
 65916          }
 65917        })
 65918  
 65919        // Upon either sending or receiving a Close control frame, it is said
 65920        // that _The WebSocket Closing Handshake is Started_ and that the
 65921        // WebSocket connection is in the CLOSING state.
 65922        this[kReadyState] = states.CLOSING
 65923      } else {
 65924        // Otherwise
 65925        // Set this's ready state to CLOSING (2).
 65926        this[kReadyState] = WebSocket.CLOSING
 65927      }
 65928    }
 65929  
 65930    /**
 65931     * @see https://websockets.spec.whatwg.org/#dom-websocket-send
 65932     * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data
 65933     */
 65934    send (data) {
 65935      webidl.brandCheck(this, WebSocket)
 65936  
 65937      webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' })
 65938  
 65939      data = webidl.converters.WebSocketSendData(data)
 65940  
 65941      // 1. If this's ready state is CONNECTING, then throw an
 65942      //    "InvalidStateError" DOMException.
 65943      if (this[kReadyState] === WebSocket.CONNECTING) {
 65944        throw new DOMException('Sent before connected.', 'InvalidStateError')
 65945      }
 65946  
 65947      // 2. Run the appropriate set of steps from the following list:
 65948      // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1
 65949      // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2
 65950  
 65951      if (!isEstablished(this) || isClosing(this)) {
 65952        return
 65953      }
 65954  
 65955      /** @type {import('stream').Duplex} */
 65956      const socket = this[kResponse].socket
 65957  
 65958      // If data is a string
 65959      if (typeof data === 'string') {
 65960        // If the WebSocket connection is established and the WebSocket
 65961        // closing handshake has not yet started, then the user agent
 65962        // must send a WebSocket Message comprised of the data argument
 65963        // using a text frame opcode; if the data cannot be sent, e.g.
 65964        // because it would need to be buffered but the buffer is full,
 65965        // the user agent must flag the WebSocket as full and then close
 65966        // the WebSocket connection. Any invocation of this method with a
 65967        // string argument that does not throw an exception must increase
 65968        // the bufferedAmount attribute by the number of bytes needed to
 65969        // express the argument as UTF-8.
 65970  
 65971        const value = Buffer.from(data)
 65972        const frame = new WebsocketFrameSend(value)
 65973        const buffer = frame.createFrame(opcodes.TEXT)
 65974  
 65975        this.#bufferedAmount += value.byteLength
 65976        socket.write(buffer, () => {
 65977          this.#bufferedAmount -= value.byteLength
 65978        })
 65979      } else if (types.isArrayBuffer(data)) {
 65980        // If the WebSocket connection is established, and the WebSocket
 65981        // closing handshake has not yet started, then the user agent must
 65982        // send a WebSocket Message comprised of data using a binary frame
 65983        // opcode; if the data cannot be sent, e.g. because it would need
 65984        // to be buffered but the buffer is full, the user agent must flag
 65985        // the WebSocket as full and then close the WebSocket connection.
 65986        // The data to be sent is the data stored in the buffer described
 65987        // by the ArrayBuffer object. Any invocation of this method with an
 65988        // ArrayBuffer argument that does not throw an exception must
 65989        // increase the bufferedAmount attribute by the length of the
 65990        // ArrayBuffer in bytes.
 65991  
 65992        const value = Buffer.from(data)
 65993        const frame = new WebsocketFrameSend(value)
 65994        const buffer = frame.createFrame(opcodes.BINARY)
 65995  
 65996        this.#bufferedAmount += value.byteLength
 65997        socket.write(buffer, () => {
 65998          this.#bufferedAmount -= value.byteLength
 65999        })
 66000      } else if (ArrayBuffer.isView(data)) {
 66001        // If the WebSocket connection is established, and the WebSocket
 66002        // closing handshake has not yet started, then the user agent must
 66003        // send a WebSocket Message comprised of data using a binary frame
 66004        // opcode; if the data cannot be sent, e.g. because it would need to
 66005        // be buffered but the buffer is full, the user agent must flag the
 66006        // WebSocket as full and then close the WebSocket connection. The
 66007        // data to be sent is the data stored in the section of the buffer
 66008        // described by the ArrayBuffer object that data references. Any
 66009        // invocation of this method with this kind of argument that does
 66010        // not throw an exception must increase the bufferedAmount attribute
 66011        // by the length of data’s buffer in bytes.
 66012  
 66013        const ab = Buffer.from(data, data.byteOffset, data.byteLength)
 66014  
 66015        const frame = new WebsocketFrameSend(ab)
 66016        const buffer = frame.createFrame(opcodes.BINARY)
 66017  
 66018        this.#bufferedAmount += ab.byteLength
 66019        socket.write(buffer, () => {
 66020          this.#bufferedAmount -= ab.byteLength
 66021        })
 66022      } else if (isBlobLike(data)) {
 66023        // If the WebSocket connection is established, and the WebSocket
 66024        // closing handshake has not yet started, then the user agent must
 66025        // send a WebSocket Message comprised of data using a binary frame
 66026        // opcode; if the data cannot be sent, e.g. because it would need to
 66027        // be buffered but the buffer is full, the user agent must flag the
 66028        // WebSocket as full and then close the WebSocket connection. The data
 66029        // to be sent is the raw data represented by the Blob object. Any
 66030        // invocation of this method with a Blob argument that does not throw
 66031        // an exception must increase the bufferedAmount attribute by the size
 66032        // of the Blob object’s raw data, in bytes.
 66033  
 66034        const frame = new WebsocketFrameSend()
 66035  
 66036        data.arrayBuffer().then((ab) => {
 66037          const value = Buffer.from(ab)
 66038          frame.frameData = value
 66039          const buffer = frame.createFrame(opcodes.BINARY)
 66040  
 66041          this.#bufferedAmount += value.byteLength
 66042          socket.write(buffer, () => {
 66043            this.#bufferedAmount -= value.byteLength
 66044          })
 66045        })
 66046      }
 66047    }
 66048  
 66049    get readyState () {
 66050      webidl.brandCheck(this, WebSocket)
 66051  
 66052      // The readyState getter steps are to return this's ready state.
 66053      return this[kReadyState]
 66054    }
 66055  
 66056    get bufferedAmount () {
 66057      webidl.brandCheck(this, WebSocket)
 66058  
 66059      return this.#bufferedAmount
 66060    }
 66061  
 66062    get url () {
 66063      webidl.brandCheck(this, WebSocket)
 66064  
 66065      // The url getter steps are to return this's url, serialized.
 66066      return URLSerializer(this[kWebSocketURL])
 66067    }
 66068  
 66069    get extensions () {
 66070      webidl.brandCheck(this, WebSocket)
 66071  
 66072      return this.#extensions
 66073    }
 66074  
 66075    get protocol () {
 66076      webidl.brandCheck(this, WebSocket)
 66077  
 66078      return this.#protocol
 66079    }
 66080  
 66081    get onopen () {
 66082      webidl.brandCheck(this, WebSocket)
 66083  
 66084      return this.#events.open
 66085    }
 66086  
 66087    set onopen (fn) {
 66088      webidl.brandCheck(this, WebSocket)
 66089  
 66090      if (this.#events.open) {
 66091        this.removeEventListener('open', this.#events.open)
 66092      }
 66093  
 66094      if (typeof fn === 'function') {
 66095        this.#events.open = fn
 66096        this.addEventListener('open', fn)
 66097      } else {
 66098        this.#events.open = null
 66099      }
 66100    }
 66101  
 66102    get onerror () {
 66103      webidl.brandCheck(this, WebSocket)
 66104  
 66105      return this.#events.error
 66106    }
 66107  
 66108    set onerror (fn) {
 66109      webidl.brandCheck(this, WebSocket)
 66110  
 66111      if (this.#events.error) {
 66112        this.removeEventListener('error', this.#events.error)
 66113      }
 66114  
 66115      if (typeof fn === 'function') {
 66116        this.#events.error = fn
 66117        this.addEventListener('error', fn)
 66118      } else {
 66119        this.#events.error = null
 66120      }
 66121    }
 66122  
 66123    get onclose () {
 66124      webidl.brandCheck(this, WebSocket)
 66125  
 66126      return this.#events.close
 66127    }
 66128  
 66129    set onclose (fn) {
 66130      webidl.brandCheck(this, WebSocket)
 66131  
 66132      if (this.#events.close) {
 66133        this.removeEventListener('close', this.#events.close)
 66134      }
 66135  
 66136      if (typeof fn === 'function') {
 66137        this.#events.close = fn
 66138        this.addEventListener('close', fn)
 66139      } else {
 66140        this.#events.close = null
 66141      }
 66142    }
 66143  
 66144    get onmessage () {
 66145      webidl.brandCheck(this, WebSocket)
 66146  
 66147      return this.#events.message
 66148    }
 66149  
 66150    set onmessage (fn) {
 66151      webidl.brandCheck(this, WebSocket)
 66152  
 66153      if (this.#events.message) {
 66154        this.removeEventListener('message', this.#events.message)
 66155      }
 66156  
 66157      if (typeof fn === 'function') {
 66158        this.#events.message = fn
 66159        this.addEventListener('message', fn)
 66160      } else {
 66161        this.#events.message = null
 66162      }
 66163    }
 66164  
 66165    get binaryType () {
 66166      webidl.brandCheck(this, WebSocket)
 66167  
 66168      return this[kBinaryType]
 66169    }
 66170  
 66171    set binaryType (type) {
 66172      webidl.brandCheck(this, WebSocket)
 66173  
 66174      if (type !== 'blob' && type !== 'arraybuffer') {
 66175        this[kBinaryType] = 'blob'
 66176      } else {
 66177        this[kBinaryType] = type
 66178      }
 66179    }
 66180  
 66181    /**
 66182     * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol
 66183     */
 66184    #onConnectionEstablished (response) {
 66185      // processResponse is called when the "response’s header list has been received and initialized."
 66186      // once this happens, the connection is open
 66187      this[kResponse] = response
 66188  
 66189      const parser = new ByteParser(this)
 66190      parser.on('drain', function onParserDrain () {
 66191        this.ws[kResponse].socket.resume()
 66192      })
 66193  
 66194      response.socket.ws = this
 66195      this[kByteParser] = parser
 66196  
 66197      // 1. Change the ready state to OPEN (1).
 66198      this[kReadyState] = states.OPEN
 66199  
 66200      // 2. Change the extensions attribute’s value to the extensions in use, if
 66201      //    it is not the null value.
 66202      // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1
 66203      const extensions = response.headersList.get('sec-websocket-extensions')
 66204  
 66205      if (extensions !== null) {
 66206        this.#extensions = extensions
 66207      }
 66208  
 66209      // 3. Change the protocol attribute’s value to the subprotocol in use, if
 66210      //    it is not the null value.
 66211      // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9
 66212      const protocol = response.headersList.get('sec-websocket-protocol')
 66213  
 66214      if (protocol !== null) {
 66215        this.#protocol = protocol
 66216      }
 66217  
 66218      // 4. Fire an event named open at the WebSocket object.
 66219      fireEvent('open', this)
 66220    }
 66221  }
 66222  
 66223  // https://websockets.spec.whatwg.org/#dom-websocket-connecting
 66224  WebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING
 66225  // https://websockets.spec.whatwg.org/#dom-websocket-open
 66226  WebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN
 66227  // https://websockets.spec.whatwg.org/#dom-websocket-closing
 66228  WebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING
 66229  // https://websockets.spec.whatwg.org/#dom-websocket-closed
 66230  WebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED
 66231  
 66232  Object.defineProperties(WebSocket.prototype, {
 66233    CONNECTING: staticPropertyDescriptors,
 66234    OPEN: staticPropertyDescriptors,
 66235    CLOSING: staticPropertyDescriptors,
 66236    CLOSED: staticPropertyDescriptors,
 66237    url: kEnumerableProperty,
 66238    readyState: kEnumerableProperty,
 66239    bufferedAmount: kEnumerableProperty,
 66240    onopen: kEnumerableProperty,
 66241    onerror: kEnumerableProperty,
 66242    onclose: kEnumerableProperty,
 66243    close: kEnumerableProperty,
 66244    onmessage: kEnumerableProperty,
 66245    binaryType: kEnumerableProperty,
 66246    send: kEnumerableProperty,
 66247    extensions: kEnumerableProperty,
 66248    protocol: kEnumerableProperty,
 66249    [Symbol.toStringTag]: {
 66250      value: 'WebSocket',
 66251      writable: false,
 66252      enumerable: false,
 66253      configurable: true
 66254    }
 66255  })
 66256  
 66257  Object.defineProperties(WebSocket, {
 66258    CONNECTING: staticPropertyDescriptors,
 66259    OPEN: staticPropertyDescriptors,
 66260    CLOSING: staticPropertyDescriptors,
 66261    CLOSED: staticPropertyDescriptors
 66262  })
 66263  
 66264  webidl.converters['sequence<DOMString>'] = webidl.sequenceConverter(
 66265    webidl.converters.DOMString
 66266  )
 66267  
 66268  webidl.converters['DOMString or sequence<DOMString>'] = function (V) {
 66269    if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) {
 66270      return webidl.converters['sequence<DOMString>'](V)
 66271    }
 66272  
 66273    return webidl.converters.DOMString(V)
 66274  }
 66275  
 66276  // This implements the propsal made in https://github.com/whatwg/websockets/issues/42
 66277  webidl.converters.WebSocketInit = webidl.dictionaryConverter([
 66278    {
 66279      key: 'protocols',
 66280      converter: webidl.converters['DOMString or sequence<DOMString>'],
 66281      get defaultValue () {
 66282        return []
 66283      }
 66284    },
 66285    {
 66286      key: 'dispatcher',
 66287      converter: (V) => V,
 66288      get defaultValue () {
 66289        return getGlobalDispatcher()
 66290      }
 66291    },
 66292    {
 66293      key: 'headers',
 66294      converter: webidl.nullableConverter(webidl.converters.HeadersInit)
 66295    }
 66296  ])
 66297  
 66298  webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'] = function (V) {
 66299    if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) {
 66300      return webidl.converters.WebSocketInit(V)
 66301    }
 66302  
 66303    return { protocols: webidl.converters['DOMString or sequence<DOMString>'](V) }
 66304  }
 66305  
 66306  webidl.converters.WebSocketSendData = function (V) {
 66307    if (webidl.util.Type(V) === 'Object') {
 66308      if (isBlobLike(V)) {
 66309        return webidl.converters.Blob(V, { strict: false })
 66310      }
 66311  
 66312      if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {
 66313        return webidl.converters.BufferSource(V)
 66314      }
 66315    }
 66316  
 66317    return webidl.converters.USVString(V)
 66318  }
 66319  
 66320  module.exports = {
 66321    WebSocket
 66322  }
 66323  
 66324  
 66325  /***/ }),
 66326  
 66327  /***/ 91747:
 66328  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 66329  
 66330  var path = __nccwpck_require__(71017)
 66331  
 66332  var uniqueSlug = __nccwpck_require__(17848)
 66333  
 66334  module.exports = function (filepath, prefix, uniq) {
 66335    return path.join(filepath, (prefix ? prefix + '-' : '') + uniqueSlug(uniq))
 66336  }
 66337  
 66338  
 66339  /***/ }),
 66340  
 66341  /***/ 17848:
 66342  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 66343  
 66344  "use strict";
 66345  
 66346  var MurmurHash3 = __nccwpck_require__(52527)
 66347  
 66348  module.exports = function (uniq) {
 66349    if (uniq) {
 66350      var hash = new MurmurHash3(uniq)
 66351      return ('00000000' + hash.result().toString(16)).slice(-8)
 66352    } else {
 66353      return (Math.random().toString(16) + '0000000').slice(2, 10)
 66354    }
 66355  }
 66356  
 66357  
 66358  /***/ }),
 66359  
 66360  /***/ 45030:
 66361  /***/ ((__unused_webpack_module, exports) => {
 66362  
 66363  "use strict";
 66364  
 66365  
 66366  Object.defineProperty(exports, "__esModule", ({ value: true }));
 66367  
 66368  function getUserAgent() {
 66369    if (typeof navigator === "object" && "userAgent" in navigator) {
 66370      return navigator.userAgent;
 66371    }
 66372  
 66373    if (typeof process === "object" && process.version !== undefined) {
 66374      return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;
 66375    }
 66376  
 66377    return "<environment undetectable>";
 66378  }
 66379  
 66380  exports.getUserAgent = getUserAgent;
 66381  //# sourceMappingURL=index.js.map
 66382  
 66383  
 66384  /***/ }),
 66385  
 66386  /***/ 75840:
 66387  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 66388  
 66389  "use strict";
 66390  
 66391  
 66392  Object.defineProperty(exports, "__esModule", ({
 66393    value: true
 66394  }));
 66395  Object.defineProperty(exports, "v1", ({
 66396    enumerable: true,
 66397    get: function () {
 66398      return _v.default;
 66399    }
 66400  }));
 66401  Object.defineProperty(exports, "v3", ({
 66402    enumerable: true,
 66403    get: function () {
 66404      return _v2.default;
 66405    }
 66406  }));
 66407  Object.defineProperty(exports, "v4", ({
 66408    enumerable: true,
 66409    get: function () {
 66410      return _v3.default;
 66411    }
 66412  }));
 66413  Object.defineProperty(exports, "v5", ({
 66414    enumerable: true,
 66415    get: function () {
 66416      return _v4.default;
 66417    }
 66418  }));
 66419  Object.defineProperty(exports, "NIL", ({
 66420    enumerable: true,
 66421    get: function () {
 66422      return _nil.default;
 66423    }
 66424  }));
 66425  Object.defineProperty(exports, "version", ({
 66426    enumerable: true,
 66427    get: function () {
 66428      return _version.default;
 66429    }
 66430  }));
 66431  Object.defineProperty(exports, "validate", ({
 66432    enumerable: true,
 66433    get: function () {
 66434      return _validate.default;
 66435    }
 66436  }));
 66437  Object.defineProperty(exports, "stringify", ({
 66438    enumerable: true,
 66439    get: function () {
 66440      return _stringify.default;
 66441    }
 66442  }));
 66443  Object.defineProperty(exports, "parse", ({
 66444    enumerable: true,
 66445    get: function () {
 66446      return _parse.default;
 66447    }
 66448  }));
 66449  
 66450  var _v = _interopRequireDefault(__nccwpck_require__(78628));
 66451  
 66452  var _v2 = _interopRequireDefault(__nccwpck_require__(86409));
 66453  
 66454  var _v3 = _interopRequireDefault(__nccwpck_require__(85122));
 66455  
 66456  var _v4 = _interopRequireDefault(__nccwpck_require__(79120));
 66457  
 66458  var _nil = _interopRequireDefault(__nccwpck_require__(25332));
 66459  
 66460  var _version = _interopRequireDefault(__nccwpck_require__(81595));
 66461  
 66462  var _validate = _interopRequireDefault(__nccwpck_require__(66900));
 66463  
 66464  var _stringify = _interopRequireDefault(__nccwpck_require__(18950));
 66465  
 66466  var _parse = _interopRequireDefault(__nccwpck_require__(62746));
 66467  
 66468  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 66469  
 66470  /***/ }),
 66471  
 66472  /***/ 4569:
 66473  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 66474  
 66475  "use strict";
 66476  
 66477  
 66478  Object.defineProperty(exports, "__esModule", ({
 66479    value: true
 66480  }));
 66481  exports["default"] = void 0;
 66482  
 66483  var _crypto = _interopRequireDefault(__nccwpck_require__(6113));
 66484  
 66485  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 66486  
 66487  function md5(bytes) {
 66488    if (Array.isArray(bytes)) {
 66489      bytes = Buffer.from(bytes);
 66490    } else if (typeof bytes === 'string') {
 66491      bytes = Buffer.from(bytes, 'utf8');
 66492    }
 66493  
 66494    return _crypto.default.createHash('md5').update(bytes).digest();
 66495  }
 66496  
 66497  var _default = md5;
 66498  exports["default"] = _default;
 66499  
 66500  /***/ }),
 66501  
 66502  /***/ 25332:
 66503  /***/ ((__unused_webpack_module, exports) => {
 66504  
 66505  "use strict";
 66506  
 66507  
 66508  Object.defineProperty(exports, "__esModule", ({
 66509    value: true
 66510  }));
 66511  exports["default"] = void 0;
 66512  var _default = '00000000-0000-0000-0000-000000000000';
 66513  exports["default"] = _default;
 66514  
 66515  /***/ }),
 66516  
 66517  /***/ 62746:
 66518  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 66519  
 66520  "use strict";
 66521  
 66522  
 66523  Object.defineProperty(exports, "__esModule", ({
 66524    value: true
 66525  }));
 66526  exports["default"] = void 0;
 66527  
 66528  var _validate = _interopRequireDefault(__nccwpck_require__(66900));
 66529  
 66530  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 66531  
 66532  function parse(uuid) {
 66533    if (!(0, _validate.default)(uuid)) {
 66534      throw TypeError('Invalid UUID');
 66535    }
 66536  
 66537    let v;
 66538    const arr = new Uint8Array(16); // Parse ########-....-....-....-............
 66539  
 66540    arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;
 66541    arr[1] = v >>> 16 & 0xff;
 66542    arr[2] = v >>> 8 & 0xff;
 66543    arr[3] = v & 0xff; // Parse ........-####-....-....-............
 66544  
 66545    arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;
 66546    arr[5] = v & 0xff; // Parse ........-....-####-....-............
 66547  
 66548    arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;
 66549    arr[7] = v & 0xff; // Parse ........-....-....-####-............
 66550  
 66551    arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;
 66552    arr[9] = v & 0xff; // Parse ........-....-....-....-############
 66553    // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes)
 66554  
 66555    arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;
 66556    arr[11] = v / 0x100000000 & 0xff;
 66557    arr[12] = v >>> 24 & 0xff;
 66558    arr[13] = v >>> 16 & 0xff;
 66559    arr[14] = v >>> 8 & 0xff;
 66560    arr[15] = v & 0xff;
 66561    return arr;
 66562  }
 66563  
 66564  var _default = parse;
 66565  exports["default"] = _default;
 66566  
 66567  /***/ }),
 66568  
 66569  /***/ 40814:
 66570  /***/ ((__unused_webpack_module, exports) => {
 66571  
 66572  "use strict";
 66573  
 66574  
 66575  Object.defineProperty(exports, "__esModule", ({
 66576    value: true
 66577  }));
 66578  exports["default"] = void 0;
 66579  var _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
 66580  exports["default"] = _default;
 66581  
 66582  /***/ }),
 66583  
 66584  /***/ 50807:
 66585  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 66586  
 66587  "use strict";
 66588  
 66589  
 66590  Object.defineProperty(exports, "__esModule", ({
 66591    value: true
 66592  }));
 66593  exports["default"] = rng;
 66594  
 66595  var _crypto = _interopRequireDefault(__nccwpck_require__(6113));
 66596  
 66597  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 66598  
 66599  const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate
 66600  
 66601  let poolPtr = rnds8Pool.length;
 66602  
 66603  function rng() {
 66604    if (poolPtr > rnds8Pool.length - 16) {
 66605      _crypto.default.randomFillSync(rnds8Pool);
 66606  
 66607      poolPtr = 0;
 66608    }
 66609  
 66610    return rnds8Pool.slice(poolPtr, poolPtr += 16);
 66611  }
 66612  
 66613  /***/ }),
 66614  
 66615  /***/ 85274:
 66616  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 66617  
 66618  "use strict";
 66619  
 66620  
 66621  Object.defineProperty(exports, "__esModule", ({
 66622    value: true
 66623  }));
 66624  exports["default"] = void 0;
 66625  
 66626  var _crypto = _interopRequireDefault(__nccwpck_require__(6113));
 66627  
 66628  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 66629  
 66630  function sha1(bytes) {
 66631    if (Array.isArray(bytes)) {
 66632      bytes = Buffer.from(bytes);
 66633    } else if (typeof bytes === 'string') {
 66634      bytes = Buffer.from(bytes, 'utf8');
 66635    }
 66636  
 66637    return _crypto.default.createHash('sha1').update(bytes).digest();
 66638  }
 66639  
 66640  var _default = sha1;
 66641  exports["default"] = _default;
 66642  
 66643  /***/ }),
 66644  
 66645  /***/ 18950:
 66646  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 66647  
 66648  "use strict";
 66649  
 66650  
 66651  Object.defineProperty(exports, "__esModule", ({
 66652    value: true
 66653  }));
 66654  exports["default"] = void 0;
 66655  
 66656  var _validate = _interopRequireDefault(__nccwpck_require__(66900));
 66657  
 66658  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 66659  
 66660  /**
 66661   * Convert array of 16 byte values to UUID string format of the form:
 66662   * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
 66663   */
 66664  const byteToHex = [];
 66665  
 66666  for (let i = 0; i < 256; ++i) {
 66667    byteToHex.push((i + 0x100).toString(16).substr(1));
 66668  }
 66669  
 66670  function stringify(arr, offset = 0) {
 66671    // Note: Be careful editing this code!  It's been tuned for performance
 66672    // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
 66673    const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID.  If this throws, it's likely due to one
 66674    // of the following:
 66675    // - One or more input array values don't map to a hex octet (leading to
 66676    // "undefined" in the uuid)
 66677    // - Invalid input values for the RFC `version` or `variant` fields
 66678  
 66679    if (!(0, _validate.default)(uuid)) {
 66680      throw TypeError('Stringified UUID is invalid');
 66681    }
 66682  
 66683    return uuid;
 66684  }
 66685  
 66686  var _default = stringify;
 66687  exports["default"] = _default;
 66688  
 66689  /***/ }),
 66690  
 66691  /***/ 78628:
 66692  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 66693  
 66694  "use strict";
 66695  
 66696  
 66697  Object.defineProperty(exports, "__esModule", ({
 66698    value: true
 66699  }));
 66700  exports["default"] = void 0;
 66701  
 66702  var _rng = _interopRequireDefault(__nccwpck_require__(50807));
 66703  
 66704  var _stringify = _interopRequireDefault(__nccwpck_require__(18950));
 66705  
 66706  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 66707  
 66708  // **`v1()` - Generate time-based UUID**
 66709  //
 66710  // Inspired by https://github.com/LiosK/UUID.js
 66711  // and http://docs.python.org/library/uuid.html
 66712  let _nodeId;
 66713  
 66714  let _clockseq; // Previous uuid creation time
 66715  
 66716  
 66717  let _lastMSecs = 0;
 66718  let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details
 66719  
 66720  function v1(options, buf, offset) {
 66721    let i = buf && offset || 0;
 66722    const b = buf || new Array(16);
 66723    options = options || {};
 66724    let node = options.node || _nodeId;
 66725    let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not
 66726    // specified.  We do this lazily to minimize issues related to insufficient
 66727    // system entropy.  See #189
 66728  
 66729    if (node == null || clockseq == null) {
 66730      const seedBytes = options.random || (options.rng || _rng.default)();
 66731  
 66732      if (node == null) {
 66733        // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)
 66734        node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];
 66735      }
 66736  
 66737      if (clockseq == null) {
 66738        // Per 4.2.2, randomize (14 bit) clockseq
 66739        clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;
 66740      }
 66741    } // UUID timestamps are 100 nano-second units since the Gregorian epoch,
 66742    // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so
 66743    // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'
 66744    // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.
 66745  
 66746  
 66747    let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock
 66748    // cycle to simulate higher resolution clock
 66749  
 66750    let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)
 66751  
 66752    const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression
 66753  
 66754    if (dt < 0 && options.clockseq === undefined) {
 66755      clockseq = clockseq + 1 & 0x3fff;
 66756    } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new
 66757    // time interval
 66758  
 66759  
 66760    if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {
 66761      nsecs = 0;
 66762    } // Per 4.2.1.2 Throw error if too many uuids are requested
 66763  
 66764  
 66765    if (nsecs >= 10000) {
 66766      throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");
 66767    }
 66768  
 66769    _lastMSecs = msecs;
 66770    _lastNSecs = nsecs;
 66771    _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch
 66772  
 66773    msecs += 12219292800000; // `time_low`
 66774  
 66775    const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;
 66776    b[i++] = tl >>> 24 & 0xff;
 66777    b[i++] = tl >>> 16 & 0xff;
 66778    b[i++] = tl >>> 8 & 0xff;
 66779    b[i++] = tl & 0xff; // `time_mid`
 66780  
 66781    const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;
 66782    b[i++] = tmh >>> 8 & 0xff;
 66783    b[i++] = tmh & 0xff; // `time_high_and_version`
 66784  
 66785    b[i++] = tmh >>> 24 & 0xf | 0x10; // include version
 66786  
 66787    b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)
 66788  
 66789    b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`
 66790  
 66791    b[i++] = clockseq & 0xff; // `node`
 66792  
 66793    for (let n = 0; n < 6; ++n) {
 66794      b[i + n] = node[n];
 66795    }
 66796  
 66797    return buf || (0, _stringify.default)(b);
 66798  }
 66799  
 66800  var _default = v1;
 66801  exports["default"] = _default;
 66802  
 66803  /***/ }),
 66804  
 66805  /***/ 86409:
 66806  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 66807  
 66808  "use strict";
 66809  
 66810  
 66811  Object.defineProperty(exports, "__esModule", ({
 66812    value: true
 66813  }));
 66814  exports["default"] = void 0;
 66815  
 66816  var _v = _interopRequireDefault(__nccwpck_require__(65998));
 66817  
 66818  var _md = _interopRequireDefault(__nccwpck_require__(4569));
 66819  
 66820  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 66821  
 66822  const v3 = (0, _v.default)('v3', 0x30, _md.default);
 66823  var _default = v3;
 66824  exports["default"] = _default;
 66825  
 66826  /***/ }),
 66827  
 66828  /***/ 65998:
 66829  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 66830  
 66831  "use strict";
 66832  
 66833  
 66834  Object.defineProperty(exports, "__esModule", ({
 66835    value: true
 66836  }));
 66837  exports["default"] = _default;
 66838  exports.URL = exports.DNS = void 0;
 66839  
 66840  var _stringify = _interopRequireDefault(__nccwpck_require__(18950));
 66841  
 66842  var _parse = _interopRequireDefault(__nccwpck_require__(62746));
 66843  
 66844  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 66845  
 66846  function stringToBytes(str) {
 66847    str = unescape(encodeURIComponent(str)); // UTF8 escape
 66848  
 66849    const bytes = [];
 66850  
 66851    for (let i = 0; i < str.length; ++i) {
 66852      bytes.push(str.charCodeAt(i));
 66853    }
 66854  
 66855    return bytes;
 66856  }
 66857  
 66858  const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
 66859  exports.DNS = DNS;
 66860  const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
 66861  exports.URL = URL;
 66862  
 66863  function _default(name, version, hashfunc) {
 66864    function generateUUID(value, namespace, buf, offset) {
 66865      if (typeof value === 'string') {
 66866        value = stringToBytes(value);
 66867      }
 66868  
 66869      if (typeof namespace === 'string') {
 66870        namespace = (0, _parse.default)(namespace);
 66871      }
 66872  
 66873      if (namespace.length !== 16) {
 66874        throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');
 66875      } // Compute hash of namespace and value, Per 4.3
 66876      // Future: Use spread syntax when supported on all platforms, e.g. `bytes =
 66877      // hashfunc([...namespace, ... value])`
 66878  
 66879  
 66880      let bytes = new Uint8Array(16 + value.length);
 66881      bytes.set(namespace);
 66882      bytes.set(value, namespace.length);
 66883      bytes = hashfunc(bytes);
 66884      bytes[6] = bytes[6] & 0x0f | version;
 66885      bytes[8] = bytes[8] & 0x3f | 0x80;
 66886  
 66887      if (buf) {
 66888        offset = offset || 0;
 66889  
 66890        for (let i = 0; i < 16; ++i) {
 66891          buf[offset + i] = bytes[i];
 66892        }
 66893  
 66894        return buf;
 66895      }
 66896  
 66897      return (0, _stringify.default)(bytes);
 66898    } // Function#name is not settable on some platforms (#270)
 66899  
 66900  
 66901    try {
 66902      generateUUID.name = name; // eslint-disable-next-line no-empty
 66903    } catch (err) {} // For CommonJS default export support
 66904  
 66905  
 66906    generateUUID.DNS = DNS;
 66907    generateUUID.URL = URL;
 66908    return generateUUID;
 66909  }
 66910  
 66911  /***/ }),
 66912  
 66913  /***/ 85122:
 66914  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 66915  
 66916  "use strict";
 66917  
 66918  
 66919  Object.defineProperty(exports, "__esModule", ({
 66920    value: true
 66921  }));
 66922  exports["default"] = void 0;
 66923  
 66924  var _rng = _interopRequireDefault(__nccwpck_require__(50807));
 66925  
 66926  var _stringify = _interopRequireDefault(__nccwpck_require__(18950));
 66927  
 66928  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 66929  
 66930  function v4(options, buf, offset) {
 66931    options = options || {};
 66932  
 66933    const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
 66934  
 66935  
 66936    rnds[6] = rnds[6] & 0x0f | 0x40;
 66937    rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
 66938  
 66939    if (buf) {
 66940      offset = offset || 0;
 66941  
 66942      for (let i = 0; i < 16; ++i) {
 66943        buf[offset + i] = rnds[i];
 66944      }
 66945  
 66946      return buf;
 66947    }
 66948  
 66949    return (0, _stringify.default)(rnds);
 66950  }
 66951  
 66952  var _default = v4;
 66953  exports["default"] = _default;
 66954  
 66955  /***/ }),
 66956  
 66957  /***/ 79120:
 66958  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 66959  
 66960  "use strict";
 66961  
 66962  
 66963  Object.defineProperty(exports, "__esModule", ({
 66964    value: true
 66965  }));
 66966  exports["default"] = void 0;
 66967  
 66968  var _v = _interopRequireDefault(__nccwpck_require__(65998));
 66969  
 66970  var _sha = _interopRequireDefault(__nccwpck_require__(85274));
 66971  
 66972  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 66973  
 66974  const v5 = (0, _v.default)('v5', 0x50, _sha.default);
 66975  var _default = v5;
 66976  exports["default"] = _default;
 66977  
 66978  /***/ }),
 66979  
 66980  /***/ 66900:
 66981  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 66982  
 66983  "use strict";
 66984  
 66985  
 66986  Object.defineProperty(exports, "__esModule", ({
 66987    value: true
 66988  }));
 66989  exports["default"] = void 0;
 66990  
 66991  var _regex = _interopRequireDefault(__nccwpck_require__(40814));
 66992  
 66993  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 66994  
 66995  function validate(uuid) {
 66996    return typeof uuid === 'string' && _regex.default.test(uuid);
 66997  }
 66998  
 66999  var _default = validate;
 67000  exports["default"] = _default;
 67001  
 67002  /***/ }),
 67003  
 67004  /***/ 81595:
 67005  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 67006  
 67007  "use strict";
 67008  
 67009  
 67010  Object.defineProperty(exports, "__esModule", ({
 67011    value: true
 67012  }));
 67013  exports["default"] = void 0;
 67014  
 67015  var _validate = _interopRequireDefault(__nccwpck_require__(66900));
 67016  
 67017  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 67018  
 67019  function version(uuid) {
 67020    if (!(0, _validate.default)(uuid)) {
 67021      throw TypeError('Invalid UUID');
 67022    }
 67023  
 67024    return parseInt(uuid.substr(14, 1), 16);
 67025  }
 67026  
 67027  var _default = version;
 67028  exports["default"] = _default;
 67029  
 67030  /***/ }),
 67031  
 67032  /***/ 62940:
 67033  /***/ ((module) => {
 67034  
 67035  // Returns a wrapper function that returns a wrapped callback
 67036  // The wrapper function should do some stuff, and return a
 67037  // presumably different callback function.
 67038  // This makes sure that own properties are retained, so that
 67039  // decorations and such are not lost along the way.
 67040  module.exports = wrappy
 67041  function wrappy (fn, cb) {
 67042    if (fn && cb) return wrappy(fn)(cb)
 67043  
 67044    if (typeof fn !== 'function')
 67045      throw new TypeError('need wrapper function')
 67046  
 67047    Object.keys(fn).forEach(function (k) {
 67048      wrapper[k] = fn[k]
 67049    })
 67050  
 67051    return wrapper
 67052  
 67053    function wrapper() {
 67054      var args = new Array(arguments.length)
 67055      for (var i = 0; i < args.length; i++) {
 67056        args[i] = arguments[i]
 67057      }
 67058      var ret = fn.apply(this, args)
 67059      var cb = args[args.length-1]
 67060      if (typeof ret === 'function' && ret !== cb) {
 67061        Object.keys(cb).forEach(function (k) {
 67062          ret[k] = cb[k]
 67063        })
 67064      }
 67065      return ret
 67066    }
 67067  }
 67068  
 67069  
 67070  /***/ }),
 67071  
 67072  /***/ 4091:
 67073  /***/ ((module) => {
 67074  
 67075  "use strict";
 67076  
 67077  module.exports = function (Yallist) {
 67078    Yallist.prototype[Symbol.iterator] = function* () {
 67079      for (let walker = this.head; walker; walker = walker.next) {
 67080        yield walker.value
 67081      }
 67082    }
 67083  }
 67084  
 67085  
 67086  /***/ }),
 67087  
 67088  /***/ 40665:
 67089  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 67090  
 67091  "use strict";
 67092  
 67093  module.exports = Yallist
 67094  
 67095  Yallist.Node = Node
 67096  Yallist.create = Yallist
 67097  
 67098  function Yallist (list) {
 67099    var self = this
 67100    if (!(self instanceof Yallist)) {
 67101      self = new Yallist()
 67102    }
 67103  
 67104    self.tail = null
 67105    self.head = null
 67106    self.length = 0
 67107  
 67108    if (list && typeof list.forEach === 'function') {
 67109      list.forEach(function (item) {
 67110        self.push(item)
 67111      })
 67112    } else if (arguments.length > 0) {
 67113      for (var i = 0, l = arguments.length; i < l; i++) {
 67114        self.push(arguments[i])
 67115      }
 67116    }
 67117  
 67118    return self
 67119  }
 67120  
 67121  Yallist.prototype.removeNode = function (node) {
 67122    if (node.list !== this) {
 67123      throw new Error('removing node which does not belong to this list')
 67124    }
 67125  
 67126    var next = node.next
 67127    var prev = node.prev
 67128  
 67129    if (next) {
 67130      next.prev = prev
 67131    }
 67132  
 67133    if (prev) {
 67134      prev.next = next
 67135    }
 67136  
 67137    if (node === this.head) {
 67138      this.head = next
 67139    }
 67140    if (node === this.tail) {
 67141      this.tail = prev
 67142    }
 67143  
 67144    node.list.length--
 67145    node.next = null
 67146    node.prev = null
 67147    node.list = null
 67148  
 67149    return next
 67150  }
 67151  
 67152  Yallist.prototype.unshiftNode = function (node) {
 67153    if (node === this.head) {
 67154      return
 67155    }
 67156  
 67157    if (node.list) {
 67158      node.list.removeNode(node)
 67159    }
 67160  
 67161    var head = this.head
 67162    node.list = this
 67163    node.next = head
 67164    if (head) {
 67165      head.prev = node
 67166    }
 67167  
 67168    this.head = node
 67169    if (!this.tail) {
 67170      this.tail = node
 67171    }
 67172    this.length++
 67173  }
 67174  
 67175  Yallist.prototype.pushNode = function (node) {
 67176    if (node === this.tail) {
 67177      return
 67178    }
 67179  
 67180    if (node.list) {
 67181      node.list.removeNode(node)
 67182    }
 67183  
 67184    var tail = this.tail
 67185    node.list = this
 67186    node.prev = tail
 67187    if (tail) {
 67188      tail.next = node
 67189    }
 67190  
 67191    this.tail = node
 67192    if (!this.head) {
 67193      this.head = node
 67194    }
 67195    this.length++
 67196  }
 67197  
 67198  Yallist.prototype.push = function () {
 67199    for (var i = 0, l = arguments.length; i < l; i++) {
 67200      push(this, arguments[i])
 67201    }
 67202    return this.length
 67203  }
 67204  
 67205  Yallist.prototype.unshift = function () {
 67206    for (var i = 0, l = arguments.length; i < l; i++) {
 67207      unshift(this, arguments[i])
 67208    }
 67209    return this.length
 67210  }
 67211  
 67212  Yallist.prototype.pop = function () {
 67213    if (!this.tail) {
 67214      return undefined
 67215    }
 67216  
 67217    var res = this.tail.value
 67218    this.tail = this.tail.prev
 67219    if (this.tail) {
 67220      this.tail.next = null
 67221    } else {
 67222      this.head = null
 67223    }
 67224    this.length--
 67225    return res
 67226  }
 67227  
 67228  Yallist.prototype.shift = function () {
 67229    if (!this.head) {
 67230      return undefined
 67231    }
 67232  
 67233    var res = this.head.value
 67234    this.head = this.head.next
 67235    if (this.head) {
 67236      this.head.prev = null
 67237    } else {
 67238      this.tail = null
 67239    }
 67240    this.length--
 67241    return res
 67242  }
 67243  
 67244  Yallist.prototype.forEach = function (fn, thisp) {
 67245    thisp = thisp || this
 67246    for (var walker = this.head, i = 0; walker !== null; i++) {
 67247      fn.call(thisp, walker.value, i, this)
 67248      walker = walker.next
 67249    }
 67250  }
 67251  
 67252  Yallist.prototype.forEachReverse = function (fn, thisp) {
 67253    thisp = thisp || this
 67254    for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
 67255      fn.call(thisp, walker.value, i, this)
 67256      walker = walker.prev
 67257    }
 67258  }
 67259  
 67260  Yallist.prototype.get = function (n) {
 67261    for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
 67262      // abort out of the list early if we hit a cycle
 67263      walker = walker.next
 67264    }
 67265    if (i === n && walker !== null) {
 67266      return walker.value
 67267    }
 67268  }
 67269  
 67270  Yallist.prototype.getReverse = function (n) {
 67271    for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
 67272      // abort out of the list early if we hit a cycle
 67273      walker = walker.prev
 67274    }
 67275    if (i === n && walker !== null) {
 67276      return walker.value
 67277    }
 67278  }
 67279  
 67280  Yallist.prototype.map = function (fn, thisp) {
 67281    thisp = thisp || this
 67282    var res = new Yallist()
 67283    for (var walker = this.head; walker !== null;) {
 67284      res.push(fn.call(thisp, walker.value, this))
 67285      walker = walker.next
 67286    }
 67287    return res
 67288  }
 67289  
 67290  Yallist.prototype.mapReverse = function (fn, thisp) {
 67291    thisp = thisp || this
 67292    var res = new Yallist()
 67293    for (var walker = this.tail; walker !== null;) {
 67294      res.push(fn.call(thisp, walker.value, this))
 67295      walker = walker.prev
 67296    }
 67297    return res
 67298  }
 67299  
 67300  Yallist.prototype.reduce = function (fn, initial) {
 67301    var acc
 67302    var walker = this.head
 67303    if (arguments.length > 1) {
 67304      acc = initial
 67305    } else if (this.head) {
 67306      walker = this.head.next
 67307      acc = this.head.value
 67308    } else {
 67309      throw new TypeError('Reduce of empty list with no initial value')
 67310    }
 67311  
 67312    for (var i = 0; walker !== null; i++) {
 67313      acc = fn(acc, walker.value, i)
 67314      walker = walker.next
 67315    }
 67316  
 67317    return acc
 67318  }
 67319  
 67320  Yallist.prototype.reduceReverse = function (fn, initial) {
 67321    var acc
 67322    var walker = this.tail
 67323    if (arguments.length > 1) {
 67324      acc = initial
 67325    } else if (this.tail) {
 67326      walker = this.tail.prev
 67327      acc = this.tail.value
 67328    } else {
 67329      throw new TypeError('Reduce of empty list with no initial value')
 67330    }
 67331  
 67332    for (var i = this.length - 1; walker !== null; i--) {
 67333      acc = fn(acc, walker.value, i)
 67334      walker = walker.prev
 67335    }
 67336  
 67337    return acc
 67338  }
 67339  
 67340  Yallist.prototype.toArray = function () {
 67341    var arr = new Array(this.length)
 67342    for (var i = 0, walker = this.head; walker !== null; i++) {
 67343      arr[i] = walker.value
 67344      walker = walker.next
 67345    }
 67346    return arr
 67347  }
 67348  
 67349  Yallist.prototype.toArrayReverse = function () {
 67350    var arr = new Array(this.length)
 67351    for (var i = 0, walker = this.tail; walker !== null; i++) {
 67352      arr[i] = walker.value
 67353      walker = walker.prev
 67354    }
 67355    return arr
 67356  }
 67357  
 67358  Yallist.prototype.slice = function (from, to) {
 67359    to = to || this.length
 67360    if (to < 0) {
 67361      to += this.length
 67362    }
 67363    from = from || 0
 67364    if (from < 0) {
 67365      from += this.length
 67366    }
 67367    var ret = new Yallist()
 67368    if (to < from || to < 0) {
 67369      return ret
 67370    }
 67371    if (from < 0) {
 67372      from = 0
 67373    }
 67374    if (to > this.length) {
 67375      to = this.length
 67376    }
 67377    for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
 67378      walker = walker.next
 67379    }
 67380    for (; walker !== null && i < to; i++, walker = walker.next) {
 67381      ret.push(walker.value)
 67382    }
 67383    return ret
 67384  }
 67385  
 67386  Yallist.prototype.sliceReverse = function (from, to) {
 67387    to = to || this.length
 67388    if (to < 0) {
 67389      to += this.length
 67390    }
 67391    from = from || 0
 67392    if (from < 0) {
 67393      from += this.length
 67394    }
 67395    var ret = new Yallist()
 67396    if (to < from || to < 0) {
 67397      return ret
 67398    }
 67399    if (from < 0) {
 67400      from = 0
 67401    }
 67402    if (to > this.length) {
 67403      to = this.length
 67404    }
 67405    for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
 67406      walker = walker.prev
 67407    }
 67408    for (; walker !== null && i > from; i--, walker = walker.prev) {
 67409      ret.push(walker.value)
 67410    }
 67411    return ret
 67412  }
 67413  
 67414  Yallist.prototype.splice = function (start, deleteCount, ...nodes) {
 67415    if (start > this.length) {
 67416      start = this.length - 1
 67417    }
 67418    if (start < 0) {
 67419      start = this.length + start;
 67420    }
 67421  
 67422    for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
 67423      walker = walker.next
 67424    }
 67425  
 67426    var ret = []
 67427    for (var i = 0; walker && i < deleteCount; i++) {
 67428      ret.push(walker.value)
 67429      walker = this.removeNode(walker)
 67430    }
 67431    if (walker === null) {
 67432      walker = this.tail
 67433    }
 67434  
 67435    if (walker !== this.head && walker !== this.tail) {
 67436      walker = walker.prev
 67437    }
 67438  
 67439    for (var i = 0; i < nodes.length; i++) {
 67440      walker = insert(this, walker, nodes[i])
 67441    }
 67442    return ret;
 67443  }
 67444  
 67445  Yallist.prototype.reverse = function () {
 67446    var head = this.head
 67447    var tail = this.tail
 67448    for (var walker = head; walker !== null; walker = walker.prev) {
 67449      var p = walker.prev
 67450      walker.prev = walker.next
 67451      walker.next = p
 67452    }
 67453    this.head = tail
 67454    this.tail = head
 67455    return this
 67456  }
 67457  
 67458  function insert (self, node, value) {
 67459    var inserted = node === self.head ?
 67460      new Node(value, null, node, self) :
 67461      new Node(value, node, node.next, self)
 67462  
 67463    if (inserted.next === null) {
 67464      self.tail = inserted
 67465    }
 67466    if (inserted.prev === null) {
 67467      self.head = inserted
 67468    }
 67469  
 67470    self.length++
 67471  
 67472    return inserted
 67473  }
 67474  
 67475  function push (self, item) {
 67476    self.tail = new Node(item, self.tail, null, self)
 67477    if (!self.head) {
 67478      self.head = self.tail
 67479    }
 67480    self.length++
 67481  }
 67482  
 67483  function unshift (self, item) {
 67484    self.head = new Node(item, null, self.head, self)
 67485    if (!self.tail) {
 67486      self.tail = self.head
 67487    }
 67488    self.length++
 67489  }
 67490  
 67491  function Node (value, prev, next, list) {
 67492    if (!(this instanceof Node)) {
 67493      return new Node(value, prev, next, list)
 67494    }
 67495  
 67496    this.list = list
 67497    this.value = value
 67498  
 67499    if (prev) {
 67500      prev.next = this
 67501      this.prev = prev
 67502    } else {
 67503      this.prev = null
 67504    }
 67505  
 67506    if (next) {
 67507      next.prev = this
 67508      this.next = next
 67509    } else {
 67510      this.next = null
 67511    }
 67512  }
 67513  
 67514  try {
 67515    // add if support for Symbol.iterator is present
 67516    __nccwpck_require__(4091)(Yallist)
 67517  } catch (er) {}
 67518  
 67519  
 67520  /***/ }),
 67521  
 67522  /***/ 39491:
 67523  /***/ ((module) => {
 67524  
 67525  "use strict";
 67526  module.exports = require("assert");
 67527  
 67528  /***/ }),
 67529  
 67530  /***/ 50852:
 67531  /***/ ((module) => {
 67532  
 67533  "use strict";
 67534  module.exports = require("async_hooks");
 67535  
 67536  /***/ }),
 67537  
 67538  /***/ 14300:
 67539  /***/ ((module) => {
 67540  
 67541  "use strict";
 67542  module.exports = require("buffer");
 67543  
 67544  /***/ }),
 67545  
 67546  /***/ 96206:
 67547  /***/ ((module) => {
 67548  
 67549  "use strict";
 67550  module.exports = require("console");
 67551  
 67552  /***/ }),
 67553  
 67554  /***/ 6113:
 67555  /***/ ((module) => {
 67556  
 67557  "use strict";
 67558  module.exports = require("crypto");
 67559  
 67560  /***/ }),
 67561  
 67562  /***/ 67643:
 67563  /***/ ((module) => {
 67564  
 67565  "use strict";
 67566  module.exports = require("diagnostics_channel");
 67567  
 67568  /***/ }),
 67569  
 67570  /***/ 9523:
 67571  /***/ ((module) => {
 67572  
 67573  "use strict";
 67574  module.exports = require("dns");
 67575  
 67576  /***/ }),
 67577  
 67578  /***/ 82361:
 67579  /***/ ((module) => {
 67580  
 67581  "use strict";
 67582  module.exports = require("events");
 67583  
 67584  /***/ }),
 67585  
 67586  /***/ 57147:
 67587  /***/ ((module) => {
 67588  
 67589  "use strict";
 67590  module.exports = require("fs");
 67591  
 67592  /***/ }),
 67593  
 67594  /***/ 73292:
 67595  /***/ ((module) => {
 67596  
 67597  "use strict";
 67598  module.exports = require("fs/promises");
 67599  
 67600  /***/ }),
 67601  
 67602  /***/ 13685:
 67603  /***/ ((module) => {
 67604  
 67605  "use strict";
 67606  module.exports = require("http");
 67607  
 67608  /***/ }),
 67609  
 67610  /***/ 85158:
 67611  /***/ ((module) => {
 67612  
 67613  "use strict";
 67614  module.exports = require("http2");
 67615  
 67616  /***/ }),
 67617  
 67618  /***/ 95687:
 67619  /***/ ((module) => {
 67620  
 67621  "use strict";
 67622  module.exports = require("https");
 67623  
 67624  /***/ }),
 67625  
 67626  /***/ 41808:
 67627  /***/ ((module) => {
 67628  
 67629  "use strict";
 67630  module.exports = require("net");
 67631  
 67632  /***/ }),
 67633  
 67634  /***/ 15673:
 67635  /***/ ((module) => {
 67636  
 67637  "use strict";
 67638  module.exports = require("node:events");
 67639  
 67640  /***/ }),
 67641  
 67642  /***/ 84492:
 67643  /***/ ((module) => {
 67644  
 67645  "use strict";
 67646  module.exports = require("node:stream");
 67647  
 67648  /***/ }),
 67649  
 67650  /***/ 47261:
 67651  /***/ ((module) => {
 67652  
 67653  "use strict";
 67654  module.exports = require("node:util");
 67655  
 67656  /***/ }),
 67657  
 67658  /***/ 22037:
 67659  /***/ ((module) => {
 67660  
 67661  "use strict";
 67662  module.exports = require("os");
 67663  
 67664  /***/ }),
 67665  
 67666  /***/ 71017:
 67667  /***/ ((module) => {
 67668  
 67669  "use strict";
 67670  module.exports = require("path");
 67671  
 67672  /***/ }),
 67673  
 67674  /***/ 4074:
 67675  /***/ ((module) => {
 67676  
 67677  "use strict";
 67678  module.exports = require("perf_hooks");
 67679  
 67680  /***/ }),
 67681  
 67682  /***/ 77282:
 67683  /***/ ((module) => {
 67684  
 67685  "use strict";
 67686  module.exports = require("process");
 67687  
 67688  /***/ }),
 67689  
 67690  /***/ 63477:
 67691  /***/ ((module) => {
 67692  
 67693  "use strict";
 67694  module.exports = require("querystring");
 67695  
 67696  /***/ }),
 67697  
 67698  /***/ 12781:
 67699  /***/ ((module) => {
 67700  
 67701  "use strict";
 67702  module.exports = require("stream");
 67703  
 67704  /***/ }),
 67705  
 67706  /***/ 35356:
 67707  /***/ ((module) => {
 67708  
 67709  "use strict";
 67710  module.exports = require("stream/web");
 67711  
 67712  /***/ }),
 67713  
 67714  /***/ 71576:
 67715  /***/ ((module) => {
 67716  
 67717  "use strict";
 67718  module.exports = require("string_decoder");
 67719  
 67720  /***/ }),
 67721  
 67722  /***/ 68670:
 67723  /***/ ((module) => {
 67724  
 67725  "use strict";
 67726  module.exports = require("timers/promises");
 67727  
 67728  /***/ }),
 67729  
 67730  /***/ 24404:
 67731  /***/ ((module) => {
 67732  
 67733  "use strict";
 67734  module.exports = require("tls");
 67735  
 67736  /***/ }),
 67737  
 67738  /***/ 76224:
 67739  /***/ ((module) => {
 67740  
 67741  "use strict";
 67742  module.exports = require("tty");
 67743  
 67744  /***/ }),
 67745  
 67746  /***/ 57310:
 67747  /***/ ((module) => {
 67748  
 67749  "use strict";
 67750  module.exports = require("url");
 67751  
 67752  /***/ }),
 67753  
 67754  /***/ 73837:
 67755  /***/ ((module) => {
 67756  
 67757  "use strict";
 67758  module.exports = require("util");
 67759  
 67760  /***/ }),
 67761  
 67762  /***/ 29830:
 67763  /***/ ((module) => {
 67764  
 67765  "use strict";
 67766  module.exports = require("util/types");
 67767  
 67768  /***/ }),
 67769  
 67770  /***/ 71267:
 67771  /***/ ((module) => {
 67772  
 67773  "use strict";
 67774  module.exports = require("worker_threads");
 67775  
 67776  /***/ }),
 67777  
 67778  /***/ 59796:
 67779  /***/ ((module) => {
 67780  
 67781  "use strict";
 67782  module.exports = require("zlib");
 67783  
 67784  /***/ }),
 67785  
 67786  /***/ 92960:
 67787  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 67788  
 67789  "use strict";
 67790  
 67791  
 67792  const WritableStream = (__nccwpck_require__(84492).Writable)
 67793  const inherits = (__nccwpck_require__(47261).inherits)
 67794  
 67795  const StreamSearch = __nccwpck_require__(51142)
 67796  
 67797  const PartStream = __nccwpck_require__(81620)
 67798  const HeaderParser = __nccwpck_require__(92032)
 67799  
 67800  const DASH = 45
 67801  const B_ONEDASH = Buffer.from('-')
 67802  const B_CRLF = Buffer.from('\r\n')
 67803  const EMPTY_FN = function () {}
 67804  
 67805  function Dicer (cfg) {
 67806    if (!(this instanceof Dicer)) { return new Dicer(cfg) }
 67807    WritableStream.call(this, cfg)
 67808  
 67809    if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') }
 67810  
 67811    if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined }
 67812  
 67813    this._headerFirst = cfg.headerFirst
 67814  
 67815    this._dashes = 0
 67816    this._parts = 0
 67817    this._finished = false
 67818    this._realFinish = false
 67819    this._isPreamble = true
 67820    this._justMatched = false
 67821    this._firstWrite = true
 67822    this._inHeader = true
 67823    this._part = undefined
 67824    this._cb = undefined
 67825    this._ignoreData = false
 67826    this._partOpts = { highWaterMark: cfg.partHwm }
 67827    this._pause = false
 67828  
 67829    const self = this
 67830    this._hparser = new HeaderParser(cfg)
 67831    this._hparser.on('header', function (header) {
 67832      self._inHeader = false
 67833      self._part.emit('header', header)
 67834    })
 67835  }
 67836  inherits(Dicer, WritableStream)
 67837  
 67838  Dicer.prototype.emit = function (ev) {
 67839    if (ev === 'finish' && !this._realFinish) {
 67840      if (!this._finished) {
 67841        const self = this
 67842        process.nextTick(function () {
 67843          self.emit('error', new Error('Unexpected end of multipart data'))
 67844          if (self._part && !self._ignoreData) {
 67845            const type = (self._isPreamble ? 'Preamble' : 'Part')
 67846            self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data'))
 67847            self._part.push(null)
 67848            process.nextTick(function () {
 67849              self._realFinish = true
 67850              self.emit('finish')
 67851              self._realFinish = false
 67852            })
 67853            return
 67854          }
 67855          self._realFinish = true
 67856          self.emit('finish')
 67857          self._realFinish = false
 67858        })
 67859      }
 67860    } else { WritableStream.prototype.emit.apply(this, arguments) }
 67861  }
 67862  
 67863  Dicer.prototype._write = function (data, encoding, cb) {
 67864    // ignore unexpected data (e.g. extra trailer data after finished)
 67865    if (!this._hparser && !this._bparser) { return cb() }
 67866  
 67867    if (this._headerFirst && this._isPreamble) {
 67868      if (!this._part) {
 67869        this._part = new PartStream(this._partOpts)
 67870        if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() }
 67871      }
 67872      const r = this._hparser.push(data)
 67873      if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() }
 67874    }
 67875  
 67876    // allows for "easier" testing
 67877    if (this._firstWrite) {
 67878      this._bparser.push(B_CRLF)
 67879      this._firstWrite = false
 67880    }
 67881  
 67882    this._bparser.push(data)
 67883  
 67884    if (this._pause) { this._cb = cb } else { cb() }
 67885  }
 67886  
 67887  Dicer.prototype.reset = function () {
 67888    this._part = undefined
 67889    this._bparser = undefined
 67890    this._hparser = undefined
 67891  }
 67892  
 67893  Dicer.prototype.setBoundary = function (boundary) {
 67894    const self = this
 67895    this._bparser = new StreamSearch('\r\n--' + boundary)
 67896    this._bparser.on('info', function (isMatch, data, start, end) {
 67897      self._oninfo(isMatch, data, start, end)
 67898    })
 67899  }
 67900  
 67901  Dicer.prototype._ignore = function () {
 67902    if (this._part && !this._ignoreData) {
 67903      this._ignoreData = true
 67904      this._part.on('error', EMPTY_FN)
 67905      // we must perform some kind of read on the stream even though we are
 67906      // ignoring the data, otherwise node's Readable stream will not emit 'end'
 67907      // after pushing null to the stream
 67908      this._part.resume()
 67909    }
 67910  }
 67911  
 67912  Dicer.prototype._oninfo = function (isMatch, data, start, end) {
 67913    let buf; const self = this; let i = 0; let r; let shouldWriteMore = true
 67914  
 67915    if (!this._part && this._justMatched && data) {
 67916      while (this._dashes < 2 && (start + i) < end) {
 67917        if (data[start + i] === DASH) {
 67918          ++i
 67919          ++this._dashes
 67920        } else {
 67921          if (this._dashes) { buf = B_ONEDASH }
 67922          this._dashes = 0
 67923          break
 67924        }
 67925      }
 67926      if (this._dashes === 2) {
 67927        if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) }
 67928        this.reset()
 67929        this._finished = true
 67930        // no more parts will be added
 67931        if (self._parts === 0) {
 67932          self._realFinish = true
 67933          self.emit('finish')
 67934          self._realFinish = false
 67935        }
 67936      }
 67937      if (this._dashes) { return }
 67938    }
 67939    if (this._justMatched) { this._justMatched = false }
 67940    if (!this._part) {
 67941      this._part = new PartStream(this._partOpts)
 67942      this._part._read = function (n) {
 67943        self._unpause()
 67944      }
 67945      if (this._isPreamble && this.listenerCount('preamble') !== 0) {
 67946        this.emit('preamble', this._part)
 67947      } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) {
 67948        this.emit('part', this._part)
 67949      } else {
 67950        this._ignore()
 67951      }
 67952      if (!this._isPreamble) { this._inHeader = true }
 67953    }
 67954    if (data && start < end && !this._ignoreData) {
 67955      if (this._isPreamble || !this._inHeader) {
 67956        if (buf) { shouldWriteMore = this._part.push(buf) }
 67957        shouldWriteMore = this._part.push(data.slice(start, end))
 67958        if (!shouldWriteMore) { this._pause = true }
 67959      } else if (!this._isPreamble && this._inHeader) {
 67960        if (buf) { this._hparser.push(buf) }
 67961        r = this._hparser.push(data.slice(start, end))
 67962        if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) }
 67963      }
 67964    }
 67965    if (isMatch) {
 67966      this._hparser.reset()
 67967      if (this._isPreamble) { this._isPreamble = false } else {
 67968        if (start !== end) {
 67969          ++this._parts
 67970          this._part.on('end', function () {
 67971            if (--self._parts === 0) {
 67972              if (self._finished) {
 67973                self._realFinish = true
 67974                self.emit('finish')
 67975                self._realFinish = false
 67976              } else {
 67977                self._unpause()
 67978              }
 67979            }
 67980          })
 67981        }
 67982      }
 67983      this._part.push(null)
 67984      this._part = undefined
 67985      this._ignoreData = false
 67986      this._justMatched = true
 67987      this._dashes = 0
 67988    }
 67989  }
 67990  
 67991  Dicer.prototype._unpause = function () {
 67992    if (!this._pause) { return }
 67993  
 67994    this._pause = false
 67995    if (this._cb) {
 67996      const cb = this._cb
 67997      this._cb = undefined
 67998      cb()
 67999    }
 68000  }
 68001  
 68002  module.exports = Dicer
 68003  
 68004  
 68005  /***/ }),
 68006  
 68007  /***/ 92032:
 68008  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 68009  
 68010  "use strict";
 68011  
 68012  
 68013  const EventEmitter = (__nccwpck_require__(15673).EventEmitter)
 68014  const inherits = (__nccwpck_require__(47261).inherits)
 68015  const getLimit = __nccwpck_require__(21467)
 68016  
 68017  const StreamSearch = __nccwpck_require__(51142)
 68018  
 68019  const B_DCRLF = Buffer.from('\r\n\r\n')
 68020  const RE_CRLF = /\r\n/g
 68021  const RE_HDR = /^([^:]+):[ \t]?([\x00-\xFF]+)?$/ // eslint-disable-line no-control-regex
 68022  
 68023  function HeaderParser (cfg) {
 68024    EventEmitter.call(this)
 68025  
 68026    cfg = cfg || {}
 68027    const self = this
 68028    this.nread = 0
 68029    this.maxed = false
 68030    this.npairs = 0
 68031    this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000)
 68032    this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024)
 68033    this.buffer = ''
 68034    this.header = {}
 68035    this.finished = false
 68036    this.ss = new StreamSearch(B_DCRLF)
 68037    this.ss.on('info', function (isMatch, data, start, end) {
 68038      if (data && !self.maxed) {
 68039        if (self.nread + end - start >= self.maxHeaderSize) {
 68040          end = self.maxHeaderSize - self.nread + start
 68041          self.nread = self.maxHeaderSize
 68042          self.maxed = true
 68043        } else { self.nread += (end - start) }
 68044  
 68045        self.buffer += data.toString('binary', start, end)
 68046      }
 68047      if (isMatch) { self._finish() }
 68048    })
 68049  }
 68050  inherits(HeaderParser, EventEmitter)
 68051  
 68052  HeaderParser.prototype.push = function (data) {
 68053    const r = this.ss.push(data)
 68054    if (this.finished) { return r }
 68055  }
 68056  
 68057  HeaderParser.prototype.reset = function () {
 68058    this.finished = false
 68059    this.buffer = ''
 68060    this.header = {}
 68061    this.ss.reset()
 68062  }
 68063  
 68064  HeaderParser.prototype._finish = function () {
 68065    if (this.buffer) { this._parseHeader() }
 68066    this.ss.matches = this.ss.maxMatches
 68067    const header = this.header
 68068    this.header = {}
 68069    this.buffer = ''
 68070    this.finished = true
 68071    this.nread = this.npairs = 0
 68072    this.maxed = false
 68073    this.emit('header', header)
 68074  }
 68075  
 68076  HeaderParser.prototype._parseHeader = function () {
 68077    if (this.npairs === this.maxHeaderPairs) { return }
 68078  
 68079    const lines = this.buffer.split(RE_CRLF)
 68080    const len = lines.length
 68081    let m, h
 68082  
 68083    for (var i = 0; i < len; ++i) { // eslint-disable-line no-var
 68084      if (lines[i].length === 0) { continue }
 68085      if (lines[i][0] === '\t' || lines[i][0] === ' ') {
 68086        // folded header content
 68087        // RFC2822 says to just remove the CRLF and not the whitespace following
 68088        // it, so we follow the RFC and include the leading whitespace ...
 68089        if (h) {
 68090          this.header[h][this.header[h].length - 1] += lines[i]
 68091          continue
 68092        }
 68093      }
 68094  
 68095      const posColon = lines[i].indexOf(':')
 68096      if (
 68097        posColon === -1 ||
 68098        posColon === 0
 68099      ) {
 68100        return
 68101      }
 68102      m = RE_HDR.exec(lines[i])
 68103      h = m[1].toLowerCase()
 68104      this.header[h] = this.header[h] || []
 68105      this.header[h].push((m[2] || ''))
 68106      if (++this.npairs === this.maxHeaderPairs) { break }
 68107    }
 68108  }
 68109  
 68110  module.exports = HeaderParser
 68111  
 68112  
 68113  /***/ }),
 68114  
 68115  /***/ 81620:
 68116  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 68117  
 68118  "use strict";
 68119  
 68120  
 68121  const inherits = (__nccwpck_require__(47261).inherits)
 68122  const ReadableStream = (__nccwpck_require__(84492).Readable)
 68123  
 68124  function PartStream (opts) {
 68125    ReadableStream.call(this, opts)
 68126  }
 68127  inherits(PartStream, ReadableStream)
 68128  
 68129  PartStream.prototype._read = function (n) {}
 68130  
 68131  module.exports = PartStream
 68132  
 68133  
 68134  /***/ }),
 68135  
 68136  /***/ 51142:
 68137  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 68138  
 68139  "use strict";
 68140  
 68141  
 68142  /**
 68143   * Copyright Brian White. All rights reserved.
 68144   *
 68145   * @see https://github.com/mscdex/streamsearch
 68146   *
 68147   * Permission is hereby granted, free of charge, to any person obtaining a copy
 68148   * of this software and associated documentation files (the "Software"), to
 68149   * deal in the Software without restriction, including without limitation the
 68150   * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 68151   * sell copies of the Software, and to permit persons to whom the Software is
 68152   * furnished to do so, subject to the following conditions:
 68153   *
 68154   * The above copyright notice and this permission notice shall be included in
 68155   * all copies or substantial portions of the Software.
 68156   *
 68157   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 68158   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 68159   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 68160   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 68161   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 68162   * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 68163   * IN THE SOFTWARE.
 68164   *
 68165   * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation
 68166   * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool
 68167   */
 68168  const EventEmitter = (__nccwpck_require__(15673).EventEmitter)
 68169  const inherits = (__nccwpck_require__(47261).inherits)
 68170  
 68171  function SBMH (needle) {
 68172    if (typeof needle === 'string') {
 68173      needle = Buffer.from(needle)
 68174    }
 68175  
 68176    if (!Buffer.isBuffer(needle)) {
 68177      throw new TypeError('The needle has to be a String or a Buffer.')
 68178    }
 68179  
 68180    const needleLength = needle.length
 68181  
 68182    if (needleLength === 0) {
 68183      throw new Error('The needle cannot be an empty String/Buffer.')
 68184    }
 68185  
 68186    if (needleLength > 256) {
 68187      throw new Error('The needle cannot have a length bigger than 256.')
 68188    }
 68189  
 68190    this.maxMatches = Infinity
 68191    this.matches = 0
 68192  
 68193    this._occ = new Array(256)
 68194      .fill(needleLength) // Initialize occurrence table.
 68195    this._lookbehind_size = 0
 68196    this._needle = needle
 68197    this._bufpos = 0
 68198  
 68199    this._lookbehind = Buffer.alloc(needleLength)
 68200  
 68201    // Populate occurrence table with analysis of the needle,
 68202    // ignoring last letter.
 68203    for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var
 68204      this._occ[needle[i]] = needleLength - 1 - i
 68205    }
 68206  }
 68207  inherits(SBMH, EventEmitter)
 68208  
 68209  SBMH.prototype.reset = function () {
 68210    this._lookbehind_size = 0
 68211    this.matches = 0
 68212    this._bufpos = 0
 68213  }
 68214  
 68215  SBMH.prototype.push = function (chunk, pos) {
 68216    if (!Buffer.isBuffer(chunk)) {
 68217      chunk = Buffer.from(chunk, 'binary')
 68218    }
 68219    const chlen = chunk.length
 68220    this._bufpos = pos || 0
 68221    let r
 68222    while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) }
 68223    return r
 68224  }
 68225  
 68226  SBMH.prototype._sbmh_feed = function (data) {
 68227    const len = data.length
 68228    const needle = this._needle
 68229    const needleLength = needle.length
 68230    const lastNeedleChar = needle[needleLength - 1]
 68231  
 68232    // Positive: points to a position in `data`
 68233    //           pos == 3 points to data[3]
 68234    // Negative: points to a position in the lookbehind buffer
 68235    //           pos == -2 points to lookbehind[lookbehind_size - 2]
 68236    let pos = -this._lookbehind_size
 68237    let ch
 68238  
 68239    if (pos < 0) {
 68240      // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool
 68241      // search with character lookup code that considers both the
 68242      // lookbehind buffer and the current round's haystack data.
 68243      //
 68244      // Loop until
 68245      //   there is a match.
 68246      // or until
 68247      //   we've moved past the position that requires the
 68248      //   lookbehind buffer. In this case we switch to the
 68249      //   optimized loop.
 68250      // or until
 68251      //   the character to look at lies outside the haystack.
 68252      while (pos < 0 && pos <= len - needleLength) {
 68253        ch = this._sbmh_lookup_char(data, pos + needleLength - 1)
 68254  
 68255        if (
 68256          ch === lastNeedleChar &&
 68257          this._sbmh_memcmp(data, pos, needleLength - 1)
 68258        ) {
 68259          this._lookbehind_size = 0
 68260          ++this.matches
 68261          this.emit('info', true)
 68262  
 68263          return (this._bufpos = pos + needleLength)
 68264        }
 68265        pos += this._occ[ch]
 68266      }
 68267  
 68268      // No match.
 68269  
 68270      if (pos < 0) {
 68271        // There's too few data for Boyer-Moore-Horspool to run,
 68272        // so let's use a different algorithm to skip as much as
 68273        // we can.
 68274        // Forward pos until
 68275        //   the trailing part of lookbehind + data
 68276        //   looks like the beginning of the needle
 68277        // or until
 68278        //   pos == 0
 68279        while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos }
 68280      }
 68281  
 68282      if (pos >= 0) {
 68283        // Discard lookbehind buffer.
 68284        this.emit('info', false, this._lookbehind, 0, this._lookbehind_size)
 68285        this._lookbehind_size = 0
 68286      } else {
 68287        // Cut off part of the lookbehind buffer that has
 68288        // been processed and append the entire haystack
 68289        // into it.
 68290        const bytesToCutOff = this._lookbehind_size + pos
 68291        if (bytesToCutOff > 0) {
 68292          // The cut off data is guaranteed not to contain the needle.
 68293          this.emit('info', false, this._lookbehind, 0, bytesToCutOff)
 68294        }
 68295  
 68296        this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff,
 68297          this._lookbehind_size - bytesToCutOff)
 68298        this._lookbehind_size -= bytesToCutOff
 68299  
 68300        data.copy(this._lookbehind, this._lookbehind_size)
 68301        this._lookbehind_size += len
 68302  
 68303        this._bufpos = len
 68304        return len
 68305      }
 68306    }
 68307  
 68308    pos += (pos >= 0) * this._bufpos
 68309  
 68310    // Lookbehind buffer is now empty. We only need to check if the
 68311    // needle is in the haystack.
 68312    if (data.indexOf(needle, pos) !== -1) {
 68313      pos = data.indexOf(needle, pos)
 68314      ++this.matches
 68315      if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) }
 68316  
 68317      return (this._bufpos = pos + needleLength)
 68318    } else {
 68319      pos = len - needleLength
 68320    }
 68321  
 68322    // There was no match. If there's trailing haystack data that we cannot
 68323    // match yet using the Boyer-Moore-Horspool algorithm (because the trailing
 68324    // data is less than the needle size) then match using a modified
 68325    // algorithm that starts matching from the beginning instead of the end.
 68326    // Whatever trailing data is left after running this algorithm is added to
 68327    // the lookbehind buffer.
 68328    while (
 68329      pos < len &&
 68330      (
 68331        data[pos] !== needle[0] ||
 68332        (
 68333          (Buffer.compare(
 68334            data.subarray(pos, pos + len - pos),
 68335            needle.subarray(0, len - pos)
 68336          ) !== 0)
 68337        )
 68338      )
 68339    ) {
 68340      ++pos
 68341    }
 68342    if (pos < len) {
 68343      data.copy(this._lookbehind, 0, pos, pos + (len - pos))
 68344      this._lookbehind_size = len - pos
 68345    }
 68346  
 68347    // Everything until pos is guaranteed not to contain needle data.
 68348    if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) }
 68349  
 68350    this._bufpos = len
 68351    return len
 68352  }
 68353  
 68354  SBMH.prototype._sbmh_lookup_char = function (data, pos) {
 68355    return (pos < 0)
 68356      ? this._lookbehind[this._lookbehind_size + pos]
 68357      : data[pos]
 68358  }
 68359  
 68360  SBMH.prototype._sbmh_memcmp = function (data, pos, len) {
 68361    for (var i = 0; i < len; ++i) { // eslint-disable-line no-var
 68362      if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false }
 68363    }
 68364    return true
 68365  }
 68366  
 68367  module.exports = SBMH
 68368  
 68369  
 68370  /***/ }),
 68371  
 68372  /***/ 50727:
 68373  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 68374  
 68375  "use strict";
 68376  
 68377  
 68378  const WritableStream = (__nccwpck_require__(84492).Writable)
 68379  const { inherits } = __nccwpck_require__(47261)
 68380  const Dicer = __nccwpck_require__(92960)
 68381  
 68382  const MultipartParser = __nccwpck_require__(32183)
 68383  const UrlencodedParser = __nccwpck_require__(78306)
 68384  const parseParams = __nccwpck_require__(31854)
 68385  
 68386  function Busboy (opts) {
 68387    if (!(this instanceof Busboy)) { return new Busboy(opts) }
 68388  
 68389    if (typeof opts !== 'object') {
 68390      throw new TypeError('Busboy expected an options-Object.')
 68391    }
 68392    if (typeof opts.headers !== 'object') {
 68393      throw new TypeError('Busboy expected an options-Object with headers-attribute.')
 68394    }
 68395    if (typeof opts.headers['content-type'] !== 'string') {
 68396      throw new TypeError('Missing Content-Type-header.')
 68397    }
 68398  
 68399    const {
 68400      headers,
 68401      ...streamOptions
 68402    } = opts
 68403  
 68404    this.opts = {
 68405      autoDestroy: false,
 68406      ...streamOptions
 68407    }
 68408    WritableStream.call(this, this.opts)
 68409  
 68410    this._done = false
 68411    this._parser = this.getParserByHeaders(headers)
 68412    this._finished = false
 68413  }
 68414  inherits(Busboy, WritableStream)
 68415  
 68416  Busboy.prototype.emit = function (ev) {
 68417    if (ev === 'finish') {
 68418      if (!this._done) {
 68419        this._parser?.end()
 68420        return
 68421      } else if (this._finished) {
 68422        return
 68423      }
 68424      this._finished = true
 68425    }
 68426    WritableStream.prototype.emit.apply(this, arguments)
 68427  }
 68428  
 68429  Busboy.prototype.getParserByHeaders = function (headers) {
 68430    const parsed = parseParams(headers['content-type'])
 68431  
 68432    const cfg = {
 68433      defCharset: this.opts.defCharset,
 68434      fileHwm: this.opts.fileHwm,
 68435      headers,
 68436      highWaterMark: this.opts.highWaterMark,
 68437      isPartAFile: this.opts.isPartAFile,
 68438      limits: this.opts.limits,
 68439      parsedConType: parsed,
 68440      preservePath: this.opts.preservePath
 68441    }
 68442  
 68443    if (MultipartParser.detect.test(parsed[0])) {
 68444      return new MultipartParser(this, cfg)
 68445    }
 68446    if (UrlencodedParser.detect.test(parsed[0])) {
 68447      return new UrlencodedParser(this, cfg)
 68448    }
 68449    throw new Error('Unsupported Content-Type.')
 68450  }
 68451  
 68452  Busboy.prototype._write = function (chunk, encoding, cb) {
 68453    this._parser.write(chunk, cb)
 68454  }
 68455  
 68456  module.exports = Busboy
 68457  module.exports["default"] = Busboy
 68458  module.exports.Busboy = Busboy
 68459  
 68460  module.exports.Dicer = Dicer
 68461  
 68462  
 68463  /***/ }),
 68464  
 68465  /***/ 32183:
 68466  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 68467  
 68468  "use strict";
 68469  
 68470  
 68471  // TODO:
 68472  //  * support 1 nested multipart level
 68473  //    (see second multipart example here:
 68474  //     http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data)
 68475  //  * support limits.fieldNameSize
 68476  //     -- this will require modifications to utils.parseParams
 68477  
 68478  const { Readable } = __nccwpck_require__(84492)
 68479  const { inherits } = __nccwpck_require__(47261)
 68480  
 68481  const Dicer = __nccwpck_require__(92960)
 68482  
 68483  const parseParams = __nccwpck_require__(31854)
 68484  const decodeText = __nccwpck_require__(84619)
 68485  const basename = __nccwpck_require__(48647)
 68486  const getLimit = __nccwpck_require__(21467)
 68487  
 68488  const RE_BOUNDARY = /^boundary$/i
 68489  const RE_FIELD = /^form-data$/i
 68490  const RE_CHARSET = /^charset$/i
 68491  const RE_FILENAME = /^filename$/i
 68492  const RE_NAME = /^name$/i
 68493  
 68494  Multipart.detect = /^multipart\/form-data/i
 68495  function Multipart (boy, cfg) {
 68496    let i
 68497    let len
 68498    const self = this
 68499    let boundary
 68500    const limits = cfg.limits
 68501    const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined))
 68502    const parsedConType = cfg.parsedConType || []
 68503    const defCharset = cfg.defCharset || 'utf8'
 68504    const preservePath = cfg.preservePath
 68505    const fileOpts = { highWaterMark: cfg.fileHwm }
 68506  
 68507    for (i = 0, len = parsedConType.length; i < len; ++i) {
 68508      if (Array.isArray(parsedConType[i]) &&
 68509        RE_BOUNDARY.test(parsedConType[i][0])) {
 68510        boundary = parsedConType[i][1]
 68511        break
 68512      }
 68513    }
 68514  
 68515    function checkFinished () {
 68516      if (nends === 0 && finished && !boy._done) {
 68517        finished = false
 68518        self.end()
 68519      }
 68520    }
 68521  
 68522    if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') }
 68523  
 68524    const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)
 68525    const fileSizeLimit = getLimit(limits, 'fileSize', Infinity)
 68526    const filesLimit = getLimit(limits, 'files', Infinity)
 68527    const fieldsLimit = getLimit(limits, 'fields', Infinity)
 68528    const partsLimit = getLimit(limits, 'parts', Infinity)
 68529    const headerPairsLimit = getLimit(limits, 'headerPairs', 2000)
 68530    const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024)
 68531  
 68532    let nfiles = 0
 68533    let nfields = 0
 68534    let nends = 0
 68535    let curFile
 68536    let curField
 68537    let finished = false
 68538  
 68539    this._needDrain = false
 68540    this._pause = false
 68541    this._cb = undefined
 68542    this._nparts = 0
 68543    this._boy = boy
 68544  
 68545    const parserCfg = {
 68546      boundary,
 68547      maxHeaderPairs: headerPairsLimit,
 68548      maxHeaderSize: headerSizeLimit,
 68549      partHwm: fileOpts.highWaterMark,
 68550      highWaterMark: cfg.highWaterMark
 68551    }
 68552  
 68553    this.parser = new Dicer(parserCfg)
 68554    this.parser.on('drain', function () {
 68555      self._needDrain = false
 68556      if (self._cb && !self._pause) {
 68557        const cb = self._cb
 68558        self._cb = undefined
 68559        cb()
 68560      }
 68561    }).on('part', function onPart (part) {
 68562      if (++self._nparts > partsLimit) {
 68563        self.parser.removeListener('part', onPart)
 68564        self.parser.on('part', skipPart)
 68565        boy.hitPartsLimit = true
 68566        boy.emit('partsLimit')
 68567        return skipPart(part)
 68568      }
 68569  
 68570      // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let
 68571      // us emit 'end' early since we know the part has ended if we are already
 68572      // seeing the next part
 68573      if (curField) {
 68574        const field = curField
 68575        field.emit('end')
 68576        field.removeAllListeners('end')
 68577      }
 68578  
 68579      part.on('header', function (header) {
 68580        let contype
 68581        let fieldname
 68582        let parsed
 68583        let charset
 68584        let encoding
 68585        let filename
 68586        let nsize = 0
 68587  
 68588        if (header['content-type']) {
 68589          parsed = parseParams(header['content-type'][0])
 68590          if (parsed[0]) {
 68591            contype = parsed[0].toLowerCase()
 68592            for (i = 0, len = parsed.length; i < len; ++i) {
 68593              if (RE_CHARSET.test(parsed[i][0])) {
 68594                charset = parsed[i][1].toLowerCase()
 68595                break
 68596              }
 68597            }
 68598          }
 68599        }
 68600  
 68601        if (contype === undefined) { contype = 'text/plain' }
 68602        if (charset === undefined) { charset = defCharset }
 68603  
 68604        if (header['content-disposition']) {
 68605          parsed = parseParams(header['content-disposition'][0])
 68606          if (!RE_FIELD.test(parsed[0])) { return skipPart(part) }
 68607          for (i = 0, len = parsed.length; i < len; ++i) {
 68608            if (RE_NAME.test(parsed[i][0])) {
 68609              fieldname = parsed[i][1]
 68610            } else if (RE_FILENAME.test(parsed[i][0])) {
 68611              filename = parsed[i][1]
 68612              if (!preservePath) { filename = basename(filename) }
 68613            }
 68614          }
 68615        } else { return skipPart(part) }
 68616  
 68617        if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' }
 68618  
 68619        let onData,
 68620          onEnd
 68621  
 68622        if (isPartAFile(fieldname, contype, filename)) {
 68623          // file/binary field
 68624          if (nfiles === filesLimit) {
 68625            if (!boy.hitFilesLimit) {
 68626              boy.hitFilesLimit = true
 68627              boy.emit('filesLimit')
 68628            }
 68629            return skipPart(part)
 68630          }
 68631  
 68632          ++nfiles
 68633  
 68634          if (boy.listenerCount('file') === 0) {
 68635            self.parser._ignore()
 68636            return
 68637          }
 68638  
 68639          ++nends
 68640          const file = new FileStream(fileOpts)
 68641          curFile = file
 68642          file.on('end', function () {
 68643            --nends
 68644            self._pause = false
 68645            checkFinished()
 68646            if (self._cb && !self._needDrain) {
 68647              const cb = self._cb
 68648              self._cb = undefined
 68649              cb()
 68650            }
 68651          })
 68652          file._read = function (n) {
 68653            if (!self._pause) { return }
 68654            self._pause = false
 68655            if (self._cb && !self._needDrain) {
 68656              const cb = self._cb
 68657              self._cb = undefined
 68658              cb()
 68659            }
 68660          }
 68661          boy.emit('file', fieldname, file, filename, encoding, contype)
 68662  
 68663          onData = function (data) {
 68664            if ((nsize += data.length) > fileSizeLimit) {
 68665              const extralen = fileSizeLimit - nsize + data.length
 68666              if (extralen > 0) { file.push(data.slice(0, extralen)) }
 68667              file.truncated = true
 68668              file.bytesRead = fileSizeLimit
 68669              part.removeAllListeners('data')
 68670              file.emit('limit')
 68671              return
 68672            } else if (!file.push(data)) { self._pause = true }
 68673  
 68674            file.bytesRead = nsize
 68675          }
 68676  
 68677          onEnd = function () {
 68678            curFile = undefined
 68679            file.push(null)
 68680          }
 68681        } else {
 68682          // non-file field
 68683          if (nfields === fieldsLimit) {
 68684            if (!boy.hitFieldsLimit) {
 68685              boy.hitFieldsLimit = true
 68686              boy.emit('fieldsLimit')
 68687            }
 68688            return skipPart(part)
 68689          }
 68690  
 68691          ++nfields
 68692          ++nends
 68693          let buffer = ''
 68694          let truncated = false
 68695          curField = part
 68696  
 68697          onData = function (data) {
 68698            if ((nsize += data.length) > fieldSizeLimit) {
 68699              const extralen = (fieldSizeLimit - (nsize - data.length))
 68700              buffer += data.toString('binary', 0, extralen)
 68701              truncated = true
 68702              part.removeAllListeners('data')
 68703            } else { buffer += data.toString('binary') }
 68704          }
 68705  
 68706          onEnd = function () {
 68707            curField = undefined
 68708            if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) }
 68709            boy.emit('field', fieldname, buffer, false, truncated, encoding, contype)
 68710            --nends
 68711            checkFinished()
 68712          }
 68713        }
 68714  
 68715        /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become
 68716           broken. Streams2/streams3 is a huge black box of confusion, but
 68717           somehow overriding the sync state seems to fix things again (and still
 68718           seems to work for previous node versions).
 68719        */
 68720        part._readableState.sync = false
 68721  
 68722        part.on('data', onData)
 68723        part.on('end', onEnd)
 68724      }).on('error', function (err) {
 68725        if (curFile) { curFile.emit('error', err) }
 68726      })
 68727    }).on('error', function (err) {
 68728      boy.emit('error', err)
 68729    }).on('finish', function () {
 68730      finished = true
 68731      checkFinished()
 68732    })
 68733  }
 68734  
 68735  Multipart.prototype.write = function (chunk, cb) {
 68736    const r = this.parser.write(chunk)
 68737    if (r && !this._pause) {
 68738      cb()
 68739    } else {
 68740      this._needDrain = !r
 68741      this._cb = cb
 68742    }
 68743  }
 68744  
 68745  Multipart.prototype.end = function () {
 68746    const self = this
 68747  
 68748    if (self.parser.writable) {
 68749      self.parser.end()
 68750    } else if (!self._boy._done) {
 68751      process.nextTick(function () {
 68752        self._boy._done = true
 68753        self._boy.emit('finish')
 68754      })
 68755    }
 68756  }
 68757  
 68758  function skipPart (part) {
 68759    part.resume()
 68760  }
 68761  
 68762  function FileStream (opts) {
 68763    Readable.call(this, opts)
 68764  
 68765    this.bytesRead = 0
 68766  
 68767    this.truncated = false
 68768  }
 68769  
 68770  inherits(FileStream, Readable)
 68771  
 68772  FileStream.prototype._read = function (n) {}
 68773  
 68774  module.exports = Multipart
 68775  
 68776  
 68777  /***/ }),
 68778  
 68779  /***/ 78306:
 68780  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 68781  
 68782  "use strict";
 68783  
 68784  
 68785  const Decoder = __nccwpck_require__(27100)
 68786  const decodeText = __nccwpck_require__(84619)
 68787  const getLimit = __nccwpck_require__(21467)
 68788  
 68789  const RE_CHARSET = /^charset$/i
 68790  
 68791  UrlEncoded.detect = /^application\/x-www-form-urlencoded/i
 68792  function UrlEncoded (boy, cfg) {
 68793    const limits = cfg.limits
 68794    const parsedConType = cfg.parsedConType
 68795    this.boy = boy
 68796  
 68797    this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)
 68798    this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100)
 68799    this.fieldsLimit = getLimit(limits, 'fields', Infinity)
 68800  
 68801    let charset
 68802    for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var
 68803      if (Array.isArray(parsedConType[i]) &&
 68804          RE_CHARSET.test(parsedConType[i][0])) {
 68805        charset = parsedConType[i][1].toLowerCase()
 68806        break
 68807      }
 68808    }
 68809  
 68810    if (charset === undefined) { charset = cfg.defCharset || 'utf8' }
 68811  
 68812    this.decoder = new Decoder()
 68813    this.charset = charset
 68814    this._fields = 0
 68815    this._state = 'key'
 68816    this._checkingBytes = true
 68817    this._bytesKey = 0
 68818    this._bytesVal = 0
 68819    this._key = ''
 68820    this._val = ''
 68821    this._keyTrunc = false
 68822    this._valTrunc = false
 68823    this._hitLimit = false
 68824  }
 68825  
 68826  UrlEncoded.prototype.write = function (data, cb) {
 68827    if (this._fields === this.fieldsLimit) {
 68828      if (!this.boy.hitFieldsLimit) {
 68829        this.boy.hitFieldsLimit = true
 68830        this.boy.emit('fieldsLimit')
 68831      }
 68832      return cb()
 68833    }
 68834  
 68835    let idxeq; let idxamp; let i; let p = 0; const len = data.length
 68836  
 68837    while (p < len) {
 68838      if (this._state === 'key') {
 68839        idxeq = idxamp = undefined
 68840        for (i = p; i < len; ++i) {
 68841          if (!this._checkingBytes) { ++p }
 68842          if (data[i] === 0x3D/* = */) {
 68843            idxeq = i
 68844            break
 68845          } else if (data[i] === 0x26/* & */) {
 68846            idxamp = i
 68847            break
 68848          }
 68849          if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) {
 68850            this._hitLimit = true
 68851            break
 68852          } else if (this._checkingBytes) { ++this._bytesKey }
 68853        }
 68854  
 68855        if (idxeq !== undefined) {
 68856          // key with assignment
 68857          if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) }
 68858          this._state = 'val'
 68859  
 68860          this._hitLimit = false
 68861          this._checkingBytes = true
 68862          this._val = ''
 68863          this._bytesVal = 0
 68864          this._valTrunc = false
 68865          this.decoder.reset()
 68866  
 68867          p = idxeq + 1
 68868        } else if (idxamp !== undefined) {
 68869          // key with no assignment
 68870          ++this._fields
 68871          let key; const keyTrunc = this._keyTrunc
 68872          if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key }
 68873  
 68874          this._hitLimit = false
 68875          this._checkingBytes = true
 68876          this._key = ''
 68877          this._bytesKey = 0
 68878          this._keyTrunc = false
 68879          this.decoder.reset()
 68880  
 68881          if (key.length) {
 68882            this.boy.emit('field', decodeText(key, 'binary', this.charset),
 68883              '',
 68884              keyTrunc,
 68885              false)
 68886          }
 68887  
 68888          p = idxamp + 1
 68889          if (this._fields === this.fieldsLimit) { return cb() }
 68890        } else if (this._hitLimit) {
 68891          // we may not have hit the actual limit if there are encoded bytes...
 68892          if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) }
 68893          p = i
 68894          if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) {
 68895            // yep, we actually did hit the limit
 68896            this._checkingBytes = false
 68897            this._keyTrunc = true
 68898          }
 68899        } else {
 68900          if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) }
 68901          p = len
 68902        }
 68903      } else {
 68904        idxamp = undefined
 68905        for (i = p; i < len; ++i) {
 68906          if (!this._checkingBytes) { ++p }
 68907          if (data[i] === 0x26/* & */) {
 68908            idxamp = i
 68909            break
 68910          }
 68911          if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) {
 68912            this._hitLimit = true
 68913            break
 68914          } else if (this._checkingBytes) { ++this._bytesVal }
 68915        }
 68916  
 68917        if (idxamp !== undefined) {
 68918          ++this._fields
 68919          if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) }
 68920          this.boy.emit('field', decodeText(this._key, 'binary', this.charset),
 68921            decodeText(this._val, 'binary', this.charset),
 68922            this._keyTrunc,
 68923            this._valTrunc)
 68924          this._state = 'key'
 68925  
 68926          this._hitLimit = false
 68927          this._checkingBytes = true
 68928          this._key = ''
 68929          this._bytesKey = 0
 68930          this._keyTrunc = false
 68931          this.decoder.reset()
 68932  
 68933          p = idxamp + 1
 68934          if (this._fields === this.fieldsLimit) { return cb() }
 68935        } else if (this._hitLimit) {
 68936          // we may not have hit the actual limit if there are encoded bytes...
 68937          if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) }
 68938          p = i
 68939          if ((this._val === '' && this.fieldSizeLimit === 0) ||
 68940              (this._bytesVal = this._val.length) === this.fieldSizeLimit) {
 68941            // yep, we actually did hit the limit
 68942            this._checkingBytes = false
 68943            this._valTrunc = true
 68944          }
 68945        } else {
 68946          if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) }
 68947          p = len
 68948        }
 68949      }
 68950    }
 68951    cb()
 68952  }
 68953  
 68954  UrlEncoded.prototype.end = function () {
 68955    if (this.boy._done) { return }
 68956  
 68957    if (this._state === 'key' && this._key.length > 0) {
 68958      this.boy.emit('field', decodeText(this._key, 'binary', this.charset),
 68959        '',
 68960        this._keyTrunc,
 68961        false)
 68962    } else if (this._state === 'val') {
 68963      this.boy.emit('field', decodeText(this._key, 'binary', this.charset),
 68964        decodeText(this._val, 'binary', this.charset),
 68965        this._keyTrunc,
 68966        this._valTrunc)
 68967    }
 68968    this.boy._done = true
 68969    this.boy.emit('finish')
 68970  }
 68971  
 68972  module.exports = UrlEncoded
 68973  
 68974  
 68975  /***/ }),
 68976  
 68977  /***/ 27100:
 68978  /***/ ((module) => {
 68979  
 68980  "use strict";
 68981  
 68982  
 68983  const RE_PLUS = /\+/g
 68984  
 68985  const HEX = [
 68986    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 68987    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 68988    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 68989    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
 68990    0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 68991    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 68992    0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 68993    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
 68994  ]
 68995  
 68996  function Decoder () {
 68997    this.buffer = undefined
 68998  }
 68999  Decoder.prototype.write = function (str) {
 69000    // Replace '+' with ' ' before decoding
 69001    str = str.replace(RE_PLUS, ' ')
 69002    let res = ''
 69003    let i = 0; let p = 0; const len = str.length
 69004    for (; i < len; ++i) {
 69005      if (this.buffer !== undefined) {
 69006        if (!HEX[str.charCodeAt(i)]) {
 69007          res += '%' + this.buffer
 69008          this.buffer = undefined
 69009          --i // retry character
 69010        } else {
 69011          this.buffer += str[i]
 69012          ++p
 69013          if (this.buffer.length === 2) {
 69014            res += String.fromCharCode(parseInt(this.buffer, 16))
 69015            this.buffer = undefined
 69016          }
 69017        }
 69018      } else if (str[i] === '%') {
 69019        if (i > p) {
 69020          res += str.substring(p, i)
 69021          p = i
 69022        }
 69023        this.buffer = ''
 69024        ++p
 69025      }
 69026    }
 69027    if (p < len && this.buffer === undefined) { res += str.substring(p) }
 69028    return res
 69029  }
 69030  Decoder.prototype.reset = function () {
 69031    this.buffer = undefined
 69032  }
 69033  
 69034  module.exports = Decoder
 69035  
 69036  
 69037  /***/ }),
 69038  
 69039  /***/ 48647:
 69040  /***/ ((module) => {
 69041  
 69042  "use strict";
 69043  
 69044  
 69045  module.exports = function basename (path) {
 69046    if (typeof path !== 'string') { return '' }
 69047    for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var
 69048      switch (path.charCodeAt(i)) {
 69049        case 0x2F: // '/'
 69050        case 0x5C: // '\'
 69051          path = path.slice(i + 1)
 69052          return (path === '..' || path === '.' ? '' : path)
 69053      }
 69054    }
 69055    return (path === '..' || path === '.' ? '' : path)
 69056  }
 69057  
 69058  
 69059  /***/ }),
 69060  
 69061  /***/ 84619:
 69062  /***/ (function(module) {
 69063  
 69064  "use strict";
 69065  
 69066  
 69067  // Node has always utf-8
 69068  const utf8Decoder = new TextDecoder('utf-8')
 69069  const textDecoders = new Map([
 69070    ['utf-8', utf8Decoder],
 69071    ['utf8', utf8Decoder]
 69072  ])
 69073  
 69074  function getDecoder (charset) {
 69075    let lc
 69076    while (true) {
 69077      switch (charset) {
 69078        case 'utf-8':
 69079        case 'utf8':
 69080          return decoders.utf8
 69081        case 'latin1':
 69082        case 'ascii': // TODO: Make these a separate, strict decoder?
 69083        case 'us-ascii':
 69084        case 'iso-8859-1':
 69085        case 'iso8859-1':
 69086        case 'iso88591':
 69087        case 'iso_8859-1':
 69088        case 'windows-1252':
 69089        case 'iso_8859-1:1987':
 69090        case 'cp1252':
 69091        case 'x-cp1252':
 69092          return decoders.latin1
 69093        case 'utf16le':
 69094        case 'utf-16le':
 69095        case 'ucs2':
 69096        case 'ucs-2':
 69097          return decoders.utf16le
 69098        case 'base64':
 69099          return decoders.base64
 69100        default:
 69101          if (lc === undefined) {
 69102            lc = true
 69103            charset = charset.toLowerCase()
 69104            continue
 69105          }
 69106          return decoders.other.bind(charset)
 69107      }
 69108    }
 69109  }
 69110  
 69111  const decoders = {
 69112    utf8: (data, sourceEncoding) => {
 69113      if (data.length === 0) {
 69114        return ''
 69115      }
 69116      if (typeof data === 'string') {
 69117        data = Buffer.from(data, sourceEncoding)
 69118      }
 69119      return data.utf8Slice(0, data.length)
 69120    },
 69121  
 69122    latin1: (data, sourceEncoding) => {
 69123      if (data.length === 0) {
 69124        return ''
 69125      }
 69126      if (typeof data === 'string') {
 69127        return data
 69128      }
 69129      return data.latin1Slice(0, data.length)
 69130    },
 69131  
 69132    utf16le: (data, sourceEncoding) => {
 69133      if (data.length === 0) {
 69134        return ''
 69135      }
 69136      if (typeof data === 'string') {
 69137        data = Buffer.from(data, sourceEncoding)
 69138      }
 69139      return data.ucs2Slice(0, data.length)
 69140    },
 69141  
 69142    base64: (data, sourceEncoding) => {
 69143      if (data.length === 0) {
 69144        return ''
 69145      }
 69146      if (typeof data === 'string') {
 69147        data = Buffer.from(data, sourceEncoding)
 69148      }
 69149      return data.base64Slice(0, data.length)
 69150    },
 69151  
 69152    other: (data, sourceEncoding) => {
 69153      if (data.length === 0) {
 69154        return ''
 69155      }
 69156      if (typeof data === 'string') {
 69157        data = Buffer.from(data, sourceEncoding)
 69158      }
 69159  
 69160      if (textDecoders.has(this.toString())) {
 69161        try {
 69162          return textDecoders.get(this).decode(data)
 69163        } catch {}
 69164      }
 69165      return typeof data === 'string'
 69166        ? data
 69167        : data.toString()
 69168    }
 69169  }
 69170  
 69171  function decodeText (text, sourceEncoding, destEncoding) {
 69172    if (text) {
 69173      return getDecoder(destEncoding)(text, sourceEncoding)
 69174    }
 69175    return text
 69176  }
 69177  
 69178  module.exports = decodeText
 69179  
 69180  
 69181  /***/ }),
 69182  
 69183  /***/ 21467:
 69184  /***/ ((module) => {
 69185  
 69186  "use strict";
 69187  
 69188  
 69189  module.exports = function getLimit (limits, name, defaultLimit) {
 69190    if (
 69191      !limits ||
 69192      limits[name] === undefined ||
 69193      limits[name] === null
 69194    ) { return defaultLimit }
 69195  
 69196    if (
 69197      typeof limits[name] !== 'number' ||
 69198      isNaN(limits[name])
 69199    ) { throw new TypeError('Limit ' + name + ' is not a valid number') }
 69200  
 69201    return limits[name]
 69202  }
 69203  
 69204  
 69205  /***/ }),
 69206  
 69207  /***/ 31854:
 69208  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
 69209  
 69210  "use strict";
 69211  /* eslint-disable object-property-newline */
 69212  
 69213  
 69214  const decodeText = __nccwpck_require__(84619)
 69215  
 69216  const RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g
 69217  
 69218  const EncodedLookup = {
 69219    '%00': '\x00', '%01': '\x01', '%02': '\x02', '%03': '\x03', '%04': '\x04',
 69220    '%05': '\x05', '%06': '\x06', '%07': '\x07', '%08': '\x08', '%09': '\x09',
 69221    '%0a': '\x0a', '%0A': '\x0a', '%0b': '\x0b', '%0B': '\x0b', '%0c': '\x0c',
 69222    '%0C': '\x0c', '%0d': '\x0d', '%0D': '\x0d', '%0e': '\x0e', '%0E': '\x0e',
 69223    '%0f': '\x0f', '%0F': '\x0f', '%10': '\x10', '%11': '\x11', '%12': '\x12',
 69224    '%13': '\x13', '%14': '\x14', '%15': '\x15', '%16': '\x16', '%17': '\x17',
 69225    '%18': '\x18', '%19': '\x19', '%1a': '\x1a', '%1A': '\x1a', '%1b': '\x1b',
 69226    '%1B': '\x1b', '%1c': '\x1c', '%1C': '\x1c', '%1d': '\x1d', '%1D': '\x1d',
 69227    '%1e': '\x1e', '%1E': '\x1e', '%1f': '\x1f', '%1F': '\x1f', '%20': '\x20',
 69228    '%21': '\x21', '%22': '\x22', '%23': '\x23', '%24': '\x24', '%25': '\x25',
 69229    '%26': '\x26', '%27': '\x27', '%28': '\x28', '%29': '\x29', '%2a': '\x2a',
 69230    '%2A': '\x2a', '%2b': '\x2b', '%2B': '\x2b', '%2c': '\x2c', '%2C': '\x2c',
 69231    '%2d': '\x2d', '%2D': '\x2d', '%2e': '\x2e', '%2E': '\x2e', '%2f': '\x2f',
 69232    '%2F': '\x2f', '%30': '\x30', '%31': '\x31', '%32': '\x32', '%33': '\x33',
 69233    '%34': '\x34', '%35': '\x35', '%36': '\x36', '%37': '\x37', '%38': '\x38',
 69234    '%39': '\x39', '%3a': '\x3a', '%3A': '\x3a', '%3b': '\x3b', '%3B': '\x3b',
 69235    '%3c': '\x3c', '%3C': '\x3c', '%3d': '\x3d', '%3D': '\x3d', '%3e': '\x3e',
 69236    '%3E': '\x3e', '%3f': '\x3f', '%3F': '\x3f', '%40': '\x40', '%41': '\x41',
 69237    '%42': '\x42', '%43': '\x43', '%44': '\x44', '%45': '\x45', '%46': '\x46',
 69238    '%47': '\x47', '%48': '\x48', '%49': '\x49', '%4a': '\x4a', '%4A': '\x4a',
 69239    '%4b': '\x4b', '%4B': '\x4b', '%4c': '\x4c', '%4C': '\x4c', '%4d': '\x4d',
 69240    '%4D': '\x4d', '%4e': '\x4e', '%4E': '\x4e', '%4f': '\x4f', '%4F': '\x4f',
 69241    '%50': '\x50', '%51': '\x51', '%52': '\x52', '%53': '\x53', '%54': '\x54',
 69242    '%55': '\x55', '%56': '\x56', '%57': '\x57', '%58': '\x58', '%59': '\x59',
 69243    '%5a': '\x5a', '%5A': '\x5a', '%5b': '\x5b', '%5B': '\x5b', '%5c': '\x5c',
 69244    '%5C': '\x5c', '%5d': '\x5d', '%5D': '\x5d', '%5e': '\x5e', '%5E': '\x5e',
 69245    '%5f': '\x5f', '%5F': '\x5f', '%60': '\x60', '%61': '\x61', '%62': '\x62',
 69246    '%63': '\x63', '%64': '\x64', '%65': '\x65', '%66': '\x66', '%67': '\x67',
 69247    '%68': '\x68', '%69': '\x69', '%6a': '\x6a', '%6A': '\x6a', '%6b': '\x6b',
 69248    '%6B': '\x6b', '%6c': '\x6c', '%6C': '\x6c', '%6d': '\x6d', '%6D': '\x6d',
 69249    '%6e': '\x6e', '%6E': '\x6e', '%6f': '\x6f', '%6F': '\x6f', '%70': '\x70',
 69250    '%71': '\x71', '%72': '\x72', '%73': '\x73', '%74': '\x74', '%75': '\x75',
 69251    '%76': '\x76', '%77': '\x77', '%78': '\x78', '%79': '\x79', '%7a': '\x7a',
 69252    '%7A': '\x7a', '%7b': '\x7b', '%7B': '\x7b', '%7c': '\x7c', '%7C': '\x7c',
 69253    '%7d': '\x7d', '%7D': '\x7d', '%7e': '\x7e', '%7E': '\x7e', '%7f': '\x7f',
 69254    '%7F': '\x7f', '%80': '\x80', '%81': '\x81', '%82': '\x82', '%83': '\x83',
 69255    '%84': '\x84', '%85': '\x85', '%86': '\x86', '%87': '\x87', '%88': '\x88',
 69256    '%89': '\x89', '%8a': '\x8a', '%8A': '\x8a', '%8b': '\x8b', '%8B': '\x8b',
 69257    '%8c': '\x8c', '%8C': '\x8c', '%8d': '\x8d', '%8D': '\x8d', '%8e': '\x8e',
 69258    '%8E': '\x8e', '%8f': '\x8f', '%8F': '\x8f', '%90': '\x90', '%91': '\x91',
 69259    '%92': '\x92', '%93': '\x93', '%94': '\x94', '%95': '\x95', '%96': '\x96',
 69260    '%97': '\x97', '%98': '\x98', '%99': '\x99', '%9a': '\x9a', '%9A': '\x9a',
 69261    '%9b': '\x9b', '%9B': '\x9b', '%9c': '\x9c', '%9C': '\x9c', '%9d': '\x9d',
 69262    '%9D': '\x9d', '%9e': '\x9e', '%9E': '\x9e', '%9f': '\x9f', '%9F': '\x9f',
 69263    '%a0': '\xa0', '%A0': '\xa0', '%a1': '\xa1', '%A1': '\xa1', '%a2': '\xa2',
 69264    '%A2': '\xa2', '%a3': '\xa3', '%A3': '\xa3', '%a4': '\xa4', '%A4': '\xa4',
 69265    '%a5': '\xa5', '%A5': '\xa5', '%a6': '\xa6', '%A6': '\xa6', '%a7': '\xa7',
 69266    '%A7': '\xa7', '%a8': '\xa8', '%A8': '\xa8', '%a9': '\xa9', '%A9': '\xa9',
 69267    '%aa': '\xaa', '%Aa': '\xaa', '%aA': '\xaa', '%AA': '\xaa', '%ab': '\xab',
 69268    '%Ab': '\xab', '%aB': '\xab', '%AB': '\xab', '%ac': '\xac', '%Ac': '\xac',
 69269    '%aC': '\xac', '%AC': '\xac', '%ad': '\xad', '%Ad': '\xad', '%aD': '\xad',
 69270    '%AD': '\xad', '%ae': '\xae', '%Ae': '\xae', '%aE': '\xae', '%AE': '\xae',
 69271    '%af': '\xaf', '%Af': '\xaf', '%aF': '\xaf', '%AF': '\xaf', '%b0': '\xb0',
 69272    '%B0': '\xb0', '%b1': '\xb1', '%B1': '\xb1', '%b2': '\xb2', '%B2': '\xb2',
 69273    '%b3': '\xb3', '%B3': '\xb3', '%b4': '\xb4', '%B4': '\xb4', '%b5': '\xb5',
 69274    '%B5': '\xb5', '%b6': '\xb6', '%B6': '\xb6', '%b7': '\xb7', '%B7': '\xb7',
 69275    '%b8': '\xb8', '%B8': '\xb8', '%b9': '\xb9', '%B9': '\xb9', '%ba': '\xba',
 69276    '%Ba': '\xba', '%bA': '\xba', '%BA': '\xba', '%bb': '\xbb', '%Bb': '\xbb',
 69277    '%bB': '\xbb', '%BB': '\xbb', '%bc': '\xbc', '%Bc': '\xbc', '%bC': '\xbc',
 69278    '%BC': '\xbc', '%bd': '\xbd', '%Bd': '\xbd', '%bD': '\xbd', '%BD': '\xbd',
 69279    '%be': '\xbe', '%Be': '\xbe', '%bE': '\xbe', '%BE': '\xbe', '%bf': '\xbf',
 69280    '%Bf': '\xbf', '%bF': '\xbf', '%BF': '\xbf', '%c0': '\xc0', '%C0': '\xc0',
 69281    '%c1': '\xc1', '%C1': '\xc1', '%c2': '\xc2', '%C2': '\xc2', '%c3': '\xc3',
 69282    '%C3': '\xc3', '%c4': '\xc4', '%C4': '\xc4', '%c5': '\xc5', '%C5': '\xc5',
 69283    '%c6': '\xc6', '%C6': '\xc6', '%c7': '\xc7', '%C7': '\xc7', '%c8': '\xc8',
 69284    '%C8': '\xc8', '%c9': '\xc9', '%C9': '\xc9', '%ca': '\xca', '%Ca': '\xca',
 69285    '%cA': '\xca', '%CA': '\xca', '%cb': '\xcb', '%Cb': '\xcb', '%cB': '\xcb',
 69286    '%CB': '\xcb', '%cc': '\xcc', '%Cc': '\xcc', '%cC': '\xcc', '%CC': '\xcc',
 69287    '%cd': '\xcd', '%Cd': '\xcd', '%cD': '\xcd', '%CD': '\xcd', '%ce': '\xce',
 69288    '%Ce': '\xce', '%cE': '\xce', '%CE': '\xce', '%cf': '\xcf', '%Cf': '\xcf',
 69289    '%cF': '\xcf', '%CF': '\xcf', '%d0': '\xd0', '%D0': '\xd0', '%d1': '\xd1',
 69290    '%D1': '\xd1', '%d2': '\xd2', '%D2': '\xd2', '%d3': '\xd3', '%D3': '\xd3',
 69291    '%d4': '\xd4', '%D4': '\xd4', '%d5': '\xd5', '%D5': '\xd5', '%d6': '\xd6',
 69292    '%D6': '\xd6', '%d7': '\xd7', '%D7': '\xd7', '%d8': '\xd8', '%D8': '\xd8',
 69293    '%d9': '\xd9', '%D9': '\xd9', '%da': '\xda', '%Da': '\xda', '%dA': '\xda',
 69294    '%DA': '\xda', '%db': '\xdb', '%Db': '\xdb', '%dB': '\xdb', '%DB': '\xdb',
 69295    '%dc': '\xdc', '%Dc': '\xdc', '%dC': '\xdc', '%DC': '\xdc', '%dd': '\xdd',
 69296    '%Dd': '\xdd', '%dD': '\xdd', '%DD': '\xdd', '%de': '\xde', '%De': '\xde',
 69297    '%dE': '\xde', '%DE': '\xde', '%df': '\xdf', '%Df': '\xdf', '%dF': '\xdf',
 69298    '%DF': '\xdf', '%e0': '\xe0', '%E0': '\xe0', '%e1': '\xe1', '%E1': '\xe1',
 69299    '%e2': '\xe2', '%E2': '\xe2', '%e3': '\xe3', '%E3': '\xe3', '%e4': '\xe4',
 69300    '%E4': '\xe4', '%e5': '\xe5', '%E5': '\xe5', '%e6': '\xe6', '%E6': '\xe6',
 69301    '%e7': '\xe7', '%E7': '\xe7', '%e8': '\xe8', '%E8': '\xe8', '%e9': '\xe9',
 69302    '%E9': '\xe9', '%ea': '\xea', '%Ea': '\xea', '%eA': '\xea', '%EA': '\xea',
 69303    '%eb': '\xeb', '%Eb': '\xeb', '%eB': '\xeb', '%EB': '\xeb', '%ec': '\xec',
 69304    '%Ec': '\xec', '%eC': '\xec', '%EC': '\xec', '%ed': '\xed', '%Ed': '\xed',
 69305    '%eD': '\xed', '%ED': '\xed', '%ee': '\xee', '%Ee': '\xee', '%eE': '\xee',
 69306    '%EE': '\xee', '%ef': '\xef', '%Ef': '\xef', '%eF': '\xef', '%EF': '\xef',
 69307    '%f0': '\xf0', '%F0': '\xf0', '%f1': '\xf1', '%F1': '\xf1', '%f2': '\xf2',
 69308    '%F2': '\xf2', '%f3': '\xf3', '%F3': '\xf3', '%f4': '\xf4', '%F4': '\xf4',
 69309    '%f5': '\xf5', '%F5': '\xf5', '%f6': '\xf6', '%F6': '\xf6', '%f7': '\xf7',
 69310    '%F7': '\xf7', '%f8': '\xf8', '%F8': '\xf8', '%f9': '\xf9', '%F9': '\xf9',
 69311    '%fa': '\xfa', '%Fa': '\xfa', '%fA': '\xfa', '%FA': '\xfa', '%fb': '\xfb',
 69312    '%Fb': '\xfb', '%fB': '\xfb', '%FB': '\xfb', '%fc': '\xfc', '%Fc': '\xfc',
 69313    '%fC': '\xfc', '%FC': '\xfc', '%fd': '\xfd', '%Fd': '\xfd', '%fD': '\xfd',
 69314    '%FD': '\xfd', '%fe': '\xfe', '%Fe': '\xfe', '%fE': '\xfe', '%FE': '\xfe',
 69315    '%ff': '\xff', '%Ff': '\xff', '%fF': '\xff', '%FF': '\xff'
 69316  }
 69317  
 69318  function encodedReplacer (match) {
 69319    return EncodedLookup[match]
 69320  }
 69321  
 69322  const STATE_KEY = 0
 69323  const STATE_VALUE = 1
 69324  const STATE_CHARSET = 2
 69325  const STATE_LANG = 3
 69326  
 69327  function parseParams (str) {
 69328    const res = []
 69329    let state = STATE_KEY
 69330    let charset = ''
 69331    let inquote = false
 69332    let escaping = false
 69333    let p = 0
 69334    let tmp = ''
 69335    const len = str.length
 69336  
 69337    for (var i = 0; i < len; ++i) { // eslint-disable-line no-var
 69338      const char = str[i]
 69339      if (char === '\\' && inquote) {
 69340        if (escaping) { escaping = false } else {
 69341          escaping = true
 69342          continue
 69343        }
 69344      } else if (char === '"') {
 69345        if (!escaping) {
 69346          if (inquote) {
 69347            inquote = false
 69348            state = STATE_KEY
 69349          } else { inquote = true }
 69350          continue
 69351        } else { escaping = false }
 69352      } else {
 69353        if (escaping && inquote) { tmp += '\\' }
 69354        escaping = false
 69355        if ((state === STATE_CHARSET || state === STATE_LANG) && char === "'") {
 69356          if (state === STATE_CHARSET) {
 69357            state = STATE_LANG
 69358            charset = tmp.substring(1)
 69359          } else { state = STATE_VALUE }
 69360          tmp = ''
 69361          continue
 69362        } else if (state === STATE_KEY &&
 69363          (char === '*' || char === '=') &&
 69364          res.length) {
 69365          state = char === '*'
 69366            ? STATE_CHARSET
 69367            : STATE_VALUE
 69368          res[p] = [tmp, undefined]
 69369          tmp = ''
 69370          continue
 69371        } else if (!inquote && char === ';') {
 69372          state = STATE_KEY
 69373          if (charset) {
 69374            if (tmp.length) {
 69375              tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),
 69376                'binary',
 69377                charset)
 69378            }
 69379            charset = ''
 69380          } else if (tmp.length) {
 69381            tmp = decodeText(tmp, 'binary', 'utf8')
 69382          }
 69383          if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp }
 69384          tmp = ''
 69385          ++p
 69386          continue
 69387        } else if (!inquote && (char === ' ' || char === '\t')) { continue }
 69388      }
 69389      tmp += char
 69390    }
 69391    if (charset && tmp.length) {
 69392      tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),
 69393        'binary',
 69394        charset)
 69395    } else if (tmp) {
 69396      tmp = decodeText(tmp, 'binary', 'utf8')
 69397    }
 69398  
 69399    if (res[p] === undefined) {
 69400      if (tmp) { res[p] = tmp }
 69401    } else { res[p][1] = tmp }
 69402  
 69403    return res
 69404  }
 69405  
 69406  module.exports = parseParams
 69407  
 69408  
 69409  /***/ }),
 69410  
 69411  /***/ 24446:
 69412  /***/ ((__unused_webpack_module, exports) => {
 69413  
 69414  "use strict";
 69415  
 69416  /**
 69417   * @module LRUCache
 69418   */
 69419  Object.defineProperty(exports, "__esModule", ({ value: true }));
 69420  exports.LRUCache = void 0;
 69421  const perf = typeof performance === 'object' &&
 69422      performance &&
 69423      typeof performance.now === 'function'
 69424      ? performance
 69425      : Date;
 69426  const warned = new Set();
 69427  /* c8 ignore start */
 69428  const PROCESS = (typeof process === 'object' && !!process ? process : {});
 69429  /* c8 ignore start */
 69430  const emitWarning = (msg, type, code, fn) => {
 69431      typeof PROCESS.emitWarning === 'function'
 69432          ? PROCESS.emitWarning(msg, type, code, fn)
 69433          : console.error(`[${code}] ${type}: ${msg}`);
 69434  };
 69435  let AC = globalThis.AbortController;
 69436  let AS = globalThis.AbortSignal;
 69437  /* c8 ignore start */
 69438  if (typeof AC === 'undefined') {
 69439      //@ts-ignore
 69440      AS = class AbortSignal {
 69441          onabort;
 69442          _onabort = [];
 69443          reason;
 69444          aborted = false;
 69445          addEventListener(_, fn) {
 69446              this._onabort.push(fn);
 69447          }
 69448      };
 69449      //@ts-ignore
 69450      AC = class AbortController {
 69451          constructor() {
 69452              warnACPolyfill();
 69453          }
 69454          signal = new AS();
 69455          abort(reason) {
 69456              if (this.signal.aborted)
 69457                  return;
 69458              //@ts-ignore
 69459              this.signal.reason = reason;
 69460              //@ts-ignore
 69461              this.signal.aborted = true;
 69462              //@ts-ignore
 69463              for (const fn of this.signal._onabort) {
 69464                  fn(reason);
 69465              }
 69466              this.signal.onabort?.(reason);
 69467          }
 69468      };
 69469      let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';
 69470      const warnACPolyfill = () => {
 69471          if (!printACPolyfillWarning)
 69472              return;
 69473          printACPolyfillWarning = false;
 69474          emitWarning('AbortController is not defined. If using lru-cache in ' +
 69475              'node 14, load an AbortController polyfill from the ' +
 69476              '`node-abort-controller` package. A minimal polyfill is ' +
 69477              'provided for use by LRUCache.fetch(), but it should not be ' +
 69478              'relied upon in other contexts (eg, passing it to other APIs that ' +
 69479              'use AbortController/AbortSignal might have undesirable effects). ' +
 69480              'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);
 69481      };
 69482  }
 69483  /* c8 ignore stop */
 69484  const shouldWarn = (code) => !warned.has(code);
 69485  const TYPE = Symbol('type');
 69486  const isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);
 69487  /* c8 ignore start */
 69488  // This is a little bit ridiculous, tbh.
 69489  // The maximum array length is 2^32-1 or thereabouts on most JS impls.
 69490  // And well before that point, you're caching the entire world, I mean,
 69491  // that's ~32GB of just integers for the next/prev links, plus whatever
 69492  // else to hold that many keys and values.  Just filling the memory with
 69493  // zeroes at init time is brutal when you get that big.
 69494  // But why not be complete?
 69495  // Maybe in the future, these limits will have expanded.
 69496  const getUintArray = (max) => !isPosInt(max)
 69497      ? null
 69498      : max <= Math.pow(2, 8)
 69499          ? Uint8Array
 69500          : max <= Math.pow(2, 16)
 69501              ? Uint16Array
 69502              : max <= Math.pow(2, 32)
 69503                  ? Uint32Array
 69504                  : max <= Number.MAX_SAFE_INTEGER
 69505                      ? ZeroArray
 69506                      : null;
 69507  /* c8 ignore stop */
 69508  class ZeroArray extends Array {
 69509      constructor(size) {
 69510          super(size);
 69511          this.fill(0);
 69512      }
 69513  }
 69514  class Stack {
 69515      heap;
 69516      length;
 69517      // private constructor
 69518      static #constructing = false;
 69519      static create(max) {
 69520          const HeapCls = getUintArray(max);
 69521          if (!HeapCls)
 69522              return [];
 69523          Stack.#constructing = true;
 69524          const s = new Stack(max, HeapCls);
 69525          Stack.#constructing = false;
 69526          return s;
 69527      }
 69528      constructor(max, HeapCls) {
 69529          /* c8 ignore start */
 69530          if (!Stack.#constructing) {
 69531              throw new TypeError('instantiate Stack using Stack.create(n)');
 69532          }
 69533          /* c8 ignore stop */
 69534          this.heap = new HeapCls(max);
 69535          this.length = 0;
 69536      }
 69537      push(n) {
 69538          this.heap[this.length++] = n;
 69539      }
 69540      pop() {
 69541          return this.heap[--this.length];
 69542      }
 69543  }
 69544  /**
 69545   * Default export, the thing you're using this module to get.
 69546   *
 69547   * All properties from the options object (with the exception of
 69548   * {@link OptionsBase.max} and {@link OptionsBase.maxSize}) are added as
 69549   * normal public members. (`max` and `maxBase` are read-only getters.)
 69550   * Changing any of these will alter the defaults for subsequent method calls,
 69551   * but is otherwise safe.
 69552   */
 69553  class LRUCache {
 69554      // properties coming in from the options of these, only max and maxSize
 69555      // really *need* to be protected. The rest can be modified, as they just
 69556      // set defaults for various methods.
 69557      #max;
 69558      #maxSize;
 69559      #dispose;
 69560      #disposeAfter;
 69561      #fetchMethod;
 69562      /**
 69563       * {@link LRUCache.OptionsBase.ttl}
 69564       */
 69565      ttl;
 69566      /**
 69567       * {@link LRUCache.OptionsBase.ttlResolution}
 69568       */
 69569      ttlResolution;
 69570      /**
 69571       * {@link LRUCache.OptionsBase.ttlAutopurge}
 69572       */
 69573      ttlAutopurge;
 69574      /**
 69575       * {@link LRUCache.OptionsBase.updateAgeOnGet}
 69576       */
 69577      updateAgeOnGet;
 69578      /**
 69579       * {@link LRUCache.OptionsBase.updateAgeOnHas}
 69580       */
 69581      updateAgeOnHas;
 69582      /**
 69583       * {@link LRUCache.OptionsBase.allowStale}
 69584       */
 69585      allowStale;
 69586      /**
 69587       * {@link LRUCache.OptionsBase.noDisposeOnSet}
 69588       */
 69589      noDisposeOnSet;
 69590      /**
 69591       * {@link LRUCache.OptionsBase.noUpdateTTL}
 69592       */
 69593      noUpdateTTL;
 69594      /**
 69595       * {@link LRUCache.OptionsBase.maxEntrySize}
 69596       */
 69597      maxEntrySize;
 69598      /**
 69599       * {@link LRUCache.OptionsBase.sizeCalculation}
 69600       */
 69601      sizeCalculation;
 69602      /**
 69603       * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}
 69604       */
 69605      noDeleteOnFetchRejection;
 69606      /**
 69607       * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}
 69608       */
 69609      noDeleteOnStaleGet;
 69610      /**
 69611       * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}
 69612       */
 69613      allowStaleOnFetchAbort;
 69614      /**
 69615       * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}
 69616       */
 69617      allowStaleOnFetchRejection;
 69618      /**
 69619       * {@link LRUCache.OptionsBase.ignoreFetchAbort}
 69620       */
 69621      ignoreFetchAbort;
 69622      // computed properties
 69623      #size;
 69624      #calculatedSize;
 69625      #keyMap;
 69626      #keyList;
 69627      #valList;
 69628      #next;
 69629      #prev;
 69630      #head;
 69631      #tail;
 69632      #free;
 69633      #disposed;
 69634      #sizes;
 69635      #starts;
 69636      #ttls;
 69637      #hasDispose;
 69638      #hasFetchMethod;
 69639      #hasDisposeAfter;
 69640      /**
 69641       * Do not call this method unless you need to inspect the
 69642       * inner workings of the cache.  If anything returned by this
 69643       * object is modified in any way, strange breakage may occur.
 69644       *
 69645       * These fields are private for a reason!
 69646       *
 69647       * @internal
 69648       */
 69649      static unsafeExposeInternals(c) {
 69650          return {
 69651              // properties
 69652              starts: c.#starts,
 69653              ttls: c.#ttls,
 69654              sizes: c.#sizes,
 69655              keyMap: c.#keyMap,
 69656              keyList: c.#keyList,
 69657              valList: c.#valList,
 69658              next: c.#next,
 69659              prev: c.#prev,
 69660              get head() {
 69661                  return c.#head;
 69662              },
 69663              get tail() {
 69664                  return c.#tail;
 69665              },
 69666              free: c.#free,
 69667              // methods
 69668              isBackgroundFetch: (p) => c.#isBackgroundFetch(p),
 69669              backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),
 69670              moveToTail: (index) => c.#moveToTail(index),
 69671              indexes: (options) => c.#indexes(options),
 69672              rindexes: (options) => c.#rindexes(options),
 69673              isStale: (index) => c.#isStale(index),
 69674          };
 69675      }
 69676      // Protected read-only members
 69677      /**
 69678       * {@link LRUCache.OptionsBase.max} (read-only)
 69679       */
 69680      get max() {
 69681          return this.#max;
 69682      }
 69683      /**
 69684       * {@link LRUCache.OptionsBase.maxSize} (read-only)
 69685       */
 69686      get maxSize() {
 69687          return this.#maxSize;
 69688      }
 69689      /**
 69690       * The total computed size of items in the cache (read-only)
 69691       */
 69692      get calculatedSize() {
 69693          return this.#calculatedSize;
 69694      }
 69695      /**
 69696       * The number of items stored in the cache (read-only)
 69697       */
 69698      get size() {
 69699          return this.#size;
 69700      }
 69701      /**
 69702       * {@link LRUCache.OptionsBase.fetchMethod} (read-only)
 69703       */
 69704      get fetchMethod() {
 69705          return this.#fetchMethod;
 69706      }
 69707      /**
 69708       * {@link LRUCache.OptionsBase.dispose} (read-only)
 69709       */
 69710      get dispose() {
 69711          return this.#dispose;
 69712      }
 69713      /**
 69714       * {@link LRUCache.OptionsBase.disposeAfter} (read-only)
 69715       */
 69716      get disposeAfter() {
 69717          return this.#disposeAfter;
 69718      }
 69719      constructor(options) {
 69720          const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;
 69721          if (max !== 0 && !isPosInt(max)) {
 69722              throw new TypeError('max option must be a nonnegative integer');
 69723          }
 69724          const UintArray = max ? getUintArray(max) : Array;
 69725          if (!UintArray) {
 69726              throw new Error('invalid max value: ' + max);
 69727          }
 69728          this.#max = max;
 69729          this.#maxSize = maxSize;
 69730          this.maxEntrySize = maxEntrySize || this.#maxSize;
 69731          this.sizeCalculation = sizeCalculation;
 69732          if (this.sizeCalculation) {
 69733              if (!this.#maxSize && !this.maxEntrySize) {
 69734                  throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');
 69735              }
 69736              if (typeof this.sizeCalculation !== 'function') {
 69737                  throw new TypeError('sizeCalculation set to non-function');
 69738              }
 69739          }
 69740          if (fetchMethod !== undefined &&
 69741              typeof fetchMethod !== 'function') {
 69742              throw new TypeError('fetchMethod must be a function if specified');
 69743          }
 69744          this.#fetchMethod = fetchMethod;
 69745          this.#hasFetchMethod = !!fetchMethod;
 69746          this.#keyMap = new Map();
 69747          this.#keyList = new Array(max).fill(undefined);
 69748          this.#valList = new Array(max).fill(undefined);
 69749          this.#next = new UintArray(max);
 69750          this.#prev = new UintArray(max);
 69751          this.#head = 0;
 69752          this.#tail = 0;
 69753          this.#free = Stack.create(max);
 69754          this.#size = 0;
 69755          this.#calculatedSize = 0;
 69756          if (typeof dispose === 'function') {
 69757              this.#dispose = dispose;
 69758          }
 69759          if (typeof disposeAfter === 'function') {
 69760              this.#disposeAfter = disposeAfter;
 69761              this.#disposed = [];
 69762          }
 69763          else {
 69764              this.#disposeAfter = undefined;
 69765              this.#disposed = undefined;
 69766          }
 69767          this.#hasDispose = !!this.#dispose;
 69768          this.#hasDisposeAfter = !!this.#disposeAfter;
 69769          this.noDisposeOnSet = !!noDisposeOnSet;
 69770          this.noUpdateTTL = !!noUpdateTTL;
 69771          this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;
 69772          this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;
 69773          this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;
 69774          this.ignoreFetchAbort = !!ignoreFetchAbort;
 69775          // NB: maxEntrySize is set to maxSize if it's set
 69776          if (this.maxEntrySize !== 0) {
 69777              if (this.#maxSize !== 0) {
 69778                  if (!isPosInt(this.#maxSize)) {
 69779                      throw new TypeError('maxSize must be a positive integer if specified');
 69780                  }
 69781              }
 69782              if (!isPosInt(this.maxEntrySize)) {
 69783                  throw new TypeError('maxEntrySize must be a positive integer if specified');
 69784              }
 69785              this.#initializeSizeTracking();
 69786          }
 69787          this.allowStale = !!allowStale;
 69788          this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;
 69789          this.updateAgeOnGet = !!updateAgeOnGet;
 69790          this.updateAgeOnHas = !!updateAgeOnHas;
 69791          this.ttlResolution =
 69792              isPosInt(ttlResolution) || ttlResolution === 0
 69793                  ? ttlResolution
 69794                  : 1;
 69795          this.ttlAutopurge = !!ttlAutopurge;
 69796          this.ttl = ttl || 0;
 69797          if (this.ttl) {
 69798              if (!isPosInt(this.ttl)) {
 69799                  throw new TypeError('ttl must be a positive integer if specified');
 69800              }
 69801              this.#initializeTTLTracking();
 69802          }
 69803          // do not allow completely unbounded caches
 69804          if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {
 69805              throw new TypeError('At least one of max, maxSize, or ttl is required');
 69806          }
 69807          if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {
 69808              const code = 'LRU_CACHE_UNBOUNDED';
 69809              if (shouldWarn(code)) {
 69810                  warned.add(code);
 69811                  const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +
 69812                      'result in unbounded memory consumption.';
 69813                  emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);
 69814              }
 69815          }
 69816      }
 69817      /**
 69818       * Return the remaining TTL time for a given entry key
 69819       */
 69820      getRemainingTTL(key) {
 69821          return this.#keyMap.has(key) ? Infinity : 0;
 69822      }
 69823      #initializeTTLTracking() {
 69824          const ttls = new ZeroArray(this.#max);
 69825          const starts = new ZeroArray(this.#max);
 69826          this.#ttls = ttls;
 69827          this.#starts = starts;
 69828          this.#setItemTTL = (index, ttl, start = perf.now()) => {
 69829              starts[index] = ttl !== 0 ? start : 0;
 69830              ttls[index] = ttl;
 69831              if (ttl !== 0 && this.ttlAutopurge) {
 69832                  const t = setTimeout(() => {
 69833                      if (this.#isStale(index)) {
 69834                          this.delete(this.#keyList[index]);
 69835                      }
 69836                  }, ttl + 1);
 69837                  // unref() not supported on all platforms
 69838                  /* c8 ignore start */
 69839                  if (t.unref) {
 69840                      t.unref();
 69841                  }
 69842                  /* c8 ignore stop */
 69843              }
 69844          };
 69845          this.#updateItemAge = index => {
 69846              starts[index] = ttls[index] !== 0 ? perf.now() : 0;
 69847          };
 69848          this.#statusTTL = (status, index) => {
 69849              if (ttls[index]) {
 69850                  const ttl = ttls[index];
 69851                  const start = starts[index];
 69852                  /* c8 ignore next */
 69853                  if (!ttl || !start)
 69854                      return;
 69855                  status.ttl = ttl;
 69856                  status.start = start;
 69857                  status.now = cachedNow || getNow();
 69858                  const age = status.now - start;
 69859                  status.remainingTTL = ttl - age;
 69860              }
 69861          };
 69862          // debounce calls to perf.now() to 1s so we're not hitting
 69863          // that costly call repeatedly.
 69864          let cachedNow = 0;
 69865          const getNow = () => {
 69866              const n = perf.now();
 69867              if (this.ttlResolution > 0) {
 69868                  cachedNow = n;
 69869                  const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);
 69870                  // not available on all platforms
 69871                  /* c8 ignore start */
 69872                  if (t.unref) {
 69873                      t.unref();
 69874                  }
 69875                  /* c8 ignore stop */
 69876              }
 69877              return n;
 69878          };
 69879          this.getRemainingTTL = key => {
 69880              const index = this.#keyMap.get(key);
 69881              if (index === undefined) {
 69882                  return 0;
 69883              }
 69884              const ttl = ttls[index];
 69885              const start = starts[index];
 69886              if (!ttl || !start) {
 69887                  return Infinity;
 69888              }
 69889              const age = (cachedNow || getNow()) - start;
 69890              return ttl - age;
 69891          };
 69892          this.#isStale = index => {
 69893              const s = starts[index];
 69894              const t = ttls[index];
 69895              return !!t && !!s && (cachedNow || getNow()) - s > t;
 69896          };
 69897      }
 69898      // conditionally set private methods related to TTL
 69899      #updateItemAge = () => { };
 69900      #statusTTL = () => { };
 69901      #setItemTTL = () => { };
 69902      /* c8 ignore stop */
 69903      #isStale = () => false;
 69904      #initializeSizeTracking() {
 69905          const sizes = new ZeroArray(this.#max);
 69906          this.#calculatedSize = 0;
 69907          this.#sizes = sizes;
 69908          this.#removeItemSize = index => {
 69909              this.#calculatedSize -= sizes[index];
 69910              sizes[index] = 0;
 69911          };
 69912          this.#requireSize = (k, v, size, sizeCalculation) => {
 69913              // provisionally accept background fetches.
 69914              // actual value size will be checked when they return.
 69915              if (this.#isBackgroundFetch(v)) {
 69916                  return 0;
 69917              }
 69918              if (!isPosInt(size)) {
 69919                  if (sizeCalculation) {
 69920                      if (typeof sizeCalculation !== 'function') {
 69921                          throw new TypeError('sizeCalculation must be a function');
 69922                      }
 69923                      size = sizeCalculation(v, k);
 69924                      if (!isPosInt(size)) {
 69925                          throw new TypeError('sizeCalculation return invalid (expect positive integer)');
 69926                      }
 69927                  }
 69928                  else {
 69929                      throw new TypeError('invalid size value (must be positive integer). ' +
 69930                          'When maxSize or maxEntrySize is used, sizeCalculation ' +
 69931                          'or size must be set.');
 69932                  }
 69933              }
 69934              return size;
 69935          };
 69936          this.#addItemSize = (index, size, status) => {
 69937              sizes[index] = size;
 69938              if (this.#maxSize) {
 69939                  const maxSize = this.#maxSize - sizes[index];
 69940                  while (this.#calculatedSize > maxSize) {
 69941                      this.#evict(true);
 69942                  }
 69943              }
 69944              this.#calculatedSize += sizes[index];
 69945              if (status) {
 69946                  status.entrySize = size;
 69947                  status.totalCalculatedSize = this.#calculatedSize;
 69948              }
 69949          };
 69950      }
 69951      #removeItemSize = _i => { };
 69952      #addItemSize = (_i, _s, _st) => { };
 69953      #requireSize = (_k, _v, size, sizeCalculation) => {
 69954          if (size || sizeCalculation) {
 69955              throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');
 69956          }
 69957          return 0;
 69958      };
 69959      *#indexes({ allowStale = this.allowStale } = {}) {
 69960          if (this.#size) {
 69961              for (let i = this.#tail; true;) {
 69962                  if (!this.#isValidIndex(i)) {
 69963                      break;
 69964                  }
 69965                  if (allowStale || !this.#isStale(i)) {
 69966                      yield i;
 69967                  }
 69968                  if (i === this.#head) {
 69969                      break;
 69970                  }
 69971                  else {
 69972                      i = this.#prev[i];
 69973                  }
 69974              }
 69975          }
 69976      }
 69977      *#rindexes({ allowStale = this.allowStale } = {}) {
 69978          if (this.#size) {
 69979              for (let i = this.#head; true;) {
 69980                  if (!this.#isValidIndex(i)) {
 69981                      break;
 69982                  }
 69983                  if (allowStale || !this.#isStale(i)) {
 69984                      yield i;
 69985                  }
 69986                  if (i === this.#tail) {
 69987                      break;
 69988                  }
 69989                  else {
 69990                      i = this.#next[i];
 69991                  }
 69992              }
 69993          }
 69994      }
 69995      #isValidIndex(index) {
 69996          return (index !== undefined &&
 69997              this.#keyMap.get(this.#keyList[index]) === index);
 69998      }
 69999      /**
 70000       * Return a generator yielding `[key, value]` pairs,
 70001       * in order from most recently used to least recently used.
 70002       */
 70003      *entries() {
 70004          for (const i of this.#indexes()) {
 70005              if (this.#valList[i] !== undefined &&
 70006                  this.#keyList[i] !== undefined &&
 70007                  !this.#isBackgroundFetch(this.#valList[i])) {
 70008                  yield [this.#keyList[i], this.#valList[i]];
 70009              }
 70010          }
 70011      }
 70012      /**
 70013       * Inverse order version of {@link LRUCache.entries}
 70014       *
 70015       * Return a generator yielding `[key, value]` pairs,
 70016       * in order from least recently used to most recently used.
 70017       */
 70018      *rentries() {
 70019          for (const i of this.#rindexes()) {
 70020              if (this.#valList[i] !== undefined &&
 70021                  this.#keyList[i] !== undefined &&
 70022                  !this.#isBackgroundFetch(this.#valList[i])) {
 70023                  yield [this.#keyList[i], this.#valList[i]];
 70024              }
 70025          }
 70026      }
 70027      /**
 70028       * Return a generator yielding the keys in the cache,
 70029       * in order from most recently used to least recently used.
 70030       */
 70031      *keys() {
 70032          for (const i of this.#indexes()) {
 70033              const k = this.#keyList[i];
 70034              if (k !== undefined &&
 70035                  !this.#isBackgroundFetch(this.#valList[i])) {
 70036                  yield k;
 70037              }
 70038          }
 70039      }
 70040      /**
 70041       * Inverse order version of {@link LRUCache.keys}
 70042       *
 70043       * Return a generator yielding the keys in the cache,
 70044       * in order from least recently used to most recently used.
 70045       */
 70046      *rkeys() {
 70047          for (const i of this.#rindexes()) {
 70048              const k = this.#keyList[i];
 70049              if (k !== undefined &&
 70050                  !this.#isBackgroundFetch(this.#valList[i])) {
 70051                  yield k;
 70052              }
 70053          }
 70054      }
 70055      /**
 70056       * Return a generator yielding the values in the cache,
 70057       * in order from most recently used to least recently used.
 70058       */
 70059      *values() {
 70060          for (const i of this.#indexes()) {
 70061              const v = this.#valList[i];
 70062              if (v !== undefined &&
 70063                  !this.#isBackgroundFetch(this.#valList[i])) {
 70064                  yield this.#valList[i];
 70065              }
 70066          }
 70067      }
 70068      /**
 70069       * Inverse order version of {@link LRUCache.values}
 70070       *
 70071       * Return a generator yielding the values in the cache,
 70072       * in order from least recently used to most recently used.
 70073       */
 70074      *rvalues() {
 70075          for (const i of this.#rindexes()) {
 70076              const v = this.#valList[i];
 70077              if (v !== undefined &&
 70078                  !this.#isBackgroundFetch(this.#valList[i])) {
 70079                  yield this.#valList[i];
 70080              }
 70081          }
 70082      }
 70083      /**
 70084       * Iterating over the cache itself yields the same results as
 70085       * {@link LRUCache.entries}
 70086       */
 70087      [Symbol.iterator]() {
 70088          return this.entries();
 70089      }
 70090      /**
 70091       * A String value that is used in the creation of the default string description of an object.
 70092       * Called by the built-in method Object.prototype.toString.
 70093       */
 70094      [Symbol.toStringTag] = 'LRUCache';
 70095      /**
 70096       * Find a value for which the supplied fn method returns a truthy value,
 70097       * similar to Array.find().  fn is called as fn(value, key, cache).
 70098       */
 70099      find(fn, getOptions = {}) {
 70100          for (const i of this.#indexes()) {
 70101              const v = this.#valList[i];
 70102              const value = this.#isBackgroundFetch(v)
 70103                  ? v.__staleWhileFetching
 70104                  : v;
 70105              if (value === undefined)
 70106                  continue;
 70107              if (fn(value, this.#keyList[i], this)) {
 70108                  return this.get(this.#keyList[i], getOptions);
 70109              }
 70110          }
 70111      }
 70112      /**
 70113       * Call the supplied function on each item in the cache, in order from
 70114       * most recently used to least recently used.  fn is called as
 70115       * fn(value, key, cache).  Does not update age or recenty of use.
 70116       * Does not iterate over stale values.
 70117       */
 70118      forEach(fn, thisp = this) {
 70119          for (const i of this.#indexes()) {
 70120              const v = this.#valList[i];
 70121              const value = this.#isBackgroundFetch(v)
 70122                  ? v.__staleWhileFetching
 70123                  : v;
 70124              if (value === undefined)
 70125                  continue;
 70126              fn.call(thisp, value, this.#keyList[i], this);
 70127          }
 70128      }
 70129      /**
 70130       * The same as {@link LRUCache.forEach} but items are iterated over in
 70131       * reverse order.  (ie, less recently used items are iterated over first.)
 70132       */
 70133      rforEach(fn, thisp = this) {
 70134          for (const i of this.#rindexes()) {
 70135              const v = this.#valList[i];
 70136              const value = this.#isBackgroundFetch(v)
 70137                  ? v.__staleWhileFetching
 70138                  : v;
 70139              if (value === undefined)
 70140                  continue;
 70141              fn.call(thisp, value, this.#keyList[i], this);
 70142          }
 70143      }
 70144      /**
 70145       * Delete any stale entries. Returns true if anything was removed,
 70146       * false otherwise.
 70147       */
 70148      purgeStale() {
 70149          let deleted = false;
 70150          for (const i of this.#rindexes({ allowStale: true })) {
 70151              if (this.#isStale(i)) {
 70152                  this.delete(this.#keyList[i]);
 70153                  deleted = true;
 70154              }
 70155          }
 70156          return deleted;
 70157      }
 70158      /**
 70159       * Get the extended info about a given entry, to get its value, size, and
 70160       * TTL info simultaneously. Like {@link LRUCache#dump}, but just for a
 70161       * single key. Always returns stale values, if their info is found in the
 70162       * cache, so be sure to check for expired TTLs if relevant.
 70163       */
 70164      info(key) {
 70165          const i = this.#keyMap.get(key);
 70166          if (i === undefined)
 70167              return undefined;
 70168          const v = this.#valList[i];
 70169          const value = this.#isBackgroundFetch(v)
 70170              ? v.__staleWhileFetching
 70171              : v;
 70172          if (value === undefined)
 70173              return undefined;
 70174          const entry = { value };
 70175          if (this.#ttls && this.#starts) {
 70176              const ttl = this.#ttls[i];
 70177              const start = this.#starts[i];
 70178              if (ttl && start) {
 70179                  const remain = ttl - (perf.now() - start);
 70180                  entry.ttl = remain;
 70181                  entry.start = Date.now();
 70182              }
 70183          }
 70184          if (this.#sizes) {
 70185              entry.size = this.#sizes[i];
 70186          }
 70187          return entry;
 70188      }
 70189      /**
 70190       * Return an array of [key, {@link LRUCache.Entry}] tuples which can be
 70191       * passed to cache.load()
 70192       */
 70193      dump() {
 70194          const arr = [];
 70195          for (const i of this.#indexes({ allowStale: true })) {
 70196              const key = this.#keyList[i];
 70197              const v = this.#valList[i];
 70198              const value = this.#isBackgroundFetch(v)
 70199                  ? v.__staleWhileFetching
 70200                  : v;
 70201              if (value === undefined || key === undefined)
 70202                  continue;
 70203              const entry = { value };
 70204              if (this.#ttls && this.#starts) {
 70205                  entry.ttl = this.#ttls[i];
 70206                  // always dump the start relative to a portable timestamp
 70207                  // it's ok for this to be a bit slow, it's a rare operation.
 70208                  const age = perf.now() - this.#starts[i];
 70209                  entry.start = Math.floor(Date.now() - age);
 70210              }
 70211              if (this.#sizes) {
 70212                  entry.size = this.#sizes[i];
 70213              }
 70214              arr.unshift([key, entry]);
 70215          }
 70216          return arr;
 70217      }
 70218      /**
 70219       * Reset the cache and load in the items in entries in the order listed.
 70220       * Note that the shape of the resulting cache may be different if the
 70221       * same options are not used in both caches.
 70222       */
 70223      load(arr) {
 70224          this.clear();
 70225          for (const [key, entry] of arr) {
 70226              if (entry.start) {
 70227                  // entry.start is a portable timestamp, but we may be using
 70228                  // node's performance.now(), so calculate the offset, so that
 70229                  // we get the intended remaining TTL, no matter how long it's
 70230                  // been on ice.
 70231                  //
 70232                  // it's ok for this to be a bit slow, it's a rare operation.
 70233                  const age = Date.now() - entry.start;
 70234                  entry.start = perf.now() - age;
 70235              }
 70236              this.set(key, entry.value, entry);
 70237          }
 70238      }
 70239      /**
 70240       * Add a value to the cache.
 70241       *
 70242       * Note: if `undefined` is specified as a value, this is an alias for
 70243       * {@link LRUCache#delete}
 70244       */
 70245      set(k, v, setOptions = {}) {
 70246          if (v === undefined) {
 70247              this.delete(k);
 70248              return this;
 70249          }
 70250          const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;
 70251          let { noUpdateTTL = this.noUpdateTTL } = setOptions;
 70252          const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);
 70253          // if the item doesn't fit, don't do anything
 70254          // NB: maxEntrySize set to maxSize by default
 70255          if (this.maxEntrySize && size > this.maxEntrySize) {
 70256              if (status) {
 70257                  status.set = 'miss';
 70258                  status.maxEntrySizeExceeded = true;
 70259              }
 70260              // have to delete, in case something is there already.
 70261              this.delete(k);
 70262              return this;
 70263          }
 70264          let index = this.#size === 0 ? undefined : this.#keyMap.get(k);
 70265          if (index === undefined) {
 70266              // addition
 70267              index = (this.#size === 0
 70268                  ? this.#tail
 70269                  : this.#free.length !== 0
 70270                      ? this.#free.pop()
 70271                      : this.#size === this.#max
 70272                          ? this.#evict(false)
 70273                          : this.#size);
 70274              this.#keyList[index] = k;
 70275              this.#valList[index] = v;
 70276              this.#keyMap.set(k, index);
 70277              this.#next[this.#tail] = index;
 70278              this.#prev[index] = this.#tail;
 70279              this.#tail = index;
 70280              this.#size++;
 70281              this.#addItemSize(index, size, status);
 70282              if (status)
 70283                  status.set = 'add';
 70284              noUpdateTTL = false;
 70285          }
 70286          else {
 70287              // update
 70288              this.#moveToTail(index);
 70289              const oldVal = this.#valList[index];
 70290              if (v !== oldVal) {
 70291                  if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {
 70292                      oldVal.__abortController.abort(new Error('replaced'));
 70293                      const { __staleWhileFetching: s } = oldVal;
 70294                      if (s !== undefined && !noDisposeOnSet) {
 70295                          if (this.#hasDispose) {
 70296                              this.#dispose?.(s, k, 'set');
 70297                          }
 70298                          if (this.#hasDisposeAfter) {
 70299                              this.#disposed?.push([s, k, 'set']);
 70300                          }
 70301                      }
 70302                  }
 70303                  else if (!noDisposeOnSet) {
 70304                      if (this.#hasDispose) {
 70305                          this.#dispose?.(oldVal, k, 'set');
 70306                      }
 70307                      if (this.#hasDisposeAfter) {
 70308                          this.#disposed?.push([oldVal, k, 'set']);
 70309                      }
 70310                  }
 70311                  this.#removeItemSize(index);
 70312                  this.#addItemSize(index, size, status);
 70313                  this.#valList[index] = v;
 70314                  if (status) {
 70315                      status.set = 'replace';
 70316                      const oldValue = oldVal && this.#isBackgroundFetch(oldVal)
 70317                          ? oldVal.__staleWhileFetching
 70318                          : oldVal;
 70319                      if (oldValue !== undefined)
 70320                          status.oldValue = oldValue;
 70321                  }
 70322              }
 70323              else if (status) {
 70324                  status.set = 'update';
 70325              }
 70326          }
 70327          if (ttl !== 0 && !this.#ttls) {
 70328              this.#initializeTTLTracking();
 70329          }
 70330          if (this.#ttls) {
 70331              if (!noUpdateTTL) {
 70332                  this.#setItemTTL(index, ttl, start);
 70333              }
 70334              if (status)
 70335                  this.#statusTTL(status, index);
 70336          }
 70337          if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {
 70338              const dt = this.#disposed;
 70339              let task;
 70340              while ((task = dt?.shift())) {
 70341                  this.#disposeAfter?.(...task);
 70342              }
 70343          }
 70344          return this;
 70345      }
 70346      /**
 70347       * Evict the least recently used item, returning its value or
 70348       * `undefined` if cache is empty.
 70349       */
 70350      pop() {
 70351          try {
 70352              while (this.#size) {
 70353                  const val = this.#valList[this.#head];
 70354                  this.#evict(true);
 70355                  if (this.#isBackgroundFetch(val)) {
 70356                      if (val.__staleWhileFetching) {
 70357                          return val.__staleWhileFetching;
 70358                      }
 70359                  }
 70360                  else if (val !== undefined) {
 70361                      return val;
 70362                  }
 70363              }
 70364          }
 70365          finally {
 70366              if (this.#hasDisposeAfter && this.#disposed) {
 70367                  const dt = this.#disposed;
 70368                  let task;
 70369                  while ((task = dt?.shift())) {
 70370                      this.#disposeAfter?.(...task);
 70371                  }
 70372              }
 70373          }
 70374      }
 70375      #evict(free) {
 70376          const head = this.#head;
 70377          const k = this.#keyList[head];
 70378          const v = this.#valList[head];
 70379          if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {
 70380              v.__abortController.abort(new Error('evicted'));
 70381          }
 70382          else if (this.#hasDispose || this.#hasDisposeAfter) {
 70383              if (this.#hasDispose) {
 70384                  this.#dispose?.(v, k, 'evict');
 70385              }
 70386              if (this.#hasDisposeAfter) {
 70387                  this.#disposed?.push([v, k, 'evict']);
 70388              }
 70389          }
 70390          this.#removeItemSize(head);
 70391          // if we aren't about to use the index, then null these out
 70392          if (free) {
 70393              this.#keyList[head] = undefined;
 70394              this.#valList[head] = undefined;
 70395              this.#free.push(head);
 70396          }
 70397          if (this.#size === 1) {
 70398              this.#head = this.#tail = 0;
 70399              this.#free.length = 0;
 70400          }
 70401          else {
 70402              this.#head = this.#next[head];
 70403          }
 70404          this.#keyMap.delete(k);
 70405          this.#size--;
 70406          return head;
 70407      }
 70408      /**
 70409       * Check if a key is in the cache, without updating the recency of use.
 70410       * Will return false if the item is stale, even though it is technically
 70411       * in the cache.
 70412       *
 70413       * Will not update item age unless
 70414       * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.
 70415       */
 70416      has(k, hasOptions = {}) {
 70417          const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;
 70418          const index = this.#keyMap.get(k);
 70419          if (index !== undefined) {
 70420              const v = this.#valList[index];
 70421              if (this.#isBackgroundFetch(v) &&
 70422                  v.__staleWhileFetching === undefined) {
 70423                  return false;
 70424              }
 70425              if (!this.#isStale(index)) {
 70426                  if (updateAgeOnHas) {
 70427                      this.#updateItemAge(index);
 70428                  }
 70429                  if (status) {
 70430                      status.has = 'hit';
 70431                      this.#statusTTL(status, index);
 70432                  }
 70433                  return true;
 70434              }
 70435              else if (status) {
 70436                  status.has = 'stale';
 70437                  this.#statusTTL(status, index);
 70438              }
 70439          }
 70440          else if (status) {
 70441              status.has = 'miss';
 70442          }
 70443          return false;
 70444      }
 70445      /**
 70446       * Like {@link LRUCache#get} but doesn't update recency or delete stale
 70447       * items.
 70448       *
 70449       * Returns `undefined` if the item is stale, unless
 70450       * {@link LRUCache.OptionsBase.allowStale} is set.
 70451       */
 70452      peek(k, peekOptions = {}) {
 70453          const { allowStale = this.allowStale } = peekOptions;
 70454          const index = this.#keyMap.get(k);
 70455          if (index === undefined ||
 70456              (!allowStale && this.#isStale(index))) {
 70457              return;
 70458          }
 70459          const v = this.#valList[index];
 70460          // either stale and allowed, or forcing a refresh of non-stale value
 70461          return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;
 70462      }
 70463      #backgroundFetch(k, index, options, context) {
 70464          const v = index === undefined ? undefined : this.#valList[index];
 70465          if (this.#isBackgroundFetch(v)) {
 70466              return v;
 70467          }
 70468          const ac = new AC();
 70469          const { signal } = options;
 70470          // when/if our AC signals, then stop listening to theirs.
 70471          signal?.addEventListener('abort', () => ac.abort(signal.reason), {
 70472              signal: ac.signal,
 70473          });
 70474          const fetchOpts = {
 70475              signal: ac.signal,
 70476              options,
 70477              context,
 70478          };
 70479          const cb = (v, updateCache = false) => {
 70480              const { aborted } = ac.signal;
 70481              const ignoreAbort = options.ignoreFetchAbort && v !== undefined;
 70482              if (options.status) {
 70483                  if (aborted && !updateCache) {
 70484                      options.status.fetchAborted = true;
 70485                      options.status.fetchError = ac.signal.reason;
 70486                      if (ignoreAbort)
 70487                          options.status.fetchAbortIgnored = true;
 70488                  }
 70489                  else {
 70490                      options.status.fetchResolved = true;
 70491                  }
 70492              }
 70493              if (aborted && !ignoreAbort && !updateCache) {
 70494                  return fetchFail(ac.signal.reason);
 70495              }
 70496              // either we didn't abort, and are still here, or we did, and ignored
 70497              const bf = p;
 70498              if (this.#valList[index] === p) {
 70499                  if (v === undefined) {
 70500                      if (bf.__staleWhileFetching) {
 70501                          this.#valList[index] = bf.__staleWhileFetching;
 70502                      }
 70503                      else {
 70504                          this.delete(k);
 70505                      }
 70506                  }
 70507                  else {
 70508                      if (options.status)
 70509                          options.status.fetchUpdated = true;
 70510                      this.set(k, v, fetchOpts.options);
 70511                  }
 70512              }
 70513              return v;
 70514          };
 70515          const eb = (er) => {
 70516              if (options.status) {
 70517                  options.status.fetchRejected = true;
 70518                  options.status.fetchError = er;
 70519              }
 70520              return fetchFail(er);
 70521          };
 70522          const fetchFail = (er) => {
 70523              const { aborted } = ac.signal;
 70524              const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;
 70525              const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;
 70526              const noDelete = allowStale || options.noDeleteOnFetchRejection;
 70527              const bf = p;
 70528              if (this.#valList[index] === p) {
 70529                  // if we allow stale on fetch rejections, then we need to ensure that
 70530                  // the stale value is not removed from the cache when the fetch fails.
 70531                  const del = !noDelete || bf.__staleWhileFetching === undefined;
 70532                  if (del) {
 70533                      this.delete(k);
 70534                  }
 70535                  else if (!allowStaleAborted) {
 70536                      // still replace the *promise* with the stale value,
 70537                      // since we are done with the promise at this point.
 70538                      // leave it untouched if we're still waiting for an
 70539                      // aborted background fetch that hasn't yet returned.
 70540                      this.#valList[index] = bf.__staleWhileFetching;
 70541                  }
 70542              }
 70543              if (allowStale) {
 70544                  if (options.status && bf.__staleWhileFetching !== undefined) {
 70545                      options.status.returnedStale = true;
 70546                  }
 70547                  return bf.__staleWhileFetching;
 70548              }
 70549              else if (bf.__returned === bf) {
 70550                  throw er;
 70551              }
 70552          };
 70553          const pcall = (res, rej) => {
 70554              const fmp = this.#fetchMethod?.(k, v, fetchOpts);
 70555              if (fmp && fmp instanceof Promise) {
 70556                  fmp.then(v => res(v === undefined ? undefined : v), rej);
 70557              }
 70558              // ignored, we go until we finish, regardless.
 70559              // defer check until we are actually aborting,
 70560              // so fetchMethod can override.
 70561              ac.signal.addEventListener('abort', () => {
 70562                  if (!options.ignoreFetchAbort ||
 70563                      options.allowStaleOnFetchAbort) {
 70564                      res(undefined);
 70565                      // when it eventually resolves, update the cache.
 70566                      if (options.allowStaleOnFetchAbort) {
 70567                          res = v => cb(v, true);
 70568                      }
 70569                  }
 70570              });
 70571          };
 70572          if (options.status)
 70573              options.status.fetchDispatched = true;
 70574          const p = new Promise(pcall).then(cb, eb);
 70575          const bf = Object.assign(p, {
 70576              __abortController: ac,
 70577              __staleWhileFetching: v,
 70578              __returned: undefined,
 70579          });
 70580          if (index === undefined) {
 70581              // internal, don't expose status.
 70582              this.set(k, bf, { ...fetchOpts.options, status: undefined });
 70583              index = this.#keyMap.get(k);
 70584          }
 70585          else {
 70586              this.#valList[index] = bf;
 70587          }
 70588          return bf;
 70589      }
 70590      #isBackgroundFetch(p) {
 70591          if (!this.#hasFetchMethod)
 70592              return false;
 70593          const b = p;
 70594          return (!!b &&
 70595              b instanceof Promise &&
 70596              b.hasOwnProperty('__staleWhileFetching') &&
 70597              b.__abortController instanceof AC);
 70598      }
 70599      async fetch(k, fetchOptions = {}) {
 70600          const { 
 70601          // get options
 70602          allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, 
 70603          // set options
 70604          ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, 
 70605          // fetch exclusive options
 70606          noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;
 70607          if (!this.#hasFetchMethod) {
 70608              if (status)
 70609                  status.fetch = 'get';
 70610              return this.get(k, {
 70611                  allowStale,
 70612                  updateAgeOnGet,
 70613                  noDeleteOnStaleGet,
 70614                  status,
 70615              });
 70616          }
 70617          const options = {
 70618              allowStale,
 70619              updateAgeOnGet,
 70620              noDeleteOnStaleGet,
 70621              ttl,
 70622              noDisposeOnSet,
 70623              size,
 70624              sizeCalculation,
 70625              noUpdateTTL,
 70626              noDeleteOnFetchRejection,
 70627              allowStaleOnFetchRejection,
 70628              allowStaleOnFetchAbort,
 70629              ignoreFetchAbort,
 70630              status,
 70631              signal,
 70632          };
 70633          let index = this.#keyMap.get(k);
 70634          if (index === undefined) {
 70635              if (status)
 70636                  status.fetch = 'miss';
 70637              const p = this.#backgroundFetch(k, index, options, context);
 70638              return (p.__returned = p);
 70639          }
 70640          else {
 70641              // in cache, maybe already fetching
 70642              const v = this.#valList[index];
 70643              if (this.#isBackgroundFetch(v)) {
 70644                  const stale = allowStale && v.__staleWhileFetching !== undefined;
 70645                  if (status) {
 70646                      status.fetch = 'inflight';
 70647                      if (stale)
 70648                          status.returnedStale = true;
 70649                  }
 70650                  return stale ? v.__staleWhileFetching : (v.__returned = v);
 70651              }
 70652              // if we force a refresh, that means do NOT serve the cached value,
 70653              // unless we are already in the process of refreshing the cache.
 70654              const isStale = this.#isStale(index);
 70655              if (!forceRefresh && !isStale) {
 70656                  if (status)
 70657                      status.fetch = 'hit';
 70658                  this.#moveToTail(index);
 70659                  if (updateAgeOnGet) {
 70660                      this.#updateItemAge(index);
 70661                  }
 70662                  if (status)
 70663                      this.#statusTTL(status, index);
 70664                  return v;
 70665              }
 70666              // ok, it is stale or a forced refresh, and not already fetching.
 70667              // refresh the cache.
 70668              const p = this.#backgroundFetch(k, index, options, context);
 70669              const hasStale = p.__staleWhileFetching !== undefined;
 70670              const staleVal = hasStale && allowStale;
 70671              if (status) {
 70672                  status.fetch = isStale ? 'stale' : 'refresh';
 70673                  if (staleVal && isStale)
 70674                      status.returnedStale = true;
 70675              }
 70676              return staleVal ? p.__staleWhileFetching : (p.__returned = p);
 70677          }
 70678      }
 70679      /**
 70680       * Return a value from the cache. Will update the recency of the cache
 70681       * entry found.
 70682       *
 70683       * If the key is not found, get() will return `undefined`.
 70684       */
 70685      get(k, getOptions = {}) {
 70686          const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;
 70687          const index = this.#keyMap.get(k);
 70688          if (index !== undefined) {
 70689              const value = this.#valList[index];
 70690              const fetching = this.#isBackgroundFetch(value);
 70691              if (status)
 70692                  this.#statusTTL(status, index);
 70693              if (this.#isStale(index)) {
 70694                  if (status)
 70695                      status.get = 'stale';
 70696                  // delete only if not an in-flight background fetch
 70697                  if (!fetching) {
 70698                      if (!noDeleteOnStaleGet) {
 70699                          this.delete(k);
 70700                      }
 70701                      if (status && allowStale)
 70702                          status.returnedStale = true;
 70703                      return allowStale ? value : undefined;
 70704                  }
 70705                  else {
 70706                      if (status &&
 70707                          allowStale &&
 70708                          value.__staleWhileFetching !== undefined) {
 70709                          status.returnedStale = true;
 70710                      }
 70711                      return allowStale ? value.__staleWhileFetching : undefined;
 70712                  }
 70713              }
 70714              else {
 70715                  if (status)
 70716                      status.get = 'hit';
 70717                  // if we're currently fetching it, we don't actually have it yet
 70718                  // it's not stale, which means this isn't a staleWhileRefetching.
 70719                  // If it's not stale, and fetching, AND has a __staleWhileFetching
 70720                  // value, then that means the user fetched with {forceRefresh:true},
 70721                  // so it's safe to return that value.
 70722                  if (fetching) {
 70723                      return value.__staleWhileFetching;
 70724                  }
 70725                  this.#moveToTail(index);
 70726                  if (updateAgeOnGet) {
 70727                      this.#updateItemAge(index);
 70728                  }
 70729                  return value;
 70730              }
 70731          }
 70732          else if (status) {
 70733              status.get = 'miss';
 70734          }
 70735      }
 70736      #connect(p, n) {
 70737          this.#prev[n] = p;
 70738          this.#next[p] = n;
 70739      }
 70740      #moveToTail(index) {
 70741          // if tail already, nothing to do
 70742          // if head, move head to next[index]
 70743          // else
 70744          //   move next[prev[index]] to next[index] (head has no prev)
 70745          //   move prev[next[index]] to prev[index]
 70746          // prev[index] = tail
 70747          // next[tail] = index
 70748          // tail = index
 70749          if (index !== this.#tail) {
 70750              if (index === this.#head) {
 70751                  this.#head = this.#next[index];
 70752              }
 70753              else {
 70754                  this.#connect(this.#prev[index], this.#next[index]);
 70755              }
 70756              this.#connect(this.#tail, index);
 70757              this.#tail = index;
 70758          }
 70759      }
 70760      /**
 70761       * Deletes a key out of the cache.
 70762       * Returns true if the key was deleted, false otherwise.
 70763       */
 70764      delete(k) {
 70765          let deleted = false;
 70766          if (this.#size !== 0) {
 70767              const index = this.#keyMap.get(k);
 70768              if (index !== undefined) {
 70769                  deleted = true;
 70770                  if (this.#size === 1) {
 70771                      this.clear();
 70772                  }
 70773                  else {
 70774                      this.#removeItemSize(index);
 70775                      const v = this.#valList[index];
 70776                      if (this.#isBackgroundFetch(v)) {
 70777                          v.__abortController.abort(new Error('deleted'));
 70778                      }
 70779                      else if (this.#hasDispose || this.#hasDisposeAfter) {
 70780                          if (this.#hasDispose) {
 70781                              this.#dispose?.(v, k, 'delete');
 70782                          }
 70783                          if (this.#hasDisposeAfter) {
 70784                              this.#disposed?.push([v, k, 'delete']);
 70785                          }
 70786                      }
 70787                      this.#keyMap.delete(k);
 70788                      this.#keyList[index] = undefined;
 70789                      this.#valList[index] = undefined;
 70790                      if (index === this.#tail) {
 70791                          this.#tail = this.#prev[index];
 70792                      }
 70793                      else if (index === this.#head) {
 70794                          this.#head = this.#next[index];
 70795                      }
 70796                      else {
 70797                          const pi = this.#prev[index];
 70798                          this.#next[pi] = this.#next[index];
 70799                          const ni = this.#next[index];
 70800                          this.#prev[ni] = this.#prev[index];
 70801                      }
 70802                      this.#size--;
 70803                      this.#free.push(index);
 70804                  }
 70805              }
 70806          }
 70807          if (this.#hasDisposeAfter && this.#disposed?.length) {
 70808              const dt = this.#disposed;
 70809              let task;
 70810              while ((task = dt?.shift())) {
 70811                  this.#disposeAfter?.(...task);
 70812              }
 70813          }
 70814          return deleted;
 70815      }
 70816      /**
 70817       * Clear the cache entirely, throwing away all values.
 70818       */
 70819      clear() {
 70820          for (const index of this.#rindexes({ allowStale: true })) {
 70821              const v = this.#valList[index];
 70822              if (this.#isBackgroundFetch(v)) {
 70823                  v.__abortController.abort(new Error('deleted'));
 70824              }
 70825              else {
 70826                  const k = this.#keyList[index];
 70827                  if (this.#hasDispose) {
 70828                      this.#dispose?.(v, k, 'delete');
 70829                  }
 70830                  if (this.#hasDisposeAfter) {
 70831                      this.#disposed?.push([v, k, 'delete']);
 70832                  }
 70833              }
 70834          }
 70835          this.#keyMap.clear();
 70836          this.#valList.fill(undefined);
 70837          this.#keyList.fill(undefined);
 70838          if (this.#ttls && this.#starts) {
 70839              this.#ttls.fill(0);
 70840              this.#starts.fill(0);
 70841          }
 70842          if (this.#sizes) {
 70843              this.#sizes.fill(0);
 70844          }
 70845          this.#head = 0;
 70846          this.#tail = 0;
 70847          this.#free.length = 0;
 70848          this.#calculatedSize = 0;
 70849          this.#size = 0;
 70850          if (this.#hasDisposeAfter && this.#disposed) {
 70851              const dt = this.#disposed;
 70852              let task;
 70853              while ((task = dt?.shift())) {
 70854                  this.#disposeAfter?.(...task);
 70855              }
 70856          }
 70857      }
 70858  }
 70859  exports.LRUCache = LRUCache;
 70860  //# sourceMappingURL=index.js.map
 70861  
 70862  /***/ }),
 70863  
 70864  /***/ 43033:
 70865  /***/ ((__unused_webpack_module, exports) => {
 70866  
 70867  "use strict";
 70868  
 70869  Object.defineProperty(exports, "__esModule", ({ value: true }));
 70870  exports.assertValidPattern = void 0;
 70871  const MAX_PATTERN_LENGTH = 1024 * 64;
 70872  const assertValidPattern = (pattern) => {
 70873      if (typeof pattern !== 'string') {
 70874          throw new TypeError('invalid pattern');
 70875      }
 70876      if (pattern.length > MAX_PATTERN_LENGTH) {
 70877          throw new TypeError('pattern is too long');
 70878      }
 70879  };
 70880  exports.assertValidPattern = assertValidPattern;
 70881  //# sourceMappingURL=assert-valid-pattern.js.map
 70882  
 70883  /***/ }),
 70884  
 70885  /***/ 10596:
 70886  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 70887  
 70888  "use strict";
 70889  
 70890  // parse a single path portion
 70891  Object.defineProperty(exports, "__esModule", ({ value: true }));
 70892  exports.AST = void 0;
 70893  const brace_expressions_js_1 = __nccwpck_require__(3857);
 70894  const unescape_js_1 = __nccwpck_require__(66615);
 70895  const types = new Set(['!', '?', '+', '*', '@']);
 70896  const isExtglobType = (c) => types.has(c);
 70897  // Patterns that get prepended to bind to the start of either the
 70898  // entire string, or just a single path portion, to prevent dots
 70899  // and/or traversal patterns, when needed.
 70900  // Exts don't need the ^ or / bit, because the root binds that already.
 70901  const startNoTraversal = '(?!(?:^|/)\\.\\.?(?:$|/))';
 70902  const startNoDot = '(?!\\.)';
 70903  // characters that indicate a start of pattern needs the "no dots" bit,
 70904  // because a dot *might* be matched. ( is not in the list, because in
 70905  // the case of a child extglob, it will handle the prevention itself.
 70906  const addPatternStart = new Set(['[', '.']);
 70907  // cases where traversal is A-OK, no dot prevention needed
 70908  const justDots = new Set(['..', '.']);
 70909  const reSpecials = new Set('().*{}+?[]^$\\!');
 70910  const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
 70911  // any single thing other than /
 70912  const qmark = '[^/]';
 70913  // * => any number of characters
 70914  const star = qmark + '*?';
 70915  // use + when we need to ensure that *something* matches, because the * is
 70916  // the only thing in the path portion.
 70917  const starNoEmpty = qmark + '+?';
 70918  // remove the \ chars that we added if we end up doing a nonmagic compare
 70919  // const deslash = (s: string) => s.replace(/\\(.)/g, '$1')
 70920  class AST {
 70921      type;
 70922      #root;
 70923      #hasMagic;
 70924      #uflag = false;
 70925      #parts = [];
 70926      #parent;
 70927      #parentIndex;
 70928      #negs;
 70929      #filledNegs = false;
 70930      #options;
 70931      #toString;
 70932      // set to true if it's an extglob with no children
 70933      // (which really means one child of '')
 70934      #emptyExt = false;
 70935      constructor(type, parent, options = {}) {
 70936          this.type = type;
 70937          // extglobs are inherently magical
 70938          if (type)
 70939              this.#hasMagic = true;
 70940          this.#parent = parent;
 70941          this.#root = this.#parent ? this.#parent.#root : this;
 70942          this.#options = this.#root === this ? options : this.#root.#options;
 70943          this.#negs = this.#root === this ? [] : this.#root.#negs;
 70944          if (type === '!' && !this.#root.#filledNegs)
 70945              this.#negs.push(this);
 70946          this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;
 70947      }
 70948      get hasMagic() {
 70949          /* c8 ignore start */
 70950          if (this.#hasMagic !== undefined)
 70951              return this.#hasMagic;
 70952          /* c8 ignore stop */
 70953          for (const p of this.#parts) {
 70954              if (typeof p === 'string')
 70955                  continue;
 70956              if (p.type || p.hasMagic)
 70957                  return (this.#hasMagic = true);
 70958          }
 70959          // note: will be undefined until we generate the regexp src and find out
 70960          return this.#hasMagic;
 70961      }
 70962      // reconstructs the pattern
 70963      toString() {
 70964          if (this.#toString !== undefined)
 70965              return this.#toString;
 70966          if (!this.type) {
 70967              return (this.#toString = this.#parts.map(p => String(p)).join(''));
 70968          }
 70969          else {
 70970              return (this.#toString =
 70971                  this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');
 70972          }
 70973      }
 70974      #fillNegs() {
 70975          /* c8 ignore start */
 70976          if (this !== this.#root)
 70977              throw new Error('should only call on root');
 70978          if (this.#filledNegs)
 70979              return this;
 70980          /* c8 ignore stop */
 70981          // call toString() once to fill this out
 70982          this.toString();
 70983          this.#filledNegs = true;
 70984          let n;
 70985          while ((n = this.#negs.pop())) {
 70986              if (n.type !== '!')
 70987                  continue;
 70988              // walk up the tree, appending everthing that comes AFTER parentIndex
 70989              let p = n;
 70990              let pp = p.#parent;
 70991              while (pp) {
 70992                  for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {
 70993                      for (const part of n.#parts) {
 70994                          /* c8 ignore start */
 70995                          if (typeof part === 'string') {
 70996                              throw new Error('string part in extglob AST??');
 70997                          }
 70998                          /* c8 ignore stop */
 70999                          part.copyIn(pp.#parts[i]);
 71000                      }
 71001                  }
 71002                  p = pp;
 71003                  pp = p.#parent;
 71004              }
 71005          }
 71006          return this;
 71007      }
 71008      push(...parts) {
 71009          for (const p of parts) {
 71010              if (p === '')
 71011                  continue;
 71012              /* c8 ignore start */
 71013              if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {
 71014                  throw new Error('invalid part: ' + p);
 71015              }
 71016              /* c8 ignore stop */
 71017              this.#parts.push(p);
 71018          }
 71019      }
 71020      toJSON() {
 71021          const ret = this.type === null
 71022              ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))
 71023              : [this.type, ...this.#parts.map(p => p.toJSON())];
 71024          if (this.isStart() && !this.type)
 71025              ret.unshift([]);
 71026          if (this.isEnd() &&
 71027              (this === this.#root ||
 71028                  (this.#root.#filledNegs && this.#parent?.type === '!'))) {
 71029              ret.push({});
 71030          }
 71031          return ret;
 71032      }
 71033      isStart() {
 71034          if (this.#root === this)
 71035              return true;
 71036          // if (this.type) return !!this.#parent?.isStart()
 71037          if (!this.#parent?.isStart())
 71038              return false;
 71039          if (this.#parentIndex === 0)
 71040              return true;
 71041          // if everything AHEAD of this is a negation, then it's still the "start"
 71042          const p = this.#parent;
 71043          for (let i = 0; i < this.#parentIndex; i++) {
 71044              const pp = p.#parts[i];
 71045              if (!(pp instanceof AST && pp.type === '!')) {
 71046                  return false;
 71047              }
 71048          }
 71049          return true;
 71050      }
 71051      isEnd() {
 71052          if (this.#root === this)
 71053              return true;
 71054          if (this.#parent?.type === '!')
 71055              return true;
 71056          if (!this.#parent?.isEnd())
 71057              return false;
 71058          if (!this.type)
 71059              return this.#parent?.isEnd();
 71060          // if not root, it'll always have a parent
 71061          /* c8 ignore start */
 71062          const pl = this.#parent ? this.#parent.#parts.length : 0;
 71063          /* c8 ignore stop */
 71064          return this.#parentIndex === pl - 1;
 71065      }
 71066      copyIn(part) {
 71067          if (typeof part === 'string')
 71068              this.push(part);
 71069          else
 71070              this.push(part.clone(this));
 71071      }
 71072      clone(parent) {
 71073          const c = new AST(this.type, parent);
 71074          for (const p of this.#parts) {
 71075              c.copyIn(p);
 71076          }
 71077          return c;
 71078      }
 71079      static #parseAST(str, ast, pos, opt) {
 71080          let escaping = false;
 71081          let inBrace = false;
 71082          let braceStart = -1;
 71083          let braceNeg = false;
 71084          if (ast.type === null) {
 71085              // outside of a extglob, append until we find a start
 71086              let i = pos;
 71087              let acc = '';
 71088              while (i < str.length) {
 71089                  const c = str.charAt(i++);
 71090                  // still accumulate escapes at this point, but we do ignore
 71091                  // starts that are escaped
 71092                  if (escaping || c === '\\') {
 71093                      escaping = !escaping;
 71094                      acc += c;
 71095                      continue;
 71096                  }
 71097                  if (inBrace) {
 71098                      if (i === braceStart + 1) {
 71099                          if (c === '^' || c === '!') {
 71100                              braceNeg = true;
 71101                          }
 71102                      }
 71103                      else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {
 71104                          inBrace = false;
 71105                      }
 71106                      acc += c;
 71107                      continue;
 71108                  }
 71109                  else if (c === '[') {
 71110                      inBrace = true;
 71111                      braceStart = i;
 71112                      braceNeg = false;
 71113                      acc += c;
 71114                      continue;
 71115                  }
 71116                  if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {
 71117                      ast.push(acc);
 71118                      acc = '';
 71119                      const ext = new AST(c, ast);
 71120                      i = AST.#parseAST(str, ext, i, opt);
 71121                      ast.push(ext);
 71122                      continue;
 71123                  }
 71124                  acc += c;
 71125              }
 71126              ast.push(acc);
 71127              return i;
 71128          }
 71129          // some kind of extglob, pos is at the (
 71130          // find the next | or )
 71131          let i = pos + 1;
 71132          let part = new AST(null, ast);
 71133          const parts = [];
 71134          let acc = '';
 71135          while (i < str.length) {
 71136              const c = str.charAt(i++);
 71137              // still accumulate escapes at this point, but we do ignore
 71138              // starts that are escaped
 71139              if (escaping || c === '\\') {
 71140                  escaping = !escaping;
 71141                  acc += c;
 71142                  continue;
 71143              }
 71144              if (inBrace) {
 71145                  if (i === braceStart + 1) {
 71146                      if (c === '^' || c === '!') {
 71147                          braceNeg = true;
 71148                      }
 71149                  }
 71150                  else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {
 71151                      inBrace = false;
 71152                  }
 71153                  acc += c;
 71154                  continue;
 71155              }
 71156              else if (c === '[') {
 71157                  inBrace = true;
 71158                  braceStart = i;
 71159                  braceNeg = false;
 71160                  acc += c;
 71161                  continue;
 71162              }
 71163              if (isExtglobType(c) && str.charAt(i) === '(') {
 71164                  part.push(acc);
 71165                  acc = '';
 71166                  const ext = new AST(c, part);
 71167                  part.push(ext);
 71168                  i = AST.#parseAST(str, ext, i, opt);
 71169                  continue;
 71170              }
 71171              if (c === '|') {
 71172                  part.push(acc);
 71173                  acc = '';
 71174                  parts.push(part);
 71175                  part = new AST(null, ast);
 71176                  continue;
 71177              }
 71178              if (c === ')') {
 71179                  if (acc === '' && ast.#parts.length === 0) {
 71180                      ast.#emptyExt = true;
 71181                  }
 71182                  part.push(acc);
 71183                  acc = '';
 71184                  ast.push(...parts, part);
 71185                  return i;
 71186              }
 71187              acc += c;
 71188          }
 71189          // unfinished extglob
 71190          // if we got here, it was a malformed extglob! not an extglob, but
 71191          // maybe something else in there.
 71192          ast.type = null;
 71193          ast.#hasMagic = undefined;
 71194          ast.#parts = [str.substring(pos - 1)];
 71195          return i;
 71196      }
 71197      static fromGlob(pattern, options = {}) {
 71198          const ast = new AST(null, undefined, options);
 71199          AST.#parseAST(pattern, ast, 0, options);
 71200          return ast;
 71201      }
 71202      // returns the regular expression if there's magic, or the unescaped
 71203      // string if not.
 71204      toMMPattern() {
 71205          // should only be called on root
 71206          /* c8 ignore start */
 71207          if (this !== this.#root)
 71208              return this.#root.toMMPattern();
 71209          /* c8 ignore stop */
 71210          const glob = this.toString();
 71211          const [re, body, hasMagic, uflag] = this.toRegExpSource();
 71212          // if we're in nocase mode, and not nocaseMagicOnly, then we do
 71213          // still need a regular expression if we have to case-insensitively
 71214          // match capital/lowercase characters.
 71215          const anyMagic = hasMagic ||
 71216              this.#hasMagic ||
 71217              (this.#options.nocase &&
 71218                  !this.#options.nocaseMagicOnly &&
 71219                  glob.toUpperCase() !== glob.toLowerCase());
 71220          if (!anyMagic) {
 71221              return body;
 71222          }
 71223          const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');
 71224          return Object.assign(new RegExp(`^${re}$`, flags), {
 71225              _src: re,
 71226              _glob: glob,
 71227          });
 71228      }
 71229      // returns the string match, the regexp source, whether there's magic
 71230      // in the regexp (so a regular expression is required) and whether or
 71231      // not the uflag is needed for the regular expression (for posix classes)
 71232      // TODO: instead of injecting the start/end at this point, just return
 71233      // the BODY of the regexp, along with the start/end portions suitable
 71234      // for binding the start/end in either a joined full-path makeRe context
 71235      // (where we bind to (^|/), or a standalone matchPart context (where
 71236      // we bind to ^, and not /).  Otherwise slashes get duped!
 71237      //
 71238      // In part-matching mode, the start is:
 71239      // - if not isStart: nothing
 71240      // - if traversal possible, but not allowed: ^(?!\.\.?$)
 71241      // - if dots allowed or not possible: ^
 71242      // - if dots possible and not allowed: ^(?!\.)
 71243      // end is:
 71244      // - if not isEnd(): nothing
 71245      // - else: $
 71246      //
 71247      // In full-path matching mode, we put the slash at the START of the
 71248      // pattern, so start is:
 71249      // - if first pattern: same as part-matching mode
 71250      // - if not isStart(): nothing
 71251      // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/))
 71252      // - if dots allowed or not possible: /
 71253      // - if dots possible and not allowed: /(?!\.)
 71254      // end is:
 71255      // - if last pattern, same as part-matching mode
 71256      // - else nothing
 71257      //
 71258      // Always put the (?:$|/) on negated tails, though, because that has to be
 71259      // there to bind the end of the negated pattern portion, and it's easier to
 71260      // just stick it in now rather than try to inject it later in the middle of
 71261      // the pattern.
 71262      //
 71263      // We can just always return the same end, and leave it up to the caller
 71264      // to know whether it's going to be used joined or in parts.
 71265      // And, if the start is adjusted slightly, can do the same there:
 71266      // - if not isStart: nothing
 71267      // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$)
 71268      // - if dots allowed or not possible: (?:/|^)
 71269      // - if dots possible and not allowed: (?:/|^)(?!\.)
 71270      //
 71271      // But it's better to have a simpler binding without a conditional, for
 71272      // performance, so probably better to return both start options.
 71273      //
 71274      // Then the caller just ignores the end if it's not the first pattern,
 71275      // and the start always gets applied.
 71276      //
 71277      // But that's always going to be $ if it's the ending pattern, or nothing,
 71278      // so the caller can just attach $ at the end of the pattern when building.
 71279      //
 71280      // So the todo is:
 71281      // - better detect what kind of start is needed
 71282      // - return both flavors of starting pattern
 71283      // - attach $ at the end of the pattern when creating the actual RegExp
 71284      //
 71285      // Ah, but wait, no, that all only applies to the root when the first pattern
 71286      // is not an extglob. If the first pattern IS an extglob, then we need all
 71287      // that dot prevention biz to live in the extglob portions, because eg
 71288      // +(*|.x*) can match .xy but not .yx.
 71289      //
 71290      // So, return the two flavors if it's #root and the first child is not an
 71291      // AST, otherwise leave it to the child AST to handle it, and there,
 71292      // use the (?:^|/) style of start binding.
 71293      //
 71294      // Even simplified further:
 71295      // - Since the start for a join is eg /(?!\.) and the start for a part
 71296      // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root
 71297      // or start or whatever) and prepend ^ or / at the Regexp construction.
 71298      toRegExpSource(allowDot) {
 71299          const dot = allowDot ?? !!this.#options.dot;
 71300          if (this.#root === this)
 71301              this.#fillNegs();
 71302          if (!this.type) {
 71303              const noEmpty = this.isStart() && this.isEnd();
 71304              const src = this.#parts
 71305                  .map(p => {
 71306                  const [re, _, hasMagic, uflag] = typeof p === 'string'
 71307                      ? AST.#parseGlob(p, this.#hasMagic, noEmpty)
 71308                      : p.toRegExpSource(allowDot);
 71309                  this.#hasMagic = this.#hasMagic || hasMagic;
 71310                  this.#uflag = this.#uflag || uflag;
 71311                  return re;
 71312              })
 71313                  .join('');
 71314              let start = '';
 71315              if (this.isStart()) {
 71316                  if (typeof this.#parts[0] === 'string') {
 71317                      // this is the string that will match the start of the pattern,
 71318                      // so we need to protect against dots and such.
 71319                      // '.' and '..' cannot match unless the pattern is that exactly,
 71320                      // even if it starts with . or dot:true is set.
 71321                      const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);
 71322                      if (!dotTravAllowed) {
 71323                          const aps = addPatternStart;
 71324                          // check if we have a possibility of matching . or ..,
 71325                          // and prevent that.
 71326                          const needNoTrav = 
 71327                          // dots are allowed, and the pattern starts with [ or .
 71328                          (dot && aps.has(src.charAt(0))) ||
 71329                              // the pattern starts with \., and then [ or .
 71330                              (src.startsWith('\\.') && aps.has(src.charAt(2))) ||
 71331                              // the pattern starts with \.\., and then [ or .
 71332                              (src.startsWith('\\.\\.') && aps.has(src.charAt(4)));
 71333                          // no need to prevent dots if it can't match a dot, or if a
 71334                          // sub-pattern will be preventing it anyway.
 71335                          const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));
 71336                          start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';
 71337                      }
 71338                  }
 71339              }
 71340              // append the "end of path portion" pattern to negation tails
 71341              let end = '';
 71342              if (this.isEnd() &&
 71343                  this.#root.#filledNegs &&
 71344                  this.#parent?.type === '!') {
 71345                  end = '(?:$|\\/)';
 71346              }
 71347              const final = start + src + end;
 71348              return [
 71349                  final,
 71350                  (0, unescape_js_1.unescape)(src),
 71351                  (this.#hasMagic = !!this.#hasMagic),
 71352                  this.#uflag,
 71353              ];
 71354          }
 71355          // We need to calculate the body *twice* if it's a repeat pattern
 71356          // at the start, once in nodot mode, then again in dot mode, so a
 71357          // pattern like *(?) can match 'x.y'
 71358          const repeated = this.type === '*' || this.type === '+';
 71359          // some kind of extglob
 71360          const start = this.type === '!' ? '(?:(?!(?:' : '(?:';
 71361          let body = this.#partsToRegExp(dot);
 71362          if (this.isStart() && this.isEnd() && !body && this.type !== '!') {
 71363              // invalid extglob, has to at least be *something* present, if it's
 71364              // the entire path portion.
 71365              const s = this.toString();
 71366              this.#parts = [s];
 71367              this.type = null;
 71368              this.#hasMagic = undefined;
 71369              return [s, (0, unescape_js_1.unescape)(this.toString()), false, false];
 71370          }
 71371          // XXX abstract out this map method
 71372          let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot
 71373              ? ''
 71374              : this.#partsToRegExp(true);
 71375          if (bodyDotAllowed === body) {
 71376              bodyDotAllowed = '';
 71377          }
 71378          if (bodyDotAllowed) {
 71379              body = `(?:${body})(?:${bodyDotAllowed})*?`;
 71380          }
 71381          // an empty !() is exactly equivalent to a starNoEmpty
 71382          let final = '';
 71383          if (this.type === '!' && this.#emptyExt) {
 71384              final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;
 71385          }
 71386          else {
 71387              const close = this.type === '!'
 71388                  ? // !() must match something,but !(x) can match ''
 71389                      '))' +
 71390                          (this.isStart() && !dot && !allowDot ? startNoDot : '') +
 71391                          star +
 71392                          ')'
 71393                  : this.type === '@'
 71394                      ? ')'
 71395                      : this.type === '?'
 71396                          ? ')?'
 71397                          : this.type === '+' && bodyDotAllowed
 71398                              ? ')'
 71399                              : this.type === '*' && bodyDotAllowed
 71400                                  ? `)?`
 71401                                  : `)${this.type}`;
 71402              final = start + body + close;
 71403          }
 71404          return [
 71405              final,
 71406              (0, unescape_js_1.unescape)(body),
 71407              (this.#hasMagic = !!this.#hasMagic),
 71408              this.#uflag,
 71409          ];
 71410      }
 71411      #partsToRegExp(dot) {
 71412          return this.#parts
 71413              .map(p => {
 71414              // extglob ASTs should only contain parent ASTs
 71415              /* c8 ignore start */
 71416              if (typeof p === 'string') {
 71417                  throw new Error('string type in extglob ast??');
 71418              }
 71419              /* c8 ignore stop */
 71420              // can ignore hasMagic, because extglobs are already always magic
 71421              const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);
 71422              this.#uflag = this.#uflag || uflag;
 71423              return re;
 71424          })
 71425              .filter(p => !(this.isStart() && this.isEnd()) || !!p)
 71426              .join('|');
 71427      }
 71428      static #parseGlob(glob, hasMagic, noEmpty = false) {
 71429          let escaping = false;
 71430          let re = '';
 71431          let uflag = false;
 71432          for (let i = 0; i < glob.length; i++) {
 71433              const c = glob.charAt(i);
 71434              if (escaping) {
 71435                  escaping = false;
 71436                  re += (reSpecials.has(c) ? '\\' : '') + c;
 71437                  continue;
 71438              }
 71439              if (c === '\\') {
 71440                  if (i === glob.length - 1) {
 71441                      re += '\\\\';
 71442                  }
 71443                  else {
 71444                      escaping = true;
 71445                  }
 71446                  continue;
 71447              }
 71448              if (c === '[') {
 71449                  const [src, needUflag, consumed, magic] = (0, brace_expressions_js_1.parseClass)(glob, i);
 71450                  if (consumed) {
 71451                      re += src;
 71452                      uflag = uflag || needUflag;
 71453                      i += consumed - 1;
 71454                      hasMagic = hasMagic || magic;
 71455                      continue;
 71456                  }
 71457              }
 71458              if (c === '*') {
 71459                  if (noEmpty && glob === '*')
 71460                      re += starNoEmpty;
 71461                  else
 71462                      re += star;
 71463                  hasMagic = true;
 71464                  continue;
 71465              }
 71466              if (c === '?') {
 71467                  re += qmark;
 71468                  hasMagic = true;
 71469                  continue;
 71470              }
 71471              re += regExpEscape(c);
 71472          }
 71473          return [re, (0, unescape_js_1.unescape)(glob), !!hasMagic, uflag];
 71474      }
 71475  }
 71476  exports.AST = AST;
 71477  //# sourceMappingURL=ast.js.map
 71478  
 71479  /***/ }),
 71480  
 71481  /***/ 3857:
 71482  /***/ ((__unused_webpack_module, exports) => {
 71483  
 71484  "use strict";
 71485  
 71486  // translate the various posix character classes into unicode properties
 71487  // this works across all unicode locales
 71488  Object.defineProperty(exports, "__esModule", ({ value: true }));
 71489  exports.parseClass = void 0;
 71490  // { <posix class>: [<translation>, /u flag required, negated]
 71491  const posixClasses = {
 71492      '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true],
 71493      '[:alpha:]': ['\\p{L}\\p{Nl}', true],
 71494      '[:ascii:]': ['\\x' + '00-\\x' + '7f', false],
 71495      '[:blank:]': ['\\p{Zs}\\t', true],
 71496      '[:cntrl:]': ['\\p{Cc}', true],
 71497      '[:digit:]': ['\\p{Nd}', true],
 71498      '[:graph:]': ['\\p{Z}\\p{C}', true, true],
 71499      '[:lower:]': ['\\p{Ll}', true],
 71500      '[:print:]': ['\\p{C}', true],
 71501      '[:punct:]': ['\\p{P}', true],
 71502      '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true],
 71503      '[:upper:]': ['\\p{Lu}', true],
 71504      '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true],
 71505      '[:xdigit:]': ['A-Fa-f0-9', false],
 71506  };
 71507  // only need to escape a few things inside of brace expressions
 71508  // escapes: [ \ ] -
 71509  const braceEscape = (s) => s.replace(/[[\]\\-]/g, '\\$&');
 71510  // escape all regexp magic characters
 71511  const regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
 71512  // everything has already been escaped, we just have to join
 71513  const rangesToString = (ranges) => ranges.join('');
 71514  // takes a glob string at a posix brace expression, and returns
 71515  // an equivalent regular expression source, and boolean indicating
 71516  // whether the /u flag needs to be applied, and the number of chars
 71517  // consumed to parse the character class.
 71518  // This also removes out of order ranges, and returns ($.) if the
 71519  // entire class just no good.
 71520  const parseClass = (glob, position) => {
 71521      const pos = position;
 71522      /* c8 ignore start */
 71523      if (glob.charAt(pos) !== '[') {
 71524          throw new Error('not in a brace expression');
 71525      }
 71526      /* c8 ignore stop */
 71527      const ranges = [];
 71528      const negs = [];
 71529      let i = pos + 1;
 71530      let sawStart = false;
 71531      let uflag = false;
 71532      let escaping = false;
 71533      let negate = false;
 71534      let endPos = pos;
 71535      let rangeStart = '';
 71536      WHILE: while (i < glob.length) {
 71537          const c = glob.charAt(i);
 71538          if ((c === '!' || c === '^') && i === pos + 1) {
 71539              negate = true;
 71540              i++;
 71541              continue;
 71542          }
 71543          if (c === ']' && sawStart && !escaping) {
 71544              endPos = i + 1;
 71545              break;
 71546          }
 71547          sawStart = true;
 71548          if (c === '\\') {
 71549              if (!escaping) {
 71550                  escaping = true;
 71551                  i++;
 71552                  continue;
 71553              }
 71554              // escaped \ char, fall through and treat like normal char
 71555          }
 71556          if (c === '[' && !escaping) {
 71557              // either a posix class, a collation equivalent, or just a [
 71558              for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {
 71559                  if (glob.startsWith(cls, i)) {
 71560                      // invalid, [a-[] is fine, but not [a-[:alpha]]
 71561                      if (rangeStart) {
 71562                          return ['$.', false, glob.length - pos, true];
 71563                      }
 71564                      i += cls.length;
 71565                      if (neg)
 71566                          negs.push(unip);
 71567                      else
 71568                          ranges.push(unip);
 71569                      uflag = uflag || u;
 71570                      continue WHILE;
 71571                  }
 71572              }
 71573          }
 71574          // now it's just a normal character, effectively
 71575          escaping = false;
 71576          if (rangeStart) {
 71577              // throw this range away if it's not valid, but others
 71578              // can still match.
 71579              if (c > rangeStart) {
 71580                  ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));
 71581              }
 71582              else if (c === rangeStart) {
 71583                  ranges.push(braceEscape(c));
 71584              }
 71585              rangeStart = '';
 71586              i++;
 71587              continue;
 71588          }
 71589          // now might be the start of a range.
 71590          // can be either c-d or c-] or c<more...>] or c] at this point
 71591          if (glob.startsWith('-]', i + 1)) {
 71592              ranges.push(braceEscape(c + '-'));
 71593              i += 2;
 71594              continue;
 71595          }
 71596          if (glob.startsWith('-', i + 1)) {
 71597              rangeStart = c;
 71598              i += 2;
 71599              continue;
 71600          }
 71601          // not the start of a range, just a single character
 71602          ranges.push(braceEscape(c));
 71603          i++;
 71604      }
 71605      if (endPos < i) {
 71606          // didn't see the end of the class, not a valid class,
 71607          // but might still be valid as a literal match.
 71608          return ['', false, 0, false];
 71609      }
 71610      // if we got no ranges and no negates, then we have a range that
 71611      // cannot possibly match anything, and that poisons the whole glob
 71612      if (!ranges.length && !negs.length) {
 71613          return ['$.', false, glob.length - pos, true];
 71614      }
 71615      // if we got one positive range, and it's a single character, then that's
 71616      // not actually a magic pattern, it's just that one literal character.
 71617      // we should not treat that as "magic", we should just return the literal
 71618      // character. [_] is a perfectly valid way to escape glob magic chars.
 71619      if (negs.length === 0 &&
 71620          ranges.length === 1 &&
 71621          /^\\?.$/.test(ranges[0]) &&
 71622          !negate) {
 71623          const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];
 71624          return [regexpEscape(r), false, endPos - pos, false];
 71625      }
 71626      const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';
 71627      const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';
 71628      const comb = ranges.length && negs.length
 71629          ? '(' + sranges + '|' + snegs + ')'
 71630          : ranges.length
 71631              ? sranges
 71632              : snegs;
 71633      return [comb, uflag, endPos - pos, true];
 71634  };
 71635  exports.parseClass = parseClass;
 71636  //# sourceMappingURL=brace-expressions.js.map
 71637  
 71638  /***/ }),
 71639  
 71640  /***/ 45615:
 71641  /***/ ((__unused_webpack_module, exports) => {
 71642  
 71643  "use strict";
 71644  
 71645  Object.defineProperty(exports, "__esModule", ({ value: true }));
 71646  exports.escape = void 0;
 71647  /**
 71648   * Escape all magic characters in a glob pattern.
 71649   *
 71650   * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}
 71651   * option is used, then characters are escaped by wrapping in `[]`, because
 71652   * a magic character wrapped in a character class can only be satisfied by
 71653   * that exact character.  In this mode, `\` is _not_ escaped, because it is
 71654   * not interpreted as a magic character, but instead as a path separator.
 71655   */
 71656  const escape = (s, { windowsPathsNoEscape = false, } = {}) => {
 71657      // don't need to escape +@! because we escape the parens
 71658      // that make those magic, and escaping ! as [!] isn't valid,
 71659      // because [!]] is a valid glob class meaning not ']'.
 71660      return windowsPathsNoEscape
 71661          ? s.replace(/[?*()[\]]/g, '[$&]')
 71662          : s.replace(/[?*()[\]\\]/g, '\\$&');
 71663  };
 71664  exports.escape = escape;
 71665  //# sourceMappingURL=escape.js.map
 71666  
 71667  /***/ }),
 71668  
 71669  /***/ 54878:
 71670  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 71671  
 71672  "use strict";
 71673  
 71674  var __importDefault = (this && this.__importDefault) || function (mod) {
 71675      return (mod && mod.__esModule) ? mod : { "default": mod };
 71676  };
 71677  Object.defineProperty(exports, "__esModule", ({ value: true }));
 71678  exports.unescape = exports.escape = exports.AST = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0;
 71679  const brace_expansion_1 = __importDefault(__nccwpck_require__(14515));
 71680  const assert_valid_pattern_js_1 = __nccwpck_require__(43033);
 71681  const ast_js_1 = __nccwpck_require__(10596);
 71682  const escape_js_1 = __nccwpck_require__(45615);
 71683  const unescape_js_1 = __nccwpck_require__(66615);
 71684  const minimatch = (p, pattern, options = {}) => {
 71685      (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
 71686      // shortcut: comments match nothing.
 71687      if (!options.nocomment && pattern.charAt(0) === '#') {
 71688          return false;
 71689      }
 71690      return new Minimatch(pattern, options).match(p);
 71691  };
 71692  exports.minimatch = minimatch;
 71693  // Optimized checking for the most common glob patterns.
 71694  const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/;
 71695  const starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);
 71696  const starDotExtTestDot = (ext) => (f) => f.endsWith(ext);
 71697  const starDotExtTestNocase = (ext) => {
 71698      ext = ext.toLowerCase();
 71699      return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);
 71700  };
 71701  const starDotExtTestNocaseDot = (ext) => {
 71702      ext = ext.toLowerCase();
 71703      return (f) => f.toLowerCase().endsWith(ext);
 71704  };
 71705  const starDotStarRE = /^\*+\.\*+$/;
 71706  const starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');
 71707  const starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');
 71708  const dotStarRE = /^\.\*+$/;
 71709  const dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');
 71710  const starRE = /^\*+$/;
 71711  const starTest = (f) => f.length !== 0 && !f.startsWith('.');
 71712  const starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';
 71713  const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/;
 71714  const qmarksTestNocase = ([$0, ext = '']) => {
 71715      const noext = qmarksTestNoExt([$0]);
 71716      if (!ext)
 71717          return noext;
 71718      ext = ext.toLowerCase();
 71719      return (f) => noext(f) && f.toLowerCase().endsWith(ext);
 71720  };
 71721  const qmarksTestNocaseDot = ([$0, ext = '']) => {
 71722      const noext = qmarksTestNoExtDot([$0]);
 71723      if (!ext)
 71724          return noext;
 71725      ext = ext.toLowerCase();
 71726      return (f) => noext(f) && f.toLowerCase().endsWith(ext);
 71727  };
 71728  const qmarksTestDot = ([$0, ext = '']) => {
 71729      const noext = qmarksTestNoExtDot([$0]);
 71730      return !ext ? noext : (f) => noext(f) && f.endsWith(ext);
 71731  };
 71732  const qmarksTest = ([$0, ext = '']) => {
 71733      const noext = qmarksTestNoExt([$0]);
 71734      return !ext ? noext : (f) => noext(f) && f.endsWith(ext);
 71735  };
 71736  const qmarksTestNoExt = ([$0]) => {
 71737      const len = $0.length;
 71738      return (f) => f.length === len && !f.startsWith('.');
 71739  };
 71740  const qmarksTestNoExtDot = ([$0]) => {
 71741      const len = $0.length;
 71742      return (f) => f.length === len && f !== '.' && f !== '..';
 71743  };
 71744  /* c8 ignore start */
 71745  const defaultPlatform = (typeof process === 'object' && process
 71746      ? (typeof process.env === 'object' &&
 71747          process.env &&
 71748          process.env.__MINIMATCH_TESTING_PLATFORM__) ||
 71749          process.platform
 71750      : 'posix');
 71751  const path = {
 71752      win32: { sep: '\\' },
 71753      posix: { sep: '/' },
 71754  };
 71755  /* c8 ignore stop */
 71756  exports.sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;
 71757  exports.minimatch.sep = exports.sep;
 71758  exports.GLOBSTAR = Symbol('globstar **');
 71759  exports.minimatch.GLOBSTAR = exports.GLOBSTAR;
 71760  // any single thing other than /
 71761  // don't need to escape / when using new RegExp()
 71762  const qmark = '[^/]';
 71763  // * => any number of characters
 71764  const star = qmark + '*?';
 71765  // ** when dots are allowed.  Anything goes, except .. and .
 71766  // not (^ or / followed by one or two dots followed by $ or /),
 71767  // followed by anything, any number of times.
 71768  const twoStarDot = '(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?';
 71769  // not a ^ or / followed by a dot,
 71770  // followed by anything, any number of times.
 71771  const twoStarNoDot = '(?:(?!(?:\\/|^)\\.).)*?';
 71772  const filter = (pattern, options = {}) => (p) => (0, exports.minimatch)(p, pattern, options);
 71773  exports.filter = filter;
 71774  exports.minimatch.filter = exports.filter;
 71775  const ext = (a, b = {}) => Object.assign({}, a, b);
 71776  const defaults = (def) => {
 71777      if (!def || typeof def !== 'object' || !Object.keys(def).length) {
 71778          return exports.minimatch;
 71779      }
 71780      const orig = exports.minimatch;
 71781      const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));
 71782      return Object.assign(m, {
 71783          Minimatch: class Minimatch extends orig.Minimatch {
 71784              constructor(pattern, options = {}) {
 71785                  super(pattern, ext(def, options));
 71786              }
 71787              static defaults(options) {
 71788                  return orig.defaults(ext(def, options)).Minimatch;
 71789              }
 71790          },
 71791          AST: class AST extends orig.AST {
 71792              /* c8 ignore start */
 71793              constructor(type, parent, options = {}) {
 71794                  super(type, parent, ext(def, options));
 71795              }
 71796              /* c8 ignore stop */
 71797              static fromGlob(pattern, options = {}) {
 71798                  return orig.AST.fromGlob(pattern, ext(def, options));
 71799              }
 71800          },
 71801          unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),
 71802          escape: (s, options = {}) => orig.escape(s, ext(def, options)),
 71803          filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),
 71804          defaults: (options) => orig.defaults(ext(def, options)),
 71805          makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),
 71806          braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),
 71807          match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),
 71808          sep: orig.sep,
 71809          GLOBSTAR: exports.GLOBSTAR,
 71810      });
 71811  };
 71812  exports.defaults = defaults;
 71813  exports.minimatch.defaults = exports.defaults;
 71814  // Brace expansion:
 71815  // a{b,c}d -> abd acd
 71816  // a{b,}c -> abc ac
 71817  // a{0..3}d -> a0d a1d a2d a3d
 71818  // a{b,c{d,e}f}g -> abg acdfg acefg
 71819  // a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
 71820  //
 71821  // Invalid sets are not expanded.
 71822  // a{2..}b -> a{2..}b
 71823  // a{b}c -> a{b}c
 71824  const braceExpand = (pattern, options = {}) => {
 71825      (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
 71826      // Thanks to Yeting Li <https://github.com/yetingli> for
 71827      // improving this regexp to avoid a ReDOS vulnerability.
 71828      if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
 71829          // shortcut. no need to expand.
 71830          return [pattern];
 71831      }
 71832      return (0, brace_expansion_1.default)(pattern);
 71833  };
 71834  exports.braceExpand = braceExpand;
 71835  exports.minimatch.braceExpand = exports.braceExpand;
 71836  // parse a component of the expanded set.
 71837  // At this point, no pattern may contain "/" in it
 71838  // so we're going to return a 2d array, where each entry is the full
 71839  // pattern, split on '/', and then turned into a regular expression.
 71840  // A regexp is made at the end which joins each array with an
 71841  // escaped /, and another full one which joins each regexp with |.
 71842  //
 71843  // Following the lead of Bash 4.1, note that "**" only has special meaning
 71844  // when it is the *only* thing in a path portion.  Otherwise, any series
 71845  // of * is equivalent to a single *.  Globstar behavior is enabled by
 71846  // default, and can be disabled by setting options.noglobstar.
 71847  const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();
 71848  exports.makeRe = makeRe;
 71849  exports.minimatch.makeRe = exports.makeRe;
 71850  const match = (list, pattern, options = {}) => {
 71851      const mm = new Minimatch(pattern, options);
 71852      list = list.filter(f => mm.match(f));
 71853      if (mm.options.nonull && !list.length) {
 71854          list.push(pattern);
 71855      }
 71856      return list;
 71857  };
 71858  exports.match = match;
 71859  exports.minimatch.match = exports.match;
 71860  // replace stuff like \* with *
 71861  const globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/;
 71862  const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
 71863  class Minimatch {
 71864      options;
 71865      set;
 71866      pattern;
 71867      windowsPathsNoEscape;
 71868      nonegate;
 71869      negate;
 71870      comment;
 71871      empty;
 71872      preserveMultipleSlashes;
 71873      partial;
 71874      globSet;
 71875      globParts;
 71876      nocase;
 71877      isWindows;
 71878      platform;
 71879      windowsNoMagicRoot;
 71880      regexp;
 71881      constructor(pattern, options = {}) {
 71882          (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
 71883          options = options || {};
 71884          this.options = options;
 71885          this.pattern = pattern;
 71886          this.platform = options.platform || defaultPlatform;
 71887          this.isWindows = this.platform === 'win32';
 71888          this.windowsPathsNoEscape =
 71889              !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
 71890          if (this.windowsPathsNoEscape) {
 71891              this.pattern = this.pattern.replace(/\\/g, '/');
 71892          }
 71893          this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;
 71894          this.regexp = null;
 71895          this.negate = false;
 71896          this.nonegate = !!options.nonegate;
 71897          this.comment = false;
 71898          this.empty = false;
 71899          this.partial = !!options.partial;
 71900          this.nocase = !!this.options.nocase;
 71901          this.windowsNoMagicRoot =
 71902              options.windowsNoMagicRoot !== undefined
 71903                  ? options.windowsNoMagicRoot
 71904                  : !!(this.isWindows && this.nocase);
 71905          this.globSet = [];
 71906          this.globParts = [];
 71907          this.set = [];
 71908          // make the set of regexps etc.
 71909          this.make();
 71910      }
 71911      hasMagic() {
 71912          if (this.options.magicalBraces && this.set.length > 1) {
 71913              return true;
 71914          }
 71915          for (const pattern of this.set) {
 71916              for (const part of pattern) {
 71917                  if (typeof part !== 'string')
 71918                      return true;
 71919              }
 71920          }
 71921          return false;
 71922      }
 71923      debug(..._) { }
 71924      make() {
 71925          const pattern = this.pattern;
 71926          const options = this.options;
 71927          // empty patterns and comments match nothing.
 71928          if (!options.nocomment && pattern.charAt(0) === '#') {
 71929              this.comment = true;
 71930              return;
 71931          }
 71932          if (!pattern) {
 71933              this.empty = true;
 71934              return;
 71935          }
 71936          // step 1: figure out negation, etc.
 71937          this.parseNegate();
 71938          // step 2: expand braces
 71939          this.globSet = [...new Set(this.braceExpand())];
 71940          if (options.debug) {
 71941              this.debug = (...args) => console.error(...args);
 71942          }
 71943          this.debug(this.pattern, this.globSet);
 71944          // step 3: now we have a set, so turn each one into a series of
 71945          // path-portion matching patterns.
 71946          // These will be regexps, except in the case of "**", which is
 71947          // set to the GLOBSTAR object for globstar behavior,
 71948          // and will not contain any / characters
 71949          //
 71950          // First, we preprocess to make the glob pattern sets a bit simpler
 71951          // and deduped.  There are some perf-killing patterns that can cause
 71952          // problems with a glob walk, but we can simplify them down a bit.
 71953          const rawGlobParts = this.globSet.map(s => this.slashSplit(s));
 71954          this.globParts = this.preprocess(rawGlobParts);
 71955          this.debug(this.pattern, this.globParts);
 71956          // glob --> regexps
 71957          let set = this.globParts.map((s, _, __) => {
 71958              if (this.isWindows && this.windowsNoMagicRoot) {
 71959                  // check if it's a drive or unc path.
 71960                  const isUNC = s[0] === '' &&
 71961                      s[1] === '' &&
 71962                      (s[2] === '?' || !globMagic.test(s[2])) &&
 71963                      !globMagic.test(s[3]);
 71964                  const isDrive = /^[a-z]:/i.test(s[0]);
 71965                  if (isUNC) {
 71966                      return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];
 71967                  }
 71968                  else if (isDrive) {
 71969                      return [s[0], ...s.slice(1).map(ss => this.parse(ss))];
 71970                  }
 71971              }
 71972              return s.map(ss => this.parse(ss));
 71973          });
 71974          this.debug(this.pattern, set);
 71975          // filter out everything that didn't compile properly.
 71976          this.set = set.filter(s => s.indexOf(false) === -1);
 71977          // do not treat the ? in UNC paths as magic
 71978          if (this.isWindows) {
 71979              for (let i = 0; i < this.set.length; i++) {
 71980                  const p = this.set[i];
 71981                  if (p[0] === '' &&
 71982                      p[1] === '' &&
 71983                      this.globParts[i][2] === '?' &&
 71984                      typeof p[3] === 'string' &&
 71985                      /^[a-z]:$/i.test(p[3])) {
 71986                      p[2] = '?';
 71987                  }
 71988              }
 71989          }
 71990          this.debug(this.pattern, this.set);
 71991      }
 71992      // various transforms to equivalent pattern sets that are
 71993      // faster to process in a filesystem walk.  The goal is to
 71994      // eliminate what we can, and push all ** patterns as far
 71995      // to the right as possible, even if it increases the number
 71996      // of patterns that we have to process.
 71997      preprocess(globParts) {
 71998          // if we're not in globstar mode, then turn all ** into *
 71999          if (this.options.noglobstar) {
 72000              for (let i = 0; i < globParts.length; i++) {
 72001                  for (let j = 0; j < globParts[i].length; j++) {
 72002                      if (globParts[i][j] === '**') {
 72003                          globParts[i][j] = '*';
 72004                      }
 72005                  }
 72006              }
 72007          }
 72008          const { optimizationLevel = 1 } = this.options;
 72009          if (optimizationLevel >= 2) {
 72010              // aggressive optimization for the purpose of fs walking
 72011              globParts = this.firstPhasePreProcess(globParts);
 72012              globParts = this.secondPhasePreProcess(globParts);
 72013          }
 72014          else if (optimizationLevel >= 1) {
 72015              // just basic optimizations to remove some .. parts
 72016              globParts = this.levelOneOptimize(globParts);
 72017          }
 72018          else {
 72019              globParts = this.adjascentGlobstarOptimize(globParts);
 72020          }
 72021          return globParts;
 72022      }
 72023      // just get rid of adjascent ** portions
 72024      adjascentGlobstarOptimize(globParts) {
 72025          return globParts.map(parts => {
 72026              let gs = -1;
 72027              while (-1 !== (gs = parts.indexOf('**', gs + 1))) {
 72028                  let i = gs;
 72029                  while (parts[i + 1] === '**') {
 72030                      i++;
 72031                  }
 72032                  if (i !== gs) {
 72033                      parts.splice(gs, i - gs);
 72034                  }
 72035              }
 72036              return parts;
 72037          });
 72038      }
 72039      // get rid of adjascent ** and resolve .. portions
 72040      levelOneOptimize(globParts) {
 72041          return globParts.map(parts => {
 72042              parts = parts.reduce((set, part) => {
 72043                  const prev = set[set.length - 1];
 72044                  if (part === '**' && prev === '**') {
 72045                      return set;
 72046                  }
 72047                  if (part === '..') {
 72048                      if (prev && prev !== '..' && prev !== '.' && prev !== '**') {
 72049                          set.pop();
 72050                          return set;
 72051                      }
 72052                  }
 72053                  set.push(part);
 72054                  return set;
 72055              }, []);
 72056              return parts.length === 0 ? [''] : parts;
 72057          });
 72058      }
 72059      levelTwoFileOptimize(parts) {
 72060          if (!Array.isArray(parts)) {
 72061              parts = this.slashSplit(parts);
 72062          }
 72063          let didSomething = false;
 72064          do {
 72065              didSomething = false;
 72066              // <pre>/<e>/<rest> -> <pre>/<rest>
 72067              if (!this.preserveMultipleSlashes) {
 72068                  for (let i = 1; i < parts.length - 1; i++) {
 72069                      const p = parts[i];
 72070                      // don't squeeze out UNC patterns
 72071                      if (i === 1 && p === '' && parts[0] === '')
 72072                          continue;
 72073                      if (p === '.' || p === '') {
 72074                          didSomething = true;
 72075                          parts.splice(i, 1);
 72076                          i--;
 72077                      }
 72078                  }
 72079                  if (parts[0] === '.' &&
 72080                      parts.length === 2 &&
 72081                      (parts[1] === '.' || parts[1] === '')) {
 72082                      didSomething = true;
 72083                      parts.pop();
 72084                  }
 72085              }
 72086              // <pre>/<p>/../<rest> -> <pre>/<rest>
 72087              let dd = 0;
 72088              while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
 72089                  const p = parts[dd - 1];
 72090                  if (p && p !== '.' && p !== '..' && p !== '**') {
 72091                      didSomething = true;
 72092                      parts.splice(dd - 1, 2);
 72093                      dd -= 2;
 72094                  }
 72095              }
 72096          } while (didSomething);
 72097          return parts.length === 0 ? [''] : parts;
 72098      }
 72099      // First phase: single-pattern processing
 72100      // <pre> is 1 or more portions
 72101      // <rest> is 1 or more portions
 72102      // <p> is any portion other than ., .., '', or **
 72103      // <e> is . or ''
 72104      //
 72105      // **/.. is *brutal* for filesystem walking performance, because
 72106      // it effectively resets the recursive walk each time it occurs,
 72107      // and ** cannot be reduced out by a .. pattern part like a regexp
 72108      // or most strings (other than .., ., and '') can be.
 72109      //
 72110      // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}
 72111      // <pre>/<e>/<rest> -> <pre>/<rest>
 72112      // <pre>/<p>/../<rest> -> <pre>/<rest>
 72113      // **/**/<rest> -> **/<rest>
 72114      //
 72115      // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow
 72116      // this WOULD be allowed if ** did follow symlinks, or * didn't
 72117      firstPhasePreProcess(globParts) {
 72118          let didSomething = false;
 72119          do {
 72120              didSomething = false;
 72121              // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}
 72122              for (let parts of globParts) {
 72123                  let gs = -1;
 72124                  while (-1 !== (gs = parts.indexOf('**', gs + 1))) {
 72125                      let gss = gs;
 72126                      while (parts[gss + 1] === '**') {
 72127                          // <pre>/**/**/<rest> -> <pre>/**/<rest>
 72128                          gss++;
 72129                      }
 72130                      // eg, if gs is 2 and gss is 4, that means we have 3 **
 72131                      // parts, and can remove 2 of them.
 72132                      if (gss > gs) {
 72133                          parts.splice(gs + 1, gss - gs);
 72134                      }
 72135                      let next = parts[gs + 1];
 72136                      const p = parts[gs + 2];
 72137                      const p2 = parts[gs + 3];
 72138                      if (next !== '..')
 72139                          continue;
 72140                      if (!p ||
 72141                          p === '.' ||
 72142                          p === '..' ||
 72143                          !p2 ||
 72144                          p2 === '.' ||
 72145                          p2 === '..') {
 72146                          continue;
 72147                      }
 72148                      didSomething = true;
 72149                      // edit parts in place, and push the new one
 72150                      parts.splice(gs, 1);
 72151                      const other = parts.slice(0);
 72152                      other[gs] = '**';
 72153                      globParts.push(other);
 72154                      gs--;
 72155                  }
 72156                  // <pre>/<e>/<rest> -> <pre>/<rest>
 72157                  if (!this.preserveMultipleSlashes) {
 72158                      for (let i = 1; i < parts.length - 1; i++) {
 72159                          const p = parts[i];
 72160                          // don't squeeze out UNC patterns
 72161                          if (i === 1 && p === '' && parts[0] === '')
 72162                              continue;
 72163                          if (p === '.' || p === '') {
 72164                              didSomething = true;
 72165                              parts.splice(i, 1);
 72166                              i--;
 72167                          }
 72168                      }
 72169                      if (parts[0] === '.' &&
 72170                          parts.length === 2 &&
 72171                          (parts[1] === '.' || parts[1] === '')) {
 72172                          didSomething = true;
 72173                          parts.pop();
 72174                      }
 72175                  }
 72176                  // <pre>/<p>/../<rest> -> <pre>/<rest>
 72177                  let dd = 0;
 72178                  while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
 72179                      const p = parts[dd - 1];
 72180                      if (p && p !== '.' && p !== '..' && p !== '**') {
 72181                          didSomething = true;
 72182                          const needDot = dd === 1 && parts[dd + 1] === '**';
 72183                          const splin = needDot ? ['.'] : [];
 72184                          parts.splice(dd - 1, 2, ...splin);
 72185                          if (parts.length === 0)
 72186                              parts.push('');
 72187                          dd -= 2;
 72188                      }
 72189                  }
 72190              }
 72191          } while (didSomething);
 72192          return globParts;
 72193      }
 72194      // second phase: multi-pattern dedupes
 72195      // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>
 72196      // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>
 72197      // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>
 72198      //
 72199      // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>
 72200      // ^-- not valid because ** doens't follow symlinks
 72201      secondPhasePreProcess(globParts) {
 72202          for (let i = 0; i < globParts.length - 1; i++) {
 72203              for (let j = i + 1; j < globParts.length; j++) {
 72204                  const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
 72205                  if (!matched)
 72206                      continue;
 72207                  globParts[i] = matched;
 72208                  globParts[j] = [];
 72209              }
 72210          }
 72211          return globParts.filter(gs => gs.length);
 72212      }
 72213      partsMatch(a, b, emptyGSMatch = false) {
 72214          let ai = 0;
 72215          let bi = 0;
 72216          let result = [];
 72217          let which = '';
 72218          while (ai < a.length && bi < b.length) {
 72219              if (a[ai] === b[bi]) {
 72220                  result.push(which === 'b' ? b[bi] : a[ai]);
 72221                  ai++;
 72222                  bi++;
 72223              }
 72224              else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {
 72225                  result.push(a[ai]);
 72226                  ai++;
 72227              }
 72228              else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {
 72229                  result.push(b[bi]);
 72230                  bi++;
 72231              }
 72232              else if (a[ai] === '*' &&
 72233                  b[bi] &&
 72234                  (this.options.dot || !b[bi].startsWith('.')) &&
 72235                  b[bi] !== '**') {
 72236                  if (which === 'b')
 72237                      return false;
 72238                  which = 'a';
 72239                  result.push(a[ai]);
 72240                  ai++;
 72241                  bi++;
 72242              }
 72243              else if (b[bi] === '*' &&
 72244                  a[ai] &&
 72245                  (this.options.dot || !a[ai].startsWith('.')) &&
 72246                  a[ai] !== '**') {
 72247                  if (which === 'a')
 72248                      return false;
 72249                  which = 'b';
 72250                  result.push(b[bi]);
 72251                  ai++;
 72252                  bi++;
 72253              }
 72254              else {
 72255                  return false;
 72256              }
 72257          }
 72258          // if we fall out of the loop, it means they two are identical
 72259          // as long as their lengths match
 72260          return a.length === b.length && result;
 72261      }
 72262      parseNegate() {
 72263          if (this.nonegate)
 72264              return;
 72265          const pattern = this.pattern;
 72266          let negate = false;
 72267          let negateOffset = 0;
 72268          for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {
 72269              negate = !negate;
 72270              negateOffset++;
 72271          }
 72272          if (negateOffset)
 72273              this.pattern = pattern.slice(negateOffset);
 72274          this.negate = negate;
 72275      }
 72276      // set partial to true to test if, for example,
 72277      // "/a/b" matches the start of "/*/b/*/d"
 72278      // Partial means, if you run out of file before you run
 72279      // out of pattern, then that's fine, as long as all
 72280      // the parts match.
 72281      matchOne(file, pattern, partial = false) {
 72282          const options = this.options;
 72283          // UNC paths like //?/X:/... can match X:/... and vice versa
 72284          // Drive letters in absolute drive or unc paths are always compared
 72285          // case-insensitively.
 72286          if (this.isWindows) {
 72287              const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);
 72288              const fileUNC = !fileDrive &&
 72289                  file[0] === '' &&
 72290                  file[1] === '' &&
 72291                  file[2] === '?' &&
 72292                  /^[a-z]:$/i.test(file[3]);
 72293              const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);
 72294              const patternUNC = !patternDrive &&
 72295                  pattern[0] === '' &&
 72296                  pattern[1] === '' &&
 72297                  pattern[2] === '?' &&
 72298                  typeof pattern[3] === 'string' &&
 72299                  /^[a-z]:$/i.test(pattern[3]);
 72300              const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;
 72301              const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;
 72302              if (typeof fdi === 'number' && typeof pdi === 'number') {
 72303                  const [fd, pd] = [file[fdi], pattern[pdi]];
 72304                  if (fd.toLowerCase() === pd.toLowerCase()) {
 72305                      pattern[pdi] = fd;
 72306                      if (pdi > fdi) {
 72307                          pattern = pattern.slice(pdi);
 72308                      }
 72309                      else if (fdi > pdi) {
 72310                          file = file.slice(fdi);
 72311                      }
 72312                  }
 72313              }
 72314          }
 72315          // resolve and reduce . and .. portions in the file as well.
 72316          // dont' need to do the second phase, because it's only one string[]
 72317          const { optimizationLevel = 1 } = this.options;
 72318          if (optimizationLevel >= 2) {
 72319              file = this.levelTwoFileOptimize(file);
 72320          }
 72321          this.debug('matchOne', this, { file, pattern });
 72322          this.debug('matchOne', file.length, pattern.length);
 72323          for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
 72324              this.debug('matchOne loop');
 72325              var p = pattern[pi];
 72326              var f = file[fi];
 72327              this.debug(pattern, p, f);
 72328              // should be impossible.
 72329              // some invalid regexp stuff in the set.
 72330              /* c8 ignore start */
 72331              if (p === false) {
 72332                  return false;
 72333              }
 72334              /* c8 ignore stop */
 72335              if (p === exports.GLOBSTAR) {
 72336                  this.debug('GLOBSTAR', [pattern, p, f]);
 72337                  // "**"
 72338                  // a/**/b/**/c would match the following:
 72339                  // a/b/x/y/z/c
 72340                  // a/x/y/z/b/c
 72341                  // a/b/x/b/x/c
 72342                  // a/b/c
 72343                  // To do this, take the rest of the pattern after
 72344                  // the **, and see if it would match the file remainder.
 72345                  // If so, return success.
 72346                  // If not, the ** "swallows" a segment, and try again.
 72347                  // This is recursively awful.
 72348                  //
 72349                  // a/**/b/**/c matching a/b/x/y/z/c
 72350                  // - a matches a
 72351                  // - doublestar
 72352                  //   - matchOne(b/x/y/z/c, b/**/c)
 72353                  //     - b matches b
 72354                  //     - doublestar
 72355                  //       - matchOne(x/y/z/c, c) -> no
 72356                  //       - matchOne(y/z/c, c) -> no
 72357                  //       - matchOne(z/c, c) -> no
 72358                  //       - matchOne(c, c) yes, hit
 72359                  var fr = fi;
 72360                  var pr = pi + 1;
 72361                  if (pr === pl) {
 72362                      this.debug('** at the end');
 72363                      // a ** at the end will just swallow the rest.
 72364                      // We have found a match.
 72365                      // however, it will not swallow /.x, unless
 72366                      // options.dot is set.
 72367                      // . and .. are *never* matched by **, for explosively
 72368                      // exponential reasons.
 72369                      for (; fi < fl; fi++) {
 72370                          if (file[fi] === '.' ||
 72371                              file[fi] === '..' ||
 72372                              (!options.dot && file[fi].charAt(0) === '.'))
 72373                              return false;
 72374                      }
 72375                      return true;
 72376                  }
 72377                  // ok, let's see if we can swallow whatever we can.
 72378                  while (fr < fl) {
 72379                      var swallowee = file[fr];
 72380                      this.debug('\nglobstar while', file, fr, pattern, pr, swallowee);
 72381                      // XXX remove this slice.  Just pass the start index.
 72382                      if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
 72383                          this.debug('globstar found match!', fr, fl, swallowee);
 72384                          // found a match.
 72385                          return true;
 72386                      }
 72387                      else {
 72388                          // can't swallow "." or ".." ever.
 72389                          // can only swallow ".foo" when explicitly asked.
 72390                          if (swallowee === '.' ||
 72391                              swallowee === '..' ||
 72392                              (!options.dot && swallowee.charAt(0) === '.')) {
 72393                              this.debug('dot detected!', file, fr, pattern, pr);
 72394                              break;
 72395                          }
 72396                          // ** swallows a segment, and continue.
 72397                          this.debug('globstar swallow a segment, and continue');
 72398                          fr++;
 72399                      }
 72400                  }
 72401                  // no match was found.
 72402                  // However, in partial mode, we can't say this is necessarily over.
 72403                  /* c8 ignore start */
 72404                  if (partial) {
 72405                      // ran out of file
 72406                      this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
 72407                      if (fr === fl) {
 72408                          return true;
 72409                      }
 72410                  }
 72411                  /* c8 ignore stop */
 72412                  return false;
 72413              }
 72414              // something other than **
 72415              // non-magic patterns just have to match exactly
 72416              // patterns with magic have been turned into regexps.
 72417              let hit;
 72418              if (typeof p === 'string') {
 72419                  hit = f === p;
 72420                  this.debug('string match', p, f, hit);
 72421              }
 72422              else {
 72423                  hit = p.test(f);
 72424                  this.debug('pattern match', p, f, hit);
 72425              }
 72426              if (!hit)
 72427                  return false;
 72428          }
 72429          // Note: ending in / means that we'll get a final ""
 72430          // at the end of the pattern.  This can only match a
 72431          // corresponding "" at the end of the file.
 72432          // If the file ends in /, then it can only match a
 72433          // a pattern that ends in /, unless the pattern just
 72434          // doesn't have any more for it. But, a/b/ should *not*
 72435          // match "a/b/*", even though "" matches against the
 72436          // [^/]*? pattern, except in partial mode, where it might
 72437          // simply not be reached yet.
 72438          // However, a/b/ should still satisfy a/*
 72439          // now either we fell off the end of the pattern, or we're done.
 72440          if (fi === fl && pi === pl) {
 72441              // ran out of pattern and filename at the same time.
 72442              // an exact hit!
 72443              return true;
 72444          }
 72445          else if (fi === fl) {
 72446              // ran out of file, but still had pattern left.
 72447              // this is ok if we're doing the match as part of
 72448              // a glob fs traversal.
 72449              return partial;
 72450          }
 72451          else if (pi === pl) {
 72452              // ran out of pattern, still have file left.
 72453              // this is only acceptable if we're on the very last
 72454              // empty segment of a file with a trailing slash.
 72455              // a/* should match a/b/
 72456              return fi === fl - 1 && file[fi] === '';
 72457              /* c8 ignore start */
 72458          }
 72459          else {
 72460              // should be unreachable.
 72461              throw new Error('wtf?');
 72462          }
 72463          /* c8 ignore stop */
 72464      }
 72465      braceExpand() {
 72466          return (0, exports.braceExpand)(this.pattern, this.options);
 72467      }
 72468      parse(pattern) {
 72469          (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
 72470          const options = this.options;
 72471          // shortcuts
 72472          if (pattern === '**')
 72473              return exports.GLOBSTAR;
 72474          if (pattern === '')
 72475              return '';
 72476          // far and away, the most common glob pattern parts are
 72477          // *, *.*, and *.<ext>  Add a fast check method for those.
 72478          let m;
 72479          let fastTest = null;
 72480          if ((m = pattern.match(starRE))) {
 72481              fastTest = options.dot ? starTestDot : starTest;
 72482          }
 72483          else if ((m = pattern.match(starDotExtRE))) {
 72484              fastTest = (options.nocase
 72485                  ? options.dot
 72486                      ? starDotExtTestNocaseDot
 72487                      : starDotExtTestNocase
 72488                  : options.dot
 72489                      ? starDotExtTestDot
 72490                      : starDotExtTest)(m[1]);
 72491          }
 72492          else if ((m = pattern.match(qmarksRE))) {
 72493              fastTest = (options.nocase
 72494                  ? options.dot
 72495                      ? qmarksTestNocaseDot
 72496                      : qmarksTestNocase
 72497                  : options.dot
 72498                      ? qmarksTestDot
 72499                      : qmarksTest)(m);
 72500          }
 72501          else if ((m = pattern.match(starDotStarRE))) {
 72502              fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
 72503          }
 72504          else if ((m = pattern.match(dotStarRE))) {
 72505              fastTest = dotStarTest;
 72506          }
 72507          const re = ast_js_1.AST.fromGlob(pattern, this.options).toMMPattern();
 72508          return fastTest ? Object.assign(re, { test: fastTest }) : re;
 72509      }
 72510      makeRe() {
 72511          if (this.regexp || this.regexp === false)
 72512              return this.regexp;
 72513          // at this point, this.set is a 2d array of partial
 72514          // pattern strings, or "**".
 72515          //
 72516          // It's better to use .match().  This function shouldn't
 72517          // be used, really, but it's pretty convenient sometimes,
 72518          // when you just want to work with a regex.
 72519          const set = this.set;
 72520          if (!set.length) {
 72521              this.regexp = false;
 72522              return this.regexp;
 72523          }
 72524          const options = this.options;
 72525          const twoStar = options.noglobstar
 72526              ? star
 72527              : options.dot
 72528                  ? twoStarDot
 72529                  : twoStarNoDot;
 72530          const flags = new Set(options.nocase ? ['i'] : []);
 72531          // regexpify non-globstar patterns
 72532          // if ** is only item, then we just do one twoStar
 72533          // if ** is first, and there are more, prepend (\/|twoStar\/)? to next
 72534          // if ** is last, append (\/twoStar|) to previous
 72535          // if ** is in the middle, append (\/|\/twoStar\/) to previous
 72536          // then filter out GLOBSTAR symbols
 72537          let re = set
 72538              .map(pattern => {
 72539              const pp = pattern.map(p => {
 72540                  if (p instanceof RegExp) {
 72541                      for (const f of p.flags.split(''))
 72542                          flags.add(f);
 72543                  }
 72544                  return typeof p === 'string'
 72545                      ? regExpEscape(p)
 72546                      : p === exports.GLOBSTAR
 72547                          ? exports.GLOBSTAR
 72548                          : p._src;
 72549              });
 72550              pp.forEach((p, i) => {
 72551                  const next = pp[i + 1];
 72552                  const prev = pp[i - 1];
 72553                  if (p !== exports.GLOBSTAR || prev === exports.GLOBSTAR) {
 72554                      return;
 72555                  }
 72556                  if (prev === undefined) {
 72557                      if (next !== undefined && next !== exports.GLOBSTAR) {
 72558                          pp[i + 1] = '(?:\\/|' + twoStar + '\\/)?' + next;
 72559                      }
 72560                      else {
 72561                          pp[i] = twoStar;
 72562                      }
 72563                  }
 72564                  else if (next === undefined) {
 72565                      pp[i - 1] = prev + '(?:\\/|' + twoStar + ')?';
 72566                  }
 72567                  else if (next !== exports.GLOBSTAR) {
 72568                      pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + '\\/)' + next;
 72569                      pp[i + 1] = exports.GLOBSTAR;
 72570                  }
 72571              });
 72572              return pp.filter(p => p !== exports.GLOBSTAR).join('/');
 72573          })
 72574              .join('|');
 72575          // need to wrap in parens if we had more than one thing with |,
 72576          // otherwise only the first will be anchored to ^ and the last to $
 72577          const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];
 72578          // must match entire pattern
 72579          // ending in a * or ** will make it less strict.
 72580          re = '^' + open + re + close + '$';
 72581          // can match anything, as long as it's not this.
 72582          if (this.negate)
 72583              re = '^(?!' + re + ').+$';
 72584          try {
 72585              this.regexp = new RegExp(re, [...flags].join(''));
 72586              /* c8 ignore start */
 72587          }
 72588          catch (ex) {
 72589              // should be impossible
 72590              this.regexp = false;
 72591          }
 72592          /* c8 ignore stop */
 72593          return this.regexp;
 72594      }
 72595      slashSplit(p) {
 72596          // if p starts with // on windows, we preserve that
 72597          // so that UNC paths aren't broken.  Otherwise, any number of
 72598          // / characters are coalesced into one, unless
 72599          // preserveMultipleSlashes is set to true.
 72600          if (this.preserveMultipleSlashes) {
 72601              return p.split('/');
 72602          }
 72603          else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
 72604              // add an extra '' for the one we lose
 72605              return ['', ...p.split(/\/+/)];
 72606          }
 72607          else {
 72608              return p.split(/\/+/);
 72609          }
 72610      }
 72611      match(f, partial = this.partial) {
 72612          this.debug('match', f, this.pattern);
 72613          // short-circuit in the case of busted things.
 72614          // comments, etc.
 72615          if (this.comment) {
 72616              return false;
 72617          }
 72618          if (this.empty) {
 72619              return f === '';
 72620          }
 72621          if (f === '/' && partial) {
 72622              return true;
 72623          }
 72624          const options = this.options;
 72625          // windows: need to use /, not \
 72626          if (this.isWindows) {
 72627              f = f.split('\\').join('/');
 72628          }
 72629          // treat the test path as a set of pathparts.
 72630          const ff = this.slashSplit(f);
 72631          this.debug(this.pattern, 'split', ff);
 72632          // just ONE of the pattern sets in this.set needs to match
 72633          // in order for it to be valid.  If negating, then just one
 72634          // match means that we have failed.
 72635          // Either way, return on the first hit.
 72636          const set = this.set;
 72637          this.debug(this.pattern, 'set', set);
 72638          // Find the basename of the path by looking for the last non-empty segment
 72639          let filename = ff[ff.length - 1];
 72640          if (!filename) {
 72641              for (let i = ff.length - 2; !filename && i >= 0; i--) {
 72642                  filename = ff[i];
 72643              }
 72644          }
 72645          for (let i = 0; i < set.length; i++) {
 72646              const pattern = set[i];
 72647              let file = ff;
 72648              if (options.matchBase && pattern.length === 1) {
 72649                  file = [filename];
 72650              }
 72651              const hit = this.matchOne(file, pattern, partial);
 72652              if (hit) {
 72653                  if (options.flipNegate) {
 72654                      return true;
 72655                  }
 72656                  return !this.negate;
 72657              }
 72658          }
 72659          // didn't get any hits.  this is success if it's a negative
 72660          // pattern, failure otherwise.
 72661          if (options.flipNegate) {
 72662              return false;
 72663          }
 72664          return this.negate;
 72665      }
 72666      static defaults(def) {
 72667          return exports.minimatch.defaults(def).Minimatch;
 72668      }
 72669  }
 72670  exports.Minimatch = Minimatch;
 72671  /* c8 ignore start */
 72672  var ast_js_2 = __nccwpck_require__(10596);
 72673  Object.defineProperty(exports, "AST", ({ enumerable: true, get: function () { return ast_js_2.AST; } }));
 72674  var escape_js_2 = __nccwpck_require__(45615);
 72675  Object.defineProperty(exports, "escape", ({ enumerable: true, get: function () { return escape_js_2.escape; } }));
 72676  var unescape_js_2 = __nccwpck_require__(66615);
 72677  Object.defineProperty(exports, "unescape", ({ enumerable: true, get: function () { return unescape_js_2.unescape; } }));
 72678  /* c8 ignore stop */
 72679  exports.minimatch.AST = ast_js_1.AST;
 72680  exports.minimatch.Minimatch = Minimatch;
 72681  exports.minimatch.escape = escape_js_1.escape;
 72682  exports.minimatch.unescape = unescape_js_1.unescape;
 72683  //# sourceMappingURL=index.js.map
 72684  
 72685  /***/ }),
 72686  
 72687  /***/ 66615:
 72688  /***/ ((__unused_webpack_module, exports) => {
 72689  
 72690  "use strict";
 72691  
 72692  Object.defineProperty(exports, "__esModule", ({ value: true }));
 72693  exports.unescape = void 0;
 72694  /**
 72695   * Un-escape a string that has been escaped with {@link escape}.
 72696   *
 72697   * If the {@link windowsPathsNoEscape} option is used, then square-brace
 72698   * escapes are removed, but not backslash escapes.  For example, it will turn
 72699   * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`,
 72700   * becuase `\` is a path separator in `windowsPathsNoEscape` mode.
 72701   *
 72702   * When `windowsPathsNoEscape` is not set, then both brace escapes and
 72703   * backslash escapes are removed.
 72704   *
 72705   * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped
 72706   * or unescaped.
 72707   */
 72708  const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {
 72709      return windowsPathsNoEscape
 72710          ? s.replace(/\[([^\/\\])\]/g, '$1')
 72711          : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1');
 72712  };
 72713  exports.unescape = unescape;
 72714  //# sourceMappingURL=unescape.js.map
 72715  
 72716  /***/ }),
 72717  
 72718  /***/ 55339:
 72719  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 72720  
 72721  "use strict";
 72722  
 72723  Object.defineProperty(exports, "__esModule", ({ value: true }));
 72724  exports.Glob = void 0;
 72725  const minimatch_1 = __nccwpck_require__(7111);
 72726  const path_scurry_1 = __nccwpck_require__(51081);
 72727  const url_1 = __nccwpck_require__(57310);
 72728  const pattern_js_1 = __nccwpck_require__(92895);
 72729  const walker_js_1 = __nccwpck_require__(45548);
 72730  // if no process global, just call it linux.
 72731  // so we default to case-sensitive, / separators
 72732  const defaultPlatform = typeof process === 'object' &&
 72733      process &&
 72734      typeof process.platform === 'string'
 72735      ? process.platform
 72736      : 'linux';
 72737  /**
 72738   * An object that can perform glob pattern traversals.
 72739   */
 72740  class Glob {
 72741      absolute;
 72742      cwd;
 72743      root;
 72744      dot;
 72745      dotRelative;
 72746      follow;
 72747      ignore;
 72748      magicalBraces;
 72749      mark;
 72750      matchBase;
 72751      maxDepth;
 72752      nobrace;
 72753      nocase;
 72754      nodir;
 72755      noext;
 72756      noglobstar;
 72757      pattern;
 72758      platform;
 72759      realpath;
 72760      scurry;
 72761      stat;
 72762      signal;
 72763      windowsPathsNoEscape;
 72764      withFileTypes;
 72765      /**
 72766       * The options provided to the constructor.
 72767       */
 72768      opts;
 72769      /**
 72770       * An array of parsed immutable {@link Pattern} objects.
 72771       */
 72772      patterns;
 72773      /**
 72774       * All options are stored as properties on the `Glob` object.
 72775       *
 72776       * See {@link GlobOptions} for full options descriptions.
 72777       *
 72778       * Note that a previous `Glob` object can be passed as the
 72779       * `GlobOptions` to another `Glob` instantiation to re-use settings
 72780       * and caches with a new pattern.
 72781       *
 72782       * Traversal functions can be called multiple times to run the walk
 72783       * again.
 72784       */
 72785      constructor(pattern, opts) {
 72786          /* c8 ignore start */
 72787          if (!opts)
 72788              throw new TypeError('glob options required');
 72789          /* c8 ignore stop */
 72790          this.withFileTypes = !!opts.withFileTypes;
 72791          this.signal = opts.signal;
 72792          this.follow = !!opts.follow;
 72793          this.dot = !!opts.dot;
 72794          this.dotRelative = !!opts.dotRelative;
 72795          this.nodir = !!opts.nodir;
 72796          this.mark = !!opts.mark;
 72797          if (!opts.cwd) {
 72798              this.cwd = '';
 72799          }
 72800          else if (opts.cwd instanceof URL || opts.cwd.startsWith('file://')) {
 72801              opts.cwd = (0, url_1.fileURLToPath)(opts.cwd);
 72802          }
 72803          this.cwd = opts.cwd || '';
 72804          this.root = opts.root;
 72805          this.magicalBraces = !!opts.magicalBraces;
 72806          this.nobrace = !!opts.nobrace;
 72807          this.noext = !!opts.noext;
 72808          this.realpath = !!opts.realpath;
 72809          this.absolute = opts.absolute;
 72810          this.noglobstar = !!opts.noglobstar;
 72811          this.matchBase = !!opts.matchBase;
 72812          this.maxDepth =
 72813              typeof opts.maxDepth === 'number' ? opts.maxDepth : Infinity;
 72814          this.stat = !!opts.stat;
 72815          this.ignore = opts.ignore;
 72816          if (this.withFileTypes && this.absolute !== undefined) {
 72817              throw new Error('cannot set absolute and withFileTypes:true');
 72818          }
 72819          if (typeof pattern === 'string') {
 72820              pattern = [pattern];
 72821          }
 72822          this.windowsPathsNoEscape =
 72823              !!opts.windowsPathsNoEscape ||
 72824                  opts.allowWindowsEscape === false;
 72825          if (this.windowsPathsNoEscape) {
 72826              pattern = pattern.map(p => p.replace(/\\/g, '/'));
 72827          }
 72828          if (this.matchBase) {
 72829              if (opts.noglobstar) {
 72830                  throw new TypeError('base matching requires globstar');
 72831              }
 72832              pattern = pattern.map(p => (p.includes('/') ? p : `./**/${p}`));
 72833          }
 72834          this.pattern = pattern;
 72835          this.platform = opts.platform || defaultPlatform;
 72836          this.opts = { ...opts, platform: this.platform };
 72837          if (opts.scurry) {
 72838              this.scurry = opts.scurry;
 72839              if (opts.nocase !== undefined &&
 72840                  opts.nocase !== opts.scurry.nocase) {
 72841                  throw new Error('nocase option contradicts provided scurry option');
 72842              }
 72843          }
 72844          else {
 72845              const Scurry = opts.platform === 'win32'
 72846                  ? path_scurry_1.PathScurryWin32
 72847                  : opts.platform === 'darwin'
 72848                      ? path_scurry_1.PathScurryDarwin
 72849                      : opts.platform
 72850                          ? path_scurry_1.PathScurryPosix
 72851                          : path_scurry_1.PathScurry;
 72852              this.scurry = new Scurry(this.cwd, {
 72853                  nocase: opts.nocase,
 72854                  fs: opts.fs,
 72855              });
 72856          }
 72857          this.nocase = this.scurry.nocase;
 72858          // If you do nocase:true on a case-sensitive file system, then
 72859          // we need to use regexps instead of strings for non-magic
 72860          // path portions, because statting `aBc` won't return results
 72861          // for the file `AbC` for example.
 72862          const nocaseMagicOnly = this.platform === 'darwin' || this.platform === 'win32';
 72863          const mmo = {
 72864              // default nocase based on platform
 72865              ...opts,
 72866              dot: this.dot,
 72867              matchBase: this.matchBase,
 72868              nobrace: this.nobrace,
 72869              nocase: this.nocase,
 72870              nocaseMagicOnly,
 72871              nocomment: true,
 72872              noext: this.noext,
 72873              nonegate: true,
 72874              optimizationLevel: 2,
 72875              platform: this.platform,
 72876              windowsPathsNoEscape: this.windowsPathsNoEscape,
 72877              debug: !!this.opts.debug,
 72878          };
 72879          const mms = this.pattern.map(p => new minimatch_1.Minimatch(p, mmo));
 72880          const [matchSet, globParts] = mms.reduce((set, m) => {
 72881              set[0].push(...m.set);
 72882              set[1].push(...m.globParts);
 72883              return set;
 72884          }, [[], []]);
 72885          this.patterns = matchSet.map((set, i) => {
 72886              const g = globParts[i];
 72887              /* c8 ignore start */
 72888              if (!g)
 72889                  throw new Error('invalid pattern object');
 72890              /* c8 ignore stop */
 72891              return new pattern_js_1.Pattern(set, g, 0, this.platform);
 72892          });
 72893      }
 72894      async walk() {
 72895          // Walkers always return array of Path objects, so we just have to
 72896          // coerce them into the right shape.  It will have already called
 72897          // realpath() if the option was set to do so, so we know that's cached.
 72898          // start out knowing the cwd, at least
 72899          return [
 72900              ...(await new walker_js_1.GlobWalker(this.patterns, this.scurry.cwd, {
 72901                  ...this.opts,
 72902                  maxDepth: this.maxDepth !== Infinity
 72903                      ? this.maxDepth + this.scurry.cwd.depth()
 72904                      : Infinity,
 72905                  platform: this.platform,
 72906                  nocase: this.nocase,
 72907              }).walk()),
 72908          ];
 72909      }
 72910      walkSync() {
 72911          return [
 72912              ...new walker_js_1.GlobWalker(this.patterns, this.scurry.cwd, {
 72913                  ...this.opts,
 72914                  maxDepth: this.maxDepth !== Infinity
 72915                      ? this.maxDepth + this.scurry.cwd.depth()
 72916                      : Infinity,
 72917                  platform: this.platform,
 72918                  nocase: this.nocase,
 72919              }).walkSync(),
 72920          ];
 72921      }
 72922      stream() {
 72923          return new walker_js_1.GlobStream(this.patterns, this.scurry.cwd, {
 72924              ...this.opts,
 72925              maxDepth: this.maxDepth !== Infinity
 72926                  ? this.maxDepth + this.scurry.cwd.depth()
 72927                  : Infinity,
 72928              platform: this.platform,
 72929              nocase: this.nocase,
 72930          }).stream();
 72931      }
 72932      streamSync() {
 72933          return new walker_js_1.GlobStream(this.patterns, this.scurry.cwd, {
 72934              ...this.opts,
 72935              maxDepth: this.maxDepth !== Infinity
 72936                  ? this.maxDepth + this.scurry.cwd.depth()
 72937                  : Infinity,
 72938              platform: this.platform,
 72939              nocase: this.nocase,
 72940          }).streamSync();
 72941      }
 72942      /**
 72943       * Default sync iteration function. Returns a Generator that
 72944       * iterates over the results.
 72945       */
 72946      iterateSync() {
 72947          return this.streamSync()[Symbol.iterator]();
 72948      }
 72949      [Symbol.iterator]() {
 72950          return this.iterateSync();
 72951      }
 72952      /**
 72953       * Default async iteration function. Returns an AsyncGenerator that
 72954       * iterates over the results.
 72955       */
 72956      iterate() {
 72957          return this.stream()[Symbol.asyncIterator]();
 72958      }
 72959      [Symbol.asyncIterator]() {
 72960          return this.iterate();
 72961      }
 72962  }
 72963  exports.Glob = Glob;
 72964  //# sourceMappingURL=glob.js.map
 72965  
 72966  /***/ }),
 72967  
 72968  /***/ 96490:
 72969  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 72970  
 72971  "use strict";
 72972  
 72973  Object.defineProperty(exports, "__esModule", ({ value: true }));
 72974  exports.hasMagic = void 0;
 72975  const minimatch_1 = __nccwpck_require__(7111);
 72976  /**
 72977   * Return true if the patterns provided contain any magic glob characters,
 72978   * given the options provided.
 72979   *
 72980   * Brace expansion is not considered "magic" unless the `magicalBraces` option
 72981   * is set, as brace expansion just turns one string into an array of strings.
 72982   * So a pattern like `'x{a,b}y'` would return `false`, because `'xay'` and
 72983   * `'xby'` both do not contain any magic glob characters, and it's treated the
 72984   * same as if you had called it on `['xay', 'xby']`. When `magicalBraces:true`
 72985   * is in the options, brace expansion _is_ treated as a pattern having magic.
 72986   */
 72987  const hasMagic = (pattern, options = {}) => {
 72988      if (!Array.isArray(pattern)) {
 72989          pattern = [pattern];
 72990      }
 72991      for (const p of pattern) {
 72992          if (new minimatch_1.Minimatch(p, options).hasMagic())
 72993              return true;
 72994      }
 72995      return false;
 72996  };
 72997  exports.hasMagic = hasMagic;
 72998  //# sourceMappingURL=has-magic.js.map
 72999  
 73000  /***/ }),
 73001  
 73002  /***/ 50750:
 73003  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 73004  
 73005  "use strict";
 73006  
 73007  // give it a pattern, and it'll be able to tell you if
 73008  // a given path should be ignored.
 73009  // Ignoring a path ignores its children if the pattern ends in /**
 73010  // Ignores are always parsed in dot:true mode
 73011  Object.defineProperty(exports, "__esModule", ({ value: true }));
 73012  exports.Ignore = void 0;
 73013  const minimatch_1 = __nccwpck_require__(7111);
 73014  const pattern_js_1 = __nccwpck_require__(92895);
 73015  const defaultPlatform = typeof process === 'object' &&
 73016      process &&
 73017      typeof process.platform === 'string'
 73018      ? process.platform
 73019      : 'linux';
 73020  /**
 73021   * Class used to process ignored patterns
 73022   */
 73023  class Ignore {
 73024      relative;
 73025      relativeChildren;
 73026      absolute;
 73027      absoluteChildren;
 73028      constructor(ignored, { nobrace, nocase, noext, noglobstar, platform = defaultPlatform, }) {
 73029          this.relative = [];
 73030          this.absolute = [];
 73031          this.relativeChildren = [];
 73032          this.absoluteChildren = [];
 73033          const mmopts = {
 73034              dot: true,
 73035              nobrace,
 73036              nocase,
 73037              noext,
 73038              noglobstar,
 73039              optimizationLevel: 2,
 73040              platform,
 73041              nocomment: true,
 73042              nonegate: true,
 73043          };
 73044          // this is a little weird, but it gives us a clean set of optimized
 73045          // minimatch matchers, without getting tripped up if one of them
 73046          // ends in /** inside a brace section, and it's only inefficient at
 73047          // the start of the walk, not along it.
 73048          // It'd be nice if the Pattern class just had a .test() method, but
 73049          // handling globstars is a bit of a pita, and that code already lives
 73050          // in minimatch anyway.
 73051          // Another way would be if maybe Minimatch could take its set/globParts
 73052          // as an option, and then we could at least just use Pattern to test
 73053          // for absolute-ness.
 73054          // Yet another way, Minimatch could take an array of glob strings, and
 73055          // a cwd option, and do the right thing.
 73056          for (const ign of ignored) {
 73057              const mm = new minimatch_1.Minimatch(ign, mmopts);
 73058              for (let i = 0; i < mm.set.length; i++) {
 73059                  const parsed = mm.set[i];
 73060                  const globParts = mm.globParts[i];
 73061                  /* c8 ignore start */
 73062                  if (!parsed || !globParts) {
 73063                      throw new Error('invalid pattern object');
 73064                  }
 73065                  /* c8 ignore stop */
 73066                  const p = new pattern_js_1.Pattern(parsed, globParts, 0, platform);
 73067                  const m = new minimatch_1.Minimatch(p.globString(), mmopts);
 73068                  const children = globParts[globParts.length - 1] === '**';
 73069                  const absolute = p.isAbsolute();
 73070                  if (absolute)
 73071                      this.absolute.push(m);
 73072                  else
 73073                      this.relative.push(m);
 73074                  if (children) {
 73075                      if (absolute)
 73076                          this.absoluteChildren.push(m);
 73077                      else
 73078                          this.relativeChildren.push(m);
 73079                  }
 73080              }
 73081          }
 73082      }
 73083      ignored(p) {
 73084          const fullpath = p.fullpath();
 73085          const fullpaths = `${fullpath}/`;
 73086          const relative = p.relative() || '.';
 73087          const relatives = `${relative}/`;
 73088          for (const m of this.relative) {
 73089              if (m.match(relative) || m.match(relatives))
 73090                  return true;
 73091          }
 73092          for (const m of this.absolute) {
 73093              if (m.match(fullpath) || m.match(fullpaths))
 73094                  return true;
 73095          }
 73096          return false;
 73097      }
 73098      childrenIgnored(p) {
 73099          const fullpath = p.fullpath() + '/';
 73100          const relative = (p.relative() || '.') + '/';
 73101          for (const m of this.relativeChildren) {
 73102              if (m.match(relative))
 73103                  return true;
 73104          }
 73105          for (const m of this.absoluteChildren) {
 73106              if (m.match(fullpath))
 73107                  return true;
 73108          }
 73109          return false;
 73110      }
 73111  }
 73112  exports.Ignore = Ignore;
 73113  //# sourceMappingURL=ignore.js.map
 73114  
 73115  /***/ }),
 73116  
 73117  /***/ 50836:
 73118  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 73119  
 73120  "use strict";
 73121  
 73122  Object.defineProperty(exports, "__esModule", ({ value: true }));
 73123  exports.glob = exports.hasMagic = exports.Glob = exports.unescape = exports.escape = exports.sync = exports.iterate = exports.iterateSync = exports.stream = exports.streamSync = exports.globIterate = exports.globIterateSync = exports.globSync = exports.globStream = exports.globStreamSync = void 0;
 73124  const minimatch_1 = __nccwpck_require__(7111);
 73125  const glob_js_1 = __nccwpck_require__(55339);
 73126  const has_magic_js_1 = __nccwpck_require__(96490);
 73127  function globStreamSync(pattern, options = {}) {
 73128      return new glob_js_1.Glob(pattern, options).streamSync();
 73129  }
 73130  exports.globStreamSync = globStreamSync;
 73131  function globStream(pattern, options = {}) {
 73132      return new glob_js_1.Glob(pattern, options).stream();
 73133  }
 73134  exports.globStream = globStream;
 73135  function globSync(pattern, options = {}) {
 73136      return new glob_js_1.Glob(pattern, options).walkSync();
 73137  }
 73138  exports.globSync = globSync;
 73139  async function glob_(pattern, options = {}) {
 73140      return new glob_js_1.Glob(pattern, options).walk();
 73141  }
 73142  function globIterateSync(pattern, options = {}) {
 73143      return new glob_js_1.Glob(pattern, options).iterateSync();
 73144  }
 73145  exports.globIterateSync = globIterateSync;
 73146  function globIterate(pattern, options = {}) {
 73147      return new glob_js_1.Glob(pattern, options).iterate();
 73148  }
 73149  exports.globIterate = globIterate;
 73150  // aliases: glob.sync.stream() glob.stream.sync() glob.sync() etc
 73151  exports.streamSync = globStreamSync;
 73152  exports.stream = Object.assign(globStream, { sync: globStreamSync });
 73153  exports.iterateSync = globIterateSync;
 73154  exports.iterate = Object.assign(globIterate, {
 73155      sync: globIterateSync,
 73156  });
 73157  exports.sync = Object.assign(globSync, {
 73158      stream: globStreamSync,
 73159      iterate: globIterateSync,
 73160  });
 73161  /* c8 ignore start */
 73162  var minimatch_2 = __nccwpck_require__(7111);
 73163  Object.defineProperty(exports, "escape", ({ enumerable: true, get: function () { return minimatch_2.escape; } }));
 73164  Object.defineProperty(exports, "unescape", ({ enumerable: true, get: function () { return minimatch_2.unescape; } }));
 73165  var glob_js_2 = __nccwpck_require__(55339);
 73166  Object.defineProperty(exports, "Glob", ({ enumerable: true, get: function () { return glob_js_2.Glob; } }));
 73167  var has_magic_js_2 = __nccwpck_require__(96490);
 73168  Object.defineProperty(exports, "hasMagic", ({ enumerable: true, get: function () { return has_magic_js_2.hasMagic; } }));
 73169  /* c8 ignore stop */
 73170  exports.glob = Object.assign(glob_, {
 73171      glob: glob_,
 73172      globSync,
 73173      sync: exports.sync,
 73174      globStream,
 73175      stream: exports.stream,
 73176      globStreamSync,
 73177      streamSync: exports.streamSync,
 73178      globIterate,
 73179      iterate: exports.iterate,
 73180      globIterateSync,
 73181      iterateSync: exports.iterateSync,
 73182      Glob: glob_js_1.Glob,
 73183      hasMagic: has_magic_js_1.hasMagic,
 73184      escape: minimatch_1.escape,
 73185      unescape: minimatch_1.unescape,
 73186  });
 73187  exports.glob.glob = exports.glob;
 73188  //# sourceMappingURL=index.js.map
 73189  
 73190  /***/ }),
 73191  
 73192  /***/ 92895:
 73193  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 73194  
 73195  "use strict";
 73196  
 73197  // this is just a very light wrapper around 2 arrays with an offset index
 73198  Object.defineProperty(exports, "__esModule", ({ value: true }));
 73199  exports.Pattern = void 0;
 73200  const minimatch_1 = __nccwpck_require__(7111);
 73201  const isPatternList = (pl) => pl.length >= 1;
 73202  const isGlobList = (gl) => gl.length >= 1;
 73203  /**
 73204   * An immutable-ish view on an array of glob parts and their parsed
 73205   * results
 73206   */
 73207  class Pattern {
 73208      #patternList;
 73209      #globList;
 73210      #index;
 73211      length;
 73212      #platform;
 73213      #rest;
 73214      #globString;
 73215      #isDrive;
 73216      #isUNC;
 73217      #isAbsolute;
 73218      #followGlobstar = true;
 73219      constructor(patternList, globList, index, platform) {
 73220          if (!isPatternList(patternList)) {
 73221              throw new TypeError('empty pattern list');
 73222          }
 73223          if (!isGlobList(globList)) {
 73224              throw new TypeError('empty glob list');
 73225          }
 73226          if (globList.length !== patternList.length) {
 73227              throw new TypeError('mismatched pattern list and glob list lengths');
 73228          }
 73229          this.length = patternList.length;
 73230          if (index < 0 || index >= this.length) {
 73231              throw new TypeError('index out of range');
 73232          }
 73233          this.#patternList = patternList;
 73234          this.#globList = globList;
 73235          this.#index = index;
 73236          this.#platform = platform;
 73237          // normalize root entries of absolute patterns on initial creation.
 73238          if (this.#index === 0) {
 73239              // c: => ['c:/']
 73240              // C:/ => ['C:/']
 73241              // C:/x => ['C:/', 'x']
 73242              // //host/share => ['//host/share/']
 73243              // //host/share/ => ['//host/share/']
 73244              // //host/share/x => ['//host/share/', 'x']
 73245              // /etc => ['/', 'etc']
 73246              // / => ['/']
 73247              if (this.isUNC()) {
 73248                  // '' / '' / 'host' / 'share'
 73249                  const [p0, p1, p2, p3, ...prest] = this.#patternList;
 73250                  const [g0, g1, g2, g3, ...grest] = this.#globList;
 73251                  if (prest[0] === '') {
 73252                      // ends in /
 73253                      prest.shift();
 73254                      grest.shift();
 73255                  }
 73256                  const p = [p0, p1, p2, p3, ''].join('/');
 73257                  const g = [g0, g1, g2, g3, ''].join('/');
 73258                  this.#patternList = [p, ...prest];
 73259                  this.#globList = [g, ...grest];
 73260                  this.length = this.#patternList.length;
 73261              }
 73262              else if (this.isDrive() || this.isAbsolute()) {
 73263                  const [p1, ...prest] = this.#patternList;
 73264                  const [g1, ...grest] = this.#globList;
 73265                  if (prest[0] === '') {
 73266                      // ends in /
 73267                      prest.shift();
 73268                      grest.shift();
 73269                  }
 73270                  const p = p1 + '/';
 73271                  const g = g1 + '/';
 73272                  this.#patternList = [p, ...prest];
 73273                  this.#globList = [g, ...grest];
 73274                  this.length = this.#patternList.length;
 73275              }
 73276          }
 73277      }
 73278      /**
 73279       * The first entry in the parsed list of patterns
 73280       */
 73281      pattern() {
 73282          return this.#patternList[this.#index];
 73283      }
 73284      /**
 73285       * true of if pattern() returns a string
 73286       */
 73287      isString() {
 73288          return typeof this.#patternList[this.#index] === 'string';
 73289      }
 73290      /**
 73291       * true of if pattern() returns GLOBSTAR
 73292       */
 73293      isGlobstar() {
 73294          return this.#patternList[this.#index] === minimatch_1.GLOBSTAR;
 73295      }
 73296      /**
 73297       * true if pattern() returns a regexp
 73298       */
 73299      isRegExp() {
 73300          return this.#patternList[this.#index] instanceof RegExp;
 73301      }
 73302      /**
 73303       * The /-joined set of glob parts that make up this pattern
 73304       */
 73305      globString() {
 73306          return (this.#globString =
 73307              this.#globString ||
 73308                  (this.#index === 0
 73309                      ? this.isAbsolute()
 73310                          ? this.#globList[0] + this.#globList.slice(1).join('/')
 73311                          : this.#globList.join('/')
 73312                      : this.#globList.slice(this.#index).join('/')));
 73313      }
 73314      /**
 73315       * true if there are more pattern parts after this one
 73316       */
 73317      hasMore() {
 73318          return this.length > this.#index + 1;
 73319      }
 73320      /**
 73321       * The rest of the pattern after this part, or null if this is the end
 73322       */
 73323      rest() {
 73324          if (this.#rest !== undefined)
 73325              return this.#rest;
 73326          if (!this.hasMore())
 73327              return (this.#rest = null);
 73328          this.#rest = new Pattern(this.#patternList, this.#globList, this.#index + 1, this.#platform);
 73329          this.#rest.#isAbsolute = this.#isAbsolute;
 73330          this.#rest.#isUNC = this.#isUNC;
 73331          this.#rest.#isDrive = this.#isDrive;
 73332          return this.#rest;
 73333      }
 73334      /**
 73335       * true if the pattern represents a //unc/path/ on windows
 73336       */
 73337      isUNC() {
 73338          const pl = this.#patternList;
 73339          return this.#isUNC !== undefined
 73340              ? this.#isUNC
 73341              : (this.#isUNC =
 73342                  this.#platform === 'win32' &&
 73343                      this.#index === 0 &&
 73344                      pl[0] === '' &&
 73345                      pl[1] === '' &&
 73346                      typeof pl[2] === 'string' &&
 73347                      !!pl[2] &&
 73348                      typeof pl[3] === 'string' &&
 73349                      !!pl[3]);
 73350      }
 73351      // pattern like C:/...
 73352      // split = ['C:', ...]
 73353      // XXX: would be nice to handle patterns like `c:*` to test the cwd
 73354      // in c: for *, but I don't know of a way to even figure out what that
 73355      // cwd is without actually chdir'ing into it?
 73356      /**
 73357       * True if the pattern starts with a drive letter on Windows
 73358       */
 73359      isDrive() {
 73360          const pl = this.#patternList;
 73361          return this.#isDrive !== undefined
 73362              ? this.#isDrive
 73363              : (this.#isDrive =
 73364                  this.#platform === 'win32' &&
 73365                      this.#index === 0 &&
 73366                      this.length > 1 &&
 73367                      typeof pl[0] === 'string' &&
 73368                      /^[a-z]:$/i.test(pl[0]));
 73369      }
 73370      // pattern = '/' or '/...' or '/x/...'
 73371      // split = ['', ''] or ['', ...] or ['', 'x', ...]
 73372      // Drive and UNC both considered absolute on windows
 73373      /**
 73374       * True if the pattern is rooted on an absolute path
 73375       */
 73376      isAbsolute() {
 73377          const pl = this.#patternList;
 73378          return this.#isAbsolute !== undefined
 73379              ? this.#isAbsolute
 73380              : (this.#isAbsolute =
 73381                  (pl[0] === '' && pl.length > 1) ||
 73382                      this.isDrive() ||
 73383                      this.isUNC());
 73384      }
 73385      /**
 73386       * consume the root of the pattern, and return it
 73387       */
 73388      root() {
 73389          const p = this.#patternList[0];
 73390          return typeof p === 'string' && this.isAbsolute() && this.#index === 0
 73391              ? p
 73392              : '';
 73393      }
 73394      /**
 73395       * Check to see if the current globstar pattern is allowed to follow
 73396       * a symbolic link.
 73397       */
 73398      checkFollowGlobstar() {
 73399          return !(this.#index === 0 ||
 73400              !this.isGlobstar() ||
 73401              !this.#followGlobstar);
 73402      }
 73403      /**
 73404       * Mark that the current globstar pattern is following a symbolic link
 73405       */
 73406      markFollowGlobstar() {
 73407          if (this.#index === 0 || !this.isGlobstar() || !this.#followGlobstar)
 73408              return false;
 73409          this.#followGlobstar = false;
 73410          return true;
 73411      }
 73412  }
 73413  exports.Pattern = Pattern;
 73414  //# sourceMappingURL=pattern.js.map
 73415  
 73416  /***/ }),
 73417  
 73418  /***/ 62813:
 73419  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 73420  
 73421  "use strict";
 73422  
 73423  // synchronous utility for filtering entries and calculating subwalks
 73424  Object.defineProperty(exports, "__esModule", ({ value: true }));
 73425  exports.Processor = exports.SubWalks = exports.MatchRecord = exports.HasWalkedCache = void 0;
 73426  const minimatch_1 = __nccwpck_require__(7111);
 73427  /**
 73428   * A cache of which patterns have been processed for a given Path
 73429   */
 73430  class HasWalkedCache {
 73431      store;
 73432      constructor(store = new Map()) {
 73433          this.store = store;
 73434      }
 73435      copy() {
 73436          return new HasWalkedCache(new Map(this.store));
 73437      }
 73438      hasWalked(target, pattern) {
 73439          return this.store.get(target.fullpath())?.has(pattern.globString());
 73440      }
 73441      storeWalked(target, pattern) {
 73442          const fullpath = target.fullpath();
 73443          const cached = this.store.get(fullpath);
 73444          if (cached)
 73445              cached.add(pattern.globString());
 73446          else
 73447              this.store.set(fullpath, new Set([pattern.globString()]));
 73448      }
 73449  }
 73450  exports.HasWalkedCache = HasWalkedCache;
 73451  /**
 73452   * A record of which paths have been matched in a given walk step,
 73453   * and whether they only are considered a match if they are a directory,
 73454   * and whether their absolute or relative path should be returned.
 73455   */
 73456  class MatchRecord {
 73457      store = new Map();
 73458      add(target, absolute, ifDir) {
 73459          const n = (absolute ? 2 : 0) | (ifDir ? 1 : 0);
 73460          const current = this.store.get(target);
 73461          this.store.set(target, current === undefined ? n : n & current);
 73462      }
 73463      // match, absolute, ifdir
 73464      entries() {
 73465          return [...this.store.entries()].map(([path, n]) => [
 73466              path,
 73467              !!(n & 2),
 73468              !!(n & 1),
 73469          ]);
 73470      }
 73471  }
 73472  exports.MatchRecord = MatchRecord;
 73473  /**
 73474   * A collection of patterns that must be processed in a subsequent step
 73475   * for a given path.
 73476   */
 73477  class SubWalks {
 73478      store = new Map();
 73479      add(target, pattern) {
 73480          if (!target.canReaddir()) {
 73481              return;
 73482          }
 73483          const subs = this.store.get(target);
 73484          if (subs) {
 73485              if (!subs.find(p => p.globString() === pattern.globString())) {
 73486                  subs.push(pattern);
 73487              }
 73488          }
 73489          else
 73490              this.store.set(target, [pattern]);
 73491      }
 73492      get(target) {
 73493          const subs = this.store.get(target);
 73494          /* c8 ignore start */
 73495          if (!subs) {
 73496              throw new Error('attempting to walk unknown path');
 73497          }
 73498          /* c8 ignore stop */
 73499          return subs;
 73500      }
 73501      entries() {
 73502          return this.keys().map(k => [k, this.store.get(k)]);
 73503      }
 73504      keys() {
 73505          return [...this.store.keys()].filter(t => t.canReaddir());
 73506      }
 73507  }
 73508  exports.SubWalks = SubWalks;
 73509  /**
 73510   * The class that processes patterns for a given path.
 73511   *
 73512   * Handles child entry filtering, and determining whether a path's
 73513   * directory contents must be read.
 73514   */
 73515  class Processor {
 73516      hasWalkedCache;
 73517      matches = new MatchRecord();
 73518      subwalks = new SubWalks();
 73519      patterns;
 73520      follow;
 73521      dot;
 73522      opts;
 73523      constructor(opts, hasWalkedCache) {
 73524          this.opts = opts;
 73525          this.follow = !!opts.follow;
 73526          this.dot = !!opts.dot;
 73527          this.hasWalkedCache = hasWalkedCache
 73528              ? hasWalkedCache.copy()
 73529              : new HasWalkedCache();
 73530      }
 73531      processPatterns(target, patterns) {
 73532          this.patterns = patterns;
 73533          const processingSet = patterns.map(p => [target, p]);
 73534          // map of paths to the magic-starting subwalks they need to walk
 73535          // first item in patterns is the filter
 73536          for (let [t, pattern] of processingSet) {
 73537              this.hasWalkedCache.storeWalked(t, pattern);
 73538              const root = pattern.root();
 73539              const absolute = pattern.isAbsolute() && this.opts.absolute !== false;
 73540              // start absolute patterns at root
 73541              if (root) {
 73542                  t = t.resolve(root === '/' && this.opts.root !== undefined
 73543                      ? this.opts.root
 73544                      : root);
 73545                  const rest = pattern.rest();
 73546                  if (!rest) {
 73547                      this.matches.add(t, true, false);
 73548                      continue;
 73549                  }
 73550                  else {
 73551                      pattern = rest;
 73552                  }
 73553              }
 73554              if (t.isENOENT())
 73555                  continue;
 73556              let p;
 73557              let rest;
 73558              let changed = false;
 73559              while (typeof (p = pattern.pattern()) === 'string' &&
 73560                  (rest = pattern.rest())) {
 73561                  const c = t.resolve(p);
 73562                  t = c;
 73563                  pattern = rest;
 73564                  changed = true;
 73565              }
 73566              p = pattern.pattern();
 73567              rest = pattern.rest();
 73568              if (changed) {
 73569                  if (this.hasWalkedCache.hasWalked(t, pattern))
 73570                      continue;
 73571                  this.hasWalkedCache.storeWalked(t, pattern);
 73572              }
 73573              // now we have either a final string for a known entry,
 73574              // more strings for an unknown entry,
 73575              // or a pattern starting with magic, mounted on t.
 73576              if (typeof p === 'string') {
 73577                  // must not be final entry, otherwise we would have
 73578                  // concatenated it earlier.
 73579                  const ifDir = p === '..' || p === '' || p === '.';
 73580                  this.matches.add(t.resolve(p), absolute, ifDir);
 73581                  continue;
 73582              }
 73583              else if (p === minimatch_1.GLOBSTAR) {
 73584                  // if no rest, match and subwalk pattern
 73585                  // if rest, process rest and subwalk pattern
 73586                  // if it's a symlink, but we didn't get here by way of a
 73587                  // globstar match (meaning it's the first time THIS globstar
 73588                  // has traversed a symlink), then we follow it. Otherwise, stop.
 73589                  if (!t.isSymbolicLink() ||
 73590                      this.follow ||
 73591                      pattern.checkFollowGlobstar()) {
 73592                      this.subwalks.add(t, pattern);
 73593                  }
 73594                  const rp = rest?.pattern();
 73595                  const rrest = rest?.rest();
 73596                  if (!rest || ((rp === '' || rp === '.') && !rrest)) {
 73597                      // only HAS to be a dir if it ends in **/ or **/.
 73598                      // but ending in ** will match files as well.
 73599                      this.matches.add(t, absolute, rp === '' || rp === '.');
 73600                  }
 73601                  else {
 73602                      if (rp === '..') {
 73603                          // this would mean you're matching **/.. at the fs root,
 73604                          // and no thanks, I'm not gonna test that specific case.
 73605                          /* c8 ignore start */
 73606                          const tp = t.parent || t;
 73607                          /* c8 ignore stop */
 73608                          if (!rrest)
 73609                              this.matches.add(tp, absolute, true);
 73610                          else if (!this.hasWalkedCache.hasWalked(tp, rrest)) {
 73611                              this.subwalks.add(tp, rrest);
 73612                          }
 73613                      }
 73614                  }
 73615              }
 73616              else if (p instanceof RegExp) {
 73617                  this.subwalks.add(t, pattern);
 73618              }
 73619          }
 73620          return this;
 73621      }
 73622      subwalkTargets() {
 73623          return this.subwalks.keys();
 73624      }
 73625      child() {
 73626          return new Processor(this.opts, this.hasWalkedCache);
 73627      }
 73628      // return a new Processor containing the subwalks for each
 73629      // child entry, and a set of matches, and
 73630      // a hasWalkedCache that's a copy of this one
 73631      // then we're going to call
 73632      filterEntries(parent, entries) {
 73633          const patterns = this.subwalks.get(parent);
 73634          // put matches and entry walks into the results processor
 73635          const results = this.child();
 73636          for (const e of entries) {
 73637              for (const pattern of patterns) {
 73638                  const absolute = pattern.isAbsolute();
 73639                  const p = pattern.pattern();
 73640                  const rest = pattern.rest();
 73641                  if (p === minimatch_1.GLOBSTAR) {
 73642                      results.testGlobstar(e, pattern, rest, absolute);
 73643                  }
 73644                  else if (p instanceof RegExp) {
 73645                      results.testRegExp(e, p, rest, absolute);
 73646                  }
 73647                  else {
 73648                      results.testString(e, p, rest, absolute);
 73649                  }
 73650              }
 73651          }
 73652          return results;
 73653      }
 73654      testGlobstar(e, pattern, rest, absolute) {
 73655          if (this.dot || !e.name.startsWith('.')) {
 73656              if (!pattern.hasMore()) {
 73657                  this.matches.add(e, absolute, false);
 73658              }
 73659              if (e.canReaddir()) {
 73660                  // if we're in follow mode or it's not a symlink, just keep
 73661                  // testing the same pattern. If there's more after the globstar,
 73662                  // then this symlink consumes the globstar. If not, then we can
 73663                  // follow at most ONE symlink along the way, so we mark it, which
 73664                  // also checks to ensure that it wasn't already marked.
 73665                  if (this.follow || !e.isSymbolicLink()) {
 73666                      this.subwalks.add(e, pattern);
 73667                  }
 73668                  else if (e.isSymbolicLink()) {
 73669                      if (rest && pattern.checkFollowGlobstar()) {
 73670                          this.subwalks.add(e, rest);
 73671                      }
 73672                      else if (pattern.markFollowGlobstar()) {
 73673                          this.subwalks.add(e, pattern);
 73674                      }
 73675                  }
 73676              }
 73677          }
 73678          // if the NEXT thing matches this entry, then also add
 73679          // the rest.
 73680          if (rest) {
 73681              const rp = rest.pattern();
 73682              if (typeof rp === 'string' &&
 73683                  // dots and empty were handled already
 73684                  rp !== '..' &&
 73685                  rp !== '' &&
 73686                  rp !== '.') {
 73687                  this.testString(e, rp, rest.rest(), absolute);
 73688              }
 73689              else if (rp === '..') {
 73690                  /* c8 ignore start */
 73691                  const ep = e.parent || e;
 73692                  /* c8 ignore stop */
 73693                  this.subwalks.add(ep, rest);
 73694              }
 73695              else if (rp instanceof RegExp) {
 73696                  this.testRegExp(e, rp, rest.rest(), absolute);
 73697              }
 73698          }
 73699      }
 73700      testRegExp(e, p, rest, absolute) {
 73701          if (!p.test(e.name))
 73702              return;
 73703          if (!rest) {
 73704              this.matches.add(e, absolute, false);
 73705          }
 73706          else {
 73707              this.subwalks.add(e, rest);
 73708          }
 73709      }
 73710      testString(e, p, rest, absolute) {
 73711          // should never happen?
 73712          if (!e.isNamed(p))
 73713              return;
 73714          if (!rest) {
 73715              this.matches.add(e, absolute, false);
 73716          }
 73717          else {
 73718              this.subwalks.add(e, rest);
 73719          }
 73720      }
 73721  }
 73722  exports.Processor = Processor;
 73723  //# sourceMappingURL=processor.js.map
 73724  
 73725  /***/ }),
 73726  
 73727  /***/ 45548:
 73728  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 73729  
 73730  "use strict";
 73731  
 73732  Object.defineProperty(exports, "__esModule", ({ value: true }));
 73733  exports.GlobStream = exports.GlobWalker = exports.GlobUtil = void 0;
 73734  /**
 73735   * Single-use utility classes to provide functionality to the {@link Glob}
 73736   * methods.
 73737   *
 73738   * @module
 73739   */
 73740  const minipass_1 = __nccwpck_require__(14968);
 73741  const ignore_js_1 = __nccwpck_require__(50750);
 73742  const processor_js_1 = __nccwpck_require__(62813);
 73743  const makeIgnore = (ignore, opts) => typeof ignore === 'string'
 73744      ? new ignore_js_1.Ignore([ignore], opts)
 73745      : Array.isArray(ignore)
 73746          ? new ignore_js_1.Ignore(ignore, opts)
 73747          : ignore;
 73748  /**
 73749   * basic walking utilities that all the glob walker types use
 73750   */
 73751  class GlobUtil {
 73752      path;
 73753      patterns;
 73754      opts;
 73755      seen = new Set();
 73756      paused = false;
 73757      aborted = false;
 73758      #onResume = [];
 73759      #ignore;
 73760      #sep;
 73761      signal;
 73762      maxDepth;
 73763      constructor(patterns, path, opts) {
 73764          this.patterns = patterns;
 73765          this.path = path;
 73766          this.opts = opts;
 73767          this.#sep = !opts.posix && opts.platform === 'win32' ? '\\' : '/';
 73768          if (opts.ignore) {
 73769              this.#ignore = makeIgnore(opts.ignore, opts);
 73770          }
 73771          // ignore, always set with maxDepth, but it's optional on the
 73772          // GlobOptions type
 73773          /* c8 ignore start */
 73774          this.maxDepth = opts.maxDepth || Infinity;
 73775          /* c8 ignore stop */
 73776          if (opts.signal) {
 73777              this.signal = opts.signal;
 73778              this.signal.addEventListener('abort', () => {
 73779                  this.#onResume.length = 0;
 73780              });
 73781          }
 73782      }
 73783      #ignored(path) {
 73784          return this.seen.has(path) || !!this.#ignore?.ignored?.(path);
 73785      }
 73786      #childrenIgnored(path) {
 73787          return !!this.#ignore?.childrenIgnored?.(path);
 73788      }
 73789      // backpressure mechanism
 73790      pause() {
 73791          this.paused = true;
 73792      }
 73793      resume() {
 73794          /* c8 ignore start */
 73795          if (this.signal?.aborted)
 73796              return;
 73797          /* c8 ignore stop */
 73798          this.paused = false;
 73799          let fn = undefined;
 73800          while (!this.paused && (fn = this.#onResume.shift())) {
 73801              fn();
 73802          }
 73803      }
 73804      onResume(fn) {
 73805          if (this.signal?.aborted)
 73806              return;
 73807          /* c8 ignore start */
 73808          if (!this.paused) {
 73809              fn();
 73810          }
 73811          else {
 73812              /* c8 ignore stop */
 73813              this.#onResume.push(fn);
 73814          }
 73815      }
 73816      // do the requisite realpath/stat checking, and return the path
 73817      // to add or undefined to filter it out.
 73818      async matchCheck(e, ifDir) {
 73819          if (ifDir && this.opts.nodir)
 73820              return undefined;
 73821          let rpc;
 73822          if (this.opts.realpath) {
 73823              rpc = e.realpathCached() || (await e.realpath());
 73824              if (!rpc)
 73825                  return undefined;
 73826              e = rpc;
 73827          }
 73828          const needStat = e.isUnknown() || this.opts.stat;
 73829          return this.matchCheckTest(needStat ? await e.lstat() : e, ifDir);
 73830      }
 73831      matchCheckTest(e, ifDir) {
 73832          return e &&
 73833              (this.maxDepth === Infinity || e.depth() <= this.maxDepth) &&
 73834              (!ifDir || e.canReaddir()) &&
 73835              (!this.opts.nodir || !e.isDirectory()) &&
 73836              !this.#ignored(e)
 73837              ? e
 73838              : undefined;
 73839      }
 73840      matchCheckSync(e, ifDir) {
 73841          if (ifDir && this.opts.nodir)
 73842              return undefined;
 73843          let rpc;
 73844          if (this.opts.realpath) {
 73845              rpc = e.realpathCached() || e.realpathSync();
 73846              if (!rpc)
 73847                  return undefined;
 73848              e = rpc;
 73849          }
 73850          const needStat = e.isUnknown() || this.opts.stat;
 73851          return this.matchCheckTest(needStat ? e.lstatSync() : e, ifDir);
 73852      }
 73853      matchFinish(e, absolute) {
 73854          if (this.#ignored(e))
 73855              return;
 73856          const abs = this.opts.absolute === undefined ? absolute : this.opts.absolute;
 73857          this.seen.add(e);
 73858          const mark = this.opts.mark && e.isDirectory() ? this.#sep : '';
 73859          // ok, we have what we need!
 73860          if (this.opts.withFileTypes) {
 73861              this.matchEmit(e);
 73862          }
 73863          else if (abs) {
 73864              const abs = this.opts.posix ? e.fullpathPosix() : e.fullpath();
 73865              this.matchEmit(abs + mark);
 73866          }
 73867          else {
 73868              const rel = this.opts.posix ? e.relativePosix() : e.relative();
 73869              const pre = this.opts.dotRelative && !rel.startsWith('..' + this.#sep)
 73870                  ? '.' + this.#sep
 73871                  : '';
 73872              this.matchEmit(!rel ? '.' + mark : pre + rel + mark);
 73873          }
 73874      }
 73875      async match(e, absolute, ifDir) {
 73876          const p = await this.matchCheck(e, ifDir);
 73877          if (p)
 73878              this.matchFinish(p, absolute);
 73879      }
 73880      matchSync(e, absolute, ifDir) {
 73881          const p = this.matchCheckSync(e, ifDir);
 73882          if (p)
 73883              this.matchFinish(p, absolute);
 73884      }
 73885      walkCB(target, patterns, cb) {
 73886          /* c8 ignore start */
 73887          if (this.signal?.aborted)
 73888              cb();
 73889          /* c8 ignore stop */
 73890          this.walkCB2(target, patterns, new processor_js_1.Processor(this.opts), cb);
 73891      }
 73892      walkCB2(target, patterns, processor, cb) {
 73893          if (this.#childrenIgnored(target))
 73894              return cb();
 73895          if (this.signal?.aborted)
 73896              cb();
 73897          if (this.paused) {
 73898              this.onResume(() => this.walkCB2(target, patterns, processor, cb));
 73899              return;
 73900          }
 73901          processor.processPatterns(target, patterns);
 73902          // done processing.  all of the above is sync, can be abstracted out.
 73903          // subwalks is a map of paths to the entry filters they need
 73904          // matches is a map of paths to [absolute, ifDir] tuples.
 73905          let tasks = 1;
 73906          const next = () => {
 73907              if (--tasks === 0)
 73908                  cb();
 73909          };
 73910          for (const [m, absolute, ifDir] of processor.matches.entries()) {
 73911              if (this.#ignored(m))
 73912                  continue;
 73913              tasks++;
 73914              this.match(m, absolute, ifDir).then(() => next());
 73915          }
 73916          for (const t of processor.subwalkTargets()) {
 73917              if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {
 73918                  continue;
 73919              }
 73920              tasks++;
 73921              const childrenCached = t.readdirCached();
 73922              if (t.calledReaddir())
 73923                  this.walkCB3(t, childrenCached, processor, next);
 73924              else {
 73925                  t.readdirCB((_, entries) => this.walkCB3(t, entries, processor, next), true);
 73926              }
 73927          }
 73928          next();
 73929      }
 73930      walkCB3(target, entries, processor, cb) {
 73931          processor = processor.filterEntries(target, entries);
 73932          let tasks = 1;
 73933          const next = () => {
 73934              if (--tasks === 0)
 73935                  cb();
 73936          };
 73937          for (const [m, absolute, ifDir] of processor.matches.entries()) {
 73938              if (this.#ignored(m))
 73939                  continue;
 73940              tasks++;
 73941              this.match(m, absolute, ifDir).then(() => next());
 73942          }
 73943          for (const [target, patterns] of processor.subwalks.entries()) {
 73944              tasks++;
 73945              this.walkCB2(target, patterns, processor.child(), next);
 73946          }
 73947          next();
 73948      }
 73949      walkCBSync(target, patterns, cb) {
 73950          /* c8 ignore start */
 73951          if (this.signal?.aborted)
 73952              cb();
 73953          /* c8 ignore stop */
 73954          this.walkCB2Sync(target, patterns, new processor_js_1.Processor(this.opts), cb);
 73955      }
 73956      walkCB2Sync(target, patterns, processor, cb) {
 73957          if (this.#childrenIgnored(target))
 73958              return cb();
 73959          if (this.signal?.aborted)
 73960              cb();
 73961          if (this.paused) {
 73962              this.onResume(() => this.walkCB2Sync(target, patterns, processor, cb));
 73963              return;
 73964          }
 73965          processor.processPatterns(target, patterns);
 73966          // done processing.  all of the above is sync, can be abstracted out.
 73967          // subwalks is a map of paths to the entry filters they need
 73968          // matches is a map of paths to [absolute, ifDir] tuples.
 73969          let tasks = 1;
 73970          const next = () => {
 73971              if (--tasks === 0)
 73972                  cb();
 73973          };
 73974          for (const [m, absolute, ifDir] of processor.matches.entries()) {
 73975              if (this.#ignored(m))
 73976                  continue;
 73977              this.matchSync(m, absolute, ifDir);
 73978          }
 73979          for (const t of processor.subwalkTargets()) {
 73980              if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {
 73981                  continue;
 73982              }
 73983              tasks++;
 73984              const children = t.readdirSync();
 73985              this.walkCB3Sync(t, children, processor, next);
 73986          }
 73987          next();
 73988      }
 73989      walkCB3Sync(target, entries, processor, cb) {
 73990          processor = processor.filterEntries(target, entries);
 73991          let tasks = 1;
 73992          const next = () => {
 73993              if (--tasks === 0)
 73994                  cb();
 73995          };
 73996          for (const [m, absolute, ifDir] of processor.matches.entries()) {
 73997              if (this.#ignored(m))
 73998                  continue;
 73999              this.matchSync(m, absolute, ifDir);
 74000          }
 74001          for (const [target, patterns] of processor.subwalks.entries()) {
 74002              tasks++;
 74003              this.walkCB2Sync(target, patterns, processor.child(), next);
 74004          }
 74005          next();
 74006      }
 74007  }
 74008  exports.GlobUtil = GlobUtil;
 74009  class GlobWalker extends GlobUtil {
 74010      matches;
 74011      constructor(patterns, path, opts) {
 74012          super(patterns, path, opts);
 74013          this.matches = new Set();
 74014      }
 74015      matchEmit(e) {
 74016          this.matches.add(e);
 74017      }
 74018      async walk() {
 74019          if (this.signal?.aborted)
 74020              throw this.signal.reason;
 74021          if (this.path.isUnknown()) {
 74022              await this.path.lstat();
 74023          }
 74024          await new Promise((res, rej) => {
 74025              this.walkCB(this.path, this.patterns, () => {
 74026                  if (this.signal?.aborted) {
 74027                      rej(this.signal.reason);
 74028                  }
 74029                  else {
 74030                      res(this.matches);
 74031                  }
 74032              });
 74033          });
 74034          return this.matches;
 74035      }
 74036      walkSync() {
 74037          if (this.signal?.aborted)
 74038              throw this.signal.reason;
 74039          if (this.path.isUnknown()) {
 74040              this.path.lstatSync();
 74041          }
 74042          // nothing for the callback to do, because this never pauses
 74043          this.walkCBSync(this.path, this.patterns, () => {
 74044              if (this.signal?.aborted)
 74045                  throw this.signal.reason;
 74046          });
 74047          return this.matches;
 74048      }
 74049  }
 74050  exports.GlobWalker = GlobWalker;
 74051  class GlobStream extends GlobUtil {
 74052      results;
 74053      constructor(patterns, path, opts) {
 74054          super(patterns, path, opts);
 74055          this.results = new minipass_1.Minipass({
 74056              signal: this.signal,
 74057              objectMode: true,
 74058          });
 74059          this.results.on('drain', () => this.resume());
 74060          this.results.on('resume', () => this.resume());
 74061      }
 74062      matchEmit(e) {
 74063          this.results.write(e);
 74064          if (!this.results.flowing)
 74065              this.pause();
 74066      }
 74067      stream() {
 74068          const target = this.path;
 74069          if (target.isUnknown()) {
 74070              target.lstat().then(() => {
 74071                  this.walkCB(target, this.patterns, () => this.results.end());
 74072              });
 74073          }
 74074          else {
 74075              this.walkCB(target, this.patterns, () => this.results.end());
 74076          }
 74077          return this.results;
 74078      }
 74079      streamSync() {
 74080          if (this.path.isUnknown()) {
 74081              this.path.lstatSync();
 74082          }
 74083          this.walkCBSync(this.path, this.patterns, () => this.results.end());
 74084          return this.results;
 74085      }
 74086  }
 74087  exports.GlobStream = GlobStream;
 74088  //# sourceMappingURL=walker.js.map
 74089  
 74090  /***/ }),
 74091  
 74092  /***/ 96874:
 74093  /***/ ((__unused_webpack_module, exports) => {
 74094  
 74095  "use strict";
 74096  
 74097  /**
 74098   * @module LRUCache
 74099   */
 74100  Object.defineProperty(exports, "__esModule", ({ value: true }));
 74101  exports.LRUCache = void 0;
 74102  const perf = typeof performance === 'object' &&
 74103      performance &&
 74104      typeof performance.now === 'function'
 74105      ? performance
 74106      : Date;
 74107  const warned = new Set();
 74108  /* c8 ignore start */
 74109  const PROCESS = (typeof process === 'object' && !!process ? process : {});
 74110  /* c8 ignore start */
 74111  const emitWarning = (msg, type, code, fn) => {
 74112      typeof PROCESS.emitWarning === 'function'
 74113          ? PROCESS.emitWarning(msg, type, code, fn)
 74114          : console.error(`[${code}] ${type}: ${msg}`);
 74115  };
 74116  let AC = globalThis.AbortController;
 74117  let AS = globalThis.AbortSignal;
 74118  /* c8 ignore start */
 74119  if (typeof AC === 'undefined') {
 74120      //@ts-ignore
 74121      AS = class AbortSignal {
 74122          onabort;
 74123          _onabort = [];
 74124          reason;
 74125          aborted = false;
 74126          addEventListener(_, fn) {
 74127              this._onabort.push(fn);
 74128          }
 74129      };
 74130      //@ts-ignore
 74131      AC = class AbortController {
 74132          constructor() {
 74133              warnACPolyfill();
 74134          }
 74135          signal = new AS();
 74136          abort(reason) {
 74137              if (this.signal.aborted)
 74138                  return;
 74139              //@ts-ignore
 74140              this.signal.reason = reason;
 74141              //@ts-ignore
 74142              this.signal.aborted = true;
 74143              //@ts-ignore
 74144              for (const fn of this.signal._onabort) {
 74145                  fn(reason);
 74146              }
 74147              this.signal.onabort?.(reason);
 74148          }
 74149      };
 74150      let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';
 74151      const warnACPolyfill = () => {
 74152          if (!printACPolyfillWarning)
 74153              return;
 74154          printACPolyfillWarning = false;
 74155          emitWarning('AbortController is not defined. If using lru-cache in ' +
 74156              'node 14, load an AbortController polyfill from the ' +
 74157              '`node-abort-controller` package. A minimal polyfill is ' +
 74158              'provided for use by LRUCache.fetch(), but it should not be ' +
 74159              'relied upon in other contexts (eg, passing it to other APIs that ' +
 74160              'use AbortController/AbortSignal might have undesirable effects). ' +
 74161              'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);
 74162      };
 74163  }
 74164  /* c8 ignore stop */
 74165  const shouldWarn = (code) => !warned.has(code);
 74166  const TYPE = Symbol('type');
 74167  const isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);
 74168  /* c8 ignore start */
 74169  // This is a little bit ridiculous, tbh.
 74170  // The maximum array length is 2^32-1 or thereabouts on most JS impls.
 74171  // And well before that point, you're caching the entire world, I mean,
 74172  // that's ~32GB of just integers for the next/prev links, plus whatever
 74173  // else to hold that many keys and values.  Just filling the memory with
 74174  // zeroes at init time is brutal when you get that big.
 74175  // But why not be complete?
 74176  // Maybe in the future, these limits will have expanded.
 74177  const getUintArray = (max) => !isPosInt(max)
 74178      ? null
 74179      : max <= Math.pow(2, 8)
 74180          ? Uint8Array
 74181          : max <= Math.pow(2, 16)
 74182              ? Uint16Array
 74183              : max <= Math.pow(2, 32)
 74184                  ? Uint32Array
 74185                  : max <= Number.MAX_SAFE_INTEGER
 74186                      ? ZeroArray
 74187                      : null;
 74188  /* c8 ignore stop */
 74189  class ZeroArray extends Array {
 74190      constructor(size) {
 74191          super(size);
 74192          this.fill(0);
 74193      }
 74194  }
 74195  class Stack {
 74196      heap;
 74197      length;
 74198      // private constructor
 74199      static #constructing = false;
 74200      static create(max) {
 74201          const HeapCls = getUintArray(max);
 74202          if (!HeapCls)
 74203              return [];
 74204          Stack.#constructing = true;
 74205          const s = new Stack(max, HeapCls);
 74206          Stack.#constructing = false;
 74207          return s;
 74208      }
 74209      constructor(max, HeapCls) {
 74210          /* c8 ignore start */
 74211          if (!Stack.#constructing) {
 74212              throw new TypeError('instantiate Stack using Stack.create(n)');
 74213          }
 74214          /* c8 ignore stop */
 74215          this.heap = new HeapCls(max);
 74216          this.length = 0;
 74217      }
 74218      push(n) {
 74219          this.heap[this.length++] = n;
 74220      }
 74221      pop() {
 74222          return this.heap[--this.length];
 74223      }
 74224  }
 74225  /**
 74226   * Default export, the thing you're using this module to get.
 74227   *
 74228   * All properties from the options object (with the exception of
 74229   * {@link OptionsBase.max} and {@link OptionsBase.maxSize}) are added as
 74230   * normal public members. (`max` and `maxBase` are read-only getters.)
 74231   * Changing any of these will alter the defaults for subsequent method calls,
 74232   * but is otherwise safe.
 74233   */
 74234  class LRUCache {
 74235      // properties coming in from the options of these, only max and maxSize
 74236      // really *need* to be protected. The rest can be modified, as they just
 74237      // set defaults for various methods.
 74238      #max;
 74239      #maxSize;
 74240      #dispose;
 74241      #disposeAfter;
 74242      #fetchMethod;
 74243      /**
 74244       * {@link LRUCache.OptionsBase.ttl}
 74245       */
 74246      ttl;
 74247      /**
 74248       * {@link LRUCache.OptionsBase.ttlResolution}
 74249       */
 74250      ttlResolution;
 74251      /**
 74252       * {@link LRUCache.OptionsBase.ttlAutopurge}
 74253       */
 74254      ttlAutopurge;
 74255      /**
 74256       * {@link LRUCache.OptionsBase.updateAgeOnGet}
 74257       */
 74258      updateAgeOnGet;
 74259      /**
 74260       * {@link LRUCache.OptionsBase.updateAgeOnHas}
 74261       */
 74262      updateAgeOnHas;
 74263      /**
 74264       * {@link LRUCache.OptionsBase.allowStale}
 74265       */
 74266      allowStale;
 74267      /**
 74268       * {@link LRUCache.OptionsBase.noDisposeOnSet}
 74269       */
 74270      noDisposeOnSet;
 74271      /**
 74272       * {@link LRUCache.OptionsBase.noUpdateTTL}
 74273       */
 74274      noUpdateTTL;
 74275      /**
 74276       * {@link LRUCache.OptionsBase.maxEntrySize}
 74277       */
 74278      maxEntrySize;
 74279      /**
 74280       * {@link LRUCache.OptionsBase.sizeCalculation}
 74281       */
 74282      sizeCalculation;
 74283      /**
 74284       * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}
 74285       */
 74286      noDeleteOnFetchRejection;
 74287      /**
 74288       * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}
 74289       */
 74290      noDeleteOnStaleGet;
 74291      /**
 74292       * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}
 74293       */
 74294      allowStaleOnFetchAbort;
 74295      /**
 74296       * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}
 74297       */
 74298      allowStaleOnFetchRejection;
 74299      /**
 74300       * {@link LRUCache.OptionsBase.ignoreFetchAbort}
 74301       */
 74302      ignoreFetchAbort;
 74303      // computed properties
 74304      #size;
 74305      #calculatedSize;
 74306      #keyMap;
 74307      #keyList;
 74308      #valList;
 74309      #next;
 74310      #prev;
 74311      #head;
 74312      #tail;
 74313      #free;
 74314      #disposed;
 74315      #sizes;
 74316      #starts;
 74317      #ttls;
 74318      #hasDispose;
 74319      #hasFetchMethod;
 74320      #hasDisposeAfter;
 74321      /**
 74322       * Do not call this method unless you need to inspect the
 74323       * inner workings of the cache.  If anything returned by this
 74324       * object is modified in any way, strange breakage may occur.
 74325       *
 74326       * These fields are private for a reason!
 74327       *
 74328       * @internal
 74329       */
 74330      static unsafeExposeInternals(c) {
 74331          return {
 74332              // properties
 74333              starts: c.#starts,
 74334              ttls: c.#ttls,
 74335              sizes: c.#sizes,
 74336              keyMap: c.#keyMap,
 74337              keyList: c.#keyList,
 74338              valList: c.#valList,
 74339              next: c.#next,
 74340              prev: c.#prev,
 74341              get head() {
 74342                  return c.#head;
 74343              },
 74344              get tail() {
 74345                  return c.#tail;
 74346              },
 74347              free: c.#free,
 74348              // methods
 74349              isBackgroundFetch: (p) => c.#isBackgroundFetch(p),
 74350              backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),
 74351              moveToTail: (index) => c.#moveToTail(index),
 74352              indexes: (options) => c.#indexes(options),
 74353              rindexes: (options) => c.#rindexes(options),
 74354              isStale: (index) => c.#isStale(index),
 74355          };
 74356      }
 74357      // Protected read-only members
 74358      /**
 74359       * {@link LRUCache.OptionsBase.max} (read-only)
 74360       */
 74361      get max() {
 74362          return this.#max;
 74363      }
 74364      /**
 74365       * {@link LRUCache.OptionsBase.maxSize} (read-only)
 74366       */
 74367      get maxSize() {
 74368          return this.#maxSize;
 74369      }
 74370      /**
 74371       * The total computed size of items in the cache (read-only)
 74372       */
 74373      get calculatedSize() {
 74374          return this.#calculatedSize;
 74375      }
 74376      /**
 74377       * The number of items stored in the cache (read-only)
 74378       */
 74379      get size() {
 74380          return this.#size;
 74381      }
 74382      /**
 74383       * {@link LRUCache.OptionsBase.fetchMethod} (read-only)
 74384       */
 74385      get fetchMethod() {
 74386          return this.#fetchMethod;
 74387      }
 74388      /**
 74389       * {@link LRUCache.OptionsBase.dispose} (read-only)
 74390       */
 74391      get dispose() {
 74392          return this.#dispose;
 74393      }
 74394      /**
 74395       * {@link LRUCache.OptionsBase.disposeAfter} (read-only)
 74396       */
 74397      get disposeAfter() {
 74398          return this.#disposeAfter;
 74399      }
 74400      constructor(options) {
 74401          const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;
 74402          if (max !== 0 && !isPosInt(max)) {
 74403              throw new TypeError('max option must be a nonnegative integer');
 74404          }
 74405          const UintArray = max ? getUintArray(max) : Array;
 74406          if (!UintArray) {
 74407              throw new Error('invalid max value: ' + max);
 74408          }
 74409          this.#max = max;
 74410          this.#maxSize = maxSize;
 74411          this.maxEntrySize = maxEntrySize || this.#maxSize;
 74412          this.sizeCalculation = sizeCalculation;
 74413          if (this.sizeCalculation) {
 74414              if (!this.#maxSize && !this.maxEntrySize) {
 74415                  throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');
 74416              }
 74417              if (typeof this.sizeCalculation !== 'function') {
 74418                  throw new TypeError('sizeCalculation set to non-function');
 74419              }
 74420          }
 74421          if (fetchMethod !== undefined &&
 74422              typeof fetchMethod !== 'function') {
 74423              throw new TypeError('fetchMethod must be a function if specified');
 74424          }
 74425          this.#fetchMethod = fetchMethod;
 74426          this.#hasFetchMethod = !!fetchMethod;
 74427          this.#keyMap = new Map();
 74428          this.#keyList = new Array(max).fill(undefined);
 74429          this.#valList = new Array(max).fill(undefined);
 74430          this.#next = new UintArray(max);
 74431          this.#prev = new UintArray(max);
 74432          this.#head = 0;
 74433          this.#tail = 0;
 74434          this.#free = Stack.create(max);
 74435          this.#size = 0;
 74436          this.#calculatedSize = 0;
 74437          if (typeof dispose === 'function') {
 74438              this.#dispose = dispose;
 74439          }
 74440          if (typeof disposeAfter === 'function') {
 74441              this.#disposeAfter = disposeAfter;
 74442              this.#disposed = [];
 74443          }
 74444          else {
 74445              this.#disposeAfter = undefined;
 74446              this.#disposed = undefined;
 74447          }
 74448          this.#hasDispose = !!this.#dispose;
 74449          this.#hasDisposeAfter = !!this.#disposeAfter;
 74450          this.noDisposeOnSet = !!noDisposeOnSet;
 74451          this.noUpdateTTL = !!noUpdateTTL;
 74452          this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;
 74453          this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;
 74454          this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;
 74455          this.ignoreFetchAbort = !!ignoreFetchAbort;
 74456          // NB: maxEntrySize is set to maxSize if it's set
 74457          if (this.maxEntrySize !== 0) {
 74458              if (this.#maxSize !== 0) {
 74459                  if (!isPosInt(this.#maxSize)) {
 74460                      throw new TypeError('maxSize must be a positive integer if specified');
 74461                  }
 74462              }
 74463              if (!isPosInt(this.maxEntrySize)) {
 74464                  throw new TypeError('maxEntrySize must be a positive integer if specified');
 74465              }
 74466              this.#initializeSizeTracking();
 74467          }
 74468          this.allowStale = !!allowStale;
 74469          this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;
 74470          this.updateAgeOnGet = !!updateAgeOnGet;
 74471          this.updateAgeOnHas = !!updateAgeOnHas;
 74472          this.ttlResolution =
 74473              isPosInt(ttlResolution) || ttlResolution === 0
 74474                  ? ttlResolution
 74475                  : 1;
 74476          this.ttlAutopurge = !!ttlAutopurge;
 74477          this.ttl = ttl || 0;
 74478          if (this.ttl) {
 74479              if (!isPosInt(this.ttl)) {
 74480                  throw new TypeError('ttl must be a positive integer if specified');
 74481              }
 74482              this.#initializeTTLTracking();
 74483          }
 74484          // do not allow completely unbounded caches
 74485          if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {
 74486              throw new TypeError('At least one of max, maxSize, or ttl is required');
 74487          }
 74488          if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {
 74489              const code = 'LRU_CACHE_UNBOUNDED';
 74490              if (shouldWarn(code)) {
 74491                  warned.add(code);
 74492                  const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +
 74493                      'result in unbounded memory consumption.';
 74494                  emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);
 74495              }
 74496          }
 74497      }
 74498      /**
 74499       * Return the remaining TTL time for a given entry key
 74500       */
 74501      getRemainingTTL(key) {
 74502          return this.#keyMap.has(key) ? Infinity : 0;
 74503      }
 74504      #initializeTTLTracking() {
 74505          const ttls = new ZeroArray(this.#max);
 74506          const starts = new ZeroArray(this.#max);
 74507          this.#ttls = ttls;
 74508          this.#starts = starts;
 74509          this.#setItemTTL = (index, ttl, start = perf.now()) => {
 74510              starts[index] = ttl !== 0 ? start : 0;
 74511              ttls[index] = ttl;
 74512              if (ttl !== 0 && this.ttlAutopurge) {
 74513                  const t = setTimeout(() => {
 74514                      if (this.#isStale(index)) {
 74515                          this.delete(this.#keyList[index]);
 74516                      }
 74517                  }, ttl + 1);
 74518                  // unref() not supported on all platforms
 74519                  /* c8 ignore start */
 74520                  if (t.unref) {
 74521                      t.unref();
 74522                  }
 74523                  /* c8 ignore stop */
 74524              }
 74525          };
 74526          this.#updateItemAge = index => {
 74527              starts[index] = ttls[index] !== 0 ? perf.now() : 0;
 74528          };
 74529          this.#statusTTL = (status, index) => {
 74530              if (ttls[index]) {
 74531                  const ttl = ttls[index];
 74532                  const start = starts[index];
 74533                  /* c8 ignore next */
 74534                  if (!ttl || !start)
 74535                      return;
 74536                  status.ttl = ttl;
 74537                  status.start = start;
 74538                  status.now = cachedNow || getNow();
 74539                  const age = status.now - start;
 74540                  status.remainingTTL = ttl - age;
 74541              }
 74542          };
 74543          // debounce calls to perf.now() to 1s so we're not hitting
 74544          // that costly call repeatedly.
 74545          let cachedNow = 0;
 74546          const getNow = () => {
 74547              const n = perf.now();
 74548              if (this.ttlResolution > 0) {
 74549                  cachedNow = n;
 74550                  const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);
 74551                  // not available on all platforms
 74552                  /* c8 ignore start */
 74553                  if (t.unref) {
 74554                      t.unref();
 74555                  }
 74556                  /* c8 ignore stop */
 74557              }
 74558              return n;
 74559          };
 74560          this.getRemainingTTL = key => {
 74561              const index = this.#keyMap.get(key);
 74562              if (index === undefined) {
 74563                  return 0;
 74564              }
 74565              const ttl = ttls[index];
 74566              const start = starts[index];
 74567              if (!ttl || !start) {
 74568                  return Infinity;
 74569              }
 74570              const age = (cachedNow || getNow()) - start;
 74571              return ttl - age;
 74572          };
 74573          this.#isStale = index => {
 74574              const s = starts[index];
 74575              const t = ttls[index];
 74576              return !!t && !!s && (cachedNow || getNow()) - s > t;
 74577          };
 74578      }
 74579      // conditionally set private methods related to TTL
 74580      #updateItemAge = () => { };
 74581      #statusTTL = () => { };
 74582      #setItemTTL = () => { };
 74583      /* c8 ignore stop */
 74584      #isStale = () => false;
 74585      #initializeSizeTracking() {
 74586          const sizes = new ZeroArray(this.#max);
 74587          this.#calculatedSize = 0;
 74588          this.#sizes = sizes;
 74589          this.#removeItemSize = index => {
 74590              this.#calculatedSize -= sizes[index];
 74591              sizes[index] = 0;
 74592          };
 74593          this.#requireSize = (k, v, size, sizeCalculation) => {
 74594              // provisionally accept background fetches.
 74595              // actual value size will be checked when they return.
 74596              if (this.#isBackgroundFetch(v)) {
 74597                  return 0;
 74598              }
 74599              if (!isPosInt(size)) {
 74600                  if (sizeCalculation) {
 74601                      if (typeof sizeCalculation !== 'function') {
 74602                          throw new TypeError('sizeCalculation must be a function');
 74603                      }
 74604                      size = sizeCalculation(v, k);
 74605                      if (!isPosInt(size)) {
 74606                          throw new TypeError('sizeCalculation return invalid (expect positive integer)');
 74607                      }
 74608                  }
 74609                  else {
 74610                      throw new TypeError('invalid size value (must be positive integer). ' +
 74611                          'When maxSize or maxEntrySize is used, sizeCalculation ' +
 74612                          'or size must be set.');
 74613                  }
 74614              }
 74615              return size;
 74616          };
 74617          this.#addItemSize = (index, size, status) => {
 74618              sizes[index] = size;
 74619              if (this.#maxSize) {
 74620                  const maxSize = this.#maxSize - sizes[index];
 74621                  while (this.#calculatedSize > maxSize) {
 74622                      this.#evict(true);
 74623                  }
 74624              }
 74625              this.#calculatedSize += sizes[index];
 74626              if (status) {
 74627                  status.entrySize = size;
 74628                  status.totalCalculatedSize = this.#calculatedSize;
 74629              }
 74630          };
 74631      }
 74632      #removeItemSize = _i => { };
 74633      #addItemSize = (_i, _s, _st) => { };
 74634      #requireSize = (_k, _v, size, sizeCalculation) => {
 74635          if (size || sizeCalculation) {
 74636              throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');
 74637          }
 74638          return 0;
 74639      };
 74640      *#indexes({ allowStale = this.allowStale } = {}) {
 74641          if (this.#size) {
 74642              for (let i = this.#tail; true;) {
 74643                  if (!this.#isValidIndex(i)) {
 74644                      break;
 74645                  }
 74646                  if (allowStale || !this.#isStale(i)) {
 74647                      yield i;
 74648                  }
 74649                  if (i === this.#head) {
 74650                      break;
 74651                  }
 74652                  else {
 74653                      i = this.#prev[i];
 74654                  }
 74655              }
 74656          }
 74657      }
 74658      *#rindexes({ allowStale = this.allowStale } = {}) {
 74659          if (this.#size) {
 74660              for (let i = this.#head; true;) {
 74661                  if (!this.#isValidIndex(i)) {
 74662                      break;
 74663                  }
 74664                  if (allowStale || !this.#isStale(i)) {
 74665                      yield i;
 74666                  }
 74667                  if (i === this.#tail) {
 74668                      break;
 74669                  }
 74670                  else {
 74671                      i = this.#next[i];
 74672                  }
 74673              }
 74674          }
 74675      }
 74676      #isValidIndex(index) {
 74677          return (index !== undefined &&
 74678              this.#keyMap.get(this.#keyList[index]) === index);
 74679      }
 74680      /**
 74681       * Return a generator yielding `[key, value]` pairs,
 74682       * in order from most recently used to least recently used.
 74683       */
 74684      *entries() {
 74685          for (const i of this.#indexes()) {
 74686              if (this.#valList[i] !== undefined &&
 74687                  this.#keyList[i] !== undefined &&
 74688                  !this.#isBackgroundFetch(this.#valList[i])) {
 74689                  yield [this.#keyList[i], this.#valList[i]];
 74690              }
 74691          }
 74692      }
 74693      /**
 74694       * Inverse order version of {@link LRUCache.entries}
 74695       *
 74696       * Return a generator yielding `[key, value]` pairs,
 74697       * in order from least recently used to most recently used.
 74698       */
 74699      *rentries() {
 74700          for (const i of this.#rindexes()) {
 74701              if (this.#valList[i] !== undefined &&
 74702                  this.#keyList[i] !== undefined &&
 74703                  !this.#isBackgroundFetch(this.#valList[i])) {
 74704                  yield [this.#keyList[i], this.#valList[i]];
 74705              }
 74706          }
 74707      }
 74708      /**
 74709       * Return a generator yielding the keys in the cache,
 74710       * in order from most recently used to least recently used.
 74711       */
 74712      *keys() {
 74713          for (const i of this.#indexes()) {
 74714              const k = this.#keyList[i];
 74715              if (k !== undefined &&
 74716                  !this.#isBackgroundFetch(this.#valList[i])) {
 74717                  yield k;
 74718              }
 74719          }
 74720      }
 74721      /**
 74722       * Inverse order version of {@link LRUCache.keys}
 74723       *
 74724       * Return a generator yielding the keys in the cache,
 74725       * in order from least recently used to most recently used.
 74726       */
 74727      *rkeys() {
 74728          for (const i of this.#rindexes()) {
 74729              const k = this.#keyList[i];
 74730              if (k !== undefined &&
 74731                  !this.#isBackgroundFetch(this.#valList[i])) {
 74732                  yield k;
 74733              }
 74734          }
 74735      }
 74736      /**
 74737       * Return a generator yielding the values in the cache,
 74738       * in order from most recently used to least recently used.
 74739       */
 74740      *values() {
 74741          for (const i of this.#indexes()) {
 74742              const v = this.#valList[i];
 74743              if (v !== undefined &&
 74744                  !this.#isBackgroundFetch(this.#valList[i])) {
 74745                  yield this.#valList[i];
 74746              }
 74747          }
 74748      }
 74749      /**
 74750       * Inverse order version of {@link LRUCache.values}
 74751       *
 74752       * Return a generator yielding the values in the cache,
 74753       * in order from least recently used to most recently used.
 74754       */
 74755      *rvalues() {
 74756          for (const i of this.#rindexes()) {
 74757              const v = this.#valList[i];
 74758              if (v !== undefined &&
 74759                  !this.#isBackgroundFetch(this.#valList[i])) {
 74760                  yield this.#valList[i];
 74761              }
 74762          }
 74763      }
 74764      /**
 74765       * Iterating over the cache itself yields the same results as
 74766       * {@link LRUCache.entries}
 74767       */
 74768      [Symbol.iterator]() {
 74769          return this.entries();
 74770      }
 74771      /**
 74772       * A String value that is used in the creation of the default string description of an object.
 74773       * Called by the built-in method Object.prototype.toString.
 74774       */
 74775      [Symbol.toStringTag] = 'LRUCache';
 74776      /**
 74777       * Find a value for which the supplied fn method returns a truthy value,
 74778       * similar to Array.find().  fn is called as fn(value, key, cache).
 74779       */
 74780      find(fn, getOptions = {}) {
 74781          for (const i of this.#indexes()) {
 74782              const v = this.#valList[i];
 74783              const value = this.#isBackgroundFetch(v)
 74784                  ? v.__staleWhileFetching
 74785                  : v;
 74786              if (value === undefined)
 74787                  continue;
 74788              if (fn(value, this.#keyList[i], this)) {
 74789                  return this.get(this.#keyList[i], getOptions);
 74790              }
 74791          }
 74792      }
 74793      /**
 74794       * Call the supplied function on each item in the cache, in order from
 74795       * most recently used to least recently used.  fn is called as
 74796       * fn(value, key, cache).  Does not update age or recenty of use.
 74797       * Does not iterate over stale values.
 74798       */
 74799      forEach(fn, thisp = this) {
 74800          for (const i of this.#indexes()) {
 74801              const v = this.#valList[i];
 74802              const value = this.#isBackgroundFetch(v)
 74803                  ? v.__staleWhileFetching
 74804                  : v;
 74805              if (value === undefined)
 74806                  continue;
 74807              fn.call(thisp, value, this.#keyList[i], this);
 74808          }
 74809      }
 74810      /**
 74811       * The same as {@link LRUCache.forEach} but items are iterated over in
 74812       * reverse order.  (ie, less recently used items are iterated over first.)
 74813       */
 74814      rforEach(fn, thisp = this) {
 74815          for (const i of this.#rindexes()) {
 74816              const v = this.#valList[i];
 74817              const value = this.#isBackgroundFetch(v)
 74818                  ? v.__staleWhileFetching
 74819                  : v;
 74820              if (value === undefined)
 74821                  continue;
 74822              fn.call(thisp, value, this.#keyList[i], this);
 74823          }
 74824      }
 74825      /**
 74826       * Delete any stale entries. Returns true if anything was removed,
 74827       * false otherwise.
 74828       */
 74829      purgeStale() {
 74830          let deleted = false;
 74831          for (const i of this.#rindexes({ allowStale: true })) {
 74832              if (this.#isStale(i)) {
 74833                  this.delete(this.#keyList[i]);
 74834                  deleted = true;
 74835              }
 74836          }
 74837          return deleted;
 74838      }
 74839      /**
 74840       * Get the extended info about a given entry, to get its value, size, and
 74841       * TTL info simultaneously. Like {@link LRUCache#dump}, but just for a
 74842       * single key. Always returns stale values, if their info is found in the
 74843       * cache, so be sure to check for expired TTLs if relevant.
 74844       */
 74845      info(key) {
 74846          const i = this.#keyMap.get(key);
 74847          if (i === undefined)
 74848              return undefined;
 74849          const v = this.#valList[i];
 74850          const value = this.#isBackgroundFetch(v)
 74851              ? v.__staleWhileFetching
 74852              : v;
 74853          if (value === undefined)
 74854              return undefined;
 74855          const entry = { value };
 74856          if (this.#ttls && this.#starts) {
 74857              const ttl = this.#ttls[i];
 74858              const start = this.#starts[i];
 74859              if (ttl && start) {
 74860                  const remain = ttl - (perf.now() - start);
 74861                  entry.ttl = remain;
 74862                  entry.start = Date.now();
 74863              }
 74864          }
 74865          if (this.#sizes) {
 74866              entry.size = this.#sizes[i];
 74867          }
 74868          return entry;
 74869      }
 74870      /**
 74871       * Return an array of [key, {@link LRUCache.Entry}] tuples which can be
 74872       * passed to cache.load()
 74873       */
 74874      dump() {
 74875          const arr = [];
 74876          for (const i of this.#indexes({ allowStale: true })) {
 74877              const key = this.#keyList[i];
 74878              const v = this.#valList[i];
 74879              const value = this.#isBackgroundFetch(v)
 74880                  ? v.__staleWhileFetching
 74881                  : v;
 74882              if (value === undefined || key === undefined)
 74883                  continue;
 74884              const entry = { value };
 74885              if (this.#ttls && this.#starts) {
 74886                  entry.ttl = this.#ttls[i];
 74887                  // always dump the start relative to a portable timestamp
 74888                  // it's ok for this to be a bit slow, it's a rare operation.
 74889                  const age = perf.now() - this.#starts[i];
 74890                  entry.start = Math.floor(Date.now() - age);
 74891              }
 74892              if (this.#sizes) {
 74893                  entry.size = this.#sizes[i];
 74894              }
 74895              arr.unshift([key, entry]);
 74896          }
 74897          return arr;
 74898      }
 74899      /**
 74900       * Reset the cache and load in the items in entries in the order listed.
 74901       * Note that the shape of the resulting cache may be different if the
 74902       * same options are not used in both caches.
 74903       */
 74904      load(arr) {
 74905          this.clear();
 74906          for (const [key, entry] of arr) {
 74907              if (entry.start) {
 74908                  // entry.start is a portable timestamp, but we may be using
 74909                  // node's performance.now(), so calculate the offset, so that
 74910                  // we get the intended remaining TTL, no matter how long it's
 74911                  // been on ice.
 74912                  //
 74913                  // it's ok for this to be a bit slow, it's a rare operation.
 74914                  const age = Date.now() - entry.start;
 74915                  entry.start = perf.now() - age;
 74916              }
 74917              this.set(key, entry.value, entry);
 74918          }
 74919      }
 74920      /**
 74921       * Add a value to the cache.
 74922       *
 74923       * Note: if `undefined` is specified as a value, this is an alias for
 74924       * {@link LRUCache#delete}
 74925       */
 74926      set(k, v, setOptions = {}) {
 74927          if (v === undefined) {
 74928              this.delete(k);
 74929              return this;
 74930          }
 74931          const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;
 74932          let { noUpdateTTL = this.noUpdateTTL } = setOptions;
 74933          const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);
 74934          // if the item doesn't fit, don't do anything
 74935          // NB: maxEntrySize set to maxSize by default
 74936          if (this.maxEntrySize && size > this.maxEntrySize) {
 74937              if (status) {
 74938                  status.set = 'miss';
 74939                  status.maxEntrySizeExceeded = true;
 74940              }
 74941              // have to delete, in case something is there already.
 74942              this.delete(k);
 74943              return this;
 74944          }
 74945          let index = this.#size === 0 ? undefined : this.#keyMap.get(k);
 74946          if (index === undefined) {
 74947              // addition
 74948              index = (this.#size === 0
 74949                  ? this.#tail
 74950                  : this.#free.length !== 0
 74951                      ? this.#free.pop()
 74952                      : this.#size === this.#max
 74953                          ? this.#evict(false)
 74954                          : this.#size);
 74955              this.#keyList[index] = k;
 74956              this.#valList[index] = v;
 74957              this.#keyMap.set(k, index);
 74958              this.#next[this.#tail] = index;
 74959              this.#prev[index] = this.#tail;
 74960              this.#tail = index;
 74961              this.#size++;
 74962              this.#addItemSize(index, size, status);
 74963              if (status)
 74964                  status.set = 'add';
 74965              noUpdateTTL = false;
 74966          }
 74967          else {
 74968              // update
 74969              this.#moveToTail(index);
 74970              const oldVal = this.#valList[index];
 74971              if (v !== oldVal) {
 74972                  if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {
 74973                      oldVal.__abortController.abort(new Error('replaced'));
 74974                      const { __staleWhileFetching: s } = oldVal;
 74975                      if (s !== undefined && !noDisposeOnSet) {
 74976                          if (this.#hasDispose) {
 74977                              this.#dispose?.(s, k, 'set');
 74978                          }
 74979                          if (this.#hasDisposeAfter) {
 74980                              this.#disposed?.push([s, k, 'set']);
 74981                          }
 74982                      }
 74983                  }
 74984                  else if (!noDisposeOnSet) {
 74985                      if (this.#hasDispose) {
 74986                          this.#dispose?.(oldVal, k, 'set');
 74987                      }
 74988                      if (this.#hasDisposeAfter) {
 74989                          this.#disposed?.push([oldVal, k, 'set']);
 74990                      }
 74991                  }
 74992                  this.#removeItemSize(index);
 74993                  this.#addItemSize(index, size, status);
 74994                  this.#valList[index] = v;
 74995                  if (status) {
 74996                      status.set = 'replace';
 74997                      const oldValue = oldVal && this.#isBackgroundFetch(oldVal)
 74998                          ? oldVal.__staleWhileFetching
 74999                          : oldVal;
 75000                      if (oldValue !== undefined)
 75001                          status.oldValue = oldValue;
 75002                  }
 75003              }
 75004              else if (status) {
 75005                  status.set = 'update';
 75006              }
 75007          }
 75008          if (ttl !== 0 && !this.#ttls) {
 75009              this.#initializeTTLTracking();
 75010          }
 75011          if (this.#ttls) {
 75012              if (!noUpdateTTL) {
 75013                  this.#setItemTTL(index, ttl, start);
 75014              }
 75015              if (status)
 75016                  this.#statusTTL(status, index);
 75017          }
 75018          if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {
 75019              const dt = this.#disposed;
 75020              let task;
 75021              while ((task = dt?.shift())) {
 75022                  this.#disposeAfter?.(...task);
 75023              }
 75024          }
 75025          return this;
 75026      }
 75027      /**
 75028       * Evict the least recently used item, returning its value or
 75029       * `undefined` if cache is empty.
 75030       */
 75031      pop() {
 75032          try {
 75033              while (this.#size) {
 75034                  const val = this.#valList[this.#head];
 75035                  this.#evict(true);
 75036                  if (this.#isBackgroundFetch(val)) {
 75037                      if (val.__staleWhileFetching) {
 75038                          return val.__staleWhileFetching;
 75039                      }
 75040                  }
 75041                  else if (val !== undefined) {
 75042                      return val;
 75043                  }
 75044              }
 75045          }
 75046          finally {
 75047              if (this.#hasDisposeAfter && this.#disposed) {
 75048                  const dt = this.#disposed;
 75049                  let task;
 75050                  while ((task = dt?.shift())) {
 75051                      this.#disposeAfter?.(...task);
 75052                  }
 75053              }
 75054          }
 75055      }
 75056      #evict(free) {
 75057          const head = this.#head;
 75058          const k = this.#keyList[head];
 75059          const v = this.#valList[head];
 75060          if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {
 75061              v.__abortController.abort(new Error('evicted'));
 75062          }
 75063          else if (this.#hasDispose || this.#hasDisposeAfter) {
 75064              if (this.#hasDispose) {
 75065                  this.#dispose?.(v, k, 'evict');
 75066              }
 75067              if (this.#hasDisposeAfter) {
 75068                  this.#disposed?.push([v, k, 'evict']);
 75069              }
 75070          }
 75071          this.#removeItemSize(head);
 75072          // if we aren't about to use the index, then null these out
 75073          if (free) {
 75074              this.#keyList[head] = undefined;
 75075              this.#valList[head] = undefined;
 75076              this.#free.push(head);
 75077          }
 75078          if (this.#size === 1) {
 75079              this.#head = this.#tail = 0;
 75080              this.#free.length = 0;
 75081          }
 75082          else {
 75083              this.#head = this.#next[head];
 75084          }
 75085          this.#keyMap.delete(k);
 75086          this.#size--;
 75087          return head;
 75088      }
 75089      /**
 75090       * Check if a key is in the cache, without updating the recency of use.
 75091       * Will return false if the item is stale, even though it is technically
 75092       * in the cache.
 75093       *
 75094       * Will not update item age unless
 75095       * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.
 75096       */
 75097      has(k, hasOptions = {}) {
 75098          const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;
 75099          const index = this.#keyMap.get(k);
 75100          if (index !== undefined) {
 75101              const v = this.#valList[index];
 75102              if (this.#isBackgroundFetch(v) &&
 75103                  v.__staleWhileFetching === undefined) {
 75104                  return false;
 75105              }
 75106              if (!this.#isStale(index)) {
 75107                  if (updateAgeOnHas) {
 75108                      this.#updateItemAge(index);
 75109                  }
 75110                  if (status) {
 75111                      status.has = 'hit';
 75112                      this.#statusTTL(status, index);
 75113                  }
 75114                  return true;
 75115              }
 75116              else if (status) {
 75117                  status.has = 'stale';
 75118                  this.#statusTTL(status, index);
 75119              }
 75120          }
 75121          else if (status) {
 75122              status.has = 'miss';
 75123          }
 75124          return false;
 75125      }
 75126      /**
 75127       * Like {@link LRUCache#get} but doesn't update recency or delete stale
 75128       * items.
 75129       *
 75130       * Returns `undefined` if the item is stale, unless
 75131       * {@link LRUCache.OptionsBase.allowStale} is set.
 75132       */
 75133      peek(k, peekOptions = {}) {
 75134          const { allowStale = this.allowStale } = peekOptions;
 75135          const index = this.#keyMap.get(k);
 75136          if (index === undefined ||
 75137              (!allowStale && this.#isStale(index))) {
 75138              return;
 75139          }
 75140          const v = this.#valList[index];
 75141          // either stale and allowed, or forcing a refresh of non-stale value
 75142          return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;
 75143      }
 75144      #backgroundFetch(k, index, options, context) {
 75145          const v = index === undefined ? undefined : this.#valList[index];
 75146          if (this.#isBackgroundFetch(v)) {
 75147              return v;
 75148          }
 75149          const ac = new AC();
 75150          const { signal } = options;
 75151          // when/if our AC signals, then stop listening to theirs.
 75152          signal?.addEventListener('abort', () => ac.abort(signal.reason), {
 75153              signal: ac.signal,
 75154          });
 75155          const fetchOpts = {
 75156              signal: ac.signal,
 75157              options,
 75158              context,
 75159          };
 75160          const cb = (v, updateCache = false) => {
 75161              const { aborted } = ac.signal;
 75162              const ignoreAbort = options.ignoreFetchAbort && v !== undefined;
 75163              if (options.status) {
 75164                  if (aborted && !updateCache) {
 75165                      options.status.fetchAborted = true;
 75166                      options.status.fetchError = ac.signal.reason;
 75167                      if (ignoreAbort)
 75168                          options.status.fetchAbortIgnored = true;
 75169                  }
 75170                  else {
 75171                      options.status.fetchResolved = true;
 75172                  }
 75173              }
 75174              if (aborted && !ignoreAbort && !updateCache) {
 75175                  return fetchFail(ac.signal.reason);
 75176              }
 75177              // either we didn't abort, and are still here, or we did, and ignored
 75178              const bf = p;
 75179              if (this.#valList[index] === p) {
 75180                  if (v === undefined) {
 75181                      if (bf.__staleWhileFetching) {
 75182                          this.#valList[index] = bf.__staleWhileFetching;
 75183                      }
 75184                      else {
 75185                          this.delete(k);
 75186                      }
 75187                  }
 75188                  else {
 75189                      if (options.status)
 75190                          options.status.fetchUpdated = true;
 75191                      this.set(k, v, fetchOpts.options);
 75192                  }
 75193              }
 75194              return v;
 75195          };
 75196          const eb = (er) => {
 75197              if (options.status) {
 75198                  options.status.fetchRejected = true;
 75199                  options.status.fetchError = er;
 75200              }
 75201              return fetchFail(er);
 75202          };
 75203          const fetchFail = (er) => {
 75204              const { aborted } = ac.signal;
 75205              const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;
 75206              const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;
 75207              const noDelete = allowStale || options.noDeleteOnFetchRejection;
 75208              const bf = p;
 75209              if (this.#valList[index] === p) {
 75210                  // if we allow stale on fetch rejections, then we need to ensure that
 75211                  // the stale value is not removed from the cache when the fetch fails.
 75212                  const del = !noDelete || bf.__staleWhileFetching === undefined;
 75213                  if (del) {
 75214                      this.delete(k);
 75215                  }
 75216                  else if (!allowStaleAborted) {
 75217                      // still replace the *promise* with the stale value,
 75218                      // since we are done with the promise at this point.
 75219                      // leave it untouched if we're still waiting for an
 75220                      // aborted background fetch that hasn't yet returned.
 75221                      this.#valList[index] = bf.__staleWhileFetching;
 75222                  }
 75223              }
 75224              if (allowStale) {
 75225                  if (options.status && bf.__staleWhileFetching !== undefined) {
 75226                      options.status.returnedStale = true;
 75227                  }
 75228                  return bf.__staleWhileFetching;
 75229              }
 75230              else if (bf.__returned === bf) {
 75231                  throw er;
 75232              }
 75233          };
 75234          const pcall = (res, rej) => {
 75235              const fmp = this.#fetchMethod?.(k, v, fetchOpts);
 75236              if (fmp && fmp instanceof Promise) {
 75237                  fmp.then(v => res(v === undefined ? undefined : v), rej);
 75238              }
 75239              // ignored, we go until we finish, regardless.
 75240              // defer check until we are actually aborting,
 75241              // so fetchMethod can override.
 75242              ac.signal.addEventListener('abort', () => {
 75243                  if (!options.ignoreFetchAbort ||
 75244                      options.allowStaleOnFetchAbort) {
 75245                      res(undefined);
 75246                      // when it eventually resolves, update the cache.
 75247                      if (options.allowStaleOnFetchAbort) {
 75248                          res = v => cb(v, true);
 75249                      }
 75250                  }
 75251              });
 75252          };
 75253          if (options.status)
 75254              options.status.fetchDispatched = true;
 75255          const p = new Promise(pcall).then(cb, eb);
 75256          const bf = Object.assign(p, {
 75257              __abortController: ac,
 75258              __staleWhileFetching: v,
 75259              __returned: undefined,
 75260          });
 75261          if (index === undefined) {
 75262              // internal, don't expose status.
 75263              this.set(k, bf, { ...fetchOpts.options, status: undefined });
 75264              index = this.#keyMap.get(k);
 75265          }
 75266          else {
 75267              this.#valList[index] = bf;
 75268          }
 75269          return bf;
 75270      }
 75271      #isBackgroundFetch(p) {
 75272          if (!this.#hasFetchMethod)
 75273              return false;
 75274          const b = p;
 75275          return (!!b &&
 75276              b instanceof Promise &&
 75277              b.hasOwnProperty('__staleWhileFetching') &&
 75278              b.__abortController instanceof AC);
 75279      }
 75280      async fetch(k, fetchOptions = {}) {
 75281          const { 
 75282          // get options
 75283          allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, 
 75284          // set options
 75285          ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, 
 75286          // fetch exclusive options
 75287          noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;
 75288          if (!this.#hasFetchMethod) {
 75289              if (status)
 75290                  status.fetch = 'get';
 75291              return this.get(k, {
 75292                  allowStale,
 75293                  updateAgeOnGet,
 75294                  noDeleteOnStaleGet,
 75295                  status,
 75296              });
 75297          }
 75298          const options = {
 75299              allowStale,
 75300              updateAgeOnGet,
 75301              noDeleteOnStaleGet,
 75302              ttl,
 75303              noDisposeOnSet,
 75304              size,
 75305              sizeCalculation,
 75306              noUpdateTTL,
 75307              noDeleteOnFetchRejection,
 75308              allowStaleOnFetchRejection,
 75309              allowStaleOnFetchAbort,
 75310              ignoreFetchAbort,
 75311              status,
 75312              signal,
 75313          };
 75314          let index = this.#keyMap.get(k);
 75315          if (index === undefined) {
 75316              if (status)
 75317                  status.fetch = 'miss';
 75318              const p = this.#backgroundFetch(k, index, options, context);
 75319              return (p.__returned = p);
 75320          }
 75321          else {
 75322              // in cache, maybe already fetching
 75323              const v = this.#valList[index];
 75324              if (this.#isBackgroundFetch(v)) {
 75325                  const stale = allowStale && v.__staleWhileFetching !== undefined;
 75326                  if (status) {
 75327                      status.fetch = 'inflight';
 75328                      if (stale)
 75329                          status.returnedStale = true;
 75330                  }
 75331                  return stale ? v.__staleWhileFetching : (v.__returned = v);
 75332              }
 75333              // if we force a refresh, that means do NOT serve the cached value,
 75334              // unless we are already in the process of refreshing the cache.
 75335              const isStale = this.#isStale(index);
 75336              if (!forceRefresh && !isStale) {
 75337                  if (status)
 75338                      status.fetch = 'hit';
 75339                  this.#moveToTail(index);
 75340                  if (updateAgeOnGet) {
 75341                      this.#updateItemAge(index);
 75342                  }
 75343                  if (status)
 75344                      this.#statusTTL(status, index);
 75345                  return v;
 75346              }
 75347              // ok, it is stale or a forced refresh, and not already fetching.
 75348              // refresh the cache.
 75349              const p = this.#backgroundFetch(k, index, options, context);
 75350              const hasStale = p.__staleWhileFetching !== undefined;
 75351              const staleVal = hasStale && allowStale;
 75352              if (status) {
 75353                  status.fetch = isStale ? 'stale' : 'refresh';
 75354                  if (staleVal && isStale)
 75355                      status.returnedStale = true;
 75356              }
 75357              return staleVal ? p.__staleWhileFetching : (p.__returned = p);
 75358          }
 75359      }
 75360      /**
 75361       * Return a value from the cache. Will update the recency of the cache
 75362       * entry found.
 75363       *
 75364       * If the key is not found, get() will return `undefined`.
 75365       */
 75366      get(k, getOptions = {}) {
 75367          const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;
 75368          const index = this.#keyMap.get(k);
 75369          if (index !== undefined) {
 75370              const value = this.#valList[index];
 75371              const fetching = this.#isBackgroundFetch(value);
 75372              if (status)
 75373                  this.#statusTTL(status, index);
 75374              if (this.#isStale(index)) {
 75375                  if (status)
 75376                      status.get = 'stale';
 75377                  // delete only if not an in-flight background fetch
 75378                  if (!fetching) {
 75379                      if (!noDeleteOnStaleGet) {
 75380                          this.delete(k);
 75381                      }
 75382                      if (status && allowStale)
 75383                          status.returnedStale = true;
 75384                      return allowStale ? value : undefined;
 75385                  }
 75386                  else {
 75387                      if (status &&
 75388                          allowStale &&
 75389                          value.__staleWhileFetching !== undefined) {
 75390                          status.returnedStale = true;
 75391                      }
 75392                      return allowStale ? value.__staleWhileFetching : undefined;
 75393                  }
 75394              }
 75395              else {
 75396                  if (status)
 75397                      status.get = 'hit';
 75398                  // if we're currently fetching it, we don't actually have it yet
 75399                  // it's not stale, which means this isn't a staleWhileRefetching.
 75400                  // If it's not stale, and fetching, AND has a __staleWhileFetching
 75401                  // value, then that means the user fetched with {forceRefresh:true},
 75402                  // so it's safe to return that value.
 75403                  if (fetching) {
 75404                      return value.__staleWhileFetching;
 75405                  }
 75406                  this.#moveToTail(index);
 75407                  if (updateAgeOnGet) {
 75408                      this.#updateItemAge(index);
 75409                  }
 75410                  return value;
 75411              }
 75412          }
 75413          else if (status) {
 75414              status.get = 'miss';
 75415          }
 75416      }
 75417      #connect(p, n) {
 75418          this.#prev[n] = p;
 75419          this.#next[p] = n;
 75420      }
 75421      #moveToTail(index) {
 75422          // if tail already, nothing to do
 75423          // if head, move head to next[index]
 75424          // else
 75425          //   move next[prev[index]] to next[index] (head has no prev)
 75426          //   move prev[next[index]] to prev[index]
 75427          // prev[index] = tail
 75428          // next[tail] = index
 75429          // tail = index
 75430          if (index !== this.#tail) {
 75431              if (index === this.#head) {
 75432                  this.#head = this.#next[index];
 75433              }
 75434              else {
 75435                  this.#connect(this.#prev[index], this.#next[index]);
 75436              }
 75437              this.#connect(this.#tail, index);
 75438              this.#tail = index;
 75439          }
 75440      }
 75441      /**
 75442       * Deletes a key out of the cache.
 75443       * Returns true if the key was deleted, false otherwise.
 75444       */
 75445      delete(k) {
 75446          let deleted = false;
 75447          if (this.#size !== 0) {
 75448              const index = this.#keyMap.get(k);
 75449              if (index !== undefined) {
 75450                  deleted = true;
 75451                  if (this.#size === 1) {
 75452                      this.clear();
 75453                  }
 75454                  else {
 75455                      this.#removeItemSize(index);
 75456                      const v = this.#valList[index];
 75457                      if (this.#isBackgroundFetch(v)) {
 75458                          v.__abortController.abort(new Error('deleted'));
 75459                      }
 75460                      else if (this.#hasDispose || this.#hasDisposeAfter) {
 75461                          if (this.#hasDispose) {
 75462                              this.#dispose?.(v, k, 'delete');
 75463                          }
 75464                          if (this.#hasDisposeAfter) {
 75465                              this.#disposed?.push([v, k, 'delete']);
 75466                          }
 75467                      }
 75468                      this.#keyMap.delete(k);
 75469                      this.#keyList[index] = undefined;
 75470                      this.#valList[index] = undefined;
 75471                      if (index === this.#tail) {
 75472                          this.#tail = this.#prev[index];
 75473                      }
 75474                      else if (index === this.#head) {
 75475                          this.#head = this.#next[index];
 75476                      }
 75477                      else {
 75478                          const pi = this.#prev[index];
 75479                          this.#next[pi] = this.#next[index];
 75480                          const ni = this.#next[index];
 75481                          this.#prev[ni] = this.#prev[index];
 75482                      }
 75483                      this.#size--;
 75484                      this.#free.push(index);
 75485                  }
 75486              }
 75487          }
 75488          if (this.#hasDisposeAfter && this.#disposed?.length) {
 75489              const dt = this.#disposed;
 75490              let task;
 75491              while ((task = dt?.shift())) {
 75492                  this.#disposeAfter?.(...task);
 75493              }
 75494          }
 75495          return deleted;
 75496      }
 75497      /**
 75498       * Clear the cache entirely, throwing away all values.
 75499       */
 75500      clear() {
 75501          for (const index of this.#rindexes({ allowStale: true })) {
 75502              const v = this.#valList[index];
 75503              if (this.#isBackgroundFetch(v)) {
 75504                  v.__abortController.abort(new Error('deleted'));
 75505              }
 75506              else {
 75507                  const k = this.#keyList[index];
 75508                  if (this.#hasDispose) {
 75509                      this.#dispose?.(v, k, 'delete');
 75510                  }
 75511                  if (this.#hasDisposeAfter) {
 75512                      this.#disposed?.push([v, k, 'delete']);
 75513                  }
 75514              }
 75515          }
 75516          this.#keyMap.clear();
 75517          this.#valList.fill(undefined);
 75518          this.#keyList.fill(undefined);
 75519          if (this.#ttls && this.#starts) {
 75520              this.#ttls.fill(0);
 75521              this.#starts.fill(0);
 75522          }
 75523          if (this.#sizes) {
 75524              this.#sizes.fill(0);
 75525          }
 75526          this.#head = 0;
 75527          this.#tail = 0;
 75528          this.#free.length = 0;
 75529          this.#calculatedSize = 0;
 75530          this.#size = 0;
 75531          if (this.#hasDisposeAfter && this.#disposed) {
 75532              const dt = this.#disposed;
 75533              let task;
 75534              while ((task = dt?.shift())) {
 75535                  this.#disposeAfter?.(...task);
 75536              }
 75537          }
 75538      }
 75539  }
 75540  exports.LRUCache = LRUCache;
 75541  //# sourceMappingURL=index.js.map
 75542  
 75543  /***/ }),
 75544  
 75545  /***/ 43691:
 75546  /***/ ((__unused_webpack_module, exports) => {
 75547  
 75548  "use strict";
 75549  
 75550  Object.defineProperty(exports, "__esModule", ({ value: true }));
 75551  exports.assertValidPattern = void 0;
 75552  const MAX_PATTERN_LENGTH = 1024 * 64;
 75553  const assertValidPattern = (pattern) => {
 75554      if (typeof pattern !== 'string') {
 75555          throw new TypeError('invalid pattern');
 75556      }
 75557      if (pattern.length > MAX_PATTERN_LENGTH) {
 75558          throw new TypeError('pattern is too long');
 75559      }
 75560  };
 75561  exports.assertValidPattern = assertValidPattern;
 75562  //# sourceMappingURL=assert-valid-pattern.js.map
 75563  
 75564  /***/ }),
 75565  
 75566  /***/ 99262:
 75567  /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => {
 75568  
 75569  "use strict";
 75570  
 75571  // parse a single path portion
 75572  Object.defineProperty(exports, "__esModule", ({ value: true }));
 75573  exports.AST = void 0;
 75574  const brace_expressions_js_1 = __nccwpck_require__(33542);
 75575  const unescape_js_1 = __nccwpck_require__(13704);
 75576  const types = new Set(['!', '?', '+', '*', '@']);
 75577  const isExtglobType = (c) => types.has(c);
 75578  // Patterns that get prepended to bind to the start of either the
 75579  // entire string, or just a single path portion, to prevent dots
 75580  // and/or traversal patterns, when needed.
 75581  // Exts don't need the ^ or / bit, because the root binds that already.
 75582  const startNoTraversal = '(?!(?:^|/)\\.\\.?(?:$|/))';
 75583  const startNoDot = '(?!\\.)';
 75584  // characters that indicate a start of pattern needs the "no dots" bit,
 75585  // because a dot *might* be matched. ( is not in the list, because in
 75586  // the case of a child extglob, it will handle the prevention itself.
 75587  const addPatternStart = new Set(['[', '.']);
 75588  // cases where traversal is A-OK, no dot prevention needed
 75589  const justDots = new Set(['..', '.']);
 75590  const reSpecials = new Set('().*{}+?[]^$\\!');
 75591  const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
 75592  // any single thing other than /
 75593  const qmark = '[^/]';
 75594  // * => any number of characters
 75595  const star = qmark + '*?';
 75596  // use + when we need to ensure that *something* matches, because the * is
 75597  // the only thing in the path portion.
 75598  const starNoEmpty = qmark + '+?';
 75599  // remove the \ chars that we added if we end up doing a nonmagic compare
 75600  // const deslash = (s: string) => s.replace(/\\(.)/g, '$1')
 75601  class AST {
 75602      type;
 75603      #root;
 75604      #hasMagic;
 75605      #uflag = false;
 75606      #parts = [];
 75607      #parent;
 75608      #parentIndex;
 75609      #negs;
 75610      #filledNegs = false;
 75611      #options;
 75612      #toString;
 75613      // set to true if it's an extglob with no children
 75614      // (which really means one child of '')
 75615      #emptyExt = false;
 75616      constructor(type, parent, options = {}) {
 75617          this.type = type;
 75618          // extglobs are inherently magical
 75619          if (type)
 75620              this.#hasMagic = true;
 75621          this.#parent = parent;
 75622          this.#root = this.#parent ? this.#parent.#root : this;
 75623          this.#options = this.#root === this ? options : this.#root.#options;
 75624          this.#negs = this.#root === this ? [] : this.#root.#negs;
 75625          if (type === '!' && !this.#root.#filledNegs)
 75626              this.#negs.push(this);
 75627          this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;
 75628      }
 75629      get hasMagic() {
 75630          /* c8 ignore start */
 75631          if (this.#hasMagic !== undefined)
 75632              return this.#hasMagic;
 75633          /* c8 ignore stop */
 75634          for (const p of this.#parts) {
 75635              if (typeof p === 'string')
 75636                  continue;
 75637              if (p.type || p.hasMagic)
 75638                  return (this.#hasMagic = true);
 75639          }
 75640          // note: will be undefined until we generate the regexp src and find out
 75641          return this.#hasMagic;
 75642      }
 75643      // reconstructs the pattern
 75644      toString() {
 75645          if (this.#toString !== undefined)
 75646              return this.#toString;
 75647          if (!this.type) {
 75648              return (this.#toString = this.#parts.map(p => String(p)).join(''));
 75649          }
 75650          else {
 75651              return (this.#toString =
 75652                  this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');
 75653          }
 75654      }
 75655      #fillNegs() {
 75656          /* c8 ignore start */
 75657          if (this !== this.#root)
 75658              throw new Error('should only call on root');
 75659          if (this.#filledNegs)
 75660              return this;
 75661          /* c8 ignore stop */
 75662          // call toString() once to fill this out
 75663          this.toString();
 75664          this.#filledNegs = true;
 75665          let n;
 75666          while ((n = this.#negs.pop())) {
 75667              if (n.type !== '!')
 75668                  continue;
 75669              // walk up the tree, appending everthing that comes AFTER parentIndex
 75670              let p = n;
 75671              let pp = p.#parent;
 75672              while (pp) {
 75673                  for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {
 75674                      for (const part of n.#parts) {
 75675                          /* c8 ignore start */
 75676                          if (typeof part === 'string') {
 75677                              throw new Error('string part in extglob AST??');
 75678                          }
 75679                          /* c8 ignore stop */
 75680                          part.copyIn(pp.#parts[i]);
 75681                      }
 75682                  }
 75683                  p = pp;
 75684                  pp = p.#parent;
 75685              }
 75686          }
 75687          return this;
 75688      }
 75689      push(...parts) {
 75690          for (const p of parts) {
 75691              if (p === '')
 75692                  continue;
 75693              /* c8 ignore start */
 75694              if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {
 75695                  throw new Error('invalid part: ' + p);
 75696              }
 75697              /* c8 ignore stop */
 75698              this.#parts.push(p);
 75699          }
 75700      }
 75701      toJSON() {
 75702          const ret = this.type === null
 75703              ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))
 75704              : [this.type, ...this.#parts.map(p => p.toJSON())];
 75705          if (this.isStart() && !this.type)
 75706              ret.unshift([]);
 75707          if (this.isEnd() &&
 75708              (this === this.#root ||
 75709                  (this.#root.#filledNegs && this.#parent?.type === '!'))) {
 75710              ret.push({});
 75711          }
 75712          return ret;
 75713      }
 75714      isStart() {
 75715          if (this.#root === this)
 75716              return true;
 75717          // if (this.type) return !!this.#parent?.isStart()
 75718          if (!this.#parent?.isStart())
 75719              return false;
 75720          if (this.#parentIndex === 0)
 75721              return true;
 75722          // if everything AHEAD of this is a negation, then it's still the "start"
 75723          const p = this.#parent;
 75724          for (let i = 0; i < this.#parentIndex; i++) {
 75725              const pp = p.#parts[i];
 75726              if (!(pp instanceof AST && pp.type === '!')) {
 75727                  return false;
 75728              }
 75729          }
 75730          return true;
 75731      }
 75732      isEnd() {
 75733          if (this.#root === this)
 75734              return true;
 75735          if (this.#parent?.type === '!')
 75736              return true;
 75737          if (!this.#parent?.isEnd())
 75738              return false;
 75739          if (!this.type)
 75740              return this.#parent?.isEnd();
 75741          // if not root, it'll always have a parent
 75742          /* c8 ignore start */
 75743          const pl = this.#parent ? this.#parent.#parts.length : 0;
 75744          /* c8 ignore stop */
 75745          return this.#parentIndex === pl - 1;
 75746      }
 75747      copyIn(part) {
 75748          if (typeof part === 'string')
 75749              this.push(part);
 75750          else
 75751              this.push(part.clone(this));
 75752      }
 75753      clone(parent) {
 75754          const c = new AST(this.type, parent);
 75755          for (const p of this.#parts) {
 75756              c.copyIn(p);
 75757          }
 75758          return c;
 75759      }
 75760      static #parseAST(str, ast, pos, opt) {
 75761          let escaping = false;
 75762          let inBrace = false;
 75763          let braceStart = -1;
 75764          let braceNeg = false;
 75765          if (ast.type === null) {
 75766              // outside of a extglob, append until we find a start
 75767              let i = pos;
 75768              let acc = '';
 75769              while (i < str.length) {
 75770                  const c = str.charAt(i++);
 75771                  // still accumulate escapes at this point, but we do ignore
 75772                  // starts that are escaped
 75773                  if (escaping || c === '\\') {
 75774                      escaping = !escaping;
 75775                      acc += c;
 75776                      continue;
 75777                  }
 75778                  if (inBrace) {
 75779                      if (i === braceStart + 1) {
 75780                          if (c === '^' || c === '!') {
 75781                              braceNeg = true;
 75782                          }
 75783                      }
 75784                      else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {
 75785                          inBrace = false;
 75786                      }
 75787                      acc += c;
 75788                      continue;
 75789                  }
 75790                  else if (c === '[') {
 75791                      inBrace = true;
 75792                      braceStart = i;
 75793                      braceNeg = false;
 75794                      acc += c;
 75795                      continue;
 75796                  }
 75797                  if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {
 75798                      ast.push(acc);
 75799                      acc = '';
 75800                      const ext = new AST(c, ast);
 75801                      i = AST.#parseAST(str, ext, i, opt);
 75802                      ast.push(ext);
 75803                      continue;
 75804                  }
 75805                  acc += c;
 75806              }
 75807              ast.push(acc);
 75808              return i;
 75809          }
 75810          // some kind of extglob, pos is at the (
 75811          // find the next | or )
 75812          let i = pos + 1;
 75813          let part = new AST(null, ast);
 75814          const parts = [];
 75815          let acc = '';
 75816          while (i < str.length) {
 75817              const c = str.charAt(i++);
 75818              // still accumulate escapes at this point, but we do ignore
 75819              // starts that are escaped
 75820              if (escaping || c === '\\') {
 75821                  escaping = !escaping;
 75822                  acc += c;
 75823                  continue;
 75824              }
 75825              if (inBrace) {
 75826                  if (i === braceStart + 1) {
 75827                      if (c === '^' || c === '!') {
 75828                          braceNeg = true;
 75829                      }
 75830                  }
 75831                  else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {
 75832                      inBrace = false;
 75833                  }
 75834                  acc += c;
 75835                  continue;
 75836              }
 75837              else if (c === '[') {
 75838                  inBrace = true;
 75839                  braceStart = i;
 75840                  braceNeg = false;
 75841                  acc += c;
 75842                  continue;
 75843              }
 75844              if (isExtglobType(c) && str.charAt(i) === '(') {
 75845                  part.push(acc);
 75846                  acc = '';
 75847                  const ext = new AST(c, part);
 75848                  part.push(ext);
 75849                  i = AST.#parseAST(str, ext, i, opt);
 75850                  continue;
 75851              }
 75852              if (c === '|') {
 75853                  part.push(acc);
 75854                  acc = '';
 75855                  parts.push(part);
 75856                  part = new AST(null, ast);
 75857                  continue;
 75858              }
 75859              if (c === ')') {
 75860                  if (acc === '' && ast.#parts.length === 0) {
 75861                      ast.#emptyExt = true;
 75862                  }
 75863                  part.push(acc);
 75864                  acc = '';
 75865                  ast.push(...parts, part);
 75866                  return i;
 75867              }
 75868              acc += c;
 75869          }
 75870          // unfinished extglob
 75871          // if we got here, it was a malformed extglob! not an extglob, but
 75872          // maybe something else in there.
 75873          ast.type = null;
 75874          ast.#hasMagic = undefined;
 75875          ast.#parts = [str.substring(pos - 1)];
 75876          return i;
 75877      }
 75878      static fromGlob(pattern, options = {}) {
 75879          const ast = new AST(null, undefined, options);
 75880          AST.#parseAST(pattern, ast, 0, options);
 75881          return ast;
 75882      }
 75883      // returns the regular expression if there's magic, or the unescaped
 75884      // string if not.
 75885      toMMPattern() {
 75886          // should only be called on root
 75887          /* c8 ignore start */
 75888          if (this !== this.#root)
 75889              return this.#root.toMMPattern();
 75890          /* c8 ignore stop */
 75891          const glob = this.toString();
 75892          const [re, body, hasMagic, uflag] = this.toRegExpSource();
 75893          // if we're in nocase mode, and not nocaseMagicOnly, then we do
 75894          // still need a regular expression if we have to case-insensitively
 75895          // match capital/lowercase characters.
 75896          const anyMagic = hasMagic ||
 75897              this.#hasMagic ||
 75898              (this.#options.nocase &&
 75899                  !this.#options.nocaseMagicOnly &&
 75900                  glob.toUpperCase() !== glob.toLowerCase());
 75901          if (!anyMagic) {
 75902              return body;
 75903          }
 75904          const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');
 75905          return Object.assign(new RegExp(`^${re}$`, flags), {
 75906              _src: re,
 75907              _glob: glob,
 75908          });
 75909      }
 75910      // returns the string match, the regexp source, whether there's magic
 75911      // in the regexp (so a regular expression is required) and whether or
 75912      // not the uflag is needed for the regular expression (for posix classes)
 75913      // TODO: instead of injecting the start/end at this point, just return
 75914      // the BODY of the regexp, along with the start/end portions suitable
 75915      // for binding the start/end in either a joined full-path makeRe context
 75916      // (where we bind to (^|/), or a standalone matchPart context (where
 75917      // we bind to ^, and not /).  Otherwise slashes get duped!
 75918      //
 75919      // In part-matching mode, the start is:
 75920      // - if not isStart: nothing
 75921      // - if traversal possible, but not allowed: ^(?!\.\.?$)
 75922      // - if dots allowed or not possible: ^
 75923      // - if dots possible and not allowed: ^(?!\.)
 75924      // end is:
 75925      // - if not isEnd(): nothing
 75926      // - else: $
 75927      //
 75928      // In full-path matching mode, we put the slash at the START of the
 75929      // pattern, so start is:
 75930      // - if first pattern: same as part-matching mode
 75931      // - if not isStart(): nothing
 75932      // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/))
 75933      // - if dots allowed or not possible: /
 75934      // - if dots possible and not allowed: /(?!\.)
 75935      // end is:
 75936      // - if last pattern, same as part-matching mode
 75937      // - else nothing
 75938      //
 75939      // Always put the (?:$|/) on negated tails, though, because that has to be
 75940      // there to bind the end of the negated pattern portion, and it's easier to
 75941      // just stick it in now rather than try to inject it later in the middle of
 75942      // the pattern.
 75943      //
 75944      // We can just always return the same end, and leave it up to the caller
 75945      // to know whether it's going to be used joined or in parts.
 75946      // And, if the start is adjusted slightly, can do the same there:
 75947      // - if not isStart: nothing
 75948      // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$)
 75949      // - if dots allowed or not possible: (?:/|^)
 75950      // - if dots possible and not allowed: (?:/|^)(?!\.)
 75951      //
 75952      // But it's better to have a simpler binding without a conditional, for
 75953      // performance, so probably better to return both start options.
 75954      //
 75955      // Then the caller just ignores the end if it's not the first pattern,
 75956      // and the start always gets applied.
 75957      //
 75958      // But that's always going to be $ if it's the ending pattern, or nothing,
 75959      // so the caller can just attach $ at the end of the pattern when building.
 75960      //
 75961      // So the todo is:
 75962      // - better detect what kind of start is needed
 75963      // - return both flavors of starting pattern
 75964      // - attach $ at the end of the pattern when creating the actual RegExp
 75965      //
 75966      // Ah, but wait, no, that all only applies to the root when the first pattern
 75967      // is not an extglob. If the first pattern IS an extglob, then we need all
 75968      // that dot prevention biz to live in the extglob portions, because eg
 75969      // +(*|.x*) can match .xy but not .yx.
 75970      //
 75971      // So, return the two flavors if it's #root and the first child is not an
 75972      // AST, otherwise leave it to the child AST to handle it, and there,
 75973      // use the (?:^|/) style of start binding.
 75974      //
 75975      // Even simplified further:
 75976      // - Since the start for a join is eg /(?!\.) and the start for a part
 75977      // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root
 75978      // or start or whatever) and prepend ^ or / at the Regexp construction.
 75979      toRegExpSource(allowDot) {
 75980          const dot = allowDot ?? !!this.#options.dot;
 75981          if (this.#root === this)
 75982              this.#fillNegs();
 75983          if (!this.type) {
 75984              const noEmpty = this.isStart() && this.isEnd();
 75985              const src = this.#parts
 75986                  .map(p => {
 75987                  const [re, _, hasMagic, uflag] = typeof p === 'string'
 75988                      ? AST.#parseGlob(p, this.#hasMagic, noEmpty)
 75989                      : p.toRegExpSource(allowDot);
 75990                  this.#hasMagic = this.#hasMagic || hasMagic;
 75991                  this.#uflag = this.#uflag || uflag;
 75992                  return re;
 75993              })
 75994                  .join('');
 75995              let start = '';
 75996              if (this.isStart()) {
 75997                  if (typeof this.#parts[0] === 'string') {
 75998                      // this is the string that will match the start of the pattern,
 75999                      // so we need to protect against dots and such.
 76000                      // '.' and '..' cannot match unless the pattern is that exactly,
 76001                      // even if it starts with . or dot:true is set.
 76002                      const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);
 76003                      if (!dotTravAllowed) {
 76004                          const aps = addPatternStart;
 76005                          // check if we have a possibility of matching . or ..,
 76006                          // and prevent that.
 76007                          const needNoTrav = 
 76008                          // dots are allowed, and the pattern starts with [ or .
 76009                          (dot && aps.has(src.charAt(0))) ||
 76010                              // the pattern starts with \., and then [ or .
 76011                              (src.startsWith('\\.') && aps.has(src.charAt(2))) ||
 76012                              // the pattern starts with \.\., and then [ or .
 76013                              (src.startsWith('\\.\\.') && aps.has(src.charAt(4)));
 76014                          // no need to prevent dots if it can't match a dot, or if a
 76015                          // sub-pattern will be preventing it anyway.
 76016                          const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));
 76017                          start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';
 76018                      }
 76019                  }
 76020              }
 76021              // append the "end of path portion" pattern to negation tails
 76022              let end = '';
 76023              if (this.isEnd() &&
 76024                  this.#root.#filledNegs &&
 76025                  this.#parent?.type === '!') {
 76026                  end = '(?:$|\\/)';
 76027              }
 76028              const final = start + src + end;
 76029              return [
 76030                  final,
 76031                  (0, unescape_js_1.unescape)(src),
 76032                  (this.#hasMagic = !!this.#hasMagic),
 76033                  this.#uflag,
 76034              ];
 76035          }
 76036          // We need to calculate the body *twice* if it's a repeat pattern
 76037          // at the start, once in nodot mode, then again in dot mode, so a
 76038          // pattern like *(?) can match 'x.y'
 76039          const repeated = this.type === '*' || this.type === '+';
 76040          // some kind of extglob
 76041          const start = this.type === '!' ? '(?:(?!(?:' : '(?:';
 76042          let body = this.#partsToRegExp(dot);
 76043          if (this.isStart() && this.isEnd() && !body && this.type !== '!') {
 76044              // invalid extglob, has to at least be *something* present, if it's
 76045              // the entire path portion.
 76046              const s = this.toString();
 76047              this.#parts = [s];
 76048              this.type = null;
 76049              this.#hasMagic = undefined;
 76050              return [s, (0, unescape_js_1.unescape)(this.toString()), false, false];
 76051          }
 76052          // XXX abstract out this map method
 76053          let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot
 76054              ? ''
 76055              : this.#partsToRegExp(true);
 76056          if (bodyDotAllowed === body) {
 76057              bodyDotAllowed = '';
 76058          }
 76059          if (bodyDotAllowed) {
 76060              body = `(?:${body})(?:${bodyDotAllowed})*?`;
 76061          }
 76062          // an empty !() is exactly equivalent to a starNoEmpty
 76063          let final = '';
 76064          if (this.type === '!' && this.#emptyExt) {
 76065              final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;
 76066          }
 76067          else {
 76068              const close = this.type === '!'
 76069                  ? // !() must match something,but !(x) can match ''
 76070                      '))' +
 76071                          (this.isStart() && !dot && !allowDot ? startNoDot : '') +
 76072                          star +
 76073                          ')'
 76074                  : this.type === '@'
 76075                      ? ')'
 76076                      : this.type === '?'
 76077                          ? ')?'
 76078                          : this.type === '+' && bodyDotAllowed
 76079                              ? ')'
 76080                              : this.type === '*' && bodyDotAllowed
 76081                                  ? `)?`
 76082                                  : `)${this.type}`;
 76083              final = start + body + close;
 76084          }
 76085          return [
 76086              final,
 76087              (0, unescape_js_1.unescape)(body),
 76088              (this.#hasMagic = !!this.#hasMagic),
 76089              this.#uflag,
 76090          ];
 76091      }
 76092      #partsToRegExp(dot) {
 76093          return this.#parts
 76094              .map(p => {
 76095              // extglob ASTs should only contain parent ASTs
 76096              /* c8 ignore start */
 76097              if (typeof p === 'string') {
 76098                  throw new Error('string type in extglob ast??');
 76099              }
 76100              /* c8 ignore stop */
 76101              // can ignore hasMagic, because extglobs are already always magic
 76102              const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);
 76103              this.#uflag = this.#uflag || uflag;
 76104              return re;
 76105          })
 76106              .filter(p => !(this.isStart() && this.isEnd()) || !!p)
 76107              .join('|');
 76108      }
 76109      static #parseGlob(glob, hasMagic, noEmpty = false) {
 76110          let escaping = false;
 76111          let re = '';
 76112          let uflag = false;
 76113          for (let i = 0; i < glob.length; i++) {
 76114              const c = glob.charAt(i);
 76115              if (escaping) {
 76116                  escaping = false;
 76117                  re += (reSpecials.has(c) ? '\\' : '') + c;
 76118                  continue;
 76119              }
 76120              if (c === '\\') {
 76121                  if (i === glob.length - 1) {
 76122                      re += '\\\\';
 76123                  }
 76124                  else {
 76125                      escaping = true;
 76126                  }
 76127                  continue;
 76128              }
 76129              if (c === '[') {
 76130                  const [src, needUflag, consumed, magic] = (0, brace_expressions_js_1.parseClass)(glob, i);
 76131                  if (consumed) {
 76132                      re += src;
 76133                      uflag = uflag || needUflag;
 76134                      i += consumed - 1;
 76135                      hasMagic = hasMagic || magic;
 76136                      continue;
 76137                  }
 76138              }
 76139              if (c === '*') {
 76140                  if (noEmpty && glob === '*')
 76141                      re += starNoEmpty;
 76142                  else
 76143                      re += star;
 76144                  hasMagic = true;
 76145                  continue;
 76146              }
 76147              if (c === '?') {
 76148                  re += qmark;
 76149                  hasMagic = true;
 76150                  continue;
 76151              }
 76152              re += regExpEscape(c);
 76153          }
 76154          return [re, (0, unescape_js_1.unescape)(glob), !!hasMagic, uflag];
 76155      }
 76156  }
 76157  exports.AST = AST;
 76158  //# sourceMappingURL=ast.js.map
 76159  
 76160  /***/ }),
 76161  
 76162  /***/ 33542:
 76163  /***/ ((__unused_webpack_module, exports) => {
 76164  
 76165  "use strict";
 76166  
 76167  // translate the various posix character classes into unicode properties
 76168  // this works across all unicode locales
 76169  Object.defineProperty(exports, "__esModule", ({ value: true }));
 76170  exports.parseClass = void 0;
 76171  // { <posix class>: [<translation>, /u flag required, negated]
 76172  const posixClasses = {
 76173      '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true],
 76174      '[:alpha:]': ['\\p{L}\\p{Nl}', true],
 76175      '[:ascii:]': ['\\x' + '00-\\x' + '7f', false],
 76176      '[:blank:]': ['\\p{Zs}\\t', true],
 76177      '[:cntrl:]': ['\\p{Cc}', true],
 76178      '[:digit:]': ['\\p{Nd}', true],
 76179      '[:graph:]': ['\\p{Z}\\p{C}', true, true],
 76180      '[:lower:]': ['\\p{Ll}', true],
 76181      '[:print:]': ['\\p{C}', true],
 76182      '[:punct:]': ['\\p{P}', true],
 76183      '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true],
 76184      '[:upper:]': ['\\p{Lu}', true],
 76185      '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true],
 76186      '[:xdigit:]': ['A-Fa-f0-9', false],
 76187  };
 76188  // only need to escape a few things inside of brace expressions
 76189  // escapes: [ \ ] -
 76190  const braceEscape = (s) => s.replace(/[[\]\\-]/g, '\\$&');
 76191  // escape all regexp magic characters
 76192  const regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
 76193  // everything has already been escaped, we just have to join
 76194  const rangesToString = (ranges) => ranges.join('');
 76195  // takes a glob string at a posix brace expression, and returns
 76196  // an equivalent regular expression source, and boolean indicating
 76197  // whether the /u flag needs to be applied, and the number of chars
 76198  // consumed to parse the character class.
 76199  // This also removes out of order ranges, and returns ($.) if the
 76200  // entire class just no good.
 76201  const parseClass = (glob, position) => {
 76202      const pos = position;
 76203      /* c8 ignore start */
 76204      if (glob.charAt(pos) !== '[') {
 76205          throw new Error('not in a brace expression');
 76206      }
 76207      /* c8 ignore stop */
 76208      const ranges = [];
 76209      const negs = [];
 76210      let i = pos + 1;
 76211      let sawStart = false;
 76212      let uflag = false;
 76213      let escaping = false;
 76214      let negate = false;
 76215      let endPos = pos;
 76216      let rangeStart = '';
 76217      WHILE: while (i < glob.length) {
 76218          const c = glob.charAt(i);
 76219          if ((c === '!' || c === '^') && i === pos + 1) {
 76220              negate = true;
 76221              i++;
 76222              continue;
 76223          }
 76224          if (c === ']' && sawStart && !escaping) {
 76225              endPos = i + 1;
 76226              break;
 76227          }
 76228          sawStart = true;
 76229          if (c === '\\') {
 76230              if (!escaping) {
 76231                  escaping = true;
 76232                  i++;
 76233                  continue;
 76234              }
 76235              // escaped \ char, fall through and treat like normal char
 76236          }
 76237          if (c === '[' && !escaping) {
 76238              // either a posix class, a collation equivalent, or just a [
 76239              for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {
 76240                  if (glob.startsWith(cls, i)) {
 76241                      // invalid, [a-[] is fine, but not [a-[:alpha]]
 76242                      if (rangeStart) {
 76243                          return ['$.', false, glob.length - pos, true];
 76244                      }
 76245                      i += cls.length;
 76246                      if (neg)
 76247                          negs.push(unip);
 76248                      else
 76249                          ranges.push(unip);
 76250                      uflag = uflag || u;
 76251                      continue WHILE;
 76252                  }
 76253              }
 76254          }
 76255          // now it's just a normal character, effectively
 76256          escaping = false;
 76257          if (rangeStart) {
 76258              // throw this range away if it's not valid, but others
 76259              // can still match.
 76260              if (c > rangeStart) {
 76261                  ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));
 76262              }
 76263              else if (c === rangeStart) {
 76264                  ranges.push(braceEscape(c));
 76265              }
 76266              rangeStart = '';
 76267              i++;
 76268              continue;
 76269          }
 76270          // now might be the start of a range.
 76271          // can be either c-d or c-] or c<more...>] or c] at this point
 76272          if (glob.startsWith('-]', i + 1)) {
 76273              ranges.push(braceEscape(c + '-'));
 76274              i += 2;
 76275              continue;
 76276          }
 76277          if (glob.startsWith('-', i + 1)) {
 76278              rangeStart = c;
 76279              i += 2;
 76280              continue;
 76281          }
 76282          // not the start of a range, just a single character
 76283          ranges.push(braceEscape(c));
 76284          i++;
 76285      }
 76286      if (endPos < i) {
 76287          // didn't see the end of the class, not a valid class,
 76288          // but might still be valid as a literal match.
 76289          return ['', false, 0, false];
 76290      }
 76291      // if we got no ranges and no negates, then we have a range that
 76292      // cannot possibly match anything, and that poisons the whole glob
 76293      if (!ranges.length && !negs.length) {
 76294          return ['$.', false, glob.length - pos, true];
 76295      }
 76296      // if we got one positive range, and it's a single character, then that's
 76297      // not actually a magic pattern, it's just that one literal character.
 76298      // we should not treat that as "magic", we should just return the literal
 76299      // character. [_] is a perfectly valid way to escape glob magic chars.
 76300      if (negs.length === 0 &&
 76301          ranges.length === 1 &&
 76302          /^\\?.$/.test(ranges[0]) &&
 76303          !negate) {
 76304          const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];
 76305          return [regexpEscape(r), false, endPos - pos, false];
 76306      }
 76307      const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';
 76308      const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';
 76309      const comb = ranges.length && negs.length
 76310          ? '(' + sranges + '|' + snegs + ')'
 76311          : ranges.length
 76312              ? sranges
 76313              : snegs;
 76314      return [comb, uflag, endPos - pos, true];
 76315  };
 76316  exports.parseClass = parseClass;
 76317  //# sourceMappingURL=brace-expressions.js.map
 76318  
 76319  /***/ }),
 76320  
 76321  /***/ 76636:
 76322  /***/ ((__unused_webpack_module, exports) => {
 76323  
 76324  "use strict";
 76325  
 76326  Object.defineProperty(exports, "__esModule", ({ value: true }));
 76327  exports.escape = void 0;
 76328  /**
 76329   * Escape all magic characters in a glob pattern.
 76330   *
 76331   * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}
 76332   * option is used, then characters are escaped by wrapping in `[]`, because
 76333   * a magic character wrapped in a character class can only be satisfied by
 76334   * that exact character.  In this mode, `\` is _not_ escaped, because it is
 76335   * not interpreted as a magic character, but instead as a path separator.
 76336   */
 76337  const escape = (s, { windowsPathsNoEscape = false, } = {}) => {
 76338      // don't need to escape +@! because we escape the parens
 76339      // that make those magic, and escaping ! as [!] isn't valid,
 76340      // because [!]] is a valid glob class meaning not ']'.
 76341      return windowsPathsNoEscape
 76342          ? s.replace(/[?*()[\]]/g, '[$&]')
 76343          : s.replace(/[?*()[\]\\]/g, '\\$&');
 76344  };
 76345  exports.escape = escape;
 76346  //# sourceMappingURL=escape.js.map
 76347  
 76348  /***/ }),
 76349  
 76350  /***/ 7111:
 76351  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 76352  
 76353  "use strict";
 76354  
 76355  var __importDefault = (this && this.__importDefault) || function (mod) {
 76356      return (mod && mod.__esModule) ? mod : { "default": mod };
 76357  };
 76358  Object.defineProperty(exports, "__esModule", ({ value: true }));
 76359  exports.unescape = exports.escape = exports.AST = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0;
 76360  const brace_expansion_1 = __importDefault(__nccwpck_require__(42443));
 76361  const assert_valid_pattern_js_1 = __nccwpck_require__(43691);
 76362  const ast_js_1 = __nccwpck_require__(99262);
 76363  const escape_js_1 = __nccwpck_require__(76636);
 76364  const unescape_js_1 = __nccwpck_require__(13704);
 76365  const minimatch = (p, pattern, options = {}) => {
 76366      (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
 76367      // shortcut: comments match nothing.
 76368      if (!options.nocomment && pattern.charAt(0) === '#') {
 76369          return false;
 76370      }
 76371      return new Minimatch(pattern, options).match(p);
 76372  };
 76373  exports.minimatch = minimatch;
 76374  // Optimized checking for the most common glob patterns.
 76375  const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/;
 76376  const starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);
 76377  const starDotExtTestDot = (ext) => (f) => f.endsWith(ext);
 76378  const starDotExtTestNocase = (ext) => {
 76379      ext = ext.toLowerCase();
 76380      return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);
 76381  };
 76382  const starDotExtTestNocaseDot = (ext) => {
 76383      ext = ext.toLowerCase();
 76384      return (f) => f.toLowerCase().endsWith(ext);
 76385  };
 76386  const starDotStarRE = /^\*+\.\*+$/;
 76387  const starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');
 76388  const starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');
 76389  const dotStarRE = /^\.\*+$/;
 76390  const dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');
 76391  const starRE = /^\*+$/;
 76392  const starTest = (f) => f.length !== 0 && !f.startsWith('.');
 76393  const starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';
 76394  const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/;
 76395  const qmarksTestNocase = ([$0, ext = '']) => {
 76396      const noext = qmarksTestNoExt([$0]);
 76397      if (!ext)
 76398          return noext;
 76399      ext = ext.toLowerCase();
 76400      return (f) => noext(f) && f.toLowerCase().endsWith(ext);
 76401  };
 76402  const qmarksTestNocaseDot = ([$0, ext = '']) => {
 76403      const noext = qmarksTestNoExtDot([$0]);
 76404      if (!ext)
 76405          return noext;
 76406      ext = ext.toLowerCase();
 76407      return (f) => noext(f) && f.toLowerCase().endsWith(ext);
 76408  };
 76409  const qmarksTestDot = ([$0, ext = '']) => {
 76410      const noext = qmarksTestNoExtDot([$0]);
 76411      return !ext ? noext : (f) => noext(f) && f.endsWith(ext);
 76412  };
 76413  const qmarksTest = ([$0, ext = '']) => {
 76414      const noext = qmarksTestNoExt([$0]);
 76415      return !ext ? noext : (f) => noext(f) && f.endsWith(ext);
 76416  };
 76417  const qmarksTestNoExt = ([$0]) => {
 76418      const len = $0.length;
 76419      return (f) => f.length === len && !f.startsWith('.');
 76420  };
 76421  const qmarksTestNoExtDot = ([$0]) => {
 76422      const len = $0.length;
 76423      return (f) => f.length === len && f !== '.' && f !== '..';
 76424  };
 76425  /* c8 ignore start */
 76426  const defaultPlatform = (typeof process === 'object' && process
 76427      ? (typeof process.env === 'object' &&
 76428          process.env &&
 76429          process.env.__MINIMATCH_TESTING_PLATFORM__) ||
 76430          process.platform
 76431      : 'posix');
 76432  const path = {
 76433      win32: { sep: '\\' },
 76434      posix: { sep: '/' },
 76435  };
 76436  /* c8 ignore stop */
 76437  exports.sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;
 76438  exports.minimatch.sep = exports.sep;
 76439  exports.GLOBSTAR = Symbol('globstar **');
 76440  exports.minimatch.GLOBSTAR = exports.GLOBSTAR;
 76441  // any single thing other than /
 76442  // don't need to escape / when using new RegExp()
 76443  const qmark = '[^/]';
 76444  // * => any number of characters
 76445  const star = qmark + '*?';
 76446  // ** when dots are allowed.  Anything goes, except .. and .
 76447  // not (^ or / followed by one or two dots followed by $ or /),
 76448  // followed by anything, any number of times.
 76449  const twoStarDot = '(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?';
 76450  // not a ^ or / followed by a dot,
 76451  // followed by anything, any number of times.
 76452  const twoStarNoDot = '(?:(?!(?:\\/|^)\\.).)*?';
 76453  const filter = (pattern, options = {}) => (p) => (0, exports.minimatch)(p, pattern, options);
 76454  exports.filter = filter;
 76455  exports.minimatch.filter = exports.filter;
 76456  const ext = (a, b = {}) => Object.assign({}, a, b);
 76457  const defaults = (def) => {
 76458      if (!def || typeof def !== 'object' || !Object.keys(def).length) {
 76459          return exports.minimatch;
 76460      }
 76461      const orig = exports.minimatch;
 76462      const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));
 76463      return Object.assign(m, {
 76464          Minimatch: class Minimatch extends orig.Minimatch {
 76465              constructor(pattern, options = {}) {
 76466                  super(pattern, ext(def, options));
 76467              }
 76468              static defaults(options) {
 76469                  return orig.defaults(ext(def, options)).Minimatch;
 76470              }
 76471          },
 76472          AST: class AST extends orig.AST {
 76473              /* c8 ignore start */
 76474              constructor(type, parent, options = {}) {
 76475                  super(type, parent, ext(def, options));
 76476              }
 76477              /* c8 ignore stop */
 76478              static fromGlob(pattern, options = {}) {
 76479                  return orig.AST.fromGlob(pattern, ext(def, options));
 76480              }
 76481          },
 76482          unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),
 76483          escape: (s, options = {}) => orig.escape(s, ext(def, options)),
 76484          filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),
 76485          defaults: (options) => orig.defaults(ext(def, options)),
 76486          makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),
 76487          braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),
 76488          match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),
 76489          sep: orig.sep,
 76490          GLOBSTAR: exports.GLOBSTAR,
 76491      });
 76492  };
 76493  exports.defaults = defaults;
 76494  exports.minimatch.defaults = exports.defaults;
 76495  // Brace expansion:
 76496  // a{b,c}d -> abd acd
 76497  // a{b,}c -> abc ac
 76498  // a{0..3}d -> a0d a1d a2d a3d
 76499  // a{b,c{d,e}f}g -> abg acdfg acefg
 76500  // a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
 76501  //
 76502  // Invalid sets are not expanded.
 76503  // a{2..}b -> a{2..}b
 76504  // a{b}c -> a{b}c
 76505  const braceExpand = (pattern, options = {}) => {
 76506      (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
 76507      // Thanks to Yeting Li <https://github.com/yetingli> for
 76508      // improving this regexp to avoid a ReDOS vulnerability.
 76509      if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
 76510          // shortcut. no need to expand.
 76511          return [pattern];
 76512      }
 76513      return (0, brace_expansion_1.default)(pattern);
 76514  };
 76515  exports.braceExpand = braceExpand;
 76516  exports.minimatch.braceExpand = exports.braceExpand;
 76517  // parse a component of the expanded set.
 76518  // At this point, no pattern may contain "/" in it
 76519  // so we're going to return a 2d array, where each entry is the full
 76520  // pattern, split on '/', and then turned into a regular expression.
 76521  // A regexp is made at the end which joins each array with an
 76522  // escaped /, and another full one which joins each regexp with |.
 76523  //
 76524  // Following the lead of Bash 4.1, note that "**" only has special meaning
 76525  // when it is the *only* thing in a path portion.  Otherwise, any series
 76526  // of * is equivalent to a single *.  Globstar behavior is enabled by
 76527  // default, and can be disabled by setting options.noglobstar.
 76528  const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();
 76529  exports.makeRe = makeRe;
 76530  exports.minimatch.makeRe = exports.makeRe;
 76531  const match = (list, pattern, options = {}) => {
 76532      const mm = new Minimatch(pattern, options);
 76533      list = list.filter(f => mm.match(f));
 76534      if (mm.options.nonull && !list.length) {
 76535          list.push(pattern);
 76536      }
 76537      return list;
 76538  };
 76539  exports.match = match;
 76540  exports.minimatch.match = exports.match;
 76541  // replace stuff like \* with *
 76542  const globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/;
 76543  const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
 76544  class Minimatch {
 76545      options;
 76546      set;
 76547      pattern;
 76548      windowsPathsNoEscape;
 76549      nonegate;
 76550      negate;
 76551      comment;
 76552      empty;
 76553      preserveMultipleSlashes;
 76554      partial;
 76555      globSet;
 76556      globParts;
 76557      nocase;
 76558      isWindows;
 76559      platform;
 76560      windowsNoMagicRoot;
 76561      regexp;
 76562      constructor(pattern, options = {}) {
 76563          (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
 76564          options = options || {};
 76565          this.options = options;
 76566          this.pattern = pattern;
 76567          this.platform = options.platform || defaultPlatform;
 76568          this.isWindows = this.platform === 'win32';
 76569          this.windowsPathsNoEscape =
 76570              !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
 76571          if (this.windowsPathsNoEscape) {
 76572              this.pattern = this.pattern.replace(/\\/g, '/');
 76573          }
 76574          this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;
 76575          this.regexp = null;
 76576          this.negate = false;
 76577          this.nonegate = !!options.nonegate;
 76578          this.comment = false;
 76579          this.empty = false;
 76580          this.partial = !!options.partial;
 76581          this.nocase = !!this.options.nocase;
 76582          this.windowsNoMagicRoot =
 76583              options.windowsNoMagicRoot !== undefined
 76584                  ? options.windowsNoMagicRoot
 76585                  : !!(this.isWindows && this.nocase);
 76586          this.globSet = [];
 76587          this.globParts = [];
 76588          this.set = [];
 76589          // make the set of regexps etc.
 76590          this.make();
 76591      }
 76592      hasMagic() {
 76593          if (this.options.magicalBraces && this.set.length > 1) {
 76594              return true;
 76595          }
 76596          for (const pattern of this.set) {
 76597              for (const part of pattern) {
 76598                  if (typeof part !== 'string')
 76599                      return true;
 76600              }
 76601          }
 76602          return false;
 76603      }
 76604      debug(..._) { }
 76605      make() {
 76606          const pattern = this.pattern;
 76607          const options = this.options;
 76608          // empty patterns and comments match nothing.
 76609          if (!options.nocomment && pattern.charAt(0) === '#') {
 76610              this.comment = true;
 76611              return;
 76612          }
 76613          if (!pattern) {
 76614              this.empty = true;
 76615              return;
 76616          }
 76617          // step 1: figure out negation, etc.
 76618          this.parseNegate();
 76619          // step 2: expand braces
 76620          this.globSet = [...new Set(this.braceExpand())];
 76621          if (options.debug) {
 76622              this.debug = (...args) => console.error(...args);
 76623          }
 76624          this.debug(this.pattern, this.globSet);
 76625          // step 3: now we have a set, so turn each one into a series of
 76626          // path-portion matching patterns.
 76627          // These will be regexps, except in the case of "**", which is
 76628          // set to the GLOBSTAR object for globstar behavior,
 76629          // and will not contain any / characters
 76630          //
 76631          // First, we preprocess to make the glob pattern sets a bit simpler
 76632          // and deduped.  There are some perf-killing patterns that can cause
 76633          // problems with a glob walk, but we can simplify them down a bit.
 76634          const rawGlobParts = this.globSet.map(s => this.slashSplit(s));
 76635          this.globParts = this.preprocess(rawGlobParts);
 76636          this.debug(this.pattern, this.globParts);
 76637          // glob --> regexps
 76638          let set = this.globParts.map((s, _, __) => {
 76639              if (this.isWindows && this.windowsNoMagicRoot) {
 76640                  // check if it's a drive or unc path.
 76641                  const isUNC = s[0] === '' &&
 76642                      s[1] === '' &&
 76643                      (s[2] === '?' || !globMagic.test(s[2])) &&
 76644                      !globMagic.test(s[3]);
 76645                  const isDrive = /^[a-z]:/i.test(s[0]);
 76646                  if (isUNC) {
 76647                      return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];
 76648                  }
 76649                  else if (isDrive) {
 76650                      return [s[0], ...s.slice(1).map(ss => this.parse(ss))];
 76651                  }
 76652              }
 76653              return s.map(ss => this.parse(ss));
 76654          });
 76655          this.debug(this.pattern, set);
 76656          // filter out everything that didn't compile properly.
 76657          this.set = set.filter(s => s.indexOf(false) === -1);
 76658          // do not treat the ? in UNC paths as magic
 76659          if (this.isWindows) {
 76660              for (let i = 0; i < this.set.length; i++) {
 76661                  const p = this.set[i];
 76662                  if (p[0] === '' &&
 76663                      p[1] === '' &&
 76664                      this.globParts[i][2] === '?' &&
 76665                      typeof p[3] === 'string' &&
 76666                      /^[a-z]:$/i.test(p[3])) {
 76667                      p[2] = '?';
 76668                  }
 76669              }
 76670          }
 76671          this.debug(this.pattern, this.set);
 76672      }
 76673      // various transforms to equivalent pattern sets that are
 76674      // faster to process in a filesystem walk.  The goal is to
 76675      // eliminate what we can, and push all ** patterns as far
 76676      // to the right as possible, even if it increases the number
 76677      // of patterns that we have to process.
 76678      preprocess(globParts) {
 76679          // if we're not in globstar mode, then turn all ** into *
 76680          if (this.options.noglobstar) {
 76681              for (let i = 0; i < globParts.length; i++) {
 76682                  for (let j = 0; j < globParts[i].length; j++) {
 76683                      if (globParts[i][j] === '**') {
 76684                          globParts[i][j] = '*';
 76685                      }
 76686                  }
 76687              }
 76688          }
 76689          const { optimizationLevel = 1 } = this.options;
 76690          if (optimizationLevel >= 2) {
 76691              // aggressive optimization for the purpose of fs walking
 76692              globParts = this.firstPhasePreProcess(globParts);
 76693              globParts = this.secondPhasePreProcess(globParts);
 76694          }
 76695          else if (optimizationLevel >= 1) {
 76696              // just basic optimizations to remove some .. parts
 76697              globParts = this.levelOneOptimize(globParts);
 76698          }
 76699          else {
 76700              globParts = this.adjascentGlobstarOptimize(globParts);
 76701          }
 76702          return globParts;
 76703      }
 76704      // just get rid of adjascent ** portions
 76705      adjascentGlobstarOptimize(globParts) {
 76706          return globParts.map(parts => {
 76707              let gs = -1;
 76708              while (-1 !== (gs = parts.indexOf('**', gs + 1))) {
 76709                  let i = gs;
 76710                  while (parts[i + 1] === '**') {
 76711                      i++;
 76712                  }
 76713                  if (i !== gs) {
 76714                      parts.splice(gs, i - gs);
 76715                  }
 76716              }
 76717              return parts;
 76718          });
 76719      }
 76720      // get rid of adjascent ** and resolve .. portions
 76721      levelOneOptimize(globParts) {
 76722          return globParts.map(parts => {
 76723              parts = parts.reduce((set, part) => {
 76724                  const prev = set[set.length - 1];
 76725                  if (part === '**' && prev === '**') {
 76726                      return set;
 76727                  }
 76728                  if (part === '..') {
 76729                      if (prev && prev !== '..' && prev !== '.' && prev !== '**') {
 76730                          set.pop();
 76731                          return set;
 76732                      }
 76733                  }
 76734                  set.push(part);
 76735                  return set;
 76736              }, []);
 76737              return parts.length === 0 ? [''] : parts;
 76738          });
 76739      }
 76740      levelTwoFileOptimize(parts) {
 76741          if (!Array.isArray(parts)) {
 76742              parts = this.slashSplit(parts);
 76743          }
 76744          let didSomething = false;
 76745          do {
 76746              didSomething = false;
 76747              // <pre>/<e>/<rest> -> <pre>/<rest>
 76748              if (!this.preserveMultipleSlashes) {
 76749                  for (let i = 1; i < parts.length - 1; i++) {
 76750                      const p = parts[i];
 76751                      // don't squeeze out UNC patterns
 76752                      if (i === 1 && p === '' && parts[0] === '')
 76753                          continue;
 76754                      if (p === '.' || p === '') {
 76755                          didSomething = true;
 76756                          parts.splice(i, 1);
 76757                          i--;
 76758                      }
 76759                  }
 76760                  if (parts[0] === '.' &&
 76761                      parts.length === 2 &&
 76762                      (parts[1] === '.' || parts[1] === '')) {
 76763                      didSomething = true;
 76764                      parts.pop();
 76765                  }
 76766              }
 76767              // <pre>/<p>/../<rest> -> <pre>/<rest>
 76768              let dd = 0;
 76769              while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
 76770                  const p = parts[dd - 1];
 76771                  if (p && p !== '.' && p !== '..' && p !== '**') {
 76772                      didSomething = true;
 76773                      parts.splice(dd - 1, 2);
 76774                      dd -= 2;
 76775                  }
 76776              }
 76777          } while (didSomething);
 76778          return parts.length === 0 ? [''] : parts;
 76779      }
 76780      // First phase: single-pattern processing
 76781      // <pre> is 1 or more portions
 76782      // <rest> is 1 or more portions
 76783      // <p> is any portion other than ., .., '', or **
 76784      // <e> is . or ''
 76785      //
 76786      // **/.. is *brutal* for filesystem walking performance, because
 76787      // it effectively resets the recursive walk each time it occurs,
 76788      // and ** cannot be reduced out by a .. pattern part like a regexp
 76789      // or most strings (other than .., ., and '') can be.
 76790      //
 76791      // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}
 76792      // <pre>/<e>/<rest> -> <pre>/<rest>
 76793      // <pre>/<p>/../<rest> -> <pre>/<rest>
 76794      // **/**/<rest> -> **/<rest>
 76795      //
 76796      // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow
 76797      // this WOULD be allowed if ** did follow symlinks, or * didn't
 76798      firstPhasePreProcess(globParts) {
 76799          let didSomething = false;
 76800          do {
 76801              didSomething = false;
 76802              // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}
 76803              for (let parts of globParts) {
 76804                  let gs = -1;
 76805                  while (-1 !== (gs = parts.indexOf('**', gs + 1))) {
 76806                      let gss = gs;
 76807                      while (parts[gss + 1] === '**') {
 76808                          // <pre>/**/**/<rest> -> <pre>/**/<rest>
 76809                          gss++;
 76810                      }
 76811                      // eg, if gs is 2 and gss is 4, that means we have 3 **
 76812                      // parts, and can remove 2 of them.
 76813                      if (gss > gs) {
 76814                          parts.splice(gs + 1, gss - gs);
 76815                      }
 76816                      let next = parts[gs + 1];
 76817                      const p = parts[gs + 2];
 76818                      const p2 = parts[gs + 3];
 76819                      if (next !== '..')
 76820                          continue;
 76821                      if (!p ||
 76822                          p === '.' ||
 76823                          p === '..' ||
 76824                          !p2 ||
 76825                          p2 === '.' ||
 76826                          p2 === '..') {
 76827                          continue;
 76828                      }
 76829                      didSomething = true;
 76830                      // edit parts in place, and push the new one
 76831                      parts.splice(gs, 1);
 76832                      const other = parts.slice(0);
 76833                      other[gs] = '**';
 76834                      globParts.push(other);
 76835                      gs--;
 76836                  }
 76837                  // <pre>/<e>/<rest> -> <pre>/<rest>
 76838                  if (!this.preserveMultipleSlashes) {
 76839                      for (let i = 1; i < parts.length - 1; i++) {
 76840                          const p = parts[i];
 76841                          // don't squeeze out UNC patterns
 76842                          if (i === 1 && p === '' && parts[0] === '')
 76843                              continue;
 76844                          if (p === '.' || p === '') {
 76845                              didSomething = true;
 76846                              parts.splice(i, 1);
 76847                              i--;
 76848                          }
 76849                      }
 76850                      if (parts[0] === '.' &&
 76851                          parts.length === 2 &&
 76852                          (parts[1] === '.' || parts[1] === '')) {
 76853                          didSomething = true;
 76854                          parts.pop();
 76855                      }
 76856                  }
 76857                  // <pre>/<p>/../<rest> -> <pre>/<rest>
 76858                  let dd = 0;
 76859                  while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
 76860                      const p = parts[dd - 1];
 76861                      if (p && p !== '.' && p !== '..' && p !== '**') {
 76862                          didSomething = true;
 76863                          const needDot = dd === 1 && parts[dd + 1] === '**';
 76864                          const splin = needDot ? ['.'] : [];
 76865                          parts.splice(dd - 1, 2, ...splin);
 76866                          if (parts.length === 0)
 76867                              parts.push('');
 76868                          dd -= 2;
 76869                      }
 76870                  }
 76871              }
 76872          } while (didSomething);
 76873          return globParts;
 76874      }
 76875      // second phase: multi-pattern dedupes
 76876      // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>
 76877      // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>
 76878      // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>
 76879      //
 76880      // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>
 76881      // ^-- not valid because ** doens't follow symlinks
 76882      secondPhasePreProcess(globParts) {
 76883          for (let i = 0; i < globParts.length - 1; i++) {
 76884              for (let j = i + 1; j < globParts.length; j++) {
 76885                  const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
 76886                  if (!matched)
 76887                      continue;
 76888                  globParts[i] = matched;
 76889                  globParts[j] = [];
 76890              }
 76891          }
 76892          return globParts.filter(gs => gs.length);
 76893      }
 76894      partsMatch(a, b, emptyGSMatch = false) {
 76895          let ai = 0;
 76896          let bi = 0;
 76897          let result = [];
 76898          let which = '';
 76899          while (ai < a.length && bi < b.length) {
 76900              if (a[ai] === b[bi]) {
 76901                  result.push(which === 'b' ? b[bi] : a[ai]);
 76902                  ai++;
 76903                  bi++;
 76904              }
 76905              else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {
 76906                  result.push(a[ai]);
 76907                  ai++;
 76908              }
 76909              else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {
 76910                  result.push(b[bi]);
 76911                  bi++;
 76912              }
 76913              else if (a[ai] === '*' &&
 76914                  b[bi] &&
 76915                  (this.options.dot || !b[bi].startsWith('.')) &&
 76916                  b[bi] !== '**') {
 76917                  if (which === 'b')
 76918                      return false;
 76919                  which = 'a';
 76920                  result.push(a[ai]);
 76921                  ai++;
 76922                  bi++;
 76923              }
 76924              else if (b[bi] === '*' &&
 76925                  a[ai] &&
 76926                  (this.options.dot || !a[ai].startsWith('.')) &&
 76927                  a[ai] !== '**') {
 76928                  if (which === 'a')
 76929                      return false;
 76930                  which = 'b';
 76931                  result.push(b[bi]);
 76932                  ai++;
 76933                  bi++;
 76934              }
 76935              else {
 76936                  return false;
 76937              }
 76938          }
 76939          // if we fall out of the loop, it means they two are identical
 76940          // as long as their lengths match
 76941          return a.length === b.length && result;
 76942      }
 76943      parseNegate() {
 76944          if (this.nonegate)
 76945              return;
 76946          const pattern = this.pattern;
 76947          let negate = false;
 76948          let negateOffset = 0;
 76949          for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {
 76950              negate = !negate;
 76951              negateOffset++;
 76952          }
 76953          if (negateOffset)
 76954              this.pattern = pattern.slice(negateOffset);
 76955          this.negate = negate;
 76956      }
 76957      // set partial to true to test if, for example,
 76958      // "/a/b" matches the start of "/*/b/*/d"
 76959      // Partial means, if you run out of file before you run
 76960      // out of pattern, then that's fine, as long as all
 76961      // the parts match.
 76962      matchOne(file, pattern, partial = false) {
 76963          const options = this.options;
 76964          // UNC paths like //?/X:/... can match X:/... and vice versa
 76965          // Drive letters in absolute drive or unc paths are always compared
 76966          // case-insensitively.
 76967          if (this.isWindows) {
 76968              const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);
 76969              const fileUNC = !fileDrive &&
 76970                  file[0] === '' &&
 76971                  file[1] === '' &&
 76972                  file[2] === '?' &&
 76973                  /^[a-z]:$/i.test(file[3]);
 76974              const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);
 76975              const patternUNC = !patternDrive &&
 76976                  pattern[0] === '' &&
 76977                  pattern[1] === '' &&
 76978                  pattern[2] === '?' &&
 76979                  typeof pattern[3] === 'string' &&
 76980                  /^[a-z]:$/i.test(pattern[3]);
 76981              const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;
 76982              const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;
 76983              if (typeof fdi === 'number' && typeof pdi === 'number') {
 76984                  const [fd, pd] = [file[fdi], pattern[pdi]];
 76985                  if (fd.toLowerCase() === pd.toLowerCase()) {
 76986                      pattern[pdi] = fd;
 76987                      if (pdi > fdi) {
 76988                          pattern = pattern.slice(pdi);
 76989                      }
 76990                      else if (fdi > pdi) {
 76991                          file = file.slice(fdi);
 76992                      }
 76993                  }
 76994              }
 76995          }
 76996          // resolve and reduce . and .. portions in the file as well.
 76997          // dont' need to do the second phase, because it's only one string[]
 76998          const { optimizationLevel = 1 } = this.options;
 76999          if (optimizationLevel >= 2) {
 77000              file = this.levelTwoFileOptimize(file);
 77001          }
 77002          this.debug('matchOne', this, { file, pattern });
 77003          this.debug('matchOne', file.length, pattern.length);
 77004          for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
 77005              this.debug('matchOne loop');
 77006              var p = pattern[pi];
 77007              var f = file[fi];
 77008              this.debug(pattern, p, f);
 77009              // should be impossible.
 77010              // some invalid regexp stuff in the set.
 77011              /* c8 ignore start */
 77012              if (p === false) {
 77013                  return false;
 77014              }
 77015              /* c8 ignore stop */
 77016              if (p === exports.GLOBSTAR) {
 77017                  this.debug('GLOBSTAR', [pattern, p, f]);
 77018                  // "**"
 77019                  // a/**/b/**/c would match the following:
 77020                  // a/b/x/y/z/c
 77021                  // a/x/y/z/b/c
 77022                  // a/b/x/b/x/c
 77023                  // a/b/c
 77024                  // To do this, take the rest of the pattern after
 77025                  // the **, and see if it would match the file remainder.
 77026                  // If so, return success.
 77027                  // If not, the ** "swallows" a segment, and try again.
 77028                  // This is recursively awful.
 77029                  //
 77030                  // a/**/b/**/c matching a/b/x/y/z/c
 77031                  // - a matches a
 77032                  // - doublestar
 77033                  //   - matchOne(b/x/y/z/c, b/**/c)
 77034                  //     - b matches b
 77035                  //     - doublestar
 77036                  //       - matchOne(x/y/z/c, c) -> no
 77037                  //       - matchOne(y/z/c, c) -> no
 77038                  //       - matchOne(z/c, c) -> no
 77039                  //       - matchOne(c, c) yes, hit
 77040                  var fr = fi;
 77041                  var pr = pi + 1;
 77042                  if (pr === pl) {
 77043                      this.debug('** at the end');
 77044                      // a ** at the end will just swallow the rest.
 77045                      // We have found a match.
 77046                      // however, it will not swallow /.x, unless
 77047                      // options.dot is set.
 77048                      // . and .. are *never* matched by **, for explosively
 77049                      // exponential reasons.
 77050                      for (; fi < fl; fi++) {
 77051                          if (file[fi] === '.' ||
 77052                              file[fi] === '..' ||
 77053                              (!options.dot && file[fi].charAt(0) === '.'))
 77054                              return false;
 77055                      }
 77056                      return true;
 77057                  }
 77058                  // ok, let's see if we can swallow whatever we can.
 77059                  while (fr < fl) {
 77060                      var swallowee = file[fr];
 77061                      this.debug('\nglobstar while', file, fr, pattern, pr, swallowee);
 77062                      // XXX remove this slice.  Just pass the start index.
 77063                      if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
 77064                          this.debug('globstar found match!', fr, fl, swallowee);
 77065                          // found a match.
 77066                          return true;
 77067                      }
 77068                      else {
 77069                          // can't swallow "." or ".." ever.
 77070                          // can only swallow ".foo" when explicitly asked.
 77071                          if (swallowee === '.' ||
 77072                              swallowee === '..' ||
 77073                              (!options.dot && swallowee.charAt(0) === '.')) {
 77074                              this.debug('dot detected!', file, fr, pattern, pr);
 77075                              break;
 77076                          }
 77077                          // ** swallows a segment, and continue.
 77078                          this.debug('globstar swallow a segment, and continue');
 77079                          fr++;
 77080                      }
 77081                  }
 77082                  // no match was found.
 77083                  // However, in partial mode, we can't say this is necessarily over.
 77084                  /* c8 ignore start */
 77085                  if (partial) {
 77086                      // ran out of file
 77087                      this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
 77088                      if (fr === fl) {
 77089                          return true;
 77090                      }
 77091                  }
 77092                  /* c8 ignore stop */
 77093                  return false;
 77094              }
 77095              // something other than **
 77096              // non-magic patterns just have to match exactly
 77097              // patterns with magic have been turned into regexps.
 77098              let hit;
 77099              if (typeof p === 'string') {
 77100                  hit = f === p;
 77101                  this.debug('string match', p, f, hit);
 77102              }
 77103              else {
 77104                  hit = p.test(f);
 77105                  this.debug('pattern match', p, f, hit);
 77106              }
 77107              if (!hit)
 77108                  return false;
 77109          }
 77110          // Note: ending in / means that we'll get a final ""
 77111          // at the end of the pattern.  This can only match a
 77112          // corresponding "" at the end of the file.
 77113          // If the file ends in /, then it can only match a
 77114          // a pattern that ends in /, unless the pattern just
 77115          // doesn't have any more for it. But, a/b/ should *not*
 77116          // match "a/b/*", even though "" matches against the
 77117          // [^/]*? pattern, except in partial mode, where it might
 77118          // simply not be reached yet.
 77119          // However, a/b/ should still satisfy a/*
 77120          // now either we fell off the end of the pattern, or we're done.
 77121          if (fi === fl && pi === pl) {
 77122              // ran out of pattern and filename at the same time.
 77123              // an exact hit!
 77124              return true;
 77125          }
 77126          else if (fi === fl) {
 77127              // ran out of file, but still had pattern left.
 77128              // this is ok if we're doing the match as part of
 77129              // a glob fs traversal.
 77130              return partial;
 77131          }
 77132          else if (pi === pl) {
 77133              // ran out of pattern, still have file left.
 77134              // this is only acceptable if we're on the very last
 77135              // empty segment of a file with a trailing slash.
 77136              // a/* should match a/b/
 77137              return fi === fl - 1 && file[fi] === '';
 77138              /* c8 ignore start */
 77139          }
 77140          else {
 77141              // should be unreachable.
 77142              throw new Error('wtf?');
 77143          }
 77144          /* c8 ignore stop */
 77145      }
 77146      braceExpand() {
 77147          return (0, exports.braceExpand)(this.pattern, this.options);
 77148      }
 77149      parse(pattern) {
 77150          (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
 77151          const options = this.options;
 77152          // shortcuts
 77153          if (pattern === '**')
 77154              return exports.GLOBSTAR;
 77155          if (pattern === '')
 77156              return '';
 77157          // far and away, the most common glob pattern parts are
 77158          // *, *.*, and *.<ext>  Add a fast check method for those.
 77159          let m;
 77160          let fastTest = null;
 77161          if ((m = pattern.match(starRE))) {
 77162              fastTest = options.dot ? starTestDot : starTest;
 77163          }
 77164          else if ((m = pattern.match(starDotExtRE))) {
 77165              fastTest = (options.nocase
 77166                  ? options.dot
 77167                      ? starDotExtTestNocaseDot
 77168                      : starDotExtTestNocase
 77169                  : options.dot
 77170                      ? starDotExtTestDot
 77171                      : starDotExtTest)(m[1]);
 77172          }
 77173          else if ((m = pattern.match(qmarksRE))) {
 77174              fastTest = (options.nocase
 77175                  ? options.dot
 77176                      ? qmarksTestNocaseDot
 77177                      : qmarksTestNocase
 77178                  : options.dot
 77179                      ? qmarksTestDot
 77180                      : qmarksTest)(m);
 77181          }
 77182          else if ((m = pattern.match(starDotStarRE))) {
 77183              fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
 77184          }
 77185          else if ((m = pattern.match(dotStarRE))) {
 77186              fastTest = dotStarTest;
 77187          }
 77188          const re = ast_js_1.AST.fromGlob(pattern, this.options).toMMPattern();
 77189          return fastTest ? Object.assign(re, { test: fastTest }) : re;
 77190      }
 77191      makeRe() {
 77192          if (this.regexp || this.regexp === false)
 77193              return this.regexp;
 77194          // at this point, this.set is a 2d array of partial
 77195          // pattern strings, or "**".
 77196          //
 77197          // It's better to use .match().  This function shouldn't
 77198          // be used, really, but it's pretty convenient sometimes,
 77199          // when you just want to work with a regex.
 77200          const set = this.set;
 77201          if (!set.length) {
 77202              this.regexp = false;
 77203              return this.regexp;
 77204          }
 77205          const options = this.options;
 77206          const twoStar = options.noglobstar
 77207              ? star
 77208              : options.dot
 77209                  ? twoStarDot
 77210                  : twoStarNoDot;
 77211          const flags = new Set(options.nocase ? ['i'] : []);
 77212          // regexpify non-globstar patterns
 77213          // if ** is only item, then we just do one twoStar
 77214          // if ** is first, and there are more, prepend (\/|twoStar\/)? to next
 77215          // if ** is last, append (\/twoStar|) to previous
 77216          // if ** is in the middle, append (\/|\/twoStar\/) to previous
 77217          // then filter out GLOBSTAR symbols
 77218          let re = set
 77219              .map(pattern => {
 77220              const pp = pattern.map(p => {
 77221                  if (p instanceof RegExp) {
 77222                      for (const f of p.flags.split(''))
 77223                          flags.add(f);
 77224                  }
 77225                  return typeof p === 'string'
 77226                      ? regExpEscape(p)
 77227                      : p === exports.GLOBSTAR
 77228                          ? exports.GLOBSTAR
 77229                          : p._src;
 77230              });
 77231              pp.forEach((p, i) => {
 77232                  const next = pp[i + 1];
 77233                  const prev = pp[i - 1];
 77234                  if (p !== exports.GLOBSTAR || prev === exports.GLOBSTAR) {
 77235                      return;
 77236                  }
 77237                  if (prev === undefined) {
 77238                      if (next !== undefined && next !== exports.GLOBSTAR) {
 77239                          pp[i + 1] = '(?:\\/|' + twoStar + '\\/)?' + next;
 77240                      }
 77241                      else {
 77242                          pp[i] = twoStar;
 77243                      }
 77244                  }
 77245                  else if (next === undefined) {
 77246                      pp[i - 1] = prev + '(?:\\/|' + twoStar + ')?';
 77247                  }
 77248                  else if (next !== exports.GLOBSTAR) {
 77249                      pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + '\\/)' + next;
 77250                      pp[i + 1] = exports.GLOBSTAR;
 77251                  }
 77252              });
 77253              return pp.filter(p => p !== exports.GLOBSTAR).join('/');
 77254          })
 77255              .join('|');
 77256          // need to wrap in parens if we had more than one thing with |,
 77257          // otherwise only the first will be anchored to ^ and the last to $
 77258          const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];
 77259          // must match entire pattern
 77260          // ending in a * or ** will make it less strict.
 77261          re = '^' + open + re + close + '$';
 77262          // can match anything, as long as it's not this.
 77263          if (this.negate)
 77264              re = '^(?!' + re + ').+$';
 77265          try {
 77266              this.regexp = new RegExp(re, [...flags].join(''));
 77267              /* c8 ignore start */
 77268          }
 77269          catch (ex) {
 77270              // should be impossible
 77271              this.regexp = false;
 77272          }
 77273          /* c8 ignore stop */
 77274          return this.regexp;
 77275      }
 77276      slashSplit(p) {
 77277          // if p starts with // on windows, we preserve that
 77278          // so that UNC paths aren't broken.  Otherwise, any number of
 77279          // / characters are coalesced into one, unless
 77280          // preserveMultipleSlashes is set to true.
 77281          if (this.preserveMultipleSlashes) {
 77282              return p.split('/');
 77283          }
 77284          else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
 77285              // add an extra '' for the one we lose
 77286              return ['', ...p.split(/\/+/)];
 77287          }
 77288          else {
 77289              return p.split(/\/+/);
 77290          }
 77291      }
 77292      match(f, partial = this.partial) {
 77293          this.debug('match', f, this.pattern);
 77294          // short-circuit in the case of busted things.
 77295          // comments, etc.
 77296          if (this.comment) {
 77297              return false;
 77298          }
 77299          if (this.empty) {
 77300              return f === '';
 77301          }
 77302          if (f === '/' && partial) {
 77303              return true;
 77304          }
 77305          const options = this.options;
 77306          // windows: need to use /, not \
 77307          if (this.isWindows) {
 77308              f = f.split('\\').join('/');
 77309          }
 77310          // treat the test path as a set of pathparts.
 77311          const ff = this.slashSplit(f);
 77312          this.debug(this.pattern, 'split', ff);
 77313          // just ONE of the pattern sets in this.set needs to match
 77314          // in order for it to be valid.  If negating, then just one
 77315          // match means that we have failed.
 77316          // Either way, return on the first hit.
 77317          const set = this.set;
 77318          this.debug(this.pattern, 'set', set);
 77319          // Find the basename of the path by looking for the last non-empty segment
 77320          let filename = ff[ff.length - 1];
 77321          if (!filename) {
 77322              for (let i = ff.length - 2; !filename && i >= 0; i--) {
 77323                  filename = ff[i];
 77324              }
 77325          }
 77326          for (let i = 0; i < set.length; i++) {
 77327              const pattern = set[i];
 77328              let file = ff;
 77329              if (options.matchBase && pattern.length === 1) {
 77330                  file = [filename];
 77331              }
 77332              const hit = this.matchOne(file, pattern, partial);
 77333              if (hit) {
 77334                  if (options.flipNegate) {
 77335                      return true;
 77336                  }
 77337                  return !this.negate;
 77338              }
 77339          }
 77340          // didn't get any hits.  this is success if it's a negative
 77341          // pattern, failure otherwise.
 77342          if (options.flipNegate) {
 77343              return false;
 77344          }
 77345          return this.negate;
 77346      }
 77347      static defaults(def) {
 77348          return exports.minimatch.defaults(def).Minimatch;
 77349      }
 77350  }
 77351  exports.Minimatch = Minimatch;
 77352  /* c8 ignore start */
 77353  var ast_js_2 = __nccwpck_require__(99262);
 77354  Object.defineProperty(exports, "AST", ({ enumerable: true, get: function () { return ast_js_2.AST; } }));
 77355  var escape_js_2 = __nccwpck_require__(76636);
 77356  Object.defineProperty(exports, "escape", ({ enumerable: true, get: function () { return escape_js_2.escape; } }));
 77357  var unescape_js_2 = __nccwpck_require__(13704);
 77358  Object.defineProperty(exports, "unescape", ({ enumerable: true, get: function () { return unescape_js_2.unescape; } }));
 77359  /* c8 ignore stop */
 77360  exports.minimatch.AST = ast_js_1.AST;
 77361  exports.minimatch.Minimatch = Minimatch;
 77362  exports.minimatch.escape = escape_js_1.escape;
 77363  exports.minimatch.unescape = unescape_js_1.unescape;
 77364  //# sourceMappingURL=index.js.map
 77365  
 77366  /***/ }),
 77367  
 77368  /***/ 13704:
 77369  /***/ ((__unused_webpack_module, exports) => {
 77370  
 77371  "use strict";
 77372  
 77373  Object.defineProperty(exports, "__esModule", ({ value: true }));
 77374  exports.unescape = void 0;
 77375  /**
 77376   * Un-escape a string that has been escaped with {@link escape}.
 77377   *
 77378   * If the {@link windowsPathsNoEscape} option is used, then square-brace
 77379   * escapes are removed, but not backslash escapes.  For example, it will turn
 77380   * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`,
 77381   * becuase `\` is a path separator in `windowsPathsNoEscape` mode.
 77382   *
 77383   * When `windowsPathsNoEscape` is not set, then both brace escapes and
 77384   * backslash escapes are removed.
 77385   *
 77386   * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped
 77387   * or unescaped.
 77388   */
 77389  const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {
 77390      return windowsPathsNoEscape
 77391          ? s.replace(/\[([^\/\\])\]/g, '$1')
 77392          : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1');
 77393  };
 77394  exports.unescape = unescape;
 77395  //# sourceMappingURL=unescape.js.map
 77396  
 77397  /***/ }),
 77398  
 77399  /***/ 14968:
 77400  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 77401  
 77402  "use strict";
 77403  
 77404  var __importDefault = (this && this.__importDefault) || function (mod) {
 77405      return (mod && mod.__esModule) ? mod : { "default": mod };
 77406  };
 77407  Object.defineProperty(exports, "__esModule", ({ value: true }));
 77408  exports.Minipass = exports.isWritable = exports.isReadable = exports.isStream = void 0;
 77409  const proc = typeof process === 'object' && process
 77410      ? process
 77411      : {
 77412          stdout: null,
 77413          stderr: null,
 77414      };
 77415  const events_1 = __nccwpck_require__(82361);
 77416  const stream_1 = __importDefault(__nccwpck_require__(12781));
 77417  const string_decoder_1 = __nccwpck_require__(71576);
 77418  /**
 77419   * Return true if the argument is a Minipass stream, Node stream, or something
 77420   * else that Minipass can interact with.
 77421   */
 77422  const isStream = (s) => !!s &&
 77423      typeof s === 'object' &&
 77424      (s instanceof Minipass ||
 77425          s instanceof stream_1.default ||
 77426          (0, exports.isReadable)(s) ||
 77427          (0, exports.isWritable)(s));
 77428  exports.isStream = isStream;
 77429  /**
 77430   * Return true if the argument is a valid {@link Minipass.Readable}
 77431   */
 77432  const isReadable = (s) => !!s &&
 77433      typeof s === 'object' &&
 77434      s instanceof events_1.EventEmitter &&
 77435      typeof s.pipe === 'function' &&
 77436      // node core Writable streams have a pipe() method, but it throws
 77437      s.pipe !== stream_1.default.Writable.prototype.pipe;
 77438  exports.isReadable = isReadable;
 77439  /**
 77440   * Return true if the argument is a valid {@link Minipass.Writable}
 77441   */
 77442  const isWritable = (s) => !!s &&
 77443      typeof s === 'object' &&
 77444      s instanceof events_1.EventEmitter &&
 77445      typeof s.write === 'function' &&
 77446      typeof s.end === 'function';
 77447  exports.isWritable = isWritable;
 77448  const EOF = Symbol('EOF');
 77449  const MAYBE_EMIT_END = Symbol('maybeEmitEnd');
 77450  const EMITTED_END = Symbol('emittedEnd');
 77451  const EMITTING_END = Symbol('emittingEnd');
 77452  const EMITTED_ERROR = Symbol('emittedError');
 77453  const CLOSED = Symbol('closed');
 77454  const READ = Symbol('read');
 77455  const FLUSH = Symbol('flush');
 77456  const FLUSHCHUNK = Symbol('flushChunk');
 77457  const ENCODING = Symbol('encoding');
 77458  const DECODER = Symbol('decoder');
 77459  const FLOWING = Symbol('flowing');
 77460  const PAUSED = Symbol('paused');
 77461  const RESUME = Symbol('resume');
 77462  const BUFFER = Symbol('buffer');
 77463  const PIPES = Symbol('pipes');
 77464  const BUFFERLENGTH = Symbol('bufferLength');
 77465  const BUFFERPUSH = Symbol('bufferPush');
 77466  const BUFFERSHIFT = Symbol('bufferShift');
 77467  const OBJECTMODE = Symbol('objectMode');
 77468  // internal event when stream is destroyed
 77469  const DESTROYED = Symbol('destroyed');
 77470  // internal event when stream has an error
 77471  const ERROR = Symbol('error');
 77472  const EMITDATA = Symbol('emitData');
 77473  const EMITEND = Symbol('emitEnd');
 77474  const EMITEND2 = Symbol('emitEnd2');
 77475  const ASYNC = Symbol('async');
 77476  const ABORT = Symbol('abort');
 77477  const ABORTED = Symbol('aborted');
 77478  const SIGNAL = Symbol('signal');
 77479  const DATALISTENERS = Symbol('dataListeners');
 77480  const DISCARDED = Symbol('discarded');
 77481  const defer = (fn) => Promise.resolve().then(fn);
 77482  const nodefer = (fn) => fn();
 77483  const isEndish = (ev) => ev === 'end' || ev === 'finish' || ev === 'prefinish';
 77484  const isArrayBufferLike = (b) => b instanceof ArrayBuffer ||
 77485      (!!b &&
 77486          typeof b === 'object' &&
 77487          b.constructor &&
 77488          b.constructor.name === 'ArrayBuffer' &&
 77489          b.byteLength >= 0);
 77490  const isArrayBufferView = (b) => !Buffer.isBuffer(b) && ArrayBuffer.isView(b);
 77491  /**
 77492   * Internal class representing a pipe to a destination stream.
 77493   *
 77494   * @internal
 77495   */
 77496  class Pipe {
 77497      src;
 77498      dest;
 77499      opts;
 77500      ondrain;
 77501      constructor(src, dest, opts) {
 77502          this.src = src;
 77503          this.dest = dest;
 77504          this.opts = opts;
 77505          this.ondrain = () => src[RESUME]();
 77506          this.dest.on('drain', this.ondrain);
 77507      }
 77508      unpipe() {
 77509          this.dest.removeListener('drain', this.ondrain);
 77510      }
 77511      // only here for the prototype
 77512      /* c8 ignore start */
 77513      proxyErrors(_er) { }
 77514      /* c8 ignore stop */
 77515      end() {
 77516          this.unpipe();
 77517          if (this.opts.end)
 77518              this.dest.end();
 77519      }
 77520  }
 77521  /**
 77522   * Internal class representing a pipe to a destination stream where
 77523   * errors are proxied.
 77524   *
 77525   * @internal
 77526   */
 77527  class PipeProxyErrors extends Pipe {
 77528      unpipe() {
 77529          this.src.removeListener('error', this.proxyErrors);
 77530          super.unpipe();
 77531      }
 77532      constructor(src, dest, opts) {
 77533          super(src, dest, opts);
 77534          this.proxyErrors = er => dest.emit('error', er);
 77535          src.on('error', this.proxyErrors);
 77536      }
 77537  }
 77538  const isObjectModeOptions = (o) => !!o.objectMode;
 77539  const isEncodingOptions = (o) => !o.objectMode && !!o.encoding && o.encoding !== 'buffer';
 77540  /**
 77541   * Main export, the Minipass class
 77542   *
 77543   * `RType` is the type of data emitted, defaults to Buffer
 77544   *
 77545   * `WType` is the type of data to be written, if RType is buffer or string,
 77546   * then any {@link Minipass.ContiguousData} is allowed.
 77547   *
 77548   * `Events` is the set of event handler signatures that this object
 77549   * will emit, see {@link Minipass.Events}
 77550   */
 77551  class Minipass extends events_1.EventEmitter {
 77552      [FLOWING] = false;
 77553      [PAUSED] = false;
 77554      [PIPES] = [];
 77555      [BUFFER] = [];
 77556      [OBJECTMODE];
 77557      [ENCODING];
 77558      [ASYNC];
 77559      [DECODER];
 77560      [EOF] = false;
 77561      [EMITTED_END] = false;
 77562      [EMITTING_END] = false;
 77563      [CLOSED] = false;
 77564      [EMITTED_ERROR] = null;
 77565      [BUFFERLENGTH] = 0;
 77566      [DESTROYED] = false;
 77567      [SIGNAL];
 77568      [ABORTED] = false;
 77569      [DATALISTENERS] = 0;
 77570      [DISCARDED] = false;
 77571      /**
 77572       * true if the stream can be written
 77573       */
 77574      writable = true;
 77575      /**
 77576       * true if the stream can be read
 77577       */
 77578      readable = true;
 77579      /**
 77580       * If `RType` is Buffer, then options do not need to be provided.
 77581       * Otherwise, an options object must be provided to specify either
 77582       * {@link Minipass.SharedOptions.objectMode} or
 77583       * {@link Minipass.SharedOptions.encoding}, as appropriate.
 77584       */
 77585      constructor(...args) {
 77586          const options = (args[0] ||
 77587              {});
 77588          super();
 77589          if (options.objectMode && typeof options.encoding === 'string') {
 77590              throw new TypeError('Encoding and objectMode may not be used together');
 77591          }
 77592          if (isObjectModeOptions(options)) {
 77593              this[OBJECTMODE] = true;
 77594              this[ENCODING] = null;
 77595          }
 77596          else if (isEncodingOptions(options)) {
 77597              this[ENCODING] = options.encoding;
 77598              this[OBJECTMODE] = false;
 77599          }
 77600          else {
 77601              this[OBJECTMODE] = false;
 77602              this[ENCODING] = null;
 77603          }
 77604          this[ASYNC] = !!options.async;
 77605          this[DECODER] = this[ENCODING]
 77606              ? new string_decoder_1.StringDecoder(this[ENCODING])
 77607              : null;
 77608          //@ts-ignore - private option for debugging and testing
 77609          if (options && options.debugExposeBuffer === true) {
 77610              Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] });
 77611          }
 77612          //@ts-ignore - private option for debugging and testing
 77613          if (options && options.debugExposePipes === true) {
 77614              Object.defineProperty(this, 'pipes', { get: () => this[PIPES] });
 77615          }
 77616          const { signal } = options;
 77617          if (signal) {
 77618              this[SIGNAL] = signal;
 77619              if (signal.aborted) {
 77620                  this[ABORT]();
 77621              }
 77622              else {
 77623                  signal.addEventListener('abort', () => this[ABORT]());
 77624              }
 77625          }
 77626      }
 77627      /**
 77628       * The amount of data stored in the buffer waiting to be read.
 77629       *
 77630       * For Buffer strings, this will be the total byte length.
 77631       * For string encoding streams, this will be the string character length,
 77632       * according to JavaScript's `string.length` logic.
 77633       * For objectMode streams, this is a count of the items waiting to be
 77634       * emitted.
 77635       */
 77636      get bufferLength() {
 77637          return this[BUFFERLENGTH];
 77638      }
 77639      /**
 77640       * The `BufferEncoding` currently in use, or `null`
 77641       */
 77642      get encoding() {
 77643          return this[ENCODING];
 77644      }
 77645      /**
 77646       * @deprecated - This is a read only property
 77647       */
 77648      set encoding(_enc) {
 77649          throw new Error('Encoding must be set at instantiation time');
 77650      }
 77651      /**
 77652       * @deprecated - Encoding may only be set at instantiation time
 77653       */
 77654      setEncoding(_enc) {
 77655          throw new Error('Encoding must be set at instantiation time');
 77656      }
 77657      /**
 77658       * True if this is an objectMode stream
 77659       */
 77660      get objectMode() {
 77661          return this[OBJECTMODE];
 77662      }
 77663      /**
 77664       * @deprecated - This is a read-only property
 77665       */
 77666      set objectMode(_om) {
 77667          throw new Error('objectMode must be set at instantiation time');
 77668      }
 77669      /**
 77670       * true if this is an async stream
 77671       */
 77672      get ['async']() {
 77673          return this[ASYNC];
 77674      }
 77675      /**
 77676       * Set to true to make this stream async.
 77677       *
 77678       * Once set, it cannot be unset, as this would potentially cause incorrect
 77679       * behavior.  Ie, a sync stream can be made async, but an async stream
 77680       * cannot be safely made sync.
 77681       */
 77682      set ['async'](a) {
 77683          this[ASYNC] = this[ASYNC] || !!a;
 77684      }
 77685      // drop everything and get out of the flow completely
 77686      [ABORT]() {
 77687          this[ABORTED] = true;
 77688          this.emit('abort', this[SIGNAL]?.reason);
 77689          this.destroy(this[SIGNAL]?.reason);
 77690      }
 77691      /**
 77692       * True if the stream has been aborted.
 77693       */
 77694      get aborted() {
 77695          return this[ABORTED];
 77696      }
 77697      /**
 77698       * No-op setter. Stream aborted status is set via the AbortSignal provided
 77699       * in the constructor options.
 77700       */
 77701      set aborted(_) { }
 77702      write(chunk, encoding, cb) {
 77703          if (this[ABORTED])
 77704              return false;
 77705          if (this[EOF])
 77706              throw new Error('write after end');
 77707          if (this[DESTROYED]) {
 77708              this.emit('error', Object.assign(new Error('Cannot call write after a stream was destroyed'), { code: 'ERR_STREAM_DESTROYED' }));
 77709              return true;
 77710          }
 77711          if (typeof encoding === 'function') {
 77712              cb = encoding;
 77713              encoding = 'utf8';
 77714          }
 77715          if (!encoding)
 77716              encoding = 'utf8';
 77717          const fn = this[ASYNC] ? defer : nodefer;
 77718          // convert array buffers and typed array views into buffers
 77719          // at some point in the future, we may want to do the opposite!
 77720          // leave strings and buffers as-is
 77721          // anything is only allowed if in object mode, so throw
 77722          if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {
 77723              if (isArrayBufferView(chunk)) {
 77724                  //@ts-ignore - sinful unsafe type changing
 77725                  chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
 77726              }
 77727              else if (isArrayBufferLike(chunk)) {
 77728                  //@ts-ignore - sinful unsafe type changing
 77729                  chunk = Buffer.from(chunk);
 77730              }
 77731              else if (typeof chunk !== 'string') {
 77732                  throw new Error('Non-contiguous data written to non-objectMode stream');
 77733              }
 77734          }
 77735          // handle object mode up front, since it's simpler
 77736          // this yields better performance, fewer checks later.
 77737          if (this[OBJECTMODE]) {
 77738              // maybe impossible?
 77739              /* c8 ignore start */
 77740              if (this[FLOWING] && this[BUFFERLENGTH] !== 0)
 77741                  this[FLUSH](true);
 77742              /* c8 ignore stop */
 77743              if (this[FLOWING])
 77744                  this.emit('data', chunk);
 77745              else
 77746                  this[BUFFERPUSH](chunk);
 77747              if (this[BUFFERLENGTH] !== 0)
 77748                  this.emit('readable');
 77749              if (cb)
 77750                  fn(cb);
 77751              return this[FLOWING];
 77752          }
 77753          // at this point the chunk is a buffer or string
 77754          // don't buffer it up or send it to the decoder
 77755          if (!chunk.length) {
 77756              if (this[BUFFERLENGTH] !== 0)
 77757                  this.emit('readable');
 77758              if (cb)
 77759                  fn(cb);
 77760              return this[FLOWING];
 77761          }
 77762          // fast-path writing strings of same encoding to a stream with
 77763          // an empty buffer, skipping the buffer/decoder dance
 77764          if (typeof chunk === 'string' &&
 77765              // unless it is a string already ready for us to use
 77766              !(encoding === this[ENCODING] && !this[DECODER]?.lastNeed)) {
 77767              //@ts-ignore - sinful unsafe type change
 77768              chunk = Buffer.from(chunk, encoding);
 77769          }
 77770          if (Buffer.isBuffer(chunk) && this[ENCODING]) {
 77771              //@ts-ignore - sinful unsafe type change
 77772              chunk = this[DECODER].write(chunk);
 77773          }
 77774          // Note: flushing CAN potentially switch us into not-flowing mode
 77775          if (this[FLOWING] && this[BUFFERLENGTH] !== 0)
 77776              this[FLUSH](true);
 77777          if (this[FLOWING])
 77778              this.emit('data', chunk);
 77779          else
 77780              this[BUFFERPUSH](chunk);
 77781          if (this[BUFFERLENGTH] !== 0)
 77782              this.emit('readable');
 77783          if (cb)
 77784              fn(cb);
 77785          return this[FLOWING];
 77786      }
 77787      /**
 77788       * Low-level explicit read method.
 77789       *
 77790       * In objectMode, the argument is ignored, and one item is returned if
 77791       * available.
 77792       *
 77793       * `n` is the number of bytes (or in the case of encoding streams,
 77794       * characters) to consume. If `n` is not provided, then the entire buffer
 77795       * is returned, or `null` is returned if no data is available.
 77796       *
 77797       * If `n` is greater that the amount of data in the internal buffer,
 77798       * then `null` is returned.
 77799       */
 77800      read(n) {
 77801          if (this[DESTROYED])
 77802              return null;
 77803          this[DISCARDED] = false;
 77804          if (this[BUFFERLENGTH] === 0 ||
 77805              n === 0 ||
 77806              (n && n > this[BUFFERLENGTH])) {
 77807              this[MAYBE_EMIT_END]();
 77808              return null;
 77809          }
 77810          if (this[OBJECTMODE])
 77811              n = null;
 77812          if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {
 77813              // not object mode, so if we have an encoding, then RType is string
 77814              // otherwise, must be Buffer
 77815              this[BUFFER] = [
 77816                  (this[ENCODING]
 77817                      ? this[BUFFER].join('')
 77818                      : Buffer.concat(this[BUFFER], this[BUFFERLENGTH])),
 77819              ];
 77820          }
 77821          const ret = this[READ](n || null, this[BUFFER][0]);
 77822          this[MAYBE_EMIT_END]();
 77823          return ret;
 77824      }
 77825      [READ](n, chunk) {
 77826          if (this[OBJECTMODE])
 77827              this[BUFFERSHIFT]();
 77828          else {
 77829              const c = chunk;
 77830              if (n === c.length || n === null)
 77831                  this[BUFFERSHIFT]();
 77832              else if (typeof c === 'string') {
 77833                  this[BUFFER][0] = c.slice(n);
 77834                  chunk = c.slice(0, n);
 77835                  this[BUFFERLENGTH] -= n;
 77836              }
 77837              else {
 77838                  this[BUFFER][0] = c.subarray(n);
 77839                  chunk = c.subarray(0, n);
 77840                  this[BUFFERLENGTH] -= n;
 77841              }
 77842          }
 77843          this.emit('data', chunk);
 77844          if (!this[BUFFER].length && !this[EOF])
 77845              this.emit('drain');
 77846          return chunk;
 77847      }
 77848      end(chunk, encoding, cb) {
 77849          if (typeof chunk === 'function') {
 77850              cb = chunk;
 77851              chunk = undefined;
 77852          }
 77853          if (typeof encoding === 'function') {
 77854              cb = encoding;
 77855              encoding = 'utf8';
 77856          }
 77857          if (chunk !== undefined)
 77858              this.write(chunk, encoding);
 77859          if (cb)
 77860              this.once('end', cb);
 77861          this[EOF] = true;
 77862          this.writable = false;
 77863          // if we haven't written anything, then go ahead and emit,
 77864          // even if we're not reading.
 77865          // we'll re-emit if a new 'end' listener is added anyway.
 77866          // This makes MP more suitable to write-only use cases.
 77867          if (this[FLOWING] || !this[PAUSED])
 77868              this[MAYBE_EMIT_END]();
 77869          return this;
 77870      }
 77871      // don't let the internal resume be overwritten
 77872      [RESUME]() {
 77873          if (this[DESTROYED])
 77874              return;
 77875          if (!this[DATALISTENERS] && !this[PIPES].length) {
 77876              this[DISCARDED] = true;
 77877          }
 77878          this[PAUSED] = false;
 77879          this[FLOWING] = true;
 77880          this.emit('resume');
 77881          if (this[BUFFER].length)
 77882              this[FLUSH]();
 77883          else if (this[EOF])
 77884              this[MAYBE_EMIT_END]();
 77885          else
 77886              this.emit('drain');
 77887      }
 77888      /**
 77889       * Resume the stream if it is currently in a paused state
 77890       *
 77891       * If called when there are no pipe destinations or `data` event listeners,
 77892       * this will place the stream in a "discarded" state, where all data will
 77893       * be thrown away. The discarded state is removed if a pipe destination or
 77894       * data handler is added, if pause() is called, or if any synchronous or
 77895       * asynchronous iteration is started.
 77896       */
 77897      resume() {
 77898          return this[RESUME]();
 77899      }
 77900      /**
 77901       * Pause the stream
 77902       */
 77903      pause() {
 77904          this[FLOWING] = false;
 77905          this[PAUSED] = true;
 77906          this[DISCARDED] = false;
 77907      }
 77908      /**
 77909       * true if the stream has been forcibly destroyed
 77910       */
 77911      get destroyed() {
 77912          return this[DESTROYED];
 77913      }
 77914      /**
 77915       * true if the stream is currently in a flowing state, meaning that
 77916       * any writes will be immediately emitted.
 77917       */
 77918      get flowing() {
 77919          return this[FLOWING];
 77920      }
 77921      /**
 77922       * true if the stream is currently in a paused state
 77923       */
 77924      get paused() {
 77925          return this[PAUSED];
 77926      }
 77927      [BUFFERPUSH](chunk) {
 77928          if (this[OBJECTMODE])
 77929              this[BUFFERLENGTH] += 1;
 77930          else
 77931              this[BUFFERLENGTH] += chunk.length;
 77932          this[BUFFER].push(chunk);
 77933      }
 77934      [BUFFERSHIFT]() {
 77935          if (this[OBJECTMODE])
 77936              this[BUFFERLENGTH] -= 1;
 77937          else
 77938              this[BUFFERLENGTH] -= this[BUFFER][0].length;
 77939          return this[BUFFER].shift();
 77940      }
 77941      [FLUSH](noDrain = false) {
 77942          do { } while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) &&
 77943              this[BUFFER].length);
 77944          if (!noDrain && !this[BUFFER].length && !this[EOF])
 77945              this.emit('drain');
 77946      }
 77947      [FLUSHCHUNK](chunk) {
 77948          this.emit('data', chunk);
 77949          return this[FLOWING];
 77950      }
 77951      /**
 77952       * Pipe all data emitted by this stream into the destination provided.
 77953       *
 77954       * Triggers the flow of data.
 77955       */
 77956      pipe(dest, opts) {
 77957          if (this[DESTROYED])
 77958              return dest;
 77959          this[DISCARDED] = false;
 77960          const ended = this[EMITTED_END];
 77961          opts = opts || {};
 77962          if (dest === proc.stdout || dest === proc.stderr)
 77963              opts.end = false;
 77964          else
 77965              opts.end = opts.end !== false;
 77966          opts.proxyErrors = !!opts.proxyErrors;
 77967          // piping an ended stream ends immediately
 77968          if (ended) {
 77969              if (opts.end)
 77970                  dest.end();
 77971          }
 77972          else {
 77973              // "as" here just ignores the WType, which pipes don't care about,
 77974              // since they're only consuming from us, and writing to the dest
 77975              this[PIPES].push(!opts.proxyErrors
 77976                  ? new Pipe(this, dest, opts)
 77977                  : new PipeProxyErrors(this, dest, opts));
 77978              if (this[ASYNC])
 77979                  defer(() => this[RESUME]());
 77980              else
 77981                  this[RESUME]();
 77982          }
 77983          return dest;
 77984      }
 77985      /**
 77986       * Fully unhook a piped destination stream.
 77987       *
 77988       * If the destination stream was the only consumer of this stream (ie,
 77989       * there are no other piped destinations or `'data'` event listeners)
 77990       * then the flow of data will stop until there is another consumer or
 77991       * {@link Minipass#resume} is explicitly called.
 77992       */
 77993      unpipe(dest) {
 77994          const p = this[PIPES].find(p => p.dest === dest);
 77995          if (p) {
 77996              if (this[PIPES].length === 1) {
 77997                  if (this[FLOWING] && this[DATALISTENERS] === 0) {
 77998                      this[FLOWING] = false;
 77999                  }
 78000                  this[PIPES] = [];
 78001              }
 78002              else
 78003                  this[PIPES].splice(this[PIPES].indexOf(p), 1);
 78004              p.unpipe();
 78005          }
 78006      }
 78007      /**
 78008       * Alias for {@link Minipass#on}
 78009       */
 78010      addListener(ev, handler) {
 78011          return this.on(ev, handler);
 78012      }
 78013      /**
 78014       * Mostly identical to `EventEmitter.on`, with the following
 78015       * behavior differences to prevent data loss and unnecessary hangs:
 78016       *
 78017       * - Adding a 'data' event handler will trigger the flow of data
 78018       *
 78019       * - Adding a 'readable' event handler when there is data waiting to be read
 78020       *   will cause 'readable' to be emitted immediately.
 78021       *
 78022       * - Adding an 'endish' event handler ('end', 'finish', etc.) which has
 78023       *   already passed will cause the event to be emitted immediately and all
 78024       *   handlers removed.
 78025       *
 78026       * - Adding an 'error' event handler after an error has been emitted will
 78027       *   cause the event to be re-emitted immediately with the error previously
 78028       *   raised.
 78029       */
 78030      on(ev, handler) {
 78031          const ret = super.on(ev, handler);
 78032          if (ev === 'data') {
 78033              this[DISCARDED] = false;
 78034              this[DATALISTENERS]++;
 78035              if (!this[PIPES].length && !this[FLOWING]) {
 78036                  this[RESUME]();
 78037              }
 78038          }
 78039          else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) {
 78040              super.emit('readable');
 78041          }
 78042          else if (isEndish(ev) && this[EMITTED_END]) {
 78043              super.emit(ev);
 78044              this.removeAllListeners(ev);
 78045          }
 78046          else if (ev === 'error' && this[EMITTED_ERROR]) {
 78047              const h = handler;
 78048              if (this[ASYNC])
 78049                  defer(() => h.call(this, this[EMITTED_ERROR]));
 78050              else
 78051                  h.call(this, this[EMITTED_ERROR]);
 78052          }
 78053          return ret;
 78054      }
 78055      /**
 78056       * Alias for {@link Minipass#off}
 78057       */
 78058      removeListener(ev, handler) {
 78059          return this.off(ev, handler);
 78060      }
 78061      /**
 78062       * Mostly identical to `EventEmitter.off`
 78063       *
 78064       * If a 'data' event handler is removed, and it was the last consumer
 78065       * (ie, there are no pipe destinations or other 'data' event listeners),
 78066       * then the flow of data will stop until there is another consumer or
 78067       * {@link Minipass#resume} is explicitly called.
 78068       */
 78069      off(ev, handler) {
 78070          const ret = super.off(ev, handler);
 78071          // if we previously had listeners, and now we don't, and we don't
 78072          // have any pipes, then stop the flow, unless it's been explicitly
 78073          // put in a discarded flowing state via stream.resume().
 78074          if (ev === 'data') {
 78075              this[DATALISTENERS] = this.listeners('data').length;
 78076              if (this[DATALISTENERS] === 0 &&
 78077                  !this[DISCARDED] &&
 78078                  !this[PIPES].length) {
 78079                  this[FLOWING] = false;
 78080              }
 78081          }
 78082          return ret;
 78083      }
 78084      /**
 78085       * Mostly identical to `EventEmitter.removeAllListeners`
 78086       *
 78087       * If all 'data' event handlers are removed, and they were the last consumer
 78088       * (ie, there are no pipe destinations), then the flow of data will stop
 78089       * until there is another consumer or {@link Minipass#resume} is explicitly
 78090       * called.
 78091       */
 78092      removeAllListeners(ev) {
 78093          const ret = super.removeAllListeners(ev);
 78094          if (ev === 'data' || ev === undefined) {
 78095              this[DATALISTENERS] = 0;
 78096              if (!this[DISCARDED] && !this[PIPES].length) {
 78097                  this[FLOWING] = false;
 78098              }
 78099          }
 78100          return ret;
 78101      }
 78102      /**
 78103       * true if the 'end' event has been emitted
 78104       */
 78105      get emittedEnd() {
 78106          return this[EMITTED_END];
 78107      }
 78108      [MAYBE_EMIT_END]() {
 78109          if (!this[EMITTING_END] &&
 78110              !this[EMITTED_END] &&
 78111              !this[DESTROYED] &&
 78112              this[BUFFER].length === 0 &&
 78113              this[EOF]) {
 78114              this[EMITTING_END] = true;
 78115              this.emit('end');
 78116              this.emit('prefinish');
 78117              this.emit('finish');
 78118              if (this[CLOSED])
 78119                  this.emit('close');
 78120              this[EMITTING_END] = false;
 78121          }
 78122      }
 78123      /**
 78124       * Mostly identical to `EventEmitter.emit`, with the following
 78125       * behavior differences to prevent data loss and unnecessary hangs:
 78126       *
 78127       * If the stream has been destroyed, and the event is something other
 78128       * than 'close' or 'error', then `false` is returned and no handlers
 78129       * are called.
 78130       *
 78131       * If the event is 'end', and has already been emitted, then the event
 78132       * is ignored. If the stream is in a paused or non-flowing state, then
 78133       * the event will be deferred until data flow resumes. If the stream is
 78134       * async, then handlers will be called on the next tick rather than
 78135       * immediately.
 78136       *
 78137       * If the event is 'close', and 'end' has not yet been emitted, then
 78138       * the event will be deferred until after 'end' is emitted.
 78139       *
 78140       * If the event is 'error', and an AbortSignal was provided for the stream,
 78141       * and there are no listeners, then the event is ignored, matching the
 78142       * behavior of node core streams in the presense of an AbortSignal.
 78143       *
 78144       * If the event is 'finish' or 'prefinish', then all listeners will be
 78145       * removed after emitting the event, to prevent double-firing.
 78146       */
 78147      emit(ev, ...args) {
 78148          const data = args[0];
 78149          // error and close are only events allowed after calling destroy()
 78150          if (ev !== 'error' &&
 78151              ev !== 'close' &&
 78152              ev !== DESTROYED &&
 78153              this[DESTROYED]) {
 78154              return false;
 78155          }
 78156          else if (ev === 'data') {
 78157              return !this[OBJECTMODE] && !data
 78158                  ? false
 78159                  : this[ASYNC]
 78160                      ? (defer(() => this[EMITDATA](data)), true)
 78161                      : this[EMITDATA](data);
 78162          }
 78163          else if (ev === 'end') {
 78164              return this[EMITEND]();
 78165          }
 78166          else if (ev === 'close') {
 78167              this[CLOSED] = true;
 78168              // don't emit close before 'end' and 'finish'
 78169              if (!this[EMITTED_END] && !this[DESTROYED])
 78170                  return false;
 78171              const ret = super.emit('close');
 78172              this.removeAllListeners('close');
 78173              return ret;
 78174          }
 78175          else if (ev === 'error') {
 78176              this[EMITTED_ERROR] = data;
 78177              super.emit(ERROR, data);
 78178              const ret = !this[SIGNAL] || this.listeners('error').length
 78179                  ? super.emit('error', data)
 78180                  : false;
 78181              this[MAYBE_EMIT_END]();
 78182              return ret;
 78183          }
 78184          else if (ev === 'resume') {
 78185              const ret = super.emit('resume');
 78186              this[MAYBE_EMIT_END]();
 78187              return ret;
 78188          }
 78189          else if (ev === 'finish' || ev === 'prefinish') {
 78190              const ret = super.emit(ev);
 78191              this.removeAllListeners(ev);
 78192              return ret;
 78193          }
 78194          // Some other unknown event
 78195          const ret = super.emit(ev, ...args);
 78196          this[MAYBE_EMIT_END]();
 78197          return ret;
 78198      }
 78199      [EMITDATA](data) {
 78200          for (const p of this[PIPES]) {
 78201              if (p.dest.write(data) === false)
 78202                  this.pause();
 78203          }
 78204          const ret = this[DISCARDED] ? false : super.emit('data', data);
 78205          this[MAYBE_EMIT_END]();
 78206          return ret;
 78207      }
 78208      [EMITEND]() {
 78209          if (this[EMITTED_END])
 78210              return false;
 78211          this[EMITTED_END] = true;
 78212          this.readable = false;
 78213          return this[ASYNC]
 78214              ? (defer(() => this[EMITEND2]()), true)
 78215              : this[EMITEND2]();
 78216      }
 78217      [EMITEND2]() {
 78218          if (this[DECODER]) {
 78219              const data = this[DECODER].end();
 78220              if (data) {
 78221                  for (const p of this[PIPES]) {
 78222                      p.dest.write(data);
 78223                  }
 78224                  if (!this[DISCARDED])
 78225                      super.emit('data', data);
 78226              }
 78227          }
 78228          for (const p of this[PIPES]) {
 78229              p.end();
 78230          }
 78231          const ret = super.emit('end');
 78232          this.removeAllListeners('end');
 78233          return ret;
 78234      }
 78235      /**
 78236       * Return a Promise that resolves to an array of all emitted data once
 78237       * the stream ends.
 78238       */
 78239      async collect() {
 78240          const buf = Object.assign([], {
 78241              dataLength: 0,
 78242          });
 78243          if (!this[OBJECTMODE])
 78244              buf.dataLength = 0;
 78245          // set the promise first, in case an error is raised
 78246          // by triggering the flow here.
 78247          const p = this.promise();
 78248          this.on('data', c => {
 78249              buf.push(c);
 78250              if (!this[OBJECTMODE])
 78251                  buf.dataLength += c.length;
 78252          });
 78253          await p;
 78254          return buf;
 78255      }
 78256      /**
 78257       * Return a Promise that resolves to the concatenation of all emitted data
 78258       * once the stream ends.
 78259       *
 78260       * Not allowed on objectMode streams.
 78261       */
 78262      async concat() {
 78263          if (this[OBJECTMODE]) {
 78264              throw new Error('cannot concat in objectMode');
 78265          }
 78266          const buf = await this.collect();
 78267          return (this[ENCODING]
 78268              ? buf.join('')
 78269              : Buffer.concat(buf, buf.dataLength));
 78270      }
 78271      /**
 78272       * Return a void Promise that resolves once the stream ends.
 78273       */
 78274      async promise() {
 78275          return new Promise((resolve, reject) => {
 78276              this.on(DESTROYED, () => reject(new Error('stream destroyed')));
 78277              this.on('error', er => reject(er));
 78278              this.on('end', () => resolve());
 78279          });
 78280      }
 78281      /**
 78282       * Asynchronous `for await of` iteration.
 78283       *
 78284       * This will continue emitting all chunks until the stream terminates.
 78285       */
 78286      [Symbol.asyncIterator]() {
 78287          // set this up front, in case the consumer doesn't call next()
 78288          // right away.
 78289          this[DISCARDED] = false;
 78290          let stopped = false;
 78291          const stop = async () => {
 78292              this.pause();
 78293              stopped = true;
 78294              return { value: undefined, done: true };
 78295          };
 78296          const next = () => {
 78297              if (stopped)
 78298                  return stop();
 78299              const res = this.read();
 78300              if (res !== null)
 78301                  return Promise.resolve({ done: false, value: res });
 78302              if (this[EOF])
 78303                  return stop();
 78304              let resolve;
 78305              let reject;
 78306              const onerr = (er) => {
 78307                  this.off('data', ondata);
 78308                  this.off('end', onend);
 78309                  this.off(DESTROYED, ondestroy);
 78310                  stop();
 78311                  reject(er);
 78312              };
 78313              const ondata = (value) => {
 78314                  this.off('error', onerr);
 78315                  this.off('end', onend);
 78316                  this.off(DESTROYED, ondestroy);
 78317                  this.pause();
 78318                  resolve({ value, done: !!this[EOF] });
 78319              };
 78320              const onend = () => {
 78321                  this.off('error', onerr);
 78322                  this.off('data', ondata);
 78323                  this.off(DESTROYED, ondestroy);
 78324                  stop();
 78325                  resolve({ done: true, value: undefined });
 78326              };
 78327              const ondestroy = () => onerr(new Error('stream destroyed'));
 78328              return new Promise((res, rej) => {
 78329                  reject = rej;
 78330                  resolve = res;
 78331                  this.once(DESTROYED, ondestroy);
 78332                  this.once('error', onerr);
 78333                  this.once('end', onend);
 78334                  this.once('data', ondata);
 78335              });
 78336          };
 78337          return {
 78338              next,
 78339              throw: stop,
 78340              return: stop,
 78341              [Symbol.asyncIterator]() {
 78342                  return this;
 78343              },
 78344          };
 78345      }
 78346      /**
 78347       * Synchronous `for of` iteration.
 78348       *
 78349       * The iteration will terminate when the internal buffer runs out, even
 78350       * if the stream has not yet terminated.
 78351       */
 78352      [Symbol.iterator]() {
 78353          // set this up front, in case the consumer doesn't call next()
 78354          // right away.
 78355          this[DISCARDED] = false;
 78356          let stopped = false;
 78357          const stop = () => {
 78358              this.pause();
 78359              this.off(ERROR, stop);
 78360              this.off(DESTROYED, stop);
 78361              this.off('end', stop);
 78362              stopped = true;
 78363              return { done: true, value: undefined };
 78364          };
 78365          const next = () => {
 78366              if (stopped)
 78367                  return stop();
 78368              const value = this.read();
 78369              return value === null ? stop() : { done: false, value };
 78370          };
 78371          this.once('end', stop);
 78372          this.once(ERROR, stop);
 78373          this.once(DESTROYED, stop);
 78374          return {
 78375              next,
 78376              throw: stop,
 78377              return: stop,
 78378              [Symbol.iterator]() {
 78379                  return this;
 78380              },
 78381          };
 78382      }
 78383      /**
 78384       * Destroy a stream, preventing it from being used for any further purpose.
 78385       *
 78386       * If the stream has a `close()` method, then it will be called on
 78387       * destruction.
 78388       *
 78389       * After destruction, any attempt to write data, read data, or emit most
 78390       * events will be ignored.
 78391       *
 78392       * If an error argument is provided, then it will be emitted in an
 78393       * 'error' event.
 78394       */
 78395      destroy(er) {
 78396          if (this[DESTROYED]) {
 78397              if (er)
 78398                  this.emit('error', er);
 78399              else
 78400                  this.emit(DESTROYED);
 78401              return this;
 78402          }
 78403          this[DESTROYED] = true;
 78404          this[DISCARDED] = true;
 78405          // throw away all buffered data, it's never coming out
 78406          this[BUFFER].length = 0;
 78407          this[BUFFERLENGTH] = 0;
 78408          const wc = this;
 78409          if (typeof wc.close === 'function' && !this[CLOSED])
 78410              wc.close();
 78411          if (er)
 78412              this.emit('error', er);
 78413          // if no error to emit, still reject pending promises
 78414          else
 78415              this.emit(DESTROYED);
 78416          return this;
 78417      }
 78418      /**
 78419       * Alias for {@link isStream}
 78420       *
 78421       * Former export location, maintained for backwards compatibility.
 78422       *
 78423       * @deprecated
 78424       */
 78425      static get isStream() {
 78426          return exports.isStream;
 78427      }
 78428  }
 78429  exports.Minipass = Minipass;
 78430  //# sourceMappingURL=index.js.map
 78431  
 78432  /***/ }),
 78433  
 78434  /***/ 51081:
 78435  /***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
 78436  
 78437  "use strict";
 78438  
 78439  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
 78440      if (k2 === undefined) k2 = k;
 78441      var desc = Object.getOwnPropertyDescriptor(m, k);
 78442      if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
 78443        desc = { enumerable: true, get: function() { return m[k]; } };
 78444      }
 78445      Object.defineProperty(o, k2, desc);
 78446  }) : (function(o, m, k, k2) {
 78447      if (k2 === undefined) k2 = k;
 78448      o[k2] = m[k];
 78449  }));
 78450  var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
 78451      Object.defineProperty(o, "default", { enumerable: true, value: v });
 78452  }) : function(o, v) {
 78453      o["default"] = v;
 78454  });
 78455  var __importStar = (this && this.__importStar) || function (mod) {
 78456      if (mod && mod.__esModule) return mod;
 78457      var result = {};
 78458      if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
 78459      __setModuleDefault(result, mod);
 78460      return result;
 78461  };
 78462  Object.defineProperty(exports, "__esModule", ({ value: true }));
 78463  exports.PathScurry = exports.Path = exports.PathScurryDarwin = exports.PathScurryPosix = exports.PathScurryWin32 = exports.PathScurryBase = exports.PathPosix = exports.PathWin32 = exports.PathBase = exports.ChildrenCache = exports.ResolveCache = void 0;
 78464  const lru_cache_1 = __nccwpck_require__(66091);
 78465  const path_1 = __nccwpck_require__(71017);
 78466  const url_1 = __nccwpck_require__(57310);
 78467  const actualFS = __importStar(__nccwpck_require__(57147));
 78468  const fs_1 = __nccwpck_require__(57147);
 78469  const realpathSync = fs_1.realpathSync.native;
 78470  // TODO: test perf of fs/promises realpath vs realpathCB,
 78471  // since the promises one uses realpath.native
 78472  const promises_1 = __nccwpck_require__(73292);
 78473  const minipass_1 = __nccwpck_require__(14968);
 78474  const defaultFS = {
 78475      lstatSync: fs_1.lstatSync,
 78476      readdir: fs_1.readdir,
 78477      readdirSync: fs_1.readdirSync,
 78478      readlinkSync: fs_1.readlinkSync,
 78479      realpathSync,
 78480      promises: {
 78481          lstat: promises_1.lstat,
 78482          readdir: promises_1.readdir,
 78483          readlink: promises_1.readlink,
 78484          realpath: promises_1.realpath,
 78485      },
 78486  };
 78487  // if they just gave us require('fs') then use our default
 78488  const fsFromOption = (fsOption) => !fsOption || fsOption === defaultFS || fsOption === actualFS
 78489      ? defaultFS
 78490      : {
 78491          ...defaultFS,
 78492          ...fsOption,
 78493          promises: {
 78494              ...defaultFS.promises,
 78495              ...(fsOption.promises || {}),
 78496          },
 78497      };
 78498  // turn something like //?/c:/ into c:\
 78499  const uncDriveRegexp = /^\\\\\?\\([a-z]:)\\?$/i;
 78500  const uncToDrive = (rootPath) => rootPath.replace(/\//g, '\\').replace(uncDriveRegexp, '$1\\');
 78501  // windows paths are separated by either / or \
 78502  const eitherSep = /[\\\/]/;
 78503  const UNKNOWN = 0; // may not even exist, for all we know
 78504  const IFIFO = 0b0001;
 78505  const IFCHR = 0b0010;
 78506  const IFDIR = 0b0100;
 78507  const IFBLK = 0b0110;
 78508  const IFREG = 0b1000;
 78509  const IFLNK = 0b1010;
 78510  const IFSOCK = 0b1100;
 78511  const IFMT = 0b1111;
 78512  // mask to unset low 4 bits
 78513  const IFMT_UNKNOWN = ~IFMT;
 78514  // set after successfully calling readdir() and getting entries.
 78515  const READDIR_CALLED = 0b0000_0001_0000;
 78516  // set after a successful lstat()
 78517  const LSTAT_CALLED = 0b0000_0010_0000;
 78518  // set if an entry (or one of its parents) is definitely not a dir
 78519  const ENOTDIR = 0b0000_0100_0000;
 78520  // set if an entry (or one of its parents) does not exist
 78521  // (can also be set on lstat errors like EACCES or ENAMETOOLONG)
 78522  const ENOENT = 0b0000_1000_0000;
 78523  // cannot have child entries -- also verify &IFMT is either IFDIR or IFLNK
 78524  // set if we fail to readlink
 78525  const ENOREADLINK = 0b0001_0000_0000;
 78526  // set if we know realpath() will fail
 78527  const ENOREALPATH = 0b0010_0000_0000;
 78528  const ENOCHILD = ENOTDIR | ENOENT | ENOREALPATH;
 78529  const TYPEMASK = 0b0011_1111_1111;
 78530  const entToType = (s) => s.isFile()
 78531      ? IFREG
 78532      : s.isDirectory()
 78533          ? IFDIR
 78534          : s.isSymbolicLink()
 78535              ? IFLNK
 78536              : s.isCharacterDevice()
 78537                  ? IFCHR
 78538                  : s.isBlockDevice()
 78539                      ? IFBLK
 78540                      : s.isSocket()
 78541                          ? IFSOCK
 78542                          : s.isFIFO()
 78543                              ? IFIFO
 78544                              : UNKNOWN;
 78545  // normalize unicode path names
 78546  const normalizeCache = new Map();
 78547  const normalize = (s) => {
 78548      const c = normalizeCache.get(s);
 78549      if (c)
 78550          return c;
 78551      const n = s.normalize('NFKD');
 78552      normalizeCache.set(s, n);
 78553      return n;
 78554  };
 78555  const normalizeNocaseCache = new Map();
 78556  const normalizeNocase = (s) => {
 78557      const c = normalizeNocaseCache.get(s);
 78558      if (c)
 78559          return c;
 78560      const n = normalize(s.toLowerCase());
 78561      normalizeNocaseCache.set(s, n);
 78562      return n;
 78563  };
 78564  /**
 78565   * An LRUCache for storing resolved path strings or Path objects.
 78566   * @internal
 78567   */
 78568  class ResolveCache extends lru_cache_1.LRUCache {
 78569      constructor() {
 78570          super({ max: 256 });
 78571      }
 78572  }
 78573  exports.ResolveCache = ResolveCache;
 78574  // In order to prevent blowing out the js heap by allocating hundreds of
 78575  // thousands of Path entries when walking extremely large trees, the "children"
 78576  // in this tree are represented by storing an array of Path entries in an
 78577  // LRUCache, indexed by the parent.  At any time, Path.children() may return an
 78578  // empty array, indicating that it doesn't know about any of its children, and
 78579  // thus has to rebuild that cache.  This is fine, it just means that we don't
 78580  // benefit as much from having the cached entries, but huge directory walks
 78581  // don't blow out the stack, and smaller ones are still as fast as possible.
 78582  //
 78583  //It does impose some complexity when building up the readdir data, because we
 78584  //need to pass a reference to the children array that we started with.
 78585  /**
 78586   * an LRUCache for storing child entries.
 78587   * @internal
 78588   */
 78589  class ChildrenCache extends lru_cache_1.LRUCache {
 78590      constructor(maxSize = 16 * 1024) {
 78591          super({
 78592              maxSize,
 78593              // parent + children
 78594              sizeCalculation: a => a.length + 1,
 78595          });
 78596      }
 78597  }
 78598  exports.ChildrenCache = ChildrenCache;
 78599  const setAsCwd = Symbol('PathScurry setAsCwd');
 78600  /**
 78601   * Path objects are sort of like a super-powered
 78602   * {@link https://nodejs.org/docs/latest/api/fs.html#class-fsdirent fs.Dirent}
 78603   *
 78604   * Each one represents a single filesystem entry on disk, which may or may not
 78605   * exist. It includes methods for reading various types of information via
 78606   * lstat, readlink, and readdir, and caches all information to the greatest
 78607   * degree possible.
 78608   *
 78609   * Note that fs operations that would normally throw will instead return an
 78610   * "empty" value. This is in order to prevent excessive overhead from error
 78611   * stack traces.
 78612   */
 78613  class PathBase {
 78614      /**
 78615       * the basename of this path
 78616       *
 78617       * **Important**: *always* test the path name against any test string
 78618       * usingthe {@link isNamed} method, and not by directly comparing this
 78619       * string. Otherwise, unicode path strings that the system sees as identical
 78620       * will not be properly treated as the same path, leading to incorrect
 78621       * behavior and possible security issues.
 78622       */
 78623      name;
 78624      /**
 78625       * the Path entry corresponding to the path root.
 78626       *
 78627       * @internal
 78628       */
 78629      root;
 78630      /**
 78631       * All roots found within the current PathScurry family
 78632       *
 78633       * @internal
 78634       */
 78635      roots;
 78636      /**
 78637       * a reference to the parent path, or undefined in the case of root entries
 78638       *
 78639       * @internal
 78640       */
 78641      parent;
 78642      /**
 78643       * boolean indicating whether paths are compared case-insensitively
 78644       * @internal
 78645       */
 78646      nocase;
 78647      // potential default fs override
 78648      #fs;
 78649      // Stats fields
 78650      #dev;
 78651      get dev() {
 78652          return this.#dev;
 78653      }
 78654      #mode;
 78655      get mode() {
 78656          return this.#mode;
 78657      }
 78658      #nlink;
 78659      get nlink() {
 78660          return this.#nlink;
 78661      }
 78662      #uid;
 78663      get uid() {
 78664          return this.#uid;
 78665      }
 78666      #gid;
 78667      get gid() {
 78668          return this.#gid;
 78669      }
 78670      #rdev;
 78671      get rdev() {
 78672          return this.#rdev;
 78673      }
 78674      #blksize;
 78675      get blksize() {
 78676          return this.#blksize;
 78677      }
 78678      #ino;
 78679      get ino() {
 78680          return this.#ino;
 78681      }
 78682      #size;
 78683      get size() {
 78684          return this.#size;
 78685      }
 78686      #blocks;
 78687      get blocks() {
 78688          return this.#blocks;
 78689      }
 78690      #atimeMs;
 78691      get atimeMs() {
 78692          return this.#atimeMs;
 78693      }
 78694      #mtimeMs;
 78695      get mtimeMs() {
 78696          return this.#mtimeMs;
 78697      }
 78698      #ctimeMs;
 78699      get ctimeMs() {
 78700          return this.#ctimeMs;
 78701      }
 78702      #birthtimeMs;
 78703      get birthtimeMs() {
 78704          return this.#birthtimeMs;
 78705      }
 78706      #atime;
 78707      get atime() {
 78708          return this.#atime;
 78709      }
 78710      #mtime;
 78711      get mtime() {
 78712          return this.#mtime;
 78713      }
 78714      #ctime;
 78715      get ctime() {
 78716          return this.#ctime;
 78717      }
 78718      #birthtime;
 78719      get birthtime() {
 78720          return this.#birthtime;
 78721      }
 78722      #matchName;
 78723      #depth;
 78724      #fullpath;
 78725      #fullpathPosix;
 78726      #relative;
 78727      #relativePosix;
 78728      #type;
 78729      #children;
 78730      #linkTarget;
 78731      #realpath;
 78732      /**
 78733       * This property is for compatibility with the Dirent class as of
 78734       * Node v20, where Dirent['path'] refers to the path of the directory
 78735       * that was passed to readdir.  So, somewhat counterintuitively, this
 78736       * property refers to the *parent* path, not the path object itself.
 78737       * For root entries, it's the path to the entry itself.
 78738       */
 78739      get path() {
 78740          return (this.parent || this).fullpath();
 78741      }
 78742      /**
 78743       * Do not create new Path objects directly.  They should always be accessed
 78744       * via the PathScurry class or other methods on the Path class.
 78745       *
 78746       * @internal
 78747       */
 78748      constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
 78749          this.name = name;
 78750          this.#matchName = nocase ? normalizeNocase(name) : normalize(name);
 78751          this.#type = type & TYPEMASK;
 78752          this.nocase = nocase;
 78753          this.roots = roots;
 78754          this.root = root || this;
 78755          this.#children = children;
 78756          this.#fullpath = opts.fullpath;
 78757          this.#relative = opts.relative;
 78758          this.#relativePosix = opts.relativePosix;
 78759          this.parent = opts.parent;
 78760          if (this.parent) {
 78761              this.#fs = this.parent.#fs;
 78762          }
 78763          else {
 78764              this.#fs = fsFromOption(opts.fs);
 78765          }
 78766      }
 78767      /**
 78768       * Returns the depth of the Path object from its root.
 78769       *
 78770       * For example, a path at `/foo/bar` would have a depth of 2.
 78771       */
 78772      depth() {
 78773          if (this.#depth !== undefined)
 78774              return this.#depth;
 78775          if (!this.parent)
 78776              return (this.#depth = 0);
 78777          return (this.#depth = this.parent.depth() + 1);
 78778      }
 78779      /**
 78780       * @internal
 78781       */
 78782      childrenCache() {
 78783          return this.#children;
 78784      }
 78785      /**
 78786       * Get the Path object referenced by the string path, resolved from this Path
 78787       */
 78788      resolve(path) {
 78789          if (!path) {
 78790              return this;
 78791          }
 78792          const rootPath = this.getRootString(path);
 78793          const dir = path.substring(rootPath.length);
 78794          const dirParts = dir.split(this.splitSep);
 78795          const result = rootPath
 78796              ? this.getRoot(rootPath).#resolveParts(dirParts)
 78797              : this.#resolveParts(dirParts);
 78798          return result;
 78799      }
 78800      #resolveParts(dirParts) {
 78801          let p = this;
 78802          for (const part of dirParts) {
 78803              p = p.child(part);
 78804          }
 78805          return p;
 78806      }
 78807      /**
 78808       * Returns the cached children Path objects, if still available.  If they
 78809       * have fallen out of the cache, then returns an empty array, and resets the
 78810       * READDIR_CALLED bit, so that future calls to readdir() will require an fs
 78811       * lookup.
 78812       *
 78813       * @internal
 78814       */
 78815      children() {
 78816          const cached = this.#children.get(this);
 78817          if (cached) {
 78818              return cached;
 78819          }
 78820          const children = Object.assign([], { provisional: 0 });
 78821          this.#children.set(this, children);
 78822          this.#type &= ~READDIR_CALLED;
 78823          return children;
 78824      }
 78825      /**
 78826       * Resolves a path portion and returns or creates the child Path.
 78827       *
 78828       * Returns `this` if pathPart is `''` or `'.'`, or `parent` if pathPart is
 78829       * `'..'`.
 78830       *
 78831       * This should not be called directly.  If `pathPart` contains any path
 78832       * separators, it will lead to unsafe undefined behavior.
 78833       *
 78834       * Use `Path.resolve()` instead.
 78835       *
 78836       * @internal
 78837       */
 78838      child(pathPart, opts) {
 78839          if (pathPart === '' || pathPart === '.') {
 78840              return this;
 78841          }
 78842          if (pathPart === '..') {
 78843              return this.parent || this;
 78844          }
 78845          // find the child
 78846          const children = this.children();
 78847          const name = this.nocase
 78848              ? normalizeNocase(pathPart)
 78849              : normalize(pathPart);
 78850          for (const p of children) {
 78851              if (p.#matchName === name) {
 78852                  return p;
 78853              }
 78854          }
 78855          // didn't find it, create provisional child, since it might not
 78856          // actually exist.  If we know the parent isn't a dir, then
 78857          // in fact it CAN'T exist.
 78858          const s = this.parent ? this.sep : '';
 78859          const fullpath = this.#fullpath
 78860              ? this.#fullpath + s + pathPart
 78861              : undefined;
 78862          const pchild = this.newChild(pathPart, UNKNOWN, {
 78863              ...opts,
 78864              parent: this,
 78865              fullpath,
 78866          });
 78867          if (!this.canReaddir()) {
 78868              pchild.#type |= ENOENT;
 78869          }
 78870          // don't have to update provisional, because if we have real children,
 78871          // then provisional is set to children.length, otherwise a lower number
 78872          children.push(pchild);
 78873          return pchild;
 78874      }
 78875      /**
 78876       * The relative path from the cwd. If it does not share an ancestor with
 78877       * the cwd, then this ends up being equivalent to the fullpath()
 78878       */
 78879      relative() {
 78880          if (this.#relative !== undefined) {
 78881              return this.#relative;
 78882          }
 78883          const name = this.name;
 78884          const p = this.parent;
 78885          if (!p) {
 78886              return (this.#relative = this.name);
 78887          }
 78888          const pv = p.relative();
 78889          return pv + (!pv || !p.parent ? '' : this.sep) + name;
 78890      }
 78891      /**
 78892       * The relative path from the cwd, using / as the path separator.
 78893       * If it does not share an ancestor with
 78894       * the cwd, then this ends up being equivalent to the fullpathPosix()
 78895       * On posix systems, this is identical to relative().
 78896       */
 78897      relativePosix() {
 78898          if (this.sep === '/')
 78899              return this.relative();
 78900          if (this.#relativePosix !== undefined)
 78901              return this.#relativePosix;
 78902          const name = this.name;
 78903          const p = this.parent;
 78904          if (!p) {
 78905              return (this.#relativePosix = this.fullpathPosix());
 78906          }
 78907          const pv = p.relativePosix();
 78908          return pv + (!pv || !p.parent ? '' : '/') + name;
 78909      }
 78910      /**
 78911       * The fully resolved path string for this Path entry
 78912       */
 78913      fullpath() {
 78914          if (this.#fullpath !== undefined) {
 78915              return this.#fullpath;
 78916          }
 78917          const name = this.name;
 78918          const p = this.parent;
 78919          if (!p) {
 78920              return (this.#fullpath = this.name);
 78921          }
 78922          const pv = p.fullpath();
 78923          const fp = pv + (!p.parent ? '' : this.sep) + name;
 78924          return (this.#fullpath = fp);
 78925      }
 78926      /**
 78927       * On platforms other than windows, this is identical to fullpath.
 78928       *
 78929       * On windows, this is overridden to return the forward-slash form of the
 78930       * full UNC path.
 78931       */
 78932      fullpathPosix() {
 78933          if (this.#fullpathPosix !== undefined)
 78934              return this.#fullpathPosix;
 78935          if (this.sep === '/')
 78936              return (this.#fullpathPosix = this.fullpath());
 78937          if (!this.parent) {
 78938              const p = this.fullpath().replace(/\\/g, '/');
 78939              if (/^[a-z]:\//i.test(p)) {
 78940                  return (this.#fullpathPosix = `//?/${p}`);
 78941              }
 78942              else {
 78943                  return (this.#fullpathPosix = p);
 78944              }
 78945          }
 78946          const p = this.parent;
 78947          const pfpp = p.fullpathPosix();
 78948          const fpp = pfpp + (!pfpp || !p.parent ? '' : '/') + this.name;
 78949          return (this.#fullpathPosix = fpp);
 78950      }
 78951      /**
 78952       * Is the Path of an unknown type?
 78953       *
 78954       * Note that we might know *something* about it if there has been a previous
 78955       * filesystem operation, for example that it does not exist, or is not a
 78956       * link, or whether it has child entries.
 78957       */
 78958      isUnknown() {
 78959          return (this.#type & IFMT) === UNKNOWN;
 78960      }
 78961      isType(type) {
 78962          return this[`is${type}`]();
 78963      }
 78964      getType() {
 78965          return this.isUnknown()
 78966              ? 'Unknown'
 78967              : this.isDirectory()
 78968                  ? 'Directory'
 78969                  : this.isFile()
 78970                      ? 'File'
 78971                      : this.isSymbolicLink()
 78972                          ? 'SymbolicLink'
 78973                          : this.isFIFO()
 78974                              ? 'FIFO'
 78975                              : this.isCharacterDevice()
 78976                                  ? 'CharacterDevice'
 78977                                  : this.isBlockDevice()
 78978                                      ? 'BlockDevice'
 78979                                      : /* c8 ignore start */ this.isSocket()
 78980                                          ? 'Socket'
 78981                                          : 'Unknown';
 78982          /* c8 ignore stop */
 78983      }
 78984      /**
 78985       * Is the Path a regular file?
 78986       */
 78987      isFile() {
 78988          return (this.#type & IFMT) === IFREG;
 78989      }
 78990      /**
 78991       * Is the Path a directory?
 78992       */
 78993      isDirectory() {
 78994          return (this.#type & IFMT) === IFDIR;
 78995      }
 78996      /**
 78997       * Is the path a character device?
 78998       */
 78999      isCharacterDevice() {
 79000          return (this.#type & IFMT) === IFCHR;
 79001      }
 79002      /**
 79003       * Is the path a block device?
 79004       */
 79005      isBlockDevice() {
 79006          return (this.#type & IFMT) === IFBLK;
 79007      }
 79008      /**
 79009       * Is the path a FIFO pipe?
 79010       */
 79011      isFIFO() {
 79012          return (this.#type & IFMT) === IFIFO;
 79013      }
 79014      /**
 79015       * Is the path a socket?
 79016       */
 79017      isSocket() {
 79018          return (this.#type & IFMT) === IFSOCK;
 79019      }
 79020      /**
 79021       * Is the path a symbolic link?
 79022       */
 79023      isSymbolicLink() {
 79024          return (this.#type & IFLNK) === IFLNK;
 79025      }
 79026      /**
 79027       * Return the entry if it has been subject of a successful lstat, or
 79028       * undefined otherwise.
 79029       *
 79030       * Does not read the filesystem, so an undefined result *could* simply
 79031       * mean that we haven't called lstat on it.
 79032       */
 79033      lstatCached() {
 79034          return this.#type & LSTAT_CALLED ? this : undefined;
 79035      }
 79036      /**
 79037       * Return the cached link target if the entry has been the subject of a
 79038       * successful readlink, or undefined otherwise.
 79039       *
 79040       * Does not read the filesystem, so an undefined result *could* just mean we
 79041       * don't have any cached data. Only use it if you are very sure that a
 79042       * readlink() has been called at some point.
 79043       */
 79044      readlinkCached() {
 79045          return this.#linkTarget;
 79046      }
 79047      /**
 79048       * Returns the cached realpath target if the entry has been the subject
 79049       * of a successful realpath, or undefined otherwise.
 79050       *
 79051       * Does not read the filesystem, so an undefined result *could* just mean we
 79052       * don't have any cached data. Only use it if you are very sure that a
 79053       * realpath() has been called at some point.
 79054       */
 79055      realpathCached() {
 79056          return this.#realpath;
 79057      }
 79058      /**
 79059       * Returns the cached child Path entries array if the entry has been the
 79060       * subject of a successful readdir(), or [] otherwise.
 79061       *
 79062       * Does not read the filesystem, so an empty array *could* just mean we
 79063       * don't have any cached data. Only use it if you are very sure that a
 79064       * readdir() has been called recently enough to still be valid.
 79065       */
 79066      readdirCached() {
 79067          const children = this.children();
 79068          return children.slice(0, children.provisional);
 79069      }
 79070      /**
 79071       * Return true if it's worth trying to readlink.  Ie, we don't (yet) have
 79072       * any indication that readlink will definitely fail.
 79073       *
 79074       * Returns false if the path is known to not be a symlink, if a previous
 79075       * readlink failed, or if the entry does not exist.
 79076       */
 79077      canReadlink() {
 79078          if (this.#linkTarget)
 79079              return true;
 79080          if (!this.parent)
 79081              return false;
 79082          // cases where it cannot possibly succeed
 79083          const ifmt = this.#type & IFMT;
 79084          return !((ifmt !== UNKNOWN && ifmt !== IFLNK) ||
 79085              this.#type & ENOREADLINK ||
 79086              this.#type & ENOENT);
 79087      }
 79088      /**
 79089       * Return true if readdir has previously been successfully called on this
 79090       * path, indicating that cachedReaddir() is likely valid.
 79091       */
 79092      calledReaddir() {
 79093          return !!(this.#type & READDIR_CALLED);
 79094      }
 79095      /**
 79096       * Returns true if the path is known to not exist. That is, a previous lstat
 79097       * or readdir failed to verify its existence when that would have been
 79098       * expected, or a parent entry was marked either enoent or enotdir.
 79099       */
 79100      isENOENT() {
 79101          return !!(this.#type & ENOENT);
 79102      }
 79103      /**
 79104       * Return true if the path is a match for the given path name.  This handles
 79105       * case sensitivity and unicode normalization.
 79106       *
 79107       * Note: even on case-sensitive systems, it is **not** safe to test the
 79108       * equality of the `.name` property to determine whether a given pathname
 79109       * matches, due to unicode normalization mismatches.
 79110       *
 79111       * Always use this method instead of testing the `path.name` property
 79112       * directly.
 79113       */
 79114      isNamed(n) {
 79115          return !this.nocase
 79116              ? this.#matchName === normalize(n)
 79117              : this.#matchName === normalizeNocase(n);
 79118      }
 79119      /**
 79120       * Return the Path object corresponding to the target of a symbolic link.
 79121       *
 79122       * If the Path is not a symbolic link, or if the readlink call fails for any
 79123       * reason, `undefined` is returned.
 79124       *
 79125       * Result is cached, and thus may be outdated if the filesystem is mutated.
 79126       */
 79127      async readlink() {
 79128          const target = this.#linkTarget;
 79129          if (target) {
 79130              return target;
 79131          }
 79132          if (!this.canReadlink()) {
 79133              return undefined;
 79134          }
 79135          /* c8 ignore start */
 79136          // already covered by the canReadlink test, here for ts grumples
 79137          if (!this.parent) {
 79138              return undefined;
 79139          }
 79140          /* c8 ignore stop */
 79141          try {
 79142              const read = await this.#fs.promises.readlink(this.fullpath());
 79143              const linkTarget = (await this.parent.realpath())?.resolve(read);
 79144              if (linkTarget) {
 79145                  return (this.#linkTarget = linkTarget);
 79146              }
 79147          }
 79148          catch (er) {
 79149              this.#readlinkFail(er.code);
 79150              return undefined;
 79151          }
 79152      }
 79153      /**
 79154       * Synchronous {@link PathBase.readlink}
 79155       */
 79156      readlinkSync() {
 79157          const target = this.#linkTarget;
 79158          if (target) {
 79159              return target;
 79160          }
 79161          if (!this.canReadlink()) {
 79162              return undefined;
 79163          }
 79164          /* c8 ignore start */
 79165          // already covered by the canReadlink test, here for ts grumples
 79166          if (!this.parent) {
 79167              return undefined;
 79168          }
 79169          /* c8 ignore stop */
 79170          try {
 79171              const read = this.#fs.readlinkSync(this.fullpath());
 79172              const linkTarget = (this.parent.realpathSync())?.resolve(read);
 79173              if (linkTarget) {
 79174                  return (this.#linkTarget = linkTarget);
 79175              }
 79176          }
 79177          catch (er) {
 79178              this.#readlinkFail(er.code);
 79179              return undefined;
 79180          }
 79181      }
 79182      #readdirSuccess(children) {
 79183          // succeeded, mark readdir called bit
 79184          this.#type |= READDIR_CALLED;
 79185          // mark all remaining provisional children as ENOENT
 79186          for (let p = children.provisional; p < children.length; p++) {
 79187              const c = children[p];
 79188              if (c)
 79189                  c.#markENOENT();
 79190          }
 79191      }
 79192      #markENOENT() {
 79193          // mark as UNKNOWN and ENOENT
 79194          if (this.#type & ENOENT)
 79195              return;
 79196          this.#type = (this.#type | ENOENT) & IFMT_UNKNOWN;
 79197          this.#markChildrenENOENT();
 79198      }
 79199      #markChildrenENOENT() {
 79200          // all children are provisional and do not exist
 79201          const children = this.children();
 79202          children.provisional = 0;
 79203          for (const p of children) {
 79204              p.#markENOENT();
 79205          }
 79206      }
 79207      #markENOREALPATH() {
 79208          this.#type |= ENOREALPATH;
 79209          this.#markENOTDIR();
 79210      }
 79211      // save the information when we know the entry is not a dir
 79212      #markENOTDIR() {
 79213          // entry is not a directory, so any children can't exist.
 79214          // this *should* be impossible, since any children created
 79215          // after it's been marked ENOTDIR should be marked ENOENT,
 79216          // so it won't even get to this point.
 79217          /* c8 ignore start */
 79218          if (this.#type & ENOTDIR)
 79219              return;
 79220          /* c8 ignore stop */
 79221          let t = this.#type;
 79222          // this could happen if we stat a dir, then delete it,
 79223          // then try to read it or one of its children.
 79224          if ((t & IFMT) === IFDIR)
 79225              t &= IFMT_UNKNOWN;
 79226          this.#type = t | ENOTDIR;
 79227          this.#markChildrenENOENT();
 79228      }
 79229      #readdirFail(code = '') {
 79230          // markENOTDIR and markENOENT also set provisional=0
 79231          if (code === 'ENOTDIR' || code === 'EPERM') {
 79232              this.#markENOTDIR();
 79233          }
 79234          else if (code === 'ENOENT') {
 79235              this.#markENOENT();
 79236          }
 79237          else {
 79238              this.children().provisional = 0;
 79239          }
 79240      }
 79241      #lstatFail(code = '') {
 79242          // Windows just raises ENOENT in this case, disable for win CI
 79243          /* c8 ignore start */
 79244          if (code === 'ENOTDIR') {
 79245              // already know it has a parent by this point
 79246              const p = this.parent;
 79247              p.#markENOTDIR();
 79248          }
 79249          else if (code === 'ENOENT') {
 79250              /* c8 ignore stop */
 79251              this.#markENOENT();
 79252          }
 79253      }
 79254      #readlinkFail(code = '') {
 79255          let ter = this.#type;
 79256          ter |= ENOREADLINK;
 79257          if (code === 'ENOENT')
 79258              ter |= ENOENT;
 79259          // windows gets a weird error when you try to readlink a file
 79260          if (code === 'EINVAL' || code === 'UNKNOWN') {
 79261              // exists, but not a symlink, we don't know WHAT it is, so remove
 79262              // all IFMT bits.
 79263              ter &= IFMT_UNKNOWN;
 79264          }
 79265          this.#type = ter;
 79266          // windows just gets ENOENT in this case.  We do cover the case,
 79267          // just disabled because it's impossible on Windows CI
 79268          /* c8 ignore start */
 79269          if (code === 'ENOTDIR' && this.parent) {
 79270              this.parent.#markENOTDIR();
 79271          }
 79272          /* c8 ignore stop */
 79273      }
 79274      #readdirAddChild(e, c) {
 79275          return (this.#readdirMaybePromoteChild(e, c) ||
 79276              this.#readdirAddNewChild(e, c));
 79277      }
 79278      #readdirAddNewChild(e, c) {
 79279          // alloc new entry at head, so it's never provisional
 79280          const type = entToType(e);
 79281          const child = this.newChild(e.name, type, { parent: this });
 79282          const ifmt = child.#type & IFMT;
 79283          if (ifmt !== IFDIR && ifmt !== IFLNK && ifmt !== UNKNOWN) {
 79284              child.#type |= ENOTDIR;
 79285          }
 79286          c.unshift(child);
 79287          c.provisional++;
 79288          return child;
 79289      }
 79290      #readdirMaybePromoteChild(e, c) {
 79291          for (let p = c.provisional; p < c.length; p++) {
 79292              const pchild = c[p];
 79293              const name = this.nocase
 79294                  ? normalizeNocase(e.name)
 79295                  : normalize(e.name);
 79296              if (name !== pchild.#matchName) {
 79297                  continue;
 79298              }
 79299              return this.#readdirPromoteChild(e, pchild, p, c);
 79300          }
 79301      }
 79302      #readdirPromoteChild(e, p, index, c) {
 79303          const v = p.name;
 79304          // retain any other flags, but set ifmt from dirent
 79305          p.#type = (p.#type & IFMT_UNKNOWN) | entToType(e);
 79306          // case sensitivity fixing when we learn the true name.
 79307          if (v !== e.name)
 79308              p.name = e.name;
 79309          // just advance provisional index (potentially off the list),
 79310          // otherwise we have to splice/pop it out and re-insert at head
 79311          if (index !== c.provisional) {
 79312              if (index === c.length - 1)
 79313                  c.pop();
 79314              else
 79315                  c.splice(index, 1);
 79316              c.unshift(p);
 79317          }
 79318          c.provisional++;
 79319          return p;
 79320      }
 79321      /**
 79322       * Call lstat() on this Path, and update all known information that can be
 79323       * determined.
 79324       *
 79325       * Note that unlike `fs.lstat()`, the returned value does not contain some
 79326       * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
 79327       * information is required, you will need to call `fs.lstat` yourself.
 79328       *
 79329       * If the Path refers to a nonexistent file, or if the lstat call fails for
 79330       * any reason, `undefined` is returned.  Otherwise the updated Path object is
 79331       * returned.
 79332       *
 79333       * Results are cached, and thus may be out of date if the filesystem is
 79334       * mutated.
 79335       */
 79336      async lstat() {
 79337          if ((this.#type & ENOENT) === 0) {
 79338              try {
 79339                  this.#applyStat(await this.#fs.promises.lstat(this.fullpath()));
 79340                  return this;
 79341              }
 79342              catch (er) {
 79343                  this.#lstatFail(er.code);
 79344              }
 79345          }
 79346      }
 79347      /**
 79348       * synchronous {@link PathBase.lstat}
 79349       */
 79350      lstatSync() {
 79351          if ((this.#type & ENOENT) === 0) {
 79352              try {
 79353                  this.#applyStat(this.#fs.lstatSync(this.fullpath()));
 79354                  return this;
 79355              }
 79356              catch (er) {
 79357                  this.#lstatFail(er.code);
 79358              }
 79359          }
 79360      }
 79361      #applyStat(st) {
 79362          const { atime, atimeMs, birthtime, birthtimeMs, blksize, blocks, ctime, ctimeMs, dev, gid, ino, mode, mtime, mtimeMs, nlink, rdev, size, uid, } = st;
 79363          this.#atime = atime;
 79364          this.#atimeMs = atimeMs;
 79365          this.#birthtime = birthtime;
 79366          this.#birthtimeMs = birthtimeMs;
 79367          this.#blksize = blksize;
 79368          this.#blocks = blocks;
 79369          this.#ctime = ctime;
 79370          this.#ctimeMs = ctimeMs;
 79371          this.#dev = dev;
 79372          this.#gid = gid;
 79373          this.#ino = ino;
 79374          this.#mode = mode;
 79375          this.#mtime = mtime;
 79376          this.#mtimeMs = mtimeMs;
 79377          this.#nlink = nlink;
 79378          this.#rdev = rdev;
 79379          this.#size = size;
 79380          this.#uid = uid;
 79381          const ifmt = entToType(st);
 79382          // retain any other flags, but set the ifmt
 79383          this.#type = (this.#type & IFMT_UNKNOWN) | ifmt | LSTAT_CALLED;
 79384          if (ifmt !== UNKNOWN && ifmt !== IFDIR && ifmt !== IFLNK) {
 79385              this.#type |= ENOTDIR;
 79386          }
 79387      }
 79388      #onReaddirCB = [];
 79389      #readdirCBInFlight = false;
 79390      #callOnReaddirCB(children) {
 79391          this.#readdirCBInFlight = false;
 79392          const cbs = this.#onReaddirCB.slice();
 79393          this.#onReaddirCB.length = 0;
 79394          cbs.forEach(cb => cb(null, children));
 79395      }
 79396      /**
 79397       * Standard node-style callback interface to get list of directory entries.
 79398       *
 79399       * If the Path cannot or does not contain any children, then an empty array
 79400       * is returned.
 79401       *
 79402       * Results are cached, and thus may be out of date if the filesystem is
 79403       * mutated.
 79404       *
 79405       * @param cb The callback called with (er, entries).  Note that the `er`
 79406       * param is somewhat extraneous, as all readdir() errors are handled and
 79407       * simply result in an empty set of entries being returned.
 79408       * @param allowZalgo Boolean indicating that immediately known results should
 79409       * *not* be deferred with `queueMicrotask`. Defaults to `false`. Release
 79410       * zalgo at your peril, the dark pony lord is devious and unforgiving.
 79411       */
 79412      readdirCB(cb, allowZalgo = false) {
 79413          if (!this.canReaddir()) {
 79414              if (allowZalgo)
 79415                  cb(null, []);
 79416              else
 79417                  queueMicrotask(() => cb(null, []));
 79418              return;
 79419          }
 79420          const children = this.children();
 79421          if (this.calledReaddir()) {
 79422              const c = children.slice(0, children.provisional);
 79423              if (allowZalgo)
 79424                  cb(null, c);
 79425              else
 79426                  queueMicrotask(() => cb(null, c));
 79427              return;
 79428          }
 79429          // don't have to worry about zalgo at this point.
 79430          this.#onReaddirCB.push(cb);
 79431          if (this.#readdirCBInFlight) {
 79432              return;
 79433          }
 79434          this.#readdirCBInFlight = true;
 79435          // else read the directory, fill up children
 79436          // de-provisionalize any provisional children.
 79437          const fullpath = this.fullpath();
 79438          this.#fs.readdir(fullpath, { withFileTypes: true }, (er, entries) => {
 79439              if (er) {
 79440                  this.#readdirFail(er.code);
 79441                  children.provisional = 0;
 79442              }
 79443              else {
 79444                  // if we didn't get an error, we always get entries.
 79445                  //@ts-ignore
 79446                  for (const e of entries) {
 79447                      this.#readdirAddChild(e, children);
 79448                  }
 79449                  this.#readdirSuccess(children);
 79450              }
 79451              this.#callOnReaddirCB(children.slice(0, children.provisional));
 79452              return;
 79453          });
 79454      }
 79455      #asyncReaddirInFlight;
 79456      /**
 79457       * Return an array of known child entries.
 79458       *
 79459       * If the Path cannot or does not contain any children, then an empty array
 79460       * is returned.
 79461       *
 79462       * Results are cached, and thus may be out of date if the filesystem is
 79463       * mutated.
 79464       */
 79465      async readdir() {
 79466          if (!this.canReaddir()) {
 79467              return [];
 79468          }
 79469          const children = this.children();
 79470          if (this.calledReaddir()) {
 79471              return children.slice(0, children.provisional);
 79472          }
 79473          // else read the directory, fill up children
 79474          // de-provisionalize any provisional children.
 79475          const fullpath = this.fullpath();
 79476          if (this.#asyncReaddirInFlight) {
 79477              await this.#asyncReaddirInFlight;
 79478          }
 79479          else {
 79480              /* c8 ignore start */
 79481              let resolve = () => { };
 79482              /* c8 ignore stop */
 79483              this.#asyncReaddirInFlight = new Promise(res => (resolve = res));
 79484              try {
 79485                  for (const e of await this.#fs.promises.readdir(fullpath, {
 79486                      withFileTypes: true,
 79487                  })) {
 79488                      this.#readdirAddChild(e, children);
 79489                  }
 79490                  this.#readdirSuccess(children);
 79491              }
 79492              catch (er) {
 79493                  this.#readdirFail(er.code);
 79494                  children.provisional = 0;
 79495              }
 79496              this.#asyncReaddirInFlight = undefined;
 79497              resolve();
 79498          }
 79499          return children.slice(0, children.provisional);
 79500      }
 79501      /**
 79502       * synchronous {@link PathBase.readdir}
 79503       */
 79504      readdirSync() {
 79505          if (!this.canReaddir()) {
 79506              return [];
 79507          }
 79508          const children = this.children();
 79509          if (this.calledReaddir()) {
 79510              return children.slice(0, children.provisional);
 79511          }
 79512          // else read the directory, fill up children
 79513          // de-provisionalize any provisional children.
 79514          const fullpath = this.fullpath();
 79515          try {
 79516              for (const e of this.#fs.readdirSync(fullpath, {
 79517                  withFileTypes: true,
 79518              })) {
 79519                  this.#readdirAddChild(e, children);
 79520              }
 79521              this.#readdirSuccess(children);
 79522          }
 79523          catch (er) {
 79524              this.#readdirFail(er.code);
 79525              children.provisional = 0;
 79526          }
 79527          return children.slice(0, children.provisional);
 79528      }
 79529      canReaddir() {
 79530          if (this.#type & ENOCHILD)
 79531              return false;
 79532          const ifmt = IFMT & this.#type;
 79533          // we always set ENOTDIR when setting IFMT, so should be impossible
 79534          /* c8 ignore start */
 79535          if (!(ifmt === UNKNOWN || ifmt === IFDIR || ifmt === IFLNK)) {
 79536              return false;
 79537          }
 79538          /* c8 ignore stop */
 79539          return true;
 79540      }
 79541      shouldWalk(dirs, walkFilter) {
 79542          return ((this.#type & IFDIR) === IFDIR &&
 79543              !(this.#type & ENOCHILD) &&
 79544              !dirs.has(this) &&
 79545              (!walkFilter || walkFilter(this)));
 79546      }
 79547      /**
 79548       * Return the Path object corresponding to path as resolved
 79549       * by realpath(3).
 79550       *
 79551       * If the realpath call fails for any reason, `undefined` is returned.
 79552       *
 79553       * Result is cached, and thus may be outdated if the filesystem is mutated.
 79554       * On success, returns a Path object.
 79555       */
 79556      async realpath() {
 79557          if (this.#realpath)
 79558              return this.#realpath;
 79559          if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type)
 79560              return undefined;
 79561          try {
 79562              const rp = await this.#fs.promises.realpath(this.fullpath());
 79563              return (this.#realpath = this.resolve(rp));
 79564          }
 79565          catch (_) {
 79566              this.#markENOREALPATH();
 79567          }
 79568      }
 79569      /**
 79570       * Synchronous {@link realpath}
 79571       */
 79572      realpathSync() {
 79573          if (this.#realpath)
 79574              return this.#realpath;
 79575          if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type)
 79576              return undefined;
 79577          try {
 79578              const rp = this.#fs.realpathSync(this.fullpath());
 79579              return (this.#realpath = this.resolve(rp));
 79580          }
 79581          catch (_) {
 79582              this.#markENOREALPATH();
 79583          }
 79584      }
 79585      /**
 79586       * Internal method to mark this Path object as the scurry cwd,
 79587       * called by {@link PathScurry#chdir}
 79588       *
 79589       * @internal
 79590       */
 79591      [setAsCwd](oldCwd) {
 79592          if (oldCwd === this)
 79593              return;
 79594          const changed = new Set([]);
 79595          let rp = [];
 79596          let p = this;
 79597          while (p && p.parent) {
 79598              changed.add(p);
 79599              p.#relative = rp.join(this.sep);
 79600              p.#relativePosix = rp.join('/');
 79601              p = p.parent;
 79602              rp.push('..');
 79603          }
 79604          // now un-memoize parents of old cwd
 79605          p = oldCwd;
 79606          while (p && p.parent && !changed.has(p)) {
 79607              p.#relative = undefined;
 79608              p.#relativePosix = undefined;
 79609              p = p.parent;
 79610          }
 79611      }
 79612  }
 79613  exports.PathBase = PathBase;
 79614  /**
 79615   * Path class used on win32 systems
 79616   *
 79617   * Uses `'\\'` as the path separator for returned paths, either `'\\'` or `'/'`
 79618   * as the path separator for parsing paths.
 79619   */
 79620  class PathWin32 extends PathBase {
 79621      /**
 79622       * Separator for generating path strings.
 79623       */
 79624      sep = '\\';
 79625      /**
 79626       * Separator for parsing path strings.
 79627       */
 79628      splitSep = eitherSep;
 79629      /**
 79630       * Do not create new Path objects directly.  They should always be accessed
 79631       * via the PathScurry class or other methods on the Path class.
 79632       *
 79633       * @internal
 79634       */
 79635      constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
 79636          super(name, type, root, roots, nocase, children, opts);
 79637      }
 79638      /**
 79639       * @internal
 79640       */
 79641      newChild(name, type = UNKNOWN, opts = {}) {
 79642          return new PathWin32(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
 79643      }
 79644      /**
 79645       * @internal
 79646       */
 79647      getRootString(path) {
 79648          return path_1.win32.parse(path).root;
 79649      }
 79650      /**
 79651       * @internal
 79652       */
 79653      getRoot(rootPath) {
 79654          rootPath = uncToDrive(rootPath.toUpperCase());
 79655          if (rootPath === this.root.name) {
 79656              return this.root;
 79657          }
 79658          // ok, not that one, check if it matches another we know about
 79659          for (const [compare, root] of Object.entries(this.roots)) {
 79660              if (this.sameRoot(rootPath, compare)) {
 79661                  return (this.roots[rootPath] = root);
 79662              }
 79663          }
 79664          // otherwise, have to create a new one.
 79665          return (this.roots[rootPath] = new PathScurryWin32(rootPath, this).root);
 79666      }
 79667      /**
 79668       * @internal
 79669       */
 79670      sameRoot(rootPath, compare = this.root.name) {
 79671          // windows can (rarely) have case-sensitive filesystem, but
 79672          // UNC and drive letters are always case-insensitive, and canonically
 79673          // represented uppercase.
 79674          rootPath = rootPath
 79675              .toUpperCase()
 79676              .replace(/\//g, '\\')
 79677              .replace(uncDriveRegexp, '$1\\');
 79678          return rootPath === compare;
 79679      }
 79680  }
 79681  exports.PathWin32 = PathWin32;
 79682  /**
 79683   * Path class used on all posix systems.
 79684   *
 79685   * Uses `'/'` as the path separator.
 79686   */
 79687  class PathPosix extends PathBase {
 79688      /**
 79689       * separator for parsing path strings
 79690       */
 79691      splitSep = '/';
 79692      /**
 79693       * separator for generating path strings
 79694       */
 79695      sep = '/';
 79696      /**
 79697       * Do not create new Path objects directly.  They should always be accessed
 79698       * via the PathScurry class or other methods on the Path class.
 79699       *
 79700       * @internal
 79701       */
 79702      constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
 79703          super(name, type, root, roots, nocase, children, opts);
 79704      }
 79705      /**
 79706       * @internal
 79707       */
 79708      getRootString(path) {
 79709          return path.startsWith('/') ? '/' : '';
 79710      }
 79711      /**
 79712       * @internal
 79713       */
 79714      getRoot(_rootPath) {
 79715          return this.root;
 79716      }
 79717      /**
 79718       * @internal
 79719       */
 79720      newChild(name, type = UNKNOWN, opts = {}) {
 79721          return new PathPosix(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
 79722      }
 79723  }
 79724  exports.PathPosix = PathPosix;
 79725  /**
 79726   * The base class for all PathScurry classes, providing the interface for path
 79727   * resolution and filesystem operations.
 79728   *
 79729   * Typically, you should *not* instantiate this class directly, but rather one
 79730   * of the platform-specific classes, or the exported {@link PathScurry} which
 79731   * defaults to the current platform.
 79732   */
 79733  class PathScurryBase {
 79734      /**
 79735       * The root Path entry for the current working directory of this Scurry
 79736       */
 79737      root;
 79738      /**
 79739       * The string path for the root of this Scurry's current working directory
 79740       */
 79741      rootPath;
 79742      /**
 79743       * A collection of all roots encountered, referenced by rootPath
 79744       */
 79745      roots;
 79746      /**
 79747       * The Path entry corresponding to this PathScurry's current working directory.
 79748       */
 79749      cwd;
 79750      #resolveCache;
 79751      #resolvePosixCache;
 79752      #children;
 79753      /**
 79754       * Perform path comparisons case-insensitively.
 79755       *
 79756       * Defaults true on Darwin and Windows systems, false elsewhere.
 79757       */
 79758      nocase;
 79759      #fs;
 79760      /**
 79761       * This class should not be instantiated directly.
 79762       *
 79763       * Use PathScurryWin32, PathScurryDarwin, PathScurryPosix, or PathScurry
 79764       *
 79765       * @internal
 79766       */
 79767      constructor(cwd = process.cwd(), pathImpl, sep, { nocase, childrenCacheSize = 16 * 1024, fs = defaultFS, } = {}) {
 79768          this.#fs = fsFromOption(fs);
 79769          if (cwd instanceof URL || cwd.startsWith('file://')) {
 79770              cwd = (0, url_1.fileURLToPath)(cwd);
 79771          }
 79772          // resolve and split root, and then add to the store.
 79773          // this is the only time we call path.resolve()
 79774          const cwdPath = pathImpl.resolve(cwd);
 79775          this.roots = Object.create(null);
 79776          this.rootPath = this.parseRootPath(cwdPath);
 79777          this.#resolveCache = new ResolveCache();
 79778          this.#resolvePosixCache = new ResolveCache();
 79779          this.#children = new ChildrenCache(childrenCacheSize);
 79780          const split = cwdPath.substring(this.rootPath.length).split(sep);
 79781          // resolve('/') leaves '', splits to [''], we don't want that.
 79782          if (split.length === 1 && !split[0]) {
 79783              split.pop();
 79784          }
 79785          /* c8 ignore start */
 79786          if (nocase === undefined) {
 79787              throw new TypeError('must provide nocase setting to PathScurryBase ctor');
 79788          }
 79789          /* c8 ignore stop */
 79790          this.nocase = nocase;
 79791          this.root = this.newRoot(this.#fs);
 79792          this.roots[this.rootPath] = this.root;
 79793          let prev = this.root;
 79794          let len = split.length - 1;
 79795          const joinSep = pathImpl.sep;
 79796          let abs = this.rootPath;
 79797          let sawFirst = false;
 79798          for (const part of split) {
 79799              const l = len--;
 79800              prev = prev.child(part, {
 79801                  relative: new Array(l).fill('..').join(joinSep),
 79802                  relativePosix: new Array(l).fill('..').join('/'),
 79803                  fullpath: (abs += (sawFirst ? '' : joinSep) + part),
 79804              });
 79805              sawFirst = true;
 79806          }
 79807          this.cwd = prev;
 79808      }
 79809      /**
 79810       * Get the depth of a provided path, string, or the cwd
 79811       */
 79812      depth(path = this.cwd) {
 79813          if (typeof path === 'string') {
 79814              path = this.cwd.resolve(path);
 79815          }
 79816          return path.depth();
 79817      }
 79818      /**
 79819       * Return the cache of child entries.  Exposed so subclasses can create
 79820       * child Path objects in a platform-specific way.
 79821       *
 79822       * @internal
 79823       */
 79824      childrenCache() {
 79825          return this.#children;
 79826      }
 79827      /**
 79828       * Resolve one or more path strings to a resolved string
 79829       *
 79830       * Same interface as require('path').resolve.
 79831       *
 79832       * Much faster than path.resolve() when called multiple times for the same
 79833       * path, because the resolved Path objects are cached.  Much slower
 79834       * otherwise.
 79835       */
 79836      resolve(...paths) {
 79837          // first figure out the minimum number of paths we have to test
 79838          // we always start at cwd, but any absolutes will bump the start
 79839          let r = '';
 79840          for (let i = paths.length - 1; i >= 0; i--) {
 79841              const p = paths[i];
 79842              if (!p || p === '.')
 79843                  continue;
 79844              r = r ? `${p}/${r}` : p;
 79845              if (this.isAbsolute(p)) {
 79846                  break;
 79847              }
 79848          }
 79849          const cached = this.#resolveCache.get(r);
 79850          if (cached !== undefined) {
 79851              return cached;
 79852          }
 79853          const result = this.cwd.resolve(r).fullpath();
 79854          this.#resolveCache.set(r, result);
 79855          return result;
 79856      }
 79857      /**
 79858       * Resolve one or more path strings to a resolved string, returning
 79859       * the posix path.  Identical to .resolve() on posix systems, but on
 79860       * windows will return a forward-slash separated UNC path.
 79861       *
 79862       * Same interface as require('path').resolve.
 79863       *
 79864       * Much faster than path.resolve() when called multiple times for the same
 79865       * path, because the resolved Path objects are cached.  Much slower
 79866       * otherwise.
 79867       */
 79868      resolvePosix(...paths) {
 79869          // first figure out the minimum number of paths we have to test
 79870          // we always start at cwd, but any absolutes will bump the start
 79871          let r = '';
 79872          for (let i = paths.length - 1; i >= 0; i--) {
 79873              const p = paths[i];
 79874              if (!p || p === '.')
 79875                  continue;
 79876              r = r ? `${p}/${r}` : p;
 79877              if (this.isAbsolute(p)) {
 79878                  break;
 79879              }
 79880          }
 79881          const cached = this.#resolvePosixCache.get(r);
 79882          if (cached !== undefined) {
 79883              return cached;
 79884          }
 79885          const result = this.cwd.resolve(r).fullpathPosix();
 79886          this.#resolvePosixCache.set(r, result);
 79887          return result;
 79888      }
 79889      /**
 79890       * find the relative path from the cwd to the supplied path string or entry
 79891       */
 79892      relative(entry = this.cwd) {
 79893          if (typeof entry === 'string') {
 79894              entry = this.cwd.resolve(entry);
 79895          }
 79896          return entry.relative();
 79897      }
 79898      /**
 79899       * find the relative path from the cwd to the supplied path string or
 79900       * entry, using / as the path delimiter, even on Windows.
 79901       */
 79902      relativePosix(entry = this.cwd) {
 79903          if (typeof entry === 'string') {
 79904              entry = this.cwd.resolve(entry);
 79905          }
 79906          return entry.relativePosix();
 79907      }
 79908      /**
 79909       * Return the basename for the provided string or Path object
 79910       */
 79911      basename(entry = this.cwd) {
 79912          if (typeof entry === 'string') {
 79913              entry = this.cwd.resolve(entry);
 79914          }
 79915          return entry.name;
 79916      }
 79917      /**
 79918       * Return the dirname for the provided string or Path object
 79919       */
 79920      dirname(entry = this.cwd) {
 79921          if (typeof entry === 'string') {
 79922              entry = this.cwd.resolve(entry);
 79923          }
 79924          return (entry.parent || entry).fullpath();
 79925      }
 79926      async readdir(entry = this.cwd, opts = {
 79927          withFileTypes: true,
 79928      }) {
 79929          if (typeof entry === 'string') {
 79930              entry = this.cwd.resolve(entry);
 79931          }
 79932          else if (!(entry instanceof PathBase)) {
 79933              opts = entry;
 79934              entry = this.cwd;
 79935          }
 79936          const { withFileTypes } = opts;
 79937          if (!entry.canReaddir()) {
 79938              return [];
 79939          }
 79940          else {
 79941              const p = await entry.readdir();
 79942              return withFileTypes ? p : p.map(e => e.name);
 79943          }
 79944      }
 79945      readdirSync(entry = this.cwd, opts = {
 79946          withFileTypes: true,
 79947      }) {
 79948          if (typeof entry === 'string') {
 79949              entry = this.cwd.resolve(entry);
 79950          }
 79951          else if (!(entry instanceof PathBase)) {
 79952              opts = entry;
 79953              entry = this.cwd;
 79954          }
 79955          const { withFileTypes = true } = opts;
 79956          if (!entry.canReaddir()) {
 79957              return [];
 79958          }
 79959          else if (withFileTypes) {
 79960              return entry.readdirSync();
 79961          }
 79962          else {
 79963              return entry.readdirSync().map(e => e.name);
 79964          }
 79965      }
 79966      /**
 79967       * Call lstat() on the string or Path object, and update all known
 79968       * information that can be determined.
 79969       *
 79970       * Note that unlike `fs.lstat()`, the returned value does not contain some
 79971       * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
 79972       * information is required, you will need to call `fs.lstat` yourself.
 79973       *
 79974       * If the Path refers to a nonexistent file, or if the lstat call fails for
 79975       * any reason, `undefined` is returned.  Otherwise the updated Path object is
 79976       * returned.
 79977       *
 79978       * Results are cached, and thus may be out of date if the filesystem is
 79979       * mutated.
 79980       */
 79981      async lstat(entry = this.cwd) {
 79982          if (typeof entry === 'string') {
 79983              entry = this.cwd.resolve(entry);
 79984          }
 79985          return entry.lstat();
 79986      }
 79987      /**
 79988       * synchronous {@link PathScurryBase.lstat}
 79989       */
 79990      lstatSync(entry = this.cwd) {
 79991          if (typeof entry === 'string') {
 79992              entry = this.cwd.resolve(entry);
 79993          }
 79994          return entry.lstatSync();
 79995      }
 79996      async readlink(entry = this.cwd, { withFileTypes } = {
 79997          withFileTypes: false,
 79998      }) {
 79999          if (typeof entry === 'string') {
 80000              entry = this.cwd.resolve(entry);
 80001          }
 80002          else if (!(entry instanceof PathBase)) {
 80003              withFileTypes = entry.withFileTypes;
 80004              entry = this.cwd;
 80005          }
 80006          const e = await entry.readlink();
 80007          return withFileTypes ? e : e?.fullpath();
 80008      }
 80009      readlinkSync(entry = this.cwd, { withFileTypes } = {
 80010          withFileTypes: false,
 80011      }) {
 80012          if (typeof entry === 'string') {
 80013              entry = this.cwd.resolve(entry);
 80014          }
 80015          else if (!(entry instanceof PathBase)) {
 80016              withFileTypes = entry.withFileTypes;
 80017              entry = this.cwd;
 80018          }
 80019          const e = entry.readlinkSync();
 80020          return withFileTypes ? e : e?.fullpath();
 80021      }
 80022      async realpath(entry = this.cwd, { withFileTypes } = {
 80023          withFileTypes: false,
 80024      }) {
 80025          if (typeof entry === 'string') {
 80026              entry = this.cwd.resolve(entry);
 80027          }
 80028          else if (!(entry instanceof PathBase)) {
 80029              withFileTypes = entry.withFileTypes;
 80030              entry = this.cwd;
 80031          }
 80032          const e = await entry.realpath();
 80033          return withFileTypes ? e : e?.fullpath();
 80034      }
 80035      realpathSync(entry = this.cwd, { withFileTypes } = {
 80036          withFileTypes: false,
 80037      }) {
 80038          if (typeof entry === 'string') {
 80039              entry = this.cwd.resolve(entry);
 80040          }
 80041          else if (!(entry instanceof PathBase)) {
 80042              withFileTypes = entry.withFileTypes;
 80043              entry = this.cwd;
 80044          }
 80045          const e = entry.realpathSync();
 80046          return withFileTypes ? e : e?.fullpath();
 80047      }
 80048      async walk(entry = this.cwd, opts = {}) {
 80049          if (typeof entry === 'string') {
 80050              entry = this.cwd.resolve(entry);
 80051          }
 80052          else if (!(entry instanceof PathBase)) {
 80053              opts = entry;
 80054              entry = this.cwd;
 80055          }
 80056          const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
 80057          const results = [];
 80058          if (!filter || filter(entry)) {
 80059              results.push(withFileTypes ? entry : entry.fullpath());
 80060          }
 80061          const dirs = new Set();
 80062          const walk = (dir, cb) => {
 80063              dirs.add(dir);
 80064              dir.readdirCB((er, entries) => {
 80065                  /* c8 ignore start */
 80066                  if (er) {
 80067                      return cb(er);
 80068                  }
 80069                  /* c8 ignore stop */
 80070                  let len = entries.length;
 80071                  if (!len)
 80072                      return cb();
 80073                  const next = () => {
 80074                      if (--len === 0) {
 80075                          cb();
 80076                      }
 80077                  };
 80078                  for (const e of entries) {
 80079                      if (!filter || filter(e)) {
 80080                          results.push(withFileTypes ? e : e.fullpath());
 80081                      }
 80082                      if (follow && e.isSymbolicLink()) {
 80083                          e.realpath()
 80084                              .then(r => (r?.isUnknown() ? r.lstat() : r))
 80085                              .then(r => r?.shouldWalk(dirs, walkFilter) ? walk(r, next) : next());
 80086                      }
 80087                      else {
 80088                          if (e.shouldWalk(dirs, walkFilter)) {
 80089                              walk(e, next);
 80090                          }
 80091                          else {
 80092                              next();
 80093                          }
 80094                      }
 80095                  }
 80096              }, true); // zalgooooooo
 80097          };
 80098          const start = entry;
 80099          return new Promise((res, rej) => {
 80100              walk(start, er => {
 80101                  /* c8 ignore start */
 80102                  if (er)
 80103                      return rej(er);
 80104                  /* c8 ignore stop */
 80105                  res(results);
 80106              });
 80107          });
 80108      }
 80109      walkSync(entry = this.cwd, opts = {}) {
 80110          if (typeof entry === 'string') {
 80111              entry = this.cwd.resolve(entry);
 80112          }
 80113          else if (!(entry instanceof PathBase)) {
 80114              opts = entry;
 80115              entry = this.cwd;
 80116          }
 80117          const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
 80118          const results = [];
 80119          if (!filter || filter(entry)) {
 80120              results.push(withFileTypes ? entry : entry.fullpath());
 80121          }
 80122          const dirs = new Set([entry]);
 80123          for (const dir of dirs) {
 80124              const entries = dir.readdirSync();
 80125              for (const e of entries) {
 80126                  if (!filter || filter(e)) {
 80127                      results.push(withFileTypes ? e : e.fullpath());
 80128                  }
 80129                  let r = e;
 80130                  if (e.isSymbolicLink()) {
 80131                      if (!(follow && (r = e.realpathSync())))
 80132                          continue;
 80133                      if (r.isUnknown())
 80134                          r.lstatSync();
 80135                  }
 80136                  if (r.shouldWalk(dirs, walkFilter)) {
 80137                      dirs.add(r);
 80138                  }
 80139              }
 80140          }
 80141          return results;
 80142      }
 80143      /**
 80144       * Support for `for await`
 80145       *
 80146       * Alias for {@link PathScurryBase.iterate}
 80147       *
 80148       * Note: As of Node 19, this is very slow, compared to other methods of
 80149       * walking.  Consider using {@link PathScurryBase.stream} if memory overhead
 80150       * and backpressure are concerns, or {@link PathScurryBase.walk} if not.
 80151       */
 80152      [Symbol.asyncIterator]() {
 80153          return this.iterate();
 80154      }
 80155      iterate(entry = this.cwd, options = {}) {
 80156          // iterating async over the stream is significantly more performant,
 80157          // especially in the warm-cache scenario, because it buffers up directory
 80158          // entries in the background instead of waiting for a yield for each one.
 80159          if (typeof entry === 'string') {
 80160              entry = this.cwd.resolve(entry);
 80161          }
 80162          else if (!(entry instanceof PathBase)) {
 80163              options = entry;
 80164              entry = this.cwd;
 80165          }
 80166          return this.stream(entry, options)[Symbol.asyncIterator]();
 80167      }
 80168      /**
 80169       * Iterating over a PathScurry performs a synchronous walk.
 80170       *
 80171       * Alias for {@link PathScurryBase.iterateSync}
 80172       */
 80173      [Symbol.iterator]() {
 80174          return this.iterateSync();
 80175      }
 80176      *iterateSync(entry = this.cwd, opts = {}) {
 80177          if (typeof entry === 'string') {
 80178              entry = this.cwd.resolve(entry);
 80179          }
 80180          else if (!(entry instanceof PathBase)) {
 80181              opts = entry;
 80182              entry = this.cwd;
 80183          }
 80184          const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
 80185          if (!filter || filter(entry)) {
 80186              yield withFileTypes ? entry : entry.fullpath();
 80187          }
 80188          const dirs = new Set([entry]);
 80189          for (const dir of dirs) {
 80190              const entries = dir.readdirSync();
 80191              for (const e of entries) {
 80192                  if (!filter || filter(e)) {
 80193                      yield withFileTypes ? e : e.fullpath();
 80194                  }
 80195                  let r = e;
 80196                  if (e.isSymbolicLink()) {
 80197                      if (!(follow && (r = e.realpathSync())))
 80198                          continue;
 80199                      if (r.isUnknown())
 80200                          r.lstatSync();
 80201                  }
 80202                  if (r.shouldWalk(dirs, walkFilter)) {
 80203                      dirs.add(r);
 80204                  }
 80205              }
 80206          }
 80207      }
 80208      stream(entry = this.cwd, opts = {}) {
 80209          if (typeof entry === 'string') {
 80210              entry = this.cwd.resolve(entry);
 80211          }
 80212          else if (!(entry instanceof PathBase)) {
 80213              opts = entry;
 80214              entry = this.cwd;
 80215          }
 80216          const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
 80217          const results = new minipass_1.Minipass({ objectMode: true });
 80218          if (!filter || filter(entry)) {
 80219              results.write(withFileTypes ? entry : entry.fullpath());
 80220          }
 80221          const dirs = new Set();
 80222          const queue = [entry];
 80223          let processing = 0;
 80224          const process = () => {
 80225              let paused = false;
 80226              while (!paused) {
 80227                  const dir = queue.shift();
 80228                  if (!dir) {
 80229                      if (processing === 0)
 80230                          results.end();
 80231                      return;
 80232                  }
 80233                  processing++;
 80234                  dirs.add(dir);
 80235                  const onReaddir = (er, entries, didRealpaths = false) => {
 80236                      /* c8 ignore start */
 80237                      if (er)
 80238                          return results.emit('error', er);
 80239                      /* c8 ignore stop */
 80240                      if (follow && !didRealpaths) {
 80241                          const promises = [];
 80242                          for (const e of entries) {
 80243                              if (e.isSymbolicLink()) {
 80244                                  promises.push(e
 80245                                      .realpath()
 80246                                      .then((r) => r?.isUnknown() ? r.lstat() : r));
 80247                              }
 80248                          }
 80249                          if (promises.length) {
 80250                              Promise.all(promises).then(() => onReaddir(null, entries, true));
 80251                              return;
 80252                          }
 80253                      }
 80254                      for (const e of entries) {
 80255                          if (e && (!filter || filter(e))) {
 80256                              if (!results.write(withFileTypes ? e : e.fullpath())) {
 80257                                  paused = true;
 80258                              }
 80259                          }
 80260                      }
 80261                      processing--;
 80262                      for (const e of entries) {
 80263                          const r = e.realpathCached() || e;
 80264                          if (r.shouldWalk(dirs, walkFilter)) {
 80265                              queue.push(r);
 80266                          }
 80267                      }
 80268                      if (paused && !results.flowing) {
 80269                          results.once('drain', process);
 80270                      }
 80271                      else if (!sync) {
 80272                          process();
 80273                      }
 80274                  };
 80275                  // zalgo containment
 80276                  let sync = true;
 80277                  dir.readdirCB(onReaddir, true);
 80278                  sync = false;
 80279              }
 80280          };
 80281          process();
 80282          return results;
 80283      }
 80284      streamSync(entry = this.cwd, opts = {}) {
 80285          if (typeof entry === 'string') {
 80286              entry = this.cwd.resolve(entry);
 80287          }
 80288          else if (!(entry instanceof PathBase)) {
 80289              opts = entry;
 80290              entry = this.cwd;
 80291          }
 80292          const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
 80293          const results = new minipass_1.Minipass({ objectMode: true });
 80294          const dirs = new Set();
 80295          if (!filter || filter(entry)) {
 80296              results.write(withFileTypes ? entry : entry.fullpath());
 80297          }
 80298          const queue = [entry];
 80299          let processing = 0;
 80300          const process = () => {
 80301              let paused = false;
 80302              while (!paused) {
 80303                  const dir = queue.shift();
 80304                  if (!dir) {
 80305                      if (processing === 0)
 80306                          results.end();
 80307                      return;
 80308                  }
 80309                  processing++;
 80310                  dirs.add(dir);
 80311                  const entries = dir.readdirSync();
 80312                  for (const e of entries) {
 80313                      if (!filter || filter(e)) {
 80314                          if (!results.write(withFileTypes ? e : e.fullpath())) {
 80315                              paused = true;
 80316                          }
 80317                      }
 80318                  }
 80319                  processing--;
 80320                  for (const e of entries) {
 80321                      let r = e;
 80322                      if (e.isSymbolicLink()) {
 80323                          if (!(follow && (r = e.realpathSync())))
 80324                              continue;
 80325                          if (r.isUnknown())
 80326                              r.lstatSync();
 80327                      }
 80328                      if (r.shouldWalk(dirs, walkFilter)) {
 80329                          queue.push(r);
 80330                      }
 80331                  }
 80332              }
 80333              if (paused && !results.flowing)
 80334                  results.once('drain', process);
 80335          };
 80336          process();
 80337          return results;
 80338      }
 80339      chdir(path = this.cwd) {
 80340          const oldCwd = this.cwd;
 80341          this.cwd = typeof path === 'string' ? this.cwd.resolve(path) : path;
 80342          this.cwd[setAsCwd](oldCwd);
 80343      }
 80344  }
 80345  exports.PathScurryBase = PathScurryBase;
 80346  /**
 80347   * Windows implementation of {@link PathScurryBase}
 80348   *
 80349   * Defaults to case insensitve, uses `'\\'` to generate path strings.  Uses
 80350   * {@link PathWin32} for Path objects.
 80351   */
 80352  class PathScurryWin32 extends PathScurryBase {
 80353      /**
 80354       * separator for generating path strings
 80355       */
 80356      sep = '\\';
 80357      constructor(cwd = process.cwd(), opts = {}) {
 80358          const { nocase = true } = opts;
 80359          super(cwd, path_1.win32, '\\', { ...opts, nocase });
 80360          this.nocase = nocase;
 80361          for (let p = this.cwd; p; p = p.parent) {
 80362              p.nocase = this.nocase;
 80363          }
 80364      }
 80365      /**
 80366       * @internal
 80367       */
 80368      parseRootPath(dir) {
 80369          // if the path starts with a single separator, it's not a UNC, and we'll
 80370          // just get separator as the root, and driveFromUNC will return \
 80371          // In that case, mount \ on the root from the cwd.
 80372          return path_1.win32.parse(dir).root.toUpperCase();
 80373      }
 80374      /**
 80375       * @internal
 80376       */
 80377      newRoot(fs) {
 80378          return new PathWin32(this.rootPath, IFDIR, undefined, this.roots, this.nocase, this.childrenCache(), { fs });
 80379      }
 80380      /**
 80381       * Return true if the provided path string is an absolute path
 80382       */
 80383      isAbsolute(p) {
 80384          return (p.startsWith('/') || p.startsWith('\\') || /^[a-z]:(\/|\\)/i.test(p));
 80385      }
 80386  }
 80387  exports.PathScurryWin32 = PathScurryWin32;
 80388  /**
 80389   * {@link PathScurryBase} implementation for all posix systems other than Darwin.
 80390   *
 80391   * Defaults to case-sensitive matching, uses `'/'` to generate path strings.
 80392   *
 80393   * Uses {@link PathPosix} for Path objects.
 80394   */
 80395  class PathScurryPosix extends PathScurryBase {
 80396      /**
 80397       * separator for generating path strings
 80398       */
 80399      sep = '/';
 80400      constructor(cwd = process.cwd(), opts = {}) {
 80401          const { nocase = false } = opts;
 80402          super(cwd, path_1.posix, '/', { ...opts, nocase });
 80403          this.nocase = nocase;
 80404      }
 80405      /**
 80406       * @internal
 80407       */
 80408      parseRootPath(_dir) {
 80409          return '/';
 80410      }
 80411      /**
 80412       * @internal
 80413       */
 80414      newRoot(fs) {
 80415          return new PathPosix(this.rootPath, IFDIR, undefined, this.roots, this.nocase, this.childrenCache(), { fs });
 80416      }
 80417      /**
 80418       * Return true if the provided path string is an absolute path
 80419       */
 80420      isAbsolute(p) {
 80421          return p.startsWith('/');
 80422      }
 80423  }
 80424  exports.PathScurryPosix = PathScurryPosix;
 80425  /**
 80426   * {@link PathScurryBase} implementation for Darwin (macOS) systems.
 80427   *
 80428   * Defaults to case-insensitive matching, uses `'/'` for generating path
 80429   * strings.
 80430   *
 80431   * Uses {@link PathPosix} for Path objects.
 80432   */
 80433  class PathScurryDarwin extends PathScurryPosix {
 80434      constructor(cwd = process.cwd(), opts = {}) {
 80435          const { nocase = true } = opts;
 80436          super(cwd, { ...opts, nocase });
 80437      }
 80438  }
 80439  exports.PathScurryDarwin = PathScurryDarwin;
 80440  /**
 80441   * Default {@link PathBase} implementation for the current platform.
 80442   *
 80443   * {@link PathWin32} on Windows systems, {@link PathPosix} on all others.
 80444   */
 80445  exports.Path = process.platform === 'win32' ? PathWin32 : PathPosix;
 80446  /**
 80447   * Default {@link PathScurryBase} implementation for the current platform.
 80448   *
 80449   * {@link PathScurryWin32} on Windows systems, {@link PathScurryDarwin} on
 80450   * Darwin (macOS) systems, {@link PathScurryPosix} on all others.
 80451   */
 80452  exports.PathScurry = process.platform === 'win32'
 80453      ? PathScurryWin32
 80454      : process.platform === 'darwin'
 80455          ? PathScurryDarwin
 80456          : PathScurryPosix;
 80457  //# sourceMappingURL=index.js.map
 80458  
 80459  /***/ }),
 80460  
 80461  /***/ 66091:
 80462  /***/ ((__unused_webpack_module, exports) => {
 80463  
 80464  "use strict";
 80465  
 80466  /**
 80467   * @module LRUCache
 80468   */
 80469  Object.defineProperty(exports, "__esModule", ({ value: true }));
 80470  exports.LRUCache = void 0;
 80471  const perf = typeof performance === 'object' &&
 80472      performance &&
 80473      typeof performance.now === 'function'
 80474      ? performance
 80475      : Date;
 80476  const warned = new Set();
 80477  /* c8 ignore start */
 80478  const PROCESS = (typeof process === 'object' && !!process ? process : {});
 80479  /* c8 ignore start */
 80480  const emitWarning = (msg, type, code, fn) => {
 80481      typeof PROCESS.emitWarning === 'function'
 80482          ? PROCESS.emitWarning(msg, type, code, fn)
 80483          : console.error(`[${code}] ${type}: ${msg}`);
 80484  };
 80485  let AC = globalThis.AbortController;
 80486  let AS = globalThis.AbortSignal;
 80487  /* c8 ignore start */
 80488  if (typeof AC === 'undefined') {
 80489      //@ts-ignore
 80490      AS = class AbortSignal {
 80491          onabort;
 80492          _onabort = [];
 80493          reason;
 80494          aborted = false;
 80495          addEventListener(_, fn) {
 80496              this._onabort.push(fn);
 80497          }
 80498      };
 80499      //@ts-ignore
 80500      AC = class AbortController {
 80501          constructor() {
 80502              warnACPolyfill();
 80503          }
 80504          signal = new AS();
 80505          abort(reason) {
 80506              if (this.signal.aborted)
 80507                  return;
 80508              //@ts-ignore
 80509              this.signal.reason = reason;
 80510              //@ts-ignore
 80511              this.signal.aborted = true;
 80512              //@ts-ignore
 80513              for (const fn of this.signal._onabort) {
 80514                  fn(reason);
 80515              }
 80516              this.signal.onabort?.(reason);
 80517          }
 80518      };
 80519      let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';
 80520      const warnACPolyfill = () => {
 80521          if (!printACPolyfillWarning)
 80522              return;
 80523          printACPolyfillWarning = false;
 80524          emitWarning('AbortController is not defined. If using lru-cache in ' +
 80525              'node 14, load an AbortController polyfill from the ' +
 80526              '`node-abort-controller` package. A minimal polyfill is ' +
 80527              'provided for use by LRUCache.fetch(), but it should not be ' +
 80528              'relied upon in other contexts (eg, passing it to other APIs that ' +
 80529              'use AbortController/AbortSignal might have undesirable effects). ' +
 80530              'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);
 80531      };
 80532  }
 80533  /* c8 ignore stop */
 80534  const shouldWarn = (code) => !warned.has(code);
 80535  const TYPE = Symbol('type');
 80536  const isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);
 80537  /* c8 ignore start */
 80538  // This is a little bit ridiculous, tbh.
 80539  // The maximum array length is 2^32-1 or thereabouts on most JS impls.
 80540  // And well before that point, you're caching the entire world, I mean,
 80541  // that's ~32GB of just integers for the next/prev links, plus whatever
 80542  // else to hold that many keys and values.  Just filling the memory with
 80543  // zeroes at init time is brutal when you get that big.
 80544  // But why not be complete?
 80545  // Maybe in the future, these limits will have expanded.
 80546  const getUintArray = (max) => !isPosInt(max)
 80547      ? null
 80548      : max <= Math.pow(2, 8)
 80549          ? Uint8Array
 80550          : max <= Math.pow(2, 16)
 80551              ? Uint16Array
 80552              : max <= Math.pow(2, 32)
 80553                  ? Uint32Array
 80554                  : max <= Number.MAX_SAFE_INTEGER
 80555                      ? ZeroArray
 80556                      : null;
 80557  /* c8 ignore stop */
 80558  class ZeroArray extends Array {
 80559      constructor(size) {
 80560          super(size);
 80561          this.fill(0);
 80562      }
 80563  }
 80564  class Stack {
 80565      heap;
 80566      length;
 80567      // private constructor
 80568      static #constructing = false;
 80569      static create(max) {
 80570          const HeapCls = getUintArray(max);
 80571          if (!HeapCls)
 80572              return [];
 80573          Stack.#constructing = true;
 80574          const s = new Stack(max, HeapCls);
 80575          Stack.#constructing = false;
 80576          return s;
 80577      }
 80578      constructor(max, HeapCls) {
 80579          /* c8 ignore start */
 80580          if (!Stack.#constructing) {
 80581              throw new TypeError('instantiate Stack using Stack.create(n)');
 80582          }
 80583          /* c8 ignore stop */
 80584          this.heap = new HeapCls(max);
 80585          this.length = 0;
 80586      }
 80587      push(n) {
 80588          this.heap[this.length++] = n;
 80589      }
 80590      pop() {
 80591          return this.heap[--this.length];
 80592      }
 80593  }
 80594  /**
 80595   * Default export, the thing you're using this module to get.
 80596   *
 80597   * All properties from the options object (with the exception of
 80598   * {@link OptionsBase.max} and {@link OptionsBase.maxSize}) are added as
 80599   * normal public members. (`max` and `maxBase` are read-only getters.)
 80600   * Changing any of these will alter the defaults for subsequent method calls,
 80601   * but is otherwise safe.
 80602   */
 80603  class LRUCache {
 80604      // properties coming in from the options of these, only max and maxSize
 80605      // really *need* to be protected. The rest can be modified, as they just
 80606      // set defaults for various methods.
 80607      #max;
 80608      #maxSize;
 80609      #dispose;
 80610      #disposeAfter;
 80611      #fetchMethod;
 80612      /**
 80613       * {@link LRUCache.OptionsBase.ttl}
 80614       */
 80615      ttl;
 80616      /**
 80617       * {@link LRUCache.OptionsBase.ttlResolution}
 80618       */
 80619      ttlResolution;
 80620      /**
 80621       * {@link LRUCache.OptionsBase.ttlAutopurge}
 80622       */
 80623      ttlAutopurge;
 80624      /**
 80625       * {@link LRUCache.OptionsBase.updateAgeOnGet}
 80626       */
 80627      updateAgeOnGet;
 80628      /**
 80629       * {@link LRUCache.OptionsBase.updateAgeOnHas}
 80630       */
 80631      updateAgeOnHas;
 80632      /**
 80633       * {@link LRUCache.OptionsBase.allowStale}
 80634       */
 80635      allowStale;
 80636      /**
 80637       * {@link LRUCache.OptionsBase.noDisposeOnSet}
 80638       */
 80639      noDisposeOnSet;
 80640      /**
 80641       * {@link LRUCache.OptionsBase.noUpdateTTL}
 80642       */
 80643      noUpdateTTL;
 80644      /**
 80645       * {@link LRUCache.OptionsBase.maxEntrySize}
 80646       */
 80647      maxEntrySize;
 80648      /**
 80649       * {@link LRUCache.OptionsBase.sizeCalculation}
 80650       */
 80651      sizeCalculation;
 80652      /**
 80653       * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}
 80654       */
 80655      noDeleteOnFetchRejection;
 80656      /**
 80657       * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}
 80658       */
 80659      noDeleteOnStaleGet;
 80660      /**
 80661       * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}
 80662       */
 80663      allowStaleOnFetchAbort;
 80664      /**
 80665       * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}
 80666       */
 80667      allowStaleOnFetchRejection;
 80668      /**
 80669       * {@link LRUCache.OptionsBase.ignoreFetchAbort}
 80670       */
 80671      ignoreFetchAbort;
 80672      // computed properties
 80673      #size;
 80674      #calculatedSize;
 80675      #keyMap;
 80676      #keyList;
 80677      #valList;
 80678      #next;
 80679      #prev;
 80680      #head;
 80681      #tail;
 80682      #free;
 80683      #disposed;
 80684      #sizes;
 80685      #starts;
 80686      #ttls;
 80687      #hasDispose;
 80688      #hasFetchMethod;
 80689      #hasDisposeAfter;
 80690      /**
 80691       * Do not call this method unless you need to inspect the
 80692       * inner workings of the cache.  If anything returned by this
 80693       * object is modified in any way, strange breakage may occur.
 80694       *
 80695       * These fields are private for a reason!
 80696       *
 80697       * @internal
 80698       */
 80699      static unsafeExposeInternals(c) {
 80700          return {
 80701              // properties
 80702              starts: c.#starts,
 80703              ttls: c.#ttls,
 80704              sizes: c.#sizes,
 80705              keyMap: c.#keyMap,
 80706              keyList: c.#keyList,
 80707              valList: c.#valList,
 80708              next: c.#next,
 80709              prev: c.#prev,
 80710              get head() {
 80711                  return c.#head;
 80712              },
 80713              get tail() {
 80714                  return c.#tail;
 80715              },
 80716              free: c.#free,
 80717              // methods
 80718              isBackgroundFetch: (p) => c.#isBackgroundFetch(p),
 80719              backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),
 80720              moveToTail: (index) => c.#moveToTail(index),
 80721              indexes: (options) => c.#indexes(options),
 80722              rindexes: (options) => c.#rindexes(options),
 80723              isStale: (index) => c.#isStale(index),
 80724          };
 80725      }
 80726      // Protected read-only members
 80727      /**
 80728       * {@link LRUCache.OptionsBase.max} (read-only)
 80729       */
 80730      get max() {
 80731          return this.#max;
 80732      }
 80733      /**
 80734       * {@link LRUCache.OptionsBase.maxSize} (read-only)
 80735       */
 80736      get maxSize() {
 80737          return this.#maxSize;
 80738      }
 80739      /**
 80740       * The total computed size of items in the cache (read-only)
 80741       */
 80742      get calculatedSize() {
 80743          return this.#calculatedSize;
 80744      }
 80745      /**
 80746       * The number of items stored in the cache (read-only)
 80747       */
 80748      get size() {
 80749          return this.#size;
 80750      }
 80751      /**
 80752       * {@link LRUCache.OptionsBase.fetchMethod} (read-only)
 80753       */
 80754      get fetchMethod() {
 80755          return this.#fetchMethod;
 80756      }
 80757      /**
 80758       * {@link LRUCache.OptionsBase.dispose} (read-only)
 80759       */
 80760      get dispose() {
 80761          return this.#dispose;
 80762      }
 80763      /**
 80764       * {@link LRUCache.OptionsBase.disposeAfter} (read-only)
 80765       */
 80766      get disposeAfter() {
 80767          return this.#disposeAfter;
 80768      }
 80769      constructor(options) {
 80770          const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, } = options;
 80771          if (max !== 0 && !isPosInt(max)) {
 80772              throw new TypeError('max option must be a nonnegative integer');
 80773          }
 80774          const UintArray = max ? getUintArray(max) : Array;
 80775          if (!UintArray) {
 80776              throw new Error('invalid max value: ' + max);
 80777          }
 80778          this.#max = max;
 80779          this.#maxSize = maxSize;
 80780          this.maxEntrySize = maxEntrySize || this.#maxSize;
 80781          this.sizeCalculation = sizeCalculation;
 80782          if (this.sizeCalculation) {
 80783              if (!this.#maxSize && !this.maxEntrySize) {
 80784                  throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');
 80785              }
 80786              if (typeof this.sizeCalculation !== 'function') {
 80787                  throw new TypeError('sizeCalculation set to non-function');
 80788              }
 80789          }
 80790          if (fetchMethod !== undefined &&
 80791              typeof fetchMethod !== 'function') {
 80792              throw new TypeError('fetchMethod must be a function if specified');
 80793          }
 80794          this.#fetchMethod = fetchMethod;
 80795          this.#hasFetchMethod = !!fetchMethod;
 80796          this.#keyMap = new Map();
 80797          this.#keyList = new Array(max).fill(undefined);
 80798          this.#valList = new Array(max).fill(undefined);
 80799          this.#next = new UintArray(max);
 80800          this.#prev = new UintArray(max);
 80801          this.#head = 0;
 80802          this.#tail = 0;
 80803          this.#free = Stack.create(max);
 80804          this.#size = 0;
 80805          this.#calculatedSize = 0;
 80806          if (typeof dispose === 'function') {
 80807              this.#dispose = dispose;
 80808          }
 80809          if (typeof disposeAfter === 'function') {
 80810              this.#disposeAfter = disposeAfter;
 80811              this.#disposed = [];
 80812          }
 80813          else {
 80814              this.#disposeAfter = undefined;
 80815              this.#disposed = undefined;
 80816          }
 80817          this.#hasDispose = !!this.#dispose;
 80818          this.#hasDisposeAfter = !!this.#disposeAfter;
 80819          this.noDisposeOnSet = !!noDisposeOnSet;
 80820          this.noUpdateTTL = !!noUpdateTTL;
 80821          this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;
 80822          this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;
 80823          this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;
 80824          this.ignoreFetchAbort = !!ignoreFetchAbort;
 80825          // NB: maxEntrySize is set to maxSize if it's set
 80826          if (this.maxEntrySize !== 0) {
 80827              if (this.#maxSize !== 0) {
 80828                  if (!isPosInt(this.#maxSize)) {
 80829                      throw new TypeError('maxSize must be a positive integer if specified');
 80830                  }
 80831              }
 80832              if (!isPosInt(this.maxEntrySize)) {
 80833                  throw new TypeError('maxEntrySize must be a positive integer if specified');
 80834              }
 80835              this.#initializeSizeTracking();
 80836          }
 80837          this.allowStale = !!allowStale;
 80838          this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;
 80839          this.updateAgeOnGet = !!updateAgeOnGet;
 80840          this.updateAgeOnHas = !!updateAgeOnHas;
 80841          this.ttlResolution =
 80842              isPosInt(ttlResolution) || ttlResolution === 0
 80843                  ? ttlResolution
 80844                  : 1;
 80845          this.ttlAutopurge = !!ttlAutopurge;
 80846          this.ttl = ttl || 0;
 80847          if (this.ttl) {
 80848              if (!isPosInt(this.ttl)) {
 80849                  throw new TypeError('ttl must be a positive integer if specified');
 80850              }
 80851              this.#initializeTTLTracking();
 80852          }
 80853          // do not allow completely unbounded caches
 80854          if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {
 80855              throw new TypeError('At least one of max, maxSize, or ttl is required');
 80856          }
 80857          if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {
 80858              const code = 'LRU_CACHE_UNBOUNDED';
 80859              if (shouldWarn(code)) {
 80860                  warned.add(code);
 80861                  const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +
 80862                      'result in unbounded memory consumption.';
 80863                  emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);
 80864              }
 80865          }
 80866      }
 80867      /**
 80868       * Return the remaining TTL time for a given entry key
 80869       */
 80870      getRemainingTTL(key) {
 80871          return this.#keyMap.has(key) ? Infinity : 0;
 80872      }
 80873      #initializeTTLTracking() {
 80874          const ttls = new ZeroArray(this.#max);
 80875          const starts = new ZeroArray(this.#max);
 80876          this.#ttls = ttls;
 80877          this.#starts = starts;
 80878          this.#setItemTTL = (index, ttl, start = perf.now()) => {
 80879              starts[index] = ttl !== 0 ? start : 0;
 80880              ttls[index] = ttl;
 80881              if (ttl !== 0 && this.ttlAutopurge) {
 80882                  const t = setTimeout(() => {
 80883                      if (this.#isStale(index)) {
 80884                          this.delete(this.#keyList[index]);
 80885                      }
 80886                  }, ttl + 1);
 80887                  // unref() not supported on all platforms
 80888                  /* c8 ignore start */
 80889                  if (t.unref) {
 80890                      t.unref();
 80891                  }
 80892                  /* c8 ignore stop */
 80893              }
 80894          };
 80895          this.#updateItemAge = index => {
 80896              starts[index] = ttls[index] !== 0 ? perf.now() : 0;
 80897          };
 80898          this.#statusTTL = (status, index) => {
 80899              if (ttls[index]) {
 80900                  const ttl = ttls[index];
 80901                  const start = starts[index];
 80902                  /* c8 ignore next */
 80903                  if (!ttl || !start)
 80904                      return;
 80905                  status.ttl = ttl;
 80906                  status.start = start;
 80907                  status.now = cachedNow || getNow();
 80908                  const age = status.now - start;
 80909                  status.remainingTTL = ttl - age;
 80910              }
 80911          };
 80912          // debounce calls to perf.now() to 1s so we're not hitting
 80913          // that costly call repeatedly.
 80914          let cachedNow = 0;
 80915          const getNow = () => {
 80916              const n = perf.now();
 80917              if (this.ttlResolution > 0) {
 80918                  cachedNow = n;
 80919                  const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);
 80920                  // not available on all platforms
 80921                  /* c8 ignore start */
 80922                  if (t.unref) {
 80923                      t.unref();
 80924                  }
 80925                  /* c8 ignore stop */
 80926              }
 80927              return n;
 80928          };
 80929          this.getRemainingTTL = key => {
 80930              const index = this.#keyMap.get(key);
 80931              if (index === undefined) {
 80932                  return 0;
 80933              }
 80934              const ttl = ttls[index];
 80935              const start = starts[index];
 80936              if (!ttl || !start) {
 80937                  return Infinity;
 80938              }
 80939              const age = (cachedNow || getNow()) - start;
 80940              return ttl - age;
 80941          };
 80942          this.#isStale = index => {
 80943              const s = starts[index];
 80944              const t = ttls[index];
 80945              return !!t && !!s && (cachedNow || getNow()) - s > t;
 80946          };
 80947      }
 80948      // conditionally set private methods related to TTL
 80949      #updateItemAge = () => { };
 80950      #statusTTL = () => { };
 80951      #setItemTTL = () => { };
 80952      /* c8 ignore stop */
 80953      #isStale = () => false;
 80954      #initializeSizeTracking() {
 80955          const sizes = new ZeroArray(this.#max);
 80956          this.#calculatedSize = 0;
 80957          this.#sizes = sizes;
 80958          this.#removeItemSize = index => {
 80959              this.#calculatedSize -= sizes[index];
 80960              sizes[index] = 0;
 80961          };
 80962          this.#requireSize = (k, v, size, sizeCalculation) => {
 80963              // provisionally accept background fetches.
 80964              // actual value size will be checked when they return.
 80965              if (this.#isBackgroundFetch(v)) {
 80966                  return 0;
 80967              }
 80968              if (!isPosInt(size)) {
 80969                  if (sizeCalculation) {
 80970                      if (typeof sizeCalculation !== 'function') {
 80971                          throw new TypeError('sizeCalculation must be a function');
 80972                      }
 80973                      size = sizeCalculation(v, k);
 80974                      if (!isPosInt(size)) {
 80975                          throw new TypeError('sizeCalculation return invalid (expect positive integer)');
 80976                      }
 80977                  }
 80978                  else {
 80979                      throw new TypeError('invalid size value (must be positive integer). ' +
 80980                          'When maxSize or maxEntrySize is used, sizeCalculation ' +
 80981                          'or size must be set.');
 80982                  }
 80983              }
 80984              return size;
 80985          };
 80986          this.#addItemSize = (index, size, status) => {
 80987              sizes[index] = size;
 80988              if (this.#maxSize) {
 80989                  const maxSize = this.#maxSize - sizes[index];
 80990                  while (this.#calculatedSize > maxSize) {
 80991                      this.#evict(true);
 80992                  }
 80993              }
 80994              this.#calculatedSize += sizes[index];
 80995              if (status) {
 80996                  status.entrySize = size;
 80997                  status.totalCalculatedSize = this.#calculatedSize;
 80998              }
 80999          };
 81000      }
 81001      #removeItemSize = _i => { };
 81002      #addItemSize = (_i, _s, _st) => { };
 81003      #requireSize = (_k, _v, size, sizeCalculation) => {
 81004          if (size || sizeCalculation) {
 81005              throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');
 81006          }
 81007          return 0;
 81008      };
 81009      *#indexes({ allowStale = this.allowStale } = {}) {
 81010          if (this.#size) {
 81011              for (let i = this.#tail; true;) {
 81012                  if (!this.#isValidIndex(i)) {
 81013                      break;
 81014                  }
 81015                  if (allowStale || !this.#isStale(i)) {
 81016                      yield i;
 81017                  }
 81018                  if (i === this.#head) {
 81019                      break;
 81020                  }
 81021                  else {
 81022                      i = this.#prev[i];
 81023                  }
 81024              }
 81025          }
 81026      }
 81027      *#rindexes({ allowStale = this.allowStale } = {}) {
 81028          if (this.#size) {
 81029              for (let i = this.#head; true;) {
 81030                  if (!this.#isValidIndex(i)) {
 81031                      break;
 81032                  }
 81033                  if (allowStale || !this.#isStale(i)) {
 81034                      yield i;
 81035                  }
 81036                  if (i === this.#tail) {
 81037                      break;
 81038                  }
 81039                  else {
 81040                      i = this.#next[i];
 81041                  }
 81042              }
 81043          }
 81044      }
 81045      #isValidIndex(index) {
 81046          return (index !== undefined &&
 81047              this.#keyMap.get(this.#keyList[index]) === index);
 81048      }
 81049      /**
 81050       * Return a generator yielding `[key, value]` pairs,
 81051       * in order from most recently used to least recently used.
 81052       */
 81053      *entries() {
 81054          for (const i of this.#indexes()) {
 81055              if (this.#valList[i] !== undefined &&
 81056                  this.#keyList[i] !== undefined &&
 81057                  !this.#isBackgroundFetch(this.#valList[i])) {
 81058                  yield [this.#keyList[i], this.#valList[i]];
 81059              }
 81060          }
 81061      }
 81062      /**
 81063       * Inverse order version of {@link LRUCache.entries}
 81064       *
 81065       * Return a generator yielding `[key, value]` pairs,
 81066       * in order from least recently used to most recently used.
 81067       */
 81068      *rentries() {
 81069          for (const i of this.#rindexes()) {
 81070              if (this.#valList[i] !== undefined &&
 81071                  this.#keyList[i] !== undefined &&
 81072                  !this.#isBackgroundFetch(this.#valList[i])) {
 81073                  yield [this.#keyList[i], this.#valList[i]];
 81074              }
 81075          }
 81076      }
 81077      /**
 81078       * Return a generator yielding the keys in the cache,
 81079       * in order from most recently used to least recently used.
 81080       */
 81081      *keys() {
 81082          for (const i of this.#indexes()) {
 81083              const k = this.#keyList[i];
 81084              if (k !== undefined &&
 81085                  !this.#isBackgroundFetch(this.#valList[i])) {
 81086                  yield k;
 81087              }
 81088          }
 81089      }
 81090      /**
 81091       * Inverse order version of {@link LRUCache.keys}
 81092       *
 81093       * Return a generator yielding the keys in the cache,
 81094       * in order from least recently used to most recently used.
 81095       */
 81096      *rkeys() {
 81097          for (const i of this.#rindexes()) {
 81098              const k = this.#keyList[i];
 81099              if (k !== undefined &&
 81100                  !this.#isBackgroundFetch(this.#valList[i])) {
 81101                  yield k;
 81102              }
 81103          }
 81104      }
 81105      /**
 81106       * Return a generator yielding the values in the cache,
 81107       * in order from most recently used to least recently used.
 81108       */
 81109      *values() {
 81110          for (const i of this.#indexes()) {
 81111              const v = this.#valList[i];
 81112              if (v !== undefined &&
 81113                  !this.#isBackgroundFetch(this.#valList[i])) {
 81114                  yield this.#valList[i];
 81115              }
 81116          }
 81117      }
 81118      /**
 81119       * Inverse order version of {@link LRUCache.values}
 81120       *
 81121       * Return a generator yielding the values in the cache,
 81122       * in order from least recently used to most recently used.
 81123       */
 81124      *rvalues() {
 81125          for (const i of this.#rindexes()) {
 81126              const v = this.#valList[i];
 81127              if (v !== undefined &&
 81128                  !this.#isBackgroundFetch(this.#valList[i])) {
 81129                  yield this.#valList[i];
 81130              }
 81131          }
 81132      }
 81133      /**
 81134       * Iterating over the cache itself yields the same results as
 81135       * {@link LRUCache.entries}
 81136       */
 81137      [Symbol.iterator]() {
 81138          return this.entries();
 81139      }
 81140      /**
 81141       * A String value that is used in the creation of the default string description of an object.
 81142       * Called by the built-in method Object.prototype.toString.
 81143       */
 81144      [Symbol.toStringTag] = 'LRUCache';
 81145      /**
 81146       * Find a value for which the supplied fn method returns a truthy value,
 81147       * similar to Array.find().  fn is called as fn(value, key, cache).
 81148       */
 81149      find(fn, getOptions = {}) {
 81150          for (const i of this.#indexes()) {
 81151              const v = this.#valList[i];
 81152              const value = this.#isBackgroundFetch(v)
 81153                  ? v.__staleWhileFetching
 81154                  : v;
 81155              if (value === undefined)
 81156                  continue;
 81157              if (fn(value, this.#keyList[i], this)) {
 81158                  return this.get(this.#keyList[i], getOptions);
 81159              }
 81160          }
 81161      }
 81162      /**
 81163       * Call the supplied function on each item in the cache, in order from
 81164       * most recently used to least recently used.  fn is called as
 81165       * fn(value, key, cache).  Does not update age or recenty of use.
 81166       * Does not iterate over stale values.
 81167       */
 81168      forEach(fn, thisp = this) {
 81169          for (const i of this.#indexes()) {
 81170              const v = this.#valList[i];
 81171              const value = this.#isBackgroundFetch(v)
 81172                  ? v.__staleWhileFetching
 81173                  : v;
 81174              if (value === undefined)
 81175                  continue;
 81176              fn.call(thisp, value, this.#keyList[i], this);
 81177          }
 81178      }
 81179      /**
 81180       * The same as {@link LRUCache.forEach} but items are iterated over in
 81181       * reverse order.  (ie, less recently used items are iterated over first.)
 81182       */
 81183      rforEach(fn, thisp = this) {
 81184          for (const i of this.#rindexes()) {
 81185              const v = this.#valList[i];
 81186              const value = this.#isBackgroundFetch(v)
 81187                  ? v.__staleWhileFetching
 81188                  : v;
 81189              if (value === undefined)
 81190                  continue;
 81191              fn.call(thisp, value, this.#keyList[i], this);
 81192          }
 81193      }
 81194      /**
 81195       * Delete any stale entries. Returns true if anything was removed,
 81196       * false otherwise.
 81197       */
 81198      purgeStale() {
 81199          let deleted = false;
 81200          for (const i of this.#rindexes({ allowStale: true })) {
 81201              if (this.#isStale(i)) {
 81202                  this.delete(this.#keyList[i]);
 81203                  deleted = true;
 81204              }
 81205          }
 81206          return deleted;
 81207      }
 81208      /**
 81209       * Get the extended info about a given entry, to get its value, size, and
 81210       * TTL info simultaneously. Like {@link LRUCache#dump}, but just for a
 81211       * single key. Always returns stale values, if their info is found in the
 81212       * cache, so be sure to check for expired TTLs if relevant.
 81213       */
 81214      info(key) {
 81215          const i = this.#keyMap.get(key);
 81216          if (i === undefined)
 81217              return undefined;
 81218          const v = this.#valList[i];
 81219          const value = this.#isBackgroundFetch(v)
 81220              ? v.__staleWhileFetching
 81221              : v;
 81222          if (value === undefined)
 81223              return undefined;
 81224          const entry = { value };
 81225          if (this.#ttls && this.#starts) {
 81226              const ttl = this.#ttls[i];
 81227              const start = this.#starts[i];
 81228              if (ttl && start) {
 81229                  const remain = ttl - (perf.now() - start);
 81230                  entry.ttl = remain;
 81231                  entry.start = Date.now();
 81232              }
 81233          }
 81234          if (this.#sizes) {
 81235              entry.size = this.#sizes[i];
 81236          }
 81237          return entry;
 81238      }
 81239      /**
 81240       * Return an array of [key, {@link LRUCache.Entry}] tuples which can be
 81241       * passed to cache.load()
 81242       */
 81243      dump() {
 81244          const arr = [];
 81245          for (const i of this.#indexes({ allowStale: true })) {
 81246              const key = this.#keyList[i];
 81247              const v = this.#valList[i];
 81248              const value = this.#isBackgroundFetch(v)
 81249                  ? v.__staleWhileFetching
 81250                  : v;
 81251              if (value === undefined || key === undefined)
 81252                  continue;
 81253              const entry = { value };
 81254              if (this.#ttls && this.#starts) {
 81255                  entry.ttl = this.#ttls[i];
 81256                  // always dump the start relative to a portable timestamp
 81257                  // it's ok for this to be a bit slow, it's a rare operation.
 81258                  const age = perf.now() - this.#starts[i];
 81259                  entry.start = Math.floor(Date.now() - age);
 81260              }
 81261              if (this.#sizes) {
 81262                  entry.size = this.#sizes[i];
 81263              }
 81264              arr.unshift([key, entry]);
 81265          }
 81266          return arr;
 81267      }
 81268      /**
 81269       * Reset the cache and load in the items in entries in the order listed.
 81270       * Note that the shape of the resulting cache may be different if the
 81271       * same options are not used in both caches.
 81272       */
 81273      load(arr) {
 81274          this.clear();
 81275          for (const [key, entry] of arr) {
 81276              if (entry.start) {
 81277                  // entry.start is a portable timestamp, but we may be using
 81278                  // node's performance.now(), so calculate the offset, so that
 81279                  // we get the intended remaining TTL, no matter how long it's
 81280                  // been on ice.
 81281                  //
 81282                  // it's ok for this to be a bit slow, it's a rare operation.
 81283                  const age = Date.now() - entry.start;
 81284                  entry.start = perf.now() - age;
 81285              }
 81286              this.set(key, entry.value, entry);
 81287          }
 81288      }
 81289      /**
 81290       * Add a value to the cache.
 81291       *
 81292       * Note: if `undefined` is specified as a value, this is an alias for
 81293       * {@link LRUCache#delete}
 81294       */
 81295      set(k, v, setOptions = {}) {
 81296          if (v === undefined) {
 81297              this.delete(k);
 81298              return this;
 81299          }
 81300          const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;
 81301          let { noUpdateTTL = this.noUpdateTTL } = setOptions;
 81302          const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);
 81303          // if the item doesn't fit, don't do anything
 81304          // NB: maxEntrySize set to maxSize by default
 81305          if (this.maxEntrySize && size > this.maxEntrySize) {
 81306              if (status) {
 81307                  status.set = 'miss';
 81308                  status.maxEntrySizeExceeded = true;
 81309              }
 81310              // have to delete, in case something is there already.
 81311              this.delete(k);
 81312              return this;
 81313          }
 81314          let index = this.#size === 0 ? undefined : this.#keyMap.get(k);
 81315          if (index === undefined) {
 81316              // addition
 81317              index = (this.#size === 0
 81318                  ? this.#tail
 81319                  : this.#free.length !== 0
 81320                      ? this.#free.pop()
 81321                      : this.#size === this.#max
 81322                          ? this.#evict(false)
 81323                          : this.#size);
 81324              this.#keyList[index] = k;
 81325              this.#valList[index] = v;
 81326              this.#keyMap.set(k, index);
 81327              this.#next[this.#tail] = index;
 81328              this.#prev[index] = this.#tail;
 81329              this.#tail = index;
 81330              this.#size++;
 81331              this.#addItemSize(index, size, status);
 81332              if (status)
 81333                  status.set = 'add';
 81334              noUpdateTTL = false;
 81335          }
 81336          else {
 81337              // update
 81338              this.#moveToTail(index);
 81339              const oldVal = this.#valList[index];
 81340              if (v !== oldVal) {
 81341                  if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {
 81342                      oldVal.__abortController.abort(new Error('replaced'));
 81343                      const { __staleWhileFetching: s } = oldVal;
 81344                      if (s !== undefined && !noDisposeOnSet) {
 81345                          if (this.#hasDispose) {
 81346                              this.#dispose?.(s, k, 'set');
 81347                          }
 81348                          if (this.#hasDisposeAfter) {
 81349                              this.#disposed?.push([s, k, 'set']);
 81350                          }
 81351                      }
 81352                  }
 81353                  else if (!noDisposeOnSet) {
 81354                      if (this.#hasDispose) {
 81355                          this.#dispose?.(oldVal, k, 'set');
 81356                      }
 81357                      if (this.#hasDisposeAfter) {
 81358                          this.#disposed?.push([oldVal, k, 'set']);
 81359                      }
 81360                  }
 81361                  this.#removeItemSize(index);
 81362                  this.#addItemSize(index, size, status);
 81363                  this.#valList[index] = v;
 81364                  if (status) {
 81365                      status.set = 'replace';
 81366                      const oldValue = oldVal && this.#isBackgroundFetch(oldVal)
 81367                          ? oldVal.__staleWhileFetching
 81368                          : oldVal;
 81369                      if (oldValue !== undefined)
 81370                          status.oldValue = oldValue;
 81371                  }
 81372              }
 81373              else if (status) {
 81374                  status.set = 'update';
 81375              }
 81376          }
 81377          if (ttl !== 0 && !this.#ttls) {
 81378              this.#initializeTTLTracking();
 81379          }
 81380          if (this.#ttls) {
 81381              if (!noUpdateTTL) {
 81382                  this.#setItemTTL(index, ttl, start);
 81383              }
 81384              if (status)
 81385                  this.#statusTTL(status, index);
 81386          }
 81387          if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {
 81388              const dt = this.#disposed;
 81389              let task;
 81390              while ((task = dt?.shift())) {
 81391                  this.#disposeAfter?.(...task);
 81392              }
 81393          }
 81394          return this;
 81395      }
 81396      /**
 81397       * Evict the least recently used item, returning its value or
 81398       * `undefined` if cache is empty.
 81399       */
 81400      pop() {
 81401          try {
 81402              while (this.#size) {
 81403                  const val = this.#valList[this.#head];
 81404                  this.#evict(true);
 81405                  if (this.#isBackgroundFetch(val)) {
 81406                      if (val.__staleWhileFetching) {
 81407                          return val.__staleWhileFetching;
 81408                      }
 81409                  }
 81410                  else if (val !== undefined) {
 81411                      return val;
 81412                  }
 81413              }
 81414          }
 81415          finally {
 81416              if (this.#hasDisposeAfter && this.#disposed) {
 81417                  const dt = this.#disposed;
 81418                  let task;
 81419                  while ((task = dt?.shift())) {
 81420                      this.#disposeAfter?.(...task);
 81421                  }
 81422              }
 81423          }
 81424      }
 81425      #evict(free) {
 81426          const head = this.#head;
 81427          const k = this.#keyList[head];
 81428          const v = this.#valList[head];
 81429          if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {
 81430              v.__abortController.abort(new Error('evicted'));
 81431          }
 81432          else if (this.#hasDispose || this.#hasDisposeAfter) {
 81433              if (this.#hasDispose) {
 81434                  this.#dispose?.(v, k, 'evict');
 81435              }
 81436              if (this.#hasDisposeAfter) {
 81437                  this.#disposed?.push([v, k, 'evict']);
 81438              }
 81439          }
 81440          this.#removeItemSize(head);
 81441          // if we aren't about to use the index, then null these out
 81442          if (free) {
 81443              this.#keyList[head] = undefined;
 81444              this.#valList[head] = undefined;
 81445              this.#free.push(head);
 81446          }
 81447          if (this.#size === 1) {
 81448              this.#head = this.#tail = 0;
 81449              this.#free.length = 0;
 81450          }
 81451          else {
 81452              this.#head = this.#next[head];
 81453          }
 81454          this.#keyMap.delete(k);
 81455          this.#size--;
 81456          return head;
 81457      }
 81458      /**
 81459       * Check if a key is in the cache, without updating the recency of use.
 81460       * Will return false if the item is stale, even though it is technically
 81461       * in the cache.
 81462       *
 81463       * Will not update item age unless
 81464       * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.
 81465       */
 81466      has(k, hasOptions = {}) {
 81467          const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;
 81468          const index = this.#keyMap.get(k);
 81469          if (index !== undefined) {
 81470              const v = this.#valList[index];
 81471              if (this.#isBackgroundFetch(v) &&
 81472                  v.__staleWhileFetching === undefined) {
 81473                  return false;
 81474              }
 81475              if (!this.#isStale(index)) {
 81476                  if (updateAgeOnHas) {
 81477                      this.#updateItemAge(index);
 81478                  }
 81479                  if (status) {
 81480                      status.has = 'hit';
 81481                      this.#statusTTL(status, index);
 81482                  }
 81483                  return true;
 81484              }
 81485              else if (status) {
 81486                  status.has = 'stale';
 81487                  this.#statusTTL(status, index);
 81488              }
 81489          }
 81490          else if (status) {
 81491              status.has = 'miss';
 81492          }
 81493          return false;
 81494      }
 81495      /**
 81496       * Like {@link LRUCache#get} but doesn't update recency or delete stale
 81497       * items.
 81498       *
 81499       * Returns `undefined` if the item is stale, unless
 81500       * {@link LRUCache.OptionsBase.allowStale} is set.
 81501       */
 81502      peek(k, peekOptions = {}) {
 81503          const { allowStale = this.allowStale } = peekOptions;
 81504          const index = this.#keyMap.get(k);
 81505          if (index === undefined ||
 81506              (!allowStale && this.#isStale(index))) {
 81507              return;
 81508          }
 81509          const v = this.#valList[index];
 81510          // either stale and allowed, or forcing a refresh of non-stale value
 81511          return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;
 81512      }
 81513      #backgroundFetch(k, index, options, context) {
 81514          const v = index === undefined ? undefined : this.#valList[index];
 81515          if (this.#isBackgroundFetch(v)) {
 81516              return v;
 81517          }
 81518          const ac = new AC();
 81519          const { signal } = options;
 81520          // when/if our AC signals, then stop listening to theirs.
 81521          signal?.addEventListener('abort', () => ac.abort(signal.reason), {
 81522              signal: ac.signal,
 81523          });
 81524          const fetchOpts = {
 81525              signal: ac.signal,
 81526              options,
 81527              context,
 81528          };
 81529          const cb = (v, updateCache = false) => {
 81530              const { aborted } = ac.signal;
 81531              const ignoreAbort = options.ignoreFetchAbort && v !== undefined;
 81532              if (options.status) {
 81533                  if (aborted && !updateCache) {
 81534                      options.status.fetchAborted = true;
 81535                      options.status.fetchError = ac.signal.reason;
 81536                      if (ignoreAbort)
 81537                          options.status.fetchAbortIgnored = true;
 81538                  }
 81539                  else {
 81540                      options.status.fetchResolved = true;
 81541                  }
 81542              }
 81543              if (aborted && !ignoreAbort && !updateCache) {
 81544                  return fetchFail(ac.signal.reason);
 81545              }
 81546              // either we didn't abort, and are still here, or we did, and ignored
 81547              const bf = p;
 81548              if (this.#valList[index] === p) {
 81549                  if (v === undefined) {
 81550                      if (bf.__staleWhileFetching) {
 81551                          this.#valList[index] = bf.__staleWhileFetching;
 81552                      }
 81553                      else {
 81554                          this.delete(k);
 81555                      }
 81556                  }
 81557                  else {
 81558                      if (options.status)
 81559                          options.status.fetchUpdated = true;
 81560                      this.set(k, v, fetchOpts.options);
 81561                  }
 81562              }
 81563              return v;
 81564          };
 81565          const eb = (er) => {
 81566              if (options.status) {
 81567                  options.status.fetchRejected = true;
 81568                  options.status.fetchError = er;
 81569              }
 81570              return fetchFail(er);
 81571          };
 81572          const fetchFail = (er) => {
 81573              const { aborted } = ac.signal;
 81574              const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;
 81575              const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;
 81576              const noDelete = allowStale || options.noDeleteOnFetchRejection;
 81577              const bf = p;
 81578              if (this.#valList[index] === p) {
 81579                  // if we allow stale on fetch rejections, then we need to ensure that
 81580                  // the stale value is not removed from the cache when the fetch fails.
 81581                  const del = !noDelete || bf.__staleWhileFetching === undefined;
 81582                  if (del) {
 81583                      this.delete(k);
 81584                  }
 81585                  else if (!allowStaleAborted) {
 81586                      // still replace the *promise* with the stale value,
 81587                      // since we are done with the promise at this point.
 81588                      // leave it untouched if we're still waiting for an
 81589                      // aborted background fetch that hasn't yet returned.
 81590                      this.#valList[index] = bf.__staleWhileFetching;
 81591                  }
 81592              }
 81593              if (allowStale) {
 81594                  if (options.status && bf.__staleWhileFetching !== undefined) {
 81595                      options.status.returnedStale = true;
 81596                  }
 81597                  return bf.__staleWhileFetching;
 81598              }
 81599              else if (bf.__returned === bf) {
 81600                  throw er;
 81601              }
 81602          };
 81603          const pcall = (res, rej) => {
 81604              const fmp = this.#fetchMethod?.(k, v, fetchOpts);
 81605              if (fmp && fmp instanceof Promise) {
 81606                  fmp.then(v => res(v === undefined ? undefined : v), rej);
 81607              }
 81608              // ignored, we go until we finish, regardless.
 81609              // defer check until we are actually aborting,
 81610              // so fetchMethod can override.
 81611              ac.signal.addEventListener('abort', () => {
 81612                  if (!options.ignoreFetchAbort ||
 81613                      options.allowStaleOnFetchAbort) {
 81614                      res(undefined);
 81615                      // when it eventually resolves, update the cache.
 81616                      if (options.allowStaleOnFetchAbort) {
 81617                          res = v => cb(v, true);
 81618                      }
 81619                  }
 81620              });
 81621          };
 81622          if (options.status)
 81623              options.status.fetchDispatched = true;
 81624          const p = new Promise(pcall).then(cb, eb);
 81625          const bf = Object.assign(p, {
 81626              __abortController: ac,
 81627              __staleWhileFetching: v,
 81628              __returned: undefined,
 81629          });
 81630          if (index === undefined) {
 81631              // internal, don't expose status.
 81632              this.set(k, bf, { ...fetchOpts.options, status: undefined });
 81633              index = this.#keyMap.get(k);
 81634          }
 81635          else {
 81636              this.#valList[index] = bf;
 81637          }
 81638          return bf;
 81639      }
 81640      #isBackgroundFetch(p) {
 81641          if (!this.#hasFetchMethod)
 81642              return false;
 81643          const b = p;
 81644          return (!!b &&
 81645              b instanceof Promise &&
 81646              b.hasOwnProperty('__staleWhileFetching') &&
 81647              b.__abortController instanceof AC);
 81648      }
 81649      async fetch(k, fetchOptions = {}) {
 81650          const { 
 81651          // get options
 81652          allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, 
 81653          // set options
 81654          ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, 
 81655          // fetch exclusive options
 81656          noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;
 81657          if (!this.#hasFetchMethod) {
 81658              if (status)
 81659                  status.fetch = 'get';
 81660              return this.get(k, {
 81661                  allowStale,
 81662                  updateAgeOnGet,
 81663                  noDeleteOnStaleGet,
 81664                  status,
 81665              });
 81666          }
 81667          const options = {
 81668              allowStale,
 81669              updateAgeOnGet,
 81670              noDeleteOnStaleGet,
 81671              ttl,
 81672              noDisposeOnSet,
 81673              size,
 81674              sizeCalculation,
 81675              noUpdateTTL,
 81676              noDeleteOnFetchRejection,
 81677              allowStaleOnFetchRejection,
 81678              allowStaleOnFetchAbort,
 81679              ignoreFetchAbort,
 81680              status,
 81681              signal,
 81682          };
 81683          let index = this.#keyMap.get(k);
 81684          if (index === undefined) {
 81685              if (status)
 81686                  status.fetch = 'miss';
 81687              const p = this.#backgroundFetch(k, index, options, context);
 81688              return (p.__returned = p);
 81689          }
 81690          else {
 81691              // in cache, maybe already fetching
 81692              const v = this.#valList[index];
 81693              if (this.#isBackgroundFetch(v)) {
 81694                  const stale = allowStale && v.__staleWhileFetching !== undefined;
 81695                  if (status) {
 81696                      status.fetch = 'inflight';
 81697                      if (stale)
 81698                          status.returnedStale = true;
 81699                  }
 81700                  return stale ? v.__staleWhileFetching : (v.__returned = v);
 81701              }
 81702              // if we force a refresh, that means do NOT serve the cached value,
 81703              // unless we are already in the process of refreshing the cache.
 81704              const isStale = this.#isStale(index);
 81705              if (!forceRefresh && !isStale) {
 81706                  if (status)
 81707                      status.fetch = 'hit';
 81708                  this.#moveToTail(index);
 81709                  if (updateAgeOnGet) {
 81710                      this.#updateItemAge(index);
 81711                  }
 81712                  if (status)
 81713                      this.#statusTTL(status, index);
 81714                  return v;
 81715              }
 81716              // ok, it is stale or a forced refresh, and not already fetching.
 81717              // refresh the cache.
 81718              const p = this.#backgroundFetch(k, index, options, context);
 81719              const hasStale = p.__staleWhileFetching !== undefined;
 81720              const staleVal = hasStale && allowStale;
 81721              if (status) {
 81722                  status.fetch = isStale ? 'stale' : 'refresh';
 81723                  if (staleVal && isStale)
 81724                      status.returnedStale = true;
 81725              }
 81726              return staleVal ? p.__staleWhileFetching : (p.__returned = p);
 81727          }
 81728      }
 81729      /**
 81730       * Return a value from the cache. Will update the recency of the cache
 81731       * entry found.
 81732       *
 81733       * If the key is not found, get() will return `undefined`.
 81734       */
 81735      get(k, getOptions = {}) {
 81736          const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;
 81737          const index = this.#keyMap.get(k);
 81738          if (index !== undefined) {
 81739              const value = this.#valList[index];
 81740              const fetching = this.#isBackgroundFetch(value);
 81741              if (status)
 81742                  this.#statusTTL(status, index);
 81743              if (this.#isStale(index)) {
 81744                  if (status)
 81745                      status.get = 'stale';
 81746                  // delete only if not an in-flight background fetch
 81747                  if (!fetching) {
 81748                      if (!noDeleteOnStaleGet) {
 81749                          this.delete(k);
 81750                      }
 81751                      if (status && allowStale)
 81752                          status.returnedStale = true;
 81753                      return allowStale ? value : undefined;
 81754                  }
 81755                  else {
 81756                      if (status &&
 81757                          allowStale &&
 81758                          value.__staleWhileFetching !== undefined) {
 81759                          status.returnedStale = true;
 81760                      }
 81761                      return allowStale ? value.__staleWhileFetching : undefined;
 81762                  }
 81763              }
 81764              else {
 81765                  if (status)
 81766                      status.get = 'hit';
 81767                  // if we're currently fetching it, we don't actually have it yet
 81768                  // it's not stale, which means this isn't a staleWhileRefetching.
 81769                  // If it's not stale, and fetching, AND has a __staleWhileFetching
 81770                  // value, then that means the user fetched with {forceRefresh:true},
 81771                  // so it's safe to return that value.
 81772                  if (fetching) {
 81773                      return value.__staleWhileFetching;
 81774                  }
 81775                  this.#moveToTail(index);
 81776                  if (updateAgeOnGet) {
 81777                      this.#updateItemAge(index);
 81778                  }
 81779                  return value;
 81780              }
 81781          }
 81782          else if (status) {
 81783              status.get = 'miss';
 81784          }
 81785      }
 81786      #connect(p, n) {
 81787          this.#prev[n] = p;
 81788          this.#next[p] = n;
 81789      }
 81790      #moveToTail(index) {
 81791          // if tail already, nothing to do
 81792          // if head, move head to next[index]
 81793          // else
 81794          //   move next[prev[index]] to next[index] (head has no prev)
 81795          //   move prev[next[index]] to prev[index]
 81796          // prev[index] = tail
 81797          // next[tail] = index
 81798          // tail = index
 81799          if (index !== this.#tail) {
 81800              if (index === this.#head) {
 81801                  this.#head = this.#next[index];
 81802              }
 81803              else {
 81804                  this.#connect(this.#prev[index], this.#next[index]);
 81805              }
 81806              this.#connect(this.#tail, index);
 81807              this.#tail = index;
 81808          }
 81809      }
 81810      /**
 81811       * Deletes a key out of the cache.
 81812       * Returns true if the key was deleted, false otherwise.
 81813       */
 81814      delete(k) {
 81815          let deleted = false;
 81816          if (this.#size !== 0) {
 81817              const index = this.#keyMap.get(k);
 81818              if (index !== undefined) {
 81819                  deleted = true;
 81820                  if (this.#size === 1) {
 81821                      this.clear();
 81822                  }
 81823                  else {
 81824                      this.#removeItemSize(index);
 81825                      const v = this.#valList[index];
 81826                      if (this.#isBackgroundFetch(v)) {
 81827                          v.__abortController.abort(new Error('deleted'));
 81828                      }
 81829                      else if (this.#hasDispose || this.#hasDisposeAfter) {
 81830                          if (this.#hasDispose) {
 81831                              this.#dispose?.(v, k, 'delete');
 81832                          }
 81833                          if (this.#hasDisposeAfter) {
 81834                              this.#disposed?.push([v, k, 'delete']);
 81835                          }
 81836                      }
 81837                      this.#keyMap.delete(k);
 81838                      this.#keyList[index] = undefined;
 81839                      this.#valList[index] = undefined;
 81840                      if (index === this.#tail) {
 81841                          this.#tail = this.#prev[index];
 81842                      }
 81843                      else if (index === this.#head) {
 81844                          this.#head = this.#next[index];
 81845                      }
 81846                      else {
 81847                          const pi = this.#prev[index];
 81848                          this.#next[pi] = this.#next[index];
 81849                          const ni = this.#next[index];
 81850                          this.#prev[ni] = this.#prev[index];
 81851                      }
 81852                      this.#size--;
 81853                      this.#free.push(index);
 81854                  }
 81855              }
 81856          }
 81857          if (this.#hasDisposeAfter && this.#disposed?.length) {
 81858              const dt = this.#disposed;
 81859              let task;
 81860              while ((task = dt?.shift())) {
 81861                  this.#disposeAfter?.(...task);
 81862              }
 81863          }
 81864          return deleted;
 81865      }
 81866      /**
 81867       * Clear the cache entirely, throwing away all values.
 81868       */
 81869      clear() {
 81870          for (const index of this.#rindexes({ allowStale: true })) {
 81871              const v = this.#valList[index];
 81872              if (this.#isBackgroundFetch(v)) {
 81873                  v.__abortController.abort(new Error('deleted'));
 81874              }
 81875              else {
 81876                  const k = this.#keyList[index];
 81877                  if (this.#hasDispose) {
 81878                      this.#dispose?.(v, k, 'delete');
 81879                  }
 81880                  if (this.#hasDisposeAfter) {
 81881                      this.#disposed?.push([v, k, 'delete']);
 81882                  }
 81883              }
 81884          }
 81885          this.#keyMap.clear();
 81886          this.#valList.fill(undefined);
 81887          this.#keyList.fill(undefined);
 81888          if (this.#ttls && this.#starts) {
 81889              this.#ttls.fill(0);
 81890              this.#starts.fill(0);
 81891          }
 81892          if (this.#sizes) {
 81893              this.#sizes.fill(0);
 81894          }
 81895          this.#head = 0;
 81896          this.#tail = 0;
 81897          this.#free.length = 0;
 81898          this.#calculatedSize = 0;
 81899          this.#size = 0;
 81900          if (this.#hasDisposeAfter && this.#disposed) {
 81901              const dt = this.#disposed;
 81902              let task;
 81903              while ((task = dt?.shift())) {
 81904                  this.#disposeAfter?.(...task);
 81905              }
 81906          }
 81907      }
 81908  }
 81909  exports.LRUCache = LRUCache;
 81910  //# sourceMappingURL=index.js.map
 81911  
 81912  /***/ }),
 81913  
 81914  /***/ 78992:
 81915  /***/ ((module) => {
 81916  
 81917  "use strict";
 81918  module.exports = {"i8":"2.3.1"};
 81919  
 81920  /***/ }),
 81921  
 81922  /***/ 84998:
 81923  /***/ ((module) => {
 81924  
 81925  "use strict";
 81926  module.exports = JSON.parse('{"https://tuf-repo-cdn.sigstore.dev":{"root.json":"ewoJInNpZ25lZCI6IHsKCQkiX3R5cGUiOiAicm9vdCIsCgkJInNwZWNfdmVyc2lvbiI6ICIxLjAiLAoJCSJ2ZXJzaW9uIjogOSwKCQkiZXhwaXJlcyI6ICIyMDI0LTA5LTEyVDA2OjUzOjEwWiIsCgkJImtleXMiOiB7CgkJCSIxZTFkNjVjZTk4YjEwYWRkYWQ0NzY0ZmViZjdkZGEyZDA0MzZiM2QzYTM4OTM1NzljMGRkZGFlYTIwZTU0ODQ5IjogewoJCQkJImtleXR5cGUiOiAiZWNkc2EiLAoJCQkJInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKCQkJCSJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCgkJCQkJInNoYTI1NiIsCgkJCQkJInNoYTUxMiIKCQkJCV0sCgkJCQkia2V5dmFsIjogewoJCQkJCSJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXpCelZPbUhDUG9qTVZMU0kzNjRXaWlWOE5QckRcbjZJZ1J4Vmxpc2t6L3YreTNKRVI1bWNWR2NPTmxpRGNXTUM1SjJsZkhtalBOUGhiNEg3eG04THpmU0E9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCgkJCQl9CgkJCX0sCgkJCSIyMzBlMjEyNjE2Mjc0YTQxOTVjZGMyOGU5ZmNlNzgyYzIwZTZjNzIwZjFhODExYjQwZjk4MjI4Mzc2YmRkM2FjIjogewoJCQkJImtleXR5cGUiOiAiZWNkc2EiLAoJCQkJInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKCQkJCSJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCgkJCQkJInNoYTI1NiIsCgkJCQkJInNoYTUxMiIKCQkJCV0sCgkJCQkia2V5dmFsIjogewoJCQkJCSJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUxyV3ZOdDk0djRSMDg1RUxlZUNNeEhwN1BsZEZcbjAvVDFHeHVrVWgyT0R1Z2dMR0pFMHBjMWU4Q1NCZjZDUzkxRndvOUZVT3VSc2pCVWxkK1ZxU3lDZFE9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCgkJCQl9CgkJCX0sCgkJCSIzYzM0NGFhMDY4ZmQ0Y2M0ZTg3ZGM1MGI2MTJjMDI0MzFmYmM3NzFlOTUwMDM5OTM2ODNhMmIwYmYyNjBjZjBlIjogewoJCQkJImtleXR5cGUiOiAiZWNkc2EiLAoJCQkJInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKCQkJCSJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCgkJCQkJInNoYTI1NiIsCgkJCQkJInNoYTUxMiIKCQkJCV0sCgkJCQkia2V5dmFsIjogewoJCQkJCSJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXk4WEtzbWhCWURJOEpjMEd3ekJ4ZUtheDBjbTVcblNUS0VVNjVIUEZ1blVuNDFzVDhwaTBGak00SWtIei9ZVW13bUxVTzBXdDdseGhqNkJrTElLNHFZQXc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCgkJCQl9CgkJCX0sCgkJCSI5MjNiYjM5ZTYwZGQ2ZmEyYzMxZTZlYTU1NDczYWE5M2I2NGRkNGU1M2UxNmZiZTQyZjZhMjA3ZDNmOTdkZTJkIjogewoJCQkJImtleXR5cGUiOiAiZWNkc2EiLAoJCQkJInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKCQkJCSJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCgkJCQkJInNoYTI1NiIsCgkJCQkJInNoYTUxMiIKCQkJCV0sCgkJCQkia2V5dmFsIjogewoJCQkJCSJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVdSaUdyNStqKzNKNVNzSCtadHI1bkUySDJ3TzdcbkJWK25PM3M5M2dMY2ExOHFUT3pIWTFvV3lBR0R5a01Tc0dUVUJTdDlEK0FuMEtmS3NEMm1mU000MlE9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCgkJCQl9CgkJCX0sCgkJCSJlMmY1OWFjYjk0ODg1MTk0MDdlMThjYmZjOTMyOTUxMGJlMDNjMDRhY2E5OTI5ZDJmMDMwMTM0M2ZlYzg1NTIzIjogewoJCQkJImtleXR5cGUiOiAiZWNkc2EiLAoJCQkJInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKCQkJCSJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCgkJCQkJInNoYTI1NiIsCgkJCQkJInNoYTUxMiIKCQkJCV0sCgkJCQkia2V5dmFsIjogewoJCQkJCSJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRWluaWtTc0FRbVlrTmVINWVZcS9Dbkl6TGFhY09cbnhsU2Fhd1FET3dxS3kvdENxeHE1eHhQU0pjMjFLNFdJaHM5R3lPa0tmenVlWTNHSUx6Y01KWjRjV3c9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCgkJCQl9CgkJCX0sCgkJCSJlYzgxNjY5NzM0ZTAxNzk5NmM1Yjg1ZjNkMDJjM2RlMWRkNDYzN2ExNTIwMTlmZTFhZjEyNWQyZjkzNjhiOTVlIjogewoJCQkJImtleXR5cGUiOiAiZWNkc2EiLAoJCQkJInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKCQkJCSJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCgkJCQkJInNoYTI1NiIsCgkJCQkJInNoYTUxMiIKCQkJCV0sCgkJCQkia2V5dmFsIjogewoJCQkJCSJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRUVYc3ozU1pYRmI4ak1WNDJqNnBKbHlqYmpSOEtcbk4zQndvY2V4cTZMTUliNXFzV0tPUXZMTjE2TlVlZkxjNEhzd09vdW1Sc1ZWYWFqU3BRUzZmb2JrUnc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCgkJCQl9CgkJCX0sCgkJCSJmZGZhODNhMDdiNWE4MzU4OWI4N2RlZDQxZjc3ZjM5ZDIzMmFkOTFmN2NjZTUyODY4ZGFjZDA2YmEwODk4NDlmIjogewoJCQkJImtleXR5cGUiOiAiZWNkc2EiLAoJCQkJInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKCQkJCSJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCgkJCQkJInNoYTI1NiIsCgkJCQkJInNoYTUxMiIKCQkJCV0sCgkJCQkia2V5dmFsIjogewoJCQkJCSJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTBnaHJoOTJMdzFZcjNpZEdWNVdxQ3RNREI4Q3hcbitEOGhkQzR3MlpMTklwbFZSb1ZHTHNrWWEzZ2hlTXlPamlKOGtQaTE1YVEyLy83UCtvajdVdkpQR3c9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCgkJCQl9CgkJCX0KCQl9LAoJCSJyb2xlcyI6IHsKCQkJInJvb3QiOiB7CgkJCQkia2V5aWRzIjogWwoJCQkJCSIzYzM0NGFhMDY4ZmQ0Y2M0ZTg3ZGM1MGI2MTJjMDI0MzFmYmM3NzFlOTUwMDM5OTM2ODNhMmIwYmYyNjBjZjBlIiwKCQkJCQkiZWM4MTY2OTczNGUwMTc5OTZjNWI4NWYzZDAyYzNkZTFkZDQ2MzdhMTUyMDE5ZmUxYWYxMjVkMmY5MzY4Yjk1ZSIsCgkJCQkJIjFlMWQ2NWNlOThiMTBhZGRhZDQ3NjRmZWJmN2RkYTJkMDQzNmIzZDNhMzg5MzU3OWMwZGRkYWVhMjBlNTQ4NDkiLAoJCQkJCSJlMmY1OWFjYjk0ODg1MTk0MDdlMThjYmZjOTMyOTUxMGJlMDNjMDRhY2E5OTI5ZDJmMDMwMTM0M2ZlYzg1NTIzIiwKCQkJCQkiZmRmYTgzYTA3YjVhODM1ODliODdkZWQ0MWY3N2YzOWQyMzJhZDkxZjdjY2U1Mjg2OGRhY2QwNmJhMDg5ODQ5ZiIKCQkJCV0sCgkJCQkidGhyZXNob2xkIjogMwoJCQl9LAoJCQkic25hcHNob3QiOiB7CgkJCQkia2V5aWRzIjogWwoJCQkJCSIyMzBlMjEyNjE2Mjc0YTQxOTVjZGMyOGU5ZmNlNzgyYzIwZTZjNzIwZjFhODExYjQwZjk4MjI4Mzc2YmRkM2FjIgoJCQkJXSwKCQkJCSJ0aHJlc2hvbGQiOiAxCgkJCX0sCgkJCSJ0YXJnZXRzIjogewoJCQkJImtleWlkcyI6IFsKCQkJCQkiM2MzNDRhYTA2OGZkNGNjNGU4N2RjNTBiNjEyYzAyNDMxZmJjNzcxZTk1MDAzOTkzNjgzYTJiMGJmMjYwY2YwZSIsCgkJCQkJImVjODE2Njk3MzRlMDE3OTk2YzViODVmM2QwMmMzZGUxZGQ0NjM3YTE1MjAxOWZlMWFmMTI1ZDJmOTM2OGI5NWUiLAoJCQkJCSIxZTFkNjVjZTk4YjEwYWRkYWQ0NzY0ZmViZjdkZGEyZDA0MzZiM2QzYTM4OTM1NzljMGRkZGFlYTIwZTU0ODQ5IiwKCQkJCQkiZTJmNTlhY2I5NDg4NTE5NDA3ZTE4Y2JmYzkzMjk1MTBiZTAzYzA0YWNhOTkyOWQyZjAzMDEzNDNmZWM4NTUyMyIsCgkJCQkJImZkZmE4M2EwN2I1YTgzNTg5Yjg3ZGVkNDFmNzdmMzlkMjMyYWQ5MWY3Y2NlNTI4NjhkYWNkMDZiYTA4OTg0OWYiCgkJCQldLAoJCQkJInRocmVzaG9sZCI6IDMKCQkJfSwKCQkJInRpbWVzdGFtcCI6IHsKCQkJCSJrZXlpZHMiOiBbCgkJCQkJIjkyM2JiMzllNjBkZDZmYTJjMzFlNmVhNTU0NzNhYTkzYjY0ZGQ0ZTUzZTE2ZmJlNDJmNmEyMDdkM2Y5N2RlMmQiCgkJCQldLAoJCQkJInRocmVzaG9sZCI6IDEKCQkJfQoJCX0sCgkJImNvbnNpc3RlbnRfc25hcHNob3QiOiB0cnVlCgl9LAoJInNpZ25hdHVyZXMiOiBbCgkJewoJCQkia2V5aWQiOiAiZmY1MWUxN2ZjZjI1MzExOWI3MDMzZjZmNTc1MTI2MzFkYTRhMDk2OTQ0MmFmY2Y5ZmM4YjE0MWM3ZjJiZTk5YyIsCgkJCSJzaWciOiAiMzA0NTAyMjEwMDhiNzhmODk0YzNjZmVkM2JkNDg2Mzc5YzRlMGUwZGZiM2U3ZGQ4Y2JjNGQ1NTk4ZDI4MThlZWExYmEzYzc1NTAwMjIwMjlkM2QwNmU4OWQwNGQzNzg0OTk4NWRjNDZjMGUxMGRjNWIxZmM2OGRjNzBhZjFlYzk5MTAzMDNhMWYzZWUyZiIKCQl9LAoJCXsKCQkJImtleWlkIjogIjI1YTBlYjQ1MGZkM2VlMmJkNzkyMThjOTYzZGNlM2YxY2M2MTE4YmFkZjI1MWJmMTQ5ZjBiZDA3ZDVjYWJlOTkiLAoJCQkic2lnIjogIjMwNDUwMjIxMDA5ZTZiOTBiOTM1ZTA5YjgzN2E5MGQ0NDAyZWFhMjdkNWVhMjZlYjc4OTE5NDhiYTBlZDcwOTA4NDEyNDhmNDM2MDIyMDAzZGMyMjUxYzRkNGE3OTk5YjkxZTlhZDA4Njg3NjVhZTA5YWM3MjY5Mjc5ZjJhNzg5OWJhZmVmN2EyZDkyNjAiCgkJfSwKCQl7CgkJCSJrZXlpZCI6ICJmNTMxMmY1NDJjMjEyNzNkOTQ4NWE0OTM5NDM4NmM0NTc1ODA0NzcwNjY3ZjJkZGI1OWIzYmYwNjY5ZmRkZDJmIiwKCQkJInNpZyI6ICIzMDQ0MDIyMDA5OWU5MDdkY2Y5MGI3YjZlMTA5ZmQxZDZlNDQyMDA2ZmNjYmI0ODg5NGFhYWZmNDdhYjgyNGIwM2ZiMzVkMGQwMjIwMmFhMGEwNmMyMWE0MjMzZjM3OTAwYTQ4YmM4Nzc3ZDNiNDdmNTllM2EzODYxNmNlNjMxYTA0ZGY1N2Y5NjczNiIKCQl9LAoJCXsKCQkJImtleWlkIjogIjNjMzQ0YWEwNjhmZDRjYzRlODdkYzUwYjYxMmMwMjQzMWZiYzc3MWU5NTAwMzk5MzY4M2EyYjBiZjI2MGNmMGUiLAoJCQkic2lnIjogIjMwNDUwMjIxMDA4Yjc4Zjg5NGMzY2ZlZDNiZDQ4NjM3OWM0ZTBlMGRmYjNlN2RkOGNiYzRkNTU5OGQyODE4ZWVhMWJhM2M3NTUwMDIyMDI5ZDNkMDZlODlkMDRkMzc4NDk5ODVkYzQ2YzBlMTBkYzViMWZjNjhkYzcwYWYxZWM5OTEwMzAzYTFmM2VlMmYiCgkJfSwKCQl7CgkJCSJrZXlpZCI6ICJlYzgxNjY5NzM0ZTAxNzk5NmM1Yjg1ZjNkMDJjM2RlMWRkNDYzN2ExNTIwMTlmZTFhZjEyNWQyZjkzNjhiOTVlIiwKCQkJInNpZyI6ICIzMDQ1MDIyMTAwOWU2YjkwYjkzNWUwOWI4MzdhOTBkNDQwMmVhYTI3ZDVlYTI2ZWI3ODkxOTQ4YmEwZWQ3MDkwODQxMjQ4ZjQzNjAyMjAwM2RjMjI1MWM0ZDRhNzk5OWI5MWU5YWQwODY4NzY1YWUwOWFjNzI2OTI3OWYyYTc4OTliYWZlZjdhMmQ5MjYwIgoJCX0sCgkJewoJCQkia2V5aWQiOiAiZTJmNTlhY2I5NDg4NTE5NDA3ZTE4Y2JmYzkzMjk1MTBiZTAzYzA0YWNhOTkyOWQyZjAzMDEzNDNmZWM4NTUyMyIsCgkJCSJzaWciOiAiMzA0NTAyMjAwZTU2MTNiOTAxZTBmM2UwOGVjZWFiZGRjNzNmOThiNTBkZGY4OTJlOTk4ZDBiMzY5YzZlM2Q0NTFhYzQ4ODc1MDIyMTAwOTQwY2Y5MmQxZjQzZWUyZTVjZGJiMjI1NzJiYjUyOTI1ZWQzODYzYTY4OGY3ZmZkZDRiZDJlMmU1NmYwMjhiMyIKCQl9LAoJCXsKCQkJImtleWlkIjogIjJlNjFjZDBjYmY0YThmNDU4MDliZGE5ZjdmNzhjMGQzM2FkMTE4NDJmZjk0YWUzNDA4NzNlMjY2NGRjODQzZGUiLAoJCQkic2lnIjogIjMwNDUwMjIwMmNmZjQ0ZjIyMTVkN2E0N2IyOGI4ZjVmNTgwYzJjZmJiZDFiZmNmY2JiZTc4ZGUzMjMwNDViMmMwYmFkYzVlOTAyMjEwMGM3NDM5NDllYjNmNGVhNWE0YjlhZTI3YWM2ZWRkZWExZjBmZjliZmQwMDRmOGE5YTlkMThjNmU0MTQyYjZlNzUiCgkJfSwKCQl7CgkJCSJrZXlpZCI6ICIxZTFkNjVjZTk4YjEwYWRkYWQ0NzY0ZmViZjdkZGEyZDA0MzZiM2QzYTM4OTM1NzljMGRkZGFlYTIwZTU0ODQ5IiwKCQkJInNpZyI6ICIzMDQ0MDIyMDA5OWU5MDdkY2Y5MGI3YjZlMTA5ZmQxZDZlNDQyMDA2ZmNjYmI0ODg5NGFhYWZmNDdhYjgyNGIwM2ZiMzVkMGQwMjIwMmFhMGEwNmMyMWE0MjMzZjM3OTAwYTQ4YmM4Nzc3ZDNiNDdmNTllM2EzODYxNmNlNjMxYTA0ZGY1N2Y5NjczNiIKCQl9LAoJCXsKCQkJImtleWlkIjogImZkZmE4M2EwN2I1YTgzNTg5Yjg3ZGVkNDFmNzdmMzlkMjMyYWQ5MWY3Y2NlNTI4NjhkYWNkMDZiYTA4OTg0OWYiLAoJCQkic2lnIjogIjMwNDUwMjIwMmNmZjQ0ZjIyMTVkN2E0N2IyOGI4ZjVmNTgwYzJjZmJiZDFiZmNmY2JiZTc4ZGUzMjMwNDViMmMwYmFkYzVlOTAyMjEwMGM3NDM5NDllYjNmNGVhNWE0YjlhZTI3YWM2ZWRkZWExZjBmZjliZmQwMDRmOGE5YTlkMThjNmU0MTQyYjZlNzUiCgkJfSwKCQl7CgkJCSJrZXlpZCI6ICI3Zjc1MTNiMjU0MjlhNjQ0NzNlMTBjZTNhZDJmM2RhMzcyYmJkZDE0YjY1ZDA3YmJhZjU0N2U3YzhiYmJlNjJiIiwKCQkJInNpZyI6ICIzMDQ1MDIyMDBlNTYxM2I5MDFlMGYzZTA4ZWNlYWJkZGM3M2Y5OGI1MGRkZjg5MmU5OThkMGIzNjljNmUzZDQ1MWFjNDg4NzUwMjIxMDA5NDBjZjkyZDFmNDNlZTJlNWNkYmIyMjU3MmJiNTI5MjVlZDM4NjNhNjg4ZjdmZmRkNGJkMmUyZTU2ZjAyOGIzIgoJCX0KCV0KfQ==","targets":{"trusted_root.json":"ewogICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS50cnVzdGVkcm9vdCtqc29uO3ZlcnNpb249MC4xIiwKICAidGxvZ3MiOiBbCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vcmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUyRzJZKzJ0YWJkVFY1QmNHaUJJeDBhOWZBRndya0JibUxTR3RrczRMM3FYNnlZWTB6dWZCbmhDOFVyL2l5NTVHaFdQLzlBL2JZMkxoQzMwTTkrUll0dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDEtMTJUMTE6NTM6MjcuMDAwWiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAid05JOWF0UUdseitWV2ZPNkxSeWdINFFVZlkvOFc0UkZ3aVQ1aTVXUmdCMD0iCiAgICAgIH0KICAgIH0KICBdLAogICJjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzIjogWwogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly9mdWxjaW8uc2lnc3RvcmUuZGV2IiwKICAgICAgImNlcnRDaGFpbiI6IHsKICAgICAgICAiY2VydGlmaWNhdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQitEQ0NBWDZnQXdJQkFnSVROVmtEWm9DaW9mUERzeTdkZm02Z2VMYnVoekFLQmdncWhrak9QUVFEQXpBcU1SVXdFd1lEVlFRS0V3eHphV2R6ZEc5eVpTNWtaWFl4RVRBUEJnTlZCQU1UQ0hOcFozTjBiM0psTUI0WERUSXhNRE13TnpBek1qQXlPVm9YRFRNeE1ESXlNekF6TWpBeU9Wb3dLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQjJNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWlBMklBQkxTeUE3SWk1aytwTk84WkVXWTB5bGVtV0Rvd09rTmEza0wrR1pFNVo1R1dlaEw5L0E5YlJOQTNSYnJzWjVpMEpjYXN0YVJMN1NwNWZwL2pENWR4cWMvVWRUVm5sdlMxNmFuKzJZZnN3ZS9RdUxvbFJVQ3JjT0UyKzJpQTUrdHpkNk5tTUdRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFFd0hRWURWUjBPQkJZRUZNakZIUUJCbWlRcE1sRWs2dzJ1U3UxS0J0UHNNQjhHQTFVZEl3UVlNQmFBRk1qRkhRQkJtaVFwTWxFazZ3MnVTdTFLQnRQc01Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01IOGxpV0pmTXVpNnZYWEJoakRnWTRNd3NsbU4vVEp4VmUvODNXckZvbXdtTmYwNTZ5MVg0OEY5YzRtM2Ezb3pYQUl4QUtqUmF5NS9hai9qc0tLR0lrbVFhdGpJOHV1cEhyLytDeEZ2YUpXbXBZcU5rTERHUlUrOW9yemg1aEkyUnJjdWFRPT0iCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMDdUMDM6MjA6MjkuMDAwWiIsCiAgICAgICAgImVuZCI6ICIyMDIyLTEyLTMxVDIzOjU5OjU5Ljk5OVoiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAic2lnc3RvcmUuZGV2IiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJzaWdzdG9yZSIKICAgICAgfSwKICAgICAgInVyaSI6ICJodHRwczovL2Z1bGNpby5zaWdzdG9yZS5kZXYiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlDR2pDQ0FhR2dBd0lCQWdJVUFMblZpVmZuVTBickphc21Sa0hybi9VbmZhUXdDZ1lJS29aSXpqMEVBd013S2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweU1qQTBNVE15TURBMk1UVmFGdzB6TVRFd01EVXhNelUyTlRoYU1EY3hGVEFUQmdOVkJBb1RESE5wWjNOMGIzSmxMbVJsZGpFZU1Cd0dBMVVFQXhNVmMybG5jM1J2Y21VdGFXNTBaWEp0WldScFlYUmxNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRThSVlMveXNIK05PdnVEWnlQSVp0aWxnVUY5TmxhcllwQWQ5SFAxdkJCSDFVNUNWNzdMU1M3czBaaUg0bkU3SHY3cHRTNkx2dlIvU1RrNzk4TFZnTXpMbEo0SGVJZkYzdEhTYWV4TGNZcFNBU3Ixa1MwTi9SZ0JKei85aldDaVhubzNzd2VUQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3TXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMzlQcHoxWWtFWmI1cU5qcEtGV2l4aTRZWkQ4d0h3WURWUjBqQkJnd0ZvQVVXTUFlWDVGRnBXYXBlc3lRb1pNaTBDckZ4Zm93Q2dZSUtvWkl6ajBFQXdNRFp3QXdaQUl3UENzUUs0RFlpWllEUElhRGk1SEZLbmZ4WHg2QVNTVm1FUmZzeW5ZQmlYMlg2U0pSblpVODQvOURaZG5GdnZ4bUFqQk90NlFwQmxjNEovMER4dmtUQ3FwY2x2emlMNkJDQ1BuamRsSUIzUHUzQnhzUG15Z1VZN0lpMnpiZENkbGlpb3c9IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUI5ekNDQVh5Z0F3SUJBZ0lVQUxaTkFQRmR4SFB3amVEbG9Ed3lZQ2hBTy80d0NnWUlLb1pJemowRUF3TXdLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQWVGdzB5TVRFd01EY3hNelUyTlRsYUZ3MHpNVEV3TURVeE16VTJOVGhhTUNveEZUQVRCZ05WQkFvVERITnBaM04wYjNKbExtUmxkakVSTUE4R0ExVUVBeE1JYzJsbmMzUnZjbVV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVDdYZUZUNHJiM1BRR3dTNElhanRMazMvT2xucGdhbmdhQmNsWXBzWUJyNWkrNHluQjA3Y2ViM0xQME9JT1pkeGV4WDY5YzVpVnV5SlJRK0h6MDV5aStVRjN1QldBbEhwaVM1c2gwK0gyR0hFN1NYcmsxRUM1bTFUcjE5TDlnZzkyall6QmhNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUll3QjVma1VXbFpxbDZ6SkNoa3lMUUtzWEYrakFmQmdOVkhTTUVHREFXZ0JSWXdCNWZrVVdsWnFsNnpKQ2hreUxRS3NYRitqQUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUFqMW5IZVhacCsxM05XQk5hK0VEc0RQOEcxV1dnMXRDTVdQL1dIUHFwYVZvMGpoc3dlTkZaZ1NzMGVFN3dZSTRxQWpFQTJXQjlvdDk4c0lrb0YzdlpZZGQzL1Z0V0I1YjlUTk1lYTdJeC9zdEo1VGZjTExlQUJMRTRCTkpPc1E0dm5CSEoiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjItMDQtMTNUMjA6MDY6MTUuMDAwWiIKICAgICAgfQogICAgfQogIF0sCiAgImN0bG9ncyI6IFsKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi90ZXN0IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUViZndSK1JKdWRYc2NnUkJScEtYMVhGRHkzUHl1ZER4ei9TZm5SaTFmVDhla3BmQmQyTzF1b3o3anIzWjhuS3p4QTY5RVVRK2VGQ0ZJM3pldWJQV1U3dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMTRUMDA6MDA6MDAuMDAwWiIsCiAgICAgICAgICAiZW5kIjogIjIwMjItMTAtMzFUMjM6NTk6NTkuOTk5WiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAiQ0dDUzhDaFMvMmhGMGRGcko0U2NSV2NZckJZOXd6alNiZWE4SWdZMmIzST0iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vY3RmZS5zaWdzdG9yZS5kZXYvMjAyMiIsCiAgICAgICJoYXNoQWxnb3JpdGhtIjogIlNIQTJfMjU2IiwKICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAicmF3Qnl0ZXMiOiAiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFaVBTbEZpMENtRlRmRWpDVXFGOUh1Q0VjWVhOS0FhWWFsSUptQlo4eXllelBqVHFoeHJLQnBNbmFvY1Z0TEpCSTFlTTN1WG5RelFHQUpkSjRnczlGeXc9PSIsCiAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICJzdGFydCI6ICIyMDIyLTEwLTIwVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgfQogICAgICB9LAogICAgICAibG9nSWQiOiB7CiAgICAgICAgImtleUlkIjogIjNUMHdhc2JIRVRKakdSNGNtV2MzQXFKS1hyamVQSzMvaDRweWdDOHA3bzQ9IgogICAgICB9CiAgICB9CiAgXSwKICAidGltZXN0YW1wQXV0aG9yaXRpZXMiOiBbCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAiR2l0SHViLCBJbmMuIiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJJbnRlcm5hbCBTZXJ2aWNlcyBSb290IgogICAgICB9LAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCM0RDQ0FXS2dBd0lCQWdJVWNoa05zSDM2WGEwNGIxTHFJYytxcjlEVmVjTXdDZ1lJS29aSXpqMEVBd013TWpFVk1CTUdBMVVFQ2hNTVIybDBTSFZpTENCSmJtTXVNUmt3RndZRFZRUURFeEJVVTBFZ2FXNTBaWEp0WldScFlYUmxNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVEkwTURReE16QXdNREF3TUZvd01qRVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVJrd0Z3WURWUVFERXhCVVUwRWdWR2x0WlhOMFlXMXdhVzVuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVUQ1Wk5iU3FZTWQ2cjhxcE9PRVg5aWJHblpUOUdzdVhPaHIvZjhVOUZKdWdCR0V4S1lwNDBPVUxTMGVyalpXN3hWOXhWNTJObkpmNU9lRHE0ZTVaS3FOV01GUXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUlNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVhVzFSdWRPZ1Z0MGxlcVkwV0tZYnVQcjQ3d0F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl3YlVIOUh2RDRlakNaSk9XUW5xQWxrcVVSbGx2dTlNOCtWcUxiaVJLK3pTZlpDWndzaWxqUm44TVFRUlNrWEVFNUFqRUFnK1Z4cXRvamZWZnU4RGh6emhDeDlHS0VUYkpIYjE5aVY3Mm1NS1ViREFGbXpaNmJROGI1NFpiOHRpZHk1YVdlIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUNFRENDQVpXZ0F3SUJBZ0lVWDhaTzVRWFA3dk40ZE1RNWU5c1UzbnViOE9nd0NnWUlLb1pJemowRUF3TXdPREVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1SOHdIUVlEVlFRREV4WkpiblJsY201aGJDQlRaWEoyYVdObGN5QlNiMjkwTUI0WERUSXpNRFF4TkRBd01EQXdNRm9YRFRJNE1EUXhNakF3TURBd01Gb3dNakVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1Sa3dGd1lEVlFRREV4QlVVMEVnYVc1MFpYSnRaV1JwWVhSbE1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdk1MWS9kVFZidklKWUFOQXVzekV3Sm5RRTFsbGZ0eW55TUtJTWhoNDhIbXFiVnI1eWd5YnpzTFJMVktiQldPZFoyMWFlSnorZ1ppeXRaZXRxY3lGOVdsRVI1TkVNZjZKVjdaTm9qUXB4SHE0UkhHb0dTY2VRdi9xdlRpWnhFREtvMll3WkRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVWFXMVJ1ZE9nVnQwbGVxWTBXS1lidVByNDd3QXdId1lEVlIwakJCZ3dGb0FVOU5ZWWxvYm5BRzRjMC9xanh5SC9scS93eitRd0NnWUlLb1pJemowRUF3TURhUUF3WmdJeEFLMUIxODV5Z0NySVlGbElzM0dqc3dqbndTTUc2TFk4d29MVmRha0tEWnhWYThmOGNxTXMxRGhjeEowKzA5dzk1UUl4QU8rdEJ6Wms3dmpVSjlpSmdENFI2WldUeFFXS3FObTc0ak85OW8rbzlzdjRGSS9TWlRaVEZ5TW4wSUpFSGRObXlBPT0iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQjlEQ0NBWHFnQXdJQkFnSVVhL0pBa2RVaks0SlV3c3F0YWlSSkdXaHFMU293Q2dZSUtvWkl6ajBFQXdNd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVE16TURReE1UQXdNREF3TUZvd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRWY5akZBWHh6NGt4NjhBSFJNT2tGQmhmbERjTVR2emFYejR4L0ZDY1hqSi8xcUVLb24vcVBJR25hVVJza0R0eU5iTkRPcGVKVERERnF0NDhpTVBybnpweDZJWndxZW1mVUpONHhCRVpmemErcFl0L2l5b2QrOXRacjIwUlJXU3YvbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFqQWRCZ05WSFE0RUZnUVU5TllZbG9ibkFHNGMwL3FqeHlIL2xxL3d6K1F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QUxaTFo4QmdSWHpLeExNTU45VklsTytlNGhyQm5OQmdGN3R6N0hucm93djJOZXRaRXJJQUNLRnltQmx2V0R2dE1BSXdaTytraTZzc1ExYnNabzk4TzhtRUFmMk5aN2lpQ2dERFUwVndqZWNvNnp5ZWgwekJUczkvN2dWNkFITlE1M3hEIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZhbGlkRm9yIjogewogICAgICAgICJzdGFydCI6ICIyMDIzLTA0LTE0VDAwOjAwOjAwLjAwMFoiCiAgICAgIH0KICAgIH0KICBdCn0K","registry.npmjs.org%2Fkeys.json":"ewogICAgImtleXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OmpsM2J3c3d1ODBQampva0NnaDBvMnc1YzJVNExoUUFFNTdnajljejFrekEiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIxOTk5LTAxLTAxVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImtleUlkIjogIlNIQTI1NjpqbDNid3N3dTgwUGpqb2tDZ2gwbzJ3NWMyVTRMaFFBRTU3Z2o5Y3oxa3pBIiwKICAgICAgICAgICAgImtleVVzYWdlIjogIm5wbTphdHRlc3RhdGlvbnMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDIyLTEyLTAxVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdCn0K"}}}');
 81927  
 81928  /***/ }),
 81929  
 81930  /***/ 51526:
 81931  /***/ ((module) => {
 81932  
 81933  "use strict";
 81934  module.exports = JSON.parse('{"Jw":{"k":"2","K":"5"}}');
 81935  
 81936  /***/ }),
 81937  
 81938  /***/ 63480:
 81939  /***/ ((module) => {
 81940  
 81941  "use strict";
 81942  module.exports = JSON.parse('[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","■"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]');
 81943  
 81944  /***/ }),
 81945  
 81946  /***/ 13336:
 81947  /***/ ((module) => {
 81948  
 81949  "use strict";
 81950  module.exports = JSON.parse('[["0","\\u0000",127,"€"],["8140","丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪",5,"乲乴",9,"乿",6,"亇亊"],["8180","亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂",6,"伋伌伒",4,"伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾",4,"佄佅佇",5,"佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢"],["8240","侤侫侭侰",4,"侶",8,"俀俁係俆俇俈俉俋俌俍俒",4,"俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿",11],["8280","個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯",10,"倻倽倿偀偁偂偄偅偆偉偊偋偍偐",4,"偖偗偘偙偛偝",7,"偦",5,"偭",8,"偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎",20,"傤傦傪傫傭",4,"傳",6,"傼"],["8340","傽",17,"僐",5,"僗僘僙僛",10,"僨僩僪僫僯僰僱僲僴僶",4,"僼",9,"儈"],["8380","儉儊儌",5,"儓",13,"儢",28,"兂兇兊兌兎兏児兒兓兗兘兙兛兝",4,"兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦",4,"冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒",5],["8440","凘凙凚凜凞凟凢凣凥",5,"凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄",5,"剋剎剏剒剓剕剗剘"],["8480","剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳",9,"剾劀劃",4,"劉",6,"劑劒劔",6,"劜劤劥劦劧劮劯劰労",9,"勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務",5,"勠勡勢勣勥",10,"勱",7,"勻勼勽匁匂匃匄匇匉匊匋匌匎"],["8540","匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯",9,"匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏"],["8580","厐",4,"厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯",6,"厷厸厹厺厼厽厾叀參",4,"収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝",4,"呣呥呧呩",7,"呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡"],["8640","咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠",4,"哫哬哯哰哱哴",5,"哻哾唀唂唃唄唅唈唊",4,"唒唓唕",5,"唜唝唞唟唡唥唦"],["8680","唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋",4,"啑啒啓啔啗",4,"啝啞啟啠啢啣啨啩啫啯",5,"啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠",6,"喨",8,"喲喴営喸喺喼喿",4,"嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗",4,"嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸",4,"嗿嘂嘃嘄嘅"],["8740","嘆嘇嘊嘋嘍嘐",7,"嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀",11,"噏",4,"噕噖噚噛噝",4],["8780","噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽",7,"嚇",6,"嚐嚑嚒嚔",14,"嚤",10,"嚰",6,"嚸嚹嚺嚻嚽",12,"囋",8,"囕囖囘囙囜団囥",5,"囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國",6],["8840","園",9,"圝圞圠圡圢圤圥圦圧圫圱圲圴",4,"圼圽圿坁坃坄坅坆坈坉坋坒",4,"坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀"],["8880","垁垇垈垉垊垍",4,"垔",6,"垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹",8,"埄",6,"埌埍埐埑埓埖埗埛埜埞埡埢埣埥",7,"埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥",4,"堫",4,"報堲堳場堶",7],["8940","堾",5,"塅",6,"塎塏塐塒塓塕塖塗塙",4,"塟",5,"塦",4,"塭",16,"塿墂墄墆墇墈墊墋墌"],["8980","墍",4,"墔",4,"墛墜墝墠",7,"墪",17,"墽墾墿壀壂壃壄壆",10,"壒壓壔壖",13,"壥",5,"壭壯壱売壴壵壷壸壺",7,"夃夅夆夈",4,"夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻"],["8a40","夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛",4,"奡奣奤奦",12,"奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦"],["8a80","妧妬妭妰妱妳",5,"妺妼妽妿",6,"姇姈姉姌姍姎姏姕姖姙姛姞",4,"姤姦姧姩姪姫姭",11,"姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪",6,"娳娵娷",4,"娽娾娿婁",4,"婇婈婋",9,"婖婗婘婙婛",5],["8b40","婡婣婤婥婦婨婩婫",8,"婸婹婻婼婽婾媀",17,"媓",6,"媜",13,"媫媬"],["8b80","媭",4,"媴媶媷媹",4,"媿嫀嫃",5,"嫊嫋嫍",4,"嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬",4,"嫲",22,"嬊",11,"嬘",25,"嬳嬵嬶嬸",7,"孁",6],["8c40","孈",7,"孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏"],["8c80","寑寔",8,"寠寢寣實寧審",4,"寯寱",6,"寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧",6,"屰屲",6,"屻屼屽屾岀岃",4,"岉岊岋岎岏岒岓岕岝",4,"岤",4],["8d40","岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅",5,"峌",5,"峓",5,"峚",6,"峢峣峧峩峫峬峮峯峱",9,"峼",4],["8d80","崁崄崅崈",5,"崏",4,"崕崗崘崙崚崜崝崟",4,"崥崨崪崫崬崯",4,"崵",7,"崿",7,"嵈嵉嵍",10,"嵙嵚嵜嵞",10,"嵪嵭嵮嵰嵱嵲嵳嵵",12,"嶃",21,"嶚嶛嶜嶞嶟嶠"],["8e40","嶡",21,"嶸",12,"巆",6,"巎",12,"巜巟巠巣巤巪巬巭"],["8e80","巰巵巶巸",4,"巿帀帄帇帉帊帋帍帎帒帓帗帞",7,"帨",4,"帯帰帲",4,"帹帺帾帿幀幁幃幆",5,"幍",6,"幖",4,"幜幝幟幠幣",14,"幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨",4,"庮",4,"庴庺庻庼庽庿",6],["8f40","廆廇廈廋",5,"廔廕廗廘廙廚廜",11,"廩廫",8,"廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤"],["8f80","弨弫弬弮弰弲",6,"弻弽弾弿彁",14,"彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢",5,"復徫徬徯",5,"徶徸徹徺徻徾",4,"忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇"],["9040","怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰",4,"怶",4,"怽怾恀恄",6,"恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀"],["9080","悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽",7,"惇惈惉惌",4,"惒惓惔惖惗惙惛惞惡",4,"惪惱惲惵惷惸惻",4,"愂愃愄愅愇愊愋愌愐",4,"愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬",18,"慀",6],["9140","慇慉態慍慏慐慒慓慔慖",6,"慞慟慠慡慣慤慥慦慩",6,"慱慲慳慴慶慸",18,"憌憍憏",4,"憕"],["9180","憖",6,"憞",8,"憪憫憭",9,"憸",5,"憿懀懁懃",4,"應懌",4,"懓懕",16,"懧",13,"懶",8,"戀",5,"戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸",4,"扂扄扅扆扊"],["9240","扏扐払扖扗扙扚扜",6,"扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋",5,"抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁"],["9280","拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳",5,"挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖",7,"捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙",6,"採掤掦掫掯掱掲掵掶掹掻掽掿揀"],["9340","揁揂揃揅揇揈揊揋揌揑揓揔揕揗",6,"揟揢揤",4,"揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆",4,"損搎搑搒搕",5,"搝搟搢搣搤"],["9380","搥搧搨搩搫搮",5,"搵",4,"搻搼搾摀摂摃摉摋",6,"摓摕摖摗摙",4,"摟",7,"摨摪摫摬摮",9,"摻",6,"撃撆撈",8,"撓撔撗撘撚撛撜撝撟",4,"撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆",6,"擏擑擓擔擕擖擙據"],["9440","擛擜擝擟擠擡擣擥擧",24,"攁",7,"攊",7,"攓",4,"攙",8],["9480","攢攣攤攦",4,"攬攭攰攱攲攳攷攺攼攽敀",4,"敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數",14,"斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱",7,"斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘",7,"旡旣旤旪旫"],["9540","旲旳旴旵旸旹旻",4,"昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷",4,"昽昿晀時晄",6,"晍晎晐晑晘"],["9580","晙晛晜晝晞晠晢晣晥晧晩",4,"晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘",4,"暞",8,"暩",4,"暯",4,"暵暶暷暸暺暻暼暽暿",25,"曚曞",7,"曧曨曪",5,"曱曵曶書曺曻曽朁朂會"],["9640","朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠",5,"朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗",4,"杝杢杣杤杦杧杫杬杮東杴杶"],["9680","杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹",7,"柂柅",9,"柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵",7,"柾栁栂栃栄栆栍栐栒栔栕栘",4,"栞栟栠栢",6,"栫",6,"栴栵栶栺栻栿桇桋桍桏桒桖",5],["9740","桜桝桞桟桪桬",7,"桵桸",8,"梂梄梇",7,"梐梑梒梔梕梖梘",9,"梣梤梥梩梪梫梬梮梱梲梴梶梷梸"],["9780","梹",6,"棁棃",5,"棊棌棎棏棐棑棓棔棖棗棙棛",4,"棡棢棤",9,"棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆",4,"椌椏椑椓",11,"椡椢椣椥",7,"椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃",16,"楕楖楘楙楛楜楟"],["9840","楡楢楤楥楧楨楩楪楬業楯楰楲",4,"楺楻楽楾楿榁榃榅榊榋榌榎",5,"榖榗榙榚榝",9,"榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽"],["9880","榾榿槀槂",7,"構槍槏槑槒槓槕",5,"槜槝槞槡",11,"槮槯槰槱槳",9,"槾樀",9,"樋",11,"標",5,"樠樢",5,"権樫樬樭樮樰樲樳樴樶",6,"樿",4,"橅橆橈",7,"橑",6,"橚"],["9940","橜",4,"橢橣橤橦",10,"橲",6,"橺橻橽橾橿檁檂檃檅",8,"檏檒",4,"檘",7,"檡",5],["9980","檧檨檪檭",114,"欥欦欨",6],["9a40","欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍",11,"歚",7,"歨歩歫",13,"歺歽歾歿殀殅殈"],["9a80","殌殎殏殐殑殔殕殗殘殙殜",4,"殢",7,"殫",7,"殶殸",6,"毀毃毄毆",4,"毌毎毐毑毘毚毜",4,"毢",7,"毬毭毮毰毱毲毴毶毷毸毺毻毼毾",6,"氈",4,"氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋",4,"汑汒汓汖汘"],["9b40","汙汚汢汣汥汦汧汫",4,"汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘"],["9b80","泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟",5,"洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽",4,"涃涄涆涇涊涋涍涏涐涒涖",4,"涜涢涥涬涭涰涱涳涴涶涷涹",5,"淁淂淃淈淉淊"],["9c40","淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽",7,"渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵"],["9c80","渶渷渹渻",7,"湅",7,"湏湐湑湒湕湗湙湚湜湝湞湠",10,"湬湭湯",14,"満溁溂溄溇溈溊",4,"溑",6,"溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪",5],["9d40","滰滱滲滳滵滶滷滸滺",7,"漃漄漅漇漈漊",4,"漐漑漒漖",9,"漡漢漣漥漦漧漨漬漮漰漲漴漵漷",6,"漿潀潁潂"],["9d80","潃潄潅潈潉潊潌潎",9,"潙潚潛潝潟潠潡潣潤潥潧",5,"潯潰潱潳潵潶潷潹潻潽",6,"澅澆澇澊澋澏",12,"澝澞澟澠澢",4,"澨",10,"澴澵澷澸澺",5,"濁濃",5,"濊",6,"濓",10,"濟濢濣濤濥"],["9e40","濦",7,"濰",32,"瀒",7,"瀜",6,"瀤",6],["9e80","瀫",9,"瀶瀷瀸瀺",17,"灍灎灐",13,"灟",11,"灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞",12,"炰炲炴炵炶為炾炿烄烅烆烇烉烋",12,"烚"],["9f40","烜烝烞烠烡烢烣烥烪烮烰",6,"烸烺烻烼烾",10,"焋",4,"焑焒焔焗焛",10,"焧",7,"焲焳焴"],["9f80","焵焷",13,"煆煇煈煉煋煍煏",12,"煝煟",4,"煥煩",4,"煯煰煱煴煵煶煷煹煻煼煾",5,"熅",4,"熋熌熍熎熐熑熒熓熕熖熗熚",4,"熡",6,"熩熪熫熭",5,"熴熶熷熸熺",8,"燄",9,"燏",4],["a040","燖",9,"燡燢燣燤燦燨",5,"燯",9,"燺",11,"爇",19],["a080","爛爜爞",9,"爩爫爭爮爯爲爳爴爺爼爾牀",6,"牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅",4,"犌犎犐犑犓",11,"犠",11,"犮犱犲犳犵犺",6,"狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛"],["a1a1"," 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈",7,"〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓"],["a2a1","ⅰ",9],["a2b1","⒈",19,"⑴",19,"①",9],["a2e5","㈠",9],["a2f1","Ⅰ",11],["a3a1","!"#¥%",88," ̄"],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a6e0","︵︶︹︺︿﹀︽︾﹁﹂﹃﹄"],["a6ee","︻︼︷︸︱"],["a6f4","︳︴"],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a840","ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═",35,"▁",6],["a880","█",7,"▓▔▕▼▽◢◣◤◥☉⊕〒〝〞"],["a8a1","āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ"],["a8bd","ńň"],["a8c0","ɡ"],["a8c5","ㄅ",36],["a940","〡",8,"㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦"],["a959","℡㈱"],["a95c","‐"],["a960","ー゛゜ヽヾ〆ゝゞ﹉",9,"﹔﹕﹖﹗﹙",8],["a980","﹢",4,"﹨﹩﹪﹫"],["a996","〇"],["a9a4","─",75],["aa40","狜狝狟狢",5,"狪狫狵狶狹狽狾狿猀猂猄",5,"猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀",8],["aa80","獉獊獋獌獎獏獑獓獔獕獖獘",7,"獡",10,"獮獰獱"],["ab40","獲",11,"獿",4,"玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣",5,"玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃",4],["ab80","珋珌珎珒",6,"珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳",4],["ac40","珸",10,"琄琇琈琋琌琍琎琑",8,"琜",5,"琣琤琧琩琫琭琯琱琲琷",4,"琽琾琿瑀瑂",11],["ac80","瑎",6,"瑖瑘瑝瑠",12,"瑮瑯瑱",4,"瑸瑹瑺"],["ad40","瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑",10,"璝璟",7,"璪",15,"璻",12],["ad80","瓈",9,"瓓",8,"瓝瓟瓡瓥瓧",6,"瓰瓱瓲"],["ae40","瓳瓵瓸",6,"甀甁甂甃甅",7,"甎甐甒甔甕甖甗甛甝甞甠",4,"甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘"],["ae80","畝",7,"畧畨畩畫",6,"畳畵當畷畺",4,"疀疁疂疄疅疇"],["af40","疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦",4,"疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇"],["af80","瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄"],["b040","癅",6,"癎",5,"癕癗",4,"癝癟癠癡癢癤",6,"癬癭癮癰",7,"癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛"],["b080","皜",7,"皥",8,"皯皰皳皵",9,"盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥"],["b140","盄盇盉盋盌盓盕盙盚盜盝盞盠",4,"盦",7,"盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎",10,"眛眜眝眞眡眣眤眥眧眪眫"],["b180","眬眮眰",4,"眹眻眽眾眿睂睄睅睆睈",7,"睒",7,"睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳"],["b240","睝睞睟睠睤睧睩睪睭",11,"睺睻睼瞁瞂瞃瞆",5,"瞏瞐瞓",11,"瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶",4],["b280","瞼瞾矀",12,"矎",8,"矘矙矚矝",4,"矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖"],["b340","矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃",5,"砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚"],["b380","硛硜硞",11,"硯",7,"硸硹硺硻硽",6,"场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚"],["b440","碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨",7,"碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚",9],["b480","磤磥磦磧磩磪磫磭",4,"磳磵磶磸磹磻",5,"礂礃礄礆",6,"础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮"],["b540","礍",5,"礔",9,"礟",4,"礥",14,"礵",4,"礽礿祂祃祄祅祇祊",8,"祔祕祘祙祡祣"],["b580","祤祦祩祪祫祬祮祰",6,"祹祻",4,"禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠"],["b640","禓",6,"禛",11,"禨",10,"禴",4,"禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙",5,"秠秡秢秥秨秪"],["b680","秬秮秱",6,"秹秺秼秾秿稁稄稅稇稈稉稊稌稏",4,"稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二"],["b740","稝稟稡稢稤",14,"稴稵稶稸稺稾穀",5,"穇",9,"穒",4,"穘",16],["b780","穩",6,"穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服"],["b840","窣窤窧窩窪窫窮",4,"窴",10,"竀",10,"竌",9,"竗竘竚竛竜竝竡竢竤竧",5,"竮竰竱竲竳"],["b880","竴",4,"竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹"],["b940","笯笰笲笴笵笶笷笹笻笽笿",5,"筆筈筊筍筎筓筕筗筙筜筞筟筡筣",10,"筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆",6,"箎箏"],["b980","箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹",7,"篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈"],["ba40","篅篈築篊篋篍篎篏篐篒篔",4,"篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲",4,"篸篹篺篻篽篿",7,"簈簉簊簍簎簐",5,"簗簘簙"],["ba80","簚",4,"簠",5,"簨簩簫",12,"簹",5,"籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖"],["bb40","籃",9,"籎",36,"籵",5,"籾",9],["bb80","粈粊",6,"粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴",4,"粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕"],["bc40","粿糀糂糃糄糆糉糋糎",6,"糘糚糛糝糞糡",6,"糩",5,"糰",7,"糹糺糼",13,"紋",5],["bc80","紑",14,"紡紣紤紥紦紨紩紪紬紭紮細",6,"肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件"],["bd40","紷",54,"絯",7],["bd80","絸",32,"健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸"],["be40","継",12,"綧",6,"綯",42],["be80","線",32,"尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻"],["bf40","緻",62],["bf80","縺縼",4,"繂",4,"繈",21,"俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀"],["c040","繞",35,"纃",23,"纜纝纞"],["c080","纮纴纻纼绖绤绬绹缊缐缞缷缹缻",6,"罃罆",9,"罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐"],["c140","罖罙罛罜罝罞罠罣",4,"罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂",7,"羋羍羏",4,"羕",4,"羛羜羠羢羣羥羦羨",6,"羱"],["c180","羳",4,"羺羻羾翀翂翃翄翆翇翈翉翋翍翏",4,"翖翗翙",5,"翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿"],["c240","翤翧翨翪翫翬翭翯翲翴",6,"翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫",5,"耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗"],["c280","聙聛",13,"聫",5,"聲",11,"隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫"],["c340","聾肁肂肅肈肊肍",5,"肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇",4,"胏",6,"胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋"],["c380","脌脕脗脙脛脜脝脟",12,"脭脮脰脳脴脵脷脹",4,"脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸"],["c440","腀",5,"腇腉腍腎腏腒腖腗腘腛",4,"腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃",4,"膉膋膌膍膎膐膒",5,"膙膚膞",4,"膤膥"],["c480","膧膩膫",7,"膴",5,"膼膽膾膿臄臅臇臈臉臋臍",6,"摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁"],["c540","臔",14,"臤臥臦臨臩臫臮",4,"臵",5,"臽臿舃與",4,"舎舏舑舓舕",5,"舝舠舤舥舦舧舩舮舲舺舼舽舿"],["c580","艀艁艂艃艅艆艈艊艌艍艎艐",7,"艙艛艜艝艞艠",7,"艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗"],["c640","艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸"],["c680","苺苼",4,"茊茋茍茐茒茓茖茘茙茝",9,"茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐"],["c740","茾茿荁荂荄荅荈荊",4,"荓荕",4,"荝荢荰",6,"荹荺荾",6,"莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡",6,"莬莭莮"],["c780","莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠"],["c840","菮華菳",4,"菺菻菼菾菿萀萂萅萇萈萉萊萐萒",5,"萙萚萛萞",5,"萩",7,"萲",5,"萹萺萻萾",7,"葇葈葉"],["c880","葊",6,"葒",4,"葘葝葞葟葠葢葤",4,"葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁"],["c940","葽",4,"蒃蒄蒅蒆蒊蒍蒏",7,"蒘蒚蒛蒝蒞蒟蒠蒢",12,"蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗"],["c980","蓘",4,"蓞蓡蓢蓤蓧",4,"蓭蓮蓯蓱",10,"蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳"],["ca40","蔃",8,"蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢",8,"蔭",9,"蔾",4,"蕄蕅蕆蕇蕋",10],["ca80","蕗蕘蕚蕛蕜蕝蕟",4,"蕥蕦蕧蕩",8,"蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱"],["cb40","薂薃薆薈",6,"薐",10,"薝",6,"薥薦薧薩薫薬薭薱",5,"薸薺",6,"藂",6,"藊",4,"藑藒"],["cb80","藔藖",5,"藝",6,"藥藦藧藨藪",14,"恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔"],["cc40","藹藺藼藽藾蘀",4,"蘆",10,"蘒蘓蘔蘕蘗",15,"蘨蘪",13,"蘹蘺蘻蘽蘾蘿虀"],["cc80","虁",11,"虒虓處",4,"虛虜虝號虠虡虣",7,"獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃"],["cd40","虭虯虰虲",6,"蚃",6,"蚎",4,"蚔蚖",5,"蚞",4,"蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻",4,"蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜"],["cd80","蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威"],["ce40","蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀",6,"蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚",5,"蝡蝢蝦",7,"蝯蝱蝲蝳蝵"],["ce80","蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎",4,"螔螕螖螘",6,"螠",4,"巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺"],["cf40","螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁",4,"蟇蟈蟉蟌",4,"蟔",6,"蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯",9],["cf80","蟺蟻蟼蟽蟿蠀蠁蠂蠄",5,"蠋",7,"蠔蠗蠘蠙蠚蠜",4,"蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓"],["d040","蠤",13,"蠳",5,"蠺蠻蠽蠾蠿衁衂衃衆",5,"衎",5,"衕衖衘衚",6,"衦衧衪衭衯衱衳衴衵衶衸衹衺"],["d080","衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗",4,"袝",4,"袣袥",5,"小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄"],["d140","袬袮袯袰袲",4,"袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚",4,"裠裡裦裧裩",6,"裲裵裶裷裺裻製裿褀褁褃",5],["d180","褉褋",4,"褑褔",4,"褜",4,"褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶"],["d240","褸",8,"襂襃襅",24,"襠",5,"襧",19,"襼"],["d280","襽襾覀覂覄覅覇",26,"摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐"],["d340","覢",30,"觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴",6],["d380","觻",4,"訁",5,"計",21,"印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉"],["d440","訞",31,"訿",8,"詉",21],["d480","詟",25,"詺",6,"浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧"],["d540","誁",7,"誋",7,"誔",46],["d580","諃",32,"铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政"],["d640","諤",34,"謈",27],["d680","謤謥謧",30,"帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑"],["d740","譆",31,"譧",4,"譭",25],["d780","讇",24,"讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座"],["d840","谸",8,"豂豃豄豅豈豊豋豍",7,"豖豗豘豙豛",5,"豣",6,"豬",6,"豴豵豶豷豻",6,"貃貄貆貇"],["d880","貈貋貍",6,"貕貖貗貙",20,"亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝"],["d940","貮",62],["d980","賭",32,"佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼"],["da40","贎",14,"贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸",8,"趂趃趆趇趈趉趌",4,"趒趓趕",9,"趠趡"],["da80","趢趤",12,"趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺"],["db40","跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾",6,"踆踇踈踋踍踎踐踑踒踓踕",7,"踠踡踤",4,"踫踭踰踲踳踴踶踷踸踻踼踾"],["db80","踿蹃蹅蹆蹌",4,"蹓",5,"蹚",11,"蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝"],["dc40","蹳蹵蹷",4,"蹽蹾躀躂躃躄躆躈",6,"躑躒躓躕",6,"躝躟",11,"躭躮躰躱躳",6,"躻",7],["dc80","軃",10,"軏",21,"堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥"],["dd40","軥",62],["dd80","輤",32,"荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺"],["de40","轅",32,"轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆"],["de80","迉",4,"迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖"],["df40","這逜連逤逥逧",5,"逰",4,"逷逹逺逽逿遀遃遅遆遈",4,"過達違遖遙遚遜",5,"遤遦遧適遪遫遬遯",4,"遶",6,"遾邁"],["df80","還邅邆邇邉邊邌",4,"邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼"],["e040","郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅",19,"鄚鄛鄜"],["e080","鄝鄟鄠鄡鄤",10,"鄰鄲",6,"鄺",8,"酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼"],["e140","酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀",4,"醆醈醊醎醏醓",6,"醜",5,"醤",5,"醫醬醰醱醲醳醶醷醸醹醻"],["e180","醼",10,"釈釋釐釒",9,"針",8,"帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺"],["e240","釦",62],["e280","鈥",32,"狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧",5,"饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂"],["e340","鉆",45,"鉵",16],["e380","銆",7,"銏",24,"恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾"],["e440","銨",5,"銯",24,"鋉",31],["e480","鋩",32,"洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑"],["e540","錊",51,"錿",10],["e580","鍊",31,"鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣"],["e640","鍬",34,"鎐",27],["e680","鎬",29,"鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩"],["e740","鏎",7,"鏗",54],["e780","鐎",32,"纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡",6,"缪缫缬缭缯",4,"缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬"],["e840","鐯",14,"鐿",43,"鑬鑭鑮鑯"],["e880","鑰",20,"钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹"],["e940","锧锳锽镃镈镋镕镚镠镮镴镵長",7,"門",42],["e980","閫",32,"椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋"],["ea40","闌",27,"闬闿阇阓阘阛阞阠阣",6,"阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗"],["ea80","陘陙陚陜陝陞陠陣陥陦陫陭",4,"陳陸",12,"隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰"],["eb40","隌階隑隒隓隕隖隚際隝",9,"隨",7,"隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖",9,"雡",6,"雫"],["eb80","雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗",4,"霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻"],["ec40","霡",8,"霫霬霮霯霱霳",4,"霺霻霼霽霿",18,"靔靕靗靘靚靜靝靟靣靤靦靧靨靪",7],["ec80","靲靵靷",4,"靽",7,"鞆",4,"鞌鞎鞏鞐鞓鞕鞖鞗鞙",4,"臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐"],["ed40","鞞鞟鞡鞢鞤",6,"鞬鞮鞰鞱鞳鞵",46],["ed80","韤韥韨韮",4,"韴韷",23,"怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨"],["ee40","頏",62],["ee80","顎",32,"睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶",4,"钼钽钿铄铈",6,"铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪"],["ef40","顯",5,"颋颎颒颕颙颣風",37,"飏飐飔飖飗飛飜飝飠",4],["ef80","飥飦飩",30,"铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒",4,"锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤",8,"镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔"],["f040","餈",4,"餎餏餑",28,"餯",26],["f080","饊",9,"饖",12,"饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨",4,"鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦",6,"鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙"],["f140","馌馎馚",10,"馦馧馩",47],["f180","駙",32,"瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃"],["f240","駺",62],["f280","騹",32,"颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒"],["f340","驚",17,"驲骃骉骍骎骔骕骙骦骩",6,"骲骳骴骵骹骻骽骾骿髃髄髆",4,"髍髎髏髐髒體髕髖髗髙髚髛髜"],["f380","髝髞髠髢髣髤髥髧髨髩髪髬髮髰",8,"髺髼",6,"鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋"],["f440","鬇鬉",5,"鬐鬑鬒鬔",10,"鬠鬡鬢鬤",10,"鬰鬱鬳",7,"鬽鬾鬿魀魆魊魋魌魎魐魒魓魕",5],["f480","魛",32,"簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤"],["f540","魼",62],["f580","鮻",32,"酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜"],["f640","鯜",62],["f680","鰛",32,"觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅",5,"龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞",5,"鲥",4,"鲫鲭鲮鲰",7,"鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋"],["f740","鰼",62],["f780","鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾",4,"鳈鳉鳑鳒鳚鳛鳠鳡鳌",4,"鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄"],["f840","鳣",62],["f880","鴢",32],["f940","鵃",62],["f980","鶂",32],["fa40","鶣",62],["fa80","鷢",32],["fb40","鸃",27,"鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴",9,"麀"],["fb80","麁麃麄麅麆麉麊麌",5,"麔",8,"麞麠",5,"麧麨麩麪"],["fc40","麫",8,"麵麶麷麹麺麼麿",4,"黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰",8,"黺黽黿",6],["fc80","鼆",4,"鼌鼏鼑鼒鼔鼕鼖鼘鼚",5,"鼡鼣",8,"鼭鼮鼰鼱"],["fd40","鼲",4,"鼸鼺鼼鼿",4,"齅",10,"齒",38],["fd80","齹",5,"龁龂龍",11,"龜龝龞龡",4,"郎凉秊裏隣"],["fe40","兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩"]]');
 81951  
 81952  /***/ }),
 81953  
 81954  /***/ 77348:
 81955  /***/ ((module) => {
 81956  
 81957  "use strict";
 81958  module.exports = JSON.parse('[["0","\\u0000",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆÐªĦ"],["a8a6","IJ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]');
 81959  
 81960  /***/ }),
 81961  
 81962  /***/ 74284:
 81963  /***/ ((module) => {
 81964  
 81965  "use strict";
 81966  module.exports = JSON.parse('[["0","\\u0000",127],["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"],["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21],["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]');
 81967  
 81968  /***/ }),
 81969  
 81970  /***/ 31532:
 81971  /***/ ((module) => {
 81972  
 81973  "use strict";
 81974  module.exports = JSON.parse('[["0","\\u0000",127],["8ea1","。",62],["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨¬⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","ʼn♯♭♪†‡¶"],["a2fe","◯"],["a3b0","0",9],["a3c1","A",25],["a3e1","a",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"¬¦'""],["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","IJ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]');
 81975  
 81976  /***/ }),
 81977  
 81978  /***/ 83121:
 81979  /***/ ((module) => {
 81980  
 81981  "use strict";
 81982  module.exports = JSON.parse('{"uChars":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],"gbChars":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}');
 81983  
 81984  /***/ }),
 81985  
 81986  /***/ 44346:
 81987  /***/ ((module) => {
 81988  
 81989  "use strict";
 81990  module.exports = JSON.parse('[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31," "],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc","ḿ"],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93],["8135f437",""]]');
 81991  
 81992  /***/ }),
 81993  
 81994  /***/ 27014:
 81995  /***/ ((module) => {
 81996  
 81997  "use strict";
 81998  module.exports = JSON.parse('[["0","\\u0000",128],["a1","。",62],["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"],["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨¬⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","ʼn♯♭♪†‡¶"],["81fc","◯"],["824f","0",9],["8260","A",25],["8281","a",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"¬¦'""],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]');
 81999  
 82000  /***/ }),
 82001  
 82002  /***/ 80557:
 82003  /***/ ((module) => {
 82004  
 82005  "use strict";
 82006  module.exports = JSON.parse('{"name":"make-fetch-happen","version":"13.0.1","description":"Opinionated, caching, retrying fetch client","main":"lib/index.js","files":["bin/","lib/"],"scripts":{"test":"tap","posttest":"npm run lint","eslint":"eslint","lint":"eslint \\"**/*.{js,cjs,ts,mjs,jsx,tsx}\\"","lintfix":"npm run lint -- --fix","postlint":"template-oss-check","snap":"tap","template-oss-apply":"template-oss-apply --force"},"repository":{"type":"git","url":"https://github.com/npm/make-fetch-happen.git"},"keywords":["http","request","fetch","mean girls","caching","cache","subresource integrity"],"author":"GitHub Inc.","license":"ISC","dependencies":{"@npmcli/agent":"^2.0.0","cacache":"^18.0.0","http-cache-semantics":"^4.1.1","is-lambda":"^1.0.1","minipass":"^7.0.2","minipass-fetch":"^3.0.0","minipass-flush":"^1.0.5","minipass-pipeline":"^1.2.4","negotiator":"^0.6.3","proc-log":"^4.2.0","promise-retry":"^2.0.1","ssri":"^10.0.0"},"devDependencies":{"@npmcli/eslint-config":"^4.0.0","@npmcli/template-oss":"4.21.4","nock":"^13.2.4","safe-buffer":"^5.2.1","standard-version":"^9.3.2","tap":"^16.0.0"},"engines":{"node":"^16.14.0 || >=18.0.0"},"tap":{"color":1,"files":"test/*.js","check-coverage":true,"timeout":60,"nyc-arg":["--exclude","tap-snapshots/**"]},"templateOSS":{"//@npmcli/template-oss":"This file is partially managed by @npmcli/template-oss. Edits may be overwritten.","version":"4.21.4","publish":"true"}}');
 82007  
 82008  /***/ }),
 82009  
 82010  /***/ 40500:
 82011  /***/ ((module) => {
 82012  
 82013  "use strict";
 82014  module.exports = {"i8":"3.0.4"};
 82015  
 82016  /***/ })
 82017  
 82018  /******/ 	});
 82019  /************************************************************************/
 82020  /******/ 	// The module cache
 82021  /******/ 	var __webpack_module_cache__ = {};
 82022  /******/ 	
 82023  /******/ 	// The require function
 82024  /******/ 	function __nccwpck_require__(moduleId) {
 82025  /******/ 		// Check if module is in cache
 82026  /******/ 		var cachedModule = __webpack_module_cache__[moduleId];
 82027  /******/ 		if (cachedModule !== undefined) {
 82028  /******/ 			return cachedModule.exports;
 82029  /******/ 		}
 82030  /******/ 		// Create a new module (and put it into the cache)
 82031  /******/ 		var module = __webpack_module_cache__[moduleId] = {
 82032  /******/ 			// no module.id needed
 82033  /******/ 			// no module.loaded needed
 82034  /******/ 			exports: {}
 82035  /******/ 		};
 82036  /******/ 	
 82037  /******/ 		// Execute the module function
 82038  /******/ 		var threw = true;
 82039  /******/ 		try {
 82040  /******/ 			__webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__);
 82041  /******/ 			threw = false;
 82042  /******/ 		} finally {
 82043  /******/ 			if(threw) delete __webpack_module_cache__[moduleId];
 82044  /******/ 		}
 82045  /******/ 	
 82046  /******/ 		// Return the exports of the module
 82047  /******/ 		return module.exports;
 82048  /******/ 	}
 82049  /******/ 	
 82050  /************************************************************************/
 82051  /******/ 	/* webpack/runtime/compat */
 82052  /******/ 	
 82053  /******/ 	if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/";
 82054  /******/ 	
 82055  /************************************************************************/
 82056  /******/ 	
 82057  /******/ 	// startup
 82058  /******/ 	// Load entry module and return exports
 82059  /******/ 	// This entry module is referenced by other modules so it can't be inlined
 82060  /******/ 	var __webpack_exports__ = __nccwpck_require__(3109);
 82061  /******/ 	module.exports = __webpack_exports__;
 82062  /******/ 	
 82063  /******/ })()
 82064  ;
 82065  //# sourceMappingURL=index.js.map