From 079e0296150fd5442e6418afd4238478d8c0378c Mon Sep 17 00:00:00 2001 From: Emilien Escalle Date: Wed, 11 Nov 2026 15:45:58 +0100 Subject: [PATCH] refactor: run PHP version discovery on native Node.js --- .gitattributes | 1 + .github/codeql/config.yml | 3 + .github/dependabot.yml | 18 + .github/linters/.codespellrc | 2 + .github/linters/.jscpd.json | 1 + .github/renovate.json | 3 + .../__commit-action-distributions.yml | 22 + .../__rebuild-action-distributions.yml | 18 + .github/workflows/__shared-ci.yml | 20 +- .../__test-action-get-php-versions.yml | 11 +- .github/workflows/continuous-integration.md | 6 +- .github/workflows/continuous-integration.yml | 6 +- .gitignore | 2 + Makefile | 15 +- actions/get-php-versions/.dockerignore | 6 +- actions/get-php-versions/Dockerfile | 12 +- actions/get-php-versions/README.md | 15 +- actions/get-php-versions/action.yml | 43 +- actions/get-php-versions/composer.json | 26 - actions/get-php-versions/composer.lock | 1993 ----------------- actions/get-php-versions/dist/index.js | 3 + actions/get-php-versions/dist/licenses.txt | 134 ++ actions/get-php-versions/dist/package.json | 3 + actions/get-php-versions/package-lock.json | 92 + actions/get-php-versions/package.json | 26 + .../src/ComposerConstraints.json | 247 ++ actions/get-php-versions/src/PhpVersions.js | 112 + actions/get-php-versions/src/PhpVersions.php | 80 - .../get-php-versions/src/PhpVersions.test.js | 179 ++ .../get-php-versions/src/PhpVersionsTest.php | 123 - actions/get-php-versions/src/cli.php | 29 - actions/get-php-versions/src/index.js | 56 + actions/get-php-versions/src/index.test.js | 113 + biome.json | 6 +- docs/adr/0001-php-package-workflows.md | 18 + docs/development/README.md | 26 +- 36 files changed, 1143 insertions(+), 2327 deletions(-) create mode 100644 .gitattributes create mode 100644 .github/codeql/config.yml create mode 100644 .github/linters/.codespellrc create mode 100644 .github/workflows/__commit-action-distributions.yml create mode 100644 .github/workflows/__rebuild-action-distributions.yml delete mode 100644 actions/get-php-versions/composer.json delete mode 100644 actions/get-php-versions/composer.lock create mode 100644 actions/get-php-versions/dist/index.js create mode 100644 actions/get-php-versions/dist/licenses.txt create mode 100644 actions/get-php-versions/dist/package.json create mode 100644 actions/get-php-versions/package-lock.json create mode 100644 actions/get-php-versions/package.json create mode 100644 actions/get-php-versions/src/ComposerConstraints.json create mode 100644 actions/get-php-versions/src/PhpVersions.js delete mode 100644 actions/get-php-versions/src/PhpVersions.php create mode 100644 actions/get-php-versions/src/PhpVersions.test.js delete mode 100644 actions/get-php-versions/src/PhpVersionsTest.php delete mode 100644 actions/get-php-versions/src/cli.php create mode 100644 actions/get-php-versions/src/index.js create mode 100644 actions/get-php-versions/src/index.test.js diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8c44c2b --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +actions/**/dist/** linguist-generated=true -whitespace diff --git a/.github/codeql/config.yml b/.github/codeql/config.yml new file mode 100644 index 0000000..3190056 --- /dev/null +++ b/.github/codeql/config.yml @@ -0,0 +1,3 @@ +name: Maintained JavaScript sources +paths-ignore: + - actions/**/dist/** diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e7a6f34..a19abfd 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -56,6 +56,24 @@ updates: - "*" cooldown: default-days: 7 + - package-ecosystem: npm + commit-message: + prefix: build + include: scope + open-pull-requests-limit: 20 + versioning-strategy: increase + directories: + - /actions/**/* + schedule: + interval: weekly + day: friday + time: "04:00" + groups: + npm-dependencies: + patterns: + - "*" + cooldown: + default-days: 7 - package-ecosystem: devcontainers commit-message: prefix: build diff --git a/.github/linters/.codespellrc b/.github/linters/.codespellrc new file mode 100644 index 0000000..e28364c --- /dev/null +++ b/.github/linters/.codespellrc @@ -0,0 +1,2 @@ +[codespell] +skip = *actions/*/dist/* diff --git a/.github/linters/.jscpd.json b/.github/linters/.jscpd.json index ea510b7..bb84f64 100644 --- a/.github/linters/.jscpd.json +++ b/.github/linters/.jscpd.json @@ -2,6 +2,7 @@ "threshold": 5, "ignore": [ "**/vendor/**", + "actions/**/dist/**", "**/actions/**/README.md", "**/.github/workflows/*.md" ] diff --git a/.github/renovate.json b/.github/renovate.json index 0001638..df59a75 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -43,5 +43,8 @@ "datasourceTemplate": "github-releases", "depNameTemplate": "composer/composer" } + ], + "gitIgnoredAuthors": [ + "128996893+hoverkraft-bot[bot]@users.noreply.github.com" ] } diff --git a/.github/workflows/__commit-action-distributions.yml b/.github/workflows/__commit-action-distributions.yml new file mode 100644 index 0000000..cfca8fa --- /dev/null +++ b/.github/workflows/__commit-action-distributions.yml @@ -0,0 +1,22 @@ +name: Internal - Commit action distributions + +on: # zizmor: ignore[dangerous-triggers] Trusted writer validates origin, actor, PR head and paths; it never executes PR code. + workflow_run: + workflows: [Internal - Rebuild action distributions] + types: [completed] + +permissions: {} + +jobs: + distributions: + uses: hoverkraft-tech/ci-github-common/.github/workflows/action-distributions.yml@d07ee49b460ae2f3815804b5153fe918092aa321 # 4.2.0 + permissions: + actions: read + contents: read + pull-requests: read + with: + pull-request-authors: | + ["dependabot", "renovate", {"login":"hoverkraft-bot[bot]","id":128996893,"branch-prefix":"renovate/"}] + github-app-client-id: ${{ vars.CI_BOT_APP_CLIENT_ID }} + secrets: + github-app-key: ${{ secrets.CI_BOT_APP_PRIVATE_KEY }} diff --git a/.github/workflows/__rebuild-action-distributions.yml b/.github/workflows/__rebuild-action-distributions.yml new file mode 100644 index 0000000..0f0c4bc --- /dev/null +++ b/.github/workflows/__rebuild-action-distributions.yml @@ -0,0 +1,18 @@ +name: Internal - Rebuild action distributions + +on: + pull_request: + branches: [main] + +permissions: {} + +jobs: + distributions: + uses: hoverkraft-tech/ci-github-common/.github/workflows/action-distributions.yml@d07ee49b460ae2f3815804b5153fe918092aa321 # 4.2.0 + permissions: + actions: read + contents: read + pull-requests: read + with: + pull-request-authors: | + ["dependabot", "renovate", {"login":"hoverkraft-bot[bot]","id":128996893,"branch-prefix":"renovate/"}] diff --git a/.github/workflows/__shared-ci.yml b/.github/workflows/__shared-ci.yml index f9f9048..ea006d1 100644 --- a/.github/workflows/__shared-ci.yml +++ b/.github/workflows/__shared-ci.yml @@ -3,7 +3,8 @@ on: workflow_call: null permissions: {} jobs: - linter: + lint: + name: linter uses: hoverkraft-tech/ci-github-common/.github/workflows/linter.yml@d07ee49b460ae2f3815804b5153fe918092aa321 # 4.2.0 permissions: contents: read @@ -14,6 +15,7 @@ jobs: actions: read security-events: write with: + comment: false linter-env: |- VALIDATE_PHP_BUILTIN=false VALIDATE_PHP_PHPCS=false @@ -29,6 +31,9 @@ jobs: permissions: contents: read id-token: write + packages: read + pull-requests: write + security-events: write test-action-setup-php: uses: $/.github/workflows/__test-action-setup-php.yml permissions: @@ -76,3 +81,16 @@ jobs: uses: $/.github/workflows/__test-workflow-documentation.yml permissions: contents: read + test-bundled-actions: + uses: hoverkraft-tech/ci-github-common/.github/workflows/test-action-distributions.yml@d07ee49b460ae2f3815804b5153fe918092aa321 # 4.2.0 + permissions: + contents: read + reports: + needs: [lint, test-action-get-php-versions] + if: always() + uses: hoverkraft-tech/ci-github-common/.github/workflows/ci-reports.yml@d07ee49b460ae2f3815804b5153fe918092aa321 # 4.2.0 + permissions: + contents: read + pull-requests: write + with: + job-results: ${{ toJSON(needs) }} diff --git a/.github/workflows/__test-action-get-php-versions.yml b/.github/workflows/__test-action-get-php-versions.yml index fcc5217..23ee7f7 100644 --- a/.github/workflows/__test-action-get-php-versions.yml +++ b/.github/workflows/__test-action-get-php-versions.yml @@ -4,14 +4,19 @@ on: permissions: {} jobs: unit: - uses: $/.github/workflows/continuous-integration.yml + uses: hoverkraft-tech/ci-github-nodejs/.github/workflows/continuous-integration.yml@fbd3522b68c55a6314aadbededaa487825ba9b35 # 3.0.0 permissions: contents: read id-token: write + packages: read + pull-requests: write + security-events: write with: working-directory: actions/get-php-versions - lint: "false" - dependency-review: false + build: "" + lint: "" + code-ql: '{"languages":"typescript","config-file":".github/codeql/config.yml"}' + test: '{"comment":false,"report-group":"test-action-get-php-versions"}' integration: runs-on: ubuntu-latest permissions: diff --git a/.github/workflows/continuous-integration.md b/.github/workflows/continuous-integration.md index e4a19cc..f7c0dbe 100644 --- a/.github/workflows/continuous-integration.md +++ b/.github/workflows/continuous-integration.md @@ -34,14 +34,14 @@ they execute even when dependency installation scripts are disabled. An empty Use `runs-on` for a JSON array of Linux runner labels, for example `runs-on: '["self-hosted", "linux"]'`. Every job uses those labels. -Docker must be available for the PHP version discovery action. +PHP version discovery uses GitHub's native Node.js runtime with bundled dependencies. Set `checks: false` to skip lint, tests, dependency review and distribution checks. ### Runtime and dependencies With no `php-versions` input, CI reads `composer.json`'s `require.php` and -discovers released stable versions from PHP.net using Composer's constraint parser. -Discovery runs in its own container without changing the runner's PHP installation. +discovers released stable versions from PHP.net using Composer constraint semantics. +Discovery leaves the runner's PHP installation unchanged. It tests the newest compatible patch of every matching minor, including end-of-life versions still allowed by the project. Prereleases are excluded. Missing or invalid constraints and release-catalog failures stop discovery instead of choosing an arbitrary runtime. diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index ad310dd..e9bc0a0 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -19,14 +19,14 @@ # # Use `runs-on` for a JSON array of Linux runner labels, for example # `runs-on: '["self-hosted", "linux"]'`. Every job uses those labels. -# Docker must be available for the PHP version discovery action. +# PHP version discovery uses GitHub's native Node.js runtime with bundled dependencies. # Set `checks: false` to skip lint, tests, dependency review and distribution checks. # # ### Runtime and dependencies # # With no `php-versions` input, CI reads `composer.json`'s `require.php` and -# discovers released stable versions from PHP.net using Composer's constraint parser. -# Discovery runs in its own container without changing the runner's PHP installation. +# discovers released stable versions from PHP.net using Composer constraint semantics. +# Discovery leaves the runner's PHP installation unchanged. # It tests the newest compatible patch of every matching minor, including end-of-life # versions still allowed by the project. Prereleases are excluded. Missing or invalid # constraints and release-catalog failures stop discovery instead of choosing an arbitrary runtime. diff --git a/.gitignore b/.gitignore index b25e815..9b5731c 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,8 @@ cobertura.xml # Build artifacts dist/ +!actions/**/dist/ +node_modules/ build/ coverage/ diff --git a/Makefile b/Makefile index 233fab1..c0f8c21 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ -.PHONY: help setup deps-install deps-update deps-update-interactive deps-audit test ci lint lint-fix +.PHONY: help setup deps-install deps-update deps-update-interactive deps-audit build test ci lint lint-fix COMPOSER_DIRECTORIES := $(patsubst %/composer.json,%,$(shell git ls-files '**/composer.json')) +NPM_DIRECTORIES := $(patsubst %/package.json,%,$(shell git ls-files 'actions/**/package.json' ':!:actions/**/dist/**')) help: ## Display help @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' @@ -11,11 +12,13 @@ deps-install: ## Install action and fixture dependencies without hooks or plugin @set -e; for directory in $(COMPOSER_DIRECTORIES); do \ composer --working-dir="$$directory" --no-interaction --no-plugins install --no-scripts --prefer-dist; \ done + @set -e; for directory in $(NPM_DIRECTORIES); do npm --prefix="$$directory" ci --ignore-scripts; done deps-update: ## Update action and fixture dependencies and lockfiles @set -e; for directory in $(COMPOSER_DIRECTORIES); do \ composer --working-dir="$$directory" --no-interaction --no-plugins update --no-scripts --prefer-dist; \ done + @set -e; for directory in $(NPM_DIRECTORIES); do npm --prefix="$$directory" update --ignore-scripts; done deps-update-interactive: ## Interactively select fixture dependency updates @set -e; for directory in $(COMPOSER_DIRECTORIES); do \ @@ -26,19 +29,25 @@ deps-audit: ## Audit action and fixture dependencies @set -e; for directory in $(COMPOSER_DIRECTORIES); do \ composer --working-dir="$$directory" --no-interaction --no-plugins audit; \ done + @set -e; for directory in $(NPM_DIRECTORIES); do npm --prefix="$$directory" audit; done -test: ## Run fixture lint and Composer project tests +build: ## Rebuild standalone JavaScript action distributions + @set -e; for directory in $(NPM_DIRECTORIES); do npm --prefix="$$directory" run build; done + +test: ## Run fixture lint and standalone action tests composer --working-dir=tests/php-project lint:ci @set -e; for directory in $(COMPOSER_DIRECTORIES); do \ if php -r 'exit(isset(json_decode(file_get_contents($$argv[1]), true)["scripts"]["test"]) ? 0 : 1);' "$$directory/composer.json"; then \ composer --working-dir="$$directory" test; \ fi; \ done + @set -e; for directory in $(NPM_DIRECTORIES); do npm --prefix="$$directory" test; done ci: ## Install, audit, test and lint without rewriting source files $(MAKE) deps-install $(MAKE) deps-audit $(MAKE) test + @set -e; for directory in $(NPM_DIRECTORIES); do npm --prefix="$$directory" run check:dist; done $(MAKE) lint lint: ## Execute linting @@ -76,4 +85,4 @@ endef # Argument fix workaround ############################# %: - @: \ No newline at end of file + @: diff --git a/actions/get-php-versions/.dockerignore b/actions/get-php-versions/.dockerignore index 8c7e73e..9cf2864 100644 --- a/actions/get-php-versions/.dockerignore +++ b/actions/get-php-versions/.dockerignore @@ -1,5 +1,3 @@ * -!composer.json -!composer.lock -!src/PhpVersions.php -!src/cli.php +!dist/ +!dist/** diff --git a/actions/get-php-versions/Dockerfile b/actions/get-php-versions/Dockerfile index 56ad720..97ebcfb 100644 --- a/actions/get-php-versions/Dockerfile +++ b/actions/get-php-versions/Dockerfile @@ -1,12 +1,10 @@ -FROM composer:2.11.0@sha256:278dfc7bd35169965d03f87194816f43bf4e6b6ea61707c2114e52ad12fe24ce +FROM node:24-bookworm-slim@sha256:01d566e8d94d8c619591d78652babfccd3c6992a3dffa9ed5ab39e11cf6c70e9 -COPY composer.json composer.lock /opt/php-versions/ -RUN composer --working-dir=/opt/php-versions install --no-dev --no-interaction --no-plugins --no-scripts --prefer-dist --no-progress -COPY src/ /opt/php-versions/src/ +COPY dist/ /opt/php-versions/dist/ -USER 65534:65534 +USER 1000:1000 -HEALTHCHECK --interval=5m --timeout=10s --retries=3 CMD ["php", "--version"] +HEALTHCHECK --interval=5m --timeout=10s --retries=3 CMD ["node", "--version"] -ENTRYPOINT ["php", "/opt/php-versions/src/cli.php"] +ENTRYPOINT ["node", "/opt/php-versions/dist/index.js"] CMD ["/project", "--latest"] diff --git a/actions/get-php-versions/README.md b/actions/get-php-versions/README.md index a6e9d8a..3fc7393 100644 --- a/actions/get-php-versions/README.md +++ b/actions/get-php-versions/README.md @@ -13,7 +13,7 @@ ## Overview -Discover stable PHP releases matching composer.json require.php using Composer constraints. Runs in Docker on Linux without changing the runner's PHP installation. +Discover stable PHP releases matching composer.json require.php using Composer constraints. Runs on the native Node.js runtime without installing PHP or project dependencies. ### PHP version selection @@ -33,17 +33,16 @@ checks and publishes coverage. A new stable minor is included when the constrain already allows it. Explicitly restricted ranges require a deliberate Composer change before CI adds another minor. End-of-life versions remain tested when still allowed. -Discovery uses PHP.net release metadata and Composer's constraint parser. It handles +Discovery uses PHP.net release metadata and composer-semver's Composer constraint parser. It handles patch bounds and disjoint ranges without approximating them as npm SemVer. Prereleases are excluded. A missing or invalid `require.php`, an unavailable release catalog, or a constraint with no matching stable release causes an error. Dependency installation still validates the project and tooling against the selected runtime. -The discovery action builds and runs its Docker image on Linux runners with Docker, -using the runner's UID/GID and a read-only checkout mount. -CI and local builds use the same container runtime and locked dependencies. Discovery -does not change PHP on the runner. The setup action then installs the selected PHP -version when the job needs it. +The discovery action uses GitHub's native Node.js runtime with bundled dependencies. +It needs no PHP, Composer, Docker or dependency installation on the runner. Discovery +leaves the runner's PHP installation unchanged. Local Docker builds use the same +bundled resolver. The setup action installs the selected PHP version when needed. ### Overrides @@ -87,7 +86,7 @@ Automatic selection requires workflow files with one consistent commit pin for `ci-github-php`. Missing or conflicting pins stop the build before fetching the resolver. Explicit `PHP_VERSION` overrides in the consumer Makefiles skip discovery. -Docker caches the resolver image's dependencies. Each invocation consults the release +Docker caches the resolver image and its bundled dependencies. Each invocation consults the release catalog, so newly available compatible releases need no Makefile version edit. The resolver prints the highest matching patch by default. Pass `/project` as its only argument to print the complete JSON result instead. diff --git a/actions/get-php-versions/action.yml b/actions/get-php-versions/action.yml index 3c07444..d39373e 100644 --- a/actions/get-php-versions/action.yml +++ b/actions/get-php-versions/action.yml @@ -16,17 +16,16 @@ # already allows it. Explicitly restricted ranges require a deliberate Composer change # before CI adds another minor. End-of-life versions remain tested when still allowed. # -# Discovery uses PHP.net release metadata and Composer's constraint parser. It handles +# Discovery uses PHP.net release metadata and composer-semver's Composer constraint parser. It handles # patch bounds and disjoint ranges without approximating them as npm SemVer. # Prereleases are excluded. A missing or invalid `require.php`, an unavailable release # catalog, or a constraint with no matching stable release causes an error. Dependency # installation still validates the project and tooling against the selected runtime. # -# The discovery action builds and runs its Docker image on Linux runners with Docker, -# using the runner's UID/GID and a read-only checkout mount. -# CI and local builds use the same container runtime and locked dependencies. Discovery -# does not change PHP on the runner. The setup action then installs the selected PHP -# version when the job needs it. +# The discovery action uses GitHub's native Node.js runtime with bundled dependencies. +# It needs no PHP, Composer, Docker or dependency installation on the runner. Discovery +# leaves the runner's PHP installation unchanged. Local Docker builds use the same +# bundled resolver. The setup action installs the selected PHP version when needed. # # ### Overrides # @@ -70,7 +69,7 @@ # `ci-github-php`. Missing or conflicting pins stop the build before fetching the # resolver. Explicit `PHP_VERSION` overrides in the consumer Makefiles skip discovery. # -# Docker caches the resolver image's dependencies. Each invocation consults the release +# Docker caches the resolver image and its bundled dependencies. Each invocation consults the release # catalog, so newly available compatible releases need no Makefile version edit. The # resolver prints the highest matching patch by default. Pass `/project` as its only # argument to print the complete JSON result instead. @@ -79,7 +78,7 @@ # When no override is supplied, use the resolver for the build and a stable local # development image name for subsequent commands. name: Get PHP versions -description: Discover stable PHP releases matching composer.json require.php using Composer constraints. Runs in Docker on Linux without changing the runner's PHP installation. +description: Discover stable PHP releases matching composer.json require.php using Composer constraints. Runs on the native Node.js runtime without installing PHP or project dependencies. author: hoverkraft branding: icon: list @@ -91,32 +90,8 @@ inputs: outputs: php-versions: description: JSON array of matching releases, with the newest compatible patch per minor, sorted ascending. Includes end-of-life versions allowed by require.php; excludes prereleases. - value: ${{ steps.versions.outputs.php-versions }} php-version: description: Highest stable PHP release matching require.php. - value: ${{ steps.versions.outputs.php-version }} -# FIXME: Replace this PHP bridge with the native Node.js action once a stable -# composer-semver release includes https://github.com/shyim/composer-semver-ts/pull/1 -# and passes the Composer constraint compatibility tests in the migration PR. runs: - using: composite - steps: - - id: versions - uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 - env: - ACTION_PATH: ${{ github.action_path }} - WORKING_DIRECTORY: ${{ inputs.working-directory }} - with: - script: | - const image = await exec.getExecOutput('docker', ['build', '--quiet', process.env.ACTION_PATH]); - const {stdout} = await exec.getExecOutput('docker', [ - 'run', '--rm', - '--user', `${process.getuid()}:${process.getgid()}`, - '--volume', `${process.env.GITHUB_WORKSPACE}:/project:ro`, - '--workdir', '/project', - '--env', 'GITHUB_WORKSPACE=/project', - image.stdout.trim(), process.env.WORKING_DIRECTORY, - ]); - const versions = JSON.parse(stdout); - core.setOutput('php-versions', versions['php-versions']); - core.setOutput('php-version', versions['php-version']); + using: node24 + main: dist/index.js diff --git a/actions/get-php-versions/composer.json b/actions/get-php-versions/composer.json deleted file mode 100644 index 57962d1..0000000 --- a/actions/get-php-versions/composer.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "hoverkraft/get-php-versions", - "description": "Resolve released PHP versions using Composer project constraints", - "type": "project", - "license": "MIT", - "require": { - "php": "^8.4.1", - "composer/semver": "^3.6" - }, - "require-dev": { - "phpunit/phpunit": "^13.4" - }, - "autoload": { - "psr-4": { - "Hoverkraft\\PhpVersions\\": "src/" - } - }, - "scripts": { - "test": "phpunit --bootstrap vendor/autoload.php src/PhpVersionsTest.php", - "test:ci": "@test --log-junit=junit.xml --coverage-cobertura=cobertura.xml --coverage-filter=src" - }, - "config": { - "sort-packages": true, - "allow-plugins": false - } -} diff --git a/actions/get-php-versions/composer.lock b/actions/get-php-versions/composer.lock deleted file mode 100644 index a218eee..0000000 --- a/actions/get-php-versions/composer.lock +++ /dev/null @@ -1,1993 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "ef0845c23dddebb720768971efdb2f7b", - "packages": [ - { - "name": "composer/semver", - "version": "3.6.0", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "d92543b7ede9c4ec6b59853cefb061e39866d2cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/d92543b7ede9c4ec6b59853cefb061e39866d2cf", - "reference": "d92543b7ede9c4ec6b59853cefb061e39866d2cf", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.11", - "symfony/phpunit-bridge": "^3 || ^7" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Version comparison library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.6.0" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - } - ], - "time": "2026-10-29T09:13:34+00:00", - "published-time": "2026-10-29T09:14:11+00:00" - } - ], - "packages-dev": [ - { - "name": "myclabs/deep-copy", - "version": "1.14.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae", - "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3 <3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpspec/prophecy": "^1.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.14.0" - }, - "funding": [ - { - "url": "https://github.com/mnapoli", - "type": "github" - } - ], - "time": "2026-08-11T10:17:44+00:00", - "published-time": "2026-08-11T10:29:20+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v5.9.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9e33da9553fe7786f0962b35f4e4ecf01be89def", - "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.9.0" - }, - "time": "2026-09-13T18:51:52+00:00", - "published-time": "2026-09-13T18:53:16+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:33:53+00:00", - "published-time": "2024-03-03T12:39:44+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00", - "published-time": "2022-02-21T01:04:30+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "14.5.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2f122b9b48af71ad9b4448368febc26af86534c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2f122b9b48af71ad9b4448368febc26af86534c9", - "reference": "2f122b9b48af71ad9b4448368febc26af86534c9", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^5.9.0", - "php": ">=8.4", - "phpunit/php-text-template": "^6.0.1", - "sebastian/complexity": "^6.0", - "sebastian/environment": "^9.3.3", - "sebastian/git-state": "^1.1.0", - "sebastian/lines-of-code": "^5.0.2", - "sebastian/version": "^7.0.1" - }, - "require-dev": { - "phpunit/phpunit": "^13.4.6" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "14.5.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/14.5.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", - "type": "tidelift" - } - ], - "time": "2026-11-09T05:24:08+00:00", - "published-time": "2026-11-09T05:25:09+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "7.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "9bb4e6c58b62c1e043be995c66abec7c97307aae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/9bb4e6c58b62c1e043be995c66abec7c97307aae", - "reference": "9bb4e6c58b62c1e043be995c66abec7c97307aae", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.3.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/7.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", - "type": "tidelift" - } - ], - "time": "2026-08-25T14:47:43+00:00", - "published-time": "2026-08-25T14:48:49+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "7.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "42e5c5cae0c65df12d1b1a3ab52bf3f50f244d88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/42e5c5cae0c65df12d1b1a3ab52bf3f50f244d88", - "reference": "42e5c5cae0c65df12d1b1a3ab52bf3f50f244d88", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^13.0" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/7.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/php-invoker", - "type": "tidelift" - } - ], - "time": "2026-02-06T04:34:47+00:00", - "published-time": "2026-02-06T04:35:29+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "6.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "97107691cb2b6c743b5e0c44be19e983cb337a02" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/97107691cb2b6c743b5e0c44be19e983cb337a02", - "reference": "97107691cb2b6c743b5e0c44be19e983cb337a02", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.3.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/6.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/php-text-template", - "type": "tidelift" - } - ], - "time": "2026-10-03T04:54:24+00:00", - "published-time": "2026-10-03T04:54:39+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "9.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "a0e12065831f6ab0d83120dc61513eb8d9a966f6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/a0e12065831f6ab0d83120dc61513eb8d9a966f6", - "reference": "a0e12065831f6ab0d83120dc61513eb8d9a966f6", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "9.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "security": "https://github.com/sebastianbergmann/php-timer/security/policy", - "source": "https://github.com/sebastianbergmann/php-timer/tree/9.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/php-timer", - "type": "tidelift" - } - ], - "time": "2026-02-06T04:37:53+00:00", - "published-time": "2026-02-06T04:38:39+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "13.4.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "4821376960d0e1e5a7b7b700955ebcab33ecd71b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4821376960d0e1e5a7b7b700955ebcab33ecd71b", - "reference": "4821376960d0e1e5a7b7b700955ebcab33ecd71b", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-filter": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.14.0", - "phar-io/manifest": "^2.0.4", - "phar-io/version": "^3.2.1", - "php": ">=8.4.1", - "phpunit/php-code-coverage": "^14.5.0", - "phpunit/php-file-iterator": "^7.0.2", - "phpunit/php-invoker": "^7.0.0", - "phpunit/php-text-template": "^6.0.1", - "phpunit/php-timer": "^9.0.0", - "sebastian/cli-parser": "^5.0.1", - "sebastian/comparator": "^8.4", - "sebastian/diff": "^9.0.1", - "sebastian/environment": "^9.3.3", - "sebastian/exporter": "^8.2.1", - "sebastian/file-filter": "^1.0", - "sebastian/git-state": "^1.1", - "sebastian/global-state": "^9.0.1", - "sebastian/object-enumerator": "^8.1.0", - "sebastian/recursion-context": "^8.0.1", - "sebastian/type": "^7.0.2", - "sebastian/version": "^7.0.1", - "staabm/side-effects-detector": "^1.0.5" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "13.4-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/13.4.6" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsoring.html", - "type": "other" - } - ], - "time": "2026-11-02T07:12:28+00:00", - "published-time": "2026-11-02T07:13:08+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "5.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "eeb759ad3146b7096fb59c3195d39e071cd409e3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/eeb759ad3146b7096fb59c3195d39e071cd409e3", - "reference": "eeb759ad3146b7096fb59c3195d39e071cd409e3", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.2.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/5.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser", - "type": "tidelift" - } - ], - "time": "2026-08-01T04:27:14+00:00", - "published-time": "2026-08-01T04:29:01+00:00" - }, - { - "name": "sebastian/comparator", - "version": "8.4.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "3b070e608146cba00fd6fd1f0ffba89e5a8897fb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/3b070e608146cba00fd6fd1f0ffba89e5a8897fb", - "reference": "3b070e608146cba00fd6fd1f0ffba89e5a8897fb", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "php": ">=8.4", - "sebastian/diff": "^9.0", - "sebastian/exporter": "^8.2" - }, - "require-dev": { - "phpunit/phpunit": "^13.3" - }, - "suggest": { - "ext-bcmath": "For comparing BcMath\\Number objects" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "8.4-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/8.4.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", - "type": "tidelift" - } - ], - "time": "2026-08-07T07:23:13+00:00", - "published-time": "2026-08-07T07:23:29+00:00" - }, - { - "name": "sebastian/complexity", - "version": "6.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "c5651c795c98093480df79350cb050813fc7a2f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/c5651c795c98093480df79350cb050813fc7a2f3", - "reference": "c5651c795c98093480df79350cb050813fc7a2f3", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^5.0", - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/6.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/complexity", - "type": "tidelift" - } - ], - "time": "2026-02-06T04:41:32+00:00", - "published-time": "2026-02-06T04:41:49+00:00" - }, - { - "name": "sebastian/diff", - "version": "9.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "a2df6626c1baf31d5a88674882a3072f151b5a26" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/a2df6626c1baf31d5a88674882a3072f151b5a26", - "reference": "a2df6626c1baf31d5a88674882a3072f151b5a26", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.3.1", - "symfony/process": "^7.4.17" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "9.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/9.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/diff", - "type": "tidelift" - } - ], - "time": "2026-08-25T15:38:55+00:00", - "published-time": "2026-08-25T15:39:44+00:00" - }, - { - "name": "sebastian/environment", - "version": "9.3.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "d4dd10267a11055066a2a78ae04583d8ddd4f595" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/d4dd10267a11055066a2a78ae04583d8ddd4f595", - "reference": "d4dd10267a11055066a2a78ae04583d8ddd4f595", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.3.6" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "9.3-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/9.3.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", - "type": "tidelift" - } - ], - "time": "2026-10-01T12:37:56+00:00", - "published-time": "2026-10-01T12:38:48+00:00" - }, - { - "name": "sebastian/exporter", - "version": "8.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "24a3b69bba4a12ab615fca9d34680c5598d9ab7a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/24a3b69bba4a12ab615fca9d34680c5598d9ab7a", - "reference": "24a3b69bba4a12ab615fca9d34680c5598d9ab7a", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=8.4", - "sebastian/recursion-context": "^8.0.1" - }, - "require-dev": { - "phpunit/phpunit": "^13.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "8.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/8.2.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", - "type": "tidelift" - } - ], - "time": "2026-08-07T07:22:06+00:00", - "published-time": "2026-08-07T07:23:47+00:00" - }, - { - "name": "sebastian/file-filter", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/file-filter.git", - "reference": "33a26f394330f6faa7684bb9cc73afb7727aae93" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/file-filter/zipball/33a26f394330f6faa7684bb9cc73afb7727aae93", - "reference": "33a26f394330f6faa7684bb9cc73afb7727aae93", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for filtering files", - "homepage": "https://github.com/sebastianbergmann/file-filter", - "support": { - "issues": "https://github.com/sebastianbergmann/file-filter/issues", - "security": "https://github.com/sebastianbergmann/file-filter/security/policy", - "source": "https://github.com/sebastianbergmann/file-filter/tree/1.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/file-filter", - "type": "tidelift" - } - ], - "time": "2026-04-22T07:20:04+00:00", - "published-time": "2026-04-22T07:20:25+00:00" - }, - { - "name": "sebastian/git-state", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/git-state.git", - "reference": "31a565f463686f0eefa85f899549256bf5805985" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/git-state/zipball/31a565f463686f0eefa85f899549256bf5805985", - "reference": "31a565f463686f0eefa85f899549256bf5805985", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.4.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for describing the state of a Git checkout", - "homepage": "https://github.com/sebastianbergmann/git-state", - "support": { - "issues": "https://github.com/sebastianbergmann/git-state/issues", - "security": "https://github.com/sebastianbergmann/git-state/security/policy", - "source": "https://github.com/sebastianbergmann/git-state/tree/1.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/git-state", - "type": "tidelift" - } - ], - "time": "2026-10-21T05:59:52+00:00", - "published-time": "2026-10-21T06:01:28+00:00" - }, - { - "name": "sebastian/global-state", - "version": "9.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "ba68ba79da690cf7eddefd3ce5b78b20b9ba9945" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ba68ba79da690cf7eddefd3ce5b78b20b9ba9945", - "reference": "ba68ba79da690cf7eddefd3ce5b78b20b9ba9945", - "shasum": "" - }, - "require": { - "php": ">=8.4", - "sebastian/object-reflector": "^6.0", - "sebastian/recursion-context": "^8.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^13.1.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "9.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "https://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/9.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", - "type": "tidelift" - } - ], - "time": "2026-06-01T15:11:33+00:00", - "published-time": "2026-06-01T15:20:45+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "5.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "d1b6f8fce682505dbd048977f1abedf1b8ad3ff8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d1b6f8fce682505dbd048977f1abedf1b8ad3ff8", - "reference": "d1b6f8fce682505dbd048977f1abedf1b8ad3ff8", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^5.8.0", - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/5.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/lines-of-code", - "type": "tidelift" - } - ], - "time": "2026-07-09T08:42:34+00:00", - "published-time": "2026-07-09T08:44:06+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "8.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "511064ecde82bd747e2ba2fab3dda8d977b59576" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/511064ecde82bd747e2ba2fab3dda8d977b59576", - "reference": "511064ecde82bd747e2ba2fab3dda8d977b59576", - "shasum": "" - }, - "require": { - "php": ">=8.4", - "sebastian/recursion-context": "^8.0.1" - }, - "require-dev": { - "phpunit/phpunit": "^13.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "8.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/8.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/object-enumerator", - "type": "tidelift" - } - ], - "time": "2026-08-13T07:05:05+00:00", - "published-time": "2026-08-13T07:07:58+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "6.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "f71bbcdc4f95456b4622810bec64eb06372e25b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/f71bbcdc4f95456b4622810bec64eb06372e25b2", - "reference": "f71bbcdc4f95456b4622810bec64eb06372e25b2", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/6.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/object-reflector", - "type": "tidelift" - } - ], - "time": "2026-08-13T06:34:36+00:00", - "published-time": "2026-08-13T06:39:22+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "8.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "32dba72f2b4642d6a93db22d6c0a9280ff2e3ca0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/32dba72f2b4642d6a93db22d6c0a9280ff2e3ca0", - "reference": "32dba72f2b4642d6a93db22d6c0a9280ff2e3ca0", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.2.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "8.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/8.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", - "type": "tidelift" - } - ], - "time": "2026-08-03T05:58:12+00:00", - "published-time": "2026-08-03T05:59:59+00:00" - }, - { - "name": "sebastian/type", - "version": "7.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "bd1df467864cb95140414059a535b2d906173fcf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/bd1df467864cb95140414059a535b2d906173fcf", - "reference": "bd1df467864cb95140414059a535b2d906173fcf", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "require-dev": { - "phpunit/phpunit": "^13.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/7.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/type", - "type": "tidelift" - } - ], - "time": "2026-08-10T08:00:57+00:00", - "published-time": "2026-08-10T08:01:43+00:00" - }, - { - "name": "sebastian/version", - "version": "7.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "08e41d0c7e146bfc8cef7e63989b1294453a6d6a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/08e41d0c7e146bfc8cef7e63989b1294453a6d6a", - "reference": "08e41d0c7e146bfc8cef7e63989b1294453a6d6a", - "shasum": "" - }, - "require": { - "php": ">=8.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "security": "https://github.com/sebastianbergmann/version/security/policy", - "source": "https://github.com/sebastianbergmann/version/tree/7.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/sebastian/version", - "type": "tidelift" - } - ], - "time": "2026-11-09T06:31:27+00:00", - "published-time": "2026-11-09T06:31:50+00:00" - }, - { - "name": "staabm/side-effects-detector", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/staabm/side-effects-detector.git", - "reference": "d8334211a140ce329c13726d4a715adbddd0a163" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", - "reference": "d8334211a140ce329c13726d4a715adbddd0a163", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^1.12.6", - "phpunit/phpunit": "^9.6.21", - "symfony/var-dumper": "^5.4.43", - "tomasvotruba/type-coverage": "1.0.0", - "tomasvotruba/unused-public": "1.0.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "lib/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A static analysis tool to detect side effects in PHP code", - "keywords": [ - "static analysis" - ], - "support": { - "issues": "https://github.com/staabm/side-effects-detector/issues", - "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" - }, - "funding": [ - { - "url": "https://github.com/staabm", - "type": "github" - } - ], - "time": "2024-10-20T05:08:20+00:00", - "published-time": "2024-10-20T05:09:39+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": {}, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^8.4.1" - }, - "platform-dev": {}, - "plugin-api-version": "2.11.0" -} diff --git a/actions/get-php-versions/dist/index.js b/actions/get-php-versions/dist/index.js new file mode 100644 index 0000000..3fe1a0c --- /dev/null +++ b/actions/get-php-versions/dist/index.js @@ -0,0 +1,3 @@ +import{createRequire as e}from"module";var A={770:(e,A,t)=>{e.exports=t(218)},218:(e,A,t)=>{var r;var s=t(9278);var n=t(4756);var o=t(8611);var i=t(5692);var a=t(4434);var c=t(2613);var l=t(9023);A.httpOverHttp=httpOverHttp;A.httpsOverHttp=httpsOverHttp;A.httpOverHttps=httpOverHttps;A.httpsOverHttps=httpsOverHttps;function httpOverHttp(e){var A=new TunnelingAgent(e);A.request=o.request;return A}function httpsOverHttp(e){var A=new TunnelingAgent(e);A.request=o.request;A.createSocket=createSecureSocket;A.defaultPort=443;return A}function httpOverHttps(e){var A=new TunnelingAgent(e);A.request=i.request;return A}function httpsOverHttps(e){var A=new TunnelingAgent(e);A.request=i.request;A.createSocket=createSecureSocket;A.defaultPort=443;return A}function TunnelingAgent(e){var A=this;A.options=e||{};A.proxyOptions=A.options.proxy||{};A.maxSockets=A.options.maxSockets||o.Agent.defaultMaxSockets;A.requests=[];A.sockets=[];A.on("free",function onFree(e,t,r,s){var n=toOptions(t,r,s);for(var o=0,i=A.requests.length;o=this.maxSockets){s.requests.push(n);return}s.createSocket(n,function(A){A.on("free",onFree);A.on("close",onCloseOrRemove);A.on("agentRemove",onCloseOrRemove);e.onSocket(A);function onFree(){s.emit("free",A,n)}function onCloseOrRemove(e){s.removeSocket(A);A.removeListener("free",onFree);A.removeListener("close",onCloseOrRemove);A.removeListener("agentRemove",onCloseOrRemove)}})};TunnelingAgent.prototype.createSocket=function createSocket(e,A){var t=this;var r={};t.sockets.push(r);var s=mergeOptions({},t.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:false,headers:{host:e.host+":"+e.port}});if(e.localAddress){s.localAddress=e.localAddress}if(s.proxyAuth){s.headers=s.headers||{};s.headers["Proxy-Authorization"]="Basic "+new Buffer(s.proxyAuth).toString("base64")}g("making CONNECT request");var n=t.request(s);n.useChunkedEncodingByDefault=false;n.once("response",onResponse);n.once("upgrade",onUpgrade);n.once("connect",onConnect);n.once("error",onError);n.end();function onResponse(e){e.upgrade=true}function onUpgrade(e,A,t){process.nextTick(function(){onConnect(e,A,t)})}function onConnect(s,o,i){n.removeAllListeners();o.removeAllListeners();if(s.statusCode!==200){g("tunneling socket could not be established, statusCode=%d",s.statusCode);o.destroy();var a=new Error("tunneling socket could not be established, "+"statusCode="+s.statusCode);a.code="ECONNRESET";e.request.emit("error",a);t.removeSocket(r);return}if(i.length>0){g("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);t.removeSocket(r);return}g("tunneling connection has established");t.sockets[t.sockets.indexOf(r)]=o;return A(o)}function onError(A){n.removeAllListeners();g("tunneling socket could not be established, cause=%s\n",A.message,A.stack);var s=new Error("tunneling socket could not be established, "+"cause="+A.message);s.code="ECONNRESET";e.request.emit("error",s);t.removeSocket(r)}};TunnelingAgent.prototype.removeSocket=function removeSocket(e){var A=this.sockets.indexOf(e);if(A===-1){return}this.sockets.splice(A,1);var t=this.requests.shift();if(t){this.createSocket(t,function(e){t.request.onSocket(e)})}};function createSecureSocket(e,A){var t=this;TunnelingAgent.prototype.createSocket.call(t,e,function(r){var s=e.request.getHeader("host");var o=mergeOptions({},t.options,{socket:r,servername:s?s.replace(/:.*$/,""):e.host});var i=n.connect(0,o);t.sockets[t.sockets.indexOf(r)]=i;A(i)})}function toOptions(e,A,t){if(typeof e==="string"){return{host:e,port:A,localAddress:t}}return e}function mergeOptions(e){for(var A=1,t=arguments.length;A{var r;const s=t(3701);const n=t(883);const o=t(628);const i=t(837);const a=t(7405);const c=t(6672);const l=t(3137);const g=t(50);const Q=t(8707);const E=t(3440);const{InvalidArgumentError:h}=Q;const B=t(6615);const C=t(9136);const u=t(7365);const I=t(7501);const d=t(4004);const f=t(2429);const p=t(7816);const{getGlobalDispatcher:w,setGlobalDispatcher:y}=t(2581);const m=t(8155);const D=t(8754);const k=t(5092);Object.assign(n.prototype,B);r=n;r=s;r=o;r=i;r=a;e.exports.kT=c;r=l;r=g;r=p;r=m;r=D;r=k;r={redirect:t(1514),retry:t(2026),dump:t(8060),dns:t(379)};r=C;r=Q;r={parseHeaders:E.parseHeaders,headerNameToString:E.headerNameToString};function makeDispatcher(e){return(A,t,r)=>{if(typeof t==="function"){r=t;t=null}if(!A||typeof A!=="string"&&typeof A!=="object"&&!(A instanceof URL)){throw new h("invalid url")}if(t!=null&&typeof t!=="object"){throw new h("invalid opts")}if(t&&t.path!=null){if(typeof t.path!=="string"){throw new h("invalid opts.path")}let e=t.path;if(!t.path.startsWith("/")){e=`/${e}`}A=new URL(E.parseOrigin(A).origin+e)}else{if(!t){t=typeof A==="object"?A:{}}A=E.parseURL(A)}const{agent:s,dispatcher:n=w()}=t;if(s){throw new h("unsupported opts.agent. Did you mean opts.client?")}return e.call(n,{...t,origin:A.origin,path:A.search?`${A.pathname}${A.search}`:A.pathname,method:t.method||(t.body?"PUT":"GET")},r)}}r=y;r=w;const R=t(4398).fetch;r=async function fetch(e,A=undefined){try{return await R(e,A)}catch(e){if(e&&typeof e==="object"){Error.captureStackTrace(e)}throw e}};t(660).Headers;t(9051).Response;t(9967).Request;t(5910).FormData;r=globalThis.File??t(4573).File;t(8355).FileReader;const{setGlobalOrigin:b,getGlobalOrigin:F}=t(1059);r=b;r=F;const{CacheStorage:S}=t(3245);const{kConstruct:N}=t(109);r=new S(N);const{deleteCookie:M,getCookies:U,getSetCookies:L,setCookie:T}=t(9061);r=M;r=U;r=L;r=T;const{parseMIMEType:v,serializeAMimeType:H}=t(1900);r=v;r=H;const{CloseEvent:Y,ErrorEvent:G,MessageEvent:J}=t(5188);t(3726).WebSocket;r=Y;r=G;r=J;r=makeDispatcher(B.request);r=makeDispatcher(B.stream);r=makeDispatcher(B.pipeline);r=makeDispatcher(B.connect);r=makeDispatcher(B.upgrade);r=u;r=d;r=I;r=f;const{EventSource:x}=t(1238);r=x},158:(e,A,t)=>{const{addAbortListener:r}=t(3440);const{RequestAbortedError:s}=t(8707);const n=Symbol("kListener");const o=Symbol("kSignal");function abort(e){if(e.abort){e.abort(e[o]?.reason)}else{e.reason=e[o]?.reason??new s}removeSignal(e)}function addSignal(e,A){e.reason=null;e[o]=null;e[n]=null;if(!A){return}if(A.aborted){abort(e);return}e[o]=A;e[n]=()=>{abort(e)};r(e[o],e[n])}function removeSignal(e){if(!e[o]){return}if("removeEventListener"in e[o]){e[o].removeEventListener("abort",e[n])}else{e[o].removeListener("abort",e[n])}e[o]=null;e[n]=null}e.exports={addSignal:addSignal,removeSignal:removeSignal}},2279:(e,A,t)=>{const r=t(4589);const{AsyncResource:s}=t(6698);const{InvalidArgumentError:n,SocketError:o}=t(8707);const i=t(3440);const{addSignal:a,removeSignal:c}=t(158);class ConnectHandler extends s{constructor(e,A){if(!e||typeof e!=="object"){throw new n("invalid opts")}if(typeof A!=="function"){throw new n("invalid callback")}const{signal:t,opaque:r,responseHeaders:s}=e;if(t&&typeof t.on!=="function"&&typeof t.addEventListener!=="function"){throw new n("signal must be an EventEmitter or EventTarget")}super("UNDICI_CONNECT");this.opaque=r||null;this.responseHeaders=s||null;this.callback=A;this.abort=null;a(this,t)}onConnect(e,A){if(this.reason){e(this.reason);return}r(this.callback);this.abort=e;this.context=A}onHeaders(){throw new o("bad connect",null)}onUpgrade(e,A,t){const{callback:r,opaque:s,context:n}=this;c(this);this.callback=null;let o=A;if(o!=null){o=this.responseHeaders==="raw"?i.parseRawHeaders(A):i.parseHeaders(A)}this.runInAsyncScope(r,null,null,{statusCode:e,headers:o,socket:t,opaque:s,context:n})}onError(e){const{callback:A,opaque:t}=this;c(this);if(A){this.callback=null;queueMicrotask(()=>{this.runInAsyncScope(A,null,e,{opaque:t})})}}}function connect(e,A){if(A===undefined){return new Promise((A,t)=>{connect.call(this,e,(e,r)=>e?t(e):A(r))})}try{const t=new ConnectHandler(e,A);this.dispatch({...e,method:"CONNECT"},t)}catch(t){if(typeof A!=="function"){throw t}const r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}e.exports=connect},6862:(e,A,t)=>{const{Readable:r,Duplex:s,PassThrough:n}=t(7075);const{InvalidArgumentError:o,InvalidReturnValueError:i,RequestAbortedError:a}=t(8707);const c=t(3440);const{AsyncResource:l}=t(6698);const{addSignal:g,removeSignal:Q}=t(158);const E=t(4589);const h=Symbol("resume");class PipelineRequest extends r{constructor(){super({autoDestroy:true});this[h]=null}_read(){const{[h]:e}=this;if(e){this[h]=null;e()}}_destroy(e,A){this._read();A(e)}}class PipelineResponse extends r{constructor(e){super({autoDestroy:true});this[h]=e}_read(){this[h]()}_destroy(e,A){if(!e&&!this._readableState.endEmitted){e=new a}A(e)}}class PipelineHandler extends l{constructor(e,A){if(!e||typeof e!=="object"){throw new o("invalid opts")}if(typeof A!=="function"){throw new o("invalid handler")}const{signal:t,method:r,opaque:n,onInfo:i,responseHeaders:l}=e;if(t&&typeof t.on!=="function"&&typeof t.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=n||null;this.responseHeaders=l||null;this.handler=A;this.abort=null;this.context=null;this.onInfo=i||null;this.req=(new PipelineRequest).on("error",c.nop);this.ret=new s({readableObjectMode:e.objectMode,autoDestroy:true,read:()=>{const{body:e}=this;if(e?.resume){e.resume()}},write:(e,A,t)=>{const{req:r}=this;if(r.push(e,A)||r._readableState.destroyed){t()}else{r[h]=t}},destroy:(e,A)=>{const{body:t,req:r,res:s,ret:n,abort:o}=this;if(!e&&!n._readableState.endEmitted){e=new a}if(o&&e){o()}c.destroy(t,e);c.destroy(r,e);c.destroy(s,e);Q(this);A(e)}}).on("prefinish",()=>{const{req:e}=this;e.push(null)});this.res=null;g(this,t)}onConnect(e,A){const{ret:t,res:r}=this;if(this.reason){e(this.reason);return}E(!r,"pipeline cannot be retried");E(!t.destroyed);this.abort=e;this.context=A}onHeaders(e,A,t){const{opaque:r,handler:s,context:n}=this;if(e<200){if(this.onInfo){const t=this.responseHeaders==="raw"?c.parseRawHeaders(A):c.parseHeaders(A);this.onInfo({statusCode:e,headers:t})}return}this.res=new PipelineResponse(t);let o;try{this.handler=null;const t=this.responseHeaders==="raw"?c.parseRawHeaders(A):c.parseHeaders(A);o=this.runInAsyncScope(s,null,{statusCode:e,headers:t,opaque:r,body:this.res,context:n})}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:A,body:t}=this;if(!A.push(e)&&t.pause){t.pause()}}).on("error",e=>{const{ret:A}=this;c.destroy(A,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:A}=this;return A.push(e)}onComplete(e){const{res:A}=this;A.push(null)}onError(e){const{ret:A}=this;this.handler=null;c.destroy(A,e)}}function pipeline(e,A){try{const t=new PipelineHandler(e,A);this.dispatch({...e,body:t.req},t);return t.ret}catch(e){return(new n).destroy(e)}}e.exports=pipeline},4043:(e,A,t)=>{const r=t(4589);const{Readable:s}=t(9927);const{InvalidArgumentError:n,RequestAbortedError:o}=t(8707);const i=t(3440);const{getResolveErrorBodyCallback:a}=t(7655);const{AsyncResource:c}=t(6698);class RequestHandler extends c{constructor(e,A){if(!e||typeof e!=="object"){throw new n("invalid opts")}const{signal:t,method:r,opaque:s,body:a,onInfo:c,responseHeaders:l,throwOnError:g,highWaterMark:Q}=e;try{if(typeof A!=="function"){throw new n("invalid callback")}if(Q&&(typeof Q!=="number"||Q<0)){throw new n("invalid highWaterMark")}if(t&&typeof t.on!=="function"&&typeof t.addEventListener!=="function"){throw new n("signal must be an EventEmitter or EventTarget")}if(r==="CONNECT"){throw new n("invalid method")}if(c&&typeof c!=="function"){throw new n("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=s||null;this.callback=A;this.res=null;this.abort=null;this.body=a;this.trailers={};this.context=null;this.onInfo=c||null;this.throwOnError=g;this.highWaterMark=Q;this.signal=t;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,A){if(this.reason){e(this.reason);return}r(this.callback);this.abort=e;this.context=A}onHeaders(e,A,t,r){const{callback:n,opaque:o,abort:c,context:l,responseHeaders:g,highWaterMark:Q}=this;const E=g==="raw"?i.parseRawHeaders(A):i.parseHeaders(A);if(e<200){if(this.onInfo){this.onInfo({statusCode:e,headers:E})}return}const h=g==="raw"?i.parseHeaders(A):E;const B=h["content-type"];const C=h["content-length"];const u=new s({resume:t,abort:c,contentType:B,contentLength:this.method!=="HEAD"&&C?Number(C):null,highWaterMark:Q});if(this.removeAbortListener){u.on("close",this.removeAbortListener)}this.callback=null;this.res=u;if(n!==null){if(this.throwOnError&&e>=400){this.runInAsyncScope(a,null,{callback:n,body:u,contentType:B,statusCode:e,statusMessage:r,headers:E})}else{this.runInAsyncScope(n,null,null,{statusCode:e,headers:E,trailers:this.trailers,opaque:o,body:u,context:l})}}}onData(e){return this.res.push(e)}onComplete(e){i.parseHeaders(e,this.trailers);this.res.push(null)}onError(e){const{res:A,callback:t,body:r,opaque:s}=this;if(t){this.callback=null;queueMicrotask(()=>{this.runInAsyncScope(t,null,e,{opaque:s})})}if(A){this.res=null;queueMicrotask(()=>{i.destroy(A,e)})}if(r){this.body=null;i.destroy(r,e)}if(this.removeAbortListener){A?.off("close",this.removeAbortListener);this.removeAbortListener();this.removeAbortListener=null}}}function request(e,A){if(A===undefined){return new Promise((A,t)=>{request.call(this,e,(e,r)=>e?t(e):A(r))})}try{this.dispatch(e,new RequestHandler(e,A))}catch(t){if(typeof A!=="function"){throw t}const r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}e.exports=request;e.exports.RequestHandler=RequestHandler},3560:(e,A,t)=>{const r=t(4589);const{finished:s,PassThrough:n}=t(7075);const{InvalidArgumentError:o,InvalidReturnValueError:i}=t(8707);const a=t(3440);const{getResolveErrorBodyCallback:c}=t(7655);const{AsyncResource:l}=t(6698);const{addSignal:g,removeSignal:Q}=t(158);class StreamHandler extends l{constructor(e,A,t){if(!e||typeof e!=="object"){throw new o("invalid opts")}const{signal:r,method:s,opaque:n,body:i,onInfo:c,responseHeaders:l,throwOnError:Q}=e;try{if(typeof t!=="function"){throw new o("invalid callback")}if(typeof A!=="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(s==="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=n||null;this.factory=A;this.callback=t;this.res=null;this.abort=null;this.context=null;this.trailers=null;this.body=i;this.onInfo=c||null;this.throwOnError=Q||false;if(a.isStream(i)){i.on("error",e=>{this.onError(e)})}g(this,r)}onConnect(e,A){if(this.reason){e(this.reason);return}r(this.callback);this.abort=e;this.context=A}onHeaders(e,A,t,r){const{factory:o,opaque:l,context:g,callback:Q,responseHeaders:E}=this;const h=E==="raw"?a.parseRawHeaders(A):a.parseHeaders(A);if(e<200){if(this.onInfo){this.onInfo({statusCode:e,headers:h})}return}this.factory=null;let B;if(this.throwOnError&&e>=400){const t=E==="raw"?a.parseHeaders(A):h;const s=t["content-type"];B=new n;this.callback=null;this.runInAsyncScope(c,null,{callback:Q,body:B,contentType:s,statusCode:e,statusMessage:r,headers:h})}else{if(o===null){return}B=this.runInAsyncScope(o,null,{statusCode:e,headers:h,opaque:l,context:g});if(!B||typeof B.write!=="function"||typeof B.end!=="function"||typeof B.on!=="function"){throw new i("expected Writable")}s(B,{readable:false},e=>{const{callback:A,res:t,opaque:r,trailers:s,abort:n}=this;this.res=null;if(e||!t.readable){a.destroy(t,e)}this.callback=null;this.runInAsyncScope(A,null,e||null,{opaque:r,trailers:s});if(e){n()}})}B.on("drain",t);this.res=B;const C=B.writableNeedDrain!==undefined?B.writableNeedDrain:B._writableState?.needDrain;return C!==true}onData(e){const{res:A}=this;return A?A.write(e):true}onComplete(e){const{res:A}=this;Q(this);if(!A){return}this.trailers=a.parseHeaders(e);A.end()}onError(e){const{res:A,callback:t,opaque:r,body:s}=this;Q(this);this.factory=null;if(A){this.res=null;a.destroy(A,e)}else if(t){this.callback=null;queueMicrotask(()=>{this.runInAsyncScope(t,null,e,{opaque:r})})}if(s){this.body=null;a.destroy(s,e)}}}function stream(e,A,t){if(t===undefined){return new Promise((t,r)=>{stream.call(this,e,A,(e,A)=>e?r(e):t(A))})}try{this.dispatch(e,new StreamHandler(e,A,t))}catch(A){if(typeof t!=="function"){throw A}const r=e?.opaque;queueMicrotask(()=>t(A,{opaque:r}))}}e.exports=stream},1882:(e,A,t)=>{const{InvalidArgumentError:r,SocketError:s}=t(8707);const{AsyncResource:n}=t(6698);const o=t(3440);const{addSignal:i,removeSignal:a}=t(158);const c=t(4589);class UpgradeHandler extends n{constructor(e,A){if(!e||typeof e!=="object"){throw new r("invalid opts")}if(typeof A!=="function"){throw new r("invalid callback")}const{signal:t,opaque:s,responseHeaders:n}=e;if(t&&typeof t.on!=="function"&&typeof t.addEventListener!=="function"){throw new r("signal must be an EventEmitter or EventTarget")}super("UNDICI_UPGRADE");this.responseHeaders=n||null;this.opaque=s||null;this.callback=A;this.abort=null;this.context=null;i(this,t)}onConnect(e,A){if(this.reason){e(this.reason);return}c(this.callback);this.abort=e;this.context=null}onHeaders(){throw new s("bad upgrade",null)}onUpgrade(e,A,t){c(e===101);const{callback:r,opaque:s,context:n}=this;a(this);this.callback=null;const i=this.responseHeaders==="raw"?o.parseRawHeaders(A):o.parseHeaders(A);this.runInAsyncScope(r,null,null,{headers:i,socket:t,opaque:s,context:n})}onError(e){const{callback:A,opaque:t}=this;a(this);if(A){this.callback=null;queueMicrotask(()=>{this.runInAsyncScope(A,null,e,{opaque:t})})}}}function upgrade(e,A){if(A===undefined){return new Promise((A,t)=>{upgrade.call(this,e,(e,r)=>e?t(e):A(r))})}try{const t=new UpgradeHandler(e,A);this.dispatch({...e,method:e.method||"GET",upgrade:e.protocol||"Websocket"},t)}catch(t){if(typeof A!=="function"){throw t}const r=e?.opaque;queueMicrotask(()=>A(t,{opaque:r}))}}e.exports=upgrade},6615:(e,A,t)=>{e.exports.request=t(4043);e.exports.stream=t(3560);e.exports.pipeline=t(6862);e.exports.upgrade=t(1882);e.exports.connect=t(2279)},9927:(e,A,t)=>{const r=t(4589);const{Readable:s}=t(7075);const{RequestAbortedError:n,NotSupportedError:o,InvalidArgumentError:i,AbortError:a}=t(8707);const c=t(3440);const{ReadableStreamFrom:l}=t(3440);const g=Symbol("kConsume");const Q=Symbol("kReading");const E=Symbol("kBody");const h=Symbol("kAbort");const B=Symbol("kContentType");const C=Symbol("kContentLength");const noop=()=>{};class BodyReadable extends s{constructor({resume:e,abort:A,contentType:t="",contentLength:r,highWaterMark:s=64*1024}){super({autoDestroy:true,read:e,highWaterMark:s});this._readableState.dataEmitted=false;this[h]=A;this[g]=null;this[E]=null;this[B]=t;this[C]=r;this[Q]=false}destroy(e){if(!e&&!this._readableState.endEmitted){e=new n}if(e){this[h]()}return super.destroy(e)}_destroy(e,A){if(!this[Q]){setImmediate(()=>{A(e)})}else{A(e)}}on(e,...A){if(e==="data"||e==="readable"){this[Q]=true}return super.on(e,...A)}addListener(e,...A){return this.on(e,...A)}off(e,...A){const t=super.off(e,...A);if(e==="data"||e==="readable"){this[Q]=this.listenerCount("data")>0||this.listenerCount("readable")>0}return t}removeListener(e,...A){return this.off(e,...A)}push(e){if(this[g]&&e!==null){consumePush(this[g],e);return this[Q]?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[E]){this[E]=l(this);if(this[g]){this[E].getReader();r(this[E].locked)}}return this[E]}async dump(e){let A=Number.isFinite(e?.limit)?e.limit:128*1024;const t=e?.signal;if(t!=null&&(typeof t!=="object"||!("aborted"in t))){throw new i("signal must be an AbortSignal")}t?.throwIfAborted();if(this._readableState.closeEmitted){return null}return await new Promise((e,r)=>{if(this[C]>A){this.destroy(new a)}const onAbort=()=>{this.destroy(t.reason??new a)};t?.addEventListener("abort",onAbort);this.on("close",function(){t?.removeEventListener("abort",onAbort);if(t?.aborted){r(t.reason??new a)}else{e(null)}}).on("error",noop).on("data",function(e){A-=e.length;if(A<=0){this.destroy()}}).resume()})}}function isLocked(e){return e[E]&&e[E].locked===true||e[g]}function isUnusable(e){return c.isDisturbed(e)||isLocked(e)}async function consume(e,A){r(!e[g]);return new Promise((t,r)=>{if(isUnusable(e)){const A=e._readableState;if(A.destroyed&&A.closeEmitted===false){e.on("error",e=>{r(e)}).on("close",()=>{r(new TypeError("unusable"))})}else{r(A.errored??new TypeError("unusable"))}}else{queueMicrotask(()=>{e[g]={type:A,stream:e,resolve:t,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 n)}});consumeStart(e[g])})}})}function consumeStart(e){if(e.body===null){return}const{_readableState:A}=e.stream;if(A.bufferIndex){const t=A.bufferIndex;const r=A.buffer.length;for(let s=t;s2&&t[0]===239&&t[1]===187&&t[2]===191?3:0;return t.utf8Slice(s,r)}function chunksConcat(e,A){if(e.length===0||A===0){return new Uint8Array(0)}if(e.length===1){return new Uint8Array(e[0])}const t=new Uint8Array(Buffer.allocUnsafeSlow(A).buffer);let r=0;for(let A=0;A{const r=t(4589);const{ResponseStatusCodeError:s}=t(8707);const{chunksDecode:n}=t(9927);const o=128*1024;async function getResolveErrorBodyCallback({callback:e,body:A,contentType:t,statusCode:i,statusMessage:a,headers:c}){r(A);let l=[];let g=0;try{for await(const e of A){l.push(e);g+=e.length;if(g>o){l=[];g=0;break}}}catch{l=[];g=0}const Q=`Response status code ${i}${a?`: ${a}`:""}`;if(i===204||!t||!g){queueMicrotask(()=>e(new s(Q,i,c)));return}const E=Error.stackTraceLimit;Error.stackTraceLimit=0;let h;try{if(isContentTypeApplicationJson(t)){h=JSON.parse(n(l,g))}else if(isContentTypeText(t)){h=n(l,g)}}catch{}finally{Error.stackTraceLimit=E}queueMicrotask(()=>e(new s(Q,i,c,h)))}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,A,t)=>{const r=t(7030);const s=t(4589);const n=t(3440);const{InvalidArgumentError:o,ConnectTimeoutError:i}=t(8707);const a=t(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,A)}}}function buildConnector({allowH2:e,maxCachedSessions:A,socketPath:i,timeout:a,session:Q,...E}){if(A!=null&&(!Number.isInteger(A)||A<0)){throw new o("maxCachedSessions must be a positive integer or zero")}const h={path:i,...E};const B=new l(A==null?100:A);a=a==null?1e4:a;e=e!=null?e:false;return function connect({hostname:A,host:o,protocol:i,port:l,servername:E,localAddress:C,httpSocket:u},I){let d;if(i==="https:"){if(!c){c=t(1692)}E=E||h.servername||n.getServerName(o)||null;const r=E||A;s(r);const i=Q||B.get(r)||null;l=l||443;d=c.connect({highWaterMark:16384,...h,servername:E,session:i,localAddress:C,ALPNProtocols:e?["http/1.1","h2"]:["http/1.1"],socket:u,port:l,host:A});d.on("session",function(e){B.set(r,e)})}else{s(!u,"httpSocket can only be sent on TLS update");l=l||80;d=r.connect({highWaterMark:64*1024,...h,localAddress:C,port:l,host:A})}if(h.keepAlive==null||h.keepAlive){const e=h.keepAliveInitialDelay===undefined?6e4:h.keepAliveInitialDelay;d.setKeepAlive(true,e)}const f=g(new WeakRef(d),{timeout:a,hostname:A,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 A=I;I=null;A(e)}});return d}}const g=process.platform==="win32"?(e,A)=>{if(!A.timeout){return noop}let t=null;let r=null;const s=a.setFastTimeout(()=>{t=setImmediate(()=>{r=setImmediate(()=>onConnectTimeout(e.deref(),A))})},A.timeout);return()=>{a.clearFastTimeout(s);clearImmediate(t);clearImmediate(r)}}:(e,A)=>{if(!A.timeout){return noop}let t=null;const r=a.setFastTimeout(()=>{t=setImmediate(()=>{onConnectTimeout(e.deref(),A)})},A.timeout);return()=>{a.clearFastTimeout(r);clearImmediate(t)}};function onConnectTimeout(e,A){if(e==null){return}let t="Connect Timeout Error";if(Array.isArray(e.autoSelectFamilyAttemptedAddresses)){t+=` (attempted addresses: ${e.autoSelectFamilyAttemptedAddresses.join(", ")},`}else{t+=` (attempted address: ${A.hostname}:${A.port},`}t+=` timeout: ${A.timeout}ms)`;n.destroy(e,new i(t))}e.exports=buildConnector},735:e=>{const A={};const t=["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{const r=t(3053);const s=t(7975);const n=s.debuglog("undici");const o=s.debuglog("fetch");const i=s.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(n.enabled||o.enabled){const e=o.enabled?o:n;r.channel("undici:client:beforeConnect").subscribe(A=>{const{connectParams:{version:t,protocol:r,port:s,host:n}}=A;e("connecting to %s using %s%s",`${n}${s?`:${s}`:""}`,r,t)});r.channel("undici:client:connected").subscribe(A=>{const{connectParams:{version:t,protocol:r,port:s,host:n}}=A;e("connected to %s using %s%s",`${n}${s?`:${s}`:""}`,r,t)});r.channel("undici:client:connectError").subscribe(A=>{const{connectParams:{version:t,protocol:r,port:s,host:n},error:o}=A;e("connection to %s using %s%s errored - %s",`${n}${s?`:${s}`:""}`,r,t,o.message)});r.channel("undici:client:sendHeaders").subscribe(A=>{const{request:{method:t,path:r,origin:s}}=A;e("sending request to %s %s/%s",t,s,r)});r.channel("undici:request:headers").subscribe(A=>{const{request:{method:t,path:r,origin:s},response:{statusCode:n}}=A;e("received response to %s %s/%s - HTTP %d",t,s,r,n)});r.channel("undici:request:trailers").subscribe(A=>{const{request:{method:t,path:r,origin:s}}=A;e("trailers received from %s %s/%s",t,s,r)});r.channel("undici:request:error").subscribe(A=>{const{request:{method:t,path:r,origin:s},error:n}=A;e("request to %s %s/%s errored - %s",t,s,r,n.message)});a=true}if(i.enabled){if(!a){const e=n.enabled?n:i;r.channel("undici:client:beforeConnect").subscribe(A=>{const{connectParams:{version:t,protocol:r,port:s,host:n}}=A;e("connecting to %s%s using %s%s",n,s?`:${s}`:"",r,t)});r.channel("undici:client:connected").subscribe(A=>{const{connectParams:{version:t,protocol:r,port:s,host:n}}=A;e("connected to %s%s using %s%s",n,s?`:${s}`:"",r,t)});r.channel("undici:client:connectError").subscribe(A=>{const{connectParams:{version:t,protocol:r,port:s,host:n},error:o}=A;e("connection to %s%s using %s%s errored - %s",n,s?`:${s}`:"",r,t,o.message)});r.channel("undici:client:sendHeaders").subscribe(A=>{const{request:{method:t,path:r,origin:s}}=A;e("sending request to %s %s/%s",t,s,r)})}r.channel("undici:websocket:open").subscribe(e=>{const{address:{address:A,port:t}}=e;i("connection opened %s%s",A,t?`:${t}`:"")});r.channel("undici:websocket:close").subscribe(e=>{const{websocket:A,code:t,reason:r}=e;i("closed connection to %s - %s %s",A.url,t,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=>{const A=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[A]===true}[A]=true}const t=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[t]===true}[t]=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 s=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[s]===true}[s]=true}const n=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[n]===true}[n]=true}const o=Symbol.for("undici.error.UND_ERR_RESPONSE_STATUS_CODE");class ResponseStatusCodeError extends UndiciError{constructor(e,A,t,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=A;this.statusCode=A;this.headers=t}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 Q=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[Q]===true}[Q]=true}const E=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[E]===true}[E]=true}const h=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[h]===true}[h]=true}const B=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[B]===true}[B]=true}const C=Symbol.for("undici.error.UND_ERR_SOCKET");class SocketError extends UndiciError{constructor(e,A){super(e);this.name="SocketError";this.message=e||"Socket error";this.code="UND_ERR_SOCKET";this.socket=A}static[Symbol.hasInstance](e){return e&&e[C]===true}[C]=true}const u=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[u]===true}[u]=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,A,t){super(e);this.name="HTTPParserError";this.code=A?`HPE_${A}`:undefined;this.data=t?t.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,A,{headers:t,data:r}){super(e);this.name="RequestRetryError";this.message=e||"Request retry error";this.code="UND_ERR_REQ_RETRY";this.statusCode=A;this.data=r;this.headers=t}static[Symbol.hasInstance](e){return e&&e[p]===true}[p]=true}const w=Symbol.for("undici.error.UND_ERR_RESPONSE");class ResponseError extends UndiciError{constructor(e,A,{headers:t,data:r}){super(e);this.name="ResponseError";this.message=e||"Response error";this.code="UND_ERR_RESPONSE";this.statusCode=A;this.data=r;this.headers=t}static[Symbol.hasInstance](e){return e&&e[w]===true}[w]=true}const y=Symbol.for("undici.error.UND_ERR_PRX_TLS");class SecureProxyConnectionError extends UndiciError{constructor(e,A,t){super(A,{cause:e,...t??{}});this.name="SecureProxyConnectionError";this.message=A||"Secure Proxy Connection failed";this.code="UND_ERR_PRX_TLS";this.cause=e}static[Symbol.hasInstance](e){return e&&e[y]===true}[y]=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,A,t)=>{const{InvalidArgumentError:r,NotSupportedError:s}=t(8707);const n=t(4589);const{isValidHTTPToken:o,isValidHeaderValue:i,isStream:a,destroy:c,isBuffer:l,isFormDataLike:g,isIterable:Q,isBlobLike:E,buildURL:h,validateHandler:B,getServerName:C,normalizedMethodRecords:u}=t(3440);const{channels:I}=t(2414);const{headerNameLowerCasedRecord:d}=t(735);const f=/[^\u0021-\u00ff]/;const p=Symbol("handler");class Request{constructor(e,{path:A,method:t,body:s,headers:n,query:d,idempotent:w,blocking:y,upgrade:m,headersTimeout:D,bodyTimeout:k,reset:R,throwOnError:b,expectContinue:F,servername:S},N){if(typeof A!=="string"){throw new r("path must be a string")}else if(A[0]!=="/"&&!(A.startsWith("http://")||A.startsWith("https://"))&&t!=="CONNECT"){throw new r("path must be an absolute URL or start with a slash")}else if(f.test(A)){throw new r("invalid request path")}if(typeof t!=="string"){throw new r("method must be a string")}else if(u[t]===undefined&&!o(t)){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(R!=null&&typeof R!=="boolean"){throw new r("invalid reset")}if(F!=null&&typeof F!=="boolean"){throw new r("invalid expectContinue")}this.headersTimeout=D;this.bodyTimeout=k;this.throwOnError=b===true;this.method=t;this.abort=null;if(s==null){this.body=null}else if(a(s)){this.body=s;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(s)){this.body=s.byteLength?s:null}else if(ArrayBuffer.isView(s)){this.body=s.buffer.byteLength?Buffer.from(s.buffer,s.byteOffset,s.byteLength):null}else if(s instanceof ArrayBuffer){this.body=s.byteLength?Buffer.from(s):null}else if(typeof s==="string"){this.body=s.length?Buffer.from(s):null}else if(g(s)||Q(s)||E(s)){this.body=s}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?h(A,d):A;this.origin=e;this.idempotent=w==null?t==="HEAD"||t==="GET":w;this.blocking=y==null?false:y;this.reset=R==null?null:R;this.host=null;this.contentLength=null;this.contentType=null;this.headers=[];this.expectContinue=F!=null?F:false;if(Array.isArray(n)){if(n.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,A,t)=>{const{wellknownHeaderNames:r,headerNameLowerCasedRecord:s}=t(735);class TstNode{value=null;left=null;middle=null;right=null;code;constructor(e,A,t){if(t===undefined||t>=e.length){throw new TypeError("Unreachable")}const r=this.code=e.charCodeAt(t);if(r>127){throw new TypeError("key must be ascii string")}if(e.length!==++t){this.middle=new TstNode(e,A,t)}else{this.value=A}}add(e,A){const t=e.length;if(t===0){throw new TypeError("Unreachable")}let r=0;let s=this;while(true){const n=e.charCodeAt(r);if(n>127){throw new TypeError("key must be ascii string")}if(s.code===n){if(t===++r){s.value=A;break}else if(s.middle!==null){s=s.middle}else{s.middle=new TstNode(e,A,r);break}}else if(s.code=65){s|=32}while(r!==null){if(s===r.code){if(A===++t){return r}r=r.middle;break}r=r.code{const r=t(4589);const{kDestroyed:s,kBodyUsed:n,kListeners:o,kBody:i}=t(6443);const{IncomingMessage:a}=t(7067);const c=t(7075);const l=t(7030);const{Blob:g}=t(4573);const Q=t(7975);const{stringify:E}=t(1792);const{EventEmitter:h}=t(8474);const{InvalidArgumentError:B}=t(8707);const{headerNameLowerCasedRecord:C}=t(735);const{tree:u}=t(7752);const[I,d]=process.versions.node.split(".").map(e=>Number(e));class BodyAsyncIterable{constructor(e){this[i]=e;this[n]=false}async*[Symbol.asyncIterator](){r(!this[n],"disturbed");this[n]=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[n]=false;h.prototype.on.call(e,"data",function(){this[n]=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 A=e[Symbol.toStringTag];return(A==="Blob"||A==="File")&&("stream"in e&&typeof e.stream==="function"||"arrayBuffer"in e&&typeof e.arrayBuffer==="function")}}function buildURL(e,A){if(e.includes("?")||e.includes("#")){throw new Error('Query params cannot be passed when url already contains "?" or "#".')}const t=E(A);if(t){e+="?"+t}return e}function isValidPort(e){const A=parseInt(e,10);return A===Number(e)&&A>=0&&A<=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 B("Invalid URL protocol: the URL must start with `http:` or `https:`.")}return e}if(!e||typeof e!=="object"){throw new B("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 B("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 B("Invalid URL path: the path must be a string or null/undefined.")}if(e.pathname!=null&&typeof e.pathname!=="string"){throw new B("Invalid URL pathname: the pathname must be a string or null/undefined.")}if(e.hostname!=null&&typeof e.hostname!=="string"){throw new B("Invalid URL hostname: the hostname must be a string or null/undefined.")}if(e.origin!=null&&typeof e.origin!=="string"){throw new B("Invalid URL origin: the origin must be a string or null/undefined.")}if(!isHttpOrHttpsPrefixed(e.origin||e.protocol)){throw new B("Invalid URL protocol: the URL must start with `http:` or `https:`.")}const A=e.port!=null?e.port:e.protocol==="https:"?443:80;let t=e.origin!=null?e.origin:`${e.protocol||""}//${e.hostname||""}:${A}`;let r=e.path!=null?e.path:`${e.pathname||""}${e.search||""}`;if(t[t.length-1]==="/"){t=t.slice(0,t.length-1)}if(r&&r[0]!=="/"){r=`/${r}`}return new URL(`${t}${r}`)}if(!isHttpOrHttpsPrefixed(e.origin||e.protocol)){throw new B("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 B("invalid url")}return e}function getHostname(e){if(e[0]==="["){const A=e.indexOf("]");r(A!==-1);return e.substring(1,A)}const A=e.indexOf(":");if(A===-1)return e;return e.substring(0,A)}function getServerName(e){if(!e){return null}r(typeof e==="string");const A=getHostname(e);if(l.isIP(A)){return""}return A}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 A=e._readableState;return A&&A.objectMode===false&&A.ended===true&&Number.isFinite(A.length)?A.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[s]||c.isDestroyed?.(e))}function destroy(e,A){if(e==null||!isStream(e)||isDestroyed(e)){return}if(typeof e.destroy==="function"){if(Object.getPrototypeOf(e).constructor===a){e.socket=null}e.destroy(A)}else if(A){queueMicrotask(()=>{e.emit("error",A)})}if(e.destroyed!==true){e[s]=true}}const f=/timeout=(\d+)/;function parseKeepAliveTimeout(e){const A=e.toString().match(f);return A?parseInt(A[1],10)*1e3:null}function headerNameToString(e){return typeof e==="string"?C[e]??e.toLowerCase():u.lookup(e)??e.toString("latin1").toLowerCase()}function bufferToLowerCasedHeaderName(e){return u.lookup(e)??e.toString("latin1").toLowerCase()}function parseHeaders(e,A){if(A===undefined)A={};for(let t=0;te.toString("utf8")):s.toString("utf8")}}}if("content-length"in A&&"content-disposition"in A){A["content-disposition"]=Buffer.from(A["content-disposition"]).toString("latin1")}return A}function parseRawHeaders(e){const A=e.length;const t=new Array(A);let r=false;let s=-1;let n;let o;let i=0;for(let A=0;A{e.close();e.byobRequest?.respond(0)})}else{const A=Buffer.isBuffer(r)?r:Buffer.from(r);if(A.byteLength){e.enqueue(new Uint8Array(A))}}return e.desiredSize>0},async cancel(e){await A.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,A){if("addEventListener"in e){e.addEventListener("abort",A,{once:true});return()=>e.removeEventListener("abort",A)}e.addListener("abort",A);return()=>e.removeListener("abort",A)}const p=typeof String.prototype.toWellFormed==="function";const w=typeof String.prototype.isWellFormed==="function";function toUSVString(e){return p?`${e}`.toWellFormed():Q.toUSVString(e)}function isUSVString(e){return w?`${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 A=0;A{const{InvalidArgumentError:r}=t(8707);const{kClients:s,kRunning:n,kClose:o,kDestroy:i,kDispatch:a,kInterceptors:c}=t(6443);const l=t(1841);const g=t(628);const Q=t(3701);const E=t(3440);const h=t(5092);const B=Symbol("onConnect");const C=Symbol("onDisconnect");const u=Symbol("onConnectionError");const I=Symbol("maxRedirections");const d=Symbol("onDrain");const f=Symbol("factory");const p=Symbol("options");function defaultFactory(e,A){return A&&A.connections===1?new Q(e,A):new g(e,A)}class Agent extends l{constructor({factory:e=defaultFactory,maxRedirections:A=0,connect:t,tls:n,...o}={}){if(typeof e!=="function"){throw new r("factory must be a function.")}if(t!=null&&typeof t!=="function"&&typeof t!=="object"){throw new r("connect must be a function or an object")}if(!Number.isInteger(A)||A<0){throw new r("maxRedirections must be a positive number")}super(o);if(t&&typeof t!=="function"){t={...t}}if(n&&typeof n!=="function"){n={...n}}this[c]=o.interceptors?.Agent&&Array.isArray(o.interceptors.Agent)?o.interceptors.Agent:[h({maxRedirections:A})];this[p]={...E.deepClone(o),connect:t,tls:n};this[p].interceptors=o.interceptors?{...o.interceptors}:undefined;this[I]=A;this[f]=e;this[s]=new Map;this[d]=(e,A)=>{this.emit("drain",e,[this,...A])};this[B]=(e,A)=>{this.emit("connect",e,[this,...A])};this[C]=(e,A,t)=>{this.emit("disconnect",e,[this,...A],t)};this[u]=(e,A,t)=>{this.emit("connectionError",e,[this,...A],t)}}get[n](){let e=0;for(const A of this[s].values()){e+=A[n]}return e}[a](e,A){let t;if(e.origin&&(typeof e.origin==="string"||e.origin instanceof URL)){t=String(e.origin)}else{throw new r("opts.origin must be a non-empty string or URL.")}let n=this[s].get(t);if(!n){n=this[f](e.origin,this[p]).on("drain",this[d]).on("connect",this[B]).on("disconnect",this[C]).on("connectionError",this[u]);this[s].set(t,n)}return n.dispatch(e,A)}async[o](){const e=[];for(const A of this[s].values()){e.push(A.close())}this[s].clear();await Promise.all(e)}async[i](e){const A=[];for(const t of this[s].values()){A.push(t.destroy(e))}this[s].clear();await Promise.all(A)}}e.exports=Agent},837:(e,A,t)=>{const{BalancedPoolMissingUpstreamError:r,InvalidArgumentError:s}=t(8707);const{PoolBase:n,kClients:o,kNeedDrain:i,kAddClient:a,kRemoveClient:c,kGetDispatcher:l}=t(2128);const g=t(628);const{kUrl:Q,kInterceptors:E}=t(6443);const{parseOrigin:h}=t(3440);const B=Symbol("factory");const C=Symbol("options");const u=Symbol("kGreatestCommonDivisor");const I=Symbol("kCurrentWeight");const d=Symbol("kIndex");const f=Symbol("kWeight");const p=Symbol("kMaxWeightPerServer");const w=Symbol("kErrorPenalty");function getGreatestCommonDivisor(e,A){if(e===0)return A;while(A!==0){const t=A;A=e%A;e=t}return e}function defaultFactory(e,A){return new g(e,A)}class BalancedPool extends n{constructor(e=[],{factory:A=defaultFactory,...t}={}){super();this[C]=t;this[d]=-1;this[I]=0;this[p]=this[C].maxWeightPerServer||100;this[w]=this[C].errorPenalty||15;if(!Array.isArray(e)){e=[e]}if(typeof A!=="function"){throw new s("factory must be a function.")}this[E]=t.interceptors?.BalancedPool&&Array.isArray(t.interceptors.BalancedPool)?t.interceptors.BalancedPool:[];this[B]=A;for(const A of e){this.addUpstream(A)}this._updateBalancedPoolStats()}addUpstream(e){const A=h(e).origin;if(this[o].find(e=>e[Q].origin===A&&e.closed!==true&&e.destroyed!==true)){return this}const t=this[B](A,Object.assign({},this[C]));this[a](t);t.on("connect",()=>{t[f]=Math.min(this[p],t[f]+this[w])});t.on("connectionError",()=>{t[f]=Math.max(1,t[f]-this[w]);this._updateBalancedPoolStats()});t.on("disconnect",(...e)=>{const A=e[2];if(A&&A.code==="UND_ERR_SOCKET"){t[f]=Math.max(1,t[f]-this[w]);this._updateBalancedPoolStats()}});for(const e of this[o]){e[f]=this[p]}this._updateBalancedPoolStats();return this}_updateBalancedPoolStats(){let e=0;for(let A=0;Ae[Q].origin===A&&e.closed!==true&&e.destroyed!==true);if(t){this[c](t)}return this}get upstreams(){return this[o].filter(e=>e.closed!==true&&e.destroyed!==true).map(e=>e[Q].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 A=this[o].map(e=>e[i]).reduce((e,A)=>e&&A,true);if(A){return}let t=0;let s=this[o].findIndex(e=>!e[i]);while(t++this[o][s][f]&&!e[i]){s=this[d]}if(this[d]===0){this[I]=this[I]-this[u];if(this[I]<=0){this[I]=this[p]}}if(e[f]>=this[I]&&!e[i]){return e}}this[I]=this[o][s][f];this[d]=s;return this[o][s]}}e.exports=BalancedPool},637:(e,A,t)=>{const r=t(4589);const s=t(3440);const{channels:n}=t(2414);const o=t(6603);const{RequestContentLengthMismatchError:i,ResponseContentLengthMismatchError:a,RequestAbortedError:c,InvalidArgumentError:l,HeadersTimeoutError:g,HeadersOverflowError:Q,SocketError:E,InformationalError:h,BodyTimeoutError:B,HTTPParserError:C,ResponseExceededMaxSizeError:u}=t(8707);const{kUrl:I,kReset:d,kClient:f,kParser:p,kBlocking:w,kRunning:y,kPending:m,kSize:D,kWriting:k,kQueue:R,kNoRef:b,kKeepAliveDefaultTimeout:F,kHostHeader:S,kPendingIdx:N,kRunningIdx:M,kError:U,kPipelining:L,kSocket:T,kKeepAliveTimeoutValue:v,kMaxHeadersSize:H,kKeepAliveMaxTimeout:Y,kKeepAliveTimeoutThreshold:G,kHeadersTimeout:J,kBodyTimeout:x,kStrictContentLength:V,kMaxRequests:O,kCounter:W,kMaxResponseSize:P,kOnError:q,kResume:_,kHTTPContext:z}=t(6443);const Z=t(2824);const K=Buffer.alloc(0);const X=Buffer[Symbol.species];const j=s.addListener;const $=s.removeAllListeners;const ee=Symbol("kIdleSocketValidation");const Ae=Symbol("kIdleSocketValidationTimeout");const te=Symbol("kSocketUsed");let re;async function lazyllhttp(){const e=process.env.JEST_WORKER_ID?t(3870):undefined;let A;try{A=await WebAssembly.compile(t(3434))}catch(r){A=await WebAssembly.compile(e||t(3870))}return await WebAssembly.instantiate(A,{env:{wasm_on_url:(e,A,t)=>0,wasm_on_status:(e,A,t)=>{r(oe.ptr===e);const s=A-ce+ie.byteOffset;return oe.onStatus(new X(ie.buffer,s,t))||0},wasm_on_message_begin:e=>{r(oe.ptr===e);return oe.onMessageBegin()||0},wasm_on_header_field:(e,A,t)=>{r(oe.ptr===e);const s=A-ce+ie.byteOffset;return oe.onHeaderField(new X(ie.buffer,s,t))||0},wasm_on_header_value:(e,A,t)=>{r(oe.ptr===e);const s=A-ce+ie.byteOffset;return oe.onHeaderValue(new X(ie.buffer,s,t))||0},wasm_on_headers_complete:(e,A,t,s)=>{r(oe.ptr===e);return oe.onHeadersComplete(A,Boolean(t),Boolean(s))||0},wasm_on_body:(e,A,t)=>{r(oe.ptr===e);const s=A-ce+ie.byteOffset;return oe.onBody(new X(ie.buffer,s,t))||0},wasm_on_message_complete:e=>{r(oe.ptr===e);return oe.onMessageComplete()||0}}})}let se=null;let ne=lazyllhttp();ne.catch();let oe=null;let ie=null;let ae=0;let ce=null;const le=0;const ge=1;const Qe=2|ge;const Ee=4|ge;const he=8|le;class Parser{constructor(e,A,{exports:t}){r(Number.isFinite(e[H])&&e[H]>0);this.llhttp=t;this.ptr=this.llhttp.llhttp_alloc(Z.TYPE.RESPONSE);this.client=e;this.socket=A;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[H];this.shouldKeepAlive=false;this.paused=false;this.resume=this.resume.bind(this);this.bytesRead=0;this.keepAlive="";this.contentLength="";this.connection="";this.maxResponseSize=e[P]}setTimeout(e,A){if(e!==this.timeoutValue||A&ge^this.timeoutType&ge){if(this.timeout){o.clearTimeout(this.timeout);this.timeout=null}if(e){if(A&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=A}resume(){if(this.socket.destroyed||!this.paused){return}r(this.ptr!=null);r(oe==null);this.llhttp.llhttp_resume(this.ptr);r(this.timeoutType===Ee);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}this.paused=false;this.execute(this.socket.read()||K);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:A,llhttp:t}=this;if(e.length>ae){if(ce){t.free(ce)}ae=Math.ceil(e.length/4096)*4096;ce=t.malloc(ae)}new Uint8Array(t.memory.buffer,ce,ae).set(e);try{let r;try{ie=e;oe=this;r=t.llhttp_execute(this.ptr,ce,e.length)}catch(e){throw e}finally{oe=null;ie=null}const s=t.llhttp_get_error_pos(this.ptr)-ce;if(r!==Z.ERROR.OK){const t=e.subarray(s);if(r===Z.ERROR.PAUSED_UPGRADE){this.onUpgrade(t)}else if(r===Z.ERROR.PAUSED){this.paused=true;A.unshift(t)}else{throw this.createError(r,t)}}}catch(e){s.destroy(A,e)}}finish(){r(oe===null);r(this.ptr!=null);r(!this.paused);const{llhttp:e}=this;let A;try{oe=this;A=e.llhttp_finish(this.ptr)}finally{oe=null}if(A===Z.ERROR.OK){return null}if(A===Z.ERROR.PAUSED||A===Z.ERROR.PAUSED_UPGRADE){this.paused=true;return null}return this.createError(A,K)}createError(e,A){const{llhttp:t,contentLength:r,bytesRead:s}=this;if(r&&s!==parseInt(r,10)){return new a}const n=t.llhttp_get_error_reason(this.ptr);let o="";if(n){const e=new Uint8Array(t.memory.buffer,n).indexOf(0);o="Response does not match the HTTP/1.1 protocol ("+Buffer.from(t.memory.buffer,n,e).toString()+")"}return new C(o,Z.ERROR[e],A)}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:A}=this;if(e.destroyed){return-1}if(A[y]===0){s.destroy(e,new E("bad response",s.getSocketInfo(e)));return-1}const t=A[R][A[M]];if(!t){return-1}t.onResponseStarted()}onHeaderField(e){const A=this.headers.length;if((A&1)===0){this.headers.push(e)}else{this.headers[A-1]=Buffer.concat([this.headers[A-1],e])}this.trackHeader(e.length)}onHeaderValue(e){let A=this.headers.length;if((A&1)===1){this.headers.push(e);A+=1}else{this.headers[A-1]=Buffer.concat([this.headers[A-1],e])}const t=this.headers[A-2];if(t.length===10){const A=s.bufferToLowerCasedHeaderName(t);if(A==="keep-alive"){this.keepAlive+=e.toString()}else if(A==="connection"){this.connection+=e.toString()}}else if(t.length===14&&s.bufferToLowerCasedHeaderName(t)==="content-length"){this.contentLength+=e.toString()}this.trackHeader(e.length)}trackHeader(e){this.headersSize+=e;if(this.headersSize>=this.headersMaxSize){s.destroy(this.socket,new Q)}}onUpgrade(e){const{upgrade:A,client:t,socket:n,headers:o,statusCode:i,statusText:a}=this;r(A);r(t[T]===n);r(!n.destroyed);r(!this.paused);r((o.length&1)===0);const c=t[R][t[M]];r(c);r(c.upgrade||c.method==="CONNECT");this.statusCode=null;this.statusText="";this.shouldKeepAlive=null;this.headers=[];this.headersSize=0;n.unshift(e);n[p].destroy();n[p]=null;n[f]=null;n[U]=null;$(n);t[T]=null;t[z]=null;t[R][t[M]++]=null;t.emit("disconnect",t[I],[t],new h("upgrade"));try{c.onUpgrade(i,o,n,a)}catch(e){s.errorRequest(t,c,e);s.destroy(n,e)}t[_]()}onHeadersComplete(e,A,t){const{client:n,socket:o,headers:i,statusText:a}=this;if(o.destroyed){return-1}if(n[y]===0){s.destroy(o,new E("bad response",s.getSocketInfo(o)));return-1}const c=n[R][n[M]];if(!c){return-1}r(!this.upgrade);r(this.statusCode<200);if(e===100){s.destroy(o,new E("bad response",s.getSocketInfo(o)));return-1}if(A&&!c.upgrade){s.destroy(o,new E("bad upgrade",s.getSocketInfo(o)));return-1}r(this.timeoutType===Qe);this.statusCode=e;this.shouldKeepAlive=t||c.method==="HEAD"&&!o[d]&&this.connection.toLowerCase()==="keep-alive";if(this.statusCode>=200){const e=c.bodyTimeout!=null?c.bodyTimeout:n[x];this.setTimeout(e,Ee)}else if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}if(c.method==="CONNECT"){r(n[y]===1);this.upgrade=true;return 2}if(A){r(n[y]===1);this.upgrade=true;return 2}r((this.headers.length&1)===0);this.headers=[];this.headersSize=0;if(this.shouldKeepAlive&&n[L]){const e=this.keepAlive?s.parseKeepAliveTimeout(this.keepAlive):null;if(e!=null){const A=Math.min(e-n[G],n[Y]);if(A<=0){o[d]=true}else{n[v]=A}}else{n[v]=n[F]}}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[w]){o[w]=false;n[_]()}return l?Z.ERROR.PAUSED:0}onBody(e){const{client:A,socket:t,statusCode:n,maxResponseSize:o}=this;if(t.destroyed){return-1}const i=A[R][A[M]];r(i);r(this.timeoutType===Ee);if(this.timeout){if(this.timeout.refresh){this.timeout.refresh()}}r(n>=200);if(o>-1&&this.bytesRead+e.length>o){s.destroy(t,new u);return-1}this.bytesRead+=e.length;if(i.onData(e)===false){return Z.ERROR.PAUSED}}onMessageComplete(){const{client:e,socket:A,statusCode:t,upgrade:n,headers:o,contentLength:i,bytesRead:c,shouldKeepAlive:l}=this;if(A.destroyed&&(!t||l)){return-1}if(n){return}r(t>=100);r((this.headers.length&1)===0);const g=e[R][e[M]];r(g);this.statusCode=null;this.statusText="";this.bytesRead=0;this.contentLength="";this.keepAlive="";this.connection="";this.headers=[];this.headersSize=0;if(t<200){return}if(g.method!=="HEAD"&&i&&c!==parseInt(i,10)){s.destroy(A,new a);return-1}g.onComplete(o);e[R][e[M]++]=null;A[te]=true;if(A[k]){r(e[y]===0);s.destroy(A,new h("reset"));return Z.ERROR.PAUSED}else if(!l){s.destroy(A,new h("reset"));return Z.ERROR.PAUSED}else if(A[d]&&e[y]===0){s.destroy(A,new h("reset"));return Z.ERROR.PAUSED}else if(e[L]==null||e[L]===1){setImmediate(()=>e[_]())}else{e[_]()}}}function onParserTimeout(e){const{socket:A,timeoutType:t,client:n,paused:o}=e.deref();if(t===Qe){if(!A[k]||A.writableNeedDrain||n[y]>1){r(!o,"cannot be paused while waiting for headers");s.destroy(A,new g)}}else if(t===Ee){if(!o){s.destroy(A,new B)}}else if(t===he){r(n[y]===0&&n[v]);s.destroy(A,new h("socket idle timeout"))}}async function connectH1(e,A){e[T]=A;if(!se){se=await ne;ne=null}A[b]=false;A[k]=false;A[d]=false;A[w]=false;A[ee]=0;A[Ae]=null;A[te]=false;A[p]=new Parser(e,A,se);j(A,"error",function(e){const A=this[p];if(e.code==="ECONNRESET"&&A.statusCode&&!A.shouldKeepAlive){const e=A.finish();if(e){this[U]=e;this[f][q](e)}return}this[U]=e;this[f][q](e)});j(A,"readable",function(){const e=this[p];if(e){e.readMore()}});j(A,"end",function(){const e=this[p];if(e.statusCode&&!e.shouldKeepAlive){const A=e.finish();if(A){s.destroy(this,A)}return}s.destroy(this,new E("other side closed",s.getSocketInfo(this)))});j(A,"close",function(){const e=this[f];const A=this[p];clearIdleSocketValidation(this);if(A){if(!this[U]&&A.statusCode&&!A.shouldKeepAlive){this[U]=A.finish()||this[U]}this[p].destroy();this[p]=null}const t=this[U]||new E("closed",s.getSocketInfo(this));e[T]=null;e[z]=null;if(e.destroyed){r(e[m]===0);const A=e[R].splice(e[M]);for(let r=0;r0&&t.code!=="UND_ERR_INFO"){const A=e[R][e[M]];e[R][e[M]++]=null;s.errorRequest(e,A,t)}e[N]=e[M];r(e[y]===0);e.emit("disconnect",e[I],[e],t);e[_]()});let t=false;A.on("close",()=>{t=true});return{version:"h1",defaultPipelining:1,write(...A){return writeH1(e,...A)},resume(){resumeH1(e)},destroy(e,r){if(t){queueMicrotask(r)}else{A.destroy(e).on("close",r)}},get destroyed(){return A.destroyed},busy(t){if(A[k]||A[d]||A[w]||A[ee]===1){return true}if(t){if(e[y]>0&&!t.idempotent){return true}if(e[y]>0&&(t.upgrade||t.method==="CONNECT")){return true}if(e[y]>0&&s.bodyLength(t.body)!==0&&(s.isStream(t.body)||s.isAsyncIterable(t.body)||s.isFormDataLike(t.body))){return true}}return false}}}function clearIdleSocketValidation(e){if(e[Ae]){clearImmediate(e[Ae]);e[Ae]=null}e[ee]=0}function scheduleIdleSocketValidation(e,A){A[ee]=1;A[Ae]=setImmediate(()=>{A[Ae]=null;A[ee]=2;if(e[T]===A&&!A.destroyed){e[_]()}})}function resumeH1(e){const A=e[T];if(A&&!A.destroyed){if(e[D]===0){if(!A[b]&&A.unref){A.unref();A[b]=true}}else if(A[b]&&A.ref){A.ref();A[b]=false}if(e[y]===0&&e[m]>0&&A[te]){if(A[ee]===0){scheduleIdleSocketValidation(e,A);A[p].readMore();if(A.destroyed){return}return}if(A[ee]===1){A[p].readMore();if(A.destroyed){return}return}}if(e[y]===0){A[p].readMore();if(A.destroyed){return}}if(e[D]===0){if(A[p].timeoutType!==he){A[p].setTimeout(e[v],he)}}else if(e[y]>0&&A[p].statusCode<200){if(A[p].timeoutType!==Qe){const t=e[R][e[M]];const r=t.headersTimeout!=null?t.headersTimeout:e[J];A[p].setTimeout(r,Qe)}}}}function shouldSendContentLength(e){return e!=="GET"&&e!=="HEAD"&&e!=="OPTIONS"&&e!=="TRACE"&&e!=="CONNECT"}function writeH1(e,A){const{method:o,path:a,host:g,upgrade:Q,blocking:E,reset:B}=A;let{body:C,headers:u,contentLength:I}=A;const f=o==="PUT"||o==="POST"||o==="PATCH"||o==="QUERY"||o==="PROPFIND"||o==="PROPPATCH";if(s.isFormDataLike(C)){if(!re){re=t(4492).extractBody}const[e,r]=re(C);if(A.contentType==null){u.push("content-type",r)}C=e.stream;I=e.length}else if(s.isBlobLike(C)&&A.contentType==null){const t=C.type;if(t){const r=`${t}`;if(!s.isValidHeaderValue(r)){s.errorRequest(e,A,new l("invalid content-type header"));return false}u.push("content-type",r)}}if(C&&typeof C.read==="function"){C.read(0)}const p=s.bodyLength(C);I=p??I;if(I===null){I=A.contentLength}if(I===0&&!f){I=null}if(shouldSendContentLength(o)&&I>0&&A.contentLength!==null&&A.contentLength!==I){if(e[V]){s.errorRequest(e,A,new i);return false}process.emitWarning(new i)}const y=e[T];clearIdleSocketValidation(y);const abort=t=>{if(A.aborted){return}if(A.completed){if(A.upgrade||A.method==="CONNECT"){s.destroy(y,new h("aborted"))}return}s.errorRequest(e,A,t||new c);s.destroy(C);s.destroy(y,new h("aborted"))};try{A.onConnect(abort)}catch(t){s.errorRequest(e,A,t)}if(A.aborted){return false}if(o==="HEAD"){y[d]=true}if(Q||o==="CONNECT"){y[d]=true}if(B!=null){y[d]=B}if(e[O]&&y[W]++>=e[O]){y[d]=true}if(E){y[w]=true}let m=`${o} ${a} HTTP/1.1\r\n`;if(typeof g==="string"){m+=`host: ${g}\r\n`}else{m+=e[S]}if(Q){m+=`connection: upgrade\r\nupgrade: ${Q}\r\n`}else if(e[L]&&!y[d]){m+="connection: keep-alive\r\n"}else{m+="connection: close\r\n"}if(Array.isArray(u)){for(let e=0;e{A.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]&&t[y]<=1);o.off("drain",onDrain).off("error",onFinished);A.removeListener("data",onData).removeListener("end",onFinished).removeListener("close",onClose);if(!e){try{Q.end()}catch(A){e=A}}Q.destroy(e);if(e&&(e.code!=="UND_ERR_INFO"||e.message!=="reset")){s.destroy(A,e)}else{s.destroy(A)}};A.on("data",onData).on("end",onFinished).on("error",onFinished).on("close",onClose);if(A.resume){A.resume()}o.on("drain",onDrain).on("error",onFinished);if(A.errorEmitted??A.errored){setImmediate(()=>onFinished(A.errored))}else if(A.endEmitted??A.readableEnded){setImmediate(()=>onFinished(null))}if(A.closeEmitted??A.closed){setImmediate(onClose)}}function writeBuffer(e,A,t,n,o,i,a,c){try{if(!A){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(s.isBuffer(A)){r(i===A.byteLength,"buffer body must have content length");o.cork();o.write(`${a}content-length: ${i}\r\n\r\n`,"latin1");o.write(A);o.uncork();n.onBodySent(A);if(!c&&n.reset!==false){o[d]=true}}n.onRequestSent();t[_]()}catch(A){e(A)}}async function writeBlob(e,A,t,s,n,o,a,c){r(o===A.size,"blob body must have content length");try{if(o!=null&&o!==A.size){throw new i}const e=Buffer.from(await A.arrayBuffer());n.cork();n.write(`${a}content-length: ${o}\r\n\r\n`,"latin1");n.write(e);n.uncork();s.onBodySent(e);s.onRequestSent();if(!c&&s.reset!==false){n[d]=true}t[_]()}catch(A){e(A)}}async function writeIterable(e,A,t,s,n,o,i,a){r(o!==0||t[y]===0,"iterator body cannot be pipelined");let c=null;function onDrain(){if(c){const e=c;c=null;e()}}const waitForDrain=()=>new Promise((e,A)=>{r(c===null);if(n[U]){A(n[U])}else{c=e}});n.on("close",onDrain).on("drain",onDrain);const l=new AsyncWriter({abort:e,socket:n,request:s,contentLength:o,client:t,expectsPayload:a,header:i});try{for await(const e of A){if(n[U]){throw n[U]}if(!l.write(e)){await waitForDrain()}}l.end()}catch(e){l.destroy(e)}finally{n.off("close",onDrain).off("drain",onDrain)}}class AsyncWriter{constructor({abort:e,socket:A,request:t,contentLength:r,client:s,expectsPayload:n,header:o}){this.socket=A;this.request=t;this.contentLength=r;this.client=s;this.bytesWritten=0;this.expectsPayload=n;this.header=o;this.abort=e;A[k]=true}write(e){const{socket:A,request:t,contentLength:r,client:s,bytesWritten:n,expectsPayload:o,header:a}=this;if(A[U]){throw A[U]}if(A.destroyed){return false}const c=Buffer.byteLength(e);if(!c){return true}if(r!==null&&n+c>r){if(s[V]){throw new i}process.emitWarning(new i)}A.cork();if(n===0){if(!o&&t.reset!==false){A[d]=true}if(r===null){A.write(`${a}transfer-encoding: chunked\r\n`,"latin1")}else{A.write(`${a}content-length: ${r}\r\n\r\n`,"latin1")}}if(r===null){A.write(`\r\n${c.toString(16)}\r\n`,"latin1")}this.bytesWritten+=c;const l=A.write(e);A.uncork();t.onBodySent(e);if(!l){if(A[p].timeout&&A[p].timeoutType===Qe){if(A[p].timeout.refresh){A[p].timeout.refresh()}}}return l}end(){const{socket:e,contentLength:A,client:t,bytesWritten:r,expectsPayload:s,header:n,request:o}=this;o.onRequestSent();e[k]=false;if(e[U]){throw e[U]}if(e.destroyed){return}if(r===0){if(s){e.write(`${n}content-length: 0\r\n\r\n`,"latin1")}else{e.write(`${n}\r\n`,"latin1")}}else if(A===null){e.write("\r\n0\r\n\r\n","latin1")}if(A!==null&&r!==A){if(t[V]){throw new i}else{process.emitWarning(new i)}}if(e[p].timeout&&e[p].timeoutType===Qe){if(e[p].timeout.refresh){e[p].timeout.refresh()}}t[_]()}destroy(e){const{socket:A,client:t,abort:s}=this;A[k]=false;if(e){r(t[y]<=1,"pipeline should only contain this request");s(e)}}}e.exports=connectH1},8788:(e,A,t)=>{const r=t(4589);const{errorMonitor:s}=t(8474);const{pipeline:n}=t(7075);const o=t(3440);const{RequestContentLengthMismatchError:i,RequestAbortedError:a,SocketError:c,InformationalError:l}=t(8707);const{kUrl:g,kReset:Q,kClient:E,kRunning:h,kPending:B,kQueue:C,kPendingIdx:u,kRunningIdx:I,kError:d,kSocket:f,kStrictContentLength:p,kOnError:w,kMaxConcurrentStreams:y,kHTTP2Session:m,kResume:D,kSize:k,kHTTPContext:R}=t(6443);const b=Symbol("open streams");let F;let S=false;let N;try{N=t(2467)}catch{N={constants:{}}}const{constants:{HTTP2_HEADER_AUTHORITY:M,HTTP2_HEADER_METHOD:U,HTTP2_HEADER_PATH:L,HTTP2_HEADER_SCHEME:T,HTTP2_HEADER_CONTENT_LENGTH:v,HTTP2_HEADER_EXPECT:H,HTTP2_HEADER_STATUS:Y}}=N;function parseH2Headers(e){const A=[];for(const[t,r]of Object.entries(e)){if(Array.isArray(r)){for(const e of r){A.push(Buffer.from(t),Buffer.from(e))}}else{A.push(Buffer.from(t),Buffer.from(r))}}return A}function parseH2ResponseHeaders(e){const{[Y]:A,...t}=e;return parseH2Headers(t)}async function connectH2(e,A){e[f]=A;if(!S){S=true;process.emitWarning("H2 support is experimental, expect them to change at any time.",{code:"UNDICI-H2"})}const t=N.connect(e[g],{createConnection:()=>A,peerMaxConcurrentStreams:e[y]});t[b]=0;t[E]=e;t[f]=A;o.addListener(t,"error",onHttp2SessionError);o.addListener(t,"frameError",onHttp2FrameError);o.addListener(t,"end",onHttp2SessionEnd);o.addListener(t,"goaway",onHTTP2GoAway);o.addListener(t,"close",function(){const{[E]:e}=this;const{[f]:A}=e;const t=this[f][d]||this[d]||new c("closed",o.getSocketInfo(A));e[m]=null;if(e.destroyed){r(e[B]===0);const A=e[C].splice(e[I]);for(let r=0;r{s=true});return{version:"h2",defaultPipelining:Infinity,write(...A){return writeH2(e,...A)},resume(){resumeH2(e)},destroy(e,t){if(s){queueMicrotask(t)}else{A.destroy(e).on("close",t)}},get destroyed(){return A.destroyed},busy(){return false}}}function resumeH2(e){const A=e[f];if(A?.destroyed===false){if(e[k]===0&&e[y]===0){A.unref();e[m].unref()}else{A.ref();e[m].ref()}}}function onHttp2SessionError(e){this[f][d]=e;this[E][w](e)}function onHttp2FrameError(e,A,t){if(t===0){const t=new l(`HTTP/2: "frameError" received - type ${e}, code ${A}`);this[f][d]=t;this[E][w](t)}}function onHttp2SessionEnd(){const e=new c("other side closed",o.getSocketInfo(this[f]));this.destroy(e);o.destroy(this[f],e)}function onHTTP2GoAway(e){const A=this[d]||new c(`HTTP/2: "GOAWAY" frame received with code ${e}`,o.getSocketInfo(this));const t=this[E];t[f]=null;t[R]=null;if(this[m]!=null){this[m].destroy(A);this[m]=null}o.destroy(this[f],A);if(t[I]{if(A.aborted){return}if(A.completed){if(c==="CONNECT"&&R!=null){o.destroy(R,t||new a)}return}t=t||new a;o.errorRequest(e,A,t);if(R!=null){o.destroy(R,t)}o.destroy(y,t);e[C][e[I]++]=null;e[D]()};try{A.onConnect(abort)}catch(t){o.errorRequest(e,A,t)}if(A.aborted){return false}if(c==="CONNECT"){n.ref();R=n.request(k,{endStream:false,signal:d});let t=false;const onResponse=e=>{t=true;R.off(s,onUpgradeError);A.onUpgradeResponse(Number(e[Y]),e,parseH2ResponseHeaders)};const onUpgradeError=e=>{t=true;R.off("response",onResponse);A.onUpgradeError(e)};const onReady=()=>{try{A.onUpgrade(null,null,R)}catch(e){R.off("response",onResponse);abort(e);return}if(A.aborted){return}R.off("error",abort);R.once(s,onUpgradeError);e[C][e[I]++]=null};R.once("response",onResponse);R.once("error",abort);++n[b];onReady();R.once("close",()=>{if(!t&&A.completed){R.off("response",onResponse);R.off(s,onUpgradeError);A.onUpgradeError(new l(`HTTP/2: "stream error" received - code ${R.rstCode}`))}n[b]-=1;if(n[b]===0)n.unref()});return true}k[L]=Q;k[T]="https";const G=c==="PUT"||c==="POST"||c==="PATCH";if(y&&typeof y.read==="function"){y.read(0)}let J=o.bodyLength(y);if(o.isFormDataLike(y)){F??=t(4492).extractBody;const[e,A]=F(y);k["content-type"]=A;y=e.stream;J=e.length}if(J==null){J=A.contentLength}if(J===0||!G){J=null}if(shouldSendContentLength(c)&&J>0&&A.contentLength!=null&&A.contentLength!==J){if(e[p]){o.errorRequest(e,A,new i);return false}process.emitWarning(new i)}if(J!=null){r(y,"no body must not have content length");k[v]=`${J}`}n.ref();const x=c==="GET"||c==="HEAD"||y===null;if(B){k[H]="100-continue";R=n.request(k,{endStream:x,signal:d});R.once("continue",writeBodyH2)}else{R=n.request(k,{endStream:x,signal:d});writeBodyH2()}++n[b];R.once("response",t=>{const{[Y]:r,...s}=t;A.onResponseStarted();if(A.aborted){const t=new a;o.errorRequest(e,A,t);o.destroy(R,t);return}if(A.onHeaders(Number(r),parseH2Headers(s),R.resume.bind(R),"")===false){R.pause()}R.on("data",e=>{if(A.onData(e)===false){R.pause()}})});R.once("end",()=>{if(R.state?.state==null||R.state.state<6){A.onComplete([])}if(n[b]===0){n.unref()}abort(new l("HTTP/2: stream half-closed (remote)"));e[C][e[I]++]=null;e[u]=e[I];e[D]()});R.once("close",()=>{n[b]-=1;if(n[b]===0){n.unref()}});R.once("error",function(e){abort(e)});R.once("frameError",(e,A)=>{abort(new l(`HTTP/2: "frameError" received - type ${e}, code ${A}`))});return true;function writeBodyH2(){if(!y||J===0){writeBuffer(abort,R,null,e,A,e[f],J,G)}else if(o.isBuffer(y)){writeBuffer(abort,R,y,e,A,e[f],J,G)}else if(o.isBlobLike(y)){if(typeof y.stream==="function"){writeIterable(abort,R,y.stream(),e,A,e[f],J,G)}else{writeBlob(abort,R,y,e,A,e[f],J,G)}}else if(o.isStream(y)){writeStream(abort,e[f],G,R,y,e,A,J)}else if(o.isIterable(y)){writeIterable(abort,R,y,e,A,e[f],J,G)}else{r(false)}}}function writeBuffer(e,A,t,s,n,i,a,c){try{if(t!=null&&o.isBuffer(t)){r(a===t.byteLength,"buffer body must have content length");A.cork();A.write(t);A.uncork();A.end();n.onBodySent(t)}if(!c){i[Q]=true}n.onRequestSent();s[D]()}catch(A){e(A)}}function writeStream(e,A,t,s,i,a,c,l){r(l!==0||a[h]===0,"stream body cannot be pipelined");const g=n(i,s,r=>{if(r){o.destroy(g,r);e(r)}else{o.removeAllListeners(g);c.onRequestSent();if(!t){A[Q]=true}a[D]()}});o.addListener(g,"data",onPipeData);function onPipeData(e){c.onBodySent(e)}}async function writeBlob(e,A,t,s,n,o,a,c){r(a===t.size,"blob body must have content length");try{if(a!=null&&a!==t.size){throw new i}const e=Buffer.from(await t.arrayBuffer());A.cork();A.write(e);A.uncork();A.end();n.onBodySent(e);n.onRequestSent();if(!c){o[Q]=true}s[D]()}catch(A){e(A)}}async function writeIterable(e,A,t,s,n,o,i,a){r(i!==0||s[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,A)=>{r(c===null);if(o[d]){A(o[d])}else{c=e}});A.on("close",onDrain).on("drain",onDrain);try{for await(const e of t){if(o[d]){throw o[d]}const t=A.write(e);n.onBodySent(e);if(!t){await waitForDrain()}}A.end();n.onRequestSent();if(!a){o[Q]=true}s[D]()}catch(A){e(A)}finally{A.off("close",onDrain).off("drain",onDrain)}}e.exports=connectH2},3701:(e,A,t)=>{const r=t(4589);const s=t(7030);const n=t(7067);const o=t(3440);const{channels:i}=t(2414);const a=t(4655);const c=t(1841);const{InvalidArgumentError:l,InformationalError:g,ClientDestroyedError:Q}=t(8707);const E=t(9136);const{kUrl:h,kServerName:B,kClient:C,kBusy:u,kConnect:I,kResuming:d,kRunning:f,kPending:p,kSize:w,kQueue:y,kConnected:m,kConnecting:D,kNeedDrain:k,kKeepAliveDefaultTimeout:R,kHostHeader:b,kPendingIdx:F,kRunningIdx:S,kError:N,kPipelining:M,kKeepAliveTimeoutValue:U,kMaxHeadersSize:L,kKeepAliveMaxTimeout:T,kKeepAliveTimeoutThreshold:v,kHeadersTimeout:H,kBodyTimeout:Y,kStrictContentLength:G,kConnector:J,kMaxRedirections:x,kMaxRequests:V,kCounter:O,kClose:W,kDestroy:P,kDispatch:q,kInterceptors:_,kLocalAddress:z,kMaxResponseSize:Z,kOnError:K,kHTTPContext:X,kMaxConcurrentStreams:j,kResume:$}=t(6443);const ee=t(637);const Ae=t(8788);let te=false;const re=Symbol("kClosedResolve");const noop=()=>{};function getPipelining(e){return e[M]??e[X]?.defaultPipelining??1}class Client extends c{constructor(e,{interceptors:A,maxHeaderSize:t,headersTimeout:r,socketTimeout:i,requestTimeout:a,connectTimeout:c,bodyTimeout:g,idleTimeout:Q,keepAlive:C,keepAliveTimeout:u,maxKeepAliveTimeout:I,keepAliveMaxTimeout:f,keepAliveTimeoutThreshold:p,socketPath:w,pipelining:m,tls:D,strictContentLength:N,maxCachedSessions:O,maxRedirections:W,connect:P,maxRequestsPerClient:q,localAddress:ee,maxResponseSize:Ae,autoSelectFamily:ne,autoSelectFamilyAttemptTimeout:oe,maxConcurrentStreams:ie,allowH2:ae,webSocket:ce,eventSource:le}={}){super({webSocket:ce,eventSource:le});if(C!==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(Q!==undefined){throw new l("unsupported idleTimeout, use keepAliveTimeout instead")}if(I!==undefined){throw new l("unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead")}if(t!=null&&!Number.isFinite(t)){throw new l("invalid maxHeaderSize")}if(w!=null&&typeof w!=="string"){throw new l("invalid socketPath")}if(c!=null&&(!Number.isFinite(c)||c<0)){throw new l("invalid connectTimeout")}if(u!=null&&(!Number.isFinite(u)||u<=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(P!=null&&typeof P!=="function"&&typeof P!=="object"){throw new l("connect must be a function or an object")}if(W!=null&&(!Number.isInteger(W)||W<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"||s.isIP(ee)===0)){throw new l("localAddress must be valid string IP address")}if(Ae!=null&&(!Number.isInteger(Ae)||Ae<-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 P!=="function"){P=E({...D,maxCachedSessions:O,allowH2:ae,socketPath:w,timeout:c,...ne?{autoSelectFamily:ne,autoSelectFamilyAttemptTimeout:oe}:undefined,...P})}if(A?.Client&&Array.isArray(A.Client)){this[_]=A.Client;if(!te){te=true;process.emitWarning("Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.",{code:"UNDICI-CLIENT-INTERCEPTOR-DEPRECATED"})}}else{this[_]=[se({maxRedirections:W})]}this[h]=o.parseOrigin(e);this[J]=P;this[M]=m!=null?m:1;this[L]=t||n.maxHeaderSize;this[R]=u==null?4e3:u;this[T]=f==null?6e5:f;this[v]=p==null?2e3:p;this[U]=this[R];this[B]=null;this[z]=ee!=null?ee:null;this[d]=0;this[k]=0;this[b]=`host: ${this[h].hostname}${this[h].port?`:${this[h].port}`:""}\r\n`;this[Y]=g!=null?g:3e5;this[H]=r!=null?r:3e5;this[G]=N==null?true:N;this[x]=W;this[V]=q;this[re]=null;this[Z]=Ae>-1?Ae:-1;this[j]=ie!=null?ie:100;this[X]=null;this[y]=[];this[S]=0;this[F]=0;this[$]=e=>resume(this,e);this[K]=e=>onError(this,e)}get pipelining(){return this[M]}set pipelining(e){this[M]=e;this[$](true)}get[p](){return this[y].length-this[F]}get[f](){return this[F]-this[S]}get[w](){return this[y].length-this[S]}get[m](){return!!this[X]&&!this[D]&&!this[X].destroyed}get[u](){return Boolean(this[X]?.busy(null)||this[w]>=(getPipelining(this)||1)||this[p]>0)}[I](e){connect(this);this.once("connect",e)}[q](e,A){const t=e.origin||this[h].origin;const r=new a(t,e,A);this[y].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[u]){this[k]=2}return this[k]<2}async[W](){return new Promise(e=>{if(this[w]){this[re]=e}else{e(null)}})}async[P](e){return new Promise(A=>{const t=this[y].splice(this[F]);for(let A=0;A{if(this[re]){this[re]();this[re]=null}A(null)};if(this[X]){this[X].destroy(e,callback);this[X]=null}else{queueMicrotask(callback)}this[$]()})}}const se=t(5092);function onError(e,A){if(e[f]===0&&A.code!=="UND_ERR_INFO"&&A.code!=="UND_ERR_SOCKET"){r(e[F]===e[S]);const t=e[y].splice(e[S]);for(let r=0;r{e[J]({host:A,hostname:t,protocol:n,port:a,servername:e[B],localAddress:e[z]},(e,A)=>{if(e){s(e)}else{r(A)}})});if(e.destroyed){o.destroy(s.on("error",noop),new Q);return}r(s);try{e[X]=s.alpnProtocol==="h2"?await Ae(e,s):await ee(e,s)}catch(e){s.destroy().on("error",noop);throw e}e[D]=false;s[O]=0;s[V]=e[V];s[C]=e;s[N]=null;if(i.connected.hasSubscribers){i.connected.publish({connectParams:{host:A,hostname:t,protocol:n,port:a,version:e[X]?.version,servername:e[B],localAddress:e[z]},connector:e[J],socket:s})}e.emit("connect",e[h],[e])}catch(s){if(e.destroyed){return}e[D]=false;if(i.connectError.hasSubscribers){i.connectError.publish({connectParams:{host:A,hostname:t,protocol:n,port:a,version:e[X]?.version,servername:e[B],localAddress:e[z]},connector:e[J],error:s})}if(s.code==="ERR_TLS_CERT_ALTNAME_INVALID"){r(e[f]===0);while(e[p]>0&&e[y][e[F]].servername===e[B]){const A=e[y][e[F]++];o.errorRequest(e,A,s)}}else{onError(e,s)}e.emit("connectionError",e[h],[e],s)}e[$]()}function emitDrain(e){e[k]=0;e.emit("drain",e[h],[e])}function resume(e,A){if(e[d]===2){return}e[d]=2;_resume(e,A);e[d]=0;if(e[S]>256){e[y].splice(0,e[S]);e[F]-=e[S];e[S]=0}}function _resume(e,A){while(true){if(e.destroyed){r(e[p]===0);return}if(e[re]&&!e[w]){e[re]();e[re]=null;return}if(e[X]){e[X].resume()}if(e[u]){e[k]=2}else if(e[k]===2){if(A){e[k]=1;queueMicrotask(()=>emitDrain(e))}else{emitDrain(e)}continue}if(e[p]===0){return}if(e[f]>=(getPipelining(e)||1)){return}const t=e[y][e[F]];if(e[h].protocol==="https:"&&e[B]!==t.servername){if(e[f]>0){return}e[B]=t.servername;e[X]?.destroy(new g("servername changed"),()=>{e[X]=null;resume(e)})}if(e[D]){return}if(!e[X]){connect(e);return}if(e[X].destroyed){return}if(e[X].busy(t)){return}if(!t.aborted&&e[X].write(t)){e[F]++}else{e[y].splice(e[F],1)}}}e.exports=Client},1841:(e,A,t)=>{const r=t(4573);const s=t(883);const{ClientDestroyedError:n,ClientClosedError:o,InvalidArgumentError:i}=t(8707);const{kDestroy:a,kClose:c,kClosed:l,kDestroyed:g,kDispatch:Q,kInterceptors:E}=t(6443);const h=Symbol("onDestroyed");const B=Symbol("onClosed");const C=Symbol("Intercepted Dispatch");const u=Symbol("webSocketOptions");const I=Symbol("eventSourceOptions");class DispatcherBase extends s{constructor(e){super();this[g]=false;this[h]=null;this[l]=false;this[B]=[];this[u]=e?.webSocket??{};this[I]=e?.eventSource??{}}get webSocketOptions(){return{maxFragments:this[u].maxFragments??131072,maxPayloadSize:this[u].maxPayloadSize??128*1024*1024}}get eventSourceOptions(){return{maxEventSize:this[I].maxEventSize??r.kStringMaxLength}}get destroyed(){return this[g]}get closed(){return this[l]}get interceptors(){return this[E]}set interceptors(e){if(e){for(let A=e.length-1;A>=0;A--){const e=this[E][A];if(typeof e!=="function"){throw new i("interceptor must be an function")}}}this[E]=e}close(e){if(e===undefined){return new Promise((e,A)=>{this.close((t,r)=>t?A(t):e(r))})}if(typeof e!=="function"){throw new i("invalid callback")}if(this[g]){queueMicrotask(()=>e(new n,null));return}if(this[l]){if(this[B]){this[B].push(e)}else{queueMicrotask(()=>e(null,null))}return}this[l]=true;this[B].push(e);const onClosed=()=>{const e=this[B];this[B]=null;for(let A=0;Athis.destroy()).then(()=>{queueMicrotask(onClosed)})}destroy(e,A){if(typeof e==="function"){A=e;e=null}if(A===undefined){return new Promise((A,t)=>{this.destroy(e,(e,r)=>e?t(e):A(r))})}if(typeof A!=="function"){throw new i("invalid callback")}if(this[g]){if(this[h]){this[h].push(A)}else{queueMicrotask(()=>A(null,null))}return}if(!e){e=new n}this[g]=true;this[h]=this[h]||[];this[h].push(A);const onDestroyed=()=>{const e=this[h];this[h]=null;for(let A=0;A{queueMicrotask(onDestroyed)})}[C](e,A){if(!this[E]||this[E].length===0){this[C]=this[Q];return this[Q](e,A)}let t=this[Q].bind(this);for(let e=this[E].length-1;e>=0;e--){t=this[E][e](t)}this[C]=t;return t(e,A)}dispatch(e,A){if(!A||typeof A!=="object"){throw new i("handler must be an object")}try{if(!e||typeof e!=="object"){throw new i("opts must be an object.")}if(this[g]||this[h]){throw new n}if(this[l]){throw new o}return this[C](e,A)}catch(e){if(typeof A.onError!=="function"){throw new i("invalid onError method")}A.onError(e);return false}}}e.exports=DispatcherBase},883:(e,A,t)=>{const r=t(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 A=Array.isArray(e[0])?e[0]:e;let t=this.dispatch.bind(this);for(const e of A){if(e==null){continue}if(typeof e!=="function"){throw new TypeError(`invalid interceptor, expected function received ${typeof e}`)}t=e(t);if(t==null||typeof t!=="function"||t.length!==2){throw new TypeError("invalid interceptor")}}return new ComposedDispatcher(this,t)}}class ComposedDispatcher extends Dispatcher{#t=null;#r=null;constructor(e,A){super();this.#t=e;this.#r=A}dispatch(...e){this.#r(...e)}close(...e){return this.#t.close(...e)}destroy(...e){return this.#t.destroy(...e)}}e.exports=Dispatcher},3137:(e,A,t)=>{const r=t(1841);const{kClose:s,kDestroy:n,kClosed:o,kDestroyed:i,kDispatch:a,kNoProxyAgent:c,kHttpProxyAgent:l,kHttpsProxyAgent:g}=t(6443);const Q=t(6672);const E=t(7405);const h={"http:":80,"https:":443};let B=false;class EnvHttpProxyAgent extends r{#s=null;#n=null;#o=null;constructor(e={}){super();this.#o=e;if(!B){B=true;process.emitWarning("EnvHttpProxyAgent is experimental, expect them to change at any time.",{code:"UNDICI-EHPA"})}const{httpProxy:A,httpsProxy:t,noProxy:r,...s}=e;this[c]=new E(s);const n=A??process.env.http_proxy??process.env.HTTP_PROXY;if(n){this[l]=new Q({...s,uri:n})}else{this[l]=this[c]}const o=t??process.env.https_proxy??process.env.HTTPS_PROXY;if(o){this[g]=new Q({...s,uri:o})}else{this[g]=this[l]}this.#i()}[a](e,A){const t=new URL(e.origin);const r=this.#a(t);return r.dispatch(e,A)}async[s](){await this[c].close();if(!this[l][o]){await this[l].close()}if(!this[g][o]){await this[g].close()}}async[n](e){await this[c].destroy(e);if(!this[l][i]){await this[l].destroy(e)}if(!this[g][i]){await this[g].destroy(e)}}#a(e){let{protocol:A,host:t,port:r}=e;t=t.replace(/:\d*$/,"").toLowerCase();r=Number.parseInt(r,10)||h[A]||0;if(!this.#c(t,r)){return this[c]}if(A==="https:"){return this[g]}return this[l]}#c(e,A){if(this.#l){this.#i()}if(this.#n.length===0){return true}if(this.#s==="*"){return false}for(let t=0;t{const A=2048;const t=A-1;class FixedCircularBuffer{constructor(){this.bottom=0;this.top=0;this.list=new Array(A);this.next=null}isEmpty(){return this.top===this.bottom}isFull(){return(this.top+1&t)===this.bottom}push(e){this.list[this.top]=e;this.top=this.top+1&t}shift(){const e=this.list[this.bottom];if(e===undefined)return null;this.list[this.bottom]=undefined;this.bottom=this.bottom+1&t;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 A=e.shift();if(e.isEmpty()&&e.next!==null){this.tail=e.next}return A}}},2128:(e,A,t)=>{const r=t(1841);const s=t(4660);const{kConnected:n,kSize:o,kRunning:i,kPending:a,kQueued:c,kBusy:l,kFree:g,kUrl:Q,kClose:E,kDestroy:h,kDispatch:B}=t(6443);const C=t(3246);const u=Symbol("clients");const I=Symbol("needDrain");const d=Symbol("queue");const f=Symbol("closed resolve");const p=Symbol("onDrain");const w=Symbol("onConnect");const y=Symbol("onDisconnect");const m=Symbol("onConnectionError");const D=Symbol("get dispatcher");const k=Symbol("add client");const R=Symbol("remove client");const b=Symbol("stats");class PoolBase extends r{constructor(e){super(e);this[d]=new s;this[u]=[];this[c]=0;const A=this;this[p]=function onDrain(e,t){const r=A[d];let s=false;while(!s){const e=r.shift();if(!e){break}A[c]--;s=!this.dispatch(e.opts,e.handler)}this[I]=s;if(!this[I]&&A[I]){A[I]=false;A.emit("drain",e,[A,...t])}if(A[f]&&r.isEmpty()){Promise.all(A[u].map(e=>e.close())).then(A[f])}};this[w]=(e,t)=>{A.emit("connect",e,[A,...t])};this[y]=(e,t,r)=>{A.emit("disconnect",e,[A,...t],r)};this[m]=(e,t,r)=>{A.emit("connectionError",e,[A,...t],r)};this[b]=new C(this)}get[l](){return this[I]}get[n](){return this[u].filter(e=>e[n]).length}get[g](){return this[u].filter(e=>e[n]&&!e[I]).length}get[a](){let e=this[c];for(const{[a]:A}of this[u]){e+=A}return e}get[i](){let e=0;for(const{[i]:A}of this[u]){e+=A}return e}get[o](){let e=this[c];for(const{[o]:A}of this[u]){e+=A}return e}get stats(){return this[b]}async[E](){if(this[d].isEmpty()){await Promise.all(this[u].map(e=>e.close()))}else{await new Promise(e=>{this[f]=e})}}async[h](e){while(true){const A=this[d].shift();if(!A){break}A.handler.onError(e)}await Promise.all(this[u].map(A=>A.destroy(e)))}[B](e,A){const t=this[D]();if(!t){this[I]=true;this[d].push({opts:e,handler:A});this[c]++}else if(!t.dispatch(e,A)){t[I]=true;this[I]=!this[D]()}return!this[I]}[k](e){e.on("drain",this[p]).on("connect",this[w]).on("disconnect",this[y]).on("connectionError",this[m]);this[u].push(e);if(this[I]){queueMicrotask(()=>{if(this[I]){this[p](e[Q],[this,e])}})}return this}[R](e){e.close(()=>{const A=this[u].indexOf(e);if(A!==-1){this[u].splice(A,1)}});this[I]=this[u].some(e=>!e[I]&&e.closed!==true&&e.destroyed!==true)}}e.exports={PoolBase:PoolBase,kClients:u,kNeedDrain:I,kAddClient:k,kRemoveClient:R,kGetDispatcher:D}},3246:(e,A,t)=>{const{kFree:r,kConnected:s,kPending:n,kQueued:o,kRunning:i,kSize:a}=t(6443);const c=Symbol("pool");class PoolStats{constructor(e){this[c]=e}get connected(){return this[c][s]}get free(){return this[c][r]}get pending(){return this[c][n]}get queued(){return this[c][o]}get running(){return this[c][i]}get size(){return this[c][a]}}e.exports=PoolStats},628:(e,A,t)=>{const{PoolBase:r,kClients:s,kNeedDrain:n,kAddClient:o,kGetDispatcher:i}=t(2128);const a=t(3701);const{InvalidArgumentError:c}=t(8707);const l=t(3440);const{kUrl:g,kInterceptors:Q}=t(6443);const E=t(9136);const h=Symbol("options");const B=Symbol("connections");const C=Symbol("factory");function defaultFactory(e,A){return new a(e,A)}class Pool extends r{constructor(e,{connections:A,factory:t=defaultFactory,connect:r,connectTimeout:n,tls:o,maxCachedSessions:i,socketPath:a,autoSelectFamily:u,autoSelectFamilyAttemptTimeout:I,allowH2:d,...f}={}){if(A!=null&&(!Number.isFinite(A)||A<0)){throw new c("invalid connections")}if(typeof t!=="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=E({...o,maxCachedSessions:i,allowH2:d,socketPath:a,timeout:n,...u?{autoSelectFamily:u,autoSelectFamilyAttemptTimeout:I}:undefined,...r})}super(f);this[Q]=f.interceptors?.Pool&&Array.isArray(f.interceptors.Pool)?f.interceptors.Pool:[];this[B]=A||null;this[g]=l.parseOrigin(e);this[h]={...l.deepClone(f),connect:r,allowH2:d};this[h].interceptors=f.interceptors?{...f.interceptors}:undefined;this[C]=t;this.on("connectionError",(e,A,t)=>{for(const e of A){const A=this[s].indexOf(e);if(A!==-1){this[s].splice(A,1)}}})}[i](){for(const e of this[s]){if(!e[n]){return e}}if(!this[B]||this[s].length{const{kProxy:r,kClose:s,kDestroy:n,kDispatch:o,kInterceptors:i}=t(6443);const{URL:a}=t(3136);const c=t(7405);const l=t(628);const g=t(1841);const{InvalidArgumentError:Q,RequestAbortedError:E,SecureProxyConnectionError:h}=t(8707);const B=t(9136);const C=t(3701);const u=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 w=Symbol("connect endpoint function");const y=Symbol("tunnel proxy");function defaultProtocolPort(e){return e==="https:"?443:80}function defaultFactory(e,A){return new l(e,A)}const noop=()=>{};function defaultAgentFactory(e,A){if(A.connections===1){return new C(e,A)}return new l(e,A)}class Http1ProxyWrapper extends g{#Q;constructor(e,{headers:A={},connect:t,factory:r}){super();if(!e){throw new Q("Proxy URL is mandatory")}this[d]=A;if(r){this.#Q=r(e,{connect:t})}else{this.#Q=new C(e,{connect:t})}}[o](e,A){const t=A.onHeaders;A.onHeaders=function(e,r,s){if(e===407){if(typeof A.onError==="function"){A.onError(new Q("Proxy Authentication Required (407)"))}return}if(t)t.call(this,e,r,s)};const{origin:r,path:s="/",headers:n={}}=e;e.path=r+s;if(!("host"in n)&&!("Host"in n)){const{host:e}=new a(r);n.host=e}e.headers={...this[d],...n};return this.#Q[o](e,A)}async[s](){return this.#Q.close()}async[n](e){return this.#Q.destroy(e)}}class ProxyAgent extends g{constructor(e){super();if(!e||typeof e==="object"&&!(e instanceof a)&&!e.uri){throw new Q("Proxy uri is mandatory")}const{clientFactory:A=defaultFactory}=e;if(typeof A!=="function"){throw new Q("Proxy opts.clientFactory must be a function.")}const{proxyTunnel:t=true}=e;const s=this.#E(e);const{href:n,origin:o,port:l,protocol:g,username:C,password:m,hostname:D}=s;this[r]={uri:n,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[y]=t;if(e.auth&&e.token){throw new Q("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(C&&m){this[d]["proxy-authorization"]=`Basic ${Buffer.from(`${decodeURIComponent(C)}:${decodeURIComponent(m)}`).toString("base64")}`}const k=B({...e.proxyTls});this[w]=B({...e.requestTls});const R=e.factory||defaultAgentFactory;const factory=(e,A)=>{const{protocol:t}=new a(e);if(!this[y]&&t==="http:"&&this[r].protocol==="http:"){return new Http1ProxyWrapper(this[r].uri,{headers:this[d],connect:k,factory:R})}return R(e,A)};this[I]=A(s,{connect:k});this[u]=new c({...e,factory:factory,connect:async(e,A)=>{let t=e.host;if(!e.port){t+=`:${defaultProtocolPort(e.protocol)}`}try{const{socket:r,statusCode:s}=await this[I].connect({origin:o,port:l,path:t,signal:e.signal,headers:{...this[d],host:e.host},servername:this[p]?.servername||D});if(s!==200){r.on("error",noop).destroy();A(new E(`Proxy response (${s}) !== 200 when HTTP Tunneling`))}if(e.protocol!=="https:"){A(null,r);return}let n;if(this[f]){n=this[f].servername}else{n=e.servername}this[w]({...e,servername:n,httpSocket:r},A)}catch(e){if(e.code==="ERR_TLS_CERT_ALTNAME_INVALID"){A(new h(e))}else{A(e)}}}})}dispatch(e,A){const t=buildHeaders(e.headers);throwIfProxyAuthIsSent(t);if(t&&!("host"in t)&&!("Host"in t)){const{host:A}=new a(e.origin);t.host=A}return this[u].dispatch({...e,headers:t},A)}#E(e){if(typeof e==="string"){return new a(e)}else if(e instanceof a){return e}else{return new a(e.uri)}}async[s](){await this[u].close();await this[I].close()}async[n](){await this[u].destroy();await this[I].destroy()}}function buildHeaders(e){if(Array.isArray(e)){const A={};for(let t=0;te.toLowerCase()==="proxy-authorization");if(A){throw new Q("Proxy-Authorization should be sent in ProxyAgent constructor")}}e.exports=ProxyAgent},50:(e,A,t)=>{const r=t(883);const s=t(7816);class RetryAgent extends r{#h=null;#B=null;constructor(e,A={}){super(A);this.#h=e;this.#B=A}dispatch(e,A){const t=new s({...e,retryOptions:this.#B},{dispatch:this.#h.dispatch.bind(this.#h),handler:A});return this.#h.dispatch(e,t)}close(){return this.#h.close()}destroy(){return this.#h.destroy()}}e.exports=RetryAgent},2581:(e,A,t)=>{const r=Symbol.for("undici.globalDispatcher.1");const{InvalidArgumentError:s}=t(8707);const n=t(7405);if(getGlobalDispatcher()===undefined){setGlobalDispatcher(new n)}function setGlobalDispatcher(e){if(!e||typeof e.dispatch!=="function"){throw new s("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=>{e.exports=class DecoratorHandler{#C;constructor(e){if(typeof e!=="object"||e===null){throw new TypeError("handler must be an object")}this.#C=e}onConnect(...e){return this.#C.onConnect?.(...e)}onError(...e){return this.#C.onError?.(...e)}onUpgrade(...e){return this.#C.onUpgrade?.(...e)}onResponseStarted(...e){return this.#C.onResponseStarted?.(...e)}onHeaders(...e){return this.#C.onHeaders?.(...e)}onData(...e){return this.#C.onData?.(...e)}onComplete(...e){return this.#C.onComplete?.(...e)}onBodySent(...e){return this.#C.onBodySent?.(...e)}}},8754:(e,A,t)=>{const r=t(3440);const{kBodyUsed:s}=t(6443);const n=t(4589);const{InvalidArgumentError:o}=t(8707);const i=t(8474);const a=[300,301,302,303,307,308];const c=Symbol("body");class BodyAsyncIterable{constructor(e){this[c]=e;this[s]=false}async*[Symbol.asyncIterator](){n(!this[s],"disturbed");this[s]=true;yield*this[c]}}class RedirectHandler{constructor(e,A,t,a){if(A!=null&&(!Number.isInteger(A)||A<0)){throw new o("maxRedirections must be a positive number")}r.validateHandler(a,t.method,t.upgrade);this.dispatch=e;this.location=null;this.abort=null;this.opts={...t,maxRedirections:0};this.maxRedirections=A;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(){n(false)})}if(typeof this.opts.body.readableDidRead!=="boolean"){this.opts.body[s]=false;i.prototype.on.call(this.opts.body,"data",function(){this[s]=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,A,t){this.handler.onUpgrade(e,A,t)}onError(e){this.handler.onError(e)}onHeaders(e,A,t,s){this.location=this.history.length>=this.maxRedirections||r.isDisturbed(this.opts.body)?null:parseLocation(e,A);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,A,t,s)}const{origin:n,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!==n);this.opts.path=a;this.opts.origin=n;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,A){if(a.indexOf(e)===-1){return null}for(let e=0;e{const r=t(4589);const{kRetryHandlerDefaultRetry:s}=t(6443);const{RequestRetryError:n}=t(8707);const{isDisturbed:o,parseHeaders:i,parseRangeHeader:a,wrapRequestBody:c}=t(3440);function calculateRetryAfterHeader(e){const A=Date.now();return new Date(e).getTime()-A}function validatePartialResponseContentLength(e,A,t,r){const s=e["content-length"];if(s==null){return null}if(!Number.isFinite(A.start)||!Number.isFinite(A.end)){return null}const o=Number(s);const i=A.end-A.start+1;if(!Number.isFinite(o)||o!==i){return new n("Content-Length mismatch",t,{headers:e,data:{count:r}})}return null}class RetryHandler{constructor(e,A){const{retryOptions:t,...r}=e;const{retry:n,maxRetries:o,maxTimeout:i,minTimeout:a,timeoutFactor:l,methods:g,errorCodes:Q,retryAfter:E,statusCodes:h}=t??{};this.dispatch=A.dispatch;this.handler=A.handler;this.opts={...r,body:c(e.body)};this.abort=null;this.aborted=false;this.retryOpts={retry:n??RetryHandler[s],retryAfter:E??true,maxTimeout:i??30*1e3,minTimeout:a??500,timeoutFactor:l??2,maxRetries:o??5,methods:g??["GET","HEAD","OPTIONS","PUT","DELETE","TRACE"],statusCodes:h??[500,502,503,504,429],errorCodes:Q??["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.headersSent=false;this.handler.onConnect(e=>{this.aborted=true;if(this.abort){this.abort(e)}else{this.reason=e}})}checkpointResponseEnd(e,A){if(this.end==null&&this.opts.method!=="HEAD"){const A=e["content-length"];this.end=A!=null?Number(A)-1:null;r(this.end==null||Number.isFinite(this.end),"invalid content-length")}this.resume=this.end!=null?A:null}onRequestSent(){if(this.handler.onRequestSent){this.handler.onRequestSent()}}onUpgrade(e,A,t){if(this.handler.onUpgrade){this.handler.onUpgrade(e,A,t)}}onConnect(e){if(this.aborted){e(this.reason)}else{this.abort=e}}onBodySent(e){if(this.handler.onBodySent)return this.handler.onBodySent(e)}static[s](e,{state:A,opts:t},r){const{statusCode:s,code:n,headers:o}=e;const{method:i,retryOptions:a}=t;const{maxRetries:c,minTimeout:l,maxTimeout:g,timeoutFactor:Q,statusCodes:E,errorCodes:h,methods:B}=a;const{counter:C}=A;if(n&&n!=="UND_ERR_REQ_RETRY"&&!h.includes(n)){r(e);return}if(Array.isArray(B)&&!B.includes(i)){r(e);return}if(s!=null&&Array.isArray(E)&&!E.includes(s)){r(e);return}if(C>c){r(e);return}let u=o?.["retry-after"];if(u){u=Number(u);u=Number.isNaN(u)?calculateRetryAfterHeader(u):u*1e3}const I=u>0?Math.min(u,g):Math.min(l*Q**(C-1),g);setTimeout(()=>r(null),I)}onHeaders(e,A,t,s){const o=i(A);this.retryCount+=1;if(e>=300){if(!this.headersSent&&this.retryOpts.statusCodes.includes(e)===false){this.headersSent=true;this.checkpointResponseEnd(o,t);return this.handler.onHeaders(e,A,t,s)}else{this.abort(new n("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 n("server does not support the range header and the payload was partially consumed",e,{headers:o,data:{count:this.retryCount}}));return false}const A=a(o["content-range"]);if(!A){this.abort(new n("Content-Range mismatch",e,{headers:o,data:{count:this.retryCount}}));return false}if(this.etag!=null&&this.etag!==o.etag){this.abort(new n("ETag mismatch",e,{headers:o,data:{count:this.retryCount}}));return false}const r=validatePartialResponseContentLength(o,A,e,this.retryCount);if(r!=null){this.abort(r);return false}const{start:s,size:i,end:c=i-1}=A;if(this.start!==s||this.end!=null&&this.end!==c){this.abort(new n("Content-Range mismatch",e,{headers:o,data:{count:this.retryCount}}));return false}this.resume=t;return true}if(this.end==null){if(e===206){const n=a(o["content-range"]);if(n==null){this.headersSent=true;return this.handler.onHeaders(e,A,t,s)}const i=validatePartialResponseContentLength(o,n,e,this.retryCount);if(i!=null){this.abort(i);return false}const{start:c,size:l,end:g=l-1}=n;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=t;this.headersSent=true;this.etag=o.etag!=null?o.etag:null;if(this.etag!=null&&this.etag.startsWith("W/")){this.etag=null}return this.handler.onHeaders(e,A,t,s)}const c=new n("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)||this.headersSent&&this.resume==null){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,A,t)=>{const{isIP:r}=t(7030);const{lookup:s}=t(610);const n=t(8155);const{InvalidArgumentError:o,InformationalError:i}=t(8707);const a=Math.pow(2,31)-1;class DNSInstance{#u=0;#I=0;#d=new Map;dualStack=true;affinity=null;lookup=null;pick=null;constructor(e){this.#u=e.maxTTL;this.#I=e.maxItems;this.dualStack=e.dualStack;this.affinity=e.affinity;this.lookup=e.lookup??this.#f;this.pick=e.pick??this.#p}get full(){return this.#d.size===this.#I}runLookup(e,A,t){const r=this.#d.get(e.hostname);if(r==null&&this.full){t(null,e.origin);return}const s={affinity:this.affinity,dualStack:this.dualStack,lookup:this.lookup,pick:this.pick,...A.dns,maxTTL:this.#u,maxItems:this.#I};if(r==null){this.lookup(e,s,(A,r)=>{if(A||r==null||r.length===0){t(A??new i("No DNS entries found"));return}this.setRecords(e,r);const n=this.#d.get(e.hostname);const o=this.pick(e,n,s.affinity);let a;if(typeof o.port==="number"){a=`:${o.port}`}else if(e.port!==""){a=`:${e.port}`}else{a=""}t(null,`${e.protocol}//${o.family===6?`[${o.address}]`:o.address}${a}`)})}else{const n=this.pick(e,r,s.affinity);if(n==null){this.#d.delete(e.hostname);this.runLookup(e,A,t);return}let o;if(typeof n.port==="number"){o=`:${n.port}`}else if(e.port!==""){o=`:${e.port}`}else{o=""}t(null,`${e.protocol}//${n.family===6?`[${n.address}]`:n.address}${o}`)}}#f(e,A,t){s(e.hostname,{all:true,family:this.dualStack===false?this.affinity:0,order:"ipv4first"},(e,A)=>{if(e){return t(e)}const r=new Map;for(const e of A){r.set(`${e.address}:${e.family}`,e)}t(null,r.values())})}#p(e,A,t){let r=null;const{records:s,offset:n}=A;let o;if(this.dualStack){if(t==null){if(n==null||n===a){A.offset=0;t=4}else{A.offset++;t=(A.offset&1)===1?6:4}}if(s[t]!=null&&s[t].ips.length>0){o=s[t]}else{o=s[t===4?6:4]}}else{o=s[t]}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,A,t)}return r}setRecords(e,A){const t=Date.now();const r={records:{4:null,6:null}};for(const e of A){e.timestamp=t;if(typeof e.ttl==="number"){e.ttl=Math.min(e.ttl,this.#u)}else{e.ttl=this.#u}const A=r.records[e.family]??{ips:[]};A.ips.push(e);r.records[e.family]=A}this.#d.set(e.hostname,r)}getHandler(e,A){return new DNSDispatchHandler(this,e,A)}}class DNSDispatchHandler extends n{#w=null;#o=null;#r=null;#C=null;#y=null;constructor(e,{origin:A,handler:t,dispatch:r},s){super(t);this.#y=A;this.#C=t;this.#o={...s};this.#w=e;this.#r=r}onError(e){switch(e.code){case"ETIMEDOUT":case"ECONNREFUSED":{if(this.#w.dualStack){this.#w.runLookup(this.#y,this.#o,(e,A)=>{if(e){return this.#C.onError(e)}const t={...this.#o,origin:A};this.#r(t,this)});return}this.#C.onError(e);return}case"ENOTFOUND":this.#w.deleteRecord(this.#y);default:this.#C.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 A=e?.dualStack??true;let t;if(A){t=e?.affinity??null}else{t=e?.affinity??4}const s={maxTTL:e?.maxTTL??1e4,lookup:e?.lookup??null,pick:e?.pick??null,dualStack:A,affinity:t,maxItems:e?.maxItems??Infinity};const n=new DNSInstance(s);return e=>function dnsInterceptor(A,t){const s=A.origin.constructor===URL?A.origin:new URL(A.origin);if(r(s.hostname)!==0){return e(A,t)}n.runLookup(s,A,(r,o)=>{if(r){return t.onError(r)}let i=null;i={...A,servername:s.hostname,origin:o,headers:{host:s.hostname,...A.headers}};e(i,n.getHandler({origin:s,dispatch:e,handler:t},A))});return true}}},8060:(e,A,t)=>{const r=t(3440);const{InvalidArgumentError:s,RequestAbortedError:n}=t(8707);const o=t(8155);class DumpHandler extends o{#m=1024*1024;#D=null;#k=false;#R=false;#b=0;#F=null;#C=null;constructor({maxSize:e},A){super(A);if(e!=null&&(!Number.isFinite(e)||e<1)){throw new s("maxSize must be a number greater than 0")}this.#m=e??this.#m;this.#C=A}onConnect(e){this.#D=e;this.#C.onConnect(this.#S.bind(this))}#S(e){this.#R=true;this.#F=e}onHeaders(e,A,t,s){const o=r.parseHeaders(A);const i=o["content-length"];if(i!=null&&i>this.#m){throw new n(`Response size (${i}) larger than maxSize (${this.#m})`)}if(this.#R){return true}return this.#C.onHeaders(e,A,t,s)}onError(e){if(this.#k){return}e=this.#F??e;this.#C.onError(e)}onData(e){this.#b=this.#b+e.length;if(this.#b>=this.#m){this.#k=true;if(this.#R){this.#C.onError(this.#F)}else{this.#C.onComplete([])}}return true}onComplete(e){if(this.#k){return}if(this.#R){this.#C.onError(this.reason);return}this.#C.onComplete(e)}}function createDumpInterceptor({maxSize:e}={maxSize:1024*1024}){return A=>function Intercept(t,r){const{dumpMaxSize:s=e}=t;const n=new DumpHandler({maxSize:s},r);return A(t,n)}}e.exports=createDumpInterceptor},5092:(e,A,t)=>{const r=t(8754);function createRedirectInterceptor({maxRedirections:e}){return A=>function Intercept(t,s){const{maxRedirections:n=e}=t;if(!n){return A(t,s)}const o=new r(A,n,t,s);t={...t,maxRedirections:0};return A(t,o)}}e.exports=createRedirectInterceptor},1514:(e,A,t)=>{const r=t(8754);e.exports=e=>{const A=e?.maxRedirections;return e=>function redirectInterceptor(t,s){const{maxRedirections:n=A,...o}=t;if(!n){return e(t,s)}const i=new r(e,n,t,s);return e(o,i)}}},2026:(e,A,t)=>{const r=t(7816);e.exports=e=>A=>function retryInterceptor(t,s){return A(t,new r({...t,retryOptions:{...e,...t.retryOptions}},{handler:s,dispatch:A}))}},2824:(e,A,t)=>{Object.defineProperty(A,"__esModule",{value:true});A.SPECIAL_HEADERS=A.HEADER_STATE=A.MINOR=A.MAJOR=A.CONNECTION_TOKEN_CHARS=A.HEADER_CHARS=A.TOKEN=A.STRICT_TOKEN=A.HEX=A.URL_CHAR=A.STRICT_URL_CHAR=A.USERINFO_CHARS=A.MARK=A.ALPHANUM=A.NUM=A.HEX_MAP=A.NUM_MAP=A.ALPHA=A.FINISH=A.H_METHOD_MAP=A.METHOD_MAP=A.METHODS_RTSP=A.METHODS_ICE=A.METHODS_HTTP=A.METHODS=A.LENIENT_FLAGS=A.FLAGS=A.TYPE=A.ERROR=void 0;const r=t(172);var s;(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"})(s=A.ERROR||(A.ERROR={}));var n;(function(e){e[e["BOTH"]=0]="BOTH";e[e["REQUEST"]=1]="REQUEST";e[e["RESPONSE"]=2]="RESPONSE"})(n=A.TYPE||(A.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=A.FLAGS||(A.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=A.LENIENT_FLAGS||(A.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=A.METHODS||(A.METHODS={}));A.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];A.METHODS_ICE=[a.SOURCE];A.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];A.METHOD_MAP=r.enumToMap(a);A.H_METHOD_MAP={};Object.keys(A.METHOD_MAP).forEach(e=>{if(/^H/.test(e)){A.H_METHOD_MAP[e]=A.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=A.FINISH||(A.FINISH={}));A.ALPHA=[];for(let e="A".charCodeAt(0);e<="Z".charCodeAt(0);e++){A.ALPHA.push(String.fromCharCode(e));A.ALPHA.push(String.fromCharCode(e+32))}A.NUM_MAP={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9};A.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};A.NUM=["0","1","2","3","4","5","6","7","8","9"];A.ALPHANUM=A.ALPHA.concat(A.NUM);A.MARK=["-","_",".","!","~","*","'","(",")"];A.USERINFO_CHARS=A.ALPHANUM.concat(A.MARK).concat(["%",";",":","&","=","+","$",","]);A.STRICT_URL_CHAR=["!",'"',"$","%","&","'","(",")","*","+",",","-",".","/",":",";","<","=",">","@","[","\\","]","^","_","`","{","|","}","~"].concat(A.ALPHANUM);A.URL_CHAR=A.STRICT_URL_CHAR.concat(["\t","\f"]);for(let e=128;e<=255;e++){A.URL_CHAR.push(e)}A.HEX=A.NUM.concat(["a","b","c","d","e","f","A","B","C","D","E","F"]);A.STRICT_TOKEN=["!","#","$","%","&","'","*","+","-",".","^","_","`","|","~"].concat(A.ALPHANUM);A.TOKEN=A.STRICT_TOKEN.concat([" "]);A.HEADER_CHARS=["\t"];for(let e=32;e<=255;e++){if(e!==127){A.HEADER_CHARS.push(e)}}A.CONNECTION_TOKEN_CHARS=A.HEADER_CHARS.filter(e=>e!==44);A.MAJOR=A.NUM_MAP;A.MINOR=A.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=A.HEADER_STATE||(A.HEADER_STATE={}));A.SPECIAL_HEADERS={connection:l.CONNECTION,"content-length":l.CONTENT_LENGTH,"proxy-connection":l.CONNECTION,"transfer-encoding":l.TRANSFER_ENCODING,upgrade:l.UPGRADE}},3870:(e,A,t)=>{const{Buffer:r}=t(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,A,t)=>{const{Buffer:r}=t(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+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEVDF8LQZIBIQMgASAERg2aAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGhzwBqLQAARw1dIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAybAgsgAkEANgIAIAZBAWohAUEeDF4LIAEgBEYEQEGTASEDDJoCCyABLQAAQcwARw1bIAFBAWohAUEKDF0LIAEgBEYEQEGUASEDDJkCCwJAAkAgAS0AAEHBAGsODwBcXFxcXFxcXFxcXFxcAVwLIAFBAWohAUH+ACEDDIACCyABQQFqIQFB/wAhAwz/AQsgASAERgRAQZUBIQMMmAILAkACQCABLQAAQcEAaw4DAFsBWwsgAUEBaiEBQf0AIQMM/wELIAFBAWohAUGAASEDDP4BC0GWASEDIAEgBEYNlgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBp88Aai0AAEcNWSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlwILIAJBADYCACAGQQFqIQFBCwxaCyABIARGBEBBlwEhAwyWAgsCQAJAAkACQCABLQAAQS1rDiMAW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1sBW1tbW1sCW1tbA1sLIAFBAWohAUH7ACEDDP8BCyABQQFqIQFB/AAhAwz+AQsgAUEBaiEBQYEBIQMM/QELIAFBAWohAUGCASEDDPwBC0GYASEDIAEgBEYNlAIgAigCACIAIAQgAWtqIQUgASAAa0EEaiEGAkADQCABLQAAIABBqc8Aai0AAEcNVyAAQQRGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlQILIAJBADYCACAGQQFqIQFBGQxYC0GZASEDIAEgBEYNkwIgAigCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBrs8Aai0AAEcNViAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlAILIAJBADYCACAGQQFqIQFBBgxXC0GaASEDIAEgBEYNkgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBtM8Aai0AAEcNVSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkwILIAJBADYCACAGQQFqIQFBHAxWC0GbASEDIAEgBEYNkQIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBts8Aai0AAEcNVCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkgILIAJBADYCACAGQQFqIQFBJwxVCyABIARGBEBBnAEhAwyRAgsCQAJAIAEtAABB1ABrDgIAAVQLIAFBAWohAUGGASEDDPgBCyABQQFqIQFBhwEhAwz3AQtBnQEhAyABIARGDY8CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjPAGotAABHDVIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADJACCyACQQA2AgAgBkEBaiEBQSYMUwtBngEhAyABIARGDY4CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbrPAGotAABHDVEgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI8CCyACQQA2AgAgBkEBaiEBQQMMUgtBnwEhAyABIARGDY0CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDVAgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI4CCyACQQA2AgAgBkEBaiEBQQwMUQtBoAEhAyABIARGDYwCIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQbzPAGotAABHDU8gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI0CCyACQQA2AgAgBkEBaiEBQQ0MUAsgASAERgRAQaEBIQMMjAILAkACQCABLQAAQcYAaw4LAE9PT09PT09PTwFPCyABQQFqIQFBiwEhAwzzAQsgAUEBaiEBQYwBIQMM8gELIAEgBEYEQEGiASEDDIsCCyABLQAAQdAARw1MIAFBAWohAQxGCyABIARGBEBBowEhAwyKAgsCQAJAIAEtAABByQBrDgcBTU1NTU0ATQsgAUEBaiEBQY4BIQMM8QELIAFBAWohAUEiDE0LQaQBIQMgASAERg2IAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHAzwBqLQAARw1LIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyJAgsgAkEANgIAIAZBAWohAUEdDEwLIAEgBEYEQEGlASEDDIgCCwJAAkAgAS0AAEHSAGsOAwBLAUsLIAFBAWohAUGQASEDDO8BCyABQQFqIQFBBAxLCyABIARGBEBBpgEhAwyHAgsCQAJAAkACQAJAIAEtAABBwQBrDhUATU1NTU1NTU1NTQFNTQJNTQNNTQRNCyABQQFqIQFBiAEhAwzxAQsgAUEBaiEBQYkBIQMM8AELIAFBAWohAUGKASEDDO8BCyABQQFqIQFBjwEhAwzuAQsgAUEBaiEBQZEBIQMM7QELQacBIQMgASAERg2FAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHtzwBqLQAARw1IIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyGAgsgAkEANgIAIAZBAWohAUERDEkLQagBIQMgASAERg2EAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHCzwBqLQAARw1HIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyFAgsgAkEANgIAIAZBAWohAUEsDEgLQakBIQMgASAERg2DAiACKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHFzwBqLQAARw1GIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyEAgsgAkEANgIAIAZBAWohAUErDEcLQaoBIQMgASAERg2CAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHKzwBqLQAARw1FIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyDAgsgAkEANgIAIAZBAWohAUEUDEYLIAEgBEYEQEGrASEDDIICCwJAAkACQAJAIAEtAABBwgBrDg8AAQJHR0dHR0dHR0dHRwNHCyABQQFqIQFBkwEhAwzrAQsgAUEBaiEBQZQBIQMM6gELIAFBAWohAUGVASEDDOkBCyABQQFqIQFBlgEhAwzoAQsgASAERgRAQawBIQMMgQILIAEtAABBxQBHDUIgAUEBaiEBDD0LQa0BIQMgASAERg3/ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHNzwBqLQAARw1CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyAAgsgAkEANgIAIAZBAWohAUEODEMLIAEgBEYEQEGuASEDDP8BCyABLQAAQdAARw1AIAFBAWohAUElDEILQa8BIQMgASAERg39ASACKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEHQzwBqLQAARw1AIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz+AQsgAkEANgIAIAZBAWohAUEqDEELIAEgBEYEQEGwASEDDP0BCwJAAkAgAS0AAEHVAGsOCwBAQEBAQEBAQEABQAsgAUEBaiEBQZoBIQMM5AELIAFBAWohAUGbASEDDOMBCyABIARGBEBBsQEhAwz8AQsCQAJAIAEtAABBwQBrDhQAPz8/Pz8/Pz8/Pz8/Pz8/Pz8/AT8LIAFBAWohAUGZASEDDOMBCyABQQFqIQFBnAEhAwziAQtBsgEhAyABIARGDfoBIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQdnPAGotAABHDT0gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPsBCyACQQA2AgAgBkEBaiEBQSEMPgtBswEhAyABIARGDfkBIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAS0AACAAQd3PAGotAABHDTwgAEEGRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPoBCyACQQA2AgAgBkEBaiEBQRoMPQsgASAERgRAQbQBIQMM+QELAkACQAJAIAEtAABBxQBrDhEAPT09PT09PT09AT09PT09Aj0LIAFBAWohAUGdASEDDOEBCyABQQFqIQFBngEhAwzgAQsgAUEBaiEBQZ8BIQMM3wELQbUBIQMgASAERg33ASACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHkzwBqLQAARw06IABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz4AQsgAkEANgIAIAZBAWohAUEoDDsLQbYBIQMgASAERg32ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHqzwBqLQAARw05IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz3AQsgAkEANgIAIAZBAWohAUEHDDoLIAEgBEYEQEG3ASEDDPYBCwJAAkAgAS0AAEHFAGsODgA5OTk5OTk5OTk5OTkBOQsgAUEBaiEBQaEBIQMM3QELIAFBAWohAUGiASEDDNwBC0G4ASEDIAEgBEYN9AEgAigCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB7c8Aai0AAEcNNyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9QELIAJBADYCACAGQQFqIQFBEgw4C0G5ASEDIAEgBEYN8wEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8M8Aai0AAEcNNiAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9AELIAJBADYCACAGQQFqIQFBIAw3C0G6ASEDIAEgBEYN8gEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8s8Aai0AAEcNNSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8wELIAJBADYCACAGQQFqIQFBDww2CyABIARGBEBBuwEhAwzyAQsCQAJAIAEtAABByQBrDgcANTU1NTUBNQsgAUEBaiEBQaUBIQMM2QELIAFBAWohAUGmASEDDNgBC0G8ASEDIAEgBEYN8AEgAigCACIAIAQgAWtqIQUgASAAa0EHaiEGAkADQCABLQAAIABB9M8Aai0AAEcNMyAAQQdGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8QELIAJBADYCACAGQQFqIQFBGww0CyABIARGBEBBvQEhAwzwAQsCQAJAAkAgAS0AAEHCAGsOEgA0NDQ0NDQ0NDQBNDQ0NDQ0AjQLIAFBAWohAUGkASEDDNgBCyABQQFqIQFBpwEhAwzXAQsgAUEBaiEBQagBIQMM1gELIAEgBEYEQEG+ASEDDO8BCyABLQAAQc4ARw0wIAFBAWohAQwsCyABIARGBEBBvwEhAwzuAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAAQcEAaw4VAAECAz8EBQY/Pz8HCAkKCz8MDQ4PPwsgAUEBaiEBQegAIQMM4wELIAFBAWohAUHpACEDDOIBCyABQQFqIQFB7gAhAwzhAQsgAUEBaiEBQfIAIQMM4AELIAFBAWohAUHzACEDDN8BCyABQQFqIQFB9gAhAwzeAQsgAUEBaiEBQfcAIQMM3QELIAFBAWohAUH6ACEDDNwBCyABQQFqIQFBgwEhAwzbAQsgAUEBaiEBQYQBIQMM2gELIAFBAWohAUGFASEDDNkBCyABQQFqIQFBkgEhAwzYAQsgAUEBaiEBQZgBIQMM1wELIAFBAWohAUGgASEDDNYBCyABQQFqIQFBowEhAwzVAQsgAUEBaiEBQaoBIQMM1AELIAEgBEcEQCACQRA2AgggAiABNgIEQasBIQMM1AELQcABIQMM7AELQQAhAAJAIAIoAjgiA0UNACADKAI0IgNFDQAgAiADEQAAIQALIABFDV4gAEEVRw0HIAJB0QA2AhwgAiABNgIUIAJBsBc2AhAgAkEVNgIMQQAhAwzrAQsgAUEBaiABIARHDQgaQcIBIQMM6gELA0ACQCABLQAAQQprDgQIAAALAAsgBCABQQFqIgFHDQALQcMBIQMM6QELIAEgBEcEQCACQRE2AgggAiABNgIEQQEhAwzQAQtBxAEhAwzoAQsgASAERgRAQcUBIQMM6AELAkACQCABLQAAQQprDgQBKCgAKAsgAUEBagwJCyABQQFqDAULIAEgBEYEQEHGASEDDOcBCwJAAkAgAS0AAEEKaw4XAQsLAQsLCwsLCwsLCwsLCwsLCwsLCwALCyABQQFqIQELQbABIQMMzQELIAEgBEYEQEHIASEDDOYBCyABLQAAQSBHDQkgAkEAOwEyIAFBAWohAUGzASEDDMwBCwNAIAEhAAJAIAEgBEcEQCABLQAAQTBrQf8BcSIDQQpJDQEMJwtBxwEhAwzmAQsCQCACLwEyIgFBmTNLDQAgAiABQQpsIgU7ATIgBUH+/wNxIANB//8Dc0sNACAAQQFqIQEgAiADIAVqIgM7ATIgA0H//wNxQegHSQ0BCwtBACEDIAJBADYCHCACQcEJNgIQIAJBDTYCDCACIABBAWo2AhQM5AELIAJBADYCHCACIAE2AhQgAkHwDDYCECACQRs2AgxBACEDDOMBCyACKAIEIQAgAkEANgIEIAIgACABECYiAA0BIAFBAWoLIQFBrQEhAwzIAQsgAkHBATYCHCACIAA2AgwgAiABQQFqNgIUQQAhAwzgAQsgAigCBCEAIAJBADYCBCACIAAgARAmIgANASABQQFqCyEBQa4BIQMMxQELIAJBwgE2AhwgAiAANgIMIAIgAUEBajYCFEEAIQMM3QELIAJBADYCHCACIAE2AhQgAkGXCzYCECACQQ02AgxBACEDDNwBCyACQQA2AhwgAiABNgIUIAJB4xA2AhAgAkEJNgIMQQAhAwzbAQsgAkECOgAoDKwBC0EAIQMgAkEANgIcIAJBrws2AhAgAkECNgIMIAIgAUEBajYCFAzZAQtBAiEDDL8BC0ENIQMMvgELQSYhAwy9AQtBFSEDDLwBC0EWIQMMuwELQRghAwy6AQtBHCEDDLkBC0EdIQMMuAELQSAhAwy3AQtBISEDDLYBC0EjIQMMtQELQcYAIQMMtAELQS4hAwyzAQtBPSEDDLIBC0HLACEDDLEBC0HOACEDDLABC0HYACEDDK8BC0HZACEDDK4BC0HbACEDDK0BC0HxACEDDKwBC0H0ACEDDKsBC0GNASEDDKoBC0GXASEDDKkBC0GpASEDDKgBC0GvASEDDKcBC0GxASEDDKYBCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB8Rs2AhAgAkEGNgIMDL0BCyACQQA2AgAgBkEBaiEBQSQLOgApIAIoAgQhACACQQA2AgQgAiAAIAEQJyIARQRAQeUAIQMMowELIAJB+QA2AhwgAiABNgIUIAIgADYCDEEAIQMMuwELIABBFUcEQCACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwy7AQsgAkH4ADYCHCACIAE2AhQgAkHKGDYCECACQRU2AgxBACEDDLoBCyACQQA2AhwgAiABNgIUIAJBjhs2AhAgAkEGNgIMQQAhAwy5AQsgAkEANgIcIAIgATYCFCACQf4RNgIQIAJBBzYCDEEAIQMMuAELIAJBADYCHCACIAE2AhQgAkGMHDYCECACQQc2AgxBACEDDLcBCyACQQA2AhwgAiABNgIUIAJBww82AhAgAkEHNgIMQQAhAwy2AQsgAkEANgIcIAIgATYCFCACQcMPNgIQIAJBBzYCDEEAIQMMtQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==","base64")},172:(e,A)=>{Object.defineProperty(A,"__esModule",{value:true});A.enumToMap=void 0;function enumToMap(e){const A={};Object.keys(e).forEach(t=>{const r=e[t];if(typeof r==="number"){A[t]=r}});return A}A.enumToMap=enumToMap},7501:(e,A,t)=>{const{kClients:r}=t(6443);const s=t(7405);const{kAgent:n,kMockAgentSet:o,kMockAgentGet:i,kDispatches:a,kIsMockActive:c,kNetConnect:l,kGetNetConnect:g,kOptions:Q,kFactory:E}=t(1117);const h=t(7365);const B=t(4004);const{matchValue:C,buildMockOptions:u}=t(3397);const{InvalidArgumentError:I,UndiciError:d}=t(8707);const f=t(883);const p=t(1529);const w=t(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 A=e?.agent?e.agent:new s(e);this[n]=A;this[r]=A[r];this[Q]=u(e)}get(e){let A=this[i](e);if(!A){A=this[E](e);this[o](e,A)}return A}dispatch(e,A){this.get(e.origin);return this[n].dispatch(e,A)}async close(){await this[n].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,A){this[r].set(e,A)}[E](e){const A=Object.assign({agent:this},this[Q]);return this[Q]&&this[Q].connections===1?new h(e,A):new B(e,A)}[i](e){const A=this[r].get(e);if(A){return A}if(typeof e!=="string"){const A=this[E]("http://localhost:9999");this[o](e,A);return A}for(const[A,t]of Array.from(this[r])){if(t&&typeof A!=="string"&&C(A,e)){const A=this[E](e);this[o](e,A);A[a]=t[a];return A}}}[g](){return this[l]}pendingInterceptors(){const e=this[r];return Array.from(e.entries()).flatMap(([e,A])=>A[a].map(A=>({...A,origin:e}))).filter(({pending:e})=>e)}assertNoPendingInterceptors({pendingInterceptorsFormatter:e=new w}={}){const A=this.pendingInterceptors();if(A.length===0){return}const t=new p("interceptor","interceptors").pluralize(A.length);throw new d(`\n${t.count} ${t.noun} ${t.is} pending:\n\n${e.format(A)}\n`.trim())}}e.exports=MockAgent},7365:(e,A,t)=>{const{promisify:r}=t(7975);const s=t(3701);const{buildMockDispatch:n}=t(3397);const{kDispatches:o,kMockAgent:i,kClose:a,kOriginalClose:c,kOrigin:l,kOriginalDispatch:g,kConnected:Q}=t(1117);const{MockInterceptor:E}=t(1511);const h=t(6443);const{InvalidArgumentError:B}=t(8707);class MockClient extends s{constructor(e,A){super(e,A);if(!A||!A.agent||typeof A.agent.dispatch!=="function"){throw new B("Argument opts.agent must implement Agent")}this[i]=A.agent;this[l]=e;this[o]=[];this[Q]=1;this[g]=this.dispatch;this[c]=this.close.bind(this);this.dispatch=n.call(this);this.close=this[a]}get[h.kConnected](){return this[Q]}intercept(e){return new E(e,this[o])}async[a](){await r(this[c])();this[Q]=0;this[i][h.kClients].delete(this[l])}}e.exports=MockClient},2429:(e,A,t)=>{const{UndiciError:r}=t(8707);const s=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[s]===true}[s]=true}e.exports={MockNotMatchedError:MockNotMatchedError}},1511:(e,A,t)=>{const{getResponseData:r,buildKey:s,addMockDispatch:n}=t(3397);const{kDispatches:o,kDispatchKey:i,kDefaultHeaders:a,kDefaultTrailers:c,kContentLength:l,kMockDispatch:g}=t(1117);const{InvalidArgumentError:Q}=t(8707);const{buildURL:E}=t(3440);class MockScope{constructor(e){this[g]=e}delay(e){if(typeof e!=="number"||!Number.isInteger(e)||e<=0){throw new Q("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 Q("repeatTimes must be a valid integer > 0")}this[g].times=e;return this}}class MockInterceptor{constructor(e,A){if(typeof e!=="object"){throw new Q("opts must be an object")}if(typeof e.path==="undefined"){throw new Q("opts.path must be defined")}if(typeof e.method==="undefined"){e.method="GET"}if(typeof e.path==="string"){if(e.query){e.path=E(e.path,e.query)}else{const A=new URL(e.path,"data://");e.path=A.pathname+A.search}}if(typeof e.method==="string"){e.method=e.method.toUpperCase()}this[i]=s(e);this[o]=A;this[a]={};this[c]={};this[l]=false}createMockScopeDispatchData({statusCode:e,data:A,responseOptions:t}){const s=r(A);const n=this[l]?{"content-length":s.length}:{};const o={...this[a],...n,...t.headers};const i={...this[c],...t.trailers};return{statusCode:e,data:A,headers:o,trailers:i}}validateReplyParameters(e){if(typeof e.statusCode==="undefined"){throw new Q("statusCode must be defined")}if(typeof e.responseOptions!=="object"||e.responseOptions===null){throw new Q("responseOptions must be an object")}}reply(e){if(typeof e==="function"){const wrappedDefaultsCallback=A=>{const t=e(A);if(typeof t!=="object"||t===null){throw new Q("reply options callback must return an object")}const r={data:"",responseOptions:{},...t};this.validateReplyParameters(r);return{...this.createMockScopeDispatchData(r)}};const A=n(this[o],this[i],wrappedDefaultsCallback);return new MockScope(A)}const A={statusCode:e,data:arguments[1]===undefined?"":arguments[1],responseOptions:arguments[2]===undefined?{}:arguments[2]};this.validateReplyParameters(A);const t=this.createMockScopeDispatchData(A);const r=n(this[o],this[i],t);return new MockScope(r)}replyWithError(e){if(typeof e==="undefined"){throw new Q("error must be defined")}const A=n(this[o],this[i],{error:e});return new MockScope(A)}defaultReplyHeaders(e){if(typeof e==="undefined"){throw new Q("headers must be defined")}this[a]=e;return this}defaultReplyTrailers(e){if(typeof e==="undefined"){throw new Q("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,A,t)=>{const{promisify:r}=t(7975);const s=t(628);const{buildMockDispatch:n}=t(3397);const{kDispatches:o,kMockAgent:i,kClose:a,kOriginalClose:c,kOrigin:l,kOriginalDispatch:g,kConnected:Q}=t(1117);const{MockInterceptor:E}=t(1511);const h=t(6443);const{InvalidArgumentError:B}=t(8707);class MockPool extends s{constructor(e,A){super(e,A);if(!A||!A.agent||typeof A.agent.dispatch!=="function"){throw new B("Argument opts.agent must implement Agent")}this[i]=A.agent;this[l]=e;this[o]=[];this[Q]=1;this[g]=this.dispatch;this[c]=this.close.bind(this);this.dispatch=n.call(this);this.close=this[a]}get[h.kConnected](){return this[Q]}intercept(e){return new E(e,this[o])}async[a](){await r(this[c])();this[Q]=0;this[i][h.kClients].delete(this[l])}}e.exports=MockPool},1117:e=>{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,A,t)=>{const{MockNotMatchedError:r}=t(2429);const{kDispatches:s,kMockAgent:n,kOriginalDispatch:o,kOrigin:i,kGetNetConnect:a}=t(1117);const{buildURL:c}=t(3440);const{STATUS_CODES:l}=t(7067);const{types:{isPromise:g}}=t(7975);function matchValue(e,A){if(typeof e==="string"){return e===A}if(e instanceof RegExp){return e.test(A)}if(typeof e==="function"){return e(A)===true}return false}function lowerCaseEntries(e){return Object.fromEntries(Object.entries(e).map(([e,A])=>[e.toLocaleLowerCase(),A]))}function getHeaderByName(e,A){if(Array.isArray(e)){for(let t=0;t!e).filter(({path:e})=>matchValue(safeUrl(e),s));if(n.length===0){throw new r(`Mock dispatch not matched for path '${s}'`)}n=n.filter(({method:e})=>matchValue(e,A.method));if(n.length===0){throw new r(`Mock dispatch not matched for method '${A.method}' on path '${s}'`)}n=n.filter(({body:e})=>typeof e!=="undefined"?matchValue(e,A.body):true);if(n.length===0){throw new r(`Mock dispatch not matched for body '${A.body}' on path '${s}'`)}n=n.filter(e=>matchHeaders(e,A.headers));if(n.length===0){const e=typeof A.headers==="object"?JSON.stringify(A.headers):A.headers;throw new r(`Mock dispatch not matched for headers '${e}' on path '${s}'`)}return n[0]}function addMockDispatch(e,A,t){const r={timesInvoked:0,times:1,persist:false,consumed:false};const s=typeof t==="function"?{callback:t}:{...t};const n={...r,...A,pending:true,data:{error:null,...s}};e.push(n);return n}function deleteMockDispatch(e,A){const t=e.findIndex(e=>{if(!e.consumed){return false}return matchKey(e,A)});if(t!==-1){e.splice(t,1)}}function buildKey(e){const{path:A,method:t,body:r,headers:s,query:n}=e;return{path:A,method:t,body:r,headers:s,query:n}}function generateKeyValues(e){const A=Object.keys(e);const t=[];for(let r=0;r=h;r.pending=E0){setTimeout(()=>{handleReply(this[s])},l)}else{handleReply(this[s])}function handleReply(r,s=o){const c=Array.isArray(e.headers)?buildHeadersFromArray(e.headers):e.headers;const l=typeof s==="function"?s({...e,headers:c}):s;if(g(l)){l.then(e=>handleReply(r,e));return}const Q=getResponseData(l);const E=generateKeyValues(i);const h=generateKeyValues(a);A.onConnect?.(e=>A.onError(e),null);A.onHeaders?.(n,E,resume,getStatusText(n));A.onData?.(Buffer.from(Q));A.onComplete?.(h);deleteMockDispatch(r,t)}function resume(){}return true}function buildMockDispatch(){const e=this[n];const A=this[i];const t=this[o];return function dispatch(s,n){if(e.isMockActive){try{mockDispatch.call(this,s,n)}catch(o){if(o instanceof r){const i=e[a]();if(i===false){throw new r(`${o.message}: subsequent request to origin ${A} was not allowed (net.connect disabled)`)}if(checkNetConnect(i,A)){t.call(this,s,n)}else{throw new r(`${o.message}: subsequent request to origin ${A} was not allowed (net.connect is not enabled for this origin)`)}}else{throw o}}}else{t.call(this,s,n)}}}function checkNetConnect(e,A){const t=new URL(A);if(e===true){return true}else if(Array.isArray(e)&&e.some(e=>matchValue(e,t.host))){return true}return false}function buildMockOptions(e){if(e){const{agent:A,...t}=e;return t}}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,A,t)=>{const{Transform:r}=t(7075);const{Console:s}=t(7540);const n=process.versions.icu?"✅":"Y ";const o=process.versions.icu?"❌":"N ";e.exports=class PendingInterceptorsFormatter{constructor({disableColors:e}={}){this.transform=new r({transform(e,A,t){t(null,e)}});this.logger=new s({stdout:this.transform,inspectOptions:{colors:!e&&!process.env.CI}})}format(e){const A=e.map(({method:e,path:A,data:{statusCode:t},persist:r,times:s,timesInvoked:i,origin:a})=>({Method:e,Origin:a,Path:A,"Status code":t,Persistent:r?n:o,Invocations:i,Remaining:r?Infinity:s-i}));this.logger.table(A);return this.transform.read().toString()}}},1529:e=>{const A={pronoun:"it",is:"is",was:"was",this:"this"};const t={pronoun:"they",is:"are",was:"were",this:"these"};e.exports=class Pluralizer{constructor(e,A){this.singular=e;this.plural=A}pluralize(e){const r=e===1;const s=r?A:t;const n=r?this.singular:this.plural;return{...s,count:e,noun:n}}}},6603:e=>{let A=0;const t=1e3;const r=(t>>1)-1;let s;const n=Symbol("kFastTimer");const o=[];const i=-2;const a=-1;const c=0;const l=1;function onTick(){A+=r;let e=0;let t=o.length;while(e=s._idleStart+s._idleTimeout){s._state=a;s._idleStart=-1;s._onTimeout(s._timerArg)}if(s._state===a){s._state=i;if(--t!==0){o[e]=o[t]}}else{++e}}o.length=t;if(o.length!==0){refreshTimeout()}}function refreshTimeout(){if(s){s.refresh()}else{clearTimeout(s);s=setTimeout(onTick,r);if(s.unref){s.unref()}}}class FastTimer{[n]=true;_state=i;_idleTimeout=-1;_idleStart=-1;_onTimeout;_timerArg;constructor(e,A,t){this._onTimeout=e;this._idleTimeout=A;this._timerArg=t;this.refresh()}refresh(){if(this._state===i){o.push(this)}if(!s||o.length===1){refreshTimeout()}this._state=c}clear(){this._state=a;this._idleStart=-1}}e.exports={setTimeout(e,A,r){return A<=t?setTimeout(e,A,r):new FastTimer(e,A,r)},clearTimeout(e){if(e[n]){e.clear()}else{clearTimeout(e)}},setFastTimeout(e,A,t){return new FastTimer(e,A,t)},clearFastTimeout(e){e.clear()},now(){return A},tick(e=0){A+=e-t+1;onTick();onTick()},reset(){A=0;o.length=0;clearTimeout(s);s=null},kFastTimer:n}},9634:(e,A,t)=>{const{kConstruct:r}=t(109);const{urlEquals:s,getFieldValues:n}=t(6798);const{kEnumerableProperty:o,isDisturbed:i}=t(3440);const{webidl:a}=t(5893);const{Response:c,cloneResponse:l,fromInnerResponse:g}=t(9051);const{Request:Q,fromInnerRequest:E}=t(9967);const{kState:h}=t(3627);const{fetching:B}=t(4398);const{urlIsHttpHttpsScheme:C,createDeferredPromise:u,readAllBytes:I}=t(3168);const d=t(4589);class Cache{#N;constructor(){if(arguments[0]!==r){a.illegalConstructor()}a.util.markAsUncloneable(this);this.#N=arguments[1]}async match(e,A={}){a.brandCheck(this,Cache);const t="Cache.match";a.argumentLengthCheck(arguments,1,t);e=a.converters.RequestInfo(e,t,"request");A=a.converters.CacheQueryOptions(A,t,"options");const r=this.#M(e,A,1);if(r.length===0){return}return r[0]}async matchAll(e=undefined,A={}){a.brandCheck(this,Cache);const t="Cache.matchAll";if(e!==undefined)e=a.converters.RequestInfo(e,t,"request");A=a.converters.CacheQueryOptions(A,t,"options");return this.#M(e,A)}async add(e){a.brandCheck(this,Cache);const A="Cache.add";a.argumentLengthCheck(arguments,1,A);e=a.converters.RequestInfo(e,A,"request");const t=[e];const r=this.addAll(t);return await r}async addAll(e){a.brandCheck(this,Cache);const A="Cache.addAll";a.argumentLengthCheck(arguments,1,A);const t=[];const r=[];for(let t of e){if(t===undefined){throw a.errors.conversionFailed({prefix:A,argument:"Argument 1",types:["undefined is not allowed"]})}t=a.converters.RequestInfo(t);if(typeof t==="string"){continue}const e=t[h];if(!C(e.url)||e.method!=="GET"){throw a.errors.exception({header:A,message:"Expected http/s scheme when method is not GET."})}}const s=[];for(const o of e){const e=new Q(o)[h];if(!C(e.url)){throw a.errors.exception({header:A,message:"Expected http/s scheme."})}e.initiator="fetch";e.destination="subresource";r.push(e);const i=u();s.push(B({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 A=n(e.headersList.get("vary"));for(const e of A){if(e==="*"){i.reject(a.errors.exception({header:"Cache.addAll",message:"invalid vary field value"}));for(const e of s){e.abort()}return}}}},processResponseEndOfBody(e){if(e.aborted){i.reject(new DOMException("aborted","AbortError"));return}i.resolve(e)}}));t.push(i.promise)}const o=Promise.all(t);const i=await o;const c=[];let l=0;for(const e of i){const A={type:"put",request:r[l],response:e};c.push(A);l++}const g=u();let E=null;try{this.#U(c)}catch(e){E=e}queueMicrotask(()=>{if(E===null){g.resolve(undefined)}else{g.reject(E)}});return g.promise}async put(e,A){a.brandCheck(this,Cache);const t="Cache.put";a.argumentLengthCheck(arguments,2,t);e=a.converters.RequestInfo(e,t,"request");A=a.converters.Response(A,t,"response");let r=null;if(e instanceof Q){r=e[h]}else{r=new Q(e)[h]}if(!C(r.url)||r.method!=="GET"){throw a.errors.exception({header:t,message:"Expected an http/s scheme when method is not GET"})}const s=A[h];if(s.status===206){throw a.errors.exception({header:t,message:"Got 206 status"})}if(s.headersList.contains("vary")){const e=n(s.headersList.get("vary"));for(const A of e){if(A==="*"){throw a.errors.exception({header:t,message:"Got * vary field value"})}}}if(s.body&&(i(s.body.stream)||s.body.stream.locked)){throw a.errors.exception({header:t,message:"Response body is locked or disturbed"})}const o=l(s);const c=u();if(s.body!=null){const e=s.body.stream;const A=e.getReader();I(A).then(c.resolve,c.reject)}else{c.resolve(undefined)}const g=[];const E={type:"put",request:r,response:o};g.push(E);const B=await c.promise;if(o.body!=null){o.body.source=B}const d=u();let f=null;try{this.#U(g)}catch(e){f=e}queueMicrotask(()=>{if(f===null){d.resolve()}else{d.reject(f)}});return d.promise}async delete(e,A={}){a.brandCheck(this,Cache);const t="Cache.delete";a.argumentLengthCheck(arguments,1,t);e=a.converters.RequestInfo(e,t,"request");A=a.converters.CacheQueryOptions(A,t,"options");let r=null;if(e instanceof Q){r=e[h];if(r.method!=="GET"&&!A.ignoreMethod){return false}}else{d(typeof e==="string");r=new Q(e)[h]}const s=[];const n={type:"delete",request:r,options:A};s.push(n);const o=u();let i=null;let c;try{c=this.#U(s)}catch(e){i=e}queueMicrotask(()=>{if(i===null){o.resolve(!!c?.length)}else{o.reject(i)}});return o.promise}async keys(e=undefined,A={}){a.brandCheck(this,Cache);const t="Cache.keys";if(e!==undefined)e=a.converters.RequestInfo(e,t,"request");A=a.converters.CacheQueryOptions(A,t,"options");let r=null;if(e!==undefined){if(e instanceof Q){r=e[h];if(r.method!=="GET"&&!A.ignoreMethod){return[]}}else if(typeof e==="string"){r=new Q(e)[h]}}const s=u();const n=[];if(e===undefined){for(const e of this.#N){n.push(e[0])}}else{const e=this.#L(r,A);for(const A of e){n.push(A[0])}}queueMicrotask(()=>{const e=[];for(const A of n){const t=E(A,(new AbortController).signal,"immutable");e.push(t)}s.resolve(Object.freeze(e))});return s.promise}#U(e){const A=this.#N;const t=[...A];const r=[];const s=[];try{for(const t of e){if(t.type!=="delete"&&t.type!=="put"){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:'operation type does not match "delete" or "put"'})}if(t.type==="delete"&&t.response!=null){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"delete operation should not have an associated response"})}if(this.#L(t.request,t.options,r).length){throw new DOMException("???","InvalidStateError")}let e;if(t.type==="delete"){e=this.#L(t.request,t.options);if(e.length===0){return[]}for(const t of e){const e=A.indexOf(t);d(e!==-1);A.splice(e,1)}}else if(t.type==="put"){if(t.response==null){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"put operation should have an associated response"})}const s=t.request;if(!C(s.url)){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"expected http or https scheme"})}if(s.method!=="GET"){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"not get method"})}if(t.options!=null){throw a.errors.exception({header:"Cache.#batchCacheOperations",message:"options must not be defined"})}e=this.#L(t.request);for(const t of e){const e=A.indexOf(t);d(e!==-1);A.splice(e,1)}A.push([t.request,t.response]);r.push([t.request,t.response])}s.push([t.request,t.response])}return s}catch(e){this.#N.length=0;this.#N=t;throw e}}#L(e,A,t){const r=[];const s=t??this.#N;for(const t of s){const[s,n]=t;if(this.#T(e,s,n,A)){r.push(t)}}return r}#T(e,A,t=null,r){const o=new URL(e.url);const i=new URL(A.url);if(r?.ignoreSearch){i.search="";o.search=""}if(!s(o,i,true)){return false}if(t==null||r?.ignoreVary||!t.headersList.contains("vary")){return true}const a=n(t.headersList.get("vary"));for(const t of a){if(t==="*"){return false}const r=A.headersList.get(t);const s=e.headersList.get(t);if(r!==s){return false}}return true}#M(e,A,t=Infinity){let r=null;if(e!==undefined){if(e instanceof Q){r=e[h];if(r.method!=="GET"&&!A.ignoreMethod){return[]}}else if(typeof e==="string"){r=new Q(e)[h]}}const s=[];if(e===undefined){for(const e of this.#N){s.push(e[1])}}else{const e=this.#L(r,A);for(const A of e){s.push(A[1])}}const n=[];for(const e of s){const A=g(e,"immutable");n.push(A.clone());if(n.length>=t){break}}return Object.freeze(n)}}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,A,t)=>{const{kConstruct:r}=t(109);const{Cache:s}=t(9634);const{webidl:n}=t(5893);const{kEnumerableProperty:o}=t(3440);class CacheStorage{#v=new Map;constructor(){if(arguments[0]!==r){n.illegalConstructor()}n.util.markAsUncloneable(this)}async match(e,A={}){n.brandCheck(this,CacheStorage);n.argumentLengthCheck(arguments,1,"CacheStorage.match");e=n.converters.RequestInfo(e);A=n.converters.MultiCacheQueryOptions(A);if(A.cacheName!=null){if(this.#v.has(A.cacheName)){const t=this.#v.get(A.cacheName);const n=new s(r,t);return await n.match(e,A)}}else{for(const t of this.#v.values()){const n=new s(r,t);const o=await n.match(e,A);if(o!==undefined){return o}}}}async has(e){n.brandCheck(this,CacheStorage);const A="CacheStorage.has";n.argumentLengthCheck(arguments,1,A);e=n.converters.DOMString(e,A,"cacheName");return this.#v.has(e)}async open(e){n.brandCheck(this,CacheStorage);const A="CacheStorage.open";n.argumentLengthCheck(arguments,1,A);e=n.converters.DOMString(e,A,"cacheName");if(this.#v.has(e)){const A=this.#v.get(e);return new s(r,A)}const t=[];this.#v.set(e,t);return new s(r,t)}async delete(e){n.brandCheck(this,CacheStorage);const A="CacheStorage.delete";n.argumentLengthCheck(arguments,1,A);e=n.converters.DOMString(e,A,"cacheName");return this.#v.delete(e)}async keys(){n.brandCheck(this,CacheStorage);const e=this.#v.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,A,t)=>{e.exports={kConstruct:t(6443).kConstruct}},6798:(e,A,t)=>{const r=t(4589);const{URLSerializer:s}=t(1900);const{isValidHeaderName:n}=t(3168);function urlEquals(e,A,t=false){const r=s(e,t);const n=s(A,t);return r===n}function getFieldValues(e){r(e!==null);const A=[];for(let t of e.split(",")){t=t.trim();if(n(t)){A.push(t)}}return A}e.exports={urlEquals:urlEquals,getFieldValues:getFieldValues}},1276:e=>{const A=1024;const t=4096;e.exports={maxAttributeValueSize:A,maxNameValuePairSize:t}},9061:(e,A,t)=>{const{parseSetCookie:r}=t(1978);const{stringify:s}=t(7797);const{webidl:n}=t(5893);const{Headers:o}=t(660);function getCookies(e){n.argumentLengthCheck(arguments,1,"getCookies");n.brandCheck(e,o,{strict:false});const A=e.get("cookie");const t={};if(!A){return t}for(const e of A.split(";")){const[A,...r]=e.split("=");t[A.trim()]=r.join("=")}return t}function deleteCookie(e,A,t){n.brandCheck(e,o,{strict:false});const r="deleteCookie";n.argumentLengthCheck(arguments,2,r);A=n.converters.DOMString(A,r,"name");t=n.converters.DeleteCookieAttributes(t);setCookie(e,{name:A,value:"",expires:new Date(0),...t})}function getSetCookies(e){n.argumentLengthCheck(arguments,1,"getSetCookies");n.brandCheck(e,o,{strict:false});const A=e.getSetCookie();if(!A){return[]}return A.map(e=>r(e))}function setCookie(e,A){n.argumentLengthCheck(arguments,2,"setCookie");n.brandCheck(e,o,{strict:false});A=n.converters.Cookie(A);const t=s(A);if(t){e.append("Set-Cookie",t)}}n.converters.DeleteCookieAttributes=n.dictionaryConverter([{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:()=>null}]);n.converters.Cookie=n.dictionaryConverter([{converter:n.converters.DOMString,key:"name"},{converter:n.converters.DOMString,key:"value"},{converter:n.nullableConverter(e=>{if(typeof e==="number"){return n.converters["unsigned long long"](e)}return new Date(e)}),key:"expires",defaultValue:()=>null},{converter:n.nullableConverter(n.converters["long long"]),key:"maxAge",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.DOMString),key:"domain",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.DOMString),key:"path",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.boolean),key:"secure",defaultValue:()=>null},{converter:n.nullableConverter(n.converters.boolean),key:"httpOnly",defaultValue:()=>null},{converter:n.converters.USVString,key:"sameSite",allowedValues:["Strict","Lax","None"]},{converter:n.sequenceConverter(n.converters.DOMString),key:"unparsed",defaultValue:()=>new Array(0)}]);e.exports={getCookies:getCookies,deleteCookie:deleteCookie,getSetCookies:getSetCookies,setCookie:setCookie}},1978:(e,A,t)=>{const{maxNameValuePairSize:r,maxAttributeValueSize:s}=t(1276);const{isCTLExcludingHtab:n}=t(7797);const{collectASequenceOfCodePointsFast:o}=t(1900);const i=t(4589);function parseSetCookie(e){if(n(e)){return null}let A="";let t="";let s="";let i="";if(e.includes(";")){const r={position:0};A=o(";",e,r);t=e.slice(r.position)}else{A=e}if(!A.includes("=")){i=A}else{const e={position:0};s=o("=",A,e);i=A.slice(e.position+1)}s=s.trim();i=i.trim();if(s.length+i.length>r){return null}return{name:s,value:i,...parseUnparsedAttributes(t)}}function parseUnparsedAttributes(e,A={}){if(e.length===0){return A}i(e[0]===";");e=e.slice(1);let t="";if(e.includes(";")){t=o(";",e,{position:0});e=e.slice(t.length)}else{t=e;e=""}let r="";let n="";if(t.includes("=")){const e={position:0};r=o("=",t,e);n=t.slice(e.position+1)}else{r=t}r=r.trim();n=n.trim();if(n.length>s){return parseUnparsedAttributes(e,A)}const a=r.toLowerCase();if(a==="expires"){const e=new Date(n);A.expires=e}else if(a==="max-age"){const t=n.charCodeAt(0);if((t<48||t>57)&&n[0]!=="-"){return parseUnparsedAttributes(e,A)}if(!/^\d+$/.test(n)){return parseUnparsedAttributes(e,A)}const r=Number(n);A.maxAge=r}else if(a==="domain"){let e=n;if(e[0]==="."){e=e.slice(1)}e=e.toLowerCase();A.domain=e}else if(a==="path"){let e="";if(n.length===0||n[0]!=="/"){e="/"}else{e=n}A.path=e}else if(a==="secure"){A.secure=true}else if(a==="httponly"){A.httpOnly=true}else if(a==="samesite"){const e=n.toLowerCase();if(e==="none"){A.sameSite="None"}else if(e==="strict"){A.sameSite="Strict"}else if(e==="lax"){A.sameSite="Lax"}}else{A.unparsed??=[];A.unparsed.push(`${r}=${n}`)}return parseUnparsedAttributes(e,A)}e.exports={parseSetCookie:parseSetCookie,parseUnparsedAttributes:parseUnparsedAttributes}},7797:e=>{function isCTLExcludingHtab(e){for(let A=0;A=0&&t<=8||t>=10&&t<=31||t===127){return true}}return false}function validateCookieName(e){for(let A=0;A126||t===34||t===40||t===41||t===60||t===62||t===64||t===44||t===59||t===58||t===92||t===47||t===91||t===93||t===63||t===61||t===123||t===125){throw new Error("Invalid cookie name")}}}function validateCookieValue(e){let A=e.length;let t=0;if(e[0]==='"'){if(A===1||e[A-1]!=='"'){throw new Error("Invalid cookie value")}--A;++t}while(t126||A===34||A===44||A===59||A===92){throw new Error("Invalid cookie value")}}}function validateCookiePath(e){for(let A=0;A126||t===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 A=0;for(let t=0;t63){throw new Error("Invalid cookie domain")}}if(A===0||e.charCodeAt(e.length-1)===45){throw new Error("Invalid cookie domain")}}const A=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];const t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];const r=Array(61).fill(0).map((e,A)=>A.toString().padStart(2,"0"));function toIMFDate(e){if(typeof e==="number"){e=new Date(e)}return`${A[e.getUTCDay()]}, ${r[e.getUTCDate()]} ${t[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 A=[`${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){A.push("Secure")}if(e.httpOnly){A.push("HttpOnly")}if(typeof e.maxAge==="number"){validateCookieMaxAge(e.maxAge);A.push(`Max-Age=${e.maxAge}`)}if(e.domain){validateCookieDomain(e.domain);A.push(`Domain=${e.domain}`)}if(e.path){validateCookiePath(e.path);A.push(`Path=${e.path}`)}if(e.expires&&e.expires.toString()!=="Invalid Date"){A.push(`Expires=${toIMFDate(e.expires)}`)}if(e.sameSite){A.push(`SameSite=${e.sameSite}`)}for(const t of e.unparsed){if(!t.includes("=")){throw new Error("Invalid unparsed")}const[e,...r]=t.split("=");const s=e.trim();const n=r.join("=");validateCookieName(s);validateCookieValue(n);A.push(`${s}=${n}`)}return A.join("; ")}e.exports={isCTLExcludingHtab:isCTLExcludingHtab,validateCookieName:validateCookieName,validateCookiePath:validateCookiePath,validateCookieValue:validateCookieValue,toIMFDate:toIMFDate,stringify:stringify}},4031:(e,A,t)=>{const r=t(4573);const{Transform:s}=t(7075);const{isASCIINumber:n,isValidLastEventId:o}=t(4811);const i=[239,187,191];const a=10;const c=13;const l=58;const g=32;const Q=r.kStringMaxLength;const E=Buffer.from("data");const h=Buffer.from("event");const B=Buffer.from("id");const C=Buffer.from("retry");const u=1024;const I=131072;const d=128;function isASCIINumberBytes(e,A){if(A>=e.length){return false}for(let t=A;t57){return false}}return true}function isValidLastEventIdBytes(e,A){for(let t=A;t0?Math.min(I,Math.max(u,Math.floor(this.maxEventSize/d))):0;this.maxDataLines=A;this.maxBufferedChunks=A;if(e.push){this.push=e.push}}_transform(e,A,t){if(e.length===0){t();return}if(this.maxEventSize>0&&this.chunks.length>=this.maxBufferedChunks&&e[0]!==a&&e[0]!==c){t(createMaxEventSizeExceededError());return}this.chunks.push(e);if(this.checkBOM){if(this.handleBOM()){t();return}}while(this.hasCurrentByte()){const e=this.currentByte();if(this.eventEndCheck){if(this.crlfCheck){if(e===a){this.crlfCheck=false;this.consumeCurrentByte();continue}this.crlfCheck=false}if(e===a||e===c){if(e===c){this.crlfCheck=true}this.consumeCurrentByte();if(this.hasPendingEvent()){this.processEvent(this.event)}this.clearEvent();continue}this.eventEndCheck=false;continue}if(e===a||e===c){if(e===c){this.crlfCheck=true}try{this.parseLine(this.readLine(),this.event)}catch(e){t(e);return}this.consumeCurrentByte();this.eventEndCheck=true;continue}if(this.maxEventSize>0&&++this.lineLength>this.maxEventSize+7){t(createMaxEventSizeExceededError());return}this.advanceCursor()}t()}_destroy(e,A){this.chunks.length=0;this.clearEvent();super._destroy(e,A)}parseLine(e,A){if(e.length===0){return}const t=e.indexOf(l);if(t===0){return}let r=e.length;let s=e.length;if(t!==-1){r=t;s=t+1;if(e[s]===g){++s}}if(isFieldName(e,r,E)){if(this.maxEventSize>0&&this.dataLineCount>=this.maxDataLines){throw createMaxEventSizeExceededError()}const t=e.length-s;const r=this.eventFieldSizes.data+(A.data===undefined?0:1)+t;this.setEventFieldSize("data",r);const n=e.toString("utf8",s);if(A.data===undefined){A.data=n}else{A.data+=`\n${n}`}this.dataLineCount++;return}if(isFieldName(e,r,C)){if(isASCIINumberBytes(e,s)){this.setEventFieldSize("retry",e.length-s);A.retry=e.toString("utf8",s)}return}if(isFieldName(e,r,B)){if(isValidLastEventIdBytes(e,s)){this.setEventFieldSize("id",e.length-s);A.id=e.toString("utf8",s)}return}if(isFieldName(e,r,h)){if(s0&&t>this.maxEventSize){throw createMaxEventSizeExceededError()}this.eventSize=t;this.eventFieldSizes[e]=A}processEvent(e){if(e.retry&&n(e.retry)){this.state.reconnectionTime=parseInt(e.retry,10)}if(e.id&&o(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;this.event.event=undefined;this.event.id=undefined;this.event.retry=undefined;this.eventSize=0;this.dataLineCount=0;this.eventFieldSizes.data=0;this.eventFieldSizes.event=0;this.eventFieldSizes.id=0;this.eventFieldSizes.retry=0}hasPendingEvent(){return this.event.data!==undefined||this.event.event!==undefined||this.event.id!==undefined||this.event.retry!==undefined}hasCurrentByte(){return this.chunkIndex=this.chunks[this.chunkIndex].length){this.chunkIndex++;this.pos=0}}syncLineStartToCursor(){this.lineChunkIndex=this.chunkIndex;this.linePos=this.pos;this.lineLength=0;this.dropConsumedChunks()}dropConsumedChunks(){if(this.lineChunkIndex>0){const e=this.lineChunkIndex;this.chunks.splice(0,e);this.lineChunkIndex=0;this.chunkIndex-=e}if(this.chunkIndex===this.chunks.length){this.chunks.length=0;this.chunkIndex=0;this.pos=0;this.lineChunkIndex=0;this.linePos=0}}readLine(){if(this.lineChunkIndex===this.chunkIndex){return this.chunks[this.chunkIndex].subarray(this.linePos,this.pos)}const e=[];let A=0;for(let t=this.lineChunkIndex;t<=this.chunkIndex;t++){const r=this.chunks[t];const s=t===this.lineChunkIndex?this.linePos:0;const n=t===this.chunkIndex?this.pos:r.length;const o=r.subarray(s,n);A+=o.length;e.push(o)}return Buffer.concat(e,A)}peekBufferedByte(e){let A=this.lineChunkIndex;let t=this.linePos;while(A0&&this.lineChunkIndex{const{pipeline:r}=t(7075);const{fetching:s}=t(4398);const{makeRequest:n}=t(9967);const{webidl:o}=t(5893);const{EventSourceStream:i}=t(4031);const{parseMIMEType:a}=t(1900);const{createFastMessageEvent:c}=t(5188);const{isNetworkError:l}=t(9051);const{delay:g}=t(4811);const{kEnumerableProperty:Q}=t(3440);const{environmentSettingsObject:E}=t(3168);const{getGlobalDispatcher:h}=t(2581);let B=false;const C=3e3;const u=0;const I=1;const d=2;const f="anonymous";const p="use-credentials";class EventSource extends EventTarget{#H={open:null,error:null,message:null};#Y=null;#G=false;#J=u;#x=null;#V=null;#t;#w;constructor(e,A={}){super();o.util.markAsUncloneable(this);const t="EventSource constructor";o.argumentLengthCheck(arguments,1,t);if(!B){B=true;process.emitWarning("EventSource is experimental, expect them to change at any time.",{code:"UNDICI-ES"})}e=o.converters.USVString(e,t,"url");A=o.converters.EventSourceInitDict(A,t,"eventSourceInitDict");this.#t=A.dispatcher;this.#w={lastEventId:"",reconnectionTime:C};const r=E;let s;try{s=new URL(e,r.settingsObject.baseUrl);this.#w.origin=s.origin}catch(e){throw new DOMException(e,"SyntaxError")}this.#Y=s.href;let i=f;if(A.withCredentials){i=p;this.#G=true}const a={redirect:"follow",keepalive:true,mode:"cors",credentials:i==="anonymous"?"same-origin":"omit",referrer:"no-referrer"};a.client=E.settingsObject;a.headersList=[["accept",{name:"accept",value:"text/event-stream"}]];a.cache="no-store";a.initiator="other";a.urlList=[new URL(this.#Y)];this.#x=n(a);this.#O()}get readyState(){return this.#J}get url(){return this.#Y}get withCredentials(){return this.#G}#O(){if(this.#J===d)return;this.#J=u;const e={request:this.#x,dispatcher:this.#t};const processEventSourceEndOfBody=e=>{if(l(e)){this.dispatchEvent(new Event("error"));this.close()}this.#W()};e.processResponseEndOfBody=processEventSourceEndOfBody;e.processResponse=e=>{if(l(e)){if(e.aborted){this.close();this.dispatchEvent(new Event("error"));return}else{this.#W();return}}const A=e.headersList.get("content-type",true);const t=A!==null?a(A):"failure";const s=t!=="failure"&&t.essence==="text/event-stream";if(e.status!==200||s===false){this.close();this.dispatchEvent(new Event("error"));return}this.#J=I;this.dispatchEvent(new Event("open"));this.#w.origin=e.urlList[e.urlList.length-1].origin;const n=new i({eventSourceSettings:this.#w,maxEventSize:this.#t.eventSourceOptions?.maxEventSize,push:e=>{this.dispatchEvent(c(e.type,e.options))}});r(e.body.stream,n,e=>{if(e?.aborted===false){this.close();this.dispatchEvent(new Event("error"))}})};this.#V=s(e)}async#W(){if(this.#J===d)return;this.#J=u;this.dispatchEvent(new Event("error"));await g(this.#w.reconnectionTime);if(this.#J!==u)return;if(this.#w.lastEventId.length){this.#x.headersList.set("last-event-id",this.#w.lastEventId,true)}this.#O()}close(){o.brandCheck(this,EventSource);if(this.#J===d)return;this.#J=d;this.#V.abort();this.#x=null}get onopen(){return this.#H.open}set onopen(e){if(this.#H.open){this.removeEventListener("open",this.#H.open)}if(typeof e==="function"){this.#H.open=e;this.addEventListener("open",e)}else{this.#H.open=null}}get onmessage(){return this.#H.message}set onmessage(e){if(this.#H.message){this.removeEventListener("message",this.#H.message)}if(typeof e==="function"){this.#H.message=e;this.addEventListener("message",e)}else{this.#H.message=null}}get onerror(){return this.#H.error}set onerror(e){if(this.#H.error){this.removeEventListener("error",this.#H.error)}if(typeof e==="function"){this.#H.error=e;this.addEventListener("error",e)}else{this.#H.error=null}}}const w={CONNECTING:{__proto__:null,configurable:false,enumerable:true,value:u,writable:false},OPEN:{__proto__:null,configurable:false,enumerable:true,value:I,writable:false},CLOSED:{__proto__:null,configurable:false,enumerable:true,value:d,writable:false}};Object.defineProperties(EventSource,w);Object.defineProperties(EventSource.prototype,w);Object.defineProperties(EventSource.prototype,{close:Q,onerror:Q,onmessage:Q,onopen:Q,readyState:Q,url:Q,withCredentials:Q});o.converters.EventSourceInitDict=o.dictionaryConverter([{key:"withCredentials",converter:o.converters.boolean,defaultValue:()=>false},{key:"dispatcher",converter:o.converters.any,defaultValue:()=>h()}]);e.exports={EventSource:EventSource,defaultReconnectionTime:C}},4811:e=>{function isValidLastEventId(e){return e.indexOf("\0")===-1}function isASCIINumber(e){if(e.length===0)return false;for(let A=0;A57)return false}return true}function delay(e){return new Promise(A=>{setTimeout(A,e).unref()})}e.exports={isValidLastEventId:isValidLastEventId,isASCIINumber:isASCIINumber,delay:delay}},4492:(e,A,t)=>{const r=t(3440);const{ReadableStreamFrom:s,isBlobLike:n,isReadableStreamLike:o,readableStreamClose:i,createDeferredPromise:a,fullyReadBody:c,extractMimeType:l,utf8DecodeBytes:g}=t(3168);const{FormData:Q}=t(5910);const{kState:E}=t(3627);const{webidl:h}=t(5893);const{Blob:B}=t(4573);const C=t(4589);const{isErrored:u,isDisturbed:I}=t(7075);const{isArrayBuffer:d}=t(3429);const{serializeAMimeType:f}=t(1900);const{multipartFormDataParser:p}=t(116);let w;try{const e=t(7598);w=A=>e.randomInt(0,A)}catch{w=e=>Math.floor(Math.random(e))}const y=new TextEncoder;function noop(){}const m=globalThis.FinalizationRegistry&&process.version.indexOf("v18")!==0;let D;if(m){D=new FinalizationRegistry(e=>{const A=e.deref();if(A&&!A.locked&&!I(A)&&!u(A)){A.cancel("Response object has been garbage collected").catch(noop)}})}function extractBody(e,A=false){let t=null;if(e instanceof ReadableStream){t=e}else if(n(e)){t=e.stream()}else{t=new ReadableStream({async pull(e){const A=typeof c==="string"?y.encode(c):c;if(A.byteLength){e.enqueue(A)}queueMicrotask(()=>i(e))},start(){},type:"bytes"})}C(o(t));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 A=`----formdata-undici-0${`${w(1e11)}`.padStart(11,"0")}`;const t=`--${A}\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 s=new Uint8Array([13,10]);l=0;let n=false;for(const[A,o]of e){if(typeof o==="string"){const e=y.encode(t+`; name="${escape(normalizeLinefeeds(A))}"`+`\r\n\r\n${normalizeLinefeeds(o)}\r\n`);r.push(e);l+=e.byteLength}else{const e=y.encode(`${t}; name="${escape(normalizeLinefeeds(A))}"`+(o.name?`; filename="${escape(o.name)}"`:"")+"\r\n"+`Content-Type: ${o.type||"application/octet-stream"}\r\n\r\n`);r.push(e,o,s);if(typeof o.size==="number"){l+=e.byteLength+o.size+s.byteLength}else{n=true}}}const o=y.encode(`--${A}--\r\n`);r.push(o);l+=o.byteLength;if(n){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=${A}`}else if(n(e)){c=e;l=e.size;if(e.type){g=e.type}}else if(typeof e[Symbol.asyncIterator]==="function"){if(A){throw new TypeError("keepalive")}if(r.isDisturbed(e)||e.locked){throw new TypeError("Response body object should not be disturbed or locked")}t=e instanceof ReadableStream?e:s(e)}if(typeof c==="string"||r.isBuffer(c)){l=Buffer.byteLength(c)}if(a!=null){let A;t=new ReadableStream({async start(){A=a(e)[Symbol.asyncIterator]()},async pull(e){const{value:r,done:s}=await A.next();if(s){queueMicrotask(()=>{e.close();e.byobRequest?.respond(0)})}else{if(!u(t)){const A=new Uint8Array(r);if(A.byteLength){e.enqueue(A)}}}return e.desiredSize>0},async cancel(e){await A.return()},type:"bytes"})}const Q={stream:t,source:c,length:l};return[Q,g]}function safelyExtractBody(e,A=false){if(e instanceof ReadableStream){C(!r.isDisturbed(e),"The body has already been consumed.");C(!e.locked,"The stream is locked.")}return extractBody(e,A)}function cloneBody(e,A){const[t,r]=A.stream.tee();A.stream=t;return{stream:r,length:A.length,source:A.source}}function throwIfAborted(e){if(e.aborted){throw new DOMException("The operation was aborted.","AbortError")}}function bodyMixinMethods(e){const A={blob(){return consumeBody(this,e=>{let A=bodyMimeType(this);if(A===null){A=""}else if(A){A=f(A)}return new B([e],{type:A})},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 A=bodyMimeType(this);if(A!==null){switch(A.essence){case"multipart/form-data":{const t=p(e,A);if(t==="failure"){throw new TypeError("Failed to parse body as FormData.")}const r=new Q;r[E]=t;return r}case"application/x-www-form-urlencoded":{const A=new URLSearchParams(e.toString());const t=new Q;for(const[e,r]of A){t.append(e,r)}return t}}}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 A}function mixinBody(e){Object.assign(e.prototype,bodyMixinMethods(e))}async function consumeBody(e,A,t){h.brandCheck(e,t);if(bodyUnusable(e)){throw new TypeError("Body is unusable: Body has already been read")}throwIfAborted(e[E]);const r=a();const errorSteps=e=>r.reject(e);const successSteps=e=>{try{r.resolve(A(e))}catch(e){errorSteps(e)}};if(e[E].body==null){successSteps(Buffer.allocUnsafe(0));return r.promise}await c(e[E].body,successSteps,errorSteps);return r.promise}function bodyUnusable(e){const A=e[E].body;return A!=null&&(A.stream.locked||r.isDisturbed(A.stream))}function parseJSONFromBytes(e){return JSON.parse(g(e))}function bodyMimeType(e){const A=e[E].headersList;const t=l(A);if(t==="failure"){return null}return t}e.exports={extractBody:extractBody,safelyExtractBody:safelyExtractBody,cloneBody:cloneBody,mixinBody:mixinBody,streamRegistry:D,hasFinalizationRegistry:m,bodyUnusable:bodyUnusable}},4495:e=>{const A=["GET","HEAD","POST"];const t=new Set(A);const r=[101,204,205,304];const s=[301,302,303,307,308];const n=new Set(s);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 Q=new Set(g);const E=["navigate","same-origin","no-cors","cors"];const h=["omit","same-origin","include"];const B=["default","no-store","reload","no-cache","force-cache","only-if-cached"];const C=["content-encoding","content-language","content-location","content-type","content-length"];const u=["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:C,referrerPolicy:a,requestRedirect:l,requestMode:E,requestCredentials:h,requestCache:B,redirectStatus:s,corsSafeListedMethods:A,nullBodyStatus:r,safeMethods:g,badPorts:o,requestDuplex:u,subresourceSet:p,badPortsSet:i,redirectStatusSet:n,corsSafeListedMethodsSet:t,safeMethodsSet:Q,forbiddenMethodsSet:d,referrerPolicySet:c}},1900:(e,A,t)=>{const r=t(4589);const s=new TextEncoder;const n=/^[!#$%&'*+\-.^_|~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 A=URLSerializer(e,true);A=A.slice(5);const t={position:0};let s=collectASequenceOfCodePointsFast(",",A,t);const n=s.length;s=removeASCIIWhitespace(s,true,true);if(t.position>=A.length){return"failure"}t.position++;const o=A.slice(n+1);let i=stringPercentDecode(o);if(/;(\u0020){0,}base64$/i.test(s)){const e=isomorphicDecode(i);i=forgivingBase64(e);if(i==="failure"){return"failure"}s=s.slice(0,-6);s=s.replace(/(\u0020)+$/,"");s=s.slice(0,-1)}if(s.startsWith(";")){s="text/plain"+s}let a=parseMIMEType(s);if(a==="failure"){a=parseMIMEType("text/plain;charset=US-ASCII")}return{mimeType:a,body:i}}function URLSerializer(e,A=false){if(!A){return e.href}const t=e.href;const r=e.hash.length;const s=r===0?t:t.substring(0,t.length-r);if(!r&&t.endsWith("#")){return s.slice(0,-1)}return s}function collectASequenceOfCodePoints(e,A,t){let r="";while(t.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 A=e.length;const t=new Uint8Array(A);let r=0;for(let s=0;se.length){return"failure"}A.position++;let r=collectASequenceOfCodePointsFast(";",e,A);r=removeHTTPWhitespace(r,false,true);if(r.length===0||!n.test(r)){return"failure"}const s=t.toLowerCase();const i=r.toLowerCase();const c={type:s,subtype:i,parameters:new Map,essence:`${s}/${i}`};while(A.positiono.test(e),e,A);let t=collectASequenceOfCodePoints(e=>e!==";"&&e!=="=",e,A);t=t.toLowerCase();if(A.positione.length){break}let r=null;if(e[A.position]==='"'){r=collectAnHTTPQuotedString(e,A,true);collectASequenceOfCodePointsFast(";",e,A)}else{r=collectASequenceOfCodePointsFast(";",e,A);r=removeHTTPWhitespace(r,false,true);if(r.length===0){continue}}if(t.length!==0&&n.test(t)&&(r.length===0||a.test(r))&&!c.parameters.has(t)){c.parameters.set(t,r)}}return c}function forgivingBase64(e){e=e.replace(i,"");let A=e.length;if(A%4===0){if(e.charCodeAt(A-1)===61){--A;if(e.charCodeAt(A-1)===61){--A}}}if(A%4===1){return"failure"}if(/[^+/0-9A-Za-z]/.test(e.length===A?e:e.substring(0,A))){return"failure"}const t=Buffer.from(e,"base64");return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function collectAnHTTPQuotedString(e,A,t){const s=A.position;let n="";r(e[A.position]==='"');A.position++;while(true){n+=collectASequenceOfCodePoints(e=>e!=='"'&&e!=="\\",e,A);if(A.position>=e.length){break}const t=e[A.position];A.position++;if(t==="\\"){if(A.position>=e.length){n+="\\";break}n+=e[A.position];A.position++}else{r(t==='"');break}}if(t){return n}return e.slice(s,A.position)}function serializeAMimeType(e){r(e!=="failure");const{parameters:A,essence:t}=e;let s=t;for(let[e,t]of A.entries()){s+=";";s+=e;s+="=";if(!n.test(t)){t=t.replace(/(\\|")/g,"\\$1");t='"'+t;t+='"'}s+=t}return s}function isHTTPWhiteSpace(e){return e===13||e===10||e===9||e===32}function removeHTTPWhitespace(e,A=true,t=true){return removeChars(e,A,t,isHTTPWhiteSpace)}function isASCIIWhitespace(e){return e===13||e===10||e===9||e===12||e===32}function removeASCIIWhitespace(e,A=true,t=true){return removeChars(e,A,t,isASCIIWhitespace)}function removeChars(e,A,t,r){let s=0;let n=e.length-1;if(A){while(s0&&r(e.charCodeAt(n)))n--}return s===0&&n===e.length-1?e:e.slice(s,n+1)}function isomorphicDecode(e){const A=e.length;if((2<<15)-1>A){return String.fromCharCode.apply(null,e)}let t="";let r=0;let s=(2<<15)-1;while(rA){s=A-r}t+=String.fromCharCode.apply(null,e.subarray(r,r+=s))}return t}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:n,isomorphicDecode:isomorphicDecode}},6653:(e,A,t)=>{const{kConnected:r,kSize:s}=t(6443);class CompatWeakRef{constructor(e){this.value=e}deref(){return this.value[r]===0&&this.value[s]===0?undefined:this.value}}class CompatFinalizer{constructor(e){this.finalizer=e}register(e,A){if(e.on){e.on("disconnect",()=>{if(e[r]===0&&e[s]===0){this.finalizer(A)}})}}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,A,t)=>{const{Blob:r,File:s}=t(4573);const{kState:n}=t(3627);const{webidl:o}=t(5893);class FileLike{constructor(e,A,t={}){const r=A;const s=t.type;const o=t.lastModified??Date.now();this[n]={blobLike:e,name:r,type:s,lastModified:o}}stream(...e){o.brandCheck(this,FileLike);return this[n].blobLike.stream(...e)}arrayBuffer(...e){o.brandCheck(this,FileLike);return this[n].blobLike.arrayBuffer(...e)}slice(...e){o.brandCheck(this,FileLike);return this[n].blobLike.slice(...e)}text(...e){o.brandCheck(this,FileLike);return this[n].blobLike.text(...e)}get size(){o.brandCheck(this,FileLike);return this[n].blobLike.size}get type(){o.brandCheck(this,FileLike);return this[n].blobLike.type}get name(){o.brandCheck(this,FileLike);return this[n].name}get lastModified(){o.brandCheck(this,FileLike);return this[n].lastModified}get[Symbol.toStringTag](){return"File"}}o.converters.Blob=o.interfaceConverter(r);function isFileLike(e){return e instanceof s||e&&(typeof e.stream==="function"||typeof e.arrayBuffer==="function")&&e[Symbol.toStringTag]==="File"}e.exports={FileLike:FileLike,isFileLike:isFileLike}},116:(e,A,t)=>{const{isUSVString:r,bufferToLowerCasedHeaderName:s}=t(3440);const{utf8DecodeBytes:n}=t(3168);const{HTTP_TOKEN_CODEPOINTS:o,isomorphicDecode:i}=t(1900);const{isFileLike:a}=t(7114);const{makeEntry:c}=t(5910);const l=t(4589);const{File:g}=t(4573);const Q=globalThis.File??g;const E=Buffer.from('form-data; name="');const h=Buffer.from("; filename");const B=Buffer.from("--");const C=Buffer.from("--\r\n");function isAsciiString(e){for(let A=0;A70){return false}for(let t=0;t=48&&A<=57||A>=65&&A<=90||A>=97&&A<=122||A===39||A===45||A===95)){return false}}return true}function multipartFormDataParser(e,A){l(A!=="failure"&&A.essence==="multipart/form-data");const t=A.parameters.get("boundary");if(t===undefined){return"failure"}const s=Buffer.from(`--${t}`,"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+s.length).equals(s)){i.position+=s.length}else{return"failure"}if(i.position===e.length-2&&bufferStartsWith(e,B,i)||i.position===e.length-4&&bufferStartsWith(e,C,i)){return o}if(e[i.position]!==13||e[i.position+1]!==10){return"failure"}i.position+=2;const A=parseMultipartFormDataHeaders(e,i);if(A==="failure"){return"failure"}let{name:t,filename:g,contentType:E,encoding:h}=A;i.position+=2;let u;{const A=e.indexOf(s.subarray(2),i.position);if(A===-1){return"failure"}u=e.subarray(i.position,A-4);i.position+=u.length;if(h==="base64"){u=Buffer.from(u.toString(),"base64")}}if(e[i.position]!==13||e[i.position+1]!==10){return"failure"}else{i.position+=2}let I;if(g!==null){E??="text/plain";if(!isAsciiString(E)){E=""}I=new Q([u],g,{type:E})}else{I=n(Buffer.from(u))}l(r(t));l(typeof I==="string"&&r(I)||a(I));o.push(c(t,I,g))}}function parseMultipartFormDataHeaders(e,A){let t=null;let r=null;let n=null;let a=null;while(true){if(e[A.position]===13&&e[A.position+1]===10){if(t===null){return"failure"}return{name:t,filename:r,contentType:n,encoding:a}}let c=collectASequenceOfBytes(e=>e!==10&&e!==13&&e!==58,e,A);c=removeChars(c,true,true,e=>e===9||e===32);if(!o.test(c.toString())){return"failure"}if(e[A.position]!==58){return"failure"}A.position++;collectASequenceOfBytes(e=>e===32||e===9,e,A);switch(s(c)){case"content-disposition":{t=r=null;if(!bufferStartsWith(e,E,A)){return"failure"}A.position+=17;t=parseMultipartFormDataName(e,A);if(t===null){return"failure"}if(bufferStartsWith(e,h,A)){let t=A.position+h.length;if(e[t]===42){A.position+=1;t+=1}if(e[t]!==61||e[t+1]!==34){return"failure"}A.position+=12;r=parseMultipartFormDataName(e,A);if(r===null){return"failure"}}break}case"content-type":{let t=collectASequenceOfBytes(e=>e!==10&&e!==13,e,A);t=removeChars(t,false,true,e=>e===9||e===32);n=i(t);break}case"content-transfer-encoding":{let t=collectASequenceOfBytes(e=>e!==10&&e!==13,e,A);t=removeChars(t,false,true,e=>e===9||e===32);a=i(t);break}default:{collectASequenceOfBytes(e=>e!==10&&e!==13,e,A)}}if(e[A.position]!==13&&e[A.position+1]!==10){return"failure"}else{A.position+=2}}}function parseMultipartFormDataName(e,A){l(e[A.position-1]===34);let t=collectASequenceOfBytes(e=>e!==10&&e!==13&&e!==34,e,A);if(e[A.position]!==34){return null}else{A.position++}t=(new TextDecoder).decode(t).replace(/%0A/gi,"\n").replace(/%0D/gi,"\r").replace(/%22/g,'"');return t}function collectASequenceOfBytes(e,A,t){let r=t.position;while(r0&&r(e[n]))n--}return s===0&&n===e.length-1?e:e.subarray(s,n+1)}function bufferStartsWith(e,A,t){if(e.length{const{isBlobLike:r,iteratorMixin:s}=t(3168);const{kState:n}=t(3627);const{kEnumerableProperty:o}=t(3440);const{FileLike:i,isFileLike:a}=t(7114);const{webidl:c}=t(5893);const{File:l}=t(4573);const g=t(7975);const Q=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[n]=[]}append(e,A,t=undefined){c.brandCheck(this,FormData);const s="FormData.append";c.argumentLengthCheck(arguments,2,s);if(arguments.length===3&&!r(A)){throw new TypeError("Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'")}e=c.converters.USVString(e,s,"name");A=r(A)?c.converters.Blob(A,s,"value",{strict:false}):c.converters.USVString(A,s,"value");t=arguments.length===3?c.converters.USVString(t,s,"filename"):undefined;const o=makeEntry(e,A,t);this[n].push(o)}delete(e){c.brandCheck(this,FormData);const A="FormData.delete";c.argumentLengthCheck(arguments,1,A);e=c.converters.USVString(e,A,"name");this[n]=this[n].filter(A=>A.name!==e)}get(e){c.brandCheck(this,FormData);const A="FormData.get";c.argumentLengthCheck(arguments,1,A);e=c.converters.USVString(e,A,"name");const t=this[n].findIndex(A=>A.name===e);if(t===-1){return null}return this[n][t].value}getAll(e){c.brandCheck(this,FormData);const A="FormData.getAll";c.argumentLengthCheck(arguments,1,A);e=c.converters.USVString(e,A,"name");return this[n].filter(A=>A.name===e).map(e=>e.value)}has(e){c.brandCheck(this,FormData);const A="FormData.has";c.argumentLengthCheck(arguments,1,A);e=c.converters.USVString(e,A,"name");return this[n].findIndex(A=>A.name===e)!==-1}set(e,A,t=undefined){c.brandCheck(this,FormData);const s="FormData.set";c.argumentLengthCheck(arguments,2,s);if(arguments.length===3&&!r(A)){throw new TypeError("Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'")}e=c.converters.USVString(e,s,"name");A=r(A)?c.converters.Blob(A,s,"name",{strict:false}):c.converters.USVString(A,s,"name");t=arguments.length===3?c.converters.USVString(t,s,"name"):undefined;const o=makeEntry(e,A,t);const i=this[n].findIndex(A=>A.name===e);if(i!==-1){this[n]=[...this[n].slice(0,i),o,...this[n].slice(i+1).filter(A=>A.name!==e)]}else{this[n].push(o)}}[g.inspect.custom](e,A){const t=this[n].reduce((e,A)=>{if(e[A.name]){if(Array.isArray(e[A.name])){e[A.name].push(A.value)}else{e[A.name]=[e[A.name],A.value]}}else{e[A.name]=A.value}return e},{__proto__:null});A.depth??=e;A.colors??=true;const r=g.formatWithOptions(A,t);return`FormData ${r.slice(r.indexOf("]")+2)}`}}s("FormData",FormData,n,"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,A,t){if(typeof A==="string"){}else{if(!a(A)){A=A instanceof Blob?new Q([A],"blob",{type:A.type}):new i(A,"blob",{type:A.type})}if(t!==undefined){const e={type:A.type,lastModified:A.lastModified};A=A instanceof l?new Q([A],t,e):new i(A,t,e)}}return{name:e,value:A}}e.exports={FormData:FormData,makeEntry:makeEntry}},1059:e=>{const A=Symbol.for("undici.globalOrigin.1");function getGlobalOrigin(){return globalThis[A]}function setGlobalOrigin(e){if(e===undefined){Object.defineProperty(globalThis,A,{value:undefined,writable:true,enumerable:false,configurable:false});return}const t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:"){throw new TypeError(`Only http & https urls are allowed, received ${t.protocol}`)}Object.defineProperty(globalThis,A,{value:t,writable:true,enumerable:false,configurable:false})}e.exports={getGlobalOrigin:getGlobalOrigin,setGlobalOrigin:setGlobalOrigin}},660:(e,A,t)=>{const{kConstruct:r}=t(6443);const{kEnumerableProperty:s}=t(3440);const{iteratorMixin:n,isValidHeaderName:o,isValidHeaderValue:i}=t(3168);const{webidl:a}=t(5893);const c=t(4589);const l=t(7975);const g=Symbol("headers map");const Q=Symbol("headers map sorted");function isHTTPWhiteSpaceCharCode(e){return e===10||e===13||e===9||e===32}function headerValueNormalize(e){let A=0;let t=e.length;while(t>A&&isHTTPWhiteSpaceCharCode(e.charCodeAt(t-1)))--t;while(t>A&&isHTTPWhiteSpaceCharCode(e.charCodeAt(A)))++A;return A===0&&t===e.length?e:e.substring(A,t)}function fill(e,A){if(Array.isArray(A)){for(let t=0;t>","record"]})}}function appendHeader(e,A,t){t=headerValueNormalize(t);if(!o(A)){throw a.errors.invalidArgument({prefix:"Headers.append",value:A,type:"header name"})}else if(!i(t)){throw a.errors.invalidArgument({prefix:"Headers.append",value:t,type:"header value"})}if(E(e)==="immutable"){throw new TypeError("immutable")}return B(e).append(A,t,false)}function compareHeaderName(e,A){return e[0]>1);if(A[i][0]<=a[0]){o=i+1}else{n=i}}if(r!==i){s=r;while(s>o){A[s]=A[--s]}A[o]=a}}if(!t.next().done){throw new TypeError("Unreachable")}return A}else{let e=0;for(const{0:t,1:{value:r}}of this[g]){A[e++]=[t,r];c(r!==null)}return A.sort(compareHeaderName)}}}class Headers{#P;#q;constructor(e=undefined){a.util.markAsUncloneable(this);if(e===r){return}this.#q=new HeadersList;this.#P="none";if(e!==undefined){e=a.converters.HeadersInit(e,"Headers contructor","init");fill(this,e)}}append(e,A){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,2,"Headers.append");const t="Headers.append";e=a.converters.ByteString(e,t,"name");A=a.converters.ByteString(A,t,"value");return appendHeader(this,e,A)}delete(e){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,1,"Headers.delete");const A="Headers.delete";e=a.converters.ByteString(e,A,"name");if(!o(e)){throw a.errors.invalidArgument({prefix:"Headers.delete",value:e,type:"header name"})}if(this.#P==="immutable"){throw new TypeError("immutable")}if(!this.#q.contains(e,false)){return}this.#q.delete(e,false)}get(e){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,1,"Headers.get");const A="Headers.get";e=a.converters.ByteString(e,A,"name");if(!o(e)){throw a.errors.invalidArgument({prefix:A,value:e,type:"header name"})}return this.#q.get(e,false)}has(e){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,1,"Headers.has");const A="Headers.has";e=a.converters.ByteString(e,A,"name");if(!o(e)){throw a.errors.invalidArgument({prefix:A,value:e,type:"header name"})}return this.#q.contains(e,false)}set(e,A){a.brandCheck(this,Headers);a.argumentLengthCheck(arguments,2,"Headers.set");const t="Headers.set";e=a.converters.ByteString(e,t,"name");A=a.converters.ByteString(A,t,"value");A=headerValueNormalize(A);if(!o(e)){throw a.errors.invalidArgument({prefix:t,value:e,type:"header name"})}else if(!i(A)){throw a.errors.invalidArgument({prefix:t,value:A,type:"header value"})}if(this.#P==="immutable"){throw new TypeError("immutable")}this.#q.set(e,A,false)}getSetCookie(){a.brandCheck(this,Headers);const e=this.#q.cookies;if(e){return[...e]}return[]}get[Q](){if(this.#q[Q]){return this.#q[Q]}const e=[];const A=this.#q.toSortedArray();const t=this.#q.cookies;if(t===null||t.length===1){return this.#q[Q]=A}for(let r=0;r>"](e,A,t,r.bind(e))}return a.converters["record"](e,A,t)}throw a.errors.conversionFailed({prefix:"Headers constructor",argument:"Argument 1",types:["sequence>","record"]})};e.exports={fill:fill,compareHeaderName:compareHeaderName,Headers:Headers,HeadersList:HeadersList,getHeadersGuard:E,setHeadersGuard:h,setHeadersList:C,getHeadersList:B}},4398:(e,A,t)=>{const{makeNetworkError:r,makeAppropriateNetworkError:s,filterResponse:n,makeResponse:o,fromInnerResponse:i}=t(9051);const{HeadersList:a}=t(660);const{Request:c,cloneRequest:l}=t(9967);const g=t(8522);const{bytesMatch:Q,makePolicyContainer:E,clonePolicyContainer:h,requestBadPort:B,TAOCheck:C,appendRequestOriginHeader:u,responseLocationURL:I,requestCurrentURL:d,setRequestReferrerPolicyOnRedirect:f,tryUpgradeRequestToAPotentiallyTrustworthyURL:p,createOpaqueTimingInfo:w,appendFetchMetadata:y,corsCheck:m,crossOriginResourcePolicyCheck:D,determineRequestsReferrer:k,coarsenedSharedCurrentTime:R,createDeferredPromise:b,isBlobLike:F,sameOrigin:S,isCancelled:N,isAborted:M,isErrorLike:U,fullyReadBody:L,readableStreamClose:T,isomorphicEncode:v,urlIsLocal:H,urlIsHttpHttpsScheme:Y,urlHasHttpsScheme:G,clampAndCoarsenConnectionTimingInfo:J,simpleRangeHeaderValue:x,buildContentRange:V,createInflate:O,extractMimeType:W}=t(3168);const{kState:P,kDispatcher:q}=t(3627);const _=t(4589);const{safelyExtractBody:z,extractBody:Z}=t(4492);const{redirectStatusSet:K,nullBodyStatus:X,safeMethodsSet:j,requestBodyHeader:$,subresourceSet:ee}=t(4495);const Ae=t(8474);const{Readable:te,pipeline:re,finished:se}=t(7075);const{addAbortListener:ne,isErrored:oe,isReadable:ie,bufferToLowerCasedHeaderName:ae}=t(3440);const{dataURLProcessor:ce,serializeAMimeType:le,minimizeSupportedMimeType:ge}=t(1900);const{getGlobalDispatcher:Qe}=t(2581);const{webidl:Ee}=t(5893);const{STATUS_CODES:he}=t(7067);const Be=["GET","HEAD"];const Ce=typeof __UNDICI_IS_NODE__!=="undefined"||typeof esbuildDetection!=="undefined"?"node":"undici";let ue;class Fetch extends Ae{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,A=undefined){Ee.argumentLengthCheck(arguments,1,"globalThis.fetch");let t=b();let r;try{r=new c(e,A)}catch(e){t.reject(e);return t.promise}const s=r[P];if(r.signal.aborted){abortFetch(t,s,null,r.signal.reason);return t.promise}const n=s.client.globalObject;if(n?.constructor?.name==="ServiceWorkerGlobalScope"){s.serviceWorkers="none"}let o=null;let a=false;let l=null;ne(r.signal,()=>{a=true;_(l!=null);l.abort(r.signal.reason);const e=o?.deref();abortFetch(t,s,e,r.signal.reason)});const processResponse=e=>{if(a){return}if(e.aborted){abortFetch(t,s,o,l.serializedAbortReason);return}if(e.type==="error"){t.reject(new TypeError("fetch failed",{cause:e.error}));return}o=new WeakRef(i(e,"immutable"));t.resolve(o.deref());t=null};l=fetching({request:s,processResponseEndOfBody:handleFetchDone,processResponse:processResponse,dispatcher:r[q]});return t.promise}function finalizeAndReportTiming(e,A="other"){if(e.type==="error"&&e.aborted){return}if(!e.urlList?.length){return}const t=e.urlList[0];let r=e.timingInfo;let s=e.cacheState;if(!Y(t)){return}if(r===null){return}if(!e.timingAllowPassed){r=w({startTime:r.startTime});s=""}r.endTime=R();e.timingInfo=r;Ie(r,t.href,A,globalThis,s)}const Ie=performance.markResourceTiming;function abortFetch(e,A,t,r){if(e){e.reject(r)}if(A.body!=null&&ie(A.body?.stream)){A.body.stream.cancel(r).catch(e=>{if(e.code==="ERR_INVALID_STATE"){return}throw e})}if(t==null){return}const s=t[P];if(s.body!=null&&ie(s.body?.stream)){s.body.stream.cancel(r).catch(e=>{if(e.code==="ERR_INVALID_STATE"){return}throw e})}}function fetching({request:e,processRequestBodyChunkLength:A,processRequestEndOfBody:t,processResponse:r,processResponseEndOfBody:s,processResponseConsumeBody:n,useParallelQueue:o=false,dispatcher:i=Qe()}){_(i);let a=null;let c=false;if(e.client!=null){a=e.client.globalObject;c=e.client.crossOriginIsolatedCapability}const l=R(c);const g=w({startTime:l});const Q={controller:new Fetch(i),request:e,timingInfo:g,processRequestBodyChunkLength:A,processRequestEndOfBody:t,processResponse:r,processResponseConsumeBody:n,processResponseEndOfBody:s,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=h(e.client.policyContainer)}else{e.policyContainer=E()}}if(!e.headersList.contains("accept",true)){const A="*/*";e.headersList.append("accept",A,true)}if(!e.headersList.contains("accept-language",true)){e.headersList.append("accept-language","*",true)}if(e.priority===null){}if(ee.has(e.destination)){}mainFetch(Q).catch(e=>{Q.controller.terminate(e)});return Q.controller}async function mainFetch(e,A=false){const t=e.request;let s=null;if(t.localURLsOnly&&!H(d(t))){s=r("local URLs only")}p(t);if(B(t)==="blocked"){s=r("bad port")}if(t.referrerPolicy===""){t.referrerPolicy=t.policyContainer.referrerPolicy}if(t.referrer!=="no-referrer"){t.referrer=k(t)}if(s===null){s=await(async()=>{const A=d(t);if(S(A,t.url)&&t.responseTainting==="basic"||A.protocol==="data:"||(t.mode==="navigate"||t.mode==="websocket")){t.responseTainting="basic";return await schemeFetch(e)}if(t.mode==="same-origin"){return r('request mode cannot be "same-origin"')}if(t.mode==="no-cors"){if(t.redirect!=="follow"){return r('redirect mode cannot be "follow" for "no-cors" request')}t.responseTainting="opaque";return await schemeFetch(e)}if(!Y(d(t))){return r("URL scheme must be a HTTP(S) scheme")}t.responseTainting="cors";return await httpFetch(e)})()}if(A){return s}if(s.status!==0&&!s.internalResponse){if(t.responseTainting==="cors"){}if(t.responseTainting==="basic"){s=n(s,"basic")}else if(t.responseTainting==="cors"){s=n(s,"cors")}else if(t.responseTainting==="opaque"){s=n(s,"opaque")}else{_(false)}}let o=s.status===0?s:s.internalResponse;if(o.urlList.length===0){o.urlList.push(...t.urlList)}if(!t.timingAllowFailed){s.timingAllowPassed=true}if(s.type==="opaque"&&o.status===206&&o.rangeRequested&&!t.headers.contains("range",true)){s=o=r()}if(s.status!==0&&(t.method==="HEAD"||t.method==="CONNECT"||X.includes(o.status))){o.body=null;e.controller.dump=true}if(t.integrity){const processBodyError=A=>fetchFinale(e,r(A));if(t.responseTainting==="opaque"||s.body==null){processBodyError(s.error);return}const processBody=A=>{if(!Q(A,t.integrity)){processBodyError("integrity mismatch");return}s.body=z(A)[0];fetchFinale(e,s)};await L(s.body,processBody,processBodyError)}else{fetchFinale(e,s)}}function schemeFetch(e){if(N(e)&&e.request.redirectCount===0){return Promise.resolve(s(e))}const{request:A}=e;const{protocol:n}=d(A);switch(n){case"about:":{return Promise.resolve(r("about scheme is not supported"))}case"blob:":{if(!ue){ue=t(4573).resolveObjectURL}const e=d(A);if(e.search.length!==0){return Promise.resolve(r("NetworkError when attempting to fetch resource."))}const s=ue(e.toString());if(A.method!=="GET"||!F(s)){return Promise.resolve(r("invalid method"))}const n=o();const i=s.size;const a=v(`${i}`);const c=s.type;if(!A.headersList.contains("range",true)){const e=Z(s);n.statusText="OK";n.body=e[0];n.headersList.set("content-length",a,true);n.headersList.set("content-type",c,true)}else{n.rangeRequested=true;const e=A.headersList.get("range",true);const t=x(e,true);if(t==="failure"){return Promise.resolve(r("failed to fetch the data URL"))}let{rangeStartValue:o,rangeEndValue:a}=t;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=s.slice(o,a,c);const g=Z(l);n.body=g[0];const Q=v(`${l.size}`);const E=V(o,a,i);n.status=206;n.statusText="Partial Content";n.headersList.set("content-length",Q,true);n.headersList.set("content-type",c,true);n.headersList.set("content-range",E,true)}return Promise.resolve(n)}case"data:":{const e=d(A);const t=ce(e);if(t==="failure"){return Promise.resolve(r("failed to fetch the data URL"))}const s=le(t.mimeType);return Promise.resolve(o({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:s}]],body:z(t.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,A){e.request.done=true;if(e.processResponseDone!=null){queueMicrotask(()=>e.processResponseDone(A))}}function fetchFinale(e,A){let t=e.timingInfo;const processResponseEndOfBody=()=>{const r=Date.now();if(e.request.destination==="document"){e.controller.fullTimingInfo=t}e.controller.reportTimingSteps=()=>{if(e.request.url.protocol!=="https:"){return}t.endTime=r;let s=A.cacheState;const n=A.bodyInfo;if(!A.timingAllowPassed){t=w(t);s=""}let o=0;if(e.request.mode!=="navigator"||!A.hasCrossOriginRedirects){o=A.status;const e=W(A.headersList);if(e!=="failure"){n.contentType=ge(e)}}if(e.request.initiatorType!=null){Ie(t,e.request.url.href,e.request.initiatorType,globalThis,s,n,o)}};const processResponseEndOfBodyTask=()=>{e.request.done=true;if(e.processResponseEndOfBody!=null){queueMicrotask(()=>e.processResponseEndOfBody(A))}if(e.request.initiatorType!=null){e.controller.reportTimingSteps()}};queueMicrotask(()=>processResponseEndOfBodyTask())};if(e.processResponse!=null){queueMicrotask(()=>{e.processResponse(A);e.processResponse=null})}const r=A.type==="error"?A:A.internalResponse??A;if(r.body==null){processResponseEndOfBody()}else{se(r.body.stream,()=>{processResponseEndOfBody()})}}async function httpFetch(e){const A=e.request;let t=null;let s=null;const n=e.timingInfo;if(A.serviceWorkers==="all"){}if(t===null){if(A.redirect==="follow"){A.serviceWorkers="none"}s=t=await httpNetworkOrCacheFetch(e);if(A.responseTainting==="cors"&&m(A,t)==="failure"){return r("cors failure")}if(C(A,t)==="failure"){A.timingAllowFailed=true}}if((A.responseTainting==="opaque"||t.type==="opaque")&&D(A.origin,A.client,A.destination,s)==="blocked"){return r("blocked")}if(K.has(s.status)){if(A.redirect!=="manual"){e.controller.connection.destroy(undefined,false)}if(A.redirect==="error"){t=r("unexpected redirect")}else if(A.redirect==="manual"){t=s}else if(A.redirect==="follow"){t=await httpRedirectFetch(e,t)}else{_(false)}}t.timingInfo=n;return t}function httpRedirectFetch(e,A){const t=e.request;const s=A.internalResponse?A.internalResponse:A;let n;try{n=I(s,d(t).hash);if(n==null){return A}}catch(e){return Promise.resolve(r(e))}if(!Y(n)){return Promise.resolve(r("URL scheme must be a HTTP(S) scheme"))}if(t.redirectCount===20){return Promise.resolve(r("redirect count exceeded"))}t.redirectCount+=1;if(t.mode==="cors"&&(n.username||n.password)&&!S(t,n)){return Promise.resolve(r('cross origin not allowed for request mode "cors"'))}if(t.responseTainting==="cors"&&(n.username||n.password)){return Promise.resolve(r('URL cannot contain credentials for request mode "cors"'))}if(s.status!==303&&t.body!=null&&t.body.source==null){return Promise.resolve(r())}if([301,302].includes(s.status)&&t.method==="POST"||s.status===303&&!Be.includes(t.method)){t.method="GET";t.body=null;for(const e of $){t.headersList.delete(e)}}if(!S(d(t),n)){t.headersList.delete("authorization",true);t.headersList.delete("proxy-authorization",true);t.headersList.delete("cookie",true);t.headersList.delete("host",true)}if(t.body!=null){_(t.body.source!=null);t.body=z(t.body.source)[0]}const o=e.timingInfo;o.redirectEndTime=o.postRedirectStartTime=R(e.crossOriginIsolatedCapability);if(o.redirectStartTime===0){o.redirectStartTime=o.startTime}t.urlList.push(n);f(t,s);return mainFetch(e,true)}async function httpNetworkOrCacheFetch(e,A=false,t=false){const n=e.request;let o=null;let i=null;let a=null;const c=null;const g=false;if(n.window==="no-window"&&n.redirect==="error"){o=e;i=n}else{i=l(n);o={...e};o.request=i}const Q=n.credentials==="include"||n.credentials==="same-origin"&&n.responseTainting==="basic";const E=i.body?i.body.length:null;let h=null;if(i.body==null&&["POST","PUT"].includes(i.method)){h="0"}if(E!=null){h=v(`${E}`)}if(h!=null){i.headersList.append("content-length",h,true)}if(E!=null&&i.keepalive){}if(i.referrer instanceof URL){i.headersList.append("referer",v(i.referrer.href),true)}u(i);y(i);if(!i.headersList.contains("user-agent",true)){i.headersList.append("user-agent",Ce)}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(G(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(Q){}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,Q,t);if(!j.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=Q;if(a.status===407){if(n.window==="no-window"){return r()}if(N(e)){return s(e)}return r("proxy authentication required")}if(a.status===421&&!t&&(n.body==null||n.body.source!=null)){if(N(e)){return s(e)}e.controller.connection.destroy();a=await httpNetworkOrCacheFetch(e,A,true)}if(A){}return a}async function httpNetworkFetch(e,A=false,t=false){_(!e.controller.connection||e.controller.connection.destroyed);e.controller.connection={abort:null,destroyed:false,destroy(e,A=true){if(!this.destroyed){this.destroyed=true;if(A){this.abort?.(e??new DOMException("The operation was aborted.","AbortError"))}}}};const n=e.request;let i=null;const c=e.timingInfo;const l=null;if(l==null){n.cache="no-store"}const Q=t?"yes":"no";if(n.mode==="websocket"){}else{}let E=null;if(n.body==null&&e.processRequestEndOfBody){queueMicrotask(()=>e.processRequestEndOfBody())}else if(n.body!=null){const processBodyChunk=async function*(A){if(N(e)){return}yield A;e.processRequestBodyChunkLength?.(A.byteLength)};const processEndOfBody=()=>{if(N(e)){return}if(e.processRequestEndOfBody){e.processRequestEndOfBody()}};const processBodyError=A=>{if(N(e)){return}if(A.name==="AbortError"){e.controller.abort()}else{e.controller.terminate(A)}};E=async function*(){try{for await(const e of n.body.stream){yield*processBodyChunk(e)}processEndOfBody()}catch(e){processBodyError(e)}}()}try{const{body:A,status:t,statusText:r,headersList:s,socket:n}=await dispatch({body:E});if(n){i=o({status:t,statusText:r,headersList:s,socket:n})}else{const n=A[Symbol.asyncIterator]();e.controller.next=()=>n.next();i=o({status:t,statusText:r,headersList:s})}}catch(A){if(A.name==="AbortError"){e.controller.connection.destroy();return s(e,A)}return r(A)}const pullAlgorithm=async()=>{await e.controller.resume()};const cancelAlgorithm=A=>{if(!N(e)){e.controller.abort(A)}};const h=new ReadableStream({async start(A){e.controller.controller=A},async pull(e){await pullAlgorithm(e)},async cancel(e){await cancelAlgorithm(e)},type:"bytes"});i.body={stream:h,source:null,length:null};if(!e.controller.resume){e.controller.on("terminated",onAborted)}e.controller.resume=async()=>{while(true){let A;let t;try{const{done:t,value:r}=await e.controller.next();if(M(e)){break}A=t?undefined:r}catch(r){if(e.controller.ended&&!c.encodedBodySize){A=undefined}else{A=r;t=true}}if(A===undefined){T(e.controller.controller);finalizeResponse(e,i);return}c.decodedBodySize+=A?.byteLength??0;if(t){e.controller.terminate(A);return}const r=new Uint8Array(A);if(r.byteLength){e.controller.controller.enqueue(r)}if(oe(h)){e.controller.terminate();return}if(e.controller.controller.desiredSize<=0){return}}};function onAborted(A){if(M(e)){i.aborted=true;if(ie(h)){e.controller.controller.error(e.controller.serializedAbortReason)}}else{if(ie(h)){e.controller.controller.error(new TypeError("terminated",{cause:U(A)?A:undefined}))}}e.controller.connection.destroy()}return i;function dispatch({body:A}){const t=d(n);const r=e.controller.dispatcher;return new Promise((s,o)=>r.dispatch({path:t.pathname+t.search,origin:t.origin,method:n.method,body:r.isMockActive?n.body&&(n.body.source||n.body.stream):A,headers:n.headersList.entries,maxRedirections:0,upgrade:n.mode==="websocket"?"websocket":undefined},{body:null,abort:null,onConnect(A){const{connection:t}=e.controller;c.finalConnectionTimingInfo=J(undefined,c.postRedirectStartTime,e.crossOriginIsolatedCapability);if(t.destroyed){A(new DOMException("The operation was aborted.","AbortError"))}else{e.controller.on("terminated",A);this.abort=t.abort=A}c.finalNetworkRequestStartTime=R(e.crossOriginIsolatedCapability)},onResponseStarted(){c.finalNetworkResponseStartTime=R(e.crossOriginIsolatedCapability)},onHeaders(e,A,t,r){if(e<200){return}let o="";const i=new a;for(let e=0;et){this.abort(new Error(`too many content-encodings in response: ${A.length}, maximum allowed is ${t}`));return true}for(let e=A.length-1;e>=0;--e){const t=A[e].trim();if(t==="x-gzip"||t==="gzip"){c.push(g.createGunzip({flush:g.constants.Z_SYNC_FLUSH,finishFlush:g.constants.Z_SYNC_FLUSH}))}else if(t==="deflate"){c.push(O({flush:g.constants.Z_SYNC_FLUSH,finishFlush:g.constants.Z_SYNC_FLUSH}))}else if(t==="br"){c.push(g.createBrotliDecompress({flush:g.constants.BROTLI_OPERATION_FLUSH,finishFlush:g.constants.BROTLI_OPERATION_FLUSH}))}else{c.length=0;break}}}this.body=new te({read:t});const Q=this.onError.bind(this);s({status:e,statusText:r,headersList:i,body:c.length?re(this.body,...c,e=>{if(e){this.onError(e)}}).on("error",Q):this.body.on("error",Q)});return true},onData(A){if(e.controller.dump){return}const t=A;c.encodedBodySize+=t.byteLength;return this.body.push(t)},onComplete(){if(this.abort){e.controller.off("terminated",this.abort)}e.controller.ended=true;this.body.push(null)},onError(A){if(this.abort){e.controller.off("terminated",this.abort)}this.body?.destroy(A);e.controller.terminate(A);o(A)},onUpgrade(e,A,t){if(e!==101){return}const r=new a;for(let e=0;e{const{extractBody:r,mixinBody:s,cloneBody:n,bodyUnusable:o}=t(4492);const{Headers:i,fill:a,HeadersList:c,setHeadersGuard:l,getHeadersGuard:g,setHeadersList:Q,getHeadersList:E}=t(660);const{FinalizationRegistry:h}=t(6653)();const B=t(3440);const C=t(7975);const{isValidHTTPToken:u,sameOrigin:I,environmentSettingsObject:d}=t(3168);const{forbiddenMethodsSet:f,corsSafeListedMethodsSet:p,referrerPolicy:w,requestRedirect:y,requestMode:m,requestCredentials:D,requestCache:k,requestDuplex:R}=t(4495);const{kEnumerableProperty:b,normalizedMethodRecordsBase:F,normalizedMethodRecords:S}=B;const{kHeaders:N,kSignal:M,kState:U,kDispatcher:L}=t(3627);const{webidl:T}=t(5893);const{URLSerializer:v}=t(1900);const{kConstruct:H}=t(6443);const Y=t(4589);const{getMaxListeners:G,setMaxListeners:J,getEventListeners:x,defaultMaxListeners:V}=t(8474);const O=Symbol("abortController");const W=new h(({signal:e,abort:A})=>{e.removeEventListener("abort",A)});const P=new WeakMap;function buildAbort(e){return abort;function abort(){const A=e.deref();if(A!==undefined){W.unregister(abort);this.removeEventListener("abort",abort);A.abort(this.reason);const e=P.get(A.signal);if(e!==undefined){if(e.size!==0){for(const A of e){const e=A.deref();if(e!==undefined){e.abort(this.reason)}}e.clear()}P.delete(A.signal)}}}}let q=false;class Request{constructor(e,A={}){T.util.markAsUncloneable(this);if(e===H){return}const t="Request constructor";T.argumentLengthCheck(arguments,1,t);e=T.converters.RequestInfo(e,t,"input");A=T.converters.RequestInit(A,t,"init");let s=null;let n=null;const g=d.settingsObject.baseUrl;let h=null;if(typeof e==="string"){this[L]=A.dispatcher;let t;try{t=new URL(e,g)}catch(A){throw new TypeError("Failed to parse URL from "+e,{cause:A})}if(t.username||t.password){throw new TypeError("Request cannot be constructed from a URL that includes credentials: "+e)}s=makeRequest({urlList:[t]});n="cors"}else{this[L]=A.dispatcher||e[L];Y(e instanceof Request);s=e[U];h=e[M]}const C=d.settingsObject.origin;let w="client";if(s.window?.constructor?.name==="EnvironmentSettingsObject"&&I(s.window,C)){w=s.window}if(A.window!=null){throw new TypeError(`'window' option '${w}' must be null`)}if("window"in A){w="no-window"}s=makeRequest({method:s.method,headersList:s.headersList,unsafeRequest:s.unsafeRequest,client:d.settingsObject,window:w,priority:s.priority,origin:s.origin,referrer:s.referrer,referrerPolicy:s.referrerPolicy,mode:s.mode,credentials:s.credentials,cache:s.cache,redirect:s.redirect,integrity:s.integrity,keepalive:s.keepalive,reloadNavigation:s.reloadNavigation,historyNavigation:s.historyNavigation,urlList:[...s.urlList]});const y=Object.keys(A).length!==0;if(y){if(s.mode==="navigate"){s.mode="same-origin"}s.reloadNavigation=false;s.historyNavigation=false;s.origin="client";s.referrer="client";s.referrerPolicy="";s.url=s.urlList[s.urlList.length-1];s.urlList=[s.url]}if(A.referrer!==undefined){const e=A.referrer;if(e===""){s.referrer="no-referrer"}else{let A;try{A=new URL(e,g)}catch(A){throw new TypeError(`Referrer "${e}" is not a valid URL.`,{cause:A})}if(A.protocol==="about:"&&A.hostname==="client"||C&&!I(A,d.settingsObject.baseUrl)){s.referrer="client"}else{s.referrer=A}}}if(A.referrerPolicy!==undefined){s.referrerPolicy=A.referrerPolicy}let m;if(A.mode!==undefined){m=A.mode}else{m=n}if(m==="navigate"){throw T.errors.exception({header:"Request constructor",message:"invalid request mode navigate."})}if(m!=null){s.mode=m}if(A.credentials!==undefined){s.credentials=A.credentials}if(A.cache!==undefined){s.cache=A.cache}if(s.cache==="only-if-cached"&&s.mode!=="same-origin"){throw new TypeError("'only-if-cached' can be set only with 'same-origin' mode")}if(A.redirect!==undefined){s.redirect=A.redirect}if(A.integrity!=null){s.integrity=String(A.integrity)}if(A.keepalive!==undefined){s.keepalive=Boolean(A.keepalive)}if(A.method!==undefined){let e=A.method;const t=S[e];if(t!==undefined){s.method=t}else{if(!u(e)){throw new TypeError(`'${e}' is not a valid HTTP method.`)}const A=e.toUpperCase();if(f.has(A)){throw new TypeError(`'${e}' HTTP method is unsupported.`)}e=F[A]??e;s.method=e}if(!q&&s.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(A.signal!==undefined){h=A.signal}this[U]=s;const D=new AbortController;this[M]=D.signal;if(h!=null){if(!h||typeof h.aborted!=="boolean"||typeof h.addEventListener!=="function"){throw new TypeError("Failed to construct 'Request': member signal is not of type AbortSignal.")}if(h.aborted){D.abort(h.reason)}else{this[O]=D;const e=new WeakRef(D);const A=buildAbort(e);try{if(typeof G==="function"&&G(h)===V){J(1500,h)}else if(x(h,"abort").length>=V){J(1500,h)}}catch{}B.addAbortListener(h,A);W.register(D,{signal:h,abort:A},A)}}this[N]=new i(H);Q(this[N],s.headersList);l(this[N],"request");if(m==="no-cors"){if(!p.has(s.method)){throw new TypeError(`'${s.method} is unsupported in no-cors mode.`)}l(this[N],"request-no-cors")}if(y){const e=E(this[N]);const t=A.headers!==undefined?A.headers:new c(e);e.clear();if(t instanceof c){for(const{name:A,value:r}of t.rawValues()){e.append(A,r,false)}e.cookies=t.cookies}else{a(this[N],t)}}const k=e instanceof Request?e[U].body:null;if((A.body!=null||k!=null)&&(s.method==="GET"||s.method==="HEAD")){throw new TypeError("Request with GET/HEAD method cannot have body.")}let R=null;if(A.body!=null){const[e,t]=r(A.body,s.keepalive);R=e;if(t&&!E(this[N]).contains("content-type",true)){this[N].append("content-type",t)}}const b=R??k;if(b!=null&&b.source==null){if(R!=null&&A.duplex==null){throw new TypeError("RequestInit: duplex option is required when sending a body.")}if(s.mode!=="same-origin"&&s.mode!=="cors"){throw new TypeError('If request is made from ReadableStream, mode should be "same-origin" or "cors"')}s.useCORSPreflightFlag=true}let v=b;if(R==null&&k!=null){if(o(e)){throw new TypeError("Cannot construct a Request with a Request object that has already been used.")}const A=new TransformStream;k.stream.pipeThrough(A);v={source:k.source,length:k.length,stream:A.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&&B.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 A=new AbortController;if(this.signal.aborted){A.abort(this.signal.reason)}else{let e=P.get(this.signal);if(e===undefined){e=new Set;P.set(this.signal,e)}const t=new WeakRef(A);e.add(t);B.addAbortListener(A.signal,buildAbort(t))}return fromInnerRequest(e,A.signal,g(this[N]))}[C.inspect.custom](e,A){if(A.depth===null){A.depth=2}A.colors??=true;const t={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 ${C.formatWithOptions(A,t)}`}}s(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 A=makeRequest({...e,body:null});if(e.body!=null){A.body=n(A,e.body)}return A}function fromInnerRequest(e,A,t){const r=new Request(H);r[U]=e;r[M]=A;r[N]=new i(H);Q(r[N],e.headersList);l(r[N],t);return r}Object.defineProperties(Request.prototype,{method:b,url:b,headers:b,redirect:b,clone:b,signal:b,duplex:b,destination:b,body:b,bodyUsed:b,isHistoryNavigation:b,isReloadNavigation:b,keepalive:b,integrity:b,cache:b,credentials:b,attribute:b,referrerPolicy:b,referrer:b,mode:b,[Symbol.toStringTag]:{value:"Request",configurable:true}});T.converters.Request=T.interfaceConverter(Request);T.converters.RequestInfo=function(e,A,t){if(typeof e==="string"){return T.converters.USVString(e,A,t)}if(e instanceof Request){return T.converters.Request(e,A,t)}return T.converters.USVString(e,A,t)};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:w},{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:y},{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:R},{key:"dispatcher",converter:T.converters.any}]);e.exports={Request:Request,makeRequest:makeRequest,fromInnerRequest:fromInnerRequest,cloneRequest:cloneRequest}},9051:(e,A,t)=>{const{Headers:r,HeadersList:s,fill:n,getHeadersGuard:o,setHeadersGuard:i,setHeadersList:a}=t(660);const{extractBody:c,cloneBody:l,mixinBody:g,hasFinalizationRegistry:Q,streamRegistry:E,bodyUnusable:h}=t(4492);const B=t(3440);const C=t(7975);const{kEnumerableProperty:u}=B;const{isValidReasonPhrase:I,isCancelled:d,isAborted:f,isBlobLike:p,serializeJavascriptValueToJSONString:w,isErrorLike:y,isomorphicEncode:m,environmentSettingsObject:D}=t(3168);const{redirectStatusSet:k,nullBodyStatus:R}=t(4495);const{kState:b,kHeaders:F}=t(3627);const{webidl:S}=t(5893);const{FormData:N}=t(5910);const{URLSerializer:M}=t(1900);const{kConstruct:U}=t(6443);const L=t(4589);const{types:T}=t(7975);const v=new TextEncoder("utf-8");class Response{static error(){const e=fromInnerResponse(makeNetworkError(),"immutable");return e}static json(e,A={}){S.argumentLengthCheck(arguments,1,"Response.json");if(A!==null){A=S.converters.ResponseInit(A)}const t=v.encode(w(e));const r=c(t);const s=fromInnerResponse(makeResponse({}),"response");initializeResponse(s,A,{body:r[0],type:"application/json"});return s}static redirect(e,A=302){S.argumentLengthCheck(arguments,1,"Response.redirect");e=S.converters.USVString(e);A=S.converters["unsigned short"](A);let t;try{t=new URL(e,D.settingsObject.baseUrl)}catch(A){throw new TypeError(`Failed to parse URL from ${e}`,{cause:A})}if(!k.has(A)){throw new RangeError(`Invalid status code ${A}`)}const r=fromInnerResponse(makeResponse({}),"immutable");r[b].status=A;const s=m(M(t));r[b].headersList.append("location",s,true);return r}constructor(e=null,A={}){S.util.markAsUncloneable(this);if(e===U){return}if(e!==null){e=S.converters.BodyInit(e)}A=S.converters.ResponseInit(A);this[b]=makeResponse({});this[F]=new r(U);i(this[F],"response");a(this[F],this[b].headersList);let t=null;if(e!=null){const[A,r]=c(e);t={body:A,type:r}}initializeResponse(this,A,t)}get type(){S.brandCheck(this,Response);return this[b].type}get url(){S.brandCheck(this,Response);const e=this[b].urlList;const A=e[e.length-1]??null;if(A===null){return""}return M(A,true)}get redirected(){S.brandCheck(this,Response);return this[b].urlList.length>1}get status(){S.brandCheck(this,Response);return this[b].status}get ok(){S.brandCheck(this,Response);return this[b].status>=200&&this[b].status<=299}get statusText(){S.brandCheck(this,Response);return this[b].statusText}get headers(){S.brandCheck(this,Response);return this[F]}get body(){S.brandCheck(this,Response);return this[b].body?this[b].body.stream:null}get bodyUsed(){S.brandCheck(this,Response);return!!this[b].body&&B.isDisturbed(this[b].body.stream)}clone(){S.brandCheck(this,Response);if(h(this)){throw S.errors.exception({header:"Response.clone",message:"Body has already been consumed."})}const e=cloneResponse(this[b]);if(Q&&this[b].body?.stream){E.register(this,new WeakRef(this[b].body.stream))}return fromInnerResponse(e,o(this[F]))}[C.inspect.custom](e,A){if(A.depth===null){A.depth=2}A.colors??=true;const t={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 ${C.formatWithOptions(A,t)}`}}g(Response);Object.defineProperties(Response.prototype,{type:u,url:u,status:u,ok:u,redirected:u,statusText:u,headers:u,clone:u,body:u,bodyUsed:u,[Symbol.toStringTag]:{value:"Response",configurable:true}});Object.defineProperties(Response,{json:u,redirect:u,error:u});function cloneResponse(e){if(e.internalResponse){return filterResponse(cloneResponse(e.internalResponse),e.type)}const A=makeResponse({...e,body:null});if(e.body!=null){A.body=l(A,e.body)}return A}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 s(e?.headersList):new s,urlList:e?.urlList?[...e.urlList]:[]}}function makeNetworkError(e){const A=y(e);return makeResponse({type:"error",status:0,error:A?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,A){A={internalResponse:e,...A};return new Proxy(e,{get(e,t){return t in A?A[t]:e[t]},set(e,t,r){L(!(t in A));e[t]=r;return true}})}function filterResponse(e,A){if(A==="basic"){return makeFilteredResponse(e,{type:"basic",headersList:e.headersList})}else if(A==="cors"){return makeFilteredResponse(e,{type:"cors",headersList:e.headersList})}else if(A==="opaque"){return makeFilteredResponse(e,{type:"opaque",urlList:Object.freeze([]),status:0,statusText:"",body:null})}else if(A==="opaqueredirect"){return makeFilteredResponse(e,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null})}else{L(false)}}function makeAppropriateNetworkError(e,A=null){L(d(e));return f(e)?makeNetworkError(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:A})):makeNetworkError(Object.assign(new DOMException("Request was cancelled."),{cause:A}))}function initializeResponse(e,A,t){if(A.status!==null&&(A.status<200||A.status>599)){throw new RangeError('init["status"] must be in the range of 200 to 599, inclusive.')}if("statusText"in A&&A.statusText!=null){if(!I(String(A.statusText))){throw new TypeError("Invalid statusText")}}if("status"in A&&A.status!=null){e[b].status=A.status}if("statusText"in A&&A.statusText!=null){e[b].statusText=A.statusText}if("headers"in A&&A.headers!=null){n(e[F],A.headers)}if(t){if(R.includes(e.status)){throw S.errors.exception({header:"Response constructor",message:`Invalid response status code ${e.status}`})}e[b].body=t.body;if(t.type!=null&&!e[b].headersList.contains("content-type",true)){e[b].headersList.append("content-type",t.type,true)}}}function fromInnerResponse(e,A){const t=new Response(U);t[b]=e;t[F]=new r(U);a(t[F],e.headersList);i(t[F],A);if(Q&&e.body?.stream){E.register(t,new WeakRef(e.body.stream))}return t}S.converters.ReadableStream=S.interfaceConverter(ReadableStream);S.converters.FormData=S.interfaceConverter(N);S.converters.URLSearchParams=S.interfaceConverter(URLSearchParams);S.converters.XMLHttpRequestBodyInit=function(e,A,t){if(typeof e==="string"){return S.converters.USVString(e,A,t)}if(p(e)){return S.converters.Blob(e,A,t,{strict:false})}if(ArrayBuffer.isView(e)||T.isArrayBuffer(e)){return S.converters.BufferSource(e,A,t)}if(B.isFormDataLike(e)){return S.converters.FormData(e,A,t,{strict:false})}if(e instanceof URLSearchParams){return S.converters.URLSearchParams(e,A,t)}return S.converters.DOMString(e,A,t)};S.converters.BodyInit=function(e,A,t){if(e instanceof ReadableStream){return S.converters.ReadableStream(e,A,t)}if(e?.[Symbol.asyncIterator]){return e}return S.converters.XMLHttpRequestBodyInit(e,A,t)};S.converters.ResponseInit=S.dictionaryConverter([{key:"status",converter:S.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:S.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:S.converters.HeadersInit}]);e.exports={isNetworkError:isNetworkError,makeNetworkError:makeNetworkError,makeResponse:makeResponse,makeAppropriateNetworkError:makeAppropriateNetworkError,filterResponse:filterResponse,Response:Response,cloneResponse:cloneResponse,fromInnerResponse:fromInnerResponse}},3627:e=>{e.exports={kUrl:Symbol("url"),kHeaders:Symbol("headers"),kSignal:Symbol("signal"),kState:Symbol("state"),kDispatcher:Symbol("dispatcher")}},3168:(e,A,t)=>{const{Transform:r}=t(7075);const s=t(8522);const{redirectStatusSet:n,referrerPolicySet:o,badPortsSet:i}=t(4495);const{getGlobalOrigin:a}=t(1059);const{collectASequenceOfCodePoints:c,collectAnHTTPQuotedString:l,removeChars:g,parseMIMEType:Q}=t(1900);const{performance:E}=t(643);const{isBlobLike:h,ReadableStreamFrom:B,isValidHTTPToken:C,normalizedMethodRecordsBase:u}=t(3440);const I=t(4589);const{isUint8Array:d}=t(3429);const{webidl:f}=t(5893);let p=[];let w;try{w=t(7598);const e=["sha256","sha384","sha512"];p=w.getHashes().filter(A=>e.includes(A))}catch{}function responseURL(e){const A=e.urlList;const t=A.length;return t===0?null:A[t-1].toString()}function responseLocationURL(e,A){if(!n.has(e.status)){return null}let t=e.headersList.get("location",true);if(t!==null&&isValidHeaderValue(t)){if(!isValidEncodedURL(t)){t=normalizeBinaryStringToUtf8(t)}t=new URL(t,responseURL(e))}if(t&&!t.hash){t.hash=A}return t}function isValidEncodedURL(e){for(let A=0;A126||t<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 A=requestCurrentURL(e);if(urlIsHttpHttpsScheme(A)&&i.has(A.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 A=0;A=32&&t<=126||t>=128&&t<=255)){return false}}return true}const y=C;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,A){const{headersList:t}=A;const r=(t.get("referrer-policy",true)??"").split(",");let s="";if(r.length>0){for(let e=r.length;e!==0;e--){const A=r[e-1].trim();if(o.has(A)){s=A;break}}}if(s!==""){e.referrerPolicy=s}}function crossOriginResourcePolicyCheck(){return"allowed"}function corsCheck(){return"success"}function TAOCheck(){return"success"}function appendFetchMetadata(e){let A=null;A=e.mode;e.headersList.set("sec-fetch-mode",A,true)}function appendRequestOriginHeader(e){let A=e.origin;if(A==="client"||A===undefined){return}if(e.responseTainting==="cors"||e.mode==="websocket"){e.headersList.append("origin",A,true)}else if(e.method!=="GET"&&e.method!=="HEAD"){switch(e.referrerPolicy){case"no-referrer":A=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))){A=null}break;case"same-origin":if(!sameOrigin(e,requestCurrentURL(e))){A=null}break;default:}e.headersList.append("origin",A,true)}}function coarsenTime(e,A){return e}function clampAndCoarsenConnectionTimingInfo(e,A,t){if(!e?.startTime||e.startTime4096){r=s}const n=sameOrigin(e,r);const o=isURLPotentiallyTrustworthy(r)&&!isURLPotentiallyTrustworthy(e.url);switch(A){case"origin":return s!=null?s:stripURLForReferrer(t,true);case"unsafe-url":return r;case"same-origin":return n?s:"no-referrer";case"origin-when-cross-origin":return n?r:s;case"strict-origin-when-cross-origin":{const A=requestCurrentURL(e);if(sameOrigin(r,A)){return r}if(isURLPotentiallyTrustworthy(r)&&!isURLPotentiallyTrustworthy(A)){return"no-referrer"}return s}case"strict-origin":case"no-referrer-when-downgrade":default:return o?"no-referrer":s}}function stripURLForReferrer(e,A){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(A){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 A=new URL(e);if(A.protocol==="https:"||A.protocol==="wss:"){return true}if(/^127(?:\.[0-9]+){0,2}\.[0-9]+$|^\[(?:0*:)*?:?0*1\]$/.test(A.hostname)||(A.hostname==="localhost"||A.hostname.includes("localhost."))||A.hostname.endsWith(".localhost")){return true}return false}}function bytesMatch(e,A){if(w===undefined){return true}const t=parseMetadata(A);if(t==="no metadata"){return true}if(t.length===0){return true}const r=getStrongestMetadata(t);const s=filterMetadataListByAlgorithm(t,r);for(const A of s){const t=A.algo;const r=A.hash;let s=w.createHash(t).update(e).digest("base64");if(s[s.length-1]==="="){if(s[s.length-2]==="="){s=s.slice(0,-2)}else{s=s.slice(0,-1)}}if(compareBase64Mixed(s,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 A=[];let t=true;for(const r of e.split(" ")){t=false;const e=m.exec(r);if(e===null||e.groups===undefined||e.groups.algo===undefined){continue}const s=e.groups.algo.toLowerCase();if(p.includes(s)){A.push(e.groups)}}if(t===true){return"no metadata"}return A}function getStrongestMetadata(e){let A=e[0].algo;if(A[3]==="5"){return A}for(let t=1;t{e=t;A=r});return{promise:t,resolve:e,reject:A}}function isAborted(e){return e.controller.state==="aborted"}function isCancelled(e){return e.controller.state==="aborted"||e.controller.state==="terminated"}function normalizeMethod(e){return u[e.toLowerCase()]??e}function serializeJavascriptValueToJSONString(e){const A=JSON.stringify(e);if(A===undefined){throw new TypeError("Value is not JSON serializable")}I(typeof A==="string");return A}const D=Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));function createIterator(e,A,t=0,r=1){class FastIterableIterator{#_;#z;#Z;constructor(e,A){this.#_=e;this.#z=A;this.#Z=0}next(){if(typeof this!=="object"||this===null||!(#_ in this)){throw new TypeError(`'next' called on an object that does not implement interface ${e} Iterator.`)}const s=this.#Z;const n=this.#_[A];const o=n.length;if(s>=o){return{value:undefined,done:true}}const{[t]:i,[r]:a}=n[s];this.#Z=s+1;let c;switch(this.#z){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,A){return new FastIterableIterator(e,A)}}function iteratorMixin(e,A,t,r=0,s=1){const n=createIterator(e,t,r,s);const o={keys:{writable:true,enumerable:true,configurable:true,value:function keys(){f.brandCheck(this,A);return n(this,"key")}},values:{writable:true,enumerable:true,configurable:true,value:function values(){f.brandCheck(this,A);return n(this,"value")}},entries:{writable:true,enumerable:true,configurable:true,value:function entries(){f.brandCheck(this,A);return n(this,"key+value")}},forEach:{writable:true,enumerable:true,configurable:true,value:function forEach(t,r=globalThis){f.brandCheck(this,A);f.argumentLengthCheck(arguments,1,`${e}.forEach`);if(typeof t!=="function"){throw new TypeError(`Failed to execute 'forEach' on '${e}': parameter 1 is not of type 'Function'.`)}for(const{0:e,1:A}of n(this,"key+value")){t.call(r,A,e,this)}}}};return Object.defineProperties(A.prototype,{...o,[Symbol.iterator]:{writable:true,enumerable:false,configurable:true,value:o.entries.value}})}async function fullyReadBody(e,A,t){const r=A;const s=t;let n;try{n=e.stream.getReader()}catch(e){s(e);return}try{r(await readAllBytes(n))}catch(e){s(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 A=[];let t=0;while(true){const{done:r,value:s}=await e.read();if(r){return Buffer.concat(A,t)}if(!d(s)){throw new TypeError("Received non-Uint8Array chunk")}A.push(s);t+=s.length}}function urlIsLocal(e){I("protocol"in e);const A=e.protocol;return A==="about:"||A==="blob:"||A==="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 A=e.protocol;return A==="http:"||A==="https:"}function simpleRangeHeaderValue(e,A){const t=e;if(!t.startsWith("bytes")){return"failure"}const r={position:5};if(A){c(e=>e==="\t"||e===" ",t,r)}if(t.charCodeAt(r.position)!==61){return"failure"}r.position++;if(A){c(e=>e==="\t"||e===" ",t,r)}const s=c(e=>{const A=e.charCodeAt(0);return A>=48&&A<=57},t,r);const n=s.length?Number(s):null;if(A){c(e=>e==="\t"||e===" ",t,r)}if(t.charCodeAt(r.position)!==45){return"failure"}r.position++;if(A){c(e=>e==="\t"||e===" ",t,r)}const o=c(e=>{const A=e.charCodeAt(0);return A>=48&&A<=57},t,r);const i=o.length?Number(o):null;if(r.positioni){return"failure"}return{rangeStartValue:n,rangeEndValue:i}}function buildContentRange(e,A,t){let r="bytes ";r+=isomorphicEncode(`${e}`);r+="-";r+=isomorphicEncode(`${A}`);r+="/";r+=isomorphicEncode(`${t}`);return r}class InflateStream extends r{#K;constructor(e){super();this.#K=e}_transform(e,A,t){if(!this._inflateStream){if(e.length===0){t();return}this._inflateStream=(e[0]&15)===8?s.createInflate(this.#K):s.createInflateRaw(this.#K);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,A,t)}_final(e){if(this._inflateStream){this._inflateStream.end();this._inflateStream=null}e()}}function createInflate(e){return new InflateStream(e)}function extractMimeType(e){let A=null;let t=null;let r=null;const s=getDecodeSplit("content-type",e);if(s===null){return"failure"}for(const e of s){const s=Q(e);if(s==="failure"||s.essence==="*/*"){continue}r=s;if(r.essence!==t){A=null;if(r.parameters.has("charset")){A=r.parameters.get("charset")}t=r.essence}else if(!r.parameters.has("charset")&&A!==null){r.parameters.set("charset",A)}}if(r==null){return"failure"}return r}function gettingDecodingSplitting(e){const A=e;const t={position:0};const r=[];let s="";while(t.positione!=='"'&&e!==",",A,t);if(t.positione===9||e===32);r.push(s);s=""}return r}function getDecodeSplit(e,A){const t=A.get(e,true);if(t===null){return null}return gettingDecodingSplitting(t)}const R=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 A=R.decode(e);return A}class EnvironmentSettingsObjectBase{get baseUrl(){return a()}get origin(){return this.baseUrl?.origin}policyContainer=makePolicyContainer()}class EnvironmentSettingsObject{settingsObject=new EnvironmentSettingsObjectBase}const b=new EnvironmentSettingsObject;e.exports={isAborted:isAborted,isCancelled:isCancelled,isValidEncodedURL:isValidEncodedURL,createDeferredPromise:createDeferredPromise,ReadableStreamFrom:B,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:C,requestBadPort:requestBadPort,requestCurrentURL:requestCurrentURL,responseURL:responseURL,responseLocationURL:responseLocationURL,isBlobLike:h,isURLPotentiallyTrustworthy:isURLPotentiallyTrustworthy,isValidReasonPhrase:isValidReasonPhrase,sameOrigin:sameOrigin,normalizeMethod:normalizeMethod,serializeJavascriptValueToJSONString:serializeJavascriptValueToJSONString,iteratorMixin:iteratorMixin,createIterator:createIterator,isValidHeaderName:y,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:b}},5893:(e,A,t)=>{const{types:r,inspect:s}=t(7975);const{markAsUncloneable:n}=t(5919);const{toUSVString:o}=t(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 A=e.types.length===1?"":" one of";const t=`${e.argument} could not be converted to`+`${A}: ${e.types.join(", ")}.`;return i.errors.exception({header:e.prefix,message:t})};i.errors.invalidArgument=function(e){return i.errors.exception({header:e.prefix,message:`"${e.value}" is an invalid ${e.type}.`})};i.brandCheck=function(e,A,t){if(t?.strict!==false){if(!(e instanceof A)){const e=new TypeError("Illegal invocation");e.code="ERR_INVALID_THIS";throw e}}else{if(e?.[Symbol.toStringTag]!==A.prototype[Symbol.toStringTag]){const e=new TypeError("Illegal invocation");e.code="ERR_INVALID_THIS";throw e}}};i.argumentLengthCheck=function({length:e},A,t){if(e{});i.util.ConvertToInt=function(e,A,t,r){let s;let n;if(A===64){s=Math.pow(2,53)-1;if(t==="unsigned"){n=0}else{n=Math.pow(-2,53)+1}}else if(t==="unsigned"){n=0;s=Math.pow(2,A)-1}else{n=Math.pow(-2,A)-1;s=Math.pow(2,A-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(os){throw i.errors.exception({header:"Integer conversion",message:`Value must be between ${n}-${s}, got ${o}.`})}return o}if(!Number.isNaN(o)&&r?.clamp===true){o=Math.min(Math.max(o,n),s);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,A);if(t==="signed"&&o>=Math.pow(2,A)-1){return o-Math.pow(2,A)}return o};i.util.IntegerPart=function(e){const A=Math.floor(Math.abs(e));if(e<0){return-1*A}return A};i.util.Stringify=function(e){const A=i.util.Type(e);switch(A){case"Symbol":return`Symbol(${e.description})`;case"Object":return s(e);case"String":return`"${e}"`;default:return`${e}`}};i.sequenceConverter=function(e){return(A,t,r,s)=>{if(i.util.Type(A)!=="Object"){throw i.errors.exception({header:t,message:`${r} (${i.util.Stringify(A)}) is not iterable.`})}const n=typeof s==="function"?s():A?.[Symbol.iterator]?.();const o=[];let a=0;if(n===undefined||typeof n.next!=="function"){throw i.errors.exception({header:t,message:`${r} is not iterable.`})}while(true){const{done:A,value:s}=n.next();if(A){break}o.push(e(s,t,`${r}[${a++}]`))}return o}};i.recordConverter=function(e,A){return(t,s,n)=>{if(i.util.Type(t)!=="Object"){throw i.errors.exception({header:s,message:`${n} ("${i.util.Type(t)}") is not an Object.`})}const o={};if(!r.isProxy(t)){const r=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const i of r){const r=e(i,s,n);const a=A(t[i],s,n);o[r]=a}return o}const a=Reflect.ownKeys(t);for(const r of a){const i=Reflect.getOwnPropertyDescriptor(t,r);if(i?.enumerable){const i=e(r,s,n);const a=A(t[r],s,n);o[i]=a}}return o}};i.interfaceConverter=function(e){return(A,t,r,s)=>{if(s?.strict!==false&&!(A instanceof e)){throw i.errors.exception({header:t,message:`Expected ${r} ("${i.util.Stringify(A)}") to be an instance of ${e.name}.`})}return A}};i.dictionaryConverter=function(e){return(A,t,r)=>{const s=i.util.Type(A);const n={};if(s==="Null"||s==="Undefined"){return n}else if(s!=="Object"){throw i.errors.exception({header:t,message:`Expected ${A} to be one of: Null, Undefined, Object.`})}for(const s of e){const{key:e,defaultValue:o,required:a,converter:c}=s;if(a===true){if(!Object.hasOwn(A,e)){throw i.errors.exception({header:t,message:`Missing required key "${e}".`})}}let l=A[e];const g=Object.hasOwn(s,"defaultValue");if(g&&l!==null){l??=o()}if(a||g||l!==undefined){l=c(l,t,`${r}.${e}`);if(s.allowedValues&&!s.allowedValues.includes(l)){throw i.errors.exception({header:t,message:`${l} is not an accepted type. Expected one of ${s.allowedValues.join(", ")}.`})}n[e]=l}}return n}};i.nullableConverter=function(e){return(A,t,r)=>{if(A===null){return A}return e(A,t,r)}};i.converters.DOMString=function(e,A,t,r){if(e===null&&r?.legacyNullToEmptyString){return""}if(typeof e==="symbol"){throw i.errors.exception({header:A,message:`${t} is a symbol, which cannot be converted to a DOMString.`})}return String(e)};i.converters.ByteString=function(e,A,t){const r=i.converters.DOMString(e,A,t);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 A=Boolean(e);return A};i.converters.any=function(e){return e};i.converters["long long"]=function(e,A,t){const r=i.util.ConvertToInt(e,64,"signed",undefined,A,t);return r};i.converters["unsigned long long"]=function(e,A,t){const r=i.util.ConvertToInt(e,64,"unsigned",undefined,A,t);return r};i.converters["unsigned long"]=function(e,A,t){const r=i.util.ConvertToInt(e,32,"unsigned",undefined,A,t);return r};i.converters["unsigned short"]=function(e,A,t,r){const s=i.util.ConvertToInt(e,16,"unsigned",r,A,t);return s};i.converters.ArrayBuffer=function(e,A,t,s){if(i.util.Type(e)!=="Object"||!r.isAnyArrayBuffer(e)){throw i.errors.conversionFailed({prefix:A,argument:`${t} ("${i.util.Stringify(e)}")`,types:["ArrayBuffer"]})}if(s?.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,A,t,s,n){if(i.util.Type(e)!=="Object"||!r.isTypedArray(e)||e.constructor.name!==A.name){throw i.errors.conversionFailed({prefix:t,argument:`${s} ("${i.util.Stringify(e)}")`,types:[A.name]})}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.DataView=function(e,A,t,s){if(i.util.Type(e)!=="Object"||!r.isDataView(e)){throw i.errors.exception({header:A,message:`${t} is not a DataView.`})}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.BufferSource=function(e,A,t,s){if(r.isAnyArrayBuffer(e)){return i.converters.ArrayBuffer(e,A,t,{...s,allowShared:false})}if(r.isTypedArray(e)){return i.converters.TypedArray(e,e.constructor,A,t,{...s,allowShared:false})}if(r.isDataView(e)){return i.converters.DataView(e,A,t,{...s,allowShared:false})}throw i.errors.conversionFailed({prefix:A,argument:`${t} ("${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=>{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,A,t)=>{const{staticPropertyDescriptors:r,readOperation:s,fireAProgressEvent:n}=t(3610);const{kState:o,kError:i,kResult:a,kEvents:c,kAborted:l}=t(961);const{webidl:g}=t(5893);const{kEnumerableProperty:Q}=t(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});s(this,e,"ArrayBuffer")}readAsBinaryString(e){g.brandCheck(this,FileReader);g.argumentLengthCheck(arguments,1,"FileReader.readAsBinaryString");e=g.converters.Blob(e,{strict:false});s(this,e,"BinaryString")}readAsText(e,A=undefined){g.brandCheck(this,FileReader);g.argumentLengthCheck(arguments,1,"FileReader.readAsText");e=g.converters.Blob(e,{strict:false});if(A!==undefined){A=g.converters.DOMString(A,"FileReader.readAsText","encoding")}s(this,e,"Text",A)}readAsDataURL(e){g.brandCheck(this,FileReader);g.argumentLengthCheck(arguments,1,"FileReader.readAsDataURL");e=g.converters.Blob(e,{strict:false});s(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;n("abort",this);if(this[o]!=="loading"){n("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:Q,readAsBinaryString:Q,readAsText:Q,readAsDataURL:Q,abort:Q,readyState:Q,result:Q,error:Q,onloadstart:Q,onprogress:Q,onload:Q,onabort:Q,onerror:Q,onloadend:Q,[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,A,t)=>{const{webidl:r}=t(5893);const s=Symbol("ProgressEvent state");class ProgressEvent extends Event{constructor(e,A={}){e=r.converters.DOMString(e,"ProgressEvent constructor","type");A=r.converters.ProgressEventInit(A??{});super(e,A);this[s]={lengthComputable:A.lengthComputable,loaded:A.loaded,total:A.total}}get lengthComputable(){r.brandCheck(this,ProgressEvent);return this[s].lengthComputable}get loaded(){r.brandCheck(this,ProgressEvent);return this[s].loaded}get total(){r.brandCheck(this,ProgressEvent);return this[s].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=>{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,A,t)=>{const{kState:r,kError:s,kResult:n,kAborted:o,kLastProgressEventFired:i}=t(961);const{ProgressEvent:a}=t(8573);const{getEncoding:c}=t(2607);const{serializeAMimeType:l,parseMIMEType:g}=t(1900);const{types:Q}=t(7975);const{StringDecoder:E}=t(3193);const{btoa:h}=t(4573);const B={enumerable:true,writable:false,configurable:false};function readOperation(e,A,t,a){if(e[r]==="loading"){throw new DOMException("Invalid state","InvalidStateError")}e[r]="loading";e[n]=null;e[s]=null;const c=A.stream();const l=c.getReader();const g=[];let E=l.read();let h=true;(async()=>{while(!e[o]){try{const{done:c,value:B}=await E;if(h&&!e[o]){queueMicrotask(()=>{fireAProgressEvent("loadstart",e)})}h=false;if(!c&&Q.isUint8Array(B)){g.push(B);if((e[i]===undefined||Date.now()-e[i]>=50)&&!e[o]){e[i]=Date.now();queueMicrotask(()=>{fireAProgressEvent("progress",e)})}E=l.read()}else if(c){queueMicrotask(()=>{e[r]="done";try{const r=packageData(g,t,A.type,a);if(e[o]){return}e[n]=r;fireAProgressEvent("load",e)}catch(A){e[s]=A;fireAProgressEvent("error",e)}if(e[r]!=="loading"){fireAProgressEvent("loadend",e)}});break}}catch(A){if(e[o]){return}queueMicrotask(()=>{e[r]="done";e[s]=A;fireAProgressEvent("error",e);if(e[r]!=="loading"){fireAProgressEvent("loadend",e)}});break}}})()}function fireAProgressEvent(e,A){const t=new a(e,{bubbles:false,cancelable:false});A.dispatchEvent(t)}function packageData(e,A,t,r){switch(A){case"DataURL":{let A="data:";const r=g(t||"application/octet-stream");if(r!=="failure"){A+=l(r)}A+=";base64,";const s=new E("latin1");for(const t of e){A+=h(s.write(t))}A+=h(s.end());return A}case"Text":{let A="failure";if(r){A=c(r)}if(A==="failure"&&t){const e=g(t);if(e!=="failure"){A=c(e.parameters.get("charset"))}}if(A==="failure"){A="UTF-8"}return decode(e,A)}case"ArrayBuffer":{const A=combineByteSequences(e);return A.buffer}case"BinaryString":{let A="";const t=new E("latin1");for(const r of e){A+=t.write(r)}A+=t.end();return A}}}function decode(e,A){const t=combineByteSequences(e);const r=BOMSniffing(t);let s=0;if(r!==null){A=r;s=r==="UTF-8"?3:2}const n=t.slice(s);return new TextDecoder(A).decode(n)}function BOMSniffing(e){const[A,t,r]=e;if(A===239&&t===187&&r===191){return"UTF-8"}else if(A===254&&t===255){return"UTF-16BE"}else if(A===255&&t===254){return"UTF-16LE"}return null}function combineByteSequences(e){const A=e.reduce((e,A)=>e+A.byteLength,0);let t=0;return e.reduce((e,A)=>{e.set(A,t);t+=A.byteLength;return e},new Uint8Array(A))}e.exports={staticPropertyDescriptors:B,readOperation:readOperation,fireAProgressEvent:fireAProgressEvent}},6897:(e,A,t)=>{const{uid:r,states:s,sentCloseFrameState:n,emptyBuffer:o,opcodes:i}=t(736);const{kReadyState:a,kSentClose:c,kByteParser:l,kReceivedClose:g,kResponse:Q}=t(1216);const{fireEvent:E,failWebsocketConnection:h,isClosing:B,isClosed:C,isEstablished:u,parseExtensions:I}=t(8625);const{channels:d}=t(2414);const{CloseEvent:f}=t(5188);const{makeRequest:p}=t(9967);const{fetching:w}=t(4398);const{Headers:y,getHeadersList:m}=t(660);const{getDecodeSplit:D}=t(3168);const{WebsocketFrameSend:k}=t(3264);let R;try{R=t(7598)}catch{}function establishWebSocketConnection(e,A,t,s,n,o){const i=e;i.protocol=e.protocol==="ws:"?"http:":"https:";const a=p({urlList:[i],client:t,serviceWorkers:"none",referrer:"no-referrer",mode:"websocket",credentials:"include",cache:"no-store",redirect:"error"});if(o.headers){const e=m(new y(o.headers));a.headersList=e}const c=R.randomBytes(16).toString("base64");a.headersList.append("sec-websocket-key",c);a.headersList.append("sec-websocket-version","13");for(const e of A){a.headersList.append("sec-websocket-protocol",e)}const l="permessage-deflate; client_max_window_bits";a.headersList.append("sec-websocket-extensions",l);const g=w({request:a,useParallelQueue:true,dispatcher:o.dispatcher,processResponse(e){if(e.type==="error"||e.status!==101){h(s,"Received network error or non-101 status code.");return}if(A.length!==0&&!e.headersList.get("Sec-WebSocket-Protocol")){h(s,"Server did not respond with sent protocols.");return}if(e.headersList.get("Upgrade")?.toLowerCase()!=="websocket"){h(s,'Server did not set Upgrade header to "websocket".');return}if(e.headersList.get("Connection")?.toLowerCase()!=="upgrade"){h(s,'Server did not set Connection header to "upgrade".');return}const t=e.headersList.get("Sec-WebSocket-Accept");const o=R.createHash("sha1").update(c+r).digest("base64");if(t!==o){h(s,"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")){h(s,"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===null||!e.includes(g)){h(s,"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})}n(e,l)}});return g}function closeWebSocketConnection(e,A,t,r){if(B(e)||C(e)){}else if(!u(e)){h(e,"Connection was closed before it was established.");e[a]=s.CLOSING}else if(e[c]===n.NOT_SENT){e[c]=n.PROCESSING;const l=new k;if(A!==undefined&&t===undefined){l.frameData=Buffer.allocUnsafe(2);l.frameData.writeUInt16BE(A,0)}else if(A!==undefined&&t!==undefined){l.frameData=Buffer.allocUnsafe(2+r);l.frameData.writeUInt16BE(A,0);l.frameData.write(t,2,"utf-8")}else{l.frameData=o}const g=e[Q].socket;g.write(l.createFrame(i.CLOSE));e[c]=n.SENT;e[a]=s.CLOSING}else{e[a]=s.CLOSING}}function onSocketData(e){if(!this.ws[l].write(e)){this.pause()}}function onSocketClose(){const{ws:e}=this;const{[Q]:A}=e;A.socket.off("data",onSocketData);A.socket.off("close",onSocketClose);A.socket.off("error",onSocketError);const t=e[c]===n.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]=s.CLOSED;E("close",e,(e,A)=>new f(e,A),{wasClean:t,code:r,reason:o});if(d.close.hasSubscribers){d.close.publish({websocket:e,code:r,reason:o})}}function onSocketError(e){const{ws:A}=this;A[a]=s.CLOSING;if(d.socketError.hasSubscribers){d.socketError.publish(e)}this.destroy()}e.exports={establishWebSocketConnection:establishWebSocketConnection,closeWebSocketConnection:closeWebSocketConnection}},736:e=>{const A="258EAFA5-E914-47DA-95CA-C5AB0DC85B11";const t={enumerable:true,writable:false,configurable:false};const r={CONNECTING:0,OPEN:1,CLOSING:2,CLOSED:3};const s={NOT_SENT:0,PROCESSING:1,SENT:2};const n={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:A,sentCloseFrameState:s,staticPropertyDescriptors:t,states:r,opcodes:n,maxUnsigned16Bit:o,parserStates:i,emptyBuffer:a,sendHints:c}},5188:(e,A,t)=>{const{webidl:r}=t(5893);const{kEnumerableProperty:s}=t(3440);const{kConstruct:n}=t(6443);const{MessagePort:o}=t(5919);class MessageEvent extends Event{#X;constructor(e,A={}){if(e===n){super(arguments[1],arguments[2]);r.util.markAsUncloneable(this);return}const t="MessageEvent constructor";r.argumentLengthCheck(arguments,1,t);e=r.converters.DOMString(e,t,"type");A=r.converters.MessageEventInit(A,t,"eventInitDict");super(e,A);this.#X=A;r.util.markAsUncloneable(this)}get data(){r.brandCheck(this,MessageEvent);return this.#X.data}get origin(){r.brandCheck(this,MessageEvent);return this.#X.origin}get lastEventId(){r.brandCheck(this,MessageEvent);return this.#X.lastEventId}get source(){r.brandCheck(this,MessageEvent);return this.#X.source}get ports(){r.brandCheck(this,MessageEvent);if(!Object.isFrozen(this.#X.ports)){Object.freeze(this.#X.ports)}return this.#X.ports}initMessageEvent(e,A=false,t=false,s=null,n="",o="",i=null,a=[]){r.brandCheck(this,MessageEvent);r.argumentLengthCheck(arguments,1,"MessageEvent.initMessageEvent");return new MessageEvent(e,{bubbles:A,cancelable:t,data:s,origin:n,lastEventId:o,source:i,ports:a})}static createFastMessageEvent(e,A){const t=new MessageEvent(n,e,A);t.#X=A;t.#X.data??=null;t.#X.origin??="";t.#X.lastEventId??="";t.#X.source??=null;t.#X.ports??=[];return t}}const{createFastMessageEvent:i}=MessageEvent;delete MessageEvent.createFastMessageEvent;class CloseEvent extends Event{#X;constructor(e,A={}){const t="CloseEvent constructor";r.argumentLengthCheck(arguments,1,t);e=r.converters.DOMString(e,t,"type");A=r.converters.CloseEventInit(A);super(e,A);this.#X=A;r.util.markAsUncloneable(this)}get wasClean(){r.brandCheck(this,CloseEvent);return this.#X.wasClean}get code(){r.brandCheck(this,CloseEvent);return this.#X.code}get reason(){r.brandCheck(this,CloseEvent);return this.#X.reason}}class ErrorEvent extends Event{#X;constructor(e,A){const t="ErrorEvent constructor";r.argumentLengthCheck(arguments,1,t);super(e,A);r.util.markAsUncloneable(this);e=r.converters.DOMString(e,t,"type");A=r.converters.ErrorEventInit(A??{});this.#X=A}get message(){r.brandCheck(this,ErrorEvent);return this.#X.message}get filename(){r.brandCheck(this,ErrorEvent);return this.#X.filename}get lineno(){r.brandCheck(this,ErrorEvent);return this.#X.lineno}get colno(){r.brandCheck(this,ErrorEvent);return this.#X.colno}get error(){r.brandCheck(this,ErrorEvent);return this.#X.error}}Object.defineProperties(MessageEvent.prototype,{[Symbol.toStringTag]:{value:"MessageEvent",configurable:true},data:s,origin:s,lastEventId:s,source:s,ports:s,initMessageEvent:s});Object.defineProperties(CloseEvent.prototype,{[Symbol.toStringTag]:{value:"CloseEvent",configurable:true},reason:s,code:s,wasClean:s});Object.defineProperties(ErrorEvent.prototype,{[Symbol.toStringTag]:{value:"ErrorEvent",configurable:true},message:s,filename:s,lineno:s,colno:s,error:s});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,A,t)=>{const{maxUnsigned16Bit:r}=t(736);const s=16386;let n;let o=null;let i=s;try{n=t(7598)}catch{n={randomFillSync:function randomFillSync(e,A,t){for(let A=0;Ar){o+=8;n=127}else if(s>125){o+=2;n=126}const i=Buffer.allocUnsafe(s+o);i[0]=i[1]=0;i[0]|=128;i[0]=(i[0]&240)+e; +/*! ws. MIT License. Einar Otto Stangvik */i[o-4]=t[0];i[o-3]=t[1];i[o-2]=t[2];i[o-1]=t[3];i[1]=n;if(n===126){i.writeUInt16BE(s,2)}else if(n===127){i[2]=i[3]=0;i.writeUIntBE(s,4,6)}i[1]|=128;for(let e=0;e{const{createInflateRaw:r,Z_DEFAULT_WINDOWBITS:s}=t(8522);const{isValidClientWindowBits:n}=t(8625);const{MessageSizeExceededError:o}=t(8707);const i=Buffer.from([0,0,255,255]);const a=Symbol("kBuffer");const c=Symbol("kLength");class PerMessageDeflate{#j;#B={};#$=0;constructor(e,A){this.#B.serverNoContextTakeover=e.has("server_no_context_takeover");this.#B.serverMaxWindowBits=e.get("server_max_window_bits");this.#$=A.maxPayloadSize}decompress(e,A,t){if(!this.#j){let e=s;if(this.#B.serverMaxWindowBits){if(!n(this.#B.serverMaxWindowBits)){t(new Error("Invalid server_max_window_bits"));return}e=Number.parseInt(this.#B.serverMaxWindowBits)}try{this.#j=r({windowBits:e})}catch(e){t(e);return}this.#j[a]=[];this.#j[c]=0;this.#j.on("data",e=>{this.#j[c]+=e.length;if(this.#$>0&&this.#j[c]>this.#$){t(new o);this.#j.removeAllListeners();this.#j.destroy();this.#j=null;return}this.#j[a].push(e)});this.#j.on("error",e=>{this.#j=null;t(e)})}this.#j.write(e);if(A){this.#j.write(i)}this.#j.flush(()=>{if(!this.#j){return}const e=Buffer.concat(this.#j[a],this.#j[c]);this.#j[a].length=0;this.#j[c]=0;t(null,e)})}}e.exports={PerMessageDeflate:PerMessageDeflate}},1652:(e,A,t)=>{const{Writable:r}=t(7075);const s=t(4589);const{parserStates:n,opcodes:o,states:i,emptyBuffer:a,sentCloseFrameState:c}=t(736);const{kReadyState:l,kSentClose:g,kResponse:Q,kReceivedClose:E}=t(1216);const{channels:h}=t(2414);const{isValidStatusCode:B,isValidOpcode:C,failWebsocketConnection:u,websocketMessageReceived:I,utf8Decode:d,isControlFrame:f,isTextBinaryFrame:p,isContinuationFrame:w}=t(8625);const{WebsocketFrameSend:y}=t(3264);const{closeWebSocketConnection:m}=t(6897);const{PerMessageDeflate:D}=t(9469);const{MessageSizeExceededError:k}=t(8707);function failWebsocketConnectionWithCode(e,A,t){m(e,A,t,Buffer.byteLength(t));u(e,t)}class ByteParser extends r{#ee=[];#Ae=0;#te=0;#re=false;#w=n.INFO;#se={};#ne=[];#oe;#ie;#$;constructor(e,A,t={}){super();this.ws=e;this.#oe=A==null?new Map:A;this.#ie=t.maxFragments??0;this.#$=t.maxPayloadSize??0;if(this.#oe.has("permessage-deflate")){this.#oe.set("permessage-deflate",new D(A,t))}}_write(e,A,t){this.#ee.push(e);this.#te+=e.length;this.#re=true;this.run(t)}#ae(){if(this.#$>0&&!f(this.#se.opcode)&&this.#se.payloadLength+this.#Ae>this.#$){failWebsocketConnectionWithCode(this.ws,1009,"Payload size exceeds maximum allowed size");return false}return true}run(e){while(this.#re){if(this.#w===n.INFO){if(this.#te<2){return e()}const A=this.consume(2);const t=(A[0]&128)!==0;const r=A[0]&15;const s=(A[1]&128)===128;const i=!t&&r!==o.CONTINUATION;const a=A[1]&127;const c=A[0]&64;const l=A[0]&32;const g=A[0]&16;if(!C(r)){u(this.ws,"Invalid opcode received");return e()}if(s){u(this.ws,"Frame cannot be masked");return e()}if(c!==0&&!this.#oe.has("permessage-deflate")){u(this.ws,"Expected RSV1 to be clear.");return}if(l!==0||g!==0){u(this.ws,"RSV1, RSV2, RSV3 must be clear");return}if(i&&!p(r)){u(this.ws,"Invalid frame type was fragmented.");return}if(p(r)&&this.#ne.length>0){u(this.ws,"Expected continuation frame");return}if(this.#se.fragmented&&i){u(this.ws,"Fragmented frame exceeded 125 bytes.");return}if((a>125||i)&&f(r)){u(this.ws,"Control frame either too large or fragmented");return}if(w(r)&&this.#ne.length===0&&!this.#se.compressed){u(this.ws,"Unexpected continuation frame");return}if(a<=125){this.#se.payloadLength=a;this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(a===126){this.#w=n.PAYLOADLENGTH_16}else if(a===127){this.#w=n.PAYLOADLENGTH_64}if(p(r)){this.#se.binaryType=r;this.#se.compressed=c!==0}this.#se.opcode=r;this.#se.masked=s;this.#se.fin=t;this.#se.fragmented=i}else if(this.#w===n.PAYLOADLENGTH_16){if(this.#te<2){return e()}const A=this.consume(2);this.#se.payloadLength=A.readUInt16BE(0);this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(this.#w===n.PAYLOADLENGTH_64){if(this.#te<8){return e()}const A=this.consume(8);const t=A.readUInt32BE(0);const r=A.readUInt32BE(4);if(t!==0||r>2**31-1){u(this.ws,"Received payload length > 2^31 bytes.");return}this.#se.payloadLength=r;this.#w=n.READ_DATA;if(!this.#ae()){return}}else if(this.#w===n.READ_DATA){if(this.#te{if(this.destroyed)return;this.#re=true;this.run(e)});return}}else{if(!this.#se.compressed){if(!this.writeFragments(A)){return}if(this.#$>0&&this.#Ae>this.#$){failWebsocketConnectionWithCode(this.ws,1009,(new k).message);return}if(!this.#se.fragmented&&this.#se.fin){I(this.ws,this.#se.binaryType,this.consumeFragments())}this.#w=n.INFO}else{this.#oe.get("permessage-deflate").decompress(A,this.#se.fin,(A,t)=>{if(A){const e=A instanceof k?1009:1007;failWebsocketConnectionWithCode(this.ws,e,A.message);return}if(!this.writeFragments(t)){return}if(this.#$>0&&this.#Ae>this.#$){failWebsocketConnectionWithCode(this.ws,1009,(new k).message);return}if(!this.#se.fin){this.#w=n.INFO;this.#re=true;this.run(e);return}I(this.ws,this.#se.binaryType,this.consumeFragments());this.#re=true;this.#w=n.INFO;this.run(e)});this.#re=false;break}}}}}consume(e){if(e>this.#te){throw new Error("Called consume() before buffers satiated.")}else if(e===0){return a}if(this.#ee[0].length===e){this.#te-=this.#ee[0].length;return this.#ee.shift()}const A=Buffer.allocUnsafe(e);let t=0;while(t!==e){const r=this.#ee[0];const{length:s}=r;if(s+t===e){A.set(this.#ee.shift(),t);break}else if(s+t>e){A.set(r.subarray(0,e-t),t);this.#ee[0]=r.subarray(e-t);break}else{A.set(this.#ee.shift(),t);t+=r.length}}this.#te-=e;return A}writeFragments(e){if(this.#ie>0&&this.#ne.length===this.#ie){failWebsocketConnectionWithCode(this.ws,1008,"Too many message fragments");return false}this.#Ae+=e.length;this.#ne.push(e);return true}consumeFragments(){const e=this.#ne;if(e.length===1){this.#Ae=0;return e.shift()}const A=Buffer.concat(e,this.#Ae);this.#ne=[];this.#Ae=0;return A}parseCloseBody(e){s(e.length!==1);let A;if(e.length>=2){A=e.readUInt16BE(0)}if(A!==undefined&&!B(A)){return{code:1002,reason:"Invalid status code",error:true}}let t=e.subarray(2);if(t[0]===239&&t[1]===187&&t[2]===191){t=t.subarray(3)}try{t=d(t)}catch{return{code:1007,reason:"Invalid UTF-8",error:true}}return{code:A,reason:t,error:false}}parseControlFrame(e){const{opcode:A,payloadLength:t}=this.#se;if(A===o.CLOSE){if(t===1){u(this.ws,"Received close frame with a 1-byte body.");return false}this.#se.closeInfo=this.parseCloseBody(e);if(this.#se.closeInfo.error){const{code:e,reason:A}=this.#se.closeInfo;m(this.ws,e,A,A.length);u(this.ws,A);return false}if(this.ws[g]!==c.SENT){let e=a;if(this.#se.closeInfo.code){e=Buffer.allocUnsafe(2);e.writeUInt16BE(this.#se.closeInfo.code,0)}const A=new y(e);this.ws[Q].socket.write(A.createFrame(o.CLOSE),e=>{if(!e){this.ws[g]=c.SENT}})}this.ws[l]=i.CLOSING;this.ws[E]=true;return false}else if(A===o.PING){if(!this.ws[E]){const A=new y(e);this.ws[Q].socket.write(A.createFrame(o.PONG));if(h.ping.hasSubscribers){h.ping.publish({payload:e})}}}else if(A===o.PONG){if(h.pong.hasSubscribers){h.pong.publish({payload:e})}}return true}get closingInfo(){return this.#se.closeInfo}}e.exports={ByteParser:ByteParser}},3900:(e,A,t)=>{const{WebsocketFrameSend:r}=t(3264);const{opcodes:s,sendHints:n}=t(736);const o=t(4660);const i=Buffer[Symbol.species];class SendQueue{#ce=new o;#le=false;#ge;constructor(e){this.#ge=e}add(e,A,t){if(t!==n.blob){const r=createFrame(e,t);if(!this.#le){this.#ge.write(r,A)}else{const e={promise:null,callback:A,frame:r};this.#ce.push(e)}return}const r={promise:e.arrayBuffer().then(e=>{r.promise=null;r.frame=createFrame(e,t)}),callback:A,frame:null};this.#ce.push(r);if(!this.#le){this.#Qe()}}async#Qe(){this.#le=true;const e=this.#ce;while(!e.isEmpty()){const A=e.shift();if(A.promise!==null){await A.promise}this.#ge.write(A.frame,A.callback);A.callback=A.frame=null}this.#le=false}}function createFrame(e,A){return new r(toBuffer(e,A)).createFrame(A===n.string?s.TEXT:s.BINARY)}function toBuffer(e,A){switch(A){case n.string:return Buffer.from(e);case n.arrayBuffer:case n.blob:return new i(e);case n.typedArray:return new i(e.buffer,e.byteOffset,e.byteLength)}}e.exports={SendQueue:SendQueue}},1216:e=>{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,A,t)=>{const{kReadyState:r,kController:s,kResponse:n,kBinaryType:o,kWebSocketURL:i}=t(1216);const{states:a,opcodes:c}=t(736);const{ErrorEvent:l,createFastMessageEvent:g}=t(5188);const{isUtf8:Q}=t(4573);const{collectASequenceOfCodePointsFast:E,removeHTTPWhitespace:h}=t(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,A,t=(e,A)=>new Event(e,A),r={}){const s=t(e,r);A.dispatchEvent(s)}function websocketMessageReceived(e,A,t){if(e[r]!==a.OPEN){return}let s;if(A===c.TEXT){try{s=u(t)}catch{failWebsocketConnection(e,"Received invalid UTF-8 in text frame.");return}}else if(A===c.BINARY){if(e[o]==="blob"){s=new Blob([t])}else{s=toArrayBuffer(t)}}fireEvent("message",e,g,{origin:e[i].origin,data:s})}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 A=0;A126||t===34||t===40||t===41||t===44||t===47||t===58||t===59||t===60||t===61||t===62||t===63||t===64||t===91||t===92||t===93||t===123||t===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,A){const{[s]:t,[n]:r}=e;t.abort();if(r?.socket&&!r.socket.destroyed){r.socket.destroy()}if(A){fireEvent("error",e,(e,A)=>new l(e,A),{error:new Error(A),message:A})}}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 A={position:0};const t=new Map;while(A.position57){return false}}const A=Number.parseInt(e,10);return A>=8&&A<=15}const B=typeof process.versions.icu==="string";const C=B?new TextDecoder("utf-8",{fatal:true}):undefined;const u=B?C.decode.bind(C):function(e){if(Q(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:u,isControlFrame:isControlFrame,isContinuationFrame:isContinuationFrame,isTextBinaryFrame:isTextBinaryFrame,isValidOpcode:isValidOpcode,parseExtensions:parseExtensions,isValidClientWindowBits:isValidClientWindowBits}},3726:(e,A,t)=>{const{webidl:r}=t(5893);const{URLSerializer:s}=t(1900);const{environmentSettingsObject:n}=t(3168);const{staticPropertyDescriptors:o,states:i,sentCloseFrameState:a,sendHints:c}=t(736);const{kWebSocketURL:l,kReadyState:g,kController:Q,kBinaryType:E,kResponse:h,kSentClose:B,kByteParser:C}=t(1216);const{isConnecting:u,isEstablished:I,isClosing:d,isValidSubprotocol:f,fireEvent:p}=t(8625);const{establishWebSocketConnection:w,closeWebSocketConnection:y}=t(6897);const{ByteParser:m}=t(1652);const{kEnumerableProperty:D,isBlobLike:k}=t(3440);const{getGlobalDispatcher:R}=t(2581);const{types:b}=t(7975);const{ErrorEvent:F,CloseEvent:S}=t(5188);const{SendQueue:N}=t(3900);class WebSocket extends EventTarget{#H={open:null,error:null,close:null,message:null};#Ee=0;#he="";#oe="";#Be;constructor(e,A=[]){super();r.util.markAsUncloneable(this);const t="WebSocket constructor";r.argumentLengthCheck(arguments,1,t);const s=r.converters["DOMString or sequence or WebSocketInit"](A,t,"options");e=r.converters.USVString(e,t,"url");A=s.protocols;const o=n.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 A==="string"){A=[A]}if(A.length!==new Set(A.map(e=>e.toLowerCase())).size){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}if(A.length>0&&!A.every(e=>f(e))){throw new DOMException("Invalid Sec-WebSocket-Protocol value","SyntaxError")}this[l]=new URL(i.href);const c=n.settingsObject;this[Q]=w(i,A,c,this,(e,A)=>this.#Ce(e,A),s);this[g]=WebSocket.CONNECTING;this[B]=a.NOT_SENT;this[E]="blob"}close(e=undefined,A=undefined){r.brandCheck(this,WebSocket);const t="WebSocket.close";if(e!==undefined){e=r.converters["unsigned short"](e,t,"code",{clamp:true})}if(A!==undefined){A=r.converters.USVString(A,t,"reason")}if(e!==undefined){if(e!==1e3&&(e<3e3||e>4999)){throw new DOMException("invalid code","InvalidAccessError")}}let s=0;if(A!==undefined){s=Buffer.byteLength(A);if(s>123){throw new DOMException(`Reason must be less than 123 bytes; received ${s}`,"SyntaxError")}}y(this,e,A,s)}send(e){r.brandCheck(this,WebSocket);const A="WebSocket.send";r.argumentLengthCheck(arguments,1,A);e=r.converters.WebSocketSendData(e,A,"data");if(u(this)){throw new DOMException("Sent before connected.","InvalidStateError")}if(!I(this)||d(this)){return}if(typeof e==="string"){const A=Buffer.byteLength(e);this.#Ee+=A;this.#Be.add(e,()=>{this.#Ee-=A},c.string)}else if(b.isArrayBuffer(e)){this.#Ee+=e.byteLength;this.#Be.add(e,()=>{this.#Ee-=e.byteLength},c.arrayBuffer)}else if(ArrayBuffer.isView(e)){this.#Ee+=e.byteLength;this.#Be.add(e,()=>{this.#Ee-=e.byteLength},c.typedArray)}else if(k(e)){this.#Ee+=e.size;this.#Be.add(e,()=>{this.#Ee-=e.size},c.blob)}}get readyState(){r.brandCheck(this,WebSocket);return this[g]}get bufferedAmount(){r.brandCheck(this,WebSocket);return this.#Ee}get url(){r.brandCheck(this,WebSocket);return s(this[l])}get extensions(){r.brandCheck(this,WebSocket);return this.#oe}get protocol(){r.brandCheck(this,WebSocket);return this.#he}get onopen(){r.brandCheck(this,WebSocket);return this.#H.open}set onopen(e){r.brandCheck(this,WebSocket);if(this.#H.open){this.removeEventListener("open",this.#H.open)}if(typeof e==="function"){this.#H.open=e;this.addEventListener("open",e)}else{this.#H.open=null}}get onerror(){r.brandCheck(this,WebSocket);return this.#H.error}set onerror(e){r.brandCheck(this,WebSocket);if(this.#H.error){this.removeEventListener("error",this.#H.error)}if(typeof e==="function"){this.#H.error=e;this.addEventListener("error",e)}else{this.#H.error=null}}get onclose(){r.brandCheck(this,WebSocket);return this.#H.close}set onclose(e){r.brandCheck(this,WebSocket);if(this.#H.close){this.removeEventListener("close",this.#H.close)}if(typeof e==="function"){this.#H.close=e;this.addEventListener("close",e)}else{this.#H.close=null}}get onmessage(){r.brandCheck(this,WebSocket);return this.#H.message}set onmessage(e){r.brandCheck(this,WebSocket);if(this.#H.message){this.removeEventListener("message",this.#H.message)}if(typeof e==="function"){this.#H.message=e;this.addEventListener("message",e)}else{this.#H.message=null}}get binaryType(){r.brandCheck(this,WebSocket);return this[E]}set binaryType(e){r.brandCheck(this,WebSocket);if(e!=="blob"&&e!=="arraybuffer"){this[E]="blob"}else{this[E]=e}}#Ce(e,A){this[h]=e;const t=this[Q]?.dispatcher?.webSocketOptions;const r=t?.maxFragments;const s=t?.maxPayloadSize;const n=new m(this,A,{maxFragments:r,maxPayloadSize:s});n.on("drain",onParserDrain);n.on("error",onParserError.bind(this));e.socket.ws=this;this[C]=n;this.#Be=new N(e.socket);this[g]=i.OPEN;const o=e.headersList.get("sec-websocket-extensions");if(o!==null){this.#oe=o}const a=e.headersList.get("sec-websocket-protocol");if(a!==null){this.#he=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,A,t){if(r.util.Type(e)==="Object"&&Symbol.iterator in e){return r.converters["sequence"](e)}return r.converters.DOMString(e,A,t)};r.converters.WebSocketInit=r.dictionaryConverter([{key:"protocols",converter:r.converters["DOMString or sequence"],defaultValue:()=>new Array(0)},{key:"dispatcher",converter:r.converters.any,defaultValue:()=>R()},{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)||b.isArrayBuffer(e)){return r.converters.BufferSource(e)}}return r.converters.USVString(e)};function onParserDrain(){this.ws[h].socket.resume()}function onParserError(e){let A;let t;if(e instanceof S){A=e.reason;t=e.code}else{A=e.message}p("error",this,()=>new F("error",{error:e,message:A}));y(this,t)}e.exports={WebSocket:WebSocket}},2613:A=>{A.exports=e(import.meta.url)("assert")},4434:A=>{A.exports=e(import.meta.url)("events")},8611:A=>{A.exports=e(import.meta.url)("http")},5692:A=>{A.exports=e(import.meta.url)("https")},9278:A=>{A.exports=e(import.meta.url)("net")},4589:A=>{A.exports=e(import.meta.url)("node:assert")},6698:A=>{A.exports=e(import.meta.url)("node:async_hooks")},4573:A=>{A.exports=e(import.meta.url)("node:buffer")},7540:A=>{A.exports=e(import.meta.url)("node:console")},7598:A=>{A.exports=e(import.meta.url)("node:crypto")},3053:A=>{A.exports=e(import.meta.url)("node:diagnostics_channel")},610:A=>{A.exports=e(import.meta.url)("node:dns")},8474:A=>{A.exports=e(import.meta.url)("node:events")},7067:A=>{A.exports=e(import.meta.url)("node:http")},2467:A=>{A.exports=e(import.meta.url)("node:http2")},7030:A=>{A.exports=e(import.meta.url)("node:net")},6760:A=>{A.exports=e(import.meta.url)("node:path")},643:A=>{A.exports=e(import.meta.url)("node:perf_hooks")},1792:A=>{A.exports=e(import.meta.url)("node:querystring")},7075:A=>{A.exports=e(import.meta.url)("node:stream")},1692:A=>{A.exports=e(import.meta.url)("node:tls")},3136:A=>{A.exports=e(import.meta.url)("node:url")},7975:A=>{A.exports=e(import.meta.url)("node:util")},3429:A=>{A.exports=e(import.meta.url)("node:util/types")},5919:A=>{A.exports=e(import.meta.url)("node:worker_threads")},8522:A=>{A.exports=e(import.meta.url)("node:zlib")},3193:A=>{A.exports=e(import.meta.url)("string_decoder")},4756:A=>{A.exports=e(import.meta.url)("tls")},9023:A=>{A.exports=e(import.meta.url)("util")},3218:(A,t,r)=>{r.r(t);r.d(t,{ExitCode:()=>he,addPath:()=>addPath,debug:()=>debug,endGroup:()=>endGroup,error:()=>error,exportVariable:()=>exportVariable,getBooleanInput:()=>getBooleanInput,getIDToken:()=>getIDToken,getInput:()=>getInput,getMultilineInput:()=>getMultilineInput,getState:()=>getState,group:()=>group,info:()=>info,isDebug:()=>isDebug,markdownSummary:()=>L,notice:()=>notice,platform:()=>s,saveState:()=>saveState,setCommandEcho:()=>setCommandEcho,setFailed:()=>setFailed,setOutput:()=>setOutput,setSecret:()=>setSecret,startGroup:()=>startGroup,summary:()=>T,toPlatformPath:()=>toPlatformPath,toPosixPath:()=>toPosixPath,toWin32Path:()=>toWin32Path,warning:()=>warning});var s={};r.r(s);r.d(s,{arch:()=>ce,getDetails:()=>getDetails,isLinux:()=>Qe,isMacOS:()=>ge,isWindows:()=>le,platform:()=>ae});const n=e(import.meta.url)("os");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}}function issueCommand(e,A,t){const r=new Command(e,A,t);process.stdout.write(r.toString()+n.EOL)}function issue(e,A=""){issueCommand(e,{},A)}const o="::";class Command{constructor(e,A,t){if(!e){e="missing.command"}this.command=e;this.properties=A;this.message=t}toString(){let e=o+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=" ";let A=true;for(const t in this.properties){if(this.properties.hasOwnProperty(t)){const r=this.properties[t];if(r){if(A){A=false}else{e+=","}e+=`${t}=${escapeProperty(r)}`}}}}e+=`${o}${escapeData(this.message)}`;return e}}function escapeData(e){return toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return toCommandValue(e).replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}const i=e(import.meta.url)("crypto");const a=e(import.meta.url)("fs");function issueFileCommand(e,A){const t=process.env[`GITHUB_${e}`];if(!t){throw new Error(`Unable to find environment variable for file command ${e}`)}if(!a.existsSync(t)){throw new Error(`Missing file at path: ${t}`)}a.appendFileSync(t,`${toCommandValue(A)}${n.EOL}`,{encoding:"utf8"})}function prepareKeyValueMessage(e,A){const t=`ghadelimiter_${i.randomUUID()}`;const r=toCommandValue(A);if(e.includes(t)){throw new Error(`Unexpected input: name should not contain the delimiter "${t}"`)}if(r.includes(t)){throw new Error(`Unexpected input: value should not contain the delimiter "${t}"`)}return`${e}<<${t}${n.EOL}${r}${n.EOL}${t}`}const c=e(import.meta.url)("path");var l=r(8611);var g=r.t(l,2);var Q=r(5692);var E=r.t(Q,2);function getProxyUrl(e){const A=e.protocol==="https:";if(checkBypass(e)){return undefined}const t=(()=>{if(A){return process.env["https_proxy"]||process.env["HTTPS_PROXY"]}else{return process.env["http_proxy"]||process.env["HTTP_PROXY"]}})();if(t){try{return new DecodedURL(t)}catch(e){if(!t.startsWith("http://")&&!t.startsWith("https://"))return new DecodedURL(`http://${t}`)}}else{return undefined}}function checkBypass(e){if(!e.hostname){return false}const A=e.hostname;if(isLoopbackAddress(A)){return true}const t=process.env["no_proxy"]||process.env["NO_PROXY"]||"";if(!t){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 s=[e.hostname.toUpperCase()];if(typeof r==="number"){s.push(`${s[0]}:${r}`)}for(const e of t.split(",").map(e=>e.trim().toUpperCase()).filter(e=>e)){if(e==="*"||s.some(A=>A===e||A.endsWith(`.${e}`)||e.startsWith(".")&&A.endsWith(`${e}`))){return true}}return false}function isLoopbackAddress(e){const A=e.toLowerCase();return A==="localhost"||A.startsWith("127.")||A.startsWith("[::1]")||A.startsWith("[0:0:0:0:0:0:0:1]")}class DecodedURL extends URL{constructor(e,A){super(e,A);this._decodedUsername=decodeURIComponent(super.username);this._decodedPassword=decodeURIComponent(super.password)}get username(){return this._decodedUsername}get password(){return this._decodedPassword}}var h=r(770);var B=r(6752);var C=undefined&&undefined.__awaiter||function(e,A,t,r){function adopt(e){return e instanceof t?e:new t(function(A){A(e)})}return new(t||(t=Promise))(function(t,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?t(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,A||[])).next())})};var u;(function(e){e[e["OK"]=200]="OK";e[e["MultipleChoices"]=300]="MultipleChoices";e[e["MovedPermanently"]=301]="MovedPermanently";e[e["ResourceMoved"]=302]="ResourceMoved";e[e["SeeOther"]=303]="SeeOther";e[e["NotModified"]=304]="NotModified";e[e["UseProxy"]=305]="UseProxy";e[e["SwitchProxy"]=306]="SwitchProxy";e[e["TemporaryRedirect"]=307]="TemporaryRedirect";e[e["PermanentRedirect"]=308]="PermanentRedirect";e[e["BadRequest"]=400]="BadRequest";e[e["Unauthorized"]=401]="Unauthorized";e[e["PaymentRequired"]=402]="PaymentRequired";e[e["Forbidden"]=403]="Forbidden";e[e["NotFound"]=404]="NotFound";e[e["MethodNotAllowed"]=405]="MethodNotAllowed";e[e["NotAcceptable"]=406]="NotAcceptable";e[e["ProxyAuthenticationRequired"]=407]="ProxyAuthenticationRequired";e[e["RequestTimeout"]=408]="RequestTimeout";e[e["Conflict"]=409]="Conflict";e[e["Gone"]=410]="Gone";e[e["TooManyRequests"]=429]="TooManyRequests";e[e["InternalServerError"]=500]="InternalServerError";e[e["NotImplemented"]=501]="NotImplemented";e[e["BadGateway"]=502]="BadGateway";e[e["ServiceUnavailable"]=503]="ServiceUnavailable";e[e["GatewayTimeout"]=504]="GatewayTimeout"})(u||(u={}));var I;(function(e){e["Accept"]="accept";e["ContentType"]="content-type"})(I||(I={}));var d;(function(e){e["ApplicationJson"]="application/json"})(d||(d={}));function lib_getProxyUrl(e){const A=pm.getProxyUrl(new URL(e));return A?A.href:""}const f=[u.MovedPermanently,u.ResourceMoved,u.SeeOther,u.TemporaryRedirect,u.PermanentRedirect];const p=[u.BadGateway,u.ServiceUnavailable,u.GatewayTimeout];const w=["OPTIONS","GET","DELETE","HEAD"];const y=10;const m=5;class HttpClientError extends Error{constructor(e,A){super(e);this.name="HttpClientError";this.statusCode=A;Object.setPrototypeOf(this,HttpClientError.prototype)}}class HttpClientResponse{constructor(e){this.message=e}readBody(){return C(this,void 0,void 0,function*(){return new Promise(e=>C(this,void 0,void 0,function*(){let A=Buffer.alloc(0);this.message.on("data",e=>{A=Buffer.concat([A,e])});this.message.on("end",()=>{e(A.toString())})}))})}readBodyBuffer(){return C(this,void 0,void 0,function*(){return new Promise(e=>C(this,void 0,void 0,function*(){const A=[];this.message.on("data",e=>{A.push(e)});this.message.on("end",()=>{e(Buffer.concat(A))})}))})}}function isHttps(e){const A=new URL(e);return A.protocol==="https:"}class HttpClient{constructor(e,A,t){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=A||[];this.requestOptions=t;if(t){if(t.ignoreSslError!=null){this._ignoreSslError=t.ignoreSslError}this._socketTimeout=t.socketTimeout;if(t.allowRedirects!=null){this._allowRedirects=t.allowRedirects}if(t.allowRedirectDowngrade!=null){this._allowRedirectDowngrade=t.allowRedirectDowngrade}if(t.maxRedirects!=null){this._maxRedirects=Math.max(t.maxRedirects,0)}if(t.keepAlive!=null){this._keepAlive=t.keepAlive}if(t.allowRetries!=null){this._allowRetries=t.allowRetries}if(t.maxRetries!=null){this._maxRetries=t.maxRetries}}}options(e,A){return C(this,void 0,void 0,function*(){return this.request("OPTIONS",e,null,A||{})})}get(e,A){return C(this,void 0,void 0,function*(){return this.request("GET",e,null,A||{})})}del(e,A){return C(this,void 0,void 0,function*(){return this.request("DELETE",e,null,A||{})})}post(e,A,t){return C(this,void 0,void 0,function*(){return this.request("POST",e,A,t||{})})}patch(e,A,t){return C(this,void 0,void 0,function*(){return this.request("PATCH",e,A,t||{})})}put(e,A,t){return C(this,void 0,void 0,function*(){return this.request("PUT",e,A,t||{})})}head(e,A){return C(this,void 0,void 0,function*(){return this.request("HEAD",e,null,A||{})})}sendStream(e,A,t,r){return C(this,void 0,void 0,function*(){return this.request(e,A,t,r)})}getJson(e){return C(this,arguments,void 0,function*(e,A={}){A[I.Accept]=this._getExistingOrDefaultHeader(A,I.Accept,d.ApplicationJson);const t=yield this.get(e,A);return this._processResponse(t,this.requestOptions)})}postJson(e,A){return C(this,arguments,void 0,function*(e,A,t={}){const r=JSON.stringify(A,null,2);t[I.Accept]=this._getExistingOrDefaultHeader(t,I.Accept,d.ApplicationJson);t[I.ContentType]=this._getExistingOrDefaultContentTypeHeader(t,d.ApplicationJson);const s=yield this.post(e,r,t);return this._processResponse(s,this.requestOptions)})}putJson(e,A){return C(this,arguments,void 0,function*(e,A,t={}){const r=JSON.stringify(A,null,2);t[I.Accept]=this._getExistingOrDefaultHeader(t,I.Accept,d.ApplicationJson);t[I.ContentType]=this._getExistingOrDefaultContentTypeHeader(t,d.ApplicationJson);const s=yield this.put(e,r,t);return this._processResponse(s,this.requestOptions)})}patchJson(e,A){return C(this,arguments,void 0,function*(e,A,t={}){const r=JSON.stringify(A,null,2);t[I.Accept]=this._getExistingOrDefaultHeader(t,I.Accept,d.ApplicationJson);t[I.ContentType]=this._getExistingOrDefaultContentTypeHeader(t,d.ApplicationJson);const s=yield this.patch(e,r,t);return this._processResponse(s,this.requestOptions)})}request(e,A,t,r){return C(this,void 0,void 0,function*(){if(this._disposed){throw new Error("Client has already been disposed.")}const s=new URL(A);let n=this._prepareRequest(e,s,r);const o=this._allowRetries&&w.includes(e)?this._maxRetries+1:1;let i=0;let a;do{a=yield this.requestRaw(n,t);if(a&&a.message&&a.message.statusCode===u.Unauthorized){let e;for(const A of this.handlers){if(A.canHandleAuthentication(a)){e=A;break}}if(e){return e.handleAuthentication(this,n,t)}else{return a}}let A=this._maxRedirects;while(a.message.statusCode&&f.includes(a.message.statusCode)&&this._allowRedirects&&A>0){const o=a.message.headers["location"];if(!o){break}const i=new URL(o);if(s.protocol==="https:"&&s.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!==s.hostname){for(const e in r){if(e.toLowerCase()==="authorization"){delete r[e]}}}n=this._prepareRequest(e,i,r);a=yield this.requestRaw(n,t);A--}if(!a.message.statusCode||!p.includes(a.message.statusCode)){return a}i+=1;if(i{function callbackForResult(e,A){if(e){r(e)}else if(!A){r(new Error("Unknown error"))}else{t(A)}}this.requestRawWithCallback(e,A,callbackForResult)})})}requestRawWithCallback(e,A,t){if(typeof A==="string"){if(!e.options.headers){e.options.headers={}}e.options.headers["Content-Length"]=Buffer.byteLength(A,"utf8")}let r=false;function handleResult(e,A){if(!r){r=true;t(e,A)}}const s=e.httpModule.request(e.options,e=>{const A=new HttpClientResponse(e);handleResult(undefined,A)});let n;s.on("socket",e=>{n=e});s.setTimeout(this._socketTimeout||3*6e4,()=>{if(n){n.end()}handleResult(new Error(`Request timeout: ${e.options.path}`))});s.on("error",function(e){handleResult(e)});if(A&&typeof A==="string"){s.write(A,"utf8")}if(A&&typeof A!=="string"){A.on("close",function(){s.end()});A.pipe(s)}else{s.end()}}getAgent(e){const A=new URL(e);return this._getAgent(A)}getAgentDispatcher(e){const A=new URL(e);const t=getProxyUrl(A);const r=t&&t.hostname;if(!r){return}return this._getProxyAgentDispatcher(A,t)}_prepareRequest(e,A,t){const r={};r.parsedUrl=A;const s=r.parsedUrl.protocol==="https:";r.httpModule=s?E:g;const n=s?443:80;r.options={};r.options.host=r.parsedUrl.hostname;r.options.port=r.parsedUrl.port?parseInt(r.parsedUrl.port):n;r.options.path=(r.parsedUrl.pathname||"")+(r.parsedUrl.search||"");r.options.method=e;r.options.headers=this._mergeHeaders(t);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,A,t){let r;if(this.requestOptions&&this.requestOptions.headers){const e=lowercaseKeys(this.requestOptions.headers)[A];if(e){r=typeof e==="number"?e.toString():e}}const s=e[A];if(s!==undefined){return typeof s==="number"?s.toString():s}if(r!==undefined){return r}return t}_getExistingOrDefaultContentTypeHeader(e,A){let t;if(this.requestOptions&&this.requestOptions.headers){const e=lowercaseKeys(this.requestOptions.headers)[I.ContentType];if(e){if(typeof e==="number"){t=String(e)}else if(Array.isArray(e)){t=e.join(", ")}else{t=e}}}const r=e[I.ContentType];if(r!==undefined){if(typeof r==="number"){return String(r)}else if(Array.isArray(r)){return r.join(", ")}else{return r}}if(t!==undefined){return t}return A}_getAgent(e){let A;const t=getProxyUrl(e);const r=t&&t.hostname;if(this._keepAlive&&r){A=this._proxyAgent}if(!r){A=this._agent}if(A){return A}const s=e.protocol==="https:";let n=100;if(this.requestOptions){n=this.requestOptions.maxSockets||l.globalAgent.maxSockets}if(t&&t.hostname){const e={maxSockets:n,keepAlive:this._keepAlive,proxy:Object.assign(Object.assign({},(t.username||t.password)&&{proxyAuth:`${t.username}:${t.password}`}),{host:t.hostname,port:t.port})};let r;const o=t.protocol==="https:";if(s){r=o?h.httpsOverHttps:h.httpsOverHttp}else{r=o?h.httpOverHttps:h.httpOverHttp}A=r(e);this._proxyAgent=A}if(!A){const e={keepAlive:this._keepAlive,maxSockets:n};A=s?new Q.Agent(e):new l.Agent(e);this._agent=A}if(s&&this._ignoreSslError){A.options=Object.assign(A.options||{},{rejectUnauthorized:false})}return A}_getProxyAgentDispatcher(e,A){let t;if(this._keepAlive){t=this._proxyAgentDispatcher}if(t){return t}const r=e.protocol==="https:";t=new B.kT(Object.assign({uri:A.href,pipelining:!this._keepAlive?0:1},(A.username||A.password)&&{token:`Basic ${Buffer.from(`${A.username}:${A.password}`).toString("base64")}`}));this._proxyAgentDispatcher=t;if(r&&this._ignoreSslError){t.options=Object.assign(t.options.requestTls||{},{rejectUnauthorized:false})}return t}_getUserAgentWithOrchestrationId(e){const A=e||"actions/http-client";const t=process.env["ACTIONS_ORCHESTRATION_ID"];if(t){const e=t.replace(/[^a-z0-9_.-]/gi,"_");return`${A} actions_orchestration_id/${e}`}return A}_performExponentialBackoff(e){return C(this,void 0,void 0,function*(){e=Math.min(y,e);const A=m*Math.pow(2,e);return new Promise(e=>setTimeout(()=>e(),A))})}_processResponse(e,A){return C(this,void 0,void 0,function*(){return new Promise((t,r)=>C(this,void 0,void 0,function*(){const s=e.message.statusCode||0;const n={statusCode:s,result:null,headers:{}};if(s===u.NotFound){t(n)}function dateTimeDeserializer(e,A){if(typeof A==="string"){const e=new Date(A);if(!isNaN(e.valueOf())){return e}}return A}let o;let i;try{i=yield e.readBody();if(i&&i.length>0){if(A&&A.deserializeDates){o=JSON.parse(i,dateTimeDeserializer)}else{o=JSON.parse(i)}n.result=o}n.headers=e.message.headers}catch(e){}if(s>299){let e;if(o&&o.message){e=o.message}else if(i&&i.length>0){e=i}else{e=`Failed request: (${s})`}const A=new HttpClientError(e,s);A.result=n.result;r(A)}else{t(n)}}))})}}const lowercaseKeys=e=>Object.keys(e).reduce((A,t)=>(A[t.toLowerCase()]=e[t],A),{});var D=undefined&&undefined.__awaiter||function(e,A,t,r){function adopt(e){return e instanceof t?e:new t(function(A){A(e)})}return new(t||(t=Promise))(function(t,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?t(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,A||[])).next())})};class BasicCredentialHandler{constructor(e,A){this.username=e;this.password=A}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 D(this,void 0,void 0,function*(){throw new Error("not implemented")})}}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 D(this,void 0,void 0,function*(){throw new Error("not implemented")})}}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 D(this,void 0,void 0,function*(){throw new Error("not implemented")})}}var k=undefined&&undefined.__awaiter||function(e,A,t,r){function adopt(e){return e instanceof t?e:new t(function(A){A(e)})}return new(t||(t=Promise))(function(t,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?t(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,A||[])).next())})};class OidcClient{static createHttpClient(e=true,A=10){const t={allowRetries:e,maxRetries:A};return new HttpClient("actions/oidc-client",[new BearerCredentialHandler(OidcClient.getRequestToken())],t)}static getRequestToken(){const e=process.env["ACTIONS_ID_TOKEN_REQUEST_TOKEN"];if(!e){throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable")}return e}static getIDTokenUrl(){const e=process.env["ACTIONS_ID_TOKEN_REQUEST_URL"];if(!e){throw new Error("Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable")}return e}static getCall(e){return k(this,void 0,void 0,function*(){var A;const t=OidcClient.createHttpClient();const r=yield t.getJson(e).catch(e=>{throw new Error(`Failed to get ID Token. \n \n Error Code : ${e.statusCode}\n \n Error Message: ${e.message}`)});const s=(A=r.result)===null||A===void 0?void 0:A.value;if(!s){throw new Error("Response json body do not have ID Token field")}return s})}static getIDToken(e){return k(this,void 0,void 0,function*(){try{let A=OidcClient.getIDTokenUrl();if(e){const t=encodeURIComponent(e);A=`${A}&audience=${t}`}debug(`ID token url is ${A}`);const t=yield OidcClient.getCall(A);setSecret(t);return t}catch(e){throw new Error(`Error message: ${e.message}`)}})}}var R=undefined&&undefined.__awaiter||function(e,A,t,r){function adopt(e){return e instanceof t?e:new t(function(A){A(e)})}return new(t||(t=Promise))(function(t,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?t(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,A||[])).next())})};const{access:b,appendFile:F,writeFile:S}=a.promises;const N="GITHUB_STEP_SUMMARY";const M="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[N];if(!e){throw new Error(`Unable to find environment variable for $${N}. Check if your runtime environment supports job summaries.`)}try{yield b(e,a.constants.R_OK|a.constants.W_OK)}catch(A){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,A,t={}){const r=Object.entries(t).map(([e,A])=>` ${e}="${A}"`).join("");if(!A){return`<${e}${r}>`}return`<${e}${r}>${A}`}write(e){return R(this,void 0,void 0,function*(){const A=!!(e===null||e===void 0?void 0:e.overwrite);const t=yield this.filePath();const r=A?S:F;yield r(t,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,A=false){this._buffer+=e;return A?this.addEOL():this}addEOL(){return this.addRaw(n.EOL)}addCodeBlock(e,A){const t=Object.assign({},A&&{lang:A});const r=this.wrap("pre",this.wrap("code",e),t);return this.addRaw(r).addEOL()}addList(e,A=false){const t=A?"ol":"ul";const r=e.map(e=>this.wrap("li",e)).join("");const s=this.wrap(t,r);return this.addRaw(s).addEOL()}addTable(e){const A=e.map(e=>{const A=e.map(e=>{if(typeof e==="string"){return this.wrap("td",e)}const{header:A,data:t,colspan:r,rowspan:s}=e;const n=A?"th":"td";const o=Object.assign(Object.assign({},r&&{colspan:r}),s&&{rowspan:s});return this.wrap(n,t,o)}).join("");return this.wrap("tr",A)}).join("");const t=this.wrap("table",A);return this.addRaw(t).addEOL()}addDetails(e,A){const t=this.wrap("details",this.wrap("summary",e)+A);return this.addRaw(t).addEOL()}addImage(e,A,t){const{width:r,height:s}=t||{};const n=Object.assign(Object.assign({},r&&{width:r}),s&&{height:s});const o=this.wrap("img",null,Object.assign({src:e,alt:A},n));return this.addRaw(o).addEOL()}addHeading(e,A){const t=`h${A}`;const r=["h1","h2","h3","h4","h5","h6"].includes(t)?t:"h1";const s=this.wrap(r,e);return this.addRaw(s).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,A){const t=Object.assign({},A&&{cite:A});const r=this.wrap("blockquote",e,t);return this.addRaw(r).addEOL()}addLink(e,A){const t=this.wrap("a",e,{href:A});return this.addRaw(t).addEOL()}}const U=new Summary;const L=U;const T=U;function toPosixPath(e){return e.replace(/[\\]/g,"/")}function toWin32Path(e){return e.replace(/[/]/g,"\\")}function toPlatformPath(e){return e.replace(/[/\\]/g,c.sep)}var v=r(3193);var H=r(4434);const Y=e(import.meta.url)("child_process");var G=r(2613);var J=undefined&&undefined.__awaiter||function(e,A,t,r){function adopt(e){return e instanceof t?e:new t(function(A){A(e)})}return new(t||(t=Promise))(function(t,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?t(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,A||[])).next())})};const{chmod:x,copyFile:V,lstat:O,mkdir:W,open:P,readdir:q,rename:_,rm:z,rmdir:Z,stat:K,symlink:X,unlink:j}=a.promises;const $=process.platform==="win32";function readlink(e){return J(this,void 0,void 0,function*(){const A=yield fs.promises.readlink(e);if($&&!A.endsWith("\\")){return`${A}\\`}return A})}const ee=268435456;const Ae=a.constants.O_RDONLY;function exists(e){return J(this,void 0,void 0,function*(){try{yield K(e)}catch(e){if(e.code==="ENOENT"){return false}throw e}return true})}function isDirectory(e){return J(this,arguments,void 0,function*(e,A=false){const t=A?yield K(e):yield O(e);return t.isDirectory()})}function isRooted(e){e=normalizeSeparators(e);if(!e){throw new Error('isRooted() parameter "p" cannot be empty')}if($){return e.startsWith("\\")||/^[A-Z]:/i.test(e)}return e.startsWith("/")}function tryGetExecutablePath(e,A){return J(this,void 0,void 0,function*(){let t=undefined;try{t=yield K(e)}catch(A){if(A.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${A}`)}}if(t&&t.isFile()){if($){const t=c.extname(e).toUpperCase();if(A.some(e=>e.toUpperCase()===t)){return e}}else{if(isUnixExecutable(t)){return e}}}const r=e;for(const s of A){e=r+s;t=undefined;try{t=yield K(e)}catch(A){if(A.code!=="ENOENT"){console.log(`Unexpected error attempting to determine if executable file exists '${e}': ${A}`)}}if(t&&t.isFile()){if($){try{const A=c.dirname(e);const t=c.basename(e).toUpperCase();for(const r of yield q(A)){if(t===r.toUpperCase()){e=c.join(A,r);break}}}catch(A){console.log(`Unexpected error attempting to determine the actual case of the file '${e}': ${A}`)}return e}else{if(isUnixExecutable(t)){return e}}}}return""})}function normalizeSeparators(e){e=e||"";if($){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`}var te=undefined&&undefined.__awaiter||function(e,A,t,r){function adopt(e){return e instanceof t?e:new t(function(A){A(e)})}return new(t||(t=Promise))(function(t,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?t(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,A||[])).next())})};function cp(e,A){return te(this,arguments,void 0,function*(e,A,t={}){const{force:r,recursive:s,copySourceDirectory:n}=readCopyOptions(t);const o=(yield ioUtil.exists(A))?yield ioUtil.stat(A):null;if(o&&o.isFile()&&!r){return}const i=o&&o.isDirectory()&&n?path.join(A,path.basename(e)):A;if(!(yield ioUtil.exists(e))){throw new Error(`no such file or directory: ${e}`)}const a=yield ioUtil.stat(e);if(a.isDirectory()){if(!s){throw new Error(`Failed to copy. ${e} is a directory, but tried to copy without recursive flag.`)}else{yield cpDirRecursive(e,i,0,r)}}else{if(path.relative(e,i)===""){throw new Error(`'${i}' and '${e}' are the same file`)}yield io_copyFile(e,i,r)}})}function mv(e,A){return te(this,arguments,void 0,function*(e,A,t={}){if(yield ioUtil.exists(A)){let r=true;if(yield ioUtil.isDirectory(A)){A=path.join(A,path.basename(e));r=yield ioUtil.exists(A)}if(r){if(t.force==null||t.force){yield rmRF(A)}else{throw new Error("Destination already exists")}}}yield mkdirP(path.dirname(A));yield ioUtil.rename(e,A)})}function rmRF(e){return te(this,void 0,void 0,function*(){if(ioUtil.IS_WINDOWS){if(/[*"<>|]/.test(e)){throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows')}}try{yield ioUtil.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 te(this,void 0,void 0,function*(){ok(e,"a path argument must be provided");yield ioUtil.mkdir(e,{recursive:true})})}function which(e,A){return te(this,void 0,void 0,function*(){if(!e){throw new Error("parameter 'tool' is required")}if(A){const A=yield which(e,false);if(!A){if($){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 A}const t=yield findInPath(e);if(t&&t.length>0){return t[0]}return""})}function findInPath(e){return te(this,void 0,void 0,function*(){if(!e){throw new Error("parameter 'tool' is required")}const A=[];if($&&process.env["PATHEXT"]){for(const e of process.env["PATHEXT"].split(c.delimiter)){if(e){A.push(e)}}}if(isRooted(e)){const t=yield tryGetExecutablePath(e,A);if(t){return[t]}return[]}if(e.includes(c.sep)){return[]}const t=[];if(process.env.PATH){for(const e of process.env.PATH.split(c.delimiter)){if(e){t.push(e)}}}const r=[];for(const s of t){const t=yield tryGetExecutablePath(c.join(s,e),A);if(t){r.push(t)}}return r})}function readCopyOptions(e){const A=e.force==null?true:e.force;const t=Boolean(e.recursive);const r=e.copySourceDirectory==null?true:Boolean(e.copySourceDirectory);return{force:A,recursive:t,copySourceDirectory:r}}function cpDirRecursive(e,A,t,r){return te(this,void 0,void 0,function*(){if(t>=255)return;t++;yield mkdirP(A);const s=yield ioUtil.readdir(e);for(const n of s){const s=`${e}/${n}`;const o=`${A}/${n}`;const i=yield ioUtil.lstat(s);if(i.isDirectory()){yield cpDirRecursive(s,o,t,r)}else{yield io_copyFile(s,o,r)}}yield ioUtil.chmod(A,(yield ioUtil.stat(e)).mode)})}function io_copyFile(e,A,t){return te(this,void 0,void 0,function*(){if((yield ioUtil.lstat(e)).isSymbolicLink()){try{yield ioUtil.lstat(A);yield ioUtil.unlink(A)}catch(e){if(e.code==="EPERM"){yield ioUtil.chmod(A,"0666");yield ioUtil.unlink(A)}}const t=yield ioUtil.readlink(e);yield ioUtil.symlink(t,A,ioUtil.IS_WINDOWS?"junction":null)}else if(!(yield ioUtil.exists(A))||t){yield ioUtil.copyFile(e,A)}})}const re=e(import.meta.url)("timers");var se=undefined&&undefined.__awaiter||function(e,A,t,r){function adopt(e){return e instanceof t?e:new t(function(A){A(e)})}return new(t||(t=Promise))(function(t,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?t(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,A||[])).next())})};const ne=process.platform==="win32";class ToolRunner extends H.EventEmitter{constructor(e,A,t){super();if(!e){throw new Error("Parameter 'toolPath' cannot be null or empty.")}this.toolPath=e;this.args=A||[];this.options=t||{}}_debug(e){if(this.options.listeners&&this.options.listeners.debug){this.options.listeners.debug(e)}}_getCommandString(e,A){const t=this._getSpawnFileName();const r=this._getSpawnArgs(e);let s=A?"":"[command]";if(ne){if(this._isCmdFile()){s+=t;for(const e of r){s+=` ${e}`}}else if(e.windowsVerbatimArguments){s+=`"${t}"`;for(const e of r){s+=` ${e}`}}else{s+=this._windowsQuoteCmdArg(t);for(const e of r){s+=` ${this._windowsQuoteCmdArg(e)}`}}}else{s+=t;for(const e of r){s+=` ${e}`}}return s}_processLineBuffer(e,A,t){try{let r=A+e.toString();let s=r.indexOf(n.EOL);while(s>-1){const e=r.substring(0,s);t(e);r=r.substring(s+n.EOL.length);s=r.indexOf(n.EOL)}return r}catch(e){this._debug(`error processing line. Failed with error ${e}`);return""}}_getSpawnFileName(){if(ne){if(this._isCmdFile()){return process.env["COMSPEC"]||"cmd.exe"}}return this.toolPath}_getSpawnArgs(e){if(ne){if(this._isCmdFile()){let A=`/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`;for(const t of this.args){A+=" ";A+=e.windowsVerbatimArguments?t:this._windowsQuoteCmdArg(t)}A+='"';return[A]}}return this.args}_endsWith(e,A){return e.endsWith(A)}_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 A=[" ","\t","&","(",")","[","]","{","}","^","=",";","!","'","+",",","`","~","|","<",">",'"'];let t=false;for(const r of e){if(A.some(e=>e===r)){t=true;break}}if(!t){return e}let r='"';let s=true;for(let A=e.length;A>0;A--){r+=e[A-1];if(s&&e[A-1]==="\\"){r+="\\"}else if(e[A-1]==='"'){s=true;r+='"'}else{s=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 A='"';let t=true;for(let r=e.length;r>0;r--){A+=e[r-1];if(t&&e[r-1]==="\\"){A+="\\"}else if(e[r-1]==='"'){t=true;A+="\\"}else{t=false}}A+='"';return A.split("").reverse().join("")}_cloneExecOptions(e){e=e||{};const A={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};A.outStream=e.outStream||process.stdout;A.errStream=e.errStream||process.stderr;return A}_getSpawnOptions(e,A){e=e||{};const t={};t.cwd=e.cwd;t.env=e.env;t["windowsVerbatimArguments"]=e.windowsVerbatimArguments||this._isCmdFile();if(e.windowsVerbatimArguments){t.argv0=`"${A}"`}return t}exec(){return se(this,void 0,void 0,function*(){if(!isRooted(this.toolPath)&&(this.toolPath.includes("/")||ne&&this.toolPath.includes("\\"))){this.toolPath=c.resolve(process.cwd(),this.options.cwd||process.cwd(),this.toolPath)}this.toolPath=yield which(this.toolPath,true);return new Promise((e,A)=>se(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 t=this._cloneExecOptions(this.options);if(!t.silent&&t.outStream){t.outStream.write(this._getCommandString(t)+n.EOL)}const r=new ExecState(t,this.toolPath);r.on("debug",e=>{this._debug(e)});if(this.options.cwd&&!(yield exists(this.options.cwd))){return A(new Error(`The cwd: ${this.options.cwd} does not exist!`))}const s=this._getSpawnFileName();const o=Y.spawn(s,this._getSpawnArgs(t),this._getSpawnOptions(this.options,s));let i="";if(o.stdout){o.stdout.on("data",e=>{if(this.options.listeners&&this.options.listeners.stdout){this.options.listeners.stdout(e)}if(!t.silent&&t.outStream){t.outStream.write(e)}i=this._processLineBuffer(e,i,e=>{if(this.options.listeners&&this.options.listeners.stdline){this.options.listeners.stdline(e)}})})}let a="";if(o.stderr){o.stderr.on("data",e=>{r.processStderr=true;if(this.options.listeners&&this.options.listeners.stderr){this.options.listeners.stderr(e)}if(!t.silent&&t.errStream&&t.outStream){const A=t.failOnStdErr?t.errStream:t.outStream;A.write(e)}a=this._processLineBuffer(e,a,e=>{if(this.options.listeners&&this.options.listeners.errline){this.options.listeners.errline(e)}})})}o.on("error",e=>{r.processError=e.message;r.processExited=true;r.processClosed=true;r.CheckComplete()});o.on("exit",e=>{r.processExitCode=e;r.processExited=true;this._debug(`Exit code ${e} received from tool '${this.toolPath}'`);r.CheckComplete()});o.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",(t,r)=>{if(i.length>0){this.emit("stdline",i)}if(a.length>0){this.emit("errline",a)}o.removeAllListeners();if(t){A(t)}else{e(r)}});if(this.options.input){if(!o.stdin){throw new Error("child process missing stdin")}o.stdin.end(this.options.input)}}))})}}function argStringToArray(e){const A=[];let t=false;let r=false;let s="";function append(e){if(r&&e!=='"'){s+="\\"}s+=e;r=false}for(let n=0;n0){A.push(s);s=""}continue}append(o)}if(s.length>0){A.push(s.trim())}return A}class ExecState extends H.EventEmitter{constructor(e,A){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(!A){throw new Error("toolPath must not be empty")}this.options=e;this.toolPath=A;if(e.delay){this.delay=e.delay}}CheckComplete(){if(this.done){return}if(this.processClosed){this._setResult()}else if(this.processExited){this.timeout=(0,re.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 A=`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(A)}e._setResult()}}var oe=undefined&&undefined.__awaiter||function(e,A,t,r){function adopt(e){return e instanceof t?e:new t(function(A){A(e)})}return new(t||(t=Promise))(function(t,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?t(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,A||[])).next())})};function exec(e,A,t){return oe(this,void 0,void 0,function*(){const r=argStringToArray(e);if(r.length===0){throw new Error(`Parameter 'commandLine' cannot be null or empty.`)}const s=r[0];A=r.slice(1).concat(A||[]);const n=new ToolRunner(s,A,t);return n.exec()})}function getExecOutput(e,A,t){return oe(this,void 0,void 0,function*(){var r,s;let n="";let o="";const i=new v.StringDecoder("utf8");const a=new v.StringDecoder("utf8");const c=(r=t===null||t===void 0?void 0:t.listeners)===null||r===void 0?void 0:r.stdout;const l=(s=t===null||t===void 0?void 0:t.listeners)===null||s===void 0?void 0:s.stderr;const stdErrListener=e=>{o+=a.write(e);if(l){l(e)}};const stdOutListener=e=>{n+=i.write(e);if(c){c(e)}};const g=Object.assign(Object.assign({},t===null||t===void 0?void 0:t.listeners),{stdout:stdOutListener,stderr:stdErrListener});const Q=yield exec(e,A,Object.assign(Object.assign({},t),{listeners:g}));n+=i.end();o+=a.end();return{exitCode:Q,stdout:n,stderr:o}})}var ie=undefined&&undefined.__awaiter||function(e,A,t,r){function adopt(e){return e instanceof t?e:new t(function(A){A(e)})}return new(t||(t=Promise))(function(t,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?t(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,A||[])).next())})};const getWindowsInfo=()=>ie(void 0,void 0,void 0,function*(){const{stdout:e}=yield getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"',undefined,{silent:true});const{stdout:A}=yield getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"',undefined,{silent:true});return{name:A.trim(),version:e.trim()}});const getMacOsInfo=()=>ie(void 0,void 0,void 0,function*(){var e,A,t,r;const{stdout:s}=yield getExecOutput("sw_vers",undefined,{silent:true});const n=(A=(e=s.match(/ProductVersion:\s*(.+)/))===null||e===void 0?void 0:e[1])!==null&&A!==void 0?A:"";const o=(r=(t=s.match(/ProductName:\s*(.+)/))===null||t===void 0?void 0:t[1])!==null&&r!==void 0?r:"";return{name:o,version:n}});const getLinuxInfo=()=>ie(void 0,void 0,void 0,function*(){const{stdout:e}=yield getExecOutput("lsb_release",["-i","-r","-s"],{silent:true});const[A,t]=e.trim().split("\n");return{name:A,version:t}});const ae=n.platform();const ce=n.arch();const le=ae==="win32";const ge=ae==="darwin";const Qe=ae==="linux";function getDetails(){return ie(this,void 0,void 0,function*(){return Object.assign(Object.assign({},yield le?getWindowsInfo():ge?getMacOsInfo():getLinuxInfo()),{platform:ae,arch:ce,isWindows:le,isMacOS:ge,isLinux:Qe})})}var Ee=undefined&&undefined.__awaiter||function(e,A,t,r){function adopt(e){return e instanceof t?e:new t(function(A){A(e)})}return new(t||(t=Promise))(function(t,s){function fulfilled(e){try{step(r.next(e))}catch(e){s(e)}}function rejected(e){try{step(r["throw"](e))}catch(e){s(e)}}function step(e){e.done?t(e.value):adopt(e.value).then(fulfilled,rejected)}step((r=r.apply(e,A||[])).next())})};var he;(function(e){e[e["Success"]=0]="Success";e[e["Failure"]=1]="Failure"})(he||(he={}));function exportVariable(e,A){const t=toCommandValue(A);process.env[e]=t;const r=process.env["GITHUB_ENV"]||"";if(r){return issueFileCommand("ENV",prepareKeyValueMessage(e,A))}issueCommand("set-env",{name:e},t)}function setSecret(e){issueCommand("add-mask",{},e)}function addPath(e){const A=process.env["GITHUB_PATH"]||"";if(A){issueFileCommand("PATH",e)}else{issueCommand("add-path",{},e)}process.env["PATH"]=`${e}${c.delimiter}${process.env["PATH"]}`}function getInput(e,A){const t=process.env[`INPUT_${e.replace(/ /g,"_").toUpperCase()}`]||"";if(A&&A.required&&!t){throw new Error(`Input required and not supplied: ${e}`)}if(A&&A.trimWhitespace===false){return t}return t.trim()}function getMultilineInput(e,A){const t=getInput(e,A).split("\n").filter(e=>e!=="");if(A&&A.trimWhitespace===false){return t}return t.map(e=>e.trim())}function getBooleanInput(e,A){const t=["true","True","TRUE"];const r=["false","False","FALSE"];const s=getInput(e,A);if(t.includes(s))return true;if(r.includes(s))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,A){const t=process.env["GITHUB_OUTPUT"]||"";if(t){return issueFileCommand("OUTPUT",prepareKeyValueMessage(e,A))}process.stdout.write(n.EOL);issueCommand("set-output",{name:e},toCommandValue(A))}function setCommandEcho(e){issue("echo",e?"on":"off")}function setFailed(e){process.exitCode=he.Failure;error(e)}function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}function debug(e){issueCommand("debug",{},e)}function error(e,A={}){issueCommand("error",toCommandProperties(A),e instanceof Error?e.toString():e)}function warning(e,A={}){issueCommand("warning",toCommandProperties(A),e instanceof Error?e.toString():e)}function notice(e,A={}){issueCommand("notice",toCommandProperties(A),e instanceof Error?e.toString():e)}function info(e){process.stdout.write(e+n.EOL)}function startGroup(e){issue("group",e)}function endGroup(){issue("endgroup")}function group(e,A){return Ee(this,void 0,void 0,function*(){startGroup(e);let t;try{t=yield A()}finally{endGroup()}return t})}function saveState(e,A){const t=process.env["GITHUB_STATE"]||"";if(t){return issueFileCommand("STATE",prepareKeyValueMessage(e,A))}issueCommand("save-state",{name:e},toCommandValue(A))}function getState(e){return process.env[`STATE_${e}`]||""}function getIDToken(e){return Ee(this,void 0,void 0,function*(){return yield OidcClient.getIDToken(e)})}},2815:(A,t,r)=>{r.d(t,{I:()=>PhpVersions});const s=e(import.meta.url)("node:fs/promises");var n=r(6760);const o=e(import.meta.url)("node:timers/promises");function sortVersions(e){return e.sort((e,A)=>e.compare(A))}const i="stable|beta|dev|alpha|RC";const a="9999999";function normalizeVersion(e){const A=e.trim();const t=A;let r=A;const s=r.match(/^([^,\s]+)\s+as\s+([^,\s]+)$/);if(s)r=s[1];const n=new RegExp(`@(?:${i})$`,"i");const o=r.match(n);if(o)r=r.slice(0,-o[0].length);const a=r.toLowerCase();if(a==="master"||a==="trunk"||a==="default")r=`dev-${r}`;if(r.toLowerCase().startsWith("dev-"))return`dev-${r.slice(4)}`;const c=r.match(/^([^,\s+]+)\+[^\s]+$/);if(c)r=c[1];let l=null;let g=0;const Q=new RegExp(String.raw`^v?(\d{1,5})(\.\d+)?(\.\d+)?(\.\d+)?(?:-?(stable|beta|b|alpha|a|RC)(?:[.-]?(\d+))?(?:[.-]?(dev))?)?$`,"i");l=r.match(Q);if(l){r=`${l[1]}${l[2]??".0"}${l[3]??".0"}${l[4]??".0"}`;g=5}else{const e=new RegExp(String.raw`^v?(\d{4}(?:[.:-]?\d{2}){1,6}(?:[.:-]?\d{1,3}){0,2})(?:-(stable|beta|b|alpha|a|RC)(?:[.-]?(\d+))?(?:[.-]?(dev))?)?$`,"i");l=r.match(e);if(l){r=l[1].replace(/\D/g,".");g=2}}if(l&&ge.replaceAll("*","x").replaceAll("X","x")).map(e=>e==="x"?a:e).join(".")}-dev`;return`dev-${A}`}function expandStability(e){switch(e.toLowerCase()){case"a":return"alpha";case"b":return"beta";case"p":case"pl":return"patch";case"rc":return"rc";default:return e.toLowerCase()}}function escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`)}const c=String.raw`[\^~v]?([0-9]+(\.[0-9]+)*?)(-([0-9]+[0-9A-Za-z\-~]*(\.[0-9A-Za-z\-~]+)*)|([-@]?([A-Za-z\-~]+[0-9A-Za-z\-~]*(\.[0-9A-Za-z\-~]+)*)))?(\+([0-9A-Za-z\-~]+(\.[0-9A-Za-z\-~]+)*))?`;const l=new RegExp(`^${c}$`);var g=class{#ue;#Ie;#de;#fe;specificity;constructor(e,A,t,r,s){this.#ue=e;this.#de=A;this.#fe=t;this.specificity=r;this.#Ie=s}compare(e){if(this.normalizedString()===e.normalizedString())return 0;if(sameSegments$1(this.#fe,e.#fe))return compareReleaseLabels(this.#de,e.#de);return compareSegments(this.#fe,e.#fe)}equal(e){return this.compare(e)===0}greaterThan(e){return this.compare(e)>0}greaterThanOrEqual(e){return this.compare(e)>=0}lessThan(e){return this.compare(e)<0}lessThanOrEqual(e){return this.compare(e)<=0}metadata(){return this.#ue}prerelease(){return this.#de}isPrerelease(){return this.#de!==""}segments(){return[...this.#fe]}segments64(){return[...this.#fe]}major(){return this.#fe[0]}minor(){return this.#fe[1]}patch(){return this.#fe[2]}segmentAt(e){return this.#fe[e]}segmentCount(){return this.#fe.length}increaseMajor(){this.#fe[0]+=1;this.#fe[1]=0;this.#fe[2]=0;this.#fe[3]=0}increaseMinor(){this.#fe[1]+=1;this.#fe[2]=0;this.#fe[3]=0}increasePatch(){this.#fe[2]+=1;this.#fe[3]=0}toString(){return this.#Ie}normalizedString(){const e=this.#de?`-${this.#de}`:"";const A=this.#ue?`+${this.#ue}`:"";return`${this.#fe.join(".")}${e}${A}`}original(){return this.#Ie}};function parseVersion(e){const A=normalizeVersion(e).match(l);if(!A)throw new Error(`malformed version: ${e}`);const t=A[1].split(".").map(e=>Number.parseInt(e,10));if(t.some(Number.isNaN))throw new Error(`error parsing version: ${e}`);const r=t.length;while(t.length<3)t.push(0);return new g(A[10]??"",A[7]||A[4]||"",t,r,e)}function cloneForComparison(e){return new g("","",e.segments64(),e.specificity,e.original())}function compareSegments(e,A){const t=Math.max(e.length,A.length);for(let r=0;re===A[t])}function hasNonZero(e){return e.some(e=>e!==0)}const Q=new Map([["dev",0],["alpha",1],["beta",2],["rc",3],["stable",4]]);const E=new Map([["",constraintEqual],["=",constraintEqual],["==",constraintEqual],["!=",constraintNotEqual],["<>",constraintNotEqual],[">",constraintGreaterThan],["<",constraintLessThan],[">=",constraintGreaterThanEqual],["<=",constraintLessThanEqual],["~>",constraintPessimistic],["^",constraintCaret],["~",constraintTilde],["*",constraintWildcard]]);const h=[">","<",">=","<=","!=","==","~>","~"];const B=new RegExp(String.raw`^\s*(=|==|!=|<>|>|<|>=|<=|~>|\^|~|)\s*v?([0-9*]+(?:\.[0-9*]+)*(?:-[0-9A-Za-z-.]+)?(?:\+[0-9A-Za-z-.]+)?)(?:@([A-Za-z]+))?\s*$`);var C=class{fn;operator;originalSegments;originalValue;stability;version;constructor({fn:e,operator:A,originalSegments:t,originalValue:r,stability:s,version:n}){this.fn=e;this.operator=A;this.originalSegments=t;this.originalValue=r;this.stability=s;this.version=n}check(e){if(this.stability){if((Q.get(this.stability)??-1)>(Q.get(getVersionStability(e))??-1))return false}return this.fn(e,this.version,this.originalSegments)}prerelease(){return Boolean(this.version?.prerelease())}toString(){return this.originalValue}};var u=class{clauses;constructor(e){this.clauses=e}check(e){return this.clauses.some(A=>A.every(A=>A.check(e)))}toString(){return this.clauses.map(e=>e.map(String).join(",")).join("||")}};function parseConstraint(e){return new u(e.replaceAll("||","|").split("|").map(parseConstraintGroup))}function parseSingle(e){if(e.trim()==="*")return new C({fn:constraintWildcard,operator:"*",originalSegments:1,originalValue:e,stability:"",version:null});const A=e.match(B);if(!A)throw new Error(`malformed constraint: ${e}`);const[,t,r,s=""]=A;const n=s.toLowerCase();if(n&&!Q.has(n))throw new Error(`unknown stability: ${n}`);if(r.includes("*"))return parseWildcardConstraint({operator:t,originalValue:e,stability:n,versionText:r});const o=E.get(t);if(!o)throw new Error(`malformed constraint: ${e}`);return new C({fn:o,operator:t,originalSegments:r.split(".").length,originalValue:e,stability:n,version:parseVersion(r)})}function parseConstraintGroup(e){if(e.includes(" - ")){const A=e.split(" - ");if(A.length!==2)throw new Error(`malformed constraint: ${e}`);return[parseSingle(`>=${A[0].trim()}`),parseSingle(`<=${A[1].trim()}`)]}return normalizeConstraintTokens(e).split(",").filter(Boolean).map(parseSingle)}function normalizeConstraintTokens(e){const A=e.trim().split(/\s+/).filter(Boolean);const t=[];for(let e=0;ecompareWildcardSegment(e,A.major(),t.major())});if(n===2)return wildcardConstraint({originalSegments:3,originalValue:A,operator:e,stability:t,version:parseVersion(`${s[0]}.${s[1]}.0`),test:(A,t)=>{if(A.major()!==t.major())return compareWildcardSegment(e,A.major(),t.major(),true);return compareWildcardSegment(e,A.minor(),t.minor())}});throw new Error(`malformed constraint: ${A}`)}function wildcardConstraint({originalSegments:e,originalValue:A,operator:t,stability:r,test:s,version:n}){return new C({fn:(e,A)=>Boolean(A&&s(e,A)),operator:t,originalSegments:e,originalValue:A,stability:r,version:n})}function compareWildcardSegment(e,A,t,r=false){switch(e){case">=":return A>=t;case">":return A>t;case"<=":return A<=t;case"<":return A":return r?true:A!==t;case"":case"=":case"==":return r?false:A===t;default:return r?false:A===t}}function prereleaseCheck(e,A){if(e.isPrerelease()&&A.isPrerelease())return sameSegments(e.segments64(),A.segments64());if(e.isPrerelease()&&!A.isPrerelease())return true;if(!e.isPrerelease()&&A.isPrerelease())return false;return true}function constraintEqual(e,A){return!!A&&e.equal(A)}function constraintNotEqual(e,A){return!!A&&!e.equal(A)}function constraintGreaterThan(e,A){return!!A&&canComparePrerelease(e,A)&&e.compare(A)===1}function constraintLessThan(e,A){return!!A&&canComparePrerelease(e,A)&&e.compare(A)===-1}function constraintGreaterThanEqual(e,A){if(!A)return false;if(e.isPrerelease()&&!A.isPrerelease())return cloneForComparison(e).compare(cloneForComparison(A))>=0;return canComparePrerelease(e,A)&&e.compare(A)>=0}function constraintLessThanEqual(e,A){return!!A&&canComparePrerelease(e,A)&&e.compare(A)<=0}function constraintPessimistic(e,A){if(!A)return false;if(!prereleaseCheck(e,A)||A.prerelease()&&!e.prerelease())return false;if(e.lessThan(A))return false;for(let t=0;t=3&&e.minor()!==A.minor())return false;if(e.isPrerelease()&&!A.isPrerelease())return true;if(A.specificity===e.segmentCount()&&sameSegments(e.segments64(),A.segments64()))return prereleaseCheck(e,A);return true}function constraintWildcard(){return true}function canComparePrerelease(e,A){return!e.isPrerelease()||!A.isPrerelease()||prereleaseCheck(e,A)}function getVersionStability(e){if(!e.isPrerelease())return"stable";const A=e.prerelease().toLowerCase();if(A.startsWith("dev"))return"dev";if(A.startsWith("alpha")||A.startsWith("a"))return"alpha";if(A.startsWith("beta")||A.startsWith("b"))return"beta";if(A.startsWith("rc"))return"rc";return"dev"}function sameSegments(e,A){return e.length===A.length&&e.every((e,t)=>e===A[t])}const I="https://www.php.net/releases/index.php?json";class PhpVersions{constructor({fetch:e=globalThis.fetch,sleep:A=o.setTimeout}={}){this.fetch=e;this.sleep=A}async resolve(e,A=process.env.GITHUB_WORKSPACE){const t=await this.projectDirectory(e,A);const r=JSON.parse(await(0,s.readFile)((0,n.join)(t,"composer.json"),"utf8"));const o=r?.require?.php;if(typeof o!=="string"||o.trim()===""){throw new Error("Declare require.php in composer.json or select PHP explicitly.")}const i=parseConstraint(o);const a=await this.releases();const c=a.filter(e=>i.check(parseVersion(e))).sort((e,A)=>parseVersion(e).compare(parseVersion(A)));const l=new Map;for(const e of c){l.set(e.slice(0,e.lastIndexOf(".")),e)}const g=[...l.values()];if(g.length===0){throw new Error(`No stable PHP release matches require.php: ${o}`)}return{"php-versions":g,"php-version":g.at(-1)}}async projectDirectory(e,A){const t=await(0,s.realpath)((0,n.resolve)(A||process.cwd(),e));if(!(await(0,s.stat)(t)).isDirectory()){throw new Error(`Project directory does not exist: ${e}`)}if(A){const e=(0,n.relative)(await(0,s.realpath)(A),t);if(e===".."||e.startsWith(`..${n.sep}`)||(0,n.isAbsolute)(e)){throw new Error("Project directory must be inside GITHUB_WORKSPACE.")}}return t}async releases(){const e=Object.keys(await this.catalog(I));const A=[];for(const t of e){if(!/^\d+$/.test(t)||Number(t)<5)continue;const e=await this.catalog(`${I}&version=${t}&max=1000`);for(const t of Object.keys(e)){if(/^\d+\.\d+\.\d+$/.test(t)&&parseVersion(t).greaterThanOrEqual(parseVersion("5.3.0"))){A.push(t)}}}return A}async catalog(e){for(let A=0;A<3;A++){let t;try{t=await this.fetch(e,{signal:AbortSignal.timeout(2e4),headers:{"User-Agent":"hoverkraft-php-versions"}});if(!t.ok)throw new Error(`HTTP ${t.status}`)}catch(t){if(A===2){throw new Error(`Cannot retrieve the PHP release catalog: ${e}`,{cause:t})}await this.sleep(500*(A+1));continue}const r=await t.json();if(!r||typeof r!=="object"||Array.isArray(r)||Object.keys(r).length===0){throw new Error(`Invalid PHP release catalog: ${e}`)}return r}}}},9722:(e,A,t)=>{t.a(e,async(e,r)=>{try{t.d(A,{a:()=>runCli,e:()=>run});var s=t(6760);var n=t(3136);var o=t(3218);var i=t(2815);async function run({core:e=o,resolver:A=new i.I,workspace:t=process.env.GITHUB_WORKSPACE}={}){try{const r=await A.resolve(e.getInput("working-directory")||".",t);for(const[A,t]of Object.entries(r))e.setOutput(A,t)}catch(A){e.setFailed(A.message)}}async function runCli({args:e,resolver:A=new i.I,workspace:t=process.env.GITHUB_WORKSPACE,stdout:r=process.stdout}={}){if(e.length<1||e.length>2||e.length===2&&e[1]!=="--latest"){throw new Error("Usage: node dist/index.js PROJECT_DIRECTORY [--latest]")}const s=await A.resolve(e[0],t);r.write(`${e[1]==="--latest"?s["php-version"]:JSON.stringify(s)}\n`)}if(process.argv[1]&&(0,n.fileURLToPath)(import.meta.url)===(0,s.resolve)(process.argv[1])){if(process.argv.length===2){await run()}else{try{await runCli({args:process.argv.slice(2)})}catch(a){process.stderr.write(`${a.message}\n`);process.exitCode=1}}}r()}catch(c){r(c)}},1)}};var t={};function __nccwpck_require__(e){var r=t[e];if(r!==undefined){return r.exports}var s=t[e]={exports:{}};var n=true;try{A[e](s,s.exports,__nccwpck_require__);n=false}finally{if(n)delete t[e]}return s.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=decodeURIComponent(new URL(".",import.meta.url).pathname).slice(import.meta.url.match(/^file:\/\/\/\w:/)?1:0,-1)+"/";(()=>{var e=typeof Symbol==="function"?Symbol("webpack queues"):"__webpack_queues__";var A=typeof Symbol==="function"?Symbol("webpack exports"):"__webpack_exports__";var t=typeof Symbol==="function"?Symbol("webpack error"):"__webpack_error__";var resolveQueue=e=>{if(e&&e.d<1){e.d=1;e.forEach(e=>e.r--);e.forEach(e=>e.r--?e.r++:e())}};var wrapDeps=r=>r.map(r=>{if(r!==null&&typeof r==="object"){if(r[e])return r;if(r.then){var s=[];s.d=0;r.then(e=>{n[A]=e;resolveQueue(s)},e=>{n[t]=e;resolveQueue(s)});var n={};n[e]=e=>e(s);return n}}var o={};o[e]=e=>{};o[A]=r;return o});__nccwpck_require__.a=(r,s,n)=>{var o;n&&((o=[]).d=-1);var i=new Set;var a=r.exports;var c;var l;var g;var Q=new Promise((e,A)=>{g=A;l=e});Q[A]=a;Q[e]=e=>(o&&e(o),i.forEach(e),Q["catch"](e=>{}));r.exports=Q;s(r=>{c=wrapDeps(r);var s;var getResult=()=>c.map(e=>{if(e[t])throw e[t];return e[A]});var n=new Promise(A=>{s=()=>A(getResult);s.r=0;var fnQueue=e=>e!==o&&!i.has(e)&&(i.add(e),e&&!e.d&&(s.r++,e.push(s)));c.map(A=>A[e](fnQueue))});return s.r?n:getResult()},e=>(e?g(Q[t]=e):l(a),resolveQueue(o)));o&&o.d<0&&(o.d=0)}})();(()=>{var e=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;var A;__nccwpck_require__.t=function(t,r){if(r&1)t=this(t);if(r&8)return t;if(typeof t==="object"&&t){if(r&4&&t.__esModule)return t;if(r&16&&typeof t.then==="function")return t}var s=Object.create(null);__nccwpck_require__.r(s);var n={};A=A||[null,e({}),e([]),e(e)];for(var o=r&2&&t;typeof o=="object"&&!~A.indexOf(o);o=e(o)){Object.getOwnPropertyNames(o).forEach(e=>n[e]=()=>t[e])}n["default"]=()=>t;__nccwpck_require__.d(s,n);return s}})();(()=>{__nccwpck_require__.d=(e,A)=>{for(var t in A){if(__nccwpck_require__.o(A,t)&&!__nccwpck_require__.o(e,t)){Object.defineProperty(e,t,{enumerable:true,get:A[t]})}}}})();(()=>{__nccwpck_require__.o=(e,A)=>Object.prototype.hasOwnProperty.call(e,A)})();(()=>{__nccwpck_require__.r=e=>{if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(e,"__esModule",{value:true})}})();var r=__nccwpck_require__(9722);r=await r;var s=r.e;var n=r.a;export{s as run,n as runCli}; \ No newline at end of file diff --git a/actions/get-php-versions/dist/licenses.txt b/actions/get-php-versions/dist/licenses.txt new file mode 100644 index 0000000..ce0a056 --- /dev/null +++ b/actions/get-php-versions/dist/licenses.txt @@ -0,0 +1,134 @@ +@actions/core +MIT +The MIT License (MIT) + +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +@actions/exec +MIT +The MIT License (MIT) + +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +@actions/http-client +MIT +Actions Http Client for Node.js + +Copyright (c) GitHub, Inc. + +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@actions/io +MIT +The MIT License (MIT) + +Copyright 2019 GitHub + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +composer-semver +MIT +MIT License + +Copyright (c) 2026 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +tunnel +MIT +The MIT License (MIT) + +Copyright (c) 2012 Koichi Kobayashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +undici +MIT +MIT License + +Copyright (c) Matteo Collina and Undici contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/actions/get-php-versions/dist/package.json b/actions/get-php-versions/dist/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/actions/get-php-versions/dist/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/actions/get-php-versions/package-lock.json b/actions/get-php-versions/package-lock.json new file mode 100644 index 0000000..17dd29e --- /dev/null +++ b/actions/get-php-versions/package-lock.json @@ -0,0 +1,92 @@ +{ + "name": "get-php-versions", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "get-php-versions", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@actions/core": "3.0.1", + "composer-semver": "0.1.1" + }, + "devDependencies": { + "@vercel/ncc": "0.45.0" + }, + "engines": { + "node": ">=24.0.0" + } + }, + "node_modules/@actions/core": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-3.0.1.tgz", + "integrity": "sha512-a6d/Nwahm9fliVGRhdhofo40HjHQasUPusmc7vBfyky+7Z+P2A1J68zyFVaNcEclc/Se+eO595oAr5nwEIoIUA==", + "license": "MIT", + "dependencies": { + "@actions/exec": "^3.0.0", + "@actions/http-client": "^4.0.0" + } + }, + "node_modules/@actions/exec": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-3.0.0.tgz", + "integrity": "sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==", + "license": "MIT", + "dependencies": { + "@actions/io": "^3.0.2" + } + }, + "node_modules/@actions/http-client": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-4.0.1.tgz", + "integrity": "sha512-+Nvd1ImaOZBSoPbsUtEhv+1z99H12xzncCkz0a3RuehINE81FZSe2QTj3uvAPTcJX/SCzUQHQ0D1GrPMbrPitg==", + "license": "MIT", + "dependencies": { + "tunnel": "^0.0.6", + "undici": "^6.23.0" + } + }, + "node_modules/@actions/io": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-3.0.2.tgz", + "integrity": "sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==", + "license": "MIT" + }, + "node_modules/@vercel/ncc": { + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.45.0.tgz", + "integrity": "sha512-8zPi1yO2mHpoKTD+e+Bf0ZT3e+sWHSOyGapm9s7b5R0gxJi3CiFTqmeQiMEyu6ejrz2s09M8JkEoUaTWjBJPQQ==", + "dev": true, + "license": "MIT", + "bin": { + "ncc": "dist/ncc/cli.js" + } + }, + "node_modules/composer-semver": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/composer-semver/-/composer-semver-0.1.1.tgz", + "integrity": "sha512-BW/rkgYvqq3rrFokG7jy19HClyQy4hRful1jXKu/hajTwei34AJFN2w4wGAZAPgsLFCkXcNNcY0v6oiGSdeuyw==", + "license": "MIT" + }, + "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.29.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.29.1.tgz", + "integrity": "sha512-EvRlUt/QqAEvXdQeRMYUfwOQsfzpDztykrG2owGEE/rBOBoYv9uF39ZzsNDh4lTFHhTr2XOZjKkYgueD12ZmGA==", + "license": "MIT", + "engines": { + "node": ">=18.17" + } + } + } +} diff --git a/actions/get-php-versions/package.json b/actions/get-php-versions/package.json new file mode 100644 index 0000000..0752bf0 --- /dev/null +++ b/actions/get-php-versions/package.json @@ -0,0 +1,26 @@ +{ + "name": "get-php-versions", + "version": "1.0.0", + "private": true, + "description": "Discover stable PHP releases matching Composer constraints", + "license": "MIT", + "type": "module", + "engines": { + "node": ">=24.0.0" + }, + "scripts": { + "test": "node --test", + "pretest:ci": "node -e \"require('node:fs').mkdirSync('coverage', { recursive: true })\"", + "test:ci": "node --experimental-test-coverage --test-reporter=spec --test-reporter-destination=stdout --test-reporter=junit --test-reporter-destination=coverage/junit.xml --test-reporter=lcov --test-reporter-destination=coverage/lcov.info --test", + "build": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && ncc build src/index.js --out dist --target es2022 --no-cache --minify --license licenses.txt", + "check:dist": "npm run build && git diff --exit-code -- dist && test -z \"$(git ls-files --others --exclude-standard -- dist)\"", + "test:distribution": "node --test src/index.test.js" + }, + "dependencies": { + "@actions/core": "3.0.1", + "composer-semver": "0.1.1" + }, + "devDependencies": { + "@vercel/ncc": "0.45.0" + } +} diff --git a/actions/get-php-versions/src/ComposerConstraints.json b/actions/get-php-versions/src/ComposerConstraints.json new file mode 100644 index 0000000..19349e9 --- /dev/null +++ b/actions/get-php-versions/src/ComposerConstraints.json @@ -0,0 +1,247 @@ +{ + "versions": [ + "5.3.0", + "5.3.2", + "5.4.0", + "7.4.33", + "8.0.0", + "8.1.0", + "8.2.0", + "8.2.1", + "8.2.10", + "8.3.0", + "8.3.12", + "8.4.0", + "8.4.1", + "8.5.0", + "9.0.0" + ], + "cases": [ + { + "constraint": "^8.2", + "expected": ["8.2.10", "8.3.12", "8.4.1", "8.5.0"] + }, + { + "constraint": "~8.2", + "expected": ["8.2.10", "8.3.12", "8.4.1", "8.5.0"] + }, + { + "constraint": "~8.2.0", + "expected": ["8.2.10"] + }, + { + "constraint": ">=8.2.5 <8.3", + "expected": ["8.2.10"] + }, + { + "constraint": ">=8.2 <8.2.10", + "expected": ["8.2.1"] + }, + { + "constraint": "~8.2.0 || ~8.4.0", + "expected": ["8.2.10", "8.4.1"] + }, + { + "constraint": "8.2.* | 8.4.*", + "expected": ["8.2.10", "8.4.1"] + }, + { + "constraint": ">=8.2 <8.5 !=8.3.12", + "expected": ["8.2.10", "8.3.0", "8.4.1"] + }, + { + "constraint": "^7.4", + "expected": ["7.4.33"] + }, + { + "constraint": ">=8.5@dev", + "expected": ["8.5.0", "9.0.0"] + }, + { + "constraint": "8.3.0", + "expected": ["8.3.0"] + }, + { + "constraint": "8.2", + "expected": ["8.2.0"] + }, + { + "constraint": "8", + "expected": ["8.0.0"] + }, + { + "constraint": "8.*", + "expected": ["8.0.0", "8.1.0", "8.2.10", "8.3.12", "8.4.1", "8.5.0"] + }, + { + "constraint": "8.2.x", + "expected": ["8.2.10"] + }, + { + "constraint": "v8.2.1", + "expected": ["8.2.1"] + }, + { + "constraint": ">=8.2, <8.5", + "expected": ["8.2.10", "8.3.12", "8.4.1"] + }, + { + "constraint": "8.2 - 8.4", + "expected": ["8.2.10", "8.3.12", "8.4.1"] + }, + { + "constraint": "8.2.1 - 8.3.12", + "expected": ["8.2.10", "8.3.12"] + }, + { + "constraint": ">8.2", + "expected": ["8.2.10", "8.3.12", "8.4.1", "8.5.0", "9.0.0"] + }, + { + "constraint": "<=8.3", + "expected": [ + "5.3.2", + "5.4.0", + "7.4.33", + "8.0.0", + "8.1.0", + "8.2.10", + "8.3.0" + ] + }, + { + "constraint": "!=8.3.*", + "expected": null + }, + { + "constraint": "<>8.3", + "expected": [ + "5.3.2", + "5.4.0", + "7.4.33", + "8.0.0", + "8.1.0", + "8.2.10", + "8.3.12", + "8.4.1", + "8.5.0", + "9.0.0" + ] + }, + { + "constraint": "==8.3.0", + "expected": ["8.3.0"] + }, + { + "constraint": "*", + "expected": [ + "5.3.2", + "5.4.0", + "7.4.33", + "8.0.0", + "8.1.0", + "8.2.10", + "8.3.12", + "8.4.1", + "8.5.0", + "9.0.0" + ] + }, + { + "constraint": ">=8.2-stable", + "expected": ["8.2.10", "8.3.12", "8.4.1", "8.5.0", "9.0.0"] + }, + { + "constraint": "^8.2@stable", + "expected": ["8.2.10", "8.3.12", "8.4.1", "8.5.0"] + }, + { + "constraint": "^8.2@RC", + "expected": ["8.2.10", "8.3.12", "8.4.1", "8.5.0"] + }, + { + "constraint": ">=8.3.0RC1 <8.4", + "expected": ["8.3.12"] + }, + { + "constraint": "^8.2 || ^9", + "expected": ["8.2.10", "8.3.12", "8.4.1", "8.5.0", "9.0.0"] + }, + { + "constraint": "8.2.0.0", + "expected": ["8.2.0"] + }, + { + "constraint": "8.2.0 as 8.3.0", + "expected": ["8.2.0"] + }, + { + "constraint": "^5.3.2", + "expected": ["5.3.2", "5.4.0"] + }, + { + "constraint": "~5.3", + "expected": ["5.3.2", "5.4.0"] + }, + { + "constraint": ">= 8.2 < 8.4", + "expected": ["8.2.10", "8.3.12"] + }, + { + "constraint": "8.2.*@dev", + "expected": ["8.2.10"] + }, + { + "constraint": "^8.2 || ^8.4, !=8.4.1", + "expected": ["8.2.10", "8.3.12", "8.4.1", "8.5.0"] + }, + { + "constraint": "garbage", + "expected": null + }, + { + "constraint": "8.2 ||", + "expected": null + }, + { + "constraint": "|| 8.2", + "expected": null + }, + { + "constraint": "8.2,,8.3", + "expected": null + }, + { + "constraint": "8.2 foo", + "expected": null + }, + { + "constraint": ">", + "expected": null + }, + { + "constraint": "=>8.2", + "expected": null + }, + { + "constraint": "!8.2", + "expected": null + }, + { + "constraint": "8.2.1.2.3", + "expected": null + }, + { + "constraint": ">=8.2 <", + "expected": null + }, + { + "constraint": "8.2 && 8.3", + "expected": null + }, + { + "constraint": "(>=8.2 <8.3) || ^8.4", + "expected": null + } + ] +} diff --git a/actions/get-php-versions/src/PhpVersions.js b/actions/get-php-versions/src/PhpVersions.js new file mode 100644 index 0000000..aaae716 --- /dev/null +++ b/actions/get-php-versions/src/PhpVersions.js @@ -0,0 +1,112 @@ +import { readFile, realpath, stat } from "node:fs/promises"; +import { isAbsolute, join, relative, resolve, sep } from "node:path"; +import { setTimeout } from "node:timers/promises"; +import { parseConstraint, parseVersion } from "composer-semver"; + +const RELEASES_URL = "https://www.php.net/releases/index.php?json"; + +export class PhpVersions { + constructor({ fetch = globalThis.fetch, sleep = setTimeout } = {}) { + this.fetch = fetch; + this.sleep = sleep; + } + + async resolve(directory, workspace = process.env.GITHUB_WORKSPACE) { + const project = await this.projectDirectory(directory, workspace); + const manifest = JSON.parse( + await readFile(join(project, "composer.json"), "utf8"), + ); + const constraint = manifest?.require?.php; + if (typeof constraint !== "string" || constraint.trim() === "") { + throw new Error( + "Declare require.php in composer.json or select PHP explicitly.", + ); + } + // Validate before fetching the catalog. Do not approximate Composer ranges. + // FIXME: Upgrade to a stable release containing shyim/composer-semver-ts#1. + // The Composer contract tests must pass before this migration can be merged. + const parsed = parseConstraint(constraint); + const releases = await this.releases(); + const matches = releases + .filter((version) => parsed.check(parseVersion(version))) + .sort((left, right) => parseVersion(left).compare(parseVersion(right))); + const minors = new Map(); + for (const version of matches) { + minors.set(version.slice(0, version.lastIndexOf(".")), version); + } + const versions = [...minors.values()]; + if (versions.length === 0) { + throw new Error( + `No stable PHP release matches require.php: ${constraint}`, + ); + } + return { "php-versions": versions, "php-version": versions.at(-1) }; + } + + async projectDirectory(directory, workspace) { + const project = await realpath( + resolve(workspace || process.cwd(), directory), + ); + if (!(await stat(project)).isDirectory()) { + throw new Error(`Project directory does not exist: ${directory}`); + } + if (workspace) { + const path = relative(await realpath(workspace), project); + if (path === ".." || path.startsWith(`..${sep}`) || isAbsolute(path)) { + throw new Error("Project directory must be inside GITHUB_WORKSPACE."); + } + } + return project; + } + + async releases() { + const majors = Object.keys(await this.catalog(RELEASES_URL)); + const releases = []; + for (const major of majors) { + if (!/^\d+$/.test(major) || Number(major) < 5) continue; + const catalog = await this.catalog( + `${RELEASES_URL}&version=${major}&max=1000`, + ); + for (const version of Object.keys(catalog)) { + if ( + /^\d+\.\d+\.\d+$/.test(version) && + parseVersion(version).greaterThanOrEqual(parseVersion("5.3.0")) + ) { + releases.push(version); + } + } + } + return releases; + } + + async catalog(url) { + for (let attempt = 0; attempt < 3; attempt++) { + let response; + try { + response = await this.fetch(url, { + signal: AbortSignal.timeout(20_000), + headers: { "User-Agent": "hoverkraft-php-versions" }, + }); + if (!response.ok) throw new Error(`HTTP ${response.status}`); + } catch (error) { + if (attempt === 2) { + throw new Error(`Cannot retrieve the PHP release catalog: ${url}`, { + cause: error, + }); + } + await this.sleep(500 * (attempt + 1)); + continue; + } + const data = await response.json(); + if ( + !data || + typeof data !== "object" || + Array.isArray(data) || + Object.keys(data).length === 0 + ) { + throw new Error(`Invalid PHP release catalog: ${url}`); + } + return data; + } + } +} diff --git a/actions/get-php-versions/src/PhpVersions.php b/actions/get-php-versions/src/PhpVersions.php deleted file mode 100644 index e7d9c0c..0000000 --- a/actions/get-php-versions/src/PhpVersions.php +++ /dev/null @@ -1,80 +0,0 @@ -fetch = $fetch ?? self::fetch(...); - } - - /** @return array{php-versions: list, php-version: string} */ - public function resolve(string $directory): array - { - $file = rtrim($directory, '/\\') . '/composer.json'; - if (!is_file($file)) { - throw new RuntimeException('Missing composer.json in ' . $directory); - } - $manifest = json_decode(file_get_contents($file), true, 512, JSON_THROW_ON_ERROR); - $constraint = $manifest['require']['php'] ?? null; - if (!is_string($constraint) || trim($constraint) === '') { - throw new UnexpectedValueException('Declare require.php in composer.json or select PHP explicitly.'); - } - // Validate before requesting the release catalog, using Composer's own parser. - (new VersionParser())->parseConstraints($constraint); - $releases = []; - foreach (array_keys(($this->fetch)(self::RELEASES_URL)) as $major) { - if (!ctype_digit((string) $major) || (int) $major < 5) { - continue; - } - $catalog = ($this->fetch)(self::RELEASES_URL . '&version=' . $major . '&max=1000'); - foreach (array_keys($catalog) as $version) { - if (preg_match('/^\d+\.\d+\.\d+$/D', (string) $version) && version_compare($version, '5.3.0', '>=')) { - $releases[] = $version; - } - } - } - $matches = Semver::sort(Semver::satisfiedBy($releases, $constraint)); - $versions = []; - foreach ($matches as $version) { - $minor = substr($version, 0, strrpos($version, '.')); - $versions[$minor] = $version; - } - if ($versions === []) { - throw new RuntimeException('No stable PHP release matches require.php: ' . $constraint); - } - return ['php-versions' => array_values($versions), 'php-version' => end($versions)]; - } - - private static function fetch(string $url): array - { - $context = stream_context_create(['http' => ['timeout' => 20, 'user_agent' => 'hoverkraft-php-versions']]); - for ($attempt = 0; $attempt < 3; $attempt++) { - $body = @file_get_contents($url, false, $context); - if ($body !== false) { - $data = json_decode($body, true, 512, JSON_THROW_ON_ERROR); - if (!is_array($data) || $data === []) { - throw new UnexpectedValueException('Invalid PHP release catalog: ' . $url); - } - return $data; - } - if ($attempt < 2) { - usleep(500000 * ($attempt + 1)); - } - } - throw new RuntimeException('Cannot retrieve the PHP release catalog: ' . $url); - } -} diff --git a/actions/get-php-versions/src/PhpVersions.test.js b/actions/get-php-versions/src/PhpVersions.test.js new file mode 100644 index 0000000..204feb8 --- /dev/null +++ b/actions/get-php-versions/src/PhpVersions.test.js @@ -0,0 +1,179 @@ +import assert from "node:assert/strict"; +import { mkdir, mkdtemp, rm, symlink, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { afterEach, beforeEach, it } from "node:test"; +import contracts from "./ComposerConstraints.json" with { type: "json" }; +import { PhpVersions } from "./PhpVersions.js"; + +let workspace, project; +beforeEach(async () => { + workspace = await mkdtemp(join(tmpdir(), "php-versions-")); + project = join(workspace, "project"); + await mkdir(project); + await writeFile( + join(project, "composer.json"), + JSON.stringify({ require: { php: "^8.2" } }), + ); +}); +afterEach(async () => rm(workspace, { recursive: true, force: true })); + +function catalog(versions = contracts.versions) { + return async (url) => { + const major = new URL(url).searchParams.get("version"); + const keys = major + ? versions.filter((version) => version.startsWith(`${major}.`)) + : ["4", "5", "7", "8", "9", "metadata"]; + return Response.json(Object.fromEntries(keys.map((key) => [key, {}]))); + }; +} + +// Expected results were checked against Composer\Semver 3.6.0. Synthetic release +// catalogs keep this contract independent of newly published PHP versions. +for (const { constraint, expected } of contracts.cases) { + it(`honors the Composer constraint: ${constraint}`, async () => { + await writeFile( + join(project, "composer.json"), + JSON.stringify({ require: { php: constraint } }), + ); + let requests = 0; + const resolver = new PhpVersions({ + fetch: async (url) => { + requests++; + return catalog()(url); + }, + }); + if (expected === null) { + await assert.rejects(resolver.resolve(project, workspace)); + assert.equal( + requests, + 0, + "Reject invalid constraints before network access", + ); + } else { + assert.deepEqual(await resolver.resolve(project, workspace), { + "php-versions": expected, + "php-version": expected.at(-1), + }); + } + }); +} + +it("includes a new stable minor and excludes prereleases and PHP before 5.3", async () => { + await writeFile(join(project, "composer.json"), '{"require":{"php":"*"}}'); + const versions = [ + "5.2.17", + "5.3.0", + "7.4.33", + "8.5.1", + "8.6.0", + "8.7.0RC1", + "9.0.0-dev", + ]; + const resolver = new PhpVersions({ fetch: catalog(versions) }); + assert.deepEqual( + (await resolver.resolve(project, workspace))["php-versions"], + ["5.3.0", "7.4.33", "8.5.1", "8.6.0"], + ); +}); + +for (const manifest of [ + "{}", + "null", + '{"require":{"php":82}}', + '{"require":{"php":" "}}', + "{", +]) { + it(`rejects an invalid manifest without network access: ${manifest}`, async () => { + await writeFile(join(project, "composer.json"), manifest); + const fetch = () => assert.fail("Must validate the manifest first"); + await assert.rejects( + new PhpVersions({ fetch }).resolve(project, workspace), + ); + }); +} + +it("rejects missing manifests", async () => { + await assert.rejects( + new PhpVersions().resolve(workspace, workspace), + /composer.json/, + ); +}); + +it("rejects a missing project or a file used as a project directory", async () => { + const resolver = new PhpVersions(); + await assert.rejects(resolver.resolve("missing", workspace), /ENOENT/); + await assert.rejects( + resolver.resolve("project/composer.json", workspace), + /Project directory/, + ); +}); + +it("contains absolute, relative and symlink paths within the workspace", async () => { + const resolver = new PhpVersions({ fetch: catalog() }); + await symlink(project, join(workspace, "inside"), "junction"); + const expected = await resolver.resolve(project, workspace); + assert.deepEqual(await resolver.resolve("project", workspace), expected); + assert.deepEqual(await resolver.resolve("inside", workspace), expected); + await symlink(tmpdir(), join(workspace, "outside"), "junction"); + await assert.rejects( + resolver.resolve("outside", workspace), + /inside GITHUB_WORKSPACE/, + ); + await assert.rejects( + resolver.resolve("..", workspace), + /inside GITHUB_WORKSPACE/, + ); +}); + +it("fails when no stable release matches", async () => { + await writeFile(join(project, "composer.json"), '{"require":{"php":"^10"}}'); + await assert.rejects( + new PhpVersions({ fetch: catalog() }).resolve(project, workspace), + /No stable PHP release matches/, + ); +}); + +it("retries transient HTTP failures with bounded backoff and timeout", async () => { + let calls = 0; + const delays = []; + const resolver = new PhpVersions({ + fetch: async (url, options) => { + assert.ok(options.signal instanceof AbortSignal); + assert.equal(options.headers["User-Agent"], "hoverkraft-php-versions"); + calls++; + if (calls === 1) throw new Error("connection reset"); + if (calls === 2) return new Response("unavailable", { status: 503 }); + return catalog()(url); + }, + sleep: async (delay) => delays.push(delay), + }); + assert.equal( + (await resolver.resolve(project, workspace))["php-version"], + "8.5.0", + ); + assert.deepEqual(delays, [500, 1000]); +}); + +it("stops after three failed requests", async () => { + let calls = 0; + const resolver = new PhpVersions({ + fetch: async () => { + calls++; + throw new Error("offline"); + }, + sleep: async () => {}, + }); + await assert.rejects( + resolver.resolve(project, workspace), + /Cannot retrieve the PHP release catalog/, + ); + assert.equal(calls, 3); +}); + +for (const body of ["null", "[]", "{}", '"invalid"', "{"]) { + it(`rejects a malformed release catalog: ${body}`, async () => { + const resolver = new PhpVersions({ fetch: async () => new Response(body) }); + await assert.rejects(resolver.resolve(project, workspace)); + }); +} diff --git a/actions/get-php-versions/src/PhpVersionsTest.php b/actions/get-php-versions/src/PhpVersionsTest.php deleted file mode 100644 index df767d8..0000000 --- a/actions/get-php-versions/src/PhpVersionsTest.php +++ /dev/null @@ -1,123 +0,0 @@ -directory = sys_get_temp_dir() . '/php-versions-' . bin2hex(random_bytes(8)); - mkdir($this->directory); - $this->resolver = new PhpVersions(static function (string $url): array { - if (!str_contains($url, '&version=')) { - return ['8' => [], '7' => [], '4' => []]; - } - $versions = str_contains($url, 'version=7') ? ['7.4.33'] : [ - '8.2.1', '8.2.10', '8.3.0', '8.3.12', '8.4.1', '8.5.0', '8.6.0RC1', '9.0.0-dev', - ]; - return array_fill_keys($versions, []); - }); - } - - protected function tearDown(): void - { - if (is_file($this->directory . '/composer.json')) { - unlink($this->directory . '/composer.json'); - } - rmdir($this->directory); - } - - public static function constraints(): array - { - return [ - 'caret' => ['^8.2', ['8.2.10', '8.3.12', '8.4.1', '8.5.0']], - 'Composer tilde allows later minors' => ['~8.2', ['8.2.10', '8.3.12', '8.4.1', '8.5.0']], - 'tilde with patch' => ['~8.2.0', ['8.2.10']], - 'patch minimum' => ['>=8.2.5 <8.3', ['8.2.10']], - 'patch maximum' => ['>=8.2 <8.2.10', ['8.2.1']], - 'union skips unsupported minor' => ['~8.2.0 || ~8.4.0', ['8.2.10', '8.4.1']], - 'single pipe' => ['8.2.* | 8.4.*', ['8.2.10', '8.4.1']], - 'excluded patch' => ['>=8.2 <8.5 !=8.3.12', ['8.2.10', '8.3.0', '8.4.1']], - 'end of life remains explicit support' => ['^7.4', ['7.4.33']], - 'prereleases stay excluded' => ['>=8.5@dev', ['8.5.0']], - 'exact patch' => ['8.3.0', ['8.3.0']], - ]; - } - - #[DataProvider('constraints')] - public function testComposerConstraints(string $constraint, array $expected): void - { - file_put_contents($this->directory . '/composer.json', json_encode(['require' => ['php' => $constraint]])); - self::assertSame(['php-versions' => $expected, 'php-version' => end($expected)], $this->resolver->resolve($this->directory)); - } - - public function testNewStableMinorAppearsWithoutEditingTheProject(): void - { - file_put_contents($this->directory . '/composer.json', '{"require":{"php":"^8.2"}}'); - $resolver = new PhpVersions(static fn (string $url): array => str_contains($url, '&version=') - ? ['8.5.1' => [], '8.6.0' => [], '8.7.0RC1' => []] - : ['8' => []]); - self::assertSame(['8.5.1', '8.6.0'], $resolver->resolve($this->directory)['php-versions']); - } - - public function testMissingManifestFails(): void - { - $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('Missing composer.json'); - $this->resolver->resolve($this->directory); - } - - public function testMissingConstraintFails(): void - { - file_put_contents($this->directory . '/composer.json', '{}'); - $this->expectException(UnexpectedValueException::class); - $this->expectExceptionMessage('require.php'); - $this->resolver->resolve($this->directory); - } - - public function testMalformedManifestFails(): void - { - file_put_contents($this->directory . '/composer.json', '{'); - $this->expectException(JsonException::class); - $this->resolver->resolve($this->directory); - } - - public function testInvalidConstraintFailsBeforeNetworkAccess(): void - { - file_put_contents($this->directory . '/composer.json', '{"require":{"php":"garbage"}}'); - $resolver = new PhpVersions(static function (): never { - self::fail('Invalid input must fail before accessing the network.'); - }); - $this->expectException(UnexpectedValueException::class); - $resolver->resolve($this->directory); - } - - public function testNoMatchFailsInsteadOfUsingLatest(): void - { - file_put_contents($this->directory . '/composer.json', '{"require":{"php":"^9.0"}}'); - $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('No stable PHP release matches'); - $this->resolver->resolve($this->directory); - } - - public function testCatalogFailureIsNotSilentlyIgnored(): void - { - file_put_contents($this->directory . '/composer.json', '{"require":{"php":"^8.2"}}'); - $resolver = new PhpVersions(static function (): never { - throw new RuntimeException('Catalog unavailable'); - }); - $this->expectExceptionMessage('Catalog unavailable'); - $resolver->resolve($this->directory); - } -} diff --git a/actions/get-php-versions/src/cli.php b/actions/get-php-versions/src/cli.php deleted file mode 100644 index 33ab6ea..0000000 --- a/actions/get-php-versions/src/cli.php +++ /dev/null @@ -1,29 +0,0 @@ - 3 || ($argc === 3 && $argv[2] !== '--latest')) { - throw new InvalidArgumentException('Usage: php src/cli.php PROJECT_DIRECTORY [--latest]'); - } - $directory = realpath($argv[1]); - if ($directory === false || !is_dir($directory)) { - throw new InvalidArgumentException('Project directory does not exist: ' . $argv[1]); - } - $workspace = getenv('GITHUB_WORKSPACE'); - if ($workspace !== false && $workspace !== '') { - $workspace = realpath($workspace); - if ($workspace === false || ($directory !== $workspace && !str_starts_with($directory, $workspace . '/'))) { - throw new InvalidArgumentException('Project directory must be inside GITHUB_WORKSPACE.'); - } - } - $versions = (new PhpVersions())->resolve($directory); - echo (($argv[2] ?? '') === '--latest' ? $versions['php-version'] : json_encode($versions, JSON_THROW_ON_ERROR)) . PHP_EOL; -} catch (Throwable $error) { - fwrite(STDERR, $error->getMessage() . PHP_EOL); - exit(1); -} diff --git a/actions/get-php-versions/src/index.js b/actions/get-php-versions/src/index.js new file mode 100644 index 0000000..422471b --- /dev/null +++ b/actions/get-php-versions/src/index.js @@ -0,0 +1,56 @@ +import { resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import * as actionsCore from "@actions/core"; +import { PhpVersions } from "./PhpVersions.js"; + +export async function run({ + core = actionsCore, + resolver = new PhpVersions(), + workspace = process.env.GITHUB_WORKSPACE, +} = {}) { + try { + const versions = await resolver.resolve( + core.getInput("working-directory") || ".", + workspace, + ); + for (const [name, value] of Object.entries(versions)) + core.setOutput(name, value); + } catch (error) { + core.setFailed(error.message); + } +} + +export async function runCli({ + args, + resolver = new PhpVersions(), + workspace = process.env.GITHUB_WORKSPACE, + stdout = process.stdout, +} = {}) { + if ( + args.length < 1 || + args.length > 2 || + (args.length === 2 && args[1] !== "--latest") + ) { + throw new Error("Usage: node dist/index.js PROJECT_DIRECTORY [--latest]"); + } + const versions = await resolver.resolve(args[0], workspace); + stdout.write( + `${args[1] === "--latest" ? versions["php-version"] : JSON.stringify(versions)}\n`, + ); +} + +if ( + process.argv[1] && + fileURLToPath(import.meta.url) === resolve(process.argv[1]) +) { + if (process.argv.length === 2) { + await run(); + } else { + try { + await runCli({ args: process.argv.slice(2) }); + } catch (error) { + process.stderr.write(`${error.message}\n`); + process.exitCode = 1; + } + } +} diff --git a/actions/get-php-versions/src/index.test.js b/actions/get-php-versions/src/index.test.js new file mode 100644 index 0000000..111bc88 --- /dev/null +++ b/actions/get-php-versions/src/index.test.js @@ -0,0 +1,113 @@ +import assert from "node:assert/strict"; +import { spawnSync } from "node:child_process"; +import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { afterEach, beforeEach, it } from "node:test"; +import { fileURLToPath, pathToFileURL } from "node:url"; + +const entrypoint = process.env.ACTION_ENTRYPOINT + ? pathToFileURL(process.env.ACTION_ENTRYPOINT) + : new URL("./index.js", import.meta.url); +const { run, runCli } = await import(entrypoint); +let workspace; +beforeEach(async () => { + workspace = await mkdtemp(join(tmpdir(), "php-action-")); + await writeFile( + join(workspace, "composer.json"), + '{"require":{"php":"~8.2.0"}}', + ); +}); +afterEach(async () => rm(workspace, { recursive: true, force: true })); + +it("publishes both outputs from the real resolver using the default directory", async (t) => { + t.mock.method(globalThis, "fetch", async (url) => + Response.json( + url.includes("&version=") + ? { "8.2.1": {}, "8.2.10": {}, "8.3.0": {} } + : { 8: {} }, + ), + ); + const outputs = {}; + await run({ + workspace, + core: { + getInput: (name) => { + assert.equal(name, "working-directory"); + return ""; + }, + setOutput: (name, value) => { + outputs[name] = value; + }, + setFailed: assert.fail, + }, + }); + assert.deepEqual(outputs, { + "php-versions": ["8.2.10"], + "php-version": "8.2.10", + }); +}); + +it("fails with no outputs when the input is outside the workspace", async () => { + const failures = []; + await run({ + workspace, + core: { + getInput: () => "..", + setOutput: assert.fail, + setFailed: (message) => failures.push(message), + }, + }); + assert.equal(failures.length, 1); + assert.match(failures[0], /inside GITHUB_WORKSPACE/); +}); + +it("preserves the local JSON and highest-version CLI interfaces", async (t) => { + t.mock.method(globalThis, "fetch", async (url) => + Response.json(url.includes("&version=") ? { "8.2.10": {} } : { 8: {} }), + ); + const output = []; + const stdout = { write: (value) => output.push(value) }; + await runCli({ args: [workspace], workspace, stdout }); + await runCli({ args: [workspace, "--latest"], workspace, stdout }); + assert.deepEqual(JSON.parse(output[0]), { + "php-versions": ["8.2.10"], + "php-version": "8.2.10", + }); + assert.equal(output[1], "8.2.10\n"); + for (const args of [ + [], + [workspace, "--unknown"], + [workspace, "--latest", "extra"], + ]) { + await assert.rejects(runCli({ args, workspace, stdout }), /Usage:/); + } +}); + +it("executes the native action entry point and reports failures through core", async () => { + const output = join(workspace, "outputs"); + await writeFile(output, ""); + const result = spawnSync(process.execPath, [fileURLToPath(entrypoint)], { + env: { + ...process.env, + GITHUB_WORKSPACE: workspace, + GITHUB_OUTPUT: output, + "INPUT_WORKING-DIRECTORY": "..", + }, + encoding: "utf8", + }); + assert.equal(result.status, 1, result.stderr); + assert.match(result.stdout, /::error::.*inside GITHUB_WORKSPACE/); + assert.equal(await readFile(output, "utf8"), ""); +}); + +it("executes the CLI entry point and rejects invalid arguments", () => { + const result = spawnSync( + process.execPath, + [fileURLToPath(entrypoint), workspace, "--unknown"], + { encoding: "utf8" }, + ); + assert.equal(result.status, 1); + assert.match(result.stderr, /Usage:/); + assert.equal(result.stdout, ""); +}); diff --git a/biome.json b/biome.json index 825a8d6..84cc478 100644 --- a/biome.json +++ b/biome.json @@ -5,7 +5,11 @@ "useIgnoreFile": true }, "files": { - "includes": ["**", "!!.devcontainer/devcontainer-lock.json"] + "includes": [ + "**", + "!!.devcontainer/devcontainer-lock.json", + "!actions/**/dist" + ] }, "formatter": { "indentStyle": "space" diff --git a/docs/adr/0001-php-package-workflows.md b/docs/adr/0001-php-package-workflows.md index bf42a04..11f78f8 100644 --- a/docs/adr/0001-php-package-workflows.md +++ b/docs/adr/0001-php-package-workflows.md @@ -110,6 +110,24 @@ updates effective for both CI and local tooling. Missing or conflicting pins fai before fetching the resolver. This couples automatic local selection to a checkout with consistent workflow pins; an explicit PHP version bypasses discovery. +### Native Node.js resolver follow-up + +The 2026-11-11 follow-up proposes replacing the action's PHP bridge with GitHub's +native Node.js runtime. Keep the same inputs, outputs, constraint semantics and +path containment. Bundle the standalone action's dependencies; local Docker builds +use that exact bundle without installing Composer or npm dependencies at runtime. +Use the shared Node.js CI and action-distribution workflows for tests, coverage, +bundle verification and dependency update automation. + +The PHP implementation remains the accepted implementation until a stable +`composer-semver` release contains the corrections proposed in +[composer-semver-ts #1](https://github.com/shyim/composer-semver-ts/pull/1). +The published 0.1.1 parser differed from Composer 3.6.0 on eight of 49 tested +constraints, including wildcard exclusions, hyphen bounds and malformed syntax. +The draft migration keeps those contract checks blocking and adds no local parser +patches. Update the npm manifest, lockfile and bundle to the fixed stable release, +then pass the full contract and integration checks before accepting this follow-up. + ## Alternatives Copying npm's version-update step would introduce source churn that Composer does diff --git a/docs/development/README.md b/docs/development/README.md index e89022f..969eaa1 100644 --- a/docs/development/README.md +++ b/docs/development/README.md @@ -2,10 +2,10 @@ Actions are standalone. Prefer `actions/github-script` and its supplied `core`, `exec`, `io`, and `glob` helpers. Composer metadata validation needs no dependency -installation. The standalone version resolver uses Composer's constraint parser and -PHP.net release metadata; its Dockerfile installs only its own locked dependencies. -The action builds and runs that image with the runner's UID/GID and a read-only -checkout mount. `github-script` publishes the resolver's JSON as action outputs. +installation. The standalone version resolver uses `composer-semver` and PHP.net +release metadata. Its native Node.js entry point bundles its locked dependencies +and uses `@actions/core` for inputs, outputs and failures. The local Docker image +contains the same bundle and defaults to an unprivileged user. Release planning and creation use `ci-github-publish`; the release workflow validates Composer metadata and tag identity before publication. @@ -30,17 +30,25 @@ actual preparation and publication scripts: event restrictions, no-change status prepared tag handoff, retry context and Composer metadata. Shared planner and verifier tests in `ci-github-publish` cover force and tag recovery. They never create a tag or release. -With PHP 8.4.1 or newer, Composer and Git installed, run: +With PHP 8.4.1 or newer, Composer, Node.js 24 or newer, npm and Git installed, run: ```sh make setup make test ``` -`setup` installs dependencies for tracked Composer fixtures with scripts and plugins -disabled. `test` runs fixture lint and the Composer projects that declare a test script. `deps-update` refreshes their +`setup` installs dependencies for tracked Composer and npm projects with installation hooks +disabled. `test` runs fixture lint and project tests. `build` rebuilds the committed +JavaScript action bundles. `deps-update` refreshes dependency lockfiles, with `deps-update-interactive` for selecting updates; `deps-audit` reports dependency advisories without changing files. -`make ci` installs, audits, tests and lints; it does not automatically fix files. +`make ci` installs, audits, tests, verifies distributions and lints. Distribution +verification rebuilds the bundle and fails if the committed output differs. + +JavaScript action tests follow the `parse-ci-reports` pattern: a standalone package, +tests beside source, shared Node.js CI, JUnit and LCOV artifacts, and one combined +CI report comment. The shared distribution workflow discovers action packages and +tests isolated bundles without adjacent dependencies. Dependency update PRs rebuild +bundles through the shared read-only builder and trusted writer workflows. Run `make lint` for the repository's Docker lint checks. PHP analysis runs in the Composer integration workflow, using its declared runtime and tools; the generic @@ -56,7 +64,7 @@ through `ci-github-publish/.github/workflows/release-actions.yml`. Update metada then regenerate using that tool. The CI and release workflows include their authored guides in leading comments; regeneration writes them to the corresponding `.github/workflows/*.md` files. -Dependabot updates GitHub Actions, action Composer manifests and lockfiles, Composer +Dependabot updates GitHub Actions, action npm and Composer manifests and lockfiles, Composer fixtures, containers, and development containers. Recursive action directory patterns cover standalone action dependencies without a per-action list. Each ecosystem explicitly uses the `build` commit prefix with a dependency scope. The root `.commitlintrc.json` configures the same rules for