From b7da52a364983fbee94c2565981f65914f67dad3 Mon Sep 17 00:00:00 2001 From: Artur Sharafutdinov Date: Fri, 11 Sep 2026 20:00:23 +0200 Subject: [PATCH 1/2] CI: Rewrite matrix-builder action to Python --- .../actions/matrix-builder/README.md | 49 +- .../actions/matrix-builder/action.yml | 22 +- .../actions/matrix-builder/matrix_builder.py | 145 +++++ .github/workflows/config.yml | 2 +- .../workflows/matrix-builder-rebuild-dist.yml | 59 -- .github/workflows/pip-build.yml | 4 +- .github/workflows/prepare-images.yml | 11 +- scripts/actions/matrix-builder/.gitignore | 3 - scripts/actions/matrix-builder/dist/index.js | 3 - scripts/actions/matrix-builder/lib/engine.js | 293 --------- .../actions/matrix-builder/package-lock.json | 110 ---- scripts/actions/matrix-builder/package.json | 23 - scripts/actions/matrix-builder/rebuild.sh | 6 - scripts/actions/matrix-builder/src/index.js | 70 --- .../matrix-builder/tests/action.test.js | 136 ---- .../matrix-builder/tests/engine.test.js | 584 ------------------ .../matrix-builder/tests/fixtures/axes.yml | 5 - .../tests/fixtures/build-00.json | 1 - .../tests/fixtures/build-01.json | 1 - .../tests/fixtures/build-10.json | 1 - .../tests/fixtures/build-11.json | 1 - .../tests/fixtures/docker-images-linux.json | 26 - .../tests/fixtures/docker-linux-000.json | 26 - .../tests/fixtures/docker-linux-001.json | 22 - .../tests/fixtures/docker-linux-010.json | 18 - .../tests/fixtures/docker-linux-011.json | 14 - .../tests/fixtures/docker-linux-100.json | 18 - .../tests/fixtures/docker-linux-101.json | 14 - .../tests/fixtures/docker-linux-110.json | 10 - .../tests/fixtures/docker-linux-111.json | 6 - .../tests/fixtures/entry-list.yml | 5 - .../tests/fixtures/test-00.json | 1 - .../tests/fixtures/test-01.json | 1 - .../tests/fixtures/test-10.json | 1 - .../tests/fixtures/test-11.json | 1 - 35 files changed, 186 insertions(+), 1506 deletions(-) rename {scripts => .github}/actions/matrix-builder/README.md (83%) rename {scripts => .github}/actions/matrix-builder/action.yml (69%) create mode 100644 .github/actions/matrix-builder/matrix_builder.py delete mode 100644 .github/workflows/matrix-builder-rebuild-dist.yml delete mode 100644 scripts/actions/matrix-builder/.gitignore delete mode 100644 scripts/actions/matrix-builder/dist/index.js delete mode 100644 scripts/actions/matrix-builder/lib/engine.js delete mode 100644 scripts/actions/matrix-builder/package-lock.json delete mode 100644 scripts/actions/matrix-builder/package.json delete mode 100755 scripts/actions/matrix-builder/rebuild.sh delete mode 100644 scripts/actions/matrix-builder/src/index.js delete mode 100644 scripts/actions/matrix-builder/tests/action.test.js delete mode 100644 scripts/actions/matrix-builder/tests/engine.test.js delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/axes.yml delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/build-00.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/build-01.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/build-10.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/build-11.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/docker-images-linux.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/docker-linux-000.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/docker-linux-001.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/docker-linux-010.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/docker-linux-011.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/docker-linux-100.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/docker-linux-101.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/docker-linux-110.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/docker-linux-111.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/entry-list.yml delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/test-00.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/test-01.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/test-10.json delete mode 100644 scripts/actions/matrix-builder/tests/fixtures/test-11.json diff --git a/scripts/actions/matrix-builder/README.md b/.github/actions/matrix-builder/README.md similarity index 83% rename from scripts/actions/matrix-builder/README.md rename to .github/actions/matrix-builder/README.md index 86ea7188798c..2e7f183d83fe 100644 --- a/scripts/actions/matrix-builder/README.md +++ b/.github/actions/matrix-builder/README.md @@ -81,7 +81,7 @@ between workflows and shell scripts: ```yaml # .github/workflows/matrix/docker-images-linux.json: # [ {"distro": "ubuntu22", "arch": "x64"}, ... ] -- uses: ./scripts/actions/matrix-builder +- uses: ./.github/actions/matrix-builder with: matrix-file: .github/workflows/matrix/docker-images-linux.json rules: | @@ -129,7 +129,7 @@ literal string). Truthiness: - YAML `true` → truthy; `false` / `null` / missing → falsy. - Strings: trim + lowercase; `""`, `"false"`, `"0"`, `"no"`, `"off"` → falsy; anything else → truthy. - - Numbers: standard JS truthiness. + - Numbers: zero is falsy, anything else truthy. Rules with a falsy `if:` are skipped entirely. @@ -173,7 +173,7 @@ key with the matching value. Keys not present in an entry don't match ### 1. Simple disable-flag filtering ```yaml -- uses: ./scripts/actions/matrix-builder +- uses: ./.github/actions/matrix-builder id: m with: matrix: | @@ -213,7 +213,7 @@ Declare both axes; group the per-axis attributes under list-form `extend` rules. ```yaml -- uses: ./scripts/actions/matrix-builder +- uses: ./.github/actions/matrix-builder id: m with: matrix: | @@ -265,7 +265,7 @@ would survive. ### 4. Building a matrix entirely from rules ```yaml -- uses: ./scripts/actions/matrix-builder +- uses: ./.github/actions/matrix-builder with: matrix: '{}' rules: | @@ -283,7 +283,7 @@ appends a fresh entry. ### 5. Apply a default to every row ```yaml -- uses: ./scripts/actions/matrix-builder +- uses: ./.github/actions/matrix-builder with: matrix: | platform: [x86_64, aarch64] @@ -294,34 +294,13 @@ appends a fresh entry. `extend` with no axis keys attaches `compiler: clang` to every entry. -## Building and contributing +## Layout -This is a JavaScript action. The runtime entry point is `dist/index.js`, -generated by [`@vercel/ncc`](https://github.com/vercel/ncc) from `src/` -and `lib/`. After editing source, rebuild and commit the bundle: +This is a composite action. Its single step converts each input to JSON +with `yq -o json .` and runs `matrix_builder.py` with the base matrix on +stdin and the rules in `--rules`; the script appends the `matrix` output to +`GITHUB_OUTPUT`. Both `yq` and `python3` come from the runner's PATH. -```bash -cd MeshLib/scripts/actions/matrix-builder -npm ci -npm run build # rebuilds dist/index.js — commit the result -npm test # runs node --test against tests/ -``` - -Layout: - - - `action.yml` — action metadata (inputs, outputs, runtime). - - `src/index.js` — entry point: parses inputs, calls the engine, sets - the output. - - `lib/engine.js` — pure rules engine with JSDoc on every export. - Read this for the canonical semantics. - - `dist/index.js` — bundled artifact GitHub actually runs. Regenerate - whenever `src/` or `lib/` changes. - - `tests/engine.test.js` — `node --test` suite covering each rule - type, `if:` truthiness, ordering, and parity snapshots against the - original `pip-build.yml` and `prepare-images.yml` jq pipelines. - - `tests/action.test.js` — runs `src/index.js` as a child process with - `INPUT_*` env vars, covering input handling: `matrix-file` - loading and the input-validation errors. - - `tests/fixtures/` — captured jq outputs (`build-*.json`, - `test-*.json`, `docker-linux-*.json`) for the parity snapshots, plus - sample matrix files for `matrix-file` tests. + - `action.yml` — action metadata (inputs, outputs) and the step above. + - `matrix_builder.py` — the rules engine and the script entry point. Read + this for the canonical semantics. diff --git a/scripts/actions/matrix-builder/action.yml b/.github/actions/matrix-builder/action.yml similarity index 69% rename from scripts/actions/matrix-builder/action.yml rename to .github/actions/matrix-builder/action.yml index ad1bb43c2d75..1ab07a051895 100644 --- a/scripts/actions/matrix-builder/action.yml +++ b/.github/actions/matrix-builder/action.yml @@ -37,7 +37,25 @@ inputs: outputs: matrix: description: JSON-encoded array of the resulting matrix combinations. + value: ${{ steps.build.outputs.matrix }} runs: - using: node24 - main: dist/index.js + using: composite + steps: + - id: build + shell: bash + env: + MATRIX: ${{ inputs.matrix }} + MATRIX_FILE: ${{ inputs.matrix-file }} + RULES: ${{ inputs.rules }} + run: | + if [ -n "$MATRIX_FILE" ] && [ -n "$MATRIX" ]; then + echo "::error::'matrix' and 'matrix-file' are mutually exclusive" + exit 1 + fi + if [ -n "$MATRIX_FILE" ]; then + MATRIX=$(cat "$MATRIX_FILE") + fi + MATRIX=$(yq -o json . <<<"$MATRIX") + RULES=$(yq -o json . <<<"$RULES") + echo "$MATRIX" | python3 "${{ github.action_path }}/matrix_builder.py" --rules="$RULES" - diff --git a/.github/actions/matrix-builder/matrix_builder.py b/.github/actions/matrix-builder/matrix_builder.py new file mode 100644 index 000000000000..96c438b79925 --- /dev/null +++ b/.github/actions/matrix-builder/matrix_builder.py @@ -0,0 +1,145 @@ +""" +Build a GitHub Actions matrix from a base matrix and an ordered list of +include / extend / exclude rules (see README.md for the grammar). + +The base matrix is read as JSON, either an axis map or a list of entries, +from the file named by the positional argument, or from stdin when that +argument is '-'; the rules arrive as a JSON list in --rules. The action step +produces both with yq: + + MATRIX=$(yq -o json . <<<"$MATRIX") + RULES=$(yq -o json . <<<"$RULES") + echo "$MATRIX" | python3 matrix_builder.py --rules="$RULES" - + +The resulting combinations are appended to the file named by GITHUB_OUTPUT +as `matrix=`. +""" + +import argparse +import json +import os +import sys + + +def cartesian(axes): + if not axes: + return [] + entries = [{}] + for name, values in axes.items(): + if not isinstance(values, list): + values = [values] + entries = [{**entry, name: value} for entry in entries for value in values] + return entries + + +def is_truthy(value): + if isinstance(value, str): + return value.strip().lower() not in ('', 'false', '0', 'no', 'off') + return bool(value) + + +def same_value(a, b): + return isinstance(a, bool) == isinstance(b, bool) and a == b + + +def matches_all(entry, criteria): + return all(key in entry and same_value(entry[key], value) for key, value in criteria.items()) + + +def split_rule(rule, axis_keys): + axis_crit = {k: v for k, v in rule.items() if k in axis_keys} + extra = {k: v for k, v in rule.items() if k not in axis_keys} + return axis_crit, extra + + +def apply_include(entries, rule, axis_keys): + axis_crit, extra = split_rule(rule, axis_keys) + if not axis_crit: + return [*entries, dict(extra)] + matched = [matches_all(entry, axis_crit) for entry in entries] + out = [{**entry, **extra} if hit else entry for entry, hit in zip(entries, matched)] + if not any(matched): + out.append({**axis_crit, **extra}) + return out + + +def apply_extend(entries, rule, axis_keys): + axis_crit, extra = split_rule(rule, axis_keys) + return [{**entry, **extra} if matches_all(entry, axis_crit) else entry for entry in entries] + + +def apply_exclude(entries, rule): + return [entry for entry in entries if not matches_all(entry, rule)] + + +def normalize_bodies(body, kind, rule_index): + if isinstance(body, list): + for j, item in enumerate(body): + if not isinstance(item, dict): + raise ValueError(f"rule #{rule_index} '{kind}' entry #{j} must be an object") + return body + if not isinstance(body, dict): + raise ValueError(f"rule #{rule_index} '{kind}' must be an object or a list of objects") + return [body] + + +def build_matrix(base_matrix, rules): + if isinstance(base_matrix, list): + for i, entry in enumerate(base_matrix): + if not isinstance(entry, dict): + raise ValueError(f'base matrix entry #{i} must be an object') + axis_keys = {key for entry in base_matrix for key in entry} + entries = [dict(entry) for entry in base_matrix] + elif isinstance(base_matrix, dict): + axis_keys = set(base_matrix) + entries = cartesian(base_matrix) + else: + raise ValueError("'matrix' must be a map of axis names to value lists or a list of entries") + if not isinstance(rules, list): + raise ValueError("'rules' must be a list") + + for i, rule in enumerate(rules): + if not isinstance(rule, dict): + raise ValueError(f'rule #{i} is not an object') + if 'if' in rule and not is_truthy(rule['if']): + continue + kinds = [kind for kind in ('include', 'extend', 'exclude') if kind in rule] + if len(kinds) != 1: + found = ', '.join(kinds) if kinds else 'none' + raise ValueError( + f"rule #{i} must have exactly one of 'include', 'extend', 'exclude' (found: {found})" + ) + kind = kinds[0] + for body in normalize_bodies(rule[kind], kind, i): + if kind == 'include': + entries = apply_include(entries, body, axis_keys) + elif kind == 'extend': + entries = apply_extend(entries, body, axis_keys) + else: + entries = apply_exclude(entries, body) + return entries + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument('matrix', type=argparse.FileType(), help="JSON base matrix file, or '-' for stdin") + parser.add_argument('--rules', required=True, help='JSON list of rules, applied in order') + args = parser.parse_args() + with args.matrix as f: + matrix = json.load(f) + rules = json.loads(args.rules) + try: + result = build_matrix({} if matrix is None else matrix, [] if rules is None else rules) + except ValueError as e: + print(f'::error::{e}') + return 1 + with open(os.environ['GITHUB_OUTPUT'], 'a') as out: + print(f"matrix={json.dumps(result, separators=(',', ':'))}", file=out) + print(f'::group::matrix-builder: {len(result)} combination(s)') + print(json.dumps(result, indent=2)) + print('::endgroup::') + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/.github/workflows/config.yml b/.github/workflows/config.yml index 9d1a8afd764c..296df34965fb 100644 --- a/.github/workflows/config.yml +++ b/.github/workflows/config.yml @@ -301,7 +301,7 @@ jobs: - name: Set matrix for ubuntu-arm64 builds id: set-ubuntu-arm64-matrix - uses: ./scripts/actions/matrix-builder + uses: ./.github/actions/matrix-builder with: matrix: | os: diff --git a/.github/workflows/matrix-builder-rebuild-dist.yml b/.github/workflows/matrix-builder-rebuild-dist.yml deleted file mode 100644 index 6cacf4ab4e8e..000000000000 --- a/.github/workflows/matrix-builder-rebuild-dist.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: Rebuild matrix-builder dist - -# The action runs from the committed ncc bundle (dist/index.js), but Dependabot -# PRs only bump package.json/package-lock.json. Regenerate and push the bundle -# on its PRs so the dependency update actually takes effect. -on: - pull_request: - paths: - - scripts/actions/matrix-builder/package.json - - scripts/actions/matrix-builder/package-lock.json - -permissions: {} - -jobs: - rebuild-dist: - if: github.event.pull_request.user.login == 'dependabot[bot]' && github.event.pull_request.head.repo.full_name == github.repository - runs-on: ubuntu-latest - permissions: - contents: write - defaults: - run: - working-directory: scripts/actions/matrix-builder - steps: - - uses: actions/checkout@v7 - with: - ref: ${{ github.event.pull_request.head.ref }} - - - uses: actions/setup-node@v7 - with: - node-version: 24 - - - name: Rebuild dist - run: | - npm ci --ignore-scripts - npm run build - - - name: Test, including a smoke run of the rebuilt bundle - run: | - npm test - # @actions/core appends outputs and errors out unless the file - # already exists (the runner normally pre-creates it). - touch "$RUNNER_TEMP/smoke" - INPUT_MATRIX='{"os": ["a", "b"]}' GITHUB_OUTPUT="$RUNNER_TEMP/smoke" node dist/index.js - grep -q '"os":"a"' "$RUNNER_TEMP/smoke" - - - name: Push dist if changed - run: | - if git diff --quiet; then - echo "dist unchanged" - exit 0 - fi - # +@users.noreply.github.com is GitHub's noreply - # format (41898282 = github-actions[bot]); it makes GitHub attribute - # the commit to the bot instead of an unlinked author. - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add -A . - git commit -m "Rebuild matrix-builder dist" - git push origin HEAD diff --git a/.github/workflows/pip-build.yml b/.github/workflows/pip-build.yml index df65bf576491..9a3af75b03ef 100644 --- a/.github/workflows/pip-build.yml +++ b/.github/workflows/pip-build.yml @@ -128,7 +128,7 @@ jobs: echo "tag=${TAG}" >> "$GITHUB_OUTPUT" - id: build-matrix - uses: ./scripts/actions/matrix-builder + uses: ./.github/actions/matrix-builder with: matrix: | platform: @@ -157,7 +157,7 @@ jobs: - platform: aarch64 - id: test-matrix - uses: ./scripts/actions/matrix-builder + uses: ./.github/actions/matrix-builder with: matrix: | platform: diff --git a/.github/workflows/prepare-images.yml b/.github/workflows/prepare-images.yml index 924402f0c574..6c23f55247b6 100644 --- a/.github/workflows/prepare-images.yml +++ b/.github/workflows/prepare-images.yml @@ -66,14 +66,11 @@ jobs: uses: actions/checkout@v7 with: sparse-checkout: | - scripts/actions/matrix-builder + .github/actions/matrix-builder .github/workflows/matrix - # A new ubuntu distro needs a matching exclude rule (pinned by the - # action's parity tests); emscripten-generate-c-bindings has none: - # its consumer always runs. - id: linux - uses: ./scripts/actions/matrix-builder + uses: ./.github/actions/matrix-builder with: matrix-file: .github/workflows/matrix/docker-images-linux.json rules: | @@ -98,12 +95,12 @@ jobs: distro: emscripten - id: cbindings - uses: ./scripts/actions/matrix-builder + uses: ./.github/actions/matrix-builder with: matrix-file: .github/workflows/matrix/docker-images-emscripten-c-bindings.json - id: vcpkg - uses: ./scripts/actions/matrix-builder + uses: ./.github/actions/matrix-builder with: matrix-file: .github/workflows/matrix/docker-images-linux-vcpkg.json diff --git a/scripts/actions/matrix-builder/.gitignore b/scripts/actions/matrix-builder/.gitignore deleted file mode 100644 index c09f121f7c18..000000000000 --- a/scripts/actions/matrix-builder/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules/ -*.log -.npm/ diff --git a/scripts/actions/matrix-builder/dist/index.js b/scripts/actions/matrix-builder/dist/index.js deleted file mode 100644 index 896ee2c882c2..000000000000 --- a/scripts/actions/matrix-builder/dist/index.js +++ /dev/null @@ -1,3 +0,0 @@ -(()=>{var e={212:e=>{"use strict";function cartesian(e){const t=Object.keys(e);if(t.length===0)return[];let A=[{}];for(const r of t){const t=Array.isArray(e[r])?e[r]:[e[r]];const n=[];for(const e of A){for(const A of t)n.push({...e,[r]:A})}A=n}return A}function isTruthy(e){if(e===true)return true;if(e===false||e==null)return false;if(typeof e==="string"){const t=e.trim().toLowerCase();return!(t===""||t==="false"||t==="0"||t==="no"||t==="off")}return Boolean(e)}function matchesAll(e,t){for(const A of Object.keys(t)){if(!Object.prototype.hasOwnProperty.call(e,A))return false;if(e[A]!==t[A])return false}return true}function splitRule(e,t){const A={};const r={};for(const[n,s]of Object.entries(e)){if(t.has(n))A[n]=s;else r[n]=s}return{axisCrit:A,extra:r}}function applyInclude(e,t,A){const{axisCrit:r,extra:n}=splitRule(t,A);if(Object.keys(r).length===0){return[...e,{...n}]}let s=0;const o=e.map((e=>{if(matchesAll(e,r)){s++;return{...e,...n}}return e}));if(s===0)o.push({...r,...n});return o}function applyExtend(e,t,A){const{axisCrit:r,extra:n}=splitRule(t,A);return e.map((e=>matchesAll(e,r)?{...e,...n}:e))}function applyExclude(e,t){return e.filter((e=>!matchesAll(e,t)))}function normalizeBodies(e,t,A){if(Array.isArray(e)){e.forEach(((e,r)=>{if(e==null||typeof e!=="object"||Array.isArray(e)){throw new Error(`rule #${A} '${t}' entry #${r} must be an object`)}}));return e}if(e==null||typeof e!=="object"){throw new Error(`rule #${A} '${t}' must be an object or a list of objects`)}return[e]}function buildMatrix(e,t){let A;let r;if(Array.isArray(e)){e.forEach(((e,t)=>{if(e==null||typeof e!=="object"||Array.isArray(e)){throw new Error(`base matrix entry #${t} must be an object`)}}));A=new Set(e.flatMap((e=>Object.keys(e))));r=e.map((e=>({...e})))}else if(e!=null&&typeof e==="object"){A=new Set(Object.keys(e));r=cartesian(e)}else{throw new Error("'matrix' must be a map of axis names to value lists or a list of entries")}if(!Array.isArray(t)){throw new Error("'rules' must be a list")}t.forEach(((e,t)=>{if(e==null||typeof e!=="object"||Array.isArray(e)){throw new Error(`rule #${t} is not an object`)}if("if"in e&&!isTruthy(e.if))return;const n=["include","extend","exclude"].filter((t=>t in e));if(n.length!==1){throw new Error(`rule #${t} must have exactly one of 'include', 'extend', 'exclude' `+`(found: ${n.length?n.join(", "):"none"})`)}const s=n[0];const o=normalizeBodies(e[s],s,t);for(const e of o){if(s==="include")r=applyInclude(r,e,A);else if(s==="extend")r=applyExtend(r,e,A);else r=applyExclude(r,e)}}));return r}e.exports={buildMatrix:buildMatrix,cartesian:cartesian,isTruthy:isTruthy,matchesAll:matchesAll,applyInclude:applyInclude,applyExtend:applyExtend,applyExclude:applyExclude,normalizeBodies:normalizeBodies}},4914:function(e,t,A){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,A,r){if(r===undefined)r=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,r,n)}:function(e,t,A,r){if(r===undefined)r=A;e[r]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var A in e)if(Object.prototype.hasOwnProperty.call(e,A))t[t.length]=A;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A=ownKeys(e),s=0;s0){e+=" ";let t=true;for(const A in this.properties){if(this.properties.hasOwnProperty(A)){const r=this.properties[A];if(r){if(t){t=false}else{e+=","}e+=`${A}=${escapeProperty(r)}`}}}}e+=`${a}${escapeData(this.message)}`;return e}}function escapeData(e){return(0,i.toCommandValue)(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return(0,i.toCommandValue)(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}},7484:function(e,t,A){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,A,r){if(r===undefined)r=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,r,n)}:function(e,t,A,r){if(r===undefined)r=A;e[r]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var A in e)if(Object.prototype.hasOwnProperty.call(e,A))t[t.length]=A;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A=ownKeys(e),s=0;se!==""));if(t&&t.trimWhitespace===false){return A}return A.map((e=>e.trim()))}function getBooleanInput(e,t){const A=["true","True","TRUE"];const r=["false","False","FALSE"];const n=getInput(e,t);if(A.includes(n))return true;if(r.includes(n))return false;throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${e}\n`+`Support boolean input list: \`true | True | TRUE | false | False | FALSE\``)}function setOutput(e,t){const A=process.env["GITHUB_OUTPUT"]||"";if(A){return(0,a.issueFileCommand)("OUTPUT",(0,a.prepareKeyValueMessage)(e,t))}process.stdout.write(l.EOL);(0,i.issueCommand)("set-output",{name:e},(0,c.toCommandValue)(t))}function setCommandEcho(e){(0,i.issue)("echo",e?"on":"off")}function setFailed(e){process.exitCode=h.Failure;error(e)}function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}function debug(e){(0,i.issueCommand)("debug",{},e)}function error(e,t={}){(0,i.issueCommand)("error",(0,c.toCommandProperties)(t),e instanceof Error?e.toString():e)}function warning(e,t={}){(0,i.issueCommand)("warning",(0,c.toCommandProperties)(t),e instanceof Error?e.toString():e)}function notice(e,t={}){(0,i.issueCommand)("notice",(0,c.toCommandProperties)(t),e instanceof Error?e.toString():e)}function info(e){process.stdout.write(e+l.EOL)}function startGroup(e){(0,i.issue)("group",e)}function endGroup(){(0,i.issue)("endgroup")}function group(e,t){return o(this,void 0,void 0,(function*(){startGroup(e);let A;try{A=yield t()}finally{endGroup()}return A}))}function saveState(e,t){const A=process.env["GITHUB_STATE"]||"";if(A){return(0,a.issueFileCommand)("STATE",(0,a.prepareKeyValueMessage)(e,t))}(0,i.issueCommand)("save-state",{name:e},(0,c.toCommandValue)(t))}function getState(e){return process.env[`STATE_${e}`]||""}function getIDToken(e){return o(this,void 0,void 0,(function*(){return yield u.OidcClient.getIDToken(e)}))}var E=A(1847);Object.defineProperty(t,"summary",{enumerable:true,get:function(){return E.summary}});var Q=A(1847);Object.defineProperty(t,"markdownSummary",{enumerable:true,get:function(){return Q.markdownSummary}});var B=A(1976);Object.defineProperty(t,"toPosixPath",{enumerable:true,get:function(){return B.toPosixPath}});Object.defineProperty(t,"toWin32Path",{enumerable:true,get:function(){return B.toWin32Path}});Object.defineProperty(t,"toPlatformPath",{enumerable:true,get:function(){return B.toPlatformPath}});t.platform=s(A(8968))},4753:function(e,t,A){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,A,r){if(r===undefined)r=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,r,n)}:function(e,t,A,r){if(r===undefined)r=A;e[r]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var A in e)if(Object.prototype.hasOwnProperty.call(e,A))t[t.length]=A;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A=ownKeys(e),s=0;s{throw new Error(`Failed to get ID Token. \n \n Error Code : ${e.statusCode}\n \n Error Message: ${e.message}`)}));const n=(t=r.result)===null||t===void 0?void 0:t.value;if(!n){throw new Error("Response json body do not have ID Token field")}return n}))}static getIDToken(e){return r(this,void 0,void 0,(function*(){try{let t=OidcClient.getIDTokenUrl();if(e){const A=encodeURIComponent(e);t=`${t}&audience=${A}`}(0,o.debug)(`ID token url is ${t}`);const A=yield OidcClient.getCall(t);(0,o.setSecret)(A);return A}catch(e){throw new Error(`Error message: ${e.message}`)}}))}}t.OidcClient=OidcClient},1976:function(e,t,A){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,A,r){if(r===undefined)r=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,r,n)}:function(e,t,A,r){if(r===undefined)r=A;e[r]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var A in e)if(Object.prototype.hasOwnProperty.call(e,A))t[t.length]=A;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A=ownKeys(e),s=0;so(void 0,void 0,void 0,(function*(){const{stdout:e}=yield c.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"',undefined,{silent:true});const{stdout:t}=yield c.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"',undefined,{silent:true});return{name:t.trim(),version:e.trim()}}));const getMacOsInfo=()=>o(void 0,void 0,void 0,(function*(){var e,t,A,r;const{stdout:n}=yield c.getExecOutput("sw_vers",undefined,{silent:true});const s=(t=(e=n.match(/ProductVersion:\s*(.+)/))===null||e===void 0?void 0:e[1])!==null&&t!==void 0?t:"";const o=(r=(A=n.match(/ProductName:\s*(.+)/))===null||A===void 0?void 0:A[1])!==null&&r!==void 0?r:"";return{name:o,version:s}}));const getLinuxInfo=()=>o(void 0,void 0,void 0,(function*(){const{stdout:e}=yield c.getExecOutput("lsb_release",["-i","-r","-s"],{silent:true});const[t,A]=e.trim().split("\n");return{name:t,version:A}}));t.platform=a.default.platform();t.arch=a.default.arch();t.isWindows=t.platform==="win32";t.isMacOS=t.platform==="darwin";t.isLinux=t.platform==="linux";function getDetails(){return o(this,void 0,void 0,(function*(){return Object.assign(Object.assign({},yield t.isWindows?getWindowsInfo():t.isMacOS?getMacOsInfo():getLinuxInfo()),{platform:t.platform,arch:t.arch,isWindows:t.isWindows,isMacOS:t.isMacOS,isLinux:t.isLinux})}))}},1847:function(e,t,A){"use strict";var r=this&&this.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A((function(t){t(e)}))}return new(A||(A=Promise))((function(A,n){function fulfilled(e){try{step(r.next(e))}catch(e){n(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){n(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.summary=t.markdownSummary=t.SUMMARY_DOCS_URL=t.SUMMARY_ENV_VAR=void 0;const n=A(857);const s=A(9896);const{access:o,appendFile:i,writeFile:a}=s.promises;t.SUMMARY_ENV_VAR="GITHUB_STEP_SUMMARY";t.SUMMARY_DOCS_URL="https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary";class Summary{constructor(){this._buffer=""}filePath(){return r(this,void 0,void 0,(function*(){if(this._filePath){return this._filePath}const e=process.env[t.SUMMARY_ENV_VAR];if(!e){throw new Error(`Unable to find environment variable for $${t.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`)}try{yield o(e,s.constants.R_OK|s.constants.W_OK)}catch(t){throw new Error(`Unable to access summary file: '${e}'. Check if the file has correct read/write permissions.`)}this._filePath=e;return this._filePath}))}wrap(e,t,A={}){const r=Object.entries(A).map((([e,t])=>` ${e}="${t}"`)).join("");if(!t){return`<${e}${r}>`}return`<${e}${r}>${t}`}write(e){return r(this,void 0,void 0,(function*(){const t=!!(e===null||e===void 0?void 0:e.overwrite);const A=yield this.filePath();const r=t?a:i;yield r(A,this._buffer,{encoding:"utf8"});return this.emptyBuffer()}))}clear(){return r(this,void 0,void 0,(function*(){return this.emptyBuffer().write({overwrite:true})}))}stringify(){return this._buffer}isEmptyBuffer(){return this._buffer.length===0}emptyBuffer(){this._buffer="";return this}addRaw(e,t=false){this._buffer+=e;return t?this.addEOL():this}addEOL(){return this.addRaw(n.EOL)}addCodeBlock(e,t){const A=Object.assign({},t&&{lang:t});const r=this.wrap("pre",this.wrap("code",e),A);return this.addRaw(r).addEOL()}addList(e,t=false){const A=t?"ol":"ul";const r=e.map((e=>this.wrap("li",e))).join("");const n=this.wrap(A,r);return this.addRaw(n).addEOL()}addTable(e){const t=e.map((e=>{const t=e.map((e=>{if(typeof e==="string"){return this.wrap("td",e)}const{header:t,data:A,colspan:r,rowspan:n}=e;const s=t?"th":"td";const o=Object.assign(Object.assign({},r&&{colspan:r}),n&&{rowspan:n});return this.wrap(s,A,o)})).join("");return this.wrap("tr",t)})).join("");const A=this.wrap("table",t);return this.addRaw(A).addEOL()}addDetails(e,t){const A=this.wrap("details",this.wrap("summary",e)+t);return this.addRaw(A).addEOL()}addImage(e,t,A){const{width:r,height:n}=A||{};const s=Object.assign(Object.assign({},r&&{width:r}),n&&{height:n});const o=this.wrap("img",null,Object.assign({src:e,alt:t},s));return this.addRaw(o).addEOL()}addHeading(e,t){const A=`h${t}`;const r=["h1","h2","h3","h4","h5","h6"].includes(A)?A:"h1";const n=this.wrap(r,e);return this.addRaw(n).addEOL()}addSeparator(){const e=this.wrap("hr",null);return this.addRaw(e).addEOL()}addBreak(){const e=this.wrap("br",null);return this.addRaw(e).addEOL()}addQuote(e,t){const A=Object.assign({},t&&{cite:t});const r=this.wrap("blockquote",e,A);return this.addRaw(r).addEOL()}addLink(e,t){const A=this.wrap("a",e,{href:t});return this.addRaw(A).addEOL()}}const c=new Summary;t.markdownSummary=c;t.summary=c},302:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.toCommandValue=toCommandValue;t.toCommandProperties=toCommandProperties;function toCommandValue(e){if(e===null||e===undefined){return""}else if(typeof e==="string"||e instanceof String){return e}return JSON.stringify(e)}function toCommandProperties(e){if(!Object.keys(e).length){return{}}return{title:e.title,file:e.file,line:e.startLine,endLine:e.endLine,col:e.startColumn,endColumn:e.endColumn}}},5236:function(e,t,A){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,A,r){if(r===undefined)r=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,r,n)}:function(e,t,A,r){if(r===undefined)r=A;e[r]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var A in e)if(Object.prototype.hasOwnProperty.call(e,A))t[t.length]=A;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A=ownKeys(e),s=0;s{o+=c.write(e);if(g){g(e)}};const stdOutListener=e=>{s+=a.write(e);if(l){l(e)}};const u=Object.assign(Object.assign({},A===null||A===void 0?void 0:A.listeners),{stdout:stdOutListener,stderr:stdErrListener});const h=yield exec(e,t,Object.assign(Object.assign({},A),{listeners:u}));s+=a.end();o+=c.end();return{exitCode:h,stdout:s,stderr:o}}))}},6665:function(e,t,A){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,A,r){if(r===undefined)r=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,r,n)}:function(e,t,A,r){if(r===undefined)r=A;e[r]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var A in e)if(Object.prototype.hasOwnProperty.call(e,A))t[t.length]=A;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A=ownKeys(e),s=0;s-1){const e=r.substring(0,n);A(e);r=r.substring(n+i.EOL.length);n=r.indexOf(i.EOL)}return r}catch(e){this._debug(`error processing line. Failed with error ${e}`);return""}}_getSpawnFileName(){if(E){if(this._isCmdFile()){return process.env["COMSPEC"]||"cmd.exe"}}return this.toolPath}_getSpawnArgs(e){if(E){if(this._isCmdFile()){let t=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(const A of this.args){t+=" ";t+=e.windowsVerbatimArguments?A:this._windowsQuoteCmdArg(A)}t+='"';return[t]}}return this.args}_endsWith(e,t){return e.endsWith(t)}_isCmdFile(){const e=this.toolPath.toUpperCase();return this._endsWith(e,".CMD")||this._endsWith(e,".BAT")}_windowsQuoteCmdArg(e){if(!this._isCmdFile()){return this._uvQuoteCmdArg(e)}if(!e){return'""'}const t=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'];let A=false;for(const r of e){if(t.some((e=>e===r))){A=true;break}}if(!A){return e}let r='"';let n=true;for(let t=e.length;t>0;t--){r+=e[t-1];if(n&&e[t-1]==="\\"){r+="\\"}else if(e[t-1]==='"'){n=true;r+='"'}else{n=false}}r+='"';return r.split("").reverse().join("")}_uvQuoteCmdArg(e){if(!e){return'""'}if(!e.includes(" ")&&!e.includes("\t")&&!e.includes('"')){return e}if(!e.includes('"')&&!e.includes("\\")){return`"${e}"`}let t='"';let A=true;for(let r=e.length;r>0;r--){t+=e[r-1];if(A&&e[r-1]==="\\"){t+="\\"}else if(e[r-1]==='"'){A=true;t+="\\"}else{A=false}}t+='"';return t.split("").reverse().join("")}_cloneExecOptions(e){e=e||{};const t={cwd:e.cwd||process.cwd(),env:e.env||process.env,silent:e.silent||false,windowsVerbatimArguments:e.windowsVerbatimArguments||false,failOnStdErr:e.failOnStdErr||false,ignoreReturnCode:e.ignoreReturnCode||false,delay:e.delay||1e4};t.outStream=e.outStream||process.stdout;t.errStream=e.errStream||process.stderr;return t}_getSpawnOptions(e,t){e=e||{};const A={};A.cwd=e.cwd;A.env=e.env;A["windowsVerbatimArguments"]=e.windowsVerbatimArguments||this._isCmdFile();if(e.windowsVerbatimArguments){A.argv0=`"${t}"`}return A}exec(){return o(this,void 0,void 0,(function*(){if(!u.isRooted(this.toolPath)&&(this.toolPath.includes("/")||E&&this.toolPath.includes("\\"))){this.toolPath=l.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)}this.toolPath=yield g.which(this.toolPath,true);return new Promise(((e,t)=>o(this,void 0,void 0,(function*(){this._debug(`exec tool: ${this.toolPath}`);this._debug("arguments:");for(const e of this.args){this._debug(` ${e}`)}const A=this._cloneExecOptions(this.options);if(!A.silent&&A.outStream){A.outStream.write(this._getCommandString(A)+i.EOL)}const r=new ExecState(A,this.toolPath);r.on("debug",(e=>{this._debug(e)}));if(this.options.cwd&&!(yield u.exists(this.options.cwd))){return t(new Error(`The cwd: ${this.options.cwd} does not exist!`))}const n=this._getSpawnFileName();const s=c.spawn(n,this._getSpawnArgs(A),this._getSpawnOptions(this.options,n));let o="";if(s.stdout){s.stdout.on("data",(e=>{if(this.options.listeners&&this.options.listeners.stdout){this.options.listeners.stdout(e)}if(!A.silent&&A.outStream){A.outStream.write(e)}o=this._processLineBuffer(e,o,(e=>{if(this.options.listeners&&this.options.listeners.stdline){this.options.listeners.stdline(e)}}))}))}let a="";if(s.stderr){s.stderr.on("data",(e=>{r.processStderr=true;if(this.options.listeners&&this.options.listeners.stderr){this.options.listeners.stderr(e)}if(!A.silent&&A.errStream&&A.outStream){const t=A.failOnStdErr?A.errStream:A.outStream;t.write(e)}a=this._processLineBuffer(e,a,(e=>{if(this.options.listeners&&this.options.listeners.errline){this.options.listeners.errline(e)}}))}))}s.on("error",(e=>{r.processError=e.message;r.processExited=true;r.processClosed=true;r.CheckComplete()}));s.on("exit",(e=>{r.processExitCode=e;r.processExited=true;this._debug(`Exit code ${e} received from tool '${this.toolPath}'`);r.CheckComplete()}));s.on("close",(e=>{r.processExitCode=e;r.processExited=true;r.processClosed=true;this._debug(`STDIO streams have closed for tool '${this.toolPath}'`);r.CheckComplete()}));r.on("done",((A,r)=>{if(o.length>0){this.emit("stdline",o)}if(a.length>0){this.emit("errline",a)}s.removeAllListeners();if(A){t(A)}else{e(r)}}));if(this.options.input){if(!s.stdin){throw new Error("child process missing stdin")}s.stdin.end(this.options.input)}}))))}))}}t.ToolRunner=ToolRunner;function argStringToArray(e){const t=[];let A=false;let r=false;let n="";function append(e){if(r&&e!=='"'){n+="\\"}n+=e;r=false}for(let s=0;s0){t.push(n);n=""}continue}append(o)}if(n.length>0){t.push(n.trim())}return t}class ExecState extends a.EventEmitter{constructor(e,t){super();this.processClosed=false;this.processError="";this.processExitCode=0;this.processExited=false;this.processStderr=false;this.delay=1e4;this.done=false;this.timeout=null;if(!t){throw new Error("toolPath must not be empty")}this.options=e;this.toolPath=t;if(e.delay){this.delay=e.delay}}CheckComplete(){if(this.done){return}if(this.processClosed){this._setResult()}else if(this.processExited){this.timeout=(0,h.setTimeout)(ExecState.HandleTimeout,this.delay,this)}}_debug(e){this.emit("debug",e)}_setResult(){let e;if(this.processExited){if(this.processError){e=new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`)}else if(this.processExitCode!==0&&!this.options.ignoreReturnCode){e=new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`)}else if(this.processStderr&&this.options.failOnStdErr){e=new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`)}}if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.done=true;this.emit("done",e,this.processExitCode)}static HandleTimeout(e){if(e.done){return}if(!e.processClosed&&e.processExited){const t=`The STDIO streams did not close within ${e.delay/1e3} seconds of the exit event from process '${e.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`;e._debug(t)}e._setResult()}}},4552:function(e,t){"use strict";var A=this&&this.__awaiter||function(e,t,A,r){function adopt(e){return e instanceof A?e:new A((function(t){t(e)}))}return new(A||(A=Promise))((function(A,n){function fulfilled(e){try{step(r.next(e))}catch(e){n(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){n(e)}}function step(e){e.done?A(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:true});t.PersonalAccessTokenCredentialHandler=t.BearerCredentialHandler=t.BasicCredentialHandler=void 0;class BasicCredentialHandler{constructor(e,t){this.username=e;this.password=t}prepareRequest(e){if(!e.headers){throw Error("The request has no headers")}e.headers["Authorization"]=`Basic ${Buffer.from(`${this.username}:${this.password}`).toString("base64")}`}canHandleAuthentication(){return false}handleAuthentication(){return A(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}t.BasicCredentialHandler=BasicCredentialHandler;class BearerCredentialHandler{constructor(e){this.token=e}prepareRequest(e){if(!e.headers){throw Error("The request has no headers")}e.headers["Authorization"]=`Bearer ${this.token}`}canHandleAuthentication(){return false}handleAuthentication(){return A(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}t.BearerCredentialHandler=BearerCredentialHandler;class PersonalAccessTokenCredentialHandler{constructor(e){this.token=e}prepareRequest(e){if(!e.headers){throw Error("The request has no headers")}e.headers["Authorization"]=`Basic ${Buffer.from(`PAT:${this.token}`).toString("base64")}`}canHandleAuthentication(){return false}handleAuthentication(){return A(this,void 0,void 0,(function*(){throw new Error("not implemented")}))}}t.PersonalAccessTokenCredentialHandler=PersonalAccessTokenCredentialHandler},4844:function(e,t,A){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,A,r){if(r===undefined)r=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,r,n)}:function(e,t,A,r){if(r===undefined)r=A;e[r]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var A in e)if(Object.prototype.hasOwnProperty.call(e,A))t[t.length]=A;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A=ownKeys(e),s=0;so(this,void 0,void 0,(function*(){let t=Buffer.alloc(0);this.message.on("data",(e=>{t=Buffer.concat([t,e])}));this.message.on("end",(()=>{e(t.toString())}))}))))}))}readBodyBuffer(){return o(this,void 0,void 0,(function*(){return new Promise((e=>o(this,void 0,void 0,(function*(){const t=[];this.message.on("data",(e=>{t.push(e)}));this.message.on("end",(()=>{e(Buffer.concat(t))}))}))))}))}}t.HttpClientResponse=HttpClientResponse;function isHttps(e){const t=new URL(e);return t.protocol==="https:"}class HttpClient{constructor(e,t,A){this._ignoreSslError=false;this._allowRedirects=true;this._allowRedirectDowngrade=false;this._maxRedirects=50;this._allowRetries=false;this._maxRetries=1;this._keepAlive=false;this._disposed=false;this.userAgent=this._getUserAgentWithOrchestrationId(e);this.handlers=t||[];this.requestOptions=A;if(A){if(A.ignoreSslError!=null){this._ignoreSslError=A.ignoreSslError}this._socketTimeout=A.socketTimeout;if(A.allowRedirects!=null){this._allowRedirects=A.allowRedirects}if(A.allowRedirectDowngrade!=null){this._allowRedirectDowngrade=A.allowRedirectDowngrade}if(A.maxRedirects!=null){this._maxRedirects=Math.max(A.maxRedirects,0)}if(A.keepAlive!=null){this._keepAlive=A.keepAlive}if(A.allowRetries!=null){this._allowRetries=A.allowRetries}if(A.maxRetries!=null){this._maxRetries=A.maxRetries}}}options(e,t){return o(this,void 0,void 0,(function*(){return this.request("OPTIONS",e,null,t||{})}))}get(e,t){return o(this,void 0,void 0,(function*(){return this.request("GET",e,null,t||{})}))}del(e,t){return o(this,void 0,void 0,(function*(){return this.request("DELETE",e,null,t||{})}))}post(e,t,A){return o(this,void 0,void 0,(function*(){return this.request("POST",e,t,A||{})}))}patch(e,t,A){return o(this,void 0,void 0,(function*(){return this.request("PATCH",e,t,A||{})}))}put(e,t,A){return o(this,void 0,void 0,(function*(){return this.request("PUT",e,t,A||{})}))}head(e,t){return o(this,void 0,void 0,(function*(){return this.request("HEAD",e,null,t||{})}))}sendStream(e,t,A,r){return o(this,void 0,void 0,(function*(){return this.request(e,t,A,r)}))}getJson(e){return o(this,arguments,void 0,(function*(e,t={}){t[h.Accept]=this._getExistingOrDefaultHeader(t,h.Accept,E.ApplicationJson);const A=yield this.get(e,t);return this._processResponse(A,this.requestOptions)}))}postJson(e,t){return o(this,arguments,void 0,(function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[h.Accept]=this._getExistingOrDefaultHeader(A,h.Accept,E.ApplicationJson);A[h.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,E.ApplicationJson);const n=yield this.post(e,r,A);return this._processResponse(n,this.requestOptions)}))}putJson(e,t){return o(this,arguments,void 0,(function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[h.Accept]=this._getExistingOrDefaultHeader(A,h.Accept,E.ApplicationJson);A[h.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,E.ApplicationJson);const n=yield this.put(e,r,A);return this._processResponse(n,this.requestOptions)}))}patchJson(e,t){return o(this,arguments,void 0,(function*(e,t,A={}){const r=JSON.stringify(t,null,2);A[h.Accept]=this._getExistingOrDefaultHeader(A,h.Accept,E.ApplicationJson);A[h.ContentType]=this._getExistingOrDefaultContentTypeHeader(A,E.ApplicationJson);const n=yield this.patch(e,r,A);return this._processResponse(n,this.requestOptions)}))}request(e,t,A,r){return o(this,void 0,void 0,(function*(){if(this._disposed){throw new Error("Client has already been disposed.")}const n=new URL(t);let s=this._prepareRequest(e,n,r);const o=this._allowRetries&&C.includes(e)?this._maxRetries+1:1;let i=0;let a;do{a=yield this.requestRaw(s,A);if(a&&a.message&&a.message.statusCode===u.Unauthorized){let e;for(const t of this.handlers){if(t.canHandleAuthentication(a)){e=t;break}}if(e){return e.handleAuthentication(this,s,A)}else{return a}}let t=this._maxRedirects;while(a.message.statusCode&&Q.includes(a.message.statusCode)&&this._allowRedirects&&t>0){const o=a.message.headers["location"];if(!o){break}const i=new URL(o);if(n.protocol==="https:"&&n.protocol!==i.protocol&&!this._allowRedirectDowngrade){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.")}yield a.readBody();if(i.hostname!==n.hostname){for(const e in r){if(e.toLowerCase()==="authorization"){delete r[e]}}}s=this._prepareRequest(e,i,r);a=yield this.requestRaw(s,A);t--}if(!a.message.statusCode||!B.includes(a.message.statusCode)){return a}i+=1;if(i{function callbackForResult(e,t){if(e){r(e)}else if(!t){r(new Error("Unknown error"))}else{A(t)}}this.requestRawWithCallback(e,t,callbackForResult)}))}))}requestRawWithCallback(e,t,A){if(typeof t==="string"){if(!e.options.headers){e.options.headers={}}e.options.headers["Content-Length"]=Buffer.byteLength(t,"utf8")}let r=false;function handleResult(e,t){if(!r){r=true;A(e,t)}}const n=e.httpModule.request(e.options,(e=>{const t=new HttpClientResponse(e);handleResult(undefined,t)}));let s;n.on("socket",(e=>{s=e}));n.setTimeout(this._socketTimeout||3*6e4,(()=>{if(s){s.end()}handleResult(new Error(`Request timeout: ${e.options.path}`))}));n.on("error",(function(e){handleResult(e)}));if(t&&typeof t==="string"){n.write(t,"utf8")}if(t&&typeof t!=="string"){t.on("close",(function(){n.end()}));t.pipe(n)}else{n.end()}}getAgent(e){const t=new URL(e);return this._getAgent(t)}getAgentDispatcher(e){const t=new URL(e);const A=c.getProxyUrl(t);const r=A&&A.hostname;if(!r){return}return this._getProxyAgentDispatcher(t,A)}_prepareRequest(e,t,A){const r={};r.parsedUrl=t;const n=r.parsedUrl.protocol==="https:";r.httpModule=n?a:i;const s=n?443:80;r.options={};r.options.host=r.parsedUrl.hostname;r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):s;r.options.path=(r.parsedUrl.pathname||"")+(r.parsedUrl.search||"");r.options.method=e;r.options.headers=this._mergeHeaders(A);if(this.userAgent!=null){r.options.headers["user-agent"]=this.userAgent}r.options.agent=this._getAgent(r.parsedUrl);if(this.handlers){for(const e of this.handlers){e.prepareRequest(r.options)}}return r}_mergeHeaders(e){if(this.requestOptions&&this.requestOptions.headers){return Object.assign({},lowercaseKeys(this.requestOptions.headers),lowercaseKeys(e||{}))}return lowercaseKeys(e||{})}_getExistingOrDefaultHeader(e,t,A){let r;if(this.requestOptions&&this.requestOptions.headers){const e=lowercaseKeys(this.requestOptions.headers)[t];if(e){r=typeof e==="number"?e.toString():e}}const n=e[t];if(n!==undefined){return typeof n==="number"?n.toString():n}if(r!==undefined){return r}return A}_getExistingOrDefaultContentTypeHeader(e,t){let A;if(this.requestOptions&&this.requestOptions.headers){const e=lowercaseKeys(this.requestOptions.headers)[h.ContentType];if(e){if(typeof e==="number"){A=String(e)}else if(Array.isArray(e)){A=e.join(", ")}else{A=e}}}const r=e[h.ContentType];if(r!==undefined){if(typeof r==="number"){return String(r)}else if(Array.isArray(r)){return r.join(", ")}else{return r}}if(A!==undefined){return A}return t}_getAgent(e){let t;const A=c.getProxyUrl(e);const r=A&&A.hostname;if(this._keepAlive&&r){t=this._proxyAgent}if(!r){t=this._agent}if(t){return t}const n=e.protocol==="https:";let s=100;if(this.requestOptions){s=this.requestOptions.maxSockets||i.globalAgent.maxSockets}if(A&&A.hostname){const e={maxSockets:s,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(A.username||A.password)&&{proxyAuth:`${A.username}:${A.password}`}),{host:A.hostname,port:A.port})};let r;const o=A.protocol==="https:";if(n){r=o?l.httpsOverHttps:l.httpsOverHttp}else{r=o?l.httpOverHttps:l.httpOverHttp}t=r(e);this._proxyAgent=t}if(!t){const e={keepAlive:this._keepAlive,maxSockets:s};t=n?new a.Agent(e):new i.Agent(e);this._agent=t}if(n&&this._ignoreSslError){t.options=Object.assign(t.options||{},{rejectUnauthorized:false})}return t}_getProxyAgentDispatcher(e,t){let A;if(this._keepAlive){A=this._proxyAgentDispatcher}if(A){return A}const r=e.protocol==="https:";A=new g.ProxyAgent(Object.assign({uri:t.href,pipelining:!this._keepAlive?0:1},(t.username||t.password)&&{token:`Basic ${Buffer.from(`${t.username}:${t.password}`).toString("base64")}`}));this._proxyAgentDispatcher=A;if(r&&this._ignoreSslError){A.options=Object.assign(A.options.requestTls||{},{rejectUnauthorized:false})}return A}_getUserAgentWithOrchestrationId(e){const t=e||"actions/http-client";const A=process.env["ACTIONS_ORCHESTRATION_ID"];if(A){const e=A.replace(/[^a-z0-9_.-]/gi,"_");return`${t} actions_orchestration_id/${e}`}return t}_performExponentialBackoff(e){return o(this,void 0,void 0,(function*(){e=Math.min(I,e);const t=d*Math.pow(2,e);return new Promise((e=>setTimeout((()=>e()),t)))}))}_processResponse(e,t){return o(this,void 0,void 0,(function*(){return new Promise(((A,r)=>o(this,void 0,void 0,(function*(){const n=e.message.statusCode||0;const s={statusCode:n,result:null,headers:{}};if(n===u.NotFound){A(s)}function dateTimeDeserializer(e,t){if(typeof t==="string"){const e=new Date(t);if(!isNaN(e.valueOf())){return e}}return t}let o;let i;try{i=yield e.readBody();if(i&&i.length>0){if(t&&t.deserializeDates){o=JSON.parse(i,dateTimeDeserializer)}else{o=JSON.parse(i)}s.result=o}s.headers=e.message.headers}catch(e){}if(n>299){let e;if(o&&o.message){e=o.message}else if(i&&i.length>0){e=i}else{e=`Failed request: (${n})`}const t=new HttpClientError(e,n);t.result=s.result;r(t)}else{A(s)}}))))}))}}t.HttpClient=HttpClient;const lowercaseKeys=e=>Object.keys(e).reduce(((t,A)=>(t[A.toLowerCase()]=e[A],t)),{})},4988:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.getProxyUrl=getProxyUrl;t.checkBypass=checkBypass;function getProxyUrl(e){const t=e.protocol==="https:";if(checkBypass(e)){return undefined}const A=(()=>{if(t){return process.env["https_proxy"]||process.env["HTTPS_PROXY"]}else{return process.env["http_proxy"]||process.env["HTTP_PROXY"]}})();if(A){try{return new DecodedURL(A)}catch(e){if(!A.startsWith("http://")&&!A.startsWith("https://"))return new DecodedURL(`http://${A}`)}}else{return undefined}}function checkBypass(e){if(!e.hostname){return false}const t=e.hostname;if(isLoopbackAddress(t)){return true}const A=process.env["no_proxy"]||process.env["NO_PROXY"]||"";if(!A){return false}let r;if(e.port){r=Number(e.port)}else if(e.protocol==="http:"){r=80}else if(e.protocol==="https:"){r=443}const n=[e.hostname.toUpperCase()];if(typeof r==="number"){n.push(`${n[0]}:${r}`)}for(const e of A.split(",").map((e=>e.trim().toUpperCase())).filter((e=>e))){if(e==="*"||n.some((t=>t===e||t.endsWith(`.${e}`)||e.startsWith(".")&&t.endsWith(`${e}`)))){return true}}return false}function isLoopbackAddress(e){const t=e.toLowerCase();return t==="localhost"||t.startsWith("127.")||t.startsWith("[::1]")||t.startsWith("[0:0:0:0:0:0:0:1]")}class DecodedURL extends URL{constructor(e,t){super(e,t);this._decodedUsername=decodeURIComponent(super.username);this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}},5207:function(e,t,A){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,A,r){if(r===undefined)r=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,r,n)}:function(e,t,A,r){if(r===undefined)r=A;e[r]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var A in e)if(Object.prototype.hasOwnProperty.call(e,A))t[t.length]=A;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A=ownKeys(e),s=0;se.toUpperCase()===t))){return e}}else{if(isUnixExecutable(r)){return e}}}const n=e;for(const s of A){e=n+s;r=undefined;try{r=yield(0,t.stat)(e)}catch(t){if(t.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${t}`)}}if(r&&r.isFile()){if(t.IS_WINDOWS){try{const A=c.dirname(e);const r=c.basename(e).toUpperCase();for(const n of yield(0,t.readdir)(A)){if(r===n.toUpperCase()){e=c.join(A,n);break}}}catch(t){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${t}`)}return e}else{if(isUnixExecutable(r)){return e}}}}return""}))}function normalizeSeparators(e){e=e||"";if(t.IS_WINDOWS){e=e.replace(/\//g,"\\");return e.replace(/\\\\+/g,"\\")}return e.replace(/\/\/+/g,"/")}function isUnixExecutable(e){return(e.mode&1)>0||(e.mode&8)>0&&process.getgid!==undefined&&e.gid===process.getgid()||(e.mode&64)>0&&process.getuid!==undefined&&e.uid===process.getuid()}function getCmdPath(){var e;return(e=process.env["COMSPEC"])!==null&&e!==void 0?e:`cmd.exe`}},4994:function(e,t,A){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,A,r){if(r===undefined)r=A;var n=Object.getOwnPropertyDescriptor(t,A);if(!n||("get"in n?!t.__esModule:n.writable||n.configurable)){n={enumerable:true,get:function(){return t[A]}}}Object.defineProperty(e,r,n)}:function(e,t,A,r){if(r===undefined)r=A;e[r]=t[A]});var n=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:true,value:t})}:function(e,t){e["default"]=t});var s=this&&this.__importStar||function(){var ownKeys=function(e){ownKeys=Object.getOwnPropertyNames||function(e){var t=[];for(var A in e)if(Object.prototype.hasOwnProperty.call(e,A))t[t.length]=A;return t};return ownKeys(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var A=ownKeys(e),s=0;s|]/.test(e)){throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows')}}try{yield c.rm(e,{force:true,maxRetries:3,recursive:true,retryDelay:300})}catch(e){throw new Error(`File was unable to be removed ${e}`)}}))}function mkdirP(e){return o(this,void 0,void 0,(function*(){(0,i.ok)(e,"a path argument must be provided");yield c.mkdir(e,{recursive:true})}))}function which(e,t){return o(this,void 0,void 0,(function*(){if(!e){throw new Error("parameter 'tool' is required")}if(t){const t=yield which(e,false);if(!t){if(c.IS_WINDOWS){throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`)}else{throw new Error(`Unable to locate executable file: ${e}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`)}}return t}const A=yield findInPath(e);if(A&&A.length>0){return A[0]}return""}))}function findInPath(e){return o(this,void 0,void 0,(function*(){if(!e){throw new Error("parameter 'tool' is required")}const t=[];if(c.IS_WINDOWS&&process.env["PATHEXT"]){for(const e of process.env["PATHEXT"].split(a.delimiter)){if(e){t.push(e)}}}if(c.isRooted(e)){const A=yield c.tryGetExecutablePath(e,t);if(A){return[A]}return[]}if(e.includes(a.sep)){return[]}const A=[];if(process.env.PATH){for(const e of process.env.PATH.split(a.delimiter)){if(e){A.push(e)}}}const r=[];for(const n of A){const A=yield c.tryGetExecutablePath(a.join(n,e),t);if(A){r.push(A)}}return r}))}function readCopyOptions(e){const t=e.force==null?true:e.force;const A=Boolean(e.recursive);const r=e.copySourceDirectory==null?true:Boolean(e.copySourceDirectory);return{force:t,recursive:A,copySourceDirectory:r}}function cpDirRecursive(e,t,A,r){return o(this,void 0,void 0,(function*(){if(A>=255)return;A++;yield mkdirP(t);const n=yield c.readdir(e);for(const s of n){const n=`${e}/${s}`;const o=`${t}/${s}`;const i=yield c.lstat(n);if(i.isDirectory()){yield cpDirRecursive(n,o,A,r)}else{yield copyFile(n,o,r)}}yield c.chmod(t,(yield c.stat(e)).mode)}))}function copyFile(e,t,A){return o(this,void 0,void 0,(function*(){if((yield c.lstat(e)).isSymbolicLink()){try{yield c.lstat(t);yield c.unlink(t)}catch(e){if(e.code==="EPERM"){yield c.chmod(t,"0666");yield c.unlink(t)}}const A=yield c.readlink(e);yield c.symlink(A,t,c.IS_WINDOWS?"junction":null)}else if(!(yield c.exists(t))||A){yield c.copyFile(e,t)}}))}},4281:(e,t,A)=>{"use strict";const r=A(1950);const n=A(9980);function renamed(e,t){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. "+"Use yaml."+t+" instead, which is now safe by default.")}}e.exports.Type=A(9557);e.exports.Schema=A(2046);e.exports.FAILSAFE_SCHEMA=A(9832);e.exports.JSON_SCHEMA=A(8927);e.exports.CORE_SCHEMA=A(5746);e.exports.DEFAULT_SCHEMA=A(7336);e.exports.load=r.load;e.exports.loadAll=r.loadAll;e.exports.dump=n.dump;e.exports.YAMLException=A(1248);e.exports.types={binary:A(8149),float:A(7584),map:A(7316),null:A(4333),pairs:A(6267),set:A(8758),timestamp:A(8966),bool:A(7296),int:A(2271),merge:A(6854),omap:A(8649),seq:A(7161),str:A(3929)};e.exports.safeLoad=renamed("safeLoad","load");e.exports.safeLoadAll=renamed("safeLoadAll","loadAll");e.exports.safeDump=renamed("safeDump","dump")},9816:e=>{"use strict";function isNothing(e){return typeof e==="undefined"||e===null}function isObject(e){return typeof e==="object"&&e!==null}function toArray(e){if(Array.isArray(e))return e;else if(isNothing(e))return[];return[e]}function extend(e,t){if(t){const A=Object.keys(t);for(let r=0,n=A.length;r{"use strict";const r=A(9816);const n=A(1248);const s=A(7336);const o=Object.prototype.toString;const i=Object.prototype.hasOwnProperty;const a=65279;const c=9;const l=10;const g=13;const u=32;const h=33;const E=34;const Q=35;const B=37;const C=38;const I=39;const d=42;const f=44;const p=45;const y=58;const w=61;const m=62;const D=63;const k=64;const b=91;const R=93;const S=96;const F=123;const N=124;const M=125;const U={};U[0]="\\0";U[7]="\\a";U[8]="\\b";U[9]="\\t";U[10]="\\n";U[11]="\\v";U[12]="\\f";U[13]="\\r";U[27]="\\e";U[34]='\\"';U[92]="\\\\";U[133]="\\N";U[160]="\\_";U[8232]="\\L";U[8233]="\\P";const L=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];const T=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function compileStyleMap(e,t){if(t===null)return{};const A={};const r=Object.keys(t);for(let n=0,s=r.length;n=32&&e<=126||e>=161&&e<=55295&&e!==8232&&e!==8233||e>=57344&&e<=65533&&e!==a||e>=65536&&e<=1114111}function isNsCharOrWhitespace(e){return isPrintable(e)&&e!==a&&e!==g&&e!==l}function isPlainSafe(e,t,A){const r=isNsCharOrWhitespace(e);const n=r&&!isWhitespace(e);return(A?r:r&&e!==f&&e!==b&&e!==R&&e!==F&&e!==M)&&e!==Q&&!(t===y&&!n)||isNsCharOrWhitespace(t)&&!isWhitespace(t)&&e===Q||t===y&&n}function isPlainSafeFirst(e){return isPrintable(e)&&e!==a&&!isWhitespace(e)&&e!==p&&e!==D&&e!==y&&e!==f&&e!==b&&e!==R&&e!==F&&e!==M&&e!==Q&&e!==C&&e!==d&&e!==h&&e!==N&&e!==w&&e!==m&&e!==I&&e!==E&&e!==B&&e!==k&&e!==S}function isPlainSafeLast(e){return!isWhitespace(e)&&e!==y}function codePointAt(e,t){const A=e.charCodeAt(t);let r;if(A>=55296&&A<=56319&&t+1=56320&&r<=57343){return(A-55296)*1024+r-56320+65536}}return A}function needIndentIndicator(e){const t=/^\n* /;return t.test(e)}const H=1;const x=2;const G=3;const J=4;const V=5;function chooseScalarStyle(e,t,A,r,n,s,o,i){let a;let c=0;let g=null;let u=false;let h=false;const E=r!==-1;let Q=-1;let B=isPlainSafeFirst(codePointAt(e,0))&&isPlainSafeLast(codePointAt(e,e.length-1));if(t||o){for(a=0;a=65536?a+=2:a++){c=codePointAt(e,a);if(!isPrintable(c)){return V}B=B&&isPlainSafe(c,g,i);g=c}}else{for(a=0;a=65536?a+=2:a++){c=codePointAt(e,a);if(c===l){u=true;if(E){h=h||a-Q-1>r&&e[Q+1]!==" ";Q=a}}else if(!isPrintable(c)){return V}B=B&&isPlainSafe(c,g,i);g=c}h=h||E&&(a-Q-1>r&&e[Q+1]!==" ")}if(!u&&!h){if(B&&!o&&!n(e)){return H}return s===Y?V:x}if(A>9&&needIndentIndicator(e)){return V}if(!o){return h?J:G}return s===Y?V:x}function writeScalar(e,t,A,r,s){e.dump=function(){if(t.length===0){return e.quotingType===Y?'""':"''"}if(!e.noCompatMode){if(L.indexOf(t)!==-1||T.test(t)){return e.quotingType===Y?'"'+t+'"':"'"+t+"'"}}const o=e.indent*Math.max(1,A);const i=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o);const a=r||e.flowLevel>-1&&A>=e.flowLevel;function testAmbiguity(t){return testImplicitResolving(e,t)}switch(chooseScalarStyle(t,a,e.indent,i,testAmbiguity,e.quotingType,e.forceQuotes&&!r,s)){case H:return t;case x:return"'"+t.replace(/'/g,"''")+"'";case G:return"|"+blockHeader(t,e.indent)+dropEndingNewline(indentString(t,o));case J:return">"+blockHeader(t,e.indent)+dropEndingNewline(indentString(foldString(t,i),o));case V:return'"'+escapeString(t,i)+'"';default:throw new n("impossible error: invalid scalar style")}}()}function blockHeader(e,t){const A=needIndentIndicator(e)?String(t):"";const r=e[e.length-1]==="\n";const n=r&&(e[e.length-2]==="\n"||e==="\n");const s=n?"+":r?"":"-";return A+s+"\n"}function dropEndingNewline(e){return e[e.length-1]==="\n"?e.slice(0,-1):e}function foldString(e,t){const A=/(\n+)([^\n]*)/g;let r=function(){let r=e.indexOf("\n");r=r!==-1?r:e.length;A.lastIndex=r;return foldLine(e.slice(0,r),t)}();let n=e[0]==="\n"||e[0]===" ";let s;let o;while(o=A.exec(e)){const e=o[1];const A=o[2];s=A[0]===" ";r+=e+(!n&&!s&&A!==""?"\n":"")+foldLine(A,t);n=s}return r}function foldLine(e,t){if(e===""||e[0]===" ")return e;const A=/ [^ ]/g;let r;let n=0;let s;let o=0;let i=0;let a="";while(r=A.exec(e)){i=r.index;if(i-n>t){s=o>n?o:i;a+="\n"+e.slice(n,s);n=s+1}o=i}a+="\n";if(e.length-n>t&&o>n){a+=e.slice(n,o)+"\n"+e.slice(o+1)}else{a+=e.slice(n)}return a.slice(1)}function escapeString(e){let t="";let A=0;for(let r=0;r=65536?r+=2:r++){A=codePointAt(e,r);const n=U[A];if(!n&&isPrintable(A)){t+=e[r];if(A>=65536)t+=e[r+1]}else{t+=n||encodeHex(A)}}return t}function writeFlowSequence(e,t,A){let r="";const n=e.tag;for(let n=0,s=A.length;n1024)o+="? ";o+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" ");if(!writeNode(e,t,a,false,false)){continue}o+=e.dump;r+=o}e.tag=n;e.dump="{"+r+"}"}function writeBlockMapping(e,t,A,r){let s="";const o=e.tag;const i=Object.keys(A);if(e.sortKeys===true){i.sort()}else if(typeof e.sortKeys==="function"){i.sort(e.sortKeys)}else if(e.sortKeys){throw new n("sortKeys must be a boolean or a function")}for(let n=0,o=i.length;n1024;if(g){if(e.dump&&l===e.dump.charCodeAt(0)){o+="?"}else{o+="? "}}o+=e.dump;if(g){o+=generateNextLine(e,t)}if(!writeNode(e,t+1,c,true,g)){continue}if(e.dump&&l===e.dump.charCodeAt(0)){o+=":"}else{o+=": "}o+=e.dump;s+=o}e.tag=o;e.dump=s||"{}"}function detectType(e,t,A){const r=A?e.explicitTypes:e.implicitTypes;for(let s=0,a=r.length;s tag resolver accepts not "'+A+'" style')}e.dump=r}return true}}return false}function writeNode(e,t,A,r,s,i,a){e.tag=null;e.dump=A;if(!detectType(e,A,false)){detectType(e,A,true)}const c=o.call(e.dump);const l=r;if(r){r=e.flowLevel<0||e.flowLevel>t}const g=c==="[object Object]"||c==="[object Array]";let u;let h;if(g){u=e.duplicates.indexOf(A);h=u!==-1}if(e.tag!==null&&e.tag!=="?"||h||e.indent!==2&&t>0){s=false}if(h&&e.usedDuplicates[u]){e.dump="*ref_"+u}else{if(g&&h&&!e.usedDuplicates[u]){e.usedDuplicates[u]=true}if(c==="[object Object]"){if(r&&Object.keys(e.dump).length!==0){writeBlockMapping(e,t,e.dump,s);if(h){e.dump="&ref_"+u+e.dump}}else{writeFlowMapping(e,t,e.dump);if(h){e.dump="&ref_"+u+" "+e.dump}}}else if(c==="[object Array]"){if(r&&e.dump.length!==0){if(e.noArrayIndent&&!a&&t>0){writeBlockSequence(e,t-1,e.dump,s)}else{writeBlockSequence(e,t,e.dump,s)}if(h){e.dump="&ref_"+u+e.dump}}else{writeFlowSequence(e,t,e.dump);if(h){e.dump="&ref_"+u+" "+e.dump}}}else if(c==="[object String]"){if(e.tag!=="?"){writeScalar(e,e.dump,t,i,l)}}else if(c==="[object Undefined]"){return false}else{if(e.skipInvalid)return false;throw new n("unacceptable kind of an object to dump "+c)}if(e.tag!==null&&e.tag!=="?"){let t=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21");if(e.tag[0]==="!"){t="!"+t}else if(t.slice(0,18)==="tag:yaml.org,2002:"){t="!!"+t.slice(18)}else{t="!<"+t+">"}e.dump=t+" "+e.dump}}return true}function getDuplicateReferences(e,t){const A=[];const r=[];inspectNode(e,A,r);const n=r.length;for(let e=0;e{"use strict";function formatError(e,t){let A="";const r=e.reason||"(unknown reason)";if(!e.mark)return r;if(e.mark.name){A+='in "'+e.mark.name+'" '}A+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")";if(!t&&e.mark.snippet){A+="\n\n"+e.mark.snippet}return r+" "+A}function YAMLException(e,t){Error.call(this);this.name="YAMLException";this.reason=e;this.mark=t;this.message=formatError(this,false);if(Error.captureStackTrace){Error.captureStackTrace(this,this.constructor)}else{this.stack=(new Error).stack||""}}YAMLException.prototype=Object.create(Error.prototype);YAMLException.prototype.constructor=YAMLException;YAMLException.prototype.toString=function toString(e){return this.name+": "+formatError(this,e)};e.exports=YAMLException},1950:(e,t,A)=>{"use strict";const r=A(9816);const n=A(1248);const s=A(9440);const o=A(7336);const i=Object.prototype.hasOwnProperty;const a=1;const c=2;const l=3;const g=4;const u=1;const h=2;const E=3;const Q=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;const B=/[\x85\u2028\u2029]/;const C=/[,\[\]{}]/;const I=/^(?:!|!!|![0-9A-Za-z-]+!)$/;const d=/^(?:!|[^,\[\]{}])(?:%[0-9a-f]{2}|[0-9a-z\-#;/?:@&=+$,_.!~*'()\[\]])*$/i;function _class(e){return Object.prototype.toString.call(e)}function isEol(e){return e===10||e===13}function isWhiteSpace(e){return e===9||e===32}function isWsOrEol(e){return e===9||e===32||e===10||e===13}function isFlowIndicator(e){return e===44||e===91||e===93||e===123||e===125}function fromHexCode(e){if(e>=48&&e<=57){return e-48}const t=e|32;if(t>=97&&t<=102){return t-97+10}return-1}function escapedHexLen(e){if(e===120){return 2}if(e===117){return 4}if(e===85){return 8}return 0}function fromDecimalCode(e){if(e>=48&&e<=57){return e-48}return-1}function simpleEscapeSequence(e){switch(e){case 48:return"\0";case 97:return"";case 98:return"\b";case 116:return"\t";case 9:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 101:return"";case 32:return" ";case 34:return'"';case 47:return"/";case 92:return"\\";case 78:return"…";case 95:return" ";case 76:return"\u2028";case 80:return"\u2029";default:return""}}function charFromCodepoint(e){if(e<=65535){return String.fromCharCode(e)}return String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}function setProperty(e,t,A){if(t==="__proto__"){Object.defineProperty(e,t,{configurable:true,enumerable:true,writable:true,value:A})}else{e[t]=A}}const f=new Array(256);const p=new Array(256);for(let e=0;e<256;e++){f[e]=simpleEscapeSequence(e)?1:0;p[e]=simpleEscapeSequence(e)}function State(e,t){this.input=e;this.filename=t["filename"]||null;this.schema=t["schema"]||o;this.onWarning=t["onWarning"]||null;this.legacy=t["legacy"]||false;this.json=t["json"]||false;this.listener=t["listener"]||null;this.maxDepth=typeof t["maxDepth"]==="number"?t["maxDepth"]:100;this.maxTotalMergeKeys=typeof t["maxTotalMergeKeys"]==="number"?t["maxTotalMergeKeys"]:1e4;this.implicitTypes=this.schema.compiledImplicit;this.typeMap=this.schema.compiledTypeMap;this.length=e.length;this.position=0;this.line=0;this.lineStart=0;this.lineIndent=0;this.depth=0;this.totalMergeKeys=0;this.firstTabInLine=-1;this.documents=[];this.anchorMapTransactions=[]}function generateError(e,t){const A={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};A.snippet=s(A);return new n(t,A)}function throwError(e,t){throw generateError(e,t)}function throwWarning(e,t){if(e.onWarning){e.onWarning.call(null,generateError(e,t))}}function storeAnchor(e,t,A){const r=e.anchorMapTransactions;if(r.length!==0){const A=r[r.length-1];if(!i.call(A,t)){A[t]={existed:i.call(e.anchorMap,t),value:e.anchorMap[t]}}}e.anchorMap[t]=A}function beginAnchorTransaction(e){e.anchorMapTransactions.push(Object.create(null))}function commitAnchorTransaction(e){const t=e.anchorMapTransactions.pop();const A=e.anchorMapTransactions;if(A.length===0)return;const r=A[A.length-1];const n=Object.keys(t);for(let e=0,A=n.length;e=0;r-=1){const n=t[A[r]];if(n.existed){e.anchorMap[A[r]]=n.value}else{delete e.anchorMap[A[r]]}}}function snapshotState(e){return{position:e.position,line:e.line,lineStart:e.lineStart,lineIndent:e.lineIndent,firstTabInLine:e.firstTabInLine,tag:e.tag,anchor:e.anchor,kind:e.kind,result:e.result}}function restoreState(e,t){e.position=t.position;e.line=t.line;e.lineStart=t.lineStart;e.lineIndent=t.lineIndent;e.firstTabInLine=t.firstTabInLine;e.tag=t.tag;e.anchor=t.anchor;e.kind=t.kind;e.result=t.result}const y={YAML:function handleYamlDirective(e,t,A){if(e.version!==null){throwError(e,"duplication of %YAML directive")}if(A.length!==1){throwError(e,"YAML directive accepts exactly one argument")}const r=/^([0-9]+)\.([0-9]+)$/.exec(A[0]);if(r===null){throwError(e,"ill-formed argument of the YAML directive")}const n=parseInt(r[1],10);const s=parseInt(r[2],10);if(n!==1){throwError(e,"unacceptable YAML version of the document")}e.version=A[0];e.checkLineBreaks=s<2;if(s!==1&&s!==2){throwWarning(e,"unsupported YAML version of the document")}},TAG:function handleTagDirective(e,t,A){let r;if(A.length!==2){throwError(e,"TAG directive accepts exactly two arguments")}const n=A[0];r=A[1];if(!I.test(n)){throwError(e,"ill-formed tag handle (first argument) of the TAG directive")}if(i.call(e.tagMap,n)){throwError(e,'there is a previously declared suffix for "'+n+'" tag handle')}if(!d.test(r)){throwError(e,"ill-formed tag prefix (second argument) of the TAG directive")}try{r=decodeURIComponent(r)}catch(t){throwError(e,"tag prefix is malformed: "+r)}e.tagMap[n]=r}};function captureSegment(e,t,A,r){if(t=32&&A<=1114111)){throwError(e,"expected valid JSON character")}}}else if(Q.test(n)){throwError(e,"the stream contains non-printable characters")}e.result+=n}}function chargeMergeWork(e){e.totalMergeKeys++;if(e.maxTotalMergeKeys!==-1&&e.totalMergeKeys>e.maxTotalMergeKeys){throwError(e,"merge keys exceeded maxTotalMergeKeys ("+e.maxTotalMergeKeys+")")}}function mergeMappings(e,t,A,n){if(!r.isObject(A)){throwError(e,"cannot merge mappings; the provided source object is unacceptable")}chargeMergeWork(e);const s=Object.keys(A);for(let r=0,o=s.length;r100){throwError(e,"abnormal merge sequence size")}for(let r=0,n=s.length;r1){e.result+=r.repeat("\n",t-1)}}function readPlainScalar(e,t,A){let r;let n;let s;let o;let i;let a;const c=e.kind;const l=e.result;let g=e.input.charCodeAt(e.position);if(isWsOrEol(g)||isFlowIndicator(g)||g===35||g===38||g===42||g===33||g===124||g===62||g===39||g===34||g===37||g===64||g===96){return false}if(g===63||g===45){const t=e.input.charCodeAt(e.position+1);if(isWsOrEol(t)||A&&isFlowIndicator(t)){return false}}e.kind="scalar";e.result="";r=n=e.position;s=false;while(g!==0){if(g===58){const t=e.input.charCodeAt(e.position+1);if(isWsOrEol(t)||A&&isFlowIndicator(t)){break}}else if(g===35){const t=e.input.charCodeAt(e.position-1);if(isWsOrEol(t)){break}}else if(e.position===e.lineStart&&testDocumentSeparator(e)||A&&isFlowIndicator(g)){break}else if(isEol(g)){o=e.line;i=e.lineStart;a=e.lineIndent;skipSeparationSpace(e,false,-1);if(e.lineIndent>=t){s=true;g=e.input.charCodeAt(e.position);continue}else{e.position=n;e.line=o;e.lineStart=i;e.lineIndent=a;break}}if(s){captureSegment(e,r,n,false);writeFoldedLines(e,e.line-o);r=n=e.position;s=false}if(!isWhiteSpace(g)){n=e.position+1}g=e.input.charCodeAt(++e.position)}captureSegment(e,r,n,false);if(e.result){return true}e.kind=c;e.result=l;return false}function readSingleQuotedScalar(e,t){let A;let r;let n=e.input.charCodeAt(e.position);if(n!==39){return false}e.kind="scalar";e.result="";e.position++;A=r=e.position;while((n=e.input.charCodeAt(e.position))!==0){if(n===39){captureSegment(e,A,e.position,true);n=e.input.charCodeAt(++e.position);if(n===39){A=e.position;e.position++;r=e.position}else{return true}}else if(isEol(n)){captureSegment(e,A,r,true);writeFoldedLines(e,skipSeparationSpace(e,false,t));A=r=e.position}else if(e.position===e.lineStart&&testDocumentSeparator(e)){throwError(e,"unexpected end of the document within a single quoted scalar")}else{e.position++;if(!isWhiteSpace(n)){r=e.position}}}throwError(e,"unexpected end of the stream within a single quoted scalar")}function readDoubleQuotedScalar(e,t){let A;let r;let n;let s=e.input.charCodeAt(e.position);if(s!==34){return false}e.kind="scalar";e.result="";e.position++;A=r=e.position;while((s=e.input.charCodeAt(e.position))!==0){if(s===34){captureSegment(e,A,e.position,true);e.position++;return true}else if(s===92){captureSegment(e,A,e.position,true);s=e.input.charCodeAt(++e.position);if(isEol(s)){skipSeparationSpace(e,false,t)}else if(s<256&&f[s]){e.result+=p[s];e.position++}else if((n=escapedHexLen(s))>0){let t=n;let A=0;for(;t>0;t--){s=e.input.charCodeAt(++e.position);if((n=fromHexCode(s))>=0){A=(A<<4)+n}else{throwError(e,"expected hexadecimal character")}}e.result+=charFromCodepoint(A);e.position++}else{throwError(e,"unknown escape sequence")}A=r=e.position}else if(isEol(s)){captureSegment(e,A,r,true);writeFoldedLines(e,skipSeparationSpace(e,false,t));A=r=e.position}else if(e.position===e.lineStart&&testDocumentSeparator(e)){throwError(e,"unexpected end of the document within a double quoted scalar")}else{e.position++;if(!isWhiteSpace(s)){r=e.position}}}throwError(e,"unexpected end of the stream within a double quoted scalar")}function readFlowCollection(e,t){let A=true;let r;let n;let s;const o=e.tag;let i;const c=e.anchor;let l;let g;let u;let h;const E=Object.create(null);let Q;let B;let C;let I=e.input.charCodeAt(e.position);if(I===91){l=93;h=false;i=[]}else if(I===123){l=125;h=true;i={}}else{return false}if(e.anchor!==null){storeAnchor(e,e.anchor,i)}I=e.input.charCodeAt(++e.position);while(I!==0){skipSeparationSpace(e,true,t);I=e.input.charCodeAt(e.position);if(I===l){e.position++;e.tag=o;e.anchor=c;e.kind=h?"mapping":"sequence";e.result=i;return true}else if(!A){throwError(e,"missed comma between flow collection entries")}else if(I===44){throwError(e,"expected the node content, but found ','")}B=Q=C=null;g=u=false;if(I===63){const A=e.input.charCodeAt(e.position+1);if(isWsOrEol(A)){g=u=true;e.position++;skipSeparationSpace(e,true,t)}}r=e.line;n=e.lineStart;s=e.position;composeNode(e,t,a,false,true);B=e.tag;Q=e.result;skipSeparationSpace(e,true,t);I=e.input.charCodeAt(e.position);if((u||e.line===r)&&I===58){g=true;I=e.input.charCodeAt(++e.position);skipSeparationSpace(e,true,t);composeNode(e,t,a,false,true);C=e.result}if(h){storeMappingPair(e,i,E,B,Q,C,r,n,s)}else if(g){i.push(storeMappingPair(e,null,E,B,Q,C,r,n,s))}else{i.push(Q)}skipSeparationSpace(e,true,t);I=e.input.charCodeAt(e.position);if(I===44){A=true;I=e.input.charCodeAt(++e.position)}else{A=false}}throwError(e,"unexpected end of the stream within a flow collection")}function readBlockScalar(e,t){let A;let n=u;let s=false;let o=false;let i=t;let a=0;let c=false;let l;let g=e.input.charCodeAt(e.position);if(g===124){A=false}else if(g===62){A=true}else{return false}e.kind="scalar";e.result="";while(g!==0){g=e.input.charCodeAt(++e.position);if(g===43||g===45){if(u===n){n=g===43?E:h}else{throwError(e,"repeat of a chomping mode identifier")}}else if((l=fromDecimalCode(g))>=0){if(l===0){throwError(e,"bad explicit indentation width of a block scalar; it cannot be less than one")}else if(!o){i=t+l-1;o=true}else{throwError(e,"repeat of an indentation width identifier")}}else{break}}if(isWhiteSpace(g)){do{g=e.input.charCodeAt(++e.position)}while(isWhiteSpace(g));if(g===35){do{g=e.input.charCodeAt(++e.position)}while(!isEol(g)&&g!==0)}}while(g!==0){readLineBreak(e);e.lineIndent=0;g=e.input.charCodeAt(e.position);while((!o||e.lineIndenti){i=e.lineIndent}if(isEol(g)){a++;continue}if(!o&&i===0){throwError(e,"missing indentation for block scalar")}if(e.lineIndentt)&&o!==0){throwError(e,"bad indentation of a sequence entry")}else if(e.lineIndentt){if(B){n=e.line;s=e.lineStart;o=e.position}if(composeNode(e,t,g,true,r)){if(B){E=e.result}else{Q=e.result}}if(!B){storeMappingPair(e,l,u,h,E,Q,n,s,o);h=E=Q=null}skipSeparationSpace(e,true,-1);I=e.input.charCodeAt(e.position)}if((e.line===f||e.lineIndent>t)&&I!==0){throwError(e,"bad indentation of a mapping entry")}else if(e.lineIndent=e.maxDepth){throwError(e,"nesting exceeded maxDepth ("+e.maxDepth+")")}e.depth+=1;if(e.listener!==null){e.listener("open",e)}e.tag=null;e.anchor=null;e.kind=null;e.result=null;const d=s=o=g===A||l===A;if(r){if(skipSeparationSpace(e,true,-1)){h=true;if(e.lineIndent>t){u=1}else if(e.lineIndent===t){u=0}else if(e.lineIndentt){u=1}else if(e.lineIndent===t){u=0}else if(e.lineIndent tag; it should be "scalar", not "'+e.kind+'"')}for(let t=0,A=e.implicitTypes.length;t")}if(e.result!==null&&B.kind!==e.kind){throwError(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+B.kind+'", not "'+e.kind+'"')}if(!B.resolve(e.result,e.tag)){throwError(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}else{e.result=B.construct(e.result,e.tag);if(e.anchor!==null){storeAnchor(e,e.anchor,e.result)}}}if(e.listener!==null){e.listener("close",e)}e.depth-=1;return e.tag!==null||e.anchor!==null||E}function readDocument(e){const t=e.position;let A=false;let r;e.version=null;e.checkLineBreaks=e.legacy;e.tagMap=Object.create(null);e.anchorMap=Object.create(null);while((r=e.input.charCodeAt(e.position))!==0){skipSeparationSpace(e,true,-1);r=e.input.charCodeAt(e.position);if(e.lineIndent>0||r!==37){break}A=true;r=e.input.charCodeAt(++e.position);let t=e.position;while(r!==0&&!isWsOrEol(r)){r=e.input.charCodeAt(++e.position)}const n=e.input.slice(t,e.position);const s=[];if(n.length<1){throwError(e,"directive name must not be less than one character in length")}while(r!==0){while(isWhiteSpace(r)){r=e.input.charCodeAt(++e.position)}if(r===35){do{r=e.input.charCodeAt(++e.position)}while(r!==0&&!isEol(r));break}if(isEol(r))break;t=e.position;while(r!==0&&!isWsOrEol(r)){r=e.input.charCodeAt(++e.position)}s.push(e.input.slice(t,e.position))}if(r!==0)readLineBreak(e);if(i.call(y,n)){y[n](e,n,s)}else{throwWarning(e,'unknown document directive "'+n+'"')}}skipSeparationSpace(e,true,-1);if(e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45){e.position+=3;skipSeparationSpace(e,true,-1)}else if(A){throwError(e,"directives end mark is expected")}composeNode(e,e.lineIndent-1,g,false,true);skipSeparationSpace(e,true,-1);if(e.checkLineBreaks&&B.test(e.input.slice(t,e.position))){throwWarning(e,"non-ASCII line breaks are interpreted as content")}e.documents.push(e.result);if(e.position===e.lineStart&&testDocumentSeparator(e)){if(e.input.charCodeAt(e.position)===46){e.position+=3;skipSeparationSpace(e,true,-1)}return}if(e.position{"use strict";const r=A(1248);const n=A(9557);function compileList(e,t){const A=[];e[t].forEach((function(e){let t=A.length;A.forEach((function(A,r){if(A.tag===e.tag&&A.kind===e.kind&&A.multi===e.multi){t=r}}));A[t]=e}));return A}function compileMap(){const e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function collectType(t){if(t.multi){e.multi[t.kind].push(t);e.multi["fallback"].push(t)}else{e[t.kind][t.tag]=e["fallback"][t.tag]=t}}for(let e=0,t=arguments.length;e{"use strict";e.exports=A(8927)},7336:(e,t,A)=>{"use strict";e.exports=A(5746).extend({implicit:[A(8966),A(6854)],explicit:[A(8149),A(8649),A(6267),A(8758)]})},9832:(e,t,A)=>{"use strict";const r=A(2046);e.exports=new r({explicit:[A(3929),A(7161),A(7316)]})},8927:(e,t,A)=>{"use strict";e.exports=A(9832).extend({implicit:[A(4333),A(7296),A(2271),A(7584)]})},9440:(e,t,A)=>{"use strict";const r=A(9816);function getLine(e,t,A,r,n){let s="";let o="";const i=Math.floor(n/2)-1;if(r-t>i){s=" ... ";t=r-i+s.length}if(A-r>i){o=" ...";A=r+i-o.length}return{str:s+e.slice(t,A).replace(/\t/g,"→")+o,pos:r-t+s.length}}function padStart(e,t){return r.repeat(" ",t-e.length)+e}function makeSnippet(e,t){t=Object.create(t||null);if(!e.buffer)return null;if(!t.maxLength)t.maxLength=79;if(typeof t.indent!=="number")t.indent=1;if(typeof t.linesBefore!=="number")t.linesBefore=3;if(typeof t.linesAfter!=="number")t.linesAfter=2;const A=/\r?\n|\r|\0/g;const n=[0];const s=[];let o;let i=-1;while(o=A.exec(e.buffer)){s.push(o.index);n.push(o.index+o[0].length);if(e.position<=o.index&&i<0){i=n.length-2}}if(i<0)i=n.length-1;let a="";const c=Math.min(e.line+t.linesAfter,s.length).toString().length;const l=t.maxLength-(t.indent+c+3);for(let A=1;A<=t.linesBefore;A++){if(i-A<0)break;const o=getLine(e.buffer,n[i-A],s[i-A],e.position-(n[i]-n[i-A]),l);a=r.repeat(" ",t.indent)+padStart((e.line-A+1).toString(),c)+" | "+o.str+"\n"+a}const g=getLine(e.buffer,n[i],s[i],e.position,l);a+=r.repeat(" ",t.indent)+padStart((e.line+1).toString(),c)+" | "+g.str+"\n";a+=r.repeat("-",t.indent+c+3+g.pos)+"^"+"\n";for(let A=1;A<=t.linesAfter;A++){if(i+A>=s.length)break;const o=getLine(e.buffer,n[i+A],s[i+A],e.position-(n[i]-n[i+A]),l);a+=r.repeat(" ",t.indent)+padStart((e.line+A+1).toString(),c)+" | "+o.str+"\n"}return a.replace(/\n$/,"")}e.exports=makeSnippet},9557:(e,t,A)=>{"use strict";const r=A(1248);const n=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"];const s=["scalar","sequence","mapping"];function compileStyleAliases(e){const t={};if(e!==null){Object.keys(e).forEach((function(A){e[A].forEach((function(e){t[String(e)]=A}))}))}return t}function Type(e,t){t=t||{};Object.keys(t).forEach((function(t){if(n.indexOf(t)===-1){throw new r('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')}}));this.options=t;this.tag=e;this.kind=t["kind"]||null;this.resolve=t["resolve"]||function(){return true};this.construct=t["construct"]||function(e){return e};this.instanceOf=t["instanceOf"]||null;this.predicate=t["predicate"]||null;this.represent=t["represent"]||null;this.representName=t["representName"]||null;this.defaultStyle=t["defaultStyle"]||null;this.multi=t["multi"]||false;this.styleAliases=compileStyleAliases(t["styleAliases"]||null);if(s.indexOf(this.kind)===-1){throw new r('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}}e.exports=Type},8149:(e,t,A)=>{"use strict";const r=A(9557);const n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";function resolveYamlBinary(e){if(e===null)return false;let t=0;const A=e.length;const r=n;for(let n=0;n64)continue;if(A<0)return false;t+=6}return t%8===0}function constructYamlBinary(e){const t=e.replace(/[\r\n=]/g,"");const A=t.length;const r=n;let s=0;const o=[];for(let e=0;e>16&255);o.push(s>>8&255);o.push(s&255)}s=s<<6|r.indexOf(t.charAt(e))}const i=A%4*6;if(i===0){o.push(s>>16&255);o.push(s>>8&255);o.push(s&255)}else if(i===18){o.push(s>>10&255);o.push(s>>2&255)}else if(i===12){o.push(s>>4&255)}return new Uint8Array(o)}function representYamlBinary(e){let t="";let A=0;const r=e.length;const s=n;for(let n=0;n>18&63];t+=s[A>>12&63];t+=s[A>>6&63];t+=s[A&63]}A=(A<<8)+e[n]}const o=r%3;if(o===0){t+=s[A>>18&63];t+=s[A>>12&63];t+=s[A>>6&63];t+=s[A&63]}else if(o===2){t+=s[A>>10&63];t+=s[A>>4&63];t+=s[A<<2&63];t+=s[64]}else if(o===1){t+=s[A>>2&63];t+=s[A<<4&63];t+=s[64];t+=s[64]}return t}function isBinary(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}e.exports=new r("tag:yaml.org,2002:binary",{kind:"scalar",resolve:resolveYamlBinary,construct:constructYamlBinary,predicate:isBinary,represent:representYamlBinary})},7296:(e,t,A)=>{"use strict";const r=A(9557);function resolveYamlBoolean(e){if(e===null)return false;const t=e.length;return t===4&&(e==="true"||e==="True"||e==="TRUE")||t===5&&(e==="false"||e==="False"||e==="FALSE")}function constructYamlBoolean(e){return e==="true"||e==="True"||e==="TRUE"}function isBoolean(e){return Object.prototype.toString.call(e)==="[object Boolean]"}e.exports=new r("tag:yaml.org,2002:bool",{kind:"scalar",resolve:resolveYamlBoolean,construct:constructYamlBoolean,predicate:isBoolean,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},7584:(e,t,A)=>{"use strict";const r=A(9816);const n=A(9557);const s=new RegExp("^(?:[-+]?(?:[0-9]+)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?"+"|\\.[0-9]+(?:[eE][-+]?[0-9]+)?"+"|[-+]?\\.(?:inf|Inf|INF)"+"|\\.(?:nan|NaN|NAN))$");const o=new RegExp("^(?:"+"[-+]?\\.(?:inf|Inf|INF)"+"|\\.(?:nan|NaN|NAN))$");function resolveYamlFloat(e){if(e===null)return false;if(!s.test(e)){return false}if(isFinite(parseFloat(e,10))){return true}return o.test(e)}function constructYamlFloat(e){let t=e.toLowerCase();const A=t[0]==="-"?-1:1;if("+-".indexOf(t[0])>=0){t=t.slice(1)}if(t===".inf"){return A===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY}else if(t===".nan"){return NaN}return A*parseFloat(t,10)}const i=/^[-+]?[0-9]+e/;function representYamlFloat(e,t){if(isNaN(e)){switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}}else if(Number.POSITIVE_INFINITY===e){switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}}else if(Number.NEGATIVE_INFINITY===e){switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}}else if(r.isNegativeZero(e)){return"-0.0"}const A=e.toString(10);return i.test(A)?A.replace("e",".e"):A}function isFloat(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||r.isNegativeZero(e))}e.exports=new n("tag:yaml.org,2002:float",{kind:"scalar",resolve:resolveYamlFloat,construct:constructYamlFloat,predicate:isFloat,represent:representYamlFloat,defaultStyle:"lowercase"})},2271:(e,t,A)=>{"use strict";const r=A(9816);const n=A(9557);function isHexCode(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function isOctCode(e){return e>=48&&e<=55}function isDecCode(e){return e>=48&&e<=57}function resolveYamlInteger(e){if(e===null)return false;const t=e.length;let A=0;let r=false;if(!t)return false;let n=e[A];if(n==="-"||n==="+"){n=e[++A]}if(n==="0"){if(A+1===t)return true;n=e[++A];if(n==="b"){A++;for(;A=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},7316:(e,t,A)=>{"use strict";const r=A(9557);e.exports=new r("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}})},6854:(e,t,A)=>{"use strict";const r=A(9557);function resolveYamlMerge(e){return e==="<<"||e===null}e.exports=new r("tag:yaml.org,2002:merge",{kind:"scalar",resolve:resolveYamlMerge})},4333:(e,t,A)=>{"use strict";const r=A(9557);function resolveYamlNull(e){if(e===null)return true;const t=e.length;return t===1&&e==="~"||t===4&&(e==="null"||e==="Null"||e==="NULL")}function constructYamlNull(){return null}function isNull(e){return e===null}e.exports=new r("tag:yaml.org,2002:null",{kind:"scalar",resolve:resolveYamlNull,construct:constructYamlNull,predicate:isNull,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"})},8649:(e,t,A)=>{"use strict";const r=A(9557);const n=Object.prototype.hasOwnProperty;const s=Object.prototype.toString;function resolveYamlOmap(e){if(e===null)return true;const t={};const A=e;for(let e=0,r=A.length;e{"use strict";const r=A(9557);const n=Object.prototype.toString;function resolveYamlPairs(e){if(e===null)return true;const t=e;const A=new Array(t.length);for(let e=0,r=t.length;e{"use strict";const r=A(9557);e.exports=new r("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}})},8758:(e,t,A)=>{"use strict";const r=A(9557);const n=Object.prototype.hasOwnProperty;function resolveYamlSet(e){if(e===null)return true;const t=e;for(const e in t){if(n.call(t,e)){if(t[e]!==null)return false}}return true}function constructYamlSet(e){return e!==null?e:{}}e.exports=new r("tag:yaml.org,2002:set",{kind:"mapping",resolve:resolveYamlSet,construct:constructYamlSet})},3929:(e,t,A)=>{"use strict";const r=A(9557);e.exports=new r("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}})},8966:(e,t,A)=>{"use strict";const r=A(9557);const n=new RegExp("^([0-9][0-9][0-9][0-9])"+"-([0-9][0-9])"+"-([0-9][0-9])$");const s=new RegExp("^([0-9][0-9][0-9][0-9])"+"-([0-9][0-9]?)"+"-([0-9][0-9]?)"+"(?:[Tt]|[ \\t]+)"+"([0-9][0-9]?)"+":([0-9][0-9])"+":([0-9][0-9])"+"(?:\\.([0-9]*))?"+"(?:[ \\t]*(Z|([-+])([0-9][0-9]?)"+"(?::([0-9][0-9]))?))?$");function resolveYamlTimestamp(e){if(e===null)return false;if(n.exec(e)!==null)return true;if(s.exec(e)!==null)return true;return false}function constructYamlTimestamp(e){let t=0;let A=null;let r=n.exec(e);if(r===null)r=s.exec(e);if(r===null)throw new Error("Date resolve error");const o=+r[1];const i=+r[2]-1;const a=+r[3];if(!r[4]){return new Date(Date.UTC(o,i,a))}const c=+r[4];const l=+r[5];const g=+r[6];if(r[7]){t=r[7].slice(0,3);while(t.length<3){t+="0"}t=+t}if(r[9]){const e=+r[10];const t=+(r[11]||0);A=(e*60+t)*6e4;if(r[9]==="-")A=-A}const u=new Date(Date.UTC(o,i,a,c,l,g,t));if(A)u.setTime(u.getTime()-A);return u}function representYamlTimestamp(e){return e.toISOString()}e.exports=new r("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:resolveYamlTimestamp,construct:constructYamlTimestamp,instanceOf:Date,represent:representYamlTimestamp})},770:(e,t,A)=>{e.exports=A(218)},218:(e,t,A)=>{"use strict";var r=A(9278);var n=A(4756);var s=A(8611);var o=A(5692);var i=A(4434);var a=A(2613);var c=A(9023);t.httpOverHttp=httpOverHttp;t.httpsOverHttp=httpsOverHttp;t.httpOverHttps=httpOverHttps;t.httpsOverHttps=httpsOverHttps;function httpOverHttp(e){var t=new TunnelingAgent(e);t.request=s.request;return t}function httpsOverHttp(e){var t=new TunnelingAgent(e);t.request=s.request;t.createSocket=createSecureSocket;t.defaultPort=443;return t}function httpOverHttps(e){var t=new TunnelingAgent(e);t.request=o.request;return t}function httpsOverHttps(e){var t=new TunnelingAgent(e);t.request=o.request;t.createSocket=createSecureSocket;t.defaultPort=443;return t}function TunnelingAgent(e){var t=this;t.options=e||{};t.proxyOptions=t.options.proxy||{};t.maxSockets=t.options.maxSockets||s.Agent.defaultMaxSockets;t.requests=[];t.sockets=[];t.on("free",(function onFree(e,A,r,n){var s=toOptions(A,r,n);for(var o=0,i=t.requests.length;o=this.maxSockets){n.requests.push(s);return}n.createSocket(s,(function(t){t.on("free",onFree);t.on("close",onCloseOrRemove);t.on("agentRemove",onCloseOrRemove);e.onSocket(t);function onFree(){n.emit("free",t,s)}function onCloseOrRemove(e){n.removeSocket(t);t.removeListener("free",onFree);t.removeListener("close",onCloseOrRemove);t.removeListener("agentRemove",onCloseOrRemove)}}))};TunnelingAgent.prototype.createSocket=function createSocket(e,t){var A=this;var r={};A.sockets.push(r);var n=mergeOptions({},A.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:false,headers:{host:e.host+":"+e.port}});if(e.localAddress){n.localAddress=e.localAddress}if(n.proxyAuth){n.headers=n.headers||{};n.headers["Proxy-Authorization"]="Basic "+new Buffer(n.proxyAuth).toString("base64")}l("making CONNECT request");var s=A.request(n);s.useChunkedEncodingByDefault=false;s.once("response",onResponse);s.once("upgrade",onUpgrade);s.once("connect",onConnect);s.once("error",onError);s.end();function onResponse(e){e.upgrade=true}function onUpgrade(e,t,A){process.nextTick((function(){onConnect(e,t,A)}))}function onConnect(n,o,i){s.removeAllListeners();o.removeAllListeners();if(n.statusCode!==200){l("tunneling socket could not be established, statusCode=%d",n.statusCode);o.destroy();var a=new Error("tunneling socket could not be established, "+"statusCode="+n.statusCode);a.code="ECONNRESET";e.request.emit("error",a);A.removeSocket(r);return}if(i.length>0){l("got illegal response body from proxy");o.destroy();var a=new Error("got illegal response body from proxy");a.code="ECONNRESET";e.request.emit("error",a);A.removeSocket(r);return}l("tunneling connection has established");A.sockets[A.sockets.indexOf(r)]=o;return t(o)}function onError(t){s.removeAllListeners();l("tunneling socket could not be established, cause=%s\n",t.message,t.stack);var n=new Error("tunneling socket could not be established, "+"cause="+t.message);n.code="ECONNRESET";e.request.emit("error",n);A.removeSocket(r)}};TunnelingAgent.prototype.removeSocket=function removeSocket(e){var t=this.sockets.indexOf(e);if(t===-1){return}this.sockets.splice(t,1);var A=this.requests.shift();if(A){this.createSocket(A,(function(e){A.request.onSocket(e)}))}};function createSecureSocket(e,t){var A=this;TunnelingAgent.prototype.createSocket.call(A,e,(function(r){var s=e.request.getHeader("host");var o=mergeOptions({},A.options,{socket:r,servername:s?s.replace(/:.*$/,""):e.host});var i=n.connect(0,o);A.sockets[A.sockets.indexOf(r)]=i;t(i)}))}function toOptions(e,t,A){if(typeof e==="string"){return{host:e,port:t,localAddress:A}}return e}function mergeOptions(e){for(var t=1,A=arguments.length;t{"use strict";const r=A(3701);const n=A(883);const s=A(628);const o=A(837);const i=A(7405);const a=A(6672);const c=A(3137);const l=A(50);const g=A(8707);const u=A(3440);const{InvalidArgumentError:h}=g;const E=A(6615);const Q=A(9136);const B=A(7365);const C=A(7501);const I=A(4004);const d=A(2429);const f=A(7816);const{getGlobalDispatcher:p,setGlobalDispatcher:y}=A(2581);const w=A(8155);const m=A(8754);const D=A(5092);Object.assign(n.prototype,E);e.exports.Dispatcher=n;e.exports.Client=r;e.exports.Pool=s;e.exports.BalancedPool=o;e.exports.Agent=i;e.exports.ProxyAgent=a;e.exports.EnvHttpProxyAgent=c;e.exports.RetryAgent=l;e.exports.RetryHandler=f;e.exports.DecoratorHandler=w;e.exports.RedirectHandler=m;e.exports.createRedirectInterceptor=D;e.exports.interceptors={redirect:A(1514),retry:A(2026),dump:A(8060),dns:A(379)};e.exports.buildConnector=Q;e.exports.errors=g;e.exports.util={parseHeaders:u.parseHeaders,headerNameToString:u.headerNameToString};function makeDispatcher(e){return(t,A,r)=>{if(typeof A==="function"){r=A;A=null}if(!t||typeof t!=="string"&&typeof t!=="object"&&!(t instanceof URL)){throw new h("invalid url")}if(A!=null&&typeof A!=="object"){throw new h("invalid opts")}if(A&&A.path!=null){if(typeof A.path!=="string"){throw new h("invalid opts.path")}let e=A.path;if(!A.path.startsWith("/")){e=`/${e}`}t=new URL(u.parseOrigin(t).origin+e)}else{if(!A){A=typeof t==="object"?t:{}}t=u.parseURL(t)}const{agent:n,dispatcher:s=p()}=A;if(n){throw new h("unsupported opts.agent. Did you mean opts.client?")}return e.call(s,{...A,origin:t.origin,path:t.search?`${t.pathname}${t.search}`:t.pathname,method:A.method||(A.body?"PUT":"GET")},r)}}e.exports.setGlobalDispatcher=y;e.exports.getGlobalDispatcher=p;const k=A(4398).fetch;e.exports.fetch=async function fetch(e,t=undefined){try{return await k(e,t)}catch(e){if(e&&typeof e==="object"){Error.captureStackTrace(e)}throw e}};e.exports.Headers=A(660).Headers;e.exports.Response=A(9051).Response;e.exports.Request=A(9967).Request;e.exports.FormData=A(5910).FormData;e.exports.File=globalThis.File??A(4573).File;e.exports.FileReader=A(8355).FileReader;const{setGlobalOrigin:b,getGlobalOrigin:R}=A(1059);e.exports.setGlobalOrigin=b;e.exports.getGlobalOrigin=R;const{CacheStorage:S}=A(3245);const{kConstruct:F}=A(109);e.exports.caches=new S(F);const{deleteCookie:N,getCookies:M,getSetCookies:U,setCookie:L}=A(9061);e.exports.deleteCookie=N;e.exports.getCookies=M;e.exports.getSetCookies=U;e.exports.setCookie=L;const{parseMIMEType:T,serializeAMimeType:v}=A(1900);e.exports.parseMIMEType=T;e.exports.serializeAMimeType=v;const{CloseEvent:Y,ErrorEvent:H,MessageEvent:x}=A(5188);e.exports.WebSocket=A(3726).WebSocket;e.exports.CloseEvent=Y;e.exports.ErrorEvent=H;e.exports.MessageEvent=x;e.exports.request=makeDispatcher(E.request);e.exports.stream=makeDispatcher(E.stream);e.exports.pipeline=makeDispatcher(E.pipeline);e.exports.connect=makeDispatcher(E.connect);e.exports.upgrade=makeDispatcher(E.upgrade);e.exports.MockClient=B;e.exports.MockPool=I;e.exports.MockAgent=C;e.exports.mockErrors=d;const{EventSource:G}=A(1238);e.exports.EventSource=G},158:(e,t,A)=>{const{addAbortListener:r}=A(3440);const{RequestAbortedError:n}=A(8707);const s=Symbol("kListener");const o=Symbol("kSignal");function abort(e){if(e.abort){e.abort(e[o]?.reason)}else{e.reason=e[o]?.reason??new n}removeSignal(e)}function addSignal(e,t){e.reason=null;e[o]=null;e[s]=null;if(!t){return}if(t.aborted){abort(e);return}e[o]=t;e[s]=()=>{abort(e)};r(e[o],e[s])}function removeSignal(e){if(!e[o]){return}if("removeEventListener"in e[o]){e[o].removeEventListener("abort",e[s])}else{e[o].removeListener("abort",e[s])}e[o]=null;e[s]=null}e.exports={addSignal:addSignal,removeSignal:removeSignal}},2279:(e,t,A)=>{"use strict";const r=A(4589);const{AsyncResource:n}=A(6698);const{InvalidArgumentError:s,SocketError:o}=A(8707);const i=A(3440);const{addSignal:a,removeSignal:c}=A(158);class ConnectHandler extends n{constructor(e,t){if(!e||typeof e!=="object"){throw new s("invalid opts")}if(typeof t!=="function"){throw new s("invalid callback")}const{signal:A,opaque:r,responseHeaders:n}=e;if(A&&typeof A.on!=="function"&&typeof A.addEventListener!=="function"){throw new s("signal must be an EventEmitter or EventTarget")}super("UNDICI_CONNECT");this.opaque=r||null;this.responseHeaders=n||null;this.callback=t;this.abort=null;a(this,A)}onConnect(e,t){if(this.reason){e(this.reason);return}r(this.callback);this.abort=e;this.context=t}onHeaders(){throw new o("bad connect",null)}onUpgrade(e,t,A){const{callback:r,opaque:n,context:s}=this;c(this);this.callback=null;let o=t;if(o!=null){o=this.responseHeaders==="raw"?i.parseRawHeaders(t):i.parseHeaders(t)}this.runInAsyncScope(r,null,null,{statusCode:e,headers:o,socket:A,opaque:n,context:s})}onError(e){const{callback:t,opaque:A}=this;c(this);if(t){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(t,null,e,{opaque:A})}))}}}function connect(e,t){if(t===undefined){return new Promise(((t,A)=>{connect.call(this,e,((e,r)=>e?A(e):t(r)))}))}try{const A=new ConnectHandler(e,t);this.dispatch({...e,method:"CONNECT"},A)}catch(A){if(typeof t!=="function"){throw A}const r=e?.opaque;queueMicrotask((()=>t(A,{opaque:r})))}}e.exports=connect},6862:(e,t,A)=>{"use strict";const{Readable:r,Duplex:n,PassThrough:s}=A(7075);const{InvalidArgumentError:o,InvalidReturnValueError:i,RequestAbortedError:a}=A(8707);const c=A(3440);const{AsyncResource:l}=A(6698);const{addSignal:g,removeSignal:u}=A(158);const h=A(4589);const E=Symbol("resume");class PipelineRequest extends r{constructor(){super({autoDestroy:true});this[E]=null}_read(){const{[E]:e}=this;if(e){this[E]=null;e()}}_destroy(e,t){this._read();t(e)}}class PipelineResponse extends r{constructor(e){super({autoDestroy:true});this[E]=e}_read(){this[E]()}_destroy(e,t){if(!e&&!this._readableState.endEmitted){e=new a}t(e)}}class PipelineHandler extends l{constructor(e,t){if(!e||typeof e!=="object"){throw new o("invalid opts")}if(typeof t!=="function"){throw new o("invalid handler")}const{signal:A,method:r,opaque:s,onInfo:i,responseHeaders:l}=e;if(A&&typeof A.on!=="function"&&typeof A.addEventListener!=="function"){throw new o("signal must be an EventEmitter or EventTarget")}if(r==="CONNECT"){throw new o("invalid method")}if(i&&typeof i!=="function"){throw new o("invalid onInfo callback")}super("UNDICI_PIPELINE");this.opaque=s||null;this.responseHeaders=l||null;this.handler=t;this.abort=null;this.context=null;this.onInfo=i||null;this.req=(new PipelineRequest).on("error",c.nop);this.ret=new n({readableObjectMode:e.objectMode,autoDestroy:true,read:()=>{const{body:e}=this;if(e?.resume){e.resume()}},write:(e,t,A)=>{const{req:r}=this;if(r.push(e,t)||r._readableState.destroyed){A()}else{r[E]=A}},destroy:(e,t)=>{const{body:A,req:r,res:n,ret:s,abort:o}=this;if(!e&&!s._readableState.endEmitted){e=new a}if(o&&e){o()}c.destroy(A,e);c.destroy(r,e);c.destroy(n,e);u(this);t(e)}}).on("prefinish",(()=>{const{req:e}=this;e.push(null)}));this.res=null;g(this,A)}onConnect(e,t){const{ret:A,res:r}=this;if(this.reason){e(this.reason);return}h(!r,"pipeline cannot be retried");h(!A.destroyed);this.abort=e;this.context=t}onHeaders(e,t,A){const{opaque:r,handler:n,context:s}=this;if(e<200){if(this.onInfo){const A=this.responseHeaders==="raw"?c.parseRawHeaders(t):c.parseHeaders(t);this.onInfo({statusCode:e,headers:A})}return}this.res=new PipelineResponse(A);let o;try{this.handler=null;const A=this.responseHeaders==="raw"?c.parseRawHeaders(t):c.parseHeaders(t);o=this.runInAsyncScope(n,null,{statusCode:e,headers:A,opaque:r,body:this.res,context:s})}catch(e){this.res.on("error",c.nop);throw e}if(!o||typeof o.on!=="function"){throw new i("expected Readable")}o.on("data",(e=>{const{ret:t,body:A}=this;if(!t.push(e)&&A.pause){A.pause()}})).on("error",(e=>{const{ret:t}=this;c.destroy(t,e)})).on("end",(()=>{const{ret:e}=this;e.push(null)})).on("close",(()=>{const{ret:e}=this;if(!e._readableState.ended){c.destroy(e,new a)}}));this.body=o}onData(e){const{res:t}=this;return t.push(e)}onComplete(e){const{res:t}=this;t.push(null)}onError(e){const{ret:t}=this;this.handler=null;c.destroy(t,e)}}function pipeline(e,t){try{const A=new PipelineHandler(e,t);this.dispatch({...e,body:A.req},A);return A.ret}catch(e){return(new s).destroy(e)}}e.exports=pipeline},4043:(e,t,A)=>{"use strict";const r=A(4589);const{Readable:n}=A(9927);const{InvalidArgumentError:s,RequestAbortedError:o}=A(8707);const i=A(3440);const{getResolveErrorBodyCallback:a}=A(7655);const{AsyncResource:c}=A(6698);class RequestHandler extends c{constructor(e,t){if(!e||typeof e!=="object"){throw new s("invalid opts")}const{signal:A,method:r,opaque:n,body:a,onInfo:c,responseHeaders:l,throwOnError:g,highWaterMark:u}=e;try{if(typeof t!=="function"){throw new s("invalid callback")}if(u&&(typeof u!=="number"||u<0)){throw new s("invalid highWaterMark")}if(A&&typeof A.on!=="function"&&typeof A.addEventListener!=="function"){throw new s("signal must be an EventEmitter or EventTarget")}if(r==="CONNECT"){throw new s("invalid method")}if(c&&typeof c!=="function"){throw new s("invalid onInfo callback")}super("UNDICI_REQUEST")}catch(e){if(i.isStream(a)){i.destroy(a.on("error",i.nop),e)}throw e}this.method=r;this.responseHeaders=l||null;this.opaque=n||null;this.callback=t;this.res=null;this.abort=null;this.body=a;this.trailers={};this.context=null;this.onInfo=c||null;this.throwOnError=g;this.highWaterMark=u;this.signal=A;this.reason=null;this.removeAbortListener=null;if(i.isStream(a)){a.on("error",(e=>{this.onError(e)}))}if(this.signal){if(this.signal.aborted){this.reason=this.signal.reason??new o}else{this.removeAbortListener=i.addAbortListener(this.signal,(()=>{this.reason=this.signal.reason??new o;if(this.res){i.destroy(this.res.on("error",i.nop),this.reason)}else if(this.abort){this.abort(this.reason)}if(this.removeAbortListener){this.res?.off("close",this.removeAbortListener);this.removeAbortListener();this.removeAbortListener=null}}))}}}onConnect(e,t){if(this.reason){e(this.reason);return}r(this.callback);this.abort=e;this.context=t}onHeaders(e,t,A,r){const{callback:s,opaque:o,abort:c,context:l,responseHeaders:g,highWaterMark:u}=this;const h=g==="raw"?i.parseRawHeaders(t):i.parseHeaders(t);if(e<200){if(this.onInfo){this.onInfo({statusCode:e,headers:h})}return}const E=g==="raw"?i.parseHeaders(t):h;const Q=E["content-type"];const B=E["content-length"];const C=new n({resume:A,abort:c,contentType:Q,contentLength:this.method!=="HEAD"&&B?Number(B):null,highWaterMark:u});if(this.removeAbortListener){C.on("close",this.removeAbortListener)}this.callback=null;this.res=C;if(s!==null){if(this.throwOnError&&e>=400){this.runInAsyncScope(a,null,{callback:s,body:C,contentType:Q,statusCode:e,statusMessage:r,headers:h})}else{this.runInAsyncScope(s,null,null,{statusCode:e,headers:h,trailers:this.trailers,opaque:o,body:C,context:l})}}}onData(e){return this.res.push(e)}onComplete(e){i.parseHeaders(e,this.trailers);this.res.push(null)}onError(e){const{res:t,callback:A,body:r,opaque:n}=this;if(A){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(A,null,e,{opaque:n})}))}if(t){this.res=null;queueMicrotask((()=>{i.destroy(t,e)}))}if(r){this.body=null;i.destroy(r,e)}if(this.removeAbortListener){t?.off("close",this.removeAbortListener);this.removeAbortListener();this.removeAbortListener=null}}}function request(e,t){if(t===undefined){return new Promise(((t,A)=>{request.call(this,e,((e,r)=>e?A(e):t(r)))}))}try{this.dispatch(e,new RequestHandler(e,t))}catch(A){if(typeof t!=="function"){throw A}const r=e?.opaque;queueMicrotask((()=>t(A,{opaque:r})))}}e.exports=request;e.exports.RequestHandler=RequestHandler},3560:(e,t,A)=>{"use strict";const r=A(4589);const{finished:n,PassThrough:s}=A(7075);const{InvalidArgumentError:o,InvalidReturnValueError:i}=A(8707);const a=A(3440);const{getResolveErrorBodyCallback:c}=A(7655);const{AsyncResource:l}=A(6698);const{addSignal:g,removeSignal:u}=A(158);class StreamHandler extends l{constructor(e,t,A){if(!e||typeof e!=="object"){throw new o("invalid opts")}const{signal:r,method:n,opaque:s,body:i,onInfo:c,responseHeaders:l,throwOnError:u}=e;try{if(typeof A!=="function"){throw new o("invalid callback")}if(typeof t!=="function"){throw new o("invalid factory")}if(r&&typeof r.on!=="function"&&typeof r.addEventListener!=="function"){throw new o("signal must be an EventEmitter or EventTarget")}if(n==="CONNECT"){throw new o("invalid method")}if(c&&typeof c!=="function"){throw new o("invalid onInfo callback")}super("UNDICI_STREAM")}catch(e){if(a.isStream(i)){a.destroy(i.on("error",a.nop),e)}throw e}this.responseHeaders=l||null;this.opaque=s||null;this.factory=t;this.callback=A;this.res=null;this.abort=null;this.context=null;this.trailers=null;this.body=i;this.onInfo=c||null;this.throwOnError=u||false;if(a.isStream(i)){i.on("error",(e=>{this.onError(e)}))}g(this,r)}onConnect(e,t){if(this.reason){e(this.reason);return}r(this.callback);this.abort=e;this.context=t}onHeaders(e,t,A,r){const{factory:o,opaque:l,context:g,callback:u,responseHeaders:h}=this;const E=h==="raw"?a.parseRawHeaders(t):a.parseHeaders(t);if(e<200){if(this.onInfo){this.onInfo({statusCode:e,headers:E})}return}this.factory=null;let Q;if(this.throwOnError&&e>=400){const A=h==="raw"?a.parseHeaders(t):E;const n=A["content-type"];Q=new s;this.callback=null;this.runInAsyncScope(c,null,{callback:u,body:Q,contentType:n,statusCode:e,statusMessage:r,headers:E})}else{if(o===null){return}Q=this.runInAsyncScope(o,null,{statusCode:e,headers:E,opaque:l,context:g});if(!Q||typeof Q.write!=="function"||typeof Q.end!=="function"||typeof Q.on!=="function"){throw new i("expected Writable")}n(Q,{readable:false},(e=>{const{callback:t,res:A,opaque:r,trailers:n,abort:s}=this;this.res=null;if(e||!A.readable){a.destroy(A,e)}this.callback=null;this.runInAsyncScope(t,null,e||null,{opaque:r,trailers:n});if(e){s()}}))}Q.on("drain",A);this.res=Q;const B=Q.writableNeedDrain!==undefined?Q.writableNeedDrain:Q._writableState?.needDrain;return B!==true}onData(e){const{res:t}=this;return t?t.write(e):true}onComplete(e){const{res:t}=this;u(this);if(!t){return}this.trailers=a.parseHeaders(e);t.end()}onError(e){const{res:t,callback:A,opaque:r,body:n}=this;u(this);this.factory=null;if(t){this.res=null;a.destroy(t,e)}else if(A){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(A,null,e,{opaque:r})}))}if(n){this.body=null;a.destroy(n,e)}}}function stream(e,t,A){if(A===undefined){return new Promise(((A,r)=>{stream.call(this,e,t,((e,t)=>e?r(e):A(t)))}))}try{this.dispatch(e,new StreamHandler(e,t,A))}catch(t){if(typeof A!=="function"){throw t}const r=e?.opaque;queueMicrotask((()=>A(t,{opaque:r})))}}e.exports=stream},1882:(e,t,A)=>{"use strict";const{InvalidArgumentError:r,SocketError:n}=A(8707);const{AsyncResource:s}=A(6698);const o=A(3440);const{addSignal:i,removeSignal:a}=A(158);const c=A(4589);class UpgradeHandler extends s{constructor(e,t){if(!e||typeof e!=="object"){throw new r("invalid opts")}if(typeof t!=="function"){throw new r("invalid callback")}const{signal:A,opaque:n,responseHeaders:s}=e;if(A&&typeof A.on!=="function"&&typeof A.addEventListener!=="function"){throw new r("signal must be an EventEmitter or EventTarget")}super("UNDICI_UPGRADE");this.responseHeaders=s||null;this.opaque=n||null;this.callback=t;this.abort=null;this.context=null;i(this,A)}onConnect(e,t){if(this.reason){e(this.reason);return}c(this.callback);this.abort=e;this.context=null}onHeaders(){throw new n("bad upgrade",null)}onUpgrade(e,t,A){c(e===101);const{callback:r,opaque:n,context:s}=this;a(this);this.callback=null;const i=this.responseHeaders==="raw"?o.parseRawHeaders(t):o.parseHeaders(t);this.runInAsyncScope(r,null,null,{headers:i,socket:A,opaque:n,context:s})}onError(e){const{callback:t,opaque:A}=this;a(this);if(t){this.callback=null;queueMicrotask((()=>{this.runInAsyncScope(t,null,e,{opaque:A})}))}}}function upgrade(e,t){if(t===undefined){return new Promise(((t,A)=>{upgrade.call(this,e,((e,r)=>e?A(e):t(r)))}))}try{const A=new UpgradeHandler(e,t);this.dispatch({...e,method:e.method||"GET",upgrade:e.protocol||"Websocket"},A)}catch(A){if(typeof t!=="function"){throw A}const r=e?.opaque;queueMicrotask((()=>t(A,{opaque:r})))}}e.exports=upgrade},6615:(e,t,A)=>{"use strict";e.exports.request=A(4043);e.exports.stream=A(3560);e.exports.pipeline=A(6862);e.exports.upgrade=A(1882);e.exports.connect=A(2279)},9927:(e,t,A)=>{"use strict";const r=A(4589);const{Readable:n}=A(7075);const{RequestAbortedError:s,NotSupportedError:o,InvalidArgumentError:i,AbortError:a}=A(8707);const c=A(3440);const{ReadableStreamFrom:l}=A(3440);const g=Symbol("kConsume");const u=Symbol("kReading");const h=Symbol("kBody");const E=Symbol("kAbort");const Q=Symbol("kContentType");const B=Symbol("kContentLength");const noop=()=>{};class BodyReadable extends n{constructor({resume:e,abort:t,contentType:A="",contentLength:r,highWaterMark:n=64*1024}){super({autoDestroy:true,read:e,highWaterMark:n});this._readableState.dataEmitted=false;this[E]=t;this[g]=null;this[h]=null;this[Q]=A;this[B]=r;this[u]=false}destroy(e){if(!e&&!this._readableState.endEmitted){e=new s}if(e){this[E]()}return super.destroy(e)}_destroy(e,t){if(!this[u]){setImmediate((()=>{t(e)}))}else{t(e)}}on(e,...t){if(e==="data"||e==="readable"){this[u]=true}return super.on(e,...t)}addListener(e,...t){return this.on(e,...t)}off(e,...t){const A=super.off(e,...t);if(e==="data"||e==="readable"){this[u]=this.listenerCount("data")>0||this.listenerCount("readable")>0}return A}removeListener(e,...t){return this.off(e,...t)}push(e){if(this[g]&&e!==null){consumePush(this[g],e);return this[u]?super.push(e):true}return super.push(e)}async text(){return consume(this,"text")}async json(){return consume(this,"json")}async blob(){return consume(this,"blob")}async bytes(){return consume(this,"bytes")}async arrayBuffer(){return consume(this,"arrayBuffer")}async formData(){throw new o}get bodyUsed(){return c.isDisturbed(this)}get body(){if(!this[h]){this[h]=l(this);if(this[g]){this[h].getReader();r(this[h].locked)}}return this[h]}async dump(e){let t=Number.isFinite(e?.limit)?e.limit:128*1024;const A=e?.signal;if(A!=null&&(typeof A!=="object"||!("aborted"in A))){throw new i("signal must be an AbortSignal")}A?.throwIfAborted();if(this._readableState.closeEmitted){return null}return await new Promise(((e,r)=>{if(this[B]>t){this.destroy(new a)}const onAbort=()=>{this.destroy(A.reason??new a)};A?.addEventListener("abort",onAbort);this.on("close",(function(){A?.removeEventListener("abort",onAbort);if(A?.aborted){r(A.reason??new a)}else{e(null)}})).on("error",noop).on("data",(function(e){t-=e.length;if(t<=0){this.destroy()}})).resume()}))}}function isLocked(e){return e[h]&&e[h].locked===true||e[g]}function isUnusable(e){return c.isDisturbed(e)||isLocked(e)}async function consume(e,t){r(!e[g]);return new Promise(((A,r)=>{if(isUnusable(e)){const t=e._readableState;if(t.destroyed&&t.closeEmitted===false){e.on("error",(e=>{r(e)})).on("close",(()=>{r(new TypeError("unusable"))}))}else{r(t.errored??new TypeError("unusable"))}}else{queueMicrotask((()=>{e[g]={type:t,stream:e,resolve:A,reject:r,length:0,body:[]};e.on("error",(function(e){consumeFinish(this[g],e)})).on("close",(function(){if(this[g].body!==null){consumeFinish(this[g],new s)}}));consumeStart(e[g])}))}}))}function consumeStart(e){if(e.body===null){return}const{_readableState:t}=e.stream;if(t.bufferIndex){const A=t.bufferIndex;const r=t.buffer.length;for(let n=A;n2&&A[0]===239&&A[1]===187&&A[2]===191?3:0;return A.utf8Slice(n,r)}function chunksConcat(e,t){if(e.length===0||t===0){return new Uint8Array(0)}if(e.length===1){return new Uint8Array(e[0])}const A=new Uint8Array(Buffer.allocUnsafeSlow(t).buffer);let r=0;for(let t=0;t{const r=A(4589);const{ResponseStatusCodeError:n}=A(8707);const{chunksDecode:s}=A(9927);const o=128*1024;async function getResolveErrorBodyCallback({callback:e,body:t,contentType:A,statusCode:i,statusMessage:a,headers:c}){r(t);let l=[];let g=0;try{for await(const e of t){l.push(e);g+=e.length;if(g>o){l=[];g=0;break}}}catch{l=[];g=0}const u=`Response status code ${i}${a?`: ${a}`:""}`;if(i===204||!A||!g){queueMicrotask((()=>e(new n(u,i,c))));return}const h=Error.stackTraceLimit;Error.stackTraceLimit=0;let E;try{if(isContentTypeApplicationJson(A)){E=JSON.parse(s(l,g))}else if(isContentTypeText(A)){E=s(l,g)}}catch{}finally{Error.stackTraceLimit=h}queueMicrotask((()=>e(new n(u,i,c,E))))}const isContentTypeApplicationJson=e=>e.length>15&&e[11]==="/"&&e[0]==="a"&&e[1]==="p"&&e[2]==="p"&&e[3]==="l"&&e[4]==="i"&&e[5]==="c"&&e[6]==="a"&&e[7]==="t"&&e[8]==="i"&&e[9]==="o"&&e[10]==="n"&&e[12]==="j"&&e[13]==="s"&&e[14]==="o"&&e[15]==="n";const isContentTypeText=e=>e.length>4&&e[4]==="/"&&e[0]==="t"&&e[1]==="e"&&e[2]==="x"&&e[3]==="t";e.exports={getResolveErrorBodyCallback:getResolveErrorBodyCallback,isContentTypeApplicationJson:isContentTypeApplicationJson,isContentTypeText:isContentTypeText}},9136:(e,t,A)=>{"use strict";const r=A(7030);const n=A(4589);const s=A(3440);const{InvalidArgumentError:o,ConnectTimeoutError:i}=A(8707);const a=A(6603);function noop(){}let c;let l;if(global.FinalizationRegistry&&!(process.env.NODE_V8_COVERAGE||process.env.UNDICI_NO_FG)){l=class WeakSessionCache{constructor(e){this._maxCachedSessions=e;this._sessionCache=new Map;this._sessionRegistry=new global.FinalizationRegistry((e=>{if(this._sessionCache.size=this._maxCachedSessions){const{value:e}=this._sessionCache.keys().next();this._sessionCache.delete(e)}this._sessionCache.set(e,t)}}}function buildConnector({allowH2:e,maxCachedSessions:t,socketPath:i,timeout:a,session:u,...h}){if(t!=null&&(!Number.isInteger(t)||t<0)){throw new o("maxCachedSessions must be a positive integer or zero")}const E={path:i,...h};const Q=new l(t==null?100:t);a=a==null?1e4:a;e=e!=null?e:false;return function connect({hostname:t,host:o,protocol:i,port:l,servername:h,localAddress:B,httpSocket:C},I){let d;if(i==="https:"){if(!c){c=A(1692)}h=h||E.servername||s.getServerName(o)||null;const r=h||t;n(r);const i=u||Q.get(r)||null;l=l||443;d=c.connect({highWaterMark:16384,...E,servername:h,session:i,localAddress:B,ALPNProtocols:e?["http/1.1","h2"]:["http/1.1"],socket:C,port:l,host:t});d.on("session",(function(e){Q.set(r,e)}))}else{n(!C,"httpSocket can only be sent on TLS update");l=l||80;d=r.connect({highWaterMark:64*1024,...E,localAddress:B,port:l,host:t})}if(E.keepAlive==null||E.keepAlive){const e=E.keepAliveInitialDelay===undefined?6e4:E.keepAliveInitialDelay;d.setKeepAlive(true,e)}const f=g(new WeakRef(d),{timeout:a,hostname:t,port:l});d.setNoDelay(true).once(i==="https:"?"secureConnect":"connect",(function(){queueMicrotask(f);if(I){const e=I;I=null;e(null,this)}})).on("error",(function(e){queueMicrotask(f);if(I){const t=I;I=null;t(e)}}));return d}}const g=process.platform==="win32"?(e,t)=>{if(!t.timeout){return noop}let A=null;let r=null;const n=a.setFastTimeout((()=>{A=setImmediate((()=>{r=setImmediate((()=>onConnectTimeout(e.deref(),t)))}))}),t.timeout);return()=>{a.clearFastTimeout(n);clearImmediate(A);clearImmediate(r)}}:(e,t)=>{if(!t.timeout){return noop}let A=null;const r=a.setFastTimeout((()=>{A=setImmediate((()=>{onConnectTimeout(e.deref(),t)}))}),t.timeout);return()=>{a.clearFastTimeout(r);clearImmediate(A)}};function onConnectTimeout(e,t){if(e==null){return}let A="Connect Timeout Error";if(Array.isArray(e.autoSelectFamilyAttemptedAddresses)){A+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(", ")},`}else{A+=` (attempted address: ${t.hostname}:${t.port},`}A+=` timeout: ${t.timeout}ms)`;s.destroy(e,new i(A))}e.exports=buildConnector},735:e=>{"use strict";const t={};const A=["Accept","Accept-Encoding","Accept-Language","Accept-Ranges","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Age","Allow","Alt-Svc","Alt-Used","Authorization","Cache-Control","Clear-Site-Data","Connection","Content-Disposition","Content-Encoding","Content-Language","Content-Length","Content-Location","Content-Range","Content-Security-Policy","Content-Security-Policy-Report-Only","Content-Type","Cookie","Cross-Origin-Embedder-Policy","Cross-Origin-Opener-Policy","Cross-Origin-Resource-Policy","Date","Device-Memory","Downlink","ECT","ETag","Expect","Expect-CT","Expires","Forwarded","From","Host","If-Match","If-Modified-Since","If-None-Match","If-Range","If-Unmodified-Since","Keep-Alive","Last-Modified","Link","Location","Max-Forwards","Origin","Permissions-Policy","Pragma","Proxy-Authenticate","Proxy-Authorization","RTT","Range","Referer","Referrer-Policy","Refresh","Retry-After","Sec-WebSocket-Accept","Sec-WebSocket-Extensions","Sec-WebSocket-Key","Sec-WebSocket-Protocol","Sec-WebSocket-Version","Server","Server-Timing","Service-Worker-Allowed","Service-Worker-Navigation-Preload","Set-Cookie","SourceMap","Strict-Transport-Security","Supports-Loading-Mode","TE","Timing-Allow-Origin","Trailer","Transfer-Encoding","Upgrade","Upgrade-Insecure-Requests","User-Agent","Vary","Via","WWW-Authenticate","X-Content-Type-Options","X-DNS-Prefetch-Control","X-Frame-Options","X-Permitted-Cross-Domain-Policies","X-Powered-By","X-Requested-With","X-XSS-Protection"];for(let e=0;e{"use strict";const r=A(3053);const n=A(7975);const s=n.debuglog("undici");const o=n.debuglog("fetch");const i=n.debuglog("websocket");let a=false;const c={beforeConnect:r.channel("undici:client:beforeConnect"),connected:r.channel("undici:client:connected"),connectError:r.channel("undici:client:connectError"),sendHeaders:r.channel("undici:client:sendHeaders"),create:r.channel("undici:request:create"),bodySent:r.channel("undici:request:bodySent"),headers:r.channel("undici:request:headers"),trailers:r.channel("undici:request:trailers"),error:r.channel("undici:request:error"),open:r.channel("undici:websocket:open"),close:r.channel("undici:websocket:close"),socketError:r.channel("undici:websocket:socket_error"),ping:r.channel("undici:websocket:ping"),pong:r.channel("undici:websocket:pong")};if(s.enabled||o.enabled){const e=o.enabled?o:s;r.channel("undici:client:beforeConnect").subscribe((t=>{const{connectParams:{version:A,protocol:r,port:n,host:s}}=t;e("connecting to %s using %s%s",`${s}${n?`:${n}`:""}`,r,A)}));r.channel("undici:client:connected").subscribe((t=>{const{connectParams:{version:A,protocol:r,port:n,host:s}}=t;e("connected to %s using %s%s",`${s}${n?`:${n}`:""}`,r,A)}));r.channel("undici:client:connectError").subscribe((t=>{const{connectParams:{version:A,protocol:r,port:n,host:s},error:o}=t;e("connection to %s using %s%s errored - %s",`${s}${n?`:${n}`:""}`,r,A,o.message)}));r.channel("undici:client:sendHeaders").subscribe((t=>{const{request:{method:A,path:r,origin:n}}=t;e("sending request to %s %s/%s",A,n,r)}));r.channel("undici:request:headers").subscribe((t=>{const{request:{method:A,path:r,origin:n},response:{statusCode:s}}=t;e("received response to %s %s/%s - HTTP %d",A,n,r,s)}));r.channel("undici:request:trailers").subscribe((t=>{const{request:{method:A,path:r,origin:n}}=t;e("trailers received from %s %s/%s",A,n,r)}));r.channel("undici:request:error").subscribe((t=>{const{request:{method:A,path:r,origin:n},error:s}=t;e("request to %s %s/%s errored - %s",A,n,r,s.message)}));a=true}if(i.enabled){if(!a){const e=s.enabled?s:i;r.channel("undici:client:beforeConnect").subscribe((t=>{const{connectParams:{version:A,protocol:r,port:n,host:s}}=t;e("connecting to %s%s using %s%s",s,n?`:${n}`:"",r,A)}));r.channel("undici:client:connected").subscribe((t=>{const{connectParams:{version:A,protocol:r,port:n,host:s}}=t;e("connected to %s%s using %s%s",s,n?`:${n}`:"",r,A)}));r.channel("undici:client:connectError").subscribe((t=>{const{connectParams:{version:A,protocol:r,port:n,host:s},error:o}=t;e("connection to %s%s using %s%s errored - %s",s,n?`:${n}`:"",r,A,o.message)}));r.channel("undici:client:sendHeaders").subscribe((t=>{const{request:{method:A,path:r,origin:n}}=t;e("sending request to %s %s/%s",A,n,r)}))}r.channel("undici:websocket:open").subscribe((e=>{const{address:{address:t,port:A}}=e;i("connection opened %s%s",t,A?`:${A}`:"")}));r.channel("undici:websocket:close").subscribe((e=>{const{websocket:t,code:A,reason:r}=e;i("closed connection to %s - %s %s",t.url,A,r)}));r.channel("undici:websocket:socket_error").subscribe((e=>{i("connection errored - %s",e.message)}));r.channel("undici:websocket:ping").subscribe((e=>{i("ping received")}));r.channel("undici:websocket:pong").subscribe((e=>{i("pong received")}))}e.exports={channels:c}},8707:e=>{"use strict";const t=Symbol.for("undici.error.UND_ERR");class UndiciError extends Error{constructor(e){super(e);this.name="UndiciError";this.code="UND_ERR"}static[Symbol.hasInstance](e){return e&&e[t]===true}[t]=true}const A=Symbol.for("undici.error.UND_ERR_CONNECT_TIMEOUT");class ConnectTimeoutError extends UndiciError{constructor(e){super(e);this.name="ConnectTimeoutError";this.message=e||"Connect Timeout Error";this.code="UND_ERR_CONNECT_TIMEOUT"}static[Symbol.hasInstance](e){return e&&e[A]===true}[A]=true}const r=Symbol.for("undici.error.UND_ERR_HEADERS_TIMEOUT");class HeadersTimeoutError extends UndiciError{constructor(e){super(e);this.name="HeadersTimeoutError";this.message=e||"Headers Timeout Error";this.code="UND_ERR_HEADERS_TIMEOUT"}static[Symbol.hasInstance](e){return e&&e[r]===true}[r]=true}const n=Symbol.for("undici.error.UND_ERR_HEADERS_OVERFLOW");class HeadersOverflowError extends UndiciError{constructor(e){super(e);this.name="HeadersOverflowError";this.message=e||"Headers Overflow Error";this.code="UND_ERR_HEADERS_OVERFLOW"}static[Symbol.hasInstance](e){return e&&e[n]===true}[n]=true}const s=Symbol.for("undici.error.UND_ERR_BODY_TIMEOUT");class BodyTimeoutError extends UndiciError{constructor(e){super(e);this.name="BodyTimeoutError";this.message=e||"Body Timeout Error";this.code="UND_ERR_BODY_TIMEOUT"}static[Symbol.hasInstance](e){return e&&e[s]===true}[s]=true}const o=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE");class ResponseStatusCodeError extends UndiciError{constructor(e,t,A,r){super(e);this.name="ResponseStatusCodeError";this.message=e||"Response Status Code Error";this.code="UND_ERR_RESPONSE_STATUS_CODE";this.body=r;this.status=t;this.statusCode=t;this.headers=A}static[Symbol.hasInstance](e){return e&&e[o]===true}[o]=true}const i=Symbol.for("undici.error.UND_ERR_INVALID_ARG");class InvalidArgumentError extends UndiciError{constructor(e){super(e);this.name="InvalidArgumentError";this.message=e||"Invalid Argument Error";this.code="UND_ERR_INVALID_ARG"}static[Symbol.hasInstance](e){return e&&e[i]===true}[i]=true}const a=Symbol.for("undici.error.UND_ERR_INVALID_RETURN_VALUE");class InvalidReturnValueError extends UndiciError{constructor(e){super(e);this.name="InvalidReturnValueError";this.message=e||"Invalid Return Value Error";this.code="UND_ERR_INVALID_RETURN_VALUE"}static[Symbol.hasInstance](e){return e&&e[a]===true}[a]=true}const c=Symbol.for("undici.error.UND_ERR_ABORT");class AbortError extends UndiciError{constructor(e){super(e);this.name="AbortError";this.message=e||"The operation was aborted";this.code="UND_ERR_ABORT"}static[Symbol.hasInstance](e){return e&&e[c]===true}[c]=true}const l=Symbol.for("undici.error.UND_ERR_ABORTED");class RequestAbortedError extends AbortError{constructor(e){super(e);this.name="AbortError";this.message=e||"Request aborted";this.code="UND_ERR_ABORTED"}static[Symbol.hasInstance](e){return e&&e[l]===true}[l]=true}const g=Symbol.for("undici.error.UND_ERR_INFO");class InformationalError extends UndiciError{constructor(e){super(e);this.name="InformationalError";this.message=e||"Request information";this.code="UND_ERR_INFO"}static[Symbol.hasInstance](e){return e&&e[g]===true}[g]=true}const u=Symbol.for("undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH");class RequestContentLengthMismatchError extends UndiciError{constructor(e){super(e);this.name="RequestContentLengthMismatchError";this.message=e||"Request body length does not match content-length header";this.code="UND_ERR_REQ_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](e){return e&&e[u]===true}[u]=true}const h=Symbol.for("undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH");class ResponseContentLengthMismatchError extends UndiciError{constructor(e){super(e);this.name="ResponseContentLengthMismatchError";this.message=e||"Response body length does not match content-length header";this.code="UND_ERR_RES_CONTENT_LENGTH_MISMATCH"}static[Symbol.hasInstance](e){return e&&e[h]===true}[h]=true}const E=Symbol.for("undici.error.UND_ERR_DESTROYED");class ClientDestroyedError extends UndiciError{constructor(e){super(e);this.name="ClientDestroyedError";this.message=e||"The client is destroyed";this.code="UND_ERR_DESTROYED"}static[Symbol.hasInstance](e){return e&&e[E]===true}[E]=true}const Q=Symbol.for("undici.error.UND_ERR_CLOSED");class ClientClosedError extends UndiciError{constructor(e){super(e);this.name="ClientClosedError";this.message=e||"The client is closed";this.code="UND_ERR_CLOSED"}static[Symbol.hasInstance](e){return e&&e[Q]===true}[Q]=true}const B=Symbol.for("undici.error.UND_ERR_SOCKET");class SocketError extends UndiciError{constructor(e,t){super(e);this.name="SocketError";this.message=e||"Socket error";this.code="UND_ERR_SOCKET";this.socket=t}static[Symbol.hasInstance](e){return e&&e[B]===true}[B]=true}const C=Symbol.for("undici.error.UND_ERR_NOT_SUPPORTED");class NotSupportedError extends UndiciError{constructor(e){super(e);this.name="NotSupportedError";this.message=e||"Not supported error";this.code="UND_ERR_NOT_SUPPORTED"}static[Symbol.hasInstance](e){return e&&e[C]===true}[C]=true}const I=Symbol.for("undici.error.UND_ERR_BPL_MISSING_UPSTREAM");class BalancedPoolMissingUpstreamError extends UndiciError{constructor(e){super(e);this.name="MissingUpstreamError";this.message=e||"No upstream has been added to the BalancedPool";this.code="UND_ERR_BPL_MISSING_UPSTREAM"}static[Symbol.hasInstance](e){return e&&e[I]===true}[I]=true}const d=Symbol.for("undici.error.UND_ERR_HTTP_PARSER");class HTTPParserError extends Error{constructor(e,t,A){super(e);this.name="HTTPParserError";this.code=t?`HPE_${t}`:undefined;this.data=A?A.toString():undefined}static[Symbol.hasInstance](e){return e&&e[d]===true}[d]=true}const f=Symbol.for("undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE");class ResponseExceededMaxSizeError extends UndiciError{constructor(e){super(e);this.name="ResponseExceededMaxSizeError";this.message=e||"Response content exceeded max size";this.code="UND_ERR_RES_EXCEEDED_MAX_SIZE"}static[Symbol.hasInstance](e){return e&&e[f]===true}[f]=true}const p=Symbol.for("undici.error.UND_ERR_REQ_RETRY");class RequestRetryError extends UndiciError{constructor(e,t,{headers:A,data:r}){super(e);this.name="RequestRetryError";this.message=e||"Request retry error";this.code="UND_ERR_REQ_RETRY";this.statusCode=t;this.data=r;this.headers=A}static[Symbol.hasInstance](e){return e&&e[p]===true}[p]=true}const y=Symbol.for("undici.error.UND_ERR_RESPONSE");class ResponseError extends UndiciError{constructor(e,t,{headers:A,data:r}){super(e);this.name="ResponseError";this.message=e||"Response error";this.code="UND_ERR_RESPONSE";this.statusCode=t;this.data=r;this.headers=A}static[Symbol.hasInstance](e){return e&&e[y]===true}[y]=true}const w=Symbol.for("undici.error.UND_ERR_PRX_TLS");class SecureProxyConnectionError extends UndiciError{constructor(e,t,A){super(t,{cause:e,...A??{}});this.name="SecureProxyConnectionError";this.message=t||"Secure Proxy Connection failed";this.code="UND_ERR_PRX_TLS";this.cause=e}static[Symbol.hasInstance](e){return e&&e[w]===true}[w]=true}const m=Symbol.for("undici.error.UND_ERR_WS_MESSAGE_SIZE_EXCEEDED");class MessageSizeExceededError extends UndiciError{constructor(e){super(e);this.name="MessageSizeExceededError";this.message=e||"Max decompressed message size exceeded";this.code="UND_ERR_WS_MESSAGE_SIZE_EXCEEDED"}static[Symbol.hasInstance](e){return e&&e[m]===true}get[m](){return true}}e.exports={AbortError:AbortError,HTTPParserError:HTTPParserError,UndiciError:UndiciError,HeadersTimeoutError:HeadersTimeoutError,HeadersOverflowError:HeadersOverflowError,BodyTimeoutError:BodyTimeoutError,RequestContentLengthMismatchError:RequestContentLengthMismatchError,ConnectTimeoutError:ConnectTimeoutError,ResponseStatusCodeError:ResponseStatusCodeError,InvalidArgumentError:InvalidArgumentError,InvalidReturnValueError:InvalidReturnValueError,RequestAbortedError:RequestAbortedError,ClientDestroyedError:ClientDestroyedError,ClientClosedError:ClientClosedError,InformationalError:InformationalError,SocketError:SocketError,NotSupportedError:NotSupportedError,ResponseContentLengthMismatchError:ResponseContentLengthMismatchError,BalancedPoolMissingUpstreamError:BalancedPoolMissingUpstreamError,ResponseExceededMaxSizeError:ResponseExceededMaxSizeError,RequestRetryError:RequestRetryError,ResponseError:ResponseError,SecureProxyConnectionError:SecureProxyConnectionError,MessageSizeExceededError:MessageSizeExceededError}},4655:(e,t,A)=>{"use strict";const{InvalidArgumentError:r,NotSupportedError:n}=A(8707);const s=A(4589);const{isValidHTTPToken:o,isValidHeaderValue:i,isStream:a,destroy:c,isBuffer:l,isFormDataLike:g,isIterable:u,isBlobLike:h,buildURL:E,validateHandler:Q,getServerName:B,normalizedMethodRecords:C}=A(3440);const{channels:I}=A(2414);const{headerNameLowerCasedRecord:d}=A(735);const f=/[^\u0021-\u00ff]/;const p=Symbol("handler");class Request{constructor(e,{path:t,method:A,body:n,headers:s,query:d,idempotent:y,blocking:w,upgrade:m,headersTimeout:D,bodyTimeout:k,reset:b,throwOnError:R,expectContinue:S,servername:F},N){if(typeof t!=="string"){throw new r("path must be a string")}else if(t[0]!=="/"&&!(t.startsWith("http://")||t.startsWith("https://"))&&A!=="CONNECT"){throw new r("path must be an absolute URL or start with a slash")}else if(f.test(t)){throw new r("invalid request path")}if(typeof A!=="string"){throw new r("method must be a string")}else if(C[A]===undefined&&!o(A)){throw new r("invalid request method")}if(m&&typeof m!=="string"){throw new r("upgrade must be a string")}if(m&&!i(m)){throw new r("invalid upgrade header")}if(D!=null&&(!Number.isFinite(D)||D<0)){throw new r("invalid headersTimeout")}if(k!=null&&(!Number.isFinite(k)||k<0)){throw new r("invalid bodyTimeout")}if(b!=null&&typeof b!=="boolean"){throw new r("invalid reset")}if(S!=null&&typeof S!=="boolean"){throw new r("invalid expectContinue")}this.headersTimeout=D;this.bodyTimeout=k;this.throwOnError=R===true;this.method=A;this.abort=null;if(n==null){this.body=null}else if(a(n)){this.body=n;const e=this.body._readableState;if(!e||!e.autoDestroy){this.endHandler=function autoDestroy(){c(this)};this.body.on("end",this.endHandler)}this.errorHandler=e=>{if(this.abort){this.abort(e)}else{this.error=e}};this.body.on("error",this.errorHandler)}else if(l(n)){this.body=n.byteLength?n:null}else if(ArrayBuffer.isView(n)){this.body=n.buffer.byteLength?Buffer.from(n.buffer,n.byteOffset,n.byteLength):null}else if(n instanceof ArrayBuffer){this.body=n.byteLength?Buffer.from(n):null}else if(typeof n==="string"){this.body=n.length?Buffer.from(n):null}else if(g(n)||u(n)||h(n)){this.body=n}else{throw new r("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable")}this.completed=false;this.aborted=false;this.upgrade=m||null;this.path=d?E(t,d):t;this.origin=e;this.idempotent=y==null?A==="HEAD"||A==="GET":y;this.blocking=w==null?false:w;this.reset=b==null?null:b;this.host=null;this.contentLength=null;this.contentType=null;this.headers=[];this.expectContinue=S!=null?S:false;if(Array.isArray(s)){if(s.length%2!==0){throw new r("headers array must be even")}for(let e=0;e{e.exports={kClose:Symbol("close"),kDestroy:Symbol("destroy"),kDispatch:Symbol("dispatch"),kUrl:Symbol("url"),kWriting:Symbol("writing"),kResuming:Symbol("resuming"),kQueue:Symbol("queue"),kConnect:Symbol("connect"),kConnecting:Symbol("connecting"),kKeepAliveDefaultTimeout:Symbol("default keep alive timeout"),kKeepAliveMaxTimeout:Symbol("max keep alive timeout"),kKeepAliveTimeoutThreshold:Symbol("keep alive timeout threshold"),kKeepAliveTimeoutValue:Symbol("keep alive timeout"),kKeepAlive:Symbol("keep alive"),kHeadersTimeout:Symbol("headers timeout"),kBodyTimeout:Symbol("body timeout"),kServerName:Symbol("server name"),kLocalAddress:Symbol("local address"),kHost:Symbol("host"),kNoRef:Symbol("no ref"),kBodyUsed:Symbol("used"),kBody:Symbol("abstracted request body"),kRunning:Symbol("running"),kBlocking:Symbol("blocking"),kPending:Symbol("pending"),kSize:Symbol("size"),kBusy:Symbol("busy"),kQueued:Symbol("queued"),kFree:Symbol("free"),kConnected:Symbol("connected"),kClosed:Symbol("closed"),kNeedDrain:Symbol("need drain"),kReset:Symbol("reset"),kDestroyed:Symbol.for("nodejs.stream.destroyed"),kResume:Symbol("resume"),kOnError:Symbol("on error"),kMaxHeadersSize:Symbol("max headers size"),kRunningIdx:Symbol("running index"),kPendingIdx:Symbol("pending index"),kError:Symbol("error"),kClients:Symbol("clients"),kClient:Symbol("client"),kParser:Symbol("parser"),kOnDestroyed:Symbol("destroy callbacks"),kPipelining:Symbol("pipelining"),kSocket:Symbol("socket"),kHostHeader:Symbol("host header"),kConnector:Symbol("connector"),kStrictContentLength:Symbol("strict content length"),kMaxRedirections:Symbol("maxRedirections"),kMaxRequests:Symbol("maxRequestsPerClient"),kProxy:Symbol("proxy agent options"),kCounter:Symbol("socket request counter"),kInterceptors:Symbol("dispatch interceptors"),kMaxResponseSize:Symbol("max response size"),kHTTP2Session:Symbol("http2Session"),kHTTP2SessionState:Symbol("http2Session state"),kRetryHandlerDefaultRetry:Symbol("retry agent default retry"),kConstruct:Symbol("constructable"),kListeners:Symbol("listeners"),kHTTPContext:Symbol("http context"),kMaxConcurrentStreams:Symbol("max concurrent streams"),kNoProxyAgent:Symbol("no proxy agent"),kHttpProxyAgent:Symbol("http proxy agent"),kHttpsProxyAgent:Symbol("https proxy agent")}},7752:(e,t,A)=>{"use strict";const{wellknownHeaderNames:r,headerNameLowerCasedRecord:n}=A(735);class TstNode{value=null;left=null;middle=null;right=null;code;constructor(e,t,A){if(A===undefined||A>=e.length){throw new TypeError("Unreachable")}const r=this.code=e.charCodeAt(A);if(r>127){throw new TypeError("key must be ascii string")}if(e.length!==++A){this.middle=new TstNode(e,t,A)}else{this.value=t}}add(e,t){const A=e.length;if(A===0){throw new TypeError("Unreachable")}let r=0;let n=this;while(true){const s=e.charCodeAt(r);if(s>127){throw new TypeError("key must be ascii string")}if(n.code===s){if(A===++r){n.value=t;break}else if(n.middle!==null){n=n.middle}else{n.middle=new TstNode(e,t,r);break}}else if(n.code=65){n|=32}while(r!==null){if(n===r.code){if(t===++A){return r}r=r.middle;break}r=r.code{"use strict";const r=A(4589);const{kDestroyed:n,kBodyUsed:s,kListeners:o,kBody:i}=A(6443);const{IncomingMessage:a}=A(7067);const c=A(7075);const l=A(7030);const{Blob:g}=A(4573);const u=A(7975);const{stringify:h}=A(1792);const{EventEmitter:E}=A(8474);const{InvalidArgumentError:Q}=A(8707);const{headerNameLowerCasedRecord:B}=A(735);const{tree:C}=A(7752);const[I,d]=process.versions.node.split(".").map((e=>Number(e)));class BodyAsyncIterable{constructor(e){this[i]=e;this[s]=false}async*[Symbol.asyncIterator](){r(!this[s],"disturbed");this[s]=true;yield*this[i]}}function wrapRequestBody(e){if(isStream(e)){if(bodyLength(e)===0){e.on("data",(function(){r(false)}))}if(typeof e.readableDidRead!=="boolean"){e[s]=false;E.prototype.on.call(e,"data",(function(){this[s]=true}))}return e}else if(e&&typeof e.pipeTo==="function"){return new BodyAsyncIterable(e)}else if(e&&typeof e!=="string"&&!ArrayBuffer.isView(e)&&isIterable(e)){return new BodyAsyncIterable(e)}else{return e}}function nop(){}function isStream(e){return e&&typeof e==="object"&&typeof e.pipe==="function"&&typeof e.on==="function"}function isBlobLike(e){if(e===null){return false}else if(e instanceof g){return true}else if(typeof e!=="object"){return false}else{const t=e[Symbol.toStringTag];return(t==="Blob"||t==="File")&&("stream"in e&&typeof e.stream==="function"||"arrayBuffer"in e&&typeof e.arrayBuffer==="function")}}function buildURL(e,t){if(e.includes("?")||e.includes("#")){throw new Error('Query params cannot be passed when url already contains "?" or "#".')}const A=h(t);if(A){e+="?"+A}return e}function isValidPort(e){const t=parseInt(e,10);return t===Number(e)&&t>=0&&t<=65535}function isHttpOrHttpsPrefixed(e){return e!=null&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&(e[4]===":"||e[4]==="s"&&e[5]===":")}function parseURL(e){if(typeof e==="string"){e=new URL(e);if(!isHttpOrHttpsPrefixed(e.origin||e.protocol)){throw new Q("Invalid URL protocol: the URL must start with `http:` or `https:`.")}return e}if(!e||typeof e!=="object"){throw new Q("Invalid URL: The URL argument must be a non-null object.")}if(!(e instanceof URL)){if(e.port!=null&&e.port!==""&&isValidPort(e.port)===false){throw new Q("Invalid URL: port must be a valid integer or a string representation of an integer.")}if(e.path!=null&&typeof e.path!=="string"){throw new Q("Invalid URL path: the path must be a string or null/undefined.")}if(e.pathname!=null&&typeof e.pathname!=="string"){throw new Q("Invalid URL pathname: the pathname must be a string or null/undefined.")}if(e.hostname!=null&&typeof e.hostname!=="string"){throw new Q("Invalid URL hostname: the hostname must be a string or null/undefined.")}if(e.origin!=null&&typeof e.origin!=="string"){throw new Q("Invalid URL origin: the origin must be a string or null/undefined.")}if(!isHttpOrHttpsPrefixed(e.origin||e.protocol)){throw new Q("Invalid URL protocol: the URL must start with `http:` or `https:`.")}const t=e.port!=null?e.port:e.protocol==="https:"?443:80;let A=e.origin!=null?e.origin:`${e.protocol||""}//${e.hostname||""}:${t}`;let r=e.path!=null?e.path:`${e.pathname||""}${e.search||""}`;if(A[A.length-1]==="/"){A=A.slice(0,A.length-1)}if(r&&r[0]!=="/"){r=`/${r}`}return new URL(`${A}${r}`)}if(!isHttpOrHttpsPrefixed(e.origin||e.protocol)){throw new Q("Invalid URL protocol: the URL must start with `http:` or `https:`.")}return e}function parseOrigin(e){e=parseURL(e);if(e.pathname!=="/"||e.search||e.hash){throw new Q("invalid url")}return e}function getHostname(e){if(e[0]==="["){const t=e.indexOf("]");r(t!==-1);return e.substring(1,t)}const t=e.indexOf(":");if(t===-1)return e;return e.substring(0,t)}function getServerName(e){if(!e){return null}r(typeof e==="string");const t=getHostname(e);if(l.isIP(t)){return""}return t}function deepClone(e){return JSON.parse(JSON.stringify(e))}function isAsyncIterable(e){return!!(e!=null&&typeof e[Symbol.asyncIterator]==="function")}function isIterable(e){return!!(e!=null&&(typeof e[Symbol.iterator]==="function"||typeof e[Symbol.asyncIterator]==="function"))}function bodyLength(e){if(e==null){return 0}else if(isStream(e)){const t=e._readableState;return t&&t.objectMode===false&&t.ended===true&&Number.isFinite(t.length)?t.length:null}else if(isBlobLike(e)){return e.size!=null?e.size:null}else if(isBuffer(e)){return e.byteLength}return null}function isDestroyed(e){return e&&!!(e.destroyed||e[n]||c.isDestroyed?.(e))}function destroy(e,t){if(e==null||!isStream(e)||isDestroyed(e)){return}if(typeof e.destroy==="function"){if(Object.getPrototypeOf(e).constructor===a){e.socket=null}e.destroy(t)}else if(t){queueMicrotask((()=>{e.emit("error",t)}))}if(e.destroyed!==true){e[n]=true}}const f=/timeout=(\d+)/;function parseKeepAliveTimeout(e){const t=e.toString().match(f);return t?parseInt(t[1],10)*1e3:null}function headerNameToString(e){return typeof e==="string"?B[e]??e.toLowerCase():C.lookup(e)??e.toString("latin1").toLowerCase()}function bufferToLowerCasedHeaderName(e){return C.lookup(e)??e.toString("latin1").toLowerCase()}function parseHeaders(e,t){if(t===undefined)t={};for(let A=0;Ae.toString("utf8"))):n.toString("utf8")}}}if("content-length"in t&&"content-disposition"in t){t["content-disposition"]=Buffer.from(t["content-disposition"]).toString("latin1")}return t}function parseRawHeaders(e){const t=e.length;const A=new Array(t);let r=false;let n=-1;let s;let o;let i=0;for(let t=0;t{e.close();e.byobRequest?.respond(0)}))}else{const t=Buffer.isBuffer(r)?r:Buffer.from(r);if(t.byteLength){e.enqueue(new Uint8Array(t))}}return e.desiredSize>0},async cancel(e){await t.return()},type:"bytes"})}function isFormDataLike(e){return e&&typeof e==="object"&&typeof e.append==="function"&&typeof e.delete==="function"&&typeof e.get==="function"&&typeof e.getAll==="function"&&typeof e.has==="function"&&typeof e.set==="function"&&e[Symbol.toStringTag]==="FormData"}function addAbortListener(e,t){if("addEventListener"in e){e.addEventListener("abort",t,{once:true});return()=>e.removeEventListener("abort",t)}e.addListener("abort",t);return()=>e.removeListener("abort",t)}const p=typeof String.prototype.toWellFormed==="function";const y=typeof String.prototype.isWellFormed==="function";function toUSVString(e){return p?`${e}`.toWellFormed():u.toUSVString(e)}function isUSVString(e){return y?`${e}`.isWellFormed():toUSVString(e)===`${e}`}function isTokenCharCode(e){switch(e){case 34:case 40:case 41:case 44:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 123:case 125:return false;default:return e>=33&&e<=126}}function isValidHTTPToken(e){if(e.length===0){return false}for(let t=0;t{"use strict";const{InvalidArgumentError:r}=A(8707);const{kClients:n,kRunning:s,kClose:o,kDestroy:i,kDispatch:a,kInterceptors:c}=A(6443);const l=A(1841);const g=A(628);const u=A(3701);const h=A(3440);const E=A(5092);const Q=Symbol("onConnect");const B=Symbol("onDisconnect");const C=Symbol("onConnectionError");const I=Symbol("maxRedirections");const d=Symbol("onDrain");const f=Symbol("factory");const p=Symbol("options");function defaultFactory(e,t){return t&&t.connections===1?new u(e,t):new g(e,t)}class Agent extends l{constructor({factory:e=defaultFactory,maxRedirections:t=0,connect:A,...s}={}){if(typeof e!=="function"){throw new r("factory must be a function.")}if(A!=null&&typeof A!=="function"&&typeof A!=="object"){throw new r("connect must be a function or an object")}if(!Number.isInteger(t)||t<0){throw new r("maxRedirections must be a positive number")}super(s);if(A&&typeof A!=="function"){A={...A}}this[c]=s.interceptors?.Agent&&Array.isArray(s.interceptors.Agent)?s.interceptors.Agent:[E({maxRedirections:t})];this[p]={...h.deepClone(s),connect:A};this[p].interceptors=s.interceptors?{...s.interceptors}:undefined;this[I]=t;this[f]=e;this[n]=new Map;this[d]=(e,t)=>{this.emit("drain",e,[this,...t])};this[Q]=(e,t)=>{this.emit("connect",e,[this,...t])};this[B]=(e,t,A)=>{this.emit("disconnect",e,[this,...t],A)};this[C]=(e,t,A)=>{this.emit("connectionError",e,[this,...t],A)}}get[s](){let e=0;for(const t of this[n].values()){e+=t[s]}return e}[a](e,t){let A;if(e.origin&&(typeof e.origin==="string"||e.origin instanceof URL)){A=String(e.origin)}else{throw new r("opts.origin must be a non-empty string or URL.")}let s=this[n].get(A);if(!s){s=this[f](e.origin,this[p]).on("drain",this[d]).on("connect",this[Q]).on("disconnect",this[B]).on("connectionError",this[C]);this[n].set(A,s)}return s.dispatch(e,t)}async[o](){const e=[];for(const t of this[n].values()){e.push(t.close())}this[n].clear();await Promise.all(e)}async[i](e){const t=[];for(const A of this[n].values()){t.push(A.destroy(e))}this[n].clear();await Promise.all(t)}}e.exports=Agent},837:(e,t,A)=>{"use strict";const{BalancedPoolMissingUpstreamError:r,InvalidArgumentError:n}=A(8707);const{PoolBase:s,kClients:o,kNeedDrain:i,kAddClient:a,kRemoveClient:c,kGetDispatcher:l}=A(2128);const g=A(628);const{kUrl:u,kInterceptors:h}=A(6443);const{parseOrigin:E}=A(3440);const Q=Symbol("factory");const B=Symbol("options");const C=Symbol("kGreatestCommonDivisor");const I=Symbol("kCurrentWeight");const d=Symbol("kIndex");const f=Symbol("kWeight");const p=Symbol("kMaxWeightPerServer");const y=Symbol("kErrorPenalty");function getGreatestCommonDivisor(e,t){if(e===0)return t;while(t!==0){const A=t;t=e%t;e=A}return e}function defaultFactory(e,t){return new g(e,t)}class BalancedPool extends s{constructor(e=[],{factory:t=defaultFactory,...A}={}){super();this[B]=A;this[d]=-1;this[I]=0;this[p]=this[B].maxWeightPerServer||100;this[y]=this[B].errorPenalty||15;if(!Array.isArray(e)){e=[e]}if(typeof t!=="function"){throw new n("factory must be a function.")}this[h]=A.interceptors?.BalancedPool&&Array.isArray(A.interceptors.BalancedPool)?A.interceptors.BalancedPool:[];this[Q]=t;for(const t of e){this.addUpstream(t)}this._updateBalancedPoolStats()}addUpstream(e){const t=E(e).origin;if(this[o].find((e=>e[u].origin===t&&e.closed!==true&&e.destroyed!==true))){return this}const A=this[Q](t,Object.assign({},this[B]));this[a](A);A.on("connect",(()=>{A[f]=Math.min(this[p],A[f]+this[y])}));A.on("connectionError",(()=>{A[f]=Math.max(1,A[f]-this[y]);this._updateBalancedPoolStats()}));A.on("disconnect",((...e)=>{const t=e[2];if(t&&t.code==="UND_ERR_SOCKET"){A[f]=Math.max(1,A[f]-this[y]);this._updateBalancedPoolStats()}}));for(const e of this[o]){e[f]=this[p]}this._updateBalancedPoolStats();return this}_updateBalancedPoolStats(){let e=0;for(let t=0;te[u].origin===t&&e.closed!==true&&e.destroyed!==true));if(A){this[c](A)}return this}get upstreams(){return this[o].filter((e=>e.closed!==true&&e.destroyed!==true)).map((e=>e[u].origin))}[l](){if(this[o].length===0){throw new r}const e=this[o].find((e=>!e[i]&&e.closed!==true&&e.destroyed!==true));if(!e){return}const t=this[o].map((e=>e[i])).reduce(((e,t)=>e&&t),true);if(t){return}let A=0;let n=this[o].findIndex((e=>!e[i]));while(A++this[o][n][f]&&!e[i]){n=this[d]}if(this[d]===0){this[I]=this[I]-this[C];if(this[I]<=0){this[I]=this[p]}}if(e[f]>=this[I]&&!e[i]){return e}}this[I]=this[o][n][f];this[d]=n;return this[o][n]}}e.exports=BalancedPool},637:(e,t,A)=>{"use strict";const r=A(4589);const n=A(3440);const{channels:s}=A(2414);const o=A(6603);const{RequestContentLengthMismatchError:i,ResponseContentLengthMismatchError:a,RequestAbortedError:c,InvalidArgumentError:l,HeadersTimeoutError:g,HeadersOverflowError:u,SocketError:h,InformationalError:E,BodyTimeoutError:Q,HTTPParserError:B,ResponseExceededMaxSizeError:C}=A(8707);const{kUrl:I,kReset:d,kClient:f,kParser:p,kBlocking:y,kRunning:w,kPending:m,kSize:D,kWriting:k,kQueue:b,kNoRef:R,kKeepAliveDefaultTimeout:S,kHostHeader:F,kPendingIdx:N,kRunningIdx:M,kError:U,kPipelining:L,kSocket:T,kKeepAliveTimeoutValue:v,kMaxHeadersSize:Y,kKeepAliveMaxTimeout:H,kKeepAliveTimeoutThreshold:x,kHeadersTimeout:G,kBodyTimeout:J,kStrictContentLength:V,kMaxRequests:O,kCounter:P,kMaxResponseSize:W,kOnError:q,kResume:_,kHTTPContext:j}=A(6443);const Z=A(2824);const z=Buffer.alloc(0);const K=Buffer[Symbol.species];const X=n.addListener;const $=n.removeAllListeners;const ee=Symbol("kIdleSocketValidation");const te=Symbol("kIdleSocketValidationTimeout");const Ae=Symbol("kSocketUsed");let re;async function lazyllhttp(){const e=process.env.JEST_WORKER_ID?A(3870):undefined;let t;try{t=await WebAssembly.compile(A(3434))}catch(r){t=await WebAssembly.compile(e||A(3870))}return await WebAssembly.instantiate(t,{env:{wasm_on_url:(e,t,A)=>0,wasm_on_status:(e,t,A)=>{r(oe.ptr===e);const n=t-ce+ie.byteOffset;return oe.onStatus(new K(ie.buffer,n,A))||0},wasm_on_message_begin:e=>{r(oe.ptr===e);return oe.onMessageBegin()||0},wasm_on_header_field:(e,t,A)=>{r(oe.ptr===e);const n=t-ce+ie.byteOffset;return oe.onHeaderField(new K(ie.buffer,n,A))||0},wasm_on_header_value:(e,t,A)=>{r(oe.ptr===e);const n=t-ce+ie.byteOffset;return oe.onHeaderValue(new K(ie.buffer,n,A))||0},wasm_on_headers_complete:(e,t,A,n)=>{r(oe.ptr===e);return oe.onHeadersComplete(t,Boolean(A),Boolean(n))||0},wasm_on_body:(e,t,A)=>{r(oe.ptr===e);const n=t-ce+ie.byteOffset;return oe.onBody(new K(ie.buffer,n,A))||0},wasm_on_message_complete:e=>{r(oe.ptr===e);return oe.onMessageComplete()||0}}})}let ne=null;let se=lazyllhttp();se.catch();let oe=null;let ie=null;let ae=0;let ce=null;const le=0;const ge=1;const ue=2|ge;const he=4|ge;const Ee=8|le;class Parser{constructor(e,t,{exports:A}){r(Number.isFinite(e[Y])&&e[Y]>0);this.llhttp=A;this.ptr=this.llhttp.llhttp_alloc(Z.TYPE.RESPONSE);this.client=e;this.socket=t;this.timeout=null;this.timeoutValue=null;this.timeoutType=null;this.statusCode=null;this.statusText="";this.upgrade=false;this.headers=[];this.headersSize=0;this.headersMaxSize=e[Y];this.shouldKeepAlive=false;this.paused=false;this.resume=this.resume.bind(this);this.bytesRead=0;this.keepAlive="";this.contentLength="";this.connection="";this.maxResponseSize=e[W]}setTimeout(e,t){if(e!==this.timeoutValue||t&ge^this.timeoutType&ge){if(this.timeout){o.clearTimeout(this.timeout);this.timeout=null}if(e){if(t&ge){this.timeout=o.setFastTimeout(onParserTimeout,e,new WeakRef(this))}else{this.timeout=setTimeout(onParserTimeout,e,new WeakRef(this));this.timeout.unref()}}this.timeoutValue=e}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}this.timeoutType=t}resume(){if(this.socket.destroyed||!this.paused){return}r(this.ptr!=null);r(oe==null);this.llhttp.llhttp_resume(this.ptr);r(this.timeoutType===he);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}this.paused=false;this.execute(this.socket.read()||z);this.readMore()}readMore(){while(!this.paused&&this.ptr){const e=this.socket.read();if(e===null){break}this.execute(e)}}execute(e){r(this.ptr!=null);r(oe==null);r(!this.paused);const{socket:t,llhttp:A}=this;if(e.length>ae){if(ce){A.free(ce)}ae=Math.ceil(e.length/4096)*4096;ce=A.malloc(ae)}new Uint8Array(A.memory.buffer,ce,ae).set(e);try{let r;try{ie=e;oe=this;r=A.llhttp_execute(this.ptr,ce,e.length)}catch(e){throw e}finally{oe=null;ie=null}const n=A.llhttp_get_error_pos(this.ptr)-ce;if(r!==Z.ERROR.OK){const A=e.subarray(n);if(r===Z.ERROR.PAUSED_UPGRADE){this.onUpgrade(A)}else if(r===Z.ERROR.PAUSED){this.paused=true;t.unshift(A)}else{throw this.createError(r,A)}}}catch(e){n.destroy(t,e)}}finish(){r(oe===null);r(this.ptr!=null);r(!this.paused);const{llhttp:e}=this;let t;try{oe=this;t=e.llhttp_finish(this.ptr)}finally{oe=null}if(t===Z.ERROR.OK){return null}if(t===Z.ERROR.PAUSED||t===Z.ERROR.PAUSED_UPGRADE){this.paused=true;return null}return this.createError(t,z)}createError(e,t){const{llhttp:A,contentLength:r,bytesRead:n}=this;if(r&&n!==parseInt(r,10)){return new a}const s=A.llhttp_get_error_reason(this.ptr);let o="";if(s){const e=new Uint8Array(A.memory.buffer,s).indexOf(0);o="Response does not match the HTTP/1.1 protocol ("+Buffer.from(A.memory.buffer,s,e).toString()+")"}return new B(o,Z.ERROR[e],t)}destroy(){r(this.ptr!=null);r(oe==null);this.llhttp.llhttp_free(this.ptr);this.ptr=null;this.timeout&&o.clearTimeout(this.timeout);this.timeout=null;this.timeoutValue=null;this.timeoutType=null;this.paused=false}onStatus(e){this.statusText=e.toString()}onMessageBegin(){const{socket:e,client:t}=this;if(e.destroyed){return-1}if(t[w]===0){n.destroy(e,new h("bad response",n.getSocketInfo(e)));return-1}const A=t[b][t[M]];if(!A){return-1}A.onResponseStarted()}onHeaderField(e){const t=this.headers.length;if((t&1)===0){this.headers.push(e)}else{this.headers[t-1]=Buffer.concat([this.headers[t-1],e])}this.trackHeader(e.length)}onHeaderValue(e){let t=this.headers.length;if((t&1)===1){this.headers.push(e);t+=1}else{this.headers[t-1]=Buffer.concat([this.headers[t-1],e])}const A=this.headers[t-2];if(A.length===10){const t=n.bufferToLowerCasedHeaderName(A);if(t==="keep-alive"){this.keepAlive+=e.toString()}else if(t==="connection"){this.connection+=e.toString()}}else if(A.length===14&&n.bufferToLowerCasedHeaderName(A)==="content-length"){this.contentLength+=e.toString()}this.trackHeader(e.length)}trackHeader(e){this.headersSize+=e;if(this.headersSize>=this.headersMaxSize){n.destroy(this.socket,new u)}}onUpgrade(e){const{upgrade:t,client:A,socket:s,headers:o,statusCode:i}=this;r(t);r(A[T]===s);r(!s.destroyed);r(!this.paused);r((o.length&1)===0);const a=A[b][A[M]];r(a);r(a.upgrade||a.method==="CONNECT");this.statusCode=null;this.statusText="";this.shouldKeepAlive=null;this.headers=[];this.headersSize=0;s.unshift(e);s[p].destroy();s[p]=null;s[f]=null;s[U]=null;$(s);A[T]=null;A[j]=null;A[b][A[M]++]=null;A.emit("disconnect",A[I],[A],new E("upgrade"));try{a.onUpgrade(i,o,s)}catch(e){n.destroy(s,e)}A[_]()}onHeadersComplete(e,t,A){const{client:s,socket:o,headers:i,statusText:a}=this;if(o.destroyed){return-1}if(s[w]===0){n.destroy(o,new h("bad response",n.getSocketInfo(o)));return-1}const c=s[b][s[M]];if(!c){return-1}r(!this.upgrade);r(this.statusCode<200);if(e===100){n.destroy(o,new h("bad response",n.getSocketInfo(o)));return-1}if(t&&!c.upgrade){n.destroy(o,new h("bad upgrade",n.getSocketInfo(o)));return-1}r(this.timeoutType===ue);this.statusCode=e;this.shouldKeepAlive=A||c.method==="HEAD"&&!o[d]&&this.connection.toLowerCase()==="keep-alive";if(this.statusCode>=200){const e=c.bodyTimeout!=null?c.bodyTimeout:s[J];this.setTimeout(e,he)}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}if(c.method==="CONNECT"){r(s[w]===1);this.upgrade=true;return 2}if(t){r(s[w]===1);this.upgrade=true;return 2}r((this.headers.length&1)===0);this.headers=[];this.headersSize=0;if(this.shouldKeepAlive&&s[L]){const e=this.keepAlive?n.parseKeepAliveTimeout(this.keepAlive):null;if(e!=null){const t=Math.min(e-s[x],s[H]);if(t<=0){o[d]=true}else{s[v]=t}}else{s[v]=s[S]}}else{o[d]=true}const l=c.onHeaders(e,i,this.resume,a)===false;if(c.aborted){return-1}if(c.method==="HEAD"){return 1}if(e<200){return 1}if(o[y]){o[y]=false;s[_]()}return l?Z.ERROR.PAUSED:0}onBody(e){const{client:t,socket:A,statusCode:s,maxResponseSize:o}=this;if(A.destroyed){return-1}const i=t[b][t[M]];r(i);r(this.timeoutType===he);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}r(s>=200);if(o>-1&&this.bytesRead+e.length>o){n.destroy(A,new C);return-1}this.bytesRead+=e.length;if(i.onData(e)===false){return Z.ERROR.PAUSED}}onMessageComplete(){const{client:e,socket:t,statusCode:A,upgrade:s,headers:o,contentLength:i,bytesRead:c,shouldKeepAlive:l}=this;if(t.destroyed&&(!A||l)){return-1}if(s){return}r(A>=100);r((this.headers.length&1)===0);const g=e[b][e[M]];r(g);this.statusCode=null;this.statusText="";this.bytesRead=0;this.contentLength="";this.keepAlive="";this.connection="";this.headers=[];this.headersSize=0;if(A<200){return}if(g.method!=="HEAD"&&i&&c!==parseInt(i,10)){n.destroy(t,new a);return-1}g.onComplete(o);e[b][e[M]++]=null;t[Ae]=true;if(t[k]){r(e[w]===0);n.destroy(t,new E("reset"));return Z.ERROR.PAUSED}else if(!l){n.destroy(t,new E("reset"));return Z.ERROR.PAUSED}else if(t[d]&&e[w]===0){n.destroy(t,new E("reset"));return Z.ERROR.PAUSED}else if(e[L]==null||e[L]===1){setImmediate((()=>e[_]()))}else{e[_]()}}}function onParserTimeout(e){const{socket:t,timeoutType:A,client:s,paused:o}=e.deref();if(A===ue){if(!t[k]||t.writableNeedDrain||s[w]>1){r(!o,"cannot be paused while waiting for headers");n.destroy(t,new g)}}else if(A===he){if(!o){n.destroy(t,new Q)}}else if(A===Ee){r(s[w]===0&&s[v]);n.destroy(t,new E("socket idle timeout"))}}async function connectH1(e,t){e[T]=t;if(!ne){ne=await se;se=null}t[R]=false;t[k]=false;t[d]=false;t[y]=false;t[ee]=0;t[te]=null;t[Ae]=false;t[p]=new Parser(e,t,ne);X(t,"error",(function(e){r(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID");const t=this[p];if(e.code==="ECONNRESET"&&t.statusCode&&!t.shouldKeepAlive){const e=t.finish();if(e){this[U]=e;this[f][q](e)}return}this[U]=e;this[f][q](e)}));X(t,"readable",(function(){const e=this[p];if(e){e.readMore()}}));X(t,"end",(function(){const e=this[p];if(e.statusCode&&!e.shouldKeepAlive){const t=e.finish();if(t){n.destroy(this,t)}return}n.destroy(this,new h("other side closed",n.getSocketInfo(this)))}));X(t,"close",(function(){const e=this[f];const t=this[p];clearIdleSocketValidation(this);if(t){if(!this[U]&&t.statusCode&&!t.shouldKeepAlive){this[U]=t.finish()||this[U]}this[p].destroy();this[p]=null}const A=this[U]||new h("closed",n.getSocketInfo(this));e[T]=null;e[j]=null;if(e.destroyed){r(e[m]===0);const t=e[b].splice(e[M]);for(let r=0;r0&&A.code!=="UND_ERR_INFO"){const t=e[b][e[M]];e[b][e[M]++]=null;n.errorRequest(e,t,A)}e[N]=e[M];r(e[w]===0);e.emit("disconnect",e[I],[e],A);e[_]()}));let A=false;t.on("close",(()=>{A=true}));return{version:"h1",defaultPipelining:1,write(...t){return writeH1(e,...t)},resume(){resumeH1(e)},destroy(e,r){if(A){queueMicrotask(r)}else{t.destroy(e).on("close",r)}},get destroyed(){return t.destroyed},busy(A){if(t[k]||t[d]||t[y]||t[ee]===1){return true}if(A){if(e[w]>0&&!A.idempotent){return true}if(e[w]>0&&(A.upgrade||A.method==="CONNECT")){return true}if(e[w]>0&&n.bodyLength(A.body)!==0&&(n.isStream(A.body)||n.isAsyncIterable(A.body)||n.isFormDataLike(A.body))){return true}}return false}}}function clearIdleSocketValidation(e){if(e[te]){clearTimeout(e[te]);e[te]=null}e[ee]=0}function scheduleIdleSocketValidation(e,t){t[ee]=1;t[te]=setTimeout((()=>{t[te]=null;t[ee]=2;if(e[T]===t&&!t.destroyed){e[_]()}}),0);t[te].unref?.()}function resumeH1(e){const t=e[T];if(t&&!t.destroyed){if(e[D]===0){if(!t[R]&&t.unref){t.unref();t[R]=true}}else if(t[R]&&t.ref){t.ref();t[R]=false}if(e[w]===0&&e[m]>0&&t[Ae]){if(t[ee]===0){scheduleIdleSocketValidation(e,t);t[p].readMore();if(t.destroyed){return}return}if(t[ee]===1){t[p].readMore();if(t.destroyed){return}return}}if(e[w]===0){t[p].readMore();if(t.destroyed){return}}if(e[D]===0){if(t[p].timeoutType!==Ee){t[p].setTimeout(e[v],Ee)}}else if(e[w]>0&&t[p].statusCode<200){if(t[p].timeoutType!==ue){const A=e[b][e[M]];const r=A.headersTimeout!=null?A.headersTimeout:e[G];t[p].setTimeout(r,ue)}}}}function shouldSendContentLength(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function writeH1(e,t){const{method:o,path:a,host:g,upgrade:u,blocking:h,reset:Q}=t;let{body:B,headers:C,contentLength:I}=t;const f=o==="PUT"||o==="POST"||o==="PATCH"||o==="QUERY"||o==="PROPFIND"||o==="PROPPATCH";if(n.isFormDataLike(B)){if(!re){re=A(4492).extractBody}const[e,r]=re(B);if(t.contentType==null){C.push("content-type",r)}B=e.stream;I=e.length}else if(n.isBlobLike(B)&&t.contentType==null){const A=B.type;if(A){const r=`${A}`;if(!n.isValidHeaderValue(r)){n.errorRequest(e,t,new l("invalid content-type header"));return false}C.push("content-type",r)}}if(B&&typeof B.read==="function"){B.read(0)}const p=n.bodyLength(B);I=p??I;if(I===null){I=t.contentLength}if(I===0&&!f){I=null}if(shouldSendContentLength(o)&&I>0&&t.contentLength!==null&&t.contentLength!==I){if(e[V]){n.errorRequest(e,t,new i);return false}process.emitWarning(new i)}const w=e[T];clearIdleSocketValidation(w);const abort=A=>{if(t.aborted||t.completed){return}n.errorRequest(e,t,A||new c);n.destroy(B);n.destroy(w,new E("aborted"))};try{t.onConnect(abort)}catch(A){n.errorRequest(e,t,A)}if(t.aborted){return false}if(o==="HEAD"){w[d]=true}if(u||o==="CONNECT"){w[d]=true}if(Q!=null){w[d]=Q}if(e[O]&&w[P]++>=e[O]){w[d]=true}if(h){w[y]=true}let m=`${o} ${a} HTTP/1.1\r\n`;if(typeof g==="string"){m+=`host: ${g}\r\n`}else{m+=e[F]}if(u){m+=`connection: upgrade\r\nupgrade: ${u}\r\n`}else if(e[L]&&!w[d]){m+="connection: keep-alive\r\n"}else{m+="connection: close\r\n"}if(Array.isArray(C)){for(let e=0;e{t.removeListener("error",onFinished)}));if(!g){const e=new c;queueMicrotask((()=>onFinished(e)))}};const onFinished=function(e){if(g){return}g=true;r(o.destroyed||o[k]&&A[w]<=1);o.off("drain",onDrain).off("error",onFinished);t.removeListener("data",onData).removeListener("end",onFinished).removeListener("close",onClose);if(!e){try{u.end()}catch(t){e=t}}u.destroy(e);if(e&&(e.code!=="UND_ERR_INFO"||e.message!=="reset")){n.destroy(t,e)}else{n.destroy(t)}};t.on("data",onData).on("end",onFinished).on("error",onFinished).on("close",onClose);if(t.resume){t.resume()}o.on("drain",onDrain).on("error",onFinished);if(t.errorEmitted??t.errored){setImmediate((()=>onFinished(t.errored)))}else if(t.endEmitted??t.readableEnded){setImmediate((()=>onFinished(null)))}if(t.closeEmitted??t.closed){setImmediate(onClose)}}function writeBuffer(e,t,A,s,o,i,a,c){try{if(!t){if(i===0){o.write(`${a}content-length: 0\r\n\r\n`,"latin1")}else{r(i===null,"no body must not have content length");o.write(`${a}\r\n`,"latin1")}}else if(n.isBuffer(t)){r(i===t.byteLength,"buffer body must have content length");o.cork();o.write(`${a}content-length: ${i}\r\n\r\n`,"latin1");o.write(t);o.uncork();s.onBodySent(t);if(!c&&s.reset!==false){o[d]=true}}s.onRequestSent();A[_]()}catch(t){e(t)}}async function writeBlob(e,t,A,n,s,o,a,c){r(o===t.size,"blob body must have content length");try{if(o!=null&&o!==t.size){throw new i}const e=Buffer.from(await t.arrayBuffer());s.cork();s.write(`${a}content-length: ${o}\r\n\r\n`,"latin1");s.write(e);s.uncork();n.onBodySent(e);n.onRequestSent();if(!c&&n.reset!==false){s[d]=true}A[_]()}catch(t){e(t)}}async function writeIterable(e,t,A,n,s,o,i,a){r(o!==0||A[w]===0,"iterator body cannot be pipelined");let c=null;function onDrain(){if(c){const e=c;c=null;e()}}const waitForDrain=()=>new Promise(((e,t)=>{r(c===null);if(s[U]){t(s[U])}else{c=e}}));s.on("close",onDrain).on("drain",onDrain);const l=new AsyncWriter({abort:e,socket:s,request:n,contentLength:o,client:A,expectsPayload:a,header:i});try{for await(const e of t){if(s[U]){throw s[U]}if(!l.write(e)){await waitForDrain()}}l.end()}catch(e){l.destroy(e)}finally{s.off("close",onDrain).off("drain",onDrain)}}class AsyncWriter{constructor({abort:e,socket:t,request:A,contentLength:r,client:n,expectsPayload:s,header:o}){this.socket=t;this.request=A;this.contentLength=r;this.client=n;this.bytesWritten=0;this.expectsPayload=s;this.header=o;this.abort=e;t[k]=true}write(e){const{socket:t,request:A,contentLength:r,client:n,bytesWritten:s,expectsPayload:o,header:a}=this;if(t[U]){throw t[U]}if(t.destroyed){return false}const c=Buffer.byteLength(e);if(!c){return true}if(r!==null&&s+c>r){if(n[V]){throw new i}process.emitWarning(new i)}t.cork();if(s===0){if(!o&&A.reset!==false){t[d]=true}if(r===null){t.write(`${a}transfer-encoding: chunked\r\n`,"latin1")}else{t.write(`${a}content-length: ${r}\r\n\r\n`,"latin1")}}if(r===null){t.write(`\r\n${c.toString(16)}\r\n`,"latin1")}this.bytesWritten+=c;const l=t.write(e);t.uncork();A.onBodySent(e);if(!l){if(t[p].timeout&&t[p].timeoutType===ue){if(t[p].timeout.refresh){t[p].timeout.refresh()}}}return l}end(){const{socket:e,contentLength:t,client:A,bytesWritten:r,expectsPayload:n,header:s,request:o}=this;o.onRequestSent();e[k]=false;if(e[U]){throw e[U]}if(e.destroyed){return}if(r===0){if(n){e.write(`${s}content-length: 0\r\n\r\n`,"latin1")}else{e.write(`${s}\r\n`,"latin1")}}else if(t===null){e.write("\r\n0\r\n\r\n","latin1")}if(t!==null&&r!==t){if(A[V]){throw new i}else{process.emitWarning(new i)}}if(e[p].timeout&&e[p].timeoutType===ue){if(e[p].timeout.refresh){e[p].timeout.refresh()}}A[_]()}destroy(e){const{socket:t,client:A,abort:n}=this;t[k]=false;if(e){r(A[w]<=1,"pipeline should only contain this request");n(e)}}}e.exports=connectH1},8788:(e,t,A)=>{"use strict";const r=A(4589);const{pipeline:n}=A(7075);const s=A(3440);const{RequestContentLengthMismatchError:o,RequestAbortedError:i,SocketError:a,InformationalError:c}=A(8707);const{kUrl:l,kReset:g,kClient:u,kRunning:h,kPending:E,kQueue:Q,kPendingIdx:B,kRunningIdx:C,kError:I,kSocket:d,kStrictContentLength:f,kOnError:p,kMaxConcurrentStreams:y,kHTTP2Session:w,kResume:m,kSize:D,kHTTPContext:k}=A(6443);const b=Symbol("open streams");let R;let S=false;let F;try{F=A(2467)}catch{F={constants:{}}}const{constants:{HTTP2_HEADER_AUTHORITY:N,HTTP2_HEADER_METHOD:M,HTTP2_HEADER_PATH:U,HTTP2_HEADER_SCHEME:L,HTTP2_HEADER_CONTENT_LENGTH:T,HTTP2_HEADER_EXPECT:v,HTTP2_HEADER_STATUS:Y}}=F;function parseH2Headers(e){const t=[];for(const[A,r]of Object.entries(e)){if(Array.isArray(r)){for(const e of r){t.push(Buffer.from(A),Buffer.from(e))}}else{t.push(Buffer.from(A),Buffer.from(r))}}return t}async function connectH2(e,t){e[d]=t;if(!S){S=true;process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"})}const A=F.connect(e[l],{createConnection:()=>t,peerMaxConcurrentStreams:e[y]});A[b]=0;A[u]=e;A[d]=t;s.addListener(A,"error",onHttp2SessionError);s.addListener(A,"frameError",onHttp2FrameError);s.addListener(A,"end",onHttp2SessionEnd);s.addListener(A,"goaway",onHTTP2GoAway);s.addListener(A,"close",(function(){const{[u]:e}=this;const{[d]:t}=e;const A=this[d][I]||this[I]||new a("closed",s.getSocketInfo(t));e[w]=null;if(e.destroyed){r(e[E]===0);const t=e[Q].splice(e[C]);for(let r=0;r{n=true}));return{version:"h2",defaultPipelining:Infinity,write(...t){return writeH2(e,...t)},resume(){resumeH2(e)},destroy(e,A){if(n){queueMicrotask(A)}else{t.destroy(e).on("close",A)}},get destroyed(){return t.destroyed},busy(){return false}}}function resumeH2(e){const t=e[d];if(t?.destroyed===false){if(e[D]===0&&e[y]===0){t.unref();e[w].unref()}else{t.ref();e[w].ref()}}}function onHttp2SessionError(e){r(e.code!=="ERR_TLS_CERT_ALTNAME_INVALID");this[d][I]=e;this[u][p](e)}function onHttp2FrameError(e,t,A){if(A===0){const A=new c(`HTTP/2: "frameError" received - type ${e}, code ${t}`);this[d][I]=A;this[u][p](A)}}function onHttp2SessionEnd(){const e=new a("other side closed",s.getSocketInfo(this[d]));this.destroy(e);s.destroy(this[d],e)}function onHTTP2GoAway(e){const t=this[I]||new a(`HTTP/2: "GOAWAY" frame received with code ${e}`,s.getSocketInfo(this));const A=this[u];A[d]=null;A[k]=null;if(this[w]!=null){this[w].destroy(t);this[w]=null}s.destroy(this[d],t);if(A[C]{if(t.aborted||t.completed){return}A=A||new i;s.errorRequest(e,t,A);if(k!=null){s.destroy(k,A)}s.destroy(y,A);e[Q][e[C]++]=null;e[m]()};try{t.onConnect(abort)}catch(A){s.errorRequest(e,t,A)}if(t.aborted){return false}if(a==="CONNECT"){n.ref();k=n.request(D,{endStream:false,signal:I});if(k.id&&!k.pending){t.onUpgrade(null,null,k);++n[b];e[Q][e[C]++]=null}else{k.once("ready",(()=>{t.onUpgrade(null,null,k);++n[b];e[Q][e[C]++]=null}))}k.once("close",(()=>{n[b]-=1;if(n[b]===0)n.unref()}));return true}D[U]=g;D[L]="https";const H=a==="PUT"||a==="POST"||a==="PATCH";if(y&&typeof y.read==="function"){y.read(0)}let x=s.bodyLength(y);if(s.isFormDataLike(y)){R??=A(4492).extractBody;const[e,t]=R(y);D["content-type"]=t;y=e.stream;x=e.length}if(x==null){x=t.contentLength}if(x===0||!H){x=null}if(shouldSendContentLength(a)&&x>0&&t.contentLength!=null&&t.contentLength!==x){if(e[f]){s.errorRequest(e,t,new o);return false}process.emitWarning(new o)}if(x!=null){r(y,"no body must not have content length");D[T]=`${x}`}n.ref();const G=a==="GET"||a==="HEAD"||y===null;if(E){D[v]="100-continue";k=n.request(D,{endStream:G,signal:I});k.once("continue",writeBodyH2)}else{k=n.request(D,{endStream:G,signal:I});writeBodyH2()}++n[b];k.once("response",(A=>{const{[Y]:r,...n}=A;t.onResponseStarted();if(t.aborted){const A=new i;s.errorRequest(e,t,A);s.destroy(k,A);return}if(t.onHeaders(Number(r),parseH2Headers(n),k.resume.bind(k),"")===false){k.pause()}k.on("data",(e=>{if(t.onData(e)===false){k.pause()}}))}));k.once("end",(()=>{if(k.state?.state==null||k.state.state<6){t.onComplete([])}if(n[b]===0){n.unref()}abort(new c("HTTP/2: stream half-closed (remote)"));e[Q][e[C]++]=null;e[B]=e[C];e[m]()}));k.once("close",(()=>{n[b]-=1;if(n[b]===0){n.unref()}}));k.once("error",(function(e){abort(e)}));k.once("frameError",((e,t)=>{abort(new c(`HTTP/2: "frameError" received - type ${e}, code ${t}`))}));return true;function writeBodyH2(){if(!y||x===0){writeBuffer(abort,k,null,e,t,e[d],x,H)}else if(s.isBuffer(y)){writeBuffer(abort,k,y,e,t,e[d],x,H)}else if(s.isBlobLike(y)){if(typeof y.stream==="function"){writeIterable(abort,k,y.stream(),e,t,e[d],x,H)}else{writeBlob(abort,k,y,e,t,e[d],x,H)}}else if(s.isStream(y)){writeStream(abort,e[d],H,k,y,e,t,x)}else if(s.isIterable(y)){writeIterable(abort,k,y,e,t,e[d],x,H)}else{r(false)}}}function writeBuffer(e,t,A,n,o,i,a,c){try{if(A!=null&&s.isBuffer(A)){r(a===A.byteLength,"buffer body must have content length");t.cork();t.write(A);t.uncork();t.end();o.onBodySent(A)}if(!c){i[g]=true}o.onRequestSent();n[m]()}catch(t){e(t)}}function writeStream(e,t,A,o,i,a,c,l){r(l!==0||a[h]===0,"stream body cannot be pipelined");const u=n(i,o,(r=>{if(r){s.destroy(u,r);e(r)}else{s.removeAllListeners(u);c.onRequestSent();if(!A){t[g]=true}a[m]()}}));s.addListener(u,"data",onPipeData);function onPipeData(e){c.onBodySent(e)}}async function writeBlob(e,t,A,n,s,i,a,c){r(a===A.size,"blob body must have content length");try{if(a!=null&&a!==A.size){throw new o}const e=Buffer.from(await A.arrayBuffer());t.cork();t.write(e);t.uncork();t.end();s.onBodySent(e);s.onRequestSent();if(!c){i[g]=true}n[m]()}catch(t){e(t)}}async function writeIterable(e,t,A,n,s,o,i,a){r(i!==0||n[h]===0,"iterator body cannot be pipelined");let c=null;function onDrain(){if(c){const e=c;c=null;e()}}const waitForDrain=()=>new Promise(((e,t)=>{r(c===null);if(o[I]){t(o[I])}else{c=e}}));t.on("close",onDrain).on("drain",onDrain);try{for await(const e of A){if(o[I]){throw o[I]}const A=t.write(e);s.onBodySent(e);if(!A){await waitForDrain()}}t.end();s.onRequestSent();if(!a){o[g]=true}n[m]()}catch(t){e(t)}finally{t.off("close",onDrain).off("drain",onDrain)}}e.exports=connectH2},3701:(e,t,A)=>{"use strict";const r=A(4589);const n=A(7030);const s=A(7067);const o=A(3440);const{channels:i}=A(2414);const a=A(4655);const c=A(1841);const{InvalidArgumentError:l,InformationalError:g,ClientDestroyedError:u}=A(8707);const h=A(9136);const{kUrl:E,kServerName:Q,kClient:B,kBusy:C,kConnect:I,kResuming:d,kRunning:f,kPending:p,kSize:y,kQueue:w,kConnected:m,kConnecting:D,kNeedDrain:k,kKeepAliveDefaultTimeout:b,kHostHeader:R,kPendingIdx:S,kRunningIdx:F,kError:N,kPipelining:M,kKeepAliveTimeoutValue:U,kMaxHeadersSize:L,kKeepAliveMaxTimeout:T,kKeepAliveTimeoutThreshold:v,kHeadersTimeout:Y,kBodyTimeout:H,kStrictContentLength:x,kConnector:G,kMaxRedirections:J,kMaxRequests:V,kCounter:O,kClose:P,kDestroy:W,kDispatch:q,kInterceptors:_,kLocalAddress:j,kMaxResponseSize:Z,kOnError:z,kHTTPContext:K,kMaxConcurrentStreams:X,kResume:$}=A(6443);const ee=A(637);const te=A(8788);let Ae=false;const re=Symbol("kClosedResolve");const noop=()=>{};function getPipelining(e){return e[M]??e[K]?.defaultPipelining??1}class Client extends c{constructor(e,{interceptors:t,maxHeaderSize:A,headersTimeout:r,socketTimeout:i,requestTimeout:a,connectTimeout:c,bodyTimeout:g,idleTimeout:u,keepAlive:B,keepAliveTimeout:C,maxKeepAliveTimeout:I,keepAliveMaxTimeout:f,keepAliveTimeoutThreshold:p,socketPath:y,pipelining:m,tls:D,strictContentLength:N,maxCachedSessions:O,maxRedirections:P,connect:W,maxRequestsPerClient:q,localAddress:ee,maxResponseSize:te,autoSelectFamily:se,autoSelectFamilyAttemptTimeout:oe,maxConcurrentStreams:ie,allowH2:ae,webSocket:ce}={}){super({webSocket:ce});if(B!==undefined){throw new l("unsupported keepAlive, use pipelining=0 instead")}if(i!==undefined){throw new l("unsupported socketTimeout, use headersTimeout & bodyTimeout instead")}if(a!==undefined){throw new l("unsupported requestTimeout, use headersTimeout & bodyTimeout instead")}if(u!==undefined){throw new l("unsupported idleTimeout, use keepAliveTimeout instead")}if(I!==undefined){throw new l("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead")}if(A!=null&&!Number.isFinite(A)){throw new l("invalid maxHeaderSize")}if(y!=null&&typeof y!=="string"){throw new l("invalid socketPath")}if(c!=null&&(!Number.isFinite(c)||c<0)){throw new l("invalid connectTimeout")}if(C!=null&&(!Number.isFinite(C)||C<=0)){throw new l("invalid keepAliveTimeout")}if(f!=null&&(!Number.isFinite(f)||f<=0)){throw new l("invalid keepAliveMaxTimeout")}if(p!=null&&!Number.isFinite(p)){throw new l("invalid keepAliveTimeoutThreshold")}if(r!=null&&(!Number.isInteger(r)||r<0)){throw new l("headersTimeout must be a positive integer or zero")}if(g!=null&&(!Number.isInteger(g)||g<0)){throw new l("bodyTimeout must be a positive integer or zero")}if(W!=null&&typeof W!=="function"&&typeof W!=="object"){throw new l("connect must be a function or an object")}if(P!=null&&(!Number.isInteger(P)||P<0)){throw new l("maxRedirections must be a positive number")}if(q!=null&&(!Number.isInteger(q)||q<0)){throw new l("maxRequestsPerClient must be a positive number")}if(ee!=null&&(typeof ee!=="string"||n.isIP(ee)===0)){throw new l("localAddress must be valid string IP address")}if(te!=null&&(!Number.isInteger(te)||te<-1)){throw new l("maxResponseSize must be a positive number")}if(oe!=null&&(!Number.isInteger(oe)||oe<-1)){throw new l("autoSelectFamilyAttemptTimeout must be a positive number")}if(ae!=null&&typeof ae!=="boolean"){throw new l("allowH2 must be a valid boolean value")}if(ie!=null&&(typeof ie!=="number"||ie<1)){throw new l("maxConcurrentStreams must be a positive integer, greater than 0")}if(typeof W!=="function"){W=h({...D,maxCachedSessions:O,allowH2:ae,socketPath:y,timeout:c,...se?{autoSelectFamily:se,autoSelectFamilyAttemptTimeout:oe}:undefined,...W})}if(t?.Client&&Array.isArray(t.Client)){this[_]=t.Client;if(!Ae){Ae=true;process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.",{code:"UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"})}}else{this[_]=[ne({maxRedirections:P})]}this[E]=o.parseOrigin(e);this[G]=W;this[M]=m!=null?m:1;this[L]=A||s.maxHeaderSize;this[b]=C==null?4e3:C;this[T]=f==null?6e5:f;this[v]=p==null?2e3:p;this[U]=this[b];this[Q]=null;this[j]=ee!=null?ee:null;this[d]=0;this[k]=0;this[R]=`host: ${this[E].hostname}${this[E].port?`:${this[E].port}`:""}\r\n`;this[H]=g!=null?g:3e5;this[Y]=r!=null?r:3e5;this[x]=N==null?true:N;this[J]=P;this[V]=q;this[re]=null;this[Z]=te>-1?te:-1;this[X]=ie!=null?ie:100;this[K]=null;this[w]=[];this[F]=0;this[S]=0;this[$]=e=>resume(this,e);this[z]=e=>onError(this,e)}get pipelining(){return this[M]}set pipelining(e){this[M]=e;this[$](true)}get[p](){return this[w].length-this[S]}get[f](){return this[S]-this[F]}get[y](){return this[w].length-this[F]}get[m](){return!!this[K]&&!this[D]&&!this[K].destroyed}get[C](){return Boolean(this[K]?.busy(null)||this[y]>=(getPipelining(this)||1)||this[p]>0)}[I](e){connect(this);this.once("connect",e)}[q](e,t){const A=e.origin||this[E].origin;const r=new a(A,e,t);this[w].push(r);if(this[d]){}else if(o.bodyLength(r.body)==null&&o.isIterable(r.body)){this[d]=1;queueMicrotask((()=>resume(this)))}else{this[$](true)}if(this[d]&&this[k]!==2&&this[C]){this[k]=2}return this[k]<2}async[P](){return new Promise((e=>{if(this[y]){this[re]=e}else{e(null)}}))}async[W](e){return new Promise((t=>{const A=this[w].splice(this[S]);for(let t=0;t{if(this[re]){this[re]();this[re]=null}t(null)};if(this[K]){this[K].destroy(e,callback);this[K]=null}else{queueMicrotask(callback)}this[$]()}))}}const ne=A(5092);function onError(e,t){if(e[f]===0&&t.code!=="UND_ERR_INFO"&&t.code!=="UND_ERR_SOCKET"){r(e[S]===e[F]);const A=e[w].splice(e[F]);for(let r=0;r{e[G]({host:t,hostname:A,protocol:s,port:a,servername:e[Q],localAddress:e[j]},((e,t)=>{if(e){n(e)}else{r(t)}}))}));if(e.destroyed){o.destroy(n.on("error",noop),new u);return}r(n);try{e[K]=n.alpnProtocol==="h2"?await te(e,n):await ee(e,n)}catch(e){n.destroy().on("error",noop);throw e}e[D]=false;n[O]=0;n[V]=e[V];n[B]=e;n[N]=null;if(i.connected.hasSubscribers){i.connected.publish({connectParams:{host:t,hostname:A,protocol:s,port:a,version:e[K]?.version,servername:e[Q],localAddress:e[j]},connector:e[G],socket:n})}e.emit("connect",e[E],[e])}catch(n){if(e.destroyed){return}e[D]=false;if(i.connectError.hasSubscribers){i.connectError.publish({connectParams:{host:t,hostname:A,protocol:s,port:a,version:e[K]?.version,servername:e[Q],localAddress:e[j]},connector:e[G],error:n})}if(n.code==="ERR_TLS_CERT_ALTNAME_INVALID"){r(e[f]===0);while(e[p]>0&&e[w][e[S]].servername===e[Q]){const t=e[w][e[S]++];o.errorRequest(e,t,n)}}else{onError(e,n)}e.emit("connectionError",e[E],[e],n)}e[$]()}function emitDrain(e){e[k]=0;e.emit("drain",e[E],[e])}function resume(e,t){if(e[d]===2){return}e[d]=2;_resume(e,t);e[d]=0;if(e[F]>256){e[w].splice(0,e[F]);e[S]-=e[F];e[F]=0}}function _resume(e,t){while(true){if(e.destroyed){r(e[p]===0);return}if(e[re]&&!e[y]){e[re]();e[re]=null;return}if(e[K]){e[K].resume()}if(e[C]){e[k]=2}else if(e[k]===2){if(t){e[k]=1;queueMicrotask((()=>emitDrain(e)))}else{emitDrain(e)}continue}if(e[p]===0){return}if(e[f]>=(getPipelining(e)||1)){return}const A=e[w][e[S]];if(e[E].protocol==="https:"&&e[Q]!==A.servername){if(e[f]>0){return}e[Q]=A.servername;e[K]?.destroy(new g("servername changed"),(()=>{e[K]=null;resume(e)}))}if(e[D]){return}if(!e[K]){connect(e);return}if(e[K].destroyed){return}if(e[K].busy(A)){return}if(!A.aborted&&e[K].write(A)){e[S]++}else{e[w].splice(e[S],1)}}}e.exports=Client},1841:(e,t,A)=>{"use strict";const r=A(883);const{ClientDestroyedError:n,ClientClosedError:s,InvalidArgumentError:o}=A(8707);const{kDestroy:i,kClose:a,kClosed:c,kDestroyed:l,kDispatch:g,kInterceptors:u}=A(6443);const h=Symbol("onDestroyed");const E=Symbol("onClosed");const Q=Symbol("Intercepted Dispatch");const B=Symbol("webSocketOptions");class DispatcherBase extends r{constructor(e){super();this[l]=false;this[h]=null;this[c]=false;this[E]=[];this[B]=e?.webSocket??{}}get webSocketOptions(){return{maxFragments:this[B].maxFragments??131072,maxPayloadSize:this[B].maxPayloadSize??128*1024*1024}}get destroyed(){return this[l]}get closed(){return this[c]}get interceptors(){return this[u]}set interceptors(e){if(e){for(let t=e.length-1;t>=0;t--){const e=this[u][t];if(typeof e!=="function"){throw new o("interceptor must be an function")}}}this[u]=e}close(e){if(e===undefined){return new Promise(((e,t)=>{this.close(((A,r)=>A?t(A):e(r)))}))}if(typeof e!=="function"){throw new o("invalid callback")}if(this[l]){queueMicrotask((()=>e(new n,null)));return}if(this[c]){if(this[E]){this[E].push(e)}else{queueMicrotask((()=>e(null,null)))}return}this[c]=true;this[E].push(e);const onClosed=()=>{const e=this[E];this[E]=null;for(let t=0;tthis.destroy())).then((()=>{queueMicrotask(onClosed)}))}destroy(e,t){if(typeof e==="function"){t=e;e=null}if(t===undefined){return new Promise(((t,A)=>{this.destroy(e,((e,r)=>e?A(e):t(r)))}))}if(typeof t!=="function"){throw new o("invalid callback")}if(this[l]){if(this[h]){this[h].push(t)}else{queueMicrotask((()=>t(null,null)))}return}if(!e){e=new n}this[l]=true;this[h]=this[h]||[];this[h].push(t);const onDestroyed=()=>{const e=this[h];this[h]=null;for(let t=0;t{queueMicrotask(onDestroyed)}))}[Q](e,t){if(!this[u]||this[u].length===0){this[Q]=this[g];return this[g](e,t)}let A=this[g].bind(this);for(let e=this[u].length-1;e>=0;e--){A=this[u][e](A)}this[Q]=A;return A(e,t)}dispatch(e,t){if(!t||typeof t!=="object"){throw new o("handler must be an object")}try{if(!e||typeof e!=="object"){throw new o("opts must be an object.")}if(this[l]||this[h]){throw new n}if(this[c]){throw new s}return this[Q](e,t)}catch(e){if(typeof t.onError!=="function"){throw new o("invalid onError method")}t.onError(e);return false}}}e.exports=DispatcherBase},883:(e,t,A)=>{"use strict";const r=A(8474);class Dispatcher extends r{dispatch(){throw new Error("not implemented")}close(){throw new Error("not implemented")}destroy(){throw new Error("not implemented")}compose(...e){const t=Array.isArray(e[0])?e[0]:e;let A=this.dispatch.bind(this);for(const e of t){if(e==null){continue}if(typeof e!=="function"){throw new TypeError(`invalid interceptor, expected function received ${typeof e}`)}A=e(A);if(A==null||typeof A!=="function"||A.length!==2){throw new TypeError("invalid interceptor")}}return new ComposedDispatcher(this,A)}}class ComposedDispatcher extends Dispatcher{#e=null;#t=null;constructor(e,t){super();this.#e=e;this.#t=t}dispatch(...e){this.#t(...e)}close(...e){return this.#e.close(...e)}destroy(...e){return this.#e.destroy(...e)}}e.exports=Dispatcher},3137:(e,t,A)=>{"use strict";const r=A(1841);const{kClose:n,kDestroy:s,kClosed:o,kDestroyed:i,kDispatch:a,kNoProxyAgent:c,kHttpProxyAgent:l,kHttpsProxyAgent:g}=A(6443);const u=A(6672);const h=A(7405);const E={"http:":80,"https:":443};let Q=false;class EnvHttpProxyAgent extends r{#A=null;#r=null;#n=null;constructor(e={}){super();this.#n=e;if(!Q){Q=true;process.emitWarning("EnvHttpProxyAgent is experimental, expect them to change at any time.",{code:"UNDICI-EHPA"})}const{httpProxy:t,httpsProxy:A,noProxy:r,...n}=e;this[c]=new h(n);const s=t??process.env.http_proxy??process.env.HTTP_PROXY;if(s){this[l]=new u({...n,uri:s})}else{this[l]=this[c]}const o=A??process.env.https_proxy??process.env.HTTPS_PROXY;if(o){this[g]=new u({...n,uri:o})}else{this[g]=this[l]}this.#s()}[a](e,t){const A=new URL(e.origin);const r=this.#o(A);return r.dispatch(e,t)}async[n](){await this[c].close();if(!this[l][o]){await this[l].close()}if(!this[g][o]){await this[g].close()}}async[s](e){await this[c].destroy(e);if(!this[l][i]){await this[l].destroy(e)}if(!this[g][i]){await this[g].destroy(e)}}#o(e){let{protocol:t,host:A,port:r}=e;A=A.replace(/:\d*$/,"").toLowerCase();r=Number.parseInt(r,10)||E[t]||0;if(!this.#i(A,r)){return this[c]}if(t==="https:"){return this[g]}return this[l]}#i(e,t){if(this.#a){this.#s()}if(this.#r.length===0){return true}if(this.#A==="*"){return false}for(let A=0;A{"use strict";const t=2048;const A=t-1;class FixedCircularBuffer{constructor(){this.bottom=0;this.top=0;this.list=new Array(t);this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&A)===this.bottom}push(e){this.list[this.top]=e;this.top=this.top+1&A}shift(){const e=this.list[this.bottom];if(e===undefined)return null;this.list[this.bottom]=undefined;this.bottom=this.bottom+1&A;return e}}e.exports=class FixedQueue{constructor(){this.head=this.tail=new FixedCircularBuffer}isEmpty(){return this.head.isEmpty()}push(e){if(this.head.isFull()){this.head=this.head.next=new FixedCircularBuffer}this.head.push(e)}shift(){const e=this.tail;const t=e.shift();if(e.isEmpty()&&e.next!==null){this.tail=e.next}return t}}},2128:(e,t,A)=>{"use strict";const r=A(1841);const n=A(4660);const{kConnected:s,kSize:o,kRunning:i,kPending:a,kQueued:c,kBusy:l,kFree:g,kUrl:u,kClose:h,kDestroy:E,kDispatch:Q}=A(6443);const B=A(3246);const C=Symbol("clients");const I=Symbol("needDrain");const d=Symbol("queue");const f=Symbol("closed resolve");const p=Symbol("onDrain");const y=Symbol("onConnect");const w=Symbol("onDisconnect");const m=Symbol("onConnectionError");const D=Symbol("get dispatcher");const k=Symbol("add client");const b=Symbol("remove client");const R=Symbol("stats");class PoolBase extends r{constructor(e){super(e);this[d]=new n;this[C]=[];this[c]=0;const t=this;this[p]=function onDrain(e,A){const r=t[d];let n=false;while(!n){const e=r.shift();if(!e){break}t[c]--;n=!this.dispatch(e.opts,e.handler)}this[I]=n;if(!this[I]&&t[I]){t[I]=false;t.emit("drain",e,[t,...A])}if(t[f]&&r.isEmpty()){Promise.all(t[C].map((e=>e.close()))).then(t[f])}};this[y]=(e,A)=>{t.emit("connect",e,[t,...A])};this[w]=(e,A,r)=>{t.emit("disconnect",e,[t,...A],r)};this[m]=(e,A,r)=>{t.emit("connectionError",e,[t,...A],r)};this[R]=new B(this)}get[l](){return this[I]}get[s](){return this[C].filter((e=>e[s])).length}get[g](){return this[C].filter((e=>e[s]&&!e[I])).length}get[a](){let e=this[c];for(const{[a]:t}of this[C]){e+=t}return e}get[i](){let e=0;for(const{[i]:t}of this[C]){e+=t}return e}get[o](){let e=this[c];for(const{[o]:t}of this[C]){e+=t}return e}get stats(){return this[R]}async[h](){if(this[d].isEmpty()){await Promise.all(this[C].map((e=>e.close())))}else{await new Promise((e=>{this[f]=e}))}}async[E](e){while(true){const t=this[d].shift();if(!t){break}t.handler.onError(e)}await Promise.all(this[C].map((t=>t.destroy(e))))}[Q](e,t){const A=this[D]();if(!A){this[I]=true;this[d].push({opts:e,handler:t});this[c]++}else if(!A.dispatch(e,t)){A[I]=true;this[I]=!this[D]()}return!this[I]}[k](e){e.on("drain",this[p]).on("connect",this[y]).on("disconnect",this[w]).on("connectionError",this[m]);this[C].push(e);if(this[I]){queueMicrotask((()=>{if(this[I]){this[p](e[u],[this,e])}}))}return this}[b](e){e.close((()=>{const t=this[C].indexOf(e);if(t!==-1){this[C].splice(t,1)}}));this[I]=this[C].some((e=>!e[I]&&e.closed!==true&&e.destroyed!==true))}}e.exports={PoolBase:PoolBase,kClients:C,kNeedDrain:I,kAddClient:k,kRemoveClient:b,kGetDispatcher:D}},3246:(e,t,A)=>{const{kFree:r,kConnected:n,kPending:s,kQueued:o,kRunning:i,kSize:a}=A(6443);const c=Symbol("pool");class PoolStats{constructor(e){this[c]=e}get connected(){return this[c][n]}get free(){return this[c][r]}get pending(){return this[c][s]}get queued(){return this[c][o]}get running(){return this[c][i]}get size(){return this[c][a]}}e.exports=PoolStats},628:(e,t,A)=>{"use strict";const{PoolBase:r,kClients:n,kNeedDrain:s,kAddClient:o,kGetDispatcher:i}=A(2128);const a=A(3701);const{InvalidArgumentError:c}=A(8707);const l=A(3440);const{kUrl:g,kInterceptors:u}=A(6443);const h=A(9136);const E=Symbol("options");const Q=Symbol("connections");const B=Symbol("factory");function defaultFactory(e,t){return new a(e,t)}class Pool extends r{constructor(e,{connections:t,factory:A=defaultFactory,connect:r,connectTimeout:s,tls:o,maxCachedSessions:i,socketPath:a,autoSelectFamily:C,autoSelectFamilyAttemptTimeout:I,allowH2:d,...f}={}){if(t!=null&&(!Number.isFinite(t)||t<0)){throw new c("invalid connections")}if(typeof A!=="function"){throw new c("factory must be a function.")}if(r!=null&&typeof r!=="function"&&typeof r!=="object"){throw new c("connect must be a function or an object")}if(typeof r!=="function"){r=h({...o,maxCachedSessions:i,allowH2:d,socketPath:a,timeout:s,...C?{autoSelectFamily:C,autoSelectFamilyAttemptTimeout:I}:undefined,...r})}super(f);this[u]=f.interceptors?.Pool&&Array.isArray(f.interceptors.Pool)?f.interceptors.Pool:[];this[Q]=t||null;this[g]=l.parseOrigin(e);this[E]={...l.deepClone(f),connect:r,allowH2:d};this[E].interceptors=f.interceptors?{...f.interceptors}:undefined;this[B]=A;this.on("connectionError",((e,t,A)=>{for(const e of t){const t=this[n].indexOf(e);if(t!==-1){this[n].splice(t,1)}}}))}[i](){for(const e of this[n]){if(!e[s]){return e}}if(!this[Q]||this[n].length{"use strict";const{kProxy:r,kClose:n,kDestroy:s,kDispatch:o,kInterceptors:i}=A(6443);const{URL:a}=A(3136);const c=A(7405);const l=A(628);const g=A(1841);const{InvalidArgumentError:u,RequestAbortedError:h,SecureProxyConnectionError:E}=A(8707);const Q=A(9136);const B=A(3701);const C=Symbol("proxy agent");const I=Symbol("proxy client");const d=Symbol("proxy headers");const f=Symbol("request tls settings");const p=Symbol("proxy tls settings");const y=Symbol("connect endpoint function");const w=Symbol("tunnel proxy");function defaultProtocolPort(e){return e==="https:"?443:80}function defaultFactory(e,t){return new l(e,t)}const noop=()=>{};function defaultAgentFactory(e,t){if(t.connections===1){return new B(e,t)}return new l(e,t)}class Http1ProxyWrapper extends g{#l;constructor(e,{headers:t={},connect:A,factory:r}){super();if(!e){throw new u("Proxy URL is mandatory")}this[d]=t;if(r){this.#l=r(e,{connect:A})}else{this.#l=new B(e,{connect:A})}}[o](e,t){const A=t.onHeaders;t.onHeaders=function(e,r,n){if(e===407){if(typeof t.onError==="function"){t.onError(new u("Proxy Authentication Required (407)"))}return}if(A)A.call(this,e,r,n)};const{origin:r,path:n="/",headers:s={}}=e;e.path=r+n;if(!("host"in s)&&!("Host"in s)){const{host:e}=new a(r);s.host=e}e.headers={...this[d],...s};return this.#l[o](e,t)}async[n](){return this.#l.close()}async[s](e){return this.#l.destroy(e)}}class ProxyAgent extends g{constructor(e){super();if(!e||typeof e==="object"&&!(e instanceof a)&&!e.uri){throw new u("Proxy uri is mandatory")}const{clientFactory:t=defaultFactory}=e;if(typeof t!=="function"){throw new u("Proxy opts.clientFactory must be a function.")}const{proxyTunnel:A=true}=e;const n=this.#g(e);const{href:s,origin:o,port:l,protocol:g,username:B,password:m,hostname:D}=n;this[r]={uri:s,protocol:g};this[i]=e.interceptors?.ProxyAgent&&Array.isArray(e.interceptors.ProxyAgent)?e.interceptors.ProxyAgent:[];this[f]=e.requestTls;this[p]=e.proxyTls;this[d]=e.headers||{};this[w]=A;if(e.auth&&e.token){throw new u("opts.auth cannot be used in combination with opts.token")}else if(e.auth){this[d]["proxy-authorization"]=`Basic ${e.auth}`}else if(e.token){this[d]["proxy-authorization"]=e.token}else if(B&&m){this[d]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(B)}:${decodeURIComponent(m)}`).toString("base64")}`}const k=Q({...e.proxyTls});this[y]=Q({...e.requestTls});const b=e.factory||defaultAgentFactory;const factory=(e,t)=>{const{protocol:A}=new a(e);if(!this[w]&&A==="http:"&&this[r].protocol==="http:"){return new Http1ProxyWrapper(this[r].uri,{headers:this[d],connect:k,factory:b})}return b(e,t)};this[I]=t(n,{connect:k});this[C]=new c({...e,factory:factory,connect:async(e,t)=>{let A=e.host;if(!e.port){A+=`:${defaultProtocolPort(e.protocol)}`}try{const{socket:r,statusCode:n}=await this[I].connect({origin:o,port:l,path:A,signal:e.signal,headers:{...this[d],host:e.host},servername:this[p]?.servername||D});if(n!==200){r.on("error",noop).destroy();t(new h(`Proxy response (${n}) !== 200 when HTTP Tunneling`))}if(e.protocol!=="https:"){t(null,r);return}let s;if(this[f]){s=this[f].servername}else{s=e.servername}this[y]({...e,servername:s,httpSocket:r},t)}catch(e){if(e.code==="ERR_TLS_CERT_ALTNAME_INVALID"){t(new E(e))}else{t(e)}}}})}dispatch(e,t){const A=buildHeaders(e.headers);throwIfProxyAuthIsSent(A);if(A&&!("host"in A)&&!("Host"in A)){const{host:t}=new a(e.origin);A.host=t}return this[C].dispatch({...e,headers:A},t)}#g(e){if(typeof e==="string"){return new a(e)}else if(e instanceof a){return e}else{return new a(e.uri)}}async[n](){await this[C].close();await this[I].close()}async[s](){await this[C].destroy();await this[I].destroy()}}function buildHeaders(e){if(Array.isArray(e)){const t={};for(let A=0;Ae.toLowerCase()==="proxy-authorization"));if(t){throw new u("Proxy-Authorization should be sent in ProxyAgent constructor")}}e.exports=ProxyAgent},50:(e,t,A)=>{"use strict";const r=A(883);const n=A(7816);class RetryAgent extends r{#u=null;#h=null;constructor(e,t={}){super(t);this.#u=e;this.#h=t}dispatch(e,t){const A=new n({...e,retryOptions:this.#h},{dispatch:this.#u.dispatch.bind(this.#u),handler:t});return this.#u.dispatch(e,A)}close(){return this.#u.close()}destroy(){return this.#u.destroy()}}e.exports=RetryAgent},2581:(e,t,A)=>{"use strict";const r=Symbol.for("undici.globalDispatcher.1");const{InvalidArgumentError:n}=A(8707);const s=A(7405);if(getGlobalDispatcher()===undefined){setGlobalDispatcher(new s)}function setGlobalDispatcher(e){if(!e||typeof e.dispatch!=="function"){throw new n("Argument agent must implement Agent")}Object.defineProperty(globalThis,r,{value:e,writable:true,enumerable:false,configurable:false})}function getGlobalDispatcher(){return globalThis[r]}e.exports={setGlobalDispatcher:setGlobalDispatcher,getGlobalDispatcher:getGlobalDispatcher}},8155:e=>{"use strict";e.exports=class DecoratorHandler{#E;constructor(e){if(typeof e!=="object"||e===null){throw new TypeError("handler must be an object")}this.#E=e}onConnect(...e){return this.#E.onConnect?.(...e)}onError(...e){return this.#E.onError?.(...e)}onUpgrade(...e){return this.#E.onUpgrade?.(...e)}onResponseStarted(...e){return this.#E.onResponseStarted?.(...e)}onHeaders(...e){return this.#E.onHeaders?.(...e)}onData(...e){return this.#E.onData?.(...e)}onComplete(...e){return this.#E.onComplete?.(...e)}onBodySent(...e){return this.#E.onBodySent?.(...e)}}},8754:(e,t,A)=>{"use strict";const r=A(3440);const{kBodyUsed:n}=A(6443);const s=A(4589);const{InvalidArgumentError:o}=A(8707);const i=A(8474);const a=[300,301,302,303,307,308];const c=Symbol("body");class BodyAsyncIterable{constructor(e){this[c]=e;this[n]=false}async*[Symbol.asyncIterator](){s(!this[n],"disturbed");this[n]=true;yield*this[c]}}class RedirectHandler{constructor(e,t,A,a){if(t!=null&&(!Number.isInteger(t)||t<0)){throw new o("maxRedirections must be a positive number")}r.validateHandler(a,A.method,A.upgrade);this.dispatch=e;this.location=null;this.abort=null;this.opts={...A,maxRedirections:0};this.maxRedirections=t;this.handler=a;this.history=[];this.redirectionLimitReached=false;if(r.isStream(this.opts.body)){if(r.bodyLength(this.opts.body)===0){this.opts.body.on("data",(function(){s(false)}))}if(typeof this.opts.body.readableDidRead!=="boolean"){this.opts.body[n]=false;i.prototype.on.call(this.opts.body,"data",(function(){this[n]=true}))}}else if(this.opts.body&&typeof this.opts.body.pipeTo==="function"){this.opts.body=new BodyAsyncIterable(this.opts.body)}else if(this.opts.body&&typeof this.opts.body!=="string"&&!ArrayBuffer.isView(this.opts.body)&&r.isIterable(this.opts.body)){this.opts.body=new BodyAsyncIterable(this.opts.body)}}onConnect(e){this.abort=e;this.handler.onConnect(e,{history:this.history})}onUpgrade(e,t,A){this.handler.onUpgrade(e,t,A)}onError(e){this.handler.onError(e)}onHeaders(e,t,A,n){this.location=this.history.length>=this.maxRedirections||r.isDisturbed(this.opts.body)?null:parseLocation(e,t);if(this.opts.throwOnMaxRedirect&&this.history.length>=this.maxRedirections){if(this.request){this.request.abort(new Error("max redirects"))}this.redirectionLimitReached=true;this.abort(new Error("max redirects"));return}if(this.opts.origin){this.history.push(new URL(this.opts.path,this.opts.origin))}if(!this.location){return this.handler.onHeaders(e,t,A,n)}const{origin:s,pathname:o,search:i}=r.parseURL(new URL(this.location,this.opts.origin&&new URL(this.opts.path,this.opts.origin)));const a=i?`${o}${i}`:o;this.opts.headers=cleanRequestHeaders(this.opts.headers,e===303,this.opts.origin!==s);this.opts.path=a;this.opts.origin=s;this.opts.maxRedirections=0;this.opts.query=null;if(e===303&&this.opts.method!=="HEAD"){this.opts.method="GET";this.opts.body=null}}onData(e){if(this.location){}else{return this.handler.onData(e)}}onComplete(e){if(this.location){this.location=null;this.abort=null;this.dispatch(this.opts,this)}else{this.handler.onComplete(e)}}onBodySent(e){if(this.handler.onBodySent){this.handler.onBodySent(e)}}}function parseLocation(e,t){if(a.indexOf(e)===-1){return null}for(let e=0;e{"use strict";const r=A(4589);const{kRetryHandlerDefaultRetry:n}=A(6443);const{RequestRetryError:s}=A(8707);const{isDisturbed:o,parseHeaders:i,parseRangeHeader:a,wrapRequestBody:c}=A(3440);function calculateRetryAfterHeader(e){const t=Date.now();return new Date(e).getTime()-t}function validatePartialResponseContentLength(e,t,A,r){const n=e["content-length"];if(n==null){return null}if(!Number.isFinite(t.start)||!Number.isFinite(t.end)){return null}const o=Number(n);const i=t.end-t.start+1;if(!Number.isFinite(o)||o!==i){return new s("Content-Length mismatch",A,{headers:e,data:{count:r}})}return null}class RetryHandler{constructor(e,t){const{retryOptions:A,...r}=e;const{retry:s,maxRetries:o,maxTimeout:i,minTimeout:a,timeoutFactor:l,methods:g,errorCodes:u,retryAfter:h,statusCodes:E}=A??{};this.dispatch=t.dispatch;this.handler=t.handler;this.opts={...r,body:c(e.body)};this.abort=null;this.aborted=false;this.retryOpts={retry:s??RetryHandler[n],retryAfter:h??true,maxTimeout:i??30*1e3,minTimeout:a??500,timeoutFactor:l??2,maxRetries:o??5,methods:g??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:E??[500,502,503,504,429],errorCodes:u??["ECONNRESET","ECONNREFUSED","ENOTFOUND","ENETDOWN","ENETUNREACH","EHOSTDOWN","EHOSTUNREACH","EPIPE","UND_ERR_SOCKET"]};this.retryCount=0;this.retryCountCheckpoint=0;this.start=0;this.end=null;this.etag=null;this.resume=null;this.handler.onConnect((e=>{this.aborted=true;if(this.abort){this.abort(e)}else{this.reason=e}}))}onRequestSent(){if(this.handler.onRequestSent){this.handler.onRequestSent()}}onUpgrade(e,t,A){if(this.handler.onUpgrade){this.handler.onUpgrade(e,t,A)}}onConnect(e){if(this.aborted){e(this.reason)}else{this.abort=e}}onBodySent(e){if(this.handler.onBodySent)return this.handler.onBodySent(e)}static[n](e,{state:t,opts:A},r){const{statusCode:n,code:s,headers:o}=e;const{method:i,retryOptions:a}=A;const{maxRetries:c,minTimeout:l,maxTimeout:g,timeoutFactor:u,statusCodes:h,errorCodes:E,methods:Q}=a;const{counter:B}=t;if(s&&s!=="UND_ERR_REQ_RETRY"&&!E.includes(s)){r(e);return}if(Array.isArray(Q)&&!Q.includes(i)){r(e);return}if(n!=null&&Array.isArray(h)&&!h.includes(n)){r(e);return}if(B>c){r(e);return}let C=o?.["retry-after"];if(C){C=Number(C);C=Number.isNaN(C)?calculateRetryAfterHeader(C):C*1e3}const I=C>0?Math.min(C,g):Math.min(l*u**(B-1),g);setTimeout((()=>r(null)),I)}onHeaders(e,t,A,n){const o=i(t);this.retryCount+=1;if(e>=300){if(this.retryOpts.statusCodes.includes(e)===false){return this.handler.onHeaders(e,t,A,n)}else{this.abort(new s("Request failed",e,{headers:o,data:{count:this.retryCount}}));return false}}if(this.resume!=null){this.resume=null;if(e!==206&&(this.start>0||e!==200)){this.abort(new s("server does not support the range header and the payload was partially consumed",e,{headers:o,data:{count:this.retryCount}}));return false}const t=a(o["content-range"]);if(!t){this.abort(new s("Content-Range mismatch",e,{headers:o,data:{count:this.retryCount}}));return false}if(this.etag!=null&&this.etag!==o.etag){this.abort(new s("ETag mismatch",e,{headers:o,data:{count:this.retryCount}}));return false}const n=validatePartialResponseContentLength(o,t,e,this.retryCount);if(n!=null){this.abort(n);return false}const{start:i,size:c,end:l=c-1}=t;r(this.start===i,"content-range mismatch");r(this.end==null||this.end===l,"content-range mismatch");this.resume=A;return true}if(this.end==null){if(e===206){const s=a(o["content-range"]);if(s==null){return this.handler.onHeaders(e,t,A,n)}const i=validatePartialResponseContentLength(o,s,e,this.retryCount);if(i!=null){this.abort(i);return false}const{start:c,size:l,end:g=l-1}=s;r(c!=null&&Number.isFinite(c),"content-range mismatch");r(g!=null&&Number.isFinite(g),"invalid content-length");this.start=c;this.end=g}if(this.end==null){const e=o["content-length"];this.end=e!=null?Number(e)-1:null}r(Number.isFinite(this.start));r(this.end==null||Number.isFinite(this.end),"invalid content-length");this.resume=A;this.etag=o.etag!=null?o.etag:null;if(this.etag!=null&&this.etag.startsWith("W/")){this.etag=null}return this.handler.onHeaders(e,t,A,n)}const c=new s("Request failed",e,{headers:o,data:{count:this.retryCount}});this.abort(c);return false}onData(e){this.start+=e.length;return this.handler.onData(e)}onComplete(e){this.retryCount=0;return this.handler.onComplete(e)}onError(e){if(this.aborted||o(this.opts.body)){return this.handler.onError(e)}if(this.retryCount-this.retryCountCheckpoint>0){this.retryCount=this.retryCountCheckpoint+(this.retryCount-this.retryCountCheckpoint)}else{this.retryCount+=1}this.retryOpts.retry(e,{state:{counter:this.retryCount},opts:{retryOptions:this.retryOpts,...this.opts}},onRetry.bind(this));function onRetry(e){if(e!=null||this.aborted||o(this.opts.body)){return this.handler.onError(e)}if(this.start!==0){const e={range:`bytes=${this.start}-${this.end??""}`};if(this.etag!=null){e["if-match"]=this.etag}this.opts={...this.opts,headers:{...this.opts.headers,...e}}}try{this.retryCountCheckpoint=this.retryCount;this.dispatch(this.opts,this)}catch(e){this.handler.onError(e)}}}}e.exports=RetryHandler},379:(e,t,A)=>{"use strict";const{isIP:r}=A(7030);const{lookup:n}=A(610);const s=A(8155);const{InvalidArgumentError:o,InformationalError:i}=A(8707);const a=Math.pow(2,31)-1;class DNSInstance{#Q=0;#B=0;#C=new Map;dualStack=true;affinity=null;lookup=null;pick=null;constructor(e){this.#Q=e.maxTTL;this.#B=e.maxItems;this.dualStack=e.dualStack;this.affinity=e.affinity;this.lookup=e.lookup??this.#I;this.pick=e.pick??this.#d}get full(){return this.#C.size===this.#B}runLookup(e,t,A){const r=this.#C.get(e.hostname);if(r==null&&this.full){A(null,e.origin);return}const n={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...t.dns,maxTTL:this.#Q,maxItems:this.#B};if(r==null){this.lookup(e,n,((t,r)=>{if(t||r==null||r.length===0){A(t??new i("No DNS entries found"));return}this.setRecords(e,r);const s=this.#C.get(e.hostname);const o=this.pick(e,s,n.affinity);let a;if(typeof o.port==="number"){a=`:${o.port}`}else if(e.port!==""){a=`:${e.port}`}else{a=""}A(null,`${e.protocol}//${o.family===6?`[${o.address}]`:o.address}${a}`)}))}else{const s=this.pick(e,r,n.affinity);if(s==null){this.#C.delete(e.hostname);this.runLookup(e,t,A);return}let o;if(typeof s.port==="number"){o=`:${s.port}`}else if(e.port!==""){o=`:${e.port}`}else{o=""}A(null,`${e.protocol}//${s.family===6?`[${s.address}]`:s.address}${o}`)}}#I(e,t,A){n(e.hostname,{all:true,family:this.dualStack===false?this.affinity:0,order:"ipv4first"},((e,t)=>{if(e){return A(e)}const r=new Map;for(const e of t){r.set(`${e.address}:${e.family}`,e)}A(null,r.values())}))}#d(e,t,A){let r=null;const{records:n,offset:s}=t;let o;if(this.dualStack){if(A==null){if(s==null||s===a){t.offset=0;A=4}else{t.offset++;A=(t.offset&1)===1?6:4}}if(n[A]!=null&&n[A].ips.length>0){o=n[A]}else{o=n[A===4?6:4]}}else{o=n[A]}if(o==null||o.ips.length===0){return r}if(o.offset==null||o.offset===a){o.offset=0}else{o.offset++}const i=o.offset%o.ips.length;r=o.ips[i]??null;if(r==null){return r}if(Date.now()-r.timestamp>r.ttl){o.ips.splice(i,1);return this.pick(e,t,A)}return r}setRecords(e,t){const A=Date.now();const r={records:{4:null,6:null}};for(const e of t){e.timestamp=A;if(typeof e.ttl==="number"){e.ttl=Math.min(e.ttl,this.#Q)}else{e.ttl=this.#Q}const t=r.records[e.family]??{ips:[]};t.ips.push(e);r.records[e.family]=t}this.#C.set(e.hostname,r)}getHandler(e,t){return new DNSDispatchHandler(this,e,t)}}class DNSDispatchHandler extends s{#f=null;#n=null;#t=null;#E=null;#p=null;constructor(e,{origin:t,handler:A,dispatch:r},n){super(A);this.#p=t;this.#E=A;this.#n={...n};this.#f=e;this.#t=r}onError(e){switch(e.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#f.dualStack){this.#f.runLookup(this.#p,this.#n,((e,t)=>{if(e){return this.#E.onError(e)}const A={...this.#n,origin:t};this.#t(A,this)}));return}this.#E.onError(e);return}case"ENOTFOUND":this.#f.deleteRecord(this.#p);default:this.#E.onError(e);break}}}e.exports=e=>{if(e?.maxTTL!=null&&(typeof e?.maxTTL!=="number"||e?.maxTTL<0)){throw new o("Invalid maxTTL. Must be a positive number")}if(e?.maxItems!=null&&(typeof e?.maxItems!=="number"||e?.maxItems<1)){throw new o("Invalid maxItems. Must be a positive number and greater than zero")}if(e?.affinity!=null&&e?.affinity!==4&&e?.affinity!==6){throw new o("Invalid affinity. Must be either 4 or 6")}if(e?.dualStack!=null&&typeof e?.dualStack!=="boolean"){throw new o("Invalid dualStack. Must be a boolean")}if(e?.lookup!=null&&typeof e?.lookup!=="function"){throw new o("Invalid lookup. Must be a function")}if(e?.pick!=null&&typeof e?.pick!=="function"){throw new o("Invalid pick. Must be a function")}const t=e?.dualStack??true;let A;if(t){A=e?.affinity??null}else{A=e?.affinity??4}const n={maxTTL:e?.maxTTL??1e4,lookup:e?.lookup??null,pick:e?.pick??null,dualStack:t,affinity:A,maxItems:e?.maxItems??Infinity};const s=new DNSInstance(n);return e=>function dnsInterceptor(t,A){const n=t.origin.constructor===URL?t.origin:new URL(t.origin);if(r(n.hostname)!==0){return e(t,A)}s.runLookup(n,t,((r,o)=>{if(r){return A.onError(r)}let i=null;i={...t,servername:n.hostname,origin:o,headers:{host:n.hostname,...t.headers}};e(i,s.getHandler({origin:n,dispatch:e,handler:A},t))}));return true}}},8060:(e,t,A)=>{"use strict";const r=A(3440);const{InvalidArgumentError:n,RequestAbortedError:s}=A(8707);const o=A(8155);class DumpHandler extends o{#y=1024*1024;#w=null;#m=false;#D=false;#k=0;#b=null;#E=null;constructor({maxSize:e},t){super(t);if(e!=null&&(!Number.isFinite(e)||e<1)){throw new n("maxSize must be a number greater than 0")}this.#y=e??this.#y;this.#E=t}onConnect(e){this.#w=e;this.#E.onConnect(this.#R.bind(this))}#R(e){this.#D=true;this.#b=e}onHeaders(e,t,A,n){const o=r.parseHeaders(t);const i=o["content-length"];if(i!=null&&i>this.#y){throw new s(`Response size (${i}) larger than maxSize (${this.#y})`)}if(this.#D){return true}return this.#E.onHeaders(e,t,A,n)}onError(e){if(this.#m){return}e=this.#b??e;this.#E.onError(e)}onData(e){this.#k=this.#k+e.length;if(this.#k>=this.#y){this.#m=true;if(this.#D){this.#E.onError(this.#b)}else{this.#E.onComplete([])}}return true}onComplete(e){if(this.#m){return}if(this.#D){this.#E.onError(this.reason);return}this.#E.onComplete(e)}}function createDumpInterceptor({maxSize:e}={maxSize:1024*1024}){return t=>function Intercept(A,r){const{dumpMaxSize:n=e}=A;const s=new DumpHandler({maxSize:n},r);return t(A,s)}}e.exports=createDumpInterceptor},5092:(e,t,A)=>{"use strict";const r=A(8754);function createRedirectInterceptor({maxRedirections:e}){return t=>function Intercept(A,n){const{maxRedirections:s=e}=A;if(!s){return t(A,n)}const o=new r(t,s,A,n);A={...A,maxRedirections:0};return t(A,o)}}e.exports=createRedirectInterceptor},1514:(e,t,A)=>{"use strict";const r=A(8754);e.exports=e=>{const t=e?.maxRedirections;return e=>function redirectInterceptor(A,n){const{maxRedirections:s=t,...o}=A;if(!s){return e(A,n)}const i=new r(e,s,A,n);return e(o,i)}}},2026:(e,t,A)=>{"use strict";const r=A(7816);e.exports=e=>t=>function retryInterceptor(A,n){return t(A,new r({...A,retryOptions:{...e,...A.retryOptions}},{handler:n,dispatch:t}))}},2824:(e,t,A)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.SPECIAL_HEADERS=t.HEADER_STATE=t.MINOR=t.MAJOR=t.CONNECTION_TOKEN_CHARS=t.HEADER_CHARS=t.TOKEN=t.STRICT_TOKEN=t.HEX=t.URL_CHAR=t.STRICT_URL_CHAR=t.USERINFO_CHARS=t.MARK=t.ALPHANUM=t.NUM=t.HEX_MAP=t.NUM_MAP=t.ALPHA=t.FINISH=t.H_METHOD_MAP=t.METHOD_MAP=t.METHODS_RTSP=t.METHODS_ICE=t.METHODS_HTTP=t.METHODS=t.LENIENT_FLAGS=t.FLAGS=t.TYPE=t.ERROR=void 0;const r=A(172);var n;(function(e){e[e["OK"]=0]="OK";e[e["INTERNAL"]=1]="INTERNAL";e[e["STRICT"]=2]="STRICT";e[e["LF_EXPECTED"]=3]="LF_EXPECTED";e[e["UNEXPECTED_CONTENT_LENGTH"]=4]="UNEXPECTED_CONTENT_LENGTH";e[e["CLOSED_CONNECTION"]=5]="CLOSED_CONNECTION";e[e["INVALID_METHOD"]=6]="INVALID_METHOD";e[e["INVALID_URL"]=7]="INVALID_URL";e[e["INVALID_CONSTANT"]=8]="INVALID_CONSTANT";e[e["INVALID_VERSION"]=9]="INVALID_VERSION";e[e["INVALID_HEADER_TOKEN"]=10]="INVALID_HEADER_TOKEN";e[e["INVALID_CONTENT_LENGTH"]=11]="INVALID_CONTENT_LENGTH";e[e["INVALID_CHUNK_SIZE"]=12]="INVALID_CHUNK_SIZE";e[e["INVALID_STATUS"]=13]="INVALID_STATUS";e[e["INVALID_EOF_STATE"]=14]="INVALID_EOF_STATE";e[e["INVALID_TRANSFER_ENCODING"]=15]="INVALID_TRANSFER_ENCODING";e[e["CB_MESSAGE_BEGIN"]=16]="CB_MESSAGE_BEGIN";e[e["CB_HEADERS_COMPLETE"]=17]="CB_HEADERS_COMPLETE";e[e["CB_MESSAGE_COMPLETE"]=18]="CB_MESSAGE_COMPLETE";e[e["CB_CHUNK_HEADER"]=19]="CB_CHUNK_HEADER";e[e["CB_CHUNK_COMPLETE"]=20]="CB_CHUNK_COMPLETE";e[e["PAUSED"]=21]="PAUSED";e[e["PAUSED_UPGRADE"]=22]="PAUSED_UPGRADE";e[e["PAUSED_H2_UPGRADE"]=23]="PAUSED_H2_UPGRADE";e[e["USER"]=24]="USER"})(n=t.ERROR||(t.ERROR={}));var s;(function(e){e[e["BOTH"]=0]="BOTH";e[e["REQUEST"]=1]="REQUEST";e[e["RESPONSE"]=2]="RESPONSE"})(s=t.TYPE||(t.TYPE={}));var o;(function(e){e[e["CONNECTION_KEEP_ALIVE"]=1]="CONNECTION_KEEP_ALIVE";e[e["CONNECTION_CLOSE"]=2]="CONNECTION_CLOSE";e[e["CONNECTION_UPGRADE"]=4]="CONNECTION_UPGRADE";e[e["CHUNKED"]=8]="CHUNKED";e[e["UPGRADE"]=16]="UPGRADE";e[e["CONTENT_LENGTH"]=32]="CONTENT_LENGTH";e[e["SKIPBODY"]=64]="SKIPBODY";e[e["TRAILING"]=128]="TRAILING";e[e["TRANSFER_ENCODING"]=512]="TRANSFER_ENCODING"})(o=t.FLAGS||(t.FLAGS={}));var i;(function(e){e[e["HEADERS"]=1]="HEADERS";e[e["CHUNKED_LENGTH"]=2]="CHUNKED_LENGTH";e[e["KEEP_ALIVE"]=4]="KEEP_ALIVE"})(i=t.LENIENT_FLAGS||(t.LENIENT_FLAGS={}));var a;(function(e){e[e["DELETE"]=0]="DELETE";e[e["GET"]=1]="GET";e[e["HEAD"]=2]="HEAD";e[e["POST"]=3]="POST";e[e["PUT"]=4]="PUT";e[e["CONNECT"]=5]="CONNECT";e[e["OPTIONS"]=6]="OPTIONS";e[e["TRACE"]=7]="TRACE";e[e["COPY"]=8]="COPY";e[e["LOCK"]=9]="LOCK";e[e["MKCOL"]=10]="MKCOL";e[e["MOVE"]=11]="MOVE";e[e["PROPFIND"]=12]="PROPFIND";e[e["PROPPATCH"]=13]="PROPPATCH";e[e["SEARCH"]=14]="SEARCH";e[e["UNLOCK"]=15]="UNLOCK";e[e["BIND"]=16]="BIND";e[e["REBIND"]=17]="REBIND";e[e["UNBIND"]=18]="UNBIND";e[e["ACL"]=19]="ACL";e[e["REPORT"]=20]="REPORT";e[e["MKACTIVITY"]=21]="MKACTIVITY";e[e["CHECKOUT"]=22]="CHECKOUT";e[e["MERGE"]=23]="MERGE";e[e["M-SEARCH"]=24]="M-SEARCH";e[e["NOTIFY"]=25]="NOTIFY";e[e["SUBSCRIBE"]=26]="SUBSCRIBE";e[e["UNSUBSCRIBE"]=27]="UNSUBSCRIBE";e[e["PATCH"]=28]="PATCH";e[e["PURGE"]=29]="PURGE";e[e["MKCALENDAR"]=30]="MKCALENDAR";e[e["LINK"]=31]="LINK";e[e["UNLINK"]=32]="UNLINK";e[e["SOURCE"]=33]="SOURCE";e[e["PRI"]=34]="PRI";e[e["DESCRIBE"]=35]="DESCRIBE";e[e["ANNOUNCE"]=36]="ANNOUNCE";e[e["SETUP"]=37]="SETUP";e[e["PLAY"]=38]="PLAY";e[e["PAUSE"]=39]="PAUSE";e[e["TEARDOWN"]=40]="TEARDOWN";e[e["GET_PARAMETER"]=41]="GET_PARAMETER";e[e["SET_PARAMETER"]=42]="SET_PARAMETER";e[e["REDIRECT"]=43]="REDIRECT";e[e["RECORD"]=44]="RECORD";e[e["FLUSH"]=45]="FLUSH"})(a=t.METHODS||(t.METHODS={}));t.METHODS_HTTP=[a.DELETE,a.GET,a.HEAD,a.POST,a.PUT,a.CONNECT,a.OPTIONS,a.TRACE,a.COPY,a.LOCK,a.MKCOL,a.MOVE,a.PROPFIND,a.PROPPATCH,a.SEARCH,a.UNLOCK,a.BIND,a.REBIND,a.UNBIND,a.ACL,a.REPORT,a.MKACTIVITY,a.CHECKOUT,a.MERGE,a["M-SEARCH"],a.NOTIFY,a.SUBSCRIBE,a.UNSUBSCRIBE,a.PATCH,a.PURGE,a.MKCALENDAR,a.LINK,a.UNLINK,a.PRI,a.SOURCE];t.METHODS_ICE=[a.SOURCE];t.METHODS_RTSP=[a.OPTIONS,a.DESCRIBE,a.ANNOUNCE,a.SETUP,a.PLAY,a.PAUSE,a.TEARDOWN,a.GET_PARAMETER,a.SET_PARAMETER,a.REDIRECT,a.RECORD,a.FLUSH,a.GET,a.POST];t.METHOD_MAP=r.enumToMap(a);t.H_METHOD_MAP={};Object.keys(t.METHOD_MAP).forEach((e=>{if(/^H/.test(e)){t.H_METHOD_MAP[e]=t.METHOD_MAP[e]}}));var c;(function(e){e[e["SAFE"]=0]="SAFE";e[e["SAFE_WITH_CB"]=1]="SAFE_WITH_CB";e[e["UNSAFE"]=2]="UNSAFE"})(c=t.FINISH||(t.FINISH={}));t.ALPHA=[];for(let e="A".charCodeAt(0);e<="Z".charCodeAt(0);e++){t.ALPHA.push(String.fromCharCode(e));t.ALPHA.push(String.fromCharCode(e+32))}t.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};t.HEX_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15};t.NUM=["0","1","2","3","4","5","6","7","8","9"];t.ALPHANUM=t.ALPHA.concat(t.NUM);t.MARK=["-","_",".","!","~","*","'","(",")"];t.USERINFO_CHARS=t.ALPHANUM.concat(t.MARK).concat(["%",";",":","&","=","+","$",","]);t.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(t.ALPHANUM);t.URL_CHAR=t.STRICT_URL_CHAR.concat(["\t","\f"]);for(let e=128;e<=255;e++){t.URL_CHAR.push(e)}t.HEX=t.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);t.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(t.ALPHANUM);t.TOKEN=t.STRICT_TOKEN.concat([" "]);t.HEADER_CHARS=["\t"];for(let e=32;e<=255;e++){if(e!==127){t.HEADER_CHARS.push(e)}}t.CONNECTION_TOKEN_CHARS=t.HEADER_CHARS.filter((e=>e!==44));t.MAJOR=t.NUM_MAP;t.MINOR=t.MAJOR;var l;(function(e){e[e["GENERAL"]=0]="GENERAL";e[e["CONNECTION"]=1]="CONNECTION";e[e["CONTENT_LENGTH"]=2]="CONTENT_LENGTH";e[e["TRANSFER_ENCODING"]=3]="TRANSFER_ENCODING";e[e["UPGRADE"]=4]="UPGRADE";e[e["CONNECTION_KEEP_ALIVE"]=5]="CONNECTION_KEEP_ALIVE";e[e["CONNECTION_CLOSE"]=6]="CONNECTION_CLOSE";e[e["CONNECTION_UPGRADE"]=7]="CONNECTION_UPGRADE";e[e["TRANSFER_ENCODING_CHUNKED"]=8]="TRANSFER_ENCODING_CHUNKED"})(l=t.HEADER_STATE||(t.HEADER_STATE={}));t.SPECIAL_HEADERS={connection:l.CONNECTION,"content-length":l.CONTENT_LENGTH,"proxy-connection":l.CONNECTION,"transfer-encoding":l.TRANSFER_ENCODING,upgrade:l.UPGRADE}},3870:(e,t,A)=>{"use strict";const{Buffer:r}=A(4573);e.exports=r.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv","base64")},3434:(e,t,A)=>{"use strict";const{Buffer:r}=A(4573);e.exports=r.from("AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==","base64")},172:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.enumToMap=void 0;function enumToMap(e){const t={};Object.keys(e).forEach((A=>{const r=e[A];if(typeof r==="number"){t[A]=r}}));return t}t.enumToMap=enumToMap},7501:(e,t,A)=>{"use strict";const{kClients:r}=A(6443);const n=A(7405);const{kAgent:s,kMockAgentSet:o,kMockAgentGet:i,kDispatches:a,kIsMockActive:c,kNetConnect:l,kGetNetConnect:g,kOptions:u,kFactory:h}=A(1117);const E=A(7365);const Q=A(4004);const{matchValue:B,buildMockOptions:C}=A(3397);const{InvalidArgumentError:I,UndiciError:d}=A(8707);const f=A(883);const p=A(1529);const y=A(6142);class MockAgent extends f{constructor(e){super(e);this[l]=true;this[c]=true;if(e?.agent&&typeof e.agent.dispatch!=="function"){throw new I("Argument opts.agent must implement Agent")}const t=e?.agent?e.agent:new n(e);this[s]=t;this[r]=t[r];this[u]=C(e)}get(e){let t=this[i](e);if(!t){t=this[h](e);this[o](e,t)}return t}dispatch(e,t){this.get(e.origin);return this[s].dispatch(e,t)}async close(){await this[s].close();this[r].clear()}deactivate(){this[c]=false}activate(){this[c]=true}enableNetConnect(e){if(typeof e==="string"||typeof e==="function"||e instanceof RegExp){if(Array.isArray(this[l])){this[l].push(e)}else{this[l]=[e]}}else if(typeof e==="undefined"){this[l]=true}else{throw new I("Unsupported matcher. Must be one of String|Function|RegExp.")}}disableNetConnect(){this[l]=false}get isMockActive(){return this[c]}[o](e,t){this[r].set(e,t)}[h](e){const t=Object.assign({agent:this},this[u]);return this[u]&&this[u].connections===1?new E(e,t):new Q(e,t)}[i](e){const t=this[r].get(e);if(t){return t}if(typeof e!=="string"){const t=this[h]("http://localhost:9999");this[o](e,t);return t}for(const[t,A]of Array.from(this[r])){if(A&&typeof t!=="string"&&B(t,e)){const t=this[h](e);this[o](e,t);t[a]=A[a];return t}}}[g](){return this[l]}pendingInterceptors(){const e=this[r];return Array.from(e.entries()).flatMap((([e,t])=>t[a].map((t=>({...t,origin:e}))))).filter((({pending:e})=>e))}assertNoPendingInterceptors({pendingInterceptorsFormatter:e=new y}={}){const t=this.pendingInterceptors();if(t.length===0){return}const A=new p("interceptor","interceptors").pluralize(t.length);throw new d(`\n${A.count} ${A.noun} ${A.is} pending:\n\n${e.format(t)}\n`.trim())}}e.exports=MockAgent},7365:(e,t,A)=>{"use strict";const{promisify:r}=A(7975);const n=A(3701);const{buildMockDispatch:s}=A(3397);const{kDispatches:o,kMockAgent:i,kClose:a,kOriginalClose:c,kOrigin:l,kOriginalDispatch:g,kConnected:u}=A(1117);const{MockInterceptor:h}=A(1511);const E=A(6443);const{InvalidArgumentError:Q}=A(8707);class MockClient extends n{constructor(e,t){super(e,t);if(!t||!t.agent||typeof t.agent.dispatch!=="function"){throw new Q("Argument opts.agent must implement Agent")}this[i]=t.agent;this[l]=e;this[o]=[];this[u]=1;this[g]=this.dispatch;this[c]=this.close.bind(this);this.dispatch=s.call(this);this.close=this[a]}get[E.kConnected](){return this[u]}intercept(e){return new h(e,this[o])}async[a](){await r(this[c])();this[u]=0;this[i][E.kClients].delete(this[l])}}e.exports=MockClient},2429:(e,t,A)=>{"use strict";const{UndiciError:r}=A(8707);const n=Symbol.for("undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED");class MockNotMatchedError extends r{constructor(e){super(e);Error.captureStackTrace(this,MockNotMatchedError);this.name="MockNotMatchedError";this.message=e||"The request does not match any registered mock dispatches";this.code="UND_MOCK_ERR_MOCK_NOT_MATCHED"}static[Symbol.hasInstance](e){return e&&e[n]===true}[n]=true}e.exports={MockNotMatchedError:MockNotMatchedError}},1511:(e,t,A)=>{"use strict";const{getResponseData:r,buildKey:n,addMockDispatch:s}=A(3397);const{kDispatches:o,kDispatchKey:i,kDefaultHeaders:a,kDefaultTrailers:c,kContentLength:l,kMockDispatch:g}=A(1117);const{InvalidArgumentError:u}=A(8707);const{buildURL:h}=A(3440);class MockScope{constructor(e){this[g]=e}delay(e){if(typeof e!=="number"||!Number.isInteger(e)||e<=0){throw new u("waitInMs must be a valid integer > 0")}this[g].delay=e;return this}persist(){this[g].persist=true;return this}times(e){if(typeof e!=="number"||!Number.isInteger(e)||e<=0){throw new u("repeatTimes must be a valid integer > 0")}this[g].times=e;return this}}class MockInterceptor{constructor(e,t){if(typeof e!=="object"){throw new u("opts must be an object")}if(typeof e.path==="undefined"){throw new u("opts.path must be defined")}if(typeof e.method==="undefined"){e.method="GET"}if(typeof e.path==="string"){if(e.query){e.path=h(e.path,e.query)}else{const t=new URL(e.path,"data://");e.path=t.pathname+t.search}}if(typeof e.method==="string"){e.method=e.method.toUpperCase()}this[i]=n(e);this[o]=t;this[a]={};this[c]={};this[l]=false}createMockScopeDispatchData({statusCode:e,data:t,responseOptions:A}){const n=r(t);const s=this[l]?{"content-length":n.length}:{};const o={...this[a],...s,...A.headers};const i={...this[c],...A.trailers};return{statusCode:e,data:t,headers:o,trailers:i}}validateReplyParameters(e){if(typeof e.statusCode==="undefined"){throw new u("statusCode must be defined")}if(typeof e.responseOptions!=="object"||e.responseOptions===null){throw new u("responseOptions must be an object")}}reply(e){if(typeof e==="function"){const wrappedDefaultsCallback=t=>{const A=e(t);if(typeof A!=="object"||A===null){throw new u("reply options callback must return an object")}const r={data:"",responseOptions:{},...A};this.validateReplyParameters(r);return{...this.createMockScopeDispatchData(r)}};const t=s(this[o],this[i],wrappedDefaultsCallback);return new MockScope(t)}const t={statusCode:e,data:arguments[1]===undefined?"":arguments[1],responseOptions:arguments[2]===undefined?{}:arguments[2]};this.validateReplyParameters(t);const A=this.createMockScopeDispatchData(t);const r=s(this[o],this[i],A);return new MockScope(r)}replyWithError(e){if(typeof e==="undefined"){throw new u("error must be defined")}const t=s(this[o],this[i],{error:e});return new MockScope(t)}defaultReplyHeaders(e){if(typeof e==="undefined"){throw new u("headers must be defined")}this[a]=e;return this}defaultReplyTrailers(e){if(typeof e==="undefined"){throw new u("trailers must be defined")}this[c]=e;return this}replyContentLength(){this[l]=true;return this}}e.exports.MockInterceptor=MockInterceptor;e.exports.MockScope=MockScope},4004:(e,t,A)=>{"use strict";const{promisify:r}=A(7975);const n=A(628);const{buildMockDispatch:s}=A(3397);const{kDispatches:o,kMockAgent:i,kClose:a,kOriginalClose:c,kOrigin:l,kOriginalDispatch:g,kConnected:u}=A(1117);const{MockInterceptor:h}=A(1511);const E=A(6443);const{InvalidArgumentError:Q}=A(8707);class MockPool extends n{constructor(e,t){super(e,t);if(!t||!t.agent||typeof t.agent.dispatch!=="function"){throw new Q("Argument opts.agent must implement Agent")}this[i]=t.agent;this[l]=e;this[o]=[];this[u]=1;this[g]=this.dispatch;this[c]=this.close.bind(this);this.dispatch=s.call(this);this.close=this[a]}get[E.kConnected](){return this[u]}intercept(e){return new h(e,this[o])}async[a](){await r(this[c])();this[u]=0;this[i][E.kClients].delete(this[l])}}e.exports=MockPool},1117:e=>{"use strict";e.exports={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected")}},3397:(e,t,A)=>{"use strict";const{MockNotMatchedError:r}=A(2429);const{kDispatches:n,kMockAgent:s,kOriginalDispatch:o,kOrigin:i,kGetNetConnect:a}=A(1117);const{buildURL:c}=A(3440);const{STATUS_CODES:l}=A(7067);const{types:{isPromise:g}}=A(7975);function matchValue(e,t){if(typeof e==="string"){return e===t}if(e instanceof RegExp){return e.test(t)}if(typeof e==="function"){return e(t)===true}return false}function lowerCaseEntries(e){return Object.fromEntries(Object.entries(e).map((([e,t])=>[e.toLocaleLowerCase(),t])))}function getHeaderByName(e,t){if(Array.isArray(e)){for(let A=0;A!e)).filter((({path:e})=>matchValue(safeUrl(e),n)));if(s.length===0){throw new r(`Mock dispatch not matched for path '${n}'`)}s=s.filter((({method:e})=>matchValue(e,t.method)));if(s.length===0){throw new r(`Mock dispatch not matched for method '${t.method}' on path '${n}'`)}s=s.filter((({body:e})=>typeof e!=="undefined"?matchValue(e,t.body):true));if(s.length===0){throw new r(`Mock dispatch not matched for body '${t.body}' on path '${n}'`)}s=s.filter((e=>matchHeaders(e,t.headers)));if(s.length===0){const e=typeof t.headers==="object"?JSON.stringify(t.headers):t.headers;throw new r(`Mock dispatch not matched for headers '${e}' on path '${n}'`)}return s[0]}function addMockDispatch(e,t,A){const r={timesInvoked:0,times:1,persist:false,consumed:false};const n=typeof A==="function"?{callback:A}:{...A};const s={...r,...t,pending:true,data:{error:null,...n}};e.push(s);return s}function deleteMockDispatch(e,t){const A=e.findIndex((e=>{if(!e.consumed){return false}return matchKey(e,t)}));if(A!==-1){e.splice(A,1)}}function buildKey(e){const{path:t,method:A,body:r,headers:n,query:s}=e;return{path:t,method:A,body:r,headers:n,query:s}}function generateKeyValues(e){const t=Object.keys(e);const A=[];for(let r=0;r=E;r.pending=h0){setTimeout((()=>{handleReply(this[n])}),l)}else{handleReply(this[n])}function handleReply(r,n=o){const c=Array.isArray(e.headers)?buildHeadersFromArray(e.headers):e.headers;const l=typeof n==="function"?n({...e,headers:c}):n;if(g(l)){l.then((e=>handleReply(r,e)));return}const u=getResponseData(l);const h=generateKeyValues(i);const E=generateKeyValues(a);t.onConnect?.((e=>t.onError(e)),null);t.onHeaders?.(s,h,resume,getStatusText(s));t.onData?.(Buffer.from(u));t.onComplete?.(E);deleteMockDispatch(r,A)}function resume(){}return true}function buildMockDispatch(){const e=this[s];const t=this[i];const A=this[o];return function dispatch(n,s){if(e.isMockActive){try{mockDispatch.call(this,n,s)}catch(o){if(o instanceof r){const i=e[a]();if(i===false){throw new r(`${o.message}: subsequent request to origin ${t} was not allowed (net.connect disabled)`)}if(checkNetConnect(i,t)){A.call(this,n,s)}else{throw new r(`${o.message}: subsequent request to origin ${t} was not allowed (net.connect is not enabled for this origin)`)}}else{throw o}}}else{A.call(this,n,s)}}}function checkNetConnect(e,t){const A=new URL(t);if(e===true){return true}else if(Array.isArray(e)&&e.some((e=>matchValue(e,A.host)))){return true}return false}function buildMockOptions(e){if(e){const{agent:t,...A}=e;return A}}e.exports={getResponseData:getResponseData,getMockDispatch:getMockDispatch,addMockDispatch:addMockDispatch,deleteMockDispatch:deleteMockDispatch,buildKey:buildKey,generateKeyValues:generateKeyValues,matchValue:matchValue,getResponse:getResponse,getStatusText:getStatusText,mockDispatch:mockDispatch,buildMockDispatch:buildMockDispatch,checkNetConnect:checkNetConnect,buildMockOptions:buildMockOptions,getHeaderByName:getHeaderByName,buildHeadersFromArray:buildHeadersFromArray}},6142:(e,t,A)=>{"use strict";const{Transform:r}=A(7075);const{Console:n}=A(7540);const s=process.versions.icu?"✅":"Y ";const o=process.versions.icu?"❌":"N ";e.exports=class PendingInterceptorsFormatter{constructor({disableColors:e}={}){this.transform=new r({transform(e,t,A){A(null,e)}});this.logger=new n({stdout:this.transform,inspectOptions:{colors:!e&&!process.env.CI}})}format(e){const t=e.map((({method:e,path:t,data:{statusCode:A},persist:r,times:n,timesInvoked:i,origin:a})=>({Method:e,Origin:a,Path:t,"Status code":A,Persistent:r?s:o,Invocations:i,Remaining:r?Infinity:n-i})));this.logger.table(t);return this.transform.read().toString()}}},1529:e=>{"use strict";const t={pronoun:"it",is:"is",was:"was",this:"this"};const A={pronoun:"they",is:"are",was:"were",this:"these"};e.exports=class Pluralizer{constructor(e,t){this.singular=e;this.plural=t}pluralize(e){const r=e===1;const n=r?t:A;const s=r?this.singular:this.plural;return{...n,count:e,noun:s}}}},6603:e=>{"use strict";let t=0;const A=1e3;const r=(A>>1)-1;let n;const s=Symbol("kFastTimer");const o=[];const i=-2;const a=-1;const c=0;const l=1;function onTick(){t+=r;let e=0;let A=o.length;while(e=n._idleStart+n._idleTimeout){n._state=a;n._idleStart=-1;n._onTimeout(n._timerArg)}if(n._state===a){n._state=i;if(--A!==0){o[e]=o[A]}}else{++e}}o.length=A;if(o.length!==0){refreshTimeout()}}function refreshTimeout(){if(n){n.refresh()}else{clearTimeout(n);n=setTimeout(onTick,r);if(n.unref){n.unref()}}}class FastTimer{[s]=true;_state=i;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(e,t,A){this._onTimeout=e;this._idleTimeout=t;this._timerArg=A;this.refresh()}refresh(){if(this._state===i){o.push(this)}if(!n||o.length===1){refreshTimeout()}this._state=c}clear(){this._state=a;this._idleStart=-1}}e.exports={setTimeout(e,t,r){return t<=A?setTimeout(e,t,r):new FastTimer(e,t,r)},clearTimeout(e){if(e[s]){e.clear()}else{clearTimeout(e)}},setFastTimeout(e,t,A){return new FastTimer(e,t,A)},clearFastTimeout(e){e.clear()},now(){return t},tick(e=0){t+=e-A+1;onTick();onTick()},reset(){t=0;o.length=0;clearTimeout(n);n=null},kFastTimer:s}},9634:(e,t,A)=>{"use strict";const{kConstruct:r}=A(109);const{urlEquals:n,getFieldValues:s}=A(6798);const{kEnumerableProperty:o,isDisturbed:i}=A(3440);const{webidl:a}=A(5893);const{Response:c,cloneResponse:l,fromInnerResponse:g}=A(9051);const{Request:u,fromInnerRequest:h}=A(9967);const{kState:E}=A(3627);const{fetching:Q}=A(4398);const{urlIsHttpHttpsScheme:B,createDeferredPromise:C,readAllBytes:I}=A(3168);const d=A(4589);class Cache{#S;constructor(){if(arguments[0]!==r){a.illegalConstructor()}a.util.markAsUncloneable(this);this.#S=arguments[1]}async match(e,t={}){a.brandCheck(this,Cache);const A="Cache.match";a.argumentLengthCheck(arguments,1,A);e=a.converters.RequestInfo(e,A,"request");t=a.converters.CacheQueryOptions(t,A,"options");const r=this.#F(e,t,1);if(r.length===0){return}return r[0]}async matchAll(e=undefined,t={}){a.brandCheck(this,Cache);const A="Cache.matchAll";if(e!==undefined)e=a.converters.RequestInfo(e,A,"request");t=a.converters.CacheQueryOptions(t,A,"options");return this.#F(e,t)}async add(e){a.brandCheck(this,Cache);const t="Cache.add";a.argumentLengthCheck(arguments,1,t);e=a.converters.RequestInfo(e,t,"request");const A=[e];const r=this.addAll(A);return await r}async addAll(e){a.brandCheck(this,Cache);const t="Cache.addAll";a.argumentLengthCheck(arguments,1,t);const A=[];const r=[];for(let A of e){if(A===undefined){throw a.errors.conversionFailed({prefix:t,argument:"Argument 1",types:["undefined is not allowed"]})}A=a.converters.RequestInfo(A);if(typeof A==="string"){continue}const e=A[E];if(!B(e.url)||e.method!=="GET"){throw a.errors.exception({header:t,message:"Expected http/s scheme when method is not GET."})}}const n=[];for(const o of e){const e=new u(o)[E];if(!B(e.url)){throw a.errors.exception({header:t,message:"Expected http/s scheme."})}e.initiator="fetch";e.destination="subresource";r.push(e);const i=C();n.push(Q({request:e,processResponse(e){if(e.type==="error"||e.status===206||e.status<200||e.status>299){i.reject(a.errors.exception({header:"Cache.addAll",message:"Received an invalid status code or the request failed."}))}else if(e.headersList.contains("vary")){const t=s(e.headersList.get("vary"));for(const e of t){if(e==="*"){i.reject(a.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(const e of n){e.abort()}return}}}},processResponseEndOfBody(e){if(e.aborted){i.reject(new DOMException("aborted","AbortError"));return}i.resolve(e)}}));A.push(i.promise)}const o=Promise.all(A);const i=await o;const c=[];let l=0;for(const e of i){const t={type:"put",request:r[l],response:e};c.push(t);l++}const g=C();let h=null;try{this.#N(c)}catch(e){h=e}queueMicrotask((()=>{if(h===null){g.resolve(undefined)}else{g.reject(h)}}));return g.promise}async put(e,t){a.brandCheck(this,Cache);const A="Cache.put";a.argumentLengthCheck(arguments,2,A);e=a.converters.RequestInfo(e,A,"request");t=a.converters.Response(t,A,"response");let r=null;if(e instanceof u){r=e[E]}else{r=new u(e)[E]}if(!B(r.url)||r.method!=="GET"){throw a.errors.exception({header:A,message:"Expected an http/s scheme when method is not GET"})}const n=t[E];if(n.status===206){throw a.errors.exception({header:A,message:"Got 206 status"})}if(n.headersList.contains("vary")){const e=s(n.headersList.get("vary"));for(const t of e){if(t==="*"){throw a.errors.exception({header:A,message:"Got * vary field value"})}}}if(n.body&&(i(n.body.stream)||n.body.stream.locked)){throw a.errors.exception({header:A,message:"Response body is locked or disturbed"})}const o=l(n);const c=C();if(n.body!=null){const e=n.body.stream;const t=e.getReader();I(t).then(c.resolve,c.reject)}else{c.resolve(undefined)}const g=[];const h={type:"put",request:r,response:o};g.push(h);const Q=await c.promise;if(o.body!=null){o.body.source=Q}const d=C();let f=null;try{this.#N(g)}catch(e){f=e}queueMicrotask((()=>{if(f===null){d.resolve()}else{d.reject(f)}}));return d.promise}async delete(e,t={}){a.brandCheck(this,Cache);const A="Cache.delete";a.argumentLengthCheck(arguments,1,A);e=a.converters.RequestInfo(e,A,"request");t=a.converters.CacheQueryOptions(t,A,"options");let r=null;if(e instanceof u){r=e[E];if(r.method!=="GET"&&!t.ignoreMethod){return false}}else{d(typeof e==="string");r=new u(e)[E]}const n=[];const s={type:"delete",request:r,options:t};n.push(s);const o=C();let i=null;let c;try{c=this.#N(n)}catch(e){i=e}queueMicrotask((()=>{if(i===null){o.resolve(!!c?.length)}else{o.reject(i)}}));return o.promise}async keys(e=undefined,t={}){a.brandCheck(this,Cache);const A="Cache.keys";if(e!==undefined)e=a.converters.RequestInfo(e,A,"request");t=a.converters.CacheQueryOptions(t,A,"options");let r=null;if(e!==undefined){if(e instanceof u){r=e[E];if(r.method!=="GET"&&!t.ignoreMethod){return[]}}else if(typeof e==="string"){r=new u(e)[E]}}const n=C();const s=[];if(e===undefined){for(const e of this.#S){s.push(e[0])}}else{const e=this.#M(r,t);for(const t of e){s.push(t[0])}}queueMicrotask((()=>{const e=[];for(const t of s){const A=h(t,(new AbortController).signal,"immutable");e.push(A)}n.resolve(Object.freeze(e))}));return n.promise}#N(e){const t=this.#S;const A=[...t];const r=[];const n=[];try{for(const A of e){if(A.type!=="delete"&&A.type!=="put"){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'})}if(A.type==="delete"&&A.response!=null){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"})}if(this.#M(A.request,A.options,r).length){throw new DOMException("???","InvalidStateError")}let e;if(A.type==="delete"){e=this.#M(A.request,A.options);if(e.length===0){return[]}for(const A of e){const e=t.indexOf(A);d(e!==-1);t.splice(e,1)}}else if(A.type==="put"){if(A.response==null){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"})}const n=A.request;if(!B(n.url)){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"})}if(n.method!=="GET"){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"})}if(A.options!=null){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"})}e=this.#M(A.request);for(const A of e){const e=t.indexOf(A);d(e!==-1);t.splice(e,1)}t.push([A.request,A.response]);r.push([A.request,A.response])}n.push([A.request,A.response])}return n}catch(e){this.#S.length=0;this.#S=A;throw e}}#M(e,t,A){const r=[];const n=A??this.#S;for(const A of n){const[n,s]=A;if(this.#U(e,n,s,t)){r.push(A)}}return r}#U(e,t,A=null,r){const o=new URL(e.url);const i=new URL(t.url);if(r?.ignoreSearch){i.search="";o.search=""}if(!n(o,i,true)){return false}if(A==null||r?.ignoreVary||!A.headersList.contains("vary")){return true}const a=s(A.headersList.get("vary"));for(const A of a){if(A==="*"){return false}const r=t.headersList.get(A);const n=e.headersList.get(A);if(r!==n){return false}}return true}#F(e,t,A=Infinity){let r=null;if(e!==undefined){if(e instanceof u){r=e[E];if(r.method!=="GET"&&!t.ignoreMethod){return[]}}else if(typeof e==="string"){r=new u(e)[E]}}const n=[];if(e===undefined){for(const e of this.#S){n.push(e[1])}}else{const e=this.#M(r,t);for(const t of e){n.push(t[1])}}const s=[];for(const e of n){const t=g(e,"immutable");s.push(t.clone());if(s.length>=A){break}}return Object.freeze(s)}}Object.defineProperties(Cache.prototype,{[Symbol.toStringTag]:{value:"Cache",configurable:true},match:o,matchAll:o,add:o,addAll:o,put:o,delete:o,keys:o});const f=[{key:"ignoreSearch",converter:a.converters.boolean,defaultValue:()=>false},{key:"ignoreMethod",converter:a.converters.boolean,defaultValue:()=>false},{key:"ignoreVary",converter:a.converters.boolean,defaultValue:()=>false}];a.converters.CacheQueryOptions=a.dictionaryConverter(f);a.converters.MultiCacheQueryOptions=a.dictionaryConverter([...f,{key:"cacheName",converter:a.converters.DOMString}]);a.converters.Response=a.interfaceConverter(c);a.converters["sequence"]=a.sequenceConverter(a.converters.RequestInfo);e.exports={Cache:Cache}},3245:(e,t,A)=>{"use strict";const{kConstruct:r}=A(109);const{Cache:n}=A(9634);const{webidl:s}=A(5893);const{kEnumerableProperty:o}=A(3440);class CacheStorage{#L=new Map;constructor(){if(arguments[0]!==r){s.illegalConstructor()}s.util.markAsUncloneable(this)}async match(e,t={}){s.brandCheck(this,CacheStorage);s.argumentLengthCheck(arguments,1,"CacheStorage.match");e=s.converters.RequestInfo(e);t=s.converters.MultiCacheQueryOptions(t);if(t.cacheName!=null){if(this.#L.has(t.cacheName)){const A=this.#L.get(t.cacheName);const s=new n(r,A);return await s.match(e,t)}}else{for(const A of this.#L.values()){const s=new n(r,A);const o=await s.match(e,t);if(o!==undefined){return o}}}}async has(e){s.brandCheck(this,CacheStorage);const t="CacheStorage.has";s.argumentLengthCheck(arguments,1,t);e=s.converters.DOMString(e,t,"cacheName");return this.#L.has(e)}async open(e){s.brandCheck(this,CacheStorage);const t="CacheStorage.open";s.argumentLengthCheck(arguments,1,t);e=s.converters.DOMString(e,t,"cacheName");if(this.#L.has(e)){const t=this.#L.get(e);return new n(r,t)}const A=[];this.#L.set(e,A);return new n(r,A)}async delete(e){s.brandCheck(this,CacheStorage);const t="CacheStorage.delete";s.argumentLengthCheck(arguments,1,t);e=s.converters.DOMString(e,t,"cacheName");return this.#L.delete(e)}async keys(){s.brandCheck(this,CacheStorage);const e=this.#L.keys();return[...e]}}Object.defineProperties(CacheStorage.prototype,{[Symbol.toStringTag]:{value:"CacheStorage",configurable:true},match:o,has:o,open:o,delete:o,keys:o});e.exports={CacheStorage:CacheStorage}},109:(e,t,A)=>{"use strict";e.exports={kConstruct:A(6443).kConstruct}},6798:(e,t,A)=>{"use strict";const r=A(4589);const{URLSerializer:n}=A(1900);const{isValidHeaderName:s}=A(3168);function urlEquals(e,t,A=false){const r=n(e,A);const s=n(t,A);return r===s}function getFieldValues(e){r(e!==null);const t=[];for(let A of e.split(",")){A=A.trim();if(s(A)){t.push(A)}}return t}e.exports={urlEquals:urlEquals,getFieldValues:getFieldValues}},1276:e=>{"use strict";const t=1024;const A=4096;e.exports={maxAttributeValueSize:t,maxNameValuePairSize:A}},9061:(e,t,A)=>{"use strict";const{parseSetCookie:r}=A(1978);const{stringify:n}=A(7797);const{webidl:s}=A(5893);const{Headers:o}=A(660);function getCookies(e){s.argumentLengthCheck(arguments,1,"getCookies");s.brandCheck(e,o,{strict:false});const t=e.get("cookie");const A={};if(!t){return A}for(const e of t.split(";")){const[t,...r]=e.split("=");A[t.trim()]=r.join("=")}return A}function deleteCookie(e,t,A){s.brandCheck(e,o,{strict:false});const r="deleteCookie";s.argumentLengthCheck(arguments,2,r);t=s.converters.DOMString(t,r,"name");A=s.converters.DeleteCookieAttributes(A);setCookie(e,{name:t,value:"",expires:new Date(0),...A})}function getSetCookies(e){s.argumentLengthCheck(arguments,1,"getSetCookies");s.brandCheck(e,o,{strict:false});const t=e.getSetCookie();if(!t){return[]}return t.map((e=>r(e)))}function setCookie(e,t){s.argumentLengthCheck(arguments,2,"setCookie");s.brandCheck(e,o,{strict:false});t=s.converters.Cookie(t);const A=n(t);if(A){e.append("Set-Cookie",A)}}s.converters.DeleteCookieAttributes=s.dictionaryConverter([{converter:s.nullableConverter(s.converters.DOMString),key:"path",defaultValue:()=>null},{converter:s.nullableConverter(s.converters.DOMString),key:"domain",defaultValue:()=>null}]);s.converters.Cookie=s.dictionaryConverter([{converter:s.converters.DOMString,key:"name"},{converter:s.converters.DOMString,key:"value"},{converter:s.nullableConverter((e=>{if(typeof e==="number"){return s.converters["unsigned long long"](e)}return new Date(e)})),key:"expires",defaultValue:()=>null},{converter:s.nullableConverter(s.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:s.nullableConverter(s.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:s.nullableConverter(s.converters.DOMString),key:"path",defaultValue:()=>null},{converter:s.nullableConverter(s.converters.boolean),key:"secure",defaultValue:()=>null},{converter:s.nullableConverter(s.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:s.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:s.sequenceConverter(s.converters.DOMString),key:"unparsed",defaultValue:()=>new Array(0)}]);e.exports={getCookies:getCookies,deleteCookie:deleteCookie,getSetCookies:getSetCookies,setCookie:setCookie}},1978:(e,t,A)=>{"use strict";const{maxNameValuePairSize:r,maxAttributeValueSize:n}=A(1276);const{isCTLExcludingHtab:s}=A(7797);const{collectASequenceOfCodePointsFast:o}=A(1900);const i=A(4589);function parseSetCookie(e){if(s(e)){return null}let t="";let A="";let n="";let i="";if(e.includes(";")){const r={position:0};t=o(";",e,r);A=e.slice(r.position)}else{t=e}if(!t.includes("=")){i=t}else{const e={position:0};n=o("=",t,e);i=t.slice(e.position+1)}n=n.trim();i=i.trim();if(n.length+i.length>r){return null}return{name:n,value:i,...parseUnparsedAttributes(A)}}function parseUnparsedAttributes(e,t={}){if(e.length===0){return t}i(e[0]===";");e=e.slice(1);let A="";if(e.includes(";")){A=o(";",e,{position:0});e=e.slice(A.length)}else{A=e;e=""}let r="";let s="";if(A.includes("=")){const e={position:0};r=o("=",A,e);s=A.slice(e.position+1)}else{r=A}r=r.trim();s=s.trim();if(s.length>n){return parseUnparsedAttributes(e,t)}const a=r.toLowerCase();if(a==="expires"){const e=new Date(s);t.expires=e}else if(a==="max-age"){const A=s.charCodeAt(0);if((A<48||A>57)&&s[0]!=="-"){return parseUnparsedAttributes(e,t)}if(!/^\d+$/.test(s)){return parseUnparsedAttributes(e,t)}const r=Number(s);t.maxAge=r}else if(a==="domain"){let e=s;if(e[0]==="."){e=e.slice(1)}e=e.toLowerCase();t.domain=e}else if(a==="path"){let e="";if(s.length===0||s[0]!=="/"){e="/"}else{e=s}t.path=e}else if(a==="secure"){t.secure=true}else if(a==="httponly"){t.httpOnly=true}else if(a==="samesite"){const e=s.toLowerCase();if(e==="none"){t.sameSite="None"}else if(e==="strict"){t.sameSite="Strict"}else if(e==="lax"){t.sameSite="Lax"}}else{t.unparsed??=[];t.unparsed.push(`${r}=${s}`)}return parseUnparsedAttributes(e,t)}e.exports={parseSetCookie:parseSetCookie,parseUnparsedAttributes:parseUnparsedAttributes}},7797:e=>{"use strict";function isCTLExcludingHtab(e){for(let t=0;t=0&&A<=8||A>=10&&A<=31||A===127){return true}}return false}function validateCookieName(e){for(let t=0;t126||A===34||A===40||A===41||A===60||A===62||A===64||A===44||A===59||A===58||A===92||A===47||A===91||A===93||A===63||A===61||A===123||A===125){throw new Error("Invalid cookie name")}}}function validateCookieValue(e){let t=e.length;let A=0;if(e[0]==='"'){if(t===1||e[t-1]!=='"'){throw new Error("Invalid cookie value")}--t;++A}while(A126||t===34||t===44||t===59||t===92){throw new Error("Invalid cookie value")}}}function validateCookiePath(e){for(let t=0;t126||A===59){throw new Error("Invalid cookie path")}}}function isLetterOrDigit(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function validateCookieDomain(e){if(e===" "){return}if(e.length>255){throw new Error("Invalid cookie domain")}let t=0;for(let A=0;A63){throw new Error("Invalid cookie domain")}}if(t===0||e.charCodeAt(e.length-1)===45){throw new Error("Invalid cookie domain")}}const t=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];const A=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];const r=Array(61).fill(0).map(((e,t)=>t.toString().padStart(2,"0")));function toIMFDate(e){if(typeof e==="number"){e=new Date(e)}return`${t[e.getUTCDay()]}, ${r[e.getUTCDate()]} ${A[e.getUTCMonth()]} ${e.getUTCFullYear()} ${r[e.getUTCHours()]}:${r[e.getUTCMinutes()]}:${r[e.getUTCSeconds()]} GMT`}function validateCookieMaxAge(e){if(e<0){throw new Error("Invalid cookie max-age")}}function stringify(e){if(e.name.length===0){return null}validateCookieName(e.name);validateCookieValue(e.value);const t=[`${e.name}=${e.value}`];if(e.name.startsWith("__Secure-")){e.secure=true}if(e.name.startsWith("__Host-")){e.secure=true;e.domain=null;e.path="/"}if(e.secure){t.push("Secure")}if(e.httpOnly){t.push("HttpOnly")}if(typeof e.maxAge==="number"){validateCookieMaxAge(e.maxAge);t.push(`Max-Age=${e.maxAge}`)}if(e.domain){validateCookieDomain(e.domain);t.push(`Domain=${e.domain}`)}if(e.path){validateCookiePath(e.path);t.push(`Path=${e.path}`)}if(e.expires&&e.expires.toString()!=="Invalid Date"){t.push(`Expires=${toIMFDate(e.expires)}`)}if(e.sameSite){t.push(`SameSite=${e.sameSite}`)}for(const A of e.unparsed){if(!A.includes("=")){throw new Error("Invalid unparsed")}const[e,...r]=A.split("=");const n=e.trim();const s=r.join("=");validateCookieName(n);validateCookieValue(s);t.push(`${n}=${s}`)}return t.join("; ")}e.exports={isCTLExcludingHtab:isCTLExcludingHtab,validateCookieName:validateCookieName,validateCookiePath:validateCookiePath,validateCookieValue:validateCookieValue,toIMFDate:toIMFDate,stringify:stringify}},4031:(e,t,A)=>{"use strict";const{Transform:r}=A(7075);const{isASCIINumber:n,isValidLastEventId:s}=A(4811);const o=[239,187,191];const i=10;const a=13;const c=58;const l=32;class EventSourceStream extends r{state=null;checkBOM=true;crlfCheck=false;eventEndCheck=false;buffer=null;pos=0;event={data:undefined,event:undefined,id:undefined,retry:undefined};constructor(e={}){e.readableObjectMode=true;super(e);this.state=e.eventSourceSettings||{};if(e.push){this.push=e.push}}_transform(e,t,A){if(e.length===0){A();return}if(this.buffer){this.buffer=Buffer.concat([this.buffer,e])}else{this.buffer=e}if(this.checkBOM){switch(this.buffer.length){case 1:if(this.buffer[0]===o[0]){A();return}this.checkBOM=false;A();return;case 2:if(this.buffer[0]===o[0]&&this.buffer[1]===o[1]){A();return}this.checkBOM=false;break;case 3:if(this.buffer[0]===o[0]&&this.buffer[1]===o[1]&&this.buffer[2]===o[2]){this.buffer=Buffer.alloc(0);this.checkBOM=false;A();return}this.checkBOM=false;break;default:if(this.buffer[0]===o[0]&&this.buffer[1]===o[1]&&this.buffer[2]===o[2]){this.buffer=this.buffer.subarray(3)}this.checkBOM=false;break}}while(this.pos0){t[r]=o}break}}processEvent(e){if(e.retry&&n(e.retry)){this.state.reconnectionTime=parseInt(e.retry,10)}if(e.id&&s(e.id)){this.state.lastEventId=e.id}if(e.data!==undefined){this.push({type:e.event||"message",options:{data:e.data,lastEventId:this.state.lastEventId,origin:this.state.origin}})}}clearEvent(){this.event={data:undefined,event:undefined,id:undefined,retry:undefined}}}e.exports={EventSourceStream:EventSourceStream}},1238:(e,t,A)=>{"use strict";const{pipeline:r}=A(7075);const{fetching:n}=A(4398);const{makeRequest:s}=A(9967);const{webidl:o}=A(5893);const{EventSourceStream:i}=A(4031);const{parseMIMEType:a}=A(1900);const{createFastMessageEvent:c}=A(5188);const{isNetworkError:l}=A(9051);const{delay:g}=A(4811);const{kEnumerableProperty:u}=A(3440);const{environmentSettingsObject:h}=A(3168);let E=false;const Q=3e3;const B=0;const C=1;const I=2;const d="anonymous";const f="use-credentials";class EventSource extends EventTarget{#T={open:null,error:null,message:null};#v=null;#Y=false;#H=B;#x=null;#G=null;#e;#f;constructor(e,t={}){super();o.util.markAsUncloneable(this);const A="EventSource constructor";o.argumentLengthCheck(arguments,1,A);if(!E){E=true;process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})}e=o.converters.USVString(e,A,"url");t=o.converters.EventSourceInitDict(t,A,"eventSourceInitDict");this.#e=t.dispatcher;this.#f={lastEventId:"",reconnectionTime:Q};const r=h;let n;try{n=new URL(e,r.settingsObject.baseUrl);this.#f.origin=n.origin}catch(e){throw new DOMException(e,"SyntaxError")}this.#v=n.href;let i=d;if(t.withCredentials){i=f;this.#Y=true}const a={redirect:"follow",keepalive:true,mode:"cors",credentials:i==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};a.client=h.settingsObject;a.headersList=[["accept",{name:"accept",value:"text/event-stream"}]];a.cache="no-store";a.initiator="other";a.urlList=[new URL(this.#v)];this.#x=s(a);this.#J()}get readyState(){return this.#H}get url(){return this.#v}get withCredentials(){return this.#Y}#J(){if(this.#H===I)return;this.#H=B;const e={request:this.#x,dispatcher:this.#e};const processEventSourceEndOfBody=e=>{if(l(e)){this.dispatchEvent(new Event("error"));this.close()}this.#V()};e.processResponseEndOfBody=processEventSourceEndOfBody;e.processResponse=e=>{if(l(e)){if(e.aborted){this.close();this.dispatchEvent(new Event("error"));return}else{this.#V();return}}const t=e.headersList.get("content-type",true);const A=t!==null?a(t):"failure";const n=A!=="failure"&&A.essence==="text/event-stream";if(e.status!==200||n===false){this.close();this.dispatchEvent(new Event("error"));return}this.#H=C;this.dispatchEvent(new Event("open"));this.#f.origin=e.urlList[e.urlList.length-1].origin;const s=new i({eventSourceSettings:this.#f,push:e=>{this.dispatchEvent(c(e.type,e.options))}});r(e.body.stream,s,(e=>{if(e?.aborted===false){this.close();this.dispatchEvent(new Event("error"))}}))};this.#G=n(e)}async#V(){if(this.#H===I)return;this.#H=B;this.dispatchEvent(new Event("error"));await g(this.#f.reconnectionTime);if(this.#H!==B)return;if(this.#f.lastEventId.length){this.#x.headersList.set("last-event-id",this.#f.lastEventId,true)}this.#J()}close(){o.brandCheck(this,EventSource);if(this.#H===I)return;this.#H=I;this.#G.abort();this.#x=null}get onopen(){return this.#T.open}set onopen(e){if(this.#T.open){this.removeEventListener("open",this.#T.open)}if(typeof e==="function"){this.#T.open=e;this.addEventListener("open",e)}else{this.#T.open=null}}get onmessage(){return this.#T.message}set onmessage(e){if(this.#T.message){this.removeEventListener("message",this.#T.message)}if(typeof e==="function"){this.#T.message=e;this.addEventListener("message",e)}else{this.#T.message=null}}get onerror(){return this.#T.error}set onerror(e){if(this.#T.error){this.removeEventListener("error",this.#T.error)}if(typeof e==="function"){this.#T.error=e;this.addEventListener("error",e)}else{this.#T.error=null}}}const p={CONNECTING:{__proto__:null,configurable:false,enumerable:true,value:B,writable:false},OPEN:{__proto__:null,configurable:false,enumerable:true,value:C,writable:false},CLOSED:{__proto__:null,configurable:false,enumerable:true,value:I,writable:false}};Object.defineProperties(EventSource,p);Object.defineProperties(EventSource.prototype,p);Object.defineProperties(EventSource.prototype,{close:u,onerror:u,onmessage:u,onopen:u,readyState:u,url:u,withCredentials:u});o.converters.EventSourceInitDict=o.dictionaryConverter([{key:"withCredentials",converter:o.converters.boolean,defaultValue:()=>false},{key:"dispatcher",converter:o.converters.any}]);e.exports={EventSource:EventSource,defaultReconnectionTime:Q}},4811:e=>{"use strict";function isValidLastEventId(e){return e.indexOf("\0")===-1}function isASCIINumber(e){if(e.length===0)return false;for(let t=0;t57)return false}return true}function delay(e){return new Promise((t=>{setTimeout(t,e).unref()}))}e.exports={isValidLastEventId:isValidLastEventId,isASCIINumber:isASCIINumber,delay:delay}},4492:(e,t,A)=>{"use strict";const r=A(3440);const{ReadableStreamFrom:n,isBlobLike:s,isReadableStreamLike:o,readableStreamClose:i,createDeferredPromise:a,fullyReadBody:c,extractMimeType:l,utf8DecodeBytes:g}=A(3168);const{FormData:u}=A(5910);const{kState:h}=A(3627);const{webidl:E}=A(5893);const{Blob:Q}=A(4573);const B=A(4589);const{isErrored:C,isDisturbed:I}=A(7075);const{isArrayBuffer:d}=A(3429);const{serializeAMimeType:f}=A(1900);const{multipartFormDataParser:p}=A(116);let y;try{const e=A(7598);y=t=>e.randomInt(0,t)}catch{y=e=>Math.floor(Math.random(e))}const w=new TextEncoder;function noop(){}const m=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0;let D;if(m){D=new FinalizationRegistry((e=>{const t=e.deref();if(t&&!t.locked&&!I(t)&&!C(t)){t.cancel("Response object has been garbage collected").catch(noop)}}))}function extractBody(e,t=false){let A=null;if(e instanceof ReadableStream){A=e}else if(s(e)){A=e.stream()}else{A=new ReadableStream({async pull(e){const t=typeof c==="string"?w.encode(c):c;if(t.byteLength){e.enqueue(t)}queueMicrotask((()=>i(e)))},start(){},type:"bytes"})}B(o(A));let a=null;let c=null;let l=null;let g=null;if(typeof e==="string"){c=e;g="text/plain;charset=UTF-8"}else if(e instanceof URLSearchParams){c=e.toString();g="application/x-www-form-urlencoded;charset=UTF-8"}else if(d(e)){c=new Uint8Array(e.slice())}else if(ArrayBuffer.isView(e)){c=new Uint8Array(e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength))}else if(r.isFormDataLike(e)){const t=`----formdata-undici-0${`${y(1e11)}`.padStart(11,"0")}`;const A=`--${t}\r\nContent-Disposition: form-data` -/*! formdata-polyfill. MIT License. Jimmy Wärting */;const escape=e=>e.replace(/\n/g,"%0A").replace(/\r/g,"%0D").replace(/"/g,"%22");const normalizeLinefeeds=e=>e.replace(/\r?\n|\r/g,"\r\n");const r=[];const n=new Uint8Array([13,10]);l=0;let s=false;for(const[t,o]of e){if(typeof o==="string"){const e=w.encode(A+`; name="${escape(normalizeLinefeeds(t))}"`+`\r\n\r\n${normalizeLinefeeds(o)}\r\n`);r.push(e);l+=e.byteLength}else{const e=w.encode(`${A}; name="${escape(normalizeLinefeeds(t))}"`+(o.name?`; filename="${escape(o.name)}"`:"")+"\r\n"+`Content-Type: ${o.type||"application/octet-stream"}\r\n\r\n`);r.push(e,o,n);if(typeof o.size==="number"){l+=e.byteLength+o.size+n.byteLength}else{s=true}}}const o=w.encode(`--${t}--\r\n`);r.push(o);l+=o.byteLength;if(s){l=null}c=e;a=async function*(){for(const e of r){if(e.stream){yield*e.stream()}else{yield e}}};g=`multipart/form-data; boundary=${t}`}else if(s(e)){c=e;l=e.size;if(e.type){g=e.type}}else if(typeof e[Symbol.asyncIterator]==="function"){if(t){throw new TypeError("keepalive")}if(r.isDisturbed(e)||e.locked){throw new TypeError("Response body object should not be disturbed or locked")}A=e instanceof ReadableStream?e:n(e)}if(typeof c==="string"||r.isBuffer(c)){l=Buffer.byteLength(c)}if(a!=null){let t;A=new ReadableStream({async start(){t=a(e)[Symbol.asyncIterator]()},async pull(e){const{value:r,done:n}=await t.next();if(n){queueMicrotask((()=>{e.close();e.byobRequest?.respond(0)}))}else{if(!C(A)){const t=new Uint8Array(r);if(t.byteLength){e.enqueue(t)}}}return e.desiredSize>0},async cancel(e){await t.return()},type:"bytes"})}const u={stream:A,source:c,length:l};return[u,g]}function safelyExtractBody(e,t=false){if(e instanceof ReadableStream){B(!r.isDisturbed(e),"The body has already been consumed.");B(!e.locked,"The stream is locked.")}return extractBody(e,t)}function cloneBody(e,t){const[A,r]=t.stream.tee();t.stream=A;return{stream:r,length:t.length,source:t.source}}function throwIfAborted(e){if(e.aborted){throw new DOMException("The operation was aborted.","AbortError")}}function bodyMixinMethods(e){const t={blob(){return consumeBody(this,(e=>{let t=bodyMimeType(this);if(t===null){t=""}else if(t){t=f(t)}return new Q([e],{type:t})}),e)},arrayBuffer(){return consumeBody(this,(e=>new Uint8Array(e).buffer),e)},text(){return consumeBody(this,g,e)},json(){return consumeBody(this,parseJSONFromBytes,e)},formData(){return consumeBody(this,(e=>{const t=bodyMimeType(this);if(t!==null){switch(t.essence){case"multipart/form-data":{const A=p(e,t);if(A==="failure"){throw new TypeError("Failed to parse body as FormData.")}const r=new u;r[h]=A;return r}case"application/x-www-form-urlencoded":{const t=new URLSearchParams(e.toString());const A=new u;for(const[e,r]of t){A.append(e,r)}return A}}}throw new TypeError('Content-Type was not one of "multipart/form-data" or "application/x-www-form-urlencoded".')}),e)},bytes(){return consumeBody(this,(e=>new Uint8Array(e)),e)}};return t}function mixinBody(e){Object.assign(e.prototype,bodyMixinMethods(e))}async function consumeBody(e,t,A){E.brandCheck(e,A);if(bodyUnusable(e)){throw new TypeError("Body is unusable: Body has already been read")}throwIfAborted(e[h]);const r=a();const errorSteps=e=>r.reject(e);const successSteps=e=>{try{r.resolve(t(e))}catch(e){errorSteps(e)}};if(e[h].body==null){successSteps(Buffer.allocUnsafe(0));return r.promise}await c(e[h].body,successSteps,errorSteps);return r.promise}function bodyUnusable(e){const t=e[h].body;return t!=null&&(t.stream.locked||r.isDisturbed(t.stream))}function parseJSONFromBytes(e){return JSON.parse(g(e))}function bodyMimeType(e){const t=e[h].headersList;const A=l(t);if(A==="failure"){return null}return A}e.exports={extractBody:extractBody,safelyExtractBody:safelyExtractBody,cloneBody:cloneBody,mixinBody:mixinBody,streamRegistry:D,hasFinalizationRegistry:m,bodyUnusable:bodyUnusable}},4495:e=>{"use strict";const t=["GET","HEAD","POST"];const A=new Set(t);const r=[101,204,205,304];const n=[301,302,303,307,308];const s=new Set(n);const o=["1","7","9","11","13","15","17","19","20","21","22","23","25","37","42","43","53","69","77","79","87","95","101","102","103","104","109","110","111","113","115","117","119","123","135","137","139","143","161","179","389","427","465","512","513","514","515","526","530","531","532","540","548","554","556","563","587","601","636","989","990","993","995","1719","1720","1723","2049","3659","4045","4190","5060","5061","6000","6566","6665","6666","6667","6668","6669","6679","6697","10080"];const i=new Set(o);const a=["","no-referrer","no-referrer-when-downgrade","same-origin","origin","strict-origin","origin-when-cross-origin","strict-origin-when-cross-origin","unsafe-url"];const c=new Set(a);const l=["follow","manual","error"];const g=["GET","HEAD","OPTIONS","TRACE"];const u=new Set(g);const h=["navigate","same-origin","no-cors","cors"];const E=["omit","same-origin","include"];const Q=["default","no-store","reload","no-cache","force-cache","only-if-cached"];const B=["content-encoding","content-language","content-location","content-type","content-length"];const C=["half"];const I=["CONNECT","TRACE","TRACK"];const d=new Set(I);const f=["audio","audioworklet","font","image","manifest","paintworklet","script","style","track","video","xslt",""];const p=new Set(f);e.exports={subresource:f,forbiddenMethods:I,requestBodyHeader:B,referrerPolicy:a,requestRedirect:l,requestMode:h,requestCredentials:E,requestCache:Q,redirectStatus:n,corsSafeListedMethods:t,nullBodyStatus:r,safeMethods:g,badPorts:o,requestDuplex:C,subresourceSet:p,badPortsSet:i,redirectStatusSet:s,corsSafeListedMethodsSet:A,safeMethodsSet:u,forbiddenMethodsSet:d,referrerPolicySet:c}},1900:(e,t,A)=>{"use strict";const r=A(4589);const n=new TextEncoder;const s=/^[!#$%&'*+\-.^_|~A-Za-z0-9]+$/;const o=/[\u000A\u000D\u0009\u0020]/;const i=/[\u0009\u000A\u000C\u000D\u0020]/g;const a=/^[\u0009\u0020-\u007E\u0080-\u00FF]+$/;function dataURLProcessor(e){r(e.protocol==="data:");let t=URLSerializer(e,true);t=t.slice(5);const A={position:0};let n=collectASequenceOfCodePointsFast(",",t,A);const s=n.length;n=removeASCIIWhitespace(n,true,true);if(A.position>=t.length){return"failure"}A.position++;const o=t.slice(s+1);let i=stringPercentDecode(o);if(/;(\u0020){0,}base64$/i.test(n)){const e=isomorphicDecode(i);i=forgivingBase64(e);if(i==="failure"){return"failure"}n=n.slice(0,-6);n=n.replace(/(\u0020)+$/,"");n=n.slice(0,-1)}if(n.startsWith(";")){n="text/plain"+n}let a=parseMIMEType(n);if(a==="failure"){a=parseMIMEType("text/plain;charset=US-ASCII")}return{mimeType:a,body:i}}function URLSerializer(e,t=false){if(!t){return e.href}const A=e.href;const r=e.hash.length;const n=r===0?A:A.substring(0,A.length-r);if(!r&&A.endsWith("#")){return n.slice(0,-1)}return n}function collectASequenceOfCodePoints(e,t,A){let r="";while(A.position=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function hexByteToNumber(e){return e>=48&&e<=57?e-48:(e&223)-55}function percentDecode(e){const t=e.length;const A=new Uint8Array(t);let r=0;for(let n=0;ne.length){return"failure"}t.position++;let r=collectASequenceOfCodePointsFast(";",e,t);r=removeHTTPWhitespace(r,false,true);if(r.length===0||!s.test(r)){return"failure"}const n=A.toLowerCase();const i=r.toLowerCase();const c={type:n,subtype:i,parameters:new Map,essence:`${n}/${i}`};while(t.positiono.test(e)),e,t);let A=collectASequenceOfCodePoints((e=>e!==";"&&e!=="="),e,t);A=A.toLowerCase();if(t.positione.length){break}let r=null;if(e[t.position]==='"'){r=collectAnHTTPQuotedString(e,t,true);collectASequenceOfCodePointsFast(";",e,t)}else{r=collectASequenceOfCodePointsFast(";",e,t);r=removeHTTPWhitespace(r,false,true);if(r.length===0){continue}}if(A.length!==0&&s.test(A)&&(r.length===0||a.test(r))&&!c.parameters.has(A)){c.parameters.set(A,r)}}return c}function forgivingBase64(e){e=e.replace(i,"");let t=e.length;if(t%4===0){if(e.charCodeAt(t-1)===61){--t;if(e.charCodeAt(t-1)===61){--t}}}if(t%4===1){return"failure"}if(/[^+/0-9A-Za-z]/.test(e.length===t?e:e.substring(0,t))){return"failure"}const A=Buffer.from(e,"base64");return new Uint8Array(A.buffer,A.byteOffset,A.byteLength)}function collectAnHTTPQuotedString(e,t,A){const n=t.position;let s="";r(e[t.position]==='"');t.position++;while(true){s+=collectASequenceOfCodePoints((e=>e!=='"'&&e!=="\\"),e,t);if(t.position>=e.length){break}const A=e[t.position];t.position++;if(A==="\\"){if(t.position>=e.length){s+="\\";break}s+=e[t.position];t.position++}else{r(A==='"');break}}if(A){return s}return e.slice(n,t.position)}function serializeAMimeType(e){r(e!=="failure");const{parameters:t,essence:A}=e;let n=A;for(let[e,A]of t.entries()){n+=";";n+=e;n+="=";if(!s.test(A)){A=A.replace(/(\\|")/g,"\\$1");A='"'+A;A+='"'}n+=A}return n}function isHTTPWhiteSpace(e){return e===13||e===10||e===9||e===32}function removeHTTPWhitespace(e,t=true,A=true){return removeChars(e,t,A,isHTTPWhiteSpace)}function isASCIIWhitespace(e){return e===13||e===10||e===9||e===12||e===32}function removeASCIIWhitespace(e,t=true,A=true){return removeChars(e,t,A,isASCIIWhitespace)}function removeChars(e,t,A,r){let n=0;let s=e.length-1;if(t){while(n0&&r(e.charCodeAt(s)))s--}return n===0&&s===e.length-1?e:e.slice(n,s+1)}function isomorphicDecode(e){const t=e.length;if((2<<15)-1>t){return String.fromCharCode.apply(null,e)}let A="";let r=0;let n=(2<<15)-1;while(rt){n=t-r}A+=String.fromCharCode.apply(null,e.subarray(r,r+=n))}return A}function minimizeSupportedMimeType(e){switch(e.essence){case"application/ecmascript":case"application/javascript":case"application/x-ecmascript":case"application/x-javascript":case"text/ecmascript":case"text/javascript":case"text/javascript1.0":case"text/javascript1.1":case"text/javascript1.2":case"text/javascript1.3":case"text/javascript1.4":case"text/javascript1.5":case"text/jscript":case"text/livescript":case"text/x-ecmascript":case"text/x-javascript":return"text/javascript";case"application/json":case"text/json":return"application/json";case"image/svg+xml":return"image/svg+xml";case"text/xml":case"application/xml":return"application/xml"}if(e.subtype.endsWith("+json")){return"application/json"}if(e.subtype.endsWith("+xml")){return"application/xml"}return""}e.exports={dataURLProcessor:dataURLProcessor,URLSerializer:URLSerializer,collectASequenceOfCodePoints:collectASequenceOfCodePoints,collectASequenceOfCodePointsFast:collectASequenceOfCodePointsFast,stringPercentDecode:stringPercentDecode,parseMIMEType:parseMIMEType,collectAnHTTPQuotedString:collectAnHTTPQuotedString,serializeAMimeType:serializeAMimeType,removeChars:removeChars,removeHTTPWhitespace:removeHTTPWhitespace,minimizeSupportedMimeType:minimizeSupportedMimeType,HTTP_TOKEN_CODEPOINTS:s,isomorphicDecode:isomorphicDecode}},6653:(e,t,A)=>{"use strict";const{kConnected:r,kSize:n}=A(6443);class CompatWeakRef{constructor(e){this.value=e}deref(){return this.value[r]===0&&this.value[n]===0?undefined:this.value}}class CompatFinalizer{constructor(e){this.finalizer=e}register(e,t){if(e.on){e.on("disconnect",(()=>{if(e[r]===0&&e[n]===0){this.finalizer(t)}}))}}unregister(e){}}e.exports=function(){if(process.env.NODE_V8_COVERAGE&&process.version.startsWith("v18")){process._rawDebug("Using compatibility WeakRef and FinalizationRegistry");return{WeakRef:CompatWeakRef,FinalizationRegistry:CompatFinalizer}}return{WeakRef:WeakRef,FinalizationRegistry:FinalizationRegistry}}},7114:(e,t,A)=>{"use strict";const{Blob:r,File:n}=A(4573);const{kState:s}=A(3627);const{webidl:o}=A(5893);class FileLike{constructor(e,t,A={}){const r=t;const n=A.type;const o=A.lastModified??Date.now();this[s]={blobLike:e,name:r,type:n,lastModified:o}}stream(...e){o.brandCheck(this,FileLike);return this[s].blobLike.stream(...e)}arrayBuffer(...e){o.brandCheck(this,FileLike);return this[s].blobLike.arrayBuffer(...e)}slice(...e){o.brandCheck(this,FileLike);return this[s].blobLike.slice(...e)}text(...e){o.brandCheck(this,FileLike);return this[s].blobLike.text(...e)}get size(){o.brandCheck(this,FileLike);return this[s].blobLike.size}get type(){o.brandCheck(this,FileLike);return this[s].blobLike.type}get name(){o.brandCheck(this,FileLike);return this[s].name}get lastModified(){o.brandCheck(this,FileLike);return this[s].lastModified}get[Symbol.toStringTag](){return"File"}}o.converters.Blob=o.interfaceConverter(r);function isFileLike(e){return e instanceof n||e&&(typeof e.stream==="function"||typeof e.arrayBuffer==="function")&&e[Symbol.toStringTag]==="File"}e.exports={FileLike:FileLike,isFileLike:isFileLike}},116:(e,t,A)=>{"use strict";const{isUSVString:r,bufferToLowerCasedHeaderName:n}=A(3440);const{utf8DecodeBytes:s}=A(3168);const{HTTP_TOKEN_CODEPOINTS:o,isomorphicDecode:i}=A(1900);const{isFileLike:a}=A(7114);const{makeEntry:c}=A(5910);const l=A(4589);const{File:g}=A(4573);const u=globalThis.File??g;const h=Buffer.from('form-data; name="');const E=Buffer.from("; filename");const Q=Buffer.from("--");const B=Buffer.from("--\r\n");function isAsciiString(e){for(let t=0;t70){return false}for(let A=0;A=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||t===39||t===45||t===95)){return false}}return true}function multipartFormDataParser(e,t){l(t!=="failure"&&t.essence==="multipart/form-data");const A=t.parameters.get("boundary");if(A===undefined){return"failure"}const n=Buffer.from(`--${A}`,"utf8");const o=[];const i={position:0};while(e[i.position]===13&&e[i.position+1]===10){i.position+=2}let g=e.length;while(e[g-1]===10&&e[g-2]===13){g-=2}if(g!==e.length){e=e.subarray(0,g)}while(true){if(e.subarray(i.position,i.position+n.length).equals(n)){i.position+=n.length}else{return"failure"}if(i.position===e.length-2&&bufferStartsWith(e,Q,i)||i.position===e.length-4&&bufferStartsWith(e,B,i)){return o}if(e[i.position]!==13||e[i.position+1]!==10){return"failure"}i.position+=2;const t=parseMultipartFormDataHeaders(e,i);if(t==="failure"){return"failure"}let{name:A,filename:g,contentType:h,encoding:E}=t;i.position+=2;let C;{const t=e.indexOf(n.subarray(2),i.position);if(t===-1){return"failure"}C=e.subarray(i.position,t-4);i.position+=C.length;if(E==="base64"){C=Buffer.from(C.toString(),"base64")}}if(e[i.position]!==13||e[i.position+1]!==10){return"failure"}else{i.position+=2}let I;if(g!==null){h??="text/plain";if(!isAsciiString(h)){h=""}I=new u([C],g,{type:h})}else{I=s(Buffer.from(C))}l(r(A));l(typeof I==="string"&&r(I)||a(I));o.push(c(A,I,g))}}function parseMultipartFormDataHeaders(e,t){let A=null;let r=null;let s=null;let a=null;while(true){if(e[t.position]===13&&e[t.position+1]===10){if(A===null){return"failure"}return{name:A,filename:r,contentType:s,encoding:a}}let c=collectASequenceOfBytes((e=>e!==10&&e!==13&&e!==58),e,t);c=removeChars(c,true,true,(e=>e===9||e===32));if(!o.test(c.toString())){return"failure"}if(e[t.position]!==58){return"failure"}t.position++;collectASequenceOfBytes((e=>e===32||e===9),e,t);switch(n(c)){case"content-disposition":{A=r=null;if(!bufferStartsWith(e,h,t)){return"failure"}t.position+=17;A=parseMultipartFormDataName(e,t);if(A===null){return"failure"}if(bufferStartsWith(e,E,t)){let A=t.position+E.length;if(e[A]===42){t.position+=1;A+=1}if(e[A]!==61||e[A+1]!==34){return"failure"}t.position+=12;r=parseMultipartFormDataName(e,t);if(r===null){return"failure"}}break}case"content-type":{let A=collectASequenceOfBytes((e=>e!==10&&e!==13),e,t);A=removeChars(A,false,true,(e=>e===9||e===32));s=i(A);break}case"content-transfer-encoding":{let A=collectASequenceOfBytes((e=>e!==10&&e!==13),e,t);A=removeChars(A,false,true,(e=>e===9||e===32));a=i(A);break}default:{collectASequenceOfBytes((e=>e!==10&&e!==13),e,t)}}if(e[t.position]!==13&&e[t.position+1]!==10){return"failure"}else{t.position+=2}}}function parseMultipartFormDataName(e,t){l(e[t.position-1]===34);let A=collectASequenceOfBytes((e=>e!==10&&e!==13&&e!==34),e,t);if(e[t.position]!==34){return null}else{t.position++}A=(new TextDecoder).decode(A).replace(/%0A/gi,"\n").replace(/%0D/gi,"\r").replace(/%22/g,'"');return A}function collectASequenceOfBytes(e,t,A){let r=A.position;while(r0&&r(e[s]))s--}return n===0&&s===e.length-1?e:e.subarray(n,s+1)}function bufferStartsWith(e,t,A){if(e.length{"use strict";const{isBlobLike:r,iteratorMixin:n}=A(3168);const{kState:s}=A(3627);const{kEnumerableProperty:o}=A(3440);const{FileLike:i,isFileLike:a}=A(7114);const{webidl:c}=A(5893);const{File:l}=A(4573);const g=A(7975);const u=globalThis.File??l;class FormData{constructor(e){c.util.markAsUncloneable(this);if(e!==undefined){throw c.errors.conversionFailed({prefix:"FormData constructor",argument:"Argument 1",types:["undefined"]})}this[s]=[]}append(e,t,A=undefined){c.brandCheck(this,FormData);const n="FormData.append";c.argumentLengthCheck(arguments,2,n);if(arguments.length===3&&!r(t)){throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'")}e=c.converters.USVString(e,n,"name");t=r(t)?c.converters.Blob(t,n,"value",{strict:false}):c.converters.USVString(t,n,"value");A=arguments.length===3?c.converters.USVString(A,n,"filename"):undefined;const o=makeEntry(e,t,A);this[s].push(o)}delete(e){c.brandCheck(this,FormData);const t="FormData.delete";c.argumentLengthCheck(arguments,1,t);e=c.converters.USVString(e,t,"name");this[s]=this[s].filter((t=>t.name!==e))}get(e){c.brandCheck(this,FormData);const t="FormData.get";c.argumentLengthCheck(arguments,1,t);e=c.converters.USVString(e,t,"name");const A=this[s].findIndex((t=>t.name===e));if(A===-1){return null}return this[s][A].value}getAll(e){c.brandCheck(this,FormData);const t="FormData.getAll";c.argumentLengthCheck(arguments,1,t);e=c.converters.USVString(e,t,"name");return this[s].filter((t=>t.name===e)).map((e=>e.value))}has(e){c.brandCheck(this,FormData);const t="FormData.has";c.argumentLengthCheck(arguments,1,t);e=c.converters.USVString(e,t,"name");return this[s].findIndex((t=>t.name===e))!==-1}set(e,t,A=undefined){c.brandCheck(this,FormData);const n="FormData.set";c.argumentLengthCheck(arguments,2,n);if(arguments.length===3&&!r(t)){throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'")}e=c.converters.USVString(e,n,"name");t=r(t)?c.converters.Blob(t,n,"name",{strict:false}):c.converters.USVString(t,n,"name");A=arguments.length===3?c.converters.USVString(A,n,"name"):undefined;const o=makeEntry(e,t,A);const i=this[s].findIndex((t=>t.name===e));if(i!==-1){this[s]=[...this[s].slice(0,i),o,...this[s].slice(i+1).filter((t=>t.name!==e))]}else{this[s].push(o)}}[g.inspect.custom](e,t){const A=this[s].reduce(((e,t)=>{if(e[t.name]){if(Array.isArray(e[t.name])){e[t.name].push(t.value)}else{e[t.name]=[e[t.name],t.value]}}else{e[t.name]=t.value}return e}),{__proto__:null});t.depth??=e;t.colors??=true;const r=g.formatWithOptions(t,A);return`FormData ${r.slice(r.indexOf("]")+2)}`}}n("FormData",FormData,s,"name","value");Object.defineProperties(FormData.prototype,{append:o,delete:o,get:o,getAll:o,has:o,set:o,[Symbol.toStringTag]:{value:"FormData",configurable:true}});function makeEntry(e,t,A){if(typeof t==="string"){}else{if(!a(t)){t=t instanceof Blob?new u([t],"blob",{type:t.type}):new i(t,"blob",{type:t.type})}if(A!==undefined){const e={type:t.type,lastModified:t.lastModified};t=t instanceof l?new u([t],A,e):new i(t,A,e)}}return{name:e,value:t}}e.exports={FormData:FormData,makeEntry:makeEntry}},1059:e=>{"use strict";const t=Symbol.for("undici.globalOrigin.1");function getGlobalOrigin(){return globalThis[t]}function setGlobalOrigin(e){if(e===undefined){Object.defineProperty(globalThis,t,{value:undefined,writable:true,enumerable:false,configurable:false});return}const A=new URL(e);if(A.protocol!=="http:"&&A.protocol!=="https:"){throw new TypeError(`Only http & https urls are allowed, received ${A.protocol}`)}Object.defineProperty(globalThis,t,{value:A,writable:true,enumerable:false,configurable:false})}e.exports={getGlobalOrigin:getGlobalOrigin,setGlobalOrigin:setGlobalOrigin}},660:(e,t,A)=>{"use strict";const{kConstruct:r}=A(6443);const{kEnumerableProperty:n}=A(3440);const{iteratorMixin:s,isValidHeaderName:o,isValidHeaderValue:i}=A(3168);const{webidl:a}=A(5893);const c=A(4589);const l=A(7975);const g=Symbol("headers map");const u=Symbol("headers map sorted");function isHTTPWhiteSpaceCharCode(e){return e===10||e===13||e===9||e===32}function headerValueNormalize(e){let t=0;let A=e.length;while(A>t&&isHTTPWhiteSpaceCharCode(e.charCodeAt(A-1)))--A;while(A>t&&isHTTPWhiteSpaceCharCode(e.charCodeAt(t)))++t;return t===0&&A===e.length?e:e.substring(t,A)}function fill(e,t){if(Array.isArray(t)){for(let A=0;A>","record"]})}}function appendHeader(e,t,A){A=headerValueNormalize(A);if(!o(t)){throw a.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header name"})}else if(!i(A)){throw a.errors.invalidArgument({prefix:"Headers.append",value:A,type:"header value"})}if(h(e)==="immutable"){throw new TypeError("immutable")}return Q(e).append(t,A,false)}function compareHeaderName(e,t){return e[0]>1);if(t[i][0]<=a[0]){o=i+1}else{s=i}}if(r!==i){n=r;while(n>o){t[n]=t[--n]}t[o]=a}}if(!A.next().done){throw new TypeError("Unreachable")}return t}else{let e=0;for(const{0:A,1:{value:r}}of this[g]){t[e++]=[A,r];c(r!==null)}return t.sort(compareHeaderName)}}}class Headers{#O;#P;constructor(e=undefined){a.util.markAsUncloneable(this);if(e===r){return}this.#P=new HeadersList;this.#O="none";if(e!==undefined){e=a.converters.HeadersInit(e,"Headers contructor","init");fill(this,e)}}append(e,t){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,2,"Headers.append");const A="Headers.append";e=a.converters.ByteString(e,A,"name");t=a.converters.ByteString(t,A,"value");return appendHeader(this,e,t)}delete(e){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,1,"Headers.delete");const t="Headers.delete";e=a.converters.ByteString(e,t,"name");if(!o(e)){throw a.errors.invalidArgument({prefix:"Headers.delete",value:e,type:"header name"})}if(this.#O==="immutable"){throw new TypeError("immutable")}if(!this.#P.contains(e,false)){return}this.#P.delete(e,false)}get(e){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,1,"Headers.get");const t="Headers.get";e=a.converters.ByteString(e,t,"name");if(!o(e)){throw a.errors.invalidArgument({prefix:t,value:e,type:"header name"})}return this.#P.get(e,false)}has(e){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,1,"Headers.has");const t="Headers.has";e=a.converters.ByteString(e,t,"name");if(!o(e)){throw a.errors.invalidArgument({prefix:t,value:e,type:"header name"})}return this.#P.contains(e,false)}set(e,t){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,2,"Headers.set");const A="Headers.set";e=a.converters.ByteString(e,A,"name");t=a.converters.ByteString(t,A,"value");t=headerValueNormalize(t);if(!o(e)){throw a.errors.invalidArgument({prefix:A,value:e,type:"header name"})}else if(!i(t)){throw a.errors.invalidArgument({prefix:A,value:t,type:"header value"})}if(this.#O==="immutable"){throw new TypeError("immutable")}this.#P.set(e,t,false)}getSetCookie(){a.brandCheck(this,Headers);const e=this.#P.cookies;if(e){return[...e]}return[]}get[u](){if(this.#P[u]){return this.#P[u]}const e=[];const t=this.#P.toSortedArray();const A=this.#P.cookies;if(A===null||A.length===1){return this.#P[u]=t}for(let r=0;r>"](e,t,A,r.bind(e))}return a.converters["record"](e,t,A)}throw a.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})};e.exports={fill:fill,compareHeaderName:compareHeaderName,Headers:Headers,HeadersList:HeadersList,getHeadersGuard:h,setHeadersGuard:E,setHeadersList:B,getHeadersList:Q}},4398:(e,t,A)=>{"use strict";const{makeNetworkError:r,makeAppropriateNetworkError:n,filterResponse:s,makeResponse:o,fromInnerResponse:i}=A(9051);const{HeadersList:a}=A(660);const{Request:c,cloneRequest:l}=A(9967);const g=A(8522);const{bytesMatch:u,makePolicyContainer:h,clonePolicyContainer:E,requestBadPort:Q,TAOCheck:B,appendRequestOriginHeader:C,responseLocationURL:I,requestCurrentURL:d,setRequestReferrerPolicyOnRedirect:f,tryUpgradeRequestToAPotentiallyTrustworthyURL:p,createOpaqueTimingInfo:y,appendFetchMetadata:w,corsCheck:m,crossOriginResourcePolicyCheck:D,determineRequestsReferrer:k,coarsenedSharedCurrentTime:b,createDeferredPromise:R,isBlobLike:S,sameOrigin:F,isCancelled:N,isAborted:M,isErrorLike:U,fullyReadBody:L,readableStreamClose:T,isomorphicEncode:v,urlIsLocal:Y,urlIsHttpHttpsScheme:H,urlHasHttpsScheme:x,clampAndCoarsenConnectionTimingInfo:G,simpleRangeHeaderValue:J,buildContentRange:V,createInflate:O,extractMimeType:P}=A(3168);const{kState:W,kDispatcher:q}=A(3627);const _=A(4589);const{safelyExtractBody:j,extractBody:Z}=A(4492);const{redirectStatusSet:z,nullBodyStatus:K,safeMethodsSet:X,requestBodyHeader:$,subresourceSet:ee}=A(4495);const te=A(8474);const{Readable:Ae,pipeline:re,finished:ne}=A(7075);const{addAbortListener:se,isErrored:oe,isReadable:ie,bufferToLowerCasedHeaderName:ae}=A(3440);const{dataURLProcessor:ce,serializeAMimeType:le,minimizeSupportedMimeType:ge}=A(1900);const{getGlobalDispatcher:ue}=A(2581);const{webidl:he}=A(5893);const{STATUS_CODES:Ee}=A(7067);const Qe=["GET","HEAD"];const Be=typeof __UNDICI_IS_NODE__!=="undefined"||typeof esbuildDetection!=="undefined"?"node":"undici";let Ce;class Fetch extends te{constructor(e){super();this.dispatcher=e;this.connection=null;this.dump=false;this.state="ongoing"}terminate(e){if(this.state!=="ongoing"){return}this.state="terminated";this.connection?.destroy(e);this.emit("terminated",e)}abort(e){if(this.state!=="ongoing"){return}this.state="aborted";if(!e){e=new DOMException("The operation was aborted.","AbortError")}this.serializedAbortReason=e;this.connection?.destroy(e);this.emit("terminated",e)}}function handleFetchDone(e){finalizeAndReportTiming(e,"fetch")}function fetch(e,t=undefined){he.argumentLengthCheck(arguments,1,"globalThis.fetch");let A=R();let r;try{r=new c(e,t)}catch(e){A.reject(e);return A.promise}const n=r[W];if(r.signal.aborted){abortFetch(A,n,null,r.signal.reason);return A.promise}const s=n.client.globalObject;if(s?.constructor?.name==="ServiceWorkerGlobalScope"){n.serviceWorkers="none"}let o=null;let a=false;let l=null;se(r.signal,(()=>{a=true;_(l!=null);l.abort(r.signal.reason);const e=o?.deref();abortFetch(A,n,e,r.signal.reason)}));const processResponse=e=>{if(a){return}if(e.aborted){abortFetch(A,n,o,l.serializedAbortReason);return}if(e.type==="error"){A.reject(new TypeError("fetch failed",{cause:e.error}));return}o=new WeakRef(i(e,"immutable"));A.resolve(o.deref());A=null};l=fetching({request:n,processResponseEndOfBody:handleFetchDone,processResponse:processResponse,dispatcher:r[q]});return A.promise}function finalizeAndReportTiming(e,t="other"){if(e.type==="error"&&e.aborted){return}if(!e.urlList?.length){return}const A=e.urlList[0];let r=e.timingInfo;let n=e.cacheState;if(!H(A)){return}if(r===null){return}if(!e.timingAllowPassed){r=y({startTime:r.startTime});n=""}r.endTime=b();e.timingInfo=r;Ie(r,A.href,t,globalThis,n)}const Ie=performance.markResourceTiming;function abortFetch(e,t,A,r){if(e){e.reject(r)}if(t.body!=null&&ie(t.body?.stream)){t.body.stream.cancel(r).catch((e=>{if(e.code==="ERR_INVALID_STATE"){return}throw e}))}if(A==null){return}const n=A[W];if(n.body!=null&&ie(n.body?.stream)){n.body.stream.cancel(r).catch((e=>{if(e.code==="ERR_INVALID_STATE"){return}throw e}))}}function fetching({request:e,processRequestBodyChunkLength:t,processRequestEndOfBody:A,processResponse:r,processResponseEndOfBody:n,processResponseConsumeBody:s,useParallelQueue:o=false,dispatcher:i=ue()}){_(i);let a=null;let c=false;if(e.client!=null){a=e.client.globalObject;c=e.client.crossOriginIsolatedCapability}const l=b(c);const g=y({startTime:l});const u={controller:new Fetch(i),request:e,timingInfo:g,processRequestBodyChunkLength:t,processRequestEndOfBody:A,processResponse:r,processResponseConsumeBody:s,processResponseEndOfBody:n,taskDestination:a,crossOriginIsolatedCapability:c};_(!e.body||e.body.stream);if(e.window==="client"){e.window=e.client?.globalObject?.constructor?.name==="Window"?e.client:"no-window"}if(e.origin==="client"){e.origin=e.client.origin}if(e.policyContainer==="client"){if(e.client!=null){e.policyContainer=E(e.client.policyContainer)}else{e.policyContainer=h()}}if(!e.headersList.contains("accept",true)){const t="*/*";e.headersList.append("accept",t,true)}if(!e.headersList.contains("accept-language",true)){e.headersList.append("accept-language","*",true)}if(e.priority===null){}if(ee.has(e.destination)){}mainFetch(u).catch((e=>{u.controller.terminate(e)}));return u.controller}async function mainFetch(e,t=false){const A=e.request;let n=null;if(A.localURLsOnly&&!Y(d(A))){n=r("local URLs only")}p(A);if(Q(A)==="blocked"){n=r("bad port")}if(A.referrerPolicy===""){A.referrerPolicy=A.policyContainer.referrerPolicy}if(A.referrer!=="no-referrer"){A.referrer=k(A)}if(n===null){n=await(async()=>{const t=d(A);if(F(t,A.url)&&A.responseTainting==="basic"||t.protocol==="data:"||(A.mode==="navigate"||A.mode==="websocket")){A.responseTainting="basic";return await schemeFetch(e)}if(A.mode==="same-origin"){return r('request mode cannot be "same-origin"')}if(A.mode==="no-cors"){if(A.redirect!=="follow"){return r('redirect mode cannot be "follow" for "no-cors" request')}A.responseTainting="opaque";return await schemeFetch(e)}if(!H(d(A))){return r("URL scheme must be a HTTP(S) scheme")}A.responseTainting="cors";return await httpFetch(e)})()}if(t){return n}if(n.status!==0&&!n.internalResponse){if(A.responseTainting==="cors"){}if(A.responseTainting==="basic"){n=s(n,"basic")}else if(A.responseTainting==="cors"){n=s(n,"cors")}else if(A.responseTainting==="opaque"){n=s(n,"opaque")}else{_(false)}}let o=n.status===0?n:n.internalResponse;if(o.urlList.length===0){o.urlList.push(...A.urlList)}if(!A.timingAllowFailed){n.timingAllowPassed=true}if(n.type==="opaque"&&o.status===206&&o.rangeRequested&&!A.headers.contains("range",true)){n=o=r()}if(n.status!==0&&(A.method==="HEAD"||A.method==="CONNECT"||K.includes(o.status))){o.body=null;e.controller.dump=true}if(A.integrity){const processBodyError=t=>fetchFinale(e,r(t));if(A.responseTainting==="opaque"||n.body==null){processBodyError(n.error);return}const processBody=t=>{if(!u(t,A.integrity)){processBodyError("integrity mismatch");return}n.body=j(t)[0];fetchFinale(e,n)};await L(n.body,processBody,processBodyError)}else{fetchFinale(e,n)}}function schemeFetch(e){if(N(e)&&e.request.redirectCount===0){return Promise.resolve(n(e))}const{request:t}=e;const{protocol:s}=d(t);switch(s){case"about:":{return Promise.resolve(r("about scheme is not supported"))}case"blob:":{if(!Ce){Ce=A(4573).resolveObjectURL}const e=d(t);if(e.search.length!==0){return Promise.resolve(r("NetworkError when attempting to fetch resource."))}const n=Ce(e.toString());if(t.method!=="GET"||!S(n)){return Promise.resolve(r("invalid method"))}const s=o();const i=n.size;const a=v(`${i}`);const c=n.type;if(!t.headersList.contains("range",true)){const e=Z(n);s.statusText="OK";s.body=e[0];s.headersList.set("content-length",a,true);s.headersList.set("content-type",c,true)}else{s.rangeRequested=true;const e=t.headersList.get("range",true);const A=J(e,true);if(A==="failure"){return Promise.resolve(r("failed to fetch the data URL"))}let{rangeStartValue:o,rangeEndValue:a}=A;if(o===null){o=i-a;a=o+a-1}else{if(o>=i){return Promise.resolve(r("Range start is greater than the blob's size."))}if(a===null||a>=i){a=i-1}}const l=n.slice(o,a,c);const g=Z(l);s.body=g[0];const u=v(`${l.size}`);const h=V(o,a,i);s.status=206;s.statusText="Partial Content";s.headersList.set("content-length",u,true);s.headersList.set("content-type",c,true);s.headersList.set("content-range",h,true)}return Promise.resolve(s)}case"data:":{const e=d(t);const A=ce(e);if(A==="failure"){return Promise.resolve(r("failed to fetch the data URL"))}const n=le(A.mimeType);return Promise.resolve(o({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:n}]],body:j(A.body)[0]}))}case"file:":{return Promise.resolve(r("not implemented... yet..."))}case"http:":case"https:":{return httpFetch(e).catch((e=>r(e)))}default:{return Promise.resolve(r("unknown scheme"))}}}function finalizeResponse(e,t){e.request.done=true;if(e.processResponseDone!=null){queueMicrotask((()=>e.processResponseDone(t)))}}function fetchFinale(e,t){let A=e.timingInfo;const processResponseEndOfBody=()=>{const r=Date.now();if(e.request.destination==="document"){e.controller.fullTimingInfo=A}e.controller.reportTimingSteps=()=>{if(e.request.url.protocol!=="https:"){return}A.endTime=r;let n=t.cacheState;const s=t.bodyInfo;if(!t.timingAllowPassed){A=y(A);n=""}let o=0;if(e.request.mode!=="navigator"||!t.hasCrossOriginRedirects){o=t.status;const e=P(t.headersList);if(e!=="failure"){s.contentType=ge(e)}}if(e.request.initiatorType!=null){Ie(A,e.request.url.href,e.request.initiatorType,globalThis,n,s,o)}};const processResponseEndOfBodyTask=()=>{e.request.done=true;if(e.processResponseEndOfBody!=null){queueMicrotask((()=>e.processResponseEndOfBody(t)))}if(e.request.initiatorType!=null){e.controller.reportTimingSteps()}};queueMicrotask((()=>processResponseEndOfBodyTask()))};if(e.processResponse!=null){queueMicrotask((()=>{e.processResponse(t);e.processResponse=null}))}const r=t.type==="error"?t:t.internalResponse??t;if(r.body==null){processResponseEndOfBody()}else{ne(r.body.stream,(()=>{processResponseEndOfBody()}))}}async function httpFetch(e){const t=e.request;let A=null;let n=null;const s=e.timingInfo;if(t.serviceWorkers==="all"){}if(A===null){if(t.redirect==="follow"){t.serviceWorkers="none"}n=A=await httpNetworkOrCacheFetch(e);if(t.responseTainting==="cors"&&m(t,A)==="failure"){return r("cors failure")}if(B(t,A)==="failure"){t.timingAllowFailed=true}}if((t.responseTainting==="opaque"||A.type==="opaque")&&D(t.origin,t.client,t.destination,n)==="blocked"){return r("blocked")}if(z.has(n.status)){if(t.redirect!=="manual"){e.controller.connection.destroy(undefined,false)}if(t.redirect==="error"){A=r("unexpected redirect")}else if(t.redirect==="manual"){A=n}else if(t.redirect==="follow"){A=await httpRedirectFetch(e,A)}else{_(false)}}A.timingInfo=s;return A}function httpRedirectFetch(e,t){const A=e.request;const n=t.internalResponse?t.internalResponse:t;let s;try{s=I(n,d(A).hash);if(s==null){return t}}catch(e){return Promise.resolve(r(e))}if(!H(s)){return Promise.resolve(r("URL scheme must be a HTTP(S) scheme"))}if(A.redirectCount===20){return Promise.resolve(r("redirect count exceeded"))}A.redirectCount+=1;if(A.mode==="cors"&&(s.username||s.password)&&!F(A,s)){return Promise.resolve(r('cross origin not allowed for request mode "cors"'))}if(A.responseTainting==="cors"&&(s.username||s.password)){return Promise.resolve(r('URL cannot contain credentials for request mode "cors"'))}if(n.status!==303&&A.body!=null&&A.body.source==null){return Promise.resolve(r())}if([301,302].includes(n.status)&&A.method==="POST"||n.status===303&&!Qe.includes(A.method)){A.method="GET";A.body=null;for(const e of $){A.headersList.delete(e)}}if(!F(d(A),s)){A.headersList.delete("authorization",true);A.headersList.delete("proxy-authorization",true);A.headersList.delete("cookie",true);A.headersList.delete("host",true)}if(A.body!=null){_(A.body.source!=null);A.body=j(A.body.source)[0]}const o=e.timingInfo;o.redirectEndTime=o.postRedirectStartTime=b(e.crossOriginIsolatedCapability);if(o.redirectStartTime===0){o.redirectStartTime=o.startTime}A.urlList.push(s);f(A,n);return mainFetch(e,true)}async function httpNetworkOrCacheFetch(e,t=false,A=false){const s=e.request;let o=null;let i=null;let a=null;const c=null;const g=false;if(s.window==="no-window"&&s.redirect==="error"){o=e;i=s}else{i=l(s);o={...e};o.request=i}const u=s.credentials==="include"||s.credentials==="same-origin"&&s.responseTainting==="basic";const h=i.body?i.body.length:null;let E=null;if(i.body==null&&["POST","PUT"].includes(i.method)){E="0"}if(h!=null){E=v(`${h}`)}if(E!=null){i.headersList.append("content-length",E,true)}if(h!=null&&i.keepalive){}if(i.referrer instanceof URL){i.headersList.append("referer",v(i.referrer.href),true)}C(i);w(i);if(!i.headersList.contains("user-agent",true)){i.headersList.append("user-agent",Be)}if(i.cache==="default"&&(i.headersList.contains("if-modified-since",true)||i.headersList.contains("if-none-match",true)||i.headersList.contains("if-unmodified-since",true)||i.headersList.contains("if-match",true)||i.headersList.contains("if-range",true))){i.cache="no-store"}if(i.cache==="no-cache"&&!i.preventNoCacheCacheControlHeaderModification&&!i.headersList.contains("cache-control",true)){i.headersList.append("cache-control","max-age=0",true)}if(i.cache==="no-store"||i.cache==="reload"){if(!i.headersList.contains("pragma",true)){i.headersList.append("pragma","no-cache",true)}if(!i.headersList.contains("cache-control",true)){i.headersList.append("cache-control","no-cache",true)}}if(i.headersList.contains("range",true)){i.headersList.append("accept-encoding","identity",true)}if(!i.headersList.contains("accept-encoding",true)){if(x(d(i))){i.headersList.append("accept-encoding","br, gzip, deflate",true)}else{i.headersList.append("accept-encoding","gzip, deflate",true)}}i.headersList.delete("host",true);if(u){}if(c==null){i.cache="no-store"}if(i.cache!=="no-store"&&i.cache!=="reload"){}if(a==null){if(i.cache==="only-if-cached"){return r("only if cached")}const e=await httpNetworkFetch(o,u,A);if(!X.has(i.method)&&e.status>=200&&e.status<=399){}if(g&&e.status===304){}if(a==null){a=e}}a.urlList=[...i.urlList];if(i.headersList.contains("range",true)){a.rangeRequested=true}a.requestIncludesCredentials=u;if(a.status===407){if(s.window==="no-window"){return r()}if(N(e)){return n(e)}return r("proxy authentication required")}if(a.status===421&&!A&&(s.body==null||s.body.source!=null)){if(N(e)){return n(e)}e.controller.connection.destroy();a=await httpNetworkOrCacheFetch(e,t,true)}if(t){}return a}async function httpNetworkFetch(e,t=false,A=false){_(!e.controller.connection||e.controller.connection.destroyed);e.controller.connection={abort:null,destroyed:false,destroy(e,t=true){if(!this.destroyed){this.destroyed=true;if(t){this.abort?.(e??new DOMException("The operation was aborted.","AbortError"))}}}};const s=e.request;let i=null;const c=e.timingInfo;const l=null;if(l==null){s.cache="no-store"}const u=A?"yes":"no";if(s.mode==="websocket"){}else{}let h=null;if(s.body==null&&e.processRequestEndOfBody){queueMicrotask((()=>e.processRequestEndOfBody()))}else if(s.body!=null){const processBodyChunk=async function*(t){if(N(e)){return}yield t;e.processRequestBodyChunkLength?.(t.byteLength)};const processEndOfBody=()=>{if(N(e)){return}if(e.processRequestEndOfBody){e.processRequestEndOfBody()}};const processBodyError=t=>{if(N(e)){return}if(t.name==="AbortError"){e.controller.abort()}else{e.controller.terminate(t)}};h=async function*(){try{for await(const e of s.body.stream){yield*processBodyChunk(e)}processEndOfBody()}catch(e){processBodyError(e)}}()}try{const{body:t,status:A,statusText:r,headersList:n,socket:s}=await dispatch({body:h});if(s){i=o({status:A,statusText:r,headersList:n,socket:s})}else{const s=t[Symbol.asyncIterator]();e.controller.next=()=>s.next();i=o({status:A,statusText:r,headersList:n})}}catch(t){if(t.name==="AbortError"){e.controller.connection.destroy();return n(e,t)}return r(t)}const pullAlgorithm=async()=>{await e.controller.resume()};const cancelAlgorithm=t=>{if(!N(e)){e.controller.abort(t)}};const E=new ReadableStream({async start(t){e.controller.controller=t},async pull(e){await pullAlgorithm(e)},async cancel(e){await cancelAlgorithm(e)},type:"bytes"});i.body={stream:E,source:null,length:null};e.controller.onAborted=onAborted;e.controller.on("terminated",onAborted);e.controller.resume=async()=>{while(true){let t;let A;try{const{done:A,value:r}=await e.controller.next();if(M(e)){break}t=A?undefined:r}catch(r){if(e.controller.ended&&!c.encodedBodySize){t=undefined}else{t=r;A=true}}if(t===undefined){T(e.controller.controller);finalizeResponse(e,i);return}c.decodedBodySize+=t?.byteLength??0;if(A){e.controller.terminate(t);return}const r=new Uint8Array(t);if(r.byteLength){e.controller.controller.enqueue(r)}if(oe(E)){e.controller.terminate();return}if(e.controller.controller.desiredSize<=0){return}}};function onAborted(t){if(M(e)){i.aborted=true;if(ie(E)){e.controller.controller.error(e.controller.serializedAbortReason)}}else{if(ie(E)){e.controller.controller.error(new TypeError("terminated",{cause:U(t)?t:undefined}))}}e.controller.connection.destroy()}return i;function dispatch({body:t}){const A=d(s);const r=e.controller.dispatcher;return new Promise(((n,o)=>r.dispatch({path:A.pathname+A.search,origin:A.origin,method:s.method,body:r.isMockActive?s.body&&(s.body.source||s.body.stream):t,headers:s.headersList.entries,maxRedirections:0,upgrade:s.mode==="websocket"?"websocket":undefined},{body:null,abort:null,onConnect(t){const{connection:A}=e.controller;c.finalConnectionTimingInfo=G(undefined,c.postRedirectStartTime,e.crossOriginIsolatedCapability);if(A.destroyed){t(new DOMException("The operation was aborted.","AbortError"))}else{e.controller.on("terminated",t);this.abort=A.abort=t}c.finalNetworkRequestStartTime=b(e.crossOriginIsolatedCapability)},onResponseStarted(){c.finalNetworkResponseStartTime=b(e.crossOriginIsolatedCapability)},onHeaders(e,t,A,r){if(e<200){return}let i="";const c=new a;for(let e=0;eA){o(new Error(`too many content-encodings in response: ${t.length}, maximum allowed is ${A}`));return true}for(let e=t.length-1;e>=0;--e){const A=t[e].trim();if(A==="x-gzip"||A==="gzip"){l.push(g.createGunzip({flush:g.constants.Z_SYNC_FLUSH,finishFlush:g.constants.Z_SYNC_FLUSH}))}else if(A==="deflate"){l.push(O({flush:g.constants.Z_SYNC_FLUSH,finishFlush:g.constants.Z_SYNC_FLUSH}))}else if(A==="br"){l.push(g.createBrotliDecompress({flush:g.constants.BROTLI_OPERATION_FLUSH,finishFlush:g.constants.BROTLI_OPERATION_FLUSH}))}else{l.length=0;break}}}const h=this.onError.bind(this);n({status:e,statusText:r,headersList:c,body:l.length?re(this.body,...l,(e=>{if(e){this.onError(e)}})).on("error",h):this.body.on("error",h)});return true},onData(t){if(e.controller.dump){return}const A=t;c.encodedBodySize+=A.byteLength;return this.body.push(A)},onComplete(){if(this.abort){e.controller.off("terminated",this.abort)}if(e.controller.onAborted){e.controller.off("terminated",e.controller.onAborted)}e.controller.ended=true;this.body.push(null)},onError(t){if(this.abort){e.controller.off("terminated",this.abort)}this.body?.destroy(t);e.controller.terminate(t);o(t)},onUpgrade(e,t,A){if(e!==101){return}const r=new a;for(let e=0;e{"use strict";const{extractBody:r,mixinBody:n,cloneBody:s,bodyUnusable:o}=A(4492);const{Headers:i,fill:a,HeadersList:c,setHeadersGuard:l,getHeadersGuard:g,setHeadersList:u,getHeadersList:h}=A(660);const{FinalizationRegistry:E}=A(6653)();const Q=A(3440);const B=A(7975);const{isValidHTTPToken:C,sameOrigin:I,environmentSettingsObject:d}=A(3168);const{forbiddenMethodsSet:f,corsSafeListedMethodsSet:p,referrerPolicy:y,requestRedirect:w,requestMode:m,requestCredentials:D,requestCache:k,requestDuplex:b}=A(4495);const{kEnumerableProperty:R,normalizedMethodRecordsBase:S,normalizedMethodRecords:F}=Q;const{kHeaders:N,kSignal:M,kState:U,kDispatcher:L}=A(3627);const{webidl:T}=A(5893);const{URLSerializer:v}=A(1900);const{kConstruct:Y}=A(6443);const H=A(4589);const{getMaxListeners:x,setMaxListeners:G,getEventListeners:J,defaultMaxListeners:V}=A(8474);const O=Symbol("abortController");const P=new E((({signal:e,abort:t})=>{e.removeEventListener("abort",t)}));const W=new WeakMap;function buildAbort(e){return abort;function abort(){const t=e.deref();if(t!==undefined){P.unregister(abort);this.removeEventListener("abort",abort);t.abort(this.reason);const e=W.get(t.signal);if(e!==undefined){if(e.size!==0){for(const t of e){const e=t.deref();if(e!==undefined){e.abort(this.reason)}}e.clear()}W.delete(t.signal)}}}}let q=false;class Request{constructor(e,t={}){T.util.markAsUncloneable(this);if(e===Y){return}const A="Request constructor";T.argumentLengthCheck(arguments,1,A);e=T.converters.RequestInfo(e,A,"input");t=T.converters.RequestInit(t,A,"init");let n=null;let s=null;const g=d.settingsObject.baseUrl;let E=null;if(typeof e==="string"){this[L]=t.dispatcher;let A;try{A=new URL(e,g)}catch(t){throw new TypeError("Failed to parse URL from "+e,{cause:t})}if(A.username||A.password){throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+e)}n=makeRequest({urlList:[A]});s="cors"}else{this[L]=t.dispatcher||e[L];H(e instanceof Request);n=e[U];E=e[M]}const B=d.settingsObject.origin;let y="client";if(n.window?.constructor?.name==="EnvironmentSettingsObject"&&I(n.window,B)){y=n.window}if(t.window!=null){throw new TypeError(`'window' option '${y}' must be null`)}if("window"in t){y="no-window"}n=makeRequest({method:n.method,headersList:n.headersList,unsafeRequest:n.unsafeRequest,client:d.settingsObject,window:y,priority:n.priority,origin:n.origin,referrer:n.referrer,referrerPolicy:n.referrerPolicy,mode:n.mode,credentials:n.credentials,cache:n.cache,redirect:n.redirect,integrity:n.integrity,keepalive:n.keepalive,reloadNavigation:n.reloadNavigation,historyNavigation:n.historyNavigation,urlList:[...n.urlList]});const w=Object.keys(t).length!==0;if(w){if(n.mode==="navigate"){n.mode="same-origin"}n.reloadNavigation=false;n.historyNavigation=false;n.origin="client";n.referrer="client";n.referrerPolicy="";n.url=n.urlList[n.urlList.length-1];n.urlList=[n.url]}if(t.referrer!==undefined){const e=t.referrer;if(e===""){n.referrer="no-referrer"}else{let t;try{t=new URL(e,g)}catch(t){throw new TypeError(`Referrer "${e}" is not a valid URL.`,{cause:t})}if(t.protocol==="about:"&&t.hostname==="client"||B&&!I(t,d.settingsObject.baseUrl)){n.referrer="client"}else{n.referrer=t}}}if(t.referrerPolicy!==undefined){n.referrerPolicy=t.referrerPolicy}let m;if(t.mode!==undefined){m=t.mode}else{m=s}if(m==="navigate"){throw T.errors.exception({header:"Request constructor",message:"invalid request mode navigate."})}if(m!=null){n.mode=m}if(t.credentials!==undefined){n.credentials=t.credentials}if(t.cache!==undefined){n.cache=t.cache}if(n.cache==="only-if-cached"&&n.mode!=="same-origin"){throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode")}if(t.redirect!==undefined){n.redirect=t.redirect}if(t.integrity!=null){n.integrity=String(t.integrity)}if(t.keepalive!==undefined){n.keepalive=Boolean(t.keepalive)}if(t.method!==undefined){let e=t.method;const A=F[e];if(A!==undefined){n.method=A}else{if(!C(e)){throw new TypeError(`'${e}' is not a valid HTTP method.`)}const t=e.toUpperCase();if(f.has(t)){throw new TypeError(`'${e}' HTTP method is unsupported.`)}e=S[t]??e;n.method=e}if(!q&&n.method==="patch"){process.emitWarning("Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.",{code:"UNDICI-FETCH-patch"});q=true}}if(t.signal!==undefined){E=t.signal}this[U]=n;const D=new AbortController;this[M]=D.signal;if(E!=null){if(!E||typeof E.aborted!=="boolean"||typeof E.addEventListener!=="function"){throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.")}if(E.aborted){D.abort(E.reason)}else{this[O]=D;const e=new WeakRef(D);const t=buildAbort(e);try{if(typeof x==="function"&&x(E)===V){G(1500,E)}else if(J(E,"abort").length>=V){G(1500,E)}}catch{}Q.addAbortListener(E,t);P.register(D,{signal:E,abort:t},t)}}this[N]=new i(Y);u(this[N],n.headersList);l(this[N],"request");if(m==="no-cors"){if(!p.has(n.method)){throw new TypeError(`'${n.method} is unsupported in no-cors mode.`)}l(this[N],"request-no-cors")}if(w){const e=h(this[N]);const A=t.headers!==undefined?t.headers:new c(e);e.clear();if(A instanceof c){for(const{name:t,value:r}of A.rawValues()){e.append(t,r,false)}e.cookies=A.cookies}else{a(this[N],A)}}const k=e instanceof Request?e[U].body:null;if((t.body!=null||k!=null)&&(n.method==="GET"||n.method==="HEAD")){throw new TypeError("Request with GET/HEAD method cannot have body.")}let b=null;if(t.body!=null){const[e,A]=r(t.body,n.keepalive);b=e;if(A&&!h(this[N]).contains("content-type",true)){this[N].append("content-type",A)}}const R=b??k;if(R!=null&&R.source==null){if(b!=null&&t.duplex==null){throw new TypeError("RequestInit: duplex option is required when sending a body.")}if(n.mode!=="same-origin"&&n.mode!=="cors"){throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"')}n.useCORSPreflightFlag=true}let v=R;if(b==null&&k!=null){if(o(e)){throw new TypeError("Cannot construct a Request with a Request object that has already been used.")}const t=new TransformStream;k.stream.pipeThrough(t);v={source:k.source,length:k.length,stream:t.readable}}this[U].body=v}get method(){T.brandCheck(this,Request);return this[U].method}get url(){T.brandCheck(this,Request);return v(this[U].url)}get headers(){T.brandCheck(this,Request);return this[N]}get destination(){T.brandCheck(this,Request);return this[U].destination}get referrer(){T.brandCheck(this,Request);if(this[U].referrer==="no-referrer"){return""}if(this[U].referrer==="client"){return"about:client"}return this[U].referrer.toString()}get referrerPolicy(){T.brandCheck(this,Request);return this[U].referrerPolicy}get mode(){T.brandCheck(this,Request);return this[U].mode}get credentials(){return this[U].credentials}get cache(){T.brandCheck(this,Request);return this[U].cache}get redirect(){T.brandCheck(this,Request);return this[U].redirect}get integrity(){T.brandCheck(this,Request);return this[U].integrity}get keepalive(){T.brandCheck(this,Request);return this[U].keepalive}get isReloadNavigation(){T.brandCheck(this,Request);return this[U].reloadNavigation}get isHistoryNavigation(){T.brandCheck(this,Request);return this[U].historyNavigation}get signal(){T.brandCheck(this,Request);return this[M]}get body(){T.brandCheck(this,Request);return this[U].body?this[U].body.stream:null}get bodyUsed(){T.brandCheck(this,Request);return!!this[U].body&&Q.isDisturbed(this[U].body.stream)}get duplex(){T.brandCheck(this,Request);return"half"}clone(){T.brandCheck(this,Request);if(o(this)){throw new TypeError("unusable")}const e=cloneRequest(this[U]);const t=new AbortController;if(this.signal.aborted){t.abort(this.signal.reason)}else{let e=W.get(this.signal);if(e===undefined){e=new Set;W.set(this.signal,e)}const A=new WeakRef(t);e.add(A);Q.addAbortListener(t.signal,buildAbort(A))}return fromInnerRequest(e,t.signal,g(this[N]))}[B.inspect.custom](e,t){if(t.depth===null){t.depth=2}t.colors??=true;const A={method:this.method,url:this.url,headers:this.headers,destination:this.destination,referrer:this.referrer,referrerPolicy:this.referrerPolicy,mode:this.mode,credentials:this.credentials,cache:this.cache,redirect:this.redirect,integrity:this.integrity,keepalive:this.keepalive,isReloadNavigation:this.isReloadNavigation,isHistoryNavigation:this.isHistoryNavigation,signal:this.signal};return`Request ${B.formatWithOptions(t,A)}`}}n(Request);function makeRequest(e){return{method:e.method??"GET",localURLsOnly:e.localURLsOnly??false,unsafeRequest:e.unsafeRequest??false,body:e.body??null,client:e.client??null,reservedClient:e.reservedClient??null,replacesClientId:e.replacesClientId??"",window:e.window??"client",keepalive:e.keepalive??false,serviceWorkers:e.serviceWorkers??"all",initiator:e.initiator??"",destination:e.destination??"",priority:e.priority??null,origin:e.origin??"client",policyContainer:e.policyContainer??"client",referrer:e.referrer??"client",referrerPolicy:e.referrerPolicy??"",mode:e.mode??"no-cors",useCORSPreflightFlag:e.useCORSPreflightFlag??false,credentials:e.credentials??"same-origin",useCredentials:e.useCredentials??false,cache:e.cache??"default",redirect:e.redirect??"follow",integrity:e.integrity??"",cryptoGraphicsNonceMetadata:e.cryptoGraphicsNonceMetadata??"",parserMetadata:e.parserMetadata??"",reloadNavigation:e.reloadNavigation??false,historyNavigation:e.historyNavigation??false,userActivation:e.userActivation??false,taintedOrigin:e.taintedOrigin??false,redirectCount:e.redirectCount??0,responseTainting:e.responseTainting??"basic",preventNoCacheCacheControlHeaderModification:e.preventNoCacheCacheControlHeaderModification??false,done:e.done??false,timingAllowFailed:e.timingAllowFailed??false,urlList:e.urlList,url:e.urlList[0],headersList:e.headersList?new c(e.headersList):new c}}function cloneRequest(e){const t=makeRequest({...e,body:null});if(e.body!=null){t.body=s(t,e.body)}return t}function fromInnerRequest(e,t,A){const r=new Request(Y);r[U]=e;r[M]=t;r[N]=new i(Y);u(r[N],e.headersList);l(r[N],A);return r}Object.defineProperties(Request.prototype,{method:R,url:R,headers:R,redirect:R,clone:R,signal:R,duplex:R,destination:R,body:R,bodyUsed:R,isHistoryNavigation:R,isReloadNavigation:R,keepalive:R,integrity:R,cache:R,credentials:R,attribute:R,referrerPolicy:R,referrer:R,mode:R,[Symbol.toStringTag]:{value:"Request",configurable:true}});T.converters.Request=T.interfaceConverter(Request);T.converters.RequestInfo=function(e,t,A){if(typeof e==="string"){return T.converters.USVString(e,t,A)}if(e instanceof Request){return T.converters.Request(e,t,A)}return T.converters.USVString(e,t,A)};T.converters.AbortSignal=T.interfaceConverter(AbortSignal);T.converters.RequestInit=T.dictionaryConverter([{key:"method",converter:T.converters.ByteString},{key:"headers",converter:T.converters.HeadersInit},{key:"body",converter:T.nullableConverter(T.converters.BodyInit)},{key:"referrer",converter:T.converters.USVString},{key:"referrerPolicy",converter:T.converters.DOMString,allowedValues:y},{key:"mode",converter:T.converters.DOMString,allowedValues:m},{key:"credentials",converter:T.converters.DOMString,allowedValues:D},{key:"cache",converter:T.converters.DOMString,allowedValues:k},{key:"redirect",converter:T.converters.DOMString,allowedValues:w},{key:"integrity",converter:T.converters.DOMString},{key:"keepalive",converter:T.converters.boolean},{key:"signal",converter:T.nullableConverter((e=>T.converters.AbortSignal(e,"RequestInit","signal",{strict:false})))},{key:"window",converter:T.converters.any},{key:"duplex",converter:T.converters.DOMString,allowedValues:b},{key:"dispatcher",converter:T.converters.any}]);e.exports={Request:Request,makeRequest:makeRequest,fromInnerRequest:fromInnerRequest,cloneRequest:cloneRequest}},9051:(e,t,A)=>{"use strict";const{Headers:r,HeadersList:n,fill:s,getHeadersGuard:o,setHeadersGuard:i,setHeadersList:a}=A(660);const{extractBody:c,cloneBody:l,mixinBody:g,hasFinalizationRegistry:u,streamRegistry:h,bodyUnusable:E}=A(4492);const Q=A(3440);const B=A(7975);const{kEnumerableProperty:C}=Q;const{isValidReasonPhrase:I,isCancelled:d,isAborted:f,isBlobLike:p,serializeJavascriptValueToJSONString:y,isErrorLike:w,isomorphicEncode:m,environmentSettingsObject:D}=A(3168);const{redirectStatusSet:k,nullBodyStatus:b}=A(4495);const{kState:R,kHeaders:S}=A(3627);const{webidl:F}=A(5893);const{FormData:N}=A(5910);const{URLSerializer:M}=A(1900);const{kConstruct:U}=A(6443);const L=A(4589);const{types:T}=A(7975);const v=new TextEncoder("utf-8");class Response{static error(){const e=fromInnerResponse(makeNetworkError(),"immutable");return e}static json(e,t={}){F.argumentLengthCheck(arguments,1,"Response.json");if(t!==null){t=F.converters.ResponseInit(t)}const A=v.encode(y(e));const r=c(A);const n=fromInnerResponse(makeResponse({}),"response");initializeResponse(n,t,{body:r[0],type:"application/json"});return n}static redirect(e,t=302){F.argumentLengthCheck(arguments,1,"Response.redirect");e=F.converters.USVString(e);t=F.converters["unsigned short"](t);let A;try{A=new URL(e,D.settingsObject.baseUrl)}catch(t){throw new TypeError(`Failed to parse URL from ${e}`,{cause:t})}if(!k.has(t)){throw new RangeError(`Invalid status code ${t}`)}const r=fromInnerResponse(makeResponse({}),"immutable");r[R].status=t;const n=m(M(A));r[R].headersList.append("location",n,true);return r}constructor(e=null,t={}){F.util.markAsUncloneable(this);if(e===U){return}if(e!==null){e=F.converters.BodyInit(e)}t=F.converters.ResponseInit(t);this[R]=makeResponse({});this[S]=new r(U);i(this[S],"response");a(this[S],this[R].headersList);let A=null;if(e!=null){const[t,r]=c(e);A={body:t,type:r}}initializeResponse(this,t,A)}get type(){F.brandCheck(this,Response);return this[R].type}get url(){F.brandCheck(this,Response);const e=this[R].urlList;const t=e[e.length-1]??null;if(t===null){return""}return M(t,true)}get redirected(){F.brandCheck(this,Response);return this[R].urlList.length>1}get status(){F.brandCheck(this,Response);return this[R].status}get ok(){F.brandCheck(this,Response);return this[R].status>=200&&this[R].status<=299}get statusText(){F.brandCheck(this,Response);return this[R].statusText}get headers(){F.brandCheck(this,Response);return this[S]}get body(){F.brandCheck(this,Response);return this[R].body?this[R].body.stream:null}get bodyUsed(){F.brandCheck(this,Response);return!!this[R].body&&Q.isDisturbed(this[R].body.stream)}clone(){F.brandCheck(this,Response);if(E(this)){throw F.errors.exception({header:"Response.clone",message:"Body has already been consumed."})}const e=cloneResponse(this[R]);if(u&&this[R].body?.stream){h.register(this,new WeakRef(this[R].body.stream))}return fromInnerResponse(e,o(this[S]))}[B.inspect.custom](e,t){if(t.depth===null){t.depth=2}t.colors??=true;const A={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${B.formatWithOptions(t,A)}`}}g(Response);Object.defineProperties(Response.prototype,{type:C,url:C,status:C,ok:C,redirected:C,statusText:C,headers:C,clone:C,body:C,bodyUsed:C,[Symbol.toStringTag]:{value:"Response",configurable:true}});Object.defineProperties(Response,{json:C,redirect:C,error:C});function cloneResponse(e){if(e.internalResponse){return filterResponse(cloneResponse(e.internalResponse),e.type)}const t=makeResponse({...e,body:null});if(e.body!=null){t.body=l(t,e.body)}return t}function makeResponse(e){return{aborted:false,rangeRequested:false,timingAllowPassed:false,requestIncludesCredentials:false,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...e,headersList:e?.headersList?new n(e?.headersList):new n,urlList:e?.urlList?[...e.urlList]:[]}}function makeNetworkError(e){const t=w(e);return makeResponse({type:"error",status:0,error:t?e:new Error(e?String(e):e),aborted:e&&e.name==="AbortError"})}function isNetworkError(e){return e.type==="error"&&e.status===0}function makeFilteredResponse(e,t){t={internalResponse:e,...t};return new Proxy(e,{get(e,A){return A in t?t[A]:e[A]},set(e,A,r){L(!(A in t));e[A]=r;return true}})}function filterResponse(e,t){if(t==="basic"){return makeFilteredResponse(e,{type:"basic",headersList:e.headersList})}else if(t==="cors"){return makeFilteredResponse(e,{type:"cors",headersList:e.headersList})}else if(t==="opaque"){return makeFilteredResponse(e,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null})}else if(t==="opaqueredirect"){return makeFilteredResponse(e,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null})}else{L(false)}}function makeAppropriateNetworkError(e,t=null){L(d(e));return f(e)?makeNetworkError(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:t})):makeNetworkError(Object.assign(new DOMException("Request was cancelled."),{cause:t}))}function initializeResponse(e,t,A){if(t.status!==null&&(t.status<200||t.status>599)){throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.')}if("statusText"in t&&t.statusText!=null){if(!I(String(t.statusText))){throw new TypeError("Invalid statusText")}}if("status"in t&&t.status!=null){e[R].status=t.status}if("statusText"in t&&t.statusText!=null){e[R].statusText=t.statusText}if("headers"in t&&t.headers!=null){s(e[S],t.headers)}if(A){if(b.includes(e.status)){throw F.errors.exception({header:"Response constructor",message:`Invalid response status code ${e.status}`})}e[R].body=A.body;if(A.type!=null&&!e[R].headersList.contains("content-type",true)){e[R].headersList.append("content-type",A.type,true)}}}function fromInnerResponse(e,t){const A=new Response(U);A[R]=e;A[S]=new r(U);a(A[S],e.headersList);i(A[S],t);if(u&&e.body?.stream){h.register(A,new WeakRef(e.body.stream))}return A}F.converters.ReadableStream=F.interfaceConverter(ReadableStream);F.converters.FormData=F.interfaceConverter(N);F.converters.URLSearchParams=F.interfaceConverter(URLSearchParams);F.converters.XMLHttpRequestBodyInit=function(e,t,A){if(typeof e==="string"){return F.converters.USVString(e,t,A)}if(p(e)){return F.converters.Blob(e,t,A,{strict:false})}if(ArrayBuffer.isView(e)||T.isArrayBuffer(e)){return F.converters.BufferSource(e,t,A)}if(Q.isFormDataLike(e)){return F.converters.FormData(e,t,A,{strict:false})}if(e instanceof URLSearchParams){return F.converters.URLSearchParams(e,t,A)}return F.converters.DOMString(e,t,A)};F.converters.BodyInit=function(e,t,A){if(e instanceof ReadableStream){return F.converters.ReadableStream(e,t,A)}if(e?.[Symbol.asyncIterator]){return e}return F.converters.XMLHttpRequestBodyInit(e,t,A)};F.converters.ResponseInit=F.dictionaryConverter([{key:"status",converter:F.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:F.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:F.converters.HeadersInit}]);e.exports={isNetworkError:isNetworkError,makeNetworkError:makeNetworkError,makeResponse:makeResponse,makeAppropriateNetworkError:makeAppropriateNetworkError,filterResponse:filterResponse,Response:Response,cloneResponse:cloneResponse,fromInnerResponse:fromInnerResponse}},3627:e=>{"use strict";e.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kDispatcher:Symbol("dispatcher")}},3168:(e,t,A)=>{"use strict";const{Transform:r}=A(7075);const n=A(8522);const{redirectStatusSet:s,referrerPolicySet:o,badPortsSet:i}=A(4495);const{getGlobalOrigin:a}=A(1059);const{collectASequenceOfCodePoints:c,collectAnHTTPQuotedString:l,removeChars:g,parseMIMEType:u}=A(1900);const{performance:h}=A(643);const{isBlobLike:E,ReadableStreamFrom:Q,isValidHTTPToken:B,normalizedMethodRecordsBase:C}=A(3440);const I=A(4589);const{isUint8Array:d}=A(3429);const{webidl:f}=A(5893);let p=[];let y;try{y=A(7598);const e=["sha256","sha384","sha512"];p=y.getHashes().filter((t=>e.includes(t)))}catch{}function responseURL(e){const t=e.urlList;const A=t.length;return A===0?null:t[A-1].toString()}function responseLocationURL(e,t){if(!s.has(e.status)){return null}let A=e.headersList.get("location",true);if(A!==null&&isValidHeaderValue(A)){if(!isValidEncodedURL(A)){A=normalizeBinaryStringToUtf8(A)}A=new URL(A,responseURL(e))}if(A&&!A.hash){A.hash=t}return A}function isValidEncodedURL(e){for(let t=0;t126||A<32){return false}}return true}function normalizeBinaryStringToUtf8(e){return Buffer.from(e,"binary").toString("utf8")}function requestCurrentURL(e){return e.urlList[e.urlList.length-1]}function requestBadPort(e){const t=requestCurrentURL(e);if(urlIsHttpHttpsScheme(t)&&i.has(t.port)){return"blocked"}return"allowed"}function isErrorLike(e){return e instanceof Error||(e?.constructor?.name==="Error"||e?.constructor?.name==="DOMException")}function isValidReasonPhrase(e){for(let t=0;t=32&&A<=126||A>=128&&A<=255)){return false}}return true}const w=B;function isValidHeaderValue(e){return(e[0]==="\t"||e[0]===" "||e[e.length-1]==="\t"||e[e.length-1]===" "||e.includes("\n")||e.includes("\r")||e.includes("\0"))===false}function setRequestReferrerPolicyOnRedirect(e,t){const{headersList:A}=t;const r=(A.get("referrer-policy",true)??"").split(",");let n="";if(r.length>0){for(let e=r.length;e!==0;e--){const t=r[e-1].trim();if(o.has(t)){n=t;break}}}if(n!==""){e.referrerPolicy=n}}function crossOriginResourcePolicyCheck(){return"allowed"}function corsCheck(){return"success"}function TAOCheck(){return"success"}function appendFetchMetadata(e){let t=null;t=e.mode;e.headersList.set("sec-fetch-mode",t,true)}function appendRequestOriginHeader(e){let t=e.origin;if(t==="client"||t===undefined){return}if(e.responseTainting==="cors"||e.mode==="websocket"){e.headersList.append("origin",t,true)}else if(e.method!=="GET"&&e.method!=="HEAD"){switch(e.referrerPolicy){case"no-referrer":t=null;break;case"no-referrer-when-downgrade":case"strict-origin":case"strict-origin-when-cross-origin":if(e.origin&&urlHasHttpsScheme(e.origin)&&!urlHasHttpsScheme(requestCurrentURL(e))){t=null}break;case"same-origin":if(!sameOrigin(e,requestCurrentURL(e))){t=null}break;default:}e.headersList.append("origin",t,true)}}function coarsenTime(e,t){return e}function clampAndCoarsenConnectionTimingInfo(e,t,A){if(!e?.startTime||e.startTime4096){r=n}const s=sameOrigin(e,r);const o=isURLPotentiallyTrustworthy(r)&&!isURLPotentiallyTrustworthy(e.url);switch(t){case"origin":return n!=null?n:stripURLForReferrer(A,true);case"unsafe-url":return r;case"same-origin":return s?n:"no-referrer";case"origin-when-cross-origin":return s?r:n;case"strict-origin-when-cross-origin":{const t=requestCurrentURL(e);if(sameOrigin(r,t)){return r}if(isURLPotentiallyTrustworthy(r)&&!isURLPotentiallyTrustworthy(t)){return"no-referrer"}return n}case"strict-origin":case"no-referrer-when-downgrade":default:return o?"no-referrer":n}}function stripURLForReferrer(e,t){I(e instanceof URL);e=new URL(e);if(e.protocol==="file:"||e.protocol==="about:"||e.protocol==="blank:"){return"no-referrer"}e.username="";e.password="";e.hash="";if(t){e.pathname="";e.search=""}return e}function isURLPotentiallyTrustworthy(e){if(!(e instanceof URL)){return false}if(e.href==="about:blank"||e.href==="about:srcdoc"){return true}if(e.protocol==="data:")return true;if(e.protocol==="file:")return true;return isOriginPotentiallyTrustworthy(e.origin);function isOriginPotentiallyTrustworthy(e){if(e==null||e==="null")return false;const t=new URL(e);if(t.protocol==="https:"||t.protocol==="wss:"){return true}if(/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(t.hostname)||(t.hostname==="localhost"||t.hostname.includes("localhost."))||t.hostname.endsWith(".localhost")){return true}return false}}function bytesMatch(e,t){if(y===undefined){return true}const A=parseMetadata(t);if(A==="no metadata"){return true}if(A.length===0){return true}const r=getStrongestMetadata(A);const n=filterMetadataListByAlgorithm(A,r);for(const t of n){const A=t.algo;const r=t.hash;let n=y.createHash(A).update(e).digest("base64");if(n[n.length-1]==="="){if(n[n.length-2]==="="){n=n.slice(0,-2)}else{n=n.slice(0,-1)}}if(compareBase64Mixed(n,r)){return true}}return false}const m=/(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\s|$)( +[!-~]*)?)?/i;function parseMetadata(e){const t=[];let A=true;for(const r of e.split(" ")){A=false;const e=m.exec(r);if(e===null||e.groups===undefined||e.groups.algo===undefined){continue}const n=e.groups.algo.toLowerCase();if(p.includes(n)){t.push(e.groups)}}if(A===true){return"no metadata"}return t}function getStrongestMetadata(e){let t=e[0].algo;if(t[3]==="5"){return t}for(let A=1;A{e=A;t=r}));return{promise:A,resolve:e,reject:t}}function isAborted(e){return e.controller.state==="aborted"}function isCancelled(e){return e.controller.state==="aborted"||e.controller.state==="terminated"}function normalizeMethod(e){return C[e.toLowerCase()]??e}function serializeJavascriptValueToJSONString(e){const t=JSON.stringify(e);if(t===undefined){throw new TypeError("Value is not JSON serializable")}I(typeof t==="string");return t}const D=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function createIterator(e,t,A=0,r=1){class FastIterableIterator{#W;#q;#_;constructor(e,t){this.#W=e;this.#q=t;this.#_=0}next(){if(typeof this!=="object"||this===null||!(#W in this)){throw new TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`)}const n=this.#_;const s=this.#W[t];const o=s.length;if(n>=o){return{value:undefined,done:true}}const{[A]:i,[r]:a}=s[n];this.#_=n+1;let c;switch(this.#q){case"key":c=i;break;case"value":c=a;break;case"key+value":c=[i,a];break}return{value:c,done:false}}}delete FastIterableIterator.prototype.constructor;Object.setPrototypeOf(FastIterableIterator.prototype,D);Object.defineProperties(FastIterableIterator.prototype,{[Symbol.toStringTag]:{writable:false,enumerable:false,configurable:true,value:`${e} Iterator`},next:{writable:true,enumerable:true,configurable:true}});return function(e,t){return new FastIterableIterator(e,t)}}function iteratorMixin(e,t,A,r=0,n=1){const s=createIterator(e,A,r,n);const o={keys:{writable:true,enumerable:true,configurable:true,value:function keys(){f.brandCheck(this,t);return s(this,"key")}},values:{writable:true,enumerable:true,configurable:true,value:function values(){f.brandCheck(this,t);return s(this,"value")}},entries:{writable:true,enumerable:true,configurable:true,value:function entries(){f.brandCheck(this,t);return s(this,"key+value")}},forEach:{writable:true,enumerable:true,configurable:true,value:function forEach(A,r=globalThis){f.brandCheck(this,t);f.argumentLengthCheck(arguments,1,`${e}.forEach`);if(typeof A!=="function"){throw new TypeError(`Failed to execute 'forEach' on '${e}': parameter 1 is not of type 'Function'.`)}for(const{0:e,1:t}of s(this,"key+value")){A.call(r,t,e,this)}}}};return Object.defineProperties(t.prototype,{...o,[Symbol.iterator]:{writable:true,enumerable:false,configurable:true,value:o.entries.value}})}async function fullyReadBody(e,t,A){const r=t;const n=A;let s;try{s=e.stream.getReader()}catch(e){n(e);return}try{r(await readAllBytes(s))}catch(e){n(e)}}function isReadableStreamLike(e){return e instanceof ReadableStream||e[Symbol.toStringTag]==="ReadableStream"&&typeof e.tee==="function"}function readableStreamClose(e){try{e.close();e.byobRequest?.respond(0)}catch(e){if(!e.message.includes("Controller is already closed")&&!e.message.includes("ReadableStream is already closed")){throw e}}}const k=/[^\x00-\xFF]/;function isomorphicEncode(e){I(!k.test(e));return e}async function readAllBytes(e){const t=[];let A=0;while(true){const{done:r,value:n}=await e.read();if(r){return Buffer.concat(t,A)}if(!d(n)){throw new TypeError("Received non-Uint8Array chunk")}t.push(n);A+=n.length}}function urlIsLocal(e){I("protocol"in e);const t=e.protocol;return t==="about:"||t==="blob:"||t==="data:"}function urlHasHttpsScheme(e){return typeof e==="string"&&e[5]===":"&&e[0]==="h"&&e[1]==="t"&&e[2]==="t"&&e[3]==="p"&&e[4]==="s"||e.protocol==="https:"}function urlIsHttpHttpsScheme(e){I("protocol"in e);const t=e.protocol;return t==="http:"||t==="https:"}function simpleRangeHeaderValue(e,t){const A=e;if(!A.startsWith("bytes")){return"failure"}const r={position:5};if(t){c((e=>e==="\t"||e===" "),A,r)}if(A.charCodeAt(r.position)!==61){return"failure"}r.position++;if(t){c((e=>e==="\t"||e===" "),A,r)}const n=c((e=>{const t=e.charCodeAt(0);return t>=48&&t<=57}),A,r);const s=n.length?Number(n):null;if(t){c((e=>e==="\t"||e===" "),A,r)}if(A.charCodeAt(r.position)!==45){return"failure"}r.position++;if(t){c((e=>e==="\t"||e===" "),A,r)}const o=c((e=>{const t=e.charCodeAt(0);return t>=48&&t<=57}),A,r);const i=o.length?Number(o):null;if(r.positioni){return"failure"}return{rangeStartValue:s,rangeEndValue:i}}function buildContentRange(e,t,A){let r="bytes ";r+=isomorphicEncode(`${e}`);r+="-";r+=isomorphicEncode(`${t}`);r+="/";r+=isomorphicEncode(`${A}`);return r}class InflateStream extends r{#j;constructor(e){super();this.#j=e}_transform(e,t,A){if(!this._inflateStream){if(e.length===0){A();return}this._inflateStream=(e[0]&15)===8?n.createInflate(this.#j):n.createInflateRaw(this.#j);this._inflateStream.on("data",this.push.bind(this));this._inflateStream.on("end",(()=>this.push(null)));this._inflateStream.on("error",(e=>this.destroy(e)))}this._inflateStream.write(e,t,A)}_final(e){if(this._inflateStream){this._inflateStream.end();this._inflateStream=null}e()}}function createInflate(e){return new InflateStream(e)}function extractMimeType(e){let t=null;let A=null;let r=null;const n=getDecodeSplit("content-type",e);if(n===null){return"failure"}for(const e of n){const n=u(e);if(n==="failure"||n.essence==="*/*"){continue}r=n;if(r.essence!==A){t=null;if(r.parameters.has("charset")){t=r.parameters.get("charset")}A=r.essence}else if(!r.parameters.has("charset")&&t!==null){r.parameters.set("charset",t)}}if(r==null){return"failure"}return r}function gettingDecodingSplitting(e){const t=e;const A={position:0};const r=[];let n="";while(A.positione!=='"'&&e!==","),t,A);if(A.positione===9||e===32));r.push(n);n=""}return r}function getDecodeSplit(e,t){const A=t.get(e,true);if(A===null){return null}return gettingDecodingSplitting(A)}const b=new TextDecoder;function utf8DecodeBytes(e){if(e.length===0){return""}if(e[0]===239&&e[1]===187&&e[2]===191){e=e.subarray(3)}const t=b.decode(e);return t}class EnvironmentSettingsObjectBase{get baseUrl(){return a()}get origin(){return this.baseUrl?.origin}policyContainer=makePolicyContainer()}class EnvironmentSettingsObject{settingsObject=new EnvironmentSettingsObjectBase}const R=new EnvironmentSettingsObject;e.exports={isAborted:isAborted,isCancelled:isCancelled,isValidEncodedURL:isValidEncodedURL,createDeferredPromise:createDeferredPromise,ReadableStreamFrom:Q,tryUpgradeRequestToAPotentiallyTrustworthyURL:tryUpgradeRequestToAPotentiallyTrustworthyURL,clampAndCoarsenConnectionTimingInfo:clampAndCoarsenConnectionTimingInfo,coarsenedSharedCurrentTime:coarsenedSharedCurrentTime,determineRequestsReferrer:determineRequestsReferrer,makePolicyContainer:makePolicyContainer,clonePolicyContainer:clonePolicyContainer,appendFetchMetadata:appendFetchMetadata,appendRequestOriginHeader:appendRequestOriginHeader,TAOCheck:TAOCheck,corsCheck:corsCheck,crossOriginResourcePolicyCheck:crossOriginResourcePolicyCheck,createOpaqueTimingInfo:createOpaqueTimingInfo,setRequestReferrerPolicyOnRedirect:setRequestReferrerPolicyOnRedirect,isValidHTTPToken:B,requestBadPort:requestBadPort,requestCurrentURL:requestCurrentURL,responseURL:responseURL,responseLocationURL:responseLocationURL,isBlobLike:E,isURLPotentiallyTrustworthy:isURLPotentiallyTrustworthy,isValidReasonPhrase:isValidReasonPhrase,sameOrigin:sameOrigin,normalizeMethod:normalizeMethod,serializeJavascriptValueToJSONString:serializeJavascriptValueToJSONString,iteratorMixin:iteratorMixin,createIterator:createIterator,isValidHeaderName:w,isValidHeaderValue:isValidHeaderValue,isErrorLike:isErrorLike,fullyReadBody:fullyReadBody,bytesMatch:bytesMatch,isReadableStreamLike:isReadableStreamLike,readableStreamClose:readableStreamClose,isomorphicEncode:isomorphicEncode,urlIsLocal:urlIsLocal,urlHasHttpsScheme:urlHasHttpsScheme,urlIsHttpHttpsScheme:urlIsHttpHttpsScheme,readAllBytes:readAllBytes,simpleRangeHeaderValue:simpleRangeHeaderValue,buildContentRange:buildContentRange,parseMetadata:parseMetadata,createInflate:createInflate,extractMimeType:extractMimeType,getDecodeSplit:getDecodeSplit,utf8DecodeBytes:utf8DecodeBytes,environmentSettingsObject:R}},5893:(e,t,A)=>{"use strict";const{types:r,inspect:n}=A(7975);const{markAsUncloneable:s}=A(5919);const{toUSVString:o}=A(3440);const i={};i.converters={};i.util={};i.errors={};i.errors.exception=function(e){return new TypeError(`${e.header}: ${e.message}`)};i.errors.conversionFailed=function(e){const t=e.types.length===1?"":" one of";const A=`${e.argument} could not be converted to`+`${t}: ${e.types.join(", ")}.`;return i.errors.exception({header:e.prefix,message:A})};i.errors.invalidArgument=function(e){return i.errors.exception({header:e.prefix,message:`"${e.value}" is an invalid ${e.type}.`})};i.brandCheck=function(e,t,A){if(A?.strict!==false){if(!(e instanceof t)){const e=new TypeError("Illegal invocation");e.code="ERR_INVALID_THIS";throw e}}else{if(e?.[Symbol.toStringTag]!==t.prototype[Symbol.toStringTag]){const e=new TypeError("Illegal invocation");e.code="ERR_INVALID_THIS";throw e}}};i.argumentLengthCheck=function({length:e},t,A){if(e{});i.util.ConvertToInt=function(e,t,A,r){let n;let s;if(t===64){n=Math.pow(2,53)-1;if(A==="unsigned"){s=0}else{s=Math.pow(-2,53)+1}}else if(A==="unsigned"){s=0;n=Math.pow(2,t)-1}else{s=Math.pow(-2,t)-1;n=Math.pow(2,t-1)-1}let o=Number(e);if(o===0){o=0}if(r?.enforceRange===true){if(Number.isNaN(o)||o===Number.POSITIVE_INFINITY||o===Number.NEGATIVE_INFINITY){throw i.errors.exception({header:"Integer conversion",message:`Could not convert ${i.util.Stringify(e)} to an integer.`})}o=i.util.IntegerPart(o);if(on){throw i.errors.exception({header:"Integer conversion",message:`Value must be between ${s}-${n}, got ${o}.`})}return o}if(!Number.isNaN(o)&&r?.clamp===true){o=Math.min(Math.max(o,s),n);if(Math.floor(o)%2===0){o=Math.floor(o)}else{o=Math.ceil(o)}return o}if(Number.isNaN(o)||o===0&&Object.is(0,o)||o===Number.POSITIVE_INFINITY||o===Number.NEGATIVE_INFINITY){return 0}o=i.util.IntegerPart(o);o=o%Math.pow(2,t);if(A==="signed"&&o>=Math.pow(2,t)-1){return o-Math.pow(2,t)}return o};i.util.IntegerPart=function(e){const t=Math.floor(Math.abs(e));if(e<0){return-1*t}return t};i.util.Stringify=function(e){const t=i.util.Type(e);switch(t){case"Symbol":return`Symbol(${e.description})`;case"Object":return n(e);case"String":return`"${e}"`;default:return`${e}`}};i.sequenceConverter=function(e){return(t,A,r,n)=>{if(i.util.Type(t)!=="Object"){throw i.errors.exception({header:A,message:`${r} (${i.util.Stringify(t)}) is not iterable.`})}const s=typeof n==="function"?n():t?.[Symbol.iterator]?.();const o=[];let a=0;if(s===undefined||typeof s.next!=="function"){throw i.errors.exception({header:A,message:`${r} is not iterable.`})}while(true){const{done:t,value:n}=s.next();if(t){break}o.push(e(n,A,`${r}[${a++}]`))}return o}};i.recordConverter=function(e,t){return(A,n,s)=>{if(i.util.Type(A)!=="Object"){throw i.errors.exception({header:n,message:`${s} ("${i.util.Type(A)}") is not an Object.`})}const o={};if(!r.isProxy(A)){const r=[...Object.getOwnPropertyNames(A),...Object.getOwnPropertySymbols(A)];for(const i of r){const r=e(i,n,s);const a=t(A[i],n,s);o[r]=a}return o}const a=Reflect.ownKeys(A);for(const r of a){const i=Reflect.getOwnPropertyDescriptor(A,r);if(i?.enumerable){const i=e(r,n,s);const a=t(A[r],n,s);o[i]=a}}return o}};i.interfaceConverter=function(e){return(t,A,r,n)=>{if(n?.strict!==false&&!(t instanceof e)){throw i.errors.exception({header:A,message:`Expected ${r} ("${i.util.Stringify(t)}") to be an instance of ${e.name}.`})}return t}};i.dictionaryConverter=function(e){return(t,A,r)=>{const n=i.util.Type(t);const s={};if(n==="Null"||n==="Undefined"){return s}else if(n!=="Object"){throw i.errors.exception({header:A,message:`Expected ${t} to be one of: Null, Undefined, Object.`})}for(const n of e){const{key:e,defaultValue:o,required:a,converter:c}=n;if(a===true){if(!Object.hasOwn(t,e)){throw i.errors.exception({header:A,message:`Missing required key "${e}".`})}}let l=t[e];const g=Object.hasOwn(n,"defaultValue");if(g&&l!==null){l??=o()}if(a||g||l!==undefined){l=c(l,A,`${r}.${e}`);if(n.allowedValues&&!n.allowedValues.includes(l)){throw i.errors.exception({header:A,message:`${l} is not an accepted type. Expected one of ${n.allowedValues.join(", ")}.`})}s[e]=l}}return s}};i.nullableConverter=function(e){return(t,A,r)=>{if(t===null){return t}return e(t,A,r)}};i.converters.DOMString=function(e,t,A,r){if(e===null&&r?.legacyNullToEmptyString){return""}if(typeof e==="symbol"){throw i.errors.exception({header:t,message:`${A} is a symbol, which cannot be converted to a DOMString.`})}return String(e)};i.converters.ByteString=function(e,t,A){const r=i.converters.DOMString(e,t,A);for(let e=0;e255){throw new TypeError("Cannot convert argument to a ByteString because the character at "+`index ${e} has a value of ${r.charCodeAt(e)} which is greater than 255.`)}}return r};i.converters.USVString=o;i.converters.boolean=function(e){const t=Boolean(e);return t};i.converters.any=function(e){return e};i.converters["long long"]=function(e,t,A){const r=i.util.ConvertToInt(e,64,"signed",undefined,t,A);return r};i.converters["unsigned long long"]=function(e,t,A){const r=i.util.ConvertToInt(e,64,"unsigned",undefined,t,A);return r};i.converters["unsigned long"]=function(e,t,A){const r=i.util.ConvertToInt(e,32,"unsigned",undefined,t,A);return r};i.converters["unsigned short"]=function(e,t,A,r){const n=i.util.ConvertToInt(e,16,"unsigned",r,t,A);return n};i.converters.ArrayBuffer=function(e,t,A,n){if(i.util.Type(e)!=="Object"||!r.isAnyArrayBuffer(e)){throw i.errors.conversionFailed({prefix:t,argument:`${A} ("${i.util.Stringify(e)}")`,types:["ArrayBuffer"]})}if(n?.allowShared===false&&r.isSharedArrayBuffer(e)){throw i.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}if(e.resizable||e.growable){throw i.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."})}return e};i.converters.TypedArray=function(e,t,A,n,s){if(i.util.Type(e)!=="Object"||!r.isTypedArray(e)||e.constructor.name!==t.name){throw i.errors.conversionFailed({prefix:A,argument:`${n} ("${i.util.Stringify(e)}")`,types:[t.name]})}if(s?.allowShared===false&&r.isSharedArrayBuffer(e.buffer)){throw i.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}if(e.buffer.resizable||e.buffer.growable){throw i.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."})}return e};i.converters.DataView=function(e,t,A,n){if(i.util.Type(e)!=="Object"||!r.isDataView(e)){throw i.errors.exception({header:t,message:`${A} is not a DataView.`})}if(n?.allowShared===false&&r.isSharedArrayBuffer(e.buffer)){throw i.errors.exception({header:"ArrayBuffer",message:"SharedArrayBuffer is not allowed."})}if(e.buffer.resizable||e.buffer.growable){throw i.errors.exception({header:"ArrayBuffer",message:"Received a resizable ArrayBuffer."})}return e};i.converters.BufferSource=function(e,t,A,n){if(r.isAnyArrayBuffer(e)){return i.converters.ArrayBuffer(e,t,A,{...n,allowShared:false})}if(r.isTypedArray(e)){return i.converters.TypedArray(e,e.constructor,t,A,{...n,allowShared:false})}if(r.isDataView(e)){return i.converters.DataView(e,t,A,{...n,allowShared:false})}throw i.errors.conversionFailed({prefix:t,argument:`${A} ("${i.util.Stringify(e)}")`,types:["BufferSource"]})};i.converters["sequence"]=i.sequenceConverter(i.converters.ByteString);i.converters["sequence>"]=i.sequenceConverter(i.converters["sequence"]);i.converters["record"]=i.recordConverter(i.converters.ByteString,i.converters.ByteString);e.exports={webidl:i}},2607:e=>{"use strict";function getEncoding(e){if(!e){return"failure"}switch(e.trim().toLowerCase()){case"unicode-1-1-utf-8":case"unicode11utf8":case"unicode20utf8":case"utf-8":case"utf8":case"x-unicode20utf8":return"UTF-8";case"866":case"cp866":case"csibm866":case"ibm866":return"IBM866";case"csisolatin2":case"iso-8859-2":case"iso-ir-101":case"iso8859-2":case"iso88592":case"iso_8859-2":case"iso_8859-2:1987":case"l2":case"latin2":return"ISO-8859-2";case"csisolatin3":case"iso-8859-3":case"iso-ir-109":case"iso8859-3":case"iso88593":case"iso_8859-3":case"iso_8859-3:1988":case"l3":case"latin3":return"ISO-8859-3";case"csisolatin4":case"iso-8859-4":case"iso-ir-110":case"iso8859-4":case"iso88594":case"iso_8859-4":case"iso_8859-4:1988":case"l4":case"latin4":return"ISO-8859-4";case"csisolatincyrillic":case"cyrillic":case"iso-8859-5":case"iso-ir-144":case"iso8859-5":case"iso88595":case"iso_8859-5":case"iso_8859-5:1988":return"ISO-8859-5";case"arabic":case"asmo-708":case"csiso88596e":case"csiso88596i":case"csisolatinarabic":case"ecma-114":case"iso-8859-6":case"iso-8859-6-e":case"iso-8859-6-i":case"iso-ir-127":case"iso8859-6":case"iso88596":case"iso_8859-6":case"iso_8859-6:1987":return"ISO-8859-6";case"csisolatingreek":case"ecma-118":case"elot_928":case"greek":case"greek8":case"iso-8859-7":case"iso-ir-126":case"iso8859-7":case"iso88597":case"iso_8859-7":case"iso_8859-7:1987":case"sun_eu_greek":return"ISO-8859-7";case"csiso88598e":case"csisolatinhebrew":case"hebrew":case"iso-8859-8":case"iso-8859-8-e":case"iso-ir-138":case"iso8859-8":case"iso88598":case"iso_8859-8":case"iso_8859-8:1988":case"visual":return"ISO-8859-8";case"csiso88598i":case"iso-8859-8-i":case"logical":return"ISO-8859-8-I";case"csisolatin6":case"iso-8859-10":case"iso-ir-157":case"iso8859-10":case"iso885910":case"l6":case"latin6":return"ISO-8859-10";case"iso-8859-13":case"iso8859-13":case"iso885913":return"ISO-8859-13";case"iso-8859-14":case"iso8859-14":case"iso885914":return"ISO-8859-14";case"csisolatin9":case"iso-8859-15":case"iso8859-15":case"iso885915":case"iso_8859-15":case"l9":return"ISO-8859-15";case"iso-8859-16":return"ISO-8859-16";case"cskoi8r":case"koi":case"koi8":case"koi8-r":case"koi8_r":return"KOI8-R";case"koi8-ru":case"koi8-u":return"KOI8-U";case"csmacintosh":case"mac":case"macintosh":case"x-mac-roman":return"macintosh";case"iso-8859-11":case"iso8859-11":case"iso885911":case"tis-620":case"windows-874":return"windows-874";case"cp1250":case"windows-1250":case"x-cp1250":return"windows-1250";case"cp1251":case"windows-1251":case"x-cp1251":return"windows-1251";case"ansi_x3.4-1968":case"ascii":case"cp1252":case"cp819":case"csisolatin1":case"ibm819":case"iso-8859-1":case"iso-ir-100":case"iso8859-1":case"iso88591":case"iso_8859-1":case"iso_8859-1:1987":case"l1":case"latin1":case"us-ascii":case"windows-1252":case"x-cp1252":return"windows-1252";case"cp1253":case"windows-1253":case"x-cp1253":return"windows-1253";case"cp1254":case"csisolatin5":case"iso-8859-9":case"iso-ir-148":case"iso8859-9":case"iso88599":case"iso_8859-9":case"iso_8859-9:1989":case"l5":case"latin5":case"windows-1254":case"x-cp1254":return"windows-1254";case"cp1255":case"windows-1255":case"x-cp1255":return"windows-1255";case"cp1256":case"windows-1256":case"x-cp1256":return"windows-1256";case"cp1257":case"windows-1257":case"x-cp1257":return"windows-1257";case"cp1258":case"windows-1258":case"x-cp1258":return"windows-1258";case"x-mac-cyrillic":case"x-mac-ukrainian":return"x-mac-cyrillic";case"chinese":case"csgb2312":case"csiso58gb231280":case"gb2312":case"gb_2312":case"gb_2312-80":case"gbk":case"iso-ir-58":case"x-gbk":return"GBK";case"gb18030":return"gb18030";case"big5":case"big5-hkscs":case"cn-big5":case"csbig5":case"x-x-big5":return"Big5";case"cseucpkdfmtjapanese":case"euc-jp":case"x-euc-jp":return"EUC-JP";case"csiso2022jp":case"iso-2022-jp":return"ISO-2022-JP";case"csshiftjis":case"ms932":case"ms_kanji":case"shift-jis":case"shift_jis":case"sjis":case"windows-31j":case"x-sjis":return"Shift_JIS";case"cseuckr":case"csksc56011987":case"euc-kr":case"iso-ir-149":case"korean":case"ks_c_5601-1987":case"ks_c_5601-1989":case"ksc5601":case"ksc_5601":case"windows-949":return"EUC-KR";case"csiso2022kr":case"hz-gb-2312":case"iso-2022-cn":case"iso-2022-cn-ext":case"iso-2022-kr":case"replacement":return"replacement";case"unicodefffe":case"utf-16be":return"UTF-16BE";case"csunicode":case"iso-10646-ucs-2":case"ucs-2":case"unicode":case"unicodefeff":case"utf-16":case"utf-16le":return"UTF-16LE";case"x-user-defined":return"x-user-defined";default:return"failure"}}e.exports={getEncoding:getEncoding}},8355:(e,t,A)=>{"use strict";const{staticPropertyDescriptors:r,readOperation:n,fireAProgressEvent:s}=A(3610);const{kState:o,kError:i,kResult:a,kEvents:c,kAborted:l}=A(961);const{webidl:g}=A(5893);const{kEnumerableProperty:u}=A(3440);class FileReader extends EventTarget{constructor(){super();this[o]="empty";this[a]=null;this[i]=null;this[c]={loadend:null,error:null,abort:null,load:null,progress:null,loadstart:null}}readAsArrayBuffer(e){g.brandCheck(this,FileReader);g.argumentLengthCheck(arguments,1,"FileReader.readAsArrayBuffer");e=g.converters.Blob(e,{strict:false});n(this,e,"ArrayBuffer")}readAsBinaryString(e){g.brandCheck(this,FileReader);g.argumentLengthCheck(arguments,1,"FileReader.readAsBinaryString");e=g.converters.Blob(e,{strict:false});n(this,e,"BinaryString")}readAsText(e,t=undefined){g.brandCheck(this,FileReader);g.argumentLengthCheck(arguments,1,"FileReader.readAsText");e=g.converters.Blob(e,{strict:false});if(t!==undefined){t=g.converters.DOMString(t,"FileReader.readAsText","encoding")}n(this,e,"Text",t)}readAsDataURL(e){g.brandCheck(this,FileReader);g.argumentLengthCheck(arguments,1,"FileReader.readAsDataURL");e=g.converters.Blob(e,{strict:false});n(this,e,"DataURL")}abort(){if(this[o]==="empty"||this[o]==="done"){this[a]=null;return}if(this[o]==="loading"){this[o]="done";this[a]=null}this[l]=true;s("abort",this);if(this[o]!=="loading"){s("loadend",this)}}get readyState(){g.brandCheck(this,FileReader);switch(this[o]){case"empty":return this.EMPTY;case"loading":return this.LOADING;case"done":return this.DONE}}get result(){g.brandCheck(this,FileReader);return this[a]}get error(){g.brandCheck(this,FileReader);return this[i]}get onloadend(){g.brandCheck(this,FileReader);return this[c].loadend}set onloadend(e){g.brandCheck(this,FileReader);if(this[c].loadend){this.removeEventListener("loadend",this[c].loadend)}if(typeof e==="function"){this[c].loadend=e;this.addEventListener("loadend",e)}else{this[c].loadend=null}}get onerror(){g.brandCheck(this,FileReader);return this[c].error}set onerror(e){g.brandCheck(this,FileReader);if(this[c].error){this.removeEventListener("error",this[c].error)}if(typeof e==="function"){this[c].error=e;this.addEventListener("error",e)}else{this[c].error=null}}get onloadstart(){g.brandCheck(this,FileReader);return this[c].loadstart}set onloadstart(e){g.brandCheck(this,FileReader);if(this[c].loadstart){this.removeEventListener("loadstart",this[c].loadstart)}if(typeof e==="function"){this[c].loadstart=e;this.addEventListener("loadstart",e)}else{this[c].loadstart=null}}get onprogress(){g.brandCheck(this,FileReader);return this[c].progress}set onprogress(e){g.brandCheck(this,FileReader);if(this[c].progress){this.removeEventListener("progress",this[c].progress)}if(typeof e==="function"){this[c].progress=e;this.addEventListener("progress",e)}else{this[c].progress=null}}get onload(){g.brandCheck(this,FileReader);return this[c].load}set onload(e){g.brandCheck(this,FileReader);if(this[c].load){this.removeEventListener("load",this[c].load)}if(typeof e==="function"){this[c].load=e;this.addEventListener("load",e)}else{this[c].load=null}}get onabort(){g.brandCheck(this,FileReader);return this[c].abort}set onabort(e){g.brandCheck(this,FileReader);if(this[c].abort){this.removeEventListener("abort",this[c].abort)}if(typeof e==="function"){this[c].abort=e;this.addEventListener("abort",e)}else{this[c].abort=null}}}FileReader.EMPTY=FileReader.prototype.EMPTY=0;FileReader.LOADING=FileReader.prototype.LOADING=1;FileReader.DONE=FileReader.prototype.DONE=2;Object.defineProperties(FileReader.prototype,{EMPTY:r,LOADING:r,DONE:r,readAsArrayBuffer:u,readAsBinaryString:u,readAsText:u,readAsDataURL:u,abort:u,readyState:u,result:u,error:u,onloadstart:u,onprogress:u,onload:u,onabort:u,onerror:u,onloadend:u,[Symbol.toStringTag]:{value:"FileReader",writable:false,enumerable:false,configurable:true}});Object.defineProperties(FileReader,{EMPTY:r,LOADING:r,DONE:r});e.exports={FileReader:FileReader}},8573:(e,t,A)=>{"use strict";const{webidl:r}=A(5893);const n=Symbol("ProgressEvent state");class ProgressEvent extends Event{constructor(e,t={}){e=r.converters.DOMString(e,"ProgressEvent constructor","type");t=r.converters.ProgressEventInit(t??{});super(e,t);this[n]={lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total}}get lengthComputable(){r.brandCheck(this,ProgressEvent);return this[n].lengthComputable}get loaded(){r.brandCheck(this,ProgressEvent);return this[n].loaded}get total(){r.brandCheck(this,ProgressEvent);return this[n].total}}r.converters.ProgressEventInit=r.dictionaryConverter([{key:"lengthComputable",converter:r.converters.boolean,defaultValue:()=>false},{key:"loaded",converter:r.converters["unsigned long long"],defaultValue:()=>0},{key:"total",converter:r.converters["unsigned long long"],defaultValue:()=>0},{key:"bubbles",converter:r.converters.boolean,defaultValue:()=>false},{key:"cancelable",converter:r.converters.boolean,defaultValue:()=>false},{key:"composed",converter:r.converters.boolean,defaultValue:()=>false}]);e.exports={ProgressEvent:ProgressEvent}},961:e=>{"use strict";e.exports={kState:Symbol("FileReader state"),kResult:Symbol("FileReader result"),kError:Symbol("FileReader error"),kLastProgressEventFired:Symbol("FileReader last progress event fired timestamp"),kEvents:Symbol("FileReader events"),kAborted:Symbol("FileReader aborted")}},3610:(e,t,A)=>{"use strict";const{kState:r,kError:n,kResult:s,kAborted:o,kLastProgressEventFired:i}=A(961);const{ProgressEvent:a}=A(8573);const{getEncoding:c}=A(2607);const{serializeAMimeType:l,parseMIMEType:g}=A(1900);const{types:u}=A(7975);const{StringDecoder:h}=A(3193);const{btoa:E}=A(4573);const Q={enumerable:true,writable:false,configurable:false};function readOperation(e,t,A,a){if(e[r]==="loading"){throw new DOMException("Invalid state","InvalidStateError")}e[r]="loading";e[s]=null;e[n]=null;const c=t.stream();const l=c.getReader();const g=[];let h=l.read();let E=true;(async()=>{while(!e[o]){try{const{done:c,value:Q}=await h;if(E&&!e[o]){queueMicrotask((()=>{fireAProgressEvent("loadstart",e)}))}E=false;if(!c&&u.isUint8Array(Q)){g.push(Q);if((e[i]===undefined||Date.now()-e[i]>=50)&&!e[o]){e[i]=Date.now();queueMicrotask((()=>{fireAProgressEvent("progress",e)}))}h=l.read()}else if(c){queueMicrotask((()=>{e[r]="done";try{const r=packageData(g,A,t.type,a);if(e[o]){return}e[s]=r;fireAProgressEvent("load",e)}catch(t){e[n]=t;fireAProgressEvent("error",e)}if(e[r]!=="loading"){fireAProgressEvent("loadend",e)}}));break}}catch(t){if(e[o]){return}queueMicrotask((()=>{e[r]="done";e[n]=t;fireAProgressEvent("error",e);if(e[r]!=="loading"){fireAProgressEvent("loadend",e)}}));break}}})()}function fireAProgressEvent(e,t){const A=new a(e,{bubbles:false,cancelable:false});t.dispatchEvent(A)}function packageData(e,t,A,r){switch(t){case"DataURL":{let t="data:";const r=g(A||"application/octet-stream");if(r!=="failure"){t+=l(r)}t+=";base64,";const n=new h("latin1");for(const A of e){t+=E(n.write(A))}t+=E(n.end());return t}case"Text":{let t="failure";if(r){t=c(r)}if(t==="failure"&&A){const e=g(A);if(e!=="failure"){t=c(e.parameters.get("charset"))}}if(t==="failure"){t="UTF-8"}return decode(e,t)}case"ArrayBuffer":{const t=combineByteSequences(e);return t.buffer}case"BinaryString":{let t="";const A=new h("latin1");for(const r of e){t+=A.write(r)}t+=A.end();return t}}}function decode(e,t){const A=combineByteSequences(e);const r=BOMSniffing(A);let n=0;if(r!==null){t=r;n=r==="UTF-8"?3:2}const s=A.slice(n);return new TextDecoder(t).decode(s)}function BOMSniffing(e){const[t,A,r]=e;if(t===239&&A===187&&r===191){return"UTF-8"}else if(t===254&&A===255){return"UTF-16BE"}else if(t===255&&A===254){return"UTF-16LE"}return null}function combineByteSequences(e){const t=e.reduce(((e,t)=>e+t.byteLength),0);let A=0;return e.reduce(((e,t)=>{e.set(t,A);A+=t.byteLength;return e}),new Uint8Array(t))}e.exports={staticPropertyDescriptors:Q,readOperation:readOperation,fireAProgressEvent:fireAProgressEvent}},6897:(e,t,A)=>{"use strict";const{uid:r,states:n,sentCloseFrameState:s,emptyBuffer:o,opcodes:i}=A(736);const{kReadyState:a,kSentClose:c,kByteParser:l,kReceivedClose:g,kResponse:u}=A(1216);const{fireEvent:h,failWebsocketConnection:E,isClosing:Q,isClosed:B,isEstablished:C,parseExtensions:I}=A(8625);const{channels:d}=A(2414);const{CloseEvent:f}=A(5188);const{makeRequest:p}=A(9967);const{fetching:y}=A(4398);const{Headers:w,getHeadersList:m}=A(660);const{getDecodeSplit:D}=A(3168);const{WebsocketFrameSend:k}=A(3264);let b;try{b=A(7598)}catch{}function establishWebSocketConnection(e,t,A,n,s,o){const i=e;i.protocol=e.protocol==="ws:"?"http:":"https:";const a=p({urlList:[i],client:A,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(o.headers){const e=m(new w(o.headers));a.headersList=e}const c=b.randomBytes(16).toString("base64");a.headersList.append("sec-websocket-key",c);a.headersList.append("sec-websocket-version","13");for(const e of t){a.headersList.append("sec-websocket-protocol",e)}const l="permessage-deflate; client_max_window_bits";a.headersList.append("sec-websocket-extensions",l);const g=y({request:a,useParallelQueue:true,dispatcher:o.dispatcher,processResponse(e){if(e.type==="error"||e.status!==101){E(n,"Received network error or non-101 status code.");return}if(t.length!==0&&!e.headersList.get("Sec-WebSocket-Protocol")){E(n,"Server did not respond with sent protocols.");return}if(e.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){E(n,'Server did not set Upgrade header to "websocket".');return}if(e.headersList.get("Connection")?.toLowerCase()!=="upgrade"){E(n,'Server did not set Connection header to "upgrade".');return}const A=e.headersList.get("Sec-WebSocket-Accept");const o=b.createHash("sha1").update(c+r).digest("base64");if(A!==o){E(n,"Incorrect hash received in Sec-WebSocket-Accept header.");return}const i=e.headersList.get("Sec-WebSocket-Extensions");let l;if(i!==null){l=I(i);if(!l.has("permessage-deflate")){E(n,"Sec-WebSocket-Extensions header does not match.");return}}const g=e.headersList.get("Sec-WebSocket-Protocol");if(g!==null){const e=D("sec-websocket-protocol",a.headersList);if(!e.includes(g)){E(n,"Protocol was not set in the opening handshake.");return}}e.socket.on("data",onSocketData);e.socket.on("close",onSocketClose);e.socket.on("error",onSocketError);if(d.open.hasSubscribers){d.open.publish({address:e.socket.address(),protocol:g,extensions:i})}s(e,l)}});return g}function closeWebSocketConnection(e,t,A,r){if(Q(e)||B(e)){}else if(!C(e)){E(e,"Connection was closed before it was established.");e[a]=n.CLOSING}else if(e[c]===s.NOT_SENT){e[c]=s.PROCESSING;const l=new k;if(t!==undefined&&A===undefined){l.frameData=Buffer.allocUnsafe(2);l.frameData.writeUInt16BE(t,0)}else if(t!==undefined&&A!==undefined){l.frameData=Buffer.allocUnsafe(2+r);l.frameData.writeUInt16BE(t,0);l.frameData.write(A,2,"utf-8")}else{l.frameData=o}const g=e[u].socket;g.write(l.createFrame(i.CLOSE));e[c]=s.SENT;e[a]=n.CLOSING}else{e[a]=n.CLOSING}}function onSocketData(e){if(!this.ws[l].write(e)){this.pause()}}function onSocketClose(){const{ws:e}=this;const{[u]:t}=e;t.socket.off("data",onSocketData);t.socket.off("close",onSocketClose);t.socket.off("error",onSocketError);const A=e[c]===s.SENT&&e[g];let r=1005;let o="";const i=e[l].closingInfo;if(i&&!i.error){r=i.code??1005;o=i.reason}else if(!e[g]){r=1006}e[a]=n.CLOSED;h("close",e,((e,t)=>new f(e,t)),{wasClean:A,code:r,reason:o});if(d.close.hasSubscribers){d.close.publish({websocket:e,code:r,reason:o})}}function onSocketError(e){const{ws:t}=this;t[a]=n.CLOSING;if(d.socketError.hasSubscribers){d.socketError.publish(e)}this.destroy()}e.exports={establishWebSocketConnection:establishWebSocketConnection,closeWebSocketConnection:closeWebSocketConnection}},736:e=>{"use strict";const t="258EAFA5-E914-47DA-95CA-C5AB0DC85B11";const A={enumerable:true,writable:false,configurable:false};const r={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3};const n={NOT_SENT:0,PROCESSING:1,SENT:2};const s={CONTINUATION:0,TEXT:1,BINARY:2,CLOSE:8,PING:9,PONG:10};const o=2**16-1;const i={INFO:0,PAYLOADLENGTH_16:2,PAYLOADLENGTH_64:3,READ_DATA:4};const a=Buffer.allocUnsafe(0);const c={string:1,typedArray:2,arrayBuffer:3,blob:4};e.exports={uid:t,sentCloseFrameState:n,staticPropertyDescriptors:A,states:r,opcodes:s,maxUnsigned16Bit:o,parserStates:i,emptyBuffer:a,sendHints:c}},5188:(e,t,A)=>{"use strict";const{webidl:r}=A(5893);const{kEnumerableProperty:n}=A(3440);const{kConstruct:s}=A(6443);const{MessagePort:o}=A(5919);class MessageEvent extends Event{#Z;constructor(e,t={}){if(e===s){super(arguments[1],arguments[2]);r.util.markAsUncloneable(this);return}const A="MessageEvent constructor";r.argumentLengthCheck(arguments,1,A);e=r.converters.DOMString(e,A,"type");t=r.converters.MessageEventInit(t,A,"eventInitDict");super(e,t);this.#Z=t;r.util.markAsUncloneable(this)}get data(){r.brandCheck(this,MessageEvent);return this.#Z.data}get origin(){r.brandCheck(this,MessageEvent);return this.#Z.origin}get lastEventId(){r.brandCheck(this,MessageEvent);return this.#Z.lastEventId}get source(){r.brandCheck(this,MessageEvent);return this.#Z.source}get ports(){r.brandCheck(this,MessageEvent);if(!Object.isFrozen(this.#Z.ports)){Object.freeze(this.#Z.ports)}return this.#Z.ports}initMessageEvent(e,t=false,A=false,n=null,s="",o="",i=null,a=[]){r.brandCheck(this,MessageEvent);r.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent");return new MessageEvent(e,{bubbles:t,cancelable:A,data:n,origin:s,lastEventId:o,source:i,ports:a})}static createFastMessageEvent(e,t){const A=new MessageEvent(s,e,t);A.#Z=t;A.#Z.data??=null;A.#Z.origin??="";A.#Z.lastEventId??="";A.#Z.source??=null;A.#Z.ports??=[];return A}}const{createFastMessageEvent:i}=MessageEvent;delete MessageEvent.createFastMessageEvent;class CloseEvent extends Event{#Z;constructor(e,t={}){const A="CloseEvent constructor";r.argumentLengthCheck(arguments,1,A);e=r.converters.DOMString(e,A,"type");t=r.converters.CloseEventInit(t);super(e,t);this.#Z=t;r.util.markAsUncloneable(this)}get wasClean(){r.brandCheck(this,CloseEvent);return this.#Z.wasClean}get code(){r.brandCheck(this,CloseEvent);return this.#Z.code}get reason(){r.brandCheck(this,CloseEvent);return this.#Z.reason}}class ErrorEvent extends Event{#Z;constructor(e,t){const A="ErrorEvent constructor";r.argumentLengthCheck(arguments,1,A);super(e,t);r.util.markAsUncloneable(this);e=r.converters.DOMString(e,A,"type");t=r.converters.ErrorEventInit(t??{});this.#Z=t}get message(){r.brandCheck(this,ErrorEvent);return this.#Z.message}get filename(){r.brandCheck(this,ErrorEvent);return this.#Z.filename}get lineno(){r.brandCheck(this,ErrorEvent);return this.#Z.lineno}get colno(){r.brandCheck(this,ErrorEvent);return this.#Z.colno}get error(){r.brandCheck(this,ErrorEvent);return this.#Z.error}}Object.defineProperties(MessageEvent.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:true},data:n,origin:n,lastEventId:n,source:n,ports:n,initMessageEvent:n});Object.defineProperties(CloseEvent.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:true},reason:n,code:n,wasClean:n});Object.defineProperties(ErrorEvent.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:true},message:n,filename:n,lineno:n,colno:n,error:n});r.converters.MessagePort=r.interfaceConverter(o);r.converters["sequence"]=r.sequenceConverter(r.converters.MessagePort);const a=[{key:"bubbles",converter:r.converters.boolean,defaultValue:()=>false},{key:"cancelable",converter:r.converters.boolean,defaultValue:()=>false},{key:"composed",converter:r.converters.boolean,defaultValue:()=>false}];r.converters.MessageEventInit=r.dictionaryConverter([...a,{key:"data",converter:r.converters.any,defaultValue:()=>null},{key:"origin",converter:r.converters.USVString,defaultValue:()=>""},{key:"lastEventId",converter:r.converters.DOMString,defaultValue:()=>""},{key:"source",converter:r.nullableConverter(r.converters.MessagePort),defaultValue:()=>null},{key:"ports",converter:r.converters["sequence"],defaultValue:()=>new Array(0)}]);r.converters.CloseEventInit=r.dictionaryConverter([...a,{key:"wasClean",converter:r.converters.boolean,defaultValue:()=>false},{key:"code",converter:r.converters["unsigned short"],defaultValue:()=>0},{key:"reason",converter:r.converters.USVString,defaultValue:()=>""}]);r.converters.ErrorEventInit=r.dictionaryConverter([...a,{key:"message",converter:r.converters.DOMString,defaultValue:()=>""},{key:"filename",converter:r.converters.USVString,defaultValue:()=>""},{key:"lineno",converter:r.converters["unsigned long"],defaultValue:()=>0},{key:"colno",converter:r.converters["unsigned long"],defaultValue:()=>0},{key:"error",converter:r.converters.any}]);e.exports={MessageEvent:MessageEvent,CloseEvent:CloseEvent,ErrorEvent:ErrorEvent,createFastMessageEvent:i}},3264:(e,t,A)=>{"use strict";const{maxUnsigned16Bit:r}=A(736);const n=16386;let s;let o=null;let i=n;try{s=A(7598)}catch{s={randomFillSync:function randomFillSync(e,t,A){for(let t=0;tr){o+=8;s=127}else if(n>125){o+=2;s=126}const i=Buffer.allocUnsafe(n+o);i[0]=i[1]=0;i[0]|=128;i[0]=(i[0]&240)+e; -/*! ws. MIT License. Einar Otto Stangvik */i[o-4]=A[0];i[o-3]=A[1];i[o-2]=A[2];i[o-1]=A[3];i[1]=s;if(s===126){i.writeUInt16BE(n,2)}else if(s===127){i[2]=i[3]=0;i.writeUIntBE(n,4,6)}i[1]|=128;for(let e=0;e{"use strict";const{createInflateRaw:r,Z_DEFAULT_WINDOWBITS:n}=A(8522);const{isValidClientWindowBits:s}=A(8625);const{MessageSizeExceededError:o}=A(8707);const i=Buffer.from([0,0,255,255]);const a=Symbol("kBuffer");const c=Symbol("kLength");class PerMessageDeflate{#z;#h={};#K=0;constructor(e,t){this.#h.serverNoContextTakeover=e.has("server_no_context_takeover");this.#h.serverMaxWindowBits=e.get("server_max_window_bits");this.#K=t.maxPayloadSize}decompress(e,t,A){if(!this.#z){let e=n;if(this.#h.serverMaxWindowBits){if(!s(this.#h.serverMaxWindowBits)){A(new Error("Invalid server_max_window_bits"));return}e=Number.parseInt(this.#h.serverMaxWindowBits)}try{this.#z=r({windowBits:e})}catch(e){A(e);return}this.#z[a]=[];this.#z[c]=0;this.#z.on("data",(e=>{this.#z[c]+=e.length;if(this.#K>0&&this.#z[c]>this.#K){A(new o);this.#z.removeAllListeners();this.#z=null;return}this.#z[a].push(e)}));this.#z.on("error",(e=>{this.#z=null;A(e)}))}this.#z.write(e);if(t){this.#z.write(i)}this.#z.flush((()=>{if(!this.#z){return}const e=Buffer.concat(this.#z[a],this.#z[c]);this.#z[a].length=0;this.#z[c]=0;A(null,e)}))}}e.exports={PerMessageDeflate:PerMessageDeflate}},1652:(e,t,A)=>{"use strict";const{Writable:r}=A(7075);const n=A(4589);const{parserStates:s,opcodes:o,states:i,emptyBuffer:a,sentCloseFrameState:c}=A(736);const{kReadyState:l,kSentClose:g,kResponse:u,kReceivedClose:h}=A(1216);const{channels:E}=A(2414);const{isValidStatusCode:Q,isValidOpcode:B,failWebsocketConnection:C,websocketMessageReceived:I,utf8Decode:d,isControlFrame:f,isTextBinaryFrame:p,isContinuationFrame:y}=A(8625);const{WebsocketFrameSend:w}=A(3264);const{closeWebSocketConnection:m}=A(6897);const{PerMessageDeflate:D}=A(9469);const{MessageSizeExceededError:k}=A(8707);function failWebsocketConnectionWithCode(e,t,A){m(e,t,A,Buffer.byteLength(A));C(e,A)}class ByteParser extends r{#X=[];#$=0;#ee=0;#te=false;#f=s.INFO;#Ae={};#re=[];#ne;#se;#K;constructor(e,t,A={}){super();this.ws=e;this.#ne=t==null?new Map:t;this.#se=A.maxFragments??0;this.#K=A.maxPayloadSize??0;if(this.#ne.has("permessage-deflate")){this.#ne.set("permessage-deflate",new D(t,A))}}_write(e,t,A){this.#X.push(e);this.#ee+=e.length;this.#te=true;this.run(A)}#oe(){if(this.#K>0&&!f(this.#Ae.opcode)&&this.#Ae.payloadLength+this.#$>this.#K){failWebsocketConnectionWithCode(this.ws,1009,"Payload size exceeds maximum allowed size");return false}return true}run(e){while(this.#te){if(this.#f===s.INFO){if(this.#ee<2){return e()}const t=this.consume(2);const A=(t[0]&128)!==0;const r=t[0]&15;const n=(t[1]&128)===128;const i=!A&&r!==o.CONTINUATION;const a=t[1]&127;const c=t[0]&64;const l=t[0]&32;const g=t[0]&16;if(!B(r)){C(this.ws,"Invalid opcode received");return e()}if(n){C(this.ws,"Frame cannot be masked");return e()}if(c!==0&&!this.#ne.has("permessage-deflate")){C(this.ws,"Expected RSV1 to be clear.");return}if(l!==0||g!==0){C(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(i&&!p(r)){C(this.ws,"Invalid frame type was fragmented.");return}if(p(r)&&this.#re.length>0){C(this.ws,"Expected continuation frame");return}if(this.#Ae.fragmented&&i){C(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((a>125||i)&&f(r)){C(this.ws,"Control frame either too large or fragmented");return}if(y(r)&&this.#re.length===0&&!this.#Ae.compressed){C(this.ws,"Unexpected continuation frame");return}if(a<=125){this.#Ae.payloadLength=a;this.#f=s.READ_DATA;if(!this.#oe()){return}}else if(a===126){this.#f=s.PAYLOADLENGTH_16}else if(a===127){this.#f=s.PAYLOADLENGTH_64}if(p(r)){this.#Ae.binaryType=r;this.#Ae.compressed=c!==0}this.#Ae.opcode=r;this.#Ae.masked=n;this.#Ae.fin=A;this.#Ae.fragmented=i}else if(this.#f===s.PAYLOADLENGTH_16){if(this.#ee<2){return e()}const t=this.consume(2);this.#Ae.payloadLength=t.readUInt16BE(0);this.#f=s.READ_DATA;if(!this.#oe()){return}}else if(this.#f===s.PAYLOADLENGTH_64){if(this.#ee<8){return e()}const t=this.consume(8);const A=t.readUInt32BE(0);const r=t.readUInt32BE(4);if(A!==0||r>2**31-1){C(this.ws,"Received payload length > 2^31 bytes.");return}this.#Ae.payloadLength=r;this.#f=s.READ_DATA;if(!this.#oe()){return}}else if(this.#f===s.READ_DATA){if(this.#ee0&&this.#$>this.#K){failWebsocketConnectionWithCode(this.ws,1009,(new k).message);return}if(!this.#Ae.fragmented&&this.#Ae.fin){I(this.ws,this.#Ae.binaryType,this.consumeFragments())}this.#f=s.INFO}else{this.#ne.get("permessage-deflate").decompress(t,this.#Ae.fin,((t,A)=>{if(t){const e=t instanceof k?1009:1007;failWebsocketConnectionWithCode(this.ws,e,t.message);return}if(!this.writeFragments(A)){return}if(this.#K>0&&this.#$>this.#K){failWebsocketConnectionWithCode(this.ws,1009,(new k).message);return}if(!this.#Ae.fin){this.#f=s.INFO;this.#te=true;this.run(e);return}I(this.ws,this.#Ae.binaryType,this.consumeFragments());this.#te=true;this.#f=s.INFO;this.run(e)}));this.#te=false;break}}}}}consume(e){if(e>this.#ee){throw new Error("Called consume() before buffers satiated.")}else if(e===0){return a}if(this.#X[0].length===e){this.#ee-=this.#X[0].length;return this.#X.shift()}const t=Buffer.allocUnsafe(e);let A=0;while(A!==e){const r=this.#X[0];const{length:n}=r;if(n+A===e){t.set(this.#X.shift(),A);break}else if(n+A>e){t.set(r.subarray(0,e-A),A);this.#X[0]=r.subarray(e-A);break}else{t.set(this.#X.shift(),A);A+=r.length}}this.#ee-=e;return t}writeFragments(e){if(this.#se>0&&this.#re.length===this.#se){failWebsocketConnectionWithCode(this.ws,1008,"Too many message fragments");return false}this.#$+=e.length;this.#re.push(e);return true}consumeFragments(){const e=this.#re;if(e.length===1){this.#$=0;return e.shift()}const t=Buffer.concat(e,this.#$);this.#re=[];this.#$=0;return t}parseCloseBody(e){n(e.length!==1);let t;if(e.length>=2){t=e.readUInt16BE(0)}if(t!==undefined&&!Q(t)){return{code:1002,reason:"Invalid status code",error:true}}let A=e.subarray(2);if(A[0]===239&&A[1]===187&&A[2]===191){A=A.subarray(3)}try{A=d(A)}catch{return{code:1007,reason:"Invalid UTF-8",error:true}}return{code:t,reason:A,error:false}}parseControlFrame(e){const{opcode:t,payloadLength:A}=this.#Ae;if(t===o.CLOSE){if(A===1){C(this.ws,"Received close frame with a 1-byte body.");return false}this.#Ae.closeInfo=this.parseCloseBody(e);if(this.#Ae.closeInfo.error){const{code:e,reason:t}=this.#Ae.closeInfo;m(this.ws,e,t,t.length);C(this.ws,t);return false}if(this.ws[g]!==c.SENT){let e=a;if(this.#Ae.closeInfo.code){e=Buffer.allocUnsafe(2);e.writeUInt16BE(this.#Ae.closeInfo.code,0)}const t=new w(e);this.ws[u].socket.write(t.createFrame(o.CLOSE),(e=>{if(!e){this.ws[g]=c.SENT}}))}this.ws[l]=i.CLOSING;this.ws[h]=true;return false}else if(t===o.PING){if(!this.ws[h]){const t=new w(e);this.ws[u].socket.write(t.createFrame(o.PONG));if(E.ping.hasSubscribers){E.ping.publish({payload:e})}}}else if(t===o.PONG){if(E.pong.hasSubscribers){E.pong.publish({payload:e})}}return true}get closingInfo(){return this.#Ae.closeInfo}}e.exports={ByteParser:ByteParser}},3900:(e,t,A)=>{"use strict";const{WebsocketFrameSend:r}=A(3264);const{opcodes:n,sendHints:s}=A(736);const o=A(4660);const i=Buffer[Symbol.species];class SendQueue{#ie=new o;#ae=false;#ce;constructor(e){this.#ce=e}add(e,t,A){if(A!==s.blob){const r=createFrame(e,A);if(!this.#ae){this.#ce.write(r,t)}else{const e={promise:null,callback:t,frame:r};this.#ie.push(e)}return}const r={promise:e.arrayBuffer().then((e=>{r.promise=null;r.frame=createFrame(e,A)})),callback:t,frame:null};this.#ie.push(r);if(!this.#ae){this.#le()}}async#le(){this.#ae=true;const e=this.#ie;while(!e.isEmpty()){const t=e.shift();if(t.promise!==null){await t.promise}this.#ce.write(t.frame,t.callback);t.callback=t.frame=null}this.#ae=false}}function createFrame(e,t){return new r(toBuffer(e,t)).createFrame(t===s.string?n.TEXT:n.BINARY)}function toBuffer(e,t){switch(t){case s.string:return Buffer.from(e);case s.arrayBuffer:case s.blob:return new i(e);case s.typedArray:return new i(e.buffer,e.byteOffset,e.byteLength)}}e.exports={SendQueue:SendQueue}},1216:e=>{"use strict";e.exports={kWebSocketURL:Symbol("url"),kReadyState:Symbol("ready state"),kController:Symbol("controller"),kResponse:Symbol("response"),kBinaryType:Symbol("binary type"),kSentClose:Symbol("sent close"),kReceivedClose:Symbol("received close"),kByteParser:Symbol("byte parser")}},8625:(e,t,A)=>{"use strict";const{kReadyState:r,kController:n,kResponse:s,kBinaryType:o,kWebSocketURL:i}=A(1216);const{states:a,opcodes:c}=A(736);const{ErrorEvent:l,createFastMessageEvent:g}=A(5188);const{isUtf8:u}=A(4573);const{collectASequenceOfCodePointsFast:h,removeHTTPWhitespace:E}=A(1900);function isConnecting(e){return e[r]===a.CONNECTING}function isEstablished(e){return e[r]===a.OPEN}function isClosing(e){return e[r]===a.CLOSING}function isClosed(e){return e[r]===a.CLOSED}function fireEvent(e,t,A=(e,t)=>new Event(e,t),r={}){const n=A(e,r);t.dispatchEvent(n)}function websocketMessageReceived(e,t,A){if(e[r]!==a.OPEN){return}let n;if(t===c.TEXT){try{n=C(A)}catch{failWebsocketConnection(e,"Received invalid UTF-8 in text frame.");return}}else if(t===c.BINARY){if(e[o]==="blob"){n=new Blob([A])}else{n=toArrayBuffer(A)}}fireEvent("message",e,g,{origin:e[i].origin,data:n})}function toArrayBuffer(e){if(e.byteLength===e.buffer.byteLength){return e.buffer}return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}function isValidSubprotocol(e){if(e.length===0){return false}for(let t=0;t126||A===34||A===40||A===41||A===44||A===47||A===58||A===59||A===60||A===61||A===62||A===63||A===64||A===91||A===92||A===93||A===123||A===125){return false}}return true}function isValidStatusCode(e){if(e>=1e3&&e<1015){return e!==1004&&e!==1005&&e!==1006}return e>=3e3&&e<=4999}function failWebsocketConnection(e,t){const{[n]:A,[s]:r}=e;A.abort();if(r?.socket&&!r.socket.destroyed){r.socket.destroy()}if(t){fireEvent("error",e,((e,t)=>new l(e,t)),{error:new Error(t),message:t})}}function isControlFrame(e){return e===c.CLOSE||e===c.PING||e===c.PONG}function isContinuationFrame(e){return e===c.CONTINUATION}function isTextBinaryFrame(e){return e===c.TEXT||e===c.BINARY}function isValidOpcode(e){return isTextBinaryFrame(e)||isContinuationFrame(e)||isControlFrame(e)}function parseExtensions(e){const t={position:0};const A=new Map;while(t.position57){return false}}const t=Number.parseInt(e,10);return t>=8&&t<=15}const Q=typeof process.versions.icu==="string";const B=Q?new TextDecoder("utf-8",{fatal:true}):undefined;const C=Q?B.decode.bind(B):function(e){if(u(e)){return e.toString("utf-8")}throw new TypeError("Invalid utf-8 received.")};e.exports={isConnecting:isConnecting,isEstablished:isEstablished,isClosing:isClosing,isClosed:isClosed,fireEvent:fireEvent,isValidSubprotocol:isValidSubprotocol,isValidStatusCode:isValidStatusCode,failWebsocketConnection:failWebsocketConnection,websocketMessageReceived:websocketMessageReceived,utf8Decode:C,isControlFrame:isControlFrame,isContinuationFrame:isContinuationFrame,isTextBinaryFrame:isTextBinaryFrame,isValidOpcode:isValidOpcode,parseExtensions:parseExtensions,isValidClientWindowBits:isValidClientWindowBits}},3726:(e,t,A)=>{"use strict";const{webidl:r}=A(5893);const{URLSerializer:n}=A(1900);const{environmentSettingsObject:s}=A(3168);const{staticPropertyDescriptors:o,states:i,sentCloseFrameState:a,sendHints:c}=A(736);const{kWebSocketURL:l,kReadyState:g,kController:u,kBinaryType:h,kResponse:E,kSentClose:Q,kByteParser:B}=A(1216);const{isConnecting:C,isEstablished:I,isClosing:d,isValidSubprotocol:f,fireEvent:p}=A(8625);const{establishWebSocketConnection:y,closeWebSocketConnection:w}=A(6897);const{ByteParser:m}=A(1652);const{kEnumerableProperty:D,isBlobLike:k}=A(3440);const{getGlobalDispatcher:b}=A(2581);const{types:R}=A(7975);const{ErrorEvent:S,CloseEvent:F}=A(5188);const{SendQueue:N}=A(3900);class WebSocket extends EventTarget{#T={open:null,error:null,close:null,message:null};#ge=0;#ue="";#ne="";#he;constructor(e,t=[]){super();r.util.markAsUncloneable(this);const A="WebSocket constructor";r.argumentLengthCheck(arguments,1,A);const n=r.converters["DOMString or sequence or WebSocketInit"](t,A,"options");e=r.converters.USVString(e,A,"url");t=n.protocols;const o=s.settingsObject.baseUrl;let i;try{i=new URL(e,o)}catch(e){throw new DOMException(e,"SyntaxError")}if(i.protocol==="http:"){i.protocol="ws:"}else if(i.protocol==="https:"){i.protocol="wss:"}if(i.protocol!=="ws:"&&i.protocol!=="wss:"){throw new DOMException(`Expected a ws: or wss: protocol, got ${i.protocol}`,"SyntaxError")}if(i.hash||i.href.endsWith("#")){throw new DOMException("Got fragment","SyntaxError")}if(typeof t==="string"){t=[t]}if(t.length!==new Set(t.map((e=>e.toLowerCase()))).size){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}if(t.length>0&&!t.every((e=>f(e)))){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}this[l]=new URL(i.href);const c=s.settingsObject;this[u]=y(i,t,c,this,((e,t)=>this.#Ee(e,t)),n);this[g]=WebSocket.CONNECTING;this[Q]=a.NOT_SENT;this[h]="blob"}close(e=undefined,t=undefined){r.brandCheck(this,WebSocket);const A="WebSocket.close";if(e!==undefined){e=r.converters["unsigned short"](e,A,"code",{clamp:true})}if(t!==undefined){t=r.converters.USVString(t,A,"reason")}if(e!==undefined){if(e!==1e3&&(e<3e3||e>4999)){throw new DOMException("invalid code","InvalidAccessError")}}let n=0;if(t!==undefined){n=Buffer.byteLength(t);if(n>123){throw new DOMException(`Reason must be less than 123 bytes; received ${n}`,"SyntaxError")}}w(this,e,t,n)}send(e){r.brandCheck(this,WebSocket);const t="WebSocket.send";r.argumentLengthCheck(arguments,1,t);e=r.converters.WebSocketSendData(e,t,"data");if(C(this)){throw new DOMException("Sent before connected.","InvalidStateError")}if(!I(this)||d(this)){return}if(typeof e==="string"){const t=Buffer.byteLength(e);this.#ge+=t;this.#he.add(e,(()=>{this.#ge-=t}),c.string)}else if(R.isArrayBuffer(e)){this.#ge+=e.byteLength;this.#he.add(e,(()=>{this.#ge-=e.byteLength}),c.arrayBuffer)}else if(ArrayBuffer.isView(e)){this.#ge+=e.byteLength;this.#he.add(e,(()=>{this.#ge-=e.byteLength}),c.typedArray)}else if(k(e)){this.#ge+=e.size;this.#he.add(e,(()=>{this.#ge-=e.size}),c.blob)}}get readyState(){r.brandCheck(this,WebSocket);return this[g]}get bufferedAmount(){r.brandCheck(this,WebSocket);return this.#ge}get url(){r.brandCheck(this,WebSocket);return n(this[l])}get extensions(){r.brandCheck(this,WebSocket);return this.#ne}get protocol(){r.brandCheck(this,WebSocket);return this.#ue}get onopen(){r.brandCheck(this,WebSocket);return this.#T.open}set onopen(e){r.brandCheck(this,WebSocket);if(this.#T.open){this.removeEventListener("open",this.#T.open)}if(typeof e==="function"){this.#T.open=e;this.addEventListener("open",e)}else{this.#T.open=null}}get onerror(){r.brandCheck(this,WebSocket);return this.#T.error}set onerror(e){r.brandCheck(this,WebSocket);if(this.#T.error){this.removeEventListener("error",this.#T.error)}if(typeof e==="function"){this.#T.error=e;this.addEventListener("error",e)}else{this.#T.error=null}}get onclose(){r.brandCheck(this,WebSocket);return this.#T.close}set onclose(e){r.brandCheck(this,WebSocket);if(this.#T.close){this.removeEventListener("close",this.#T.close)}if(typeof e==="function"){this.#T.close=e;this.addEventListener("close",e)}else{this.#T.close=null}}get onmessage(){r.brandCheck(this,WebSocket);return this.#T.message}set onmessage(e){r.brandCheck(this,WebSocket);if(this.#T.message){this.removeEventListener("message",this.#T.message)}if(typeof e==="function"){this.#T.message=e;this.addEventListener("message",e)}else{this.#T.message=null}}get binaryType(){r.brandCheck(this,WebSocket);return this[h]}set binaryType(e){r.brandCheck(this,WebSocket);if(e!=="blob"&&e!=="arraybuffer"){this[h]="blob"}else{this[h]=e}}#Ee(e,t){this[E]=e;const A=this[u]?.dispatcher?.webSocketOptions;const r=A?.maxFragments;const n=A?.maxPayloadSize;const s=new m(this,t,{maxFragments:r,maxPayloadSize:n});s.on("drain",onParserDrain);s.on("error",onParserError.bind(this));e.socket.ws=this;this[B]=s;this.#he=new N(e.socket);this[g]=i.OPEN;const o=e.headersList.get("sec-websocket-extensions");if(o!==null){this.#ne=o}const a=e.headersList.get("sec-websocket-protocol");if(a!==null){this.#ue=a}p("open",this)}}WebSocket.CONNECTING=WebSocket.prototype.CONNECTING=i.CONNECTING;WebSocket.OPEN=WebSocket.prototype.OPEN=i.OPEN;WebSocket.CLOSING=WebSocket.prototype.CLOSING=i.CLOSING;WebSocket.CLOSED=WebSocket.prototype.CLOSED=i.CLOSED;Object.defineProperties(WebSocket.prototype,{CONNECTING:o,OPEN:o,CLOSING:o,CLOSED:o,url:D,readyState:D,bufferedAmount:D,onopen:D,onerror:D,onclose:D,close:D,onmessage:D,binaryType:D,send:D,extensions:D,protocol:D,[Symbol.toStringTag]:{value:"WebSocket",writable:false,enumerable:false,configurable:true}});Object.defineProperties(WebSocket,{CONNECTING:o,OPEN:o,CLOSING:o,CLOSED:o});r.converters["sequence"]=r.sequenceConverter(r.converters.DOMString);r.converters["DOMString or sequence"]=function(e,t,A){if(r.util.Type(e)==="Object"&&Symbol.iterator in e){return r.converters["sequence"](e)}return r.converters.DOMString(e,t,A)};r.converters.WebSocketInit=r.dictionaryConverter([{key:"protocols",converter:r.converters["DOMString or sequence"],defaultValue:()=>new Array(0)},{key:"dispatcher",converter:r.converters.any,defaultValue:()=>b()},{key:"headers",converter:r.nullableConverter(r.converters.HeadersInit)}]);r.converters["DOMString or sequence or WebSocketInit"]=function(e){if(r.util.Type(e)==="Object"&&!(Symbol.iterator in e)){return r.converters.WebSocketInit(e)}return{protocols:r.converters["DOMString or sequence"](e)}};r.converters.WebSocketSendData=function(e){if(r.util.Type(e)==="Object"){if(k(e)){return r.converters.Blob(e,{strict:false})}if(ArrayBuffer.isView(e)||R.isArrayBuffer(e)){return r.converters.BufferSource(e)}}return r.converters.USVString(e)};function onParserDrain(){this.ws[E].socket.resume()}function onParserError(e){let t;let A;if(e instanceof F){t=e.reason;A=e.code}else{t=e.message}p("error",this,(()=>new S("error",{error:e,message:t})));w(this,A)}e.exports={WebSocket:WebSocket}},2613:e=>{"use strict";e.exports=require("assert")},5317:e=>{"use strict";e.exports=require("child_process")},6982:e=>{"use strict";e.exports=require("crypto")},4434:e=>{"use strict";e.exports=require("events")},9896:e=>{"use strict";e.exports=require("fs")},8611:e=>{"use strict";e.exports=require("http")},5692:e=>{"use strict";e.exports=require("https")},9278:e=>{"use strict";e.exports=require("net")},4589:e=>{"use strict";e.exports=require("node:assert")},6698:e=>{"use strict";e.exports=require("node:async_hooks")},4573:e=>{"use strict";e.exports=require("node:buffer")},7540:e=>{"use strict";e.exports=require("node:console")},7598:e=>{"use strict";e.exports=require("node:crypto")},3053:e=>{"use strict";e.exports=require("node:diagnostics_channel")},610:e=>{"use strict";e.exports=require("node:dns")},8474:e=>{"use strict";e.exports=require("node:events")},3024:e=>{"use strict";e.exports=require("node:fs")},7067:e=>{"use strict";e.exports=require("node:http")},2467:e=>{"use strict";e.exports=require("node:http2")},7030:e=>{"use strict";e.exports=require("node:net")},643:e=>{"use strict";e.exports=require("node:perf_hooks")},1792:e=>{"use strict";e.exports=require("node:querystring")},7075:e=>{"use strict";e.exports=require("node:stream")},1692:e=>{"use strict";e.exports=require("node:tls")},3136:e=>{"use strict";e.exports=require("node:url")},7975:e=>{"use strict";e.exports=require("node:util")},3429:e=>{"use strict";e.exports=require("node:util/types")},5919:e=>{"use strict";e.exports=require("node:worker_threads")},8522:e=>{"use strict";e.exports=require("node:zlib")},857:e=>{"use strict";e.exports=require("os")},6928:e=>{"use strict";e.exports=require("path")},3193:e=>{"use strict";e.exports=require("string_decoder")},3557:e=>{"use strict";e.exports=require("timers")},4756:e=>{"use strict";e.exports=require("tls")},9023:e=>{"use strict";e.exports=require("util")}};var t={};function __nccwpck_require__(A){var r=t[A];if(r!==undefined){return r.exports}var n=t[A]={exports:{}};var s=true;try{e[A].call(n.exports,n,n.exports,__nccwpck_require__);s=false}finally{if(s)delete t[A]}return n.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var A={};(()=>{"use strict";const e=__nccwpck_require__(3024);const t=__nccwpck_require__(7484);const A=__nccwpck_require__(4281);const{buildMatrix:r}=__nccwpck_require__(212);function parseInput(e,r){const n=t.getInput(e);if(!n||n.trim()==="")return r;try{return A.load(n,{schema:A.JSON_SCHEMA})}catch(t){throw new Error(`Failed to parse input '${e}' as YAML/JSON: ${t.message}`)}}function loadMatrixFile(t){let r;try{r=e.readFileSync(t,"utf8")}catch(e){throw new Error(`Failed to read matrix file '${t}': ${e.message}`)}let n;try{n=A.load(r,{schema:A.JSON_SCHEMA})}catch(e){throw new Error(`Failed to parse matrix file '${t}' as YAML/JSON: ${e.message}`)}return n==null?{}:n}try{const e=t.getInput("matrix-file");if(e&&t.getInput("matrix")){throw new Error("'matrix' and 'matrix-file' are mutually exclusive")}const A=e?loadMatrixFile(e):parseInput("matrix",{});const n=parseInput("rules",[]);const s=r(A,n);t.setOutput("matrix",JSON.stringify(s));t.startGroup(`matrix-builder: ${s.length} combination(s)`);t.info(JSON.stringify(s,null,2));t.endGroup()}catch(e){t.setFailed(e.message)}})();module.exports=A})(); \ No newline at end of file diff --git a/scripts/actions/matrix-builder/lib/engine.js b/scripts/actions/matrix-builder/lib/engine.js deleted file mode 100644 index 3ca6ca59d384..000000000000 --- a/scripts/actions/matrix-builder/lib/engine.js +++ /dev/null @@ -1,293 +0,0 @@ -'use strict'; - -/** - * Build the cartesian product of axis-name -> value-list. - * - * A scalar axis value is treated as a one-element list. An empty axes object - * yields an empty result (no base entries). - * - * @param {Object>} axes - * Map of axis name to a list of values (or a scalar). - * @returns {Array} Every combination, in lexicographic axis order. - * - * @example - * cartesian({ a: [1, 2], b: ['x', 'y'] }); - * // => [ {a:1,b:'x'}, {a:1,b:'y'}, {a:2,b:'x'}, {a:2,b:'y'} ] - */ -function cartesian(axes) { - const names = Object.keys(axes); - if (names.length === 0) return []; - let acc = [{}]; - for (const name of names) { - const vals = Array.isArray(axes[name]) ? axes[name] : [axes[name]]; - const next = []; - for (const entry of acc) { - for (const v of vals) next.push({ ...entry, [name]: v }); - } - acc = next; - } - return acc; -} - -/** - * Interpret a value as truthy or falsy under this action's rules. - * - * GitHub expands `${{ ... }}` expressions before the step runs, so the action - * generally sees `if:` as a string. The truthiness rules: - * - YAML `true` => truthy; `false` / `null` / `undefined` => falsy. - * - Strings: trim + lowercase; `""`, `"false"`, `"0"`, `"no"`, `"off"` => - * falsy; everything else => truthy. - * - Numbers: standard JS truthiness. - * - * @param {*} v Any value. - * @returns {boolean} - */ -function isTruthy(v) { - if (v === true) return true; - if (v === false || v == null) return false; - if (typeof v === 'string') { - const s = v.trim().toLowerCase(); - return !(s === '' || s === 'false' || s === '0' || s === 'no' || s === 'off'); - } - return Boolean(v); -} - -/** - * Return true iff `entry` contains every key in `criteria` with the same value. - * - * Keys present in `criteria` but absent from `entry` cause a non-match. This - * mirrors GitHub's own matrix subset-match semantics. - * - * @param {Object} entry - * @param {Object} criteria - * @returns {boolean} - */ -function matchesAll(entry, criteria) { - for (const k of Object.keys(criteria)) { - if (!Object.prototype.hasOwnProperty.call(entry, k)) return false; - if (entry[k] !== criteria[k]) return false; - } - return true; -} - -/** - * Partition a rule body into axis-key criteria and extra-key payload. - * - * Axis keys are those that exist in the base matrix's axis list. Everything - * else is treated as a payload (extra) field merged into matched entries. - * - * @param {Object} rule - * @param {Set} axisKeys - * @returns {{ axisCrit: Object, extra: Object }} - */ -function splitRule(rule, axisKeys) { - const axisCrit = {}; - const extra = {}; - for (const [k, v] of Object.entries(rule)) { - if (axisKeys.has(k)) axisCrit[k] = v; - else extra[k] = v; - } - return { axisCrit, extra }; -} - -/** - * Apply an `include` rule (GitHub-native hybrid semantics). - * - * 1. Split into axis criteria + extra payload. - * 2. For every existing entry whose values satisfy the axis criteria, merge - * the extra payload into that entry. - * 3. If no entry matched and the rule has at least one axis key, append a - * new entry with all of the rule's keys. - * 4. If the rule has no axis keys at all, append a new entry unconditionally - * (same as GitHub). - * - * @param {Array} entries - * @param {Object} rule - * @param {Set} axisKeys - * @returns {Array} A new entries list (input is not mutated). - */ -function applyInclude(entries, rule, axisKeys) { - const { axisCrit, extra } = splitRule(rule, axisKeys); - // No axis keys at all: GitHub-native semantics say to append a new entry - // unconditionally rather than extending every existing entry. (Without this - // special case, the empty-axisCrit subset would match every row and the - // rule would silently extend everything.) - if (Object.keys(axisCrit).length === 0) { - return [...entries, { ...extra }]; - } - let matched = 0; - const out = entries.map(e => { - if (matchesAll(e, axisCrit)) { - matched++; - return { ...e, ...extra }; - } - return e; - }); - if (matched === 0) out.push({ ...axisCrit, ...extra }); - return out; -} - -/** - * Apply an `extend` rule (strict extend-only; never appends). - * - * 1. Split into axis criteria + extra payload. - * 2. For every existing entry whose values satisfy the axis criteria, merge - * the extra payload into that entry. - * 3. If no entry matched, do nothing (silent no-op). - * 4. With no axis keys, every entry trivially matches, so the extra payload - * is applied to all entries. - * - * @param {Array} entries - * @param {Object} rule - * @param {Set} axisKeys - * @returns {Array} A new entries list (input is not mutated). - */ -function applyExtend(entries, rule, axisKeys) { - const { axisCrit, extra } = splitRule(rule, axisKeys); - return entries.map(e => matchesAll(e, axisCrit) ? { ...e, ...extra } : e); -} - -/** - * Apply an `exclude` rule (subset match drop). - * - * Remove every entry where, for each key in the rule, the entry has that key - * with the matching value. Keys not present in an entry don't match (so they - * survive) - same as GitHub's native matrix.exclude. - * - * @param {Array} entries - * @param {Object} rule - * @returns {Array} A new entries list (input is not mutated). - */ -function applyExclude(entries, rule) { - return entries.filter(e => !matchesAll(e, rule)); -} - -/** - * Normalize an `include` / `extend` / `exclude` body into a list of one or - * more rule bodies. Both shapes are accepted: - * - * extend: - * platform: x86_64 - * os: rockylinux8 - * - * extend: - * - platform: x86_64 - * os: rockylinux8 - * - platform: aarch64 - * os: rockylinux8-arm64 - * - * The single-object form is wrapped in a one-element list. The list form is - * returned as-is after validating each entry is an object. An empty list is - * legal (it's a no-op once iterated over). - * - * @param {*} body Raw body value as parsed from the action input. - * @param {string} kind The keyword that introduced it (for error messages). - * @param {number} ruleIndex Index of the parent rule (for error messages). - * @returns {Array} - * @throws {Error} If the body is neither an object nor a list of objects. - */ -function normalizeBodies(body, kind, ruleIndex) { - if (Array.isArray(body)) { - body.forEach((b, j) => { - if (b == null || typeof b !== 'object' || Array.isArray(b)) { - throw new Error(`rule #${ruleIndex} '${kind}' entry #${j} must be an object`); - } - }); - return body; - } - if (body == null || typeof body !== 'object') { - throw new Error(`rule #${ruleIndex} '${kind}' must be an object or a list of objects`); - } - return [body]; -} - -/** - * Build a GitHub Actions matrix from a base matrix and an ordered list of - * rules. - * - * Rules are applied strictly in source order; each rule sees the state - * produced by all prior rules. This differs from GitHub's native matrix - * where `exclude` runs first and `include` runs unconditionally after - so - * this engine can model order-dependent flows that native matrix syntax - * cannot. - * - * @param {Object>|Array} baseMatrix - * Either an axis map (axis name -> value list; scalars are treated as - * one-element lists; the base entries are the cartesian product) or a - * list of include-style entries used as-is. In the list form the axis - * keys - the keys `include` / `extend` rules match on - are the union of - * the entries' keys. Pass `{}` (or omit) to start from an empty entry - * list. - * @param {Array} rules - * Ordered rules. Each rule must have exactly one of `include`, `extend`, - * `exclude`, optionally guarded by `if`. - * @returns {Array} The resulting matrix combinations. - * @throws {Error} If inputs are malformed. - * - * @example - * buildMatrix( - * { platform: ['x86_64', 'aarch64'] }, - * [ - * { extend: { platform: 'x86_64', runner: 'ubuntu-latest' } }, - * { exclude: { platform: 'aarch64' } }, - * ] - * ); - * // => [ { platform: 'x86_64', runner: 'ubuntu-latest' } ] - */ -function buildMatrix(baseMatrix, rules) { - let axisKeys; - let entries; - if (Array.isArray(baseMatrix)) { - baseMatrix.forEach((e, i) => { - if (e == null || typeof e !== 'object' || Array.isArray(e)) { - throw new Error(`base matrix entry #${i} must be an object`); - } - }); - axisKeys = new Set(baseMatrix.flatMap(e => Object.keys(e))); - entries = baseMatrix.map(e => ({ ...e })); - } else if (baseMatrix != null && typeof baseMatrix === 'object') { - axisKeys = new Set(Object.keys(baseMatrix)); - entries = cartesian(baseMatrix); - } else { - throw new Error( - "'matrix' must be a map of axis names to value lists or a list of entries" - ); - } - if (!Array.isArray(rules)) { - throw new Error("'rules' must be a list"); - } - - rules.forEach((rule, i) => { - if (rule == null || typeof rule !== 'object' || Array.isArray(rule)) { - throw new Error(`rule #${i} is not an object`); - } - if ('if' in rule && !isTruthy(rule.if)) return; - const kinds = ['include', 'extend', 'exclude'].filter(k => k in rule); - if (kinds.length !== 1) { - throw new Error( - `rule #${i} must have exactly one of 'include', 'extend', 'exclude' ` + - `(found: ${kinds.length ? kinds.join(', ') : 'none'})` - ); - } - const kind = kinds[0]; - const bodies = normalizeBodies(rule[kind], kind, i); - for (const body of bodies) { - if (kind === 'include') entries = applyInclude(entries, body, axisKeys); - else if (kind === 'extend') entries = applyExtend(entries, body, axisKeys); - else entries = applyExclude(entries, body); - } - }); - - return entries; -} - -module.exports = { - buildMatrix, - cartesian, - isTruthy, - matchesAll, - applyInclude, - applyExtend, - applyExclude, - normalizeBodies, -}; diff --git a/scripts/actions/matrix-builder/package-lock.json b/scripts/actions/matrix-builder/package-lock.json deleted file mode 100644 index 91cf908a055e..000000000000 --- a/scripts/actions/matrix-builder/package-lock.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "name": "matrix-builder", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "matrix-builder", - "version": "1.0.0", - "dependencies": { - "@actions/core": "^2.0.3", - "js-yaml": "^4.3.2" - }, - "devDependencies": { - "@vercel/ncc": "^0.38.3" - } - }, - "node_modules/@actions/core": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-2.0.3.tgz", - "integrity": "sha512-Od9Thc3T1mQJYddvVPM4QGiLUewdh+3txmDYHHxoNdkqysR1MbCT+rFOtNUxYAz+7+6RIsqipVahY2GJqGPyxA==", - "license": "MIT", - "dependencies": { - "@actions/exec": "^2.0.0", - "@actions/http-client": "^3.0.2" - } - }, - "node_modules/@actions/exec": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-2.0.0.tgz", - "integrity": "sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==", - "license": "MIT", - "dependencies": { - "@actions/io": "^2.0.0" - } - }, - "node_modules/@actions/http-client": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.2.tgz", - "integrity": "sha512-JP38FYYpyqvUsz+Igqlc/JG6YO9PaKuvqjM3iGvaLqFnJ7TFmcLyy2IDrY0bI0qCQug8E9K+elv5ZNfw62ZJzA==", - "license": "MIT", - "dependencies": { - "tunnel": "^0.0.6", - "undici": "^6.23.0" - } - }, - "node_modules/@actions/io": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@actions/io/-/io-2.0.0.tgz", - "integrity": "sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==", - "license": "MIT" - }, - "node_modules/@vercel/ncc": { - "version": "0.38.4", - "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.4.tgz", - "integrity": "sha512-8LwjnlP39s08C08J5NstzriPvW1SP8Zfpp1BvC2sI35kPeZnHfxVkCwu4/+Wodgnd60UtT1n8K8zw+Mp7J9JmQ==", - "dev": true, - "license": "MIT", - "bin": { - "ncc": "dist/ncc/cli.js" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/js-yaml": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", - "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/nodeca" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "license": "MIT", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/undici": { - "version": "6.28.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.28.0.tgz", - "integrity": "sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==", - "license": "MIT", - "engines": { - "node": ">=18.17" - } - } - } -} diff --git a/scripts/actions/matrix-builder/package.json b/scripts/actions/matrix-builder/package.json deleted file mode 100644 index 96020271293f..000000000000 --- a/scripts/actions/matrix-builder/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "matrix-builder", - "private": true, - "version": "1.0.0", - "description": "Declarative ordered include/extend/exclude rules for GitHub Actions matrices", - "main": "dist/index.js", - "scripts": { - "build": "ncc build src/index.js -o dist --minify", - "test": "node --test" - }, - "dependencies": { - "@actions/core": "^2.0.3", - "js-yaml": "^4.3.2" - }, - "devDependencies": { - "@vercel/ncc": "^0.38.3" - }, - "overrides": { - "@actions/core": { - "undici": "^6.27.0" - } - } -} diff --git a/scripts/actions/matrix-builder/rebuild.sh b/scripts/actions/matrix-builder/rebuild.sh deleted file mode 100755 index cdeab814300a..000000000000 --- a/scripts/actions/matrix-builder/rebuild.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -set -e - -# edit package.json -npm install -npm run build diff --git a/scripts/actions/matrix-builder/src/index.js b/scripts/actions/matrix-builder/src/index.js deleted file mode 100644 index 6f2e552d3abf..000000000000 --- a/scripts/actions/matrix-builder/src/index.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict'; - -const fs = require('node:fs'); -const core = require('@actions/core'); -const yaml = require('js-yaml'); -const { buildMatrix } = require('../lib/engine'); - -/** - * Read an action input as YAML/JSON. Empty / missing returns the fallback. - * - * Uses the YAML JSON_SCHEMA so YAML 1.1 booleans (`yes`/`no`/`on`/`off`) are - * not silently coerced - they remain strings, matching what workflow authors - * see when they read their own YAML. - * - * @param {string} name Input name as declared in action.yml. - * @param {*} fallback Value returned when the input is empty. - * @returns {*} Parsed structure. - * @throws {Error} If the input is non-empty but fails to parse. - */ -function parseInput(name, fallback) { - const raw = core.getInput(name); - if (!raw || raw.trim() === '') return fallback; - try { - return yaml.load(raw, { schema: yaml.JSON_SCHEMA }); - } catch (e) { - throw new Error(`Failed to parse input '${name}' as YAML/JSON: ${e.message}`); - } -} - -/** - * Load the base matrix from a YAML/JSON file. - * - * @param {string} file Path as given, resolved against the process cwd - * (the workspace root when run by GitHub). - * @returns {*} The base matrix structure. - * @throws {Error} If the file is unreadable or unparsable. - */ -function loadMatrixFile(file) { - let raw; - try { - raw = fs.readFileSync(file, 'utf8'); - } catch (e) { - throw new Error(`Failed to read matrix file '${file}': ${e.message}`); - } - let doc; - try { - doc = yaml.load(raw, { schema: yaml.JSON_SCHEMA }); - } catch (e) { - throw new Error(`Failed to parse matrix file '${file}' as YAML/JSON: ${e.message}`); - } - return doc == null ? {} : doc; -} - -try { - const matrixFile = core.getInput('matrix-file'); - if (matrixFile && core.getInput('matrix')) { - throw new Error("'matrix' and 'matrix-file' are mutually exclusive"); - } - const matrix = matrixFile - ? loadMatrixFile(matrixFile) - : parseInput('matrix', {}); - const rules = parseInput('rules', []); - const result = buildMatrix(matrix, rules); - core.setOutput('matrix', JSON.stringify(result)); - core.startGroup(`matrix-builder: ${result.length} combination(s)`); - core.info(JSON.stringify(result, null, 2)); - core.endGroup(); -} catch (e) { - core.setFailed(e.message); -} diff --git a/scripts/actions/matrix-builder/tests/action.test.js b/scripts/actions/matrix-builder/tests/action.test.js deleted file mode 100644 index d2f95a364396..000000000000 --- a/scripts/actions/matrix-builder/tests/action.test.js +++ /dev/null @@ -1,136 +0,0 @@ -'use strict'; - -// Input-handling tests: run src/index.js as a child process the way GitHub -// does (inputs come in as INPUT_* env vars, outputs go to $GITHUB_OUTPUT). -// Requires node_modules (npm ci) since src/index.js pulls in @actions/core. - -const test = require('node:test'); -const assert = require('node:assert/strict'); -const { spawnSync } = require('node:child_process'); -const fs = require('node:fs'); -const os = require('node:os'); -const path = require('node:path'); - -const ACTION_DIR = path.join(__dirname, '..'); -const ENTRY = path.join(ACTION_DIR, 'src', 'index.js'); -const FIXTURES = path.join(__dirname, 'fixtures'); - -// Parse the GITHUB_OUTPUT file format written by @actions/core: -// name<} inputs Input name -> value (as YAML text). - * @returns {{status: number, stdout: string, outputs: Object}} - */ -function runAction(inputs) { - const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'matrix-builder-test-')); - const outFile = path.join(dir, 'github_output'); - fs.writeFileSync(outFile, ''); - const env = { ...process.env, GITHUB_OUTPUT: outFile }; - for (const [name, value] of Object.entries(inputs)) { - env[`INPUT_${name.toUpperCase()}`] = value; - } - const res = spawnSync(process.execPath, [ENTRY], { - env, - cwd: ACTION_DIR, - encoding: 'utf8', - }); - const outputs = parseGithubOutput(fs.readFileSync(outFile, 'utf8')); - fs.rmSync(dir, { recursive: true, force: true }); - return { status: res.status, stdout: res.stdout, outputs }; -} - -function matrixOf(result) { - assert.equal(result.status, 0, `action failed: ${result.stdout}`); - return JSON.parse(result.outputs.matrix); -} - -test('matrix-file: JSON entry list with exclude rules', () => { - const result = runAction({ - 'matrix-file': path.join(FIXTURES, 'docker-images-linux.json'), - rules: [ - '- if: true', - ' exclude:', - ' - { distro: ubuntu22, arch: x64 }', - ' - { distro: ubuntu24, arch: x64 }', - ].join('\n'), - }); - const expected = JSON.parse( - fs.readFileSync(path.join(FIXTURES, 'docker-images-linux.json'), 'utf8'), - ).filter(e => e.arch !== 'x64'); - assert.deepStrictEqual(matrixOf(result), expected); -}); - -test('matrix-file: workspace-relative path is resolved against cwd', () => { - const result = runAction({ - 'matrix-file': path.join('tests', 'fixtures', 'docker-images-linux.json'), - }); - assert.deepStrictEqual( - matrixOf(result), - JSON.parse(fs.readFileSync(path.join(FIXTURES, 'docker-images-linux.json'), 'utf8')), - ); -}); - -test('matrix-file: YAML axis map', () => { - const result = runAction({ - 'matrix-file': path.join(FIXTURES, 'axes.yml'), - }); - assert.deepStrictEqual(matrixOf(result), [ - { platform: 'x86_64', config: 'Release' }, - { platform: 'aarch64', config: 'Release' }, - ]); -}); - -test('matrix-file: YAML entry-list document', () => { - const result = runAction({ - 'matrix-file': path.join(FIXTURES, 'entry-list.yml'), - rules: '[{ exclude: { arch: arm64 } }]', - }); - assert.deepStrictEqual(matrixOf(result), [{ distro: 'ubuntu22', arch: 'x64' }]); -}); - -test('inline matrix still works (list form)', () => { - const result = runAction({ - matrix: '[{ a: 1 }, { a: 2 }]', - rules: '[{ extend: { a: 2, b: 3 } }]', - }); - assert.deepStrictEqual(matrixOf(result), [{ a: 1 }, { a: 2, b: 3 }]); -}); - -function assertFails(result, pattern) { - assert.equal(result.status, 1); - assert.match(result.stdout, pattern); -} - -test("error: 'matrix' and 'matrix-file' are mutually exclusive", () => { - assertFails( - runAction({ - matrix: 'platform: [x86_64]', - 'matrix-file': path.join(FIXTURES, 'axes.yml'), - }), - /mutually exclusive/, - ); -}); - -test('error: matrix-file does not exist', () => { - assertFails( - runAction({ 'matrix-file': path.join(FIXTURES, 'no-such-file.json') }), - /Failed to read matrix file/, - ); -}); diff --git a/scripts/actions/matrix-builder/tests/engine.test.js b/scripts/actions/matrix-builder/tests/engine.test.js deleted file mode 100644 index 03d4edd9e734..000000000000 --- a/scripts/actions/matrix-builder/tests/engine.test.js +++ /dev/null @@ -1,584 +0,0 @@ -'use strict'; - -const test = require('node:test'); -const assert = require('node:assert/strict'); -const fs = require('node:fs'); -const path = require('node:path'); - -const { - buildMatrix, - cartesian, - isTruthy, - matchesAll, -} = require('../lib/engine.js'); - -// Compare two arrays of objects irrespective of key order within each object. -// GitHub consumes the matrix output via fromJSON(), so field order is -// semantically irrelevant; we test the structure, not the byte layout. -function canon(arr) { - return arr.map(o => { - const out = {}; - for (const k of Object.keys(o).sort()) out[k] = o[k]; - return out; - }); -} - -function deepEqual(a, b, msg) { - if (msg === undefined) assert.deepStrictEqual(canon(a), canon(b)); - else assert.deepStrictEqual(canon(a), canon(b), msg); -} - -test('cartesian: empty axes', () => { - assert.deepStrictEqual(cartesian({}), []); -}); - -test('cartesian: single axis', () => { - assert.deepStrictEqual( - cartesian({ a: [1, 2, 3] }), - [{ a: 1 }, { a: 2 }, { a: 3 }], - ); -}); - -test('cartesian: two axes, lexicographic order', () => { - assert.deepStrictEqual( - cartesian({ a: [1, 2], b: ['x', 'y'] }), - [ - { a: 1, b: 'x' }, - { a: 1, b: 'y' }, - { a: 2, b: 'x' }, - { a: 2, b: 'y' }, - ], - ); -}); - -test('cartesian: scalar axis value treated as one-element list', () => { - assert.deepStrictEqual( - cartesian({ a: 'only', b: [1, 2] }), - [{ a: 'only', b: 1 }, { a: 'only', b: 2 }], - ); -}); - -test('isTruthy: literals', () => { - assert.equal(isTruthy(true), true); - assert.equal(isTruthy(false), false); - assert.equal(isTruthy(null), false); - assert.equal(isTruthy(undefined), false); -}); - -test('isTruthy: strings', () => { - for (const s of ['', 'false', 'False', 'FALSE', '0', 'no', 'No', 'off', ' false ']) { - assert.equal(isTruthy(s), false, `'${s}' should be falsy`); - } - for (const s of ['true', 'True', '1', 'yes', 'on', 'anything', ' x ']) { - assert.equal(isTruthy(s), true, `'${s}' should be truthy`); - } -}); - -test('matchesAll: subset semantics', () => { - assert.equal(matchesAll({ a: 1, b: 2 }, { a: 1 }), true); - assert.equal(matchesAll({ a: 1, b: 2 }, { a: 1, b: 2 }), true); - assert.equal(matchesAll({ a: 1, b: 2 }, { a: 1, c: 3 }), false); - assert.equal(matchesAll({ a: 1 }, {}), true); -}); - -test('no rules: returns the cartesian product', () => { - deepEqual( - buildMatrix({ a: [1, 2] }, []), - [{ a: 1 }, { a: 2 }], - ); -}); - -test('extend: matching axis criterion extends only the matched row', () => { - deepEqual( - buildMatrix( - { platform: ['x86_64', 'aarch64'] }, - [{ extend: { platform: 'x86_64', os: 'foo' } }], - ), - [ - { platform: 'x86_64', os: 'foo' }, - { platform: 'aarch64' }, - ], - ); -}); - -test('extend: non-matching axis value is a no-op (never adds)', () => { - deepEqual( - buildMatrix( - { platform: ['x86_64'] }, - [{ extend: { platform: 'aarch64', os: 'foo' } }], - ), - [{ platform: 'x86_64' }], - ); -}); - -test('extend: no axis keys applies extras to every entry', () => { - deepEqual( - buildMatrix( - { a: [1, 2] }, - [{ extend: { tag: 'common' } }], - ), - [ - { a: 1, tag: 'common' }, - { a: 2, tag: 'common' }, - ], - ); -}); - -test('include: matching axis criterion extends matched rows', () => { - deepEqual( - buildMatrix( - { platform: ['x86_64', 'aarch64'] }, - [{ include: { platform: 'x86_64', os: 'foo' } }], - ), - [ - { platform: 'x86_64', os: 'foo' }, - { platform: 'aarch64' }, - ], - ); -}); - -test('include: non-matching axis value appends a new entry', () => { - deepEqual( - buildMatrix( - { platform: ['x86_64'] }, - [{ include: { platform: 'aarch64', os: 'foo' } }], - ), - [ - { platform: 'x86_64' }, - { platform: 'aarch64', os: 'foo' }, - ], - ); -}); - -test('include: no axis keys appends unconditionally', () => { - deepEqual( - buildMatrix( - { a: [1] }, - [{ include: { extraField: 'x' } }], - ), - [ - { a: 1 }, - { extraField: 'x' }, - ], - ); -}); - -test('exclude: drops entries matching the subset', () => { - deepEqual( - buildMatrix( - { a: [1, 2], b: [3, 4] }, - [{ exclude: { a: 1, b: 3 } }], - ), - [ - { a: 1, b: 4 }, - { a: 2, b: 3 }, - { a: 2, b: 4 }, - ], - ); -}); - -test('if: false / "false" / "0" / "" skip the rule', () => { - for (const cond of [false, 'false', '0', '', 'no', 'off', null]) { - deepEqual( - buildMatrix( - { a: [1, 2] }, - [{ if: cond, exclude: { a: 1 } }], - ), - [{ a: 1 }, { a: 2 }], - `if=${JSON.stringify(cond)} should skip`, - ); - } -}); - -test('if: true / "true" / "1" / "yes" run the rule', () => { - for (const cond of [true, 'true', '1', 'yes', 'on', 'anything']) { - deepEqual( - buildMatrix( - { a: [1, 2] }, - [{ if: cond, exclude: { a: 1 } }], - ), - [{ a: 2 }], - `if=${JSON.stringify(cond)} should run`, - ); - } -}); - -test('ordering: extend then exclude removes; exclude then extend leaves row gone', () => { - // extend then exclude: the row gets extended, then removed. - deepEqual( - buildMatrix( - { p: ['a', 'b'] }, - [ - { extend: { p: 'a', tag: 'X' } }, - { exclude: { p: 'a' } }, - ], - ), - [{ p: 'b' }], - ); - - // exclude then extend of the same axis-value: a is gone before extend tries - // to attach fields to it, so extend is a no-op. - deepEqual( - buildMatrix( - { p: ['a', 'b'] }, - [ - { exclude: { p: 'a' } }, - { extend: { p: 'a', tag: 'X' } }, - ], - ), - [{ p: 'b' }], - ); -}); - -test('ordering: exclude then include of the same axis-value re-adds the row', () => { - // This is the case GitHub's native include/exclude cannot model: include - // applied after exclude in source order resurrects the row. - deepEqual( - buildMatrix( - { p: ['a', 'b'] }, - [ - { exclude: { p: 'a' } }, - { include: { p: 'a', tag: 'fresh' } }, - ], - ), - [ - { p: 'b' }, - { p: 'a', tag: 'fresh' }, - ], - ); -}); - -test('empty matrix + rules produces only what rules add', () => { - deepEqual( - buildMatrix( - {}, - [ - { include: { p: 'a', runner: 'x' } }, - { include: { p: 'b', runner: 'y' } }, - ], - ), - [ - { p: 'a', runner: 'x' }, - { p: 'b', runner: 'y' }, - ], - ); -}); - -test('error: matrix must be a map or a list of entries', () => { - assert.throws(() => buildMatrix(null, []), /must be a map/); - assert.throws(() => buildMatrix('foo', []), /must be a map/); - assert.throws(() => buildMatrix(42, []), /must be a map/); -}); - -test('error: rules must be a list', () => { - assert.throws(() => buildMatrix({}, {}), /must be a list/); -}); - -test('error: rule must have exactly one of include/extend/exclude', () => { - assert.throws( - () => buildMatrix({}, [{ include: { a: 1 }, exclude: { a: 1 } }]), - /exactly one of/, - ); - assert.throws( - () => buildMatrix({}, [{ if: true }]), - /exactly one of/, - ); -}); - -test('error: rule body must be an object or a list of objects', () => { - assert.throws( - () => buildMatrix({}, [{ include: 'not-an-object' }]), - /'include' must be an object or a list of objects/, - ); -}); - -test('error: list-body entry must be an object', () => { - assert.throws( - () => buildMatrix({}, [{ extend: [{ a: 1 }, 'not-an-object'] }]), - /'extend' entry #1 must be an object/, - ); -}); - -test('list body: extend applies each entry in order', () => { - deepEqual( - buildMatrix( - { p: ['a', 'b', 'c'] }, - [ - { - extend: [ - { p: 'a', tag: 'A' }, - { p: 'b', tag: 'B' }, - { p: 'c', tag: 'C' }, - ], - }, - ], - ), - [ - { p: 'a', tag: 'A' }, - { p: 'b', tag: 'B' }, - { p: 'c', tag: 'C' }, - ], - ); -}); - -test('list body: include applies each entry in order (add + extend)', () => { - deepEqual( - buildMatrix( - { p: ['a'] }, - [ - { - include: [ - { p: 'a', tag: 'A' }, - { p: 'b', tag: 'B' }, - ], - }, - ], - ), - [ - { p: 'a', tag: 'A' }, - { p: 'b', tag: 'B' }, - ], - ); -}); - -test('list body: exclude drops each match in order', () => { - deepEqual( - buildMatrix( - { p: ['a', 'b', 'c'] }, - [{ exclude: [{ p: 'a' }, { p: 'c' }] }], - ), - [{ p: 'b' }], - ); -}); - -test('list body: empty list is a no-op', () => { - deepEqual( - buildMatrix({ p: ['a', 'b'] }, [{ extend: [] }]), - [{ p: 'a' }, { p: 'b' }], - ); -}); - -test('list body: if-guard applies to the whole list', () => { - deepEqual( - buildMatrix( - { p: ['a', 'b'] }, - [ - { - if: false, - extend: [ - { p: 'a', tag: 'A' }, - { p: 'b', tag: 'B' }, - ], - }, - ], - ), - [{ p: 'a' }, { p: 'b' }], - ); -}); - -test('list body: order within the list matters', () => { - // Second entry shadows the first because both target the same row. - deepEqual( - buildMatrix( - { p: ['a'] }, - [ - { - extend: [ - { p: 'a', tag: 'first' }, - { p: 'a', tag: 'second' }, - ], - }, - ], - ), - [{ p: 'a', tag: 'second' }], - ); -}); - -// Parity snapshot: feed the exact pip-build.yml inputs through buildMatrix() -// for all four (disable_x64, disable_arm64) combinations and compare against -// the JSON the current jq pipeline produces. - -const PLATFORMS = ['x86_64', 'aarch64']; -const PY_VERSIONS = ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']; - -// Use the grouped list-of-bodies form to exercise that path against the -// captured jq fixtures. -const PLATFORM_RULES = { - extend: [ - { platform: 'x86_64', 'container-options': '--user root', runner: 'ubuntu-latest', compiler: '/usr/bin/clang++', 'container-prefix': '' }, - { platform: 'aarch64', 'container-options': ' ', runner: 'ubuntu-24.04-arm', compiler: '/usr/bin/clang++', 'container-prefix': 'arm64v8/' }, - ], -}; -const PY_RULES = { - extend: [ - { 'py-version': '3.8', os: 'rockylinux:8' }, - { 'py-version': '3.9', os: 'debian:11-slim' }, - { 'py-version': '3.10', os: 'ubuntu:22.04' }, - { 'py-version': '3.11', os: 'fedora:37' }, - { 'py-version': '3.12', os: 'fedora:39' }, - { 'py-version': '3.13', os: 'fedora:42' }, - { 'py-version': '3.14', os: 'ubuntu:25.10' }, - ], -}; - -function pipBuildMatrix(disableX64, disableArm64) { - return buildMatrix( - { platform: PLATFORMS }, - [ - PLATFORM_RULES, - { - extend: [ - { platform: 'x86_64', os: 'rockylinux8-vcpkg-x64' }, - { platform: 'aarch64', os: 'rockylinux8-vcpkg-arm64' }, - ], - }, - { if: disableX64, exclude: { platform: 'x86_64' } }, - { if: disableArm64, exclude: { platform: 'aarch64' } }, - ], - ); -} - -function pipTestMatrix(disableX64, disableArm64) { - return buildMatrix( - { platform: PLATFORMS, 'py-version': PY_VERSIONS }, - [ - PLATFORM_RULES, - PY_RULES, - { if: disableX64, exclude: { platform: 'x86_64' } }, - { if: disableArm64, exclude: { platform: 'aarch64' } }, - ], - ); -} - -function loadFixture(name) { - const p = path.join(__dirname, 'fixtures', name); - return JSON.parse(fs.readFileSync(p, 'utf8')); -} - -const COMBOS = [ - { suffix: '00', dx: false, da: false }, - { suffix: '01', dx: false, da: true }, - { suffix: '10', dx: true, da: false }, - { suffix: '11', dx: true, da: true }, -]; - -for (const { suffix, dx, da } of COMBOS) { - test(`parity: pip-build build matrix (disable_x64=${dx}, disable_arm64=${da})`, () => { - deepEqual(pipBuildMatrix(dx, da), loadFixture(`build-${suffix}.json`)); - }); - test(`parity: pip-build test matrix (disable_x64=${dx}, disable_arm64=${da})`, () => { - deepEqual(pipTestMatrix(dx, da), loadFixture(`test-${suffix}.json`)); - }); -} - -// --------------------------------------------------------------------------- -// List-form base matrix: include-style entries taken verbatim, axis keys = -// union of the entries' keys. - -test('list base: entries pass through verbatim with no rules', () => { - deepEqual( - buildMatrix([{ a: 1, b: 'x' }, { a: 2 }], []), - [{ a: 1, b: 'x' }, { a: 2 }], - ); -}); - -test('list base: empty list yields an empty matrix', () => { - deepEqual(buildMatrix([], []), []); -}); - -test('list base: extend matches on entry keys', () => { - deepEqual( - buildMatrix( - [{ distro: 'ubuntu22', arch: 'x64' }, { distro: 'ubuntu22', arch: 'arm64' }], - [{ extend: { arch: 'arm64', runner: 'ubuntu-24.04-arm' } }], - ), - [ - { distro: 'ubuntu22', arch: 'x64' }, - { distro: 'ubuntu22', arch: 'arm64', runner: 'ubuntu-24.04-arm' }, - ], - ); -}); - -test('list base: axis keys are the union of entry keys', () => { - // `runner` appears in only one base entry but is still an axis key, so an - // include matching on it extends that entry instead of appending a new one. - deepEqual( - buildMatrix( - [{ a: 1 }, { a: 2, runner: 'r1' }], - [{ include: { runner: 'r1', tag: 't' } }], - ), - [{ a: 1 }, { a: 2, runner: 'r1', tag: 't' }], - ); -}); - -test('list base: include with unmatched axis criteria appends', () => { - deepEqual( - buildMatrix( - [{ distro: 'ubuntu22', arch: 'x64' }], - [{ include: { distro: 'ubuntu24', arch: 'x64' } }], - ), - [{ distro: 'ubuntu22', arch: 'x64' }, { distro: 'ubuntu24', arch: 'x64' }], - ); -}); - -test('list base: exclude drops matching entries', () => { - deepEqual( - buildMatrix( - [{ distro: 'ubuntu22', arch: 'x64' }, { distro: 'emscripten', arch: 'arm64' }], - [{ exclude: { distro: 'emscripten' } }], - ), - [{ distro: 'ubuntu22', arch: 'x64' }], - ); -}); - -test('list base: input entries are not mutated', () => { - const base = [{ a: 1 }]; - buildMatrix(base, [{ extend: { b: 2 } }]); - assert.deepStrictEqual(base, [{ a: 1 }]); -}); - -test('error: list base entry must be an object', () => { - assert.throws(() => buildMatrix([{ a: 1 }, 'nope'], []), /entry #1 must be an object/); - assert.throws(() => buildMatrix([[1]], []), /entry #0 must be an object/); -}); - -// --------------------------------------------------------------------------- -// Parity with the jq pipeline these rules replaced in prepare-images.yml -// (compute-image-matrices). The docker-linux-.json -// fixtures are the captured outputs of the original jq filter over -// fixtures/docker-images-linux.json (a snapshot of -// .github/workflows/matrix/docker-images-linux.json). The rules below must -// stay in sync with the matrix-builder step in prepare-images.yml. - -const DOCKER_IMAGES_LINUX = loadFixture('docker-images-linux.json'); - -function dockerLinuxMatrix(dx64, darm64, demscr) { - return buildMatrix(DOCKER_IMAGES_LINUX, [ - { - if: dx64, - exclude: [ - { distro: 'ubuntu22', arch: 'x64' }, - { distro: 'ubuntu24', arch: 'x64' }, - ], - }, - { - if: darm64, - exclude: [ - { distro: 'ubuntu22', arch: 'arm64' }, - { distro: 'ubuntu24', arch: 'arm64' }, - ], - }, - { if: demscr, exclude: { distro: 'emscripten' } }, - ]); -} - -for (const dx64 of [false, true]) { - for (const darm64 of [false, true]) { - for (const demscr of [false, true]) { - const suffix = `${+dx64}${+darm64}${+demscr}`; - test(`parity: prepare-images linux matrix (${suffix})`, () => { - deepEqual(dockerLinuxMatrix(dx64, darm64, demscr), loadFixture(`docker-linux-${suffix}.json`)); - }); - } - } -} diff --git a/scripts/actions/matrix-builder/tests/fixtures/axes.yml b/scripts/actions/matrix-builder/tests/fixtures/axes.yml deleted file mode 100644 index 4b5f8f3c6dd5..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/axes.yml +++ /dev/null @@ -1,5 +0,0 @@ -platform: - - x86_64 - - aarch64 -config: - - Release diff --git a/scripts/actions/matrix-builder/tests/fixtures/build-00.json b/scripts/actions/matrix-builder/tests/fixtures/build-00.json deleted file mode 100644 index 51f419687db1..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/build-00.json +++ /dev/null @@ -1 +0,0 @@ -[{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","os":"rockylinux8-vcpkg-x64"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","os":"rockylinux8-vcpkg-arm64"}] diff --git a/scripts/actions/matrix-builder/tests/fixtures/build-01.json b/scripts/actions/matrix-builder/tests/fixtures/build-01.json deleted file mode 100644 index 2458ed896f99..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/build-01.json +++ /dev/null @@ -1 +0,0 @@ -[{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","os":"rockylinux8-vcpkg-x64"}] diff --git a/scripts/actions/matrix-builder/tests/fixtures/build-10.json b/scripts/actions/matrix-builder/tests/fixtures/build-10.json deleted file mode 100644 index 40ef3095d7a5..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/build-10.json +++ /dev/null @@ -1 +0,0 @@ -[{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","os":"rockylinux8-vcpkg-arm64"}] diff --git a/scripts/actions/matrix-builder/tests/fixtures/build-11.json b/scripts/actions/matrix-builder/tests/fixtures/build-11.json deleted file mode 100644 index fe51488c7066..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/build-11.json +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/scripts/actions/matrix-builder/tests/fixtures/docker-images-linux.json b/scripts/actions/matrix-builder/tests/fixtures/docker-images-linux.json deleted file mode 100644 index 187d5b566d71..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/docker-images-linux.json +++ /dev/null @@ -1,26 +0,0 @@ -[ - { - "distro": "ubuntu22", - "arch": "x64" - }, - { - "distro": "ubuntu24", - "arch": "x64" - }, - { - "distro": "ubuntu22", - "arch": "arm64" - }, - { - "distro": "ubuntu24", - "arch": "arm64" - }, - { - "distro": "emscripten", - "arch": "arm64" - }, - { - "distro": "emscripten-generate-c-bindings", - "arch": "arm64" - } -] diff --git a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-000.json b/scripts/actions/matrix-builder/tests/fixtures/docker-linux-000.json deleted file mode 100644 index 9f5fb646632a..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-000.json +++ /dev/null @@ -1,26 +0,0 @@ -[ - { - "distro": "ubuntu22", - "arch": "x64" - }, - { - "distro": "ubuntu24", - "arch": "x64" - }, - { - "distro": "ubuntu22", - "arch": "arm64" - }, - { - "distro": "ubuntu24", - "arch": "arm64" - }, - { - "distro": "emscripten", - "arch": "arm64" - }, - { - "distro": "emscripten-generate-c-bindings", - "arch": "arm64" - } -] diff --git a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-001.json b/scripts/actions/matrix-builder/tests/fixtures/docker-linux-001.json deleted file mode 100644 index cba9f161549f..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-001.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "distro": "ubuntu22", - "arch": "x64" - }, - { - "distro": "ubuntu24", - "arch": "x64" - }, - { - "distro": "ubuntu22", - "arch": "arm64" - }, - { - "distro": "ubuntu24", - "arch": "arm64" - }, - { - "distro": "emscripten-generate-c-bindings", - "arch": "arm64" - } -] diff --git a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-010.json b/scripts/actions/matrix-builder/tests/fixtures/docker-linux-010.json deleted file mode 100644 index e7015e7ff0ef..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-010.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "distro": "ubuntu22", - "arch": "x64" - }, - { - "distro": "ubuntu24", - "arch": "x64" - }, - { - "distro": "emscripten", - "arch": "arm64" - }, - { - "distro": "emscripten-generate-c-bindings", - "arch": "arm64" - } -] diff --git a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-011.json b/scripts/actions/matrix-builder/tests/fixtures/docker-linux-011.json deleted file mode 100644 index 9834dcaf5358..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-011.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "distro": "ubuntu22", - "arch": "x64" - }, - { - "distro": "ubuntu24", - "arch": "x64" - }, - { - "distro": "emscripten-generate-c-bindings", - "arch": "arm64" - } -] diff --git a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-100.json b/scripts/actions/matrix-builder/tests/fixtures/docker-linux-100.json deleted file mode 100644 index 2def9c4599f3..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-100.json +++ /dev/null @@ -1,18 +0,0 @@ -[ - { - "distro": "ubuntu22", - "arch": "arm64" - }, - { - "distro": "ubuntu24", - "arch": "arm64" - }, - { - "distro": "emscripten", - "arch": "arm64" - }, - { - "distro": "emscripten-generate-c-bindings", - "arch": "arm64" - } -] diff --git a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-101.json b/scripts/actions/matrix-builder/tests/fixtures/docker-linux-101.json deleted file mode 100644 index e033a7681aa4..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-101.json +++ /dev/null @@ -1,14 +0,0 @@ -[ - { - "distro": "ubuntu22", - "arch": "arm64" - }, - { - "distro": "ubuntu24", - "arch": "arm64" - }, - { - "distro": "emscripten-generate-c-bindings", - "arch": "arm64" - } -] diff --git a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-110.json b/scripts/actions/matrix-builder/tests/fixtures/docker-linux-110.json deleted file mode 100644 index 483c277d887b..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-110.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "distro": "emscripten", - "arch": "arm64" - }, - { - "distro": "emscripten-generate-c-bindings", - "arch": "arm64" - } -] diff --git a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-111.json b/scripts/actions/matrix-builder/tests/fixtures/docker-linux-111.json deleted file mode 100644 index 4bb07d1ab875..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/docker-linux-111.json +++ /dev/null @@ -1,6 +0,0 @@ -[ - { - "distro": "emscripten-generate-c-bindings", - "arch": "arm64" - } -] diff --git a/scripts/actions/matrix-builder/tests/fixtures/entry-list.yml b/scripts/actions/matrix-builder/tests/fixtures/entry-list.yml deleted file mode 100644 index 3eabce6ab2ac..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/entry-list.yml +++ /dev/null @@ -1,5 +0,0 @@ -# Bare entry-list form: the whole document is the base matrix. -- distro: ubuntu22 - arch: x64 -- distro: ubuntu24 - arch: arm64 diff --git a/scripts/actions/matrix-builder/tests/fixtures/test-00.json b/scripts/actions/matrix-builder/tests/fixtures/test-00.json deleted file mode 100644 index d5e35189447f..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/test-00.json +++ /dev/null @@ -1 +0,0 @@ -[{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.8","os":"rockylinux:8"},{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.9","os":"debian:11-slim"},{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.10","os":"ubuntu:22.04"},{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.11","os":"fedora:37"},{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.12","os":"fedora:39"},{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.13","os":"fedora:42"},{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.14","os":"ubuntu:25.10"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.8","os":"rockylinux:8"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.9","os":"debian:11-slim"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.10","os":"ubuntu:22.04"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.11","os":"fedora:37"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.12","os":"fedora:39"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.13","os":"fedora:42"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.14","os":"ubuntu:25.10"}] diff --git a/scripts/actions/matrix-builder/tests/fixtures/test-01.json b/scripts/actions/matrix-builder/tests/fixtures/test-01.json deleted file mode 100644 index 34fe18d7acba..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/test-01.json +++ /dev/null @@ -1 +0,0 @@ -[{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.8","os":"rockylinux:8"},{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.9","os":"debian:11-slim"},{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.10","os":"ubuntu:22.04"},{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.11","os":"fedora:37"},{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.12","os":"fedora:39"},{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.13","os":"fedora:42"},{"platform":"x86_64","container-options":"--user root","runner":"ubuntu-latest","compiler":"/usr/bin/clang++","container-prefix":"","py-version":"3.14","os":"ubuntu:25.10"}] diff --git a/scripts/actions/matrix-builder/tests/fixtures/test-10.json b/scripts/actions/matrix-builder/tests/fixtures/test-10.json deleted file mode 100644 index 0c9404fe6f2e..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/test-10.json +++ /dev/null @@ -1 +0,0 @@ -[{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.8","os":"rockylinux:8"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.9","os":"debian:11-slim"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.10","os":"ubuntu:22.04"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.11","os":"fedora:37"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.12","os":"fedora:39"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.13","os":"fedora:42"},{"platform":"aarch64","container-options":" ","runner":"ubuntu-24.04-arm","compiler":"/usr/bin/clang++","container-prefix":"arm64v8/","py-version":"3.14","os":"ubuntu:25.10"}] diff --git a/scripts/actions/matrix-builder/tests/fixtures/test-11.json b/scripts/actions/matrix-builder/tests/fixtures/test-11.json deleted file mode 100644 index fe51488c7066..000000000000 --- a/scripts/actions/matrix-builder/tests/fixtures/test-11.json +++ /dev/null @@ -1 +0,0 @@ -[] From 385d41fc91d75888d4eaf5d54398fcc59e59d632 Mon Sep 17 00:00:00 2001 From: Artur Sharafutdinov Date: Fri, 11 Sep 2026 20:08:29 +0200 Subject: [PATCH 2/2] Add unit tests --- .github/actions/matrix-builder/README.md | 3 + .../tests/test_matrix_builder.py | 447 ++++++++++++++++++ 2 files changed, 450 insertions(+) create mode 100644 .github/actions/matrix-builder/tests/test_matrix_builder.py diff --git a/.github/actions/matrix-builder/README.md b/.github/actions/matrix-builder/README.md index 2e7f183d83fe..3ef7082fc04d 100644 --- a/.github/actions/matrix-builder/README.md +++ b/.github/actions/matrix-builder/README.md @@ -304,3 +304,6 @@ stdin and the rules in `--rules`; the script appends the `matrix` output to - `action.yml` — action metadata (inputs, outputs) and the step above. - `matrix_builder.py` — the rules engine and the script entry point. Read this for the canonical semantics. + - `tests/test_matrix_builder.py` — `unittest` suite for the engine, the + script's command line, and the step body run through `bash` and `yq`. + Run from this directory: `python3 -m unittest discover -s tests`. diff --git a/.github/actions/matrix-builder/tests/test_matrix_builder.py b/.github/actions/matrix-builder/tests/test_matrix_builder.py new file mode 100644 index 000000000000..0bdbb5b5e1da --- /dev/null +++ b/.github/actions/matrix-builder/tests/test_matrix_builder.py @@ -0,0 +1,447 @@ +import json +import os +import subprocess +import sys +import tempfile +import unittest +from pathlib import Path + +ACTION_DIR = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ACTION_DIR)) + +from matrix_builder import build_matrix, cartesian, is_truthy, matches_all # noqa: E402 + +CIRCLE_RED = {'shape': 'circle', 'color': 'red'} +CIRCLE_BLUE = {'shape': 'circle', 'color': 'blue'} +SQUARE_RED = {'shape': 'square', 'color': 'red'} +SQUARE_BLUE = {'shape': 'square', 'color': 'blue'} +SHAPE_COLOR = {'shape': ['circle', 'square'], 'color': ['red', 'blue']} + + +def read_outputs(path): + return dict(line.split('=', 1) for line in path.read_text().splitlines()) + + +class CartesianTest(unittest.TestCase): + def test_no_axes_gives_no_entries(self): + self.assertEqual(cartesian({}), []) + + def test_single_axis(self): + self.assertEqual(cartesian({'size': ['small', 'large']}), [{'size': 'small'}, {'size': 'large'}]) + + def test_first_axis_varies_slowest(self): + self.assertEqual(cartesian(SHAPE_COLOR), [CIRCLE_RED, CIRCLE_BLUE, SQUARE_RED, SQUARE_BLUE]) + + def test_scalar_axis_value_counts_as_one_element_list(self): + self.assertEqual( + cartesian({'shape': 'circle', 'size': ['small', 'large']}), + [{'shape': 'circle', 'size': 'small'}, {'shape': 'circle', 'size': 'large'}], + ) + + +class TruthinessTest(unittest.TestCase): + def test_literals(self): + self.assertTrue(is_truthy(True)) + self.assertFalse(is_truthy(False)) + self.assertFalse(is_truthy(None)) + + def test_numbers(self): + self.assertFalse(is_truthy(0)) + self.assertTrue(is_truthy(1)) + self.assertTrue(is_truthy(2.5)) + + def test_falsy_strings_ignore_case_and_whitespace(self): + for s in ['', ' ', 'false', 'FALSE', ' False ', '0', 'no', 'NO', 'off', 'Off']: + with self.subTest(s=repr(s)): + self.assertFalse(is_truthy(s)) + + def test_other_strings_are_truthy(self): + for s in ['true', '1', 'yes', 'on', 'maybe', ' x ', 'null']: + with self.subTest(s=repr(s)): + self.assertTrue(is_truthy(s)) + + +class MatchesAllTest(unittest.TestCase): + def test_criteria_are_a_subset_of_the_entry(self): + entry = {'shape': 'circle', 'color': 'red', 'sides': 0} + self.assertTrue(matches_all(entry, {})) + self.assertTrue(matches_all(entry, {'shape': 'circle'})) + self.assertTrue(matches_all(entry, {'shape': 'circle', 'color': 'red'})) + self.assertFalse(matches_all(entry, {'shape': 'circle', 'color': 'blue'})) + + def test_missing_key_never_matches(self): + self.assertFalse(matches_all({'shape': 'circle'}, {'shape': 'circle', 'sides': None})) + + def test_bool_and_int_are_distinct(self): + self.assertFalse(matches_all({'solid': True}, {'solid': 1})) + self.assertFalse(matches_all({'solid': 0}, {'solid': False})) + + def test_int_and_equal_float_match(self): + self.assertTrue(matches_all({'sides': 4}, {'sides': 4.0})) + + def test_lists_compare_by_value(self): + self.assertTrue(matches_all({'tags': ['round', 'flat']}, {'tags': ['round', 'flat']})) + self.assertFalse(matches_all({'tags': ['round', 'flat']}, {'tags': ['flat', 'round']})) + + +class IncludeTest(unittest.TestCase): + def test_matching_axis_values_extend_every_matching_row(self): + result = build_matrix(SHAPE_COLOR, [{'include': {'shape': 'circle', 'sides': 0}}]) + self.assertEqual(result, [ + {**CIRCLE_RED, 'sides': 0}, + {**CIRCLE_BLUE, 'sides': 0}, + SQUARE_RED, + SQUARE_BLUE, + ]) + + def test_unmatched_axis_values_append_a_row_with_the_rule_keys(self): + result = build_matrix({'shape': ['circle']}, [{'include': {'shape': 'triangle', 'sides': 3}}]) + self.assertEqual(result, [{'shape': 'circle'}, {'shape': 'triangle', 'sides': 3}]) + + def test_no_axis_keys_appends_unconditionally(self): + result = build_matrix({'shape': ['circle']}, [{'include': {'sides': 3}}]) + self.assertEqual(result, [{'shape': 'circle'}, {'sides': 3}]) + + def test_list_body_mixes_extend_and_append(self): + result = build_matrix({'shape': ['circle']}, [{'include': [ + {'shape': 'circle', 'sides': 0}, + {'shape': 'triangle', 'sides': 3}, + ]}]) + self.assertEqual(result, [{'shape': 'circle', 'sides': 0}, {'shape': 'triangle', 'sides': 3}]) + + def test_later_payload_overrides_earlier_one(self): + result = build_matrix({'shape': ['circle']}, [ + {'include': {'shape': 'circle', 'label': 'disc'}}, + {'include': {'shape': 'circle', 'label': 'ring'}}, + ]) + self.assertEqual(result, [{'shape': 'circle', 'label': 'ring'}]) + + +class ExtendTest(unittest.TestCase): + def test_matching_axis_values_extend_only_those_rows(self): + result = build_matrix(SHAPE_COLOR, [{'extend': {'color': 'blue', 'cool': True}}]) + self.assertEqual(result, [ + CIRCLE_RED, + {**CIRCLE_BLUE, 'cool': True}, + SQUARE_RED, + {**SQUARE_BLUE, 'cool': True}, + ]) + + def test_unmatched_axis_values_are_a_noop(self): + result = build_matrix({'shape': ['circle']}, [{'extend': {'shape': 'triangle', 'sides': 3}}]) + self.assertEqual(result, [{'shape': 'circle'}]) + + def test_no_axis_keys_extends_every_row(self): + result = build_matrix({'shape': ['circle', 'square']}, [{'extend': {'weight': 1}}]) + self.assertEqual(result, [{'shape': 'circle', 'weight': 1}, {'shape': 'square', 'weight': 1}]) + + def test_list_body_applies_each_item_in_order(self): + result = build_matrix({'shape': ['circle', 'square']}, [{'extend': [ + {'shape': 'circle', 'sides': 0}, + {'shape': 'square', 'sides': 4}, + {'shape': 'square', 'sides': 5}, + ]}]) + self.assertEqual(result, [{'shape': 'circle', 'sides': 0}, {'shape': 'square', 'sides': 5}]) + + def test_empty_list_body_is_a_noop(self): + self.assertEqual(build_matrix({'shape': ['circle']}, [{'extend': []}]), [{'shape': 'circle'}]) + + +class ExcludeTest(unittest.TestCase): + def test_subset_match_drops_rows(self): + result = build_matrix(SHAPE_COLOR, [{'exclude': {'shape': 'square', 'color': 'blue'}}]) + self.assertEqual(result, [CIRCLE_RED, CIRCLE_BLUE, SQUARE_RED]) + + def test_single_key_drops_every_row_with_that_value(self): + self.assertEqual(build_matrix(SHAPE_COLOR, [{'exclude': {'color': 'blue'}}]), [CIRCLE_RED, SQUARE_RED]) + + def test_key_absent_from_a_row_keeps_that_row(self): + result = build_matrix([CIRCLE_RED, {'shape': 'triangle'}], [{'exclude': {'color': 'red'}}]) + self.assertEqual(result, [{'shape': 'triangle'}]) + + def test_payload_keys_take_part_in_the_match(self): + result = build_matrix({'shape': ['circle', 'square']}, [ + {'extend': {'shape': 'circle', 'curved': True}}, + {'exclude': {'curved': True}}, + ]) + self.assertEqual(result, [{'shape': 'square'}]) + + def test_list_body_drops_each_match(self): + result = build_matrix(SHAPE_COLOR, [{'exclude': [{'shape': 'circle'}, {'color': 'blue'}]}]) + self.assertEqual(result, [SQUARE_RED]) + + +class IfGuardTest(unittest.TestCase): + def test_falsy_values_skip_the_rule(self): + for cond in [False, None, 0, '', 'false', 'FALSE', '0', 'no', 'off', ' false ']: + with self.subTest(cond=repr(cond)): + result = build_matrix({'shape': ['circle', 'square']}, [{'if': cond, 'exclude': {'shape': 'square'}}]) + self.assertEqual(result, [{'shape': 'circle'}, {'shape': 'square'}]) + + def test_truthy_values_apply_the_rule(self): + for cond in [True, 1, 'true', 'TRUE', '1', 'yes', 'on', 'maybe']: + with self.subTest(cond=repr(cond)): + result = build_matrix({'shape': ['circle', 'square']}, [{'if': cond, 'exclude': {'shape': 'square'}}]) + self.assertEqual(result, [{'shape': 'circle'}]) + + def test_absent_if_applies_the_rule(self): + result = build_matrix({'shape': ['circle', 'square']}, [{'exclude': {'shape': 'square'}}]) + self.assertEqual(result, [{'shape': 'circle'}]) + + def test_guard_covers_the_whole_list_body(self): + result = build_matrix(SHAPE_COLOR, [{'if': False, 'exclude': [{'shape': 'circle'}, {'shape': 'square'}]}]) + self.assertEqual(result, [CIRCLE_RED, CIRCLE_BLUE, SQUARE_RED, SQUARE_BLUE]) + + +class OrderingTest(unittest.TestCase): + def test_extend_then_exclude_removes_the_extended_row(self): + result = build_matrix({'shape': ['circle', 'square']}, [ + {'extend': {'shape': 'circle', 'sides': 0}}, + {'exclude': {'shape': 'circle'}}, + ]) + self.assertEqual(result, [{'shape': 'square'}]) + + def test_exclude_then_extend_has_nothing_to_extend(self): + result = build_matrix({'shape': ['circle', 'square']}, [ + {'exclude': {'shape': 'circle'}}, + {'extend': {'shape': 'circle', 'sides': 0}}, + ]) + self.assertEqual(result, [{'shape': 'square'}]) + + def test_exclude_then_include_recreates_the_row(self): + result = build_matrix({'shape': ['circle', 'square']}, [ + {'exclude': {'shape': 'circle'}}, + {'include': {'shape': 'circle', 'label': 'ring'}}, + ]) + self.assertEqual(result, [{'shape': 'square'}, {'shape': 'circle', 'label': 'ring'}]) + + def test_rules_build_a_matrix_from_nothing(self): + result = build_matrix({}, [ + {'include': {'shape': 'circle', 'sides': 0}}, + {'include': {'shape': 'square', 'sides': 4}}, + {'if': 'true', 'exclude': {'shape': 'square'}}, + ]) + self.assertEqual(result, [{'shape': 'circle', 'sides': 0}]) + + +class EntryListBaseTest(unittest.TestCase): + def test_entries_are_used_verbatim(self): + entries = [{'animal': 'cat', 'sound': 'meow'}, {'animal': 'dog', 'sound': 'woof', 'trained': True}] + self.assertEqual(build_matrix(entries, []), entries) + + def test_empty_list_gives_empty_matrix(self): + self.assertEqual(build_matrix([], []), []) + + def test_axis_keys_are_the_union_of_entry_keys(self): + result = build_matrix( + [{'animal': 'cat'}, {'animal': 'dog', 'trained': True}], + [{'include': {'trained': True, 'tricks': 3}}], + ) + self.assertEqual(result, [{'animal': 'cat'}, {'animal': 'dog', 'trained': True, 'tricks': 3}]) + + def test_include_with_a_new_axis_value_appends(self): + result = build_matrix([{'animal': 'cat'}], [{'include': {'animal': 'parrot', 'sound': 'squawk'}}]) + self.assertEqual(result, [{'animal': 'cat'}, {'animal': 'parrot', 'sound': 'squawk'}]) + + def test_inputs_are_not_mutated(self): + entries = [{'animal': 'cat'}] + axes = {'shape': ['circle']} + build_matrix(entries, [{'extend': {'legs': 4}}]) + build_matrix(axes, [{'extend': {'legs': 4}}]) + self.assertEqual(entries, [{'animal': 'cat'}]) + self.assertEqual(axes, {'shape': ['circle']}) + + +class ErrorTest(unittest.TestCase): + def test_matrix_must_be_map_or_list(self): + for bad in [None, 'circle', 3, True]: + with self.subTest(bad=repr(bad)): + with self.assertRaisesRegex(ValueError, "^'matrix' must be a map of axis names to value lists or a list of entries$"): + build_matrix(bad, []) + + def test_entry_list_items_must_be_objects(self): + with self.assertRaisesRegex(ValueError, '^base matrix entry #1 must be an object$'): + build_matrix([{'animal': 'cat'}, 'dog'], []) + + def test_rules_must_be_a_list(self): + with self.assertRaisesRegex(ValueError, "^'rules' must be a list$"): + build_matrix({}, {'exclude': {'shape': 'circle'}}) + + def test_rule_must_be_an_object(self): + with self.assertRaisesRegex(ValueError, '^rule #0 is not an object$'): + build_matrix({}, ['exclude']) + + def test_rule_needs_exactly_one_kind(self): + with self.assertRaisesRegex(ValueError, r"^rule #0 must have exactly one of 'include', 'extend', 'exclude' \(found: none\)$"): + build_matrix({}, [{'if': True}]) + with self.assertRaisesRegex(ValueError, r"\(found: include, exclude\)$"): + build_matrix({}, [{'include': {'shape': 'circle'}, 'exclude': {'shape': 'circle'}}]) + + def test_skipped_rule_is_not_validated(self): + self.assertEqual(build_matrix({'shape': ['circle']}, [{'if': False}]), [{'shape': 'circle'}]) + + def test_body_must_be_object_or_list(self): + with self.assertRaisesRegex(ValueError, "^rule #1 'extend' must be an object or a list of objects$"): + build_matrix({}, [{'exclude': {}}, {'extend': 'sides'}]) + + def test_list_body_items_must_be_objects(self): + with self.assertRaisesRegex(ValueError, "^rule #0 'exclude' entry #1 must be an object$"): + build_matrix({}, [{'exclude': [{'shape': 'circle'}, ['shape', 'square']]}]) + + +class ScriptTest(unittest.TestCase): + """matrix_builder.py as a command: base matrix JSON from '-' (stdin) or a + file, rules JSON in --rules, result appended to GITHUB_OUTPUT.""" + + def run_script(self, matrix_json, rules_json=None, matrix_file=None): + with tempfile.TemporaryDirectory() as tmp: + output_file = Path(tmp) / 'github_output' + output_file.touch() + if matrix_file is None: + matrix_arg, stdin = '-', matrix_json + else: + matrix_arg, stdin = str(Path(tmp) / matrix_file), None + Path(matrix_arg).write_text(matrix_json) + command = [sys.executable, str(ACTION_DIR / 'matrix_builder.py')] + if rules_json is not None: + command.append(f'--rules={rules_json}') + command.append(matrix_arg) + proc = subprocess.run( + command, + input=stdin, + capture_output=True, + text=True, + env={**os.environ, 'GITHUB_OUTPUT': str(output_file)}, + ) + outputs = read_outputs(output_file) + return proc, outputs + + def test_matrix_from_stdin(self): + proc, outputs = self.run_script('{"shape": ["circle", "square"]}', '[{"exclude": {"shape": "square"}}]') + self.assertEqual(proc.returncode, 0, proc.stdout) + self.assertEqual(outputs, {'matrix': '[{"shape":"circle"}]'}) + + def test_matrix_from_file(self): + proc, outputs = self.run_script( + '[{"animal": "cat"}, {"animal": "dog"}]', + '[{"extend": {"animal": "dog", "trained": true}}]', + matrix_file='zoo.json', + ) + self.assertEqual(proc.returncode, 0, proc.stdout) + self.assertEqual(outputs, {'matrix': '[{"animal":"cat"},{"animal":"dog","trained":true}]'}) + + def test_null_matrix_and_rules_default_to_empty(self): + proc, outputs = self.run_script('null', 'null') + self.assertEqual(proc.returncode, 0, proc.stdout) + self.assertEqual(outputs, {'matrix': '[]'}) + + def test_output_is_compact_json_and_log_is_grouped(self): + proc, outputs = self.run_script('{"shape": ["circle", "square"], "color": ["red"]}', '[]') + self.assertEqual(outputs['matrix'], '[{"shape":"circle","color":"red"},{"shape":"square","color":"red"}]') + lines = proc.stdout.splitlines() + self.assertEqual(lines[0], '::group::matrix-builder: 2 combination(s)') + self.assertEqual(lines[-1], '::endgroup::') + self.assertEqual(json.loads('\n'.join(lines[1:-1])), json.loads(outputs['matrix'])) + + def test_engine_error_is_annotated_and_writes_no_output(self): + proc, outputs = self.run_script('{"shape": ["circle"]}', '[{"include": {"shape": "circle"}, "exclude": {"shape": "circle"}}]') + self.assertEqual(proc.returncode, 1) + self.assertIn("::error::rule #0 must have exactly one of 'include', 'extend', 'exclude' (found: include, exclude)", proc.stdout) + self.assertEqual(outputs, {}) + + def test_rules_argument_is_required(self): + proc, outputs = self.run_script('{}') + self.assertEqual(proc.returncode, 2) + self.assertIn('--rules', proc.stderr) + self.assertEqual(outputs, {}) + + +class ActionStepTest(unittest.TestCase): + """The composite step's `run:` body, executed as the runner does + (`bash -eo pipefail`) with the inputs in the variables action.yml maps + them to, from a temporary directory standing in for the workspace.""" + + @classmethod + def setUpClass(cls): + body = subprocess.run( + ['yq', '.runs.steps[0].run', str(ACTION_DIR / 'action.yml')], + capture_output=True, text=True, check=True, + ).stdout + cls.step = body.replace('${{ github.action_path }}', str(ACTION_DIR)) + + def run_step(self, matrix='', matrix_file='', rules='[]', files=()): + with tempfile.TemporaryDirectory() as workspace: + for name, content in files: + (Path(workspace) / name).write_text(content) + output_file = Path(workspace) / 'github_output' + output_file.touch() + proc = subprocess.run( + ['bash', '-eo', 'pipefail', '-c', self.step], + capture_output=True, + text=True, + cwd=workspace, + env={**os.environ, 'MATRIX': matrix, 'MATRIX_FILE': matrix_file, 'RULES': rules, 'GITHUB_OUTPUT': str(output_file)}, + ) + outputs = read_outputs(output_file) + return proc, outputs + + def test_inline_yaml_inputs(self): + proc, outputs = self.run_step( + matrix='shape: [circle, square]\ncolor: [red, blue]\n', + rules='- extend:\n shape: circle\n sides: 0\n- exclude:\n shape: square\n color: blue\n', + ) + self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr) + self.assertEqual(json.loads(outputs['matrix']), [ + {'shape': 'circle', 'color': 'red', 'sides': 0}, + {'shape': 'circle', 'color': 'blue', 'sides': 0}, + {'shape': 'square', 'color': 'red'}, + ]) + + def test_matrix_file_is_resolved_against_the_workspace(self): + zoo = '- animal: cat\n sound: meow\n- animal: dog\n sound: woof\n' + proc, outputs = self.run_step(matrix_file='zoo.yml', files=[('zoo.yml', zoo)]) + self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr) + self.assertEqual(json.loads(outputs['matrix']), [ + {'animal': 'cat', 'sound': 'meow'}, + {'animal': 'dog', 'sound': 'woof'}, + ]) + + def test_matrix_and_matrix_file_are_mutually_exclusive(self): + proc, outputs = self.run_step(matrix='shape: [circle]\n', matrix_file='zoo.yml', files=[('zoo.yml', '[]\n')]) + self.assertEqual(proc.returncode, 1) + self.assertIn("::error::'matrix' and 'matrix-file' are mutually exclusive", proc.stdout) + self.assertEqual(outputs, {}) + + def test_empty_matrix_is_built_from_rules(self): + proc, outputs = self.run_step(rules='- include:\n shape: circle\n- include:\n shape: square\n') + self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr) + self.assertEqual(outputs, {'matrix': '[{"shape":"circle"},{"shape":"square"}]'}) + + def test_yaml_11_booleans_stay_strings(self): + proc, outputs = self.run_step(matrix='flag: [yes, no]\n', rules='- if: off\n exclude:\n flag: yes\n') + self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr) + self.assertEqual(outputs, {'matrix': '[{"flag":"yes"},{"flag":"no"}]'}) + + def test_expanded_expression_strings_guard_rules(self): + proc, outputs = self.run_step( + matrix='shape: [circle, square]\n', + rules='- if: true\n exclude:\n shape: square\n- if: "false"\n exclude:\n shape: circle\n', + ) + self.assertEqual(proc.returncode, 0, proc.stdout + proc.stderr) + self.assertEqual(outputs, {'matrix': '[{"shape":"circle"}]'}) + + def test_invalid_yaml_fails_the_step(self): + proc, outputs = self.run_step(matrix='shape: [circle]\n', rules='exclude: shape: circle\n') + self.assertNotEqual(proc.returncode, 0) + self.assertIn('mapping values are not allowed', proc.stderr) + self.assertEqual(outputs, {}) + + def test_missing_matrix_file_fails_the_step(self): + proc, outputs = self.run_step(matrix_file='missing.yml') + self.assertNotEqual(proc.returncode, 0) + self.assertIn('missing.yml', proc.stderr) + self.assertEqual(outputs, {}) + + +if __name__ == '__main__': + unittest.main()